From d3048fc04d3ddeaf9bb2209b667bb1cb9fec82b0 Mon Sep 17 00:00:00 2001 From: Laurent Bigonville Date: Sat, 2 May 2020 17:23:52 +0100 Subject: Import gnome-maps_3.36.2-1.debian.tar.xz [dgit import tarball gnome-maps 3.36.2-1 gnome-maps_3.36.2-1.debian.tar.xz] --- changelog | 453 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ control | 62 ++++++++ control.in | 58 +++++++ copyright | 84 ++++++++++ docs | 2 + gbp.conf | 17 ++ lintian-overrides | 2 + patches/series | 0 rules | 15 ++ source/format | 1 + watch | 3 + 11 files changed, 697 insertions(+) create mode 100644 changelog create mode 100644 control create mode 100644 control.in create mode 100644 copyright create mode 100644 docs create mode 100644 gbp.conf create mode 100644 lintian-overrides create mode 100644 patches/series create mode 100755 rules create mode 100644 source/format create mode 100644 watch diff --git a/changelog b/changelog new file mode 100644 index 00000000..c89dcb02 --- /dev/null +++ b/changelog @@ -0,0 +1,453 @@ +gnome-maps (3.36.2-1) unstable; urgency=medium + + * New upstream release + + -- Laurent Bigonville Sat, 02 May 2020 18:23:52 +0200 + +gnome-maps (3.36.1-1) unstable; urgency=medium + + * New upstream release + + -- Jeremy Bicha Sat, 28 Mar 2020 22:22:35 -0400 + +gnome-maps (3.36.0-1) unstable; urgency=medium + + * New upstream release + + -- Laurent Bigonville Thu, 12 Mar 2020 19:23:43 +0100 + +gnome-maps (3.35.90-1) unstable; urgency=medium + + * New upstream beta release + * Bump Standards-Version to 4.5.0 + + -- Jeremy Bicha Sun, 02 Feb 2020 10:05:30 -0500 + +gnome-maps (3.34.1-1) unstable; urgency=medium + + * New upstream release + + -- Jeremy Bicha Wed, 09 Oct 2019 20:05:47 -0400 + +gnome-maps (3.34.0-1) unstable; urgency=medium + + * New upstream release + + -- Sebastien Bacher Wed, 11 Sep 2019 10:26:54 +0200 + +gnome-maps (3.33.91-1) experimental; urgency=medium + + * debian/watch: Find unstable versions + * New upstream release + - Fix bug going back to already selected place from the search result list + - Start immediatly at the last viewed location when app was closed last + - Remember the map type (street or aerial) from when the app was closed + last + - Handle opening OpenStreetMap URLs pointing to either an object or bare + coordinates by pasting it into the search entry and also as a program + argument, in the same manner as with geo: URIs + - Auto-complete searches ("search-as-you-type") using GraphHopper geocoder + / Photon + - Redesigned Send to-dialog with ability to copy and send locations in + e-mails and better integration with Weather and Clocks + - Show clockwise roundabout icons for turn-by-turn routing in left-hand + traffic countries and territories + - Update appdata screenshots with tile style + - Fix a crash when there's many contacts with addresses in an Evolution + address book + - Accept additional formats when entering raw coordinates in the search + entry (decimal lat/lon degrees format with literal ° symbol, and + degrees, minutes, second format) + - Stop using GtkOffscreenWindow (prerequisite for eventually porting to + GTK 4) + - Fix printing dialog not closing in some circumstances + - Add some missing appstream metadata + - Add tests validating appdata and desktop files + - Remove some unnessesary instructions in turn-by-turn route searches + + -- Iain Lane Wed, 21 Aug 2019 11:24:13 +0100 + +gnome-maps (3.32.1-1) experimental; urgency=medium + + * New upstream release + + -- Sebastien Bacher Thu, 11 Apr 2019 15:43:09 +0200 + +gnome-maps (3.32.0-1) experimental; urgency=medium + + * New upstream release + + -- Jeremy Bicha Fri, 15 Mar 2019 05:48:37 -0400 + +gnome-maps (3.31.90-1) experimental; urgency=medium + + * New upstream development release + * Build-Depend on debhelper-compat 12 and drop debian/compat + * Build-Depend on dh-sequence-gir and dh-sequence-gnome + * Build-Depend on libxml2-utils for xmllint + * Bump Standards-Version to 4.3.0 + + -- Jeremy Bicha Thu, 07 Feb 2019 07:48:45 -0500 + +gnome-maps (3.30.3-1) unstable; urgency=medium + + * New upstream release + * Add -Wl,-O1 to LDFLAGS + + -- Jeremy Bicha Tue, 11 Dec 2018 17:58:41 -0500 + +gnome-maps (3.30.2.1-1) unstable; urgency=medium + + * New upstream release + + -- Jeremy Bicha Fri, 16 Nov 2018 15:55:13 -0500 + +gnome-maps (3.30.1-1) unstable; urgency=medium + + * New upstream release + + -- Tim Lunn Fri, 28 Sep 2018 10:42:10 +1000 + +gnome-maps (3.30.0-1) unstable; urgency=medium + + * New upstream release + * Bump Standards-Version to 4.2.1 + * Add X-Ubuntu-Use-Langpack to opt in to Ubuntu language pack handling + (LP: #1779574) + * Release to unstable + + -- Jeremy Bicha Tue, 04 Sep 2018 21:12:50 -0400 + +gnome-maps (3.29.91-1) experimental; urgency=medium + + * Team upload + * d/watch: Watch for odd-numbered (development) versions + * New upstream release + * d/copyright: Update + * Update versioned build-dependencies + * Apply build-dependency versions to runtime dependencies too + * Normalize (build-)dependencies with wrap-and-sort -ab + * Build with meson + * Set Rules-Requires-Root to no + * Remove trailing whitespace from previous changelog entries + * Bump Standards-Version to 4.2.0 (no changes required) + + -- Simon McVittie Tue, 14 Aug 2018 09:10:52 +0100 + +gnome-maps (3.28.2-1) unstable; urgency=medium + + * New upstream release + + -- Tim Lunn Tue, 08 May 2018 21:08:00 +1000 + +gnome-maps (3.28.1-1) unstable; urgency=medium + + * New upstream release + * Bump Standards-Version to 4.1.4 + + -- Jeremy Bicha Tue, 10 Apr 2018 13:43:47 -0400 + +gnome-maps (3.28.0-1) unstable; urgency=medium + + * New upstream release + + -- Jeremy Bicha Wed, 14 Mar 2018 19:48:29 -0400 + +gnome-maps (3.27.92-1) unstable; urgency=medium + + * new upstream release candidate + * Drop patch included in new release + * Release to unstable + + -- Tim Lunn Wed, 07 Mar 2018 20:51:42 +1100 + +gnome-maps (3.27.90-2) experimental; urgency=medium + + * Team upload + * d/p/dist/Add-missing-template-files-for-enum-types.patch: + Add missing lib/maps-enum-types.[ch].template, from upstream git + (Closes: #891133) + * d/copyright: Add copyright, license details of third-party + JavaScript noticed while fixing upstream distcheck target + + -- Simon McVittie Thu, 22 Feb 2018 19:18:13 +0000 + +gnome-maps (3.27.90-1) experimental; urgency=medium + + * New upstream release + * Bump minimum gjs to 1.50.0 + * Bump Standards-Version to 4.1.3 + + -- Jeremy Bicha Wed, 07 Feb 2018 17:54:05 -0500 + +gnome-maps (3.26.2-3) unstable; urgency=medium + + * Update Vcs fields for migration to https://salsa.debian.org/ + * Bump debhelper compat to 11 + * Add lintian override for desktop-command-not-in-package + + -- Jeremy Bicha Fri, 02 Feb 2018 15:21:40 -0500 + +gnome-maps (3.26.2-2) unstable; urgency=medium + + * Update Vcs fields for conversion to git + * Add debian/gbp.conf + * Bump Standards-Version to 4.1.2 + + -- Jeremy Bicha Thu, 14 Dec 2017 22:24:00 -0500 + +gnome-maps (3.26.2-1) unstable; urgency=medium + + * New upstream release + * Bump Build-Depends on libglib2.0-dev to (>= 2.44.0) + + -- Michael Biebl Tue, 31 Oct 2017 12:12:27 +0100 + +gnome-maps (3.26.1-1) unstable; urgency=medium + + * New upstream release + * Bump Standards-Version to 4.1.1 + + -- Jeremy Bicha Wed, 04 Oct 2017 15:20:28 -0400 + +gnome-maps (3.26.0-1) unstable; urgency=medium + + * New upstream release + * Drop obsolete Build-Depends on dh-autoreconf & gnome-common + + -- Jeremy Bicha Wed, 13 Sep 2017 17:48:36 -0400 + +gnome-maps (3.25.91-1) unstable; urgency=medium + + * New upstream release + * debian/control.in: + - Bump minimum libgtk-3-dev to 3.22 + * Bump Standards-Version to 4.1.0 + + -- Jeremy Bicha Thu, 31 Aug 2017 19:34:16 -0400 + +gnome-maps (3.22.2-1) unstable; urgency=medium + + * New upstream release. + + -- Michael Biebl Tue, 08 Nov 2016 01:29:23 +0100 + +gnome-maps (3.22.1-1) unstable; urgency=medium + + * New upstream release. + + -- Michael Biebl Tue, 11 Oct 2016 13:19:53 +0200 + +gnome-maps (3.22.0-1) unstable; urgency=medium + + * New upstream release. + + -- Andreas Henriksson Mon, 19 Sep 2016 11:26:45 +0200 + +gnome-maps (3.21.92-1) unstable; urgency=medium + + * New upstream development release. + * Bump Build-Depends on libchamplain-0.12-dev to (>= 0.12.14) as per + configure.ac. + * Bump debhelper compat level to 10. + * Tighten Depends on libglib2.0-bin to ensure we have a recent enough + version providing gapplication. + + -- Michael Biebl Tue, 13 Sep 2016 00:36:06 +0200 + +gnome-maps (3.21.91-1) unstable; urgency=low + + * New upstream beta release. + + -- Andreas Henriksson Tue, 30 Aug 2016 20:06:41 +0200 + +gnome-maps (3.20.3-1) unstable; urgency=medium + + * New upstream release. + * Add dependency on libglib2.0-bin, for gapplication. + + -- Andreas Henriksson Tue, 23 Aug 2016 12:11:51 +0200 + +gnome-maps (3.20.2-1) unstable; urgency=medium + + * New upstream release. + - Uses a new tile server. Closes: #830842. + * Bump Standards-Version to 3.9.8. + + -- Emilio Pozuelo Monfort Sun, 31 Jul 2016 12:35:36 +0200 + +gnome-maps (3.20.1-1) unstable; urgency=medium + + [ Michael Biebl ] + * Drop uploaders.mk from debian/rules as this breaks the clean target with + dh. Instead use the gnome dh addon which updates debian/control via + dh_gnome_clean. + + [ Andreas Henriksson ] + * New upstream release. + * Bump build-dependency according to configure.ac changes: + - libchamplain-0.12-dev (>= 0.12.13) + + -- Andreas Henriksson Fri, 15 Apr 2016 18:17:18 +0200 + +gnome-maps (3.20.0-2) unstable; urgency=medium + + * Bump gjs (build-)dependencies to >= 1.44.0 (Closes: #819548) + Thanks to Marcus Lundblad for identifying this. + + -- Andreas Henriksson Sun, 03 Apr 2016 16:52:22 +0200 + +gnome-maps (3.20.0-1) unstable; urgency=medium + + * Add Depends on gir1.2-webkit2-4.0 since WebKit2 is used at runtime now. + Thanks to Marcus Lundblad for spotting this. + * New upstream release. + * Add additional dependencies for newly required typelib files: + - gir1.2-geoclue-2.0 + - gir1.2-secret-1 + + -- Andreas Henriksson Thu, 24 Mar 2016 16:02:46 +0100 + +gnome-maps (3.19.92-1) experimental; urgency=medium + + * New upstream release. + * Add build-dependencies on librest-dev and libxml2-dev + - configure.ac now checks for these, gir dependencies already exists. + * Bump Standards-Version to 3.9.7 + + -- Andreas Henriksson Mon, 14 Mar 2016 21:49:36 +0100 + +gnome-maps (3.18.2-1) unstable; urgency=medium + + * New upstream release. + + -- Michael Biebl Wed, 11 Nov 2015 02:08:27 +0100 + +gnome-maps (3.18.1-2) unstable; urgency=medium + + * Add missing dependencies on gir1.2-gweather-3.0, gir1.2-rest-0.7 and + gir1.2-soup-2.4. (Closes: #801526) + + -- Michael Biebl Sun, 11 Oct 2015 19:50:48 +0200 + +gnome-maps (3.18.1-1) unstable; urgency=medium + + * New upstream release. + + -- Michael Biebl Sun, 11 Oct 2015 15:55:56 +0200 + +gnome-maps (3.18.0.1-1) unstable; urgency=medium + + * Add dependency on gir1.2-goa-1.0 (Closes: #794092) + * New upstream release. + * Drop debian/patches/schema_translation.patch + - now included in upstream release. + + -- Andreas Henriksson Fri, 02 Oct 2015 23:31:35 +0200 + +gnome-maps (3.16.2-1) unstable; urgency=medium + + [ Michael Biebl ] + * New upstream release. + * Update debian/copyright to make it compliant with version 1.0 of the spec. + * Exclude the package private libgnome-maps.so library from dh_makeshlibs + and remove the unnecessary .a and .la files. + * Enable the gir dh addon since gnome-maps builds a private typelib now. + * Update Depends: + - Bump gjs to (>= 1.43.3) + - Bump gir1.2-geocodeglib-1.0 to (>= 3.15.2) + - Add gir1.2-gfbgraph-0.2 + * Add Build-Depends on gjs so the correct path of the gjs interpreter binary + is embedded into /usr/bin/gnome-maps. + + [ Jackson Doak ] + * Update Build-depends: + - Bump libgjs-dev to (>= 1.43.3) + - Bump libglib2.0-dev to (>= 2.39.3) + - Add libgtk-3-dev (>= 3.15.9) + - Add geoclue-2.0 (>= 0.12.99) + - Add libgee-0.8-dev (>= 0.16.0) + - Add libfolks-dev (>= 0.10.0) + - Add libgeocode-glib-dev (>= 3.15.2) + - Add libchamplain-0.12-dev (>= 0.12.9) + - Add libgirepository1.0-dev and gobject-introspection (>= 0.6.3) + - Add intltool (>= 0.40) + * debian/patches/schema_translation.patch: + - Fix build failure with intltool translation of gsettings schema + when using glib2.0 >= 2.45 + + -- Michael Biebl Sat, 04 Jul 2015 15:23:48 +0200 + +gnome-maps (3.14.1.2-1) unstable; urgency=medium + + [ Jackson Doak ] + * New upstream release + + [ Michael Biebl ] + * Bump Standards-Version to 3.9.6. No further changes. + + -- Michael Biebl Mon, 13 Oct 2014 22:46:21 +0200 + +gnome-maps (3.14.1-1) unstable; urgency=medium + + [ Jackson Doak ] + * New upstream bugfix release + + -- Andreas Henriksson Sat, 11 Oct 2014 18:00:24 +0200 + +gnome-maps (3.14.0-1) unstable; urgency=medium + + * New upstream release. + * Drop debian/patches/gjs-readwrite-flags.patch, fixed upstream. + + -- Andreas Henriksson Mon, 22 Sep 2014 23:04:28 +0200 + +gnome-maps (3.13.91-1) experimental; urgency=medium + + * debian/watch: only look for stable releases. + * New upstream development release. + * Bump dependencies to have new enough runtime versions: + + gir1.2-geocodeglib-1.0 (>= 3.13), + + gir1.2-glib-2.0 (>= 1.41), + + gjs (>= 1.41), + * Add debian/patches/gjs-readwrite-flags.patch + - Avoid GObject.ParamFlags.READWRITE flag for now. + + -- Andreas Henriksson Sun, 14 Sep 2014 10:08:27 +0200 + +gnome-maps (3.12.2-1) unstable; urgency=medium + + * New upstream release. + * Upload to unstable. + + -- Andreas Henriksson Tue, 15 Jul 2014 00:14:59 +0200 + +gnome-maps (3.12.1-1) experimental; urgency=medium + + * New upstream release. + + -- Andreas Henriksson Fri, 09 May 2014 20:39:57 +0200 + +gnome-maps (3.12.0-1) experimental; urgency=medium + + * New upstream release. + * Update build-dependencies according to configure.ac changes: + - Bump glib 2.39.3 and gjs 1.39.0 + * Bump debhelper compat to 9 (and build-dependency) + + -- Andreas Henriksson Sun, 06 Apr 2014 18:06:54 +0200 + +gnome-maps (3.10.2-1) unstable; urgency=medium + + * New upstream release + * debian/control.in: Add dependency against gjs package + * debian/control.in: Depends against geoclue-2.0 package + * debian/control.in: Bump Standards-Version to 3.9.5 (no further changes) + + -- Laurent Bigonville Sun, 16 Feb 2014 12:10:22 +0100 + +gnome-maps (3.10.0-1) experimental; urgency=low + + * Initial release + + -- Andreas Henriksson Tue, 15 Oct 2013 22:08:33 +0200 diff --git a/control b/control new file mode 100644 index 00000000..da522e5f --- /dev/null +++ b/control @@ -0,0 +1,62 @@ +# This file is autogenerated. DO NOT EDIT! +# +# Modifications should be made to debian/control.in instead. +# This file is regenerated automatically in the clean target. +Source: gnome-maps +Section: gnome +Priority: optional +Maintainer: Debian GNOME Maintainers +Uploaders: Iain Lane , Jeremy Bicha , Laurent Bigonville , Sebastien Bacher +Build-Depends: debhelper-compat (= 12), + dh-sequence-gir, + dh-sequence-gnome, + geoclue-2.0 (>= 0.12.99), + gjs (>= 1.50.0), + itstool, + libchamplain-0.12-dev (>= 0.12.14), + libfolks-dev (>= 0.10.0), + libgee-0.8-dev (>= 0.16.0), + libgeocode-glib-dev (>= 3.15.2), + libgirepository1.0-dev (>= 0.10.1), + libgjs-dev (>= 1.44.0), + libglib2.0-dev (>= 2.44.0), + libgtk-3-dev (>= 3.22.0), + librest-dev (>= 0.7.90), + libxml2-dev, + libxml2-utils, + meson +Rules-Requires-Root: no +Standards-Version: 4.5.0 +X-Ubuntu-Use-Langpack: yes +Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-maps +Vcs-Git: https://salsa.debian.org/gnome-team/gnome-maps.git +Homepage: https://wiki.gnome.org/Apps/Maps + +Package: gnome-maps +Architecture: any +Depends: geoclue-2.0 (>= 2.0), + gir1.2-champlain-0.12 (>= 0.12.14), + gir1.2-clutter-1.0, + gir1.2-cogl-1.0, + gir1.2-gdkpixbuf-2.0, + gir1.2-geoclue-2.0, + gir1.2-geocodeglib-1.0 (>= 3.15.2), + gir1.2-gfbgraph-0.2, + gir1.2-glib-2.0 (>= 1.41), + gir1.2-goa-1.0, + gir1.2-gtk-3.0 (>= 3.22.0), + gir1.2-gtkchamplain-0.12 (>= 0.12.14), + gir1.2-gtkclutter-1.0, + gir1.2-gweather-3.0, + gir1.2-rest-0.7 (>= 0.7.90), + gir1.2-secret-1, + gir1.2-soup-2.4, + gir1.2-webkit2-4.0, + gjs (>= 1.50.0), + libglib2.0-bin (>= 2.40.0-3), + ${gir:Depends}, + ${misc:Depends}, + ${shlibs:Depends} +Description: map application for GNOME + Maps is a map application for GNOME that allows you to view maps in different + zoom levels, search for places, etc. diff --git a/control.in b/control.in new file mode 100644 index 00000000..a16f1dce --- /dev/null +++ b/control.in @@ -0,0 +1,58 @@ +Source: gnome-maps +Section: gnome +Priority: optional +Maintainer: Debian GNOME Maintainers +Uploaders: @GNOME_TEAM@ +Build-Depends: debhelper-compat (= 12), + dh-sequence-gir, + dh-sequence-gnome, + geoclue-2.0 (>= 0.12.99), + gjs (>= 1.50.0), + itstool, + libchamplain-0.12-dev (>= 0.12.14), + libfolks-dev (>= 0.10.0), + libgee-0.8-dev (>= 0.16.0), + libgeocode-glib-dev (>= 3.15.2), + libgirepository1.0-dev (>= 0.10.1), + libgjs-dev (>= 1.44.0), + libglib2.0-dev (>= 2.44.0), + libgtk-3-dev (>= 3.22.0), + librest-dev (>= 0.7.90), + libxml2-dev, + libxml2-utils, + meson +Rules-Requires-Root: no +Standards-Version: 4.5.0 +X-Ubuntu-Use-Langpack: yes +Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-maps +Vcs-Git: https://salsa.debian.org/gnome-team/gnome-maps.git +Homepage: https://wiki.gnome.org/Apps/Maps + +Package: gnome-maps +Architecture: any +Depends: geoclue-2.0 (>= 2.0), + gir1.2-champlain-0.12 (>= 0.12.14), + gir1.2-clutter-1.0, + gir1.2-cogl-1.0, + gir1.2-gdkpixbuf-2.0, + gir1.2-geoclue-2.0, + gir1.2-geocodeglib-1.0 (>= 3.15.2), + gir1.2-gfbgraph-0.2, + gir1.2-glib-2.0 (>= 1.41), + gir1.2-goa-1.0, + gir1.2-gtk-3.0 (>= 3.22.0), + gir1.2-gtkchamplain-0.12 (>= 0.12.14), + gir1.2-gtkclutter-1.0, + gir1.2-gweather-3.0, + gir1.2-rest-0.7 (>= 0.7.90), + gir1.2-secret-1, + gir1.2-soup-2.4, + gir1.2-webkit2-4.0, + gjs (>= 1.50.0), + libglib2.0-bin (>= 2.40.0-3), + ${gir:Depends}, + ${misc:Depends}, + ${shlibs:Depends} +Description: map application for GNOME + Maps is a map application for GNOME that allows you to view maps in different + zoom levels, search for places, etc. diff --git a/copyright b/copyright new file mode 100644 index 00000000..90cf196e --- /dev/null +++ b/copyright @@ -0,0 +1,84 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: gnome-maps +Upstream-Contact: maps-list@gnome.org +Source: https://download.gnome.org/sources/gnome-maps/ + +Files: * +Copyright: + 2011-2015 Red Hat, Inc. + 2013-2018 Free Software Foundation, Inc. + 2013-2014 Mattias Bengtsson + 2013-2015 Jonas Danielsson + 2014 Damián Nohales + 2015-2018 Marcus Lundblad +License: GPL-2+ + +Files: + src/geojson-vt/* +Copyright: + © 2015 Mapbox +License: Expat + +Files: + src/togeojson/* +Copyright: + © 2012 Tom MacWright +License: WTFPL + +Files: + src/xmldom/* +Copyright: + unspecified +License: Expat or LGPL-unspecified-version +Comment: + License grant, from upstream git: + . + You can choose any one of those: + . + The MIT License (MIT): + . + link:http://opensource.org/licenses/MIT + . + LGPL: + http://www.gnu.org/licenses/lgpl.html + +Files: debian/* +Copyright: 2013 Andreas Henriksson +License: GPL-2+ + +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +License: WTFPL + 0. You just DO WHAT THE FUCK YOU WANT TO. + +License: Expat + Permission to use, copy, modify, and/or distribute this software for any purpose + with or without fee is hereby granted, provided that the above copyright notice + and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + THIS SOFTWARE. + +License: LGPL-unspecified-version + On Debian systems, the complete text of various versions of the GNU Lesser + General Public License can be found in "/usr/share/common-licenses". diff --git a/docs b/docs new file mode 100644 index 00000000..50bd824b --- /dev/null +++ b/docs @@ -0,0 +1,2 @@ +NEWS +README diff --git a/gbp.conf b/gbp.conf new file mode 100644 index 00000000..914576dd --- /dev/null +++ b/gbp.conf @@ -0,0 +1,17 @@ +[DEFAULT] +pristine-tar = True +debian-branch = debian/master +upstream-branch = upstream/latest + +[buildpackage] +sign-tags = True + +[dch] +multimaint-merge = True + +[import-orig] +postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit +upstream-vcs-tag = v%(version)s + +[pq] +patch-numbers = False diff --git a/lintian-overrides b/lintian-overrides new file mode 100644 index 00000000..8bcf5a19 --- /dev/null +++ b/lintian-overrides @@ -0,0 +1,2 @@ +# gnome-maps depends on libglib2.0-bin +desktop-command-not-in-package usr/share/applications/org.gnome.Maps.desktop gapplication diff --git a/patches/series b/patches/series new file mode 100644 index 00000000..e69de29b diff --git a/rules b/rules new file mode 100755 index 00000000..4d328e9b --- /dev/null +++ b/rules @@ -0,0 +1,15 @@ +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all +export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs -Wl,--as-needed + +%: + dh $@ + +override_dh_makeshlibs: + dh_makeshlibs -X/usr/lib/$(DEB_HOST_MULTIARCH)/gnome-maps + +override_dh_girepository: + dh_girepository -ldebian/gnome-maps/usr/share/gnome-maps/gir-1.0 \ + /usr/lib/$(DEB_HOST_MULTIARCH)/gnome-maps/ \ + /usr/lib/$(DEB_HOST_MULTIARCH)/gnome-maps/girepository-1.0/ diff --git a/source/format b/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/watch b/watch new file mode 100644 index 00000000..d8c69110 --- /dev/null +++ b/watch @@ -0,0 +1,3 @@ +version=4 +https://download.gnome.org/sources/@PACKAGE@/([\d\.]+[02468])/ \ + @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ -- cgit v1.2.3 From 1cb9476b4df122e1f5667a1b591e0d9fc76a7c6c Mon Sep 17 00:00:00 2001 From: Laurent Bigonville Date: Sat, 2 May 2020 17:23:52 +0100 Subject: Import gnome-maps_3.36.2.orig.tar.xz [dgit import orig gnome-maps_3.36.2.orig.tar.xz] --- .jshintrc | 82 + COPYING | 828 + NEWS | 3412 ++++ README | 2 + data/gnome-maps.css | 102 + data/icons/meson.build | 9 + .../16x16/apps/layer-not-visible-symbolic.svg | 90 + .../hicolor/16x16/apps/layer-visible-symbolic.svg | 87 + .../hicolor/16x16/apps/layers-button-symbolic.svg | 78 + .../hicolor/16x16/apps/maps-point-end-symbolic.svg | 302 + .../private/hicolor/16x16/apps/maps-point-end.svg | 530 + .../16x16/apps/maps-point-start-symbolic.svg | 349 + .../hicolor/16x16/apps/maps-point-start.svg | 359 + .../hicolor/16x16/apps/route-bike-symbolic.svg | 20 + .../hicolor/16x16/apps/route-button-symbolic.svg | 73 + .../hicolor/16x16/apps/route-car-symbolic.svg | 67 + .../16x16/apps/route-pedestrian-symbolic.svg | 78 + .../hicolor/16x16/apps/route-reverse-symbolic.svg | 30 + .../16x16/apps/route-transit-airplane-symbolic.svg | 3 + .../16x16/apps/route-transit-bus-symbolic.svg | 74 + .../16x16/apps/route-transit-cablecar-symbolic.svg | 70 + .../16x16/apps/route-transit-ferry-symbolic.svg | 73 + .../apps/route-transit-funicular-symbolic.svg | 82 + .../apps/route-transit-gondolalift-symbolic.svg | 70 + .../16x16/apps/route-transit-subway-symbolic.svg | 70 + .../hicolor/16x16/apps/route-transit-symbolic.svg | 68 + .../16x16/apps/route-transit-train-symbolic.svg | 70 + .../16x16/apps/route-transit-tram-symbolic.svg | 73 + .../hicolor/24x24/apps/user-location-compass.png | Bin 0 -> 1298 bytes .../private/hicolor/24x24/apps/user-location.png | Bin 0 -> 1028 bytes .../apps/maps-direction-continue-symbolic.svg | 84 + .../32x32/apps/maps-direction-left-symbolic.svg | 81 + .../32x32/apps/maps-direction-right-symbolic.svg | 82 + .../apps/maps-direction-roundabout-0-symbolic.svg | 82 + .../maps-direction-roundabout-135-lht-symbolic.svg | 81 + .../maps-direction-roundabout-135-symbolic.svg | 81 + .../maps-direction-roundabout-180-lht-symbolic.svg | 81 + .../maps-direction-roundabout-180-symbolic.svg | 81 + .../maps-direction-roundabout-225-lht-symbolic.svg | 81 + .../maps-direction-roundabout-225-symbolic.svg | 81 + .../maps-direction-roundabout-270-lht-symbolic.svg | 81 + .../maps-direction-roundabout-270-symbolic.svg | 81 + .../maps-direction-roundabout-315-lht-symbolic.svg | 81 + .../maps-direction-roundabout-315-symbolic.svg | 81 + .../maps-direction-roundabout-45-lht-symbolic.svg | 81 + .../apps/maps-direction-roundabout-45-symbolic.svg | 81 + .../maps-direction-roundabout-90-lht-symbolic.svg | 82 + .../apps/maps-direction-roundabout-90-symbolic.svg | 82 + .../apps/maps-direction-roundabout-symbolic.svg | 20 + .../apps/maps-direction-sharpleft-symbolic.svg | 81 + .../apps/maps-direction-sharpright-symbolic.svg | 81 + .../apps/maps-direction-slightleft-symbolic.svg | 81 + .../apps/maps-direction-slightright-symbolic.svg | 81 + .../private/hicolor/32x32/apps/mark-location.png | Bin 0 -> 1060 bytes .../hicolor/scalable/apps/org.gnome.Maps.Devel.svg | 1 + .../hicolor/scalable/apps/org.gnome.Maps.svg | 202 + .../symbolic/apps/org.gnome.Maps-symbolic.svg | 28 + data/maps-service.json | 52 + data/media/maps-point-end-symbolic.svg | 302 + data/media/maps-point-start-symbolic.svg | 349 + data/meson.build | 80 + data/org.gnome.Maps.appdata.xml.in | 177 + data/org.gnome.Maps.data.gresource.xml | 47 + data/org.gnome.Maps.desktop.in | 16 + data/org.gnome.Maps.gschema.xml | 85 + data/org.gnome.Maps.service.in | 3 + data/osm-types.json | 18089 +++++++++++++++++++ data/screenshots/maps-main.jpg | Bin 0 -> 459708 bytes data/screenshots/maps-main.png | Bin 0 -> 787349 bytes data/screenshots/maps-pinpoint.jpg | Bin 0 -> 399934 bytes data/screenshots/maps-pinpoint.png | Bin 0 -> 718376 bytes data/screenshots/maps-route.jpg | Bin 0 -> 330452 bytes data/screenshots/maps-route.png | Bin 0 -> 728459 bytes data/ui/account-row.ui | 76 + data/ui/check-in-dialog.ui | 465 + data/ui/context-menu.ui | 56 + data/ui/export-view-dialog.ui | 146 + data/ui/favorites-popover.ui | 49 + data/ui/help-overlay.ui | 110 + data/ui/instruction-row.ui | 74 + data/ui/layers-popover.ui | 80 + data/ui/location-service-dialog.ui | 53 + data/ui/main-window.ui | 281 + data/ui/map-bubble.ui | 148 + data/ui/open-with-row.ui | 29 + data/ui/osm-account-dialog.ui | 327 + data/ui/osm-edit-address.ui | 59 + data/ui/osm-edit-dialog.ui | 353 + data/ui/osm-type-list-row.ui | 29 + data/ui/osm-type-popover.ui | 16 + data/ui/osm-type-search-entry.ui | 10 + data/ui/place-bubble.ui | 127 + data/ui/place-entry.ui | 23 + data/ui/place-list-row.ui | 83 + data/ui/place-popover.ui | 67 + data/ui/route-entry.ui | 50 + data/ui/search-result-bubble.ui | 40 + data/ui/send-to-dialog.ui | 158 + data/ui/shape-layer-file-chooser.ui | 30 + data/ui/shape-layer-row.ui | 62 + data/ui/sidebar.ui | 444 + data/ui/social-place-more-results-row.ui | 22 + data/ui/social-place-row.ui | 44 + data/ui/transit-arrival-row.ui | 77 + data/ui/transit-itinerary-row.ui | 66 + data/ui/transit-leg-row.ui | 255 + data/ui/transit-more-row.ui | 40 + data/ui/transit-options-panel.ui | 159 + data/ui/transit-route-label.ui | 20 + data/ui/transit-stop-row.ui | 55 + data/ui/user-location-bubble.ui | 54 + data/ui/zoom-in-dialog.ui | 53 + gnome-maps.doap | 29 + lib/maps-contact-store.c | 320 + lib/maps-contact-store.h | 68 + lib/maps-contact.c | 369 + lib/maps-contact.h | 54 + lib/maps-enum-types.c.template | 31 + lib/maps-enum-types.h.template | 36 + lib/maps-file-tile-source.c | 640 + lib/maps-file-tile-source.h | 73 + lib/maps-osm-changeset.c | 190 + lib/maps-osm-changeset.h | 53 + lib/maps-osm-node.c | 169 + lib/maps-osm-node.h | 46 + lib/maps-osm-oauth-proxy-call.c | 101 + lib/maps-osm-oauth-proxy-call.h | 58 + lib/maps-osm-object.c | 331 + lib/maps-osm-object.h | 56 + lib/maps-osm-relation.c | 156 + lib/maps-osm-relation.h | 57 + lib/maps-osm-way.c | 116 + lib/maps-osm-way.h | 48 + lib/maps-osm.c | 471 + lib/maps-osm.h | 35 + lib/maps.h | 25 + lib/mapsintl.h | 11 + lib/meson.build | 75 + meson.build | 59 + meson_post_install.py | 42 + org.gnome.Maps.json | 236 + po/LINGUAS | 63 + po/POTFILES.in | 62 + po/POTFILES.skip | 2 + po/af.po | 182 + po/an.po | 685 + po/ar.po | 1620 ++ po/as.po | 260 + po/bg.po | 1096 ++ po/bs.po | 610 + po/ca.po | 1913 ++ po/ca@valencia.po | 1636 ++ po/cs.po | 1831 ++ po/da.po | 1895 ++ po/de.po | 1868 ++ po/el.po | 1954 ++ po/en_GB.po | 1893 ++ po/eo.po | 1889 ++ po/es.po | 1944 ++ po/et.po | 148 + po/eu.po | 1873 ++ po/fa.po | 1872 ++ po/fi.po | 1911 ++ po/fr.po | 1845 ++ po/fur.po | 1903 ++ po/ga.po | 637 + po/gd.po | 1621 ++ po/gl.po | 1832 ++ po/he.po | 1241 ++ po/hi.po | 261 + po/hr.po | 1868 ++ po/hu.po | 1848 ++ po/id.po | 1835 ++ po/is.po | 1665 ++ po/it.po | 1845 ++ po/ja.po | 1477 ++ po/kk.po | 1694 ++ po/kn.po | 172 + po/ko.po | 1863 ++ po/lt.po | 1905 ++ po/lv.po | 1749 ++ po/meson.build | 2 + po/mjw.po | 1653 ++ po/ml.po | 1600 ++ po/ms.po | 1838 ++ po/nb.po | 1820 ++ po/ne.po | 1617 ++ po/nl.po | 1888 ++ po/oc.po | 1706 ++ po/pa.po | 1895 ++ po/pl.po | 1838 ++ po/pt.po | 1267 ++ po/pt_BR.po | 1959 ++ po/ro.po | 1728 ++ po/ru.po | 1685 ++ po/sk.po | 1982 ++ po/sl.po | 1959 ++ po/sr.po | 1927 ++ po/sr@latin.po | 1712 ++ po/sv.po | 1934 ++ po/te.po | 188 + po/tg.po | 678 + po/tr.po | 1895 ++ po/uk.po | 1862 ++ po/vi.po | 1660 ++ po/zh_CN.po | 1691 ++ po/zh_HK.po | 213 + po/zh_TW.po | 1912 ++ scripts/README | 18 + scripts/extractPoiTypesFromID.js | 142 + src/accountListBox.js | 77 + src/address.js | 131 + src/application.js | 322 + src/checkIn.js | 178 + src/checkInDialog.js | 288 + src/color.js | 94 + src/contactPlace.js | 45 + src/contextMenu.js | 201 + src/epaf.js | 70 + src/exportViewDialog.js | 183 + src/facebookBackend.js | 118 + src/favoritesPopover.js | 122 + src/foursquareBackend.js | 118 + src/foursquareGoaAuthorizer.js | 91 + src/geoJSONShapeLayer.js | 58 + src/geoJSONSource.js | 280 + src/geoJSONStyle.js | 87 + src/geoclue.js | 127 + src/geocode.js | 39 + src/geojson-vt/LICENSE | 13 + src/geojson-vt/clip.js | 149 + src/geojson-vt/convert.js | 147 + src/geojson-vt/index.js | 238 + src/geojson-vt/simplify.js | 72 + src/geojson-vt/tile.js | 83 + src/geojson-vt/transform.js | 38 + src/geojson-vt/wrap.js | 59 + src/gfx.js | 61 + src/gpxShapeLayer.js | 52 + src/graphHopper.js | 269 + src/graphHopperGeocode.js | 154 + src/graphHopperTransit.js | 163 + src/http.js | 76 + src/hvt.js | 249 + src/instructionRow.js | 68 + src/kmlShapeLayer.js | 51 + src/layersPopover.js | 203 + src/location.js | 45 + src/locationServiceDialog.js | 65 + src/longPrintLayout.js | 140 + src/main.js | 58 + src/mainWindow.js | 647 + src/mapBubble.js | 192 + src/mapMarker.js | 392 + src/mapSource.js | 137 + src/mapView.js | 765 + src/mapWalker.js | 197 + src/meson.build | 22 + src/org.gnome.Maps.in | 5 + src/org.gnome.Maps.src.gresource.xml | 120 + src/osmAccountDialog.js | 204 + src/osmConnection.js | 452 + src/osmEdit.js | 193 + src/osmEditDialog.js | 840 + src/osmTypeListRow.js | 50 + src/osmTypePopover.js | 61 + src/osmTypeSearchEntry.js | 75 + src/osmTypes.js | 165 + src/osmUtils.js | 72 + src/overpass.js | 262 + src/photonGeocode.js | 168 + src/photonParser.js | 208 + src/place.js | 524 + src/placeBubble.js | 361 + src/placeEntry.js | 306 + src/placeFormatter.js | 117 + src/placeListRow.js | 90 + src/placeMarker.js | 48 + src/placePopover.js | 136 + src/placeStore.js | 343 + src/printLayout.js | 364 + src/printOperation.js | 119 + src/route.js | 177 + src/routeEntry.js | 118 + src/routeQuery.js | 254 + src/routingDelegator.js | 77 + src/searchPopover.js | 111 + src/sendToDialog.js | 262 + src/service.js | 76 + src/serviceBackend.js | 127 + src/settings.js | 74 + src/shapeLayer.js | 109 + src/shortPrintLayout.js | 59 + src/sidebar.js | 572 + src/socialPlace.js | 43 + src/socialPlaceListBox.js | 103 + src/socialPlaceMatcher.js | 125 + src/storedRoute.js | 218 + src/time.js | 91 + src/togeojson/LICENSE | 13 + src/togeojson/togeojson.js | 357 + src/transit.js | 79 + src/transitArrivalMarker.js | 65 + src/transitArrivalRow.js | 65 + src/transitBoardMarker.js | 138 + src/transitItineraryRow.js | 136 + src/transitLegRow.js | 206 + src/transitMoreRow.js | 58 + src/transitOptions.js | 70 + src/transitOptionsPanel.js | 209 + src/transitPlan.js | 836 + src/transitPrintLayout.js | 331 + src/transitRouteLabel.js | 124 + src/transitRouter.js | 254 + src/transitStopRow.js | 45 + src/transitTweaks.js | 180 + src/transitWalkMarker.js | 77 + src/transitplugins/README | 67 + src/transitplugins/openTripPlanner.js | 1237 ++ src/transitplugins/opendataCH.js | 544 + src/transitplugins/resrobot.js | 631 + src/translations.js | 395 + src/turnPointMarker.js | 123 + src/userLocationBubble.js | 61 + src/userLocationMarker.js | 126 + src/utils.js | 387 + src/wikipedia.js | 136 + src/xmldom/LICENSE | 8 + src/xmldom/dom.js | 1142 ++ src/xmldom/domparser.js | 246 + src/xmldom/sax.js | 582 + src/zoomInDialog.js | 62 + 332 files changed, 157676 insertions(+) create mode 100644 .jshintrc create mode 100644 COPYING create mode 100644 NEWS create mode 100644 README create mode 100644 data/gnome-maps.css create mode 100644 data/icons/meson.build create mode 100644 data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/maps-point-end.svg create mode 100644 data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/maps-point-start.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg create mode 100644 data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg create mode 100644 data/icons/private/hicolor/24x24/apps/user-location-compass.png create mode 100644 data/icons/private/hicolor/24x24/apps/user-location.png create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg create mode 100644 data/icons/private/hicolor/32x32/apps/mark-location.png create mode 100644 data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg create mode 100644 data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg create mode 100644 data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg create mode 100644 data/maps-service.json create mode 100644 data/media/maps-point-end-symbolic.svg create mode 100644 data/media/maps-point-start-symbolic.svg create mode 100644 data/meson.build create mode 100644 data/org.gnome.Maps.appdata.xml.in create mode 100644 data/org.gnome.Maps.data.gresource.xml create mode 100644 data/org.gnome.Maps.desktop.in create mode 100644 data/org.gnome.Maps.gschema.xml create mode 100644 data/org.gnome.Maps.service.in create mode 100644 data/osm-types.json create mode 100644 data/screenshots/maps-main.jpg create mode 100644 data/screenshots/maps-main.png create mode 100644 data/screenshots/maps-pinpoint.jpg create mode 100644 data/screenshots/maps-pinpoint.png create mode 100644 data/screenshots/maps-route.jpg create mode 100644 data/screenshots/maps-route.png create mode 100644 data/ui/account-row.ui create mode 100644 data/ui/check-in-dialog.ui create mode 100644 data/ui/context-menu.ui create mode 100644 data/ui/export-view-dialog.ui create mode 100644 data/ui/favorites-popover.ui create mode 100644 data/ui/help-overlay.ui create mode 100644 data/ui/instruction-row.ui create mode 100644 data/ui/layers-popover.ui create mode 100644 data/ui/location-service-dialog.ui create mode 100644 data/ui/main-window.ui create mode 100644 data/ui/map-bubble.ui create mode 100644 data/ui/open-with-row.ui create mode 100644 data/ui/osm-account-dialog.ui create mode 100644 data/ui/osm-edit-address.ui create mode 100644 data/ui/osm-edit-dialog.ui create mode 100644 data/ui/osm-type-list-row.ui create mode 100644 data/ui/osm-type-popover.ui create mode 100644 data/ui/osm-type-search-entry.ui create mode 100644 data/ui/place-bubble.ui create mode 100644 data/ui/place-entry.ui create mode 100644 data/ui/place-list-row.ui create mode 100644 data/ui/place-popover.ui create mode 100644 data/ui/route-entry.ui create mode 100644 data/ui/search-result-bubble.ui create mode 100644 data/ui/send-to-dialog.ui create mode 100644 data/ui/shape-layer-file-chooser.ui create mode 100644 data/ui/shape-layer-row.ui create mode 100644 data/ui/sidebar.ui create mode 100644 data/ui/social-place-more-results-row.ui create mode 100644 data/ui/social-place-row.ui create mode 100644 data/ui/transit-arrival-row.ui create mode 100644 data/ui/transit-itinerary-row.ui create mode 100644 data/ui/transit-leg-row.ui create mode 100644 data/ui/transit-more-row.ui create mode 100644 data/ui/transit-options-panel.ui create mode 100644 data/ui/transit-route-label.ui create mode 100644 data/ui/transit-stop-row.ui create mode 100644 data/ui/user-location-bubble.ui create mode 100644 data/ui/zoom-in-dialog.ui create mode 100644 gnome-maps.doap create mode 100644 lib/maps-contact-store.c create mode 100644 lib/maps-contact-store.h create mode 100644 lib/maps-contact.c create mode 100644 lib/maps-contact.h create mode 100644 lib/maps-enum-types.c.template create mode 100644 lib/maps-enum-types.h.template create mode 100644 lib/maps-file-tile-source.c create mode 100644 lib/maps-file-tile-source.h create mode 100644 lib/maps-osm-changeset.c create mode 100644 lib/maps-osm-changeset.h create mode 100644 lib/maps-osm-node.c create mode 100644 lib/maps-osm-node.h create mode 100644 lib/maps-osm-oauth-proxy-call.c create mode 100644 lib/maps-osm-oauth-proxy-call.h create mode 100644 lib/maps-osm-object.c create mode 100644 lib/maps-osm-object.h create mode 100644 lib/maps-osm-relation.c create mode 100644 lib/maps-osm-relation.h create mode 100644 lib/maps-osm-way.c create mode 100644 lib/maps-osm-way.h create mode 100644 lib/maps-osm.c create mode 100644 lib/maps-osm.h create mode 100644 lib/maps.h create mode 100644 lib/mapsintl.h create mode 100644 lib/meson.build create mode 100644 meson.build create mode 100644 meson_post_install.py create mode 100644 org.gnome.Maps.json create mode 100644 po/LINGUAS create mode 100644 po/POTFILES.in create mode 100644 po/POTFILES.skip create mode 100644 po/af.po create mode 100644 po/an.po create mode 100644 po/ar.po create mode 100644 po/as.po create mode 100644 po/bg.po create mode 100644 po/bs.po create mode 100644 po/ca.po create mode 100644 po/ca@valencia.po create mode 100644 po/cs.po create mode 100644 po/da.po create mode 100644 po/de.po create mode 100644 po/el.po create mode 100644 po/en_GB.po create mode 100644 po/eo.po create mode 100644 po/es.po create mode 100644 po/et.po create mode 100644 po/eu.po create mode 100644 po/fa.po create mode 100644 po/fi.po create mode 100644 po/fr.po create mode 100644 po/fur.po create mode 100644 po/ga.po create mode 100644 po/gd.po create mode 100644 po/gl.po create mode 100644 po/he.po create mode 100644 po/hi.po create mode 100644 po/hr.po create mode 100644 po/hu.po create mode 100644 po/id.po create mode 100644 po/is.po create mode 100644 po/it.po create mode 100644 po/ja.po create mode 100644 po/kk.po create mode 100644 po/kn.po create mode 100644 po/ko.po create mode 100644 po/lt.po create mode 100644 po/lv.po create mode 100644 po/meson.build create mode 100644 po/mjw.po create mode 100644 po/ml.po create mode 100644 po/ms.po create mode 100644 po/nb.po create mode 100644 po/ne.po create mode 100644 po/nl.po create mode 100644 po/oc.po create mode 100644 po/pa.po create mode 100644 po/pl.po create mode 100644 po/pt.po create mode 100644 po/pt_BR.po create mode 100644 po/ro.po create mode 100644 po/ru.po create mode 100644 po/sk.po create mode 100644 po/sl.po create mode 100644 po/sr.po create mode 100644 po/sr@latin.po create mode 100644 po/sv.po create mode 100644 po/te.po create mode 100644 po/tg.po create mode 100644 po/tr.po create mode 100644 po/uk.po create mode 100644 po/vi.po create mode 100644 po/zh_CN.po create mode 100644 po/zh_HK.po create mode 100644 po/zh_TW.po create mode 100644 scripts/README create mode 100755 scripts/extractPoiTypesFromID.js create mode 100644 src/accountListBox.js create mode 100644 src/address.js create mode 100644 src/application.js create mode 100644 src/checkIn.js create mode 100644 src/checkInDialog.js create mode 100644 src/color.js create mode 100644 src/contactPlace.js create mode 100644 src/contextMenu.js create mode 100644 src/epaf.js create mode 100644 src/exportViewDialog.js create mode 100644 src/facebookBackend.js create mode 100644 src/favoritesPopover.js create mode 100644 src/foursquareBackend.js create mode 100644 src/foursquareGoaAuthorizer.js create mode 100644 src/geoJSONShapeLayer.js create mode 100644 src/geoJSONSource.js create mode 100644 src/geoJSONStyle.js create mode 100644 src/geoclue.js create mode 100644 src/geocode.js create mode 100644 src/geojson-vt/LICENSE create mode 100644 src/geojson-vt/clip.js create mode 100644 src/geojson-vt/convert.js create mode 100644 src/geojson-vt/index.js create mode 100644 src/geojson-vt/simplify.js create mode 100644 src/geojson-vt/tile.js create mode 100644 src/geojson-vt/transform.js create mode 100644 src/geojson-vt/wrap.js create mode 100644 src/gfx.js create mode 100644 src/gpxShapeLayer.js create mode 100644 src/graphHopper.js create mode 100644 src/graphHopperGeocode.js create mode 100644 src/graphHopperTransit.js create mode 100644 src/http.js create mode 100644 src/hvt.js create mode 100644 src/instructionRow.js create mode 100644 src/kmlShapeLayer.js create mode 100644 src/layersPopover.js create mode 100644 src/location.js create mode 100644 src/locationServiceDialog.js create mode 100644 src/longPrintLayout.js create mode 100644 src/main.js create mode 100644 src/mainWindow.js create mode 100644 src/mapBubble.js create mode 100644 src/mapMarker.js create mode 100644 src/mapSource.js create mode 100644 src/mapView.js create mode 100644 src/mapWalker.js create mode 100644 src/meson.build create mode 100755 src/org.gnome.Maps.in create mode 100644 src/org.gnome.Maps.src.gresource.xml create mode 100644 src/osmAccountDialog.js create mode 100644 src/osmConnection.js create mode 100644 src/osmEdit.js create mode 100644 src/osmEditDialog.js create mode 100644 src/osmTypeListRow.js create mode 100644 src/osmTypePopover.js create mode 100644 src/osmTypeSearchEntry.js create mode 100644 src/osmTypes.js create mode 100644 src/osmUtils.js create mode 100644 src/overpass.js create mode 100644 src/photonGeocode.js create mode 100644 src/photonParser.js create mode 100644 src/place.js create mode 100644 src/placeBubble.js create mode 100644 src/placeEntry.js create mode 100644 src/placeFormatter.js create mode 100644 src/placeListRow.js create mode 100644 src/placeMarker.js create mode 100644 src/placePopover.js create mode 100644 src/placeStore.js create mode 100644 src/printLayout.js create mode 100644 src/printOperation.js create mode 100644 src/route.js create mode 100644 src/routeEntry.js create mode 100644 src/routeQuery.js create mode 100644 src/routingDelegator.js create mode 100644 src/searchPopover.js create mode 100644 src/sendToDialog.js create mode 100644 src/service.js create mode 100644 src/serviceBackend.js create mode 100644 src/settings.js create mode 100644 src/shapeLayer.js create mode 100644 src/shortPrintLayout.js create mode 100644 src/sidebar.js create mode 100644 src/socialPlace.js create mode 100644 src/socialPlaceListBox.js create mode 100644 src/socialPlaceMatcher.js create mode 100644 src/storedRoute.js create mode 100644 src/time.js create mode 100644 src/togeojson/LICENSE create mode 100644 src/togeojson/togeojson.js create mode 100644 src/transit.js create mode 100644 src/transitArrivalMarker.js create mode 100644 src/transitArrivalRow.js create mode 100644 src/transitBoardMarker.js create mode 100644 src/transitItineraryRow.js create mode 100644 src/transitLegRow.js create mode 100644 src/transitMoreRow.js create mode 100644 src/transitOptions.js create mode 100644 src/transitOptionsPanel.js create mode 100644 src/transitPlan.js create mode 100644 src/transitPrintLayout.js create mode 100644 src/transitRouteLabel.js create mode 100644 src/transitRouter.js create mode 100644 src/transitStopRow.js create mode 100644 src/transitTweaks.js create mode 100644 src/transitWalkMarker.js create mode 100644 src/transitplugins/README create mode 100644 src/transitplugins/openTripPlanner.js create mode 100644 src/transitplugins/opendataCH.js create mode 100644 src/transitplugins/resrobot.js create mode 100644 src/translations.js create mode 100644 src/turnPointMarker.js create mode 100644 src/userLocationBubble.js create mode 100644 src/userLocationMarker.js create mode 100644 src/utils.js create mode 100644 src/wikipedia.js create mode 100644 src/xmldom/LICENSE create mode 100644 src/xmldom/dom.js create mode 100644 src/xmldom/domparser.js create mode 100644 src/xmldom/sax.js create mode 100644 src/zoomInDialog.js diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 00000000..16a47532 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,82 @@ +{ + "maxerr" : 50, // {int} Maximum error before stopping + + // Enforcing + "bitwise" : false, // true: Prohibit bitwise operators (&, |, ^, etc.) + "camelcase" : false, // true: Identifiers must be in camelCase + "curly" : false, // true: Require {} for every new block or scope + "eqeqeq" : true, // true: Require triple equals (===) for comparison + "forin" : false, // true: Require filtering for..in loops with obj.hasOwnProperty() + "immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` + "indent" : 4, // {int} Number of spaces to use for indentation + "latedef" : "nofunc", // true: Require variables/functions to be defined before being used + "newcap" : true, // true: Require capitalization of all constructor functions e.g. `new F()` + "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` + "noempty" : true, // true: Prohibit use of empty blocks + "nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment) + "plusplus" : false, // true: Prohibit use of `++` & `--` + "quotmark" : false, // Quotation mark consistency: + // false : do nothing (default) + // true : ensure whatever is used is consistent + // "single" : require single quotes + // "double" : require double quotes + "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks) + "unused" : false, // true: Require all defined variables be used + "strict" : false, // true: Requires all functions run in ES5 Strict Mode + "trailing" : true, // true: Prohibit trailing whitespaces + "maxparams" : false, // {int} Max number of formal params allowed per function + "maxdepth" : false, // {int} Max depth of nested blocks (within functions) + "maxstatements" : false, // {int} Max number statements per function + "maxcomplexity" : false, // {int} Max cyclomatic complexity per function + "maxlen" : false, // {int} Max number of characters per line + + // Relaxing + "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) + "boss" : false, // true: Tolerate assignments where comparisons would be expected + "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. + "eqnull" : false, // true: Tolerate use of `== null` + "esnext" : true, // true: Allow ES.next (ES6) syntax (ex: `const`) + "moz" : true, // true: Allow Mozilla specific syntax (extends and overrides esnext features) + // (ex: `for each`, multiple try/catch, function expression…) + "evil" : false, // true: Tolerate use of `eval` and `new Function()` + "expr" : false, // true: Tolerate `ExpressionStatement` as Programs + "funcscope" : false, // true: Tolerate defining variables inside control statements" + "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') + "iterator" : false, // true: Tolerate using the `__iterator__` property + "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block + "laxbreak" : true, // true: Tolerate possibly unsafe line breakings + "laxcomma" : false, // true: Tolerate comma-first style coding + "loopfunc" : false, // true: Tolerate functions being defined in loops + "multistr" : true, // true: Tolerate multi-line strings + "proto" : false, // true: Tolerate using the `__proto__` property + "scripturl" : false, // true: Tolerate script-targeted URLs + "smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment + "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;` + "sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation + "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;` + "validthis" : false, // true: Tolerate using this in a non-constructor function + + // Environments + "browser" : false, // Web Browser (window, document, etc) + "couch" : false, // CouchDB + "devel" : false, // Development/debugging (alert, confirm, etc) + "dojo" : false, // Dojo Toolkit + "jquery" : false, // jQuery + "mootools" : false, // MooTools + "node" : false, // Node.js + "nonstandard" : false, // Widely adopted globals (escape, unescape, etc) + "prototypejs" : false, // Prototype and Scriptaculous + "rhino" : false, // Rhino + "worker" : false, // Web Workers + "wsh" : false, // Windows Scripting Host + "yui" : false, // Yahoo User Interface + + // Legacy + "nomen" : false, // true: Prohibit dangling `_` in variables + "onevar" : false, // true: Allow only one `var` statement per function + "passfail" : false, // true: Stop on first error + "white" : false, // true: Check against strict whitespace and indentation rules + + // Custom Globals + "predef" : [ "log", "logError", "print", "printerr", "imports", "ARGV", "pkg", "_", "C_", "N_" ] +} diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..7ef090d5 --- /dev/null +++ b/COPYING @@ -0,0 +1,828 @@ +The source code of Gnome Maps is licensed to you under the GNU +General Public License version 2, or (at your option) any later version. + +======================================================================== + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + +================================================================================ + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..b587d2e4 --- /dev/null +++ b/NEWS @@ -0,0 +1,3412 @@ +3.36.2 - Apr 25, 2020 +========================= + +Changes since 3.36.1 + - Don't reset query points when routing fails (e.g. no public transit provider + is available) to allow switching mode with the same query + - Fix a bug not displaying tiles south of the equator when using --local + - Allow entering DMS coordinates without comma between latitude and logitude + parts + +Added/updated/fixed translations + - Korean + - Slovenian + - Chinese (Taiwan) + +All contributors to this release +Cheng-Chia Tseng +Jeeyong Um +Marcus Lundblad +Matej Urbančič + +3.36.1 - Mar 28, 2020 +========================= + +Changes since 3.36.0 + - Updated POI definitions for OpenStreetMap editing + - Fixed link to sign up for an OpenStreetMap account + - Removed ctrl+f1 shortcut from the help overlay, since this was removed from + GTK + +Added/updated/fixed translations + - German + - Ukranian + - Serbian + - Norwegian bokmål + - Catalan + - Greek + +All contributors to this release +Christian Kirbach +Daniel Korostil +Efstathios Iosifidis +James Westman +Jonathan Brielmaier +Jordi Mas +Kjartan Maraas +Marcus Lundblad +Sabri Ünal +Марко Костић + +3.36.0 - Mar 7, 2020 +========================= + +Added/updated/fixed translations + - Catalan + - Dutch + - Punjabi + - Italian + - Korean + - Polish + +All contributors to this release +Aman Alam +Gianvito Cavasoli +Jeeyong Um +Jordi Mas +Nathan Follens +Piotr Drąg + +3.35.92 - Feb 29, 2020 +========================= + +Added/updated/fixed translations + - Greek + - Chinese (Taiwan) + - Danish + - Persian + - Hungarian + - Basque + +All contributors to this release +Alan Mortensen +Asier Sarasua Garmendia +Balázs Meskó +Chao-Hsiung Liao +Danial Behzadi +Efstathios Iosifidis +Marcus Lundblad + +3.35.91 - Feb 15, 2020 +========================= + +Changes since 3.35.90 + - Add additional category code for busses in the Opendata.ch plugin + +Added/updated/fixed translations + - Turkish + - Brazilian Portuguese + - Galician + - Czech + - Finnish + - Swedish + - French + - Persian + - Lithuanian + - Croatian + - British English + - Indonesian + +All contributors to this release +Anders Jonsson +Aurimas Černius +Claude Paroz +Danial Behzadi +Fran Dieguez +Goran Vidović +Jiri Grönroos +Kukuh Syafaat +Marcus Lundblad +Marek Černocký +Rafael Fontenelle +Sabri Ünal +Zander Brown + +3.35.90 - Jan 31, 2020 +========================= + +Changes since 3.35.3 + - Move “Export as Image” to the hamburger menu + - Restructure context menu items for routing to allow changing start and + destination points without resetting the query from the sidebar + - Allow more width for the favourites popover and search result popovers + in the routing sidebar to better avoid clipping longer place names + +Added/updated/fixed translations + - Spanish + - Finnish + - Malay + - Friulian + - Slovak + - Indonesian + - Greek + +All contributors to this release +Daniel Mustieles +Dušan Kazik +Efstathios Iosifidis +Fabio Tomat +Jiri Grönroos +Kukuh Syafaat +Marcus Lundblad +Rafael Fontenelle +Umarzuki Bin Mochlis Moktar +Yi-Jyun Pan + +3.35.3 - Jan 4, 2020 +========================= + +Changes since 3.35.3 + - Avoid flickering when animating user location marker + +Added/updated/fixed translations + - Spanish + - Galician + - Brazilian Portuguese + - Esperanto + - Friulian + +All contributors to this release +Andre Klapper +Daniel Mustieles +dvijaywargiya +Fabio Tomat +Fran Dieguez +James Westman +Kristjan SCHMIDT +Rafael Fontenelle + +3.35.2 - Nov 23, 2019 +========================= + +Changes since 3.35.1 + - Added public transit routing plugins for Resrobot (national Swedish transit + API) and opendata.ch (for Switzerland) + - Avoid "overflowing" the sidebar when a public transit itinerary has a large + number of parts (legs) by ellipsizing in the middle when showing them in the + journeys overview + - Add command line option to always consider being online (--force-online) as + a work-around for certain VPN and proxy networks not playing well with + NetworkManager + - Set User-Agent HTTP header in places where it was missing + +Added/updated/fixed translations + - Friulian + - Indonesian + - Spanish + - Czech + - Basque + - Persian + +All contributors to this release +Andika Triwidada +Asier Sarasua Garmendia +Danial Behzadi +Daniel Mustieles +Fabio Tomat +Marcus Lundblad +Marek Černocký + +3.35.1 - Oct 12, 2019 +========================= + +Changes since 3.34.0 + - Initial support for public trasit routing/journey planning using third-party + service providers + - Add nightly app icon (currently not installed, awaiting support for dual + installations) + - Update default tile size when using local tiles + +Added/updated/fixed translations + - Spanish + - Danish + - Slovak + - Dutch + - Friulian + - Italian + +All contributors to this release +Ask Hjorth Larsen +Daniel Mustieles +Dušan Kazik +Fabio Tomat +Gianvito Cavasoli +Jakub Steiner +Marcus Lundblad +Nathan Follens + +3.34.0 - Sep 9, 2019 +========================= + +Added/updated/fixed translations + - Korean + - Brazilian Portuguese + - Croatian + - Greek + +All contributors to this release +Efstathios Iosifidis +Goran Vidović +Rafael Fontenelle +Seong-ho Cho + +3.33.92 - Sep 2, 2019 +========================= + +Changes since 3.33.91 + - Update OSM POI types + - Fix performance issue when there's lots of location updates + +Added/updated/fixed translations + - Czech + - French + - Danish + - Turkish + - British English + - Serbian + - Catalan + - Galician + - Hungarian + - Slovenian + - Latvian + - German + - Polish + - Lithuanian + +All contributors to this release +Ahmet Elgün +Ask Hjorth Larsen +Aurimas Černius +Balázs Úr +Charles Monzat +Daniel Rusek +Fran Dieguez +Jordi Mas +Marcus Lundblad +Marek Černocký +Matej Urbančič +Piotr Drąg +Rūdolfs Mazurs +Tim Sabsch +Valentin Blot <14005-vblot@users.noreply.gitlab.gnome.org> +Zander Brown +Марко Костић + +3.33.91 - Aug 19, 2019 +========================= + +Added/updated/fixed translations + - Swedish + - Catalan + - Finnish + - Basque + - Indonesian + - Esperanto + +All contributors to this release +Anders Jonsson +Asier Sarasua Garmendia +Jiri Grönroos +Jordi Mas +Kristjan SCHMIDT +Kukuh Syafaat +Marcus Lundblad + +3.33.90 - Aug 5, 2019 +========================= + +Changes since 3.33.90 + - Fix bug going back to already selected place from the search result list + - Start immediatly at the last viewed location when app was closed last + - Remember the map type (street or aerial) from when the app was closed last + +Added/updated/fixed translations + - Karbi + - Romanian + - Spanish + - Friulian + - Basque + - Brazilian Portuguese + - Croatian + +All contributors to this release +Asier Sarasua Garmendia +Daniel Mustieles +Daniel Șerbănescu +Fabio Tomat +Goran Vidović +James Westman +Jor Teron +Marcus Lundblad +Rafael Fontenelle + +3.33.4 - Jul 15, 2019 +========================= + +Changes since 3.33.3 + - Handle opening OpenStreetMap URLs pointing to either an object or bare + coordinates by pasting it into the search entry and also as a program + argument, in the same manner as with geo: URIs + +Added/updated/fixed translations + - Indonesian + - Icelandic + - Slovenian + - Friulian + - Swedish + - Croatian + - Spanish + - Dutch + +All contibutors to this release +Anders Jonsson +Daniel Mustieles +Fabio Tomat +Goran Vidović +Kukuh Syafaat +Marcus Lundblad +Matej Urbančič +Nathan Follens +Sveinn í Felli + +3.33.3 - Jun 17, 2019 +========================= + +Changes since 3.33.2 + - Auto-complete searches ("search-as-you-type") using GraphHopper geocoder / + Photon + - Redesigned Send to-dialog with ability to copy and send locations in e-mails + and better integration with Weather and Clocks + - Show clockwise roundabout icons for turn-by-turn routing in + left-hand traffic countries and territories + - Update appdata screenshots with tile style + - Fix a crash when there's many contacts with addresses in an Evolution + address book + +Added/updated/fixed translations + - Indonesian + - Greek + - Spanish + - Hungarian + +All contributors to this release +Balázs Úr +Daniel Mustieles +Efstathios Iosifidis +James Westman +Kukuh Syafaat +Marcus Lundblad + +3.33.2 - May 20, 2019 +========================= + +Changes since 3.33.1 + - Accept additional formats when entering raw coordinates in the search entry + (decimal lat/lon degrees format with literal ° symbol, and degrees, minutes, + second format) + +Added/updated/fixed translations + - Chineses (China) + - Indonesian + - Spanish + +All contributors to this release +Daniel Mustieles +Dz Chen +Kukuh Syafaat +Marcus Lundblad +Will Burklund + +3.33.1 - Apr 22, 2019 +========================= + +Changes since 3.32.0 + - Stop using GtkOffscreenWindow (prerequisite for eventually porting to GTK 4) + - Fix printing dialog not closing in some circumstances + - Add some missing appstream metadata + - Add tests validating appdata and desktop files + - Remove some unnessesary instructions in turn-by-turn route searches + +Added/updated/fixed translations + - Friulian + - Danish + - Croatian + +All contributors to this release +Andreas Nilsson +Ask Hjorth Larsen +Fabio Tomat +Goran Vidović +James Westman +Kalev Lember +Marcus Lundblad +Niels De Graef + +3.32.0 - Mar 11, 2019 +========================= + +Changes since 3.31.92 + - Translation updates + +Added/updated/fixed translations + - Esperanto + - Basque + +All contributors to this release +Asier Sarasua Garmendia +Kristjan SCHMIDT + +3.31.92 - Mar 4, 2019 +========================= + +Changes since 3.31.91 + - Updated appdata screenshots (shown in i.e. GNOME Software) + - Fix displaying the proper application name in i.e. the gnome-shell overview + and the top bar menu since a regression earlier in the 3.31.x cycle + - Update POI type defintions and translations for OSM editing + +Added/updated/fixed translations + - Latvian + - Vietnamese + - German + - Serbian + - Italian + - Russian + - Brazilian Portuguese + - Korean + - Lithuanian + - Dutch + - Icelandic + +All contributors to this release +Aurimas Černius +Gianvito Cavasoli +James Westman +Jeeyong Um +Marcus Lundblad +Nathan Follens +Rafael Fontenelle +Rūdolfs Mazurs +Stas Solovey +Sveinn í Felli +Tim Sabsch +Trần Ngọc Quân +Марко Костић + +3.31.91 - Feb 18, 2019 +========================= + +Changes since 3.31.90 + - Fix array parsing error when loading shape layers + when running with newer GJS + +Added/updated/fixed translations + - Chinese (Taiwan) + - Greek + - Kazakh + - Danish + - Catalan + - Polish + - Czech + +All contributors to this release +Alan Mortensen +Baurzhan Muftakhidinov +Efstathios Iosifidis +Jordi Mas +Marcus Lundblad +Marek Cernocky +Piotr Drąg +Yi-Jyun Pan + +3.31.90 - Feb 4, 2019 +========================= + +Changes since 3.31.4 + - Show live-updated thumbnails for the street/aerial layer switcher, + instead of (outdated) hard-code thumbnails + - Fix a bug where the scrollbar in the favorites popover didn't show up + +Added/updated/fixed translations + - Finnish + - Friulian + - French + - Turkish + - Indonesian + - Romanian + - Galician + - Hungarian + - Slovenian + - Swedish + - Spanish + +All contributors to this release +Anders Jonsson +Balázs Úr +Claude Paroz +Daniel Mustieles +Daniel Șerbănescu +Fabio Tomat +Fran Dieguez +James Westman +Jiri Grönroos +Kukuh Syafaat +Marcus Lundblad +Matej Urbančič +Sabri Ünal + +3.31.4 - Jan 7, 2019 +========================= + +Changes since 3.31.3 + - Fix keyboard shortcut for quitting that was broken since + the application menu was moved to the headerbar + - Update GJS build dependency + +Added/updated/fixed translations + - Turkish + - Swedish + - Friulian + - Greek + +All contributors to this release +Anders Jonsson +Efstathios Iosifidis +Fabio Tomat +Marcus Lundblad +Sabri Ünal + +3.31.3 - Dec 10, 2018 +========================= + +Changes since 3.31.2 + - Fix loading contact's adresses with newer GJS + - Fix some array-related GJS deprecation warnings + +Added/updated/fixed translations + - Spanish + +All contributors to this release +Daniel Mustieles +Jakub Steiner +James Westman +Marcus Lundblad + +3.31.2 - Nov 12, 2018 +========================= + +Changes since 3.31.1 + - Move app menu to the headerbar + - Fix a crash that occured sometimes when activating "What's here?" from + the context menu + - Fix compiler warnings + +Added/updated/fixed translations + - Esperanto + - French + - Slovak + - Malayalam + - Slovenian + - Czech + +All contributors to this release +Anish Sheela +Carmen Bianca BAKKER +Charles Monzat +Debarshi Ray +Dušan Kazik +Marcus Lundblad +Marek Cernocky +Matej Urbančič +Piotr Drąg + +3.31.1 - Oct 8, 2018 +========================= + +Changes since 3.30.0 + - Updated application icon + - Start all way zoomed out on first run + - Fix shape layer file chooser not showing up + +Added/updated/fixed translations + - Serbian + - Russian + +All contributors to this release +FlyingPiMonster +Jakub Steiner +Marcus Lundblad +Stas Solovey +Марко Костић + +3.30.0 - Sep 3, 2018 +========================= + +Added/updated/fixed translations + - Danish + - Croatian + - Latvian + - Hungarian + - Vietnamese + - Italian + - Galician + - Korean + +All contributors to this release +Ask Hjorth Larsen +Balázs Meskó +Fran Dieguez +Gianvito Cavasoli +gogo +Rūdolfs Mazurs +Seong-ho Cho +Trần Ngọc Quân + +3.29.92 - Aug 27, 2018 +========================= + +Changes since 3.29.91 + - Updated POI definitions and translations for OSM editing + +Added/updated/fixed translations + - Indonesian + - Finnish + - Kazakh + - Icelandic + - Czech + +All contributors to this release +Baurzhan Muftakhidinov +Jiri Grönroos +Kukuh Syafaat +Marcus Lundblad +Marek Cernocky +Sveinn í Felli + +3.29.91 - Aug 13, 2018 +========================= + +Changes since 3.29.90 + - Don't spin up CI environments for master and tags + +Added/updated/fixed translations + - Turkish + - Lithuanian + - Swedish + - French + - German + - Polish + - Slovenian + +All contributors to this release +Anders Jonsson +Aurimas Černius +Claude Paroz +Emin Tufan Çetin +Jordan Petridis +Mario Blättermann +Matej Urbančič +Piotr Drąg + +3.29.90 - Jul 30, 2018 +========================= + +Changes since 3.29.4 + - Add a Flatpak CI build/test job + +Added/updated/fixed translations + - French + +All contributors to this release +Charles Monzat +Jordan Petridis +Marcus Lundblad + +3.29.4 - Jul 16, 2018 +========================= + +Changes since 3.29.3 + - Use g_application_mark_busy() instead of the home-brewed busy marker + - Limit the number of via points in routing queries to 10 to avoid hitting + a limit in GraphHopper and also to better fit the UI + - Various Flatpak updates + +Added/updated/fixed translations + - Brazilian Portuguese + - Catalan + - Romanian + - Friulian + - Greek + - Chinese (Taiwan) + - Spanish + +All contributors to this release +Alberto Fanjul +Bruno Lopes da Silva +Daniel Mustieles +Daniel Șerbănescu +Efstathios Iosifidis +Fabio Tomat +Marcus Lundblad +Pere Orga +Vinayak Aggarwal +Yi-Jyun Pan + +3.29.3 - Jun 19, 2018 +========================= + +Changes since 3.29.1 + - Stop using notifications on top of the map view as it doesn't + work on Wayland + - Add OARS tags + +Added/updated/fixed translations + - Chinese (Taiwan) + - Occitan + - Brazilian Portuguese + - Chinese (China) + +All contributors to this release: +Cédric Valmary +Enrico Nicoletto +Marcus Lundblad +Mingcong Bai +nick richards +Yi-Jyun Pan + +3.29.2 - May 21, 2018 +========================= + +Added/updated/fixed translations + - Chinese (China) + - Swedish + - Romanian + - Indonesian + - Italian + - Spanish + - Slovenian + - Greek + - Friulian + - Turkish + +All contributors to this release: +Anders Jonsson +Daniel Mustieles +Daniel Șerbănescu +Efstathios Iosifidis +Fabio Tomat +Kukuh Syafaat +Mandy Wang +Marcus Lundblad +Matej Urbančič +Milo Casagrande +Muhammet Kara + +3.29.1 - Apr 16, 2018 +========================= + +Changes since 3.28.0 + - Switch to build with Meson (also dropped support for building with + Autotools) + - Disable UI for switching between street and aerial view if the service + definition lacks aerial tile definitions (allows using a tile server not + supplying aerial tiles) + - Enable selecting map markers using touch + +Added/updated/fixed translations + - Croatian + - German + - Hungarian + - Czech + - Latvian + - Lithuanian + - Serbian + - Dutch + - Slovenian + - Croatian + - Swedish + - Brazilian Portuguese + - Indonesian + - French + - Polish + - Romanian + - Russian + +All contributors to this release: +Anders Jonsson +Andika Triwidada +Aurimas Černius +Balázs Meskó +Charles Monzat +Daniel Șerbănescu +gogo +Justin van Steijn +Marcus Lundblad +Marek Cernocky +Mario Blättermann +Matej Urbančič +Piotr Drąg +Rafael Fontenelle +Rūdolfs Mazurs +Stas Solovey +Марко Костић + +3.28.0 - Mar 12, 2018 +========================= + +Changes since 3.27.92 + - Change license of two files to GPL 2 or later (as was the original + intension and what the project as a whole is using) + +Added/updated/fixed translations + - Swedish + - Serbian (latin) + - Serbian + - Italian + - Greek + - Danish + +All contributors to this release: +Anders Jonsson +Ask Hjorth Larsen +Efstathios Iosifidis +Gianvito Cavasoli +Marcus Lundblad +Марко Костић +Милош Поповић + +3.27.92 - Mar 5, 2018 +========================= + +Changes since 3.27.90 + - Updated POI definitions for OpenStreetMap editing + - Fix a segmentation fault at exit + - Fix missing generated files and third-party licenses in the distributed + release archive + - Fix layout of shortcuts help overlay to better fit smaller screens + +Added/updated/fixed translations + - Lithuanian + - Kazakh + - Scottish Gaelic + - Vietnamese + - Slovak + - Korean + - Latvian + - Finnish + - Dutch + - Turkish + - Czech + - Croatian + - Galician + - Brazilian Portuguese + - French + - Polish + +All contributors to this release: +Alain Lojewski +Aurimas Černius +Baurzhan Muftakhidinov +Dušan Kazik +Emin Tufan Çetin +Fran Dieguez +Furkan Ahmet Kara +Gun Chleoc +gogo +Jiri Grönroos +Kwangseob Jeong +Marcus Lundblad +Marek Cernocky +Mattias Bengtsson +Piotr Drąg +Rafael Fontenelle +Rūdolfs Mazurs +Simon McVittie +Trần Ngọc Quân + +3.27.90 - Feb 5, 2018 +========================= + +Changes since 3.27.90 + - Use moder JS features (ES6), classes (with GObject.registerClass()) + and arrow notation (=> () ) for binding anonymous functions + - Change default line with and color for layer lines in loaded layers to make + them more visible + - Don't select text in place entries in the routing sidebar when auto-completing + - Bugfixes for keyboard navigation in search entry completion popover + - Add additional tooltips for buttons in the routing sidebar + - Decrease height of OSM login dialog + +Added/updated/fixed translations + - Friulian + - Catalan + - Indonesian + - German + - Spanish + - Hungarian + - Finnish + +All contributors to this release: +Balázs Meskó +Balázs Úr +Daniel Mustieles +Fabio Tomat +Gil Forcada +Jiri Grönroos +Jordi Mas +Kukuh Syafaat +Marcus Lundblad +Tim Sabsch +Tomasz Miąsko +Vibhanshu Vaibhav + +3.27.4 - Jan 8, 2018 +========================= + +Changes since 3.27.3 + - Show thumnails from Wikipedia in the place bubbles when availability + - Make the place bubble popovers follow the map when the view scrolls (i.e. + when using the keyboard shortcuts to scroll) + - Move the zoom control buttons to the headerbar to mitigate an issue with + Clutter and overlay GTK+ widgets on Wayland + - Adapt libgweather dependency to use gitlab.gnome.org for building Flatpaks + +Added/updated/fixed translations + - German + - Serbian + - Swedish + - Esperanto + - Turkish + - Czech + - Spanish + - Friulian + +All contributors to this release: +Anders Jonsson +Andreas Nilsson +Daniel Mustieles +Emin Tufan Çetin +Fabio Tomat +Kristjan SCHMIDT +Marcus Lundblad +Marek Černocký +Mario Blättermann +Марко Костић + +3.27.3 - Dec 11, 2017 +========================= + +Changes since 3.27.3 + - Show tile provider and OSM attribution in the About dialog + - Install appstream metadata to non-deprecated location + - Update Flatpak manifest to build libgweather with Meson + +Added/updated/fixed translations + - Icelandic + - Indonesian + - Czech + +All contributors to this release: +Jeremy Bicha +Kukuh Syafaat +Marcus Lundblad +Marek Cernocky +Sveinn í Felli + +3.27.2 - Nov 13, 2017 +========================= + +Changes since 3.27.1 + - Fix Maps to be available as an option for "Open with another application" + for geo shape layer files + - Fix JS warnings about redundant function arguments and similar things + +Added/updated/fixed translations + - Norwegian bokmål + - Hindi + - Croatian + - Friulian + - Czech + - Slovak + - German + +All contributors to this release: +Dušan Kazik +Dylan McCall +Fabio Tomat +gogo +Kjartan Maraas +Marcus Lundblad +Marek Cernocky +Mario Blättermann +Solomon Nadar + +3.27.1 - Oct 16, 2017 +========================= + +Changes since 3.26.0 + - Use sidebar icon style for icons in the routing results + - Improve the look of route labels for public transit trips when using the + dark theme + - Add --version command line option + - Fix network detection when running as a Flatpak + - Update appdata screenshots + - Show stored routes according to locale direction + - Avoid a GTK+ warning on startup + - Export symbols from modules using var instead of const to comply with ES6 + and avoid a warning on newer GJS versions + +Added/updated/fixed translations + - Polish + - Icelandic + - Arabic + - Greek + +All contributors to this release: +Anup Agarwal <108anup@gmail.com> +Efstathios Iosifidis +Khaled Hosny +Marcus Lundblad +Piotr Drąg +Sveinn í Felli +Xavi Ivars + +3.26.0 - Sep 11, 2017 +========================= + +Added/updated/fixed translations: + - Basque + - Catalan + - Swedish + - Italian + - Danish + - Brittish English + - Dutch + +All contributors to this release: +Anders Jonsson +Ask Hjorth Larsen +Bruce Cowan +Gianvito Cavasoli +hanniedu +Inaki Larranaga Murgoitio +Jordi Mas + +3.25.92 - Sep 4, 2017 +========================= + +Changes since 3.25.91 + - Don't focus the search entry on start (prevents showing the on-screen + keyboard at start on touch devices) + - Make OSM edit and export image dialogs modal (fixes positioning on Wayland) + - Update OSM POI definitions and translations + +Added/updated/fixed translations: + - Slovak + - Korean + - Vietnamese + - Finnish + - Serbian (latin) + - Serbian + - Latvian + - Chinese (Taiwan) + - Danish + - Russian + - French + - Brazilian Portuguese + - Lithuanian + +All contributors to this release: +Ask Hjorth Larsen +Aurimas Černius +Cheng-Chia Tseng +Claude Paroz +Dušan Kazik +Jamerson Albuquerque Tiossi +Jiri Grönroos +Marcus Lundblad +Rūdolfs Mazurs +Seong-ho Cho +Trần Ngọc Quân +Yuri Myasoedov +Марко Костић +Милош Поповић + +3.25.91 - Aug 21, 2017 +========================= + +Changes since 3.25.90 + - Fix loading layer files when running as Flatpak + - Don't allow adding more than one instance of address on OSM objects + +Added/updated/fixed translations: + - Indonesian + - Galician + - Turkish + - Nepali + - Polish + +All contributors to this release: +Çağatay Yiğit Şahin +Fran Dieguez +Kukuh Syafaat +Marcus Lundblad +Pawan Chitrakar +Piotr Drąg + +3.25.90 - Aug 7, 2017 +========================= + +Changes since 3.25.4 + - Allow viewing and editing OSM editor notes when editing objects + +Added/updated/fixed translations: + - Slovenian + - Friulian + - Spanish + - Kazakh + - Croatian + - German + - Catalan + - Czech + - Hungarian + +All contributors to this release: +Balázs Meskó +Baurzhan Muftakhidinov +Daniel Mustieles +Fabio Tomat +gogo +Jordi Mas +Marcus Lundblad +Marek Cernocky +Mario Blättermann +Matej Urbančič +Piotr Drąg +Robert Ancell + +3.25.4 - Jul 20, 2017 +========================= + +Changes since 3.25.3 + - Show feedback when no search results were found + - Update Flatpak manifest for build changes in geocode-glib + - Various bugfixes + +Added/updated/fixed translations: + - Friulian + - Hungarian + - Spanish + - Kazakh + - German + - Catalan + - Indonesian + - Slovak + +All contributors to this release: +Balázs Meskó +Baurzhan Muftakhidinov +Daniel Mustieles +Dušan Kazik +Elias Entrup +Fabio Tomat +Hashem Nasarat +Jordi Mas +Kukuh Syafaat +Marcus Lundblad +Nayan Deshmukh +Piotr Drąg +Robert Ancell +Wolfgang Stöggl +Zeeshan Ali + +3.25.3 - Jun 19, 2017 +========================= + +Changes since 3.25.2 + - Added keyboard shortcuts for switching between street and aerial view + - Added keyboard shortcut for opening layer files + - Remember the last used mode of transportation for routing (also now default + to walking on first run) + - For transit results, don't reset previous list when no later or earlier + alternatives are found + - Also print coordinates in debug printout from GeoClue + - Show and support editing for additional OpenStreetMap tags (religion and + information on availability of toilets) + +Added/updated/fixed translations: + - Friulian + - German + - Spanish + - Indonesian + - Polish + - Hungarian + - Kazakh + - Lithuanian + +All contributors to this release: +Aurimas Černius +Balázs Meskó +Baurzhan Muftakhidinov +Daniel Mustieles +Debarshi Ray +Fabio Tomat +Kukuh Syafaat +Marcus Lundblad +Mario Blättermann +Piotr Drąg +Robert Ancell +Valentin Blot + +3.25.2 - May 22, 2017 +========================= + +Changes since 3.25.2 + - Fix OpenStreetMap editing in Flatpaks (update librest build dependency) + - Use localized format when showing distances + +Added/updated/fixed translations: + - Arabic + - Catalan + - Slovenian + +All contributors to this release: +Jordi Mas +Khaled Hosny +Marcus Lundblad +Matej Urbančič + +3.25.1 - Apr 24, 2017 +========================= + +Changes since 3.25.1: + - Fix JSON formatting for Flatpak manifest + +All contributors to this release: +Marcus Lundblad + +3.24.1 - Apr 10, 2017 +========================= + +Changes since 3.24.0: + - Fix rendering of compacted route labels for transit routing + - Don't show the “Next” button when selecting POI types when editing + OpenStreetMap objects + - Use HTTPS Wikipedia links + +Added/updated/fixed translations: + - Croatian + - Greek + - Polish + - Norwegian bokmål + +All contributors to this release: +gogo +Kjartan Maraas +Marcus Lundblad +Piotr Drąg +RyuzakiKK +Tom Tryfonidis + +3.24.0 - Mar 20, 2017 +========================= + +Changes since 3.23.92: + - Fix running when gnome-online-accounts isn't available. + +Added/updated/fixed translations: + - Russian + - Turkish + - Slovak + - Latvian + - Italian + - Japanese + +All contributors to this release: +Dušan Kazik +Gianvito Cavasoli +Marcus Lundblad +Osman Karagöz +Rūdolfs Mazurs +sujiniku +Yuri Myasoedov + +3.23.92 - Mar 13, 2017 +========================= + +Changes since 3.23.91: + - Fix rendering Wikipedia links to articles containing a colon. + - Updated OpenStreetMap POI definitions for editing. + - Handle application/geo+json mime type for GeoJSON layer files. + +Added/updated/fixed translations: + - Finnish + - Swedish + - Chinese (Taiwan) + - Icelandic + - Danish + - Slovenian + - Basque + - Korean + - Lithuanian + - German + - Catalan + - Indonesian + - Scottish Gaelic + - Czech + - Slovak + - Serbian + +All contributors to this release: +Anders Jonsson +Ask Hjorth Larsen +Aurimas Černius +Chao-Hsiung Liao +Cheng-Chia Tseng +GunChleoc +Inaki Larranaga Murgoitio +Jiri Grönroos +Jordi Mas +Kukuh Syafaat +Marcus Lundblad +Marek Cernocky +Mario Blättermann +Matej Urbančič +Seong-ho Cho +Sveinn í Felli +Марко М. Костић + +3.23.91 - Feb 27, 2017 +========================= + +Changes since 3.23.90: + - Support for public transit routing (enabled when service definition contains + a URL for an OpenTripPlanner server, or by debug environment variable). + - Add a button to reverse a route. + - Stop using "for in" loops to traverse arrays. + - Fixes for ES6 (GJS 1.48). + +Added/updated/fixed translations: + - Kazakh + - Danish + - Spanish + - German + - Slovak + - Norwegian bokmål + - Finnish + - Polish + - Basque + - Friulian + - Brazilian Portuguese + - Ukrainian + - Galician + - Serbian + - Hungarian + - French + +All contributors to this release: +Anders Jonsson +Andreas Nilsson +Ask Hjorth Larsen +Balázs Meskó +Baurzhan Muftakhidinov +Claude Paroz +Daniel Korostil +Daniel Mustieles +Dušan Kazik +Fabio Tomat +Fran Dieguez +Inaki Larranaga Murgoitio +Jiri Grönroos +Kjartan Maraas +Marcus Lundblad +Mario Blättermann +Mattias Bengtsson +Philip Chimento +Piotr Drąg +Rafael Fontenelle +Мирослав Николић + +3.23.90 - Feb 13, 2017 +========================= + +Added/updated/fixed translations: + - Slovak + - Chinese (China) + - Indonesian + +All contributors to this release: +Dingzhong Chen +Dušan Kazik +Kukuh Syafaat +Marcus Lundblad + +3.23.4 - Jan 16, 2017 +========================= + +Changes since 3.23.4: + - Removed usage of deprecated gtk_menu_popup() function. + +Added/updated/fixed translations: + - Finnish + - Spanish + +All contributors to this release: +Daniel Mustieles +Jiri Grönroos +Marcus Lundblad + +3.23.3 - Dec 12, 2016 +========================= + +Changes since 3.23.2: + - Enable easy building as a flatpak from within GNOME Builder. + +Added/updated/fixed translations: + - Russian + - Kazakh + - Swedish + - Hungarian + +All contributors to this release: +Anders Jonsson +Baurzhan Muftakhidinov +Christian Hergert +Gábor Kelemen +Marcus Lundblad +Stas Solovey + +3.23.2 - Nov 21, 2016 +========================= + +Changes since 3.23.1: + - Use Unicode in translatable strings + +Added/updated/fixed translations: + - Friulian + - Czech + - Hungarian + - German + - Polish + +All contributors to this release: +Balázs Meskó +Fabio Tomat +Marek Černocký +Paul Seyfert +Piotr Drąg + +3.23.1 - Oct 24, 2016 +========================= + +Changes since 3.22.1: + - Fixed a typo and a formatting issue + - Handle a plain 00:00-24:00 opening hour + specification as being "always open" for POIs + +Added/updated/fixed translations: + - Norwegian bokmål + +All contributors to this release: +Kjartan Maraas +Marcus Lundblad + +3.22.1 - Oct 10, 2016 +========================= + +Added/updated/fixed translations: + - Basque + +All contributors to this release: +Inaki Larranaga Murgoitio + +3.22.0 - Sep 18, 2016 +========================= + +Added/updated/fixed translations: + - Persian + - Italian + - Scottish Gaelic + - Ukrainian + +All contributors to this release: +Arash Mousavi +Daniel Korostil +Gianvito Cavasoli +GunChleoc + +3.21.92 - Sep 12, 2016 +========================= + +Changes since 3.21.91: + - Added = accelerator for zoom-in + - Fix rendering of website links containing HTML markup characters + - Updated/added POI definitions for OpenStreetMap editing + +Added/updated/fixed translations: + - Greek + - Danish + - Polish + - Galician + - Latvian + - Vietnamese + - Lithuanian + - Kazakh + - Korean + +All contributors to this release: +Ask Hjorth Larsen +Aurimas Černius +Baurzhan Muftakhidinov +Fran Dieguez +Marcus Lundblad +Piotr Drąg +Razvan Brinzea +Rūdolfs Mazurs +Seong-ho Cho +Tom Tryfonidis +Trần Ngọc Quân + +3.21.91 - Aug 29, 2016 +========================= + +Changes since 3.21.90: + - Fix bug where you could not type + or - in the searchbar + - Added Amisha, Marcus and Mattias as maintainers in the doap file + +Added/updated/fixed translations: + - French + - Serbian + - Slovenian + - Polish + +All contributors to this release: +Alexandre Franke +Jonas Danielsson +Matej Urbančič +Piotr Drąg +Мирослав Николић + +3.21.90 - Aug 19, 2016 +========================= + +Hello there! + +So we will stop using a redirect from gis.gnome.org to Mapbox tile server. +Instead we will attempt to download a service.json file from gis.gnome.org. +This file will tell us where our third-party services are. Starting with +tile services. This is for two reasons. 1) It is much faster and 2) Mapbox +didn't like the redirect approach. + +Changes since 3.21.4: + +- Download a service.json file to get tile server URI among other things. +- Use GtkClutter for the attribution logo, to get transparency. + +Added/updated/fixed translations: + - Hungarian + - Slovak + - Hebrew + - Czech + - Arabic + - Finnish + - Brazilian Portuguese + - Indonesian + - Brittish English + +All contributors to this release: +Andika Triwidada +Balázs Úr +David King +Dušan Kazik +Gustavo Marques +Jiri Grönroos +Jonas Danielsson +Marek Cernocky +Mattias Bengtsson +Safa Alfulaij +Yosef Or Boczko + +3.21.4 - Jul 30, 2016 +========================= + +Hi! + +This is an important release! With this release we switch from using +the MapQuest open API for fetching tiles. And instead we start using +Mapbox API. Using an community API key from Mapbox. + +Mapbox is a company with a commitment to Open source. And provides +infrastructure that will allow us to do more with Maps. We are accessing +the Mapbox API through a GNOME proxy that will allow us to easier switch +our tile provider/URI in the future. + +Big thanks to Mattias Bengtsson who made this solution happen. + +Thank you, and sorry for our outage. + +Changes since 3.20.1: + +- Change tile URIs to use Mapbox, through proxy +- Fix escaping of tel: URIs +- Adapt colors of instuction when printing routes + +Added/updated/fixed translations: + - Esperanto + - Slovenian + - Occitan + - Polish + - Portuguese + - Turkish + - Catalan + - Norwegian bokmål + - Indonesian + - Punjabi + - Spanish + - Friulian + +All contributors to this release: +Anders Jonsson +Andika Triwidada +A S Alam +Cédric Valmary +Daniel Mustieles +Fabio Tomat +Jonas Danielsson +Jordi Mas +Kjartan Maraas +Kristjan SCHMIDT +Marcus Lundblad +Matej Urbančič +Muhammet Kara +Nayan Deshmukh +Piotr Drąg +Tiago Santos + +3.20.1 - April 11, 2016 +========================= + +Changes since 3.20.0: + +- Bump dependencies on libchamplain and gjs +- Fox memory leak in osmEdit + +Added/updated/fixed translations: + - Ukrainian + - Friulian + - Greek + - Vietnamese + - Persian + - Arabic + +All contributors to this release: +Arash Mousavi +Daniel Korostil +Fabio Tomat +Jonas Danielsson +Jordi Mas +Khaled Hosny +Marcus Lundblad +Tom Tryfonidis +Trần Ngọc Quân + +3.20.0 - March 21, 2016 +========================= + +Changes since 3.20.0: + +- Fix marking of translatable strings + +Added/updated/fixed translations: + - Slovak + - German + - Polish + - Catalan + - Spanish + - Czech + - Hungarian + - Finnish + - Korean + - Kazakh + - Brazilian Portuguese + - Russian + - Lithuanian + - Swedish + - Galician + - Serbian + - Serbian Latin + - French + - Danish + - Greek + +All contributors to this release: +Antonio Fernandes C. Neto +Ask Hjorth Larsen +Aurimas Černius +Balázs Meskó +Baurzhan Muftakhidinov +Bernd Homuth +Claude Paroz +Daniel Mustieles +Dušan Kazik +Fran Dieguez +Gianvito Cavasoli +Inaki Larranaga Murgoitio +Jiri Grönroos +Jordi Mas +Marcus Lundblad +Marek Černocký +Mario Blättermann +Piotr Drąg +Rūdolfs Mazurs +Sebastian Rasmussen +Seong-ho Cho +Stas Solovey +Tom Tryfonidis +Yuri Myasoedov +Марко Костић +Милош Поповић + + +3.19.91 - March 14, 2016 +========================== + +Changes since 3.19.91: +- Rework geoclue interaction +- Ellipsize route instructions in print layout +- Add 'aeroway' type to OSM editting +- Make auto-complete accent insensitive + +Added/updated/fixed translations: + - Slovak + - Brazilian Poruguese + - Galician + - Hebrew + - Spanish + - Korean + - Ukrainian + - Occitan + - Hungarian + - German + - Kazakh + - Latvian + - Finnish + - Friulian + - Serbian + - Lithuanian + - French + +All contributors to this release: +Artur de Aquino Morais +Aurimas Černius +Baurzhan Muftakhidinov +Cédric Valmary +Claude Paroz +Daniel Korostil +Daniel Mustieles +Dušan Kazik +Fabio Tomat +Fran Dieguez +Gábor Kelemen +Jiri Grönroos +Jonas Danielsson +Mario Blättermann +Marius Stanciu +Razvan Brinzea +Rūdolfs Mazurs +Seong-ho Cho +Yosef Or Boczko +Zeeshan Ali (Khattak) +Марко М. Костић + +3.19.91 - March 1, 2016 +========================== + +Changes since 3.19.90: + - Handle case when nothing was found when reverse + geocoding through context menu + - Make sure we validate bounding boxes from geoJSON layer + - Add markers to route when printing + - Add via points to route when printing + - Add ability to add and edit addresses on OpenStreetMap + - Allow Maps to shrink more by not using a fixed width + for the searchbar + - Add tooltip to icon next to route entry to help + discoverbility of drag and drop re-oredering. + +Added/updated/fixed translations: + - Galician + - Dutch + - Polish + - German + - Spanish + - Serbian + - Slovak + - Brazilian Portuguese + - French + - Chinese (Taiwan) + - Czech + - Hingarian + - Catalan + +3.19.90 - February 16, 2016 +========================== + +Changes since 3.19.4: +- Added icon to toggle visibility of a shape layer +- Improve travel animations +- Add a scale ruler to the bottom left corner +- Include less information by default in map bubbles +- Add expandable area on map bubbles +- Add context menu item for adding location to OpenStreetMap +- Enable editting of opening hours on OpenStreetMap +- Add internet access tag to map bubbles +- Add ele altitude tag to map bubbles +- Add website to map bubbles +- Add phone nunber to map bubbles +- Add support for KML and GPX shape files +- Add support for printing a route with instructions + +Added/updated/fixed translations: + - Russian + - Finnish + - Catalan + - German + - Slovak + - Hungarian + - Spanish + - Slovenian + - Latvian + - Polish + - Kazakh + - Chinese (Taiwan) + - Brazilian Portuguese + - Bulgarian + - Serbian + - French + +All contributors to this release: +Alaf Azam +Alexandre Franke +Amisha Singla +Balázs Meskó +Baurzhan Muftakhidinov +Chao-Hsiung Liao +Codreanu Andrei +Cosimo Cecchi +Damián Nohales +Daniel Mustieles +Debarshi Ray +Dušan Kazik +Gábor Kelemen +Hashem Nasarat +Ivailo Panamski +Jiri Grönroos +Jonas Danielsson +Jordi Mas +Marcus Lundblad +Mario Blättermann +Matej Urbančič +Piotr Drąg +Rafael Fontenelle +Richard Hughes +Rūdolfs Mazurs +Stas Solovey +Zeeshan Ali (Khattak) +Мирослав Николић + + +3.19.4 - Januari 18, 2016 +========================== + +First release of the year, and what a release! +We have so many new contributors, it really warms your heart. +And a lot of new stuff added, see below for details! + +Changes since 3.19.3: +- Addded a keybinding help overlay (F1 to activate) +- Fix zoom behaviour to be more aggresive +- Fix bug with cancel login in OpenStreetMap account dialog +- Add keyboard shortcut for going to current location (L) +- Fix layout of OpenStreetMap edit +- Fix bug that made it impossible to sign-in to OpenStreetMap if you + first inputed the wrong credentials +- Fix drag-and-drop to be more acceptive and responsive +- Make sure we can export our markers to PNG +- Give user the choice of exporting markers or not +- Add GUI for loading and managing shape layers such as GeoJSON or + in the future(?) KML +- Add roundabout support to route +- Use a regular GtkButton for marking favorites + +Added/updated/fixed translations: + - Spanish + - Kazakh + - Slovak + - Spanish + - Lithuanian + - Finnish + - Esperanto + - Czech + - German + - Brazilian Portuguese + - Norwegian bokmål + +All contributors to this release +Alaf Azam +Alex Anthony +Amisha Singla +Aurimas Černius +Baurzhan Muftakhidinov +Damián Nohales +Daniel Mustieles +Dušan Kazik +Enrico Nicoletto +Hashem Nasarat +Jiri Grönroos +Jonas Danielsson +Karanbir Chahal +Kjartan Maraas +Kristjan SCHMIDT +Marcus Lundblad +Marek Černocký +Mario Blättermann +Mattias Bengtsson +Prashant Tyagi + + +3.19.3 - December 13, 2015 +========================== + +Changes since 3.19.2: + +- Added export to image to context menu +- Added support for MultiPoint in GeoJSON +- Fixed bug in send-to-dialog when default browser has + no icon +- Added support for MapBox simplestyle for GeoJSON +- Added support for editing locations in OpenStreetMap + +Added/updated/fixed translations: + - Hungarian + - Spanish + - Czech + - Greek + - Poruguese + - Slovak + - Finnish + - Slovenian + +All contributors to this release: +alafazam +Alaf Azam +Balázs Meskó +Daniel Mustieles +Dušan Kazik +Hashem Nasarat +Jiri Grönroos +Jonas Danielsson +Kalev Lember +Marcus Lundblad +Marek Černocký +Martin Srebotnjak +Matej Urbančič +Pedro Albuquerque +Piotr Drąg +Tom Tryfonidis + +3.19.2 - November 23, 2015 +========================== + +- Fix GeoJSON filling of polygons in polygons +- Add simpler keyboard shortcuts for zoom +- Fix width of send-to dialog +- Add open with browser to send-to dialog that will + open a location on OpenStreetMap web +- Handle the 'geo' URI scheme, this will allow + us to handle geu: URIs in for instance the browser or + in Polari +- Go to latest visited view on start up + +Added/updated/fixed translations: + - Czech + - Portuguese + - zh_CN + - Norwegian bokmål + - Spanish + - Turkish + - Finnish + - Lithuanian + - German + +All contributors to this release: +alafazam +Amisha +Aurimas Černius +Benjamin Steinwender +Daniel Mustieles +Jiri Grönroos +Jonas Danielsson +Kjartan Maraas +Marcus Lundblad +Marek Černocký +Mingye Wang (Arthur2e5) +Muhammet Kara +Pedro Albuquerque +Piotr Drąg + + +3.19.1 - October 26, 2015 +====================== + +- Fix bugs in contact address lookup + - No more warnings if address has no street address + - Do not attempt to classify type of address if only one(1) + +- Use new convenience library for GeoClue + +- Add support for opening and displaying GeoJSON files. + - https://en.wikipedia.org/wiki/GeoJSON + - This is with help of the Mapbox geojson-vt javascript code + found at: https://github.com/mapbox/geojson-vt + +- Added/updated/fixed translations: + - Basque + - Slovak + +All contributors to this release: +Dušan Kazik +Inaki Larranaga Murgoitio +Jonas Danielsson +Zeeshan Ali (Khattak) + +Changes since 3.18.1: + +3.18.1 - October 10, 2015 +====================== + +Changes since 3.18.0.1: + +- Fix bugs in zooming to a location or contact +- Fix styling of dialog header buttons +- Added/updated/fixed translations: + - Irish + +All contributors to this release: +Jonas Danielsson +Marcus Lundblad +Seán de Búrca + +3.18.0.1 - September 25, 2015 +====================== + +Changes since 3.18.0: + +- Fix bug that prevented Maps from launching +- Added/updated/fixed translations: + - Danish + - Swedish + - Greek + - Serbian + - Serbian Latin + +All contributors to this release: +Anders Jonsson +Ask Hjorth Larsen +Jonas Danielsson +Tom Tryfonidis +Марко Костић +Милош Поповић + + +3.18.0 - September 20, 2015 +====================== + +Changes since 3.17.92: + +- Added/updated/fixed translations: + - Spanish + - Italian + - Brazilian Portuguese + - Persian + - Korean + - Czech + - Russian + - Hungarian + - Turkish + +All contributors to this release: +Arash Mousavi +Balázs Úr +Claudio Arseni +Daniel Mustieles +Enrico Nicoletto +Marek Černocký +Muhammet Kara +Seong-ho Cho +Stas Solovey + +3.17.92 - September 14, 2015 +====================== + +Changes since 3.17.91: + +- Add --local switch to use local, offline, tiles + from a structured directory + +- Added/updated/fixed translations: + - Polish + - Indonesian + - Hebrew + - Hungarian + - Italian + - Lithuanian + - Kazakh + - Korean + - German + - Turkish + - Norwegian bokmål + - Icelandic + - Slovenian + - Finnish + - Slovak + - French + - Persian + - Japanese + - Portuguese + - Galician + - German + +All contributors to this release: +Andika Triwidada +Arash Mousavi +Aurimas Černius +Balázs Úr +Baurzhan Muftakhidinov +Benjamin Steinwender +Bernd Homuth +Claude Paroz +Claudio Arseni +Dušan Kazik +Fran Dieguez +Hajime Taira +Jiri Grönroos +Jonas Danielsson +Kjartan Maraas +Martin Srebotnjak +Muhammet Kara +Pedro Albuquerque +Piotr Drąg +Seong-ho Cho +Sveinn í Felli +Ting-Wei Lan +Yosef Or Boczko + +3.17.91 - Aaugust 29, 2015 +====================== + +Changes since 3.17.90.1 + +- Fix memory leaks in contacts handling +- Make sure car routes gets correct icon + +- Added/updated/fixed translations: + - Galician + - French + - Portuguese + - Chinese (Taiwan) + - Russian + - Greek + +All contributors to this release: +Alexandre Franke +Chao-Hsiung Liao +Fran Dieguez +Jonas Danielsson +Kalev Lember +Pedro Albuquerque +Tom Tryfonidis +Yuri Myasoedov + +3.17.90.1 - Aaugust 22, 2015 +====================== + +Changes since 3.17.90 + +- Fix up search popup list +- Fix storing of transportation type of route +- Some bugfixes + +- Added/updated/fixed translations: + - Slovak + - Spanish + +All contributors to this release: +Daniel Mustieles +Dušan Kazik +Jonas Danielsson +Zeeshan Ali (Khattak) + +3.17.90 - Aaugust 16, 2015 +====================== + +Changes since 3.17.1 + +- Add new user-location icon +- Add directional user-location icon +- Show heading from Geoclue +- Do not animate on 'what is here?' +- Add support for Geo URI (RFC5870) in searchbar +- Add 'Copy Geo URI' context menu item +- Store and complete against recent routes + +- Added/updated/fixed translations: + - zh_CN + - Aragonese + - Occitan + - Portuguese + - Icelandic + - Catalan + - Friulian + +All contributors to this release +Cédric Valmary +Damián Nohales +Daniel Martinez +Dean Chen +Fabio Tomat +Jakub Steiner +Jonas Danielsson +Jonas Danielsson +Jordi Mas +Marcus Lundblad +Pedro Albuquerque +Piotr Drąg +Sveinn í Felli +Zeeshan Ali (Khattak) + + +3.17.1 - April 29, 2015 +====================== + +Changes since 3.16.1 + +- Switch to template for more UI files +- Do not use intltool to translate GSettings schema +- Improve height of favorites popover + +All contributors to this release: +Jonas Danielsson +Mattias Bengtsson +Emmanuele Bassi + +3.16.1 - April 13, 2015 +======================= + +Changes since 3.16.0 + +- Provide a symbolic variant of the app icon +- Add new appdata screenshots + +- Added/updated/fixed translations: + - Catalan + - Esperanto + - Punjabi + +All contributors to this release: +Andreas Nilsson +A S Alam +Jakub Steiner +Jonas Danielsson +Jordi Mas +Kristjan SCHMIDT +Txus Ordorika + + +3.16.0 - Mar 22, 2015 +======================= + +Changes since 3.15.92 + +- Fix links for Wikipedia + +- Added/updated/fixed translations: + - Tajik + - Serbian + - German + - Indonesian + - Basque + - Italian + +All contributors to this release: +Andika Triwidada +Benjamin Steinwender +Claudio Arseni +Inaki Larranaga Murgoitio +Marcus Lundblad +Victor Ibragimov +Мирослав Николић + +3.15.92 - Mar 16, 2015 +======================= + + +Changes since 3.15.91: +- Use proper location instead of nearest city when sending location + to Weather +- Fix bug with layer ordering that made it impossible to drag routes + under accuracy circle +- Fix Clutter/GTK event re-entrant dead-lock on right click + +- Added/updated/fixed translations: + - Hungarian + - Dutch + - Czech + - Slovenian + - Kazakh + - Polish + - Turkish + - Finnish + - Bosnian + - Danish + - Korean + +All contributors to this release: +Ask Hjorth Larsen +Baurzhan Muftakhidinov +Gábor Kelemen +Giovanni Campagna +hanniedu +Jiri Grönroos +Jonas Danielsson +Marek Černocký +Matej Urbančič +Miguel Vaello Martínez +Muhammet Kara +Paweł Żołnowski +Samir Ribic +Seong-ho Cho + +3.15.91 - Mar 1, 2015 +======================= + +Changes since 3.15.90.2: + +- Fix leak in libmaps geocode +- Only add contacts that properly geocode to a location +- Fix bug that fetched a route twice for each request +- Fix event handling of clutter and GTK+ that lead to deadlock + and freeze when you clicked the map +- Fix being able to mark search results as favorites + +- Added/updated/fixed translations: + - Slovak + - Russian + - Chinese (Taiwan) + - Swedish + - Brazilian Portugese + - Greek + - Ukrainian + - Lithuanian + - Galician + - Hungarian + +All contributors to this release: +Aurimas Černius +Balázs Úr +Chao-Hsiung Liao +Daniel Korostil +Diogo Campos +Dominique Leuenberger +Dušan Kazik +Fran Dieguez +Guillaume Bernard +Jonas Danielsson +Sebastian Rasmussen +Stas Solovey +Γιάννης Κουτσούκος + + +3.15.90.2 - Feb 17, 2015 +======================= + +Changes since 3.15.91: + +- Fix build for clang/FreeBSD + +All contributors to this releas: +Ting-Wei Lan + +3.15.90.1 - Feb 15, 2015 +======================= + +Changes since 3.15.90: + +- Install Maps C library into pkglibdir + +3.15.90 - Feb 15, 2015 +======================= + +Changes since 3.15.4: + +- Show notification with link to privacy panel + when location service is off + +- Only show user location marker when location service + is enabled + +- Added a 'show-location' activation action, to show + contacts in Maps. + +- Add contacts with geocodable addresses to the placeStore + to allow completion in search + +- Added/updated/fixed translations: + - Lithuanian + - Hebrew + - Greek + - Slovak + - Russian + - Spanish + - German + - Czech + - Norweigian bokmål + - Esperanto + +All contributors to this release: +Aurimas Černius +Benjamin Steinwender +Daniel Mustieles +Dimitris Spingos +Dušan Kazik +Jonas Danielsson +Kjartan Maraas +Kristjan SCHMIDT +Marek Černocký +Mattias Bengtsson +Stas Solovey +Yosef Or Boczko + +3.15.4 - Jan 16, 2014 +======================= + +Changes since 3.15.3.2: + +- Smarter filtering in favorites menu +- Make opening hours translatable +- Convert to "package.js" application convention +- Add runtime dependency checks +- Refresh place meta data if stale +- Switch to new full color mark-location icon +- Zoom in and center map marker on double-click +- Added/updated/fixed translations: + - Hungarian + - Friulian + - Indonesian + - Basque + - Greek + - Czech + - Ukrainian + - Brazilian Portuguese + - Galician + - Spanish + - Russian + - German + +All contributors to this release: +Andika Triwidada +Balázs Úr +Bastien Nocera +Christian Kirbach +Damián Nohales +Daniel Korostil +Daniel Mustieles +Dimitris Spingos +Fabio Tomat +Fran Dieguez +Inaki Larranaga Murgoitio +Jonas Danielsson +Marcus Lundblad +Marek Černocký +Rafael Ferreira +Ricardo Barbosa +Stas Solovey + +3.15.3.2 - Dec 19, 2014 +======================= + +Changes since 3.15.3.1: + +- Fix bug with completion popup +- Added/updated/fixed translations: + - Spanish + +All contributors to this release: +Daniel Mustieles +Jonas Danielsson + +3.15.3.1 - Dec 18, 2014 +======================= + +Changes since 3.15.3: + +- Use search popover for completion +- Added/updated/fixed translations: + - Spanish + +All contributors to this release: +Daniel Mustieles +Jonas Danielsson + +3.15.2 - Dec 15, 2014 +======================= + +Changes since 3.15.2: + +- Remove 'I am here' menu item from context menu +- Improve geoclue interaction somewhat +- Use Overpass API to add meta data to map bubbles +- Use HTTPS for GraphHopper service +- Add drag-n-drop to route entries +- Add check-in possibility to user location bubble (Facebook/Foursquare) +- Added/updated/fixed translations: + - Hebrew + - Czech + - Norwegian bokmål + - Spanish + - Hungarian + - Romanian + +All contributors to this release: + +Balázs Úr +Damián Nohales +Daniel Mustieles +Daniel Șerbănescu +Jonas Danielsson +Kjartan Maraas +Marcus Lundblad +Marek Černocký +Mattias Bengtsson +Yosef Or Boczko + + +3.15.2 - Nov 24, 2014 +======================= + +Changes since 3.14.1: + +- Add support for imperial units +- Use proper GtkButtons for zoom control +- Add a 'No network view' to show when Maps is disconnected +- Added accelrator to grab focus on search +- Added accelerator to open route planner. +- Added route button to MapBubble +- Enable panning by keyboard +- Add extra info to search result bubbles: + - Popuplation + - Wikipedia + - Opening hours + - Wheelchair accesability +- Improve the UI of the search result popover +- Add 'share' button to MapBubbles to allow user to + share location to weather and clocks. +- Add favorites handling to main window and MapBubbles. +- Added/updated/fixed translations: + - Persian + - Latvian + - Kazakh + - Spanish + - Hebrew + - Russian + - Greek + +All contributors to this release: + +amishas157 +Ankita Patil +Arash Mousavi +Baurzhan Muftakhidinov +Damián Nohales +Daniel Mustieles +Efstathios Iosifidis +Jonas Danielsson +Kjartan Maraas +Mattias Bengtsson +Pedro Albuquerque +rishirajsinghjhelumi +Rūdolfs Mazurs +Shipra +Stas Solovey +Yosef Or Boczko + + +3.14.1 - Oct 10, 2014 +======================= + +Changes since 3.14.0: + +- Fix issue where icons did not recolor on dark theme +- Added/updated/fixed translations: + - Italian + - Chinese (Taiwan) + - zh_CN + - Nepali + +All contributor to this release: + +Claudio Arseni +Jonas Danielsson +Iris Gou +Kalev Lember +Cheng-Chia Tseng + +3.14.0 - Sep 22, 2014 +======================= + +Changes since 3.13.92: + +- Added/updated/fixed translations: + - Turkish + - Nepali + - Finnish + - Danish + - Polish + - Ukrainian + - Serbian + +All contributor to this release: + +Kenneth Nielsen +Jiri Grönroos +Pawan Chitrakar +Muhammet Kara +Daniel Korostil +Paweł Żołnowski +Мирослав Николић + +3.13.92 - Sep 16, 2014 +======================= + +Changes since 3.13.91: + +Please help out and test this! Make sure that building it +works fine on your workstation and report a bug if not! + +Click around in the instruction list of a found route to +make sure we do not still segfault there! + +- Improve sidebar alignments +- Fix default transportation mode bug +- Make coordinates in entry editable +- Do not forget route on sidebar hide +- Hopefully a fix for non-consistent build error +- Hopefully a fix for elusive segfault in sidebar +- Default focus on entry in sidebar reveal +- Fix for theme problem with instruction list +- Added/updated/fixed translations: + - Assamese + - Galician + - Hebrew + - Spanish + - Brazilian Portugese + - Indonesian + - Greek + - Russian + - German + - Norwegian bokmål + - Catalan + - Catalan (Valencian) + - Czech + - Punjabi + - Korean + - Slovak + - Lithuanian + - Hungarian + - Slovenian + +All contributor to this release: + +Andika Triwidada +A S Alam +Aurimas Černius +Balázs Úr +Carles Ferrando +Christian Kirbach +Damián Nohales +Daniel Mustieles +Dušan Kazik +Enrico Nicoletto +Fran Diéguez +Gil Forcada +Guillaume Bernard +Jonas Danielsson +Kjartan Maraas +Marek Černocký +Maria Mavridou +Martin Srebotnjak +Mattias Eriksson +Nilamdyuti Goswami +Seong-ho Cho +Ville-Pekka Vainio +Yosef Or Boczko +Yuri Myasoedov + +3.13.91 - Sep 2, 2014 +======================= + +Changes since 3.13.4: + +- Add high contrast icon of logo +- Use kinetic scroll mode +- Set correct desktopId for geoclue +- Send correct argv/argc to GApplication +- Fix bug where selecting from completion + nullified placeEntry +- Add content rich map markers and map bubbles + based on GtkPopover +- Add tooltips to GtkHeaderButtons +- Add support for via points in routing +- Added/updated/fixed translations: + - Brazilian Portuguese + - Spanish + - Traditional Chinese + - Japanese + - Greek + - Hebrew + - Galician + - Norwegian bokmål + - Czech + - Catalan (Valencian) + - Lithuanian + - Assamese + +All contributor to this release: + +Anders Jonsson +Andreas Nilsson +Aurimas Černius +Carles Ferrando +Chao-Hsiung Liao +Damián Nohales +Daniel Mustieles +Dario Di Nucci +Dominique Leuenberger +Elad Alfassa +Enrico Nicoletto +Fran Diéguez +Gil Forcada +Hajime Taira +Inaki Larranaga Murgoitio +Jonas Danielsson +Kjartan Maraas +Marek Černocký +Maria Mavridou +MarMav +Mattias Bengtsson +ngoswami +Olav Vitters +Piotr Drąg +Yosef Or Boczko + +3.13.4 - Jul 19, 2014 +======================= + +Changes since 3.13.3: + +- Fix sidebar margin for LTR +- Added/updated/fixed translations: + - Hebrew + - Russian + - Spanish + - Hungarian + - Brazilian Portuguese + +All contributor to this release: + +Balázs Úr +Daniel Mustieles +Enrico Nicoletto +Jonas Danielsson +MarMav +Yosef Or Boczko +Yuri Myasoedov + +3.13.3 - Jun 24, 2014 +======================= + +Changes since 3.13.2: + +- Added sidebar for route searching +- Fix styling of popovers +- Fix cleanup for make dist +- Fixup AppData file +- Added/updated/fixed translations: + - Slovenian + - Spanish + - Lithuanian + +All contributors to this release: + +Aurimas Černius +Damián Nohales +Daniel Mustieles +Jonas Danielsson +Martin Srebotnjak +Mattias Bengtsson +Piotr Drąg +Richard Hughes + + +3.13.2 - May 27, 2014 +======================= + +Changes since 3.12.0: + +- New popover based UI for layers menu. +- Added in app notifications. +- Make clicking the map grab focus to be able to remove on-screen keyboard + on tablets. +- Maps now DBus activatable. +- Handle GeoClue2 service not available. +- Added/updated/fixed translations: + - Dutch + - Slovak + - Tajik + - Japanese + - Greek + - Romanian + - Korean + - Catalan (Valencian) + +All contributors to this release: + +Carles Ferrando +Daniel Șerbănescu +Dario Di Nucci +Dušan Kazik +Erwin Poeze +Ikuya Awashiro +Jonas Danielsson +marablack3 +Mattias Bengtsson +Piotr Drąg +Richard Hughes +rishirajsinghjhelumi +Seong-ho Cho +Victor Ibragimov +Zeeshan Ali (Khattak) + + +3.12.0 - Mar 24, 2014 +======================= + +Changes since 3.11.92: + +- Added/updated/fixed translations: + - Korean + - Polish + - Punjabi + - Danish + - Aragonese + - Telugu + - Slovenian + - Basque + - German + - Serbian + - Italian + +All contributors to this release: + +Claudio Arseni +Мирослав Николић +Benjamin Steinwender +Inaki Larranaga Murgoitio +Matej Urbančič +Praveen Illa +Daniel Martinez +Ask H. Larsen +A S Alam +Paweł Żołnowski +Seong-ho Cho + + +3.11.92 - Mar 17, 2014 +======================= + +Changes since 3.11.91: + +- Enable keyboard navigation in search results popover. +- Make clicking the map grab focus and dismiss on screen keyboard. +- Added/updated/fixed translations: + - Finnish + - Hebrew + - Ukrainian + - French + - Indonesian + - Portuguese + - Catalan + - Russian + - Traditional Chinese (Hong Kong and Taiwan) + - Lithuanian + - Chinese (China) + - Latvian + - Czech + - Galician + - Brazilian + - Spanish + - Norwegian bokmål + - Hungarian + +All contributors to this release: + +Andika Triwidada +Aurimas Černius +Balázs Úr +Chao-Hsiung Liao +Claude Paroz +Damián Nohales +Daniel Korostil +Daniel Mustieles +Dario Di Nucci +Duarte Loreto +Fran Diéguez +Gil Forcada +Jonas Danielsson +Kjartan Maraas +Marek Černocký +Rafael Ferreira +Rūdolfs Mazurs +Seong-ho Cho +Tiagosdot +Ville-Pekka Vainio +Wylmer Wang +Yaron Shahrabani +Yuri Myasoedov + +3.11.91 - Mar 2, 2014 +======================= + +Changes since 3.11.90: + +- Update about dialog. +- Fix a bug that could put Maps in an endless loop. +- Fix a 'make distcheck' bug. +- Use markup for superscripts. +- Added/updated/fixed translations: + - Arabic + - Catalan + - Finnish + - Swedish + +All contributors to this release: + +Jonas Danielsson +Khaled Hosny +Marcus Lundblad +Mattias Bengtsson +Pau Iranzo +Ville-Pekka Vainio + +3.11.90 - Feb 18, 2014 +======================= + +Changes since 3.11.5.1: + +- Make the search results show in a GtkPopover. +- Fix a bug where search result spinner sometimes wouldn't be centered. +- Add Jonas Danielsson to maintainer's list. +- Added/updated/fixed translations: + - Assamese + - Ukrainian + - French + - Aragonese + +All contributors to this release: + +Claude Paroz +Daniel Korostil +Jonas Danielsson +Jorge Pérez Pérez +Mattias Bengtsson +ngoswami +Zeeshan Ali (Khattak) + +3.11.5.1 - Feb 05, 2014 +======================= + +Changes since 3.11.5: + +- Fix some compiler warnings. + +All contributors to this release: + +Ting-Wei Lan +Zeeshan Ali (Khattak) + +3.11.5 - Feb 04, 2014 +===================== + +Changes since 3.11.4.1: + +- Much smoother goto animations. +- Avoid a redundant zoom-out at end of goto animations by making + use of new geocode-glib and libchamplain API. +- Make Maps work against geoclue 2.1.x and latest gtk+. +- If accuracy area is less than 1, show 'exact' instead of '0 km2'. +- Explicitly specify desired accuracy level to geoclue. +- Update website URL in AppData file. +- Make gnome-maps executable a real binary. +- Update recent added time on re-visits. +- Fix a compiler warning. +- Added/updated/fixed translations: + - Brazilian Portuguese + - Chinese simplified + - Czech + - Galician + - Hebrew + - Lithuanian + - Norwegian + - Slovenian + - Spanish + - Tajik + - Telugu + - Traditional Chinese (Hong Kong and Taiwan) + +Dependency-related changes: + +- Require gio-2.0 >= 2.39.3 +- Require gjs-1.0 >= 1.39.0 +- Require geocode-glib >= 3.11.5 (runtime-only) +- Require libchamplain >= 0.12.6 (runtime-only) + +All contributors to this release: + +Andreas Nilsson +Aurimas Černius +Chao-Hsiung Liao +Colin Walters +Daniel Mustieles +Fran Diéguez +Jonas Danielsson +Kjartan Maraas +Marek Černocký +Matej Urbančič +Mattias Bengtsson +Piotr Drąg +Rafael Ferreira +Tong Hui +Victor Ibragimov +Yosef Or Boczko +Zeeshan Ali (Khattak) + +3.11.4.1 - Jan 14, 2014 +======================= + +Changes since 3.11.4: + +- Provide completion for search based on recently used search results. + +All contributors to this release: + +Jonas Danielsson +Mattias Bengtsson +Zeeshan Ali (Khattak) + +3.11.4 - Jan 14, 2014 +===================== + +Changes since 3.11.2: + +- Set saner minimum zoom level on the map view. +- Added/updated/fixed translations: + - Czech + - Malayalam + - Kannada + - Slovak + - Friulian + - German + - Esperanto + +All contributors to this release: + +Balasankar C +Benjamin Steinwender +Dušan Kazik +Fabio Tomat +Jonas Danielsson +Marek Černocký +Matthew Chisholm +Shankar Prasad + +3.11.2 - Nov 19, 2013 +===================== + +Changes since 3.10.0: + +- Default focus on search entry. +- Clearer dconf key descriptions. +- Use Unicode quotation marks and apostrophes. +- Added/updated/fixed translations: + - Afrikaans + - Arabic + - Basque + - Brazilian Portuguese + - Catalan (Valencian) + - Chinese simplified + - Danish + - Dutch + - Galician + - Greek + - Italian + - Lithuanian + - Malayalam + - Norwegian bokmål + - Persian + - Slovenian + - Spanish + - Swedish + - Tajik + - Telugu + - Turkish + +All contributors to this release: + +Anish A +Arash Mousavi +Aurimas Černius +Carles Ferrando +Claudio Arseni +Daniel Mustieles +Dawid Loubser +Efstathios Iosifidis +Emin Tufan Çetin +Fran Diéguez +Friedel Wolff +Inaki Larranaga Murgoitio +Jonas Danielsson +Kenneth Nielsen +Khaled Hosny +Kjartan Maraas +Marcus Lundblad +Matej Urbančič +Mattias Bengtsson +Philip Withnall +Praveen Illa +Rafael Ferreira +Reinout van Schouwen +Tim Lunn +Victor Ibragimov +Zeeshan Ali (Khattak) +tuhaihe <1132321739qq@gmail.com> + +3.10.0 - Sep 23, 2013 +===================== + +Changes since 3.9.92: + +- Added/updated/fixed translations: + - Arabic + - Assamese + - Catalan + - Esperanto + - Estonian + - German + - Japanese + - Norwegian bokmål + - Portuguese + - Ukranian + +All contributors to this release: + +António Lima +Benjamin Steinwender +Daniel Korostil +Jiro Matsuzawa +Josep Sanchez Mesegue +Khaled Hosny +Kjartan Maraas +Kristjan SCHMIDT +Mattias Põldaru +Nilamdyuti Goswami +Priit Laes +Zeeshan Ali (Khattak) + +3.9.92 - Sep 16, 2013 +===================== + +Changes since 3.9.91: + +- Fix issue of Maps not updating user's location at first time launch. +- Fix the awkward looking and slow goto animation and make it linear and fast. +- Don't point to inexistent directories in gnome-maps script. +- Mark two forgotten strings for translation. +- Add some comments for translators. + - Assamese + - Basque + - Brazilian Portuguese + - British English + - Czech + - Danish + - Dutch + - Finnish + - Finnish + - French + - Galician + - German + - Hungarian + - Indonesian + - Italian + - Korean + - Latvian + - Lithuanian + - Norwegian bokmål + - Polish + - Punjabi + - Russian + - Serbian + - Slovak + - Slovenian + - Spanish + - Tajik + - Traditional Chinese + +All contributors to this release: + +Alexandre Franke +Andika Triwidada +A S Alam +Aurimas Černius +Balázs Úr +Chao-Hsiung Liao +Claudio Arseni +Daniel Mustieles +Dušan Kazik +Enrico Nicoletto +Fran Diéguez +Gabor Kelemen +Jonas Danielsson +Kalev Lember +Kjartan Maraas +Kris Thomsen +Marek Černocký +Martin Srebotnjak +Matej Urbančič +Nilamdyuti Goswami +Philip Withnall +Piotr Drąg +Reinout van Schouwen +Rūdolfs Mazurs +Seong-ho Cho +Timo Jyrinki +Tobias Endrigkeit +Victor Ibragimov +Ville-Pekka Vainio +Yosef Or Boczko +Yuri Myasoedov +Zeeshan Ali (Khattak) +Мирослав Николић + +3.9.91 - Sep 03, 2013 +===================== + +Changes since 3.9.90.2: + +- Provide an AppData file for GNOME software center. +- Improved search results popup: + - Add a scroll window to not fill screen with results. + - Show place icons when available for user to be able to differentiate + between results. + - Show a spinner when search is on going. + - Show matched part of results in bold fonts. +- Add a context menu with two options: + - "What's here?": Finds the name of the place at cursor position. + - "I'm here": Corrects/changes Maps' idea of where user is currently. +- Gracefully handle markup in search results. +- Fix build against latest gnome-common. +- Added/updated/fixed translations: + - Brazilian Portuguese + - Czech + - Esperanto + - Galician + - Hungarian + - Irish + - Polish + - Slovenian + - Spanish + - Tajik + - UK + +Dependency-related changes: + +- Adapt to, and depend on GeoClue >= 1.99.3. + +All contributors to this release: + +Andreas Nilsson +Balázs Úr +Daniel Korostil +Daniel Mustieles +Enrico Nicoletto +Fran Diéguez +Georges Basile Stavracas Neto +Jonas Danielsson +Kalev Lember +Marek Černocký +Matej Urbančič +Piotr Drąg +Ryan Lortie +Seán de Búrca +Victor Ibragimov +Zeeshan Ali (Khattak) + +3.9.90.2 - Aug 23, 2013 +======================= + +Changes since 3.9.90.1: + +- Drop usage of Geoclue library as its going to be dropped in Geoclue 1.99.2. +- Update Polish translation. + +All contributors to this release: + +Piotr Drąg +Zeeshan Ali (Khattak) + +3.9.90.1 - Aug 20, 2013 +======================= + +Brown paperbag release for also updating version in configure/build. + +3.9.90 - Aug 20, 2013 +===================== + +Changes since 3.9.5: + +- Search results are shown in a popup menu rather than as markers on the map. +- Draw window decorations client-side, following the new GNOME3 trend. +- The user location button is no longer a toggle. +- Add buttons and key bindings for zooming in and out. +- Added/updated/fixed translations: + - Chinese simplified + - Danish + +Dependency-related changes: + +- Adapt to, and depend on GeoClue >= 1.99.1. + +All contributors to this release: + +Andrea Veri +Jonas Danielsson +Kenneth Nielsen +Kris Thomsen +Mattias Bengtsson +tuhaihe <1132321739qq@gmail.com> +Yosef Or Boczko +Zeeshan Ali (Khattak) + +3.9.5 - Jul 31, 2013 +==================== + +First public release. diff --git a/README b/README new file mode 100644 index 00000000..85171542 --- /dev/null +++ b/README @@ -0,0 +1,2 @@ +Maps is a map application for GNOME. +More information on https://wiki.gnome.org/Apps/Maps diff --git a/data/gnome-maps.css b/data/gnome-maps.css new file mode 100644 index 00000000..ea4977fe --- /dev/null +++ b/data/gnome-maps.css @@ -0,0 +1,102 @@ +.maps-popover { + padding: 5px; +} + +#dragged-entry { + color: #939695; +} + +.layer-radio-button { + background-image: none; + padding: 0; + border: 1px solid @insensitive_borders; + outline-width: 1px; +} + +.layer-radio-button:checked { + border: 2px solid @suggested_action_button_a; +} + +#zoom-in-button, +#zoom-out-button { + font-weight: bold; +} + +#sidebar-entry-list, +#sidebar-entry-list .list-row:hover { + background-color: transparent; +} + +#sidebar-entry-list .list-row:focus { + outline: 0; +} + +#sidebar-entry-list > GtkLabel { + padding-right: 6px; +} + +#sidebar-entry-list > GtkLabel:dir(rtl) { + padding-left: 6px; +} + +#sidebar-entry-list .transportation-mode-button > GtkImage { + padding: 4px 7px; +} + +#sidebar { + border-left: 1px solid gray; +} + +#sidebar:dir(rtl) { + border-right: 1px solid gray; +} + +#instruction-list { + border-right: 0px; + border-left: 0px; +} + +#instruction-box > GtkImage { + padding-right: 6px; + padding-left: 6px; +} + +.bubble-title { + font-size: large; + font-weight: bold; +} + +.small-label, +.bubble-content, +.bubble-subtitle { + font-size: small; +} + +.maps-check-in GtkTextView { + font-size: large; +} + +.shaded { + background-color: alpha(black, 0.1); + border-bottom: 1px solid alpha(black, 0.2); +} + +.route-label { + padding-left: 2px; + padding-right: 2px; + padding-top: 2px; + padding-bottom: 2px; + min-width: 16px; + min-height: 16px; + font-size: smaller; +} + +.small-circular { + border-radius: 14px; + min-width: 14px; + min-height: 14px; + padding: 0px 0px; + background-color: transparent; + -gtk-outline-radius: 14px; +} + diff --git a/data/icons/meson.build b/data/icons/meson.build new file mode 100644 index 00000000..f741a0b7 --- /dev/null +++ b/data/icons/meson.build @@ -0,0 +1,9 @@ +install_subdir( + join_paths('public', 'hicolor'), + install_dir: join_paths(datadir, 'icons') +) + +install_subdir( + join_paths('private', 'hicolor'), + install_dir: join_paths(pkgdatadir, 'icons') +) diff --git a/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg new file mode 100644 index 00000000..9779f9ad --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg new file mode 100644 index 00000000..135278f5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg new file mode 100644 index 00000000..a50bbc43 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg new file mode 100644 index 00000000..b51794c4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg new file mode 100644 index 00000000..f476455f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg new file mode 100644 index 00000000..0223d5f8 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg new file mode 100644 index 00000000..d9547d66 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg new file mode 100644 index 00000000..c511fe1c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg new file mode 100644 index 00000000..7317b867 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg new file mode 100644 index 00000000..961c35e0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg @@ -0,0 +1,30 @@ + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg new file mode 100644 index 00000000..ae2d69a6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg new file mode 100644 index 00000000..279639a4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg new file mode 100644 index 00000000..6984bd05 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg new file mode 100644 index 00000000..61184b56 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg new file mode 100644 index 00000000..a9c653c2 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg new file mode 100644 index 00000000..c39a3397 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg new file mode 100644 index 00000000..11b5cf0b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg new file mode 100644 index 00000000..05a49d52 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg new file mode 100644 index 00000000..76b863b3 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg new file mode 100644 index 00000000..ee275b5a --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/24x24/apps/user-location-compass.png b/data/icons/private/hicolor/24x24/apps/user-location-compass.png new file mode 100644 index 00000000..d2f3c7d7 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location-compass.png differ diff --git a/data/icons/private/hicolor/24x24/apps/user-location.png b/data/icons/private/hicolor/24x24/apps/user-location.png new file mode 100644 index 00000000..833fd907 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location.png differ diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg new file mode 100644 index 00000000..3eecf0fe --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg new file mode 100644 index 00000000..110fda85 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg new file mode 100644 index 00000000..c955b77d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg new file mode 100644 index 00000000..1c429d12 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg new file mode 100644 index 00000000..a1950490 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg new file mode 100644 index 00000000..3f4f0ea1 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg new file mode 100644 index 00000000..e78482f8 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg new file mode 100644 index 00000000..03c5744c --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg new file mode 100644 index 00000000..bb0886ba --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg new file mode 100644 index 00000000..3cfcbaae --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg new file mode 100644 index 00000000..ebbe0172 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg new file mode 100644 index 00000000..c5bcbf6a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg new file mode 100644 index 00000000..520dd2ab --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg new file mode 100644 index 00000000..73fa4e1a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg new file mode 100644 index 00000000..19f98821 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg new file mode 100644 index 00000000..b92d3e69 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg new file mode 100644 index 00000000..283cdfbc --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg new file mode 100644 index 00000000..eb93b7bd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg new file mode 100644 index 00000000..1178640b --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg new file mode 100644 index 00000000..37d46da9 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg new file mode 100644 index 00000000..deaa22df --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg new file mode 100644 index 00000000..0fc527c2 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg new file mode 100644 index 00000000..17893292 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/mark-location.png b/data/icons/private/hicolor/32x32/apps/mark-location.png new file mode 100644 index 00000000..1a34a63c Binary files /dev/null and b/data/icons/private/hicolor/32x32/apps/mark-location.png differ diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg new file mode 100644 index 00000000..3ecd81a5 --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg new file mode 100644 index 00000000..1986990c --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg @@ -0,0 +1,202 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg new file mode 100644 index 00000000..32ac0b74 --- /dev/null +++ b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg @@ -0,0 +1,28 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + diff --git a/data/maps-service.json b/data/maps-service.json new file mode 100644 index 00000000..1a04054c --- /dev/null +++ b/data/maps-service.json @@ -0,0 +1,52 @@ +{ + "tileProviderInfo": { + "name": "Mapbox", + "url": "https://www.mapbox.com" + }, + "tiles": { + "street": { + "id": "mapbox.streets-v11", + "name": "Mapbox street tiles", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + }, + + "aerial": { + "id": "mapbox.satellite-v9", + "name": "Mapbox aerial tiles", + "license": "© OpenStreetMap © DigitalGlobe", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + }, + + "print": { + "id": "mapbox.streets-v11", + "name": "Mapbox street tiles", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + } + }, + "graphHopperGeocode": { + "baseUrl": "https://graphhopper.com", + "attribution": "GraphHopper", + "attributionUrl": "https://graphhopper.com/", + "apiKey": "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP" + } +} diff --git a/data/media/maps-point-end-symbolic.svg b/data/media/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/media/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/media/maps-point-start-symbolic.svg b/data/media/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/media/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 00000000..2be4ee73 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,80 @@ +gnome.compile_resources( + app_id + '.data', + app_id + '.data.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir +) + +install_data( + 'maps-service.json', + install_dir: pkgdatadir +) + +desktop = app_id + '.desktop' + +desktop_file = custom_target('desktop-file', + input: desktop + '.in', + output: desktop, + install: true, + install_dir: join_paths(datadir, 'applications'), + command: [msgfmt, '--desktop', + '--template', '@INPUT@', '-d', po_dir, '-o', '@OUTPUT@', + '--keyword=X-Geoclue-Reason', '--keyword=Name', '--keyword=Comment', + '--keyword=Keywords' + ] +) + +install_data( + app_id + '.gschema.xml', + install_dir: join_paths(datadir, 'glib-2.0', 'schemas') +) + +appdata = app_id + '.appdata.xml' + +appdata_file = i18n.merge_file( + appdata, + input: appdata + '.in', + output: appdata, + po_dir: po_dir, + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +service_conf = configuration_data() +service_conf.set('PACKAGE_NAME', meson.project_name()) +service_conf.set('pkgdatadir', pkgdatadir) + +configure_file( + input: app_id + '.service.in', + output: app_id + '.service', + configuration: service_conf, + install: true, + install_dir: join_paths(datadir, 'dbus-1', 'services') +) + +desktop_file_validate = find_program('desktop-file-validate', required: false) +if desktop_file_validate.found() + test( + 'validate-desktop', + desktop_file_validate, + args: [ + desktop_file.full_path() + ] + ) +endif + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test( + 'validate-appdata', + appstream_util, + args: [ + 'validate-relax', + '--nonet', + appdata_file.full_path() + ] + ) +endif + +subdir('icons') \ No newline at end of file diff --git a/data/org.gnome.Maps.appdata.xml.in b/data/org.gnome.Maps.appdata.xml.in new file mode 100644 index 00000000..11f87cda --- /dev/null +++ b/data/org.gnome.Maps.appdata.xml.in @@ -0,0 +1,177 @@ + + + org.gnome.Maps.desktop + CC0-1.0 + GPL-2.0-or-later + GNOME Maps + Find places around the world + +

+ Maps gives you quick access to maps all across the world. It allows you + to quickly find the place you’re looking for by searching for a city or + street, or locate a place to meet a friend. +

+

+ Maps uses the collaborative OpenStreetMap database, made by hundreds of + thousands of people across the globe. +

+ + +

+ You can even search for specific types of locations, such as “Pubs near + Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”. +

+
+ + org.gnome.Maps.desktop + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-main.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-route.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-pinpoint.png + + + + + + +
    +
  • Don't reset query points when routing fails (e.g. no public transit provider is available) to allow switching mode with the same query
  • +
  • Fix a bug not displaying tiles south of the equator when using --local command line option
  • +
  • Allow entering DMS coordinates without comma between latitude and logitude parts
  • +
+
+
+ + +
    +
  • Updated POI defintions for OpenStreetMap editing
  • +
  • Fix link to sign up for an OpenStreetMap account
  • +
+
+
+ + +
    +
  • Initial support for public transit routing
  • +
  • Re-arrange context menu. Move "export as image" to hamburger menu
  • +
  • Avoid flickering the current location marker when changes
  • +
+
+
+ + +
    +
  • Added Malay translation
  • +
+
+
+ + +
    +
  • Fix generating Wikipedia URLs in some cases
  • +
+
+
+ + +
    +
  • Update tile size to 512 px when using --local option
  • +
+
+
+ + +
    +
  • Auto-complete "search-as-you-type"
  • +
  • Revamped sharing dialog
  • +
  • Support opening OpenStreetMap URLs
  • +
  • Faster startup
  • +
  • Remember map style last used when starting (street or aerial view)
  • +
+
+
+ + +
    +
  • Fix misaligned rendering of shape layers with the new map tiles
  • +
+
+
+ + +
    +
  • Remove some unnessesary instructions in turn-by-turn route searches
  • +
+
+
+ + +
    +
  • Updated Croatian translations
  • +
+
+
+ + + +
    +
  • Show live-updated thumbnails for the street/aerial layer switcher, instead of (outdated) hard-code thumbnails
  • +
  • Move app menu to the headerbar
  • +
  • Updated application icon
  • +
+
+
+
+ + gnome-maps.desktop + + GNOME + The GNOME Project + http://wiki.gnome.org/Apps/Maps + https://gitlab.gnome.org/GNOME/gnome-maps/ + http://www.gnome.org/friends/ + gnome-maps-list@gnome.org + gnome-maps + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + +
+ + + diff --git a/data/org.gnome.Maps.data.gresource.xml b/data/org.gnome.Maps.data.gresource.xml new file mode 100644 index 00000000..473b351b --- /dev/null +++ b/data/org.gnome.Maps.data.gresource.xml @@ -0,0 +1,47 @@ + + + + ui/account-row.ui + ui/check-in-dialog.ui + ui/context-menu.ui + ui/export-view-dialog.ui + ui/favorites-popover.ui + ui/instruction-row.ui + ui/layers-popover.ui + ui/shape-layer-row.ui + ui/shape-layer-file-chooser.ui + ui/location-service-dialog.ui + ui/main-window.ui + ui/map-bubble.ui + ui/open-with-row.ui + ui/osm-account-dialog.ui + ui/osm-edit-address.ui + ui/osm-edit-dialog.ui + ui/osm-type-list-row.ui + ui/osm-type-search-entry.ui + ui/osm-type-popover.ui + ui/place-bubble.ui + ui/place-entry.ui + ui/place-list-row.ui + ui/place-popover.ui + ui/route-entry.ui + ui/send-to-dialog.ui + ui/sidebar.ui + ui/social-place-more-results-row.ui + ui/social-place-row.ui + ui/transit-arrival-row.ui + ui/transit-itinerary-row.ui + ui/transit-leg-row.ui + ui/transit-more-row.ui + ui/transit-options-panel.ui + ui/transit-route-label.ui + ui/transit-stop-row.ui + ui/user-location-bubble.ui + ui/zoom-in-dialog.ui + gnome-maps.css + osm-types.json + + + ui/help-overlay.ui + + diff --git a/data/org.gnome.Maps.desktop.in b/data/org.gnome.Maps.desktop.in new file mode 100644 index 00000000..83820919 --- /dev/null +++ b/data/org.gnome.Maps.desktop.in @@ -0,0 +1,16 @@ +[Desktop Entry] +Version=1.0 +Name=Maps +Comment=A simple maps application +Exec=gapplication launch org.gnome.Maps %U +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=org.gnome.Maps +Terminal=false +Type=Application +StartupNotify=true +Categories=GNOME;GTK;Utility; +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Maps; +DBusActivatable=true +MimeType=application/vnd.geo+json;x-scheme-handler/geo;application/vnd.google-earth.kml+xml;application/gpx+xml; +X-Geoclue-Reason=Allows your location to be shown on the map. diff --git a/data/org.gnome.Maps.gschema.xml b/data/org.gnome.Maps.gschema.xml new file mode 100644 index 00000000..133478d9 --- /dev/null +++ b/data/org.gnome.Maps.gschema.xml @@ -0,0 +1,85 @@ + + + + + + + + + + [0.0,0.0] + last viewed location + Coordinates of last viewed location. + + + 0 + zoom + Zoom level + + + "MapsStreetSource" + Map type + The type of map to display (street, aerial, etc.) + + + [768, 600] + Window size + Window size (width and height). + + + [] + Window position + Window position (X and Y). + + + true + Window maximized + Window maximization state + + + 20 + Maximum number of search results + Maximum number of search results from geocode search. + + + 50 + Number of recent places to store + Number of recently visited places to store. + + + 5 + Number of recent routes to store + Number of recently visited routes to store. + + + "EVERYONE" + Facebook check-in privacy setting + + Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF. + + + "public" + Foursquare check-in privacy setting + Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private. + + + false + Foursquare check-in Facebook broadcasting + Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated with the Foursquare account. + + + false + Foursquare check-in Twitter broadcasting + Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated with the Foursquare account. + + + "" + OpenStreetMap username or e-mail address + Indicates if the user has signed in to edit OpenStreetMap data. + + + 'pedestrian' + Last used transportation type for routing + + + diff --git a/data/org.gnome.Maps.service.in b/data/org.gnome.Maps.service.in new file mode 100644 index 00000000..f8a854f6 --- /dev/null +++ b/data/org.gnome.Maps.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.Maps +Exec=@pkgdatadir@/org.gnome.Maps --gapplication-service diff --git a/data/osm-types.json b/data/osm-types.json new file mode 100644 index 00000000..5c7de9cc --- /dev/null +++ b/data/osm-types.json @@ -0,0 +1,18089 @@ +{ + "aeroway/aerodrome": { + "title": { + "C": "Airport", + "en": "Airport", + "af": "Lughawe", + "ar": "مطار", + "ast": "Aeropuertu", + "bn": "বিমানবন্দর", + "bs": "Aerodrom", + "ca": "Aeroport", + "cs": "Letiště", + "da": "Lufthavn", + "de": "Flughafen", + "el": "Αεροδρόμιο", + "en-GB": "Airport", + "eo": "Aerodromo", + "es": "Aeropuerto", + "et": "Lennujaam", + "fa": "فرودگاه", + "fi": "Lentokenttä", + "fr": "Aéroport", + "gl": "Aeroporto", + "hr": "Zračna luka", + "hu": "Repülőtér", + "hy": "Օդանավակայան", + "id": "Bandar udara", + "is": "Flugvöllur", + "it": "Aeroporto", + "ja": "空港", + "kn": "ವಿಮಾನ ನಿಲ್ದಾಣ", + "ko": "공항", + "lt": "Oro uostas", + "lv": "Lidosta", + "nl": "Luchthaven", + "no": "Flyplass", + "pl": "Lotnisko", + "pt-BR": "Aeroporto ou aeródromo", + "pt": "Aeroporto", + "ro": "Aeroport", + "ru": "Аэропорт", + "sk": "Letisko", + "sl": "Letališče", + "sr": "Аеродром", + "sv": "Flygplats", + "ta": "விமானநிலையம்", + "te": "విమానాశ్రయం", + "tr": "Havaalanı", + "uk": "Аеропорт", + "vi": "Sân bay", + "yue": "飛機場", + "zh-CN": "机场", + "zh-HK": "機場", + "zh-TW": "機場", + "zh": "机场", + "mk": "Аеродром", + "bg": "Летище", + "he": "נמל תעופה", + "eu": "Aireportu", + "ckb": "فڕۆکەخانە" + } + }, + "aeroway/apron": { + "title": { + "C": "Apron", + "en": "Apron", + "af": "Laaiblad", + "ar": "ساحة المطار", + "ast": "Aparcamientu d'aviones", + "bs": "Stajanka", + "ca": "Àrea d'aparcament", + "cs": "Odbavovací plocha", + "da": "forplads foran hangarer", + "de": "Vorfeld", + "el": "Χώρος ελιγμών", + "en-GB": "Apron", + "eo": "Aviadil-parkumejo", + "es": "Plataforma de estacionamiento", + "fa": "پیشگاه", + "fi": "Asemataso", + "fr": "Aire de stationnement", + "gl": "Plataforma aeroportuaria", + "hr": "Pristanišna platforma", + "hu": "Forgalmi előtér", + "id": "Pelataran pesawat", + "is": "Flughlað", + "it": "Area di sosta per aeromobili", + "ja": "エプロン", + "ko": "계류장", + "nl": "Platform", + "no": "Oppstillingsplass", + "pl": "Płyta postojowa", + "pt-BR": "Pátio de Aeródromo", + "pt": "Plataforma de estacionamento", + "ru": "Перрон", + "sk": "Odbavovacia plocha", + "sl": "Letališka ploščad", + "sr": "Платформа", + "sv": "Parkering för flygplan (Apron)", + "ta": "காப்புத் தளம்", + "tr": "Uçak Park Alanı", + "uk": "Перон", + "vi": "Sân bãi", + "yue": "停機坪", + "zh-CN": "停机坪", + "zh-HK": "停機坪", + "zh-TW": "停機坪", + "zh": "停机坪", + "mk": "Воздухпловен перон", + "bg": "Стоянка за самолети", + "he": "רחבת חניית מטוסים" + } + }, + "aeroway/gate": { + "title": { + "C": "Airport Gate", + "en": "Airport Gate", + "ar": "بوابة المطار", + "ast": "Puerta de terminal", + "ca": "Porta d'aeroport", + "cs": "Letištní gate", + "da": "Lufthavnsgate", + "de": "Flugsteig", + "el": "Πύλη Αεροδρομίου", + "en-GB": "Airport Gate", + "eo": "Aerodroma enirejo", + "es": "Puerta de embarque", + "fa": " دروازه فرودگاه ", + "fi": "Lähtöportti", + "fr": "Porte d'embarquement", + "gl": "Porta de embarque", + "hu": "Repülőtéri kapu", + "is": "Flugvallarhlið", + "it": "Gate aeroportuale", + "ja": "空港ゲート", + "ko": "공항 게이트", + "lv": "Lidostas vārti", + "nl": "Luchthaven-gate", + "no": "Flyplassgate", + "pl": "Brama lotniska", + "pt-BR": "Portão de Embarque", + "pt": "Porta de embarque / desembarque", + "ru": "Выход на посадку", + "sk": "Letisková brána", + "sl": "Letališka vrata", + "sr": "Излаз за укрцавање", + "sv": "Gate", + "ta": "விமான நிலைய நுழைவாயில்", + "tr": "Kapı", + "uk": "Вихід на посадку", + "vi": "Cổng Sân bay", + "zh-CN": "登机口", + "zh-HK": "登機閘", + "zh-TW": "登機閘門", + "mk": "Аеродромска порта", + "he": "שער נמל תעופה", + "eu": "Aireportuko ate" + } + }, + "aeroway/hangar": { + "title": { + "C": "Hangar", + "en": "Hangar", + "af": "Loods", + "ar": "حظيرة الطائرات", + "ast": "Hangar", + "bs": "Hangar", + "ca": "Hàngar", + "cs": "Hangár", + "da": "Hangar", + "de": "Hangar", + "el": "Υπόστεγο Αεροσκαφών", + "en-GB": "Hangar", + "eo": "Hangaro", + "es": "Hangar", + "et": "Angaar", + "fa": "آشیانه هواپیما", + "fi": "Lentokonehalli", + "fr": "Hangar", + "gl": "Hangar", + "hr": "Hangar", + "hu": "Hangár", + "id": "Hanggar", + "is": "Flugskýli", + "it": "Hangar", + "ja": "航空機格納庫", + "ko": "격납고", + "lt": "Angaras", + "lv": "Angārs", + "nl": "Hangar", + "no": "Hangar", + "pl": "Hangar", + "pt-BR": "Hangar", + "pt": "Hangar", + "ru": "Ангар", + "sk": "Hangár", + "sl": "Hangar", + "sr": "Хангар", + "sv": "Hangar", + "ta": "விமானங்கள் நிறுத்துமிடம்", + "tr": "Hangar", + "uk": "Ангар", + "vi": "Nhà Máy bay", + "yue": "飛機庫", + "zh-CN": "飞机库", + "zh-HK": "飛機庫", + "zh-TW": "機庫", + "zh": "机库", + "mk": "Хангар", + "bg": "Хангар", + "he": "הנגר" + } + }, + "aeroway/helipad": { + "title": { + "C": "Helipad", + "en": "Helipad", + "af": "Helipad", + "ar": "مهبط الهليكوبتر", + "ast": "Helipuertu", + "bn": "হেলিপ্যাড", + "bs": "Heliodrom", + "ca": "Heliport", + "cs": "Heliport", + "da": "Helikopterlandingsplads", + "de": "Hubschrauberlandeplatz", + "el": "Ελικοδρόμιο", + "en-GB": "Helipad", + "eo": "Surteriĝejo helikoptera", + "es": "Helipuerto", + "et": "Kopteriväljak", + "fa": "محل فرود هلی کوپتر", + "fi": "Helikopterikenttä", + "fr": "Héliport", + "gl": "Heliporto", + "hr": "Heliodrom", + "hu": "Helikopter-leszállóhely", + "hy": "Ուղաթիռային հրապարակ", + "id": "Helipad", + "is": "Þyrlupallur", + "it": "Elisuperficie", + "ja": "ヘリパッド", + "ko": "헬기 착륙장", + "lt": "Sraigtasparnių aikštelė", + "lv": "Helikopteru nosēšanās laukums", + "nl": "Helipad", + "no": "Helikopterlandingsplass", + "pl": "Lądowisko dla helikopterów", + "pt-BR": "Heliponto", + "pt": "Heliponto", + "ru": "Вертолётная площадка", + "sk": "Heliport", + "sl": "Heliodrom", + "sr": "Хелиодром", + "sv": "Helikopterplatta", + "ta": "சிறு விமானம் இறங்கும் தளம்", + "tr": "Helikopter Pisti", + "uk": "Вертолітний майданчик", + "vi": "Sân bay Trực thăng", + "yue": "直升機坪", + "zh-CN": "直升机场", + "zh-HK": "直升機坪", + "zh-TW": "直昇機坪", + "zh": "直升机场", + "mk": "Хеликоптерско слетувалиште", + "bg": "Хеликоптерна площадка", + "he": "מנחת מסוקים" + } + }, + "aeroway/runway": { + "title": { + "C": "Runway", + "en": "Runway", + "af": "Aanloopbaan", + "ar": "مدرج الطائر", + "ast": "Pista", + "bs": "Pista", + "ca": "Pista d'enlairament/aterratge", + "cs": "Vzletová a přistávací dráha", + "da": "Runway", + "de": "Start- und Landebahn", + "el": "Διάδρομος Αεροδρομίου", + "en-GB": "Runway", + "eo": "Avia dromo", + "es": "Pista de aterrizaje", + "et": "Lennurada", + "fa": "باند فرودگاه", + "fi": "Kiitorata", + "fr": "Piste d’atterrissage", + "gl": "Pista de aeroporto", + "hr": "Uzletno-sletna staza", + "hu": "Kifutópálya", + "id": "Landas pacu", + "is": "Flugbraut", + "it": "Pista di decollo/atterraggio", + "ja": "滑走路", + "kn": "ಓಡುದಾರಿ", + "ko": "활주로", + "lt": "Pakilimo takas", + "lv": "Skrejceļš", + "nl": "Startbaan", + "no": "Rullebane", + "pl": "Pas startowy", + "pt-BR": "Pista de Pouso e Decolagem", + "pt": "Pista de aterragem e descolagem", + "ru": "Взлётная полоса", + "sk": "Vzletová dráha", + "sl": "Vzletno-pristajalna steza", + "sr": "Узлетиште", + "sv": "Start- och landningsbana", + "ta": "ஓடுதளம்", + "tr": "Uçak Pisti", + "uk": "Злітно-посадкова смуга", + "vi": "Đường băng", + "yue": "跑道", + "zh-CN": "机场跑道", + "zh-HK": "跑道", + "zh-TW": "機場跑道", + "zh": "跑道", + "mk": "Писта", + "bg": "Летателна писта", + "dv": "އެއާރޕޯޓް ރަންވޭ", + "he": "מסלול המראה", + "so": "Gegada diyaaradaha" + } + }, + "aeroway/taxiway": { + "title": { + "C": "Taxiway", + "en": "Taxiway", + "af": "Rolbaan", + "ar": "طريق للمدرج", + "ast": "Cai de rodaxe", + "bs": "Staza za vožnju", + "ca": "Plataforma de rodada", + "cs": "Pojezdová dráha", + "da": "Taxiway", + "de": "Rollweg", + "el": "Τροχιόδρομος", + "en-GB": "Taxiway", + "eo": "Aŭtokur-strato", + "es": "Pista de rodaje", + "et": "Ruleerimistee", + "fa": "خزشراه", + "fi": "Rullaustie", + "fr": "Taxiway", + "gl": "Pista de rodaxe", + "hr": "Rulnica", + "hu": "Gurulóút", + "id": "Landas hubung", + "is": "Akbraut flugvéla", + "it": "Pista di rullaggio", + "ja": "航空機誘導路", + "ko": "유도로", + "lv": "Manevrēšanas ceļš", + "nl": "Taxibaan", + "no": "Taxibane", + "pl": "Droga kołowania", + "pt-BR": "Pista de Taxiamento", + "pt": "Via de circulação", + "ru": "Рулёжная дорожка", + "sk": "Rolovacia dráha", + "sl": "Vozna steza", + "sr": "Такси пут", + "sv": "Taxibana", + "tr": "Taksi Yolu", + "uk": "Руліжна доріжка", + "vi": "Đường lăn", + "yue": "滑行道", + "zh-CN": "滑行道", + "zh-HK": "滑行道", + "zh-TW": "滑行道", + "zh": "滑行道", + "mk": "Воздухопловен приод", + "bg": "Рольожка", + "he": "מסלול הסעה" + } + }, + "aeroway/terminal": { + "title": { + "C": "Airport Terminal", + "en": "Airport Terminal", + "ar": "محطة المطار", + "ast": "Terminal d'aeropuertu", + "ca": "Terminal d'aeroport", + "cs": "Letištní terminál", + "da": "Lufthavnsterminal", + "de": "Flughafenterminal", + "el": "Σταθμός Αεροναυτιλίας", + "en-GB": "Airport Terminal", + "eo": "Flugstacio", + "es": "Terminal de aeropuerto", + "et": "Lennuterminal", + "fa": "پایانه فرودگاه", + "fi": "Lentokenttäterminaali", + "fr": "Terminal d'aéroport", + "gl": "Terminal de aeroporto", + "hu": "Repülőtéri terminál", + "is": "Flugstöð", + "it": "Terminal aeroportuale", + "ja": "空港ターミナル", + "ko": "공항 터미널", + "lv": "Lidostas Terminālis", + "nl": "Luchthaventerminal", + "no": "Flyplassterminal", + "pl": "Terminal pasażerski", + "pt-BR": "Terminal de Aeroporto", + "pt": "Terminal de aeroporto", + "ru": "Терминал аэропорта", + "sk": "Letiskový termnál", + "sl": "Letališki terminal", + "sr": "Аеродромски терминал", + "sv": "Flygterminal", + "tr": "Terminal", + "uk": "Термінал", + "vi": "Ga Sân bay", + "zh-CN": "航站楼", + "zh-HK": "機場客運大樓", + "zh-TW": "機場航廈", + "mk": "Аеродромски терминал", + "dv": "އެއާރޕޯޓް ގިމަތަ", + "he": "טרמינל שדה תעופה", + "eu": "Aireportuko Terminal", + "so": "Gagida Dayaaradeed" + } + }, + "aeroway/holding_position": { + "title": { + "C": "Aircraft Holding Position", + "en": "Aircraft Holding Position", + "de": "Rollhalteort", + "es": "Posición de espera de aviones", + "fi": "Lentokoneen pysähtymiskohta", + "fr": "Point d’attente avion", + "it": "Circuito di attesa per aeromobili", + "ja": "停止ポイント(空港)", + "pl": "Punkt oczekiwania dla samolotu", + "pt-BR": "Posição de retenção de aeronaves", + "pt": "Ponto de espera de avião", + "sv": "Väntplats för flygplan", + "uk": "Стоп-лінія", + "zh-CN": "跑道等待位置", + "zh-TW": "飛機停靠點", + "mk": "Чекална положба на леталото", + "he": "תבנית ריתוק כלי טיס" + } + }, + "aeroway/jet_bridge": { + "title": { + "C": "Jet Bridge", + "en": "Jet Bridge", + "de": "Jetbrücke", + "eo": "Ponto flugstacio - aviadilo", + "es": "Manga de aeropuerto", + "fi": "Matkustajasilta", + "fr": "Passerelle aéroportuaire", + "gl": "Manga de aeroporto", + "it": "Corridoio chiuso passeggeri", + "ja": "ボーディング・ブリッジ", + "no": "Ombordstigningsbro", + "pl": "Rękaw lotniczy", + "pt-BR": "Ponte telescópica", + "pt": "Ponte de embarque", + "sv": "Ombordstigningsbrygga", + "uk": "Посадковий рукав", + "vi": "Cầu Hành khách", + "zh-CN": "登机桥", + "zh-TW": "空橋", + "mk": "Авионски пристапен мост", + "he": "גשר עלייה למטוס" + } + }, + "aeroway/parking_position": { + "title": { + "C": "Aircraft Parking Position", + "en": "Aircraft Parking Position", + "de": "Flugzeugparkposition", + "es": "Posición de estacionamiento de aviones", + "fi": "Lentokoneen pysäköintikohta", + "fr": "Voie de garage pour avion", + "it": "Posizione di parcheggio per aeromobili", + "ja": "駐機ポイント(空港)", + "no": "Luftfartøy Parkering Posisjon", + "pl": "Miejsce postoju samolotu", + "pt-BR": "Posição de estacionamento de aeronaves", + "pt": "Área de estacionamento de avião", + "sv": "Parkeringsplats för flygplan", + "uk": "Місце стоянки літака", + "zh-CN": "停机位", + "zh-TW": "停機坪", + "mk": "Паркирна положба на леталото", + "he": "מיקום חניית כלי טיס" + } + }, + "aeroway/spaceport": { + "title": { + "C": "Spaceport", + "en": "Spaceport", + "de": "Weltraumbahnhof", + "el": "Διαστημοδρόμιο", + "es": "Puerto espacial", + "et": "Kosmodroom", + "fi": "Laukaisukeskus", + "fr": "Centre spatial", + "hu": "Űrállomás", + "ja": "宇宙船基地", + "ko": "우주 공항", + "no": "Rakettbase", + "pl": "Port kosmiczny", + "pt-BR": "Base de lançamento espacial", + "pt": "Cosmódromo", + "ru": "Космодром", + "uk": "Космопорт", + "vi": "Sân bay Vũ trụ", + "zh-TW": "太空發射中心", + "mk": "Космодром", + "he": "מתקן שיגור" + } + }, + "aeroway/windsock": { + "title": { + "C": "Windsock", + "en": "Windsock", + "de": "Windsack", + "eo": "Ventmontrilo (maniko)", + "es": "Manga de viento", + "et": "Tuulekott", + "fi": "Tuulisukka", + "fr": "Manche à air", + "gl": "Manga de vento", + "hu": "Szélzsák", + "it": "Manica a vento", + "ja": "吹流し", + "no": "Vindpølse", + "pl": "Rękaw (wiatrowskaz)", + "pt-BR": "Biruta", + "pt": "Manga de vento", + "sv": "Vindstrut", + "tr": "Rüzgâr hortumu", + "uk": "Вітровказ", + "vi": "Ống gió", + "zh-TW": "風向袋", + "mk": "Ветроказен ракав", + "he": "שרוול רוח" + } + }, + "amenity/arts_centre": { + "title": { + "C": "Arts Center", + "en": "Arts Center", + "ar": "مركز فنون", + "ast": "Centru d'arte", + "bn": "শিল্প কেন্দ্র", + "bs": "Centar za umjetnost", + "ca": "Centre artístic", + "cs": "Umělecké centrum", + "da": "Kunstcenter", + "de": "Kunstzentrum", + "el": "Κέντρο Καλών Τεχνών", + "en-GB": "Arts Centre", + "eo": "Belart-centro", + "es": "Centro de Arte", + "et": "Kunstide keskus", + "fa": "مرکز هنری", + "fi": "Taidekeskus", + "fr": "Centre artistique et culturel", + "gl": "Centro de arte", + "hr": "Umjetnički paviljon", + "hu": "Művészeti központ", + "id": "Pusat Kesenian", + "is": "Listamiðstöð", + "it": "Centro Culturale", + "ja": "アートセンター", + "ko": "아트 센터", + "lt": "Menų centras", + "lv": "Mākslas Centrs", + "nl": "Cultureel centrum", + "no": "Kunst Senter", + "pl": "Centrum artystyczne", + "pt-BR": "Centro Cultural", + "pt": "Centro de artes", + "ro": "Centru de Artă", + "ru": "Центр Искусств", + "sk": "Galéria umenia", + "sl": "Umetniško središče", + "sr": "Уметнички центар", + "sv": "Konstcenter", + "ta": "கலையரங்கம் ", + "tr": "Sanat Merkezi", + "uk": "Мистецький центр", + "vi": "Trung tâm Nghệ thuật", + "yue": "美術館", + "zh-CN": "艺术中心", + "zh-HK": "美術館", + "zh-TW": "藝文中心", + "mk": "Дом на уметноста", + "he": "מרכז אומנויות", + "eu": "Arte Zentro", + "en-AU": "Arts Centre" + } + }, + "amenity/atm": { + "title": { + "C": "ATM", + "en": "ATM", + "af": "ATM", + "ar": "صراف آلي", + "ast": "Caxeru automáticu", + "bn": "এটিএম", + "bs": "Bankomat", + "ca": "Caixer automàtic", + "cs": "Bankomat", + "da": "Pengeautomat", + "de": "Geldautomat", + "el": "ATM", + "en-GB": "Cash Machine", + "eo": "Bankaŭtomato", + "es": "Cajero automático", + "et": "Pangaautomaat", + "fa": "خودپرداز", + "fi": "Pankkiautomaatti", + "fr": "Distributeur de billets", + "gl": "Caixeiro automático", + "hr": "Bankomat", + "hu": "Bankautomata", + "id": "ATM", + "is": "Hraðbanki", + "it": "Bancomat", + "ja": "ATM", + "kn": "ಎಟಿಎಮ್ ", + "ko": "ATM", + "lt": "Bankomatas", + "lv": "Bankomāts", + "nl": "Bankautomaat", + "no": "Minibank", + "pl": "Bankomat", + "pt-BR": "Caixa Eletrônico", + "pt": "Multibanco", + "ro": "Bancomat", + "ru": "Банкомат", + "sk": "Bankomat", + "sl": "Bankomat", + "sr": "Банкомат", + "sv": "Uttagsautomat", + "ta": "ஏ.டி.எம்", + "tr": "ATM", + "uk": "Банкомат", + "vi": "Máy Rút tiền", + "yue": "提款機", + "zh-CN": "ATM机", + "zh-HK": "提款機", + "zh-TW": "自動櫃員機", + "zh": "自动柜员机(ATM)。", + "mk": "Банкомат", + "bg": "Банкомат", + "he": "כספומט", + "nn": "Minibank", + "eu": "ATM" + } + }, + "amenity/bank": { + "title": { + "C": "Bank", + "en": "Bank", + "af": "Bank", + "ar": "بنك", + "ast": "Bancu", + "bn": "ব্যাংক", + "bs": "Banka", + "ca": "Banc", + "cs": "Banka", + "da": "Bank", + "de": "Bank-Filiale", + "el": "Τράπεζα", + "en-GB": "Bank", + "eo": "Bankejo", + "es": "Banco", + "et": "Pank", + "fa": "بانک", + "fi": "Pankki", + "fr": "Banque", + "gl": "Banco", + "hr": "Banka", + "hu": "Bank", + "hy": "Բանկ", + "id": "Bank", + "is": "Banki", + "it": "Banca", + "ja": "銀行", + "kn": "ಬ್ಯಾಂಕ್", + "ko": "은행", + "lt": "Bankas", + "lv": "Banka", + "nl": "Bank (financieel)", + "no": "Bank", + "pl": "Bank", + "pt-BR": "Banco", + "pt": "Banco", + "ro": "Banca", + "ru": "Банк", + "sk": "Banka", + "sl": "Banka", + "sr": "Банка", + "sv": "Bank", + "ta": "வங்கி", + "te": "బ్యాంకు", + "tr": "Banka", + "uk": "Банк", + "vi": "Ngân hàng", + "yue": "銀行", + "zh-CN": "银行", + "zh-HK": "銀行", + "zh-TW": "銀行", + "zh": "银行", + "mk": "Банка", + "bg": "Банка", + "dv": "ބޭންކު", + "he": "בנק", + "eu": "Banku", + "ckb": "بانک", + "so": "Bangi" + } + }, + "amenity/bar": { + "title": { + "C": "Bar", + "en": "Bar", + "af": "Kroeg", + "ar": "حانة", + "ast": "Bar", + "bn": "পানশালা", + "bs": "Bar", + "ca": "Bar de copes", + "cs": "Bar", + "da": "Bar", + "de": "Bar", + "el": "Μπαρ", + "en-GB": "Bar", + "eo": "Drinkejo", + "es": "Bar (latam) / Bar de copas (es)", + "et": "Baar", + "fa": "بار", + "fi": "Baari", + "fr": "Bar", + "gl": "Bar de copas", + "hr": "Bar", + "hu": "Bár", + "hy": "Բար", + "id": "Bar", + "is": "Knæpa", + "it": "Bar", + "ja": "バー", + "ko": "바", + "lt": "Baras", + "lv": "Bārs", + "nl": "Bar", + "no": "Bar", + "pl": "Bar alkoholowy", + "pt-BR": "Bar requintado / Drinqueria", + "pt": "Bar", + "ro": "Bar", + "ru": "Бар", + "sk": "Bar", + "sl": "Bar", + "sr": "Бар", + "sv": "Bar", + "ta": "மதுபானக் கடை ", + "tr": "Bar", + "uk": "Бар", + "vi": "Quán rượu", + "yue": "酒吧", + "zh-CN": "酒吧", + "zh-HK": "酒吧", + "zh-TW": "酒吧", + "zh": "酒吧", + "mk": "Бар", + "bg": "Бар", + "dv": "ބާރ", + "he": "בר", + "eu": "Taberna", + "ckb": "مەیخانە", + "so": "Makhaayad" + } + }, + "amenity/bbq": { + "title": { + "C": "Barbecue/Grill", + "en": "Barbecue/Grill", + "ar": "مكان مخصص للشواء", + "ast": "Barbacoa/Asador", + "ca": "Barbacoa/graella", + "cs": "Gril", + "da": "Barbecue/Grill", + "de": "Grillplatz", + "el": "Ψησταριά/Σκάρα", + "en-GB": "Barbecue/Grill", + "eo": "Rostilo", + "es": "Asador/Parrilla", + "et": "Väligrill", + "fa": "باربیکیو / گریل", + "fi": "Grilli", + "fr": "Barbecue, grill", + "gl": "Barbacoa/Grella", + "hr": "Roštilj", + "hu": "Közösségi grillező - szallonasütő", + "id": "Barbekyu/Pemanggang", + "is": "Grill", + "it": "Barbecue/Griglia", + "ja": "バーベキュー場/グリル", + "ko": "바비큐/그릴", + "lt": "Barbekiu/Grilis", + "lv": "Barbekjū/Grills", + "nl": "Barbecue/Grill", + "no": "Grill", + "pl": "Grill", + "pt-BR": "Churrasqueira", + "pt": "Grelhador", + "ru": "Барбекю/Гриль", + "sk": "Stanovište pre gril", + "sl": "Okrepčevalnica", + "sr": "Роштиљ/печењара", + "sv": "Grillplats/Grill", + "tr": "Mangal Restoranı", + "uk": "Барбекю/мангал", + "vi": "Vỉ nướng", + "zh-CN": "烧烤设施", + "zh-HK": "燒烤", + "zh-TW": "燒烤", + "mk": "Скара", + "he": "ברביקיו", + "eu": "Barbakoa/Parrila" + } + }, + "amenity/bench": { + "title": { + "C": "Bench", + "en": "Bench", + "af": "Bankie", + "ar": "مقعد", + "ast": "Asientu", + "bn": "বেঞ্চ", + "bs": "Klupa", + "ca": "Banc", + "cs": "Lavička", + "da": "Bænk", + "de": "Sitzbank", + "el": "Παγκάκι", + "en-GB": "Bench", + "eo": "Benko", + "es": "Banco / Asiento", + "et": "Pink", + "fa": "نیمکت", + "fi": "Penkki", + "fr": "Banc", + "gl": "Banco ou asento", + "hr": "Klupa", + "hu": "Pad", + "id": "Bangku", + "is": "Bekkur", + "it": "Panchina", + "ja": "ベンチ", + "kn": " ನ್ಯಾಯಪೀಠ", + "ko": "벤치", + "lt": "Suolas", + "lv": "Sols", + "nl": "Zitbank", + "no": "Benk", + "pl": "Ławka", + "pt-BR": "Assento", + "pt": "Banco", + "ro": "Bancă", + "ru": "Скамейка", + "sk": "Lavička", + "sl": "Klop", + "sr": "Клупа", + "sv": "Bänk", + "ta": "விசுப்பலகை", + "tr": "Bank", + "uk": "Лавка", + "vi": "Băng ghế", + "yue": "長椅", + "zh-CN": "长椅", + "zh-HK": "長椅", + "zh-TW": "長椅", + "zh": "长凳", + "mk": "Клупа", + "bg": "Пейка", + "he": "ספסל", + "eu": "Banku" + } + }, + "amenity/bicycle_parking": { + "title": { + "C": "Bicycle Parking", + "en": "Bicycle Parking", + "af": "Fietsparkering", + "ar": "موقف دراجات هوائية", + "ast": "Aparcaderu de bicicletes", + "bn": "সাইকেল পার্ক করার জায়গা", + "bs": "Parking bicikala", + "ca": "Aparcament per a bicicletes", + "cs": "Parkování kol", + "da": "Cykelparkering", + "de": "Fahrradparkplatz", + "el": "Στάθμευση Ποδηλάτων", + "en-GB": "Bicycle Parking", + "eo": "Bicikla parkumejo", + "es": "Aparcamiento / estacionamiento de bicicletas", + "et": "Rattaparkla", + "fa": "پارکینگ دوچرخه", + "fi": "Pyöräpysäköinti", + "fr": "Parking à vélos", + "gl": "Aparcadoiro de bicicletas", + "hr": "Parkiralište za bicikle", + "hu": "Kerékpártároló", + "hy": "Հեծանվային կայանատեղի", + "id": "Parkir Sepeda", + "is": "Hjólastæði", + "it": "Parcheggio biciclette", + "ja": "駐輪場", + "ko": "자전거 주차장", + "lt": "Dviračių stovėjimo aikštelė", + "lv": "Velo stāvvieta", + "nl": "Fietsenstalling", + "no": "Sykkelparkering", + "pl": "Parking dla rowerów", + "pt-BR": "Bicicletário", + "pt": "Parque de bicicletas", + "ro": "Parcare biciclete", + "ru": "Велопарковка", + "sk": "Stojan pre bicykle", + "sl": "Parkirišče za kolesa", + "sr": "Бициклистички паркинг", + "sv": "Cykelparkering", + "ta": "ஈருருளை நிறுத்தகம்", + "tr": "Bisiklet Parkı", + "uk": "Велостоянка", + "vi": "Chỗ Đậu Xe đạp", + "yue": "泊單車處", + "zh-CN": "自行车停车处", + "zh-HK": "單車停放處", + "zh-TW": "單車停車場", + "zh": "自行车停放处", + "mk": "Велосипедско паркиралиште", + "bg": "Паркинг за велосипеди", + "he": "חניית אופניים", + "eu": "Bizikletentzako Aparkalekua", + "ckb": "گەراجی پاسکیل" + } + }, + "amenity/bicycle_rental": { + "title": { + "C": "Bicycle Rental", + "en": "Bicycle Rental", + "af": "Fietshuur", + "ar": "تأجير دراجات", + "ast": " Alquiler de bicicletes", + "bn": "সাইকেল ভাড়া নেয়া", + "bs": "Iznajmljivanje bicikala", + "ca": "Lloguer de bicicletes", + "cs": "Půjčovna kol", + "da": "Cykeludlejning", + "de": "Fahrradverleih", + "el": "Ενοικιαζόμενα Ποδηλάτα", + "en-GB": "Bicycle Rental", + "eo": "Bicikl-pruntejo", + "es": "Alquiler de bicicletas", + "et": "Rattarent", + "fa": "اجاره دوچرخه", + "fi": "Kaupunkipyöräasema", + "fr": "Location de vélos", + "gl": "Alugueiro de bicicletas", + "hr": "Najam bicikla", + "hu": "Kerékpárkölcsönző", + "hy": "Հեծանիվի վարձակալություն", + "id": "Penyewaan Sepeda", + "is": "Hjólaleiga", + "it": "Stazione del Bike Sharing", + "ja": "レンタサイクル", + "ko": "자전거 대여", + "lt": "Dviračių nuoma", + "lv": "Velonoma", + "nl": "Fietsverhuur", + "no": "Sykkelutleie", + "pl": "Wypożyczalnia rowerów", + "pt-BR": "Estação de Bicicletas Públicas", + "pt": "Aluguer de bicicletas", + "ro": "Închiriere biciclete", + "ru": "Велопрокат", + "sk": "Prenájom bicyklov", + "sl": "Izposoja koles", + "sr": "Изнајмљивање бицикла", + "sv": "Cykeluthyrning", + "ta": "சைக்கிள் வாடகை", + "tr": "Bisiklet Kiralama", + "uk": "Прокат велосипедів", + "vi": "Cho thuê Xe đạp", + "yue": "租單車舖", + "zh-CN": "自行车出租点", + "zh-HK": "單車出租", + "zh-TW": "單車出租", + "zh": "自行车租赁处", + "mk": "Изнајмување велосипеди", + "bg": "Наем на велосипеди", + "he": "השכרת אופניים", + "eu": "Bizikleten Alokairua " + } + }, + "amenity/bicycle_repair_station": { + "title": { + "C": "Bicycle Repair Tool Stand", + "en": "Bicycle Repair Tool Stand", + "ar": "ورشة إصلاح دراجات هوائية", + "ast": "Caballete pa reparar bicicletes", + "ca": "Lloc de reparació de Bicicletes", + "cs": "Montážní stojan na kola", + "da": "Cykelreparationsværktøj", + "de": "Fahrradreperatur-Werkzeugkasten", + "el": "Πάγκος Επισκευής Ποδηλάτων", + "en-GB": "Bicycle Repair Tool Stand", + "eo": "Bicikla mem-riparejo", + "es": "Puesto de reparación de bicicletas", + "et": "Jalgrattaremondi pukk", + "fa": "ایستگاه تعمیر دوچرخه", + "fi": "Polkupyörän huoltoteline", + "fr": "Stand d'outils de réparation de vélos", + "gl": "Lugar para ferramentas de reparación de bicicletas", + "hr": "Stalak sa alatima za bicikle", + "hu": "Önálló kerékpárszerelő pont", + "is": "Hjólaviðgerðastandur", + "it": "Stazione di riparazione biciclette", + "ja": "自転車修理店", + "ko": "자전거 수리 도구", + "lv": "Velosipēdu Remonta Darbarīku Stends", + "nl": "Openbaar fietsgereedschap", + "no": "Sykkel Mekkestativ", + "pl": "Samoobsługowa stacja naprawy rowerów", + "pt-BR": "Estação de Reparo de Bicicletas", + "pt": "Ponto de reparação de bicicletas", + "ru": "Стойка для ремонта велосипедов", + "sk": "Stojan s náradím na opravu bicyklov", + "sl": "Stojalo za popravilo koles", + "sv": "Station för cykelreparation", + "tr": "Bisiklet Tamircisi", + "uk": "Станція ремонту велосипедів", + "vi": "Quầy Sửa Xe đạp", + "zh-CN": "自行车维修工具站", + "zh-HK": "單車維修站", + "zh-TW": "自行車維修工具站", + "mk": "Држач за поправка на велосипеди", + "he": "עמדת תיקון אופניים", + "eu": "Bizikleta konpontzeko tresneriaren postua" + } + }, + "amenity/biergarten": { + "title": { + "C": "Biergarten", + "en": "Biergarten", + "cs": "Pivní zahrada", + "de": "Biergarten", + "eo": "Bierĝardeno", + "es": "Biergarten (Bar al aire libre)", + "fr": "Biergarten", + "gl": "Biergarten (xardín da cervexa alemán)", + "hu": "Sörkert", + "is": "Bjórgarður", + "it": "Biergarten", + "ja": "ビアガーデン", + "ko": "옥외 식탁", + "nl": "Biergarten", + "no": "Ølhage", + "pl": "Ogródek piwny", + "pt-BR": "Biergarten", + "pt": "Jardim de cerveja", + "ru": "Пивной сад", + "sv": "Ölträdgård", + "tr": "Bira bahçesi", + "uk": "Пивний садок", + "vi": "Vườn Bia", + "zh-CN": "啤酒花园", + "zh-HK": "露天啤酒店", + "zh-TW": "啤酒花園 ", + "mk": "Пивска градина", + "he": "ביר גרדן", + "eu": "Biergarten" + } + }, + "amenity/boat_rental": { + "title": { + "C": "Boat Rental", + "en": "Boat Rental", + "ar": "محل استئجار قوارب", + "ast": "Alquiler de barcos", + "bs": "Iznajmljivanje plovila", + "ca": "Lloguer d'embarcacions", + "cs": "Půjčovna lodí", + "da": "Bådudlejning", + "de": "Bootsvermietung", + "el": "Ενοικίαση Σκαφών", + "en-GB": "Boat Rental", + "eo": "Boat-pruntejo", + "es": "Alquiler de barcos", + "et": "Paadi laenutus", + "fa": "کرایه قایق", + "fi": "Venevuokraamo", + "fr": "Location de bateau", + "gl": "Alugueiro de embarcacións", + "hr": "Najam brodova", + "hu": "Hajókölcsönző", + "id": "Penyewaan Perahu Boat", + "is": "Bátaleiga", + "it": "Noleggio barche", + "ja": "貸しボート", + "ko": "보트 대여소", + "lt": "Laivų nuoma", + "lv": "Laivu īre", + "nl": "Bootverhuur", + "no": "Båuttleie", + "pl": "Wypożyczalnia łodzi", + "pt-BR": "Aluguel de Barcos", + "pt": "Aluguer de barcos", + "ro": "Închiriere Barcă", + "ru": "Аренда Лодок", + "sk": "Prenájom lodí", + "sl": "Izposoja plovil", + "sr": "Изнајмљивање чамаца", + "sv": "Båtuthyrning", + "tr": "Bot Kiralama", + "uk": "Прокат човнів", + "vi": "Cho thuê Tàu", + "yue": "租艇", + "zh-CN": "船舶租赁处", + "zh-HK": "租艇", + "zh-TW": "小艇出租", + "mk": "Изнајмување чамци", + "he": "השכרת סירה", + "eu": "Ontzi alokairu" + } + }, + "amenity/bureau_de_change": { + "title": { + "C": "Currency Exchange", + "en": "Currency Exchange", + "ar": "تحويل أموال", + "ast": "Cambiu de moneda", + "ca": "Canvi de divisa", + "cs": "Směnárna", + "da": "Valutaveksling", + "de": "Geldwechselstube", + "el": "Ανταλλακτήριο Συναλλάγματος", + "en-GB": "Currency Exchange", + "eo": "Monŝanĝejo", + "es": "Cambio de moneda", + "et": "Valuutavahetus", + "fa": "تبدیل ارز / صرافی", + "fi": "Valuutanvaihtopiste", + "fr": "Bureau de change", + "gl": "Troco de divisas", + "hr": "Mjenjačnica", + "hu": "Pénzváltó", + "id": "Penukaran Mata Uang", + "is": "Gjaldmiðlaskipti", + "it": "Cambiavalute", + "ja": "両替所", + "ko": "환전소", + "lt": "Valiutos keitykla", + "lv": "Valūtas Maiņa", + "nl": "Wisselkantoor", + "no": "Valutaveksling", + "pl": "Kantor", + "pt-BR": "Casa de Câmbio", + "pt": "Agência de câmbio", + "ro": "Schimbare Valută", + "ru": "Пункт обмена валюты", + "sk": "Zmenáreň", + "sl": "Menjalnica", + "sr": "Мењачница", + "sv": "Växlingskontor", + "ta": "பணப் பரிமாற்றம்", + "tr": "Döviz Bürosu", + "uk": "Обмін валют", + "vi": "Đổi tiền", + "zh-CN": "货币兑换", + "zh-HK": "外幣兌換", + "zh-TW": "外幣兌換", + "mk": "Менувачница", + "he": "המרת מט״ח", + "eu": "Moneta trukea", + "ckb": "گۆڕینەوەی دراو" + } + }, + "amenity/cafe": { + "title": { + "C": "Cafe", + "en": "Cafe", + "af": "Kafee", + "ar": "مقهى", + "ast": "Café", + "bn": "ক্যাফে", + "bs": "Kafe", + "ca": "Cafè", + "cs": "Kavárna", + "da": "Cafe", + "de": "Café", + "el": "Καφετέρια", + "en-GB": "Cafe", + "eo": "Kafejo", + "es": "Cafetería", + "et": "Kohvik", + "fa": "کافه", + "fi": "Kahvila", + "fr": "Café", + "gl": "Cafetaría", + "hr": "Kafić", + "hu": "Kávézó", + "hy": "Սրճարան", + "id": "Kafe", + "is": "Kaffihús", + "it": "Caffè", + "ja": "喫茶店", + "ko": "카페", + "lt": "Kavinė", + "lv": "Kafejnīca", + "nl": "Cafetaria", + "no": "Kafé", + "pl": "Kawiarnia", + "pt-BR": "Cafeteria", + "pt": "Café", + "ro": "Cafenea", + "ru": "Кафе", + "sk": "Kaviareň", + "sl": "Kavarna", + "sr": "Кафе", + "sv": "Café", + "ta": "டீக்கடை", + "tr": "Kafe", + "uk": "Кафе", + "vi": "Quán Cà phê", + "yue": "茶座", + "zh-CN": "咖啡馆", + "zh-HK": "茶座", + "zh-TW": "咖啡廳", + "zh": "咖啡", + "mk": "Кафетерија", + "bg": "Кафене", + "dv": "ކެފޭ", + "he": "בית קפה", + "ms": "Kafe", + "eu": "Kafetegi", + "so": "Kafateeriya" + } + }, + "amenity/car_rental": { + "title": { + "C": "Car Rental", + "en": "Car Rental", + "af": "Kar huur", + "ar": "محل إيجار سيارات", + "ast": "Alquiler d'automóviles", + "bn": "গাড়ি ভাড়া", + "bs": "Rent-a-car", + "ca": "Lloguer de cotxes", + "cs": "Půjčovna aut", + "da": "Biludlejning", + "de": "Autovermietung", + "el": "Ενοικίαση Αυτοκινήτων", + "en-GB": "Car Rental", + "eo": "Aŭtomobil-pruntejo", + "es": "Alquiler de automóviles", + "et": "Autorent", + "fa": "کرایه ماشین", + "fi": "Autonvuokraus", + "fr": "Location de voiture", + "gl": "Alugueiro de automóbiles", + "hr": "Najam automobila", + "hu": "Autókölcsönző", + "id": "Penyewaan Mobil", + "is": "Bílaleiga", + "it": "Noleggio auto", + "ja": "レンタカー", + "ko": "자동차 대여", + "lt": "Automobilių nuoma", + "lv": "Autonoma", + "nl": "Autoverhuur", + "no": "Bilutleie", + "pl": "Wypożyczalnia samochodów", + "pt-BR": "Locadora de veículos", + "pt": "Aluguer de automóveis", + "ro": "Închiriere Mașini", + "ru": "Аренда автомобилей", + "sk": "Autopožičovňa", + "sl": "Izposoja avtomobilov", + "sr": "Изнајмљивање возила", + "sv": "Biluthyrning", + "tr": "Araç Kiralama", + "uk": "Прокат автомобілів", + "vi": "Cho thuê Xe", + "yue": "租車舖", + "zh-CN": "汽车租赁", + "zh-HK": "汽車租賃", + "zh-TW": "汽車租車店", + "mk": "Изнајмување автомобили", + "bg": "Коли под наем", + "he": "השכרת רכב", + "eu": "Auto Alokairua" + } + }, + "amenity/car_sharing": { + "title": { + "C": "Car Sharing Station", + "en": "Car Sharing Station", + "ar": "محطة مشاركة السيارات", + "da": "Delebilsstation", + "de": "Car Sharing Station", + "es": "Estación de uso temporal de vehículos (Carsharing)", + "ja": "カーシェアリング", + "pl": "Stacja miejskiej wypożyczalni samochodów", + "pt-BR": "Estação de compartilhamento de carros", + "pt": "Posto de partilha de automóvel", + "uk": "Каршерінг станція", + "zh-CN": "共享汽车站点", + "zh-TW": "共享汽車站", + "mk": "Станица за споделување автомобили", + "he": "תחנת שיתוף מכוניות" + } + }, + "amenity/car_wash": { + "title": { + "C": "Car Wash", + "en": "Car Wash", + "af": "Karwas", + "ar": "غسيل سيارات", + "ast": "Llaváu de coches", + "bs": "Autopraonica", + "ca": "Rentat de cotxes", + "cs": "Automyčka", + "da": "Bilvask", + "de": "Autowäsche", + "el": "Πλυντήριο Αυτοκινήτων", + "en-GB": "Car Wash", + "eo": "Aŭtopurigejo", + "es": "Lavado de automóviles", + "et": "Autopesula", + "fa": "کارواش", + "fi": "Autopesula", + "fr": "Station de lavage de voiture", + "gl": "Lavado de automóbiles", + "hr": "Autopraonica", + "hu": "Autómosó", + "id": "Pencucian Mobil", + "is": "Bílaþvottur", + "it": "Autolavaggio", + "ja": "洗車場", + "ko": "세차장", + "lt": "Automobilių plovykla", + "lv": "Automazgātuve", + "nl": "Autowasstraat", + "no": "Bilvask", + "pl": "Myjnia samochodowa", + "pt-BR": "Lava a Jato", + "pt": "Lavagem de veículos", + "ro": "Spălătorie Auto", + "ru": "Автомойка", + "sk": "Autoumyváreň", + "sl": "Avtopralnica", + "sr": "Ауто-перионица", + "sv": "Biltvätt", + "tr": "Araç Yıkama", + "uk": "Автомийка", + "vi": "Rửa xe", + "yue": "洗車舖", + "zh-CN": "洗车", + "zh-HK": "洗車店", + "zh-TW": "洗車店", + "zh": "洗车", + "mk": "Автоперална", + "bg": "Автомивка", + "he": "שטיפת רכב", + "eu": "Auto garbiketa", + "ckb": "شووشتنگەی ئۆتۆمبێل" + } + }, + "amenity/casino": { + "title": { + "C": "Casino", + "en": "Casino", + "ar": "كازينو", + "ast": "Casino", + "ca": "Casino", + "cs": "Kasino", + "da": "Kasino", + "de": "Kasino", + "el": "Καζίνο", + "en-GB": "Casino", + "eo": "Monludejo", + "es": "Casino", + "et": "Kasiino", + "fa": "کازینو", + "fi": "Kasino", + "fr": "Casino", + "gl": "Casino", + "hr": "Kasino", + "hu": "Kaszinó", + "id": "Kasino", + "is": "Spilavíti", + "it": "Casinò", + "ja": "カジノ", + "ko": "카지노", + "lt": "Kazino", + "lv": "Kazino", + "nl": "Casino", + "no": "Kasino", + "pl": "Kasyno", + "pt-BR": "Cassino", + "pt": "Casino", + "ro": "Cazino", + "ru": "Казино", + "sk": "Kasíno", + "sl": "Igralnica", + "sr": "Казино", + "sv": "Kasino", + "tr": "Kumarhane", + "uk": "Казино", + "vi": "Sòng bạc", + "zh-CN": "赌场", + "zh-HK": "賭場", + "zh-TW": "賭場", + "mk": "Коцкарница", + "he": "קזינו", + "eu": "Kasino", + "ckb": "گازینۆ" + } + }, + "amenity/charging_station": { + "title": { + "C": "Charging Station", + "en": "Charging Station", + "ar": "محطة شحن", + "ast": "Estación de recarga", + "ca": "Estació de càrrega", + "cs": "Nabíjecí stanice", + "da": "Opladerstation", + "de": "Ladestation für Elektrofahrzeuge", + "el": "Σταθμός Φόρτισης", + "en-GB": "Charging Station", + "eo": "Ŝargostacio", + "es": "Estación de carga para vehículos eléctricos", + "et": "Laadimisjaam", + "fa": "ایستگاه شارژ", + "fi": "Latauspiste", + "fr": "Borne de recharge", + "gl": "Estación de carga", + "hr": "Punionica za električna vozila", + "hu": "Elektromos töltőállomás", + "is": "Hleðslustöð", + "it": "Stazione di ricarica", + "ja": "充電スタンド", + "ko": "충전소", + "lt": "Įkrovimo stotelė", + "lv": "Uzlādes stacija", + "nl": "Oplaadstation", + "no": "Ladestasjon", + "pl": "Stacja ładowania pojazdów", + "pt-BR": "Estação de carregamento", + "pt": "Posto de carregamento", + "ro": "Benzinărie", + "ru": "Станция зарядки", + "sk": "Nabíjacia stanica", + "sl": "Polnilna postaja", + "sv": "Laddstation", + "tr": "Şarj İstasyonu", + "uk": "Зарядна станція", + "vi": "Trạm Sạc Pin", + "zh-CN": "充电站", + "zh-HK": "充電站", + "zh-TW": "充電站", + "mk": "Напојна станица", + "he": "תחנת טעינה", + "eu": "Kargatzeko geltokia" + } + }, + "amenity/childcare": { + "title": { + "C": "Nursery/Childcare", + "en": "Nursery/Childcare", + "ar": "رعاية الأطفال", + "ast": "Preescolar/Guardería", + "ca": "Llar d'Infants", + "cs": "Předškolní a mimoškolní péče", + "da": "Dagpleje/Vuggestue", + "de": "Kindergrippenbetreuung, Kindertagesstätte", + "el": "Παιδιατρική", + "en-GB": "Nursery/Childcare", + "eo": "Bebovartejo", + "es": "Guardería/Cuidado de niños", + "et": "Lastehoid", + "fa": "مهدکودک/مراقبت از کودکان", + "fi": "Päiväkoti", + "fr": "Crèche, garde d'enfants", + "gl": "Gardaría", + "hr": "Jaslice", + "hu": "Bölcsőde", + "id": "Tempat Penitipan Anak", + "is": "Barnagæsla/dagvistun", + "it": "Asilo nido", + "ja": "保育所", + "ko": "보육/육아", + "lv": "Bērnistaba / Bērnu aprūpe", + "nl": "Kinderdagverblijf", + "pl": "Żłobek", + "pt-BR": "Berçário ou Creche", + "pt": "Berçário / Creche", + "ro": "Grădiniță", + "ru": "Детская комната", + "sk": "Detská starostlivosť", + "sl": "Jasli / Vrtec", + "sr": "Обданиште", + "sv": "Barnomsorg", + "tr": "Çocuk Bakımı", + "uk": "Дитяча кімната", + "vi": "Giữ trẻ", + "zh-CN": "托儿所/保育园", + "zh-HK": "託兒所/幼兒護理", + "zh-TW": "托兒所/托嬰處", + "mk": "Детска градинка", + "he": "גנון", + "eu": "Haurtzendegi/ Ume zaintza" + } + }, + "amenity/cinema": { + "title": { + "C": "Cinema", + "en": "Cinema", + "af": "Fliek", + "ar": "سينما", + "ast": "Cine", + "bn": "সিনেমা", + "bs": "Kino", + "ca": "Cinema", + "cs": "Kino", + "da": "Biograf", + "de": "Kino", + "el": "Κινηματογράφος", + "en-GB": "Cinema", + "eo": "Kinejo", + "es": "Cine", + "et": "Kino", + "fa": "سینما", + "fi": "Elokuvateatteri", + "fr": "Cinéma", + "gl": "Cine", + "hr": "Kino", + "hu": "Mozi", + "hy": "Կինոթատրոն", + "id": "Bioskop", + "is": "Kvikmyndahús", + "it": "Cinema", + "ja": "映画館", + "kn": "ಸಿನಿಮಾ", + "ko": "영화관", + "lt": "Kino teatras", + "lv": "Kino", + "nl": "Bioscoop", + "no": "Kino", + "pl": "Kino", + "pt-BR": "Cinema", + "pt": "Cinema", + "ro": "Cinema", + "ru": "Кинотеатр", + "sk": "Kino", + "sl": "Kino", + "sr": "Биоскоп", + "sv": "Biograf", + "ta": "சினிமா", + "te": "సినిమా హాలు", + "tr": "Sinema", + "uk": "Кінотеатр", + "vi": "Rạp phim", + "yue": "電影戲院", + "zh-CN": "电影院", + "zh-HK": "戲院", + "zh-TW": "電影院", + "zh": "电影院", + "mk": "Кино", + "bg": "Кино", + "dv": "ސިނަމާ", + "he": "קולנוע", + "eu": "Zinema", + "ckb": "سینەما", + "so": "Shaneemo" + } + }, + "amenity/clinic": { + "title": { + "C": "Clinic", + "en": "Clinic", + "ar": "عيادة", + "ast": "Clínica", + "bs": "Klinika", + "ca": "Clínica", + "cs": "Poliklinika", + "da": "Klinik", + "de": "Klinik", + "el": "Κλινική", + "en-GB": "Clinic", + "eo": "Kuracistejo (centro de komunuma sano)", + "es": "Clínica", + "et": "Kliinik", + "fa": "کلینیک", + "fi": "Terveyskeskus", + "fr": "Centre médical de taille moyenne, soins en ambulatoire", + "gl": "Clínica ou centro de saúde", + "hr": "Klinika", + "hu": "Rendelőintézet", + "id": "Klinik", + "is": "Læknastofa", + "it": "Clinica medica", + "ja": "クリニック(中規模病院)", + "kn": "ಚಿಕಿತ್ಸಾಲಯ", + "ko": "클리닉", + "lt": "Klinika", + "lv": "Klīnika", + "nl": "Dagkliniek", + "no": "Klinikk", + "pl": "Klinika/oddział", + "pt-BR": "Clínica ou Posto de Saúde", + "pt": "Posto médico", + "ro": "Clinică", + "ru": "Клиника", + "sk": "Klinika", + "sl": "Klinika", + "sr": "Клиника", + "sv": "Vårdcentral", + "tr": "Klinik", + "uk": "Клініка", + "vi": "Trạm Y tế", + "zh-CN": "诊所", + "zh-HK": "診所", + "zh-TW": "診所", + "mk": "Клиника", + "he": "מרפאה", + "eu": "Erietxe", + "ckb": "نۆڕینگە" + } + }, + "amenity/clock": { + "title": { + "C": "Clock", + "en": "Clock", + "ar": "ساعة", + "ast": "Reló", + "ca": "Rellotge", + "cs": "Hodiny", + "da": "Ur", + "de": "Uhr", + "el": "Ρολόι", + "en-GB": "Clock", + "eo": "Horloĝo", + "es": "Reloj", + "et": "Kell", + "fa": "ساعت", + "fi": "Kello", + "fr": "Horloge", + "gl": "Reloxo", + "hi": "घडी", + "hr": "Sat", + "hu": "Óra", + "id": "Jam", + "is": "Klukka", + "it": "Orologio", + "ja": "時計", + "kn": "ಗಡಿಯಾರ", + "ko": "시계", + "lt": "Laikrodis", + "lv": "Pulkstenis", + "nl": "Klok", + "no": "Klokke", + "pl": "Zegar", + "pt-BR": "Relógio", + "pt": "Relógio", + "ro": "Ceas", + "ru": "Часы", + "sk": "Hodiny", + "sl": "Ura", + "sr": "Сат", + "sv": "Klocka", + "ta": "கடிகாரம்", + "tr": "Saat", + "uk": "Годинник", + "vi": "Đồng hồ", + "zh-CN": "时钟", + "zh-HK": "時鐘", + "zh-TW": "時鐘", + "mk": "Часовник", + "he": "שעון", + "eu": "Ordulari", + "ckb": "کاتژمێر" + } + }, + "amenity/college": { + "title": { + "C": "College Grounds", + "en": "College Grounds", + "ar": "أرض كلية", + "ast": "Terrén de colexu universitariu", + "ca": "Escola professional", + "cs": "Prostor vyšší odborné školy/college", + "da": "Universitetsområder", + "de": "Hochschulgelände", + "el": "Χώρος Κολλεγίου", + "en-GB": "College Grounds", + "eo": "Postmezgrada lernejo (ISCED 4)", + "es": "Terreno de centro educativo superior no universitario", + "et": "Kolledžiala", + "fa": "محیط کالج", + "fi": "Korkeakoulualue (college)", + "fr": "Enseignement supérieur (non universitaire) - institution ou campus", + "gl": "Área de educación superior", + "hr": "Fakultetsko zemljište", + "hu": "Főiskola", + "id": "Lapangan Kampus", + "is": "Framhaldskólalóð", + "it": "Area di un College", + "ja": "短大・高専・専門学校(代表点または敷地)", + "ko": "전문대학 부지", + "lt": "Kolegijos kiemas", + "nl": "Campus van beroepsschool", + "pl": "Teren koledżu / szkoły policealnej", + "pt-BR": "Escola técnica", + "pt": "Colégio", + "ru": "Территория колледжа", + "sk": "Vysoká škola", + "sl": "Šolsko središče", + "sv": "Collegeområde", + "tr": "Üniversite Kampüsü", + "uk": "Територія коледжу", + "vi": "Sân trường Cao đẳng", + "zh-CN": "学院", + "zh-HK": "學院範圍", + "zh-TW": "學院範圍", + "mk": "Средношколски двор", + "he": "גן המכללה", + "eu": "Unibertsitate Eremu" + } + }, + "amenity/community_centre": { + "title": { + "C": "Community Center", + "en": "Community Center", + "ar": "مركز اجتماعي", + "ast": "Centru comunitariu", + "ca": "Centre Comunitari", + "cs": "Komunitní centrum", + "da": "Medborgerhus", + "de": "Gemeindezentrum", + "el": "Κέντρο Κοινότητας", + "en-GB": "Community Centre", + "eo": "Komunuma centro", + "es": "Centro Comunitario", + "et": "Kogukonna keskus", + "fa": "مرکز اجتماع", + "fi": "Yhteisökeskus", + "fr": "Salle polyvalente", + "gl": "Centro comunitario", + "hr": "Društveni centar", + "hu": "Közösségi ház", + "is": "Samfélagsmiðstöð", + "it": "Centro sociale (pubblico)", + "ja": "コミュニティセンター", + "ko": "커뮤니티 센터", + "lt": "Bendruomenės centras", + "lv": "Kopienas centrs", + "nl": "Buurthuis", + "no": "Samfunnshus", + "pl": "Centrum społeczności", + "pt-BR": "Centro Comunitário", + "pt": "Centro comunitário", + "ro": "Centru Comunitar", + "ru": "Культурный центр", + "sk": "Komunitné centrum", + "sl": "Središče skupnosti", + "sr": "Дом културе", + "sv": "Samlingslokal", + "tr": "Toplum Merkezi", + "uk": "Суспільний центр", + "vi": "Trung tâm Cộng đồng", + "zh-CN": "社区活动中心", + "zh-HK": "社區中心", + "zh-TW": "社區中心", + "mk": "Месна заедница", + "he": "מרכז קהילתי", + "eu": "Gizarte Etxe", + "en-AU": "Community Centre" + } + }, + "amenity/compressed_air": { + "title": { + "C": "Compressed Air", + "en": "Compressed Air", + "ar": "هواء مضغوط", + "ast": "Aire comprimíu", + "ca": "Aire comprimit", + "cs": "Stlačený vzduch", + "da": "Luftpumpe", + "de": "Druckluft", + "el": "Πεπιεσμένος Αέρας", + "en-GB": "Compressed Air", + "eo": "Gaskunpremilo", + "es": "Aire comprimido", + "et": "Suruõhk", + "fa": "هوای فشرده", + "fi": "Ilmanpainepiste", + "fr": "Air comprimé", + "gl": "Aire comprimido", + "hr": "Komprimirani zrak", + "hu": "Sűrített levegő", + "id": "Pompa Ban", + "is": "Loftdæla", + "it": "Aria Compressa", + "ja": "空気入れ", + "ko": "압축된 공기", + "lt": "Suspaustas oras", + "lv": "Saspiests Gaiss", + "nl": "Perslucht", + "no": "Komprimert Luft", + "pl": "Kompresor", + "pt-BR": "Bomba de ar comprimido", + "pt": "Ar comprimido", + "ro": "Aer Comprimat", + "ru": "Сжатый воздух", + "sk": "Stlačený vzduch", + "sl": "Zračni kompresor", + "sr": "Компримовани ваздух", + "sv": "Tryckluft", + "tr": "Hava Basma İstasyonu", + "uk": "Стисненне повітря", + "vi": "Khí Nén", + "zh-CN": "压缩空气", + "zh-HK": "打氣服務", + "zh-TW": "壓縮空氣", + "mk": "Компресор", + "he": "אוויר דחוס", + "eu": "Aire konpromitua" + } + }, + "amenity/courthouse": { + "title": { + "C": "Courthouse", + "en": "Courthouse", + "af": "Hof", + "ar": "محكمة", + "ast": "Xulgáu", + "bs": "Sudnica", + "ca": "Jutjat", + "cs": "Soud", + "da": "Domstolsbygning", + "de": "Gericht", + "el": "Δικαστήριο", + "en-GB": "Courthouse", + "eo": "Juĝdomo", + "es": "Juzgado", + "et": "Kohtumaja", + "fa": "دادگاه", + "fi": "Tuomioistuin", + "fr": "Tribunal", + "gl": "Xulgado", + "hr": "Zgrada suda", + "hu": "Bíróság", + "id": "Pengadilan", + "is": "Dómhús", + "it": "Tribunale", + "ja": "裁判所", + "ko": "법원", + "lt": "Teismo rūmai", + "lv": "Tiesas nams", + "nl": "Gerechtsgebouw", + "no": "Tinghus", + "pl": "Sąd", + "pt-BR": "Tribunal", + "pt": "Tribunal", + "ro": "Tribunal", + "ru": "Суд", + "sk": "Súd", + "sl": "Sodišče", + "sr": "Судница", + "sv": "Domstol", + "tr": "Mahkeme", + "uk": "Суд", + "vi": "Tòa", + "yue": "法庭", + "zh-CN": "法院", + "zh-HK": "法庭", + "zh-TW": "法院", + "zh": "法院", + "mk": "Суд", + "bg": "Съд", + "he": "בית משפט", + "eu": "Epaitegi" + } + }, + "amenity/dentist": { + "title": { + "C": "Dentist", + "en": "Dentist", + "ar": "طبيب أسنان", + "ast": "Dentista", + "bs": "Zubar", + "ca": "Dentista", + "cs": "Zubař", + "da": "Tandlæge", + "de": "Zahnarzt, Zahnärztin", + "el": "Οδοντιατρείο", + "en-GB": "Dentist", + "eo": "Dentistejo", + "es": "Dentista", + "et": "Hambaarst", + "fa": "دندانپزشکی", + "fi": "Hammaslääkäriasema", + "fr": "Dentiste", + "gl": "Dentista", + "hr": "Zubar", + "hu": "Fogorvos", + "id": "Dokter Gigi", + "is": "Tannlæknir", + "it": "Dentista", + "ja": "歯医者", + "kn": "ದಂತವೈದ್ಯ", + "ko": "치과 의원", + "lt": "Dantistas", + "lv": "Zobārsts", + "nl": "Tandarts", + "no": "Tannlege", + "pl": "Dentysta", + "pt-BR": "Dentista", + "pt": "Dentista", + "ro": "Dentist", + "ru": "Стоматология", + "sk": "Zubár", + "sl": "Zobozdravnik", + "sr": "Зубар", + "sv": "Tandläkare", + "ta": "பல் மருத்துவர் ", + "tr": "Dişçi", + "uk": "Стоматолог", + "vi": "Nha sĩ", + "yue": "牙醫", + "zh-CN": "牙科医院", + "zh-HK": "牙醫", + "zh-TW": "牙醫", + "mk": "Забар", + "he": "מרפאת שיניים", + "nn": "Tannlege", + "eu": "Dentista", + "ckb": "ددانساز" + } + }, + "amenity/doctors": { + "title": { + "C": "Doctor", + "en": "Doctor", + "ar": "طبيب", + "ast": "Doctor", + "ca": "Doctor", + "cs": "Lékař", + "da": "Læge", + "de": "Arzt, Ärztin", + "el": "Ιατρός", + "en-GB": "Doctor", + "eo": "Kabineto de kuracisto", + "es": "Doctor", + "et": "Arst", + "fa": "مطب دکتر", + "fi": "Yksityinen lääkäri", + "fr": "Médecin", + "gl": "Doutor", + "hr": "Doktor", + "hu": "Orvos", + "is": "Læknir", + "it": "Medico di base", + "ja": "医院(小規模病院)", + "kn": "ವೈದ್ಯರು", + "ko": "의원", + "lt": "Daktaras", + "lv": "Dakteris", + "nl": "Dokter", + "no": "Lege", + "pl": "Gabinet lekarski lub przychodnia", + "pt-BR": "Consultório médico", + "pt": "Consultório médico", + "ro": "Doctor", + "ru": "Кабинет врача", + "sk": "Doktor", + "sl": "Zdravnik", + "sr": "Доктор", + "sv": "Doktor", + "ta": "மருத்துவர் ", + "tr": "Doktor", + "uk": "Лікар", + "vi": "Bác sĩ", + "yue": "醫生", + "zh-CN": "医师", + "zh-HK": "醫生", + "zh-TW": "醫生", + "mk": "Лекар", + "he": "רופא", + "eu": "Mediku", + "ckb": "پزیشک" + } + }, + "amenity/dojo": { + "title": { + "C": "Dojo / Martial Arts Academy", + "en": "Dojo / Martial Arts Academy", + "ar": "دوجو / أكاديمية الفنون القتالية", + "ast": "Dojo / Academia d'artes marciales", + "ca": "Dojo / Acadèmia d'arts marcials", + "cs": "Škola bojových umění", + "da": "Dojo/Kampsportsakademi", + "de": "Kampfsportstudio", + "el": "Ντότζο/ Σχολή Πολεμικών Τεχνών", + "en-GB": "Dojo / Martial Arts Academy", + "eo": "Doĵo / batalart-lernejo", + "es": "Academia de artes marciales", + "fa": "باشگاه / آموزشگاه هنرهای رزمی", + "fi": "Japanilaisten itsepuolustuslajien harjoittelupaikka", + "fr": "Dojo", + "gl": "Dojo/academia de artes marciais", + "hr": "Škola borilačkih vještina", + "hu": "Harcművészeti edzőterem / dodzso", + "id": "Sasana Bela Diri", + "is": "Dojo / Bardagaíþróttir", + "it": "Dojo/Accademia di arti marziali", + "ja": "道場", + "ko": "도장 / 무술 학원", + "lv": "Dojo / Karatē apmācība", + "nl": "Dojo / School voor Japanse krijgskunsten", + "pl": "Dojo/szkoła sztuk walki", + "pt-BR": "Academia de Artes Marciais", + "pt": "Centro de artes marciais", + "ru": "Додзё / Школа боевых искусств", + "sk": "Škola bojových umení", + "sl": "Dojo in šola borilnih veščin", + "sr": "Школа борилачких вештина", + "sv": "Dojo / Akademi för kampsport", + "tr": "Dövüş Sanatları Akademisi", + "uk": "Додзьо / Школа бойових мистецтв", + "vi": "Võ đường", + "zh-CN": "道场/武术学院", + "zh-HK": "道場/武術學院", + "zh-TW": "道場/武術研習班", + "mk": "Училиште за боречки вештини", + "he": "דוג׳ו / מרכז לאומנויות לחימה" + } + }, + "amenity/drinking_water": { + "title": { + "C": "Drinking Water", + "en": "Drinking Water", + "af": "Drinkwater", + "ar": "مياه شرب", + "ast": "Agua potable", + "bn": "পানীয় জল", + "bs": "Voda za piće", + "ca": "Aigua apta per al consum", + "cs": "Pitná voda", + "da": "Drikkevand", + "de": "Trinkwasser", + "el": "Πόσιμο Νερό", + "en-GB": "Drinking Water", + "eo": "Trinkakvejo", + "es": "Fuente de agua potable", + "et": "Joogivesi", + "fa": "آب آشامیدنی", + "fi": "Juomavesipiste", + "fr": "Eau potable", + "gl": "Fonte de auga potábel", + "hi": "पीने का पानी", + "hr": "Pitka voda", + "hu": "Ivóvíz", + "id": "Air Minum", + "is": "Drykkjarvatn", + "it": "Fontanella", + "ja": "水飲み場", + "ko": "식수대", + "lt": "Geriamas vanduo", + "lv": "Dzeramūdens", + "nl": "Drinkwaterkraantje", + "no": "Drikkevann", + "pl": "Woda pitna", + "pt-BR": "Bebedouro", + "pt": "Água potável", + "ro": "Apă de Băut", + "ru": "Питьевая вода", + "si": "බොනවතුර", + "sk": "Pitná voda", + "sl": "Pitna voda", + "sr": "Пијаћа вода", + "sv": "Dricksvatten ", + "ta": "குடிநீர் ", + "te": "తాగే నీరు", + "tr": "İçme Suyu", + "uk": "Питна вода", + "vi": "Nước Uống", + "yue": "飲水處", + "zh-CN": "饮水处", + "zh-HK": "飲用水", + "zh-TW": "飲水機", + "mk": "Пивка вода", + "bg": "Чешма", + "he": "מי שתייה", + "eu": "Ur edangarria", + "ckb": "ئاوی خواردنەوە" + } + }, + "amenity/fast_food": { + "title": { + "C": "Fast Food", + "en": "Fast Food", + "af": "Kitskos", + "ar": "وجبات سريعة", + "ast": "Comida rápida", + "bn": "ফাস্টফুড", + "bs": "Fast Food", + "ca": "Local de menjar ràpid", + "cs": "Rychlé občerstvení", + "da": "Fast food", + "de": "Schnellimbiss", + "el": "Ταχυφαγείο", + "en-GB": "Fast Food", + "eo": "Rapidmanĝejo", + "es": "Comida rápida", + "et": "Kiirtoitlustus", + "fa": "فست فود", + "fi": "Pikaruokaravintola", + "fr": "Restauration rapide", + "gl": "Comida rápida", + "hr": "Brza hrana", + "hu": "Gyorsétterem", + "hy": "Արագ սնունդ", + "id": "Makanan Cepat Saji", + "is": "Skyndibiti", + "it": "Fast Food", + "ja": "ファストフード全般", + "ko": "패스트푸드", + "lt": "Greitas maistas", + "lv": "Ātrās ēdināšanas iestāde", + "nl": "Fastfoodrestaurant", + "no": "Hurtigmat", + "pl": "Bar / fast food", + "pt-BR": "Lanchonete", + "pt": "Comida rápida", + "ro": "Fast Food", + "ru": "Фаст-фуд", + "sk": "Rýchle občerstvenie", + "sl": "Hitra prehrana", + "sr": "Брза храна", + "sv": "Snabbmat", + "ta": "துரித உணவு", + "tr": "Fast Food", + "uk": "Фаст-Фуд", + "vi": "Nhà hàng Ăn nhanh", + "yue": "快餐店", + "zh-CN": "快餐店", + "zh-HK": "快餐店", + "zh-TW": "速食餐廳", + "zh": "快餐", + "mk": "Брза храна", + "bg": "Бърза закуска", + "dv": "ފާސްޓް ފުޑް", + "he": "מזון מהיר", + "ms": "Makanan Segera", + "eu": "Janari azkarra", + "ckb": "خواردنی خێرا", + "so": "Cuntooyinka Fudud" + } + }, + "amenity/fire_station": { + "title": { + "C": "Fire Station", + "en": "Fire Station", + "af": "Brandweerstasie", + "ar": "محطة إطفاء حريق", + "ast": "Parque de bomberos", + "bn": "দমকল", + "bs": "Vatrogasna stanica", + "ca": "Parc de bombers", + "cs": "Hasiči", + "da": "Brandstation", + "de": "Feuerwehrhaus", + "el": "Πυροσβεστικός Σταθμός", + "en-GB": "Fire Station", + "eo": "Fajrobrigadejo", + "es": "Estación de bomberos", + "et": "Päästedepoo", + "fa": "ایستگاه آتش نشانی", + "fi": "Paloasema", + "fr": "Caserne de pompiers", + "gl": "Parque de bombeiros", + "hr": "Vatrogasna postaja", + "hu": "Tűzoltóság", + "id": "Kantor Pemadam Kebakaran", + "is": "Slökkvistöð", + "it": "Caserma dei vigili del fuoco", + "ja": "消防署", + "kn": "ಅಗ್ನಿಶಾಮಕ ಕೇಂದ್ರ", + "ko": "소방서", + "lt": "Gaisrinė", + "lv": "Ugunsdzēsēju stacija", + "nl": "Brandweerkazerne", + "no": "Brannstasjon", + "pl": "Remiza strażacka", + "pt-BR": "Posto de Bombeiros", + "pt": "Quartel de bombeiros", + "ro": "Pompieri", + "ru": "Пожарная часть", + "sk": "Požiarna stanica", + "sl": "Gasilska postaja", + "sr": "Ватрогасна станица", + "sv": "Brandstation", + "ta": "தீயணைப்பு நிலையம்", + "tr": "İtfaiye", + "uk": "Пожежна станція", + "vi": "Trạm Cứu hỏa", + "yue": "滅火局", + "zh-CN": "消防站", + "zh-HK": "消防局", + "zh-TW": "消防局", + "zh": "消防站", + "mk": "Противпожарна станица", + "bg": "Пожарна", + "he": "תחנת כיבוי אש", + "ms": "Balai Bomba", + "eu": "Suhiltzaile-etxe" + } + }, + "amenity/fountain": { + "title": { + "C": "Fountain", + "en": "Fountain", + "af": "Fontein", + "ar": "نافورة", + "ast": "Fonte d'adornu", + "bn": "ঝর্না", + "bs": "Fontana", + "ca": "Font", + "cs": "Fontána, vodotrysk", + "da": "Springvand", + "de": "Springbrunnen, Zierbrunnen", + "el": "Σιντριβάνι", + "en-GB": "Fountain", + "eo": "Fontano", + "es": "Fuente o surtidor ornamental", + "et": "Purskkaev", + "fa": "فواره", + "fi": "Suihkulähde", + "fr": "Fontaine", + "gl": "Fonte ornamental", + "hr": "Fontana", + "hu": "Szökőkút", + "id": "Air Mancur", + "is": "Gosbrunnur", + "it": "Fontana (decorativa)", + "ja": "噴水", + "kn": "ಬುಗ್ಗೆ", + "ko": "분수대", + "lt": "Fontanas", + "lv": "Strūklaka", + "nl": "Fontein", + "no": "Fontene", + "pl": "Fontanna", + "pt-BR": "Fonte", + "pt": "Fonte", + "ro": "Fântână", + "ru": "Фонтан", + "sk": "Fontána", + "sl": "Vodomet", + "sr": "Фонтана", + "sv": "Fontän", + "tr": "Su Fıskiyesi", + "uk": "Фонтан", + "vi": "Vòi nước", + "yue": "噴水池", + "zh-CN": "喷泉", + "zh-HK": "噴水池", + "zh-TW": "噴水池", + "zh": "喷泉", + "mk": "Фонтана", + "bg": "Фонтан", + "he": "מזרקה", + "eu": "Iturri", + "ckb": "نافورە" + } + }, + "amenity/fuel": { + "title": { + "C": "Gas Station", + "en": "Gas Station", + "af": "Petrolstasie", + "ar": "محطة وقود", + "ast": "Gasolinera", + "bn": "গ্যাস স্টেশন", + "bs": "Benzinska pumpa", + "ca": "Benzinera", + "cs": "Čerpací stanice", + "da": "Tankstation", + "de": "Tankstelle", + "el": "Βενζινάδικο", + "en-GB": "Petrol Station", + "eo": "Benzinejo", + "es": "Gasolinera", + "et": "Tankla", + "fa": "پمپ گاز", + "fi": "Huoltoasema", + "fr": "Station-service", + "gl": "Gasolineira", + "hr": "Benzinska postaja", + "hu": "Benzinkút", + "id": "Pom Bensin", + "is": "Bensínstöð", + "it": "Stazione di servizio", + "ja": "ガソリンスタンド", + "ko": "주유소", + "lt": "Degalinė", + "lv": "Degvielas uzpildes stacija", + "nl": "Tankstation", + "no": "Bensinstasjon", + "pl": "Stacja paliw", + "pt-BR": "Posto de Combustível", + "pt": "Posto de combustível", + "ro": "Benzinărie", + "ru": "АЗС", + "sk": "Čerpacia stanica", + "sl": "Bencinska črpalka", + "sr": "Бензинска пумпа", + "sv": "Bensinstation", + "tr": "Benzinci", + "uk": "Заправка", + "vi": "Cây xăng", + "yue": "油站", + "zh-CN": "加油站", + "zh-HK": "油站", + "zh-TW": "加油站", + "zh": "加油站", + "mk": "Бензинска станица", + "bg": "Бензиностанция", + "he": "תחנת דלק", + "ms": "Stesen Minyak", + "eu": "Gasolindegi", + "en-AU": "Service Station" + } + }, + "amenity/grave_yard": { + "title": { + "C": "Graveyard", + "en": "Graveyard", + "af": "Begrafplaas", + "ar": "مقبرة", + "ast": "Enterramientos", + "bn": "কবরখানা", + "bs": "Groblje", + "ca": "Cementiri", + "cs": "Pohřebiště", + "da": "Gravplads", + "de": "Gräberfeld", + "el": "Κοιμητήριο", + "en-GB": "Graveyard", + "eo": "Tombejo (ĉirkaŭpreĝeja)", + "es": "Camposanto", + "et": "Surnuaed", + "fa": "قبرستان (با مسجد یا امامزاده)", + "fi": "Kirkkomaa", + "fr": "Lieu de sépulture attenant à un lieu de culte, cimetière paroissial", + "gl": "Camposanto", + "hr": "Groblje uz crkvu", + "hu": "Templom körüli temető", + "id": "Kuburan", + "is": "Grafreitur", + "it": "Cimitero", + "ja": "墓地(宗教施設内など、小)", + "kn": "ಶ್ಮಶಾನ", + "ko": "묘지", + "lt": "Kapinės prie bažnyčios", + "lv": "Kapi", + "nl": "Begraafplaats", + "no": "Gravlund", + "pl": "Cmentarz przykościelny", + "pt-BR": "Cemitério paroquial", + "pt": "Sepultura (fora de cemitérios)", + "ro": "Cimitir", + "ru": "Небольшие захоронения при местах служения (церквях и т.п.)", + "sk": "Pohrebisko", + "sl": "Pokopališče", + "sr": "Гробље", + "sv": "Kyrkogård", + "ta": "இடுகாடு", + "te": "స్మశానం", + "tr": "Mezarlık", + "uk": "Цвинтар", + "vi": "Nghĩa địa tại Nhà thờ", + "yue": "墳地", + "zh-CN": "墓地", + "zh-HK": "墓地", + "zh-TW": "墓地", + "zh": "墓地", + "mk": "Гробишта", + "bg": "Гробище", + "he": "בית עלמין", + "eu": "Hilerri", + "ckb": "گۆڕستان" + } + }, + "amenity/grit_bin": { + "title": { + "C": "Grit Bin", + "en": "Grit Bin", + "ast": "Caxón de sal", + "ca": "Contenidor de sorra", + "cs": "Zásobník na posypový materiál", + "da": "Vejsaltkasse", + "de": "Streugutkiste", + "en-GB": "Grit Bin", + "eo": "Ujo kun sablo kaj salo", + "es": "Contenedor de gravilla", + "et": "Libedustõrje kast", + "fa": "سطل شن", + "fi": "Hiekoitushiekkalaatikko", + "fr": "Bac à sel", + "gl": "Contedor de grava", + "hr": "Kanta sa šljunkom za poledicu", + "hu": "Útszóróanyagos láda", + "is": "Sandkista", + "it": "Cestino del sale", + "ja": "砂箱(降雪対策)", + "ko": "염화칼슘 보관소", + "lt": "Smėlio dėžė", + "lv": "Smilšu tvertne", + "nl": "Bak met Mengeling van Strooizout en Grind", + "no": "Strøkasse", + "pl": "Pojemnik z piaskiem lub żwirem", + "pt-BR": "Caixa de Sal-Gema", + "pt": "Caixa de sal para estrada", + "ru": "Ящик с песком и солью (зимой)", + "sk": "Nádoba s posypom", + "sl": "Zabojnik za sol in pesek", + "sv": "Sandkista", + "tr": "Çakıl Kutusu", + "uk": "Контейнер з піском", + "vi": "Thùng Muối để Làm Tan Tuyết", + "zh-CN": "砂箱", + "zh-HK": "砂礫桶", + "zh-TW": "沙盒", + "mk": "Кутија за попескување", + "he": "סל חצץ", + "eu": "Hare-ontzi" + } + }, + "amenity/hospital": { + "title": { + "C": "Hospital Grounds", + "en": "Hospital Grounds", + "ar": "أرض مستشفى", + "ast": "Antoxana d'hospital", + "ca": "Hospital", + "cs": "Prostor nemocnice", + "da": "Hospitalsområde", + "de": "Krankenhaus", + "el": "Χώρος Νοσοκομείου", + "en-GB": "Hospital Grounds", + "eo": "Malsanuleja tereno", + "es": "Terrenos del hospital", + "et": "Haigla territoorium", + "fa": "محیط بیمارستان", + "fi": "Sairaala-alue", + "fr": "Terrains hospitaliers", + "gl": "Hospital", + "hr": "Bolničko zemljište", + "hu": "Kórház", + "id": "Lingkungan Rumah Sakit", + "is": "Spítalalóð", + "it": "Area ospedaliera", + "ja": "大規模病院(代表点または敷地)", + "ko": "병원 부지", + "lt": "Ligoninės kiemas", + "nl": "Ziekenhuisgebied", + "no": "Sykehusområde", + "pl": "Teren szpitala", + "pt-BR": "Hospital", + "pt": "Hospital", + "ro": "Spital", + "ru": "Больница", + "sk": "Nemocničný areál", + "sl": "Klinično središče", + "sr": "Болнички круг", + "sv": "Sjukhusområde", + "ta": "மருத்துவமனை ", + "tr": "Hastane", + "uk": "Територія лікарні", + "vi": "Sân Bệnh viện", + "yue": "醫院地", + "zh-CN": "医院", + "zh-HK": "醫院範圍", + "zh-TW": "醫院", + "mk": "Болнички двор", + "dv": "ހޮސްޕިޓަލް", + "he": "גן בית חולים", + "eu": "Ospitalearen Eremua", + "so": "Goob Isbitaal" + } + }, + "amenity/hunting_stand": { + "title": { + "C": "Hunting Stand", + "en": "Hunting Stand", + "ast": "Puestu de caza", + "ca": "Punt de caça", + "cs": "Posed", + "da": "Jagttårn", + "de": "Hochsitz/Jägerstand", + "el": "Καραούλι", + "en-GB": "Hunting Stand", + "eo": "Altembusko ĉasada", + "es": "Puesto de caza", + "et": "Jahitorn", + "fa": "ایستگاه شکار", + "fi": "Metsästyspaikka", + "fr": "Mirador de chasse", + "gl": "Posto de caza", + "hr": "Lovačka čeka", + "hu": "Magasles", + "is": "Skotvöllur", + "it": "Postazione da caccia", + "ja": "狩猟スタンド", + "ko": "사냥 스탠드", + "lt": "Medžioklės bokštelis", + "lv": "Medību stends", + "nl": "Jachthut", + "no": "Jakttårn", + "pl": "Ambona strzelnicza", + "pt-BR": "Cabana de Caça", + "pt": "Torre de caça", + "ro": "Stand de Vânătoare", + "ru": "Охотничья вышка", + "sk": "Poľovnícka postriežka", + "sl": "Lovska preža", + "sr": "Чека", + "sv": "Jakttorn", + "tr": "Av Platformu", + "uk": "Мисливська вежа", + "vi": "Chỗ Săn Cao", + "zh-CN": "狩猎站", + "zh-HK": "狩獵台", + "zh-TW": "獵寮", + "mk": "Ловен видиковец", + "he": "עמדת ציד", + "eu": "Ehiza postua" + } + }, + "amenity/kindergarten": { + "title": { + "C": "Preschool / Kindergarten Grounds", + "en": "Preschool / Kindergarten Grounds", + "ar": "مرحلة ما قبل المدرسة / رياض الأطفال", + "da": "Børnehave/vuggestue-grund", + "de": "Kindergartengrundstück", + "es": "Terreno de preescolar / jardín de infantes", + "fi": "Esikoulu", + "ja": "幼稚園/保育園(代表点または敷地)", + "ko": "유치원 부지", + "no": "Førskole- / Barnehageområde", + "pl": "Teren przedszkola/żłobka", + "pt-BR": "Educação infantil", + "pt": "Infantário / pré-escola", + "uk": "Територія дитячого садочка", + "vi": "Sân Nhà trẻ", + "zh-CN": "幼儿园场地", + "zh-TW": "幼稚園", + "mk": "Двор на детска градинка", + "he": "מתחם גן/גן חובה" + } + }, + "amenity/library": { + "title": { + "C": "Library", + "en": "Library", + "af": "Biblioteek", + "ar": "مكتبة", + "ast": "Biblioteca", + "bn": "পাঠাগার", + "bs": "Biblioteka", + "ca": "Biblioteca", + "cs": "Knihovna", + "da": "Bibliotek", + "de": "Bibliothek", + "el": "Βιβλιοθήκη", + "en-GB": "Library", + "eo": "Biblioteko", + "es": "Biblioteca", + "et": "Raamatukogu", + "fa": "کتابخانه", + "fi": "Kirjasto", + "fr": "Bibliothèque", + "gl": "Biblioteca", + "hr": "Knjižnica", + "hu": "Könyvtár", + "id": "Perpustakaan", + "is": "Bókasafn", + "it": "Biblioteca", + "ja": "図書館", + "kn": "ಗ್ರಂಥಾಲಯ", + "ko": "도서관", + "lt": "Biblioteka", + "lv": "Bibliotēka", + "nl": "Bibliotheek", + "no": "Bibliotek", + "pl": "Biblioteka", + "pt-BR": "Biblioteca", + "pt": "Biblioteca", + "ro": "Librărie", + "ru": "Библиотека", + "sk": "Knižnica", + "sl": "Knjižnica", + "sr": "Библиотека", + "sv": "Bibliotek", + "ta": "புத்தகச்சாலை", + "te": "గ్రంథాలయం", + "tr": "Kütüphane", + "uk": "Бібліотека", + "vi": "Thư viện", + "yue": "圖書館", + "zh-CN": "图书馆", + "zh-HK": "圖書館", + "zh-TW": "圖書館", + "zh": "图书馆", + "mk": "Библиотека", + "bg": "Библиотека", + "dv": "ލައިބްރަރީ", + "he": "ספריה", + "ms": "Perpustakaan", + "eu": "Liburutegi", + "ckb": "پەڕتووکخانە", + "so": "Maktabad" + } + }, + "amenity/marketplace": { + "title": { + "C": "Marketplace", + "en": "Marketplace", + "af": "Markplein", + "ar": "محل تسوق", + "ast": "Mercáu", + "bn": "বাজার", + "bs": "Tržnica", + "ca": "Mercat", + "cs": "Tržiště", + "da": "Markedsplads", + "de": "Wochenmarkt", + "el": "Αγορά", + "en-GB": "Marketplace", + "eo": "Bazaro", + "es": "Mercado", + "et": "Turg", + "fa": "بازار", + "fi": "Tori", + "fr": "Marché", + "gl": "Mercado", + "hr": "Tržnica", + "hu": "Piac", + "id": "Pasar", + "is": "Markaður", + "it": "Mercato", + "ja": "市場", + "ko": "시장", + "lt": "Prekyvietė", + "lv": "Tirgus", + "nl": "Marktplaats", + "no": "Markedsplass", + "pl": "Targowisko / Hala targowa", + "pt-BR": "Feira ou mercado público", + "pt": "Mercado", + "ro": "Piață", + "ru": "Рынок", + "sk": "Tržnica", + "sl": "Tržnica", + "sr": "Тржница", + "sv": "Marknadsplats", + "ta": "பஜார்", + "tr": "Çarşı", + "uk": "Ринок", + "vi": "Chợ phiên", + "yue": "街市", + "zh-CN": "市场", + "zh-HK": "街市", + "zh-TW": "市場", + "zh": "市场", + "mk": "Пазар", + "bg": "Пазар", + "he": "שוק", + "eu": "Merkatu" + } + }, + "amenity/motorcycle_parking": { + "title": { + "C": "Motorcycle Parking", + "en": "Motorcycle Parking", + "ar": "موقف دراجات نارية", + "ast": "Aparcaderu de motos", + "ca": "Aparcament per a motocicletes", + "cs": "Parkování pro motorky", + "da": "Motorcykelparkering", + "de": "Motorradparkplatz", + "el": "Στάθμευση μοτοσυκλετών", + "en-GB": "Motorcycle Parking", + "eo": "Motorcikla parkumejo", + "es": "Aparcamiento de motocicletas", + "et": "Mootorratta parkla", + "fa": "پارکینگ موتور سیکلت", + "fi": "Moottoripyöräpysäköinti", + "fr": "Parking pour motocyclettes", + "gl": "Aparcadoiro de motos", + "hr": "Parkiralište za motocikle", + "hu": "Motorkerékpár-parkoló", + "id": "Parkir Motor", + "is": "Mótorhjólastæði", + "it": "Parcheggio moto", + "ja": "オートバイの駐車場", + "ko": "오토바이 주차장", + "lt": "Motociklų stovėjimo aikštelė", + "lv": "Motociklu stāvvieta", + "nl": "Motorfietsparking", + "no": "Motorsykkelparkering", + "pl": "Parking dla motocykli", + "pt-BR": "Estacionamento de motos", + "pt": "Parque de motas", + "ro": "Parcare de Motociclete", + "ru": "Парковка для мотоциклов", + "sk": "Parkovanie pre motocykle", + "sl": "Parkirišče za motorje", + "sr": "Паркинг за мотоцикле", + "sv": "Motorcykelparkering", + "ta": "ஈருருளை நிறுத்துமிடம்", + "tr": "Motosiklet Parkı", + "uk": "Стоянка для мотоциклів", + "vi": "Chỗ Đậu Xe máy", + "zh-CN": "摩托车停车场", + "zh-HK": "電單車停車位", + "zh-TW": "機車停車場", + "mk": "Паркиралиште за мотоцикли", + "he": "חניית אופנועים", + "ms": "Tempat Letak Motosikal", + "eu": "Motorren aparkalekua" + } + }, + "amenity/nightclub": { + "title": { + "C": "Nightclub", + "en": "Nightclub", + "ar": "ملهى ليلي", + "ast": "Discoteca", + "ca": "Club nocturn", + "cs": "Diskotéka", + "da": "Natklub", + "de": "Diskothek, Nachtklub", + "el": "Νυχτερινό Κέντρο", + "en-GB": "Nightclub", + "eo": "Noktoklubejo", + "es": "Discoteca", + "et": "Ööklubi", + "fa": "کلوپ شبانه", + "fi": "Yökerho", + "fr": "Boîte de nuit", + "gl": "Clube nocturno ou discoteca", + "hr": "Noćni klub", + "hu": "Diszkó", + "id": "Kelab Malam", + "is": "Næturklúbbur", + "it": "Discoteca", + "ja": "ナイトクラブ", + "ko": "나이트클럽", + "lt": "Naktinis klubas", + "lv": "Naktsklubs", + "nl": "Nachtclub", + "no": "Nattklubb", + "pl": "Klub nocny", + "pt-BR": "Boate", + "pt": "Discoteca", + "ro": "Club de Noapte", + "ru": "Ночной клуб", + "sk": "Nočný klub", + "sl": "Nočni klub", + "sr": "Ноћни клуб", + "sv": "Nattklubb", + "ta": "இரவு விடுதி", + "tr": "Gece Kulübü", + "uk": "Нічний клуб", + "vi": "Câu lạc bộ Giải trí", + "zh-CN": "夜总会", + "zh-HK": "夜總會", + "zh-TW": "夜總會", + "mk": "Ноќен клуб", + "he": "מועדון לילה", + "ms": "Kelab Malam", + "eu": "Klub", + "ckb": "یانەی شەوانە" + } + }, + "amenity/parking": { + "title": { + "C": "Parking Lot", + "en": "Parking Lot", + "ar": "ساحة انتظار سيارات", + "cs": "Parkoviště", + "da": "Bilparkering", + "de": "Parkplatz", + "el": "Διαγραμμισμένη Θέση Στάθμευσης", + "en-GB": "Car Park", + "eo": "Parkumejo", + "es": "Aparcamiento / Estacionamiento", + "et": "Autoparkla", + "fa": "پارکینگ", + "fi": "Pysäköintialue", + "fr": "Parking", + "gl": "Aparcadoiro de automóbiles", + "hr": "Parkiralište za automobile", + "hu": "Parkoló", + "is": "Bílastæðasvæði", + "it": "Area di parcheggio", + "ja": "駐車場", + "ko": "주차장", + "lt": "Automobilių stovėjimo aikštelė", + "lv": "Stāvvieta", + "nl": "Parkeerplaats", + "no": "Parkeringsplass", + "pl": "Parking samochodowy", + "pt-BR": "Estacionamento", + "pt": "Parque de estacionamento", + "ru": "Парковка", + "sl": "Parkirno mesto", + "sv": "Parkeringsplats", + "tr": "Otopark", + "uk": "Автостоянка", + "vi": "Bãi Đậu xe", + "zh-CN": "停车场", + "zh-HK": "停車場", + "zh-TW": "平面停車場", + "mk": "Паркиралиште", + "he": "מגרש חנייה" + } + }, + "amenity/parking_entrance": { + "title": { + "C": "Parking Garage Entrance / Exit", + "en": "Parking Garage Entrance / Exit", + "cs": "Vjezd / Výjezd krytého parkoviště", + "da": "Ind/udgang til parkeringsgarage", + "de": "Garageneinfahrt/-ausfahrt", + "es": "Entrada / salida del garaje de estacionamiento", + "fi": "Pysäköintihallin ajoramppi", + "fr": "Entrée / sortie de garage ou parking", + "gl": "Entrada / Saída de garaxe", + "ja": "出入口(駐車場)", + "ko": "주차장 입구/출구", + "no": "Parkeringshus Inngang / utgang", + "pl": "Wjazd/wyjazd z parkingu/garażu", + "pt-BR": "Entrada / Saída da garagem", + "pt": "Entrada / Saída de estacionamento", + "uk": "В’їзд/виїзд на криту стоянку", + "vi": "Lối Ra vào Bãi Đậu xe Cao tầng", + "zh-CN": "车库入口 / 出口", + "zh-TW": "停車場入口/出口", + "mk": "Влез/излез на покриено паркиралиште", + "he": "יציאה לחניון" + } + }, + "amenity/parking_space": { + "title": { + "C": "Parking Space", + "en": "Parking Space", + "ar": "موقف سيارات", + "ast": "Espaciu d'aparcamientu", + "ca": "Espai d'aparcament", + "cs": "Parkovací místo", + "da": "Parkeringsbås", + "de": "Stellplatz", + "el": "Χώρος Στάθμευσης Ενός Μόνο Οχήματος", + "en-GB": "Parking Space", + "eo": "Parkumeja loko (detala)", + "es": "Plaza de aparcamiento / estacionamiento", + "et": "Parkimiskoht", + "fa": "جای پارک", + "fi": "Pysäköintiruutu", + "fr": "Place de parking", + "gl": "Praza de aparcadoiro", + "hr": "Parkirališno mjesto", + "hu": "Parkolóhely", + "is": "Bílastæðarými", + "it": "Stallo", + "ja": "駐車区画(1台ごとの)", + "ko": "주차 공간", + "lt": "Stovėjimo vieta", + "nl": "Parkeerplaats binnen parkeergelegenheid", + "no": "Parkeringsplass", + "pl": "Miejsce/miejsca parkingowe (pojedyncze lub ich zwarty blok)", + "pt-BR": "Vaga de Estacionamento", + "pt": "Lugar de estacionamento", + "ro": "Loc de Parcare", + "ru": "Отдельное парковочное место на парковке", + "sk": "Parkovacie miesto", + "sl": "Parkirni prostor", + "sr": "Паркинг простор", + "sv": "Parkeringsruta", + "tr": "Park Yeri", + "uk": "Місце на стоянці", + "vi": "Chỗ Đậu xe", + "zh-CN": "停车位", + "zh-HK": "泊車位", + "zh-TW": "停車位", + "mk": "Паркинг-место", + "he": "אזור חניה", + "ms": "Ruang Letak Kenderaan", + "eu": "Aparkatzeko lekua" + } + }, + "amenity/pharmacy": { + "title": { + "C": "Pharmacy Counter", + "en": "Pharmacy Counter", + "ar": "شباك صيدلية", + "cs": "Okénko/přepážka lékárny", + "de": "Apotheke", + "el": "Γκισέ Φαρμακείου", + "eo": "Apoteko", + "es": "Farmacia", + "fi": "Apteekki", + "fr": "Pharmacie", + "gl": "Farmacia", + "hu": "Gyógyszertár", + "it": "Farmacia", + "ja": "薬局・ドラッグストア(薬剤師が居る店)", + "ko": "약국", + "nl": "Apotheek", + "no": "Apotek Disk", + "pl": "Apteka", + "pt-BR": "Farmácia", + "pt": "Farmácia", + "ru": "Аптека", + "sv": "Läkemedel", + "tr": "Eczane", + "uk": "Аптека", + "vi": "Quầy thuốc", + "zh-CN": "药房", + "zh-TW": "藥房櫃臺", + "mk": "Аптека", + "he": "דלפק בית מרקחת", + "en-AU": "Pharmacy" + } + }, + "amenity/place_of_worship": { + "title": { + "C": "Place of Worship", + "en": "Place of Worship", + "af": "Plek van aanbidding", + "ar": "مكان عبادة", + "ast": "Llugar de cultu", + "bn": "প্রার্থনাস্থল", + "bs": "Bogomolja", + "ca": "Lloc de culte", + "cs": "Chrám", + "da": "Tilbedelsessted", + "de": "Andachtsstätte", + "el": "Χώρος Λατρείας", + "en-GB": "Place of Worship", + "eo": "Preĝejo", + "es": "Lugar de adoración", + "et": "Pühakoda", + "fa": "پرستشگاه", + "fi": "Rukoilupaikka", + "fr": "Lieu de culte", + "gl": "Lugar de culto", + "hr": "Vjerski objekt", + "hu": "Istentiszteleti hely", + "id": "Tempat Beribadah", + "is": "Tilbeiðsluhús", + "it": "Luogo di culto", + "ja": "宗教施設全般", + "ko": "종교 시설", + "lt": "Maldos namai", + "lv": "Dievnams", + "nl": "Gebedshuis", + "no": "Bedested", + "pl": "Miejsce odbywania się praktyk religijnych", + "pt-BR": "Local de Prática Religiosa", + "pt": "Local de oração", + "ro": "Loc de Rugăciune", + "ru": "Место поклонения", + "sk": "Náboženské miesto", + "sl": "Verski hram", + "sr": "Место богослужења", + "sv": "Plats för tillbedjan", + "ta": "வழிபாட்டு இடம்", + "tr": "İbadethane", + "uk": "Культове місце", + "vi": "Nơi Thờ phụng", + "yue": "拜神之所", + "zh-CN": "礼拜场所", + "zh-HK": "祟拜場所", + "zh-TW": "宗教祟拜場所", + "zh": "礼拜场所", + "mk": "Верско здание", + "bg": "Религиозен храм", + "dv": "އަޅުކަންކުރާ ތަންތަން", + "he": "בית תפילה", + "ms": "Tempat Ibadat", + "eu": "Gurtza gune", + "ckb": "پەرستگا", + "so": "Goobta Cibaadada" + } + }, + "amenity/police": { + "title": { + "C": "Police", + "en": "Police", + "af": "Polisie", + "ar": "شرطة", + "ast": "Policía", + "bn": "পুলিশ", + "bs": "Policija", + "ca": "Comissaria de Policia", + "cs": "Policie", + "da": "Politi", + "de": "Polizei", + "el": "Αστυνομικό Τμήμα", + "en-GB": "Police", + "eo": "Policejo", + "es": "Policía", + "et": "Politsei", + "fa": "پليس", + "fi": "Poliisiasema", + "fr": "Poste de police", + "gl": "Policía", + "hr": "Policija", + "hu": "Rendőrség", + "id": "Polisi", + "is": "Lögregla", + "it": "Forze di polizia", + "ja": "警察", + "kn": "ಪೊಲೀಸು", + "ko": "경찰서", + "lt": "Policija", + "lv": "Policija", + "nl": "Politiekantoor", + "no": "Politi", + "pl": "Policja/straż miejsca lub gminna", + "pt-BR": "Polícia", + "pt": "Esquadra da polícia", + "ro": "Poliție", + "ru": "Полиция", + "sk": "Polícia", + "sl": "Policija", + "sr": "Полиција", + "sv": "Polis", + "ta": "காவல்", + "te": "పోలీసు", + "tr": "Emniyet Müdürlüğü", + "uk": "Міліція/Поліція", + "vi": "Đồn Cảnh sát", + "yue": "差館", + "zh-CN": "警察局", + "zh-HK": "警署", + "zh-TW": "警察局", + "zh": "警察局", + "mk": "Полиција", + "bg": "Полиция", + "he": "משטרה", + "ms": "Polis", + "eu": "Polizia", + "ckb": "پۆلیس" + } + }, + "amenity/post_box": { + "title": { + "C": "Mail Drop Box", + "en": "Mail Drop Box", + "ar": "صندوق البريد", + "cs": "Poštovní schránka", + "de": "Briefkasten", + "es": "Buzón de correo", + "et": "Kirjakast", + "fi": "Postilaatikko", + "fr": "Boîte aux lettres (envoi)", + "gl": "Caixa do correo", + "hu": "Utcai postaláda", + "ja": "郵便ポスト", + "ko": "우체통", + "no": "Post innleveringspostkasse", + "pl": "Skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Marco de correio", + "tr": "Posta Bırakma Kutusu", + "uk": "Поштова скриня", + "vi": "Thùng thư", + "zh-CN": "邮件投递箱", + "zh-TW": "郵筒", + "mk": "Поштенска преграда", + "he": "תיבת איסוף דואר" + } + }, + "amenity/post_office": { + "title": { + "C": "Post Office", + "en": "Post Office", + "af": "Poskantoor", + "ar": "مكتب البريد", + "ast": "Oficina de correos", + "bn": "ডাকঘর", + "bs": "Pošta", + "ca": "Oficina de correus", + "cs": "Pošta", + "da": "Postkontor", + "de": "Postfiliale", + "el": "Ταχυδρομείο", + "en-GB": "Post Office", + "eo": "Poŝtoficejo", + "es": "Oficina postal", + "et": "Postkontor", + "fa": "اداره پست", + "fi": "Postitoimisto", + "fr": "Bureau de poste", + "gl": "Oficina de correos", + "hr": "Pošta", + "hu": "Posta", + "id": "Kantor Pos", + "is": "Pósthús", + "it": "Ufficio Postale", + "ja": "郵便局", + "kn": "ಅಂಚೆ ಕಚೇರಿ", + "ko": "우체국", + "lt": "Paštas", + "lv": "Pasta nodaļa", + "nl": "Postkantoor", + "no": "Postkontor", + "pl": "Poczta/agencja pocztowa", + "pt-BR": "Agência de Correios", + "pt": "Estação de correios", + "ro": "Oficiul Poștal", + "ru": "Почтовое отделение", + "sk": "Pošta", + "sl": "Pošta", + "sr": "Пошта", + "sv": "Postkontor", + "ta": "அஞ்சலகம்", + "te": "తపాలా కార్యాలయం", + "tr": "Postane", + "uk": "Пошта", + "vi": "Bưu điện", + "yue": "郵政局", + "zh-CN": "邮局", + "zh-HK": "郵政局", + "zh-TW": "郵局", + "zh": "邮局", + "mk": "Пошта", + "bg": "Поща", + "he": "סניף דואר", + "ms": "Pejabat Pos", + "eu": "Postetxe", + "ckb": "نووسینگەی پۆستە" + } + }, + "amenity/pub": { + "title": { + "C": "Pub", + "en": "Pub", + "af": "Kroeg", + "ar": "حانة", + "ast": "Pub", + "bn": "সরাইখানা", + "bs": "Pub", + "ca": "Bar", + "cs": "Hospoda", + "da": "Værtshus", + "de": "Kneipe", + "el": "Καπηλειό", + "en-GB": "Pub", + "eo": "Taverno", + "es": "Pub (latam) / Bar (es)", + "et": "Kõrts", + "fa": "میخانه", + "fi": "Pubi", + "fr": "Pub", + "gl": "Bar", + "hr": "Pivnica", + "hu": "Kocsma", + "id": "Pub", + "is": "Krá", + "it": "Pub", + "ja": "居酒屋", + "ko": "주점", + "lt": "Aludė", + "lv": "Krogs", + "nl": "Café", + "no": "Pub", + "pl": "Pub", + "pt-BR": "Bar / Boteco", + "pt": "Taberna", + "ro": "Pub", + "ru": "Паб", + "sk": "Krčma", + "sl": "Pivnica", + "sr": "Паб", + "sv": "Pub", + "ta": "பப் ", + "te": "పబ్", + "tr": "Bar", + "uk": "Паб", + "vi": "Quán rượu Pub", + "yue": "酒館", + "zh-CN": "酒馆", + "zh-HK": "酒館", + "zh-TW": "Pub", + "zh": "酒馆", + "mk": "Паб", + "bg": "Пъб", + "he": "פאב", + "ms": "Pub", + "eu": "Pub" + } + }, + "amenity/public_bookcase": { + "title": { + "C": "Public Bookcase", + "en": "Public Bookcase", + "ar": "خزانة كتب عامة", + "ast": "Biblioteca llibre", + "ca": "Biblioteca pública", + "cs": "Veřejná knihovnička", + "da": "Bogkasse", + "de": "Öffentlicher Bücherschrank", + "el": "Δημόσια Ανταλλακτική Βιβλιοθήκη", + "en-GB": "Public Bookcase", + "eo": "Publika libroŝranko", + "es": "Biblioteca libre", + "et": "Avalik raamaturiiul", + "fa": "قفسه کتاب عمومی", + "fi": "Julkinen kirjahylly", + "fr": "Microbibliothèque", + "gl": "Estante pública", + "hr": "Javna knjižnica", + "hu": "Közösségi könyvespolc", + "is": "Almenningsbókakassi", + "it": "Libreria pubblica", + "ja": "公共の本棚", + "ko": "공공 책장", + "lv": "Publisks Grāmatplaukts", + "nl": "Openbare boekenkast", + "no": "Bokkiosk", + "pl": "Publiczna wymiana książek", + "pt-BR": "Biblioteca ao Ar Livre", + "pt": "Biblioteca de rua", + "ru": "Общественный книжный шкаф", + "sk": "Verejná knihovnička", + "sl": "Ulična knjižnica", + "sr": "Јавна библиотека", + "sv": "Offentlig bokhylla", + "tr": "Sokak Kütüphanesi", + "uk": "Книжкова шафа", + "vi": "Tủ sách Công cộng", + "zh-CN": "公共书架", + "zh-HK": "公眾書架", + "zh-TW": "漂書站", + "mk": "Јавен шкаф за книги", + "he": "ספריה", + "eu": "Apalategi publikoa" + } + }, + "amenity/ranger_station": { + "title": { + "C": "Ranger Station", + "en": "Ranger Station", + "ar": "محطة الحراسة", + "ast": "Guardes forestales", + "bs": "Stanica rendžerske službe", + "ca": "Base d'Agents Rurals", + "cs": "Návštěvnické centrum", + "da": "Rangerstation", + "de": "Ranger-Station", + "el": "Σταθμός Δασοφυλάκων", + "en-GB": "Warden Station", + "eo": "Naturrezerveja oficejo/impostbudo", + "es": "Estación de guardaparque", + "et": "Looduskeskus", + "fa": "ایستگاه جنگلبانی", + "fi": "Metsävartiosto", + "fr": "Services publics des parcs nationaux", + "gl": "Estación de garda de bosques", + "hr": "Rendžerska postaja", + "hu": "Nemzeti park látogatóközpontja", + "is": "Landvarðastöð", + "it": "Guardiaparco", + "ja": "レンジャーの詰所", + "ko": "관리소", + "lt": "Girininkų stotis", + "nl": "Boswachtershut", + "pl": "Baza strażników rezerwatu/parku", + "pt-BR": "Estação de Patrulha", + "pt": "Posto de guarda florestal", + "ru": "Лесничество", + "sk": "Stanica horskej služby", + "sl": "Čuvaj parka", + "sr": "Шумарска станица", + "sv": "Friluftsanläggningen", + "tr": "Korucu İstasyonu", + "uk": "Контора лісництва", + "vi": "Trạm Kiểm lâm", + "yue": "郊野訪客處", + "zh-CN": "野郊访客处", + "zh-HK": "郊野公園遊客中心", + "zh-TW": "國家公園管理站", + "mk": "Шумарска куќарка", + "he": "תחנת פקחים", + "ms": "Stesen Renjer", + "eu": "Basozain geltokia" + } + }, + "amenity/restaurant": { + "title": { + "C": "Restaurant", + "en": "Restaurant", + "af": "Restaurant", + "ar": "مطعم", + "ast": "Restaurante", + "bn": "রেস্তোরাঁ", + "bs": "Restoran", + "ca": "Restaurant", + "cs": "Restaurace", + "da": "Restaurant", + "de": "Restaurant", + "el": "Εστιατόριο / Ταβέρνα", + "en-GB": "Restaurant", + "eo": "Restoracio", + "es": "Restaurante", + "et": "Restoran", + "fa": "رستوران", + "fi": "Ravintola", + "fr": "Restaurant", + "gl": "Restaurante", + "hr": "Restoran", + "hu": "Étterem", + "id": "Restoran", + "is": "Veitingahús", + "it": "Ristorante", + "ja": "レストラン全般", + "kn": " ಉಪಾಹಾರ ಗೃಹ", + "ko": "음식점", + "lt": "Restoranas", + "lv": "Restorāns", + "nl": "Restaurant", + "no": "Restaurant", + "pl": "Restauracja", + "pt-BR": "Restaurante", + "pt": "Restaurante", + "ro": "Restaurant", + "ru": "Ресторан", + "sk": "Reštaurácia", + "sl": "Restavracija", + "sr": "Ресторан", + "sv": "Restaurang", + "ta": "உணவகம்", + "te": "రెస్టారెంట్", + "tr": "Lokanta", + "uk": "Ресторан", + "vi": "Nhà hàng", + "yue": "餐廳", + "zh-CN": "餐馆", + "zh-HK": "餐廳", + "zh-TW": "餐廳", + "zh": "餐馆", + "mk": "Ресторан", + "bg": "Ресторант", + "dv": "ރެސްޓޯރަންޓް", + "he": "מסעדה", + "ms": "Restoran", + "eu": "Jatetxe", + "ckb": "خواردنگە", + "so": "Maqaayad" + } + }, + "amenity/sanitary_dump_station": { + "title": { + "C": "RV Toilet Disposal", + "en": "RV Toilet Disposal", + "ast": "Vertíu de depósitos d'autocaravanes", + "ca": "Estació de buidatge de lavabos", + "cs": "Výlevka pro karavany", + "da": "Bortskaffelse af sanitært affald", + "de": "Campingtoiletten-Entsorgungsanlage", + "en-GB": "RV Toilet Disposal", + "eo": "Stacio de forigado de fekaĵoj (kampado)", + "es": "Desecho de inodoro de casa rodante", + "fa": "دفع توالت RV", + "fi": "Asuntoautojen jäteveden tyhjennyspiste", + "fr": "Station de vidange sanitaire", + "gl": "Eliminación de WC de caravanas", + "hr": "Pražnjenje toaleta za kamp kućice", + "hu": "Szaniterürítő hely (lakóautóknak)", + "is": "Salernishreinsun fyrir bíla", + "it": "Smaltimento reflui camper", + "ja": "キャンピングカー用汚物廃棄所", + "ko": "RV 화장실 처리장", + "nl": "Kampeerauto-toilet-afvoer", + "no": "Bobil-tømmestasjon", + "pl": "Miejsce opróżniania toalety (dla kamperów)", + "pt-BR": "Ponto de Descarga de Dejetos (para trailers)", + "pt": "Escoamento sanitário para autocaravanas", + "ru": "Слив для туалета трейлеров", + "sk": "Vyprázdňovanie karavánových toaliet", + "sl": "Odlaganje fekalij za avtodome", + "sv": "Latrintömning för campingfordon", + "tr": "Tuvalet Atık Yeri", + "uk": "Місце зливу каналізації", + "vi": "Trạm Đổ Chất thải dành cho Nhà lưu động", + "zh-CN": "厕所卸污处", + "zh-HK": "露營車廁所廢物收集", + "zh-TW": "RV移動廁所", + "mk": "Исфрлање трајлерски фекалии", + "he": "תחנת סילוק שפכים מקרוונים" + } + }, + "amenity/school": { + "title": { + "C": "School Grounds", + "en": "School Grounds", + "ar": "أرض مدرسة", + "ast": "Antoxana d'escuela", + "ca": "Escola", + "cs": "Prostor školy", + "da": "Skolegrund", + "de": "Schule, Schulgelände", + "el": "Χώρος Σχολείου", + "en-GB": "School Grounds", + "eo": "Lernejo (ISCED 1-3)", + "es": "Terrenos de escuela / colegio", + "et": "Kool", + "fa": "محیط مدرسه", + "fi": "Koulualue (peruskoulu/lukio/ammattikoulu)", + "fr": "École élémentaire ou secondaire", + "gl": "Área escolar", + "hr": "Škola i teren oko škole", + "hu": "Iskola", + "id": "Lingkungan Sekolah", + "is": "Skólalóð", + "it": "Area scolastica", + "ja": "学校(代表点または敷地)", + "ko": "학교 부지", + "lt": "Mokyklos kiemas", + "lv": "Skolas Zeme", + "nl": "Schoolgebied", + "no": "Skoleområde", + "pl": "Szkoła podstawowa/średnia – teren (nie stosować dla budynku!)", + "pt-BR": "Escola", + "pt": "Escola", + "ro": "Școală", + "ru": "Школа", + "sk": "Školský areál", + "sl": "Izobraževalno središče", + "sr": "Школско двориште", + "sv": "Skolområde", + "ta": "பள்ளி மைதானம்", + "tr": "Okul", + "uk": "Територія школи", + "vi": "Sân Trường", + "zh-CN": "学校", + "zh-HK": "學校範圍", + "zh-TW": "中小學範圍", + "mk": "Училиштен двор", + "dv": "ސްކޫލު ބިން", + "he": "מגרש בית ספר", + "ms": "Kawasan Sekolah", + "eu": "Eskola eremu", + "so": "Goobaha Dugsiyada" + } + }, + "amenity/shelter": { + "title": { + "C": "Shelter", + "en": "Shelter", + "ar": "مأوى", + "ast": "Abellugu", + "bs": "Sklonište", + "ca": "Refugi", + "cs": "Přístřešek", + "da": "Læsted", + "de": "Wetterschutz", + "el": "Στέγαστρο", + "en-GB": "Shelter", + "eo": "Ŝirmejo", + "es": "Refugio", + "et": "Varjualune", + "fa": "پناهگاه", + "fi": "Katos", + "fr": "Abri", + "gl": "Abeiro", + "hr": "Sklonište", + "hu": "Esőbeálló", + "is": "Skýli", + "it": "Riparo", + "ja": "シェルター全般(休憩所、避難所)", + "kn": "ಅಡೆ", + "ko": "대피소", + "lt": "Pastogė", + "lv": "Pajumte", + "nl": "Beschutting", + "no": "Skur", + "pl": "Schronienie", + "pt-BR": "Abrigo contra Intempéries", + "pt": "Abrigo", + "ru": "Укрытие от непогоды", + "sk": "Prístrešok", + "sl": "Zavetišče", + "sr": "Склониште", + "sv": "Väderskydd", + "tr": "Barınak", + "uk": "Притулок", + "vi": "Nhà trú", + "yue": "天遮或亭", + "zh-CN": "亭", + "zh-HK": "涼亭", + "zh-TW": "涼亭", + "mk": "Засолниште", + "he": "מקלט", + "eu": "Aterpetxe" + } + }, + "amenity/social_facility": { + "title": { + "C": "Social Facility", + "en": "Social Facility", + "ar": "مؤسسة اجتماعية", + "ast": "Serviciu social", + "ca": "Equipament social", + "cs": "Zařízení sociálních služeb", + "da": "Sociale faciliteter", + "de": "Sozialeinrichtung", + "el": "Μονάδα Κοινωνικών Παροχών", + "en-GB": "Social Facility", + "eo": "Socia servejo", + "es": "Instalación social", + "et": "Sotsiaalkeskus", + "fa": "خدمات اجتماعی", + "fi": "Sosiaalipalvelu", + "fr": "Établissement de services sociaux", + "gl": "Axuda Social", + "hr": "Socijalna ustanova", + "hu": "Szociális létesítmény", + "id": "Fasilitas Sosial", + "is": "Félagsþjónusta", + "it": "Centro socio-assistenziale", + "ja": "福祉施設", + "ko": "사회 복지 시설", + "nl": "Sociale Faciliteit", + "pl": "Placówka pomocy społecznej", + "pt-BR": "Unidade de Assistência Social", + "pt": "Serviços sociais", + "ro": "Facilitate Socială", + "ru": "Социальное учреждение", + "sk": "Sociálne zariadenie", + "sl": "Socialnovarstvena ustanova", + "sr": "Социјална установа", + "sv": "Social inrättning", + "tr": "Okul Tesisleri", + "uk": "Соціальний центр", + "vi": "Dịch vụ Xã hội", + "zh-CN": "社会服务设施", + "zh-HK": "社會服務設施", + "zh-TW": "社福機構", + "mk": "Социјална служба", + "he": "מתקן שירותי רווחה", + "eu": "Gizarte-instalazio" + } + }, + "amenity/studio": { + "title": { + "C": "Studio", + "en": "Studio", + "ar": "أستوديو", + "ast": "Estudiu", + "bs": "Studio", + "ca": "Estudi", + "cs": "Studio", + "da": "Studie", + "de": "Ton-/Fernsehstudio", + "el": "Στούντιο", + "en-GB": "Studio", + "eo": "Studio", + "es": "Estudio de grabación", + "et": "Stuudio", + "fa": "استدیو", + "fi": "Studio", + "fr": "Studio", + "gl": "Estudio", + "hr": "Studio", + "hu": "Stúdió", + "id": "Studio", + "is": "Upptökustúdíó", + "it": "Studio radiotelevisivo", + "ja": "スタジオ", + "ko": "스튜디오", + "lt": "Studija", + "lv": "Studija", + "nl": "Studio", + "no": "Studio", + "pl": "Studio", + "pt-BR": "Estúdio de rádio/TV ou de gravação", + "pt": "Estúdio", + "ro": "Studio", + "ru": "Студия", + "sk": "Štúdio", + "sl": "Studio", + "sr": "Студио", + "sv": "Studio", + "tr": "Stüdyo", + "uk": "Студія", + "vi": "Studio", + "zh-CN": "工作室", + "zh-HK": "工作室", + "zh-TW": "工作室", + "mk": "Студио", + "he": "סטודיו", + "ms": "Studio", + "eu": "Estudio", + "ckb": "ستۆدیۆ" + } + }, + "amenity/taxi": { + "title": { + "C": "Taxi Stand", + "en": "Taxi Stand", + "af": "Taxi staanplek", + "ar": "موقف تاكسي", + "ast": "Parada de taxis", + "bs": "Taxi stajalište", + "ca": "Parada de Taxi", + "cs": "Stanoviště taxi", + "da": "Taxiholdeplads", + "de": "Taxistand", + "el": "Πιάτσα Ταξί", + "en-GB": "Taxi Stand", + "eo": "Taksistacio", + "es": "Parada de taxi", + "et": "Taksopeatus", + "fa": "تاکسی", + "fi": "Taksitolppa", + "fr": "Station de taxi", + "gl": "Paraxe de taxi", + "hr": "Taksi stajalište", + "hu": "Taxiállomás", + "id": "Tempat Tunggu Taksi", + "is": "Leigubílastæði", + "it": "Posteggio Taxi", + "ja": "タクシー乗り場", + "kn": "‍ಕಾರು ನಿಲ್ಡಾಣ ", + "ko": "택시 승차장", + "lt": "Taksi stendas", + "nl": "Taxistandplaats", + "no": "Taxiholdeplass", + "pl": "Postój taksówek", + "pt-BR": "Ponto de Táxi", + "pt": "Praça de táxis", + "ro": "Stand de Taxi", + "ru": "Стоянка такси", + "sk": "Stanovisko taxíkov", + "sl": "Postajališče za taksi", + "sr": "Такси стајалиште", + "sv": "Taxihållplats", + "tr": "Taksi Durağı", + "uk": "Стоянка таксі", + "vi": "Bến Tắc xi", + "yue": "的士站", + "zh-CN": "出租车停车处", + "zh-HK": "的士站", + "zh-TW": "計程車招呼站", + "mk": "Такси-постојка", + "bg": "Такси стоянка", + "he": "עמדת מוניות", + "ms": "Tempat Menunggu Teksi", + "eu": "Taxi postu" + } + }, + "amenity/telephone": { + "title": { + "C": "Telephone", + "en": "Telephone", + "af": "Telefoon", + "ar": "هاتف", + "ast": "Teléfonu", + "bn": "টেলিফোন", + "bs": "Telefon", + "ca": "Telèfon", + "cs": "Telefon", + "da": "Telefon", + "de": "Telefon", + "el": "Τηλέφωνο", + "en-GB": "Telephone", + "eo": "Telefono", + "es": "Teléfono", + "et": "Taksofon", + "fa": "تلفن عمومی", + "fi": "Yleinen puhelin", + "fr": "Téléphone", + "gl": "Teléfono", + "hr": "Telefon", + "hu": "Telefon", + "id": "Telepon", + "is": "Sími", + "it": "Telefono", + "ja": "公衆電話", + "kn": "ದುರವಾಣಿ", + "ko": "전화", + "lt": "Telefonas", + "lv": "Telefons", + "nl": "Telefoon", + "no": "Telefon", + "pl": "Telefon", + "pt-BR": "Telefone Público", + "pt": "Telefone", + "ro": "Telefon", + "ru": "Телефон", + "sk": "Telefón", + "sl": "Telefon", + "sr": "Телефонска говорница", + "sv": "Telefon", + "ta": "தொலைபேசி", + "tr": "Telefon", + "uk": "Телефон", + "vi": "Điện thoại", + "yue": "電話", + "zh-CN": "电话", + "zh-HK": "電話", + "zh-TW": "公用電話", + "zh": "电话", + "mk": "Телефон", + "bg": "Телефон", + "he": "טלפון", + "ms": "Telefon", + "eu": "Telefono", + "ckb": "تەلەفۆن" + } + }, + "amenity/theatre": { + "title": { + "C": "Theater", + "en": "Theater", + "af": "Teater", + "ar": "مسرح", + "ast": "Teatru", + "bn": "থিয়েটার", + "bs": "Pozorište", + "ca": "Teatre", + "cs": "Divadlo", + "da": "Teater", + "de": "The­a­ter", + "el": "Θέατρο", + "en-GB": "Theatre", + "eo": "Teatrejo", + "es": "Teatro", + "et": "Teater", + "fa": "تئاتر", + "fi": "Teatteri", + "fr": "Théâtre", + "gl": "Teatro", + "hr": "Kazalište", + "hu": "Színház", + "id": "Teater", + "is": "Leikhús", + "it": "Teatro", + "ja": "劇場", + "kn": "ಚಿತ್ರಮಂದಿರ", + "ko": "극장", + "lt": "Teatras", + "lv": "Teātris", + "nl": "Theater", + "no": "Teater", + "pl": "Teatr", + "pt-BR": "Teatro", + "pt": "Teatro", + "ro": "Teatru", + "ru": "Театр", + "sk": "Divadlo", + "sl": "Gledališče", + "sr": "Позориште", + "sv": "Teater", + "ta": "திரையரங்கம்", + "tr": "Tiyatro", + "uk": "Театр", + "vi": "Nhà hát", + "yue": "舞臺戲院", + "zh-CN": "剧院", + "zh-HK": "劇院", + "zh-TW": "戲劇院", + "zh": "剧院", + "mk": "Театар", + "bg": "Театър", + "he": "תאטרון", + "ms": "Teater", + "eu": "Antzoki", + "ckb": "شانۆ" + } + }, + "amenity/toilets": { + "title": { + "C": "Toilets", + "en": "Toilets", + "af": "Toilette", + "ar": "دورات مياه", + "ast": "Aseos", + "bn": "শৌচাগার", + "bs": "Toaleti", + "ca": "Lavabos", + "cs": "Toalety", + "da": "Toiletter", + "de": "Toilette", + "el": "Τουαλέτες", + "en-GB": "Toilets", + "eo": "Necesejo", + "es": "Baños", + "et": "Tualett", + "fa": "سرویس بهداشتی", + "fi": "WC", + "fr": "Toilettes publiques", + "gl": "Aseos", + "hr": "Toalet", + "hu": "WC", + "id": "Toilet", + "is": "Salerni", + "it": "Bagni", + "ja": "トイレ", + "kn": "ಶೌಚಾಲಯ", + "ko": "화장실", + "lt": "Tualetas", + "lv": "Tualete", + "nl": "Toiletten", + "no": "Toaletter", + "pl": "Toalety publiczne", + "pt-BR": "Banheiros Públicos", + "pt": "Casas de banho", + "ro": "Toaletă", + "ru": "Туалет", + "sk": "Toalety", + "sl": "Stranišča", + "sr": "Тоалети", + "sv": "Toaletter", + "ta": "கழிவறைகள்", + "te": "మరుగుదొడ్లు", + "tr": "Tuvalet", + "uk": "Туалет", + "vi": "Phòng Vệ sinh", + "yue": "廁所", + "zh-CN": "厕所", + "zh-HK": "廁所", + "zh-TW": "廁所", + "zh": "厕所", + "mk": "Тоалет", + "bg": "Тоалетна", + "dv": "ފާޚާނާ", + "he": "בתי שימוש", + "ms": "Tandas", + "eu": "Komun", + "ckb": "ئاودەست", + "so": "Musqulo" + } + }, + "amenity/townhall": { + "title": { + "C": "Town Hall", + "en": "Town Hall", + "af": "Stadsaal", + "ar": "مبنى البلدية", + "ast": "Edificiu municipal", + "bn": "টাউন হল", + "bs": "Gradska vijećnica", + "ca": "Ajuntament", + "cs": "Radnice", + "da": "Rådhus", + "de": "Rathaus", + "el": "Δημαρχείο", + "en-GB": "Town Hall", + "eo": "Urbodomo", + "es": "Ayuntamiento / Municipalidad", + "et": "Linnahall", + "fa": "شهرداری", + "fi": "Kunnantalo", + "fr": "Mairie, hôtel de ville", + "gl": "Casa do Concello", + "hr": "Gradska vijećnica", + "hu": "Városháza", + "id": "Balai Kota", + "is": "Ráðhús", + "it": "Municipio", + "ja": "役場", + "ko": "마을 회관", + "lt": "Rotušė", + "lv": "Pilsētas dome", + "nl": "Gemeentehuis", + "no": "Rådhus", + "pl": "Ratusz", + "pt-BR": "Paço Municipal ou Prefeitura", + "pt": "Câmara municipal / Junta de freguesia", + "ro": "Primărie", + "ru": "Администрация", + "sk": "Mestský úrad", + "sl": "Mestna hiša", + "sr": "Градска кућа", + "sv": "Kommunhus", + "ta": "நகராட்சிமன்றம்", + "tr": "Belediye Binası", + "uk": "Міська державна адміністрація", + "vi": "Tòa thị chính Thị xã", + "yue": "大會堂", + "zh-CN": "市政府", + "zh-HK": "大會堂", + "zh-TW": "鄉鎮市區公所", + "zh": "市政府", + "mk": "Градски дом", + "bg": "Кметство", + "he": "בניין עירייה", + "ms": "Dewan Perbandaran", + "eu": "Udaletxe" + } + }, + "amenity/university": { + "title": { + "C": "University Grounds", + "en": "University Grounds", + "ar": "أرض جامعة", + "ast": "Campus universitariu", + "ca": "Campus universitari", + "cs": "Prostor vysoké školy", + "da": "Universitetsområde", + "de": "Universitätsgelände", + "el": "Χώρος Πανεπιστημίου", + "en-GB": "University Grounds", + "eo": "Altgrada lernejo (ISCED 5-7)", + "es": "Terreno de universidad", + "et": "Ülikooliala", + "fa": "محوطه دانشگاه", + "fi": "Yliopistokampus", + "fr": "Université, enseignement supérieur universitaire - institution ou campus", + "gl": "Área universitaria", + "hr": "Sveučilišno zemljište", + "hu": "Egyetem", + "id": "Lingkungan Universitas", + "is": "Háskólalóð", + "it": "Area universitaria", + "ja": "大学(代表点または敷地)", + "ko": "대학 부지", + "lt": "Universiteto kiemas", + "nl": "Campus van universiteit of hogeschool", + "no": "Universitetsområde", + "pl": "Teren uczelni", + "pt-BR": "Universidade ou Faculdade", + "pt": "Universidade", + "ro": "Universitate", + "ru": "Университет / Институт", + "sk": "Univerzita", + "sl": "Univerzitetno območje", + "sr": "Универзитетски кампус", + "sv": "Universitetsområde", + "ta": "பல்கலைக்கழகத் திடல்", + "tr": "Üniversite Yerleşkesi", + "uk": "Територія університету", + "vi": "Sân trường Đại học", + "zh-CN": "大学", + "zh-HK": "大學範圍", + "zh-TW": "大學範圍", + "mk": "Универзитетски двор", + "he": "מתחם אוניברסיטה", + "ms": "Kawasan Universiti", + "eu": "Unibertsitatearen eremua" + } + }, + "amenity/veterinary": { + "title": { + "C": "Veterinary", + "en": "Veterinary", + "ar": "طبيب بيطري", + "ast": "Veterinariu", + "ca": "Veterinari", + "cs": "Veterina", + "da": "Dyrlæge", + "de": "Tierarzt, Tierärztin", + "el": "Κτηνιατρείο", + "en-GB": "Veterinary", + "eo": "Bestokuracistejo", + "es": "Veterinario", + "et": "Loomaarst", + "fa": "دامپزشکی", + "fi": "Eläinlääkäri", + "fr": "Vétérinaire", + "gl": "Veterinario", + "hr": "Veterinar", + "hu": "Állatorvos", + "id": "Dokter Hewan", + "is": "Dýralæknir", + "it": "Veterinario", + "ja": "獣医", + "kn": "ಪಶುವೈದ್ಯಕೀಯ", + "ko": "동물병원", + "lt": "Veterinarija", + "lv": "Veternārārsts", + "nl": "Dierenarts", + "no": "Veterinær", + "pl": "Weterynarz", + "pt-BR": "Veterinário", + "pt": "Veterinário", + "ro": "Medic Veterinar", + "ru": "Ветеринар", + "sk": "Veterinár", + "sl": "Veterinar", + "sr": "Ветеринарница", + "sv": "Veterinär ", + "tr": "Veteriner", + "uk": "Ветеринарна лікарня", + "vi": "Thú y", + "zh-CN": "动物医院", + "zh-HK": "獸醫", + "zh-TW": "獸醫院", + "mk": "Ветеринар", + "he": "וטרינר", + "ms": "Veterinar", + "eu": "Albaitari", + "ckb": "ڤێتێرنەری" + } + }, + "amenity/waste_basket": { + "title": { + "C": "Waste Basket", + "en": "Waste Basket", + "af": "Asblik", + "ar": "سلة مهملات", + "ast": "Papelera", + "bs": "Kanta za otpatke", + "ca": "Paperera", + "cs": "Odpadkový koš", + "da": "Skraldespand", + "de": "Mülleimer", + "el": "Καλάθι Απορριμμάτων", + "en-GB": "Rubbish Bin", + "eo": "Rubujo", + "es": "Papelera", + "et": "Prügikast", + "fa": "سطل زباله", + "fi": "Roskakori", + "fr": "Poubelle pour piétons", + "gl": "Papeleira", + "hr": "Kanta za smeće", + "hu": "Szemeteskosár", + "id": "Tong Sampah", + "is": "Ruslafata", + "it": "Cestino della spazzatura", + "ja": "ゴミ箱", + "ko": "쓰레기통", + "lt": "Šiukšliadėžė", + "lv": "Atkritumu grozs", + "nl": "Prullenbak", + "no": "Søppel", + "pl": "Kosz na śmieci", + "pt-BR": "Lixeira", + "pt": "Caixote do lixo", + "ru": "Мусорная корзина", + "sk": "Odpadový kôš", + "sl": "Koš za odpadke", + "sr": "Корпа за отпатке", + "sv": "Soptunna (liten)", + "tr": "Çöp Kutusu", + "uk": "Бак для сміття", + "vi": "Thùng rác", + "yue": "垃圾桶", + "zh-CN": "垃圾桶", + "zh-HK": "垃圾桶", + "zh-TW": "垃圾筒", + "zh": "垃圾箱", + "mk": "Корпа за отпадоци", + "bg": "Кош за боклук", + "he": "סל אשפה" + } + }, + "amenity/waste_disposal": { + "title": { + "C": "Garbage Dumpster", + "en": "Garbage Dumpster", + "ar": "صندوق قمامة قابل للنقل", + "ast": "Contenedor de basoria", + "ca": "Contenidor d'escombraries", + "cs": "Kontejner na směsný odpad", + "da": "Skraldespand", + "de": "Müllcontainer", + "el": "Κάδος απορριμμάτων", + "en-GB": "Garbage Dumpster", + "eo": "Rubujego", + "es": "Contenedor de residuos", + "et": "Prügikonteiner", + "fa": "زباله‌دان بزرگ", + "fi": "Jäteastia", + "fr": "Bac à déchets", + "gl": "Contedor de lixo", + "hr": "Kontejner za smeće", + "hu": "Szemeteskonténer", + "is": "Ruslagámur", + "it": "Cassonetto del pattume", + "ja": "ゴミ収集ボックス", + "ko": "쓰레기 수거함", + "lt": "Šiukšlių konteineris", + "lv": "Atkritumu konteiners", + "nl": "Kleine afvalcontainer", + "no": "Søppelkonteiner", + "pl": "Śmietnik", + "pt-BR": "Contêiner de lixo não reciclável", + "pt": "Contentor de lixo", + "ro": "Container de Gunoi", + "ru": "Мусорный бак", + "sl": "Zabojnik za odpadke", + "sr": "Контејнер за смеће", + "sv": "Soptunna (hushålls- eller industrisopor)", + "tr": "Çöp Tenekesi", + "uk": "Контейнер для сміття", + "vi": "Thùng Rác Lớn", + "zh-CN": "大型垃圾箱", + "zh-HK": "大型垃圾箱", + "zh-TW": "垃圾場", + "mk": "Контејнер", + "he": "פח אשפה" + } + }, + "amenity/water_point": { + "title": { + "C": "RV Drinking Water", + "en": "RV Drinking Water", + "ar": "RV مياه الشرب", + "ast": "Agua potable pa caravanes", + "ca": "Aigua potable d'autocaravana", + "cs": "Pitná voda pro karavany", + "da": "Tankning af drikkevand", + "de": "Camping-Trinkwasser", + "el": "Πόσιμο Νερό Αυτοκινούμενου Τροχόσπιτου", + "en-GB": "RV Drinking Water", + "eo": "Trinkakvejo (kampado)", + "es": "Recarga de agua potable para autocaravanas", + "fa": "آب آشامیدنی", + "fi": "Asuntoauton vesipiste", + "fr": "Eau potable pour citerne de véhicule de loisirs", + "gl": "Auga potábel para caravanas", + "hr": "Pitka voda za kamp kućice", + "hu": "Ivóvíz-csatlakozás lakóautónak", + "is": "Drykkjarvatn fyrir bíla", + "it": "Acqua potabile per camper", + "ja": "キャンピングカー用の給水施設", + "ko": "RV 식수대", + "nl": "Waterpunt voor kampeerauto's", + "no": "Bobil Drikkevann", + "pl": "Woda pitna dla kamperów", + "pt-BR": "Torneira de Água Potável", + "pt": "Água potável para autocaravanas", + "ru": "Питьевая вода для трейлера", + "sk": "Pitná voda pre karavany", + "sl": "Pitna voda za avtodome", + "sv": "Dricksvatten för campingfordon", + "tr": "İçme Suyu", + "uk": "Заправка питною водою", + "vi": "Vòi Nước uống dành cho Nhà lưu động", + "zh-CN": "直饮水", + "zh-HK": "露營車飲用水", + "zh-TW": "RV 飲用水", + "mk": "Пивка вода за трајлери", + "he": "מי שתייה לקרוואן" + } + }, + "amenity/register_office": { + "title": { + "C": "Register Office", + "en": "Register Office", + "ar": "مكتب السجل المدني", + "ast": "Oficina de rexistru", + "ca": "Oficina de registre", + "cs": "Matriční úřad", + "da": "Tinglysningskontor", + "de": "Standesamt", + "el": "Ληξιαρχείο", + "en-GB": "Register Office", + "eo": "Oficejo de civila stato", + "es": "Oficina de registro", + "et": "Perekonnaseisu osakond", + "fa": "اداره ثبت", + "fi": "Maistraatti", + "fr": "Bureau d'état-civil", + "gl": "Oficina do rexistro", + "hr": "Matični ured", + "hu": "Anyakönyvi hivatal", + "id": "Dinas Catatan Sipil", + "is": "Skráningarskrifstofa", + "it": "Anagrafe", + "ja": "登記所", + "ko": "등기소", + "lt": "Registravimo biūras", + "nl": "Burgerlijke Stand", + "no": "Registrer Kontor", + "pl": "Urząd stanu cywilnego", + "pt-BR": "Cartório", + "pt": "Conservatória do registo civil", + "ro": "Oficiu de Registrare", + "ru": "ЗАГС / регистраторы смерти и браков", + "sk": "Matričný úrad", + "sl": "Prijavi urad", + "sv": "Registreringsbyrå", + "ta": "பதிவு அலுவலகம்", + "tr": "Nüfus Dairesi", + "uk": "РАГС (ЗАГС)", + "vi": "Văn phòng Hộ tịch", + "zh-CN": "民政登记处", + "zh-HK": "人事登記處", + "zh-TW": "戶政事務所", + "mk": "Матична служба", + "he": "משרד רישום", + "ms": "Pejabat Pendaftar", + "eu": "Erregistro bulegoa" + } + }, + "amenity/shower": { + "title": { + "C": "Shower", + "en": "Shower", + "ar": "دش استحمام", + "ast": "Ducha", + "ca": "Dutxa", + "cs": "Sprchy", + "da": "Brusebad", + "de": "Dusche", + "el": "Ντουζιέρα", + "en-GB": "Shower", + "eo": "Duŝejo", + "es": "Ducha", + "fa": "دوش", + "fi": "Suihku", + "fr": "Douche", + "gl": "Ducha", + "hr": "Tuš", + "hu": "Zuhany", + "is": "Steypibað", + "it": "Doccia", + "ja": "シャワー室", + "ko": "샤워실", + "lt": "Dušas", + "lv": "Duša", + "nl": "Douche", + "no": "Dusj", + "pl": "Prysznic", + "pt-BR": "Ducha", + "pt": "Chuveiro", + "ru": "Душ", + "sk": "Sprcha", + "sl": "Tuš", + "sr": "Туш", + "sv": "Dusch", + "tr": "Banyo", + "uk": "Душ", + "vi": "Tắm đứng", + "zh-CN": "淋浴间", + "zh-HK": "淋浴處", + "zh-TW": "淋浴間", + "mk": "Туш", + "he": "מקלחת", + "eu": "Dutxa" + } + }, + "amenity/swimming_pool": { + "title": { + "C": "Swimming Pool", + "en": "Swimming Pool", + "af": "Swembad", + "ar": "حوض سباحة", + "ast": "Piscina", + "bn": "সাঁতার কাটার পুকুর", + "bs": "Bazen", + "ca": "Piscina", + "cs": "Plavecký bazén", + "da": "Svømmebassin", + "de": "Schwimmbecken (veraltet)", + "el": "Πισίνα", + "en-GB": "Swimming Pool", + "eo": "Naĝejo", + "es": "Piscina", + "et": "Ujumisbassein", + "fa": "استخر شنا", + "fi": "Uima-allas", + "fr": "Piscine", + "gl": "Piscina", + "hr": "Sportski bazen", + "hu": "Úszómedence", + "id": "Kolam Renang", + "is": "Sundlaug", + "it": "Piscina", + "ja": "遊泳プール(旧)", + "kn": "ಈಜುಕೊಳ", + "ko": "수영장", + "lt": "Baseinas", + "lv": "Peldbaseins", + "nl": "Zwembad", + "no": "Svømmebasseng", + "pl": "Basen", + "pt-BR": "Piscina", + "pt": "Piscina", + "ro": "Piscină", + "ru": "Бассейн (устаревший тег)", + "sk": "Plaváreň", + "sl": "Plavalni bazen", + "sr": "Базен", + "sv": "Simbassäng", + "ta": "நீச்சல் குளம்", + "te": "ఈత కొలను", + "tr": "Yüzme Havuzu", + "uk": "Басейн", + "vi": "Hồ Bơi", + "yue": "游水池", + "zh-CN": "游泳池", + "zh-HK": "游泳池", + "zh-TW": "游泳池", + "zh": "游泳池", + "mk": "Базен", + "bg": "Плувен басейн", + "he": "בריכת שחייה", + "ms": "Kolam Renang", + "eu": "Igerileku", + "ckb": "حەزی مەلەوانی" + } + }, + "amenity/ice_cream": { + "title": { + "C": "Ice Cream Shop", + "en": "Ice Cream Shop", + "ar": "محل بيع المثلجات", + "ast": "Xeladería", + "ca": "Gelateria", + "cs": "Zmrzlina", + "da": "Ishus", + "de": "Eisgeschäft", + "el": "Παγωτατζίδικο", + "en-GB": "Ice Cream Shop", + "eo": "Glaciaĵejo", + "es": "Heladería", + "et": "Jäätisekohvik", + "fa": "بستنی فروشی", + "fi": "Jäätelön myyntipiste", + "fr": "Magasin de crèmes glacées", + "gl": "Xeadaría", + "hu": "Fagylaltozó", + "is": "Ísbúð", + "it": "Gelateria", + "ja": "アイスクリーム店", + "kn": "ಐಸ್ ಕ್ರೀಮ್ ಅಂಗ", + "ko": "아이스크림 가게", + "lt": "Ledų parduotuvė", + "lv": "Saldējuma Veikals", + "nl": "IJskraam", + "no": "Iskrem Butikk", + "pl": "Lodziarnia", + "pt-BR": "Sorveteria", + "pt": "Geladaria", + "ro": "Magazin de Înghețată", + "ru": "Прилавок с мороженным", + "sk": "Obchod so zmrzlinou", + "sl": "Sladoledarna", + "sr": "Сладоледџиница", + "sv": "Glassaffär", + "tr": "Dondurmacı", + "uk": "Морозиво", + "vi": "Tiệm Kem", + "zh-CN": "冰淇淋店", + "zh-HK": "雪榚店", + "zh-TW": "冰淇淋店", + "mk": "Сладоледџилница", + "he": "חנות גלידה", + "ms": "Kedai Ais Krim", + "eu": "Izozki denda", + "ckb": "فرۆشگای ساردەمەنی" + } + }, + "amenity/planetarium": { + "title": { + "C": "Planetarium", + "en": "Planetarium", + "ar": "قبة فلكية", + "ast": "Planetariu", + "ca": "Planetari", + "cs": "Planetárium", + "da": "Planetarium", + "de": "Planetarium", + "el": "Πλανητάριο", + "en-GB": "Planetarium", + "eo": "Planetario (astrokinejo)", + "es": "Planetario", + "et": "Planetaarium", + "fa": "آسمان نما", + "fi": "Planetaario", + "fr": "Planétarium", + "gl": "Planetario", + "hr": "Planetarij", + "hu": "Planetárium", + "is": "Stjörnuver", + "it": "Planetario", + "ja": "プラネタリウム", + "kn": "ತಾರಾಲಯ", + "ko": "천체투영관", + "lt": "Planetariumas", + "lv": "Planetārijs", + "nl": "Planetarium", + "no": "Planetarium", + "pl": "Planetarium", + "pt-BR": "Planetário", + "pt": "Planetário", + "ro": "Planetariu", + "ru": "Планетарий", + "sk": "Planetárium", + "sl": "Planetarij", + "sr": "Планетаријум", + "sv": "Planetarium", + "ta": "கோளரங்கம் ", + "tr": "Gökevi", + "uk": "Планетарій", + "vi": "Cung Thiên văn", + "zh-CN": "天文馆", + "zh-HK": "天象廳", + "zh-TW": "天文臺", + "mk": "Планетариум", + "he": "מצפה כוכבים", + "ms": "Planetarium", + "eu": "Planetario" + } + }, + "amenity/prison": { + "title": { + "C": "Prison Grounds", + "en": "Prison Grounds", + "ar": "سجن", + "ast": "Terrén de cárcel", + "ca": "Terrenys de presó", + "cs": "Prostor věznice", + "da": "Fængselsgrund", + "de": "Gefängnisanlage", + "el": "Χώρος Φυλακής", + "en-GB": "Prison Grounds", + "eo": "Mallibereja tereno", + "es": "Terrenos de prisión / cárcel", + "et": "Vangla", + "fa": "محوطه زندان", + "fi": "Vankila-alue", + "fr": "Prison", + "gl": "Área penitenciaria", + "hr": "Zatvorsko zemljište", + "hu": "Börtön", + "is": "Fangelsislóð", + "it": "Area carceraria", + "ja": "刑務所(代表点または敷地)", + "kn": "ಬಂದೀಖಾನೆ ಮೈದಾನ", + "ko": "교도소 부지", + "nl": "Gevangenisgebied", + "no": "Fengselsområde", + "pl": "Teren więzienia", + "pt-BR": "Presídio", + "pt": "Prisão", + "ro": "Închisoare", + "ru": "Тюрьма", + "sk": "Areál väznice", + "sl": "Območje zapora", + "sr": "Затворско двориште", + "sv": "Fängelseområde", + "tr": "Cezaevi", + "uk": "Вʼязниця", + "vi": "Sân Nhà tù", + "zh-CN": "监狱/看守所", + "zh-HK": "監獄範圍", + "zh-TW": "監獄範圍", + "mk": "Затворски двор", + "he": "מגרש כלא", + "ms": "Kawasan Penjara", + "eu": "Espetxe" + } + }, + "amenity/coworking_space": { + "title": { + "C": "Coworking Space", + "en": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Sdílený pracovní prostor", + "da": "Kontorfællesskab", + "de": "Coworking-Räumlichkeiten", + "el": "Χώρος Συνεργατών", + "en-GB": "Coworking Space", + "eo": "Loko por samloka laborado (ang. coworking)", + "es": "Espacio de trabajo compartido", + "et": "Ühiskasutatavad tööruumid", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de bureaux partagés, coworking", + "gl": "Espacio de cotraballo", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Spazio di Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "nl": "Coworking-kantoor", + "no": "Medarbeider Rom", + "pl": "Coworking", + "pt-BR": "Espaço de Coworking", + "pt": "Espaço de trabalho partilhado", + "ru": "Коворкинг", + "sk": "Priestory pre coworking", + "sl": "Prostor za sodelanje", + "sr": "Заједнички радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間", + "mk": "Споделен работен простор", + "he": "מתחם עבודה שיתופי", + "eu": "Coworking espazioa" + } + }, + "amenity/nursing_home": { + "title": { + "C": "Nursing Home", + "en": "Nursing Home", + "ar": "دار التمريض", + "ca": "Llar d'avis", + "cs": "Domov pro seniory/pečovatelský ústav", + "da": "Plejehjem", + "de": "Pflegeheim", + "el": "Κλινική", + "en-GB": "Nursing Home", + "eo": "Domo de permanenta zorgado", + "es": "Residencia de ancianos", + "et": "Hoolduskodu", + "fa": "آسایشگاه", + "fi": "Hoitokoti", + "fr": "Maison de repos", + "gl": "Residencia de anciáns", + "hu": "Ápolóotthon", + "is": "Hjúkrunarheimili", + "it": "Residenza Sanitaria Assistenziale (RSA)", + "ja": "介護施設", + "ko": "요양원", + "nl": "Verpleeghuis", + "no": "Gamlehjem", + "pl": "Dom spokojnej starości", + "pt-BR": "Casa de Repouso", + "pt": "Centro Geriátrico", + "ru": "Дом престарелых/Дом инвалидов (устаревший тег)", + "sk": "Ošetrovateľské centum", + "sl": "Dom za bolniško nego", + "sr": "Старачки дом", + "sv": "Vårdhem", + "tr": "Bakım Evi", + "uk": "Будинок престарілих", + "vi": "Viện Dưỡng lão", + "zh-CN": "疗养院", + "zh-HK": "護養院", + "zh-TW": "養老院", + "mk": "Старечки дом", + "he": "בית אבות" + } + }, + "amenity/crematorium": { + "title": { + "C": "Crematorium", + "en": "Crematorium", + "ar": "محرقة فرن لاحراق الجث", + "ast": "Crematoriu", + "ca": "Crematori", + "cs": "Krematorium", + "da": "Krematorium", + "de": "Krematorium", + "el": "Κρεματόριο", + "en-GB": "Crematorium", + "eo": "Kadavrobruligejo", + "es": "Crematorio", + "et": "Krematoorium", + "fa": "مٌرده سوز", + "fi": "Krematorio", + "fr": "Crématorium", + "gl": "Crematorio", + "hu": "Krematórium", + "is": "Líkbrennsla", + "it": "Forno crematorio", + "ja": "火葬場", + "ko": "화장장", + "lt": "Krematoriumas", + "lv": "Krematorija", + "nl": "Crematorium", + "no": "Krematorium", + "pl": "Krematorium", + "pt-BR": "Crematório", + "pt": "Crematório", + "ro": "Crematoriu", + "ru": "Крематорий", + "sk": "Krematórium", + "sl": "Krematorij", + "sr": "Крематоријум", + "sv": "Krematorium", + "ta": "சுடுகாடு", + "tr": "Cesed Yakma Yeri", + "uk": "Крематорій", + "vi": "Lò Thiêu", + "zh-CN": "火葬场", + "zh-HK": "火葬場", + "zh-TW": "火葬場", + "mk": "Крематориум", + "he": "משרפה", + "eu": "Errausketa-labe" + } + }, + "amenity/food_court": { + "title": { + "C": "Food Court", + "en": "Food Court", + "ar": "قاعة طعام", + "cs": "Společná jídelní plocha více restaurací", + "da": "Torvehaller", + "de": "Gemeinschaftlicher Gastronomiebereich", + "el": "Χώρος Εστίασης", + "en-GB": "Food Court", + "eo": "Manĝ-bazaro", + "es": "Plaza de comida", + "et": "Toiduväljak", + "fa": "فودکورت", + "fi": "Ravintolamaailma", + "fr": "Aire de restauration, food-court", + "gl": "Zona de comidas", + "hu": "Étkezőtér", + "is": "Matarmarkaður", + "it": "Zona ristorazione", + "ja": "フードコート", + "ko": "푸드코트", + "lv": "Ēdnīca", + "nl": "Eetplaats omringd door fastfoodzaken", + "no": "Mathall", + "pl": "Wspólny ogródek restauracyjny", + "pt-BR": "Praça de Alimentação", + "pt": "Praça de alimentação", + "ru": "Ресторанный дворик", + "sk": "Stravovacia zóna", + "sl": "Skupni jedilni prostor", + "sv": "Restaurangtorg", + "tr": "Yemek Yeri", + "uk": "Фуд-корт", + "vi": "Trung tâm Ẩm thực", + "zh-CN": "美食广场", + "zh-HK": "美食廣場", + "zh-TW": "美食街", + "mk": "Сала за брза храна", + "he": "מתחם מזון", + "ms": "Medan Selera", + "eu": "Bazkaltzeko eremua" + } + }, + "amenity/internet_cafe": { + "title": { + "C": "Internet Cafe", + "en": "Internet Cafe", + "ar": "مقهى إنترنت", + "ca": "Cifercafè", + "cs": "Internetová kavárna", + "da": "Internetcafe", + "de": "Internetcafé", + "el": "Internet Cafe", + "en-GB": "Internet Cafe", + "eo": "Retkafejo", + "es": "Internet café", + "et": "Internetikohvik", + "fa": "کافی‌نت", + "fi": "Internetkahvila", + "fr": "Cybercafé", + "gl": "Internet café", + "hu": "Internetkávézó", + "is": "Netkaffihús", + "it": "Internet Cafe", + "ja": "インターネットカフェ", + "ko": "PC방", + "lt": "Interneto kavinė", + "lv": "Interneta Kafejnīca", + "nl": "Internetcafé", + "no": "Internettkafé", + "pl": "Kafejka internetowa", + "pt-BR": "Internet Café", + "pt": "Cibercafé", + "ro": "Internet Cafe", + "ru": "Интернет-кафе", + "sk": "Internetová kaviareň", + "sl": "Internet Cafe", + "sr": "Интернет кафе", + "sv": "Internetkafé", + "tr": "İnternet Kafe", + "uk": "Інтернет кафе", + "vi": "Quán Internet", + "zh-CN": "网吧", + "zh-HK": "網吧", + "zh-TW": "網咖", + "mk": "Интернет-кафуле", + "he": "קפה אינטרנט", + "ms": "Kafe Internet", + "eu": "Internet kafetegi" + } + }, + "amenity/public_bath": { + "title": { + "C": "Public Bath", + "en": "Public Bath", + "ar": "حمام عام", + "ast": "Baños públicos", + "ca": "Banys públic", + "cs": "Veřejné lázně", + "da": "Offentligt bad", + "de": "Öffentliches Bad", + "el": "Δημόσιο Λουτρό", + "en-GB": "Public Bath", + "eo": "Banejo (distro)", + "es": "Baño público", + "fa": "حمام عمومی", + "fi": "Kylpylaitos", + "fr": "Bain public", + "gl": "Baño público", + "hr": "Javno kupalište", + "hu": "Nyilvános fürdő", + "is": "Almenningsböð", + "it": "Bagni Pubblici", + "ja": "公衆浴場", + "ko": "대중 목욕탕", + "lt": "Vieša vonia", + "nl": "Publiek bad", + "no": "Offentlig bad", + "pl": "Łaźnia publiczna", + "pt-BR": "Banho Público", + "pt": "Banhos públicos", + "ro": "Baie Publică", + "ru": "Общественная баня", + "sk": "Verejné sprchy", + "sl": "Javno kopališče", + "sr": "Јавно купатило", + "sv": "Publikt bad", + "tr": "Hamam", + "uk": "Громадська лазня", + "vi": "Nơi Tắm Công cộng", + "zh-CN": "公共浴室", + "zh-HK": "公共浴室", + "zh-TW": "公共澡堂", + "mk": "Јавна бања", + "he": "מרחצאות ציבוריות", + "eu": "Komun publikoak" + } + }, + "amenity/recycling": { + "title": { + "C": "Recycling Container", + "en": "Recycling", + "ar": "إعادة التدوير", + "ca": "Reciclatge", + "cs": "Recyklace", + "de": "Recycling", + "el": "Ανακύκλωση", + "eo": "Recikligejo", + "es": "Reciclaje", + "fa": "بازیافت", + "fi": "Kierrätys", + "fr": "Point de recyclage", + "gl": "Reciclaxe", + "hr": "Recikliranje", + "hu": "Szelektív hulladékgyűjtő", + "is": "Endurvinnsla", + "it": "Riciclaggio", + "ja": "リサイクル施設", + "ko": "재활용", + "nl": "Recycling", + "no": "Resirkulering", + "pl": "Przetwarzanie odpadów", + "pt-BR": "Reciclagem", + "pt": "Reciclagem", + "ru": "Вторичное сырьё", + "sr": "Рециклирање", + "sv": "Återvinning", + "tr": "Geri Dönüşüm", + "uk": "Переробка вторсировини", + "vi": "Tái chế", + "zh-CN": "资源回收设施", + "zh-HK": "回收設施", + "zh-TW": "回收", + "mk": "Рециклажа", + "he": "מיחזור", + "eu": "Birziklatze" + } + }, + "recycling_type/centre": { + "title": { + "C": "Recycling Center" + } + }, + "amenity/waste_transfer_station": { + "title": { + "C": "Waste Transfer Station", + "en": "Waste Transfer Station", + "ar": "محطة نقل النفايات", + "ast": "Estación de tresferencia de basoria", + "ca": "Centre de tractament de residus", + "cs": "Překládací stanice odpadu", + "da": "Affaldsstation", + "de": "Müllumladestation", + "el": "Σταθμός Μεταφοράς Απορριμμάτων", + "en-GB": "Waste Transfer Station", + "eo": "Stacio de rubmastrumado", + "es": "Estación de transferencia de residuos", + "fa": "ایستگاه انتقال زباله", + "fi": "Jätteiden putkikeräysasema", + "fr": "Installation de transit, regroupement ou tri de déchets", + "gl": "Estación de bombeo de augas residuais", + "hu": "Hulladékátrakó állomás", + "is": "Sorpflokkunarstöð", + "it": "Centro Raccolta Rifiuti", + "ja": "ゴミ集積場", + "ko": "쓰레기 운반장", + "nl": "Afval-transfer-station", + "pl": "Stacja przeładunku odpadów", + "pt-BR": "Estação de Transferência de Resíduos", + "pt": "Estação de transferência de lixo", + "ru": "Канализационно-насосная станция", + "sl": "Zbirni center odpadkov", + "sr": "Станица за пренос отпада", + "sv": "Avfallscentral", + "tr": "Çöp Transfer İstasyonu", + "uk": "Сміттєперевантажувальна станція", + "vi": "Trạm Trung chuyển Chất thải", + "zh-CN": "垃圾中转站", + "zh-HK": "垃圾轉運站", + "zh-TW": "垃圾清運站", + "mk": "Претоварна отпадна станица", + "he": "תחנת מעבר זבל" + } + }, + "amenity/animal_boarding": { + "title": { + "C": "Animal Boarding Facility", + "en": "Animal Boarding Facility", + "ar": "منشأة رعاية حيوانات", + "ast": "Instalación d'embarque d'animales", + "ca": "Instal·lació d'embarcament d'animals", + "cs": "Hotel pro zvířata", + "da": "Dyrepension", + "de": "Tierpension", + "el": "Επιθεώρηση Ζώων", + "en-GB": "Animal Boarding Facility", + "eo": "Hotelo (prizorgejo) por hejmbestoj", + "es": "Alojamiento de animales", + "fi": "Lemmikkihoitola", + "fr": "Plateforme de chargement d'animaux", + "gl": "Aloxamento de animais", + "hu": "Állatpanzió", + "is": "Dýrahótel", + "it": "Pensione per animali", + "ja": "ペットホテル", + "ko": "동물 기숙 시설", + "nl": "Dierenpension", + "pl": "Hotel dla zwierząt", + "pt-BR": "Hotel para animais", + "pt": "Hotel para animais", + "ru": "Передержка животных", + "sk": "Opatrovanie zvierat", + "sl": "Živalski hotel", + "sv": "Djurhotell", + "tr": "Yatılı Hayvan Bakım Yeri", + "uk": "Готель для тварин", + "vi": "Khách sạn Thú cưng", + "zh-CN": "动物寄养机构", + "zh-HK": "寵物酒店", + "zh-TW": "寵物度假村", + "mk": "Престојувалиште за животни", + "he": "פנסיון" + } + }, + "amenity/animal_breeding": { + "title": { + "C": "Animal Breeding Facility", + "en": "Animal Breeding Facility", + "ar": "منشأة تربية وبيع حيوانات", + "ast": "Instalación d'alimentación d'animales", + "ca": "Instal·lació de reproducció d'animals", + "cs": "Chovná stanice", + "da": "Dyreforsøgsklinik", + "de": "Tierzucht", + "el": "Εκτροφείο", + "en-GB": "Animal Breeding Facility", + "eo": "Bredejo", + "es": "Criadero de animales", + "fa": "امکانات پرورش حیوانات", + "fi": "Eläinten ruokintapaikka", + "fr": "Installation d'élevage d'animaux", + "gl": "Granxa de animais", + "hu": "Állattenyésztő", + "is": "Dýraræktun", + "it": "Allevamento", + "ja": "動物繁殖施設", + "ko": "동물 사육 시설", + "nl": "Fokkerij", + "pl": "Hodowla zwierząt", + "pt-BR": "Estabelecimento para reprodução de animais", + "pt": "Instalação para reprodução de animais ", + "ru": "Питомник", + "sk": "Chovateľská stanica", + "sl": "Središče za vzrejo živali", + "sv": "Djuruppfödning", + "tr": "Hayvan Islah Yeri", + "uk": "Розплідник тварин", + "vi": "Trại Nuôi Thú", + "zh-CN": "动物饲养繁育机构", + "zh-HK": "動物繁殖場", + "zh-TW": "動物繁殖場", + "mk": "Размножувалиште на животни", + "he": "מתקן לגידול לבעלי חיים" + } + }, + "amenity/animal_shelter": { + "title": { + "C": "Animal Shelter", + "en": "Animal Shelter", + "ar": "مأوى حيوانات", + "ast": "Refuxu d'animales", + "ca": "Refugi d'animals", + "cs": "Zvířecí útulek", + "da": "Dyrehjem", + "de": "Tierheim", + "el": "Καταφύγιο Ζώων", + "en-GB": "Animal Shelter", + "eo": "Azilo por bestoj", + "es": "Refugio de animales", + "fa": "پناهگاه حیوانات", + "fi": "Eläinhoitola", + "fr": "Refuge animalier", + "gl": "Abeiro de animais", + "hu": "Állatmenhely", + "is": "Dýraathvarf", + "it": "Rifugio per animali", + "ja": "動物保護施設", + "ko": "동물 보호소", + "lt": "Gyvūnų prieglauda", + "lv": "Dzīvnieku patversme", + "nl": "Dierenasiel", + "no": "Dyrehjem", + "pl": "Schronisko dla zwierząt", + "pt-BR": "Abrigo de Animais", + "pt": "Abrigo para animais", + "ru": "Приют для животных", + "sk": "Útulok pre zvieratá", + "sl": "Zavetišče za živali", + "sr": "Азил за животиње", + "sv": "Djurhem", + "tr": "Hayvan Barinağı", + "uk": "Притулок для тварин", + "vi": "Trạm Cứu hộ Thú cưng", + "zh-CN": "动物收容救助所", + "zh-HK": "動物收容中心", + "zh-TW": "動物收容中心", + "mk": "Засолниште за животни", + "he": "בית מחסה לחיות מחמד" + } + }, + "amenity/driving_school": { + "title": { + "C": "Driving School", + "en": "Driving School", + "ar": "مدرسة تعليم القيادة", + "ast": "Autoescuela", + "ca": "Autoescola", + "cs": "Autoškola", + "da": "Køreskole", + "de": "Fahrschule", + "el": "Σχολή Οδήγησης", + "en-GB": "Driving School", + "eo": "Stirlernejo", + "es": "Escuela de conducción", + "et": "Sõidukool", + "fa": "آموزشگاه رانندگی", + "fi": "Autokoulu", + "fr": "Auto-école", + "gl": "Autoescola", + "hu": "Autósiskola", + "is": "Ökuskóli", + "it": "Scuola guida", + "ja": "自動車教習所", + "ko": "운전학원", + "lt": "Vairavimo mokykla", + "lv": "Autoskola", + "nl": "Rijschool", + "no": "Trafikkskole", + "pl": "Szkoła nauki jazdy", + "pt-BR": "Auto Escola", + "pt": "Escola de condução", + "ro": "Școală de Șoferi", + "ru": "Автошкола", + "sk": "Autoškola", + "sl": "Avtošola", + "sr": "Ауто школа", + "sv": "Trafikskola", + "ta": "ஓட்டுநர் பள்ளி", + "tr": "Sürücü Kursu", + "uk": "Автошкола", + "vi": "Trường Dạy Lái Xe", + "zh-CN": "驾校", + "zh-HK": "駕駛學校", + "zh-TW": "駕訓班", + "mk": "Автоучилиште", + "he": "בית ספר לנהיגה", + "ms": "Sekolah Memandu", + "eu": "Auto-eskola" + } + }, + "amenity/vending_machine": { + "title": { + "C": "Vending Machine", + "en": "Vending Machine", + "ar": "آلة بيع", + "ast": "Máquina de venta automática", + "ca": "Màquina de vending", + "cs": "Prodejní automat", + "da": "Salgsautomat", + "de": "Verkaufsautomat", + "el": "Αυτόματος Πωλητής", + "en-GB": "Vending Machine", + "eo": "Vendilo", + "es": "Máquina expendedora", + "fa": "دستگاه فروش خودکار", + "fi": "Myyntiautomaatti", + "fr": "Distributeur automatique", + "gl": "Máquina expendedora", + "hr": "Automat za prodaju", + "hu": "Árusító automata", + "is": "Sjálfsali", + "it": "Distributore automatico", + "ja": "自動販売機", + "ko": "자동판매기", + "lt": "Prekybos automatas", + "lv": "Tirdzniecības automāts", + "nl": "Automaat", + "no": "Automat", + "pl": "Automat sprzedający", + "pt-BR": "Máquina de Venda", + "pt": "Máquina de venda automática", + "ru": "Торговый автомат", + "sk": "Výdajný automat", + "sl": "Prodajni avtomat", + "sr": "Аутомат", + "sv": "Varuautomat", + "tr": "Otomatik Satış Makinası", + "uk": "Торговельний автомат", + "vi": "Máy Bán Hàng", + "zh-CN": "自动售货机", + "zh-HK": "售賣機", + "zh-TW": "自動販賣機", + "mk": "Продажен автомат", + "he": "מכונת ממכר", + "ms": "Mesin Layan Diri", + "eu": "Makina saltzaile" + } + }, + "amenity/watering_place": { + "title": { + "C": "Animal Watering Place", + "en": "Animal Watering Place", + "ar": "مكان شرب للحيوانات", + "ast": "Bebederu p'animales", + "ca": "Font d'aigua per animals", + "cs": "Napajedlo pro zvířata", + "da": "Dyrevandtrug", + "de": "Tränke", + "el": "Ποτίστρα Ζώων", + "en-GB": "Animal Watering Place", + "eo": "Akvotrinkejo por bestoj", + "es": "Abrevadero para animales", + "fa": "آبشخور حیوانات", + "fi": "Eläinten juomapaikka", + "fr": "Point d'eau pour animaux", + "gl": "Bebedoiro de animais", + "hu": "Állatitató hely", + "is": "Brynning fyrir dýr", + "it": "Abbeveratoio", + "ja": "動物の水飲み場", + "ko": "동물 급수 장소", + "nl": "Drinkplaats voor dieren", + "no": "Dyrevanningssted", + "pl": "Poidło dla zwierząt", + "pt-BR": "Bebedouro para animais", + "pt": "Bebedouro para animais", + "ru": "Водопой для животных", + "sl": "Napajališče za živali", + "sr": "Појило", + "sv": "Dricksvatten för djur", + "tr": "Hayvan Yıkama Yeri", + "uk": "Водопій", + "vi": "Nước Uống dành cho Thú vật", + "zh-CN": "动物饮水地", + "zh-HK": "動物飲水處", + "zh-TW": "動物飲水區", + "mk": "Поило за миленици", + "he": "מקור מים לחיות" + } + }, + "amenity/bus_station": { + "title": { + "C": "Bus Station / Terminal", + "en": "Bus Station / Terminal", + "ar": "محطة حافلات", + "ast": "Estación d'autobuses / Terminal", + "ca": "Estació d'autobusos", + "cs": "Autobusové nádraží / terminál", + "da": "Busstation/rutebilstation", + "de": "Busbahnhof / Busterminal", + "el": "Τερματικός Σταθμός Λεωφορείου", + "en-GB": "Bus Station / Terminal", + "eo": "Aŭtobus-stacio", + "es": "Estación / Terminal de bus", + "fa": "پایانه اتوبوس / ترمینال", + "fi": "Linja-autoasema/-terminaali", + "fr": "Gare routière", + "gl": "Estación de autobuses", + "hr": "Autobusni kolodvor", + "hu": "Buszpályaudvar", + "is": "Strætisvagnastöð / Umferðarmiðstöð", + "it": "Stazione /Terminal degli autobus", + "ja": "バスターミナル(旧:単独)", + "ko": "버스 터미널", + "lv": "Autobusu pietura / Terminālis", + "nl": "Busstation", + "no": "Busstasjon/-terminal", + "pl": "Dworzec autobusowy", + "pt-BR": "Terminal / Estação de Ônibus", + "pt": "Estação / Terminal de autocarros", + "ru": "Автобусная станция/терминал", + "sl": "Avtobusna postaja / Terminal", + "sq": "Stacioni i Autobusave", + "sv": "Busstation / Bussterminal", + "ta": "பேருந்து நிலையம் / முனையம்", + "tr": "Otobüs Durağı / Terminali", + "uk": "Автостанція/Термінал", + "vi": "Ga Xe buýt", + "zh-CN": "公交车站 / 枢纽站", + "zh-HK": "巴士總站", + "zh-TW": "客運站", + "mk": "Автобуска станица / терминал", + "he": "תחנת אוטובוס", + "eu": "Autobus geltoki / Terminal" + } + }, + "amenity/ferry_terminal": { + "title": { + "C": "Ferry Station / Terminal", + "en": "Ferry Station / Terminal", + "ar": "المحطة البحرية", + "ast": "Estación / Terminal de ferry", + "ca": "Moll per Ferry", + "cs": "Přístaviště / terminál trajektu či přívozu", + "da": "Færgeterminal", + "de": "Schiffsanleger", + "el": "Πορθμείο", + "en-GB": "Ferry Station / Terminal", + "eo": "Pram-stacio", + "es": "Estación / Terminal de ferry", + "fi": "Laivaterminaali", + "fr": "Terminal ferry", + "gl": "Estación / Terminal de ferri", + "hu": "Kompállomás / Terminál", + "is": "Ferjustöð / Umferðarmiðstöð", + "it": "Stazione / Terminal dei battelli", + "ja": "フェリー乗り場 / ターミナル", + "ko": "페리 터미널", + "lv": "Prāmju stacija / Terminālis", + "nl": "Veerbootterminal", + "no": "Fergestasjon/-terminal", + "pl": "Terminal promowy", + "pt-BR": "Terminal de Ferry Boat / Balsa", + "pt": "Estação / Terminal de ferry", + "ru": "Пристань/терминал для парома", + "sv": "Färjeterminal / Färjehållplats / Färjestation", + "tr": "Feribot Terminali", + "uk": "Поромна станція/Термінал", + "vi": "Ga Phà", + "zh-CN": "轮船渡口 / 码头", + "zh-HK": "客運碼頭", + "zh-TW": "水運碼頭", + "mk": "Траектна станица / терминал", + "he": "מסוף מעבורת", + "eu": "Ferry geltoki / Terminala" + } + }, + "amenity/scrapyard": { + "title": { + "C": "Scrap Yard", + "en": "Scrap Yard", + "ar": "مقبرة السيارات", + "ast": "Chatarrería", + "ca": "Escorxador", + "cs": "Vrakoviště", + "da": "Skrotplads", + "de": "Schrottplatz", + "el": "Μάντρα", + "en-GB": "Scrap Yard", + "eo": "Ferrubejo", + "es": "Depósito de chatarra", + "fi": "Autonromuttamo", + "fr": "Casse automobile", + "gl": "Depósito de chatarra", + "hu": "Szeméttelep", + "is": "Brotajárnshaugur", + "it": "Sfasciacarrozze", + "ja": "自動車解体場", + "ko": "폐차장", + "lt": "Metalo laužas", + "nl": "Sloperij", + "no": "Skraphandel", + "pl": "Złomowisko", + "pt-BR": "Ferro Velho", + "pt": "Sucata", + "ru": "Склад металлолома/свалка", + "sk": "Vrakovisko", + "sr": "Ауто-отпад", + "sv": "Bilskrot", + "tr": "Hurdalık", + "uk": "Авторозборка", + "vi": "Bãi Phế liệu", + "zh-CN": "废品堆放场", + "zh-HK": "廢料場", + "zh-TW": "汽車廢料場", + "mk": "Двор за отпад", + "he": "מגרש גרוטאות", + "eu": "Txatarra metaketa" + } + }, + "amenity/car_pooling": { + "title": { + "C": "Car Pooling Station", + "en": "Car Pooling Station", + "da": "Samkørselsstation", + "de": "Car Pooling Station", + "es": "Estación de vehículo compartido (Carpooling)", + "fi": "Kimppakyytiasema", + "fr": "Aire de covoiturage", + "ja": "カープール", + "pl": "Carpooling", + "pt-BR": "Estação de carona solidária", + "pt": "Posto de boleia partilhada", + "uk": "Місце посадки/висадки пасажирів", + "zh-TW": "汽車共乘站", + "mk": "Станица за заедничко автомобилско возење", + "he": "תחנת שיתוף נסיעות" + } + }, + "amenity/love_hotel": { + "title": { + "C": "Love Hotel", + "en": "Love Hotel", + "cs": "Hodinový hotel", + "da": "Kærlighedshotel", + "de": "Stundenhotel", + "el": "Ξενοδοχείο Ημιδιαμονής", + "en-GB": "Love Hotel", + "eo": "Amor-hotelo", + "es": "Hotel para parejas", + "fa": "هتل عشق", + "fi": "Tuntihotelli", + "fr": "Love hôtel", + "gl": "Hotel para parellas", + "hu": "Love hotel", + "is": "Ástarhótel", + "it": "Love Hotel", + "ja": "ラブホテル", + "ko": "러브 호텔", + "nl": "Love hotel", + "no": "Kjærlighetshotell", + "pl": "Love hotel", + "pt-BR": "Motel", + "pt": "Motel para casais", + "ru": "Отель любви", + "sv": "Kärlekshotell", + "tr": "Aşk Oteli", + "uk": "Готель кохання", + "vi": "Khách sạn Tình yêu", + "zh-CN": "爱情宾馆", + "zh-HK": "愛情酒店", + "zh-TW": "情趣旅館", + "mk": "Љубовен хотел", + "he": "מלון לפי שעות" + } + }, + "amenity/music_school": { + "title": { + "C": "Music School", + "en": "Music School", + "ar": "مدرسة موسيقى", + "ast": "Academia de música", + "ca": "Escola de música", + "cs": "Hudební škola", + "da": "Musikskole", + "de": "Musikschule", + "el": "Ωδείο", + "en-GB": "Music School", + "eo": "Muzika lernejo", + "es": "Escuela de música", + "fa": "آموزشگاه موسیقی", + "fi": "Musiikkikoulu", + "fr": "École de musique", + "gl": "Escola de música", + "hu": "Zeneiskola", + "is": "Tónlistarskóli", + "it": "Scuola di musica", + "ja": "音楽学校", + "ko": "음악 학교", + "lt": "Muzikos mokykla", + "lv": "Mūzikas skola", + "nl": "Muziekschool", + "no": "Musikkskole", + "pl": "Szkoła muzyczna niepodlegająca MEN", + "pt-BR": "Escola de Música", + "pt": "Escola de música", + "ru": "Музыкальная школа", + "sl": "Glasbena šola", + "sv": "Musikskola", + "ta": "இசைப் பள்ளி", + "tr": "Müzik Okulu", + "uk": "Музична школа", + "vi": "Trường Âm nhạc", + "zh-CN": "音乐学校", + "zh-HK": "音樂學校", + "zh-TW": "音樂學校", + "mk": "Музичко училиште", + "he": "בית ספר למוזיקה", + "ms": "Sekolah Muzik", + "eu": "Musika eskola", + "ckb": "قوتابخانەی مۆسیقی" + } + }, + "amenity/smoking_area": { + "title": { + "C": "Smoking Area", + "en": "Smoking Area", + "ar": "منطقة مخصصة للتدخين", + "ca": "Àrea per a fumadors", + "cs": "Kuřárna", + "da": "Rygeområde", + "de": "Raucherbereich", + "el": "Καπνιστές", + "en-GB": "Smoking Area", + "eo": "Fumejo", + "es": "Área de fumadores", + "et": "Suitsetamise koht", + "fa": "منطقه سیگار کشیدن", + "fi": "Tupakointialue", + "fr": "Zone fumeur", + "gl": "Zona de fumadores", + "hu": "Dohányzó terület", + "is": "Reykingasvæði", + "it": "Area fumatori", + "ja": "喫煙所", + "ko": "흡연 구역", + "lt": "Rūkymo vieta", + "lv": "Smēķēšanas vieta", + "nl": "Rookgebied", + "no": "Røykeområde", + "pl": "Palarnia", + "pt-BR": "Área de fumantes", + "pt": "Área para fumadores", + "ru": "Место для курения", + "sv": "Rökområde", + "tr": "Sigara İçme Alanı", + "uk": "Місце для куріння", + "vi": "Khu vực Hút thuốc", + "zh-CN": "吸烟区域", + "zh-HK": "吸煙區", + "zh-TW": "吸煙區", + "mk": "Пушилница", + "he": "אזור עישון", + "eu": "Erretzeko gune", + "ckb": "ناوچەی جگەرەکێشان" + } + }, + "amenity/monastery": { + "title": { + "C": "Monastery Grounds", + "en": "Monastery Grounds", + "cs": "Klášterní pozemky", + "da": "Kloster-område", + "de": "Klostergelände", + "el": "Ιερά Μονή", + "en-GB": "Monastery Grounds", + "eo": "Monaĥeja tereno", + "es": "Terrenos del monasterio", + "et": "Kloostriala", + "fi": "Luostari", + "fr": "Terrain de monastère", + "gl": "Área de mosteiro", + "hu": "Kolostor", + "is": "Klausturlóð", + "it": "Monastero", + "ja": "修道院", + "ko": "수도원 부지", + "nl": "Kloostergebied", + "no": "Klosterområde", + "pl": "Teren klasztoru", + "pt-BR": "Jardins do mosteiro", + "pt": "Mosteiro", + "ru": "Монастырь", + "sv": "Klosterområde", + "uk": "Територія монастиря", + "vi": "Sân Tu viện", + "zh-HK": "寺院範圍", + "zh-TW": "修道院", + "mk": "Манастир", + "he": "מתחם מנזר", + "eu": "Monastegiaren eremu" + } + }, + "amenity/dive_centre": { + "title": { + "C": "Dive Center", + "en": "Dive Center", + "ar": "مركز الغوص", + "cs": "Centrum potápění", + "de": "Tauchschule", + "el": "Κέντρο Καταδύσεων", + "en-GB": "Dive Centre", + "eo": "Centro de subakva naĝado", + "es": "Centro de buceo", + "fi": "Sukelluskeskus", + "fr": "Centre de plongée", + "gl": "Centro de mergullo", + "hu": "Búvárközpont", + "is": "Köfunarmiðstöð", + "it": "Centro subacqueo", + "ja": "ダイブセンター", + "ko": "다이브 센터", + "nl": "Duikcentrum", + "no": "Dykkesenter", + "pl": "Centrum nurkowe", + "pt-BR": "Centro de Mergulho", + "pt": "Centro de mergulho", + "sv": "Dykcenter", + "uk": "Центр навчання підводного плавання", + "vi": "Trung tâm Lặn biển", + "zh-CN": "潜水中心", + "zh-HK": "潛水中心", + "zh-TW": "潛水中心", + "mk": "Нуркачки центар", + "he": "מרכז צלילה", + "en-AU": "Dive Centre" + } + }, + "amenity/language_school": { + "title": { + "C": "Language School", + "en": "Language School", + "ar": "مدرسة لغات", + "ca": "Escola d'idiomes", + "cs": "Jazyková škola", + "da": "Sprogskole", + "de": "Sprachschule", + "el": "Φροντιστήριο Ξένων Γλωσσών", + "eo": "Lingva lernejo", + "es": "Escuela de idiomas", + "fa": "آموزشگاه زبان", + "fi": "Kielikoulu", + "fr": "École de langues", + "gl": "Escola de idiomas", + "hu": "Nyelviskola", + "is": "Tungumálaskóli", + "it": "Scuola di lingue straniere", + "ja": "外国語教室", + "ko": "언어 학원", + "lt": "Kalbų mokykla", + "nl": "Taalschool", + "no": "Språkskole", + "pl": "Szkoła językowa", + "pt-BR": "Escola de idiomas", + "pt": "Escola de línguas", + "ru": "Языковая школа", + "sv": "Språkskola", + "ta": "மொழிப் பள்ளி", + "uk": "Мовна школа", + "vi": "Trường học Ngoại ngữ", + "zh-CN": "语言学校", + "zh-HK": "語言學校", + "zh-TW": "語言學校", + "mk": "Училиште за јазици", + "he": "בית ספר לשפות", + "eu": "Hizkuntz eskola", + "ckb": "قوتابخانەی زمان" + } + }, + "amenity/money_transfer": { + "title": { + "C": "Money Transfer Station", + "en": "Money Transfer Station", + "de": "Geldtransferstation", + "el": "Υπηρεσία Μεταφοράς Χρημάτων", + "eo": "Centro de mon-transigo", + "es": "Estación de transferencia de dinero", + "fi": "Rahansiirtopiste", + "fr": "Transfert d'argent", + "gl": "Estación de transferencia de diñeiro", + "hu": "Pénz átutaló hely", + "it": "Agenzia di Money Transfer", + "ja": "海外送金所", + "ko": "환전소", + "nl": "Wisselkantoor", + "no": "Pengeoverføringsstasjon", + "pl": "Placówka przekazów pieniężnych", + "pt-BR": "Estação de transferência de dinheiro", + "pt": "Serviço de transferência de dinheiro", + "ru": "Денежные переводы", + "sv": "Pengaöverföring", + "tr": "Para Transfer İstasyonu", + "uk": "Грошові перекази", + "vi": "Gửi Tiền", + "zh-HK": "滙款中心", + "zh-TW": "匯款站", + "mk": "Испраќање на пари", + "he": "תחנת העברת כספים" + } + }, + "amenity/payment_centre": { + "title": { + "C": "Payment Center", + "en": "Payment Center", + "ar": "مركز دفع نقود", + "de": "Zahlstelle", + "el": "Κέντρο Πληρωμών", + "en-GB": "Payment Centre", + "eo": "Centro de pago", + "es": "Centro de pago", + "fi": "Maksupalvelu", + "fr": "Centre de paiement", + "gl": "Centro de pagamento", + "it": "Centro per i pagamenti", + "ja": "納入窓口", + "nl": "Betalingscentrum", + "no": "Betalingssenter", + "pl": "Centrum płatnicze", + "pt-BR": "Centro de pagamento", + "pt": "Balcão de pagamento", + "sv": "Betalningscenter", + "uk": "Приймання платежів", + "zh-HK": "繳費處", + "zh-TW": "繳費中心", + "mk": "Платежно место", + "he": "מרכז תשלום", + "en-AU": "Payment Centre" + } + }, + "amenity/payment_terminal": { + "title": { + "C": "Payment Terminal", + "en": "Payment Terminal", + "ar": "محطة دفع نقود", + "cs": "Platební terminál", + "de": "Zahlungsterminal", + "el": "Τερματικό Πληρωμών", + "eo": "Pag-aŭtomato", + "es": "Terminal de pago", + "fi": "Maksupääte", + "fr": "Terminal de paiement", + "gl": "Terminal de pagamento", + "hu": "Befizetőautomata", + "it": "Terminale pagamenti", + "ja": "支払端末", + "nl": "Betalingsterminal", + "no": "Betalingsterminal", + "pl": "Terminal płatniczy", + "pt-BR": "Terminal de pagamento", + "pt": "Terminal de pagamento", + "ru": "Платёжный терминал", + "sv": "Betalningsterminal", + "uk": "Платіжний термінал", + "zh-HK": "繳費終端機", + "zh-TW": "繳費窗口", + "mk": "Платежен терминал", + "he": "מסוף תשלום" + } + }, + "recycling_type/container": { + "title": { + "C": "Recycling Container" + } + }, + "amenity/vehicle_inspection": { + "title": { + "C": "Vehicle Inspection", + "en": "Vehicle Inspection", + "ar": "فحص مركبات", + "ca": "Inspecció de vehicles", + "cs": "Kontrola vozidel", + "de": "Fahrzeuginspektion", + "el": "Επιθεώρηση Οχήματος", + "eo": "Aŭtomobil-kontrolejo", + "es": "Inspección de vehículo", + "fa": "مرکز معاینه فنی خودرو", + "fi": "Katsastusasema", + "fr": "Centre de contrôle technique", + "gl": "Inspección de vehículo", + "hr": "Tehnički pregled vozila", + "hu": "Autóműszaki vizsgáló", + "is": "Skoðun farartækja", + "it": "Ispezione veicolo", + "ja": "車検場", + "ko": "차량 점검", + "nl": "Voertuigkeuring", + "pl": "Stacja kontroli pojazdów", + "pt-BR": "Inspeção veicular", + "pt": "Centro de inspeção de veículos", + "ru": "Станция техосмотра", + "sv": "Fordonsbesiktning", + "uk": "Техогляд траспортних засобів", + "vi": "Trạm Kiểm tra Xe", + "zh-TW": "車輛檢查", + "mk": "Преглед на возила", + "he": "בדיקת כלי רכב" + } + }, + "amenity/photo_booth": { + "title": { + "C": "Photo Booth", + "en": "Photo Booth", + "cs": "Foto budka", + "de": "Fotoautomat", + "el": "Φωτογραφικός Θάλαμος", + "eo": "fot-aŭtomato", + "es": "Cabina de fotos", + "et": "Fotokabiin", + "fi": "Valokuvauskoppi", + "fr": "Photomaton", + "gl": "Cabina de fotos", + "hu": "Fényképezőfülke", + "it": "Cabina per fototessere", + "ja": "証明写真機", + "ko": "사진 부스", + "nl": "Pasfotohokje", + "no": "Fotokiosk", + "pl": "Fotobudka", + "pt-BR": "Cabine de foto", + "pt": "Cabine Fotográfica", + "ru": "Фотокабина", + "sv": "Fotoautomat", + "uk": "Фото-кабінка", + "zh-CN": "自助拍照机", + "zh-TW": "照相站", + "mk": "Фотокабина", + "he": "תא צילום" + } + }, + "amenity/embassy": { + "title": { + "C": "Embassy", + "en": "Embassy", + "af": "Ambassade", + "ar": "سفارة", + "ast": "Embaxada", + "bn": "দুতাবাস", + "bs": "Ambasada", + "ca": "Ambaixada", + "cs": "Velvyslanectví", + "da": "Ambassade", + "de": "Botschaft", + "el": "Πρεσβεία", + "en-GB": "Embassy", + "eo": "Ambasadejo", + "es": "Embajada", + "et": "Saatkond", + "fa": "سفارت خانه", + "fi": "Suurlähetystö", + "fr": "Ambassade", + "gl": "Embaixada", + "hr": "Ambasada", + "hu": "Külképviselet", + "id": "Kedutaan besar", + "is": "Sendiráð", + "it": "Ambasciata", + "ja": "大使館", + "kn": "ರಾಯಭಾರ", + "ko": "대사관", + "lt": "Ambasada", + "lv": "Vēstniecība", + "nl": "Ambassade", + "no": "Ambassade", + "pl": "Ambasada/konsulat", + "pt-BR": "Embaixada", + "pt": "Embaixada", + "ro": "Ambasadă", + "ru": "Посольство", + "sk": "Veľvyslanectvo", + "sl": "Veleposlaništvo", + "sr": "Амбасада", + "sv": "Ambassad", + "ta": "தூதரகம்", + "tr": "Büyükelçilik", + "uk": "Амбасада", + "vi": "Tòa đại sứ", + "yue": "大使館", + "zh-CN": "使馆", + "zh-HK": "大使館", + "zh-TW": "使館", + "zh": "使馆", + "mk": "Амбасада", + "bg": "Посолство", + "he": "שגרירות", + "ms": "Kedutaan", + "eu": "Enbaxada" + } + }, + "amenity/conference_centre": { + "title": { + "C": "Convention Center", + "en": "Convention Center", + "de": "Kongresszentrum", + "eo": "Konferenca centro", + "es": "Centro de convenciones", + "et": "Konverentsikeskus", + "fi": "Kongressikeskus", + "fr": "Centre de congrés", + "gl": "Centro de convencións", + "hu": "Konferenciaközpont", + "it": "Centro conferenze", + "ja": "コンベンションセンター", + "ko": "컨벤션 센터", + "no": "Konferansesenter", + "pl": "Centrum konferencyjne", + "pt-BR": "Centro de Convenções", + "pt": "Centro de convenções", + "sv": "Kongresscenter", + "uk": "Конференц-центр ", + "vi": "Trung tâm Hội nghị", + "zh-TW": "會議中心", + "mk": "Центар за собири", + "he": "מרכז כנסים", + "en-AU": "Convention Centre" + } + }, + "amenity/dressing_room": { + "title": { + "C": "Changing Room", + "en": "Changing Room", + "de": "Umkleideraum", + "el": "Αποδυτήρια", + "eo": "Vestejo", + "es": "Vestuario", + "fi": "Pukuhuone", + "fr": "Vestiaire", + "gl": "Vestiario", + "hu": "Öltöző", + "it": "Camerino", + "ja": "更衣室", + "ko": "탈의실", + "no": "Garderobe", + "pl": "Przebieralnia", + "pt-BR": "Vestiário", + "pt": "Cabine de provas", + "sv": "Omklädningsrum", + "uk": "Роздягальня", + "vi": "Phòng Thay đồ", + "zh-TW": "更衣室", + "mk": "Соблекувална", + "he": "חדר הלבשה" + } + }, + "amenity/events_venue": { + "title": { + "C": "Events Venue", + "en": "Events Venue", + "ar": "مكان الأحداث", + "de": "Veranstaltungszentrum", + "eo": "Domo de ceremonioj", + "es": "Lugar de eventos", + "et": "Ürituste toimumiskoht", + "fi": "Tapahtumahalli", + "fr": "Établissement accueillant des événements", + "gl": "Lugar de eventos", + "it": "Sala eventi", + "ja": "イベント施設", + "ko": "행사장", + "no": "Arrangementsted", + "pl": "Sala bankietowa", + "pt-BR": "Local de Eventos", + "pt": "Espaço para eventos", + "sv": "Evenemangsplats/festlokal", + "uk": "Банкетна зала", + "vi": "Trung tâm Sự kiện", + "zh-TW": "活動場館", + "mk": "Одржувалиште на настани", + "he": "מתחם אירועים" + } + }, + "amenity/exhibition_centre": { + "title": { + "C": "Exposition Center", + "en": "Exposition Center", + "de": "Messezentrum", + "es": "Centro de exposiciones", + "fi": "Messukeskus", + "fr": "Centre d'expositions", + "ja": "展示場", + "ko": "전시회장", + "pl": "Centrum targowo-wystawiennicze", + "pt-BR": "Centro de exposições", + "pt": "Centro de exposições", + "uk": "Виставковий центр", + "vi": "Trung tâm Triển lãm", + "zh-TW": "展覽中心", + "mk": "Изложбен центар", + "he": "מרכז כנסים" + } + }, + "amenity/gambling": { + "title": { + "C": "Gambling Hall", + "en": "Gambling Hall", + "de": "Spielhalle", + "es": "Salón de juegos de azar", + "fi": "Uhkapelisali", + "ja": "ギャンブル場", + "ko": "도박장", + "pl": "Salon pachinko/bingo", + "pt-BR": "Sala de jogos", + "pt": "Sala de bingo", + "uk": "Ігорна зала", + "vi": "Phòng Chơi bài", + "zh-CN": "赌场厅", + "zh-TW": "賭博場所", + "mk": "Сала за коцкање", + "he": "היכל הימורים" + } + }, + "amenity/karaoke_box": { + "title": { + "C": "Karaoke Box", + "en": "Karaoke Box", + "de": "Karaoke-Box", + "es": "Karaoke Box", + "ja": "カラオケボックス", + "ko": "노래방", + "pl": "Budka karaoke", + "pt-BR": "Caixa de Karaokê", + "pt": "Caixa de karaoke", + "uk": "Кабінка караоке", + "vi": "Dàn Karaoke", + "zh-CN": "KTV亭", + "zh-TW": "卡拉 OK 包廂", + "mk": "Просторија за караоке", + "he": "תיבת קריוקי" + } + }, + "amenity/kneipp_water_cure": { + "title": { + "C": "Kneipp Water Cure", + "en": "Kneipp Water Cure", + "de": "Kneippanlage", + "es": "Cura de agua Kneipp", + "ja": "足浴場(ヨーロッパ)", + "pl": "Basen Kneippa", + "pt-BR": "Cura da água do Kneipp ", + "pt": "Balneário Kneippiano", + "uk": "Водолікарня", + "zh-TW": "Kneipp 水療", + "mk": "Водотерапија Кнајп", + "he": "טיפול מים קנאיפ" + } + }, + "amenity/lavoir": { + "title": { + "C": "Lavoir", + "en": "Lavoir", + "de": "Waschhaus", + "es": "Lavadero", + "fr": "Lavoir", + "gl": "Lavadoiro", + "ja": "共同洗い場", + "no": "Vaskehus", + "pl": "Pralnia (przy rzece)", + "pt-BR": "Lavanderia pública", + "pt": "Lavadouro", + "uk": "Місце для прання", + "zh-TW": "洗手台", + "mk": "Пералница", + "he": "מקום מרחץ בגדים" + } + }, + "amenity/letter_box": { + "title": { + "C": "Letter Box", + "en": "Letter Box", + "de": "Hausbriefkasten", + "eo": "Leterkesto (riceva)", + "es": "Buzón", + "fi": "Asunnon postilaatikko", + "fr": "Boîte aux lettres privée", + "gl": "Caixa do correo", + "hu": "Személyes postaláda", + "it": "Cassetta delle lettere", + "ja": "郵便受け", + "ko": "우편함", + "no": "Postkasse", + "pl": "Prywatna skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Caixa de correio", + "sv": "Postlåda", + "uk": "Поштова скринька", + "vi": "Hòm thư Cá nhân", + "zh-TW": "信箱", + "mk": "Поштенско сандаче", + "he": "תיבת מכתבים" + } + }, + "amenity/loading_dock": { + "title": { + "C": "Loading Dock", + "en": "Loading Dock", + "de": "Laderampe", + "el": "Αποβάθρα Φόρτωσης", + "es": "Muelle de carga", + "fi": "Lastauslaituri", + "fr": "Quai de chargement", + "gl": "Peirao de carga", + "hu": "Rakodó dokk", + "ja": "貨物の搬出入口", + "no": "Lastebrygge", + "pl": "Dok załadunkowy", + "pt-BR": "Doca de carregamento", + "pt": "Cais de carga", + "sv": "Lastkaj", + "uk": "Вантажна рампа", + "vi": "Khu Bốc dỡ Hàng hóa", + "zh-TW": "裝卸碼頭", + "mk": "Товарна рампа", + "he": "מתחם העמסה" + } + }, + "amenity/polling_station": { + "title": { + "C": "Permanent Polling Place", + "en": "Permanent Polling Place", + "de": "Permanentes Wahllokal", + "eo": "Balotejo (neŝanĝanta loko)", + "es": "Lugar de votación permanente", + "fi": "Pysyvä äänestyspaikka", + "fr": "Bureau de vote permanent", + "gl": "Lugar de votación permanente", + "hu": "Állandó szavazóhely", + "ja": "投票所(常設)", + "ko": "상설 투표소", + "no": "Fast Stemmeplass", + "pl": "Stały lokal wyborczy", + "pt-BR": "Local de votação permanente", + "pt": "Local de voto permanente", + "sv": "Permanent vallokal", + "uk": "Виборча дільниця", + "zh-TW": "永久投票處", + "mk": "Трајно гласачко место", + "he": "קלפי קבוע" + } + }, + "amenity/post_depot": { + "title": { + "C": "Post Sorting Office", + "en": "Post Sorting Office", + "de": "Postverteilzentrum", + "el": "Γραφείο Ταξινόμησης Αλληλογραφίας", + "es": "Oficina de clasificación de correos", + "fi": "Postinlajittelukeskus", + "fr": "Bureau de tri de courrier", + "gl": "Oficina de clasificación de correos", + "hu": "Postacsomag üzem", + "it": "Ufficio di smistamento postale", + "ja": "郵便集配所", + "ko": "우편집중국", + "no": "Post Sorteringskontor", + "pl": "Sortownia listów lub paczek", + "pt-BR": "Escritório de classificação de correspondência", + "pt": "Centro de distribuição de correio", + "sv": "Postsorteringskontor", + "uk": "Поштова сортувальна станція", + "zh-TW": "郵件處理中心", + "mk": "Служба за поштенска отпрема", + "he": "משרד מיון דואר" + } + }, + "amenity/prep_school": { + "title": { + "C": "Test Prep / Tutoring School", + "en": "Test Prep / Tutoring School", + "de": "Vorbereitungsschule", + "eo": "Lernejo pretiganta (al ekzameno/universitato)", + "es": "Preparación para exámenes / Escuela de tutoría", + "fr": "École préparatoire", + "gl": "Preparación para exames / Escola de titoría", + "hu": "Tesztpálya, tanulópálya", + "ja": "進学予備校(欧米)", + "ko": "학원", + "pl": "Szkoła korepetycji", + "pt-BR": "Escola de preparação para exames", + "pt": "Centro de explicações", + "sv": "Pluggskola", + "uk": "Підготовчий центр/Репетитор", + "vi": "Trường Luyện thi / Dạy Kèm", + "zh-TW": "補習班", + "mk": "Подготвително училиште", + "he": "לימודי נהיגה" + } + }, + "amenity/research_institute": { + "title": { + "C": "Research Institute Grounds", + "en": "Research Institute Grounds", + "de": "Forschungseinrichtung", + "es": "Terrenos del Instituto de Investigación", + "fi": "Tutkimuslaitos", + "ja": "研究所", + "ko": "연구 기관 부지", + "no": "Forskningsinstitutt Grunn", + "pl": "Instytut badawczy", + "pt-BR": "Área do Instituto de Pesquisa", + "pt": "Instituto de pesquisa", + "uk": "Територія науково-дослідного інституту", + "zh-TW": "研究機構場地", + "mk": "Истражувачки институт", + "he": "מתחם מכון מחקר" + } + }, + "amenity/social_centre": { + "title": { + "C": "Social Center", + "en": "Social Center", + "cs": "Sociální středisko", + "de": "Sozialzentrum", + "el": "Κοινωνικό Κέντρο", + "eo": "Centro de socio", + "es": "Centro social", + "et": "Sotsiaalkeskus", + "fi": "Sosiaalikeskus", + "fr": "Centre social", + "gl": "Centro social", + "hu": "Szociális ház", + "it": "Centro attività sociali", + "ja": "社交センター", + "pl": "Centrum społecznościowe", + "pt-BR": "Centro social", + "pt": "Centro social", + "sv": "Medborgarhus", + "uk": "Громадський центр", + "zh-TW": "社交中心", + "mk": "Друштвен дом", + "he": "מרכז חברתי", + "en-AU": "Social Centre" + } + }, + "amenity/toy_library": { + "title": { + "C": "Toy Library", + "en": "Toy Library", + "de": "Spielzeugbibliothek", + "el": "Βιβλιοθήκη Παιγνίων", + "eo": "Ludil‑biblioteko", + "es": "Biblioteca de juguetes", + "fi": "Lelukirjasto", + "fr": "Ludothèque", + "gl": "Biblioteca de xoguetes", + "hu": "Játékkölcsönző", + "it": "Ludoteca", + "ja": "おもちゃ資料館", + "no": "Lekebibliotek", + "pl": "Wypożyczalnia gier i zabawek", + "pt-BR": "Biblioteca de brinquedos", + "pt": "Brinquedoteca", + "sv": "Leksaksbibliotek", + "uk": "Прокат іграшок", + "vi": "Thư viện Đồ chơi", + "zh-TW": "玩具圖書館", + "mk": "Зајмување играчки", + "he": "ספריית צעצועים" + } + }, + "amenity/weighbridge": { + "title": { + "C": "Truck Scale", + "en": "Truck Scale", + "da": "Brovægt", + "de": "Brückenwaage, LKW-Waage", + "es": "Báscula de camiones", + "fi": "Rekkavaaka / rautatievaaka", + "fr": "pont bascule", + "gl": "Balanza de camións", + "hu": "Teherautó mérleg", + "ja": "トラックスケール", + "ko": "트럭 저울", + "no": "Lastebilvekt", + "pl": "Waga dla pojazdów", + "pt-BR": "Balança de caminhão", + "pt": "Balança rodoviária", + "sr": "Камионска вага", + "sv": "Lastbilsvåg", + "uk": "Автомобільні ваги", + "vi": "Trạm Cân Xe tải", + "zh-TW": "地磅", + "mk": "Мосна вага", + "he": "משקל משאיות" + } + }, + "leisure/adult_gaming_centre": { + "title": { + "C": "Adult Gaming Center", + "en": "Adult Gaming Center", + "ast": "Centru de xuegos p'adultos", + "ca": "Centre d'oci adult", + "cs": "Herna (hrací automaty)", + "da": "Voksen spillecenter", + "de": "Spielothek für Erwachsene", + "el": "Κέντρο Παιχνιδιών Ενηλίκων", + "en-GB": "Adult Gaming Centre", + "eo": "Hazardludejo (enĵet-maŝinoj)", + "es": "Centro de juegos para adultos", + "fa": "مرکز بازی بزرگسالان", + "fi": "Uhkapelipelaamo", + "fr": "Jeux pour adultes", + "gl": "Centro recreativo para adultos", + "hu": "Felnőtt játékközpont", + "id": "Pusat permainan dewasa", + "is": "Fjárhættuspilasalur", + "it": "Sala da gioco", + "ja": "遊技場(成人向け)", + "ko": "성인용 게임방", + "lt": "Suaugusiųjų lošimų vieta", + "nl": "Speelzaal (met kansspelmachines)", + "no": "Spillekasino", + "pl": "Salon gier hazardowych", + "pt-BR": "Centro de Jogos para Adultos", + "pt": "Centro de jogos para adultos", + "ru": "Игровые автоматы (азартные, на деньги)", + "sk": "Výherné automaty", + "sl": "Igralnica za odrasle", + "sv": "Center för vuxenspel", + "tr": "Yetişkin Oyun Merkezi", + "uk": "Гральні автомати", + "vi": "Trung tâm Đánh bạc", + "zh-CN": "成人街机厅", + "zh-HK": "成人遊戲中心", + "zh-TW": "成人遊戲中心", + "mk": "Игротека за возрасни", + "he": "מרכז בידור למבוגרים", + "en-AU": "Adult Gaming Centre" + } + }, + "leisure/bowling_alley": { + "title": { + "C": "Bowling Alley", + "en": "Bowling Alley", + "ar": "بولينغ", + "ast": "Bolera americana", + "ca": "Bolera", + "cs": "Bowlingová dráha", + "da": "Bowlingbaner", + "de": "Bowlingbahn", + "el": "Διάδρομος Bowling", + "en-GB": "Bowling Alley", + "eo": "Kegloludejo", + "es": "Pista de bolos", + "et": "Boolingusaal", + "fa": "سالن بولینگ", + "fi": "Keilahalli", + "fr": "Bowling", + "gl": "Birlos", + "hr": "Kuglalište", + "hu": "Bowlingpálya", + "id": "Tempat Boling", + "is": "Keiluhöll", + "it": "Sala da Bowling", + "ja": "ボウリング場", + "ko": "볼링장", + "lv": "Boulinga Zāle", + "nl": "Bowlingbaan", + "no": "Bowlingsenter", + "pl": "Kręgielnia", + "pt-BR": "Pista de Boliche", + "pt": "Pista de bólingue", + "ro": "Alee de Bowling", + "ru": "Боулинг центр", + "sk": "Bowlingová hala", + "sl": "Kegljišče", + "sv": "Bowlinghall", + "tr": "Bowling Salonu", + "uk": "Боулінг", + "vi": "Khu Bowling", + "zh-CN": "保龄球馆", + "zh-HK": "保齡球場", + "zh-TW": "保齡球館", + "mk": "Кугларница", + "he": "אולם כדורת" + } + }, + "leisure/common": { + "title": { + "C": "Common", + "en": "Common", + "ar": "أرض مشترك ", + "ast": "Terrén comunitariu", + "bs": "Uobičajeno", + "ca": "Àrea comuna", + "cs": "Volně přístupný prostor", + "da": "Hyppig", + "de": "Öffentliche Fläche, Allmende", + "el": "Κοινό", + "en-GB": "Common", + "eo": "Publika ripoza tereno", + "es": "Tierras comunes -Reino Unido-", + "fa": "عمومی", + "fi": "Yleinen", + "fr": "Terrain communal", + "gl": "Terreo comunal", + "hr": "Zelena površina po kojoj se može hodati - u UK", + "hu": "Szabadidős tevékenységre használható közös terület (Nagy-Britannia)", + "id": "Perintah", + "is": "Almenningur", + "it": "Luogo pubblico", + "ja": "共有地", + "ko": "일반", + "lt": "Bendros ganyklos", + "nl": "Gemene weide", + "no": "Fellesområde", + "pl": "Teren rekreacyjny ogólnodostępny", + "pt-BR": "Área Comunitária", + "pt": "Terrenos comunitários", + "ro": "Comun", + "ru": "Общественные места для прогулок, без специфики", + "sk": "Verejné priestranstvo", + "sl": "Javni prostor", + "sr": "Јавно добро", + "sv": "Allmänning", + "ta": "பொதுவான", + "tr": "Piknik Alanı", + "uk": "Громада", + "vi": "Đất công", + "yue": "公地", + "zh-CN": "公共用地", + "zh-HK": "公共用地", + "zh-TW": "公共用地", + "mk": "Јавно зеленило", + "he": "אזור משותף" + } + }, + "leisure/dog_park": { + "title": { + "C": "Dog Park", + "en": "Dog Park", + "af": "Hondepark", + "ar": "حديقة كلاب", + "ast": "Parque pa perros", + "bs": "Igralište za pse", + "ca": "Parc Caní", + "cs": "Psí park", + "da": "Hundepark", + "de": "Hundepark", + "el": "Πάρκο Σκύλων", + "en-GB": "Dog Park", + "eo": "Hund-parko", + "es": "Parque canino", + "et": "Koerapark", + "fa": "پارک سگ", + "fi": "Koirapuisto", + "fr": "Parc canin", + "gl": "Parque para cans", + "hr": "Park za pse", + "hu": "Kutyafuttató", + "id": "Taman Anjing", + "is": "Hundagarður", + "it": "Area per cani", + "ja": "ドッグパーク", + "ko": "개 공원", + "lt": "Šunų parkas", + "lv": "Suņu parks", + "nl": "Hondenpark", + "no": "Hundepark", + "pl": "Wybieg dla psów", + "pt-BR": "Cachorródromo", + "pt": "Parque para cães", + "ro": "Parc de Câini", + "ru": "Площадка для выгула собак", + "sk": "Psí park", + "sl": "Pasji park", + "sr": "Парк за псе", + "sv": "Hundpark", + "tr": "Köpek Parkı", + "uk": "Парк для собак", + "vi": "Công viên dành cho Chó", + "yue": "狗公園", + "zh-CN": "狗公园", + "zh-HK": "狗公園", + "zh-TW": "狗公園", + "mk": "Кучешки парк", + "he": "פארק כלבים" + } + }, + "leisure/firepit": { + "title": { + "C": "Fire Pit", + "en": "Fire Pit", + "ar": "حفرة نار", + "de": "Feuerstelle", + "es": "Pozo de fuego", + "fi": "Tulentekopaikka", + "fr": "Emplacement pour feu", + "ja": "焚き火場", + "pl": "Miejsce na ognisko", + "pt-BR": "Fogueira", + "pt": "Espaço para fogueira", + "uk": "Вогнище", + "zh-CN": "火坑", + "zh-TW": "篝火", + "mk": "Огниште", + "he": "שוחה למדורה" + } + }, + "leisure/garden": { + "title": { + "C": "Garden", + "en": "Garden", + "af": "Tuin", + "ar": "حديقة", + "ast": "Xardín", + "bn": "বাগান", + "bs": "Vrt", + "ca": "Jardí", + "cs": "Zahrada", + "da": "Have", + "de": "Garten", + "el": "Κήπος", + "en-GB": "Garden", + "eo": "Ĝardeno", + "es": "Jardín", + "et": "Aed", + "fa": "باغ", + "fi": "Puutarha", + "fr": "Jardin", + "gl": "Xardín", + "hr": "Vrt", + "hu": "Kert", + "id": "Kebun", + "is": "Garður", + "it": "Giardino (fiorito)", + "ja": "庭園", + "kn": "ಕೈತೋಟ", + "ko": "정원", + "lt": "Sodas", + "lv": "Dārzs", + "nl": "Tuin", + "no": "Hage", + "pl": "Ogród", + "pt-BR": "Jardim / Horta", + "pt": "Jardim", + "ro": "Grădină", + "ru": "Сад", + "sk": "Záhrada", + "sl": "Vrt", + "sr": "Башта", + "sv": "Trädgård", + "ta": "தோட்டம்", + "te": "తోట", + "tr": "Bahçe", + "uk": "Сад", + "vi": "Vườn", + "yue": "花園", + "zh-CN": "花园", + "zh-HK": "花園", + "zh-TW": "花園", + "zh": "花园", + "mk": "Градина", + "bg": "Градина", + "he": "גן", + "ckb": "باخچە" + } + }, + "leisure/golf_course": { + "title": { + "C": "Golf Course", + "en": "Golf Course", + "af": "Golfbaan", + "ar": "معلب جولف", + "ast": "Campu de golf", + "bn": "গল্ফ মাঠ", + "bs": "Golf teren", + "ca": "Camp de golf", + "cs": "Golfové hřiště", + "da": "Golfbane", + "de": "Golfplatz", + "el": "Γήπεδο Γκολφ", + "en-GB": "Golf Course", + "eo": "Golfludejo", + "es": "Campo de golf", + "et": "Golfiväljak", + "fa": "زمین گلف", + "fi": "Golfkenttä", + "fr": "Parcours de golf", + "gl": "Campo de golf", + "hr": "Igralište za golf", + "hu": "Golfpálya", + "id": "Lapangan Golf", + "is": "Golfvöllur", + "it": "Campo da Golf", + "ja": "ゴルフコース", + "ko": "골프장", + "lt": "Golfo aikštynas", + "lv": "Golfa laukums", + "nl": "Golfbaan", + "no": "Golfbane", + "pl": "Pole golfowe", + "pt-BR": "Campo de Golfe", + "pt": "Campo de golfe", + "ro": "Curs de Golf", + "ru": "Площадка для гольфа", + "sk": "Golfové ihrisko", + "sl": "Golfišče", + "sr": "Голф терен", + "sv": "Golfbana", + "ta": "கோல்ஃப் கோர்ஸ்", + "tr": "Golf Sahası", + "uk": "Поле для гольфу", + "vi": "Sân Golf", + "yue": "哥夫球場", + "zh-CN": "高尔夫球场", + "zh-HK": "高爾夫球場", + "zh-TW": "高爾夫球場", + "zh": "高尔夫球场", + "mk": "Терен за голф", + "bg": "Голф игрище", + "he": "מגרש גולף" + } + }, + "leisure/ice_rink": { + "title": { + "C": "Ice Rink", + "en": "Ice Rink", + "ar": "حلبة تزلج", + "ast": "Pista de xelu", + "ca": "Pista de gel", + "cs": "Kluziště", + "da": "Skøjtebane", + "de": "Eislaufbahn", + "el": "Παγοδρόμιο", + "en-GB": "Ice Rink", + "eo": "Glitkurejo", + "es": "Pista de hielo", + "et": "Uisuväljak", + "fa": "یخ بازی", + "fi": "Luistelukenttä", + "fr": "Patinoire", + "gl": "Pista de xeo", + "hr": "Klizalište", + "hu": "Jégpálya", + "id": "Arena Seluncur Es", + "is": "Skautasvell", + "it": "Pista di Ghiaccio", + "ja": "アイススケート場", + "ko": "아이스 링크", + "lt": "Čiuožykla", + "lv": "Ledus halle", + "nl": "Schaatsbaan", + "no": "Skøytebane", + "pl": "Lodowisko", + "pt-BR": "Pista de Patinação no Gelo", + "pt": "Rinque de gelo", + "ru": "Каток", + "sk": "Klzisko", + "sl": "Drsališče", + "sr": "Клизалиште", + "sv": "Skridskobana ", + "tr": "Buz Pateni", + "uk": "Каток", + "vi": "Sân Băng", + "zh-CN": "滑冰场", + "zh-HK": "溜冰場", + "zh-TW": "溜冰場", + "mk": "Лизгалиште", + "he": "החלקרח" + } + }, + "leisure/marina": { + "title": { + "C": "Marina", + "en": "Marina", + "af": "Vasmeerplek", + "ar": "مرسى السفن", + "ast": "Puertu deportivu", + "bs": "Marina", + "ca": "Port esportiu", + "cs": "Přístaviště", + "da": "Lystbådehavn", + "de": "Yachthafen", + "el": "Μαρίνα", + "en-GB": "Marina", + "eo": "Jaĥt-haveno", + "es": "Puerto deportivo", + "et": "Väikesadam", + "fa": "تفرجگاه ساحلی", + "fi": "Venesatama", + "fr": "Marina", + "gl": "Porto deportivo", + "hr": "Marina", + "hu": "Kishajókikötő", + "id": "Marina", + "is": "Bátahöfn", + "it": "Marina", + "ja": "マリーナ", + "ko": "마리나", + "lt": "Prieplauka", + "nl": "Jachthaven", + "no": "Marina", + "pl": "Przystań", + "pt-BR": "Marina", + "pt": "Marina", + "ru": "Стоянка для яхт", + "sk": "Lodenica", + "sl": "Marina", + "sr": "Марина", + "sv": "Marina", + "ta": "மரினா", + "tr": "Yat Limanı", + "uk": "Пристань для яхт", + "vi": "Bến tàu", + "yue": "遊艇碼頭", + "zh-CN": "游艇码头", + "zh-HK": "遊艇碼頭", + "zh-TW": "遊艇碼頭", + "zh": "码头", + "mk": "Сидриште", + "bg": "Яхт клуб", + "dv": "ޔޮޓު މެރީނާ", + "he": "מרינה", + "so": "Deked" + } + }, + "leisure/nature_reserve": { + "title": { + "C": "Nature Reserve", + "en": "Nature Reserve", + "ar": "محمية طبيعية", + "ast": "Reserva natural", + "ca": "Reserva Natural", + "cs": "Přírodní rezervace", + "da": "Naturreservat", + "de": "Naturschutzgebiet", + "el": "Προστατευόμενος Βιότοπος", + "en-GB": "Nature Reserve", + "eo": "Natur-rezervejo", + "es": "Reserva natural", + "et": "Looduskaitseala", + "fa": "ذخیره‌گاه طبیعی", + "fi": "Luonnonsuojelualue", + "fr": "Réserve naturelle", + "gl": "Reserva natural", + "hr": "Prirodni rezervat", + "hu": "Természetvédelmi terület", + "id": "Cagar Alam", + "is": "Friðland", + "it": "Riserva naturale", + "ja": "自然保護区", + "ko": "자연 보호 구역", + "lt": "Draustinis", + "nl": "Natuurreservaat", + "no": "Naturreservat", + "pl": "Rezerwat przyrody", + "pt-BR": "Reserva natural", + "pt": "Reserva natural", + "ro": "Rezervat Natural", + "ru": "Заповедник", + "sk": "Prírodná rezervácia", + "sl": "Naravni rezervat", + "sr": "Резерват природе", + "sv": "Naturreservat", + "tr": "Doğal Koruma Alanı", + "uk": "Заповідник", + "vi": "Khu Bảo tồn Thiên nhiên", + "zh-CN": "自然保护区", + "zh-HK": "自然保護區", + "zh-TW": "自然保留區", + "mk": "Природен резерват", + "he": "שמורת טבע" + } + }, + "leisure/park": { + "title": { + "C": "Park", + "en": "Park", + "af": "Park", + "ar": "منتزه", + "ast": "Parque", + "bn": "উদ্যান", + "bs": "Park", + "ca": "Parc", + "cs": "Park", + "da": "Park", + "de": "Park", + "el": "Πάρκο", + "en-GB": "Park", + "eo": "Parko", + "es": "Parque / Plaza verde", + "et": "Park", + "fa": "پارک", + "fi": "Puisto", + "fr": "Parc", + "gl": "Parque", + "hr": "Park", + "hu": "Park", + "id": "Taman", + "is": "Garður", + "it": "Parco", + "ja": "公園", + "kn": "ಉದ್ಯಾನವನ", + "ko": "공원", + "lt": "Parkas", + "lv": "Parks", + "nl": "Park", + "no": "Park", + "pl": "Park rekreacyjno-wypoczynkowy", + "pt-BR": "Parque ou Praça", + "pt": "Parque público", + "ro": "Parc", + "ru": "Парк отдыха", + "sk": "Park", + "sl": "Park", + "sr": "Парк", + "sv": "Park", + "ta": "பூங்கா", + "te": "పార్కు", + "tr": "Park", + "uk": "Парк", + "vi": "Công viên", + "yue": "園", + "zh-CN": "公园", + "zh-HK": "公園", + "zh-TW": "公園", + "zh": "公园", + "mk": "Парк", + "bg": "Парк", + "dv": "ޕާރކުތައް", + "he": "פארק", + "so": "Jardiino" + } + }, + "leisure/picnic_table": { + "title": { + "C": "Picnic Table", + "en": "Picnic Table", + "ar": "طاولة النزهة", + "ast": "Mesa de merenderu", + "ca": "Taula de picnic", + "cs": "Stůl na piknik", + "da": "Picnicbord", + "de": "Picknicktisch", + "el": "Τραπέζι Πικ Νικ", + "en-GB": "Picnic Table", + "eo": "Piknika tablo", + "es": "Mesa de picnic", + "et": "Piknikulaud", + "fa": "میز پیکنیک", + "fi": "Piknikpöytä", + "fr": "Table de pique-nique", + "gl": "Mesa de pícnic", + "hr": "Stol za piknik", + "hu": "Piknikasztal", + "id": "Meja Piknik", + "is": "Nestisborð", + "it": "Tavolo da picnic", + "ja": "ピクニックテーブル", + "ko": "피크닉 테이블", + "lt": "Pikniko stalas", + "lv": "Piknika galds", + "nl": "Picknicktafel", + "no": "Piknikbord", + "pl": "Stół piknikowy", + "pt-BR": "Mesa de piquenique", + "pt": "Mesa de piquenique", + "ro": "Masă de Picnic", + "ru": "Стол для пикника", + "sk": "Piknikový stôl", + "sl": "Piknik miza", + "sr": "Сто за излет", + "sv": "Picknickbord", + "tr": "Piknik Masası", + "uk": "Місце для пікніка", + "vi": "Bàn ăn Ngoài trời", + "zh-CN": "野餐桌", + "zh-HK": "野餐桌", + "zh-TW": "野餐桌", + "mk": "Излетничка маса", + "he": "שולחן פיקניק" + } + }, + "leisure/pitch": { + "title": { + "C": "Sport Pitch", + "en": "Sport Pitch", + "af": "Sport Veld", + "ar": "ملعب رياضي", + "ast": "Campu deportivu", + "bs": "Sportsko igralište", + "ca": "Camp d'esports", + "cs": "Hřiště", + "da": "Sportsbane", + "de": "Sportplatz", + "el": "Αγωνιστικός Χώρος", + "en-GB": "Sport Pitch", + "eo": "Ludkampo", + "es": "Cancha de juego", + "et": "Spordiväljak", + "fa": "زمین ورزشی", + "fi": "Urheilukenttä", + "fr": "Terrain de sport", + "gl": "Cancha deportiva", + "hr": "Sportski teren", + "hu": "Sportpálya", + "id": "Lapangan Olahraga", + "is": "Íþróttavöllur", + "it": "Campo da gioco", + "ja": "スポーツ競技場", + "ko": "운동장", + "lt": "Sporto aikštelė", + "lv": "Sporta laukums", + "nl": "Sportveld", + "no": "Idrettsbane", + "pl": "Boisko", + "pt-BR": "Quadra ou Campo Esportivo", + "pt": "Campo de desporto", + "ro": "Teren de Sport", + "ru": "Спортивная площадка", + "sk": "Športový kurt", + "sl": "Športno igrišče", + "sr": "Спортско игралиште", + "sv": "Idrottsplats", + "tr": "Spor Sahası", + "uk": "Спортивний майданчик", + "vi": "Sân Thể thao", + "yue": "運動場", + "zh-CN": "运动场地", + "zh-HK": "運動場地", + "zh-TW": "運動場地", + "zh": "运动场所", + "mk": "Спортско игралиште", + "bg": "Спортно игрище", + "he": "מגרש ספורט" + } + }, + "leisure/playground": { + "title": { + "C": "Playground", + "en": "Playground", + "af": "Speelpark", + "ar": "ساحة ألعاب للأطفال", + "ast": "Xuegos infantiles", + "bn": "খেলার মাঠ", + "bs": "Igralište", + "ca": "Zona de jocs infantils", + "cs": "Dětské hřiště", + "da": "Legeplads", + "de": "Spielplatz", + "el": "Παιδική Χαρά", + "en-GB": "Playground", + "eo": "Infana ludejo", + "es": "Patio de juegos", + "et": "Mänguväljak", + "fa": "زمین بازی", + "fi": "Leikkipuisto", + "fr": "Jeux pour enfants", + "gl": "Parque infantil", + "hr": "Igralište", + "hu": "Játszótér", + "id": "Lapangan Bermain", + "is": "Leikvöllur", + "it": "Parco giochi", + "ja": "児童公園", + "ko": "놀이터", + "lt": "Žaidimų aikštelė", + "lv": "Spēļlaukums", + "nl": "Speeltuin", + "no": "Lekeplass", + "pl": "Plac zabaw", + "pt-BR": "Parquinho", + "pt": "Parque infantil", + "ro": "Loc de Joacă", + "ru": "Детская площадка", + "sk": "Ihrisko pre deti", + "sl": "Otroško igrišče", + "sr": "Игралиште", + "sv": "Lekplats", + "ta": "விளையாட்டுத் திடல்", + "te": "ఆటమైదానం", + "tr": "Çocuk Parkı", + "uk": "Ігровий майданчик", + "vi": "Sân chơi", + "yue": "遊樂場", + "zh-CN": "儿童游乐场", + "zh-HK": "遊樂場", + "zh-TW": "遊樂場", + "zh": "游乐场", + "mk": "Игралиште", + "bg": "Детска площадка", + "he": "גן שעשועים", + "eu": "Jolastoki" + } + }, + "leisure/slipway": { + "title": { + "C": "Slipway", + "en": "Slipway", + "af": "Inglipbaan", + "ar": "مزلقة سفن", + "ast": "Rampla de botadura", + "bs": "Navoz", + "ca": "Pendent per a embarcacions", + "cs": "Vodní skluz", + "da": "Bådrampe", + "de": "Gleitbahn", + "el": "Γλίστρα", + "en-GB": "Slipway", + "eo": "Ŝipglitejo", + "es": "Rampa para botes", + "et": "Slipp", + "fa": "قایق ساکن", + "fi": "Veneramppi", + "fr": "Cale de mise à l'eau", + "gl": "Rampla para embarcacións", + "hr": "Navoz za brodove", + "hu": "Sólya", + "is": "Dráttarbraut", + "it": "Scivolo per barche", + "ja": "進水路", + "ko": "선가대", + "nl": "Botenhelling", + "no": "Båtslipp", + "pl": "Pochylnia okrętowa", + "pt-BR": "Rampa Náutica", + "pt": "Rampa para barcos", + "ru": "Стапель", + "sk": "Spúšťanie lodí", + "sl": "Rampa", + "sr": "Навоз", + "sv": "Stapelbädd", + "tr": "Gemi Kızağı", + "uk": "Стапель", + "vi": "Đường Trượt tàu", + "yue": "船排", + "zh-CN": "船台", + "zh-HK": "船台", + "zh-TW": "船架滑道", + "zh": "船架滑道", + "mk": "Испуст за пловила", + "bg": "Хелинг", + "he": "ממשה" + } + }, + "leisure/stadium": { + "title": { + "C": "Stadium", + "en": "Stadium", + "af": "Stadium", + "ar": "استاد رياضي", + "ast": "Estadiu", + "bn": "স্টেডিয়াম", + "bs": "Stadion", + "ca": "Estadi", + "cs": "Stadion", + "da": "Stadion", + "de": "Stadion", + "el": "Στάδιο", + "en-GB": "Stadium", + "eo": "Stadiono", + "es": "Estadio", + "et": "Staadion", + "fa": "ورزشگاه", + "fi": "Stadion", + "fr": "Stade", + "gl": "Estadio", + "hr": "Stadion", + "hu": "Stadion", + "id": "Stadion", + "is": "Leikvangur", + "it": "Stadio", + "ja": "スタジアム", + "kn": "ಕ್ರೀಡಾಂಗಣ", + "ko": "경기장", + "lt": "Stadionas", + "lv": "Stadions", + "nl": "Stadion", + "no": "Stadion", + "pl": "Stadion", + "pt-BR": "Estádio", + "pt": "Estádio", + "ro": "Stadion", + "ru": "Стадион (территория)", + "sk": "Štadión", + "sl": "Stadion", + "sr": "Стадион", + "sv": "Stadium", + "ta": "விளையாட்டு அரங்கம்", + "tr": "Stadyum", + "uk": "Стадіон", + "vi": "Sân vận động", + "yue": "大體育館", + "zh-CN": "体育场", + "zh-HK": "體育館", + "zh-TW": "體育場", + "zh": "体育场", + "mk": "Стадион", + "bg": "Стадион", + "dv": "ސްޓޭޑިއަމް", + "he": "אצטדיון", + "eu": "Estadio", + "so": "Garoon" + } + }, + "leisure/swimming_pool": { + "title": { + "C": "Swimming Pool", + "en": "Swimming Pool", + "af": "Swembad", + "ar": "حوض سباحة", + "ast": "Piscina", + "bn": "সুইমিং পুল", + "bs": "Bazen", + "ca": "Piscina", + "cs": "Plavecký bazén", + "da": "Svømmebassin", + "de": "Schwimmbecken", + "el": "Πισίνα", + "en-GB": "Swimming Pool", + "eo": "Naĝejo (akvo)", + "es": "Piscina", + "et": "Ujumisbassein", + "fa": "استخر شنا", + "fi": "Uimahalli tai -allas", + "fr": "Piscine", + "gl": "Piscina", + "hr": "Sportski bazen", + "hu": "Úszómedence", + "id": "Kolam Renang", + "is": "Sundlaug", + "it": "Piscina", + "ja": "遊泳プール(屋外)", + "kn": "ಈಜುಕೊಳ", + "ko": "수영장", + "lt": "Baseinas", + "lv": "Peldbaseins", + "nl": "Zwembad", + "no": "Svømmebasseng", + "pl": "Basen", + "pt-BR": "Piscina", + "pt": "Piscina", + "ro": "Piscină", + "ru": "Бассейн (его водная поверхность)", + "sk": "Plaváreň", + "sl": "Plavalni bazen", + "sr": "Базен", + "sv": "Simbassäng", + "ta": "நீச்சல் குளம்", + "te": "ఈత కొలను", + "tr": "Yüzme Havuzu", + "uk": "Басейн", + "vi": "Hồ Bơi", + "yue": "游水池", + "zh-CN": "游泳池", + "zh-HK": "游泳池", + "zh-TW": "游泳池", + "zh": "游泳池", + "mk": "Базен", + "bg": "Плувен басейн", + "he": "בריכת שחייה", + "eu": "Igerileku" + } + }, + "leisure/track": { + "title": { + "C": "Racetrack (Non-Motorsport)", + "en": "Racetrack (Non-Motorsport)", + "ar": "مضمار سباق", + "ast": "Circuitu (Deportes sin motor)", + "cs": "Závodní dráha (ne pro motorsport)", + "da": "Løbsbane (Ej motorsport)", + "de": "Bahn (Nicht Motorsport)", + "el": "Αγωνιστική Πίστα (Για Μη Μηχανοκίνηση)", + "en-GB": "Racetrack (Non-Motorsport)", + "eo": "Kurejo/biciklejo/konkursejo (nemotora)", + "es": "Pista de carrera (no motorizada)", + "et": "Staadion", + "fi": "Kilparata (ei moottoriurheilu)", + "fr": "Piste de course (hors sports mécaniques)", + "gl": "Pista de competición (non motorizada)", + "hu": "Versenypálya (nem motorsport)", + "is": "Keppnisbraut (ekki mótorsport)", + "it": "Pista (sport non motoristici)", + "ja": "競技トラック(モータースポーツ以外)", + "ko": "경주로(비모터스포츠)", + "nl": "Racepiste (niet-motorsport)", + "pl": "Tor wyścigowy (niemotorowy)", + "pt-BR": "Pista para esportes não-motorizados", + "pt": "Pista de desportos não motorizados", + "ru": "Гоночный трек (не автоспорт)", + "sl": "Tekmovalna steza (neasfaltirana)", + "sv": "Tävlingsbana (Icke motorsport)", + "tr": "Yarış Pisti (motor spor hariç)", + "uk": "Гоночний трек (не мотоспорт)", + "vi": "Đường Đua (Không phải Đua Xe)", + "zh-CN": "赛道(非机动竞速项目)", + "zh-HK": "賽道(非賽車)", + "zh-TW": "賽道(非賽車運動)", + "mk": "Тркалиште (немоторно)", + "he": "מסלול מרוצים (לבלתי ממונעים)" + } + }, + "leisure/bird_hide": { + "title": { + "C": "Bird Hide", + "en": "Bird Hide", + "ast": "Observatoriu d'aves", + "ca": "Observatori d'ocells", + "cs": "Pozorovatelna zvěře", + "da": "Fugletårn", + "de": "Vogelbeobachtungsturm", + "el": "Κρυψώνα Κυνηγών Πτηνών", + "en-GB": "Bird Hide", + "eo": "Bird-observejo", + "es": "Observatorio de aves", + "fa": "مکان تماشای پرندگان", + "fi": "Lintutorni", + "fr": "Observatoire ornithologique", + "gl": "Observatorio de aves", + "hu": "Madárles", + "is": "Fuglaskoðunarskýli", + "it": "Osservazione uccelli", + "ja": "野鳥観察舎", + "ko": "탐조대", + "nl": "Vogelkijkscherm of -hut", + "pl": "Czatownia ornitologiczna", + "pt-BR": "Local de observação de pássaros", + "pt": "Posto de observação de aves", + "ru": "Пункт наблюдения за птицами", + "sl": "Opazovalnica", + "sv": "Torn/gömsle för fågelskådning", + "tr": "Vahşi Yaşam Gözetleme Kulesi", + "uk": "Пункт спостереження", + "vi": "Căn nhà Quan sát Chim", + "zh-CN": "观鸟点", + "zh-HK": "觀鳥屋", + "zh-TW": "鳥類棲息處", + "mk": "Птицонабљудувачница", + "he": "מסתור צפרות" + } + }, + "leisure/miniature_golf": { + "title": { + "C": "Miniature Golf", + "en": "Miniature Golf", + "ar": "ملعب الجولف المصغرة", + "ast": "Minigolf", + "ca": "Golf en miniatura", + "cs": "Minigolf", + "da": "Minigolf", + "de": "Minigolf", + "el": "Μίνι Γκολφ", + "en-GB": "Miniature Golf", + "eo": "Minigolfludejo", + "es": "Mini golf", + "et": "Minatuurgolf", + "fa": "گلف مینیاتوری", + "fi": "Minigolf", + "fr": "Mini-golf", + "gl": "Minigolf", + "hu": "Minigolf", + "is": "Mínígolf", + "it": "Minigolf", + "ja": "ミニゴルフ", + "ko": "미니 골프", + "lt": "Minigolfas", + "nl": "Minigolf", + "no": "Minigolf", + "pl": "Minigolf", + "pt-BR": "Campo de Minigolfe", + "pt": "Campo de minigolfe", + "ro": "Minigolf", + "ru": "Мини-гольф", + "sl": "Minigolf", + "sv": "Minigolf", + "tr": "Mini Golf", + "uk": "Міні-гольф", + "vi": "Sân Golf Mini", + "zh-CN": "迷你高尔夫", + "zh-HK": "迷你哥爾夫", + "zh-TW": "迷你高爾夫", + "mk": "Миниголф", + "he": "מיני-גולף" + } + }, + "leisure/sports_centre": { + "title": { + "C": "Sports Center / Complex", + "en": "Sports Center / Complex", + "ar": "مركز رياضي", + "ast": "Centru / Complexu deportivu", + "ca": "Complex esportiu", + "cs": "Sportovní centrum", + "da": "Sportcenter / Kompleks", + "de": "Sportzentrum / -komplex", + "el": "Αθλητικό Κέντρο/ Συγκρότημα", + "en-GB": "Sports Centre / Complex", + "eo": "Sporta centro", + "es": "Complejo deportivo", + "et": "Spordikeskus", + "fa": "مجتمع / مرکز ورزشی", + "fi": "Liikuntakeskus", + "fr": "Centre sportif", + "gl": "Complexo deportivo", + "hu": "Sportközpont / komplexum", + "is": "Íþróttamiðstöð", + "it": "Complesso / Centro Sportivo", + "ja": "スポーツセンター/複合施設", + "ko": "스포츠 센터 / 단지", + "lv": "Sporta Centrs / Komplekss", + "nl": "Sportcentrum of -complex", + "pl": "Centrum sportowe", + "pt-BR": "Centro Esportivo / Clube", + "pt": "Complexo desportivo", + "ro": "Centru / Complex de Sport", + "ru": "Спортивный центр/комплекс", + "sl": "Športni center / kompleks", + "sr": "Спортски центар / Комплекс", + "sv": "Sportcenter / -anläggning", + "tr": "Spor Merkezi", + "uk": "Спортивний центр/комплекс", + "vi": "Trung tâm Thể thao", + "zh-CN": "体育中心/综合体育场", + "zh-HK": "體育中心 / 體育館", + "zh-TW": "體育中心/設施", + "mk": "Спортски центар / комплекс", + "dv": "ކުުޅިވަރު މަރުކަޒު", + "he": "מרכז ספורט", + "eu": "Kiroldegia/ gunea", + "so": "Xarunta Cayaaraha", + "en-AU": "Sports Centre / Complex" + } + }, + "leisure/water_park": { + "title": { + "C": "Water Park", + "en": "Water Park", + "ar": "ملاهي مائية", + "ast": "Parque acuáticu", + "ca": "Parc Aquàtic", + "cs": "Akvapark", + "da": "Vandland", + "de": "Erlebnisbad", + "el": "Νεροτσουλήθρες", + "en-GB": "Water Park", + "eo": "Akvoparko", + "es": "Parque acuático", + "et": "Veepark", + "fa": "پارک آبی", + "fi": "Vesipuisto", + "fr": "Parc à thème aquatique", + "gl": "Parque acuático", + "hr": "Vodeni park", + "hu": "Élményfürdő", + "is": "Vatnagarður", + "it": "Parco acquatico", + "ja": "ウォーターパーク", + "ko": "워터파크", + "lt": "Vandens parkas", + "lv": "Akvaparks", + "nl": "Waterpretpark", + "no": "Utendørs badeland", + "pl": "Park wodny", + "pt-BR": "Parque Aquático", + "pt": "Parque aquático", + "ro": "Parc Acvatic", + "ru": "Аквапарк", + "sk": "Vodný park", + "sl": "Vodni park", + "sr": "Водени парк", + "sv": "Äventyrsbad / Vattenpark", + "ta": "தண்ணீர் பூங்கா", + "tr": "Su Parkı", + "uk": "Аквапарк", + "vi": "Công viên Nước", + "zh-CN": "水上乐园", + "zh-HK": "水上樂園", + "zh-TW": "水上樂園", + "mk": "Воден парк", + "he": "פארק מים", + "eu": "Ur-parkea" + } + }, + "leisure/dance": { + "title": { + "C": "Dance School", + "en": "Dance Hall", + "ar": "قاعة الرقص", + "ast": "Salón de baille", + "ca": "Pista de ball", + "cs": "Tančírna", + "da": "Dansehal", + "de": "Tanzsaal", + "el": "Αίθουσα Xορού", + "en-GB": "Dance Hall", + "eo": "Dancejo", + "es": "Salón de baile", + "et": "Tantsusaal", + "fa": "سالن رقص", + "fi": "Tanssipaikka", + "fr": "Salle de danse", + "gl": "Sala de baile", + "hu": "Táncterem", + "is": "Danssalur", + "it": "Sala da ballo", + "ja": "ダンスホール", + "ko": "댄스 홀", + "lt": "Šokių salė", + "lv": "Deju zāle", + "nl": "Danszaal", + "pl": "Sala taneczna", + "pt-BR": "Danceteria", + "pt": "Salão de dança", + "ro": "Sală de Dans", + "ru": "Танцевальный зал", + "sl": "Plesna dvorana", + "sr": "Плесна сала", + "sv": "Dansbana", + "tr": "Dans Salonu", + "uk": "Зала для танців", + "vi": "Phòng Khiêu vũ", + "zh-CN": "舞厅", + "zh-HK": "舞廳", + "zh-TW": "舞廳", + "mk": "Сала за игранки", + "he": "היכל ריקודים", + "ckb": "هۆڵی سەماکردن" + } + }, + "leisure/fitness_centre": { + "title": { + "C": "Gym / Fitness Center", + "en": "Gym / Fitness Center", + "ar": "مركز اللياقة البدنية", + "ast": "Ximnasiu / Centru de fitness", + "ca": "Gimnàs / Centre de Fitness", + "cs": "Tělocvična / Fitness centrum", + "da": "Gym / Fitnesscenter", + "de": "Fitness-Studio", + "el": "Γυμναστήριο", + "en-GB": "Gym / Fitness Centre", + "eo": "Ripoz-gimnastika centro", + "es": "Gimnasio", + "fa": "باشگاه تناسب اندام", + "fi": "Kuntosali / fitness-keskus", + "fr": "Centre de fitness / gym", + "gl": "Ximnasio", + "hr": "Zatvoreni prostor za vježbanje", + "hu": "Edzőterem / Fitneszklub", + "is": "Líkamsræktarmiðstöð", + "it": "Palestra / Centro Fitness", + "ja": "ジム/フィットネスセンター", + "ko": "체육관 / 피트니스 센터", + "lv": "Sportazāle / Fitnesa centrs", + "nl": "Fitnesscentrum", + "no": "Treningssenter", + "pl": "Siłownia / klub fitness", + "pt-BR": "Academia", + "pt": "Ginásio", + "ro": "Centru Fitness", + "ru": "Спортзал, фитнес-центр", + "sl": "Telovadnica / Fitness", + "sr": "Теретана / Фитнес центар", + "sv": "Gym / Fitnesscenter", + "tr": "Spor Salonu", + "uk": "Зал/Фітнес центр", + "vi": "Trung tâm Thể dục", + "zh-CN": "健身房/健身中心", + "zh-HK": "體育館 / 健體中心", + "zh-TW": "健身房/健身中心", + "mk": "Вежбалница", + "he": "מכון כושר", + "en-AU": "Gym / Fitness Centre" + } + }, + "leisure/fitness_station": { + "title": { + "C": "Outdoor Fitness Station", + "en": "Outdoor Fitness Station", + "ar": "محطة اللياقة البدنية في الهواء الطلق", + "ast": "Centru de fitness albentestate", + "ca": "Instal·lació exterior de Fitness", + "cs": "Venkovní tělocvična", + "da": "Udendørs fitnessplads", + "de": "Freiluft-Fitness-Station", + "el": "Υπαίθριο Γυμναστήριο", + "en-GB": "Outdoor Fitness Station", + "eo": "Ekzerc-parko (eksterdoma)", + "es": "Estación de gimnasia al aire libre", + "fa": "ایستگاه ورزشی در فضای باز", + "fi": "Ulkokuntosali", + "fr": "Fitness en extérieur", + "gl": "Estación de ximnasia ao aire libre", + "hr": "Vanjski prostor za vježbanje", + "hu": "Fitneszpark", + "is": "Líkamsþjálfunarstöð utandyra", + "it": "Palestra a cielo aperto", + "ja": "屋外トレーニング場", + "ko": "야외 신체단련소", + "lv": "Brīvdabas fitnesa vieta", + "nl": "Buitenshuis fitness-station", + "pl": "Siłownia zewnętrzna ", + "pt-BR": "Equipamento de Exercícios ao Ar Livre", + "pt": "Ginásio ao ar livre", + "ro": "Stație de Fitness în Aer Liber", + "ru": "Спортплощадка — тренажёры, турник, брусья", + "sl": "Telovadna orodja na prostem", + "sv": "Utomhusgym", + "tr": "Açıkhava Spor Yeri", + "uk": "Тренажери на вулиці", + "vi": "Trạm Thể dục", + "zh-CN": "户外健身站", + "zh-HK": "戶外健體站", + "zh-TW": "戶外健身站", + "mk": "Вежбалница на отворено", + "he": "תחנת כושר" + } + }, + "leisure/horse_riding": { + "title": { + "C": "Horseback Riding Facility", + "en": "Horseback Riding Facility", + "ar": "منشأة ركوب خيل", + "ast": "Instalación pa equitación", + "cs": "Jezdecký areál", + "da": "Ridningsfaciliteter", + "de": "Reitanlage", + "el": "Χώροι Ιπποστασίου", + "en-GB": "Horseback Riding Facility", + "eo": "Ĉeval-rajdadejo", + "es": "Centro de equitación", + "et": "Ratsakeskus", + "fa": "باشگاه اسب سواری", + "fi": "Ratsastusalue", + "fr": "Centre équestre", + "gl": "Centro de equitación", + "hu": "Lovasiskola", + "is": "Aðstaða fyrir reiðmennsku", + "it": "Centro equestre", + "ja": "乗馬施設", + "ko": "승마 시설", + "lv": "Zirgu jāšanas vieta", + "nl": "Manege", + "no": "Ridesenter", + "pl": "Jazda konna", + "pt-BR": "Centro de Hipismo", + "pt": "Centro equestre", + "ro": "Facilitate de Călărie", + "ru": "Площадка для верховой езды", + "sl": "Jahalni klub", + "sv": "Ridskola", + "tr": "At Binicilik Spor Kulübü", + "uk": "Верхова їзда", + "vi": "Khu Cưỡi ngựa", + "zh-CN": "骑马场", + "zh-HK": "騎馬設施", + "zh-TW": "騎馬場", + "mk": "Јавачница за коњи", + "he": "מתקן רכיבה על סוסים" + } + }, + "leisure/resort": { + "title": { + "C": "Resort", + "en": "Resort", + "ar": "منتجع", + "cs": "Letovisko", + "da": "Turistresort", + "de": "Resort", + "el": "Θέρετρο", + "en-GB": "Resort", + "eo": "Turisma centro", + "es": "Complejo turístico", + "et": "Puhkekeskus", + "fa": "مجتمع تفریحی", + "fi": "Lomakohde", + "fr": "Complexe touristique , Village de vacances", + "gl": "Complexo turístico", + "hu": "Üdülőhely", + "is": "Afþreyingarþorp", + "it": "Resort", + "ja": "リゾート地", + "ko": "리조트", + "nl": "Resort", + "pl": "Ośrodek wczasowy", + "pt-BR": "Resort", + "pt": "Estância turística", + "ro": "Resort", + "ru": "База отдыха / санаторий / пасионат / детский лагерь", + "sl": "Letovišče", + "sr": "Одмаралиште", + "sv": "Resort", + "tr": "Tatil Yeri", + "uk": "Курорт", + "vi": "Khu Nghỉ dưỡng", + "zh-CN": "度假区", + "zh-HK": "度假勝地", + "zh-TW": "度假勝地", + "mk": "Одморалиште", + "he": "אתר נופש", + "eu": "opor-leku" + } + }, + "leisure/amusement_arcade": { + "title": { + "C": "Amusement Arcade", + "en": "Amusement Arcade", + "cs": "Herna", + "da": "Spillehal", + "de": "Spielhalle", + "el": "Αίθουσα Ψυχαγωγίας", + "en-GB": "Amusement Arcade", + "eo": "Salono de ludoj", + "es": "Sala de juegos recreativos", + "et": "Videomängumasin", + "fi": "Pelihalli", + "fr": "Salle de jeux", + "gl": "Sala de xogos recreativos", + "hu": "Játékterem (kiskorúaknak is)", + "is": "Spilasalur", + "it": "Sala giochi", + "ja": "ゲームセンター", + "ko": "오락실", + "nl": "Speelhal", + "pl": "Salon gier", + "pt-BR": "Fliperama", + "pt": "Salão de jogos", + "ru": "Игровые автоматы", + "sv": "Arkadhall", + "tr": "Oyun Salonu", + "uk": "Ігрові автомати", + "vi": "Khu Trò chơi Điện tử", + "zh-TW": "遊樂場", + "mk": "Забавна аркада", + "he": "משחקי ארקייד" + } + }, + "leisure/hackerspace": { + "title": { + "C": "Hackerspace", + "en": "Hackerspace", + "de": "Hackerspace", + "el": "Χώρος Συζήτησης Εργασιών", + "en-GB": "Hackerspace", + "eo": "Kodumulejo (hackerspace)", + "es": "Hacklab", + "fa": "هکراسپیس", + "fi": "Koodausnurkkaus", + "fr": "Hackerspace", + "hu": "Alkotóműhely", + "is": "Hakkaraathvarf", + "it": "Spazio hacker", + "ja": "ハッカースペース", + "ko": "해커스페이스", + "nl": "Hackerspace", + "no": "Hackerspace", + "pl": "Hackerspace", + "pt-BR": "Hackerspace", + "pt": "Espaço de hackers", + "ru": "Хакерспейс", + "sv": "Hackerspace", + "uk": "Хакерспейс", + "vi": "Không gian Hacker", + "zh-CN": "创客空间", + "zh-TW": "駭客空間", + "mk": "Хакерски простор", + "he": "משרד היי טק משותף" + } + }, + "leisure/sauna": { + "title": { + "C": "Sauna", + "en": "Sauna", + "ar": "سونا", + "ast": "Sauna", + "cs": "Sauna", + "da": "Sauna", + "de": "Sauna", + "el": "Σάουνα", + "en-GB": "Sauna", + "eo": "Ŝvitbanejo", + "es": "Sauna", + "et": "Saun", + "fa": "سونا", + "fi": "Sauna", + "fr": "Sauna", + "gl": "Sauna", + "hu": "Szauna", + "is": "Gufubað", + "it": "Sauna", + "ja": "サウナ", + "ko": "사우나", + "lt": "Sauna", + "lv": "Sauna", + "nl": "Sauna", + "no": "Badstu", + "pl": "Sauna", + "pt-BR": "Sauna", + "pt": "Sauna", + "ru": "Сауна", + "sr": "Сауна", + "sv": "Bastu", + "tr": "Sauna", + "uk": "Сауна", + "vi": "Tắm hơi", + "zh-CN": "桑拿", + "zh-TW": "桑拿", + "mk": "Сауна", + "he": "סאונה", + "eu": "Sauna" + } + }, + "leisure/beach_resort": { + "title": { + "C": "Beach Resort", + "en": "Beach Resort", + "ar": "منتجع الشاطئ", + "de": "Strandresort", + "el": "Παραθαλάσσιο Θέρετρο", + "en-GB": "Beach Resort", + "eo": "Sablobordo administrata (kun oportunaĵoj)", + "es": "Balneario", + "et": "Rannakuurort", + "fi": "Rantalomakohde", + "fr": "Station balnéaire", + "gl": "Complexo turístico", + "hu": "Fürdőhely, vízparti strand", + "is": "Strandbær", + "it": "Stabilimento balneare", + "ja": "ビーチリゾート", + "ko": "해변 리조트", + "nl": "Strandoord", + "no": "Strandhotell", + "pl": "Resort nadmorski", + "pt-BR": "Resort em Praia", + "pt": "Estância balnear", + "ru": "Пляжный курорт", + "sv": "Strandresort", + "uk": "Пляжний курорт", + "vi": "Bãi biển Nghỉ dưỡng", + "zh-CN": "海滩度假区", + "zh-TW": "海灘渡假村", + "mk": "Плажно летувалиште", + "he": "אתר נופש על החוף" + } + }, + "leisure/bleachers": { + "title": { + "C": "Bleachers", + "en": "Bleachers", + "de": "Nicht überdachte Tribüne", + "el": "Εξέδρα Χωρίς Σκεπή", + "eo": "Spektejo", + "es": "Gradas", + "fi": "Katsomo", + "fr": "Gradins", + "gl": "Chanzos", + "hu": "Lelátó", + "it": "Gradinate", + "ja": "観覧席", + "ko": "관중석", + "nl": "Tribune", + "no": "Tribune", + "pl": "Trybuna (odkryta)", + "pt-BR": "Arquibancada simples", + "pt": "Bancadas", + "ru": "Трибуны", + "sv": "Läktare", + "uk": "Трибуни", + "vi": "Khán đài Ngoài trời", + "zh-TW": "看台", + "mk": "Гледалиште на отворено", + "he": "טריבונות" + } + }, + "dance:teaching/yes": { + "title": { + "C": "Dance School" + } + }, + "leisure/outdoor_seating": { + "title": { + "C": "Outdoor Seating Area", + "en": "Outdoor Seating Area", + "cs": "Venkovní posezení", + "da": "Udendørs siddepladser", + "de": "Außengastronomie", + "el": "Υπαίθριο Καθιστικό", + "en-GB": "Outdoor Seating Area", + "eo": "Seĝoj eksterdome", + "es": "Área de asientos al exterior", + "fi": "Ulkoterassi", + "fr": "Aire des places en terrasse", + "gl": "Área de asentos ó exterior", + "hr": "Sjedenje vani", + "is": "Svæði fyrir sæti utandyra", + "it": "Posti a sedere all’esterno", + "ja": "屋外食事席エリア", + "ko": "야외 좌석 구역", + "nl": "Terras (horeca)", + "pl": "Ogródek", + "pt-BR": "Área de estar ao ar livre", + "pt": "Esplanada", + "ru": "Столики на улице (площадка)", + "sv": "Uteservering", + "uk": "Місця на свіжому повітрі", + "vi": "Khu Ăn uống Ngoài trời", + "zh-CN": "室外座位", + "zh-TW": "戶外座位區", + "mk": "Маси на отворено", + "he": "אזור ישיבה בחוץ" + } + }, + "leisure/bandstand": { + "title": { + "C": "Bandstand", + "en": "Bandstand", + "cs": "Kryté pódium", + "de": "Musikpavillon", + "el": "Εξέδρα Συναυλιών", + "eo": "Orkestrejeto", + "es": "Quiosco de música", + "fi": "Pieni esiintymislava", + "fr": "Kiosque à musique", + "gl": "Palco de música", + "hu": "Zenepavilon", + "is": "Hljómsveitapallur", + "it": "Chiosco della musica", + "ja": "野外音楽堂", + "ko": "연주 무대", + "nl": "Podium", + "pl": "Estrada", + "pt-BR": "Coreto", + "pt": "Coreto", + "ru": "Площадка для музыкантов", + "sv": "Musikestrad", + "uk": "Естрада", + "vi": "Bục Dàn nhạc", + "zh-TW": "演奏臺", + "mk": "Оркестарска естрада", + "he": "בימת תזמורת" + } + }, + "leisure/fishing": { + "title": { + "C": "Fishing Spot", + "en": "Fishing Spot", + "cs": "Místo pro rybolov", + "de": "Fischplatz", + "el": "Χώρος Αλιείας", + "eo": "Loko por fiŝhokado", + "es": "Lugar de pesca", + "fi": "Kalastuspaikka", + "fr": "Lieu de pêche", + "gl": "Lugar de pesca", + "hu": "Horgászhely", + "is": "Veiðistaður", + "it": "Punto per la pesca", + "ja": "釣りスポット", + "ko": "낚시터", + "nl": "Visstek", + "no": "Fiske Plass", + "pl": "Łowisko", + "pt-BR": "Ponto de pesca", + "pt": "Local de pesca", + "ru": "Место для рыбалки", + "sv": "Fiskeplats", + "uk": "Місце для риболовлі", + "vi": "Chỗ Câu cá", + "zh-CN": "钓鱼地点", + "zh-TW": "釣魚點", + "mk": "Место за риболов", + "he": "נקודת דיג" + } + }, + "leisure/disc_golf_course": { + "title": { + "C": "Disc Golf Course", + "en": "Disc Golf Course", + "de": "Discgolf Anlage", + "eo": "Ludkampo por golfdisko", + "es": "Golf de disco", + "fi": "Frisbeegolfkenttä", + "fr": "Parcours de disc golf", + "ja": "ディスクゴルフコース", + "no": "Disc Golf Bane", + "pl": "Pole do gry w disc golfa", + "pt-BR": "Percurso de golfe de disco", + "pt": "Campo de golfe de disco", + "sv": "Frisbeegolfbana", + "uk": "Диско-гольф", + "zh-TW": "飛盤高爾夫球場", + "mk": "Терен за дикс-голф", + "he": "מגרש דיסק גולף" + } + }, + "leisure/escape_game": { + "title": { + "C": "Escape Room", + "en": "Escape Room", + "de": "Escape Room", + "el": "Δωμάτιο Απόδρασης", + "eo": "Ĉambro de enigmoj", + "es": "Sala de escape", + "fi": "Pakopeli", + "fr": "Escape game", + "gl": "Escape room", + "hu": "Szabadulószoba", + "it": "Escape Room", + "ja": "脱出ゲーム場", + "ko": "방탈출", + "pl": "Escape room", + "pt-BR": "Sala de fuga", + "pt": "Sala de fuga", + "uk": "Квест-кімната", + "vi": "Trò chơi Thoát khỏi Phòng", + "zh-TW": "密室逃脫", + "mk": "Соба за бегство", + "he": "חדר בריחה" + } + }, + "leisure/swimming_area": { + "title": { + "C": "Natural Swimming Area", + "en": "Natural Swimming Area", + "cs": "Přírodní koupaliště", + "da": "Åbentvandssvømningsområde", + "de": "Natürlicher Badebereich", + "el": "Φυσική Περιοχή Κολύμβησης", + "eo": "Naĝejo natura", + "es": "Área de natación natural", + "fi": "Uimaranta", + "fr": "Lieu de baignade", + "gl": "Área de natación natural", + "hu": "Szabadvizi úszóterület", + "it": "Area riservata ai bagnanti", + "ja": "遊泳区域", + "pl": "Kąpielisko", + "pt-BR": "Área de natação natural", + "pt": "Zona de banhos natural", + "uk": "Місце для плавання", + "vi": "Vũng Sâu để Bơi", + "zh-CN": "自然游泳区域", + "zh-TW": "自然游泳區", + "mk": "Природно пливалиште", + "he": "שטח שחייה טבעי" + } + }, + "office/accountant": { + "title": { + "C": "Accountant Office", + "en": "Accountant Office", + "ar": " المحاسب ", + "ast": "Contable", + "ca": "Oficina comptable", + "cs": "Účetnictví", + "da": "Revisor-kontor", + "de": "Buchhaltungsbüro", + "el": "Λογιστικό Γραφείο", + "en-GB": "Accountant Office", + "eo": "Oficejo de kontisto", + "es": "Oficina de contador", + "fa": "دفتر حسابدار", + "fi": "Tilintarkastustoimisto", + "fr": "Comptable", + "gl": "Contábel", + "hu": "Könyvelő iroda", + "is": "Bókhaldsskrifstofa", + "it": "Commercialista", + "ja": "会計事務所(主に法人向け)", + "ko": "회계사 사무소", + "nl": "Boekhouder", + "no": "Revisorkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Contabilidade", + "pt": "Contabilista", + "ru": "Бухгалтер", + "sr": "Рачуноводствена канцеларија", + "sv": "Bokhållare", + "tr": "Muhasebeci", + "uk": "Бухгалтер", + "vi": "Văn phòng Kế toán", + "zh-CN": "会计师事务所", + "zh-TW": "會計師事務所", + "mk": "Сметководствено биро", + "he": "משרד רואה חשבון", + "ms": "Pejabat Akauntan" + } + }, + "office/architect": { + "title": { + "C": "Architect Office", + "en": "Architect Office", + "ar": " مهندس معماري ", + "ca": "Oficina d'arquitectura", + "cs": "Kancelář architekta", + "da": "Arkitekt-kontor", + "de": "Architekturbüro", + "el": "Αρχιτεκτονικό Γραφείο", + "en-GB": "Architect Office", + "eo": "Oficejo de arĥitekturisto", + "es": "Oficina de arquitecto", + "fa": "دفتر معماری", + "fi": "Arkkitehtitoimisto", + "fr": "Architecte", + "gl": "Arquitecto", + "hr": "Arhitektonski ured", + "hu": "Építészi iroda", + "is": "Arkitektastofa", + "it": "Studio di architettura", + "ja": "設計事務所", + "ko": "건축가 사무소", + "lt": "Architekto biuras", + "lv": "Arhitekta birojs", + "nl": "Architectenbureau", + "no": "Arkitektkontor", + "pl": "Architekt", + "pt-BR": "Escritório de Arquitetura", + "pt": "Arquiteto", + "ru": "Архитектурное бюро", + "sv": "Arkitektbyrå", + "tr": "Mimarlık Ofisi", + "uk": "Архітектор", + "vi": "Văn phòng Kiến trúc sư", + "zh-CN": "建筑事务所", + "zh-TW": "建築師事務所", + "mk": "Архитектонско биро", + "he": "משרד אדריכלים", + "ms": "Pejabat Arkitek" + } + }, + "office/company": { + "title": { + "C": "Corporate Office", + "en": "Corporate Office", + "ar": "مكتب شركة", + "ca": "Oficina corporativa", + "cs": "Kancelář korporace", + "de": "Firmenbüro", + "el": "Εταιρικό Γραφείο", + "en-GB": "Corporate Office", + "eo": "Oficejo de firmao", + "es": "Oficina corporativa", + "et": "Ettevõtte kontor", + "fa": "دفتر شرکت خصوصی", + "fi": "Yritystoimisto", + "fr": "Bureau d'entreprise", + "gl": "Oficina corporativa", + "hr": "Ured firme", + "hu": "Vállalati iroda", + "is": "Skrifstofa fyrirtækis", + "it": "Ufficio aziendale", + "ja": "会社", + "ko": "기업 사무소", + "lt": "Korporacijos biuras", + "nl": "Kantoor van bedrijf", + "pl": "Biuro firmy", + "pt-BR": "Escritório de Empresa", + "pt": "Empresa", + "ru": "Частная компания", + "sv": "Företagskontor", + "tr": "Şirket", + "uk": "Офіс компанії", + "vi": "Văn phòng Công ty", + "zh-CN": "企业公司", + "zh-TW": "公司辦公室", + "mk": "Деловни простории", + "he": "משרד תאגידי" + } + }, + "office/educational_institution": { + "title": { + "C": "Educational Institution", + "en": "Educational Institution", + "ar": "مؤسسة تعليمية ", + "ast": "Institución educativa", + "bs": "Obrazovna institucija", + "ca": "Institució Educativa", + "cs": "Vzdělávací instituce", + "da": "Uddannelsesinstitution", + "de": "Bildungseinrichtung", + "el": "Εκπαιδευτικό Ίδρυμα", + "en-GB": "Educational Institution", + "eo": "Oficejo de edukada institucio", + "es": "Oficina de institución educativa", + "fa": "مؤسسه آموزشی", + "fi": "Koulutushallinnon toimisto", + "fr": "Bureau de l'établissement d'enseignement", + "gl": "Institución educativa", + "hr": "Obrazovna ustanova", + "hu": "Oktatási intézmény", + "id": "Institusi Pendidikan", + "is": "Menntastofnun", + "it": "Istituto d'Istruzione", + "ja": "教育機関事務所", + "ko": "교육 기관", + "lt": "Edukacinis institutas", + "lv": "Izglītības Iestāde", + "nl": "Kantoor van onderwijsinstelling", + "no": "Utdanningsinstitusjon", + "pl": "Instytucja edukacyjna", + "pt-BR": "Instituição Educacional", + "pt": "Instituição de ensino", + "ro": "Instituție Educațională", + "ru": "Администрация общеобразовательного учреждения", + "sk": "Vzdelávací inštitút", + "sl": "Izobraževalna ustanova", + "sr": "Образовна институција", + "sv": "Utbildningskontor", + "tr": "Eğitim Kurumu", + "uk": "Офіс освітнього закладу", + "vi": "Trường học", + "yue": "敎育機構", + "zh-CN": "教育机构", + "zh-HK": "敎育機構", + "zh-TW": "教育機構", + "mk": "Образовна установа", + "he": "מוסד חינוכי", + "ms": "Institusi Pendidikan" + } + }, + "office/employment_agency": { + "title": { + "C": "Employment Agency", + "en": "Employment Agency", + "ar": "مكتب التوظيف ", + "ast": "Axencia d'emplegu", + "bs": "Agencija za zapošljavanje", + "ca": "Oficina de treball", + "cs": "Úřad práce", + "da": "Arbejdsformidling", + "de": "Arbeitsamt", + "el": "Γραφείο Ευρέσεως Εργασίας", + "en-GB": "Employment Agency", + "eo": "Dungoficejo", + "es": "Agencia de empleo", + "fa": "آژانس کاریابی", + "fi": "Työnvälitystoimisto", + "fr": "Agence pour l'emploi", + "gl": "Oficina de emprego", + "hu": "Munkaügyi központ", + "id": "Agen Tenaga Kerja", + "is": "Atvinnumiðlun", + "it": "Agenzia per l'impiego", + "ja": "職業安定所", + "ko": "직업 소개소", + "lt": "Įdarbinimo agentūra", + "nl": "Uitzendbureau", + "no": "Bemanningsbyrå", + "pl": "Agencja zatrudnienia", + "pt-BR": "Agência de Empregos", + "pt": "Agência de emprego", + "ro": "Agenție de Muncă", + "ru": "Кадровое агентство", + "sk": "Zamestnávateľská agentúra", + "sl": "Agencija za zaposlovanje", + "sr": "Служба за запошљавање", + "sv": "Arbetsförmedling", + "ta": "வேலைவாய்ப்பு முகவர்", + "tr": "İş ve İşçi Bulma Kurumu", + "uk": "Кадрова агенція", + "vi": "Cơ quan Giới thiệu Việc làm", + "yue": "薦人館", + "zh-CN": "就业机构", + "zh-HK": "職業介紹所", + "zh-TW": "就業服務站", + "mk": "Агенција за вработување", + "he": "סוכנות כוח אדם", + "ms": "Agensi Pekerjaan" + } + }, + "office/estate_agent": { + "title": { + "C": "Real Estate Office", + "en": "Real Estate Office", + "ar": "مكتب عقاري", + "ast": "Axencia inmobiliaria", + "bs": "Agencija za nekretnine", + "ca": "Oficina d'agència immobiliària", + "cs": "Realitní kancelář", + "da": "Ejendomsmægler", + "de": "Immobilienmakler", + "el": "Κτηματομεσιτικό Γραφείο", + "en-GB": "Estate Agent", + "eo": "Oficejo de nemoveblaĵisto", + "es": "Inmobiliaria", + "fa": "دفتر املاک", + "fi": "Kiinteistönvälitystoimisto", + "fr": "Agence immobilière", + "gl": "Axencia inmobiliaria", + "hu": "Ingatlaniroda", + "id": "Kantor Real Estate", + "is": "Fasteignasöluskrifstofa", + "it": "Agente Immobiliare", + "ja": "不動産代理店", + "ko": "부동산 사무소", + "lt": "Nekilnojamo turto biuras", + "nl": "Immobiliënkantoor", + "no": "Eiendomsmegler", + "pl": "Biuro nieruchomości", + "pt-BR": "Imobiliária", + "pt": "Agência imobiliária", + "ro": "Oficiu de Proprietate Imobiliară", + "ru": "Агентство недвижимости", + "sk": "Realitná agentúra", + "sl": "Nepremičninska agencija", + "sv": "Mäklare/bostadsförmedling", + "tr": "Gayrimenkul Ofisi", + "uk": "Агенція з нерухомості", + "vi": "Văn phòng Bất động sản", + "yue": "管業處", + "zh-CN": "地产中介", + "zh-HK": "地產", + "zh-TW": "房地產仲介", + "mk": "Агенција за недвижности", + "he": "משרד נדל״ן", + "ms": "Pejabat Hartanah" + } + }, + "office/financial": { + "title": { + "C": "Financial Office", + "en": "Financial Office", + "ar": "مكتب مالي", + "ast": "Oficina financiera", + "bs": "Finansijski ured", + "ca": "Oficina financera", + "cs": "Finanční úřad", + "da": "Finanskontor", + "de": "Finanzberater", + "el": "Γραφείο Οικονομικών", + "en-GB": "Financial Office", + "eo": "Financa oficejo", + "es": "Financiera", + "fa": "اداره مالی", + "fi": "Taloustoimisto", + "fr": "Bureau d'entreprise financière", + "gl": "Oficina financeira", + "hu": "Pénzügyi vállalat irodája", + "id": "Kantor Keuangan", + "is": "Fjármálafyrirtæki", + "it": "Ufficio Finanziario", + "ja": "会計事務所(主に個人向け)", + "ko": "금융 사무소", + "lt": "Finansų biuras", + "nl": "Privékantoor van financiële instelling", + "pl": "Biuro finansowe", + "pt-BR": "Escritório Financeiro", + "pt": "Empresa financeira", + "ro": "Oficiu Financiar", + "ru": "Финансовая организация", + "sk": "Finančný úrad", + "sl": "Finančna agencija", + "sv": "Bankkontor", + "tr": "Finans Ofisi", + "uk": "Фінансове управління", + "vi": "Văn phòng Tài chính", + "yue": "財務部寫字樓", + "zh-CN": "金融机构", + "zh-HK": "金融機構辦事處", + "zh-TW": "金融機構辦公室", + "mk": "Финансиска служба", + "he": "משרד פיננסי", + "ms": "Pejabat Kewangan" + } + }, + "office/government": { + "title": { + "C": "Government Office", + "en": "Government Office", + "ar": "مكتب حكومي", + "ast": "Oficina gubernamental", + "bs": "Vladin ured", + "ca": "Oficina governamental", + "cs": "Státní úřad", + "da": "Statsligt kontor", + "de": "Behörde", + "el": "Γραφείο του Δημόσιου", + "en-GB": "Government Office", + "eo": "Registara oficejo", + "es": "Oficina de gobierno", + "et": "Valitsuse kontor", + "fa": "دفتر دولتی", + "fi": "Julkishallinnon toimisto", + "fr": "Administration publique", + "gl": "Oficina gobernamental", + "hr": "Državni ured", + "hu": "Kormányzati hivatal", + "id": "Kantor Pemerintah", + "is": "Opinber stofnun", + "it": "Ufficio governativo", + "ja": "行政機関事務所", + "ko": "관청", + "lt": "Vyriausybės biuras", + "lv": "Valdības birojs", + "nl": "Overheidskantoor", + "no": "Regjeringskontor", + "pl": "Biuro rządowe lub samorządowe", + "pt-BR": "Órgão governamental", + "pt": "Escritório governamental", + "ro": "Oficiu de Guvern", + "ru": "Государственное учреждение", + "sk": "Vládny úrad", + "sl": "Vladna agencija", + "sr": "Владина канцеларија", + "sv": "Myndighet", + "ta": "அரசு அலுவலகம்", + "tr": "Devlet Dairesi", + "uk": "Уряд", + "vi": "Công sở", + "yue": "衙門", + "zh-CN": "政府办公点", + "zh-HK": "政府辦公室", + "zh-TW": "政府機關", + "mk": "Управна служба", + "dv": "ސަރުކާރު އޮފީސްތައް", + "he": "משרד ממשלתי", + "ms": "Pejabat Kerajaan", + "so": "Xafiis Dowladeed" + } + }, + "office/insurance": { + "title": { + "C": "Insurance Office", + "en": "Insurance Office", + "ar": "مكتب تأمينات", + "ast": "Oficina de seguros", + "bs": "Ured za osiguranje", + "ca": "Oficina de companyia asseguradora", + "cs": "Pojišťovna", + "da": "Forsikringselskab", + "de": "Versicherung", + "el": "Ασφαλιστικό Γραφείο", + "en-GB": "Insurance Office", + "eo": "Oficejo de asekur-kompanio", + "es": "Aseguradora", + "fa": "دفتر بیمه", + "fi": "Vakuutustoimisto", + "fr": "Agence d'assurance", + "gl": "Oficina de seguros", + "hr": "Ured osiguravajućeg društva", + "hu": "Biztosító", + "id": "Kantor Asuransi", + "is": "Tryggingaskrifstofa", + "it": "Assicurazione", + "ja": "保険会社・代理店", + "ko": "보험 사무소", + "lt": "Draudimo įstaiga", + "lv": "Apdrošināšanas birojs", + "nl": "Verzekeringskantoor", + "no": "Forsikringskontor", + "pl": "Biuro ubezpieczeń", + "pt-BR": "Seguradora", + "pt": "Agência de seguros", + "ro": "Oficiu de Asigurare", + "ru": "Страховая компания", + "sk": "Poistenie", + "sl": "Zavarovalnica", + "sv": "Försäkringskontor", + "tr": "Sigorta Acentesi", + "uk": "Страхове бюро", + "vi": "Văn phòng Bảo hiểm", + "yue": "保險公司寫字樓", + "zh-CN": "保险公司", + "zh-HK": "保險公司辦公室", + "zh-TW": "保險公司辦公室", + "mk": "Осигурително друштво", + "he": "משרד ביטוח", + "ms": "Pejabat Insurans" + } + }, + "office/it": { + "title": { + "C": "Information Technology Office", + "en": "Information Technology Office", + "ar": "متخصص في تكنولوجيا المعلومات", + "cs": "Kancelář informačních technologií", + "de": "Informations-Technologie-Firma", + "el": "Γραφείο Πληροφοριών Τεχνολογίας ", + "en-GB": "Information Technology Office", + "eo": "Oficejo de inform-teĥnologia firmao", + "es": "Oficina de tecnología de la información", + "fa": "دفتر فناوری اطلاعات", + "fi": "Informaatioteknologian toimisto", + "fr": "Spécialiste en informatique", + "gl": "Oficina de tecnoloxías da información", + "hu": "Informatikai iroda", + "is": "Upplýsingatækniskrifstofa", + "it": "Ufficio società IT", + "ja": "IT企業", + "ko": "IT 사무소", + "nl": "IT-kantoor", + "pl": "Firma informatyczna", + "pt-BR": "Escritório de Empresa de Tecnologia da Informação", + "pt": "Escritório de Ti", + "ru": "Офис IT-компании", + "sv": "IT-kontor", + "tr": "Bilişim Teknoloji Ofisi", + "uk": "ІТ компанія", + "vi": "Văn phòng Tin học", + "zh-CN": "IT公司", + "zh-TW": "資訊公司辦公室", + "mk": "Информатичка служба", + "he": "משרד שירותי מחשוב", + "ms": "Pejabat Teknologi Maklumat" + } + }, + "office/lawyer": { + "title": { + "C": "Law Office", + "en": "Law Office", + "ar": "مكتب قانوني ", + "ast": "Despachu d'abogaos", + "bs": "Pravni ured", + "ca": "Bufet d'advocats", + "cs": "Právní kancelář", + "da": "Advokatkontor", + "de": "Anwalt", + "el": "Δικηγορικό Γραφείο", + "en-GB": "Law Office", + "eo": "Oficejo de leĝisto", + "es": "Despacho de abogados", + "fa": "دفتر حقوقی", + "fi": "Lakitoimisto", + "fr": "Cabinet d'avocats", + "gl": "Bufete", + "hr": "Odvjetnički ured", + "hu": "Ügyvéd", + "id": "Kantor Hukum", + "is": "Lögmannaskrifstofa", + "it": "Studio legale", + "ja": "法律事務所", + "ko": "법률 사무소", + "lt": "Advokatų kontora", + "nl": "Advocatenkantoor", + "no": "Advokatkontor", + "pl": "Biuro prawnika", + "pt-BR": "Escritório de Advocacia", + "pt": "Escritório de advogados", + "ro": "Cabinet de Avocatură", + "ru": "Юридические услуги", + "sk": "Právna kancelária", + "sl": "Pravna pisarna", + "sr": "Адвокатска канцеларија", + "sv": "Advokatkontor", + "ta": "சட்ட அலுவலகம்", + "tr": "Hukuk Bürosu", + "uk": "Адвокатське бюро", + "vi": "Văn phòng Luật sư", + "yue": "律師事務所", + "zh-CN": "律师事务所", + "zh-HK": "律師事務所", + "zh-TW": "律師事務所", + "mk": "Правник", + "he": "משרד עורכי דין", + "ms": "Pejabat Undang-undang" + } + }, + "office/newspaper": { + "title": { + "C": "Newspaper Office", + "en": "Newspaper Office", + "ar": "صحيفة", + "ast": "Redacción de periódicu", + "cs": "Novinářská redakce", + "de": "Zeitungsbüro", + "el": "Γραφεία Εφημερίδας", + "en-GB": "Newspaper Office", + "eo": "Oficejo de redakto", + "es": "Oficina de periódicos", + "fa": "دفتر روزنامه", + "fi": "Toimitus", + "fr": "Journal", + "gl": "Oficina de xornal", + "hu": "Újságírói iroda", + "is": "Skrifstofur fréttablaðs", + "it": "Ufficio giornalistico", + "ja": "新聞社", + "ko": "신문사 사무소", + "nl": "Krantredactie", + "no": "Avisredaksjon", + "pl": "Siedziba wydawcy gazety", + "pt-BR": "Escritório de Jornal", + "pt": "Jornal", + "ru": "Редакция газеты", + "sr": "Новинска канцеларија", + "sv": "Tidningsredaktion", + "ta": "செய்தித்தாள் அலுவலகம்", + "tr": "Gazete Şubesi", + "uk": "Редакція газети", + "vi": "Văn phòng Tờ báo", + "zh-CN": "报社", + "zh-TW": "報社辦公室", + "mk": "Новинарска служба", + "he": "משרד עיתונאות", + "ms": "Pejabat Akhbar" + } + }, + "office/ngo": { + "title": { + "C": "NGO Office", + "en": "NGO Office", + "ar": "مكتب المنظمات الغير حكومية", + "ast": "Oficina d'ONG", + "bn": "এনজিও অফিস", + "bs": "Ured NVO", + "ca": "Oficina d'ONG", + "cs": "Nezisková organizace", + "da": "NGO kontor", + "de": "NGO-Büro – Nichtregierungsorganisation", + "el": "Γραφείο ΜΚΟ", + "en-GB": "NGO Office", + "eo": "Oficejo de neregistara organizaĵo", + "es": "ONG", + "fa": "سازمان مردم نهاد", + "fi": "Kansalaisjärjestö", + "fr": "Organisation non gouvernementale", + "gl": "Oficina ONG", + "hr": "Nevladina organizacija", + "hu": "Civil szervezet", + "id": "Kantor LSM", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Organizzazione non governativa", + "ja": "NGO事務所", + "ko": "NGO 사무소", + "nl": "Kantoor van NGO", + "pl": "Biuro organizacji pozarządowej", + "pt-BR": "Sede de ONG", + "pt": "ONG", + "ro": "Oficiu NGO", + "ru": "Общественная организация", + "sk": "Nezisková organizácia", + "sl": "Sedež nevladne organizacije", + "sr": "НВО канцеларија", + "sv": "Icke-statlig organisation", + "tr": "Sivil Toplum Örgütü", + "uk": "Недержавна громадська організація", + "vi": "Tổ chức Phi chính phủ", + "yue": "志顠機構寫字樓", + "zh-CN": "非政府组织", + "zh-HK": "非政府機構辦公室", + "zh-TW": "非政府機構辦公室", + "mk": "НВО", + "he": "משרד ארגון לא ממשלתי", + "ms": "Pejabat Pertubuhan Bukan Kerajaan" + } + }, + "office/political_party": { + "title": { + "C": "Political Party Office", + "en": "Political Party Office", + "ar": "مكتب الحزب السياسي", + "cs": "Kancelář politické strany", + "de": "Parteibüro, Büro einer politischen Partei", + "el": "Γραφείο Πολιτικού Κόμματος", + "es": "Oficina del partido político", + "fi": "Puoluetoimisto", + "fr": "Bureau de parti politique", + "gl": "Oficina do partido político", + "hu": "Pártiroda", + "it": "Ufficio di un partito", + "ja": "政党事務所", + "ko": "정당 사무소", + "no": "Politisk Parti Kontor", + "pl": "Biuro partii politycznej", + "pt-BR": "Escritório de partido político", + "pt": "Sede partidária", + "sv": "Partikontor", + "uk": "Офіс політичної партії", + "vi": "Văn phòng Đảng phái Chính trị", + "zh-CN": "政党办公室", + "zh-TW": "政黨辦公室", + "mk": "Партиски штаб", + "he": "משרד של מפלגה" + } + }, + "office/research": { + "title": { + "C": "Research Office", + "en": "Research Office", + "ar": "مكتب بحوث", + "ast": "Despachu d'investigación", + "bs": "Ured za istraživanje", + "ca": "Oficines d'R+D", + "cs": "Výzkumný ústav", + "da": "Forskning", + "de": "Forschungseinrichtung", + "el": "Γραφείο Ερευνών", + "en-GB": "Research Office", + "eo": "Oficejo de scienca esplorado", + "es": "Oficina de investigación", + "fa": "سازمان تحقیقاتی و پژوهشی", + "fi": "Tutkimustoimisto", + "fr": "Organisme de recherche", + "gl": "Oficina de investigación", + "hr": "Ured za istraživanje", + "hu": "Kutatóintézet", + "id": "Kantor Riset", + "is": "Rannsóknarstofa", + "it": "Istituto di Ricerca", + "ja": "研究所", + "kn": "ಸಂಶೋಧನಾ ಕಛೇರಿ", + "ko": "연구 사무소", + "lt": "Tyrimų tarnyba", + "nl": "Onderzoekskantoor", + "no": "Forskningskontor", + "pl": "Biuro badawcze", + "pt-BR": "Escritório de Pesquisa", + "pt": "Centro de investigação", + "ro": "Birou de Cercetare", + "ru": "Научно-исследовательская организация", + "sk": "Výskum", + "sl": "Raziskave", + "sv": "Forskning och utveckling", + "ta": "ஆராய்ச்சி அலுவலகம்", + "tr": "Araştırma Kurumu", + "uk": "Дослідницька лабораторія", + "vi": "Văn phòng Nghiên cứu", + "yue": "研究所", + "zh-CN": "研究所", + "zh-HK": "研究所", + "zh-TW": "研究機構", + "mk": "Истражувачка служба", + "he": "משרד מחקר", + "ms": "Pejabat Penyelidikan" + } + }, + "office/telecommunication": { + "title": { + "C": "Telecom Office", + "en": "Telecom Office", + "ar": "مكتب اتصالات", + "ast": "Oficina de telecomunicaciones", + "bn": "টেলিকম অফিস", + "bs": "Ured telekoma", + "ca": "Oficina de telecomunicacions", + "cs": "Telekomunikační společnost", + "da": "Teleselskabskontor", + "de": "Telefongesellschaft", + "el": "Γραφείο Τηλεπικοινωνιών", + "en-GB": "Telecom Office", + "eo": "Oficejo de telekomunikada firmao", + "es": "Oficina de telecomunicaciones", + "fa": "دفتر مخابراتی", + "fi": "Tietoliikennetoimisto", + "fr": "Agence de télécommunications", + "gl": "Oficina de telecomunicacións", + "hr": "Ured za telekomunikacije", + "hu": "Távközlési cég irodája", + "id": "Kantor Telekomunikasi", + "is": "Samskiptaskrifstofa", + "it": "Ufficio di telecomunicazioni", + "ja": "通信会社事務所", + "ko": "통신 사무소", + "lt": "Telekomunikacijų biuras", + "lv": "Telekomunikāciju birojs", + "nl": "Telecomkantoor", + "no": "Telekontor", + "pl": "Biuro firmy telekomunikacyjnej", + "pt-BR": "Escritório de Telecomunicações", + "pt": "Empresa de telecomunicações", + "ro": "Oficiu Telecom", + "ru": "Офис телекоммуникационной компании", + "sk": "Telekomunikácie", + "sl": "Telekomunikacijska pisarna", + "sv": "Telekom", + "ta": "தொலைத்தொடர்பு அலுவலகம்", + "tr": "Haberleşme Bürosu", + "uk": "Телекомунікаційна компанія", + "vi": "Văn phòng Viễn thông", + "yue": "電話公司寫字樓", + "zh-CN": "电信办公室", + "zh-HK": "電訊公司辦公室", + "zh-TW": "電信公司辦事處", + "mk": "Телекомуникациска служба", + "he": "משרד חברת תקשורת", + "ms": "Pejabat Telekom" + } + }, + "office/therapist": { + "title": { + "C": "Therapist Office", + "en": "Therapist Office", + "ar": "المعالج", + "ca": "Oficina de terapeuta", + "cs": "Terapeutická kancelář", + "de": "Therapeut", + "el": "Γραφείο Θεραπευτών", + "en-GB": "Therapist Office", + "eo": "Kabineto de terapiisto", + "es": "Oficina de terapeuta", + "fi": "Terapia", + "fr": "Thérapeute", + "gl": "Oficina de terapeuta", + "is": "Meðferðarstofa", + "it": "Studio psichiatrico", + "ja": "セラピスト(オフィス)", + "ko": "치료사 사무소", + "lv": "Terapieta birojs", + "nl": "Kantoor van therapeut", + "no": "Terapeutkontor", + "pl": "Terapeuta", + "pt-BR": "Escritório de Terapeuta", + "pt": "Terapeuta", + "ru": "Офис терапевта", + "sv": "Terapeut", + "tr": "Terapist", + "uk": "Фізіотерапевт", + "vi": "Văn phòng Trị liệu", + "zh-CN": "治疗师工作室", + "zh-HK": "治療師辦公室", + "zh-TW": "治療師辦公室", + "mk": "Терапевт", + "he": "משרד מטפל", + "ms": "Pejabat Ahli Terapi" + } + }, + "office/travel_agent": { + "title": { + "C": "Travel Agency", + "en": "Travel Agency", + "ar": "وكالة السفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyage", + "gl": "Axencia de viaxes", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Турагентство (устаревший тег)", + "sk": "Cestovná agentúra", + "sl": "Potovalna agencija", + "sr": "Туристичка агенција", + "sv": "Resebyrå ", + "ta": "பயண முகவர்", + "tr": "Seyahat Acentesi", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "mk": "Туристичка агенција", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "he": "סוכנות נסיעות", + "ms": "Agensi Pelancongan", + "so": "Wakaalad Socdaal" + } + }, + "office/coworking": { + "title": { + "C": "Coworking Space", + "en": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Místo pro spolupráci", + "da": "Kontorfællesskab", + "de": "Coworking-Büro", + "el": "Χώρος Συνεργασίας", + "en-GB": "Coworking Space", + "eo": "Ejo por samloka laborado (coworking)", + "es": "Espacio de trabajo compartido", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de coworking", + "gl": "Espacio de cotraballo", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Ufficio in Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "nl": "Coworking-kantoor", + "pl": "Centrum coworkingowe", + "pt-BR": "Espaço de Coworking", + "pt": "Coworking", + "ru": "Коворкинг", + "sl": "Prostor za sodelo", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間", + "mk": "Споделен работен простор", + "he": "משרדים משותפים" + } + }, + "office/physician": { + "title": { + "C": "Physician", + "en": "Physician", + "ar": "طبيب", + "ast": "Médicu", + "bn": "চিকিত্সক", + "bs": "Ljekar", + "ca": "Metge", + "cs": "Praktický lékař", + "da": "Læge", + "de": "Arztpraxis", + "el": "Ιατρός", + "en-GB": "Physician", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "fa": "پزشک", + "fi": "Lääkäri", + "fr": "Médecin", + "gl": "Médico", + "hr": "Liječnička praksa", + "hu": "Orvosi rendelő", + "is": "Læknir", + "it": "Medico", + "ja": "医者", + "kn": "ವೈದ್ಯ", + "ko": "내과의원", + "lt": "Gydytojas", + "nl": "Arts", + "no": "Lege", + "pl": "Lekarz", + "pt-BR": "Médico", + "pt": "Médico especialista", + "ro": "Fizician", + "ru": "Врач", + "sk": "Doktor", + "sl": "Ambulanta", + "sv": "Läkare", + "ta": "மருத்துவர்", + "tr": "Hekim", + "uk": "Лікар", + "vi": "Văn phòng Bác sĩ", + "yue": "醫生", + "zh-CN": "医生", + "zh-HK": "醫生", + "zh-TW": "醫務所", + "mk": "Лекар", + "he": "רופא", + "ms": "Pakar Perubatan" + } + }, + "office/administrative": { + "title": { + "C": "Administrative Office", + "en": "Administrative Office", + "ar": "مكتب الإداري ", + "ast": "Oficina alministrativa", + "bs": "Administrativni ured", + "ca": "Oficina de tràmits locals", + "cs": "Místní úřad", + "da": "Administrativt kontor", + "de": "Verwaltungsamt", + "el": "Διοικητικό γραφείο", + "en-GB": "Administrative Office", + "eo": "Administra oficejo", + "es": "Oficina administrativa", + "fa": "اداره حکومتی", + "fi": "Kunnallishallinnon toimisto", + "fr": "Bureau administratif", + "gl": "Administración local", + "hu": "Közigazgatási hivatal", + "id": "Kantor Administrasi", + "is": "Stjórnsýsluskrifstofa", + "it": "Autorità locale", + "ja": "地方行政事務所", + "ko": "관리 사무소", + "lt": "Administracinis biuras", + "nl": "Bestuurlijke instantie", + "pl": "Biuro samorządowe", + "pt-BR": "Escritório Administrativo", + "pt": "Escritório da administração local", + "ro": "Oficiu Administrativ", + "ru": "Местная администрация и надзирающие органы", + "sk": "Administratívny úrad", + "sl": "Upravna enota", + "sr": "Управна канцеларија", + "sv": "Lokal myndighet", + "ta": "நிருவாக அலுவலகம்", + "tr": "İdari Ofis", + "uk": "Канцелярія", + "vi": "Cơ quan Địa phương", + "yue": "行政樓", + "zh-CN": "行政楼", + "zh-HK": "行政樓", + "zh-TW": "政府機關", + "mk": "Администрација", + "he": "משרד אדמינסטרטיבי", + "ms": "Pejabat Pentadbiran" + } + }, + "office/adoption_agency": { + "title": { + "C": "Adoption Agency", + "en": "Adoption Agency", + "ca": "Agència d'adopció", + "cs": "Adopční agentura", + "da": "Adoptionsbureau", + "de": "Adoptionsagentur", + "el": "Οργανισμός Υιοθεσίας", + "en-GB": "Adoption Agency", + "eo": "Oficejo de adopto", + "es": "Agencia de adopción", + "fi": "Adoptiotoimisto", + "fr": "Agence d'adoption", + "gl": "Axencia de adopción", + "hr": "Agencija za posvajanje", + "hu": "Örökbefogadási ügynökség", + "is": "Ættleiðingaskrifstofa", + "it": "Agenzia per adozioni", + "ja": "養子縁組み機関", + "ko": "입양기관", + "lv": "Adopcijas Aģentūra", + "nl": "Adoptiebureau", + "no": "Adopsjonsbyrå", + "pl": "Ośrodek adopcyjny", + "pt-BR": "Agência de Adoção", + "pt": "Agência de adoção", + "ru": "Агенство по усыновлению", + "sv": "Adoptionsbyrå", + "tr": "Evlat Edinme Ajansı", + "uk": "Агенція з усиновлення", + "vi": "Cơ quan Nhận Con nuoi", + "zh-CN": "领养中介", + "zh-TW": "領養代理", + "mk": "Агенција за посвојување", + "he": "סוכנות אימוץ", + "ms": "Agensi Pengambilan Anak Angkat" + } + }, + "office/advertising_agency": { + "title": { + "C": "Advertising Agency", + "en": "Advertising Agency", + "ar": "وكالة إعلانية", + "ast": "Axencia de publicidá", + "ca": "Agència de publicitat", + "cs": "Reklamní agentura", + "da": "Reklamebureau", + "de": "Werbeagentur", + "el": "Διαφημιστική", + "en-GB": "Advertising Agency", + "eo": "Oficejo de reklamo", + "es": "Agencia de publicidad", + "fa": "کانون تبلیغاتی", + "fi": "Mainostoimisto", + "fr": "Agence de publicité", + "gl": "Axencia de publicidade", + "hr": "Reklamna agencija", + "hu": "Reklámügynökség", + "is": "Auglýsingastofa", + "it": "Agenzia pubblicitaria", + "ja": "広告代理店", + "ko": "광고 대행사", + "lt": "Reklamos agentūra", + "nl": "Reclamebureau", + "no": "Reklamebyrå", + "pl": "Agencja reklamowa", + "pt-BR": "Agência de Publicidade", + "pt": "Agência de publicidade", + "ru": "Рекламное агенство", + "sv": "Reklambyrå", + "ta": "விளம்பர முகவர்", + "tr": "Reklam Ajansı", + "uk": "Рекламна агенція", + "vi": "Cơ sở Quảng cáo", + "zh-CN": "广告中介", + "zh-TW": "廣告代理公司", + "mk": "Рекламна агенција", + "he": "סוכנות פרסום", + "ms": "Agensi Pengiklanan" + } + }, + "office/association": { + "title": { + "C": "Nonprofit Organization Office", + "en": "Nonprofit Organization Office", + "ar": "جمعية ", + "ast": "Oficina d'ONG", + "ca": "Oficina d'organització no governamental", + "cs": "Kancelář neziskové organizace", + "de": "Büro einer Nonprofit-Organisation", + "el": "Μη Κερδοσκοπικό Γραφείο", + "en-GB": "Nonprofit Organization Office", + "eo": "Oficejo de ne-profit-cela organizaĵo", + "es": "Oficina de organización sin fines de lucro", + "fa": "دفتر سازمان غیر انتفاعی", + "fi": "Voittoa tavoittelematon järjestö", + "fr": "Bureau d'association", + "gl": "Oficina de organización sen ánimo de lucro", + "hr": "Ured neprofitne udruge", + "hu": "Nonprofit szervezet iroda", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Ufficio associazione senza scopo di lucro", + "ja": "非営利組織", + "ko": "비영리 단체 사무소", + "lt": "Ne pelno organizacijos biuras", + "nl": "Kantoor van non-profitorganisatie", + "pl": "Biuro organizacji non profit", + "pt-BR": "Escritório de organização sem fins lucrativos", + "pt": "Organização sem fins lucrativos", + "ru": "Ассоциация (союз)", + "sv": "Frivilligorganisation", + "tr": "Yardım Kuruluşu", + "uk": "Неприбуткова організація", + "vi": "Tổ chức Phi lợi nhuận", + "zh-CN": "非营利机构办公室", + "zh-TW": "非營利組織辦公室", + "mk": "Непрофитна организација", + "he": "ארגון ללא מטרת רווח", + "ms": "Pejabat Pertubuhan Bukan Untung" + } + }, + "office/charity": { + "title": { + "C": "Charity Office", + "en": "Charity Office", + "ar": "منظمة خيرية", + "cs": "Kancelář charity", + "de": "Wohlfahrtseinrichtung", + "el": "Γραφείο Φιλανθρωπίας", + "en-GB": "Charity Office", + "eo": "Oficejo de almoza organizaĵo", + "es": "Oficina de beneficencia", + "fa": "دفتر خیریه", + "fi": "Hyväntekeväisyysjärjestö", + "fr": "Organisation de bienfaisance/charité", + "gl": "Oficina da caridade", + "hu": "Jótékonysági iroda", + "is": "Skrifstofa góðgerðasamtaka", + "it": "Organizzazione benefica", + "ja": "慈善団体", + "ko": "자선 단체 사무소", + "lt": "Labdaros biuras", + "nl": "Kantoor van liefdadigheidsinstelling", + "no": "Veldedighetskontor", + "pl": "Organizacja charytatywna", + "pt-BR": "Escritório de Caridade", + "pt": "Instituição de caridade", + "ru": "Благотворительная организация", + "sv": "Välgörenhetsorganisation", + "tr": "Hayır Kurumu", + "uk": "Благодійна організація", + "vi": "Tổ chức Từ thiện", + "zh-CN": "慈善机构", + "zh-TW": "慈善機構", + "mk": "Добротворна организација", + "he": "משרד צדקה", + "ms": "Pejabat Kebajikan" + } + }, + "office/energy_supplier": { + "title": { + "C": "Energy Supplier Office", + "en": "Energy Supplier Office", + "ar": "شركة مرافق الكهرباء", + "ast": "Oficina de distribuidora d'enerxía", + "cs": "Kancelář dodavatele elektřiny", + "de": "Energieversorgungsunternehmen", + "el": "Γραφείο Προμηθειών Ενέργειας", + "en-GB": "Energy Supplier Office", + "eo": "Oficejo de elektr-provizanto", + "es": "Oficina de proveedor de energía", + "fi": "Energiayhtiö", + "fr": "Fournisseur d'énergie", + "gl": "Oficina de empresa enerxética", + "hr": "Uredi opskrbljivača energijom", + "hu": "Energiaszolgáltató hivatal", + "is": "Orkusöluskrifstofa", + "it": "Ufficio azienda fornitrice di energia", + "ja": "エネルギー供給者", + "ko": "에너지 공급자 사무소", + "lv": "Elektrodevēja birojs", + "nl": "Kantoor van energiemaatschappij", + "pl": "Biuro dostawcy energii", + "pt-BR": "Escritório de Fornecedor de Energia", + "pt": "Distribuidor de energia", + "ru": "Поставщик топлива", + "sv": "Energibolag", + "tr": "Enerji Kurumu Şubesi", + "uk": "Електропостачальна компанія", + "vi": "Văn phòng Công ty Điện lực", + "zh-CN": "电力公司", + "zh-TW": "電力公司辦公室", + "mk": "Енергостопанска служба", + "he": "משרד ספק חשמל", + "ms": "Pejabat Pembekal Tenaga" + } + }, + "office/forestry": { + "title": { + "C": "Forestry Office", + "en": "Forestry Office", + "ar": "إدارة الغابات", + "cs": "Kancelář lesní správy", + "da": "Skovbrugskontor", + "de": "Forstverwaltung", + "el": "Γραφείο Δασοκομίας", + "en-GB": "Forestry Office", + "eo": "Oficejo de arbar-mastrumo", + "es": "Oficina forestal", + "fa": "دفتر جنگلداری", + "fi": "Metsätalousvirasto", + "fr": "Administration forestière", + "gl": "Oficina forestal", + "hu": "Erdészeti hivatal", + "is": "Skrifstofa skógarvarða", + "it": "Ufficio forestale", + "ja": "林業事務所", + "ko": "삼림 관리 사무소", + "lv": "Mežniecības birojs", + "nl": "Bosbeheerkantoor", + "pl": "Leśnictwo", + "pt-BR": "Escritório da Administração Florestal", + "pt": "Posto florestal", + "ru": "Лесоводство", + "sv": "Skogsbolag", + "tr": "Ormancılık Şubesi", + "uk": "Лісництво", + "vi": "Văn phòng Lâm nghiệp", + "zh-CN": "林务管理", + "zh-TW": "林業事業辦公室", + "mk": "Шумарска служба", + "he": "משרד יעור", + "ms": "Pejabat Perhutanan" + } + }, + "office/foundation": { + "title": { + "C": "Foundation Office", + "en": "Foundation Office", + "ar": "مؤسسة", + "ast": "Oficina de fundación", + "de": "Stiftung", + "el": "Γραφείο Ιδρύματος", + "en-GB": "Foundation Office", + "eo": "Oficejo de fondaĵo", + "es": "Oficina de fundación", + "fi": "Säätiö", + "fr": "Fondation", + "gl": "Oficina de fundación", + "is": "Skrifstofa sjálfseignarstofnunar", + "it": "Fondazione", + "ja": "財団", + "ko": "재단 사무소", + "nl": "Kantoor van stichting", + "pl": "Biuro fundacji", + "pt-BR": "Escritório de Fundação", + "pt": "Fundação", + "ru": "Фонд", + "sv": "Stiftelse", + "tr": "Vakıf", + "uk": "Фундація", + "vi": "Quỹ Từ thiện", + "zh-CN": "基金办公室", + "zh-TW": "基金會辦公室", + "mk": "Задолжбина", + "he": "משרד קרן", + "ms": "Pejabat Yayasan" + } + }, + "office/guide": { + "title": { + "C": "Tour Guide Office", + "en": "Tour Guide Office", + "ar": "مكتب الدليل السياحي", + "cs": "Kancelář turistického průvodce", + "da": "Turguidekontor", + "de": "Fremdenführer", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Tour Guide Office", + "eo": "Oficejo de vojaĝ-gvido", + "es": "Oficina de turismo", + "fa": "دفتر راهنمای تور", + "fi": "Turistiopastoimisto", + "fr": "Bureau des guides", + "gl": "Oficina de guías turísticos", + "hu": "Turisztikai iroda", + "is": "Skrifstofa leiðsögumanna", + "it": "Ufficio guide turistiche", + "ja": "ツアーガイド", + "ko": "여행 가이드 사무소", + "nl": "Gidsenkantoor", + "pl": "Przewodnik turystyczny", + "pt-BR": "Escritório de Guia Turístico", + "pt": "Guia turístico", + "ru": "Туристические гиды", + "sv": "Guidekontor", + "tr": "Tur Rehberi", + "uk": "Гід", + "vi": "Văn phòng Hướng dẫn Du lịch", + "zh-CN": "导游机构", + "zh-TW": "導遊辦公室", + "mk": "Туристички водич", + "he": "משרד תיירות", + "ms": "Pejabat Pemandu Pelancong" + } + }, + "office/moving_company": { + "title": { + "C": "Moving Company Office", + "en": "Moving Company Office", + "cs": "Kancelář stěhovací služby", + "de": "Umzugsfirma", + "el": "Γραφείο Εταιρείας Μετακομίσεων", + "en-GB": "Moving Company Office", + "eo": "Oficejo de transloĝiĝ-helpa firmao", + "es": "Oficina de mudanzas", + "fi": "Muuttoyhtiö", + "fr": "Entreprise de déménagement", + "gl": "Empresa de mudanzas", + "hu": "Költöztetőcég iroda", + "is": "Skrifstofa flutningafyrirtækis", + "it": "Ufficio compagnia di traslochi", + "ja": "引っ越し業者", + "ko": "이삿짐센터", + "nl": "Kantoor van verhuisbedrijf", + "pl": "Biuro firmy przeprowadzkowej", + "pt-BR": "Escritório de Companhia de Mudanças", + "pt": "Empresa de mudanças", + "ru": "Помощь при переезде", + "sv": "Flyttfirma", + "tr": "Taşıma Şirketi Ofisi", + "uk": "Перевезення речей", + "vi": "Văn phòng Công ty Chuyển nhà", + "zh-CN": "搬家公司", + "zh-TW": "搬家公司辦公室", + "mk": "Преселувач", + "he": "משרד תובלה", + "ms": "Pejabat Syarikat Pemindahan" + } + }, + "office/notary": { + "title": { + "C": "Notary Office", + "en": "Notary Office", + "ar": "كاتب عدل / موثق", + "ast": "Notaría", + "ca": "Notaria", + "cs": "Notářství", + "de": "Notariat", + "el": "Γραφείο Συμβολαιογράφων", + "en-GB": "Notary Office", + "eo": "Oficejo de notario", + "es": "Escribanía / Notaría", + "fa": "دفتر اسناد رسمی", + "fi": "Notaari", + "fr": "Notaire", + "gl": "Notaría", + "hu": "Közjegyző", + "is": "Skrifstofa lögbókanda", + "it": "Ufficio notarile", + "ja": "公証役場", + "ko": "공증사무소", + "lv": "Notāru birojs", + "nl": "Notariskantoor", + "pl": "Notariusz", + "pt-BR": "Tabelionato", + "pt": "Notário", + "ru": "Нотариус", + "sr": "Нотарска канцеларија", + "sv": "Notarie", + "tr": "Noter", + "uk": "Нотаріус", + "vi": "Văn phòng Công chứng", + "zh-CN": "公证处", + "zh-TW": "公證機構", + "mk": "Нотар", + "he": "משרד נוטריון", + "ms": "Pejabat Penyaksi Awam" + } + }, + "office/private_investigator": { + "title": { + "C": "Private Investigator Office", + "en": "Private Investigator Office", + "ar": "مكتب محقق", + "cs": "Soukromá detektivní kancelář", + "de": "Privatdetektiv", + "el": "Γραφείο Ιδιωτικού Ερευνητή", + "en-GB": "Private Investigator Office", + "eo": "Oficejo de detektivo", + "es": "Oficina de investigador privado", + "fa": "دفتر تحقیقات خصوصی", + "fi": "Yksityisetsivä", + "fr": "Enquêteur privé/détective", + "gl": "Oficina de investigador privado", + "hu": "Magánnyomozó iroda", + "is": "Einkaspæjaraskrifstofa", + "it": "Ufficio agenzia investigativa privata", + "ja": "私立探偵社", + "ko": "사설탐정 사무소", + "lv": "Privātizmeklētēja birojs", + "nl": "Kantoor van privédetective", + "no": "Privat Etterforskning Kontor", + "pl": "Prywatny detektyw", + "pt-BR": "Escritório de Detetive Particular", + "pt": "Detetive privado", + "ru": "Частный сыщик", + "sv": "Privatdetektiv", + "ta": "தனியார் துப்பு துலக்கும் அலுவலகம்", + "tr": "Dedektif", + "uk": "Приватний детектив", + "vi": "Văn phòng Thám tử Tư", + "zh-CN": "私家侦探事务所", + "zh-TW": "私家偵探辦公室", + "mk": "Приватен иследувач", + "he": "משרד חוקר פרטי", + "ms": "Pejabat Penyiasat Peribadi" + } + }, + "office/quango": { + "title": { + "C": "Quasi-NGO Office", + "en": "Quasi-NGO Office", + "ar": "السلطة الإدارية المستقلة", + "de": "Quasi-NGO-Büro", + "en-GB": "Quasi-NGO Office", + "eo": "Oficejo de duon-registara organizaĵo", + "es": "Oficina ONG cuasiautónoma", + "fi": "Kansalaisjärjestön toimisto", + "fr": "Autorité administrative indépendante ", + "is": "Félagasamtök í samstarfi við hið opinbera (quango)", + "it": "Ufficio di una simil ONG", + "ja": "準非政府機関", + "ko": "준정부조직 사무소", + "nl": "Kantoor van quango", + "pl": "Biuro organizacji prawie pozarządowej", + "pt-BR": "Escritório de Organização Não Governamental Quase Autônoma", + "pt": "ONG subsidiada", + "ru": "Полу-независимая некоммерческая организация", + "sv": "Kvasiautonom icke-statlig organisation", + "tr": "Yarı Özel Sivil Toplum Örgütü", + "uk": "Квазі-НГО", + "vi": "Tổ chức Bán độc lập Phi chính phủ", + "zh-CN": "准非政府组织", + "zh-TW": "準非政府組織辦公室", + "mk": "Квази-НВО", + "he": "משרד ארגון חצי לא ממשלתי", + "ms": "Pejabat Separa NGO" + } + }, + "office/surveyor": { + "title": { + "C": "Surveyor Office", + "en": "Surveyor Office", + "ar": "مكتب مساح أرضي", + "cs": "Zeměměřický úřad", + "de": "Vermessungstechniker", + "el": "Γραφείο Επιθεωρητών", + "en-GB": "Surveyor Office", + "eo": "Oficejo de analiza firmao", + "es": "Oficina de agrimensor", + "fa": "دفتر نظرسنجی", + "fi": "Maanmittaustoimisto", + "fr": "Géomètre", + "hu": "Földmérő", + "is": "Landmælingaskrifstofa", + "it": "Ufficio di supervisione", + "ja": "測量会社", + "ko": "측량기사 사무소", + "nl": "Kantoor van landmeter/expert/risicoschatter/schademeter/opiniepeilers/statisticus", + "no": "Landmålerkontor", + "pl": "Biuro geodety", + "pt-BR": "Escritório de Pesquisas ou Inspeções", + "pt": "Empresa de peritagem", + "ru": "Организация оценки и статистики", + "sv": "Undersökning/inspektion", + "ta": "நில அளவாய்வாளர் அலுவலகம்", + "tr": "Harita Mühendisliği", + "uk": "Експет-оцінщик", + "vi": "Văn phòng Khảo sát", + "yue": "量地官寫字樓", + "zh-TW": "測繪公司辦公室", + "mk": "Земјомерна служба", + "he": "משרד מודד", + "ms": "Pejabat Juruukur" + } + }, + "office/tax_advisor": { + "title": { + "C": "Tax Advisor Office", + "en": "Tax Advisor Office", + "ar": "مستشار الضرائب", + "cs": "Kancelář daňového poradce", + "de": "Steuerberatungskanzlei", + "el": "Γραφείο Φορολογικού Συμβούλου", + "en-GB": "Tax Advisor Office", + "eo": "Oficejo de impost-konsilo", + "es": "Oficina de asesor impositivo", + "fa": "دفتر مشاور مالیاتی", + "fi": "Veroneuvonta", + "fr": "Conseiller fiscal", + "gl": "Oficina de xestor fiscal", + "hu": "Adótanácsadó", + "is": "Skattaráðgjafarskrifstofa", + "it": "Centro assistenza fiscale", + "ja": "税金アドバイザー", + "ko": "세무사 사무소", + "nl": "Kantoor van belastingsadviseur", + "no": "Skatterådgiverkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Assessoria Fiscal", + "pt": "Escritório de contabilidade", + "ru": "Офис консультанта по налогам", + "sv": "Skatterådgivning", + "tr": "Vergi Danışmanlığı", + "uk": "Податкова консультація", + "vi": "Dich vụ Khai thuế", + "zh-CN": "税务顾问机构", + "zh-TW": "稅務顧問辦公室", + "mk": "Даночен советник", + "he": "משרד יועץ מס", + "ms": "Pejabat Penasihat Cukai" + } + }, + "office/water_utility": { + "title": { + "C": "Water Utility Office", + "en": "Water Utility Office", + "ar": "شركة المياه", + "da": "Vandforsyningskontor", + "de": "Wasserversorgungsunternehmen", + "el": "Γραφείο Εκμετάλλευσης Νερού", + "en-GB": "Water Utility Office", + "eo": "Oficejo de akv-provizanta firmao", + "es": "Oficina de servicios públicos de agua", + "fi": "Vesilaitostoimisto", + "fr": "Agence de l'eau", + "gl": "Oficina de servizos públicos de auga", + "hu": "Vízmű iroda", + "is": "Skrifstofa vatnsveitu", + "it": "Ufficio azienda di fornitura dell'acqua", + "ja": "水道工事店", + "ko": "수도사업소", + "nl": "Kantoor van watermaatschappij", + "pl": "Biuro wodociągowe", + "pt-BR": "Escritório de Companhia de Água", + "pt": "Fornecedor de água", + "ru": "Офис водопроводной компании", + "sv": "Vattenleverantör", + "tr": "Su Müdürlüğü", + "uk": "Водоканал", + "vi": "Văn phòng Nhà cung cấp Nước uống", + "zh-CN": "水务设施机构", + "zh-HK": "水上設施辦公室", + "zh-TW": "自來水公司", + "mk": "Водоводна служба", + "he": "משרד לשירות ציבורי - מים", + "ms": "Pejabat Pembekal Air" + } + }, + "office/religion": { + "title": { + "C": "Religious Office", + "en": "Religious Office", + "cs": "Náboženská kancelář", + "de": "Büro einer Glaubensgemeinschaft", + "el": "Γραφείο Θρησκείας", + "eo": "Kancelario religia", + "es": "Oficina religiosa", + "fa": "دفاتر مذهبی", + "fi": "Uskonnollinen toimisto", + "fr": "Bureau religieux", + "gl": "Oficina relixiosa", + "hu": "Egyházi iroda", + "it": "Ufficio religioso", + "ja": "教団事務所", + "ko": "종교 사무소", + "nl": "Religieus kantoor", + "no": "Religiøst Kontor", + "pl": "Biuro organizacji religijnej", + "pt-BR": "Escritório religioso", + "pt": "Escritório religioso", + "sv": "Religiöst kontor", + "uk": "Релігійна організація", + "vi": "Văn phòng Tôn giáo", + "zh-TW": "宗教辦公處所", + "mk": "Верска служба", + "he": "משרד לנושאי דת" + } + }, + "office/consulting": { + "title": { + "C": "Consultancy Office", + "en": "Consultancy Office", + "de": "Consulting/Beratungs-Büro", + "el": "Γραφείο Συμβούλων", + "es": "Oficina de consultora", + "fi": "Konsulttitoimisto", + "fr": "Bureau de consultant", + "ja": "コンサルティング事務所", + "ko": "컨설팅 사무소", + "pl": "Biuro konsultanta", + "pt-BR": "Gabinete de consultoria", + "pt": "Empresa de consultadoria", + "ru": "Консультационная компания", + "uk": "Консалтингова фірма", + "vi": "Văn phòng Tư vấn", + "zh-TW": "諮詢處", + "mk": "Советодавно биро", + "he": "משרד ייעוץ" + } + }, + "office/diplomatic": { + "title": { + "C": "Diplomatic Office", + "en": "Diplomatic Office", + "de": "Diplomatische und konsularische Vertretung", + "el": "Διπλωματικό Γραφείο", + "eo": "Oficejo diplomatia", + "es": "Oficina diplomática", + "fr": "Bâtiment diplomatique", + "gl": "Oficina diplomática", + "hu": "Diplomáciai iroda", + "it": "Ufficio diplomatico", + "ja": "外交施設", + "ko": "외교 사무소", + "pl": "Placówka dyplomatyczna", + "pt-BR": "Escritório diplomático", + "pt": "Escritório diplomático", + "uk": "Дипломатична установа", + "vi": "Văn phòng Ngoại giao", + "zh-CN": "外交代表机构", + "zh-TW": "外交辦公室", + "mk": "Дипломатска служба", + "he": "משרד דיפלומטי" + } + }, + "office/bail_bond_agent": { + "title": { + "C": "Bail Bond Agent", + "en": "Bail Bond Agent", + "de": "Kautionsvermittler", + "es": "Agente de fianzas", + "fr": "Agent de cautionnement", + "hu": "Óvadékiroda", + "ja": "保釈保証業者", + "pl": "Poręczyciel majątkowy", + "pt-BR": "Agente de fiança", + "pt": "Agente de fianças", + "uk": "Застава за звільнення", + "vi": "Văn phòng Đóng tiền Thế chân Tại ngoại", + "zh-TW": "保釋債券代理人", + "mk": "Кауционист", + "he": "סוכן שחרור בערבות" + } + }, + "office/financial_advisor": { + "title": { + "C": "Financial Advisor", + "en": "Financial Advisor", + "de": "Finanzberater", + "el": "Οικονομικός Σύμβουλος", + "eo": "Oficejo de financa konsilisto", + "es": "Asesor financiero", + "fi": "Talousneuvonta", + "fr": "Conseiller financier", + "gl": "Asesor financeiro", + "hu": "Pénzügyi Tanácsadó", + "it": "Consulente finanziario", + "ja": "ファイナンシャル・アドバイザー", + "pl": "Doradca finansowy", + "pt-BR": "Conselheiro financeiro", + "pt": "Conselheiro financeiro", + "sv": "Finansiell rådgivare", + "uk": "Радник з фінансових питань", + "vi": "Cố vấn Tài chính", + "zh-TW": "財務顧問", + "mk": "Финансов советник", + "he": "ייעוץ כלכלי" + } + }, + "place/city": { + "title": { + "C": "City", + "en": "City", + "af": "Stad", + "ar": "مدينة", + "ast": "Ciudá", + "bn": "শহর", + "bs": "Grad", + "ca": "Ciutat ", + "cs": "Velkoměsto", + "da": "Storby", + "de": "Großstadt", + "el": "Πόλη", + "en-GB": "City", + "eo": "Urbego", + "es": "Ciudad", + "et": "Linn", + "fa": "شهر", + "fi": "Suuri kaupunki", + "fr": "Grande ville (plus de 100 000 habitants)", + "gl": "Cidade", + "hr": "Grad s više od 100 000 stanovnika", + "hu": "Nagyváros", + "id": "Kota", + "is": "Borg", + "it": "Città", + "ja": "市制地方自治体", + "kn": "ನಗರ", + "ko": "시", + "lt": "Miestas", + "lv": "Lielpilsēta", + "nl": "Stad", + "no": "By", + "pl": "Miasto", + "pt-BR": "Cidade Maior", + "pt": "Capital de distrito", + "ro": "Oraș", + "ru": "Большой город", + "sk": "Veľkomesto", + "sl": "Velemesto", + "sq": "Qytet", + "sr": "Град", + "sv": "Större stad", + "ta": "மாநகரம்", + "te": "నగరం", + "tr": "Şehir", + "uk": "Місто", + "vi": "Thành phố", + "yue": "城", + "zh-CN": "城市", + "zh-HK": "城市", + "zh-TW": "城市", + "zh": "城市", + "mk": "Град", + "bg": "Град над 100 000", + "dv": "ސިިޓީ", + "he": "עיר", + "ms": "Bandar", + "so": "Magaalo" + } + }, + "place/hamlet": { + "title": { + "C": "Hamlet", + "en": "Hamlet", + "af": "Dorpie", + "ar": "قرية صغيرة", + "ast": "Aldea", + "bs": "Zaselak", + "ca": "Llogaret", + "cs": "Osada", + "da": "Mindre beboet område", + "de": "Weiler", + "el": "Οικισμός", + "en-GB": "Hamlet", + "eo": "Vilaĝeto", + "es": "Aldea", + "fa": "دهکده", + "fi": "Pikkukylä", + "fr": "Lieu-dit ou hameau", + "gl": "Aldea", + "hr": "Zaseok", + "hu": "Falucska", + "id": "Dusun", + "is": "Þéttbýliskjarni", + "it": "Paese", + "ja": "Hamlet", + "ko": "반", + "lt": "Viensėdis", + "nl": "Dorp/gehucht/buurtschap", + "no": "Bosetning", + "pl": "Przysiółek", + "pt-BR": "Lugarejo", + "pt": "Aldeia", + "ro": "Cătun", + "ru": "Деревня", + "sk": "Osada", + "sl": "Zaselek", + "sr": "Засеок", + "sv": "By", + "tr": "Mezra", + "uk": "Хутір", + "vi": "Thôn", + "yue": "村仔", + "zh-CN": "小村庄", + "zh-HK": "小村莊", + "zh-TW": "村莊", + "zh": "村庄", + "mk": "Заселок", + "bg": "Махала", + "he": "כפריר", + "ms": "Dukuh" + } + }, + "place/island": { + "title": { + "C": "Island", + "en": "Island", + "af": "Eiland", + "ar": "جزيرة", + "ast": "Islla", + "bn": "দ্বীপ", + "bs": "Ostrvo", + "ca": "Illa", + "cs": "Ostrov", + "da": "Ø", + "de": "Insel", + "el": "Νησί", + "en-GB": "Island", + "eo": "Insulo", + "es": "Isla", + "et": "Saar", + "fa": "جزیره", + "fi": "Saari", + "fr": "Île", + "gl": "Illa", + "hr": "Otok", + "hu": "Sziget", + "id": "Pulau", + "is": "Eyja", + "it": "Isola", + "ja": "島", + "kn": "ದ್ವೀಪ", + "ko": "섬", + "lt": "Sala", + "lv": "Sala", + "nl": "Eiland", + "no": "Øy", + "pl": "Wyspa", + "pt-BR": "Ilha", + "pt": "Ilha", + "ro": "Insulă", + "ru": "Остров", + "sk": "Ostrov", + "sl": "Otok", + "sr": "Острво", + "sv": "Ö", + "ta": "தீவு", + "tr": "Ada", + "uk": "Острів", + "vi": "Đảo", + "yue": "洲", + "zh-CN": "岛屿", + "zh-HK": "島嶼", + "zh-TW": "島嶼", + "zh": "岛屿", + "mk": "Остров", + "bg": "Остров", + "dv": "ރަށް", + "he": "אי", + "ms": "Pulau", + "so": "Jasiirad" + } + }, + "place/isolated_dwelling": { + "title": { + "C": "Isolated Dwelling", + "en": "Isolated Dwelling", + "af": "Afgeleë blyplek", + "ar": "مساكن متفرقة", + "ast": "Vivienda aisllada", + "bs": "Izolirano stanovanje", + "ca": "Vivenda aïllada", + "cs": "Samota", + "da": "Lille beboet område (1-2 hustande)", + "de": "Einzelsiedlung", + "el": "Απομονωμένες Κατοικίες", + "en-GB": "Isolated Dwelling", + "eo": "Solstaranta domo", + "es": "Vivienda aislada", + "fa": "مسکن ایزوله", + "fi": "Yksittäinen asunto", + "fr": "Lieu-dit habité (1 ou 2 habitations)", + "gl": "Vivenda illada", + "hr": "Usamljena kućanstva", + "hu": "Elszigetelt lakás", + "is": "Einöngruð búseta", + "it": "Case Sparse", + "ja": "孤立した(2世帯以下の)居住区", + "ko": "독립 주택", + "lt": "Izoliuota gyvenvietė", + "nl": "Alleenstaande woning", + "pl": "Pojedyncze zabudowania", + "pt-BR": "Moradia Isolada", + "pt": "Habitação isolada", + "ru": "Хутор", + "sk": "Samota", + "sl": "Osamljeno bivališče", + "sr": "Изоловано пребивалиште", + "sv": "Isolerad boplats", + "tr": "Mesken", + "uk": "Маєток", + "vi": "Chỗ ở Hẻo lánh", + "yue": "孤離居所", + "zh-CN": "孤立居所", + "zh-HK": "孤立民居", + "zh-TW": "獨立聚落", + "zh": "孤立的民房", + "mk": "Оддалечено живеалиште", + "bg": "Изолирано жилище", + "he": "מבנה מבודד", + "ms": "Tempat Tinggal Terpencil" + } + }, + "place/locality": { + "title": { + "C": "Locality", + "en": "Locality", + "af": "Ligging", + "ar": "موقع", + "ast": "Llugar despobláu", + "bn": "অঞ্চল", + "bs": "Lokalitet", + "ca": "Indret", + "cs": "Neobydlené místo", + "da": "Lokalitet", + "de": "Örtlichkeit", + "el": "Τοποθεσία", + "en-GB": "Locality", + "eo": "Loko neloĝata", + "es": "Paraje", + "fa": "محل خالی از سکنه", + "fi": "Paikkakunta", + "fr": "Lieu-dit non habité", + "gl": "Lugar", + "hr": "Lokalitet", + "hu": "Lakatlan hely", + "id": "Daerah Sekitar", + "is": "Staðfesti", + "it": "Località", + "ja": "地形名", + "kn": "ಸ್ಥಳ", + "ko": "소재지명", + "lt": "Vietovė", + "nl": "Veldnaam", + "pl": "Miejsce nazwane", + "pt-BR": "Localidade", + "ro": "Localitate", + "ru": "Урочище, местность", + "sk": "Lokalita", + "sl": "Kraj (OSM: ODSVETOVANO)", + "sr": "Локалитет", + "sv": "Plats", + "tr": "Mevkii", + "uk": "Місцевість", + "vi": "Địa phương", + "yue": "地方", + "zh-CN": "地方", + "zh-HK": "地區", + "zh-TW": "地點(無人定居)", + "zh": "地点(无人定居)", + "mk": "Месност", + "bg": "Местност", + "dv": "ރަށްްފުށު", + "he": "אזור בלתי מיושב", + "ms": "Lokaliti", + "so": "Deegaanka" + } + }, + "place/neighbourhood": { + "title": { + "C": "Neighborhood", + "en": "Neighborhood", + "ar": "حي سكني", + "ast": "Barriu", + "ca": "Barri", + "cs": "Část obce", + "da": "Nabolag", + "de": "Wohngegend", + "el": "Γειτονιά", + "en-GB": "Neighborhood", + "eo": "Najbaraĵo", + "es": "Barrio pequeño / Vecindario", + "fa": "همسایگی", + "fi": "Naapurusto", + "fr": "Voisinage", + "gl": "Veciñanza ou subarrio", + "hr": "Susjedstvo", + "hu": "Környék", + "id": "Tetangga", + "is": "Hverfi", + "it": "Quartiere", + "ja": "小字", + "ko": "동", + "lt": "Kaiminystė", + "nl": "Buurt", + "no": "Nabolag", + "pl": "Sąsiedztwo", + "pt-BR": "Vizinhança", + "pt": "Bairro", + "ro": "Cartier", + "ru": "Исторический район со сложившимся именем", + "sk": "Susedstvo", + "sl": "Soseska", + "sv": "Kvarter", + "ta": "நகர்ப்பகுதி", + "tr": "Mahalle", + "uk": "Околиці", + "vi": "Hàng xóm", + "zh-CN": "街坊社区 / 小区", + "zh-HK": "近鄰", + "zh-TW": "鄰里", + "mk": "Маало", + "he": "שכונה", + "ms": "Kejiranan" + } + }, + "place/suburb": { + "title": { + "C": "Borough / Suburb", + "en": "Borough / Suburb", + "ar": "ضاحية", + "cs": "Čtvrť / předměstí", + "da": "Bydistrikt / Bydel", + "de": "Stadtteil / Vorort", + "el": "Προάστιο", + "en-GB": "Borough / Suburb", + "eo": "Suburbo", + "es": "Burgo / Suburbio", + "et": "Eeslinn", + "fi": "Kaupunginosa / lähiö", + "fr": "Banlieue", + "gl": "Barrio ou suburbio", + "hu": "Városrész", + "is": "Jaðarbyggð / Úthverfi", + "it": "Sobborgo", + "ja": "区", + "ko": "자치구 / 근교", + "nl": "Stadsdeel", + "pl": "Dzielnica", + "pt-BR": "Bairro", + "pt": "Subúrbio", + "ro": "Suburbie", + "ru": "Район / Пригород", + "sl": "Predmestje", + "sv": "Förort / Borough", + "tr": "Mahalle", + "uk": "Район в місті/Передмістя", + "vi": "Quận", + "zh-CN": "区(城市)", + "zh-HK": "自治市 / 郊區", + "zh-TW": "郊區", + "mk": "Населба", + "he": "פרוור" + } + }, + "place/town": { + "title": { + "C": "Town", + "en": "Town", + "af": "Dorp", + "ar": "بلدة", + "ast": "Villa", + "bn": "উপনগর", + "bs": "Gradić", + "ca": "Ciutat", + "cs": "Město", + "da": "By", + "de": "Kleinstadt", + "el": "Κωμόπολη", + "en-GB": "Town", + "eo": "Urbo", + "es": "Pueblo / Ciudad pequeña", + "et": "Linn", + "fa": "شهرک", + "fi": "Pieni kaupunki / taajama", + "fr": "Ville (de 10 000 à 100 000 habitants)", + "gl": "Cidade pequena", + "hr": "Gradić", + "hu": "Város", + "id": "Kota", + "is": "Bær", + "it": "Centro abitato tra 10000 e 100000 abitanti", + "ja": "町制地方自治体", + "kn": "ಪಟ್ಟಣ", + "ko": "읍·면·동·로동자구", + "lt": "Miestelis", + "lv": "Pilsēta", + "nl": "Plaats", + "no": "Tettsted", + "pl": "Miasto", + "pt-BR": "Cidade Menor", + "pt": "Cidade / vila", + "ro": "Oraș", + "ru": "Город", + "sk": "Mesto", + "sl": "Mesto", + "sr": "Варош", + "sv": "Mellanstor stad", + "ta": "நகரம்", + "te": "పట్టణం", + "tr": "Kasaba", + "uk": "Місто", + "vi": "Thị xã", + "yue": "鎮", + "zh-CN": "城镇", + "zh-HK": "鎮", + "zh-TW": "鄉鎮市區", + "zh": "城镇", + "mk": "Гратче", + "bg": "Град под 100 000", + "dv": "އަވަށް", + "he": "עירייה", + "ms": "Bandar", + "so": "Magaalo" + } + }, + "place/village": { + "title": { + "C": "Village", + "en": "Village", + "af": "Dorpie", + "ar": "قرية", + "ast": "Pueblu", + "bn": "গ্রাম", + "bs": "Selo", + "ca": "Poble", + "cs": "Vesnice", + "da": "Landsby", + "de": "Dorf", + "el": "Χωριό", + "en-GB": "Village", + "eo": "Vilaĝo", + "es": "Población / Aldea", + "et": "Küla", + "fa": "روستا", + "fi": "Kylä", + "fr": "Village (de 100 à 10 000 habitants)", + "gl": "Vila", + "hr": "Selo", + "hu": "Falu", + "id": "Desa", + "is": "Þorp", + "it": "Villaggio", + "ja": "村制の地方自治体", + "kn": "ಹಳ್ಳಿ", + "ko": "리·통", + "lt": "Kaimas", + "lv": "Ciems", + "nl": "Dorp", + "no": "Tettsted", + "pl": "Wieś", + "pt-BR": "Povoado", + "pt": "Sede de Freguesia", + "ro": "Sat", + "ru": "Село (более 300 жителей)", + "sk": "Dedina", + "sl": "Vas", + "sr": "Село", + "sv": "Mindre samhälle", + "ta": "கிராமம்", + "te": "గ్రామం", + "tr": "Köy", + "uk": "Село", + "vi": "Làng", + "yue": "村", + "zh-CN": "村庄", + "zh-HK": "鄉村", + "zh-TW": "村里", + "zh": "村庄", + "mk": "Село", + "bg": "Село", + "he": "כפר", + "ms": "Kampung" + } + }, + "place/square": { + "title": { + "C": "Square", + "en": "Square", + "ar": "ساحة", + "ast": "Plaza", + "ca": "Plaça", + "cs": "Náměstí", + "da": "Plads", + "de": "Platz", + "el": "Πλατεία", + "en-GB": "Square", + "eo": "Placo", + "es": "Plaza cívica", + "fa": "میدانگاه (square)", + "fi": "Aukio", + "fr": "Place", + "gl": "Praza", + "hu": "Tér", + "is": "Torg", + "it": "Piazza", + "ja": "広場(都心部)", + "ko": "광장", + "lv": "Skvērs", + "nl": "Plein", + "no": "Torg", + "pl": "Plac publiczny", + "pt-BR": "Praça Pavimentada", + "pt": "Praça ou largo", + "ro": "Piață", + "ru": "Площадь", + "sl": "Trg", + "sr": "Трг", + "sv": "Torg", + "ta": "சதுக்கம்", + "tr": "Meydan", + "uk": "Майдан", + "vi": "Quảng trường", + "yue": "前地", + "zh-CN": "广场", + "zh-HK": "廣場", + "zh-TW": "廣場", + "mk": "Плоштад", + "he": "כיכר" + } + }, + "place/farm": { + "title": { + "C": "Farm", + "en": "Farm", + "ar": "مزرعة", + "ast": "Granxa", + "ca": "Granja", + "cs": "Zemědělská usedlost", + "da": "Gård", + "de": "Bauernhof", + "el": "Φάρμα", + "en-GB": "Farm", + "eo": "Farmejo (setlejo)", + "es": "Granja", + "et": "farm", + "fa": "مزرعه", + "fi": "Maatila", + "fr": "Ferme isolée", + "gl": "Granxa", + "hu": "Tanya", + "id": "Peternakan", + "is": "Býli", + "it": "Azienda agricola", + "ja": "農場", + "kn": "ತೋಟ", + "ko": "농장", + "lt": "Ūkis", + "lv": "Zemnieku saimniecība", + "nl": "Boerderij", + "no": "Gård", + "pl": "Farma/gospodarstwo rolne", + "pt-BR": "Fazenda", + "pt": "Quinta", + "ro": "Fermă", + "ru": "Ферма", + "sk": "Farma", + "sl": "Kmetija", + "sr": "Фарма", + "sv": "Gård", + "ta": "பண்ணை", + "tr": "Çiftlik", + "uk": "Ферма", + "vi": "Trại", + "yue": "農場", + "zh-CN": "农场", + "zh-HK": "農場", + "zh-TW": "農場", + "mk": "Фарма", + "he": "חווה", + "ms": "Ladang" + } + }, + "place/quarter": { + "title": { + "C": "Sub-Borough / Quarter", + "en": "Sub-Borough / Quarter", + "cs": "Městská čtvrť", + "da": "Nabolag / Kvarter", + "de": "Gegend / Quartier", + "en-GB": "Sub-Borough / Quarter", + "eo": "Kvartalo", + "es": "Sub-burgo / Barrio grande - Quarter", + "fi": "Alakeskus", + "fr": "Quartier", + "gl": "Sub-municipio / Distrito", + "is": "Úthverfishluti / Hverfi", + "it": "Sotto-distretto / Quartiere", + "ja": "大字 / (市内の)町", + "ko": "하위 자치구 / 지구", + "nl": "Wijk", + "pl": "Kwartał", + "pt-BR": "Sub-bairro", + "pt": "Zona de cidade", + "ro": "Cartier", + "ru": "Подрайон / квартал", + "sl": "Mestna četrt", + "sv": "Kvarter / Under-Borough", + "tr": "Semt", + "uk": "Мікро-район/Квартал", + "vi": "Khu", + "zh-CN": "街道办/片区", + "zh-HK": "自治市分區 / 小區", + "zh-TW": "自治市區", + "mk": "Маало / Четврт", + "he": "רובע" + } + }, + "place/islet": { + "title": { + "C": "Islet", + "en": "Islet", + "ar": "جزيرة صغيرة", + "cs": "Ostrůvek", + "da": "Holm", + "de": "Kleine Insel", + "el": "Νησίδα", + "en-GB": "Islet", + "eo": "Insuleto", + "es": "Islote", + "et": "Laid", + "fi": "Luoto", + "fr": "Îlot", + "gl": "Illote", + "hu": "Szigetecske", + "is": "Hólmi", + "it": "Isoletta", + "ja": "小島", + "ko": "작은 섬", + "nl": "Eilandje < 1 km²", + "no": "Liten øy", + "pl": "Wysepka na wodzie", + "pt-BR": "Ilhota", + "pt": "Ilhéu", + "ru": "Островок", + "sv": "Holme", + "uk": "Острівець", + "vi": "Đảo Nhỏ", + "yue": "洲仔", + "zh-CN": "小岛", + "zh-TW": "小島", + "mk": "Островче", + "he": "איון", + "ms": "Anak Pulau" + } + }, + "place/plot": { + "title": { + "C": "Plot", + "en": "Plot", + "ar": "قطعة الأرض", + "cs": "Parcela", + "da": "Matrikel", + "de": "Grundstück", + "en-GB": "Plot", + "eo": "Parcelo", + "es": "Parcela", + "et": "Krunt", + "fi": "Tontti", + "fr": "Parcelle", + "gl": "Parcela", + "hu": "Parcella", + "is": "Skiki", + "it": "Particella catastale", + "ja": "小区画", + "ko": "필지", + "nl": "Perceel", + "no": "Tomt", + "pl": "Działka", + "pt-BR": "Lote", + "pt": "Lote de terreno", + "ru": "Земельный участок", + "sv": "Tomt", + "uk": "Ділянка", + "vi": "Miếng đất", + "zh-TW": "地籍", + "mk": "Парцела", + "he": "חלקה", + "ms": "Plot" + } + }, + "place/city_block": { + "title": { + "C": "City Block", + "en": "City Block", + "cs": "Městský blok", + "de": "Häuserblock", + "el": "Οικοδομικό Τετράγωνο", + "eo": "Dombloko", + "es": "Manzana urbana", + "fi": "Kortteli", + "fr": "Îlot urbain", + "gl": "Mazá urbana", + "hu": "Várostömb", + "is": "Byggingareitur", + "it": "Isolato", + "ja": "街区(日本では未定義)", + "ko": "도시 블록", + "nl": "Huizenblok", + "no": "Bykvartal", + "pl": "Kwartał", + "pt-BR": "Quarteirão", + "pt": "Quarteirão", + "sv": "Kvarter", + "uk": "Квартал в місті", + "zh-TW": "城市街區", + "mk": "Градски блок", + "he": "מבנן עירוני" + } + }, + "shop/alcohol": { + "title": { + "C": "Liquor Store", + "en": "Liquor Store", + "af": "Drankwinkel", + "ar": "متجر خمور", + "ast": "Llicorería", + "bs": "Prodavnica alkoholnih pića", + "ca": "Botiga de licors", + "cs": "Prodejna alkoholu", + "da": "Vinforhandler", + "de": "Spirituosenladen", + "el": "Κάβα Ποτών", + "en-GB": "Off licence (Alcohol shop)", + "eo": "Alkohola vendejo", + "es": "Licorería", + "et": "Alkoholipood", + "fa": "مغازه مشروبات الکلی", + "fi": "Alkoholimyymälä", + "fr": "Magasin de vente d'alcool", + "gl": "Licoraría", + "hr": "Prodavaonica alkoholnih pića", + "hu": "Alkoholüzlet", + "id": "Toko Minuman", + "is": "Vínbúð", + "it": "Negozio di liquori", + "ja": "酒店", + "kn": " ಸಾರಾಯಿ ಅಂಗಡಿ", + "ko": "주류상", + "lt": "Alkoholinių gėrimų parduotuvė", + "lv": "Alkoholisko dzērienu veikals", + "nl": "Slijterij", + "no": "Vinutsalg", + "pl": "Sklep monopolowy", + "pt-BR": "Loja de alcoólicos licenciada", + "pt": "Loja de bebidas alcoólicas", + "ro": "Magazin de Băuturi Alcoolice", + "ru": "Алкогольный магазин", + "sk": "Obchod s alkoholom", + "sl": "Trgovina z alkoholnimi pijačami", + "sr": "Продавница алкохолних пића", + "sv": "Vin-och-spritaffär", + "ta": "மதுபானக் கடை", + "tr": "İçki Dükkanı", + "uk": "Алкогольні напої", + "vi": "Tiệm Rượu", + "yue": "酒莊", + "zh-CN": "酒水店", + "zh-HK": "酒類專賣店", + "zh-TW": "酒類專賣店", + "zh": "酒品店", + "mk": "Продавница за алкохолни пијалаци", + "bg": "Магазин за алкохол", + "he": "חנות משקאות חריפים" + } + }, + "shop/anime": { + "title": { + "C": "Anime / Manga Shop", + "en": "Anime / Manga Shop", + "ar": "متجر أنيمي / مانغا", + "cs": "obchod s Anime / Manga", + "de": "Anime-, Manga-Geschäft", + "es": "Tienda de anime / manga", + "fi": "Anime-/mangaliike", + "fr": "Boutique de manga et anime", + "ja": "アニメショップ", + "ko": "애니메이션/만화 가게", + "pl": "Sklep z mangą i anime", + "pt-BR": "Loja de Anime / Manga", + "pt": "Loja de animé", + "uk": "Аніме/манга магазин", + "vi": "Tiệm Anime/Manga", + "zh-CN": "动漫/漫画店", + "zh-TW": "動畫/漫畫店", + "mk": "Продавница за аниме/манга", + "he": "חנות אנימה/מנגה" + } + }, + "shop/antiques": { + "title": { + "C": "Antiques Shop", + "en": "Antiques Shop", + "ar": "متجر تحف وأنتيكات", + "ast": "Anticuariu", + "ca": "Botiga d'antiguitats", + "cs": "Starožitnictví", + "da": "Antikvitetsforretning", + "de": "Antiquitätenhändler", + "el": "Παλαιοπωλείο", + "en-GB": "Antiques Shop", + "eo": "Antikvaĵa vendejo", + "es": "Tienda de antigüedades", + "et": "Antikvariaat", + "fa": "فروشگاه عتیقه‌جات", + "fi": "Antiikkiliike", + "fr": "Antiquaire", + "gl": "Tenda de antigüidades", + "hr": "Antikvarijat", + "hu": "Régiségkereskedés", + "id": "Toko Barang Antik", + "is": "Antíkverslun", + "it": "Antiquario", + "ja": "古美術品店", + "ko": "골동품 가게", + "lt": "Atikvarų parduotuvė", + "lv": "Antikvariāts", + "nl": "Antiquair", + "no": "Antikvariat / antikvitetshandel", + "pl": "Antykwariat", + "pt-BR": "Loja de Antiguidades", + "pt": "Loja de antiguidades", + "ro": "Anticariat", + "ru": "Магазин антиквариата", + "sk": "Obchod so tarožitnosťami", + "sl": "Starinarnica", + "sr": "Антикварница", + "sv": "Antikaffär", + "ta": "பழம்பொருள் அங்காடி", + "tr": "Antika Dükkanı", + "uk": "Антикварний магазин ", + "vi": "Tiệm Đồ Cổ", + "zh-CN": "古董店", + "zh-HK": "古董店", + "zh-TW": "古董店", + "mk": "Старинарница", + "he": "חנות עתיקות" + } + }, + "shop/art": { + "title": { + "C": "Art Store", + "en": "Art Store", + "ar": "متجر الفنون", + "ast": "Galería d'arte", + "ca": "Botiga d'art", + "cs": "Obchod s uměním", + "da": "Kunstbutik", + "de": "Kunsthandlung", + "en-GB": "Art Shop", + "eo": "Artaĵa vendejo", + "es": "Tienda de arte", + "et": "Kunstitarvete kauplus", + "fa": "فروشگاه آثار هنری", + "fi": "Taideliike", + "fr": "Marchand d'art", + "gl": "Tenda de arte", + "hr": "Trgovina umjetninama", + "hu": "Műalkotásbolt", + "is": "Listmunaverslun", + "it": "Negozio di opere d'arte", + "ja": "美術品販売店", + "ko": "미술품 가게", + "lt": "Meno parduotuvė", + "lv": "Mākslas veikals", + "nl": "Kunstwinkel", + "no": "Kunsthandel", + "pl": "Sklep z dziełami sztuki", + "pt-BR": "Loja de Arte", + "pt": "Loja de objetos de arte", + "ro": "Magazin de Artă", + "ru": "Магазин произведений искусства", + "sk": "Umelecký obchod", + "sl": "Trgovina z umetninami", + "sv": "Konstaffär", + "ta": "கலை அங்காடி", + "tr": "Sanat Mağazası", + "uk": "Художній салон", + "vi": "Tiệm Nghệ phẩm", + "zh-CN": "艺术品店", + "zh-HK": "藝術商店", + "zh-TW": "藝術商店", + "mk": "Продавница за уметнички дела", + "he": "חנות לחפצי אומנות" + } + }, + "shop/baby_goods": { + "title": { + "C": "Baby Goods Store", + "en": "Baby Goods Store", + "ar": "متجر سلع أطفال", + "ca": "Botiga per a nadons", + "cs": "Potřeby pro děti", + "da": "Babyudstyrsbutik", + "de": "Babysachengeschäft", + "el": "Κατάστημα Βρεφικών Ειδών", + "en-GB": "Baby Goods Shop", + "eo": "Bebaĵa vendejo", + "es": "Tienda de productos para bebé", + "et": "Beebipood", + "fa": "فروشگاه کالای کودک", + "fi": "Vauvatarvikeliike", + "fr": "Magasin de produits pour bébés", + "gl": "Tenda de produtos para meniños", + "hr": "Trgovina za bebe", + "hu": "Bababolt", + "id": "Toko Perlengkapan Bayi", + "is": "Barnavöruverslun", + "it": "Negozio di prodotti per l'infanzia", + "ja": "赤ちゃん用品店", + "ko": "유아 용품 가게", + "lt": "Vaikų prekių parduotuvė", + "nl": "Babyartikelenwinkel", + "no": "Babyutstyrsbutikk", + "pl": "Sklep z artykułami dla dzieci i niemowląt", + "pt-BR": "Loja de Artigos para Bebês", + "pt": "Loja de acessórios para bebés", + "ro": "Magazin de Produse pentru Bebeluși", + "ru": "Магазин детских товаров", + "sk": "Obchod s detskými potrebami", + "sl": "Trgovina za otroke", + "sv": "Babyprodukter", + "tr": "Bebek Malzemeleri Mağazası", + "uk": "Товари для немовлят", + "vi": "Tiệm Đồ Sơ sinh", + "zh-CN": "婴儿用品店", + "zh-HK": "嬰兒用品店", + "zh-TW": "嬰兒用品店", + "mk": "Продавница за бебешка опрема", + "he": "חנות לדברי תינוקות" + } + }, + "shop/bag": { + "title": { + "C": "Bag/Luggage Store", + "en": "Bag/Luggage Store", + "ar": "متجر حقائب وأمتعة", + "ca": "Botiga d'equipatges", + "cs": "Obchod se zavazadly", + "da": "Taske/Kuffertbutik", + "de": "Taschenladen", + "el": "Κατάστημα αποσκευών", + "en-GB": "Bag/Luggage Shop", + "eo": "Saka/valiza vendejo", + "es": "Tienda de carteras / equipaje", + "et": "Kotipood", + "fa": "فروشگاه کیف/چمدان", + "fi": "Matkalaukkumyymälä", + "fr": "Bagagerie", + "gl": "Tenda de maletas", + "hr": "Trgovina sa torbama", + "hu": "Táska- és bőröndbolt", + "id": "Toko Tas/Koper", + "is": "Töskubúð", + "it": "Negozio di borse e valigie", + "ja": "バッグ/カバン店", + "ko": "가방/여행가방 가게", + "lt": "Kuprinių/lagaminų parduotuvė", + "lv": "Somu / Čemodānu veikals", + "nl": "Zak-/Reiskofferwinkel", + "no": "Veskebutikk", + "pl": "Sklep z torebkami/walizkami", + "pt-BR": "Loja de Bolsas/Malas", + "pt": "Loja de malas / bagagem", + "ro": "Magazin de Bagaje", + "ru": "Магазин сумок и саквояжа", + "sk": "Obchod s kuframi", + "sl": "Trgovina za prtljago", + "sv": "Väskaffär", + "tr": "Çanta/Valiz Mağazası", + "uk": "Магазин з продажу валіз", + "vi": "Tiệm Túi", + "zh-CN": "箱包店", + "zh-HK": "袋/行李箱店", + "zh-TW": "包包/行李店", + "mk": "Продавница за чанти, торби и куфери", + "he": "חנות מזוודות" + } + }, + "shop/bakery": { + "title": { + "C": "Bakery", + "en": "Bakery", + "af": "Bakkery", + "ar": "مخبز", + "ast": "Panadería", + "bn": "বেকারি", + "bs": "Pekara", + "ca": "Fleca", + "cs": "Pekařství", + "da": "Bager", + "de": "Bäckerei", + "el": "Αρτοποιείο", + "en-GB": "Bakery", + "eo": "Panejo", + "es": "Panadería", + "et": "Pagariäri", + "fa": "نانوایی", + "fi": "Leipomo", + "fr": "Boulangerie", + "gl": "Panadaría", + "hr": "Pekara", + "hu": "Pékség", + "id": "Toko Roti", + "is": "Bakarí", + "it": "Panificio", + "ja": "パン屋", + "kn": "ಅಟ್ಟಂಗಡಿ", + "ko": "제과점", + "lt": "Kepykla", + "lv": "Konditoreja", + "nl": "Bakkerij", + "no": "Bakeri", + "pl": "Piekarnia", + "pt-BR": "Padaria", + "pt": "Padaria", + "ro": "Brutărie", + "ru": "Булочная", + "sk": "Pekáreň", + "sl": "Pekarna", + "sq": "Furrë buke", + "sr": "Пекара", + "sv": "Bageri", + "ta": "அடுமனை", + "tr": "Fırın", + "uk": "Булочна", + "vi": "Tiệm Bánh", + "yue": "麪飽舖同餅家", + "zh-CN": "面包店", + "zh-HK": "麵包西餅店", + "zh-TW": "麵包店", + "zh": "面包店", + "mk": "Пекарница", + "bg": "Пекарна", + "he": "מאפייה" + } + }, + "shop/bathroom_furnishing": { + "title": { + "C": "Bathroom Furnishing Store", + "en": "Bathroom Furnishing Store", + "ar": "متجر أثاث الحمام", + "ca": "Botiga de mobles de bany", + "cs": "Vybavení koupelen", + "da": "Badeværelseindretningsbutik", + "de": "Badeinrichtungsgeschäft", + "el": "Κατάστημα εξοπλισμού μπάνιου", + "en-GB": "Bathroom Furnishing Shop", + "eo": "Lavĉambr-akcesoraĵa vendejo", + "es": "Tienda de muebles de baño", + "et": "Santehnika kauplus", + "fa": "فروشگاه لوازم حمام", + "fi": "Kylpyhuoneliike", + "fr": "Fournitures pour salles de bain", + "gl": "Tenda de mobles de baño", + "hr": "Prodavaonica kupaonske opreme", + "hu": "Fürdőszobabútor-bolt", + "id": "Toko Perlengkapan Kamar Mandi", + "is": "Baðinnréttingaverslun", + "it": "Negozio di prodotti per il bagno", + "ja": "浴室用品店", + "ko": "화장실 기구 가게", + "lt": "Vonios baldų parduotuvė", + "nl": "Badkamermeubelwinkel", + "no": "Baderomsbutikk", + "pl": "Sklep z wyposażeniem łazienek", + "pt-BR": "Loja de Mobiliário de Banheiros", + "pt": "Loja de assessórios para casas de banho", + "ro": "Magazin de Mobilier pentru Băi", + "ru": "Магазин продающий мебель для ванных комнат", + "sk": "Obchod s kúpelňami", + "sl": "Trgovina s kopalniško opremo", + "sv": "Badrumsinredning", + "tr": "Züccaciye", + "uk": "Магазин сантехніки", + "vi": "Tiệm Bán đồ Phòng tắm", + "zh-CN": "浴室家具店", + "zh-HK": "浴室配件店", + "zh-TW": "衛浴用品店", + "mk": "Продавница за санитарии", + "he": "חנות רהיטי שירותים/מקלחת" + } + }, + "shop/beauty": { + "title": { + "C": "Beauty Shop", + "en": "Beauty Shop", + "af": "Skoonheidswinkel", + "ar": "محل تجميل", + "ast": "Cosmética", + "bs": "Salon ljepote", + "ca": "Botiga de cosmètics", + "cs": "Kosmetický salón", + "da": "Parfumebutik", + "de": "Schönheitssalon", + "el": "Κατάστημα Ομορφιάς", + "en-GB": "Beauty Shop", + "eo": "Salono de beligado", + "es": "Salón de belleza", + "et": "Ilusalong", + "fa": "فروشگاه زیبایی", + "fi": "Kauneushoitola", + "fr": "Salon de beauté", + "gl": "Salón de beleza", + "hr": "Kozmetički salon", + "hu": "Szépségszalon", + "id": "Salon Kecantikan", + "is": "Fegrunarstofa", + "it": "Negozio di articoli di bellezza", + "ja": "美容サービス", + "ko": "뷰티 샵", + "lt": "Grožio salonas", + "lv": "Skaistumveikals", + "nl": "Schoonheidssalon", + "no": "Skjønnhetsbutikk", + "pl": "Salon urody", + "pt-BR": "Salão de Beleza", + "pt": "Centro de estética", + "ro": "Magazin Beauty", + "ru": "Салон красоты", + "sk": "Bižutéria", + "sl": "Lepotilni salon", + "sr": "Салон лепоте", + "sv": "Skönhetssalong", + "ta": "அழகுசாதனக் கடை", + "tr": "Güzellik Salonu", + "uk": "Cалон краси", + "vi": "Tiệm Mỹ phẩm", + "yue": "美容院", + "zh-CN": "美容店", + "zh-HK": "美容院", + "zh-TW": "美容店", + "zh": "美容店", + "mk": "Салон за убавина", + "bg": "Козметик", + "he": "חנות מוצרי יופי/טיפוח" + } + }, + "shop/bed": { + "title": { + "C": "Bedding/Mattress Store", + "en": "Bedding/Mattress Store", + "ar": "متجر مراتب ولوازم الفراش", + "ca": "Botiga de matalassos", + "cs": "Prodejna postelí", + "da": "Sengetøj / Madras forhandler", + "de": "Betten/Matratzengeschäft", + "el": "Κατάστημα κρεβατιών/στρωμάτων", + "en-GB": "Bed Shop", + "eo": "Lita/matraca vendejo", + "es": "Tienda de ropa de cama/colchón", + "et": "Magamistoa kauba pood", + "fa": "فروشگاه کالای خواب/ تشک", + "fi": "Vuodetarvikeliike", + "fr": "Magasin de literie", + "gl": "Tenda de colchóns/roupa de cama", + "hr": "Trgovina opreme za krevete", + "hu": "Ágy- és matracbolt", + "id": "Toko Selimut/Matras", + "is": "Rúm/Dýnuverslun", + "it": "Negozio di letti/materassi", + "ja": "寝具店", + "ko": "침구/매트리스 가게", + "lv": "Gultasveļas / Matraču veikals", + "nl": "Bed-/Matrassenwinkel", + "no": "Sengebutikk", + "pl": "Sklep z łóżkami/materacami", + "pt-BR": "Loja de Camas e Colchões", + "pt": "Loja de camas / colchões", + "ro": "Magazin de Saltele", + "ru": "Магазин матрасов и постельных принадлежностей", + "sk": "Obchod s posteľami/matracmi", + "sl": "Trgovina s posteljnino in žimnicami", + "sv": "Sängaffär", + "tr": "Yatak Mağazası", + "uk": "Магазин постільних приналежнастей ", + "vi": "Tiệm Nệm", + "zh-CN": "床上用品店", + "zh-HK": "寢具/床褥店", + "zh-TW": "床具/寐具店", + "mk": "Продавница за кревети и постелнина", + "he": "חנות מזרנים" + } + }, + "shop/beverages": { + "title": { + "C": "Beverage Store", + "en": "Beverage Store", + "af": "Koeldrankwinkel", + "ar": "محل مشروبات", + "ast": "Venta de bebíes", + "bs": "Prodavnica pića", + "ca": "Botiga de begudes", + "cs": "Prodejna nápojů", + "da": "Vinforhandler", + "de": "Getränkehandel", + "el": "Αναψυκτήριο", + "en-GB": "Beverages Shop", + "eo": "Trinkaĵa vendejo", + "es": "Tienda de bebidas", + "et": "Joogikauplus", + "fa": "فروشگاه آشامیدنی", + "fi": "Viinakauppa", + "fr": "Magasin de boissons", + "gl": "Tenda de bebidas", + "hr": "Trgovina s pićima", + "hu": "Italbolt", + "id": "Toko Minuman", + "is": "Drykkjarbúð", + "it": "Negozio di bevande", + "ja": "飲料店", + "ko": "음료 가게", + "lt": "Gėrimų parduotuvė", + "lv": "Dzērienu veikals", + "nl": "Drankenwinkel", + "no": "Øl- og vinutsalg", + "pl": "Sklep z napojami", + "pt-BR": "Loja de Bebidas", + "pt": "Loja de bebidas", + "ro": "Magazin de Băuturi", + "ru": "Магазин по продаже алкогольных и безалкогольных напитков", + "sk": "Obchod s nápojmi", + "sl": "Trgovina s pijačami", + "sr": "Продавница пића", + "sv": "Dryckaffär", + "tr": "İçecek Dükkanı", + "uk": "Напої", + "vi": "Tiệm Đồ uống", + "yue": "飲品舖", + "zh-CN": "饮料店", + "zh-HK": "飲品店", + "zh-TW": "飲品店", + "zh": "饮品店", + "mk": "Продавница за пијалаци", + "bg": "Магазин за алкохол и цигари", + "he": "חנות משקאות" + } + }, + "shop/bicycle": { + "title": { + "C": "Bicycle Shop", + "en": "Bicycle Shop", + "af": "Fietswinkel", + "ar": "متجر دراجات هوائية", + "ast": "Tienda de ciclismu", + "bn": "সাইকেলের দোকান", + "bs": "Prodavnica bicikala", + "ca": "Botiga de bicicletes", + "cs": "Cykloprodejna", + "da": "Cykelbutik", + "de": "Fahrradladen", + "el": "Κατάστημα Ποδηλάτων", + "en-GB": "Bicycle Shop", + "eo": "Bicikla vendejo", + "es": "Tienda de bicicletas", + "et": "Rattapood", + "fa": "فروشگاه دوچرخه", + "fi": "Pyöräliike", + "fr": "Magasin de vélos", + "gl": "Tenda de bicicletas", + "hr": "prodavaonica bicikala", + "hu": "Kerékpárbolt", + "id": "Toko Sepeda", + "is": "Hjólabúð", + "it": "Negozio di biciclette", + "ja": "自転車店", + "ko": "자전거 가게", + "lt": "Dviračių parduotuvė", + "lv": "Velo veikals", + "nl": "Fietswinkel", + "no": "Sykkelbutikk", + "pl": "Sklep rowerowy", + "pt-BR": "Loja de Bicicletas", + "pt": "Loja de bicicletas", + "ro": "Magazin de Biciclete", + "ru": "Веломагазин", + "sk": "Cykloobchod", + "sl": "Kolesarska trgovina", + "sr": "Продавница бицикала", + "sv": "Cykelaffär", + "ta": "மிதிவண்டிக் கடை", + "tr": "Bisiklet Mağazası", + "uk": "Веломагазин", + "vi": "Tiệm Xe đạp", + "yue": "單車舖", + "zh-CN": "自行车店", + "zh-HK": "單車店", + "zh-TW": "單車店", + "zh": "自行车店", + "mk": "Продавница за велосипеди", + "bg": "Магазин за велосипеди", + "he": "חנות אופניים", + "ms": "Kedai Basikal" + } + }, + "shop/bookmaker": { + "title": { + "C": "Bookmaker", + "en": "Bookmaker", + "ar": "مكتب رهانات", + "ast": "Encuadernador", + "ca": "Cusidor de llibres", + "cs": "Sázková kancelář", + "da": "Bookmaker", + "de": "Wettbüro", + "el": "Πρακτορείο στοιχημάτων", + "en-GB": "Bookmaker", + "eo": "Vetperistejo", + "es": "Corredor de apuestas", + "et": "Trükkal", + "fa": "دلال شرط‌بندی", + "fi": "Kirjapaino", + "fr": "Bookmaker", + "gl": "Corredor de apostas", + "hr": "Kladioničar", + "hu": "Fogadóiroda", + "id": "Juru Taruh", + "is": "Veðmangari", + "it": "Agenzia di scommesse", + "ja": "公営競技投票券売り場", + "ko": "마권업자", + "lt": "Knygrišys", + "nl": "Bookmaker (gokkantoor)", + "no": "Bookmaker", + "pl": "Bukmacher", + "pt-BR": "Casa de Apostas", + "pt": "Casa de apostas", + "ro": "Atelier de Cărți", + "ru": "Букмекерская контора", + "sk": "Stávková kancelária", + "sl": "Stavnica", + "sr": "Кладионичар", + "sv": "Vadslagning", + "tr": "Bahis Merkezi", + "uk": "Видавництво", + "vi": "Phòng Đánh cá Ngựa", + "zh-CN": "书商", + "zh-HK": "投注站", + "zh-TW": "投注處", + "mk": "Обложувалница", + "he": "כורך ספרים" + } + }, + "shop/books": { + "title": { + "C": "Book Store", + "en": "Book Store", + "ar": "متجر كتب", + "ast": "Llibrería", + "ca": "Llibreria", + "cs": "Knihkupectví", + "da": "Boghandler", + "de": "Buchladen", + "el": "Βιβλιοπωλείο", + "en-GB": "Book Shop", + "eo": "Libra vendejo", + "es": "Librería (venta de libros)", + "et": "Raamatupood", + "fa": "کتاب‌فروشی", + "fi": "Kirjakauppa", + "fr": "Librairie", + "gl": "Libraría", + "hi": "किताबों की दुकान", + "hr": "Knjižara", + "hu": "Könyvesbolt", + "id": "Toko Buku", + "is": "Bókabúð", + "it": "Libreria", + "ja": "本屋", + "ko": "서점", + "lt": "Knygynas", + "lv": "Grāmatu veikals", + "nl": "Boekwinkel", + "no": "Bokhandel", + "pl": "Księgarnia", + "pt-BR": "Livraria", + "pt": "Livraria", + "ro": "Magazin de Cărți", + "ru": "Книжный магазин", + "sk": "Kníhkupectvo", + "sl": "Knjigarna", + "sv": "Bokhandel", + "ta": "புத்தகக் கடை", + "tr": "Kitapçı", + "uk": "Книжковий магазин", + "vi": "Hiệu Sách", + "zh-CN": "书店", + "zh-HK": "書店", + "zh-TW": "書店", + "mk": "Книжарница", + "he": "חנות ספרים" + } + }, + "shop/butcher": { + "title": { + "C": "Butcher", + "en": "Butcher", + "af": "Slagter", + "ar": "جزار", + "ast": "Carnicería", + "bn": "কসাই", + "bs": "Mesar", + "ca": "Carnisseria", + "cs": "Řeznictví", + "da": "Slagter", + "de": "Metzger", + "el": "Κρεοπωλείο", + "en-GB": "Butcher", + "eo": "Vianda vendejo", + "es": "Carnicería", + "et": "Lihapood", + "fa": "قصابی", + "fi": "Lihakauppa", + "fr": "Boucher", + "gl": "Carnizaría", + "hr": "Mesnica", + "hu": "Hentes", + "id": "Penjagalan", + "is": "Slátrari", + "it": "Macellaio", + "ja": "精肉店", + "ko": "정육점", + "lt": "Mėsinė", + "lv": "Miesnieks", + "nl": "Slagerij", + "no": "Slakter", + "pl": "Sklep mięsny", + "pt-BR": "Açougue", + "pt": "Talho", + "ro": "Măcelărie", + "ru": "Мясной", + "sk": "Mäsiarstvo", + "sl": "Mesar", + "sr": "Месар", + "sv": "Slaktare", + "ta": "இறைச்சிக் கடை", + "tr": "Kasap", + "uk": "М’ясна лавка", + "vi": "Hàng Thịt", + "yue": "肉舖", + "zh-CN": "肉店", + "zh-HK": "肉舖", + "zh-TW": "肉販", + "zh": "肉贩", + "mk": "Месарница", + "bg": "Колбаси", + "he": "קצב" + } + }, + "shop/candles": { + "title": { + "C": "Candle Shop", + "en": "Candle Shop", + "ar": "متجر الشموع", + "ca": "Botiga d'espelmes", + "cs": "Obchod se svíčkami", + "da": "Stearinlysforhandler", + "de": "Kerzengeschäft", + "el": "Κατάστημα Κεριών", + "en-GB": "Candle Shop", + "eo": "Kandela vendejo", + "es": "Tienda de velas", + "et": "Küünlapood", + "fa": "شمع فروشی", + "fi": "Kynttiläkauppa", + "fr": "Magasin de bougies", + "gl": "Tenda de velas", + "hr": "Prodavaonica svijeća", + "hu": "Gyertya- és mécsesbolt", + "id": "Toko Lilin", + "is": "Kertabúð", + "it": "Negozio di candele", + "ja": "キャンドル専門店", + "ko": "양초 가게", + "lt": "Žvakių parduotuvė", + "lv": "Sveču veikals", + "nl": "Kaarsenwinkel", + "no": "Lysstøperi", + "pl": "Sklep ze świecami", + "pt-BR": "Loja de Velas", + "pt": "Loja de velas", + "ro": "Magazin de Lumânări", + "ru": "Свечной магазин", + "sk": "Obchod so svičkami", + "sl": "Svečarstvo", + "sr": "Свећарница", + "sv": "Ljusaffär", + "tr": "Mum Mağazası", + "uk": "Магазин свічок", + "vi": "Tiệm Cây nến", + "zh-CN": "蜡烛店", + "zh-HK": "蠟燭店", + "zh-TW": "燈具店", + "mk": "Свеќарница", + "he": "חנות נרות" + } + }, + "shop/car": { + "title": { + "C": "Car Dealership", + "en": "Car Dealership", + "af": "Voertuighandelaar", + "ar": "وكالة سيارات", + "ast": "Venta d'automóviles", + "bn": "গাড়ির ডিলারশিপ", + "bs": "Salon automobila", + "ca": "Concessionari de cotxes", + "cs": "Prodejna aut", + "da": "Bilforhandler", + "de": "Autohändler", + "el": "Εμπορία Αυτοκινήτων", + "en-GB": "Car Dealership", + "eo": "Aŭtomobila vendejo", + "es": "Concesionario de automóviles", + "et": "Autopood", + "fa": "نمایندگی خودرو", + "fi": "Autokauppa", + "fr": "Concessionnaire automobile", + "gl": "Concesionario de automóbiles", + "hr": "Prodavaonica automobila", + "hu": "Autókereskedés", + "id": "Dealer Mobil", + "is": "Bílabúð", + "it": "Concessionario", + "ja": "カーディーラー", + "ko": "자동차 대리점", + "lt": "Automobilių prekybos atstovybė", + "lv": "Auto dīleris", + "nl": "Autoshowroom", + "no": "Bilforhandler", + "pl": "Sprzedaż samochodów", + "pt-BR": "Revenda de Automóveis", + "pt": "Loja de automóveis", + "ro": "Magazin de Mașini", + "ru": "Автодилер", + "sk": "Predajňa áut", + "sl": "Avtomobilski salon", + "sr": "Салон аутомобила", + "sv": "Bilhandlare", + "ta": "வாகன விற்பனையகம்", + "tr": "Oto Galeri", + "uk": "Автосалон", + "vi": "Tiệm Xe hơi", + "yue": "車行", + "zh-CN": "汽车店", + "zh-HK": "車行", + "zh-TW": "汽車行", + "zh": "车行", + "mk": "Автосалон", + "bg": "Автомобили", + "he": "סוכנות רכב" + } + }, + "shop/car_parts": { + "title": { + "C": "Car Parts Store", + "en": "Car Parts Store", + "af": "Onderdelewinkel", + "ar": "محل بيع أجزاء السيارة", + "ast": "Repuestos d'automóviles", + "bn": "গাড়ির যন্ত্রাংশের দোকান", + "bs": "Prodavnica auto dijelova", + "ca": "Botiga de recanvis de cotxe", + "cs": "Náhradní díly pro auta", + "da": "Biludstyrsbutik", + "de": "Autoteilehandel", + "el": "Ανταλλακτικά Αυτοκινήτων", + "en-GB": "Car Parts Shop", + "eo": "Aŭtomobil-parta vendejo", + "es": "Tienda de componentes de automóvil", + "et": "Autoosade pood", + "fa": "فروشگاه قطعات خودرو", + "fi": "Varaosamyymälä", + "fr": "Magasin de pièces automobiles", + "gl": "Tenda de recambios de automóbiles", + "hr": "Trgovina rezevnih dijelova za automobile", + "hu": "Autóalkatrész-üzlet", + "id": "Toko Peralatan Mobil", + "is": "Bílavarahlutaverslun", + "it": "Negozio di autoricambi", + "ja": "カー用品店", + "ko": "자동차 부품 가게", + "lt": "Auto dalių parduotuvė", + "lv": "Auto rezerves daļu veikals", + "nl": "Auto-onderdelenwinkel", + "no": "Bildelforhandler", + "pl": "Sklep z częściami do samochodów", + "pt-BR": "Loja de Peças Automotivas", + "pt": "Loja de peças para automóveis", + "ru": "Автозапчасти", + "sk": "Predajňa autodielov", + "sl": "Avtomobilski deli", + "sr": "Продавница ауто делова", + "sv": "Biltillbehör", + "tr": "Yedek Parça Dükkanı", + "uk": "Автозапчастини", + "vi": "Tiệm Phụ tùng Xe hơi", + "yue": "汽車零件舖", + "zh-CN": "汽车零部件商店", + "zh-HK": "汽車零件店", + "zh-TW": "汽車零件店", + "zh": "汽车配件店", + "mk": "Продавница за автоделови", + "bg": "Авточасти", + "he": "חנות חלקי מכוניות" + } + }, + "shop/car_repair": { + "title": { + "C": "Car Repair Shop", + "en": "Car Repair Shop", + "af": "Werkswinkel", + "ar": "ورشة إصلاح سيارات", + "ast": "Taller d'automóviles", + "bn": "গাড়ি মেরামতের দোকান", + "bs": "Auto servis", + "ca": "Taller d'automòbils", + "cs": "Autoopravna", + "da": "Bilværksted", + "de": "Autowerkstatt", + "el": "Συνεργείο Αυτοκινήτων", + "en-GB": "Car Repair Shop", + "eo": "Aŭtomobil-riparejo", + "es": "Taller de reparación de automóviles", + "et": "Autoremont", + "fa": "تعمیرگاه خودرو", + "fi": "Autokorjaamo", + "fr": "Garage de réparation automobile", + "gl": "Taller de arranxo de automóbiles", + "hr": "Automehaničar", + "hu": "Autószerelő", + "id": "Bengkel Mobil", + "is": "Bílaverkstæði", + "it": "Autofficina", + "ja": "自動車修理工場", + "ko": "자동차 수리점", + "lt": "Auto taisykla", + "lv": "Auto remontdarbnīca", + "nl": "Autogarage (herstel)", + "no": "Bilverksted", + "pl": "Warsztat samochodowy", + "pt-BR": "Oficina Mecânica", + "pt": "Oficina de automóveis", + "ro": "Vulcanizare", + "ru": "Автомастерская", + "sk": "Autoservis", + "sl": "Avtoservis", + "sr": "Ауто-сервис", + "sv": "Bilverkstad", + "tr": "Tamirci", + "uk": "Автомайстерня", + "vi": "Tiệm Sửa Xe", + "yue": "車房", + "zh-CN": "汽车修理店", + "zh-HK": "車房", + "zh-TW": "汽車維修店", + "zh": "汽车修理店", + "mk": "Автосервис", + "bg": "Сервиз автомобили", + "dv": "ކާާރު ހަދައިދޭ ގަރާޖް", + "he": "מוסך", + "so": "Garaash" + } + }, + "shop/carpet": { + "title": { + "C": "Carpet Store", + "en": "Carpet Store", + "ar": "متجر سجاد", + "ast": "Alfombres", + "ca": "Botiga de catifes", + "cs": "Prodejna koberců", + "da": "Tæppeforhandler", + "de": "Teppichgeschäft", + "el": "Κατάστημα χαλιών", + "en-GB": "Carpet Shop", + "eo": "Tapiŝa vendejo", + "es": "Tienda de alfombras", + "et": "Vaibapood", + "fa": "فرش فروشی", + "fi": "Mattokauppa", + "fr": "Magasin de tapis", + "gl": "Tenda de alfombras", + "hr": "Prodavaonica tepiha", + "hu": "Szőnyegbolt", + "id": "Toko Karpet", + "is": "Gólfteppaverslun", + "it": "Negozio di tappeti", + "ja": "カーペット専門店", + "ko": "카펫 가게", + "lt": "Kilimų parduotuvė", + "lv": "Paklāju veikals", + "nl": "Tapijtwinkel", + "no": "Teppehandler", + "pl": "Sklep z dywanami", + "pt-BR": "Tapeçaria", + "pt": "Loja de tapetes", + "ro": "Magazin de Covoare", + "ru": "Магазин ковров", + "sk": "Obchod s kobercami", + "sl": "Trgovina s preprogrami", + "sv": "Mattaffär", + "tr": "Halı Mağazası", + "uk": "Магазин килимів ", + "vi": "Tiệm Thảm", + "zh-CN": "地毯店", + "zh-HK": "地毯店", + "zh-TW": "地毯店", + "mk": "Продавница за теписи", + "he": "חנות שטיחים" + } + }, + "shop/cheese": { + "title": { + "C": "Cheese Store", + "en": "Cheese Store", + "ar": "متجر أجبان", + "ast": "Quesería", + "ca": "Botiga de formatge", + "cs": "Prodejna sýrů", + "da": "Ostehandler", + "de": "Käseladen", + "el": "Τυροπωλείο", + "en-GB": "Cheese Shop", + "eo": "Fromaĝa vendejo", + "es": "Tienda de quesos", + "et": "Juustupood", + "fa": "پنیر فروشی", + "fi": "Juustopuoti", + "fr": "Fromager", + "gl": "Tenda de queixos", + "hr": "Prodavaonica sira", + "hu": "Sajtbolt", + "id": "Toko Keju", + "is": "Ostabúð", + "it": "Negozio di formaggi", + "ja": "チーズ店", + "ko": "치즈 가게", + "lt": "Sūrių parduotuvė", + "lv": "Siera veikals", + "nl": "Kaaswinkel", + "no": "Ostebutikk", + "pl": "Sklep z serami", + "pt-BR": "Loja de Queijos", + "pt": "Loja de queijos", + "ro": "Magazin de Brânzeturi", + "ru": "Магазин сыров", + "sk": "Obchod so syrmi", + "sl": "Trgovina s siri", + "sv": "Ostaffär", + "tr": "Peynirci", + "uk": "Магазин сиру", + "vi": "Tiệm Pho mát", + "zh-CN": "奶酪店", + "zh-HK": "芝士店", + "zh-TW": "起士店", + "mk": "Сирењарница", + "he": "חנות גבינות", + "en-AU": "Cheese Shop" + } + }, + "shop/chemist": { + "title": { + "C": "Drugstore", + "en": "Drugstore", + "ar": "متجر أدوات تجميل مستحضرات نظافة", + "ast": "Droguería", + "ca": "Farmàcia", + "cs": "Drogerie", + "da": "Materialist", + "de": "Drogerie", + "el": "Φαρμακείο", + "en-GB": "Chemist", + "eo": "Kosmetikaĵa (ankaŭ purigaĵoj) vendejo", + "es": "Droguería", + "et": "Kodukeemia kauplus", + "fa": "داروخانه", + "fi": "Apteekki-luontaistuotemyymälä", + "fr": "Parapharmacie", + "gl": "Drogaría", + "hr": "Drogerija", + "hu": "Drogéria", + "is": "Hreinlætisvöruverslun", + "it": "Drogheria", + "ja": "ドラッグストア・化粧品・薬品店(薬剤師がいない店)", + "ko": "드러그스토어", + "lt": "Vaistinė", + "lv": "Aptieka", + "nl": "Drogisterij", + "no": "Apotek", + "pl": "Drogeria", + "pt-BR": "Loja de Cosméticos e Higiene", + "pt": "Drogaria", + "ro": "Drogărie", + "ru": "Бытовая химия", + "sk": "Drogéria", + "sl": "Lekarna", + "sv": "Kemiaffär (hygien, kosmetika & städ)", + "ta": "மருந்தகம்", + "tr": "İlaç Dükkanı", + "uk": "Побутова хімія", + "vi": "Tiệm Dược phẩm", + "zh-CN": "药妆店", + "zh-HK": "藥店", + "zh-TW": "藥妝店", + "mk": "Аптека", + "bg": "Дрогерия", + "he": "בית מרקחת", + "en-AU": "Pharmacy" + } + }, + "shop/chocolate": { + "title": { + "C": "Chocolate Store", + "en": "Chocolate Store", + "ar": "متجر شوكولاتة", + "ast": "Chocolatería", + "ca": "Botiga de xocolata", + "cs": "Prodejna čokolády", + "da": "Chokoladeforretning", + "de": "Schokoladenladen", + "el": "Κατάστημα Ειδών Σοκολάτας", + "en-GB": "Chocolate Shop", + "eo": "Ĉokolada vendejo", + "es": "Chocolatería", + "et": "Šokolaadikauplus", + "fa": "فروشگاه شکلات", + "fi": "Suklaapuoti", + "fr": "Chocolatier", + "gl": "Chocolataría", + "hr": "Prodavaonica čokolade", + "hu": "Csokoládébolt", + "id": "Toko Cokelat", + "is": "Súkkulaðibúð", + "it": "Cioccolateria", + "ja": "チョコレート店", + "ko": "초콜릿 가게", + "lt": "Šokolado parduotuvė", + "lv": "Šokolādes veikals", + "nl": "Chocoladewinkel", + "no": "Sjokoladebutikk", + "pl": "Sklep z czekoladą", + "pt-BR": "Loja de Chocolates", + "pt": "Loja de chocolates", + "ro": "Magazin de Ciocolată", + "ru": "Магазин шоколада", + "sk": "Obchod s čokoládou", + "sl": "Trgovina s čokolado", + "sv": "Chokladaffär", + "tr": "Çikolata Dükkanı", + "uk": "Магазин шоколаду", + "vi": "Tiệm Sô-cô-la", + "zh-CN": "巧克力店", + "zh-HK": "朱古力店", + "zh-TW": "巧克力店", + "mk": "Продавница за чоколади", + "he": "חנות שוקולד", + "ms": "Kedai Coklat", + "en-AU": "Chocolate Shop" + } + }, + "shop/clothes": { + "title": { + "C": "Clothing Store", + "en": "Clothing Store", + "af": "Klere Winkel", + "ar": "محل ملابس", + "ast": "Tienda de ropa", + "bn": "জামাকাপড়ের দোকান", + "bs": "Prodavnica odjeće", + "ca": "Botiga de roba", + "cs": "Oblečení", + "da": "Tøjbutik", + "de": "Bekleidungsgeschäft", + "el": "Κατάστημα Ένδυσης", + "en-GB": "Clothing Shop", + "eo": "Vesta vendejo", + "es": "Tienda de ropa", + "et": "Riidepood", + "fa": "فروشگاه لباس", + "fi": "Vaatekauppa", + "fr": "Magasin de vêtements", + "gl": "Tenda de roupa", + "hr": "Prodavaonica odjeće", + "hu": "Ruházati bolt", + "id": "Toko Baju", + "is": "Fataverslun", + "it": "Negozio di abbigliamento", + "ja": "衣料品店", + "ko": "옷 가게", + "lt": "Drabužių parduotuvė", + "lv": "Apģērba veikals", + "nl": "Kledingzaak", + "no": "Klesbutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Roupas", + "pt": "Loja de roupa", + "ro": "Magazin de Haine", + "ru": "Магазин одежды", + "sk": "Obchod s odevami", + "sl": "Trgovina z oblekami", + "sq": "Dyqan Veshjesh", + "sr": "Продавница одеће", + "sv": "Klädaffär", + "ta": "ஜவுளிக் கடை", + "tr": "Giyim Mağazası", + "uk": "Одяг", + "vi": "Tiệm Quần áo", + "yue": "衫舖", + "zh-CN": "服装店", + "zh-HK": "服飾店", + "zh-TW": "服飾店", + "zh": "服装店", + "mk": "Продавница за облека", + "bg": "Магазин за дрехи", + "he": "חנות בגדים", + "ms": "Kedai Pakaian" + } + }, + "shop/computer": { + "title": { + "C": "Computer Store", + "en": "Computer Store", + "af": "Rekenaarwinkel", + "ar": "محل حاسوب", + "ast": "Informática", + "bn": "কম্পিউটারের দোকান", + "bs": "Prodavnica računara", + "ca": "Botiga d'informàtica", + "cs": "Počítače", + "da": "Computerforhandler", + "de": "Computerfachhandel", + "el": "Κατάστημα Υπολογιστών", + "en-GB": "Computer Shop", + "eo": "Komputila vendejo", + "es": "Tienda de informática", + "et": "Arvutipood", + "fa": "فروشگاه کامپیوتر", + "fi": "Tietokoneliike", + "fr": "Magasin d'informatique", + "gl": "Tenda de informática", + "hr": "Prodavaonica računala", + "hu": "Számítógépbolt", + "id": "Toko Komputer", + "is": "Tölvuverslun", + "it": "Negozio di informatica", + "ja": "コンピューター店", + "kn": "ಗಣಕಯಂತ್ರದ ಅಂಗಡಿ", + "ko": "컴퓨터 가게", + "lt": "Kompiuterių parduotuvė", + "lv": "Datorveikals", + "nl": "Computerwinkel", + "no": "Databutikk", + "pl": "Sklep komputerowy", + "pt-BR": "Loja de Informática", + "pt": "Loja de informática", + "ro": "Magazin de Calculatoare", + "ru": "Компьютерный магазин", + "sk": "Obchod s výpočtovou technikou", + "sl": "Računalniška trgovina", + "sr": "Продавница рачунара", + "sv": "Datorbutik", + "ta": "கணினி விற்பனையகம்", + "tr": "Bilgisayar Mağazası", + "uk": "Комп’ютери", + "vi": "Tiệm Máy tính", + "yue": "電腦舖", + "zh-CN": "电脑店", + "zh-HK": "電腦店", + "zh-TW": "電腦店", + "zh": "电脑店", + "mk": "Продавница за сметачи", + "bg": "Компютърен магазин", + "he": "חנות מחשבים", + "ms": "Kedai Komputer" + } + }, + "shop/confectionery": { + "title": { + "C": "Candy Store", + "en": "Candy Store", + "ar": "متجر سكاكر", + "ast": "Venta de llambionaes", + "ca": "Botiga de llaminadures", + "cs": "Cukrovinky", + "da": "Slikbutik", + "de": "Süßwarenladen", + "el": "Ζαχαροπλαστείο", + "en-GB": "Sweet Shop", + "eo": "Sukeraĵa vendejo", + "es": "Tienda de dulces", + "et": "Kommipood", + "fa": "فروشگاه آب‌نبات", + "fi": "Karkkipuoti", + "fr": "Confiserie", + "gl": "Tenda de larpeiradas", + "hr": "Prodavaonica slatkiša", + "hu": "Édességbolt", + "id": "Toko Permen", + "is": "Nammibúð", + "it": "Negozio di dolciumi", + "ja": "菓子屋(販売)", + "ko": "사탕 가게", + "lt": "Saldainių parduotuvė", + "lv": "Saldumu veikals", + "nl": "Snoepwinkel", + "no": "Godtebutikk", + "pl": "Sklep ze słodyczami", + "pt-BR": "Doceria", + "pt": "Doçaria", + "ro": "Magazin de Dulciuri", + "ru": "Кондитерская", + "sk": "Obchod so sladkosťami", + "sl": "Trgovina s slaščicami", + "sr": "Бомбонџиница", + "sv": "Godisaffär", + "tr": "Şeker Mağazası", + "uk": "Кондитерська ", + "vi": "Tiệm Kẹo", + "zh-CN": "糖果店", + "zh-HK": "糖果店", + "zh-TW": "糖果店", + "mk": "Бонбониера", + "he": "חנות ממתקים" + } + }, + "shop/convenience": { + "title": { + "C": "Convenience Store", + "en": "Convenience Store", + "af": "Geriefswinkel", + "ar": "بقالة", + "ast": "Tienda d'ultramarinos", + "bs": "Bakalnica", + "ca": "Botiga d'ultramarins", + "cs": "Smíšené zboží", + "da": "Minimarked", + "de": "Minimarkt", + "el": "Παντοπωλείο", + "en-GB": "Convenience Store", + "eo": "Butiko oportuna", + "es": "Tienda multiservicio", + "et": "Toidupood", + "fa": "سوپرمارکت / فروشگاه کوچک", + "fi": "Lähikauppa", + "fr": "Épicerie / Supérette ", + "gl": "Tenda de ultramarinos", + "hr": "Trgovina mješovitom robom", + "hu": "Kis élelmiszerbolt", + "id": "Toko Kelontong", + "is": "Kjörbúð", + "it": "Minimarket", + "ja": "コンビニエンスストア", + "ko": "편의점", + "lt": "Savitarnos parduotuvė", + "lv": "Veikals", + "nl": "Gemakswinkel", + "no": "Nærbutikk", + "pl": "Sklep ogólnospożywczy", + "pt-BR": "Loja de Conveniência", + "pt": "Minimercado / loja de conveniência", + "ro": "Magazin Universal", + "ru": "Магазин у дома", + "sk": "Samoobsluha", + "sl": "Minimarket", + "sr": "Бакалница", + "sv": "Närbutik", + "tr": "Market", + "uk": "Міні-маркет", + "vi": "Tiệm Tiện lợi", + "yue": "便利店", + "zh-CN": "便利店", + "zh-HK": "便利店", + "zh-TW": "便利商店", + "zh": "便利店", + "mk": "Бакалница", + "bg": "Магазин за хранителни стоки", + "he": "חנות נוחות", + "ms": "Kedai Kecil" + } + }, + "shop/copyshop": { + "title": { + "C": "Copy Store", + "en": "Copy Store", + "ar": "متجر نسخ وتصوير", + "ast": "Copistería", + "ca": "Copisteria", + "cs": "Kopírování", + "da": "Fotokopishop", + "de": "Kopierladen", + "el": "Κατάστημα Φωτοτυπιών", + "en-GB": "Copyshop", + "eo": "Fotokopiilejo", + "es": "Centro de copiado", + "et": "Koopiateenuse kauplus", + "fa": "چاپ و تکثیر", + "fi": "Kopiointiliike", + "fr": "Reprographie", + "gl": "Copistaría", + "hr": "Fotokopiraona", + "hu": "Fénymásoló", + "id": "Tempat Fotokopi", + "is": "Ljósritunarstofa", + "it": "Copisteria", + "ja": "コピー店", + "ko": "복사집", + "lt": "Kopijavimo parduotuvė", + "lv": "Printēšanas veikals", + "nl": "Copyshop", + "no": "Printsjappe", + "pl": "Punkt ksero", + "pt-BR": "Copiadora", + "pt": "Loja de fotocópias", + "ro": "Atelier de Copiere", + "ru": "Магазин копирования, печати", + "sk": "Fotokopírovanie", + "sl": "Fotokopirnica", + "sq": "Fotokopje", + "sr": "Копирница", + "sv": "Tryckeri", + "tr": "Kırtasiye", + "uk": "Копіювальні послуги", + "vi": "Tiệm Sao chép", + "zh-CN": "打印店", + "zh-HK": "影印店", + "zh-TW": "影印店", + "mk": "Копирница", + "he": "חנות העתקות" + } + }, + "shop/cosmetics": { + "title": { + "C": "Cosmetics Store", + "en": "Cosmetics Store", + "ar": "متجر مستحضرات التجميل", + "ast": "Perfumería", + "ca": "Botiga de cosmètics", + "cs": "Obchod s kosmetikou", + "da": "Kosmetikbutik", + "de": "Kosmetikladen", + "el": "Κατάστημα καλλυντικών", + "en-GB": "Cosmetics Shop", + "eo": "Kosmetikaĵa (persona higieno) vendejo", + "es": "Tienda de cosméticos", + "et": "Kosmeetikapood", + "fa": "فروشگاه آرایشی و بهداشتی ", + "fi": "Kosmetiikkamyymälä", + "fr": "Magasin de cosmétiques", + "gl": "Tenda de cosméticos", + "hr": "Prodavaonica kozmetike", + "hu": "Kozmetikai bolt", + "id": "Toko Kosmetik", + "is": "Snyrtivöruverslun", + "it": "Negozio di cosmetici", + "ja": "化粧品店", + "ko": "화장품 가게", + "lt": "Kosmetikos parduotuvė", + "lv": "Kosmētikas veikals", + "nl": "Cosmeticawinkel", + "no": "Parfymeri", + "pl": "Sklep z kosmetykami", + "pt-BR": "Loja de Cosméticos", + "pt": "Loja de cosmética", + "ro": "osmetic", + "ru": "Магазин косметики", + "sk": "Obchod s kozmetikou", + "sl": "Kozmetična trgovina", + "sv": "Sminkaffär", + "tr": "Kozmetik Mağazası", + "uk": "Мазазин косметики", + "vi": "Tiệm Mỹ phẩm", + "zh-CN": "化妆品店", + "zh-HK": "化妝品店", + "zh-TW": "化妝品店", + "mk": "Продавница за козметика", + "he": "חנות קוסמטיקה" + } + }, + "shop/craft": { + "title": { + "C": "Arts & Crafts Store", + "en": "Arts & Crafts Store", + "ar": "متجر الفنون والحرف", + "cs": "Obchod s řemeslnými výrobky", + "de": "Geschäft für Künstlerbedarf", + "es": "Tienda de artesanías", + "fi": "Käsityöliike", + "ja": "美術・工芸用品店", + "no": "Kunst & Håndverksbutikk", + "pl": "Sklep z artykułami dla artystów", + "pt-BR": "Loja de artesanato", + "pt": "Loja de acessórios para artes manuais", + "uk": "Мистецтво та ремесла", + "zh-TW": "手工藝品店", + "mk": "Продавница за уметнички ракотворби", + "he": "חנות חפצי אומנות" + } + }, + "shop/curtain": { + "title": { + "C": "Curtain Store", + "en": "Curtain Store", + "ar": "محل بيع الستائر", + "ast": "Tienda de cortines", + "ca": "Botiga de cortines", + "cs": "Obchod se závěsy", + "da": "Gardinbutik", + "de": "Vorhanggeschäft", + "el": "Είδη Κουρτίνας", + "en-GB": "Curtain Shop", + "eo": "Kurtena vendejo", + "es": "Tienda de cortinas", + "et": "Kardinakauplus", + "fa": "پرده فروشی", + "fi": "Verhomyymälä", + "fr": "Magasin de rideaux", + "gl": "Tenda de cortinas", + "hr": "Trgovina za zastore", + "hu": "Függönybolt", + "id": "Toko Gorden", + "is": "Gluggatjaldaverslun", + "it": "Negozio di tende", + "ja": "カーテン店", + "ko": "커튼 가게", + "lt": "Užuolaidų parduotuvė", + "lv": "Aizkaru veikals", + "nl": "Gordijnenwinkel", + "no": "Gardinbutikk", + "pl": "Sklep z zasłonami", + "pt-BR": "Loja de Cortinas", + "pt": "Loja de cortinas", + "ro": "Magazin de Perdele", + "ru": "Магазин штор и драпировок", + "sk": "Obchod so záclonami", + "sl": "Trgovina z zavesami", + "sv": "Gardinaffär", + "tr": "Perde Mağazası", + "uk": "Магазин занавісок", + "vi": "Tiệm Màn cửa", + "zh-CN": "窗帘店", + "zh-HK": "窗簾店", + "zh-TW": "窗廉店", + "mk": "Продавница за завеси", + "he": "חנות וילונות" + } + }, + "shop/dairy": { + "title": { + "C": "Dairy Store", + "en": "Dairy Store", + "ar": "متجر الألبان", + "ast": "Llechería", + "ca": "Botiga de productes làctics", + "cs": "Mléčné výrobky", + "da": "Ismejeri", + "de": "Milchgeschäft", + "el": "Γαλακτοπωλείο", + "en-GB": "Dairy Shop", + "eo": "Laktaĵa vendejo", + "es": "Tienda de lácteos", + "et": "Piimapood", + "fa": "فروشگاه لبنی", + "fi": "Maitotuotemyymälä", + "fr": "Crèmerie", + "gl": "Tenda de produtos frescos", + "hr": "Prodavaonica mliječnih proizvoda", + "hu": "Tejtermékbolt", + "id": "Toko Susu", + "is": "Mjólkurbúð", + "it": "Negozio di latticini", + "ja": "乳製品店", + "ko": "유제품 가게", + "lt": "Pieno produktų parduotuvė", + "lv": "Piena veikals", + "nl": "Zuivelhandel", + "no": "Ferskvarebutikk", + "pl": "Sklep z nabiałem", + "pt-BR": "Loja de Laticínios", + "pt": "Loja de laticínios", + "ro": "Magazin de Lactate", + "ru": "Магазин молочных продуктов", + "sk": "Obchod s mliečnymi výrobkami", + "sl": "Mlekarna", + "sv": "Mejeriaffär", + "tr": "Süt Mağazası", + "uk": "Молочний магазин", + "vi": "Tiệm Sữa", + "zh-CN": "牛奶店", + "zh-HK": "奶製品店", + "zh-TW": "奶製品店", + "mk": "Бакалница", + "he": "חנות מוצרי חלב" + } + }, + "shop/deli": { + "title": { + "C": "Deli", + "en": "Deli", + "af": "Deli", + "ar": "محل أطعمة لذيذة", + "ast": "Gourmet", + "bs": "Delikatese", + "ca": "Botiga de comestibles", + "cs": "Lahůdkářství", + "da": "Deli", + "de": "Feinkostladen", + "el": "Ντελικατέσεν", + "en-GB": "Deli", + "eo": "Delikataĵa vendejo", + "es": "Delicatessen", + "et": "Delikatessikauplus", + "fa": "حاضری فروشی", + "fi": "Deli", + "fr": "Épicerie de luxe", + "gl": "Delicatessen", + "hr": "Prodavaonica delikatesa", + "hu": "Csemegebolt", + "is": "Deli", + "it": "Gastronomia", + "ja": "惣菜屋", + "ko": "델리", + "lt": "Gastronomas", + "lv": "Delikateses", + "nl": "Delicatessenwinkel", + "no": "Delikatessebutikk", + "pl": "Ekskluzywne delikatesy", + "pt-BR": "Delicatessen", + "pt": "Loja gourmet", + "ru": "Магазин деликатесов", + "sk": "Delikatesy", + "sl": "Delikatesa", + "sr": "Деликатеси", + "sv": "Delikatessaffär", + "tr": "Şarküteri", + "uk": "Делікатеси/Вишукана їжа", + "vi": "Tiệm Deli", + "yue": "美食舖", + "zh-CN": "熟食店", + "zh-HK": "食肆", + "zh-TW": "美食店", + "zh": "熟食店", + "mk": "Продавница за деликатеси", + "bg": "Магазин за деликатеси", + "he": "מעדניה" + } + }, + "shop/department_store": { + "title": { + "C": "Department Store", + "en": "Department Store", + "af": "Afdelingswinkel", + "ar": "محل متعدد الأقسام", + "ast": "Grandes almacenes", + "bn": "ডিপার্টমেন্ট স্টোর", + "bs": "Robna kuća", + "ca": "Grans magatzems", + "cs": "Obchodní dům", + "da": "Stormagasin", + "de": "Kaufhaus", + "el": "Πολυκατάστημα", + "en-GB": "Department Store", + "eo": "Ĉiovendejo", + "es": "Grandes almacenes / Tienda departamental", + "et": "Kaubamaja", + "fa": "فروشگاه چندمنظوره", + "fi": "Tavaratalo", + "fr": "Grand magasin", + "gl": "Grandes almacéns", + "hr": "Robna kuća", + "hu": "Nagyáruház", + "id": "Pasar Swalayan", + "is": "Stórverslun", + "it": "Grande magazzino", + "ja": "百貨店", + "kn": "ಕಿರಾಣಿ ಅಂಗಡಿ", + "ko": "백화점", + "lt": "Universalinė parduotuvė", + "lv": "Lielveikals", + "nl": "Warenhuis", + "no": "Supermarked", + "pl": "Dom towarowy", + "pt-BR": "Loja de Departamentos", + "pt": "Grande armazém", + "ro": "Magazin Universal", + "ru": "Универсальный магазин (с отделами)", + "sk": "Obchodný dom", + "sl": "Veleblagovnica", + "sr": "Робна кућа", + "sv": "Varuhus", + "tr": "Mağaza", + "uk": "Універмаг", + "vi": "Tiệm Bách hóa", + "yue": "百貨公司", + "zh-CN": "百货商场", + "zh-HK": "百貨公司", + "zh-TW": "百貨公司", + "zh": "百货店", + "mk": "Стоковна куќа", + "bg": "Универсален магазин", + "he": "חנות כלבו" + } + }, + "shop/doityourself": { + "title": { + "C": "DIY Store", + "en": "DIY Store", + "af": "Selfdoenwinkel", + "ar": "محل افعلها بنفسك", + "ast": "Bricolage", + "bn": "নিজে করুন স্টোর", + "bs": "Sve za kuću", + "ca": "Botiga de bricolatge", + "cs": "Obchod pro kutily", + "da": "Gør det selv-butik", + "de": "Heimwerkerladen", + "el": "Κατάστημα ιδιοκατασκευών", + "en-GB": "DIY Shop", + "eo": "Memfaradila vendejo", + "es": "Tienda de bricolaje / Hágalo usted mismo", + "et": "Ehituskauplus", + "fa": "فروشگاه DIY", + "fi": "Askartelukauppa", + "fr": "Magasin de bricolage", + "gl": "Tenda de bricolaxe", + "hr": "Uradi sam", + "hu": "Barkácsáruház", + "id": "Toko Swakriya", + "is": "Handlaginna verslun", + "it": "Negozio di fai-da-te", + "ja": "ホームセンター", + "ko": "DIY 가게", + "lt": "Pasidaryk pats parduotuvė", + "nl": "Bouwmarkt, doe-het-zelfwinkel", + "no": "Byggevarehus", + "pl": "Market budowlany/sklep dla majsterkowiczów", + "pt-BR": "Loja de Ferragens/Bricolagem", + "pt": "Loja de bricolagem", + "ro": "Magazin DIY", + "ru": "Строительный магазин", + "sk": "Obchod pre kutilov", + "sl": "Orodjarna", + "sr": "Све за кућу", + "sv": "Byggmarknad", + "tr": "Malzeme Mağazası", + "uk": "Зроби сам", + "vi": "Tiệm Vật liệu Xây dựng", + "yue": "自組舖", + "zh-CN": "DIY店", + "zh-HK": "DIY店", + "zh-TW": "DIY商店", + "zh": "DIY商店", + "mk": "Продавница за мајсторисување", + "bg": "Магазин \"Направи си сам\"", + "he": "חנות עשה זאת בעצמך", + "ms": "Kedai DIY" + } + }, + "shop/dry_cleaning": { + "title": { + "C": "Dry Cleaner", + "en": "Dry Cleaner", + "ar": "تنظيف جاف", + "ast": "Llimpieza en seco", + "ca": "Bugaderia", + "cs": "Čistírna", + "da": "Renseri", + "de": "Chemische Reinigung", + "el": "Στεγνοκαθαριστήριο", + "en-GB": "Dry Cleaner", + "eo": "Vest-lavejo (nepolara solvilo)", + "es": "Tintorería", + "et": "Keemiline puhastus", + "fa": "خشکشویی", + "fi": "Kuivapesula", + "fr": "Pressing", + "gl": "Tinturaría", + "hr": "Kemijska čistionica", + "hu": "Vegytisztitó", + "id": "Jasa Cuci Kering", + "is": "Þurrhreinsun", + "it": "Lavanderia", + "ja": "クリーニング店", + "ko": "드라이클리닝", + "lv": "Ķīmiskā tīrītava", + "nl": "Stomerij", + "no": "Renseri", + "pl": "Pralnia chemiczna", + "pt-BR": "Lavanderia a seco", + "pt": "Limpeza a seco", + "ro": "Uscător", + "ru": "Химчистка", + "sk": "Čistiareň odevov", + "sl": "Čistilnica", + "sq": "Pastrim Kimik", + "sr": "Хемијско чишћење", + "sv": "Kemtvätt", + "tr": "Kuru Temizleme Mağazası", + "uk": "Хімчистка", + "vi": "Tiệm Giặt khô", + "zh-CN": "干洗店", + "zh-HK": "乾洗店", + "zh-TW": "乾洗店", + "mk": "Хемиско чистење", + "he": "ניקוי יבש", + "ms": "Kedai Cucian Kering" + } + }, + "shop/electronics": { + "title": { + "C": "Electronics Store", + "en": "Electronics Store", + "af": "Elektronikawinkel", + "ar": "محل إلكترونيات", + "ast": "Electrónica", + "bn": "ইলেকট্রনিক্স-এর দোকান", + "bs": "Prodavnica elektronike", + "ca": "Botiga d'electrònica", + "cs": "Elektro", + "da": "Elektronikbutik", + "de": "Elektronikfachgeschäft", + "el": "Κατάστημα Ηλεκτρονικών", + "en-GB": "Electronics Shop", + "eo": "Elektronika vendejo", + "es": "Tienda de electrónica y electrodomésticos", + "et": "Elektroonikapood", + "fa": "فروشگاه لوازم برقی", + "fi": "Elektroniikkamyymälä", + "fr": "Magasin d'électronique et d'électroménager", + "gl": "Tenda de electrodomésticos", + "hr": "Prodavaonica elektronike", + "hu": "Elektronikai bolt", + "id": "Toko Elektronik", + "is": "Rafeindatækjaverslun", + "it": "Negozio di elettronica", + "ja": "家電販売店(小型製品)", + "ko": "전자 제품 가게", + "lt": "Elektronikos parduotuvė", + "lv": "Elektronikas veikals", + "nl": "Huishoudtoestellen-/Witgoedwinkel", + "no": "Elektronikkbutikk", + "pl": "Sklep RTV i AGD", + "pt-BR": "Loja de Eletrônicos", + "pt": "Loja de eletrodomésticos", + "ro": "Magazin de Electronice", + "ru": "Магазин бытовой электроники", + "sk": "Elektro obchod", + "sl": "Elektronska trgovina", + "sr": "Електроника", + "sv": "Elektronikbutik", + "tr": "Elektronik Mağazası", + "uk": "Електроніка", + "vi": "Tiệm Điện tử", + "yue": "電器舖", + "zh-CN": "电器店", + "zh-HK": "電子舖", + "zh-TW": "電器店", + "zh": "电器店", + "mk": "Продавница за електронска роба", + "bg": "Магазин за електроника", + "he": "חנות אלקטרוניקה", + "ms": "Kedai Elektronik" + } + }, + "shop/erotic": { + "title": { + "C": "Erotic Store", + "en": "Erotic Store", + "ast": "Artículos eróticos", + "ca": "Botiga d'articles eròtics", + "cs": "Sex shop", + "da": "Erotikbutik", + "de": "Erotikgeschäft", + "el": "Μαγαζί ερωτικών ειδών", + "en-GB": "Erotic Shop", + "eo": "Seksumila vendejo", + "es": "Tienda erótica", + "et": "Erootikapood", + "fa": "فروشگاه لوازم بزرگسالان", + "fi": "Erotiikkamyymälä", + "fr": "Sex-shop", + "gl": "Tenda erótica", + "hr": "Prodavaonica erotskih pomagala", + "hu": "Szexbolt", + "is": "Hjálpartæki ástarlífsins", + "it": "Negozio erotico", + "ja": "アダルトショップ", + "ko": "성인용품 가게", + "lt": "Erotikos parduotuvė", + "lv": "Erotiskais veikals", + "nl": "Seksshop", + "no": "Erotikkbutikk", + "pl": "Sex shop", + "pt-BR": "Sex Shop", + "pt": "Sex shop", + "ro": "Magazin Erotic", + "ru": "Секс-шоп", + "sk": "Ochod s erotickými potrebami", + "sl": "Erotična trgovina", + "sr": "Еротска продавница", + "sv": "Sexshop", + "tr": "Erotik Ürünler Mağazası", + "uk": "Секс-шоп", + "vi": "Tiệm Bán đồ Khiêu dâm", + "zh-CN": "情趣用品店", + "zh-HK": "情趣用品店", + "zh-TW": "情趣用品店", + "mk": "Еротска продавница", + "he": "חנות ארוטיקה" + } + }, + "shop/fabric": { + "title": { + "C": "Fabric Store", + "en": "Fabric Store", + "ar": "محل بيع الأقمشة", + "ca": "Botiga de teles", + "cs": "Obchod s textilem", + "da": "Stofforretning", + "de": "Stoffgeschäft", + "el": "Πωλήσεις Υφασμάτων", + "en-GB": "Fabric Shop", + "eo": "Teksaĵa vendejo", + "es": "Tienda textil", + "et": "Kangakauplus", + "fa": "پارچه فروشی", + "fi": "Rakennusliike", + "fr": "Magasin de tissus", + "gl": "Tenda de teas", + "hr": "Trgovina za tkanine", + "hu": "Rövidáru- és méterárubolt", + "id": "Toko Kain", + "is": "Álnavöruverslun", + "it": "Negozio di tessuti", + "ja": "生地屋", + "ko": "직물 가게", + "lt": "Audinių parduotuvė", + "lv": "Audumu veikals", + "nl": "Stofwinkel", + "no": "Stoffbutikk", + "pl": "Sklep z tkaninami", + "pt-BR": "Loja de Tecidos", + "pt": "Loja de tecidos", + "ro": "Magazin de Materiale", + "ru": "Магазин тканей", + "sk": "Obchod s látkami", + "sl": "Trgovina z metrskim blagom", + "sr": "Текстилна продавница", + "sv": "Tygaffär", + "tr": "Kumaş Mağazası", + "uk": "Магазин тканин", + "vi": "Tiệm Vải", + "zh-CN": "布店", + "zh-HK": "布料店", + "zh-TW": "帆布店", + "mk": "Продавница за ткаенини", + "he": "חנות אריגה", + "ms": "Kedai Fabrik" + } + }, + "shop/farm": { + "title": { + "C": "Produce Stand", + "en": "Produce Stand", + "af": "Padstal", + "ar": "المنتج", + "bs": "Štand proizvodnje", + "ca": "Estand productiu", + "cs": "Stánek s ovocem, zeleninou", + "da": "Fødevarestand", + "de": "Hofladen", + "el": "Πάγκος Παραγωγής", + "en-GB": "Farm Shop", + "eo": "Terfrukta vendotablo", + "es": "Tienda de productos agrícolas", + "et": "Talukaup", + "fa": "جایگاه عرضه محصول", + "fi": "Maatilan suoramyynti", + "fr": "Magasin de producteurs", + "gl": "Tenda de produtos agrícolas", + "hr": "Prodavaonica proizvoda farme", + "hu": "Termelői bolt", + "is": "Vörubás", + "it": "Banchetto Alimentari Freschi", + "ja": "農産物直売所", + "ko": "산지 직매", + "lt": "Produktų stendas", + "nl": "Groente- en fruitkraam", + "no": "Gårdsutsalg", + "pl": "Stragan świeżych produktów", + "pt-BR": "Quitanda de Produção Local", + "pt": "Loja de produtos agrícolas locais", + "ru": "Магазин свежих продуктов", + "sk": "Voľný predaj ovocia", + "sl": "Prodaja domačih pridelkov", + "sr": "Производни штанд", + "sv": "Gårdsbutik", + "tr": "Manav", + "uk": "Стелаж з фермерськими товарами", + "vi": "Quầy Nông sản", + "yue": "檔", + "zh-CN": "农产直销店", + "zh-HK": "農產品檔攤", + "zh-TW": "產地直銷店", + "mk": "Пилјарска тезга", + "bg": "Щанд за плодове и зеленчуци", + "he": "דוכן ירקות" + } + }, + "shop/florist": { + "title": { + "C": "Florist", + "en": "Florist", + "af": "Bloemiste", + "ar": "محل بيع الورود", + "ast": "Floristería", + "bn": "ফুল ব্যবসায়ী", + "bs": "Cvjećar", + "ca": "Floristeria", + "cs": "Květinářství", + "da": "Blomsterbutik", + "de": "Blumenhändler", + "el": "Ανθοπωλείο", + "en-GB": "Florist", + "eo": "Florvendejo", + "es": "Floristería", + "et": "Lillepood", + "fa": "گل فروشی", + "fi": "Kukkakauppa", + "fr": "Fleuriste", + "gl": "Floraría", + "hr": "Cvjećarna", + "hu": "Virágárus", + "id": "Toko Bunga", + "is": "Blómabúð", + "it": "Fioraio", + "ja": "生花店", + "kn": "ಹೂವಿನ ವ್ಯಾಪಾರಿ", + "ko": "꽃 가게", + "lt": "Gėlės", + "lv": "Florists", + "nl": "Bloemenwinkel", + "no": "Blomsterbutikk", + "pl": "Kwiaciarnia", + "pt-BR": "Floricultura", + "pt": "Florista", + "ro": "Florărie", + "ru": "Цветочный магазин", + "sk": "Kvetinárstvo", + "sl": "Cvetličarna", + "sr": "Цвећар", + "sv": "Florist", + "ta": "பூக்கடை", + "tr": "Çiçekçi", + "uk": "Квіти", + "vi": "Tiệm Hoa", + "yue": "花舖", + "zh-CN": "花店", + "zh-HK": "花店", + "zh-TW": "花店", + "zh": "花店", + "mk": "Цвеќарница", + "bg": "Магазин за цветя", + "he": "חנות פרחים", + "ms": "Kedai Bunga" + } + }, + "shop/frame": { + "title": { + "C": "Framing Shop", + "en": "Framing Shop", + "ast": "Marcos", + "ca": "Botiga de marcs", + "cs": "Rámařství", + "da": "Rammebutik", + "de": "Bilderrahmengeschäft", + "en-GB": "Framing Shop", + "eo": "Bild-kadra vendejo", + "es": "Tienda de enmarcación", + "et": "Raamikauplus", + "fa": "قاب سازی", + "fi": "Kehystämö", + "fr": "Magasin d'encadrements", + "gl": "Tenda de enmarcado", + "hr": "Trgovina za okvire", + "hu": "Képkeretező", + "id": "Toko Bingkai", + "is": "Innrömmun", + "it": "Negozio di cornici", + "ja": "額縁店", + "ko": "액자 가게", + "lt": "Įrėminimo parduotuvė", + "nl": "Kaderwinkel", + "no": "Innrammingsbutikk", + "pl": "Sklep z ramami", + "pt-BR": "Loja de Molduras", + "pt": "Loja de molduras", + "ru": "Магазин рамок для фотографий и картин", + "sk": "Obchod s rámami", + "sv": "Ramaffär", + "tr": "Çerçeve Mağazası", + "uk": "Сільгосптовари", + "vi": "Tiệm Khung Tranh", + "zh-CN": "相框店", + "zh-HK": "表框店", + "zh-TW": "表框店", + "mk": "Врамувачница", + "he": "חנות חקלאות" + } + }, + "shop/funeral_directors": { + "title": { + "C": "Funeral Home", + "en": "Funeral Home", + "ar": "بيت الدفن", + "ast": "Velatoriu", + "ca": "Tanatori", + "cs": "Pohřební služba", + "da": "Bedemandsforretning", + "de": "Beerdigungsinstitut", + "el": "Γραφείο Τελετών", + "en-GB": "Funeral Home", + "eo": "Tombistejo", + "es": "Funeraria", + "et": "Matusebüroo", + "fa": "غسالخانه", + "fi": "Hautaustoimisto", + "fr": "Funérarium", + "gl": "Funeraria", + "hr": "Pogrebno poduzeće", + "hu": "Temetkezési iroda", + "id": "Rumah Pemakaman", + "is": "Útfararheimili", + "it": "Casa funeraria", + "ja": "葬儀社", + "kn": "ಶವಸಂಸ್ಕಾರದ ನೆಲೆ", + "ko": "장례식장", + "lt": "Laidojimo namai", + "lv": "Apbedīšanas birojs", + "nl": "Begrafenisondernemer", + "no": "Begravelsesagent", + "pl": "Zakład pogrzebowy", + "pt-BR": "Funerária", + "pt": "Agência funerária", + "ro": "Casă Funerală", + "ru": "Бюро похоронных услуг", + "sk": "Pohrebný ústav", + "sl": "Pogrebne storitve", + "sr": "Загробна опрема", + "sv": "Begravningsbyrå", + "tr": "Cenaze Koordinatörü", + "uk": "Ритуальні послуги", + "vi": "Nhà quàn", + "yue": "殯儀館", + "zh-CN": "殡仪馆", + "zh-HK": "殯儀館", + "zh-TW": "生命禮儀公司", + "mk": "Погребално друштво", + "he": "קברן" + } + }, + "shop/furniture": { + "title": { + "C": "Furniture Store", + "en": "Furniture Store", + "af": "Meubelwinkel", + "ar": "محل أثاث", + "ast": "Mueblería", + "bn": "আসবাবপত্রের দোকান", + "bs": "Salon namještaja", + "ca": "Botiga de mobles", + "cs": "Nábytek", + "da": "Møbelforhandler", + "de": "Möbelhaus", + "el": "Κατάστημα Επίπλων", + "en-GB": "Furniture Shop", + "eo": "Mebla vendejo", + "es": "Mueblería", + "et": "Mööblipood", + "fa": "فروشگاه مبلمان", + "fi": "Huonekaluliike", + "fr": "Magasin de meubles", + "gl": "Moblaría", + "hr": "Salon namještaja", + "hu": "Bútorbolt", + "id": "Toko Furnitur", + "is": "Húsgagnaverslun", + "it": "Negozio di mobili", + "ja": "家具店", + "kn": "ಪಿಟೋಪಕರಣಗಳ ಅಂಗಡಿ", + "ko": "가구점", + "lt": "Baldų parduotuvė", + "lv": "Mēbeļu veikals", + "nl": "Meubelzaak", + "no": "Møbelforhandler", + "pl": "Sklep meblowy", + "pt-BR": "Loja de Móveis", + "pt": "Loja de mobiliário", + "ro": "Magazin de Mobilă", + "ru": "Мебельный магазин", + "sk": "Obchod s nábytkom", + "sl": "Trgovina s pohištvom", + "sr": "Продавница намештаја", + "sv": "Möbelaffär", + "tr": "Mobilya Mağazası", + "uk": "Меблі", + "vi": "Cửa hàng Nội thất", + "yue": "傢俬舖", + "zh-CN": "家具店", + "zh-HK": "傢俬店", + "zh-TW": "傢具店", + "zh": "家具店", + "mk": "Салон за мебел", + "bg": "Мебелен магазин", + "he": "חנות רהיטים" + } + }, + "shop/garden_centre": { + "title": { + "C": "Garden Center", + "en": "Garden Center", + "af": "Tuinsentrum", + "ar": "مشتل", + "ast": "Xardinería", + "bs": "Centar za baštovanstvo", + "ca": "Centre de jardineria", + "cs": "Zahradnictví", + "da": "Havecenter", + "de": "Gartenzentrum", + "el": "Κέντρο Κήπου", + "en-GB": "Garden Centre", + "eo": "Ĝarden-vendejo", + "es": "Centro de jardinería / Vivero", + "et": "Aianduskeskus", + "fa": "مرکز خرید گل و گلدان", + "fi": "Puutarhamyymälä", + "fr": "Magasin spécialiste du jardin", + "gl": "Centro de xardinaría", + "hr": "Vrtni centar", + "hu": "Kertészet", + "id": "Toko Tanaman", + "is": "Garðaverslun", + "it": "Vivaio", + "ja": "園芸用品店", + "ko": "원예 용품점", + "lt": "Sodo centras", + "lv": "Dārzkopības veikals", + "nl": "Tuincentrum", + "no": "Gartneri", + "pl": "Centrum ogrodnicze", + "pt-BR": "Centro de Jardinagem", + "pt": "Loja de jardinagem", + "ro": "Magazin de Grădinărit", + "ru": "Садовые принадлежности", + "sk": "Záhradné centrum", + "sl": "Vrtni center", + "sr": "Баштенски центар", + "sv": "Trädgårdscenter", + "tr": "Bahçe Düzenleme Mağazası", + "uk": "Садово-парковий центр", + "vi": "Trung tâm Làm vườn", + "yue": "園藝舖", + "zh-CN": "园艺品店", + "zh-HK": "園藝中心", + "zh-TW": "園藝中心", + "zh": "花店", + "mk": "Градинарски центар", + "bg": "Градински център", + "he": "חנות גננות", + "en-AU": "Garden Centre" + } + }, + "shop/gift": { + "title": { + "C": "Gift Shop", + "en": "Gift Shop", + "af": "Geskenkwinkel", + "ar": "محل الهدايا", + "ast": "Regalos", + "bn": "উপহারের দোকান", + "bs": "Prodavnica suvenira", + "ca": "Botiga de regals", + "cs": "Dárky, suvenýry", + "da": "Gavebutik", + "de": "Geschenkeladen", + "el": "Κατάστημα Δώρων", + "en-GB": "Gift Shop", + "eo": "Suvenira vendejo", + "es": "Tienda de regalos", + "et": "Kingipood", + "fa": "فروشگاه لوازم کادویی", + "fi": "Lahjamyymälä", + "fr": "Boutique de cadeaux", + "gl": "Tenda de agasallos", + "hr": "Suvenirnica", + "hu": "Ajándékbolt", + "id": "Toko Hadiah", + "is": "Gjafavörubúð", + "it": "Negozio souvenir", + "ja": "ギフト店", + "kn": "ಉಡುಗೊರೆಯ ಅಂಗಡಿ", + "ko": "선물 가게", + "lt": "Dovanų parduotuvė", + "lv": "Dāvanu veikals", + "nl": "Cadeauwinkel", + "no": "Gavebutikk", + "pl": "Sklep z pamiątkami", + "pt-BR": "Loja de Presentes", + "pt": "Loja de lembranças", + "ro": "Magazin de Cadouri", + "ru": "Магазин сувениров", + "sk": "Darčekový obchod", + "sl": "Prodajalna daril", + "sr": "Продавница поклона", + "sv": "Presentbutik", + "tr": "Hediyelik Eşya Dükkanı", + "uk": "Подарунки", + "vi": "Tiệm Quà tặng", + "yue": "禮品舖", + "zh-CN": "礼品店", + "zh-HK": "禮品店", + "zh-TW": "禮品店", + "zh": "礼品店", + "mk": "Продавница за подароци", + "bg": "Магазин за подаръци", + "he": "חנות מתנות" + } + }, + "shop/greengrocer": { + "title": { + "C": "Greengrocer", + "en": "Greengrocer", + "af": "Groentewinkel", + "ar": "بقالة", + "ast": "Frutería", + "bs": "Zelenara", + "ca": "Fruiteria", + "cs": "Ovoce a zelenina", + "da": "Grønthandler", + "de": "Obst- und Gemüseladen", + "el": "Οπωροπωλείο", + "en-GB": "Greengrocer", + "eo": "Legom-butiko", + "es": "Verdulería / Frutería", + "et": "Aedviljapood", + "fa": "سبزی و میوه فروشی", + "fi": "Kasviskauppa", + "fr": "Marchand de fruits et légumes", + "gl": "Froitaría", + "hr": "Voćarna", + "hu": "Zöldséges", + "id": "Toko Buah dan Sayuran", + "is": "Grænmetissali", + "it": "Fruttivendolo", + "ja": "八百屋・果物屋", + "ko": "청과상", + "lt": "Daržovių ir vaisių pardavėjas", + "nl": "Groenteboer", + "no": "Grønnsakshandler", + "pl": "Warzywniak", + "pt-BR": "Verdureira ou quitanda", + "pt": "Loja de frutas e verduras", + "ru": "Магазин овощей и фруктов", + "sk": "Predajňa zeleniny", + "sl": "Sadje in zelenjava", + "sr": "Пиљар", + "sv": "Grönsakshandlare", + "tr": "Manav", + "uk": "Овочевий", + "vi": "Tiệm Rau quả", + "yue": "菜檔", + "zh-CN": "果蔬店", + "zh-HK": "菜檔", + "zh-TW": "蔬果店", + "zh": "果蔬店", + "mk": "Пилјарница", + "bg": "Плод-зеленчук", + "he": "ירקן", + "ms": "Kedai Menjual Sayur" + } + }, + "shop/hairdresser": { + "title": { + "C": "Hairdresser", + "en": "Hairdresser", + "af": "Haarkapper", + "ar": "حلاق", + "ast": "Peluquería", + "bs": "Frizer", + "ca": "Perruqueria", + "cs": "Kadeřnictví", + "da": "Frisør", + "de": "Friseur", + "el": "Κομμωτήριο", + "en-GB": "Hairdresser", + "eo": "Frizejo", + "es": "Peluquería", + "et": "Juuksurisalong", + "fa": "آرایشگاه", + "fi": "Parturi-kampaamo", + "fr": "Salon de coiffure", + "gl": "Perrucaría", + "hr": "Frizerski salon", + "hu": "Fodrász", + "id": "Salon", + "is": "Hárstofa", + "it": "Parrucchiere", + "ja": "理美容店", + "ko": "미용실", + "lt": "Kirpykla", + "lv": "Frizieris", + "nl": "Kapper", + "no": "Frisør", + "pl": "Fryzjer", + "pt-BR": "Cabeleireiro", + "pt": "Cabeleireiro(a)", + "ro": "Frizer", + "ru": "Парикмахерская", + "sk": "Kaderníctvo", + "sl": "Frizer", + "sr": "Фризер", + "sv": "Hårfrisör", + "tr": "Kuaför", + "uk": "Перукарня", + "vi": "Tiệm Làm tóc", + "yue": "飛髮舖", + "zh-CN": "理发店", + "zh-HK": "理髮店", + "zh-TW": "理髮店", + "zh": "理发点", + "mk": "Фризерски салон", + "bg": "Фризьорски салон", + "he": "מעצב שיער" + } + }, + "shop/hardware": { + "title": { + "C": "Hardware Store", + "en": "Hardware Store", + "af": "Hardewarewinkel", + "ar": "محل أجهزة", + "ast": "Ferretería", + "bs": "Prodavnica željezarije", + "ca": "Ferreteria", + "cs": "Železářství", + "da": "Værktøjsbutik", + "de": "Eisenwarenhandel", + "el": "Χρωματοπωλείο", + "en-GB": "Hardware Shop", + "eo": "Laborila vendejo", + "es": "Ferretería", + "et": "Rauakauplus", + "fa": "فروشگاه ابزارآلات و یراق", + "fi": "Rautakauppa", + "fr": "Quincaillerie", + "gl": "Ferraxaría", + "hr": "Željezarija", + "hu": "Vas-műszaki bolt", + "id": "Toko Perkakas", + "is": "Byggingavöruverslun", + "it": "Ferramenta", + "ja": "金物屋", + "ko": "철물점", + "lt": "Techninės įrangos parduotuvė", + "lv": "Celtniecības veikals", + "nl": "Bouwmarkt", + "no": "Jernvarehandel", + "pl": "Sklep z narzędziami", + "pt-BR": "Loja de Material de Construção", + "pt": "Loja de ferragens", + "ru": "Хозяйственный магазин", + "sk": "Železiarstvo", + "sl": "Železnina", + "sr": "Гвожђара", + "sv": "Järnaffär", + "tr": "Donanım Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Ngũ kim", + "yue": "五金舖", + "zh-CN": "五金店", + "zh-HK": "五金店", + "zh-TW": "五金店", + "zh": "五金店", + "mk": "Продавница за алат и опрема", + "bg": "Железария", + "dv": "ހާރޑްވެއާރ ފިހާރަ", + "he": "חנות אספקה טכנית", + "so": "Dukaanka Qalabka" + } + }, + "shop/hearing_aids": { + "title": { + "C": "Hearing Aids Store", + "en": "Hearing Aids Store", + "ar": "متجر سماعات الأذن الطبية", + "ast": "Audiólogu", + "ca": "Centre d'audició", + "cs": "Obchod s naslouchátky", + "da": "Høreapparatbutik", + "de": "Hörgerätegeschäft", + "el": "Κατάστημα ακουστικών βαρηκοΐας", + "en-GB": "Hearing Aids Shop", + "eo": "Aŭd-helpila vendejo", + "es": "Tienda de audífonos", + "et": "Kuulmisabipood", + "fa": "فروشگاه لوازم کمک شنوایی", + "fi": "Kuuloapumyymälä", + "fr": "Audioprothésiste", + "gl": "Tenda de audífonos", + "hr": "Prodavaonica slušnih pomagala", + "hu": "Hallókészülékbolt", + "id": "Toko Alat Bantu Dengar", + "is": "Heyrnartækjaverslun", + "it": "Negozio di apparecchi acustici", + "ja": "補聴器店", + "ko": "보청기 가게", + "lt": "Klausos aparatų parduotuvė", + "nl": "Hoorapparatenwinkel", + "no": "Høreapparatutsalg", + "pl": "Sklep z aparatami słuchowymi", + "pt-BR": "Loja de Aparelhos Auditivos", + "pt": "Loja de aparelhos auditivos", + "ru": "Магазин по продаже слуховых аппаратов", + "sk": "Obchod s načúvacími prístrojmi", + "sl": "Trgovina s slušnimi pripomočki", + "sv": "Hörapparater", + "tr": "İşitme Cihazı Mağazası ", + "uk": "Слухові апарати", + "vi": "Tiệm Ống nghe", + "zh-CN": "听觉恢复用品店", + "zh-HK": "助聽器店", + "zh-TW": "助聽器店", + "mk": "Продавница за слушни помагала", + "he": "חנות מכשירי שמיעה" + } + }, + "shop/herbalist": { + "title": { + "C": "Herbalist", + "en": "Herbalist", + "ar": "محل بيع الأعشاب الطبية", + "ast": "Herbolariu", + "ca": "Herborista", + "cs": "Bylinkářství", + "da": "Helseforretning", + "de": "Kräuterladen", + "el": "Βοτανολόγος", + "en-GB": "Herbalist", + "eo": "Herba vendejo", + "es": "Herbolario", + "et": "Ravimtaimekauplus", + "fa": "عطاری", + "fi": "Luontaistuotemyymälä", + "fr": "Herboristerie", + "gl": "Herboristaría", + "hu": "Gyógynövénybolt", + "is": "Grasalæknir", + "it": "Erboristeria", + "ja": "薬草店", + "ko": "약초 가게", + "lt": "Žolininkas", + "nl": "Herbalist", + "no": "Plantelegemiddelbutikk", + "pl": "Zielarz", + "pt-BR": "Ervanária", + "pt": "Ervanária", + "ru": "Магазин трав и лекарственных растений", + "sk": "Bylinkárstvo", + "sl": "Zeliščarstvo", + "sr": "Травар", + "sv": "Medicinalväxter", + "tr": "Şifalı Bitkiler Mağazası", + "uk": "Ботаник", + "vi": "Tiệm Thuốc Bắc/Nam", + "zh-CN": "草药店", + "zh-HK": "草藥店", + "zh-TW": "草藥店", + "mk": "Билна аптека", + "he": "חנות צמחי מרפא" + } + }, + "shop/hifi": { + "title": { + "C": "Hifi Store", + "en": "Hifi Store", + "af": "Hoëtrouwinkel", + "ar": "محل بيع أجهزة عالية الدقة", + "ast": "Equipos de música", + "bs": "HiFi prodavnica", + "ca": "Botiga d'alta fidelitat", + "cs": "Hifi elektronika", + "da": "Radioforhandler", + "de": "HiFi-Laden", + "el": "Κατάστημα Hifi", + "en-GB": "Hifi Shop", + "eo": "Aldfidela-sona vendejo", + "es": "Tienda de equipos de sonido", + "et": "Hifi kauplus", + "fa": "فروشگاه لوازم صوتی", + "fi": "Hifimyymälä", + "fr": "Magasin de matériel hi-fi", + "gl": "Tenda de equipamento de son", + "hr": "Prodavaonica audio opreme", + "hu": "HiFi-bolt", + "id": "Toko Hifi", + "is": "Hljómverslun", + "it": "Negozio Hifi", + "ja": "音響機器店", + "ko": "고급 오디오 가게", + "lt": "Hifi parduotuvė", + "nl": "Hifi-/Bruingoedwinkel", + "no": "Hifi-butikk", + "pl": "Sklep ze sprzętem hi-fi", + "pt-BR": "Loja de Aparelhos Hi-Fi", + "pt": "Loja de alta fidelidade", + "ru": "Магазин по продаже Hi-Fi", + "sk": "Obchod s ozvučením", + "sl": "Trgovina z avdio opremo", + "sr": "Музичка опрема", + "sv": "HiFi-butik", + "tr": "Hoparlör Mağazası", + "uk": "Аудіо апаратура", + "vi": "Tiệm Thiết bị Âm thanh", + "yue": "音響舖", + "zh-CN": "音响店", + "zh-HK": "音響店", + "zh-TW": "音響店", + "zh": "音响店", + "mk": "Продавница за аудиоопрема", + "bg": "Магазин за аудиотехника", + "he": "חנות הגברה" + } + }, + "shop/houseware": { + "title": { + "C": "Houseware Store", + "en": "Houseware Store", + "ar": "متجر الأدوات المنزلية", + "ast": "Menaxe del llar", + "ca": "Botiga de la llar", + "cs": "Domácí potřeby", + "da": "Køkkenudstyr", + "de": "Haushaltswarengeschäft", + "el": "Είδη Οικιακής Χρήσης", + "en-GB": "Houseware Store", + "eo": "Mastrum-aparata vendejo", + "es": "Tienda de artículos del hogar ", + "et": "Kodutarvete kauplus", + "fa": "فروشگاه لوازم خانگی ", + "fi": "Kotitarvikekauppa", + "fr": "Magasin d’articles ménagers", + "gl": "Tenda de artigos do fogar", + "hu": "Háztartási bolt", + "is": "Búsáhaldaverslun", + "it": "Casalinghi", + "ja": "家庭用品店", + "ko": "가정용품 가게", + "nl": "Huisraadwinkel", + "no": "Isenkrambutikk", + "pl": "Sklep z małymi artykułami gospodarstwa domowego", + "pt-BR": "Loja de Utensílios Domésticos", + "pt": "Loja de artigos para o lar", + "ru": "Магазин товаров для дома", + "sk": "Domáce potreby", + "sr": "Позамантерија", + "sv": "Husgeråd", + "tr": "Ev Eşyaları Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Gia dụng", + "zh-CN": "家居用品店", + "zh-HK": "家庭用品店", + "zh-TW": "家庭用品店", + "mk": "Продавница за домот", + "bg": "Домашни потреби", + "he": "חנות כלי בית" + } + }, + "shop/interior_decoration": { + "title": { + "C": "Interior Decoration Store", + "en": "Interior Decoration Store", + "ar": "متجر الديكور الداخلي", + "ast": "Decoración d'interiores", + "ca": "Botiga d'Interiorisme", + "cs": "Obchod s bytovými doplňky", + "da": "Brugskunstbutik", + "de": "Innenausstattungsgeschäft", + "el": "Διακοσμητές Εσωτερικών Χώρων", + "en-GB": "Interior Decoration Shop", + "eo": "Ensembla (meblara) vendejo", + "es": "Tienda de decoración de interiores", + "et": "Sisedekoratsioonikauplus", + "fa": "فروشگاه تزئینات داخلی", + "fi": "Sisustusmyymälä", + "fr": "Magasin de décoration d'intérieur", + "gl": "Tenda de decoración de interiores", + "hr": "Trgovina unutarnjeg uređenja", + "hu": "Lakberendezési bolt", + "id": "Toko Dekorasi Interior", + "is": "Innanhúshönnunarverslun", + "it": "Negozio di decorazioni per interni", + "ja": "インテリアショップ", + "ko": "실내장식 가게", + "lt": "Interjero dekoravimo parduotuvė", + "nl": "Binnenhuisdecoratiewinkel", + "no": "Interiørbutikk", + "pl": "Sklep z dekoracją wnętrz", + "pt-BR": "Loja de Decoração Interior", + "pt": "Loja de decoração de interiores", + "ro": "Magazin de Decorații Interioare", + "ru": "Магазин предметов интерьера", + "sk": "Obchod s bytovými dekoráciami", + "sr": "Унутрашња декорација", + "sv": "Inredningsaffär", + "tr": "İç Dekorasyon Mağazası", + "uk": "Оформлення інтер’єру", + "vi": "Tiệm Trang trí Nội thất", + "zh-CN": "室内装饰店", + "zh-HK": "室內設計店", + "zh-TW": "室內設計店", + "mk": "Продавница за внатрешно уредување", + "he": "חנות עיצוב פנים" + } + }, + "shop/jewelry": { + "title": { + "C": "Jewelry Store", + "en": "Jewelry Store", + "ar": "محل مجوهرات", + "cs": "Klenotnictví", + "da": "Guldsmed", + "de": "Juwelier", + "el": "Κοσμηματοπωλείο", + "eo": "Juvelista vendejo", + "es": "Joyería", + "fa": "جواهرفروشی", + "fi": "Jalokiviliike", + "fr": "Bijouterie", + "hr": "Prodavaonica nakita", + "hu": "Ékszerüzlet", + "is": "Skartgripaverslun", + "it": "Negozio di gioielli", + "ja": "宝飾店", + "ko": "귀금속 가게", + "nl": "Juwelierszaak", + "no": "Gullsmed", + "pl": "Sklep jubilerski", + "pt-BR": "Joalheria", + "pt": "Ouriversaria", + "ru": "Ювелирный магазин", + "tr": "Kuyumcu", + "uk": "Ювелірні прикраси", + "vi": "Tiệm Kim hoàn", + "zh-CN": "珠宝店", + "zh-TW": "珠寶店", + "mk": "Златарница", + "he": "חנות תכשיטים" + } + }, + "shop/kiosk": { + "title": { + "C": "Kiosk", + "en": "Kiosk", + "ar": "كشك", + "ast": "Quioscu", + "ca": "Quiosc", + "cs": "Kiosek", + "de": "Kiosk", + "el": "Περίπτερο", + "eo": "Gazetbudo", + "es": "Quiosco", + "fa": "دکه", + "fi": "Kioski", + "fr": "Kiosque", + "gl": "Quiosco", + "hr": "Kiosk", + "hu": "Trafik", + "is": "Blaðastandur", + "it": "Chiosco", + "ja": "キオスク", + "ko": "가판대", + "lt": "Kioskas", + "lv": "Kiosks", + "nl": "Winkelkiosk", + "no": "Kiosk", + "pl": "Kiosk", + "pt-BR": "Quiosque", + "pt": "Quiosque", + "ru": "Магазин в виде киоска", + "sl": "Kiosk", + "sq": "Kioskë", + "sr": "Киоск", + "sv": "Kiosk", + "uk": "Кіоск", + "vi": "Gian hàng", + "zh-CN": "售货亭", + "zh-TW": "販賣亭", + "mk": "Киоск", + "he": "קיוסק" + } + }, + "shop/kitchen": { + "title": { + "C": "Kitchen Design Store", + "en": "Kitchen Design Store", + "ar": "متجر تصميم مطابخ", + "ast": "Diseñu de cocines", + "ca": "Botiga de disseny de cuines", + "cs": "Kuchyňské studio", + "da": "Køkkenforhandler", + "de": "Küchenfachmarkt", + "el": "Διακόσμηση Κουζίνας", + "en-GB": "Kitchen Design Shop", + "eo": "Kuirej-mebla vendejo", + "es": "Tienda de diseño de cocinas", + "et": "Köögimööblikauplus", + "fa": "فروشگاه تزئینات آشپزخانه", + "fi": "Keittiöliike", + "fr": "Cuisiniste", + "gl": "Tenda de deseño de cociñas", + "hr": "Trgovina kuhinjskog namještaja", + "hu": "Konyhabútorbolt", + "id": "Toko Desain Interior Dapur", + "is": "Eldhúshönnunarverslun", + "it": "Negozio di cucine", + "ja": "キッチンデザイン店", + "ko": "주방 디자인 가게", + "lt": "Virtuvės dizaino parduotuvė", + "lv": "Virtuves dizaina veikals", + "nl": "Keukenontwerpwinkel", + "no": "Kjøkkenbutikk", + "pl": "Sklep z wyposażeniem i meblami kuchennymi", + "pt-BR": "Loja de Cozinhas", + "pt": "Loja de cozinhas", + "ro": "Magazin de Bucătărie", + "ru": "Магазин кухонь", + "sk": "Kuchynské štúdio", + "sq": "Dyqan për Aredim të Kuzhinës", + "sr": "Кухињски дизајн", + "sv": "Köksinredning", + "tr": "Mutfak Eşyaları Mağazası", + "uk": "Меблі для кухні", + "vi": "Tiệm Thiết kế Phòng bếp", + "zh-CN": "厨房用品店", + "zh-HK": "廚房設計店", + "zh-TW": "廚房設計行", + "mk": "Кујни и елементи", + "he": "חנות עיצוב המטבח" + } + }, + "shop/laundry": { + "title": { + "C": "Laundry", + "en": "Laundry", + "af": "Wassery", + "ar": "محل غسيل ملابس", + "ast": "Llavandería", + "bs": "Praonica", + "ca": "Bugaderia", + "cs": "Prádelna", + "da": "Vaskeri", + "de": "Wäscherei", + "el": "Καθαριστήριο", + "en-GB": "Laundry", + "eo": "Vest-lavejo (akvo)", + "es": "Lavandería", + "et": "Pesumaja", + "fa": "رخت‌شوی‌خانه", + "fi": "Pesula", + "fr": "Laverie", + "gl": "Lavandaría", + "hr": "Praonica rublja", + "hu": "Mosoda", + "id": "Penatu", + "is": "Þvottur", + "it": "Lavanderia", + "ja": "洗濯屋・ランドリー(非セルフ)", + "kn": "ಧೋಬಿಖಾನೆ", + "ko": "세탁소", + "lt": "Skalbykla", + "lv": "Veļas mazgātuve", + "nl": "Wasserette", + "no": "Vaskeri", + "pl": "Pralnia", + "pt-BR": "Lavanderia", + "pt": "Lavandaria", + "ro": "Spălătorie", + "ru": "Прачечная", + "sk": "Čistiareň", + "sl": "Pralnica", + "sq": "Lavanderi", + "sr": "Перионица", + "sv": "Tvättinrättning", + "ta": "சலவையகம்", + "tr": "Çamaşır Yıkama", + "uk": "Пральня", + "vi": "Tiệm Máy giặt", + "yue": "洗衣舖", + "zh-CN": "洗衣店", + "zh-HK": "洗衣店", + "zh-TW": "洗衣店", + "zh": "洗衣店", + "mk": "Перачница", + "bg": "Пералня", + "he": "כביסה" + } + }, + "shop/leather": { + "title": { + "C": "Leather Store", + "en": "Leather Store", + "ar": "متجر المنتجات الجلدية", + "ast": "Artículos de piel", + "ca": "Botiga de cuirs", + "cs": "Kožené zboží", + "da": "Læderbutik", + "de": "Lederwarengeschäft", + "el": "Κατάστημα με Δερμάτινα", + "en-GB": "Leather Shop", + "eo": "Ledaĵa vendejo", + "es": "Talabartería", + "et": "Nahakauplus", + "fa": "فروشگاه چرم", + "fi": "Nahkaliike", + "fr": "Maroquinier", + "gl": "Tenda de peles", + "hr": "Trgovina kožnom galanterijom", + "hu": "Bőrdíszműbolt", + "id": "Toko Kulit", + "is": "Leðurvöruverslun", + "it": "Pelletteria", + "ja": "皮革用品店", + "ko": "가죽 가게", + "lt": "Odos dirbinių parduotuvė", + "lv": "Ādas veikals", + "nl": "Lederwinkel", + "no": "Skinnbutikk", + "pl": "Sklep z odzieżą skórzaną", + "pt-BR": "Loja de Couros", + "pt": "Loja de couro", + "ru": "Магазин кожаных изделий", + "sk": "Obchod s kožennými výrobkami", + "sl": "Usnjarna", + "sv": "Läderaffär", + "ta": "தோல் கடை", + "tr": "Deri Dükkanı", + "uk": "Магазин шкіри", + "vi": "Tiệm Đồ Da", + "zh-CN": "皮具店", + "zh-HK": "皮革店", + "zh-TW": "皮革店", + "mk": "Кожна галантерија", + "he": "חנות עור" + } + }, + "shop/locksmith": { + "title": { + "C": "Locksmith", + "en": "Locksmith", + "ar": "محل أقفال", + "ast": "Cerraxería", + "bs": "Bravar", + "ca": "Copisteria de claus", + "cs": "Zámečnictví", + "da": "Låsesmed", + "de": "Schlüsseldienst", + "el": "Κλειδαράς", + "en-GB": "Locksmith", + "eo": "Serurejo", + "es": "Cerrajería", + "et": "Lukksepp", + "fa": "قفل سازی", + "fi": "Lukkoliike", + "fr": "Serrurier", + "gl": "Cerralleiro", + "hr": "Bravar", + "hu": "Lakatos", + "id": "Ahli Kunci", + "is": "Lásasmiður", + "it": "Fabbro", + "ja": "鍵屋(専門店)", + "ko": "열쇠 제조공", + "lt": "Raktininkas", + "lv": "Atslēdznieks", + "nl": "Slotenmaker", + "no": "Låsesmed", + "pl": "Ślusarz", + "pt-BR": "Serralheiro", + "pt": "Chaveiro", + "ru": "Изготовление ключей", + "sk": "Zámočníctvo", + "sl": "Ključavničar", + "sr": "Бравар", + "sv": "Låssmed", + "tr": "Anahtarcı", + "uk": "Слюсар", + "vi": "Thợ khóa", + "yue": "鎖匠", + "zh-CN": "锁匠铺", + "zh-HK": "鎖匠", + "zh-TW": "鎖匠", + "mk": "Бравар", + "he": "מנעולן" + } + }, + "shop/lottery": { + "title": { + "C": "Lottery Shop", + "en": "Lottery Shop", + "ar": "متجر اليانصيب", + "ast": "Loteríes", + "ca": "Administració de loteria", + "cs": "Prodejna losů", + "da": "Lotteributik", + "de": "Lottoannahmestelle", + "el": "Κατάστημα λαχείων", + "en-GB": "Lottery Shop", + "eo": "Loterbileta vendejo", + "es": "Lotería", + "et": "Lotopood", + "fa": "فروشگاه قرعه کشی", + "fi": "Veikkauspiste", + "fr": "Loterie", + "gl": "Tenda de lotaría", + "hr": "Trgovina igara na sreću", + "hu": "Lottózó", + "id": "Toko Lotre", + "is": "Lottósjoppa", + "it": "Ricevitoria", + "ja": "宝くじ売り場", + "ko": "복권 가게", + "lt": "Loterijų parduotuvė", + "lv": "Loterijas veikals", + "nl": "Loterij", + "no": "Tipping", + "pl": "Kolektura", + "pt-BR": "Casa lotérica", + "pt": "Loja de lotaria", + "ro": "Loterie", + "ru": "Продажа лотерейных билетов", + "sk": "Lotéria", + "sl": "Loterijska prodajalna", + "sr": "Лутрија", + "sv": "Lotteri", + "tr": "Loto Bayi", + "uk": "Лоторейний магазин", + "vi": "Tiệm Xổ số", + "zh-CN": "彩票店", + "zh-HK": "獎券店", + "zh-TW": "彩券行", + "mk": "<преведете со истозначници или сродни поими на „Лотарија“, одделени со запирки>", + "bg": "Лотарийни билети", + "he": "חנות לוטו" + } + }, + "shop/mall": { + "title": { + "C": "Mall", + "en": "Mall", + "af": "Winkelsentrum", + "ar": "مركز تسوق مول", + "ast": "Centru comercial", + "bn": "মল", + "bs": "Tržni centar", + "ca": "Centre comercial", + "cs": "Obchodní centrum", + "da": "Indkøbscenter", + "de": "Einkaufzentrum", + "el": "Εμπορικό Κέντρο", + "en-GB": "Mall", + "eo": "Vendejaro", + "es": "Centro comercial", + "et": "Kaubanduskeskus", + "fa": "مرکز خرید", + "fi": "Kauppakeskus", + "fr": "Centre commercial", + "gl": "Centro comercial", + "hr": "Trgovački centar", + "hu": "Bevásárlóközpont", + "id": "Mal", + "is": "Verslunarmiðstöð", + "it": "Centro commerciale", + "ja": "ショッピングセンター", + "ko": "쇼핑몰", + "lt": "Prekybos centras", + "lv": "Iepirkšanās centrs", + "nl": "Winkelcentrum", + "no": "Kjøpesenter", + "pl": "Centrum handlowe", + "pt-BR": "Shopping ou Galeria de lojas", + "pt": "Centro comercial", + "ro": "Mall", + "ru": "Торговый центр", + "sk": "Nákupné centrum", + "sl": "Trgovski center", + "sr": "Тржни центар", + "sv": "Köpcenter", + "ta": "பேரங்காடி", + "tr": "Alışveriş Merkezi", + "uk": "Торгівельний центр", + "vi": "Trung tâm Thương mại", + "yue": "大商場", + "zh-CN": "购物中心", + "zh-HK": "購物中心", + "zh-TW": "購物中心", + "zh": "商场", + "mk": "Трговски центар", + "bg": "Мол", + "he": "קניון" + } + }, + "shop/massage": { + "title": { + "C": "Massage Shop", + "en": "Massage Shop", + "ar": "صالون التدليك", + "ast": "Masaxes", + "ca": "Centre de massatges", + "cs": "Masáže", + "da": "Massagebutik", + "de": "Massagesalon", + "el": "Κατάστημα Μασάζ", + "en-GB": "Massage Shop", + "eo": "Salono de masaĝo", + "es": "Tienda de masajes", + "et": "Massaaž", + "fa": "فروشگاه ماساژ", + "fi": "Hierontayritys", + "fr": "Salon de massage", + "gl": "Tenda de masaxes", + "hr": "Studio za masažu", + "hu": "Masszázsszalon", + "id": "Panti Pijat", + "is": "Nuddstofa", + "it": "Centro Massaggi", + "ja": "マッサージ店", + "ko": "마사지 가게", + "lt": "Masažo parduotuvė", + "lv": "Masāžu veikals", + "nl": "Massagewinkel", + "no": "Massasjesenter", + "pl": "Masaż", + "pt-BR": "Loja de Massagem", + "pt": "Centro de massagens", + "ro": "Masaj", + "ru": "Массажный салон", + "sk": "Masérstvo", + "sr": "Масажа", + "sv": "Massage", + "tr": "Masaj Salonu", + "uk": "Массаж", + "vi": "Tiệm Xoa bóp", + "zh-CN": "按摩店", + "zh-HK": "按摩店", + "zh-TW": "按摩店", + "mk": "Масажа", + "he": "מכון עיסוי" + } + }, + "shop/medical_supply": { + "title": { + "C": "Medical Supply Store", + "en": "Medical Supply Store", + "ar": "متجر مستلزمات طبية", + "ast": "Tienda d'equipu médicu", + "ca": "Farmàcia", + "cs": "Zdravotnické potřeby", + "da": "Håndkøbsmedicinforhandler", + "de": "Sanitätshaus", + "el": "Κατάστημα Προμήθειας Ιατρικών Ειδών", + "en-GB": "Medical Supply Shop", + "eo": "Medicin-aparata vendejo", + "es": "Tienda de aparatos ortopédicos", + "et": "Tervisetoodete kauplus", + "fa": "فروشگاه تجهیزات پزشکی", + "fi": "Lääketarvikemyymälä", + "fr": "Magasin de matériel médical", + "gl": "Tenda de subministracións médicas", + "hr": "Trgovina medicinske opreme", + "hu": "Gyógyászati segédeszközök boltja", + "id": "Toko Peralatan Medis", + "is": "Lækningavöruverslun", + "it": "Negozio di forniture mediche", + "ja": "健康・医療器具店", + "ko": "의료 용품 가게", + "lt": "Medicinos reikmenų parduotuvė", + "lv": "Medicīnisko piederumu veikals", + "nl": "Winkel voor Medische Hulpmiddelen", + "no": "Medisinsk utstyrsbutikk", + "pl": "Sklep ze sprzętem medycznym", + "pt-BR": "Loja de Equipamentos Hospitalares", + "pt": "Loja de material médico", + "ro": "Magazin Alimentar Medical", + "ru": "Медицинские принадлежности", + "sk": "Obchod so zdravotníckymi pomôckami", + "sl": "Trgovina z medicinskimi primpomočki", + "sr": "Медицинска опрема", + "sv": "Medicinsk utrustning ", + "tr": "Medikal Ürünler Mağazası", + "uk": "Медтехніка", + "vi": "Tiệm Thiết bị Y tế", + "zh-CN": "医疗用品店", + "zh-HK": "醫療器材行", + "zh-TW": "醫療器材行", + "mk": "Медицинска опрема и залихи", + "he": "חנות ציוד רפואי" + } + }, + "shop/mobile_phone": { + "title": { + "C": "Mobile Phone Store", + "en": "Mobile Phone Store", + "af": "Selfoonwinkel", + "ar": "محل بيع هواتف", + "ast": "Telefonía móvil", + "bn": "মোবাইল ফোন-এর দোকান", + "bs": "Prodavnica mobilnih uređaja", + "ca": "Botiga de telefonia mòbil", + "cs": "Obchod s mobily", + "da": "Mobiltelefonforhandler", + "de": "Mobiltelefonladen", + "el": "Κατάστημα Κινητής Τηλεφωνίας", + "en-GB": "Mobile Phone Shop", + "eo": "Poŝtelefona vendejo", + "es": "Tienda de telefonía móvil", + "et": "Mobiilipood", + "fa": "فروشگاه تلفن همراه", + "fi": "Matkapuhelinmyymälä", + "fr": "Magasin de téléphonie mobile", + "gl": "Tenda de telefonía móbil", + "hr": "Prodavaonica mobilnih telefona", + "hu": "Mobiltelefon-szaküzlet", + "id": "Toko Handphone", + "is": "Farsímaverslun", + "it": "Negozio di telefonia mobile", + "ja": "携帯電話店", + "ko": "휴대폰 가게", + "lt": "Mobiliųjų telefonų parduotuvė", + "lv": "Mobilo telefonu veikals", + "nl": "Mobieletelefoonwinkel", + "no": "Mobiltelefonforhandler", + "pl": "Sklep z telefonami komórkowymi", + "pt-BR": "Loja de Celulares", + "pt": "Loja de telemóveis", + "ro": "Magazin de Telefoane Mobile", + "ru": "Магазин мобильных телефонов и аксессуаров", + "sk": "Obchod s mobilnými telefónmi", + "sl": "Trgovina z mobilnimi telefoni", + "sr": "Продавница мобилних телефона", + "sv": "Mobiltelefoner", + "tr": "Cep Telefonu Mağazası", + "uk": "Мобільні телефони", + "vi": "Tiệm Điện thoại Di động", + "yue": "電話舖", + "zh-CN": "手机店", + "zh-HK": "流動電話店", + "zh-TW": "行動電話店", + "zh": "手机店", + "mk": "Мобилара", + "bg": "Магазин за мобилни телефони", + "dv": "މޯބައިލް ފޯނު ވިއްކާ ފިހާރަ", + "he": "חנות טלפונים ניידים", + "ms": "Kedai Telefon Bimbit", + "so": "Dukaanka Taleefoonka Gacanta" + } + }, + "shop/money_lender": { + "title": { + "C": "Money Lender", + "en": "Money Lender", + "ar": "مقرض المال", + "ast": "Prestamista", + "ca": "Prestamista", + "cs": "Nebankovní půjčky", + "da": "Pengeudlåner", + "de": "Geldverleiher", + "el": "Τοκογλύφος", + "en-GB": "Money Lender", + "eo": "Mon-pruntejo", + "es": "Prestamista de dinero", + "et": "Rahalaenutaja", + "fa": "وام دهنده پول", + "fi": "Rahanlainausliike", + "fr": "Prêteur", + "gl": "Prestamista de cartos", + "hu": "Pénzkölcsönző", + "id": "Peminjaman Uang", + "is": "Peningaútlán", + "it": "Agenzia Prestito", + "ja": "消費者金融", + "ko": "대출", + "lt": "Pinigų skolintojas", + "lv": "Naudas Aizdevējs", + "nl": "Particuliere Gelduitleendienst", + "no": "Pengeutlåner", + "pl": "Pożyczki", + "pt-BR": "Financiadora", + "pt": "Loja de empréstimos", + "ro": "Creditor de Bani", + "ru": "Ростовщик", + "sk": "Požičovňa peňazí", + "sl": "Posojilnica", + "sv": "Långivare", + "tr": "Tefeci", + "uk": "Кредитна спілка", + "vi": "Chỗ Mượn Tiền", + "zh-CN": "放贷人", + "zh-HK": "放債人", + "zh-TW": "地下錢莊", + "mk": "Зајмување пари", + "he": "מלווה בריבית", + "ms": "Ceti" + } + }, + "shop/motorcycle": { + "title": { + "C": "Motorcycle Dealership", + "en": "Motorcycle Dealership", + "af": "Motorfietshandelaar", + "ar": "بائع دراجات نارية", + "ast": "Venta de motos", + "bs": "Salon motocikala", + "ca": "Botiga de motocicletes", + "cs": "Obchod s motocykly", + "da": "Motorcykelforhandler", + "de": "Motorradhändler", + "el": "Εμπόριο Μοτοσυκλετών", + "en-GB": "Motorcycle Dealership", + "eo": "Motorcikla vendejo", + "es": "Concesionario de motocicletas", + "et": "Mootorrattapood", + "fa": "نمایندگی موتور سیکلت", + "fi": "Moottoripyöräliike", + "fr": "Vendeur de motos", + "gl": "Concesionario de motocicletas", + "hr": "Prodavaonica motocikala", + "hu": "Motorkerékpár-kereskedés", + "id": "Dealer Motor", + "is": "Mótorhjólaverslun", + "it": "Concessionario di motociclette", + "ja": "バイク店", + "ko": "오토바이 대리점", + "lt": "Motociklų prekybos atstovybė", + "lv": "Motociklu veikals", + "nl": "Motorwinkel", + "no": "Motorsykkelforhandler", + "pl": "Sklep motocyklowy", + "pt-BR": "Revenda de Motos", + "pt": "Loja de motas", + "ro": "Magazin de Motociclete", + "ru": "Магазин мотоциклов", + "sk": "Predajňa motocyklov", + "sl": "Trgovina z motorji", + "sr": "Продавница мотоцикала", + "sv": "Återförsäljare av motorcyklar", + "tr": "Motosiklet Satış Mağazası", + "uk": "Салон мотоциклів", + "vi": "Tiệm Xe máy", + "yue": "電單車行", + "zh-CN": "摩托车店", + "zh-HK": "電單車店", + "zh-TW": "機車行", + "zh": "摩托车行", + "mk": "Салон за мотоцикли", + "bg": "Магазин за мотоциклети", + "he": "חנות אופנועים" + } + }, + "shop/music": { + "title": { + "C": "Music Store", + "en": "Music Store", + "af": "Musiekwinkel", + "ar": "متجر بيع موسيقى", + "ast": "Tienda de música", + "bn": "সঙ্গীতের দোকান", + "bs": "Muzička prodavnica", + "ca": "Botiga de música", + "cs": "Obchod s hudbou", + "da": "Musikbutik", + "de": "Musikgeschäft", + "el": "Κατάστημα Μουσικής", + "en-GB": "Music Shop", + "eo": "Muzika vendejo", + "es": "Tienda de música", + "et": "Muusikapood", + "fa": "فروشگاه موسیقی", + "fi": "Musiikkiliike", + "fr": "Magasin de musique", + "gl": "Tenda de música", + "hr": "Prodavaonica glazbene opreme", + "hu": "Hanglemezbolt", + "id": "Toko Musik", + "is": "Tónlistarbúð", + "it": "Negozio di musica", + "ja": "CD/レコード店", + "ko": "음반 가게", + "lt": "Muzikos parduotuvė", + "lv": "Mūzikas veikals", + "nl": "Muziekwinkel", + "no": "Musikkforretning", + "pl": "Sklep muzyczny", + "pt-BR": "Loja de Discos Musicais", + "pt": "Loja de música", + "ro": "Magazin de Muzică", + "ru": "Музыкальный магазин", + "sk": "Obchod s hudbou", + "sl": "Trgovina z glasbo", + "sr": "Музичка продавница", + "sv": "Musikaffär", + "tr": "Müzik Mağazası", + "uk": "Музичний магазин", + "vi": "Tiệm Âm nhạc", + "yue": "唱片舖", + "zh-CN": "音乐店", + "zh-HK": "唱片店", + "zh-TW": "音樂店", + "zh": "音乐店", + "mk": "Продавница за музика", + "bg": "Музикален магазин", + "he": "חנות מוזיקה", + "ms": "Kedai Muzik" + } + }, + "shop/musical_instrument": { + "title": { + "C": "Musical Instrument Store", + "en": "Musical Instrument Store", + "ar": "متجر آلات موسيقية", + "ast": "Instrumentos musicales", + "ca": "Botiga d'instruments musicals", + "cs": "Obchod s hudebními nástroji", + "da": "Musikinstrumentbutik", + "de": "Musikinstrumentegeschäft", + "el": "Κατάστημα μουσικών οργάνων", + "en-GB": "Musical Instrument Shop", + "eo": "Muzikinstrumenta vendejo", + "es": "Tienda de instrumentos musicales", + "et": "Muusikainstrumentide kauplus", + "fa": "فروشگاه سازهای موسیقی", + "fi": "Instrumenttimyymälä", + "fr": "Magasin d'instruments de musique", + "gl": "Tenda de instrumentos musicais", + "hr": "Trgovina glazbenih instrumenata", + "hu": "Hangszerbolt", + "id": "Toko Alat Musik", + "is": "Hljóðfæraverslun", + "it": "Negozio di strumenti musicali", + "ja": "楽器店", + "ko": "악기 가게", + "lt": "Muzikos instrumentų parduotuvė", + "lv": "Mūzikas instrumentu veikals", + "nl": "Muziekinstrumentenwinkel", + "no": "Musikkinstrumentbutikk", + "pl": "Sklep z instrumentami muzycznymi", + "pt-BR": "Loja de Instrumentos Musicais", + "pt": "Loja de instrumentos musicais", + "ro": "Magazin de Instrumente Muzicale", + "ru": "Магазин музыкальных инструментов", + "sk": "Obchod s hudobnými nástrojmi", + "sl": "Trgovina z glasbenimi inštrumenti", + "sr": "Музички инструменти", + "sv": "Musikinstrument", + "tr": "Müzik Aletleri Mağazası", + "uk": "Магазин музикальних інструментів ", + "vi": "Tiệm Nhạc cụ", + "zh-CN": "乐器店", + "zh-HK": "樂器店", + "zh-TW": "音樂樂器行", + "mk": "Продавница за музички инструменти", + "he": "חנות כלי נגינה", + "ms": "Kedai Alatan Muzik" + } + }, + "shop/newsagent": { + "title": { + "C": "Newspaper/Magazine Shop", + "en": "Newspaper/Magazine Shop", + "ar": "محل بيع الجرائد", + "ast": "Prensa y revistes", + "ca": "Botiga de diaris i revistes", + "cs": "Trafika", + "da": "Avis/Bladforhandler", + "de": "Zeitschriftenhandel", + "el": "Πρακτορείο τύπου", + "en-GB": "Newspaper/Magazine Shop", + "eo": "Gazeta vendejo", + "es": "Puesto de periódicos / revistas", + "et": "Ajakirjapood", + "fa": "فروشگاه روزنامه/مجله", + "fi": "Lehtikoju", + "fr": "Magasin de journaux", + "gl": "Tenda de xornais/revistas", + "hr": "Trgovina za novine i magazine", + "hu": "Újságárus", + "id": "Toko Majalah/Koran", + "is": "Dagblaða/tímaritasala", + "it": "Edicola", + "ja": "新聞・雑誌店", + "ko": "신문/잡지 가게", + "lt": "Laikraščių/žurnalų parduotuvė", + "lv": "Avīžu / Žurnālu veikals", + "nl": "Kranten-/Tijdschriftwinkel", + "no": "Aviskiosk", + "pl": "Sklep z prasą", + "pt-BR": "Banca de Revistas", + "pt": "Loja de jornais / revistas", + "ro": "Magazin de Ziare", + "ru": "Газеты/пресса/журналы", + "sk": "Obchod s novinami/časopismi", + "sl": "Trgovina s časopisi/revijami", + "sr": "Дневне новине/часописи", + "sv": "Tidningsaffär", + "tr": "Gazete Bayii", + "uk": "Преса", + "vi": "Tiệm Báo", + "zh-CN": "报摊", + "zh-HK": "報紙/雜誌店", + "zh-TW": "報紙/雜誌攤", + "mk": "Весникарница", + "he": "חנות עיתונים" + } + }, + "shop/optician": { + "title": { + "C": "Optician", + "en": "Optician", + "af": "Oogarts", + "ar": "متجر نظارات", + "ast": "Óptica", + "bn": "চক্ষুরোগের চিকিত্সক", + "bs": "Optičar", + "ca": "Òptica", + "cs": "Optika", + "da": "Optiker", + "de": "Optiker", + "el": "Οπτικός", + "en-GB": "Optician", + "eo": "Optikbutiko", + "es": "Óptica", + "et": "Optikapood", + "fa": "عینک فروشی", + "fi": "Optikko", + "fr": "Opticien", + "gl": "Óptica", + "hr": "Optičar", + "hu": "Látszerész", + "id": "Optik", + "is": "Gleraugnaverslun", + "it": "Ottico", + "ja": "メガネ店", + "kn": "ನೇತ್ರ ತಜ್ಞ", + "ko": "안경점", + "lt": "Optika", + "lv": "Optometrists", + "nl": "Opticien", + "no": "Optiker", + "pl": "Optyk", + "pt-BR": "Ótica", + "pt": "Ótica", + "ro": "Optician", + "ru": "Оптика", + "sk": "Optika", + "sl": "Optik", + "sq": "Okulist", + "sr": "Оптичар", + "sv": "Optiker", + "tr": "Gözlükçü", + "uk": "Оптика", + "vi": "Tiệm Kính mắt", + "yue": "眼鏡鋪", + "zh-CN": "眼镜店", + "zh-HK": "眼鏡店", + "zh-TW": "眼鏡行", + "zh": "眼镜店", + "mk": "Оптичар", + "bg": "Оптика", + "he": "אופטיקאי" + } + }, + "shop/supermarket": { + "title": { + "C": "Supermarket", + "en": "Supermarket", + "af": "Supermark", + "ar": "سوبر ماركت", + "ast": "Supermercáu", + "bn": "সুপারমার্কেট", + "bs": "Supermarket", + "ca": "Supermercat", + "cs": "Supermarket", + "da": "Supermarked", + "de": "Supermarkt", + "el": "Supermarket", + "en-GB": "Supermarket", + "eo": "Superbazaro", + "es": "Supermercado", + "et": "Supermarket", + "fa": "فروشگاه بزرگ", + "fi": "Supermarketti", + "fr": "Supermarché", + "gl": "Supermercado", + "hr": "Veletrgovina", + "hu": "Szupermarket", + "id": "Supermarket", + "is": "Stórmarkaður", + "it": "Supermercato", + "ja": "スーパーマーケット", + "ko": "슈퍼마켓", + "lt": "Prekybos centras", + "lv": "Lielveikals", + "nl": "Supermarkt", + "no": "Supermarked", + "pl": "Supermarket", + "pt-BR": "Supermercado", + "pt": "Supermercado / Hipermercado", + "ro": "Supermarket", + "ru": "Супермаркет", + "sk": "Supermarket", + "sl": "Supermarket", + "sq": "Supermarket", + "sr": "Самопослуга", + "sv": "Snabbköp", + "te": "సుపర్ మార్కెట్", + "tr": "Süpermarket", + "uk": "Супермаркет", + "vi": "Siêu thị", + "yue": "超級市場", + "zh-CN": "超市", + "zh-HK": "超級市場", + "zh-TW": "超級市場", + "zh": "超级市场", + "mk": "Супермаркет", + "bg": "Супермаркет", + "dv": "ސުޕަރމާރކެޓް", + "he": "סופרמרקט", + "so": "Suuq-weyne" + } + }, + "organic/only": { + "title": { + "C": "Organic Goods Store" + } + }, + "shop/outdoor": { + "title": { + "C": "Outdoors Store", + "en": "Outdoors Store", + "ar": "متجر ملابس ومعدات الأنشطة في الهواء الطلق", + "ast": "Equipamientu d'aire llibre", + "ca": "Botiga per a activitats a l'aire lliure", + "cs": "Outdoorové zboží", + "da": "Friluftsudstyrsbutik", + "de": "Outdoorgeschäft", + "el": "Κατάστημα με Είδη Εξοπλισμού Υπαίθρου", + "en-GB": "Outdoors Shop", + "eo": "Vojaĝila vendejo", + "es": "Tienda de actividades al aire libre", + "et": "Matkatarvete kauplus", + "fa": "فروشگاه لوازم کوهنوردی و کمپینگ", + "fi": "Ulkoilmamyymälä", + "fr": "Magasin de matériel de sports de plein air", + "gl": "Tenda de actividades ó ar libre", + "hr": "Trgovina sa opremom za kampiranje", + "hu": "Túrafelszerelés-bolt", + "id": "Toko Perlengkapan Outdoor", + "is": "Útivistarbúð", + "it": "Negozio per sport all'aria aperta", + "ja": "アウトドアショップ", + "ko": "아웃도어 가게", + "lt": "Laisvalaikio parduotuvė", + "nl": "Winkel voor Benodigdheden voor Buitenactiviteiten", + "no": "Villmarksbutikk", + "pl": "Sklep turystyczny", + "pt-BR": "Loja de Esportes de Aventura", + "pt": "Loja de artigos para atividades ao ar livre", + "ro": "Magazin în Aer Liber", + "ru": "Магазин снаряжения для активного отдыха", + "sk": "Outdoorový obchod", + "sl": "Trgovina za dejavosti na prostem", + "sv": "Friluftsaffär", + "tr": "Kamp Malzemeleri Mağazası", + "uk": "Активний відпочинок", + "vi": "Tiệm Thể thao Ngoài trời", + "zh-CN": "户外用品店", + "zh-HK": "戶外用品店", + "zh-TW": "戶外用品店", + "mk": "Продавница за рекреативна опрема", + "he": "חנות רהיטי גינה" + } + }, + "shop/paint": { + "title": { + "C": "Paint Store", + "en": "Paint Store", + "ar": "متجر دهانات وطلاء", + "ast": "Tienda de pintures", + "ca": "Botiga de pintura", + "cs": "Barvy a laky", + "da": "Farvehandel", + "de": "Farbengeschäft", + "el": "Χρωματοπωλείο", + "en-GB": "Paint Shop", + "eo": "Farba vendejo", + "es": "Tienda de pinturas", + "et": "Värvipood", + "fa": "فروشگاه رنگ", + "fi": "Maalikauppa", + "fr": "Magasin de peintures", + "gl": "Tenda de pinturas", + "hr": "Prodavaonica boja", + "hu": "Festékbolt", + "id": "Toko Cat", + "is": "Málningarvöruverslun", + "it": "Negozio di vernici", + "ja": "塗料店", + "ko": "페인트 가게", + "lt": "Dažų parduotuvė", + "lv": "Krāsu veikals", + "nl": "Verfwinkel", + "no": "Malingsbutikk", + "pl": "Sklep z farbami", + "pt-BR": "Loja de Tintas", + "pt": "Loja de tintas", + "ro": "Magazin de Pictură", + "ru": "Магазин красочных изделий", + "sk": "Obchod s nátermi", + "sl": "Trgovina z barvami", + "sr": "Фарбара", + "sv": "Färgbutik", + "tr": "Boyacı", + "uk": "Магазин фарб", + "vi": "Tiệm Sơn", + "zh-CN": "油漆店", + "zh-HK": "油漆店", + "zh-TW": "油漆行", + "mk": "Бои и лакови", + "he": "חנות צבע", + "ms": "Kedai Cat" + } + }, + "shop/pawnbroker": { + "title": { + "C": "Pawn Shop", + "en": "Pawn Shop", + "ar": "متجر رهن", + "ast": "Casa d'empeños", + "ca": "Botiga d'empenyoraments", + "cs": "Zastavárna", + "da": "Panteudlåner", + "de": "Pfandleiher", + "el": "Ενεχυροδανειστήριο", + "en-GB": "Pawn Shop", + "eo": "Mon-pruntejo (kontraŭ garantiaĵo)", + "es": "Casa de empeño", + "et": "Pandimaja", + "fi": "Panttilainaamo", + "fr": "Prêteur sur gages", + "gl": "Casa de empeños", + "hr": "Zalagaonica", + "hu": "Zálogház", + "id": "Pegadaian", + "is": "Veðlánari", + "it": "Banco dei pegni", + "ja": "質店", + "ko": "전당포", + "lt": "Lombardas", + "lv": "Lombards", + "nl": "Bank van lening", + "no": "Pantelåner", + "pl": "Lombard", + "pt-BR": "Loja de Penhoras", + "pt": "Casa de penhoras", + "ru": "Ломбард", + "sk": "Záložňa", + "sl": "Zastavljalnica", + "sr": "Залагаоница", + "sv": "Pantbank", + "tr": "İkinciel Alım Satım Mağazası", + "uk": "Ломбард", + "vi": "Tiệm Cầm đồ", + "zh-CN": "典当商铺", + "zh-HK": "當舖", + "zh-TW": "汽機車借款", + "mk": "Заложилница", + "he": "חנות יד שניה" + } + }, + "shop/pet": { + "title": { + "C": "Pet Store", + "en": "Pet Store", + "af": "Troeteldierwinkel", + "ar": "محل حيوانات أليفة", + "ast": "Tienda de mascotes", + "bs": "Prodavnica kućnih ljubnimaca", + "ca": "Botiga d'animals", + "cs": "Chovatelské potřeby", + "da": "Kæledyrsbutik", + "de": "Tierhandlung", + "el": "Κατάστημα Κατοικίδιων", + "en-GB": "Pet Shop", + "eo": "Dombesta vendejo", + "es": "Tienda de mascotas", + "et": "Lemmikloomapood", + "fa": "فروشگاه حیوانات خانگی", + "fi": "Lemmikkiliike", + "fr": "Animalerie", + "gl": "Tenda de mascotas", + "hr": "Prodavaonica kućnim ljubimcima", + "hu": "Kisállatkereskedés", + "id": "Toko Peliharaan", + "is": "Dýrabúð", + "it": "Negozio per animali", + "ja": "ペットショップ", + "ko": "애완동물 가게", + "lt": "Augintinių parduotuvė", + "lv": "Dzīvnieku veikals", + "nl": "Dierenwinkel", + "no": "Dyrebutikk", + "pl": "Sklep zoologiczny", + "pt-BR": "Loja de animais ou artigos para animais", + "pt": "Loja de animais de estimação", + "ro": "Magazin de Animale", + "ru": "Зоомагазин", + "sk": "Chovprodukt", + "sl": "Trgovina za domače živali", + "sr": "Продавница кућних љубимаца", + "sv": "Djurbutik", + "tr": "Evcil Hayvan Mağazası", + "uk": "Товари для тварин", + "vi": "Tiệm Vật nuôi", + "yue": "寵物舖", + "zh-CN": "宠物店", + "zh-HK": "寵物舖", + "zh-TW": "寵物店", + "zh": "宠物店", + "mk": "Продавница за домашни миленици", + "bg": "Зоо магазин", + "he": "חנות לחיות מחמד" + } + }, + "shop/photo": { + "title": { + "C": "Photography Store", + "en": "Photography Store", + "ar": "محل تصوير", + "ast": "Fotografía", + "bs": "Fotografska radnja", + "ca": "Botiga de fotografia", + "cs": "Fotografický obchod", + "da": "Fotoforretning", + "de": "Fotofachgeschäft", + "el": "Φωτογραφείο", + "en-GB": "Photography Shop", + "eo": "Fotografia vendejo", + "es": "Tienda de fotografía", + "et": "Fotograafiapood", + "fa": "عکس و ویدیو", + "fi": "Valokuvausliike", + "fr": "Tirage de photos", + "gl": "Tenda de fotografía", + "hr": "Prodavaonica fotografske opreme", + "hu": "Fotósbolt", + "id": "Toko Fotografi", + "is": "Ljósmyndavöruverslun", + "it": "Fotografo", + "ja": "写真店", + "ko": "사진 가게", + "lt": "Fotografijos parduotuvė", + "lv": "Fotogrāfijas veikals", + "nl": "Fotowinkel", + "no": "Fotobutikk", + "pl": "Sklep fotograficzny", + "pt-BR": "Loja de Fotografia", + "pt": "Loja de fotografia", + "ro": "Magazin de Fotografie", + "ru": "Фототовары", + "sk": "Obchod s fototechnikou", + "sl": "Foto trgovina", + "sr": "Фотографска радња", + "sv": "Fotoaffär ", + "tr": "Fotoğrafçı", + "uk": "Фототовари", + "vi": "Tiệm Chụp Hình", + "yue": "影相舖", + "zh-CN": "照相馆", + "zh-HK": "相片沖印店", + "zh-TW": "攝影用品店", + "mk": "Фотографски дуќан", + "he": "חנות צילום" + } + }, + "shop/pyrotechnics": { + "title": { + "C": "Fireworks Store", + "en": "Fireworks Store", + "ar": "متجر ألعاب نارية", + "ast": "Venta de pirotecnia", + "ca": "Botiga d'articles pirotècnics", + "cs": "Obchod s pyrotechnikou", + "da": "Fyrværkeributik", + "de": "Feuerwerksgeschäft", + "el": "Κατάστημα Πυροτεχνημάτων", + "en-GB": "Fireworks Shop", + "eo": "Art-fajraĵa vendejo", + "es": "Tienda de fuegos artificiales", + "et": "Ilutulestiku kauplus", + "fa": "فروشگاه لوازم آتش‌بازی ", + "fi": "Ilotulitemyymälä", + "fr": "Magasin de feux d'artifice", + "gl": "Tenda de fogos artificiais", + "hr": "Prodavaonica za pirotehniku", + "hu": "Tűzijátékbolt", + "id": "Toko Kembang Api", + "is": "Flugeldaverslun", + "it": "Negozio di fuochi d'artificio", + "ja": "花火店", + "ko": "불꽃놀이 가게", + "lt": "Fejerverkų parduotuvė", + "nl": "Vuurwerkwinkel", + "no": "Fyrverkerihandel", + "pl": "Sklep z ogniami sztucznymi", + "pt-BR": "Loja de Fogos de Artifício", + "pt": "Loja de pirotecnia", + "ro": "Magazin de Artificii", + "ru": "Магазин фейерверков", + "sk": "Obchod s pyrotechnikov", + "sv": "Fyrverkerier", + "tr": "Havai Fişek Mağazası", + "uk": "Феєрверки", + "vi": "Tiệm Pháo bông", + "yue": "煙花舖", + "zh-CN": "烟花爆竹店", + "zh-HK": "煙花店", + "zh-TW": "煙火商", + "mk": "Продавница за огномет", + "he": "חנות זיקוקים" + } + }, + "shop/radiotechnics": { + "title": { + "C": "Radio/Electronic Component Store", + "en": "Radio/Electronic Component Store", + "ar": "متجر المكونات الإلكترونية", + "ast": "Componentes electrónicos", + "ca": "Botiga d'articles electrònics", + "cs": "Obchod s elektronickými součástkami", + "da": "Radio/Elektronikbutik", + "de": "Radio/Elektronik-Geschäft", + "el": "Μαγαζί Ηλεκτρονικών Εξαρτημάτων", + "en-GB": "Radio/Electronic Component Shop", + "eo": "Radioteĥnika/elektronik-parta vendejo", + "es": "Tienda de componentes radio electrónicos", + "et": "Elektroonikakomponentide pood", + "fa": "فروشگاه رادیو/اجزای الکترونیکی", + "fi": "Elektroniikkakomponenttimyymälä", + "fr": "Magasin de composants électroniques et de radio ", + "gl": "Tenda de compoñentes electrónicos", + "hr": "Trgovina za elektroniku", + "hu": "Rádiótechnikai bolt", + "id": "Toko Komponen Radio/Elektronik", + "is": "Rafíhlutaverslun", + "it": "Negozio di componenti elettronici", + "ja": "電子部品店", + "ko": "라디오/전자 부품 가게", + "lt": "Radijo/elektroninių dalių parduotuvė", + "lv": "Radio / Elektronisko komponenšu veikals", + "nl": "Winkel voor radio- en elektronische componenten", + "no": "Elektronikkbutikk", + "pl": "Sklep z częściami elektronicznymi", + "pt-BR": "Loja de Componentes Eletrônicos", + "pt": "Loja de componentes eletrónicos / rádio", + "ru": "Магазин радиодеталей", + "sk": "Obchod s elektronikou", + "sl": "Trgovina z elektroniko", + "sv": "Radio/Elektronikbutik", + "tr": "Radyocu", + "uk": "Радіодеталі", + "vi": "Tiệm Linh kiện Điện tử", + "yue": "無綫電/電子零件舖", + "zh-CN": "音像制品店", + "zh-HK": "無線電/電子零件店", + "zh-TW": "無線電/電子零件店", + "mk": "Продавница за електрични делови", + "he": "חנות אלקטרוניקה ורדיו" + } + }, + "shop/religion": { + "title": { + "C": "Religious Store", + "en": "Religious Store", + "ar": "متجر ديني", + "ast": "Artículos relixosos", + "ca": "Botiga d'articles religiosos", + "cs": "Náboženské předměty", + "da": "Religøs forretning", + "de": "Devotionalienhandlung", + "el": "Κατάστημα Θρησκευτικών Ειδών", + "en-GB": "Religious Shop", + "eo": "Devotaĵa vendejo", + "es": "Tienda religiosa", + "et": "Usutarvete kauplus", + "fa": "فروشگاه مذهبی", + "fi": "Uskonnollinen myymälä", + "fr": "Magasin d'articles religieux", + "gl": "Tenda relixiosa", + "hr": "Prodavaonica religioznih pomagala", + "hu": "Kegytárgybolt", + "id": "Toko Agamawi", + "is": "Verslun með trúartengdar vörur", + "it": "Negozio di articoli religiosi", + "ja": "宗教用品店", + "ko": "종교 가게", + "lt": "Religinė parduotuvė", + "nl": "Religieuze winkel", + "no": "Religiøs butikk", + "pl": "Sklep z dewocjonaliami", + "pt-BR": "Loja de Artigos Religiosos", + "pt": "Loja de artigos religiosos", + "ro": "Magazin Religios", + "ru": "Религиозная лавка", + "sk": "Obchod s náboženkými pomôckami", + "sv": "Religiös butik", + "tr": "Dini Ürünler Mağazası", + "uk": "Церковна лавка", + "vi": "Tiệm Bán đồ Tôn giáo", + "yue": "宗教舖", + "zh-CN": "宗教商店", + "zh-HK": "宗教用品店", + "zh-TW": "宗教用品店", + "mk": "Верска продавница", + "he": "חנות לתשמישי דת" + } + }, + "shop/scuba_diving": { + "title": { + "C": "Scuba Diving Shop", + "en": "Scuba Diving Shop", + "ar": "متجر غوص تحت الماء", + "ast": "Tienda de merguyu", + "ca": "Botiga de submarinisme", + "cs": "Potřeby pro potápěče", + "da": "Dykkerudstyrsbutik", + "de": "Tauchwarengeschäft", + "el": "Κατάστημα Εξοπλισμού Καταδύσεων", + "en-GB": "Scuba Diving Shop", + "eo": "Subakvad-aparata vendejo", + "es": "Tienda de buceo", + "et": "Sukeldustarvikute kauplus", + "fa": "فروشگاه لوازم غواصی ", + "fi": "Sukellusliike", + "fr": "Magasin de matériel de plongée sous-marine", + "gl": "Tenda de mergullo", + "hr": "Prodavaonica opreme za ronjenje", + "hu": "Búvárfelszerelés-bolt", + "id": "Toko Perlengkapan Menyelam", + "is": "Verslun með köfunarvörur", + "it": "Negozio di attrezzatura per subacquei", + "ja": "スキューバダイビングショップ", + "ko": "스쿠버 다이빙 가게", + "lt": "Povandeninio nardymo parduotuvė", + "nl": "Duikwinkel", + "no": "Dykkerutstyrsbutikk", + "pl": "Sklep nurkowy", + "pt-BR": "Loja de Equipamentos de Mergulho", + "pt": "Loja de equipamento de mergulho", + "ro": "Magazin de Scufundări", + "ru": "Магазин подводного снаряжения", + "sk": "Obchod s potápačským vybavením", + "sl": "Trgovina s potapljaško opremo", + "sv": "Dykarbutik", + "tr": "Tüple Dalış Mağazası", + "uk": "Підводне плавання", + "vi": "Tiệm Dụng cụ Lặn Scuba", + "zh-CN": "潜水商店", + "zh-HK": "潛水用品店", + "zh-TW": "潛水用品店", + "mk": "Продавница за нуркачка опрема", + "he": "חנות לצוללנים" + } + }, + "shop/seafood": { + "title": { + "C": "Seafood Shop", + "en": "Seafood Shop", + "ar": "متجر مأكولات بحرية", + "ast": "Mariscos", + "ca": "Marisqueria", + "cs": "Rybárna", + "da": "Fiskehandler", + "de": "Fischgeschäft", + "el": "Κατάστημα Θαλασσινών", + "en-GB": "Seafood Shop", + "eo": "Marfrukta vendejo", + "es": "Tienda de pescados y mariscos", + "et": "Kalapood", + "fa": "فروشگاه غذای دریایی", + "fi": "Meriruokakauppa", + "fr": "Poissonnerie / Vente de fruits de mer", + "gl": "Peixaría", + "hr": "Ribarnica", + "hu": "Halbolt", + "id": "Toko HIdangan Laut", + "is": "Fiskverslun", + "it": "Pescheria", + "ja": "魚屋", + "ko": "해산물 가게", + "lt": "Jūros gėrybių parduotuvė", + "nl": "Viswinkel", + "no": "Sjømatbutikk", + "pl": "Sklep z owocami morza", + "pt-BR": "Peixaria ou loja de frutos do mar", + "pt": "Loja de marisco", + "ro": "Magazin de Fructe de Mare", + "ru": "Магазин морепродуктов", + "sk": "Obchod s morskými špecialitami", + "sl": "Ribarnica", + "sr": "Продавница морске хране ", + "sv": "Fiskaffär", + "tr": "Deniz Ürünleri Mağazası", + "uk": "Морепродукти", + "vi": "Tiệm Hải sản", + "zh-CN": "海鲜店", + "zh-HK": "海鮮店", + "zh-TW": "海產店", + "mk": "Продавница за морска храна", + "he": "חנות למאכלי ים" + } + }, + "shop/second_hand": { + "title": { + "C": "Consignment/Thrift Store", + "en": "Consignment/Thrift Store", + "ar": "محل لبيع البضائع المستعملة", + "ast": "Reventa d'empeños", + "ca": "Consigna", + "cs": "Second hand", + "da": "Genbrugsbutik", + "de": "Second-Hand-Laden", + "en-GB": "Second Hand Shop", + "eo": "Brokantejo", + "es": "Tienda de segunda mano", + "et": "Komisjonikauplus", + "fa": "دست دوم فروشی", + "fi": "Käytetyn tavaran kauppa", + "fr": "Dépôt-vente/produits d'occasion", + "gl": "Tenda de segunda man", + "hu": "Használtáru-bolt", + "id": "Jual Titip/Pasar Loak", + "is": "Notað og nýtt", + "it": "Negozio di articoli usati", + "ja": "リサイクルショップ", + "ko": "위탁/중고품 할인 매장", + "nl": "Tweedehandswinkel", + "no": "Gjenbruksbutikk", + "pl": "Sklep z rzeczami używanymi", + "pt-BR": "Brechó", + "pt": "Loja de produtos em segunda mão", + "ro": "Magazin de Depozite", + "ru": "Магазин секонд хенда", + "sk": "Second hand", + "sv": "Second hand", + "tr": "Bit Pazarı", + "uk": "Благодійний магазин", + "vi": "Tiệm Mua lại", + "zh-CN": "二手市场", + "zh-HK": "寄賣/二手店", + "zh-TW": "格仔鋪/二手店", + "mk": "Продавница за половни работи", + "he": "חנות יד שניה" + } + }, + "shop/shoes": { + "title": { + "C": "Shoe Store", + "en": "Shoe Store", + "af": "Skoenwinkel", + "ar": "متجر أحذية", + "ast": "Zapatería", + "bn": "জুতোর দোকান", + "bs": "Prodavnica obuće", + "ca": "Sabateria", + "cs": "Obuvnictví", + "da": "Skobutik", + "de": "Schuhgeschäft", + "el": "Κατάστημα Υπόδησης", + "en-GB": "Shoe Shop", + "eo": "Ŝua vendejo", + "es": "Zapatería", + "et": "Kingapood", + "fa": "کفش فروشی", + "fi": "Kenkäkauppa", + "fr": "Magasin de chaussures", + "gl": "Zapataría", + "hr": "Prodavaonica obuće", + "hu": "Cipőbolt", + "id": "Toko Sepatu", + "is": "Skóbúð", + "it": "Negozio di scarpe", + "ja": "靴店", + "kn": "ಮೆಟ್ಟು ಅಂಗಡಿ", + "ko": "신발 가게", + "lt": "Batų parduotuvė", + "lv": "Apavu veikals", + "nl": "Schoenenwinkel", + "no": "Skobutikk", + "pl": "Sklep obuwniczy", + "pt-BR": "Loja de Calçados", + "pt": "Sapataria", + "ro": "Magazin de Ghete", + "ru": "Обувь", + "sk": "Obchod s obuvov", + "sl": "Trgovina s čevlji", + "sr": "Продавница обуће", + "sv": "Skoaffär", + "ta": "காலணியகம்", + "tr": "Ayakkabı Mağazası", + "uk": "Взуття", + "vi": "Tiệm Giày", + "yue": "鞋舖", + "zh-CN": "鞋店", + "zh-HK": "鞋舖", + "zh-TW": "鞋店", + "zh": "鞋店", + "mk": "Продавница за обувки", + "bg": "Магазин за обувки", + "he": "חנות נעליים" + } + }, + "shop/sports": { + "title": { + "C": "Sporting Goods Store", + "en": "Sporting Goods Store", + "af": "Sportwinkel", + "ar": "متجر أدوات رياضية", + "ast": "Material deportivu", + "bn": "খেলার সামগ্রির দোকান", + "bs": "Prodavnica sportske opreme", + "ca": "Botiga d'esports", + "cs": "Sportovní potřeby", + "da": "Sportsudstyrsbutik", + "de": "Sportgeschäft", + "el": "Κατάστημα Αθλητικών Ειδών", + "en-GB": "Sporting Goods Shop", + "eo": "Sporta vendejo", + "es": "Tienda de artículos deportivos", + "et": "Sporditarvete pood", + "fa": "فروشگاه لوازم ورزشی", + "fi": "Urheiluliike", + "fr": "Magasin d'équipement sportif", + "gl": "Tenda de deportes", + "hr": "Prodavaonica sportske opreme", + "hu": "Sportbolt", + "id": "Toko Olahraga", + "is": "Íþróttaverslun", + "it": "Negozio di articoli sportivi", + "ja": "スポーツ用品店", + "ko": "스포츠 용품 가게", + "lt": "Sporto reikmenų parduotuvė", + "lv": "Sporta veikals", + "nl": "Sportzaak", + "no": "Sportsbutikk", + "pl": "Sklep sportowy", + "pt-BR": "Loja de Equipamentos Esportivos", + "pt": "Loja de artigos desportivos", + "ro": "Magazin de Haine de Sport", + "ru": "Спорттовары", + "sk": "Obchod so športovými potrebami", + "sl": "Športna trgovina", + "sr": "Продавница спортске опреме", + "sv": "Sportaffär", + "tr": "Spor Ürünleri Mağazası", + "uk": "Спорттовари", + "vi": "Tiệm Dụng cụ Thể thao", + "yue": "運動舖", + "zh-CN": "体育用品店", + "zh-HK": "運動用品店", + "zh-TW": "運動用品店", + "zh": "体育用品店", + "mk": "Продавница за спортска опрема", + "bg": "Спортен магазин", + "he": "חנות לאביזרי ספורט" + } + }, + "shop/stationery": { + "title": { + "C": "Stationery Store", + "en": "Stationery Store", + "af": "Skryfbehoeftewinkel", + "ar": "متجر أدوات مكتبية", + "ast": "Papelería", + "bs": "Prodavnica kancelarijske opreme", + "ca": "Papereria", + "cs": "Kancelářské potřeby", + "da": "Papirforhandler", + "de": "Schreibwarengeschäft", + "el": "Κατάστημα Γραφικής Ύλης", + "en-GB": "Stationery Shop", + "eo": "Papervara vendejo", + "es": "Artículos de papelería y oficina", + "et": "Kirjatarvete kauplus", + "fa": "فروشگاه نوشت‌افزار", + "fi": "Toimistotarvikekauppa", + "fr": "Papeterie", + "gl": "Papelaría", + "hr": "Papirnica", + "hu": "Írószerbolt", + "id": "Toko Alat Tulis", + "is": "Skriffangaverslun", + "it": "Negozio di cancelleria", + "ja": "文具店", + "ko": "문구점", + "lt": "Kanceliarinių prekių parduotuvė", + "lv": "Rakstāmlietu veikals", + "nl": "Kantoorboekhandel", + "no": "Papirhandel", + "pl": "Sklep papierniczy", + "pt-BR": "Papelaria", + "pt": "Papelaria", + "ru": "Канцелярские товары", + "sk": "Papierníctvo", + "sl": "Papirnica", + "sr": "Продавница канцеларијске опреме", + "sv": "Pappershandel", + "tr": "Kırtasiye", + "uk": "Канцтовари", + "vi": "Tiệm Văn phòng phẩm", + "yue": "文具舖", + "zh-CN": "文具店", + "zh-HK": "文具店", + "zh-TW": "文具店", + "zh": "文化用品店", + "mk": "Канцелариски материјали", + "bg": "Магазин за канцеларски стоки", + "he": "חנות לדברי כתיבה" + } + }, + "shop/tailor": { + "title": { + "C": "Tailor", + "en": "Tailor", + "ar": "خياط", + "ast": "Sastrería", + "ca": "Sastreria", + "cs": "Krejčovství", + "da": "Skrædder", + "de": "Schneider", + "el": "Ράφτης", + "en-GB": "Tailor", + "eo": "Tajlora laborejo/vendejo", + "es": "Sastrería", + "et": "Rätsep", + "fa": "خیاط", + "fi": "Räätäliliike", + "fr": "Tailleur", + "gl": "Xastraría", + "hr": "Krojač", + "hu": "Szabó", + "id": "Tukang Jahit", + "is": "Skraddari", + "it": "Sartoria", + "ja": "仕立屋", + "kn": "ದರ್ಜಿ", + "ko": "양복점", + "nl": "Kleermaker", + "no": "Skredder", + "pl": "Krawiec", + "pt-BR": "Alfaiataria", + "pt": "Alfaiate", + "ru": "Портной", + "sk": "Krajčírstvo", + "sl": "Krojač", + "sr": "Kројач", + "sv": "Skräddare", + "ta": "தையல்காரர்", + "tr": "Terzi", + "uk": "Кравець", + "vi": "Tiệm May", + "zh-CN": "裁缝店", + "zh-HK": "裁縫", + "zh-TW": "裁縫", + "mk": "Кројач", + "he": "חייט", + "ms": "Kedai Tukang Jahit" + } + }, + "shop/tattoo": { + "title": { + "C": "Tattoo Parlor", + "en": "Tattoo Parlor", + "ar": "صالون الوشم", + "ast": "Tatuaxes", + "ca": "Centre de tatuatges", + "cs": "Tetovací salón", + "da": "Tatovør", + "de": "Tätowierer", + "el": "Στούντιο Τατουάζ", + "en-GB": "Tattoo Parlor", + "eo": "Salono de tatuado", + "es": "Salón de tatuajes", + "et": "Tatoveeringu salong", + "fa": "سالن تاتو", + "fi": "Tatuointisalonki", + "fr": "Salon de tatouage", + "gl": "Salón de tatuaxes", + "hr": "Studio za tetoviranje", + "hu": "Tetováló szalon", + "id": "Jasa Pembuatan Tato", + "is": "Húðflúrstofa", + "it": "Studio per Tatuaggi", + "ja": "タトゥースタジオ", + "ko": "문신 가게", + "lt": "Tatuiruočių salonas", + "lv": "Tetovējumu veikals", + "nl": "Tattoozetter", + "no": "Tatovør", + "pl": "Studio tatuażu", + "pt-BR": "Estúdio de Tatuagem", + "pt": "Estúdio de tatuagens ", + "ro": "Artist de Tatuaje", + "ru": "Тату салон", + "sk": "Tetovací salón", + "sl": "Salon za tetovažo", + "sv": "Tatueringsstudio", + "tr": "Dövmeci", + "uk": "Тату салон", + "vi": "Tiệm Xăm", + "zh-CN": "纹身店", + "zh-HK": "紋身店", + "zh-TW": "刺青店", + "mk": "Тетоважи", + "he": "מכון קעקועים" + } + }, + "shop/tea": { + "title": { + "C": "Tea Store", + "en": "Tea Store", + "ar": "متجر شاي", + "ast": "Tienda de tes", + "ca": "Botiga de te", + "cs": "Obchod s čajem", + "da": "Tebutik", + "de": "Teegeschäft", + "el": "Τεϊοπωλείο", + "en-GB": "Tea Shop (Retail)", + "eo": "Tea vendejo", + "es": "Tienda de té", + "et": "Teepood", + "fa": "فروشگاه چای", + "fi": "Teekauppa", + "fr": "Magasin de thés", + "gl": "Tenda de té", + "hr": "Trgovina za čajeve", + "hu": "Teaüzlet", + "id": "Toko Teh", + "is": "Teverslun", + "it": "Negozio di tè", + "ja": "茶舗", + "ko": "차 가게", + "lt": "Arbatos parduotuvė", + "lv": "Tējas veikals", + "nl": "Theewinkel", + "no": "Tebutikk", + "pl": "Sklep z herbatą", + "pt-BR": "Loja de Chás", + "pt": "Loja de chás", + "ro": "Magazin de Ceaiuri", + "ru": "Чайный магазин", + "sk": "Obchod s čajom", + "sl": "Čajnica", + "sr": "Чајџиница", + "sv": "Te-butik", + "ta": "தேநீர் கடை", + "tr": "Çaycı", + "uk": "Чай", + "vi": "Tiệm Trà Khô", + "zh-CN": "茶叶商店", + "zh-HK": "茶莊", + "zh-TW": "茶行", + "mk": "Продавница за чај", + "he": "חנות תה" + } + }, + "shop/ticket": { + "title": { + "C": "Ticket Seller", + "en": "Ticket Seller", + "ar": "بائع تذاكر", + "ast": "Venta d'entraes", + "ca": "Venedor de tiquets", + "cs": "Prodejna vstupenek", + "da": "Billetsælger", + "de": "Eintrittskartenverkäufer", + "el": "Εκδοτήριο Εισιτηρίων", + "en-GB": "Ticket Seller", + "eo": "Biletejo", + "es": "Venta de boletos", + "et": "Piletikauplus", + "fa": "بلیط فروشی", + "fi": "Lipunmyyntipiste", + "fr": "Boutique de vente de billets", + "gl": "Venda de entradas", + "hr": "Prodavač ulaznica", + "hu": "Jegyárus", + "id": "Penjual Tiket", + "is": "Miðasala", + "it": "Rivenditore di Biglietti", + "ja": "チケット店", + "ko": "티켓 판매소", + "lt": "Bilietų pardavėjas", + "lv": "Biļešu kase", + "nl": "Ticketverkoop", + "no": "Billettutsalg", + "pl": "Sprzedaż biletów", + "pt-BR": "Bilheteria", + "pt": "Bilheteira", + "ro": "Vânzător de Bilete", + "ru": "Билетная касса", + "sk": "Predajňa vstupeniek", + "sl": "Prodajalna vstopnic", + "sr": "Билетарница", + "sv": "Biljettförsäljning", + "tr": "Bilet Satıcısı", + "uk": "Білетна каса", + "vi": "Đại lý Bán Vé", + "zh-CN": "售票处", + "zh-HK": "門票售賣", + "zh-TW": "賣票亭", + "mk": "Билетарница", + "he": "עמדת מכירת כרטיסים" + } + }, + "shop/tobacco": { + "title": { + "C": "Tobacco Shop", + "en": "Tobacco Shop", + "ar": "محل بيع التبغ", + "ast": "Estancu", + "ca": "Estanc", + "cs": "Kuřácké potřeby", + "da": "Tobaksforretning", + "de": "Tabakwarengeschäft", + "el": "Κατάστημα Ειδών Καπνού", + "en-GB": "Tobacco Shop", + "eo": "Tabaka vendejo", + "es": "Tienda de tabaco", + "et": "Tubakapood", + "fa": "فروشگاه مواد افیونی تنباکو", + "fi": "Tupakkapuoti", + "fr": "Bureau de tabac", + "gl": "Estanco", + "hr": "Trgovina za duhanske proizvode", + "hu": "Dohánybolt", + "id": "Toko Tembakau", + "is": "Tóbaksverslun", + "it": "Tabaccheria", + "ja": "たばこ店", + "ko": "담배 가게", + "lt": "Tabako parduotuvė", + "lv": "Tabakas veikals", + "nl": "Tabakwinkel", + "no": "Tobakksbutikk", + "pl": "Sklep z tytoniem", + "pt-BR": "Tabacaria", + "pt": "Tabacaria", + "ro": "Tăbăcărie", + "ru": "Табачный магазин", + "sk": "Obchod s tabakom", + "sl": "Tobačna trgovina", + "sr": "Дуванџиница", + "sv": "Tobaksbutik", + "ta": "புகையிலைக் கடை", + "tr": "Tütüncü", + "uk": "Тютюн", + "vi": "Tiệm Thuốc lá", + "zh-CN": "烟草店", + "zh-HK": "煙草店", + "zh-TW": "菸店", + "mk": "Продавница за тутун", + "he": "חנות טבק" + } + }, + "shop/toys": { + "title": { + "C": "Toy Store", + "en": "Toy Store", + "af": "Speelgoedwinkel", + "ar": "متجر ألعاب", + "ast": "Xuguetería", + "bn": "খেলনার দোকান", + "bs": "Prodavnica igračaka", + "ca": "Botiga de joguines", + "cs": "Hračkářství", + "da": "Legetøjsbutik", + "de": "Spielwarengeschäft", + "el": "Κατάστημα Παιχνιδιών", + "en-GB": "Toy Shop", + "eo": "Ludila vendejo", + "es": "Juguetería", + "et": "Mänguasjapood", + "fa": "اسباب بازی فروشی", + "fi": "Lelukauppa", + "fr": "Magasin de jouets", + "gl": "Tenda de xoguetes", + "hr": "Prodavaonica igračaka", + "hu": "Játékbolt", + "id": "Toko Mainan", + "is": "Dótabúð", + "it": "Negozio di giocattoli", + "ja": "玩具店", + "ko": "완구점", + "lt": "Žaislų parduotuvė", + "lv": "Rotaļlietu veikals", + "nl": "Speelgoedwinkel", + "no": "Lekebutikk", + "pl": "Sklep z zabawkami", + "pt-BR": "Loja de Brinquedos", + "pt": "Loja de brinquedos", + "ro": "Magazin de Jucării", + "ru": "Игрушки", + "sk": "Hračkárstvo", + "sl": "Trgovina igrač", + "sr": "Продавница играчака", + "sv": "Leksaksaffär", + "ta": "விளையாட்டுப் பொருட் கடை", + "te": "బొమ్మల కొట్టు", + "tr": "Oyuncak Mağazası", + "uk": "Іграшки", + "vi": "Tiệm Đồ chơi", + "yue": "玩具舖", + "zh-CN": "玩具店", + "zh-HK": "玩具店", + "zh-TW": "玩具店", + "zh": "玩具店", + "mk": "Продавница за играчки", + "bg": "Магазин за играчки", + "he": "חנות צעצועים", + "ms": "Kedai Permainan" + } + }, + "shop/travel_agency": { + "title": { + "C": "Travel Agency", + "en": "Travel Agency", + "af": "Reisagentskap", + "ar": "وكالة سفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyages", + "gl": "Axencia de viaxes", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "lv": "Ceļojumu aģentūra", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Бюро путешествий", + "sk": "Cestovná agentúra", + "sl": "Turistična agencija", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Turizm Acentası", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "zh": "旅行社", + "mk": "Туристичка агенција", + "bg": "Туристическа агенция", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "he": "סוכנות נסיעות", + "so": "Wakaalad Socdaal" + } + }, + "shop/tyres": { + "title": { + "C": "Tire Store", + "en": "Tire Store", + "af": "Bandewinkel", + "ar": "محل بيع إطارات", + "ast": "Neumáticos", + "bs": "Prodavnica guma", + "ca": "Botiga de pneumàtics", + "cs": "Pneuservis", + "da": "Dækforhandler", + "de": "Reifenhandel", + "el": "Βουλκανιζατέρ", + "en-GB": "Tyre Shop", + "eo": "Aerbenda vendejo", + "es": "Tienda de neumáticos", + "et": "Rehvipood", + "fa": "تایر فروشی", + "fi": "Rengasliike", + "fr": "Magasin de pneus", + "gl": "Tenda de pneumáticos", + "hr": "Prodavaonica pneumaticima", + "hu": "Autógumibolt", + "id": "Toko Ban", + "is": "Dekkjabúð", + "it": "Gommista", + "ja": "タイヤ店", + "ko": "타이어 가게", + "lt": "Padangų parduotuvė", + "lv": "Riepu veikals", + "nl": "Bandenwinkel", + "no": "Dekkutsalg", + "pl": "Sklep z oponami", + "pt-BR": "Loja de pneus/borracharia", + "pt": "Loja de pneus", + "ro": "Magazin de Roți", + "ru": "Шины", + "sk": "Predajňa pneumatík", + "sl": "Prodaja pnevmatik", + "sr": "Продавница гума", + "sv": "Däckfirma", + "tr": "Araç Lastiği Mağazası", + "uk": "Колеса та шини", + "vi": "Tiệm Lốp xe", + "yue": "軚舖", + "zh-CN": "轮胎店", + "zh-HK": "輪胎店", + "zh-TW": "輪胎店", + "zh": "轮胎店", + "mk": "Продавница за автогуми", + "bg": "Магазин за автомобилни гуми", + "he": "חנות צמיגים", + "ms": "Kedai Tayar", + "en-AU": "Tyre Shop" + } + }, + "shop/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaner Store", + "en": "Vacuum Cleaner Store", + "ar": "متجر المكنسات الكهربائية", + "ast": "Tienda d'aspiradores", + "ca": "Botiga d'aspiradors", + "cs": "Obchod s vysavači", + "da": "Støvsugerforhandler", + "de": "Staubsaugergeschäft", + "el": "Κατάστημα Ηλεκτρικών Σκουπών", + "en-GB": "Vacuum Cleaner Shop", + "eo": "Polvosuĉila vendejo", + "es": "Tienda de aspiradoras", + "et": "Tolmuimeja kauplus", + "fa": "فروشگاه جاروبرقی", + "fi": "Pölynimuriliike", + "fr": "Magasin d'électroménager de nettoyage", + "gl": "Tenda de aspiradoras", + "hr": "Trgovina za usisavače", + "hu": "Porszívóbolt", + "id": "Toko Pengisap Debu", + "is": "Verslun með ryksugur", + "it": "Negozio di aspirapolveri", + "ja": "掃除機店", + "ko": "진공청소기 가게", + "lv": "Putekļusūcēju veikals", + "nl": "Stofzuigerwinkel", + "no": "Støvsugerbutikk", + "pl": "Sklep z odkurzaczami", + "pt-BR": "Loja de Aspiradores de Pó", + "pt": "Loja de aspiradores", + "ro": "Magazin de Aspiratoare", + "ru": "Магазин по продаже пылесосов", + "sk": "Obchod s vysavačmi", + "sl": "Trgovina s sesalci", + "sv": "Dammsugarbutik", + "tr": "Elektrikli Süpürge Mağazası", + "uk": "Пилососи", + "vi": "Tiệm Máy Hút bụi", + "zh-CN": "吸尘器店", + "zh-HK": "吸塵機店", + "zh-TW": "吸塵器店", + "mk": "Продавница за правосмукалки", + "he": "חנות שואבי אבק" + } + }, + "shop/variety_store": { + "title": { + "C": "Variety Store", + "en": "Variety Store", + "af": "Algemene handelaar", + "ar": "محل كل شيء ", + "ast": "Bazar", + "bs": "Prodavnica mješovite robe", + "ca": "Botiga de tot a 100", + "cs": "Laciné zboží", + "da": "Spøg og skæmtbutik ", + "de": "Sonderpostenmarkt", + "el": "Κατάστημα 1 ευρώ", + "en-GB": "Variety Store", + "eo": "Ĉio-po-unu-spesmilo vendejo", + "es": "Tienda de variedades o bazar", + "et": "Kodukauba pood", + "fa": "فروشگاه متنوع و ارزان", + "fi": "Halpahalli", + "fr": "Magasin à prix unique ou à bas prix", + "gl": "Tenda de variedades ou bazar", + "hr": "Prodavaonica mješovite robe", + "hu": "100 forintos bolt", + "id": "Toserba", + "is": "Allrahandaverslun", + "it": "Negozio a prezzo fisso", + "ja": "雑貨店(低価格)", + "ko": "잡화점", + "nl": "Euroshop", + "pl": "Sklep z różnościami", + "pt-BR": "Loja de Variedades", + "pt": "Loja dos chineses", + "ro": "Magazin de Varietăți", + "ru": "Товары по одной цене", + "sk": "Obchod so zmiešaným tovarom", + "sl": "Trgovina z mešanim blagom", + "sr": "Продавница мешовите робе", + "sv": "Fyndbutik", + "tr": "Herşey 1 TL Mağazası", + "uk": "Універсам", + "vi": "Tiệm Tạp hóa", + "yue": "雜貨舖", + "zh-CN": "杂货店", + "zh-HK": "十蚊店", + "zh-TW": "雜貨店", + "zh": "杂货店", + "mk": "Продавница за разновидна роба", + "bg": "Смесен магазин", + "he": "חנות מגוון מוצרים" + } + }, + "shop/video": { + "title": { + "C": "Video Store", + "en": "Video Store", + "af": "Videowinkel", + "ar": "محل بيع وتأجير الأفلام", + "ast": "Tienda de videos", + "bs": "Video klub", + "ca": "Botiga de vídeos", + "cs": "Video obchod", + "da": "Videobutik", + "de": "Videothek", + "el": "Βιντεοκλάμπ", + "en-GB": "Video/DVD Shop", + "eo": "Filma vendejo/pruntejo", + "es": "Videoclub", + "et": "Videopood", + "fa": "فیلم فروشی", + "fi": "Videovuokraamo", + "fr": "Vidéo-club", + "gl": "Videoclube", + "hr": "Videoteka", + "hu": "Videófilmbolt vagy -kölcsönző", + "id": "Toko Video", + "is": "Myndbandaverslun", + "it": "Videoteca", + "ja": "ビデオソフト店", + "ko": "비디오 가게", + "lt": "Vaizdo prekių parduotuvė", + "lv": "Video veikals", + "nl": "Videotheek", + "no": "Videoforhandler", + "pl": "Sklep/wypożyczalnia z filmami wideo/dvd", + "pt-BR": "Loja/Locadora de Vídeos", + "pt": "Videoclube", + "ro": "Magazin Video", + "ru": "Видеомагазин", + "sk": "Videopožičovňa", + "sl": "Videoteka", + "sr": "Видео-клуб", + "sv": "Videobutik", + "tr": "Film - Video Mağazası", + "uk": "Відео", + "vi": "Tiệm Phim", + "yue": "影視店", + "zh-CN": "影像店", + "zh-HK": "影視店", + "zh-TW": "錄影帶店", + "zh": "影像店", + "mk": "Видеотека", + "bg": "Видеотека", + "he": "חנות סרטים" + } + }, + "shop/video_games": { + "title": { + "C": "Video Game Store", + "en": "Video Game Store", + "ar": "متجر العاب الفيديو", + "ast": "Tienda de videuxuegos", + "ca": "Botiga de videojocs", + "cs": "Obchod s videohrami", + "da": "Videospilbutik", + "de": "Videospielgeschäft", + "el": "Μαγαζί Βιντεοπαιχνιδιών", + "en-GB": "Video Games Shop", + "eo": "Videoluda vendejo", + "es": "Tienda de videojuegos", + "et": "Konsoolimängude pood", + "fa": "فروشگاه بازی ویدئویی", + "fi": "Videopeliliike", + "fr": "Magasin de location et vente de jeux vidéo", + "gl": "Tenda de videoxogos", + "hr": "Prodavaonica video igara", + "hu": "Videojátékbolt", + "id": "Toko Permainan Video", + "is": "Tölvuleikjaverslun", + "it": "Negozio di videogiochi", + "ja": "テレビゲーム販売店", + "ko": "비디오 게임 가게", + "lt": "Video Žaidimų parduotuvė", + "lv": "Videospēļu veikals", + "nl": "Computerspelwinkel", + "no": "Dataspillbutikk", + "pl": "Sklep z grami wideo", + "pt-BR": "Loja de Vídeogames", + "pt": "Loja de videojogos", + "ro": "Magazin de Jocuri de Calculator", + "ru": "Магазин видеоигр", + "sk": "Obchod s videohrami", + "sl": "Trgovina z video igrami", + "sv": "TV-spel", + "tr": "Bilgisayar Oyun Mağazası", + "uk": "Комп’ютерні ігри", + "vi": "Tiệm Trò chơi Điện tử", + "zh-CN": "电子游戏店", + "zh-HK": "電子遊戲店", + "zh-TW": "電子遊戲店", + "mk": "Продавница за видеоигри", + "he": "חנות למשחקי מחשב" + } + }, + "shop/water_sports": { + "title": { + "C": "Watersport/Swim Shop", + "en": "Watersport/Swim Shop", + "ar": "متجر رياضة مائية/سباحة", + "ast": "Tienda de natación/deportes acuáticos", + "ca": "Botiga d'esports aquàtics", + "cs": "Plavecké potřeby", + "da": "Svømmesport/Svømmeudstyrsbutik", + "de": "Wassersportgeschäft", + "el": "Κατάστημα Ειδών Θαλάσσιων Σπορ / Κολύμβησης", + "en-GB": "Watersport/Swim Shop", + "eo": "Akvosport-aparata vendejo", + "es": "Tienda de deportes acuáticos / natación", + "et": "Veesporditarvete kauplus", + "fa": "فروشگاه لوازم ورزش‌های آبی / شنا ", + "fi": "Vesiurheiluliike", + "fr": "Vente d'équipements et d'articles pour sports nautiques", + "gl": "Tenda de deportes acuáticos / natación", + "hr": "Trgovina za vodene sportove", + "hu": "Vízisport-bolt", + "id": "Toko Renang/Olahraga Air", + "is": "Verslun með sund/vatnaíþróttavörur", + "it": "Negozio per sport acquatici", + "ja": "ウォータースポーツ用品店", + "ko": "수상 스포츠/수영 가게", + "nl": "Watersport-/Zwemwinkel", + "pl": "Sklep ze sprzętem do sportów wodnych", + "pt-BR": "Loja de Esportes Aquáticos", + "pt": "Loja de desportos aquáticos", + "ru": "Водный спорт/ Спорттовары", + "si": "ජල ක්‍රීඩා/ පිහිනුම් තටාකය", + "sk": "Ochod s plaveckým vybavením", + "sv": "Vattensport/simning ", + "tr": "Su Sporları Mağazası", + "uk": "Водный спорт/Спорттовари", + "vi": "Tiệm Dụng cụ Bơi lội", + "zh-CN": "水上运动/泳具店", + "zh-HK": "水上活動/游泳用品店", + "zh-TW": "水上活動/泳具店", + "mk": "Опрема за капење/водени спортови", + "he": "חנות שחייה" + } + }, + "shop/weapons": { + "title": { + "C": "Weapon Shop", + "en": "Weapon Shop", + "ar": "متجر أسلحة", + "ast": "Armería", + "ca": "Armeria", + "cs": "Zbraně a střelivo", + "da": "Våbenbutik", + "de": "Waffengeschäft", + "el": "Κατάστημα Οπλισμού", + "en-GB": "Weapon Shop", + "eo": "Armila vendejo", + "es": "Tienda de armas", + "et": "Relvapood", + "fa": "فروشگاه سلاح", + "fi": "Aseliike", + "fr": "Armurerie", + "gl": "Armaría", + "hr": "Trgovina za oružje", + "hu": "Fegyverbolt", + "id": "Toko Senjata", + "is": "Vopnaverslun", + "it": "Armeria", + "ja": "武器屋", + "ko": "무기 가게", + "lt": "Ginklų parduotuvė", + "lv": "Ieroču Veikals", + "nl": "Wapenwinkel", + "no": "Våpenbutikk", + "pl": "Sklep z bronią", + "pt-BR": "Loja de Armas", + "pt": "Loja de armas", + "ro": "Magazin de Arme", + "ru": "Оружейный магазин", + "sk": "Ochod so zbraňami", + "sl": "Trgovina z orožjem", + "sr": "Оружарница", + "sv": "Vapenaffär", + "ta": "ஆயுதவிற்பனைக் கடை", + "tr": "Silah Mağazası", + "uk": "Зброя", + "vi": "Tiệm Súng", + "zh-CN": "武器店", + "zh-HK": "武器店", + "zh-TW": "武器店", + "mk": "Продавница за оружје", + "he": "חנות נשק קר" + } + }, + "shop/window_blind": { + "title": { + "C": "Window Blind Store", + "en": "Window Blind Store", + "ar": "متجر ستائر نوافذ", + "ast": "Venta de persianes", + "ca": "Botiga de persianes", + "cs": "Obchod s roletami", + "da": "Persienneforhandler", + "de": "Fensterladengeschäft", + "el": "Κατάστημα σκιάστρων παραθύρου", + "en-GB": "Window Blind Shop", + "eo": "Fenestr-kovrila vendejo", + "es": "Tienda de persianas", + "et": "Aknakatete kauplus", + "fa": "فروشگاه پرده و کرکره", + "fi": "Kaihdinmyymälä", + "fr": "Magasin de vente de stores", + "gl": "Tenda de persianas", + "hu": "Redőnybolt", + "id": "Toko Kerai", + "is": "Verslun með rimlagluggatjöld", + "it": "Negozio di tapparelle e serrande", + "ja": "ブラインドカーテン専門店", + "ko": "창문 블라인드 가게", + "lv": "Logu žalūziju veikals", + "nl": "Jaloeziewinkel", + "no": "Persiennebutikk", + "pl": "Sklep z żaluzjami/roletami", + "pt-BR": "Loja de Persianas", + "pt": "Loja de estores", + "ru": "Магазин жалюзей", + "sk": "Obchod so žalúziami", + "sl": "Trgovina z okenskimi senčili", + "sv": "Persienner", + "tr": "Jaluzi Mağazası", + "uk": "Жалюзі, ролети", + "vi": "Tiệm Mành", + "zh-CN": "百叶窗店", + "zh-HK": "百葉簾店", + "zh-TW": "窗廉店", + "mk": "Продавница за завеси и ролетни", + "he": "חנות וילונות" + } + }, + "shop/wine": { + "title": { + "C": "Wine Shop", + "en": "Wine Shop", + "ar": "متجر نبيذ", + "ast": "Bodega", + "ca": "Botiga de vins", + "cs": "Vinotéka", + "da": "Vinforretning", + "de": "Weinhandel", + "el": "Κάβα Κρασιών", + "en-GB": "Wine Shop", + "eo": "Vina vendejo", + "es": "Tienda de vinos", + "et": "Veinipood", + "fa": "فروشگاه شراب", + "fi": "Viinikauppa", + "fr": "Caviste", + "gl": "Tenda de viños", + "hr": "Prodavaonica vina", + "hu": "Borszaküzlet", + "id": "Toko Anggur", + "is": "Vínbúð", + "it": "Enoteca", + "ja": "ワイン店", + "ko": "와인 가게", + "lt": "Vyno parduotuvė", + "lv": "Vīna veikals", + "nl": "Wijnhandel", + "no": "Vinbutikk", + "pl": "Sklep z winami", + "pt-BR": "Loja de Vinhos", + "pt": "Loja de vinhos", + "ro": "Magazin de Vinuri", + "ru": "Винный магазин", + "sk": "Vináreň", + "sl": "Vinoteka", + "sr": "Винарница", + "sv": "Vinaffär", + "tr": "Şarap Mağazası", + "uk": "Вино", + "vi": "Tiệm Rượu vang", + "yue": "酒舖", + "zh-CN": "酒品商店", + "zh-HK": "酒品店", + "zh-TW": "販酒店", + "mk": "Винотека", + "he": "חנות יינות" + } + }, + "shop/fishmonger": { + "title": { + "C": "Fishmonger", + "en": "Fishmonger", + "af": "Viswinkel", + "ar": "محل بيع أسماك", + "ast": "Pescadería", + "bn": "মৎস্য ব্যবসায়ী", + "bs": "Ribarnica", + "ca": "Peixateria", + "cs": "Rybárna", + "da": "Fiskeforretning", + "de": "Fischhändler", + "el": "Ψαράδικο", + "en-GB": "Fishmonger", + "eo": "Fiŝa vendejo", + "es": "Pescadería -en desuso-", + "et": "Kalakauplus", + "fa": "ماهی فروشی", + "fi": "Kalakauppa", + "fr": "Poissonnier", + "gl": "Peixaría", + "hr": "Ribarnica", + "hu": "Halbolt", + "id": "Penjual Ikan", + "is": "Fisksali", + "it": "Pescivendolo", + "ja": "魚屋(非推奨)", + "ko": "생선 가게", + "lt": "Žuvų pardavėjas", + "nl": "Visboer", + "no": "Fiskeforhandler", + "pl": "Sklep rybny", + "pt-BR": "Peixaria", + "pt": "Peixaria", + "ru": "Рыбный магазин", + "sk": "Predaj rýb", + "sl": "Ribarnica", + "sr": "Рибарница", + "sv": "Fiskhandlare", + "tr": "Balıkçı", + "uk": "Риботорговець", + "vi": "Tiệm Cá", + "yue": "魚檔", + "zh-CN": "海产店", + "zh-HK": "魚檔", + "zh-TW": "魚販", + "zh": "海产店", + "mk": "Рибарница", + "bg": "Магазин за риба", + "he": "דוכן דגים" + } + }, + "shop/vacant": { + "title": { + "C": "Vacant Shop", + "en": "Vacant Shop", + "af": "Leë winkel", + "ar": "محل شاغر", + "ast": "Tienda balera", + "bs": "Prodavnica za iznajmljivanje", + "ca": "Botiga per ocupar", + "cs": "Neobsazený obchod", + "da": "Lukket butik (ingen salg pt)", + "de": "Leerstehendes Geschäft", + "el": "Κενό Κατάστημα", + "en-GB": "Vacant Shop", + "eo": "Forlasita vendejo", + "es": "Local disponible", + "et": "Vaba kaubanduspind", + "fa": "فروشگاه خالی", + "fi": "Tyhjä liikehuoneisto", + "fr": "Commerce désaffecté", + "gl": "Local baleiro", + "hr": "Prazan dućanski prostor", + "hu": "Kiadó üzlethelyiség", + "is": "Tóm verslun", + "it": "Negozio vuoto", + "ja": "空き店舗, シャッター店舗", + "ko": "빈 가게", + "lt": "Tuščia parduotuvė", + "nl": "Leegstaande winkel", + "pl": "Pusty lokal sklepowy", + "pt-BR": "Loja Desocupada", + "pt": "Loja desocupada", + "ro": "Magazin Vacant", + "ru": "Помещение под открытие магазина", + "sk": "Prázdny obchod", + "sl": "Nedelujoča trgovina", + "sr": "Упражњена продавница", + "sv": "Tom lokal", + "te": "ఖాళీ దుకాణం", + "tr": "Boş Dükkan", + "uk": "Здається в оренду", + "vi": "Tiệm Đóng cửa", + "yue": "吉舖", + "zh-CN": "空置铺位", + "zh-HK": "空置商舖", + "zh-TW": "閒置商店", + "zh": "空置铺位", + "mk": "Празна продавница", + "bg": "Свободна търговска площ", + "he": "חנות ריקה" + } + }, + "shop/charity": { + "title": { + "C": "Charity Store", + "en": "Charity Store", + "ar": "متجر خيري", + "ca": "Botiga de Caritat", + "cs": "Charitativní obchod", + "da": "Velgørenhedsbutik", + "de": "Sozialkaufhaus", + "en-GB": "Charity Shop", + "eo": "Almoza vendejo", + "es": "Tienda de caridad", + "et": "Heategevuslik kauplus", + "fa": "فروشگاه خیریه", + "fi": "Hyväntekeväisyyskauppa", + "fr": "Magasin d'organisme caritatif", + "gl": "Tenda solidaria", + "hu": "Adománybolt", + "is": "Góðgerðaverslun", + "it": "Mercatino dell'usato", + "ja": "チャリティーショップ", + "ko": "자선 쇼핑몰", + "nl": "Winkel van goed doel", + "pl": "Sklep charytatywny", + "pt-BR": "Loja de Caridade", + "pt": "Loja solidária", + "ro": "Magazin de Caritate", + "ru": "Благотворительный магазин", + "sv": "Second hand-butik", + "tr": "Yardım Mağazası", + "uk": "Доброчинна крамниця", + "vi": "Tiệm Từ thiện", + "zh-CN": "慈善机构店", + "zh-HK": "慈善商店", + "zh-TW": "慈善商店", + "mk": "Добротворна продавница", + "he": "חנות צדקה" + } + }, + "shop/coffee": { + "title": { + "C": "Coffee Store", + "en": "Coffee Store", + "ar": "متجر القهوة", + "ast": "Venta de café", + "ca": "Botiga de cafè", + "cs": "Obchod kávou", + "da": "Kaffebutik", + "de": "Kaffeegeschäft", + "el": "Καφεκοπτείο", + "en-GB": "Coffee Shop (Retail)", + "eo": "Kafa vendejo", + "es": "Tienda de café", + "et": "Kohvipood", + "fa": "فروشگاه قهوه", + "fi": "Kahvikauppa", + "fr": "Boutique de vente de cafés", + "gl": "Tenda de café", + "hu": "Kávébolt", + "is": "Kaffibúð", + "it": "Negozio di caffè", + "ja": "コーヒー豆販売店", + "ko": "커피 가게", + "lt": "Kavos parduotuvė", + "lv": "Kafijas veikals", + "nl": "Koffiewinkel", + "no": "Kaffebutikk", + "pl": "Sklep z kawą", + "pt-BR": " Loja de Cafés", + "pt": "Loja de café", + "ro": "Magazin de Cafea", + "ru": "Магазин кофе", + "sk": "Kaviareň", + "sl": "Trgovina s kavo", + "sv": "Kaffeaffär", + "tr": "Kahveci", + "uk": "Крамниця кави", + "vi": "Tiệm Bột Cà phê", + "zh-CN": "咖啡豆/粉店", + "zh-HK": "咖啡店", + "zh-TW": "咖啡店", + "mk": "Продавница за кафе", + "he": "חנות קפה" + } + }, + "shop/nutrition_supplements": { + "title": { + "C": "Nutrition Supplements Store", + "en": "Nutrition Supplements Store", + "ar": "متجر المكملات الغذائية", + "ast": "Tienda de suplementos nutritivos", + "ca": "Botiga de suplements nutricionals", + "cs": "Obchod s potravními doplňky", + "da": "Helsekostbutik", + "de": "Nahrungsergänzungsmittelgeschäft", + "el": "Κατάστημα με Συμπληρώματα Διατροφής", + "en-GB": "Nutrition Supplements Shop", + "eo": "Diet-suplementa vendejo", + "es": "Tienda de suplementos nutricionales", + "et": "Toidulisandite kauplus", + "fa": "فروشگاه تغذیه مکمل", + "fi": "Lisäravinnemyymälä", + "fr": "Boutique de compléments alimentaires", + "gl": "Tenda de suplementos nutricionais", + "hu": "Étrendkiegészítő-bolt", + "is": "Verslun með fæðubótarefni", + "it": "Negozio di integratori alimentari", + "ja": "栄養サプリ販売店", + "ko": "영양 보조 식품 가게", + "nl": "Voedingssupplementenwinkel", + "pl": "Sklep z suplementami diety", + "pt-BR": "Loja de Suplementos Nutricionais", + "pt": "Loja de suplementos alimentares", + "ro": "Magazin de Suplimente Nutritive", + "ru": "Магазин пищевых добавок", + "sk": "Obchod s výživovými doplnkami", + "sl": "Trgovina s prehrambenimi dodatki", + "sv": "Hälsokost", + "tr": "Gıda Takviye Ürünleri Mağazası", + "uk": "Магазин храчових добавок", + "vi": "Tiệm Thuốc bổ", + "zh-CN": "保健品店", + "zh-HK": "營養補充品店", + "zh-TW": "營養補充品店", + "mk": "Продавница за прехранбени додатоци", + "he": "חנות ויטמינים" + } + }, + "shop/storage_rental": { + "title": { + "C": "Storage Rental", + "en": "Storage Rental", + "ar": "تأجير أماكن التخزين", + "ast": "Alquiler d'almacenes", + "ca": "Lloguer de magatzem", + "cs": "Skladovací prostor", + "da": "Lagerhotel", + "de": "Lagerraumvermieter", + "el": "Ενοικιαζόμενος Χώρος Αποθήκευσης", + "en-GB": "Storage Rental", + "eo": "Magazena spaco por lui", + "es": "Alquiler de depósito", + "fa": "کرایه انبار", + "fi": "Varastonvuokrauspalvelu", + "fr": "Location de stockage - Ne pas utiliser", + "gl": "Alugueiro de almacéns", + "hu": "Tárolóhely bérbeadása", + "is": "Geymsluleiga", + "it": "Box a noleggio", + "ja": "レンタル倉庫", + "ko": "저장공간 대여소", + "nl": "Verworpen tag, gebruik dit niet", + "no": "Minilager", + "pl": "Przechowalnia rzeczy (długoterminowa)", + "pt-BR": "Aluguel de Armazenamento", + "pt": "Aluguer de depósitos", + "ru": "Аренда складских помещений", + "sk": "Prenájom skladových priestorov", + "sl": "Najem shrambnih prostorov", + "sv": "Hyrlager", + "tr": "Depo Kiralama Mağazası", + "uk": "Місце на складі в оренду", + "vi": "Cho thuê Chỗ Để đồ", + "zh-CN": "租赁处", + "zh-HK": "存倉", + "zh-TW": "儲物空間出租", + "mk": "Изнамјување складишен простор", + "he": "שטח אחסון להשכרה" + } + }, + "shop/e-cigarette": { + "title": { + "C": "E-Cigarette Shop", + "en": "E-Cigarette Shop", + "ar": "متجر سجائر إلكترونية", + "ca": "Botiga de cigars electrònics", + "cs": "Obchod s e-cigaretami", + "da": "E-cigaretbutik", + "de": "E-Zigarettengeschäft", + "el": "Κατάστημα Ηλεκτρονικού Τσιγάρου", + "en-GB": "E-Cigarette Shop", + "eo": "Elektronik-cigareda vendejo", + "es": "Tienda de cigarrillo electrónico", + "et": "E-sigaretipood", + "fa": "فروشگاه سیگار الکترونیکی", + "fi": "Sähkösavukemyymälä", + "fr": "Magasin de cigarettes électroniques", + "gl": "Tenda de cigarros electrónicos", + "hu": "E-cigaretta bolt", + "is": "Rafrettubúð", + "it": "Negozio di sigarette elettroniche", + "ja": "電子タバコ店", + "ko": "전자 담배 가게", + "lt": "El. cigarečių parduotuvė", + "lv": "E-Cigarešu veikals", + "nl": "E-sigarettenwinkel", + "pl": "Sklep z e-papierosami", + "pt-BR": "Loja de Cigarro Eletrônico", + "pt": "Loja de cigarros eletrónicos", + "ro": "Magazin de Țigarete Electrice", + "ru": "Магазин электронных сигарет", + "sr": "Продавница електронских цигарета", + "sv": "Affär för elektroniska cigaretter", + "tr": "Elektronik Sigara Mağazası", + "uk": "Магазин Е-цигарок", + "vi": "Tiệm Thuốc lá Điện tử", + "zh-CN": "电子烟店", + "zh-HK": "電子煙店", + "zh-TW": "電子菸商店", + "mk": "Продавница за е-цигари", + "he": "חנות מוצרי עישון", + "ms": "Kedai Rokok Elektronik" + } + }, + "shop/pastry": { + "title": { + "C": "Pastry Shop", + "en": "Pastry Shop", + "ar": "متجر حلويات", + "ast": "Pastelería", + "ca": "Pastisseria", + "cs": "Cukrárna", + "da": "Konditori", + "de": "Konditorei", + "el": "Ζαχαροπλαστείο", + "en-GB": "Pastry Shop", + "eo": "Kukejo", + "es": "Pastelería", + "et": "Kondiiter", + "fa": "شیرینی فروشی", + "fi": "Leipomokonditoria", + "fr": "Pâtisserie", + "gl": "Confeitaría ou pastelaría", + "hr": "Slastičarna", + "hu": "Cukrászda", + "is": "Kökubúð", + "it": "Pasticceria", + "ja": "焼菓子(ペイストリー)店", + "ko": "과자 가게", + "lt": "Kepykla", + "nl": "Fijnbakkerij", + "no": "Bakeri", + "pl": "Cukiernia", + "pt-BR": "Confeitaria", + "pt": "Pastelaria", + "ru": "Пироги", + "sl": "Slaščičarna", + "sr": "Посластичарница", + "sv": "Konditori", + "tr": "Pastane", + "uk": "Кондитерські вироби", + "vi": "Tiệm Bánh ngọt", + "zh-CN": "糕饼店", + "zh-HK": "榚點店", + "zh-TW": "糕餅店", + "mk": "Бели печива", + "he": "בית מאפה" + } + }, + "shop/watches": { + "title": { + "C": "Watches Shop", + "en": "Watches Shop", + "ar": "متجر الساعات اليدوية", + "ast": "Reloxería", + "ca": "Òptica", + "cs": "Hodinářství", + "da": "Urbutik", + "de": "Uhrengeschäft", + "el": "Κατάστημα Ρολογιών", + "en-GB": "Watches Shop", + "eo": "Horloĝa vendejo", + "es": "Relojería", + "et": "Kellapood", + "fa": "ساعت فروشی", + "fi": "Kellokauppa", + "fr": "Magasin de montres", + "gl": "Reloxaría", + "hr": "Trgovina Satovima", + "hu": "Órabolt (karóra)", + "is": "Úraverslun", + "it": "Negozio di orologi", + "ja": "腕時計店", + "ko": "손목시계 가게", + "lt": "Laikrodžių parduotuvė", + "lv": "Pulksteņu Veikals", + "nl": "Horlogewinkel", + "no": "Urmaker", + "pl": "Sklep z zegarkami", + "pt-BR": "Relojoaria", + "pt": "Loja de relógios", + "ro": "Magazin de Ceasuri", + "ru": "Магазин часов", + "sk": "Obchod s hodinkami", + "sl": "Trgovina z urami", + "sv": "Klockaffär", + "tr": "Saatçi", + "uk": "Годинники", + "vi": "Tiệm Đồng hồ Đeo tay", + "zh-CN": "手表店", + "zh-HK": "手錶店", + "zh-TW": "鐘錶行", + "mk": "Продавница за часовници", + "he": "שען" + } + }, + "shop/appliance": { + "title": { + "C": "Appliance Store", + "en": "Appliance Store", + "ar": "متجر الأجهزة المنزلية", + "cs": "Prodejna spotřební elektroniky", + "da": "Hvidevareforretning", + "de": "Haushaltselektrogerätegeschäft", + "el": "Κατάστημα Συσκευών", + "en-GB": "Appliance Shop", + "eo": "Elektronikaĵega vendejo", + "es": "Tienda de electrodomésticos", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kodinkonemyymälä", + "fr": "Magasin d'électroménager", + "gl": "Tenda de electrodomésticos", + "hu": "Háztartási gép üzlet", + "is": "Raftækjaverslun", + "it": "Negozio di elettrodomestici", + "ja": "白物家電販売店(大型製品)", + "ko": "가전 제품 가게", + "nl": "Huishoudelijkeapparatuurwinkel", + "no": "Hvitevarebutikk", + "pl": "Sklep z AGD", + "pt-BR": "Loja de Eletrodomésticos", + "pt": "Loja de eletrodomésticos \"brancos\"", + "ro": "Magazin de Electrocasnice", + "ru": "Магазин бытовой техники", + "sl": "Splošna tehnična trgovina", + "sv": "Vitvaror", + "tr": "Beyaz Eşya Mağazası", + "uk": "Побутова техніка", + "vi": "Tiệm Gia dụng", + "zh-CN": "家用电器店", + "zh-HK": "電器店", + "zh-TW": "家用電器店", + "mk": "Продавница за апарати и уреди", + "he": "חנות כלים חשמלים" + } + }, + "shop/gas": { + "title": { + "C": "Bottled Gas Shop", + "en": "Bottled Gas Shop", + "ast": "Gas embotelláu", + "cs": "Obchod s lahvovým plynem", + "da": "Gasflaskebutik", + "de": "Gasflaschenverkauf", + "el": "Κατάστημα Εμφιαλωμένων Αερίων", + "en-GB": "Bottled Gas Shop", + "eo": "Gasuja vendejo", + "es": "Tienda de gas embotellado", + "et": "Balloongaasi kauplus", + "fi": "Kaasupulloliike", + "fr": "Magasin de bouteilles de gaz", + "gl": "Tenda de bombonas de gas", + "hu": "Palackozottgáz-bolt", + "is": "Verslun með flöskugas", + "it": "Bombolaio", + "ja": "ガスボンベ店", + "ko": "가스통 가게", + "lv": "Gāzes balonu veikals", + "nl": "Gasflessenwinkel", + "pl": "Sklep z butlami gazowymi", + "pt-BR": "Distribuidor de Gás", + "pt": "Loja de botijas de gás", + "ru": "Магазин газовых баллонов", + "sl": "Trgovina s plinskimi jeklenkami", + "sv": "Försäljning av gas", + "tr": "Tüpçü", + "uk": "Продаж зрідженого газу", + "vi": "Tiệm Ga", + "zh-CN": "瓶装燃气站", + "zh-HK": "瓶裝石油氣店", + "zh-TW": "瓦斯店", + "mk": "Продавница за плински боци", + "he": "חנות גז" + } + }, + "shop/perfumery": { + "title": { + "C": "Perfume Store", + "en": "Perfume Store", + "ar": "متجر العطور", + "ast": "Perfumería", + "ca": "Botiga de perfums", + "cs": "Parfumerie", + "da": "Parfumebutik", + "de": "Parfümerie", + "el": "Κατάστημα Αρωμάτων", + "en-GB": "Perfume Shop", + "eo": "Parfuma vendejo", + "es": "Perfumería", + "et": "Parfüümikauplus", + "fa": "عطر فروشی", + "fi": "Hajusteliike", + "fr": "Parfumerie", + "gl": "Perfumaría", + "hr": "Parfimerija", + "hu": "Parfüméria", + "is": "Ilmvatnsbúð", + "it": "Profumeria", + "ja": "香水店", + "ko": "향수 가게", + "lt": "Parfumerijos parduotuvė", + "nl": "Parfumwinkel", + "no": "Parfymeri", + "pl": "Perfumeria", + "pt-BR": "Perfumaria", + "pt": "Perfumaria", + "ro": "Magazin de Parfum", + "ru": "Парфюмерия", + "sl": "Parfumerija", + "sr": "Парфемџиница", + "sv": "Parfymbutik", + "tr": "Parfümeri", + "uk": "Парфуми", + "vi": "Tiệm Nước hoa", + "zh-CN": "香水店", + "zh-HK": "香水店", + "zh-TW": "香水店", + "mk": "Парфимерија", + "he": "חנות בשמים" + } + }, + "shop/furnace": { + "title": { + "C": "Furnace Store", + "en": "Furnace Store", + "ast": "Fornos", + "ca": "Botiga de forns i calderes", + "cs": "Trouby a pece", + "da": "Oliefyr", + "de": "Heizungsfachgeschäft", + "el": "Κατάστημα Κλιβάνων", + "en-GB": "Furnace Shop", + "eo": "Hejtila vendejo", + "es": "Hornería", + "et": "Küttepood", + "fa": "فروشگاه مشعل و اجاق", + "fi": "Uunimyymälä", + "fr": "Chauffagiste", + "gl": "Forneiro", + "hu": "Kazánbolt (elavult)", + "id": "Toko Perapian", + "is": "Arinvöruverslun", + "it": "Negozio di caldaie", + "ja": "釜戸屋", + "ko": "벽난로 가게", + "lt": "Krosnių parduotuvė", + "nl": "Verwarmingswinkel", + "no": "Varmebutikk", + "pl": "Sklep z ogrzewaniem", + "pt-BR": "Loja de Fornos", + "pt": "Loja de fornos", + "ru": "Магазин систем отопления (устаревший тег)", + "sk": "Obchod so kotlami", + "sl": "Trgovina s pečmi", + "sv": "Värmepannor", + "tr": "Soba Mağazası", + "uk": "Опалювальні котли", + "vi": "Tiệm Máy sưởi", + "zh-CN": "熔炉店", + "zh-HK": "暖氣爐店", + "zh-TW": "火爐店", + "mk": "Продавница за печки", + "he": "חנות כבשנים" + } + }, + "shop/agrarian": { + "title": { + "C": "Farm Supply Shop", + "en": "Farm Supply Shop", + "ar": "متجر مستلزمات مزارع", + "cs": "Farmářská prodejna", + "da": "Grovvareforretning", + "de": "Agrarmarkt", + "el": "Προμήθειες Φάρμας", + "eo": "Terkultur-investaĵa vendejo", + "es": "Tienda de suministros agrícolas", + "et": "Põllumajandustarvete kauplus", + "fa": "فروشگاه لوازم کشاورزی", + "fi": "Maataloustarvikeliike", + "fr": "Magasin d'agriculture", + "gl": "Tenda de subministracións agrícolas", + "hu": "Gazdabolt", + "is": "Landbúnaðarvöruverslun", + "it": "Negozio di attrezzatura agricola", + "ja": "農業用品店", + "ko": "농업 용품 가게", + "nl": "Landbouwbenodigdhedenwinkel", + "pl": "Sklep rolniczy", + "pt-BR": "Loja de Suprimentos Agrícolas", + "pt": "Loja de produtos agrícolas", + "ru": "Сельскохозяйственный магазин", + "sv": "Jordbruksaffär", + "uk": "Сільгосптовари", + "vi": "Tiệm Nông nghiệp", + "zh-TW": "農業資材行", + "mk": "Земјоделска продавица", + "he": "חנות אביזרי חקלאות" + } + }, + "shop/health_food": { + "title": { + "C": "Health Food Shop", + "en": "Health Food Shop", + "ar": "متجر أغذية صحية", + "cs": "Obchod zdravé výživy", + "de": "Reformhaus", + "el": "Είδη Υγιεινής Διατροφής", + "en-GB": "Health Food Shop", + "eo": "Sanig-manĝaĵa vendejo", + "es": "Tienda de comida saludable", + "et": "Tervisliku toidu kauplus", + "fa": "فروشگاه غذای سلامت‌زا", + "fi": "Terveysravinnemyymälä", + "fr": "Magasin d'alimentation de santé", + "hu": "Egészséges ételek boltja", + "is": "Verslun með heilsuvörur", + "it": "Prodotti per il benessere", + "ja": "健康食品店", + "ko": "건강식품 가게", + "nl": "Gezondheidswinkel", + "no": "Helsekostbutikk", + "pl": "Sklep ze zdrową żywnością", + "pt-BR": "Loja de Alimentos Saudáveis", + "pt": "Loja de comida saudável", + "ru": "Магазин здорового питания", + "sv": "Hälsokostbutik", + "uk": "Магазин здорового харчування", + "vi": "Tiệm Thực phẩm Tự nhiên", + "zh-TW": "健康食品店", + "mk": "Продавница за здрава храна", + "he": "חנות מאכלי בריאות" + } + }, + "shop/tiles": { + "title": { + "C": "Tile Shop", + "en": "Tile Shop", + "ar": "متجر بلاط", + "ast": "Tienda d'azulexos", + "cs": "Obchod s obklady", + "de": "Fliesenhändler", + "el": "Κατάστημα Πλακιδίων", + "en-GB": "Tile Shop", + "eo": "Kahela vendejo", + "es": "Tienda de azulejos", + "fa": "کاشی فروشی", + "fi": "Laattamyymälä", + "fr": "Magasin de carrelage", + "hu": "Csempebolt", + "is": "Flísaverslun", + "it": "Negozio di piastrelle", + "ja": "タイル店", + "ko": "타일 가게", + "lv": "Flīžu veikals", + "nl": "Tegelwinkel", + "no": "Flisebutikk", + "pl": "Sklep z płytkami ceramicznymi", + "pt-BR": "Loja de Azulejos", + "pt": "Loja de azulejos", + "ru": "Магазин плитки", + "sv": "Kakelbutik", + "uk": "Кахель", + "vi": "Tiệm Ngói", + "zh-CN": "瓷砖商店", + "zh-TW": "磁磚商店", + "mk": "Продавница за плочки", + "he": "חנות מרצפות" + } + }, + "shop/trade": { + "title": { + "C": "Trade Shop", + "en": "Trade Shop", + "de": "Baustoffhandel", + "el": "Εμπορικό Κατάστημα", + "en-GB": "Trade Shop", + "eo": "Pogranda vendejo (konstruaĵ‑materialoj)", + "es": "Tienda comercial / Corralón", + "fr": "Grossiste", + "hu": "Kereskedelmi üzlet", + "is": "Iðnaðarvörusala", + "it": "Materiali da edilizia", + "ja": "建築資材店", + "ko": "무역 가게", + "nl": "Bouwmaterialenhandel", + "pl": "Skład branżowy", + "pt-BR": "Distribuidor", + "pt": "Loja de materiais de construção", + "ru": "Оптовая база", + "sv": "Proffshandel", + "uk": "Оптово-роздрібний склад", + "vi": "Tiệm Công nghiệp", + "zh-CN": "材料商店", + "zh-TW": "材料行", + "mk": "Занаетчиски набавки", + "he": "חנות קמעונאית" + } + }, + "shop/wholesale": { + "title": { + "C": "Wholesale Store", + "en": "Wholesale Store", + "ar": "متجر بيع بالجملة", + "cs": "Velkoobchodní sklad", + "de": "Großhandel", + "el": "Κατάστημα Χονδρικής", + "en-GB": "Wholesale Shop / Cash & Carry ", + "eo": "Pogranda vendejo", + "es": "Almacén al por mayor", + "et": "Hulgikauplus", + "fi": "Tukkukauppa", + "fr": "Commerce de gros", + "gl": "Almacén ó por maior", + "hu": "Nagykereskedés", + "is": "Heildverslun", + "it": "Grossista", + "ja": "卸売店", + "ko": "도매상", + "nl": "Groothandel", + "pl": "Hurtownia", + "pt-BR": "Atacadista", + "pt": "Loja grossista", + "ru": "Оптовый магазин", + "sv": "Grosistaffär", + "ta": "மொத்தவிலைக் கடை", + "uk": "Гуртова торгівля", + "vi": "Tiệm Bán buôn", + "zh-CN": "批发市场", + "zh-TW": "批發商", + "mk": "Големопродажен центар", + "he": "חנות סיטונאות" + } + }, + "shop/motorcycle_repair": { + "title": { + "C": "Motorcycle Repair Shop", + "en": "Motorcycle Repair Shop", + "ar": "ورشة تصليح الدراجات النارية", + "cs": "Opravna motocyklů", + "da": "Motorcykelværksted", + "de": "Motorradwerkstatt", + "el": "Συνεργείο Μοτοσυκλετών", + "en-GB": "Motorcycle Repair Shop", + "eo": "Motorcikl-riparejo", + "es": "Taller de reparación de motocicletas", + "et": "Mootorratta remondikoda", + "fa": "تعمیرگاه موتورسیکلت", + "fi": "Moottoripyöräkorjaamo", + "fr": "Réparateur de motos", + "gl": "Taller de arranxo de motocicletas", + "hr": "Ormarići za bicikle", + "hu": "Motorkerékpár alkatrész bolt", + "is": "Mótorhjólaviðgerðaverslun", + "it": "Officina riparazione motocicli", + "ja": "バイク修理店", + "ko": "오토바이 수리점", + "lt": "Motociklų taisykla", + "lv": "Motociklu remonta darbnīca", + "nl": "Motorreparatie", + "no": "Motorsykkelverksted", + "pl": "Warsztat motocyklowy", + "pt-BR": "Oficina de Motocicletas", + "pt": "Oficina de motas", + "ru": "Мотомастерская", + "sv": "Motorcykelverkstad", + "uk": "Ремонт мотоциклів", + "vi": "Tiệm Sửa Xe máy", + "zh-CN": "摩托车修理店", + "zh-TW": "摩托車維修店", + "mk": "Поправка на мотоцикли", + "he": "מוסך אופנועים" + } + }, + "shop/pet_grooming": { + "title": { + "C": "Pet Grooming Store", + "en": "Pet Grooming Store", + "de": "Tierpflegedienst, Tierfriseur (meist Hundesalon)", + "el": "Κατάστημα Καλλωπισμού Κατοικίδιων", + "en-GB": "Pet Grooming Shop", + "eo": "Dombesta beligejo", + "es": "Tienda de aseo para mascotas", + "fi": "Lemmikkihoitola", + "fr": "Salon de toilettage", + "hu": "Állatkozmetikai bolt", + "is": "Dýrasnyrtiverslun", + "it": "Toelettatura per animali", + "ja": "ペット美容室", + "ko": "애완동물 용품 가게", + "nl": "Trimsalon", + "pl": "Salon fryzjerski dla zwierząt", + "pt-BR": "Loja de cuidados com animais de estimação", + "pt": "Loja de banhos e tosquias", + "ru": "Парикмахерская для животных", + "sv": "Pälsvård för husdjur", + "uk": "Салон догляду за тваринами", + "vi": "Dịch vụ Tỉa lông", + "zh-TW": "寵物美容店", + "mk": "Продавница за нега на миленици", + "he": "חנות לטיפוח חיות מחמד" + } + }, + "shop/catalogue": { + "title": { + "C": "Catalog Shop", + "en": "Catalog Shop", + "de": "Versandhandel", + "es": "Tienda de catálogo", + "fr": "Magasin à catalogue", + "ja": "カタログショップ", + "nl": "Cataloguswinkel", + "pl": "Sklep Argos", + "pt-BR": "Catálogo de loja", + "pt": "Loja de catálogo", + "sv": "Katalogaffär", + "uk": "Товари поштою", + "zh-TW": "目錄店", + "mk": "Каталошка продавница", + "he": "חנות קטלוגים" + } + }, + "shop/country_store": { + "title": { + "C": "Country Store", + "en": "Country Store", + "de": "Ländlicher Laden", + "el": "Είδη Εξοχής", + "eo": "Ĝenerala vendejo", + "es": "Tienda de campo", + "fr": "Magasin de campagne", + "ja": "よろずや", + "nl": "Outdoorzaak", + "no": "Landhandel", + "pl": "Sklep wiejski", + "pt-BR": "Loja Country", + "pt": "Loja para proprietários rurais", + "sv": "Lanthandel", + "uk": "Сільмаг", + "vi": "Tiệm Nông thôn", + "zh-TW": "鄉村商店", + "mk": "Селска продавница", + "he": "חנות למטיילים" + } + }, + "shop/hairdresser_supply": { + "title": { + "C": "Hairdresser Supply Store", + "en": "Hairdresser Supply Store", + "ar": "متجر مستلزمات حلاقين", + "cs": "Kadeřnické potřeby", + "de": "Friseurbedarf", + "el": "Εξοπλισμός Κομμωτηρίου", + "eo": "Frizist-ilara vendejo", + "es": "Tienda de suministros para peluquería", + "fa": "فروشگاه لوازم سلمانی", + "fi": "Hiustarvikemyymälä", + "fr": "Magasin de matériel de coiffure", + "hu": "Fodrászcikk bolt", + "it": "Negozio di prodotti per parrucchiere", + "ja": "理容用品店", + "ko": "미용실 용품 가게", + "nl": "Haarbenodigdhedenwinkel", + "pl": "Sklep z artykułami fryzjerskimi", + "pt-BR": "Loja de suprimentos de cabeleireiro", + "pt": "Loja de acessórios de cabeleireiro", + "sv": "Affär för hårprodukter", + "uk": "Перукарські товари", + "vi": "Tiệm Mỹ phẩm Tóc", + "zh-TW": "剪髮器材店", + "mk": "Фризерски набавки", + "he": "חנות ציוד לספרים" + } + }, + "shop/party": { + "title": { + "C": "Party Supply Store", + "en": "Party Supply Store", + "ar": "متجر مستلزمات حفلات", + "de": "Partyzubehör", + "el": "Κατάστημα Προμηθειών για Πάρτυ", + "eo": "Vendejo de okazaĵaj provizoj", + "es": "Tienda de artículos para fiestas", + "fr": "Magasin de matériel de fête", + "gl": "Tenda de artigos para festas", + "hu": "Partykellékbolt", + "it": "Negozio di articoli per le feste", + "ja": "パーティ用品店", + "ko": "파티 용품 가게", + "nl": "Feestwinkel", + "pl": "Sklep z artykułami imprezowymi", + "pt-BR": "Loja de materiais para festas", + "pt": "Loja de acessórios para festas", + "sv": "Partybutik", + "uk": "Товари до свят", + "vi": "Tiệm Phụ kiện Trang trí Tiệc", + "zh-TW": "宴會器材店", + "mk": "Набавки за забавни настани", + "he": "חנות ציוד למסיבות" + } + }, + "shop/sewing": { + "title": { + "C": "Sewing Supply Shop", + "en": "Sewing Supply Shop", + "ar": "متجر مستلزمات خياطة", + "cs": "Šicí potřeby, galanterie", + "de": "Kurzwarenladen", + "el": "Κατάστημα Προμηθειών για Ράψιμο", + "eo": "Kudrilar-vendejo", + "es": "Tienda de suministros de costura", + "fa": "خرازی", + "fi": "Ompelutarvikeliike", + "fr": "Magasin de couture", + "gl": "Tenda de artigos de costura", + "hu": "Varrásfelszerelés bolt", + "is": "Saumavöruverslun", + "it": "Merceria", + "ja": "手芸用品店", + "ko": "바느질 용품 가게", + "nl": "Naaiwinkel", + "no": "Sybutikk", + "pl": "Pasmanteria", + "pt-BR": "Loja de suprimentos de costura", + "pt": "Retrosaria", + "ru": "Швейные принадлежности", + "sv": "Sybutik", + "uk": "Приладдя для шиття", + "vi": "Tiệm Đồ Kim chỉ", + "zh-TW": "縫紉用品店", + "mk": "Шивачки набавки", + "he": "חנות ציוד תפירה" + } + }, + "shop/caravan": { + "title": { + "C": "RV Dealership", + "en": "RV Dealership", + "de": "Wohnwagengeschäft", + "eo": "Vendejo de kampad-veturiloj", + "es": "Concesionario de autocaravanas", + "et": "Haagissuvilate/autoelamute müügiplats", + "fi": "Asuntovaunukauppa", + "fr": "Concessionnaire de véhicules de tourisme", + "hu": "Lakókocsi kereskedés", + "it": "Concessionario caravan", + "ja": "キャラバンカー販売店", + "ko": "RV 대리점", + "nl": "Caravan-dealer", + "pl": "Sklep z kamperami i przyczepami", + "pt-BR": "Concessionária de Motorhomes", + "pt": "Vendedor de caravanas", + "sv": "Husvagnsförsäljare", + "uk": "Салон автотрейлерів", + "vi": "Tiệm Nhà xe Lưu động", + "zh-TW": "拖車經銷商", + "mk": "Продавач на камп-возила", + "he": "סוכנות קרוואנים" + } + }, + "shop/fireplace": { + "title": { + "C": "Fireplace Store", + "en": "Fireplace Store", + "de": "Kachelofenladen", + "el": "Είδη Τζακιού", + "eo": "Kamen-vendejo", + "es": "Tienda de chimenea", + "et": "Küttekollete pood", + "fi": "Takkamyymälä", + "fr": "Magasin de cheminées", + "it": "Negozio di caminetti", + "ja": "暖房具店", + "ko": "벽난로 가게", + "nl": "Haardwinkel", + "no": "Peisbutikk", + "pl": "Sklep z kominkami", + "pt-BR": "Loja de Lareiras", + "pt": "Loja de lareiras", + "sv": "Kaminbutik", + "uk": "Печі, каміни", + "vi": "Tiệm Lò sưởi", + "zh-TW": "壁爐商店", + "mk": "Продавница за камини", + "he": "חנות חימום" + } + }, + "shop/fishing": { + "title": { + "C": "Fishing Shop", + "en": "Fishing Shop", + "cs": "Rybářské potřeby", + "de": "Angelgeschäft", + "el": "Είδη Αλιείας", + "eo": "Fiŝkaptil-vendejo", + "es": "Tienda de pesca", + "et": "Kalastustarvete pood", + "fa": "فروشگاه لوازم ماهی گیری", + "fi": "Kalastuskauppa", + "fr": "Magasin de pêche", + "gl": "Lonxa ou tenda de pesca", + "hr": "Prodavaonica ribolovne opreme", + "hu": "Horgászbolt", + "it": "Negozio di pesca", + "ja": "釣具店", + "ko": "낚시 가게", + "nl": "Hengelsportwinkel", + "no": "Fiskebutikk", + "pl": "Sklep wędkarski", + "pt-BR": "Loja de pesca", + "pt": "Loja de artigos de pesca", + "ru": "Рыболовный магазин", + "sv": "Fiskeaffär", + "uk": "Рибальський магазин", + "vi": "Tiệm Cần câu", + "zh-TW": "釣魚用品店", + "mk": "Риболовна продавница", + "he": "חנות דיג" + } + }, + "shop/frozen_food": { + "title": { + "C": "Frozen Food Store", + "en": "Frozen Food Store", + "cs": "Mražená jídla", + "de": "Tiefkühllebensmittel", + "el": "Κατεψυγμένα Τρόφιμα", + "eo": "Frostigit-manĝaĵo vendejo", + "es": "Alimentos congelados", + "fi": "Pakasteruokakauppa", + "fr": "Surgelés", + "gl": "Conxelados", + "hu": "Fagyasztott élelmiszer", + "is": "Frosin matvæli", + "it": "Cibo surgelato", + "ja": "冷凍食品店", + "ko": "냉동식품 가게", + "nl": "Ingevrorenvoedselzaak", + "no": "Frossenmat", + "pl": "Sklep z mrożonkami", + "pt-BR": "Alimento congelado", + "pt": "Loja de comida congelada", + "sv": "Fryst mat", + "uk": "Заморожені продукти", + "vi": "Tiệm Thực phẩm Đông lạnh", + "zh-CN": "冷冻食品", + "zh-TW": "冷凍食品", + "mk": "Замрзната храна", + "he": "מזון קפוא" + } + }, + "shop/fuel": { + "title": { + "C": "Fuel Shop", + "en": "Fuel Shop", + "cs": "Obchod s palivem", + "de": "Tankstelle", + "el": "Κατάστημα Καυσίμων", + "eo": "Brulaĵ-vendejo", + "es": "Tienda de combustible", + "et": "Küttepood", + "fa": "فروشگاه سوخت", + "fi": "Polttoainemyymälä", + "fr": "Revendeur de carburant", + "hu": "Üzemanyagot árusító bolt", + "it": "Negozio di carburanti", + "ja": "燃料店", + "ko": "연료 가게", + "nl": "Tankstation", + "no": "Drivstoffbuttikk", + "pl": "Sklep z paliwami", + "pt-BR": "Loja de Combustível", + "pt": "Loja de combustíveis", + "sv": "Bränsleaffär", + "uk": "Паливо", + "vi": "Tiệm Nhiên liệu", + "zh-TW": "燃料店", + "mk": "Продавница за гориво", + "he": "חנות נוחות" + } + }, + "shop/hunting": { + "title": { + "C": "Hunting Shop", + "en": "Hunting Shop", + "cs": "Lovecké potřeby", + "de": "Jägereigeschäft", + "el": "Είδη Κυνηγιού", + "eo": "Ĉasil-vendejo", + "es": "Tienda de caza", + "et": "Jahipood", + "fa": "فروشگاه لوازم شکار", + "fi": "Metsästyskauppa", + "fr": "Magasin de chasse", + "gl": "Tenda de caza", + "hu": "Vadászati bolt", + "is": "Veiðibúð", + "it": "Negozio di caccia", + "ja": "狩猟用品店", + "ko": "사냥 용품 가게", + "nl": "Jachtwinkel", + "no": "Jaktbutikk", + "pl": "Sklep myśliwski", + "pt-BR": "Loja de Caça", + "pt": "Loja de artigos de caça", + "ru": "Охотничий магазин", + "sv": "Jaktbutik", + "uk": "Мисливський магазин", + "vi": "Tiệm Súng Săn", + "zh-TW": "打獵用品店", + "mk": "Ловечка продавница ", + "he": "חנות ציד" + } + }, + "shop/water": { + "title": { + "C": "Drinking Water Shop", + "en": "Drinking Water Shop", + "ar": "متجر مياه شرب", + "cs": "Obchod s pitnou vodou", + "de": "Trinkwasserladen", + "el": "Κατάστημα Πόσης Νερού", + "eo": "Trinkakv-vendejo", + "es": "Tienda de agua potable", + "et": "Joogivee pood", + "fa": "فروشگاه آب", + "fi": "Juomavesikauppa", + "fr": "Magasin d'eau potable", + "gl": "Tenda de auga potábel", + "hu": "Ivóvíz bolt", + "it": "Negozio di acqua da bere", + "ja": "飲料水店", + "ko": "식수 가게", + "nl": "Drinkwaterwinkel", + "pl": "Sklep z wodą pitną", + "pt-BR": "Loja de Água Potável", + "pt": "Loja de água potável", + "sv": "Affär för dricksvatten", + "uk": "Магазин питної води", + "vi": "Tiệm Nước uống", + "zh-TW": "飲用水商店", + "mk": "Продавница за пивка вода", + "he": "חנות מי שתייה" + } + }, + "shop/boat": { + "title": { + "C": "Boat Store", + "en": "Boat Store", + "de": "Bootsgeschäft", + "eo": "Boat‑vendejo", + "es": "Tienda de barcos", + "fi": "Venekauppa", + "fr": "Magasin de bateaux", + "gl": "Tenda de embarcacións", + "hu": "Hajósbolt", + "it": "Negozio di barche", + "ja": "ボート店", + "ko": "보트 가게", + "pl": "Sklep z łodziami", + "pt-BR": "Loja de Barcos", + "pt": "Loja de barcos", + "sv": "Båtaffär", + "uk": "Магазин човнів", + "zh-TW": "船店", + "mk": "Продавница за чамци", + "he": "חנות סירות" + } + }, + "shop/brewing_supplies": { + "title": { + "C": "Brewing Supply Store", + "en": "Brewing Supply Store", + "de": "Brauzubehörgeschäft", + "es": "Tienda de suministros de cerveza", + "fr": "Magasin de matériel de brasserie", + "ja": "醸造用品店", + "ko": "양조 용품 가게", + "pl": "Sklep dla piwowarów domowych", + "pt-BR": "Loja de suprimentos para cerveja", + "pt": "Loja de material de fermentação", + "uk": "Пивоварне та виноробне обладнання", + "zh-TW": "釀酒用品店", + "mk": "Пивоварска продавница", + "he": "חנות ציוד למבשלות" + } + }, + "shop/camera": { + "title": { + "C": "Camera Equipment Store", + "en": "Camera Equipment Store", + "de": "Fotofachgeschäft", + "es": "Tienda de equipos de fotografía", + "ja": "カメラ店", + "ko": "카메라 가게", + "pl": "Sklep z kamerami i aparatami", + "pt-BR": "Loja de equipamentos para câmeras", + "pt": "Loja de equipamento fotográfico", + "uk": "Фотообладнання", + "zh-TW": "相機配件店", + "mk": "Продавница за фотографска опрема", + "he": "חנות ציוד צילום" + } + }, + "shop/cannabis": { + "title": { + "C": "Cannabis Shop", + "en": "Cannabis Shop", + "cs": "Feťácká prodejna", + "de": "Cannabisgeschäft", + "eo": "Mariĥuana vendejo", + "es": "Tienda de cannabis", + "fi": "Kannabiskauppa", + "fr": "Magasin de canabis", + "hu": "Marihuána bolt", + "it": "Negozio di cannabis", + "ja": "Cannabis Shop(illegal in Japan)", + "ko": "대마초 가게", + "pl": "Sklep z produktami z konopi", + "pt-BR": "Loja de canábis", + "pt": "Loja de canábis", + "sv": "Cannabisaffär", + "uk": "Конопля", + "zh-TW": "娛樂用大麻店", + "mk": "Продавница за коноп", + "he": "חנות קנביס" + } + }, + "shop/doors": { + "title": { + "C": "Door Shop", + "en": "Door Shop", + "de": "Türgeschäft", + "es": "Tienda de puertas (aberturas)", + "fi": "Oviliike", + "fr": "Magasin de portes", + "ja": "ドア販売店", + "ko": "문 가게", + "no": "Dør Butikk", + "pl": "Sklep z drzwiami", + "pt-BR": "Loja de portas", + "pt": "Loja de portas", + "uk": "Магазин дверей", + "zh-TW": "門店", + "mk": "Продавница за врати", + "he": "חנות דלתות" + } + }, + "shop/electrical": { + "title": { + "C": "Electrical Equipment Store", + "en": "Electrical Equipment Store", + "de": "Elektrofachgeschaft", + "el": "Κατάστημα Ηλεκτρολογικού Εξοπλισμού", + "es": "Tienda de equipos eléctricos", + "et": "Elektrikauba pood", + "fa": "فروشگاه کالای برق", + "fi": "Sähkötarvikekauppa", + "fr": "Magasin d'équipements électriques", + "it": "Negozio di materiale elettrico", + "ja": "電気店", + "no": "Elektrisk utstyrsbutikk", + "pl": "Sklep elektryczny", + "pt-BR": "Loja de equipamentos elétricos", + "pt": "Loja de material elétrico", + "uk": "Магазин електротехнічного обладнання", + "zh-TW": "電氣材料行", + "mk": "Продавница за електрика", + "he": "חנות מוצרי חשמל" + } + }, + "shop/boutique": { + "title": { + "C": "Boutique", + "en": "Boutique", + "af": "Boetiek", + "ar": "بوتيك", + "ast": "Boutique", + "bn": "বুটিক", + "bs": "Butik", + "ca": "Boutique", + "cs": "Módní butik", + "da": "Boutique", + "de": "Boutique", + "el": "Μπουτίκ", + "en-GB": "Boutique", + "eo": "Mod-butiko (altprezaj vestaĵoj)", + "es": "Boutique", + "et": "Butiik", + "fa": "بوتیک", + "fi": "Muotiliike", + "fr": "Petit magasin de mode", + "gl": "Boutique", + "hr": "Butik", + "hu": "Butik", + "id": "Butik", + "is": "Búð", + "it": "Boutique", + "ja": "ブティック", + "ko": "부티크", + "lt": "Parduotuvė", + "lv": "Veikals", + "nl": "Boetiek", + "no": "Klesbutikk", + "pl": "Butik", + "pt-BR": "Loja de Alta Costura", + "pt": "Boutique", + "ro": "Boutique", + "ru": "Бутик", + "sk": "Butik", + "sl": "Butik", + "sr": "Бутик", + "sv": "Boutique (Dyra kläder och accessoarer)", + "tr": "Butik Mağaza", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "yue": "時裝店", + "zh-CN": "精品店", + "zh-HK": "時裝店", + "zh-TW": "服飾店", + "zh": "精品店", + "mk": "Бутик", + "bg": "Бутик", + "he": "בוטיק" + } + }, + "shop/fashion": { + "title": { + "C": "Fashion Store", + "en": "Fashion Store", + "ar": "متجر موضة", + "ast": "Tienda de moda", + "ca": "Botiga de roba", + "cs": "Módní zboží", + "da": "Modebutik", + "de": "Modegeschäft", + "el": "Κατάστημα Μόδας", + "en-GB": "Fashion Shop", + "eo": "Mod-butiko", + "es": "Tienda de moda", + "et": "Moekauplus", + "fa": "فروشگاه مد", + "fi": "Muotiliike", + "fr": "Boutique de mode", + "gl": "Tenda de moda", + "hr": "Modni dućan", + "hu": "Divatüzlet", + "id": "Toko Mode", + "is": "Tískuverslun", + "it": "Negozio di moda", + "ja": "ファッション店", + "ko": "패션 가게", + "lt": "Mados parduotuvė", + "lv": "Modes veikals", + "nl": "Modewinkel", + "no": "Motebutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Moda", + "pt": "Loja de moda", + "ro": "Magazin de Modă", + "ru": "Магазин модной брендовой одежды", + "sk": "Obchod s módnymi doplnkami", + "sl": "Trgovina z modnimi oblačili", + "sr": "Бутик", + "sv": "Modebutik", + "tr": "Giyim Mağazası", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "zh-CN": "服装店", + "zh-HK": "時裝店", + "zh-TW": "時尚店", + "mk": "Модна продавница", + "he": "חנות אופנה" + } + }, + "shop/fashion_accessories": { + "title": { + "C": "Fashion Accessories Store", + "en": "Fashion Accessories Store", + "de": "Geschäft für Modeaccessoires", + "el": "Κατάστημα για Αξεσουάρ Μόδας", + "eo": "Galanteria (vestaj akcesoraĵoj) vendejo", + "es": "Tienda de accesorios de moda", + "fi": "Muotitarvikekauppa", + "fr": "Boutique d'accessoires de mode", + "hu": "Divat kiegészítők boltja", + "ja": "ファッション小物店", + "ko": "패션 액세서리 가게", + "pl": "Sklep z galanterią", + "pt-BR": "Loja de acessórios de moda", + "pt": "Loja de acessórios de moda", + "uk": "Магазин модних аксесуарів", + "zh-TW": "服裝配飾商店", + "mk": "Продавница за модни додатоци", + "he": "חנות אביזרי אופנה" + } + }, + "shop/flooring": { + "title": { + "C": "Flooring Supply Shop", + "en": "Flooring Supply Shop", + "de": "Fußbodengeschäft", + "es": "Tienda de suministros para pisos", + "ja": "床用品店", + "pl": "Sklep z posadzkami", + "pt-BR": "Loja de materiais para pisos", + "pt": "Loja de material de pavimentação", + "uk": "Магазин напільних матеріалів", + "zh-TW": "地板商店", + "mk": "Продавница за подови", + "he": "חנות ריצוף" + } + }, + "shop/general": { + "title": { + "C": "General Store", + "en": "General Store", + "de": "Gemischtwarenhandlung", + "eo": "Ĝenerala vendejo", + "es": "Tienda general", + "et": "Kauplus", + "fi": "Sekatavarakauppa", + "fr": "Magasin général", + "hu": "Vegyesbolt", + "it": "Emporio", + "ja": "よろず屋", + "pl": "Sklep wielobranżowy", + "pt-BR": "Loja geral", + "pt": "Mercearia", + "sv": "Generell affär", + "uk": "Крамниця", + "zh-CN": "杂货店", + "zh-TW": "一般商店", + "mk": "Општа продавница", + "he": "חנות כללית" + } + }, + "shop/games": { + "title": { + "C": "Tabletop Game Store", + "en": "Tabletop Game Store", + "de": "Brettspielgeschäft", + "eo": "Tabullud‑vendejo", + "es": "Tienda de juegos de mesa", + "fi": "Lautapeliliike", + "fr": "Magasin de jeux de plateau", + "hu": "Asztali játékok boltja", + "it": "Negozio di giochi da tavolo", + "ja": "ボードゲーム販売店", + "ko": "보드게임 가게", + "nl": "Bordspellenwinkel", + "no": "Bordspill Butikk", + "pl": "Sklep z grami", + "pt-BR": "Loja de jogos de mesa", + "pt": "Loja de jogos de tabuleiro", + "uk": "Настільні ігри", + "zh-TW": "桌遊店", + "mk": "Продавница за столни игри", + "he": "חנות משחקי קופסה" + } + }, + "shop/lighting": { + "title": { + "C": "Lighting Store", + "en": "Lighting Store", + "de": "Leuchten- und Lampengeschäft", + "el": "Κατάστημα Λάμπας", + "eo": "Prilumigad‑aparata vendejo", + "es": "Tienda de iluminación", + "fi": "Valaisinkauppa", + "fr": "Magasin de lampes", + "gl": "Tenda de iluminación", + "hu": "Világítási eszközök", + "it": "Negozio di illuminazione", + "ja": "照明器具店", + "ko": "조명 가게", + "pl": "Sklep z oświetleniem", + "pt-BR": "Loja de iluminação", + "pt": "Loja de iluminação", + "sv": "Belysningsbutik", + "uk": "Магазин освітлення", + "zh-TW": "燈具店", + "mk": "Продавница за расветни тела", + "he": "חנות תאורה" + } + }, + "shop/hobby": { + "title": { + "C": "Hobby Shop", + "en": "Hobby Shop", + "de": "Bastelgeschäft", + "es": "Tienda de pasatiempos", + "fi": "Harrastuskauppa", + "fr": "Magasin pour hobby (non spécifié)", + "hu": "Hobbi bolt", + "ja": "ホビーショップ", + "ko": "취미 가게", + "no": "Hobby Butikk", + "pl": "Sklep hobbystyczny", + "pt-BR": "Loja de passatempo", + "pt": "Loja de modelismo", + "sv": "Hobbyaffär", + "uk": "Магазин товарів для хоббі", + "zh-TW": "嗜好商店", + "mk": "Хобистичка продавница", + "he": "חנות תחביבים" + } + }, + "shop/pottery": { + "title": { + "C": "Pottery Store", + "en": "Pottery Store", + "de": "Keramikladen", + "es": "Tienda de alfarería", + "fr": "Magasin de poterie", + "ja": "陶磁器店", + "ko": "도자기 가게", + "pl": "Sklep garncarski", + "pt-BR": "Loja de cerâmica", + "pt": "Loja de cerâmica", + "uk": "Порцелянові вироби", + "zh-TW": "陶器店", + "mk": "Продавница за грнчарија", + "he": "חנות כדים" + } + }, + "shop/military_surplus": { + "title": { + "C": "Military Surplus Store", + "en": "Military Surplus Store", + "de": "Militärkleidungsabverkauf", + "el": "Κατάστημα Στρατιωτικού Εξοπλισμού", + "eo": "Ne-plu-necesa-armea-ekipaĵo vendejo", + "es": "Tienda de excedentes militares", + "fi": "Armeijan ylijäämämyymälä", + "fr": "Surplus militaire", + "hu": "Katonai felszerelések boltja", + "ja": "軍払い下げ品店", + "pl": "Sklep ze sprzętem wojskowym", + "pt-BR": "Loja de excedente militar", + "pt": "Loja de excedentes militares", + "uk": "Магазин військових товарів", + "zh-TW": "軍用品店", + "mk": "Продавница за воени вишоци", + "he": "חנות עודפי צבא" + } + }, + "shop/outpost": { + "title": { + "C": "Online Retailer Outpost", + "en": "Online Retailer Outpost", + "de": "Abholstelle eines Onlinehändlers", + "eo": "Ricevejo de aĉetaĵoj (per interreto)", + "es": "Puesto de venta minorista online", + "fi": "Verkkokaupan noutopiste", + "fr": "Magasin de produits vendus en ligne", + "ja": "商品受け取り店", + "pl": "Placówka sklepu internetowego", + "pt-BR": "Posto de retalhista online", + "pt": "Posto de retalhista online", + "uk": "Пункт видачі онлайн магазина", + "zh-TW": "線上零售商提貨處", + "mk": "Испостава на семрежна продавница", + "he": "נקודת הפצה של שירות מקוון" + } + }, + "shop/printer_ink": { + "title": { + "C": "Printer Ink Store", + "en": "Printer Ink Store", + "de": "Druckertintengeschäft", + "el": "Κατάστημα για Μελάνια Εκτυπωτών", + "eo": "Presil-inka vendejo", + "es": "Tienda de tinta para impresora", + "fi": "Tulostinmustemyymälä", + "fr": "Vendeur d'encre pour imprimante", + "hu": "Nyomtatófesték bolt", + "it": "Negozio di cartucce per stampanti", + "ja": "プリンタ用インク店", + "ko": "프린터 잉크 가게", + "pl": "Sklep z tuszami do drukarek", + "pt-BR": "Loja de tinta de impressora", + "pt": "Loja de tinteiros de impressora", + "sv": "Butik för skrivarbläck", + "uk": "Магазин чорнил для принтера", + "zh-TW": "印表機墨水商店", + "mk": "Продавница за печатарска боја", + "he": "חנות דיו למדפסות" + } + }, + "shop/rental": { + "title": { + "C": "Rental Shop", + "en": "Rental Shop", + "de": "Verleih", + "es": "Tienda de alquiler", + "fi": "Vuokraamo", + "fr": "Magasin de location", + "gl": "Tenda de alugueiro", + "hu": "Kölcsönző", + "ja": "レンタルショップ", + "ko": "대여점", + "pl": "Wypożyczalnia", + "pt-BR": "Locadora", + "pt": "Loja de aluguer de material em geral", + "sv": "Hyrbutik", + "uk": "Станція прокату", + "vi": "Cho thuê Hàng hóa", + "zh-TW": "租賃店", + "mk": "Изнајмувачница", + "he": "חנות השכרה" + } + }, + "shop/swimming_pool": { + "title": { + "C": "Pool Supply Store", + "en": "Pool Supply Store", + "de": "Swimmingpoolbedarf", + "eo": "Vendejo de naĝej-akcesoriaĵoj", + "es": "Tienda de suministros para piscinas", + "fi": "Uima-allasliike", + "fr": "Magasin de matériel de piscine", + "hu": "Medence kellékek", + "it": "Negozio per rifornimenti per piscina", + "ja": "プール用品店", + "ko": "수영장 용품 가게", + "pl": "Sklep z akcesoriami do basenów", + "pt-BR": "Loja de suprimentos para piscinas", + "pt": "Loja de acessórios para piscinas", + "sv": "Butik för pooltillbehör", + "uk": "Обладнання для басейнів", + "zh-TW": "泳池用品商店", + "mk": "Базенски залихи", + "he": "חנות ציוד לבריכות" + } + }, + "shop/psychic": { + "title": { + "C": "Psychic", + "en": "Psychic", + "de": "Astrologiker", + "es": "Vidente", + "fi": "Psyykikko", + "fr": "Magasin ésotérique psi", + "ja": "サイキック店", + "pl": "Medium", + "pt-BR": "Psíquico", + "pt": "Vidente", + "uk": "Екстрасенс", + "zh-TW": "算命店", + "mk": "Јасновидец", + "he": "מדיום" + } + }, + "shop/spices": { + "title": { + "C": "Spice Shop", + "en": "Spice Shop", + "de": "Gewürzladen", + "el": "Κατάστημα Μπαχαρικών", + "es": "Tienda de especias", + "fi": "Maustekauppa", + "fr": "Magasin d'épices", + "hu": "Fűszerbolt", + "ja": "スパイス店", + "ko": "향신료 가게", + "pl": "Sklep z przyprawami", + "pt-BR": "Loja de especiarias", + "pt": "Loja de especiarias", + "uk": "Спеції", + "vi": "Tiệm Gia vị", + "zh-CN": "香料店", + "zh-TW": "香料店", + "mk": "Продавница за зачини", + "he": "חנות תבלינים" + } + }, + "shop/telecommunication": { + "title": { + "C": "Telecom Retail Store", + "en": "Telecom Retail Store", + "de": "Telekommunikationsfachgeschäft", + "es": "Tienda minorista de telecomunicaciones", + "et": "Sidefirma pood", + "fi": "Teleoperaattorin myymälä", + "fr": "Magasin de compagnie de télécommunication", + "ja": "通信サービス店", + "ko": "통신사 대리점", + "pl": "Dostawca Internetu/telefonu/TV", + "pt-BR": "Loja de telecomunicações", + "pt": "Loja de telecomunicações", + "uk": "Магазин телекомунікаційного обладнання", + "zh-TW": "通訊行", + "mk": "Телекомуникациска продавница", + "he": "חנות טלפונים" + } + }, + "shop/tool_hire": { + "title": { + "C": "Tool Rental", + "en": "Tool Rental", + "de": "Werkzeugverleih", + "es": "Alquiler de herramientas", + "fr": "Location d'outils", + "ja": "工具レンタル店", + "no": "Verktøyutleie", + "pl": "Wypożyczalnia narzędzi", + "pt-BR": "Aluguel de ferramentas", + "pt": "Aluguer de ferramentas", + "uk": "Прокат інструмента", + "vi": "Cho thuê Công cụ", + "zh-TW": "工具租賃", + "mk": "Изнајмување алати", + "he": "השכרת כלים" + } + }, + "tourism/alpine_hut": { + "title": { + "C": "Alpine Hut", + "en": "Alpine Hut", + "af": "Berghuisie", + "ar": "كوخ جبلي", + "ast": "Refuxu d'alpinismu", + "bs": "Planinski dom", + "ca": "Refugi de muntanya", + "cs": "Horská chata", + "da": "Bjerghytte", + "de": "Schutzhütte", + "el": "Αλπική Καλύβα", + "en-GB": "Alpine Hut", + "eo": "Montara rifuĝejo", + "es": "Refugio de montaña", + "et": "Alpimaja", + "fa": "کلبه آلپ", + "fi": "Alppimaja", + "fr": "Refuge de montagne", + "gl": "Refuxio de montaña", + "hr": "Planinarski dom", + "hu": "Menedékház", + "is": "Fjallakofi", + "it": "Rifugio", + "ja": "山小屋", + "ko": "고산장", + "lt": "Kalnų namelis", + "nl": "Berghut", + "no": "Fjellhytte", + "pl": "Chata górska", + "pt-BR": "Abrigo de Montanha", + "pt": "Albergue alpino", + "ro": "Cabană", + "ru": "Горный приют", + "sk": "Vysokohorská chata", + "sl": "Planinska koča", + "sr": "Планинарски дом", + "sv": "Fjällstation", + "tr": "Dağ Evi", + "uk": "Гірський притулок", + "vi": "Túp lều trên Núi", + "yue": "高山屋仔", + "zh-CN": "高山小屋", + "zh-HK": "高山小屋", + "zh-TW": "高山小屋", + "zh": "高山小屋", + "mk": "Планинарски дом", + "bg": "Хижа", + "he": "בקטה הררית" + } + }, + "tourism/artwork": { + "title": { + "C": "Artwork", + "en": "Artwork", + "af": "Kunswerk", + "ar": "عمل فني", + "ast": "Obra d'arte", + "bs": "Umjetničko djelo", + "ca": "Obra d'art", + "cs": "Umělecké dílo", + "da": "Kunstværk", + "de": "Kunst", + "el": "Έργο τέχνης", + "en-GB": "Artwork", + "eo": "Artverko", + "es": "Obra de arte", + "et": "Kunstiteos", + "fa": "اثر هنری", + "fi": "Taideteos", + "fr": "Œuvre d'art", + "gl": "Obra artística", + "hr": "Umjetničko djelo", + "hu": "Műalkotás", + "id": "Karya Seni", + "is": "Listaverk", + "it": "Opera d'arte", + "ja": "パブリックアート", + "ko": "예술품", + "lt": "Meno kūrinys", + "lv": "Mākslas darbs", + "nl": "Kunstwerk", + "no": "Kunstverk", + "pl": "Dzieło sztuki", + "pt-BR": "Obra de Arte", + "pt": "Obra de arte pública", + "ru": "Произведение искусства", + "sk": "Umelecké dielo", + "sl": "Umetnina", + "sr": "Уметничко дело", + "sv": "Publik konst", + "ta": "ஓவியம்", + "tr": "Sanat Eseri", + "uk": "Витвори мистецтв", + "vi": "Nghệ phẩm", + "yue": "藝術品", + "zh-CN": "艺术品", + "zh-HK": "藝術品", + "zh-TW": "公共藝術", + "zh": "艺术品", + "mk": "Уметничко дело", + "bg": "Произведение на изкуството", + "he": "אומנות" + } + }, + "tourism/attraction": { + "title": { + "C": "Tourist Attraction", + "en": "Tourist Attraction", + "af": "Toerismeaantreklikheid", + "ar": "معلم سياحي", + "ast": "Atracción turística", + "bn": "পর্যটক আকর্ষণ", + "bs": "Turistička atrakcija", + "ca": "Atracció turística", + "cs": "Pamětihodnost", + "da": "Turistattraktion", + "de": "Sehenswürdigkeit", + "el": "Τ", + "en-GB": "Tourist Attraction", + "eo": "Turisma vidindaĵo", + "es": "Atracción turística", + "et": "Turismiatraktsioon", + "fa": "جاذبه گردشگری", + "fi": "Turistikohde", + "fr": "Attraction touristique", + "gl": "Atracción turística", + "hr": "Turistička atrakcija", + "hu": "Turisztikai látványosság", + "id": "Objek Wisata", + "is": "Ferðamannagildra", + "it": "Attrazione turistica", + "ja": "観光地", + "ko": "관광 명소", + "lt": "Turistų traukos vieta", + "lv": "Tūrisma objekts", + "nl": "Toeristische attractie", + "no": "Turistattraksjon", + "pl": "Atrakcja turystyczna", + "pt-BR": "Atração Turística", + "pt": "Atração turística", + "ro": "Atracție Turistică", + "ru": "Достопримечательность", + "sk": "Turistická atrakcia", + "sl": "Turistična znamenitost", + "sr": "Туристичка атракција", + "sv": "Turistattraktion", + "tr": "Turistik Yer", + "uk": "Визначне місце", + "vi": "Điểm Thu hút Du lịch", + "yue": "旅行名勝", + "zh-CN": "旅游名胜", + "zh-HK": "觀光名勝", + "zh-TW": "觀光景點", + "zh": "旅游景点", + "mk": "Знаменитост", + "bg": "Туристическа атракция", + "he": "אתר תיירותי" + } + }, + "tourism/camp_site": { + "title": { + "C": "Campground", + "en": "Campground", + "ar": "مكان التخييم", + "ast": "Campamentu", + "ca": "Àrea d'acampada", + "cs": "Tábořiště", + "da": "Campingplads", + "de": "Campingplatz", + "el": "Χώρος Κατασκήνωσης", + "en-GB": "Camp Site", + "eo": "Kampadejo", + "es": "Campamento", + "et": "Telkimisala", + "fa": "اردوگاه", + "fi": "Leirintäalue", + "fr": "Camping", + "gl": "Cámping", + "hu": "Kemping", + "is": "Tjaldsvæði", + "it": "Campeggio", + "ja": "キャンプ場", + "ko": "캠핑장", + "lv": "Kempinga vieta", + "nl": "Camping", + "pl": "Kemping", + "pt-BR": "Local de Acampamento", + "pt": "Parque de campismo", + "ro": "Teren de Camping", + "ru": "Кемпинг/туристический приют", + "sk": "Kemp", + "sl": "Kamp", + "sv": "Campingplats", + "tr": "Kamp Yeri", + "uk": "Табір", + "vi": "Khu Cắm trại", + "zh-CN": "宿营场地", + "zh-HK": "營地", + "zh-TW": "露營地", + "mk": "Камп", + "he": "אתר מחנאות" + } + }, + "tourism/caravan_site": { + "title": { + "C": "RV Park", + "en": "RV Park", + "af": "RV Park", + "ar": "موقف عربات كبيرة", + "ast": "Aparcaderu d'autocaravanes", + "bs": "Kamp park", + "ca": "Càmping per a caravanes", + "cs": "Místo pro karavany", + "da": "Autocamperplads", + "de": "Wohnwagen-Campingplatz", + "el": "Πάρκο τροχόσπιτων", + "en-GB": "Caravan Park", + "eo": "Kampad-veturila parkumejo", + "es": "Parque de autocaravanas", + "et": "Karavanipark", + "fa": "پارکینگ ماشین کاروان", + "fi": "Asuntoautopysäköinti", + "fr": "Aire pour caravanes", + "gl": "Parque de caravanas", + "hr": "Parkiralište za kamp kućice", + "hu": "Lakóautó park", + "is": "Hjólhýsagarður", + "it": "Sosta per camper", + "ja": "オートキャンプ場", + "ko": "RV 공원", + "nl": "Caravan-/kampeerwagenterrein", + "no": "Bobilpark", + "pl": "Kemping dla kamperów", + "pt-BR": "Estacionamento de Trailers", + "pt": "Parque de caravanas", + "ru": "Стоянка трейлеров", + "sk": "Parkovisko pre karavany", + "sl": "Parkirišče za avtodome", + "sr": "Камп-парк", + "sv": "Ställplats", + "ta": "ஆர்வி பூங்கா", + "tr": "Karavan Parkı", + "uk": "Караван-парк", + "vi": "Bãi Đậu Nhà lưu động", + "yue": "露營車營地", + "zh-CN": "房车营地", + "zh-HK": "露營車營地", + "zh-TW": "露營車停車場", + "zh": "房车营地", + "mk": "Трајлерски камп", + "bg": "Паркинг за каравани", + "he": "מגרש קרוונים", + "en-AU": "Caravan Site" + } + }, + "tourism/chalet": { + "title": { + "C": "Holiday Cottage", + "en": "Holiday Cottage", + "ar": "كوخ لقضاء العطلة", + "cs": "Prázdninová vesnice", + "da": "Feriehus", + "de": "Ferienhaus", + "el": "Εξοχική Κατοικία", + "en-GB": "Holiday Cottage", + "eo": "Dometo feria", + "es": "Cabaña vacacional / Bungaló", + "fi": "Loma-asunto", + "fr": "Gîte", + "gl": "Casas de vacacións ou chalets", + "hr": "Bungalov", + "hu": "Nyaralóház", + "is": "Frístundahús", + "it": "Chalet", + "ja": "貸別荘(戸建て)", + "ko": "별장", + "lt": "Atostogų kotedžas", + "nl": "Vakantiehuisje", + "pl": "Domek/domki na wynajem", + "pt-BR": "Chalé", + "pt": "Casa de campo", + "ru": "Коттедж под аренду", + "sr": "Викендица", + "sv": "Stuga", + "ta": "விடுமுறை குடில்", + "uk": "Шале", + "vi": "Nhà nghỉ Riêng biệt", + "zh-CN": "度假屋", + "zh-TW": "假日小屋", + "mk": "Викендичка", + "he": "בקתה לחגים" + } + }, + "tourism/guest_house": { + "title": { + "C": "Guest House", + "en": "Guest House", + "af": "Gastehuis", + "ar": "دار الضيافة", + "ast": "Pensión", + "bn": "অতিথিশালা", + "bs": "Gostinjska kuća", + "ca": "Habitacions de lloguer", + "cs": "Penzion", + "da": "Gæstehus", + "de": "Pension", + "el": "Ξενώνας", + "en-GB": "Guest House", + "eo": "Pensiono", + "es": "Casa de huéspedes / B&B", + "et": "Külalistemaja", + "fa": "مهمان خانه", + "fi": "Majatalo", + "fr": "Chambre d'hôtes", + "gl": "Hostal", + "hr": "Gostinjska kuća", + "hu": "Vendégház", + "id": "Rumah Tamu", + "is": "Gestahús", + "it": "Bed & Breakfast", + "ja": "民宿", + "ko": "민박", + "lt": "Svečių namai", + "lv": "Viesu nams", + "nl": "Pension", + "no": "Gjestehus", + "pl": "Pensjonat", + "pt-BR": "Guesthouse", + "pt": "Casa de hóspedes", + "ro": "Casă de Oaspeți", + "ru": "Гостевой дом", + "sk": "Penzión", + "sl": "Penzion", + "sr": "Гостинска кућа", + "sv": "Gästhus", + "ta": "விருந்தினர் இல்லம்", + "tr": "Konuk Evi", + "uk": "Гостьовий будинок", + "vi": "Nhà khách", + "yue": "賓館", + "zh-CN": "客栈", + "zh-HK": "賓館", + "zh-TW": "招待所", + "zh": "宾馆", + "mk": "Приватен пансион", + "bg": "Къща за гости", + "he": "בית הארחה" + } + }, + "tourism/hostel": { + "title": { + "C": "Hostel", + "en": "Hostel", + "af": "Hostel", + "ar": "نزل", + "ast": "Albergue", + "bn": "ছাত্রাবাস", + "bs": "Hostel", + "ca": "Alberg", + "cs": "Hostel", + "da": "Vandrerhjem", + "de": "Hostel", + "el": "Ξενώνας", + "en-GB": "Hostel", + "eo": "Gastejo", + "es": "Albergue", + "et": "Hostel", + "fa": "مسافرخانه", + "fi": "Hostelli", + "fr": "Auberge de jeunesse", + "gl": "Albergue", + "hr": "Hostel", + "hu": "Turistaszálló", + "id": "Hostel", + "is": "Farfuglaheimili", + "it": "Ostello", + "ja": "簡易宿泊所", + "ko": "호스텔", + "lt": "Viešbutis", + "lv": "Hostelis", + "nl": "Jeugdherberg", + "no": "Hostell", + "pl": "Schronisko lub hostel", + "pt-BR": "Hostel", + "pt": "Hostel", + "ro": "Hostel", + "ru": "Хостел", + "sk": "Hostel", + "sl": "Hostel", + "sr": "Хостел", + "sv": "Vandrarhem", + "ta": "விடுதி", + "tr": "Pansiyon", + "uk": "Хостел", + "vi": "Nhà trọ", + "yue": "旅舍", + "zh-CN": "旅舍", + "zh-HK": "旅舍", + "zh-TW": "旅舍", + "zh": "招待所", + "mk": "Хостел", + "bg": "Хостел", + "he": "אכסנייה" + } + }, + "tourism/hotel": { + "title": { + "C": "Hotel", + "en": "Hotel", + "af": "Hotel", + "ar": "فندق", + "ast": "Hotel", + "bn": "হোটেল", + "bs": "Hotel", + "ca": "Hotel", + "cs": "Hotel", + "da": "Hotel", + "de": "Hotel", + "el": "Ξενοδοχείο", + "en-GB": "Hotel", + "eo": "Hotelo", + "es": "Hotel", + "et": "Hotell", + "fa": "هتل", + "fi": "Hotelli", + "fr": "Hôtel", + "gl": "Hotel", + "hr": "Hotel", + "hu": "Szálloda", + "id": "Hotel", + "is": "Hótel", + "it": "Albergo", + "ja": "ホテル", + "kn": "ಭೋಜನಾಲಯ", + "ko": "호텔", + "lt": "Viešbutis", + "lv": "Viesnīca", + "nl": "Hotel", + "no": "Hotell", + "pl": "Hotel", + "pt-BR": "Hotel", + "pt": "Hotel", + "ro": "Hotel", + "ru": "Гостиница", + "sk": "Hotel", + "sl": "Hotel", + "sq": "Hotel", + "sr": "Хотел", + "sv": "Hotell", + "ta": "உணவகம்", + "te": "హోటెల్", + "tr": "Otel", + "uk": "Готель", + "vi": "Khách sạn", + "yue": "酒店", + "zh-CN": "宾馆", + "zh-HK": "酒店", + "zh-TW": "旅館", + "zh": "旅馆", + "mk": "Хотел", + "bg": "Хотел", + "dv": "ހޮޓާ", + "he": "מלון", + "ms": "Hotel", + "so": "Huteel" + } + }, + "tourism/information": { + "title": { + "C": "Information", + "en": "Information", + "af": "Inligting", + "ar": "معلومات سياحية", + "ast": "Información", + "bn": "তথ্য", + "bs": "Informacije", + "ca": "Informació", + "cs": "Informace", + "da": "Information", + "de": "Information", + "el": "Πληροφορίες", + "en-GB": "Information", + "eo": "Informejo", + "es": "Información turística", + "et": "Info", + "fa": "اطلاعات", + "fi": "Infopiste", + "fr": "Informations", + "gl": "Información", + "hr": "Turističke informacije", + "hu": "Információ", + "id": "Informasi", + "is": "Upplýsingar", + "it": "Informazioni", + "ja": "観光案内(全般)", + "kn": "ಮಾಹಿತಿ", + "ko": "안내", + "lt": "Informacija", + "lv": "Informācija", + "nl": "Informatie", + "no": "Informasjon", + "pl": "Informacja", + "pt-BR": "Informações Turísticas", + "pt": "Informação turística", + "ro": "Informații", + "ru": "Инфопункт", + "sk": "Informácie", + "sl": "Informacije", + "sq": "Informacion", + "sr": "Информације", + "sv": "Information", + "ta": "தகவல்", + "te": "సమాచారం", + "tr": "Bilgi", + "uk": "Інформація", + "vi": "Thông tin", + "yue": "資訊處", + "zh-CN": "问询处", + "zh-HK": "旅遊資訊", + "zh-TW": "旅遊資訊", + "zh": "资讯", + "mk": "Информации", + "bg": "Информация", + "he": "מידע" + } + }, + "tourism/motel": { + "title": { + "C": "Motel", + "en": "Motel", + "af": "Motel", + "ar": "فندق رخيص", + "ast": "Motel", + "bn": "মোটেল", + "bs": "Motel", + "ca": "Motel", + "cs": "Motel", + "da": "Motel", + "de": "Motel", + "el": "Μοτέλ", + "en-GB": "Motel", + "eo": "Aŭt-hotelo", + "es": "Motel", + "et": "Motell", + "fa": "متل", + "fi": "Motelli", + "fr": "Motel", + "gl": "Motel", + "hr": "Motel", + "hu": "Motel", + "id": "Motel", + "is": "Mótel", + "it": "Motel", + "ja": "モーテル", + "ko": "모텔", + "lt": "Motelis", + "lv": "Motelis", + "nl": "Motel", + "no": "Motell", + "pl": "Motel", + "pt-BR": "Hotel de Estrada", + "pt": "Motel", + "ro": "Motel", + "ru": "Мотель", + "sk": "Motel", + "sl": "Motel", + "sr": "Мотел", + "sv": "Motel", + "tr": "Motel", + "uk": "Мотель", + "vi": "Khách sạn Dọc đường", + "yue": "汽車酒店", + "zh-CN": "汽车旅馆", + "zh-HK": "汽車酒店", + "zh-TW": "汽車旅館", + "zh": "汽车旅馆", + "mk": "Мотел", + "bg": "Мотел", + "he": "מלון דרכים" + } + }, + "tourism/museum": { + "title": { + "C": "Museum", + "en": "Museum", + "af": "Musuem", + "ar": "متحف", + "ast": "Muséu", + "bn": "প্রদর্শনশালা", + "bs": "Muzej", + "ca": "Museu", + "cs": "Muzeum", + "da": "Museum", + "de": "Museum", + "el": "Μουσείο", + "en-GB": "Museum", + "eo": "Muzeo", + "es": "Museo", + "et": "Muuseum", + "fa": "موزه", + "fi": "Museo", + "fr": "Musée", + "gl": "Museo", + "hr": "Muzej", + "hu": "Múzeum", + "id": "Museum", + "is": "Safn", + "it": "Museo", + "ja": "博物館・美術館", + "kn": "ಒಡವೆಮನೆ", + "ko": "박물관", + "lt": "Muziejus", + "lv": "Muzejs", + "nl": "Museum", + "no": "Museum", + "pl": "Muzeum", + "pt-BR": "Museu", + "pt": "Museu", + "ro": "Muzeu", + "ru": "Музей", + "sk": "Múzeum", + "sl": "Muzej", + "sr": "Музеј", + "sv": "Museum", + "ta": "அருங்காட்சியகம்", + "te": "మ్యూజియం", + "tr": "Müze", + "uk": "Музей", + "vi": "Bảo tàng", + "yue": "博物館", + "zh-CN": "博物馆", + "zh-HK": "博物館", + "zh-TW": "博物館", + "zh": "博物馆", + "mk": "Музеј", + "bg": "Музей", + "he": "מוזיאון" + } + }, + "tourism/picnic_site": { + "title": { + "C": "Picnic Site", + "en": "Picnic Site", + "af": "Piekniek Plek", + "ar": "موقع نزهة", + "ast": "Área recreativa", + "bn": "পিকনিক-এর জায়গা", + "bs": "Izletište", + "ca": "Àrea de pícnic", + "cs": "Místo pro piknik", + "da": "Picnic", + "de": "Picknickplatz", + "el": "Χώρος Εκδρομής", + "en-GB": "Picnic Site", + "eo": "Piknika ejo", + "es": "Zona de picnic", + "et": "Piknikukoht", + "fa": "مکان پیک نیک", + "fi": "Piknikpuisto", + "fr": "Aire de pique-nique", + "gl": "Merendeiro ou zona de pícnic", + "hr": "Izletište", + "hu": "Piknikezőhely", + "id": "Tempat Piknik", + "is": "Áningarstaður", + "it": "Area picnic", + "ja": "ピクニック場", + "ko": "유원지", + "lt": "Pikniko stovyklavietė", + "lv": "Piknika vieta", + "nl": "Picknickplek", + "no": "Pikniksted", + "pl": "Miejsce na piknik", + "pt-BR": "Local de Piquenique", + "pt": "Parque de merendas", + "ro": "Picnic", + "ru": "Место для пикника", + "sk": "Miesto pre piknik", + "sl": "Prostor za piknike", + "sr": "Излетиште", + "sv": "Picknickplats", + "tr": "Piknik Alanı", + "uk": "Місце для пікніка", + "vi": "Nơi Ăn Ngoài trời", + "yue": "郊遊地點", + "zh-CN": "野餐地", + "zh-HK": "郊遊地點", + "zh-TW": "野餐場地", + "zh": "郊游地点", + "mk": "Излетничко место", + "bg": "Място за пикник", + "he": "פיקניק", + "ms": "Tapak Perkelahan" + } + }, + "tourism/theme_park": { + "title": { + "C": "Theme Park", + "en": "Theme Park", + "af": "Temapark", + "ar": "حديقة ترفيه", + "ast": "Parque temáticu", + "bn": "থিম পার্ক", + "bs": "Tematski park", + "ca": "Parc temàtic", + "cs": "Zábavní park", + "da": "Forlystelsespark", + "de": "Themenpark", + "el": "Πάρκο Ψυχαγωγίας", + "en-GB": "Theme Park", + "eo": "Amuzparko", + "es": "Parque de atracciones", + "et": "Lõbustuspark", + "fa": "پارک تفریحی, شهربازی", + "fi": "Huvipuisto", + "fr": "Parc d'attraction", + "gl": "Parque de atraccións", + "hr": "Zabavni park", + "hu": "Vidámpark", + "id": "Taman Rekreasi", + "is": "Skemmtigarður", + "it": "Parco a tema", + "ja": "テーマパーク", + "ko": "놀이공원", + "lt": "Atrakcijonų parkas", + "lv": "Tematiskais parks", + "nl": "Themapark", + "no": "Temapark", + "pl": "Park rozrywki", + "pt-BR": "Parque Temático", + "pt": "Parque de diversões", + "ro": "Parc de Distracții", + "ru": "Парк развлечений", + "sk": "Zábavný park", + "sl": "Zabaviščni park", + "sr": "Тематски парк", + "sv": "Nöjespark", + "tr": "Eğlence Parkı", + "uk": "Тематичний парк", + "vi": "Công viên Chủ đề", + "yue": "主題公園", + "zh-CN": "主题公园", + "zh-HK": "主題公園", + "zh-TW": "主題公園", + "zh": "主题公园", + "mk": "Забавен парк", + "bg": "Увеселителен парк", + "he": "לונה פארק" + } + }, + "tourism/viewpoint": { + "title": { + "C": "Viewpoint", + "en": "Viewpoint", + "af": "Uitkykpunt", + "ar": "منظر سياحي", + "ast": "Mirador", + "bs": "Vidikovac", + "ca": "Mirador", + "cs": "Výhled", + "da": "Udsigtspunkt", + "de": "Aussichtspunkt", + "el": "Σημείο θέασης", + "en-GB": "Viewpoint", + "eo": "Belvidejo", + "es": "Vista panorámica / Mirador", + "et": "Vaatekoht", + "fa": "نقطه دید", + "fi": "Näköalapaikka", + "fr": "Point de vue", + "gl": "Miradoiro", + "hr": "Vidikovac", + "hu": "Kilátóhely", + "id": "Titik Pandang", + "is": "Útsýnisstaður", + "it": "Punto panoramico", + "ja": "展望台", + "ko": "경승지", + "lt": "Apžvalgos taškas", + "lv": "Skatu punkts", + "nl": "Uitzichtpunt", + "no": "Utsiktspunkt", + "pl": "Punkt widokowy", + "pt-BR": "Mirante", + "pt": "Miradouro", + "ro": "Punct de Vedere", + "ru": "Обзорная точка", + "sk": "Vyhliadka", + "sl": "Razgledna točka", + "sr": "Видиковац", + "sv": "Utsiktspunkt", + "tr": "Görüş Noktası", + "uk": "Оглядовий майданчик", + "vi": "Điểm Ngắm cảnh", + "yue": "觀景臺", + "zh-CN": "观景点", + "zh-HK": "觀景臺", + "zh-TW": "觀景點", + "zh": "景点", + "mk": "Видиковец", + "bg": "Точка с хубава гледка", + "he": "תצפית" + } + }, + "tourism/zoo": { + "title": { + "C": "Zoo", + "en": "Zoo", + "af": "Dieretuin", + "ar": "حديقة حيوانات", + "ast": "Zoo", + "bn": "চিড়িয়াখানা", + "bs": "Zoološki vrt", + "ca": "Zoo", + "cs": "ZOO", + "da": "Zoologisk have", + "de": "Zoo", + "el": "Ζωολογικός Κήπος", + "en-GB": "Zoo", + "eo": "Bestoĝardeno", + "es": "Zoológico", + "et": "Loomaaed", + "fa": "باغ وحش", + "fi": "Eläintarha", + "fr": "Parc zoologique", + "gl": "Zoolóxico", + "hi": "चिड़िया घर", + "hr": "Zološki vrt", + "hu": "Állatkert", + "id": "Kebun Binatang", + "is": "Dýragarður", + "it": "Zoo", + "ja": "動物園", + "ko": "동물원", + "lt": "Zoologijos sodas", + "lv": "Zooloģiskais dārzs", + "nl": "Dierentuin", + "no": "Zoologisk hage", + "pl": "Zoo", + "pt-BR": "Zoológico", + "pt": "Jardim zoológico", + "ro": "Grădină Zoologică", + "ru": "Зоопарк", + "sk": "Zoo", + "sl": "Živalski vrt", + "sr": "Зоолошки врт", + "sv": "Zoo", + "ta": "உயிரியல் பூங்கா", + "te": "జూ", + "tr": "Hayvanat Bahçesi", + "uk": "Зоопарк", + "vi": "Vườn thú", + "yue": "動物園", + "zh-CN": "动物园", + "zh-HK": "動物園", + "zh-TW": "動物園", + "zh": "动物园", + "mk": "Зоолошка градина", + "bg": "Зоологическа градина", + "he": "גן חיות" + } + }, + "tourism/gallery": { + "title": { + "C": "Art Gallery", + "en": "Art Gallery", + "ar": "رواق الفنون", + "ast": "Galería d'arte", + "ca": "Galeria d'art", + "cs": "Galerie umění", + "da": "Kunstgalleri", + "de": "Kunstgalerie", + "el": "Γκαλερί Τέχνης", + "en-GB": "Art Gallery", + "eo": "Artgalerio", + "es": "Galería de arte", + "et": "Kunstigalerii", + "fa": "گالری هنری", + "fi": "Taidegalleria", + "fr": "Galerie d'art", + "gl": "Galería de arte", + "hr": "Umjetnička galerija", + "hu": "Művészeti galéria", + "is": "Listagallerí", + "it": "Galleria d'arte", + "ja": "アートギャラリー", + "kn": "ಕಲಾಮಂದಿರ", + "ko": "미술관", + "lt": "Meno galerija", + "lv": "Mākslas galerija", + "nl": "Kunstgallerij", + "no": "Kunstgalleri", + "pl": "Galeria sztuki", + "pt-BR": "Galeria de Arte", + "pt": "Galeria de arte", + "ro": "Galerie de Artă", + "ru": "Художественная галерея", + "sk": "Umelecká galéria", + "sl": "Umetnostna galerija", + "sr": "Галерија слика", + "sv": "Konstgalleri", + "ta": "கலைக்கூடம்", + "tr": "Sanat Galerisi", + "uk": "Художня галерея", + "vi": "Phòng tranh", + "zh-CN": "美术馆", + "zh-HK": "畫廊", + "zh-TW": "藝廊", + "mk": "Уметничка галерија", + "he": "גלריית אומנות" + } + }, + "tourism/apartment": { + "title": { + "C": "Guest Apartment / Condo", + "en": "Guest Apartment / Condo", + "ar": "شقة سياحية", + "ca": "Habitatge de convidats", + "cs": "Byt/apartmán k pronájmu", + "da": "Gæstelejlighed/Ejerlejlighed", + "de": "Ferienwohnung", + "el": "Ξενώνας / Διαμέρισμα", + "en-GB": "Guest Apartment / Condo", + "eo": "Apartamento feria (luprenebla)", + "es": "Apartamento de huéspedes", + "et": "Külaliskorter", + "fa": "آپارتمان مهمان / کاندو", + "fi": "Vierasmajoitus", + "fr": "Location de vacances", + "gl": "Apartamento de hóspedes", + "hr": "Turistički apartman", + "hu": "Apartman", + "is": "Gestaíbúð", + "it": "Affittacamere", + "ja": "リゾートマンション", + "ko": "게스트 아파트 / 콘도", + "lt": "Svečių apartamentai / butas", + "nl": "Vakantieappartement", + "pl": "Mieszkanie na wynajem", + "pt-BR": "Apartamento de Temporada", + "pt": "Apartamento de alojamento local", + "ro": "Apartament de Închiriat", + "ru": "Гостевые апартаменты/квартира", + "sl": "Apartma / Gostišče", + "sv": "Turistlägenhet", + "tr": "Misafir Apartmanı", + "uk": "Мебльована квартира/Комплекс", + "vi": "Khu chung cư Nghỉ dưỡng", + "zh-CN": "出租公寓", + "zh-HK": "民宿公寓 / 短租公寓", + "zh-TW": "假日公寓", + "mk": "Пансион", + "he": "דירה לאורחים" + } + }, + "tourism/aquarium": { + "title": { + "C": "Aquarium", + "en": "Aquarium", + "ar": "حوض سمك", + "ast": "Acuariu", + "cs": "Akvárium", + "da": "Akvarium", + "de": "Aquarium", + "el": "Ενυδρείο", + "en-GB": "Aquarium", + "eo": "Akvario", + "es": "Acuario", + "et": "Akvaarium", + "fa": "آکواریوم", + "fi": "Akvaario", + "fr": "Aquarium", + "gl": "Acuario", + "hr": "Akvarij", + "hu": "Akvárium", + "is": "Sædýrasafn", + "it": "Acquario", + "ja": "水族館", + "ko": "아쿠아리움", + "lt": "Akvariumas", + "lv": "Akvārijs", + "nl": "Aquarium", + "no": "Akvarium", + "pl": "Akwarium", + "pt-BR": "Aquário", + "pt": "Aquário público", + "ro": "Acvariu", + "ru": "Аквариум", + "sk": "Akvárium", + "sl": "Akvarij", + "sr": "Акваријум", + "sv": "Akvarium", + "ta": "மீன் காட்சியகம்", + "tr": "Akvaryum", + "uk": "Акваріум", + "vi": "Thủy cung", + "zh-CN": "水族馆", + "zh-HK": "水族館", + "zh-TW": "水族館(展覽館)", + "mk": "Аквариум", + "he": "אקווריום", + "ms": "Akuarium" + } + }, + "tourism/wilderness_hut": { + "title": { + "C": "Wilderness Hut", + "en": "Wilderness Hut", + "cs": "Chata v divočině", + "da": "Vildmarkshytte", + "de": "unbewirtschaftete Schutzhütte", + "el": "Ερημική Καλύβα", + "en-GB": "Wilderness Hut", + "eo": "Sovaĝeja kabano", + "es": "Refugio de paraje natural", + "fi": "Autiotupa", + "fr": "Refuge de bivouac", + "hr": "Planinarsko sklonište", + "hu": "Menedékház (személyzet nélkül)", + "is": "Óbyggðakofi", + "it": "Bivacco", + "ja": "避難小屋", + "ko": "황야 막사", + "nl": "Onbemande hut in wildernis", + "no": "Villmarkshytta", + "pl": "Odosobniona chata-schronienie dla turystów", + "pt-BR": "Abrigo Isolado", + "pt": "Abrigo remoto", + "ru": "Охотничий домик", + "sv": "Stuga (för vandrare o.d.)", + "uk": "Лісова хатинка", + "vi": "Lều trú", + "zh-CN": "野外住宿小屋", + "zh-TW": "野外小屋", + "mk": "Колиба во дивина", + "he": "בקתת טבע" + } + }, + "tourism/trail_riding_station": { + "title": { + "C": "Trail Riding Station", + "en": "Trail Riding Station", + "cs": "Stanice jízdy na koni", + "de": "Wanderreitstation", + "el": "Σταθμός Ιππασίας", + "en-GB": "Trail Riding Station", + "eo": "Pensiono por ĉevalistoj", + "es": "Estación en sendero de cabalgata", + "fr": "Station équestre", + "it": "Stazione di sosta per cavalli", + "ja": "乗馬トレール乗り場", + "nl": "Ruiterlogies", + "pl": "Konny ośrodek wypoczynkowy", + "pt-BR": "Estação de Hipismo de Trilha", + "pt": "Posto de repouso equestre", + "ru": "Временное жильё для лошадей и наездников", + "sv": "Turridningsstation", + "uk": "Місце відпочинку для коней та вершників", + "vi": "Chuồng Ngựa Tạm thời", + "zh-TW": "騎馬車站", + "mk": "Конак за рекреативни јавачи", + "he": "תחנת רכיבה" + } + }, + "tourism/camp_pitch": { + "title": { + "C": "Camp Pitch", + "en": "Camp Pitch", + "de": "Zeltplatz/Wohnwagenplatz", + "eo": "Loko por kampadveturilo/tendo", + "es": "Lugar para acampar", + "fi": "Leirintäalueen kenttä", + "fr": "Parcelle dans un camping", + "gl": "Lugar de campismo", + "hu": "Táborhely", + "ja": "キャンプ区画(キャンプ場内)", + "ko": "캠핑장", + "pl": "Miejsce na kempingu", + "pt-BR": "Acampamento de arremesso", + "pt": "Alvéolo de parque de campismo", + "sv": "Tältplats/husvagnsplats", + "uk": "Місце під намет", + "zh-TW": "營地", + "mk": "Логориште", + "he": "מאהל" + } + } +} diff --git a/data/screenshots/maps-main.jpg b/data/screenshots/maps-main.jpg new file mode 100644 index 00000000..1dee544c Binary files /dev/null and b/data/screenshots/maps-main.jpg differ diff --git a/data/screenshots/maps-main.png b/data/screenshots/maps-main.png new file mode 100644 index 00000000..c4ca0dd7 Binary files /dev/null and b/data/screenshots/maps-main.png differ diff --git a/data/screenshots/maps-pinpoint.jpg b/data/screenshots/maps-pinpoint.jpg new file mode 100644 index 00000000..8e70da57 Binary files /dev/null and b/data/screenshots/maps-pinpoint.jpg differ diff --git a/data/screenshots/maps-pinpoint.png b/data/screenshots/maps-pinpoint.png new file mode 100644 index 00000000..5644184e Binary files /dev/null and b/data/screenshots/maps-pinpoint.png differ diff --git a/data/screenshots/maps-route.jpg b/data/screenshots/maps-route.jpg new file mode 100644 index 00000000..20be37b2 Binary files /dev/null and b/data/screenshots/maps-route.jpg differ diff --git a/data/screenshots/maps-route.png b/data/screenshots/maps-route.png new file mode 100644 index 00000000..1e8e62f4 Binary files /dev/null and b/data/screenshots/maps-route.png differ diff --git a/data/ui/account-row.ui b/data/ui/account-row.ui new file mode 100644 index 00000000..60afd7c6 --- /dev/null +++ b/data/ui/account-row.ui @@ -0,0 +1,76 @@ + + + + + diff --git a/data/ui/check-in-dialog.ui b/data/ui/check-in-dialog.ui new file mode 100644 index 00000000..7050a0d0 --- /dev/null +++ b/data/ui/check-in-dialog.ui @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + EVERYONE + Everyone + + + FRIENDS_OF_FRIENDS + Friends of friends + + + ALL_FRIENDS + Just friends + + + SELF + Just me + + + + + + + + + + + + + public + Public + + + followers + Followers + + + private + Private + + + + diff --git a/data/ui/context-menu.ui b/data/ui/context-menu.ui new file mode 100644 index 00000000..7fcb6734 --- /dev/null +++ b/data/ui/context-menu.ui @@ -0,0 +1,56 @@ + + + + + diff --git a/data/ui/export-view-dialog.ui b/data/ui/export-view-dialog.ui new file mode 100644 index 00000000..993a5339 --- /dev/null +++ b/data/ui/export-view-dialog.ui @@ -0,0 +1,146 @@ + + + + + diff --git a/data/ui/favorites-popover.ui b/data/ui/favorites-popover.ui new file mode 100644 index 00000000..352084a4 --- /dev/null +++ b/data/ui/favorites-popover.ui @@ -0,0 +1,49 @@ + + + + + diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui new file mode 100644 index 00000000..6c304459 --- /dev/null +++ b/data/ui/help-overlay.ui @@ -0,0 +1,110 @@ + + + + 1 + + + 1 + + 10 + + + 1 + General + + + 1 + Show Shortcuts + <Primary>question + + + + + 1 + Search + <Primary>F + + + + + 1 + Toggle route planner + <Primary>D + + + + + 1 + Print route + <Primary>P + + + + + 1 + Quit + <Primary>Q + + + + + + + 1 + Map View + + + 1 + Zoom in + plus equal + + + + + 1 + Zoom out + minus + + + + + 1 + Toggle scale + <Primary>S + + + + + 1 + Go to current location + <Primary>L + + + + + 1 + Switch to street view + <Primary>1 + + + + + 1 + Switch to aerial view + <Primary>2 + + + + + 1 + Open shape layer + <Primary>O + + + + + + + + diff --git a/data/ui/instruction-row.ui b/data/ui/instruction-row.ui new file mode 100644 index 00000000..95254773 --- /dev/null +++ b/data/ui/instruction-row.ui @@ -0,0 +1,74 @@ + + + + + diff --git a/data/ui/layers-popover.ui b/data/ui/layers-popover.ui new file mode 100644 index 00000000..22ec9c81 --- /dev/null +++ b/data/ui/layers-popover.ui @@ -0,0 +1,80 @@ + + + + + diff --git a/data/ui/location-service-dialog.ui b/data/ui/location-service-dialog.ui new file mode 100644 index 00000000..0c3ae660 --- /dev/null +++ b/data/ui/location-service-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/data/ui/main-window.ui b/data/ui/main-window.ui new file mode 100644 index 00000000..ace2a6e2 --- /dev/null +++ b/data/ui/main-window.ui @@ -0,0 +1,281 @@ + + + + +
+ + app.osm-account-setup + Set up OpenStreetMap Account + + + win.export-as-image + Export as Image + +
+
+ + _Keyboard Shortcuts + win.show-help-overlay + + + win.about + About Maps + +
+
+ +
diff --git a/data/ui/map-bubble.ui b/data/ui/map-bubble.ui new file mode 100644 index 00000000..06bf37fb --- /dev/null +++ b/data/ui/map-bubble.ui @@ -0,0 +1,148 @@ + + + + + + True + False + 8 + 10 + 10 + 10 + 10 + vertical + + + True + False + 15 + + + 1 + 0 + 2 + + + + + True + False + 10 + 15 + GTK_ALIGN_END + + + True + False + horizontal + 5 + + + bubble-route-button + False + True + False + Add to new route + + + True + False + route-button-symbolic + 1 + + + + + + + bubble-send-to-button + False + True + False + Share location + + + True + False + send-to-symbolic + 16 + + + + + + + bubble-favorite-button + False + True + False + Mark as favorite + + + bubble-favorite-button-image + True + False + starred-symbolic + 16 + + + + + + + C_heck in + False + True + False + True + Check in here + + + + + 0 + 0 + + + + + 1 + 1 + + + + + True + GTK_STACK_TRANSITION_TYPE_CROSSFADE + + + True + False + start + 0 + 16 + + + icon + + + + + True + False + start + 0 + 16 + + + thumbnail + + + + + 2 + 1 + + + + diff --git a/data/ui/open-with-row.ui b/data/ui/open-with-row.ui new file mode 100644 index 00000000..d236a2a8 --- /dev/null +++ b/data/ui/open-with-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-account-dialog.ui b/data/ui/osm-account-dialog.ui new file mode 100644 index 00000000..a9d88d2f --- /dev/null +++ b/data/ui/osm-account-dialog.ui @@ -0,0 +1,327 @@ + + + + + diff --git a/data/ui/osm-edit-address.ui b/data/ui/osm-edit-address.ui new file mode 100644 index 00000000..1a36f87a --- /dev/null +++ b/data/ui/osm-edit-address.ui @@ -0,0 +1,59 @@ + + + + + diff --git a/data/ui/osm-edit-dialog.ui b/data/ui/osm-edit-dialog.ui new file mode 100644 index 00000000..ba059ee6 --- /dev/null +++ b/data/ui/osm-edit-dialog.ui @@ -0,0 +1,353 @@ + + + + + + False + + + True + GTK_ORIENTATION_VERTICAL + + + + + False + GTK_POS_BOTTOM + + + True + 5 + + + True + True + 20 + 40 + + + + + + diff --git a/data/ui/osm-type-list-row.ui b/data/ui/osm-type-list-row.ui new file mode 100644 index 00000000..05fbb6ac --- /dev/null +++ b/data/ui/osm-type-list-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-type-popover.ui b/data/ui/osm-type-popover.ui new file mode 100644 index 00000000..4ae9e7fb --- /dev/null +++ b/data/ui/osm-type-popover.ui @@ -0,0 +1,16 @@ + + + + + diff --git a/data/ui/osm-type-search-entry.ui b/data/ui/osm-type-search-entry.ui new file mode 100644 index 00000000..db292a76 --- /dev/null +++ b/data/ui/osm-type-search-entry.ui @@ -0,0 +1,10 @@ + + + + + diff --git a/data/ui/place-bubble.ui b/data/ui/place-bubble.ui new file mode 100644 index 00000000..5689792f --- /dev/null +++ b/data/ui/place-bubble.ui @@ -0,0 +1,127 @@ + + + + + + True + + + True + True + + + + + True + False + 5 + + + True + False + vertical + + + True + 10 + + + True + False + start + True + True + + + + + + 10 + True + + + True + True + GTK_ALIGN_START + GTK_ALIGN_CENTER + Edit on OpenStreetMap + + + True + False + document-edit-symbolic + 16 + + + + + + + + + + True + True + GTK_ALIGN_START + GTK_ALIGN_CENTER + Show more information + + + True + False + view-more-symbolic + 16 + + + + + + + + + + True + False + vertical + + + + + + True + False + start + True + 5 + + + True + False + start + True + 5 + + + + + + + + + + + diff --git a/data/ui/place-entry.ui b/data/ui/place-entry.ui new file mode 100644 index 00000000..417e42d2 --- /dev/null +++ b/data/ui/place-entry.ui @@ -0,0 +1,23 @@ + + + + + 2 + + + 2 + + + 0 + + + + + 4 + + + 2 + + + + diff --git a/data/ui/place-list-row.ui b/data/ui/place-list-row.ui new file mode 100644 index 00000000..f3d2bf09 --- /dev/null +++ b/data/ui/place-list-row.ui @@ -0,0 +1,83 @@ + + + + + + + diff --git a/data/ui/place-popover.ui b/data/ui/place-popover.ui new file mode 100644 index 00000000..ae663a17 --- /dev/null +++ b/data/ui/place-popover.ui @@ -0,0 +1,67 @@ + + + + + diff --git a/data/ui/route-entry.ui b/data/ui/route-entry.ui new file mode 100644 index 00000000..b186e453 --- /dev/null +++ b/data/ui/route-entry.ui @@ -0,0 +1,50 @@ + + + + + diff --git a/data/ui/search-result-bubble.ui b/data/ui/search-result-bubble.ui new file mode 100644 index 00000000..c6f2b6a5 --- /dev/null +++ b/data/ui/search-result-bubble.ui @@ -0,0 +1,40 @@ + + + + + + True + + + True + True + + + + + True + False + vertical + + + + True + False + start + True + + + + False + True + 0 + + + + + + diff --git a/data/ui/send-to-dialog.ui b/data/ui/send-to-dialog.ui new file mode 100644 index 00000000..c5192b6d --- /dev/null +++ b/data/ui/send-to-dialog.ui @@ -0,0 +1,158 @@ + + + + + + diff --git a/data/ui/shape-layer-file-chooser.ui b/data/ui/shape-layer-file-chooser.ui new file mode 100644 index 00000000..383a2df5 --- /dev/null +++ b/data/ui/shape-layer-file-chooser.ui @@ -0,0 +1,30 @@ + + + + diff --git a/data/ui/shape-layer-row.ui b/data/ui/shape-layer-row.ui new file mode 100644 index 00000000..0a2ad8d1 --- /dev/null +++ b/data/ui/shape-layer-row.ui @@ -0,0 +1,62 @@ + + + + diff --git a/data/ui/sidebar.ui b/data/ui/sidebar.ui new file mode 100644 index 00000000..ab7b3890 --- /dev/null +++ b/data/ui/sidebar.ui @@ -0,0 +1,444 @@ + + + + + + + False + + + True + + + True + 5 + 5 + 5 + 5 + Routing itineraries for public transit is provided by third-party +services. +GNOME can not guarantee correctness of the itineraries and schedules shown. +Note that some providers might not include all available modes of transportation, +e.g. a national provider might not include airlines, and a local provider could +miss regional trains. +Names and brands shown are to be considered as registered trademarks when applicable. + + + + + + + True + False + + + + True + 6 + 6 + 4 + 4 + GTK_ALIGN_START + + + True + GTK_ALIGN_CENTER + + + True + False + False + go-previous-symbolic + + + + + + + 0 + 0 + + + + + True + 6 + 6 + 4 + 4 + False + GTK_ALIGN_START + + + 1 + 0 + + + + + True + 6 + 6 + 4 + 4 + True + GTK_ALIGN_START + + + + 2 + 0 + + + + diff --git a/data/ui/social-place-more-results-row.ui b/data/ui/social-place-more-results-row.ui new file mode 100644 index 00000000..2dcca7fa --- /dev/null +++ b/data/ui/social-place-more-results-row.ui @@ -0,0 +1,22 @@ + + + + + diff --git a/data/ui/social-place-row.ui b/data/ui/social-place-row.ui new file mode 100644 index 00000000..623c92af --- /dev/null +++ b/data/ui/social-place-row.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/transit-arrival-row.ui b/data/ui/transit-arrival-row.ui new file mode 100644 index 00000000..d1cb21e2 --- /dev/null +++ b/data/ui/transit-arrival-row.ui @@ -0,0 +1,77 @@ + + + + + diff --git a/data/ui/transit-itinerary-row.ui b/data/ui/transit-itinerary-row.ui new file mode 100644 index 00000000..d4be5468 --- /dev/null +++ b/data/ui/transit-itinerary-row.ui @@ -0,0 +1,66 @@ + + + + + diff --git a/data/ui/transit-leg-row.ui b/data/ui/transit-leg-row.ui new file mode 100644 index 00000000..c7eaa268 --- /dev/null +++ b/data/ui/transit-leg-row.ui @@ -0,0 +1,255 @@ + + + + + diff --git a/data/ui/transit-more-row.ui b/data/ui/transit-more-row.ui new file mode 100644 index 00000000..7de5b98a --- /dev/null +++ b/data/ui/transit-more-row.ui @@ -0,0 +1,40 @@ + + + + diff --git a/data/ui/transit-options-panel.ui b/data/ui/transit-options-panel.ui new file mode 100644 index 00000000..a11acfa0 --- /dev/null +++ b/data/ui/transit-options-panel.ui @@ -0,0 +1,159 @@ + + + + False + + + True + + + + + False + + + True + 6 + GTK_ORIENTATION_VERTICAL + + + True + GTK_ALIGN_START + Show + 6 + + + + + + True + True + Buses + + + + + True + True + Trams + + + + + True + True + Trains + + + + + True + True + Subway + + + + + True + True + Ferries + + + + + True + True + Airplanes + + + + + + + diff --git a/data/ui/transit-route-label.ui b/data/ui/transit-route-label.ui new file mode 100644 index 00000000..423f7826 --- /dev/null +++ b/data/ui/transit-route-label.ui @@ -0,0 +1,20 @@ + + + + + diff --git a/data/ui/transit-stop-row.ui b/data/ui/transit-stop-row.ui new file mode 100644 index 00000000..8f6aa214 --- /dev/null +++ b/data/ui/transit-stop-row.ui @@ -0,0 +1,55 @@ + + + + diff --git a/data/ui/user-location-bubble.ui b/data/ui/user-location-bubble.ui new file mode 100644 index 00000000..9bf448b6 --- /dev/null +++ b/data/ui/user-location-bubble.ui @@ -0,0 +1,54 @@ + + + + + + True + False + + + True + False + start + Current location + + + + 0 + 0 + + + + + True + False + start + + + + 0 + 1 + + + + + True + False + start + 3 + True + + + + 0 + 2 + + + + diff --git a/data/ui/zoom-in-dialog.ui b/data/ui/zoom-in-dialog.ui new file mode 100644 index 00000000..359dd46c --- /dev/null +++ b/data/ui/zoom-in-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/gnome-maps.doap b/gnome-maps.doap new file mode 100644 index 00000000..270faede --- /dev/null +++ b/gnome-maps.doap @@ -0,0 +1,29 @@ + + + gnome-maps + A simple GNOME 3 maps application + Map application based on OpenStreetMap map data + + JavaScript + + + + + + + + + Marcus Lundblad + + mlundblad + + + diff --git a/lib/maps-contact-store.c b/lib/maps-contact-store.c new file mode 100644 index 00000000..227fc5f7 --- /dev/null +++ b/lib/maps-contact-store.c @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + + +#include +#include + +#include "maps-contact-store.h" +#include "maps-contact.h" +#include "maps-enum-types.h" + +struct _MapsContactStorePrivate +{ + GList *list; + MapsContactStoreState state; + FolksIndividualAggregator *aggregator; +}; + +enum { + PROP_0, + + PROP_STATE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContactStore, maps_contact_store, G_TYPE_OBJECT) + +static void +maps_contact_store_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContactStore *store = MAPS_CONTACT_STORE (object); + + switch (property_id) + { + case PROP_STATE: + g_value_set_enum (value, + store->priv->state); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_store_dispose (GObject *object) +{ + MapsContactStore *store = (MapsContactStore *) object; + + g_clear_pointer (&store->priv->list, g_list_free); + g_clear_object (&store->priv->aggregator); + + G_OBJECT_CLASS (maps_contact_store_parent_class)->dispose (object); +} + +static void +maps_contact_store_class_init (MapsContactStoreClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_store_dispose; + maps_class->get_property = maps_contact_store_get_property; + + /** + * MapsContactStore:state: + * + * The current loading state of the contact store. + */ + pspec = g_param_spec_enum ("state", + "State", + "State", + MAPS_TYPE_CONTACT_STORE_STATE, + MAPS_CONTACT_STORE_STATE_INITIAL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_STATE, pspec); +} + +static void +maps_contact_store_init (MapsContactStore *store) +{ + store->priv = maps_contact_store_get_instance_private (store); + store->priv->list = NULL; + store->priv->state = MAPS_CONTACT_STORE_STATE_INITIAL; +} + +static MapsContact * +get_contact (FolksIndividual *individual) +{ + MapsContact *contact; + GLoadableIcon *avatar; + GeeCollection *addresses; + GeeIterator *iter; + + g_object_get (G_OBJECT (individual), "postal-addresses", + &addresses, NULL); + if (!addresses) + return NULL; + + iter = gee_iterable_iterator (GEE_ITERABLE (addresses)); + if (!gee_iterator_has_next (iter)) + { + g_object_unref (iter); + return NULL; + } + + contact = maps_contact_new (); + + g_object_set (G_OBJECT (contact), "name", + folks_individual_get_display_name (individual), NULL); + g_object_set (G_OBJECT (contact), "id", + folks_individual_get_id (individual), NULL); + + g_object_get (G_OBJECT (individual), "avatar", + &avatar, NULL); + g_object_set (G_OBJECT (contact), "icon", + avatar, NULL); + + while (gee_iterator_has_next (iter)) + { + GeocodePlace *place; + FolksPostalAddress *addr; + FolksAbstractFieldDetails *details; + GeeMultiMap *map; + GeeSet *keys; + GeeIterator *keys_iter; + char *name; + char *type = "Unknown"; + + gee_iterator_next (iter); + details = gee_iterator_get (iter); + addr = (FolksPostalAddress *) folks_abstract_field_details_get_value (details); + + /* Get the type of the address, such as "Home", "Work", "Other" */ + map = folks_abstract_field_details_get_parameters (details); + keys = gee_multi_map_get_keys (map); + keys_iter = gee_iterable_iterator (GEE_ITERABLE (keys)); + if (gee_iterator_has_next (keys_iter)) + { + GeeCollection *values; + GeeIterator *values_iter; + + gee_iterator_next (keys_iter); + values = gee_multi_map_get (map, + gee_iterator_get (keys_iter)); + if (gee_collection_get_size (values) != 0) + { + values_iter = gee_iterable_iterator (GEE_ITERABLE (values)); + gee_iterator_next (values_iter); + type = gee_iterator_get (values_iter); + } + } + if (gee_collection_get_size (addresses) > 1) + { + name = g_strdup_printf ("%s (%s)", + folks_individual_get_display_name (individual), + type); + } + else + { + name = g_strdup (folks_individual_get_display_name (individual)); + } + place = geocode_place_new (name, GEOCODE_PLACE_TYPE_STREET); + g_free (name); + + geocode_place_set_country (place, + folks_postal_address_get_country (addr)); + geocode_place_set_state (place, + folks_postal_address_get_region (addr)); + geocode_place_set_postal_code (place, + folks_postal_address_get_postal_code (addr)); + geocode_place_set_town (place, + folks_postal_address_get_locality (addr)); + geocode_place_set_street_address (place, + folks_postal_address_get_street (addr)); + + maps_contact_add_place (contact, place); + } + g_object_unref (iter); + + return contact; +} + +MapsContactStore * +maps_contact_store_new () +{ + return g_object_new (MAPS_TYPE_CONTACT_STORE, NULL); +} + +static void +maps_contact_store_lookup_cb (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + MapsContactStoreLookupCallback callback) +{ + FolksIndividual *individual; + + individual = folks_individual_aggregator_look_up_individual_finish (aggregator, + res, + NULL); + if (individual != NULL) + { + MapsContact *contact = get_contact (individual); + callback (contact); + } + else + { + callback (NULL); + } +} + +/** + * maps_contact_store_lookup: + * @store: A #MapsContactStore object + * @callback: (scope async): A #MapsContactStoreLookupCallback function + */ +void +maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback) +{ + folks_individual_aggregator_look_up_individual (store->priv->aggregator, + id, + (GAsyncReadyCallback) maps_contact_store_lookup_cb, + callback); +} + +static void +aggregator_quiescent_notify (FolksIndividualAggregator *aggregator, + GParamSpec *pspec, + MapsContactStore *store) +{ + GeeMap *map; + GeeMapIterator *iter; + + map = folks_individual_aggregator_get_individuals (aggregator); + iter = gee_map_map_iterator (map); + + while (gee_map_iterator_has_next (iter)) + { + MapsContact *contact; + + gee_map_iterator_next (iter); + contact = get_contact (gee_map_iterator_get_value (iter)); + if (contact) + store->priv->list = g_list_prepend (store->priv->list, contact); + } + g_clear_object (&iter); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADED; + g_object_notify (G_OBJECT (store), "state"); +} + +static void +aggregator_prepare (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + gpointer user_data) +{ + folks_individual_aggregator_prepare_finish (aggregator, res, NULL); +} + +/** + * maps_contact_store_load: + * @store: A #MapsContactStore object + * + * Load contacts from available backends. + * + */ +void +maps_contact_store_load (MapsContactStore *store) +{ + g_return_if_fail (MAPS_IS_CONTACT_STORE (store)); + + store->priv->aggregator = folks_individual_aggregator_dup (); + + g_signal_connect (G_OBJECT (store->priv->aggregator), + "notify::is-quiescent", + G_CALLBACK (aggregator_quiescent_notify), + store); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADING; + g_object_notify (G_OBJECT (store), "state"); + + folks_individual_aggregator_prepare (store->priv->aggregator, + (GAsyncReadyCallback) aggregator_prepare, + NULL); +} + +/** + * maps_contact_store_get_contacts: + * @store: A #MapsContactStore object + * + * Returns: (element-type MapsContact) (transfer none): a list of #MapsContact, + */ +GList * +maps_contact_store_get_contacts (MapsContactStore *store) +{ + g_return_val_if_fail (MAPS_IS_CONTACT_STORE (store), NULL); + + return store->priv->list; +} diff --git a/lib/maps-contact-store.h b/lib/maps-contact-store.h new file mode 100644 index 00000000..3bbf2cbc --- /dev/null +++ b/lib/maps-contact-store.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_STORE_H__ +#define __MAPS_CONTACT_STORE_H__ + +#include +#include "maps-contact.h" + +#define MAPS_TYPE_CONTACT_STORE maps_contact_store_get_type () +G_DECLARE_FINAL_TYPE(MapsContactStore, maps_contact_store, MAPS, CONTACT_STORE, + GObject) + +typedef struct _MapsContactStorePrivate MapsContactStorePrivate; + +/** + * MapsContactStoreState: + * @MAPS_CONTACT_STORE_STATE_INITIAL: Initial state + * @MAPS_CONTACT_STORE_STATE_LOADING: Loading + * @MAPS_CONTACT_STORE_STATE_LOADED: Loaded + */ +typedef enum { + MAPS_CONTACT_STORE_STATE_INITIAL, + MAPS_CONTACT_STORE_STATE_LOADING, + MAPS_CONTACT_STORE_STATE_LOADED, +} MapsContactStoreState; + +/** + * MapsContactStoreLookupCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactStoreLookupCallback) (MapsContact *contact); + +struct _MapsContactStore +{ + GObject parent_instance; + MapsContactStorePrivate *priv; +}; + +struct _MapsContactStoreClass +{ + GObjectClass parent_class; +}; + +MapsContactStore * maps_contact_store_new (void); +void maps_contact_store_load (MapsContactStore *store); +void maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback); +GList * maps_contact_store_get_contacts (MapsContactStore *store); + +#endif diff --git a/lib/maps-contact.c b/lib/maps-contact.c new file mode 100644 index 00000000..a842a5a9 --- /dev/null +++ b/lib/maps-contact.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include + +#include "maps-contact.h" + +struct _MapsContactPrivate +{ + char *name; + char *id; + + GLoadableIcon *icon; + GList *places; + ChamplainBoundingBox *bbox; + + GMutex geocode_mutex; + guint geocode_counter; + guint geocodes_to_perform; +}; + +typedef struct +{ + GeocodePlace *place; + MapsContact *contact; + MapsContactGeocodeCallback callback; + + GHashTable *params; +} GeocodeData; + +enum { + PROP_0, + + PROP_NAME, + PROP_ICON, + PROP_ID, + PROP_BBOX +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContact, maps_contact, G_TYPE_OBJECT) + +static void +maps_contact_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_free (contact->priv->name); + contact->priv->name = g_value_dup_string (value); + break; + + case PROP_ICON: + if (contact->priv->icon) + g_object_unref (contact->priv->icon); + contact->priv->icon = g_value_dup_object (value); + break; + + case PROP_ID: + g_free (contact->priv->id); + contact->priv->id = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_value_set_string (value, + contact->priv->name); + break; + + case PROP_ICON: + g_value_set_object (value, + contact->priv->icon); + break; + + case PROP_ID: + g_value_set_string (value, + contact->priv->id); + break; + + case PROP_BBOX: + g_value_set_boxed (value, + contact->priv->bbox); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_dispose (GObject *object) +{ + MapsContact *contact = (MapsContact *) object; + + g_clear_pointer (&contact->priv->name, g_free); + g_clear_pointer (&contact->priv->id, g_free); + g_clear_object (&contact->priv->icon); + g_clear_object (&contact->priv->bbox); + g_list_free_full (contact->priv->places, g_object_unref); + + G_OBJECT_CLASS (maps_contact_parent_class)->dispose (object); +} + +static void +maps_contact_class_init (MapsContactClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_dispose; + maps_class->get_property = maps_contact_get_property; + maps_class->set_property = maps_contact_set_property; + + /** + * MapsContact:name: + * + * The name of the contact. + */ + pspec = g_param_spec_string ("name", + "Name", + "Name", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_NAME, pspec); + + /** + * MapsContact:id: + * + * The unique id of the contact. + */ + pspec = g_param_spec_string ("id", + "ID", + "ID", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsContact:icon: + * + * The icon of the contact. + */ + pspec = g_param_spec_object ("icon", + "Icon", + "An icon representing the contact", + G_TYPE_ICON, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ICON, pspec); + + /** + * MapsContact:bounding-box: + * + * The bounding box for the contact. + */ + pspec = g_param_spec_boxed ("bounding-box", + "Bounding Box", + "The bounding box for the place", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_BBOX, pspec); +} + +static void +maps_contact_init (MapsContact *contact) +{ + contact->priv = maps_contact_get_instance_private (contact); + + contact->priv->name = NULL; + contact->priv->id = NULL; + contact->priv->icon = NULL; + contact->priv->places = NULL; + contact->priv->bbox = NULL; + + g_mutex_init (&contact->priv->geocode_mutex); +} + +/** + * maps_contact_add_address: + * @contact: A #MapsContact object + * @place: A #GeocodePlace object + */ +void +maps_contact_add_place (MapsContact *contact, + GeocodePlace *place) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (GEOCODE_IS_PLACE (place)); + + contact->priv->places = g_list_prepend (contact->priv->places, place); +} + +/** + * maps_contact_get_places: + * @contact: A #MapsContact object + * + * Returns: (element-type GeocodePlace) (transfer container): a list of #GeocodePlace + */ +GList * +maps_contact_get_places (MapsContact *contact) +{ + g_return_val_if_fail (MAPS_IS_CONTACT (contact), NULL); + + return contact->priv->places; +} + +static void +on_geocode_search_async (GeocodeForward *forward, + GAsyncResult *res, + GeocodeData *data) +{ + MapsContact *contact; + GList *places; + gboolean call_callback = FALSE; + + contact = data->contact; + places = geocode_forward_search_finish (forward, res, NULL); + + g_mutex_lock (&contact->priv->geocode_mutex); + + if (places) + { + GeocodePlace *place = g_list_nth_data (places, 0); + GeocodeLocation *location = geocode_place_get_location (place); + const char *street_address; + const char *street; + + /* Keep the naming, but add location and osm info */ + geocode_place_set_location (data->place, location); + g_object_set (G_OBJECT (data->place), "osm-type", + geocode_place_get_osm_type (place), NULL); + g_object_set (G_OBJECT (data->place), "osm-id", + geocode_place_get_osm_id (place), NULL); + + /* Update the contact bounding box */ + if (contact->priv->bbox == NULL) + contact->priv->bbox = champlain_bounding_box_new (); + + champlain_bounding_box_extend (contact->priv->bbox, + geocode_location_get_latitude (location), + geocode_location_get_longitude (location)); + + /* Make sure we do not lie about how good our resolution is */ + street_address = geocode_place_get_street_address (place); + street = geocode_place_get_street (place); + if (street_address) + geocode_place_set_street_address (data->place, street); + else if (street) + geocode_place_set_street (data->place, street); + + g_list_free_full(places, g_object_unref); + } + + contact->priv->geocode_counter++; + if (contact->priv->geocode_counter == contact->priv->geocodes_to_perform) + call_callback = TRUE; + + g_mutex_unlock (&contact->priv->geocode_mutex); + + g_hash_table_destroy (data->params); + + if (call_callback) + data->callback (contact); +} + +static void add_attribute (GHashTable *ht, + const char *key, + const char *s) +{ + GValue *value; + value = g_new0 (GValue, 1); + g_value_init (value, G_TYPE_STRING); + g_value_set_static_string (value, s); + g_hash_table_insert (ht, g_strdup (key), value); +} + +/** + * maps_contact_geocode: + * @contact: A #MapsContact object + * @callback: (scope async): A #MapsContactGeocodeCallback function + */ +void +maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (callback != NULL); + + GList *l; + + contact->priv->geocode_counter = 0; + contact->priv->geocodes_to_perform = g_list_length (contact->priv->places); + + for (l = contact->priv->places; l != NULL; l = l->next) { + GeocodeData *data; + GeocodeForward *forward; + + data = g_slice_new (GeocodeData); + data->contact = contact; + data->place = l->data; + data->callback = callback; + data->params = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + add_attribute (data->params, "street", + geocode_place_get_street_address (data->place)); + add_attribute (data->params, "locality", + geocode_place_get_town (data->place)); + add_attribute (data->params, "region", + geocode_place_get_state (data->place)); + add_attribute (data->params, "country", + geocode_place_get_country (data->place)); + + forward = geocode_forward_new_for_params (data->params); + geocode_forward_search_async (forward, + NULL, + (GAsyncReadyCallback) on_geocode_search_async, + data); + } +} + +MapsContact * +maps_contact_new () +{ + return g_object_new (MAPS_TYPE_CONTACT, NULL); +} diff --git a/lib/maps-contact.h b/lib/maps-contact.h new file mode 100644 index 00000000..d036faf2 --- /dev/null +++ b/lib/maps-contact.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_H__ +#define __MAPS_CONTACT_H__ + +#include +#include + +#define MAPS_TYPE_CONTACT maps_contact_get_type () +G_DECLARE_FINAL_TYPE(MapsContact, maps_contact, MAPS, CONTACT, GObject) + +typedef struct _MapsContactPrivate MapsContactPrivate; + +/** + * MapsContactGeocodeCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactGeocodeCallback) (MapsContact *contact); + +struct _MapsContact +{ + GObject parent_instance; + MapsContactPrivate *priv; +}; + +struct _MapsContactClass +{ + GObjectClass parent_class; +}; + +MapsContact *maps_contact_new (void); +void maps_contact_add_place (MapsContact *contact, + GeocodePlace *place); +GList * maps_contact_get_places (MapsContact *contact); +void maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback); +#endif diff --git a/lib/maps-enum-types.c.template b/lib/maps-enum-types.c.template new file mode 100644 index 00000000..188506a0 --- /dev/null +++ b/lib/maps-enum-types.c.template @@ -0,0 +1,31 @@ +/*** BEGIN file-header ***/ +#include "maps-enum-types.h" + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (etype == 0) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static ("@EnumName@", values); + } + return etype; +} + +/*** END value-tail ***/ diff --git a/lib/maps-enum-types.h.template b/lib/maps-enum-types.h.template new file mode 100644 index 00000000..14171b23 --- /dev/null +++ b/lib/maps-enum-types.h.template @@ -0,0 +1,36 @@ +/*** BEGIN file-header ***/ +#ifndef __MAPS_ENUM_TYPES_H__ +#define __MAPS_ENUM_TYPES_H__ + +#include "maps.h" + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; + +#define MAPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) + +/** + * SECTION:maps-enum-types + * @short_description: Maps enumerated types + * @include: maps.h + * + * The enumerated types defined and used by libgnome-maps. + **/ + +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __MAPS_ENUM_TYPES_H__ */ + +/*** END file-tail ***/ diff --git a/lib/maps-file-tile-source.c b/lib/maps-file-tile-source.c new file mode 100644 index 00000000..61e5f060 --- /dev/null +++ b/lib/maps-file-tile-source.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include +#include +#include +#include + +#include "mapsintl.h" +#include "maps-file-tile-source.h" + +#define MAPS_FILE_TILE_SOURCE_ERROR maps_file_tile_source_error_quark () + +GQuark +maps_file_tile_source_error_quark (void) +{ + return g_quark_from_static_string ("maps-file-tile-source-error"); +} + +enum { + PROP_0, + + PROP_PATH, + PROP_MAX_ZOOM, + PROP_MIN_ZOOM, + PROP_WORLD + +}; + +struct _MapsFileTileSourcePrivate +{ + gchar *path; + gchar *extension; + gint max_zoom; + gint min_zoom; + ChamplainBoundingBox *world; + + long min_x; + long min_y; + long max_x; + long max_y; +}; + +typedef struct +{ + ChamplainMapSource *map_source; + ChamplainTile *tile; +} CallbackData; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsFileTileSource, maps_file_tile_source, CHAMPLAIN_TYPE_TILE_SOURCE) + +static void fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile); + + +static void +maps_file_tile_source_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + tile_source->priv->path = g_strdup ((char *) g_value_get_string (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + g_value_set_string (value, tile_source->priv->path); + break; + + case PROP_MIN_ZOOM: + g_value_set_uint (value, tile_source->priv->min_zoom); + break; + + case PROP_MAX_ZOOM: + g_value_set_uint (value, tile_source->priv->max_zoom); + break; + + case PROP_WORLD: + g_value_set_boxed (value, tile_source->priv->world); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_dispose (GObject *object) +{ + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->dispose (object); +} + +static void +maps_file_tile_source_finalize (GObject *object) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + if (tile_source->priv->path) + g_free (tile_source->priv->path); + + if (tile_source->priv->extension) + g_free (tile_source->priv->extension); + + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->finalize (object); +} + +static guint +get_max_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->max_zoom; +} + +static guint +get_min_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->min_zoom; +} + +static void +maps_file_tile_source_class_init (MapsFileTileSourceClass *klass) +{ + ChamplainMapSourceClass *map_source_class = CHAMPLAIN_MAP_SOURCE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->finalize = maps_file_tile_source_finalize; + object_class->dispose = maps_file_tile_source_dispose; + object_class->get_property = maps_file_tile_source_get_property; + object_class->set_property = maps_file_tile_source_set_property; + map_source_class->get_max_zoom_level = get_max_zoom_level; + map_source_class->get_min_zoom_level = get_min_zoom_level; + map_source_class->fill_tile = fill_tile; + + /** + * MapsFileTileSource:path: + * + * The path to the tile source. + * + */ + pspec = g_param_spec_string ("path", + "Path", + "The path to the tile source", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property (object_class, PROP_PATH, pspec); + + /** + * MapsFileTileSource:min-zoom: + * + * The minimum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("min-zoom", + "Minimum zoom", + "The minimum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MIN_ZOOM, pspec); + + /** + * MapsFileTileSource:max-zoom: + * + * The maximum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("max-zoom", + "Maximum zoom", + "The maximum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MAX_ZOOM, pspec); + + /** + * MapsFileTileSource:world: + * + * Set a bounding box to limit the world to. No tiles will be loaded + * outside of this bounding box. It will not be possible to scroll outside + * of this bounding box. + * + */ + pspec = g_param_spec_boxed ("world", + "The world", + "The bounding box to limit the #ChamplainView to", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_WORLD, pspec); +} + +static void +maps_file_tile_source_init (MapsFileTileSource *tile_source) +{ + tile_source->priv = maps_file_tile_source_get_instance_private (tile_source); + tile_source->priv->path = NULL; + tile_source->priv->extension = NULL; + tile_source->priv->max_zoom = -1; + tile_source->priv->min_zoom = 21; + tile_source->priv->world = NULL; + tile_source->priv->min_x = G_MAXLONG; + tile_source->priv->min_y = G_MAXLONG; + tile_source->priv->max_x = 0; + tile_source->priv->max_y = 0; +} + +static gboolean +get_zoom_levels (MapsFileTileSource *tile_source, + GError **error) +{ + GFile *file; + GFileEnumerator *enumerator; + gboolean ret = TRUE; + long orig_min = tile_source->priv->min_zoom; + long orig_max = tile_source->priv->max_zoom; + + file = g_file_new_for_path (tile_source->priv->path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + const char *name; + char *endptr; + long val; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + val = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (val > tile_source->priv->max_zoom) + tile_source->priv->max_zoom = val; + + if (val < tile_source->priv->min_zoom) + tile_source->priv->min_zoom = val; + } + + if (tile_source->priv->min_zoom == orig_min || + tile_source->priv->max_zoom == orig_max) { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + + return ret; +} + +static gboolean +get_y_bounds (MapsFileTileSource *tile_source, + const char *path, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + gboolean ret = TRUE; + gboolean found = FALSE; + + file = g_file_new_for_path (path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + char **names; + char *endptr; + long y; + + if (!g_file_enumerator_iterate (enumerator, &info, + NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) + continue; + + names = g_strsplit (g_file_info_get_name (info), ".", 2); + if (!tile_source->priv->extension) + tile_source->priv->extension = g_strdup (names[1]); + + y = strtol (names[0], &endptr, 0); + if (endptr == names[0] || *endptr != '\0') { + g_strfreev (names); + continue; + } + + if (!found) + found = TRUE; + + g_strfreev (names); + + if (y > tile_source->priv->max_y) + tile_source->priv->max_y = y; + + if (y < tile_source->priv->min_y) + tile_source->priv->min_y = y; + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +static gboolean +get_bounds (MapsFileTileSource *tile_source, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + char *path; + gboolean ret = TRUE; + char min_zoom[3]; + gboolean found = FALSE; + + sprintf (min_zoom, "%u", tile_source->priv->min_zoom); + path = g_build_filename (tile_source->priv->path, min_zoom, NULL); + file = g_file_new_for_path (path); + + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + char *y_path; + GFileInfo *info; + const char *name; + char *endptr; + long x; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + x = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (!found) + found = TRUE; + + if (x > tile_source->priv->max_x) + tile_source->priv->max_x = x; + + if (x < tile_source->priv->min_x) + tile_source->priv->min_x = x; + + y_path = g_build_filename (path, name, NULL); + if (!get_y_bounds (tile_source, y_path, error)) { + g_free (y_path); + ret = FALSE; + goto out; + } + g_free (y_path); + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_free (path); + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +gboolean +maps_file_tile_source_prepare (MapsFileTileSource *tile_source, + GError **error) +{ + g_return_val_if_fail (MAPS_IS_FILE_TILE_SOURCE (tile_source), FALSE); + g_return_val_if_fail (tile_source->priv->path != NULL, FALSE); + + ChamplainMapSource *source = (ChamplainMapSource *) tile_source; + gboolean ret = TRUE; + guint tile_size = champlain_map_source_get_tile_size (source); + + if (!get_zoom_levels (tile_source, error)) { + ret = FALSE; + goto out; + } + + if (!get_bounds (tile_source, error)) { + ret = FALSE; + goto out; + } + + tile_source->priv->world = champlain_bounding_box_new (); + tile_source->priv->world->left = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_x * + tile_size); + tile_source->priv->world->right = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_x + 1) * + tile_size); + tile_source->priv->world->top = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_y * + tile_size); + tile_source->priv->world->bottom = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_y + 1) * + tile_size); + out: + return ret; +} + +static void +tile_rendered_cb (ChamplainTile *tile, + gpointer data, + guint size, + gboolean error, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source; + + g_signal_handlers_disconnect_by_func (tile, tile_rendered_cb, user_data); + g_slice_free (CallbackData, user_data); + + next_source = champlain_map_source_get_next_source (map_source); + + if (!error) + { + ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source); + ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source); + + if (tile_cache && data) + champlain_tile_cache_store_tile (tile_cache, tile, data, size); + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + } + else if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + g_object_unref (map_source); + g_object_unref (tile); +} + +static void +tile_loaded_cb (GFile *file, + GAsyncResult *res, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + ChamplainTile *tile = user_data->tile; + CallbackData *data; + ChamplainRenderer *renderer; + guint8 *content; + gsize length; + + g_slice_free (CallbackData, user_data); + + if (!g_file_load_contents_finish (file, res, (char **) &content, &length, NULL, NULL)) + { + goto load_next; + } + + renderer = champlain_map_source_get_renderer (map_source); + g_return_if_fail (CHAMPLAIN_IS_RENDERER (renderer)); + + data = g_slice_new (CallbackData); + data->map_source = map_source; + + g_signal_connect (tile, "render-complete", G_CALLBACK (tile_rendered_cb), data); + + champlain_renderer_set_data (renderer, content, length); + champlain_renderer_render (renderer, tile); + + return; + +load_next: + if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + goto cleanup; + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + +cleanup: + g_object_unref (tile); + g_object_unref (map_source); +} + +static void +fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile) +{ + g_return_if_fail (MAPS_IS_FILE_TILE_SOURCE (map_source)); + g_return_if_fail (CHAMPLAIN_IS_TILE (tile)); + + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (map_source); + CallbackData *callback_data; + GFile *file; + gchar *path = NULL; + + if (champlain_tile_get_state (tile) == CHAMPLAIN_STATE_DONE) + return; + + path = g_strdup_printf("%s/%d/%d/%d.%s", + tile_source->priv->path, + champlain_tile_get_zoom_level (tile), + champlain_tile_get_x (tile), + champlain_tile_get_y (tile), + tile_source->priv->extension); + file = g_file_new_for_path (path); + + if (g_file_query_exists(file, NULL)) + { + callback_data = g_slice_new (CallbackData); + callback_data->tile = tile; + callback_data->map_source = map_source; + + g_object_ref (map_source); + g_object_ref (tile); + + g_file_load_contents_async (file, NULL, + (GAsyncReadyCallback) tile_loaded_cb, + callback_data); + } + else + { + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + + if (CHAMPLAIN_IS_MAP_SOURCE (next_source)) + champlain_map_source_fill_tile (next_source, tile); + } + + g_object_unref (file); + g_free (path); +} diff --git a/lib/maps-file-tile-source.h b/lib/maps-file-tile-source.h new file mode 100644 index 00000000..9b432e04 --- /dev/null +++ b/lib/maps-file-tile-source.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef _MAPS_FILE_TILE_SOURCE_H_ +#define _MAPS_FILE_TILE_SOURCE_H_ + +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_FILE_TILE_SOURCE maps_file_tile_source_get_type () + +#define MAPS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSource)) + +#define MAPS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +#define MAPS_IS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_IS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_FILE_TILE_SOURCE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +typedef struct _MapsFileTileSourcePrivate MapsFileTileSourcePrivate; + +typedef struct _MapsFileTileSource MapsFileTileSource; +typedef struct _MapsFileTileSourceClass MapsFileTileSourceClass; + +/** + * MapsFileTileSource: + * + * The #MapsFileTileSource structure contains only private data + * and should be accessed using the provided API + * + */ +struct _MapsFileTileSource +{ + ChamplainTileSource parent_instance; + + MapsFileTileSourcePrivate *priv; +}; + +struct _MapsFileTileSourceClass +{ + ChamplainTileSourceClass parent_class; +}; + +GType maps_file_tile_source_get_type (void); + +gboolean maps_file_tile_source_prepare (MapsFileTileSource *tile_source, GError **error); +G_END_DECLS + +#endif /* _MAPS_FILE_TILE_SOURCE_H_ */ diff --git a/lib/maps-osm-changeset.c b/lib/maps-osm-changeset.c new file mode 100644 index 00000000..9dcc274d --- /dev/null +++ b/lib/maps-osm-changeset.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-changeset.h" + +#include + +struct _MapsOSMChangesetPrivate +{ + char *comment; + char *created_by; +}; + +enum { + PROP_0, + + PROP_COMMENT, + PROP_CREATED_BY +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMChangeset, maps_osm_changeset, G_TYPE_OBJECT) + +static void +maps_osm_changeset_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + changeset->priv->comment = g_value_dup_string (value); + break; + + case PROP_CREATED_BY: + changeset->priv->created_by = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + g_value_set_string (value, changeset->priv->comment); + break; + + case PROP_CREATED_BY: + g_value_set_string (value, changeset->priv->created_by); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_dispose (GObject *object) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + g_free (changeset->priv->comment); + g_free (changeset->priv->created_by); + + G_OBJECT_CLASS (maps_osm_changeset_parent_class)->dispose (object); +} + +static void +maps_osm_changeset_class_init (MapsOSMChangesetClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->dispose = maps_osm_changeset_dispose; + object_class->get_property = maps_osm_changeset_get_property; + object_class->set_property = maps_osm_changeset_set_property; + + /** + * MapsOSMChangeset:comment: + * + * The comment of the changes. + */ + pspec = g_param_spec_string ("comment", + "Comment", + "Comment", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_COMMENT, pspec); + + /** + * MapsOSMChangeset:created_by: + * + * The identifier of the client making the changeset. + */ + pspec = g_param_spec_string ("created_by", + "Created by", + "Created by", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_CREATED_BY, pspec); +} + +static void +maps_osm_changeset_init (MapsOSMChangeset *changeset) +{ + changeset->priv = maps_osm_changeset_get_instance_private (changeset); + + changeset->priv->comment = NULL; + changeset->priv->created_by = NULL; +} + +MapsOSMChangeset * +maps_osm_changeset_new (const char *comment, const char *created_by) +{ + return g_object_new (MAPS_TYPE_OSMCHANGESET, + "comment", comment, + "created_by", created_by, NULL); +} + +xmlNodePtr +maps_osm_changeset_create_tag_node (const char *key, const char * value) +{ + xmlNodePtr node; + + node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (node, (xmlChar *) "k", (xmlChar *) key); + xmlNewProp (node, (xmlChar *) "v", (xmlChar *) value); + + return node; +} + +char * +maps_osm_changeset_serialize (const MapsOSMChangeset *changeset) +{ + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr changeset_node; + xmlNodePtr comment_node; + xmlNodePtr created_by_node; + xmlChar *result; + int size; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + changeset_node = xmlNewNode (NULL, (xmlChar *) "changeset"); + comment_node = + maps_osm_changeset_create_tag_node ("comment", changeset->priv->comment); + created_by_node = + maps_osm_changeset_create_tag_node ("created_by", + changeset->priv->created_by); + xmlAddChild (osm_node, changeset_node); + xmlAddChild (changeset_node, comment_node); + xmlAddChild (changeset_node, created_by_node); + xmlDocSetRootElement (doc, osm_node); + + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-changeset.h b/lib/maps-osm-changeset.h new file mode 100644 index 00000000..01963366 --- /dev/null +++ b/lib/maps-osm-changeset.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_CHANGESET_H__ +#define __MAPS_OSM_CHANGESET_H__ + +#include + +#define MAPS_TYPE_OSMCHANGESET maps_osm_changeset_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMChangeset, maps_osm_changeset, MAPS, OSMCHANGESET, + GObject) + +typedef struct _MapsOSMChangesetPrivate MapsOSMChangesetPrivate; + +struct _MapsOSMChangeset +{ + GObject parent_instance; + MapsOSMChangesetPrivate *priv; +}; + +struct _MapsOSMChangesetClass +{ + GObjectClass parent_class; +}; + +/** + * maps_osm_changeset_new: + * @comment: (nullable): A comment about the OSM change, optional + * @created_by: (nullable): The client identifier of the OSM change, optional + */ +MapsOSMChangeset *maps_osm_changeset_new (const char *comment, + const char *created_by); + +char *maps_osm_changeset_serialize (const MapsOSMChangeset *changeset); + +#endif /* __MAPS_OSM_CHANGESET_H__ */ + diff --git a/lib/maps-osm-node.c b/lib/maps-osm-node.c new file mode 100644 index 00000000..05711e04 --- /dev/null +++ b/lib/maps-osm-node.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-node.h" + +struct _MapsOSMNodePrivate +{ + double lon; + double lat; +}; + +enum { + PROP_0, + + PROP_LONGITUDE, + PROP_LATITUDE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMNode, maps_osm_node, MAPS_TYPE_OSMOBJECT) + + +static void +maps_osm_node_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + node->priv->lon = g_value_get_double (value); + break; + + case PROP_LATITUDE: + node->priv->lat = g_value_get_double (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_node_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + g_value_set_double (value, node->priv->lon); + break; + + case PROP_LATITUDE: + g_value_set_double (value, node->priv->lat); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static const char * +maps_osm_node_get_xml_tag_name (void) +{ + return "node"; +} + +static GHashTable * +maps_osm_node_get_xml_attributes (const MapsOSMObject *object) +{ + const MapsOSMNode *node = MAPS_OSMNODE ((MapsOSMObject *) object); + GHashTable *attributes; + char buf[G_ASCII_DTOSTR_BUF_SIZE]; + + attributes = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); + + g_ascii_dtostr (buf, sizeof (buf), node->priv->lon); + g_hash_table_insert (attributes, "lon", g_strdup (buf)); + g_ascii_dtostr (buf, sizeof (buf), node->priv->lat); + g_hash_table_insert (attributes, "lat", g_strdup (buf)); + + return attributes; +} + +static void +maps_osm_node_class_init (MapsOSMNodeClass *klass) +{ + GObjectClass *node_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + node_class->get_property = maps_osm_node_get_property; + node_class->set_property = maps_osm_node_set_property; + object_class->get_xml_tag_name = maps_osm_node_get_xml_tag_name; + object_class->get_xml_attributes = maps_osm_node_get_xml_attributes; + + /** + * MapsOSMNode:longitude: + * + * The longitude of the node. + */ + pspec = g_param_spec_double ("longitude", + "Longitude", + "Longitude", + -180.0, + 180.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LONGITUDE, pspec); + + /** + * MapsOSMNode:latitude: + * + * The latitude of the node. + */ + pspec = g_param_spec_double ("latitude", + "Latitude", + "Latitude", + -90.0, + 90.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LATITUDE, pspec); +} + +static void +maps_osm_node_init (MapsOSMNode *node) +{ + node->priv = maps_osm_node_get_instance_private (node); + + node->priv->lon = 0.0; + node->priv->lat = 0.0; +} + +MapsOSMNode * +maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude) +{ + return g_object_new (MAPS_TYPE_OSMNODE, + "id", id, + "version", version, + "changeset", changeset, + "longitude", longitude, + "latitude", latitude, NULL); +} diff --git a/lib/maps-osm-node.h b/lib/maps-osm-node.h new file mode 100644 index 00000000..ba12d3bc --- /dev/null +++ b/lib/maps-osm-node.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_NODE_H__ +#define __MAPS_OSM_NODE_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMNODE maps_osm_node_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMNode, maps_osm_node, MAPS, OSMNODE, MapsOSMObject) + +typedef struct _MapsOSMNodePrivate MapsOSMNodePrivate; + +struct _MapsOSMNode +{ + MapsOSMObject parent_instance; + MapsOSMNodePrivate *priv; +}; + +struct _MapsOSMNodeClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMNode *maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude); + +#endif //__MAPS_OSM_NODE_H__ diff --git a/lib/maps-osm-oauth-proxy-call.c b/lib/maps-osm-oauth-proxy-call.c new file mode 100644 index 00000000..5e9e7544 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-oauth-proxy-call.h" + +#include +#include +#include + +#define MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL,\ + MapsOSMOAuthProxyCallPrivate)) + +struct _MapsOSMOAuthProxyCallPrivate +{ + char *payload; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(MapsOSMOAuthProxyCall, maps_osm_oauth_proxy_call, + OAUTH_TYPE_PROXY_CALL); + +static gboolean +maps_osm_oauth_proxy_call_serialize_params (RestProxyCall *call, + gchar **content_type, + gchar **content, + gsize *content_len, + GError **error) +{ + g_return_val_if_fail(MAPS_IS_OSM_OAUTH_PROXY_CALL (call), FALSE); + g_return_val_if_fail(content_type != NULL, FALSE); + g_return_val_if_fail(content != NULL, FALSE); + g_return_val_if_fail(content_len != NULL, FALSE); + + gchar *payload = (MAPS_OSM_OAUTH_PROXY_CALL (call))->priv->payload; + + *content_type = g_strdup ("text/xml"); + *content = g_strdup (payload); + *content_len = strlen (payload); + + return TRUE; +} + +static void +maps_osm_oauth_proxy_call_dispose (GObject *object) +{ + MapsOSMOAuthProxyCall *call = MAPS_OSM_OAUTH_PROXY_CALL (object); + + g_free (call->priv->payload); + call->priv->payload = NULL; + + G_OBJECT_CLASS (maps_osm_oauth_proxy_call_parent_class)->dispose (object); +} + +static void +maps_osm_oauth_proxy_call_class_init (MapsOSMOAuthProxyCallClass *klass) +{ + RestProxyCallClass *proxy_call_class = REST_PROXY_CALL_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + proxy_call_class->serialize_params = + maps_osm_oauth_proxy_call_serialize_params; + gobject_class->dispose = maps_osm_oauth_proxy_call_dispose; +} + +static void +maps_osm_oauth_proxy_call_init (MapsOSMOAuthProxyCall *call) +{ + call->priv = MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE (call); +} + +MapsOSMOAuthProxyCall * +maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, const char *payload) +{ + g_return_val_if_fail (OAUTH_IS_PROXY (proxy), NULL); + g_return_val_if_fail (payload != NULL, NULL); + + MapsOSMOAuthProxyCall *call = + g_object_new (MAPS_TYPE_OSM_OAUTH_PROXY_CALL, "proxy", proxy, NULL); + + call->priv->payload = g_strdup (payload); + + return call; +} + + diff --git a/lib/maps-osm-oauth-proxy-call.h b/lib/maps-osm-oauth-proxy-call.h new file mode 100644 index 00000000..e9c240d8 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef MAPS_OSM_OAUTH_PROXY_CALL_H +#define MAPS_OSM_OAUTH_PROXY_CALL_H + +#include + +#include +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_OSM_OAUTH_PROXY_CALL (maps_osm_oauth_proxy_call_get_type ()) +#define MAPS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCall)) +#define MAPS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_OSM_OAUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) + +typedef struct _MapsOSMOAuthProxyCall MapsOSMOAuthProxyCall; +typedef struct _MapsOSMOAuthProxyCallPrivate MapsOSMOAuthProxyCallPrivate; +typedef struct _MapsOSMOAuthProxyCallClass MapsOSMOAuthProxyCallClass; + +struct _MapsOSMOAuthProxyCall +{ + OAuthProxyCall parent; + MapsOSMOAuthProxyCallPrivate *priv; +}; + +struct _MapsOSMOAuthProxyCallClass +{ + OAuthProxyCallClass parent_class; +}; + +GType maps_osm_oauth_proxy_call_get_type(void); +MapsOSMOAuthProxyCall *maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, + const char *content); + +G_END_DECLS + +#endif /* MAPS_OSM_OAUTH_PROXY_CALL_H */ diff --git a/lib/maps-osm-object.c b/lib/maps-osm-object.c new file mode 100644 index 00000000..5a00f0c1 --- /dev/null +++ b/lib/maps-osm-object.c @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-object.h" + +struct _MapsOSMObjectPrivate +{ + guint64 id; + guint version; + guint64 changeset; + + GHashTable *tags; +}; + +enum { + PROP_0, + + PROP_ID, + PROP_VERSION, + PROP_CHANGESET +}; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MapsOSMObject, maps_osm_object, + G_TYPE_OBJECT) + +static void +maps_osm_object_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + priv->id = g_value_get_uint64 (value); + break; + + case PROP_VERSION: + priv->version = g_value_get_uint (value); + break; + + case PROP_CHANGESET: + priv->changeset = g_value_get_uint64 (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + g_value_set_uint64 (value, priv->id); + break; + + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + + case PROP_CHANGESET: + g_value_set_uint64 (value, priv->changeset); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_dispose (GObject *object) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + g_hash_table_destroy (priv->tags); + priv->tags = NULL; + + G_OBJECT_CLASS (maps_osm_object_parent_class)->dispose (object); +} + +/* base implementation returning no object-specific XML attributes */ +static GHashTable * +maps_osm_object_get_xml_attributes (const MapsOSMObject *object) +{ + return NULL; +} + +/* base implementation return no object-specific child XML nodes */ +static xmlNodePtr +maps_osm_object_get_xml_child_nodes (const MapsOSMObject *object) +{ + return NULL; +} + +static void +maps_osm_object_class_init (MapsOSMObjectClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_osm_object_dispose; + maps_class->get_property = maps_osm_object_get_property; + maps_class->set_property = maps_osm_object_set_property; + object_class->get_xml_attributes = maps_osm_object_get_xml_attributes; + object_class->get_xml_child_nodes = maps_osm_object_get_xml_child_nodes; + + /** + * MapsOSMObject:id: + * + * The OSM id of the object. + */ + pspec = g_param_spec_uint64 ("id", + "ID", + "ID", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsOSMObject:version: + * + * The latest OSM version of the object. + */ + pspec = g_param_spec_uint("version", + "Version", + "Version", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_VERSION, pspec); + + /** + * MapsOSMObject:changeset: + * + * The OSM changeset for the current upload of the object. + */ + pspec = g_param_spec_uint64 ("changeset", + "Changeset", + "Changeset", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_CHANGESET, pspec); +} + +static void +maps_osm_object_init (MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + priv->tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); +} + +const char * +maps_osm_object_get_tag (const MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private ((MapsOSMObject *) object); + + g_return_val_if_fail (key != NULL, NULL); + + return g_hash_table_lookup (priv->tags, key); +} + +void +maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_insert (priv->tags, g_strdup (key), g_strdup (value)); +} + +void +maps_osm_object_delete_tag (MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_remove (priv->tags, key); +} + +static void +maps_osm_object_foreach_tag (gpointer key, gpointer value, gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + /* skip tag if it has an empty placeholder value */ + if (val && *val) + { + xmlNodePtr tag_node; + + tag_node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (tag_node, (xmlChar *) "k", name); + xmlNewProp (tag_node, (xmlChar *) "v", val); + xmlAddChild (object_node, tag_node); + } +} + +static void +maps_osm_object_foreach_type_attr (gpointer key, gpointer value, + gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + xmlNewProp (object_node, name, val); +} + +xmlDocPtr +maps_osm_object_to_xml (const MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv; + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr object_node; + const char *type; + GHashTable *type_attrs; + xmlNodePtr type_sub_nodes; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + priv = (MapsOSMObjectPrivate *) maps_osm_object_get_instance_private ((MapsOSMObject *) object); + type = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_tag_name (); + object_node = xmlNewNode (NULL, (const xmlChar *) type); + + /* add common OSM attributes */ + if (priv->id != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->id); + xmlNewProp (object_node, (xmlChar *) "id", (xmlChar *) buf); + } + + if (priv->version != 0) + { + char buf[16]; + g_snprintf (buf, 16, "%d", priv->version); + xmlNewProp (object_node, (xmlChar *) "version", (xmlChar *) buf); + } + + if (priv->changeset != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->changeset); + xmlNewProp (object_node, (xmlChar *) "changeset", (xmlChar *) buf); + } + + /* add OSM tags */ + g_hash_table_foreach (priv->tags, maps_osm_object_foreach_tag, object_node); + + /* add type-specific attributes */ + type_attrs = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_attributes (object); + if (type_attrs) + { + g_hash_table_foreach (type_attrs, maps_osm_object_foreach_type_attr, + object_node); + g_hash_table_destroy (type_attrs); + } + + /* add type-specific sub-nodes */ + type_sub_nodes = + MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_child_nodes (object); + if (type_sub_nodes) + xmlAddChildList (object_node, type_sub_nodes); + + /* add type node to top node */ + xmlAddChild (osm_node, object_node); + xmlDocSetRootElement (doc, osm_node); + + return doc; +} + + +char * +maps_osm_object_serialize (const MapsOSMObject *object) +{ + xmlDocPtr doc; + xmlChar *result; + int size; + + doc = maps_osm_object_to_xml (object); + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-object.h b/lib/maps-osm-object.h new file mode 100644 index 00000000..6e8f2e3b --- /dev/null +++ b/lib/maps-osm-object.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_OBJECT_H__ +#define __MAPS_OSM_OBJECT_H__ + +#include +#include + +#define MAPS_TYPE_OSMOBJECT maps_osm_object_get_type () +G_DECLARE_DERIVABLE_TYPE(MapsOSMObject, maps_osm_object, MAPS, OSMOBJECT, + GObject) + +typedef struct _MapsOSMObjectPrivate MapsOSMObjectPrivate; + +struct _MapsOSMObjectClass +{ + GObjectClass parent_class; + + /* return the name of the distinguishing OSM XML tag (beneath ) */ + const char * (* get_xml_tag_name) (void); + + /* return hash table with XML attributes (key/values) specific for + the object (on the XML tag beneath ) */ + GHashTable * (* get_xml_attributes) (const MapsOSMObject *object); + + /* return a list of custom object-specific XML tags to attach, + can return NULL if there's no object-specific nodes */ + xmlNodePtr (* get_xml_child_nodes) (const MapsOSMObject *object); +}; + +const char *maps_osm_object_get_tag (const MapsOSMObject *object, + const char *key); +void maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value); +void maps_osm_object_delete_tag (MapsOSMObject *object, const char *key); + +char *maps_osm_object_serialize (const MapsOSMObject *object); + +#endif //__MAPS_OSM_OBJECT_H__ diff --git a/lib/maps-osm-relation.c b/lib/maps-osm-relation.c new file mode 100644 index 00000000..e4d4efd2 --- /dev/null +++ b/lib/maps-osm-relation.c @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-relation.h" + +struct _MapsOSMRelationPrivate +{ + GList *members; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMRelation, maps_osm_relation, + MAPS_TYPE_OSMOBJECT); + +typedef struct +{ + char *role; + guint type; + guint64 ref; +} MapsOSMRelationMember; + +static void +maps_osm_relation_member_free (gpointer data) +{ + MapsOSMRelationMember *member = (MapsOSMRelationMember *) data; + + g_free (member->role); +} + +static void +maps_osm_relation_dispose (GObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION (object); + + g_list_free_full (relation->priv->members, maps_osm_relation_member_free); + relation->priv->members = NULL; + + G_OBJECT_CLASS (maps_osm_relation_parent_class)->dispose (object); +} + +static const char * +maps_osm_relation_get_xml_tag_name (void) +{ + return "relation"; +} + +static const char * +maps_osm_relation_member_type_to_string (guint type) +{ + switch (type) { + case MEMBER_TYPE_NODE: + return "node"; + case MEMBER_TYPE_WAY: + return "way"; + case MEMBER_TYPE_RELATION: + return "relation"; + default: + g_warning ("Unknown relation member type: %d\n", type); + return NULL; + } +} + +static xmlNodePtr +maps_osm_relation_get_member_node (const MapsOSMRelationMember *member) +{ + xmlNodePtr node = xmlNewNode (NULL, (xmlChar *) "member"); + char buf[16]; + + if (member->role) + xmlNewProp (node, (xmlChar *) "role", (xmlChar *) g_strdup (member->role)); + + xmlNewProp (node, (xmlChar *) "type", + (xmlChar *) maps_osm_relation_member_type_to_string (member->type)); + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, member->ref); + xmlNewProp (node, (xmlChar *) "ref", (xmlChar *) buf); + + return node; +} + +static xmlNodePtr +maps_osm_relation_get_xml_child_nodes (const MapsOSMObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION ((MapsOSMObject *) object); + xmlNodePtr nodes = NULL; + const GList *members = relation->priv->members; + + if (members) + { + const GList *iter; + nodes = maps_osm_relation_get_member_node ((MapsOSMRelationMember *) + members->data); + + for (iter = members->next; iter; iter = iter->next) + { + xmlAddSibling (nodes, maps_osm_relation_get_member_node ( + (MapsOSMRelationMember *) iter->data)); + } + } + + return nodes; +} + +static void +maps_osm_relation_class_init (MapsOSMRelationClass *klass) +{ + GObjectClass *relation_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + relation_class->dispose = maps_osm_relation_dispose; + object_class->get_xml_tag_name = maps_osm_relation_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_relation_get_xml_child_nodes; +} + +static void +maps_osm_relation_init (MapsOSMRelation *relation) +{ + relation->priv = maps_osm_relation_get_instance_private (relation); +} + +MapsOSMRelation * +maps_osm_relation_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMRELATION, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_relation_add_member (MapsOSMRelation *relation, const gchar *role, + guint type, guint64 ref) +{ + MapsOSMRelationMember *member = g_new (MapsOSMRelationMember, 1); + + member->role = g_strdup (role); + member->type = type; + member->ref = ref; + + relation->priv->members = g_list_append (relation->priv->members, member); +} + diff --git a/lib/maps-osm-relation.h b/lib/maps-osm-relation.h new file mode 100644 index 00000000..ffcae785 --- /dev/null +++ b/lib/maps-osm-relation.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_RELATION_H__ +#define __MAPS_OSM_RELATION_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMRELATION maps_osm_relation_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMRelation, maps_osm_relation, MAPS, OSMRELATION, + MapsOSMObject) + +typedef struct _MapsOSMRelationPrivate MapsOSMRelationPrivate; + +struct _MapsOSMRelation +{ + MapsOSMObject parent_instance; + MapsOSMRelationPrivate *priv; +}; + +struct _MapsOSMRelationClass +{ + MapsOSMObjectClass parent_class; +}; + +enum { + MEMBER_TYPE_NODE, + MEMBER_TYPE_WAY, + MEMBER_TYPE_RELATION +}; + +MapsOSMRelation *maps_osm_relation_new (guint64 id, guint version, + guint64 changeset); + +void maps_osm_relation_add_member (MapsOSMRelation *relation, const char *role, + guint type, guint64 ref); + +#endif /* __MAPS_OSM_RELATION_H__ */ + diff --git a/lib/maps-osm-way.c b/lib/maps-osm-way.c new file mode 100644 index 00000000..a2150287 --- /dev/null +++ b/lib/maps-osm-way.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-way.h" + +struct _MapsOSMWayPrivate +{ + GArray *node_ids; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMWay, maps_osm_way, MAPS_TYPE_OSMOBJECT); + +static void +maps_osm_way_dispose (GObject *object) +{ + MapsOSMWay *way = MAPS_OSMWAY (object); + + g_array_free (way->priv->node_ids, TRUE); + way->priv->node_ids = NULL; + + G_OBJECT_CLASS (maps_osm_way_parent_class)->dispose (object); +} + +static const char * +maps_osm_way_get_xml_tag_name (void) +{ + return "way"; +} + +static xmlNodePtr +maps_osm_way_create_node_xml_node (guint64 ref) +{ + xmlNodePtr nd; + char buf[16]; + + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, ref); + nd = xmlNewNode (NULL, (xmlChar *) "nd"); + xmlNewProp (nd, (xmlChar *) "ref", (xmlChar *) buf); + + return nd; +} + +static xmlNodePtr +maps_osm_way_get_xml_child_nodes(const MapsOSMObject *object) +{ + const MapsOSMWay *way = MAPS_OSMWAY ((MapsOSMObject *) object); + int i; + xmlNodePtr result; + xmlNodePtr next; + + g_return_val_if_fail (way->priv->node_ids->len > 0, NULL); + + result = maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, 0)); + next = result; + + for (i = 1; i < way->priv->node_ids->len; i++) + { + xmlNodePtr new_node; + new_node = + maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, i)); + next = xmlAddNextSibling (next, new_node); + } + + return result; +} + +static void +maps_osm_way_class_init (MapsOSMWayClass *klass) +{ + GObjectClass *way_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + way_class->dispose = maps_osm_way_dispose; + object_class->get_xml_tag_name = maps_osm_way_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_way_get_xml_child_nodes; +} + +static void +maps_osm_way_init (MapsOSMWay *way) +{ + way->priv = maps_osm_way_get_instance_private (way); + way->priv->node_ids = g_array_new (FALSE, FALSE, sizeof (guint64)); +} + +MapsOSMWay * +maps_osm_way_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMWAY, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id) +{ + g_array_append_val (way->priv->node_ids, id); +} diff --git a/lib/maps-osm-way.h b/lib/maps-osm-way.h new file mode 100644 index 00000000..0dee1eec --- /dev/null +++ b/lib/maps-osm-way.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_WAY_H__ +#define __MAPS_OSM_WAY_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMWAY maps_osm_way_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMWay, maps_osm_way, MAPS, OSMWAY, MapsOSMObject) + +typedef struct _MapsOSMWayPrivate MapsOSMWayPrivate; + +struct _MapsOSMWay +{ + MapsOSMObject parent_instance; + MapsOSMWayPrivate *priv; +}; + +struct _MapsOSMWayClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMWay *maps_osm_way_new (guint64 id, guint version, guint64 changeset); + +void maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id); + +#endif /* __MAPS_OSM_WAY_H__ */ + diff --git a/lib/maps-osm.c b/lib/maps-osm.c new file mode 100644 index 00000000..307a9361 --- /dev/null +++ b/lib/maps-osm.c @@ -0,0 +1,471 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm.h" +#include "mapsintl.h" + +#include +#include + +#define MAPS_OSM_ERROR maps_osm_error_quark () + +GQuark +maps_osm_error_quark (void) +{ + return g_quark_from_static_string ("maps-osm-error"); +} + +void +maps_osm_init (void) +{ + LIBXML_TEST_VERSION; +} + +void +maps_osm_finalize (void) +{ + xmlCleanupParser (); +} + +static xmlDocPtr +read_xml_doc (const char *content, guint length, GError **error) +{ + xmlDoc *doc; + + doc = xmlReadMemory (content, length, "noname.xml", NULL, 0); + + if (!doc) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Failed to parse XML document")); + return NULL; + } + + return doc; +} + +static void +parse_tag (const xmlAttr *attrs, GHashTable *tags) +{ + const xmlAttr *cur_attr; + char *key; + char *value; + + key = NULL; + value = NULL; + + for (cur_attr = attrs; cur_attr; cur_attr = cur_attr->next) + { + if (g_str_equal (cur_attr->name, "k")) + key = (char *) cur_attr->children->content; + else if (g_str_equal (cur_attr->name, "v")) + value = (char *) cur_attr->children->content; + else + g_warning ("Unexpected tag property: %s\n", cur_attr->name); + } + + g_hash_table_insert (tags, key, value); +} + +static GHashTable * +parse_attributes (const xmlNode *node) +{ + GHashTable *attributes; + const xmlAttr *cur_attr; + + attributes = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_attr = node->properties; cur_attr; cur_attr = cur_attr->next) + { + g_hash_table_insert (attributes, + (gpointer) cur_attr->name, + (gpointer) cur_attr->children->content); + } + + return attributes; +} + +static GHashTable * +parse_tags (const xmlNode *tag_child) +{ + GHashTable *tags; + const xmlNode *cur_node; + + tags = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_node = tag_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "tag")) + parse_tag (cur_node->properties, tags); + } + + return tags; +} + +static GArray * +parse_node_refs (const xmlNode *node_ref_child) +{ + GArray *node_refs; + const xmlNode *cur_node; + + node_refs = g_array_new (FALSE, FALSE, sizeof (guint64)); + + for (cur_node = node_ref_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "nd")) + { + char *ref; + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + ref = g_hash_table_lookup (attributes, "ref"); + + if (ref) + { + guint64 id = g_ascii_strtoull (ref, NULL, 10); + + if (id == 0) + g_warning ("Invalid node ref: %s", ref); + else + g_array_append_val (node_refs, id); + } + + g_hash_table_destroy (attributes); + } + } + + return node_refs; +} + +static xmlNode * +get_sub_node (xmlDoc *doc) +{ + xmlNode *node; + xmlXPathContext *xpath_ctx; + xmlXPathObject * xpath_obj; + + xpath_ctx = xmlXPathNewContext (doc); + xpath_obj = xmlXPathEvalExpression ((xmlChar *) "/osm/node|/osm/way|/osm/relation", + xpath_ctx); + + if (xpath_obj && xpath_obj->nodesetval && xpath_obj->nodesetval->nodeNr > 0) + { + node = xmlCopyNode (xpath_obj->nodesetval->nodeTab[0], 1); + } + else + { + g_warning ("Couldn't find element"); + node = NULL; + } + + xmlXPathFreeObject (xpath_obj); + xmlXPathFreeContext (xpath_ctx); + + return node; +} + +static void +for_each_tag (gpointer key, gpointer value, gpointer user_data) +{ + const char *k = (const char *) key; + const char *v = (const char *) value; + MapsOSMObject *object = MAPS_OSMOBJECT (user_data); + + maps_osm_object_set_tag (object, k, v); +} + +static void +fill_tags (MapsOSMObject *object, GHashTable *tags) +{ + g_hash_table_foreach (tags, for_each_tag, object); +} + +static void +fill_node_ref_list (MapsOSMWay *way, const GArray *node_refs) +{ + int i; + + for (i = 0; i < node_refs->len; i++) + { + maps_osm_way_add_node_id (way, g_array_index (node_refs, guint64, i)); + } +} + +static MapsOSMNode * +parse_node (const xmlNodePtr node, GError **error) +{ + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + const char *lat_string; + double lat; + const char *lon_string; + double lon; + + GHashTable *tags; + GHashTable *attributes; + + MapsOSMNode *result; + + attributes = parse_attributes (node); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + lat_string = g_hash_table_lookup (attributes, "lat"); + lon_string = g_hash_table_lookup (attributes, "lon"); + + if (!id_string || !changeset_string || !version_string + || !lat_string || !lon_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + lon = g_ascii_strtod (lon_string, NULL); + lat = g_ascii_strtod (lat_string, NULL); + + g_hash_table_destroy (attributes); + + result = maps_osm_node_new (id, version, changeset, lon, lat); + + tags = parse_tags (node->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + + g_hash_table_destroy (tags); + + return result; +} + +static MapsOSMWay * +parse_way (const xmlNodePtr way, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GArray *node_refs; + MapsOSMWay *result; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + attributes = parse_attributes (way); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + g_warning ("Missing required attributes\n"); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_way_new (id, version, changeset); + + tags = parse_tags (way->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + node_refs = parse_node_refs (way->children); + fill_node_ref_list (result, node_refs); + g_array_free (node_refs, TRUE); + + return result; +} + + +static GList * +parse_members (const xmlNode *member_child) +{ + const xmlNode *cur_node; + GList *members; + + members = NULL; + + for (cur_node = member_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "member")) + { + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + members = g_list_append (members, attributes); + } + } + + return members; +} + +static void +fill_members (MapsOSMRelation *relation, const GList *members) +{ + const GList *cur; + + for (cur = members; cur; cur = g_list_next (cur)) { + GHashTable *attributes = (GHashTable *) cur->data; + const char *type_string = g_hash_table_lookup (attributes, "type"); + guint type; + const char *role = g_hash_table_lookup (attributes, "role"); + const char *ref_string = g_hash_table_lookup (attributes, "ref"); + guint64 ref; + + if (ref_string) + ref = g_ascii_strtoull (ref_string, NULL, 10); + + if (g_strcmp0 (type_string, "node") == 0) + type = MEMBER_TYPE_NODE; + else if (g_strcmp0 (type_string, "way") == 0) + type = MEMBER_TYPE_WAY; + else if (g_strcmp0 (type_string, "relation") == 0) + type = MEMBER_TYPE_RELATION; + else + { + g_warning ("Unknown relation type: %s\n", type_string); + continue; + } + + maps_osm_relation_add_member (relation, role, type, ref); + } +} + +static MapsOSMRelation * +parse_relation (const xmlNodePtr relation, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GList *member_list; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + MapsOSMRelation *result; + + attributes = parse_attributes (relation); + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_relation_new (id, version, changeset); + + tags = parse_tags (relation->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + member_list = parse_members (relation->children); + fill_members (result, member_list); + g_list_free_full (member_list, (GDestroyNotify) g_hash_table_destroy); + + return result; +} + +/** + * maps_osm_parse: + * @content: XML data + * @length: Length of data + * @error: Error handle + * Returns: (transfer full): A MapsOSMObject + */ +MapsOSMObject * +maps_osm_parse (const char *content, guint length, GError **error) +{ + xmlDocPtr doc; + xmlNodePtr sub_node; + MapsOSMObject *object; + + doc = read_xml_doc (content, length, error); + + if (!doc) + return NULL; + + sub_node = get_sub_node (doc); + + if (!sub_node) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Could not find OSM element")); + return NULL; + } + + if (g_str_equal (sub_node->name, "node")) + { + object = MAPS_OSMOBJECT (parse_node (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "way")) + { + object = MAPS_OSMOBJECT (parse_way (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "relation")) + { + object = MAPS_OSMOBJECT (parse_relation (sub_node, error)); + } + + xmlFreeNode (sub_node); + xmlFreeDoc (doc); + + return object; +} diff --git a/lib/maps-osm.h b/lib/maps-osm.h new file mode 100644 index 00000000..faca7404 --- /dev/null +++ b/lib/maps-osm.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_H__ +#define __MAPS_OSM_H__ + +#include + +#include "maps-osm-node.h" +#include "maps-osm-way.h" +#include "maps-osm-relation.h" + +void maps_osm_init (void); +void maps_osm_finalize (void); + +MapsOSMObject *maps_osm_parse (const char *content, guint length, + GError **error); + +#endif diff --git a/lib/maps.h b/lib/maps.h new file mode 100644 index 00000000..a6916d2b --- /dev/null +++ b/lib/maps.h @@ -0,0 +1,25 @@ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_H__ +#define __MAPS_H__ + +#include +#include "maps-contact-store.h" +#include "maps-contact.h" + +#endif diff --git a/lib/mapsintl.h b/lib/mapsintl.h new file mode 100644 index 00000000..56f31c3f --- /dev/null +++ b/lib/mapsintl.h @@ -0,0 +1,11 @@ +#ifndef _MAPS_INTL_H_ +#define _MAPS_INTL_H_ + +#ifdef ENABLE_NLS +#include +#define _(String) g_dgettext(GETTEXT_PACKAGE "-properties",String) +#else +#define _(String) (String) +#endif + +#endif diff --git a/lib/meson.build b/lib/meson.build new file mode 100644 index 00000000..60543648 --- /dev/null +++ b/lib/meson.build @@ -0,0 +1,75 @@ +maps_h = 'maps.h' + +headers_private = files( + 'maps-contact.h', + 'maps-contact-store.h', + 'maps-file-tile-source.h', + 'maps-osm.h', + 'maps-osm-changeset.h', + 'maps-osm-node.h', + 'maps-osm-object.h', + 'maps-osm-way.h', + 'maps-osm-relation.h', + 'maps-osm-oauth-proxy-call.h' +) + +sources = files( + 'maps-contact.c', + 'maps-contact-store.c', + 'maps-file-tile-source.c', + 'maps-osm.c', + 'maps-osm-changeset.c', + 'maps-osm-node.c', + 'maps-osm-object.c', + 'maps-osm-way.c', + 'maps-osm-relation.c', + 'maps-osm-oauth-proxy-call.c' +) + +enum_types = 'maps-enum-types' + +maps_enums = gnome.mkenums( + enum_types, + sources: headers_private, + c_template: enum_types + '.c.template', + h_template: enum_types + '.h.template', + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower() +) + +cflags = [ + '-DG_DISABLE_DEPRECATED', + '-DPREFIX="@0@"'.format(prefix), + '-DLIBDIR="@0@"'.format(libdir) +] + +libmaps = shared_library( + maps_libname, + version: '0.0.0', + sources: sources + maps_enums, + include_directories: top_inc, + dependencies: libmaps_deps, + c_args: cflags, + install: true, + install_dir: pkglibdir +) + +gnome.generate_gir( + libmaps, + sources: sources + [maps_enums, headers_private], + nsversion: maps_gir_version, + namespace: maps_gir_name, + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower(), + includes: [ + 'GLib-2.0', + 'GObject-2.0', + 'GeocodeGlib-1.0', + 'Champlain-0.12', + 'Rest-0.7' + ], + install: true, + install_dir_gir: join_paths(pkgdatadir, 'gir-' + maps_gir_version), + install_dir_typelib: join_paths(pkglibdir, 'girepository-' + maps_gir_version) +) + diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..117156b8 --- /dev/null +++ b/meson.build @@ -0,0 +1,59 @@ +project('gnome-maps', 'c', + version: '3.36.2', + license: 'GPL2+' +) + +app_id = 'org.gnome.Maps' +gnome = import('gnome') +i18n = import('i18n') + +prefix = get_option('prefix') +name = meson.project_name() +version = meson.project_version() + +bindir = join_paths(prefix, get_option('bindir')) +libdir = join_paths(prefix, get_option('libdir')) +datadir = join_paths(prefix, get_option('datadir')) +pkgdatadir = join_paths(datadir, name) +pkglibdir = join_paths(libdir, name) + +maps_ns = 'Maps' +maps_libname = 'gnome-maps' +maps_gir_name = 'GnomeMaps' +maps_gir_version = '1.0' + +desktop_file_validate = find_program('desktop-file-validate', required: false) +appstream_util = find_program('appstream-util', required: false) + +gio = dependency('gio-2.0', version: '>= 2.44.0') +gjs = dependency('gjs-1.0', version: '>= 1.50.0') +girepository = dependency('gobject-introspection-1.0', version: '>= 0.10.1') +gtk3 = dependency('gtk+-3.0', version: '>= 3.22.0') +geoclue2 = dependency('geoclue-2.0', version: '>= 0.12.99') + +libmaps_deps = [ + dependency('gee-0.8', version: '>= 0.16.0'), + dependency('folks', version: '>= 0.10.0'), + dependency('geocode-glib-1.0', version: '>= 3.15.2'), + dependency('champlain-0.12', version: '>= 0.12.14'), + dependency('libxml-2.0'), + dependency('rest-0.7', version: '>= 0.7.90') +] + +msgfmt = find_program('msgfmt') +po_dir = join_paths(meson.source_root(), 'po') + +top_inc = include_directories('.') + +cc = meson.get_compiler('c') + +subdir('po') +subdir('src') +subdir('lib') +subdir('data') + +meson.add_install_script( + 'meson_post_install.py', + datadir, + bindir +) diff --git a/meson_post_install.py b/meson_post_install.py new file mode 100644 index 00000000..bb6b67c9 --- /dev/null +++ b/meson_post_install.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import glob +import os +import re +import subprocess +import sys + +datadir = sys.argv[1] + +destdir = os.environ.get('DESTDIR', '') +bindir = os.path.normpath(destdir + os.sep + sys.argv[2]) + +# FIXME: meson will not track the creation of these files +# https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 +if not os.path.exists(bindir): + os.makedirs(bindir) + +src = os.path.join(datadir, 'gnome-maps', 'org.gnome.Maps') +dest = os.path.join(bindir, 'gnome-maps') +subprocess.call(['ln', '-s', '-f', src, dest]) + +if not os.environ.get('DESTDIR'): + icondir = os.path.join(datadir, 'icons', 'hicolor') + + print('Update icon cache...') + subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir]) + + schemadir = os.path.join(datadir, 'glib-2.0', 'schemas') + print('Compiling gsettings schemas...') + subprocess.call(['glib-compile-schemas', schemadir]) + + # FIXME + ''' + search_pattern = '/*.desktop' + + desktopdir = os.path.join(datadir, 'applications') + print('Validate desktop files...') + [subprocess.call(['desktop-file-validate', file]) + for file in glob.glob(desktopdir + search_pattern, recursive=False)] + ''' + diff --git a/org.gnome.Maps.json b/org.gnome.Maps.json new file mode 100644 index 00000000..ddbe94b0 --- /dev/null +++ b/org.gnome.Maps.json @@ -0,0 +1,236 @@ +{ + "app-id" : "org.gnome.Maps", + "runtime" : "org.gnome.Platform", + "runtime-version" : "master", + "sdk" : "org.gnome.Sdk", + "command" : "gnome-maps", + "tags" : [ + "devel" + ], + "desktop-file-name-prefix" : "(Development) ", + "finish-args" : [ + "--share=ipc", + "--socket=x11", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--share=network", + "--talk-name=org.gnome.OnlineAccounts", + "--talk-name=org.gnome.evolution.dataserver.AddressBook9", + "--talk-name=org.gnome.evolution.dataserver.Calendar7", + "--talk-name=org.gnome.evolution.dataserver.Sources5", + "--talk-name=org.gnome.evolution.dataserver.Subprocess.Backend.*", + "--system-talk-name=org.freedesktop.NetworkManager", + "--talk-name=org.freedesktop.secrets", + "--system-talk-name=org.freedesktop.GeoClue2", + "--filesystem=xdg-run/dconf", + "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", + "--env=DCONF_USER_CONFIG_DIR=.config/dconf" + ], + "build-options" : { + "cflags" : "-O2 -g", + "cxxflags" : "-O2 -g", + "env" : { + "V" : "1" + } + }, + "cleanup" : [ + "/include", + "/lib/pkgconfig", + "/share/pkgconfig", + "/share/aclocal", + "/man", + "/share/man", + "/share/gtk-doc", + "/share/vala", + "*.la", + "*.a" + ], + "modules" : [ + { + "name": "libical", + "cleanup": [ + "/lib/cmake" + ], + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DCMAKE_INSTALL_LIBDIR=lib", + "-DBUILD_SHARED_LIBS:BOOL=ON", + "-DICAL_GLIB=true", + "-DGOBJECT_INTROSPECTION=true", + "-DICAL_GLIB_VAPI=true", + "-DICAL_BUILD_DOCS=false" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/libical/libical/releases/download/v3.0.7/libical-3.0.7.tar.gz", + "sha256": "0abe66df1ea826e57db7f281c704ede834c84139012e6c686ea7adafd4e763fc" + } + ] + }, + { + "name" : "libgee", + "build-options" : { + "make-install-args" : [ + "girdir=/app/share/gir-1.0", + "typelibdir=/app/lib/girepository-1.0" + ] + }, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgee.git" + } + ] + }, + { + "name" : "gnome-online-accounts", + "config-opts" : [ + "--disable-Werror", + "--disable-telepathy", + "--disable-documentation", + "--disable-backend" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-online-accounts.git" + } + ] + }, + { + "name" : "geocode-glib", + "buildsystem" : "meson", + "builddir" : true, + "config-opts" : [ + "--libdir=/app/lib", + "-Denable-gtk-doc=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/geocode-glib.git" + } + ] + }, + { + "name" : "libgweather", + "buildsystem" : "meson", + "config-opts" : [ + "--libdir=/app/lib" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgweather.git" + } + ] + }, + { + "name": "intltool", + "cleanup": [ "*" ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz", + "sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd" + } + ] + }, + { + "name" : "evolution-data-server", + "cleanup" : [ + "/lib/cmake", + "/lib/evolution-data-server/*-backends", + "/libexec", + "/share/dbus-1/services" + ], + "config-opts" : [ + "-DENABLE_GTK=OFF", + "-DENABLE_GOOGLE_AUTH=OFF", + "-DENABLE_UOA=OFF", + "-DENABLE_GOOGLE=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DWITH_OPENLDAP=OFF", + "-DWITH_LIBDB=OFF", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_INSTALLED_TESTS=OFF", + "-DENABLE_GTK_DOC=OFF", + "-DENABLE_EXAMPLES=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DENABLE_INTROSPECTION=ON" + ], + "buildsystem" : "cmake", + "sources" : [ + { + "type" : "git", + "url": "https://gitlab.gnome.org/GNOME/evolution-data-server.git" + } + ] + }, + { + "name" : "folks", + "buildsystem": "meson", + "cleanup" : [ + "/bin" + ], + "config-opts" : [ + "-Dtelepathy_backend=false", + "-Dofono_backend=false", + "-Dbluez_backend=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/folks.git" + } + ] + }, + { + "name" : "libchamplain", + "buildsystem": "meson", + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libchamplain.git" + } + ] + }, + { + "name" : "librest", + "sources" : [ + { + "type" : "archive", + "url" : "https://gitlab.gnome.org/GNOME/librest/-/archive/0.8.1/librest-0.8.1.tar.gz", + "sha256" : "2bdd1be07a9150b1c6ceea6e01dedf2efcff564381cae0cd6c7330403efe59d7" + } + ] + }, + { + "name" : "libgfbgraph", + "cleanup" : [ + "/doc/libgfbgraph" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgfbgraph.git" + } + ] + }, + { + "name" : "gnome-maps", + "buildsystem" : "meson", + "builddir" : true, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-maps.git" + } + ] + } + ] +} diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 00000000..b7c69baf --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,63 @@ +af +an +ar +as +bg +bs +ca +ca@valencia +cs +da +de +el +en_GB +eo +es +et +eu +fa +fi +fr +fur +ga +gd +gl +he +hi +hr +hu +id +is +it +ja +kk +kn +ko +lt +lv +mjw +ml +ms +nb +ne +nl +oc +pa +pl +pt +pt_BR +ru +ro +sk +sl +sr +sr@latin +sv +te +tg +tr +uk +vi +zh_CN +zh_HK +zh_TW diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..ca98b288 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,62 @@ +# List of source files containing translatable strings. +# Please keep this file sorted alphabetically. +data/org.gnome.Maps.appdata.xml.in +data/org.gnome.Maps.desktop.in +data/org.gnome.Maps.gschema.xml +data/ui/check-in-dialog.ui +data/ui/context-menu.ui +data/ui/export-view-dialog.ui +data/ui/help-overlay.ui +data/ui/layers-popover.ui +data/ui/location-service-dialog.ui +data/ui/main-window.ui +data/ui/map-bubble.ui +data/ui/osm-account-dialog.ui +data/ui/osm-edit-address.ui +data/ui/osm-edit-dialog.ui +data/ui/place-bubble.ui +data/ui/place-popover.ui +data/ui/route-entry.ui +data/ui/send-to-dialog.ui +data/ui/shape-layer-file-chooser.ui +data/ui/shape-layer-row.ui +data/ui/sidebar.ui +data/ui/social-place-more-results-row.ui +data/ui/transit-leg-row.ui +data/ui/transit-options-panel.ui +data/ui/user-location-bubble.ui +data/ui/zoom-in-dialog.ui +lib/maps-file-tile-source.c +lib/maps-osm.c +src/application.js +src/checkInDialog.js +src/checkIn.js +src/contextMenu.js +src/exportViewDialog.js +src/geoclue.js +src/geoJSONSource.js +src/graphHopper.js +src/layersPopover.js +src/mainWindow.js +src/mapView.js +src/osmConnection.js +src/osmEditDialog.js +src/photonParser.js +src/placeBubble.js +src/placeEntry.js +src/place.js +src/printLayout.js +src/printOperation.js +src/routeEntry.js +src/sendToDialog.js +src/shapeLayer.js +src/sidebar.js +src/transit.js +src/transitLegRow.js +src/transitMoreRow.js +src/transitOptionsPanel.js +src/transitPlan.js +src/translations.js +src/userLocationBubble.js +src/utils.js +src/transitplugins/openTripPlanner.js diff --git a/po/POTFILES.skip b/po/POTFILES.skip new file mode 100644 index 00000000..4427cad6 --- /dev/null +++ b/po/POTFILES.skip @@ -0,0 +1,2 @@ +data/gnome-maps.appdata.xml +data/org.gnome.Maps.desktop diff --git a/po/af.po b/po/af.po new file mode 100644 index 00000000..fee368e4 --- /dev/null +++ b/po/af.po @@ -0,0 +1,182 @@ +# Afrikaans translation for gnome-maps. +# This file is distributed under the same license as the gnome-maps package. +# Copyright (C) +# Dawid Loubser , 2013. +# F Wolff , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-09 20:30+0000\n" +"PO-Revision-Date: 2013-10-13 23:29+0200\n" +"Last-Translator: F Wolff \n" +"Language-Team: translate-discuss-af@lists.sourceforge.net\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Padkaart gee vinnige toegang tot padkaarte van regoor die wêreld. Dit laat " +"mens toe om vinnig 'n gewenste plek te vind deur te soek vir 'n stad of 'n " +"straat, of om 'n ontmoetingspunt op te spoor." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +#, fuzzy +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • Soek vir 'n land, streek, stad of straat.
  • Soek vir spesifieke " +"tipe liggings, soos “Restaurante in Melville, Johannesburg” of “Hotelle in " +"Mosselbaai”
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Padkaart gebruik die gesamentlike OpenStreetMap-databasis, geskep deur " +"honderde duisende mense regoor die wêreld." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "Padkaart" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "'n Eenvoudige padkaart-toepassing" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;Padkaart;Kaart;Ligging;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Venstergrootte" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Venstergrootte (wydte en hoogte)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Vensterposisie" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Vensterposisie (X en Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Venster-maksimeringstoestand" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Toestand van die venster in terme van maksimering" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "Laas bekende ligging en akkuraatheid" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Laas bekende ligging (breedte- en lengtegraad in grade) en akkuraatheid (in " +"meter)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "Beskrywing van laas bekende ligging" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "Beskrywing van laas bekende ligging van gebruiker." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "Maksimum aantal soekresultate" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum aantal soekresultate van geokoderingsoektog." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "Gebruiker het laas bekende ligging gestel" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "Of die gebruiker self die laas bekende ligging gestel het." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "Aangaande" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "Sluit af" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Wat is hier?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "Ek is hier!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "Dawid Loubser" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "'n Padkaart-toepassing vir GNOME" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "Straat" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "Satelliet" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "Presies" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Ligging-akkuraatheid: %s" diff --git a/po/an.po b/po/an.po new file mode 100644 index 00000000..34fdb264 --- /dev/null +++ b/po/an.po @@ -0,0 +1,685 @@ +# Aragonese translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jorge Pérez Pérez , 2014 +# Daniel Martinez , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-05-03 19:08+0000\n" +"PO-Revision-Date: 2015-05-03 22:30+0200\n" +"Last-Translator: Daniel \n" +"Language-Team: Aragonés \n" +"Language: an\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.5.1.1\n" +"X-POOTLE-MTIME: 1430688604.000000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas te ofreix un acceso rapido a mapas de tot o mundo. Te permite trobar " +"puestos rapidament mirando por ciudat u por carrera, u mirar un puesto ta " +"trobar-te con un amigo." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Os mapas fan servir a base de datos colaborativa OpenStreetMap, feita por " +"cients de mils de personas de tot o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tamién puede buscar por tipos d'ubicacions especificos como “Tabiernas amán " +"d'o Paseyo d'a Independencia, Zaragoza”u “Hotels amán d'a Plaza d'o Torico, " +"Teruel”." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:366 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicación simpla de mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Grandaria d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Grandaria d'a finestra (amplaria y altura )" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Posición d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window position (X and Y)." +msgstr "Posición d'a finestra (X y Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Finestra maximizada" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window maximization state" +msgstr "Estau de maximización d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "Numero maximo de resultaus de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Numero maximo de resultaus de búsca ta buscas por cheocodigo." + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "Numero de puestos recients que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "Numero de puestos visitaus recientment que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Facebook usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Foursquare usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Arredol de" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Salir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilidat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar en Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar en Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Rechistrar" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Totz" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amigos d'amigos" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Solament amigos" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Solament yo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Público" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidores" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privau" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Qué bi ha aquí?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar os servicios d'ubicación ta trobar a suya posición" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Configuración d'a ubicación" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Trigar o tipo de mapa" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Commutar o planificador de rotas" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Commutar favoritos" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Mapas ye desconnectau" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Mapas ameneste una connexión a Internet activa ta funcionar correctament, " +"pero no s'ha trobau garra." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Comprebe a configuración d'a suya connexión y d'o suyo proxy." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Adhibir a la rota nueva" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Ubrir con unatra aplicación" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Rechistrar-se aquí" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Prete Intro ta buscar" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Ubrir ubicación" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Ubrir" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Rota buscada por GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Amostrar más resultaus" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:207 +msgid "Current location" +msgstr "Ubicación actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "No se puede trobar \"%s\" en o ret social" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede trobar un puesto adequau ta rechistrar-se en ista ubicación" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credencials han caducau. Ubra as Cuentas en linia ta encetar sesión y " +"activar ista cuenta." + +#: ../src/checkIn.js:153 ../src/checkInDialog.js:289 +msgid "An error has occurred" +msgstr "Ha ocurriu una error" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Cargando" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Seleccionar un puesto" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Facebook. Trigue " +"un d'a lista." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Foursquare. " +"Trigue un d'a lista." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Rechistrar-se en %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensache opcional ta rechistrar-se en %s." + +#: ../src/mainWindow.js:314 +msgid "Failed to connect to location service" +msgstr "Falló en connectar a o servicio d'ubicación" + +#: ../src/mainWindow.js:319 +msgid "Position not found" +msgstr "Posición no trobada" + +#: ../src/mainWindow.js:364 +msgid "translator-credits" +msgstr "" +"Jorge Pérez Pérez , 2014\n" +"Daniel Martínez Cucalón " + +#: ../src/mainWindow.js:367 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas ta GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:120 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:127 +msgid "limited" +msgstr "limitau" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:133 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:140 +msgid "designated" +msgstr "designau" + +#: ../src/routeService.js:69 +msgid "No route found." +msgstr "No s'ha trobau a rota." + +#: ../src/routeService.js:76 +msgid "Route request failed." +msgstr "Falló en solicitar a rota." + +#: ../src/routeService.js:147 +msgid "Start!" +msgstr "Empecipiar" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Codigo postal: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Codigo d'o país: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Población: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Horario d'obridura: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Acceso ta siellas de ruedas: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:197 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimau: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "tot o día" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "dende l'amaneixer dica a mesa d'o sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "festivos" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "vacancias escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "zarrau" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Desconoixiu" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:259 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f pietz" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zaguera ubicación conoixida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zaguera ubicación conoixida (latitut y longaria en graus) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location" +#~ msgstr "Descripción d'a zaguera ubicación conoixida" + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción d'a zaguera ubicación conoixida de l'usuario." + +#~ msgid "User set last known location" +#~ msgstr "Zaguera ubicación conoixida establida por l'usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si a zaguera ubicación conoixida la establió l'usuario manualment." + +#~ msgid "I’m here!" +#~ msgstr "Soi aquí!" + +#~ msgid "Street" +#~ msgstr "Carrera" + +#~ msgid "Satellite" +#~ msgstr "Satelite" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 00000000..900fcd71 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,1620 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Khaled Hosny , 2013, 2014, 2017. +# Safa Alfulaij , 2016, ٢٠١٦. +# Ibrahim Saed , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-29 17:50+0200\n" +"PO-Revision-Date: 2017-09-29 16:01+0200\n" +"Last-Translator: Khaled Hosny \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Virtaal 1.0.0-beta1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "خرائط جنوم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "جِد الأماكن حول العالم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"يمكّنك تطبيق الخرائط من مطالعة خرائط العالم أجمع، فهو يمكّنك من العثور على ما " +"تريد بالبحث عن مدينة أو اسم شارع أو مكان ستجمتع فيه مع صديقك." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"يستخدم تطبيق الخراط قاعدة بيانات «خريطة الشارع المفتوحة» التعاونية، والتي " +"شارك فيها آلاف الأشخاص حول العالم." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"يمكن أيضا البحث عن أماكن محدّدة النوع، مثل ”Pubs near Main Street, Boston\" " +"أو \"Hotels near Alexanderplatz, Berlin“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "الخرائط" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "تطبيق خرائط بسيط" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "خرائط;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "يسمح بإظهار مكانك على الخريطة." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "آخر مكان معروض" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "إحداثيات آخر مكان عُرض." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "حجم النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "حجم النافذة (العرض والارتفاع)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "موضع النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "موضع النافذة (س و ص)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "النافذة مُكبّرة" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "حالة تكبير النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "أقصى عدد لنتائج البحث" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "أقصى عدد لنتائج البحث من بحث الرمز الجغرافي." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "عدد أحدث الأماكن لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "عدد الأماكن التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "عدد أحدث المسارات لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "عدد المسارات التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "إعداد خصوصية الدخول إلى «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فيسبوك» قد استُخدم. القيم الممكنة هي: EVERYONE أو " +"FRIENDS_OF_FRIENDS أو ALL_FRIENDS أو SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "إعداد «فورسكوير» لخصوصية الدخول" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فورسكوير» قد استُخدم. القيم الممكنة هي: public أو " +"followers أو private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كمنشور في حساب فيسبوك المرتبط مع حساب " +"«فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كتغريدة في حساب «فيسبوك» المرتبط مع " +"حساب «فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "اسم مستخدم أو عنوان البريد الإلكترونيّ في «خريطة الشارع المفتوحة»" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "يشير في حال كان المستخدم قد ولج لتحرير بيانات «خريطة الشارع المفتوحة»." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "أعدّ حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "اختصارات لو_حة المفاتيح" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "عنْ" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "الظهور" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "أل_غِ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "اد_خل" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "للجميع" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "لأصدقاء أصدقائي" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "لأصدقائي فقط" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "لي فقط" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "للعامة" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "للمتابعين" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "خاص" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ماذا يوجد هنا؟" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "انسخ المكان" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "صدّر كصورة" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "صدّر العرض" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_صدّر" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ضمّن المسارات والعلامات" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "عام" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "اعرض الاختصارات" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "ابحث" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "اطبع المسار" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "منظور الخريطة" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "قرّب" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بعّد" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "اعرض/أخفِ المقياس" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "انتقل إلى منظور الشارع" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "انتقل إلى منظور جوي" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "افتح طبقة الشكل" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "حمّل طبقة خريطة" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "فعّل خدمات التموضع لتجد مكانك" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "إعدادات التموضع" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "اختر نوع الخريطة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "اعرض/أخفِ المفضّلة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "اطبع المسار" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "تطبيق الخرائط يعمل بلا اتصال!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"يحتاج تطبيق الخرائط إلى اتصال إنترنت نشط ليعمل كما ينبغي، لكنه لم يعثر على " +"واحد." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "افحص إعدادات اتصالك ووكيلك." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "أضفه إلى مسار جديد" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "افتح بتطبيق آخر" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "علّمه كمفضّل" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "ادخل هنا" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "سجّل لتحرير الخرائط" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"ساهم في تحسين الخريطة باستخدام\n" +"حساب «خريطة الشارع المفتوحة»." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "كلمة السر" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "لِج" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "أليس لديك حساب؟" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"آسفون، لم يعمل هذا. من فضلك جرّب مجددا، أو زُر\n" +"«خريطة الشارع " +"المفتوحة» لتصفير كلمة السر." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "رمز التأكيد لا يتطابق، من فضلك جرّب مجددا." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "أدخل رمز التأكيد الظاهر أعلاه" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "أكّد" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "أنت والج" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "حسابك في «خريطة الشارع المفتوحة» نشط." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "اخرج" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "الشوارع" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "رقم المنزل" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "الرقم البريدي" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "المدينة" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "النوع" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "بلا" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "أضف حقلا" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "تعليق" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ستظهر التعديلات على الخريطة في كل الخرائط التي تستخدم بيانات «خريطة الشارع " +"المفتوحة»." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "المستخدمة حديثًا" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ألغِ" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "التالي" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "اعرض معلومات أكثر" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "اضغط Enter للبحث" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "لا نتائج" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "اسحب لتغيير المسار" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "افتح المكان" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "ا_فتح" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "افتح طبقة" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "اعرض/أخفِ" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "البحث عن المسار يدعمه GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "البحث عن المسار يدعمه OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسارات وسائل النقل العامة توفرها جنوم بناء على\n" +"بيانات المواعيد من شركات و هيئات النقل.\n" +"ليست الشركات و الهيئات مسئولة عن النتائج المعروضة.\n" +"لا تضمن جنوم صحة المسارات و لا المواعيد المعروضة.\n" +"الأسماء تعتبر علامات تجارية مسجلة حسب القواعد." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "اعرض نتائج أكثر" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "أخف الخطوات البينية و المعلومات" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "اعرض الخطوات البينية و المعلومات" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "غادر الآن" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "غادر في" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "تصل في" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "اعرض" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "حافلات" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ترام" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "قطارات" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "قطارات الأنفاق" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "عبّارات" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "المكان الحالي" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "الدقة: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "قرّب لتضيف مكانا!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "حسنًا" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "فشل إيجاد بنية قطع خرائط في الدليل" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "فشل تحليل ملف XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "الصفات المطلوبة ناقصة" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "تعذر إيجاد عنصر OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "مسار يشير إلى دليل محليّ لبنية قطع خرائط" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "اختر حسابا" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "يحمّل" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "اختر مكانا" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فيسبوك». من فضلك اختر واحدا " +"من القائمة." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فورسكوير». من فضلك اختر " +"واحدا من القائمة." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "ادخل إلى %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "اكتب رسالة اختيارية للدخول إلى %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "حدث خطأ ما" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "تعذّر إيجاد ”%s“ في الخدمة الاجتماعية" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "تعذّر إيجاد مكان مناسب للدخول إلى هذا المكان" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"انتهت صلاحية معلومات الولوج، من فضلك افتح الحساب الشبكية لتلج وتفعّل هذا " +"الحساب" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "المسار من هنا" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "أضف مقصدا" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "المسار إلى هنا" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "لم أجد شيئا هنا!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"أُضيف المكان إلى الخريطة، لكن لاحظ أنه قد يأخذ وقتا ليظهر عليها وفي نتائج " +"البحث." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "نظام الملفات للقراءة فقط" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "لا صلاحيات لك للحفظ هناك" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "الدليل غير موجود" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "لم يُحدّد اسم ملف" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "تعذّر تصدير العرض" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "إحداثية غير صالحة" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "خطأ في التحليل" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "الهندسة مجهولة" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "فشل طلب المسار." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "لا مسار." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "ابدأ!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "كل ملفات الطبقات" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "فشل الاتصال بخدمة التموضع" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"فريق عربآيز للترجمة http://www.arabeyes.org:\n" +"خالد حسني\t\n" +"صفا الفليج\t" + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "تطبيق خرائط لجنوم" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "نوع الملفات غير مدعوم" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "فشل فتح الطبقة" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "فشل فتح العنوان الجغرافي" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "لم يُعثر على بدائل سابقة." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "لم يُعثر على بدائل لاحقة." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "لم يُعثر على بيانات المواعيد لهذا المسار." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "اسم المستخدم أو كلمة السر خاطئة" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "نجح" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "طلب سيّئ" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "الكائن غير موجود" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "ثمة تضارب، هناك من عدّل الكائن لتوّه" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "حُذف الكائن" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "يشير الطريق أو العلاقة إلى ابن غير موجود" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "الاسم" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "الاسم الرسمي. غالبا ما يكون على العلامات." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "العنوان" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "موقع الوِب" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"موقع الوِب الرسمي. حاول استخدام أبسط صيغة للعنوان مثل http://example.com بدل " +"http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "الهاتف" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"رقم الهاتف. استخدم الصيغة العالمية، مبتدءًا الرقم بعلامة +. انتبه لحقوق " +"الخصوصية في الدول، خصوصا تلك الخاصة بأرقام الهواتف الخاصة." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "ويكيبيديا" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"الصيغة المُستخدمة هنا تتضمن رمز اللغة وعنوان المقال مثل ”ar:عنوان المقالة“." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "ساعات العمل" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "طالع الوصلة في اللصيقة لتجد مساعدة حول الصيغة." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "عدد السكان" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "الارتفاع الرأسي" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ارتفاع نقطة (عن مستوى سطح البحر) بالأمتار." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "دخول الكراسي ذات العجلات" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "مسموح" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "ممنوع" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "محدود" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "محدّد" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "الوصول إلى الإنترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "واي-فاي" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "سلكي" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "طرفيّة" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "خدمة" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "الدين" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "إحيائية" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "بهائية" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "بوذية" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "كاو دائية" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "مسيحية" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "كونفشيوسية" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "هندوسية" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "جاينية" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "يهودية" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "إسلام" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "ديانات متعددة" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "وثنية" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "باستافارية" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "سينتولوجيا" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "شنتو" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "سيخية" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "روحانية" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "طاوية" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "توحيدية كونية" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "فودو" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "يزدية" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرادشتية" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "حمامات" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "ملاحظة" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"معلومات تعلم الخرائطيين الآخرين عن معلومات غير بديهية عن عنصر ما، أو غرض " +"المؤلف عند إنشائه، أو ملاحظات تساعد في تحسينه." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "اختر نوعًا" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "تمّ" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "السّكانيّة:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "الارتفاع الرأسي:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "ساعات العمل:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "الوصول إلى الإنترنت:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "الدين:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "حمامات:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "دخول الكراسي ذات العجلات:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "الهاتف:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "فشل تحليل العنوان الجغرافي" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "مسموح" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ممنوع" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "محدّد" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "من %s إلى %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "يحمّل قطع الخرائط للطباعة" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "يمكنك إجهاض الطباعة إن أخذت وقتا طويلا" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "أجهض الطباعة" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "فشل فتح العنوان" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "فشل تحميل الملف" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "الوقت المقدّر: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "تصل إلى %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "تصل" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "ابدأ من %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "ابدأ" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "اعرض تعليمات المشي" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "أخفِ تعليمات المشي" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "امشِ %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "حمّل البدائل السابقة" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "حمّل البدائل اللاحقة" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %B" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d دقيقة" +msgstr[1] "دقيقة" +msgstr[2] "دقيقتين" +msgstr[3] "%d دقائق" +msgstr[4] "%d دقيقة" +msgstr[5] "%d دقيقة" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ساعة" +msgstr[1] "ساعة" +msgstr[2] "ساعتين" +msgstr[3] "%d ساعات" +msgstr[4] "%d ساعة" +msgstr[5] "%d ساعة" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ساعة" +msgstr[1] "%d:%02d ساعة" +msgstr[2] "%d:%02d ساعة" +msgstr[3] "%d:%02d ساعة" +msgstr[4] "%d:%02d ساعة" +msgstr[5] "%d:%02d ساعة" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "على مدار الساعة" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "من شروق الشمس حتى غروبها" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "يوميا" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "العطل العامة" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "العطل المدرسية" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "ليس مفتوحا" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "سلكي" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "طرفيّة" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "خدمة" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "غير معروف" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "بالضبط" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f سا" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f دق" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f ثا" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s كم" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s ميل" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s قدم" + +#~ msgid "%f km" +#~ msgstr "%f كم" + +#~ msgid "%f m" +#~ msgstr "%f م" + +#~ msgid "%f mi" +#~ msgstr "%f ميل" + +#~ msgid "%f ft" +#~ msgstr "%f قدم" + +#~ msgid "Edit Location" +#~ msgstr "حرّر المكان" + +#~ msgid "Position not found" +#~ msgstr "الموضع غير موجود" + +#~ msgid "Country code: %s" +#~ msgstr "رمز البلد: %s" + +#~ msgid "Population: %s" +#~ msgstr "عدد السكان: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "دخول الكراسي ذات العجلات: %s" + +#~ msgid "I’m here!" +#~ msgstr "أنا هنا" + +#~ msgid "Satellite" +#~ msgstr "قمر صناعي" + +#~ msgid " km2" +#~ msgstr " كم٢" + +#~ msgid " km²" +#~ msgstr " كم٢" diff --git a/po/as.po b/po/as.po new file mode 100644 index 00000000..1cf79918 --- /dev/null +++ b/po/as.po @@ -0,0 +1,260 @@ +# Assamese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Nilamdyuti Goswami , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-09-02 15:46+0000\n" +"PO-Revision-Date: 2014-09-02 21:54+0530\n" +"Last-Translator: Nilamdyuti Goswami \n" +"Language-Team: Assamese \n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"মানচিত্ৰই আপোনাক বিশ্বৰ সকলো মানচিত্ৰলৈ এটা দ্ৰুত অভিগম প্ৰদান কৰে। ই আপোনাক " +"এটা " +"নগৰ অথবা বাটৰ বাবে সন্ধান কৰি আপুনি বিচৰা স্থান দ্ৰুতভাৱে সন্ধান কৰাৰ অনুমতি " +"দিয়ে, " +"অথবা এজন বন্ধুক লগ ধৰিবলৈ এটা স্থান অৱস্থিত কৰাৰ সুবিধা দিয়ে।" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"মানচিত্ৰই সংযোগি OpenStreetMap ডাটাবেইচ ব্যৱহাৰ কৰে, যাক বিশ্বৰ বিভিন্ন " +"প্ৰান্তৰ " +"লোকে সৃষ্টি কৰিছে।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"আপুনি বিশেষ ধৰণৰ স্থান, যেনে “Pubs near Main Street, Boston“ অথবা “Hotels " +"near " +"Alexanderplatz, Berlin“ ৰ বাবে সন্ধান কৰিব পাৰিব।" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:304 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "মানচিত্ৰ" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "এটা সাধাৰণ মানচিত্ৰ এপ্লিকেচন" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "মানচিত্ৰ;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "উইন্ডোৰ আকাৰ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "উইন্ডোৰ আকাৰ (প্ৰস্থ আৰু উচ্চতা)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "উইন্ডোৰ অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "উইন্ডোৰ অৱস্থান (X আৰু Y)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "উইন্ডো সৰ্বাধিক আকাৰলৈ বৃদ্ধি কৰা হৈছে" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "উইন্ডোৰ সৰ্বাধিক আকাৰ অৱস্থা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থান আৰু সঠিকতা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান (অক্ষাংশ আৰু দ্ৰাঘিমা ডিগ্ৰিসমূহত) আৰু সঠিকতা (মিটাৰত)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "ব্যৱহাৰকাৰীৰ সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "সন্ধান ফলাফলসমূহৰ সৰ্বাধিক সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "geocode সন্ধানৰ পৰা সন্ধান ফলাফলৰ সৰ্বাধিক সংখ্যা।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "ব্যৱহাৰকাৰী দ্বাৰা সংহতি কৰা সৰ্বশেষ জ্ঞাত অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান ব্যৱহাৰকাৰী দ্বাৰা হস্তচালিতভাৱে সংহতি কৰা হৈছিল নে।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়া স্থানবোৰৰ সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়াভাৱে ভ্ৰমণ কৰা স্থানবোৰৰ সংখ্যা।" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "বিষয়ে" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "প্ৰস্থান কৰক" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ইয়াত কি আছে?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "মই ইয়াত আছো!" + +#: ../src/mainWindow.js:302 +msgid "translator-credits" +msgstr "নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)" + +#: ../src/mainWindow.js:305 +msgid "A map application for GNOME" +msgstr "GNOME ৰ বাবে এটা মানচিত্ৰ এপ্লিকেচন" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "বৰ্তমান অৱস্থানলৈ যাওক" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "মানচিত্ৰৰ ধৰণ বাছক" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "পথ পৰিকল্পক টগল কৰক" + +#: ../src/routeService.js:73 +msgid "No route found." +msgstr "কোনো পথ পোৱা নগল।" + +#: ../src/routeService.js:80 +msgid "Route request failed." +msgstr "পথৰ অনুৰোধ ব্যৰ্থ হল।" + +#: ../src/routeService.js:151 +msgid "Start!" +msgstr "আৰম্ভ কৰক!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "দেশৰ ক'ড: %s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "পস্টেল ক'ড: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:190 +#, javascript-format +msgid "Estimated time: %s" +msgstr "আনুমানিক সময়: %s" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "বৰ্তমান অৱস্থান" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "সঠিকতা: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "অজ্ঞাত" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "অবিকল" + +#: ../src/utils.js:179 +#, javascript-format +msgid "%f km²" +msgstr "%f km²" + +#: ../src/utils.js:276 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:278 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:288 +#, javascript-format +#| msgid "%f km²" +msgid "%f km" +msgstr "%f km" + +#: ../src/utils.js:290 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#~ msgid "To" +#~ msgstr "লৈ" + +#~ msgid "From" +#~ msgstr "পৰা" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Street" +#~ msgstr "বাট" + +#~ msgid "Satellite" +#~ msgstr "চেটেলাইট" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 00000000..a85e0b41 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1096 @@ +# Bulgarian translation for gnome-maps. +# Copyright (C) 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ivailo Panamski , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-14 21:19+0200\n" +"PO-Revision-Date: 2016-02-14 21:19+0200\n" +"Last-Translator: \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Търсене на места по света" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"„Картите“ ви дават бърз достъп до места и карти по целия свят. Те ви " +"позволяват да намерите бързо мястото, което търсите, независимо дали е град, " +"улица или място на уречена срещал." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Картите използват базите от данни на OpenStreetMap. Те са събрани от стотици " +"хиляди хора от целия свят." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Може да търсите и по конкретен вид място, напр. „Кръчми край Мейн Стрийт, " +"Бостън“ или „Хотели близо до Александерплац, Берлин“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:86 ../src/mainWindow.js:400 +msgid "Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Програма за преглед на карти" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "карти;глобус;атлас;maps;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "последно видяно местоположение" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Координати на последно видяно местоположение." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Размери на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Размери (широчина и дължина)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Положение на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Положение на прозореца (X и Y)л" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Максимизиран прозорец" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Дали прозорецът на програмата е максимизиран" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Максимален брой на резултатите от търсене" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Максимален брой на резултати от търсенето по геокод." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Брой на последните места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Брой на последно посетени места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Брой на последни маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Брой на последно посетени маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Настройки за публикуване във Facebook на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последно използвани настройки за публикуване във Facebook на съобщение. " +"Възможните стойности са: „EVERYONE“ (до всички), „FRIENDS_OF_FRIENDS“ (до " +"приятелите и техните приятели), „ALL_FRIENDS“ (до приятелите) или „SELF“ (до " +"себе си)." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Настройки за публикуване във Foursquare на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последно използвани настройки за публикуване във Foursquare на посещение. " +"Възможните стойности са: „public“ (до всички), „followers“ (до " +"последователите) или „private“ (частно)." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Публикуване във Facebook на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да публикува посещението на някое място в регистрацията към " +"Facebook свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Публикуване във Twitter на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да „изчурулика“ посещението на някое място в регистрацията " +"към Twitter свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Потребителско име или е-поща за OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показва дали потребителят е влязъл, за да променя информация в OpenStreetMap." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Създаване на регистрация в OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Относно" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Видимост" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Публикуване във Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Публикуване в Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Отказ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Обявяване на посещение" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Всички" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Приятели и техни приятели" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Само приятели" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "За себе си" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Публично" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Последователи" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Частно" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Какво има тук?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Копиране на местоположението" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Изнасяне като изображение" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Добавяне към OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Изнасяне на изглед" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Изнасяне" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Включване на маршрут и маркери" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Общи" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показване на клавишните комбинации" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Търсене" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Изглед карти" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приближаване" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалечаване" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Превключване на ска̀лата" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Към текущото местоположение." + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Зареждане на слой" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Включване на услугата за намиране на местоположението ви" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Настройки на местоположението" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Текущо местоположение" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Избиране на вид карта" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Включване на любими" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Няма връзка с Интернет!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Картите се нуждаят от връзка с Интернет за да функционират правилно, но " +"такава няма." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Проверка на връзката и сървъра-посредник." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Добавяне към нов маршрут" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Отваряне с друга програма" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Маркиране като любим" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Обявяване на посещение" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Регистрация в OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Впишете се, за да редактирате картите" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогнете да подобрим картите, като\n" +"използвате регистрация в OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Е-поща" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Парола" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Вписване" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "Нямате регистрация?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Това не сработи. Опитайте отново, или посетете\n" +"OpenStreetMap, за да промените паролата си." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "Кодът за потвърждение не съвпада, опитайте отново." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Въведете кода за потвърждение" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Потвърждаване" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Вписани сте" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Регистрацията ви в OpenStreetMap акаунт активна" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Изход" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "None" +msgstr "Няма" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "Recently Used" +msgstr "Скоро ползвани" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Edit on OpenStreetMap" +msgstr "Редактиране в OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Cancel" +msgstr "Отказ" + +#: ../data/ui/osm-edit-dialog.ui.h:5 ../src/osmEditDialog.js:400 +msgid "Next" +msgstr "Следващ" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "Показване на повече информация" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Натиснете „Enter“ за търсене" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Отваряне на местоположение" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Отваряне" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Отваряна на слой" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "Включване на видимост" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Търсене на маршрут с GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намиране на още резултати" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:148 +msgid "Current location" +msgstr "Текущо местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Прецизност: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Приближаване за добавяне на местоположение!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Добре" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Структурата на плочката не може да се открие в папка" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Документът не може да бъде анализиран като XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Липсват задължителни атрибути" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Не може да се открие елемент на OpenStreetMap" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Път към локалната папка със структури" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Избор на регистрация" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Зареждане" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Избор на място" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Facebook. Изберете от списъка" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Foursquare. Изберете от списъка." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Обявяване на посещение на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Добавяне на незадължително съобщение при посещаване на „%s“." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:437 +msgid "An error has occurred" +msgstr "Възникна грешка" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "„%s“ не може да се намери в социалната услуга" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "На това местоположение няма какво да се обяви като посетено" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Идентификацията ви е изтекла, отворете „Регистрации в сайтове“, за да се " +"впишете и използвате тази регистрация" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "Маршрут от тук" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "Добавяне на цел" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "Маршрут до тук" + +#: ../src/contextMenu.js:182 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположението е добавено на картата, може да мин известно време преди да " +"се появи в резултатите от търсене." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Файловата система е само за четене" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Нямате права да записвате тук" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "Папката не съществува" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Не е зададено име на файла" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Изгледът не може да бъде изнесен" + +#: ../src/geoJSONSource.js:99 +msgid "invalid coordinate" +msgstr "грешни координати" + +#: ../src/geoJSONSource.js:143 ../src/geoJSONSource.js:183 +#: ../src/geoJSONSource.js:198 +msgid "parse error" +msgstr "грешка при анализ" + +#: ../src/geoJSONSource.js:177 +msgid "unknown geometry" +msgstr "неизвестна геометрия" + +#: ../src/geoJSONSource.js:211 +msgid "failed to load file" +msgstr "файлът не може да се зареди" + +#: ../src/mainWindow.js:348 +msgid "Failed to connect to location service" +msgstr "Грешка при свързването с услуги за местоположение" + +#: ../src/mainWindow.js:353 +msgid "Position not found" +msgstr "Позицията не е намерена" + +#: ../src/mainWindow.js:398 +msgid "translator-credits" +msgstr "" +"Ивайло Панамски \n" +"Александър Шопов \n" +"\n" +"Проектът за превод на GNOME има нужда от подкрепа.\n" +"Научете повече за нас на http://gnome.cult." +"bg\n" +"Докладвайте за грешки на http://gnome." +"cult.bg/bugs" + +#: ../src/mainWindow.js:401 +msgid "A map application for GNOME" +msgstr "Карти за GNOME" + +#: ../src/mapView.js:233 +msgid "File type is not supported" +msgstr "Този вид файлове не се поддържат" + +#: ../src/mapView.js:240 +msgid "Failed to open layer" +msgstr "Слоят не може да се отвори" + +#: ../src/mapView.js:276 +msgid "Failed to open GeoURI" +msgstr "Геоадресът не може да бъде отворен" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:439 +msgid "Incorrect user name or password" +msgstr "Грешно потребителско име или парола" + +#: ../src/osmConnection.js:441 +msgid "Success" +msgstr "Успех" + +#: ../src/osmConnection.js:443 +msgid "Bad request" +msgstr "Лоша заявка" + +#: ../src/osmConnection.js:445 +msgid "Object not found" +msgstr "Обектът не е намерен" + +#: ../src/osmConnection.js:447 +msgid "Conflict, someone else has just modified the object" +msgstr "Възникна проблем, някой друг тъкмо промени обекта" + +#: ../src/osmConnection.js:449 +msgid "Object has been deleted" +msgstr "Обектът беше изтрит" + +#: ../src/osmConnection.js:451 +msgid "Way or relation refers to non-existing children" +msgstr "Пътят или връзката се отнася към несъществуващ обект" + +#: ../src/osmEditDialog.js:98 +msgid "Name" +msgstr "Име" + +#: ../src/osmEditDialog.js:103 ../src/placeBubble.js:158 +msgid "Website" +msgstr "Сайт" + +#: ../src/osmEditDialog.js:108 +msgid "Phone" +msgstr "Телефон" + +#: ../src/osmEditDialog.js:114 ../src/placeBubble.js:164 +msgid "Wikipedia" +msgstr "Уикипедия" + +#: ../src/osmEditDialog.js:119 +msgid "Opening hours" +msgstr "Работно време" + +#: ../src/osmEditDialog.js:126 +msgid "Population" +msgstr "Население" + +#: ../src/osmEditDialog.js:131 +msgid "Wheelchair access" +msgstr "Инвалидни колички" + +#: ../src/osmEditDialog.js:134 ../src/osmEditDialog.js:143 +msgid "Yes" +msgstr "Да" + +#: ../src/osmEditDialog.js:135 ../src/osmEditDialog.js:144 +msgid "No" +msgstr "Не" + +#: ../src/osmEditDialog.js:136 +msgid "Limited" +msgstr "Непълно" + +#: ../src/osmEditDialog.js:137 +msgid "Designated" +msgstr "Обозначено" + +#: ../src/osmEditDialog.js:140 +msgid "Internet access" +msgstr "Достъп до Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:145 ../src/translations.js:341 +msgid "WLAN" +msgstr "Безжичен" + +#: ../src/osmEditDialog.js:146 +msgid "Wired" +msgstr "Етернет" + +#: ../src/osmEditDialog.js:147 +msgid "Terminal" +msgstr "Техни компютри" + +#: ../src/osmEditDialog.js:148 +msgid "Service" +msgstr "Обслужване" + +#: ../src/osmEditDialog.js:217 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавяне в OpenStreetMap" + +#: ../src/osmEditDialog.js:268 +msgid "Select Type" +msgstr "Избор на вид" + +#: ../src/osmEditDialog.js:386 +msgid "Done" +msgstr "Готово" + +#: ../src/placeBubble.js:127 +msgid "Population:" +msgstr "Население:" + +#: ../src/placeBubble.js:132 +msgid "Opening hours:" +msgstr "Работно време:" + +#: ../src/placeBubble.js:137 +msgid "Internet access:" +msgstr "Достъп до Интернет:" + +#: ../src/placeBubble.js:142 +msgid "Wheelchair access:" +msgstr "Инвалидни колички:" + +#: ../src/placeBubble.js:148 ../src/placeBubble.js:152 +msgid "Phone:" +msgstr "Телефон:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Геоадресът не може да бъде анализиран" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:177 ../src/translations.js:330 +msgid "yes" +msgstr "да" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:184 +msgid "limited" +msgstr "непълно" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:190 ../src/translations.js:336 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:197 +msgid "designated" +msgstr "обозначено" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Не е намерен маршрут." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "Неуспешна заявка за маршрут." + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Старт!" + +#: ../src/sendToDialog.js:173 +msgid "Failed to open URI" +msgstr "Адресът не може да се зареди" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:210 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Очаквано време: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "денонощно" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "от изгрев до залез" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "всеки ден" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "почивни дни" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "ваканции" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "не е отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "етернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "техни компютри" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "обслужване" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:228 +msgid "Unknown" +msgstr "Неизвестно" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Exact" +msgstr "Точно" + +#: ../src/utils.js:334 +#, javascript-format +msgid "%f h" +msgstr "%f ч." + +#: ../src/utils.js:336 +#, javascript-format +msgid "%f min" +msgstr "%f мин." + +#: ../src/utils.js:338 +#, javascript-format +msgid "%f s" +msgstr "%f сек." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:349 +#, javascript-format +msgid "%f km" +msgstr "%f км." + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:352 +#, javascript-format +msgid "%f m" +msgstr "%f м." + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:360 +#, javascript-format +msgid "%f mi" +msgstr "%f мили" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:363 +#, javascript-format +msgid "%f ft" +msgstr "%f фута" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 00000000..394c5f37 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,610 @@ +# Bosnian translation for bosnianuniversetranslation +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the bosnianuniversetranslation package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: bosnianuniversetranslation\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-02-26 20:01+0000\n" +"PO-Revision-Date: 2015-03-03 11:19+0100\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.4\n" +"X-Launchpad-Export-Date: 2015-02-15 06:20+0000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama cijelog svijeta.Omogućava vam da brzo " +"nađete mjesto koje tražite , tražeći grad ili ulicu , ili da pronađe mjesto " +"da sretnete priajtelja." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste kolaboraticnu OpenStreetMap bazu podataka, napravljenu od " +"strane stotinu hiljada ljudi širom svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to seje what words you can usi for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak tražiti određene vrste mjesta , kao što su \"pubovi u blizini " +"Main Street, Boston \" ili \"Hoteli u blizini Alexanderplatz u Berlinu\"." + +#. Translators: This is the program nami. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:362 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program karti" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Karte;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Veličina prozora(širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Pozicija prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Pozicija prozora(X i Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Maksimalno uvećan prozor" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Stanje maksimalno uvećanog prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Maksimalan broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalan broj rezultata pretrage od geocode pretrage." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Broj posljednjih mjesta za pohranu" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za pohranu." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Facebook. " +"Moguće vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Foursquare. " +"Moguće vrijednosti su: javni, sljedbenici ili privatne." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao post na Facebook račun " +"koji je povezan s Foursquare računa." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Twitter" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao tweet na Twitter račun " +"koji je povezan s Foursquare računom--" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Odustani" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Prijava" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svi" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo meni" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je ovdje?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite na lokaciji usluge za pronalaženje lokacija" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Postavke lokacija" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Izaberi tip mape" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Prebaci planer" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Preklopi omiljene" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Karte su offline!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Karte trebaju aktivnu internetsku vezu za ispravno funkcioniranje, ali nije " +"moguće naći ." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Provjerite Vašu konekcijju i proxy postavke." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Otvori sa drugom aplikacijom" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Označi kao omiljeni" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Prijavi se ovdje" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "pritisni Enter za pretragu" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "Ot_vori" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Put nije nađen." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikaži još rezultata" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Trenutna lokacija" + +#. To translators: %s can bje "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#. Translators: %s is the place nami that user wanted to check-in */ +#: ../src/checkIn.js:136 +msgid "Cannot find \"%s\" in the social service" +msgstr "Ne mogu naći \"%s\" u socijalnoj usluzi" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu naći pogodno mjesto za prijavu na ovoj lokaciji" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akreditivi su istekli, molim otvorite mrežne naloge da se prijavite i " +"ukljčite ovaj nalog" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Došlo je do greške:" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Odaberi nalog" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Učitava se" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Izaberi mjesto" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Facebook. Odaberite ga s liste." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Foursquare. Odaberite ga s liste." + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +msgid "Check in to %s" +msgstr "Prijavi na %s" + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +msgid "Write an optional message to check in to %s." +msgstr "Napiši opcionu poruku za prijavu na %s." + +#: ../src/mainWindow.js:310 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje na lokacijsku uslugu" + +#: ../src/mainWindow.js:315 +msgid "Position not found" +msgstr "Pozicija nije nađena" + +#: ../src/mainWindow.js:360 +msgid "translator-credits" +msgstr "" +" Hasanic Nadin https://launchpad.net/~nhasanic1\n" +" Merima Cisija https://launchpad.net/~cisijam" + +#: ../src/mainWindow.js:363 +msgid "A map application for GNOME" +msgstr "Program karta za GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can bje accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradijent). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "dizajnirano" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Put nije nađen." + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Zahtjev za put nije uspio." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/placeBubble.js:102 +msgid "Postal code: %s" +msgstr "Poštanski broj: %s" + +#: ../src/placeBubble.js:104 +msgid "Country code: %s" +msgstr "Kod države: %s" + +#: ../src/placeBubble.js:113 +msgid "Population: %s" +msgstr "Stanovništvo: %s" + +#: ../src/placeBubble.js:116 +msgid "Opening hours: %s" +msgstr "Radno vrijeme: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +msgid "Wheelchair access: %s" +msgstr "Pristup za invalidska kolica: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +msgid "Estimated time: %s" +msgstr "Procijenjeno vrijeme : %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "po satu" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "od izlaska do zalaska Sunca" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could bje substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can bje rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could bje modified by +#. * the translation. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can bje set by the +#. * translation as needed. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:355 +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:357 +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:359 +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +msgid "%f ft" +msgstr "%f ft" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 00000000..20c4357c --- /dev/null +++ b/po/ca.po @@ -0,0 +1,1913 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013, 2014, 2018. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017, 2018. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-06 19:44+0100\n" +"Last-Translator: Jordi Mas \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.4\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes us dóna un accés ràpid a mapes d'arreu del món. Us permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu cercar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "El projecte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliació" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivell d'ampliació" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipus de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipus de mapa a mostrar (carrer, aeri, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Mida de la finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplada i alçada)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posició de la finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de cerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de cerca en fer-la per geocodi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tothom" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Només amics" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Només jo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Públic" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidors" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Comenceu la ruta des d'aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Afegeix una parada intermèdia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Continueu la ruta fins aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Què hi ha aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Afegeix a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exporta vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Surt" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obre la capa de forma" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Obre la capa de forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel·la" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exporta com a imatge" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Quant al Mapes" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Allunya" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Commuta els preferits" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Afegeix a la ruta nova" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Comparteix la ubicació" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marca com a preferit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Registreu-vos aquí" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correu electrònic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasenya" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "No teniu un compte?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat a sobre" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Surt de la sessió" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrer" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de carrer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciutat" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Afegeix un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostra més informació" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'ordre de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Obre ubicació" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Envia a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Obre la capa de forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Obre" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels\n" +"seus respectius propietaris, quan es pugui aplicar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sortiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sortiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busos" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvies" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Transbordadors" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Ubicació actual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Amplia" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Mostra la versió del programa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignora la disponibilitat de la xarxa" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "S'està carregant" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-us a %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en aquesta ubicació" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No s'ha trobat res aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la cerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i desar allí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error d'anàlisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de cercar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Comença" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2019 Red Hat, Inc. i els altres autors del Mapes del GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dades del mapa de %s i col·laboradors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Caselles de mapa proporcionades per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Cerca proveïda per %s utilitzant %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Aquest tipus de fitxer no està suportat" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Èxit" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Lloc web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telèfon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Població" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (altura sobre el nivell del mar) d'un punt en metres." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designat" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Amb fil" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servei" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religió" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Lavabos" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afegeix a l'OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fet" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Ubicació sense nom" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Població:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religió:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Lavabos:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telèfon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designat" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lloc no trobat a l'OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "L'URL de l'OpenStreetMap no és vàlid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Les coordenades a l'URL no són vàlides" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "L'URL no és compatible" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si aquesta tarda massa temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Afegeix a través de la ubicació" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimeix a través de la ubicació" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Afegeix %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Obre amb %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "S'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris proporcionats per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Comença" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Arribeu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per aquesta ruta." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "No s'ha trobat un proveïdor per a aquesta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de la sortida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exacte" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continueu a %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continueu" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gireu a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Gireu a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gireu lleugerament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Gireu lleugerament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gireu pronunciadament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Gireu pronunciadament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gireu a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Gireu a la dreta" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gireu lleugerament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Gireu lleugerament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gireu pronunciadament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Gireu pronunciadament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "A la rotonda, agafeu la sortida %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "A la rotonda, agafeu la sortida a %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Agafeu la rotonda" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Agafeu l'ascensor i sortiu a %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Agafeu l'ascensor" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Canvieu de sentit cap a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Canvieu de sentit cap a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Canvieu de sentit cap a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Canvieu de sentit cap a la dreta" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Itinerari proporcionat per OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Afegiu una destinació" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Obre amb una altra aplicació" + +#~ msgid "Press enter to search" +#~ msgstr "Premeu retorn per cercar" + +#~ msgid "Quit" +#~ msgstr "Surt" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Obre la capa de forma…" + +#~ msgid "OK" +#~ msgstr "D'acord" + +#~ msgid "Load Map Layer" +#~ msgstr "Carrega la capa mapa" + +#~ msgid "Open Layer" +#~ msgstr "Obre la capa" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milles" + +#~ msgid "%f ft" +#~ msgstr "%f peus" + +#~ msgid "Position not found" +#~ msgstr "No s'ha trobat la posició." + +#~ msgid "Country code: %s" +#~ msgstr "Codi de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Població: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Accés amb cadira de rodes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "S'ha produït un error en analitzar el fitxer GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'última ubicació coneguda i la precisió" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'última ubicació coneguda (latitud i longitud en graus) i la precisió " +#~ "(en metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripció de l'última ubicació coneguda de l'usuari." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Si l'última ubicació coneguda l'ha definit manualment l'usuari." + +#~ msgid "I’m here!" +#~ msgstr "Sóc aquí!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" diff --git a/po/ca@valencia.po b/po/ca@valencia.po new file mode 100644 index 00000000..3dde2252 --- /dev/null +++ b/po/ca@valencia.po @@ -0,0 +1,1636 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013, 2014. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-10-03 16:33+0000\n" +"PO-Revision-Date: 2017-08-01 19:02+0200\n" +"Last-Translator: Xavi Ivars \n" +"Language-Team: Catalan \n" +"Language: ca-valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes vos dóna un accés ràpid a mapes d'arreu del món. Vos permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu buscar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "mapes;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Mida de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplària i alçària)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posició de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de busca en fer-la per geocodi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Quant a" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tothom" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Només amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Només jo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Públic" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidors" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Què hi ha ací?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exporta com imatge" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Afig a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exporta vista" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exporta" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Busca" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obri la capa de forma" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Carrega la capa mapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Commuta els favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Afig a la ruta nova" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Obri amb una altra aplicació" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marca com a favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Registreu-vos ací" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Correu electrònic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Contrasenya" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "No teniu un compte?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat damunt." + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verifica" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Ix de la sessió" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrer" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Número de carrer" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Ciutat" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipus" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Afig un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Mostra més informació" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Premeu retorn per buscar" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'orde de la ruta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Obri la ubicació" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Obri" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Obri la capa" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Itinerari proporcionat per OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels " +"seus respectius propietaris, quan es puga aplicar." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Eixiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Eixiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Mostra" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Busos" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Metro" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Transbordadors" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "Ubicació actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "D'acord" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "S'està carregant" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-vos a %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en esta ubicació" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Comenceu la ruta des d'ací" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Afegiu una destinació" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Continueu la ruta fins ací" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "No s'ha trobat res ací." + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la busca." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i guardar allí" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "error d'anàlisi" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de buscar la ruta." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Comença" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Este tipus de fitxer no està suportat" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per esta ruta." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Lloc web" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Telèfon" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Població" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (alçària sobre el nivell del mar) d'un punt en metres." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Sí" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "No" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Designat" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Amb fil" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Servei" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Religió" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "Lavabos" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "Nota" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afig a l'OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Fet" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Població:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Altitud:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Religió:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Lavabos:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Telèfon:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "designat" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si esta tarda massa temps" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "S'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "Arribeu" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "Comença" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de l'eixida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Exacte" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milles" + +#~ msgid "%f ft" +#~ msgstr "%f peus" + +#~ msgid "Position not found" +#~ msgstr "No s'ha trobat la posició." + +#~ msgid "Edit Location" +#~ msgstr "Edita ubicació" + +#~ msgid "Country code: %s" +#~ msgstr "Codi de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Població: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Accés amb cadira de rodes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "S'ha produït un error en analitzar el fitxer GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'última ubicació coneguda i la precisió" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'última ubicació coneguda (latitud i longitud en graus) i la precisió " +#~ "(en metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripció de l'última ubicació coneguda de l'usuari." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Si l'última ubicació coneguda l'ha definit manualment l'usuari." + +#~ msgid "I’m here!" +#~ msgstr "Sóc aquí!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..e880277d --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1831 @@ +# Czech translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marek Černocký , 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-11 11:03+0100\n" +"Last-Translator: Marek Černocký \n" +"Language-Team: čeština \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhledávejte místa na celém světě" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikace Mapy poskytuje rychlý přístup k mapám celého světa. Díky ní můžete " +"rychle najít místo, které hledáte, ať už podle názvu města nebo ulice, nebo " +"určit místo pro setkání s přáteli." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy využívají databázi OpenStreetMap, která vzniká díky spolupráci stovek " +"tisíců lidí z celého světa." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Můžete také hledat určité typy míst, jako „restaurace poblíž ulice Kobližná, " +"Brno“ nebo „hotely poblíž Alexanderplatz, Berlín“." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá mapová aplikace" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "mapa;mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožňuje vám zobrazit si na mapě své místo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Poslední zobrazené místo" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Souřadnice naposledy zobrazeného místa." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Přiblížení" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň přiblížení" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, který se má zobrazit(běžná, letecká, atd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (šířka a výška)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poloha okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poloha okna (X a Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stav maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximální počet výsledků hledání" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximální počet výsledků hledání z geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávných míst k uchování" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených míst, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávných tras k uchování" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených tras, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Facebook. Možné " +"hodnoty jsou: EVERYONE (všem), FRIENDS_OF_FRIENDS (přátelům přátel), " +"ALL_FRIENDS (všem přátelům) nebo SELF (mě samotnému)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Foursquare. " +"Možné hodnoty jsou: public (veřejné), followers (následovníci) nebo private " +"(soukromé)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Facebooku přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Twitteru přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Uživatelské jméno nebo e-mailová adresa na OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Dává najevo, jestli je uživatel přihlášen k úpravám dat OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Poslední použitý typ dopravy pro hledání trasy" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditelnost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Zveřejnit na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Zveřejnit na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušit" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Oznámit polo_hu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "všichni" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "přátelé přátel" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "jen přátelé" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "jen já" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "veřejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "příznivci" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "soukromé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtud" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Přidat průběžný cíl" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co je zde?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopírovat místo" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Přidat do OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazení" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovat" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Včetně tras a značek" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Obecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazit klávesové zkratky" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Hledat" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Vytisknout trasu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončit" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazení mapy" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Přiblížit" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddálit" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Přepnout měřítko" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Přepnout na panoramatický pohled" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Přepnout na letecký pohled" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otevřít uživatelskou vrstvu" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Otevřít uživatelskou vrstvu…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnout geolokační službu pro vyhledávání vaší polohy" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušit" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavení určování polohy" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavit účet na OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exportovat jako obrázek" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "O aplikaci Mapy" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Zvolit typ mapy" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Oddálit" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Přiblížit" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Přepnout oblíbené" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Tisk trasy" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapy jsou bez připojení!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby Mapy mohly fungovat, potřebují aktivní připojení k Internetu, ale žádné " +"nenalezly." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Zkontrolujte své připojení a nastavení proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Přidat novou trasu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Sdílet místo" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označit jako oblíbené" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Oznámit tuto polohu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet na OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Přihlaste se pro úpravy map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozte vylepšit mapy pomocí\n" +"účtu na OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Přihlásit se" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Nemáte účet?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Bohužel, ale nefunguje to. Zkuste to prosím znovu nebo navštivte\n" +"OpenStreetMap, abyste si znovu nastavili heslo." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Ověřovací kód nesouhlasí, zkuste to prosím znovu." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Zadejte ověřovací kód zobrazený výše" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Ověřit" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Jste přihlášen" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet na OpenStreetMap je aktivní." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Odhlásit se" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulice" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PSČ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Město" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "žádné" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Přidat pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentář" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Změny mapy boudou viditelné všude, kde se používají\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úpravit v OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Další" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Úpravy v OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Zobrazit více informací" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nebyly nalezeny žádné výsledky" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Posloupnost trasy můžete změnit přetažením" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otevřít místo" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopírovat" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Poslat do…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otevřít" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Přepnout viditelnost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Hledání trasy pomocí GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Jízdní řády pro veřejnou dopravu jsou poskytovány službami třetích stran.\n" +"GNOME nemůže nijak zaručit správnost cestovních rozvrhů a plánů.\n" +"Může se stát, že poskytovatel nenabízí všechny dostupné způsoby dopravy, " +"například národní\n" +"poskytovatel nebude nabízet mezinárodní leteckou dopravu a u místního " +"poskytovatele mohou\n" +"scházet celostátní vlaky apod.\n" +"Zobrazené názvy a značky považujte za registrované ochranné známky, všude " +"tam, kde tomu tak má být." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobrazit více výsledků" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrýt průběžné zastávky a informace" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazit průběžné zastávky a informace" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odjezd teď" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odjezd v" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Příjezd v" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobrazit" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "tramvaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "letadla" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Současné místo" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Přiblížit pro přidání místa!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Přiblížit" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Selhalo vyhledání struktury ve složce" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Selhalo zpracování dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Schází vyžadované atributy" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nelze najít prvek OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k místní struktuře složek s dlaždicemi" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Zobrazit verzi programu" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorovat dostupnost sítě" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výběr účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítá se" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výběr místa" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Facebook. Vyberte " +"prosím nějaké ze seznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Foursquare. Vyberte " +"prosím nějaké ze seznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámení polohy na místě %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napište volitně zprávu k oznámení polohy na místě %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Vyskytla se chyba" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Na sociální službě nelze nalézt „%s“" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Na této poloze se nepodařilo najít žádné vhodné místo pro oznámení polohy" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Přihlášení vypršelo. Otevřete prosím Účty on-line, přihlaste se tam a tím " +"účet zpřístupněte." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Zde nebylo nic nalezeno!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Místo bylo přidáno do mapy, ale vezměte na vědomí, že může chvíli trvat, než " +"se zobrazí na mapě a ve výsledcích hledání." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa na souřadnicích %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Souborový systém je jen ke čtení" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemáte oprávnění ukládat do tohoto umístění" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Složka neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Není zadán název souboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nelze exportovat zobrazení" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatné souřadnice" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba zpracování" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznámé geometrické údaje" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Požadavek na vyhledání cesty selhal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Nenalezena žádná cesta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Všechny soubory s vrstvami" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Selhalo připojení ke geolokační službě" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "Marek Černocký " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Mapová aplikace pro GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 - 2019 Red Hat, Inc. a autoři Map GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapová data od %s a přispěvatelů" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapové dlaždice poskytuje %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Hledání zprostředkuje %s pomocí %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Typ souboru není podporován" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Selhalo otevření vrstvy" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Selhalo otevření adresy GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávné uživatelské jméno nebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspěšné" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Chybný požadavek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nebyl nalezen" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Došlo ke střetu, někdo jiný objekt právě upravil" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt byl smazán" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta nebo vztah odkazuje na neexistujícího potomka" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Název" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiální název. Typicky to, co bývá na informačních tabulích." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Stránky WWW" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiální webové stránky. Snažte se použít co nejzákladnější tvar, tj. " +"http://www.priklad.cz namísto http://www.priklad.cz/index.html" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonní číslo. Používejte mezinárodní formát začínající znakem +. Dbejte " +"místních zákonů na ochranu soukromí, zejména u soukromách telefonních čísel." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by měl obsahovat rovněž kód jazyka a název článku, jako „cs:" +"Název článku“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Otevírací doba" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Nápověda k formátu viz odkaz v popisku." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populace" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Nadmořská výška" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmořská výška bodu v metrech" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Bezbariérový přístup" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "ano" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "částečně" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "výslovně ano" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Přístup k Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "drátový" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "terminál" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "služba" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Náboženství" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "animizmus" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "bahaizmus" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "buddhizmus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "kaodaizmus" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "křesťanství" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "konfuciánství" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "hinduizmus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "džinizmus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "judaizmus" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "islám" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "více náboženství" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "pohanství" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "pastafariánství" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "scientologie" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "šintoizmus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "sikhizmus" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "spiritualizmus" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "taoizmus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "unitární univerzalizmus" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "jezídizmus" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "zarathuštrizmus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informace používané k informování ostatních autorů map o věcech, které " +"nejsou u prvku zcela zřejmé, o záměrech autora při vytváření prvku nebo k " +"názorům na další vylepšování." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Přidání do OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Vybrat typ" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Místo bez názvu" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populace:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Nadmořská výška:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Otevírací doba:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Přístup k Internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Náboženství:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalety:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Bezbariérový přístup:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Selhalo zpracování adresy GeoURI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ano" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "částečně" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "výslovně ano" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Místo nebylo v OpenStreetMap nalezeno" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Adresa URL do OpenStreetMap není platná" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Souřadnice v adrese URL nejsou platné" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Tato adreasa URL není podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítají se mapové dlaždice pro tisk" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pokud to trvá příliš dlouho, můžete tisk zrušit" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Zrušit tisk" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Přidat podle místa" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odebrat podle místa" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Otočit trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Přidat %s do %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Selhalo otevření adresy URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otevřít pomocí %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "selhalo načtení souboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Plán cesty poskytl %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start v %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chůze %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Příjezd do %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Příjezd" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazit pokyny pro pěší" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrýt pokyny pro pěší" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načíst dřívější variantu" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načíst pozdější variantu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nebyla nalezena žádná dřívější varianta." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nebyla nalezena žádná pozdější varianta." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d. %B" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Pro tuto trasu nebyly nalezeny žádné časové údaje." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Pro tuto trasu nebyl nalezen žádný poskytovatel údajů." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuta" +msgstr[1] "%d minuty" +msgstr[2] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hodina" +msgstr[1] "%d hodiny" +msgstr[2] "%d hodin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d∶%02d hod" +msgstr[1] "%d∶%02d hod" +msgstr[2] "%d∶%02d hod" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s – %s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "24 hodin denně" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "za denního světla" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "každý den" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "státní svátky" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školní prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "zavřeno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drátové" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminál" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "služba" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Přesnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "neznámá" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "velmi přesná" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zahněte doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Zahněte doleva" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Zahněte mírně doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Zahněte mírně doleva" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zahněte ostře doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Zahněte ostře doleva" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zahněte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Zahněte doprava" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Zahněte mírně doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Zahněte mírně doprava" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zahněte ostře doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Zahněte ostře doprava" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovém objezdu použijte výjezd %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovém objezdu použijte výjezd směr %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Najeďte na kruhový objezd" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použijte výtah a vystupte v %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Použijte výtah" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Proveďte otočku doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Proveďte otočku doleva" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Proveďte otočku doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Proveďte otočku doprava" diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..35b264dc --- /dev/null +++ b/po/da.po @@ -0,0 +1,1895 @@ +# Danish translation for gnome-maps. +# Copyright (C) 2013, 2016-2018 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Kris Thomsen , 2013. +# Kenneth Nielsen , 2014. +# scootergrisen, 2015, 2019. +# Ask Hjorth Larsen , 2015, 16, 17, 18. +# Alan Mortensen , 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-16 13:54+0100\n" +"Last-Translator: Alan Mortensen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find steder i hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kort giver dig hurtig adgang til kort over hele verden. Det giver dig " +"mulighed for hurtigt at finde stedet du leder efter ved at søge efter en by " +"eller gade, eller et sted hvor du kan mødes med en ven." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kort bruger den kollaborative OpenStreetMap-database, skabt af flere " +"hundrede tusinde mennesker over hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan endda søge efter bestemte typer af placeringer, såsom “Pubs near Main " +"Street, Boston” eller “Hotels near Alexanderplatz, Berlin” (Dansk endnu ikke " +"understøttet)." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Kort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et simpelt kortprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillader at din placering vises på kortet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sidst viste sted" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sidst viste sted." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Korttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen af kort som skal vises (vejkort, luftfoto osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vinduesstørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vinduesstørrelse (bredde og højde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduesplacering" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduesplacering (X og Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindue maksimeret" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimeringstilstand for vindue" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimum antal af søgeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum antal af søgeresultater fra geokode-søgning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal seneste steder, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senest besøgte steder, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal seneste ruter, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senest besøgte ruter, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Facebook. Mulige " +"værdier er: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS og SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Foursquare. " +"Mulige værdier er: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som opdatering på Facebook-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som tweet i Twitter-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brugernavn eller e-mail-adresse på OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Angiver om brugeren er logget ind til at kunne redigere data i OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sidst brugte transporttype til routing" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighed" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annullér" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "T_jek ind" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venners venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Kun venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Kun mig" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute herfra" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tilføj mellemliggende destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute hertil" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hvad er der her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiér placering" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportér visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportér" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkludér rute og markører" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis genveje" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søg" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afslut" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortvisning" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom ind" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ud" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå skala til/fra" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skift til gadevisning" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skift til luftvisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åbn formlag" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Åbn formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå lokaliseringstjenster til for at bestemme din placering" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annullér" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Lokaliseringsindstillinger" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Opret OpenStreetMap-konto" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksportér som billede" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Om Kort" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Vælg korttype" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zoom ud" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zoom ind" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Slå foretrukne til/fra" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Udskriv rute" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Kort er offline!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kort skal bruge en aktiv internetforbindelse for at fungere korrekt, men der " +"er ingen." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Kontrollér dine indstillinger for forbindelse og proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Føj til ny rute" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Del placering" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markér som foretrukken" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Tjek ind her" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Log ind for at redigere kort" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjælp med at forbedre kortet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Adgangskode" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Log ind" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Har du ikke en konto?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager - det fungerede ikke. Prøv venligst igen eller besøg\n" +"OpenStreetMap for at nulstille din adgangskode." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Godkendelseskoden var ikke korrekt. Prøv venligst igen." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Indtast godkendelseskoden vist ovenfor" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Godkend" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Logget ind" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Log ud" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gade" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +# Velsagtens by, postkode eller senest brugte jf. omkringstående +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tilføj felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kortændringer vil være synlige på alle kort, der\n" +"bruger data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senest brugte" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Vis flere oplysninger" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater fundet" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Træk for at ændre rækkefølge for ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åbn placering" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiér" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Åbn formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åbn" + +# velsagtens af lag eller rute +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå synlighed til/fra" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøgning med GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rejseplaner for offentlig transport tilbydes af tredjepartstjenester.\n" +"\n" +"GNOME kan ikke garantere, at de viste ruter og køreplaner er korrekte.\n" +"Bemærk, at nogle udbydere måske ikke medtager alle mulige former for " +"transport,\n" +"f.eks. har en national udbyder måske ikke fly med, og en lokal udbyder har " +"måske\n" +"ikke regionale tog med.\n" +"Viste navne og mærker skal betragtes som registrerede varemærker, når dette " +"er muligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul mellemliggende stop og oplysninger" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis mellemliggende stop og oplysninger" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Tag afsted nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Afgangstidspunkt" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankomsttidspunkt" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvogne" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Færger" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Nuværende placering" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom ind for at tilføje sted!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom ind" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kunne ikke finde flisestruktur i mappe" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kunne ikke fortolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunne ikke finde OSM-element" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal flisemappestruktur" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Vis programmets version" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorér hvorvidt netværket er tilgængeligt" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Vælg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Indlæser" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Vælg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Facebook. Vælg " +"venligst et fra listen." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Foursquare. Vælg " +"venligst et fra listen." + +# Undgå problemer med forholdsord +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Tjek ind: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv valgfrit en besked for at tjekke ind her: %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Der opstod en fejl" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan ikke finde “%s” på den sociale tjeneste" + +# ?? +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan ikke finde et passende sted at tjekke ind her" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiverne er udløbet; åbn venligst Onlinekonti for at logge ind og slå " +"denne konto til" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Intet fundet her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Stedet blev føjet til kortet. Bemærk at det kan tage et stykke tid, før det " +"vises på kortet og i søgeresultaterne." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kort på %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke tilladelse til at gemme der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappen findes ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Intet filnavn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "fortolkerfejl" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukendt geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Ruteforespørgsel fejlede." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ingen rute fundet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Kunne ikke forbinde til lokaliseringstjeneste" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Kris Thomsen\n" +"Kenneth Nielsen\n" +"scootergrisen\n" +"Ask Hjorth Larsen\n" +"Alan Mortensen\n" +"\n" +"Dansk-gruppen\n" +"Websted http://dansk-gruppen.dk\n" +"E-mail " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Et kortprogram til GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ophavsret © 2011 – 2019 Red Hat, Inc. og udviklerne af GNOME Kort" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortdata af %s og bidragydere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortfelter leveret af %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søgning leveret af %s med %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Filtypen understøttes ikke" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Kunne ikke åbne lag" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Kunne ikke åbne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Forkert brugernavn eller adgangskode" + +# Succes er et lidt stærkere ord på dansk end på engelsk. Har vi noget mere passende? +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørgsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt ikke fundet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt! En anden har netop ændret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er blevet slettet" + +# A way is an ordered list of nodes which normally also has at least one tag or is included within a Relation +# +# http://wiki.openstreetmap.org/wiki/Way +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way eller relation refererer til underelementer som ikke findes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officielle navn. Dette er typisk hvad der står på et skilt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webside" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officielle webside. Prøv at bruge den mest grundlæggende form, dvs. " +"http://eksempel.dk i stedet for http://eksempel.dk/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Brug det internationale format som begynder med tegnet +. Vær " +"opmærksom på lokale love om privatlivsbeskyttelse, især for private numre." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet bør inkludere sprogkoden og artiklens overskrift, f.eks. “da:" +"Artikeloverskrift”" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Åbningstider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se linket i etiketten for at få hjælp om format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Befolkning" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Højde" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Højde (over havoverfladen) af et punkt i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rullestolsadgang" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrænset" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Handicap" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetadgang" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådløs" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kabel" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitær universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toiletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information der bruges til at give andre kortbrugere oplysninger om et " +"element som ikke er åbenlyse, forfatterens hensigt med at oprette det, eller " +"fif om yderligere forbedringer." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Vælg type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Færdig" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unavngivet placering" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Befolkning:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Højde:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Åbningstider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetadgang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toiletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rullestolsadgang:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Fortolkning af Geo-URI mislykkedes" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrænset" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nej" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "handicap" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Placering ikke fundet i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL er ikke gyldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinater i URL er ikke gyldige" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL understøttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Indlæser kortfliser til udskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan afbryde udskriften hvis dette varer for længe" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afbryd udskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tilføj via sted" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern via sted" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vend ruten om" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tilføj %s til %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Kunne ikke åbne URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Åbn med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "kunne ikke indlæse fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Anslået tid: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rejseplaner leveret af %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starttidspunkt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankomst %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Ankomst" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis gangrute" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul gangrute" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Indlæs tidligere alternative ruter" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Indlæs senere alternative ruter" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer fundet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer fundet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Ingen køreplan fundet for denne rute." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Ingen udbyder fundet for denne rute." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d time" +msgstr[1] "%d timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d time" +msgstr[1] "%d:%02d timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "hele døgnet" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "fra solopgang til solnedgang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "helligdage" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skoleferier" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# hvorfor ikke closed? +#: src/translations.js:264 +msgid "not open" +msgstr "ikke åbent" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kabel" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjeneste" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøjagtighed: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Ukendt" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Præcis" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f t" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s fod" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsæt på %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Fortsæt" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Drej til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Drej til venstre" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Drej lidt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Drej lidt til venstre" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Drej skarpt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Drej skarpt til venstre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Drej til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Drej til højre" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Drej lidt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Drej lidt til højre" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Drej skarpt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Drej skarpt til højre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Tag %s. vej i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Drej fra mod %s i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Kør ind i rundkørslen" + +# . er for at markere ordenstal og ikke et afsluttende punktum +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tag elevatoren og stå af på %s." + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Tag elevatoren" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Lav en u-vending til venstre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Lav en u-vending til venstre" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Lav en u-vending til højre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Lav en u-vending til højre" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Rutesøgning med OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Tilføj destination" + +#~ msgid "Open with another application" +#~ msgstr "Åbn med andet program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryk enter for at søge" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Afslut" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Åbn formlag …" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Indlæs kortlag" + +#~ msgid "Open Layer" +#~ msgstr "Åbn lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mile" + +#~ msgid "%f ft" +#~ msgstr "%f fod" + +#~ msgid "Country code: %s" +#~ msgstr "Landekode: %s" diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..f0c3e11a --- /dev/null +++ b/po/de.po @@ -0,0 +1,1868 @@ +# German translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Tobias Endrigkeit , 2013. +# Benjamin Steinwender , 2014. +# Christian Kirbach , 2014. +# Wolfgang Stöggl , 2014-2015, 2017. +# Mario Blättermann , 2015-2018. +# Bernd Homuth , 2015. +# Paul Seyfert , 2016. +# Tim Sabsch , 2018-2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-03-16 22:04+0000\n" +"PO-Revision-Date: 2020-03-18 01:46+0100\n" +"Last-Translator: Christian Kirbach \n" +"Language-Team: Deutsch \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karten" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Orte in der ganzen Welt finden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"»Karten« gibt Ihnen einen schnellen Zugang zu Karten aus der ganzen Welt. Es " +"erlaubt Ihnen, Orte schnell zu finden, indem Sie eine Stadt oder eine Straße " +"suchen, oder einen Ort zu finden, um einen Freund zu treffen." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"»Karten« nutzt die gemeinschaftliche OpenStreetMap-Datenbank, die von " +"hunderttausenden Menschen aus der ganzen Welt erstellt worden ist." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Suchen Sie nach bestimmten Arten von Orten, wie »Kneipen in der Nähe von " +"Main Street, Boston« oder »Hotels in der Nähe vom Alexanderplatz, Berlin«." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Das GNOME-Projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Karten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Eine einfache Karten-Anwendung" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ermöglicht die Anzeige Ihres Ortes in der Karte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Zuletzt betrachteter Ort" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinaten des letzten betrachteten Orts." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Ansichtsgröße" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Vergrößerungsstufe" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartentyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Die Art der anzuzeigenden Karte (Straße, Luftbildansicht, usw.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenstergröße" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenstergröße (Breite und Höhe)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fensterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fensterposition (X und Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenster maximiert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximierungszustand des Fensters" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximale Anzahl an Suchergebnissen" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximale Anzahl an Suchergebnissen aus der Geocode-Suche." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Facebook-Check-in" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Facebook-Check-in. " +"Mögliche Werte sind: EVERYONE (jeder), FRIENDS_OF_FRIENDS (Freunde von " +"Freunden), ALL_FRIENDS (alle Freunde) oder SELF (selbst)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Foursquare-Check-in" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Foursquare-Check-in. " +"Mögliche Werte sind: Öffentlich, Anhänger oder Privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Facebook-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Twitter-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Benutzername oder E-Mail-Adresse für OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Zeigt an, dass sich der Benutzer angemeldet hat, um OpenStreetMap-Daten " +"bearbeiten zu können." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Für die Route zuletzt benutzte Beförderungsart" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Auf Facebook veröffentlichen" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Auf Twitter veröffentlichen" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Abbrechen" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Ein_checken" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Jeder" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Freunde von Freunden" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur Freunde" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur ich" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Öffentlich" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Anhänger" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route von hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zwischenziel hinzufügen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route hierher" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Was ist hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Ort kopieren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ansicht exportieren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportieren" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Route und Markierungen einbeziehen" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allgemein" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tastenkürzel anzeigen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Suchen" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Verlassen" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartenansicht" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Vergrößern" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Verkleinern" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Maßstab umschalten" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Zur Straßenansicht wechseln" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Zur Luftbildansicht wechseln" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Formebene öffnen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Formebene öffnen …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Schalten Sie die Ortungsdienste ein, um Ihren Ort zu bestimmen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Abbrechen" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Einstellungen der Ortungsdienste" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-Konto einrichten" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Als Bild exportieren" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Tasten_kürzel" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Info zu Karten" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Wählen Sie den Kartentyp" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Verkleinern" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Vergrößern" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Favoriten umschalten" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Route drucken" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Karten ist vom Internet getrennt!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karten erfordert eine bestehende Internetverbindung, um richtig arbeiten zu " +"können. Es besteht aber keine." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Prüfen Sie Ihre Verbindung und die Proxy-Einstellungen." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Zu einer neuen Route hinzufügen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Ort teilen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Als bevorzugt markieren" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Hier einchecken" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-Konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Anmelden, um Karten bearbeiten zu " +"können" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helfen Sie bei der Verbesserung der Karte,\n" +"indem Sie ein OpenStreetMap-Konto nutzen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-Mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passwort" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Anmelden" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Sie haben kein Konto?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Das hat leider nicht funktioniert. Bitte versuchen Sie es erneut, oder " +"besuchen Sie\n" +"OpenStreetMap, um Ihr Passwort zurückzusetzen." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "" +"Die Verifizierungscodes stimmen nicht überein, bitte versuchen Sie es erneut." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Geben Sie den oben angezeigten Verifizierungscode ein" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifizieren" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Angemeldet" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ihr OpenStreetMap-Konto ist aktiv." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Abmelden" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straße" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hausnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postleitzahl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Stadt" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Keine" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Feld hinzufügen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartenänderungen werden in allen Karten sichtbar, die\n" +"Daten von OpenStreetMap verwenden." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Zuletzt verwendet" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Nächste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Weitere Informationen anzeigen" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Keine Ergebnisse gefunden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ziehen, um die Reihenfolge der Routenziele zu ändern" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ort öffnen" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopieren" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Senden an …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Formebene öffnen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ö_ffnen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Sichtbarkeit umschalten" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routenplanung von GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Die Reisedaten für öffentliche Verkehrsmittel werden von Drittanbietern\n" +"bereitgestellt.\n" +"GNOME kann für die Korrektheit der Routen und angezeigten Fahrzeiten\n" +"nicht garantieren. Beachten Sie, dass nicht alle Anbieter Informationen für " +"alle\n" +"Transportmittel beinhalten. Zum Beispiel könnte ein nationaler Anbieter " +"keine\n" +"Fluglinien beinhalten, oder ein lokaler Anbieter keine Regionalzüge.\n" +"Die angezeigten Namen und Marken sind als eingetragene Warenzeichen zu " +"betrachten, sofern anwendbar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Weitere Ergebnisse anzeigen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Zwischenstationen und Informationen verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zwischenstationen und Informationen anzeigen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Jetzt starten" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Abfahrt um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankunft um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Anzeigen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busse" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Straßenbahnen" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Züge" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "U-Bahn" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Fähren" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flugzeuge" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktueller Ort" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Vergrößern, um einen Ort hinzufügen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Vergrößern" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Es konnte keine Kachel-Struktur im Ordner gefunden werden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-Dokument konnte nicht ausgewertet werden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Erforderliche Attribute fehlen" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-Element kann nicht gefunden werden" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Pfad zu einer lokalen Kachel-Ordnerstruktur" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Die Versionsnummer des Programms anzeigen" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Verfügbarkeit des Netzwerks ignorieren" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Wählen Sie ein Konto aus" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Wird geladen" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Wählen Sie einen Ort" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Facebook finden. " +"Bitte wählen Sie einen aus der Liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Foursquare " +"finden. Bitte wählen Sie einen aus der Liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Bei %s einchecken" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Schreiben Sie eine optionale Nachricht, um bei %s einzuchecken." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Ein Fehler ist aufgetreten" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "»%s« konnte im sozialen Netzwerk nicht gefunden werden" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Für einen Check-in konnte an diesem Ort kein geeigneter Platz gefunden werden" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Die Anmeldedaten sind abgelaufen. Bitte öffnen Sie Online-Konten, um sich " +"anzumelden und das Konto zu aktivieren." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Hier wurde nichts gefunden!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Der Ort wurde zur Karte hinzugefügt. Beachten Sie, dass es eine Zeit dauern " +"kann, bis er in der Karte und in den Suchergebnissen erscheint." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karten auf %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dateisystem ist schreibgeschützt" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Sie haben nicht die nötigen Rechte zum Speichern" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Der Ordner existiert nicht" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Kein Dateiname angegeben" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ansicht kann nicht exportiert werden" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "Ungültige Koordinaten" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "Verarbeitungsfehler" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "Unbekannte Geometrie" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Routenanfrage schlug fehl." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Keine Route gefunden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Alle Ebenendateien" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Es konnte keine Verbindung zum Ortungsdienst hergestellt werden" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Christian Kirbach \n" +"Tobias Endrigkeit \n" +"Benjamin Steinwender \n" +"Mario Blättermann \n" +"Bernd Homuth \n" +"Paul Seyfert \n" +"Tim Sabsch " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Eine Karten-Anwendung für GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. und die Autoren von GNOME Karten" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartendaten bereitgestellt von %s und weiteren Mitwirkenden" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartenausschnitte bereitgestellt von %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Suche bereitgestellt von %s unter Verwendung von %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dateityp wird nicht unterstützt" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Ebene konnte nicht geöffnet werden" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Geo-Adresse konnte nicht geöffnet werden" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Benutzername oder Passwort falsch" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Erfolg" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Fehlerhafte Anfrage" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nicht gefunden" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, jemand anderes hat gerade das Objekt geändert" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt wurde gelöscht" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Weg oder Bezug verweist auf nicht existierende Unterobjekte" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" +"Der offizielle Name, der üblicherweise auf dem Ortseingangsschild erscheint." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Internet-Seite" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Die offizielle Webseite. Verwenden Sie möglichst die Grundform der Adresse, " +"zum Beispiel http://example.com statt http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Die Telefonnummer im internationalen Format, beginnend mit einem Plus-" +"Zeichen. Denken Sie an den Schutz der Privatsphäre, insbesondere für private " +"Telefonnummern." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Das verwendete Format sollte den Sprachcode und den Artikel enthalten, zum " +"Beispiel »de:Titel des Artikels«." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Öffnungszeiten" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Öffnen Sie den Verweis in der Beschriftung für Hilfe zur Formatierung." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Bevölkerung" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Höhe" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höhe eines Punktes über dem Meeresspiegel in Meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Barrierefreier Zugang" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nein" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrenzt" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Geeignet" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetzugang" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Funknetzwerk" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kabelgebunden" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismus" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaitum" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhismus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismus" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christentum" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuzianismus" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judentum" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Mehrere Religionen" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heidentum" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismus" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoismus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismus" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualismus" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Daoismus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarismus" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jesidismus" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zarathustrismus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toiletten" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Notiz" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Notiz, die anderen Kartennutzern nicht-offensichtliche Hinweise zu einem " +"Element, die Absicht des Autors bei der Erstellung, oder Hinweise zur " +"weiteren Verbesserung zur Verfügung stellt." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Typ wählen" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Abgeschlossen" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unbenannter Ort" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Bevölkerung:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Höhe:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Öffnungszeiten:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetzugang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toiletten:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Barrierefreier Zugang:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Geo-Adresse konnte nicht gelesen werden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrenzt" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nein" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "geeignet" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Ort wurde nicht in OpenStreetMap gefunden" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-Adresse ist ungültig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaten in der Adresse sind ungültig" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Adresse wird nicht unterstützt" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Von %s nach %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Kartenausschnitte zum Drucken werden geladen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Sie können den Druck abbrechen, wenn dies zu lange dauert" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Drucken abbrechen" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zwischenstopp hinzufügen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Zwischenstopp entfernen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route umkehren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s zu %s hinzufügen" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Adresse konnte nicht geöffnet werden" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Öffnen mit %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "Laden der Datei ist fehlgeschlagen" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschätzte Zeit: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Reiseplan bereitgestellt von %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Abfahrt in %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Abfahrt" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Fußweg %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankunft in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Ankunft" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Anweisungen für den Fußweg anzeigen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Anweisungen für den Fußweg verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Frühere Alternativen laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Spätere Alternativen laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Keine früheren Alternativen gefunden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Keine späteren Alternativen gefunden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Für diese Route wurden keine Fahrplandaten gefunden." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Für diese Route wurden kein Anbieter gefunden." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d Minute" +msgstr[1] "%d Minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d Stunde" +msgstr[1] "%d Stunden" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%0d Stunde" +msgstr[1] "%d:%0d Stunden" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "jederzeit" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "von Sonnenaufgang bis Sonnenuntergang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s und %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "Jeden Tag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "gesetzliche Feiertage" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "Schulferien" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "geschlossen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "Kabelgebunden" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "Terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "Dienst" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Genauigkeit: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Unbekannt" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Genau" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsetzen auf %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Fortsetzen" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Halb links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Halb links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Scharf links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Scharf links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Halb rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Halb rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Scharf rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Scharf rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Im Kreisverkehr die Ausfahrt %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Im Kreisverkehr die Ausfahrt auf %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "In den Kreisverkehr fahren" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Den Aufzug nehmen und bei %s aussteigen" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Den Aufzug nehmen" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Eine Kehrtwende nach links auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Eine Kehrtwende nach links machen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Eine Kehrtwende nach rechts auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Eine Kehrtwende nach rechts machen" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routenplanung von OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Ziel hinzufügen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mit einer anderen Anwendung öffnen" + +#~ msgid "Press enter to search" +#~ msgstr "Drücken Sie zum Suchen die Eingabetaste" + +#~ msgid "Quit" +#~ msgstr "Verlassen" diff --git a/po/el.po b/po/el.po new file mode 100644 index 00000000..8a8970b0 --- /dev/null +++ b/po/el.po @@ -0,0 +1,1954 @@ +# Greek translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Dimitris Spingos , 2013. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014, 2015. +# Efstathios Iosifidis , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-02-28 21:24+0000\n" +"PO-Revision-Date: 2020-03-07 18:35+0200\n" +"Last-Translator: Efstathios Iosifidis \n" +"Language-Team: Greek, Modern (1453-) \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Χάρτες GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Βρείτε μέρη από όλο τον κόσμο" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Η εφαρμογή Χάρτες, σας παρέχει μια γρήγορη πρόσβαση σε χάρτες από όλο τον " +"κόσμο. Σας επιτρέπει να βρείτε γρήγορα μια τοποθεσία αναζητώντας είτε μια " +"πόλη είτε μια οδό, ή μπορείτε να εντοπίσετε μια τοποθεσία για να συναντήσετε " +"ένα φίλο." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Η εφαρμογή Χάρτες, χρησιμοποιεί την βάση δεδομένων OpenStreetMap, που έχει " +"φτιαχτεί από χιλιάδες άτομα σε όλο τον κόσμο." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Μπορείτε ακόμη και να κάνετε αναζήτηση για καθορισμένους τύπους τοποθεσιών, " +"όπως “Λέσχες κοντά στην Σταδίου, Αθήνα” ή “Ξενοδοχεία κοντά στην Ομόνοια, " +"Αθήνα”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Το έργο GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Χάρτες" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Μια απλή εφαρμογή χαρτών" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Χάρτες;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Επιτρέπει την τοποθεσία σας να εμφανιστεί στον χάρτη." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "τελευταία τοποθεσία που προβλήθηκε" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Συντεταγμένες τελευταίας τοποθεσίας που προβλήθηκε." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "εστίαση" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Επίπεδο εστίασης" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Τύπος χάρτη" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Ο τύπος του χάρτη για προβολή (δρόμος, εναέριος κλπ.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Μέγεθος παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Μέγεθος παραθύρου (πλάτος και ύψος)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Θέση παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Θέση παραθύρου (Χ και Υ)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Μεγιστοποιημένο παράθυρο" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Κατάσταση μεγιστοποίησης παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Μέγιστος αριθμός αποτελεσμάτων αναζήτησης" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" +"Μέχιστος αριθμός αποτελεσμάτων αναζήτησης από την αναζήτηση στο geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Αριθμός πρόσφατων τοποθεσιών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Αριθμός τοποθεσιών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Αριθμός πρόσφατων διαδρομών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Αριθμός διαδρομών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Ρυθμίσεις ιδιωτικότητας ελέγχου εισόδου στο Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου. Δυνατές " +"τιμές είναι: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ή SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο " +"Foursquare. Δυνατές τιμές είναι: public, followers ή private.." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Έλεγχος εισόδου του Foursquare στην αναμετάδοση του Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"αποστολή στον λογαριασμό Facebook συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Έλεγχος εισόδου στην αναμετάδοση του Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"τιτίβισμα στον λογαριασμό Twitter συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου του OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Υποδεικνύει αν ο χρήστης έχει συνδεθεί για να επεξεργαστεί τα δεδομένα του " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Τελευταία χρησιμοποιημένος τύπος μεταφορικών μέσων για δρομολόγια" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ορατότητα" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Δημοσίευση στο Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Δημοσίευση στο Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ά_κυρο" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Όλοι" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Φίλοι των φίλων" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Μόνο φίλοι" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Μόνο εγώ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Δημόσιο" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Ακόλουθοι" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Προσωπικό" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Διαδρομή από εδώ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Προσθήκη ενδιάμεσου προορισμού" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Διαδρομή προς εδώ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Τι είναι εδώ;" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Αντιγραφή τοποθεσίας" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Προβολή εξαγωγής" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Ε_ξαγωγή" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Συμπεριέλαβε διαδρομή και δείκτες" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Γενικά" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Εμφάνιση συντομεύσεων" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Αναζήτηση" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Έξοδος" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Προβολή χάρτη" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Εναλλαγή εστίασης" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Εναλλαγή σε προβολή δρόμου" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Εναλλαγή σε εναέρια προβολή" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Άνοιγμα στρώσης σχήματος…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ενεργοποίηση υπηρεσιών τοποθεσίας για να βρείτε την τοποθεσία σας" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Ακύρωση" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ρυθμίσεις τοποθεσίας" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Ρύθμιση λογαριασμού OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Εξαγωγή ως εικόνα" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Συντομεύσεις _πληκτρολογίου" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Περί του Χάρτες" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Επιλογή τύπου χάρτη" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Εναλλαγή αγαπημένων" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Οι Χάρτες είναι εκτός σύνδεσης!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Η εφαρμογή Χάρτες χρειάζεται μια ενεργή σύνδεση στο διαδίκτυο ώστε να " +"λειτουργήσει σωστά, αλλά δε βρέθηκε κάποια." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Ελέγξτε τις ρυθμίσεις της σύνδεσης και του διαμεσολαβητή σας." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Προσθήκη σε νέα διαδρομή" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Διαμοιρασμός τοποθεσίας" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Επισήμανση ως αγαπημένο" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in εδώ" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Λογαριασμός OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Συνδεθείτε για να επεξεργαστείτε τους " +"χάρτες" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Βοηθήστε να βελτιώσουμε τον χάρτη, χρησιμοποιώντας\n" +"ένα λογαριασμό OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Κωδικός πρόσβασης" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Σύνδεση" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Δεν έχετε λογαριασμό;" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Συγγνώμη, κάτι δε λειτούργησε σωστά. Παρακαλούμε δοκιμάστε ξανά, ή " +"επισκεφθείτε το\n" +"OpenStreetMap για να επαναφέρετε τον κωδικό πρόσβασης σας." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Δεν ταιριάζει ο κωδικός επιβεβαίωσης, παρακαλούμε προσπαθήστε ξανά." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Εισάγετε τον κωδικό επιβεβαίωσης που φαίνεται παραπάνω" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Επαλήθευση" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Συνδεδεμένος/η" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ο λογαριασμός στο OpenStreetMap είναι ενεργός." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Αποσύνδεση" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Οδός" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Αριθμός κατοικίας" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Ταχ. κώδικας" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Πόλη" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Τύπος" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Χωρίς" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Προσθήκη πεδίου" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Σχόλιο" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Οι αλλαγές θα γίνουν ορατές σε όλους τους χάρτες που\n" +"χρησιμοποιούν δεδομένα του OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Πρόσφατα χρησιμοποιημένα" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Επόμενο" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Εμφάνιση περισσότερων πληροφοριών" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Δεν βρέθηκαν αποτελέσματα" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Σύρετε για να αλλάξετε την σειρά στη διαδρομή" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Άνοιγμα τοποθεσίας" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Αντιγραφή" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Αποστολή σε…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ά_νοιγμα" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Εναλλαγή ορατότητας" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Αναζήτηση διαδρομής από το GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Τα δρομολόγια για τα μέσα μαζικής μεταφοράς παρέχονται από υπηρεσίες\n" +"από τρίτους.\n" +"Το GNOME δεν μπορεί να εγγυηθεί την ορθότητα των δρομολογίων και των " +"χρονοδιαγραμμάτων που εμφανίζονται.\n" +"Σημειώστε ότι ορισμένοι πάροχοι ενδέχεται να μην περιλαμβάνουν όλους τους " +"διαθέσιμους τρόπους μεταφοράς,\n" +"π.χ. ένας εθνικός πάροχος ενδέχεται να μην περιλαμβάνει αεροπορικές " +"εταιρείες και ένας τοπικός πάροχος θα μπορούσε\n" +"παραλείψει περιφερειακά τρένα.\n" +"Τα ονόματα και τα εμπορικά σήματα που εμφανίζονται πρέπει να θεωρούνται ως " +"σήματα κατατεθέντα όταν ισχύουν." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Εμφάνιση περισσότερων αποτελεσμάτων" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Απόκρυψη ενδιάμεσων στάσεων και πληροφοριών" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Εμφάνιση ενδιάμεσων στάσεων και πληροφοριών" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Αναχώρηση τώρα" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Αναχώρηση στις" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Άφιξη στις" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Εμφάνιση" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Λεωφορεία" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Τραμ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Τρένα" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Μετρό" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Πλοία" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Αεροπλάνα" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Τρέχουσα τοποθεσία" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Εστιάστε για να προσθέσετε μια τοποθεσία!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Μεγέθυνση" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Αποτυχία εύρεσης δομής πλακιδίων στον κατάλογο" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Αποτυχία ανάλυσης εγγράφου XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Λείπουν απαιτούμενα γνωρίσματα" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Αποτυχία εύρεσης στοιχείου OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Η τοποθεσία μιας τοπικής δομής πλακιδίων" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Εμφάνιση της έκδοσης του προγράμματος" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Αγνόησε διαθεσιμότητα του δικτύου" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Επιλογή λογαριασμού" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Φορτώνεται" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Επιλέξτε μια θέση" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Facebook. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Foursquare. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in στο %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Γράψτε ένα προαιρετικό μήνυμα για check in στο %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Παρουσιάστηκε σφάλμα" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Αδύνατη η εύρεση του «%s» στην κοινωνική υπηρεσία" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Αδύνατη η εύρεση μιας κατάλληλης θέσης για check-in σε αυτήν την τοποθεσία" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Τα διαπιστευτήρια έχουν λήξει, παρακαλούμε ανοίξτε τους διαδικτυακούς " +"λογαριασμούς για να εισέλθετε και να ενεργοποιήσετε αυτόν τον λογαριασμό" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Δεν βρέθηκε τίποτα εδώ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Η τοποθεσία προστέθηκε στον χάρτη, μπορεί να πάρει λίγη ώρα πρωτού " +"εμφανιστεί στον χάρτη και στα αποτελέσματα αναζήτησης." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Χάρτες στο %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Το σύστημα αρχείων είναι μόνο για ανάγνωση" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Δεν έχετε δικαιώματα για να αποθηκεύσετε" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Δεν υπάρχει ο κατάλογος" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Δεν ορίσθηκε όνομα αρχείου" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Αδυναμία εξαγωγής προβολής" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "μη έγκυρη συντεταγμένη" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "σφάλμα ανάλυσης" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "άγνωστη γεωμετρία" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Αποτυχία αιτήματος διαδρομής." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Δεν βρέθηκε διαδρομή." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Εκκίνηση!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Όλα τα αρχεία στρώσεων" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Αποτυχία σύνδεσης με την υπηρεσία τοποθεσίας" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Ελληνική μεταφραστική ομάδα GNOME\n" +" Δημήτρης Σπίγγος \n" +" Ευστάθιος Ιωσηφίδης \n" +" Εύα Φωτοπούλου \n" +" Μαρία Θουκιδίδου \n" +" Μαρία Μαυρίδου \n" +" Θάνος Τρυφωνίδης \n" +"\n" +"Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" +"http://gnome.gr/" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Μια εφαρμογή χάρτη για το GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Πνευματικά δικαιώματα © 2011 – 2019 Red Hat, Inc. και συγγραφείς του Χάρτες " +"GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Δεδομένα χαρτών από %s και τους συνεισφέροντες" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Τα πλακίδια των χαρτών παρέχονται από %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Η αναζήτηση παρέχεται από το %s με τη χρήση του %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Δεν υποστηρίζεται ο τύπος αρχείου" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Αποτυχία ανοίγματος στρώσης" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Αποτυχία ανοίγματος GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Επιτυχία" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Εσφαλμένο αίτημα" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Δε βρέθηκε το αντικείμενο" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Σύγκρουση, κάποιος άλλος μόλις τροποποίησε το αντικείμενο" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Το αντικείμενο έχει διαγραφεί" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ο τρόπος ή η σχέση παραπέμπουν σε μη υπάρχον θυγατρικό" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Όνομα" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Το επίσημο όνομα. Αυτό φαίνεται συνήθως στις πινακίδες." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Διεύθυνση" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Ιστότοπος" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ο επίσημος ιστότοπος. Προσπαθήστε να χρησιμοποιήσετε τη βασική μορφή της " +"διεύθυνσης. Π.χ. http://example.com αντί για http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Τηλέφωνο" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Αριθμός τηλεφώνου. Χρησιμοποιήστε την παγκόσμια μορφή, ξεκινώντας με το " +"σύμβολο +. Προσέχετε τους τοπικούς νόμους περί ιδιωτικότητας, ειδικά για " +"απόρρητα τηλεφωνικά νούμερα." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Βικιπαιδεία" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Η μορφή που θα χρησιμοποιηθεί πρέπει να περιλαμβάνει τον κωδικό γλώσσας και " +"έναν τίτλο άρθρου όπως \"en:Article title\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Ώρες λειτουργίας" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Δείτε τον σύνδεσμο στην ετικέτα για βοήθεια στην μορφοποίηση." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Πληθυσμός" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Υψόμετρο" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Υψόμετρο (πάνω από το επίπεδο της θάλασσας) ενός σημείου σε μέτρα." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Πρόσβαση αμαξιδίου" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ναι" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Όχι" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Περιορισμένο" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Υποδεικνυόμενο" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Ενσύρματη δικτύωση" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Υπολογιστής" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Υπηρεσία" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Θρησκεία" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Ανιμισμός" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Μπαχάι" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Βουδισμός" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Καοδαϊσμός" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Χριστιανισμός" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Κομφουκιανισμός" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Ινδουϊσμός" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Τζαϊνισμός" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Ιουδαϊσμός" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ισλαμισμός" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Πολλαπλές θρησκείες" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Παγανισμός" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Πασαφιανισμός" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Σαηεντολογία" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Σιντό" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Σιχισμός" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Πνευματισμός" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Ταοϊσμός" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Ουνιταριανός Ουνιβερσαλισμός" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Βουντού" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Γιαζιδισμός" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Ζωροαστριανισμός" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Τουαλέτες" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Σημείωση" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Πληροφορίες που χρησιμοποιούνται για την ενημέρωση άλλων χαρτογράφων σχετικά " +"με τις μη προφανείς πληροφορίες σχετικά με ένα στοιχείο, την πρόθεση του " +"δημιουργού κατά τη δημιουργία του, ή συμβουλές για περαιτέρω βελτίωση." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Επιλογή τύπου" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Έτοιμο" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Άγνωστο μέρος" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Πληθυσμός:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Υψόμετρο:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Ώρες λειτουργίας:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Πρόσβαση στο διαδίκτυο:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Θρησκεία:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Τουαλέτες:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Πρόσβαση αμαξιδίου:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Τηλέφωνο:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Αποτυχία ανάλυσης Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ναι" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "περιορισμένη" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "όχι" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "υποδεικνυόμενο" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Η τοποθεσία δεν βρέθηκε στο OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Η URL του OpenStreetMap δεν είναι έγκυρη" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Οι συντεταγμένες στη URL δεν είναι έγκυρες" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Η URL δεν υποστηρίζεται" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Από %s σε %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Φόρτωση χάρτη για εκτύπωση" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Μπορείτε να ακυρώσετε την εκτύπωση αν αυτό διαρκεί πολλή ώρα" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ακύρωση εκτύπωσης" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Προσθήκη μέσω της τοποθεσίας" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Αφαίρεση μέσω της τοποθεσίας" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Αντίστροφη διαδρομή" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Προσθήκη %s σε %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Αποτυχία ανοίγματος του URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Άνοιγμα με %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "αδυναμία φόρτωσης αρχείου" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Εκτιμώμενος χρόνος: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Οι διαδρομές παρέχονται από %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Έναρξη από %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Έναρξη" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Περπάτημα %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Άφιξη στο %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Άφιξη" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Εμφάνιση οδηγιών περπατήματος" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Απόκρυψη οδηγιών περπατήματος" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Φόρτωση νεοτέρων εναλλακτικών" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Φόρτωση τελευταίων εναλλακτικών" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Δεν βρέθηκαν νεότερες εναλλακτικές." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Δεν βρέθηκαν τελευταίες εναλλακτικές." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Δεν βρέθηκε δρομολόγιο γι' αυτή τη διαδρομή." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Δεν βρέθηκε πάροχος γι' αυτή τη διαδρομή." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d λεπτό" +msgstr[1] "%d λεπτά" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ώρα" +msgstr[1] "%d ώρες" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ώρα" +msgstr[1] "%d:%02d ώρες" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "εικοσιτετράωρο" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "από την ανατολή μέχρι τη δύση του ήλιου" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "κάθε ημέρα" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "επίσημες αργίες" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "σχολικές αργίες" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "δεν είναι ανοικτό" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ενσύρματο δίκτυο" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "υπολογιστής" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "εξυπηρέτηση" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ακρίβεια: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Άγνωστο" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Ακριβής" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Συνεχίστε στο %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Συνέχεια" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Στρίψτε αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Στρίψτε αριστερά" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Στρίψτε λίγο αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Στρίψτε λίγο αριστερά" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Απότομη στροφή αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Απότομη στροφή αριστερά" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Στρίψτε δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Στρίψτε δεξιά" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Στρίψτε λίγο δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Στρίψτε λίγο δεξιά" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Απότομη στροφή δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Απότομη στροφή δεξιά" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο προς %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Πάρτε τον κυκλικό κόμβο" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Πάρτε τον ανισόπεδο κόμβο και εξέλθετε από το %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Πάρτε τον ανισόπεδο κόμβο" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Κάντε μια αριστερή αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Κάντε μια αριστερή αναστροφή" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Κάντε μια δεξιά αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Κάντε μια δεξιά αναστροφή" + +#~ msgid "Add destination" +#~ msgstr "Προσθήκη προορισμού" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Αναζήτηση διαδρομής από το OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Άνοιγμα με άλλη εφαρμογή" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Press enter to search" +#~ msgstr "Πατήστε enter για αναζήτηση" + +#~ msgid "Quit" +#~ msgstr "Έξοδος" + +#~ msgid "OK" +#~ msgstr "Εντάξει" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Άνοιγμα στρώσης σχήματος…" + +#~ msgid "Load Map Layer" +#~ msgstr "Φόρτωση στρώσης χάρτη" + +#~ msgid "Open Layer" +#~ msgstr "Άνοιγμα στρώσης" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Η τοποθεσία δεν βρέθηκε" + +#~ msgid "Postal code: %s" +#~ msgstr "Ταχ. κώδικας: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Κωδικός χώρας: %s" + +#~ msgid "Population: %s" +#~ msgstr "Πληθυσμός: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Πρόσβαση αμαξιδίου: %s " + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Αποτυχία ανάλυσης αρχείου GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Κοινή χρήση" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Τελευταία γνωστή θέση και ακρίβεια" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Τελευταία γνωστή θέση (πλάτος και μήκος σε μοίρες) και ακρίβεια (σε " +#~ "μέτρα)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Περιγραφή της τελευταίας γνωστής θέσης του χρήστη." + +#~ msgid "User set last known location" +#~ msgstr "Ορισμός της τελευταίας γνωστής τοποθεσίας από τον χρήστη" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Εάν η τελευταία γνωστή τοποθεσία ορίστηκε χειροκίνητα από τον χρήστη." + +#~ msgid "I’m here!" +#~ msgstr "Είμαι εδώ!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "From" +#~ msgstr "Από" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Satellite" +#~ msgstr "Δορυφόρος" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 00000000..67103e42 --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,1893 @@ +# British English translation of gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER. +# This file is distributed under the same licence as the gnome-maps package. +# Philip Withnall , 2013. +# Zander Brown , 2019-2020. +# Bruce Cowan , 2017-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 21:06+0000\n" +"PO-Revision-Date: 2020-02-02 12:23+0000\n" +"Last-Translator: Bruce Cowan \n" +"Language-Team: English - United Kingdom \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Project-Style: gnome\n" +"X-Generator: Gtranslator 3.34.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find places around the world" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "The GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "A simple maps application" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Allows your location to be shown on the map." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom level" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Map type" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "The type of map to display (street, aerial, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximised" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximisation state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Last used transportation type for routing" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibility" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post on Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post on Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Everyone" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Friends of friends" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Just friends" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Just me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route from here" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Add intermediate destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route to here" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "What’s here?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copy Location" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export view" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Export" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Include route and markers" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Show Shortcuts" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Search" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Print route" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quit" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Map View" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom in" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom out" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toggle scale" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Go to current location" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Switch to street view" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Switch to aerial view" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Open shape layer" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Open Shape Layer…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Turn on location services to find your location" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Location Settings" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Set up OpenStreetMap Account" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Export as Image" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "About Maps" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Go to current location" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Choose map type" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zoom out" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zoom in" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Toggle favourites" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Print Route" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Maps is offline!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Check your connection and proxy settings." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Add to new route" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Share location" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Mark as favourite" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in here" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Sign in to edit maps" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help to improve the map, using an\n" +"OpenStreetMap account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Sign In" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Don’t have an account?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "The verification code didn’t match, please try again." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Enter verification code shown above" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verify" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Signed In" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Your OpenStreetMap account is active." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Sign Out" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Street" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "House number" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postal code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "City" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "None" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Add Field" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recently Used" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Next" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Show more information" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No results found" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Drag to change order of the route" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Open Location" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send To…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Open Shape Layer" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Open" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Toggle visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Route search by GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Show more results" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Hide intermediate stops and information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Show intermediate stops and information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Leave Now" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Leave By" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrive By" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Show" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Underground" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferries" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplanes" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Current location" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in to add location!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom In" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Failed to find tile structure in directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Failed to parse XML document" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Missing required attributes" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Could not find OSM element" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "A path to a local tiles directory structure" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Show the version of the program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignore network availability" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Select an account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Loading" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Select a place" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in to %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Write an optional message to check in to %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "An error has occurred" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Cannot find “%s” in the social service" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Cannot find a suitable place to check-in in this location" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nothing found here!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Maps at %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filesystem is read only" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "You do not have permission to save there" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "The directory does not exist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No filename specified" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Unable to export view" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "invalid coordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parse error" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "unknown geometry" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Route request failed." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "No route found." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "All Layer Files" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Failed to connect to location service" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Philip Withnall \n" +"David King \n" +"Bruce Cowan \n" +"Zander Brown " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Map data by %s and contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Map tiles provided by %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Search provided by %s using %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "File type is not supported" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Failed to open layer" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Failed to open GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Incorrect user name or password" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Success" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bad request" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object not found" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, someone else has just modified the object" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object has been deleted" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way or relation refers to non-existing children" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "The official name. This is typically what appears on signs." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Address" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Phone" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"The format used should include the language code and the article title like " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Opening hours" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "See the link in the label for help on format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevation (height above sea level) of a point in metres." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Wheelchair access" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Yes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limited" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designated" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toilets" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Select Type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Done" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unnamed place" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Population:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Opening hours:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet access:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toilets:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Wheelchair access:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Phone:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Failed to parse Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "yes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limited" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designated" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Place not found in OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL is not valid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coordinates in URL are not valid" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL is not supported" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "From %s to %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Loading map tiles for printing" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "You can abort printing if this takes too long" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abort printing" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Add via location" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via location" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverse route" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Add %s to %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Failed to open URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Open with %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "failed to load file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimated time: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraries provided by %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Walk %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Arrive" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Show walking instructions" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Hide walking instructions" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Load earlier alternatives" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Load later alternatives" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No earlier alternatives found." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No later alternatives found." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "No timetable data found for this route." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "No provider found for this route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hour" +msgstr[1] "%d hours" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hour" +msgstr[1] "%d:%02d hours" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "around the clock" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "from sunrise to sunset" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "every day" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "public holidays" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "school holidays" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "not open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "wired" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "service" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Accuracy: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Unknown" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exact" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue on %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turn left on %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Turn left" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turn slightly left on %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Turn slightly left" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turn sharp left on %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Turn sharp left" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turn right on %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Turn right" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turn slightly right on %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Turn slightly right" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turn sharp right on %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Turn sharp right" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "In the roundabout, take exit %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "In the roundabout, take exit to %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Take the roundabout" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Take the lift and get off at %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Take the lift" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Make a left u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Make a left u-turn" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Make a right u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Make a right u-turn" + +#~ msgid "Add destination" +#~ msgstr "Add destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Route search by OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "Quit" + +#~ msgid "Load Map Layer" +#~ msgstr "Load Map Layer" + +#~ msgid "Open with another application" +#~ msgstr "Open with another application" + +#~ msgid "Press enter to search" +#~ msgstr "Press enter to search" + +#~ msgid "Open Layer" +#~ msgstr "Open Layer" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "Last known location was set manually by user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I'm here!" +#~ msgstr "I’m here!" + +#~ msgid "Satellite" +#~ msgstr "Satellite" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 00000000..70521d83 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1889 @@ +# Esperanto translation for gnome-maps. +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ryan LORTIE , 2013. +# Matthew CHISHOLM , 2013. +# Daniel PUENTES , 2015. +# Nicolas MAIA , 2015. +# Baptiste DARTHENAY , 2016. +# Carmen Bianca BAKKER , 2018. +# Tirifto , 2019. +# Kristjan SCHMIDT , 2013-2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-12-15 18:16+0000\n" +"PO-Revision-Date: 2019-12-18 23:21+0200\n" +"Last-Translator: Kristjan SCHMIDT \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-DamnedLies-Scope: partial\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapoj" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trovi lokojn tra la mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapoj donas al vi rapidan aliron al mapoj de la tuta mondo. Ĝi ebligas vin " +"rapide trovi la lokon, kiun vi serĉas, serĉante urbon aŭ straton, aŭ trovi " +"lokon por renkonti amikon." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapoj uzas la kunlaboran datumbazon OpenStreetMap, farita de centoj da miloj " +"da personoj tra la tuta mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vi eĉ povas serĉi specifajn specojn de lokoj, kiel ekzemple “Trinkejo " +"proksime al Main Street, Bostono” aŭ “Hotelo proksime al Alexanderplatz, " +"Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "La projekto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:513 +msgid "Maps" +msgstr "Mapoj" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Simpla mapa aplikaĵo" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapoj;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ebligas montri vian pozicion sur la mapo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laste vidita loko" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinatoj de laste vidita loko." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Speco de mapo" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenestra grando" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenestra grando (larĝo kaj alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fenestra pozicio" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozicio de fenestro (x kaj y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenestro maksimumigita" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimumiga stato de fenestro" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimuma numero da serĉa rezultoj" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimuma numero da serĉa rezultoj de geocode-a serĉo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombro de lastatempaj lokoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombro de lastatempaj lokoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombro de lastatempaj kursoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombro da lastatempe vizititaj kursoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privateca agordo de Facebook-prezentiĝo" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"EVERYONE (ĉiuj), FRIENDS_OF_FRIENDS (amikoj de amikoj), ALL_FRIENDS (ĉiuj " +"amikoj), aŭ SELF (sin mem)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privateca agordo de Foursquare-prezentiĝo" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"public (publika), followers (sekvantoj), aŭ private (privata)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Facebook ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Twitter ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-uzantonomo aŭ retpoŝtadreso" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikas ĉu la uzanto estas salutinta por redakti OpenStreetMap-datumojn." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Videbleco" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Afiŝi ĉe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Alfiŝi ĉe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Nuligi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "P_rezentiĝi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ĉiu" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amikoj de amikoj" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur amikoj" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur mi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publika" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekvantoj" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privata" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Kio estas ĉi tie?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Kopii lokon" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Elporti kiel bildo" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Elporta vido" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Elporti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkluzivi kurson kaj markilojn" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ĝenerale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Montri la klavkombinojn" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Serĉo" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Presi la kurson" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ĉesi" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Mapa vido" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zomi" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Malzomi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Baskuligi skalon" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Ŝalti al strata vido" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Baskuligi al aera vido" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Malfermi forman tavolon" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Malfermi forman tavolon…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Enŝalti lokajn servojn por trovi vian lokon" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Nuligi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Agordoj de loko" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Agordi OpenStreetMap-konton" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Pri Mapoj" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Elekti specon de mapo" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Malzomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Zomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Baskuligi ŝataĵojn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Presi la kurson" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Mapoj estas nekonektitaj!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapoj bezonas interretaliron por bone funkcii, sed oni ne trovis ĝin." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kontrolu vian konekton kaj agordojn de la prokurilo." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aldoni al nova kurso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kunhavigi lokon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marki kiel ŝatatan" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prezentiĝi ĉi tie" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Salutu por redakti mapojn" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helpu plibonigi la mapon uzante\n" +"OpenStreetMap-konton." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Retpoŝtadreso" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasvorto" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Saluti" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ĉu vi ne havas konton?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Pardonon, tio ne funkciis. Bonvolu provi denove, aŭ viziti\n" +"OpenStreetMap por reagordi vian pasvorton." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "La kontrolkodo ne kongruis, bonvolu provi denove." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Bonvolu enigi la ĉi supran kontrolkodon" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Kontroli" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Salutinta" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Via OpenStreetMap-konto estas aktiva." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Adiaŭi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strato" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Domnumero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poŝtkodo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Urbo" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Neniu" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aldoni kampon" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Mapaj redaktoj videblos en ĉiuj mapoj kiuj uzas\n" +"OpenStreetMap-datumojn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Freŝe uzitaj" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sekva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montri pli da informoj" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ne trovis rezulton" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ŝovu por ŝangi la ordon de la kurso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopii" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sendi al…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Malfermi forman tavolon" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Malfermi" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Baskuligi videblecon" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Kursa serĉado de GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Planado de kursoj kun publikaj transportiloj estas provizata\n" +"de eksteraj servoj.\n" +"GNOME ne povas garantii ĝustecon de la montrataj kursoj kaj planoj.\n" +"Rimarku, ke iuj provizantoj eble ne traktas ĉiujn specojn de transportado. " +"Ekzemple,\n" +"landa provizanto eble ne traktus aviadon, kaj loka liveranto eble ne traktus " +"regionajn\n" +"vagonarojn.\n" +"Nomojn kaj varmarkojn prezentatajn rigardu kiel registritajn posedaĵojn, " +"kiam tio taŭgas." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montri pli da rezultoj" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Kaŝi intermezajn staciojn kaj informojn" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Montri intermezajn staciojn kaj informojn" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Ekveturi nun" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Ekveturi je" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Alveni je" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Montri" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busoj" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramoj" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vagonaroj" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subtera fervojo" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Pramŝipoj" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviadiloj" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuala loko" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Precizeco: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zomu por aldoni lokon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zomi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Malsukcesis trovi kahelan strukturon en dosierujo" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Malsukcesis analizi la XML-dokumenton" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mankas bezonataj atributoj" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ne sukcesis trovi la OSM-elementon" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Vojo al loka kahela dosieruja strukturo" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Montri la version de la programo" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Malatenti atingeblecon de reto" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Elekti konton" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ŝarĝante" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Elekti lokon" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Facebook. Bonvole elektu unu " +"el ĉi tiu listo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Foursquare. Bonvole elektu " +"unu el ĉi tiu listo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prezentiĝi al %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skribi malnepran mesaĝon por prezentiĝi ĉe %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Eraro okazis" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne povis trovi na “%s” en la socia servo" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne trovis taŭgan lokon por prezentiĝi en tiu ĉi lokon" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"La salutiloj malvalidiĝis, bonvole lanĉu Enretajn Kontojn por saluti kaj " +"ebligi ĉi tiun konton" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Kurso ekde ĉi tie" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Aldoni alvenon" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Kurso ĝis ĉi tie" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Nenio trovita ĉi tie!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Loko estis aldonita al la mapo, rimarku ke ĝi povas preni momenton antaŭ ĝi " +"montras sur la mapo kaj en serĉrezultoj." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapoj ĉe %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosiersistemo estas nurlega" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vi ne havas la permeson por tie konservi" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La dosierujo ne ekzistas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Neniu dosiernomo specifita" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne eblas elporti la vidon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nevalida koordinato" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analizeraro" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nekonata geometrio" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Kurs-peto malsukcesis." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ne trovis kurson." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Ek!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Ĉiuj tavolaj dosieroj" + +#: src/mainWindow.js:446 +msgid "Failed to connect to location service" +msgstr "Malsukcesis konekti al loka servo" + +#: src/mainWindow.js:511 +msgid "translator-credits" +msgstr "" +"Ryan LORTIE\n" +"Kristjan SCHMIDT\n" +"Matthew CHISHOLM\n" +"Daniel PUENTES\n" +"Nicolas MAIA\n" +"Baptiste DARTHENAY\n" +"Carmen Bianca BAKKER \n" +"Tirifto " + +#: src/mainWindow.js:514 +msgid "A map application for GNOME" +msgstr "Mapa aplikaĵo por GNOME" + +#: src/mainWindow.js:525 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Kopirajto © 2011 – 2019 Red Hat, Inc. kaj la kontribuintoj de GNOME Maps" + +#: src/mainWindow.js:545 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapdatumoj de %s kaj kontribuantoj" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:561 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapajn kahelojn provizas %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:590 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Serĉo povigita de %s per %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dosiertipo ne estas subtenata" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Malsukcesis malfermi la tavolon" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Malsukcesis malfermi la Geo-URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Malkorekta uzantonomo aŭ pasvorto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sukceso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Malbona peto" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekto ne trovita" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikto, iu alia ĵus redaktis tiun objekton" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "La objekto estis forigita" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vojo aŭ rilato referencas al neekzistantaj idoj" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nomo" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "La oficiala nomo. Tio ĉi kutime aperas sur signoj." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreso" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Retejo" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La oficiala retejo. Provo uzi la plej bazan formon de URL t.e. http://" +"example.com anstataŭ http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefona numero. Uzu la internacian formon, komencantan kun la signo “+”. " +"Observu lokajn privatecajn leĝojn, precipe por privataj telefonaj numeroj." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedio" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"La uzata formo devus inkluzivi lingvan kodon kaj la artikolan titolon, kiel " +"“eo:artikola titolo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horoj de malfermo" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vidi la ligon en la etikedo por helpo sur formo." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Loĝantaro" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudo" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Alteco (alto super mara nivelo) de punkto per metroj." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rulseĝa aliro" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Jes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limigita" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Indikita" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interreta aliro" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sendrata" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Drata" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalo" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religio" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaismo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budaismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaismo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristanismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuceismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ĝajnismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Pluraj religioj" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologio" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Ŝintoismo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaria Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voduismo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratuŝtrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Necesejoj" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Noto" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informo uzota por sciigi nememkompreneblajn informojn al aliaj mapistoj pri " +"elemento, intenco de ĝia aŭtoro, aŭ helpiloj por plia plibonigado." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Elekti tipon" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Farite" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sennoma loko" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Loĝantaro:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Alto:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horoj de malfermo:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interreta aliro:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religio:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Necesejoj:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rulseĝa aliro:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Malsukcesis analizi Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limigita" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "indikita" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Loko ne troviĝis en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL de OpenStreetMap ne estas valida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatoj en URL ne estas validaj" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL ne estas subtenata" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s ĝis %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ŝarĝante maperojn por presado" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vi rajtas ĉesigi presadon se tro daŭras" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ĉesigi presadon" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aldoni per loko" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Forigi per loko" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Renversi kurson" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aldoni %s al %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Malsukcesis malfermi la URI" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Malfermi per %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "malsukcesis ŝarĝi la dosieron" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Antaŭkalkulita tempo: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Kursojn provizas %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Alveturi je %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Ek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Promeni %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Alveni je %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Alveni" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montri promenajn instrukciojn" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Kaŝi promenajn instrukciojn" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ŝargi antaŭajn alternativojn" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ŝargi postajn alternativojn" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Neniu antaŭa alternativo trovita." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Neniu posta alternativo trovita." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-e-a de %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Neniuj horaraj datumoj trovitaj por ĉi tiu kurso." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Neniu provizanto trovita por ĉi tiu kurso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutoj" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d horo" +msgstr[1] "%d horoj" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d horo" +msgstr[1] "%d:%02d horoj" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tuttaga" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de sunleviĝo ĝis sunsubiro" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ĉiutaga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "publikaj ferioj" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "lernejaj ferioj" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ne malfermita" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drata" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalo" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servo" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nekonata" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Preciza" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mej" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Daŭrigi je %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Daŭrigi" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turni maldekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Turni maldekstren" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turni maldekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Turni maldekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turni maldekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Turni maldekstren akre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turni dekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Turni dekstren" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turni dekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Turni dekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turni dekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Turni dekstren akre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iru el la rondirejo per eliro %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iru el la rondirejo per eliro al %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Iru la rondirejon" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Uzu la lifton kaj eliru je %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Uzu la lifton" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Turni maldekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Turni maldekstren reen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Turniĝu dekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1233 +#| msgid "Make a rigth u-turn" +msgid "Make a right u-turn" +msgstr "Turni dekstren reen" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Kursa serĉado de OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Malfermi per alia aplikaĵo" + +#~ msgid "Press enter to search" +#~ msgstr "Premu la enigan klavon por serĉi" + +#~ msgid "Quit" +#~ msgstr "Ĉesi" + +#~ msgid "Load Map Layer" +#~ msgstr "Ŝarĝi mapan tavolon" + +#~ msgid "Open Layer" +#~ msgstr "Malfermi tavolon" + +#~ msgid "OK" +#~ msgstr "En ordo" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f me" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Landkodo: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Laste-sciita loko kaj ekzakto" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Laste-sciita loko (latitudo kaj longitudo en gradoj) kaj ekzakto (en " +#~ "metroj)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Priskribo de laste sciita loko de la uzanto." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ĉu la laste sciatan lokon agordis permane la uzanto" + +#~ msgid "I’m here!" +#~ msgstr "Mi estas ĉi tie!" + +#~ msgid "Satellite" +#~ msgstr "Satelito" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..a67a8a9e --- /dev/null +++ b/po/es.po @@ -0,0 +1,1944 @@ +# Spanish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# Daniel Mustieles , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-01-31 08:56+0100\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Spanish - Spain \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 3.34.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encuentre lugares por todo el mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas le ofrece un acceso rápido a mapas de todo el mundo. Le permite " +"encontrar lugares rápidamente buscando por ciudad o por calle, o buscar un " +"lugar para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa la base de datos colaborativa OpenStreetMap, hecha por cientos de " +"miles de personas de todo el mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"También puede buscar por tipos de ubicaciones específicos como «Bares cerca " +"de la Gran Vía, Madrid» u «Hoteles cerca de la Plaza Mayor, Madrid»." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "El Proyecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una sencilla aplicación de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite mostrar su ubicación en el mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicación vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas de la última ubicación vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "El tipo de mapa que mostrar (callejero, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño de la ventana" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño de la ventana (anchura y altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición de la ventana" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición de la ventana (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ventana maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado maximizado de la ventana" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de búsqueda" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de búsqueda para búsquedas por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rutas visitadas recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidad del registro de Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última configuración de privacidad de registro de Facebook usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidad del registro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidad de registro de Foursquare usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nombre de usuario de OpenStreetMap o cuenta de correo-e" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si el usuario ha iniciado sesión para editar los datos de " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para la ruta" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidad" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar el Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar el Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Registrar" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo yo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Añadir destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta hasta aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "¿Qué hay aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar ubicación" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir ruta y marcadores" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atajos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Salir" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reducir" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Conmutar escalado" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Cambiar a vista de calle" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Cambiar a vista aérea" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir capa de formas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Abrir capa de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicios de ubicación para encontrar su posición" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configuración de la ubicación" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar cuenta de OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exportar como imagen" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Atajos del teclado" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Acerca de Mapas" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Elegir el tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Reducir" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Conmutar favoritos" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Imprimir ruta" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapas está desconectado" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necesita una conexión a Internet activa para funcionar correctamente, " +"pero no se ha encontrado ninguna." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Compruebe la configuración de su conexión y de su proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Añadir a la ruta nueva" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Compartir ubicación" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Registrarse aquí" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cuenta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ayude a mejorar el mapa, usando una\n" +"cuenta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo-e" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contraseña" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Iniciar sesión" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "¿No tiene una cuenta?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Eso no ha funcionado. Inténtelo de nuevo o visite\n" +"OpenStreetMap para restablecer su contraseña." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "El código de verificación no coincide, inténtelo de nuevo." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Introduzca el código de verificación mostrado" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Su cuenta de OpenStreetMap está activada." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Cerrar sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Calle" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciudad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ninguno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Añadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Los cambios en los mapas serán visibles en todos los mapas que usen\n" +"datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recientemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Siguiente" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar más información" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No se han encontrado resultados" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastre para cambiar el orden de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir ubicación" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Abrir capa de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Conmutar estado visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta buscada por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itinerarios de las rutas para viajes públicos los proporciona\n" +"un servicio de terceros.\n" +"GNOME no puede garantizar la corrección de los itinerarios y los tiempos " +"mostrados.\n" +"Algunos proveedores pueden no incluir todos mos medios de transporte " +"disponibles,\n" +"ej. un proveedor nacional puede no incluir aerolíneas y un proveedor local " +"puede\n" +"no incluir trenes regionales.\n" +"Los nombres y las marcas mostradas se consideran marcas registradas cuando " +"sea aplicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar más resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar información y paradas intermedias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar información y paradas intermedias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Salir ahora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Salir en" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Llegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenes" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviones" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Ubicación actual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para añadir una ubicación." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falló al buscar la estructura de la cuadrícula en la carpeta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falló al analizar el documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan los atributos necesarios" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No se pudo encontrar el elemento OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Una ruta a la estructura de carpetas locales de cuadrículas" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Mostrar la versión del programa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorar la disponibilidad de la red" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un lugar" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Facebook. " +"Seleccione uno de la lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Foursquare. " +"Seleccione uno de la lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Registrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensaje opcional para registrarse en %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Ha ocurrido un error" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No se puede encontrar «%s» en la red social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede encontrar un lugar adecuado para registrarse en esta ubicación" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las credenciales han caducado. Abra las Cuentas en línea para iniciar sesión " +"y activar esta cuenta." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No se ha encontrado nada aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Se ha añadido la ubicación al mapa, tenga en cuenta que puede tardar un rato " +"antes de mostrarse en el mapa y en los resultados de búsqueda." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de archivos es de solo lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tiene permisos para guardar ahí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La carpeta no existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No se ha especificado un nombre de archivo" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No se puede exportar la vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada no válida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error al analizar" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometría desconocida" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Falló al solicitar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "No se ha encontrado la ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Empezar" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Todos los archivos de capas" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Falló al conectar al servicio de ubicación" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "Daniel Mustieles , 2013" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas para GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. y los autores de Mapas de GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos de mapas por %s y colaboradores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Cuadrículas de mapas proporcionadas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Búsqueda proporcionada por %s usando %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Tipo de archivo no soportado" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Falló al abrir la capa" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Falló al abrir el GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nombre de usuario o contraseña no válidos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Correcto" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitud incorrecta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto no encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguien acaba de modificar el objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Se ha eliminado el objeto" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La vía o la relación se refiere a hijos no existentes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nombre" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "El nombre oficial. Esto es lo que normalmente aparece en las firmas." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Dirección" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Página web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La página web oficial. Pruebe a usar la forma más sencilla de URL, por " +"ejemplo http://ejemplo.com en lugar de of http://ejemplo.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use el formato internacional, empezando por el signo +. " +"Tenga en cuenta las leyes de privacidad locales, especialmente en el caso de " +"números privados." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El formato usado debe incluir el código del idioma y el título del artículo, " +"similar a «es:Título del artículo»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horario de apertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Consulte el enlace en la etiqueta para obtener ayuda sobre el formato." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Población" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre el nivel del mar) de un punto, en metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acceso para sillas de ruedas" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acceso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Inalámbrica" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cableada" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servicio" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religión" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Varias religiones" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cienciología" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sijismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarismo universalista" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para notificar a otros mapeadores sobre información no " +"obvia sobre un elemento, un intento del autor de crearlo o pistas sobre " +"futuras mejoras." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccionar tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Hecho" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Lugar sin nombre" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Población:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horario de apertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acceso a Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religión:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Baño:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acceso para sillas de ruedas:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Teléfono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Falló al analizar el URI de Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar no encontrado en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "El URL de OpenStreetMap no es válido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Las coordenadas del URL no son válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL no soportado" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando mapa para imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puede cancelar la impresión si esto tarda mucho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Cancelar la impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Añadir ubicación de la vía" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar ubicación de la vía" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Añadir %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Falló al abrir el URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "falló al cargar el archivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimado: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios proporcionados por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Empezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Llegar a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Llegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucciones del camino" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucciones del camino" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No hay alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No hay alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "No hay datos en la tabla de tiempos para esta ruta." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "No se ha encontrado un proveedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "todo el día" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "desde el amanecer hasta la puesta del sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "festivos" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacaciones escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "cerrado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cableada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servicio" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Desconocida" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exacta" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continúe por %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continúe" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gire a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Gire a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gire levemente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Gire levemente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gire bruscamente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Gire bruscamente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gire a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Gire a la derecha" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gire levemente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Gire levemente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gire bruscamente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Gire bruscamente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "En la rotonda, coja la salida %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "En la rotonda, coja la salida hacia %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Entre en la rotonda" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Coja el ascensor y salga en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Coja el ascensor" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Dé la vuelta hacia la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Dé la vuelta hacia la izquierda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Dé la vuelta hacia la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Dé la vuelta hacia la derecha" + +#~ msgid "Add destination" +#~ msgstr "Añadir destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta buscada por OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Abrir con otra aplicación" + +#~ msgid "Press enter to search" +#~ msgstr "Pulse Intro para buscar" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Salir" + +#~ msgid "OK" +#~ msgstr "Aceptar" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abrir capa de formas…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar capa de mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir capa" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pies" + +#~ msgid "Position not found" +#~ msgstr "Posición no encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código del país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Población: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acceso para sillas de ruedas: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falló al analizar el archivo GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Compartir" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última ubicación conocida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última ubicación conocida (latitud y longitud en grados) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción de la última ubicación conocida del usuario." + +#~ msgid "User set last known location" +#~ msgstr "Última ubicación conocida establecida por el usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si la última ubicación conocida la estableció el usuario " +#~ "manualmente." + +#~ msgid "I’m here!" +#~ msgstr "Yo estoy aquí" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "From" +#~ msgstr "Desde" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/et.po b/po/et.po new file mode 100644 index 00000000..13982e71 --- /dev/null +++ b/po/et.po @@ -0,0 +1,148 @@ +# Estonian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mattias Põldaru , 2013, +# Priit Laes , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-11 10:56+0000\n" +"PO-Revision-Date: 2013-09-20 10:20+0300\n" +"Last-Translator: Priit Laes \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaardirakendus võimaldab kiiret ligipääsu kaartidele üle terve maailma. " +"See võimaldab kiiresti leida otsitava koha kasutades linna- või tänavanime, või" +"määrata kohta sõbraga kokkusaamiseks." + +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" +"
  • Otsi riiki, regiooni, linna või tänavat.
  • Otsi erinevat liiki " +"asukohti nagu \"Pubs near Main Street, Boston\" või \"WiFi Access near " +"Alexanderplatz, Berlin\"
  • " + +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaardid kasutavad ühistööna valminud OpenStreetMap andmebaasi, millele on " +"kaasa aidanud tuhanded inimesed üle maailma." + +#. Translators: This is the program name. +msgid "Maps" +msgstr "Kaardid" + +msgid "A simple maps application" +msgstr "Lihtne kaardirakendus" + +msgid "Maps;" +msgstr "Kaardid;Kaart;" + +msgid "Window size" +msgstr "Akna suurus" + +msgid "Window size (width and height)." +msgstr "Akna suurus (laius ja kõrgus)." + +msgid "Window position" +msgstr "Akna asukoht" + +msgid "Window position (x and y)." +msgstr "Akna asukoht (x ja y)." + +msgid "Window maximized" +msgstr "Aken on maksimeeritud" + +msgid "Window maximized state" +msgstr "Akna maksimeerituse olek" + +msgid "Last known location and accuracy" +msgstr "Viimane teadaolev asukoht ja täpsus" + +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Viimane teadaolev asukoht (laius- ja pikkuskraadid) ning täpsus (meetrites)." + +msgid "Description of last known location" +msgstr "Viimase teadaoleva asukoha kirjeldus" + +msgid "Description of last known location of user." +msgstr "Kasutaja viimase teadaoleva asukoha kirjeldus." + +msgid "Maximum number of search results" +msgstr "Otsingutulemuste maksimaalne arv" + +msgid "Maximum number of search results from geocode search." +msgstr "Geokoodi otsingu tulemuste maksimaalne arv." + +msgid "User set last known location" +msgstr "Kasutaja määratud viimane teadaolev asukoht" + +msgid "Last known location was set manually by user." +msgstr "Kasutaja poolt käsitsi määratud viimane teadaolev asukoht." + +msgid "About" +msgstr "Programmist" + +msgid "Quit" +msgstr "Lõpeta" + +msgid "What's here?" +msgstr "Mis siin on?" + +msgid "I'm here!" +msgstr "Mina olen siin!" + +msgid "translator-credits" +msgstr "Mattias Põldaru, 2013,\nPriit Laes, 2013" + +msgid "A map application for GNOME" +msgstr "GNOME kaardirakendus" + +msgid "Street" +msgstr "Tänav" + +msgid "Satellite" +msgstr "Satelliit" + +#. Translators: Accuracy of user location information +msgid "Unknown" +msgstr "Teadmata" + +#. Translators: Accuracy of user location information +msgid "Exact" +msgstr "Täpne" + +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Asukoha täpsus: %s" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 00000000..0220aaed --- /dev/null +++ b/po/eu.po @@ -0,0 +1,1873 @@ +# Basque translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Iñaki Larrañaga Murgoitio , 2013, 2014, 2015, 2016, 2017. +# Asier Sarasua Garmendia , 2019, 2020. +# +msgid "" +msgstr "Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-16 10:00+0100\n" +"Last-Translator: Asier Sarasua Garmendia \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapak" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Bilatu lekuak munduan zehar" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Mapek mundu osoan zeharreko mapetarako atzipen azkarra eskaintzen dizu. Bilatzen ari zaren lekua modu azkar batean aurkitzen lagunduko dizu kalearen edo herriaren izena bilatuz, edo bilatu leku bat lagunekin aurkitzeko." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Mapak auzolanean eraikitako OpenStreetMap datu-basea darabil, mundu osoan zehar ehun eta milaka pertsonen artean sortutakoa" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "Bilatu kokaleku mota zehatz bat, adibidez 'Diru-truke bulegoa, Bilbo' edo 'Hotelak kale nagusia, Bilbo'" + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME proiektua" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapak" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Mapen aplikazio xume bat" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapak;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Zure kokalekua maparen gainean erakustea baimentzen du." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ikusitako azken kokalekua" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ikusitako azken kokalekuaren koordenatuak." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zooma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaren maila" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Mapa mota" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Bistaratuko den mapa mota (kalekoa, airekoa eta abar)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Leihoaren tamaina" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Leihoaren tamaina (zabalera eta altuera)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Leihoaren posizioa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Leihoaren posizioa (X eta Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Leihoa maximizatuta" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Leihoaren maximizazioaren egoera" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilaketaren emaitzen gehieneko kopurua" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilaketaren emaitzen gehieneko kopurua geokodifikazioaren bilaketatik." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Azken aldiko lekuen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Azken aldian bisitatutako lekuen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Azken aldiko ibilbideen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Azken aldian bisitatutako ibilbideen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-en erregistroaren pribatutasunaren ezarpena" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "Facebook-en erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'EVERYONE' (edonor), 'FRIENDS_OF_FRIENDS' (lagunen lagunak), 'ALL_FRIENDS' (lagun guztiak) edo 'SELF' (norbera)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-ren erregistroaren pribatutasunaren ezarpena" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "Foursquare-ren erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'public' (publikoa), 'followers' (jarraitzaileak) edo 'private' (pribatua)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-ren erregistroaren Facebook-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Facebook-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-ren erregistroaren Twitter-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Twitter-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-eko erabiltzaile-izena edo helbide elektronikoa" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "OpenStreetMap-eko datuak editatzeko erabiltzaileak sinatu duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Erabilitako azken garraio mota bidea egiteko" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ikusgaitasuna" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Argitaratu Facebook-en" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Argitaratu Twitter-en" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Utzi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Erregistratu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Edonor" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Lagunen lagunak" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Lagunak soilik" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nik bakarrik" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publikoa" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Pribatua" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ibilbidea hemendik" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Gehitu tarteko helmuga" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ibilbidea hona" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Zer dago hemen?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiatu kokalekua" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esportatu ikuspegia" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esportatu" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Txertatu ibilbidea eta markatzaileak" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Orokorra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Erakutsi lasterbideak" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Bilatu" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Irten" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Maparen ikuspegia" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Handiagotu" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Txikiagotu" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Txandakatu eskala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Aldatu kaleen ikuspegira" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Aldatu aireko ikuspegira" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ireki formen geruza" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Ireki formen geruza…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Aktibatu kokapen-zerbitzuak zure kokapena aurkitzeko" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Utzi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Kokapenaren ezarpenak" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Konfiguratu OpenStreetMap-eko kontua" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Esportatu irudi gisa" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Las_ter-teklak" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Mapak aplikazioari buruz" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Aukeratu mapa mota" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Txikiagotu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Handiagotu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Txandakatu gogokoak" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapa lineaz kanpo dago!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapak interneteko konexio aktiboa behar du ongi funtzionatzeko, baina ez da bat ere aurkitu." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Egiaztatu konexioaren eta proxyaren ezarpenak." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Gehitu ibilbide berriari" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partekatu kokalekua" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markatu gogoko gisa" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Erregistratu hemen" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-eko kontua" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Hasi saioa mapak editatzeko" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "Lagundu mapa hobetzen\n" +"OpenStreetMap-eko kontu bat erabiliz." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Posta elektronikoa" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasahitza" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Hasi saioa" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ez daukazu konturik?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "Ez du funtzionatzen. Saiatu berriro, edo bisitatu\n" +"OpenStreetMap zure pasahitza berrezartzeko." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Egiaztapen-kodea ez dator bat, saiatu berriro." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Sartu goian erakutsitako egiaztapen-kodea" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Egiaztatu" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Saioa hasita" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Zure OpenStreetMap-eko kontua aktibo dago." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Amaitu saioa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Kalea" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Zenbakia" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta-kodea" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Hiria" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Mota" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Bat ere ez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Gehitu eremua" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Iruzkina" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "Mapen aldaketak ikusgai egongo dira OpenStreetMap-eko\n" +"datuak erabiltzen dituzten mapa guztietan." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Azken aldian erabilia" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Hurrengoa" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Erakutsi informazio gehiago" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ez da emaitzarik aurkitu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastatu ibilbidearen ordena aldatzeko" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ireki kokalekua" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiatu" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Bidali hona…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Ireki formen geruza" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ireki" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Txandakatu ikusgaitasuna" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ibilbidea GraphHopper-ek bilatuta" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "Ibilbide publikoen bideak hirugarrenek eskaintzen dituzte.\n" +"GNOMEk ezin du bermatu erakutsitako ibilbideen eta ordutegien zuzentasuna.\n" +"Kontuan izan zenbait hornitzailek ez dituztela garraio modu guztiak kontuan hartzen, adibidez nazio mailako hornitzaile batek beharbada ez ditu hegaldiak kontuan hartzen, eta hornitzaile lokal batek agian ez ditu eskualde mailako trenak erakusten.\n" +"Erakutsitako izenak eta markak erregistratutako marka gisa hartuko dira dagokienenean." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Erakutsi emaitza gehiago" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ezkutatu bitarteko puntuak eta informazioak" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Erakutsi bitarteko puntuak eta informazioak" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Irten orain" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Irten:" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Iritsi:" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Erakutsi" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusak" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranbia" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenak" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metroak" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferryak" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Hegazkinak" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Uneko kokalekua" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Handiagotu zooma kokalekua gehitzeko!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Handiagotu" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Huts egin du lauzaren egitura direktorioan bilatzean" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Huts egin du XML dokumentua aztertzean" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Beharrezko atributuak falta dira" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ezin izan da OSM elementua aurkitu" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Lokaleko lauzen direktorioaren egituraren bide-izena" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Erakutsi programaren bertsioa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ezikusi egin sarearen erabilgarritasunari" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Hautatu kontua" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Kargatzen" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Hautatu lekua" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Facebook-ekin erregistratzeko. Hautatu bat zerrendatik." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Foursquare-rekin erregistratzeko Hautatu bat zerrendatik." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s(e)n erregistratzen" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Idatzi aukerako mezua '%s'(e)n erregistratzeko." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Errore bat gertatu da" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ezin da “%s” aurkitu zerbitzu sozialean" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ezin da leku egokirik aurkitu kokaleku honetan erregistratzeko" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "Kredentzialak iraungi egin dira. Ireki 'Lineako kontuak' kontu hau sinatzeko eta gaitzeko" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ez da ezer aurkitu." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "Kokalekua mapari gehitu zaio. Jakin ezazu denbora bat igaroko dela mapetan eta bilaketen emaitzetan erakutsi aurretik." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapak hemen: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Fitxategi-sistema irakurtzeko soilik da" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ez duzu baimenik han gordetzeko" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorioa ez da existitzen" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ez da fitxategi-izenik zehaztu" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ezin da ikuspegia esportatu" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "baliogabeko koordenatua" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analisi-errorea" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria ezezaguna" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Huts egin du ibilbidearen eskaerak." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ez da ibilbiderik aurkitu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Hasi!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Geruzen fitxategi guztiak" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Huts egin du kokapen-zerbitzuarekin konektatzean" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "translator-credits" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "GNOMEren mapen aplikazioa" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. eta GNOME Maps egileak" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Maparen datuen sortzaileak: %s eta laguntzaileak" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa-lauzen hornitzaileak: %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s motorrak hornitutako bilaketa %s bidez" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Fitxategi mota ez dago onartuta" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Huts egin du geruza irekitzean" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Huts egin du GeoURIa irekitzean" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Ongi burutu da" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Eskaera okerra" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektua ez da aurkitu" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Gatazka, beste norbaitek objektua aldatu du" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektua ezabatua izan da" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Bideak edo erlazioak ez dauden umeei egiten diote erreferentzia" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Izena" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Izen ofiziala. Saioa hastean agertu ohi izaten da." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Helbidea" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webgunea" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "Webgune ofiziala. Saiatu URL baten oinarrizko modua erabiltzen. Adib. http://example.com erabili http://example.com/index.html URLaren ordez." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefonoa" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "Telefono zenbakia. Erabili nazioarteko formatua, + ikurrarekin hasiz. Kontutan eduki pribatutasunari buruzko bertako legeak, telefono zenbaki pribatuei dagokiena bereziki." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Erabilitako formatuak hizkuntzaren kodea eta artikuluaren titulua ”eu:Artikuluaren titulua\" gisa eduki beharko lituzke." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Irekiera orduak" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Ikusi esteka etiketan formatua ematean laguntzeko." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populazioa" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudea" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Puntu baten elebazioa (itsas-mailaren gaineko altuera) metrotan." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Gurpil-aulkien irisgarritasuna" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Bai" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ez" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Mugatua" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Izendatuta" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interneterako sarbidea" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wifia" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Hariduna" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminala" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Zerbitzua" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Erlijioa" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismoa" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismoa" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismoa" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristautasuna" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuzianismoa" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismoa" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismoa" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaismoa" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islama" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Hainbat erlijio" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismoa" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismoa" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Zientziologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismoa" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismoa" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismoa" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarismo unibertsalista" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismoa" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianismoa" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Komunak" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Oharra" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Mapen beste sortzaileei elementu bati buruzko hain garbia ez den informazioari buruz, egilearen asmoa hura sortzean edo argibideak hobekuntza gehiagorako jakinarazteko informazioa." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Hautatu mota" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Eginda" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Izenik gabeko tokia" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populazioa:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudea:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Irekiera orduak:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interneterako sarbidea:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Erlijioa:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Komunak:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Gurpil-aulkien irisgarritasuna:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefonoa:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Huts egin du Geo URIa aztertzean" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "bai" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "mugatua" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ez" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "zehaztutakoa" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap zerbitzuan aurkitu ez den tokia" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URLa ez da baliozkoa" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URLaren koordenatuak ez dira baliozkoak" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URLa ez da onartzen" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "“%s”(e)ndik “%s”(e)ra" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Mapen lauzak inprimatzeko kargatzen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Inprimatzea bertan behera utz dezakezu denbora gehiegi badarama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Utzi inprimatzea bertan behera" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Gehitu bidearen kokalekua" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Kendu bidearen kokalekua" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Alderantzikatu ibilbidea" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Gehitu %s honi: %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Huts egin du URIa irekitzean" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Ireki honekin: %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "huts egin du fitxategia kargatzean" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Aurreikusitako denbora: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ibilbideen hornitzailea: %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Hasiera: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Hasiera" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Oinez: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Iritsi: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Iritsi" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Erakutsi oinezkoen instrukzioak" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ezkutatu oinezkoen instrukzioak" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Kargatu alternatibak lehenago" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Kargatu alternatibak geroago" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ez da aurreragoko ordezkorik aurkitu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ez da ondorengoko ordezkorik aurkitu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Ez da ordutegiaren daturik aurkitu ibilbide honetan." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Ez da hornitzailerik aurkitu ibilbide honetarako." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "minutu %d" +msgstr[1] "%d minutu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "ordu %d" +msgstr[1] "%d ordu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%0d ordu" +msgstr[1] "%d:%0d ordu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "erlojuaren inguruan" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "egunsentitik ilunsentira" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "egunero" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "jaiegunak" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "eskolako jaiegunak" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ez ireki" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "hariduna" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminala" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "zerbitzua" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Zehaztasuna: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Ezezaguna" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Zehatza" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f o" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Jarraitu hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Jarraitu" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Biratu ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Biratu ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Biratu pixka bat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Biratu pixka bat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Biratu erabat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Biratu erabat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Biratu eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Biratu eskuinera" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Biratu pixka bat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Biratu pixka bat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Biratu erabat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Biratu erabat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Biribilgunean, hartu %s irteera" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Biribilgunean, hartu %s helbidera joateko irteera" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Hartu biribilgunea" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Hartu igogailua eta utzi hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Hartu igogailua" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Aldatu noranzkoa ezkerrerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Aldatu noranzkoa ezkerrerantz" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Aldatu noranzkoa eskuinerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Aldatu noranzkoa eskuinerantz" + +#~ msgid "Add destination" +#~ msgstr "Gehitu helmuga" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "ibilbidea OpenTripPlanner-ek bilatuta" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Ireki beste aplikazio batekin" + +#~ msgid "Press enter to search" +#~ msgstr "Sakatu Sartu bilatzeko" + +#~ msgid "Quit" +#~ msgstr "Irten" + +#~ msgid "Load Map Layer" +#~ msgstr "Kargatu maparen geruza" + +#~ msgid "Open Layer" +#~ msgstr "Ireki geruza" + +#~ msgid "OK" +#~ msgstr "Ados" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f oin" + +#~ msgid "Country code: %s" +#~ msgstr "Estatuaren kodea: %s" + +#~ msgid "_Share" +#~ msgstr "_Partekatu" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Azken kokaleku ezaguna eta zehaztasuna" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Azken kokaleku ezaguna (latitudea eta longitudea gradutan) eta " +#~ "zehaztasuna (metrotan)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Erabiltzailearen azken kokaleku ezagunaren azalpena." + +#~ msgid "User set last known location" +#~ msgstr "Erabiltzaileak ezarritako azken kokaleku ezaguna" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Azken kokaleku ezaguna erabiltzaileak eskuz ezarri zuen edo ez." + +#~ msgid "I’m here!" +#~ msgstr "Hemen nago!" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "Nora" + +#~ msgid "From" +#~ msgstr "Nondik" + +#~ msgid "Satellite" +#~ msgstr "Satelitea" + +#~ msgid " km²" +#~ msgstr " km²" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 00000000..8b99c83b --- /dev/null +++ b/po/fa.po @@ -0,0 +1,1872 @@ +# Persian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Arash Mousavi , 2013, 2014, 2015, 2016. +# Danial Behzadi , 2014, 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-02-07 14:10+0000\n" +"PO-Revision-Date: 2020-02-19 13:00+0000\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "نقشه‌های گنوم" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "یافتن مکان‌ها در هر جایی از جهان" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, or " +"locate a place to meet a friend." +msgstr "" +"نقشه‌ها دسترسی سریعی به نقشه‌ها در تمام جهان را می‌دهد. این برنامه می‌گذارد با جست‌وجو " +"برای یک شهر یا خیابان، مکانی را که به دنبالشید یافته یا مکانی را برای قرار مشخّص " +"کنید." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands " +"of people across the globe." +msgstr "" +"نقشه‌ها از پایگاه دادهٔ مشارکتی OpenStreetMap استفاده می‌کند که به دست صدها هزار نفر " +"در سراسر جهان درست شده است." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"حتا می‌توانید گونه‌های خاصی از موقعیت‌ها را، مثل «Pubs near Main Street, Boston» یا " +"«WiFi Access near Alexanderplatz, Berlin» جست‌وجو کنید." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "پروژهٔ گنوم" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 src/application.js:81 +#: src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "نقشه‌ها" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "یک برنامهٔ ساده نقشه" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "نقشه;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "اجازهٔ نمایش موقعیتتان روی نقشه." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "آخرین موقعیت دیده شده" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "مختصات آخرین موقعیت سر زده." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "سطح بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "گونهٔ نقشه" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "گونهٔ نمایشی نقشه (خیابانی، هوایی و…)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "اندازهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "اندازهٔ پنجره (پهنا و بلندا)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "موقعیت پنجره" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "موقعیت پنجره (x و y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "پنجره بیشینه شد" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "وضعیت بیشینهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "بیشینهٔ تعداد نتایج جست‌وجو" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "بیشینهٔ تعداد نتایج جست‌وجو از طریق جست‌وجوی کد جغرافیایی." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "تعداد مکان‌های اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "تعداد مکان‌های اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "تعداد مسیرهای اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "تعداد مسیرهای اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فیس‌بوک" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فیس‌بوک. مقادیر مجاز عبارتند از: " +"EVERYONE، FRIENDS_OF_FRIENDS، ALL_FRIENDS و SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فوراسکور" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, " +"followers or private." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فوراسکور. مقادیر مجاز عبارتند از: " +"public، followers یا private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "اعلام حضور در فوراسکور و انتشار در فیس‌بوک" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک فرسته در حساب فیس‌بوک " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "اعلام حضور فوراسکور و انتشار در توییتر" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک توییت در حساب توییتر " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "نام‌کاربری یا نشانی رایانامهٔ OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "مشخّص می‌کند که آیا کاربر برای ویرایش داده‌های OpenStreetMap وارد شده یا نه." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "آخرین گونهٔ حمل‌ونقل برای مسیریابی" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "نمایانی" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "فرستادن به فیس‌بوک" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "فرستادن به توییتر" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_لغو" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "اعلام _حضور" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "همه" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "دوستانِ دوستان" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "فقط دوستان" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "فقط خودم" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "عمومی" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "پیروان" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "خصوصی" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "مسیر از این‌جا" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "افزودن مقصد میانی" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "مسیر به این‌جا" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "این‌جا چیست؟" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "رونوشت موقعیت" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "نمای برون‌ریزی" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_برون‌ریزی" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "شامل مسیر و علائم شدن" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "عمومی" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "نمایش میان‌برها" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "جست‌وجو" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "خروج" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "نمای نقشه" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بزرگ‌نمایی به خارج" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "تغییر وضعیت مقیاس" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "تعویض به نمای خیابانی" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "تعویض به نمای هوایی" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "گشودن لایهٔ شکل" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "گشودن لایهٔ شکل…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "روشن کردن خدمات مکانی برای یافتن موقعیتتان" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "لغو" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "تنظیمات موقعیت" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "برپاسازی حساب OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "برون‌ریزی به عنوان عکس" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "میان‌برهای _صفحه‌کلید" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "دربارهٔ نقشه‌ها" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "گزینش گونهٔ نقشه" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "بزرگنمایی به خارج" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "تغییر وضعیت برگزیده‌ها" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "چاپ مسیر" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "نقشه‌ها برون‌خط است!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t be " +"found." +msgstr "نقشه‌ها برای عملکرد صحیح نیاز به اینترنت دارد." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "تنظیمات پیشکار و اتّصالتان را بررسی کنید." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "افزودن به مسیر جدید" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "هم‌رسانی موقعیت" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "علامت‌گذاری به عنوان برگزیده" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "اعلام حضور در این‌جا" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "حساب OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "ورود به ویرایش نقشه‌ها" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"با استفاده از یک حساب OpenStreetMap\n" +"به گسترش نقشه کمک کنید." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "رایانامه" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "گذرواژه" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "ورود" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "حسابی ندارید؟" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap " +"to reset your password." +msgstr "" +"متأسّفانه تأثیری نداشت. لطفا دوباره تلاش کرده یا برای\n" +"باز نشانی گذرواژه‌تان به OpenStreetMap سر بزنید." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "کد تأیید مطابق نبود، لطفاً دوباره بیازمایید." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "کد تأیید بالا را وارد کنید" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "تأیید" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "وارد شده" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "حساب OpenStreetMapتان فعّال است." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "خروج" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "خیابان" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "پلاک خانه" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "کد پستی" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "شهر" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "گونه" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "هیچ‌کدام" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "افزودن زمینه" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "توضیح" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"تغییرات نقشه در تمام نقشه‌هایی که از داده‌های\n" +"اوپن‌استریت‌مپ استفاده می‌کنند قابل مشاهده است." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "به‌تازگی استفاده شده" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "بعدی" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "نمایش اطّلاعات بیش‌تر" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "هیچ نتیجه‌ای پیدا نشد" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "برای تغییر ترتیب مسیر بکشید" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "رونوشت" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "فرستادن به…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_گشودن" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "تغییر وضعیت نمایانی" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "جست‌وجوی مسیر به دست GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسیریابی برنامهٔ سفر برای حمل‌ونقل عمومی به دست خدمات ثالث فراهم شده است.\n" +"گنوم نمی‌تواند درستی برنامهٔ سفر و زمان‌بندی‌های نمایش داده‌شده را تصمین کند.\n" +"به خاطر داشته باشید که ممکن است برخی فراهم‌کنندگان، تمام حالت‌های موجود برای\n" +"حمل‌ونقل را نداشته باشند. مثلاً ممکن است یک فراهم‌کنندهٔ ملّی، خطوط هوایی را نداشته\n" +"باشد و یک فراهم‌کنندهٔ محلّی می‌تواند قطارهای منطقه‌ای را نشان ندهد.\n" +"نام‌ها و برندهای نمایش‌داده‌شده باید هنگام امکان به عنوان علایم تجاری در نظر گرفته " +"شوند." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "نمایش نتایج بیش‌تر" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "نهفتن اطّلاعات و توقّف‌های میانی" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "نمایش اطّلاعات و توقّف‌های میانی" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "اکنون خارج شوید" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "شروع حرکت از" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "رسیدن به مقصد از" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "نمایش" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "اتوبوس‌ها" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ترامواها" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "قطارها" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "مترو" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "قایق‌ها" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "هواپیماها" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "موقعیت کنونی" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "برای افزودن موقعیت، بزرگ‌نمایی کنید!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "بزرگ‌نمایی به داخل" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "شکست در یافتن ساختار کاشی در شاخه" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "شکست در تجزیهٔ سند XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ویژگی‌های لازم وجود ندارند" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "ناتوان در یافتن عنصر OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "مسیری به ساختار شاخهٔ کاشی‌های محلّی" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "نمایش نگارش برنامه" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "نادیده گرفتن موجود بودن شبکه" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "گزینش یک حساب" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "در حال بار کردن" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "گزینش یک موقعیت" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فیس‌بوک بیابد. لطفاً موقعیتی را از فهرست " +"برگزینید." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فوراسکور بیابد. لطفاً موقعیتی را از " +"فهرست برگزینید." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "اعلام حضور در %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "نوشتن اختیاری پیامی برای اعلام حضور در %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "خطایی رخ داد" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "نمی‌توان «%s» را در خدمت اجتماعی یافت" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "نمی‌توان مکانی مناسب برای اعلام حضور در این موقعیت یافت" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable this " +"account" +msgstr "" +"اعتبارنامه‌ها منقضی شده‌اند. لطفاً برای ورود و به کار انداختن این حساب، حساب‌های برخط " +"را بگشایید" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "این‌جا چیزی پیدا نشد!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows on " +"the map and in search results." +msgstr "" +"موقعیت به نقشه اضافه شد. خواستان باشد که نمایشش در نقشه و نتایج جست‌وجو، ممکن است " +"کمی طول بکشد." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "نقشه‌ها در %If، %If.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "سامانه‌پرونده فقط-خواندنی است" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "برای ذخیره در آن‌جا دسترسی ندارید" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "شاخه وجود ندارد" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "نامی برای پرونده مشخّص نشده" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ناتوان در برون‌ریزی نما" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "مختصات نامعتبر" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "خطای تجزیه" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "هندسهٔ ناشناخته" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "درخواست مسیر شکست خورد." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "هیچ مسیری پیدا نشد." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "شروع!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "تمام پرونده‌های لایه" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "شکست در اتّصال به خدمت مکانی" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"دانیال بهزادی \n" +"آرش موسوی " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "یک برنامهٔ نقشه برای گنوم" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "حق رونوشت © ۲۰۱۱ - ۲۰۱۹ – شرکت ردهت و نگارندگان نقشه‌های گنوم" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "دادهّای نقشه به دست %s و مشارکت‌کنندگان" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "کاشی‌های نقشه به دست %s فراهم شده" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "جست‌وجو به دست %s با استفاده از %s فراهم شده" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "گونهٔ پرونده پشتیبانی نمی‌شود" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "شکست در گشودن لایه" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "شکست در گشودن نشانی جغرافیایی" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "گذرواژه یا نام‌کاربری نادرست" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "موفّقیت" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "درخواست بد" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "شی پیدا نشد" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "تداخل، گسی دیگر به تازگی شی را تغییر داده" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "شی پاک شد" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "راه یا ارتباط به فرزندی ناموجود اشاره می‌کند" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "نام" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "نام رسمی. معمولاً نامیست که روی تابلوها نوشته." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "نشانی" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "پایگاه وب" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example." +"com instead of http://example.com/index.html." +msgstr "" +"پایگاه وب رسمی. سعی کنید از ساده‌ترین شکل آدرس استفاده کنید مثلا http://example." +"com به جای http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "تلفن" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of " +"local privacy laws, especially for private phone numbers." +msgstr "" +"شماره تلفن. از قالب بین‌المللی که با + شروع می‌شود اشتفاده کنید. لطفاً قوانین " +"محرمانگی محلّی را در نظر داشته باشید، به خصوص برای شماره‌های تلفن خصوصی." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "ویکی‌پدیا" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:" +"Article title”." +msgstr "" +"قالب استفاده شده باید شامل کد زبان و عنوان مقاله باید مثل «en:Article title» باشد." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "ساعت‌های کار" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "پیوند روی برچسب را برای راهنمایی قالب ببینید." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "جمعیت" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "بلندی" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "بلندی (فاصله از سطح دریا) یک نقطه به متر." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "دسترسی صندلی چرخ‌دار" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "بله" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "خیر" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "محدود" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "تعیین شده" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "دسترسی اینترنتی" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "وای‌فای" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "سیمی" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "پایانه" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "خدمت" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "دین" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "جانگرایی" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "بهایی" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "بوداییسم" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "کایوداییسم" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "مسیحیت" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "کنفسیوسیسم" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "هندوییسم" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "برهما‌بوداییسم" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "یهودیت" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "اسلام" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "دین‌های مختلف" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "پگانیسم" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "پاستاپرستی" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "علمگرایی" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "شینتو" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "سیک" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "روحگرایی" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "تائوییسم" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "جهانگرایی یکتاپرست" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "وودو" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "یزیدی" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرتشتی" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "دستشویی‌ها" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "نکته" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an " +"element, the author’s intent when creating it, or hints for further improvement." +msgstr "" +"اطّلاعات برای آگاه کردن دیگر نقشه‌کش‌ها دربارهٔ اطّلاعات نابدیهی دربارهٔ یک عنصر، قصد " +"نگارنده هنگام ایجادش یا راهنمایی برای بهبودهای بعدی." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "گزینش گونه" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "انجام شد" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "مکان بی‌نام" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "جمعیت:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "بلندی:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "ساعت‌های کار:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "دسترسی اینترنتی:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "دین:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "دستشویی‌ها:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "دسترسی صندلی چرخ‌دار:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "تلفن:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "شکست در پردازش نشانی جغرافیایی" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "بله" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "خیر" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "تعیین شده" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "مکان در اوپن استریت مپ پیدا نشد" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "نشانی OpenStreetMap نامعتبر است" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "مختصات نشانی نامعتبر" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "نشانی پشتیبانی نمی‌شود" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "از %s تا %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "در حال بار کردن کاشی‌های نقشه برای چاپ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "اگر خیلی طول کشید، می‌توانید چاپ را خاتمه دهید" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "خاتمهٔ چاپ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "افزودن از راه موقعیت" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "برداشتن از راه موقعیت" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "مسیر برعکس" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "افزودن %s به %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "شکست در گشودن نشانی" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "گشودن با %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "شکست در بارگیری پرونده" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "زمان تخمینی: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "برنامه سفر فراهم شده به دست %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "شروع در %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "شروع" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s قدم بزنید" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "رسیدن به مقصد در %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "رسیدن" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "نمایش دستور کار قدم زدن" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "نهفتن دستور کار قدم زدن" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "بار کردن جایگزین‌های قدیمی‌تر" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "بار کردن جایگزین‌های جدیدتر" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "جایگزین‌های قدیمی‌تری پیدا نشدند." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "جایگزین‌های جدیدتری پیدا نشدند." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %Oe" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "برای این مسیر هیچ دادهٔ جدول زمانی‌ای پیدا نشد." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "برای این مسیر هیچ فراهم کننده‌ای پیدا نشد." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%Id دقیقه" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%Id ساعت" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%Id:%I02d ساعت" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "حدود ساعت" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "از سپیده‌دم تا غروب" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "هر روز" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "تعطیلات عمومی" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "تعطیلات مدرسه" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "باز نیست" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "سیمی" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "پایانه" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "خدمت" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "دقّت: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "ناشناخته" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "دقیقاً" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%If ساعت" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%If دقیقه" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s ک‌م" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s ما" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s پا" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "در %s ادامه دهید" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "ادامه" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "در %s به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "در %s آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "در %s تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "در %s به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "در %s آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "در %s تند به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "تند به رایت بپیچید" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "در میدان از %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "در میدان به %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "وارد میدان شوید" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "وارد آسانسور شده و در %s حارج شوید" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "وارد آسانسور شوید" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "به %s گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "به %s گردش به راست کنید" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "گردش به راست کنید" + +#~ msgid "Add destination" +#~ msgstr "افزودن مقصد" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "جست‌وجوی مسیر به دست OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "خروج" + +#~ msgid "Load Map Layer" +#~ msgstr "بار کردن لایه نقشه" + +#~ msgid "Open with another application" +#~ msgstr "گشودن با برنامه‌ای دیگر" + +#~ msgid "Press enter to search" +#~ msgstr "برای جست‌وجو دکمه Enter را فشار دهید" + +#~ msgid "OK" +#~ msgstr "تایید" + +#~ msgid "%f km" +#~ msgstr "%If کیلومتر" + +#~ msgid "%f m" +#~ msgstr "%If متر" + +#~ msgid "%f mi" +#~ msgstr "%If مایل" + +#~ msgid "%f ft" +#~ msgstr "%If فوت" + +#~ msgid "Country code: %s" +#~ msgstr "کد کشور: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "آخرین مکان و دقت شناخته شده" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "آخرین مکان شناخته شده (عرض و طول جغرافیایی به درجه) و دقت (به متر)" + +#~ msgid "Description of last known location of user." +#~ msgstr "توضیحات آخرین مکان شناخته شده کاربر." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "این که آخرین مکان شناخته شده به صورت دستی توسط کاربر تنظیم شده یا نه." + +#~ msgid "I’m here!" +#~ msgstr "من این‌جا هستم!" + +#~ msgid "Satellite" +#~ msgstr "ماهواره" + +#~ msgid " km²" +#~ msgstr "کیلومتر مربع" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..a205db71 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,1911 @@ +# Finnish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jiri Grönroos , 2013, 2014, 2015, 2016, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-09 14:08+0200\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: suomi \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.4\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnomen kartat" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Löydä sijainteja ympäri maailman" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartat mahdollistaa maailmanlaajuisen karttatiedon käytön nopeasti. Voit " +"paikallistaa haluamasi paikan etsimällä vaikkapa kaupunkia tai katua." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartat hyödyntää tuhansien ihmisten yhdessä luomaa OpenStreetMap-tietokantaa." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Voit myös etsiä tietynlaista sijaintia, kuten \"Pubit lähellä Kallio, " +"Helsinki\" tai \"Hotellit lähellä Berliini, Saksa\"." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Gnome-projekti" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Kartat" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Yksinkertainen karttasovellus" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kartta;Kartat;Reitit;Reitti;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Sallii sijaintisi näytettävän kartalla." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "viimeksi katsottu sijainti" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Viimeksi katsotun sijainnin koordinaatit." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaustaso" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartan tyyppi" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Näytettävän kartan tyyppi (katu, ilma jne.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ikkunan koko" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ikkunan koko (leveys ja korkeus)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ikkunan sijainti" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ikkunan sijainti (x ja y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ikkuna suurennettu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Ikkunan suurennuksen tila" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Hakutulosten enimmäismäärä" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode-haun tulosten enimmäismäärä." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Äskettäisten sijaintien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Äskettäin käytyjen sijaintin varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Äskettäisten reittien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Äskettäin käytyjen reittien varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-paikkakirjautumisen yksityisyysasetus" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Viimeisin käytetty Facebook-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS tai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-paikkakirjautumisen yksityisyysasetus" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Viimeisin käytetty Foursquare-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: public, followers tai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Facebookiin" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen viestinä " +"Foursquare-tiliin liitetylle Facebook-tilille." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Twitteriin" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen twiittinä " +"Foursquare-tiliin liitetylle Twitter-tilille." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-käyttäjätunnus tai -sähköposti" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Ilmaisee onko käyttäjä kirjautunut muokatakseen OpenStreetMap-tietoja." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Reitityksessä viimeksi käytetty matkatapa" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Näkyvyys" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Lähetä Facebookiin" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Lähetä Twitteriin" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Peru" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Kirjaudu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kaikki" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Kaverien kaverit" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Vain kaverit" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Vain minä" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Julkinen" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seuraajat" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Yksityinen" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Reitti täältä" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lisää välisijainti" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Reitti tänne" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mitä täällä on?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopioi sijainti" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Vie näkymä" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Vie" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sisällytä reitti ja merkit" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Yleiset" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Näytä pikanäppäimet" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Etsi" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Lopeta" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Karttanäkymä" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Lähennä" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Loitonna" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Näytä/piilota mittakaava" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Vaihda katunäkymään" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Vaihda ilmanäkymään" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Avaa muototaso" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Avaa muototaso…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ota sijaintipalvelut käyttöön selvittääksesi sijaintisi" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Peru" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Sijaintipalvelut" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Määritä OpenStreetMap-tili" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Vie kuvana" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Tietoja - Kartat" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Valitse kartan tyyppi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Loitonna" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Lähennä" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Näytä/piilota suosikit" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Tulosta reitti" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Kartat on verkottomassa tilassa!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartat tarvitsee aktiivisen internetyhteyden toimiakseen kunnolla, mutta " +"sellaista ei kuitenkaan havaittu." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Tarkista yhteytesi ja välityspalvelimen asetukset." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Lisää uusi reitti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Jaa sijainti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merkitse suosikiksi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Kirjaudu tänne" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-tili" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Kirjaudu sisään muokataksesi " +"karttoja" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Auta parantamaan karttaa\n" +"OpenStreetMap-tiliä käyttäen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Sähköposti" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Salasana" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Kirjaudu sisään" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Oletko vailla tiliä?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Valitettavasti se ei kelvannut. Yritä uudelleen tai siirry\n" +"OpenStreetMapiin nollataksesi salasanasi." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Vahvistuskoodi ei kelvannut, yritä uudelleen." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Kirjoita yllä oleva vahvistuskoodi" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Vahvista" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Sisäänkirjautunut" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap-tilisi on aktiivinen." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Kirjaudu ulos" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Katu" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Talon numero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postinumero" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kaupunki" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tyyppi" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ei mitään" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lisää kenttä" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentti" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Karttamuutokset näkyvät kaikissa OpenStreetMapin\n" +"sisältöä käyttävissä kartoissa." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Viimeksi käytetty" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Seuraava" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Näytä lisätietoja" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tuloksia ei löytynyt" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Vedä muuttaaksesi reitin määritystä" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopioi" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Lähetä…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Avaa muototaso" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Avaa" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Näytä/piilota" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Reittihaun tarjoaa GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Julkisen liikenteen reitityksen matkareitit tarjoaa Gnome\n" +"käyttäen kolmansien osapuolien palveluja.\n" +"Gnome ei voi taata näytettävien matkareittien ja aikataulujen " +"oikeellisuutta.\n" +"Huomioi, että jotkin palveluntarjoajat eivät välttämättä sisällytä kaikkia\n" +"liikennöintimuotoja, esimerkiksi kansalliset palveluntarjoajat eivät " +"välttämättä\n" +"huomioi lentoreittejä, tai paikalliset palveluntarjoajat eivät välttämättä\n" +"huomioi valtakunnallisia junia.\n" +"Näytettävät nimet ja tuotemerkit on soveltuvin osin oletettava " +"rekisteröidyiksi." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Näytä lisää tuloksia" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Piilota välipysäkit ja tiedot" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Näytä välipysäkit ja tiedot" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Lähde nyt" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Lähde määrättynä aikana" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Saavu määrättynä aikana" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Näytä" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussit" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Raitiovaunut" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Junat" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Lautat" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lentokoneet" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Nykyinen sijainti" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Lähennä lisätäksesi sijainnin!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Lähennä" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Tiilirakennetta ei löytynyt hakemistosta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-asiakirjan jäsentäminen epäonnistui" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Vaaditut attribuutit puuttuvat" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-elementtiä ei löytynyt" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Polku paikallisten tiilien hakemistorakenteeseen" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Näytä ohjelman versio" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Älä huomioi verkon saatavuutta" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Valitse tili" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ladataan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Valitse paikka" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Facebookista paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Foursquaresta paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Kirjaudu paikkaan %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Kirjoita valinnainen viesti paikkaan %s kirjautumisen yhteydessä." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Tapahtui virhe" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Paikkaa \"%s\" ei löydy sosiaalisista palveluista" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Tästä sijainnista ei löydy kelvollista paikkaa kirjautumista varten" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kirjautumistiedot ovat vanhentuneet. Avaa verkkotilien asetukset " +"kirjautuaksesi ja käyttääksesi tätä tiliä" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Täältä ei löytynyt mitään!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Sijainti lisättiin karttaan. Ota huomioon, että sen näkymisessä kartalla ja " +"hakutuloksissa saattaa kestää jonkin aikaa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartta sijainnissa %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Tiedostojärjestemä on \"vain luku\"-muodossa" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oikeutesi eivät riitä tänne tallentamiseen" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Kansiota ei ole olemassa" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiedostonimeä ei määritetty" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Näkymän vienti epäonnistui" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "virheellinen koordinaatti" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "jäsentämisvirhe" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "tuntematon geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Reittipyyntö epäonnistui." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Reittiä ei löytynyt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Aloitus!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Kaikki tasotiedostot" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Yhteys sijaintipalveluun epäonnistui" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Karttasovellus Gnomelle" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Tekijänoikeus © 2011 – 2019 Red Hat, Inc. ja Gnomen karttasovelluksen " +"kehittäjät" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Karttatiedot tarjoaa %s ja avustajat" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karttatiilet tarjoaa %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Haun tarjoaa %s käyttämällä %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Tiedostotyyppi ei ole tuettu" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Tason avaaminen epäonnistui" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "GeoURI:n avaaminen epäonnistui" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Onnistui" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Virheellinen pyyntö" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektia ei löytynyt" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Ristiriita, joku toinen muokkasi juuri objektia" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekti on poistettu" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tie tai relaatio viittaa lapseen, jota ei ole olemassa" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nimi" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Virallinen nimi. Tämä on yleensä näkyvillä kyltissä." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Osoite" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Verkkosivusto" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Virallinen verkkosivusto. Käytä verkkotunnuksen perusmuotoa, eli mieluummin " +"http://esimerkki.fi kuin http://esimerkki.fi/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Puhelin" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Puhelinnumero. Käytä kansainvälistä muotoa, aloita +-merkillä. Ota huomioon " +"mahdolliset paikalliset yksityisyyslait, jotka voivat koskea salaisia " +"puhelinnumeroita." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Käytettävän muotoilun tulisi sisältää kielikoodin ja artikkelin nimen, kuten " +"”en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Aukioloajat" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Avaa linkki nähdäksesi muotoilua koskevan ohjeen." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Asukasluku" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Korkeus" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Sijaintipisteen korkeus merenpinnan yläpuolella metreissä." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pääsy pyörätuolilla" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Kyllä" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Rajoitettu" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Suunniteltu" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet-käyttö" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kiinteä" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Pääte" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Palvelu" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Uskonto" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismi" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhalaisuus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismi" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristinusko" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Kungfutselaisuus" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindulaisuus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainalaisuus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Juutalaisuus" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Useita uskontoja" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pakanuus" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarilaisuus" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Skientologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintolaisuus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhiläisyys" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualismi" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taolaisuus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaariuniversalismi" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jesidismi" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zarathustralaisuus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Vessat" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Huomio" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Tietoja muille kartoittajille elementistä, sen luomisen tarkoituksesta tai " +"vihjeitä parannusten suhteen." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Valitse tyyppi" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Valmis" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nimetön paikka" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Asukasluku:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Korkeus:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Aukioloajat:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetin käyttö:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Uskonto:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Vessat:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Pääsy pyörätuolilla:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Puhelin:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Geo URI:n jäsentäminen epäonnistui" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "kyllä" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "rajoitettu" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "suunniteltu esteettömäksi" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Paikkaa ei löytynyt OpenStreetMapista" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-osoite ei ole kelvollinen" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaatit osoitteessa eivät ole kelvolliset" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Osoite ei ole tuettu" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Alkupisteestä %s päätepisteeseen %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ladataan karttatiiliä tulostusta varten" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Voit perua tulostuksen, jos siinä kestää liian kauan" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Peru tulostus" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lisää välisijainti" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Poista välisijainti" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Käänteinen reitti" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lisää %s sovellukseen %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI:n avaaminen epäonnistui" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Avaa sovelluksella %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "tiedoston lataaminen epäonnistui" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Arvioitu aika: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Matkareitit tarjoaa %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Aloita %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Aloita" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Kävele %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Saavu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Saavu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Näytä kävelyohjeet" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Piilota kävelyohjeet" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Lataa aiemmat vaihtoehdot" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Lataa myöhemmät vaihtoehdot" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aiempia vaihtoehtoja ei löytynyt." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Myöhempiä vaihtoehtoja ei löytynyt." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tälle reitille ei löytynyt aikataulutietoja." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tälle reitille ei löytynyt palveluntarjoajaa." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuutti" +msgstr[1] "%d minuuttia" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d tunti" +msgstr[1] "%d tuntia" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d tunti" +msgstr[1] "%d:%02d tuntia" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "kellon ympäri" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "auringonnoususta auringonlaskuun" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "päivittäin" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "yleiset vapaapäivät" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "koulujen vapaapäivät" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ei avoinna" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kiinteä" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "pääte" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "palvelu" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tarkkuus: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tuntematon" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tarkka" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f t" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Jatka %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Jatka" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Käänny vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Käänny vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Käänny hieman vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Käänny hieman vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Käänny terävästi vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Käänny terävästi vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Käänny oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Käänny oikealle" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Käänny hieman oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Käänny hieman oikealle" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Käänny terävästi oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Käänny terävästi oikealle" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Kiertoliittymässä ota poistumistie %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Kiertoliittymässä ota poistumistie kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Mene kiertoliittymään" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ota hissi ja jää pois kerroksessa %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Ota hissi" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Tee u-käännös vasemmalle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Tee u-käännös vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Tee u-käännös oikealle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Tee u-käännös oikealle" + +#~ msgid "Add destination" +#~ msgstr "Lisää välipiste" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Reittihaun tarjoaa OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Avaa muussa sovelluksessa" + +#~ msgid "Press enter to search" +#~ msgstr "Paina enter etsiäksesi" + +#~ msgid "Quit" +#~ msgstr "Lopeta" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Avaa muototaso…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Lataa karttataso" + +#~ msgid "Open Layer" +#~ msgstr "Avaa taso" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Sijaintia ei löytynyt" + +#~ msgid "Country code: %s" +#~ msgstr "Maanumero: %s" + +#~ msgid "Population: %s" +#~ msgstr "Asukasluku: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pääsy pyörätuolilla: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON-tiedoston jäsentäminen epäonnistui" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Viimeksi tunnettu sijainti ja tarkkuus" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Viimeksi tunnettu sijainti (leveys ja pituus asteissa) ja tarkkuus " +#~ "(metreissä)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Käyttäjän viimeksi tunnetun sijainnin kuvaus." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Asetettiinko viimeksi tunnettu sijainti käyttäjän toimesta." + +#~ msgid "I’m here!" +#~ msgstr "Minä, minä olen täällä!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelliitti" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..a21f5aff --- /dev/null +++ b/po/fr.po @@ -0,0 +1,1845 @@ +# French Translation of GNOME Maps. +# Copyright (C) 2013-2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ouharzoune Mohammed , 2013 +# Claude Paroz , 2013-2017, 2020 +# Alexandre Franke , 2016. +# Guillaume Bernard , 2014, 2015, 2016. +# Alain Lojewski ,2018 +# Charles Monzat , 2018-2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-03 09:06+0100\n" +"Last-Translator: Claude Paroz \n" +"Language-Team: GNOME French Team \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Cartes de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recherche d’emplacements autour du monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L’application Cartes vous donne un accès rapide à des cartes du monde " +"entier. Elle permet de trouver rapidement un emplacement en recherchant par " +"ville ou par rue, ou de situer un endroit de rencontre avec un ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Les cartes utilisent la base de données collaborative OpenStreetMap, à " +"laquelle contribuent des centaines de milliers de personnes dans le monde " +"entier." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vous pouvez même chercher des lieux spécifiques, comme « Restaurants à côté " +"de la Cathédrale de Strasbourg » ou « Hôtels à côté d’Alexanderplatz à " +"Berlin »." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Le projet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Cartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une application cartographique simple" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Cartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d’afficher votre emplacement sur la carte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "dernier emplacement affiché" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonnées du dernier emplacement affiché." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Niveau de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type de carte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Le type de carte à afficher (plan, satellite, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Taille de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Taille de la fenêtre (hauteur et largeur)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Position de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Position de la fenêtre (X et Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenêtre agrandie" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "État d’agrandissement de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de résultats de recherche" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de résultats d’une recherche par géocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de positions récentes à conserver" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de positions récemment visitées à conserver." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre d’itinéraires récents à conserver" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre d’itinéraires récemment visités à conserver." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidentialité d’annonce de la localisation sur Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation sur Facebook. Les valeurs possibles sont : EVERYONE (tout le " +"monde), FRIENDS_OF_FRIENDS (amis des amis), ALL_FRIENDS (tous les amis) or " +"SELF (soi)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidentialité d’annonce de la localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation Foursquare. Les valeurs possibles sont : public (publiques), " +"followers (personnes qui me suivent) ou private (privé)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Diffusion sur Facebook des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Facebook associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Diffusion sur Twitter des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Twitter associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d’utilisateur ou adresse électronique OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indique si l’utilisateur s’est identifié pour modifier des données " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Type de transport utilisé lors du dernier itinéraire" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilité" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publier sur Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publier sur Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuler" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "A_nnoncer sa localisation" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tout le monde" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amis des amis" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Juste les amis" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Juste moi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publique" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personnes qui me suivent" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinéraire depuis ici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ajouter une destination intermédiaire" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinéraire jusqu’à ce point" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Qu’y a-t-il ici ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copier l’emplacement" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Ajouter à OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportation de l’affichage" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclure l’itinéraire et les marqueurs" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Général" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afficher les raccourcis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Rechercher" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitter" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afficher la carte" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrière" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Afficher/masquer l’échelle" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passer en vue cartographique" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passer en vue aérienne" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ouvrir une couche de formes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Ouvrir une couche de formes…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activer les services de localisation pour trouver votre position." + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuler" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localisation" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configurer un compte OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exporter comme image" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "À propos de Cartes" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Choisir le type de carte" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zoom arrière" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Basculer les favoris" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Cartes est hors ligne !" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Cartes a besoin d’une connexion Internet active et fonctionnelle, mais " +"aucune n’a été trouvée." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Vérifiez votre connexion et vos paramètres de proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Ajouter à un nouvel itinéraire" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partager l’emplacement" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marquer comme favori" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Annoncer cet emplacement comme localisation" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S’identifier pour modifier des " +"cartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aider à l’amélioration des cartes avec\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adresse électronique" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mot de passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "S’identifier" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Vous n’avez pas de compte ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Désolé, ça n’a pas fonctionné. Veuillez réessayer ou visiter\n" +"OpenStreetMap pour réinitialiser votre mot de passe." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Le code de vérification ne correspond pas, essayez encore une fois." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Saisissez le code de vérification affiché ci-dessus" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Vérifier" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Vous êtes inscrit" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Votre compte OpenStreetMap est actif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Se déconnecter" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rue" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numéro" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Code postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ville" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Aucun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Ajouter un champ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaire" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Les modifications de la carte seront visibles sur toutes\n" +"les cartes qui utilisent des données OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Dernièrement utilisé" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Suivant" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montrer plus d’informations" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Aucun résultat trouvé" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Faites glisser pour modifier l’ordre de l’itinéraire" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ouvrir l’emplacement" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copier" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Envoyer vers…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ouvrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inverser la visibilité" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recherche d’itinéraire avec GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Les itinéraires par transport public sont fournis par des services tiers\n" +"GNOME ne peut garantir l’exactitude des itinéraires et horaires présentés.\n" +"Notez que certains fournisseurs ne présentent pas toujours tous les modes de\n" +"transport disponibles, par ex. un fournisseur national n’indiquerait peut-être\n" +"pas les lignes aériennes ou un fournisseur local pourrait omettre les trains " +"régionaux\n." +"Les noms et marques affichés doivent être considérés comme des marques " +"déposées, le cas échéant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montrer plus de résultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Masquer les arrêts et informations intermédiaires" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afficher les arrêts et informations intermédiaires" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir maintenant" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Départ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivée" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afficher" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Métros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Bateaux" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lieu actuel" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomez pour ajouter un emplacement !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trouver une structure de tuiles dans le répertoire" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Échec d’analyse d’un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributs obligatoires manquants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trouver l’élément OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Un chemin vers un répertoire local de structure de tuiles" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Afficher la version du logiciel" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorer la disponibilité du réseau" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Sélectionner un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Chargement" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Sélectionner un lieu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Facebook. " +"Veuillez en sélectionner un dans cette liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Foursquare. " +"Veuillez en sélectionner un dans cette liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Annoncer sa localisation à %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Écrire un message optionnel pour votre annonce de localisation à %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Une erreur est survenue" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trouver « %s » sur le réseau social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trouver un endroit correspondant pour annoncer sa localisation " +"ici." + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Les informations d’authentification ont expiré, ouvrez Comptes en ligne pour " +"vous connecter et activer ce compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Rien n’a été trouvé à cet endroit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L’emplacement a été ajouté à la carte, notez que cela peut prendre un moment " +"avant qu’il n’apparaisse sur la carte et dans les résultats de recherche." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Cartes situées à %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Le système de fichiers est en lecture seule" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vous n’avez pas la permission d’enregistrer à cet endroit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Le dossier n’existe pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Aucun nom de fichier indiqué" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d’exporter l’affichage" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordonnée non valable" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erreur d’analyse" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "géométrie inconnue" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Échec de la recherche d’itinéraire." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Aucun itinéraire trouvé." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "C’est parti !" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Tous les fichiers de couches" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Échec à la connexion au service de localisation" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Ouharzoune Mohammed \n" +"Claude Paroz \n" +"Guillaume Bernard " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Une application cartographique pour GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2019 Red Hat, Inc. et les auteurs de Cartes de GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Données cartographiques de %s et contributeurs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Couches de données cartographiques fournies par %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Recherche fournie par %s utilisant %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Le type de fichier n’est pas pris en charge" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Échec d’ouverture de la couche" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Échec d’ouverture de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d’utilisateur ou mot de passe incorrect" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Mauvaise requête" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objet non trouvé" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, quelqu’un d’autre vient de modifier l’objet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L’objet a été supprimé" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Le chemin ou la relation se réfère à des enfants qui n’existent pas" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Le nom officiel. C’est en général ce qui est écrit sur l’enseigne." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Site Web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Le site officiel. Essayez d’utiliser la forme la plus simple pour l’URL, " +"c’est-à-dire http://example.com au lieu de http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Téléphone" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numéro de téléphone. Utilisez le format international, en commençant par un " +"signe +. Attention aux lois locales sur la vie privée, surtout pour les " +"numéros de téléphone des particuliers." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Le format utilisé devrait comprendre le code langue et le titre de " +"l’article, comme « fr:Titre de l’article »." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Heures d’ouverture" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Voir le lien dans l’étiquette pour de l’aide sur le format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Élévation (hauteur au-dessus du niveau de la mer) d’un point en mètres." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Accès aux fauteuils roulants" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Oui" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limité" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Réservé" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Accès à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Filaire" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaïsme" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Bouddhisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianisme" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindouisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Plusieurs religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universaliste" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vaudou" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yézidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toilettes" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informations utilisées pour informer d’autres cartographes sur les " +"informations non évidentes sur un élément, l’intention de l’auteur lors de " +"sa création ou des indications pour de possibles améliorations." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Ajout à OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Sélectionner le type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Terminé" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Emplacement sans nom" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Population :" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude :" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Heures d’ouverture :" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Accès à Internet :" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion :" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toilettes :" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Accès aux fauteuils roulants :" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Téléphone :" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Échec à l’analyse de la Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "oui" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limité" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "non" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "réservé" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Emplacement introuvable sur OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "L’URL de OpenStreetMap n’est pas valide" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Les coordonnées dans l’URL ne sont pas valides" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "L’URL n’est pas pris en charge" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s à %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Chargement des tuiles de carte pour l’impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vous pouvez interrompre l’impression si cela prend trop de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l’impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ajouter un emplacement intermédiaire" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Supprimer l’emplacement intermédiaire" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Chemin inverse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Ajouter %s à %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Échec d’ouverture de l’URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Ouvrir avec %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "impossible de charger le fichier" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimé : %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinéraires fournis par %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Départ de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Départ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Marcher %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrivée à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Arrivée" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montrer les instructions de marche à pied" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Masquer les instructions de marche à pied" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Charger les alternatives précédentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Charger les alternatives suivantes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aucune alternative précédente trouvée." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Aucune alternative suivante trouvée." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Aucun horaire trouvé pour cet itinéraire." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Aucun fournisseur trouvé pour cet itinéraire." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d heure" +msgstr[1] "%d heures" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d heure" +msgstr[1] "%d:%02d heures" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "24h/24" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "du lever au coucher du soleil" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "tous les jours" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "congés publics" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "congés scolaires" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "fermé" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "filaire" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "service" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Précision de la position : %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Inconnue" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exacte" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuer sur %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continuer" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Tourner à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Tourner à gauche" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Tourner légèrement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Tourner légèrement à gauche" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Tourner franchement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Tourner franchement à gauche" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Tourner à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Tourner à droite" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Tourner légèrement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Tourner légèrement à droite" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Tourner franchement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Tourner franchement à droite" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dans le giratoire, prendre la sortie %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dans le giratoire, prendre la sortie vers %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "S’engager dans le giratoire" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendre l’ascenseur et sortir à %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Prendre l’ascenseur" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faire un demi-tour à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Faire un demi-tour à gauche" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faire un demi-tour à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Faire un demi-tour à droite" diff --git a/po/fur.po b/po/fur.po new file mode 100644 index 00000000..418418b6 --- /dev/null +++ b/po/fur.po @@ -0,0 +1,1903 @@ +# Friulian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Fabio Tomat , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-21 22:14+0000\n" +"PO-Revision-Date: 2020-01-27 08:56+0100\n" +"Last-Translator: Fabio Tomat \n" +"Language-Team: Friulian \n" +"Language: fur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapis GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cjate puescj tor atôr pal mont" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapis ti da un acès veloç a lis mapis ator pal mont. Ti permet di cjatâ di " +"corse il puest che ti interesse cirint citât o vie, o cirî un puest dulà " +"cjatâsi cuntun ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapis al dopre il database colaboratîf OpenStreetMap, fat da centenârs di " +"miârs di personis ator pal mont." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tu puedis ancje cirî par specifics gjenars di puescj, come \"Pubs near Main " +"Street, Boston\" o \"Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Il progjet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapis" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une semplice aplicazion par lis mapiss" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapis;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet ae tô posizion di jessi mostrade te mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultime posizion viodude" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinadis de ultime posizion viodude." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel di ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Gjenar di mape" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il gjenar di mape di mostrâ (stradâl, aerie, ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimension barcon" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimension barcon (largjece e altece)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizion barcon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizion barcon (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Barcon massimizât" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stat massimizât dal barcon" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Massim numar di risultâts di ricercje" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Massim numar di risultâts de ricercje da codifiche gjeografiche." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numar di lûcs resints di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numar di lûcs resints viodûts di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numar di stradis resintis di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numar di stradis resintis viodudis di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazions privacy dai check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazion pe privacy dai check-in su Facebook doprade. I valôrs " +"pussibii a son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazions pe privacy dai check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazion pe privacy dai check-in doprade. I valôrs pussibii a son: " +"public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmission a Facebook dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un post tal account " +"Facebook associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmission a Twitter dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un tweet tal account " +"Twitter associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Non utent o direzion e-mail OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Al indiche se l'utent al è jentrât te session par modificâ dâts " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultin gjenar di traspuart doprât par spostâsi" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitât" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publiche su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publiche su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anule" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ducj" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amîs di amîs" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nome amîs" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nome jo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personis che a mi seguissin" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privât" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ce isal chi?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Copie posizion" + +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Espuarte viodude" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Espuarte" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclût stradis e marcadôrs" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Gjenerâl" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostre scurtis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cîr" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Cambie plan stradis" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampe strade" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Jes" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Viodude mape" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumente ingrandiment" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuìs ingrandiment" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Cambiâ scjale" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passe ae viodude stradâl" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passe ae viodude aerie" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vierç strât sagome" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Vierç strât sagome…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ativâ i servizis di localizazion par cjatâ la tô posizion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anule" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazions di localizazion" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configure Account OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Espuarte come Imagjin" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtis tastiere" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Informazions su Mapis" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Sielç il gjenar di mape" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Impiçulìs" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Ingrandìs" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Ative/disative plan di percors" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Ative/disative preferîts" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Stampe Strade" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapis al è offline!" + +# cjatâ'nt indi? +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapis a scugne vê une conession internet ative par podê funzionâ, ma no si " +"'nt rive a cjatâ une." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Controle le tô conession e lis impostazions proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Zonte a gnûf percors" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Condivît posizion" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Segne come preferît" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Fâs il check-in chi" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jentre par modificâ lis mapis" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Jude a miorâ la mape doprant un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Jentre" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "No tu âs un account?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Mi displâs, nol funzione. Torne prove o visite\n" +"OpenStreetMap par tornâ a configurâ la tô password." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Il codiç di verifiche nol corispuint, torne prove." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Scrîf il codiç di verifiche mostrât chi parsore" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifiche" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Jentrât" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Il tô account OpenStreetMap al è atîf." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Jes" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Vie" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numar civic" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codiç postâl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Citât" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Gjenar" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nissun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Zonte cjamp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Coment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"I cambiaments de mape a saran visibii in dutis lis mapis che a doprin\n" +"dâts OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Doprâts di resint" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Prossim" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostre plui informazions" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nissun risultât cjatât" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Strissine par cambiâ l'ordin de strade" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Vierç posizion" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copie" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Invie a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Vierç strât sagome" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Vierç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Cambiâ stât visibil" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricercje dal percors cun GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I itineraris di percors pai mieçs publics a son furnîts di servizis di\n" +"tiercis parts.\n" +"GNOME nol pues garantî la justece dai itineraris e dai oraris mostrâts.\n" +"Viôt che cualchi furnidôr al podarès no includi dutis lis modalitâts di " +"traspuart disponibilis,\n" +"p.e. un furnidôr nazionâl al podarès no includi lis tratis aeronautichis e " +"un furnidôr locâl\n" +"al pues no includi i trens regjionâi.\n" +"I nons e lis marchis mostradis si àn di considerâ come marchis regjistradis " +"cuant che si puedin aplicâ." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostre plui risultâts" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Plate fermadis intermedis e informazions" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostre fermadis intermedis e informazions" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partî cumò" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partî tor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Rivâ tor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostre" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghets" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Posizion atuâl" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Aumente ingrandiment par zontâ un puest!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ingrandìs" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impussibil cjatâ la struture de piastrele te cartele" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Impussibil analizâ il document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "E mancjin i atribûts necessaris" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impussibil cjatâ l'element OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Un percors par une struture de cartele locâl des piastrelis" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Mostre la version dal program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignore disponibilitât rêt" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezione un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Daûr a cjamâ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezione un lûc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Facebook. Selezionâ un di " +"cheste liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Foursquare. Selezionâ un di " +"cheste liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in là di %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivi un coment opzionâl pal check-in là di %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Si è verificât un erôr" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No rivi a cjatâ “%s” tal servizi social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impussibil cjatâ un puest adat pal check-in in chest lûc" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Lis credenziâi a son scjadudis, vierç Accounts Online par coneti e abilitâ " +"chest account" + +#: src/contextMenu.js:93 +msgid "Route from here" +msgstr "Strade di chi" + +#: src/contextMenu.js:95 +msgid "Add destination" +msgstr "Zonte destinazion" + +#: src/contextMenu.js:97 +msgid "Route to here" +msgstr "Strade par rivâ chi" + +#: src/contextMenu.js:123 +msgid "Nothing found here!" +msgstr "Nol è nuie culì!" + +#: src/contextMenu.js:184 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Il lûc al è stât zontât te mape, viôt che al podarès coventâ un pôc prime " +"che al vegni fûr te mape e tai risultâts di ricercje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapis a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il file di sisteme al è in modalitât dome-leture" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tu âs i permès par salvâ là" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La cartele no esist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nissun non file specificât" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impussibil espuartâ la viodude" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinade no valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erôr tal analizâ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "gjeometrie no valide" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Richieste dal percors falide." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Percors no cjatât." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Invie!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Ducj i file di strât" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Impussibil conetisi al servizi di localizazion" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "Fabio Tomat, " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Une aplicazion di GNOME par lis mapis" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e i autôrs di GNOME Mapis" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dâts mape di %s e colaboradôrs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Tassei mape furnîts di %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricercje furnide di %s doprant %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Gjenar di file no supuartât" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Impussibil vierzi il strât" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Impussibil vierzi il GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Non utent o password sbaliâts" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richieste no juste" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Element no cjatât" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, cualchidun altri al à apene modificât l'element" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'element al è stât eliminât" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La vie o la relazion si riferìs a fîs no-esistents" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Non" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Il non uficiâl. Chest al è, di solit, chel che al ven fûr tes firmis." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Recapit" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Sît web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sît web uficiâl. Cîr di doprâ la plui semplice forme di direzion, par " +"esempli http://example.com invezit di http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numar di telefon. Dopre il formât internazionâl, tacant cun un segn +. Sta " +"atent das leçs locâi su le privacy, in particolâr par numars di telefon " +"privâts." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedie" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formât doprât al à di includi il codiç de lenghe e il titul dal articul " +"come \"fur:Titul dal articul\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Orari di viertidure" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Viôt il leam te etichete pal jutori sul formât." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Popolazion" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudin" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevazion (altece sul nivel dal mâr) di un pont in metris." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acès disabii" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitât par disabii" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Specific par disabii" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cablade" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminâl" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servizi" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religjon" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisim" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisim" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisim" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianitât" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisim" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Induisim" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisim" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisim" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Religjons multiplis" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisim" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisim" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisim" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisim" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisim" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalisim Unitari" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisim" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisim" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Gabinets" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informazion doprade par informâ altris mapadôrs su no evidentis informazions " +"suntun element, l’intent dai autôrs tal creâlu o sugjeriments par ulteriôrs " +"mioraments." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Selezione un gjenar" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fat" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Puest cence non" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Popolazion:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudin:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Orari di viertidure:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acès internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religjon:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Gabinets:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acès disabii:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Impussibil analizâ il Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sì" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitât pai disabii" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "specific par disabii" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lûc no cjatât su OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL di OpenStreetMap nol è valit" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Lis coordenadis tal URL no son validis" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nol è supuartât" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Di %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Daûr a cjariâ i ricuadris de mape par stampâ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tu puedis fermâ di stampâ se al sta masse" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ferme stampe" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zonte posizion de vie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gjave posizion de vie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percors inviers" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Zonte %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Impussibil vierzi il URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Vierç cun %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "impussibil cjariâ il file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp stimât: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris furnîts di %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partìs di %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partence" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Cjaminâ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Rive a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Rivade" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostre istruzions par lâ a pît" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Plate istruzions par lâ a pît" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cjariâ alternativis plui adore" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cjariâ alternativis plui tart" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nissune alternative plui adore cjatade." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nissune alternative plui tart cjatade." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e di %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Nissun dât di oraris cjatât par chest percors." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Nissun furnidôr cjatât par chest percors." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minût" +msgstr[1] "%d minûts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ore" +msgstr[1] "%d oris" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ore" +msgstr[1] "%d:%02d oris" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dut il dì" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "di un scûr a chel altri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ogni dì" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "festîfs" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacancis di scuele" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "no viert" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cablade" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminâl" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servizi" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de posizion: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "No cognossût" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Di precîs" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue su %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolte a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Svolte a çampe" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolte di pôc a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Svolte di pôc a çampe" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolte di bot a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Svolte di bot a çampe" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolte a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Svolte a diestre" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolte di pôc a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Svolte di pôc a diestre" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolte di bot a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Svolte di bot a diestre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Inte rotatorie, cjape la jessude %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Inte rotatorie, cjape la jessude par %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Cjape la rotatorie" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Cjape l'assensôr e jes a %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Cjape l'assensôr" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fâs une inversion a U a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Fâs une inversion a U a çampe" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fâs une inversion a U a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Fâs une inversion a U a diestre" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ricercje dal percors cun OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Vierç cuntune altre aplicazion" + +#~ msgid "Press enter to search" +#~ msgstr "Frache Invie par cirî" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Jes" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vierç strât sagome…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cjarie strât de mape" + +#~ msgid "Open Layer" +#~ msgstr "Vierç Strât" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Codiç paîs: %s" + +#~ msgid "_Share" +#~ msgstr "_Condivît" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'ultime posizion e precision cognossude" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'ultime posizion (latitudin e longjitudin in grâts) e precision (in " +#~ "metris) cognossude." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrizion de ultime posizion dal utent." + +#~ msgid "User set last known location" +#~ msgstr "Ultime posizion cognossude impuestade dal utent." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indiche se l'ultime posizion cognossude a je stade impuestade a man dal " +#~ "utent." + +#~ msgid "I’m here!" +#~ msgstr "O soi chi!" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ga.po b/po/ga.po new file mode 100644 index 00000000..b7753be9 --- /dev/null +++ b/po/ga.po @@ -0,0 +1,637 @@ +# Irish translations for gnome-maps package. +# Copyright (C) 2013-2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Seán de Búrca , 2013-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps.master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-01 14:40-0600\n" +"PO-Revision-Date: 2015-10-01 14:52-0600\n" +"Last-Translator: Seán de Búrca \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " +"4;\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:373 +msgid "Maps" +msgstr "Léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Feidhmchlár simplí léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Léarscáileanna;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Méid na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Méid na fuinneoige (leithead agus airde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Ionad na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +#, fuzzy +msgid "Window position (X and Y)." +msgstr "Ionad na fuinneoige (x agus y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Uasmhéadaíodh an fhuinneog" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +#, fuzzy +msgid "Window maximization state" +msgstr "Staid uasmhéadaithe na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent routes to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited routes to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Maidir Leis Seo" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Scoir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cealaigh" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Príobháideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Cad atá anseo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Cóipeáil Suíomh" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Socruithe Suímh" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Téigh go dtí an suíomh reatha" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Roghnaigh cineál léarscáile" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Tá Léarscáileanna as líne!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Cuir le bealach nua" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Oscail le feidhmchlár eile" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Oscail suíomh" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Oscail" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Cuardach bealaí ag GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Taispeáin tuilleadh torthaí" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:209 +msgid "Current location" +msgstr "Suíomh reatha" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Cruinneas: %s" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../src/application.js:86 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Á luchtú" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Roghnaigh áit" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +msgid "An error has occurred" +msgstr "Tharla earráid" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/mainWindow.js:321 +msgid "Failed to connect to location service" +msgstr "" + +#: ../src/mainWindow.js:326 +msgid "Position not found" +msgstr "" + +#: ../src/mainWindow.js:371 +msgid "translator-credits" +msgstr "Seán de Búrca " + +#: ../src/mainWindow.js:374 +msgid "A map application for GNOME" +msgstr "Feidhmchlár léarscáile do GNOME" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Cód poist: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Cód tíre: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Daonra: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Uaireanta oscailte: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Vicipéid" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Bealach isteach do chathaoireacha rothaí: %s" + +#: ../src/placeEntry.js:215 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: ../src/place.js:121 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:128 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: ../src/place.js:134 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:141 +msgid "designated" +msgstr "" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Bealach gan aimsiú." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "" + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Tosaigh!" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:230 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Am measta: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "gach lá" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Anaithnid" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:259 +msgid "Exact" +msgstr "" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f n" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f cm" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mí" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f tr" diff --git a/po/gd.po b/po/gd.po new file mode 100644 index 00000000..573cf67f --- /dev/null +++ b/po/gd.po @@ -0,0 +1,1621 @@ +# Scottish Gaelic translation for gnome-maps. +# Copyright (C) 2016 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# GunChleoc , 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-20\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product" +"=gnome-maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-09-11 20:24+0000\n" +"PO-Revision-Date: 2018-03-02 10:29+0100\n" +"Last-Translator: GunChleoc \n" +"Language-Team: Fòram na Gàidhlig\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " +"(n > 2 && n < 20) ? 2 : 3;\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapaichean GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Lorg àitichean air feadh an t-saoghail" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Bheir Mapaichean dhut inntrigeadh luath dha mhapaichean air feadh an t-" +"saoghail. Leigidh e leat àite a lorg gu luath a-rèir baile no sràide no an t-" +"àite a lorg far a bheil thu airson tachairt ri caraid." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Cleachdaidh Mapaichean stòr-dàta OpenStreetMap co-obrachail a chaidh a " +"chruthachadh leis na mìltean mòra de dhaoine o fheadh an t-saoghail." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"’S urrainn dut fiù ’s lorg airson ionadan sònraichte, can “Taighean-seinnse " +"faisg air Sràid nam Prionnsachan, Dùn Èideann” no “Taighean-òsta faisg air " +"Sràid Sauchiehall, Glaschu”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapaichean" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Aplacaid mhapaichean shimplidh" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;mapaichean;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Faodaidh far a bheil thu a nochdadh air a’ mhapa le seo." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "an t-ionad mu dheireadh a chaidh a shealltainn" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Co-chomharran an ionaid mu dheireadh a chaidh a shealltainn." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Meud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Meud na h-uinneige (leud ’s àirde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Ionad na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Ionad na h-uinneige (x is y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Làn-mheud air an uinneag" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Staid làn-mheud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "An àireamh as motha de thoraidhean luirg" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "An àireamh as motha de thoraidhean luirg o lorg geocode." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Àireamh dhe dh’ionadan o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" +"Àireamh dhe dh’ionadan air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Àireamh dhe shlighean o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "" +"Àireamh dhe shlighean air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Facebook. Seo na luachan as urrainn dhut cleachdadh: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS no SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Foursquare. Seo na luachan as urrainn dhut cleachdadh: public, " +"followers no private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Craoladh Facebook airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar phost sa " +"chunntas Facebook a tha co-cheangailte ris a’ chunntas Foursquare gus nach " +"bu chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Craoladh Twitter airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar tweet sa " +"chunntas Twitter a tha co-cheangailte ris a’ chunntas Foursquare gus nach bu " +"chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Ainm-cleachdaiche no seòladh puist-d OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Innsidh seo an do clàraich an cleachdaiche a-steach gus dàta OpenStreetMap a " +"dheasachadh gus nach do chlàraich." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Suidhich cunntas OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Ath-ghoiridean a’ _mheur-chlàir" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Mu dhèidhinn" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Faicsinneachd" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Postaich air Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Postaich air Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Sguir dheth" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "Noc_hd air" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "A h-uile duine" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Caraidean nan caraidean" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Caraidean a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Mise a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Poblach" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Daoine a leanas orm" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Prìobhaideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Dè tha an-seo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Dèan lethbhreac dhen ionad" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Às-phortaich mar dhealbh" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Às-phortaich an sealladh" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "À_s-phortaich" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Gabh a-steach an t-slighe is na comharran" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Coitcheann" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Seall na h-ath-ghoiridean" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Lorg" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Sealladh a’ mhapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Sùm a-steach" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Sùm a-mach" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toglaich an sgèile" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Fosgail breath" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Luchdaich breath a’ mhapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Cuir seirbheisean ionaid air gus lorg far a bheil thu" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Roghainnean ionaid" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Tagh seòrsa a’ mhapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Toglaich na h-annsachdan" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "Tha Mapaichean far loidhne!" + +#: ../data/ui/main-window.ui.h:13 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Tha Mapaichean feumach air ceangal dhan eadar-lìon gus obrachadh mar bu " +"chòir ach cha deach gin a lorg." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Thoir sùil air roghainnean a’ cheangail ’s a’ phrogsaidh agad." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Cuir ri slighe ùr" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Fosgail le aplacaid eile" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Comharraich ’na h-annsachd" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Nochd seo" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Cunntas OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Clàraich a-steach gus mapaichean a " +"dheasachadh" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Cuidich gus piseach a thoirt air a’ mhapa\n" +"le cunntas OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Post-d" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Facal-faire" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Clàraich a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Nach eil cunntas agad?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Tha sinn duilich ach cha do dh’obraich sin. Feuch ris a-rithist no tadhail " +"air\n" +"OpenStreetMap gus am facal-faire agad ath-shuidheachadh." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Cha robh an còd dearbhaidh mar bu chòir, am feuch thu ris a-rithist?" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Cuir a-steach an còd dearbhaidh a chì thu gu h-àrd" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Dearbhaich" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Air do chlàradh a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Tha an cunntas OpenStreetMap agad gnìomhach." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Clàraich a-mach" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Sràid" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Àireamh an taighe" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còd-puist" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Baile" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Seòrsa" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Chan eil gin" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Cuir raon ris" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Beachd" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Chithear atharraichean a’ mhapa air a h-uile mapa a chleachdas\n" +"dàta OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Air an cleachdadh o chionn ghoirid" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Sguir dheth" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Air adhart" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Seall barrachd fiosrachaidh" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Brùth air Enter airson lorg" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cha deach toradh a lorg" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Slaod gus òrdugh na slighe atharrachadh" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Fosgail ionad" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "F_osgail" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Fosgail breath" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Toglaich an fhaicsinneachd" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Lorg shlighean le GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Lorg shlighean le OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Seall barrachd toraidhean" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "An t-ionad làithreach" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Pongalachd: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Sùm a-steach gus ionad a chur ris!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Ceart ma-thà" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Cha deach leinn structar leacagan a lorg sa phasgan" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Dh’fhàillig le parsadh na sgrìobhainn XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Tha roghainnean riatanach a dhìth" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Cha deach leinn eileamaid OSM a lorg" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Slighe gu structar pasgain leacagan ionadail" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Tagh cunntas" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "’Ga luchdadh" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Tagh àite" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Facebook. Tagh fear " +"on liosta seo." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Foursquare. Tagh fear " +"on liosta seo." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Nochd %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Sgrìobh teachdaireachd ma thogras tu gus %s a nochdadh." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "Thachair mearachd" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Cha b’ urrainn dhuinn “%s” a lorg san t-seirbheis sòisealta" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Cha b’ urrainn dhuinn àite iomchaidh a lorg gus an t-ionad seo a nochdadh" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Dh’fhalbh an ùine air an teisteas, fosgail na cunntasan air loidhne gus " +"clàradh a-steach agus an cunntas seo a chur an comas" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Slighe on a sheo" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Cuir ceann-uidhe ris" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Slighe dhan a sheo" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "Cha deach dad a lorg an-seo!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Chaidh an t-ionad a chur ris a’ mhapa. Thoir an aire gun doir e greis mhath " +"mus nochd e air a’ mhapa agus ann an toraidhean luirg." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Tha an siostam-faidhlichean ri leughadh a-màin" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Chan eil cead agad gus rud a shàbhaladh an-seo" + +#: ../src/exportViewDialog.js:160 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Chan eil am pasgan ann" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Cha deach ainm-faidhle a shònrachadh" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Cha b’ urrainn dhuinn an sealladh às-phortadh" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "co-chomharran mì-dhligheach" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "mearachd parsaidh" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geomatras nach aithne dhuinn" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Dh’fhàillig le iarrtas slighe." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "Cha deach slighe a lorg." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Tòisich!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "A h-uile faidhle breatha" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Dh’fhàillig an ceangal ris an t-seirbheis ionadan" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "GunChleoc " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Aplacaid mhapaichean airson GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Cha chuirear taic ris an t-seòrsa faidhle" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "Dh’fhàillig le fosgladh na breatha" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "Dh’fhàillig le fosgladh GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:623 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" +"Chan eil an t-ainm-cleachdaiche no chan eil am facal-faire mar bu chòir" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Shoirbhich leis" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Droch iarrtas" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "Cha deach an t-oibseact a lorg" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Còmhstri, tha cuideigin eile dìreach air an t-oibseact atharrachadh" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Chaidh an t-oibseact a sguabadh às" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tha an t-slighe no an dàimh a’ toirt iomradh air clann nach eil ann" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Ainm" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "Ainm oifigeil. Seo na nochdas air sanasan mar as trice." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Seòladh" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Làrach-lìn" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"An làrach-lìn oifigeil. Feuch an cleachd thu an dreach as bunasaiche dhen " +"URL, can http://ball-eisimpleir.com seach http://ball-eisimpleir.com/index." +"html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Fòn" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"An àireamh fòn. Cleachd am fòrmat eadar-nàiseanta, a’ tòiseachadh le samhla " +"+. Thoir an aire air laghan prìobhaideachd ionadail, gu h-àraidh a thaobh " +"àireamhan prìobhaideach." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "An Uicipeid" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Bu chòir dhan fhòrmat a chleachdas tu an còd cànan agus tiotal na h-aiste a " +"ghabhail a-steach, can “gd:Tiotal na h-aiste”." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Uairean fosglaidh" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Faic an ceangal san leubail airson cobhair mun fòrmat." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Sluagh" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Àirde" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Meatair a dh’àirde (os cionn na mara) aig puing." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Inntrigeadh cathrach-cuibhle" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Tha inntrigeadh ann" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "Chan eil inntrigeadh ann" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Cuingichte" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Ainmichte" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Inntrigeadh an eadar-lìn" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "WiFi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Le uèir" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Tèirmineal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Seirbheis" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Creideamh" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "An aire" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Tagh seòrsa" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Deiseil" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Sluagh:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Àirde:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Uairean fosglaidh:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Inntrigeadh an eadar-lìn:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Creideamh:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Taighean-beaga:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Inntrigeadh cathrach-cuibhle:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Fòn:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Dh’fhàillig le parsadh a’ Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "tha inntrigeadh ann" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "cuingichte" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "chan eil inntrigeadh ann" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "ainmichte" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "O %s gu %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "A’ luchdadh leacagan a’ mhapa a chum clò-bhualaidh" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "’S urrainn dhut sgur dhen chlò-bhualadh ma bheir e ro fhada" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Sguir dhen chlò-bhualadh" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "Dh’fhàillig le fosgladh URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "dh’fhàillig le luchdadh faidhle" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tuairmse air an ùine: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +#| msgid "Start!" +msgid "Start" +msgstr "Toiseach" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mhionaid" +msgstr[1] "%d mhionaid" +msgstr[2] "%d mionaidean" +msgstr[3] "%d mionaid" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d uair a thìde" +msgstr[1] "%d uair a thìde" +msgstr[2] "%d uairean a thìde" +msgstr[3] "%d uair a thìde" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d uair a thìde" +msgstr[1] "%d:%02d uair a thìde" +msgstr[2] "%d:%02d uairean a thìde" +msgstr[3] "%d:%02d uair a thìde" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "fad an latha" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "o èirigh gu laighe na grèine" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "gach latha" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "saor-làithean poblach" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "saor-làithean sgoile" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "dùinte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "le uèir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "tèirmineal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "seirbheis" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Chan eil fhios" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Pongail" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f mion" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f d" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mì" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s troigh" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mì" + +#~ msgid "%f ft" +#~ msgstr "%f troigh" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 00000000..fa5b8898 --- /dev/null +++ b/po/gl.po @@ -0,0 +1,1832 @@ +# Galician translations for PACKAGE package. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Fran Diéguez , 2013. +# Fran Dieguez , 2013-2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-13 22:25+0100\n" +"Last-Translator: Fran Diéguez \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Busque lugares por todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas dálle acceso a mapas de todo o mundo. Permítelle buscar de forma " +"rápida o lugar que está buscando por cidade ou rúa, ou localizar un lugar " +"para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapa usa a base de datos colaborativa de OpenStreetMap, feita por centos de " +"persoas por todo o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Incluso pode buscar por tipos de localizacións específicos como «Bares cerca " +"de Rúa Nova, Compostela» ou «Puntos WiFi cerca de Praza de Galiza, " +"Vilagarcía»." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "O Proxecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Unha aplicación sinxela de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permitir que se mostre a súa localización no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localización vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localización vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a mostrar (rúas, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño da xanela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño da xanela (ancho e alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición da xanela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición da xanela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Xanela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximizado de xanela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de busca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número de máximo de resultados de busca para as buscas xeolocalizada." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última configuración de privacidade do rexistro de Facebook. Os valores " +"posíbeis son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidade do rexistro de Foursquare. Os valores " +"posíbeis son: public, followers ou private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un mensaxe novo na conta " +"de Facebook asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un chío novo na conta de " +"Twitter asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuario ou enderezo de correo de OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuario iniciou sesión para editar datos en OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "O último tipo de transporte para enrutado usado" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Enviar a Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Enviar a Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Rexistrar" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Só amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Só eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Engadir un destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta a aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Que hai aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localización" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluír rutas e marcadores" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Xeral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atallos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Trocar o planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Saír" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista do mapa" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Afastar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Trocar escala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir á localización actual" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Trocar á vista de rúa" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Trocar á vista aérea" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir a capa de relieve" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Abrir a capa de relieve…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Active os servizos de localización para buscar a súa localización" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Preferencias de localización" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar unha conta de OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exportar como imaxe" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Atallos de _teclado" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Sobre Mapas" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Ir á localización actual" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Escolla o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Afastar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Activar/desactivar o planificador de rutas" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Trocar favoritos" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Imprimir ruta" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapa precisa unha conexión a internet activa para funcionar correctamente, " +"pero non se atopou ningunha." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Comprobe a súa conexión ou preferencias do seu proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Engadir unha nova ruta" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Compartir localización" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como facorito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Rexistrarse aquí" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Iniciar sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Axude a mellorar o mapa, use unha\n" +"conta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo electrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasinal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Iniciar sesión" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Non ten unha conta?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Isto non funcionou. Ténteo de novo ou visite\n" +"OpenStreetMap para restabelecer o seu contrasinal." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificación non coincide, probe de novo." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Escriba o código de verificación mostrado arriba" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Comprobar" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "A súa conta de OpenStreetMap está activa." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Pechar a sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rúa" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ningún" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Engadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Os cambios no mapa serán visíbeis en todos os\n" +"mapas que usen datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usados recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Seguinte" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar máis información" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Non se atoparon resultados" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastrar a orde de cambio de ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localización" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Trocar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Búsqueda de ruta por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Os itinerarios de ruta para o tránsito público están fornecidos por servizos " +"de terceiros.\n" +"GNOME non ofrece ningunha garantía de que os datos e horarios dos " +"itinerarios sexan\n" +"correctos. \n" +"Teña en conta que algúns fornecedores poden non incluír todos os modos " +"dispoñíbeis\n" +"de transporte, por exemplo o fornecedor nacional pode non incluír as " +"aeroliñas, e o \n" +"fornecedor local pode omitir os trens rexionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar máis resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermedias e información" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar paradas intermedias e información" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Saír agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sae ás" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chega ás" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avións" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Localización actual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplíe para engadir unha localización!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Produciuse un fallo ao atopar a estrutura de teselas no cartafol" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Produciuse un fallo ao analizar o XML do documento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan atributos requiridos" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Non foi posíbel atopar o elemento de OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Unha ruta a unha estrutura de directorios de teselas locais" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Mostra a versión do programa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorar a dispoñibilidade da rede" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccione unha conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccione un lugar" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Facebook. Por favor " +"seleccione un desde a lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Foursquare. Por favor " +"seleccione un desde a lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Rexistrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriba unha mensaxe opcional para rexistrarse en %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Produciuse un erro" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Non se pode atopar «%s» no servizo social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Non é posíbel atopar un lugar axeitado para rexistrarse nesta localización" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As súas credenciais expiraron, abra as «Contas en liña» para iniciar sesión " +"e activar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non se atopou nada aquí!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Engadiuse a localización ao mapa, teña en conta que pode tardar algún tempo " +"antes de que se mostre no mapa e nos resultados de busca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é de só lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non ten permiso para gardar aquí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O cartafol non existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nome de ficheiro non especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Non foi posíbel exportar a vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada non válida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro na análise" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "xeometría descoñecida" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Produciuse un fallo na solicitude de ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Non se atopou a ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Comezar!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Todos os ficheiros de capa" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Produciuse un fallo ao conectar co servizo de localización" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "Fran Diéguez , 2013-2020" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Unha aplicación de mapas para GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e os autores de Mapas de GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos do mapa por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Teselas de mapas fornecidas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Busca fornecida por %s usando %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Tipo de ficheiro non admitido" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Produciuse un fallo ao abrir a capa" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Produciuse un fallo ao abrir o GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome de usuario ou contrasinal non correcto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Éxito" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitude non válida" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "O obxecto non se atopou" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguén modificou o obxecto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O obxecto foi eliminado" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "A forma ou relación refírese aos fillos non existentes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é o aparece normalmente nos sinais." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Enderezo" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Sitio web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O sitio web oficial. Tente usar o formulario máis básico de URL p.ex. http://" +"exemplo.gal no lugar de http://exemplo.gal/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use o formato internaciona, comezando polo signo +. Teña " +"en conta as leis de privacidade locais." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato usado debería incluír o código de idioma e o título do artigo como " +"«gl:Título do artigo»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horas de apertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vexa a ligazón na etiqueta para obter axuda no formatado." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Poboación" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre o nivel do mar) do punto en metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acceso con cadeira de rodas" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Si" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Diseñado" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acceso a internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sen fíos" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Con fíos" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servizo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Relixión" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Xainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Xudaismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Múltiples relixións" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cienciloxía" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sixismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalismo unitario" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Xazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para informar a outros mapeadores sobre inforamción non " +"obvia sobre un elemento, un intento do autor de crealo ou pistas sobre " +"futuras melloras." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccione tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Lugar sen nome" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Poboación:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horario de apertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acceso a internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Relixión:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Baño:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acceso con cadeira de rodas:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Teléfono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Produciuse un fallo ao analizar o URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "non" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar non atopada en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "O URL de OpenStreetMap non é válido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL non son válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "O URL non é compatíbel" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Desde %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando teselas do mapa para a impresión" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impresión se isto leva moito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Engadir mediante localización" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar mediante localización" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Invertir ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Engadir %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Produciuse un fallo ao abrir o URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "produciuse un fallo ao cargar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camiñar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chega ás %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucións do camiño" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucións do camiño" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non hai alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non hai alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Non se atoparon datos de horarios para esta ruta." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Non hai un fornecedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "todo o día" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "desde o amencer até a posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "vacacións públicas" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacacións de escola" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "non aberto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "con fíos" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servizo" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Descoñecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exacta" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s pes" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuar en %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continuar" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Xire á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Xire á esquerda" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Xire lixeiramente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Xire lixeiramente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Xire bruscamente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Xire bruscamente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Xire á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Xire á dereita" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Xire lixeiramente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Xire lixeiramente á dereita" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Xire bruscamente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Xire bruscamente á dereita" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotonda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotonda, tome a saída a %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Tome a rotonda" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Colla o ascensor e saia en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Colla o ascensor" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Faga un xiro en U" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Faga un xiro en U á dereita" + +#~ msgid "Add destination" +#~ msgstr "Engadir destino" diff --git a/po/he.po b/po/he.po new file mode 100644 index 00000000..768c97db --- /dev/null +++ b/po/he.po @@ -0,0 +1,1241 @@ +# Hebrew translations for gnome-maps package. +# Copyright (C) 2013 THE gnome-maps'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# יוסף אור בוצ׳קו , 2013. +# Yosef Or Boczko , 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.9.91\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-09 21:43+0300\n" +"PO-Revision-Date: 2016-08-11 16:08+0300\n" +"Last-Translator: Yosef Or Boczko \n" +"Language-Team: עברית <>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural= (n!=1);\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "GNOME מפות" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "מציאת מקומות מסביב לעולם" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"מפות נותן לך גישה מהירה למפות על פני כל העולם. הוא מאפשר לך למצוא במהירות את " +"המקום שאתה מחפש באמצעות חיפוש עיר או רחוב, או לאתר מקום לפגישת חבר." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"מפות משתמש במסד הנתונים השיתופי OpenStreetMap, שנוצר על ידי מאות אלפי אנשים " +"על פני כדור הארץ." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ניתן לחפש גם מקום מסוים, כמו „בית קפה ליד הרחוב הראשי, ירושלים” או „מלון " +"קרוב לאוניברסיטה, תל אביב”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:425 +msgid "Maps" +msgstr "מפות" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "יישום מפות פשוט" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "מפות;מפה;maps;Maps;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "מאפשר למיקום שלך להיראות על המפה." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "last viewed location" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Window size" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Window position" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Window maximized" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Window maximization state" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "הגדרת חשבון OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_צירופי מקשים" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "על אודות" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "יציאה" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "נראה" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "לפרסם ב־Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "לפרסם ב־Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_ביטול" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "ה_רשמה" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "כולם" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "חברים של חברים" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "חברים בלבד" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "רק אני" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "ציבורי" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "עוקבים" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "פרטי" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "מה זה כאן?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "העתקת מיקום" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "ייצוא כתמונה" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "הוספה אל OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "תצוגת ייצוא" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_ייצוא" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "לכלול מסלול וסימונים" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "כללי" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "הצגת צירופי מקשים" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "חיפוש" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "הצגה/הסתרת מתכנן מסלול" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "הדפסת מסלול" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "יציאה" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "תצוגת מפה" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "התקרבות" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "התרחקות" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "הצגת סרגל קנה מידה" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "טעינת שכבת מפה" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "הפעלת שירותי איכון למציאת המיקום שלך" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "הגדרות מיקום" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "בחירת סוג המפה" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "להציג/להסתיר מתכנן מסלול" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "מועדפים" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "הדפסת מסלול" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "מפות איננו מקוון!" + +#: ../data/ui/main-window.ui.h:8 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "מפות צריך חיבור אינטרנט פעיל על מנת לתפקד כראוי, אך אין אחד בנמצא." + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "יש לבדוק את החיבור שלך ואת הגדרות הפרוקסי." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "הוספה למסלול חדש" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "פתיחה באמצעות יישום אחר" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "סימון כמועדף" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "הרשמה כאן" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "חשבון OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "התחברות לעריכת מפות" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"עזרה בשיפור המפה,\n" +"באמצעות חשבון OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "דוא״ל" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "ססמה" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "התחברות" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "אין לך חשבון?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"אנו מצטערים, זה לא עובד. יש לנסות שוב, או לבקר באתר OpenStreetMap לאיפוס הססמה שלך." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "קוד האימות לא מתאים, יש לנסות שוב." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "יש להזין את קוד האימות המוצע למעלה" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "אימות" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "התחברות" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "חשבון ה־OpenStreetMap שלך פעיל." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "התנתקות" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "רחוב" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "מספר בית" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "מיקוד" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "עיר" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "סוג" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "ללא" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "הוספת שדה" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "הערות" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +" OpenStreetMap data." +msgstr "שינויים במפה יופיעו בכל המפות המשתמשות במידע מ־OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "בשימוש לאחרונה" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ביטול" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:471 +msgid "Next" +msgstr "הבא" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "הצגת מידע נוסף" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "יש ללחוץ Enter לחיפוש" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "יש לגרור לשינוי סדר המסלול" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "פתיחת מיקום" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_פתיחה" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "פתיחת שכבה" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "הצגה" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "חיפוש מסלולים באמצעות GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "הצגת תוצאות נוספות" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "מיקום נוכחי" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "דיוק: ‏%s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "יש להתקרב על מנת להוסיף מיקום!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "אישור" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "נכשל חיפוש מבנה אריח בתיקייה" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "נכשל ניתוח מסמך XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "חסרות תכונות דרושות" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "לא ניתן למצוא יסוד OSM" + +#: ../src/application.js:101 +msgid "A path to a local tiles directory structure" +msgstr "נתיב לתיקייה מבני אריחים מקומיים" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "בחירת חשבון" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "בטעינה" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "בחירת מקום" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Facebook. נא לבחור אחד מרשימה זו." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Foursquare. נא לבחור אחד מרשימה זו." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "נרשם עבור %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "כתיבת הודעה אפשרית להרשמה עבור %s." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:508 +msgid "An error has occurred" +msgstr "התרחשה שגיאה" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "לא ניתן למצוא את „%s” בשירות החברתי" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "לא ניתן למצוא מקום מתאים להירשם במיקום זה" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "האישורים פגי תוקף, נא לפתוח חשבונות מקוונים להתחברות ולאפשר חשבון זה" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "מסלול מכאן" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "הוספת ידע" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "מסלול לכאן" + +#: ../src/contextMenu.js:130 +msgid "Nothing found here!" +msgstr "לא נמצא כאן דבר!" + +#: ../src/contextMenu.js:187 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"מיקום נוסף למפה, יש לשים לב כי יתכן ויעבור זמן מה לפני שהוא יוצג על המפה " +"ובתוצאות החיפוש." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "מערכת הקבצים היא לקריאה בלבד" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "אין לך הרשאות לשמירה כאן" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "התיקייה אינה קיימת" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "לא צוין שם קובץ" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "לא ניתן לייצא תצוגה" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "נקודת ציון לא חוקית" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "שגיאת ניתוח" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "שגיאה הנדסית" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "כל שכבות הקבצים" + +#: ../src/mainWindow.js:371 +msgid "Failed to connect to location service" +msgstr "ארע כשל בהתחברות לשרת האיכון" + +#: ../src/mainWindow.js:423 +msgid "translator-credits" +msgstr "יוסף אור בוצ׳קו " + +#: ../src/mainWindow.js:426 +msgid "A map application for GNOME" +msgstr "יישום מפות עבור GNOME" + +#: ../src/mapView.js:254 +msgid "File type is not supported" +msgstr "סוג הקובץ אינו נתמך" + +#: ../src/mapView.js:261 +msgid "Failed to open layer" +msgstr "אירע כשל בפתיחת שכבה" + +#: ../src/mapView.js:297 +msgid "Failed to open GeoURI" +msgstr "אירע כשל בפתיחת GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:443 +msgid "Incorrect user name or password" +msgstr "שם או ססמה לא נכונים" + +#: ../src/osmConnection.js:445 +msgid "Success" +msgstr "הצלחה" + +#: ../src/osmConnection.js:447 +msgid "Bad request" +msgstr "בקשה שגויה" + +#: ../src/osmConnection.js:449 +msgid "Object not found" +msgstr "עצם לא נמצא" + +#: ../src/osmConnection.js:451 +msgid "Conflict, someone else has just modified the object" +msgstr "התנגשות, מישהו אחר שינה את העצם זה עתה" + +#: ../src/osmConnection.js:453 +msgid "Object has been deleted" +msgstr "העצם נמחק" + +#: ../src/osmConnection.js:455 +msgid "Way or relation refers to non-existing children" +msgstr "נתיב או יחס מפנה לילדים לא קיימים" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "שם" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "השם הרשמי. זה בדרך כלל מה שמופיע על השילוטים." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "כתובת" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:165 +msgid "Website" +msgstr "אתר אינטרנט" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"אתר האינטרנט הרשמי. יש לנסות להשתמש בצורה הבסיסית ביותר של הכתובת. למשל " +"http://example.com במקום http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "טלפון" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"מספר טלפון. יש להשתמש בתבנית בינלאומית, המתחיל עם סימן פלוס +. יש להיזהר " +"מחוקי הפרטיות, בפרט עבור מספרי טלפון פרטיים." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:171 +msgid "Wikipedia" +msgstr "ויקיפדיה" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"התבנית בשימוש צריכה לכלול את קוד השפה ואת כותרת הערך. למשל: \"he:כותרת הערך." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "שעות פתיחה" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "ניתן לקבל עזרה עבור התבנית בקישור בתווית." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "אוכלוסייה" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "גובה" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "גובה (גובה מעל פני הים) של נקודה במטרים." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "נגישות נכים" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +msgid "Yes" +msgstr "יש" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "אין" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "מוגבל" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "מובנה" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "גישה לאינטרנט" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:341 +msgid "Wi-Fi" +msgstr "רשת אלחוטית" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "רשת קווית" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "מסוף" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "שרת" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "הוספה ל־OpenStreetMap" + +#: ../src/osmEditDialog.js:339 +msgid "Select Type" +msgstr "בחירת סוג" + +#: ../src/osmEditDialog.js:457 +msgid "Done" +msgstr "בוצה" + +#: ../src/placeBubble.js:128 +msgid "Population:" +msgstr "אוכלוסייה:" + +#: ../src/placeBubble.js:134 +msgid "Altitude:" +msgstr "גובה:" + +#: ../src/placeBubble.js:139 +msgid "Opening hours:" +msgstr "שעות פתיחה:" + +#: ../src/placeBubble.js:144 +msgid "Internet access:" +msgstr "גישת אינטרנט:" + +#: ../src/placeBubble.js:149 +msgid "Wheelchair access:" +msgstr "נגישות נכים:" + +#: ../src/placeBubble.js:155 ../src/placeBubble.js:159 +msgid "Phone:" +msgstr "טלפון:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "ארע כשל בניתוח כתובת Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:330 +msgid "yes" +msgstr "יש" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "מוגבל" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:336 +msgid "no" +msgstr "אין" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "מובנה" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "מ־%s אל %s" + +#: ../src/printOperation.js:47 +msgid "Loading map tiles for printing" +msgstr "טוען אירי מפה להדפסה" + +#: ../src/printOperation.js:48 +msgid "You can abort printing if this takes too long" +msgstr "נתן לבטל ההדפסה אם היא לוקחת יותר מדי זמן" + +#: ../src/printOperation.js:50 +msgid "Abort printing" +msgstr "ביטול הדפסה" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "לא נמצא מסלול." + +#: ../src/routeService.js:101 +msgid "Route request failed." +msgstr "בקשת המסלול נכשלה." + +#: ../src/routeService.js:178 +msgid "Start!" +msgstr "להתחיל!" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "ארע כשל בפתיחת הכתובת" + +#: ../src/shapeLayer.js:93 +msgid "failed to load file" +msgstr "אירע כשל בטעינת הקובץ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:208 +#, javascript-format +msgid "Estimated time: %s" +msgstr "זמן משוער: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "מסביב לשעון" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "מהזריחה עד השקיעה" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "כל יום" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s – %s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "חגים ציבוריים" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "חגי בית ספר" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "לא פתוח" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s – %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "אתרנט" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "מסוף" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "שרת" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "לא ידוע" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "מדויק" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f שעות" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f דקות" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f שניות" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f ק״מ" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f מ׳" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f מיל" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f רגל" + +#~ msgid "Country code: %s" +#~ msgstr "קוד מדינה: %s" + +#~ msgid "_Share" +#~ msgstr "_שיתוף" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "User set last known location" +#~ msgstr "User set last known location" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I’m here!" +#~ msgstr "אני כאן!" + +#~ msgid "%f km²" +#~ msgstr "‏%f ק״מ²" + +#~ msgid "To" +#~ msgstr "אל" + +#~ msgid "From" +#~ msgstr "מ" + +#~ msgid " km2" +#~ msgstr " ק״מ2" + +#~ msgid "Satellite" +#~ msgstr "לווין" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 00000000..bcc3d5be --- /dev/null +++ b/po/hi.po @@ -0,0 +1,261 @@ +# Hindi translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Solomon Nadar , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-11-09 07:50+0000\n" +"PO-Revision-Date: 2014-11-09 20:06-0000\n" +"Last-Translator: Solomon Nadar \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"नक्शे आपको सभी दुनिया भर में नक्शे के लिए त्वरित पहुँच देता है. दोस्त से मिलने के लिए एक जगह " +"का पता लगाने के लिए, या जल्दी से एक शहर या सड़क के लिए खोजकर आप ढूंढ रहे जगह आपको " +"बताती है." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"नक्शे दुनिया भर में हजारों, सैकड़ों लोगों के द्वारा बनाई सहयोगी OpenStreetMap डेटाबेस का " +"उपयोग करता है." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"\"मेन स्ट्रीट के पास पब, बोस्टन\" या \"अलेक्सान्देरप्लात्ज़ के पास होटल, बर्लिन\" इस तरह के " +"रूप में स्थानों के विशिष्ट प्रकार के लिए भी आप खोज कर सकते हैं." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:79 +#: ../src/mainWindow.js:347 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "नक्शे" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "एक साधारण नक्शा अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "नक्शे;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "खिड़की का आकर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "खिड़की का आकर (चौड़ाई और ऊंचाई)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "खिड़की स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "खिड़की स्थान (X और Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "खिड़की अधिकतम पर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "खिड़की अधिकतम स्थिति" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "अंतिम ज्ञात स्थान और सटीकता" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "अंतिम ज्ञात स्थान (अक्षांश और देशांतर डिग्री में) और सटीकता (मीटर में)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "अंतिम ज्ञात स्थान का विवरण" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "उपयोगकर्ता की अंतिम ज्ञात स्थान का विवरण." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "खोज परिणामों की अधिकतम संख्या" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "जियोकोड खोज से खोज परिणामों की अधिकतम संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "उपयोगकर्ता ने सेट की अंतिम ज्ञात स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "अंतिम ज्ञात स्थान उपयोगकर्ता द्वारा मैन्युअल रूप से सेट किया गया था या नहीं." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "जमा करने हाल के स्थानों की संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "जमा करने हाल के दर्शन किये स्थानों की संख्या." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "के बारे में" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "छोड़े" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहाँ क्या है?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "मैं यहां हूं!" + +#: ../src/geoclue.js:137 ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "वर्तमान स्थान" + +#: ../src/mainWindow.js:345 +msgid "translator-credits" +msgstr "अनुवादक-प्रसिद्धि" + +#: ../src/mainWindow.js:348 +msgid "A map application for GNOME" +msgstr "GNOME के लिए एक नक्शा अनुप्रयोग" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "वर्तमान स्थान पर जाएं" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "नक्शा प्रकार चुनें" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "मार्ग योजनाकार टॉगल करें " + +#: ../src/main-window.ui.h:5 +msgid "Maps is offline!" +msgstr "नक्शे ऑफ़लाइन है!" + +#: ../src/main-window.ui.h:6 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"नक्शे ठीक ढंग से काम करने के लिए एक सक्रिय इंटरनेट कनेक्शन की जरूरत है, लेकिन एक नहीं पाया " +"जा सका." + +#: ../src/main-window.ui.h:7 +msgid "Check your connection and proxy settings." +msgstr "आपके कनेक्शन और प्रॉक्सी सेटिंग्स की जाँच करें." + +#: ../src/routeService.js:72 +msgid "No route found." +msgstr "कोई मार्ग नहीं मिला." + +#: ../src/routeService.js:79 +msgid "Route request failed." +msgstr "मार्ग अनुरोध विफल." + +#: ../src/routeService.js:150 +msgid "Start!" +msgstr "शुरू करो!" + +#: ../src/searchResultBubble.js:58 +#, javascript-format +msgid "Country code: %s" +msgstr "देश कोड: %s" + +#: ../src/searchResultBubble.js:64 +#, javascript-format +msgid "Postal code: %s" +msgstr "डाक कोड: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:236 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अनुमानित समय: %s" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "सटीकता: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:189 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:192 +msgid "Exact" +msgstr "ठीक" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f h" +msgstr "%f घं" + +#: ../src/utils.js:293 +#, javascript-format +msgid "%f min" +msgstr "%f मि" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:304 +#, javascript-format +msgid "%f km" +msgstr "%f किमी" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:307 +#, javascript-format +msgid "%f m" +msgstr "%f मी" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:315 +#, javascript-format +msgid "%f mi" +msgstr "%f मील" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:318 +#, javascript-format +msgid "%f ft" +msgstr "%f फी" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 00000000..f726df25 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,1868 @@ +# Croatian translation for gnome-maps. +# Copyright (C) 2017 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-03 17:19+0100\n" +"Last-Translator: gogo \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karte" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Potražite mjesta diljem svijeta" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama diljem svijeta. Omogućuje vam da brzo " +"pronađete mjesto koje tražite pretragom gradova ili ulica, ili lociranje " +"mjesta za sastanak s prijateljem." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste suradničku OpenStreetMap bazu podataka, načinjenu od strane " +"stotine tisuća ljudi diljem svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak pretražiti određenu vrstu lokacije, poput \"Kavane blizu Jelačić " +"placa, Zagreb\" ili \"Hoteli blizu Straduna, Dubrovnik\"." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Karte" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednostava aplikacija za karte" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karte;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Omogućuje vašoj lokaciji da bude prikazana na mapi." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "posljednja pogledana lokacija" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate posljednje pogledane lokacije." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "uvećanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Razina uvećanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta karte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta prikazane karte (ulice, područje, itd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veličina prozora" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj prozora" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (x-os i y-os)" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Prozor uvećan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage iz geokôd pretrage." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Broj nedavnih mjesta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Broj nedavnih ruta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Broj nedavno posjećenih ruta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti Facebook provjere" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti Facebook provjere. Moguće " +"vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ili SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti Foursquare provjere" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti Foursquare provjere. Moguće " +"vrijednosti su: public, followers ili private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitira provjeru na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Facebook " +"računu pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitira provjeru na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Twitter računu " +"pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili adresa e-pošte" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Označava je li se korisnik prijavio za uređivanje OpenStreetMap karata." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Posljednja korištena vrsta prijevoza za određivanje rute" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vidljivost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Odustani" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Provjeri" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Svakog" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prijatelje prijatelja" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Samo prijatelje" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Samo meni" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sljedbenike" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privatno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Početak rute" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj međuodredište" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Završetak rute" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Što je ovdje?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj lokaciju" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Izvezi prikaz" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvoz" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Uključi rute i oznake" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Općenito" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaži prečice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zatvori" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Prikaz karte" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približi" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Udalji" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Uklj/Isklj promjenu veličine" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na prikaz ulica" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na satelitski prikaz" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj karte" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Otvori sloj karte…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Uključite uslugu lociranja kako bi pronašli svoju lokaciju" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Odustani" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Postavke lokacije" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Postavi OpenStreetMap račun" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Izvezi kao sliku" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "O Kartama" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Odaberi vrstu karte" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Udalji" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Približi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Uklj/Isklj omiljene" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Ispiši rutu" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Karta je nedostupna!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karta treba aktivni internet povezivanje kako bi ispravno funkcionirala, ali " +"se ne može nijedan pronaći." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Provjerite vaše povezivanje i proxy postavke." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dijeli lokaciju" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označi kao omiljeno" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Provjeri ovdje" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap račun" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijavi se za uređivanje karata" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozite poboljšati karte, koristeći\n" +"OpenStreetMap račun." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pošta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lozinka" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Prijava" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Nemate račun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije uspjelo. Pokušajte ponovno, ili posjetite\n" +"OpenStreetMap za obnovu lozinke." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kôd provjere se ne podudara, pokušajte ponovno." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Upišite kôd provjere prikazan iznad" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Provjeri" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Prijavljeni" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap račun je aktivan." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Odjava" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Kućni broj" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Grad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nijedno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Promjene karte biti će vidljive na svim kartama koje\n" +"koriste OpenStreetMap podatke." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno korišteno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sljedeće" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Prikaži više informacija" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nema pronađenih rezultata" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ispusti za promjenu redoslijeda rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Pošalji u…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Otvori sloj karte" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvori" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Uklj/Isklj vidljivost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta se traži pomoću GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Plan ruta za javni prijevoz omogućio je GNOME\n" +"pomoću rasporeda podataka dobivenih od prijevozničkih tvrtki ili agencija.\n" +"Prijevozničke tvrtke ili agencije ne mogu biti odgovorne za prikazane " +"rezultate.\n" +"GNOME ne može jamčiti točnost prikazanih planova i rasporeda.\n" +"Prikazani nazivi i trgovačke marke trebaju se smatrati registriranim " +"zaštitinim zankovima kada je primjenjivo." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Prikaži više rezultata" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sakrij posredna zaustavljanja i informacije" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Prikaži posredna zaustavljanja i informacije" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Kreni odmah" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odlazak" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Dolazak" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Prikaz" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busevi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Valkovi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Zrakoplovi" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutna lokacija" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspješna pretraga strukture pločice u direktoriju" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neuspješna obrada XML dokumenta" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nedostaju potrebna svojstva" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nemoguć pronalazak OSM elementa" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne strukture bloka u direktoriju" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Prikaži inačicu programa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Zanemari mrežnu dostupnost" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Odaberi račun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavanje" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Odaberi mjesto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Facebooka. Odaberite jedno s " +"popisa." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Foursquara. Odaberite jedno s " +"popisa." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Provjeri u %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napiši neobaveznu poruku za provjeru u %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Dogodila se greška" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nemoguće je pronaći “%s” na društvenim mrežama" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nemoguće je pronaći prikladno mjesto za provjeru ove lokacije" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Vjerodajnice su istekle, otvorite mrežne račune za prijavu i omogućavanje " +"ovog računa" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ništa nije pronađeno ovdje!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodana na kartu, zapamtite da može potrajati prije nego se " +"pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sustav je samo za čitanje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate za tamo dozvolu spremanja" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorij ne postoji" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Naziv datoteke nije naveden" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nemoguće izvesti prikaz" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "pogrešne koordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "greška obrade" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Zahtjev rute neuspio." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ruta nije pronađena." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Kreni!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje s uslugom lociranja" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "gogo https://launchpad.net/~trebelnik-stefina" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Aplikacija karata za GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autorsko pravo © 2011 – 2019 Red Hat, Inc. i autori GNOME karta" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke karte omogućili %s i doprinositelji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blokove karte je omogućio %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pretragu je omogućio %s koristeći %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Neuspjelo otvaranje sloja" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Neuspjelo otvaranje GeoURI-ja" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Uspjeh" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Neispravan zahtjev" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nije pronađen" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, netko drugi je upravo promijenio objekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt je obrisan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Način ili veza povezana za nepostojeći objekt" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Službeni naziv. To se uobičajeno pojavljuje na znakovima." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Web stranica" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Službena web stranca. Pokušajte koristiti najosnovnije od URL-a npr. http://" +"primjer.com umjesto http://primjer.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format, započinjući s + znakom. Ne " +"zaboravite lokalne zakone, osobito za privatne telefonske linije." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišteni format trebao bi uključiti kôd jezika i naslov članka poput “hr:" +"Naslov članka”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Vrijeme otvaranja" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte poveznicu u naslovu za pomoć formata." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Uzvišenje (nadmorska visina) od točke u metrima." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup za invalidska kolica" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ograničeno" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Određeno" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežična mreža" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žična mreža" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaizam" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kršćanstvo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucijanizam" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Džainizam" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Više religija" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizam" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scijentologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrizam" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Napomena" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacije koje se koriste za informiranje drugih kartografa o neočekivanim " +"informacijama o nekom elementu, o autorovoj namjeri prilikom izrade, ili " +"savjeti za buduće poboljšanje." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj u OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Odaberi vrstu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Završeno" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Neimenovano mjesto" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populacija:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Visina:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Vrijeme otvaranja:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaleti:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Pristup za invalidska kolica:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Neuspješna obrada Geo URI-ja" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "određeno" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Mjesto nije pronađeno na OpenStreetMapama" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nije valjan" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate u URL-u nisu valjane" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nije podržan" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavanje bloka karte za ispis" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti ispisivanje ako traje predugo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini ispisivanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj pomoću lokacije" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ukloni pomoću lokacije" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni rutu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s u %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Neuspjelo otvaranje URI-ja" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otvori sa %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neuspješno učitavanje datoteke" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Vrijeme dolaska: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Planove je omogućio %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Polazak u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Polazak" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Pješači %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazak u %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Dolazak" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Prikaži upute pješačenja" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sakrij upute pješačenja" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj kasnije alternative" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nema pronađenih ranijih alternativa." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nema pronađenih kasnijih alternativa." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Nema pronađenih podataka rasporeda za ovu rutu." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Nema pronađenih pružatelja usluge za ovu rutu." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuta" +msgstr[1] "%d minute" +msgstr[2] "%d minuta" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sata" +msgstr[2] "%d sati" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d sat" +msgstr[1] "%d:%02d sata" +msgstr[2] "%d:%02d sati" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "oko sata" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od sumraka do zore" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "žični priključak" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Točnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Napoznato" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Točno" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f sat" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Nastavi u %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Nastavi" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skrenite lijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skrenite blago ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Skrenite blago ulijevo" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skrenite oštro ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Skrenite oštro ulijevo" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skrenite desno na %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Skrenite desno" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skrenite blago udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Skrenite blago udesno" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skrenite oštro udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Skrenite oštro udesno" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "U kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "U kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Idite na kružni tok" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Idite u dizalo i izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Idite u dizalo" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Skrenite lijevo u %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Skrenite desno u %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Skrenite desno" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta se traži pomoću OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj odredište" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Otvori s drugom aplikacijom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite Enter za pretragu" + +#~ msgid "Quit" +#~ msgstr "Zatvori" + +#~ msgid "OK" +#~ msgstr "U REDU" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvori sloj karte…" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..b8c5c9ec --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1848 @@ +# Hungarian translation for gnome-maps. +# Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Balázs Úr , 2013, 2014, 2015, 2016, 2018, 2019, 2020. +# Gabor Kelemen , 2013, 2015, 2016, 2017. +# Balázs Meskó , 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-17 21:35+0100\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.04.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Térképek" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Helyek keresése a világ minden pontján" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"A Térképek gyors hozzáférést ad térképekhez az egész világról. Lehetővé " +"teszi egy keresett hely gyors megtalálását település vagy utca keresésével, " +"vagy találni egy helyet, ahol ismerőseivel találkozhat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A Térképek az együttműködésen alapuló OpenStreetMap adatbázist használja, " +"amelyet több százezer ember készít a világ minden részén." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Adott típusú helyeket is kereshet, úgymint „Kocsmák a bostoni sétálóutca " +"közelében” vagy „Szállodák a berlini Alexanderplatz közelében”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "A GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Térképek" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Egyszerű térképalkalmazás" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Térképek;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lehetővé teszi a földrajzi helyének megjelenítését a térképen." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "legutóbbi megtekintett hely" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Az utolsó megtekintett hely koordinátái." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "nagyítás" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nagyítási szint" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Térképtípus" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "A megjelenítendő térkép típusa (utca, légi, stb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ablakméret" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ablak mérete (szélesség és magasság)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ablakpozíció" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ablakpozíció (X és Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ablak teljes méretű" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Az ablak maximalizált állapota" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "A keresési találatok maximális száma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "A keresési találatok maximális száma a geokód keresésből." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "A tárolandó legutóbbi helyek száma" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "A tárolandó legutóbb látogatott helyek száma." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "A tárolandó legutóbbi útvonalak száma" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "A tárolandó legutóbb látogatott útvonalak száma." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook bejelentkezés adatvédelmi beállításai" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Legutóbb használt Facebook bejelentkezés adatvédelmi beállításai. Lehetséges " +"értékek: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vagy SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare bejelentkezés adatvédelmi beállításai" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Legutóbb használt Foursquare bejelentkezés adatvédelmi beállításai. " +"Lehetséges értékek: public, followers, vagy private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare bejelentkezés Facebook üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare hozzászólásként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Facebook fiókban." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare bejelentkezés Twitter üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare üzenetként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Twitter fiókban." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap felhasználónév vagy e-mail cím" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Jelzi, hogy a felhasználó bejelentkezett-e az OpenStreetMap adatok " +"szerkesztéséhez." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Legutóbb útvonaltervezéshez használt közlekedéstípus" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Láthatóság" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Közzététel a Facebookon" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Közzététel a Twitteren" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Mégse" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Bejelentkezés" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mindenki" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Ismerősök ismerősei" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Csak ismerősök" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Csak én" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Nyilvános" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Követők" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Személyes" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Útvonal innen" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Közbenső megálló hozzáadása" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Útvonal ide" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mi van itt?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Hely másolása" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMap-hez" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportálási nézet" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportálás" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Útvonalak és jelölők megtartása" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Általános" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Gyorsbillentyűk megjelenítése" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Keresés" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Kilépés" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Térkép nézet" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Nagyítás" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Kicsinyítés" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Váltás utcanézetre" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Váltás légifelvételre" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Alak réteg megnyitása" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Alak réteg megnyitása…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Helymeghatározó szolgáltatások bekapcsolása a helyzetének megkereséséhez" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Mégse" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Helybeállítások" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap fiók beállítása" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Exportálás képként" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Gyorsbillentyűk" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "A Térképek névjegye" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Térképtípus kiválasztása" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Kicsinyítés" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Nagyítás" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Kedvencek ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Útvonal nyomtatása" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "A Térképek kapcsolat nélküli!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"A Térképeknek aktív internet-kapcsolat szükséges a megfelelő működéshez, de " +"az nem található." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Ellenőrizze a kapcsolat és a proxy beállításait." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Hozzáadás új útvonalhoz" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Hely megosztása" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Megjelölés kedvencként" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Bejelentkezés itt" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap fiók" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jelentkezzen be a térképek " +"szerkesztéséhez" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Segítsen a térkép javításában, egy\n" +"OpenStreetMap fiók használatával." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Jelszó" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Bejelentkezés" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Nincs fiókja?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Elnézést, ez nem sikerült. Próbálja újra, vagy látogassa meg az\n" +"OpenStreetMap\n" +"oldalt a jelszava helyreállításához." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Az ellenőrző kód nem egyezik, próbálja újra." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Írja be a fent megjelenített ellenőrző kódot" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Ellenőrzés" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Bejelentkezve" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Az OpenStreetMap fiókja aktív." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Kijelentkezés" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Utca" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Házszám" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Irányítószám" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Város" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Típus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nincs" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Mező hozzáadása" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Megjegyzés" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"A térképváltozások mindenhol láthatóvá válnak,\n" +"ahol OpenStreetMap adatokat használnak." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nemrég használt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Következő" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "További információk megjelenítése" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nincs találat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Húzza az útvonal sorrendjének módosításához" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Másolás" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Küldés neki…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Megnyitás" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Útvonalkeresés a GraphHopperrel" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"A közlekedési útvonalak harmadik féltől származó szolgáltatásból\n" +"származnak.\n" +"A GNOME nem garantálhatja a megjelenített útvonalak és menetrendek " +"helyességét.\n" +"Ne feledje, hogy egyes szolgáltatók lehet hogy nem tartalmazzák az összes " +"elérhető\n" +"közlekedési módokat, például egy nemzeti szolgáltató lehet, hogy nem " +"tartalmazza\n" +"a légitársaságokat, egy helyi szolgáltató pedig nem tartalmazza a " +"regionális\n" +"vonatokat.\n" +"A megjelenített nevek és márkák adott esetben bejegyzett védjegyeknek " +"tekintendők." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "További találatok megjelenítése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Közbenső megállók és információk elrejtése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Közbenső megállók és információk megjelenítése" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Indulás most" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Indulás ekkor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Érkezés ekkor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Megjelenítés" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buszok" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Villamosok" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vonatok" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metró" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Kompok" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Repülőgépek" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Jelenlegi hely" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Nagyítson a hely hozzáadásához!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Nagyítás" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nem sikerült csempeszerkezetet találni a könyvtárban" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Az XML dokumentum feldolgozása sikertelen" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Szükséges attribútumok hiányoznak" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nem sikerült megtalálni az OSM elemet" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Egy útvonal a helyi csempék könyvtárszerkezetéhez" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "A program verziószámának megjelenítése" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Hálózat elérhetőségének figyelmen kívül hagyása" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Válasszon egy fiókot" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Betöltés" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Válasszon egy helyet" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Facebook " +"használatával. Válasszon egyet erről a listáról." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Foursquare " +"használatával. Válasszon egyet erről a listáról." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Bejelentkezés ide: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Opcionális üzenet írása a következőbe való bejelentkezéshez: %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Hiba történt" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nem található „%s” a közösségi szolgáltatásban" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nem található megfelelő hely a bejelentkezéshez ezen a helyen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"A hitelesítési adatok lejártak, nyissa meg az Online fiókokat a " +"bejelentkezéshez, és engedélyezze ezt a fiókot" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Itt nincs semmi!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A hely hozzáadva a térképhez, de eltarthat egy ideig, amíg megjelenik a " +"térképen és a keresési találatokban." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Térképek itt: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "A fájlrendszer csak olvasható" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nincs jogosultsága oda menteni" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "A könyvtár nem létezik" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nincs megadva fájlnév" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "A nézet exportálása sikertelen" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "érvénytelen koordináta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "feldolgozási hiba" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ismeretlen geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Az útvonalkérés nem sikerült." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Nem található útvonal." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Indulás!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Minden rétegfájl" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Nem sikerült kapcsolódni a helymeghatározó szolgáltatáshoz" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Meskó Balázs \n" +"Úr Balázs " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Térképalkalmazás a GNOME-hoz" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. és a GNOME Térképek szerzői" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Térképadatok: %s és közreműködők" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "A térképcsempéket a(z) %s szolgáltatja" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "A keresést a(z) %s biztosította %s használatával" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "A fájltípus nem támogatott" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "A réteg megnyitása nem sikerült" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "A GeoURI megnyitása nem sikerült" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Helytelen felhasználónév vagy jelszó" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sikerült" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Rossz kérés" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nem található objektum" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktus, valaki épp most módosította az objektumot" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Az objektum törlésre került" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Út vagy kapcsolat nem létező gyermekekre hivatkozik" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Név" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "A hivatalos név. Jellemzően ez jelenik meg a jelzéseken." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Cím" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Weboldal" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A hivatalos honlap. Próbálja meg az URL alapvető formáját használni, pl. " +"http://pelda.hu a http://pelda.hu/index.html helyett." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonszám. Használja a nemzetközi formátumot a + jellel. Figyeljen a helyi " +"adatvédelmi törvényekre, különösen a magántelefonszámokra." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"A használt formátumban legyen benne a nyelvi kód és a cikk címe, mint " +"például „hu:Cikk címe”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Nyitva tartás" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Kövesse a címke hivatkozását formázási segítségért." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Népesség" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Magasság" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Egy pont tengerszint feletti magassága méterben." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Kerekesszékes elérés" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Igen" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nem" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Korlátozott" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Kijelölt" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet-hozzáférés" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Vezetékes" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Szolgáltatás" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Vallás" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhizmus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kereszténység" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Dzsainizmus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Iszlám" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Több vallás" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pogányság" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pasztafarizmus" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Szcientológia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoizmus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Szikhizmus" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitárius univerzalizmus" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizmus" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroasztrizmus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalett" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Megjegyzés" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Más térképezőknek szánt információ, egy elem nem egyértelmű " +"tulajdonságairól, a szerző szándékáról, vagy tippek a további finomításokhoz." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMaphez" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Válasszon egy típust" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Kész" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Névtelen hely" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Népesség:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Magasság:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Nyitva tartás:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet-hozzáférés:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Vallás:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalett:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Kerekesszékes elérés:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "A Geo URI feldolgozása nem sikerült" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "igen" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "korlátozott" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nem" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "kijelölt" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "A hely nem található az OpenStreetMapen" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Az OpenStreetMap URL nem érvényes" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Az URL-ben lévő koordináták nem érvényesek" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Az URL nem támogatott" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Ettől: %s, eddig: %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Térképszelvények betöltése nyomtatáshoz" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Megszakíthatja a nyomtatást, ha ez túl sokáig tart" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Nyomtatás megszakítása" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Hozzáadás hely szerint" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Eltávolítás hely szerint" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Fordított útvonal" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s hozzáadása ehhez: %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Az URI megnyitása nem sikerült" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Megnyitás %s használatával" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nem sikerült betölteni a fájlt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Becsült idő: %s" + +#: src/sidebar.js:352 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Az útvonalakat a(z) %s szolgáltatja" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Indulás innen: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Indulás" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gyaloglás: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Érkezés ide: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Érkezés" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Gyaloglási utasítások megjelenítése" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Gyaloglási utasítások elrejtése" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Korábbi lehetőségek betöltése" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Későbbi lehetőségek betöltése" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nem található korábbi lehetőség." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nem található későbbi lehetőség." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b. %e." + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Nem található menetrend ehhez az útvonalhoz." + +#: src/transitPlan.js:196 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Nem található szolgáltató ehhez az útvonalhoz." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d perc" +msgstr[1] "%d perc" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d óra" +msgstr[1] "%d óra" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d óra" +msgstr[1] "%d:%02d óra" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "éjjel-nappal" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "napkeltétől napnyugtáig" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "minden nap" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "munkaszüneti napok" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "tanszüneti napok" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nincs nyitva" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "vezetékes" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminál" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "szolgáltatás" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Pontosság: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Ismeretlen" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Pontos" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f óra" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f perc" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f mp" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Haladjon tovább ezen: %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Haladjon tovább" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Forduljon balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Forduljon balra" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Forduljon enyhén balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Forduljon enyhén balra" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Forduljon élesen balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Forduljon élesen balra" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Forduljon jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Forduljon jobbra" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Forduljon enyhén jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Forduljon enyhén jobbra" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Forduljon élesen jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Forduljon élesen jobbra" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "A körforgalomban válassza a(z) %s. kijáratot" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "A körforgalomban válassza a(z) %s felé tartó kijáratot" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Menjen a körforgalomba" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Menjen a lifthez, és szálljon ki itt: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Menjen a lifthez" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Forduljon vissza balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Forduljon vissza balra" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Forduljon vissza jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Forduljon vissza jobbra" diff --git a/po/id.po b/po/id.po new file mode 100644 index 00000000..b8711080 --- /dev/null +++ b/po/id.po @@ -0,0 +1,1835 @@ +# Indonesian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Andika Triwidada , 2013, 2014, 2015, 2018. +# Kukuh Syafaat , 2017-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-28\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-02 12:48+0700\n" +"Last-Translator: Kukuh Syafaat \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Peta" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Temukan tempat di seluruh dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memberi Anda akses cepat ke peta di seluruh penjuru dunia. Ini " +"memungkinkan Anda secara cepat menemukan tempat yang Anda cari dengan " +"mencari suatu kota atau jalan, atau menemukan tempat untuk bertemu dengan " +"teman." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta memakai basis data kolaboratif OpenStreetMap, yang dibuat oleh ratusan " +"ribu orang di seluruh dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda bahkan dapat mencari lokasi dengan jenis tertentu, seperti misalnya " +"\"Pub dekat Main Street, Boston\" atau \"Hotel dekat Alexanderplatz, Berlin" +"\"." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Proyek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Aplikasi peta sederhana" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Memungkinkan ditunjukkannya lokasi Anda pada peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi yang terakhir dilihat" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat dari lokasi yang terakhir dilihat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "perbesar" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Tingkat perbesaran" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis Peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta untuk ditampilkan (jalan, udara, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ukuran jendela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ukuran jendela (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posisi jendela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posisi jendela (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Jendela dimaksimalkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan termaksimalkan jendela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Banyaknya hasil pencarian maksimum" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Banyanyak hasil pencarian maksimum dari pencarian geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Cacah lokasi baru-baru ini yang disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Banyaknya lokasi baru-baru ini dikunjungi yang disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Cacah rute baru-baru ini yang akan disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Banyaknya rute baru-baru ini dikunjungi yang akan disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Pengaturan privasi check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pengaturan privasi check in Facebook yang terakhir dipakai. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Pengaturan privasi check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pengaturan privasi check in Foursquare yang terakhir dipakai. Nilai yang " +"mungkin adalah: public (umum), followers (para pengikut), atau private " +"(pribadi)" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Penyiaran Facebook untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah " +"kiriman dalam akun Facebook yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Penyiaran Twitter untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah twit " +"dalam akun Twitter yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat surel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menandakan apakah pengguna telah masuk untuk menyunting data OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis transportasi terakhir yang digunakan untuk rute" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Kenampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Kirim pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Kirim pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Semua orang" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Teman dari teman" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Teman saja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Hanya saya" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Umum" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Pribadi" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute dari sini" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tambahkan tujuan antara" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute ke sini" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ada apa di sini?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ekspor tilikan" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Ekspor" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan rute dan penanda" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Umum" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tampilkan Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cari" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Tilikan Peta" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Perbesar" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Perkecil" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Jungkitkan skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke tampilan jalan" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke tampilan udara" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka layer shape" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Buka Layer Shape…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Nyalakan layanan lokasi untuk menemukan lokasi Anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Pengaturan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Menyiapkan Akun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Ekspor sebagai Citra" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Tombol Pintas" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Tentang Peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Perkecil" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Perbesar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Jungkitkan favorit" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Cetak Rute" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Peta luring!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlu suatu koneksi internet aktif untuk berfungsi dengan benar, tapi " +"tidak ditemukan satupun." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Periksalah pengaturan proksi dan koneksi Anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke rute baru" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Bagikan lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tandai sebagai favorit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Masuklah untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantulah memperbaiki peta, memakai\n" +"akun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Surel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata Sandi" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Masuk" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Tidak punya akun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, itu tidak bisa. Harap coba lagi, atau kunjungi\n" +"OpenStreetMap untuk mereset sandi Anda." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kode verifikasi tidak cocok, silakan coba lagi." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Masukkan kode verifikasi yang ditunjukkan di atas" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifikasi" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Masuk" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Akun OpenStreetMap Anda aktif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nomor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kode pos" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kota" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nihil" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Ruas" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan tampak pada semua peta yang memakai\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Baru-baru Ini Dipakai" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Selanjutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tampilkan lebih banyak informasi" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hasil tak ditemukan" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah urutan rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kirim Ke…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Buka Layer Shape" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Jungkitkan kenampakan" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pencarian rute oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rute perjalanan untuk angkutan umum disediakan oleh layanan pihak ketiga.\n" +"GNOME tidak dapat menjamin kebenaran dari perjalanan dan jadwal yang " +"ditampilkan.\n" +"Perhatikan bawa beberapa penyedia mungkin tidak menyertakan semua mode " +"transportasi\n" +"yang tersedia, mis. sebuah penyedia nasional mungkin tidak menyertakan " +"penerbangan,\n" +"dan suatu penyedia lokal mungkin tidak punya jadwal kereta regional.\n" +"Nama dan merek yang ditampilkan dianggap sebagai merek dagang terdaftar " +"ketika berlaku." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tampilkan lebih banyak hasil" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyikan informasi dan perhentian antara" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tampilkan berhenti menengah dan informasi" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tampilkan" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bis" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trem" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Kereta api" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Kereta bawah tanah" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Penerbangan" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi saat ini" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Perbesar untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Perbesar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal menemukan struktur ubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal mengurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut yang diperlukan kurang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tak bisa temukan elemen OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Suatu path ke sebuah struktur direktori ubin lokal" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Tampilkan versi program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Abaikan ketersediaan jaringan" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih sebuah akun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuat" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih suatu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Facebook. Harap pilih " +"satu dari daftar ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Foursquare. Harap pilih " +"satu dari daftar ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in ke %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis suatu pesan tambahan untuk check in ke %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Terjadi suatu kesalahan" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tak dapat menemukan \"%s\" dalam layanan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tak dapat temukan suatu tempat yang cocok untuk check in dalam lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kredensial telah kedaluarsa, harap buka Akun Daring untuk masuk dan " +"memfungsikan akun ini" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tak ada yang ditemukan di sini!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi ditambahkan ke peta, perhatikan bahwa mungkin perlu waktu sebelum itu " +"muncul pada peta dan dalam hasil pencarian." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem berkas hanya baca" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tak punya ijin untuk menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak ada" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tak ada nama berkas yang dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tak bisa mengekspor tilikan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tak valid" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "galat penguraian" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tak dikenal" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Permintaan rute gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Rute tak ditemukan." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Mulai!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Semua Berkas Lapisan" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung ke layanan lokasi" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Andika Triwidada , 2013-2016, 2018, 2019.\n" +"Kukuh Syafaat , 2017-2020." + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Aplikasi peta bagi GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak Cipta © 2011 – 2019 Red Hat, Inc. dan Penulis GNOME Peta" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan kontributor" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Ubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pencarian disediakan oleh %s menggunakan %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Jenis berkas tak didukung" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Gagal membuka layer" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau sandi salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berhasil" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan yang buruk" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tak ditemukan" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, seseorang baru saja mengubah objek itu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dihapus" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cara atau hubungan mengacu ke anak yang tak ada" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama resmi. Ini biasanya apa yang tertulis pada rambu." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Situs web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Situs web resmi. Cobalah memakai bentuk URL paling dasar yaitu http://" +"example.com/ bukan http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telepon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nomor telepon. Gunakan format internasional, diawali dengan tanda +. Hati-" +"hati dengan perundangan privasi lokal, khususnya untuk nomor telepon pribadi." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang dipakai mesti menyertakan kode bahasa dan judul artikel seperti " +"\"id:Judul artikel\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat taut dalam label untuk bantuan tentang format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Ketinggian" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevasi (ketinggian di atas muka laut) dari suatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Akses kursi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terbatas" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Ditugaskan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Akses internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Ethernet" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Layanan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kekristenan" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multi Agama" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pagan" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Saintologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalisme Unitarian" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toilet" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Catatan" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informasi yang digunakan untuk menginformasikan pemeta lain mengenai " +"informasi yang tidak jelas tentang suatu elemen, maksud penulis saat " +"membuatnya, atau petunjuk untuk perbaikan lebih lanjut." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Ketinggian:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Akses internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toilet:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Akses kursi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telepon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Gagal mengurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terbatas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "ditugaskan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemukan pada OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tak valid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tak valid" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tak didukung" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s ke %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuat ubin peta untuk pencetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Anda dapat menggugurkan pencetakan bila ini makan waktu terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Gugurkan pencetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah lewat lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Hapus lewat lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rute sebaliknya" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambahkan %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuat berkas" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Perkiraan waktu: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Jadwal disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mulai dari %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mulai" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba di %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tampilkan petunjuk berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyikan petunjuk berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Memuat alternatif sebelumnya" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Memuat alternatif kemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tidak ditemukan alternatif sebelumnya." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tidak ada alternatif lain yang ditemukan." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tidak ada data jadwal yang ditemukan untuk rute ini." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tidak ada penyedia yang ditemukan untuk rute ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d menit" +msgstr[1] "%d menit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d jam" +msgstr[1] "%d jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d jam" +msgstr[1] "%d:%02d jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "terus menerus" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit sampai terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "hari libur publik" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "hari libur sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ethernet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "pelayanan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Akurasi: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Eksak" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f j" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f men" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mil" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Lanjutkan pada %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Lanjutkan" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri di %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit ke kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Belok sedikit ke kiri" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok kiri tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Belok kiri tajam" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit ke kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Belok sedikit ke kanan" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok kanan tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Belok kanan tajam" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Di bundaran, ambil jalur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Di bundaran, ambil jalur ke %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Ambil bundaran" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Naik lift dan turun di %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Naik lift" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Putar balik kiri ke %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Putar balik kiri" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Putar balik kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Putar balik kanan" + +#~ msgid "Add destination" +#~ msgstr "Tambahkan tujuan" diff --git a/po/is.po b/po/is.po new file mode 100644 index 00000000..bacb714d --- /dev/null +++ b/po/is.po @@ -0,0 +1,1665 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2015, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-03-26 17:04+0000\n" +"PO-Revision-Date: 2019-07-06 07:57+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME-landakort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Finndu staði út um allan heim" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Landakortaforritið gefur aðgang að landakortum hvaðanæva úr heiminum. Það " +"hjálpar þér að finna staði, til dæmis með því að leita að götu eða bæ, nú " +"eða með því að skoða kort til að finna góðan stað til að hitta vinina." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Landakortaforritið notar OpenStreetMap gagnagrunninn, sem er " +"samvinnuverkefni hundruða þúsunda manna víðsvegar um heiminn." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Þú getur líka leitað að sérstökum tegundum staðsetninga, eins og “Pöbbar " +"nálægt Main Street, Boston”, \"Myndbandaleigur á Selfossi\" eða “Hótel " +"nálægt Alexanderplatz, Berlín”." + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "Landakort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Einfalt landakortaforrit" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Landakort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leyfir að staðsetning þín sé birt á kortinu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "síðasta skoðuð staðsetning" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Hnit síðast skoðuðu staðsetningar." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Gluggastærð" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Gluggastærð (breidd og hæð)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Staðsetning glugga" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Staðsetning glugga (x og y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Gluggi hámarkaður" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Staða hámörkunar glugga" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Hámarksfjöldi leitarniðurstaðna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Hámarksfjöldi niðurstaðna úr leit með geocode." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Fjöldi nýlegra staða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Fjöldi nýlega heimsóttra staða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Fjöldi nýlegra leiða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Fjöldi nýlega notaðra leiða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Facebook. Möguleg " +"gildi eru: ALLIR, VINIR_VINA, ALLIR_VINIR eða SJÁLF(UR)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Foursquare. " +"Möguleg gildi eru: opinbert, fylgjendur eða einka." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Tilkynning á Facebook við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tilkynningu um innskráningu " +"inn á Facebook-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Tilkynning á Twitter við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tíst um innskráningu inn á " +"Twitter-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Notandanafn eða netfang á OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Gefur til kynna hvort notandinn hafi skráð sig inn til að breyta gögnum í " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Síðast notaða gerð samgangna fyrir leiðaval" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sýnileiki" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Senda á Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Senda á Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Hætta við" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "S_krá inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Allir" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vinir vina" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vinir" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara ég" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Opið (public)" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Fylgjendur" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Einka" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Hvað er hér?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Afrita staðsetningu" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Flytja út sem mynd" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Flytja út sýn" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Flytja út" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Hafa með leið og merkingar" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Almennt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Birta flýtilykla" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Leita" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Prenta leið" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Hætta" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortasýn" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Renna að" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Renna frá" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Víxla á milli kvarða" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skipta yfir í götusýn" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skipta yfir í loftmyndasýn" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Opna lag með lögunum" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Opna lag með lögunum…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Kveikja á staðsetningarþjónustum til að finna staðsetningu þína" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Hætta við" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Staðsetningarstillingar" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Setja upp OpenStreetMap aðgang" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: data/ui/main-window.ui:18 +#| msgid "About" +msgid "About Maps" +msgstr "Um hugbúnaðinn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Veldu tegund landakorts" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Renna frá" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Renna að" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Víxla Eftirlætum af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Prenta leið" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Kortin eru án nettengingar!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Landakortaforritið þarf virka internet-tengingu til að virka almennilega, en " +"ekki hefur gengið að finna neina slíka." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Athugaðu tengi- og milliþjónastillingarnar þínar." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Bæta við nýja leið" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Opna með öðru forriti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merkja sem Eftirlæti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Skrá inn hér" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap aðgangur" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Skrá inn til að breyta kortum" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjálpa til við að bæta kortið, með því\n" +"að nota OpenStreetMap-aðgang." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Tölvupóstur" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lykilorð" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Skrá inn" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ertu ekki með aðgang?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Æ, þetta virkaði ekki. Endilega reyndu aftur, eða farðu á\n" +"OpenStreetMap til að endurstilla lykilorðið þitt." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Sannvottunarkóðinn stemmdi ekki, prófaðu aftur." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Settu inn sannvottunarkóðann hér fyrir ofan" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sannreyna" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Skráð inn" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap aðgangurinn þinn er virkur." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Skrá út" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Húsnúmer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Póstnúmer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Borg" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tegund" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ekkert" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Bæta við reit" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Athugasemd" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Breytingar á korti verða sýnilegar á öllum kortum sem nota\n" +"OpenStreetMap gögn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nýlega notað" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næsta" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Birta nánari upplýsingar" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Ýttu á Enter til að leita" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Engar niðurstöður fundust" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dragðu til að breyta röð leiðarinnar" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Opna staðsetningu" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Opna" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Opna lag með lögunum" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Víxla sýnilegu" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Leita að leiðum með GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Leita að leiðum með OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Leiðatöflur almenningssamgangna koma frá GNOME\n" +"í gegnum tímatöflugögn frá rekstraraðilum eða ferðaskrifstofum.\n" +"Þeir aðilar eru ekki ábyrgir fyrir niðurstöðum sem birtar eru hér.\n" +"GNOME getur ekki ábyrgst áreiðanleika þessara leiða og áætlana.\n" +"Nöfn og vörumerki ber að líta á sem eign viðkomandi fyrirtækja þegar slíkt á " +"við." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Birta fleiri niðurstöður" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Fela biðstöðvar á leiðinni og upplýsingar" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Sýna biðstöðvar á leiðinni og upplýsingar" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Fara núna" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Fara um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Koma um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Birta" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Strætisvagna" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Lestir" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Neðanjarðarlestir" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjur" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Núverandi staðsetning" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Nákvæmni: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Renndu að til að bæta við staðsetningu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Renna að" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Mistókst að finna tíglaskipan í möppu" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gat ekki þáttað XML-skjal" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nauðsynleg eigindi vantar" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Gat ekki fundið OSM-stak" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Slóð á möppuuppbyggingu fyrir kortaflísar á tölvunni" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "Sýna útgáfu forrits" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Veldu aðgang" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Hleð inn" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Veldu stað" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Facebook. Veldu einn af þessum " +"lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Foursquare. Veldu einn af þessum " +"lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Skrá inn í %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Þú getur skrifað skilaboð með innskráningunni í %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Villa hefur átt sér stað" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finn ekki \"%s\" á samfélagsmiðilsþjónustunni" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Get ekki fundið hentugan stað til að skrá inn á þessari staðsetningu" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Auðkennin eru útrunnin, opnaðu \"Aðgangar á neti\" til að skrá þig inn og " +"virkja þennan aðgang" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Leið héðan" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Bæta við áfangastað" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Leið hingað" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Ekkert fannst hér!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Staðsetningunni var bætt á kortið, athugaðu að nokkur tími getur liðið " +"þangað til hún fer að sjást á kortinu eða koma upp í leitarniðurstöðum." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Landakort á %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Skráakerfi er aðeins til lestrar" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Þú hefur ekki nægar aðgangsheimildir til að vista þarna" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappan er ekki til" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ekkert skráarheiti tilgreint" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tókst ekki að flytja út sýnina" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ógild hnit" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "þáttunarvilla" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "óþekkt gerð rúmfræði" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Leiðarbeiðni mistókst." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Engin leið fannst." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Byrja!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Allar lagaskrár" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "Tókst ekki að tengjast staðsetningarþjónustu" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "Sveinn í Felli, sv1@fellsnet.is" + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "Landakortaforrit fyrir GNOME" + +#: src/mainWindow.js:520 +#| msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Höfundarréttur © 2011 – 2019 Red Hat, Inc. og höfundar GNOME Maps" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortagögn frá %s og meðhöfundum" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortatíglar gefnir út af %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Það er enginn stuðningur við skráategundina" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Mistókst að opna lag" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Mistókst að opna Geo URI-slóð" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Engin tímatöflugögn fundust fyrir þessa leið." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Rangt notandanafn eða lykilorð" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Tókst" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Óleyfileg beiðni" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Hluturinn fannst ekki" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Árekstur, einhver annar er nýbúinn að breyta atriðinu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Hlutnum hefur verið eytt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Leið eða vensl vísa í afleiður sem ekki eru til" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nafn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Opinbera heitið. Venjulega það sem birt væri á skiltum og þess háttar" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Heimilisfang" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Vefsvæði" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Opinbera vefsvæðið. Reyndu að nota grunnform slóðarinnar, t.d. http://vefur." +"is í stað http://dæmi.is/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Símanúmer" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Símanúmer. Notaðu alþjóðlega framsetningu, sem byrjar á + merki. Vertu " +"meðvitaður um reglur þær sem í gildi eru á svæðinu, sérstaklega varðandi " +"persónulega friðhelgi." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Sniðið ætti að innihalda tungumálskóða og titil greinar, til dæmis \"is:" +"Heiti greinar\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Opnunartímar" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" +"Skoðaðu tengilinn í skýringum um hvar hægt sé að fá hjálp varðandi snið." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Fólksfjöldi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Hæð" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Hæð yfir sjávarmáli í metrum." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Hjólastólaaðgangur" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Já" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "takmarkað" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "uppgefið" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetaðgangur" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Þráðlaust net" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Um kapal" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Útstöð" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Þjónusta" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Trúarbrögð" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Andatrú" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Búddismi" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kao-Daí" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristindómur" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfúsíusismi" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindúismi" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jaínismi" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Gyðingdómur" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Íslam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Margra trúarbragða" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heiðni" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafaríanismi" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Vísindakirkjan" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismi" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spírítismi" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taóismi" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Alþjóðlegur únítarismi" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jasismi" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Sóróismi" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Snyrtingar" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Athugasemd" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Upplýsingar sem notaðar eru til að gefa öðrum kortahönnuðum ekki-augljósar " +"ábendingar um tiltekið atriði, markmið höfundar þegar hann útbjó atriði, eða " +"ábendingar um hvernig hægt yrði að þróa/bæta það." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Veldu tegund" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Lokið" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Fólksfjöldi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Hæð:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Opnunartímar:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetaðgangur:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Trúarbrögð:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Snyrtingar:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Hjólastólaaðgangur:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Sími:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Gat ekki þáttað Geo URI-slóð" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "já" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "takmarkað" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "uppgefið" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Frá %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Hleð inn kortaflísum fyrir prentun" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Þú getur hætt við prentun ef þetta tekur of langan tíma" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hætta við prentun" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Bæta við í gegnum staðsetningu" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjarlægja í gegnum staðsetningu" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Snúa við leið" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Gat ekki opnað URI-slóð" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "mistókst að hlaða inn skrá" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Áætlaður tími: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Koma til %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Koma" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Byrja í %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Upphaf" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Birta gönguleiðbeiningar" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Fela gönguleiðbeiningar" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Ganga %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Hlaða inn fyrri valkostum" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Hlaða inn síðari valkostum" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Engir fyrri möguleikar fundust." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Engir síðari möguleikar fundust." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mínúta" +msgstr[1] "%d mínútur" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d klukkustund" +msgstr[1] "%d klukkustundir" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d klukkustund" +msgstr[1] "%d:%02d klukkustundir" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "allan sólarhringinn" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "frá sólarupprás til sólarlags" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "alla daga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "almennir frídagar" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skólafrídagar" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ekki opið" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "um kapal" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "útstöð" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "þjónusta" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Óþekkt" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Nákvæmt" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f klst" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f mín" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f sek" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s míl" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s fet" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Hætta" + +#~ msgid "OK" +#~ msgstr "Í lagi" + +#~ msgid "Load Map Layer" +#~ msgstr "Hlaða inn kortalagi" + +#~ msgid "Open Layer" +#~ msgstr "Opna lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f fet" + +#~ msgid "Country code: %s" +#~ msgstr "Landskóði: %s" diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..e8670667 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1845 @@ +# Italian translation for gnome-maps. +# Copyright (C) 2013 - 2019 Red Hat & gnome-maps authors +# This file is distributed under the same license as the gnome-maps package. +# Claudio Arseni , 2013, 2014, 2015. +# Gianvito Cavasoli , 2016-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-02 11:47+0100\n" +"Last-Translator: Gianvito Cavasoli \n" +"Language-Team: Italiano \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 3.34.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mappe GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trova luoghi in giro per il mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mappe fornisce un rapido accesso alla cartografia mondiale. Consente di " +"trovare velocemente i luoghi utilizzando la ricerca per città o per " +"indirizzo e di trovare i luoghi in cui incontrare i propri amici." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mappe usa il database OpenStreetMap creato dalla collaborazione di centinaia " +"di migliaia di persone da ogni parte del mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"È possibile cercare posti specifici, tipo «Pub vicino a Via del Corso, Roma» " +"o «Hotel vicino a Piazza del Duomo, Milano»." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Il progetto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mappe" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una semplice applicazione per le mappe" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mappe;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Consente alla vostra posizione di essere mostrata sulla mappa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultima posizione visualizzata" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinate dell'ultima posizione visualizzata." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Livello d'ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo di mappa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il tipo di mappa da mostrare (stradale, aerea, ecc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensione finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensione della finestra (larghezza e altezza)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizione finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizione della finestra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra massimizzata" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stato massimizzazione della finestra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numero massimo di risultati per la ricerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Numero massimo di risultati per la ricerca da codifica geografica." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numero di luoghi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numero di luoghi visitati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numero di percorsi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numero di percorsi effettuati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Facebook usate. I valori " +"possibili sono: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Foursquare usate. I " +"valori possibili sono: public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmissione a Facebook dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come post all'account Facebook " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmissione a Twitter dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come tweet all'account Twitter " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome utente o indirizzo e-mail di OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utente ha effettuato l'accesso per modificare i dati " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultimo tipo di trasporto usato per il percorso" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilità" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Invia su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Invia su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "A_nnulla" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Chiunque" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Gli amici dei propri amici" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo gli amici" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo a me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Pubblico" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Follower" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privato" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Percorso da qui" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Aggiungi destinazione intermedia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Percorso fino a qui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Cosa c'è qui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia posizione" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esporta visualizzazione" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includere percorsi e marcatori" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra scorciatoie" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ricerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampa il percorso" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Esci" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualizzazione mappa" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Attiva/Disattiva scala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va a alla posizione attuale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passa alla visualizzazione stradale" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passa alla visualizzazione aerea" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Apre livello di forma" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Apri livello di forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Attivare i servizi di localizzazione per rilevare la posizione" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annulla" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazioni di localizzazione" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Impostazione account OpenStreetMap" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Esporta come immagine" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Informazioni su Mappe" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Vai alla posizione attuale" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Scegli il tipo di mappa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Attiva/Disattiva i preferiti" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Stampa percorso" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mappe è fuori rete." + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mappe ha bisogno di una connessione a Internet attiva per funzionare " +"correttamente, ma al momento è impossibile trovarne una." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Verificare la propria connessione e le impostazioni del proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aggiungi a nuovo percorso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Condivide la posizione" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Contrassegna come preferito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check-in qui" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Accedi per modificare le mappe" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aiuta a migliorare la mappa, usando un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Accedi" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Non si ha un account?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Non ha funzionato. Riprovare, o visitare\n" +"OpenStreetMap per ripristinare la password." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Il codice di verifica non corrisponde, riprovare." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Inserire il codice di verifica mostrato sopra" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Accesso effettuato" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "L'account OpenStreetMap è attivo." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Disconnetti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numero civico" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codice postale" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Città" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nessuno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aggiungi campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Le modifiche alla mappa saranno visibili su tutte le mappe che usano\n" +"dati di OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usate recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Successiva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostra più informazioni" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nessun risultato trovato" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trascinare per modificare l'ordine del percorso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Apri posizione" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Invia a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Apri livello di forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Apri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Attiva/Disattiva visibilità" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricerca del percorso con GraphHopper" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I percorsi itineranti per il trasporto pubblico sono forniti da servizi\n" +"di terze parti.\n" +"GNOME non può garantire la correttezza degli itinerari e degli orari " +"indicati.\n" +"Notare che alcuni fornitori potrebbero non includere tutte le modalità di " +"trasporto disponibili,\n" +"per esempio un fornitore nazionale potrebbe non includere le linee aeree, e " +"un fornitore locale\n" +"potrebbe non includere treni regionali.\n" +"Nomi e marchi riportati sono da considerarsi, quando applicabile, come " +"marchi registrati." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra più risultati" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Nasconde le fermate intermedie e informazioni" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra le fermate intermedie e informazioni" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partire ora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partire alle" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivare alle" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghetti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplani" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Posizione attuale" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ingrandire per aggiungere la posizione." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Aumenta ingrandimento" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossibile trovare sezioni delle mappe nella directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Analisi del documento XML non riuscita" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributi richiesti mancanti" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossibile trovare l'elemento OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Un percorso di una directory locale contenente sezioni delle mappe" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Mostra la versione del programma" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignora disponibilità rete" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezionare un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Caricamento" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezionare un posto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Facebook. Selezionarne " +"uno da questo elenco." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Foursquare. Selezionarne " +"uno da questo elenco." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in presso %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivere un commento opzionale per il check-in presso %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Si è verificato un errore" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossibile trovare «%s» nel servizio social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impossibile trovare un posto adatto per il check-in in questo luogo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credenziali scadute. Aprire «Account online» per accedere e abilitare questo " +"account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non c'è niente qui." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La posizione è stata aggiunta alla mappa, notare che ci potrebbe volere un " +"po' prima che venga mostrata sulla mappa e nei risultati di ricerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mappe di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il filesystem è in sola lettura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non si hanno i permessi per salvarle" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La directory non esiste" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nessun nome file specificato" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossibile esportare la visualizzazione" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinate non valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "errore di analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria sconosciuta" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Richiesta del percorso non riuscita." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Percorso non trovato." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Avvia." + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Tutti i file livello" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Impossibile connettersi al servizio di localizzazione" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Claudio Arseni \n" +"Gianvito Cavasoli " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Una applicazione di GNOME per le mappe" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e gli autori di GNOME Maps" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "I dati delle mappe sono di %s e collaboratori" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Le sezioni delle mappe sono fornite da %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricerca fornita da «%s» usando «%s»" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Il tipo di file non è supportato" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Apertura del livello non riuscita" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Apertura di GeoURI non riuscita" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome utente o password non corretti" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Successo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richiesta errata" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Oggetto non trovato" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflitto, qualcun altro ha già modificato l'oggetto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'oggetto è stato eliminato" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Percorso o relazione in riferimento a un nodo figlio non esistente" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Il nome ufficiale. Questo è tipicamente quello che appare all'accesso." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Indirizzo" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Sito web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sito web ufficiale. Provare a usare la forma più basica di un URL, " +"esempio http://example.com invece di http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Il numero di telefono. Usare il formato internazionale, a partire dal " +"simbolo +. Fare attenzione alle leggi locali sulla privacy, specialmente per " +"i numeri di telefono privati." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formato usato deve includere il codice della lingua e il titolo " +"dell'articolo tipo «it:Titolo dell'articolo»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Orari di apertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vedere il collegamento nell'etichetta per un aiuto sul formato." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Popolazione" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Altitudine (altezza sopra il livello del mare) di un punto in metri." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Accesso per disabili" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitata" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designata" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Accesso Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Con cavo" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminale" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servizio" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religione" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianesimo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianesimo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Induismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Giainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Ebraismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Religioni multiple" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganesimo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianesimo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoismo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitariani universalisti" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Servizi igienici" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Indicazioni usate per comunicare altri mappatori le informazioni non " +"evidenti su un elemento, l'intento dell'autore quando lo crea, o suggerire " +"futuri miglioramenti." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleziona tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fatto" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Luogo senza nome" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Popolazione:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudine:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Orari di apertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Accesso Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religione:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Servizi igienici:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Accesso per disabili:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Analisi dell'URI geografico non riuscita" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sì" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitata" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designata" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Luogo non trovato su OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "L'URL di OpenStreetMap non è valido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "L'URL delle coordinate non è valido" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "L'URL non è supportato" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Da %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Caricamento sezioni della mappa per la stampa" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Si può interrompere la stampa se questa prende troppo tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompi stampa" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aggiunge tramite posizione" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Rimuove tramite posizione" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percorso inverso" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aggiungi «%s» in «%s»" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Apertura dell'URI non riuscita" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Apri con %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "caricamento file non riuscito" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo stimato: %s" + +#: src/sidebar.js:352 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Itinerari forniti da %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partenza da %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partenza" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camminare per %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arriva in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Arrivo" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra il percorso a piedi" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Nasconde il percorso a piedi" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Caricare alternative precedenti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Caricare alternative successive" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non è stata trovata alcuna alternativa precedente." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non è stata trovata alcuna alternativa successiva." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Nessun dato trovato sugli orari di questo percorso." + +#: src/transitPlan.js:196 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Nessun fornitore trovato per questo percorso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minuti" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ora" +msgstr[1] "%d ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ora" +msgstr[1] "%d:%02d ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tutto il giorno" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dal tramonto all'alba" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "tutti i giorni" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "vacanze" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacanze scolastiche" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "chiuso" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "con cavo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminale" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servizio" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisione: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Sconosciuta" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Esatta" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f ora" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f sec" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continua su %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continua" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolta a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Svolta a sinistra" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolta leggermente a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Svolta leggermente a sinistra" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolta brusca a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Svolta brusca a sinistra" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolta a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Svolta a destra" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolta leggermente a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Svolta leggermente a destra" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolta brusca a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Svolta brusca a destra" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Alla rotonda, prendere l'uscita %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Alla rotonda, prendere l'uscita verso %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Prendere la rotonda" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendere l'ascensore e scendere a %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Prendere l'ascensore" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fare un'inversione a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Fare un'inversione a sinistra" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fare un'inversione a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Fare un'inversione a destra" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..a974b3e4 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1477 @@ +# Japanese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# victory , 2013. +# Jiro Matsuzawa , 2013. +# Ikuya Awashiro , 2014. +# Hajime Taira , 2014-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-03-16 20:35+0000\n" +"PO-Revision-Date: 2016-04-06 07:08+0900\n" +"Last-Translator: sujiniku \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"世界中あらゆる場所の地図に簡単にアクセスできます。都市や住所を検索して、お探" +"しの場所をさっと見つけられ、待ち合わせ場所もすぐに特定できます。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"この地図アプリは、OpenStreetMap データベースを利用しています。このデータベー" +"スは、世界中の膨大な人々が協力して作成しています。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"特定のタイプにより検索することができます。場所の特定の種類による検索。" +"例:“Pubs near Main Street, Boston“ あるいは “Hotel near Alexanderplatz, " +"Berlin“" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:441 +msgid "Maps" +msgstr "地図" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "シンプルな地図アプリケーション" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;地図;マップ;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +#| msgid "User set last known location" +msgid "last viewed location" +msgstr "直近の既知の位置がユーザー設定によるものかどうか" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +#, fuzzy +#| msgid "Description of last known location" +msgid "Coordinates of last viewed location." +msgstr "直近の既知の位置の詳細" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "ウィンドウサイズ" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "ウィンドウサイズ (幅と高さ) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "ウィンドウの位置" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "ウィンドウの位置 (横位置と縦位置) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "ウィンドウ最大化" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "ウィンドウを最大化しているかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "検索結果の最大数" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "geocode 検索の検索結果として表示する最大数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "記録する最近の場所の数" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "最近訪れた場所を記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "記録する最近のルートの数" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "最近訪れたルートを記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebookへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最新のFacebookのチェックイン時のプライバシー設定で指定可能な値: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquareへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最新のFoursquareのチェックイン時のプライバシー設定で指定可能な値: public, " +"followers, private" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "FoursquareのチェックインをFacebookにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"FacebookアカウントがFoursquareアカウントに関連付けられている場合、Foursquare" +"のチェックインをFacebookにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "FoursquareのチェックインをTwitterにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"TwitterアカウントがFoursquareアカウントに関連付けられている場合、Foursquareの" +"チェックインをTwitterにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap アカウントの設定" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "キーボードショートカット(_K)" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "このアプリケーションについて" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "終了" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "公開範囲" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Facebookに投稿" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Twitterに投稿" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "チェックイン(_H)" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "誰でも" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "友達の友達まで" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "友達のみ" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "自分のみ" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "公開" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "フォロワー" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "プライベート" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ここはどこ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "場所をコピー" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "画像としてエクスポート" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "ビューのエクスポート" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ルートとマーカーを含む" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ショートカットを表示する" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "検索する" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ルート案内の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ルートを印刷する" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "終了する" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地図の表示" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拡大する" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "縮小する" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "縮尺の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "現在の位置へ移動する" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "現在位置を特定するには位置情報サービスをオンにしてください" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "場所の設定" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "現在の位置へ移動します" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "地図の種類を選択" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "ルート案内" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "お気に入り" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "ルートの印刷" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "地図はオフラインです。" + +#: ../data/ui/main-window.ui.h:8 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"インターネット接続がありません。このアプリケーションが適切に機能するためにイ" +"ンターネット接続が必要です。" + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "インターネット接続とプロキシの設定を確認してください。" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "新しいルートを追加" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "別のアプリケーションで開く" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "お気に入りに追加" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "ここにチェックイン" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap アカウント" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"地図編集のためのサインイン" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "メールアドレス" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "パスワード" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "サインイン" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "アカウントをお持ちでありませんか?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +#, fuzzy +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "認証コードが一致しません、やりなおしてください。" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "上記の認証コードを入力" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "検証" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "サインイン済み" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "あなたの OpenStreetMap account アカウントはアクティブです。" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "サインアウト" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "道路地図" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "" + +#: ../data/ui/osm-edit-address.ui.h:3 +#, fuzzy +#| msgid "Postal code: %s" +msgid "Postal code" +msgstr "郵便番号: %s" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +#, fuzzy +#| msgid "_Cancel" +msgid "Cancel" +msgstr "キャンセル(_C)" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:472 +msgid "Next" +msgstr "" + +#: ../data/ui/place-bubble.ui.h:1 +#, fuzzy +#| msgid "Show more results" +msgid "Show more information" +msgstr "さらに結果を表示" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Enterキーを押すと検索します" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "ルートの順序をドラッグで変更" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "場所を開く" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "開く(_O)" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "" + +#: ../data/ui/shape-layer-row.ui.h:1 +#, fuzzy +#| msgid "Toggle favorites" +msgid "Toggle visible" +msgstr "お気に入り" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "さらに結果を表示" + +#: ../data/ui/transit-leg-row.ui.h:1 +msgid "Hide intermediate stops and information" +msgstr "" + +#: ../data/ui/transit-leg-row.ui.h:2 +#, fuzzy +#| msgid "Show more results" +msgid "Show intermediate stops and information" +msgstr "さらに結果を表示" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "現在の位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "位置精度: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to parse XML document" +msgstr "Geo URIの解析に失敗しました" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "" + +#: ../src/application.js:103 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "アカウントの選択" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "読み込み中" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "場所の選択" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Facebookでチェックインする場所を見つけることができませんでした。次のリストか" +"ら1つ選択してください。" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Foursquareでチェックインする場所を見つけることができませんでした。次のリスト" +"から1つ選択してください。" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "%sへチェックイン" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%sへチェックイン時に添えるコメントを書きます。" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:509 +msgid "An error has occurred" +msgstr "エラーが発生しました" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ソーシャルサービスにて \"%s\" を見つけることができません" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "この場所にチェックインするために適切な場所を見つけることができません" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"認証情報が失効しました。オンラインアカウント設定を開き、再度アカウントを認証" +"してください" + +#: ../src/contextMenu.js:96 +msgid "Route from here" +msgstr "ここからのルート" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "行き先を追加" + +#: ../src/contextMenu.js:100 +msgid "Route to here" +msgstr "ここまでのルート" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:630 +msgid "Route request failed." +msgstr "ルート要求は失敗しました。" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:614 +#: ../src/openTripPlanner.js:728 +msgid "No route found." +msgstr "ルートが見つかりません。" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "開始!" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "" + +#: ../src/mainWindow.js:387 +msgid "Failed to connect to location service" +msgstr "位置情報サービスに接続できません" + +#: ../src/mainWindow.js:439 +msgid "translator-credits" +msgstr "" +"松澤 二郎 \n" +"victory \n" +"Ikuya Awashiro \n" +"Hajime Taira \n" +"日本GNOMEユーザー会 " + +#: ../src/mainWindow.js:442 +msgid "A map application for GNOME" +msgstr "GNOME 向け地図アプリケーション" + +#: ../src/mapView.js:354 +msgid "File type is not supported" +msgstr "" + +#: ../src/mapView.js:361 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open layer" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/mapView.js:397 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open GeoURI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/openTripPlanner.js:626 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "" + +#: ../src/osmConnection.js:448 +#, fuzzy +#| msgid "Position not found" +msgid "Object not found" +msgstr "位置が見つかりません" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:159 +msgid "Website" +msgstr "" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:165 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours" +msgstr "営業時間: %s" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +#, fuzzy +#| msgid "Population: %s" +msgid "Population" +msgstr "人口: %s" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access" +msgstr "車いすでのアクセス: %s" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "可能" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "" + +#: ../src/osmEditDialog.js:167 +#, fuzzy +#| msgid "limited" +msgid "Limited" +msgstr "制限あり" + +#: ../src/osmEditDialog.js:168 +#, fuzzy +#| msgid "designated" +msgid "Designated" +msgstr "車いす専用" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../src/osmEditDialog.js:340 +#, fuzzy +#| msgid "Select a place" +msgid "Select Type" +msgstr "場所の選択" + +#: ../src/osmEditDialog.js:458 +msgid "Done" +msgstr "" + +#: ../src/placeBubble.js:122 +#, fuzzy +#| msgid "Population: %s" +msgid "Population:" +msgstr "人口: %s" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "" + +#: ../src/placeBubble.js:133 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours:" +msgstr "営業時間: %s" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "" + +#: ../src/placeBubble.js:143 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access:" +msgstr "車いすでのアクセス: %s" + +#: ../src/placeBubble.js:149 ../src/placeBubble.js:153 +msgid "Phone:" +msgstr "" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Geo URIの解析に失敗しました" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:329 +msgid "yes" +msgstr "可能" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "制限あり" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:335 +msgid "no" +msgstr "困難" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "車いす専用" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "" + +#: ../src/sendToDialog.js:179 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open URI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:285 +#, javascript-format +msgid "Estimated time: %s" +msgstr "所要時間: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:74 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:80 +#, fuzzy +#| msgid "Start!" +msgid "Start" +msgstr "開始!" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:248 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:275 +#, fuzzy, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%f 分" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:286 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:292 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:611 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24時間体制" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "日の出から日没まで" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "毎日" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "祝日" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "学校休日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "休業" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "正確" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f 時間" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f 分" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f マイル" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f フィート" + +#~ msgid "Country code: %s" +#~ msgstr "国コード: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "直近の既知の位置と精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "直近の既知の位置 (緯度と経度を度単位で) と精度 (メートル単位) です。" + +#~ msgid "Description of last known location of user." +#~ msgstr "ユーザーの直近の既知の位置の詳細です。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "直近の既知の位置が、ユーザーが手動で設定したものかどうかの設定です。" + +#~ msgid "I’m here!" +#~ msgstr "私はここにいます!" + +#~ msgid "To" +#~ msgstr "目的地" + +#~ msgid "From" +#~ msgstr "出発地点" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星写真" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 00000000..a77549cd --- /dev/null +++ b/po/kk.po @@ -0,0 +1,1694 @@ +# Kazakh translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Baurzhan Muftakhidinov , 2014-2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-01-14 19:43+0000\n" +"PO-Revision-Date: 2019-02-16 19:31+0500\n" +"Last-Translator: Baurzhan Muftakhidinov \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME карталары" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Дүниежүзілік орындарды табу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карталар қолданбасы сізге дүниежүзі карталарына жылдам қатынауды мүмкін " +"қылады. Оның көмегімен керек болған орынды оның орналасқан қаласын не " +"көшесін енгізу арқылы табуға, немесе доспен кездесу үшін орынды табуға " +"болады." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карталар қолданбасы қауымдастық ұсынатын OpenStreetMap дерекқорын қолданады, " +"оны дүниежүзінің әр жеріндегі мыңдаған адамдар жасайды." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Сонымен қатар, орналасулардың нақты түрлерін де іздеуге болады, мысалы " +"\"Гостиницы Астаны возле Байтерека\" немесе \"Hotels near Gorky Park, Almaty" +"\" (қазақша іздеу әлі мүмкін емес)." + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/mainWindow.js:500 +msgid "Maps" +msgstr "Карталар" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Қарапайым карталар қолданбасы" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Карталар;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Картада сіздің орналасуыңызды көрсете алады." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "соңғы қаралған орналасу" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Соңғы қаралған орналасудың координаттары." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Терезе өлшемі" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Терезе өлшемі (ені мен биіктігі)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Терезе орны" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Терезе орны (x және y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Терезе максималды етілген" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Терезенің максималды күйі" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Іздеу нәтижелерінің максималды саны" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Геокодын іздеуі қайтаратын нәтижелерінің максималды саны." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Соңғы орындардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Соңғы болған орындардың қаншауын сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Соңғы бағыттардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Соңғы болған бағыттардың қаншауын сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook көмегімен белгіленудің жекелік баптауы" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Facebook көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS және SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare көмегімен белгіленудің жекелік баптауы" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Foursquare көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері: public, followers не private." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare көмегімен белгіленудің Facebook ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Facebook тіркелгісіне жазба ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare көмегімен белгіленудің Twitter ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Twitter тіркелгісіне твит ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap пайдаланушы аты немесе эл. пошта адресі" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Пайдаланушы OpenStreetMap деректерін түзету үшін кірген ба, соны анықтайды." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Бағдарды құрастыру кезінде соңғы қолданылған көлік түрі" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Көрінуі" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook-те жариялау" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter-де жариялау" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ба_с тарту" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Б_елгілену" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Әркім" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Достардың достары" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Тек достар" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Тек мен" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Публикалық" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Сонымнан ерушілер" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Жеке" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Осында не бар?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Орналасуды көшіріп алу" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Сурет ретінде экспорттау" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Көріністі экспорттау" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Э_кспорт" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Бағдар және маркерлерді қоса" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Жалпы" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Пернетақта жарлықтарын көрсету" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Іздеу" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Шығу" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Карта көрінісі" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Үлкейту" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Кішірейту" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Масштабты іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Көше көрінісіне ауысу" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Ауадан көрінісіне ауысу" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Қабатты (shape) ашу" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "Қабатты (shape) ашу…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Орнасуыңызды анықтау үшін орналасулар қызметін іске қосыңыз" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Бас тарту" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Орналасу баптаулары" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісін баптау" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "П_ернетақта жарлықтары" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Карталар қолданбасы туралы" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Карта түрін таңдаңыз" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Кішірейту" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Үлкейту" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Таңдамалыларды көрсету/жасыру" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Карталар желіге қосылмаған!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карталар дұрыс жұмысы үшін интернетпен байланыс керек, бірақ ондай байланыс " +"табылмады." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Байланысу және прокси баптауларын тексеріңіз." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Жаңа бағдарға қосу" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Басқа қолданбамен ашу" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Таңдамалы ретінде белгілеу" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Осында белгілену" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісі" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Карталарды түзету үшін кіріңіз" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap тіркелгісі көмегімен\n" +"карталарды жақсартуға көмектесіңіз." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Эл. пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Кіру" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Тіркелгіңіз жоқ па?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Кешіріңіз, бұл жасамады. Қайталап көріңіз, немесе\n" +"пароліңізді тастау үшін, OpenStreetMap сайтын шолыңыз." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Растау коды сәйкес болмады, қайталап көріңіз." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Жоғарыда көрсетілген растау кодын енгізіңіз" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Растау" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Кіру орындалды" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Сіздің OpenStreetMap тіркелгіңіз белсенді." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Шығу" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Көше" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Үй нөмірі" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Пошталық индексі" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Қала" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Түрі" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Жоқ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Өрісті қосу" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Пікір" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Карта өзгерістері OpenStreetMap деректерін қолданатын\n" +"барлық карталарда көрінетін болады." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Жақында қолданылған" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Келесі" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Көбірек ақпарат шығару" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Іздеу үшін enter басыңыз" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Нәтижелер табылмады" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Бағдар ретін ауыстыру үшін тартып апарыңыз" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Орналасуды ашу" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ашу" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Қабатты (shape) ашу" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Көрінуін іске қосу/сөндіру" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Бағдарды іздеу GraphHopper ұсынады" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Бағдарды іздеу OpenTripPlanner ұсынады" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"GNOME қоғамдық көліктің бірнеше түрлері үшін бағдарларды көліктік " +"компаниялар\n" +"және агенттіктерден алынған жоспар кестелері деректеріне негізделіп береді.\n" +"Осындай компаниялар және агенттіктер көрсетілген деректер үшін жауапты " +"емес.\n" +"GNOME көрсетілген бағдарлар және уақыттар үшін жауапты емес.\n" +"Көрсетілген атаулар және брендтер тіркелген сауда белгілері ретінде " +"қарастырылуы тиіс." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Көбірек нәтижелерді көрсету" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты жасыру" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты көрсету" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Қазір кету" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Кету, " + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Жету, " + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Көрсету" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобустар" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамвайлар" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Пойыздар" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Паромдар" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Ағымдағы орналасу" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Дәлдігі: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Орналасуды қосу үшін масштабты үлкейтіңіз!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Үлкейту" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Бумадан плиткалық құрылымды табу сәтсіз аяқталды" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML құжатын талдау қатемен аяқталды" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Керек атрибуттар жетіспейді" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM элементін табу мүмкін емес" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Жергілікті плиткалық бумалар құрылымына дейінгі жол" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "Бағдарлама нұсқасын көрсету" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Тіркелгіні таңдаңыз" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Жүктелуде" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Орынды таңдаңыз" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Карталар Facebook көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Карталар Foursquare көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s жерінде белгілену" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s жерінде белгіленудің міндетті емес хабарламасын жазыңыз." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Қате орын алды" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "\"%s\" орнын әлеуметтік қызметтен табу мүмкін емес" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Бұл орналасуда белгілену үшін жарамды орынды табу мүмкін емес" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Тіркелу деректерінің мерзімі аяқталған, бұл тіркелгіге кіру және оны іске " +"қосу үшін желілік тіркелгілерді ашыңыз" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Осыдан бағдар" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Мақсатты қосу" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Осыған дейін бағдар" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Осында ешнәрсе табылмады!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Орналасу картаға қосылды. Бірақ, ол картада және іздеу нәтижелерінде " +"көрінуіне дейін біршама уақыт өту керек болуын ескертіңіз." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта, %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлдық жүйе тек оқу үшін қолжетерлік" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Осында сақтау үшін керек рұқсаттарыңыз жоқ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Бума жоқ болып тұр" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Файл аты көрсетілмеген" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Көріністі экспорттау мүмкін емес" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "координаттар жарамсыз" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "талдау қатесі" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "геометрия белгісіз" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Бағдар сұранымы сәтсіз." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Бағдар табылмады." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Бастау!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Барлық қабаттар файлдары" + +#: src/mainWindow.js:433 +msgid "Failed to connect to location service" +msgstr "Орналасулар қызметіне байланысу сәтсіз аяқталды" + +#: src/mainWindow.js:498 +msgid "translator-credits" +msgstr "Baurzhan Muftakhidinov " + +#: src/mainWindow.js:501 +msgid "A map application for GNOME" +msgstr "GNOME үшін карталар қолданбасы" + +#: src/mainWindow.js:512 +#| msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. және GNOME Maps авторлары" + +#: src/mainWindow.js:531 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Карта деректерін ұсынған %s және үлес қосушылар" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:547 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Карта плиткасын ұсынған %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Файл түріне қолдау жоқ" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Қабатты ашу сәтсіз аяқталды" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "GeoURI ашу сәтсіз аяқталды" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Бұл бағдар үшін кесте жоспары табылмады." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Пайдаланушы аты не паролі қате" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Сәтті" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Қате сұраным" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Объект табылмады" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Ерегесу, біреу бұл объектті жаңа ғана түзеткен" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Объект өшірілген" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Жол немесе байланыс жоқ ұрпақтарға сілтеп тұр" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Аты" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Ресми аты. Әдетте бұл белгілерде көрсетіледі." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адресі" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ресми веб сайты. Оңайлатылған түрін қолдануға тырысыңыз, мысалы, http://" +"example.com (http://example.com/index.html емес)." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Телефон нөмірі. +таңбасынан басталатын халықаралық пішімді қолданыңыз. " +"Жергілікті жекелік заңдарды ескертіңіз, әсіресе, жеке нөмірлер үшін." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Қолданылатын пішімі тіл коды және мақала атауынан тұруы керек (мыс, ”kk:" +"Мақала атауы”)." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Жұмыс істеу уақыты" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Пішім көмегін алу үшін белгі сілтемесін қараңыз." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Халық саны" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Теңіз деңгейінен биіктігі" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Нүктенің биіктігі (теңіз деңгейінен), метр есебімен." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Мүгедектер арбасымен қатынау" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Иә" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Жоқ" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Шектелген" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Арнайы" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Интернетпен байланыс" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Сымды" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Қызмет" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Дін" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Христиан" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуциандық" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Бірнеше дін" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Паганизм" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафариандық" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Сайентология" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Шинто" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритуализм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Таоизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитариандық универсализм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Әжетханалар" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Естелік" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Басқа карталар жасаушыларға элемент туралы айқын емес ақпаратты жеткізуге " +"қолданатын ақпарат, немесе оны жасау кезіндегі автордың пікірі, немесе " +"болашақ жақсартулар туралы кеңестер." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Түрін таңдаңыз" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Дайын" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Халық саны:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Теңіз деңгейінен биіктігі:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Жұмыс істеу уақыты:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Интернетпен байланыс:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Дін:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Әжетханалар:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Мүгедектер арбасымен қатынау:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Geo URI талдау сәтсіз аяқталды" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "иә" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "шектелген" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "жоқ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "арнайы" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "%s және %s арасында" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Баспаға шығару үшін картаны жүктеп алу" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Баспаға шығару тым көп уақыт алса, оны үзе аласыз" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Баспаға шығару туралы" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Орналасуы бойынша қосу" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Орналасуы бойынша өшіру" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Кері бағыт" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "URI ашу сәтсіз аяқталды" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "файлды жүктеу сәтсіз" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Шамамен уақыты: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s адресіне жету" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Жету" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "%s адресінен бастау" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Бастау" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Жүріс ақпаратын көрсету" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Жүріс ақпаратын жасыру" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Жүріс %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ертерек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Кейінірек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ертерек балама нұсқалары табылмады." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Кейінірек балама нұсқалары табылмады." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d сағат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d сағат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "тәулік бойы" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "күн шыққаннан бастап күн батқанға дейін" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "әр күнде" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "мейрамдар" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "мектеп демалысы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ашық емес" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "сымды" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "терминал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "қызмет" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Белгісіз" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Дәл" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f сағ" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f мин" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s миля" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s фут" + +#~ msgid "Quit" +#~ msgstr "Шығу" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Қабатты (shape) ашу…" + +#~ msgid "OK" +#~ msgstr "ОК" + +#~ msgid "Load Map Layer" +#~ msgstr "Карта қабатын жүктеу" + +#~ msgid "Open Layer" +#~ msgstr "Қабатты ашу" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миля" + +#~ msgid "%f ft" +#~ msgstr "%f фут" + +#~ msgid "Position not found" +#~ msgstr "Орны табылмады" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON файлын талдау қатемен аяқталды" + +#~ msgid "Country code: %s" +#~ msgstr "Ел коды: %s" + +#~ msgid "Population: %s" +#~ msgstr "Халық саны: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Мүгедектер арбасымен қатынау: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Соңғы белгілі орналасу және дәлдігі" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Соңғы белгілі орналасу (ендігі және бойлығы, градуспен) және дәлдігі " +#~ "(метрмен)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Пайдаланушының соңғы белгілі орналасудың сипаттамасы." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Соңғы белгілі орналасуды пайдаланушы қолмен көрсеткен ба, соны анықтайды." + +#~ msgid "I’m here!" +#~ msgstr "Мен осындамын!" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 00000000..513961bb --- /dev/null +++ b/po/kn.po @@ -0,0 +1,172 @@ +# Kannada translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# prabodhcp , 2013 +# Shankar Prasad , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-18 20:54+0000\n" +"PO-Revision-Date: 2013-12-30 17:35+0630\n" +"Last-Translator: Shankar Prasad \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "ಮ್ಯಾಪ್ಸ್" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ಒಂದು ಸರಳ ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "ನಕ್ಷೆಗಳು;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "ಕಿಟಕಿ ಗಾತ್ರ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "ಕಿಟಕಿಯ ಗಾತ್ರ (ಉದ್ದ ಮತ್ತು ಅಗಲ)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (x and y)." +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ (x ಮತ್ತು y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximized state" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Last known location was set manually by user." +msgstr "" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "ಕುರಿತು" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "ನಿರ್ಗಮಿಸು" + +#: ../src/context-menu.ui.h:1 +msgid "What's here?" +msgstr "ಇಲ್ಲೇನಿದೆ?" + +#: ../src/context-menu.ui.h:2 +msgid "I'm here!" +msgstr "ನಾನಿಲ್ಲಿದ್ದೇನೆ!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "prabodhcp , ಶಂಕರ್ ಪ್ರಸಾದ್ " + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME ಗಾಗಿ ಒಂದು ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "ರಸ್ತೆ" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ಉಪಗ್ರಹ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "ಗೊತ್ತಿರದ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "ನಿಖರ" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#: ../src/userLocation.js:62 +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"ಸ್ಥಾನ ನಿಖರತೆ: %s" + diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..fe62b0f7 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,1863 @@ +# Korean translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Seong-ho Cho , 2013-2019. +# Kwangseob Jeong , 2018. +# Jeeyong Um , 2019-2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-03-27 21:17+0000\n" +"PO-Revision-Date: 2020-04-15 20:31+0900\n" +"Last-Translator: Jeeyong Um \n" +"Language-Team: GNOME Korea \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "그놈 지도" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "전세계의 장소를 찾아봅니다" + +# NOTE: false alarm +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"지도로 전 세계 모든 지도에 빠르게 접근할 수 있습니다. 도시, 거리, 친구를 만" +"날 여러분이 찾는 장소를 빠르게 찾을 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"지도는 전세계 수많은 사람이 함께 만든 OpenStreenMap 데이터베이스를 사용합니" +"다." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"“보스턴 번화가 근처의 술집” 또는 “베를린 알렉산더플라츠 근처의 호텔”과 같은 " +"지정된 형식의 위치도 검색할 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "그놈 프로젝트" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "지도" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "간단한 지도 프로그램" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;지도;맵;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "사용자 위치를 지도에 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "최근 본 위치" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "최근 살펴본 위치의 좌표." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "확대" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "확대 수준" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "지도 형식" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "지도 표시 형식(거리, 항공 등)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "창 크기" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "창 크기(너비 및 높이)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "창 위치" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "창 위치(가로 및 세로)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "창 최대화" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "창 최대화 상태" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "최대 검색 결과 수" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "지오코드 검색 결과의 최대 결과 갯수." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "최근 위치를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "최근 방문할 위치를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "최근 경로를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "최근 방문 경로를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "페이스북 체크인 개인 정보 설정" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"최근 사용한 페이스북 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "포스퀘어 체크인 개인 정보 설정" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"최근에 사용한 포스퀘어 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: 공개, 팔로워, 비공개." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "페이스북에 포스퀘어 체크인 게시글 보내기" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 페이스북 계정으로 체크인 게시글을 올릴 경우 표시합니" +"다." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "트위터 포스퀘어 체크인 트윗 보내기" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 트위터 계정으로 체크인 트윗을 올릴 경우 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 사용자 이름 및 전자메일 주소" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"사용자가 OpenStreetMap 데이터를 편집하려고 접속했는지 여부를 나타냅니다." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "최근 확인한 경로 안내 대중교통" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "공개 범위" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "페이스북에 게시" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "트위터에 게시" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "취소(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "체크인(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "전체 공개" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "친구의 친구" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "친구만 보기" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "나만 보기" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "공개" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "팔로워" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "비공개" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "여기서부터 경로 표시" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "경유지 추가" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "여기까지 경로 표시" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "여기가 어딘가요?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "위치 복사" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "내보내기 보기" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "내보내기(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "경로 및 표시 포함" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "일반" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "바로 가기 표시" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "검색" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "경로 계획 도우미 전환" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "끝내기" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "지도 보기" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "확대" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "축소" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "축척 바꾸기" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "거리 보기로 전환" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "공중 보기로 전환" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "도형 레이어 열기" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "도형 레이어 열기…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "위치 정보 서비스에서 현재 위치 정보를 찾도록 켜기" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "취소" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "위치 정보 설정" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap 계정 설정" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "이미지로 내보내기" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "키보드 바로 가기 키(_K)" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "지도 정보" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "지도 형식을 선택하세요" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "축소" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "확대" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "경로 계획 도우미 토글" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "즐겨찾기 토글" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "경로 인쇄" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "맵은 오프라인 상태입니다!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"지도가 제대로 동작하려면 인터넷에 연결해야하지만, 연결을 찾을 수 없습니다." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "연결 및 프록시 설정을 확인하십시오." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "새 경로에 추가" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "위치 공유" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "즐겨찾기 표시" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "이곳을 체크인" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 계정" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"지도를 편집하려면 접속하십시오" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap 계정으로\n" +"지도 개선을 도와주십시오." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "전자메일" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "암호" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "접속" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "계정이 없습니까?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"죄송하지만 동작하지 않습니다. 다시 시도하시거나\n" +"OpenStreetMap을 방문하여 암호를 다시 설정하십시오." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "인증 코드가 일치하지 않습니다. 다시 시도하십시오." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "아래에 나타난 인증 코드를 입력하십시오" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "검증" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "접속함" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap 계정을 활성화했습니다." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "나가기" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "거리" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "지번" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "우편 번호" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "도시" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "형식" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "없음" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "필드 추가" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "설명" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"OpenStreetMap 데이터를 활용하는 모든 지도에\n" +"바뀐 지도가 나타납니다." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "최근 사용" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "다음" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "더 많은 정보 표시" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "결과가 없습니다" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "경로를 바꾸려면 끌어다놓으십시오" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "위치 열기" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "복사" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "보내기…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "도형 레이어 열기" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "열기(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "보기 상태 전환" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "그래프 하퍼 경로 검색" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"제 3자 서비스에서 제공하는 대중 교통 운행 일정입니다.\n" +"그놈에서는 운행 경로와 일정의 정확성을 보증할 수 없습니다.\n" +"서비스 제공자에 따라 이용 가능한 모든 교통 수단을 제공하는 것은 아님에\n" +"주의해주세요. 예를 들어 전국 단위 제공자는 항공편을 제공하지 않는다거나\n" +"지역 제공자가 지방 열차편 정보를 제공하지 않을 수 있습니다.\n" +"명칭과 브랜드는 상표법 적용이 가능할 경우 등록 상표로 간주합니다." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "더 많은 결과 보기" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "중간 정류장 및 정보 숨김" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "중간 정류장 및 정보 표시" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "지금 출발" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "출발 수단" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "도착 수단" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "보이기" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "버스" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "트램" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "열차" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "지하철" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "선박" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "비행기" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "현재 위치" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "추가할 위치를 확대합니다!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "확대" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "디렉터리에서 타일 구조 찾기에 실패했습니다" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML 문서 해석에 실패했습니다" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "필요한 속성이 빠졌습니다" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM 구성 요소를 찾을 수 없습니다" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "로컬 타일 디렉터리 구조 경로" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "프로그램 버전 보기" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "네트워크 사용 가능 여부 무시" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "계정을 선택하십시오" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "불러오는 중" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "장소를 선택하십시오" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"페이스북에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"포스퀘어에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s에 체크인" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s에 체크인할 추가 메시지를 작성합니다." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "오류가 발생했습니다" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "소셜 서비스에서 “%s”을(를) 찾을 수 없습니다" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "이 위치를 체크인할 적당한 장소를 찾을 수 없습니다" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"인증 기한이 지났습니다. 온라인 계정을 열어 접속한 후 이 계정을 활성화하십시오" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "여기에 아무것도 없습니다!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"지도에 위치를 추가했습니다. 지도와 검색 결과에 나타나기까지 시간이 조금 걸릴 " +"수 있는 점을 참고하십시오." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f의 지도.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "읽기 전용 파일 시스템입니다" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "해당 위치를 저장할 권한이 없습니다" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "디렉터리가 없습니다" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "파일 이름을 지정하지 않았습니다" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "보기 화면을 내보낼 수 없습니다" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "잘못된 좌표" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "해석 오류" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "알 수 없는 지형 정보" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "경로 요청에 실패했습니다." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "경로가 없습니다." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "시작!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "모든 레이어 파일" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "위치 서비스 연결에 실패했습니다" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"조성호 \n" +"정광섭 \n" +"엄지용 " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "그놈용 지도 프로그램" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s와(과) 기여자의 지도 데이터" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "%s에서 제공한 지도 타일" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s에서 %s을(를) 활용한 검색 기능 제공함" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "파일 형식을 지원하지 않습니다" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "레이어 열기에 실패했습니다" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "GeoURI 열기에 실패했습니다" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "사용자 이름 또는 암호가 올바르지 않습니다" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "성공" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "잘못된 요청" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "객체가 없습니다" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "누군가가 객체를 수정하여 바꾼 동작이 중복됐습니다" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "객체를 삭제했습니다" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "길 또는 관계는 '없는 하위 구성 요소'를 참조합니다" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "이름" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "공식 이름입니다. 보통 이정표에 나타납니다." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "주소" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "웹사이트" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"공식 웹사이트입니다. http://example.com/index.html 대신 http://example.com과 " +"같은 식의 기본 URL 형식을 활용하십시오." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "전화번호" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"전화번호입니다. + 기호로 시작하는 국제 전화번호 형식을 사용하십시오. 개인 전" +"화번호를 입력할 때 해당 국가의 개인 정보 보호법을 따르십시오." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "위키피디아" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"사용하는 형식에는 “ko:게시글 제목”처럼 언어 코드 및 게시글 제목을 넣어야합니" +"다." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "개장 시간" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "형식 도움말을 보려면 레이블의 링크를 살펴보십시오." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "인구" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "고도" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "미터 단위의 높이(해발고도)입니다." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "휠체어 접근" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "예" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "아니요" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "제한" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "지정됨" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "인터넷 접속" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "무선 네트워크" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "유선" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "터미널" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "서비스" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "종교" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "애니미즘" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "바하이교" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "불교" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "까오다이교" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "크리스트교" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "유교" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "힌두교" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "자이나교" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "유대교" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "이슬람교" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "다신교" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "켈트 파가니즘" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "FSM교" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "사이언톨로지" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "신토(しんとう)" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "시크교" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "심령술" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "도교" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "유니테리안 유니버설리즘" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "부두교" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "야지디교" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "조로아스터교" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "화장실" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "참고" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"요소, 작성자의 작성 의도, 사후 개선을 위한 힌트에 대해 명확하지 않은 정보를 " +"알리려는 용도로 사용하는 정보입니다." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "형식 선택" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "완료" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "이름 없는 장소" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "인구수:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "고도:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "영업 시간:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "인터넷 접속:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "종교시설:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "화장실:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "휠체어 접근:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "전화번호:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "지리 URL 해석에 실패했습니다" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "예" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "제한함" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "아니요" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "지정됨" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap에 해당 위치가 없습니다" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL이 올바르지 않습니다" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL 좌표가 올바르지 않습니다" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL을 지원하지 않습니다" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s에서 %s까지" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "인쇄할 바둑판 배치 지도 불러오는 중" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "인쇄 시간이 오래걸린다면 취소할 수 있습니다" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "인쇄 취소" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "현재 위치 추가" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "현재 위치 제거" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "역경로" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s을(를) %s에 추가" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI 열기에 실패했습니다" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s 프로그램으로 열기" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "파일 불러오기에 실패했습니다" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "예상 시간: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s에서 제공한 일정" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s에 시작" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "시작" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s 걷기" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s에 도착" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "도" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "도보 안내 표시" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "도보 안내 숨김" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "이른 대안 수단 불러오기" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "다음 대안 수단 불러오기" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "이른 대안 수단이 없습니다." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "다음 대안 수단이 없습니다." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e일" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "이 경로의 시각표 데이터가 없습니다." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "이 경로의 제공자가 없습니다." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d분" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d시간" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d시간" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "하루 종일" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "일출부터 일몰까지" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "매일" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "공휴일" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "방학" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "열지 않음" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s~%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "유선" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "터미널" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "서비스" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "위치 정확도: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "알 수 없음" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "정확함" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f시간" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f분" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f초" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s 킬로미터" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s 미터" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s 마일" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s 피트" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "%s에서 계속 진행" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "계속 진행" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s에서 좌회전" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "좌회전" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s에서 살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s에서 크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s에서 우회전" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "우회전" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s에서 살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s에서 크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "로터리에서 %s 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "로터리에서 %s 쪽 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "로터리로 진입" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "엘리베이터 탑승 후 %s에서 내림" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "엘리베이터 탑승" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 쪽으로 왼쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "왼쪽으로 유턴" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 쪽으로 오른쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "오른쪽으로 유턴" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner 경로 검색" + +#~ msgid "Add destination" +#~ msgstr "목적지 추가" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "다른 프로그램으로 열기" + +#~ msgid "Press enter to search" +#~ msgstr "검색할 단어를 입력하십시오" + +#~ msgid "Quit" +#~ msgstr "끝내기" + +#~ msgid "Open Shape Layer…" +#~ msgstr "도형 레이어 열기…" + +#~ msgid "OK" +#~ msgstr "확인" + +#~ msgid "Load Map Layer" +#~ msgstr "맵 레이어 불러오기" + +#~ msgid "Open Layer" +#~ msgstr "레이어 열기" + +#~ msgid "%f km" +#~ msgstr "%f킬로미터" + +#~ msgid "%f m" +#~ msgstr "%f미터" + +#~ msgid "%f mi" +#~ msgstr "%f마일" + +#~ msgid "%f ft" +#~ msgstr "%f피트" + +#~ msgid "Country code: %s" +#~ msgstr "국가 기호: %s" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 00000000..02564f95 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,1905 @@ +# Lithuanian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Aurimas Černius , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-06 23:12+0200\n" +"Last-Translator: Aurimas Černius \n" +"Language-Team: Lietuvių \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Gtranslator 3.34.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME žemėlapiai" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Rasti vietas aplink pasaulį" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Žemėlapiai leidžia jums lengvai pasiekti pasaulio žemėlapius. Ši programa " +"leidžia greitai rasti ieškomą vietą naudojant paiešką pagal miestą ar gatvę " +"bei rasti vietą susitikimui su draugu." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Žemėlapiai naudoja OpenStreetMap duomenų bazę, kurią sukūrė tūkstančiai " +"žmonių iš viso pasaulio." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Taip pat galite ieškoti specifinių vietų, tokių kaip „Barai šalia Gedimino " +"prospekto, Vilnius“ arba „Viešbučiai šalia Basanavičiaus gatvės, Palanga“." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME projektas" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Žemėlapiai" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Paprasta žemėlapių programa" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Žemėlapiai;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leidžia parodyti žemėlapyje jūsų vietą." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "paskutinė žiūrėta vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Paskutinės žiūrėtos vietos koordinatės." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mastelis" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mastelis" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Žemėlapio tipas" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Rodomas žemėlapio tipas (gatvių, oro, ir t. t.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Lango dydis" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Lango dydis (plotis ir aukštis)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Lango padėtis" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Lango padėtis (X ir Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Langas išdidintas" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Lango išdidinimo būsena" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Didžiausias paieškos rezultatų skaičius" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Didžiausias paieškos rezultatų skaičius iš geocode paieškos." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Įrašomas paskutinių vietų skaičius" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Įrašomas paskutinių aplankytų vietų skaičius." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Paskutinių įrašomų maršrutų skaičius" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Įrašomas paskutinių aplankytų maršrutų skaičius." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Siuntimo į Facebook privatumo nustatymas" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paskutinis naudotas siuntimo į Facebook privatumo nustatymas. Galimos vertės " +"yra EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS arba SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Siuntimo į Foursquare privatumo nustatymas" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paskutinis naudotas siuntimo į Foursquare nustatymas. Galimo vertės yra " +"public, followers arba private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siuntimo į Foursquare pranešimas į Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Facebook paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Twitter paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap naudotojo vardas arba el. pašto adresas" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Nurodo ar naudotojas prisijungė OpenStreetMap duomenų redagavimui." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Paskutinis transporto tipas, naudotas keliui" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Matomumas" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Pranešti Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Pranešti Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Atsisakyti" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Nusiųsti" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Visiems" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugų draugams" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tik draugams" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tik man" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Viešas" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekėjams" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privatus" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršrutas iš čia" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Pridėti tarpinę stotelę" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršrutas į čia" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ten?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopijuoti vietą" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridėti prie OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportuoti rodinį" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportuoti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Įtraukti maršrutą ir žymes" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Bendra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rodyti trumpinius" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ieškoti" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Išeiti" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Žemėlapio rodinys" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Didinti" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Mažinti" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Perjungti skalę" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Perjungti į gatvės vaizdą" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Perjungti į vaizdą iš oro" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atverti formos sluoksnį" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Atverti formos sluoksnį…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Savo vietai surasti įjunkite vietos tarnybas" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atsisakyti" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Vietos nustatymai" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Nusistatyti OpenStreetMap paskyrą" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Eksportuoti kaip paveikslėlį" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Klaviatūros trumpiniai" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Apie žemėlapius" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pasirinkite žemėlapio tipą" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Mažinti" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Didinti" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Perjungti mėgiamiausius" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Spausdinti kelią" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Žemėlapiai atsijungę nuo interneto!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Žemėlapių tvarkingam veikimui reikia aktyvaus interneto ryšio, bet tokio " +"nėra." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Patikrinkite savo prisijungimo ir tarpinio serverio nustatymus." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pridėti naują maršrutą" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dalintis vieta" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Pažymėti kaip mėgiamą" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Patikrinkite čia" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap paskyra" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prisijunkite, kad redaguotumėte " +"žemėlapius" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Padėkite tobulinti žemėlapį, naudodami\n" +"OpenStreetMap paskyrą." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "El. paštas" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Slaptažodis" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Prisijungti" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Neturite paskyros?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Atleiskite, tai nesuveikė. Prašome bandyti dar kartą arba apsilankyti\n" +"OpenStreetMap, kad atstatytumėte savo slaptažodį." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Patvirtinimo kodas neatitiko, prašome bandyti dar kartą." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Įveskite aukščiau parodytą patvirtinimo kodą" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Patvirtinti" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Prisijungę" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsų OpenStreetMap paskyra yra aktyvi." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Atsijungti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gatvė" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Namo numeris" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pašto kodas" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miestas" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipas" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nėra" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridėti lauką" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentaras" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Žemėlapio pakeitimai bus matomi visuose žemėlapiuose,\n" +"kuriuose naudojami OpenStreetMap duomenys." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Neseniai naudoti" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Kitas" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Rodyti daugiau informacijos" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nerasta rezultatų" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Tempkite kelio eilės tvarkai keisti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atverti vietą" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopijuoti" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Siųsti…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atverti" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Perjungti matomus" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Maršruto paieška naudojant GraphHopper" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Viešojo transporto maršrutai yra pateikiami trečiųjų šalių tarnybų.\n" +"GNOME negali garantuoti rodomų tvarkaraščių teisingumo.\n" +"Pastebėtinas, kad kai kurie teikėjai gali neteikti visų transporto rūšių,\n" +"pvz. nacionalinis teikėjas gali neteikti oro linijų, o vietiniam gali " +"trūkti\n" +"regioninių traukinių.\n" +"Pavadinimai ir prekės ženklai yra laikomi registruotais prekyženkliais, kai " +"taikoma." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rodyti daugiau rezultatų" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slėpti tarpines stoteles ir informaciją" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rodyti tarpines stoteles ir informaciją" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Išvykti dabar" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Išvykti" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atvykti" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rodyti" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusai" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvajai" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Traukiniai" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Keltai" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lėktuvai" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Dabartinė vieta" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Pritraukti vietos pridėjimui!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Padidinti" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nepavyko kataloge rasti koklių struktūros" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nepavyko perskaityti XML dokumento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkta reikiamų požymių" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepavyko rasti OSM elemento" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Kelias iki vietinės koklių katalogo struktūros" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Rodyti programos versiją" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Nepaisyti tinklo prieinamumo" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pasirinkite paskyrą" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Įkeliama" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pasirinkite vietą" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Facebook. Pasirinkitę ją iš " +"sąrašo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Foursquare. Pasirinkite ją iš " +"sąrašo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Nusiųsti į %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Parašykite pranešimą nusiuntimui į %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Kilo klaida" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nepavyko rasti „%s“ socialinėje tarnyboje" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nepavyko rasti tinkamos vietos šios vietos nusiuntimui" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Įgaliojimai pasibaigė, atverkite internetines paskyra prisijungimui ir " +"paskyros atnaujinimui" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Čia nieko nerasta!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vieta pridėta prie žemėlapio, pastebėsime, kad gali užtrukti, kol ji taps " +"matoma žemėlapyje bei paieškoje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Žemėlapiai ties %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Failų sistema yra tik skaitymui" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jūs neturite leidimo ten įrašyti" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogo nėra" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenurodytas failo pavadinimas" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nepavyko eksportuoti rodinio" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neteisinga koordinatė" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "perskaitymo klaida" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nežinoma geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Nepavyko užklausti maršruto." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Maršrutas nerastas." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Pradėti!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Visi sluoksnių failai" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Nepavyko prisijungti prie vietos tarnybos" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Išvertė:\n" +"Aurimas Černius " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Žemėlapių programa GNOME aplinkai" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorių teisės priklauso © 2011 – 2019 Red Hat, Inc. ir GNOME Žemėlapių " +"autoriams" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Žemėlapio duomenys pagal %s ir talkininkus" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Žemėlapio išklotinę pateikė %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Paiešką teikia %s naudojant %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Failo tipas yra nepalaikomas" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Nepavyko atverti sluoksnio" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Nepavyko atverti GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Pavyko" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bloga užklausa" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektas nerastas" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktas, kažkas ką tik modifikavo objektą" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektas buvo ištrintas" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Kelias ar santykis nurodo į nesantį kūrinį" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Pavadinimas" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficialus pavadinimas. Jis dažniausiai matomas ženkluose." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresas" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tinklalapis" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficialus tinklalapis. Bandykite paprasčiausią URL formą, pvz. http://" +"pavyzdys.lt vietoj http://pavyzdys.lt/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefonas" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefono numeris. Naudokite tarptautinį formatą, prasidedantį + simboliu. " +"Atsižvelkite į vietinius privatumo įstatymus, ypač dės asmeninių telefono " +"numerių." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Naudojamas formatas turi įtraukti kalbos kodą bei straipsnio pavadinimą, " +"pvz. „lt:Straipsnio pavadinimas“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Darbo laikas" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Informaciją apie formatą gausite paspaudę saitą apačioje." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Gyventojų skaičius" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Aukštis" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Absoliutus aukšti (virš jūros lygio) metrais." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Taip" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ribota" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Su paskirtimi" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interneto prieiga" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Laidinis" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalas" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tarnyba" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizmas" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizmas" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizmas" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Krikščionybė" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucionizmas" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Induizmas" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizmas" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judėjizmas" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamas" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Daug religijų" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pagonybė" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizmas" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Sientologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sichizmas" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizmas" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizmas" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarinis universalizmas" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jazidizmas" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmas" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tualetai" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Pastaba" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacija, naudojama kitiems žemėlapių naudotojams informuoti apie " +"neakivaizdžią informaciją, susijusią su elementu, autoriaus tikslą jį " +"kuriant arba patarimus tolimesniam patobulinimui." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridėti į OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pasirinkite tipą" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Atlikta" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nepavadinta vieta" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Gyventojų skaičius:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Aukštis:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Darbo laikas:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interneto prieiga:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tualetai:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Prieiga neįgaliųjų vežimėliais:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefonas:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Nepavyko perskaityti Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "taip" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ribota" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "su paskirtimi" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nerasta OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL yra netinkamas" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatės URL yra netinkamos" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL yra nepalaikomas" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Nuo %s iki %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Įkeliami žemėlapio kokliai spausdinimui" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Galite atšaukti spausdinimą, jei tai per ilgai užtrunka" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Atšaukti spausdinimą" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridėti per vietą" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Šalinti per vietą" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Atgalinis maršrutas" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridėti %s į %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Nepavyko atverti URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Atverti su %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nepavyko įkelti failo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Įvertintas laikas: %s" + +#: src/sidebar.js:352 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Teikėjus pateikė %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Pradėkite ties %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pradėkite" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Nueikite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Atvykti ties %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Atvykti" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rodyti ėjimo nurodymus" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slėpti ėjimo nurodymus" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Įkelti ankstesnes alternatyvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Įkelti vėlesnes alternatyvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nerasta ankstesnių alternatyvų." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nerasta vėlesnių alternatyvų." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Šiam maršrutui nerasta tvarkaraščio duomenų." + +#: src/transitPlan.js:196 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Šiam maršrutui nerasta teikėjo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minutė" +msgstr[1] "%d minutės" +msgstr[2] "%d minučių" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d valanda" +msgstr[1] "%d valandos" +msgstr[2] "%d valandų" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d valanda" +msgstr[1] "%d:%02d valandos" +msgstr[2] "%d:%02d valandų" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "visą parą" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "nuo saulėtekio iki saulėlydžio" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "kasdien" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "nedarbo dienomis" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "mokslo dienomis" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "uždaryta" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "laidinis" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalas" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tarnyba" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tikslumas: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nežinomas" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tikslus" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f val" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mylios" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s pėdos" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Tęsti %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Tęsti" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sukti kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Sukti kairėn" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sukti kairiau ties %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Sukti kairiau" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Staigiai sukti į kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Staigiai sukti į kairėn" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sukti dešiniau ties %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Sukti dešiniau" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Staigiai sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Staigiai sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Žiede pasirinkite %s išvažiavimą" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Žiede pasirinkite išvažiavimą į %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Įvažiuokite į žiedą" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Liftu pasikelkite į %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Kilkite liftu" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Apsisukite į %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Apsisukite" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Apsisukite į dešinę į %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Apsisukite į dešinę" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Maršruto paieška naudojant OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Pridėti paskirties vietą" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atverti su kita programa" + +#~ msgid "Press enter to search" +#~ msgstr "Spauskite enter paieškai" + +#~ msgid "Quit" +#~ msgstr "Išeiti" + +#~ msgid "OK" +#~ msgstr "Gerai" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Atverti formos sluoksnį…" + +#~ msgid "Load Map Layer" +#~ msgstr "Įkelti žemėlapio sluoksnį" + +#~ msgid "Open Layer" +#~ msgstr "Atverti sluoksnį" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pėdos" + +#~ msgid "Position not found" +#~ msgstr "Nerasta padėtis" + +#~ msgid "Country code: %s" +#~ msgstr "Šalies kodas: %s" + +#~ msgid "Population: %s" +#~ msgstr "Gyventojų skaičius: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nepavyko perskaityti GeoJSON failo" + +#~ msgid "_Share" +#~ msgstr "_Viešinti" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 00000000..b1fa9f39 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,1749 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Rūdolfs Mazurs , 2013, 2014, 2016, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-02 06:11+0000\n" +"PO-Revision-Date: 2019-08-24 18:03+0200\n" +"Last-Translator: Rūdolfs Mazurs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :" +" 2);\n" +"X-Generator: Lokalize 2.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kartes" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Atrodi vietas visā pasaulē" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartes dod iespēju ātri piekļūt kartēm visā pasaulē. Tās ļauj ātri atrast " +"kādu vietu, meklējot pilsētu vai ielu, vai atrast vietu, kur sastapt draugus." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartes izmanto kolektīvi veidoto OpenStreetMap datubāzi, ko veidojuši " +"tūkstošiem cilvēku visā pasaulē." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Varat pat meklēt noteikta veida vietas, piemēram “Krogi pie gaismas ielas”, " +"vai “Autostāvvieta Ādaži”" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME projekts" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Kartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Vienkārša karšu lietotnes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ļauj uz kartes parādīt jūsu atrašanās vietu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "pēdējā skatītā vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Pēdējās apskatītās vietas koordinātas" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mērogs" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mērogs" + +#: data/org.gnome.Maps.gschema.xml:21 +#| msgctxt "shortcut window" +#| msgid "Map View" +msgid "Map type" +msgstr "Kartes veids" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Kartes veids, ko attēlot (ielu, aerofoto utt.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Loga izmērs" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Loga izmērs (platums un augstums)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Loga novietojums" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Loga novietojums (X un Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Logs maksimizēts" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Loga maksimizācijas stāvoklis" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimālais meklēšanas rezultātu skaits" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimālais meklēšanas rezultātu skaits no geocode meklējuma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saglabājamo neseno vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saglabājamo nesen apmeklēto vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saglabājamo neseno maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saglabājamo nesen apmeklēto maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook vietas reģistrēšanas privātuma iestatījumi" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pēdējie izmantotie Facebook vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare vietas reģistrēšanas privātuma iestatījumi" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pēdējie izmantotie Foursquare vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: public, followers vai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare vietas reģistrēšanas Facebook apziņošana" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Facebook kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare vietas reģistrēšanas Twitter apziņošana" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Twitter kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap lietotājvārds vai e-pasta adrese" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Norāda, vai lietotājs ir ierakstījies, lai rediģētu OpenStreetMap datus." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Pēdējais izmantotais transportēšanas tips maršrutēšanai" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Redzamība" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Veidot Facebook ziņojumu" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Veidot Twitter ziņojumu" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "At_celt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Reģistrēt vietu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ikviens" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugu draugi" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tikai draugi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tikai es" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publisks" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekotāji" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privāts" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Kas ir šeit?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Kopēt atrašanās vietu" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Eksportēt kā attēlu" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportēt skatu" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportēt" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Iekļaut maršrutu un marķierus" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Vispārīgi" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rādīt saīsnes" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Meklēt" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Iziet" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartes skats" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Tuvināt" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Tālināt" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Pārslēgt mērogu" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Pārslēgties uz ielas skatu" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Pārslēgties uz aeiro skatu" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atvērt formu slāni" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Atvērt formu slāni…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Ieslēgt vietas noteikšanas pakalpojumu, lai atrastu savu atrašanās vietu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atcelt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Atrašanās vietas iestatījumi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Izveidot OpenStreetMap kontu" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatūras īsinājumtaustiņi" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "P_ar kartēm" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Izvēlieties kartes veidu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Tālināt" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Tuvināt" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Pārslēgt izlasi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Drukāt maršrutu" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Kartes ir nesaistē!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Lai varētu strādāt, Kartēm vajag aktīvu savienojumu ar internetu, bet tādu " +"nevar atrast." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Pārbaudiet savu savienojumu un starpnieka iestatījumus." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pievienot jaunu maršrutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +#| msgid "Open location" +msgid "Share location" +msgstr "Koplietot vietu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Pievienot izlasei" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Reģistrēt šo vietu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap konts" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ierakstieties, lai rediģētu kartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Palīdziet uzlabot karti, izmantojot\n" +"OpenStreetMap kontu." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pasts" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parole" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Ierakstīties" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Nav sava konta?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz vai apmeklējiet\n" +"OpenStreetMap, lai pārstatītu savu paroli." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Verifikācijas kodi nesakrīt. Lūdzu, mēģiniet vēlreiz." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Ievadiet verifikācijas kodu, kas redzams augšā" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verificēt" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Ierakstījies" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsu OpenStreetMap konts ir aktīvs." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Izrakstīties" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Iela" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Mājas numurs" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pasta indekss" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Pilsēta" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tips" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nav" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pievienot lauku" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentārs" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmaiņas kartē būs redzmas visās kartēs, kas izmanto\n" +"OpenStreetMap datus." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nesen lietotie" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Nākamais" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Rādīt vairāk informācijas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nav atrastu rezultātu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Velciet, lai mainītu maršruta secību" + +#: data/ui/send-to-dialog.ui:10 +#| msgid "Open location" +msgid "Open Location" +msgstr "Atvērt vietu" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopēt" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sūtīt uz…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Atvērt formu slāni" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atvērt" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Pārslēgt redzamību" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper maršruta meklēšana" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "OpenTripPlanner maršruta meklēšana" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Sabiedriskā transporta maršrutus nodrošina GNOME, izmantojot\n" +"maršrutu sarakstu datus no tranzīta uzņēmumiem vai aģentūrām.\n" +"Uzņēmumus un aģentūras nevar saukt pie atbildības par attēlotajiem\n" +"rezultātiem.\n" +"GNOME nevar garantēt attēloto maršrutu un sarakstu pareizību.\n" +"Attēlotie nosaukumi un zīmoli tiek uzskatīti par preču zīmēm, ja attiecināms." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rādīt vairāk rezultātu" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slēpt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rādīt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Doties tagad" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Doties līdz" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atbraukt līdz" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rādīt" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vilcieni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Prāmji" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Pašreizējā atrašanās vieta" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Precizitāte — %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Tuviniet, lai pievienotu atrašanās vietu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Tuvināt" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Direktorijā nevarēja atrast flīžu struktūru" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neizdevās parsēt XML dokumentu" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkst nepieciešamo atribūtu" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nevarēja atrast OSM elementu" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Ceļš uz lokālo flīžu direktorijas struktūru" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Rādīt programmas versiju" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izvēlēties kontu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ielādē" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izvēlieties vietu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Facebook. Lūdzu, izvēlieties " +"vienu no saraksta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Foursquare. Lūdzu, izvēlieties " +"vienu no saraksta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Reģistrēties %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ja vēlaties, reģistrējoties %s, ierakstiet ziņojumu." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Gadījās kļūda" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nevar atrast “%s” sociālajā pakalpojumā" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nevar atrast piemērotu vietu, kur ierakstīties šajā apkārtnē" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Pilnvaras termiņš ir beidzies, atveriet tiešsaistes kontus, lai ierakstītos " +"un ieslēgtu šo kontu" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Maršruts no šejienes" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Pievienot galamērķi" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Maršruts uz šejieni" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Šeit nekas nav atrasts!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Atrašanās vieta tika pievienota kartei. Ņemiet vērā, ka varētu paiet kāds " +"laiks, pirms izmaiņas parādās kartē un meklēšanas rezultātos." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartes pie %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datņu sistēma ir tikai lasāma" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jums nav tiesību tur saglabāt" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorija nepastāv" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nav norādīts datnes nosaukums" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nevar eksportēt skatu" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nederīga koordināta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parsēšanas kļūda" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nezināma ģeometrija" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Maršruta pieprasījums neizdevās." + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Nav atrastu maršrutu." + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "Sākt!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Visu slāņu datnes" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "Neizdevās savienoties ar pozīcijas noteikšanas pakalpojumu" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "Rūdolfs Mazurs " + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "GNOME karšu lietotne" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autortiesības © 2011 – 2019 Red Hat, Inc. un GNOME “Kartes” autori" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartes datus nodrošina %s un atbalstītāji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karšu fragmentus nodrošina %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Meklēšanu nodrošina %s izmanto %s" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "Datnes tips nav atbalstīts" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "Neizdevās atvērt slāni" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "Neizdevās atvērt GeoURI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Šim maršrutam nav atrastu transporta sarakstu." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Veiksmīgi" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nederīgs pieprasījums" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekts nav atrasts" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikts, kāds cits tikko modificēja objektu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekts tika izdzēsts" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ceļš vai relācija norāda uz neeksistējošu bērnu" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nosaukums" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiālais nosaukums. Tas parasti ir redzams uz zīmēm." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adrese" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tīmekļa vietne" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiālā tīmekļa vietne. Mēģiniet izmantot pamata URL, tas ir, http://" +"example.com, nevis http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Tālrunis" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Tālruņa numurs. Izmantojiet starptautisko formātu, sākot ar + zīmi. Ņemiet " +"vērā lokālos privātuma likumus, sevišķi privātiem tālruņu numuriem." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formātam vajadzētu iekļaut valodas kodu un raksta virsrakstu, piemēram “lv:" +"Raksta virsraksts”" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Darba laiks" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Skatiet saiti etiķetē, lai saņemtu palīdzību par formātu." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Iedzīvotāju skaits" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Augstums" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Punkta augstums (virs jūras līmeņa) metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Piekļuve ar ratiņkrēsliem" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Jā" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nē" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ierobežots" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Nozīmēts" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pieeja internetam" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Vadu" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminālis" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Serviss" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Reliģija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisms" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahāisms" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisms" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaisms" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristietība" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfūcisms" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisms" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Džainisms" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jūdaisms" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islāms" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Vairākas reliģijas" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pagānisms" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisms" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientoloģija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoisms" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisms" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spirituālisms" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Daoisms" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitārais universālisms" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jadīdisms" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisms" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tualetes" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Piezīme" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informācija, ko izmantot citiem kartētajiem par ne acīmredzamu informāciju " +"par elementu, autora nodomu to veidojot vai norādēm turpmākai uzlabošanai." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izvēlēties tipu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Pabeigts" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nenosaukta vieta" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Iedzīvotāju skaits:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Augstums:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Darba laiks:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Pieeja internetam:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Reliģija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tualetes:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Piekļuve ar ratiņkrēsliem:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Tālrunis:" + +#: src/placeEntry.js:205 +msgid "Failed to parse Geo URI" +msgstr "Neizdevās parsēt Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jā" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ierobežots" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nē" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "nozīmēts" + +#: src/place.js:475 +#| msgid "Edit on OpenStreetMap" +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nav atrasta OpenStreetMap kartē" + +#: src/place.js:495 +#| msgid "OpenStreetMap Account" +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nav derīga" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL koordinātas nav derīgas" + +#: src/place.js:521 +#| msgid "File type is not supported" +msgid "URL is not supported" +msgstr "URL nav atbalstīts" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "No %s līdz %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ielādē kartes flīzes drukāšanai" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Jūs varat pārtraukt drukāšanu, ja tas aizņem pārāk daudz laika" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Par drukāšanu" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pievienot “caur vietu”" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Izņemt “caur vietu”" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Apgriezt maršrutu pretēji" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "Pievienot %s pie %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Neizdevās atvērt URI" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Atvērt ar %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neizdevās ielādēt datni" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Novērtētais laiks — %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Sākt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Sākums" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Iet %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Pienāk %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Pienāk" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rādīt iešanas norādes" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slēpt iešanas norādes" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ielādēt agrākas alternatīvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ielādēt vēlākas alternatīvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nav atrastu vecāku alternatīvu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nav atrastu jaunāku alternatīvu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minūte" +msgstr[1] "%d minūtes" +msgstr[2] "%d minūšu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d stunda" +msgstr[1] "%d stundas" +msgstr[2] "%d stundu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d.%02d stunda" +msgstr[1] "%d.%02d stundas" +msgstr[2] "%d.%02d stundu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "diennakti" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "no saullēkta līdz saulrietam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "katru dienu" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "brīvdienas" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skolas brīvdienas" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nav atvērts" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "vadu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminālis" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviss" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Nezināms" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "Precīzi" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s jūdzes" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s pēdas" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atvērt ar citu lietotni" + +#~ msgid "Press enter to search" +#~ msgstr "Spiediet “Enter”, lai meklētu" + +#~ msgid "Quit" +#~ msgstr "Iziet" + +#~ msgid "OK" +#~ msgstr "Labi" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Atvērt formu slāni…" + +#~ msgid "Load Map Layer" +#~ msgstr "Ielādēt kartes slāni" + +#~ msgid "Open Layer" +#~ msgstr "Atvērt slāni" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f jūdzes" + +#~ msgid "%f ft" +#~ msgstr "%f pēdas" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..63ad5f4e --- /dev/null +++ b/po/meson.build @@ -0,0 +1,2 @@ +i18n.gettext(name, preset: 'glib', + args: [ '--keyword=X-Geoclue-Reason' ]) diff --git a/po/mjw.po b/po/mjw.po new file mode 100644 index 00000000..eb6e5569 --- /dev/null +++ b/po/mjw.po @@ -0,0 +1,1653 @@ +# Karbi translation for gnome-maps. +# Copyright (C) 2019 gnome-maps's Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Jor Teron , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-03 19:54+0000\n" +"PO-Revision-Date: 2019-08-04 23:24+0530\n" +"Last-Translator: Jor Teron \n" +"Language-Team: Karbi \n" +"Language: mjw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2 ; plural=( n != 1 );\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "pathe-bi" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X pen Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username mate e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook long Post" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter long Post" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kadokawe" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Jirpo a jirpo" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Jirpo chot" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Ne anchot" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Monit an" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ladak kopi lo do?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Kiri" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Pathe" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pabi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Account selam" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Maps Aputhak" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Pabi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Pathe" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Maps ke offline!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Sign In" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Nangli OpenStreetMap account dambom lo." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ale" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hem phai" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PIN Code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Rongsopi" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dunthu" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kelo dim…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Non kedam lo" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Kedam apor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Kele apor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Paklang" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Hemkonglong" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Telong" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Pathe" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Account chongvai" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Dim chongvai" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Dak ajat ta longle!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "" + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "" + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "" +"Jor Teron \n" +"Biju Rongpi " + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Chunlo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Men" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Kangpu apor" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Armu" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Dhorom" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Barso-barpi-hem" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Amen tokte adim" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Armu:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Kangpu apor:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet do:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Dhorom:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Barso-barpi-hem:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "" + +#: src/placeEntry.js:194 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "%s pen ingpu" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s pen pangcheng" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pangcheng" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Keng-kedam %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kele dim %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Nangkele" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "Porphai %d" +msgstr[1] "Porphai %d" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "Porphai %d:%02d" +msgstr[1] "Porphai %d:%02d" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "arni ketet pen arni chelut an" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "arnivang" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "rat kangkir" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "locharli-hem kangkir" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ingpu pe" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Puthekthe" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 00000000..8dc9906b --- /dev/null +++ b/po/ml.po @@ -0,0 +1,1600 @@ +# Malayalam translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# syamlalpullamballi , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-10-25 19:38+0000\n" +"PO-Revision-Date: 2018-10-26 22:15+0800\n" +"Last-Translator: Anish Sheela \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ഗ്നോം ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ലോകമെമ്പാടുമുള്ള സ്ഥലങ്ങൾ കണ്ടെത്തുക" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to quickly find the place " +"you’re looking for by searching for a city or street, or locate a place to meet a friend." +msgstr "" +"ഭൂപടങ്ങള്‍ താങ്കള്‍ക്കു ലോകത്തിലെ എല്ലായിടത്തെയും ഭൂപടങ്ങളിലേക്കു പ്രവേശനം നല്‍കുന്നു. ഇത് താങ്കള്‍ അന്വേഷിക്കുന്ന സ്ഥലം നഗരമോ " +"തെരുവൊ തിരയുന്നതിലൂടെ പെട്ടന്നു തന്നെ കണ്ടുപിടിക്കാന്‍ അല്ലെങ്കില്‍ സുഹൃത്തിനെ കാണുവാന്‍ ഒരു സ്ഥലം കണ്ടുപിടിക്കാന്‍ സഹായിക്കുന്നു." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands of people across " +"the globe." +msgstr "" +"ഭൂപടങ്ങള്‍ സഹകരണപരമായ OpenStreetMap ന്റെ ശേഖരിച്ചു് വചിട്ടുള്ള വിവരങ്ങളും വസ്തുതകളും ഉപയോഗിക്കുന്നുണ്ട്, ലോകത്തിലെ " +"എല്ലായിടത്തിലേയും നൂറുകണക്കിനു ആളുകള്‍ ചേര്‍ന്നുണ്ടക്കിയതാണത്." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main Street, Boston” or " +"“Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 src/mainWindow.js:503 +msgid "Maps" +msgstr "ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ലളിതമായ ഒരു ഭൂപട പ്രയോഗം" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "നിങ്ങളുടെ ലൊക്കേഷനെ മാപ്പിൽ കാണിക്കുന്നതിന് അനുവദിക്കുന്നു" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "അവസാനം കണ്ട സ്ഥലം" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "അവസാനം കണ്ട സ്ഥലത്തിന്റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം (വീതിയും ഉയരവും)" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം (X ഉം Y ഉം)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "വലുതാക്കിയ ജാലകം" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "ജാലകം വലുതാക്കുന്ന അവസ്ഥ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "തിരച്ചില്‍ ഫലങ്ങളുടെ പരമാവധി എണ്ണം" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "geocode ഇല്‍ നിന്നും പരിശോധന ഫലത്തിന്റെ പരമാവധി എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS or SELF." +msgstr "" +"ഏറ്റവും പുതിയ ഉപയോഗത്തിലുള്ള Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം. സാധ്യമായ മൂല്യങ്ങൾ: എല്ലാവരേയും, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS അല്ലെങ്കിൽ SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "ഫോർസ്ക്വെയർ ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം." + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private." +msgstr "" +"ഏറ്റവുമധികം ഉപയോഗിച്ചത് Foursquare ചെക്ക്-ഇൻ സ്വകാര്യതാ ക്രമീകരണം. സാധ്യമായ വിലകൾ: പൊതുജനം, പിന്തുടരുന്നവർ " +"അല്ലെങ്കിൽ സ്വകാര്യം." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated " +"with the Foursquare account." +msgstr "" +"ഫോർസ്ക്വെയർ അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഫേസ്സ്കാർ ഫേസ്ബുക്കിൽ അക്കൗണ്ട് പോസ്റ്റുചെയ്ത് ഒരു ഫോൾഡർ ആയി പ്രക്ഷേപണം ചെയ്യേണ്ടതുണ്ടോ " +"എന്ന് സൂചിപ്പിക്കുന്നു." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated " +"with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ദൃശ്യപരത" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ഫേസ്ബുക്കിൽ പോസ്റ്റുചെയ്യുക" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 data/ui/send-to-dialog.ui:21 +#: data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "റദ്ദാക്കുക" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "എല്ലാവർക്കും" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "കൂട്ടുകാരുടെ കൂട്ടുകാര്" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "സുഹൃത്തുക്കൾ മാത്രം" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ഞാൻ മാത്രം" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "പൊതുവായത്" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "അനുയായികൾ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "സ്വകാര്യം" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "എന്താണ് ഇവിടെ ഉള്ളത്?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "സ്ഥാനം പകർത്തുക" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +#, fuzzy +#| msgid "Quit" +msgctxt "shortcut window" +msgid "Quit" +msgstr "അവസാനിപ്പിക്കുക" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ലൊക്കേഷൻ ക്രമീകരണങ്ങൾ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാക്കുക" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "കീബോർഡ് കുറുക്കുവഴികൾ" + +#: data/ui/main-window.ui:18 +#, fuzzy +#| msgid "About" +msgid "About Maps" +msgstr "കുറിപ്പ്" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "നിലവിലെ ലൊക്കേഷനിൽ പോകുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "മാപ്പ് തരം തിരഞ്ഞെടുക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "ചെറുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "വലുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "" + +#: data/ui/main-window.ui:256 +msgid "Maps need an active internet connection to function properly, but one can’t be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ഇമെയിൽ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "രഹസ്യവാക്ക് " + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "പ്രവേശിക്കുക" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "ഒരു അക്കൗണ്ട് ഇല്ലേ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your " +"password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് പൊരുത്തപ്പെടുന്നില്ല, വീണ്ടും ശ്രമിക്കുക." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "മുകളിൽ കാണിച്ചിരിക്കുന്ന പരിശോധനാ കോഡ് നൽകുക" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "പരിശോധിക്കുക" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാണ്." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "പുറത്തിറങ്ങുക" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "തെരുവ്" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "വീട്ട് നമ്പര്‍" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "തപാൽ കോഡ്" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "നഗരം" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "തരം" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ഒന്നുമില്ല" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ഫീള്‍ഡ് ചേര്‍ക്കുക" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "അഭിപ്രായം" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "സമീപകാലത്ത് ഉപയോഗിച്ചവ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "അടുത്തത്" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ല്‍ തിരുത്തുക" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "തെരയാന്‍ എന്റെര്‍ അമര്‍ത്തു" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "ഒരു ഫലവും കണ്ടെത്താനായില്ല" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "വഴിയുടെ ക്രമം മാറ്റാന്‍ നീക്കുക" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "സ്ഥലം തുറക്കുക" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "തുറക്കുക (_O)" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ഇപ്പോൾ വിടുക" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "പുറപ്പെടേണ്ടത്" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "കാണിക്കുക" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ബസ്സുകൾ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ട്രാമുകള്‍" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ട്രെയിനുകൾ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "സബ്‍വേ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ഫെറികള്‍" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ഇപ്പോഴത്തെ സ്ഥാനം" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "കൃത്യത: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "സ്ഥാനം ചേര്‍ക്കാന്‍ വലുതാക്കുക" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "വലുതാക്കുക" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "പ്രോഗ്രാമിന്റെ പതിപ്പു് കാണിക്കുക" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ലോഡ് ചെയ്യുന്നു" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:201 +msgid "Maps cannot find the place to check in to with Facebook. Please select one from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "Maps cannot find the place to check in to with Foursquare. Please select one from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യുക" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യാനുള്ള സന്ദേശം എഴുതുക (താല്‍പര്യമുണ്ടെങ്കില്‍)" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ഒരു പിശക് സംഭവിച്ചു" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "Credentials have expired, please open Online Accounts to sign in and enable this account" +msgstr "" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "ഇവിടെ നിന്ന് പാത" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "ലക്ഷ്യസ്ഥാനം ചേർക്കുക" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "ഇങ്ങോട്ട് റൂട്ട് ചെയ്യുക" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "ഇവിടെ ഒന്നും കണ്ടെത്തിയില്ല" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows on the map and in " +"search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ഡയറക്ടറി നിലവിലില്ല" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ഫയൽ പേരൊന്നും തന്നില്ല" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "റൂട്ട് അഭ്യർത്ഥന പരാജയപ്പെട്ടു." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "ഒരു വഴിയും കണ്ടെത്തിയില്ല." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "ആരംഭിക്കുക!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:436 +msgid "Failed to connect to location service" +msgstr "ലൊക്കേഷൻ സേവനവുമായി ബന്ധിപ്പിക്കുന്നത് പരാജയപ്പെട്ടു" + +#: src/mainWindow.js:501 +msgid "translator-credits" +msgstr "" +"Syamlal Pullamballi \n" +"Anish Sheela \n" +"Suneesh T R " + +#: src/mainWindow.js:504 +msgid "A map application for GNOME" +msgstr "ഗ്നോമിനു വേണ്ടിയുള്ള ഒരു ഭൂപട പ്രയോഗം" + +#: src/mainWindow.js:515 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" + +#: src/mainWindow.js:534 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:550 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "ഫയൽ തരം പിന്തുണയ്ക്കുന്നില്ല" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "ലെയർ തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "തെറ്റായ ഉപയോക്തൃ നാമം അല്ലെങ്കിൽ പാസ്വേഡ്" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "കിട്ടി" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "മോശം അഭ്യർത്ഥന" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "പേര്" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "വിലാസം" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "വെബ്സൈറ്റ്" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example.com instead of " +"http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ഫോൺ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of local privacy laws, " +"especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "വിക്കിപീഡിയ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "തുറക്കുന്ന സമയം" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ജനസംഖ്യ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ഉയരം" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "അതെ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ഇല്ല" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "നിയുക്തനായി" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "വൈ-ഫൈ " + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "വയര്‍" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ടെര്‍മിനല്‍" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "സേവനം" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "മതം" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "അനീമിസം" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ബഹാ ഇ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ബുദ്ധമതം" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "കാവോഡായിസം" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ക്രിസ്തുമതം" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ഹിന്ദുമതം" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ജൈനമതം" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ഇസ്ലാം" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "പല മതങ്ങള്‍" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "പാസ്തഫാരിയന്‍ മതം" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "സൈന്റോളജി" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ഷിന്റോ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "സിഖ് മതം" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "താവോയിസം" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "വൂഡു" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "കക്കുസ്" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "കുറിപ്പ്" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an element, the " +"author’s intent when creating it, or hints for further improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ല്‍ ചേര്‍ക്കുക" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "തരം തെരഞ്ഞെടുക്കുക" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ചെയ്തു" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ജനസംഖ്യ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ഉയരം:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "തുറക്കുന്ന സമയം:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "മതം:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "കക്കുസ്:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ഫോൺ:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "അതെ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ഇല്ല" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "പ്രത്യേക" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "%s-ല്‍ നിന്നും %s-ലേക്ക്" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "റൂട്ട് മറിക്കുക" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "പുറപ്പെടുക" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "നടക്കാനുള്ള വഴി കാണിക്കുക" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "നടക്കാനുള്ള വഴി മറയ്ക്കുക" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "%s നടക്കുക" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" +msgstr[1] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "സൂര്യോദയം മുതൽ സൂര്യാസ്തമനം വരെ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "" + +#: src/translations.js:185 +msgid "every day" +msgstr "എല്ലാ ദിവസവും" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "പൊതു അവധികൾ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "സ്കൂള്‍ അവധിക്കാലം" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "" + +#: src/translations.js:264 +msgid "not open" +msgstr "തുറന്നിട്ടില്ല" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "വയര്‍" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ടെര്‍മിനല്‍" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "സേവനം" + +#. Translators: Accuracy of user location information +#: src/utils.js:226 +msgid "Unknown" +msgstr "അപരിചിതം" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Exact" +msgstr "അനുയോജ്യമായ" + +#: src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "" + +#: src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "" + +#: src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "" + +#. Translators: This is a distance measured in meters +#: src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "" + +#. Translators: This is a distance measured in miles +#: src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "" + +#. Translators: This is a distance measured in feet +#: src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "" + +#~ msgid "Last known location and accuracy" +#~ msgstr "അവസാനത്തെ സ്ഥാനവും കൃത്യതയും" + +#~ msgid "Last known location (latitude and longitude in degrees) and accuracy (in meters)." +#~ msgstr "അവസാന അറിയുന്ന സ്ഥലവും (അക്ഷാംശവും രേഖാംശവും ഡിഗ്രിയില്‍) കൃത്യതയും (മീറ്ററില്‍)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ഉപയോക്താവിന്‍റെ അവസാന സ്ഥാനത്തിന്റെ വിവരണം." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ഉപയോക്താവിന്റെ സ്ഥാനം ഉപയോക്താവ് നേരിട്ട് ചെയ്തതാണോ എന്ന്." + +#~ msgid "I’m here!" +#~ msgstr "എന്റെ സ്ഥാനം" + +#~ msgid "Satellite" +#~ msgstr "ഉപഗ്രഹം" + +#~ msgid " km²" +#~ msgstr "കിമീ²" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 00000000..f59530e7 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,1838 @@ +# Malay translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# abuyop , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-27 07:57+0000\n" +"PO-Revision-Date: 2020-01-27 17:51+0800\n" +"Language-Team: Pasukan Terjemahan GNOME Malaysia\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Last-Translator: abuyop \n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Peta GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cari tempat-tempat di sekitar dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memudahkan capaian pada peta di serata dunia. Ia membolehkan anda cari " +"tempat yang dikehendaki dengan pantas iaitu menggelintar sebuah bandar atau " +"jalan, atau ketahui lokasi untuk bertemu dengan rakan." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta menggunakan pangkalan data OpenStreetMap yang terhasil secara " +"kolaboratif oleh beratus-ratus individu di serata dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda boleh menggelintar jenis-jenis lokasi secara khusus, seperti \"Pubs " +"near Main Street, Boston” atau “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Sebuah aplikasi peta yang ringkas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Membolehkan lokasi anda ditunjukkan di dalam peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi dilihat terakhir" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat lokasi dilihat kali terakhir." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zum" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Aras zum" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta yang dipaparkan (jalan, aerial, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Saiz tetingkap" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Saiz tetingkap (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Kedudukan tetingkap" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Kedudukan tetingkap (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilangan maksimum keputusan gelintar" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilangan maksimum keputusan gelintar melalui geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Bilang tempat baru-baru ini disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Bilangan tempat baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Bilangan laluan baru-baru ini untuk disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Bilangan laluan baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Facebook terakhir digunakan. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Foursquare terakhir digunakan. Nilai yang " +"mungkin adalah: public, followers atau private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siaran Facebook daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Facebook yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Siaran Twitter daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Twitter yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat e-mel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menunjukkan jika pengguna telah berdaftar masuk untuk menyunting data " +"OpenstreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis pengangkutan terakhir digunakan untuk perjalanan" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ketampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Hantaran pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Hantaran pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Daftar masuk" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Sesiapa Sahaja" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Rakan rakan" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Rakan sahaja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Saya sahaja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Awam" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Persendirian" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Apa ada di sini?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pandangan eksport" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksport" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan laluan dan penanda" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Am" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tunjuk Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Gelintar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak laluan" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pandangan Peta" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zum masuk" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zum keluar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Togol skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke pandangan jalan" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke pandangan aerial" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka lapisan bentuk" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Buka Lapisan Bentuk…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Hidupkan perkhidmatan lokasi untuk mencari lokasi anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Tetapan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Pasang Akaun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksport sebagai Imej" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Pintasan Papan _Kekunci" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Perihal Peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zum keluar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zum masuk" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Togol kegemaran" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Cetak Laluan" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Peta di luar talian!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlukan satu sambungan internet aktif supaya dapat berfungsi dengan " +"baik, tetapi tidak ditemui." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Periksa sambungan dan tetapan proksi anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke laluan baharu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kongsi lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tanda sebagai kegemaran" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Daftar-masuk di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akaun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Daftar masuk untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantu menambah baik peta, menggunakan\n" +"akaun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata laluan" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Daftar Masuk" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Belum ada akaun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, tidak berjaya. Cuba sekali lagi, atau lawati\n" +"OpenStreetMap untuk menetap semula kata laluan anda." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kod pengesahan tidak sepadan, cuba sekali lagi." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Masukkan kod pengesahan yang ditunjukkan di bawah" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sahkan" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Berdaftar Masuk" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Akaun OpenStreetMap anda masih aktif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Daftar Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nombor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poskod" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Bandar" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Tiada" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Medan" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Ulasan" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan kelihatan pada semua peta yang\n" +"menggunakan data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Digunakan Baru-Baru Ini" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Berikutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tunjuk lagi maklumat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tiad keputusan ditemui" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah tertib laluan" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Hantar Kepada…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Buka Lapisan Bentuk" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Togol tampak" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Gelintar laluan oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerari laluan untuk pengangkutan awam disediakan oleh\n" +"perkhidmatan pihak-ketiga.\n" +"GNOME tidak memberi apa-apa jaminan ketepatan itinerari dan jadual yang " +"ditunjukkan.\n" +"Perhatian, sesetengah penyedia tidak menyertakan semua mod pengangkutan yang " +"ada,\n" +"iaitu penyedia kebangsaan mungkin tidak melibatkan kapal terbang, dan " +"penyedia tempatan\n" +"mungkin tidak melibatkan keretapi wilayah.\n" +"Nama dan jenama yang ditunjukkan dianggap sebagai tanda dagangan berdaftar " +"bila perlu." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tunjuk lagi keputusan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyi hentian dan maklumat pertengahan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tunjuk hentian dan maklumat pertengahan" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tunjuk" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bas" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Keretapi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Kapal Terbang" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi semasa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zum masuk untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom Masuk" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal mencari struktur jubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal menghurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut diperlukan hilang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tidak dapat mencari unsur OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Satu laluan ke struktur direktori jubin setempat" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Tunjuk versi program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Abai ketersediaan rangkaian" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih satu akaun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuatkan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih satu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Facebook. Sila " +"pilih salah satu menerusi senarai ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Foursquare. " +"Sila pilih salah satu menerusi senarai ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Daftar masuk pada %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis satu mesej pilihan untuk mendaftar masuk pada %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Satu ralat telah berlaku" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tidak dapat mencari \"%s\" dalam perkhidmatan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tidak dapat mencari satu tempat yang sesuai untuk mendaftar masuk dalam " +"lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kelayakan telah luput, sila buka Akaun Dalam Talian untuk mendaftar masuk " +"dan membenarkan akaun ini" + +#: src/contextMenu.js:94 +msgid "Route from here" +msgstr "Laluan dari sini" + +#: src/contextMenu.js:96 +msgid "Add destination" +msgstr "Tambah destinasi" + +#: src/contextMenu.js:98 +msgid "Route to here" +msgstr "Laluan ke sini" + +#: src/contextMenu.js:124 +msgid "Nothing found here!" +msgstr "Tiada apa-apa ditemui di sini!" + +#: src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi telah ditambah ke dalam peta, perhatian ia mungkin mengambil masa " +"sebelum dapat ditunjukkan pada peta dan dalam keputusan gelintar." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta pada %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem fail adalah baca sahaja" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tidak mempunyai keizinan menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak wujud" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiada nama fail dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tidak boleh mengeksport pandangan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tidak sah" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ralat hurai" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tidak diketahui" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Permintaan laluan gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Tiada laluan ditemui." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Mula!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Semua Fail Lapisan" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung dengan perkhidmatan lokasi" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"abuyop\n" +"CL TAN https://launchpad.net/~tcl111985\n" +"Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris\n" +"Launchpad Translations Administrators https://launchpad.net/~rosetta\n" +"ahmad akmal bin mohd idris https://launchpad.net/~mamahopsk87\n" +"dequan https://launchpad.net/~dequan" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Sebuah aplikasi peta untuk GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak cipta © 2011 – 2019 Red Hat, Inc. dan para pengarang Peta GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan para penyumbang" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Gelintar disediakan oleh %s menggunakan %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Jenis fail tidak disokong" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Gagal membuka lapisan" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau kata laluan salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berjaya" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan tidak elok" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tidak ditemui" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, ada orang lain baru sahaja mengubah suai objek" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dipadamkan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama rasmi. Ia biasanya muncul ketika daftar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tapak Sesawang" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Tapak sesawang rasmi. Cuba guna bentuk URL paling asas iaitu http://example." +"com selain dari http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nombor telefon. Guna format antarabangsa, bermula dengan tanda +. Hati-hati " +"dengan undang-undang kerahsiaan setempat, terutamanya nombor telefon " +"persendirian." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang digunakan patut sertakan kod bahasa dan tajuk artikel seperti " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat pautan dalam label untuk bantuan berkenaan format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Ketinggian (tinggi di atas aras laut) sesuatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Capaian kerusi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terhad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Dikhususkan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Capaian internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Berwayar" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Perkhidmatan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budha" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Taodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristian" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindu" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Agama Berbilang" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tandas" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Maklumat yang digunakan untuk maklumkan pemeta lain berkenaan maklumat tidak " +"jelas berkenaan sesebuah unsur, niat pengarang ketika menciptanya, atau " +"pembayang untuk penambahbaikan lanjutan." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Capaian internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tandas:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Capaian kerusi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Gagal menghurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terhad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "dikhususkan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemui dalam OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tidak sah" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tidak sah" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tidak disokong" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s hingga %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuatkan jubin-jubin peta untuk percetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" +"Anda boleh menghenti paksi percetakan jika ia mengambil masa terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Henti paksa percetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah melalui lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Buang melalui lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Songsangkan laluan" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambah %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuatkan fail" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Masa anggaran: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mula pada %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mula" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba pada %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tunjuk arahan berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyi arahan berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Muat alternatif lebih awal" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Muat alternatif terkemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tiada alternatif lebih awal ditemui." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tiada alternatif terkemudian ditemui." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tiada data jadual waktu ditemui untuk laluan ini." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tiada penyedia ditemui untuk laluan ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minit" +msgstr[1] "%d minit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d jam" +msgstr[1] "%d jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d jam" +msgstr[1] "%d:%02d jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dalam tempoh" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit hingga matahari terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "cuti umum" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "cuti sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "berwayar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "perkhidmatan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ketepatan: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tidak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tepat" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f j" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Teruskan pada %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Teruskan" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Belok sedikit kiri" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok tajam kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Belok tajam kiri" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Belok sedikit kanan" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok tajam kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Belok tajam kanan" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dalam bulatan, ambil susur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dalam bulatan, ambil susur keluar ke %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Masuk bulatan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Masuk lif dan keluar pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Masuk lif" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Buat satu pusingan-u ke %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Buat satu pusingan-u" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Buat satu pusingan-u kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Buat satu pusingan-u kanan" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 00000000..374903dd --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1820 @@ +# Norwegian bokmål translation of gnome-maps. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kjartan Maraas , 2013-2020. +# Åka Sikrom , 2014. +# haarek , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.36.x\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-09 18:18+0100\n" +"Last-Translator: Kjartan Maraas \n" +"Language-Team: Norwegian bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kart" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Se på steder over hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kart gir deg rask tilgang til kart for hele verden. Det lar deg raskt finne " +"stedet du leter etter ved å søke etter en by eller en gate, eller finne et " +"sted å møte en venn." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kart bruker OpenStreetMap-databasen som er laget av hundretusener av " +"mennesker fra hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan også søke etter en bestemt type sted, som f.eks. «Pub nær Main " +"Street, Boston» eller «Hoteller nær Alexanderplatz, Berlin»." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME prosjektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Kart" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kart;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lar lokasjonen din vises på kartet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sist viste posisjon" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sist viste posisjon." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom-nivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type kart" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Type kart som skal vises (gate, fly osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vindustørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vindustørrelse (bredde og høyde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduposisjon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduposisjon (x og y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindu maksimert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tilstand for maksimering av vindu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimalt antall søkeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalt antall søkeresultater fra geokode-søk." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antall nylige steder å lagre" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antall nylig besøkte steder som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antall nylige ruter å lagre" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antall nylig besøkte ruter som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Personvern-innstilling for Facebook-innsjekk" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sist brukt personvern-innstilling for Facebook-innsjekk. Følgende verdier er " +"gyldige: «EVERYONE» (alle), «FRIENDS_OF_FRIENDS» (venners venner), " +"«ALL_FRIENDS» (alle venner) og «SELF» (bare meg)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Personvern-innstilling for Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sist brukt personvern-innstilling for Foursquare-innsjekk. Følgende verdier " +"er gyldige: «public», «followers» og «private»." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Facebook-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Twitter-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brukernavn eller e-postadresse for OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indikerer om bruker har logget inn for å redigere OpenStreeMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sist brukte transporttype for ruting" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "S_jekk inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venner av venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bare venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bare meg" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute fra denne lokasjonen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Legg til mellomstopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute til denne lokasjonen" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hva finnes her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopier posisjon" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksporter visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Ta med rute og markører" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis snarveier" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søk" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avslutt" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvisning" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom inn" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ut" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå av/på skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Bytt til gatevisning" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Bytt til flyvisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åpne formlag" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Åpne formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Skru på posisjonstjenester for å se hvor du er" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Posisjonsinnstillinger" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Sett opp konto på OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksporter som bilde" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatursnarveier" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Om Kart" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Velg karttype" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zoom ut" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zoom inn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Slå av/på favoritter" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Skriv ut rute" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Kart er frakoblet!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kart trenger en aktiv internettforbindelse for å fungere, men ingen ble " +"funnet." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Sjekk tilkobling og innstillinger for proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Legg til i ny rute" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Del posisjon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merk som favoritt" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Sjekk inn her" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto for OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logg inn for å redigere kart" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjelp til å forbedre kartet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Logg inn" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Har du ikke en konto?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager, det virket ikke. Vennligst prøv igjen eller besøk\n" +"OpenStreetMap for å nullstille passordet ditt." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Verifiseringskoden var ikke riktig. Vennligst prøv igjen." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Oppgi verifikasjonskoden som vises over" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifiser" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Logget inn" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Logg ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gate" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Legg til felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Endringer på kartet vil vises på alle kart som bruker\n" +"data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nylig brukt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Neste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Vis mer informasjon" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater funnet" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra for å endre rekkefølgen på ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åpne posisjon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopier" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Åpne formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åpne" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå av/på synlige" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøk av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutetabeller for offentlig transport tilbys av tredjepartstjenester\n" +"\n" +"GNOME kan ikke garantere riktighet for rutetabellene og tidsplanene.\n" +"Merk at enkelte tilbydere ikke alltid inkluderer alle mulige typer transport. F.eks. vil noen aktører ikke ta med flyselskaper, mens en lokal tilbyder kanskje utelater regionstog.\n" +"Navn og merker som vises skal anses som registrerte varemerker når det er relevant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul stopp og informasjon langs ruten" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis stopp og informasjon på veien" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Dra nå" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Dra før" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankom før" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trikker" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "T-bane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjer" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Gjeldende posisjon" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom inn for å legge til en lokasjon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom inn" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Klarte ikke å finne flisstruktur i katalogen" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Klarte ikke å tolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Fant ikke OSM-element" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal katalogstruktur med fliser" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Vis programmets versjon" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Overse nettverkstilgjengelighet" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Velg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Laster" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Velg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Facebook. Velg et sted " +"her." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Foursquare. Velg et sted " +"her." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Sjekk inn på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv en valgfri melding for å sjekke inn ved %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Det har oppstått en feil" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finner ikke «%s» i sosial tjeneste" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Fant ingen passende steder å sjekke inn på denne posisjonen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiver er utgått. Åpne Nettkontoer for å logge inn og bruke denne " +"kontoen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasjonen ble lagt til på kartet. Merk at det kan ta litt tid før den vises " +"på kartet og dukker opp i søkeresultater." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kart fra %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke rettigheter til å lagre der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen eksisterer ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Filnavn ikke oppgitt" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lesefeil" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukjent geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Forespørsel om rute feilet." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ingen rute funnet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Klarte ikke å koble til posisjonstjeneste" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"haarek , Kjartan Maraas , Åka " +"Sikrom " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Et kartprogram for GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Opphavsrett © 2011 - 2019 Red Hat, Inc. og GNOME kart utviklerene" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata av %s og bidragsytere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartfliser av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søk tilbys av %s ved bruk av %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Filtypen er ikke støttet" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Klarte ikke å åpne lag" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Klarte ikke å åpne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Feil brukernavn eller passord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Suksess" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Fant ikke objektet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt. Noen andre har akkurat endret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er slettet" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det offisielle navnet. Dette er typisk det som vises på skilt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Nettsted" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Det offisielle nettstedet. Prøv å bruke den mest grunnleggende formen av en " +"URL. F.eks. http://eksempel.no i stedet for http://eksempel.no/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Bruk det internasjonale formatet som starter med et +-tegn. " +"Vær observant på lokale lover om personvern, spesielt for private " +"telefonnummer." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Åpningstider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se lenken i etiketten for hjelp om format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Folketall" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Høyde" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Høyde over have for et punkt i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rullestolvennlig" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrenset" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Spesialtilpasset" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internett-tilgang" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådløst" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikdom" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jesidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Merknad" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Velg type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Ferdig" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sted uten navn" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Folketall:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Høyde:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Åpningstider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internettaksess:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rullestolvennlig:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Klarte ikke å tolke Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrenset" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "spesialtilpasset" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Stedet ble ikke funnet i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL er ikke gyldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatene i URLen er ikke gyldige" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URLen støttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Laster kartruter for utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryte utskriften hvis dette tar for lang tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Legg til mellomlokasjon" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern mellomlokasjon" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Omvendt rute" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Legg til %s til %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Klarte ikke å åpne URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Åpne med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "klarte ikke å laste fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimert tid: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ruteplaner tilbys av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start ved %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankom ved %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Ankom" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis instruksjoner for fotgjengere" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul instruksjoner for fotgjengere" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Last tidligere alternativer" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Last senere alternativer" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer funnet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer funnet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Ingen ruteinformasjon funnet for denne ruten." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Ingen tilbyder funnet for denne ruten." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minutt" +msgstr[1] "%d minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d time" +msgstr[1] "%d timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d time" +msgstr[1] "%d:%02d timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "hele døgnet" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "fra soloppgang til solnedgang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s til %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s til %s og %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "offentlige fridager" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skoleferie" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ikke åpen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "trådbundet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjeneste" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøyaktighet: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Ukjent" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Nøyaktig" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f t" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsett på %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Fortsett" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sving til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sving svakt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Sving svakt til venstre" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sving hardt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Sving hardt til venstre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sving til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Sving til høyre" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sving svakt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Sving svakt til høyre" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sving hardt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Sving hardt til høyre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avkjørsel %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avkjørsel til %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Kjør gjennom rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta heisen og gå av i %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Ta heisen" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 00000000..05303199 --- /dev/null +++ b/po/ne.po @@ -0,0 +1,1617 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Gnome Nepali Translation Project\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-07-24 21:57+0000\n" +"PO-Revision-Date: 2017-08-13 14:57+0545\n" +"Last-Translator: Pawan Chitrakar \n" +"Language-Team: Nepali Translation Team \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "जिनोम मानचित्र" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:476 +msgid "Maps" +msgstr "मानचित्र" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "सहज मानचित्र अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "मानचित्र;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +msgid "last viewed location" +msgstr "हालै हेरिसकेको" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "सञ्झ्याल साइज" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "सञ्झ्यालको नाप( उचाइ र चौडाई )" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "संझ्यालको स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "सञ्झ्यालको स्थान(X र Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "सञ्झ्यालको अधिकतम स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +#, fuzzy +msgid "Window maximization state" +msgstr "बढाइएको स्थितिलाई टगल गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "अत्याधिक खोजी परिणाम प्राप्त गर्दै..." + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +#, fuzzy +msgid "Number of recent places to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +#, fuzzy +msgid "Number of recent routes to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +#, fuzzy +msgid "Number of recently visited routes to store." +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +#, fuzzy +msgid "OpenStreetMap username or e-mail address" +msgstr "इमेल ठेगाना प्रतिलिपि गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +#, fuzzy +msgid "Set up OpenStreetMap Account" +msgstr "सिर्जना र सेटअप गर्नुहोस्" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "कुञ्जीपाटी सटकर्ट" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "बारेमा" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "अन्त्य गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "दृश्यात्मक" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "फेसबुकमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "ट्विट्टरमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_रद्द गर्नुहोस्" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +#, fuzzy +msgid "C_heck in" +msgstr "जाँच गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "सबैजना" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "साथीको साथी" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "साथीमात्र" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "म मात्रै" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "सार्वजनिक" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "अनुयायीहरू" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "व्यक्तिगत" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहा के छ ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "स्थान प्रतिलिपि गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "छवि को रुपमा निर्यात गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:4 +#, fuzzy +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "निर्यात दृष्य" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "निर्यात" + +#: ../data/ui/export-view-dialog.ui.h:4 +#, fuzzy +msgid "Include route and markers" +msgstr "लाइन चिन्हकलाई देखाउनुहोस्" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "सामान्य" + +#: ../data/ui/help-overlay.ui.h:2 +#, fuzzy +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "सर्टकटहरू" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "खोजी" + +#: ../data/ui/help-overlay.ui.h:4 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "उल्टनू" + +#: ../data/ui/help-overlay.ui.h:5 +#, fuzzy +msgctxt "shortcut window" +msgid "Print route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "_बन्द गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:7 +#, fuzzy +msgctxt "shortcut window" +msgid "Map View" +msgstr "...मा मानचित्र्शा" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "यसमा जुम गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "जुम घटाउनुहोस््" + +#: ../data/ui/help-overlay.ui.h:10 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "मापन" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#: ../data/ui/help-overlay.ui.h:12 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:13 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "आकार:वितरणको आकार परामिति" + +#: ../data/ui/layers-popover.ui.h:1 +#, fuzzy +msgid "Load Map Layer" +msgstr "छवि मानचित्र लोड गर्नुहोस्" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +#, fuzzy +msgid "Location Settings" +msgstr "सेटिङ्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "मानचित्र प्रकार रोज्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#, fuzzy +msgid "Toggle route planner" +msgstr "उल्टनू" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#, fuzzy +msgid "Toggle favorites" +msgstr "मनपर्ने" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +#, fuzzy +msgid "Print Route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/main-window.ui.h:12 +#, fuzzy +msgid "Maps is offline!" +msgstr "अफलाइन" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +#, fuzzy +msgid "Add to new route" +msgstr "नयाँ पात्रो जोड्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +#, fuzzy +msgid "Mark as favorite" +msgstr "मनपर्ने " + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +#, fuzzy +msgid "Check in here" +msgstr "यहाँ ल्याउनुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:1 +#, fuzzy +msgid "OpenStreetMap Account" +msgstr "खाता:" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "इमेल" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "पासवर्ड" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "लगइन गर्दै" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +msgid "Don’t have an account?" +msgstr "यो प्रदर्शन प्रयोग नगर्नु" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "रूजु गर्नुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:16 +#, fuzzy +msgid "Your OpenStreetMap account is active." +msgstr "तपाईँको सिप खाताको पासवर्ड के हो ?" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "साइन आउट" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "सडक" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "घर नम्बर" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "जिप/हुलाकी सङ्केत" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "सहर" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "वर्ग" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "कुनै पनि होइन" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "फाँट थप्नुहोस्" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "टिप्पणी" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "हालै प्रयोग गरिएको" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#, fuzzy +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "रद्द गर्ने" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "पछिल्लो" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +#, fuzzy +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "बढी सूचना" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "खोजको लागि इन्टर थिच्नुहोस्" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "नतिजा भेटिएन" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +#, fuzzy +msgid "Drag to change order of the route" +msgstr "वक्ररेखाको आकार परिवर्तन गर्न तान्नुहोस् क्लिक गर्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "स्थान खोल्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "खोल्नुहोस्" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "तह खोल्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +#, fuzzy +msgid "Toggle visible" +msgstr "दृष्य" + +#: ../data/ui/sidebar.ui.h:1 +#, fuzzy +msgid "Route search by GraphHopper" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +msgid "Route search by OpenTripPlanner" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "अरू धेरै नतिजा देखाउनुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#, fuzzy +msgid "Show intermediate stops and information" +msgstr "संस्करण सूचना देखाउनुहोस् र निस्कनुहोस्" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +#, fuzzy +msgid "Leave Now" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +#, fuzzy +msgid "Leave By" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "देखाउने" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "बस" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ट्राम" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "ट्रेन" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "सबवे" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "फेर्री" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "हालको स्थन" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "शुद्धता: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +#, fuzzy +#| msgid "Go to current location" +msgid "Zoom in to add location!" +msgstr "स्थान" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "OK" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +msgid "Failed to parse XML document" +msgstr "XML कागजात राम्रोसँग ढाँचा भएन !" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "आवश्यक मान हराइरहेछ" + +#: ../lib/maps-osm.c:453 +#, fuzzy +msgid "Could not find OSM element" +msgstr "मद्दत डाइरेक्टरी फेला पार्न सकेन" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "खाता चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "लोड गर्दै" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "स्थान चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, fuzzy, javascript-format +msgid "Check in to %s" +msgstr "%s पत्र फाइल जाँच गर्न सकेन: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, fuzzy, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s लाई लेख्न असफल भयो (अनुमतिहरू जाँच गर्नुहुन्छ ?)" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "एउटा त्रुटि देखापर्यो ।" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "डाइरेक्टरी फेला पार्न सक्दैन %s" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/contextMenu.js:96 +#, fuzzy +msgid "Route from here" +msgstr "बाटो भेटिएन" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "गन्तव्य थप्नुहोस्" + +#: ../src/contextMenu.js:100 +#, fuzzy +msgid "Route to here" +msgstr "पूर्वनिर्धारित पथ" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "केही पनि भेटिएन" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +#, fuzzy +msgid "Filesystem is read only" +msgstr "फाइल प्रणाली" + +#: ../src/exportViewDialog.js:158 +#, fuzzy +msgid "You do not have permission to save there" +msgstr "यो फाइल संचय गर्न तपाईँसँग आवश्यक अनुमतिहरू छैनन् ।" + +#: ../src/exportViewDialog.js:160 +#, fuzzy +msgid "The directory does not exist" +msgstr "त्यहा अवस्थित छैन" + +#: ../src/exportViewDialog.js:162 +#, fuzzy +msgid "No filename specified" +msgstr "फाइलनाम:" + +#: ../src/exportViewDialog.js:170 +#, fuzzy +msgid "Unable to export view" +msgstr "निर्यात गर्नुहोस्" + +#: ../src/geoJSONSource.js:98 +#, fuzzy +msgid "invalid coordinate" +msgstr "समन्वय गर्नुहोस्" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "पदवर्णन त्रुटि" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "अज्ञात ज्यामिति" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +#, fuzzy +msgid "Route request failed." +msgstr "अनुरोध असफल" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "बाटो भेटिएन" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "सुरु!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "सबै तह फाइलहरू" + +#: ../src/mainWindow.js:418 +msgid "Failed to connect to location service" +msgstr "स्थान सेवा जडान असफल" + +#: ../src/mainWindow.js:474 +msgid "translator-credits" +msgstr "Pawan Chitrakar " + +#: ../src/mainWindow.js:477 +msgid "A map application for GNOME" +msgstr "जिनोमको मानचित्र अनुप्रयोग" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "फाइल प्रकार समर्थित छैन" + +#: ../src/mapView.js:363 +#, fuzzy +msgid "Failed to open layer" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/mapView.js:399 +#, fuzzy +msgid "Failed to open GeoURI" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/openTripPlanner.js:622 +#, fuzzy +msgid "No earlier alternatives found." +msgstr "%s भन्दा छिटो होइन" + +#: ../src/openTripPlanner.js:623 +#, fuzzy +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "पछि" + +#: ../src/openTripPlanner.js:661 +#, fuzzy +msgid "No timetable data found for this route." +msgstr "बाटो भेटिएन" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +#, fuzzy +msgid "Incorrect user name or password" +msgstr "" +"सर्भरमा जडान गर्दा त्यहाँ एउटा त्रुटि थियो । यो एउटा गलत प्रयोग कर्ता नाम र/वा " +"पासवर्ड प्रयोग गरेको कारणले हुन सक्दछ ।" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "सफलता" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "खराब अनुरोध" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "वस्तु फेला परेन" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +#, fuzzy +msgid "Object has been deleted" +msgstr "मुद्रणयन्त्र “%s” मेटियो" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "नाम" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "ठेगाना" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "वेबसाइट" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "फोन" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "विकिपेडिया" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +msgid "Opening hours" +msgstr "खुल्दैछ" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "जनसङ्ख्या" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "ऊचाई" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +msgid "Wheelchair access" +msgstr "पहुँच:" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "ठिक छ" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "होइन" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "सिमित" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "" + +#: ../src/osmEditDialog.js:171 +#, fuzzy +msgid "Internet access" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "वाई-फाई" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "तारजडिट" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "टर्मिनल" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "सेवा" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "धर्म" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "बहाई धर्म" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "बौद्ध धर्म" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "ईसाई धर्म" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "कन्फुशियस धर्म" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "हिन्दु धर्म" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "जैन धर्म" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "यहूदी धर्म" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "इस्लाम धर्म" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "धेरैवटा क्षेत्र" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "पगानि धर्म" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "वैज्ञानिक विज्ञान" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "शिन्टो धर्म" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "सिख धर्म" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "आध्यात्मिकता" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "टाओ धर्म" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "यूनिटेरिया यूनिवर्सलवाद" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "शौचालय" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "द्रष्टव्य" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +#, fuzzy +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "प्रकार चयन गर्नुहोस्" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "सम्पन्न भयो" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "जनसङ्ख्या :" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "ऊचाई:" + +#: ../src/placeBubble.js:133 +#, fuzzy +msgid "Opening hours:" +msgstr "खुल्दैछ" + +#: ../src/placeBubble.js:138 +#, fuzzy +msgid "Internet access:" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "धर्म:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "शौचालय:" + +#: ../src/placeBubble.js:153 +#, fuzzy +msgid "Wheelchair access:" +msgstr "पहुँच:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "फोन:" + +#: ../src/placeEntry.js:190 +#, fuzzy +msgid "Failed to parse Geo URI" +msgstr "जिपिजि प्रयोगकर्ता आइडी संकेत पद वर्णन गर्न असफल भयो ।" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "ठिक छ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "सिमित" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "होइन" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "%s बाट %s " + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "परित्याग गर्नुहोस्" + +#: ../src/sendToDialog.js:179 +#, fuzzy +msgid "Failed to open URI" +msgstr "URI खोल्न असक्षम" + +#: ../src/shapeLayer.js:92 +#, fuzzy +msgid "failed to load file" +msgstr "फाइल लोड गर्न असफल" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अन्दजि समय: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "आइपुग्छन्" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "सुरु" + +#: ../src/transitLegRow.js:107 +#, fuzzy +msgid "Show walking instructions" +msgstr "यसका लागि देखाउनुहोस्" + +#: ../src/transitLegRow.js:108 +#, fuzzy +msgid "Hide walking instructions" +msgstr "सञ्झ्याल लुकाउनुहोस्" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, fuzzy, javascript-format +msgid "Walk %s" +msgstr "%s: का लागि" + +#: ../src/transitMoreRow.js:41 +#, fuzzy +msgid "Load earlier alternatives" +msgstr "%s भन्दा छिटो होइन" + +#: ../src/transitMoreRow.js:43 +#, fuzzy +msgid "Load later alternatives" +msgstr "पछि" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d मिनेट" +msgstr[1] "%d मिनेट" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d घण्टा" +msgstr[1] "%d घण्टा" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d घण्टा" +msgstr[1] "%d:%02d घण्टा" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +#, fuzzy +msgid "around the clock" +msgstr "घडी" + +#: ../src/translations.js:58 +#, fuzzy +msgid "from sunrise to sunset" +msgstr "सूर्यास्ट देखि सूर्योदय" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "प्रत्येक दिन" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "सार्वजनिक विदा" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "स्कुल विदा" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +#, fuzzy +msgid "not open" +msgstr "यससँग खोल्नुहोस्:" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "तारजडिट" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "टर्मिनल" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "सेवा" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "दुरुस्त" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s किलोमिटर" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s मिटर" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s माइल" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%sफिट" + +#~ msgid "I’m here!" +#~ msgstr "म यहा छु" + +#~ msgid "Country code: %s" +#~ msgstr "देश मानक:%s" + +#~ msgid "%f km²" +#~ msgstr "%f वर्गकिलोमिटर" + +#~ msgid "%f km" +#~ msgstr "%f किलोमिटर" + +#~ msgid "%f m" +#~ msgstr "%f m" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 00000000..2a48ef11 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,1888 @@ +# Dutch translation for gnome-maps +# Copyright (C) 2013, 2014 +# This file is distributed under the same license as the GNOME Maps package. +# Check-in: voorlopig even onvertaald gelaten - Hannie +# Erwin Poeze , 2013, 2014. +# Reinout van Schouwen , 2013. +# Hannie Dumoleyn , 2015. +# Nathan Follens , 2015-2020. +# Justin van Steijn , 2015, 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.16\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-24 21:29+0100\n" +"Last-Translator: Nathan Follens \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnome Kaarten" + +# rond de wereld +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vind plaatsen de wereld rond" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaarten geeft u snelle toegang tot kaarten over de hele wereld. U kunt snel " +"de plaats waarnaar u op zoek bent vinden door te zoeken naar een stad of de " +"straat, of de plek opzoeken om een vriend te ontmoeten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaarten gebruikt de gemeenschappelijk opgebouwde OpenStreetMap-database, " +"gemaakt door honderdduizenden mensen over de hele wereld." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"U kunt zelfs naar specifieke soorten locaties zoeken, zoals ‘Pubs in de " +"buurt van Main Street, Boston’ of ‘WiFi-toegang in de buurt van " +"Alexanderplatz, Berlijn’." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Het Gnome-project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Kaarten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Een eenvoudige kaartentoepassing" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kaart;Kaarten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Geeft uw locatie weer op de kaart." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laatst bekeken locatie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coördinaten van de laatst bekeken locatie." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoomen" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kaarttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Het type kaart om weer te geven (straten, lucht, enz.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Venstergrootte" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Venstergrootte (breedte en hoogte)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vensterpositie" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vensterpositie (X en Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Venstergrootte gemaximaliseerd" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Venstermaximalisatiestaat" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum aantal zoekresultaten" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum aantal resultaten van zoeken op geografische positie." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Aantal recente locaties om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Aantal recent bezochte locaties om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Aantal recente routes om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Aantal recent afgelegde routes om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-inchecken privacyinstellingen" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Voor het laatst gebruikte privacyinstellingen Facebook-incheck. Mogelijke " +"waarden zijn: IEDEREEN, VRIENDEN VAN VRIENDEN, ALLE VRIENDEN of ZICHZELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-inchecken privacyinstellingen" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"De laatst gebruikte privacyinstellingen Foursquare-incheck. Mogelijke " +"waarden zijn: openbaar, volgers of privé." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de incheck in een bericht moet bekend maken in het " +"Facebook-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de controle in een bericht moet bekend maken in het " +"Twitter-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-gebruikersnaam of -e-mailadres" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Geeft aan of de gebruiker ingelogd is om OpenStreetMap-gegevens te bewerken." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Laatst gebruikte transporttype voor routering" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Posten op Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Posten op Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuleren" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Inc_hecken" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Iedereen" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vrienden van vrienden" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Alleen vrienden" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Alleen ik" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Openbaar" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Volgers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route vanaf hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tussenstop toevoegen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route naar hier" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Wat bevindt zich hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Locatie kopiëren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Weergave exporteren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporteren" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Route en markeringen opnemen" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Algemeen" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Sneltoetsen tonen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Zoeken" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afsluiten" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kaartweergave" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Inzoomen" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uitzoomen" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Schaal in/uitschakelen" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Overschakelen naar straatbeeld" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Overschakelen naar luchtbeeld" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vormlaag openen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Vormlaag openen…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Locatiedienst inschakelen om uw locatie te bepalen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuleren" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Locatie-instellingen" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-account instellen" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exporteren als afbeelding" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "S_neltoetsen" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Over Kaarten" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Kies kaartsoort" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Uitzoomen" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Inzoomen" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Bladwijzers in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Route afdrukken" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Kaarten is offline!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kaarten heeft een actieve internetverbinding nodig om te functioneren, maar " +"die is niet gevonden." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Controleer uw verbinding en proxy-instellingen." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aan nieuwe route toevoegen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Locatie delen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markeren als bladwijzer" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Hier inchecken" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inloggen om kaarten te bewerken" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help om de kaart te verbeteren, door gebruik te maken van een\n" +"OpenStreetMap-account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Wachtwoord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Inloggen" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Heeft u geen account?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, dat werkte niet. Probeer het opnieuw of bezoek\n" +"OpenStreetMap om uw wachtwoord te herstellen." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "De verificatiecode kwam niet overeen, probeer het opnieuw." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Voer de verificatiecode hierboven in" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifiëren" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Ingelogd" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Uw OpenStreetMap-account is actief." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Uitloggen" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straat" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Huisnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postcode" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Plaats" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Soort" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Geen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Wijzigingen aan de kaart zijn zichtbaar op alle kaarten\n" +"die OpenStreetMap-gegevens gebruiken." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recent gebruikt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Volgende" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Meer informatie tonen" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Geen resultaten gevonden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Verslepen om de volgorde van de route te wijzigen" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Locatie openen" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiëren" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Versturen naar…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Vormlaag openen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Openen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Zichtbaar/onzichtbaar maken" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routezoeken door GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routering voor openbaar vervoer wordt aangeboden door diensten van derde " +"partijen.\n" +"Gnome kan de juistheid van de hier weergegeven routes en dienstregelingen " +"niet garanderen.\n" +"Merk op dat sommige leveranciers mogelijk niet alle beschikbare " +"transportmodi weergeven,\n" +"bv. een nationale leverancier geeft mogelijk geen vliegroutes weer, en een " +"lokale leverancier\n" +"geeft mogelijk niet alle regionale treinen weer.\n" +"De hier weergegeven namen en merknamen worden, waar toepasbaar, beschouwd " +"als\n" +"geregistreerde handelsmerken." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Meer resultaten tonen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Tussenstops en informatie verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tussenstops en informatie tonen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Nu vertrekken" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Vertrekken tegen" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Aankomen tegen" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tonen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussen" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treinen" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Veerboten" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Vliegtuigen" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Huidige locatie" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in om locatie toe te voegen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Inzoomen" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kon de tegelstructuur in de map niet vinden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kon XML-document niet ontleden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Benodigde eigenschappen ontbreken" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kon OSM-element niet vinden" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Een pad naar een mappenstructuur met lokale tegels" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "De versie van het programma tonen" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Beschikbaarheid netwerk negeren" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Een account kiezen" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Bezig met laden" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Een plaats kiezen" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Facebook niet vinden. Gelieve er " +"een uit de lijst te kiezen." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Foursquare niet vinden. Gelieve " +"er een uit de lijst te kiezen." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Inchecken bij %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Voeg eventueel een bericht toe bij het inchecken bij %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Er is een fout opgetreden" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "‘%s’ werd niet aangetroffen in de sociale dienst" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Er is geen geschikte plaats gevonden om in te checken op deze locatie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"De aanmeldgegevens zijn verlopen, gelieve Online-accounts te openen om u aan " +"te melden en dit account in te schakelen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Niets gevonden hier!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locatie is toegevoegd aan de kaart, het kan even duren voor deze op de kaart " +"en in zoekresultaten wordt weergegeven." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kaart op %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Bestandssysteem is alleen-lezen" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "U heeft geen toestemming om hier op te slaan" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "De map bestaat niet" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Geen bestandsnaam opgegeven" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kon weergave niet exporteren" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ongeldige coördinaat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ontleedfout" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "onbekende afmetingen" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Routeaanvraag is mislukt." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Geen route gevonden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Alle laagbestanden" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Verbinden met locatiedienst is mislukt" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Erwin Poeze \n" +"Reinout van Schouwen \n" +"Hannie Dumoleyn \n" +"Nathan Follens \n" +"Justin van Steijn \n" +"\n" +"Meer info over Gnome-NL http://nl.gnome.org" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Een kaartentoepassing voor Gnome" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. en de auteurs van Gnome Maps" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kaartgegevens door %s en bijdragers" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kaarttegels geleverd door %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Zoekfunctionaliteit aangeboden door %s met %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Bestandstype wordt niet ondersteund" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Laag openen mislukt" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "GeoURI openen mislukt" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Onjuiste aanvraag" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object niet gevonden" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, iemand anders heeft net het object gewijzigd" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object is verwijderd" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Manier of relatie verwijst naar niet-bestaande dochter" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naam" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "De officiële naam. Dit is wat normaal gezien op borden verschijnt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"De officiële website. Probeer de meest beperkte vorm van een URL te " +"gebruiken, i.e., https://voorbeeld.be in plaats van https://voorbeeld.be/" +"index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefoon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefoonnummer. Gebruik het internationale formaat, beginnend met een " +"plusteken (+). Wees bewust van lokale privacywetten, zeker wanneer het gaat " +"om privételefoonnummers." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Het gebruikte formaat hoort de taalcode en de titel van het artikel te " +"bevatten, zoals ‘nl:Titel van artikel’." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Openingstijden" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Zie de koppeling in het label voor hulp bij het formaat." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populatie" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Hoogte" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "De hoogte boven de zeespiegel van een punt in meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rolstoeltoegankelijk" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nee" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Beperkt toegankelijk" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Aangewezen" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internettoegang" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Bedraad" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Boeddisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindoeïsme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jodendom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Meerdere religies" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heidendom" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaristisch Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yezidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Mazdeïsme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Wc's" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Opmerking" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Deze informatie wordt gebruikt om andere ‘mappers’ te informeren over niet-" +"evidente informatie over een element, de bedoeling van de auteur bij het " +"aanmaken ervan, of tips voor verbetering." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Een type kiezen" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Klaar" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Naamloze plaats" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populatie:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Hoogte:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Openingstijden:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internettoegang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religie:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Wc's:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rolstoeltoegankelijk:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefoon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Kon GeoURI niet ontleden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "beperkt toegankelijk" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nee" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "aangewezen" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Plaats niet gevonden op OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL is ongeldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coördinaten in URL zijn ongeldig" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL wordt niet ondersteund" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Van %s naar %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Bezig met laden van kaarttegels voor afdrukken" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "U kan het afdrukken afbreken indien het te lang duurt" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afdrukken afbreken" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "‘Via’ toevoegen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "‘Via’ verwijderen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route omkeren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s toevoegen aan %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI openen mislukt" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Openen met %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "bestand laden mislukt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschatte tijdsduur: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Routeberekening geleverd door %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Vertrek om %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Wandel %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kom aan tegen %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Kom aan" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wandelinstructies tonen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Wandelinstructies verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Vroegere alternatieven laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Latere alternatieven laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Geen vroegere alternatieven gevonden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Geen latere alternatieven gevonden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Geen gegevens betreffende dienstregeling gevonden voor deze route." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Geen leverancier gevonden voor deze route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuut" +msgstr[1] "%d minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d uur" +msgstr[1] "%d uur" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d uur" +msgstr[1] "%d:%02d uur" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "de hele dag" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "van zonsopkomst tot zonsondergang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "dagelijks" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "officiële feestdagen" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "schoolvakanties" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "niet open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "bedraad" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "dienst" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Positienauwkeurigheid: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exact" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Ga door op %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Ga door" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sla linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Sla linksaf" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sla iets linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Sla iets linksaf" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sla scherp linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Sla scherp linksaf" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sla rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Sla rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sla iets rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Sla iets rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sla scherp rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Sla scherp rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Neem op de rotonde afslag %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Neem op de rotonde de afslag naar %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Rijd de rotonde op" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Neem de lift en stap af op %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Neem de lift" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Draai 180 graden linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Draai 180 graden linksaf" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Draai 180 graden rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Draai 180 graden rechtsaf" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routezoeken door OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Bestemming toevoegen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Openen met een andere toepassing" + +#~ msgid "Press enter to search" +#~ msgstr "Druk op enter om te zoeken" + +#~ msgid "Quit" +#~ msgstr "Afsluiten" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vormlaag openen…" + +#~ msgid "Load Map Layer" +#~ msgstr "Maplaag laden" + +#~ msgid "Open Layer" +#~ msgstr "Laag openen" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mijl" + +#~ msgid "%f ft" +#~ msgstr "%f voet" + +#~ msgid "Position not found" +#~ msgstr "Positie niet gevonden" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 00000000..031a380e --- /dev/null +++ b/po/oc.po @@ -0,0 +1,1706 @@ +# Occitan Translation of GNOME Maps. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Cédric Valmary (Tot en Òc) , 2015. +# Cédric Valmary (Tot en òc) , 2015. +# Cédric Valmary (totenoc.eu) , 2016, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-03-26 15:40+0000\n" +"PO-Revision-Date: 2018-06-08 09:01+0200\n" +"Last-Translator: Cédric Valmary (totenoc.eu) \n" +"Language-Team: Tot En Òc\n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapas GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Recèrca d'emplaçaments a l'entorn del monde" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L'aplicacion Mapas vos dona un accès rapid a de mapas del monde entièr. " +"Permet de trobar rapidament un emplaçament en recercant per vila o per " +"carrièra, o de situar un endreit de recontre amb un amic." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Las mapas utilizan la basa de donadas collaborativa OpenStreetMap, a la " +"quala contribuisson de centenats de milierats de personas dins lo monde " +"entièr." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Podètz quitament cercar de luòcs especifics, coma « Restaurants al costat de " +"la Catedrala d'Estrasborg » o « Ostalariás al costat d'Alexanderplatz a " +"Berlin »." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicacion cartografica simpla" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet d'afichar vòstre emplaçament sus la mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "darrièr emplaçament vist" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas del darrièr emplaçament afichat." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Talha de la fenèstra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Talha de la fenèstra (nautor e largor)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posicion de la fenèstra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posicion de la fenèstra (X e Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Fenèstra agrandida" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat d'agrandiment de la fenèstra" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre maximum de resultats de recèrca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de resultats d'una recèrca per geocòdi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidencialitat d'anonci de la localizacion sus Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion sus Facebook. Las valors possiblas son : EVERYONE (tot lo " +"monde), FRIENDS_OF_FRIENDS (amics dels amics), ALL_FRIENDS (totes los amics) " +"o SELF (siá)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidencialitat d'anonci de la localizacion Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion Foursquare. Las valors possiblas son : public (publicas), " +"followers (personas que me seguisson) o private (privat)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusion sus Facebook dels anoncis de localizacion Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Facebook associat al compte Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusion sus Twitter dels anoncis de localizacion Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Twitter associat al compte Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'utilizaire o adreça electronica OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utilizaire s'es identificat per modificar de donadas " +"OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Tipe de transpòrt utilizat al moment del darrièr itinerari" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar un compte OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Acorchis de clavièr" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "A prepaus" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Quitar" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar sus Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar sus Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Anullar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "A_nonciar sa localizacion" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tot lo monde" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics dels amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Sonque los amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Sonque ieu" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Public" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Personas que me seguisson" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "De qué i a aicí ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copiar l'emplaçament" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exportar coma imatge" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exportacion de l'afichatge" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exportar" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclure l'itinerari e los marcadors" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afichar los acorchis" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Recercar" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir l'itinerari" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitar" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afichar la mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bascular los favorits" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passar en vista cartografica" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passar en vista aeriana" + +#: ../data/ui/help-overlay.ui.h:14 +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Dobrir un jaç de formas" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +#| msgid "Open Layer" +msgid "Open Shape Layer…" +msgstr "Dobrir un jaç de formas…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar los servicis de localizacion per trobar vòstra posicion." + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paramètres de localizacion" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Causir lo tipe de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#| msgctxt "shortcut window" +#| msgid "Zoom out" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Bascular los favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Imprimir l'itinerari" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Mapas es fòra linha !" + +#: ../data/ui/main-window.ui.h:17 +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas a besonh d’una connexion Internet activa e foncionala, mas n'a pas " +"trobat cap." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Verificatz vòstra connexion e vòstres paramètres de proxy." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Apondre a un novèl itinerari" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Dobrir amb una autra aplicacion" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marcar coma favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Anonciar aqueste emplaçament coma localizacion" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"S'identificar per modificar de mapas" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudar al melhorament de las mapas amb\n" +"un compte OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Adreça de corrièr electronic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Senhal" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Connexion" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Avètz pas de compte ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"O planhèm, aquò a pas foncionat. Reensajatz o visitatz\n" +"OpenStreetMap per reïnicializar vòstre senhal." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Lo còdi de verificacion correspond pas, ensajatz encara un còp." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Sasissètz lo còdi de verificacion afichat çaisús" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verificar" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sètz inscrit" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vòstre compte OpenStreetMap es actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Desconnexion" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrièra" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Numèro d'ostal" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còdi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Vila" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipe" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Pas cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Apondre un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Las modificacions de la mapa seràn visiblas sus totas\n" +"las mapas qu'utilizan de donadas OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Darrièrament utilizat" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Anullar" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Seguent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Far veire mai d'informacion" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Quichatz sus entrada per recercar" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cap de resultat pas trobat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Fasètz lisar per modificar l'òrdre de l'itinerari" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Dobrir l'emplaçament" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Dobrir" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +#| msgid "Open Layer" +msgid "Open Shape Layer" +msgstr "Dobrir un jaç de formas" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Inversar la visibilitat" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Recèrca d'itinerari amb GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Recèrca d’itinerari amb OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itineraris per transpòrt public prepausats per GNOME utilizan\n" +"de tablèus oraris obtenguts de las companhias de transpòrt.\n" +"Aquelas companhias pòdon pas èsser tengudas responsablas dels resultats " +"afichats.\n" +"GNOME pòt pas garantir l’exactitud dels itineraris e oraris presentats.\n" +"Los noms e marcas afichats devon èsser considerats coma de marcas " +"depausadas, se fa mestièr." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Far veire mai de resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Amagar los arrèsts e informacions intermediàrias" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "Afichar los arrèsts e informacions intermediàrias" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Partir ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Despart" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribada" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Afichar" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Bus" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Mètros" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Vaissèls" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Luòc actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precision de la posicion : %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Zoomatz per apondre un emplaçament !" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Validar" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trobar una estructura de teulas dins lo repertòri" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Fracàs d'analisi d'un document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Atributs obligatòris mancants" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Impossible de trobar l'element OSM" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Afichar la version del logicial" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar un compte" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargament" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un luòc" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Facebook. " +"Seleccionatz-ne un dins aquesta lista." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Foursquare. " +"Seleccionatz-ne un dins aquesta lista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Anonciar sa localizacion a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriure un messatge opcional per vòstre anonci de localizacion a %s." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Una error s'es produita" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trobar « %s » sus la ret sociala" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trobar un endreit correspondent per anonciar sa localizacion " +"ici." + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las informacions d'autenficacion an expirat, dobrissètz Comptes en linha per " +"vos connectar e activar aqueste compte" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Itinerari dempuèi aicí" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Apondre una destinacion" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Itinerari fins a aqueste punt" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Res es pas estat trobat a aqueste endreit !" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L'emplaçament es estat apondut a la mapa, notatz qu'aquò pòt prene un moment " +"abans qu'aparesca sus la mapa e dins los resultats de recèrca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas situadas a %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Lo sistèma de fichièrs es en lectura sola" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Avètz pas la permission d'enregistrar a aqueste endreit" + +#: ../src/exportViewDialog.js:158 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Lo dorsièr existís pas" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Cap de nom de fichièr pas indicat" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d'exportar l'afichatge" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada pas valabla" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error d'analisi" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Fracàs de la recèrca d'itinerari." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Cap d'itinerari pas trobat." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Es partit !" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Totes los fichièrs de jaces" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Fracàs a la connexion al servici de localizacion" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "Cédric Valmary (totenoc.eu) " + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Una aplicacion cartografica per GNOME" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2017 Red Hat, Inc. e los autors de Mapas de GNOME" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Donadas cartograficas de %s e contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Lo tipe de fichièr es pas pris en charge" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Fracàs de dobertura del jaç" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Fracàs de dobertura de la Geo URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Cap d'alternativa precedenta pas trobada." + +#: ../src/openTripPlanner.js:614 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "Cap d'alternativa seguenta pas trobada." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'utilizaire o senhal incorrècte" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Marrida requèsta" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objècte pas trobat" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, qualqu'un mai ven de modificar l'objècte" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objècte es estat suprimit" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lo camin o la relacion se referís a d'enfants qu'existisson pas" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Lo nom oficial. Es en general çò qu'es escrit sus l'ensenha." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Site internet" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Lo site officiel. Ensajatz d'utilizar la forma la plus simple per l'URL, es " +"a dire http://example.com al luòc de http://example.com/index.html." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefòn" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numèro de telefòn. Utilizatz lo format internacional, en començant per un " +"signe +. Atencion a las leis localas sus la vida privada, sustot pels " +"numéros de telefòn dels particulars." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Wikipèdia" + +#: ../src/osmEditDialog.js:140 +#| msgid "" +#| "The format used should include the language code and the article title " +#| "like ”en:Article title”." +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Lo format utilizat deuriá comprene lo còdi lenga e lo títol de l’article, " +"coma « oc:Títol de l’article »." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Oras de dobertura" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Veire lo ligam dins l'etiqueta per de l'ajuda sul format." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacion" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevacion (nautor en dessús del nivèl de la mar) d'un punt en mètres." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Accès als fautuèlhs rotlants" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "òc" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Non" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Reservat" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Accès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Fialar" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servici" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Baaïsme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Bodisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Indoïsme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jaïnisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaïsme" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Mantuna religion" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Scientologie" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Shintoïsme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoïsme" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodó" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Iezidisme" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Comuns" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nòta" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacions utilizadas per informar d’autres cartografes sus las " +"informacions non evidentas sus un element, l’intencion de l’autor al moment " +"de sa creacion, o de las indicacions per de possibles melhoraments." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccionar un tipe" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fait" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Populacion :" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Altitud :" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Oras de dobertura :" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Accès internet :" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Religion :" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Comuns :" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Accès als fautuèlhs rotlants :" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefòn :" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Fracàs a l'analisi de la Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "òc" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "non" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "reservat" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargament de las teulas de mapa per l'impression" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podètz interrompre l'impression se cela pren tròp de temps" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l'impression" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +#| msgid "last viewed location" +msgid "Add via location" +msgstr "Apondre un emplaçament intermediari" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +#| msgid "Open location" +msgid "Remove via location" +msgstr "Suprimir l’emplaçament intermediari" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Camin invèrse" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Fracàs de dobertura de l'URI" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "impossible de cargar lo fichièr" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat : %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribada a %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Arribada" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Despart de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +#| msgid "Start!" +msgid "Start" +msgstr "Despart" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Afichar las instruccions de caminada a pè" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Amagar las instruccions de caminada a pè" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar las alternativas precedentas" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar las alternativas seguentas" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuta" +msgstr[1] "%d minutas" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ora" +msgstr[1] "%d oras" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ora" +msgstr[1] "%d:%02d oras" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24h/24" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "del sortir al colcar del solelh" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada jorn" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "comjats" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "comjats escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "tampat" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "filar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servici" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar lo jaç cartografic" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posicion pas trobada" + +#~ msgid "Country code: %s" +#~ msgstr "Còdi del país : %s" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Dobrir un jaç de formas…" + +#~ msgid "Open Layer" +#~ msgstr "Dobrir la couche" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 00000000..9355ee16 --- /dev/null +++ b/po/pa.po @@ -0,0 +1,1895 @@ +# Punjabi translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# A S Alam , 2013, 2014, 2015, 2016, 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-04 20:50-0800\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Lokalize 19.04.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ਗਨੋਮ ਨਕਸ਼ੇ" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ਸੰਸਾਰ ਭਰ ਵਿੱਚ ਥਾਵਾਂ ਨੂੰ ਲੱਭੋ" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਤੁਹਾਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ ਨਕਸ਼ੇ ਉਪਲੱਬਧ ਕਰਵਾਉਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਤੁਰੰਤ" +" ਸ਼ਹਿਰ ਜਾਂ ਸੜਕਾਂ ਦੇ ਨਾਂ " +"ਰਾਹੀਂ ਥਾਂ ਲੱਭਣ ਲਈ ਜਾਂ ਮਿੱਤਰ ਨੂੰ ਮਿਲਣ ਲਈ ਥਾਂ ਪੱਕਾ ਕਰਨ ਲਈ ਮੱਦਦ ਕਰਦੀ ਹੈ।" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਸਾਂਝਾ OpenStreetMap ਡਾਟਾਬੇਸ ਵਰਤਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ" +" ਲੱਖਾਂ-ਕਰੋੜਾਂ ਲੋਕਾਂ " +"ਵਲੋਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ਤੁਸੀਂ ਟਿਕਾਣਿਆਂ ਦੀ ਖਾਸ ਕਿਸਮ ਲਈ ਵੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ \"ਮੇਨ ਸਟਰੀਟ, ਬੋਸਟਨ" +" ਨੇੜੇ ਪੱਬ\" " +"ਜਾਂ \"ਅਲੈਗਜੈਂਡਰਪਲੇਟਜ਼, ਬਰਲਿਨ ਨੇੜੇ ਹੋਟਲ\"।" + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "ਨਕਸ਼ਾ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ਸੌਖੀ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "ਨਕਸ਼ਾ;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਦਿਖਾਉਣ ਲਈ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ਪਿਛਲਾ ਵੇਖਿਆ ਟਿਕਾਣਾ" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ਪਿਛਲੇ ਵੇਖੇ ਗਏ ਟਿਕਾਣੇ ਦੇ ਧੁਰੇ।" + +#: data/org.gnome.Maps.gschema.xml:21 +#| msgctxt "shortcut window" +#| msgid "Map View" +msgid "Map type" +msgstr "ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "ਵਿੰਡੋ ਆਕਾਰ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (X ਅਤੇ Y)।" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "ਜੀਓਕੋਡ ਖੋਜ ਤੋਂ ਵੱਧ ਤੋਂ ਵੱਧ ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਟਿਕਾਣਿਆਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਸਥਾਨਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਹਰੇਕ," +" ਦੋਸਤਾਂ_ਦੇ_ਦੋਸਤ, ਸਭ_ਦੋਸਤ, ਜਾਂ " +"ਖੁਦ" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "ਫੋਰਸਿਕਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਪਬਲਿਕ, ਫ਼ੋਲਅਰ ਜਾਂ" +" ਪ੍ਰਾਈਵੇਟ।" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਫੇਸਬੁੱਕ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ" +" ਫੇਸਬੁੱਕ ਖਾਤੇ ਵਿੱਚ ਪੋਸਟ ਵਜੋਂ " +"ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਟਵਿੱਟਰ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਟਵਿੱਟਰ" +" ਖਾਤੇ ਵਿੱਚ ਟਵਿੱਟ " +"ਵਜੋਂ ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਈਮੇਲ ਪਤਾ" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਵਰਤੋਂਕਾਰ ਨੇ OpenStreetMap ਡਾਟੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਈਨ ਇਨ ਕੀਤਾ ਹੈ।" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ਵੇਖਣਯੋਗਤਾ" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ਫੇਸਬੁੱਕ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "ਟਵਿੱਟਰ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "ਚੈਕ ਇਨ(_h)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "ਹਰੇਕ" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "ਦੋਸਤਾਂ ਦੇ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "ਕੇਵਲ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ਕੇਵਲ ਮੈਂ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "ਪਬਲਿਕ" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "ਫ਼ੌਲਅਰ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "ਇੱਥੇ ਤੋਂ ਰੂਟ" + +#: data/ui/context-menu.ui:16 +#| msgid "Add destination" +msgid "Add intermediate destination" +msgstr "ਵਿਚਕਾਰਲੀ ਮੰਜ਼ਲ ਜੋੜੋ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "ਇੱਥੇ ਤੱਕ ਰੂਟ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "ਇੱਥੇ ਕੀ ਹੈ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਕਾਪੀ ਕਰੋ" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "ਐਕਸਪੋਰਟ(_I)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "ਰੂਟਾਂ ਅਤੇ ਚਿੰਨ੍ਹਾਂ ਸਮੇਤ" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "ਆਮ" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਵੇਖੋ" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "ਖੋਜੋ" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "ਬਾਹਰ" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "ਨਕਸ਼ੇ ਦੀ ਝਲਕ" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "ਸਕੇਲ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "ਸੜਕੀ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "ਹਵਾਈ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:101 +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +#| msgid "Open Layer" +msgid "Open Shape Layer…" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "ਆਪਣੇ ਟਿਕਾਣੇ ਨੂੰ ਲੱਭਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤੇ ਨੂੰ ਸੈਟਅੱਪ ਕਰੋ" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "ਚਿੱਤਰ ਵਜੋਂ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)" + +#: data/ui/main-window.ui:22 +#| msgid "About" +msgid "About Maps" +msgstr "ਨਕਸ਼ੇ ਬਾਰੇ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "ਨਕਸ਼ਾ ਕਿਸਮ ਚੁਣੋ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +#| msgctxt "shortcut window" +#| msgid "Zoom out" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "ਪਸੰਦਾਂ ਨੂੰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "ਨਕਸ਼ੇ ਆਫਲਾਈਨ ਹਨ!" + +#: data/ui/main-window.ui:260 +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਸਰਗਰਮ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਇਹ ਮਿਲਿਆ" +" ਨਹੀਂ।" + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਤੇ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਦੀ ਜਾਂਚ ਕਰੋ।" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "ਨਵੇਂ ਰੂਟ ਵਿੱਚ ਜੋੜੋ" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +#| msgid "Open location" +msgid "Share location" +msgstr "ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰੋ" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "ਪਸੰਦ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਗਾਓ" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "ਇੱਥੇ ਚੈਕ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤਾ" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap ਖਾਤੇ ਨਾਲ ਨਕਸ਼ੇ ਨੂੰ\n" +" ਸੁਧਾਰਨ ਲਈ ਮਦਦ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ਈਮੇਲ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ਪਾਸਵਰਡ" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "ਸਾਇਨ ਇਨ" + +#: data/ui/osm-account-dialog.ui:146 +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "ਖਾਤਾ ਨਹੀਂ ਹੈ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"ਅਫਸੋਸ, ਇਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਬਾਅਦ 'ਚ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਮੁੜ-ਸੈੱਟ" +" ਕਰਨ ਲਈ \n" +"OpenStreetMap ਨੂੰ ਖੋਲ੍ਹੋ।" + +#: data/ui/osm-account-dialog.ui:172 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "ਤਸਦੀਕ ਕਰਨ ਵਾਲਾ ਕੋਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਤਸਦੀਕੀ ਕੋਡ ਦਿਓ" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "ਤਸਦੀਕ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "ਤੁਹਾਡਾ OpenStreetMap ਖਾਤਾ ਹੁਣ ਸਰਗਰਮ ਹੈ।" + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "ਸਾਇਨ ਆਉਟ" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "ਗਲੀ" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "ਘਰ ਨੰਬਰ" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "ਡਾਕ ਕੋਡ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "ਸ਼ਹਿਰ" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "ਕਿਸਮ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ਖੇਤਰ ਨੂੰ ਜੋੜੋ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "ਟਿੱਪਣੀ" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "ਤਾਜ਼ਾ ਵਰਤੇ ਗਏ" + +#: data/ui/osm-edit-dialog.ui:280 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "ਅੱਗੇ" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "ਹੋਰ ਜਾਣਕਾਰੀ ਵੇਖੋ" + +#: data/ui/place-popover.ui:54 +#| msgid "No route found." +msgid "No results found" +msgstr "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "ਰੂਟ ਦਾ ਕ੍ਰਮ ਬਦਲਣ ਲਈ ਖਿੱਚੋ" + +#: data/ui/send-to-dialog.ui:10 +#| msgid "Open location" +msgid "Open Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਖੋਲ੍ਹੋ" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "…ਨੂੰ ਭੇਜੋ" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +#| msgid "Open Layer" +msgid "Open Shape Layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "ਖੋਲ੍ਹੋ(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "ਦਿੱਖ ਨੂੰ ਬਦਲੋ" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ਗਰਾਫਹੋਪਰ ਵਲੋਂ ਰੂਟ ਖੋਜ" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "ਹੋਰ ਨਤੀਜੇ ਵੇਖੋ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਲੁਕਾਓ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ਹੁਣੇ ਚੱਲੋ" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "ਤੱਕ ਚੱਲੋ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "ਤੱਕ ਪਹੁੰਚ" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "ਸ਼ੋਅ" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ਬੱਸਾਂ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ਟਰਾਮਾਂ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ਟਰੇਨਾਂ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "ਸਬ-ਵੇਅ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ਫੈਰੀ" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "ਹਵਾਈ-ਜਹਾਜ਼" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣਾ" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਜੋੜਨ ਲਈ ਜ਼ੂਮ ਇਨ ਕਰੋ!" + +#: data/ui/zoom-in-dialog.ui:38 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom In" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਟਾਈਲ ਢਾਂਚੇ ਨੂੰ ਲੱਭਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML ਡੌਕੂਮੈਂਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ਲੋੜੀਂਦੇ ਗੁਣ ਗੁੰਮ ਹਨ" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ਐਲੀਮੈਂਟ ਨੂੰ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "ਲੋਕਲ ਟਾਈਲ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚੇ ਲਈ ਮਾਰਗ" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜ਼ਨ ਵੇਖੋ" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "ਨੈੱਟਵਰਕ ਉਪਲਬਟਾ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ਖਾਤੇ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ਸਥਾਨ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੇਸਬੁੱਕ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੋਰਸਕਿਉਰ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ਲਈ ਚੈਕ ਇਨ" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ਵਿੱਚ ਚੈਕ ਇਨ ਕਰਨ ਲਈ ਚੋਣਵਾਂ ਸੁਨੇਹਾ ਲਿਖੋ।" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ਗਲਤੀ ਆਈ" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ਸਮਾਜਿਕ ਸੇਵਾ ਵਿੱਚ “%s“ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "ਇਹ ਟਿਕਾਣੇ ਵਿੱਚ ਚੈਕ-ਇਨ ਕਰਨ ਲਈ ਢੁੱਕਵਾਂ ਸਥਾਨ ਲੱਭਿਆ ਨੀਹਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"ਸਨਦ ਦੀ ਮਿਆਦ ਪੁੱਗੀ, ਕਿਰਪਾ ਕਰਕੇ ਸਾਇਨ ਇਨ ਕਰਨ ਤੇ ਇਹ ਖਾਤੇ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਆਨਲਾਈਨ" +" ਖਾਤਿਆਂ ਨੂੰ " +"ਖੋਲ੍ਹੋ।" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "ਕੁਝ ਵੀ ਨਹੀਂ ਲੱਭਿਆ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਜੋੜਿਆ ਗਿਆ, ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਅਤੇ ਖੋਜ ਨਤੀਜਿਆਂ" +" ਵਿੱਚ ਆਉਣ ਲਈ ਕੁਝ " +"ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "ਨਕਸ਼ਾ %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "ਫਾਇਲ-ਸਿਸਟਮ ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ ਹੈ" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "ਤੁਹਾਡੇ ਕੋਲ ਉੱਥੇ ਸੰਭਾਲਣ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ" + +#: src/exportViewDialog.js:158 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "ਡਾਇਰੈਕਟਰੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ਕੋਈ ਫਾਇਲ-ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ਗਲਤ ਧੁਰੇ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ਪਾਰਸ ਕਰਨ ਦੀ ਗਲਤੀ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ਅਣਜਾਣ ਜੁਮੈਟਰੀ" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "ਰੂਟ ਬੇਨਤੀ ਫੇਲ੍ਹ ਹੋਈ।" + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "ਕੋਈ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "ਸ਼ੁਰੂ!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "ਸਾਰੀਆਂ ਪਰਤਾਂ ਫਾਈਲਾਂ" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "ਟਿਕਾਣਾ ਸੇਵਾ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" +"ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "ਗਨੋਮ ਲਈ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "ਕਾਪੀਰਾਈਟ © 2011 – 2019 Red Hat, Inc. ਅਤੇ ਗਨੋਮ ਨਕਸ਼ਾ ਡਿਵੈਲਪਰ" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "ਨਕਸ਼ੇ ਦਾ ਡਾਟਾ %s ਅਤੇ ਯੋਗਦਾਨੀਆਂ ਵਲੋਂ" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "ਨਕਸ਼ੇ ਲਈ ਨਾਂ %s ਵਲੋਂ ਦਿੱਤੇ" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "ਖੋਜ %s ਰਾਹੀਂ %s ਵਰਤ ਕੇ ਦਿੱਤੀ ਗਈ ਹੈ" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "ਫਾਇਲ ਦੀ ਕਿਸਮ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "ਪਰਤ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "GeoURI ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "ਗਲਤ ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "ਕਾਮਯਾਬ" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "ਗਲਤ ਬੇਨਤੀ" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "ਆਬਜੈਕਟ ਨਹੀਂ ਲੱਭਿਆ" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "ਟਕਰਾ, ਕਿਸੇ ਨੇ ਹੁਣੇ ਹੀ ਆਬਜੈਕਟ ਨੂੰ ਸੋਧਿਆ ਹੈ" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "ਆਬਜੈਕਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "ਪਤਾ" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "ਵੈੱਬਸਾਈਟ" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ਫ਼ੋਨ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "ਵਿਕਿਪੀਡਿਆ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ਆਬਾਦੀ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ਉਚਾਈ" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ਸੀਮਿਤ" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "ਨਿਯਤ ਕੀਤਾ" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ਟਰਮੀਨਲ" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "ਸੇਵਾ" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "ਧਰਮ" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "ਅਨੀਮੀਸਮ" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ਬਾਹਾਈ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ਬੁੱਧ" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ਇਸਾਈ" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "ਕਨਫਿਊਸ਼ੀਵਾਦ" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ਹਿੰਦੂ" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ਜੈਨ" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "ਯਹੂਦੀ" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ਇਸਲਾਮ" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "ਕਈ ਧਰਮ" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "ਪਾਗਾਨੀਸਮ" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "ਪਾਸਟਾਫਾਰਿਨੇਮ" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "ਸਾਇੰਸਟੋਲੋਜੀ" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ਸ਼ਿਨਟੋ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "ਸਿੱਖੀ" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "ਅਧਿਆਤਮਵਾਦ" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "ਤਾਓਵਾਦ" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "ਵੂਡੂ" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "ਯਾਜ਼ਿਡੀਸਮ" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "ਪਾਰਸੀ" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "ਗੁਸਲਖਾਨੇ" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "ਨੋਟ" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "ਕਿਸਮ ਨੂੰ ਚੁਣੋ" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ਮੁਕੰਮਲ" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "ਬੇਨਾਮ ਥਾਂ" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ਆਬਾਦੀ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ਉਚਾਈ:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "ਧਰਮ:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "ਗੁਸਲਖਾਨੇ:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ਫ਼ੋਨ:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "ਜੀਓ URI ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ਹਾਂ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ਸੀਮਿਤ" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ਨਹੀਂ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "ਮਕਸਦ" + +#: src/place.js:475 +#| msgid "Edit on OpenStreetMap" +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਥਾਂ ਨਹੀਂ ਲੱਭੀ" + +#: src/place.js:495 +#| msgid "OpenStreetMap Account" +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL ਵਾਜਬ ਨਹੀਂ ਹੈ" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL ਵਿੱਚ ਦਿੱਤੇ ਧੁਰੇ ਵਾਜਬ ਨਹੀਂ ਹਨ" + +#: src/place.js:521 +#| msgid "File type is not supported" +msgid "URL is not supported" +msgstr "URL ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s ਤੋਂ %s ਤੱਕ" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਲਈ ਨਕਸ਼ਿਆਂ ਦੇ ਨਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "ਜੇ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲੰਮਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ ਤਾਂ ਤੁਸੀਂ ਪਰਿੰਟ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹੋ" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਨੂੰ ਵਿਚੇ ਛੱਡੋ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +#| msgid "last viewed location" +msgid "Add via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਜੋੜੋ" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +#| msgid "Open location" +msgid "Remove via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਹਟਾਓ" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "ਉਲਟ ਰਾਹ" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "%s ਤੋਂ %s ਜੋੜੋ" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URL ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "ਅੰਦਾਜ਼ਨ ਸਮਾਂ: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s ਵਲੋਂ ਸਫ਼ਰਨਾਮਾ ਦਿੱਤਾ" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s ਵਜੇ ਸ਼ੁਰੂ ਕਰੋ" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +#| msgid "Start!" +msgid "Start" +msgstr "ਸ਼ੁਰੂ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s ਤੁਰੋ" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s ਵਜੇ ਪਹੁੰਚੋ" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "ਪਹੁੰਚ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਦਿਖਾਓ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਲੁਕਾਓ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "ਸਵਖਤੇ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "ਬਾਦ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "ਕੋਈ ਸਵਖਤੇ ਦਾ ਬਦਲ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitMoreRow.js:56 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "ਕੋਈ ਬਦਲਵਾਂ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਸਮਾਂ-ਸਾਰਣੀ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਪੂਰਕ ਨਹੀਂ ਲੱਭਿਆ।" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d ਮਿੰਟ" +msgstr[1] "%d ਮਿੰਟ" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ਘੰਟਾ" +msgstr[1] "%d ਘੰਟੇ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ਘੰਟਾ" +msgstr[1] "%d:%02d ਘੰਟੇ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "ਚੌਵੀਂ ਘੰਟੇ" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "ਸੂਰਜ ਚੜ੍ਹਨ ਤੋਂ ਸੂਰਜ ਡੁੱਬਣ ਤੱਕ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ਹਰ ਰੋਜ਼" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "ਪਬਲਿਕ ਛੁੱਟੀਆਂ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "ਸਕੂਲ ਛੁੱਟੀਆਂ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ਖੁੱਲ੍ਹਾ ਨਹੀਂ" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ਟਰਮੀਨਲ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "ਸੇਵਾ" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "ਸ਼ੁੱਧਤਾ: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "ਠੀਕ-ਠੀਕ" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f ਮਿੰਟ" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f ਸ" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s ਕਿਮੀ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s ਮੀ" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s ਮੀਲ" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ਫੁੱਟ" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "%s ਉੱਤੇ ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr " %s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "ਸੱਜ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "ਥੋੜ੍ਹਾ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "ਗੋਲ ਚੱਕਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ ਅਤੇ %s ਉੱਤੇ ਉਤਰ ਜਾਓ" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "ਖੱਬੀ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#~ msgid "Quit" +#~ msgstr "ਬਾਹਰ" + +#~ msgid "Load Map Layer" +#~ msgstr "ਨਕਸ਼ੇ ਦੀ ਪਰਤ ਨੂੰ ਲੋਡ ਕਰੋ" + +#~ msgid "Open with another application" +#~ msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਖੋਲ੍ਹੋ" + +#~ msgid "Press enter to search" +#~ msgstr "ਖੋਜ ਕਰਨ ਲਈ ਐਂਟਰ ਦਬਾਉ" + +#~ msgid "OK" +#~ msgstr "ਠੀਕ ਹੈ" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f ਮੀਲ" + +#~ msgid "%f ft" +#~ msgstr "%f ਫੁੱਟ" + +#~ msgid "Country code: %s" +#~ msgstr "ਦੇਸ਼ ਕੋਡ: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਤੇ ਸ਼ੁੱਧਤਾ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ (ਲੰਬਕਾਰ ਤੇ ਵਿਸਥਾਰ ਡਿਗਰੀਆਂ ਵਿੱਚ) ਤੇ ਸ਼ੁੱਧਤਾ (ਮੀਟਰਾਂ ਵਿੱਚ)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ਯੂਜ਼ਰ ਦੇ ਆਖਰੀ ਜਾਣੇ ਟਿਕਾਣੇ ਦਾ ਵੇਰਵਾ" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ਕੀ ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਯੂਜ਼ਰ ਵਲੋਂ ਖੁਦ ਤਹਿ ਕੀਤਾ ਸੀ।" + +#~ msgid "I’m here!" +#~ msgstr "ਮੈਂ ਇੱਥੇ ਹਾਂ!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "ਸੈਟੇਲਾਈਟ" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..ac85d1e9 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1838 @@ +# Polish translation for gnome-maps. +# Copyright © 2013-2020 the gnome-maps authors. +# This file is distributed under the same license as the gnome-maps package. +# Piotr Drąg , 2013-2020. +# Paweł Żołnowski , 2014-2015. +# Aviary.pl , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-01 15:53+0100\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Wyszukiwanie miejsc na świecie" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapy zapewniają szybki dostęp do map całego świata oraz umożliwiają szybkie " +"wyszukiwanie miejsc według miast i ulic. Pomogą również ustalić miejsce " +"spotkania z przyjaciółmi." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy udostępniane są przez projekt OpenStreetMap, który jest tworzony przez " +"setki tysięcy ludzi z całego świata." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Można nawet wyszukiwać konkretne rodzaje miejsc, takie jak „Puby w pobliżu " +"ulicy Marszałkowskiej, Warszawa” lub „Hotspot Wi-Fi na Rynku, Wrocław”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Prosty program do wyświetlania map" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "" +"Mapy;Mapa;Satelita;Satelitarna;Położenie;Lokalizacja;Współrzędne;Geografia;" +"Geograficzne;GPS;Ulica;Miasto;Województwo;Kraj;Państwo;Dojazd;Gdzie jestem;" +"Jak dojechać;Jak dojadę;Trasa;Trasy;Wycieczka;Wycieczki;Planowanie;Autobusy;" +"Tramwaje;Pociągi;Metro;Promy;OpenStreetMap;OpenTripPlanner;Foursquare;" +"Meldowanie;Zamelduj się;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umożliwia wyświetlenie położenia użytkownika na mapie." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ostatnio wyświetlane położenie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Współrzędne ostatnio wyświetlanego położenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "powiększenie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Poziom powiększenia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ wyświetlanej mapy (zwykła, satelitarna itp.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Rozmiar okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Rozmiar okna (szerokość i wysokość)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Położenie okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Położenie okna (na osi X i Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maksymalizacja okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stan maksymalizacji okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksymalna liczba wyników wyszukiwania" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksymalna liczba wyników wyszukiwania geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Liczba ostatnich miejsc do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Liczba ostatnio odwiedzonych miejsc do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Liczba ostatnich tras do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Liczba ostatnio odwiedzonych tras do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Facebook dotyczące meldowania" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Facebook dotyczące meldowania. " +"Możliwe wartości: „EVERYONE” (wszyscy), „FRIENDS_OF_FRIENDS” (znajomi " +"znajomych), „ALL_FRIENDS” (wszyscy znajomi) lub „SELF” (tylko ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Foursquare dotyczące meldowania" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Foursquare dotyczące " +"meldowania. Możliwe wartości to: „public” (publiczne), " +"„followers” (obserwujący) lub „private” (prywatne)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako post na koncie " +"w serwisie Facebook powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako tweet na koncie " +"w serwisie Twitter powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nazwa użytkownika lub adres e-mail w serwisie OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Czy użytkownik jest zalogowany, aby modyfikować dane OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Ostatnio używany typ transportu dla tras" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Widoczność" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Udostępnij w serwisie Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Udostępnij w serwisie Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anuluj" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Za_melduj się" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Wszyscy" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Znajomi znajomych" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tylko znajomi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tylko ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publiczne" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Obserwujący" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Prywatne" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa stąd" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj cel pośredni" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa dotąd" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co tutaj jest?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopiuj położenie" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj do serwisu OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksport widoku" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Wy_eksportuj" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Dołączenie tras i znaczników" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ogólne" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Wyświetlenie skrótów" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Wyszukiwanie" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Przełączenie planowania trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Wydrukowanie trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zakończenie działania" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Widok mapy" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Powiększenie" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pomniejszenie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Przełączenie skali" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Przejście do obecnego położenia" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Przełączenie na widok mapy" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Przełączenie na widok satelitarny" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otwarcie warstwy figur" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Otwórz warstwę figur…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Włączenie usług położenia umożliwia odnalezienie bieżącego położenia" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anuluj" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ustawienia położenia" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Ustaw konto serwisu OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Wyeksportuj jako obraz" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "O programie" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Przechodzi do obecnego położenia" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Wybiera rodzaj mapy" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Pomniejsza" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Powiększa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Włącza planowanie trasy" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Włącza ulubione" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Drukuje trasę" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapy są w trybie offline." + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Nie wykryto połączenia z Internetem, które jest potrzebne do prawidłowego " +"działania Map." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Proszę sprawdzić ustawienia połączenia oraz pośrednika." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaje do nowej trasy" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Udostępnia położenie" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Oznacza jako ulubione" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Melduje w tym miejscu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto serwisu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Zalogowanie umożliwia modyfikowanie " +"map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Można pomóc ulepszyć mapę za pomocą\n" +"konta serwisu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Hasło" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Zaloguj" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Brak konta?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"To nie zadziałało. Proszę spróbować ponownie lub przejść do serwisu\n" +"OpenStreetMap, aby przywrócić hasło." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kod weryfikacyjny się nie zgadza. Proszę spróbować ponownie." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Proszę podać kod weryfikacji widoczny powyżej" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Weryfikuj" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Zalogowano" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Konto serwisu OpenStreetMap jest aktywne." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Wyloguj" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numer domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kod pocztowy" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miasto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brak" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentarz" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmiany mapy będą widoczne na wszystkich mapach\n" +"używających danych serwisu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Ostatnio używane" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modyfikacja w serwisie OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dalej" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modyfikuje w serwisie OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Wyświetla więcej informacji" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Brak wyników" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Przeciągnięcie zmienia kolejność trasy" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otwarcie położenia" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Skopiuj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Wyślij do…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otwórz" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Przełącza widoczne" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Wyszukiwanie trasy za pomocą oprogramowania GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Trasy transportu publicznego są dostarczane przez zewnętrzne serwisy.\n" +"Projekt GNOME nie gwarantuje prawidłowości wyświetlanych rozkładów.\n" +"Proszę zauważyć, że część dostawców może nie podawać wszystkich dostępnych\n" +"środków transportu, np. krajowy dostawca może nie podawać lotów, a lokalny\n" +"może nie podawać pociągów regionalnych.\n" +"Widoczne nazwy i marki są zastrzeżonymi znakami towarowymi ich właścicieli." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Wyświetl więcej wyników" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ukrywa przystanki pośrednie i informacje" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Wyświetla przystanki pośrednie i informacje" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Wyjście teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Wyjście przed" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Przybycie przed" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Wyświetlanie" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramwaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Pociągi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Promy" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Loty" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Obecne położenie" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Należy powiększyć, aby dodać położenie." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Powiększ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Odnalezienie struktury kafli w katalogu się nie powiodło" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Przetworzenie dokumentu XML się nie powiodło" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Brak wymaganych atrybutów" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nie można odnaleźć elementu OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Ścieżka do lokalnej struktury katalogów kafli" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Wyświetla wersję programu" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignoruje dostępność sieci" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Wybór konta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Wczytywanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Wybór miejsca" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Facebook. Proszę " +"wybrać miejsce z listy." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Foursquare. Proszę " +"wybrać miejsce z listy." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Zameldowanie w „%s”" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Można napisać wiadomość związaną z zameldowaniem się w „%s”." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Wystąpił błąd" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nie odnaleziono „%s” w serwisie społecznościowym" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "W tym położeniu nie odnaleziono odpowiedniego miejsca do zameldowania" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uwierzytelnienie wygasło. Proszę otworzyć Konta online, aby zalogować się " +"lub włączyć to konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nic tu nie odnaleziono." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Dodano położenie do mapy. Proszę zauważyć, że może minąć trochę czasu, zanim " +"pojawi się ono na mapie i w wynikach wyszukiwania." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa dla %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "System plików jest tylko do odczytu" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Brak uprawnień do zapisywania w tym miejscu" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalog nie istnieje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie podano nazwy pliku" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie można wyeksportować widoku" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nieprawidłowe współrzędne" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "błąd przetwarzania" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nieznana geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Żądanie trasy się nie powiodło." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Nie odnaleziono żadnej trasy." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Wszystkie pliki warstw" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Połączenie z usługą położenia się nie powiodło" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Piotr Drąg , 2013-2020\n" +"Paweł Żołnowski , 2014-2015\n" +"Aviary.pl , 2013-2020" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Mapy dla środowiska GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011-2019 Red Hat, Inc. i autorzy Map GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dane mapy autorstwa %s i współtwórców" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa dostarczana przez %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Funkcja wyszukiwania dostarczana przez %s za pomocą %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Typ pliku jest nieobsługiwany" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Otwarcie warstwy się nie powiodło" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Otwarcie adresu GeoURI się nie powiodło" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Niepoprawna nazwa użytkownika lub hasło" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Powodzenie" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Błędne żądanie" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nie odnaleziono obiektu" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, ktoś inny właśnie zmodyfikował obiekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Usunięto obiekt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Droga lub związek odnosi się do nieistniejących elementów potomnych" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nazwa" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficjalna nazwa. Zwykle pojawia się na znakach." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Strona WWW" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficjalna strona WWW. Proszę używać najbardziej podstawowej formy adresu " +"URL, tzn. „http://example.com” zamiast „http://example.com/index.html”." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numer telefonu. Proszę używać formatu międzynarodowego, zaczynając znakiem " +"„+”. Proszę przestrzegać lokalnych praw do prywatności, zwłaszcza w stosunku " +"do prywatnych numerów telefonów." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Używany format powinien zawierać kod języka i tytuł artykułu, np. „pl:Tytuł " +"artykułu”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Godziny otwarcia" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" +"Więcej informacji o formacie znajduje się pod odnośnikiem na etykiecie." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Liczba mieszkańców" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Wysokość" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Wyniesienie (wysokość ponad poziomem morza) miejsca w metrach." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Dostęp dla osób na wózku" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Tak" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ograniczony" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Specjalnie zaprojektowany" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Dostęp do Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Przewodowy" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Na miejscu" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Obsługa" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religia" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizm" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddyzm" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Chrześcijaństwo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucjanizm" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Dźinizm" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizm" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Wiele religii" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pogaństwo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizm" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scjentologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintō" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhizm" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spirytualizm" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizm" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Uniwersalizm unitariański" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jazydyzm" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratusztrianizm" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Uwaga" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Używane do informowania innych twórców map o nieoczywistych informacjach " +"o elemencie, intencjach autora przy jego tworzeniu lub wskazówkach na dalsze " +"ulepszenia." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodanie do serwisu OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Wybór typu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotowe" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Miejsce bez nazwy" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Liczba mieszkańców:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Wysokość:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Godziny otwarcia:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Dostęp do Internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religia:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalety:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Dostęp dla osób na wózku:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Przetworzenie adresu URI Geo się nie powiodło" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "tak" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ograniczony" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nie" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "specjalnie zaprojektowany" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Nie odnaleziono tego miejsca w serwisie OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Adres URL serwisu OpenStreetMap jest nieprawidłowy" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Współrzędne w adresie URL są nieprawidłowe" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Nieobsługiwany adres URL" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Z %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Wczytywanie mapy do wydrukowania" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Można przerwać drukowanie, jeśli trwa to za długo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Przerwij drukowanie" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaje położenie pośrednie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Usuwa położenie pośrednie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Odwraca trasę" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s do programu %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Otwarcie adresu URI się nie powiodło" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otwórz za pomocą „%s”" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "wczytanie pliku się nie powiodło" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Przybliżony czas: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Trasy dostarczane przez %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Początek w: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Początek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Przejście %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Przybycie do: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Przybycie" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wyświetla wskazówki" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ukrywa wskazówki" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Wczytaj wcześniejsze możliwości" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Wczytaj późniejsze możliwości" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nie odnaleziono wcześniejszych możliwości." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nie odnaleziono późniejszych możliwości." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Nie odnaleziono rozkładu jazdy dla tej trasy." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Nie odnaleziono dostawcy dla tej trasy." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s-%s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuta" +msgstr[1] "%d minuty" +msgstr[2] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d godzina" +msgstr[1] "%d godziny" +msgstr[2] "%d godzin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d∶%02d godzina" +msgstr[1] "%d∶%02d godziny" +msgstr[2] "%d∶%02d godzin" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "całą dobę" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od świtu do zmierzchu" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "codziennie" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "dni ustawowo wolne od pracy" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "wakacje/ferie szkolne" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "zamknięte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "przewodowy" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "na miejscu" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "obsługa" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Dokładność: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nieznana" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Dokładna" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f godz." + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Kontynuuj na: %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Kontynuuj" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skręć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Skręć w lewo" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skręć lekko w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Skręć lekko w lewo" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skręć gwałtownie w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Skręć gwałtownie w lewo" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skręć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Skręć w prawo" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skręć lekko w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Skręć lekko w prawo" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skręć gwałtownie w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Skręć gwałtownie w prawo" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rondzie zjedź w: %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rondzie zjedź do: %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Wjedź na rondo" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Wejdź do windy i wysiądź na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Wejdź do windy" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Zawróć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Zawróć w lewo" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Zawróć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Zawróć w prawo" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..50754d12 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,1267 @@ +# Portuguese translation for gnome-maps. +# Copyright © 2013, 2014 gnome-maps +# This file is distributed under the same license as the gnome-maps package. +# António Lima , 2013. +# Duarte Loreto , 2014. +# Tiago Santos , 2014 - 2016. +# Pedro Albuquerque , 2015. +# Bruno Ramalhete , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2016-07-08 22:16+0000\n" +"PO-Revision-Date: 2016-07-13 17:54+0100\n" +"Last-Translator: Tiago Santos \n" +"Language-Team: Português \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\\n;\n" +"X-Generator: Poedit 1.5.4\n" +"X-Language: pt_PT\n" +"X-Source-Language: C\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Encontre lugares em todo o mundo" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"O Mapas dá-lhe acesso a mapas de todo o mundo. Permite que encontre " +"rapidamente o local que procura, procurando por uma cidade ou rua, ou " +"localizando um sítio para um encontro com um amigo." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A aplicação Mapas utiliza a base de dados colaborativa OpenStreetMap, " +"construída por centenas de milhares de pessoas por todo o globo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Procure por tipos de localizações específicas, tais como “Bares perto da Rua " +"Augusta, Lisboa” ou “Hotéis perto de Alexanderplatz, Berlin”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:420 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Uma aplicação simples para visualização de mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permite que a sua localização seja colocada no mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "última localização vista" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localização vista." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Tamanho da janela" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posição da janela" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posição da janela (X e Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estado de maximização da janela" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de procura" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de procura geocode." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Número de locais recentes a armazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Número de locais recentemente visitados a armazenar." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes a armazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas recentemente visitadas a armazenar." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Definição de privacidade para o Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última definição de privacidade usada para o Facebook. Valores possíveis são " +"TODOS, AMIGOS_DE_AMIGOS, TODOS_AMIGOS ou EU." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Definição de privacidade para o Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última definição de privacidade usada para o Foursquare. Valores possíveis " +"são: público, seguidores ou privado." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Emissão do Foursquare para o Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como publicação na conta do Facebook " +"associada à conta Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Emissão do Foursquare para o Twitter" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como tweet na conta do Twitter associada " +"à conta Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de utilizador OpenStreetMap ou endereço de email" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o utilizador iniciou sessão para editar dados OpenStreetMap." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar conta OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Atalhos de teclado" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Sobre" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Sair" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilidade" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar no Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar no Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "Inscrever" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Todos" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Só amigos" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Só eu" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Público" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidores" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privado" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "O que há aqui?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copiar localização" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exportar como imagem" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Adicionar conta OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exportar vista" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exportar" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Incluir rota e marcadores" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar Atalhos" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Procurar" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Alternar o programador de rotas" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir rota" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Alternar escala" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir para a localização atual" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Carregar camada de mapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Ligue os serviços de localização para saber onde está" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Definições de local" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Ir para a localização atual" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Escolher o tipo de mapa" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Alternar o programador de rotas" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Alternar favoritos" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "Imprimir rota" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "O Mapas está offline!" + +#: ../data/ui/main-window.ui.h:8 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"O Mapas precisa de uma ligação à Internet ativa para funcionar corretamente, " +"mas não encontrou nenhuma." + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "Verifique a sua ligação e definições de proxy." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Adicionar a nova rota" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Abrir com outra aplicação" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Inscrever aqui" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Conta OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Inicie sessão para editar mapas" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa, usando\n" +"uma conta OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Email" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Senha" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Inicie sessão" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "Não tem uma conta?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, não resultou. Por favor, tente novamente ou visite\n" +"OpenStreetMap para repor a sua senha." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "O código de verificação não correspondeu, por favor tente novamente." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Insira o código de verificação mostrado acima" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verificar" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sessão iniciada" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "A sua conta OpenStreetMap está ativa." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Terminar sessão" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Estrada" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Número da casa" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Cidade" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipo" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Nenhum" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Adicionar campo" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentário" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +" OpenStreetMap data." +msgstr "" +"Alterações ao mapa serão visíveis em todos os mapas\n" +" em que utilizar dados do OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Recentemente utilizado" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Cancelar" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:471 +msgid "Next" +msgstr "Seguinte" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "Mostrar mais informação" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Prima Enter para procurar" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "Arraste para alterar a ordem da rota" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Abrir localização" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Abrir" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Abrir camada" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "Alternar visível" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Procura de rota por GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Mostrar mais resultados" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "Localização atual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Reduzir para adicionar localização!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "OK" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falha ao localizar estrutura de mosaico na pasta" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falha ao processar documento XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Atributos requeridos em falta" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Impossível localizar elemento OSM" + +#: ../src/application.js:101 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para a estrutura de pasta local de mosaicos" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "A carregar" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Selecione um local" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Facebook. Por favor " +"selecione outro na lista." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Foursquare. Por " +"favor selecione outro na lista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Inscrever-se em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para se inscrever em %s." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:508 +msgid "An error has occurred" +msgstr "Ocorreu um erro" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "Impossível encontrar \"%s\" no serviço social" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossível encontrar um local adequado para inscrição nesta localização" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor, abra as Contas online para iniciar " +"sessão e ativar esta conta" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "Rota daqui" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "Adicionar destino" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "Rota para aqui" + +#: ../src/contextMenu.js:130 +msgid "Nothing found here!" +msgstr "Nada encontrado aqui!" + +#: ../src/contextMenu.js:187 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Localização foi adicionada ao mapa, note que pode demorar um pouco antes de " +"mostrar no mapa e nos resultados pesquisados." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é só de leitura" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Não tem permissão para gravar aí" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "A pasta não existe" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Sem nome de ficheiro" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Impossível exportar a vista" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenadas inválidas" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "erro de processamento" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de camada" + +#: ../src/mainWindow.js:366 +msgid "Failed to connect to location service" +msgstr "Falha ao ligar ao serviço de localização" + +#: ../src/mainWindow.js:418 +msgid "translator-credits" +msgstr "" +"António Lima \n" +"Bruno Ramalhete \n" +"Pedro Albuquerque \n" +"Tiago Santos " + +#: ../src/mainWindow.js:421 +msgid "A map application for GNOME" +msgstr "Uma aplicação de mapas para o GNOME" + +#: ../src/mapView.js:254 +msgid "File type is not supported" +msgstr "Tipo de ficheiro não suportado" + +#: ../src/mapView.js:261 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: ../src/mapView.js:297 +msgid "Failed to open GeoURI" +msgstr "Falha ao abrir GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:443 +msgid "Incorrect user name or password" +msgstr "Utilizador ou senha incorretos" + +#: ../src/osmConnection.js:445 +msgid "Success" +msgstr "Sucesso" + +#: ../src/osmConnection.js:447 +msgid "Bad request" +msgstr "Mau pedido" + +#: ../src/osmConnection.js:449 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: ../src/osmConnection.js:451 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: ../src/osmConnection.js:453 +msgid "Object has been deleted" +msgstr "O objeto foi eliminado" + +#: ../src/osmConnection.js:455 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relação referem-se a filho não existente" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Nome" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece nos sinais." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Endereço" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:165 +msgid "Website" +msgstr "Website" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O website oficial. Tente utilizar a forma mais básica do URL p.ex. http://" +"exemplo.com em vez de http://exemplo.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Telefone" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Utilize o formato internacional, começando com o sinal " +"+. Tenha atenção às leis locais de privacidade, sobretudo para números de " +"telefone privados." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:171 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir um código de linguagem e um título de " +"artigo tal como \"pt:Título do artigo\"." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Veja a ligação na etiqueta para ajuda no formato." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "População" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Altitude" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Acesso para cadeiras de rodas" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +msgid "Yes" +msgstr "Sim" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "Não" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Limitado" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Designado" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Acesso à Internet." + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:341 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Ligado" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Serviço" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: ../src/osmEditDialog.js:339 +msgid "Select Type" +msgstr "Selecione tipo" + +#: ../src/osmEditDialog.js:457 +msgid "Done" +msgstr "Terminado" + +#: ../src/placeBubble.js:128 +msgid "Population:" +msgstr "População:" + +#: ../src/placeBubble.js:134 +msgid "Altitude:" +msgstr "Altitude:" + +#: ../src/placeBubble.js:139 +msgid "Opening hours:" +msgstr "Horário de funcionamento:" + +#: ../src/placeBubble.js:144 +msgid "Internet access:" +msgstr "Acesso de Internet:" + +#: ../src/placeBubble.js:149 +msgid "Wheelchair access:" +msgstr "Acesso para cadeiras de rodas:" + +#: ../src/placeBubble.js:155 ../src/placeBubble.js:159 +msgid "Phone:" +msgstr "Telefone:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Falha ao processar URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:330 +msgid "yes" +msgstr "sim" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:336 +msgid "no" +msgstr "não" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "designado" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s para %s" + +#: ../src/printOperation.js:47 +msgid "Loading map tiles for printing" +msgstr "A carregar telas de mapa para impressão." + +#: ../src/printOperation.js:48 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impressão se isto demorar demasiado" + +#: ../src/printOperation.js:50 +msgid "Abort printing" +msgstr "Abortar impressão" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Rota não encontrada." + +#: ../src/routeService.js:101 +msgid "Route request failed." +msgstr "Pedido de rota falhou." + +#: ../src/routeService.js:178 +msgid "Start!" +msgstr "Iniciar!" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "Falha ao abrir URI" + +#: ../src/shapeLayer.js:93 +msgid "failed to load file" +msgstr "falha ao carregar ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:208 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "24 horas" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "do nascer ao pôr do Sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s - %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s - %s - %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s - %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "todos os dias" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "feriados públicos" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "fechado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "ligado" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "serviço" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Desconhecida" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Exata" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f seg" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f ft" + +#~ msgid "Show help" +#~ msgstr "Mostrar ajuda" + +#~ msgid "Edit Location" +#~ msgstr "Editar localização" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso para deficientes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao processar ficheiro GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última localização conhecida e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última localização conhecida (latitude e longitude em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição da última localização conhecida do utilizador." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Se a última localização conhecida foi definida manualmente pelo " +#~ "utilizador ou não." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..a88044ed --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1959 @@ +# Brazilian Portuguese translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Georges Basile Stavracas Neto , 2013. +# Fábio Nogueira , 2016. +# Artur de Aquino Morais , 2016. +# Antonio Fernandes C. Neto , 2016. +# Gustavo Marques , 2016. +# Enrico Nicoletto , 2013-2016, 2018. +# Jamerson Tiossi , 2017. +# Bruno Lopes da Silva , 2018. +# Rafael Fontenelle , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-02-14 09:10-0300\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"X-Generator: Gtranslator 3.32.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapas" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontrar lugares ao redor do mundo" + +# O último 'ou' dá sentido de inclusão, pois ambos são opções válidas.--Enrico +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas oferece a você acesso rápido a mapas ao redor de todo o mundo. Permite " +"que você localize rapidamente o local que deseja encontrar através da " +"pesquisa por uma cidade ou rua e a encontrar um local para encontrar um " +"amigo(a)." + +# Contribuições pois os usuários inserem os dados no banco de dados e não criam as tabelas deste --Enrico. +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa o banco de dados colaborativo do OpenStreetMap, com contribuições " +"de centenas de milhares de pessoas ao redor do planeta." + +# Para assegurar a fidelidade do comando, a alternativa brasileira (Fernando de Noronha) foi pesquisada no serviço e por resultado satisfatório, acrescentada por mim neste aplicativo --Enrico +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Você também pode pesquisar por tipos específicos de localizações, como " +"“Praias perto de Fernando de Noronha” ou “Universidade perto de " +"Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Um simples aplicativo de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que sua localização seja mostrada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas do última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo do mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo do mapa para exibir (rua, aérea etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "A posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "O estado de janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de pesquisa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados da pesquisa por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas visitadas recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configurações de privacidade de check-in do Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultima configuração de privacidade de check-in usada no Facebook. Valores " +"possíveis são: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configurações de privacidade de check-in do quadrante" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultima configuração de privacidade de check-in do quadrante usada. Valores " +"possíveis são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Publicação no Facebook de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um postagem na conta " +"Facebook associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Publicação no Twitter de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um tweet na conta " +"Twitter associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuário do OpenStreetMap ou endereço de e-mail" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuário ingressou para editar dados do OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para rotas" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Postar no Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Postar no Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Fazer c_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Somente amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Somente eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota a partir daqui" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Adicionar destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que está aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar visão" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir rota e marcações" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pesquisa" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprime a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sai" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visão de mapa" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduz" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Alterna a escala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Muda para a visão de rua" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Muda para a visão aérea" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abre a camada" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Abrir camada…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Habilite o serviço de localização para encontrar sua localização" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurações de localização" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar conta do OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "A_talhos de teclado" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Sobre o Mapas" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Escolhe o tipo do mapa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Reduz" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Ativa favoritos" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Imprime rota" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necessita de uma conexão de internet ativa para funcionar " +"propriamente, mas nenhuma pode ser encontrada." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Verifique sua conexão e as configurações de proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Compartilhar localização" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Fazer check-in aqui" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ingresse para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa, usando uma\n" +"conta do OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senha" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Ingressar" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Você não tem uma conta?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, mas isto não funcionou. Tente novamente ou visite o OpenStreetMap " +"para reiniciar sua senha." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não combina, por gentileza, tente novamente." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Digite o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Ingressado" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Sua conta do OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Sair" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rua" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da residência" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações no aplicativo Mapas serão visíveis em\n" +"todos os mapas que usarem dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Próximo" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar mais informação" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste para alterar a ordem da rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Abrir camada" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Tornar visível" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pesquisa de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerários de rotas para trânsito público é fornecido por serviços\n" +"de terceiros.\n" +"GNOME não pode garantir que os itinerários e agendamentos mostrados estejam\n" +"corretos. Observe que alguns fornecedores podem não incluir todos os modos\n" +"de transporte disponíveis, por exemplo, um fornecedor nacional pode não\n" +"incluir companhias aéreas e um fornecedor local pode perder trens regionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar informações e paradas intermediárias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar informações e paradas intermediárias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sair agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sair por" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ônibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Bondes" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrô" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Balsas" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Localização atual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplie para adicionar uma localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falha ao pesquisar estrutura de blocos no diretório" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falha ao analisar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltando atributos necessários" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Não foi possível localizar elemento OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para um diretório local de estrutura de blocos" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Mostra a versão do programa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignora a disponibilidade de rede" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Carregando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Escolha um local" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas não conseguiu sua localização para dar check-in no Facebook. Por favor " +"selecione um local da lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas não consegue encontrar o local para dar check-in no Foursquare. Por " +"favor selecione um local da lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Fazer check-in em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para fazer check-in em %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Um erro foi encontrado" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Não foi possível localizar “%s” no serviço social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Não foi possível encontrar um local apropriado para fazer check-in nessa " +"localização" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor abra o Contas Online, para autenticar-se " +"e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada foi encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A localização foi adicionada ao mapa; note que pode levar um tempo antes " +"dela ser mostrada no mapa e em resultados de pesquisa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de arquivos é somente leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Você não possui permissão para salvar lá" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenhum nome de arquivo foi especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Não foi possível exportar a visão" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada inválida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro de análise" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Solicitação da rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Nenhuma rota encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Começar!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Todas os arquivos de camadas" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Falha ao conectar ao serviço de localização" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Enrico Nicoletto , 2013-2016, 2018.\n" +"Fábio Nogueira , 2016.\n" +"Rafael Fontenelle , 2013-2018." + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Um aplicativo de mapas para o GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e os autores do GNOME Mapas" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados de mapas por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blocos de mapas fornecidos por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pesquisa fornecida por %s usando %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Não há suporte ao tipo de arquivo" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Falha ao analisar o URI geo" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome de usuário ou senha incorretos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitação inválida" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O objeto foi excluído" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relacionamento faz referência a filho não existente" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece em sinais." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Site" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O site oficial. Tente usar o formulário mais básico de um URL i.e. http://" +"exemplo.com.br em vez de http://exemplo.com.br/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Use o formato internacional, começando com um sinal de " +"+. Cuidado com as leis de privacidade locais, especialmente para números de " +"telefone privado." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir o código do idioma e o título do artigo " +"como “pt:Título do artigo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Veja o link na etiqueta para obter ajuda sobre o formato." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acesso a cadeirantes" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acesso à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cabeada" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islã" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitário Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vodu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Banheiros" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação usada para informar outros mapeadores sobre informações não " +"óbvias sobre um elemento, a intenção do autor ao criá-la ou dicas para " +"melhorias posteriores." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Selecione um tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Concluído" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Lugar sem nome" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "População:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horário de funcionamento:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acesso à Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religião:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Banheiros:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acesso a cadeirantes:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefone:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Falha ao analisar o URI geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sim" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "não" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar não encontrado no OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "A URL do OpenStreetMap não é válida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL não são válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Não há suporte à URL" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s até %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Carregando mosaicos de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Você pode abortar a impressão se isso leva muito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adiciona via localização" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via localização" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rota reversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s para %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Falha ao abrir a URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "falha ao carregar arquivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerários fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Início em %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Início" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegada em %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Chegada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenhuma alternativa anterior encontrada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenhuma alternativa posterior encontrada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário localizado para essa rota." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Nenhum provedor localizado para essa rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "em volta do relógio" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "do nascer até o pôr do sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "todo dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "feriados públicos" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "não abrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cabeada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviço" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Desconhecido" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exato" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire ligeiramente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Vire ligeiramente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire acentuadamente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Vire acentuadamente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire ligeiramente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Vire ligeiramente à direita" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire acentuadamente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Vire acentuadamente à direita" + +# %s aqui é um número -- Rafael +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotatória, pegue a %sª saída" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotatória, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Pegue a rotatória" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Pegue o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Pegue o elevador" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça um retorno em U à esquerda para %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Faça um retorno em U à esquerda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça um retorno em U à direita para %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Faça um retorno em U à direita" + +#~ msgid "Add destination" +#~ msgstr "Adicionar destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Pesquisa de rota por OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outro programa" + +#~ msgid "Press enter to search" +#~ msgstr "Pressione enter para pesquisar" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "OK" +#~ msgstr "OK" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abre a camada…" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada do mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir camada" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mil" + +#~ msgid "%f ft" +#~ msgstr "%f pés" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Wlan" +#~ msgstr "WLAN" + +#~ msgid "wlan" +#~ msgstr "wlan" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao analisar arquivo GeoJSON" + +#~ msgid "Country code: %s" +#~ msgstr "Código do país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso a cadeirantes: %s" + +#~ msgid "_Share" +#~ msgstr "_Compartilhar" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Último localização conhecido e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Último localização conhecido (latitude e longitude, em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição do último localização conhecido do usuário." + +#~ msgid "User set last known location" +#~ msgstr "O usuário definiu o último local conhecido" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "O último local conhecido foi definido manualmente pelo usuário." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Para" + +#~ msgid "From" +#~ msgstr "De" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastreia a localização do usuário." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Ciclismo" + +#~ msgid "Transit" +#~ msgstr "Trânsito" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 00000000..0c12f27e --- /dev/null +++ b/po/ro.po @@ -0,0 +1,1728 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mada-Gabriela , 2018. +# Daniel Șerbănescu , 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-02 06:11+0000\n" +"PO-Revision-Date: 2019-08-03 13:52+0200\n" +"Last-Translator: Daniel Șerbănescu \n" +"Language-Team: Gnome Romanian Translation Team\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2);\n" +"X-Generator: Poedit 2.2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Hărți GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Găsește locații din întreaga lume" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Hărți vă oferă acces rapid la hărți din întreaga lume. Vă permite să găsiți " +"rapid locul pe care îl căutați, să căutați un oraș sau o stradă sau să " +"localizați un loc unde să întâlniți un prieten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Hărți colaborează cu OpenStreetMap folosind o întreagă bază de date, " +"realizată de sute de mii de oameni de pe întregul pământ." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Puteți de asemenea să căutați anumite tipuri de locații, precum „Gara " +"Lipscani, București” sau „Acces Wi-Fi lângă Dumbrava, Sibiu”." + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "Proiectul GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Hărți" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "O aplicație simplă cu hărți" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Hărți;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite ca locația curentă să fie arătată pe hartă." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "locația vizualizată ultima dată" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonatele locației vizualizate ultima dată." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tip de hartă" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipul de hartă de afișat (stradală, aeriană, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensiunea ferestrei" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensiunea ferestrei (lățime și înălțime)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poziția ferestrei" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poziția ferestrei (X si Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fereastră maximizată" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Starea de maximizare a ferestrei" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numărul maxim de rezultate pentru căutare" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Număr maxim de rezultate din căutarea după coordonate geografice." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Număr de locuri recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Număr de locuri vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Număr de rute recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Număr de rute vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Facebook utilizată cel " +"mai recent. Valorile posibile sunt: TOATĂ_LUMEA, PRIETENII_PRIETENILOR, " +"TOȚI_PRIETENII sau DE_SINE." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Foursquare utilizată " +"cel mai recent. Valorile posibile sunt: public, cei care urmăresc sau privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difuzarea pe Facebook a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un mesaj pe " +"contul Facebook asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difuzarea pe Twitter a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un tweet pe " +"contul Twitter asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nume de utilizator OpenStreetMap sau adresă de e-mail" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indică dacă utilizatorul s-a conectat pentru editarea datelor OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Ultimul tip de transport utilizat pentru drum" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vizibilitate" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Postează pe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Postează pe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anulează" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Înr_egistrează" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Toată lumea" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prietenii prietenilor" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Doar prietenii" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Doar eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Urmăritori" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ce este aici?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Copiază locația" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Exportă ca imagine" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportă vizualizarea" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportă" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includeți ruta și marcajele" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Arată scurtăturile" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Caută" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ieșire" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vizualizarea hărții" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Mărește" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Micșorează" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Comută scara" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Schimbă la vizualizarea stradală" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Schimbă la vederea aeriană" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Deschide stratul formei" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Deschide stratul formei…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Pornește serviciile de localizare pentru a vă găsi locația" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anulează" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurări de locație" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Configurează contul OpenStreetMap" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtături de tastatură" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Despre Hărți" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Alegeți tipul hărții" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Micșorează" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Mărește" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Comută preferatele" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Tipărește ruta" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Hărți este offline!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Hărți necesită o conexiune la internet pentru a funcționa în mod " +"corespunzător, dar nicio conexiune nu a fost găsită." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Verificați conexiunile și configurările proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Adaugă la ruta nouă" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partajează locația" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marchează ca favorit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Înregistrați-vă aici" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cont OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Autentificați-vă pentru a edita " +"hărți" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajutați la îmbunătățirea hărții, utilizând un\n" +"cont OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parolă" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Autentificare" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Nu aveți un cont?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nu a funcționat. Încercați din nou, sau vizitați\n" +"OpenStreetMap pentru a restabili parola." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Codul de verificare nu se potrivește, încercați din nou." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Introduceți codul de verificare arătat mai sus" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifică" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Autentificat" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Contul dumneavoastră OpenStreetMap este activ." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Deautentificare" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Stradă" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Număr casă" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Cod poștal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Oraș" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tip" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Niciunul" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adaugă un câmp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentariu" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Schimbările de hartă vor fi vizibile pe toate hărțile\n" +"care utilizează date OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Folosite recent" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editare pe OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Următorul" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editează pe OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Arată mai multe informații" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Niciun rezultat găsit" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trageți pentru a schimba ordinea rutei" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Deschide locația" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiază" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Trimite la…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Deschide stratul formei" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Deschide" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Comută vizibilitatea" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Caută rute prin GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Căută rute prin OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutarea itinerariilor pentru transportul public este furnizată de GNOME\n" +"utilizând datele de orar obținute de la companiile sau agențiile de " +"transport.\n" +"Companiile și agențiile nu pot fi trase la răspundere pentru rezultatele " +"arătate.\n" +"GNOME nu poate garanta corectitudinea itinerariilor și orarelor arătate.\n" +"Numele și mărcile arătate trebuie să fie considerate ca mărci înregistrate " +"când se aplică." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Arată mai multe rezultate" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ascunde informațiile și opririle intermediare" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Arată informațiile și opririle intermediare" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pleacă acum" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pleacă până la" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Sosește până la" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Arată" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuze" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaie" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenuri" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrouri" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feriboturi" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Locația curentă" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Acuratețe: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Măriți pentru a adăuga locația!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Mărește" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nu s-a putut găsi structura de fragmente în director" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nu s-a putut analiza documentul XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Lipsesc atributele necesare" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nu s-a putut găsi elementul OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "O cale către o structură locală de directoare pentru fragmente" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Arată versiunea programului" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selectați un cont" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Se încarcă" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selectați un loc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsi locul pentru înregistrarea cu Facebook. Selectați unul " +"din această listă." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsit locul pentru înregistrarea cu Foursquare. Selectați " +"unul din această listă." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Înregistează la %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrieți un mesaj opțional pentru înregistrare la %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "A apărut o eroare" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nu s-a putut găsi „%s” la serviciul social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Nu s-a putut găsit un loc potrivit pentru înregistrare la această locație" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Certificările au expirat, deschideți conturi online pentru a vă autentifica " +"și activa contul acesta" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Rută de aici" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Adaugă o destinație" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Rută până aici" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Nimic nu a fost găsit aici!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locația a fost adăugată pe hartă, rețineți că poate dura ceva timp înainte " +"de a fi arătată pe hartă și în rezultatele căutării." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Hărți la %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistemul de fișiere este numai pentru citire" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nu aveți permisiunea de a salva acolo" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Directorul nu există" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nu este specificat nici un nume de fișier" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nu se poate exporta vizualizarea" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordonate nevalide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "eroare de parsare" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometrie necunoscută" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Cererea rutei a eșuat." + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Nu s-au găsit rute." + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "Pornește!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Toate fișierele strat" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "Nu s-a reușit conectarea la serviciul de localizare" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "" +"Mădălin Șerbănescu , 2018\n" +"Florentina Mușat , 2018, 2019" + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "O aplicație cu hărți pentru GNOME" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Drepturi de autor © 2011 – 2019 Red Hat, Inc. și autorii GNOME Hărți" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datele hărții ale %s și contribuitorii" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Fragmente de hărți furnizate de %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Căutare furnizată de %s utilizând %s" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "Tipul de fișier nu este suportat" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "Nu s-a putut deschide stratul" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "Nu s-a putut deschide GeoURI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Nu s-au găsit date în orar pentru această rută." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Cerere greșită" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Obiectul nu a fost găsit" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, altcineva tocmai a modificat obiectul" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Obiectul a fost șters" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Calea sau relația se referă la copii care nu există" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nume" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Numele oficial. Acesta este, de obicei, numele real." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresă" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Pagina web oficială. Încercați să utilizați forma cea mai de bază a unui URL " +"de ex: http://example.com în loc de http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Număr de telefon. Utilizați formatul internațional, care începe cu un semn " +"+. Aveți grijă la legile de confidențialitate locale, în special pentru " +"numerele de telefon private." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatul utilizat trebuie să includă codul de limbă și titlul articolului ca " +"„en:titlu de articol”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Ore de deschidere" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Consultați legătura din etichetă pentru ajutor cu formatul." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populație" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevația (înălțimea deasupra nivelului mării) unui punct în metri." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acces pentru scaun cu rotile" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nu" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Desemnat" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acces la internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cu fir" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Serviciu" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Creștinism" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Iudaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Religii multiple" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Păgânism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalism unitarian" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalete" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Notiță" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informații utilizate pentru a informa alți utilizatori de hărți despre " +"informațiile care nu sunt evidente despre un element, intenția autorului în " +"timpul creării acestuia, sau indicii pentru îmbunătățiri ulterioare." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Selectați tipul" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gata" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Loc nedenumit" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populație:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudine:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Ore de deschidere:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acces la internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religie:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalete:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acces pentru scaun cu rotile:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Număr de telefon:" + +#: src/placeEntry.js:205 +msgid "Failed to parse Geo URI" +msgstr "Nu s-a putut parsa URI-ul Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nu" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "desemnat" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Locul nu a fost găsit în OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL-ul de OpenStreetMap nu este valid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coordonatele din URL nu sunt valide" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL-ul nu este suportat" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De la %s la %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Se încarcă fragmentele de hartă pentru tipărire" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puteți să anulați tipărirea dacă durează prea mult" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Despre tipărire" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adaugă via locație" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Elimină via locație" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inversează ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adaugă %s la %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Nu s-a putut deschide URI-ul" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Deschide cu %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nu s-a putut încărca fișierul" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp estimat: %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Începe la %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Începe" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Plimbare pe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Sosește la %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Sosește" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Arată instrucțiunile de plimbare" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ascunde instrucțiunile de plimbare" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Încarcă alternativele de dinainte" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Încarcă alternativele de mai târziu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nu s-au găsit alternative anterioare." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nu s-au găsit alternative de mai târziu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minute" +msgstr[2] "%d de minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d oră" +msgstr[1] "%d ore" +msgstr[2] "%d de ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d oră" +msgstr[1] "%d:%02d ore" +msgstr[2] "%d:%02d de ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tot timpul" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de la răsărit la apus" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "în fiecare zi" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "vacanțe publice" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacanțe școlare" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nu este deschis" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cu fir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviciu" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Necunoscut" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "Exact" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f o" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Deschide cu o altă aplicație" + +#~ msgid "Press enter to search" +#~ msgstr "Apasă Enter pentru a căuta" + +#~ msgid "Quit" +#~ msgstr "Ieșire" + +#~ msgid "OK" +#~ msgstr "OK" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..1a0f0532 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1685 @@ +# Russian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mihail Gurin , 2014, 2015. +# Ivan Komaritsyn , 2015. +# Yuri Myasoedov , 2013, 2014, 2015. +# Stas Solovey , 2014, 2015, 2016. +# Роман Верменко , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-01-14 19:43+0000\n" +"PO-Revision-Date: 2019-02-27 22:10+0300\n" +"Last-Translator: Stas Solovey \n" +"Language-Team: русский \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.2.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карты GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Поиск местоположений по всему миру" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Приложение «Карты» позволяет получить быстрый доступ к картам по всему миру, " +"находить места в городах, на улицах или указывать места для встречи с " +"друзьями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карты используют базу данных OpenStreetMap, созданную сотнями тысяч людей по " +"всеми миру." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Вы также можете искать определённые места, например «Паб, Невский проспект» " +"или «Гостиницы около Александерплац, Берлин»." + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/mainWindow.js:500 +msgid "Maps" +msgstr "Карты" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Простое картографическое приложение" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карты;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Позволяет показывать на карте ваше местоположение." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последнее просмотренное местоположение" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координаты последнего просмотренного местоположения." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Размер окна" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Размер окна (ширина и высота)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Положение окна" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Положение окна (X, Y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Окно развёрнуто" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Режим развёрнутого окна" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Максимальное количество результатов поиска" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальное количество результатов поиска по поиску геокода." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Количество последних сохранённых мест" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Количество сохранённых недавно посещённых мест." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Количество последних сохранённых маршрутов" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Количество сохранённых недавно использовавшихся маршрутов." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Кто может видеть публикацию в Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последняя использованная настройка. Возможные значения: EVERYONE (все), " +"FRIEND_OF_FRIENDS (друзья друзей), ALL_FRIENDS (друзья) и SELF (только я)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Кто может видеть публикацию в Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последняя использованная настройка. Возможные значения: public, followers " +"или private." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Трансляция из Foursquare в Facebook" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Facebook." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Трансляция из Foursquare в Twitter" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Twitter." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Имя или адрес эл. почты пользователя OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Указывает, выполнил ли пользователь вход для редактирования данных " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Последний тип транспорта, использовавшийся для маршрута" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видимость" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Опубликовать в Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Опубликовать в Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Отменить" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "О_тметиться" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Друзья друзей" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Только друзья" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Только я" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Подписчики" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Те, кто в этом месте" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Что здесь?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Копировать местоположение" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Экспортировать как изображение" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Экспортировать просматриваемую область" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Экспортировать" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Включить маршрут и маркеры" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Основные" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показать комбинации клавиш" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Поиск" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Печать маршрута" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Завершить" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Просмотр карты" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приблизить" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалить" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Включить или выключить масштаб" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Переключиться на просмотр улиц" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Переключиться на вид сверху" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Открыть слой" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "Открыть слой фигур…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Включите сервисы местоположения для определения вашей позиции" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Отменить" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметры местоположения" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Настроить учётную запись OpenStreetMap" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "О приложении" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Выберите тип карты" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Отдалить" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Приблизить" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Включить или выключить избранные места" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Печать маршрута" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Приложение работает в автономном режиме!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Приложению требуется соединение с Интернетом, но оно отсутствует." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Проверьте настройки прокси и соединения." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Добавить к новому маршруту" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Открыть в другом приложении" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Добавить в избранное" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Отметиться здесь" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Учётная запись OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Войдите, чтобы редактировать карты" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогите улучшить карту, используя\n" +"учётную запись OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Электронная почта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Войти" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Нет учётной записи?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Неверное имя пользователя или пароль. Попробуйте снова или посетите\n" +"OpenStreetMap для сброса пароля." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Проверочный код не совпадает, попробуйте снова." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Введите показанный выше проверочный код" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Проверить" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Авторизован" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ваша учётная запись OpenStreetMap активна." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Выйти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер дома" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Почтовый индекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Город" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Отсутствует" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Добавить поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Комментарий" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Изменения, сделанных в картах, будут доступны на всех картах,\n" +"использующие данные OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно использованные" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Далее" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Показать подробную информацию" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Нажмите Enter для поиска" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Результатов не найдено" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перетащите, чтобы изменить порядок маршрута" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Открыть местоположение" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Открыть" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Открыть слой фигур" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Включить или выключить видимый" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Поиск маршрута с помощью GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Поиск маршрута с помощью OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Схемы маршрутов общественного транспорта, предоставленные GNOME,\n" +"получены на основе расписаний транспортных компаний и агентств.\n" +"Компании и агентства не несут ответственности за показанные результаты.\n" +"GNOME не может гарантировать правильность показанных маршрутов и " +"расписаний.\n" +"Имена и бренды считаются зарегистрированными торговыми знаками, когда это " +"применимо." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Показать больше результатов" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Скрывать промежуточные остановки и информацию" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показывать промежуточные остановки и информацию" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Отправляются сейчас" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Отправляются" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибывают" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показывать" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобусы" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваи" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Поезда" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Переправы" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Текущее местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Точность: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Приблизить, чтобы добавить местоположение!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Приблизить" + +# сомнительно, требует проверки +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не удалось найти плиточную структуру в каталоге" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не удалось разобрать документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Пропущены обязательные атрибуты" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Не удалось найти элемент OSM" + +# сомнительно, требует проверки +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Путь к локальному каталогу плиточной структуры" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "Показать версию программы" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Выберите учётную запись" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Загрузка" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Выберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Facebook. Выберите одно из списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Foursquare. Выберите одно из " +"списка." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Отметиться в %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите необязательное сообщение для отметки в %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Произошла ошибка" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не удалось найти «%s» в социальной сети" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не удалось найти подходящее место, чтобы отметиться здесь" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Истекли полномочия, откройте Сетевые учётные записи, чтобы войти и " +"активировать эту учётную запись" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Маршрут отсюда" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Добавить пункт назначения" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Маршрут сюда" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Здесь ничего не найдено!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположение добавлено на карту. Скоро оно появится на карте и будет " +"выводиться в результатах поиска." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карты на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файловая система доступна только для чтения" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Отсутствуют права на запись в данную директорию" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не существует" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не указано имя файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не удалось экспортировать просматриваемую область" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неверные координаты" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ошибка разбора" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "неизвестная геометрия" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Сбой при запросе маршрута." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Маршрут не найден." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Старт!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Все файлы слоёв" + +#: src/mainWindow.js:433 +msgid "Failed to connect to location service" +msgstr "Не удалось подключиться к службе местоположения" + +#: src/mainWindow.js:498 +msgid "translator-credits" +msgstr "" +"Yuri Myasoedov , 2013, 2014.\n" +"Stas Solovey , 2014-2019." + +#: src/mainWindow.js:501 +msgid "A map application for GNOME" +msgstr "Приложение карт для GNOME" + +#: src/mainWindow.js:512 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Авторское право © 2011 – 2019 Red Hat, Inc. и авторы GNOME Maps" + +#: src/mainWindow.js:531 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Картографические данные %s и участников" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:547 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Картографические слои предоставлены %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Тип файла не поддерживается" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Не удалось открыть слой" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Не удалось открыть геолокационный URI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Для этого маршрута не найдено расписаний." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неверное имя пользователя или пароль" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успешно" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Неверный запрос" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Объект не найден" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфликт: кто-то ещё только что изменил объект" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Объект был удалён" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Путь или связь ссылается на несуществующего потомка" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Имя" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Официальное название. Обычно то, что написано на знаках." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адрес" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб-сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Официальный веб-сайт. Рекомендуется использовать URL в наиболее общей форме, " +"например «http://example.com» вместо «http://example.com/index.html»." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефона. Используйте международный формат, начинающийся со знака «+»." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Википедия" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Используемый формат должен содержать код языка и заголовок статьи, например " +"«ru:Заголовок статьи»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Часы работы" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Для получения справки по формату см. ссылку в метке." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Население" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Высота" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Высота над уровнем моря в метрах." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Доступ для инвалидных колясок" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Нет" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ограниченный" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Специализированный" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Доступ к Интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Проводной" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Служебный" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Религия" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодаизм" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Христианство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуцианство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Несколько религий" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Язычество" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафарианство" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Саентология" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Синто" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритизм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитарный универсализм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Шаманство" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Туалеты" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Заметка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Информация, используемая для информирования других картографов о неочевидной " +"информации об элементе, намерении автора при его создании или о намеках на " +"дальнейшее совершенствование." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Выберите тип" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Готово" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Население:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Высота:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Часы работы:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Доступ к Интернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Религия:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Туалеты:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Доступ для инвалидных колясок:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Не удалось разобрать геолокационный URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "есть" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "ограниченный" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "нет" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "специализированный" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Из %s в %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Загрузка областей карты для печати" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Печать можно прервать, если она выполняется слишком долго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прервать печать" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Добавить через местоположение" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Удалить через местоположение" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обратный маршрут" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Не удалось открыть URI" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "не удалось загрузить файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Расчётное время: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибытие в %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Прибытие" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Отправление в %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Отправление" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Показывать информацию для пешего маршрута" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Скрывать информацию для пешего маршрута" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Пешком %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Загрузить предыдущие варианты" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Загрузить следующие варианты" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Не найдено более ранних вариантов." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Не найдено более поздних вариантов." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d минута" +msgstr[1] "%d минуты" +msgstr[2] "%d минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d час" +msgstr[1] "%d часа" +msgstr[2] "%d часов" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d час" +msgstr[1] "%d:%02d часа" +msgstr[2] "%d:%02d часов" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "круглосуточно" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "с утра до вечера" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ежедневно" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "праздничные дни" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "школьные каникулы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# нужно проверить можно ли переводить как "закрыто", так как странно почему так, а не "closed" +#: src/translations.js:264 +msgid "not open" +msgstr "не открыто" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "проводной" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "терминал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "служебный" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Неизвестная" + +# Точность: Максимальная +# точная не подходит, т. к. получается "точность: точная" +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Максимальная" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f ч" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f мин" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s миль" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s футов" + +#~ msgid "Quit" +#~ msgstr "Завершить" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Открыть слой фигур…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Загрузить слой карты" + +#~ msgid "Open Layer" +#~ msgstr "Открыть слой" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миль" + +#~ msgid "%f ft" +#~ msgstr "%f футов" + +#~ msgid "Position not found" +#~ msgstr "Местоположение не найдено" + +#~ msgid "Country code: %s" +#~ msgstr "Код страны: %s" + +#~ msgid "Population: %s" +#~ msgstr "Население: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Доступ для инвалидных колясок: %s" + +#~| msgid "Failed to parse Geo URI" +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Не удалось разобрать файл GeoJSON" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 00000000..d885e964 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,1982 @@ +# Slovak translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Dušan Kazik , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-21 22:14+0000\n" +"PO-Revision-Date: 2020-01-26 21:06+0100\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" +"X-Generator: Poedit 2.2.4\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy prostredia GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhľadáva miesta po celom svete" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikácia Mapy vám poskytuje rýchly prístup k mapám celého sveta. Umožňuje " +"vám rýchlo nájsť miesto, ktoré hľadáte zadaním vyhľadávanej obce alebo " +"ulice, prípadne zistiť polohu, kde sa máte stretnúť s priateľom." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Aplikácia Mapy používa databázu projektu OpenStreetMap, na ktorej " +"spolupracujú stovky tisícov ľudí z celého sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Môžete vyhľadať špecifické typy umiestnení, napríklad „Hostince neďaleko " +"Hlavnej ulice, Boston“ alebo „Ubytovňa neďaleko Alexanderplatzu, Berlin“." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +# desktop entry name +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Mapy" + +# desktop entry comment +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá aplikácia na prezeranie máp" + +# desktop enty keywords +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožní zobrazenie vášho umiestnenia na mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "naposledy zobrazené umiestnenie" + +# summary +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Súradnice naposledy zobrazeného umiestnenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "priblíženie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň priblíženia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, ktorý sa má zobraziť (pohľad ulíc, letecký pohľad, atď.)" + +# summary +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veľkosť okna" + +# description +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veľkosť okna (šírka a výška)" + +# summary +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pozícia okna" + +# description +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozícia okna (X a Y)." + +# summary +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizované okno" + +# description +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximalizovaný stav okna" + +# summary +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximálny počet výsledkov hľadania" + +# description +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximálny počet výsledkov hľadania z vyhľadávača geokódov." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávnych miest na uloženie" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených miest, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávnych trás na uloženie" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených trás, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v sieti Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v sieti Facebook. " +"Možné hodnoty sú: EVERYONE(ktokoľvek), FRIENDS_OF_FRIENDS(priatelia mojich " +"priateľov), ALL_FRIENDS(iba moji priatelia) or SELF(iba ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v službe Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v službe " +"Foursquare. Možné hodnoty sú: public(verejné), followers(nasledovatelia) " +"alebo private(súkromné)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Facebook priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Twitter priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Používateľské meno alebo e-mailová adresa projektu OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikuje, či sa používateľ prihlásil na úpravu údajov projektu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Naposledy použitý typ dopravy pre plánovanie trasy" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditeľnosť" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Uverejniť na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Uverejniť na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušiť" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Oznámiť _polohu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ktokoľvek" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Priatelia mojich priateľov" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Iba moji priatelia" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Iba ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Verejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Nasledovatelia" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Súkromné" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Čo sa nachádza tu?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Skopírovať umiestnenie" + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Pridať do projektu OpenStreetMap" + +# dialog title +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazenia" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporttovať" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Zahrnúť trasy a značky" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Všeobecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazenie klávesových skratiek" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Vyhľadanie" + +# DK:tooltip +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Prepnutie plánovača trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tlač trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončenie" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazenie mapy" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Priblíženie" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddialenie" + +# tooltip +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Prepnutie obľúbených" + +# DK:tooltip +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Prejdenie na aktuálne umiestnenie" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prepnutie na pohľad ulíc" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prepnutie na letecký pohľad" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvorenie vrstvy s tvarmi" + +# dialo title +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Otvoriť vrstvu s tvarmi…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnite lokalizačné služby, aby mohlo byť nájdené vaše umiestnenie" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušiť" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavenia umiestnenia" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Nastaviť účet projektu OpenStreetMap" + +# menu item +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exportovať ako obrázok" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové skratky" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "O aplikácii Mapy" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Prejde na aktuálne umiestnenie" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Vyberie typ mapy" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Oddiali" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Priblíži" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Prepne plánovač trasy" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Prepne obľúbené" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Vytlačí trasu" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Aplikácia Mapy je bez pripojenia!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby mohla aplikácia Mapy pracovať správne, vyžaduje sa aktívne internetové " +"pripojenie, ale žiadne nie je dostupné." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Skontrolujte vaše nastavenia pripojenia a sprostredkovateľa proxy." + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pridá do novej trasy" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Sprístupní umiestnenie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označí ako obľúbené" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Oznámi túto polohu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet projektu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prihláste sa na úpravu máp" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomôžte zlepšiť mapu pomocou\n" +"účtu projektu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Prihlásiť sa" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Nemáte účet?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Prepáčte, ale toto nefungovalo. Prosím, skúste to znovu, alebo navštívte " +"webovú adresu\n" +"OpenStreetMap na obnovenie vášho hesla." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Overovací kód sa nezhoduje. Prosím, skúste to znovu." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Zadajte overovací kód zobrazený vyššie" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Overiť" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Prihlásený" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet projektu OpenStreetMap je aktívny." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Odhlásiť sa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Smerovacie číslo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Obec" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nič" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridanie poľa" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentár" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmeny mapy budú viditeľné na všetkých mapách, ktoré\n" +"využívajú údaje z projektu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Ďalej" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Zobrazí viac informácií" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenašli sa žiadne výsledky" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potiahnutím zmeníte poradie trasy" + +# dialog title +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvorenie umiestnenia" + +# gtkbutton +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopírovať" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Odoslať do…" + +# dialo title +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvoriť" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Prepne viditeľné" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Trasa poskytovaná službou GraphHopper" + +#: data/ui/sidebar.ui:364 +#, fuzzy +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerár trasy verejnej dopravy je poskytovaný projektom GNOME\n" +"použitím cestovných poriadkov získaných od prepravných spoločností alebo " +"agentúr.\n" +"Spoločnosti a agentúry nemôžu byť zodpovedné za zobrazené výsledky.\n" +"Projekt GNOME nemôže zaručiť správnosť zobrazeného itineráru a plánu.\n" +"Zobrazené názvy a značky sú považované za registrované obchodné známky, ak " +"je to nevyhnutné." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobraziť viac výsledkov" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skryje prechodné zastávky a informácie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazí prechodné zastávky a informácie" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odchod teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odchod o" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Príchod o" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobraziť" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Električky" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lietadlá" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuálne umiestnenie" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Priblížením pridajte umiestnenie!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Priblížiť" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Zlyhalo nájdenie štruktúry dlaždíc v adresári" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Zlyhala analýza dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Chýbajú potrebné atribúty" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepodarilo sa nájsť prvok služby OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k štruktúre adresárov miestnych dlaždíc" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Zobrazí verziu programu" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorovať dostupnosť siete" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výber účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítavanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výber miesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v sieti Facebook. Prosím, " +"vyberte nejaké zo zoznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v službe Foursquare. Prosím, " +"vyberte nejaké zo zoznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámiť polohu %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napíšte voliteľnú správu k oznámeniu polohy %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Vyskytla sa chyba" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nedá sa nájsť miesto „%s“ v sociálnej službe" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "V tejto lokalite sa nedá nájsť vhodné miesto na oznámenie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Platnosť poverení vypršala. Prosím, otvorte Účty služieb na prihlásenie a " +"povolenie tohto účtu" + +#: src/contextMenu.js:93 +msgid "Route from here" +msgstr "Trasa odtiaľto" + +#: src/contextMenu.js:95 +msgid "Add destination" +msgstr "Pridať cieľ" + +#: src/contextMenu.js:97 +msgid "Route to here" +msgstr "Trasa sem" + +#: src/contextMenu.js:123 +msgid "Nothing found here!" +msgstr "Tu sa nič nenašlo!" + +#: src/contextMenu.js:184 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Umiestnenie bolo pridané do mapy. Berte na vedomie, že jeho zobrazenie na " +"mape a vo výsledkoch vyhľadávania môže trvať nejakú dobu." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapy na mieste %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Systém súborov je iba na čítanie" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Do tohto umiestnenia nemáte oprávnenia na zápis" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Adresár neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie je určený názov súboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie je možné exportovať zobrazenie" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatná súradnica" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba analýzy" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznáma geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Požiadavka na trasu zlyhala." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Nenašla sa žiadna trasa." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Začiatok!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Všetky súbory vrstiev" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Zlyhalo pripojenie k lokalizačnej službe" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "Dušan Kazik " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Aplikácia na prezeranie máp pre GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorské práva © 2011 – 2019 Red Hat, Inc. a autori aplikácie Mapy " +"prostredia GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Údaje mapy zo služby %s a jej prispievateľov" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Dlaždice mapy poskytnuté zo služby %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Vyhľadávanie poskytnuté službou %s použitím %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Typ súboru nie je podporovaný" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Zlyhalo otvorenie vrstvy" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Zlyhalo otvorenie GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávne používateľské meno alebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspech" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nesprávna požiadavka" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt sa nenašiel" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Nastal konflikt. Niekto iný práve upravil objekt." + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt bol odstránený" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta alebo relácia odkazuje na neexistujúceho potomka" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Názov" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiálny názov. Toto obvykle býva napísané na tabuliach." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webová stránka" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiálna webová stránka. Skúste použiť čo najjednoduchší tvar URL napr. " +"http://priklad.sk namiesto of http://priklad.sk/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefón" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefónne číslo. Použite medzinárodný formát, začínajúci so znakom +. Dbajte " +"na miestne zákony o ochrane súkromia, obzvlášť pri súkromných telefónnych " +"číslach." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by mal zahŕňať kód jazyka a názov článku ako „sk:Názov " +"článku“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Otváracia doba" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pre pomoc k formátu si prezrite odkaz v menovke." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Obyvateľstvo" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Nadmorská výška" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Stúpanie (výška nad morskou hladinou) bodu v metroch." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Bezbariérový prístup" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Áno" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Obmedzený" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Vyhradený" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Prístup na internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Drôtový" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Obsluha" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Náboženstvo" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Baháizmus" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budhizmus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kresťanstvo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizmus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Viacero náboženstiev" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizmus" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizmus" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientológia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizmus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhizmus" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Centralistický univerzalizmus" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidizmus" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informácie slúžiace ostatným mapovačom na informovanie o neobvyklých " +"informáciách o súčasti, účeli autora počas tvorby, alebo radách pre " +"neskoršie vylepšenia." + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridanie do projektu OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Výber typu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nepomenované miesto" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Obyvateľstvo:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Nadmorská výška:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Otváracia doba:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Prístup na internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Náboženstvo:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalety:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Bezbariérový prístup:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefón:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Zlyhala analýza URI geografickej polohy" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "áno" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "obmedzený" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nie" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "vyhradený" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Miesto sa nenašlo v projekte OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL projektu OpenStreetMap nie je platná" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Súradnice v URL nie sú platné" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nie je podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s po %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítavajú sa dlaždice mapy na vytlačenie" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tlač môžete prerušiť, ak toto trvá príliš dlho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prerušiť tlač" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridá cez umiestnenie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstráni cez umiestnenie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obráti trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridať obec %s do aplikácie %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Zlyhalo otvorenie URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otvoriť pomocou %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "zlyhalo načítanie súboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerár poskytnutý zo služby %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začiatok z adresy %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začiatok" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chôdza %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Príchod na adresu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Príchod" + +# tooltip +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazí pokyny pre chôdzu" + +# tooltip +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skryje pokyny pre chôdzu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načítať skoršie alternatívy" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načítať neskoršie alternatívy" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenašli sa žiadne skoršie alternatívy." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenašli sa žiadne neskoršie alternatívy." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Pre túto trasu sa nenašli žiadne údaje cestovného poriadku." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Pre túto trasu sa nenašiel žiadny poskytovateľ." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minút" +msgstr[1] "%d minúta" +msgstr[2] "%d minúty" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hodín" +msgstr[1] "%d hodina" +msgstr[2] "%d hodiny" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hodín" +msgstr[1] "%d:%02d hodina" +msgstr[2] "%d:%02d hodiny" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "nonstop" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od východu slnka po západ slnka" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "každý deň" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "štátne sviatky" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školské prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "zatvorené" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drôtový" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminál" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "obsluha" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Presnosť: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Neznáma" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Presná" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Odbočte doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Odbočte doľava" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Odbočte mierne doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Odbočte mierne doľava" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Odbočte ostro doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Odbočte ostro doľava" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Odbočte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Odbočte doprava" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Odbočte mierne doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Odbočte mierne doprava" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Odbočte ostro doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Odbočte ostro doprava" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovom objazde použite %s. výjazd" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovom objazde použite výjazd na %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Vojdite do kruhového objazdu" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použite výťah a vstúpte na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Použite výťah" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Otočte sa doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Otočte sa doľava" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Otočte sa doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Otočte sa doprava" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Trasa poskytovaná službou OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Ukončiť" + +# tooltip +#~ msgid "Open with another application" +#~ msgstr "Otvorí pomocou inej aplikácie" + +#~ msgid "Press enter to search" +#~ msgstr "Stlačte enter na vyhľadanie" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvoriť vrstvu s tvarmi…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Načítať mapovú vrstvu" + +#~ msgid "Open Layer" +#~ msgstr "Otvorenie vrstvy" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Pozícia sa nenašla" + +#~ msgid "Wlan" +#~ msgstr "WiFi" + +#~ msgid "wlan" +#~ msgstr "wifi" + +#~ msgid "Country code: %s" +#~ msgstr "Kód krajiny: %s" + +#~ msgid "Population: %s" +#~ msgstr "Obyvateľstvo: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Bezbariérový prístup: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Zlyhala analýza súboru GeoJSON" + +#~ msgid "Copy Geo URI" +#~ msgstr "Skopírovať URI geografickej polohy" + +#~ msgid "_Share" +#~ msgstr "_Sprístupniť" + +# summary +#~ msgid "Last known location and accuracy" +#~ msgstr "Posledná známa poloha a presnosť" + +# description +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Posledné známa poloha (zemepisná šírka a zemepisná dĺžka v stupňoch) a " +#~ "presnosť (v metroch)." + +# description +#~ msgid "Description of last known location of user." +#~ msgstr "Popis poslednej známej polohy používateľa." + +# summary +#~ msgid "User set last known location" +#~ msgstr "Používateľ nastavil poslednú známu polohu" + +# description +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Určuje, či bola posledná známa poloha ručne nastavená používateľom." + +#~ msgid "I’m here!" +#~ msgstr "Tu sa nachádzam!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 00000000..da1af234 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,1959 @@ +# Slovenian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Martin Srebotnjak , 2013–2015. +# Matej Urbančič , 2015–2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-04-03 21:17+0000\n" +"PO-Revision-Date: 2020-04-05 22:34+0200\n" +"Last-Translator: Matej Urbančič \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 2.2.4\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Zemljevidi GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Najdi mesta po svetu" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Program omogoča hiter dostop do zemljevidov sveta. Omogoča hitro iskanje " +"mest in ulic, različnih javnih prostorov, ki jih je nujno treba obiskati, " +"ali mesta zmenka s prijatelji." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Program uporablja podatkovno zbirko OpenStreetMap, ki jo ustvarja več sto " +"tisoč posameznikov na vseh koncih sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Iskati je mogoče tudi posebna mesta, kot so »bari v središču Kranja« ali " +"»Hotel blizu avtobusne postaje v Mariboru«.>" + +#: data/org.gnome.Maps.appdata.xml.in:130 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Zemljevidi" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Enostaven program za pregled zemljevidov" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Zemljevidi;karta;karte;maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Dovoli prikazovanje trenutnega mesta na zemljevidu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "zadnje gledano mesto" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate nazadnje gledanega mesta." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "približanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Raven približanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta zemljevida" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta zemljevida za prikaz (ulični, zračni ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (širina in višina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj okna (osi x in y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Povečano okno" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje razpetosti okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Največje število zadetkov iskanja" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Največje število zadetkov iskanja pri uporabi iskalnika krajev." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Število nedavnih mest za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Število nedavno obiskanih mest za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Število poti za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Število nedavno obiskanih poti za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavitve zasebnosti objav na Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Facebook. Dovoljene " +"vrednosti so: vsi, prijatelji prijateljev, prijatelji ali zame." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavitve zasebnosti objav Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Foursquare. Dovoljene " +"vrednosti so: javno, spremljevalci, zasebno." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Povezovanje objav Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Facebook." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Povezovanje objav Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave na Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Twitter." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Elektronski naslov oziroma uporabniško ime OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Kaže, ali je uporabnik prijavljen za urejanje podatkov OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Nazadnje uporabljena vrsta transporta za vodenje" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vidnost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Objavi na Twitterju" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Prekliči" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Vstopi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Vsi" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prijatelji prijateljev" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Le prijatelji" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Le jaz" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Spremljevalci" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Zasebno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Pot od tu" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj vmesni cilj" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Pot do tu" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kaj je to?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj mesto" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Objavi na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pogled izvoza" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvozi" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Vključi pot in oznake" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Splošno" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Pokaži tipkovne bližnjice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Poišči" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Preklopi plan poti" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Natisni pot" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Končaj" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pogled zemljevida" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približaj" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddalji" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Preklopi merilo" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Preklopi na ulični pogled" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Preklopi na pogled iz zraka" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Odpri plast oblike" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Odpri plast oblike ..." + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Priklop storitev določanja trenutnega mesta za uporabo v programu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Prekliči" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavitve mesta" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavi račun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Izvozi kot sliko" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "O programu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Trenutna vrsta zemljevida" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Oddalji" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Približaj" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Preklopi plan poti" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Preklop priljubljenih" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Natisni pot" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Zemljevid ni povezan v omrežje!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Program Zemljevidi zahtevajo za pravilno delovanje dejavno internetno " +"povezavo, ki pa trenutno ni na voljo." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Preverite povezavo in nastavitve posredniškega strežnika." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaj novo pot" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Objavi mesto" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označi kot priljubljeno" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prijavi se tu." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Račun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijava za urejanje zemljevida" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Sodelujte pri izdelavi zemljevida\n" +"prek OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Elektronski naslov" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Geslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Prijava" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ali še nimate svojega računa?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Povezovanje je spodletelo. Poskusite znova kasneje, ali pa \n" +"obiščite spletišče OpenStreetMap za ponastavitev gesla." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Overitvena koda ni skladna. Poskusite znova." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Vpišite overitveno kodo prikazano zgoraj" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Overi" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Prijavljeno" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Račun OpenStreetMap je dejaven." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Odjavi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hišna številka" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštna koda" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Mesto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Opomba" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Spremembe bodo vidne na vseh zemljevidih,\n" +" ki uporabljajo podatke OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno uporabljeno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Naslednji" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Pokaži več podrobnosti" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ni najdenih zadetkov" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potegnite točko za spreminjanje poti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Odpri mesto" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Pošlji ..." + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Odpri plast oblike" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Odpri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Preklopi vidno" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Iskanje poti s podporo GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Načrt potovanja z javnim prevozom zagotavljajo različne storitve.\n" +"Teh podatkov ni mogoče preverjati in zagotavljati pravilnosti voznih\n" +"poti in časov. Nekateri ponudniki morda ne vključujejo vseh načinov\n" +"potovanja, na primer državni ponudniki morda ne vključujejo letalskih\n" +"povezav in krajevni morda nimajo podatkov o vlakih.\n" +"Prikazana imena in blagovne znamke je treba obravnavati kot registrirane " +"znamke." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Pokaži več zadetkov" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrij vmesne postanke in podrobnosti" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Pokaži vmesne postaje in podrobnosti mest" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odhod takoj" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odhod do" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Prihod do" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Pokaži" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Avtobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaki" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna železnica" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Letala" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutno mesto" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Približaj za dodajanje mesta!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približaj" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Določanje pravilne zgradbe v mapi je spodletelo." + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Razčlenjevanje dokumenta XML je spodletelo" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Manjkajo zahtevani atributi" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ni mogoče najti predmeta OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Pot do krajevne mape s sličicami" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Pokaži različico programa" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Prezri razpoložljivost omrežja" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izbor računa" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Nalaganje" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izbor mesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Facebook. Izberite ustrezno mesto iz " +"seznama." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Foursquare. Izberite ustrezno mesto iz " +"seznama." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se v %s." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Vpišite sporočilo za objavo v %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Prišlo je do napake!" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ni mogoče najti »%s« med razpoložljivimi storitvami" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ni mogoče najti ustreznega mesta za objavo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Poverila so potekla. Ponovna vzpostavitev računa je mogoče med nastavitvami." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu ni ničesar!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Na zemljevid je dodano mesto. Upoštevajte, da lahko traja, preden se pokaže " +"na zemljevidu in med rezultati iskanja." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "zemljevid na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sistem je le za branje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ni ustreznih dovoljenj za shranjevanje na to mesto" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mapa ne obstaja" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ime datoteke ni določeno" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ni mogoče izvoziti pogleda" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neveljavna koordinata" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "napaka med razčlenjevanjem" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznana geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Zahteva za pridobivanje poti je spodletela." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ni najdene poti" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1099 +msgid "Start!" +msgstr "Začetna točka!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Vse datoteke plasti" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Napaka med povezovanjem s storitvijo določevanja točke GPS" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Matej Urbančič \n" +"Martin Srebotnjak" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Program za prikaz zemljevidov za GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Avtorske pravice © 2011–2019 Red Hat, Inc. in avtorji programa Zemljevidi " +"GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke zemljevida objavljajo %s in drugi sodelujoči" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Podatke zemljevida objavlja %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Iskalnik omogoča %s z uporabo %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Vrsta datoteke ni podprta" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Odpiranje plasti je spodletelo" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Odpiranje naslova URI Geo je spodletelo." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Uspešno zaključeno" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Slaba zahteva" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Predmeta ni mogoče najti" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Spor urejanja; ravnokar je nekdo drug spremenil isti predmet." + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Predmet je izbrisan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Pot oziroma zveza je sklicana na neobstoječ podrejen predmet" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Ime" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Uradno ime ali naziv se običajno pojavlja na tablah." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Naslov" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Spletišče" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Uradna spletna stran mora biti zapisana kot osnovni naslov URL, na primer " +"http://www.primer.si in ne http://www.primer.si/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonska številka mora biti zapisana v mednarodnem zapisu (začne se s " +"+ ...) Upoštevajte tudi krajevna določila zasebnosti, še posebej za zasebne " +"telefonske številke." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedija" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Uporabljen zapis mora vključevati kodo jezika in naslov prispevka, na primer " +"»sl:Naslov prispevka«." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Odpiralni čas" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Poglejte povezano na oznakiza pomoč o zapisu." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Nadmorska višina" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska višina točke v metrih" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Invalidom prijazno" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Omejeno" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Označeno" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetni dostop" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žično" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Storitev" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizem" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizem" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizem" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizem" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Krščanstvo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucionizem" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizem" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizem" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judovstvo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Izberi več" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Poganstvo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizem" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizem" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhizem" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizem" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizem" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Univerzalni unitarizem" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jazidizem" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizem" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Stranišča" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Opomba" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podrobnosti, s katerimi lahko obvestimo druge uporabnike o neobičajnih " +"spremembah predmetov, pomembnih podatkih ali namenih za nadaljne izboljšave." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodajanje točke na OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izbor vrste" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Končano" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Neimenovano mesto" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populacija:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Nadmorska višina:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Odpiralne ure:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetni dostop:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Stranišča:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Invalidom prijazno:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Razčlenjevanje naslova URI Geo je spodletelo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "omejeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "podpora invalidom" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Mesta na OpenStreetMap ni mogoče najti" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Podan naslov URL OpenStreetMap ni veljaven" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate v naslovu URL niso veljavne" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Podan naslov URL ni podprt" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Poteka nalaganje zemljevida za tiskanje" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tiskanje je mogoče prekiniti, če je postopek predolg" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekliči tiskanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj prek mesta" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstrani prek mesta" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni pot" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s v %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Odpiranje naslova URI je spodletelo" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Odpri s programom %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nalaganje datoteke je spodletelo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:299 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Predviden čas: %s" + +#: src/sidebar.js:355 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Načrt potovanja objavlja %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začnite na %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začetna točka" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Hodite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Prihod k %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1112 +msgid "Arrive" +msgstr "Prihod" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Pokaži navodila za hojo" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrij navodila za hojo" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Naloži predhodne možnosti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Naloži kasnejše možnosti" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ni predhodnih možnosti." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ni kasnejših možnosti." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Za to pot podatki o času niso na voljo." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Za to pot podatki o ponudnikih niso na voljo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuta" +msgstr[2] "%d minuti" +msgstr[3] "%d minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ur" +msgstr[1] "%d ura" +msgstr[2] "%d uri" +msgstr[3] "%d ure" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ur" +msgstr[1] "%d:%02d ura" +msgstr[2] "%d:%02d uri" +msgstr[3] "%d:%02d ure" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "neprestano" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od zore do mraka" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "vsak dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "javni prazniki" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "šolske počitnice" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ni odprto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "žično" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "storitev" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Natančnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Neznan položaj" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Natančen položaj" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1173 +#, javascript-format +msgid "Continue on %s" +msgstr "Nadaljujte po %s" + +#: src/transitplugins/openTripPlanner.js:1175 +msgid "Continue" +msgstr "Nadaljujte" + +#: src/transitplugins/openTripPlanner.js:1178 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zavijte levo na %s" + +#: src/transitplugins/openTripPlanner.js:1180 +msgid "Turn left" +msgstr "Zavijte levo" + +#: src/transitplugins/openTripPlanner.js:1183 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Držite se leve na %s" + +#: src/transitplugins/openTripPlanner.js:1185 +msgid "Turn slightly left" +msgstr "Držite se leve" + +#: src/transitplugins/openTripPlanner.js:1188 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zavijte ostro levo na %s" + +#: src/transitplugins/openTripPlanner.js:1190 +msgid "Turn sharp left" +msgstr "Zavijte ostro levo" + +#: src/transitplugins/openTripPlanner.js:1193 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zavijte desno na %s" + +#: src/transitplugins/openTripPlanner.js:1195 +msgid "Turn right" +msgstr "Zavijte desno" + +#: src/transitplugins/openTripPlanner.js:1198 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Držite se desne na %s" + +#: src/transitplugins/openTripPlanner.js:1200 +msgid "Turn slightly right" +msgstr "Držite se desne" + +#: src/transitplugins/openTripPlanner.js:1203 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zavijte ostro desno na %s" + +#: src/transitplugins/openTripPlanner.js:1205 +msgid "Turn sharp right" +msgstr "Zavijte ostro desno" + +#: src/transitplugins/openTripPlanner.js:1211 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iz krožišča zapeljite na izvoz %s" + +#: src/transitplugins/openTripPlanner.js:1213 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iz krožišča zapeljite na izvoz za %s" + +#: src/transitplugins/openTripPlanner.js:1215 +msgid "Take the roundabout" +msgstr "Zapeljite v krožišče" + +#: src/transitplugins/openTripPlanner.js:1219 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Vstopite v dvigalo in izstopite v %s" + +#: src/transitplugins/openTripPlanner.js:1221 +msgid "Take the elevator" +msgstr "Vstopite v dvigalo" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Naredite polkrožni zavoj v levo na %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Make a left u-turn" +msgstr "Naredite polkrožni zavoj v levo" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Naredite polkrožni zavoj v desno na %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Make a right u-turn" +msgstr "Naredite polkrožni zavoj v desno" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Iskanje poti s OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj cilj" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Odpri z drugim programom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite vnosno tipko za iskanje" + +#~ msgid "Quit" +#~ msgstr "Izhod" + +#~ msgid "OK" +#~ msgstr "V redu" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Odpri plast oblike…" + +#~ msgid "Load Map Layer" +#~ msgstr "Naloži plast zemljevida" + +#~ msgid "Open Layer" +#~ msgstr "Odpri plast" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "" +#~ "Maps need an active internet connection to function properly, but one " +#~ "can't be found." +#~ msgstr "" +#~ "Zemljevidi potrebujejo za pravilno delovanje dejavno internetno povezavo, " +#~ "ki pa ni na voljo." + +#~ msgid "Don't have an account?" +#~ msgstr "Še nimate računa za dostop?" + +#~ msgid "The verification code didn't match, please try again." +#~ msgstr "Neveljavna koda za pooblastitev. Poskusite znova." + +#~ msgid "Cannot find \"%s\" in the social service" +#~ msgstr "Ni mogoče najti \"%s\" med razpoložljivimi storitvami" + +#~ msgid "The directory does not exists" +#~ msgstr "Ciljna mapa ne obstaja" + +#~ msgid "Setup OpenStreetMap Account" +#~ msgstr "Nastavitev računa OpenStreetMap" + +#~ msgid "Position not found" +#~ msgstr "Položaja ni mogoče določiti" + +#~ msgid "Postal code: %s" +#~ msgstr "Poštna številka: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Koda države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Populacija: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Dostop v vozičku: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zadnje znano mesto in natančnost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zadnje znano mesto (geografska širina in dolžina v stopinjah) in " +#~ "natančnost (v metrih)." + +#~ msgid "Description of last known location" +#~ msgstr "Opis zadnjega znanega mesta" + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis zadnjega znanega mesta uporabnika." + +#~ msgid "User set last known location" +#~ msgstr "Ročno nastavljeno zadnje mesto nahajanja" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ali je bilo zadnje znano mesto nastavljeno ročno." + +#~ msgid "I’m here!" +#~ msgstr "Jaz sem tu!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid "Track user location." +#~ msgstr "Sledenje gibanja uporabnika." + +#~ msgid "Map Type" +#~ msgstr "Vrsta zemljevida" + +#~ msgid "Cycling" +#~ msgstr "Kolesarjenje" + +#~ msgid "Transit" +#~ msgstr "Javni promet" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 00000000..4b3bfafd --- /dev/null +++ b/po/sr.po @@ -0,0 +1,1927 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Мирослав Николић , 2013—2017. +# Борисав Живановић , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-03-09 20:21+0000\n" +"PO-Revision-Date: 2020-03-15 09:13+0100\n" +"Last-Translator: Марко М. Костић \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.3\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Гномове карте" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Нађите места широм света" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Гномове Карте вам дају брз приступ картама широм света. Омогућава вам да " +"брзо и лако пронађете место које тражите тражећи град или улицу, или да " +"одредите место за сусрет са пријатељима." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Овај програм користи заједничку базу података „OpenStreetMap“, коју стварају " +"стотине хиљада људи широм света." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете чак и да потражите нека посебна места, као што су „Градски паркови у " +"Јагодини“ или „Хотели у центру Пирота“." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Гномов пројекат" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Карте" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Једноставан програм за карте" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;карте;мапе;карта;мапа;karte;mape;karta;mapa;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозвољава да се ваша локација приказује на карти." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последње погледано место" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координате последње погледаног места." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увећање" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Ниво увећања" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Врста карте" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Врста карте за приказ (улица, поглед из ваздуха и сл.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Величина прозора" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Величина прозора (ширина и висина)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положај прозора" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положај прозора (положено и усправно)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Увећавање прозора" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стање увећања прозора" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Највећи број резултата претраге" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Највећи број резултата претраге за претрагу геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Број скорашњих места за чување" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Број недавно посећених места за чување." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Број скорашњих путева које треба сачувати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Број скоро посећених путева које треба сачувати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Подешавање провере приватности Фејсбука" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последње подешавање провере приватности Фејсбука. Могуће вредности су: " +"„EVERYONE“ (свако), „FRIENDS_OF_FRIENDS“ (пријатељи пријатеља), " +"„ALL_FRIENDS“ (сви пријатељи) или „SELF“ (сами)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Подешавање провере приватности Форсквера" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последње подешавање провере приватности Форсквера. Могуће вредности су: " +"„public“ (јавно), „followers“ (пратиоци) или „private“ (приватно)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Форскверова провера Фејсбуковог емитовања" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као објаву у налогу Фејсбука " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Форскверова провера Твитеровог емитовања" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као цвркут у налогу Твитера " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap корисничко име или е-адреса" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показује да ли је корисник пријављен да би могао да уређује OpenStreetMap " +"податке." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Последња врста превоза коришћена за проналажење пута" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видљивост" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Објави на Фејсбуку" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Објави на Твитеру" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Откажи" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Провери" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Свако" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Пријатељи пријатеља" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Само пријатељи" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Само ја" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Јавно" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Пратиоци" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Приватно" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Пут одавде" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додај међу-одредиште" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Пут довде" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Шта је то овде?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Умножите место" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap налог" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Извези преглед" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "И_звези" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Укључи путеве и маркере" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Опште" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Приказ пречица" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Претрага" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Покретање планирања пута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Излаз" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Преглед карте" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Увећавање" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Умањивање" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Подешавање увећања" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Одлазак на тренутно место" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Пребаци на поглед са улице" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Пребаци на поглед из ваздуха" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Отвори слој облика" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Отвори слој облика…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Укључите услуге положаја да нађете ваш положај" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Откажи" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Подешавања положаја" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Подеси OpenStreetMap налог" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Извези као слику" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Пречице на _тастатури" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "О Картама" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Идите на текуће место" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Изаберите врсту карте" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Умањи" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Увећај" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Пребаците на планирање пута" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Пребаците на омиљене" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Штампај пут" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Програм је ван мреже!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Потребна је радна интернет веза да би програм исправно радио, али није " +"доступна." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Проверите вашу везу и подешавања посредника." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Додајте у нови пут" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Подели место" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Означите омиљеним" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Проверите овде" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap налог" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Пријавите се да бисте мењали карте" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Побољшајте карту користећи\n" +"OpenStreetMap налог." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Е-адреса" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Лозинка" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Пријави ме" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Немате налог?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Нажалост, то није прорадило. Пробајте поново или посетите\n" +"OpenStreetMap да бисте опоравили вашу лозинку." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Потврдни код се не подудара, пробајте поново." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Унесите потврдни код приказан изнад" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Потврди" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Пријављен" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш OpenStreetMap налог је сада активан." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Одјави ме" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Кућни број" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштански број" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Град" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Врста" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ништа" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додај поље" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Измене на карти ће бити видљиве на свим картама\n" +"које користе податке са OpenStreetMap пројекта." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно коришћено" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Следеће" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Прикажи још података" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нема резултата" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Превуци да би променио редослед пута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Отвори место" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Копирај" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Пошаљи у…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Отвори слој облика" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Отвори" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Подеси видљивост" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Претрага руте Граф Хопером" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршруте јавног превоза омогућује услуга треће стране.\n" +"Гном не може јемчити за тачност приказаних маршрута и заказаних полазака.\n" +"Знајте да неки достављачи неће укључити све могуће режиме превоза,\n" +"нпр.: национални достављач података неће приказати све авио превознике а\n" +"локални достављач неће приказати регионалне возне линије.\n" +"Приказани називи и робне марке се требају сматрати регистрованим робним " +"маркама\n" +"где је то могуће." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Прикажите још резултата" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сакриј станице и податке на маршрути" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Прикажи станице и податке на маршрути" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Полази сада" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Полази у" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Долази у" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Прикажи" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Аутобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваји" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Возови" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Подземна" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Трајекти" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Авиони" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Тренутни положај" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Увећај за додавање локације!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Увећај" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Неуспех при тражењу структуре плочица у фасцикли" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Нисам успео да обрадим ИксМЛ документ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Недостају потребне особине" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Нисам могао да нађем ОСМ елемент" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Путања до локалне фасцикле са структуром плочица" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Прикажи издање програма" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Занемари доступност мреже" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Изаберите налог" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Учитавам" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Изаберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Фејсбуком. Изаберите једно са списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Форсквером. Изаберите једно са списка." + +# Мисли се на рецепцију, хотеле. +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Пријави се у „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите изборну поруку за рецепцију „%s“." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Дошло је до грешке" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не могу да нађем „%s“ у друштвеним услугама" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не могу да нађем одговарајуће место за пријаву на овом месту" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Уверења су истекла, отворите налоге на мрежи да се пријавите и укључите овај " +"налог" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ништа није нађено овде!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Локација је додата на карту. Знајте да ће требати мало времена пре него што " +"се појави на карти и у резултатима претраге." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Систем датотека је само за читање" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немате овлашћење да сачувате ту" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Директоријум не постоји" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Није наведено име датотеке" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не могу да извезем преглед" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неисправна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "грешка у обрађивању" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "непозната геометрија" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Захтев пута није успео." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Нисам пронашао пут." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Крени!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Све датотеке слоја" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Нисам успео да се повежем на услугу положаја" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Мирослав Николић \n" +"Марко М. Костић \n" +"Борисав Живановић \n" +"\n" +"http://prevod.org — превод на српски језик" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Гномов програм за карте" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Право на копирање © 2011 – 2019 Red Hat, Inc. и творци Гномових Карти" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Подаци о картама са платформе %s и од доприносилаца" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Плочице за карту су преузете са %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Претрагу омогућава %s помоћу %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Врста датотеке није подржана" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Нисам успео да отворим слој" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Нисам успео да отворим Гео-УРИ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неисправно корисничко име или лозинка" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успех" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Лош захтев" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Објекат није нађен" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Сукоб, неко други је управо изменио објекат" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Објекат је обрисан" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Пут или релација се односи на непостојеће дете" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Назив" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Званични назив. Обично назив који се налази на саобраћајним знаковима." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб страница" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Званична веб страница. Пробајте да унесете најосновнији облик адресе. На " +"пример: „http://primer.rs“ уместо „http://primer.rs/pocetna.html“." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Број телефона. Користите међународни формат где број почиње са плус знаком. " +"Обратите пажњу на локалне законе о заштити приватности, нарочито ако су у " +"питању приватни бројеви телефона." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Википедија" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Коришћени формат треба да садржи ознаку језика и наслов чланка. На пример: " +"„sr:Наслов чланка“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Радно време" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Погледајте везу у етикети за више података о формату." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Становништво" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Висина" + +# Ми не морамо да пишемо "(height above sea lever)" јер сама реч „надморска висина“ описује да је у питању висина изнад мора. :) +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Надморска висина тачке у метрима." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Приступ инвалидима" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "да" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Не" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ограничен" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "намењено" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Приступ интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Бежични" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Жичани" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Интернет кафе" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Услуга" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Вероисповест" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизам" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаизам" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Будизам" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодаизам" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Хришћанство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфучијанство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Хиндуизам" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ђаинизам" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Јудаизам" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Вишеструке вероисповести" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Паганизам" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафаријанизам" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Сајентологија" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Шинтоизам" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикизам" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритуализам" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Таоизам" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитарни универзализам" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Језидизам" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастизам" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Тоалети" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Белешка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Подаци за обавештавање других картографа о мање очигледним подацима о " +"елементу, намери аутора приликом стварања или о саветима за будућа побољшања." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Изабери врсту" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Неименовано место" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Број становника:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Висина:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Радно време:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Приступ интернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Вероисповест:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Тоалети:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Приступ инвалидима:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Неуспех при обради Гео путање" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "да" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ограничено" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "намењено" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Место није нађено на OpenStreetMap-у" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Неисправна OpenStreetMap адреса" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Неисправне координате у адреси" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Адреса није подржана" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Од %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Учитавам плочице карте за штампање" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете прекинути штампање ако ово потраје" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прекини штампање" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додај преко места" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Уклони преко места" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обрни пут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додај %s на %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Нисам успео да отворим путању" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Отвори програмом %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "нисам успео да учитам датотеку" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Процењено време: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруте су преузете са %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Креће у %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Крени" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешачите %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Долази у %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Долази" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Прикажи упутства за пешачење" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сакриј упутства за пешачење" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Учитај раније алтернативе" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Учитај старије алтернативе" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Нисам успео да нађем раније алтернативе." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Нисам успео да нађем старије алтернативе." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Нема редова вожњи за ову руту." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Ниједан достављач није нађен за ову руту." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d минут" +msgstr[1] "%d минута" +msgstr[2] "%d минута" +msgstr[3] "%d минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d сат" +msgstr[1] "%d сата" +msgstr[2] "%d сати" +msgstr[3] "%d сат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d сат" +msgstr[1] "%d:%02d сата" +msgstr[2] "%d:%02d сати" +msgstr[3] "%d:%02d сат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "у времену" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "од јутра до вечери" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "сваког дана" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "јавни празници" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "школски празници" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "није отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "жичани" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "интернет кафе" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "услуга" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Тачност: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Непознато" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Тачно" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f ч" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f мин." + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f сек." + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s километара" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s метара" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s миља" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s стопа" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Настави ка %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Настави" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Скрени лево код %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Скрени лево" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Скрени благо лево код %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Скрени благо лево" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Скрени оштро лево код %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Скрени оштро лево" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Скрени десно код %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Скрени десно" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Скрени благо десно код %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Скрени благо десно" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Скрени оштро десно код %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Скрени оштро десно" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "У кружном току, изађите %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "У кружном току, изађите код %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Идите на кружни ток" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Уђите у лифт и изађите на спрат %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Уђите у лифт" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Направите заокрет налево ка %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Направите заокрет налево" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Направите заокрет надесно ка %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Направите заокрет надесно" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Претрага руте преко Опен-Трип-Планера" + +#~ msgid "Add destination" +#~ msgstr "Додај одредиште" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Отворите другим програмом" + +#~ msgid "Press enter to search" +#~ msgstr "Притисните „унеси“ да претражите" + +#~ msgid "Quit" +#~ msgstr "Изађи" + +#~ msgid "OK" +#~ msgstr "У реду" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Отвори слој облика…" + +#~ msgid "Load Map Layer" +#~ msgstr "Учитај слој карте" + +#~ msgid "Open Layer" +#~ msgstr "Отвори слој" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f миља" + +#~ msgid "%f ft" +#~ msgstr "%f стопа" + +#~ msgid "Position not found" +#~ msgstr "Нисам пронашао положај" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Нисам успео да обрадим Гео-ЈСОН датотеку" + +#~ msgid "Country code: %s" +#~ msgstr "Шифра државе: %s" + +#~ msgid "Population: %s" +#~ msgstr "Становника: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Приступна рампа: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Последње познато место и прецизност" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Последње познато место корисника (географска ширина и дужина у степенима) " +#~ "и прецизност (у метрима)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Опис последњег познатог места корисника." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Да ли је корисник ручно подесио последње познато место." + +#~ msgid "I’m here!" +#~ msgstr "Ја сам овде!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Сателит" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 00000000..94102f39 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1712 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Miroslav Nikolić , 2013—2017. +# Borisav Živanović , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2018-02-22 22:22+0000\n" +"PO-Revision-Date: 2018-02-16 09:25+0100\n" +"Last-Translator: Marko M. Kostić \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.0.3\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Gnomove karte" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Nađite mesta širom sveta" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Gnomove Karte vam daju brz pristup kartama širom sveta. Omogućava vam da " +"brzo i lako pronađete mesto koje tražite tražeći grad ili ulicu, ili da " +"odredite mesto za susret sa prijateljima." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Ovaj program koristi zajedničku bazu podataka „OpenStreetMap“, koju stvaraju " +"stotine hiljada ljudi širom sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak i da potražite neka posebna mesta, kao što su „Gradski parkovi u " +"Jagodini“ ili „Hoteli u centru Pirota“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program za karte" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;karte;mape;karta;mapa;karte;mape;karta;mapa;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Dozvoljava da se vaša lokacija prikazuje na karti." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "poslednje pogledano mesto" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Koordinate poslednje pogledanog mesta." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Položaj prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (položeno i uspravno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Uvećavanje prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage za pretragu geokoda." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Broj skorašnjih mesta za čuvanje" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posećenih mesta za čuvanje." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Broj skorašnjih puteva koje treba sačuvati" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Broj skoro posećenih puteva koje treba sačuvati." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Podešavanje provere privatnosti Fejsbuka" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslednje podešavanje provere privatnosti Fejsbuka. Moguće vrednosti su: " +"„EVERYONE“ (svako), „FRIENDS_OF_FRIENDS“ (prijatelji prijatelja), " +"„ALL_FRIENDS“ (svi prijatelji) ili „SELF“ (sami)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Podešavanje provere privatnosti Forskvera" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslednje podešavanje provere privatnosti Forskvera. Moguće vrednosti su: " +"„public“ (javno), „followers“ (pratioci) ili „private“ (privatno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Forskverova provera Fejsbukovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao objavu u nalogu Fejsbuka " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Forskverova provera Tviterovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao cvrkut u nalogu Tvitera " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili e-adresa" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Pokazuje da li je korisnik prijavljen da bi mogao da uređuje OpenStreetMap " +"podatke." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Poslednja vrsta prevoza korišćena za pronalaženje puta" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Podesi OpenStreetMap nalog" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Prečice na _tastaturi" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Izađi" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Fejsbuku" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Tviteru" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Proveri" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svako" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo ja" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je to ovde?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Umnožite mesto" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Izvezi kao sliku" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap nalog" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Izvezi pregled" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "I_zvezi" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Uključi puteve i markere" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Opšte" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaz prečica" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pokretanje planiranja puta" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Štampaj put" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Izlaz" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pregled karte" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Uvećavanje" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Umanjivanje" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Podešavanje uvećanja" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Odlazak na trenutno mesto" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na pogled sa ulice" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na pogled iz vazduha" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj oblika" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +msgid "Open Shape Layer…" +msgstr "Otvori sloj oblika…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite usluge položaja da nađete vaš položaj" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Podešavanja položaja" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Idite na tekuće mesto" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Izaberite vrstu karte" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Zoom out" +msgstr "Umanji" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Zoom in" +msgstr "Uvećaj" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Prebacite na planiranje puta" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Prebacite na omiljene" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Štampaj put" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Program je van mreže!" + +#: ../data/ui/main-window.ui.h:17 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Potrebna je radna internet veza da bi program ispravno radio, ali nije " +"dostupna." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Proverite vašu vezu i podešavanja posrednika." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Dodajte u novi put" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Otvorite drugim programom" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Označite omiljenim" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Proverite ovde" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap nalog" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Prijavite se da biste menjali karte" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Poboljšajte kartu koristeći\n" +"OpenStreetMap nalog." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "E-adresa" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Lozinka" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Prijavi me" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "Nemate nalog?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije proradilo. Probajte ponovo ili posetite\n" +"OpenStreetMap da biste oporavili vašu lozinku." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "Potvrdni kod se ne podudara, probajte ponovo." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Unesite potvrdni kod prikazan iznad" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Potvrdi" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Prijavljen" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap nalog je sada aktivan." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Odjavi me" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Ulica" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Kućni broj" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Grad" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Vrsta" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Ništa" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Dodaj polje" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Komentar" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmene na karti će biti vidljive na svim kartama\n" +"koje koriste podatke sa OpenStreetMap projekta." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Nedavno korišćeno" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Otkaži" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sledeće" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Prikaži još podataka" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Pritisnite „unesi“ da pretražite" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "Nema rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Prevuci da bi promenio redosled puta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvorite mesto" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Otvori" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Otvori sloj oblika" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Podesi vidljivost" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Pretraga rute Graf Hoperom" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Pretraga rute preko Open-Trip-Planera" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Maršrute javnog prevoza omogućuje Gnom korišćenjem\n" +"redova vožnji nabavljenih od prevoznika ili agencija.\n" +"Ove firme i agencije se ne mogu smatrati odgovornim za prikazane rezultate.\n" +"Gnom ne može jemčiti za tačnost prikazanih maršruta i zakazanih polazaka.\n" +"Prikazani nazivi i robne marke se trebaju smatrati registrovanim robnim " +"markama\n" +"gde je to moguće." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikažite još rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Sakrij stanice i podatke na maršruti" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Prikaži stanice i podatke na maršruti" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Polazi sada" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Polazi u" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Dolazi u" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Prikaži" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Autobusi" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Tramvaji" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Vozovi" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Podzemna" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Trajekti" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutni položaj" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "U redu" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspeh pri traženju strukture pločica u fascikli" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nisam uspeo da obradim IksML dokument" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Nedostaju potrebne osobine" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Nisam mogao da nađem OSM element" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne fascikle sa strukturom pločica" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Prikaži izdanje programa" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izaberite nalog" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavam" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izaberite mesto" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Fejsbukom. Izaberite jedno sa spiska." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Forskverom. Izaberite jedno sa spiska." + +# Misli se na recepciju, hotele. +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se u „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napišite izbornu poruku za recepciju „%s“." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Došlo je do greške" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne mogu da nađem „%s“ u društvenim uslugama" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu da nađem odgovarajuće mesto za prijavu na ovom mestu" + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uverenja su istekla, otvorite naloge na mreži da se prijavite i uključite ovaj " +"nalog" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Put odavde" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Dodaj odredište" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Put dovde" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Ništa nije nađeno ovde!" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodata na kartu. Znajte da će trebati malo vremena pre nego što " +"se pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem datoteka je samo za čitanje" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate ovlašćenje da sačuvate tu" + +#: ../src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorijum ne postoji" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nije navedeno ime datoteke" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne mogu da izvezem pregled" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neispravna koordinata" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška u obrađivanju" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Zahtev puta nije uspeo." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Nisam pronašao put." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Nisam uspeo da se povežem na uslugu položaja" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "" +"Miroslav Nikolić \n" +"Marko M. Kostić \n" +"Borisav Živanović \n" +"\n" +"http://prevod.org — prevod na srpski jezik" + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Gnomov program za karte" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Pravo na kopiranje © 2011 – 2017 Red Hat, Inc. i tvorci Gnomovih Karti" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podaci o kartama sa platforme %s i od doprinosilaca" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Pločice za kartu su preuzete sa %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Nisam uspeo da otvorim sloj" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Nisam uspeo da otvorim Geo-URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Nisam uspeo da nađem ranije alternative." + +#: ../src/openTripPlanner.js:614 +msgid "No later alternatives found." +msgstr "Nisam uspeo da nađem starije alternative." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Nema redova vožnji za ovu rutu." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Uspeh" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Loš zahtev" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekat nije nađen" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, neko drugi je upravo izmenio objekat" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekat je obrisan" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Put ili relacija se odnosi na nepostojeće dete" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Zvanični naziv. Obično naziv koji se nalazi na saobraćajnim znakovima." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Veb stranica" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Zvanična veb stranica. Probajte da unesete najosnovniji oblik adrese. Na " +"primer: „http://primer.rs“ umesto „http://primer.rs/pocetna.html“." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format gde broj počinje sa plus znakom. " +"Obratite pažnju na lokalne zakone o zaštiti privatnosti, naročito ako su u " +"pitanju privatni brojevi telefona." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Vikipedija" + +#: ../src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišćeni format treba da sadrži oznaku jezika i naslov članka. Na primer: " +"„sr:Naslov članka“." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Radno vreme" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte vezu u etiketi za više podataka o formatu." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Stanovništvo" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +# Mi ne moramo da pišemo "(height above sea lever)" jer sama reč „nadmorska visina“ opisuje da je u pitanju visina iznad mora. :) +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska visina tačke u metrima." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup invalidima" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "da" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ograničen" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "namenjeno" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežični" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žičani" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Internet kafe" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Veroispovest" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizam" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Hrišćanstvo" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Konfučijanstvo" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Đainizam" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Višestruke veroispovesti" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarijanizam" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Sajentologija" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastizam" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Beleška" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podaci za obaveštavanje drugih kartografa o manje očiglednim podacima o " +"elementu, nameri autora prilikom stvaranja ili o savetima za buduća poboljšanja." + +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izaberi vrstu" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotovo" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Broj stanovnika:" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Visina:" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Radno vreme:" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Veroispovest:" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Toaleti:" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Pristup invalidima:" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefon:" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Neuspeh pri obradi Geo putanje" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "namenjeno" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavam pločice karte za štampanje" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti štampanje ako ovo potraje" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini štampanje" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +msgid "Add via location" +msgstr "Dodaj preko mesta" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +msgid "Remove via location" +msgstr "Ukloni preko mesta" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Obrni put" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Nisam uspeo da otvorim putanju" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nisam uspeo da učitam datoteku" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Procenjeno vreme: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazi u %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Dolazi" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Kreće u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +msgid "Start" +msgstr "Kreni" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Prikaži uputstva za pešačenje" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Sakrij uputstva za pešačenje" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Pešačite %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj starije alternative" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuta" +msgstr[2] "%d minuta" +msgstr[3] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sata" +msgstr[2] "%d sati" +msgstr[3] "%d sat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d sat" +msgstr[1] "%d:%02d sata" +msgstr[2] "%d:%02d sati" +msgstr[3] "%d:%02d sat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "u vremenu" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od jutra do večeri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "svakog dana" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "žičani" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "internet kafe" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f č" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min." + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f sek." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s kilometara" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s metara" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s milja" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s stopa" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milja" + +#~ msgid "%f ft" +#~ msgstr "%f stopa" + +#~ msgid "Position not found" +#~ msgstr "Nisam pronašao položaj" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nisam uspeo da obradim Geo-JSON datoteku" + +#~ msgid "Country code: %s" +#~ msgstr "Šifra države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Stanovnika: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pristupna rampa: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Poslednje poznato mesto i preciznost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Poslednje poznato mesto korisnika (geografska širina i dužina u stepenima) " +#~ "i preciznost (u metrima)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis poslednjeg poznatog mesta korisnika." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Da li je korisnik ručno podesio poslednje poznato mesto." + +#~ msgid "I’m here!" +#~ msgstr "Ja sam ovde!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..2b73a311 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,1934 @@ +# Swedish translations for gnome-maps package +# Svenska översättningar för paketet gnome-maps. +# Copyright © 2013-2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marcus Lundblad , 2013. +# Sebastian Rasmussen , 2015, 2016. +# Anders Jonsson , 2015, 2016, 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-02-03 16:21+0000\n" +"PO-Revision-Date: 2020-02-08 16:20+0100\n" +"Last-Translator: Anders Jonsson \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.2.4\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kartor" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Hitta platser i världen" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartor ger dig snabb tillgång till kartor över hela världen. Det låter dig " +"hitta platsen du letar efter genom att söka efter en stad eller gata eller " +"finna ett ställe att möta en vän på." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartor använder kartdatabasen OpenStreetMap, skapad genom samarbete av flera " +"hundratusentals personer över hela världen." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan till och med söka efter specifika platser såsom ”Pub nära " +"Drottninggatan, Stockholm” eller ”Hotell vid Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Kartor" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ett enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartor;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillåter att din plats visas på kartan." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "senaste visade plats" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater för senast visade plats." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomnivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Karttyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen av karta att visa (vägkarta, flygfoto o.s.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fönsterstorlek" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fönsterstorlek (bredd och höjd)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fönsterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fönsterposition (X och Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fönster maximerat" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tillstånd för maximerat fönster" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximalt antal sökresultat" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximalt antal sökresultat från geocode-sökning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal senaste platser att lagra" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senast besökta platser att lagra." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal senaste rutter att lagra" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senast besökta rutter att lagra." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Sekretessinställning för Facebook-incheckning" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Senaste använda sekretessinställning för Facebook-incheckning. Möjliga " +"värden är: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS eller SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Sekretessinställning för Foursquare-incheckning" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Senast använda sekretessinställning för Foursquare-incheckning. Möjliga " +"värden är: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Facebook-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Twitter-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Användarnamn hos OpenStreetMap eller e-postadress" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikerar om användaren har loggat in för att redigera OpenStreetMap-data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Senaste transporttyp för rutter" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Posta på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Posta på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Checka in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alla" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vänners vänner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vänner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara jag" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publikt" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Följare" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rutt härifrån" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lägg till mellanliggande stopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rutt hit" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Vad finns här?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiera plats" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportera vy" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportera" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkludera rutt och markörer" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allmänt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Visa genvägar" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Sök" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avsluta" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvy" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zooma in" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zooma ut" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Visa/dölj skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Växla till gatuvy" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Växla till fågelvy" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Öppna formlager" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Öppna formlager…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå på platstjänster för att hitta din plats" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Platsinställningar" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Konfigurera OpenStreetMap-konto" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Exportera som bild" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Tangentbordsgenvägar" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Om Kartor" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Välj karttyp" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zooma ut" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zooma in" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Slå på/av favoriter" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Skriv ut rutt" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Kartor är frånkopplad!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartor behöver en aktiv internetanslutning för att fungera korrekt, men en " +"sådan kan ej hittas." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Kontrollera din anslutning och proxyinställningar." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Lägg till ny rutt" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dela plats" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markera som favorit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Checka in här" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logga in för att redigera kartor" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjälp till att förbättra kartan via ett\n" +"OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lösenord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Logga in" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Har du inte ett konto?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Det fungerade tyvärr inte. Prova igen eller besök\n" +"OpenStreetMap för att återställa ditt lösenord." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Verifieringskoden stämde inte, prova igen." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Mata in verifieringskoden som visas ovan" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifiera" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Inloggad" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ditt OpenStreetMap-konto är aktivt." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Logga ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Postort" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lägg till fält" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartändringar kommer synas på alla kartor som använder\n" +"OpenStreetMap-data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senast använda" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Nästa" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Visa fler resultat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Inga resultat hittades" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra för att ändra ruttens ordning" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Öppna plats" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiera" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Skicka till…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Öppna formlager" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Öppna" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå på/av favoriter" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruttsökning utförd av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Resväg för kollektivtrafik tillhandahålls av tredjepartstjänster.\n" +"GNOME kan inte garantera korrektheten hos resvägarna och tabellerna som " +"visas.\n" +"Observera att vissa operatörer kanske inte inkluderar alla möjliga " +"färdsätt,\n" +"t.ex. visar en nationell operatör kanske inte flyglinjer, och en lokal\n" +"operatör saknar kanske regionala tåg.\n" +"Namn och varumärken som visas anses vara registrerade varumärken då " +"tillämpligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Visa fler resultat" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Dölj mellanliggande stopp och information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Visa mellanliggande stopp och information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Åk nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Åk tidigast" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Anländ senast" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Visa" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussar" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Spårvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tåg" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Tunnelbana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Färjor" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flygplan" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuell plats" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zooma in för att lägga till plats!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zooma in" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Misslyckades med att hitta rutstruktur i katalog" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Misslyckades med att tolka XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Saknar nödvändiga attribut" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunde inte hitta OSM-element" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "En sökväg till en lokal katalogstruktur med kartrutor" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Visa programmets version" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ignorera nätverkets tillgänglighet" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Välj ett konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Läser in" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Välj en plats" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Facebook. Välj en från " +"denna lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Foursquare. Välj en från " +"denna lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Checka in på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv ett valfritt meddelande för att checka in på %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Ett fel har inträffat" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan inte hitta ”%s” i den sociala tjänsten" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan inte hitta en lämplig plats att checka in på denna plats" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Inloggningsuppgifterna har gått ut, öppna Nätkonton för att logga in och " +"aktivera detta konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting hittades här!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Plats lades till på kartan, observera att det kan ta ett tag innan det syns " +"på kartan och bland sökresultaten." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartor vid %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet är skrivskyddat" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har inte rättigheter att spara där" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen existerar inte" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Inget filnamn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ej exportera vy" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ogiltig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "tolkningsfel" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "okänd geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Ruttbegäran misslyckades." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Hittade ingen rutt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Starta!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Alla lagerfiler" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Misslyckades att ansluta till platstjänst" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Marcus Lundblad \n" +"Anders Jonsson \n" +"Skicka synpunkter på översättningen till\n" +"." + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Ett kartprogram för GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. och upphovsmännen för GNOME Maps" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata från %s och bidragsgivare" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartrutor tillhandahållna av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Sökning tillhandahålls av %s med %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Filtypen stöds inte" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Misslyckades med att öppna lager" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Misslyckades med att öppna GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Framgång" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Felaktig begäran" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt hittades ej" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, någon annan har precis modifierat objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet har tagits bort" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Väg eller relation refererar till obefintliga barn" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Namn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officiella namnet. Detta är typiskt vad som visas på skyltar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adress" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webbplats" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officiella webbplatsen. Försök att använda den mest grundläggande formen " +"för en URL, d.v.s. http://example.com istället för http://example.com/index." +"html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Använd det internationella formatet som börjar med ett " +"plustecken. Var uppmärksam på lokala sekretesslagar, speciellt för privata " +"telefonnummer." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet som används bör inkludera språkkoden och artikeltiteln, t.ex. ”sv:" +"Artikelns titel”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Öppettider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se länken i etiketten för hjälp om formatet." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Folkmängd" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Höjd över havet" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höjd (höjd över havet) för en plats i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Åtkomst för rullstol" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begränsad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Avsett för" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetåtkomst" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådlöst" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjänst" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Cao đai" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judendom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flera religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaristisk universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Anteckning" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information som används för att informera andra karterare om icke uppenbar " +"information om ett element, personens avsikt då det skapades, eller tips på " +"hur det kan förbättras ytterligare." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Välj typ" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Klar" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Namnlös plats" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Folkmängd:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Höjd över havet:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Öppettider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetåtkomst:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Åtkomst för rullstol:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Misslyckades med att tolka geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begränsad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nej" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "avsett för" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Platsen hittades inte i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL:en är felaktig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaterna i URL:en är felaktiga" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL:en stöds inte" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Från %s till %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Läser in kartrutor för utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryta utskriften om detta tar för lång tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lägg till position att passera" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ta bort position att passera" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vänd rutt" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lägg till %s till %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Misslyckades med att öppna URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Öppna med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "misslyckades med att läsa in fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Uppskattad tid: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Resvägar tillhandahållna av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starta från %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Starta" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Anländ vid %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Anländ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Visa gånginstruktioner" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Dölj gånginstruktioner" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Läs in tidigare alternativ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Läs in senare alternativ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Inga tidigare alternativ hittades." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Inga senare alternativ hittades." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Inga tidtabellsdata hittades för denna rutt." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Ingen operatör hittades för denna rutt." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d timme" +msgstr[1] "%d timmar" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d timme" +msgstr[1] "%d:%02d timmar" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dygnet runt" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "från soluppgång till solnedgång" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "varje dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "helgdagar" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skollov" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "inte öppen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "trådbunden" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjänst" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Noggrannhet: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Okänd" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Exakt" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f tim" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s fot" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsätt på %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Fortsätt" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sväng vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Sväng vänster" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sväng svagt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Sväng svagt vänster" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sväng kraftigt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Sväng kraftigt vänster" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sväng höger på %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Sväng höger" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sväng svagt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Sväng svagt höger" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sväng kraftigt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Sväng kraftigt höger" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avfart %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avfart till %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Ta rondellen" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta hissen och stig av på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Ta hissen" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Gör en u-sväng åt vänster in på %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Gör en u-sväng åt vänster" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Gör en u-sväng åt höger in på %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Gör en u-sväng åt höger" + +#~ msgid "Add destination" +#~ msgstr "Lägg till destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruttsökning utförd av OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Öppna med annat program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryck på retur för att söka" + +#~ msgid "Quit" +#~ msgstr "Avsluta" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Öppna formlager…" + +#~ msgid "Load Map Layer" +#~ msgstr "Läs in kartlager" + +#~ msgid "Open Layer" +#~ msgstr "Öppna lager" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f engelska mil" + +#~ msgid "%f ft" +#~ msgstr "%f fot" + +#~ msgid "Position not found" +#~ msgstr "Plats hittades ej" + +#~ msgid "Country code: %s" +#~ msgstr "Landskod: %s" + +#~ msgid "Population: %s" +#~ msgstr "Folkmängd: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Åtkomst för rullstol: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Misslyckades med att tolka GeoJSON-fil" + +#~ msgid "Export to PNG" +#~ msgstr "Exportera till PNG" + +#~ msgid "_Share" +#~ msgstr "_Dela" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Senast kända plats och noggrannhet" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Senast kända plats (latitud och longitud i grader) och noggrannhet (i " +#~ "meter)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Beskrivning av senast kända plats för användaren." + +#~ msgid "User set last known location" +#~ msgstr "Användaren angav senast kända plats." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Huruvida senast kända plats angavs manuellt av användaren." + +#~ msgid "I’m here!" +#~ msgstr "Jag är här!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Till" + +#~ msgid "From" +#~ msgstr "Från" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satellit" diff --git a/po/te.po b/po/te.po new file mode 100644 index 00000000..57f7f07f --- /dev/null +++ b/po/te.po @@ -0,0 +1,188 @@ +# Telugu translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Praveen Illa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-03-21 07:58+0000\n" +"PO-Revision-Date: 2014-03-21 22:26+0530\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"పటాలు మీకు ప్రపంచవ్యాప్తంగా ఉన్న పటాలకు శీఘ్రంగా ప్రాప్యతను కల్పిస్తుంది. ఒక నగరం లేదా వీధి, లేదా ఒక " +"స్నేహితుడు కలుసుకునే ప్రదేశాన్ని ప్రవేశపెట్టి వెదకడం ద్వారా మీరు వెతుకుతున్న ప్రదేశాన్ని త్వరగా కనుగొనడంలో " +"సహకరిస్తుంది." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • దేశము, ప్రాంతము, పట్టణం లేదా వీధి కోసం వెతకండి.
  • నిర్దిష్ట స్థానముల కోసం వెతకండి, " +"“Theatres near RTC X Roads, Hyderabad” లేదా “Wi-Fi Access near Ameerpet, " +"Hyderabad” వంటివి.
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"పటాలు ప్రపంచవ్యాప్తంగా వేలమంది వ్యక్తుల సహకారంతో తయారుచేయబడిన ఓపెన్‌స్ట్రీట్‌మ్యాప్ డేటాబేసును వినియోగిస్తుంది." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:55 +#: ../src/mainWindow.js:300 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "పటాలు" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ఒక సరళ పటముల అనువర్తనం" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "పటాలు;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "కిటికీ పరిమాణం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "కిటికీ పరిమాణం (వెడల్పు మరియు ఎత్తు)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "కిటికీ స్థానము" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "కిటికీ స్థానము (X మరియు Y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "కిటికీ పెద్దగా చేయబడింది" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "కిటికీ పెద్దగా చేయబడిన స్థితి" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "చివరిగా తెలిసిన స్థానము మరియు ఖచ్ఛితత్వం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "చివరిగా తెలిసిన స్థానము (అక్షాంశము, రేఖాంశము డిగ్రీలలో) మరియు ఖచ్ఛితత్వం (మీటర్లలో)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "చివరిగా తెలిసిన స్థానము యొక్క వివరణ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "చివరిగా తెలిసిన స్థాన వాడుకరి యొక్క వివరణ." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "జియోకోడ్ శోధన నుండి గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "చివరిగా తెలిసిన స్థానమును వాడుకరి అమర్చు" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "చివరిగా తెలిసిన స్థానమును మానవీయంగా వాడుకరి అమర్చాలా వద్దా." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "భద్రపరుచాల్సిన ఇటీవలి ప్రదేశాల సంఖ్య." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "భద్రపరుచాల్సిన ఇటీవలి సందర్శించిన ప్రదేశాల సంఖ్య." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "గురించి" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "నిష్క్రమించు" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ఇక్కడ ఏమి ఉంది?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "ఇక్కడ ఉన్నాను!" + +#: ../src/mainWindow.js:298 +msgid "translator-credits" +msgstr "Praveen Illa , 2013, 2014." + +#: ../src/mainWindow.js:301 +msgid "A map application for GNOME" +msgstr "గ్నోమ్ కొరకు రూపొందించిన పటము అనువర్తనం" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "వీధి" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ఉపగ్రహం" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:164 +msgid "Unknown" +msgstr "తెలియదు" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:167 +msgid "Exact" +msgstr "ఖచ్ఛితం" + +#: ../src/mapLocation.js:177 +msgid " km2" +msgstr " కిమీ2" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +#, javascript-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"స్థానము ఖచ్ఛితత్వం: %s" + +#~ msgid " km²" +#~ msgstr "కిమీ²" diff --git a/po/tg.po b/po/tg.po new file mode 100644 index 00000000..b11d4eee --- /dev/null +++ b/po/tg.po @@ -0,0 +1,678 @@ +# Tajik translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Victor Ibragimov , 2013, 2014, 2015 +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-03-16 19:54+0000\n" +"PO-Revision-Date: 2015-03-17 09:59+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Харитаҳо барои шумо ба тамоми ҳаритаҳои ҷаҳон имкони дастраси зуд медиҳад. " +"Ин барнома ба шумо инчунин имкон медиҳад, ки тавонед шаҳр ё кӯчаи " +"мехостагиро ёфт кунед ё барои бо дӯстон фохӯрдан маконро муайян кунед." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Харитаҳо пойгоҳи иттилоотии OpenStreetMap-ро, ки бо миллионҳо одам аз тамоми " +"ҷаҳон ташкил шудааст, истифода мебарад." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Шумо ҳатто метавонед навъи маконҳои махсусро, монанди “Қаҳвахонаҳо дар назди " +"хиёбони Рудакӣ” ё “Меҳмонхонаҳо дар назди хиёбони Рудакӣ, Душанбе” ҷустуҷӯ " +"кунед." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:367 +msgid "Maps" +msgstr "Харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Барномаи оддии харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Харитаҳо;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Андозаи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Андозаи равзана (бар ва баландӣ)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Мавқеи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Мавқеи равзана (X ва Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Равзана дар ҳадди аксар" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Вазъияти ҳадди акcаpёбии равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ аз ҷустуҷӯи рамзи ҷуғрофӣ." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Миқдори маконҳои охирин барои нигоҳ доштан" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Миқдори маконҳои кушодашудаи охирин барои нигоҳ доштан." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Facebook. Қиматҳои " +"имконпазир: ҲАР ЯК КАС, ДӮСТОНИ_ДӮСТОН, ҲАМАИ_ДӮСТОН ё ХУД." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Foursquare. Қиматҳои " +"имконпазир: иҷтимоӣ, пайравон ё махфият." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Пахшкунии бақайдгирии Facebook дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Facebook-и марбут ба ҳисоби Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Пахшкунии бақайдгирии Twitter дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Twitter-и марбут ба ҳисоби Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Дар бораи барнома" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Хуруҷ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Қобили намоиш" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Интишор дар Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Интишор дар Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Бақайдгирӣ" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Ҳар як кас" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Дӯстони дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Танҳо дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Танҳо ман" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Ҷамъиятӣ" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Пайравон" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Махфӣ" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Дар он ҷо чист?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Барои ёфтани ҷойгиршавии худ, хидматҳои ҷойгиршавиро фаъол кунед" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Танзимоти ҷойгиршавӣ" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Гузариш ба ҷойгиршавии ҷорӣ" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Интихоби намуди харита" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Фаъолсозии нақшакаши масирҳо" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Фаъолсозии баргузидаҳо" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Харитаҳо дар офлайн мебошанд!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Барои кори комил ба Харитаҳо пайвасти интернети фаъол лозим аст, вале " +"пайваст ёфт нашуд." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Танзимоти прокси ва пайвасти худро санҷед." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Илова кардан ба масири нав" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Кушодан бо барномаи дигар" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Қайд кардан ҳамчун баргузида" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Инҷо ба қайд гиред" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Барои ҷустуҷӯ Enter-ро пахш кунед" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Кушодани ҷойгиршавӣ" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Кушодан" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Ҷустуҷӯи масир тавассути GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намоиш додани натиҷаҳи дигар" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Ҷойгиршавии ҷорӣ" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Саҳеҳӣ: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:136 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "\"%s\" дар хидмати иҷтимоӣ ёфт нашуд" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Барои бақайдгирии ин макон, ҷои мувофиқ ёфт нашуд" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Муҳлати маълумоти корбар ба анҷом расид, лутфан барои ворид шудан ва фаъол " +"кардани ин ҳисоб, ба Ҳисобҳои онлайн ворид шавед" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Хато ба амал омад" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Ҳисоберо интихоб кунед" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Дар ҳоли боргирӣ" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Маконеро интихоб кунед" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Facebook ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Foursquare ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Check in to %s" +msgstr "Бақайдгирӣ ба %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Барои бақайдгирӣ ба %s, паёми интихобиро нависед." + +#: ../src/mainWindow.js:315 +msgid "Failed to connect to location service" +msgstr "Пайваст ба хидмати ҷойгиршавӣ иҷро нашуд" + +#: ../src/mainWindow.js:320 +msgid "Position not found" +msgstr "Мавқеъ ёфт нашуд" + +#: ../src/mainWindow.js:365 +msgid "translator-credits" +msgstr "Victor Ibragimov, victor.ibragimov@gmail.com" + +#: ../src/mainWindow.js:368 +msgid "A map application for GNOME" +msgstr "Барномаи харитаҳо барои GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "ҳа" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "маҳдуд" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "муайяншуда" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Ягон масир ёфт нашуд" + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Дархости масир қатъ шуд." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Оғоз!" + +#: ../src/placeBubble.js:102 +#, javascript-format +msgid "Postal code: %s" +msgstr "Рамзи почта: %s" + +#: ../src/placeBubble.js:104 +#, javascript-format +msgid "Country code: %s" +msgstr "Рамзи кишвар: %s" + +#: ../src/placeBubble.js:113 +#, javascript-format +msgid "Population: %s" +msgstr "Аҳолӣ: %s" + +#: ../src/placeBubble.js:116 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Соатҳои кушоиш: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Дастрасӣ бо аробаи маъюбӣ: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Вақти тахминӣ: %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "дар гирди соат" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "аз тулӯъ то шафақ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "ҳар рӯз" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "идҳои ҷамъиятӣ" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "идҳои мактабӣ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "кушода нест" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Номаълум" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Дақиқ" + +#: ../src/utils.js:355 +#, javascript-format +msgid "%f h" +msgstr "%f соат" + +#: ../src/utils.js:357 +#, javascript-format +msgid "%f min" +msgstr "%f дақиқа" + +#: ../src/utils.js:359 +#, javascript-format +msgid "%f s" +msgstr "%f сония" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +#, javascript-format +msgid "%f km" +msgstr "%f км" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +#, javascript-format +msgid "%f m" +msgstr "%f м" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +#, javascript-format +msgid "%f mi" +msgstr "%f мил" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +#, javascript-format +msgid "%f ft" +msgstr "%f фут" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Ҷойгиршавии охирин ва дақиқӣ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Ҷойгиршавии охирин (арз ва тӯл дар дараҷаҳо) ва дақиқӣ (дар метрҳо)." + +#~ msgid "Description of last known location" +#~ msgstr "Тавсифи ҷойгиршавии охирин" + +#~ msgid "Description of last known location of user." +#~ msgstr "Тавсифи ҷойгиршавии охирини корбар." + +#~ msgid "User set last known location" +#~ msgstr "Ҷойгиршавии охирини таъиншудаи корбар" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Интихоби ҷойгиршавии охирини муайяншуда ба таври дастӣ аз ҷониби корбар." + +#~ msgid "I’m here!" +#~ msgstr "Ман дар ҳамон ҷоям!" + +#~ msgid "Street" +#~ msgstr "Кӯча" + +#~ msgid "Satellite" +#~ msgstr "Радиф" + +#~ msgid " km2" +#~ msgstr " км2" + +#~ msgid " km²" +#~ msgstr " км²" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 00000000..c11d5c43 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,1895 @@ +# Turkish translation for gnome-maps. +# Copyright (C) 2013-2019 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Gökhan Gurbetoğlu , 2014, 2015. +# Osman Karagöz , 2017. +# Çağatay Yiğit Şahin , 2017. +# Furkan Ahmet Kara , 2018. +# Muhammet Kara , 2013, 2014, 2015, 2016, 2018. +# Ahmet Elgun , 2019. +# Sabri Ünal , 2013, 2017, 2018, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-02-09 12:09+0000\n" +"PO-Revision-Date: 2020-02-10 21:59+0300\n" +"Last-Translator: Emin Tufan Çetin \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.6\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Haritalar" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Dünya genelindeki yerleri bulun" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Haritalar, tüm dünya çapındaki haritalara hızla erişmenizi sağlar. Şehir ya " +"da sokak araması yoluyla, aramakta olduğunuz yeri hızla bulmanıza veya " +"arkadaşınızla buluşacağınız yeri belirlemenize olanak tanır." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Haritalar dünya çapında yüzbinlerce insan tarafından hazırlanan " +"OpenStreetMap ile ortak veri tabanını kullanır." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Hatta “Kızılay, Ankara yakınındaki Lokantalar” ya da “Ulus, Ankara " +"yakınındaki Oteller” gibi belirli türde yerleri bile arayabilirsiniz." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME Projesi" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Haritalar" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Basit bir harita uygulaması" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Haritalar;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Konumunuzun harita üzerinde gösterilmesine olanak tanır." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "son görüntülenen konum" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Son görüntülenen konumun koordinatları." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "yakınlaştırma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Yakınlaştırma düzeyi" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Harita türü" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Görüntülenecek haritanın türü (street, aerial, vb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Pencere boyutu" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Pencere boyutu (genişlik ve yükseklik)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pencere konumu" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pencere konumu (X ve Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Pencere büyültüldüğünde" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Pencerenin büyütülme durumu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Azami arama sonucu sayısı" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode aramasından azami arama sonucu sayısı." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saklanacak son konumların sayısı" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen yerlerin sayısı." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saklanacak son rotaların sayısı" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen rotaların sayısı." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook yer bildirimi gizlilik ayarı" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Son kullanılan Facebook yer bildirimi gizlilik ayarı. Olası değerler: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare yer bildirimi gizlilik ayarı" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Son kullanılan Foursquare yer bildirimi ayarı. Olası değerler: herkese açık, " +"takipçiler veya gizli." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare yer bildirimi için Facebook yayını" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Facebook " +"hesabında bir gönderi olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare yer bildirimi için Twitter yayını" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Twitter " +"hesabında bir tvit olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap kullanıcı adı ya da e-posta adresi" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Kullanıcının OpenStreetMap verilerini düzenlemek için oturup açıp açmamış " +"olduğunu belirtir." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Yönlendirme için son kullanılan ulaşım şekli" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Görünürlük" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook’a Gönder" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter’a Gönder" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_İptal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Yer bildirimi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Herkes" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Arkadaşların arkadaşları" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Yalnızca arkadaşlar" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Yalnızca ben" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Herkese açık" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Takipçiler" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Gizli" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Buradan rota" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ara durak ekle" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Buraya rota" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Burada ne var?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Konumu Kopyala" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Görünümü dışa aktarın" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Dışa _Aktar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Rota ve işaretçileri içer" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Genel" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Kısayolları göster" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ara" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Rotayı yazdır" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Çıkış" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Harita Görünümü" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Yakınlaş" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uzaklaş" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ölçeği değiştir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Sokak görünümüne geç" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Kuş bakışı görünüme geç" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Şekil katmanını aç" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Şekil Katmanını Aç…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Konumunuzu bulmak için konum hizmetlerini etkinleştirin" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "İptal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Konum Ayarları" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Hesabını Ayarla" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Resim Olarak Dışarıya Aktar" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Haritalar Hakkında" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Harita türü seç" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Uzaklaştırın" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Yakınlaştırın" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Gözdeleri aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Rotayı Yazdır" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Haritalar çevrim dışı!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Haritaların çalışması için kullanılabilir bir internet bağlantısı gerekli, " +"ancak bağlantı yok." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Bağlantı ve vekil sunucu ayarlarınızı denetleyin." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Yeni rotaya ekle" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Konum paylaş" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Favori olarak işaretle" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Buradan yer bildirimi yap" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Hesabı" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Haritaları düzenlemek için oturum " +"açın" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bir OpenStreetMap hesabı kullanarak\n" +"haritayı iyileştirmeye yardım edin." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-posta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parola" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Oturum Aç" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Hesabınız yok mu?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Üzgünüm, işe yaramadı. Lütfen yeniden deneyin ya da parolanızı sıfırlamak " +"için\n" +"OpenStreetMap’i ziyaret edin." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Doğrulama kodu eşleşmedi, lütfen yeniden deneyin." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Yukarıda gösterilen doğrulama kodunu girin" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Doğrula" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Oturum Açıldı" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap hesabınız etkin." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Oturumu Kapat" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Cadde/Sokak" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Bina numarası" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta kodu" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Şehir" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tür" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Yok" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Alan Ekle" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Yorum" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Harita değişiklikleri, OpenStreetMap verilerini\n" +"kullanan tüm haritalar üzerinde görünür olacaktır." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Sok Kullanılan" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "İleri" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Daha çok bilgi göster" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hiçbir sonuç bulunamadı" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Rota sıralamasını değiştirmek için sürükle" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Konum Aç" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopyala" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Gönder…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Şekil Katmanını Aç" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Aç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Görünürlüğü aç/kapat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper ile rota arama" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Toplu taşımada rota yönergeleri üçüncü taraf hizmetleri tarafından " +"sağlanır.\n" +"GNOME gösterilen rota yönergelerinin ve çizelgelerin doğruluğunu garanti " +"edemez.\n" +"Bazı sağlayıcıların var olan tüm taşıma kiplerini içermeyebileceğini " +"unutmayın; \n" +"ör. ulusal bir sağlayıcı havayollarını içermeyebilir ve yerel bir sağlayıcı " +"bölgesel trenleri kaçırabilir.\n" +"Adlar ve markalar uygulanabilir olduğunda tescilli marka olarak " +"değerlendirilmelidir." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Daha çok sonuç göster" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ara durakları ve bilgiyi gizle" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ara durakları ve bilgiyi göster" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Şimdi Çık" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "İtibaren Çık" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Öncesinde Var" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Göster" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Otobüsler" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaylar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenler" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrolar" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feribotlar" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Uçaklar" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Geçerli konum" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Konum eklemek için yakınlaştırın!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Yakınlaştır" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Dizinde döşeme yapısı bulunamadı" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML belgesini ayrıştırma başarısız" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Gerekli öznitelikler eksik" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ögesi bulunamadı" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Yerel bir döşeme dizini yapısını gösteren adres (yol)" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Programın sürümünü göster" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ağ uygunluğunu göz ardı et" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Bir hesap seç" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Yükleniyor" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Bir yer seç" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Haritalar Facebook ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden bir tane seçin." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Haritalar Foursquare ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden bir tane seçin." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s için yer bildiriminde bulun" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s’den yer bildiriminde bulunmak için isteğe bağlı bir mesaj girin." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Bir hata oluştu" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Sosyal hizmette “%s” bulunamıyor" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Bu konumda yer bildirimi yapılabilecek uygun bir yer bulunamıyor" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Oturumun süresi doldu, giriş yapıp bu hesabı etkinleştirmek için lütfen " +"Çevrim İçi Hesapları açın" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Burada bir şey bulunamadı!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Konum haritaya eklendi, arama sonuçlarında haritada gösterilmesi biraz zaman " +"alabilir." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f konumunda haritalar.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosya sistemi salt okunur" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oraya kaydetmek için gerekli izne sahip değilsiniz" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Dizin yok" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Dosya adı belirtilmedi" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Görüntü aktarılamıyor" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "geçersiz koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ayrıştırma hatası" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "bilinmeyen geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Rota isteği başarısız oldu." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Hiçbir rota bulunamadı." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Başla!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Tüm Katman Dosyaları" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Konum hizmetine bağlanma başarısız oldu" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Muhammet Kara \n" +"Emin Tufan Çetin \n" +"Gökhan Gurbetoğlu \n" +"Osman Karagöz \n" +"Çağatay Yiğit Şahin \n" +"Furkan Ahmet Kara \n" +"Ahmet Elgun \n" +"Sabri Ünal " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "GNOME için harita uygulaması" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Telif Hakkı © 2011 – 2019 Red Hat, Inc. ve GNOME Haritalar yazarları" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s ve katkıcılar tarafından harita verisi" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Harita döşemeleri %s tarafından sağlanmıştır" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Arama %s tarafından %s kullanılarak sağlanmıştır." + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dosya türü desteklenmiyor" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Katman açma başarısız oldu" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "GeoURI açma başarısız" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Hatalı kullanıcı adı veya parola" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Başarılı" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Geçersiz istek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nesne bulunamadı" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Çakışma; nesneyi az önce bir başkası değiştirdi" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Nesne silindi" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Yol ya da ilişki, var olmayan alt nesneye başvuruyor" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Ad" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Resmi ad. Genellikle tabelalarda yer alan addır." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Web sitesi" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Resmi web sitesi. Bir URL adresinin en temel halini kullanmaya çalışın. Örn. " +"http://example.com/index.html yerine http://example.com." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefon numarası. + işaretiyle başlayan uluslararası biçimi kullanın. " +"Özellikle kişisel telefon numaraları konusunda, yerel kişisel gizlilik " +"yasalarına dikkat edin." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedi" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Kullanılan biçim, dil kodu ve makale başlığı içermeli “tr:Makale başlığı” " +"gibi." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Açılış saatleri" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Biçimdeki yardım için etiketteki bağlantıyı gör." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Nüfus" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Yükseklik" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Bir noktanın metre cinsinden yükseltisi (deniz seviyesinden yüksekliği)." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Tekerlekli sandalye erişimi" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Evet" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Hayır" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Sınırlı" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Belirlenmiş" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "İnternet erişimi" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Kablosuz" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kablolu" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Hizmet" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Din" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahâîlik" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizm" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Hristiyanlık" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfüçyüsçülük" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizm" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Musevilik" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "İslam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Çoklu Dinler" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizm" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafaryanizm" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Şinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sihizm" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Ruhiyatçılık" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoculuk" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Üniteryen Üniversalizm" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yezidilik" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizm" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tuvaletler" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Not" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Bir ögeyle ilgili bariz olmayan bilgiler, yazarın onu yaratırkenki niyeti " +"veya ileriki geliştirmeler için ipuçlarıyla ilgili diğer haritacıları " +"bilgilendirmek için kullanılan bilgiler." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Tür Seç" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Bitti" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Adsız yer" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Nüfus:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Rakım:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Açılış saatleri:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "İnternet erişimi:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Din:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tuvaletler:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Tekerlekli sandalye erişimi:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Geo URI ayrıştırma başarısız" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "evet" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "sınırlı" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "hayır" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "özel olarak belirlenmiş" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Yer OpenStreetMap’te bulunamadı" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URLsi geçersiz" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URLdeki koordinatlar geçersiz" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL desteklenmiyor" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s’ten %s’e" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Harita parçası yazmak için yükleniyor" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Eğer bu uzun zaman alırsa yazdırmaktan vazgeçebilirsiniz" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Yazdırmayı iptal et" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ara konum ekle" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ara konumu kaldır" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rotayı tersine çevir" + +# ilk s şehir, ikinci s uygulama +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s şehrini %s uygulamasına ekle" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI açma başarısız oldu" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s ile aç" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "dosya yükleme başarısız" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tahmini süre: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rota yönergelerini %s sağlamıştır" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s’te başla" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Başla" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s yürü" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s’te var" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Var" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Yürüme yönergelerini göster" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Yürüme yönergelerini gizle" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Daha erken alternatifleri yükle" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Daha geç alternatifleri yükle" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Daha erken alternatif bulunamadı." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Daha geç alternatif bulunamadı." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Bu rota için tarife verisi bulunamadı." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Bu rota için sağlayıcı bulunamadı." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d dakika" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d saat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d saat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "gün boyu" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "gün doğumundan gün batımına" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "her gün" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "resmi tatiller" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "okul tatilleri" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "açık değil" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kablolu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "hizmet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Doğruluk: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Bilinmiyor" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tam" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f sa" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f dk" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f sn" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "%s üstünde devam et" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Devam et" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s üstünde sola dön" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Sola dön" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s üstünde hafifçe sola dön" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Sola hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s üstünde sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s üstünde sağa dön" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Sağa dön" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s üstünde hafifçe sağa dön" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Sağa hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s üstünde sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Döner kavşakta %s. çıkışa gidin" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Döner kavşakta %s. çıkıştan çıkın" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Döner kavşağı kullanın" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Asansörü kullanın ve %s. katta inin" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Asansörü kullanın" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s üstünde sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s üstünde sağa u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Sağa u dönüşü yapın" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner ile rota arama" + +#~ msgid "Add destination" +#~ msgstr "Hedef ekle" + +#~ msgid "Open with another application" +#~ msgstr "Başka bir uygulamayla birlikte aç" + +#~ msgid "Press enter to search" +#~ msgstr "Aramak için Enter’a basın" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Çıkış" + +#~ msgid "OK" +#~ msgstr "Tamam" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Şekil Katmanını Aç…" + +#~ msgid "Load Map Layer" +#~ msgstr "Harita Katmanı Yükle" + +#~ msgid "Open Layer" +#~ msgstr "Katman Aç" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON dosya ayrıştırması başarısız" + +#~ msgid "Country code: %s" +#~ msgstr "Ülke kodu: %s" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 00000000..a304cf29 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,1862 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Daniel Korostil , 2013, 2014, 2015, 2016, 2017. +# Yuri Chornoivan , 2020. +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-03-14 12:56+0000\n" +"PO-Revision-Date: 2020-03-14 15:51+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<" +"=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 20.03.70\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карти GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Знаходити місця по світу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карти надають швидкий доступ до карт по всьому світу. Вони дозволяють швидко " +"знайти місце, яке ви шукаєте, через пошук міста, вулиці, ба визначити місце " +"для зустрічі з друзями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карти використовують колективну базу даних OpenStreetMap, яку роблять тисячі " +"осіб по всій планеті." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете навіть шукати спеціальні місця, як-от «Паби біля головної вулиці, " +"Бостон» або «Готелі біля Александерплац, Берлін»." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Проєкт GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:563 +msgid "Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Проста програма для роботи з картами" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карти;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозволити вашому перебуванню показуватись на карті." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "останнє переглянуте місце" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координати останнього переглянутого місця." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштаб" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабування" + +#: data/org.gnome.Maps.gschema.xml:21 +#| msgctxt "shortcut window" +#| msgid "Map View" +msgid "Map type" +msgstr "Тип карти" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карти, яку слід показати (вулиці, супутникова тощо)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Розмір вікна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Розмір вікна (ширина і висота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положення вікна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положення вікна (X і Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Вікно розгорнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стан розгорнутого вікна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальна кількість пошукових результатів" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальна кількість пошукових результатів з пошуку geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Кількість недавно відвіданих місць, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Кількість недавно відвіданих місць, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Кількість недавніх маршрутів, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Кількість недавно відвіданих маршрутів, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Параметри конфіденційності Facebook щодо відзначення" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Останній використаний параметр конфіденційності Facebook щодо відзначення. " +"Допустимі значення: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS або SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Параметри конфіденційності Foursquare щодо відзначення" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Останній використаний параметр конфіденційності Foursquare щодо відзначення. " +"Допустимі значення: public, followers або private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Транслювання відзначення Foursquare через Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Facebook, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Транслювання відзначення Foursquare через Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Twitter, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Користувач або поштова скринька у OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показує, чи користувач увійшов у систему OpenStreetMap для редагування даних." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Останній використаний тип транспорту для побудови маршрутів" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видимість" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Допис на Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Допис на Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Скасувати" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Від_значитись" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Усім" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Друзям друзів" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Тільки друзям" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Лише собі" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Відкрито" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Послідовники" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Особисто" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут звідси" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Додати проміжний пункт маршруту" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюди" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Що тут?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копіювати місцевість" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Експортувати перегляд" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Експортувати" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Врахувати маршрут і помітки" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Вибрати тип карти" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +#| msgctxt "shortcut window" +#| msgid "Zoom out" +msgid "Zoom out" +msgstr "Зменшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom in" +msgstr "Збільшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Змінити улюблені" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Загальне" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показати клавіатурні скорочення" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Пошук" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Вийти" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Перегляд карти" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Наблизити" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Віддалити" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Перемкнути шкалу" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Перемкнутися на перегляд вулиць" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Перемкнутися на супутниковий перегляд" + +#: data/ui/help-overlay.ui:101 +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Відкрити шар форм" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +#| msgid "Open Layer" +msgid "Open Shape Layer…" +msgstr "Відкрити шар форм…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Увімкнути службу розташування для знаходження місцевості" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Скасувати" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметри розташування" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Відкрити обліковий запис у OpenStreetMap" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Експортувати як зображення" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Клавіатурні скорочення" + +#: data/ui/main-window.ui:22 +#| msgid "About" +msgid "About Maps" +msgstr "Про «Карти»" + +#: data/ui/main-window.ui:106 +msgid "Maps is offline!" +msgstr "Карти поза мережею!" + +#: data/ui/main-window.ui:116 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карти потребують з'єднання з інтернетом, щоб повноцінно працювати, але його " +"немає." + +#: data/ui/main-window.ui:125 +msgid "Check your connection and proxy settings." +msgstr "Перевірте зв'язок і параметри проксі." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Додати новий маршрут" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +#| msgid "Open location" +msgid "Share location" +msgstr "Оприлюднити місце" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Зазначити як улюблене" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Відзначитись тут" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Обліковий запис OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Увійти, щоб редагувати карту" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Допоможіть покращити карту через\n" +"обліковий запис OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Увійти" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Немає облікового запису?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Вибачте, не виконалось. Спробуйте ще раз, або відвідайте\n" +"OpenStreetMap, щоб оновити пароль." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Код звіряння не збігається, спробуйте ще раз." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Введіть код звіряння, що показано вище" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Перевірити" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Увійшли" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш обліковий запис OpenStreetMap активовано." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Вийти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Вулиця" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер будинку" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштовий індекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Місто" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Немає" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додати поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Зміни в карті будуть видимі для карт, що використовують\n" +"дані з OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно вжите" + +#: data/ui/osm-edit-dialog.ui:280 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Далі" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Докладніше" + +#: data/ui/place-popover.ui:54 +#| msgid "No route found." +msgid "No results found" +msgstr "Нічого не знайдено" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перенесіть, щоб змінити порядок маршруту" + +#: data/ui/send-to-dialog.ui:10 +#| msgid "Open location" +msgid "Open Location" +msgstr "Відкрити місце" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Копіювати" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Надіслати…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +#| msgid "Open Layer" +msgid "Open Shape Layer" +msgstr "Відкрити шар форм" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Відкрити" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Перемкнути видимість" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Пошук маршрутів через GraphHopper" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Дані путівника для громадського транспорту надано сторонніми службами.\n" +"GNOME не може гарантувати правильність показаних маршрутів і розкладів.\n" +"Зауважте, що деякі надавачі даних можуть не включати усі можливі варіанти\n" +"пересування. Наприклад, національний оператор громадського транспорту може\n" +"не включати дані перельотів літаком, а надавач даних громадського транспорту\n" +"у місті — даних регіональної залізниці.\n" +"Показані назви і торгові марки є зареєстрованими знаками, якщо це може їх" +" стосуватися." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "показати більше результатів" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сховати проміжні зупинки та відомості" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показати проміжні зупинки та відомості" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Уже їде" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Їде через" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибуває за" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показувати" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваї" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Потяги" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Пороми" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Літаки" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Поточна місцевість" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Наблизьтесь, щоб додати місцевість!" + +#: data/ui/zoom-in-dialog.ui:38 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom In" +msgstr "Збільшити" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не вдалося знайти плиткову структуру в каталозі" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не вдалося розібрати документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Бракує потрібних атрибутів" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Неможливо знайти елемент OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Шлях до локального каталогу зі структурою плиток " + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Показати версію програми" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Ігнорувати доступність мережі" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Виберіть обліковий запис" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Завантаження" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Виберіть місце" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Facebook. Виберіть " +"щось зі списку." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Foursquare. Виберіть " +"щось зі списку." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Відзначитись на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишіть довільне повідомлення, щоб відзначитись на %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Трапилась помилка" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Неможливо знайти «%s» в соціальних службах" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Неможливо знайти зручне місце, щоб відзначити цю місцевість" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Реєстраційні дані застаріли, відкрийте Мережеві облікові записи, щоб увійти " +"та ввімкнути цей обліковий запис" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Тут нічого немає!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Місцевість додано на карту, майте на увазі, що це може забрати трохи часу " +"перед тим, як воно буде показано на карті й у результатах пошуку." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта для %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлова система тільки для читання" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немає прав, щоб зберігати там" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не існує" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не вказано назви файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Неможливо експортувати перегляд" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неправильна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "помилка розбирання" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "невідома геометрія" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Невдалий запит маршруту." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Не знайдено жодного маршруту." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Нумо!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Усі файли шарів" + +#: src/mainWindow.js:466 +msgid "Failed to connect to location service" +msgstr "Не вдалося з'єднатись зі службою розташування" + +#: src/mainWindow.js:561 +msgid "translator-credits" +msgstr "Daniel Korostil " + +#: src/mainWindow.js:564 +msgid "A map application for GNOME" +msgstr "Карти для GNOME" + +#: src/mainWindow.js:575 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "© Red Hat, Inc. та розробники «Карт» GNOME, 2011–2019" + +#: src/mainWindow.js:595 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Дані карт надано %s та учасниками проєкту" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:611 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Блоки карти надано %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Послуги з пошуку надано %s, використовуємо %s" + +#: src/mapView.js:378 +msgid "File type is not supported" +msgstr "Тип файла не підтримується" + +#: src/mapView.js:385 +msgid "Failed to open layer" +msgstr "Не вдалося відкрити шар" + +#: src/mapView.js:421 +msgid "Failed to open GeoURI" +msgstr "Не вдалося відкрити GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Хибний користувач або пароль" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успіх" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Поганий запит" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Об'єкт не знайдено" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфлікт, хтось інший щойно змінив об'єкт" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Об'єкт вилучено" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Спосіб або відношення не стосується чогось явного" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Назва" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Офіційна назва. Це зазвичай перше, що потрапляє на очі." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Офіційний сайт. Намагайтесь використовувати найосновнішу форму посилання, " +"наприклад, http://example.com замість http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефону. Використовуйте міжнародний формат, який починається з знаку " +"плюса (+). Будь обачні з місцевим законами щодо конфіденційності, особливо " +"особистими номерами." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Формат слід містити код мови і назву статті, як-от «uk:Назва статті»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Робочий час" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Довідку щодо формату можна знати за посилання у мітці." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Населення" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Висота" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Висота (над рівнем моря) у метрах." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Доступ для возиків" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Так" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ні" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Обмежено" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Вказано" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Доступ до інтернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Дріт" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Термінал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Служба" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Релігія" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анімізм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаїзм" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Християнство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуціанство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Індуїзм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнізм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Юдаїзм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Іслам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Мультиконфесійність" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Язичництво" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафаріанство" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Сайнтологія" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Сінтоїзм" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхізм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спіритуалізм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унітарний універсалізм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Єзидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Туалети" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Примітка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Запис інформації використовується для надання іншим творцям карти неочевидних" +" відомостей щодо елемента карти, мети його створення або підказок щодо" +" подальшого поліпшення." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Виберіть тип" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Зроблено" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Місце без назви" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Населення:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Висота:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Робочий час:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Доступ до інтернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Релігія:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Туалети:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Доступ для возиків:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "Не вдалося розібрати геопосилання" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "так" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "обмежено" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ні" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "визначено" + +#: src/place.js:475 +#| msgid "Edit on OpenStreetMap" +msgid "Place not found in OpenStreetMap" +msgstr "Місце не знайдено на OpenStreetMap" + +#: src/place.js:495 +#| msgid "OpenStreetMap Account" +msgid "OpenStreetMap URL is not valid" +msgstr "Адреса OpenStreetMap є некоректною" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Координати у адресі є некоректними" + +#: src/place.js:521 +#| msgid "File type is not supported" +msgid "URL is not supported" +msgstr "Підтримки адреси не передбачено" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "З %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Завантаження плиток карти для друкування" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете скасувати друкування, якщо це надто довго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Скасувати друкування" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +#| msgid "last viewed location" +msgid "Add via location" +msgstr "Додати проміжне місце" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +#| msgid "Open location" +msgid "Remove via location" +msgstr "Влучити проміжне місце" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Зворотній маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "Додати %s до %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Не вдалося відкрити посилання" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Відкрити через %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "не вдалося завантажити файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Розрахунковий час: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршрути надано %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Відправляється з %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Нумо" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Прогулянка %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибуває до %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Прибуває" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показати піші варіанти" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сховати піші варіанти" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Завантажити попередні альтернативи" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Завантажити подальші альтернативи" + +#: src/transitMoreRow.js:54 +#| msgid "Load earlier alternatives" +msgid "No earlier alternatives found." +msgstr "Раніших альтернатив не знайдено." + +#: src/transitMoreRow.js:56 +#| msgid "Load later alternatives" +msgid "No later alternatives found." +msgstr "Пізніших альтернатив не знайдено." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Немає даних про цей маршрут." + +#: src/transitPlan.js:196 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Для цього маршруту не знайдено надавачів даних." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d хвилина" +msgstr[1] "%d хвилини" +msgstr[2] "%d хвилин" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d година" +msgstr[1] "%d години" +msgstr[2] "%d годин" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d година" +msgstr[1] "%d:%02d години" +msgstr[2] "%d:%02d годин" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "цілодобово" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "від світанку до заходу" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "щодня" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "святкові дні" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "шкільні канікули" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "не відкрито" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "дріт" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "термінал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "служба" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точність: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Невідомо" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Уточнити" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f г" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f хв" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s ми" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s фт" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Продовжуйте на %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Продовжуйте" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверніть ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверніть трохи ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Поверніть трохи ліворуч" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверніть строго ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Різко поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверніть трохи праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Поверніть трохи праворуч" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Різко поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Різко поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "На розвороті виберіть виїзд %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "На розвороті виберіть виїзд до %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "В'їжджайте на розворот" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Увійдіть до ліфта і вийдіть на %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Увійдіть до ліфта" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Виконайте лівий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Виконайте лівий розворот" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Виконайте правий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Виконайте правий розворот" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 00000000..e15cc1b4 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,1660 @@ +# Vietnamese translations for Maps package +# Bản dịch Tiếng Việt dành cho gói Maps. +# This file is distributed under the same license as the Maps package. +# Trần Ngọc Quân , 2016, 2017, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-03-03 03:47+0000\n" +"PO-Revision-Date: 2019-03-03 14:27+0700\n" +"Last-Translator: Trần Ngọc Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Bản đồ GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Tìm các địa điểm trên khắp thế giới" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps giúp bạn truy cập bản đồ trên toàn thế giới. Nó cho phép bạn nhanh " +"chóng tìm đến chỗ mà bạn đang tìm bằng cách tìm thành phố hay đường, hoặc vị " +"trí địa điểm để gặp mặt bạn bè." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps dùng cơ sở dữ liệu OpenStreetMap cộng tác, được tạo bởi hàng trăm ngàn " +"người trên toàn cầu." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Bạn thậm chí còn có thể chỉ định kiểu của địa điểm như là “Pubs near Main " +"Street, Boston” hay “Hotels near Alexanderplatz, Berlin”." + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "Bản đồ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ứng dụng bản đồ đơn giản" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Bản đồ;Ban do;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Cho phép vị trí của bạn được hiển thị trên bản đồ." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "vị trí xem cuối cùng" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Tọa độ của vị trí xem cuối cùng." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Kích thước cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Kích thước cửa sổ (rộng và cao)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Vị trí cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Vị trí cửa sổ (X và Y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Cửa sổ phóng to" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Cửa sổ ở trạng thái phóng to hết cỡ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Số kết quả tìm kiếm tối đa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Số kết quả tìm kiếm tối đa từ việc tìm kiếm geocode." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Số lượng nơi chốn mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Số lượng nơi chốn mới thăm được lưu." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Số lượng đường đi mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Số lượng đường đi mới đi được lưu." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Cài đặt riêng tư check-in Facebook lần cuối. Giá trị có thể là: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS hay SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Cài đặt riêng tư check-in Foursquare lần cuối. Giá trị có thể là: public, " +"followers hay private." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in quảng bá Facebook" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một bài viết trên tài " +"khoản Facebook tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in quảng bá Twitter" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một tweet trên tài khoản " +"Twitter tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Tên tài khoản OpenStreetMap hay địa chỉ thư điện tử" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Biểu thị nếu người dùng đã đăng nhập vào sửa dữ liệu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Kiểu phương tiện vận tải dùng cuối cùng để tìm đường" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Thấy" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Gửi lên Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Gửi lên Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "T_hôi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Ghi danh" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mọi người" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Bạn của bạn" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Chỉ bạn" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Chỉ tôi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Công khai" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Theo dõi" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Riêng tư" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Đây là đâu?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Chép vị trí" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Xuất ra ảnh" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Xuất phần hiển thị" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Xuất" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Bao gồm đường đi và người tạo" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Chung" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Hiện phím tắt" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Tìm kiếm" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Thoát" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Xem bản đồ" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Phóng to" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Thu nhỏ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bật/tắt thước đo" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Chuyển sang xem đường phố" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Chuyển sang xem từ trên trời" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Mở lớp hình dạng" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Mở lớp hình dạng…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Bật dịch vụ vị trí để tìm vị trí của bạn" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Thôi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Cài đặt vị trí" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Cài đặt tài khoản OpenStreetMap" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Phím tắt" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Giới thiệu Bản đồ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Chọn kiểu bản đồ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Thu nhỏ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Phóng to" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Chuyển đến chỗ đánh dấu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "In đường đi" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Bản đồ đang ngoại tuyến!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Bản đồ cần được kết nối mạng internet để các chức năng một cách đúng đắn, " +"nhưng không tìm thấy kết nối mạng nào." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kiểm tra lại kết nối và cài đặt ủy nhiệm của bạn." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Thêm đường đi mới" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Mở bằng ứng dụng khác" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Đánh dấu là hay dùng" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in vào đây" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Tài khoản OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Đăng nhập để chỉnh sửa bản đồ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Giúp đỡ cải tiến bản đồ bằng cách dùng\n" +"một tài khoản OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Thư điện tử" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mật khẩu" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Đăng nhập" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Không có tài khoản?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Rất tiếc, nó không làm việc. Vui lòng thử lại, hoặc truy cập\n" +"OpenStreetMap để đặt lại tài khoản của bạn." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Mã xác nhận không khớp, vui lòng thử lại." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Nhập vào mã xác nhận hiện ở trên" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Xác nhận" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Đã đăng nhập" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Tài khoản OpenStreetMap của bạn đang hoạt động." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Đăng xuất" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Đường" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Số nhà" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Mã vùng" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Thành phố" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Kiểu" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Không" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Thêm trường" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Chú thích" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Các thay đổi bản đồ sẽ khả kiến trên mọi bản đồ mà\n" +"nó dùng dữ liệu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Vừa dùng" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Tiếp theo" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Cung cấp thêm thông tin" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Bấm phím Enter để tìm kiếm" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Không tìm thấy kết quả nào" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Kéo thả để thay đổi thứ tự của đường đi" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Mở vị trí" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Mở" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Mở lớp hình dạng" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Bật/tắt khả kiến" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Tìm kiếm đường đi bằng GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Tìm kiếm đường đi bằng OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Hành trình chọn đường cho giao thông công cộng được cung cấp bởi GNOME\n" +"sử dụng dữ liệu bảng thời gian lấy về từ các công ty vận tải hay trung " +"gian.\n" +"Các công ty và trung gian không phải chịu trách nhiệm cho các kết quả hiển " +"thị.\n" +"GNOME không thể đảm bảo tính chính xác của hành trình và giờ giấc hiển thị.\n" +"Các tên và nhánh hiển thị coi như là các thương hiệu đã đăng ký khi áp dụng " +"được." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Hiện thêm các kết quả" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ẩn các điểm dừng và thông tin trung gian" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Hiển thị các điểm dừng và thông tin trung gian" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Khởi hành ngay" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Khởi hành bằng" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tới bằng" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Hiện" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Xe buýt" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Xe điện" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Xe lửa" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Xe điện ngầm" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Phà" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Vị trí hiện tại" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Độ chính xác: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Phóng to vào vị trí thêm!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Phóng to" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gặp lỗi khi tìm cấu trúc lát gạch trong thư mục" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gặp lỗi khi phân tích cú pháp XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Thiếu các thuộc tính cần thiết" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Không thể tìm thấy phần tử OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Một đường dẫn đến cấu trúc thư mục lát gạch" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "Hiển thị phiên bản của chương trình" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Chọn tài khoản" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Đang tải" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Chọn một địa điểm" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Facebook. Vui lòng chọn một " +"cái từ danh sách này." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Foursquare. Vui lòng chọn " +"một cái từ danh sách này." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in vào %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ghi một lời nhắn tùy chọn để check in vào %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Đã có lỗi xảy ra" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Không thể tìm thấy “%s” trong dịch vụ xã hội" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Không thể tìm thấy chỗ phù hợp để check-in vào vị trí này" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Giấy ủy nhiệm đã hết hạn, vui lòng mở Tài khoản trực tuyến để đang nhập và " +"bật tài khoản này" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Đường đi từ đây" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Thêm đích" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Đường đi đến đây" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Không thấy gì ở đây!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vị trí đã được thêm vào bản đồ, chú ý rằng cần chờ một thời gian trước khi " +"nó được hiển thị trên bản đồ và khi tìm kiếm sẽ có kết quả." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Bản đồ tại %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Hệ thống tập tin chỉ cho đọc" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Bạn không có đủ quyền hạn để lưu vào đây" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Thư mục không tồn tại" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Chưa xác định tên tập tin" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Không thể xuất hình vẽ" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "tọa độ không hợp lệ" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "lỗi phân tích" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "không hiểu dạng hình" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Yêu cầu đường đi gặp lỗi." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Không tìm thấy lộ trình nào." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Bắt đầu!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Mọi tập tin lớp" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "Gặp lỗi khi kết nối đến dịch vụ vị trí" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "Nhóm Việt hóa GNOME " + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "Ứng dụng bản đồ dành cho GNOME" + +#: src/mainWindow.js:520 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Bản quyền © 2011 – 2019 Red Hat, Inc. và các tác giả Bản đồ GNOME" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dữ liệu bản đồ bởi %s và những người đóng góp" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Tiêu đề bản đồ cung cấp bởi %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Kiểu tập tin không được hỗ trợ" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Gặp lỗi khi mở lớp" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Gặp lỗi khi mở GeoURI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Không tìm thấy dữ liệu bản thời gian cho lộ trình này." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Tên người dùng hay mật khẩu sai" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Thành công" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Yêu cầu sai" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Không thể tìm thấy đối tượng" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Xung đột, đã có ai đó vừa sửa đối tượng" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Đối tượng đã bị xóa" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lối hoặc quan hệ chỉ đến một con mà nó không tồn tại" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Tên" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Tên chính thức. Đây là cái thường xuất hiện trên chữ ký." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Địa chỉ" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Trang thông tin điện tử" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Trang thông tin điện tử chính thức. Dùng dạng thức URL cơ bản nhất ví dụ " +"http://example.com thay cho http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Điện thoại" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Số điện thoại. Dùng định dạng quốc tế, bắt đầu bằng dấu +. Hãy cẩn thận với " +"luật riêng tư địa phương, đặc biệt là các số điện thoại riêng." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Nên dùng dạng thức có bao gồm mã ngôn ngữ và tiêu đề bài viết như là ”vi:" +"Tiêu đề bài viết”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Giờ mở cửa" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Xem liên kết trong nhãn để nhận được hỗ trợ về định dạng." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Dân số" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Cao độ" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Cao độ (độ cao trên mực nước biển) của một điểm tính bằng mét." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Lối vào xe lăn" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Đồng ý" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Không" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Bị giới hạn" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Đã được thiết kế" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Truy cập mạng Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Có dây" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Thiết bị cuối" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Dịch vụ" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Tôn giáo" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Thuyết vật linh" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Phật giáo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Đạo cao đài" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cơ đốc giáo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Khổng giáo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Ấn Độ giáo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Đạo Giai-na" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Đạo Do Thái" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Hồi giáo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Đa tôn giáo" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Tà giáo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Khoa học học" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Đạo thần Nhật bản" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Đạo Sikh" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Thuyết duy linh" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Đạo Lão" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Thuyết phổ độ nhất thể" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Thầy mo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Đạo thờ lửa" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Nhà vệ sinh" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Ghi chú" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Thông tin được sử dụng để cung cấp thông tin các bản đồ khác về các thông " +"tin không-rõ-ràng về một phần tử, mục đích của tác giả khi tạo nó, hoặc gợi " +"ý cải tiến hơn nữa." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Chọn kiểu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Xong" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Dân số:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Cao độ:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Giờ mở cửa:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Truy cập Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Tôn giáo:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Nhà vệ sinh:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Lối vào xe lăn:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Điện thoại:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Gặp lỗi khi phân tích Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "có" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "bị giới hạn" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "không" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "được thiết kế" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Từ %s đến %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Đang tải tựa đề bản đồ để in ấn" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Bạn có thể bãi bỏ việc in ấn nếu việc đó diễn ra quá lâu" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hủy bỏ việc in" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Thêm thông qua vị trí" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gỡ bỏ thông qua vị trí" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Đảo ngược lộ trình" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Gặp lỗi khi mở URI" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gặp lỗi khi tải tập tin" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Thời gian ước tính: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tới lúc %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Tới" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Bắt đầu ở %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Bắt đầu" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Hiển thị chỉ dẫn đi bộ" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Ẩn chỉ dẫn đi bộ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Đi bộ %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Tải các lựa chọn trước" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Tải các lựa chọn sau" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Không tìm thấy lựa chọn trước nào." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Không tìm thấy lựa chọn sau nào." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d phút" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d giờ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d giờ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "suốt ngày đêm" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "từ bình minh đến khi hoàng hôn" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hàng ngày " + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "ngày nghỉ chung" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "ngày học sinh nghỉ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "chưa mở" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "có dây" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "thiết bị cuối" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "dịch vụ" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Chưa biết" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Trích" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f giờ" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f phút" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f giây" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s dặm" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "Quit" +#~ msgstr "Thoát" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Mở lớp hình dạng…" + +#~ msgid "OK" +#~ msgstr "Được" + +#~ msgid "Load Map Layer" +#~ msgstr "Tải lớp bản đồ" + +#~ msgid "Open Layer" +#~ msgstr "Mở lớp" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f dặm" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..0362bcd2 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,1691 @@ +# Chinese (China) translation for gnome-maps. +# Copyright (C) 2013-2019 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# tuhaihe <1132321739qq@gmail.com>, 2013. +# Tong Hui , 2014. +# YunQiang Su , 2015, 2016. +# Mingcong Bai , 2015, 2016, 2017, 2018. +# Dingzhong Chen , 2015, 2016, 2017, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-04-11 18:46+0000\n" +"PO-Revision-Date: 2019-04-13 21:40+0800\n" +"Last-Translator: Dingzhong Chen \n" +"Language-Team: Chinese (China) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Gtranslator 2.91.7\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地图" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "寻找世界各地的地点" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"地图应用帮您快速访问世界各地的地图。允许您快速定位到城市、街道或约会地点。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"地图应用使用了 OpenStreetMap 数据库,该数据库由全球成千上万的人们协同制作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"你甚至可以搜索特定类型的位置,比如“Pubs near Main Street, Boston”或“Hotels " +"near Alexanderplatz, Berlin”。" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME 项目" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "地图" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "一款简单的地图应用程序" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地图;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允许你的位置显示在地图上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最近查看的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最近查看的位置的座标。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "窗口大小" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "窗口大小(宽度和高度)。" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "窗口位置" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "窗口位置(水平和竖直)。" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "窗口最大化" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "窗口最大化状态" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "搜索结果的最大数量" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "来自 geocode 搜索结果的最大数量。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "存储最近地点的数量" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "存储最近拜访过地点的数量。" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "存储最近路线的数量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "存储最近使用过路线的数量。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 签到隐私设置" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 签到隐私设置。可能的值有:EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 签到隐私设置" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 签到隐私设置。可能的值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 签到同步到 Facebook" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成消息发布到 Foursquare 已经关联的 Facebook 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 签到同步到 Twitter" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成推文发布到 Foursquare 已经关联的 Twitter 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 用户名或电子邮件地址" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示用户是否已经登录以编辑 OpenStreetMap 数据。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "载入用过的交通类型来规划路线" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可见性" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "发到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "发到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "签到(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每个人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "仅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "仅限自己" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公开" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "关注者" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "这是哪里?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "复制位置信息" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "导出为图像" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "导出视图" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "导出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包括路线和标记" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "常规" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "显示快捷键" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜索" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "退出" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地图视图" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "放大" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "缩小" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切换比例尺" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "转到当前位置" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切换到街景视图" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切换到空中视图" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "打开图形图层" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "打开形状图层…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "开启定位服务来获取您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "地点设置" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "建立 OpenStreetMap 帐号" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "键盘快捷键(_K)" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "关于地图" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "转到当前位置" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "选择地图类型" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "缩小" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "放大" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "切换喜爱" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "打印路线" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "地图应用处于离线!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "地图应用需要有效的网络连接才能正常运行,但是未发现有效连接。" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "请检查您的网络连接和代理设置。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "添加到新路线" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "以其他程序打开" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "标记为喜爱" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在这里签到" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帐号" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登录以编辑地图" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"使用 OpenStreetMap 帐号\n" +"帮助完善地图。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "电子邮件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密码" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "登录" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "没有帐号?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"对不起,密码无效。请重试,或访问\n" +"OpenStreetMap 以重置密码。" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "验证码不匹配,请重试。" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "输入在上面显示的验证码" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "验证" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "已登录" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帐号已激活。" + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "退出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "门牌号码" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "邮政编码" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "类型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "无" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "添加字段" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "备注" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地图更改将会呈现在所有使用\n" +"OpenStreetMap 数据的地图上。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "下一步" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "显示更多信息" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "按下回车键开始搜索" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "未找到结果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖动以改变路线的顺序" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "打开位置" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "打开(_O)" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "打开图形图层" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切换可见" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "通过 GraphHopper 搜索路线" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "通过 OpenTripPlanner 搜索路线" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"公共交通的路线安排来自运输公司或代理商提供的时间表,由 GNOME 提供。\n" +"这些公司或代理商不为这些结果负责。\n" +"GNOME 不能担保这些路线安排或时间表的准确性。此处显示的名称和品牌在\n" +"适用时应看待为已注册商标。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "显示更多结果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隐藏途径停站及沿路信息" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "显示途径停站及沿路信息" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "现在动身" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "出发时间" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "到达时间" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "显示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公交车" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "有轨电车" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "火车" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "地铁" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡轮" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "当前位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "位置精度:%s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "放大以添加地点!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "放大" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "未在目录中找到地图区块结构" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "解析 XML 文档失败" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺失需要的属性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "指向本地区块目录结构的路径" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "显示该程序的版本" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "选择帐号" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "正在载入" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "选择地点" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "地图应用无法在 Facebook 中找到签到地点。请在列表中选择。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "地图应用无法在 Foursquare 中找到签到地点。请在列表中选择。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "签到于 %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "编写附加信息来签到 %s 。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "发生了一个错误" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社交服务中找不到“%s”" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "在此地无法找到符合的签到地点" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "证书已过期,请打开“在线帐号”登录并启用此帐号" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "从此处出发的路径" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "添加目的地" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "前往此处的路径" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "这里什么都没有找到!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "地点已添加到地图,注意它可能需要一段时间才能显示在地图上和搜索结果里。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f 处的地图.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "文件系统为只读" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您没有保存到那里的权限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "该目录不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "未指定文件名" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "无法导出视图" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "无效坐标" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "解析错误" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "未知几何方位" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "路线请求失败。" + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "没有找到路线。" + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "开始!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "全部图层文件" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "无法连接到定位服务" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "" +"tuhaihe <1132321739qq@gmail.com>, 2013\n" +"Tong Hui , 2014\n" +"Mingcong Bai , 2015, 2016, 2017, 2018\n" +"Dingzhong Chen , 2015-2018" + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "一款 GNOME 地图应用程序" + +#: src/mainWindow.js:520 +#| msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "版权所有 © 2011 – 2019 红帽公司和 GNOME 地图作者" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "地图数据来自 %s 和贡献者" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "地图图块由 %s 提供" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "文件类型未支持" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "打开图层失败" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "打开 GeoURI 失败" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "找不到该路线的时间表信息。" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正确的用户名或密码" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "错误的请求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到对象" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "冲突,别人刚修改了对象" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "对象已被删除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "道路或关系指向了不存在的子项" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "名称" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "官方名称。这通常就是标记上显示的东西。" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "网站" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方网站。尝试使用 URL 的最基本形式,例如 http://example.com 而不是 http://" +"example.com/index.html。" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "电话" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"电话号码。使用国际格式,以 + 加号开头。留心当地的隐私法律,特别是对于私人电话" +"号码。" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "维基百科" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式应该包含语言代码和文章标题如“zh_CN:文章标题”。" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "开放时间" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "请参阅标签中的链接来获得关于格式的帮助。" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "人口总数" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "海拔" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一点的海拔(海平面之上的高度),以米计。" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "轮椅通行" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "有" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "无" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "受限" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "指定" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "网络接入" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "有线" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "终端" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "服务" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "泛灵论" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "儒学" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "犹太教" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "伊斯兰教" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多宗教信仰" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "异教" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飞天面条神教" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "山达基" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "神道" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "锡克教" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "唯灵论" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神普救派" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "伏都教" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "琐罗亚斯德教" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "洗手间" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "备注" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用于提醒其他制图人的信息,比如关于元素的隐蔽信息、作者创建的意图,亦或进一步" +"完善的提示。" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "选择类型" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "完成" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "人口总数:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "海拔:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "开放时间:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "网络接入:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "洗手间:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "轮椅通行:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "电话:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "解析 Geo URI 失败" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "有" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "无" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "专用设施" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "从 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "正在加载地图图块以便打印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果打印时间太长你可以中止它" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止打印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "通过位置添加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "通过位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路线" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "打开 URI 失败" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "载入文件失败" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "估计时间:%s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "出发时间为 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "出发" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "到达时间为 %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "到达" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "显示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隐藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "载入上一个替代方案" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "载入下一个替代方案" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到上一个替代方案。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到下一个替代方案。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-m月%-d日" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s - %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d 分钟" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d 小时" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d 小时" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "全天" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "白天" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "公众假期" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "学校假期" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "未开放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有线" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "终端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服务" + +#. Translators: Accuracy of user location information +#: src/utils.js:219 +msgid "Unknown" +msgstr "未知" + +#. Translators: Accuracy of user location information +#: src/utils.js:222 +msgid "Exact" +msgstr "准确" + +#: src/utils.js:280 +#, javascript-format +msgid "%f h" +msgstr "%f 小时" + +#: src/utils.js:282 +#, javascript-format +msgid "%f min" +msgstr "%f 分钟" + +#: src/utils.js:284 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:295 +#, javascript-format +msgid "%s km" +msgstr "%s 千米" + +#. Translators: This is a distance measured in meters +#: src/utils.js:298 +#, javascript-format +msgid "%s m" +msgstr "%s 米" + +#. Translators: This is a distance measured in miles +#: src/utils.js:306 +#, javascript-format +msgid "%s mi" +msgstr "%s 英里" + +#. Translators: This is a distance measured in feet +#: src/utils.js:309 +#, javascript-format +msgid "%s ft" +msgstr "%s 英尺" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "退出" + +#~ msgid "OK" +#~ msgstr "确定" + +#~ msgid "Open Shape Layer…" +#~ msgstr "打开图形图层…" + +#~ msgid "Load Map Layer" +#~ msgstr "加载地图图层" + +#~ msgid "Open Layer" +#~ msgstr "打开图层" + +#~ msgid "%f km" +#~ msgstr "%f 千米" + +#~ msgid "%f m" +#~ msgstr "%f 米" + +#~ msgid "%f mi" +#~ msgstr "%f 英里" + +#~ msgid "%f ft" +#~ msgstr "%f 英尺" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "解析 GeoJSON 文件失败" + +#~ msgid "Country code: %s" +#~ msgstr "国家代码:%s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "最近已知的位置和精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "最近已知的位置(经纬度)和精度(米)。" + +#~ msgid "Description of last known location of user." +#~ msgstr "对最近已知的用户位置的描述。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "最近已知的位置 是否是用户手动设置的。" + +#~ msgid "I’m here!" +#~ msgstr "我在这!" + +#~ msgid "%f km²" +#~ msgstr "%f平方千米" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "From" +#~ msgstr "从" + +#~ msgid "Satellite" +#~ msgstr "卫星" + +#~ msgid "Track user location." +#~ msgstr "跟踪用户位置。" diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 00000000..0911015d --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,213 @@ +# Chinese (Hong Kong) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-08-30 18:59+0000\n" +"PO-Revision-Date: 2014-08-31 15:54+0800\n" +"Last-Translator: Chao-Hsiung Liao \n" +"Language-Team: Chinese (Hong Kong) \n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.3\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Maps 讓你可以快速存取世界上的地圖。它讓你快速的找到想找的位置,只要搜尋城市或街道,也可以定位要與朋友見面的場所。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Maps 使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "你甚至能搜尋指定的位置類型,像是“Pubs near Main Street, Boston“或是“Hotels near Alexanderplatz, Berlin“" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:303 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "地圖" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "視窗尺寸" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "視窗大小 (闊度與高度)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "視窗位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "上次知道的位置與準確度" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "上次知道的位置 (緯度與經度) 與準確度 (以米計)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "上次知道的位置描述" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "上次知道的使用者位置描述。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "使用者設定上次知道的位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "上次知道的位置是否是由使用者手動設定。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "關於" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "結束" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "這裏有什麼?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "我在這裏!" + +#: ../src/mainWindow.js:301 +msgid "translator-credits" +msgstr "Chao-Hsiung Liao , 2013" + +#: ../src/mainWindow.js:304 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: ../src/routeService.js:76 +msgid "No route found." +msgstr "找不到路線。" + +#: ../src/routeService.js:82 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: ../src/routeService.js:153 +msgid "Start!" +msgstr "開始!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "國家代碼:%s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "郵遞區號:%s" + +#: ../src/sidebar.ui.h:1 +msgid "To" +msgstr "終點" + +#: ../src/sidebar.ui.h:2 +msgid "From" +msgstr "起點" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "目前位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "準確" + +#: ../src/utils.js:179 +#, javascript-format +#| msgid " km²" +msgid "%f km²" +msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Street" +#~ msgstr "街道" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 00000000..7380cd29 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1912 @@ +# Chinese (Taiwan) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-03-27 21:17+0000\n" +"PO-Revision-Date: 2020-04-01 00:23+0800\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地圖" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "尋找世界上各個地方" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"《地圖》讓您可以快速存取世界上的地圖。它讓您快速的找到想找的位置,只要搜尋城" +"市或街道,也可以定位要與朋友見面的場所。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"《地圖》使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製" +"作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"您甚至能搜尋指定的位置類型,像是「Pubs near Main Street, Boston」或是" +"「Hotels near Alexanderplatz, Berlin」等。" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME 專案" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "地圖" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允許您的位置顯示在地圖上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最後檢視的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最後檢視位置的坐標。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "縮放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "縮放等級" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地圖類型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要顯示的地圖類型(街道、航空圖等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "視窗尺寸" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "視窗大小 (寬度與高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "視窗位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "要儲存的最近路線數" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "要儲存的最近到訪路線數。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 打卡隱私權設定值" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 打卡隱私權設定值。可能的數值有:EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 打卡隱私權設定值" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 打卡隱私權設定值。可能的數值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 打卡 Facebook 廣播" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Facebook 帳號連結的 Foursquare 帳號以貼文方式廣" +"播此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 打卡 Twitter 廣播" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Twitter 帳號連結的 Foursquare 帳號以推文方式廣播" +"此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 的使用者名稱或電子郵件位址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示使用者是否已登入可編輯 OpenStreetMap 資料。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "上次路線規劃時使用的交通類型" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可見狀態" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "張貼到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "張貼到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "打卡(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每個人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "僅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "僅限本人" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公開" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "跟隨" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "從這裡開始的路線" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "加入中間目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "到這裡的路線" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "這裡有什麼?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "複製位置" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "匯出檢視" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "匯出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包含路線和標記" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "顯示捷徑鍵" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜尋" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "結束" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地圖檢視" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拉近" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "拉遠" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切換縮放" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "前往目前位置" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切換為街道檢視" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切換為鳥瞰圖" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "開啟形狀圖層" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "開啟形狀圖層…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "開啟位置服務以尋找您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "位置設定值" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "設定 OpenStreetMap 帳號" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "匯出為影像" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "鍵盤捷徑鍵(_K)" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "關於地圖" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "前往目前位置" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "選擇地圖類型" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "拉遠" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "拉近" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "切換喜好" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "列印路線" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Maps 已離線!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Maps 需要使用網際網路連線才能正常運作,但找不到網際網路。" + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "請檢查您的連線與代理伺服器設定值。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "加入新的路線" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "標記為喜好" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在這裡檢查" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帳號" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登入以編輯地圖" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"協助改善地圖,使用\n" +"OpenStreetMap 帳號。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "電子郵件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密碼" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "登入" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "還沒有會員帳號嗎?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"抱歉,那沒有作用。請再試一次,或者參訪\n" +"OpenStreetMap以重置您的密碼。" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "驗證碼不符合,請再試一次。" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "輸入上面顯示的驗證碼" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "驗證" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "已登入" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帳號已啟用。" + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "登出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "門牌號碼" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "郵遞區號" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "類型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "沒有" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "加入欄位" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "評註" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地圖更動資訊會在所有利用 OpenStreetMap\n" +" 資料的地圖中出現。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "下一個" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "顯示更多資訊" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "找不到結果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖曳以修改路徑順序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "開啟位置" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "複製" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "傳送至…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "開啟形狀圖層" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "開啟(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切換可見性" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "透過 GraphHopper 搜尋路線" + +#: data/ui/sidebar.ui:364 +#, fuzzy +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"大眾運輸的路線規劃是由 GNOME 提供\n" +"使用的時刻表資料來自大眾運輸公司或機構。\n" +"這些大眾運輸公司或機構不對顯示的結果負責。\n" +"GNOME 亦無法保證所顯示的規劃與行程的正確性。\n" +"此處所顯示的名稱或商標為其註冊商標所有人所有。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "顯示更多結果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隱藏中間站與資訊" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "顯示中間站與資訊" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "正在離開" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "離開於" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "抵達於" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "顯示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公車" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "輕軌" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "火車" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "捷運" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡輪" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飛機" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "目前位置" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "拉近以加入位置!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "拉近" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "無法在目錄中找到拼貼結構" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "無法解析 XML 文件" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺少了必要的屬性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "本地端拼貼目錄結構的路徑" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "顯示程式版本" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "忽略網路可用性" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "選擇一個帳號" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "載入中" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "選擇一個地點" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Facebook 中打卡的地點。請從清單中選擇一個。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Foursquare 中打卡的地點。請從清單中選擇一個。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "打卡於:%s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "寫些關於在 %s 打卡的訊息。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "發生錯誤" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社群服務中找不到「%s」" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "找不到適合的地點來打卡" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "憑證已過期,請開啟線上帳號再次登入並啟用這個帳號" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "這裡找不到東西!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"位置已加到地圖上,請注意在顯示在地圖上與搜尋結果中之前可能需要一段時間。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "於 %f 的地圖, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "檔案系統是唯讀的" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您沒有在該處儲存檔案的權限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "目錄不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "沒有指定檔案名稱" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "無法匯出檢視" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "無效的坐標" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析錯誤" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "不明的位置大小" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "找不到路線。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "開始!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "所有圖層檔案" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "無法連接位置服務" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"Chao-Hsiung Liao , 2013\n" +"Yi-Jyun Pan , 2020" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "著作權所有 © 2011 – 2019 Red Hat, Inc. 和 GNOME 地圖作者群" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "來自 %s 與貢獻者的地圖資料" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "由 %s 提供的地圖圖塊" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "搜尋使用 %2$s 並由 %1$s 提供" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "檔案類型不支援" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "無法開啟圖層" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "無法開啟 GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正確的使用者名稱或密碼" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "錯誤的要求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到物件" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "衝突,有其他人剛剛修改了這個物件" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "物件已刪除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "路徑或關係參照到不存在的子項" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "名稱" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "正式的名稱。這通常會出現在招牌上。" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "網站" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方網站。嘗試使用最基本形式的 URL ,例如 HTTP://example.com ,而不是 HTTP://" +"example.com/index.html。" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "電話" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"電話號碼。使用國際格式,以 + 號開頭。提防當地的隱私權法律,特別是私人電話號" +"碼。" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "維基百科" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式應該包括語言代碼和文章標題,例如「en:Article title」。" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "開放時間" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "請參閱標籤的連結以取得格式的求助訊息。" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "資料母體" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "海拔高度" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一點的高度,以公尺計 (自海平面以上的高度)。" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "使用輪椅" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "是" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "否" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "有限制" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "特定" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "網際網路存取" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "有線網路" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "網路終端" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "服務" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "萬物有靈論" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "儒教" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "猶太教" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "伊斯蘭教" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多種宗教" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "異教" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飛天義大利麵神教" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "科學神教" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "神道教" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "錫克教" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "精神主義" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神論的普遍主義" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "巫毒教" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "拜火教" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "廁所" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "備註" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用來通知其他製圖者關於元件、建立時作者的目的、與更多資訊提示的不明顯資訊。" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "選擇類型" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "未命名位置" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "人口:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "海拔高度:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "開放時間:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "網際網路存取:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "廁所:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "使用輪椅:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "電話:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "無法分析 Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "是" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "否" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "特定" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "在 OpenStreetMap 找不到位置" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap 網址無效" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "網址中的座標無效" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "網址不支援" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "從 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "載入地圖拼貼以供列印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果這花費的時間太長,您可以放棄列印" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "關於列印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "透過位置增加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "透過位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路線" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "加入 %s 至 %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "無法開啟 URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "使用 %s 開啟" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "無法載入檔案" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "預估時間:%s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "行程表由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "開始於 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "開始" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "抵達於 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "抵達" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "顯示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隱藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "載入較早的替代路線" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "載入較晚的替代路線" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到較早的替代路線。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到較晚的替代路線。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b%e日" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "找不到這條路線的時刻表資料。" + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "找不到這個路線的提供者。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d 分鐘" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d 小時" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d 小時" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "在時鐘周圍" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "從日出到日落" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "共通假日" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "學校假日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "不開放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有線網路" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "網路終端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服務" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "準確" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f 小時" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f 分鐘" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s 公里" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s 公尺" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s 英哩" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s 英呎" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "在 %s 繼續走" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "繼續走" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "在 %s 左轉" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "左轉" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "在 %s 稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "在 %s 急左轉" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "急左轉" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "在 %s 右轉" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "右轉" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "在 %s 稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "在 %s 急右轉" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "急右轉" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在圓環中,從 %s 離開" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "在圓環中,離開往 %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "走圓環" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "搭乘電梯到 %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "搭乘電梯" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 進行右迴轉" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "進行右迴轉" + +#~ msgid "Add destination" +#~ msgstr "加入目的地" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "以其他應用程式開啟" + +#~ msgid "Press enter to search" +#~ msgstr "按下 Enter 開始搜尋" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "透過 OpenTripPlanner 搜尋路徑" + +#~ msgid "Quit" +#~ msgstr "結束" + +#~ msgid "OK" +#~ msgstr "確定" + +#~ msgid "Load Map Layer" +#~ msgstr "載入地圖圖層" + +#~ msgid "Open Layer" +#~ msgstr "開啟圖層" + +#~ msgid "%f km" +#~ msgstr "%f 公里" + +#~ msgid "%f m" +#~ msgstr "%f 公尺" + +#~ msgid "%f mi" +#~ msgstr "%f 哩" + +#~ msgid "%f ft" +#~ msgstr "%f 呎" + +#~ msgid "Position not found" +#~ msgstr "找不到地點" + +#~ msgctxt "shortcut window" +#~ msgid "Show help" +#~ msgstr "顯示求助文件" + +#~ msgid "General" +#~ msgstr "一般" + +#~ msgid "Search" +#~ msgstr "搜尋" + +#~ msgid "Country code: %s" +#~ msgstr "國家代碼:%s" + +#~ msgid "Population: %s" +#~ msgstr "資料母體:%s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "使用輪椅:%s" + +#~ msgid "_Share" +#~ msgstr "分享(_S)" + +#~ msgid "Last known location and accuracy" +#~ msgstr "上次知道的位置與準確度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "上次知道的位置 (緯度與經度) 與準確度 (以公尺計)" + +#~ msgid "Description of last known location of user." +#~ msgstr "上次知道的使用者位置描述。" + +#~ msgid "User set last known location" +#~ msgstr "使用者設定上次知道的位置" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "上次知道的位置是否是由使用者手動設定。" + +#~ msgid "I’m here!" +#~ msgstr "我在這裡!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "終點" + +#~ msgid "From" +#~ msgstr "起點" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/scripts/README b/scripts/README new file mode 100644 index 00000000..2be7d78f --- /dev/null +++ b/scripts/README @@ -0,0 +1,18 @@ +SCRIPTS +======= + +extractPoiTypesFromID.js +------------------------ + +Extracts the POI types (presets) that the iD editor uses to JSON for us to consume. + +Run the extractPoiTypesFromID.js script against a checkout of iD (https://github.com/openstreetmap/iD) + +$ ./extractPoiTypesFromID.js > osm-types.json + +This script would be run by upstream before making a release of gnome-maps if an updated version +of the iD editor is available with updated OSM types preset and/or new or updated translations +of those. +Check the resulting .json file (i.e. check size and possibly diff against the current version). +Copy the result to data/osm-types.json + diff --git a/scripts/extractPoiTypesFromID.js b/scripts/extractPoiTypesFromID.js new file mode 100755 index 00000000..73dc226a --- /dev/null +++ b/scripts/extractPoiTypesFromID.js @@ -0,0 +1,142 @@ +#!/usr/bin/env gjs + +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Script to generate a simplified JSON mapping file for POI types from the + * presets definitions from the iD Web-based OpenStreetMap editor + * + * Usage: ./extractPoiTypesFromID.js > osm-types.json + * + */ + +const Gio = imports.gi.Gio; + +const ByteArray = imports.byteArray; + +const PRESETS_PATH = 'data/presets/presets'; +const LOCALES_PATH = 'dist/locales'; +const PRESET_TYPES = [ 'aeroway', + 'amenity', + 'leisure', + 'office', + 'place', + 'shop', + 'tourism' ]; + +const OUTPUT = {}; + +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function parseJson(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let {tags, name} = JSON.parse(getBufferText(buffer)); + + for (let key in tags) { + let value = tags[key]; + + OUTPUT[key + '/' + value] = {'title': {'C': name}}; + } +} + +function processType(type, basePath) { + let dirPath = [basePath, PRESETS_PATH, type].join('/'); + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + parseJson(dirPath, file.get_name()); + } +} + +function processTypes(basePath) { + PRESET_TYPES.forEach(function(type) { + processType(type, basePath); + }); +} + +function processLocale(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let object = JSON.parse(getBufferText(buffer)); + let lang = fileName.substring(0, fileName.indexOf('.json')); + + for (let type in OUTPUT) { + let name; + + try { + name = object[lang].presets.presets[type].name; + } catch (ex) { + continue; + } + + OUTPUT[type].title[lang] = name; + } +} + +function processLocales(basePath) { + let dirPath = basePath + '/' + LOCALES_PATH; + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*.json', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + processLocale(dirPath, file.get_name()); + } +} + +function outputJson() { + print(JSON.stringify(OUTPUT, null, 2)); +} + +function main(args) { + let path = args[0]; + + processTypes(path); + processLocales(path); + + outputJson(); +} + +main(ARGV); diff --git a/src/accountListBox.js b/src/accountListBox.js new file mode 100644 index 00000000..924a8a96 --- /dev/null +++ b/src/accountListBox.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const Goa = imports.gi.Goa; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var AccountRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/account-row.ui', + InternalChildren: [ 'providerLabel', + 'identityLabel', + 'providerImage', + 'attentionNeededImage' ], +}, class AccountRow extends Gtk.ListBoxRow { + _init(params) { + this.account = params.account; + delete params.account; + + super._init(params); + + let account = this.account.get_account(); + + this._providerLabel.label = account.provider_name; + this._identityLabel.label = account.presentation_identity; + this._providerImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + this._attentionNeededImage.visible = account.attention_needed; + } +}); + +var AccountListBox = GObject.registerClass({ + Signals: { + 'account-selected': { param_types: [Goa.Object] } + }, +}, class AccountListBox extends Gtk.ListBox { + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + Application.checkInManager.connect('accounts-refreshed', () => this.refresh()); + + this.connect('row-activated', + (list, row) => this.emit('account-selected', row.account)); + + this.refresh(); + } + + refresh() { + let accounts = Application.checkInManager.accounts; + + this.forall(function(row) { + row.destroy(); + }); + + accounts.forEach((account) => this.add(new AccountRow({ account: account }))); + } +}); diff --git a/src/address.js b/src/address.js new file mode 100644 index 00000000..0d171840 --- /dev/null +++ b/src/address.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for address formatting. + */ + +const Format = imports.format; + +/** + * Translation lookup table for street name and house number. + * First argument is the street name and the second the housenumber. + * Based on examples from https://en.wikipedia.org/wiki/Address#Address_format + * Currently don't include address formats for i.e. China and Japan as those + * formats differ from the Western ones and would need additional handling + * when printing place addresses (currently we assume there is a street name + * and house number). + */ +const FORMAT_MAP = { + 'AI': '%2$s %1$s', + 'AL': '%1$s %2$s̈́', + 'AR': '%1$s %2$s', + 'AS': '%1$s %2$s', + 'AU': '%2$s %1$s', + 'AX': '%1$s %2$s', + 'BA': '%1$s %2$s', + 'BD': '%1$s. %2$s', + 'BE': '%1$s %2$s', + 'BM': '%2$s %1$s', + 'BR': '%1$s, %2$s', + 'BY': '%1$s, д. %2$s', + /* if we had access to state codes, we could add a special case for + * Quebec format + */ + 'CA': '%2$s %1$s', + 'CH': '%1$s %2$s', + 'CL': '%1$s No° %2$s', + 'CZ': '%1$s %2$s', + 'CY': '%1$s %2$s', + 'DE': '%1$s %2$s', + 'DK': '%1$s %2$s', + 'EE': '%1$s %2$s', + 'ES': '%1$s, %2$s', + 'FI': '%1$s %2$s', + 'FK': '%2$s %1$s', + 'FO': '%1$s %2$s', + 'FR': '%2$s, %1$s', + 'GB': '%2$s %1$s', + 'GG': '%2$s %1$s', + 'GL': '%1$s %2$s', + 'GR': '%1$s %2$s', + 'HK': '%2$s %1$s', + 'HR': '%1$s %2$s', + 'HU': '%1$s %2$s', + 'IE': '%2$s %1$s', + 'IL': '%2$s %1$s', + 'IS': '%1$s %2$s', + 'IM': '%2$s %1$s', + 'IN': '%2$s %1$s', + 'ID': '%1$s No. %2$s', + 'IR': '%1$s %2$s', + 'IT': '%1$s %2$s', + 'IQ': '%1$s %2$s', + 'JE': '%2$s %1$s', + 'KR': '%1$s %2$s', + 'KY': '%2$s %1$s', + 'LI': '%1$s %2$s', + 'LK': '%2$s %1$s', + 'LU': '%1$s %2$s', + 'LV': '%1$s %2$s', + 'ME': '%1$s %2$s', + 'MO': '%1$s%2$s', + 'MS': '%2$s %1$s', + 'MY': '%2$s $1%s', + 'MX': '%1$s No. %2$s', + 'NL': '%1$s %2$s', + 'NO': '%1$s %2$s', + 'NZ': '%2$s %1$s', + 'OM': '%1$s, %2$s', + 'PE': '%1$s %2$s', + 'PH': '%2$s %1$s', + 'PN': '%2$s %1$s', + 'PK': '%2$s, %1$s', + 'PL': '%1$s %2$s', + 'PT': '%1$s %2$s', + 'RO': '%1$s, nr. %2$s', + 'RS': '%1$s %2$s', + 'RU': '%1$s, д. %2$s', + 'SA': '%2$s %1$s', + 'SE': '%1$s %2$s', + 'SG': '%2$s %1$s', + 'SH': '%2$s %1$s', + 'SJ': '%1$s %2$s', + 'SK': '%1$s %2$s', + 'SL': '%1$s %2$s', + 'TC': '%2$s %1$s', + 'TR': '%1$s %2$s', + 'TW': '%1$s, %2$s̈́', + 'UK': 'вул. %1$s, буд. %2$s', + 'US': '%2$s %1$s', + 'VG': '%2$s %1$s', + 'VI': '%2$s %1$s', + 'VN': 'số %2$s %1$s' +} + +function streetAddressForCountryCode(streetName, housenumber, countryCode) { + let format = FORMAT_MAP[countryCode]; + + if (format) + return Format.vprintf(format, [streetName, housenumber]); + else + return Format.vprintf('%s %s', [housenumber, streetName]); +} diff --git a/src/application.js b/src/application.js new file mode 100644 index 00000000..a4bee15b --- /dev/null +++ b/src/application.js @@ -0,0 +1,322 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const WebKit2 = imports.gi.WebKit2; + +const CheckIn = imports.checkIn; +const ContactPlace = imports.contactPlace; +const Format = imports.format; +const Geoclue = imports.geoclue; +const MainWindow = imports.mainWindow; +const Maps = imports.gi.GnomeMaps; +const OSMEdit = imports.osmEdit; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const PlaceStore = imports.placeStore; +const RoutingDelegator = imports.routingDelegator; +const RouteQuery = imports.routeQuery; +const Settings = imports.settings; +const Utils = imports.utils; + +// used globally +var application = null; +var settings = null; +var placeStore = null; +var routingDelegator = null; +var geoclue = null; +var networkMonitor = null; +var checkInManager = null; +var contactStore = null; +var osmEdit = null; +var normalStartup = true; +var routeQuery = null; + +const _ensuredTypes = [WebKit2.WebView, + OSMTypeSearchEntry.OSMTypeSearchEntry]; + +var Application = GObject.registerClass({ + Properties: { + 'connected': GObject.ParamSpec.boolean('connected', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE) + }, +}, class Application extends Gtk.Application { + + set connected(p) { + this._connected = p; + this.notify('connected'); + } + + get connected() { + return this._connected; + } + + _init() { + /* Translators: This is the program name. */ + GLib.set_application_name(_("Maps")); + + /* Needed to be able to use in UI files */ + _ensuredTypes.forEach((type) => GObject.type_ensure(type)); + + super._init({ application_id: 'org.gnome.Maps', + flags: Gio.ApplicationFlags.HANDLES_OPEN }); + this._connected = false; + + this.add_main_option('local', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.FILENAME, + _("A path to a local tiles directory structure"), + null); + + this.add_main_option('version', 'v'.charCodeAt(0), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, + _("Show the version of the program"), null); + + this.add_main_option('force-online', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + _("Ignore network availability"), + null); + + this.connect('handle-local-options', (app, options) => { + if (options.contains('local')) { + let variant = options.lookup_value('local', null); + this.local_tile_path = variant.deep_unpack(); + normalStartup = false; + } else if (options.contains('version')) { + print(pkg.version); + /* quit the invoked process after printing the version number + * leaving the running instance unaffected + */ + return 0; + } else if (options.contains('force-online')) { + this._forceOnline = true; + } + + return -1; + }); + } + + _checkNetwork() { + this.connected = + this._forceOnline || + networkMonitor.connectivity === Gio.NetworkConnectivity.FULL; + } + + _showContact(id) { + contactStore.lookup(id, (contact) => { + this.mark_busy(); + if (!contact) { + this.unmark_busy(); + return; + } + contact.geocode(() => { + this.unmark_busy(); + this._mainWindow.mapView.showContact(contact); + }); + }); + } + + _onShowContactActivate(action, parameter) { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + + let id = parameter.deep_unpack(); + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this. _showContact(id); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._showContact(id); + }); + } + } + + _onOsmAccountSetupActivate() { + let dialog = osmEdit.createAccountDialog(this._mainWindow, false); + + dialog.show(); + dialog.connect('response', () => dialog.destroy()); + } + + _addContacts() { + let contacts = contactStore.get_contacts(); + + this._addContactsRecursive(contacts, 0); + } + + _addContactsRecursive(contacts, index) { + if (index < contacts.length) { + let contact = contacts[index]; + + contact.geocode(() => { + contact.get_places().forEach((p) => { + if (!p.location) + return + + Utils.debug('Adding contact address: ' + p.name); + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + placeStore.addPlace(place, PlaceStore.PlaceType.CONTACT); + }); + + this._addContactsRecursive(contacts, index + 1); + }); + } + } + + _initPlaceStore() { + placeStore = new PlaceStore.PlaceStore({ + recentPlacesLimit: settings.get('recent-places-limit'), + recentRoutesLimit: settings.get('recent-routes-limit') + }); + try { + placeStore.load(); + } catch (e) { + log('Failed to parse Maps places file, ' + + 'subsequent writes will overwrite the file!'); + } + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this._addContacts(); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._addContacts(); + }); + } + } + + vfunc_startup() { + super.vfunc_startup(); + + GtkClutter.init(null); + + Utils.loadStyleSheet(Gio.file_new_for_uri('resource:///org/gnome/Maps/application.css')); + + application = this; + this._initServices(); + + Utils.addActions(this, { + 'show-contact': { + paramType: 's', + onActivate: this._onShowContactActivate.bind(this) + }, + 'osm-account-setup': { + onActivate: this._onOsmAccountSetupActivate.bind(this) + }, + 'quit': { + onActivate: () => this.quit(), + accels: ['Q'] + } + }); + + Gtk.IconTheme.get_default().append_search_path(GLib.build_filenamev([pkg.pkgdatadir, + 'icons'])); + this._initPlaceStore(); + } + + _initServices() { + settings = Settings.getSettings('org.gnome.Maps'); + routeQuery = new RouteQuery.RouteQuery(); + routingDelegator = new RoutingDelegator.RoutingDelegator({ query: routeQuery }); + geoclue = new Geoclue.Geoclue(); + networkMonitor = Gio.NetworkMonitor.get_default(); + networkMonitor.connect('network-changed', + this._checkNetwork.bind(this)); + checkInManager = new CheckIn.CheckInManager(); + contactStore = new Maps.ContactStore(); + contactStore.load(); + osmEdit = new OSMEdit.OSMEdit(); + } + + _createWindow() { + if (this._mainWindow) + return; + + this._mainWindow = new MainWindow.MainWindow({ application: this }); + this._mainWindow.connect('destroy', () => this._onWindowDestroy()); + if (GLib.getenv('MAPS_DEBUG') === 'focus') { + this._mainWindow.connect('set-focus', (window, widget) => { + log('* focus widget: %s'.format(widget)); + }); + } + } + + vfunc_dbus_register(connection, path) { + super.vfunc_dbus_register(connection, path); + return true; + } + + vfunc_dbus_unregister(connection, path) { + super.vfunc_dbus_register(connection, path); + } + + vfunc_activate() { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + } + + _openInternal(files) { + if (!this._mainWindow || !this._mainWindow.mapView.view.realized) + return; + + let uri = files[0].get_uri(); + let scheme = GLib.uri_parse_scheme(uri); + + if (scheme === 'geo') { + /* we get an uri that looks like geo:///lat,lon, remove slashes */ + let geoURI = uri.replace(/\//g, ''); + this._mainWindow.mapView.goToGeoURI(geoURI); + } else if (scheme === 'http' || scheme === 'https') { + this._mainWindow.mapView.goToHttpURL(uri); + } else { + this._mainWindow.mapView.openShapeLayers(files); + } + } + + vfunc_open(files) { + normalStartup = false; + this.activate(); + + let mapView = this._mainWindow.mapView; + if (mapView.view.realized) + this._openInternal(files); + else + mapView.view.connect('notify::realized', + this._openInternal.bind(this, files)); + } + + _onWindowDestroy(window) { + this._mainWindow = null; + } +}); diff --git a/src/checkIn.js b/src/checkIn.js new file mode 100644 index 00000000..e314da7a --- /dev/null +++ b/src/checkIn.js @@ -0,0 +1,178 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Goa = imports.gi.Goa; +const Gtk = imports.gi.Gtk; + +const CheckInDialog = imports.checkInDialog; +const FacebookBackend = imports.facebookBackend; +const FoursquareBackend = imports.foursquareBackend; + +var CheckInManager = GObject.registerClass({ + Signals: { + 'accounts-refreshed': { } + }, + Properties: { + 'hasCheckIn': GObject.ParamSpec.boolean('hasCheckIn', + '', + '', + GObject.ParamFlags.READABLE) + } +}, class CheckInManager extends GObject.Object { + _init() { + super._init(); + + try { + this._goaClient = Goa.Client.new_sync(null); + } catch (e) { + log('Error creating GOA client: %s'.format(e.message)); + } + + this._accounts = []; + this._authorizers = {}; + this._backends = {}; + + this._initBackends(); + + if (this._goaClient) { + this._goaClient.connect('account-added', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-changed', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-removed', + this._refreshGoaAccounts.bind(this)); + } + + this._refreshGoaAccounts(); + } + + _initBackends() { + let facebookBackend = new FacebookBackend.FacebookBackend(); + this._backends[facebookBackend.name] = facebookBackend; + + let foursquareBackend = new FoursquareBackend.FoursquareBackend(); + this._backends[foursquareBackend.name] = foursquareBackend; + } + + _refreshGoaAccounts() { + if (!this._goaClient) + return; + let accounts = this._goaClient.get_accounts(); + this._accounts = []; + this._accountsCount = 0; + this._authorizers = {}; + + accounts.forEach((object) => { + if (!object.get_account()) + return; + + if (!object.get_maps()) + return; + + let accountId = object.get_account().id; + this._accounts.push(object); + + this._authorizers[accountId] = this._getBackend(object).createAuthorizer(object); + }); + + this.emit('accounts-refreshed'); + this.notify('hasCheckIn'); + } + + get client() { + return this._goaClient; + } + + get accounts() { + return this._accounts; + } + + get hasCheckIn() { + return this._accounts.length > 0; + } + + _getAuthorizer(account) { + return this._authorizers[account.get_account().id]; + } + + _getBackend(account) { + return this._backends[account.get_account().provider_type]; + } + + performCheckIn(account, checkIn, callback, cancellable) { + this._getBackend(account) + .performCheckIn(this._getAuthorizer(account), checkIn, callback, cancellable); + } + + findPlaces(account, latitude, longitude, distance, callback, cancellable) { + this._getBackend(account) + .findPlaces(this._getAuthorizer(account), latitude, longitude, distance, callback, cancellable); + } + + showCheckInDialog(parentWindow, place, matchPlace) { + let dialog = new CheckInDialog.CheckInDialog({ transient_for: parentWindow, + matchPlace: matchPlace, + place: place }); + let response = dialog.run(); + dialog.destroy(); + + let message = null; + + switch (response) { + case CheckInDialog.Response.FAILURE_NO_PLACES: + if (matchPlace) + /* Translators: %s is the place name that user wanted to check-in */ + message = _("Cannot find “%s” in the social service").format(place.name); + else + message = _("Cannot find a suitable place to check-in in this location"); + break; + case CheckInDialog.Response.FAILURE_GET_PLACES: + if (dialog.error.code === 401) + message = _("Credentials have expired, please open Online Accounts to sign in and enable this account"); + else + message = dialog.error.message; + break; + } + + if (message) { + let messageDialog = new Gtk.MessageDialog({ transient_for: parentWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: message }); + messageDialog.run(); + messageDialog.destroy(); + } + } +}); + +var CheckIn = class { + _init() { + this.message = null; + this.place = null; + this.privacy = null; + this.broadcastFacebook = false; + this.broadcastTwitter = false; + } +}; diff --git a/src/checkInDialog.js b/src/checkInDialog.js new file mode 100644 index 00000000..7b65cf27 --- /dev/null +++ b/src/checkInDialog.js @@ -0,0 +1,288 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const AccountListBox = imports.accountListBox; +const Application = imports.application; +const CheckIn = imports.checkIn; +const SocialPlaceListBox = imports.socialPlaceListBox; +const SocialPlaceMatcher = imports.socialPlaceMatcher; + +var Response = { + SUCCESS: 0, + CANCELLED: 1, + FAILURE_NO_PLACES: 2, + FAILURE_GET_PLACES: 3, + FAILURE_ACCOUNT_DISABLED: 4, + FAILURE_CHECKIN_DISABLED: 5 +}; + +var CheckInDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/check-in-dialog.ui', + InternalChildren: [ 'cancelButton', + 'okButton', + 'stack', + 'accountFrame', + 'placeScrolledWindow', + 'placeNotFoundInfoBar', + 'placeNotFoundLabel', + 'messageInfoLabel', + 'messageInfoAccountImage', + 'messageTextView', + 'facebookOptionsGrid', + 'facebookOptionsPrivacyComboBox', + 'foursquareOptionsGrid', + 'foursquareOptionsPrivacyComboBox', + 'foursquareOptionsBroadcastFacebookCheckButton', + 'foursquareOptionsBroadcastTwitterCheckButton' ], +}, class CheckInDialog extends Gtk.Dialog { + _init(params) { + this._place = params.place; + delete params.place; + + this._matchPlace = params.matchPlace; + delete params.matchPlace; + + // This is a construct-only property and cannot be set by GtkBuilder + params.use_header_bar = true; + + super._init(params); + + this._account = null; + this._checkIn = new CheckIn.CheckIn(); + this.error = null; + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + Application.checkInManager.connect('accounts-refreshed', + () => this._onAccountRefreshed()); + + this._initHeaderBar(); + this._initWidgets(); + } + + _initHeaderBar() { + this._cancelButton.connect('clicked', + () => this._cancellable.cancel()); + + this._okButton.connect('clicked', () => this._startCheckInStep()); + } + + _initWidgets() { + // Limitations in Gjs means we can't do this in UI files yet + this._accountListBox = new AccountListBox.AccountListBox({ visible: true }); + this._accountFrame.add(this._accountListBox); + + this._placeListBox = new SocialPlaceListBox.SocialPlaceListBox({ visible: true }); + this._placeScrolledWindow.add(this._placeListBox); + + Application.settings.bind('checkin-facebook-privacy', + this._facebookOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-privacy', + this._foursquareOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-facebook', + this._foursquareOptionsBroadcastFacebookCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-twitter', + this._foursquareOptionsBroadcastTwitterCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + this._accountListBox.connect('account-selected', (list, account) => { + this._account = account; + this._startPlaceStep(); + }); + + this._placeListBox.connect('place-selected', (list, place) => { + this._checkIn.place = place; + this._startMessageStep(); + }); + } + + vfunc_show() { + this._startup(); + super.vfunc_show(); + } + + _startup() { + let accounts = Application.checkInManager.accounts; + + if (accounts.length > 1) + this._startAccountStep(); + else if (accounts.length === 1) { + this._account = Application.checkInManager.accounts[0]; + this._startPlaceStep(); + } else { + Mainloop.idle_add(() => { + this.response(Response.FAILURE_CHECKIN_DISABLED); + }); + } + } + + _onAccountRefreshed() { + let accounts = Application.checkInManager.accounts; + + if (!Application.checkInManager.hasCheckIn) + this.response(Response.FAILURE_CHECKIN_DISABLED); + else if (this._account) { + for (let account of accounts) { + if (this._account.get_account().id === account.get_account().id) + return; + } + + this.response(Response.FAILURE_ACCOUNT_DISABLED); + } + } + + _startAccountStep() { + this.set_title(_("Select an account")); + this._stack.set_visible_child_name('account'); + } + + _startPlaceStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + Application.checkInManager.findPlaces(this._account, + this._place.location.latitude, + this._place.location.longitude, + 100, + this._onFindPlacesFinished.bind(this), + this._cancellable); + } + + _onFindPlacesFinished(account, places, error) { + if (!error) { + if (places.length === 0) { + this.response(Response.FAILURE_NO_PLACES); + return; + } + + let matches = SocialPlaceMatcher.match(this._place, places); + + if (matches.exactMatches.length === 1 && this._matchPlace) { + this._checkIn.place = matches.exactMatches[0]; + this._startMessageStep(); + } else { + this.set_title(_("Select a place")); + this._placeListBox.matches = matches; + + if (this._matchPlace) { + if (this._account.get_account().provider_type === 'facebook') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Facebook. Please select one from this list."); + else if (this._account.get_account().provider_type === 'foursquare') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Foursquare. Please select one from this list."); + } else + this._placeNotFoundInfoBar.hide(); + + this._stack.set_visible_child_name('place'); + } + } else { + this.error = error; + this.response(Response.FAILURE_GET_PLACES); + } + } + + _startMessageStep() { + /* Translators: %s is the name of the place to check in. + */ + this.set_title(_("Check in to %s").format(this._checkIn.place.name)); + this._stack.set_visible_child_name('message'); + + this._messageTextView.grab_focus(); + this._okButton.show(); + + let account = this._account.get_account(); + + /* Translators: %s is the name of the place to check in. + */ + let labelMessageInfo = _("Write an optional message to check in to %s."); + this._messageInfoLabel.label = labelMessageInfo.format('%s'.format(this._checkIn.place.link, + this._checkIn.place.name)); + this._messageInfoAccountImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + + let optionsGrids = { 'facebook': this._facebookOptionsGrid, + 'foursquare': this._foursquareOptionsGrid }; + + for (let provider in optionsGrids) + if (provider === account.provider_type) + optionsGrids[provider].show(); + else + optionsGrids[provider].hide(); + } + + _startCheckInStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + this._okButton.hide(); + + let message = this._messageTextView.buffer.text; + let privacy; + + if (this._account.get_account().provider_type === 'facebook') + privacy = this._facebookOptionsPrivacyComboBox.active_id; + else if (this._account.get_account().provider_type === 'foursquare') + privacy = this._foursquareOptionsPrivacyComboBox.active_id; + + let broadcastFacebook = this._foursquareOptionsBroadcastFacebookCheckButton.active; + let broadcastTwitter = this._foursquareOptionsBroadcastTwitterCheckButton.active; + + this._checkIn.message = message; + this._checkIn.privacy = privacy; + this._checkIn.broadcastFacebook = broadcastFacebook; + this._checkIn.broadcastTwitter = broadcastTwitter; + + Application.checkInManager.performCheckIn(this._account, + this._checkIn, + this._onPerformCheckInFinished.bind(this), + this._cancellable); + } + + _onPerformCheckInFinished(account, data, error) { + if (!error) + this.response(Response.SUCCESS); + else { + let messageDialog = new Gtk.MessageDialog({ transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: error.message }); + messageDialog.run(); + messageDialog.destroy(); + + this._startMessageStep(); + } + } +}); diff --git a/src/color.js b/src/color.js new file mode 100644 index 00000000..feb630a3 --- /dev/null +++ b/src/color.js @@ -0,0 +1,94 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* Minimum contrast ratio for foreground/background color for i.e. route labels */ +const MIN_CONTRAST_RATIO = 2.0; + +/** + * Parses a given color component index (0: red, 1: green, 2: blue) + * from a hex-encoded color string. Optionally, if defaultValue is supplied, + * fallback to that if color is undefined. + */ +function parseColor(color, component, defaultValue) { + if (color) { + let index = component * 2; + return parseInt(color.substring(index, index + 2), 16) / 255; + } else { + return defaultValue; + } +} + +/** + * Returns the relative luminance (0.0 - 1.0) of a color, expressed in HTML + * notation (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Relative_luminance + */ +function relativeLuminance(color) { + let rsRGB = parseColor(color, 0); + let gsRGB = parseColor(color, 1); + let bsRGB = parseColor(color, 2); + let r = rsRGB <= 0.03928 ? + rsRGB / 12.92 : Math.pow(((rsRGB + 0.055) / 1.055), 2.4); + let g = gsRGB <= 0.03928 ? + gsRGB / 12.92 : Math.pow(((gsRGB + 0.055) / 1.055), 2.4); + let b = bsRGB <= 0.03928 ? + bsRGB / 12.92 : Math.pow(((bsRGB + 0.055) / 1.055), 2.4); + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +/** + * Returns the contrast ratio between two colors, expressed in HTML notation + * (i.e. ffffff for white) according to the W3C WCAG defintion: + * https://www.w3.org/WAI/GL/wiki/Contrast_ratio + */ +function contrastRatio(color1, color2) { + let lc1 = relativeLuminance(color1); + let lc2 = relativeLuminance(color2); + /* order by luminance, lighter before darker */ + let l1 = Math.max(lc1, lc2); + let l2 = Math.min(lc1, lc2); + + return (l1 + 0.05) / (l2 + 0.05); +} + +/** + * Finds a suitable foreground (text) color for a given background color. + * If the desiredForegroundColor argument is defined, return this color if it + * has enough contrast against the background, otherwise (or if that argument + * is undefined), return the one of black or white giving the higest contrast + */ +function getContrastingForegroundColor(backgroundColor, + desiredForegroundColor) { + if (!desiredForegroundColor || + (contrastRatio(backgroundColor, desiredForegroundColor) < + MIN_CONTRAST_RATIO)) { + let contrastAgainstWhite = contrastRatio(backgroundColor, 'ffffff'); + let contrastAgainstBlack = contrastRatio(backgroundColor, '000000'); + + if (contrastAgainstWhite > contrastAgainstBlack) + return 'ffffff'; + else + return '000000'; + } else { + return desiredForegroundColor; + } +} diff --git a/src/contactPlace.js b/src/contactPlace.js new file mode 100644 index 00000000..6c036c22 --- /dev/null +++ b/src/contactPlace.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; + +const Place = imports.place; + +var ContactPlace = GObject.registerClass( +class ContactPlace extends Place.Place { + _init(params) { + this._contact = params.contact; + delete params.contact; + + params.store = false; + super._init(params); + } + + get icon() { + return this._contact.icon; + } + + get uniqueID() { + return [this.name, + this.osm_type, + this.osm_id].join('-'); + } +}); diff --git a/src/contextMenu.js b/src/contextMenu.js new file mode 100644 index 00000000..6a4727a2 --- /dev/null +++ b/src/contextMenu.js @@ -0,0 +1,201 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEdit = imports.osmEdit; +const OSMEditDialog = imports.osmEditDialog; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; +const ZoomInDialog = imports.zoomInDialog; + +var ContextMenu = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/context-menu.ui', + InternalChildren: [ 'whatsHereItem', + 'geoURIItem', + 'addOSMLocationItem', + 'routeFromHereItem', + 'addIntermediateDestinationItem', + 'routeToHereItem' ], +}, class ContextMenu extends Gtk.Menu { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + super._init(params); + + this._mapView.connect('button-release-event', + this._onButtonReleaseEvent.bind(this)); + + this._whatsHereItem.connect('activate', + this._onWhatsHereActivated.bind(this)); + this._geoURIItem.connect('activate', + this._onGeoURIActivated.bind(this)); + this._addOSMLocationItem.connect('activate', + this._onAddOSMLocationActivated.bind(this)); + this._routeFromHereItem.connect('activate', + this._onRouteFromHereActivated.bind(this)); + this._addIntermediateDestinationItem.connect('activate', + this._onAddIntermediateDestinationActivated.bind(this)); + this._routeToHereItem.connect('activate', + this._onRouteToHereActivated.bind(this)); + Application.routeQuery.connect('notify::points', + this._routingUpdate.bind(this)); + this._routingUpdate(); + } + + _onButtonReleaseEvent(widget, event) { + let [, button] = event.get_button(); + let [, x, y] = event.get_coords(); + this._longitude = this._mapView.view.x_to_longitude(x); + this._latitude = this._mapView.view.y_to_latitude(y); + + if (button === Gdk.BUTTON_SECONDARY) { + // Need idle to avoid Clutter dead-lock on re-entrance + Mainloop.idle_add(() => this.popup_at_pointer(event)); + } + } + + _routingUpdate() { + let query = Application.routeQuery; + let numPoints = query.points.length; + + this._routeFromHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._routeToHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._addIntermediateDestinationItem.sensitive = + query.filledPoints.length >= 2 && numPoints < RouteQuery.MAX_QUERY_POINTS; + } + + _onRouteFromHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location }); + + query.points[0].place = place; + } + + _onRouteToHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location }); + + query.points.last().place = place; + } + + _onAddIntermediateDestinationActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location }); + + query.addPoint(-1).place = place; + } + + _onWhatsHereActivated() { + GeocodeFactory.getGeocoder().reverse(this._latitude, this._longitude, + (place) => { + if (place) { + this._mapView.showPlace(place, false); + } else { + let msg = _("Nothing found here!"); + + Utils.showDialog(msg, Gtk.MessageType.INFO, this._mainWindow); + } + }); + } + + _onGeoURIActivated() { + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + let uri = location.to_uri(Geocode.LocationURIScheme.GEO); + + clipboard.set_text(uri, uri.length); + } + + _onAddOSMLocationActivated() { + let osmEdit = Application.osmEdit; + /* if the user is not alread signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this._mainWindow, true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._addOSMLocation(); + }); + + return; + } + + this._addOSMLocation(); + } + + _addOSMLocation() { + let osmEdit = Application.osmEdit; + + if (this._mapView.view.get_zoom_level() < OSMEdit.MIN_ADD_LOCATION_ZOOM_LEVEL) { + let zoomInDialog = + new ZoomInDialog.ZoomInDialog({ longitude: this._longitude, + latitude: this._latitude, + view: this._mapView.view, + transient_for: this._mainWindow, + modal: true }); + + zoomInDialog.connect('response', () => zoomInDialog.destroy()); + zoomInDialog.show_all(); + return; + } + + let dialog = + osmEdit.createEditNewDialog(this._mainWindow, + this._latitude, this._longitude); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMEditDialog.Response.UPLOADED) { + Utils.showDialog(_("Location was added to the map, note that it may take a while before it shows on the map and in search results."), + Gtk.MessageType.INFO, this._mainWindow); + } + }); + } +}); diff --git a/src/epaf.js b/src/epaf.js new file mode 100644 index 00000000..4465a730 --- /dev/null +++ b/src/epaf.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jussi Kukkonen + * Mattias Bengtsson + */ + +// Google encoded polyline decoder +// https://developers.google.com/maps/documentation/utilities/polylinealgorithm + +const Champlain = imports.gi.Champlain; + +function _decodeValue(data, index) { + let b; + let shift = 0; + let value = 0; + + do { + // 63 added to keep string printable + b = data.charCodeAt(index++) - 63; + + // Get 5 bits at a time until hit the end of value + // (which is not OR'd with 0x20) + value |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + + // negative values are encoded as two's complement + let ret_val = ((value & 1) ? ~(value >> 1) : (value >> 1)); + return [ret_val, index]; +} + +function decode(data) { + let length = data.length; + let polyline = []; + let index = 0; + let lat = 0; + let lon = 0; + + while (index < length) { + let latdelta, londelta; + + [latdelta, index] = _decodeValue(data, index); + [londelta, index] = _decodeValue(data, index); + + // first value is absolute, rest are relative to previous value + lat += latdelta; + lon += londelta; + polyline.push(new Champlain.Coordinate({ + latitude: lat * 1e-5, + longitude: lon * 1e-5 + })); + } + return polyline; +} diff --git a/src/exportViewDialog.js b/src/exportViewDialog.js new file mode 100644 index 00000000..42b7996d --- /dev/null +++ b/src/exportViewDialog.js @@ -0,0 +1,183 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _PREVIEW_WIDTH = 150; + +var ExportViewDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/export-view-dialog.ui', + InternalChildren: [ 'exportButton', + 'cancelButton', + 'filenameEntry', + 'fileChooserButton', + 'previewArea', + 'layersCheckButton' ], +}, class ExportViewDialog extends Gtk.Dialog { + _init(params) { + this._surface = params.surface; + delete params.surface; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._cancelButton.connect('clicked', () => this.response(Response.CANCEL)); + this._exportButton.connect('clicked', () => this._exportView()); + this._filenameEntry.connect('changed', () => this._onFileNameChanged()); + this._fileChooserButton.connect('file-set', () => this._onFolderChanged()); + this._layersCheckButton.connect('toggled', () => this._includeLayersChanged()); + + + this._folder = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES); + if (!this._folder) + this._folder = GLib.get_user_data_dir(); + + this._filenameEntry.text = this._fileName = this._getName(); + this._fileChooserButton.set_current_folder(this._folder); + this._setupPreviewArea(); + } + + _getName() { + /* Translators: This is a format string for a PNG filename for an + * exported image with coordinates. The .png extension should be kept + * intact in the translated string. + */ + return _("Maps at %f, %f.png").format(this._latitude.toFixed(2), + this._longitude.toFixed(2)); + } + + _setupPreviewArea() { + let [surfaceWidth, surfaceHeight] = this._mapView.view.get_size(); + + let width = _PREVIEW_WIDTH; + this._scaleFactor = width / surfaceWidth; + let height = surfaceHeight * this._scaleFactor; + + this._previewArea.set_size_request(width, height); + this._previewArea.connect('draw', + (w, cr) => this._drawPreview(w, cr)); + } + + _drawPreview(widget, cr) { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.scale(this._scaleFactor, this._scaleFactor); + cr.setSourceSurface(this._surface, 0, 0); + cr.paint(); + } + + _onFileNameChanged() { + let name = GLib.filename_from_utf8(this._filenameEntry.text, -1)[0]; + name = name.toString(); + if (!name) { + this._exportButton.sensitive= false; + return; + } + + try { + GLib.build_filenamev([this._folder, name]); + this._exportButton.sensitive = true; + this._fileName = name; + } catch(e) { + this._exportButton.sensitive = false; + } + } + + _onFolderChanged() { + let folder = this._fileChooserButton.get_filename(); + + if (!GLib.file_test(folder, GLib.FileTest.IS_DIR)) { + this._exportButton.sensitive= false; + return; + } + if (!GLib.file_test(folder, GLib.FileTest.EXISTS)) { + this._exportButton.sensitive = false; + return; + } + + this._exportButton.sensitive = true; + this._folder = folder; + } + + _exportView() { + let [width, height] = this._mapView.view.get_size(); + let pixbuf = Gdk.pixbuf_get_from_surface(this._surface, 0, 0, width, height); + let path = GLib.build_filenamev([this._folder, this._fileName]); + + try { + pixbuf.savev(path, "png", [], []); + this.response(Response.SUCCESS); + } catch(e) { + Utils.debug('failed to export view: ' + e.message); + let details = null; + + if (e.matches(GLib.FileError, GLib.FileError.ROFS)) + details = _("Filesystem is read only"); + else if (e.matches(GLib.FileError, GLib.FileError.ACCES)) + details = _("You do not have permission to save there"); + else if (e.matches(GLib.FileError, GLib.FileError.NOENT)) + details = _("The directory does not exist"); + else if (e.matches(GLib.FileError, GLib.FileError.ISDIR)) + details = _("No filename specified"); + + let dialog = new Gtk.MessageDialog({ + transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("Unable to export view"), + secondary_text: details + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + } + + _includeLayersChanged() { + let includeLayers = this._layersCheckButton.get_active(); + + this._surface = this._mapView.view.to_surface(includeLayers); + this._previewArea.queue_draw(); + } +}); diff --git a/src/facebookBackend.js b/src/facebookBackend.js new file mode 100644 index 00000000..3df30adc --- /dev/null +++ b/src/facebookBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GFBGraph = imports.gi.GFBGraph; +const GObject = imports.gi.GObject; + +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://www.facebook.com/%s'; + +var FacebookBackend = GObject.registerClass( +class FacebookBackend extends ServiceBackend.ServiceBackend { + get name() { + return 'facebook'; + } + + createRestCall(authorizer) { + return GFBGraph.new_rest_call(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refresh_authorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goa_object; + } + + createAuthorizer(account) { + return new GFBGraph.GoaAuthorizer({ goa_object: account }); + } + + isTokenInvalid(restCall, data) { + return data.error && + (data.error.code === 2500 || data.error.code === 104 || data.error.code === 190); + } + + isInvalidCall(restCall, data) { + if (!data) { + return true; + } else if (data.error) { + return true; + } else { + return false; + } + } + + getCallResultCode(restCall, data) { + return data ? + (data.error ? data.error.code : null) : + restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? + (data.error ? data.error.message : null) : + restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + this.callAsync(authorizer, + 'POST', + 'me/feed', + { + 'message': checkIn.message, + 'place': checkIn.place.id, + 'privacy_value': checkIn.privacy + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'search', + { + 'type': 'place', + 'center': latitude + ',' + longitude, + 'distance': distance + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.data.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.latitude, + longitude: place.location.longitude, + category: place.category, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/favoritesPopover.js b/src/favoritesPopover.js new file mode 100644 index 00000000..3a0454ff --- /dev/null +++ b/src/favoritesPopover.js @@ -0,0 +1,122 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; + +const _N_VISIBLE = 6; + +var FavoritesPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/favorites-popover.ui', + InternalChildren: [ 'mainGrid', + 'revealer', + 'entry', + 'scrolledWindow', + 'list' ], + Properties: { + 'rows': GObject.ParamSpec.int('rows', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, GLib.MAXINT32, 0) + } +}, class FavoritesPopover extends Gtk.Popover { + + _init(params) { + params = params || { }; + + this._mapView = params.mapView; + delete params.mapView; + + params.transitions_enabled = false; + super._init(params); + + this._rows = 0; + + let placeType = PlaceStore.PlaceType.FAVORITE; + this._model = Application.placeStore.getModelForPlaceType(placeType); + + this._model.connect('row-deleted', + this._updateList.bind(this)); + this._model.connect('row-inserted', + this._updateList.bind(this)); + + this._list.set_header_func(function(row, before) { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this.connect('notify::rows', () => { + let visible = Math.min(this._rows, _N_VISIBLE); + let separators = visible - 1; // separators are 1px + let height = (PlaceListRow.ROW_HEIGHT + 6) * visible + separators; + + this._scrolledWindow.min_content_height = height; + this._revealer.reveal_child = this._rows > _N_VISIBLE; + }); + + this._entry.connect('changed', + () => this._list.invalidate_filter(this._list)); + + this._list.connect('row-activated', (list, row) => { + this.hide(); + this._mapView.showPlace(row.place, true); + }); + + this._list.set_filter_func((row) => { + return row.place.match(this._entry.text); + }); + + this._updateList(); + } + + set rows(rows) { + if (rows !== this._rows) { + this._rows = rows; + this.notify('rows'); + } + } + + get rows() { + return this._rows; + } + + _updateList() { + this._list.forall((row) => row.destroy()); + + let rows = 0; + this._model.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + + let row = new PlaceListRow.PlaceListRow({ place: place, + maxChars: 15, + can_focus: true }); + this._list.add(row); + rows++; + }); + + this.rows = rows; + } +}); diff --git a/src/foursquareBackend.js b/src/foursquareBackend.js new file mode 100644 index 00000000..164ddfb6 --- /dev/null +++ b/src/foursquareBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const FoursquareGoaAuthorizer = imports.foursquareGoaAuthorizer; +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://foursquare.com/v/foursquare-hq/%s'; + +var FoursquareBackend = GObject.registerClass( +class SocialServiceFoursquareBackend extends ServiceBackend.ServiceBackend { + + get name() { + return 'foursquare'; + } + + createRestCall(authorizer) { + return FoursquareGoaAuthorizer.newRestCall(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refreshAuthorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goaObject; + } + + createAuthorizer(account) { + return new FoursquareGoaAuthorizer.FoursquareGoaAuthorizer({ goaObject: account }); + } + + isTokenInvalid(restCall, data) { + return data.meta.code === 401 || data.meta.code === 403; + } + + isInvalidCall(restCall, data) { + return !data || data.meta.code !== 200; + } + + getCallResultCode(restCall, data) { + return data ? data.meta.code : restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? data.meta.errorDetail : restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + let broadcast = checkIn.privacy; + + if (checkIn.broadcastFacebook) + broadcast += ',facebook'; + + if (checkIn.broadcastTwitter) + broadcast += ',twitter'; + + this.callAsync(authorizer, + 'POST', + 'checkins/add', + { + 'shout': checkIn.message, + 'venueId': checkIn.place.id, + 'broadcast': broadcast + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'venues/search', + { + 'll': latitude + ',' + longitude, + 'radius': distance, + 'intent': 'checkin' + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.response.venues.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.lat, + longitude: place.location.lng, + category: place.categories.length > 0 ? + place.categories[0].name : + null, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/foursquareGoaAuthorizer.js b/src/foursquareGoaAuthorizer.js new file mode 100644 index 00000000..d51ba968 --- /dev/null +++ b/src/foursquareGoaAuthorizer.js @@ -0,0 +1,91 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Rest = imports.gi.Rest; + +const _FOURSQUARE_API_VERSION = '20140226'; + +var FoursquareGoaAuthorizer = class FoursquareGoaAuthorizer { + constructor(params) { + if (!params.goaObject) { + logError('FoursquareGoaAuthorizer requires goaObject parameter'); + return; + } + + this.goaObject = params.goaObject; + } + + get goaObject() { + return this._goaObject; + } + + set goaObject(object) { + this._goaObject = object; + this._accessToken = null; + } + + _refreshAccessToken(cancellable) { + if (this._accessToken) + return true; + + let getAccessTokenResult = this.goaObject.get_oauth2_based().call_get_access_token_sync(cancellable); + + if (getAccessTokenResult[0]) { + this._accessToken = getAccessTokenResult[1]; + return true; + } + + return false; + } + + processCall(restCall) { + this._refreshAccessToken(null); + restCall.add_param('oauth_token', this._accessToken); + restCall.add_param('v', _FOURSQUARE_API_VERSION); + } + + processMessage(soupMessage) { + this._refreshAccessToken(null); + let uri = soupMessage.get_uri(); + uri.set_query(uri, 'oauth_token' + this._accessToken + '&v=' + _FOURSQUARE_API_VERSION); + } + + refreshAuthorization(cancellable) { + let ensureCredentialsResult = this.goaObject.get_account().call_ensure_credentials_sync(cancellable); + if (ensureCredentialsResult[0]) { + this._accessToken = null; + return this._refreshAccessToken(cancellable); + } + + return false; + } +}; + +function newRestCall(authorizer) +{ + let proxy = new Rest.Proxy({ url_format: 'https://api.foursquare.com/v2', + binding_required: false }); + let restCall = proxy.new_call(); + + authorizer.processCall(restCall); + + return restCall; +} diff --git a/src/geoJSONShapeLayer.js b/src/geoJSONShapeLayer.js new file mode 100644 index 00000000..5b9b1b1b --- /dev/null +++ b/src/geoJSONShapeLayer.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +var GeoJSONShapeLayer = GObject.registerClass( +class GeoJSONShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + getName() { + /* Special Case since this file extension contains 2 periods */ + let suffix = '.geo.json'; + if (this.filename.endsWith(suffix)) + return this.filename.replace(new RegExp(suffix + '$'), ''); + else + return super.getName(); + } + + _parseContent() { + this._mapSource.parse(JSON.parse(Utils.getBufferText(this._fileContents))); + } +}); + +GeoJSONShapeLayer.mimeTypes = ['application/vnd.geo+json', + 'application/geo+json', + 'application/json']; +GeoJSONShapeLayer.displayName = 'GeoJSON'; +GeoJSONShapeLayer.createInstance = function(params) { + return new GeoJSONShapeLayer(params); +}; diff --git a/src/geoJSONSource.js b/src/geoJSONSource.js new file mode 100644 index 00000000..48fe9e2a --- /dev/null +++ b/src/geoJSONSource.js @@ -0,0 +1,280 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Geojsonvt = imports.geojsonvt.geojsonvt; +const Location = imports.location; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const Service = imports.service; +const Utils = imports.utils; +const GeoJSONStyle = imports.geoJSONStyle; +const MapView = imports.mapView; + +const TileFeature = { POINT: 1, + LINESTRING: 2, + POLYGON: 3 }; + +var GeoJSONSource = GObject.registerClass( +class GeoJSONSource extends Champlain.TileSource { + + _init(params) { + super._init(); + + this._mapView = params.mapView; + this._markerLayer = params.markerLayer; + this._bbox = new Champlain.BoundingBox(); + this._tileSize = Service.getService().tiles.street.tile_size; + } + + get bbox() { + return this._bbox; + } + + vfunc_get_tile_size() { + return this._tileSize; + } + + vfunc_get_max_zoom_level() { + return 20; + } + + vfunc_get_min_zoom_level() { + return 0; + } + + vfunc_get_id() { + return 'GeoJSONSource'; + } + + vfunc_get_name() { + return 'GeoJSONSource'; + } + + vfunc_fill_tile(tile) { + if (tile.get_state() === Champlain.State.DONE) + return; + + tile.connect('render-complete', (tile, data, size, error) => { + if(!error) { + tile.set_state(Champlain.State.DONE); + tile.display_content(); + } else if(this.next_source) + this.next_source.fill_tile(tile); + }); + + Mainloop.idle_add(() => this._renderTile(tile), tile); + } + + _validate([lon, lat]) { + if ((-180 <= lon && lon <= 180) && + (-90 <= lat && lat <= 90)) { + return; + } + + throw new Error(_("invalid coordinate")); + } + + _compose(coordinates) { + coordinates.forEach((coordinate) => { + this._validate(coordinate); + this._bbox.extend(coordinate[1], coordinate[0]); + }); + } + + _clampBBox() { + this._bbox.top = Math.min(this._bbox.top, MapView.MAX_LATITUDE); + this._bbox.left = Math.max(this._bbox.left, MapView.MIN_LONGITUDE); + this._bbox.bottom = Math.max(this._bbox.bottom, MapView.MIN_LATITUDE); + this._bbox.right = Math.min(this._bbox.right, MapView.MAX_LONGITUDE); + } + + _parseLineString(coordinates) { + this._compose(coordinates); + } + + _parsePolygon(coordinates) { + coordinates.forEach((coordinate) => this._compose(coordinate)); + } + + _parsePoint(coordinates, properties) { + let name = null; + if (properties) + name = properties.name; + + this._validate(coordinates); + this._bbox.extend(coordinates[1], + coordinates[0]); + + let location = new Location.Location({ + latitude: coordinates[1], + longitude: coordinates[0] + }); + + let place = new Place.Place({ name: name, + store: false, + location: location }); + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this._mapView }); + this._markerLayer.add_marker(placeMarker); + } + + _parseGeometry(geometry, properties) { + if(!geometry) + throw new Error(_("parse error")); + + switch(geometry.type) { + case 'LineString': + this._parseLineString(geometry.coordinates); + break; + + case 'MultiLineString': + geometry.coordinates.forEach((coordinate) => { + this._parseLineString(coordinate); + }); + break; + + case 'Polygon': + this._parsePolygon(geometry.coordinates); + break; + + case 'MultiPolygon': + geometry.coordinates.forEach((coordinate) => { + this._parsePolygon(coordinate); + }); + break; + + case 'Point': + this._parsePoint(geometry.coordinates, properties); + break; + + case 'MultiPoint': + geometry.coordinates.forEach((coordinate, properties) => { + this._parsePoint(coordinate,properties); + }); + break; + + default: + throw new Error(_("unknown geometry")); + } + } + + _parseInternal(root) { + if (!root || !root.type) + throw new Error(_("parse error")); + + switch(root.type) { + case 'FeatureCollection': + root.features.forEach((feature) => { + this._parseGeometry(feature.geometry, feature.properties); + }); + break; + + case 'Feature': + this._parseGeometry(root.geometry, root.properties); + break; + + case 'GeometryCollection': + if (!root.geometries) + throw new Error(_("parse error")); + + root.geometries.forEach((g) => this._parseGeometry(g)); + break; + + default: + this._parseGeometry(root); + } + } + + parse(json) { + this._parseInternal(json); + this._tileIndex = Geojsonvt.geojsonvt(json, { extent: this._tileSize, + maxZoom: 20 }); + this._clampBBox(); + } + + _renderTile(tile) { + let tileJSON = this._tileIndex.getTile(tile.zoom_level, tile.x, tile.y); + let content = new Clutter.Canvas({ width: this._tileSize, + height: this._tileSize }); + tile.content = new Clutter.Actor({ width: this._tileSize, + height: this._tileSize, + content: content }); + + content.connect('draw', (canvas, cr) => { + tile.set_surface(cr.getTarget()); + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + cr.setFillRule(Cairo.FillRule.EVEN_ODD); + + if (!tileJSON) { + tile.emit('render-complete', null, 0, false); + return; + } + + tileJSON.features.forEach((feature) => { + if (feature.type === TileFeature.POINT) + return; + + let geoJSONStyleObj = GeoJSONStyle.GeoJSONStyle.parseSimpleStyle(feature.tags); + + feature.geometry.forEach((geometry) => { + let first = true; + cr.moveTo(0, 0); + cr.setLineWidth(geoJSONStyleObj.lineWidth); + cr.setSourceRGBA(geoJSONStyleObj.color.red, + geoJSONStyleObj.color.green, + geoJSONStyleObj.color.blue, + geoJSONStyleObj.alpha); + + geometry.forEach(function(coord) { + if (first) { + cr.moveTo(coord[0], coord[1]); + first = false; + } else { + cr.lineTo(coord[0], coord[1]); + } + }); + }); + if (feature.type === TileFeature.POLYGON) { + cr.closePath(); + cr.strokePreserve(); + cr.setSourceRGBA(geoJSONStyleObj.fillColor.red, + geoJSONStyleObj.fillColor.green, + geoJSONStyleObj.fillColor.blue, + geoJSONStyleObj.fillAlpha); + cr.fill(); + } else { + cr.stroke(); + } + }); + + tile.emit('render-complete', null, 0, false); + }); + + content.invalidate(); + } +}); diff --git a/src/geoJSONStyle.js b/src/geoJSONStyle.js new file mode 100644 index 00000000..2cfd7162 --- /dev/null +++ b/src/geoJSONStyle.js @@ -0,0 +1,87 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Alaf Azam + */ + +const DEFAULT_LINE_WIDTH = 5; +const DEFAULT_COLOR = '69B1FF'; + +var GeoJSONStyle = class GeoJSONStyle { + constructor(params) { + if (params.lineWidth || params.lineWidth === 0) + this.lineWidth = params.lineWidth; + else + this.lineWidth = DEFAULT_LINE_WIDTH; + + if (params.alpha || params.alpha === 0) + this.alpha = params.alpha; + else + this.alpha = 1; + + if (params.fillAlpha || params.fillAlpha === 0) + this.fillAlpha = params.fillAlpha; + else + this.fillAlpha = 0.25; + + this.color = this._hexToColor(params.color || DEFAULT_COLOR); + this.fillColor = this._hexToColor(params.fillColor) || { red: 0.37, + green: 0.62, + blue: 0.87 }; + } + + _hexToColor(colorString) { + let color = null; + + if (!colorString) + return null; + + if (colorString.startsWith('#')) { + colorString = colorString.slice(1); + } + + if (colorString.length === 3) { + colorString = colorString.match(/([0-9a-f]{3})$/i); + if (colorString) { + color = { + red: (parseInt(colorString[0].chatAt(0), 16) * 0x11)/255, + green: (parseInt(colorString[0].chatAt(1), 16) * 0x11)/255, + blue: (parseInt(colorString[0].chatAt(2), 16) * 0x11)/255 + }; + } + } else { + colorString = colorString.match(/([0-9a-f]{6})$/i); + if (colorString) { + color = { + red: parseInt(colorString[0].substr(0, 2), 16)/255, + green: parseInt(colorString[0].substr(2, 2), 16)/255, + blue: parseInt(colorString[0].substr(4, 2), 16)/255 + }; + } + } + + return color; + } +}; + +GeoJSONStyle.parseSimpleStyle = function(tags) { + return new GeoJSONStyle({ alpha: tags['stroke-opacity'], + fillAlpha: tags['fill-opacity'], + color: tags['stroke'], + fillColor: tags['fill'], + lineWidth: tags['stroke-width'] }); +} diff --git a/src/geoclue.js b/src/geoclue.js new file mode 100644 index 00000000..65fd7ecf --- /dev/null +++ b/src/geoclue.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const GClue = imports.gi.Geoclue; +const Gio = imports.gi.Gio; +const Mainloop = imports.mainloop; + +const Place = imports.place; +const Location = imports.location; +const Settings = imports.settings; +const Utils = imports.utils; + +var State = { + INITIAL: 0, + ON: 1, + DENIED: 2, + FAILED: 3 +}; + +var Geoclue = GObject.registerClass({ + Signals: { + 'location-changed': { } + }, + Properties: { + 'state': GObject.ParamSpec.int('state', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + State.INITIAL, + State.FAILED, + State.INITIAL) + }, +}, class Geoclue extends GObject.Object { + + set state(s) { + this._state = s; + this.notify('state'); + } + + get state() { + return this._state; + } + + _init() { + super._init(); + this.place = null; + this._state = State.INITIAL; + + this.start(null); + } + + start(callback) { + let id = 'org.gnome.Maps'; + let level = GClue.AccuracyLevel.EXACT; + + GClue.Simple.new(id, level, null, (object, result) => { + try { + this._simple = GClue.Simple.new_finish(result); + } + catch (e) { + Utils.debug("GeoClue2 service: " + e.message); + if (e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED)) + this.state = State.DENIED; + else + this.state = State.FAILED; + if (callback) + callback(false); + return; + } + + this._simple.connect('notify::location', + () => this._onLocationNotify(this._simple)); + this._simple.client.connect('notify::active', () => { + this.state = this._simple.client.active ? State.ON : State.DENIED; + }); + + this.state = State.ON; + this._onLocationNotify(this._simple); + if (callback) + callback(true); + }); + } + + _onLocationNotify(simple) { + let geoclueLocation = simple.get_location(); + let location = new Location.Location({ + latitude: geoclueLocation.latitude, + longitude: geoclueLocation.longitude, + accuracy: geoclueLocation.accuracy, + heading: geoclueLocation.heading, + description: geoclueLocation.description + }); + this._updateLocation(location); + } + + _updateLocation(location) { + if (!this.place) + this.place = new Place.Place({ name: _("Current location"), + isCurrentLocation: true }); + + this.place.location = location; + this.emit('location-changed'); + Utils.debug("Updated location: " + location.description + + " (" + location.latitude + ", " + location.longitude + + ", accuracy = " + location.accuracy + " m)"); + } +}); diff --git a/src/geocode.js b/src/geocode.js new file mode 100644 index 00000000..7623684a --- /dev/null +++ b/src/geocode.js @@ -0,0 +1,39 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Service = imports.service; +const GraphHopperGeocode = imports.graphHopperGeocode; +const PhotonGeocode = imports.photonGeocode; + +var _geocoder = null; + +function getGeocoder() { + if (!_geocoder) { + if (Service.getService().photonGeocode) + _geocoder = new PhotonGeocode.PhotonGeocode(); + else + _geocoder = new GraphHopperGeocode.GraphHopperGeocode(); + } + + return _geocoder; +} + + diff --git a/src/geojson-vt/LICENSE b/src/geojson-vt/LICENSE new file mode 100644 index 00000000..00e99140 --- /dev/null +++ b/src/geojson-vt/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/src/geojson-vt/clip.js b/src/geojson-vt/clip.js new file mode 100644 index 00000000..cad7a21e --- /dev/null +++ b/src/geojson-vt/clip.js @@ -0,0 +1,149 @@ +'use strict'; + +/* clip features between two axis-parallel lines: + * | | + * ___|___ | / + * / | \____|____/ + * | | + */ + +function clip(features, scale, k1, k2, axis, intersect, minAll, maxAll) { + + k1 /= scale; + k2 /= scale; + + if (minAll >= k1 && maxAll <= k2) return features; // trivial accept + else if (minAll > k2 || maxAll < k1) return null; // trivial reject + + var clipped = []; + + for (var i = 0; i < features.length; i++) { + + var feature = features[i], + geometry = feature.geometry, + type = feature.type, + min, max; + + min = feature.min[axis]; + max = feature.max[axis]; + + if (min >= k1 && max <= k2) { // trivial accept + clipped.push(feature); + continue; + } else if (min > k2 || max < k1) continue; // trivial reject + + var slices = type === 1 ? + clipPoints(geometry, k1, k2, axis) : + clipGeometry(geometry, k1, k2, axis, intersect, type === 3); + + if (slices.length) { + // if a feature got clipped, it will likely get clipped on the next zoom level as well, + // so there's no need to recalculate bboxes + clipped.push({ + geometry: slices, + type: type, + tags: features[i].tags || null, + min: feature.min, + max: feature.max + }); + } + } + + return clipped.length ? clipped : null; +} + +function clipPoints(geometry, k1, k2, axis) { + var slice = []; + + for (var i = 0; i < geometry.length; i++) { + var a = geometry[i], + ak = a[axis]; + + if (ak >= k1 && ak <= k2) slice.push(a); + } + return slice; +} + +function clipGeometry(geometry, k1, k2, axis, intersect, closed) { + + var slices = []; + + for (var i = 0; i < geometry.length; i++) { + + var ak = 0, + bk = 0, + b = null, + points = geometry[i], + area = points.area, + dist = points.dist, + len = points.length, + a, j, last; + + var slice = []; + + for (j = 0; j < len - 1; j++) { + a = b || points[j]; + b = points[j + 1]; + ak = bk || a[axis]; + bk = b[axis]; + + if (ak < k1) { + + if ((bk > k2)) { // ---|-----|--> + slice.push(intersect(a, b, k1), intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk >= k1) slice.push(intersect(a, b, k1)); // ---|--> | + + } else if (ak > k2) { + + if ((bk < k1)) { // <--|-----|--- + slice.push(intersect(a, b, k2), intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk <= k2) slice.push(intersect(a, b, k2)); // | <--|--- + + } else { + + slice.push(a); + + if (bk < k1) { // <--|--- | + slice.push(intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk > k2) { // | ---|--> + slice.push(intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + } + // | --> | + } + } + + // add the last point + a = points[len - 1]; + ak = a[axis]; + if (ak >= k1 && ak <= k2) slice.push(a); + + // close the polygon if its endpoints are not the same after clipping + + last = slice[slice.length - 1]; + if (closed && last && (slice[0][0] !== last[0] || slice[0][1] !== last[1])) slice.push(slice[0]); + + // add the final slice + newSlice(slices, slice, area, dist); + } + + return slices; +} + +function newSlice(slices, slice, area, dist) { + if (slice.length) { + // we don't recalculate the area/length of the unclipped geometry because the case where it goes + // below the visibility threshold as a result of clipping is rare, so we avoid doing unnecessary work + slice.area = area; + slice.dist = dist; + + slices.push(slice); + } + return []; +} diff --git a/src/geojson-vt/convert.js b/src/geojson-vt/convert.js new file mode 100644 index 00000000..eda26c7d --- /dev/null +++ b/src/geojson-vt/convert.js @@ -0,0 +1,147 @@ +'use strict'; + +const simplify = imports.geojsonvt.simplify.simplify; + +// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data + +function convert(data, tolerance) { + var features = []; + + if (data.type === 'FeatureCollection') { + for (var i = 0; i < data.features.length; i++) { + convertFeature(features, data.features[i], tolerance); + } + } else if (data.type === 'Feature') { + convertFeature(features, data, tolerance); + + } else { + // single geometry or a geometry collection + convertFeature(features, {geometry: data}, tolerance); + } + return features; +} + +function convertFeature(features, feature, tolerance) { + if (feature.geometry === null) { + // ignore features with null geometry + return; + } + + var geom = feature.geometry, + type = geom.type, + coords = geom.coordinates, + tags = feature.properties, + i, j, rings; + + if (type === 'Point') { + features.push(create(tags, 1, [projectPoint(coords)])); + + } else if (type === 'MultiPoint') { + features.push(create(tags, 1, project(coords))); + + } else if (type === 'LineString') { + features.push(create(tags, 2, [project(coords, tolerance)])); + + } else if (type === 'MultiLineString' || type === 'Polygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + rings.push(project(coords[i], tolerance)); + } + features.push(create(tags, type === 'Polygon' ? 3 : 2, rings)); + + } else if (type === 'MultiPolygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + for (j = 0; j < coords[i].length; j++) { + rings.push(project(coords[i][j], tolerance)); + } + } + features.push(create(tags, 3, rings)); + + } else if (type === 'GeometryCollection') { + for (i = 0; i < geom.geometries.length; i++) { + convertFeature(features, { + geometry: geom.geometries[i], + properties: tags + }, tolerance); + } + + } else { + throw new Error('Input data is not a valid GeoJSON object.'); + } +} + +function create(tags, type, geometry) { + var feature = { + geometry: geometry, + type: type, + tags: tags || null, + min: [2, 1], // initial bbox values; + max: [-1, 0] // note that coords are usually in [0..1] range + }; + calcBBox(feature); + return feature; +} + +function project(lonlats, tolerance) { + var projected = []; + for (var i = 0; i < lonlats.length; i++) { + projected.push(projectPoint(lonlats[i])); + } + if (tolerance) { + simplify(projected, tolerance); + calcSize(projected); + } + return projected; +} + +function projectPoint(p) { + var sin = Math.sin(p[1] * Math.PI / 180), + x = (p[0] / 360 + 0.5), + y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); + + y = y < 0 ? 0 : + y > 1 ? 1 : y; + + return [x, y, 0]; +} + +// calculate area and length of the poly +function calcSize(points) { + var area = 0, + dist = 0; + + for (var i = 0, a, b; i < points.length - 1; i++) { + a = b || points[i]; + b = points[i + 1]; + + area += a[0] * b[1] - b[0] * a[1]; + + // use Manhattan distance instead of Euclidian one to avoid expensive square root computation + dist += Math.abs(b[0] - a[0]) + Math.abs(b[1] - a[1]); + } + points.area = Math.abs(area / 2); + points.dist = dist; +} + +// calculate the feature bounding box for faster clipping later +function calcBBox(feature) { + var geometry = feature.geometry, + min = feature.min, + max = feature.max; + + if (feature.type === 1) calcRingBBox(min, max, geometry); + else for (var i = 0; i < geometry.length; i++) calcRingBBox(min, max, geometry[i]); + + return feature; +} + +function calcRingBBox(min, max, points) { + for (var i = 0, p; i < points.length; i++) { + p = points[i]; + min[0] = Math.min(p[0], min[0]); + max[0] = Math.max(p[0], max[0]); + min[1] = Math.min(p[1], min[1]); + max[1] = Math.max(p[1], max[1]); + } +} diff --git a/src/geojson-vt/index.js b/src/geojson-vt/index.js new file mode 100644 index 00000000..bd0c6e59 --- /dev/null +++ b/src/geojson-vt/index.js @@ -0,0 +1,238 @@ +'use strict'; + +const convert = imports.geojsonvt.convert.convert; +const transform = { tile: imports.geojsonvt.transform.transformTile, + point: imports.geojsonvt.transform.transformPoint }; +const clip = imports.geojsonvt.clip.clip; +const createTile = imports.geojsonvt.tile.createTile; +const wrap = imports.geojsonvt.wrap.wrap; + +function geojsonvt(data, options) { + return new GeoJSONVT(data, options); +} + +function GeoJSONVT(data, options) { + options = this.options = extend(Object.create(this.options), options); + + var debug = options.debug; + + if (debug) console.time('preprocess data'); + + var z2 = 1 << options.maxZoom, // 2^z + features = convert(data, options.tolerance / (z2 * options.extent)); + + this.tiles = {}; + this.tileCoords = []; + + if (debug) { + console.timeEnd('preprocess data'); + console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); + console.time('generate tiles'); + this.stats = {}; + this.total = 0; + } + + features = wrap(features, options.buffer / options.extent, intersectX); + + // start slicing from the top tile down + if (features.length) this.splitTile(features, 0, 0, 0); + + if (debug) { + if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); + console.timeEnd('generate tiles'); + console.log('tiles generated:', this.total, JSON.stringify(this.stats)); + } +} + +GeoJSONVT.prototype.options = { + maxZoom: 14, // max zoom to preserve detail on + indexMaxZoom: 5, // max zoom in the tile index + indexMaxPoints: 100000, // max number of points per tile in the tile index + solidChildren: false, // whether to tile solid square tiles further + tolerance: 3, // simplification tolerance (higher means simpler) + extent: 4096, // tile extent + buffer: 64, // tile buffer on each side + debug: 0 // logging level (0, 1 or 2) +}; + +GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { + + var stack = [features, z, x, y], + options = this.options, + debug = options.debug, + solid = null; + + // avoid recursion by using a processing queue + while (stack.length) { + y = stack.pop(); + x = stack.pop(); + z = stack.pop(); + features = stack.pop(); + + var z2 = 1 << z, + id = toID(z, x, y), + tile = this.tiles[id], + tileTolerance = z === options.maxZoom ? 0 : options.tolerance / (z2 * options.extent); + + if (!tile) { + if (debug > 1) console.time('creation'); + + tile = this.tiles[id] = createTile(features, z2, x, y, tileTolerance, z === options.maxZoom); + this.tileCoords.push({z: z, x: x, y: y}); + + if (debug) { + if (debug > 1) { + console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', + z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); + console.timeEnd('creation'); + } + var key = 'z' + z; + this.stats[key] = (this.stats[key] || 0) + 1; + this.total++; + } + } + + // save reference to original geometry in tile so that we can drill down later if we stop now + tile.source = features; + + // if it's the first-pass tiling + if (!cz) { + // stop tiling if we reached max zoom, or if the tile is too simple + if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; + + // if a drilldown to a specific tile + } else { + // stop tiling if we reached base zoom or our target tile zoom + if (z === options.maxZoom || z === cz) continue; + + // stop tiling if it's not an ancestor of the target tile + var m = 1 << (cz - z); + if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; + } + + // stop tiling if the tile is solid clipped square + if (!options.solidChildren && isClippedSquare(tile, options.extent, options.buffer)) { + if (cz) solid = z; // and remember the zoom if we're drilling down + continue; + } + + // if we slice further down, no need to keep source geometry + tile.source = null; + + if (debug > 1) console.time('clipping'); + + // values we'll use for clipping + var k1 = 0.5 * options.buffer / options.extent, + k2 = 0.5 - k1, + k3 = 0.5 + k1, + k4 = 1 + k1, + tl, bl, tr, br, left, right; + + tl = bl = tr = br = null; + + left = clip(features, z2, x - k1, x + k3, 0, intersectX, tile.min[0], tile.max[0]); + right = clip(features, z2, x + k2, x + k4, 0, intersectX, tile.min[0], tile.max[0]); + + if (left) { + tl = clip(left, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + bl = clip(left, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (right) { + tr = clip(right, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + br = clip(right, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (debug > 1) console.timeEnd('clipping'); + + if (tl) stack.push(tl, z + 1, x * 2, y * 2); + if (bl) stack.push(bl, z + 1, x * 2, y * 2 + 1); + if (tr) stack.push(tr, z + 1, x * 2 + 1, y * 2); + if (br) stack.push(br, z + 1, x * 2 + 1, y * 2 + 1); + } + + return solid; +}; + +GeoJSONVT.prototype.getTile = function (z, x, y) { + var options = this.options, + extent = options.extent, + debug = options.debug; + + var z2 = 1 << z; + x = ((x % z2) + z2) % z2; // wrap tile x coordinate + + var id = toID(z, x, y); + if (this.tiles[id]) return transform.tile(this.tiles[id], extent); + + if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); + + var z0 = z, + x0 = x, + y0 = y, + parent; + + while (!parent && z0 > 0) { + z0--; + x0 = Math.floor(x0 / 2); + y0 = Math.floor(y0 / 2); + parent = this.tiles[toID(z0, x0, y0)]; + } + + if (!parent || !parent.source) return null; + + // if we found a parent tile containing the original geometry, we can drill down from it + if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); + + // it parent tile is a solid clipped square, return it instead since it's identical + if (isClippedSquare(parent, extent, options.buffer)) return transform.tile(parent, extent); + + if (debug > 1) console.time('drilling down'); + var solid = this.splitTile(parent.source, z0, x0, y0, z, x, y); + if (debug > 1) console.timeEnd('drilling down'); + + // one of the parent tiles was a solid clipped square + if (solid !== null) { + var m = 1 << (z - solid); + id = toID(solid, Math.floor(x / m), Math.floor(y / m)); + } + + return this.tiles[id] ? transform.tile(this.tiles[id], extent) : null; +}; + +function toID(z, x, y) { + return (((1 << z) * y + x) * 32) + z; +} + +function intersectX(a, b, x) { + return [x, (x - a[0]) * (b[1] - a[1]) / (b[0] - a[0]) + a[1], 1]; +} +function intersectY(a, b, y) { + return [(y - a[1]) * (b[0] - a[0]) / (b[1] - a[1]) + a[0], y, 1]; +} + +function extend(dest, src) { + for (var i in src) dest[i] = src[i]; + return dest; +} + +// checks whether a tile is a whole-area fill after clipping; if it is, there's no sense slicing it further +function isClippedSquare(tile, extent, buffer) { + + var features = tile.source; + if (features.length !== 1) return false; + + var feature = features[0]; + if (feature.type !== 3 || feature.geometry.length > 1) return false; + + var len = feature.geometry[0].length; + if (len !== 5) return false; + + for (var i = 0; i < len; i++) { + var p = transform.point(feature.geometry[0][i], extent, tile.z2, tile.x, tile.y); + if ((p[0] !== -buffer && p[0] !== extent + buffer) || + (p[1] !== -buffer && p[1] !== extent + buffer)) return false; + } + + return true; +} diff --git a/src/geojson-vt/simplify.js b/src/geojson-vt/simplify.js new file mode 100644 index 00000000..2e55972e --- /dev/null +++ b/src/geojson-vt/simplify.js @@ -0,0 +1,72 @@ +'use strict'; + +// calculate simplification data using optimized Douglas-Peucker algorithm + +function simplify(points, tolerance) { + + var sqTolerance = tolerance * tolerance, + len = points.length, + first = 0, + last = len - 1, + stack = [], + i, maxSqDist, sqDist, index; + + // always retain the endpoints (1 is the max value) + points[first][2] = 1; + points[last][2] = 1; + + // avoid recursion by using a stack + while (last) { + + maxSqDist = 0; + + for (i = first + 1; i < last; i++) { + sqDist = getSqSegDist(points[i], points[first], points[last]); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + points[index][2] = maxSqDist; // save the point importance in squared pixels as a z coordinate + stack.push(first); + stack.push(index); + first = index; + + } else { + last = stack.pop(); + first = stack.pop(); + } + } +} + +// square distance from a point to a segment +function getSqSegDist(p, a, b) { + + var x = a[0], y = a[1], + bx = b[0], by = b[1], + px = p[0], py = p[1], + dx = bx - x, + dy = by - y; + + if (dx !== 0 || dy !== 0) { + + var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); + + if (t > 1) { + x = bx; + y = by; + + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = px - x; + dy = py - y; + + return dx * dx + dy * dy; +} diff --git a/src/geojson-vt/tile.js b/src/geojson-vt/tile.js new file mode 100644 index 00000000..764d5385 --- /dev/null +++ b/src/geojson-vt/tile.js @@ -0,0 +1,83 @@ +'use strict'; + +function createTile(features, z2, tx, ty, tolerance, noSimplify) { + var tile = { + features: [], + numPoints: 0, + numSimplified: 0, + numFeatures: 0, + source: null, + x: tx, + y: ty, + z2: z2, + transformed: false, + min: [2, 1], + max: [-1, 0] + }; + for (var i = 0; i < features.length; i++) { + tile.numFeatures++; + addFeature(tile, features[i], tolerance, noSimplify); + + var min = features[i].min, + max = features[i].max; + + if (min[0] < tile.min[0]) tile.min[0] = min[0]; + if (min[1] < tile.min[1]) tile.min[1] = min[1]; + if (max[0] > tile.max[0]) tile.max[0] = max[0]; + if (max[1] > tile.max[1]) tile.max[1] = max[1]; + } + return tile; +} + +function addFeature(tile, feature, tolerance, noSimplify) { + + var geom = feature.geometry, + type = feature.type, + simplified = [], + sqTolerance = tolerance * tolerance, + i, j, ring, p; + + if (type === 1) { + for (i = 0; i < geom.length; i++) { + simplified.push(geom[i]); + tile.numPoints++; + tile.numSimplified++; + } + + } else { + + // simplify and transform projected coordinates for tile geometry + for (i = 0; i < geom.length; i++) { + ring = geom[i]; + + // filter out tiny polylines & polygons + if (!noSimplify && ((type === 2 && ring.dist < tolerance) || + (type === 3 && ring.area < sqTolerance))) { + tile.numPoints += ring.length; + continue; + } + + var simplifiedRing = []; + + for (j = 0; j < ring.length; j++) { + p = ring[j]; + // keep points with importance > tolerance + if (noSimplify || p[2] > sqTolerance) { + simplifiedRing.push(p); + tile.numSimplified++; + } + tile.numPoints++; + } + + simplified.push(simplifiedRing); + } + } + + if (simplified.length) { + tile.features.push({ + geometry: simplified, + type: type, + tags: feature.tags || null + }); + } +} diff --git a/src/geojson-vt/transform.js b/src/geojson-vt/transform.js new file mode 100644 index 00000000..fe93e947 --- /dev/null +++ b/src/geojson-vt/transform.js @@ -0,0 +1,38 @@ +'use strict'; + +// Transforms the coordinates of each feature in the given tile from +// mercator-projected space into (extent x extent) tile space. +function transformTile(tile, extent) { + if (tile.transformed) return tile; + + var z2 = tile.z2, + tx = tile.x, + ty = tile.y, + i, j, k; + + for (i = 0; i < tile.features.length; i++) { + var feature = tile.features[i], + geom = feature.geometry, + type = feature.type; + + if (type === 1) { + for (j = 0; j < geom.length; j++) geom[j] = transformPoint(geom[j], extent, z2, tx, ty); + + } else { + for (j = 0; j < geom.length; j++) { + var ring = geom[j]; + for (k = 0; k < ring.length; k++) ring[k] = transformPoint(ring[k], extent, z2, tx, ty); + } + } + } + + tile.transformed = true; + + return tile; +} + +function transformPoint(p, extent, z2, tx, ty) { + var x = Math.round(extent * (p[0] * z2 - tx)), + y = Math.round(extent * (p[1] * z2 - ty)); + return [x, y]; +} diff --git a/src/geojson-vt/wrap.js b/src/geojson-vt/wrap.js new file mode 100644 index 00000000..7d9b243a --- /dev/null +++ b/src/geojson-vt/wrap.js @@ -0,0 +1,59 @@ +'use strict'; + +const clip = imports.geojsonvt.clip.clip; + +function wrap(features, buffer, intersectX) { + var merged = features, + left = clip(features, 1, -1 - buffer, buffer, 0, intersectX, -1, 2), // left world copy + right = clip(features, 1, 1 - buffer, 2 + buffer, 0, intersectX, -1, 2); // right world copy + + if (left || right) { + merged = clip(features, 1, -buffer, 1 + buffer, 0, intersectX, -1, 2); // center world copy + + if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center + if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center + } + + return merged; +} + +function shiftFeatureCoords(features, offset) { + var newFeatures = []; + + for (var i = 0; i < features.length; i++) { + var feature = features[i], + type = feature.type; + + var newGeometry; + + if (type === 1) { + newGeometry = shiftCoords(feature.geometry, offset); + } else { + newGeometry = []; + for (var j = 0; j < feature.geometry.length; j++) { + newGeometry.push(shiftCoords(feature.geometry[j], offset)); + } + } + + newFeatures.push({ + geometry: newGeometry, + type: type, + tags: feature.tags, + min: [feature.min[0] + offset, feature.min[1]], + max: [feature.max[0] + offset, feature.max[1]] + }); + } + + return newFeatures; +} + +function shiftCoords(points, offset) { + var newPoints = []; + newPoints.area = points.area; + newPoints.dist = points.dist; + + for (var i = 0; i < points.length; i++) { + newPoints.push([points[i][0] + offset, points[i][1], points[i][2]]); + } + return newPoints; +} diff --git a/src/gfx.js b/src/gfx.js new file mode 100644 index 00000000..8f6ce6a4 --- /dev/null +++ b/src/gfx.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Color = imports.color; + +/** + * Draws a colored badged with rounded corners and an optional outline. + * + * cr: A Cairo context to draw into + * bgColor: The fill color to draw the background with, represented as + * a string with 8-bit HEX-encoded RGB values + * outlineColor: The color to use for the outline, or null if no outline + * x: pixel offset for x-coord of top-left corner of bounding box + * y: pixel offset for y-coord of top-left corner of bounding box + * width: The width to draw the badge + * height: The height to draw the badge + */ +function drawColoredBagde(cr, bgColor, outlineColor, x, y, width, height) { + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let radius = outlineColor ? 5 : 3; + + cr.newSubPath(); + cr.arc(width - radius + x, radius + y, radius, -Math.PI / 2, 0); + cr.arc(width - radius + x, height - radius + y, radius, 0 , Math.PI / 2); + cr.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI); + cr.arc(radius + x, radius + y, radius, Math.PI, 3 * Math.PI / 2); + cr.closePath(); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.fillPreserve(); + + if (outlineColor) { + let outlineRed = Color.parseColor(outlineColor, 0); + let outlineGreen = Color.parseColor(outlineColor, 1); + let outlineBlue = Color.parseColor(outlineColor, 2); + + cr.setSourceRGB(outlineRed, outlineGreen, outlineBlue); + cr.setLineWidth(1); + cr.stroke(); + } +} diff --git a/src/gpxShapeLayer.js b/src/gpxShapeLayer.js new file mode 100644 index 00000000..e3a23b99 --- /dev/null +++ b/src/gpxShapeLayer.js @@ -0,0 +1,52 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var GpxShapeLayer = GObject.registerClass( +class GpxShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.gpx(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +GpxShapeLayer.mimeTypes = ['application/gpx+xml' ]; +GpxShapeLayer.displayName = 'GPX'; +GpxShapeLayer.createInstance = function(params) { + return new GpxShapeLayer(params); +}; diff --git a/src/graphHopper.js b/src/graphHopper.js new file mode 100644 index 00000000..41d6bc43 --- /dev/null +++ b/src/graphHopper.js @@ -0,0 +1,269 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Mainloop = imports.mainloop; +const Soup = imports.gi.Soup; + +const EPAF = imports.epaf; +const HTTP = imports.http; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; + +/** + * Directional sign from the GraphHopper API. + * https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md + */ +var Sign = { + KEEP_LEFT: -7, + TURN_SHARP_LEFT: -3, + TURN_LEFT: -2, + TURN_SLIGHT_LEFT: -1, + CONTINUE_ON_STREET: 0, + TURN_SLIGHT_RIGHT: 1, + TURN_RIGHT: 2, + TURN_SHARP_RIGHT: 3, + FINISH: 4, + REACHED_VIA: 5, + USE_ROUNDABOUT: 6, + KEEP_RIGHT: 7 +} + +var GraphHopper = class GraphHopper { + + get route() { + return this._route; + } + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._key = "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP"; + this._baseURL = "https://graphhopper.com/api/1/route?"; + this._locale = GLib.get_language_names()[0]; + this._route = new Route.Route(); + this.storedRoute = null; + this._query = params.query; + } + + _updateFromStored() { + Mainloop.idle_add(() => { + if (!this.storedRoute) + return; + + this.route.update({ path: this.storedRoute.path, + turnPoints: this.storedRoute.turnPoints, + distance: this.storedRoute.distance, + time: this.storedRoute.time, + bbox: this.storedRoute.bbox }); + this.storedRoute = null; + }); + } + + _queryGraphHopper(points, transportationType, callback) { + let url = this._buildURL(points, transportationType); + let msg = Soup.Message.new('GET', url); + this._session.queue_message(msg, (session, message) => { + try { + let result = this._parseMessage(message); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + callback(null, e); + } + }); + } + + fetchRoute(points, transportationType) { + if (this.storedRoute) { + this._updateFromStored(); + return; + } + + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (exception) { + Utils.debug(exception); + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("Route request failed.")); + } else { + if (!result) { + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("No route found.")); + } else { + let route = this._createRoute(result.paths[0]); + this.route.update(route); + } + } + }); + } + + fetchRouteAsync(points, transportationType, callback) { + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (result) { + let route = this._createRoute(result.paths[0]); + callback(route, exception); + } else { + callback(null, exception); + } + }); + } + + _buildURL(points, transportation) { + let locations = points.map(function(point) { + return [point.place.location.latitude, point.place.location.longitude].join(','); + }); + let vehicle = RouteQuery.Transportation.toString(transportation); + let query = new HTTP.Query({ type: 'json', + key: this._key, + vehicle: vehicle, + locale: this._locale, + point: locations, + debug: Utils.debugEnabled + }); + let url = this._baseURL + query.toString(); + Utils.debug("Sending route request to: " + url); + return url; + } + + _parseMessage({ status_code, response_body, uri }) { + if (status_code === 500) { + log("Internal server error.\n" + + "This is most likely a bug in GraphHopper"); + log("Please file a bug at " + + "https://github.com/graphhopper/graphhopper/issues\n" + + "with the the following Graphopper request URL included:\n"); + log(uri.to_string(false)); + } + if (status_code !== 200) + return null; + + let result = JSON.parse(response_body.data); + + if (!Array.isArray(result.paths)) { + Utils.debug("No route found"); + if (result.info && Array.isArray(result.info.errors)) { + result.info.errors.forEach(({ message, details }) => { + Utils.debug("Message: " + message); + Utils.debug("Details: " + details); + }); + } + return null; + } + + return result; + } + + _createRoute(route) { + let path = EPAF.decode(route.points); + let turnPoints = this._createTurnPoints(path, route.instructions); + let bbox = new Champlain.BoundingBox(); + + // GH does lonlat-order and Champlain latlon-order + bbox.extend(route.bbox[1], route.bbox[0]); + bbox.extend(route.bbox[3], route.bbox[2]); + + return { path: path, + turnPoints: turnPoints, + distance: route.distance, + time: route.time, + bbox: bbox }; + } + + _createTurnPoints(path, instructions) { + let via = 0; + let startPoint = new Route.TurnPoint({ + coordinate: path[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let rest = this._foldInstructions(instructions).map((instr) => { + let type = this._createTurnPointType(instr.sign); + let text = instr.text; + if (type === Route.TurnPointType.VIA) { + via++; + let viaPlace = this._query.filledPoints[via].place; + text = viaPlace.name || instr.text; + } + return new Route.TurnPoint({ + coordinate: path[instr.interval[0]], + type: type, + distance: instr.distance, + instruction: text, + time: instr.time, + turnAngle: instr.turn_angle + }); + }); + return [startPoint].concat(rest); + } + + _foldInstructions(instructions) { + let currInstruction = instructions[0]; + let res = []; + + for (let i = 1; i < instructions.length; i++) { + let newInstruction = instructions[i]; + let newSign = newInstruction.sign; + let newStreetname = newInstruction.street_name; + + /* if the direction is to continue straight, or keep left or keep + * right on the same street/road number, fold the instruction into + * the previous one + */ + if (newSign === Sign.CONTINUE_ON_STREET || + ((newSign === Sign.KEEP_LEFT || newSign === Sign.KEEP_RIGHT) && + newStreetname === currInstruction.street_name)) { + currInstruction.distance += newInstruction.distance; + } else { + res.push(currInstruction); + currInstruction = instructions[i]; + } + } + + // push finish instruction + res.push(instructions[instructions.length - 1]); + + return res; + } + + _createTurnPointType(sign) { + let type = sign + 3; + let min = Route.TurnPointType.SHARP_LEFT; + let max = Route.TurnPointType.ROUNDABOUT; + if (min <= type && type <= max) + return type; + else + return undefined; + } +}; diff --git a/src/graphHopperGeocode.js b/src/graphHopperGeocode.js new file mode 100644 index 00000000..e94442c2 --- /dev/null +++ b/src/graphHopperGeocode.js @@ -0,0 +1,154 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +var GraphHopperGeocode = class { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().graphHopperGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().graphHopperGeocode.attributionUrl; + } + + get name() { + return 'GraphHopper Geocode'; + } + + get url() { + return 'https://docs.graphhopper.com/#tag/Geocoding-API'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let hits = json.hits; + + if (!hits || hits.length === 0) { + Utils.debug('No hits in response'); + return null; + } + + hits.forEach(hit => { + let place = this._parseHit(hit); + + if (place) + result.push(place); + }); + + return result; + } + + _parseHit(hit) { + let lat = hit.point.lat; + let lon = hit.point.lng; + + return PhotonParser.parsePlace(lat, lon, hit); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ point: latitude + ',' + longitude, + limit: string ? this._limit : 1, + locale: this._language, + key: this._apiKey + }); + if (string) + query.add('q', string); + else + query.add('reverse', 'true'); + + return Format.vprintf('%s/api/1/geocode?%s', [this._baseUrl, + query.toString()]); + } + + _readService() { + let graphHopperGeocode = Service.getService().graphHopperGeocode; + this._language = Utils.getLanguage(); + + if (graphHopperGeocode) { + this._baseUrl = graphHopperGeocode.baseUrl; + this._apiKey = graphHopperGeocode.apiKey; + } + } +} diff --git a/src/graphHopperTransit.js b/src/graphHopperTransit.js new file mode 100644 index 00000000..7fa927e9 --- /dev/null +++ b/src/graphHopperTransit.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utilities to use GraphHopper to perform walking routes for use in + * transit itineraries, for plugins not natively supporting turn-by-turn + * routing for walking legs + */ + +const Champlain = imports.gi.Champlain; + +const Application = imports.application; +const Location = imports.location; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const TransitPlan = imports.transitPlan; + +/* Creates a new walking leg given start and end places, and a route + * obtained from GraphHopper. If the route is undefined (which happens if + * GraphHopper failed to obtain a walking route, approximate it with a + * straight line. */ +function createWalkingLeg(from, to, fromName, toName, route) { + let fromLocation = from.place.location; + let toLocation = to.place.location; + let fromCoordinate = [fromLocation.latitude, fromLocation.longitude]; + let toCoordinate = [toLocation.latitude, toLocation.longitude]; + let polyline = route ? route.path : + createStraightPolyline(fromLocation, toLocation); + let distance = route ? route.distance : + fromLocation.get_distance_from(toLocation) * 1000; + /* as an estimate for approximated straight-line walking legs, + * assume a speed of 1 m/s to allow some extra time */ + let duration = route ? route.time / 1000 : distance; + let walkingInstructions = route ? route.turnPoints : null; + + return new TransitPlan.Leg({ fromCoordinate: fromCoordinate, + toCoordinate: toCoordinate, + from: fromName, + to: toName, + isTransit: false, + polyline: polyline, + duration: duration, + distance: distance, + walkingInstructions: walkingInstructions }); +} + +// create a straight-line "as the crow flies" polyline between two places +function createStraightPolyline(fromLoc, toLoc) { + return [new Champlain.Coordinate({ latitude: fromLoc.latitude, + longitude: fromLoc.longitude }), + new Champlain.Coordinate({ latitude: toLoc.latitude, + longitude: toLoc.longitude })]; +} + +var _walkingRoutes = []; + +/* fetches walking route and stores the route for the given coordinate + * pair to avoid requesting the same route over and over from GraphHopper + */ +function fetchWalkingRoute(points, callback) { + let index = points[0].place.location.latitude + ',' + + points[0].place.location.longitude + ';' + + points[1].place.location.latitude + ',' + + points[1].place.location.longitude; + let route = _walkingRoutes[index]; + + if (!route) { + Application.routingDelegator.graphHopper.fetchRouteAsync(points, + RouteQuery.Transportation.PEDESTRIAN, + (newRoute) => { + _walkingRoutes[index] = newRoute; + callback(newRoute); + }); + } else { + callback(route); + } +} + +// create a query point from a bare coordinate (lat, lon pair) +function createQueryPointForCoord(coord) { + let location = new Location.Location({ latitude: coord[0], + longitude: coord[1], + accuracy: 0 }); + let place = new Place.Place({ location: location }); + let point = new RouteQuery.QueryPoint(); + + point.place = place; + return point; +} + +/** + * Refine itineraries with walking legs retrieved from GraphHopper. + * Intended for use by transit plugins where the source API doesn't give + * full walking turn-by-turn routing + */ +function addWalkingToItineraries(itineraries, callback) { + _addWalkingToItinerariesRecursive(itineraries, 0, callback); +} + +function _addWalkingToItinerariesRecursive(itineraries, index, callback) { + if (index === itineraries.length) { + callback(); + } else { + let itinerary = itineraries[index]; + + _addWalkingToLegsRecursive(itinerary.legs, 0, () => { + _addWalkingToItinerariesRecursive(itineraries, index + 1, callback); + }); + } +} + +function _addWalkingToLegsRecursive(legs, index, callback) { + if (index === legs.length) { + callback(); + } else { + let leg = legs[index]; + + if (!leg.transit) { + let from = createQueryPointForCoord(leg.fromCoordinate); + let to = createQueryPointForCoord(leg.toCoordinate); + + fetchWalkingRoute([from, to], (route) => { + if (route) { + let duration = route.time / 1000; + + /* for walking legs not in the start or end + * only replace with the retrieved one if it's not + * longer in duration that the previous (straight-line) + * one. + */ + if (index === 0 || index === legs.length - 1 || + duration <= leg.duration) { + leg.distance = route.distance; + leg.walkingInstructions = route.turnPoints; + leg.polyline = route.path; + } + } + + _addWalkingToLegsRecursive(legs, index + 1, callback); + }); + } else { + _addWalkingToLegsRecursive(legs, index + 1, callback); + } + } +} diff --git a/src/http.js b/src/http.js new file mode 100644 index 00000000..8d853fee --- /dev/null +++ b/src/http.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Soup = imports.gi.Soup; + +function encode(data) { + if(data === null) + return null; + + return Soup.URI.encode(data.toString(), '&'); +} + +var Query = class Query { + + constructor(obj) { + this._query = {}; + for(let key in obj) { + this.add(key, obj[key]); + } + } + + // a value === null represents an empty value + add(key, value) { + // Initialize query field if it isn't already + let queryValue = this._query[key]; + if(!Array.isArray(queryValue)) + this._query[key] = []; + + if(Array.isArray(value)) + this._query[key] = this._query[key].concat(value); + else + this._query[key].push(value); + } + + /** + * Get the query parameters in string form. + * If useArrayNotation is given, and true, use array notation adding [] + * after key if there's multiple values for that key. + */ + toString(useArrayNotation = false) { + let vars = []; + for(let key in this._query) { + let values = this._query[key]; + let multipleValues = values.length > 1; + let encKey = encode(key) + (multipleValues && useArrayNotation ? + '[]' : ''); + + values.forEach(function(value) { + let encValue = encode(value); + if(encValue !== null) + vars.push([encKey, encValue].join('=')); + else + vars.push(encKey); + }); + } + return vars.join('&'); + } +}; diff --git a/src/hvt.js b/src/hvt.js new file mode 100644 index 00000000..810b1ad4 --- /dev/null +++ b/src/hvt.js @@ -0,0 +1,249 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Extended route types using HVT (Hierarchical Vehicle Type) codes from + * the European TPEG standard. + * https://support.google.com/transitpartners/answer/3520902 + */ + +/* when adding an additional constant here, make sure to edit the LAST_ + * constant for the corresponding block + */ + +// rail services +var RAILWAY_SERVICE = 100; +var HIGH_SPEED_RAIL_SERVICE = 101; +var LONG_DISTANCE_TRAINS = 102; +var INTER_REGIONAL_RAIL_SERVICE = 103; +var CAR_TRANSPORT_RAIL_SERVICE = 104; +var SLEEPER_RAIL_SERVICE = 105; +var REGIONAL_RAIL_SERVICE = 106; +var TOURIST_RAILWAY_SERVICE = 107; +var RAIL_SHUTTLE = 108; +var SUBURBAN_RAILWAY = 109; +var REPLACEMENT_RAIL_SERVICE = 110; +var SPECIAL_RAIL_SERVICE = 111; +var LORRY_TRANSPORT_RAIL_SERVICE = 112; +var ALL_RAIL_SERVICES = 113; +var CROSS_COUNTRY_RAIL_SERVICE = 114; +var VEHICLE_TRANSPORT_RAIL_SERVICE = 115; +var RACK_AND_PINION_RAILWAY = 116; +var ADDITIONAL_RAIL_SERVICE = 117; +var LAST_RAIL_SERVICE = ADDITIONAL_RAIL_SERVICE; + +// coach services +var COACH_SERVICE = 200; +var INTERNATIONAL_COACH_SERVICE = 201; +var NATIONAL_COACH_SERVICE = 202; +var SHUTTLE_COACH_SERVICE = 203; +var REGIONAL_COACH_SERVICE = 204; +var SPECIAL_COACH_SERVICE = 205; +var SIGHTSEEING_COACH_SERVICE = 206; +var TOURIST_COACH_SERVICE = 207; +var COMMUTER_COACH_SERVICE = 208; +var ALL_COACH_SERVICES = 209; +var LAST_COACH_SERVICE = ALL_COACH_SERVICES; + +/// suburban railway services +var SUBURBAN_RAILWAY_SERVICE = 300; + +// urban railway services +var URBAN_RAILWAY_SERVICE = 400; +var URBAN_METRO_SERVICE = 401; +var URBAN_UNDERGROUND_SERVICE = 402; +// this constant has the same name as 400 in the specification +var URBAN_RAILWAY_SERVICE_2 = 403; +var ALL_URBAN_RAILWAY_SERVICES = 404; +var MONORAIL = 405; +var LAST_URBAN_RAILWAY_SERVICE = MONORAIL; + +// metro services +var METRO_SERVICE = 500; + +// underground services +var UNDERGROUND_SERVICE = 600; + +// bus services +var BUS_SERVICE = 700; +var REGIONAL_BUS_SERVICE = 701; +var EXPRESS_BUS_SERVICE = 702; +var STOPPING_BUS_SERVICE = 703; +var LOCAL_BUS_SERVICE = 704; +var NIGHT_BUS_SERVICE = 705; +var POST_BUS_SERVICE = 706; +var SPECIAL_NEEDS_BUS_SERVICE = 707; +var MOBILITY_BUS_SERVICE = 708; +var MOBILITY_BUS_SERVICE_FOR_REGISTERED_DISABLED = 709; +var SIGHTSEEING_BUS = 710; +var SHUTTLE_BUS = 711; +var SCHOOL_BUS = 712; +var SCHOOL_AND_PUBLIC_SERVICE_BUS_SERVICE = 713; +var RAIL_REPLACEMENT_BUS_SERVICE = 714; +var DEMAND_AND_RESPONSE_BUS_SERVICE = 715; +var ALL_BUS_SERVICES = 716; +var LAST_BUS_SERVICE = ALL_BUS_SERVICES; + +// trolleybus services +var TROLLEYBUS_SERVICE = 800; + +// tram services +var TRAM_SERVICE = 900; +var CITY_TRAM_SERVICE = 901; +var LOCAL_TRAM_SERVICE = 902; +var REGIONAL_TRAM_SERVICE = 903; +var SIGHTSEEING_TRAM_SERVICE = 904; +var SHUTTLE_TRAM_SERVICE = 905; +var ALL_TRAM_SERVICES = 906; +var LAST_TRAM_SERVICE = ALL_TRAM_SERVICES; + +// water transport services +var WATER_TRANSPORT_SERVICE = 1000; +var INTERNATIONAL_CAR_FERRY_SERVICE = 1001; +var NATIONAL_CAR_FERRY_SERVICE = 1002; +var REGIONAL_CAR_FERRY_SERVICE = 1003; +var LOCAL_CAR_FERRY_SERVICE = 1004; +var INTERNATIONAL_PASSENGER_FERRY_SERVICE = 1005; +var NATIONAL_PASSENGER_FERRY_SERVICE = 1006; +var REGIONAL_PASSENGER_FERRY_SERVICE = 1007; +var LOCAL_PASSENGER_FERRY_SERVICE = 1008; +var POST_BOAT_SERVICE = 1009; +var TRAIN_FERRY_SERVICE = 1010; +var ROAD_LINK_FERRY_SERVICE = 1011; +var AIRPORT_LINK_FERRY_SERVICE = 1012; +var CAR_HIGH_SPEED_FERRY_SERVICE = 1013; +var PASSENGER_HIGH_SPEED_FERRY_SERVICE = 1014; +var SIGHTSEEING_BOAT_SERVICE = 1015; +var SCHOOL_BOAT = 1016; +var CABLE_DRAWN_BOAT_SERVICE = 1017; +var RIVER_BUS_SERVICE = 1018; +var SCHEDULED_FERRY_SERVICE = 1019; +var SHUTTLE_FERRY_SERVICE = 1020; +var ALL_WATER_TRANSPORT_SERVICE = 1021; +var LAST_WATER_TRANSPORT_SERVICE = ALL_WATER_TRANSPORT_SERVICE; + +// air service +var AIR_SERVICE = 1100; +var INTERNATIONAL_AIR_SERVICE = 1101; +var DOMESTIC_AIR_SERVICE = 1102; +var INTERCONTINENTAL_AIR_SERVICE = 1103; +var DOMESTIC_SCHEDULED_AIR_SERVICE = 1104; +var SHUTTLE_AIR_SERVICE = 1105; +var INTERCONTINENTAL_CHARTER_AIR_SERVICE = 1106; +var INTERNATIONAL_CHARTER_AIR_SERVICE = 1107; +var ROUND_TRIP_CHARTER_AIR_SERVICE = 1108; +var SIGHTSEEING_AIR_SERVICE = 1109; +var HELICOPTER_AIR_SERVICE = 1110; +var DOMESTIC_CHARTER_AIR_SERVICE = 1111; +var SCHENGEN_AREA_AIR_SERVICE = 1112; +var AIRSHIP_SERVICE = 1113; +var ALL_AIR_SERVICES = 1114; +var LAST_AIR_SERVICE = ALL_AIR_SERVICES; + +// ferry services +var FERRY_SERVICE = 1200; + +// telecabin services +var TELECABIN_SERVICE = 1300; +var TELECABIN_SERVICES = 1301; +// renamed this to not be confused with the tram-like street level cable cars +var TELECABIN_CABLE_CAR_SERVICE = 1302; +var ELEVATOR_SERVICE = 1303; +var CHAIR_LIFT_SERVICE = 1304; +var DRAG_LIFT_SERVICE = 1305; +var SMALL_TELECABIN_SERVICE = 1306; +var ALL_TELECABIN_SERVICES = 1307; +var LAST_TELECABIN_SERVICE = ALL_TELECABIN_SERVICES; + +// funicular services +var FUNICULAR_SERVICE = 1400; +var FUNICULAR_SERVICE_2 = 1401; +var ALL_FUNICULAR_SERVICES = 1402; +var LAST_FUNICULAR_SERVICE = ALL_FUNICULAR_SERVICES; + +// taxi services +var TAXI_SERVICE = 1500; +var COMMUNAL_TAXI_SERVICE = 1501; +var WATER_TAXI_SERVICE = 1502; +var RAIL_TAXI_SERVICE = 1503; +var BIKE_TAXI_SERVICE = 1504; +var LICENSED_TAXI_SERVICE = 1505; +var PRIVATE_HIRE_SERVICE_VEHICLE = 1506; +var ALL_TAXI_SERVICES = 1507; +var LAST_TAXI_SERVICE = ALL_TAXI_SERVICES; + +// self drive +var SELF_DRIVE = 1600; +var HIRE_CAR = 1601; +var HIRE_VAN = 1602; +var HIRE_MOTORBIKE = 1603; +var HIRE_CYCLE = 1604; +var LAST_SELF_DRIVE = HIRE_CYCLE; + +// misc. service +var MISCELLANEOUS_SERVICE = 1700; +var CABLE_CAR = 1701; +var HORSE_DRAWN_CARRIAGE = 1702; +var LAST_MISCELLANEOUS_SERVCE = HORSE_DRAWN_CARRIAGE; + +/** + * returns the super type of a given HVT type code, or -1 if the supplied code + * is not among the defined codes + */ +function supertypeOf(type) { + if (type >= RAILWAY_SERVICE && type <= LAST_RAIL_SERVICE) + return RAILWAY_SERVICE; + else if (type >= COACH_SERVICE && type <= LAST_COACH_SERVICE) + return COACH_SERVICE; + else if (type == SUBURBAN_RAILWAY_SERVICE) + return SUBURBAN_RAILWAY_SERVICE; + else if (type >= URBAN_RAILWAY_SERVICE && type <= LAST_URBAN_RAILWAY_SERVICE) + return URBAN_RAILWAY_SERVICE; + else if (type == METRO_SERVICE) + return METRO_SERVICE; + else if (type == UNDERGROUND_SERVICE) + return UNDERGROUND_SERVICE; + else if (type >= BUS_SERVICE && type <= LAST_BUS_SERVICE) + return BUS_SERVICE; + else if (type == TROLLEYBUS_SERVICE) + return TROLLEYBUS_SERVICE; + else if (type >= TRAM_SERVICE && type <= LAST_TRAM_SERVICE) + return TRAM_SERVICE; + else if (type >= WATER_TRANSPORT_SERVICE && + type <= LAST_WATER_TRANSPORT_SERVICE) + return WATER_TRANSPORT_SERVICE; + else if (type >= AIR_SERVICE && type <= LAST_AIR_SERVICE) + return AIR_SERVICE; + else if (type == FERRY_SERVICE) + return FERRY_SERVICE; + else if (type >= TELECABIN_SERVICE && type <= LAST_TELECABIN_SERVICE) + return TELECABIN_SERVICE; + else if (type >= FUNICULAR_SERVICE && type <= LAST_FUNICULAR_SERVICE) + return FUNICULAR_SERVICE; + else if (type >= TAXI_SERVICE && type <= LAST_TAXI_SERVICE) + return TAXI_SERVICE; + else if (type >= SELF_DRIVE && type <= LAST_SELF_DRIVE) + return SELF_DRIVE; + else if (type >= MISCELLANEOUS_SERVICE && type <= LAST_MISCELLANEOUS_SERVCE) + return MISCELLANEOUS_SERVICE; + else + return -1; +} diff --git a/src/instructionRow.js b/src/instructionRow.js new file mode 100644 index 00000000..f8f4cdc9 --- /dev/null +++ b/src/instructionRow.js @@ -0,0 +1,68 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Utils = imports.utils; + +var InstructionRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/instruction-row.ui', + InternalChildren: [ 'directionImage', + 'instructionLabel', + 'distanceLabel' ] +}, class InstructionRow extends Gtk.ListBoxRow { + + _init(params) { + this.turnPoint = params.turnPoint; + delete params.turnPoint; + + this._hasColor = params.hasColor; + delete params.hasColor; + + let lines = params.lines; + delete params.lines; + + super._init(params); + + if (lines) + this._instructionLabel.lines = lines; + + this._instructionLabel.label = this.turnPoint.instruction; + + /* + * The SVG icons for turn point stops has the color red, but has + * the suffix '-symbolic'. So when loading through GtkImage it will have + * the proper GtkIconLookupflags to re-color the icon as symbolic. + * When we load the PixBuf from the SVG ourself, we get the color. + */ + if (this._hasColor) { + let theme = Gtk.IconTheme.get_default(); + let iconName = this.turnPoint.iconName; + this._directionImage.pixbuf = theme.load_icon(iconName, 0, 0); + } else { + this._directionImage.icon_name = this.turnPoint.iconName; + } + + if (this.turnPoint.distance > 0) + this._distanceLabel.label = Utils.prettyDistance(this.turnPoint.distance); + } +}); diff --git a/src/kmlShapeLayer.js b/src/kmlShapeLayer.js new file mode 100644 index 00000000..c7ef0a1f --- /dev/null +++ b/src/kmlShapeLayer.js @@ -0,0 +1,51 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var KmlShapeLayer = GObject.registerClass( +class KmlShapeLayer extends ShapeLayer.ShapeLayer { + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.kml(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +KmlShapeLayer.mimeTypes = ['application/vnd.google-earth.kml+xml']; +KmlShapeLayer.displayName = 'KML'; +KmlShapeLayer.createInstance = function(params) { + return new KmlShapeLayer(params); +}; diff --git a/src/layersPopover.js b/src/layersPopover.js new file mode 100644 index 00000000..45664823 --- /dev/null +++ b/src/layersPopover.js @@ -0,0 +1,203 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Gdk = imports.gi.Gdk; + +const MapSource = imports.mapSource; +const MapView = imports.mapView; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +const PREVIEW_WIDTH = 180; +const PREVIEW_HEIGHT = 80; + +var ShapeLayerRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-row.ui', + Children: ['closeButton'], + InternalChildren: ['layerLabel', 'visibleButton'] +}, class ShapeLayerRow extends Gtk.ListBoxRow { + + _init(params) { + this.shapeLayer = params.shapeLayer; + delete params.shapeLayer; + + super._init(params); + + this._layerLabel.label = this.shapeLayer.getName(); + this._layerLabel.tooltip_text = this.shapeLayer.file.get_parse_name(); + this._visibleButton.connect('clicked', () => { + let image = this._visibleButton.get_child(); + + this.shapeLayer.visible = !this.shapeLayer.visible; + this.activatable = this.shapeLayer.visible; + if (this.shapeLayer.visible) + image.icon_name = 'layer-visible-symbolic'; + else + image.icon_name = 'layer-not-visible-symbolic'; + }); + } +}); + +var LayersPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/layers-popover.ui', + InternalChildren: [ 'streetLayerButton', + 'aerialLayerButton', + 'streetLayerImage', + 'aerialLayerImage', + 'layersListBox', + 'loadLayerButton' ] +}, class LayersPopover extends Gtk.Popover { + + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init({ width_request: 200, + no_show_all: true, + transitions_enabled: false, + visible: false }); + + this._aerialLayerButton.join_group(this._streetLayerButton); + + this.get_style_context().add_class('maps-popover'); + + this._layersListBox.bind_model(this._mapView.shapeLayerStore, + this._listBoxCreateWidget.bind(this)); + this._layersListBox.connect('row-activated', (lb, row) => { + this._mapView.gotoBBox(row.shapeLayer.bbox); + }); + + this._layersListBox.set_header_func((row, before) => { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this._layerPreviews = { + street: { + source: MapSource.createStreetSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }, + aerial: { + source: MapSource.createAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + } + }; + + // disable the map type switch buttons if aerial is unavailable + if (Service.getService().tiles.aerial) { + this._streetLayerButton.connect('clicked', () => { + this._mapView.setMapType(MapView.MapType.STREET); + }); + + this._aerialLayerButton.connect('clicked', () => { + this._mapView.setMapType(MapView.MapType.AERIAL); + }); + + this._mapView.view.connect("notify::zoom-level", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::latitude", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::longitude", + this._setLayerPreviews.bind(this)); + } else { + this._streetLayerButton.visible = false; + this._aerialLayerButton.visible = false; + } + + this.setMapType(this._mapView.getMapType()); + } + + _setLayerPreviews() { + this._setLayerPreviewImage("street"); + this._setLayerPreviewImage("aerial"); + } + + _setLayerPreviewImage(layer) { + let previewInfo = this._layerPreviews[layer]; + let source = previewInfo.source; + let widget = previewInfo.widget; + + let z = this._mapView.view.zoom_level - 1; + if (z < 0) + z = 0; + let size = source.get_tile_size(); + let x = Math.floor(source.get_x(z, this._mapView.view.longitude) / size); + let y = Math.floor(source.get_y(z, this._mapView.view.latitude) / size); + + // If the view hasn't moved enough that the tile is different, + // then don't bother changing anything + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z) { + + return; + } + previewInfo.lastLocation = {x, y, z}; + + let tile = Champlain.Tile.new_full(x, y, size, z); + + tile.connect("render-complete", (a, b, c, error) => { + if (error) + return; // oh well + + // Make sure we're still at the same location + // This is especially important on slow connections + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z) { + + let pixbuf = Gdk.pixbuf_get_from_surface(tile.surface, + (size - PREVIEW_WIDTH) / 2, + (size - PREVIEW_HEIGHT) / 2, + PREVIEW_WIDTH, + PREVIEW_HEIGHT); + widget.set_from_pixbuf(pixbuf); + } + }); + + source.fill_tile(tile); + } + + setMapType(mapType) { + if (mapType === MapView.MapType.STREET) + this._streetLayerButton.active = true; + else if (mapType === MapView.MapType.AERIAL) + this._aerialLayerButton.active = true; + } + + _onRemoveClicked(row) { + this._mapView.removeShapeLayer(row.shapeLayer); + if (this._layersListBox.get_children().length <= 0) + this._layersListBox.hide(); + } + + _listBoxCreateWidget(shapeLayer) { + let row = new ShapeLayerRow({ shapeLayer: shapeLayer }); + row.closeButton.connect('clicked', + () => this._onRemoveClicked(row)); + this._layersListBox.show(); + return row; + } +}); diff --git a/src/location.js b/src/location.js new file mode 100644 index 00000000..88427abc --- /dev/null +++ b/src/location.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Red Hat Inc. + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Authors: Zeeshan Ali (Khattak) + * Jonas Danielsson + */ + +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +/* Adds heading to Geocode.Location */ +var Location = GObject.registerClass( +class Location extends Geocode.Location { + + _init(params) { + this._heading = params.heading; + delete params.heading; + + super._init(params); + } + + get heading() { + return this._heading; + } + + set heading(v) { + this._heading = v; + } +}); diff --git a/src/locationServiceDialog.js b/src/locationServiceDialog.js new file mode 100644 index 00000000..4e459556 --- /dev/null +++ b/src/locationServiceDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2018 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +const _PRIVACY_PANEL = 'gnome-privacy-panel.desktop'; + +var LocationServiceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/location-service-dialog.ui', + InternalChildren: [ 'cancelButton', + 'settingsButton'], +}, class LocationServiceDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + this._settingsButton.connect('clicked', () => this._onSettings()); + this._cancelButton.connect('clicked', () => this._onCancel()); + } + + _onSettings() { + let privacyInfo = Gio.DesktopAppInfo.new(_PRIVACY_PANEL); + + try { + let display = Gdk.Display.get_default(); + + privacyInfo.launch([], display.get_app_launch_context()); + } catch(e) { + Utils.debug('launching privacy panel failed: ' + e); + } + + this.response(Gtk.ResponseType.OK); + } + + _onCancel() { + this.response(Gtk.ResponseType.CANCEL); + } +}); \ No newline at end of file diff --git a/src/longPrintLayout.js b/src/longPrintLayout.js new file mode 100644 index 00000000..3882f4e9 --- /dev/null +++ b/src/longPrintLayout.js @@ -0,0 +1,140 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; +const Route = imports.route; + +const _NUM_MINIMAPS = 5; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 0.57, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; +const _MiniMapView = { + SCALE_X: 0.4, + SCALE_Y: 0.20, + SCALE_MARGIN: 0.03, + ZOOM_LEVEL: 18 +}; + +var LongPrintLayout = GObject.registerClass( +class LongPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + 3 maps) + instructions */ + let totalSurfaces = 4 + this._route.turnPoints.length; + + /* Plus via points */ + this._route.turnPoints.forEach((turnPoint) => { + if (turnPoint.type === Route.TurnPointType.VIA) + totalSurfaces++; + }); + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let miniMapViewWidth = _MiniMapView.SCALE_X * this._pageWidth; + let miniMapViewHeight = _MiniMapView.SCALE_Y * this._pageHeight; + let miniMapViewMargin = _MiniMapView.SCALE_MARGIN * this._pageHeight; + let miniMapViewZoomLevel = _MiniMapView.ZOOM_LEVEL; + + let dy = 0; + let pointsLength = this._route.turnPoints.length; + + /* Fixed number of locations are plotted on minimaps which requires a + * check on instructions bound. Later on this can be made dynamic + * depending upon factors like total number of instructions, complexity + * of neighbourhood areas, etc. + * + * We currently have maps besides the instructions for: + * - the start location + * - via points in the route + * - the end location + * + * We include _NUM_MINIMAPS instructions per map, and have the map + * ensure the bounding box of those instructions. + * + * For the start location we include _NUM_MINIMAPS number of + * instruction, if available, from start. + * + * For via points we include _NUM_MINIMAPS / 2 number of instructions + * before and _NUM_MINIMAPS / 2 number of instructions after the + * via point. + * + * For the end location we include _NUM_MINIMAPS number of instructions + * leading up to the end location. + * + */ + let first = 0; + let last = Math.min(_NUM_MINIMAPS, pointsLength); + let points = this._createTurnPointArray(first, last); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + + /* x-cursor is increased temporarily for rendering instructions */ + let tmpX = this._cursorX; + for (let i = 0; i < this._route.turnPoints.length; i++) { + let turnPoint = this._route.turnPoints[i]; + + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._cursorX = tmpX + miniMapViewWidth + miniMapViewMargin; + this._drawInstruction(instructionWidth, instructionHeight, + turnPoint); + this._cursorY += dy; + + if (turnPoint.type === Route.TurnPointType.VIA) { + let tmpY = this._cursorY; + + first = Math.max(0, (i + 1) - (_NUM_MINIMAPS / 2)); + last = Math.min((i + 1) + (_NUM_MINIMAPS / 2), pointsLength); + points = this._createTurnPointArray(Math.floor(first), + Math.floor(last)); + this._cursorX = tmpX; + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + this._cursorY = tmpY; + } + } + this._cursorX = tmpX; + + first = Math.max(0, pointsLength - _NUM_MINIMAPS); + last = pointsLength; + points = this._createTurnPointArray(first, last); + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + } +}); diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..d93f0408 --- /dev/null +++ b/src/main.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +pkg.initGettext(); +pkg.initFormat(); +pkg.require({ 'cairo': '1.0', + 'Champlain': '0.12', + 'Clutter': '1.0', + 'Cogl': '1.0', + 'GeocodeGlib': '1.0', + 'Gdk': '3.0', + 'GdkPixbuf': '2.0', + 'GFBGraph': '0.2', + 'Gio': '2.0', + 'GLib': '2.0', + 'Goa': '1.0', + 'GObject': '2.0', + 'Gtk': '3.0', + 'GtkChamplain': '0.12', + 'GtkClutter': '1.0', + 'Rest': '0.7', + 'Soup': '2.4' }); + +const Application = imports.application; + +function main(args) { + /* Add prototype to get last element of an array. + * TODO: if we get more of these, might move initing + * to a decicated Prototypes modules. + */ + if (!Array.prototype.last) { + Array.prototype.last = function() { + return this[this.length - 1]; + } + } + + let application = new Application.Application(); + return application.run(args); +} diff --git a/src/mainWindow.js b/src/mainWindow.js new file mode 100644 index 00000000..8525245e --- /dev/null +++ b/src/mainWindow.js @@ -0,0 +1,647 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContextMenu = imports.contextMenu; +const ExportViewDialog = imports.exportViewDialog; +const FavoritesPopover = imports.favoritesPopover; +const Geoclue = imports.geoclue; +const GeocodeFactory = imports.geocode; +const LayersPopover = imports.layersPopover; +const LocationServiceDialog = imports.locationServiceDialog; +const MapView = imports.mapView; +const PlaceEntry = imports.placeEntry; +const PlaceStore = imports.placeStore; +const PrintOperation = imports.printOperation; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Sidebar = imports.sidebar; +const Utils = imports.utils; + +const _CONFIGURE_ID_TIMEOUT = 100; // msecs +const _WINDOW_MIN_WIDTH = 600; +const _WINDOW_MIN_HEIGHT = 500; + +var ShapeLayerFileChooser = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-file-chooser.ui' +}, class ShapeLayerFileChooser extends Gtk.FileChooserNative { + + _init(params) { + super._init(params); + let allFilter = new Gtk.FileFilter(); + allFilter.set_name(_("All Layer Files")); + this.add_filter(allFilter); + this.set_filter(allFilter); + this.title = _("Open Shape Layer"); + + ShapeLayer.SUPPORTED_TYPES.forEach((layerClass) => { + let filter = new Gtk.FileFilter(); + [filter, allFilter].forEach((f) => { + layerClass.mimeTypes.forEach((type) => { + f.add_mime_type(type); + }); + }); + filter.set_name(layerClass.displayName); + this.add_filter(filter); + }); + } +}); + +var MainWindow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/main-window.ui', + InternalChildren: [ 'headerBar', + 'grid', + 'mainStack', + 'mainGrid', + 'noNetworkView', + 'gotoUserLocationButton', + 'toggleSidebarButton', + 'layersButton', + 'favoritesButton', + 'printRouteButton', + 'zoomInButton', + 'zoomOutButton' ] +}, class MainWindow extends Gtk.ApplicationWindow { + + get mapView() { + return this._mapView; + } + + _init(params) { + super._init(params); + + this._configureId = 0; + + this._mapView = new MapView.MapView({ + mapType: this.application.local_tile_path ? + MapView.MapType.LOCAL : undefined, + mainWindow: this }); + + this._mainGrid.add(this._mapView); + + this._mapView.gotoUserLocation(false); + + this._sidebar = this._createSidebar(); + + this._contextMenu = new ContextMenu.ContextMenu({ mapView: this._mapView, + mainWindow: this }); + + this.layersPopover = new LayersPopover.LayersPopover({ + mapView: this._mapView + }); + this._layersButton.popover = this.layersPopover; + this._favoritesButton.popover = new FavoritesPopover.FavoritesPopover({ mapView: this._mapView }); + + + this._initHeaderbar(); + this._initActions(); + this._initSignals(); + this._restoreWindowGeometry(); + this._initDND(); + + this._grid.attach(this._sidebar, 1, 0, 1, 1); + + this._grid.show_all(); + + /* for some reason, setting the title of the window through the .ui + * template does not work anymore (maybe has something to do with + * setting a custom title on the headerbar). Setting it programmatically + * here works though. And yields a proper label in the gnome-shell + * overview. + */ + this.title = _("Maps"); + } + + _createPlaceEntry() { + let placeEntry = new PlaceEntry.PlaceEntry({ mapView: this._mapView, + visible: true, + margin_start: 35, + margin_end: 35, + max_width_chars: 50, + loupe: true, + matchRoute: true + }); + placeEntry.connect('notify::place', () => { + if (placeEntry.place) { + this._mapView.showPlace(placeEntry.place, true); + } + }); + + let popover = placeEntry.popover; + popover.connect('selected', () => this._mapView.grab_focus()); + this._mapView.view.connect('button-press-event', () => popover.hide()); + return placeEntry; + } + + _createSidebar() { + let sidebar = new Sidebar.Sidebar(this._mapView); + + Application.routeQuery.connect('notify', () => this._setRevealSidebar(true)); + this._toggleSidebarButton.bind_property('active', + this._mapView, 'routingOpen', + GObject.BindingFlags.BIDIRECTIONAL); + this.application.bind_property('connected', + sidebar, 'visible', + GObject.BindingFlags.DEFAULT); + return sidebar; + } + + _initDND() { + this.drag_dest_set(Gtk.DestDefaults.DROP, null, 0); + this.drag_dest_add_uri_targets(); + + this.connect('drag-motion', (widget, ctx, x, y, time) => { + Gdk.drag_status(ctx, Gdk.DragAction.COPY, time); + return true; + }); + + this.connect('drag-data-received', (widget, ctx, x, y, data, info, time) => { + let files = data.get_uris().map(Gio.file_new_for_uri); + if (this._mapView.openShapeLayers(files)) + Gtk.drag_finish(ctx, true, false, time); + else + Gtk.drag_finish(ctx, false, false, time); + }); + } + + _initActions() { + Utils.addActions(this, { + 'about': { + onActivate: () => this._onAboutActivate() + }, + 'map-type-menu': { + state: ['b', false], + onActivate: () => this._onMapTypeMenuActivate() + }, + 'switch-to-street-view': { + accels: ['1', 'KP_1'], + onActivate: () => this._onStreetViewActivate() + }, + 'switch-to-aearial-view': { + accels: ['2', 'KP_2'], + onActivate: () => this._onAerialViewActivate() + }, + 'goto-user-location': { + accels: ['L'], + onActivate: () => this._onGotoUserLocationActivate() + }, + 'goto-antipode-location': { + accels: ['A'], + onActivate: () => this._mapView.gotoAntipode() + }, + 'toggle-sidebar': { + accels: ['D'], + state: ['b', false], + onChangeState: (a, v) => this._onToggleSidebarChangeState(a, v) + }, + 'zoom-in': { + accels: ['plus', 'plus', 'KP_Add', 'KP_Add', 'equal', 'equal'], + onActivate: () => this._mapView.view.zoom_in() + }, + 'zoom-out': { + accels: ['minus', 'minus', 'KP_Subtract', 'KP_Subtract'], + onActivate: () => this._mapView.view.zoom_out() + }, + 'toggle-scale': { + accels: ['S'], + onActivate: () => this._mapView.toggleScale() + }, + 'find': { + accels: ['F'], + onActivate: () => this._placeEntry.grab_focus() + }, + 'print-route': { + accels: ['P'], + onActivate: () => this._printRouteActivate() + }, + 'open-shape-layer': { + accels: ['O'], + onActivate: () => this._onOpenShapeLayer() + }, + 'export-as-image': { + onActivate: () => this._onExportActivated() + } + }); + } + + _initSignals() { + this.connect('delete-event', this._quit.bind(this)); + this.connect('configure-event', + this._onConfigureEvent.bind(this)); + + this.connect('window-state-event', + this._onWindowStateEvent.bind(this)); + this._mapView.view.connect('button-press-event', () => { + // Can not call something that will generate clutter events + // from a clutter event-handler. So use an idle. + Mainloop.idle_add(() => this._mapView.grab_focus()); + }); + + this.application.connect('notify::connected', () => { + if (this.application.connected || this.application.local_tile_path) + this._mainStack.visible_child = this._mainGrid; + else + this._mainStack.visible_child = this._noNetworkView; + }); + + /* + * If the currently focused widget is an entry then we will + * hijack the key-press to the main window and make sure that + * they reach the entry before they can be swallowed as accelerator. + */ + this.connect('key-press-event', (window, event) => { + let focusWidget = window.get_focus(); + let keyval = event.get_keyval()[1]; + let keys = [Gdk.KEY_plus, Gdk.KEY_KP_Add, + Gdk.KEY_minus, Gdk.KEY_KP_Subtract, + Gdk.KEY_equal]; + let isPassThroughKey = keys.indexOf(keyval) !== -1; + + /* if no entry is focused, and the key is not one we should treat + * as a zoom accelerator when no entry is focused, focus the + * main search entry in the headebar to propaget the keypress there + */ + if (!(focusWidget instanceof Gtk.Entry) && !isPassThroughKey) { + /* if the search entry does not handle the event, pass it on + * instead of activating the entry + */ + if (this._placeEntry.handle_event(event) === Gdk.EVENT_PROPAGATE) + return false; + + this._placeEntry.has_focus = true; + focusWidget = this._placeEntry; + } + + if (focusWidget instanceof Gtk.Entry) + return focusWidget.event(event); + + return false; + }); + + this._mapView.view.connect('notify::zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::max-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::min-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + } + + _updateZoomButtonsSensitivity() { + let zoomLevel = this._mapView.view.zoom_level; + let maxZoomLevel = this._mapView.view.max_zoom_level; + let minZoomLevel = this._mapView.view.min_zoom_level; + + if (zoomLevel >= maxZoomLevel) + this._zoomInButton.set_sensitive(false); + else + this._zoomInButton.set_sensitive(true); + + if (zoomLevel <= minZoomLevel) + this._zoomOutButton.set_sensitive(false); + else + this._zoomOutButton.set_sensitive(true); + } + + _updateLocationSensitivity() { + let sensitive = (Application.geoclue.state !== Geoclue.State.INITIAL && + (this.application.connected || + this.application.local_tile_path)); + + this._gotoUserLocationButton.sensitive = sensitive; + } + + _initHeaderbar() { + this._placeEntry = this._createPlaceEntry(); + this._headerBar.custom_title = this._placeEntry; + + let favoritesPopover = this._favoritesButton.popover; + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + favoritesPopover.connect('notify::rows', () => { + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + }); + + this._mapView.bind_property('routeShowing', this._printRouteButton, + 'visible', GObject.BindingFlags.DEFAULT); + + Application.geoclue.connect('notify::state', + this._updateLocationSensitivity.bind(this)); + this.application.connect('notify::connected', () => { + let app = this.application; + + this._updateLocationSensitivity(); + this._layersButton.sensitive = app.connected; + this._toggleSidebarButton.sensitive = app.connected; + this._favoritesButton.sensitive = (app.connected && + favoritesPopover.rows > 0); + this._placeEntry.sensitive = app.connected; + this._printRouteButton.sensitive = app.connected; + }); + } + + _saveWindowGeometry() { + let window = this.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.MAXIMIZED) + return; + + // GLib.Variant.new() can handle arrays just fine + let size = this.get_size(); + Application.settings.set('window-size', size); + + let position = this.get_position(); + Application.settings.set('window-position', position); + } + + _restoreWindowGeometry() { + let size = Application.settings.get('window-size'); + if (size.length === 2) { + let [width, height] = size; + this.set_default_size(width, height); + } + + let position = Application.settings.get('window-position'); + if (position.length === 2) { + let [x, y] = position; + + this.move(x, y); + } + + if (Application.settings.get('window-maximized')) + this.maximize(); + } + + _onConfigureEvent(widget, event) { + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + this._configureId = Mainloop.timeout_add(_CONFIGURE_ID_TIMEOUT, () => { + this._saveWindowGeometry(); + this._configureId = 0; + return false; + }); + } + + _onWindowStateEvent(widget, event) { + let window = widget.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.FULLSCREEN) + return; + + let maximized = (state & Gdk.WindowState.MAXIMIZED); + Application.settings.set('window-maximized', maximized); + } + + _quit() { + // remove configure event handler if still there + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + // always save geometry before quitting + this._saveWindowGeometry(); + + return false; + } + + _onGotoUserLocationActivate() { + let message; + + if (Application.geoclue.state === Geoclue.State.ON) { + this._mapView.gotoUserLocation(true); + return; + } + + Application.geoclue.start(() => { + switch(Application.geoclue.state) { + case Geoclue.State.FAILED: + message = _("Failed to connect to location service"); + Utils.showDialog(message, Gtk.MessageType.ERROR, this); + break; + + case Geoclue.State.DENIED: + let dialog = new LocationServiceDialog.LocationServiceDialog({ + visible: true, + transient_for: this, + modal: true }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + break; + + default: + this._mapView.gotoUserLocation(true); + break; + } + }); + } + + _activateExport() { + let view = this._mapView.view; + let surface = view.to_surface(true); + let bbox = view.get_bounding_box(); + let [latitude, longitude] = bbox.get_center(); + + let dialog = new ExportViewDialog.ExportViewDialog({ + transient_for: this, + modal: true, + surface: surface, + latitude: latitude, + longitude: longitude, + mapView: this._mapView + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + + _onExportActivated() { + if (this._mapView.view.state === Champlain.State.DONE) { + this._activateExport(); + } else { + let notifyId = this._mapView.view.connect('notify::state', () => { + if (this._mapView.view.state === Champlain.State.DONE) { + this._mapView.view.disconnect(notifyId); + this._activateExport(); + } + }); + } + } + + _printRouteActivate() { + if (this._mapView.routeShowing) { + let operation = new PrintOperation.PrintOperation({ mainWindow: this }); + } + } + + _onMapTypeMenuActivate(action) { + let state = action.get_state().get_boolean(); + action.set_state(GLib.Variant.new('b', !state)); + } + + _onStreetViewActivate() { + this._mapView.setMapType(MapView.MapType.STREET); + this.layersPopover.setMapType(MapView.MapType.STREET); + } + + _onAerialViewActivate() { + // don't attempt to switch to aerial if we don't have tiles for it + if (Service.getService().tiles.aerial) { + this._mapView.setMapType(MapView.MapType.AERIAL); + this.layersPopover.setMapType(MapView.MapType.AERIAL); + } + } + + _onToggleSidebarChangeState(action, variant) { + action.set_state(variant); + + let reveal = variant.get_boolean(); + this._sidebar.set_reveal_child(reveal); + } + + _setRevealSidebar(value) { + let action = this.lookup_action('toggle-sidebar'); + action.change_state(GLib.Variant.new_boolean(value)); + } + + _onAboutActivate() { + let aboutDialog = new Gtk.AboutDialog({ + artists: [ 'Jakub Steiner ', + 'Andreas Nilsson ' ], + authors: [ 'Zeeshan Ali (Khattak) ', + 'Mattias Bengtsson ', + 'Jonas Danielsson ', + 'Marcus Lundblad '], + translator_credits: _("translator-credits"), + /* Translators: This is the program name. */ + program_name: _("Maps"), + comments: _("A map application for GNOME"), + license_type: Gtk.License.GPL_2_0, + logo_icon_name: 'org.gnome.Maps', + version: pkg.version, + website: 'https://live.gnome.org/Apps/Maps', + wrap_license: true, + + modal: true, + transient_for: this + }); + + let copyright = _("Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors"); + let attribution = this._getAttribution(); + + copyright += '\n' + attribution; + + /* HACK: we need to poke into gtkaboutdialog internals + * to set the copyright with markup like attribution requires + */ + + let copyrightLabel = aboutDialog.get_template_child(Gtk.AboutDialog, 'copyright_label'); + copyrightLabel.set_markup('' + copyright + ''); + copyrightLabel.show(); + + aboutDialog.show(); + aboutDialog.connect('response', () => aboutDialog.destroy()); + } + + _getAttribution() { + let tileProviderInfo = Service.getService().tileProviderInfo; + let photonGeocode = Service.getService().photonGeocode; + let attribution = _("Map data by %s and contributors").format('OpenStreetMap'); + + if (tileProviderInfo) { + let tileProviderString; + if (tileProviderInfo.url) { + tileProviderString = '' + + tileProviderInfo.name + ''; + } else { + tileProviderString = tileProviderInfo.name; + } + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * tile provider where the %s placeholder is replaced by either + * the bare name of the tile provider, or a linkified URL if one + * is available + */ + attribution += _("Map tiles provided by %s").format(tileProviderString); + } + + let provider = GeocodeFactory.getGeocoder().attribution; + let providerUrl = GeocodeFactory.getGeocoder().attributionUrl; + let geocoderName = GeocodeFactory.getGeocoder().name; + let geocoderUrl = GeocodeFactory.getGeocoder().url; + + let providerString; + if (providerUrl) { + providerString = + '' + provider + ''; + } else { + providerString = provider; + } + + let geocoderLink = + '%s'.format(geocoderUrl, geocoderName); + + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * search provider where the first %s placeholder is replaced by either + * the bare name of the geocoder provider, or a linkified URL if one + * is available, and the second %s placeholder is replaced by the + * URL to the geocoder project page. These placeholders + * can be swapped, if needed using the %n$s positional syntax + * (i.e. "%2$s ... %1$s ..." for positioning the project URL + * before the provider). + */ + attribution += _("Search provided by %s using %s"). + format(providerString, geocoderLink); + + return attribution; + } + + _onOpenShapeLayer() { + this._fileChooser = new ShapeLayerFileChooser({ + transient_for: this, + }); + + this._fileChooser.connect('response', (widget, response) => { + if (response === Gtk.ResponseType.ACCEPT) { + this._mapView.openShapeLayers(this._fileChooser.get_files()); + this.layersPopover.popdown(); + } + this._fileChooser.destroy(); + }); + this._fileChooser.show(); + } +}); diff --git a/src/mapBubble.js b/src/mapBubble.js new file mode 100644 index 00000000..998f0213 --- /dev/null +++ b/src/mapBubble.js @@ -0,0 +1,192 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const SendToDialog = imports.sendToDialog; +const Utils = imports.utils; + +var Button = { + NONE: 0, + ROUTE: 2, + SEND_TO: 4, + FAVORITE: 8, + CHECK_IN: 16 +}; + +var MapBubble = GObject.registerClass({ Abstract: true }, +class MapBubble extends Gtk.Popover { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + params.relative_to = params.mapView; + params.transitions_enabled = false; + delete params.mapView; + + let buttonFlags = params.buttons || Button.NONE; + delete params.buttons; + + let routeFrom = params.routeFrom; + delete params.routeFrom; + + let checkInMatchPlace = params.checkInMatchPlace; + if (checkInMatchPlace !== false) + checkInMatchPlace = true; + delete params.checkInMatchPlace; + + params.modal = false; + + super._init(params); + let ui = Utils.getUIObject('map-bubble', [ 'bubble-main-grid', + 'bubble-image', + 'bubble-thumbnail', + 'bubble-icon-stack', + 'bubble-content-area', + 'bubble-button-area', + 'bubble-route-button', + 'bubble-send-to-button', + 'bubble-favorite-button', + 'bubble-check-in-button', + 'bubble-favorite-button-image']); + this._image = ui.bubbleImage; + this._thumbnail = ui.bubbleThumbnail; + this._iconStack = ui.bubbleIconStack; + this._content = ui.bubbleContentArea; + + if (!buttonFlags) + ui.bubbleButtonArea.visible = false; + else { + if (buttonFlags & Button.ROUTE) + this._initRouteButton(ui.bubbleRouteButton, routeFrom); + if (buttonFlags & Button.SEND_TO) + this._initSendToButton(ui.bubbleSendToButton); + if (buttonFlags & Button.FAVORITE) + this._initFavoriteButton(ui.bubbleFavoriteButton, ui.bubbleFavoriteButtonImage); + if (buttonFlags & Button.CHECK_IN) + this._initCheckInButton(ui.bubbleCheckInButton, checkInMatchPlace); + } + + this.add(ui.bubbleMainGrid); + } + + get image() { + return this._image; + } + + get thumbnail() { + return this._thumbnail; + } + + get iconStack() { + return this._iconStack; + } + + get place() { + return this._place; + } + + get content() { + return this._content; + } + + _initFavoriteButton(button, image) { + let placeStore = Application.placeStore; + button.visible = true; + + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + image.icon_name = 'starred-symbolic'; + } else { + image.icon_name = 'non-starred-symbolic'; + } + + button.connect('clicked', () => { + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + image.icon_name = 'non-starred-symbolic'; + placeStore.removePlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } else { + image.icon_name = 'starred-symbolic'; + placeStore.addPlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } + }); + } + + _initSendToButton(button) { + button.visible = true; + button.connect('clicked', () => { + let dialog = new SendToDialog.SendToDialog({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this._place }); + dialog.connect('response', () => dialog.destroy()); + dialog.show(); + }); + } + + _initRouteButton(button, routeFrom) { + let query = Application.routeQuery; + let from = query.points[0]; + let to = query.points[query.points.length - 1]; + + button.visible = true; + + button.connect('clicked', () => { + query.freeze_notify(); + query.reset(); + Application.routingDelegator.reset(); + if (routeFrom) { + from.place = this._place; + } else { + if (Application.geoclue.place) + from.place = Application.geoclue.place; + to.place = this._place; + } + this.destroy(); + query.thaw_notify(); + }); + } + + _initCheckInButton(button, matchPlace) { + Application.checkInManager.bind_property('hasCheckIn', + button, 'visible', + GObject.BindingFlags.DEFAULT | + GObject.BindingFlags.SYNC_CREATE); + + button.connect('clicked', () => { + Application.checkInManager.showCheckInDialog(this.get_toplevel(), + this.place, + matchPlace); + }); + } +}); diff --git a/src/mapMarker.js b/src/mapMarker.js new file mode 100644 index 00000000..49cf491c --- /dev/null +++ b/src/mapMarker.js @@ -0,0 +1,392 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const MapWalker = imports.mapWalker; +const Utils = imports.utils; + +var MapMarker = GObject.registerClass({ + Implements: [Champlain.Exportable], + Abstract: true, + Signals: { + 'gone-to': { } + }, + Properties: { + 'surface': GObject.ParamSpec.override('surface', + Champlain.Exportable), + 'view-latitude': GObject.ParamSpec.double('view-latitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -90, 90, 0), + 'view-longitude': GObject.ParamSpec.double('view-longitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -180, 180, 0), + 'view-zoom-level': GObject.ParamSpec.int('view-zoom-level', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, 20, 3) + } +}, class MapMarker extends Champlain.Marker { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.selectable = true; + + super._init(params); + + this.connect('notify::size', this._translateMarkerPosition.bind(this)); + if (this._mapView) { + this._view = this._mapView.view; + this.connect('notify::selected', this._onMarkerSelected.bind(this)); + this.connect('button-press', this._onButtonPress.bind(this)); + this.connect('touch-event', this._onTouchEvent.bind(this)); + + // Some markers are draggable, we want to sync the marker location and + // the location saved in the GeocodePlace + // These are not bindings because the place may have a different + // location later + this.connect('notify::latitude', () => { + this.place.location.latitude = this.latitude; + }); + this.connect('notify::longitude', () => { + this.place.location.longitude = this.longitude; + }); + + this.place.connect('notify::location', this._onLocationChanged.bind(this)); + + this._view.bind_property('latitude', this, 'view-latitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('longitude', this, 'view-longitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('zoom-level', this, 'view-zoom-level', + GObject.BindingFlags.DEFAULT); + this.connect('notify::view-latitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-longitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-zoom-level', this._onViewUpdated.bind(this)); + } + } + + get surface() { + return this._surface; + } + + set surface(v) { + this._surface = v; + } + + vfunc_get_surface() { + return this._surface; + } + + vfunc_set_surface(surface) { + this._surface = surface; + } + + _actorFromIconName(name, size, color) { + try { + let theme = Gtk.IconTheme.get_default(); + let pixbuf; + + if (color) { + let info = theme.lookup_icon(name, size, 0); + pixbuf = info.load_symbolic(color, null, null, null)[0]; + } else { + pixbuf = theme.load_icon(name, size, 0); + } + + let canvas = new Clutter.Canvas({ width: pixbuf.get_width(), + height: pixbuf.get_height() }); + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0); + cr.paint(); + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + actor.set_content(canvas); + actor.set_size(pixbuf.get_width(), pixbuf.get_height()); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + _onButtonPress(marker, event) { + // Zoom in on marker on double-click + if (event.get_click_count() > 1) { + if (this._view.zoom_level < this._view.max_zoom_level) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.center_on(this.latitude, this.longitude); + } + } + } + + _onTouchEvent(marker, event) { + if (event.type() == Clutter.EventType.TOUCH_BEGIN) + this.selected = true; + + return Clutter.EVENT_STOP; + } + + _translateMarkerPosition() { + this.set_translation(-this.anchor.x, -this.anchor.y, 0); + } + + _onLocationChanged() { + this.set_location(this.place.location.latitude, this.place.location.longitude); + + if (this._bubble) { + if (this._isInsideView()) + this._positionBubble(this._bubble); + else + this.hideBubble(); + } + } + + /** + * Returns: The anchor point for the marker icon, relative to the + * top left corner. + */ + get anchor() { + return { x: 0, y: 0 }; + } + + get bubbleSpacing() { + return 0; + } + + get place() { + return this._place; + } + + get bubble() { + if (this._bubble === undefined) + this._bubble = this._createBubble(); + + return this._bubble; + } + + _createBubble() { + // Markers has no associated bubble by default + return null; + } + + _positionBubble(bubble) { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + let pos = new Gdk.Rectangle({ x: x + tx - this.bubbleSpacing, + y: y + ty - this.bubbleSpacing, + width: this.width + this.bubbleSpacing * 2, + height: this.height + this.bubbleSpacing * 2 }); + bubble.pointing_to = pos; + bubble.position = Gtk.PositionType.TOP; + + // Gtk+ doesn't provide a widget allocation by calling get_allocation + // if it's not visible, the bubble positioning occurs when bubble + // is not visible yet + let bubbleSize = bubble.get_preferred_size()[1]; + + // Set bubble position left/right if it's close to a vertical map edge + if (pos.x + pos.width / 2 + bubbleSize.width / 2 >= mapSize.width) + bubble.position = Gtk.PositionType.LEFT; + else if (pos.x + pos.width / 2 - bubbleSize.width / 2 <= 0) + bubble.position = Gtk.PositionType.RIGHT; + // Avoid bubble to cover header bar if the marker is close to the top map edge + else if (pos.y - bubbleSize.height <= 0) + bubble.position = Gtk.PositionType.BOTTOM; + } + + _hideBubbleOn(signal, duration) { + let sourceId = null; + let signalId = this._view.connect(signal, () => { + if (sourceId) + Mainloop.source_remove(sourceId); + else + this.hideBubble(); + + let callback = (function() { + sourceId = null; + this.showBubble(); + }).bind(this); + + if (duration) + sourceId = Mainloop.timeout_add(duration, callback); + else + sourceId = Mainloop.idle_add(callback); + }); + + Utils.once(this.bubble, 'closed', () => { + // We still listening for the signal to refresh + // the existent timeout + if (!sourceId) + this._view.disconnect(signalId); + }); + + Utils.once(this, 'notify::selected', () => { + // When the marker gets deselected, we need to ensure + // that the timeout callback is not called anymore. + if (sourceId) { + Mainloop.source_remove(sourceId); + this._view.disconnect(signalId); + } + }); + } + + _initBubbleSignals() { + this._hideBubbleOn('notify::zoom-level', 500); + this._hideBubbleOn('notify::size'); + + // This is done to get just one marker selected at any time regardless + // of the layer to which it belongs so we can get only one visible bubble + // at any time. We do this for markers in different layers because for + // markers in the same layer, ChamplainMarkerLayer single selection mode + // does the job. + this._mapView.onSetMarkerSelected(this); + + let markerSelectedSignalId = this._mapView.connect('marker-selected', (mapView, selectedMarker) => { + if (this.get_parent() !== selectedMarker.get_parent()) + this.selected = false; + }); + + let viewTouchEventSignalId = + this._view.connect('touch-event', () => this.set_selected(false)); + + let goingToSignalId = this._mapView.connect('going-to', () => { + this.set_selected(false); + }); + let buttonPressSignalId = + this._view.connect('button-press-event', () => { + this.set_selected(false); + }); + // Destroy the bubble when the marker is destroyed o removed from a layer + let parentSetSignalId = this.connect('parent-set', () => { + this.set_selected(false); + }); + let dragMotionSignalId = this.connect('drag-motion', () => { + this.set_selected(false); + }); + let markerHiddenSignalId = this.connect('notify::visible', () => { + if (!this.visible) { + this.set_selected(false); + } + }); + + Utils.once(this.bubble, 'closed', () => { + this._mapView.disconnect(markerSelectedSignalId); + this._mapView.disconnect(goingToSignalId); + this._view.disconnect(buttonPressSignalId); + this._view.disconnect(viewTouchEventSignalId); + this.disconnect(parentSetSignalId); + this.disconnect(dragMotionSignalId); + + this._bubble.destroy(); + delete this._bubble; + }); + } + + _isInsideView() { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + return x + tx + this.width > 0 && x + tx < mapSize.width && + y + ty + this.height > 0 && y + ty < mapSize.height; + } + + _onViewUpdated() { + if (this.bubble) { + if (this._isInsideView()) + this._positionBubble(this.bubble); + else + this.bubble.hide(); + } + } + + showBubble() { + if (this.bubble && !this.bubble.visible && this._isInsideView()) { + this._initBubbleSignals(); + this.bubble.show(); + this._positionBubble(this.bubble); + } + } + + hideBubble() { + if (this._bubble) + this._bubble.hide(); + } + + get walker() { + if (this._walker === undefined) + this._walker = new MapWalker.MapWalker(this.place, this._mapView); + + return this._walker; + } + + zoomToFit() { + this.walker.zoomToFit(); + } + + goTo(animate) { + Utils.once(this.walker, 'gone-to', () => this.emit('gone-to')); + this.walker.goTo(animate); + } + + goToAndSelect(animate) { + Utils.once(this, 'gone-to', () => this.selected = true); + + this.goTo(animate); + } + + _onMarkerSelected() { + if (this.selected) + this.showBubble(); + else + this.hideBubble(); + } +}); diff --git a/src/mapSource.js b/src/mapSource.js new file mode 100644 index 00000000..49358a94 --- /dev/null +++ b/src/mapSource.js @@ -0,0 +1,137 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const System = imports.system; + +const Service = imports.service; +const Utils = imports.utils; + +let _attributionImage = null; + +const _FILE_CACHE_SIZE_LIMIT = (10 * 1024 * 1024); /* 10Mb */ +const _MEMORY_CACHE_SIZE_LIMIT = 100; /* number of tiles */ + +const _LOGO_PADDING_X = 10; +const _LOGO_PADDING_Y = 25; + +var AttributionLogo = GObject.registerClass({}, +class AttributionLogo extends GtkClutter.Actor { + + _init(view) { + super._init(); + + if (_attributionImage) + this.contents = _attributionImage; + else + return; + + view.connect('notify::width', () => this._updatePosition(view)); + view.connect('notify::height', () => this._updatePosition(view)); + + this._updatePosition(view); + } + + _updatePosition(view) { + let width = _attributionImage.pixbuf.width; + let height = _attributionImage.pixbuf.height; + + this.set_position(view.width - width - _LOGO_PADDING_X, + view.height - height - _LOGO_PADDING_Y); + } +}); + +function _updateAttributionImage(source) { + if (!source.attribution_logo || source.attribution_logo === "") + return; + + if (!_attributionImage) + _attributionImage = new Gtk.Image(); + + let data = GLib.base64_decode(source.attribution_logo); + let stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(data)); + _attributionImage.pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); +} + +function _createTileSource(source) { + let tileSource = new Champlain.NetworkTileSource({ + id: source.id, + name: source.name, + license: source.license, + license_uri: source.license_uri, + min_zoom_level: source.min_zoom_level, + max_zoom_level: source.max_zoom_level, + tile_size: source.tile_size, + renderer: new Champlain.ImageRenderer(), + uri_format: source.uri_format + }); + tileSource.max_conns = source.max_connections; + return tileSource; +} + +function _createCachedSource(source) { + let tileSource = _createTileSource(source); + _updateAttributionImage(source); + + let fileCache = new Champlain.FileCache({ + size_limit: _FILE_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let memoryCache = new Champlain.MemoryCache({ + size_limit: _MEMORY_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let errorSource = new Champlain.NullTileSource({ + renderer: new Champlain.ImageRenderer() + }); + + /* + * When the a source in the chain fails to load a given tile + * the next one in the chain tries instead. Until we get to the error + * source. + */ + let sourceChain = new Champlain.MapSourceChain(); + sourceChain.push(errorSource); + sourceChain.push(tileSource); + sourceChain.push(fileCache); + sourceChain.push(memoryCache); + + return sourceChain; +} + +function createAerialSource() { + return _createCachedSource(Service.getService().tiles.aerial); +} + +function createStreetSource() { + return _createCachedSource(Service.getService().tiles.street); +} + +function createPrintSource() { + return _createCachedSource(Service.getService().tiles.print); +} diff --git a/src/mapView.js b/src/mapView.js new file mode 100644 index 00000000..feedf2c2 --- /dev/null +++ b/src/mapView.js @@ -0,0 +1,765 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkChamplain = imports.gi.GtkChamplain; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const Color = imports.color; +const Geoclue = imports.geoclue; +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const KmlShapeLayer = imports.kmlShapeLayer; +const GpxShapeLayer = imports.gpxShapeLayer; +const Location = imports.location; +const Maps = imports.gi.GnomeMaps; +const MapSource = imports.mapSource; +const MapWalker = imports.mapWalker; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const RouteQuery = imports.routeQuery; +const ShapeLayer = imports.shapeLayer; +const StoredRoute = imports.storedRoute; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; +const TurnPointMarker = imports.turnPointMarker; +const UserLocationMarker = imports.userLocationMarker; +const Utils = imports.utils; + +var MapType = { + LOCAL: 'MapsLocalSource', + STREET: 'MapsStreetSource', + AERIAL: 'MapsAerialSource' +}; +const _LOCATION_STORE_TIMEOUT = 500; +const MapMinZoom = 2; + +/* + * Due to the mathematics of spherical mericator projection, + * the map must be truncated at a latitude less than 90 degrees. + */ +var MAX_LATITUDE = 85.05112; +var MIN_LATITUDE = -85.05112; +var MAX_LONGITUDE = 180; +var MIN_LONGITUDE = -180; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline on the path */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +// color used for turn-by-turn-based routes (non-transit) +const TURN_BY_TURN_ROUTE_COLOR = '0000FF'; + +// line width for route lines +const ROUTE_LINE_WIDTH = 5; + +/* length of filled parts of dashed lines used for walking legs of transit + * itineraries + */ +const DASHED_ROUTE_LINE_FILLED_LENGTH = 5; + +// length of gaps of dashed lines used for walking legs of transit itineraries +const DASHED_ROUTE_LINE_GAP_LENGTH = 5; + +var MapView = GObject.registerClass({ + Properties: { + // this property is true when the routing sidebar is active + 'routingOpen': GObject.ParamSpec.boolean('routingOpen', + 'Routing open', + 'Routing sidebar open', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false), + /* this property is true when a route is being shown on the map */ + 'routeShowing': GObject.ParamSpec.boolean('routeShowing', + 'Route showing', + 'Showing a route on the map', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false) + }, + Signals: { + 'user-location-changed': {}, + 'going-to': {}, + 'going-to-user-location': {}, + 'gone-to-user-location': {}, + 'view-moved': {}, + 'marker-selected': { param_types: [Champlain.Marker] } + }, +}, class MapView extends GtkChamplain.Embed { + + get routingOpen() { + return this._routingOpen || this._instructionMarkerLayer.visible; + } + + set routingOpen(value) { + let isValid = Application.routeQuery.isValid(); + + this._routingOpen = value && isValid; + this._routeLayers.forEach((routeLayer) => routeLayer.visible = value && isValid); + this._instructionMarkerLayer.visible = value && isValid; + if (!value) + this.routeShowing = false; + this.notify('routingOpen'); + } + + get routeShowing() { + return this._routeShowing; + } + + set routeShowing(value) { + this._routeShowing = value; + this.notify('routeShowing'); + } + + _init(params) { + super._init(); + + let mapType = params.mapType || this._getStoredMapType(); + delete params.mapType; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._storeId = 0; + this.view = this._initView(); + this._initLayers(); + + this.setMapType(mapType); + + if (Application.normalStartup) + this._goToStoredLocation(); + + this.shapeLayerStore = new Gio.ListStore(GObject.TYPE_OBJECT); + + Application.geoclue.connect('location-changed', + this._updateUserLocation.bind(this)); + Application.geoclue.connect('notify::state', + this._updateUserLocation.bind(this)); + this._connectRouteSignals(); + } + + _initScale(view) { + this._scale = new Champlain.Scale({ visible: true }); + this._scale.connect_view(view); + + if (Utils.getMeasurementSystem() === Utils.METRIC_SYSTEM) + this._scale.unit = Champlain.Unit.KM; + else + this._scale.unit = Champlain.Unit.MILES; + + this._scale.set_x_expand(true); + this._scale.set_y_expand(true); + this._scale.set_x_align(Clutter.ActorAlign.START); + this._scale.set_y_align(Clutter.ActorAlign.END); + view.add_child(this._scale); + } + + _initView() { + let view = this.get_view(); + + view.min_zoom_level = MapMinZoom; + view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + view.reactive = true; + view.kinetic_mode = true; + view.horizontal_wrap = true; + + view.connect('notify::latitude', this._onViewMoved.bind(this)); + // switching map type will set view min-zoom-level from map source + view.connect('notify::min-zoom-level', () => { + if (view.min_zoom_level < MapMinZoom) { + view.min_zoom_level = MapMinZoom; + } + }); + + this._initScale(view); + return view; + } + + /* create and store a route layer, pass true to get a dashed line */ + _createRouteLayer(dashed, lineColor, width) { + let red = Color.parseColor(lineColor, 0); + let green = Color.parseColor(lineColor, 1); + let blue = Color.parseColor(lineColor, 2); + // Clutter uses a 0-255 range for color components + let strokeColor = new Clutter.Color({ red: red * 255, + blue: blue * 255, + green: green * 255, + alpha: 255 }); + let routeLayer = new Champlain.PathLayer({ stroke_width: width, + stroke_color: strokeColor }); + if (dashed) + routeLayer.set_dash([DASHED_ROUTE_LINE_FILLED_LENGTH, + DASHED_ROUTE_LINE_GAP_LENGTH]); + + this._routeLayers.push(routeLayer); + this.view.add_layer(routeLayer); + + return routeLayer; + } + + _clearRouteLayers() { + this._routeLayers.forEach((routeLayer) => { + routeLayer.remove_all(); + routeLayer.visible = false; + this.view.remove_layer(routeLayer); + }); + + this._routeLayers = []; + } + + _initLayers() { + let mode = Champlain.SelectionMode.SINGLE; + + this._userLocationLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._userLocationLayer); + + this._placeLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._placeLayer); + + this._instructionMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._instructionMarkerLayer); + + this._annotationMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._annotationMarkerLayer); + + ShapeLayer.SUPPORTED_TYPES.push(GeoJSONShapeLayer.GeoJSONShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(KmlShapeLayer.KmlShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(GpxShapeLayer.GpxShapeLayer); + + this._routeLayers = []; + } + + _ensureInstructionLayerAboveRouteLayers() { + this.view.remove_layer(this._instructionMarkerLayer); + this.view.add_layer(this._instructionMarkerLayer); + } + + _connectRouteSignals() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + let query = Application.routeQuery; + + route.connect('update', () => { + this.showRoute(route); + this.routeShowing = true; + }); + route.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('update', () => this._showTransitPlan(transitPlan)); + transitPlan.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('itinerary-selected', (obj, itinerary) => { + this._showTransitItinerary(itinerary); + this.routeShowing = true; + }); + transitPlan.connect('itinerary-deselected', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + + query.connect('notify', () => this.routingOpen = query.isValid()); + } + + _getStoredMapType() { + let mapType = Application.settings.get('map-type'); + + // make sure it's a valid map type + for (let type in MapType) { + if (mapType === MapType[type]) { + return mapType; + } + } + + return MapType.STREET; + } + + getMapType() { + return this._mapType; + } + + setMapType(mapType) { + if (this._mapType && this._mapType === mapType) + return; + + let overlay_sources = this.view.get_overlay_sources(); + + this._mapType = mapType; + + if (mapType !== MapType.LOCAL) { + if (mapType === MapType.AERIAL) + this.view.map_source = MapSource.createAerialSource(); + else + this.view.map_source = MapSource.createStreetSource(); + + if (!this._attribution) { + this._attribution = new MapSource.AttributionLogo(this.view); + this.view.add_child(this._attribution); + } + + Application.settings.set('map-type', mapType); + } else { + let renderer = new Champlain.ImageRenderer(); + let source = new Maps.FileTileSource({ + path: Utils.getBufferText(Application.application.local_tile_path), + renderer: renderer, + tile_size: 512 + }); + try { + source.prepare(); + + this.view.map_source = source; + this.view.world = source.world; + let [lat, lon] = this.view.world.get_center(); + this.view.center_on(lat, lon); + } catch(e) { + this.setMapType(MapType.STREET); + Application.application.local_tile_path = false; + Application.application.notify('connected'); + Utils.showDialog(e.message, Gtk.MessageType.ERROR, this._mainWindow); + } + } + + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + + toggleScale() { + this._scale.visible = !this._scale.visible; + } + + openShapeLayers(files) { + let bbox = new Champlain.BoundingBox(); + let ret = true; + files.forEach((file) => { + try { + let i = this._findShapeLayerIndex(file); + let layer = (i > -1) ? this.shapeLayerStore.get_item(i) : null; + if (!layer) { + layer = ShapeLayer.newFromFile(file, this); + if (!layer) + throw new Error(_("File type is not supported")); + layer.load(); + this.shapeLayerStore.append(layer); + } + bbox.compose(layer.bbox); + } catch (e) { + Utils.debug(e); + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + ret = false; + } + }); + + this.gotoBBox(bbox); + return ret; + } + + removeShapeLayer(shapeLayer) { + shapeLayer.unload(); + let i = this._findShapeLayerIndex(shapeLayer.file); + this.shapeLayerStore.remove(i); + } + + _findShapeLayerIndex(file) { + for (let i = 0; i < this.shapeLayerStore.get_n_items(); i++) + if (this.shapeLayerStore.get_item(i).file.equal(file)) + return i; + return -1; + } + + goToGeoURI(uri) { + try { + let location = new Location.Location({ heading: -1 }); + location.set_from_uri(uri); + + let place = new Place.Place({ location: location, + name: location.description, + store: false }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } catch(e) { + let msg = _("Failed to open GeoURI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + Utils.debug("failed to open GeoURI: %s".format(e.message)); + } + } + + goToHttpURL(url) { + Place.parseHttpURL(url, (place, error) => { + if (place) { + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } else { + Utils.showDialog(error, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + gotoUserLocation(animate) { + if (!this._userLocation) + return; + + this.emit('going-to-user-location'); + Utils.once(this._userLocation, "gone-to", + () => this.emit('gone-to-user-location')); + this._userLocation.goTo(animate); + } + + gotoAntipode() { + let lat = -this.view.latitude; + let lon = this.view.longitude > 0 ? + this.view.longitude - 180 : this.view.longitude + 180; + let place = + new Place.Place({ location: new Location.Location({ latitude: lat, + longitude: lon }), + initialZoom: this.view.zoom_level }); + + new MapWalker.MapWalker(place, this).goTo(true); + } + + userLocationVisible() { + let box = this.view.get_bounding_box(); + + return box.covers(this._userLocation.latitude, this._userLocation.longitude); + } + + _updateUserLocation() { + if (!Application.geoclue.place) + return; + + if (Application.geoclue.state !== Geoclue.State.ON) { + if (this._userLocation) + this._userLocation.visible = false; + return; + } + + if (!this._userLocation) { + let place = Application.geoclue.place; + this._userLocation = new UserLocationMarker.UserLocationMarker({ place: place, + mapView: this }); + this._userLocationLayer.remove_all(); + this._userLocation.addToLayer(this._userLocationLayer); + } + + this._userLocation.visible = true; + + this.emit('user-location-changed'); + } + + _storeLocation() { + Application.settings.set('zoom-level', this.view.zoom_level); + let location = [this.view.latitude, this.view.longitude]; + Application.settings.set('last-viewed-location', location); + } + + _goToStoredLocation() { + let location = Application.settings.get('last-viewed-location'); + + if (location.length === 2) { + let [lat, lon] = location; + let zoom = Application.settings.get('zoom-level'); + + if (zoom >= this.view.min_zoom_level && + zoom <= this.view.max_zoom_level) + this.view.zoom_level = Application.settings.get('zoom-level'); + else + Utils.debug('Invalid initial zoom level: ' + zoom); + + if (lat >= MIN_LATITUDE && lat <= MAX_LATITUDE && + lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE) + this.view.center_on(location[0], location[1]); + else + Utils.debug('Invalid initial coordinates: ' + lat + ', ' + lon); + } else { + /* bounding box. for backwards compatibility, not used anymore */ + let bbox = new Champlain.BoundingBox({ top: location[0], + bottom: location[1], + left: location[2], + right: location[3] }); + this.view.connect("notify::realized", () => { + if (this.view.realized) + this.gotoBBox(bbox, true); + }); + } + } + + gotoBBox(bbox, linear) { + if (!bbox.is_valid()) { + Utils.debug('Bounding box is invalid'); + return; + } + + let [lat, lon] = bbox.get_center(); + let place = new Place.Place({ + location: new Location.Location({ latitude : lat, + longitude : lon }), + bounding_box: new Geocode.BoundingBox({ top : bbox.top, + bottom : bbox.bottom, + left : bbox.left, + right : bbox.right }) + }); + new MapWalker.MapWalker(place, this).goTo(true, linear); + } + + showTurnPoint(turnPoint) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = null; + if (turnPoint.isStop()) + return; + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showTransitStop(transitStop, transitLeg) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ transitStop: transitStop, + transitLeg: transitLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showContact(contact) { + let places = contact.get_places(); + if (places.length === 0) + return; + + this._placeLayer.remove_all(); + places.forEach((p) => { + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + }); + + if (places.length > 1) + this.gotoBBox(contact.bounding_box); + else + new MapWalker.MapWalker(places[0], this).goTo(true); + } + + _showStoredRoute(stored) { + let query = Application.routeQuery; + let route = Application.routingDelegator.graphHopper.route; + + Application.routingDelegator.graphHopper.storedRoute = stored.route; + + let resetId = route.connect('reset', function() { + route.disconnect(resetId); + query.freeze_notify(); + + let storedLast = stored.places.length - 1; + query.points[0].place = stored.places[0]; + query.points[1].place = stored.places[storedLast]; + query.transportation = stored.transportation; + + for (let i = 1; i < storedLast; i++) { + let point = query.addPoint(i); + point.place = stored.places[i]; + } + + query.thaw_notify(); + }); + route.reset(); + } + + showPlace(place, animation) { + this._placeLayer.remove_all(); + + if (place instanceof StoredRoute.StoredRoute) { + this._showStoredRoute(place); + return; + } + + this.routingOpen = false; + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(placeMarker); + placeMarker.goToAndSelect(animation); + } + + showRoute(route) { + let routeLayer; + + this._clearRouteLayers(); + this._placeLayer.remove_all(); + + routeLayer = this._createRouteLayer(false, TURN_BY_TURN_ROUTE_COLOR, + ROUTE_LINE_WIDTH); + route.path.forEach((polyline) => routeLayer.add_node(polyline)); + this.routingOpen = true; + + this._ensureInstructionLayerAboveRouteLayers(); + + this._showDestinationTurnpoints(); + this.gotoBBox(route.bbox); + } + + _showDestinationTurnpoints() { + let route = Application.routingDelegator.graphHopper.route; + let query = Application.routeQuery; + let pointIndex = 0; + + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + route.turnPoints.forEach((turnPoint) => { + if (turnPoint.isStop()) { + let queryPoint = query.filledPoints[pointIndex]; + let destinationMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + queryPoint: queryPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(destinationMarker); + pointIndex++; + } + }, this); + } + + _showTransitItinerary(itinerary) { + this.gotoBBox(itinerary.bbox); + this._clearRouteLayers(); + this._placeLayer.remove_all(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + + itinerary.legs.forEach((leg, index) => { + let dashed = !leg.transit; + let color = leg.color; + let outlineColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > + OUTLINE_LUMINANCE_THREASHHOLD; + let routeLayer; + let outlineRouteLayer; + + /* draw an outline by drawing a background path layer if needed + * TODO: maybe we should add support for outlined path layers in + * libchamplain */ + if (hasOutline) + outlineRouteLayer = this._createRouteLayer(dashed, outlineColor, + ROUTE_LINE_WIDTH + 2); + routeLayer = this._createRouteLayer(dashed, color, ROUTE_LINE_WIDTH); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way */ + if (index > 0 && !leg.transit) { + let previousLeg = itinerary.legs[index - 1]; + let lastPoint = previousLeg.polyline.last(); + + routeLayer.add_node(lastPoint); + } + + if (hasOutline) { + leg.polyline.forEach((function (polyline) { + outlineRouteLayer.add_node(polyline); + })); + } + leg.polyline.forEach((function (polyline) { + routeLayer.add_node(polyline); + })); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one */ + if (index < itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + }); + + this._ensureInstructionLayerAboveRouteLayers(); + + itinerary.legs.forEach((leg, index) => { + let previousLeg = index === 0 ? null : itinerary.legs[index - 1]; + + /* add start marker */ + let start; + if (!leg.transit) { + start = new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg, + mapView: this }); + } else { + start = new TransitBoardMarker.TransitBoardMarker({ leg: leg, + mapView: this }); + } + + this._instructionMarkerLayer.add_marker(start); + }); + + /* add arrival marker */ + let lastLeg = itinerary.legs.last(); + let arrival = new TransitArrivalMarker.TransitArrivalMarker({ leg: lastLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(arrival); + + this.routingOpen = true; + } + + _showTransitPlan(plan) { + this.gotoBBox(plan.bbox); + } + + _onViewMoved() { + this.emit('view-moved'); + if (this._storeId !== 0) + return; + + this._storeId = Mainloop.timeout_add(_LOCATION_STORE_TIMEOUT, () => { + this._storeId = 0; + this._storeLocation(); + }); + } + + onSetMarkerSelected(selectedMarker) { + this.emit('marker-selected', selectedMarker); + } +}); diff --git a/src/mapWalker.js b/src/mapWalker.js new file mode 100644 index 00000000..aad724ba --- /dev/null +++ b/src/mapWalker.js @@ -0,0 +1,197 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Utils = imports.utils; + +const _MAX_DISTANCE = 19850; // half of Earth's circumference (km) +const _MIN_ANIMATION_DURATION = 2000; // msec +const _MAX_ANIMATION_DURATION = 5000; // msec + +var MapWalker = GObject.registerClass({ + Signals: { + 'gone-to': { } + } +}, class MapWalker extends GObject.Object { + + _init(place, mapView) { + this.place = place; + this._mapView = mapView; + this._view = mapView.view; + this._boundingBox = this._createBoundingBox(this.place); + super._init(); + } + + _createBoundingBox(place) { + if (place.bounding_box !== null) { + return new Champlain.BoundingBox({ top: place.bounding_box.top, + bottom: place.bounding_box.bottom, + left: place.bounding_box.left, + right: place.bounding_box.right }); + } else + return null; + } + + // Zoom to the maximal zoom-level that fits the place type + zoomToFit() { + if (this._boundingBox !== null && this._boundingBox.is_valid()) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.ensure_visible(this._boundingBox, false); + } else { + let zoom; + + if (this.place.initialZoom) { + zoom = this.place.initialZoom; + } else { + switch (this.place.place_type) { + case Geocode.PlaceType.STREET: + zoom = 16; + break; + case Geocode.PlaceType.TOWN: + zoom = 11; + break; + case Geocode.PlaceType.COUNTRY: + zoom = 6; + break; + default: + zoom = this._view.max_zoom_level; + break; + } + } + this._view.zoom_level = zoom; + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + } + } + + goTo(animate, linear) { + Utils.debug('Going to ' + [this.place.name, + this.place.location.latitude, + this.place.location.longitude].join(' ')); + this._mapView.emit('going-to'); + + if (!animate) { + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + this.emit('gone-to'); + return; + } + + let fromLocation = new Location.Location({ latitude: this._view.get_center_latitude(), + longitude: this._view.get_center_longitude() }); + this._updateGoToDuration(fromLocation); + + if (linear) { + this._view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + Utils.once(this._view, 'animation-completed', + this.zoomToFit.bind(this)); + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + } else { + /* Lets first ensure that both current and destination location are visible + * before we start the animated journey towards destination itself. We do this + * to create the zoom-out-then-zoom-in effect that many map implementations + * do. This not only makes the go-to animation look a lot better visually but + * also give user a good idea of where the destination is compared to current + * location. + */ + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_CUBIC; + this._ensureVisible(fromLocation); + + Utils.once(this._view, 'animation-completed', () => { + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_OUT_CUBIC; + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + + Utils.once(this._view, 'animation-completed::go-to', () => { + this.zoomToFit(); + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + this.emit('gone-to'); + }); + }); + } + } + + _ensureVisible(fromLocation) { + let visibleBox = null; + + if (this._boundingBox !== null && this._boundingBox.is_valid()) { + visibleBox = this._boundingBox.copy(); + + visibleBox.extend(fromLocation.latitude, fromLocation.longitude); + } else { + visibleBox = new Champlain.BoundingBox({ left: 180, + right: -180, + bottom: 90, + top: -90 }); + + [fromLocation, this.place.location].forEach((location) => { + visibleBox.left = Math.min(visibleBox.left, location.longitude); + visibleBox.right = Math.max(visibleBox.right, location.longitude); + visibleBox.bottom = Math.min(visibleBox.bottom, location.latitude); + visibleBox.top = Math.max(visibleBox.top, location.latitude); + }); + } + + this._view.ensure_visible(visibleBox, true); + } + + _boxCovers(coverBox) { + if (this._boundingBox === null) + return false; + + if (coverBox.left > this._boundingBox.left) + return false; + + if (coverBox.right < this._boundingBox.right) + return false; + + if (coverBox.top < this._boundingBox.top) + return false; + + if (coverBox.bottom > this._boundingBox.bottom) + return false; + + return true; + } + + _updateGoToDuration(fromLocation) { + let toLocation = this.place.location; + + let distance = fromLocation.get_distance_from(toLocation); + let duration = (distance / _MAX_DISTANCE) * _MAX_ANIMATION_DURATION; + + // Clamp duration + duration = Math.max(_MIN_ANIMATION_DURATION, + Math.min(duration, _MAX_ANIMATION_DURATION)); + + // We divide by two because Champlain treats both go_to and + // ensure_visible as 'goto' journeys with its own duration. + this._view.goto_animation_duration = duration / 2; + } +}); diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..5cc7e5e3 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,22 @@ +script_conf = configuration_data() +script_conf.set('GJS', find_program('gjs').path()) +script_conf.set('PACKAGE_VERSION', version) +script_conf.set('libdir', libdir) +script_conf.set('prefix', prefix) + +configure_file( + input: app_id + '.in', + output: app_id, + configuration: script_conf, + install: true, + install_dir: pkgdatadir +) + +gnome.compile_resources( + app_id + '.src', + app_id + '.src.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + source_dir: 'geojson-vt' +) diff --git a/src/org.gnome.Maps.in b/src/org.gnome.Maps.in new file mode 100755 index 00000000..1cd74738 --- /dev/null +++ b/src/org.gnome.Maps.in @@ -0,0 +1,5 @@ +#!@GJS@ +imports.package.start({ name: "gnome-maps", + version: "@PACKAGE_VERSION@", + prefix: "@prefix@", + libdir: "@libdir@" }); diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml new file mode 100644 index 00000000..961ac33f --- /dev/null +++ b/src/org.gnome.Maps.src.gresource.xml @@ -0,0 +1,120 @@ + + + + accountListBox.js + address.js + application.js + checkIn.js + checkInDialog.js + color.js + contactPlace.js + contextMenu.js + epaf.js + exportViewDialog.js + facebookBackend.js + favoritesPopover.js + foursquareBackend.js + foursquareGoaAuthorizer.js + geoclue.js + geocode.js + geoJSONShapeLayer.js + geoJSONSource.js + geoJSONStyle.js + gfx.js + gpxShapeLayer.js + graphHopper.js + graphHopperGeocode.js + graphHopperTransit.js + hvt.js + http.js + instructionRow.js + kmlShapeLayer.js + layersPopover.js + location.js + locationServiceDialog.js + longPrintLayout.js + main.js + mainWindow.js + mapBubble.js + mapMarker.js + mapSource.js + mapView.js + mapWalker.js + osmAccountDialog.js + osmConnection.js + osmEdit.js + osmEditDialog.js + osmTypeSearchEntry.js + osmTypeListRow.js + osmTypePopover.js + osmTypes.js + osmUtils.js + overpass.js + photonGeocode.js + photonParser.js + place.js + placeBubble.js + placeEntry.js + placeFormatter.js + placeListRow.js + placeMarker.js + placePopover.js + placeStore.js + printLayout.js + printOperation.js + route.js + routeEntry.js + routeQuery.js + routingDelegator.js + searchPopover.js + serviceBackend.js + settings.js + sendToDialog.js + service.js + shapeLayer.js + shortPrintLayout.js + sidebar.js + socialPlace.js + socialPlaceListBox.js + socialPlaceMatcher.js + storedRoute.js + time.js + togeojson/togeojson.js + transit.js + transitArrivalMarker.js + transitArrivalRow.js + transitBoardMarker.js + transitItineraryRow.js + transitLegRow.js + transitMoreRow.js + transitOptions.js + transitOptionsPanel.js + transitPlan.js + transitPrintLayout.js + transitRouter.js + transitRouteLabel.js + transitStopRow.js + transitTweaks.js + transitWalkMarker.js + translations.js + turnPointMarker.js + userLocationBubble.js + userLocationMarker.js + utils.js + wikipedia.js + xmldom/dom.js + xmldom/domparser.js + xmldom/sax.js + zoomInDialog.js + clip.js + convert.js + index.js + simplify.js + tile.js + transform.js + wrap.js + transitplugins/opendataCH.js + transitplugins/openTripPlanner.js + transitplugins/resrobot.js + + diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js new file mode 100644 index 00000000..56a6b983 --- /dev/null +++ b/src/osmAccountDialog.js @@ -0,0 +1,204 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const WebKit2 = imports.gi.WebKit2; + +const Application = imports.application; + +var Response = { + SIGNED_IN: 0 +}; + +var OSMAccountDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-account-dialog.ui', + InternalChildren: ['stack', + 'emailEntry', + 'passwordEntry', + 'signInButton', + 'signInSpinner', + 'signUpLinkButton', + 'resetPasswordLabel', + 'verifyView', + 'verificationEntry', + 'verifyButton', + 'verificationFailedLabel', + 'signedInUserLabel', + 'signOutButton'], +}, class OSMAccountDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + this._closeOnSignIn = params.closeOnSignIn; + delete params.closeOnSignIn; + + super._init(params); + + this._emailEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('activate', + this._onPasswordActivated.bind(this)); + this._signInButton.connect('clicked', + this._onSignInButtonClicked.bind(this)); + this._verifyButton.connect('clicked', + this._onVerifyButtonClicked.bind(this)); + this._verificationEntry.connect('changed', + this._onVerificationEntryChanged.bind(this)); + this._verificationEntry.connect('activate', + this._onVerificationEntryActivated.bind(this)); + this._signOutButton.connect('clicked', + this._onSignOutButtonClicked.bind(this)); + + /* if the user is logged in, show the logged-in view */ + if (Application.osmEdit.isSignedIn) { + this._signedInUserLabel.label = Application.osmEdit.username; + this._stack.visible_child_name = 'logged-in'; + } + } + + _onCredentialsChanged() { + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + // make sign in button sensitive if credential have been entered + this._signInButton.sensitive = + email && email.length > 0 && password && password.length > 0; + } + + _onSignInButtonClicked() { + this._performSignIn(); + } + + _onPasswordActivated() { + /* if username and password was entered, proceed with sign-in */ + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + if (email && email.length > 0 && password && password.length > 0) + this._performSignIn(); + } + + _performSignIn() { + /* turn on signing in spinner and desensisize credential entries */ + this._signInSpinner.visible = true; + this._signInButton.sensitive = false; + this._emailEntry.sensitive = false; + this._passwordEntry.sensitive = false; + this._signUpLinkButton.visible = false; + + Application.osmEdit.performOAuthSignIn(this._emailEntry.text, + this._passwordEntry.text, + this._onOAuthSignInPerformed.bind(this)); + } + + _onOAuthSignInPerformed(success, verificationPage) { + if (success) { + /* switch to the verification view and show the verification + page */ + this._verifyView.load_html(verificationPage, + 'https://www.openstreetmap.org/'); + this._stack.visible_child_name = 'verify'; + } else { + /* clear password entry */ + this._passwordEntry.text = ''; + /* show the password reset link */ + this._resetPasswordLabel.visible = true; + } + + this._signInSpinner.visible = false; + /* re-sensisize credential entries */ + this._emailEntry.sensitive = true; + this._passwordEntry.sensitive = true; + } + + _onVerifyButtonClicked() { + this._performVerification(); + } + + _performVerification() { + /* allow copying the leading space between the "The verification is" + label and the code */ + let verificationCode = this._verificationEntry.text.trim(); + + /* Since the text shown on OSM's OAuth authorization verification form + is a bit unclear with a trailing period after the verification code, + let's strip that off if the user copied that over. */ + if (verificationCode.charAt(verificationCode.length - 1) === '.') { + verificationCode = verificationCode.slice(0, -1); + } + + Application.osmEdit.requestOAuthAccessToken(verificationCode, + this._onOAuthAccessTokenRequested.bind(this)); + } + + _onVerificationEntryChanged() { + this._verifyButton.sensitive = + this._verificationEntry.text && + this._verificationEntry.text.length > 0; + } + + _onVerificationEntryActivated() { + /* proceed with verfication if a code has been entered */ + let verificationCode = this._verificationEntry.text; + + if (verificationCode && verificationCode.length > 0) + this._performVerification(); + } + + _onOAuthAccessTokenRequested(success) { + if (success) { + /* update the username label */ + this._signedInUserLabel.label = Application.osmEdit.username; + + if (this._closeOnSignIn) { + this.response(Response.SIGNED_IN); + } else { + /* switch to the logged in view and reset the state in case + the user signs out and start over again */ + this._resetPasswordLabel.visible = false; + this._verificationFailedLabel = false; + this._signUpLinkButton.visible = true; + this._stack.visible_child_name = 'logged-in'; + } + } else { + /* switch back to the sign-in view, and show a label indicating + that verification failed */ + this._resetPasswordLabel.visible = false; + this._signUpLinkButton.visible = false; + this._verificationFailedLabel.visible = true; + this._signInButton.sensitive = true; + this._stack.visible_child_name = 'sign-in'; + } + /* reset verification code entry */ + this._verificationEntry.text = ''; + } + + _onSignOutButtonClicked() { + Application.osmEdit.signOut(); + this._stack.visible_child_name = 'sign-in'; + } +}); diff --git a/src/osmConnection.js b/src/osmConnection.js new file mode 100644 index 00000000..f7842510 --- /dev/null +++ b/src/osmConnection.js @@ -0,0 +1,452 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Maps = imports.gi.GnomeMaps; +const Rest = imports.gi.Rest; +const Secret = imports.gi.Secret; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://api.openstreetmap.org/api'; +const API_VERSION = '0.6'; + +/* OAuth constants */ +const CONSUMER_KEY = '2lbpDoED0ZspGssTBAJ8zOCtrtmUoX4KnmZUIWIK'; +const CONSUMER_SECRET = 'AO9BhDl9sJ33DjaZgQmYcNIuM3ZSml4xtugai6gE'; +const OAUTH_ENDPOINT_URL = 'https://www.openstreetmap.org/oauth'; +const LOGIN_URL = 'https://www.openstreetmap.org/login'; + +const SECRET_SCHEMA = new Secret.Schema("org.gnome.Maps", + Secret.SchemaFlags.NONE, + { + } +); + +var OSMConnection = class OSMConnection { + + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + + /* OAuth proxy used for making OSM uploads */ + this._callProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + BASE_URL + '/' + API_VERSION, + false); + Maps.osm_init(); + } + + getOSMObject(type, id, callback, cancellable) { + let url = this._getQueryUrl(type, id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + cancellable.connect(() => { + this._session.cancel_message(request, Soup.STATUS_CANCELLED); + }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + callback(false, message.status_code, null, type, null); + return; + } + + try { + let object = Maps.osm_parse (message.response_body.data, + message.response_body.length); + callback(true, message.status_code, object, type, null); + } catch (e) { + Utils.debug(e); + callback(false, message.status_code, null, type, e); + } + }); + } + + _getQueryUrl(type, id) { + return BASE_URL + '/' + API_VERSION + '/' + type + '/' + id; + } + + openChangeset(comment, callback) { + /* we assume that this would only be called if there's already been an + OAuth access token enrolled, so, if the currently instanciated + proxy instance doesn't have a token set, we could safely count on + it being present in the keyring */ + if (this._callProxy.get_token() === null) { + Secret.password_lookup(SECRET_SCHEMA, {}, null, (s, res) => { + this._onPasswordLookedUp(res, + comment, + callback); + }); + } else { + this._doOpenChangeset(comment, callback); + } + } + + _onPasswordLookedUp(result, comment, callback) { + let password = Secret.password_lookup_finish(result); + + if (password) { + let token = password.split(':')[0]; + let secret = password.split(':')[1]; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + this._doOpenChangeset(comment, callback); + } else { + callback(false, null, null); + } + } + + _doOpenChangeset(comment, callback) { + let changeset = + Maps.OSMChangeset.new(comment, 'gnome-maps ' + pkg.version); + let xml = changeset.serialize(); + + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + call.set_method('PUT'); + call.set_function('/changeset/create'); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetOpened(call, callback); }); + } + + _onChangesetOpened(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + let changesetId = parseInt(call.get_payload()); + callback(true, call.get_status_code(), changesetId); + } + + uploadObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('PUT'); + call.set_function(this._getCreateOrUpdateFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectUploaded(call, callback); }); + } + + _onObjectUploaded(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + deleteObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('DELETE'); + call.set_function(this._getDeleteFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectDeleted(call, callback); }); + } + + _onObjectDeleted(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + closeChangeset(changesetId, callback) { + let call = this._callProxy.new_call(); + call.set_method('PUT'); + call.set_function(this._getCloseChangesetFunction(changesetId)); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetClosed(call, callback); }); + } + + _onChangesetClosed(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + _getCloseChangesetFunction(changesetId) { + return '/changeset/' + changesetId + '/close'; + } + + _getCreateOrUpdateFunction(object, type) { + if (object.id) + return type + '/' + object.id; + else + return type + '/create'; + } + + _getDeleteFunction(object, type) { + return type + '/' + id; + } + + requestOAuthToken(callback) { + /* OAuth proxy used for enrolling access tokens */ + this._oauthProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + OAUTH_ENDPOINT_URL, false); + this._oauthProxy.request_token_async('request_token', 'oob', (p, error, w, u) => { + this._onRequestOAuthToken(error, callback); + }, this._oauthProxy, callback); + } + + _onRequestOAuthToken(error, callback) { + if (error) { + Utils.debug(error); + callback(false); + return; + } + + this._oauthToken = this._oauthProxy.get_token(); + this._oauthTokenSecret = this._oauthProxy.get_token_secret(); + callback(true); + } + + authorizeOAuthToken(username, password, callback) { + /* get login session ID */ + let loginUrl = LOGIN_URL + '?cookie_test=true'; + let uri = new Soup.URI(loginUrl); + let msg = new Soup.Message({method: 'GET', uri: uri}); + + this._session.queue_message(msg, (obj, message) => { + this._onLoginFormReceived(message, username, password, callback); + }); + } + + _onLoginFormReceived(message, username, password, callback) { + if (message.status_code !== Soup.Status.OK) { + callback(false); + return; + } + + let osmSessionID = + this._extractOSMSessionID(message.response_headers); + let osmSessionToken = + this._extractToken(message.response_body.data); + + if (osmSessionID === null || osmSessionToken === null) { + callback(false, null); + return; + } + + this._login(username, password, osmSessionID, osmSessionToken, callback); + } + + _login(username, password, sessionId, token, callback) { + /* post login form */ + let msg = Soup.form_request_new_from_hash('POST', LOGIN_URL, + {username: username, + password: password, + referer: '/', + commit: 'Login', + authenticity_token: token}); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', '_osm_session=' + sessionId); + msg.flags |= Soup.MessageFlags.NO_REDIRECT; + + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.MOVED_TEMPORARILY) + this._fetchAuthorizeForm(username, sessionId, callback); + else + callback(false, null); + }); + + } + + _fetchAuthorizeForm(username, sessionId, callback) { + let auth = '/authorize?oauth_token='; + let authorizeUrl = OAUTH_ENDPOINT_URL + auth + this._oauthToken; + let uri = new Soup.URI(authorizeUrl); + let msg = new Soup.Message({uri: uri, method: 'GET'}); + + msg.request_headers.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.OK) { + let token = this._extractToken(message.response_body.data); + this._postAuthorizeForm(username, sessionId, token, callback); + } else { + callback(false, null); + } + }); + } + + _postAuthorizeForm(username, sessionId, token, callback) { + let authorizeUrl = OAUTH_ENDPOINT_URL + '/authorize'; + let msg = Soup.form_request_new_from_hash('POST', authorizeUrl, { + oauth_token: this._oauthToken, + oauth_callback: '', + authenticity_token: token, + allow_write_api: 'yes', + commit: 'Save changes' + }); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + + this._session.queue_message(msg, (obj, message) => { + if (msg.status_code === Soup.Status.OK) { + callback(true, message.response_body.data); + } else + callback(false, null); + }); + } + + requestOAuthAccessToken(code, callback) { + this._oauthProxy.access_token_async('access_token', code, (p, error, w, data) => { + this._onAccessOAuthToken(error, callback); + }, this._oauthProxy, callback); + } + + _onAccessOAuthToken(error, callback) { + if (error) { + callback(false); + return; + } + + let token = this._oauthProxy.token; + let secret = this._oauthProxy.token_secret; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + Secret.password_store(SECRET_SCHEMA, {}, Secret.COLLECTION_DEFAULT, + "OSM OAuth access token and secret", + this._oauthProxy.token + ":" + + this._oauthProxy.token_secret, null, + (source, result, userData) => { + this._onPasswordStored(result, callback); + }); + } + + _onPasswordStored(result, callback) { + let res = false; + if (result) + res = Secret.password_store_finish(result); + callback(res); + } + + signOut() { + /* clear token on call proxy, so it will use a new token if the user + signs in again (with a new access token) during this running + session */ + this._callProxy.token = null; + this._callProxy.token_secret = null; + + Secret.password_clear(SECRET_SCHEMA, {}, null, + this._onPasswordCleared.bind(this)); + } + + _onPasswordCleared(source, result) { + Secret.password_clear_finish(result); + } + + /* extract the session ID from the login form response headers */ + _extractOSMSessionID(responseHeaders) { + let cookie = responseHeaders.get('Set-Cookie'); + + if (cookie === null) + return null; + + let cookieParts = cookie.split(';'); + for (let cookiePart of cookieParts) { + let kvPair = cookiePart.trim().split('='); + let kv = kvPair; + + if (kv.length !== 2) { + continue; + } else if (kv[0] === '_osm_session') { + return kv[1]; + } + } + + return null; + } + + /* extract the authenticity token from the hidden input field of the login + form */ + _extractToken(messageBody) { + let regex = /.*authenticity_token.*value=\"([^\"]+)\".*/; + let lines = messageBody.split('\n'); + + for (let line of lines) { + let match = line.match(regex); + + if (match && match.length === 2) + return match[1]; + } + + return null; + } +}; + +/* + * Gets a status message (usually for an error case) + * to show for a given OSM server response. + */ +function getStatusMessage(statusCode) { + switch (statusCode) { + case Soup.Status.IO_ERROR: + case Soup.Status.UNAUTHORIZED: + /* setting the status in session.cancel_message still seems + to always give status IO_ERROR */ + return _("Incorrect user name or password"); + case Soup.Status.OK: + return _("Success"); + case Soup.Status.BAD_REQUEST: + return _("Bad request"); + case Soup.Status.NOT_FOUND: + return _("Object not found"); + case Soup.Status.CONFLICT: + return _("Conflict, someone else has just modified the object"); + case Soup.Status.GONE: + return _("Object has been deleted"); + case Soup.Status.PRECONDITION_FAILED: + return _("Way or relation refers to non-existing children"); + default: + return null; + } +} diff --git a/src/osmEdit.js b/src/osmEdit.js new file mode 100644 index 00000000..cfb92069 --- /dev/null +++ b/src/osmEdit.js @@ -0,0 +1,193 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Application = imports.application; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMConnection = imports.osmConnection; +const Utils = imports.utils; + +/* minimum zoom level at which to offer adding a location */ +var MIN_ADD_LOCATION_ZOOM_LEVEL = 16; + +var OSMEdit = class OSMEdit { + + constructor() { + this._osmConnection = new OSMConnection.OSMConnection(); + this._osmObject = null; // currently edited object + this._username = Application.settings.get('osm-username'); + this._isSignedIn = this._username !== null && this._username.length > 0; + } + + get object() { + return this._osmObject; + } + + createEditDialog(parentWindow, place) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + place: place + }); + + return dialog; + } + + createEditNewDialog(parentWindow, latitude, longitude) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + addLocation: true, + latitude: latitude, + longitude: longitude + }); + + return dialog; + } + + createAccountDialog(parentWindow, closeOnSignIn) { + let dialog = new OSMAccountDialog.OSMAccountDialog({ + transient_for: parentWindow, + modal: true, + closeOnSignIn: closeOnSignIn + }); + + return dialog; + } + + fetchObject(place, callback, cancellable) { + let osmType = Utils.osmTypeToString(place.osmType); + + /* reset currenly edited object */ + this._osmObject = null; + this._osmConnection.getOSMObject(osmType, place.osm_id, + (function(success, status, osmObject, osmType) { + callback(success, status, osmObject, osmType); + }), cancellable); + } + + uploadObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._uploadObject.bind(this), callback); + } + + _onChangesetOpened(success, status, changesetId, object, type, action, callback) { + if (success) { + let osmType = Utils.osmTypeToString(type); + action(object, osmType, changesetId, callback); + } else { + callback(false, status); + } + } + + _openChangeset(object, type, comment, action, callback) { + this._osmConnection.openChangeset(comment, (success, status, changesetId) => { + this._onChangesetOpened(success, status, changesetId, object, type, action, callback); + }); + } + + _onObjectUploaded(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _uploadObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.uploadObject(object, type, changesetId, (success, status, response) => { + this._onObjectUploaded(success, status, response, changesetId, callback); + }); + } + + deleteObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._deleteObject.bind(this), callback); + } + + _onObjectDeleted(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _deleteObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.deleteObject(object, type, changesetId, (success, status, response) => { + this._onObjectDeleted(success, status, response, changesetId, callback); + }); + } + + _closeChangeset(changesetId, callback) { + this._osmConnection.closeChangeset(changesetId, callback); + } + + performOAuthSignIn(username, password, callback) { + this._osmConnection.requestOAuthToken((success) => { + if (success) + this._onOAuthTokenRequested(username, password, callback); + else + callback(false, null); + }); + } + + _onOAuthTokenRequested(username, password, callback) { + /* keep track of authorizing username */ + this._username = username; + this._osmConnection.authorizeOAuthToken(username, password, callback); + } + + requestOAuthAccessToken(code, callback) { + this._osmConnection.requestOAuthAccessToken(code, (success, token) => { + this._onOAuthAccessTokenRequested(success, callback); + }); + } + + _onOAuthAccessTokenRequested(success, callback) { + if (success) { + this._isSignedIn = true; + Application.settings.set('osm-username', this._username); + } else { + /* clear out username if verification was unsuccessful */ + this._username = null; + } + + callback(success); + } + + signOut() { + this._username = null; + this._isSignedIn = false; + + Application.settings.set('osm-username', ''); + this._osmConnection.signOut(); + } + + get isSignedIn() { + return this._isSignedIn; + } + + get username() { + return this._username; + } +}; diff --git a/src/osmEditDialog.js b/src/osmEditDialog.js new file mode 100644 index 00000000..c4929e2d --- /dev/null +++ b/src/osmEditDialog.js @@ -0,0 +1,840 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const Maps = imports.gi.GnomeMaps; +const OSMConnection = imports.osmConnection; +const OSMTypes = imports.osmTypes; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const OSMUtils = imports.osmUtils; +const Utils = imports.utils; + +var Response = { + UPLOADED: 0, + DELETED: 1, + CANCELLED: 2, + ERROR: 3 +}; + +/* + * enumeration representing + * the different OSM editing + * field types + */ +const EditFieldType = { + TEXT: 0, + INTEGER: 1, + COMBO: 2, + ADDRESS: 3 +}; + +const _WIKI_BASE = 'https://wiki.openstreetmap.org/wiki/Key:'; + +var _osmWikipediaRewriteFunc = function(text) { + let wikipediaArticleFormatted = OSMUtils.getWikipediaOSMArticleFormatFromUrl(text); + + /* if the entered text is a Wikipedia link, + * substitute it with the OSM-formatted Wikipedia article tag */ + if (wikipediaArticleFormatted) + return wikipediaArticleFormatted; + else + return text; +}; + +/* Reformat a phone number string if it looks like a tel: URI + * strip off the leading tel: protocol string and trailing parameters, + * following a ; + * otherwise return the string unmodified */ +var _osmPhoneRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'tel') { + let afterTel = text.replace('tel:', ''); + + return Soup.uri_decode(afterTel.split(';')[0]); + } else { + return text; + } +}; + +/* + * specification of OSM edit fields + * name: the label for the edit field (translatable) + * tag: the OSM tag key value + * type: the field type (determines editing field type) + * rewriteFunc: a rewrite function taking a string argument + * (only used for TEXT fields) + * placeHolder: set a text place holder to act as example input + * (only used for TEXT fields) + * includeHelp: when true turn the name label to a link to the + * OSM wiki for tags. + * options: The options for the combo box (only used for COMBO fields) + * hint: a hint text to show in a popover displayed by a hint button + * (for TEXT and INTEGER fields) + * subtags: Used by a complex composite OSM tag. + * rows: Number of rows needed if != 1 (Currently only for ADDRESS). + */ +const OSM_FIELDS = [ + { + name: _("Name"), + tag: 'name', + type: EditFieldType.TEXT, + hint: _("The official name. This is typically what appears on signs.") + }, + { + name: _("Address"), + tag: 'addr', + subtags: ['addr:street', 'addr:housenumber', + 'addr:postcode', 'addr:city'], + type: EditFieldType.ADDRESS, + rows: 2 + }, + { + name: _("Website"), + tag: 'website', + type: EditFieldType.TEXT, + hint: _("The official website. Try to use the most basic form " + + "of a URL i.e. http://example.com instead of " + + "http://example.com/index.html.") + }, + { + name: _("Phone"), + tag: 'phone', + type: EditFieldType.TEXT, + rewriteFunc: this._osmPhoneRewriteFunc, + hint: _("Phone number. Use the international format, " + + "starting with a + sign. Beware of local privacy " + + "laws, especially for private phone numbers.") + }, + { + name: _("Wikipedia"), + tag: 'wikipedia', + type: EditFieldType.TEXT, + rewriteFunc: this._osmWikipediaRewriteFunc, + hint: _("The format used should include the language code " + + "and the article title like “en:Article title”.") + }, + { + name: _("Opening hours"), + tag: 'opening_hours', + type: EditFieldType.TEXT, + placeHolder: 'Mo-Fr 08:00-20:00; Sa-Su 10:00-14:00', + includeHelp: true, + hint: _("See the link in the label for help on format.") + }, + { + name: _("Population"), + tag: 'population', + type: EditFieldType.INTEGER + }, + { + name: _("Altitude"), + tag: 'ele', + type: EditFieldType.INTEGER, + hint: _("Elevation (height above sea level) of a point in metres.") + }, + { + name: _("Wheelchair access"), + tag: 'wheelchair', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['limited', _("Limited")], + ['designated', _("Designated")]] + }, + { + name: _("Internet access"), + tag: 'internet_access', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['wlan', _("Wi-Fi")], + ['wired', _("Wired")], + ['terminal', _("Terminal")], + ['service', _("Service")]] + }, + { + name: _("Religion"), + tag: 'religion', + type: EditFieldType.COMBO, + options: [['animist', _("Animism")], + ['bahai', _("Bahá’í")], + ['buddhist', _("Buddhism")], + ['caodaism', _("Caodaism")], + ['christian', _("Christianity")], + ['confucian', _("Confucianism")], + ['hindu', _("Hinduism")], + ['jain', _("Jainism")], + ['jewish', _("Judaism")], + ['muslim', _("Islam")], + ['multifaith', _("Multiple Religions")], + ['pagan', _("Paganism")], + ['pastafarian', _("Pastafarianism")], + ['scientologist', _("Scientology")], + ['shinto', _("Shinto")], + ['sikh', _("Sikhism")], + ['spiritualist', _("Spiritualism")], + ['taoist', _("Taoism")], + ['unitarian_universalist', _("Unitarian Universalism")], + ['voodoo', _("Voodoo")], + ['yazidi', _("Yazidism")], + ['zoroastrian', _("Zoroastrianism")]] + }, + { + name: _("Toilets"), + tag: 'toilets', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")]] + }, + { + name: _("Note"), + tag: 'note', + type: EditFieldType.TEXT, + hint: _("Information used to inform other mappers about non-obvious information about an element, the author’s intent when creating it, or hints for further improvement.") + }]; + +const OSMEditAddress = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-address.ui', + Children: [ 'street', + 'number', + 'post', + 'city' ], +}, class OSMEditAddress extends Gtk.Grid { + + _init(params) { + let street = params.street; + delete params.street; + + let number = params.number; + delete params.number; + + let postCode = params.postCode; + delete params.postCode; + + let city = params.city; + delete params.city; + + super._init(params); + + if (street) + this.street.text = street; + + if (number) + this.number.text = number; + + if (postCode) + this.post.text = postCode; + + if (city) + this.city.text = city; + } +}); + + +var OSMEditDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-dialog.ui', + InternalChildren: [ 'cancelButton', + 'backButton', + 'nextButton', + 'stack', + 'editorGrid', + 'commentTextView', + 'addFieldPopoverGrid', + 'addFieldButton', + 'typeSearchGrid', + 'typeLabel', + 'typeButton', + 'typeValueLabel', + 'recentTypesLabel', + 'recentTypesListBox', + 'hintPopover', + 'hintLabel', + 'headerBar'], +}, class OSMEditDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + delete params.place; + + this._addLocation = params.addLocation; + delete params.addLocation; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + /* I could not get this widget working from within the widget template + * this results in a segfault. The widget definition is left in-place, + * but commented-out in the template file */ + this._typeSearch = new OSMTypeSearchEntry.OSMTypeSearchEntry(); + this._typeSearchGrid.attach(this._typeSearch, 0, 0, 1, 1); + this._typeSearch.visible = true; + this._typeSearch.can_focus = true; + + let typeSearchPopover = this._typeSearch.popover; + typeSearchPopover.connect('selected', (o, k, v, t) => { + this._onTypeSelected(o, k, v, t); + }); + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + this._isEditing = false; + this._nextButton.connect('clicked', () => this._onNextClicked()); + this._cancelButton.connect('clicked', () => this._onCancelClicked()); + this._backButton.connect('clicked', () => this._onBackClicked()); + this._typeButton.connect('clicked', () => this._onTypeClicked()); + + if (this._addLocation) { + this._headerBar.title = C_("dialog title", "Add to OpenStreetMap"); + this._typeLabel.visible = true; + this._typeButton.visible = true; + + /* the OSMObject ID, version, and changeset ID is unknown for now */ + let newNode = + Maps.OSMNode.new(0, 0, 0, this._longitude, this._latitude); + /* set a placeholder name tag to always get a name entry for new + * locations */ + newNode.set_tag('name', ''); + this._loadOSMData(newNode); + this._isEditing = true; + this._osmType = Geocode.PlaceOsmType.NODE; + } else { + this._osmType = this._place.osmType; + Application.osmEdit.fetchObject(this._place, + this._onObjectFetched.bind(this), + this._cancellable); + } + + /* store original title of the dialog to be able to restore it when + * coming back from type selection */ + this._originalTitle = this._headerBar.title; + this._updateRecentTypesList(); + + this._recentTypesListBox.set_header_func((row, previous) => { + if (previous) + row.set_header(new Gtk.Separator()); + }); + + this._recentTypesListBox.connect('row-activated', (listbox, row) => { + this._onTypeSelected(null, row._key, row._value, row._title); + }); + } + + _onNextClicked() { + if (this._isEditing) { + this._switchToUpload(); + } else { + this._stack.visible_child_name = 'loading'; + this._nextButton.sensitive = false; + this._backButton.sensitive = false; + + let comment = this._commentTextView.buffer.text; + Application.osmEdit.uploadObject(this._osmObject, + this._osmType, comment, + this._onObjectUploaded.bind(this)); + } + } + + _onTypeClicked() { + this._cancelButton.visible = false; + this._backButton.visible = true; + this._nextButton.visible = false; + this._headerBar.title = _("Select Type"); + this._stack.visible_child_name = 'select-type'; + } + + _onTypeSelected(popover, key, value, title) { + this._typeValueLabel.label = title; + this._updateType(key, value); + + if (popover) + popover.hide(); + + /* clear out type search entry */ + this._typeSearch.text = ''; + + /* go back to the editing stack page */ + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._stack.visible_child_name = 'editor'; + this._headerBar.title = this._originalTitle; + + /* update recent types store */ + OSMTypes.recentTypesStore.pushType(key, value); + + /* enable the Next button, so that it's possible to just change the type + * of an object without changing anything else */ + this._nextButton.sensitive = true; + + this._updateRecentTypesList(); + } + + _updateType(key, value) { + /* clear out any previous type-related OSM tags */ + OSMTypes.OSM_TYPE_TAGS.forEach((tag) => this._osmObject.delete_tag(tag)); + + this._osmObject.set_tag(key, value); + } + + /* update visibility and enable the type selection button if the object has + * a well-known type (based on a known set of tags) */ + _updateTypeButton() { + let numTypeTags = 0; + let lastTypeTag = null; + + for (let i = 0; i < OSMTypes.OSM_TYPE_TAGS.length; i++) { + let key = OSMTypes.OSM_TYPE_TAGS[i]; + let value = this._osmObject.get_tag(key); + + if (value != null) { + numTypeTags++; + lastTypeTag = key; + } + } + + /* if the object has none of tags set, enable the button and keep the + * pre-set "None" label */ + if (numTypeTags === 0) { + this._typeLabel.visible = true; + this._typeButton.visible = true; + } else if (numTypeTags === 1) { + let value = this._osmObject.get_tag(lastTypeTag); + let typeTitle = OSMTypes.lookupType(lastTypeTag, value); + + /* if the type tag has a value we know of, and possible has + * translations for */ + if (typeTitle != null) { + this._typeValueLabel.label = typeTitle; + this._typeLabel.visible = true; + this._typeButton.visible = true; + } + } + } + + _updateRecentTypesList() { + let recentTypes = OSMTypes.recentTypesStore.recentTypes; + + if (recentTypes.length > 0) { + let children = this._recentTypesListBox.get_children(); + + for (let i = 0; i < children.length; i++) { + children[i].destroy(); + } + + this._recentTypesLabel.visible = true; + this._recentTypesListBox.visible = true; + + for (let i = 0; i < recentTypes.length; i++) { + let key = recentTypes[i].key; + let value = recentTypes[i].value; + let title = OSMTypes.lookupType(key, value); + + let row = new Gtk.ListBoxRow({visible: true, hexpand: true}); + let grid = new Gtk.Grid({visible: true, + margin_top: 6, margin_bottom: 6, + margin_start: 12, margin_end: 12}); + let label = new Gtk.Label({visible: true, halign: Gtk.Align.START, + label: title}); + + label.get_style_context().add_class('dim-label'); + + row._title = title; + row._key = key; + row._value = value; + + row.add(grid); + grid.add(label); + + this._recentTypesListBox.add(row); + } + } else { + this._recentTypesLabel.visible = false; + this._recentTypesListBox.visible = false; + } + } + + _switchToUpload() { + this._stack.set_visible_child_name('upload'); + this._nextButton.label = _("Done"); + this._cancelButton.visible = false; + this._backButton.visible = true; + this._cancelButton.visible = false; + this._isEditing = false; + this._commentTextView.grab_focus(); + } + + _onCancelClicked() { + this.response(Response.CANCELLED); + } + + _onBackClicked() { + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._nextButton.label = _("Next"); + this._stack.set_visible_child_name('editor'); + this._isEditing = true; + this._commentTextView.buffer.text = ''; + this._typeSearch.text = ''; + this._headerBar.title = this._originalTitle; + } + + _onObjectFetched(success, status, osmObject, osmType, error) { + if (success) { + this._isEditing = true; + this._loadOSMData(osmObject); + } else { + this._showError(status, error); + } + } + + _onObjectUploaded(success, status) { + if (success) { + this.response(Response.UPLOADED); + } else { + this._showError(status); + this.response(Response.ERROR); + } + } + + _showError(status, error) { + /* set error message from specific error if available, otherwise use + * a generic error message for the HTTP status code */ + let statusMessage = + error ? error.message : OSMConnection.getStatusMessage(status); + let messageDialog = + new Gtk.MessageDialog({ transient_for: this.get_toplevel(), + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: statusMessage }); + + messageDialog.run(); + messageDialog.destroy(); + this.response(Response.ERROR); + } + + /* GtkContainer.child_get_property doesn't seem to be usable from GJS */ + _getRowOfDeleteButton(button) { + for (let row = 1; row < this._currentRow; row++) { + let label = this._editorGrid.get_child_at(0, row); + let deleteButton = this._editorGrid.get_child_at(2, row); + + if (deleteButton === button) + return row; + } + + return -1; + } + + _addOSMEditDeleteButton(fieldSpec) { + let deleteButton = Gtk.Button.new_from_icon_name('user-trash-symbolic', + Gtk.IconSize.BUTTON); + let styleContext = deleteButton.get_style_context(); + let rows = fieldSpec.rows || 1; + + styleContext.add_class('flat'); + this._editorGrid.attach(deleteButton, 2, this._currentRow, 1, 1); + + deleteButton.connect('clicked', () => { + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((key) => this._osmObject.delete_tag(key)); + } else { + this._osmObject.delete_tag(fieldSpec.tag); + } + + let row = this._getRowOfDeleteButton(deleteButton); + for (let i = 0; i < rows; i++) { + this._editorGrid.remove_row(row); + this._currentRow--; + } + this._nextButton.sensitive = true; + this._updateAddFieldMenu(); + }); + + deleteButton.show(); + } + + _addOSMEditLabel(fieldSpec) { + let text = fieldSpec.name; + if (fieldSpec.includeHelp) { + let link = _WIKI_BASE + fieldSpec.tag; + text = '%s'.format(link, link, text); + } + let label = new Gtk.Label({ label: text, + use_markup: true }); + label.halign = Gtk.Align.END; + label.get_style_context().add_class('dim-label'); + this._editorGrid.attach(label, 0, this._currentRow, 1, 1); + label.show(); + } + + _showHintPopover(entry, hint) { + if (this._hintPopover.visible) { + this._hintPopover.popdown(); + } else { + this._hintPopover.relative_to = entry; + this._hintLabel.label = hint; + this._hintPopover.popup(); + } + } + + _addOSMEditTextEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let entry = new Gtk.Entry(); + entry.text = value; + entry.hexpand = true; + if (fieldSpec.placeHolder) + entry.placeholder_text = fieldSpec.placeHolder; + + entry.connect('changed', () => { + if (fieldSpec.rewriteFunc) + entry.text = fieldSpec.rewriteFunc(entry.text); + this._osmObject.set_tag(fieldSpec.tag, entry.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + entry.secondary_icon_name = 'dialog-information-symbolic'; + entry.connect('icon-press', (entry, iconPos, event) => { + this._showHintPopover(entry, fieldSpec.hint); + }); + } + + this._editorGrid.attach(entry, 1, this._currentRow, 1, 1); + entry.show(); + entry.grab_focus(); + + /* TODO: should we allow deleting the name field? */ + this._addOSMEditDeleteButton(fieldSpec); + + this._currentRow++; + } + + _addOSMEditIntegerEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let spinbutton = Gtk.SpinButton.new_with_range(0, 1e9, 1); + spinbutton.value = value; + spinbutton.numeric = true; + spinbutton.hexpand = true; + spinbutton.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, spinbutton.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + spinbutton.secondary_icon_name = 'dialog-information-symbolic'; + spinbutton.connect('icon-press', (iconPos, event) => { + this._showHintPopover(spinbutton, fieldSpec.hint); + }); + } + + this._editorGrid.attach(spinbutton, 1, this._currentRow, 1, 1); + spinbutton.show(); + spinbutton.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditComboEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let combobox = new Gtk.ComboBoxText(); + + fieldSpec.options.forEach(function(option) { + combobox.append(option[0], option[1]); + }); + combobox.active_id = value; + combobox.hexpand = true; + combobox.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, combobox.active_id); + this._nextButton.sensitive = true; + }); + + this._editorGrid.attach(combobox, 1, this._currentRow, 1, 1); + combobox.show(); + combobox.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditAddressEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let addr = new OSMEditAddress({ street: value[0], + number: value[1], + postCode: value[2], + city: value[3] }); + let changedFunc = (function(entry, index) { + this._osmObject.set_tag(fieldSpec.subtags[index], entry.text); + this._nextButton.sensitive = true; + }).bind(this); + + addr.street.connect('changed', changedFunc.bind(this, addr.street, 0)); + addr.number.connect('changed', changedFunc.bind(this, addr.number, 1)); + addr.post.connect('changed', changedFunc.bind(this, addr.post, 2)); + addr.city.connect('changed', changedFunc.bind(this, addr.city, 3)); + + let rows = fieldSpec.rows || 1; + this._editorGrid.attach(addr, 1, this._currentRow, 1, rows); + addr.street.grab_focus(); + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow += rows; + } + + /* update visible items in the "Add Field" popover */ + _updateAddFieldMenu() { + /* clear old items */ + let children = this._addFieldPopoverGrid.get_children(); + let hasAllFields = true; + + for (let i = 0; i < children.length; i++) { + let button = children[i]; + button.destroy(); + } + + /* add selectable items */ + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let hasValue = false; + + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + if (this._osmObject.get_tag(tag) !== null) + hasValue = true; + }); + } else { + hasValue = this._osmObject.get_tag(fieldSpec.tag) !== null; + } + + if (!hasValue) { + let button = new Gtk.Button({ + visible: true, sensitive: true, + label: fieldSpec.name + }); + button.get_style_context().add_class('menuitem'); + button.get_style_context().add_class('button'); + button.get_style_context().add_class('flat'); + button.get_child().halign = Gtk.Align.START; + + button.connect('clicked', () => { + this._addFieldButton.active = false; + this._addOSMField(fieldSpec, ''); + /* add a "placeholder" empty OSM tag to keep the add field + * menu updated, these tags will be filtered out if nothing + * is entered */ + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + this._osmObject.set_tag(tag, ''); + }); + } else { + this._osmObject.set_tag(fieldSpec.tag, ''); + } + this._updateAddFieldMenu(); + }); + + hasAllFields = false; + this._addFieldPopoverGrid.add(button); + } + } + + this._addFieldButton.sensitive = !hasAllFields; + } + + _addOSMField(fieldSpec, value) { + switch (fieldSpec.type) { + case EditFieldType.TEXT: + this._addOSMEditTextEntry(fieldSpec, value); + break; + case EditFieldType.INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value); + break; + case EditFieldType.COMBO: + this._addOSMEditComboEntry(fieldSpec, value); + break; + case EditFieldType.ADDRESS: + this._addOSMEditAddressEntry(fieldSpec, value); + break; + } + } + + _loadOSMData(osmObject) { + this._osmObject = osmObject; + + /* keeps track of the current insertion row in the grid for editing + * widgets */ + this._currentRow = 1; + + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let value; + + if (fieldSpec.subtags) { + let hasAny = false; + fieldSpec.subtags.forEach(function(tag) { + if (osmObject.get_tag(tag) != null) + hasAny = true; + }); + + if (hasAny) { + value = fieldSpec.subtags.map(function(tag) { + return osmObject.get_tag(tag); + }); + this._addOSMField(fieldSpec, value); + } + } else { + value = osmObject.get_tag(fieldSpec.tag); + if (value != null) + this._addOSMField(fieldSpec, value); + } + } + + this._updateAddFieldMenu(); + this._updateTypeButton(); + this._stack.visible_child_name = 'editor'; + } +}); diff --git a/src/osmTypeListRow.js b/src/osmTypeListRow.js new file mode 100644 index 00000000..795d203c --- /dev/null +++ b/src/osmTypeListRow.js @@ -0,0 +1,50 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var OSMTypeListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-list-row.ui', + InternalChildren: [ 'name' ] +}, class OSMTypeListRow extends Gtk.ListBoxRow { + + _init(props) { + this._type = props.type; + delete props.type; + + super._init(props); + + this._name.label = this._type.title; + } + + get key() { + return this._type.key; + } + + get value() { + return this._type.value; + } + + get title() { + return this._type.title; + } +}); diff --git a/src/osmTypePopover.js b/src/osmTypePopover.js new file mode 100644 index 00000000..5355ca5d --- /dev/null +++ b/src/osmTypePopover.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypeListRow = imports.osmTypeListRow; +const SearchPopover = imports.searchPopover; + +var OSMTypePopover = GObject.registerClass({ + InternalChildren: ['list'], + Template: 'resource:///org/gnome/Maps/ui/osm-type-popover.ui', + Signals : { + /* signal emitted when selecting a type, indicates OSM key and value + * and display title */ + 'selected' : { param_types: [ GObject.TYPE_STRING, + GObject.TYPE_STRING, + GObject.TYPE_STRING ] } + } +}, class OSMTypePopover extends SearchPopover.SearchPopover { + + _init(props) { + super._init(props); + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.key, row.value, row.title); + }); + } + + showMatches(matches) { + this._list.forall((row) => row.destroy()); + + matches.forEach((type) => this._addRow(type)); + this.show(); + } + + _addRow(type) { + let row = new OSMTypeListRow.OSMTypeListRow({ type: type, + can_focus: true }); + this._list.add(row); + } +}); diff --git a/src/osmTypeSearchEntry.js b/src/osmTypeSearchEntry.js new file mode 100644 index 00000000..eae92355 --- /dev/null +++ b/src/osmTypeSearchEntry.js @@ -0,0 +1,75 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypePopover = imports.osmTypePopover; +const OSMTypes = imports.osmTypes; +const Utils = imports.utils; + +const MAX_MATCHES = 10; + +var OSMTypeSearchEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-search-entry.ui' +}, class OSMTypeSearchEntry extends Gtk.SearchEntry { + + _init(props) { + super._init(props); + + this._popover = + new OSMTypePopover.OSMTypePopover({relative_to: this}); + + this.connect('size-allocate', (widget, allocation) => { + /* Magic number to make the alignment pixel perfect. */ + let width_request = allocation.width + 20; + this._popover.width_request = width_request; + }); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + this.connect('activate', this._onSearchChanged.bind(this)); + } + + get popover() { + return this._popover; + } + + _onSearchChanged() { + if (this.text.length === 0) { + this._popover.hide(); + return; + } + + /* Note: Not sure if searching already on one character might be a bit + * too much, but unsure about languages such as Chinese and Japanese + * using ideographs. */ + if (this.text.length >= 1) { + let matches = OSMTypes.findMatches(this.text, MAX_MATCHES); + + if (matches.length > 0) { + /* show search results */ + this._popover.showMatches(matches); + } else { + this._popover.hide(); + } + } + } +}); diff --git a/src/osmTypes.js b/src/osmTypes.js new file mode 100644 index 00000000..8020043a --- /dev/null +++ b/src/osmTypes.js @@ -0,0 +1,165 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +const Utils = imports.utils; + +const _RECENT_TYPES_STORE_FILE = 'maps-recent-types.json'; +const _NUM_RECENT_TYPES = 10; + +const _file = Gio.file_new_for_uri('resource://org/gnome/Maps/osm-types.json'); +const [_status, _buffer] = _file.load_contents(null); +const OSM_TYPE_MAP = JSON.parse(Utils.getBufferText(_buffer)); + +/* Lists the OSM tags we base our notion of location types on */ +var OSM_TYPE_TAGS = ['aeroway', 'amenity', 'leisure', 'office', 'place', 'shop', 'tourism' ]; + +/* Sort function comparing two type values accoring to the locale-specific + * comparison of the type title */ +function _sortType(t1, t2) { + return t1.title.toLocaleLowerCase().localeCompare(t2.title.toLocaleLowerCase()); +} + +/* find the localized display title and a normalized locale-specific lower case + * value for search purposes, given a type mapping value, + * also cache the title to avoid re-iterating the language map every time, + * and store the lower-case normalized title in the current locale */ +function _lookupTitle(item) { + let langs = GLib.get_language_names(); + let title = item.cachedTitle; + + if (title) + return [title, item.normalizedTitle]; + + for (let i = 0; i < langs.length; i++) { + title = item.title[langs[i].replace('_', '-')]; + + if (title) { + let normalizedTitle = title.toLocaleLowerCase(); + + item.cachedTitle = title; + item.normalizedTitle = normalizedTitle; + return [title, normalizedTitle]; + } + } + + return null; +} + +function findMatches(prefix, maxMatches) { + let numMatches = 0; + let prefixLength = prefix.length; + let normalized = prefix.toLocaleLowerCase(); + let matches = []; + + for (let type in OSM_TYPE_MAP) { + let item = OSM_TYPE_MAP[type]; + let [title, normalizedTitle] = _lookupTitle(item); + let parts = type.split('/'); + + /* if the (locale-case-normalized) title matches parts of the search + * string, or as a convenience for expert mappers, if the search string + * is prefix of the raw OSM tag value */ + if (normalizedTitle.indexOf(normalized) != -1 + || (prefixLength >= 3 && parts[1].startsWith(prefix))) { + numMatches++; + matches.push({key: parts[0], value: parts[1], title: title}); + } + + if (numMatches === maxMatches) + break; + } + + return matches.sort(_sortType); +} + +/* return the title of a type with a given key/value if it is known by us */ +function lookupType(key, value) { + let item = OSM_TYPE_MAP[key + '/' + value]; + + if (item) { + let [title, _] = _lookupTitle(item); + return title; + } else + return null; +} + +var RecentTypesStore = class RecentTypesStore { + + constructor() { + this._filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _RECENT_TYPES_STORE_FILE]); + this._load(); + } + + get recentTypes() { + return this._recentTypes; + } + + _load() { + if (!GLib.file_test(this._filename, GLib.FileTest.EXISTS)) { + this._recentTypes = []; + return; + } + + let buffer = Utils.readFile(this._filename); + if (buffer === null) { + this._recentTypes = []; + return; + } + + this._recentTypes = JSON.parse(Utils.getBufferText(buffer)); + } + + _save() { + let buffer = JSON.stringify(this._recentTypes); + if (!Utils.writeFile(this._filename, buffer)) + log('Failed to write recent types file!'); + } + + /* push a type key/value as the most recently used type */ + pushType(key, value) { + /* find out if the type is already stored */ + let pos = -1; + for (let i = 0; i < this._recentTypes.length; i++) { + if (this._recentTypes[i].key === key && + this._recentTypes[i].value === value) { + pos = i; + break; + } + } + + /* remove the type if it was already found in the list */ + if (pos != -1) + this._recentTypes.splice(pos, 1); + + this._recentTypes.unshift({key: key, value: value}); + + /* prune the list */ + this._recentTypes.splice(_NUM_RECENT_TYPES); + + this._save(); + } +}; + +var recentTypesStore = new RecentTypesStore(); diff --git a/src/osmUtils.js b/src/osmUtils.js new file mode 100644 index 00000000..e3c06ead --- /dev/null +++ b/src/osmUtils.js @@ -0,0 +1,72 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Soup = imports.gi.Soup; + +const Application = imports.application; + +/* + * Gets a Wikipedia article in OSM tag format (i.e. lang:Article title) + * given a URL or null if input doesn't match a Wikipedia URL + */ +function getWikipediaOSMArticleFormatFromUrl(url) { + let regex = /https?:\/\/(..)\.wikipedia\.org\/wiki\/(.+)/; + let match = url.match(regex); + + if (match && match.length == 3) { + let lang = match[1]; + let article = match[2]; + + return lang + ':' + Soup.uri_decode(article).replace(/_/g, ' '); + } else { + return null; + } +} + +/** + * Updates a Place object according to an OSMObject. + * Will also update place in the place store. + */ +function updatePlaceFromOSMObject(place, object) { + let name = object.get_tag('name'); + + if (name) { + /* only update the place's name from the OSM object if the OSM object + * actually has a name set. + * https://bugzilla.gnome.org/show_bug.cgi?id=762569 + */ + place.name = name; + } + place.population = object.get_tag('population'); + place.website = object.get_tag('website'); + place.phone = object.get_tag('phone'); + place.wiki = object.get_tag('wikipedia'); + place.openingHours = object.get_tag('opening_hours'); + place.wheelchair = object.get_tag('wheelchair'); + + let altitude = object.get_tag('ele'); + + if (altitude > 0) + place.location.altitude = altitude; + + Application.placeStore.updatePlace(place); +} diff --git a/src/overpass.js b/src/overpass.js new file mode 100644 index 00000000..af1ea389 --- /dev/null +++ b/src/overpass.js @@ -0,0 +1,262 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Rishi Raj Singh Jhelumi + */ + +const Format = imports.format; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Soup = imports.gi.Soup; + +const PhotonParser = imports.photonParser; +const Place = imports.place; +const Utils = imports.utils; + +const _DEFAULT_TIMEOUT = 180; +const _DEFAULT_MAXSIZE = 536870912; +const _DEFAULT_OUTPUT_FORMAT = 'json'; +const _DEFAULT_OUTPUT_COUNT = 1e6; +const _DEFAULT_OUTPUT_INFO = 'body'; +const _DEFAULT_OUTPUT_SORT_ORDER = 'qt'; + +const BASE_URL = 'https://overpass-api.de/api/interpreter'; + +var Overpass = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'Place with added information', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class Overpass extends GObject.Object { + + _init(params) { + params = params || { }; + + super._init(); + + // maximum allowed runtime for the query in seconds + this.timeout = params.timeout || _DEFAULT_TIMEOUT; + + // maximum allowed memory for the query in bytes RAM on the server + this.maxsize = params.maxsize || _DEFAULT_MAXSIZE; + + // output format : json or xml + this.outputFormat = params.outputFormat || _DEFAULT_OUTPUT_FORMAT; + + // maximum number of results the output must contain + this.outputCount = params.outputCount || _DEFAULT_OUTPUT_COUNT; + + // data output info must contain : ids, skel, body, meta + this.outputInfo = params.outputInfo || _DEFAULT_OUTPUT_INFO; + + // data sort order : qt(fastest based on geography), ids, asc + this.outputSortOrder = params.outputSortOrder || _DEFAULT_OUTPUT_SORT_ORDER; + + // HTTP Session Variables + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + addInfo(place) { + let url = this._getQueryUrl(Utils.osmTypeToString(place.osm_type), + place.osm_id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + return; + } + try { + let jsonObj = JSON.parse(message.response_body.data); + this._populatePlace(place, jsonObj); + this.place = place; + this.notify('place'); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + } + }); + } + + fetchPlace(osmType, osmId, callback) { + let url = this._getQueryUrl(osmType, osmId); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + callback(null); + } + try { + let jsonObj = JSON.parse(message.response_body.data); + let place = this._createPlace(jsonObj, osmType, osmId); + callback(place); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + callback(null); + } + }) + } + + _createPlace(overpassData, osmType, osmId) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return null; + + let [lat, lon] = this._getCoordsFromElement(element); + let photonProperties = + this._getPhotonProperties(element.tags, osmType, osmId); + let place = PhotonParser.parsePlace(lat, lon, photonProperties); + + this._populatePlace(place, overpassData); + place.prefilled = true; + + return place; + } + + _getCoordsFromElement(element) { + if (element.type === 'node') + return [element.lat, element.lon]; + else + return [element.center.lat, element.center.lon]; + } + + _getPhotonProperties(tags, osmType, osmId) { + let properties = {}; + + properties.osm_type = this._getPhotonOsmType(osmType); + properties.osm_id = osmId; + + if (tags.name) + properties.name = tags.name; + + if (tags['addr:street']) + properties.street = tags['addr:street']; + if (tags['addr:housenumber']) + properties.housenumber = tags['addr:housenumber']; + if (tags['addr:postcode']) + properties.postcode = tags['addr:postcode']; + if (tags['addr:city']) + properties.city = tags['addr:city']; + + if (tags.place) + this._setOsmKeyAndValue(properties, tags, 'place'); + else if (tags.amenity) + this._setOsmKeyAndValue(properties, tags, 'amenity'); + else if (tags.leisure) + this._setOsmKeyAndValue(properties, tags, 'leisure'); + else if (tags.shop) + this._setOsmKeyAndValue(properties, tags, 'shop'); + else if (tags.highway) + this._setOsmKeyAndValue(properties, tags, 'highway'); + else if (tags.railway) + this._setOsmKeyAndValue(properties, tags, 'railway'); + else if (tags.aeroway) + this._setOsmKeyAndValue(properties, tags, 'aeroway'); + else if (tags.building) + this._setOsmKeyAndValue(properties, tags, 'building'); + + return properties; + } + + _getPhotonOsmType(osmType) { + switch (osmType) { + case 'node': return 'N'; + case 'way': return 'W'; + case 'relation': return 'R'; + default: return null; + } + } + + _setOsmKeyAndValue(properties, tags, tag) { + properties.osm_key = tag; + properties.osm_value = tags[tag]; + } + + _populatePlace(place, overpassData) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return; + + if (element.tags.name) + place.name = element.tags.name; + if (element.tags.population) + place.population = element.tags.population; + if (element.tags['contact:website']) + place.website = element.tags['contact:website']; + if (element.tags.website) + place.website = element.tags.website; + if (element.tags['contact:phone']) + place.phone = element.tags['contact:phone']; + if (element.tags.phone) + place.phone = element.tags.phone; + if (element.tags.wikipedia) + place.wiki = element.tags.wikipedia; + if (element.tags.wheelchair) + place.wheelchair = element.tags.wheelchair; + if (element.tags.opening_hours) + place.openingHours = element.tags.opening_hours; + if (element.tags.internet_access) + place.internetAccess = element.tags.internet_access; + if (element.tags.ele && place.location) + place.location.altitude = parseFloat(element.tags.ele); + if (element.tags.religion) + place.religion = element.tags.religion + if (element.tags.toilets) + place.toilets = element.tags.toilets; + if (element.tags.note) + place.note = element.tags.note; + } + + _getQueryUrl(osmType, osmId) { + return Format.vprintf('%s?data=%s', [BASE_URL, + this._generateOverpassQuery(osmType, + osmId)]); + } + + _generateOverpassQuery(osmType, osmId) { + return Format.vprintf('%s%s%s;%s;%s;', + [ this._getKeyValue('timeout', this.timeout), + this._getKeyValue('out', this.outputFormat), + this._getKeyValue('maxsize', this.maxsize), + this._getData(osmType, osmId), + this._getOutput() ]); + } + + _getKeyValue(key, value) { + return Format.vprintf('[%s:%s]', [ key, + value ]); + } + + _getData(osmType, osmId) { + return Format.vprintf('%s(%s)', [osmType, osmId]); + } + + _getOutput() { + return Format.vprintf('out center %s %s %s', [ this.outputInfo, + this.outputSortOrder, + this.outputCount ]); + } +}); diff --git a/src/photonGeocode.js b/src/photonGeocode.js new file mode 100644 index 00000000..980e9b47 --- /dev/null +++ b/src/photonGeocode.js @@ -0,0 +1,168 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +var PhotonGeocode = class { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().photonGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().photonGeocode.attributionUrl; + } + + get name() { + return 'Photon'; + } + + get url() { + return 'https://github.com/Komoot/photon'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let features = json.features; + + if (!features || features.length === 0) { + Utils.debug('No features in response'); + return null; + } + + features.forEach(feature => { + let place = this._parseFeature(feature); + + if (place) + result.push(place); + }); + + return result; + } + + _parseFeature(feature) { + let [lon, lat] = feature.geometry.coordinates; + + return PhotonParser.parsePlace(lat, lon, feature.properties); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ lat: latitude, + lon: longitude, + limit: string ? this._limit : 1 + }); + + if (string) + query.add('q', string); + else + query.add('distance_sort', 'true'); + + if (this._language) + query.add('lang', this._language); + + if (this._additionalParams) + this._additionalParams.forEach((p) => query.add(p.key, p.value)); + + return Format.vprintf('%s/%s/?%s', [this._baseUrl, + string ? 'api' : 'reverse', + query.toString()]); + } + + _readService() { + let photon = Service.getService().photonGeocode; + let language = Utils.getLanguage(); + let supportedLanguages; + + if (photon) { + this._baseUrl = photon.baseUrl; + supportedLanguages = photon.supportedLanguages; + + if (photon.additionalParams) + this._additionalParams = photon.additionalParams; + } + + if (supportedLanguages.includes(language)) + this._language = language; + else + this._language = null; + } +} diff --git a/src/photonParser.js b/src/photonParser.js new file mode 100644 index 00000000..3c3a78b6 --- /dev/null +++ b/src/photonParser.js @@ -0,0 +1,208 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GWeather = imports.gi.GWeather; + +const Address = imports.address; +const OSMTypes = imports.osmTypes; +const Place = imports.place; +const Utils = imports.utils; + +function parsePlace(latitude, longitude, properties) { + let location = new Geocode.Location({ latitude: latitude, + longitude: longitude, + accuracy: 0.0 }); + let type = _parsePlaceType(properties); + let name = _parseName(properties); + + if (!name) + return null; + + let street = properties.street; + let housenumber = properties.housenumber; + let countryCode = Utils.getCountryCodeForCoordinates(latitude, longitude); + let streetAddress; + + if (housenumber && street) { + streetAddress = Address.streetAddressForCountryCode(street, housenumber, + countryCode); + + /* in some cases Photon seems to give housenumber or street as name, + * in that case set the name as the formatted street address + */ + if (name === housenumber || name === street) + name = streetAddress; + } + + let place = new Geocode.Place({ name: name, + place_type: type, + location: location }); + + if (streetAddress) + place.street_address = streetAddress; + + if (properties.osm_id && properties.osm_type) { + place.osm_id = properties.osm_id + ''; // Geocode-glib needs this as a string + place.osm_type = _parseOsmType(properties.osm_type); + } + + if (properties.street) + place.street = properties.street; + + if (properties.city) + place.town = properties.city; + + if (properties.postcode) + place.postal_code = properties.postcode; + + if (properties.state) + place.state = properties.state; + + if (countryCode) + place.country_code = countryCode; + + if (!countryCode && properties.country) + place.country = properties.country; + + return new Place.Place({ place: place }); +} + +function _parseName(properties) { + if (!properties) + return ''; + + if (properties.name) { + return properties.name; + } else if (properties.housenumber) { + return properties.housenumber; + } else { + let typeTitle = + OSMTypes.lookupType(properties.osm_key, properties.osm_value); + + return typeTitle || _("Unnamed place"); + } +} + +function _parseOsmType(osmType) { + switch (osmType) { + case 'N': + return Geocode.PlaceOsmType.NODE; + case 'W': + return Geocode.PlaceOsmType.WAY; + case 'R': + return Geocode.PlaceOsmType.RELATION; + default: + return Geocode.PlaceOsmType.UNKNOWN; + } +} + +function _parsePlaceType(properties) { + if (!properties) + return Geocode.PlaceType.UNKNOWN; + + let key = properties.osm_key; + let value = properties.osm_value; + + switch (key) { + case 'place': + switch (value) { + case 'continent': + return Geocode.PlaceType.CONTINENT; + case 'country': + return Geocode.PlaceType.COUNTRY; + case 'city': + case 'town': + case 'village': + case 'hamlet': + return Geocode.PlaceType.TOWN; + case 'suburb': + return Geocode.PlaceType.SUBURB; + case 'house': + return Geocode.PlaceType.BUILDING; + case 'island': + return Geocode.PlaceType.ISLAND; + case 'municipality': + return Geocode.PlaceType.COUNTY; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'amenity': + switch (value) { + case 'bar': + case 'pub': + case 'nightclub': + return Geocode.PlaceType.BAR; + case 'restaurant': + case 'fast_food': + return Geocode.PlaceType.RESTAURANT; + case 'school': + case 'kindergarten': + return Geocode.PlaceType.SCHOOL; + case 'place_of_worship': + return Geocode.PlaceType.PLACE_OF_WORSHIP; + case 'bus_station': + return Geocode.PlaceType.BUS_STOP; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'highway': + switch (value) { + case 'bus_stop': + return Geocode.PlaceType.BUS_STOP; + case 'motorway': + return Geocode.PlaceType.MOTORWAY; + default: + return Geocode.PlaceType.STREET; + } + case 'railway': + switch (value) { + case 'station': + case 'stop': + case 'halt': + return Geocode.PlaceType.RAILWAY_STATION; + case 'tram_stop': + return Geocode.PlaceType.LIGHT_RAIL_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'aeroway': + switch (value) { + case 'aerodrome': + return Geocode.PlaceType.AIRPORT; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'building': + switch (value) { + case 'yes': + return Geocode.PlaceType.BUILDING; + case 'railway_station': + return Geocode.PlaceType.RAILWAY_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + default: + return Geocode.PlaceType.MISCELLANEOUS; + } +} diff --git a/src/place.js b/src/place.js new file mode 100644 index 00000000..675e3320 --- /dev/null +++ b/src/place.js @@ -0,0 +1,524 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Overpass = imports.overpass; +const Translations = imports.translations; +const Utils = imports.utils; + +// Matches coordinates string in 'Decimal Degrees' format +const DECIMAL_COORDINATES_REGEX = ( + /^\s*(\-?\d+(?:\.\d+)?)°?\s*,\s*(\-?\d+(?:\.\d+)?)°?\s*$/ +); + +// Matches coordinates string in 'Degrees, Minutes, Seconds' format +const DMS_COORDINATES_REGEX = new RegExp( + /^\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(N|S)\s*,?/.source + + /\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(W|E)\s*$/.source, + "i" +); + +// Matches a URL pointing to an object in OpenStreetMap +const OSM_OBJECT_URL_REGEX = + new RegExp(/https?:\/\/(www\.)?openstreetmap\.org\/(node|way|relation)\/(\d+)\/?$/); + +// Matches a URL with a specifies coordinate in OpenStreetMap +const OSM_COORD_URL_REGEX = + new RegExp(/https?:\/\/(www\.)?openstreetmap\.org\/?\?(\&?mlat=(\d+(?:\.\d+)?))?(\&mlon=(\d+(?:\.\d+)?))?(\&zoom=(\d+))?(\#map=(\d+)\/(\d+(?:\.\d+)?)\/(\d+(?:\.\d+)?))?/); + +var Place = GObject.registerClass( +class Place extends Geocode.Place { + + _init(params) { + this._isCurrentLocation = params.isCurrentLocation; + delete params.isCurrentLocation; + + this._population = params.population; + delete params.population; + + this._website = params.website; + delete params.website; + + this._phone = params.phone; + delete params.phone; + + this._wiki = params.wiki; + delete params.wiki; + + this._openingHours = params.openingHours; + delete params.openingHours; + + this._internetAccess = params.internetAccess; + delete params.internetAccess; + + this._religion = params.religion; + delete params.religion; + + this._toilets = params.toilets; + delete params.toilets; + + this._note = params.note; + delete params.note; + + this._initialZoom = params.initialZoom; + delete params.initialZoom; + + /* set to true if the instance is pre-filled with Overpass data, + * at the time of creation, as will be the case when loading a place + * from an OSM object URL + */ + this._prefilled = params.prefilled; + delete params.prefilled; + + /* Determines if the place should be added to the place store */ + if (typeof(params.store) === 'undefined') { + this._store = true; + } else { + this._store = params.store; + delete params.store; + } + + this._wheelchair = params.wheelchair; + delete params.wheelchair; + + if (params.place) { + params = { osm_id: params.place.osm_id, + osm_type: params.place.osm_type, + name: params.place.name, + location: params.place.location, + bounding_box: params.place.bounding_box, + place_type: params.place.place_type, + street_address: params.place.street_address, + street: params.place.street, + building: params.place.building, + postal_code: params.place.postal_code, + area: params.place.area, + town: params.place.town, + state: params.place.state, + county: params.place.county, + country: params.place.country, + country_code: params.place.contry_code, + continent: params.place.continent }; + } + + for (let prop in params) + if (!params[prop]) + delete params[prop]; + + super._init(params); + } + + set store(v) { + this._store = v; + } + + get store() { + return this._store; + } + + get uniqueID() { + return this.osm_type + '-' + this.osm_id; + } + + get isCurrentLocation() { + return this._isCurrentLocation; + } + + set population(v) { + this._population = v; + } + + get population() { + return this._population; + } + + set website(v) { + this._website = v; + } + + get website() { + return this._website; + } + + set phone(v) { + this._phone = v; + } + + get phone() { + return this._phone; + } + + set wiki(v) { + this._wiki = v; + } + + get wiki() { + return this._wiki; + } + + set openingHours(v) { + this._openingHours = v; + } + + get openingHours() { + return this._openingHours; + } + + set internetAccess(v) { + this._internetAccess = v; + } + + get openingHoursTranslated() { + return Translations.translateOpeningHours(this._openingHours); + } + + get internetAccess() { + return this._internetAccess; + } + + get internetAccessTranslated() { + return Translations.translateInternetAccess(this._internetAccess); + } + + set religion(v) { + this._religion = v; + } + + get religion() { + return this._religion; + } + + get religionTranslated() { + return Translations.translateReligion(this._religion); + } + + set toilets(v) { + this._toilets = v; + } + + get toilets() { + return this._toilets; + } + + get toiletsTranslated() { + return Translations.translateYesNo(this._toilets); + } + + set note(v) { + this._note = v; + } + + get note() { + return this._note; + } + + set wheelchair(v) { + this._wheelchair = v; + } + + get wheelchair() { + return this._wheelchair; + } + + get wheelchairTranslated() { + return this._translateWheelchair(this._wheelchair); + } + + get initialZoom() { + return this._initialZoom; + } + + get prefilled() { + return this._prefilled; + } + + set prefilled(prefilled) { + this._prefilled = prefilled; + } + + _translateWheelchair(string) { + switch(string) { + /* Translators: + * This means wheelchairs have full unrestricted access. + */ + case 'yes': return _("yes"); + + /* Translators: + * This means wheelchairs have partial access (e.g some areas + * can be accessed and others not, areas requiring assistance + * by someone pushing up a steep gradient). + */ + case 'limited': return _("limited"); + + /* Translators: + * This means wheelchairs have no unrestricted access + * (e.g. stair only access). + */ + case 'no': return _("no"); + + /* Translators: + * This means that the way or area is designated or purpose built + * for wheelchairs (e.g. elevators designed for wheelchair access + * only). This is rarely used. + */ + case 'designated': return _("designated"); + + default: return null; + } + } + + + toJSON() { + let bounding_box = null; + + if (this.bounding_box) { + bounding_box = { top: this.bounding_box.top, + bottom: this.bounding_box.bottom, + left: this.bounding_box.left, + right: this.bounding_box.right }; + } + + let location = { latitude: this.location.latitude, + longitude: this.location.longitude, + altitude: this.location.altitude, + accuracy: this.location.accuracy }; + + return { id: this.osm_id, + osm_type: this.osm_type, + place_type: this.place_type, + name: this.name, + bounding_box: bounding_box, + this_type: this.this_type, + location: location, + street_address: this.street_address, + street: this.street, + building: this.building, + postal_code: this.postal_code, + area: this.area, + town: this.town, + state: this.state, + county: this.county, + country: this.country, + country_code: this.contry_code, + continent: this.continent, + population: this.population, + website: this.website, + phone: this.phone, + wiki: this.wiki, + wheelchair: this.wheelchair, + openingHours: this.openingHours, + internetAccess: this.internetAccess, + religion: this.religion, + toilets: this.toilets, + note: this.note }; + } + + match(searchString) { + let name = this.name; + if (!name) + return false; + + searchString = Utils.normalizeString(searchString); + if (searchString === null) + return false; + + if (searchString.length === 0) + return true; + + name = Utils.normalizeString(name); + if (name === null) + return false; + + /* the search method takes a regex, make sure we have a valid one */ + try { + return name.toLowerCase().search(searchString.toLowerCase()) !== -1; + } catch(e) { + /* not valid regex */ + return false; + } + } +}); + +Place.fromJSON = function(obj) { + let props = { }; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'id': + props.osm_id = prop; + break; + + case 'location': + props.location = new Location.Location(prop); + break; + + case 'bounding_box': + if (prop) + props.bounding_box = new Geocode.BoundingBox(prop); + break; + + default: + if (prop !== null && prop !== undefined) + props[key] = prop; + break; + } + } + return new Place(props); +}; + +Place.validateCoordinates = function(lat, lon) { + return lat <= 90 && lat >= -90 && lon <= 180 && lon >= -180; +}; + +Place.parseDecimalCoordinates = function(text) { + let match = text.match(DECIMAL_COORDINATES_REGEX); + + if (match) { + let latitude = parseFloat(match[1]); + let longitude = parseFloat(match[2]); + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseDmsCoordinates = function(text) { + let match = text.match(DMS_COORDINATES_REGEX); + + if (match) { + let degrees = parseFloat(match[1]); + let minutes = parseFloat(match[2]); + let seconds = parseFloat(match[3]); + let latitude = degrees + minutes / 60 + seconds / 3600; + + if (match[4].toUpperCase() === "S") + latitude *= -1; + + degrees = parseFloat(match[5]); + minutes = parseFloat(match[6]); + seconds = parseFloat(match[7]); + let longitude = degrees + minutes / 60 + seconds / 3600; + + if (match[8].toUpperCase() === "W") + longitude *= -1; + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseCoordinates = function(text) { + let coords = Place.parseDecimalCoordinates(text) || + Place.parseDmsCoordinates(text); + + if (coords && Place.validateCoordinates(coords[0], coords[1])) { + return new Location.Location({ latitude: coords[0], + longitude: coords[1] }); + } else { + return null; + } +}; + +let overpass = null; + +/* we can't import Application before the Place class has been defined + * since it's used via PlaceStore + */ +const Application = imports.application; + +function _parseOSMObjectURL(match, callback) { + let [,, type, id] = match; + let storedPlace = Application.placeStore.existsWithOsmTypeAndId(type, id); + + if (storedPlace) { + callback(storedPlace, null); + return; + } + + if (overpass === null) + overpass = new Overpass.Overpass(); + + Application.application.mark_busy(); + overpass.fetchPlace(type, id, (place) => { + Application.application.unmark_busy(); + if (place) + callback(place, null); + else + callback(null, _("Place not found in OpenStreetMap")); + }); +} + +function _parseOSMCoordURL(match, callback) { + let [,,,mlat,,mlon,,zoom,,mapZoom,mapLat, mapLon] = match; + let lat; + let lon; + let z; + + if (mapZoom && mapLat && mapLon) { + lat = mapLat; + lon = mapLon; + z = mapZoom; + } else if (mlat && mlon) { + lat = mlat; + lon = mlon; + if (zoom) + z = zoom; + } else { + callback(null, _("OpenStreetMap URL is not valid")); + return; + } + + if (!Place.validateCoordinates(lat, lon)) { + callback(null, _("Coordinates in URL are not valid")); + return; + } + + let location = new Location.Location({ latitude: lat, longitude: lon }); + let place = z ? new Place({ location: location, initialZoom: z }) : + new Place({ location: location }); + + callback(place, null); +} + +function parseHttpURL(text, callback) { + let match = text.match(OSM_OBJECT_URL_REGEX); + + if (match) { + _parseOSMObjectURL(match, callback); + } else { + match = text.match(OSM_COORD_URL_REGEX); + if (match) + _parseOSMCoordURL(match, callback); + else + callback(null, _("URL is not supported")); + } +} + diff --git a/src/placeBubble.js b/src/placeBubble.js new file mode 100644 index 00000000..19e4082b --- /dev/null +++ b/src/placeBubble.js @@ -0,0 +1,361 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Format = imports.format; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const MapBubble = imports.mapBubble; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMUtils = imports.osmUtils; +const Overpass = imports.overpass; +const Place = imports.place; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +// maximum dimension of thumbnails to fetch from Wikipedia +const THUMBNAIL_FETCH_SIZE = 128; +// final scaled size of cropped thumnail +const THUMBNAIL_FINAL_SIZE = 70; + +var PlaceBubble = GObject.registerClass({ + Properties: { + 'overpass-place': GObject.ParamSpec.object('overpass-place', + 'Overpass Place', + 'The place as filled in by Overpass', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceBubble extends MapBubble.MapBubble { + + _init(params) { + let ui = Utils.getUIObject('place-bubble', [ 'stack', + 'box-content', + 'grid-content', + 'label-title', + 'edit-button', + 'expand-button', + 'expanded-content', + 'content-revealer']); + params.buttons = (MapBubble.Button.ROUTE | + MapBubble.Button.SEND_TO); + + if (params.place.store) + params.buttons |= MapBubble.Button.FAVORITE; + + super._init(params); + + Utils.load_icon(this.place.icon, 48, (pixbuf) => this.image.pixbuf = pixbuf); + + this._stack = ui.stack; + this._title = ui.labelTitle; + this._boxContent = ui.boxContent; + this._gridContent = ui.gridContent; + this._editButton = ui.editButton; + this._expandButton = ui.expandButton; + this._expandedContent = ui.expandedContent; + this._revealer = ui.contentRevealer; + + let overpass = new Overpass.Overpass(); + + /* use a property binding from the Overpass instance to avoid + * accessing accessing this object after the underlying GObject has + * been finalized */ + overpass.bind_property('place', this, 'overpass-place', + GObject.BindingFlags.DEFAULT); + this.connect('notify::overpass-place', () => this._onInfoAdded()); + + if (Application.placeStore.exists(this.place, null)) { + + // If the place is stale, update from Overpass. + if (Application.placeStore.isStale(this.place)) { + overpass.addInfo(this.place); + } else { + let place = Application.placeStore.get(this.place); + this._populate(place); + } + } else if (this.place.store && !this.place.prefilled) { + overpass.addInfo(this.place); + } else { + this._populate(this.place); + } + this.content.add(this._stack); + + let osm_id = this.place.osm_id; + if (this.place instanceof ContactPlace.ContactPlace || !osm_id) + this._editButton.visible = false; + else + this._initEditButton(); + + this._initExpandButton(); + } + + _onInfoAdded() { + this._populate(this.place); + if (Application.placeStore.exists(this.place, null)) + Application.placeStore.updatePlace(this.place); + else + Application.placeStore.addPlace(this.place, PlaceStore.PlaceType.RECENT); + } + + _formatWikiLink(wiki) { + let lang = Wikipedia.getLanguage(wiki); + let article = Wikipedia.getArticle(wiki); + + return Format.vprintf('https://%s.wikipedia.org/wiki/%s', [ lang, article ]); + } + + /* + * Create an array of all content to be showed when expanding the place + * bubble + */ + _createExpandedContent(place) { + let expandedContent = []; + + if (place.population) { + expandedContent.push({ label: _("Population:"), + info: place.population }); + } + + if (place.location.altitude > 0) { + let alt = place.location.altitude; + expandedContent.push({ label: _("Altitude:"), + info: Utils.prettyDistance(alt, true) }); + } + + if (place.openingHours) { + expandedContent.push({ label: _("Opening hours:"), + info: place.openingHoursTranslated }); + } + + if (place.internetAccess) { + expandedContent.push({ label: _("Internet access:"), + info: place.internetAccessTranslated }); + } + + if (place.religion) { + expandedContent.push({ label: _("Religion:"), + info: place.religionTranslated }); + } + + if (place.toilets) { + expandedContent.push({ label: _("Toilets:"), + info: place.toiletsTranslated }); + } + + if (place.wheelchair) { + expandedContent.push({ label: _("Wheelchair access:"), + info: place.wheelchairTranslated }); + } + + if (place.phone) { + if (Utils.uriSchemeSupported('tel')) { + expandedContent.push({ label: _("Phone:"), + linkText: place.phone, + linkUrl: 'tel:%s'.format(place.phone) }); + } else { + expandedContent.push({ label: _("Phone:"), + info: place.phone }); + } + } + + if (place.wiki) { + let link = this._formatWikiLink(place.wiki); + expandedContent.push({ linkText: _("Wikipedia"), + linkUrl: link}); + } + + return expandedContent; + } + + _attachContent(content, expandedContent) { + content.forEach((info) => { + let label = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + halign: Gtk.Align.START }); + this._boxContent.pack_start(label, false, true, 0); + }); + + expandedContent.forEach(({ label, linkUrl, linkText, info }, row) => { + let widget; + + if (label) { + widget = new Gtk.Label({ label: label.italics(), + visible: true, + use_markup: true, + yalign: 0, + halign: Gtk.Align.START }); + this._expandedContent.attach(widget, 0, row, 1, 1); + } + + if (linkUrl) { + let uri = GLib.markup_escape_text(linkUrl, -1); + /* double-escape the tooltip text, as GTK+ treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + info = '%s'.format(uri, + tooltipText, + linkText); + } + + widget = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + max_width_chars: 25, + wrap: true, + halign: Gtk.Align.START }); + + if(label) + this._expandedContent.attach(widget, 1, row, 1, 1); + else + // Expand over both columns if this row has no label + this._expandedContent.attach(widget, 0, row, 2, 1); + }); + } + + _populate(place) { + let formatter = new PlaceFormatter.PlaceFormatter(place); + + let content = formatter.rows.map((row) => { + row = row.map(function(prop) { + return GLib.markup_escape_text(place[prop], -1); + }); + return row.join(', '); + }); + let expandedContent = this._createExpandedContent(place); + + this._attachContent(content, expandedContent); + + let title = GLib.markup_escape_text(formatter.title, -1); + if (place.website) { + let uri = GLib.markup_escape_text(place.website, -1); + this._title.label = '%s'.format(uri, title); + } else { + this._title.label = title; + } + this._expandButton.visible = expandedContent.length > 0; + this._stack.visible_child = this._gridContent; + + if (place.wiki) + this._requestWikipediaThumbnail(place.wiki); + } + + _requestWikipediaThumbnail(wiki) { + Wikipedia.fetchArticleThumbnail(wiki, THUMBNAIL_FETCH_SIZE, + this._onThumbnailComplete.bind(this)); + } + + _onThumbnailComplete(thumbnail) { + if (thumbnail) { + this.thumbnail.pixbuf = this._cropAndScaleThumbnail(thumbnail); + this.iconStack.visible_child_name = 'thumbnail'; + } + } + + // returns a cropped square-shaped thumbnail + _cropAndScaleThumbnail(thumbnail) { + let width = thumbnail.get_width(); + let height = thumbnail.get_height(); + let croppedThumbnail; + + if (width > height) { + let x = (width - height) / 2; + croppedThumbnail = thumbnail.new_subpixbuf(x, 0, height, height); + } else { + let y = (height - width) / 2; + croppedThumbnail = thumbnail.new_subpixbuf(0, y, width, width); + } + + return croppedThumbnail.scale_simple(THUMBNAIL_FINAL_SIZE, + THUMBNAIL_FINAL_SIZE, + GdkPixbuf.InterpType.BILINEAR); + } + + // clear the view widgets to be able to re-populate an updated place + _clearView() { + this._boxContent.get_children().forEach((child) => child.destroy()); + this._expandedContent.get_children().forEach((child) => child.destroy()); + } + + _initEditButton() { + this._editButton.visible = true; + this._editButton.connect('clicked', this._onEditClicked.bind(this)); + } + + _initExpandButton() { + let image = this._expandButton.get_child(); + + this._expandButton.connect('clicked', (function() { + this._revealer.reveal_child = !this._revealer.child_revealed; + }).bind(this)); + } + + _onEditClicked() { + let osmEdit = Application.osmEdit; + /* if the user is not alread signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this.get_toplevel(), true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._edit(); + }); + + return; + } + + this._edit(); + } + + _edit() { + let osmEdit = Application.osmEdit; + let dialog = osmEdit.createEditDialog(this.get_toplevel(), this._place); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + + switch (response) { + case OSMEditDialog.Response.UPLOADED: + // update place + let object = osmEdit.object; + OSMUtils.updatePlaceFromOSMObject(this._place, object); + // refresh place view + this._clearView(); + this._populate(this._place); + break; + default: + break; + } + }); + } +}); diff --git a/src/placeEntry.js b/src/placeEntry.js new file mode 100644 index 00000000..1e22e39f --- /dev/null +++ b/src/placeEntry.js @@ -0,0 +1,306 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013,2014 Jonas Danielsson, Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + * Mattias Bengtsson + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const PlacePopover = imports.placePopover; +const Utils = imports.utils; + +// minimum number of characters to start completion +const MIN_CHARS_COMPLETION = 3; + +// pattern matching CJK ideographic characters +const IDEOGRAPH_PATTERN = /[\u3300-\u9fff]/ + +var PlaceEntry = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceEntry extends Gtk.SearchEntry { + + set place(p) { + if (!this._place && !p) + return; + + /* if this entry belongs to a routing query entry, don't notify when + * setting the same place, otherwise it will trigger twice when + * initiating from the context menu + */ + if (!this._matchRoute && this._place && p && this._locEquals(this._place, p)) + return; + + if (p) { + if (p.name) { + this._placeText = p.name; + } else + this._placeText = p.location.latitude + ', ' + p.location.longitude; + } else + this._placeText = ''; + + this.text = this._placeText; + + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } + + get popover() { + return this._popover; + } + + _init(props) { + let numVisible = props.num_visible || 6; + delete props.num_visible; + this._mapView = props.mapView; + delete props.mapView; + + if (!props.loupe) + props.primary_icon_name = null; + delete props.loupe; + + let maxChars = props.maxChars; + delete props.maxChars; + + this._matchRoute = props.matchRoute || false; + delete props.matchRoute; + + super._init(props); + + this._filter = new Gtk.TreeModelFilter({ child_model: Application.placeStore }); + this._filter.set_visible_func(this._completionVisibleFunc.bind(this)); + + this._popover = this._createPopover(numVisible, maxChars); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + + this._cache = {}; + + // clear cache when view moves, as result are location-dependent + this._mapView.view.connect('notify::latitude', () => this._cache = {}); + } + + _onSearchChanged() { + if (this._parse()) + return; + + // wait for an ongoing search + if (this._cancellable) + return; + + /* start search if more than the threashold number of characters have + * been entered, or if the first character is in the ideographic CJK + * block, as for these, shorter strings could be meaningful + */ + if ((this.text.length >= MIN_CHARS_COMPLETION || + (this.text.length > 0 && this.text[0].match(IDEOGRAPH_PATTERN))) && + this.text !== this._placeText) { + let cachedResults = this._cache[this.text]; + + if (cachedResults) { + this._updateResults(cachedResults); + } else { + // if no previous search has been performed, show spinner + if (!this._previousSearch || + this._previousSearch.length < MIN_CHARS_COMPLETION || + this._placeText) { + this._popover.showSpinner(); + } + this._placeText = ''; + this._doSearch(); + } + } else { + this._popover.hide(); + if (this.text.length === 0) + this.place = null; + this._previousSearch = null; + } + } + + _locEquals(placeA, placeB) { + if (!placeA.location || !placeB.location) + return false; + + return (placeA.location.latitude === placeB.location.latitude && + placeA.location.longitude === placeB.location.longitude); + } + + _createPopover(numVisible, maxChars) { + let popover = new PlacePopover.PlacePopover({ num_visible: numVisible, + relative_to: this, + maxChars: maxChars}); + + this.connect('size-allocate', (widget, allocation) => { + // Magic number to make the alignment pixel perfect. + let width_request = allocation.width + 20; + // set at least 320 px width to avoid too narrow in the sidebar + popover.width_request = Math.max(width_request, 320); + }); + + popover.connect('selected', (widget, place) => { + this.place = place; + popover.hide(); + }); + + return popover; + } + + _completionVisibleFunc(model, iter) { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + if (type !== PlaceStore.PlaceType.CONTACT && + type !== PlaceStore.PlaceType.RECENT_ROUTE || + (!this._matchRoute && type === PlaceStore.PlaceType.RECENT_ROUTE)) + return false; + + if (place !== null) + return place.match(this.text); + else + return false; + } + + _parse() { + let parsed = false; + + if (this.text.startsWith('geo:')) { + let location = new Geocode.Location(); + + try { + location.set_from_uri(this.text); + this.place = new Place.Place({ location: location }); + } catch(e) { + let msg = _("Failed to parse Geo URI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + } + + parsed = true; + } + + let parsedLocation = Place.Place.parseCoordinates(this.text); + if (parsedLocation) { + this.place = new Place.Place({ location: parsedLocation }); + parsed = true; + } + + if (this.text.startsWith('http://') || + this.text.startsWith('https://')) { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = null; + Place.parseHttpURL(this.text, (place, error) => { + if (place) + this.place = place; + else + Utils.showDialog(error, + Gtk.MessageType.ERROR, this.get_toplevel()); + }); + + /* don't cancel ongoing search, as we have started an async + * operation looking up the OSM object + */ + return true; + } + + if (parsed && this._cancellable) + this._cancellable.cancel(); + + return parsed; + } + + _doSearch() { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = new Gio.Cancellable(); + this._previousSearch = this.text; + GeocodeFactory.getGeocoder().search(this.text, + this._mapView.view.latitude, + this._mapView.view.longitude, + this._cancellable, + (places, error) => { + this._cancellable = null; + this._updateResults(places); + + // cache results for later + this._cache[this.text] = places; + + // if search input has been updated, trigger a refresh + if (this.text !== this._previousSearch) + this._onSearchChanged(); + }); + } + + _updateResults(places) { + if (!places) { + this.place = null; + this._popover.showNoResult(); + return; + } + + let completedPlaces = []; + + + this._filter.refilter(); + this._filter.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + completedPlaces.push({ place: place, type: type }); + }); + + let placeStore = Application.placeStore; + + places.forEach((place) => { + let type; + + if (placeStore.exists(place, PlaceStore.PlaceType.RECENT)) + type = PlaceStore.PlaceType.RECENT; + else if (placeStore.exists(place, PlaceStore.PlaceType.FAVORITE)) + type = PlaceStore.PlaceType.FAVORITE; + else + type = PlaceStore.PlaceType.ANY; + + completedPlaces.push({ place: place, type: type }); + }); + + this._popover.updateResult(completedPlaces, this.text); + this._popover.showResult(); + } +}); diff --git a/src/placeFormatter.js b/src/placeFormatter.js new file mode 100644 index 00000000..49291ec3 --- /dev/null +++ b/src/placeFormatter.js @@ -0,0 +1,117 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; + +const StoredRoute = imports.storedRoute; + +var PlaceFormatter = class PlaceFormatter { + + constructor(place) { + this._place = place; + this._rows = []; + this._titleProperty = 'name'; + + this._update(); + } + + get place() { + return this._place; + } + + get title() { + let title; + // For the 'name' property we split after comma to avoid + // duplicating information in the title from the Geocode + // display name. + if (this._titleProperty === 'name') + title = this._place[this._titleProperty].split(',')[0]; + else + title = this.place[this._titleProperty]; + + return title; + } + + get rows() { + return this._rows; + } + + getDetailsString() { + if (this._place instanceof StoredRoute.StoredRoute) + return this._place.viaString; + + return this.rows.map((row) => { + return row.map((prop) => { + return this._place[prop]; + }).join(', '); + }).join(', '); + } + + _update() { + switch (this._place.place_type) { + case Geocode.PlaceType.COUNTRY: + if (this._place.country) + this._titleProperty = 'country'; + + this._addRow(['country_code']); + break; + + case Geocode.PlaceType.STATE: + if (this._place.state) + this._titleProperty = 'state'; + break; + + case Geocode.PlaceType.COUNTY: + if (this._place.county) + this._titleProperty = 'county'; + break; + + case Geocode.PlaceType.TOWN: + if (this._place.town) + this._titleProperty = 'town'; + + if (this._place.county) + this._addRow(['county']); + else if (this._place.state) + this._addRow(['state']); + else if (this._place.area) + this._addRow(['area']); + break; + + default: + if (this._place.street_address) + this._addRow(['street_address']); + else if (this._place.street) + this._addRow(['street']); + + if (this._place.town !== this._place[this._titleProperty]) + this._addRow(['postal_code', 'town']); + break; + } + } + + _addRow(properties) { + properties = properties.filter((prop) => this._place[prop] ? true : false); + + if (properties.length > 0) + this._rows.push(properties); + } +}; diff --git a/src/placeListRow.js b/src/placeListRow.js new file mode 100644 index 00000000..836c36fb --- /dev/null +++ b/src/placeListRow.js @@ -0,0 +1,90 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +var ROW_HEIGHT = 55; + +var PlaceListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-list-row.ui', + InternalChildren: [ 'icon', + 'name', + 'details', + 'typeIcon' ], +}, class PlaceListRow extends Gtk.ListBoxRow { + + _init(params) { + let place = params.place; + delete params.place; + + let searchString = params.searchString || ''; + delete params.searchString; + + this._maxChars = params.maxChars || 40; + delete params.maxChars; + + let type = params.type; + delete params.type; + + params.height_request = ROW_HEIGHT; + super._init(params); + this.update(place, type, searchString); + } + + update(place, type, searchString) { + this.place = place; + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this.title = formatter.title; + let markup = GLib.markup_escape_text(formatter.title, -1); + + this._name.label = this._boldMatch(markup, searchString); + this._details.max_width_chars = this._maxChars; + this._details.label = GLib.markup_escape_text(formatter.getDetailsString(),-1); + this._icon.gicon = place.icon; + + if (type === PlaceStore.PlaceType.RECENT || + type === PlaceStore.PlaceType.RECENT_ROUTE) + this._typeIcon.icon_name = 'document-open-recent-symbolic'; + else if (type === PlaceStore.PlaceType.FAVORITE) + this._typeIcon.icon_name = 'starred-symbolic'; + else if (type === PlaceStore.PlaceType.CONTACT) + this._typeIcon.icon_name = 'avatar-default-symbolic'; + else + this._typeIcon.icon_name = null; + } + + _boldMatch(title, string) { + let canonicalString = Utils.normalizeString(string).toLowerCase(); + let canonicalTitle = Utils.normalizeString(title).toLowerCase(); + + let index = canonicalTitle.indexOf(canonicalString); + + if (index !== -1) { + let substring = title.substring(index, index + string.length); + title = title.replace(substring, substring.bold()); + } + return title; + } +}); diff --git a/src/placeMarker.js b/src/placeMarker.js new file mode 100644 index 00000000..86e068c0 --- /dev/null +++ b/src/placeMarker.js @@ -0,0 +1,48 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; +const PlaceBubble = imports.placeBubble; + +var PlaceMarker = GObject.registerClass( +class PlaceMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this.add_actor(this._actorFromIconName('mark-location', 32)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: this.height - 3 }; + } + + _createBubble() { + if (this.place.name) { + return new PlaceBubble.PlaceBubble({ place: this.place, + mapView: this._mapView }); + } else + return null; + } +}); diff --git a/src/placePopover.js b/src/placePopover.js new file mode 100644 index 00000000..75d1382a --- /dev/null +++ b/src/placePopover.js @@ -0,0 +1,136 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; +const SearchPopover = imports.searchPopover; + +const _PLACE_ICON_SIZE = 20; + +var PlacePopover = GObject.registerClass({ + Signals : { + 'selected' : { param_types: [ GObject.TYPE_OBJECT ] } + }, + Template: 'resource:///org/gnome/Maps/ui/place-popover.ui', + InternalChildren: [ 'scrolledWindow', + 'stack', + 'spinner', + 'list', + 'noResultsLabel' ], +}, class PlacePopover extends SearchPopover.SearchPopover { + + _init(props) { + let numVisible = props.num_visible; + delete props.num_visible; + + this._maxChars = props.maxChars; + delete props.maxChars; + + props.transitions_enabled = false; + super._init(props); + + this._entry = this.relative_to; + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.place); + }); + + this._list.set_header_func((row, before) => { + let header = new Gtk.Separator(); + if (before) + row.set_header(header); + else + row.set_header(null); + }); + + let rowHeight = PlaceListRow.ROW_HEIGHT; + this._scrolledWindow.min_content_height = numVisible * rowHeight + 6; + + // This silents warning at Maps exit about this widget being + // visible but not mapped. + this.connect('unmap', (popover) => popover.hide()); + } + + showSpinner() { + this._spinner.start(); + this._stack.visible_child = this._spinner; + + if (!this.visible) + this.show(); + } + + showResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._scrolledWindow; + + let row = this._list.get_row_at_index(0); + if (row) + this._list.select_row(row); + + if (!this.visible) + this.show(); + } + + showNoResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._noResultsLabel; + } + + updateResult(places, searchString) { + let i = 0; + + places.forEach((p) => { + let row = this._list.get_row_at_index(i); + + // update existing row, if there is one, otherwise create new + if (row) + row.update(p.place, p.type, searchString); + else + this._addRow(p.place, p.type, searchString); + + i++; + }); + + // remove remaining rows + let row = this._list.get_row_at_index(i); + + while (row) { + row.destroy(); + row = this._list.get_row_at_index(i); + } + } + + _addRow(place, type, searchString) { + let row = new PlaceListRow.PlaceListRow({ place: place, + searchString: searchString, + type: type, + maxChars: this._maxChars, + can_focus: true }); + this._list.add(row); + } +}); diff --git a/src/placeStore.js b/src/placeStore.js new file mode 100644 index 00000000..7d05dc2b --- /dev/null +++ b/src/placeStore.js @@ -0,0 +1,343 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const Place = imports.place; +const StoredRoute = imports.storedRoute; +const Utils = imports.utils; + +const _PLACES_STORE_FILE = 'maps-places.json'; +const _ICON_SIZE = 20; +const _ONE_DAY = 1000 * 60 * 60 * 24; // one day in ms +const _STALE_THRESHOLD = 7; // mark the osm information as stale after a week + +var PlaceType = { + ANY: -1, + RECENT: 0, + FAVORITE: 1, + CONTACT: 2, + RECENT_ROUTE: 3 +}; + +var Columns = { + PLACE_ICON: 0, + PLACE: 1, + NAME: 2, + TYPE: 3, + ADDED: 4 +}; + +var PlaceStore = GObject.registerClass( +class PlaceStore extends Gtk.ListStore { + + _init(params) { + this._recentPlacesLimit = params.recentPlacesLimit; + delete params.recentPlacesLimit; + + this._recentRoutesLimit = params.recentRoutesLimit; + delete params.recentRoutesLimit; + + this._numRecentPlaces = 0; + this._numRecentRoutes = 0; + this.filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _PLACES_STORE_FILE]); + this._typeTable = {}; + + super._init(params); + this.set_column_types([GdkPixbuf.Pixbuf, + GObject.TYPE_OBJECT, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_DOUBLE]); + + this.set_sort_column_id(Columns.ADDED, Gtk.SortType.ASCENDING); + } + + _addPlace(place, type) { + this._setPlace(this.append(), place, type, new Date().getTime()); + this._store(); + } + + _addContact(place) { + if (this.exists(place, PlaceType.CONTACT)) { + return; + } + + this._addPlace(place, PlaceType.CONTACT); + } + + _addFavorite(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.FAVORITE)) { + return; + } + + if (this.exists(place, PlaceType.RECENT)) { + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + return p.uniqueID === place.uniqueID; + }, true); + } + this._addPlace(place, PlaceType.FAVORITE); + } + + _addRecent(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.RECENT)) { + this.updatePlace(place); + return; + } + + if (this._numRecentPlaces === this._recentPlacesLimit) { + // Since we sort by added, the oldest recent will be + // the first one we encounter. + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentPlaces--; + return true; + } + return false; + }, true); + } + this._addPlace(place, PlaceType.RECENT); + this._numRecentPlaces++; + } + + _addRecentRoute(stored) { + if (this.exists(stored, PlaceType.RECENT_ROUTE)) + return; + + if (stored.containsCurrentLocation) + return; + + if (this._numRecentRoutes >= this._recentRoutesLimit) { + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT_ROUTE) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentRoutes--; + return true; + } + return false; + }, true); + } + this._addPlace(stored, PlaceType.RECENT_ROUTE); + this._numRecentRoutes++; + } + + load() { + if (!GLib.file_test(this.filename, GLib.FileTest.EXISTS)) + return; + + let buffer = Utils.readFile(this.filename); + if (buffer === null) + return; + try { + let jsonArray = JSON.parse(Utils.getBufferText(buffer)); + jsonArray.forEach(({ place, type, added }) => { + // We expect exception to be thrown in this line when parsing + // gnome-maps 3.14 or below place stores since the "place" + // key is not present. + if (!place.id) + return; + + let p; + if (type === PlaceType.RECENT_ROUTE) { + if (this._numRecentRoutes >= this._recentRoutesLimit) + return; + p = StoredRoute.StoredRoute.fromJSON(place); + this._numRecentRoutes++; + } else { + p = Place.Place.fromJSON(place); + if (type === PlaceType.RECENT) + this._numRecentPlaces++; + } + this._setPlace(this.append(), p, type, added); + }); + } catch (e) { + throw new Error('failed to parse places file'); + } + } + + addPlace(place, type) { + if (type === PlaceType.FAVORITE) + this._addFavorite(place, type); + else if (type === PlaceType.RECENT) + this._addRecent(place, type); + else if (type === PlaceType.CONTACT) + this._addContact(place, type); + else if (type === PlaceType.RECENT_ROUTE) + this._addRecentRoute(place); + } + + removePlace(place, placeType) { + if (!this.exists(place, placeType)) + return; + + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + this._typeTable[place.uniqueID] = null; + return true; + } + return false; + }, true); + this._store(); + } + + getModelForPlaceType(placeType) { + let filter = new Gtk.TreeModelFilter({ child_model: this }); + + filter.set_visible_func((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + return (type === placeType); + }); + + return filter; + } + + _store() { + let jsonArray = []; + this.foreach((model, path, iter) => { + let place = model.get_value(iter, Columns.PLACE); + let type = model.get_value(iter, Columns.TYPE); + let added = model.get_value(iter, Columns.ADDED); + + if (!place || !place.store) + return; + jsonArray.push({ + place: place.toJSON(), + type: type, + added: added + }); + }); + + let buffer = JSON.stringify(jsonArray); + if (!Utils.writeFile(this.filename, buffer)) + log('Failed to write places file!'); + } + + _setPlace(iter, place, type, added) { + this.set(iter, + [Columns.PLACE, + Columns.NAME, + Columns.TYPE, + Columns.ADDED], + [place, + place.name, + type, + added]); + + if (place.icon !== null) { + Utils.load_icon(place.icon, _ICON_SIZE, (pixbuf) => { + this.set(iter, [Columns.ICON], [pixbuf]); + }); + } + this._typeTable[place.uniqueID] = type; + } + + get(place) { + let storedPlace = null; + + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + storedPlace = p; + return true; + } + return false; + }); + return storedPlace; + } + + isStale(place) { + if (!this.exists(place, null)) + return false; + + let added = null; + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let p_type = model.get_value(iter, Columns.TYPE); + added = model.get_value(iter, Columns.ADDED); + } + }); + + let now = new Date().getTime(); + let days = Math.abs(now - added) / _ONE_DAY; + + return (days >= _STALE_THRESHOLD); + } + + exists(place, type) { + if (type !== undefined && type !== null && this._typeTable[place.uniqueID] !== undefined) + return this._typeTable[place.uniqueID] === type; + else + return this._typeTable[place.uniqueID] !== undefined; + } + + existsWithOsmTypeAndId(osmType, osmId) { + let id = osmType + '-' + osmId; + if (this._typeTable[id]) + return this._typeTable[id]; + else + return null; + } + + _removeIf(evalFunc, stop) { + this.foreach((model, path, iter) => { + if (evalFunc(model, iter)) { + this.remove(iter); + if (stop) + return true; + } + return false; + }); + } + + updatePlace(place) { + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let type = model.get_value(iter, Columns.TYPE); + this._setPlace(iter, place, type, new Date().getTime()); + this._store(); + return; + } + }); + } +}); diff --git a/src/printLayout.js b/src/printLayout.js new file mode 100644 index 00000000..5602612b --- /dev/null +++ b/src/printLayout.js @@ -0,0 +1,364 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; +const PangoCairo = imports.gi.PangoCairo; + +const Application = imports.application; +const Color = imports.color; +const MapView = imports.mapView; +const MapSource = imports.mapSource; +const TurnPointMarker = imports.turnPointMarker; +const Utils = imports.utils; + +/* Following constant has unit as meters */ +const _SHORT_LAYOUT_MAX_DISTANCE = 3000; + +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +/* All following constants are ratios of surface size to page size */ +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; + +function newFromRoute(route, pageWidth, pageHeight) { + /* + * To avoid the circular dependencies, imports has + * been carried out in this method + */ + if (route.distance > _SHORT_LAYOUT_MAX_DISTANCE) { + return new imports.longPrintLayout.LongPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } else { + return new imports.shortPrintLayout.ShortPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } +} + +var PrintLayout = GObject.registerClass({ + Abstract: true, + Signals: { + 'render-complete': { } + } +}, class PrintLayout extends GObject.Object { + + _init(params) { + this._pageWidth = params.pageWidth; + delete params.pageWidth; + + this._pageHeight = params.pageHeight; + delete params.pageHeight; + + this._totalSurfaces = params.totalSurfaces; + delete params.totalSurfaces; + + super._init(params); + + this.numPages = 0; + this.surfaceObjects = []; + this._surfacesRendered = 0; + this.renderFinished = false; + this._initSignals(); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + // directional override character to force alignment of labels + this._dirChar = this._rtl ? '\u200F' : '\u200E'; + this._fontDescription = Pango.FontDescription.from_string("sans"); + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + this._createNewPage(); + let dy = 0; + + /* + * Before rendering each surface, page adjustment is done. It is checked if it + * can be adjusted in current page, otherwise a new page is created + */ + dy = headerHeight + headerMargin; + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + dy = mapViewHeight + mapViewMargin; + this._adjustPage(dy); + let turnPointsLength = this._route.turnPoints.length; + let allTurnPoints = this._createTurnPointArray(0, turnPointsLength); + this._drawMapView(mapViewWidth, mapViewHeight, + mapViewZoomLevel, allTurnPoints); + this._cursorY += dy; + } + + _initSignals() { + this.connect('render-complete', () => this.renderFinished = true); + } + + _createMarker(turnPoint) { + return new TurnPointMarker.TurnPointMarker({ + turnPoint: turnPoint, + queryPoint: {} + }); + } + + _drawMapView(width, height, zoomLevel, turnPoints) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let locations = []; + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + view.set_map_source(mapSource); + view.add_layer(markerLayer); + + this._addRouteLayer(view); + + turnPoints.forEach((turnPoint) => { + locations.push(turnPoint.coordinate); + if (turnPoint.isStop()) { + markerLayer.add_marker(this._createMarker(turnPoint)); + } + }); + + view.ensure_visible(this._route.createBBox(locations), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createTurnPointArray(startIndex, endIndex) { + let turnPointArray = []; + for (let i = startIndex; i < endIndex; i++) { + turnPointArray.push(this._route.turnPoints[i]); + } + return turnPointArray; + } + + _addRouteLayer(view) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + view.add_layer(routeLayer); + this._route.path.forEach((node) => routeLayer.add_node(node)); + } + + _drawIcon(cr, iconName, width, height) { + let theme = Gtk.IconTheme.get_default(); + let pixbuf = theme.load_icon(iconName, height, 0); + let iconWidth = pixbuf.width; + let iconHeight = pixbuf.height; + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + this._rtl ? + width - height + (height - iconWidth) / 2 : + (height - iconWidth) / 2, + (height - iconWidth) / 2); + cr.paint(); + } + + _createTextLayout(cr, text, width, height, alignment) { + let layout = PangoCairo.create_layout(cr); + + layout.set_text(this._dirChar + text, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(this._fontDescription); + layout.set_alignment(alignment); + layout.set_ellipsize(Pango.EllipsizeMode.END); + + return layout; + } + + _drawText(cr, text, x, y, width, height, alignment) { + this._drawTextWithColor(cr, text, x, y, width, height, '000000', alignment); + } + + _drawTextWithColor(cr, text, x, y, width, height, color, alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + + this._drawTextLayoutWithColor(cr, layout, x, y, width, height, color, + alignment); + } + + _drawTextLayoutWithColor(cr, layout, x, y, width, height, color, alignment) { + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + cr.moveTo(x, y); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawTextVerticallyCentered(cr, text, width, height, x, alignment) { + this._drawTextVerticallyCenteredWithColor(cr, text, width, height, x, + '000000', alignment); + } + + _drawTextVerticallyCenteredWithColor(cr, text, width, height, x, color, + alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + let [pWidth, pHeight] = layout.get_pixel_size(); + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + // place text centered + cr.moveTo(x, (height - pHeight) / 2); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawInstruction(width, height, turnPoint) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let iconName = turnPoint.iconName; + + if (iconName) { + this._drawIcon(cr, iconName, width, height); + } + + // draw the instruction text + this._drawTextVerticallyCentered(cr, turnPoint.instruction, + width - height * 3, height, + this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + + // draw the distance text + if (turnPoint.distance > 0) { + this._drawTextVerticallyCentered(cr, + Utils.prettyDistance(turnPoint.distance), + height * 2, + height, + this._rtl ? 0 : width - height * 2, + Pango.Alignment.RIGHT); + } + + this._addSurface(surface, x, y, pageNum); + } + + _drawHeader(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let layout = PangoCairo.create_layout(cr); + let from = this._formatQueryPlaceName(0); + let to = this._formatQueryPlaceName(-1); + let header = _("From %s to %s").format(from, to); + let desc = Pango.FontDescription.from_string("sans"); + + layout.set_text(header, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(desc); + layout.set_alignment(Pango.Alignment.CENTER); + PangoCairo.layout_path(cr, layout); + cr.setSourceRGB(0.0,0.0,0.0); + cr.fill(); + + this._addSurface(surface, x, y, pageNum); + } + + _addSurface(surface, x, y, pageNum) { + this.surfaceObjects[pageNum].push({ surface: surface, x: x, y: y }); + this._surfacesRendered++; + if (this._surfacesRendered === this._totalSurfaces) + this.emit('render-complete'); + } + + _adjustPage(dy) { + if (this._cursorY + dy > this._pageHeight) + this._createNewPage(); + } + + _createNewPage() { + this.numPages++; + this.surfaceObjects[this.numPages - 1] = []; + this._cursorX = 0; + this._cursorY = 0; + } + + _formatQueryPlaceName(index) { + let query = Application.routeQuery; + if (index === -1) + index = query.filledPoints.length - 1; + let name; + let place = query.filledPoints[index].place; + if (place.name) { + name = place.name; + if (name.length > 25) + name = name.substr(0, 22) + '\u2026'; + } else { + let lat = place.location.latitude.toFixed(5); + let lon = place.location.latitude.toFixed(5); + name = '%s, %s'.format(lat, lon); + } + + return name; + } +}); diff --git a/src/printOperation.js b/src/printOperation.js new file mode 100644 index 00000000..b3307c0a --- /dev/null +++ b/src/printOperation.js @@ -0,0 +1,119 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const PrintLayout = imports.printLayout; +const TransitPrintLayout = imports.transitPrintLayout; +const Utils = imports.utils; + +const _MIN_TIME_TO_ABORT = 3000; + +var PrintOperation = class PrintOperation { + + constructor(params) { + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._operation = new Gtk.PrintOperation({ embed_page_setup: true }); + this._operation.connect('begin-print', this._beginPrint.bind(this)); + this._operation.connect('paginate', this._paginate.bind(this)); + this._operation.connect('draw-page', this._drawPage.bind(this)); + + this._abortDialog = new Gtk.MessageDialog({ + transient_for: this._mainWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.OTHER, + modal: true, + text: _("Loading map tiles for printing"), + secondary_text: _("You can abort printing if this takes too long") + }); + this._abortDialog.add_button(_("Abort printing"), + Gtk.ResponseType.CANCEL); + this._responseId = this._abortDialog.connect('response', + this.onAbortDialogResponse.bind(this)); + + this._runPrintOperation(); + } + + _beginPrint(operation, context, data) { + let route = Application.routingDelegator.graphHopper.route; + let selectedTransitItinerary = + Application.routingDelegator.transitRouter.plan.selectedItinerary; + let width = context.get_width(); + let height = context.get_height(); + + Mainloop.timeout_add(_MIN_TIME_TO_ABORT, () => { + if (!this._layout.renderFinished) { + this._abortDialog.show(); + } + return false; + }, null); + + if (selectedTransitItinerary) { + this._layout = + new TransitPrintLayout.TransitPrintLayout({ itinerary: selectedTransitItinerary, + pageWidth: width, + pageHeight: height }); + } else { + this._layout = PrintLayout.newFromRoute(route, width, height); + } + this._layout.render(); + } + + onAbortDialogResponse(dialog, response) { + if (response === Gtk.ResponseType.DELETE_EVENT || + response === Gtk.ResponseType.CANCEL) { + this._abortDialog.disconnect(this._responseId); + this._operation.cancel(); + this._abortDialog.close(); + } + } + + _paginate(operation, context) { + if (this._layout.renderFinished) { + operation.set_n_pages(this._layout.numPages); + this._abortDialog.close(); + } + return this._layout.renderFinished; + } + + _drawPage(operation, context, page_num, data) { + let cr = context.get_cairo_context(); + this._layout.surfaceObjects[page_num].forEach((so) => { + cr.setSourceSurface(so.surface, so.x, so.y); + cr.paint(); + }); + } + + _runPrintOperation() { + try { + let result = this._operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, + this._mainWindow); + if (result === Gtk.PrintOperationResult.ERROR) { + let error = this._operation.get_error(); + Utils.debug('Failed to print: %s'.format(error)); + } + } catch(e) { + Utils.debug('Failed to print: %s'.format(e.message)); + } + } +}; diff --git a/src/route.js b/src/route.js new file mode 100644 index 00000000..458ed2b3 --- /dev/null +++ b/src/route.js @@ -0,0 +1,177 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var TurnPointType = { + SHARP_LEFT: 0, + LEFT: 1, + SLIGHT_LEFT: 2, + CONTINUE: 3, + SLIGHT_RIGHT: 4, + RIGHT: 5, + SHARP_RIGHT: 6, + END: 7, + VIA: 8, + ROUNDABOUT: 9, + + // This one is not in GraphHopper, so choose + // a reasonably unlikely number for this + START: 10000, + ELEVATOR: 10001, + UTURN_LEFT: 10002, + UTURN_RIGHT: 10003 +}; + +/* countries/terrotories driving on the left + * source: https://en.wikipedia.org/wiki/Left-_and_right-hand_traffic + */ +const LHT_COUNTRIES = new Set(['AG', 'AI', 'AU', 'BB', 'BD', 'BM', 'BN', 'BS', + 'BT', 'BW', 'CY', 'DM', 'FJ', 'FK', 'GB', 'GB', + 'GD', 'GY', 'HK', 'ID', 'IE', 'IM', 'IN', 'JE', + 'JM', 'JP', 'KE', 'KI', 'KN', 'KY', 'LC', 'LK', + 'LS', 'MO', 'MS', 'MT', 'MU', 'MV', 'MW', 'MY', + 'MZ', 'NA', 'NP', 'NR', 'NZ', 'PG', 'PN', 'PK', + 'SB', 'SC', 'SG', 'SH', 'SR', 'SZ', 'TC', 'TH', + 'TL', 'TO', 'TT', 'TV', 'TZ', 'UG', 'VC', 'VG', + 'VI', 'WS', 'ZA', 'ZM', 'ZW']); + +var Route = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Route extends GObject.Object { + + _init() { + super._init(); + this.reset(); + } + + update({ path, turnPoints, distance, time, bbox }) { + this.path = path; + this.turnPoints = turnPoints; + this.distance = distance; + this.time = time; + this.bbox = bbox || this.createBBox(path); + + this.emit('update'); + } + + reset() { + this.path = []; + this.turnPoints = []; + this.distance = 0; + this.time = 0; + this.bbox = null; + this.emit('reset'); + } + + error(msg) { + this.emit('error', msg); + } + + createBBox(coordinates) { + let bbox = new Champlain.BoundingBox(); + coordinates.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }, this); + return bbox; + } +}); + +var TurnPoint = class TurnPoint { + + constructor({ coordinate, type, distance, instruction, turnAngle }) { + this.coordinate = coordinate; + this._type = type; + this.distance = distance; + this.instruction = instruction; + this.iconName = this._getIconName(turnAngle); + } + + get type() { + return this._type; + } + + isStop() { + return this._type === TurnPointType.START + || this._type === TurnPointType.VIA + || this._type === TurnPointType.END; + } + + _getIconName(turnAngle) { + switch(this._type) { + case TurnPointType.SHARP_LEFT: return 'maps-direction-sharpleft-symbolic'; + case TurnPointType.LEFT: return 'maps-direction-left-symbolic'; + case TurnPointType.SLIGHT_LEFT: return 'maps-direction-slightleft-symbolic'; + case TurnPointType.CONTINUE: return 'maps-direction-continue-symbolic'; + case TurnPointType.SLIGHT_RIGHT: return 'maps-direction-slightright-symbolic'; + case TurnPointType.RIGHT: return 'maps-direction-right-symbolic'; + case TurnPointType.SHARP_RIGHT: return 'maps-direction-sharpright-symbolic'; + case TurnPointType.START: return 'maps-point-start-symbolic'; + case TurnPointType.VIA: return 'maps-point-end-symbolic'; + case TurnPointType.END: return 'maps-point-end-symbolic'; + case TurnPointType.ROUNDABOUT: return this._getRoundaboutIconName(turnAngle); + default: return ''; + } + } + + _getRoundaboutIconName(turnAngle) { + /* + * To map turnAngle with closest roundabout + * turning angle symbol available. The Algorithm + * calculates the minimum of absolute difference + * between turnAngle and the angle of which map + * has turning symbols. + */ + let minDiff = 2 * Math.PI; + let angle = 0; + if (turnAngle === null) + return 'maps-direction-roundabout-symbolic'; + + if (turnAngle < 0) + turnAngle += 2 * Math.PI; + + for (let x = 0; x < 360; x += 45) { + if (Math.abs(turnAngle - (x / 180) * Math.PI) < minDiff) { + minDiff = Math.abs(turnAngle - (x / 180) * Math.PI); + angle = x; + } + } + // use mirrored icon for left-hand traffic when angle is not zero + return 'maps-direction-roundabout-' + angle + + (angle !== 0 && this._isLefthandTraffic() ? '-lht' : '') + + '-symbolic'; + } + + _isLefthandTraffic() { + let country = + Utils.getCountryCodeForCoordinates(this.coordinate.latitude, + this.coordinate.longitude); + + return LHT_COUNTRIES.has(country); + } +}; diff --git a/src/routeEntry.js b/src/routeEntry.js new file mode 100644 index 00000000..ac2e2783 --- /dev/null +++ b/src/routeEntry.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceEntry = imports.placeEntry; +const RouteQuery = imports.routeQuery; + +var Type = { + FROM: 0, + TO: 1, + VIA: 2 +}; + +var RouteEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/route-entry.ui', + Children: [ 'iconEventBox' ], + InternalChildren: [ 'entryGrid', + 'icon', + 'button', + 'buttonImage' ] +}, class RouteEntry extends Gtk.Grid { + + _init(params) { + this._type = params.type; + delete params.type; + + this._point = params.point || null; + delete params.point; + + this._mapView = params.mapView || null; + delete params.mapView; + + super._init(params); + + this.entry = this._createEntry(); + this._entryGrid.add(this.entry); + + // There is no GdkWindow on the widget until it is realized + this._icon.connect('realize', function(icon) { + if (icon.window && icon.window.get_cursor()) + return; + + icon.window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1)); + }); + + switch (this._type) { + case Type.FROM: + let query = Application.routeQuery; + this._buttonImage.icon_name = 'list-add-symbolic'; + this._icon.icon_name = 'maps-point-start-symbolic'; + /* Translators: this is add via location tooltip */ + this._button.tooltip_text = _("Add via location"); + query.connect('notify::points', () => { + this._button.sensitive = query.points.length < RouteQuery.MAX_QUERY_POINTS; + }); + + break; + case Type.VIA: + this._buttonImage.icon_name = 'list-remove-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is remove via location tooltip */ + this._button.tooltip_text = _("Remove via location"); + break; + case Type.TO: + this._buttonImage.icon_name = 'route-reverse-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is reverse route tooltip */ + this._button.tooltip_text = _("Reverse route"); + break; + } + } + + get button() { + return this._button; + } + + get point() { + return this._point; + } + + _createEntry() { + let entry = new PlaceEntry.PlaceEntry({ visible: true, + can_focus: true, + hexpand: true, + receives_default: true, + mapView: this._mapView, + maxChars: 15 }); + if (this._point) { + entry.bind_property('place', + this._point, 'place', + GObject.BindingFlags.BIDIRECTIONAL); + } + + return entry; + } +}); diff --git a/src/routeQuery.js b/src/routeQuery.js new file mode 100644 index 00000000..3b424ec3 --- /dev/null +++ b/src/routeQuery.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; + +const Application = imports.application; +const PlaceStore = imports.placeStore; +const TransitOptions = imports.transitOptions; + +var MAX_QUERY_POINTS = 10; + +var Transportation = { + CAR: 0, + BIKE: 1, + PEDESTRIAN: 2, + TRANSIT: 3, + + toString: function (transportation) { + switch(transportation) { + case Transportation.CAR: return 'car'; + case Transportation.BIKE: return 'bike'; + case Transportation.PEDESTRIAN: return 'foot'; + case Transportation.TRANSIT: return 'transit'; + default: return null; + } + } +}; + +var QueryPoint = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class QueryPoint extends GObject.Object { + + _init() { + this._place = null; + super._init(); + } + + set place(p) { + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } +}); + +var RouteQuery = GObject.registerClass({ + Signals: { + 'reset': { }, + 'point-added': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'point-removed': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'run': { } + }, + Properties: { + 'points': GObject.ParamSpec.object('points', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + GObject.Object), + 'transportation': GObject.ParamSpec.int('transportation', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Transportation.CAR, + Transportation.PEDESTRIAN, + Transportation.CAR, + Transportation.TRANSIT) + } +}, class RouteQuery extends GObject.Object { + + get points() { + return this._points; + } + + set points(points) { + if (points.length > MAX_QUERY_POINTS) + throw new Error('Too many query points'); + this._points = points; + this.notify('points'); + } + + get filledPoints() { + return this.points.filter(function(point) { + return point.place; + }); + } + + get latest() { + return this._latest; + } + + get time() { + return this._time; + } + + /* time to leave or arrive, null implies "Leave now" */ + set time(time) { + this._time = time; + this.notify('points'); + } + + get date() { + return this._date; + } + + /* date to leave or arrive */ + set date(date) { + this._date = date; + /* only notify change when an actual date was set, when resetting time + * time and date (to use "Leave Now" routing) time would be set to null + * triggering an update */ + if (date) + this.notify('points'); + } + + get arriveBy() { + return this._arriveBy; + } + + /* when set to true, the set time and date means arrive by the specified + * time */ + set arriveBy(arriveBy) { + this._arriveBy = arriveBy; + if (this._time) + this.notify('points'); + } + + get transitOptions() { + return this._transitOptions; + } + + set transitOptions(options) { + this._transitOptions = options; + this.notify('points'); + } + + _init(args) { + super._init(args); + this._points = []; + this._time = null; + this._date = null; + this._arriveBy = false; + this._transitOptions = new TransitOptions.TransitOptions(); + this._initTransportation(); + this.reset(); + } + + _initTransportation() { + let transportationType = Application.settings.get_enum('transportation-type'); + + this.transportation = transportationType; + } + + addPoint(index) { + if (this._points.length >= MAX_QUERY_POINTS) + throw new Error('Too many query points'); + let point = new QueryPoint(); + + if (index === -1) + index = this.points.length - 1; + + this._points.splice(index, 0, point); + point.connect('notify::place', () => { + let placeStore = Application.placeStore; + if (point.place) { + if (!placeStore.exists(point.place, null)) { + placeStore.addPlace(point.place, + PlaceStore.PlaceType.RECENT); + } + } + this.notify('points'); + this._latest = point; + }); + this._latest = point; + this.notify('points'); + this.emit('point-added', point, index); + return point; + } + + removePoint(index) { + let removedPoints = this._points.splice(index, 1); + let point = removedPoints ? removedPoints[0] : null; + if (point === this._latest) + this._latest = null; + + if (point) { + this.notify('points'); + this.emit('point-removed', point, index); + } + } + + set transportation(transportation) { + Application.settings.set_enum('transportation-type', transportation); + this._transportation = transportation; + this.notify('transportation'); + this.notify('points'); + } + + get transportation() { + return this._transportation; + } + + reset() { + this.freeze_notify(); + this._points.forEach(function(point) { + point.place = null; + }); + this._latest = null; + this.thaw_notify(); + this.emit('reset'); + } + + isValid() { + if (this.filledPoints.length >= 2 && + this.filledPoints.length === this.points.length) + return true; + else + return false; + } + + toString() { + return "\nPoints: " + this.points + + "\nTransportation: " + this.transportation; + } +}); diff --git a/src/routingDelegator.js b/src/routingDelegator.js new file mode 100644 index 00000000..a3f71101 --- /dev/null +++ b/src/routingDelegator.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GraphHopper = imports.graphHopper; +const TransitRouter = imports.transitRouter; +const RouteQuery = imports.routeQuery; + +const _FALLBACK_TRANSPORTATION = RouteQuery.Transportation.PEDESTRIAN; + +var RoutingDelegator = class RoutingDelegator { + + constructor(params) { + this._query = params.query; + + this._transitRouting = false; + this._graphHopper = new GraphHopper.GraphHopper({ query: this._query }); + this._transitRouter = new TransitRouter.TransitRouter({ query: this._query }); + this._query.connect('notify::points', this._onQueryChanged.bind(this)); + + /* if the query is set to transit mode when it's not available, revert + * to a fallback mode + */ + if (this._query.transportation === RouteQuery.Transportation.TRANSIT && + !this._transitRouter.enabled) { + this._query.transportation = _FALLBACK_TRANSPORTATION; + } + } + + get graphHopper() { + return this._graphHopper; + } + + get transitRouter() { + return this._transitRouter; + } + + set useTransit(useTransit) { + this._transitRouting = useTransit; + } + + reset() { + if (this._transitRouting) + this._transitRouter.plan.reset(); + else + this._graphHopper.route.reset(); + } + + _onQueryChanged() { + if (this._query.isValid()) { + this._query.emit('run'); + if (this._transitRouting) { + this._transitRouter.fetchFirstResults(); + } else { + this._graphHopper.fetchRoute(this._query.filledPoints, + this._query.transportation); + } + } + } +}; diff --git a/src/searchPopover.js b/src/searchPopover.js new file mode 100644 index 00000000..f848c5b5 --- /dev/null +++ b/src/searchPopover.js @@ -0,0 +1,111 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* Abstract search result popover that progagates keypress events from a + focus-taking internal widget to the spawning search entry widget */ +var SearchPopover = GObject.registerClass({ + Abstract: true +}, class SearchPopover extends Gtk.Popover { + + _init(props) { + super._init(props); + + this._entry = this.relative_to; + + // We need to propagate events to the listbox so that we can + // keep typing while selecting a place. But we do not want to + // propagate the 'enter' key press if there is a selection. + this._entry.connect('key-press-event', + this._propagateKeys.bind(this)); + this._entry.connect('button-press-event', () => this._list.unselect_all()); + } + + _propagateKeys(entry, event) { + let keyval = event.get_keyval()[1]; + + if (keyval === Gdk.KEY_Escape) { + this.hide(); + this._list.unselect_all(); + return Gdk.EVENT_STOP; + } + + if (keyval === Gdk.KEY_Return || + keyval === Gdk.KEY_KP_ENTER || + keyval === Gdk.KEY_ISO_Enter) { + + // If we get an 'enter' keypress and we have a selected + // row, we do not want to propagate the event. + let row = this._list.get_selected_row(); + if (this.visible && row) { + row.activate(); + return Gdk.EVENT_STOP; + } else { + return Gdk.EVENT_PROPAGATE; + } + } + + if (keyval === Gdk.KEY_KP_Up || + keyval === Gdk.KEY_Up || + keyval === Gdk.KEY_KP_Down || + keyval === Gdk.KEY_Down) { + + let length = this._list.get_children().length; + if (length === 0) { + return Gdk.EVENT_PROPAGATE; + } + + let direction = (keyval === Gdk.KEY_KP_Up || keyval === Gdk.KEY_Up) ? -1 : 1; + let row = this._list.get_selected_row(); + let idx; + if (!row) { + idx = (direction === 1) ? 0 : length - 1; + } else { + idx = row.get_index() + direction; + } + let inBounds = 0 <= idx && idx < length; + if (inBounds) { + this.show(); + this._selectRow(this._list.get_row_at_index(idx)); + } else { + this._list.unselect_all(); + } + return Gdk.EVENT_STOP; + } + + return Gdk.EVENT_PROPAGATE; + } + + /* Selects given row and ensures that it is visible. */ + _selectRow(row) { + this._list.select_row(row); + let adjustment = this._list.get_adjustment(); + if (adjustment) { + let allocation = row.get_allocation(); + adjustment.clamp_page(allocation.y, allocation.y + allocation.height); + } + } +}); + diff --git a/src/sendToDialog.js b/src/sendToDialog.js new file mode 100644 index 00000000..9c3e9632 --- /dev/null +++ b/src/sendToDialog.js @@ -0,0 +1,262 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const PlaceFormatter = imports.placeFormatter; +const Utils = imports.utils; + +const _WEATHER_APPID = 'org.gnome.Weather'; +const _CLOCKS_APPID = 'org.gnome.clocks'; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _NUM_VISIBLE = 4; + +var SendToDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/send-to-dialog.ui', + InternalChildren: [ 'list', + 'weatherRow', + 'weatherLabel', + 'weatherIcon', + 'clocksRow', + 'clocksLabel', + 'clocksIcon', + 'cancelButton', + 'summaryLabel', + 'summaryUrl', + 'copyButton', + 'emailButton', + 'scrolledWindow' ] +}, class SendToDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + this._location = this._place.location; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._scrolledWindow.min_content_height = 40 * _NUM_VISIBLE; + this.get_header_bar().subtitle = this._place.name; + + this._cancelButton.connect('clicked', + () => this.response(Response.CANCEL)); + + this._list.connect('row-activated', (list, row) => this._activateRow(row)); + + this._list.set_header_func((row, before) => { + let horizontal = Gtk.Orientation.HORIZONTAL; + + if (before) + row.set_header(new Gtk.Separator({ orientation: horizontal })); + else + row.set_header(null); + }); + + this.connect('show', () => { + this._summaryLabel.label = this._getSummary(); + let osmuri = GLib.markup_escape_text(this._getOSMURI(), -1); + this._summaryUrl.label = '%s'.format(osmuri, osmuri); + + this._copyButton.connect('clicked', () => this._copySummary()); + this._emailButton.connect('clicked', () => this._emailSummary()); + }); + + if (GWeather) { + let world = GWeather.Location.get_world(); + let location = this._location; + this._city = world.find_nearest_city(location.latitude, + location.longitude); + /* Translators: The first string is the name of the city, the + second string is the name of the app to add it to */ + let label = _("Add %s to %s"); + + let weatherInfo = Gio.DesktopAppInfo.new(_WEATHER_APPID + '.desktop'); + if (!weatherInfo) { + this._list.remove(this._weatherRow); + } else { + this._weatherLabel.label = label.format(this._city.get_name(), + weatherInfo.get_name()); + this._weatherIcon.icon_name = weatherInfo.get_icon().to_string(); + } + + let clocksInfo = Gio.DesktopAppInfo.new(_CLOCKS_APPID + '.desktop'); + if (!clocksInfo) { + this._list.remove(this._clocksRow); + } else { + this._clocksLabel.label = label.format(this._city.get_name(), + clocksInfo.get_name()); + this._clocksIcon.icon_name = clocksInfo.get_icon().to_string(); + } + } + + /* Other apps that can launch geo: URIs */ + let contentType = Gio.content_type_from_mime_type('x-scheme-handler/geo'); + let thisId = Application.application.application_id + '.desktop'; + let apps = Gio.app_info_get_all_for_type(contentType); + apps.forEach((app) => { + if (app.get_id() == thisId) + return; + if (!app.should_show()) + return; + + this._list.add(new OpenWithRow({ appinfo: app })); + }); + + /* Hide the list box if it is empty */ + if (this._list.get_children().length == 0) { + this._scrolledWindow.hide(); + } + } + + _getSummary(markup) { + /* Gets a summary of the place (usually name, address, and coordinates, + whichever are available). Does not include OSM URL. */ + + let place = this._place; + let lines = []; + + let formatter = new PlaceFormatter.PlaceFormatter(place); + + if (!place.isCurrentLocation) + lines.push(formatter.title); + + let details = formatter.getDetailsString(); + if (details) { + lines.push(details); + } + + lines.push('%f, %f'.format(this._location.latitude, + this._location.longitude)); + + return lines.join('\n'); + } + + _getOSMURI() { + let view = this._mapView.view; + let place = this._place; + + let base = 'https://openstreetmap.org'; + if (this._place.osm_id && this._place.osm_type) { + return '%s/%s/%s'.format(base, + Utils.osmTypeToString(place.osm_type), + place.osm_id); + } else { + return '%s?mlat=%f&mlon=%f&zoom=%d'.format(base, + this._location.latitude, + this._location.longitude, + view.zoom_level); + } + } + + _copySummary() { + let summary = '%s\n%s'.format(this._getSummary(), this._getOSMURI()); + + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + clipboard.set_text(summary, -1); + this.response(Response.SUCCESS); + } + + _emailSummary() { + let title = new PlaceFormatter.PlaceFormatter(this._place).title; + let summary = "%s\n%s".format(this._getSummary(), this._getOSMURI()); + let uri = 'mailto:?subject=%s&body=%s'.format(Soup.URI.encode(title, null), + Soup.URI.encode(summary, null)); + + try { + Gio.app_info_launch_default_for_uri(uri, this._getAppLaunchContext()); + } catch(e) { + Utils.showDialog(_("Failed to open URI"), Gtk.MessageType.ERROR, + this.get_toplevel()); + Utils.debug('failed to open URI: %s'.format(e.message)); + } + + this.response(Response.SUCCESS); + } + + _getAppLaunchContext() { + let timestamp = Gtk.get_current_event_time(); + let display = Gdk.Display.get_default(); + let ctx = Gdk.Display.get_default().get_app_launch_context(); + let screen = display.get_default_screen(); + + ctx.set_timestamp(timestamp); + ctx.set_screen(screen); + + return ctx; + } + + _activateRow(row) { + if (row === this._weatherRow || row === this._clocksRow) { + let timestamp = Gtk.get_current_event_time(); + + let action; + let appId; + if (row === this._weatherRow) { + action = 'show-location'; + appId = _WEATHER_APPID; + } else { + action = 'add-location'; + appId = _CLOCKS_APPID; + } + + Utils.activateAction(appId, + action, + new GLib.Variant('v', this._city.serialize()), + timestamp); + } else if (row instanceof OpenWithRow) { + let uri = this._location.to_uri(Geocode.LocationURIScheme.GEO); + row.appinfo.launch_uris([ uri ], this._getAppLaunchContext()); + } + this.response(Response.SUCCESS); + } +}); + +var OpenWithRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/open-with-row.ui', + InternalChildren: [ 'label', + 'icon' ], +}, class OpenWithRow extends Gtk.ListBoxRow { + _init(params) { + this.appinfo = params.appinfo; + delete params.appinfo; + + super._init(params); + + this._label.label = _("Open with %s").format(this.appinfo.get_name()); + this._icon.gicon = this.appinfo.get_icon(); + } +}); diff --git a/src/service.js b/src/service.js new file mode 100644 index 00000000..4d71a99d --- /dev/null +++ b/src/service.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +let _service = null; + +const _SERVICE_URL = 'https://gis.gnome.org/services/v1/service.json'; +const _DEFAULT_SERVICE_FILE = 'maps-service.json'; + +function _getServiceFromFile(filename) { + let data = Utils.readFile(filename); + if (!data) { + log('Failed to open service file: ' + filename); + System.exit(1); + } + _service = JSON.parse(Utils.getBufferText(data)); + return _service; +} + +function _createDefaultService() { + let filename = GLib.build_filenamev([pkg.pkgdatadir, + _DEFAULT_SERVICE_FILE]); + return _getServiceFromFile(filename); +} + +function getService() { + if (_service) + return _service; + + let serviceOverride = GLib.getenv('MAPS_SERVICE'); + if (serviceOverride) + return _getServiceFromFile(serviceOverride); + + let user_agent = 'gnome-maps/' + pkg.version; + let session = new Soup.Session({ user_agent : user_agent }); + let msg = Soup.Message.new('GET', _SERVICE_URL); + try { + let stream = Gio.DataInputStream.new(session.send(msg, null)); + + let lines = ""; + while(true) { + let [line, _] = stream.read_line_utf8(null); + if (line === null) + break; + lines += line; + } + _service = JSON.parse(lines); + return _service; + } catch(e) { + Utils.debug(e); + return _createDefaultService(); + } +} diff --git a/src/serviceBackend.js b/src/serviceBackend.js new file mode 100644 index 00000000..edcfdebe --- /dev/null +++ b/src/serviceBackend.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var ServiceBackend = GObject.registerClass({ + Abstract: true +}, class ServiceBackend extends GObject.Object { + + //Abstract + get name() { } + + //Abstract + createRestCall(authorizer) { } + + //Abstract + refreshAuthorization(authorizer, cancellable) { } + + //Abstract + getAuthorizerAccount(authorizer) { } + + //Abstract + createAuthorizer(account) { } + + //Abstract + isTokenInvalid(restCall, parsedPayload) { } + + //Abstract + isInvalidCall(restCall, parsedPayload) { } + + //Abstract + getCallResultCode(restCall, parsedPayload) { } + + //Abstract + getCallResultMessage(restCall, parsedPayload) { } + + callAsync(authorizer, method, func, params, callback, cancellable, mustRefreshToken) { + mustRefreshToken = mustRefreshToken || true; + cancellable = cancellable || null; + + let restCall = this.createRestCall(authorizer); + + method = method.toUpperCase(); + restCall.set_method(method); + + for (let key in params) + restCall.add_param(key, params[key].toString()); + + restCall.set_function(func); + + Utils.debug(this.name + ': ' + func); + + restCall.invoke_async(cancellable, (call, result) => { + let data = JSON.parse(call.get_payload()); + let account = this.getAuthorizerAccount(authorizer); + + if (data && this.isTokenInvalid(call, data)) + if (mustRefreshToken) { + //Unauthorized token error, we need to refresh the token + Utils.debug(this.name + ': The token is not authorized, refreshing token'); + try { + this.refreshAuthorization(authorizer, cancellable); + this.callAsync(authorizer, method, func, params, callback, cancellable, false); + } catch(error) { + callback(account, data, { code: 401, + message: null }); + } + } else + callback(account, data, { code: 401, + message: null }); + else if (this.isInvalidCall(call, data)) + callback(account, data, { code: this.getCallResultCode(call, data), + message: this.getCallResultMessage(call, data) }); + else + callback(account, data, null); + }); + } + + performCheckIn(authorizer, checkIn, callback, cancellable) { + callback = callback || function() {}; + this._realPerformCheckIn(authorizer, checkIn, callback, cancellable); + } + + //Abstract + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { } + + findPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + callback = callback || function() {}; + this._realFindPlaces(authorizer, + latitude, + longitude, + distance, + (account, data, error) => { + if (!error) + callback(account, this.createPlaces(data), error); + else + callback(account, [], error); + }, + cancellable); + } + + //Abstract + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { } + + //Abstract + createPlaces(rawData) { } +}); diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..fa2478ab --- /dev/null +++ b/src/settings.js @@ -0,0 +1,74 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const System = imports.system; + +var Settings = GObject.registerClass( +class Settings extends Gio.Settings { + + _init(params) { + super._init(params); + // The GVariant types of the settings + this._keyTypes = {}; + this.list_keys().forEach((key) => { + this._keyTypes[key] = this.get_value(key) + .get_type() + .dup_string(); + }); + } + + get(name) { + return this.get_value(name).deep_unpack(); + } + + set(name, value) { + this.set_value(name, GLib.Variant.new (this._keyTypes[name], value)); + } +}); + +function getSettings(schemaId, path) { + const GioSSS = Gio.SettingsSchemaSource; + let schemaSource; + + if (!pkg.moduledir.startsWith('resource://')) { + // Running from the source tree + schemaSource = GioSSS.new_from_directory(pkg.pkgdatadir, + GioSSS.get_default(), + false); + } else { + schemaSource = GioSSS.get_default(); + } + + let schemaObj = schemaSource.lookup(schemaId, true); + if (!schemaObj) { + log('Missing GSettings schema ' + schemaId); + System.exit(1); + } + + if (path === undefined) + return new Settings({ settings_schema: schemaObj }); + else + return new Settings({ settings_schema: schemaObj, + path: path }); +} diff --git a/src/shapeLayer.js b/src/shapeLayer.js new file mode 100644 index 00000000..1b9b00ae --- /dev/null +++ b/src/shapeLayer.js @@ -0,0 +1,109 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; + +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; + +var SUPPORTED_TYPES = []; + +function newFromFile(file, mapView) { + let contentType = Gio.content_type_guess(file.get_uri(), null)[0]; + for (let layerClass of SUPPORTED_TYPES) { + if (layerClass.mimeTypes.indexOf(contentType) > -1) { + return layerClass.createInstance({ file: file, mapView: mapView }); + } + } + return null; +} + +var ShapeLayer = GObject.registerClass({ + Abstract: true +}, class ShapeLayer extends GObject.Object { + + _init(params) { + super._init(); + this._visible = true; + this._mapView = params.mapView; + this.file = params.file; + + this.filename = this.file.query_info( + Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, + Gio.FileQueryInfoFlags.NONE, + null + ).get_attribute_string(Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); + + this._markerLayer = new Champlain.MarkerLayer({ + selection_mode: Champlain.SelectionMode.SINGLE + }); + this._mapSource = null; + } + + get bbox() { + return this._mapSource.bbox; + } + + get visible() { + return this._visible; + } + + set visible(v) { + if (v && !this._visible) { + this._mapView.view.add_overlay_source(this._mapSource, 255); + this._markerLayer.show_all_markers(); + } else if (!v && this._visible) { + this._mapView.view.remove_overlay_source(this._mapSource); + this._markerLayer.hide_all_markers(); + } + this._visible = v; + } + + getName() { + /* + * Remove file extension and use that in lieu of a fileformat-specific + * display name. + */ + return this.filename.replace(/\.[^\.]+$/, ''); + } + + load() { + let [status, buffer] = this.file.load_contents(null); + this._fileContents = buffer; + if (!status) + throw new Error(_("failed to load file")); + this._parseContent(); + this._mapView.view.add_layer(this._markerLayer); + this._mapView.view.add_overlay_source(this._mapSource, 255); + } + + + _parseContent() { + /* Unimplemented */ + } + + unload() { + this._mapView.view.remove_layer(this._markerLayer); + this._mapView.view.remove_overlay_source(this._mapSource); + } +}); + +ShapeLayer.mimeTypes = []; +ShapeLayer.displayName = ''; diff --git a/src/shortPrintLayout.js b/src/shortPrintLayout.js new file mode 100644 index 00000000..a926afdb --- /dev/null +++ b/src/shortPrintLayout.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 1.0, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; + +var ShortPrintLayout = GObject.registerClass( +class ShortPrintLayout extends PrintLayout.PrintLayout { + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + map) + instructions */ + let totalSurfaces = 2 + this._route.turnPoints.length; + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + let dy = 0; + + this._route.turnPoints.forEach((turnPoint) => { + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, turnPoint); + this._cursorY += dy; + }); + } +}); diff --git a/src/sidebar.js b/src/sidebar.js new file mode 100644 index 00000000..f5e5f880 --- /dev/null +++ b/src/sidebar.js @@ -0,0 +1,572 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const InstructionRow = imports.instructionRow; +const PlaceStore = imports.placeStore; +const RouteEntry = imports.routeEntry; +const RouteQuery = imports.routeQuery; +const StoredRoute = imports.storedRoute; +const TransitArrivalRow = imports.transitArrivalRow; +const TransitItineraryRow = imports.transitItineraryRow; +const TransitLegRow = imports.transitLegRow; +const TransitMoreRow = imports.transitMoreRow; +const TransitOptionsPanel = imports.transitOptionsPanel; +const Utils = imports.utils; + +var Sidebar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/sidebar.ui', + InternalChildren: [ 'distanceInfo', + 'entryList', + 'instructionList', + 'instructionWindow', + 'instructionSpinner', + 'instructionStack', + 'errorLabel', + 'modeBikeToggle', + 'modeCarToggle', + 'modePedestrianToggle', + 'modeTransitToggle', + 'timeInfo', + 'linkButtonStack', + 'transitWindow', + 'transitRevealer', + //'transitOptionsPanel', + 'transitHeader', + 'transitListStack', + 'transitOverviewListBox', + 'transitItineraryHeader', + 'transitItineraryListBox', + 'transitItineraryBackButton', + 'transitItineraryTimeLabel', + 'transitItineraryDurationLabel', + 'transitAttributionLabel'] +}, class Sidebar extends Gtk.Revealer { + + _init(mapView) { + super._init({ transition_type: Gtk.RevealerTransitionType.SLIDE_LEFT }); + + this._mapView = mapView; + + this._query = Application.routeQuery; + this._initInstructionList(); + + /* I could not get the custom GTK+ template widget to init properly + * from the UI file, we also need to manually insert the transit + * itinerary header widget into the GtkStack to get the correct + * animation direction. + */ + this._transitOptionsPanel = + new TransitOptionsPanel.TransitOptionsPanel({ visible: true }); + this._transitHeader.add_named(this._transitOptionsPanel, 'options'); + this._transitHeader.add_named(this._transitItineraryHeader, + 'itinerary-header'); + this._initTransportationToggles(this._modePedestrianToggle, + this._modeBikeToggle, + this._modeCarToggle, + this._modeTransitToggle); + + this._initQuerySignals(); + this._query.addPoint(0); + this._query.addPoint(1); + this._switchRoutingMode(Application.routeQuery.transportation); + /* Enable/disable transit mode switch based on the presence of + * public transit providers. + * For some reason, setting visible to false in the UI file and + * dynamically setting visible false here doesn't work, maybe because + * it's part of a radio group? As a workaround, just remove the button + * instead. + */ + if (!Application.routingDelegator.transitRouter.enabled) + this._modeTransitToggle.destroy(); + } + + _initTransportationToggles(pedestrian, bike, car, transit) { + let transport = RouteQuery.Transportation; + + let onToggle = function(mode, button) { + let previousMode = this._query.transportation; + + if (button.active && previousMode !== mode) { + this._switchRoutingMode(mode); + this._query.transportation = mode; + } + }; + pedestrian.connect('toggled', onToggle.bind(this, transport.PEDESTRIAN)); + car.connect('toggled', onToggle.bind(this, transport.CAR)); + bike.connect('toggled', onToggle.bind(this, transport.BIKE)); + transit.connect('toggled', onToggle.bind(this, transport.TRANSIT)) + + let setToggles = function() { + switch(Application.routeQuery.transportation) { + case transport.PEDESTRIAN: + pedestrian.active = true; + break; + case transport.CAR: + car.active = true; + break; + case transport.BIKE: + bike.active = true; + break; + case transport.TRANSIT: + transit.active = true; + break; + } + + this._switchRoutingMode(Application.routeQuery.transportation); + }; + + setToggles.bind(this)(); + this._query.connect('notify::transportation', setToggles.bind(this)); + } + + _switchRoutingMode(mode) { + if (mode === RouteQuery.Transportation.TRANSIT) { + Application.routingDelegator.useTransit = true; + this._linkButtonStack.visible_child_name = 'transit'; + this._transitOptionsPanel.reset(); + this._transitRevealer.reveal_child = true; + } else { + Application.routingDelegator.useTransit = false; + this._linkButtonStack.visible_child_name = 'turnByTurn'; + this._transitRevealer.reveal_child = false; + Application.routingDelegator.transitRouter.plan.deselectItinerary(); + } + this._clearInstructions(); + } + + _initQuerySignals() { + this._query.connect('point-added', (obj, point, index) => { + this._createRouteEntry(index, point); + }); + + this._query.connect('point-removed', (obj, point, index) => { + let row = this._entryList.get_row_at_index(index); + row.destroy(); + }); + } + + _cancelStore() { + Mainloop.source_remove(this._storeRouteTimeoutId); + this._storeRouteTimeoutId = 0; + } + + _createRouteEntry(index, point) { + let type; + if (index === 0) + type = RouteEntry.Type.FROM; + else if (index === this._entryList.get_children().length) + type = RouteEntry.Type.TO; + else + type = RouteEntry.Type.VIA; + + let routeEntry = new RouteEntry.RouteEntry({ type: type, + point: point, + mapView: this._mapView }); + this._entryList.insert(routeEntry, index); + + if (type === RouteEntry.Type.FROM) { + routeEntry.button.connect('clicked', () => { + let lastIndex = this._entryList.get_children().length; + this._query.addPoint(lastIndex - 1); + }); + + this.connect('notify::child-revealed', () => { + if (this.child_revealed) + routeEntry.entry.grab_focus_without_selecting(); + }); + } else if (type === RouteEntry.Type.VIA) { + routeEntry.button.connect('clicked', () => { + let row = routeEntry.get_parent(); + this._query.removePoint(row.get_index()); + }); + } else if (type === RouteEntry.Type.TO) { + routeEntry.button.connect('clicked', + this._reverseRoutePoints.bind(this)); + } + + this._initRouteDragAndDrop(routeEntry); + } + + _initInstructionList() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + + route.connect('reset', () => { + this._clearInstructions(); + + let length = this._entryList.get_children().length; + for (let index = 1; index < (length - 1); index++) { + this._query.removePoint(index); + } + }); + + transitPlan.connect('reset', () => { + this._clearTransitOverview(); + this._showTransitOverview(); + this._instructionStack.visible_child = this._transitWindow; + /* don't remove query points as with the turn-based routing, + * since we might get "no route" because of the time selected + * and so on */ + this._transitAttributionLabel.label = ''; + }); + + transitPlan.connect('no-more-results', () => { + // set the "load more" row to indicate no more results + let numRows = this._transitOverviewListBox.get_children().length; + let loadMoreRow = this._transitOverviewListBox.get_row_at_index(numRows - 2); + loadMoreRow.showNoMore(); + }); + + this._query.connect('run', () => { + this._instructionStack.visible_child = this._instructionSpinner; + }); + + this._query.connect('notify', () => { + if (this._instructionStack.visible_child !== this._instructionSpinner && + this._instructionStack.visible_child !== this._errorLabel) { + if (this._query.transportation === RouteQuery.Transportation.TRANSIT) { + this._clearTransitOverview(); + this._showTransitOverview(); + this._transitAttributionLabel.label = ''; + } else { + this._clearInstructions(); + } + } + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + }); + + route.connect('update', () => { + this._clearInstructions(); + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + this._storeRouteTimeoutId = Mainloop.timeout_add(5000, () => { + let placeStore = Application.placeStore; + let places = this._query.filledPoints.map(function(point) { + return point.place; + }); + let storedRoute = new StoredRoute.StoredRoute({ + transportation: this._query.transportation, + route: route, + places: places, + geoclue: Application.geoclue + }); + + if (!storedRoute.containsNull) { + placeStore.addPlace(storedRoute, + PlaceStore.PlaceType.RECENT_ROUTE); + } + this._storeRouteTimeoutId = 0; + }); + + route.turnPoints.forEach((turnPoint) => { + let row = new InstructionRow.InstructionRow({ visible: true, + turnPoint: turnPoint }); + this._instructionList.add(row); + }); + + /* Translators: %s is a time expression with the format "%f h" or "%f min" */ + this._timeInfo.label = _("Estimated time: %s").format(Utils.prettyTime(route.time)); + this._distanceInfo.label = Utils.prettyDistance(route.distance); + }); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) + this._mapView.showTurnPoint(row.turnPoint); + }); + + transitPlan.connect('update', () => { + this._updateTransitAttribution(); + this._clearTransitOverview(); + this._showTransitOverview(); + this._populateTransitItineraryOverview(); + }); + + /* use list separators for the transit itinerary overview list */ + this._transitOverviewListBox.set_header_func((row, prev) => { + if (prev) + row.set_header(new Gtk.Separator()); + }); + + this._transitOverviewListBox.connect('row-activated', + this._onItineraryOverviewRowActivated.bind(this)); + this._transitItineraryBackButton.connect('clicked', + this._showTransitOverview.bind(this)); + + // connect error handlers + route.connect('error', (route, msg) => this._showError(msg)); + transitPlan.connect('error', (plan, msg) => this._showError(msg)); + } + + _showError(msg) { + this._instructionStack.visible_child = this._errorLabel; + this._errorLabel.label = msg; + } + + _clearTransitOverview() { + let listBox = this._transitOverviewListBox; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._transitWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + _clearTransitItinerary() { + let listBox = this._transitItineraryListBox; + listBox.forall(listBox.remove.bind(listBox)); + } + + _updateTransitAttribution() { + let plan = Application.routingDelegator.transitRouter.plan; + + if (plan.attribution) { + let attributionLabel = + _("Itineraries provided by %s").format(plan.attribution); + if (plan.attributionUrl) { + this._transitAttributionLabel.label = + '%s'.format([plan.attributionUrl], + attributionLabel); + } else { + this._transitAttributionLabel.label = attributionLabel; + } + } else { + this._transitAttributionLabel.label = ''; + } + } + + _showTransitOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + this._transitListStack.visible_child_name = 'overview'; + this._transitHeader.visible_child_name = 'options'; + plan.deselectItinerary(); + } + + _showTransitItineraryView() { + this._transitListStack.visible_child_name = 'itinerary'; + this._transitHeader.visible_child_name = 'itinerary-header'; + } + + _populateTransitItineraryOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + plan.itineraries.forEach((itinerary) => { + let row = + new TransitItineraryRow.TransitItineraryRow({ visible: true, + itinerary: itinerary }); + this._transitOverviewListBox.add(row); + }); + /* add the "load more" row */ + this._transitOverviewListBox.add( + new TransitMoreRow.TransitMoreRow({ visible: true })); + + /* add an empty list row to get a final separator */ + this._transitOverviewListBox.add(new Gtk.ListBoxRow({ visible: true })); + } + + _onItineraryActivated(itinerary) { + let plan = Application.routingDelegator.transitRouter.plan; + + this._populateTransitItinerary(itinerary); + this._showTransitItineraryView(); + plan.selectItinerary(itinerary); + } + + _onMoreActivated(row) { + row.startLoading(); + Application.routingDelegator.transitRouter.fetchMoreResults(); + } + + _onItineraryOverviewRowActivated(listBox, row) { + this._transitOverviewListBox.unselect_all(); + + if (row.itinerary) + this._onItineraryActivated(row.itinerary); + else + this._onMoreActivated(row); + } + + _populateTransitItinerary(itinerary) { + this._transitItineraryTimeLabel.label = + itinerary.prettyPrintTimeInterval(); + this._transitItineraryDurationLabel.label = + itinerary.prettyPrintDuration(); + + this._clearTransitItinerary(); + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + let row = new TransitLegRow.TransitLegRow({ leg: leg, + start: i === 0, + mapView: this._mapView }); + this._transitItineraryListBox.add(row); + } + + /* insert the additional arrival row, showing the arrival place and time */ + this._transitItineraryListBox.add( + new TransitArrivalRow.TransitArrivalRow({ itinerary: itinerary, + mapView: this._mapView })); + } + + + _clearInstructions() { + let listBox = this._instructionList; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._instructionWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + // Iterate over points and establish the new order of places + _reorderRoutePoints(srcIndex, destIndex) { + let points = this._query.points; + let srcPlace = this._draggedPoint.place; + + // Determine if we are swapping from "above" or "below" + let step = (srcIndex < destIndex) ? -1 : 1; + + // Hold off on notifying the changes to query.points until + // we have re-arranged the places. + this._query.freeze_notify(); + + for (let i = destIndex; i !== (srcIndex + step); i += step) { + // swap + [points[i].place, srcPlace] = [srcPlace, points[i].place]; + } + + this._query.thaw_notify(); + } + + /* The reason we don't just use the array .reverse() function is that we + * need to update the place parameters on the actual point objects in the + * array to fire the query notify signal that will iniate an update. + */ + _reverseRoutePoints() { + let points = this._query.points; + let length = points.length; + + this._query.freeze_notify(); + for (let i = 0; i < length / 2; i++) { + let p1 = points[i].place; + let p2 = points[length - i - 1].place; + + points[i].place = p2; + points[length - i - 1].place = p1; + } + this._query.thaw_notify(); + } + + _onDragDrop(row, context, x, y, time) { + let srcIndex = this._query.points.indexOf(this._draggedPoint); + let destIndex = row.get_index(); + + this._reorderRoutePoints(srcIndex, destIndex); + Gtk.drag_finish(context, true, false, time); + return true; + } + + _dragHighlightRow(row) { + row.opacity = 0.6; + } + + _dragUnhighlightRow(row) { + row.opacity = 1.0; + } + + // Set the opacity of the row we are currently dragging above + // to semi transparent. + _onDragMotion(row, context, x, y, time) { + let routeEntry = row.get_child(); + + if (this._draggedPoint && this._draggedPoint !== routeEntry.point) { + this._dragHighlightRow(row); + Gdk.drag_status(context, Gdk.DragAction.MOVE, time); + } else + Gdk.drag_status(context, 0, time); + return true; + } + + // Drag ends, show the dragged row again. + _onDragEnd(context, row) { + this._draggedPoint = null; + + // Restore to natural height + row.height_request = -1; + row.get_child().show(); + } + + // Drag begins, set the correct drag icon and hide the dragged row. + _onDragBegin(context, row) { + let routeEntry = row.get_child(); + let width = row.get_allocated_width(); + let height = row.get_allocated_height(); + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface) + + row.draw(cr); + this._draggedPoint = routeEntry.point; + + // Set a fixed height on the row to prevent the sidebar height + // to shrink while dragging a row. + row.height_request = height; + row.get_child().hide(); + + Gtk.drag_set_icon_surface(context, surface); + } + + // Set up drag and drop between RouteEntrys. The drag source is from a + // GtkEventBox that contains the start/end icon next in the entry. And + // the drag destination is the ListBox row. + _initRouteDragAndDrop(routeEntry) { + let dragIcon = routeEntry.iconEventBox; + let row = routeEntry.get_parent(); + + dragIcon.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, + null, + Gdk.DragAction.MOVE); + dragIcon.drag_source_add_image_targets(); + + row.drag_dest_set(Gtk.DestDefaults.MOTION, + null, + Gdk.DragAction.MOVE); + row.drag_dest_add_image_targets(); + + dragIcon.connect('drag-begin', (icon, context) => this._onDragBegin(context, row)); + dragIcon.connect('drag-end', (icon, context) => this._onDragEnd(context, row)); + + row.connect('drag-leave', this._dragUnhighlightRow.bind(this, row)); + row.connect('drag-motion', this._onDragMotion.bind(this)); + row.connect('drag-drop', this._onDragDrop.bind(this)); + } +}); diff --git a/src/socialPlace.js b/src/socialPlace.js new file mode 100644 index 00000000..8ee1e8d3 --- /dev/null +++ b/src/socialPlace.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Location = imports.location; + +var SocialPlace = GObject.registerClass( +class SocialPlace extends GObject.Object { + _init(params) { + super._init(); + + this.id = params.id; + this.name = params.name; + this.latitude = params.latitude; + this.longitude = params.longitude; + this.category = params.category; + this.link = params.link; + this.originalData = params.originalData; + } + + get location() { + return new Location.Location({ latitude: parseFloat(this.latitude), + longitude: parseFloat(this.longitude) }); + } +}); diff --git a/src/socialPlaceListBox.js b/src/socialPlaceListBox.js new file mode 100644 index 00000000..cb70fec7 --- /dev/null +++ b/src/socialPlaceListBox.js @@ -0,0 +1,103 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var SocialPlaceRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-row.ui', + InternalChildren: [ 'nameLabel', + 'categoryLabel' ] +}, class SocialPlaceRow extends Gtk.ListBoxRow { + + _init(params) { + this.place = params.place; + delete params.place; + + super._init(params); + + this._nameLabel.label = this.place.name; + if (this.place.category) + this._categoryLabel.label = this.place.category; + else + this._categoryLabel.visible = false; + } +}); + +var SocialPlaceMoreResultsRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-more-results-row.ui' +}, class SocialPlaceMoreResultsRow extends Gtk.ListBoxRow {}); + +var SocialPlaceListBox = GObject.registerClass({ + Signals: { + 'place-selected': { param_types: [GObject.TYPE_OBJECT] } + } +}, class SocialPlaceListBox extends Gtk.ListBox { + + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + this.connect('row-activated', (list, row) => { + if (!row.place) { + // "Show more results" row activated + row.destroy(); + this._showBadMatches(); + } else + this.emit('place-selected', row.place); + }); + } + + get matches() { + return this._matches; + } + + set matches(matches) { + this.forall(function(row) { + row.destroy(); + }); + + this._matches = matches; + + if (this._matches.exactMatches.length + + this._matches.goodMatches.length === 0) { + this._showBadMatches(); + } else { + this._matches.exactMatches.forEach(this._addPlace.bind(this)); + this._matches.goodMatches.forEach(this._addPlace.bind(this)); + + if (this._matches.badMatches.length > 0) + this._addMoreResults(); + } + } + + _showBadMatches() { + this._matches.badMatches.forEach(this._addPlace.bind(this)); + } + + _addPlace(place) { + this.add(new SocialPlaceRow({ place: place })); + } + + _addMoreResults() { + this.add(new SocialPlaceMoreResultsRow({})); + } +}); diff --git a/src/socialPlaceMatcher.js b/src/socialPlaceMatcher.js new file mode 100644 index 00000000..2c8c4e9d --- /dev/null +++ b/src/socialPlaceMatcher.js @@ -0,0 +1,125 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +/** + * The Levenshtein distance is a string comparison algorithm defined + * as the minimal number of characters you have to replace, insert or + * delete to transform string a into string b. + * We use it to compare the similarities of two place names. + * + * http://en.wikipedia.org/wiki/Levenshtein_distance + */ +function _getLevenshteinDistance(a, b) { + let i; + let j; + let d = []; + + for (i = 0; i <= a.length; i++) { + d[i] = []; + for (j = 0; j <= b.length; j++) + d[i][j] = 0; + } + + for (i = 1; i <= a.length; i++) + d[i][0] = i; + + for (j = 1; j <= b.length; j++) + d[0][j] = j; + + for (j = 1; j <= b.length; j++) + for (i = 1; i <= a.length; i++) + if (a[i - 1] === b[j - 1]) + d[i][j] = d[i-1][j-1]; + else + d[i][j] = Math.min(d[i-1][j] + 1, + d[i][j-1] + 1, + d[i-1][j-1] + 1); + + return d[a.length][b.length]; +} + +function _normalize(name) { + return name.toLowerCase().trim().replace(/ +(?= )/g,''); +} + +function _getPlacesLevenshteinDistance(geoPlace, socialPlace) { + let a = geoPlace.name; + let b = socialPlace.name; + + return _getLevenshteinDistance(_normalize(a), _normalize(b)); +} + +/** + * Returns: 0 for bad match, 1 for good match and 2 + * exact match. + */ +function _getKindOfMatch(geoPlace, socialPlace) { + let distance = geoPlace.location.get_distance_from(socialPlace.location); + let levenshtein = _getPlacesLevenshteinDistance(geoPlace, socialPlace); + + if (distance < 0.01 && levenshtein <= 2) + return 2; + else if (distance < 0.03 && levenshtein <= 5) + return 1; + else + return 0; +} + +function match(geoPlace, socialPlaces) { + let result = { + exactMatches: [], + goodMatches: [], + badMatches: [] + }; + + socialPlaces.sort(function(a, b) { + let da = geoPlace.location.get_distance_from(a.location); + let db = geoPlace.location.get_distance_from(b.location); + + if (da > db) + return 1; + else if (da < db) + return -1; + + return 0; + }); + + socialPlaces.forEach(function(place) { + let match = _getKindOfMatch(geoPlace, place); + + switch (match) + { + case 0: + result.badMatches.push(place); + break; + + case 1: + result.goodMatches.push(place); + break; + + case 2: + result.exactMatches.push(place); + break; + } + }); + + return result; +} diff --git a/src/storedRoute.js b/src/storedRoute.js new file mode 100644 index 00000000..b9e0bc85 --- /dev/null +++ b/src/storedRoute.js @@ -0,0 +1,218 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; + +// directional override markers +const _RLM = '\u200F'; +const _LRM = '\u200E'; + +var StoredRoute = GObject.registerClass( +class StoredRoute extends Place.Place { + + _init(params) { + let route = params.route; + delete params.route; + + this._transportation = params.transportation; + delete params.transportation; + + this.route = new Route.Route(); + this.route.update({ path: route.path, + turnPoints: route.turnPoints, + distance: route.distance, + time: route.time, + bbox: route.bbox }); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + + let places = params.places; + delete params.places; + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + params.name = directionMarker + places[0].name + directionMarker + + arrow + directionMarker + places[places.length -1].name; + + + let geoclue = params.geoclue; + delete params.geoclue; + + this.places = []; + this._containsCurrentLocation = false; + + let currentLocation = null; + if (geoclue) + currentLocation = geoclue.place; + + places.forEach((place) => { + if (currentLocation && place === currentLocation) + this._containsCurrentLocation = true; + + this.places.push(new Place.Place({ place: place })); + }); + + super._init(params); + } + + get viaString() { + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + return this.places.map(function(place) { + return directionMarker + place.name; + }).join(directionMarker + arrow); + } + + get transportation() { + return this._transportation; + } + + get icon() { + let transport = RouteQuery.Transportation; + let icon = Gio.Icon.new_for_string('route-button-symbolic'); + + switch(this._transportation) { + case transport.PEDESTRIAN: + icon = Gio.Icon.new_for_string('route-pedestrian-symbolic'); + break; + case transport.CAR: + icon = Gio.Icon.new_for_string('route-car-symbolic'); + break; + case transport.BIKE: + icon = Gio.Icon.new_for_string('route-bike-symbolic'); + break; + } + + return icon; + } + + get uniqueID() { + return this._transportation + '-' + this.places.map(function(place) { + return [place.osm_type, place.osm_id].join('-'); + }).join('-'); + } + + get containsCurrentLocation() { + return this._containsCurrentLocation; + } + + get containsNull() { + let hasNull = false; + + for (let p = 0; p < this.places.length; p++) { + if (!this.places[p].name) { + hasNull = true; + break; + } + } + return hasNull; + } + + toJSON() { + let turnPoints = this.route.turnPoints.map(function(turnPoint) { + let coordinate = { latitude: turnPoint.coordinate.latitude, + longitude: turnPoint.coordinate.longitude }; + return { coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction }; + }); + let bounding_box = { top: this.route.bbox.top, + bottom: this.route.bbox.bottom, + left: this.route.bbox.left, + right: this.route.bbox.right }; + + let path = this.route.path.map(function(coordinate) { + return { latitude: coordinate.latitude, + longitude: coordinate.longitude }; + }); + + let route = { path: path, + turnPoints: turnPoints, + distance: this.route.distance, + time: this.route.time }; + + let places = this.places.map(function(place) { + return place.toJSON(); + }); + + return { id: -1, + transportation: this._transportation, + route: route, + places: places }; + } +}); + +StoredRoute.fromJSON = function(obj) { + let props; + let places = []; + let route; + let transportation = null; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'transportation': + transportation = prop; + break; + + case 'route': + route = new Route.Route(); + prop.path = prop.path.map((coordinate) => { + let lat = coordinate.latitude; + let lon = coordinate.longitude; + return new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + }); + prop.turnPoints = prop.turnPoints.map((turnPoint) => { + let lat = turnPoint.coordinate.latitude; + let lon = turnPoint.coordinate.longitude; + + let coordinate = new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + + return new Route.TurnPoint({ + coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction + }); + }); + route.update(prop); + break; + + case 'places': + prop.forEach((p) => places.push(Place.Place.fromJSON(p))); + break; + } + } + return new StoredRoute({ transportation: transportation, + route: route, + places: places }); +}; diff --git a/src/time.js b/src/time.js new file mode 100644 index 00000000..2fe43173 --- /dev/null +++ b/src/time.js @@ -0,0 +1,91 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* parse a time from a fixed set of free-formats into a string representation: + * hour:min + * + * Examples: + * "10:00" → "10:00" + * "1:00pm" → "13:00" + * "0800" → "08:00" + * "10.30" → "10:30" + * "12" → "12:00" + * + * TODO: maybe try to use some library to get better locale handling, + * or push for something in GLib */ +function parseTimeString(timeString) { + let pmSet = false; + let hours; + let mins; + /* remove extra whitespaces */ + timeString = timeString.replace(/\s+/g, ''); + + if (timeString.endsWith('am')) { + timeString = timeString.substring(0, timeString.length - 2); + } else if (timeString.endsWith('pm')) { + timeString = timeString.substring(0, timeString.length - 2); + pmSet = true; + } + + /* allow using :, ., and the ratio symbol to separate hours:mins */ + if (timeString.charAt(2) === ':' || timeString.charAt(1) === ':') + timeString = timeString.replace(':', ''); + else if (timeString.charAt(2) === '.' || timeString.charAt(1) === '.') + timeString = timeString.replace('.', ''); + else if (timeString.charAt(2) === '\u2236' || + timeString.charAt(1) === '\u2236') + timeString = timeString.replace('\u2236', ''); + + if (timeString.length === 4) { + /* expect a full time specification (hours, minutes) */ + hours = timeString.substring(0, 2); + mins = timeString.substring(2, 4); + } else if (timeString.length === 3) { + /* interpret a 3 digit string as h:mm */ + hours = '0' + timeString.substring(0, 1); + mins = timeString.substring(1, 3); + } else if (timeString.length === 2) { + /* expect just the hour part */ + hours = timeString.substring(0, 2); + mins = '00'; + } else if (timeString.length === 1) { + /* expect just the hour part, one digit */ + hours = '0' + timeString; + mins = '00'; + } else { + /* this makes no sense, just bail out */ + return null; + } + + /* check if the parts can be interpreted as numbers */ + if (hours % 1 === 0 && mins % 1 === 0) { + if (pmSet) + hours = parseInt(hours) + 12; + + /* if the hours or minutes is out-of-range, bail out */ + if (hours < 0 || hours > 24 || mins < 0 || mins > 59) + return null; + + return hours + ':' + mins; + } else { + return null; + } +} diff --git a/src/togeojson/LICENSE b/src/togeojson/LICENSE new file mode 100644 index 00000000..bc7706e0 --- /dev/null +++ b/src/togeojson/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2012 Tom MacWright + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/src/togeojson/togeojson.js b/src/togeojson/togeojson.js new file mode 100644 index 00000000..ee99627f --- /dev/null +++ b/src/togeojson/togeojson.js @@ -0,0 +1,357 @@ +const Dom = imports.xmldom.dom; + +var toGeoJSON = (function() { + 'use strict'; + + var removeSpace = /\s*/g, + trimSpace = /^\s*|\s*$/g, + splitSpace = /\s+/; + // generate a short, numeric hash of a string + function okhash(x) { + if (!x || !x.length) return 0; + for (var i = 0, h = 0; i < x.length; i++) { + h = ((h << 5) - h) + x.charCodeAt(i) | 0; + } return h; + } + // all Y children of X + function get(x, y) { return x.getElementsByTagName(y); } + function attr(x, y) { return x.getAttribute(y); } + function attrf(x, y) { return parseFloat(attr(x, y)); } + // one Y child of X, if any, otherwise null + function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; } + // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize + function norm(el) { if (el.normalize) { el.normalize(); } return el; } + // cast array x into numbers + function numarray(x) { + for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); } + return o; + } + function clean(x) { + var o = {}; + for (var i in x) { if (x[i]) { o[i] = x[i]; } } + return o; + } + // get the content of a text node, if any + function nodeVal(x) { + if (x) { norm(x); } + return (x && x.textContent) || ''; + } + // get one coordinate from a coordinate array, if any + function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); } + // get all coordinates from a coordinate array as [[],[]] + function coord(v) { + var coords = v.replace(trimSpace, '').split(splitSpace), + o = []; + for (var i = 0; i < coords.length; i++) { + o.push(coord1(coords[i])); + } + return o; + } + function coordPair(x) { + var ll = [attrf(x, 'lon'), attrf(x, 'lat')], + ele = get1(x, 'ele'), + // handle namespaced attribute in browser + heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'), + time = get1(x, 'time'), + e; + if (ele) { + e = parseFloat(nodeVal(ele)); + if (!isNaN(e)) { + ll.push(e); + } + } + return { + coordinates: ll, + time: time ? nodeVal(time) : null, + heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null + }; + } + + // create a new feature collection parent object + function fc() { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var serializer = new Dom.XMLSerializer(); + function xml2str(str) { + // IE9 will create a new XMLSerializer but it'll crash immediately. + // This line is ignored because we don't run coverage tests in IE9 + /* istanbul ignore next */ + if (str.xml !== undefined) return str.xml; + return serializer.serializeToString(str); + } + + var t = { + kml: function(doc) { + + var gj = fc(), + // styleindex keeps track of hashed styles in order to match features + styleIndex = {}, + // atomic geospatial types supported by KML - MultiGeometry is + // handled separately + geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'], + // all root placemarks in the file + placemarks = get(doc, 'Placemark'), + styles = get(doc, 'Style'), + styleMaps = get(doc, 'StyleMap'); + + for (var k = 0; k < styles.length; k++) { + styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16); + } + for (var l = 0; l < styleMaps.length; l++) { + styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16); + } + for (var j = 0; j < placemarks.length; j++) { + gj.features = gj.features.concat(getPlacemark(placemarks[j])); + } + function kmlColor(v) { + var color, opacity; + v = v || ''; + if (v.substr(0, 1) === '#') { v = v.substr(1); } + if (v.length === 6 || v.length === 3) { color = v; } + if (v.length === 8) { + opacity = parseInt(v.substr(0, 2), 16) / 255; + color = '#'+v.substr(2); + } + return [color, isNaN(opacity) ? undefined : opacity]; + } + function gxCoord(v) { return numarray(v.split(' ')); } + function gxCoords(root) { + var elems = get(root, 'coord', 'gx'), coords = [], times = []; + if (elems.length === 0) elems = get(root, 'gx:coord'); + for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i]))); + var timeElems = get(root, 'when'); + for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j])); + return { + coords: coords, + times: times + }; + } + function getGeometry(root) { + var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = []; + if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); } + if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); } + if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); } + for (i = 0; i < geotypes.length; i++) { + geomNodes = get(root, geotypes[i]); + if (geomNodes) { + for (j = 0; j < geomNodes.length; j++) { + geomNode = geomNodes[j]; + if (geotypes[i] === 'Point') { + geoms.push({ + type: 'Point', + coordinates: coord1(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'LineString') { + geoms.push({ + type: 'LineString', + coordinates: coord(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'Polygon') { + var rings = get(geomNode, 'LinearRing'), + coords = []; + for (k = 0; k < rings.length; k++) { + coords.push(coord(nodeVal(get1(rings[k], 'coordinates')))); + } + geoms.push({ + type: 'Polygon', + coordinates: coords + }); + } else if (geotypes[i] === 'Track' || + geotypes[i] === 'gx:Track') { + var track = gxCoords(geomNode); + geoms.push({ + type: 'LineString', + coordinates: track.coords + }); + if (track.times.length) coordTimes.push(track.times); + } + } + } + } + return { + geoms: geoms, + coordTimes: coordTimes + }; + } + function getPlacemark(root) { + var geomsAndTimes = getGeometry(root), i, properties = {}, + name = nodeVal(get1(root, 'name')), + styleUrl = nodeVal(get1(root, 'styleUrl')), + description = nodeVal(get1(root, 'description')), + timeSpan = get1(root, 'TimeSpan'), + extendedData = get1(root, 'ExtendedData'), + lineStyle = get1(root, 'LineStyle'), + polyStyle = get1(root, 'PolyStyle'); + + if (!geomsAndTimes.geoms.length) return []; + if (name) properties.name = name; + if (styleUrl[0] !== '#') { + styleUrl = '#' + styleUrl; + } + if (styleUrl && styleIndex[styleUrl]) { + properties.styleUrl = styleUrl; + properties.styleHash = styleIndex[styleUrl]; + } + if (description) properties.description = description; + if (timeSpan) { + var begin = nodeVal(get1(timeSpan, 'begin')); + var end = nodeVal(get1(timeSpan, 'end')); + properties.timespan = { begin: begin, end: end }; + } + if (lineStyle) { + var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))), + color = linestyles[0], + opacity = linestyles[1], + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) properties.stroke = color; + if (!isNaN(opacity)) properties['stroke-opacity'] = opacity; + if (!isNaN(width)) properties['stroke-width'] = width; + } + if (polyStyle) { + var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))), + pcolor = polystyles[0], + popacity = polystyles[1], + fill = nodeVal(get1(polyStyle, 'fill')), + outline = nodeVal(get1(polyStyle, 'outline')); + if (pcolor) properties.fill = pcolor; + if (!isNaN(popacity)) properties['fill-opacity'] = popacity; + if (fill) properties['fill-opacity'] = fill === '1' ? 1 : 0; + if (outline) properties['stroke-opacity'] = outline === '1' ? 1 : 0; + } + if (extendedData) { + var datas = get(extendedData, 'Data'), + simpleDatas = get(extendedData, 'SimpleData'); + + for (i = 0; i < datas.length; i++) { + properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value')); + } + for (i = 0; i < simpleDatas.length; i++) { + properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]); + } + } + if (geomsAndTimes.coordTimes.length) { + properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ? + geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes; + } + var feature = { + type: 'Feature', + geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : { + type: 'GeometryCollection', + geometries: geomsAndTimes.geoms + }, + properties: properties + }; + if (attr(root, 'id')) feature.id = attr(root, 'id'); + return [feature]; + } + return gj; + }, + gpx: function(doc) { + var i, + tracks = get(doc, 'trk'), + routes = get(doc, 'rte'), + waypoints = get(doc, 'wpt'), + // a feature collection + gj = fc(), + feature; + for (i = 0; i < tracks.length; i++) { + feature = getTrack(tracks[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < routes.length; i++) { + feature = getRoute(routes[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < waypoints.length; i++) { + gj.features.push(getPoint(waypoints[i])); + } + function getPoints(node, pointname) { + var pts = get(node, pointname), + line = [], + times = [], + heartRates = [], + l = pts.length; + if (l < 2) return {}; // Invalid line in GeoJSON + for (var i = 0; i < l; i++) { + var c = coordPair(pts[i]); + line.push(c.coordinates); + if (c.time) times.push(c.time); + if (c.heartRate) heartRates.push(c.heartRate); + } + return { + line: line, + times: times, + heartRates: heartRates + }; + } + function getTrack(node) { + var segments = get(node, 'trkseg'), + track = [], + times = [], + heartRates = [], + line; + for (var i = 0; i < segments.length; i++) { + line = getPoints(segments[i], 'trkpt'); + if (line.line) track.push(line.line); + if (line.times && line.times.length) times.push(line.times); + if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates); + } + if (track.length === 0) return null; + var properties = getProperties(node); + if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times; + if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates; + return { + type: 'Feature', + properties: properties, + geometry: { + type: track.length === 1 ? 'LineString' : 'MultiLineString', + coordinates: track.length === 1 ? track[0] : track + } + }; + } + function getRoute(node) { + var line = getPoints(node, 'rtept'); + if (!line.line) return null; + var routeObj = { + type: 'Feature', + properties: getProperties(node), + geometry: { + type: 'LineString', + coordinates: line.line + } + }; + return routeObj; + } + function getPoint(node) { + var prop = getProperties(node); + prop.sym = nodeVal(get1(node, 'sym')); + return { + type: 'Feature', + properties: prop, + geometry: { + type: 'Point', + coordinates: coordPair(node).coordinates + } + }; + } + function getProperties(node) { + var meta = ['name', 'desc', 'author', 'copyright', 'link', + 'time', 'keywords'], + prop = {}, + k; + for (k = 0; k < meta.length; k++) { + prop[meta[k]] = nodeVal(get1(node, meta[k])); + } + return clean(prop); + } + return gj; + } + }; + return t; +})(); + +if (typeof module !== 'undefined') module.exports = toGeoJSON; diff --git a/src/transit.js b/src/transit.js new file mode 100644 index 00000000..936847e5 --- /dev/null +++ b/src/transit.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Utils = imports.utils; + +/** + * Get the label to display for the starting point of an itinerary leg. + * leg: the itinerary leg + * isFirstLeg: true if this is the first leg of the itinerary. + */ +function getFromLabel(leg, isFirstLeg) { + if (isFirstLeg) { + if (leg.from) { + /* Translators: this is a format string indicating instructions + * starting a journey at the address given as the parameter + */ + return _("Start at %s").format(leg.from); + } else { + /* Translators: this indicates starting a journey at a location + * with no set name (such as when the user started routing from + * an arbitrary point on the map) + */ + return _("Start"); + } + } else { + return leg.from; + } +} + +/** + * Get the label to display for the destination headsign. + * leg: the itinerary leg + */ +function getHeadsignLabel(leg) { + if (leg.transit && leg.headsign) { + return leg.headsign; + } else if (!leg.transit) { + /* Translators: this is a format string indicating walking a certain + * distance, with the distance expression being the %s placeholder + */ + return _("Walk %s").format(Utils.prettyDistance(leg.distance)); + } else { + return null; + } +} + +/** + * Get the label to display for arrival of the final leg of an itinerary. + */ +function getArrivalLabel(lastLeg) { + if (lastLeg.to) { + /* Translators: this a format string indicating arriving at the + * destination of journey with the arrival address and transit + * stop as the format parameter */ + return _("Arrive at %s").format(lastLeg.to); + } else { + return _("Arrive"); + } +} diff --git a/src/transitArrivalMarker.js b/src/transitArrivalMarker.js new file mode 100644 index 00000000..62547400 --- /dev/null +++ b/src/transitArrivalMarker.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitArrivalMarker = GObject.registerClass( +class TransitArrivalMarker extends MapMarker.MapMarker { + + _init(params) { + let lastPoint = params.leg.polyline[params.leg.polyline.length - 1]; + let location = + new Location.Location({ latitude: lastPoint.latitude, + longitude: lastPoint.longitude + }); + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-end-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitArrivalRow.js b/src/transitArrivalRow.js new file mode 100644 index 00000000..bb5333db --- /dev/null +++ b/src/transitArrivalRow.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Transit = imports.transit; + +var TransitArrivalRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-arrival-row.ui', + InternalChildren: ['arrivalLabel', + 'timeLabel', + 'eventBox', + 'separator'] +}, class TransitArrivalRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._arrivalLabel.label = Transit.getArrivalLabel(lastLeg); + this._timeLabel.label = lastLeg.prettyPrintArrivalTime(); + + this._eventBox.connect('event', (widget, event) => { + this._onEvent(event, lastLeg.toCoordinate); + return true; + }); + } + + _onEvent(event, coord) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(coord[0], coord[1]); + } + } +}); diff --git a/src/transitBoardMarker.js b/src/transitBoardMarker.js new file mode 100644 index 00000000..2bd33027 --- /dev/null +++ b/src/transitBoardMarker.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const ICON_SIZE = 12; +const ACTOR_SIZE = 20; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitBoardMarker = GObject.registerClass( +class TransitBoardMarker extends MapMarker.MapMarker { + + _init(params) { + let firstPoint = params.leg.polyline[0]; + let location = new Location.Location({ latitude: firstPoint.latitude, + longitude: firstPoint.longitude + }); + let leg = params.leg; + + delete params.leg; + params.place = new Place.Place({ location: location }); + super._init(params); + + this.add_actor(this._createActor(leg)); + } + + /* Creates a Clutter actor for the given transit leg, showing the + * corresponding transit type icon and rendered inside a circle using the + * foreground color of the icon taken from the transit legs text color + * attribute and background color taken from the transit legs color + * attribute. + * Also draw an outline in the same color as the icon in case the + * background color above a threashold to improve readability against the + * map background. + */ + _createActor(leg) { + try { + let bgColor = leg.color ? leg.color : TransitPlan.DEFAULT_ROUTE_COLOR; + let fgColor = + Color.getContrastingForegroundColor(bgColor, leg.textColor ? + leg.textColor : + TransitPlan.DEFAULT_ROUTE_TEXT_COLOR); + let hasOutline = + Color.relativeLuminance(bgColor) > OUTLINE_LUMINANCE_THREASHHOLD; + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let fgRed = Color.parseColor(fgColor, 0); + let fgGreen = Color.parseColor(fgColor, 1); + let fgBlue = Color.parseColor(fgColor, 2); + let fgRGBA = new Gdk.RGBA({ red: fgRed, + green: fgGreen, + blue: fgBlue, + alpha: 1.0 + }); + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_icon(leg.iconName, ICON_SIZE, + Gtk.IconLookupFlags.FORCE_SIZE); + let pixbuf = info.load_symbolic(fgRGBA, null, null, null)[0]; + let canvas = new Clutter.Canvas({ width: ACTOR_SIZE, + height: ACTOR_SIZE }); + + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.arc(ACTOR_SIZE / 2, ACTOR_SIZE / 2, ACTOR_SIZE / 2, + 0, Math.PI * 2); + cr.fillPreserve(); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + (ACTOR_SIZE - pixbuf.get_width()) / 2, + (ACTOR_SIZE - pixbuf.get_height()) / 2); + cr.paint(); + + if (hasOutline) { + cr.setSourceRGB(fgRed, fgGreen, fgBlue); + cr.setLineWidth(1); + cr.stroke(); + } + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + + actor.set_content(canvas); + actor.set_size(ACTOR_SIZE, ACTOR_SIZE); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitItineraryRow.js b/src/transitItineraryRow.js new file mode 100644 index 00000000..6c5c965b --- /dev/null +++ b/src/transitItineraryRow.js @@ -0,0 +1,136 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const TransitRouteLabel = imports.transitRouteLabel; + +// maximum number of legs to show before abbreviating with a … in the middle +const MAX_LEGS_SHOWN = 8; + +var TransitItineraryRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-itinerary-row.ui', + InternalChildren: ['timeLabel', + 'durationLabel', + 'summaryGrid'] +}, class TransitItineraryRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + super._init(params); + + this._timeLabel.label = this._itinerary.prettyPrintTimeInterval(); + this._durationLabel.label = this._itinerary.prettyPrintDuration(); + + this._populateSummary(); + } + + get itinerary() { + return this._itinerary; + } + + _populateSummary() { + let length = this._itinerary.legs.length; + /* use compacted route labels when more than 2 legs, to avoid + * overflowing the sidebar width + */ + let useCompact = length > 2; + /* don't show the route labels if too much space is consumed, + * the constant 26 here was empiracally tested out... + */ + let estimatedSpace = this._calculateEstimatedSpace(); + let useContractedLabels = estimatedSpace > 26; + + if (length > MAX_LEGS_SHOWN) { + /* ellipsize list with horizontal dots to avoid overflowing and + * expanding the sidebar + */ + this._renderLegs(this._itinerary.legs.slice(0, MAX_LEGS_SHOWN / 2), + true, true); + this._summaryGrid.add(new Gtk.Label({ visible: true, + label: '\u22ef' } )); + this._renderLegs(this._itinerary.legs.slice(-MAX_LEGS_SHOWN / 2), + true, true); + } else { + this._renderLegs(this._itinerary.legs, useCompact, + useContractedLabels); + } + } + + _renderLegs(legs, useCompact, useContractedLabels) { + let length = legs.length; + + legs.forEach((leg, i) => { + this._summaryGrid.add(this._createLeg(leg, useCompact, + useContractedLabels)); + if (i !== length - 1) + this._summaryGrid.add(new Gtk.Label({ visible: true, + label: '-' })); + }); + } + + /* calculate an estimated relative space-consuption for rendering, + * this is done based on route label character lengths and a fixed + * "placeholder" amount for mode icons and separators, since doing an + * exact pixel-correct calculation would be hard depeding on fonts and + * themes + */ + _calculateEstimatedSpace() { + let length = this._itinerary.legs.length; + /* assume mode icons and the separators consume about twice the space of + * characters + */ + let space = 4 * length - 2; + + this._itinerary.legs.forEach(function(leg) { + if (leg.transit) + space += leg.compactRoute.length; + }); + + return space; + } + + _createLeg(leg, useCompact, useContractedLabels) { + let icon = new Gtk.Image({ icon_name: leg.iconName, visible: true }); + + icon.get_style_context().add_class('sidebar-icon'); + + if (!leg.transit || useContractedLabels) { + /* if this is a non-transit leg (walking), or in case we should + * display only a mode icon (to save space), insert a sole icon */ + return icon; + } else { + /* for transit legs put besides a short route label */ + let grid = new Gtk.Grid({ visible: true, column_spacing: 2 }); + + grid.attach(icon, 0, 0, 1, 1); + grid.attach(new TransitRouteLabel.TransitRouteLabel({ leg: leg, + compact: useCompact, + visible: true }), + 1, 0, 1, 1); + + return grid; + } + } +}); diff --git a/src/transitLegRow.js b/src/transitLegRow.js new file mode 100644 index 00000000..1d7444e3 --- /dev/null +++ b/src/transitLegRow.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const InstructionRow = imports.instructionRow; +const Transit = imports.transit; +const TransitRouteLabel = imports.transitRouteLabel; +const TransitStopRow = imports.transitStopRow; +const Utils = imports.utils; + +var TransitLegRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-leg-row.ui', + InternalChildren: ['modeImage', + 'fromLabel', + 'routeGrid', + 'timeLabel', + 'footerStack', + 'expandButton', + 'detailsRevealer', + 'agencyLabel', + 'collapsButton', + 'instructionList', + 'eventBox'] +}, class TransitLegRow extends Gtk.ListBoxRow { + + _init(params) { + this._leg = params.leg; + delete params.leg; + + this._start = params.start; + delete params.start; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._modeImage.icon_name = this._leg.iconName; + this._fromLabel.label = Transit.getFromLabel(this._leg, this._start); + + if (this._leg.transit) { + let routeLabel = new TransitRouteLabel.TransitRouteLabel({ + leg: this._leg, + }); + + this._routeGrid.add(routeLabel); + + this._agencyLabel.visible = true; + + if (this._leg.agencyUrl) { + let url = GLib.markup_escape_text(this._leg.agencyUrl, -1); + /* we need to double-escape the tooltip text, as GTK+ treats it as + * markup + */ + let tooltip = GLib.markup_escape_text(url, -1); + this._agencyLabel.label = + '%s'.format(url, tooltip, + this._leg.agencyName); + } else { + this._agencyLabel.label = this._leg.agencyName; + } + } else { + this._expandButton.tooltip_text = _("Show walking instructions"); + this._collapsButton.tooltip_text = _("Hide walking instructions"); + } + + if (!this._leg.transit || this._leg.headsign) { + /* Restrict headsign label to 20 characters to avoid horizontally + * overflowing the sidebar. + */ + let headsignLabel = new Gtk.Label({ visible: true, + can_focus: false, + use_markup: true, + hexpand: true, + margin_start: 3, + max_width_chars: 20, + ellipsize: Pango.EllipsizeMode.END, + halign: Gtk.Align.START }); + let label = + GLib.markup_escape_text(Transit.getHeadsignLabel(this._leg), -1); + + headsignLabel.label = '%s'.format(label); + headsignLabel.get_style_context().add_class('dim-label'); + this._routeGrid.add(headsignLabel); + } + + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + + if (this._hasIntructions()) + this._populateInstructions(); + else + this._footerStack.visible_child_name = 'separator'; + + this._expandButton.connect('clicked', this._expand.bind(this)); + this._collapsButton.connect('clicked', this._collaps.bind(this)); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) { + if (row.turnPoint) + this._mapView.showTurnPoint(row.turnPoint); + else + this._mapView.showTransitStop(row.stop, this._leg); + } + }); + + this._eventBox.connect('event', (widget, event) => { + this._handleEventBox(event); + return true; + }); + + this._isExpanded = false; + } + + // Handle events received on the EventBox for expanding when clicking + _handleEventBox(event) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + if (this._isExpanded) { + this._collaps(); + } else { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(this._leg.fromCoordinate[0], + this._leg.fromCoordinate[1]); + if (this._hasIntructions()) + this._expand(); + } + } + } + + _expand() { + this._footerStack.visible_child_name = 'separator'; + this._detailsRevealer.reveal_child = true; + /* collaps the time label down to just show the start time when + * revealing intermediate stop times, as the arrival time is displayed + * at the last stop + */ + this._timeLabel.label = this._leg.prettyPrintDepartureTime(); + this._isExpanded = true; + } + + _collaps() { + this._footerStack.visible_child_name = 'expander'; + this._detailsRevealer.reveal_child = false; + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + this._isExpanded = false; + } + + _hasIntructions() { + return this._leg.transit || this._leg.walkingInstructions; + } + + _populateInstructions() { + if (this._leg.transit) { + let stops = this._leg.intermediateStops; + for (let index = 0; index < stops.length; index++) { + let stop = stops[index]; + let row = + new TransitStopRow.TransitStopRow({ visible: true, + stop: stop, + final: index === stops.length - 1 }); + this._instructionList.add(row); + } + } else { + /* don't output the starting and ending instructions from the walk + * route, since these are explicitely added by the itinerary + */ + for (let index = 1; + index < this._leg.walkingInstructions.length - 1; + index++) { + let instruction = this._leg.walkingInstructions[index]; + let row = + new InstructionRow.InstructionRow({ visible: true, + turnPoint: instruction }); + + this._instructionList.add(row); + } + } + } +}); diff --git a/src/transitMoreRow.js b/src/transitMoreRow.js new file mode 100644 index 00000000..64228b19 --- /dev/null +++ b/src/transitMoreRow.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var TransitMoreRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-more-row.ui', + InternalChildren: ['stack', + 'label'] +}, class TransitMoreRow extends Gtk.ListBoxRow { + + _init(params) { + super._init(params); + + if (Application.routeQuery.arriveBy) + this._label.label = _("Load earlier alternatives"); + else + this._label.label = _("Load later alternatives"); + } + + startLoading() { + this._stack.visible_child_name = 'spinner'; + } + + showNoMore() { + this.activatable = false; + this._label.get_style_context().add_class('dim-label'); + this._stack.visible_child_name = 'label'; + + if (Application.routeQuery.arriveBy) + this._label.label = _("No earlier alternatives found."); + else + this._label.label = _("No later alternatives found."); + } +}); diff --git a/src/transitOptions.js b/src/transitOptions.js new file mode 100644 index 00000000..0a964eef --- /dev/null +++ b/src/transitOptions.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +var TransitOptions = class TransitOptions { + + constructor() { + this._showAllTransitTypes = true; + this._transitTypes = []; + } + + get showAllTransitTypes() { + return this._showAllTransitTypes; + } + + /* When set to true, show any mode of transportation, else only show modes + * added with addTransitType() + */ + set showAllTransitTypes(showAllTransitTypes) { + this._showAllTransitTypes = showAllTransitTypes; + this._transitTypes = []; + } + + /* Add an explicit transport mode to show + */ + addTransitType(transitType) { + this._showAllTransitTypes = false; + this._transitTypes.push(transitType); + } + + get transitTypes() { + return this._transitTypes; + } +}; + +/* return true if the passed in options objects are equal, either both + * accept any transit type, or both contains the same set of types, otherwise + * return false + */ +function equals(first, second) { + if (first.showAllTransitTypes && second.showAllTransitTypes) { + return true; + } else if (first.transitTypes.length !== second.transitTypes.length) { + return false; + } else { + for (let type of first.transitTypes) { + if (second.transitTypes.indexOf(type) === -1) + return false; + } + + return true; + } +} diff --git a/src/transitOptionsPanel.js b/src/transitOptionsPanel.js new file mode 100644 index 00000000..3039b40a --- /dev/null +++ b/src/transitOptionsPanel.js @@ -0,0 +1,209 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const HVT = imports.hvt; +const Time = imports.time; +const TransitOptions = imports.transitOptions; +const TransitPlan = imports.transitPlan; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +var TransitOptionsPanel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-options-panel.ui', + InternalChildren: ['transitTimeOptionsComboBox', + 'transitTimeEntry', + 'transitDateButton', + 'transitDateCalendar', + 'transitParametersMenuButton', + 'busCheckButton', + 'tramCheckButton', + 'trainCheckButton', + 'subwayCheckButton', + 'ferryCheckButton', + 'airplaneCheckButton'] +}, class TransitOptionsPanel extends Gtk.Grid { + + _init(params) { + this._query = Application.routeQuery; + super._init(params); + this._initTransitOptions(); + } + + reset() { + /* reset to indicate departure now and forget any previous manually + * set time and date + */ + this._transitTimeOptionsComboBox.active_id = 'leaveNow'; + this._timeSelected = false; + this._dateSelected = false; + this._lastOptions = new TransitOptions.TransitOptions(); + } + + _initTransitOptions() { + this._transitTimeOptionsComboBox.connect('changed', + this._onTransitTimeOptionsComboboxChanged.bind(this)); + this._transitTimeEntry.connect('activate', + this._onTransitTimeEntryActivated.bind(this)); + /* trigger an update of the query time as soon as focus leave the time + * entry, to allow the user to enter a time before selecting start + * and destination without having to press enter */ + this._transitTimeEntry.connect('focus-out-event', + this._onTransitTimeEntryActivated.bind(this)); + this._transitDateButton.popover.get_child().connect('day-selected-double-click', + this._onTransitDateCalenderDaySelected.bind(this)); + this._transitDateButton.connect('toggled', + this._onTransitDateButtonToogled.bind(this)); + this._transitParametersMenuButton.connect('toggled', + this._onTransitParametersToggled.bind(this)) + } + + _onTransitTimeOptionsComboboxChanged() { + if (this._transitTimeOptionsComboBox.active_id === 'leaveNow') { + this._transitTimeEntry.visible = false; + this._transitDateButton.visible = false; + this._query.arriveBy = false; + this._query.date = null; + this._query.time = null; + this._timeSelected = null; + this._dateSelected = null; + } else { + this._transitTimeEntry.visible = true; + this._transitDateButton.visible = true; + + if (!this._timeSelected) + this._updateTransitTimeEntry(GLib.DateTime.new_now_local()); + + if (!this._dateSelected) + this._updateTransitDateButton(GLib.DateTime.new_now_local()); + + if (this._transitTimeOptionsComboBox.active_id === 'arriveBy') { + this._query.arriveBy = true; + } else { + this._query.arriveBy = false; + } + } + } + + _updateTransitTimeEntry(time) { + if (clockFormat === '24h') + this._transitTimeEntry.text = time.format('%R'); + else + this._transitTimeEntry.text = time.format('%r'); + } + + _onTransitTimeEntryActivated() { + let timeString = this._transitTimeEntry.text; + + if (timeString && timeString.length > 0) { + timeString = Time.parseTimeString(timeString); + + /* only trigger an update if a different time was entered */ + if (timeString && timeString !== this._timeSelected) { + this._query.time = timeString; + /* remember that the user has selected a time */ + this._timeSelected = timeString; + } + } + } + + _updateTransitDateButton(date) { + this._transitDateButton.label = + /* + * Translators: this is a format string giving the equivalent to + * "may 29" according to the current locale's convensions. + */ + date.format(C_("month-day-date", "%b %e")); + } + + _onTransitDateCalenderDaySelected() { + let calendar = this._transitDateButton.popover.get_child(); + let year = calendar.year; + let month = calendar.month + 1; + let day = calendar.day; + let date = '%04d-%02d-%02d'.format(year, month, day); + + /* only trigger an update if a different date was selected */ + if (date !== this._dateSelected) { + this._query.date = date; + this._transitDateButton.active = false; + this._updateTransitDateButton(GLib.DateTime.new_local(year, month, day, + 0, 0, 0)); + /* remember that the user has already selected a date */ + this._dateSelected = date; + } + } + + _onTransitDateButtonToogled() { + if (!this._transitDateButton.active) + this._onTransitDateCalenderDaySelected(); + } + + _createTransitOptions() { + let options = new TransitOptions.TransitOptions(); + let busSelected = this._busCheckButton.active; + let tramSelected = this._tramCheckButton.active; + let trainSelected = this._trainCheckButton.active; + let subwaySelected = this._subwayCheckButton.active; + let ferrySelected = this._ferryCheckButton.active; + let airplaneSelected = this._airplaneCheckButton.active; + + if (busSelected && tramSelected && trainSelected && subwaySelected && + ferrySelected && airplaneSelected) { + options.showAllTransitTypes = true; + } else { + if (busSelected) + options.addTransitType(TransitPlan.RouteType.BUS); + if (tramSelected) + options.addTransitType(TransitPlan.RouteType.TRAM); + if (trainSelected) + options.addTransitType(TransitPlan.RouteType.TRAIN); + if (subwaySelected) + options.addTransitType(TransitPlan.RouteType.SUBWAY); + if (ferrySelected) + options.addTransitType(TransitPlan.RouteType.FERRY); + if (airplaneSelected) + options.addTransitType(HVT.AIR_SERVICE); + } + + return options; + } + + _onTransitParametersToggled() { + if (!this._transitParametersMenuButton.active) { + let options = this._createTransitOptions(); + + if (!TransitOptions.equals(options, this._lastOptions)) { + this._query.transitOptions = options; + this._lastOptions = options; + } + } + } + }); diff --git a/src/transitPlan.js b/src/transitPlan.js new file mode 100644 index 00000000..a63c07eb --- /dev/null +++ b/src/transitPlan.js @@ -0,0 +1,836 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const HVT = imports.hvt; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +/* + * These constants corresponds to the routeType attribute of transit legs + * in original GTFS specification. + */ +var RouteType = { + NON_TRANSIT: -1, + TRAM: 0, + SUBWAY: 1, + TRAIN: 2, + BUS: 3, + FERRY: 4, + /* Cable car referres to street-level cabel cars, where the propulsive + * cable runs in a slot between the tracks beneeth the car + * https://en.wikipedia.org/wiki/Cable_car_%28railway%29 + * For example the cable cars in San Fransisco + * https://en.wikipedia.org/wiki/San_Francisco_cable_car_system + */ + CABLE_CAR: 5, + /* Gondola referres to a suspended cable car, typically aerial cable cars + * where the car is suspended from the cable + * https://en.wikipedia.org/wiki/Gondola_lift + * For example the "Emirates Air Line" in London + * https://en.wikipedia.org/wiki/Emirates_Air_Line_%28cable_car%29 + */ + GONDOLA: 6, + /* Funicular referres to a railway system designed for steep inclines, + * https://en.wikipedia.org/wiki/Funicular + */ + FUNICULAR: 7 +}; + +/* extra time to add to the first itinerary leg when it's a walking leg */ +const WALK_SLACK = 120; + +function _printTimeWithTZOffset(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + if (clockFormat === '24h') + return date.format('%R'); + else + return date.format('%r'); +} + +var DEFAULT_ROUTE_COLOR = '4c4c4c'; +var DEFAULT_ROUTE_TEXT_COLOR = 'ffffff'; + +var Plan = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'no-more-results': {}, + 'itinerary-selected': { param_types: [GObject.TYPE_OBJECT] }, + 'itinerary-deselected': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Plan extends GObject.Object { + + _init(params) { + super._init(params); + this.reset(); + this._attribution = null; + this._attributionUrl = null; + } + + get itineraries() { + return this._itineraries; + } + + get selectedItinerary() { + return this._selectedItinerary; + } + + get attribution() { + return this._attribution; + } + + set attribution(attribution) { + this._attribution = attribution; + } + + get attributionUrl() { + return this._attributionUrl; + } + + set attributionUrl(attributionUrl) { + this._attributionUrl = attributionUrl; + } + + update(itineraries) { + this._itineraries = itineraries; + this.bbox = this._createBBox(); + this.emit('update'); + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + updateWithNewItineraries(itineraries, arriveBy, extendPrevious) { + /* sort itineraries, by departure time ascending if querying + * by leaving time, by arrival time descending when querying + * by arriving time + */ + if (arriveBy) + itineraries.sort(sortItinerariesByArrivalDesc); + else + itineraries.sort(sortItinerariesByDepartureAsc); + + let newItineraries = + extendPrevious ? this.itineraries.concat(itineraries) : itineraries; + + this.update(newItineraries); + } + + + + reset() { + this._itineraries = []; + this.bbox = null; + this._selectedItinerary = null; + this._attribution = null; + this._attributionUrl = null; + this.emit('reset'); + } + + noMoreResults() { + this.emit('no-more-results'); + } + + selectItinerary(itinerary) { + this._selectedItinerary = itinerary; + this.emit('itinerary-selected', itinerary); + } + + deselectItinerary() { + this._selectedItinerary = null; + this.emit('itinerary-deselected'); + } + + error(msg) { + this.emit('error', msg); + } + + noRouteFound() { + this.emit('error', _("No route found.")); + } + + noTimetable() { + this.emit('error', _("No timetable data found for this route.")); + } + + requestFailed() { + this.emit('error', _("Route request failed.")); + } + + noProvider() { + this.emit('error', _("No provider found for this route.")); + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + this._itineraries.forEach(function(itinerary) { + bbox.compose(itinerary.bbox); + }); + return bbox; + } +}); + +var Itinerary = GObject.registerClass( +class Itinerary extends GObject.Object { + + _init(params) { + this._duration = params.duration; + delete params.duration; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._transfers = params.transfers; + delete params.transfers; + + this._legs = params.legs; + delete params.legs; + + super._init(params); + + this.bbox = this._createBBox(); + } + + get duration() { + return this._duration; + } + + get departure() { + return this._departure; + } + + get arrival() { + return this._arrival; + } + + get transfers() { + return this._transfers; + } + + get legs() { + return this._legs; + } + + /* adjust timings of the legs of the itinerary, using the real duration of + * walking legs, also sets the timezone offsets according to adjacent + * transit legs + */ + _adjustLegTimings() { + if (this.legs.length === 1 && !this.legs[0].transit) { + /* if there is only one leg, and it's a walking one, just need to + * adjust the arrival time + */ + let leg = this.legs[0]; + leg.arrival = leg.departure + leg.duration * 1000; + + return; + } + + for (let i = 0; i < this.legs.length; i++) { + let leg = this.legs[i]; + + if (!leg.transit) { + if (i === 0) { + /* for the first leg subtract the walking time plus a + * safty slack from the departure time of the following + * leg + */ + let nextLeg = this.legs[i + 1]; + leg.departure = + nextLeg.departure - leg.duration * 1000 - WALK_SLACK; + leg.arrival = leg.departure + leg.duration * 1000; + // use the timezone offset from the first transit leg + leg.agencyTimezoneOffset = nextLeg.agencyTimezoneOffset; + } else { + /* for walking legs in the middle or at the end, just add + * the actual walking walk duration to the arrival time of + * the previous leg + */ + let previousLeg = this.legs[i - 1]; + leg.departure = previousLeg.arrival; + leg.arrival = previousLeg.arrival + leg.duration * 1000; + // use the timezone offset of the previous (transit) leg + leg.agencyTimezoneOffset = previousLeg.agencyTimezoneOffset; + } + } + } + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + + this._legs.forEach(function(leg) { + bbox.compose(leg.bbox); + }); + + return bbox; + } + + prettyPrintTimeInterval() { + /* Translators: this is a format string for showing a departure and + * arrival time, like: + * "12:00 – 13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s \u2013 %s").format(this._getDepartureTime(), + this._getArrivalTime()); + } + + _getDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg */ + return _printTimeWithTZOffset(this.departure, + this.legs[0].agencyTimezoneOffset); + } + + _getArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg */ + let lastLeg = this.legs[this.legs.length - 1]; + return _printTimeWithTZOffset(this.arrival, + lastLeg.agencyTimezoneOffset); + } + + prettyPrintDuration() { + let mins = this.duration / 60; + + if (mins < 60) { + /* translators: this is an indication for a trip duration of + * less than an hour, with only the minutes part, using plural forms + * as appropriate + */ + return ngettext("%d minute", "%d minutes", mins).format(mins); + } else { + let hours = Math.floor(mins / 60); + + mins = mins % 60; + + if (mins === 0) { + /* translators: this is an indication for a trip duration, + * where the duration is an exact number of hours (i.e. no + * minutes part), using plural forms as appropriate + */ + return ngettext("%d hour", "%d hours", hours).format(hours); + } else { + /* translators: this is an indication for a trip duration + * where the duration contains an hour and minute part, it's + * pluralized on the hours part + */ + return ngettext("%d:%02d hour", "%d:%02d hours", hours).format(hours, mins); + } + } + } + + adjustTimings() { + this._adjustLegTimings(); + this._departure = this._legs[0].departure; + this._arrival = this._legs[this._legs.length - 1].arrival; + this._duration = (this._arrival - this._departure) / 1000; + } + + _getTransitDepartureLeg() { + for (let i = 0; i < this._legs.length; i++) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + _getTransitArrivalLeg() { + for (let i = this._legs.length - 1; i >= 0; i--) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + /* gets the departure time of the first transit leg */ + get transitDepartureTime() { + return this._getTransitDepartureLeg().departure; + } + + /* gets the timezone offset of the first transit leg */ + get transitDepartureTimezoneOffset() { + return this._getTransitDepartureLeg().timezoneOffset; + } + + /* gets the arrival time of the final transit leg */ + get transitArrivalTime() { + return this._getTransitArrivalLeg().arrival; + } + + /* gets the timezone offset of the final transit leg */ + get transitArrivalTimezoneOffset() { + return this._getTransitArrivalLeg().timezoneOffset; + } + + get isWalkingOnly() { + return this.legs.length === 1 && !this.legs[0].isTransit; + } +}); + +var Leg = class Leg { + + constructor(params) { + this._route = params.route; + delete params.route; + + this._routeType = params.routeType; + delete params.routeType; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._polyline = params.polyline; + delete params.polyline; + + this._fromCoordinate = params.fromCoordinate; + delete params.fromCoordinate; + + this._toCoordinate = params.toCoordinate; + delete params.toCoordinate; + + this._from = params.from; + delete params.from; + + this._to = params.to; + delete params.to; + + this._intermediateStops = params.intermediateStops; + delete params.intermediateStops; + + this._headsign = params.headsign; + delete params.headsign; + + this._isTransit = params.isTransit; + delete params.isTransit; + + this._walkingInstructions = params.walkingInstructions; + delete params.walkingInstructions; + + this._distance = params.distance; + delete params.distance; + + this._duration = params.duration; + delete params.duration; + + this._agencyName = params.agencyName; + delete params.agencyName; + + this._agencyUrl = params.agencyUrl; + delete params.agencyUrl; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._color = params.color; + delete params.color; + + this._textColor = params.textColor; + delete params.textColor; + + this._tripShortName = params.tripShortName; + delete params.tripShortName; + + this.bbox = this._createBBox(); + + this._compactRoute = null; + } + + get route() { + return this._route; + } + + set route(route) { + this._route = route; + } + + // try to get a shortened route name, suitable for overview rendering + get compactRoute() { + if (this._compactRoute) + return this._compactRoute; + + if (this._route.startsWith(this._agencyName)) { + /* if the agency name is a prefix of the route name, display the + * agency name in the overview, this way we get a nice "transition" + * into the expanded route showing the full route name + */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && + (this._agencyName.length < this._tripShortName.length)) { + /* if the agency name is shorter than the trip short name, + * which can sometimes be a more "internal" number, like a + * "train number", which is less known by the general public, + * prefer the agency name */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && this._tripShortName.length <= 6) { + /* if the above conditions are unmet, use the trip short name + * as a fallback if it was shorter than the original route name */ + this._compactRoute = this._tripShortName; + } else if (this._color) { + /* as a fallback when the route has a defined color, + * use an empty compact label to get a colored badge */ + this._compactRoute = ''; + } else { + /* if none of the above is true, use the original route name, + * and rely on label ellipsization */ + this._compactRoute = this._route; + } + + return this._compactRoute; + } + + get routeType() { + return this._routeType; + } + + set routeType(routeType) { + this._routeType = routeType; + } + + get departure() { + return this._departure; + } + + set departure(departure) { + this._departure = departure; + } + + get arrival() { + return this._arrival; + } + + get timezoneOffset() { + return this._agencyTimezoneOffset; + } + + set arrival(arrival) { + this._arrival = arrival; + } + + get polyline() { + return this._polyline; + } + + set polyline(polyline) { + this._polyline = polyline; + } + + get fromCoordinate() { + return this._fromCoordinate; + } + + get toCoordinate() { + return this._toCoordinate; + } + + get from() { + return this._from; + } + + get to() { + return this._to; + } + + get intermediateStops() { + return this._intermediateStops; + } + + set intermediateStops(intermediateStops) { + this._intermediateStops = intermediateStops; + } + + get headsign() { + return this._headsign; + } + + get transit() { + return this._isTransit; + } + + get distance() { + return this._distance; + } + + set distance(distance) { + this._distance = distance; + } + + get duration() { + return this._duration; + } + + get agencyName() { + return this._agencyName; + } + + get agencyUrl() { + return this._agencyUrl; + } + + get agencyTimezoneOffset() { + return this._agencyTimezoneOffset; + } + + set agencyTimezoneOffset(tzOffset) { + this._agencyTimezoneOffset = tzOffset; + } + + get color() { + return this._color || DEFAULT_ROUTE_COLOR; + } + + set color(color) { + this._color = color; + } + + get textColor() { + return this._textColor || DEFAULT_ROUTE_TEXT_COLOR; + } + + set textColor(textColor) { + this._textColor = textColor; + } + + get tripShortName() { + return this._tripShortName; + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + + this.polyline.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }); + + return bbox; + } + + get iconName() { + if (this._isTransit) { + let type = this._routeType; + switch (type) { + /* special case HVT codes */ + case HVT.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + default: + let hvtSupertype = HVT.supertypeOf(type); + + if (hvtSupertype !== -1) + type = hvtSupertype; + + switch (type) { + case RouteType.TRAM: + case HVT.TRAM_SERVICE: + return 'route-transit-tram-symbolic'; + + case RouteType.SUBWAY: + case HVT.METRO_SERVICE: + case HVT.URBAN_RAILWAY_SERVICE: + case HVT.UNDERGROUND_SERVICE: + return 'route-transit-subway-symbolic'; + + case RouteType.TRAIN: + case HVT.RAILWAY_SERVICE: + case HVT.SUBURBAN_RAILWAY_SERVICE: + return 'route-transit-train-symbolic'; + + case RouteType.BUS: + case HVT.BUS_SERVICE: + case HVT.COACH_SERVICE: + case HVT.TROLLEYBUS_SERVICE: + /* TODO: handle a special case icon for trolleybus */ + return 'route-transit-bus-symbolic'; + + case RouteType.FERRY: + case HVT.WATER_TRANSPORT_SERVICE: + case HVT.FERRY_SERVICE: + return 'route-transit-ferry-symbolic'; + + case RouteType.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + + case RouteType.GONDOLA: + case HVT.TELECABIN_SERVICE: + return 'route-transit-gondolalift-symbolic'; + + case RouteType.FUNICULAR: + case HVT.FUNICULAR_SERVICE: + return 'route-transit-funicular-symbolic'; + + case HVT.TAXI_SERVICE: + /* TODO: should we have a dedicated taxi icon? */ + return 'route-car-symbolic'; + + case HVT.AIR_SERVICE: + return 'route-transit-airplane-symbolic'; + + default: + /* use a fallback question mark icon in case of some future, + * for now unknown mode appears */ + return 'dialog-question-symbolic'; + } + } + } else { + return 'route-pedestrian-symbolic'; + } + } + + get walkingInstructions() { + return this._walkingInstructions; + } + + set walkingInstructions(walkingInstructions) { + this._walkingInstructions = walkingInstructions; + } + + /* Pretty print timing for a transit leg, set params.isStart: true when + * printing for the starting leg of an itinerary. + * For starting walking legs, only the departure time will be printed, + * otherwise the departure and arrival time of the leg (i.e. transit ride + * or an in-between walking section) will be printed. + */ + prettyPrintTime(params) { + if (!this.transit && params.isStart) { + return this.prettyPrintDepartureTime(); + } else { + /* Translators: this is a format string for showing a departure and + * arrival time in a more compact manner to show in the instruction + * list for an itinerary, like: + * "12:00–13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s\u2013%s").format(this.prettyPrintDepartureTime(), + this.prettyPrintArrivalTime()); + } + } + + prettyPrintDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg + */ + return _printTimeWithTZOffset(this.departure, this.agencyTimezoneOffset); + } + + prettyPrintArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg + */ + return _printTimeWithTZOffset(this.arrival, this.agencyTimezoneOffset); + } +}; + +var Stop = class Stop { + + constructor(params) { + this._name = params.name; + delete params.name; + + this._arrival = params.arrival; + delete params.arrival; + + this._departure = params.departure; + delete params.departure; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._coordinate = params.coordinate; + delete params.coordinate; + } + + get name() { + return this._name; + } + + get coordinate() { + return this._coordinate; + } + + prettyPrint(params) { + if (params.isFinal) { + /* take the stop arrival time and offset using the timezone + * offset of the last leg + */ + return _printTimeWithTZOffset(this._arrival, + this._agencyTimezoneOffset); + } else { + /* take the stop departure time and offset using the timezone + * offset of the first leg + */ + return _printTimeWithTZOffset(this._departure, + this._agencyTimezoneOffset); + } + } +}; + +function sortItinerariesByDepartureAsc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * starting at the earliest possible departure time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.departure > second.departure; +} + +function sortItinerariesByArrivalDesc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * ending at the latest possible arrival time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.arrival < second.arrival; +} diff --git a/src/transitPrintLayout.js b/src/transitPrintLayout.js new file mode 100644 index 00000000..323ed1e7 --- /dev/null +++ b/src/transitPrintLayout.js @@ -0,0 +1,331 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Pango = imports.gi.Pango; + +const Color = imports.color; +const Gfx = imports.gfx; +const MapSource = imports.mapSource; +const PrintLayout = imports.printLayout; +const Transit = imports.transit; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; + +// stroke color for walking paths +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 0, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +// All following constants are ratios of surface size to page size +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; +const _Instruction = { + SCALE_X: 0.9, + SCALE_Y: 0.1, + SCALE_MARGIN: 0.01 +}; + +// luminance threashhold for drawing outline around route label badges +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitPrintLayout = GObject.registerClass( +class TransitPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + params.totalSurfaces = this._getNumberOfSurfaces(); + + super._init(params); + } + + _getNumberOfSurfaces() { + // always one fixed surface for the title label + let numSurfaces = 1; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + numSurfaces++; + // add a surface when a leg of the itinerary should have a map view + if (this._legHasMiniMap(i)) + numSurfaces++; + } + + // always include the arrival row + numSurfaces++; + + return numSurfaces; + } + + _drawMapView(width, height, zoomLevel, index) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + let leg = this._itinerary.legs[index]; + let nextLeg = this._itinerary.legs[index + 1]; + let previousLeg = index === 0 ? null : this._itinerary.legs[index - 1]; + + view.set_map_source(mapSource); + /* we want to add the path layer before the marker layer, so that + * boarding marker are drawn about the walk dash lines + */ + this._addRouteLayer(view, index); + view.add_layer(markerLayer); + + markerLayer.add_marker(this._createStartMarker(leg, previousLeg)); + if (nextLeg) + markerLayer.add_marker(this._createBoardMarker(nextLeg)); + else + markerLayer.add_marker(this._createArrivalMarker(leg)); + + /* in some cases, we seem to get get zero distance walking instructions + * within station complexes, don't try to show a bounding box for low + * distances, instead center on the spot + */ + if (leg.distance < 10) + view.center_on(leg.fromCoordinate[0], leg.fromCoordinate[1]); + else + view.ensure_visible(leg.bbox, false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createStartMarker(leg, previousLeg) { + return new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg }); + } + + _createBoardMarker(leg) { + return new TransitBoardMarker.TransitBoardMarker({ leg: leg }); + } + + _createArrivalMarker(leg) { + return new TransitArrivalMarker.TransitArrivalMarker({ leg: leg }); + } + + _addRouteLayer(view, index) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + let leg = this._itinerary.legs[index]; + + routeLayer.set_dash([5, 5]); + view.add_layer(routeLayer); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way + */ + if (index > 0 && !leg.transit) { + let previousLeg = this._itinerary.legs[index - 1]; + let lastPoint = + previousLeg.polyline[previousLeg.polyline.length - 1]; + + routeLayer.add_node(lastPoint); + } + + leg.polyline.forEach((node) => routeLayer.add_node(node)); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one + */ + if (index < this._itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = this._itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + } + + _drawInstruction(width, height, leg, start) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let timeWidth = !leg.transit && start ? height : height * 2; + let fromText = Transit.getFromLabel(leg, start); + let routeWidth = 0; + + this._drawIcon(cr, leg.iconName, width, height); + this._drawText(cr, fromText, this._rtl ? timeWidth : height, 0, + width - height - timeWidth, height / 2, Pango.Alignment.LEFT); + + if (leg.transit) { + let color = leg.color; + let textColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD; + let routeText = + this._createTextLayout(cr, leg.route, width - height - timeWidth, + height / 2, + this._rtl ? Pango.Alignment.RIGHT : + Pango.Alignment.LEFT); + let [pWidth, pHeight] = routeText.get_pixel_size(); + let routePadding = 3; + let routeHeight = pHeight + routePadding * 2; + routeWidth = Math.max(pWidth, pHeight) + routePadding * 2; + let routeX = this._rtl ? width - height - routeWidth - 1 : height; + let routeY = height / 2 + ((height / 2) - routeHeight) / 2; + + + textColor = Color.getContrastingForegroundColor(color, textColor); + Gfx.drawColoredBagde(cr, color, hasOutline ? textColor : null, + routeX, routeY, routeWidth, routeHeight); + this._drawTextLayoutWithColor(cr, routeText, + routeX + routePadding + + (routeWidth - pWidth - + routePadding * 2) / 2, + routeY + routePadding, + routeWidth - routePadding * 2, + routeHeight - routePadding * 2, + textColor, Pango.Alignment.LEFT); + + // introduce some additional padding before the headsign label + routeWidth += routePadding; + } + + let headsign = Transit.getHeadsignLabel(leg); + + if (headsign) { + let headsignLayout = this._createTextLayout(cr, headsign, + width - height - timeWidth - routeWidth, + height / 2, + Pango.Alignment.LEFT); + let [pWidth, pHeight] = headsignLayout.get_pixel_size(); + this._drawTextLayoutWithColor(cr, headsignLayout, + this._rtl ? timeWidth : height + routeWidth, + height / 2 + (height / 2 - pHeight) / 2, + width - height - timeWidth - routeWidth, + height / 2, '888888', + Pango.Alignment.LEFT); + } + this._drawTextVerticallyCentered(cr, leg.prettyPrintTime({ isStart: start }), + timeWidth, height, + this._rtl ? 0 : width - timeWidth - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _drawArrival(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._drawIcon(cr, 'maps-point-end-symbolic', width, height); + // draw the arrival text + this._drawTextVerticallyCentered(cr, Transit.getArrivalLabel(lastLeg), + width - height * 3, + height, this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + // draw arrival time + this._drawTextVerticallyCentered(cr, lastLeg.prettyPrintArrivalTime(), + height, height, + this._rtl ? 0 : width - height - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _legHasMiniMap(index) { + let leg = this._itinerary.legs[index]; + return !leg.transit; + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let dy = headerHeight + headerMargin; + + this._createNewPage(); + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + let leg = this._itinerary.legs[i]; + let hasMap = this._legHasMiniMap(i); + let instructionDy = instructionHeight + instructionMargin; + let mapDy = hasMap ? mapViewHeight + mapViewMargin : 0; + + dy = instructionDy + mapDy; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, leg, + i === 0); + this._cursorY += instructionDy; + + if (hasMap) { + let nextLeg = i < this._itinerary.legs.length - 1 ? + this._itinerary.legs[i + 1] : null; + this._drawMapView(mapViewWidth, mapViewHeight, mapViewZoomLevel, i); + this._cursorY += mapDy; + } + } + + this._drawArrival(instructionWidth, instructionHeight); + } +}); diff --git a/src/transitRouteLabel.js b/src/transitRouteLabel.js new file mode 100644 index 00000000..8e1f0388 --- /dev/null +++ b/src/transitRouteLabel.js @@ -0,0 +1,124 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Gfx = imports.gfx; +const Utils = imports.utils; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; +/* the threashhold when using a dark theme, when the color is darker draw an + * outline around the label + */ +const DARK_OUTLINE_LUMINANCE_THREASHHOLD = 0.1; + +// fallback high contrast colors +const HIGH_CONTRAST_COLOR = '000000'; +const HIGH_CONTRAST_TEXT_COLOR = 'ffffff'; + +var TransitRouteLabel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-route-label.ui', +}, class TransitRouteLabel extends Gtk.Label { + + _init(params) { + let leg = params.leg; + let compact = params.compact; + + delete params.leg; + delete params.compact; + super._init(params); + + this._setLabel(leg, compact); + this.connect('draw', this._onDraw.bind(this)); + } + + _setLabel(leg, compact) { + let color = leg.color; + let textColor = leg.textColor; + let label = leg.route; + let usingDarkTheme = Utils.isUsingDarkThemeVariant(); + let usingHighContrastTheme = Utils.isUsingHighContrastTheme(); + + textColor = Color.getContrastingForegroundColor(color, textColor); + + /* if using the high contrast theme and a label is set, fallback to + * hight-contrasting colors, if no label, assume the route color is + * more relevant and keep it also for high contrast + */ + if (usingHighContrastTheme && ((compact && leg.compactRoute) || + (!compact && label))) { + color = HIGH_CONTRAST_COLOR; + textColor = HIGH_CONTRAST_TEXT_COLOR; + } + + this._color = color; + this._textColor = textColor; + + if ((!usingDarkTheme && + Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD) || + (usingDarkTheme && + Color.relativeLuminance(color) < DARK_OUTLINE_LUMINANCE_THREASHHOLD)) { + this._hasOutline = true; + } + + /* for compact (overview) mode, try to shorten the label if the route + * name was more than 6 characters + */ + if (compact && label.length > 6) + label = leg.compactRoute; + + if (compact) { + /* restrict number of characters shown in the label when compact mode + * is requested + */ + this.max_width_chars = 6; + } else if (leg && !leg.headsign) { + // if there is no trip headsign to display, allow more space + this.max_width_chars = 25; + } + + this.label = '%s'.format( + textColor, + GLib.markup_escape_text(label, -1)); + } + + /* I didn't find any easy/obvious way to override widget background color + * and getting rounded corner just using CSS styles, so doing a custom + * Cairo drawing of a "roundrect" + */ + _onDraw(widget, cr) { + let width = widget.get_allocated_width(); + let height = widget.get_allocated_height(); + + Gfx.drawColoredBagde(cr, this._color, + this._hasOutline ? this._textColor : null, + 0, 0, width, height); + + return false; + } +}); diff --git a/src/transitRouter.js b/src/transitRouter.js new file mode 100644 index 00000000..4114d09e --- /dev/null +++ b/src/transitRouter.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Champlain = imports.gi.Champlain; + +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * Class responsible for delegating requests to perform routing in transit + * mode. + * Holds the the shared plan instance (filled with journeys on successful + * requests). + */ +var TransitRouter = class TransitRoute { + constructor(params) { + this._plan = new TransitPlan.Plan(); + this._query = params.query; + this._providers = Service.getService().transitProviders; + this._providerCache = []; + this._language = Utils.getLanguage(); + this._probePlugins(); + } + + get enabled() { + return this._providers !== undefined; + } + + get plan() { + return this._plan; + } + + /** + * Called when the query has been updated to trigger the first set + * of results- + */ + fetchFirstResults() { + let bestProvider = this._getBestProviderForQuery(); + + if (bestProvider) { + let provider = bestProvider[0]; + + this._currPluginInstance = bestProvider[1]; + this._plan.attribution = this._getAttributionForProvider(provider); + if (provider.attributionUrl) + this._plan.attributionUrl = provider.attributionUrl; + this._currPluginInstance.fetchFirstResults(); + } else { + this._plan.reset(); + this._plan.noProvider(); + } + } + + /** + * Called to fetch additional (later or earlier) results depending on the + * query settings. + */ + fetchMoreResults() { + if (this._currPluginInstance) + this._currPluginInstance.fetchMoreResults(); + else + throw new Error('No previous provider'); + } + + _probePlugins() { + this._availablePlugins = []; + + for (let module in imports.transitplugins) { + for (let pluginClass in imports.transitplugins[module]) { + this._availablePlugins[pluginClass] = module; + } + } + } + + /** + * Get attribution for a provider. Returns a language-specific + * 'attribution:' tag if available, otherwise 'attribution' + */ + _getAttributionForProvider(provider) { + if (provider['attribution:' + this._language]) + return provider['attribution:' + this._language]; + else if (provider.attribution) + return provider.attribution; + else + return null; + } + + _getMatchingProvidersForLocation(location) { + let country = Utils.getCountryCodeForCoordinates(location.latitude, + location.longitude); + + let matchingProviders = []; + + this._providers.forEach((p) => { + let provider = p.provider; + let areas = provider.areas; + + if (!areas) { + Utils.debug('No coverage info for provider ' + provider.name); + return; + } + + areas.forEach((area) => { + /* if the area has a specified priority, override the + * overall area priority, this allows sub-areas of of + * coverage for a provider to have higher or lowe priorities + * than other providers (e.g. one "native" to that area + */ + if (area.priority) + provider.priority = area.priority; + + let countries = area.countries; + + if (countries) { + if (countries.includes(country)) { + matchingProviders[provider.name] = provider; + return; + } + } + + let bbox = area.bbox; + + if (bbox) { + if (bbox.length !== 4) { + Utils.debug('malformed bounding box for provider ' + provider.name); + return; + } + + let [x1, y1, x2, y2] = bbox; + let cbbox = new Champlain.BoundingBox({ bottom: x1, + left: y1, + top: x2, + right: y2 }); + + if (cbbox.covers(location.latitude, + location.longitude)) { + matchingProviders[provider.name] = provider; + return; + } + } + }); + }); + + return matchingProviders; + } + + /** + * Get the most preferred provider for a given query. + * Return: an array with the provider definition and the plugin instance, + * or null if no matching provider was found. + */ + _getBestProviderForQuery() { + let startLocation = this._query.filledPoints[0].place.location; + let endLocation = + this._query.filledPoints.last().place.location; + + let matchingProvidersForStart = + this._getMatchingProvidersForLocation(startLocation); + let matchingProvidersForEnd = + this._getMatchingProvidersForLocation(endLocation); + + let matchingProviders = []; + + // check all candidate providers matching on the start location + for (let name in matchingProvidersForStart) { + let providerAtStart = matchingProvidersForStart[name]; + let providerAtEnd = matchingProvidersForEnd[name]; + + /* if the provider also matches on the end location, consider it + * as a potential candidate + */ + if (providerAtEnd) { + let order = this._sortProviders(providerAtStart, providerAtEnd); + + /* add the provider at it lowest priority to favor higher + * priority providers in "fringe cases" + */ + if (order < 0) + matchingProviders.push(providerAtStart); + else + matchingProviders.push(providerAtEnd); + } + } + + matchingProviders.sort(this._sortProviders); + + for (let i = 0; i < matchingProviders.length; i++) { + let provider = matchingProviders[i]; + let plugin = provider.plugin; + + if (this._providerCache[provider.name]) + return [provider, this._providerCache[provider.name]]; + + let module = this._availablePlugins[plugin]; + + if (module) { + try { + let params = provider.params; + let instance = + params ? new imports.transitplugins[module][plugin](params) : + new imports.transitplugins[module][plugin](); + + this._providerCache[provider.name] = instance; + + return [provider, instance]; + } catch (e) { + Utils.debug('Failed to instanciate transit plugin: ' + + plugin + ": " + e); + } + } else { + Utils.debug('Transit provider plugin not available: ' + plugin); + } + } + + Utils.debug('No suitable transit provider found'); + return null; + } + + /** + * Sort function to sort providers in by preference. + * If both providers have a priority set, prefers the one with a lower + * value (higher prio), otherwise the one that has a priority set (if any), + * else no specific order. + */ + _sortProviders(p1, p2) { + if (p1.priority && p2.priority) + return p1.priority - p2.priority; + else if (p1.priority) + return -1; + else if (p2.priority) + return 1; + else + return 0; + } +}; diff --git a/src/transitStopRow.js b/src/transitStopRow.js new file mode 100644 index 00000000..f3cbe790 --- /dev/null +++ b/src/transitStopRow.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var TransitStopRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-stop-row.ui', + InternalChildren: [ 'nameLabel', + 'timeLabel' ] +}, class TransitStopRow extends Gtk.ListBoxRow { + + _init(params) { + this.stop = params.stop; + delete params.stop; + + this._final = params.final; + delete params.final; + + super._init(params); + + this._nameLabel.label = this.stop.name; + this._timeLabel.label = this.stop.prettyPrint({ isFinal: this._final }); + } +}); diff --git a/src/transitTweaks.js b/src/transitTweaks.js new file mode 100644 index 00000000..dc1f7deb --- /dev/null +++ b/src/transitTweaks.js @@ -0,0 +1,180 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://gis.gnome.org/services/aux'; + +var TransitTweaks = class { + constructor(params) { + this._name = params.name; + this._session = + new Soup.Session({ user_agent: 'gnome-maps/' + pkg.version }); + + if (!this._name) + throw new Error('Missing tweak name'); + } + + applyTweaks(itineraries, callback) { + if (!this._tweaks) { + let variable = 'TRANSIT_TWEAKS_' + this._name.toUpperCase(); + let filename = GLib.getenv(variable); + + if (filename) { + this._readTweaksFromFile(filename); + this._doApplyTweaks(itineraries, callback); + } else { + this._fetchTweaksAsync(itineraries, callback); + } + } else { + this._doApplyTweaks(itineraries, callback); + } + } + + _doApplyTweaks(itineraries, callback) { + if (Object.keys(this._tweaks).length !== 0) { + itineraries.forEach((itinerary) => + this._applyTweaksToItinerary(itinerary)); + } + + callback(); + } + + _readTweaksFromFile(filename) { + let data = Utils.readFile(filename); + + if (!data) { + Utils.debug('Failed to read from tweak file'); + this._tweaks = {}; + callback(); + } + + try { + this._tweaks = JSON.parse(Utils.getBufferText(data)); + } catch (e) { + Utils.debug('Failed to parse tweaks: ' + e); + this._tweaks = {}; + } + } + + _fetchTweaksAsync(itineraries, callback) { + let uri = new Soup.URI(BASE_URL + '/' + 'tweaks-' + this._name + '.json'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to download tweaks'); + this._tweaks = {}; + callback(); + } else { + try { + this._tweaks = JSON.parse(message.response_body.data); + } catch (e) { + Utils.debug('Failed to parse tweaks: ' + e); + this._tweaks = {}; + } + + this._doApplyTweaks(itineraries, callback); + } + }); + } + + _applyTweaksToItinerary(itinerary) { + itinerary.legs.forEach((leg) => { + if (leg.transit) + this._applyTweaksToLeg(leg); + }); + } + + _applyTweaksToLeg(leg) { + let agencyTweaks = this._tweaks.agencies[leg.agencyName]; + + if (agencyTweaks) { + let routeTypeTweaks = agencyTweaks.routeTypes[leg.routeType]; + + if (routeTypeTweaks) { + let tweakToApply; + let bboxTweaks = routeTypeTweaks.bboxes; + let routeTweaks = routeTypeTweaks.routes ? + routeTypeTweaks.routes[leg.route] || null : null; + let routePatternTweaks = routeTypeTweaks.routePatterns; + + // first check for boundingbox-specific tweaks + if (bboxTweaks) { + bboxTweaks.forEach((tweak) => { + let bbox = tweak.bbox; + let cbbox = new Champlain.BoundingBox({ bottom: bbox[0], + left: bbox[1], + top: bbox[2], + right: bbox[3] }); + + if (cbbox.covers(leg.polyline[0].latitude, + leg.polyline[0].longitude)) { + /* if boundingbox fits, use embedded route or + * route pattern tweaks + */ + routeTweaks = tweak.routes ? + tweak.routes[leg.route] : null; + routePatternTweaks = tweak.routePatterns; + } + }); + } + + if (routeTweaks) { + tweakToApply = routeTweaks; + } else if (routePatternTweaks) { + routePatternTweaks.forEach((pattern) => { + if (!(pattern.regex instanceof RegExp)) { + pattern.regex = new RegExp(pattern.regex); + } + + if (leg.route.match(pattern.regex)) + tweakToApply = pattern; + }); + } + + if (!tweakToApply) { + tweakToApply = routeTypeTweaks; + } + + this._applyRouteTweaksToLeg(leg, tweakToApply); + } + } + } + + _applyRouteTweaksToLeg(leg, tweaks) { + if (tweaks.route) + leg.route = tweaks.route; + + if (tweaks.routeType) + leg.routeType = tweaks.routeType; + + if (tweaks.color) + leg.color = tweaks.color; + + if (tweaks.textColor) + leg.textColor = tweaks.textColor; + } +} diff --git a/src/transitWalkMarker.js b/src/transitWalkMarker.js new file mode 100644 index 00000000..93c642ba --- /dev/null +++ b/src/transitWalkMarker.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitWalkMarker = GObject.registerClass( +class TransitWalkMarker extends MapMarker.MapMarker { + + _init(params) { + /* if there is a preceeding leg, put the marker at the end of that leg + * to avoid gaps, since we will "fill out" the walking leg path line + * since sometimes the walking route might not reach exactly to the + * transit stop's position + */ + let point; + if (params.previousLeg) + point = params.previousLeg.polyline[params.previousLeg.polyline.length - 1]; + else + point = params.leg.polyline[0]; + + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + delete params.previousLeg; + + let location = new Location.Location({ latitude: point.latitude, + longitude: point.longitude + }); + + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-start-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitplugins/README b/src/transitplugins/README new file mode 100644 index 00000000..890401cd --- /dev/null +++ b/src/transitplugins/README @@ -0,0 +1,67 @@ +This directory contains implementations of transit routing provider plugins. +Each plugin should contain an ES6 class implementing the plugin. + +Each implementation implements two methods: + +fetchFirstResults(): + +This is invoked when the singleton routing query has been updated and would +query itineraries from it's source, and on success populate the TransitPlan +singleton with an itinerary list and call plan.update(), or on error call +one of the pre-defined error methods on the plan, or trigger a custom error +with plan.error(). + +fetchMoreResults(): + +This is invoked when to fetch additional (later or earlier) results. +Would on success add additional itineraries and call plan.update(), or on +error call plan.noMoreResults(). + +Providers are configured via the downloaded service file using a JSON element +like: + +"transitProviders": [ + { + "provider": { + "name": "Description of provider 1", + "plugin": "OpenTripPlanner", + "attribution": "Provider 1", + "attributionUrl": "http://provider1.example.com", + "priority": 10, + "areas": [ + { + "priority": 10, + "countries": [ "UT" ] + } + ], + "params": { + "baseUrl": "http://otp.provider1.example.com/otp" + } + } + }, + { + "provider": { + "name": "Provider 2", + "plugin": "OpenTripPlanner", + "attribution": "Provider 2", + "attributionUrl": "https://provider2.example.com", + "areas": [ + { + "bbox": [48.28,0.81,49.73,4.11] + } + ], + "params": { + "baseUrl": "https://provider2.example.com/otp" + } + } + } + ] + + Each provider can have an optional priority, to allow more specific provider + (e.g. one serving a single city) within the area of a more general one. + Single sub-areas of a provider can also override the general provider priority. + This can be used to allow areas of provider to "shadow" neighboring providers + while keeping the the neighboring provider as the preferred one when used + exclusively for its region. + Custom parameters, if specified, will be passed as the "params" object the + constructor() of the plugin implementation. \ No newline at end of file diff --git a/src/transitplugins/openTripPlanner.js b/src/transitplugins/openTripPlanner.js new file mode 100644 index 00000000..468e7978 --- /dev/null +++ b/src/transitplugins/openTripPlanner.js @@ -0,0 +1,1237 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const EPAF = imports.epaf; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const Location = imports.location; +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * This module implements the interface for communicating with an OpenTripPlanner + * server instance. + * The code is somewhat intricate since it supports instances of OpenTripPlanner + * running both with and without OSM data to complement the transit timetable + * data with turn-by-turn (walking) routing. + * + * There is two entry points for obtaining routes, one which is called by the + * routing delegator when the query is being modified (fetchFirstResults()), + * and the other being called when requesting additional results (later or + * earlier alternatives depending on search criteria) (fetchMoreResults()) + * These call into an entry point function "_fatchRoute()". + * "_fetchRoutes()" is called. + * In the case where there is no OSM data (onlyTransitData is true), it + * asyncronously calls "_fetchTransitStops()" to get closest transit stop for + * each of the query point, this function will involve OpenTripPlanner calls to + * find stops within a search circle around the coordinate and then calls out + * to GraphHopper to find the actual walking distance and selects the closest + * stop. + * In the callback for the results of _fetchTransitStops() the actual call to + * OpenTripPlanner is made. + * The callback for "_fetchRoutes()" will in turn reformat the resulting + * itineraries obtained from OpenTripPlanner into our internal format specified + * in the TransitPlan module and calls "_recalculateItineraries()" which will + * traverse these and do yet another recursive asyncrous pass over these results + * to refine the results with actual walking routes obtained from GraphHopper, + * since the results from our OpenTripPlanner instance with only transit data + * will result in walking legs which use "as the crow flies" routes for walking. + * It will also clean up the results by pruning out pointless transit legs, such + * as taking transit very short distances when almost reaching the target. + * + * API docs for OpenTripPlanner can be found at: http://dev.opentripplanner.org/apidoc/1.0.0/ + */ + +/* minimum distance when an explicit walk route will be requested to suppliment + * the transit route + */ +const MIN_WALK_ROUTING_DISTANCE = 100; + +/* minimum distance of a transit leg, below which we would replace the leg with + * walking if the leg is the first or last + */ +const MIN_TRANSIT_LEG_DISTANCE = 300; + +/* maximum walking distance for a potential replacement of a beginning or ending + * transit leg */ +const MAX_WALK_OPTIMIZATION_DISTANCE = 1000; + +/* maximum distance difference for performing a replacement of a beginning or + * ending transit leg with a walking leg + */ +const MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE = 500; + +/* minimum acceptable time margin when recalculating walking legs in the middle + * of an itinerary + */ +const MIN_INTERMEDIATE_WALKING_SLACK = 60; + +/* maximum walking distance, filter out itineraries containing walking legs + * whith longer walking after refined by GraphHopper + */ +const MAX_WALKING_DISTANCE = 2000; + +// maximum radius to search for stops +const STOP_SEARCH_RADIUS = 2000; + +// maximum number of transit stops to consider as candidates for start/end points +const NUM_STOPS_TO_TRY = 5; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpenTripPlanner = class OpenTripPlanner { + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._baseUrl = params.baseUrl; + this._router = params.router || 'default'; + this._routerUrl = params.routerUrl || null; + this._onlyTransitData = params.onlyTransitData || false; + this._extendPrevious = false; + this._language = Utils.getLanguage(); + + if (!this._baseUrl && !this._routerUrl) + throw new Error('must specify either baseUrl or routerUrl as an argument'); + + if (this._baseUrl && this._routerUrl) + throw new Error('can not specify both baseUrl and routerUrl as arguments'); + } + + get plan() { + return this._plan; + } + + get enabled() { + return this._baseUrl !== null; + } + + fetchFirstResults() { + this._extendPrevious = false; + this._fetchRoute(); + } + + fetchMoreResults() { + this._extendPrevious = true; + this._fetchRoute(); + } + + _getRouterUrl() { + return this._routerUrl ? this._routerUrl : + this._baseUrl + '/routers/' + this._router; + } + + _getMode(routeType) { + switch (routeType) { + case TransitPlan.RouteType.TRAM: + return 'TRAM'; + case TransitPlan.RouteType.TRAIN: + return 'RAIL'; + case TransitPlan.RouteType.SUBWAY: + return 'SUBWAY'; + case TransitPlan.RouteType.BUS: + return 'BUS'; + case TransitPlan.RouteType.FERRY: + return 'FERRY'; + case HVT.AIR_SERVICE: + return 'AIRPLANE'; + default: + throw new Error('unhandled route type'); + } + } + + _getModes(options) { + let modes = options.transitTypes.map((transitType) => { + return this._getMode(transitType); + }); + + /* should always include walk when setting explicit modes, + * otherwise only routes ending close to a stop would work + */ + modes.push('WALK'); + + return modes.join(','); + } + + _selectBestStopRecursive(stops, index, stopIndex, callback) { + if (index < stops.length) { + let points = this._query.filledPoints; + let stop = stops[index]; + let stopPoint = + GraphHopperTransit.createQueryPointForCoord([stop.lat, stop.lon]); + + if (stops[0].dist < 100) { + /* if the stop is close enough to the intended point, just + * return the top most from the the original query */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } else if (stopIndex === 0) { + GraphHopperTransit.fetchWalkingRoute([points[0], stopPoint], + (route) => { + /* if we couldn't find an exact walking route, go with the + * "as the crow flies" distance */ + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else if (stopIndex === points.length - 1) { + GraphHopperTransit.fetchWalkingRoute([stopPoint, points.last()], + (route) => { + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else { + /* for intermediate stops just return the one geographically + * closest */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } + } else { + /* re-sort stops by distance and select the closest after refining + * distances */ + stops.sort(this._sortTransitStops); + Utils.debug('refined stops: '); + stops.forEach((stop) => Utils.debug(JSON.stringify(stop, '', 2))); + callback(stops[0]); + } + } + + /* stopIndex here is the index of stop (i.e. starting point, intermediate + * stop, final stop + */ + _selectBestStop(stops, stopIndex, callback) { + this._selectBestStopRecursive(stops, 0, stopIndex, callback); + } + + _sortTransitStops(s1, s2) { + return s1.dist > s2.dist; + } + + _fetchRoutesForStop(stop, callback) { + let query = new HTTP.Query(); + let uri = new Soup.URI(this._getRouterUrl() + '/index/stops/' + + stop.id + '/routes'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get routes for stop'); + this._reset(); + } else { + let routes = JSON.parse(message.response_body.data); + + Utils.debug('Routes for stop: ' + stop + ': ' + JSON.stringify(routes)); + callback(routes); + } + }); + } + + _routeMatchesSelectedModes(route) { + let desiredTransitTypes = this._query.transitOptions.transitTypes; + + for (let i = 0; i < desiredTransitTypes.length; i++) { + let type = desiredTransitTypes[i]; + + if (type === TransitPlan.RouteType.TRAM && route.mode === 'TRAM') + return true; + else if (type === TransitPlan.RouteType.SUBWAY && route.mode === 'SUBWAY') + return true; + else if (type === TransitPlan.RouteType.TRAIN && route.mode === 'RAIL') + return true; + else if (type === TransitPlan.RouteType.BUS && + (route.mode === 'BUS' || route.mode === 'TAXI')) + return true; + else if (type === TransitPlan.RouteType.FERRY && route.mode === 'FERRY') + return true; + } + + return false; + } + + _filterStopsRecursive(stops, index, filteredStops, callback) { + if (index < stops.length) { + let stop = stops[index]; + + this._fetchRoutesForStop(stop, (routes) => { + for (let i = 0; i < routes.length; i++) { + let route = routes[i]; + + if (this._routeMatchesSelectedModes(route)) { + filteredStops.push(stop); + break; + } + } + this._filterStopsRecursive(stops, index + 1, filteredStops, + callback); + }); + } else { + callback(filteredStops); + } + } + + _filterStops(stops, callback) { + this._filterStopsRecursive(stops, 0, [], callback); + } + + _fetchTransitStopsRecursive(index, result, callback) { + let points = this._query.filledPoints; + + if (index < points.length) { + let point = points[index]; + let params = { lat: point.place.location.latitude, + lon: point.place.location.longitude, + radius: STOP_SEARCH_RADIUS }; + let query = new HTTP.Query(params); + let uri = new Soup.URI(this._getRouterUrl() + + '/index/stops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get stop for search point ' + point); + this._reset(); + } else { + let stops = JSON.parse(message.response_body.data); + + if (stops.length === 0) { + Utils.debug('No suitable stop found from router'); + callback(null); + return; + } + + if (this._query.transitOptions.showAllTransitTypes) { + stops.sort(this._sortTransitStops); + stops = stops.splice(0, NUM_STOPS_TO_TRY); + + Utils.debug('stops: ' + JSON.stringify(stops, '', 2)); + this._selectBestStop(stops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, result, + callback); + }); + } else { + this._filterStops(stops, (filteredStops) => { + filteredStops.sort(this._sortTransitStops); + filteredStops = filteredStops.splice(0, NUM_STOPS_TO_TRY); + + if (filteredStops.length === 0) { + Utils.debug('No suitable stop found using selected transit modes'); + callback(null); + return; + } + + this._selectBestStop(filteredStops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, + result, callback); + }); + }); + } + } + }); + } else { + callback(result); + } + } + + _fetchTransitStops(callback) { + this._fetchTransitStopsRecursive(0, [], callback); + } + + // get a time suitably formatted for the OpenTripPlanner query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the OpenTripPlanner query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParamFromLocation(location) { + return location.latitude + ',' + location.longitude; + } + + _addCommonParams(params) { + params.numItineraries = 5; + params.showIntermediateStops = true; + params.locale = this._language; + + let time = this._query.time; + let date = this._query.date; + + if (this._extendPrevious) { + let itineraries = this.plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (time) { + params.time = time; + /* it seems OTP doesn't like just setting a time, so if the query + * doesn't specify a date, go with today's date + */ + if (!date) { + let dateTime = GLib.DateTime.new_now_local(); + + params.date = dateTime.format('%F'); + } + } + + if (date) + params.date = date; + } + + if (this._query.arriveBy) + params.arriveBy = true; + + let options = this._query.transitOptions; + if (options && !options.showAllTransitTypes) + params.mode = this._getModes(options); + } + + _createParamsWithLocations() { + let points = this._query.filledPoints; + let params = { + fromPlace: this._getPlaceParamFromLocation(points[0].place.location), + toPlace: this._getPlaceParamFromLocation(points[points.length - 1].place.location) }; + let intermediatePlaces = []; + + for (let i = 1; i < points.length - 1; i++) { + let location = points[i].place.location; + intermediatePlaces.push(this._getPlaceParamFromLocation(location)); + } + if (intermediatePlaces) + params.intermediatePlaces = intermediatePlaces; + + params.maxWalkDistance = 2500; + this._addCommonParams(params); + + return params; + } + + // create parameter map for the request, given query and options + _createParamsWithStops(stops) { + let params = { fromPlace: stops[0].id, + toPlace: stops.last().id }; + let intermediatePlaces = []; + + for (let i = 1; i < stops.length - 1; i++) { + intermediatePlaces.push(stops[i].id); + } + if (intermediatePlaces.length > 0) + params.intermediatePlaces = intermediatePlaces; + + /* set walking speed for transfers to a slightly lower value to + * compensate for running OTP with only transit data, giving straight- + * line walking paths + */ + params.walkSpeed = 1.0; + + this._addCommonParams(params); + + return params; + } + + _fetchPlan(params, callback) { + let query = new HTTP.Query(params); + let uri = new Soup.URI(this._getRouterUrl() + '/plan?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get route plan from router ' + + this._router + ' ' + message); + callback(null); + } else { + try { + let result = JSON.parse(message.response_body.data); + + callback(result); + } catch (e) { + Utils.debug('Error parsing result: ' + e); + callback(null); + } + } + }); + } + + _fetchRoutes(callback) { + if (this._onlyTransitData) { + this._fetchTransitStops((stops) => { + let points = this._query.filledPoints; + + if (!stops) { + callback(null); + return; + } + + /* if there's only a start and end stop (no intermediate stops) + * and those stops are identical, reject the routing, since this + * means there would be no point in transit, and OTP would give + * some bizarre option like boarding transit, go one stop and then + * transfer to go back the same route + */ + if (stops.length === 2 && stops[0].id === stops[1].id) { + callback(null); + return; + } + + let params = this._createParamsWithStops(stops); + + this._fetchPlan(params, callback); + }); + } else { + let params = this._createParamsWithLocations(); + + this._fetchPlan(params, callback); + } + } + + _reset() { + this._extendPrevious = false; + if (this._query.latest) + this._query.latest.place = null; + else + this.plan.reset(); + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionallity as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._extendPrevious = false; + this.plan.noMoreResults(); + } else { + this.plan.noRouteFound();re + } + } + + _fetchRoute() { + let points = this._query.filledPoints; + + this._fetchRoutes((route) => { + if (route) { + let itineraries = []; + let plan = route.plan; + + Utils.debug('route: ' + JSON.stringify(route, null, 2)); + + if (plan && plan.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(plan.itineraries)); + } + + if (itineraries.length === 0) { + /* don't reset query points, unlike for turn-based + * routing, since options and timeing might influence + * results */ + this._noRouteFound(); + } else { + if (this._onlyTransitData) + this._recalculateItineraries(itineraries); + else + this._updateWithNewItineraries(itineraries); + } + } else { + this._noRouteFound(); + } + }); + } + + _isOnlyWalkingItinerary(itinerary) { + return itinerary.legs.length === 1 && !itinerary.legs[0].transit; + } + + _recalculateItineraries(itineraries) { + // filter out itineraries with only walking + let newItineraries = []; + + itineraries.forEach((itinerary) => { + if (!this._isOnlyWalkingItinerary(itinerary)) + newItineraries.push(itinerary); + }); + + /* TODO: should we always calculate a walking itinerary to put at the + * top if the total distance is below some threashhold? + */ + this._recalculateItinerariesRecursive(newItineraries, 0); + } + + _isItineraryRealistic(itinerary) { + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + + if (!leg.transit) { + /* if a walking leg exceeds the maximum desired walking + * distance, or for a leg "in-between" two transit legs, if + * there's insufficent switch time + */ + if (leg.distance > MAX_WALKING_DISTANCE) { + return false; + } else if (i >= 1 && i < itinerary.legs.length - 1) { + let previousLeg = itinerary.legs[i - 1]; + let nextLeg = itinerary.legs[i + 1]; + + let availableTime = + (nextLeg.departure - previousLeg.arrival) / 1000; + + if (availableTime < + leg.duration + MIN_INTERMEDIATE_WALKING_SLACK) + return false; + } + } + } + + return true; + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + _updateWithNewItineraries(itineraries) { + this.plan.updateWithNewItineraries(itineraries, this._query.arriveBy, + this._extendPrevious); + this._extendPrevious = false; + } + + _recalculateItinerariesRecursive(itineraries, index) { + if (index < itineraries.length) { + this._recalculateItinerary(itineraries[index], (itinerary) => { + itineraries[index] = itinerary; + this._recalculateItinerariesRecursive(itineraries, index + 1); + }); + } else { + /* filter out itineraries where there are intermediate walking legs + * that are too narrow time-wise, this is nessesary since running + * OTP with only transit data can result in some over-optimistic + * walking itinerary legs, since it will use "line-of-sight" + * distances. + * also filter out itineraries where recalculation process ended + * up with just walking + */ + let filteredItineraries = []; + + itineraries.forEach((itinerary) => { + if (this._isItineraryRealistic(itinerary) && + !this._isOnlyWalkingItinerary(itinerary)) + filteredItineraries.push(itinerary); + }); + + if (filteredItineraries.length > 0) { + filteredItineraries.forEach((itinerary) => itinerary.adjustTimings()); + this._updateWithNewItineraries(filteredItineraries); + } else { + this._noRouteFound(); + } + } + } + + _recalculateItinerary(itinerary, callback) { + let from = this._query.filledPoints[0]; + let to = this._query.filledPoints.last(); + + if (itinerary.legs.length === 1 && !itinerary.legs[0].transit) { + /* special case, if there's just one leg of an itinerary, and that leg + * leg is a non-transit (walking), recalculate the route in its entire + * using walking + */ + GraphHopperTransit.fetchWalkingRoute(this._query.filledPoints, + (route) => { + let leg = GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + to.place.name, + route); + let newItinerary = + new TransitPlan.Itinerary({departure: itinerary.departure, + duration: route.time / 1000, + legs: [leg]}); + callback(newItinerary); + }); + } else if (itinerary.legs.length === 1 && itinerary.legs[0].transit) { + // special case if there is extactly one transit leg + let leg = itinerary.legs[0]; + let startLeg = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLoc = startLeg.place.location; + let endLoc = endLeg.place.location; + let toLoc = to.place.location; + let startWalkDistance = fromLoc.get_distance_from(startLoc) * 1000; + let endWalkDistance = endLoc.get_distance_from(toLoc) * 1000; + + if (startWalkDistance >= MIN_WALK_ROUTING_DISTANCE && + endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + /* add an extra walking leg to both the beginning and end of the + * itinerary + */ + GraphHopperTransit.fetchWalkingRoute([from, startLeg], + (firstRoute) => { + let firstLeg = + GraphHopperTransit.createWalkingLeg(from, startLeg, + from.place.name, + leg.from, firstRoute); + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, + leg.to, + to.place.name, + lastRoute); + itinerary.legs.unshift(firstLeg); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + }); + } else if (endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + // add an extra walking leg to the end of the itinerary + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, leg.to, + to.place.name, + lastRoute); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + } else { + /* if only there's only a walking leg to be added to the start + * let the recursive routine dealing with multi-leg itineraries + * handle it + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } else { + /* replace walk legs with GraphHopper-generated paths (hence the + * callback nature of this. Filter out unrealistic itineraries (having + * walking segments not possible in reasonable time, due to our running + * of OTP with only transit data). + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } + + _recalculateItineraryRecursive(itinerary, index, callback) { + if (index < itinerary.legs.length) { + let leg = itinerary.legs[index]; + if (index === 0) { + let from = this._query.filledPoints[0]; + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceToEndLeg = + fromLoc.get_distance_from(endLegLoc) * 1000; + let distanceToStartLeg = + fromLoc.get_distance_from(startLegLoc) * 1000; + let nextLeg = itinerary.legs[index + 1]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceToEndLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceToEndLeg - distanceToStartLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the first leg of the intinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * starting coordinate from the input query, + * also replace a transit leg at the start with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the next step in the itinerary due to + * similar reasons + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toName = leg.to; + + /* if the next leg is a walking one, "fold" it into the one + * we create here */ + if (nextLeg && !nextLeg.transit) { + to = GraphHopperTransit.createQueryPointForCoord(nextLeg.toCoordinate); + toName = nextLeg.to; + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + toName, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated + * by GH in case the OTP starting point as far enough from + * the original starting point + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + leg.from, + route); + itinerary.legs.unshift(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else if (index === itinerary.legs.length - 1) { + let to = this._query.filledPoints.last(); + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toLoc = to.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceFromEndLeg = + toLoc.get_distance_from(endLegLoc) * 1000; + let distanceFromStartLeg = + toLoc.get_distance_from(startLegLoc) * 1000; + let previousLeg = itinerary.legs[itinerary.legs.length - 2]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceFromStartLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceFromStartLeg - distanceFromEndLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the final leg of the itinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * ending coordinate from the input query + * also replace a transit leg at the end with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the previous step in the itinerary + * due to similar reasons + */ + let finalTransitLeg; + let insertIndex; + if (leg.transit && previousLeg && !previousLeg.transit) { + /* if we optimize away the final transit leg, and the + * previous leg is a walking one, "fold" both into a + * single walking leg */ + finalTransitLeg = previousLeg; + insertIndex = index -1; + itinerary.legs.pop(); + } else { + finalTransitLeg = leg; + insertIndex = index; + } + let from = + GraphHopperTransit.createQueryPointForCoord(finalTransitLeg.fromCoordinate); + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + finalTransitLeg.from, + to.place.name, route); + itinerary.legs[insertIndex] = newLeg; + this._recalculateItineraryRecursive(itinerary, + insertIndex + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated by GH in + * case the OTP end point as far enough from the original + * end point + */ + let from = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + leg.to, to.place.name, route); + itinerary.legs.push(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + /* if an intermediate leg is a walking one, and it's distance is + * above the threashhold distance, calculate an exact route + */ + if (!leg.transit && leg.distance >= MIN_WALK_ROUTING_DISTANCE) { + let from = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + + /* if the next leg is the final one of the itinerary, + * and it's shorter than the "optimize away" distance, + * create a walking leg all the way to the final destination + */ + let nextLeg = itinerary.legs[index + 1]; + if (index === itinerary.legs.length - 2 && + nextLeg.distance <= MIN_TRANSIT_LEG_DISTANCE) { + to = this._query.filledPoints.last(); + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, leg.from, + leg.to, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, + index + 1, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + callback(itinerary); + } + } + + _createItineraries(itineraries) { + return itineraries.map((itinerary) => this._createItinerary(itinerary)); + } + + _createItinerary(itinerary) { + let legs = this._createLegs(itinerary.legs); + return new TransitPlan.Itinerary({ duration: itinerary.duration, + transfers: itinerary.transfers, + departure: itinerary.startTime, + arrival: itinerary.endTime, + legs: legs}); + } + + _createLegs(legs) { + return legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + } + + /* check if a string is a valid hex RGB string */ + _isValidHexColor(string) { + if (string && string.length === 6) { + let regex = /^[A-Fa-f0-9]/; + + return string.match(regex); + } + + return false; + } + + _createLeg(leg, index, legs) { + let polyline = EPAF.decode(leg.legGeometry.points); + let color = leg.routeColor && this._isValidHexColor(leg.routeColor) ? + leg.routeColor : null; + let textColor = leg.routeTextColor && this._isValidHexColor(leg.routeTextColor) ? + leg.routeTextColor : null; + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !leg.transitLeg ? this._query.filledPoints[0].place.name : + leg.from.name; + let to = + last && !leg.transitLeg ? this._query.filledPoints.last().place.name : + leg.to.name; + + let result = new TransitPlan.Leg({ departure: leg.from.departure, + arrival: leg.to.arrival, + from: from, + to: to, + headsign: leg.headsign, + fromCoordinate: [leg.from.lat, + leg.from.lon], + toCoordinate: [leg.to.lat, + leg.to.lon], + route: leg.route, + routeType: leg.routeType, + polyline: polyline, + isTransit: leg.transitLeg, + distance: leg.distance, + duration: leg.duration, + agencyName: leg.agencyName, + agencyUrl: leg.agencyUrl, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + color: color, + textColor: textColor, + tripShortName: leg.tripShortName }); + + if (leg.transitLeg) + result.intermediateStops = this._createIntermediateStops(leg); + else if (!this._onlyTransitData) + result.walkingInstructions = this._createTurnpoints(leg, polyline); + + return result; + } + + _createIntermediateStops(leg) { + let stops = leg.intermediateStops; + let intermediateStops = + stops.map((stop) => this._createIntermediateStop(stop, leg)); + + /* instroduce an extra stop at the end (in additional to the + * intermediate stops we get from OTP + */ + intermediateStops.push(new TransitPlan.Stop({ name: leg.to.name, + arrival: leg.to.arrival, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [leg.to.lat, + leg.to.lon] })); + return intermediateStops; + } + + _createIntermediateStop(stop, leg) { + return new TransitPlan.Stop({ name: stop.name, + arrival: stop.arrival, + departure: stop.departure, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [stop.lat, stop.lon] }); + } + + /** + * Create a turnpoints list on the same format we use with GraphHopper + * from OpenTripPlanner walking steps + */ + _createTurnpoints(leg, polyline) { + if (leg.steps) { + let steps = leg.steps; + let startPoint = new Route.TurnPoint({ + coordinate: polyline[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let turnpoints = [startPoint]; + steps.forEach((step) => { + turnpoints.push(this._createTurnpoint(step)); + }); + + let endPoint = new Route.TurnPoint({ + coordinate: polyline.last(), + type: Route.TurnPoint.END, + distance: 0, + instruction:_("Arrive") + }); + + turnpoints.push(endPoint); + + return turnpoints; + } else { + return null; + } + } + + _createTurnpoint(step) { + let coordinate = new Champlain.Coordinate({ latitude: step.lat, + longitude: step.lon }); + let turnpoint = new Route.TurnPoint({ + coordinate: coordinate, + type: this._getTurnpointType(step), + distance: step.distance, + instruction: this._getTurnpointInstruction(step) + }); + + return turnpoint; + } + + _getTurnpointType(step) { + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + return Route.TurnPointType.CONTINUE; + case 'LEFT': + return Route.TurnPointType.LEFT; + case 'SLIGHTLY_LEFT': + return Route.TurnPointType.SLIGHT_LEFT; + case 'HARD_LEFT': + return Route.TurnPointType.SHARP_LEFT; + case 'RIGHT': + return Route.TurnPointType.RIGHT; + case 'SLIGHTLY_RIGHT': + return Route.TurnPointType.SLIGHT_RIGHT; + case 'HARD_RIGHT': + return Route.TurnPointType.SHARP_RIGHT; + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': + return Route.TurnPointType.ROUNDABOUT; + case 'ELEVATOR': + return Route.TurnPointType.ELEVATOR; + case 'UTURN_LEFT': + return Route.TurnPointType.UTURN_LEFT; + case 'UTURN_RIGHT': + return Route.TurnPointType.UTURN_RIGHT; + default: + return null; + } + } + + _getTurnpointInstruction(step) { + let street = !step.bogusName ? step.streetName : null; + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + if (street) + return _("Continue on %s").format(street); + else + return _("Continue"); + case 'LEFT': + if (street) + return _("Turn left on %s").format(street); + else + return _("Turn left"); + case 'SLIGHTLY_LEFT': + if (street) + return _("Turn slightly left on %s").format(street); + else + return _("Turn slightly left"); + case 'HARD_LEFT': + if (street) + return _("Turn sharp left on %s").format(street); + else + return _("Turn sharp left"); + case 'RIGHT': + if (street) + return _("Turn right on %s").format(street); + else + return _("Turn right"); + case 'SLIGHTLY_RIGHT': + if (street) + return _("Turn slightly right on %s").format(street); + else + return _("Turn slightly right"); + case 'HARD_RIGHT': + if (street) + return _("Turn sharp right on %s").format(street); + else + return _("Turn sharp right"); + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': { + let exit = step.exit; + + if (exit) + return _("In the roundabout, take exit %s").format(exit); + else if (street) + return _("In the roundabout, take exit to %s").format(street); + else + return _("Take the roundabout"); + } + case 'ELEVATOR': { + if (street) + return _("Take the elevator and get off at %s").format(street); + else + return _("Take the elevator"); + } + case 'UTURN_LEFT': + if (street) + return _("Make a left u-turn onto %s").format(street); + else + return _("Make a left u-turn"); + case 'UTURN_RIGHT': + if (street) + return _("Make a right u-turn onto %s").format(street); + else + return _("Make a right u-turn"); + default: + return ''; + } + } +}; diff --git a/src/transitplugins/opendataCH.js b/src/transitplugins/opendataCH.js new file mode 100644 index 00000000..62fb972f --- /dev/null +++ b/src/transitplugins/opendataCH.js @@ -0,0 +1,544 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swiss national + * opendata.ch transit journey planning API. + * + * API docs for opendata.ch journey planning can be found at: + * https://transport.opendata.ch/docs.html + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HVT = imports.hvt; +const HTTP = imports.http; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://transport.opendata.ch'; +const API_VERSION = 'v1'; + +const Transportations = { + TRAIN: 'train', + TRAM: 'tram', + SHIP: 'ship', + BUS: 'bus', + CABLEWAY: 'cableway' +}; + +/** + * These are not documented in the API documentation, so had to + * reverse-engineer by trial-and-error. + */ +const Category = { + // bus + B: 'B', + NFB: 'NFB', + NFO: 'NFO', + BUS: 'BUS', + + // tram + NFT: 'NFT', + TRAM: 'TRAM', + T: 'T', + + // metro + M: 'M', + + // urban rail + R: 'R', + S: 'S', + + // regional rail + RE: 'RE', + + // interregional rail + IR: 'IR', + + // intercity rail + IC: 'IC', + ICE: 'ICE', + + // night trains + N: 'N', + SN: 'SN', + + // funicular + FUN: 'FUN', + + // water transport + BAT: 'BAT' +}; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpendataCH = class OpendataCH { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaLocations = []; + + if (filledPoints.length > 7) { + Utils.debug('This plugin supports at most five via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else { + if (filledPoints.length > 2) + this._fetchNearbyLocations(filledPoints.slice(1, -1)); + else + this._fetchResults(); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + // if there's only a walking-only itinerary, don't try to fetch more + if (this._plan.itineraries.length === 1 && + this._plan.itineraries[0].legs.length === 1 && + !this._plan.itineraries[0].legs[0].transit) { + this._plan.noMoreResults(); + } else { + this._fetchResults(); + } + } + + _fetchNearbyLocations(points) { + this._fetchNearbyLocationsRecursive(points, 0); + } + + _fetchNearbyLocationsRecursive(points, index) { + if (index === points.length) { + this._fetchResults(); + } else { + let location = points[index].place.location; + let query = new HTTP.Query({ x: location.latitude, + y: location.longitude }); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/locations?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get location: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + + Utils.debug('locations: ' + JSON.stringify(result, null, 2)); + + if (result.stations && result.stations.length > 0) { + let station = this._getBestStation(result.stations); + + if (station) { + this._viaLocations.push(station); + this._fetchNearbyLocationsRecursive(points, index + 1); + } else { + Utils.debug('No suitable via location found'); + this._plan.noRouteFound(); + } + } else { + Utils.debug('No via location found'); + this._plan.noRouteFound(); + } + } + }); + } + } + + _getBestStation(stations) { + let name = null; + + for (let i = 0; i < stations.length; i++) { + if (stations[i].icon) + name = stations[i].name; + } + + return name; + } + + _fetchResults() { + let query = this._getQuery(); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/connections?' + + query.toString(true)); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + Utils.debug('uri: ' + uri.to_string(true)); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + + if (result.connections && result.connections.length > 0) { + let itineraries = this._createItineraries(result.connections); + + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } else { + this._plan.noRouteFound(); + } + } + }); + } + + _createItineraries(connections) { + return connections.map((connection) => this._createItinerary(connection)); + } + + _createItinerary(connection) { + let legs = this._createLegs(connection.sections); + let duration = + connection.to.arrivalTimestamp - connection.from.departureTimestamp; + let from = connection.from; + let to = connection.to; + let [startTime,] = this._parseTime(from.departure); + let [endTime,] = this._parseTime(to.arrival); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time string into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(timeString) { + let dateTime = GLib.DateTime.new_from_iso8601(timeString, null); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + _createLegs(sections) { + let result = sections.map((section, index, sections) => + this._createLeg(section, index, sections)); + + return result; + } + + _createLeg(section, index, sections) { + let isTransit = section.journey; + + let departure = section.departure; + let arrival = section.arrival; + let journey = section.journey; + + if (!departure) + throw new Error('Missing departure element'); + if (!arrival) + throw new Error('Missing arrival element'); + + let first = index === 0; + let last = index === sections.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !journey ? this._query.filledPoints[0].place.name : + departure.station.name; + let to = + last && !journey ? this._query.filledPoints.last().place.name : + arrival.station.nam; + let [departureTime, tzOffset] = this._parseTime(departure.departure); + let [arrivalTime,] = this._parseTime(arrival.arrival); + let route = journey ? journey.number : null; + let routeType = + journey ? this._getHVTCodeFromCategory(journey.category) : null; + let agencyName = journey ? journey.operator : null; + let polyline = this._createPolylineForSection(section, index, sections); + let duration = arrival.arrivalTimestamp - departure.departureTimestamp; + let headsign = journey ? journey.to : null; + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + let result = new TransitPlan.Leg({ departure: departureTime, + arrival: arrivalTime, + from: from, + to: to, + headsign: headsign, + fromCoordinate: [departureX, + departureY], + toCoordinate: [arrivalX, + arrivalY], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + duration: duration, + agencyName: agencyName, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (journey) + result.intermediateStops = this._createIntermediateStops(journey); + + return result; + } + + _getHVTCodeFromCategory(category) { + switch (category) { + case Category.B: + case Category.BUS: + case Category.NFB: + case Category.NFO: + return HVT.BUS_SERVICE; + case Category.TRAM: + case Category.NFT: + case Category.T: + return HVT.TRAM_SERVICE; + case Category.M: + return HVT.METRO_SERVICE; + case Category.R: + case Category.S: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case Category.RE: + return HVT.REGIONAL_RAIL_SERVICE; + case Category.IR: + return HVT.INTER_REGIONAL_RAIL_SERVICE; + case Category.IC: + case Category.ICE: + return HVT.LONG_DISTANCE_TRAINS; + case Category.N: + case Category.SN: + return HVT.SLEEPER_RAIL_SERVICE; + case Category.FUN: + return HVT.FUNICULAR_SERVICE; + case Category.BAT: + return HVT.WATER_TRANSPORT_SERVICE; + default: + return null; + } + } + + _getCoordsForSection(section, index, sections) { + let departureX = section.departure.location.coordinate.x; + let departureY = section.departure.location.coordinate.y; + let arrivalX = section.arrival.location.coordinate.x; + let arrivalY = section.arrival.location.coordinate.y; + + if (sections.length === 1) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } else if (index === 0) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + } else if (index === sections.length - 1) { + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } + + return [departureX, departureY, arrivalX, arrivalY]; + } + + _createPolylineForSection(section, index, sections) { + let polyline; + + if (section.journey) { + polyline = []; + + section.journey.passList.forEach((pass) => { + let coordinate = pass.location.coordinate; + polyline.push(new Champlain.Coordinate({ latitude: coordinate.x, + longitude: coordinate.y })); + }); + } else { + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + polyline = + [new Champlain.Coordinate({ latitude: departureX, + longitude: departureY }), + new Champlain.Coordinate({ latitude: arrivalX, + longitude: arrivalY })]; + } + + return polyline; + } + + _createIntermediateStops(journey) { + let result = []; + + journey.passList.forEach((pass, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(pass)); + }); + + return result; + } + + _createIntermediateStop(pass) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (pass.departure) + [departure, departureTzOffset] = this._parseTime(pass.departure) + if (pass.arrival) + [arrival, arrivalTzOffset] = this._parseTime(pass.arrival); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: pass.station.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [pass.location.coordinate.x, + pass.location.coordinate.y] }); + } + + // get a time suitably formatted for the the query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParam(point) { + let location = point.place.location; + + return location.latitude + ',' + location.longitude; + } + + _getQuery(vias) { + let points = this._query.filledPoints; + let transitOptions = this._query.transitOptions; + let params = { from: this._getPlaceParam(points[0]), + to: this._getPlaceParam(points.last()) }; + + if (!transitOptions.showAllTransitTypes) + params.transportations = this._getTransportations(transitOptions); + + if (this._query.arriveBy) + params.isArrivalTime = 1; + + /* the "page" parameter of the API seems broken for "arrive by" + * searches, so instead search by updated time + */ + if (this._extendPrevious) { + let itineraries = this._plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + let query = new HTTP.Query(params); + + if (this._viaLocations.length > 0) { + this._viaLocations.forEach((p) => { query.add('via', p); }); + } + + return query; + } + + _getTransportations(transitOptions) { + let transportations = []; + + this._query.transitOptions.transitTypes.forEach((type) => { + let transportation = this._transportationForTransitType(type); + + if (transportation) + transportations.push(transportation); + }); + + return transportations; + } + + _transportationForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Transportations.BUS; + case TransitPlan.RouteType.TRAM: + return Transportations.TRAM; + case TransitPlan.RouteType.TRAIN: + return Transportations.TRAIN; + case TransitPlan.RouteType.FERRY: + return Transportations.SHIP; + default: + return null; + } + } +} diff --git a/src/transitplugins/resrobot.js b/src/transitplugins/resrobot.js new file mode 100644 index 00000000..39c1cb3b --- /dev/null +++ b/src/transitplugins/resrobot.js @@ -0,0 +1,631 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swedish national + * Resrobot transit journey planning API. + * + * API docs for Resrobot can be found at: + * https://www.trafiklab.se/api/resrobot-reseplanerare/dokumentation/sokresa + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const TransitTweaks = imports.transitTweaks; +const Utils = imports.utils; + +const BASE_URL = 'https://api.resrobot.se'; +const API_VERSION = 'v2'; + +// Timezone for timestamps returned by this provider +const NATIVE_TIMEZONE = 'Europe/Stockholm'; + +const ISO_8601_DURATION_REGEXP = new RegExp(/P((\d+)D)?T((\d+)H)?((\d+)M)?/); + +const Products = { + EXPRESS_TRAIN: 2, + REGIONAL_TRAIN: 4, + EXPRESS_BUS: 8, + LOCAL_TRAIN: 16, + SUBWAY: 32, + TRAM: 64, + BUS: 128, + FERRY: 256, + TAXI: 512 +}; + +const LegType = { + WALK: 'WALK', + TRANSIT: 'JNY', + TRANSFER: 'TRSF' +}; + +const CatCode = { + EXPRESS_TRAIN: 1, + REGIONAL_TRAIN: 2, + EXPRESS_BUS: 3, + LOCAL_TRAIN: 4, + SUBWAY: 5, + TRAM: 6, + BUS: 7, + FERRY: 8, + TAXI: 9 +}; + +const MAX_NUM_NEARBY_STOPS = 5; +const NEARBY_STOPS_SEARCH_RADIUS = 500; + +// ignore walking legs at the beginning/end when below this distance +const DISTANCE_THREASHOLD_TO_IGNORE = 50; + +// search radius to search for walk-only journeys +const WALK_SEARCH_RADIUS = 2000; + +// maximum distance for walk-only journey +const MAX_WALK_ONLY_DISTANCE = 2500; + +var Resrobot = class Resrobot { + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._key = params.key; + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + this._tweaks = new TransitTweaks.TransitTweaks({ name: 'resrobot' }); + + if (!this._key) + throw new Error('missing key'); + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaId = null; + + if (filledPoints.length > 3) { + Utils.debug('This plugin supports at most one via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (filledPoints.length === 2) { + this._fetchResults(); + } else { + let lat = filledPoints[1].place.location.latitude; + let lon = filledPoints[1].place.location.longitude; + + this._fetchNearbyStops(lat, lon, MAX_NUM_NEARBY_STOPS, + NEARBY_STOPS_SEARCH_RADIUS, + () => this._fetchResults()); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + + if ((!this._scrF && !this._query.arriveBy) || + (!this._scrB && this._query.arriveBy)) + this._noRouteFound(); + else + this._fetchResults(); + } + + _fetchNearbyStops(lat, lon, num, radius, callback) { + let query = new HTTP.Query(this._getNearbyStopsQueryParams(lat, lon, + num, radius)); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + + '/location.nearbystops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get nearby stops: ' + message.status_code); + this._noRouteFound(); + } else { + try { + let result = JSON.parse(message.response_body.data); + let stopLocations = result.StopLocation; + + Utils.debug('nearby stops: ' + JSON.stringify(result, null, 2)); + + if (stopLocations && stopLocations.length > 0) { + let stopLocation = stopLocations[0]; + + this._viaId = stopLocation.id; + callback(); + } else { + Utils.debug('No nearby stops found'); + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + _fetchResults() { + let query = new HTTP.Query(this._getQueryParams()); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/trip?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + /* No routes found. If this is the first search + * (not "load more") and the distance is short + * enough, generate a walk-only itinerary + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && + distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, + end, + route); + this._plan.updateWithNewItineraries([walkingItinerary]); + } else { + this._noRouteFound(); + } + }); + } else { + this._noRouteFound(); + } + } else { + try { + let result = JSON.parse(message.response_body.data); + + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + if (result.Trip) { + let itineraries = this._createItineraries(result.Trip); + + // store the back and forward references from the result + this._scrB = result.scrB; + this._scrF = result.scrF; + this._tweaks.applyTweaks(itineraries, () => { + this._processItineraries(itineraries) + }); + } else { + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + /* get total "as the crow flies" start, and end points, and distance for + * the query + */ + _getAsTheCrowFliesPointsAndDistanceForQuery() { + let start = this._query.filledPoints[0]; + let end = this._query.filledPoints.last(); + let startLoc = start.place.location; + let endLoc = end.place.location; + + return [start, end, endLoc.get_distance_from(startLoc) * 1000]; + } + + _processItineraries(itineraries) { + /* if this is the first request, and the distance is short enough, + * add an additional walking-only itinerary at the beginning + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, end, route); + + itineraries.unshift(walkingItinerary); + } + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + }); + } else { + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } + } + + _createWalkingOnlyItinerary(start, end, route) { + let walkingLeg = GraphHopperTransit.createWalkingLeg(start, end, + start.place.name, + end.place.name, + route); + let duration = route.duration; + /* if the query has no date, just use a fake, since only the time + * is relevant for displaying in this case + */ + let date = this._query.date || '2019-01-01'; + let time = this._query.time + ':00'; + + let [timestamp, tzOffset] = + this._query.time ? this._parseTime(time, date) : + this._getTimestampAndTzOffsetNow(); + + if (this._query.arriveBy) { + walkingLeg.arrival = timestamp; + walkingLeg.departure = timestamp - route.time; + } else { + walkingLeg.departure = timestamp; + walkingLeg.arrival = timestamp + route.time; + } + + walkingLeg.agencyTimezoneOffset = tzOffset; + + let walkingItinerary = + new TransitPlan.Itinerary({ legs: [walkingLeg]} ); + + walkingItinerary.adjustTimings(); + + return walkingItinerary; + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionallity as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._plan.noMoreResults(); + } else { + this._plan.noRouteFound(); + } + } + + _createItineraries(trips) { + return trips.map((trip) => this._createItinerary(trip)); + } + + _createItinerary(trip) { + let legs = this._createLegs(trip.LegList.Leg); + let duration = this._parseDuration(trip.duration); + let origin = trip.LegList.Leg[0].Origin; + let destination = trip.LegList.Leg.last().Destination; + let [startTime,] = this._parseTime(origin.time, origin.date); + let [endTime,] = this._parseTime(destination.time, destination.date); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time and date string into a timestamp into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(time, date) { + let timeText = '%sT%s'.format(date, time); + let dateTime = GLib.DateTime.new_from_iso8601(timeText, this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Get absolute timestamp for "now" in ms and timezone offset in the + * native timezone of the provider's native timezone @ "now" + */ + _getTimestampAndTzOffsetNow() { + let dateTime = GLib.DateTime.new_now(this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Parse a subset of ISO 8601 duration expressions. + * Handle hour and minute parts + */ + _parseDuration(duration) { + let match = duration.match(ISO_8601_DURATION_REGEXP); + + if (match) { + let [,,d,,h,,min] = match; + + return (d || 0) * 86400 + (h || 0) * 3600 + (min || 0) * 60; + } else { + Utils.debug('Unknown duration: ' + duration); + + return -1; + } + } + + _createLegs(legs) { + let result = legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + + if (this._canLegBeIgnored(result[0])) + result.shift(); + + if (this._canLegBeIgnored(result.last())) + result.splice(-1); + + return result; + } + + /* determines if a leg can ignored at the start or end, to catch the + * case when the user probably meant to search for a trip from a transit + * stop anyway + */ + _canLegBeIgnored(leg) { + if (!leg.isTransit) { + /* check that the distance is below the threashold and also that + * the duration is below 1 min, since the API in some occasions + * apparently gives distance 0, even though a walking leg has + * longer duration, and spans a distance in coordinates. + */ + return leg.distance <= DISTANCE_THREASHOLD_TO_IGNORE && + leg.duration <= 60; + } else { + return false; + } + } + + _createLeg(leg, index, legs) { + let isTransit; + + if (leg.type === LegType.TRANSIT) + isTransit = true; + else if (leg.type === LegType.WALK || leg.type === LegType.TRANSFER) + isTransit = false; + else + throw new Error('Unknown leg type: ' + leg.type); + + let origin = leg.Origin; + let destination = leg.Destination; + let product = leg.Product; + + if (!origin) + throw new Error('Missing Origin element'); + if (!destination) + throw new Error('Missing Destination element'); + if (!product && isTransit) + throw new Error('Missing Product element for transit leg'); + + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !isTransit ? this._query.filledPoints[0].place.name : + origin.name; + let to = + last && !isTransit ? this._query.filledPoints.last().place.name : + destination.name; + let [departure, tzOffset] = this._parseTime(origin.time, origin.date); + let [arrival,] = this._parseTime(destination.time, destination.date); + let route = isTransit ? product.num : null; + let routeType = + isTransit ? this._getHVTCodeFromCatCode(product.catCode) : null; + let agencyName = isTransit ? product.operator : null; + let agencyUrl = isTransit ? product.operatorUrl : null; + let polyline = this._createPolylineForLeg(leg); + let duration = leg.duration ? this._parseDuration(leg.duration) : null; + + let result = new TransitPlan.Leg({ departure: departure, + arrival: arrival, + from: from, + to: to, + headsign: leg.direction, + fromCoordinate: [origin.lat, + origin.lon], + toCoordinate: [destination.lat, + destination.lon], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + distance: leg.dist, + duration: duration, + agencyName: agencyName, + agencyUrl: agencyUrl, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (isTransit) + result.intermediateStops = this._createIntermediateStops(leg); + + return result; + } + + _createPolylineForLeg(leg) { + let polyline; + + if (leg.Stops && leg.Stops.Stop) { + polyline = []; + + leg.Stops.Stop.forEach((stop) => { + polyline.push(new Champlain.Coordinate({ latitude: stop.lat, + longitude: stop.lon })); + }); + } else { + polyline = + [new Champlain.Coordinate({ latitude: leg.Origin.lat, + longitude: leg.Origin.lon }), + new Champlain.Coordinate({ latitude: leg.Destination.lat, + longitude: leg.Destination.lon })]; + } + + return polyline; + } + + _createIntermediateStops(leg) { + let result = []; + + if (!leg.Stops && !leg.Stops.Stop) + throw new Error('Missing Stops element'); + + leg.Stops.Stop.forEach((stop, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(stop)); + }); + + return result; + } + + _createIntermediateStop(stop) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (stop.depTime && stop.depDate) + [departure, departureTzOffset] = this._parseTime(stop.depTime, stop.depDate); + if (stop.arrTime && stop.arrDate) + [arrival, arrivalTzOffset] = this._parseTime(stop.arrTime, stop.arrDate); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: stop.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [stop.lat, stop.lon] }); + } + + _getHVTCodeFromCatCode(code) { + switch (parseInt(code)) { + case CatCode.EXPRESS_TRAIN: + return HVT.HIGH_SPEED_RAIL_SERVICE; + case CatCode.REGIONAL_TRAIN: + return HVT.REGIONAL_RAIL_SERVICE; + case CatCode.EXPRESS_BUS: + return HVT.EXPRESS_BUS_SERVICE; + case CatCode.LOCAL_TRAIN: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case CatCode.SUBWAY: + return HVT.METRO_SERVICE; + case CatCode.TRAM: + return HVT.TRAM_SERVICE; + case CatCode.BUS: + return HVT.BUS_SERVICE; + case CatCode.FERRY: + return HVT.WATER_TRANSPORT_SERVICE; + case CatCode.TAXI: + return HVT.COMMUNAL_TAXI_SERVICE; + default: + Utils.debug('Unknown catCode: ' + code); + return HVT.MISCELLANEOUS_SERVICE; + } + } + + _getQueryParams() { + let points = this._query.filledPoints; + let originLocation = points[0].place.location; + let destLocation = points.last().place.location; + let transitOptions = this._query.transitOptions; + let params = { key: this._key, + originCoordLat: originLocation.latitude, + originCoordLong: originLocation.longitude, + destCoordLat: destLocation.latitude, + destCoordLong: destLocation.longitude, + format: 'json' }; + + if (!transitOptions.showAllTransitTypes) + params.products = this._getAllowedProductsForQuery(); + + if (this._viaId) + params.viaId = this._viaId; + + if (this._extendPrevious) { + params.context = this._query.arriveBy ? this._scrB : this._scrF; + } else { + if (this._query.arriveBy) + params.searchForArrival = 1; + + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + return params; + } + + _getNearbyStopsQueryParams(lat, lon, num, radius) { + let params = { key: this._key, + originCoordLat: lat, + originCoordLong: lon, + maxNo: num, + r: radius, + format: 'json' }; + + return params; + } + + _getAllowedProductsForQuery() { + let products = 0; + + this._query.transitOptions.transitTypes.forEach((type) => { + products += this._productCodeForTransitType(type); + }); + + return products; + } + + _productCodeForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Products.BUS + Products.EXPRESS_BUS + Products.TAXI; + case TransitPlan.RouteType.TRAM: + return Products.TRAM; + case TransitPlan.RouteType.TRAIN: + return Products.EXPRESS_TRAIN + Products.LOCAL_TRAIN; + case TransitPlan.RouteType.SUBWAY: + return Products.SUBWAY; + case TransitPlan.RouteType.FERRY: + return Products.FERRY; + default: + return 0; + } + } +} diff --git a/src/translations.js b/src/translations.js new file mode 100644 index 00000000..73c0c7ce --- /dev/null +++ b/src/translations.js @@ -0,0 +1,395 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const C_ = imports.gettext.dgettext; + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + + +/* Translate an opening time specification tag value. + * from OSM to a human-readable string (marked for translation). + * + * Some limitations are imposed to keep the translations manageable: + * A maximum of three components (separated by ; in the tag) are considered. + * For each component a maximum of three day intervals are considered. + * Each day interval can have one or two time intervals specified. + * For each of these limitations, the input string is passed on unmodified + * if the format is outside the supported cases, so no data should be dropped. + * Currently only specifying weekdays and public and school holidays are + * supported. + * Other variants, such as month-specific opening hours and other interval + * variants are not currently supported. In these cases, the data is + * returned as-is. + * + * The definition for the opening_hours tag can be found at: + * http://wiki.openstreetmap.org/wiki/Key:opening_hours + */ +function translateOpeningHours(string) { + if (string === '24/7' || string === 'Mo-Su 00:00-24:00' || + string === '00:00-24:00') + return _("around the clock"); + else if (string === 'sunrise-sunset') + return _("from sunrise to sunset"); + else { + /* split "components" */ + let splitParts = string.split(';'); + let part1, part2, part3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursPart(splitParts[0].trim()); + case 2: + part1 = _translateOpeningHoursPart(splitParts[0].trim()); + part2 = _translateOpeningHoursPart(splitParts[1].trim()); + + /* Translators: + * This is a format string with two separate time ranges + * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" + * The space between the format place holders could be + * substituted with the appropriate separator. + */ + return C_("time range list", "%s %s").format(part1, part2); + case 3: + part1 = _translateOpeningHoursPart(splitParts[0].trim()); + part2 = _translateOpeningHoursPart(splitParts[1].trim()); + part3 = _translateOpeningHoursPart(splitParts[2].trim()); + + /* Translators: + * This is a format string with three separate time ranges + * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" + * The space between the format place holders could be + * substituted with the appropriate separator. + */ + return C_("time range list", "%s %s %s").format(part1, + part2, + part3); + default: + return string; + } + } + +} + +/* + * Parse a time range component, comprised of day and time ranges, such as: + * Mo-Fr 10:00-19:00 + * Mo-We,Fr 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursPart(string) { + let splitString = string.split(' '); + + if (splitString.length == 2) { + let dayIntervalSpec = + _translateOpeningHoursDayIntervalList(splitString[0].trim()); + let timeIntervalSpec = + _translateOpeningHoursTimeIntervalList(splitString[1].trim()); + + /* Translators: + * This is a format string consisting of a part specifying the days for + * which the specified time is applied and the time interval + * specification as the second argument. + * The space between the format place holders could be substituted with + * the appropriate separator or phrase and the ordering of the arguments + * can be rearranged with the %n#s syntax. */ + return C_("time range component", "%s %s"). + format(dayIntervalSpec, timeIntervalSpec); + } else { + // for an unknown format, just output the raw value + return string; + } +} + +/* + * Parse a day interval, such as: + * Mo-Fr + * Mo,We,Th-Fr + */ +function _translateOpeningHoursDayIntervalList(string) { + let splitParts = string.split(','); + let interval1, interval2, interval3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursDayInterval(splitParts[0].trim()); + case 2: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + /* Translators: + * This represents a format string consisting of two day interval + * specifications. + * For example: + * Mo-Fr,Sa + * where the "Mo-Fr" and "Sa" parts are replaced by the %s + * place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s").format(interval1, interval2); + case 3: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + interval3 = _translateOpeningHoursDayInterval(splitParts[2].trim()); + /* Translators: + * This represents a format string consisting of three day interval + * specifications. + * For example: + * Mo-We,Fr,Su + * where the "Mo-We", "Fr", and "Su" parts are replaced by the + * %s place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s,%s"). + format(interval1, interval2, interval3); + default: + // for other formats, just return the raw string + return string; + } +} + +/* + * Parse a day interval consisting of either a single day + * or a range, such as: + * Mo-Fr + * Tu + */ +function _translateOpeningHoursDayInterval(string) { + let splitString = string.split('-'); + + // special case: Mo-Su treated as "every day" + if (string === 'Mo-Su') + return _("every day"); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursDay(splitString[0].trim()); + case 2: + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This represents a range of days with a starting and ending day. + */ + return C_("day range", "%s-%s").format( + _translateOpeningHoursDay(from), + _translateOpeningHoursDay(to)); + default: + // unknown format, just return the input + return string; + } +} + +function _translateOpeningHoursDay(string) { + if (string === 'PH') + return _("public holidays"); + if (string === 'SH') + return _("school holidays"); + + // create a dummy DateTime instance which is guaranteed to be a Monday + let time = GLib.DateTime.new_local(1, 1, 1, 0, 0, 0.0); + let days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + for (let i = 0; i < days.length; i++) { + if (string === days[i]) { + time = time.add_days(i); + return time.format('%a'); + } + } + + // unknown value, just return the input + return string; +} + +/* + * Parse a time interval list, such as: + * 10:00-20:00 + * 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursTimeIntervalList(string) { + let splitString = string.split(','); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursTimeInterval(splitString[0].trim()); + case 2: + let interval1 = splitString[0].trim(); + let interval2 = splitString[1].trim(); + + /* Translators: + * This is a list with two time intervals, such as: + * 09:00-12:00, 13:00-14:00 + * The intervals are represented by the %s place holders and + * appropriate white space or connected phrase could be modified by + * the translation. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval list", "%s, %s").format( + _translateOpeningHoursTimeInterval(interval1), + _translateOpeningHoursTimeInterval(interval2)); + default: + // for other number of components, just return the input + return string; + } +} + +/* + * Parse a time interval + */ +function _translateOpeningHoursTimeInterval(string) { + if (string === 'off') + return _("not open"); + + let splitString = string.split('-'); + + if (splitString.length == 2) { + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This is a time interval with a starting and an ending time. + * The time values are represented by the %s place holders and + * appropriate white spacing or connecting phrases can be set by the + * translation as needed. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval", "%s-%s").format( + _translateOpeningHoursTime(from), + _translateOpeningHoursTime(to)); + } else { + // unknown time interval format, just return the input + return string; + } +} + +/* + * Parse a time. + */ +function _translateOpeningHoursTime(string) { + let splitString = string.split(':'); + + if (splitString.length == 2) { + let h = splitString[0]; + let min = splitString[1]; + + // if the parts aren't numbers + if (h % 1 !== 0 || min % 1 !== 0) + return string; + + // if the hours or minute components are out of range + if (h > 24 || h < 0 || min > 59 || min < 0) + return string; + + // should translate 24:00 to 00:00 to keep GDateTime happy + if (h == 24) + h = 0; + + // create a dummy DateTime, we are just interested in the hour and + // minute parts + let time = GLib.DateTime.new_local(1, 1, 1, h, min, 0.0); + + if (clockFormat === '24h') + return time.format('%R'); + else + return time.format('%r'); + } else { + // unknown format, just return input + return string; + } +} + +function translateInternetAccess(string) { + switch(string) { + /* Translators: + * There is public internet access but the particular kind is unknown. + */ + case 'yes': return _("yes"); + + /* Translators: + * no internet access is offered in a place where + * someone might expect it. + */ + case 'no': return _("no"); + + /* Translators: + * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. + */ + case 'wlan': return _("Wi-Fi"); + + /* Translators: + * This means a a place where you can plug in your laptop with ethernet. + */ + case 'wired': return _("wired"); + + /* Translators: + * Like internet cafe or library where the computer is given. + */ + case 'terminal': return _("terminal"); + + /* Translators: + * This means there is personnel which helps you in case of problems. + */ + case 'service': return _("service"); + + default: return null; + } +} + +function translateReligion(string) { + switch(string) { + case 'animist': return _("Animism"); + case 'bahai': return_("Bahá'í"); + case 'buddhist': return _("Buddhism"); + case 'caodaism': return _("Caodaism"); + case 'christian': return _("Christianity"); + case 'confucian': return _("Confucianism"); + case 'hindu': return _("Hinduism"); + case 'jain': return _("Jainism"); + case 'jewish': return _("Judaism"); + case 'muslim': return _("Islam"); + case 'multifaith': return _("Multiple Religions"); + case 'pagan': return _("Paganism"); + case 'pastafarian': return _("Pastafarianism"); + case 'scientologist': return _("Scientology"); + case 'shinto': return _("Shinto"); + case 'sikh': return _("Sikhism"); + case 'spiritualist': return _("Spiritualism"); + case 'taoist': return _("Taoism"); + case 'unitarian_universalist': return _("Unitarian Universalism"); + case 'voodoo': return _("Voodoo"); + case 'yazidi': return _("Yazidism"); + case 'zoroastrian': return _("Zoroastrianism"); + default: return null; + } +} + +function translateYesNo(string) { + switch(string) { + case 'yes': return _("yes"); + case 'no': return _("no"); + default: return null; + } +} diff --git a/src/turnPointMarker.js b/src/turnPointMarker.js new file mode 100644 index 00000000..ef810490 --- /dev/null +++ b/src/turnPointMarker.js @@ -0,0 +1,123 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Dario Di Nucci + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const Utils = imports.utils; + +var TurnPointMarker = GObject.registerClass( +class TurnPointMarker extends MapMarker.MapMarker { + + _init(params) { + this._queryPoint = params.queryPoint; + delete params.queryPoint; + + this._turnPoint = params.turnPoint; + delete params.turnPoint; + + this._transitStop = params.transitStop; + delete params.transitStop; + + this._transitLeg = params.transitLeg; + delete params.transitLeg; + + let latitude; + let longitude; + + if (this._turnPoint) { + latitude = this._turnPoint.coordinate.get_latitude(); + longitude = this._turnPoint.coordinate.get_longitude(); + } else { + latitude = this._transitStop.coordinate[0]; + longitude = this._transitStop.coordinate[1]; + } + + params.place = new Place.Place({ + location: new Location.Location({ latitude: latitude, + longitude: longitude }) }); + super._init(params); + + let actor; + if (this._queryPoint) { + this.draggable = true; + this.connect('drag-finish', () => this._onMarkerDrag()); + actor = this._actorFromIconName(this._turnPoint.iconName, 0); + } else { + let color = this._getColor(); + actor = this._actorFromIconName('maps-point-end-symbolic', + 0, + color); + } + this.add_actor(actor); + } + + _getColor() { + /* Use the route color from the transit leg when representing part of + * a transit trip, otherwise let the fallback functionallity of the + * utility function use a GNOMEish blue color for turn-by-turn routing. + */ + let color = this._transitLeg ? this._transitLeg.color : null; + + return new Gdk.RGBA({ red: Color.parseColor(color, 0, 33 / 255), + green: Color.parseColor(color, 1, 93 / 255), + blue: Color.parseColor(color, 2, 155 / 255), + alpha: 255 }); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } + + goTo() { + let view = this._mapView.view; + let turnPointZoomLevel = 15; + let latitude = this.latitude; + let longitude = this.longitude; + + view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + view.goto_duration = 0; + + Utils.once(view, 'animation-completed', () => { + view.zoom_level = turnPointZoomLevel; + view.center_on(latitude, longitude); + }); + + view.go_to(this.latitude, this.longitude); + } + + _onMarkerDrag() { + let query = Application.routeQuery; + let place = new Place.Place({ + location: new Location.Location({ latitude: this.latitude.toFixed(5), + longitude: this.longitude.toFixed(5) }) }); + + this._queryPoint.place = place; + } +}); diff --git a/src/userLocationBubble.js b/src/userLocationBubble.js new file mode 100644 index 00000000..77320e53 --- /dev/null +++ b/src/userLocationBubble.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; + +const MapBubble = imports.mapBubble; +const Utils = imports.utils; + +var UserLocationBubble = GObject.registerClass( +class UserLocationBubble extends MapBubble.MapBubble { + + _init(params) { + this._ui = Utils.getUIObject('user-location-bubble', [ 'grid-content', + 'label-accuracy', + 'label-coordinates' ]); + params.buttons = MapBubble.Button.ROUTE | + MapBubble.Button.SEND_TO | + MapBubble.Button.CHECK_IN; + params.routeFrom = true; + params.checkInMatchPlace = false; + + super._init(params); + + this.image.icon_name = 'find-location-symbolic'; + this.image.pixel_size = 48; + + this.updateLocation(); + this.content.add(this._ui.gridContent); + } + + updateLocation() { + /* Called by the UserLocationMarker when its location changes */ + + let accuracyDescription = Utils.getAccuracyDescription(this.place.location.accuracy); + /* Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) */ + this._ui.labelAccuracy.label = _("Accuracy: %s").format(accuracyDescription); + this._ui.labelCoordinates.label = this.place.location.latitude.toFixed(5) + + ', ' + + this.place.location.longitude.toFixed(5); + } +}); diff --git a/src/userLocationMarker.js b/src/userLocationMarker.js new file mode 100644 index 00000000..cb4b4189 --- /dev/null +++ b/src/userLocationMarker.js @@ -0,0 +1,126 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; +const UserLocationBubble = imports.userLocationBubble; + +var AccuracyCircleMarker = GObject.registerClass( +class AccuracyCirleMarker extends Champlain.Point { + + _init(params) { + this.place = params.place; + delete params.place; + + params.color = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 50 }); + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.reactive = false; + + super._init(params); + } + + refreshGeometry(view) { + this.latitude = this.place.location.latitude; + this.longitude = this.place.location.longitude; + + let zoom = view.zoom_level; + let source = view.map_source; + let metersPerPixel = source.get_meters_per_pixel(zoom, + this.latitude, + this.longitude); + let size = this.place.location.accuracy * 2 / metersPerPixel; + + if (size > view.width && size > view.height) + this.hide(); + else { + this.size = size; + this.show(); + } + } +}); + +var UserLocationMarker = GObject.registerClass( +class UserLocationMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this._accuracyMarker = new AccuracyCircleMarker({ place: this.place }); + this.connect('notify::view-zoom-level', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._accuracyMarker.refreshGeometry(this._view); + + this.place.connect('notify::location', this._updateLocation.bind(this)); + this._updateLocation(); + + this.connect('notify::visible', this._updateAccuracyCircle.bind(this)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: Math.floor(this.height / 2) }; + } + + _createBubble() { + return new UserLocationBubble.UserLocationBubble({ place: this.place, + mapView: this._mapView }); + } + + addToLayer(layer) { + layer.add_marker(this._accuracyMarker); + layer.add_marker(this); + } + + _updateLocation() { + if (this._actor) { + this._actor.destroy(); + delete this._actor; + } + + if (this.place.location.heading > -1) { + this._actor = this._actorFromIconName('user-location-compass', 0); + this._actor.set_pivot_point(0.5, 0.5); + this._actor.set_rotation_angle(Clutter.RotateAxis.Z_AXIS, this.place.location.heading); + } else { + this._actor = this._actorFromIconName('user-location', 0); + } + this.add_actor(this._actor); + + this._updateAccuracyCircle(); + if (this._bubble) + this._bubble.updateLocation(); + } + + _updateAccuracyCircle() { + if (this.visible && this.place.location.accuracy > 0) { + this._accuracyMarker.refreshGeometry(this._view); + } else { + this._accuracyMarker.visible = false; + } + } +}); diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 00000000..f781e07a --- /dev/null +++ b/src/utils.js @@ -0,0 +1,387 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GLib = imports.gi.GLib; +const Gdk = imports.gi.Gdk; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; +const ByteArray = imports.byteArray; + +var METRIC_SYSTEM = 1; +var IMPERIAL_SYSTEM = 2; + +//List of locales using imperial system according to glibc locale database +const IMPERIAL_LOCALES = ['unm_US', 'es_US', 'es_PR', 'en_US', 'yi_US']; + +// Matches all unicode stand-alone accent characters +const ACCENTS_REGEX = /[\u0300-\u036F]/g; + +let debugInit = false; +let measurementSystem = null; + +var debugEnabled = false; + +function debug(msg) { + if (!debugInit) { + let env = GLib.getenv('MAPS_DEBUG'); + if (env) + debugEnabled = true; + + debugInit = true; + } + + if (debugEnabled) { + log('DEBUG: ' + msg); + if (msg instanceof Error) + log(msg.stack); + } +} + +// Connect to a signal on an object and disconnect on its first emission. +function once(obj, signal, callback) { + let id = obj.connect(signal, function() { + obj.disconnect(id); + callback(); + }); +} + +function loadStyleSheet(file) { + let provider = new Gtk.CssProvider(); + provider.load_from_file(file); + Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), + provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +function addActions(actionMap, entries) { + for(let name in entries) { + let entry = entries[name]; + let action = createAction(name, entry); + + actionMap.add_action(action); + + if(entry.accels) + setAccelsForActionMap(actionMap, name, entry.accels); + } +} + +function setAccelsForActionMap(actionMap, actionName, accels) { + let app; + let prefix; + + if(actionMap instanceof Gtk.Application) { + app = actionMap; + prefix = "app"; + } else if(actionMap instanceof Gtk.Window) { + app = actionMap.application; + prefix = "win"; + } + app.set_accels_for_action(prefix + '.' + actionName, accels); +} + +function createAction(name, { state, paramType, onActivate, onChangeState }) { + let entry = { name: name }; + + if(Array.isArray(state)) { + let [type, value] = state; + entry.state = new GLib.Variant.new(type, value); + } + + if(paramType !== undefined) + entry.parameter_type = GLib.VariantType.new(paramType); + + let action = new Gio.SimpleAction(entry); + + if(onActivate) + action.connect('activate', onActivate); + if(onChangeState) + action.connect('change-state', onChangeState); + + return action; +} + +function _getPlatformData(appId, timestamp) { + let context = Gdk.Display.get_default().get_app_launch_context(); + context.set_timestamp(timestamp); + let info = Gio.DesktopAppInfo.new(appId + '.desktop'); + let id = new GLib.Variant('s', context.get_startup_notify_id(info, [])); + + return { 'desktop-startup-id': id }; +} + +function activateAction(appId, action, parameter, timestamp) { + let objectPath = '/' + appId.replace(/\./g, '/'); + let platformData = _getPlatformData(appId, timestamp); + let wrappedParam = parameter ? [parameter] : []; + + Gio.DBus.session.call(appId, + objectPath, + 'org.freedesktop.Application', + 'ActivateAction', + new GLib.Variant('(sava{sv})', [action, + wrappedParam, + platformData]), + null, + Gio.DBusCallFlags.NONE, -1, null, function(c, res) { + try { + c.call_finish(res); + } catch(e) { + debug('ActivateApplication: ' + e); + } + }); +} + +function dashedToCamelCase(name) { + return name.replace(/(-.)/g, function(x) { + return x[1].toUpperCase(); + }); +} + +function getUIObject(res, ids) { + let builder = new Gtk.Builder(); + builder.add_from_resource('/org/gnome/Maps/ui/' + res + '.ui'); + let ret = {}; + ids.forEach(function(id) { + ret[dashedToCamelCase(id)] = builder.get_object(id); + }); + return ret; +} + +function readFile(filename) { + let status, buffer; + let file = Gio.File.new_for_path(filename); + try { + [status, buffer] = file.load_contents(null); + } catch (e) { + return null; + } + if (status) + return buffer; + else + return null; +} + +function writeFile(filename, buffer) { + let file = Gio.File.new_for_path(filename); + let status; + try { + status = file.replace_contents(buffer, null, false, 0, null)[0]; + return status; + } catch (e) { + return false; + } +} + +function getMeasurementSystem() { + if (measurementSystem) + return measurementSystem; + + let locale = GLib.getenv('LC_MEASUREMENT') || GLib.get_language_names()[0]; + + // Strip charset + if (locale.indexOf('.') !== -1) + locale = locale.substring(0, locale.indexOf('.')); + + if (IMPERIAL_LOCALES.indexOf(locale) === -1) + measurementSystem = METRIC_SYSTEM; + else + measurementSystem = IMPERIAL_SYSTEM; + + return measurementSystem; +} + +/** + * Get the higest priority bare lange currently in use. + */ +function getLanguage() { + let locale = GLib.get_language_names()[0]; + // the last item returned is the "bare" language + return GLib.get_locale_variants(locale).slice(-1)[0]; +} + +function getAccuracyDescription(accuracy) { + switch(accuracy) { + case Geocode.LOCATION_ACCURACY_UNKNOWN: + /* Translators: Accuracy of user location information */ + return _("Unknown"); + case 0: + /* Translators: Accuracy of user location information */ + return _("Exact"); + default: + return prettyDistance(accuracy); + } +} + +function load_icon(icon, size, loadCompleteCallback) { + if (icon instanceof Gio.FileIcon || icon instanceof Gio.BytesIcon) { + _load_icon(icon, loadCompleteCallback); + } else if (icon instanceof Gio.ThemedIcon) { + _load_themed_icon(icon, size, loadCompleteCallback); + } +} + +function _load_icon(icon, loadCompleteCallback) { + icon.load_async(-1, null, function(icon, res) { + try { + let stream = icon.load_finish(res)[0]; + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + loadCompleteCallback(null); + } + }); +} + +function _load_themed_icon(icon, size, loadCompleteCallback) { + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_by_gicon(icon, size, 0); + + try { + let pixbuf = info.load_icon(); + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + } +} + +function osmTypeToString(osmType) { + switch(osmType) { + case Geocode.PlaceOsmType.NODE: return 'node'; + case Geocode.PlaceOsmType.RELATION: return 'relation'; + case Geocode.PlaceOsmType.WAY: return 'way'; + default: return 'node'; + } +} + +function prettyTime(time) { + let seconds = Math.floor(time / 1000); + let minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + + let labelledTime = ""; + if (hours > 0) + labelledTime += _("%f h").format(hours)+' '; + if (minutes > 0) + labelledTime += _("%f min").format(minutes); + if (hours === 0 && minutes === 0) + labelledTime = _("%f s").format(seconds); + return labelledTime; +} + +function prettyDistance(distance, noRound) { + distance = Math.round(distance); + + if (getMeasurementSystem() === METRIC_SYSTEM){ + if (distance >= 1000 && !noRound) { + distance = Math.round(distance / 1000 * 10) / 10; + /* Translators: This is a distance measured in kilometers */ + return _("%s km").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in meters */ + return _("%s m").format(distance.toLocaleString()); + } else { + // Convert to feet + distance = Math.round(distance * 3.2808399); + if (distance >= 1056 && !noRound) { + // Convert to miles when distance is more than 0.2 mi + distance = Math.round(distance / 5280 * 10) / 10; + /* Translators: This is a distance measured in miles */ + return _("%s mi").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in feet */ + return _("%s ft").format(distance.toLocaleString()); + } +} + +function uriSchemeSupported(scheme) { + let apps = Gio.AppInfo.get_all(); + let prefix = 'x-scheme-handler/'; + + for (let app of apps) { + let types = app.get_supported_types(); + if (!types) + continue; + + for (let type of types) { + if (type.replace(prefix, '') === scheme) + return true; + } + } + return false; +} + +function normalizeString(string) { + let normalized = GLib.utf8_normalize(string, -1, GLib.NormalizeMode.ALL); + return normalized.replace(ACCENTS_REGEX, ''); +} + +function isUsingDarkThemeVariant() { + let gtkSettings = Gtk.Settings.get_default(); + + return gtkSettings.gtk_application_prefer_dark_theme; +} + +function isUsingHighContrastTheme() { + let gtkSettings = Gtk.Settings.get_default(); + let themeName = gtkSettings.gtk_theme_name; + + return themeName === 'HighContrast' || themeName === 'HighContrastInverse'; +} + +function showDialog(msg, type, transientFor) { + let messageDialog = + new Gtk.MessageDialog({ transient_for: transientFor, + destroy_with_parent: true, + message_type: type, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: msg }); + + messageDialog.connect('response', () => messageDialog.destroy()); + messageDialog.show_all(); +} + +/* Gets a string from either a ByteArray or Uint8Array. This is for +compatibility between two different Gjs versions, see discussion at +https://gitlab.gnome.org/GNOME/gnome-maps/merge_requests/19 */ +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function getCountryCodeForCoordinates(lat, lon) { + let location = GWeather.Location.new_detached('', null, lat, lon); + + return location.get_country(); +} + diff --git a/src/wikipedia.js b/src/wikipedia.js new file mode 100644 index 00000000..48e231c1 --- /dev/null +++ b/src/wikipedia.js @@ -0,0 +1,136 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Format = imports.format; +const Utils = imports.utils; + +let _soupSession = null; +function _getSoupSession() { + if (_soupSession === null) { + _soupSession = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + return _soupSession; +} + +let _thumbnailCache = {}; + +function getLanguage(wiki) { + return wiki.split(':')[0]; +} + +function getArticle(wiki) { + return Soup.uri_encode(wiki.replace(/ /g, '_').split(':').splice(1).join(':'), + '\''); +} + +function getHtmlEntityEncodedArticle(wiki) { + return GLib.markup_escape_text(wiki.split(':').splice(1).join(':'), -1); +} + +/* + * Try to fetch the thumbnail given an article title and thumbnail size + * Calls callback with the Gdk.PixBuf of the icon when successful, otherwise + * undefined + */ +function fetchArticleThumbnail(wiki, size, callback) { + let lang = getLanguage(wiki); + let title = getHtmlEntityEncodedArticle(wiki); + let uri = Format.vprintf('https://%s.wikipedia.org/w/api.php', [ lang ]); + let msg = Soup.form_request_new_from_hash('GET', uri, { action: 'query', + titles: title, + prop: 'pageimages', + format: 'json', + pithumbsize: size + ''}); + let session = _getSoupSession(); + let cachedThumbnail = _thumbnailCache[wiki + '/' + size]; + + if (cachedThumbnail) { + callback(cachedThumbnail); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to request thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let response = JSON.parse(msg.response_body.data); + let pages = response.query.pages; + + if (pages) { + /* we know there should be only one object instance in the "pages" + * object, but the API specifies the sub-object as the page ID, + * so we'll have to use this iteration approach here + */ + for (let page in pages) { + let thumbnail = pages[page].thumbnail; + + if (thumbnail) { + let source = pages[page].thumbnail.source; + + _fetchThumbnailImage(wiki, size, source, callback); + } else { + callback(null); + } + return; + } + } else { + callback(null); + } + }); +} + +function _fetchThumbnailImage(wiki, size, source, callback) { + let uri = new Soup.URI(source); + let msg = new Soup.Message({ method: 'GET', uri: uri }); + let session = _getSoupSession(); + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to download thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let contents = msg.response_body_data; + let stream = Gio.MemoryInputStream.new_from_bytes(contents); + + try { + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + _thumbnailCache[wiki + '/' + size] = pixbuf; + callback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + callback(null); + } + + stream.close(null); + }); +} diff --git a/src/xmldom/LICENSE b/src/xmldom/LICENSE new file mode 100644 index 00000000..68a9b5e1 --- /dev/null +++ b/src/xmldom/LICENSE @@ -0,0 +1,8 @@ +You can choose any one of those: + +The MIT License (MIT): + +link:http://opensource.org/licenses/MIT + +LGPL: +http://www.gnu.org/licenses/lgpl.html diff --git a/src/xmldom/dom.js b/src/xmldom/dom.js new file mode 100644 index 00000000..0ec86d14 --- /dev/null +++ b/src/xmldom/dom.js @@ -0,0 +1,1142 @@ +/* + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + */ + +function copy(src,dest){ + for(var p in src){ + dest[p] = src[p]; + } +} +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(!(pt instanceof Super)){ + let t = function (){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknow Class:"+Class) + } + pt.constructor = Class + } +} +var htmlns = 'http://www.w3.org/1999/xhtml' ; +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; + +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); + + +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; +}; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return this[index] || null; + }, + toString:function(){ + for(var buf = [], i = 0;i=0){ + var lastIndex = list.length-1 + while(i0 || key == 'xmlns'){ +// return null; +// } + var i = this.length; + while(i--){ + var attr = this[i]; + if(attr.nodeName == key){ + return attr; + } + } + return null; + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + + + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } +}; +/** + * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 + */ +function DOMImplementation(/* Object */ features) { + this._features = {}; + if (features) { + for (var feature in features) { + this._features = features[feature]; + } + } +}; + +DOMImplementation.prototype = { + hasFeature: function(/* string */ feature, /* string */ version) { + var versions = this._features[feature.toLowerCase()]; + if (versions && (!version || version in versions)) { + return true; + } else { + return false; + } + }, + // Introduced in DOM Level 2: + createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype; + if(doctype){ + doc.appendChild(doctype); + } + if(qualifiedName){ + var root = doc.createElementNS(namespaceURI,qualifiedName); + doc.appendChild(root); + } + return doc; + }, + // Introduced in DOM Level 2: + createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId; + node.systemId = systemId; + // Introduced in DOM Level 2: + //readonly attribute DOMString internalSubset; + + //TODO:.. + // readonly attribute NamedNodeMap entities; + // readonly attribute NamedNodeMap notations; + return node; + } +}; + + +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ + +function Node() { +}; + +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + this.insertBefore(newChild,oldChild); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } +}; + + +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' +} + + +copy(NodeType,Node); +copy(NodeType,Node.prototype); + +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if((node = node.firstChild)){ + do{ + if(_visitNode(node,callback)){return true} + }while((node=node.nextSibling)) + } + return false; +} + + + +function Document(){ +} +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } +} +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } +} +function _onUpdateChild(doc,el,newChild){ + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if(newChild){ + cs[cs.length++] = newChild; + }else{ + //console.log(1) + var child = el.firstChild; + var i = 0; + while(child){ + cs[i++] = child; + child =child.nextSibling; + } + cs.length = i; + } + } +} + +/** + * attributes; + * children; + * + * writeable properties: + * nodeValue,Attr:value,CharacterData:data + * prefix + */ +function _removeChild(parentNode,child){ + var previous = child.previousSibling; + var next = child.nextSibling; + if(previous){ + previous.nextSibling = next; + }else{ + parentNode.firstChild = next + } + if(next){ + next.previousSibling = previous; + }else{ + parentNode.lastChild = previous; + } + _onUpdateChild(parentNode.ownerDocument,parentNode); + return child; +} +/** + * preformance key(refChild == null) + */ +function _insertBefore(parentNode,newChild,nextChild){ + var cp = newChild.parentNode; + if(cp){ + cp.removeChild(newChild);//remove and update + } + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = newChild.firstChild; + if (newFirst == null) { + return newChild; + } + var newLast = newChild.lastChild; + }else{ + newFirst = newLast = newChild; + } + var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; + + newFirst.previousSibling = pre; + newLast.nextSibling = nextChild; + + + if(pre){ + pre.nextSibling = newFirst; + }else{ + parentNode.firstChild = newFirst; + } + if(nextChild == null){ + parentNode.lastChild = newLast; + }else{ + nextChild.previousSibling = newLast; + } + do{ + newFirst.parentNode = parentNode; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + //console.log(parentNode.lastChild.nextSibling == null) + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { + newChild.firstChild = newChild.lastChild = null; + } + return newChild; +} +function _appendSingleChild(parentNode,newChild){ + var cp = newChild.parentNode; + if(cp){ + var pre = parentNode.lastChild; + cp.removeChild(newChild);//remove and update + var pre = parentNode.lastChild; + } + var pre = parentNode.lastChild; + newChild.parentNode = parentNode; + newChild.previousSibling = pre; + newChild.nextSibling = null; + if(pre){ + pre.nextSibling = newChild; + }else{ + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + return newChild; + //console.log("__aa",parentNode.lastChild.nextSibling == null) +} +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + doctype : null, + documentElement : null, + _inc : 1, + + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + if(this.documentElement == null && newChild.nodeType == 1){ + this.documentElement = newChild; + } + + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == 1){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + return false; + }) + return rtv; + }, + + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.target = target; + node.nodeValue= node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); + + +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, + + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, + + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, + + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; + + +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); + + +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); + + }, + appendChild:function(newChild){ + //if(!(newChild instanceof CharacterData)){ + throw new Error(ExceptionMessage[3]) + //} + return Node.prototype.appendChild.apply(this,arguments) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } +} +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } +} +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE +} +_extends(Comment,CharacterData); + +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE +} +_extends(CDATASection,CharacterData); + + +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); + +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); + +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); + +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); + +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); + + +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node,attributeSorter){ + return node.toString(attributeSorter); +} +Node.prototype.toString =function(attributeSorter){ + var buf = []; + serializeToString(this,buf,attributeSorter); + return buf.join(''); +} +function serializeToString(node,buf,attributeSorter,isHTML){ + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; + isHTML = (htmlns === node.namespaceURI) ||isHTML + buf.push('<',nodeName); + if(attributeSorter){ + buf.sort.apply(attrs, attributeSorter); + } + for(var i=0;i'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + if(child){ + buf.push(child.data); + } + }else{ + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + } + buf.push(''); + }else{ + buf.push('/>'); + } + return null; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + return null; + case ATTRIBUTE_NODE: + return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push( ''); + case COMMENT_NODE: + return buf.push( ""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM "',sysid,'">'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return null; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( ""); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + return buf.push('??',node.nodeName); + } +} +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i','amp':'&','quot':'"','apos':"'"} + if(locator){ + domBuilder.setDocumentLocator(locator) + } + + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(/\/x?html?$/.test(mimeType)){ + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if(source){ + sax.parse(source,defaultNSMap,entityMap); + }else{ + sax.errorHandler.error("invalid document source"); + } + return domBuilder.document; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + } + errorHandler[key] = fn && function(msg){ + fn('[xmldom '+key+']\t'+msg+_locator(locator)); + }||function(){}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.document = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.document.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.document; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + if( attr.getOffset){ + position(attr.getOffset(1),attr) + } + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.document.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(this.currentElement && chars){ + if (this.cdata) { + var charNode = this.document.createCDATASection(chars); + this.currentElement.appendChild(charNode); + } else { + var charNode = this.document.createTextNode(chars); + this.currentElement.appendChild(charNode); + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.document.normalize(); + }, + setDocumentLocator:function (locator) { + if((this.locator = locator)){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.document.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, + + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, + + startDTD:function(name, publicId, systemId) { + var impl = this.document.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + log('[xmldom warning]\t'+error); + }, + error:function(error) { + log('[xmldom error]\t'+error); + throw error; + }, + fatalError:function(error) { + log('[xmldom fatalError]\t'+error); + throw error; + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } + return null; +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} + +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.document.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +}//appendChild and setAttributeNS are preformance key diff --git a/src/xmldom/sax.js b/src/xmldom/sax.js new file mode 100644 index 00000000..9be75bfa --- /dev/null +++ b/src/xmldom/sax.js @@ -0,0 +1,582 @@ +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\u203F-\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_S=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_V = 4;//attr value(no quot value only) +var S_E = 5;//attr value end and no space(quot end) +var S_S = 6;//(attr value end || tag end ) && (space offer) +var S_C = 7;//closed el + +function XMLReader(){ + +} + +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if(k in entityMap){ + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + if(end>start){ + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + } + function position(p,m){ + while(p>=lineEnd && (m = linePattern.exec(source))){ + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p-lineStart+1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.+(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; + + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + try{ + var tagStart = source.indexOf('<',start); + if(tagStart<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.document; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(tagStart>start){ + appendText(tagStart); + } + switch(source.charAt(tagStart+1)){ + case '/': + var end = source.indexOf('>',tagStart+3); + var tagName = source.substring(tagStart+2,end); + var config = parseStack.pop(); + var localNSMap = config.localNSMap; + if(config.tagName != tagName){ + errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); + } + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + end++; + break; + // end elment + case '?':// + locator&&position(tagStart); + end = parseInstruction(source,tagStart,domBuilder); + break; + case '!':// start){ + start = end; + }else{ + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart,start)+1); + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} + +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_S){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if(s === S_EQ){//equal + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + el.add(attrName,value,start-1); + s = S_E; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_V){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName,value,start); + //console.dir(el) + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_E + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + s = S_C; + el.closed = true; + case S_V: + case S_ATTR: + case S_ATTR_S: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") + } + break; + case ''://end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + break;//normal + case S_V://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_S: + if(s === S_ATTR_S){ + value = attrName; + } + if(s == S_V){ + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) + }else{ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + el.add(value,value,start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_S; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_S; + break; + case S_V: + var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value,start) + case S_E: + s = S_S; + break; + //case S_S: + //case S_EQ: + //case S_ATTR_S: + // void();break; + //case S_C: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_V:void();break; + case S_ATTR_S: + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + el.add(attrName,attrName,start); + start = p; + s = S_ATTR; + break; + case S_E: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_S: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_V; + start = p; + break; + case S_C: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } + p++; + } +} +/** + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function appendElement(el,domBuilder,parseStack){ + var tagName = el.tagName; + var localNSMap = null; + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/' + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix] + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for(prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + parseStack.push(el); + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} + + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = closeMap[tagName] = source.lastIndexOf('') + } + return pos',start+4); + //append comment source.substring(4,end)// + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg new file mode 100644 index 00000000..135278f5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg new file mode 100644 index 00000000..a50bbc43 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg new file mode 100644 index 00000000..b51794c4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg new file mode 100644 index 00000000..f476455f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg new file mode 100644 index 00000000..0223d5f8 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg new file mode 100644 index 00000000..d9547d66 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg new file mode 100644 index 00000000..c511fe1c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg new file mode 100644 index 00000000..7317b867 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg new file mode 100644 index 00000000..961c35e0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg @@ -0,0 +1,30 @@ + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg new file mode 100644 index 00000000..ae2d69a6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg new file mode 100644 index 00000000..279639a4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg new file mode 100644 index 00000000..6984bd05 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg new file mode 100644 index 00000000..61184b56 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg new file mode 100644 index 00000000..a9c653c2 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg new file mode 100644 index 00000000..c39a3397 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg new file mode 100644 index 00000000..11b5cf0b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg new file mode 100644 index 00000000..05a49d52 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg new file mode 100644 index 00000000..76b863b3 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg new file mode 100644 index 00000000..ee275b5a --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/24x24/apps/user-location-compass.png b/data/icons/private/hicolor/24x24/apps/user-location-compass.png new file mode 100644 index 00000000..d2f3c7d7 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location-compass.png differ diff --git a/data/icons/private/hicolor/24x24/apps/user-location.png b/data/icons/private/hicolor/24x24/apps/user-location.png new file mode 100644 index 00000000..833fd907 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location.png differ diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg new file mode 100644 index 00000000..3eecf0fe --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg new file mode 100644 index 00000000..e6ec05fd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg new file mode 100644 index 00000000..110fda85 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg new file mode 100644 index 00000000..c955b77d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg new file mode 100644 index 00000000..1c429d12 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg new file mode 100644 index 00000000..a1950490 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg new file mode 100644 index 00000000..3f4f0ea1 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg new file mode 100644 index 00000000..e78482f8 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg new file mode 100644 index 00000000..03c5744c --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg new file mode 100644 index 00000000..bb0886ba --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg new file mode 100644 index 00000000..3cfcbaae --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg new file mode 100644 index 00000000..ebbe0172 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg new file mode 100644 index 00000000..c5bcbf6a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg new file mode 100644 index 00000000..520dd2ab --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg new file mode 100644 index 00000000..73fa4e1a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg new file mode 100644 index 00000000..19f98821 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg new file mode 100644 index 00000000..b92d3e69 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg new file mode 100644 index 00000000..283cdfbc --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg new file mode 100644 index 00000000..eb93b7bd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg new file mode 100644 index 00000000..1178640b --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg new file mode 100644 index 00000000..37d46da9 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg new file mode 100644 index 00000000..deaa22df --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg new file mode 100644 index 00000000..0fc527c2 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg new file mode 100644 index 00000000..17893292 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg new file mode 100644 index 00000000..72d3cef4 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg new file mode 100644 index 00000000..da099f9d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/mark-location.png b/data/icons/private/hicolor/32x32/apps/mark-location.png new file mode 100644 index 00000000..1a34a63c Binary files /dev/null and b/data/icons/private/hicolor/32x32/apps/mark-location.png differ diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg new file mode 100644 index 00000000..3ecd81a5 --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg new file mode 100644 index 00000000..1986990c --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg @@ -0,0 +1,202 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg new file mode 100644 index 00000000..32ac0b74 --- /dev/null +++ b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg @@ -0,0 +1,28 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + diff --git a/data/maps-service.json b/data/maps-service.json new file mode 100644 index 00000000..53056ef8 --- /dev/null +++ b/data/maps-service.json @@ -0,0 +1,78 @@ +{ + "tileProviderInfo": { + "name": "Mapbox", + "url": "https://www.mapbox.com" + }, + "tiles": { + "street": { + "id": "mapbox.streets-v11", + "name": "Mapbox street tiles", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + }, + + "streetDark": { + "id": "mapbox.dark-v10", + "name": "Mapbox street tiles", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/dark-v10/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + }, + + "aerial": { + "id": "mapbox.satellite-v9", + "name": "Mapbox aerial tiles", + "license": "© OpenStreetMap © DigitalGlobe", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + }, + + "hybridAerial": { + "id": "mapbox.satellite-streets-v11", + "name": "Mapbox aerial streets tiles", + "license": "© OpenStreetMap © DigitalGlobe", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + }, + + "print": { + "id": "mapbox.streets-v11", + "name": "Mapbox street tiles", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 512, + "uri_format": "https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/#Z#/#X#/#Y#?access_token=pk.eyJ1IjoiZ25vbWUtbWFwcyIsImEiOiJjaXF3a3lwbXkwMDJwaTBubmZlaGk4cDZ6In0.8aukTfgjzeqATA8eNItPJA&", + "attribution_logo": "PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2NSIgaGVpZ2h0PSIyMCI+PGRlZnMvPjxtZXRhZGF0YT48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjEuODQ4MywtOTguNTAzOTUpIj48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0ib3BhY2l0eTowLjI1O2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiPjxwYXRoIGQ9Ik0gNS4yOCAxLjUgQyA0LjU0IDEuNTYgMy45IDIuMjUgMy45MSAzIGwgMCAxMS44OCBjIDAuMDIgMC43NyAwLjcyIDEuNDcgMS41IDEuNDcgbCAxLjc1IDAgYyAwLjc4IDAgMS40OCAtMC42OSAxLjUgLTEuNDcgbCAwIC00LjI4IDAuNzIgMS4xOSBjIDAuNTMgMC44NyAyLjAzIDAuODcgMi41NiAwIGwgMC43MiAtMS4xOSAwIDQuMjggYyAwLjAyIDAuNzYgMC43IDEuNDUgMS40NyAxLjQ3IGwgMS43NSAwIGMgMC43OCAwIDEuNDggLTAuNjkgMS41IC0xLjQ3IGwgMCAtMC4xNiBjIDEuMDIgMS4xMiAyLjQ2IDEuODEgNC4wOSAxLjgxIGwgNC4wOSAwIDAgMS40NyBjIC0wIDAuNzggMC42OSAxLjQ4IDEuNDcgMS41IGwgMS43NSAwIGMgMC43OSAtMCAxLjUgLTAuNzEgMS41IC0xLjUgbCAwLjAyIC0xLjQ3IGMgMS43MiAwIDMuMDggLTAuNjQgNC4xNCAtMS42OSBsIDAgMC4xOSBjIDAgMC4zOSAwLjE2IDAuNzkgMC40NCAxLjA2IDAuMjggMC4yOCAwLjY3IDAuNDQgMS4wNiAwLjQ0IGwgMy4zMSAwIGMgMi4wMyAwIDMuODUgLTEuMDYgNC45MSAtMi42OSAxLjA1IDEuNjEgMi44NCAyLjY5IDQuODggMi42OSAxLjAzIDAgMS45OCAtMC4yNyAyLjgxIC0wLjc1IDAuMjggMC4zNSAwLjczIDAuNTcgMS4xOSAwLjU2IGwgMi4xMiAwIGMgMC40OCAwLjAxIDAuOTcgLTAuMjMgMS4yNSAtMC42MiBsIDAuOTEgLTEuMjggMC45MSAxLjI4IGMgMC4yOCAwLjM5IDAuNzQgMC42MyAxLjIyIDAuNjIgbCAyLjE2IDAgQyA2Mi42NyAxNi4zMyA2My40MiAxNC44OSA2Mi44MSAxNCBMIDYwLjIyIDEwLjM4IDYyLjYyIDcgQyA2My4yNiA2LjExIDYyLjUgNC42MiA2MS40MSA0LjYyIGwgLTIuMTYgMCBDIDU4Ljc4IDQuNjIgNTguMzEgNC44NiA1OC4wMyA1LjI1IEwgNTcuMzEgNi4yOCA1Ni41NiA1LjI1IEMgNTYuMjkgNC44NiA1NS44MiA0LjYyIDU1LjM0IDQuNjIgbCAtMi4xNiAwIGMgLTAuNDkgLTAgLTAuOTcgMC4yNSAtMS4yNSAwLjY2IC0wLjg2IC0wLjUxIC0xLjg0IC0wLjgxIC0yLjkxIC0wLjgxIC0yLjAzIDAgLTMuODMgMS4wOCAtNC44OCAyLjY5IEMgNDMuMSA1LjUzIDQxLjI3IDQuNDcgMzkuMTkgNC40NyBMIDM5LjE5IDMgQyAzOS4xOSAyLjYxIDM5LjAzIDIuMjEgMzguNzUgMS45NCAzOC40NyAxLjY2IDM4LjA4IDEuNSAzNy42OSAxLjUgbCAtMS43NSAwIGMgLTAuNzEgMCAtMS41IDAuODMgLTEuNSAxLjUgbCAwIDMuMTYgQyAzMy4zOCA1LjEgMzEuOTYgNC40NyAzMC4zOCA0LjQ3IGwgLTMuMzQgMCBjIC0wLjc3IDAuMDIgLTEuNDcgMC43MiAtMS40NyAxLjUgbCAwIDAuMzEgYyAtMS4wMiAtMS4xMiAtMi40NiAtMS44MSAtNC4wOSAtMS44MSAtMS42MyAwIC0zLjA3IDAuNyAtNC4wOSAxLjgxIEwgMTcuMzggMyBjIC0wIC0wLjc5IC0wLjcxIC0xLjUgLTEuNSAtMS41IEwgMTQuNSAxLjUgQyAxMy41NSAxLjUgMTIuMjggMS44NyAxMS42NiAyLjk0IGwgLTEgMS42OSAtMSAtMS42OSBDIDkuMDMgMS44NyA3Ljc3IDEuNSA2LjgxIDEuNSBsIC0xLjQxIDAgQyA1LjM2IDEuNSA1LjMyIDEuNSA1LjI4IDEuNSB6IG0gMTYuMTkgNy43MiBjIDAuNTMgMCAwLjk0IDAuMzUgMC45NCAxLjI4IGwgMCAxLjI4IC0wLjk0IDAgYyAtMC41MiAwIC0wLjk0IC0wLjM4IC0wLjk0IC0xLjI4IC0wIC0wLjkgMC40MiAtMS4yOCAwLjk0IC0xLjI4IHogbSA4LjgxIDAgYyAwLjgzIDAgMS4xOCAwLjY4IDEuMTkgMS4yOCAwLjAxIDAuOTQgLTAuNjIgMS4yOCAtMS4xOSAxLjI4IHogbSA4LjcyIDAgYyAwLjcyIDAgMS4zNyAwLjYgMS4zNyAxLjI4IDAgMC43NyAtMC41MSAxLjI4IC0xLjM3IDEuMjggeiBtIDEwLjAzIDAgYyAwLjU4IDAgMS4wOSAwLjUgMS4wOSAxLjI4IDAgMC43OCAtMC41MSAxLjI4IC0xLjA5IDEuMjggLTAuNTggMCAtMS4xMiAtMC41IC0xLjEyIC0xLjI4IDAgLTAuNzggMC41NCAtMS4yOCAxLjEyIC0xLjI4IHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZm9udC1zaXplOm1lZGl1bTtmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWRlY29yYXRpb246bm9uZTtsaW5lLWhlaWdodDpub3JtYWw7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtjb2xvcjojMDAwMDAwO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTcuMjAwMDIzNjU7bWFya2VyOm5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmb250LWZhbWlseTpTYW5zOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246U2FucyIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjE3NDQxODM2LDAsMCwwLjE3NDQxODM2LDIyMC41MjI4MiwyOS4yMjkzNDIpIiBzdHlsZT0iZmlsbDojZmZmZmZmIj48cGF0aCBkPSJtIDUuNDEgMyAwIDEyIDEuNzUgMCAwIC05LjkxIDMuNSA1Ljk0IDMuNDcgLTUuOTQgMCA5LjkxIDEuNzUgMCAwIC0xMiBMIDE0LjUgMyBDIDEzLjggMyAxMy4yNSAzLjE2IDEyLjk0IDMuNjkgTCAxMC42NiA3LjU5IDguMzggMy42OSBDIDguMDcgMy4xNiA3LjUxIDMgNi44MSAzIHogTSAzNiAzIGwgMCAxMi4wMyAzLjI1IDAgYyAyLjQ0IDAgNC4zOCAtMS45MSA0LjM4IC00LjUzIDAgLTIuNjIgLTEuOTMgLTQuNDcgLTQuMzggLTQuNDcgQyAzOC43IDYuMDMgMzguMzIgNiAzNy43NSA2IGwgMCAtMyB6IE0gMjEuNDcgNS45NyBjIC0yLjQ0IDAgLTQuMTkgMS45MSAtNC4xOSA0LjUzIDAgMi42MiAxLjc1IDQuNTMgNC4xOSA0LjUzIGwgNC4xOSAwIDAgLTQuNTMgYyAwIC0yLjYyIC0xLjc1IC00LjUzIC00LjE5IC00LjUzIHogbSAyNy41NiAwIGMgLTIuNDEgMCAtNC4zOCAyLjAzIC00LjM4IDQuNTMgMCAyLjUgMS45NyA0LjUzIDQuMzggNC41MyAyLjQxIDAgNC4zNCAtMi4wMyA0LjM0IC00LjUzIDAgLTIuNSAtMS45NCAtNC41MyAtNC4zNCAtNC41MyB6IG0gLTIyIDAuMDMgMCAxMiAxLjc1IDAgMCAtMi45NyBjIDAuNTcgMCAxLjA0IC0wIDEuNTkgMCAyLjQ0IDAgNC4zNCAtMS45MSA0LjM0IC00LjUzIDAgLTIuNjIgLTEuOSAtNC41IC00LjM0IC00LjUgeiBtIDI2LjE2IDAgMy4wMyA0LjM4IC0zLjE5IDQuNjIgMi4xMiAwIEwgNTcuMzEgMTEuOTEgNTkuNDQgMTUgNjEuNTkgMTUgNTguMzggMTAuMzggNjEuNDEgNiA1OS4yNSA2IDU3LjMxIDguODEgNTUuMzQgNiB6IE0gMjEuNDcgNy43MiBjIDEuNCAwIDIuNDQgMS4xOSAyLjQ0IDIuNzggbCAwIDIuNzggLTIuNDQgMCBjIC0xLjQgMCAtMi40NCAtMS4yMSAtMi40NCAtMi43OCAtMCAtMS41NyAxLjA0IC0yLjc4IDIuNDQgLTIuNzggeiBtIDI3LjU2IDAgYyAxLjQ0IDAgMi41OSAxLjI0IDIuNTkgMi43OCAwIDEuNTQgLTEuMTUgMi43OCAtMi41OSAyLjc4IC0xLjQ0IDAgLTIuNjIgLTEuMjQgLTIuNjIgLTIuNzggMCAtMS41NCAxLjE4IC0yLjc4IDIuNjIgLTIuNzggeiBtIC0yMC4yNSAwLjAzIDEuNTkgMCBjIDEuNTkgMCAyLjU5IDEuMjggMi41OSAyLjc1IDAgMS40NyAtMS4xMyAyLjc4IC0yLjU5IDIuNzggbCAtMS41OSAwIHogbSA4Ljk3IDAgMS41IDAgYyAxLjQ3IDAgMi42MiAxLjI4IDIuNjIgMi43NSAwIDEuNDcgLTEuMDQgMi43OCAtMi42MiAyLjc4IGwgLTEuNSAwIHoiIHRyYW5zZm9ybT0ibWF0cml4KDUuNzMzMzQxNCwwLDAsNS43MzMzNDE0LDIzNi45MzMwOCwzOTcuMTc0OTgpIiBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIi8+PC9nPjwvZz48L3N2Zz4=", + "max_connections": 12 + } + }, + "graphHopperGeocode": { + "baseUrl": "https://graphhopper.com", + "attribution": "GraphHopper", + "attributionUrl": "https://graphhopper.com/", + "apiKey": "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP" + } +} diff --git a/data/media/maps-point-end-symbolic.svg b/data/media/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/media/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/media/maps-point-start-symbolic.svg b/data/media/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/media/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 00000000..2be4ee73 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,80 @@ +gnome.compile_resources( + app_id + '.data', + app_id + '.data.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir +) + +install_data( + 'maps-service.json', + install_dir: pkgdatadir +) + +desktop = app_id + '.desktop' + +desktop_file = custom_target('desktop-file', + input: desktop + '.in', + output: desktop, + install: true, + install_dir: join_paths(datadir, 'applications'), + command: [msgfmt, '--desktop', + '--template', '@INPUT@', '-d', po_dir, '-o', '@OUTPUT@', + '--keyword=X-Geoclue-Reason', '--keyword=Name', '--keyword=Comment', + '--keyword=Keywords' + ] +) + +install_data( + app_id + '.gschema.xml', + install_dir: join_paths(datadir, 'glib-2.0', 'schemas') +) + +appdata = app_id + '.appdata.xml' + +appdata_file = i18n.merge_file( + appdata, + input: appdata + '.in', + output: appdata, + po_dir: po_dir, + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +service_conf = configuration_data() +service_conf.set('PACKAGE_NAME', meson.project_name()) +service_conf.set('pkgdatadir', pkgdatadir) + +configure_file( + input: app_id + '.service.in', + output: app_id + '.service', + configuration: service_conf, + install: true, + install_dir: join_paths(datadir, 'dbus-1', 'services') +) + +desktop_file_validate = find_program('desktop-file-validate', required: false) +if desktop_file_validate.found() + test( + 'validate-desktop', + desktop_file_validate, + args: [ + desktop_file.full_path() + ] + ) +endif + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test( + 'validate-appdata', + appstream_util, + args: [ + 'validate-relax', + '--nonet', + appdata_file.full_path() + ] + ) +endif + +subdir('icons') \ No newline at end of file diff --git a/data/org.gnome.Maps.appdata.xml.in b/data/org.gnome.Maps.appdata.xml.in new file mode 100644 index 00000000..b09f5d9d --- /dev/null +++ b/data/org.gnome.Maps.appdata.xml.in @@ -0,0 +1,212 @@ + + + org.gnome.Maps.desktop + CC0-1.0 + GPL-2.0-or-later + GNOME Maps + Find places around the world + +

    + Maps gives you quick access to maps all across the world. It allows you + to quickly find the place you’re looking for by searching for a city or + street, or locate a place to meet a friend. +

    +

    + Maps uses the collaborative OpenStreetMap database, made by hundreds of + thousands of people across the globe. +

    + + +

    + You can even search for specific types of locations, such as “Pubs near + Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”. +

    +
    + + org.gnome.Maps.desktop + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-main.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-route.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-pinpoint.png + + + + + +
      +
    • Fix a race-condition bug in search-as-you-type resulting in out-of-sync search results in some circumstances
    • +
    • Fix updating missing details after editing a POI in OpenStreetMap
    • +
    +
    + + +
      +
    • Show error message in popover when a search request has failed
    • +
    • Fix exception on shutdown when unregistering DBus
    • +
    • Fix "no network" display to fit on smaller screens
    • +
    +
    +
    + + +
      +
    • Initial adpative UI
    • +
    • Added night mode
    • +
    • Added support for hybrid aerial layer
    • +
    • Public transit plugin for South Africa (GoMetro)
    • +
    • Improved keyboard navigation in routing sidebar
    • +
    • Make more use of localized number formatting
    • +
    +
    +
    + + +
      +
    • Fix an issue where some search result gets the wrong level of name
    • +
    +
    +
    + + +
      +
    • Don't reset query points when routing fails (e.g. no public transit provider is available) to allow switching mode with the same query
    • +
    • Fix a bug not displaying tiles south of the equator when using --local command line option
    • +
    • Allow entering DMS coordinates without comma between latitude and logitude parts
    • +
    +
    +
    + + +
      +
    • Updated POI defintions for OpenStreetMap editing
    • +
    • Fix link to sign up for an OpenStreetMap account
    • +
    +
    +
    + + + +
      +
    • Initial support for public transit routing
    • +
    • Re-arrange context menu. Move "export as image" to hamburger menu
    • +
    • Avoid flickering the current location marker when changes
    • +
    +
    +
    + + +
      +
    • Added Malay translation
    • +
    +
    +
    + + +
      +
    • Fix generating Wikipedia URLs in some cases
    • +
    +
    +
    + + +
      +
    • Update tile size to 512 px when using --local option
    • +
    +
    +
    + + +
      +
    • Auto-complete "search-as-you-type"
    • +
    • Revamped sharing dialog
    • +
    • Support opening OpenStreetMap URLs
    • +
    • Faster startup
    • +
    • Remember map style last used when starting (street or aerial view)
    • +
    +
    +
    + + +
      +
    • Fix misaligned rendering of shape layers with the new map tiles
    • +
    +
    +
    + + +
      +
    • Remove some unnessesary instructions in turn-by-turn route searches
    • +
    +
    +
    + + +
      +
    • Updated Croatian translations
    • +
    +
    +
    + + + +
      +
    • Show live-updated thumbnails for the street/aerial layer switcher, instead of (outdated) hard-code thumbnails
    • +
    • Move app menu to the headerbar
    • +
    • Updated application icon
    • +
    +
    +
    +
    + + gnome-maps.desktop + + GNOME + The GNOME Project + http://wiki.gnome.org/Apps/Maps + https://gitlab.gnome.org/GNOME/gnome-maps/ + http://www.gnome.org/friends/ + gnome-maps-list@gnome.org + gnome-maps + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + +
    + + + diff --git a/data/org.gnome.Maps.data.gresource.xml b/data/org.gnome.Maps.data.gresource.xml new file mode 100644 index 00000000..749c12af --- /dev/null +++ b/data/org.gnome.Maps.data.gresource.xml @@ -0,0 +1,49 @@ + + + + ui/account-row.ui + ui/check-in-dialog.ui + ui/context-menu.ui + ui/export-view-dialog.ui + ui/favorites-popover.ui + ui/headerbar-left.ui + ui/headerbar-right.ui + ui/instruction-row.ui + ui/layers-popover.ui + ui/shape-layer-row.ui + ui/shape-layer-file-chooser.ui + ui/location-service-dialog.ui + ui/main-window.ui + ui/map-bubble.ui + ui/open-with-row.ui + ui/osm-account-dialog.ui + ui/osm-edit-address.ui + ui/osm-edit-dialog.ui + ui/osm-type-list-row.ui + ui/osm-type-search-entry.ui + ui/osm-type-popover.ui + ui/place-bubble.ui + ui/place-entry.ui + ui/place-list-row.ui + ui/place-popover.ui + ui/route-entry.ui + ui/send-to-dialog.ui + ui/sidebar.ui + ui/social-place-more-results-row.ui + ui/social-place-row.ui + ui/transit-arrival-row.ui + ui/transit-itinerary-row.ui + ui/transit-leg-row.ui + ui/transit-more-row.ui + ui/transit-options-panel.ui + ui/transit-route-label.ui + ui/transit-stop-row.ui + ui/user-location-bubble.ui + ui/zoom-in-dialog.ui + gnome-maps.css + osm-types.json + + + ui/help-overlay.ui + + diff --git a/data/org.gnome.Maps.desktop.in b/data/org.gnome.Maps.desktop.in new file mode 100644 index 00000000..83820919 --- /dev/null +++ b/data/org.gnome.Maps.desktop.in @@ -0,0 +1,16 @@ +[Desktop Entry] +Version=1.0 +Name=Maps +Comment=A simple maps application +Exec=gapplication launch org.gnome.Maps %U +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=org.gnome.Maps +Terminal=false +Type=Application +StartupNotify=true +Categories=GNOME;GTK;Utility; +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Maps; +DBusActivatable=true +MimeType=application/vnd.geo+json;x-scheme-handler/geo;application/vnd.google-earth.kml+xml;application/gpx+xml; +X-Geoclue-Reason=Allows your location to be shown on the map. diff --git a/data/org.gnome.Maps.gschema.xml b/data/org.gnome.Maps.gschema.xml new file mode 100644 index 00000000..9fdf7c6a --- /dev/null +++ b/data/org.gnome.Maps.gschema.xml @@ -0,0 +1,95 @@ + + + + + + + + + + [0.0,0.0] + last viewed location + Coordinates of last viewed location. + + + 0 + zoom + Zoom level + + + "MapsStreetSource" + Map type + The type of map to display (street, aerial, etc.) + + + [768, 600] + Window size + Window size (width and height). + + + [] + Window position + Window position (X and Y). + + + true + Window maximized + Window maximization state + + + 20 + Maximum number of search results + Maximum number of search results from geocode search. + + + 50 + Number of recent places to store + Number of recently visited places to store. + + + 5 + Number of recent routes to store + Number of recently visited routes to store. + + + "EVERYONE" + Facebook check-in privacy setting + + Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF. + + + "public" + Foursquare check-in privacy setting + Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private. + + + false + Foursquare check-in Facebook broadcasting + Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated with the Foursquare account. + + + false + Foursquare check-in Twitter broadcasting + Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated with the Foursquare account. + + + "" + OpenStreetMap username or e-mail address + Indicates if the user has signed in to edit OpenStreetMap data. + + + 'pedestrian' + Last used transportation type for routing + + + false + Night mode + Whether the application is in night mode. + + + false + Use hybrid aerial tiles + Whether aerial tiles should use hybrid style (with labels). + + + diff --git a/data/org.gnome.Maps.service.in b/data/org.gnome.Maps.service.in new file mode 100644 index 00000000..f8a854f6 --- /dev/null +++ b/data/org.gnome.Maps.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.Maps +Exec=@pkgdatadir@/org.gnome.Maps --gapplication-service diff --git a/data/osm-types.json b/data/osm-types.json new file mode 100644 index 00000000..7c71330d --- /dev/null +++ b/data/osm-types.json @@ -0,0 +1,18454 @@ +{ + "aeroway/aerodrome": { + "title": { + "C": "Airport", + "en": "Airport", + "af": "Lughawe", + "ar": "مطار", + "ast": "Aeropuertu", + "bn": "বিমানবন্দর", + "bs": "Aerodrom", + "ca": "Aeroport", + "cs": "Letiště", + "da": "Lufthavn", + "de": "Flughafen", + "el": "Αεροδρόμιο", + "en-GB": "Airport", + "eo": "Aerodromo", + "es": "Aeropuerto", + "et": "Lennujaam", + "fa": "فرودگاه", + "fi": "Lentokenttä", + "fr": "Aéroport", + "gl": "Aeroporto", + "hr": "Zračna luka", + "hu": "Repülőtér", + "hy": "Օդանավակայան", + "id": "Bandar udara", + "is": "Flugvöllur", + "it": "Aeroporto", + "ja": "空港", + "kn": "ವಿಮಾನ ನಿಲ್ದಾಣ", + "ko": "공항", + "lt": "Oro uostas", + "lv": "Lidosta", + "nl": "Luchthaven", + "no": "Flyplass", + "pl": "Lotnisko", + "pt-BR": "Aeroporto ou aeródromo", + "pt": "Aeroporto", + "ro": "Aeroport", + "ru": "Аэропорт", + "sk": "Letisko", + "sl": "Letališče", + "sr": "Аеродром", + "sv": "Flygplats", + "ta": "விமானநிலையம்", + "te": "విమానాశ్రయం", + "tr": "Havaalanı", + "uk": "Аеропорт", + "vi": "Sân bay", + "yue": "飛機場", + "zh-CN": "机场", + "zh-HK": "機場", + "zh-TW": "機場", + "zh": "机场", + "mk": "Аеродром", + "bg": "Летище", + "he": "נמל תעופה", + "eu": "Aireportu", + "ckb": "فڕۆکەخانە" + } + }, + "aeroway/apron": { + "title": { + "C": "Airport Apron", + "en": "Airport Apron", + "cs": "Odbavovací plocha", + "de": "Vorfeld", + "eo": "Aviadil-parkumejo", + "es": "Plataforma de estacionamiento de aeronaves", + "fa": "صحن فرودگاه", + "fi": "Lentokentän asemataso", + "it": "Parcheggio Aeromobili", + "ja": "駐機場", + "ko": "공항 에이프런", + "pl": "Płyta postojowa samolotów", + "pt-BR": "Plataforma de estacionamento", + "pt": "Plataforma de estacionamento", + "sr": "Авио-прилаз", + "sv": "Parkering för flygplan (Apron)", + "uk": "Перон", + "vi": "Thềm đế Máy bay", + "zh-CN": "机场停机坪", + "zh-TW": "機場停機坪", + "mk": "Авионска постојка", + "he": "רחבת חניית מטוסים" + } + }, + "aeroway/gate": { + "title": { + "C": "Airport Gate", + "en": "Airport Gate", + "ar": "بوابة المطار", + "ast": "Puerta de terminal", + "ca": "Porta d'aeroport", + "cs": "Letištní gate", + "da": "Lufthavnsgate", + "de": "Flugsteig", + "el": "Πύλη Αεροδρομίου", + "en-GB": "Airport Gate", + "eo": "Aerodroma enirejo", + "es": "Puerta de embarque", + "fa": " دروازه فرودگاه ", + "fi": "Lähtöportti", + "fr": "Porte d'embarquement", + "gl": "Porta de embarque", + "hu": "Repülőtéri kapu", + "is": "Flugvallarhlið", + "it": "Gate aeroportuale", + "ja": "空港ゲート", + "ko": "공항 게이트", + "lv": "Lidostas vārti", + "nl": "Luchthaven-gate", + "no": "Flyplassgate", + "pl": "Bramka na lotnisku", + "pt-BR": "Portão de Embarque", + "pt": "Porta de embarque / desembarque", + "ru": "Выход на посадку", + "sk": "Letisková brána", + "sl": "Letališka vrata", + "sr": "Излаз за укрцавање", + "sv": "Gate", + "ta": "விமான நிலைய நுழைவாயில்", + "tr": "Kapı", + "uk": "Вихід на посадку", + "vi": "Cổng Sân bay", + "zh-CN": "登机口", + "zh-HK": "登機閘", + "zh-TW": "登機閘門", + "mk": "Аеродромска порта", + "he": "שער נמל תעופה", + "eu": "Aireportuko ate" + } + }, + "aeroway/hangar": { + "title": { + "C": "Hangar", + "en": "Hangar", + "af": "Loods", + "ar": "حظيرة الطائرات", + "ast": "Hangar", + "bs": "Hangar", + "ca": "Hàngar", + "cs": "Hangár", + "da": "Hangar", + "de": "Hangar", + "el": "Υπόστεγο Αεροσκαφών", + "en-GB": "Hangar", + "eo": "Hangaro", + "es": "Hangar", + "et": "Angaar", + "fa": "آشیانه هواپیما (بزرگ / فرودگاه)", + "fi": "Lentokonehalli", + "fr": "Hangar", + "gl": "Hangar", + "hr": "Hangar", + "hu": "Hangár", + "id": "Hanggar", + "is": "Flugskýli", + "it": "Hangar", + "ja": "航空機格納庫", + "ko": "격납고", + "lt": "Angaras", + "lv": "Angārs", + "nl": "Hangar", + "no": "Hangar", + "pl": "Hangar", + "pt-BR": "Hangar", + "pt": "Hangar", + "ru": "Ангар", + "sk": "Hangár", + "sl": "Hangar", + "sr": "Хангар", + "sv": "Hangar", + "ta": "விமானங்கள் நிறுத்துமிடம்", + "tr": "Hangar", + "uk": "Ангар", + "vi": "Nhà Máy bay", + "yue": "飛機庫", + "zh-CN": "飞机库", + "zh-HK": "飛機庫", + "zh-TW": "機庫", + "zh": "机库", + "mk": "Хангар", + "bg": "Хангар", + "he": "הנגר" + } + }, + "aeroway/helipad": { + "title": { + "C": "Helipad", + "en": "Helipad", + "af": "Helipad", + "ar": "مهبط الهليكوبتر", + "ast": "Helipuertu", + "bn": "হেলিপ্যাড", + "bs": "Heliodrom", + "ca": "Heliport", + "cs": "Heliport", + "da": "Helikopterlandingsplads", + "de": "Hubschrauberlandeplatz", + "el": "Ελικοδρόμιο", + "en-GB": "Helipad", + "eo": "Surteriĝejo helikoptera", + "es": "Helipuerto", + "et": "Kopteriväljak", + "fa": "محل فرود هلی کوپتر", + "fi": "Helikopterikenttä", + "fr": "Héliport", + "gl": "Heliporto", + "hr": "Heliodrom", + "hu": "Helikopter-leszállóhely", + "hy": "Ուղաթիռային հրապարակ", + "id": "Helipad", + "is": "Þyrlupallur", + "it": "Elisuperficie", + "ja": "ヘリパッド", + "ko": "헬기 착륙장", + "lt": "Sraigtasparnių aikštelė", + "lv": "Helikopteru nosēšanās laukums", + "nl": "Helipad", + "no": "Helikopterlandingsplass", + "pl": "Lądowisko dla helikopterów", + "pt-BR": "Heliponto", + "pt": "Heliponto", + "ru": "Вертолётная площадка", + "sk": "Heliport", + "sl": "Heliodrom", + "sr": "Хелиодром", + "sv": "Helikopterplatta", + "ta": "சிறு விமானம் இறங்கும் தளம்", + "tr": "Helikopter Pisti", + "uk": "Вертолітний майданчик", + "vi": "Sân bay Trực thăng", + "yue": "直升機坪", + "zh-CN": "直升机场", + "zh-HK": "直升機坪", + "zh-TW": "直昇機坪", + "zh": "直升机场", + "mk": "Хеликоптерско слетувалиште", + "bg": "Хеликоптерна площадка", + "he": "מנחת מסוקים" + } + }, + "aeroway/runway": { + "title": { + "C": "Runway", + "en": "Runway", + "af": "Aanloopbaan", + "ar": "مدرج الطائر", + "ast": "Pista", + "bs": "Pista", + "ca": "Pista d'enlairament/aterratge", + "cs": "Vzletová a přistávací dráha", + "da": "Landingsbane", + "de": "Start- und Landebahn", + "el": "Διάδρομος Αεροδρομίου", + "en-GB": "Runway", + "eo": "Aviokurejo", + "es": "Pista de aterrizaje", + "et": "Lennurada", + "fa": "باند فرودگاه", + "fi": "Kiitorata", + "fr": "Piste d’atterrissage", + "gl": "Pista de aeroporto", + "hr": "Uzletno-sletna staza", + "hu": "Kifutópálya", + "id": "Landas pacu", + "is": "Flugbraut", + "it": "Pista di decollo/atterraggio", + "ja": "滑走路", + "kn": "ಓಡುದಾರಿ", + "ko": "활주로", + "lt": "Pakilimo takas", + "lv": "Skrejceļš", + "nl": "Startbaan", + "no": "Rullebane", + "pl": "Pas startowy", + "pt-BR": "Pista de Pouso e Decolagem", + "pt": "Pista de aterragem e descolagem", + "ru": "Взлётная полоса", + "sk": "Vzletová dráha", + "sl": "Vzletno-pristajalna steza", + "sr": "Узлетиште", + "sv": "Start- och landningsbana", + "ta": "ஓடுதளம்", + "tr": "Uçak Pisti", + "uk": "Злітно-посадкова смуга", + "vi": "Đường băng", + "yue": "跑道", + "zh-CN": "机场跑道", + "zh-HK": "跑道", + "zh-TW": "機場跑道", + "zh": "跑道", + "mk": "Писта", + "bg": "Летателна писта", + "dv": "އެއާރޕޯޓް ރަންވޭ", + "he": "מסלול המראה", + "so": "Gegada diyaaradaha" + } + }, + "aeroway/taxiway": { + "title": { + "C": "Taxiway", + "en": "Taxiway", + "af": "Rolbaan", + "ar": "طريق للمدرج", + "ast": "Cai de rodaxe", + "bs": "Staza za vožnju", + "ca": "Plataforma de rodada", + "cs": "Pojezdová dráha", + "da": "Taxiway", + "de": "Rollweg", + "el": "Τροχιόδρομος", + "en-GB": "Taxiway", + "eo": "Aŭtokur-strato", + "es": "Pista de rodaje", + "et": "Ruleerimistee", + "fa": "خزشراه", + "fi": "Rullaustie", + "fr": "Taxiway", + "gl": "Pista de rodaxe", + "hr": "Rulnica", + "hu": "Gurulóút", + "id": "Landas hubung", + "is": "Akbraut flugvéla", + "it": "Pista di rullaggio", + "ja": "航空機誘導路", + "ko": "유도로", + "lv": "Manevrēšanas ceļš", + "nl": "Taxibaan", + "no": "Taxibane", + "pl": "Droga kołowania", + "pt-BR": "Pista de Taxiamento", + "pt": "Via de circulação", + "ru": "Рулёжная дорожка", + "sk": "Rolovacia dráha", + "sl": "Vozna steza", + "sr": "Полетно-слетна стаза", + "sv": "Taxibana", + "tr": "Taksi Yolu", + "uk": "Руліжна доріжка", + "vi": "Đường lăn", + "yue": "滑行道", + "zh-CN": "滑行道", + "zh-HK": "滑行道", + "zh-TW": "滑行道", + "zh": "滑行道", + "mk": "Воздухопловен приод", + "bg": "Рольожка", + "he": "מסלול הסעה" + } + }, + "aeroway/terminal": { + "title": { + "C": "Airport Terminal", + "en": "Airport Terminal", + "ar": "محطة المطار", + "ast": "Terminal d'aeropuertu", + "ca": "Terminal d'aeroport", + "cs": "Letištní terminál", + "da": "Lufthavnsterminal", + "de": "Flughafenterminal", + "el": "Σταθμός Αεροναυτιλίας", + "en-GB": "Airport Terminal", + "eo": "Flugstacio", + "es": "Terminal de aeropuerto", + "et": "Lennuterminal", + "fa": "پایانه فرودگاه", + "fi": "Lentokenttäterminaali", + "fr": "Terminal d'aéroport", + "gl": "Terminal de aeroporto", + "hu": "Repülőtéri terminál", + "is": "Flugstöð", + "it": "Terminal aeroportuale", + "ja": "空港ターミナル", + "ko": "공항 터미널", + "lv": "Lidostas Terminālis", + "nl": "Luchthaventerminal", + "no": "Flyplassterminal", + "pl": "Terminal pasażerski", + "pt-BR": "Terminal de Aeroporto", + "pt": "Terminal de aeroporto", + "ru": "Терминал аэропорта", + "sk": "Letiskový termnál", + "sl": "Letališki terminal", + "sr": "Аеродромски терминал", + "sv": "Flygterminal", + "tr": "Terminal", + "uk": "Термінал", + "vi": "Ga Sân bay", + "zh-CN": "航站楼", + "zh-HK": "機場客運大樓", + "zh-TW": "機場航廈", + "mk": "Аеродромски терминал", + "dv": "އެއާރޕޯޓް ގިމަތަ", + "he": "טרמינל שדה תעופה", + "eu": "Aireportuko Terminal", + "so": "Gagida Dayaaradeed" + } + }, + "aeroway/holding_position": { + "title": { + "C": "Aircraft Holding Position", + "en": "Aircraft Holding Position", + "cs": "vyčkávací místo letadla", + "de": "Rollhalteort", + "eo": "Aviadila atendejo", + "es": "Posición de espera de aviones", + "fa": "موقعیت توقف و انتظار هواپیما", + "fi": "Lentokoneen pysähtymiskohta", + "fr": "Point d’attente avion", + "it": "Circuito di attesa per aeromobili", + "ja": "停止ポイント(空港)", + "pl": "Punkt oczekiwania dla samolotu", + "pt-BR": "Posição de retenção de aeronaves", + "pt": "Ponto de espera de avião", + "sv": "Väntplats för flygplan", + "uk": "Стоп-лінія", + "vi": "Vị trí Chờ đợi dành cho Máy bay", + "zh-CN": "跑道等待位置", + "zh-TW": "飛機停靠點", + "mk": "Чекална положба на леталото", + "he": "תבנית ריתוק כלי טיס" + } + }, + "aeroway/jet_bridge": { + "title": { + "C": "Jetway", + "en": "Jetway", + "cs": "Nástupní most", + "de": "Fluggastbrücke", + "eo": "Ponto flugstacio - aviadilo", + "es": "Pasarela de acceso a aeronaves", + "fa": "راه هوایی", + "ja": "ボーディング・ブリッジ", + "ko": "탑승교", + "pl": "Rękaw lotniczy", + "pt-BR": "Jetway", + "pt": "Ponte de embarque", + "sv": "Ombordstigningsbrygga", + "uk": "Посадковий рукав", + "vi": "Cầu Hành khách", + "zh-CN": "登机廊桥", + "zh-TW": "空橋", + "mk": "Авионски мост", + "he": "גשר עלייה למטוס" + } + }, + "aeroway/parking_position": { + "title": { + "C": "Aircraft Parking Position", + "en": "Aircraft Parking Position", + "cs": "parkovací místo letadla", + "de": "Flugzeugparkposition", + "el": "Θέση Στάθμευσης Αεροσκάφους", + "eo": "Aviadil-parkumejo (detala pozicio)", + "es": "Posición de estacionamiento de aviones", + "fa": "محل قرارگیری پارکینگ هواپیما", + "fi": "Lentokoneen pysäköintikohta", + "fr": "Voie de garage pour avion", + "it": "Posizione di parcheggio per aeromobili", + "ja": "駐機ポイント(空港)", + "no": "Luftfartøy Parkering Posisjon", + "pl": "Miejsce postoju samolotu", + "pt-BR": "Posição de estacionamento de aeronaves", + "pt": "Área de estacionamento de avião", + "sv": "Parkeringsplats för flygplan", + "uk": "Місце стоянки літака", + "vi": "Chỗ Đậu Máy bay", + "zh-CN": "停机位", + "zh-TW": "停機坪", + "mk": "Паркирна положба на леталото", + "he": "מיקום חניית כלי טיס" + } + }, + "aeroway/spaceport": { + "title": { + "C": "Spaceport", + "en": "Spaceport", + "cs": "kosmodrom", + "de": "Weltraumbahnhof", + "el": "Διαστημοδρόμιο", + "eo": "Kosmodromo", + "es": "Puerto espacial", + "et": "Kosmodroom", + "fa": "پایگاه فضایی", + "fi": "Laukaisukeskus", + "fr": "Centre spatial", + "hu": "Űrállomás", + "ja": "宇宙船基地", + "ko": "우주 공항", + "no": "Rakettbase", + "pl": "Port kosmiczny", + "pt-BR": "Base de lançamento espacial", + "pt": "Cosmódromo", + "ru": "Космодром", + "sr": "Свемирска лука", + "sv": "Rymdbas", + "uk": "Космопорт", + "vi": "Sân bay Vũ trụ", + "zh-CN": "航天港", + "zh-TW": "太空發射中心", + "mk": "Космодром", + "he": "מתקן שיגור" + } + }, + "aeroway/windsock": { + "title": { + "C": "Windsock", + "en": "Windsock", + "cs": "větrný rukáv", + "de": "Windsack", + "eo": "Ventmontrilo (maniko)", + "es": "Manga de viento", + "et": "Tuulekott", + "fa": "بادنمای کیسه‌ای", + "fi": "Tuulisukka", + "fr": "Manche à air", + "gl": "Manga de vento", + "hu": "Szélzsák", + "it": "Manica a vento", + "ja": "吹流し", + "no": "Vindpølse", + "pl": "Rękaw (wiatrowskaz)", + "pt-BR": "Biruta", + "pt": "Manga de vento", + "sr": "Ветроказ", + "sv": "Vindstrut", + "tr": "Rüzgâr hortumu", + "uk": "Вітровказ", + "vi": "Ống gió", + "zh-CN": "风向袋", + "zh-TW": "風向袋", + "mk": "Ветроказен ракав", + "he": "שרוול רוח" + } + }, + "amenity/arts_centre": { + "title": { + "C": "Arts Center", + "en": "Arts Center", + "ar": "مركز فنون", + "ast": "Centru d'arte", + "bn": "শিল্প কেন্দ্র", + "bs": "Centar za umjetnost", + "ca": "Centre artístic", + "cs": "Umělecké centrum", + "da": "Kunstcenter", + "de": "Kunstzentrum", + "el": "Κέντρο Καλών Τεχνών", + "en-GB": "Arts Centre", + "eo": "Belart-centro", + "es": "Centro de Arte", + "et": "Kunstide keskus", + "fa": "مرکز هنری", + "fi": "Taidekeskus", + "fr": "Centre artistique et culturel", + "gl": "Centro de arte", + "hr": "Umjetnički paviljon", + "hu": "Művészeti központ", + "id": "Pusat Kesenian", + "is": "Listamiðstöð", + "it": "Centro Culturale", + "ja": "アートセンター", + "ko": "아트 센터", + "lt": "Menų centras", + "lv": "Mākslas Centrs", + "nl": "Cultureel centrum", + "no": "Kunst Senter", + "pl": "Centrum artystyczne", + "pt-BR": "Centro Cultural", + "pt": "Centro de artes", + "ro": "Centru de Artă", + "ru": "Центр Искусств", + "sk": "Galéria umenia", + "sl": "Umetniško središče", + "sr": "Уметнички центар", + "sv": "Konstcenter", + "ta": "கலையரங்கம் ", + "tr": "Sanat Merkezi", + "uk": "Мистецький центр", + "vi": "Trung tâm Nghệ thuật", + "yue": "美術館", + "zh-CN": "艺术中心", + "zh-HK": "美術館", + "zh-TW": "藝文中心", + "mk": "Дом на уметноста", + "he": "מרכז אומנויות", + "eu": "Arte Zentro", + "en-AU": "Arts Centre" + } + }, + "amenity/atm": { + "title": { + "C": "ATM", + "en": "ATM", + "af": "ATM", + "ar": "صراف آلي", + "ast": "Caxeru automáticu", + "bn": "এটিএম", + "bs": "Bankomat", + "ca": "Caixer automàtic", + "cs": "Bankomat", + "da": "Pengeautomat", + "de": "Geldautomat", + "el": "ATM", + "en-GB": "Cash Machine", + "eo": "Bankaŭtomato", + "es": "Cajero automático", + "et": "Pangaautomaat", + "fa": "خودپرداز", + "fi": "Pankkiautomaatti", + "fr": "Distributeur de billets", + "gl": "Caixeiro automático", + "hr": "Bankomat", + "hu": "Bankautomata", + "id": "ATM", + "is": "Hraðbanki", + "it": "Bancomat", + "ja": "ATM", + "kn": "ಎಟಿಎಮ್ ", + "ko": "ATM", + "lt": "Bankomatas", + "lv": "Bankomāts", + "nl": "Bankautomaat", + "no": "Minibank", + "pl": "Bankomat", + "pt-BR": "Caixa Eletrônico", + "pt": "Multibanco", + "ro": "Bancomat", + "ru": "Банкомат", + "sk": "Bankomat", + "sl": "Bankomat", + "sr": "Банкомат", + "sv": "Uttagsautomat", + "ta": "ஏ.டி.எம்", + "tr": "ATM", + "uk": "Банкомат", + "vi": "Máy Rút tiền", + "yue": "提款機", + "zh-CN": "ATM机", + "zh-HK": "提款機", + "zh-TW": "自動櫃員機", + "zh": "自动柜员机(ATM)。", + "mk": "Банкомат", + "bg": "Банкомат", + "he": "כספומט", + "nn": "Minibank", + "eu": "ATM" + } + }, + "amenity/bank": { + "title": { + "C": "Bank", + "en": "Bank", + "af": "Bank", + "ar": "بنك", + "ast": "Bancu", + "bn": "ব্যাংক", + "bs": "Banka", + "ca": "Banc", + "cs": "Banka", + "da": "Bank", + "de": "Bank-Filiale", + "el": "Τράπεζα", + "en-GB": "Bank", + "eo": "Bankejo", + "es": "Banco", + "et": "Pank", + "fa": "بانک", + "fi": "Pankki", + "fr": "Banque", + "gl": "Banco", + "hr": "Banka", + "hu": "Bank", + "hy": "Բանկ", + "id": "Bank", + "is": "Banki", + "it": "Banca", + "ja": "銀行", + "kn": "ಬ್ಯಾಂಕ್", + "ko": "은행", + "lt": "Bankas", + "lv": "Banka", + "nl": "Bank (financieel)", + "no": "Bank", + "pl": "Bank", + "pt-BR": "Banco", + "pt": "Banco", + "ro": "Banca", + "ru": "Банк", + "sk": "Banka", + "sl": "Banka", + "sr": "Банка", + "sv": "Bank", + "ta": "வங்கி", + "te": "బ్యాంకు", + "tr": "Banka", + "uk": "Банк", + "vi": "Ngân hàng", + "yue": "銀行", + "zh-CN": "银行", + "zh-HK": "銀行", + "zh-TW": "銀行", + "zh": "银行", + "mk": "Банка", + "bg": "Банка", + "dv": "ބޭންކު", + "he": "בנק", + "eu": "Banku", + "ckb": "بانک", + "so": "Bangi" + } + }, + "amenity/bar": { + "title": { + "C": "Bar", + "en": "Bar", + "af": "Kroeg", + "ar": "حانة", + "ast": "Bar", + "bn": "পানশালা", + "bs": "Bar", + "ca": "Bar de copes", + "cs": "Bar", + "da": "Bar", + "de": "Bar", + "el": "Μπαρ", + "en-GB": "Bar", + "eo": "Drinkejo", + "es": "Bar (latam) / Bar de copas (es)", + "et": "Baar", + "fa": "بار", + "fi": "Baari", + "fr": "Bar", + "gl": "Bar de copas", + "hr": "Bar", + "hu": "Bár", + "hy": "Բար", + "id": "Bar", + "is": "Knæpa", + "it": "Bar", + "ja": "バー", + "ko": "바", + "lt": "Baras", + "lv": "Bārs", + "nl": "Bar", + "no": "Bar", + "pl": "Bar alkoholowy", + "pt-BR": "Bar requintado / Drinqueria", + "pt": "Bar", + "ro": "Bar", + "ru": "Бар", + "sk": "Bar", + "sl": "Bar", + "sr": "Бар", + "sv": "Bar", + "ta": "மதுபானக் கடை ", + "tr": "Bar", + "uk": "Бар", + "vi": "Quán rượu", + "yue": "酒吧", + "zh-CN": "酒吧", + "zh-HK": "酒吧", + "zh-TW": "酒吧", + "zh": "酒吧", + "mk": "Бар", + "bg": "Бар", + "dv": "ބާރ", + "he": "בר", + "eu": "Taberna", + "ckb": "مەیخانە", + "so": "Makhaayad" + } + }, + "amenity/bbq": { + "title": { + "C": "Barbecue/Grill", + "en": "Barbecue/Grill", + "ar": "مكان مخصص للشواء", + "ast": "Barbacoa/Asador", + "ca": "Barbacoa/graella", + "cs": "Gril", + "da": "Barbecue/Grill", + "de": "Grillplatz", + "el": "Ψησταριά/Σκάρα", + "en-GB": "Barbecue/Grill", + "eo": "Rostilo", + "es": "Asador/Parrilla", + "et": "Väligrill", + "fa": "باربیکیو / گریل", + "fi": "Grilli", + "fr": "Barbecue, grill", + "gl": "Barbacoa/Grella", + "hr": "Roštilj", + "hu": "Közösségi grillező - szallonasütő", + "id": "Barbekyu/Pemanggang", + "is": "Grill", + "it": "Barbecue/Griglia", + "ja": "バーベキュー場/グリル", + "ko": "바비큐/그릴", + "lt": "Barbekiu/Grilis", + "lv": "Barbekjū/Grills", + "nl": "Barbecue/Grill", + "no": "Grill", + "pl": "Grill", + "pt-BR": "Churrasqueira", + "pt": "Grelhador", + "ru": "Барбекю/Гриль", + "sk": "Stanovište pre gril", + "sl": "Okrepčevalnica", + "sr": "Роштиљ/печењара", + "sv": "Grillplats/Grill", + "tr": "Mangal Restoranı", + "uk": "Барбекю/мангал", + "vi": "Vỉ nướng", + "zh-CN": "烧烤设施", + "zh-HK": "燒烤", + "zh-TW": "燒烤", + "mk": "Скара", + "he": "ברביקיו", + "eu": "Barbakoa/Parrila" + } + }, + "amenity/bench": { + "title": { + "C": "Bench", + "en": "Bench", + "af": "Bankie", + "ar": "مقعد", + "ast": "Asientu", + "bn": "বেঞ্চ", + "bs": "Klupa", + "ca": "Banc", + "cs": "Lavička", + "da": "Bænk", + "de": "Sitzbank", + "el": "Παγκάκι", + "en-GB": "Bench", + "eo": "Benko", + "es": "Banco / Asiento", + "et": "Pink", + "fa": "نیمکت", + "fi": "Penkki", + "fr": "Banc", + "gl": "Banco ou asento", + "hr": "Klupa", + "hu": "Pad", + "id": "Bangku", + "is": "Bekkur", + "it": "Panchina", + "ja": "ベンチ", + "kn": " ನ್ಯಾಯಪೀಠ", + "ko": "벤치", + "lt": "Suolas", + "lv": "Sols", + "nl": "Zitbank", + "no": "Benk", + "pl": "Ławka", + "pt-BR": "Assento", + "pt": "Banco", + "ro": "Bancă", + "ru": "Скамейка", + "sk": "Lavička", + "sl": "Klop", + "sr": "Клупа", + "sv": "Bänk", + "ta": "விசுப்பலகை", + "tr": "Bank", + "uk": "Лавка", + "vi": "Băng ghế", + "yue": "長椅", + "zh-CN": "长椅", + "zh-HK": "長椅", + "zh-TW": "長椅", + "zh": "长凳", + "mk": "Клупа", + "bg": "Пейка", + "he": "ספסל", + "eu": "Banku" + } + }, + "amenity/bicycle_parking": { + "title": { + "C": "Bicycle Parking", + "en": "Bicycle Parking", + "af": "Fietsparkering", + "ar": "موقف دراجات هوائية", + "ast": "Aparcaderu de bicicletes", + "bn": "সাইকেল পার্ক করার জায়গা", + "bs": "Parking bicikala", + "ca": "Aparcament per a bicicletes", + "cs": "Parkování kol", + "da": "Cykelparkering", + "de": "Fahrradparkplatz", + "el": "Στάθμευση Ποδηλάτων", + "en-GB": "Bicycle Parking", + "eo": "Bicikla parkumejo", + "es": "Aparcamiento / estacionamiento de bicicletas", + "et": "Rattaparkla", + "fa": "پارکینگ دوچرخه", + "fi": "Pyöräpysäköinti", + "fr": "Parking à vélos", + "gl": "Aparcadoiro de bicicletas", + "hr": "Parkiralište za bicikle", + "hu": "Kerékpártároló", + "hy": "Հեծանվային կայանատեղի", + "id": "Parkir Sepeda", + "is": "Hjólastæði", + "it": "Parcheggio biciclette", + "ja": "駐輪場", + "ko": "자전거 주차장", + "lt": "Dviračių stovėjimo aikštelė", + "lv": "Velo stāvvieta", + "nl": "Fietsenstalling", + "no": "Sykkelparkering", + "pl": "Parking dla rowerów", + "pt-BR": "Bicicletário", + "pt": "Parque de bicicletas", + "ro": "Parcare biciclete", + "ru": "Велопарковка", + "sk": "Stojan pre bicykle", + "sl": "Parkirišče za kolesa", + "sr": "Бициклистички паркинг", + "sv": "Cykelparkering", + "ta": "ஈருருளை நிறுத்தகம்", + "tr": "Bisiklet Parkı", + "uk": "Велостоянка", + "vi": "Chỗ Đậu Xe đạp", + "yue": "泊單車處", + "zh-CN": "自行车停车处", + "zh-HK": "單車停放處", + "zh-TW": "單車停車場", + "zh": "自行车停放处", + "mk": "Велосипедско паркиралиште", + "bg": "Паркинг за велосипеди", + "he": "חניית אופניים", + "eu": "Bizikletentzako Aparkalekua", + "ckb": "گەراجی پاسکیل" + } + }, + "amenity/bicycle_rental": { + "title": { + "C": "Bicycle Rental", + "en": "Bicycle Rental", + "af": "Fietshuur", + "ar": "تأجير دراجات", + "ast": " Alquiler de bicicletes", + "bn": "সাইকেল ভাড়া নেয়া", + "bs": "Iznajmljivanje bicikala", + "ca": "Lloguer de bicicletes", + "cs": "Půjčovna kol", + "da": "Cykeludlejning", + "de": "Fahrradverleih", + "el": "Ενοικιαζόμενα Ποδηλάτα", + "en-GB": "Bicycle Rental", + "eo": "Bicikl-pruntejo", + "es": "Alquiler de bicicletas", + "et": "Rattarent", + "fa": "اجاره دوچرخه", + "fi": "Kaupunkipyöräasema", + "fr": "Location de vélos", + "gl": "Alugueiro de bicicletas", + "hr": "Najam bicikla", + "hu": "Kerékpárkölcsönző", + "hy": "Հեծանիվի վարձակալություն", + "id": "Penyewaan Sepeda", + "is": "Hjólaleiga", + "it": "Stazione del Bike Sharing", + "ja": "レンタサイクル", + "ko": "자전거 대여소", + "lt": "Dviračių nuoma", + "lv": "Velonoma", + "nl": "Fietsverhuur", + "no": "Sykkelutleie", + "pl": "Wypożyczalnia rowerów", + "pt-BR": "Estação de Bicicletas Públicas", + "pt": "Aluguer de bicicletas", + "ro": "Închiriere biciclete", + "ru": "Велопрокат", + "sk": "Prenájom bicyklov", + "sl": "Izposoja koles", + "sr": "Изнајмљивање бицикла", + "sv": "Cykeluthyrning", + "ta": "சைக்கிள் வாடகை", + "tr": "Bisiklet Kiralama", + "uk": "Прокат велосипедів", + "vi": "Cho thuê Xe đạp", + "yue": "租單車舖", + "zh-CN": "自行车出租点", + "zh-HK": "單車出租", + "zh-TW": "單車出租", + "zh": "自行车租赁处", + "mk": "Изнајмување велосипеди", + "bg": "Наем на велосипеди", + "he": "השכרת אופניים", + "eu": "Bizikleten Alokairua " + } + }, + "amenity/bicycle_repair_station": { + "title": { + "C": "Bicycle Repair Tool Stand", + "en": "Bicycle Repair Tool Stand", + "ar": "ورشة إصلاح دراجات هوائية", + "ast": "Caballete pa reparar bicicletes", + "ca": "Lloc de reparació de Bicicletes", + "cs": "Montážní stojan na kola", + "da": "Cykelreparationsværktøj", + "de": "Fahrradreparatur-Werkzeugkasten", + "el": "Πάγκος Επισκευής Ποδηλάτων", + "en-GB": "Bicycle Repair Tool Stand", + "eo": "Bicikla mem-riparejo", + "es": "Puesto de reparación de bicicletas", + "et": "Jalgrattaremondi pukk", + "fa": "ایستگاه تعمیر دوچرخه", + "fi": "Polkupyörän huoltoteline", + "fr": "Stand d'outils de réparation de vélos", + "gl": "Lugar para ferramentas de reparación de bicicletas", + "hr": "Stalak sa alatima za bicikle", + "hu": "Önálló kerékpárszerelő pont", + "is": "Hjólaviðgerðastandur", + "it": "Stazione di riparazione biciclette", + "ja": "自転車修理店", + "ko": "자전거 수리 도구", + "lv": "Velosipēdu Remonta Darbarīku Stends", + "nl": "Openbaar fietsgereedschap", + "no": "Sykkel Mekkestativ", + "pl": "Samoobsługowa stacja naprawy rowerów", + "pt-BR": "Estação de Reparo de Bicicletas", + "pt": "Ponto de reparação de bicicletas", + "ru": "Стойка для ремонта велосипедов", + "sk": "Stojan s náradím na opravu bicyklov", + "sl": "Stojalo za popravilo koles", + "sv": "Station för cykelreparation", + "tr": "Bisiklet Tamircisi", + "uk": "Станція ремонту велосипедів", + "vi": "Quầy Sửa Xe đạp", + "zh-CN": "自行车维修工具站", + "zh-HK": "單車維修站", + "zh-TW": "自行車維修工具站", + "mk": "Држач за поправка на велосипеди", + "he": "עמדת תיקון אופניים", + "eu": "Bizikleta konpontzeko tresneriaren postua" + } + }, + "amenity/biergarten": { + "title": { + "C": "Biergarten", + "en": "Biergarten", + "cs": "Pivní zahrada", + "de": "Biergarten", + "eo": "Bierĝardeno", + "es": "Biergarten (Bar al aire libre)", + "fa": "بیرگارتن (حیاط با سرو آبجو - ریشه در مونیخ آلمان)", + "fr": "Biergarten", + "gl": "Biergarten (xardín da cervexa alemán)", + "hu": "Sörkert", + "is": "Bjórgarður", + "it": "Biergarten", + "ja": "ビアガーデン", + "ko": "옥외 식탁", + "nl": "Biergarten", + "no": "Ølhage", + "pl": "Ogródek piwny", + "pt-BR": "Biergarten", + "pt": "Jardim de cerveja", + "ru": "Пивной сад", + "sv": "Ölträdgård", + "tr": "Bira bahçesi", + "uk": "Пивний садок", + "vi": "Vườn Bia", + "zh-CN": "啤酒花园", + "zh-HK": "露天啤酒店", + "zh-TW": "啤酒花園 ", + "mk": "Пивска градина", + "he": "ביר גרדן", + "eu": "Biergarten" + } + }, + "amenity/boat_rental": { + "title": { + "C": "Boat Rental", + "en": "Boat Rental", + "ar": "محل استئجار قوارب", + "ast": "Alquiler de barcos", + "bs": "Iznajmljivanje plovila", + "ca": "Lloguer d'embarcacions", + "cs": "Půjčovna lodí", + "da": "Bådudlejning", + "de": "Bootsvermietung", + "el": "Ενοικίαση Σκαφών", + "en-GB": "Boat Rental", + "eo": "Boat-pruntejo", + "es": "Alquiler de barcos", + "et": "Paadi laenutus", + "fa": "کرایه قایق", + "fi": "Venevuokraamo", + "fr": "Location de bateau", + "gl": "Alugueiro de embarcacións", + "hr": "Najam brodova", + "hu": "Hajókölcsönző", + "id": "Penyewaan Perahu Boat", + "is": "Bátaleiga", + "it": "Noleggio barche", + "ja": "貸しボート", + "ko": "보트 대여소", + "lt": "Laivų nuoma", + "lv": "Laivu īre", + "nl": "Bootverhuur", + "no": "Båuttleie", + "pl": "Wypożyczalnia łodzi", + "pt-BR": "Aluguel de Barcos", + "pt": "Aluguer de barcos", + "ro": "Închiriere Barcă", + "ru": "Аренда Лодок", + "sk": "Prenájom lodí", + "sl": "Izposoja plovil", + "sr": "Изнајмљивање чамаца", + "sv": "Båtuthyrning", + "tr": "Bot Kiralama", + "uk": "Прокат човнів", + "vi": "Cho thuê Tàu", + "yue": "租艇", + "zh-CN": "船舶租赁处", + "zh-HK": "租艇", + "zh-TW": "小艇出租", + "mk": "Изнајмување чамци", + "he": "השכרת סירה", + "eu": "Ontzi alokairu" + } + }, + "amenity/bureau_de_change": { + "title": { + "C": "Currency Exchange", + "en": "Currency Exchange", + "ar": "تحويل أموال", + "ast": "Cambiu de moneda", + "ca": "Canvi de divisa", + "cs": "Směnárna", + "da": "Valutaveksling", + "de": "Geldwechselstube", + "el": "Ανταλλακτήριο Συναλλάγματος", + "en-GB": "Currency Exchange", + "eo": "Monŝanĝejo", + "es": "Cambio de moneda", + "et": "Valuutavahetus", + "fa": "تبدیل ارز / صرافی", + "fi": "Valuutanvaihtopiste", + "fr": "Bureau de change", + "gl": "Troco de divisas", + "hr": "Mjenjačnica", + "hu": "Pénzváltó", + "id": "Penukaran Mata Uang", + "is": "Gjaldmiðlaskipti", + "it": "Cambiavalute", + "ja": "両替所", + "ko": "환전소", + "lt": "Valiutos keitykla", + "lv": "Valūtas Maiņa", + "nl": "Wisselkantoor", + "no": "Valutaveksling", + "pl": "Kantor", + "pt-BR": "Casa de Câmbio", + "pt": "Agência de câmbio", + "ro": "Schimbare Valută", + "ru": "Пункт обмена валюты", + "sk": "Zmenáreň", + "sl": "Menjalnica", + "sr": "Мењачница", + "sv": "Växlingskontor", + "ta": "பணப் பரிமாற்றம்", + "tr": "Döviz Bürosu", + "uk": "Обмін валют", + "vi": "Đổi tiền", + "zh-CN": "货币兑换", + "zh-HK": "外幣兌換", + "zh-TW": "外幣兌換", + "mk": "Менувачница", + "he": "המרת מט״ח", + "eu": "Moneta trukea", + "ckb": "گۆڕینەوەی دراو" + } + }, + "amenity/cafe": { + "title": { + "C": "Cafe", + "en": "Cafe", + "af": "Kafee", + "ar": "مقهى", + "ast": "Café", + "bn": "ক্যাফে", + "bs": "Kafe", + "ca": "Cafè", + "cs": "Kavárna", + "da": "Cafe", + "de": "Café", + "el": "Καφετέρια", + "en-GB": "Cafe", + "eo": "Kafejo", + "es": "Cafetería", + "et": "Kohvik", + "fa": "کافه", + "fi": "Kahvila", + "fr": "Café", + "gl": "Cafetaría", + "hr": "Kafić", + "hu": "Kávézó", + "hy": "Սրճարան", + "id": "Kafe", + "is": "Kaffihús", + "it": "Caffè", + "ja": "喫茶店", + "ko": "카페", + "lt": "Kavinė", + "lv": "Kafejnīca", + "nl": "Cafetaria", + "no": "Kafé", + "pl": "Kawiarnia", + "pt-BR": "Cafeteria", + "pt": "Café", + "ro": "Cafenea", + "ru": "Кафе", + "sk": "Kaviareň", + "sl": "Kavarna", + "sr": "Кафе", + "sv": "Café", + "ta": "டீக்கடை", + "tr": "Kafe", + "uk": "Кафе", + "vi": "Quán Cà phê/Trà/Chè", + "yue": "茶座", + "zh-CN": "咖啡馆", + "zh-HK": "茶座", + "zh-TW": "咖啡廳", + "zh": "咖啡", + "mk": "Кафетерија", + "bg": "Кафене", + "dv": "ކެފޭ", + "he": "בית קפה", + "ms": "Kafe", + "eu": "Kafetegi", + "so": "Kafateeriya" + } + }, + "amenity/car_rental": { + "title": { + "C": "Car Rental", + "en": "Car Rental", + "af": "Kar huur", + "ar": "محل إيجار سيارات", + "ast": "Alquiler d'automóviles", + "bn": "গাড়ি ভাড়া", + "bs": "Rent-a-car", + "ca": "Lloguer de cotxes", + "cs": "Půjčovna aut", + "da": "Biludlejning", + "de": "Autovermietung", + "el": "Ενοικίαση Αυτοκινήτων", + "en-GB": "Car Rental", + "eo": "Aŭtomobil-pruntejo", + "es": "Alquiler de automóviles", + "et": "Autorent", + "fa": "کرایه ماشین", + "fi": "Autonvuokraus", + "fr": "Location de voiture", + "gl": "Alugueiro de automóbiles", + "hr": "Najam automobila", + "hu": "Autókölcsönző", + "id": "Penyewaan Mobil", + "is": "Bílaleiga", + "it": "Noleggio auto", + "ja": "レンタカー", + "ko": "자동차 대여점", + "lt": "Automobilių nuoma", + "lv": "Autonoma", + "nl": "Autoverhuur", + "no": "Bilutleie", + "pl": "Wypożyczalnia samochodów", + "pt-BR": "Locadora de veículos", + "pt": "Aluguer de automóveis", + "ro": "Închiriere Mașini", + "ru": "Аренда автомобилей", + "sk": "Autopožičovňa", + "sl": "Izposoja avtomobilov", + "sr": "Изнајмљивање возила", + "sv": "Biluthyrning", + "tr": "Araç Kiralama", + "uk": "Прокат автомобілів", + "vi": "Cho thuê Xe", + "yue": "租車舖", + "zh-CN": "汽车租赁", + "zh-HK": "汽車租賃", + "zh-TW": "汽車租車店", + "mk": "Изнајмување автомобили", + "bg": "Коли под наем", + "he": "השכרת רכב", + "eu": "Auto Alokairua" + } + }, + "amenity/car_sharing": { + "title": { + "C": "Car Sharing Station", + "en": "Car Sharing Station", + "ar": "محطة مشاركة السيارات", + "cs": "stanice sdílení aut", + "da": "Delebilsstation", + "de": "Car Sharing Station", + "eo": "Aŭtomobil-pruntejo komunuma (organizita kunveturado)", + "es": "Estación de uso temporal de vehículos (Carsharing)", + "fa": "ایستگاه اشتراک‌گذاری خودرو", + "fr": "Station d'auto-partage", + "gl": "Estación de vehículos compartidos (Carsharing)", + "it": "Stazione per il Car Sharing", + "ja": "カーシェアリング", + "pl": "Stacja miejskiej wypożyczalni samochodów", + "pt-BR": "Estação de compartilhamento de carros", + "pt": "Posto de partilha de automóvel", + "sv": "Bildelningsstation", + "uk": "Каршерінг станція", + "vi": "Trạm Chia sẻ Xe", + "zh-CN": "共享汽车站点", + "zh-TW": "共享汽車站", + "mk": "Станица за споделување автомобили", + "he": "תחנת שיתוף מכוניות" + } + }, + "amenity/car_wash": { + "title": { + "C": "Car Wash", + "en": "Car Wash", + "af": "Karwas", + "ar": "غسيل سيارات", + "ast": "Llaváu de coches", + "bs": "Autopraonica", + "ca": "Rentat de cotxes", + "cs": "Automyčka", + "da": "Bilvask", + "de": "Autowäsche", + "el": "Πλυντήριο Αυτοκινήτων", + "en-GB": "Car Wash", + "eo": "Aŭtomobil-purigejo", + "es": "Lavado de automóviles", + "et": "Autopesula", + "fa": "کارواش", + "fi": "Autopesula", + "fr": "Station de lavage de voiture", + "gl": "Lavado de automóbiles", + "hr": "Autopraonica", + "hu": "Autómosó", + "id": "Pencucian Mobil", + "is": "Bílaþvottur", + "it": "Autolavaggio", + "ja": "洗車場", + "ko": "세차장", + "lt": "Automobilių plovykla", + "lv": "Automazgātuve", + "nl": "Autowasstraat", + "no": "Bilvask", + "pl": "Myjnia samochodowa", + "pt-BR": "Lava a Jato", + "pt": "Lavagem de veículos", + "ro": "Spălătorie Auto", + "ru": "Автомойка", + "sk": "Autoumyváreň", + "sl": "Avtopralnica", + "sr": "Ауто-перионица", + "sv": "Biltvätt", + "tr": "Araç Yıkama", + "uk": "Автомийка", + "vi": "Rửa xe", + "yue": "洗車舖", + "zh-CN": "洗车", + "zh-HK": "洗車店", + "zh-TW": "洗車店", + "zh": "洗车", + "mk": "Автоперална", + "bg": "Автомивка", + "he": "שטיפת רכב", + "eu": "Auto garbiketa", + "ckb": "شووشتنگەی ئۆتۆمبێل" + } + }, + "amenity/casino": { + "title": { + "C": "Casino", + "en": "Casino", + "ar": "كازينو", + "ast": "Casino", + "ca": "Casino", + "cs": "Kasino", + "da": "Kasino", + "de": "Kasino", + "el": "Καζίνο", + "en-GB": "Casino", + "eo": "Monludejo", + "es": "Casino", + "et": "Kasiino", + "fa": "کازینو", + "fi": "Kasino", + "fr": "Casino", + "gl": "Casino", + "hr": "Kasino", + "hu": "Kaszinó", + "id": "Kasino", + "is": "Spilavíti", + "it": "Casinò", + "ja": "カジノ", + "ko": "카지노", + "lt": "Kazino", + "lv": "Kazino", + "nl": "Casino", + "no": "Kasino", + "pl": "Kasyno", + "pt-BR": "Cassino", + "pt": "Casino", + "ro": "Cazino", + "ru": "Казино", + "sk": "Kasíno", + "sl": "Igralnica", + "sr": "Казино", + "sv": "Kasino", + "tr": "Kumarhane", + "uk": "Казино", + "vi": "Sòng bạc", + "zh-CN": "赌场", + "zh-HK": "賭場", + "zh-TW": "賭場", + "mk": "Коцкарница", + "he": "קזינו", + "eu": "Kasino", + "ckb": "گازینۆ" + } + }, + "amenity/charging_station": { + "title": { + "C": "Charging Station", + "en": "Charging Station", + "ar": "محطة شحن", + "ast": "Estación de recarga", + "ca": "Estació de càrrega", + "cs": "Nabíjecí stanice", + "da": "Opladerstation", + "de": "Ladestation für Elektrofahrzeuge", + "el": "Σταθμός Φόρτισης", + "en-GB": "Charging Station", + "eo": "Ŝargostacio", + "es": "Estación de carga para vehículos eléctricos", + "et": "Laadimisjaam", + "fa": "ایستگاه شارژ", + "fi": "Latauspiste", + "fr": "Borne de recharge", + "gl": "Estación de carga", + "hr": "Punionica za električna vozila", + "hu": "Elektromos töltőállomás", + "is": "Hleðslustöð", + "it": "Stazione di ricarica", + "ja": "充電スタンド", + "ko": "충전소", + "lt": "Įkrovimo stotelė", + "lv": "Uzlādes stacija", + "nl": "Oplaadstation", + "no": "Ladestasjon", + "pl": "Stacja ładowania pojazdów", + "pt-BR": "Estação de carregamento", + "pt": "Posto de carregamento", + "ro": "Benzinărie", + "ru": "Станция зарядки", + "sk": "Nabíjacia stanica", + "sl": "Polnilna postaja", + "sv": "Laddstation", + "tr": "Şarj İstasyonu", + "uk": "Зарядна станція", + "vi": "Trạm Sạc Pin", + "zh-CN": "充电站", + "zh-HK": "充電站", + "zh-TW": "充電站", + "mk": "Напојна станица", + "he": "תחנת טעינה", + "eu": "Kargatzeko geltokia" + } + }, + "amenity/childcare": { + "title": { + "C": "Nursery/Childcare", + "en": "Nursery/Childcare", + "ar": "رعاية الأطفال", + "ast": "Preescolar/Guardería", + "ca": "Llar d'Infants", + "cs": "Předškolní a mimoškolní péče", + "da": "Dagpleje/Vuggestue", + "de": "Kindergrippenbetreuung, Kindertagesstätte", + "el": "Παιδιατρική", + "en-GB": "Nursery/Childcare", + "eo": "Bebovartejo", + "es": "Guardería/Cuidado de niños", + "et": "Lastehoid", + "fa": "مهدکودک/مراقبت از کودکان", + "fi": "Päiväkoti", + "fr": "Crèche, garde d'enfants", + "gl": "Gardaría", + "hr": "Jaslice", + "hu": "Bölcsőde", + "id": "Tempat Penitipan Anak", + "is": "Barnagæsla/dagvistun", + "it": "Asilo nido", + "ja": "保育所", + "ko": "보육/육아", + "lv": "Bērnistaba / Bērnu aprūpe", + "nl": "Kinderdagverblijf", + "pl": "Żłobek", + "pt-BR": "Berçário ou Creche", + "pt": "Berçário / Creche", + "ro": "Grădiniță", + "ru": "Детская комната", + "sk": "Detská starostlivosť", + "sl": "Jasli / Vrtec", + "sr": "Обданиште", + "sv": "Barnomsorg", + "tr": "Çocuk Bakımı", + "uk": "Дитяча кімната", + "vi": "Giữ trẻ", + "zh-CN": "托儿所/保育园", + "zh-HK": "託兒所/幼兒護理", + "zh-TW": "托兒所/托嬰處", + "mk": "Детска градинка", + "he": "גנון", + "eu": "Haurtzendegi/ Ume zaintza" + } + }, + "amenity/cinema": { + "title": { + "C": "Cinema", + "en": "Cinema", + "af": "Fliek", + "ar": "سينما", + "ast": "Cine", + "bn": "সিনেমা", + "bs": "Kino", + "ca": "Cinema", + "cs": "Kino", + "da": "Biograf", + "de": "Kino", + "el": "Κινηματογράφος", + "en-GB": "Cinema", + "eo": "Kinejo", + "es": "Cine", + "et": "Kino", + "fa": "سینما", + "fi": "Elokuvateatteri", + "fr": "Cinéma", + "gl": "Cine", + "hr": "Kino", + "hu": "Mozi", + "hy": "Կինոթատրոն", + "id": "Bioskop", + "is": "Kvikmyndahús", + "it": "Cinema", + "ja": "映画館", + "kn": "ಸಿನಿಮಾ", + "ko": "영화관", + "lt": "Kino teatras", + "lv": "Kino", + "nl": "Bioscoop", + "no": "Kino", + "pl": "Kino", + "pt-BR": "Cinema", + "pt": "Cinema", + "ro": "Cinema", + "ru": "Кинотеатр", + "sk": "Kino", + "sl": "Kino", + "sr": "Биоскоп", + "sv": "Biograf", + "ta": "சினிமா", + "te": "సినిమా హాలు", + "tr": "Sinema", + "uk": "Кінотеатр", + "vi": "Rạp phim", + "yue": "電影戲院", + "zh-CN": "电影院", + "zh-HK": "戲院", + "zh-TW": "電影院", + "zh": "电影院", + "mk": "Кино", + "bg": "Кино", + "dv": "ސިނަމާ", + "he": "קולנוע", + "eu": "Zinema", + "ckb": "سینەما", + "so": "Shaneemo" + } + }, + "amenity/clinic": { + "title": { + "C": "Clinic", + "en": "Clinic", + "ar": "عيادة", + "ast": "Clínica", + "bs": "Klinika", + "ca": "Clínica", + "cs": "Poliklinika", + "da": "Klinik", + "de": "Klinik", + "el": "Κλινική", + "en-GB": "Clinic", + "eo": "Kuracistejo (centro de komunuma sano)", + "es": "Clínica", + "et": "Kliinik", + "fa": "کلینیک", + "fi": "Terveyskeskus", + "fr": "Centre médical de taille moyenne, soins en ambulatoire", + "gl": "Clínica ou centro de saúde", + "hr": "Klinika", + "hu": "Rendelőintézet", + "id": "Klinik", + "is": "Læknastofa", + "it": "Clinica medica", + "ja": "クリニック(中規模病院)", + "kn": "ಚಿಕಿತ್ಸಾಲಯ", + "ko": "클리닉", + "lt": "Klinika", + "lv": "Klīnika", + "nl": "Dagkliniek", + "no": "Klinikk", + "pl": "Klinika/oddział", + "pt-BR": "Clínica ou Posto de Saúde", + "pt": "Centro Clínico", + "ro": "Clinică", + "ru": "Клиника", + "sk": "Klinika", + "sl": "Klinika", + "sr": "Клиника", + "sv": "Vårdcentral", + "tr": "Klinik", + "uk": "Клініка", + "vi": "Trạm Y tế", + "zh-CN": "诊所", + "zh-HK": "診所", + "zh-TW": "診所", + "mk": "Клиника", + "he": "מרפאה", + "eu": "Erietxe", + "ckb": "نۆڕینگە" + } + }, + "amenity/clock": { + "title": { + "C": "Clock", + "en": "Clock", + "ar": "ساعة", + "ast": "Reló", + "ca": "Rellotge", + "cs": "Hodiny", + "da": "Ur", + "de": "Uhr", + "el": "Ρολόι", + "en-GB": "Clock", + "eo": "Horloĝo", + "es": "Reloj", + "et": "Kell", + "fa": "ساعت", + "fi": "Kello", + "fr": "Horloge", + "gl": "Reloxo", + "hi": "घडी", + "hr": "Sat", + "hu": "Óra", + "id": "Jam", + "is": "Klukka", + "it": "Orologio", + "ja": "時計", + "kn": "ಗಡಿಯಾರ", + "ko": "시계", + "lt": "Laikrodis", + "lv": "Pulkstenis", + "nl": "Klok", + "no": "Klokke", + "pl": "Zegar", + "pt-BR": "Relógio", + "pt": "Relógio", + "ro": "Ceas", + "ru": "Часы", + "sk": "Hodiny", + "sl": "Ura", + "sr": "Сат", + "sv": "Klocka", + "ta": "கடிகாரம்", + "tr": "Saat", + "uk": "Годинник", + "vi": "Đồng hồ", + "zh-CN": "时钟", + "zh-HK": "時鐘", + "zh-TW": "時鐘", + "mk": "Часовник", + "he": "שעון", + "eu": "Ordulari", + "ckb": "کاتژمێر" + } + }, + "amenity/college": { + "title": { + "C": "College Grounds", + "en": "College Grounds", + "ar": "أرض كلية", + "ast": "Terrén de colexu universitariu", + "ca": "Escola professional", + "cs": "Prostor vyšší odborné školy/college", + "da": "Universitetsområder", + "de": "Hochschulgelände", + "el": "Χώρος Κολλεγίου", + "en-GB": "College Grounds", + "eo": "Postmezgrada lernejo (ISCED 4)", + "es": "Terreno de centro educativo superior no universitario", + "et": "Kolledžiala", + "fa": "محیط کالج", + "fi": "Korkeakoulualue (college)", + "fr": "Enseignement supérieur (non universitaire) - institution ou campus", + "gl": "Área de educación superior", + "hr": "Fakultetsko zemljište", + "hu": "Főiskola", + "id": "Lapangan Kampus", + "is": "Framhaldskólalóð", + "it": "Area di un College", + "ja": "短大・高専・専門学校(代表点または敷地)", + "ko": "전문대학 부지", + "lt": "Kolegijos kiemas", + "nl": "Campus van beroepsschool", + "pl": "Teren koledżu / szkoły policealnej", + "pt-BR": "Escola técnica", + "pt": "Colégio", + "ru": "Территория колледжа", + "sk": "Vysoká škola", + "sl": "Šolsko središče", + "sv": "Collegeområde", + "tr": "Üniversite Kampüsü", + "uk": "Територія коледжу", + "vi": "Sân trường Cao đẳng", + "zh-CN": "学院", + "zh-HK": "學院範圍", + "zh-TW": "學院範圍", + "mk": "Средношколски двор", + "he": "גן המכללה", + "eu": "Unibertsitate Eremu" + } + }, + "amenity/community_centre": { + "title": { + "C": "Community Center", + "en": "Community Center", + "ar": "مركز اجتماعي", + "ast": "Centru comunitariu", + "ca": "Centre Comunitari", + "cs": "Komunitní centrum", + "da": "Medborgerhus", + "de": "Gemeindezentrum", + "el": "Κέντρο Κοινότητας", + "en-GB": "Community Centre", + "eo": "Komunuma centro", + "es": "Centro Comunitario", + "et": "Kogukonna keskus", + "fa": "مرکز اجتماع", + "fi": "Yhteisökeskus", + "fr": "Salle polyvalente", + "gl": "Centro comunitario", + "hr": "Društveni centar", + "hu": "Közösségi ház", + "is": "Samfélagsmiðstöð", + "it": "Centro sociale (pubblico)", + "ja": "コミュニティセンター", + "ko": "커뮤니티 센터", + "lt": "Bendruomenės centras", + "lv": "Kopienas centrs", + "nl": "Buurthuis", + "no": "Samfunnshus", + "pl": "Centrum społeczności", + "pt-BR": "Centro Comunitário", + "pt": "Centro comunitário", + "ro": "Centru Comunitar", + "ru": "Культурный центр", + "sk": "Komunitné centrum", + "sl": "Središče skupnosti", + "sr": "Дом културе", + "sv": "Samlingslokal", + "tr": "Toplum Merkezi", + "uk": "Суспільний центр", + "vi": "Trung tâm Cộng đồng", + "zh-CN": "社区活动中心", + "zh-HK": "社區中心", + "zh-TW": "社區中心", + "mk": "Месна заедница", + "he": "מרכז קהילתי", + "eu": "Gizarte Etxe", + "en-AU": "Community Centre" + } + }, + "amenity/compressed_air": { + "title": { + "C": "Compressed Air", + "en": "Compressed Air", + "ar": "هواء مضغوط", + "ast": "Aire comprimíu", + "ca": "Aire comprimit", + "cs": "Stlačený vzduch", + "da": "Luftpumpe", + "de": "Druckluft", + "el": "Πεπιεσμένος Αέρας", + "en-GB": "Compressed Air", + "eo": "Gaskunpremilo", + "es": "Aire comprimido", + "et": "Suruõhk", + "fa": "هوای فشرده", + "fi": "Ilmanpainepiste", + "fr": "Air comprimé", + "gl": "Aire comprimido", + "hr": "Komprimirani zrak", + "hu": "Sűrített levegő", + "id": "Pompa Ban", + "is": "Loftdæla", + "it": "Aria Compressa", + "ja": "空気入れ", + "ko": "압축된 공기", + "lt": "Suspaustas oras", + "lv": "Saspiests Gaiss", + "nl": "Perslucht", + "no": "Komprimert Luft", + "pl": "Kompresor", + "pt-BR": "Bomba de ar comprimido", + "pt": "Ar comprimido", + "ro": "Aer Comprimat", + "ru": "Сжатый воздух", + "sk": "Stlačený vzduch", + "sl": "Zračni kompresor", + "sr": "Компримовани ваздух", + "sv": "Tryckluft", + "tr": "Hava Basma İstasyonu", + "uk": "Стиснене повітря", + "vi": "Khí Nén", + "zh-CN": "压缩空气", + "zh-HK": "打氣服務", + "zh-TW": "壓縮空氣", + "mk": "Компресор", + "he": "אוויר דחוס", + "eu": "Aire konpromitua" + } + }, + "amenity/courthouse": { + "title": { + "C": "Courthouse", + "en": "Courthouse", + "af": "Hof", + "ar": "محكمة", + "ast": "Xulgáu", + "bs": "Sudnica", + "ca": "Jutjat", + "cs": "Soud", + "da": "Domstolsbygning", + "de": "Gericht", + "el": "Δικαστήριο", + "en-GB": "Courthouse", + "eo": "Juĝdomo", + "es": "Juzgado", + "et": "Kohtumaja", + "fa": "دادگاه", + "fi": "Tuomioistuin", + "fr": "Tribunal", + "gl": "Xulgado", + "hr": "Zgrada suda", + "hu": "Bíróság", + "id": "Pengadilan", + "is": "Dómhús", + "it": "Tribunale", + "ja": "裁判所", + "ko": "법원", + "lt": "Teismo rūmai", + "lv": "Tiesas nams", + "nl": "Gerechtsgebouw", + "no": "Tinghus", + "pl": "Sąd", + "pt-BR": "Tribunal", + "pt": "Tribunal", + "ro": "Tribunal", + "ru": "Суд", + "sk": "Súd", + "sl": "Sodišče", + "sr": "Судница", + "sv": "Domstol", + "tr": "Mahkeme", + "uk": "Суд", + "vi": "Tòa", + "yue": "法庭", + "zh-CN": "法院", + "zh-HK": "法庭", + "zh-TW": "法院", + "zh": "法院", + "mk": "Суд", + "bg": "Съд", + "he": "בית משפט", + "eu": "Epaitegi" + } + }, + "amenity/dentist": { + "title": { + "C": "Dentist", + "en": "Dentist", + "ar": "طبيب أسنان", + "ast": "Dentista", + "bs": "Zubar", + "ca": "Dentista", + "cs": "Zubař", + "da": "Tandlæge", + "de": "Zahnarzt, Zahnärztin", + "el": "Οδοντιατρείο", + "en-GB": "Dentist", + "eo": "Dentistejo", + "es": "Dentista", + "et": "Hambaarst", + "fa": "دندانپزشکی", + "fi": "Hammaslääkäriasema", + "fr": "Dentiste", + "gl": "Dentista", + "hr": "Zubar", + "hu": "Fogorvos", + "id": "Dokter Gigi", + "is": "Tannlæknir", + "it": "Dentista", + "ja": "歯医者", + "kn": "ದಂತವೈದ್ಯ", + "ko": "치과 의원", + "lt": "Dantistas", + "lv": "Zobārsts", + "nl": "Tandarts", + "no": "Tannlege", + "pl": "Dentysta", + "pt-BR": "Dentista", + "pt": "Dentista", + "ro": "Dentist", + "ru": "Стоматология", + "sk": "Zubár", + "sl": "Zobozdravnik", + "sr": "Зубар", + "sv": "Tandläkare", + "ta": "பல் மருத்துவர் ", + "tr": "Dişçi", + "uk": "Стоматолог", + "vi": "Nha sĩ", + "yue": "牙醫", + "zh-CN": "牙科医院", + "zh-HK": "牙醫", + "zh-TW": "牙醫", + "mk": "Забар", + "he": "מרפאת שיניים", + "nn": "Tannlege", + "eu": "Dentista", + "ckb": "ددانساز" + } + }, + "amenity/doctors": { + "title": { + "C": "Doctor", + "en": "Doctor", + "ar": "طبيب", + "ast": "Doctor", + "ca": "Doctor", + "cs": "Lékař", + "da": "Læge", + "de": "Arzt, Ärztin", + "el": "Ιατρός", + "en-GB": "Doctor", + "eo": "Kabineto de kuracisto", + "es": "Doctor", + "et": "Arst", + "fa": "مطب دکتر", + "fi": "Yksityinen lääkäri", + "fr": "Médecin", + "gl": "Doutor", + "hr": "Doktor", + "hu": "Orvos", + "is": "Læknir", + "it": "Medico di base", + "ja": "医院(小規模病院)", + "kn": "ವೈದ್ಯರು", + "ko": "의원", + "lt": "Daktaras", + "lv": "Dakteris", + "nl": "Dokter", + "no": "Lege", + "pl": "Gabinet lekarski lub przychodnia", + "pt-BR": "Consultório médico", + "pt": "Consultório médico", + "ro": "Doctor", + "ru": "Кабинет врача", + "sk": "Doktor", + "sl": "Zdravnik", + "sr": "Доктор", + "sv": "Doktor", + "ta": "மருத்துவர் ", + "tr": "Doktor", + "uk": "Лікар", + "vi": "Bác sĩ", + "yue": "醫生", + "zh-CN": "医师", + "zh-HK": "醫生", + "zh-TW": "醫生", + "mk": "Лекар", + "he": "רופא", + "eu": "Mediku", + "ckb": "پزیشک" + } + }, + "amenity/dojo": { + "title": { + "C": "Dojo / Martial Arts Academy", + "en": "Dojo / Martial Arts Academy", + "ar": "دوجو / أكاديمية الفنون القتالية", + "ast": "Dojo / Academia d'artes marciales", + "ca": "Dojo / Acadèmia d'arts marcials", + "cs": "Škola bojových umění", + "da": "Dojo/Kampsportsakademi", + "de": "Kampfsportstudio", + "el": "Ντότζο/ Σχολή Πολεμικών Τεχνών", + "en-GB": "Dojo / Martial Arts Academy", + "eo": "Doĵo / batalart-lernejo", + "es": "Academia de artes marciales", + "fa": "باشگاه / آموزشگاه هنرهای رزمی", + "fi": "Japanilaisten itsepuolustuslajien harjoittelupaikka", + "fr": "Dojo", + "gl": "Dojo/academia de artes marciais", + "hr": "Škola borilačkih vještina", + "hu": "Harcművészeti edzőterem / dodzso", + "id": "Sasana Bela Diri", + "is": "Dojo / Bardagaíþróttir", + "it": "Dojo/Accademia di arti marziali", + "ja": "道場", + "ko": "도장 / 무술 학원", + "lv": "Dojo / Karatē apmācība", + "nl": "Dojo / School voor Japanse krijgskunsten", + "pl": "Dojo/szkoła sztuk walki", + "pt-BR": "Academia de Artes Marciais", + "pt": "Centro de artes marciais", + "ru": "Додзё / Школа боевых искусств", + "sk": "Škola bojových umení", + "sl": "Dojo in šola borilnih veščin", + "sr": "Школа борилачких вештина", + "sv": "Dojo / Akademi för kampsport", + "tr": "Dövüş Sanatları Akademisi", + "uk": "Додзьо / Школа бойових мистецтв", + "vi": "Võ đường", + "zh-CN": "道场/武术学院", + "zh-HK": "道場/武術學院", + "zh-TW": "道場/武術研習班", + "mk": "Училиште за боречки вештини", + "he": "דוג׳ו / מרכז לאומנויות לחימה" + } + }, + "amenity/drinking_water": { + "title": { + "C": "Drinking Water", + "en": "Drinking Water", + "af": "Drinkwater", + "ar": "مياه شرب", + "ast": "Agua potable", + "bn": "পানীয় জল", + "bs": "Voda za piće", + "ca": "Aigua apta per al consum", + "cs": "Pitná voda", + "da": "Drikkevand", + "de": "Trinkwasser", + "el": "Πόσιμο Νερό", + "en-GB": "Drinking Water", + "eo": "Trinkakvejo", + "es": "Fuente de agua potable", + "et": "Joogivesi", + "fa": "آب آشامیدنی", + "fi": "Juomavesipiste", + "fr": "Eau potable", + "gl": "Fonte de auga potábel", + "hi": "पीने का पानी", + "hr": "Pitka voda", + "hu": "Ivóvíz", + "id": "Air Minum", + "is": "Drykkjarvatn", + "it": "Fontanella", + "ja": "水飲み場", + "ko": "식수대", + "lt": "Geriamas vanduo", + "lv": "Dzeramūdens", + "nl": "Drinkwaterkraantje", + "no": "Drikkevann", + "pl": "Woda pitna", + "pt-BR": "Bebedouro", + "pt": "Água potável", + "ro": "Apă de Băut", + "ru": "Питьевая вода", + "si": "බොනවතුර", + "sk": "Pitná voda", + "sl": "Pitna voda", + "sr": "Пијаћа вода", + "sv": "Dricksvatten ", + "ta": "குடிநீர் ", + "te": "తాగే నీరు", + "tr": "İçme Suyu", + "uk": "Питна вода", + "vi": "Nước Uống", + "yue": "飲水處", + "zh-CN": "饮水处", + "zh-HK": "飲用水", + "zh-TW": "飲水機", + "mk": "Пивка вода", + "bg": "Чешма", + "he": "מי שתייה", + "eu": "Ur edangarria", + "ckb": "ئاوی خواردنەوە" + } + }, + "amenity/fast_food": { + "title": { + "C": "Fast Food", + "en": "Fast Food", + "af": "Kitskos", + "ar": "وجبات سريعة", + "ast": "Comida rápida", + "bn": "ফাস্টফুড", + "bs": "Fast Food", + "ca": "Local de menjar ràpid", + "cs": "Rychlé občerstvení", + "da": "Fast food", + "de": "Schnellimbiss", + "el": "Ταχυφαγείο", + "en-GB": "Fast Food", + "eo": "Rapidmanĝejo", + "es": "Comida rápida", + "et": "Kiirtoitlustus", + "fa": "فست فود", + "fi": "Pikaruokaravintola", + "fr": "Restauration rapide", + "gl": "Comida rápida", + "hr": "Brza hrana", + "hu": "Gyorsétterem", + "hy": "Արագ սնունդ", + "id": "Makanan Cepat Saji", + "is": "Skyndibiti", + "it": "Fast Food", + "ja": "ファストフード全般", + "ko": "패스트푸드", + "lt": "Greitas maistas", + "lv": "Ātrās ēdināšanas iestāde", + "nl": "Fastfoodrestaurant", + "no": "Hurtigmat", + "pl": "Bar / fast food", + "pt-BR": "Lanchonete", + "pt": "Comida rápida", + "ro": "Fast Food", + "ru": "Фаст-фуд", + "sk": "Rýchle občerstvenie", + "sl": "Hitra prehrana", + "sr": "Брза храна", + "sv": "Snabbmat", + "ta": "துரித உணவு", + "tr": "Fast Food", + "uk": "Фаст-Фуд", + "vi": "Nhà hàng Ăn nhanh", + "yue": "快餐店", + "zh-CN": "快餐店", + "zh-HK": "快餐店", + "zh-TW": "速食餐廳", + "zh": "快餐", + "mk": "Брза храна", + "bg": "Бърза закуска", + "dv": "ފާސްޓް ފުޑް", + "he": "מזון מהיר", + "ms": "Makanan Segera", + "eu": "Janari azkarra", + "ckb": "خواردنی خێرا", + "so": "Cuntooyinka Fudud" + } + }, + "amenity/fire_station": { + "title": { + "C": "Fire Station", + "en": "Fire Station", + "af": "Brandweerstasie", + "ar": "محطة إطفاء حريق", + "ast": "Parque de bomberos", + "bn": "দমকল", + "bs": "Vatrogasna stanica", + "ca": "Parc de bombers", + "cs": "Hasiči", + "da": "Brandstation", + "de": "Feuerwehrhaus", + "el": "Πυροσβεστικός Σταθμός", + "en-GB": "Fire Station", + "eo": "Fajrobrigadejo", + "es": "Estación de bomberos", + "et": "Päästedepoo", + "fa": "ایستگاه آتش نشانی", + "fi": "Paloasema", + "fr": "Caserne de pompiers", + "gl": "Parque de bombeiros", + "hr": "Vatrogasna postaja", + "hu": "Tűzoltóság", + "id": "Kantor Pemadam Kebakaran", + "is": "Slökkvistöð", + "it": "Caserma dei vigili del fuoco", + "ja": "消防署", + "kn": "ಅಗ್ನಿಶಾಮಕ ಕೇಂದ್ರ", + "ko": "소방서", + "lt": "Gaisrinė", + "lv": "Ugunsdzēsēju stacija", + "nl": "Brandweerkazerne", + "no": "Brannstasjon", + "pl": "Remiza strażacka", + "pt-BR": "Posto de Bombeiros", + "pt": "Quartel de bombeiros", + "ro": "Pompieri", + "ru": "Пожарная часть", + "sk": "Požiarna stanica", + "sl": "Gasilska postaja", + "sr": "Ватрогасна станица", + "sv": "Brandstation", + "ta": "தீயணைப்பு நிலையம்", + "tr": "İtfaiye", + "uk": "Пожежна станція", + "vi": "Trạm Cứu hỏa", + "yue": "滅火局", + "zh-CN": "消防站", + "zh-HK": "消防局", + "zh-TW": "消防局", + "zh": "消防站", + "mk": "Противпожарна станица", + "bg": "Пожарна", + "he": "תחנת כיבוי אש", + "ms": "Balai Bomba", + "eu": "Suhiltzaile-etxe" + } + }, + "amenity/fountain": { + "title": { + "C": "Fountain", + "en": "Fountain", + "af": "Fontein", + "ar": "نافورة", + "ast": "Fonte d'adornu", + "bn": "ঝর্না", + "bs": "Fontana", + "ca": "Font", + "cs": "Fontána, vodotrysk", + "da": "Springvand", + "de": "Springbrunnen, Zierbrunnen", + "el": "Σιντριβάνι", + "en-GB": "Fountain", + "eo": "Fontano", + "es": "Fuente o surtidor ornamental", + "et": "Purskkaev", + "fa": "فواره", + "fi": "Suihkulähde", + "fr": "Fontaine", + "gl": "Fonte ornamental", + "hr": "Fontana", + "hu": "Szökőkút", + "id": "Air Mancur", + "is": "Gosbrunnur", + "it": "Fontana (decorativa)", + "ja": "噴水", + "kn": "ಬುಗ್ಗೆ", + "ko": "분수대", + "lt": "Fontanas", + "lv": "Strūklaka", + "nl": "Fontein", + "no": "Fontene", + "pl": "Fontanna", + "pt-BR": "Fonte", + "pt": "Fonte", + "ro": "Fântână", + "ru": "Фонтан", + "sk": "Fontána", + "sl": "Vodomet", + "sr": "Фонтана", + "sv": "Fontän", + "tr": "Su Fıskiyesi", + "uk": "Фонтан", + "vi": "Vòi nước", + "yue": "噴水池", + "zh-CN": "喷泉", + "zh-HK": "噴水池", + "zh-TW": "噴水池", + "zh": "喷泉", + "mk": "Фонтана", + "bg": "Фонтан", + "he": "מזרקה", + "eu": "Iturri", + "ckb": "نافورە" + } + }, + "amenity/fuel": { + "title": { + "C": "Gas Station", + "en": "Gas Station", + "af": "Petrolstasie", + "ar": "محطة وقود", + "ast": "Gasolinera", + "bn": "গ্যাস স্টেশন", + "bs": "Benzinska pumpa", + "ca": "Benzinera", + "cs": "Čerpací stanice", + "da": "Tankstation", + "de": "Tankstelle", + "el": "Βενζινάδικο", + "en-GB": "Petrol Station", + "eo": "Benzinejo", + "es": "Gasolinera", + "et": "Tankla", + "fa": "جایگاه سوخت", + "fi": "Huoltoasema", + "fr": "Station-service", + "gl": "Gasolineira", + "hr": "Benzinska postaja", + "hu": "Benzinkút", + "id": "Pom Bensin", + "is": "Bensínstöð", + "it": "Stazione di servizio", + "ja": "ガソリンスタンド", + "ko": "주유소", + "lt": "Degalinė", + "lv": "Degvielas uzpildes stacija", + "nl": "Tankstation", + "no": "Bensinstasjon", + "pl": "Stacja paliw", + "pt-BR": "Posto de Combustível", + "pt": "Posto de combustível", + "ro": "Benzinărie", + "ru": "АЗС", + "sk": "Čerpacia stanica", + "sl": "Bencinska črpalka", + "sr": "Бензинска пумпа", + "sv": "Bensinstation", + "tr": "Benzinci", + "uk": "Заправка", + "vi": "Cây xăng", + "yue": "油站", + "zh-CN": "加油站", + "zh-HK": "油站", + "zh-TW": "加油站", + "zh": "加油站", + "mk": "Бензинска станица", + "bg": "Бензиностанция", + "he": "תחנת דלק", + "ms": "Stesen Minyak", + "eu": "Gasolindegi", + "en-AU": "Service Station" + } + }, + "amenity/grave_yard": { + "title": { + "C": "Graveyard", + "en": "Graveyard", + "af": "Begrafplaas", + "ar": "مقبرة", + "ast": "Enterramientos", + "bn": "কবরখানা", + "bs": "Groblje", + "ca": "Cementiri", + "cs": "Pohřebiště", + "da": "Gravplads", + "de": "Gräberfeld", + "el": "Κοιμητήριο", + "en-GB": "Graveyard", + "eo": "Tombejo (ĉirkaŭpreĝeja)", + "es": "Camposanto", + "et": "Surnuaed", + "fa": "قبرستان محوطه امام‌زاده یا مکان متبرکه", + "fi": "Kirkkomaa", + "fr": "Lieu de sépulture attenant à un lieu de culte, cimetière paroissial", + "gl": "Camposanto", + "hr": "Groblje uz crkvu", + "hu": "Templom körüli temető", + "id": "Kuburan", + "is": "Grafreitur", + "it": "Cimitero", + "ja": "墓地(宗教施設内など、小)", + "kn": "ಶ್ಮಶಾನ", + "ko": "묘지", + "lt": "Kapinės prie bažnyčios", + "lv": "Kapi", + "nl": "Begraafplaats", + "no": "Gravlund", + "pl": "Cmentarz przykościelny", + "pt-BR": "Cemitério paroquial", + "pt": "Sepultura (fora de cemitérios)", + "ro": "Cimitir", + "ru": "Небольшие захоронения при местах служения (церквях и т.п.)", + "sk": "Pohrebisko", + "sl": "Pokopališče", + "sr": "Гробље", + "sv": "Kyrkogård", + "ta": "இடுகாடு", + "te": "స్మశానం", + "tr": "Mezarlık", + "uk": "Цвинтар", + "vi": "Nghĩa địa tại Nhà thờ", + "yue": "墳地", + "zh-CN": "墓地", + "zh-HK": "墓地", + "zh-TW": "墓地", + "zh": "墓地", + "mk": "Гробишта", + "bg": "Гробище", + "he": "בית עלמין", + "eu": "Hilerri", + "ckb": "گۆڕستان" + } + }, + "amenity/grit_bin": { + "title": { + "C": "Grit Bin", + "en": "Grit Bin", + "ast": "Caxón de sal", + "ca": "Contenidor de sorra", + "cs": "Zásobník na posypový materiál", + "da": "Vejsaltkasse", + "de": "Streugutkiste", + "en-GB": "Grit Bin", + "eo": "Ujo kun sablo kaj salo", + "es": "Contenedor de gravilla", + "et": "Libedustõrje kast", + "fa": "سطل شن", + "fi": "Hiekoitushiekkalaatikko", + "fr": "Bac à sel", + "gl": "Contedor de grava", + "hr": "Kanta sa šljunkom za poledicu", + "hu": "Útszóróanyagos láda", + "is": "Sandkista", + "it": "Cestino del sale", + "ja": "砂箱(降雪対策)", + "ko": "염화칼슘 보관소", + "lt": "Smėlio dėžė", + "lv": "Smilšu tvertne", + "nl": "Bak met Mengeling van Strooizout en Grind", + "no": "Strøkasse", + "pl": "Pojemnik z piaskiem lub żwirem", + "pt-BR": "Caixa de Sal-Gema", + "pt": "Caixa de sal para estrada", + "ru": "Ящик с песком и солью (зимой)", + "sk": "Nádoba s posypom", + "sl": "Zabojnik za sol in pesek", + "sv": "Sandkista", + "tr": "Çakıl Kutusu", + "uk": "Контейнер з піском", + "vi": "Thùng Muối để Làm Tan Tuyết", + "zh-CN": "砂箱", + "zh-HK": "砂礫桶", + "zh-TW": "沙盒", + "mk": "Кутија за попескување", + "he": "סל חצץ", + "eu": "Hare-ontzi" + } + }, + "amenity/hospital": { + "title": { + "C": "Hospital Grounds", + "en": "Hospital Grounds", + "ar": "أرض مستشفى", + "ast": "Antoxana d'hospital", + "ca": "Hospital", + "cs": "Prostor nemocnice", + "da": "Hospitalsområde", + "de": "Krankenhaus", + "el": "Χώρος Νοσοκομείου", + "en-GB": "Hospital Grounds", + "eo": "Malsanuleja tereno", + "es": "Terrenos del hospital", + "et": "Haigla territoorium", + "fa": "محیط بیمارستان", + "fi": "Sairaala-alue", + "fr": "Terrains hospitaliers", + "gl": "Área hospitalaria", + "hr": "Bolničko zemljište", + "hu": "Kórház", + "id": "Lingkungan Rumah Sakit", + "is": "Spítalalóð", + "it": "Area ospedaliera", + "ja": "大規模病院(代表点または敷地)", + "ko": "병원 부지", + "lt": "Ligoninės kiemas", + "nl": "Ziekenhuisgebied", + "no": "Sykehusområde", + "pl": "Teren szpitala", + "pt-BR": "Hospital", + "pt": "Hospital", + "ro": "Spital", + "ru": "Больница", + "sk": "Nemocničný areál", + "sl": "Klinično središče", + "sr": "Болнички круг", + "sv": "Sjukhusområde", + "ta": "மருத்துவமனை ", + "tr": "Hastane", + "uk": "Територія лікарні", + "vi": "Sân Bệnh viện", + "yue": "醫院地", + "zh-CN": "医院", + "zh-HK": "醫院範圍", + "zh-TW": "醫院", + "mk": "Болнички двор", + "dv": "ހޮސްޕިޓަލް", + "he": "גן בית חולים", + "eu": "Ospitalearen Eremua", + "so": "Goob Isbitaal" + } + }, + "amenity/hunting_stand": { + "title": { + "C": "Hunting Stand", + "en": "Hunting Stand", + "ast": "Puestu de caza", + "ca": "Punt de caça", + "cs": "Posed", + "da": "Jagttårn", + "de": "Hochsitz/Jägerstand", + "el": "Καραούλι", + "en-GB": "Hunting Stand", + "eo": "Altembusko ĉasada", + "es": "Puesto de caza", + "et": "Jahitorn", + "fa": "ایستگاه شکار", + "fi": "Metsästyspaikka", + "fr": "Mirador de chasse", + "gl": "Posto de caza", + "hr": "Lovačka čeka", + "hu": "Magasles", + "is": "Skotvöllur", + "it": "Postazione da caccia", + "ja": "狩猟スタンド", + "ko": "사냥 스탠드", + "lt": "Medžioklės bokštelis", + "lv": "Medību stends", + "nl": "Jachthut", + "no": "Jakttårn", + "pl": "Ambona strzelnicza", + "pt-BR": "Cabana de Caça", + "pt": "Torre de caça", + "ro": "Stand de Vânătoare", + "ru": "Охотничья вышка", + "sk": "Poľovnícka postriežka", + "sl": "Lovska preža", + "sr": "Чека", + "sv": "Jakttorn", + "tr": "Av Platformu", + "uk": "Мисливська вежа", + "vi": "Chỗ Săn Cao", + "zh-CN": "狩猎站", + "zh-HK": "狩獵台", + "zh-TW": "獵寮", + "mk": "Ловен видиковец", + "he": "עמדת ציד", + "eu": "Ehiza postua" + } + }, + "amenity/kindergarten": { + "title": { + "C": "Preschool / Kindergarten Grounds", + "en": "Preschool / Kindergarten Grounds", + "ar": "مرحلة ما قبل المدرسة / رياض الأطفال", + "cs": "Prostor školky / předškolního zařízení", + "da": "Børnehave/vuggestue-grund", + "de": "Kindergartengrundstück", + "el": "Αυλή Νηπιαγωγείου", + "eo": "Infanvartejo (ISCED 0)", + "es": "Terreno de preescolar / jardín de infantes", + "fa": "محوطه پیش‌دبستانی / مهدکودک", + "fi": "Esikoulu", + "gl": "Área escolar infantil", + "hr": "Zemljište dječjeg vrtića", + "ja": "幼稚園/保育園(代表点または敷地)", + "ko": "유치원 부지", + "no": "Førskole- / Barnehageområde", + "pl": "Teren przedszkola/żłobka", + "pt-BR": "Educação infantil", + "pt": "Infantário / pré-escola", + "sk": "Materská škôlka", + "sr": "Предшколско двориште", + "uk": "Територія дитячого садочка", + "vi": "Sân Nhà trẻ", + "zh-CN": "幼儿园场地", + "zh-TW": "幼兒園範圍", + "mk": "Двор на детска градинка", + "he": "מתחם גן/גן חובה" + } + }, + "amenity/library": { + "title": { + "C": "Library", + "en": "Library", + "af": "Biblioteek", + "ar": "مكتبة", + "ast": "Biblioteca", + "bn": "পাঠাগার", + "bs": "Biblioteka", + "ca": "Biblioteca", + "cs": "Knihovna", + "da": "Bibliotek", + "de": "Bibliothek", + "el": "Βιβλιοθήκη", + "en-GB": "Library", + "eo": "Biblioteko", + "es": "Biblioteca", + "et": "Raamatukogu", + "fa": "کتابخانه", + "fi": "Kirjasto", + "fr": "Bibliothèque", + "gl": "Biblioteca", + "hr": "Knjižnica", + "hu": "Könyvtár", + "id": "Perpustakaan", + "is": "Bókasafn", + "it": "Biblioteca", + "ja": "図書館", + "kn": "ಗ್ರಂಥಾಲಯ", + "ko": "도서관", + "lt": "Biblioteka", + "lv": "Bibliotēka", + "nl": "Bibliotheek", + "no": "Bibliotek", + "pl": "Biblioteka", + "pt-BR": "Biblioteca", + "pt": "Biblioteca", + "ro": "Librărie", + "ru": "Библиотека", + "sk": "Knižnica", + "sl": "Knjižnica", + "sr": "Библиотека", + "sv": "Bibliotek", + "ta": "புத்தகச்சாலை", + "te": "గ్రంథాలయం", + "tr": "Kütüphane", + "uk": "Бібліотека", + "vi": "Thư viện", + "yue": "圖書館", + "zh-CN": "图书馆", + "zh-HK": "圖書館", + "zh-TW": "圖書館", + "zh": "图书馆", + "mk": "Библиотека", + "bg": "Библиотека", + "dv": "ލައިބްރަރީ", + "he": "ספריה", + "ms": "Perpustakaan", + "eu": "Liburutegi", + "ckb": "پەڕتووکخانە", + "so": "Maktabad" + } + }, + "amenity/marketplace": { + "title": { + "C": "Marketplace", + "en": "Marketplace", + "af": "Markplein", + "ar": "محل تسوق", + "ast": "Mercáu", + "bn": "বাজার", + "bs": "Tržnica", + "ca": "Mercat", + "cs": "Tržiště", + "da": "Markedsplads", + "de": "Wochenmarkt", + "el": "Αγορά", + "en-GB": "Marketplace", + "eo": "Bazaro", + "es": "Mercado", + "et": "Turg", + "fa": "بازار", + "fi": "Tori", + "fr": "Marché", + "gl": "Mercado", + "hr": "Tržnica", + "hu": "Piac", + "id": "Pasar", + "is": "Markaður", + "it": "Mercato", + "ja": "市場", + "ko": "시장", + "lt": "Prekyvietė", + "lv": "Tirgus", + "nl": "Marktplaats", + "no": "Markedsplass", + "pl": "Targowisko / Hala targowa", + "pt-BR": "Feira ou mercado público", + "pt": "Mercado", + "ro": "Piață", + "ru": "Рынок", + "sk": "Tržnica", + "sl": "Tržnica", + "sr": "Тржница", + "sv": "Marknadsplats", + "ta": "பஜார்", + "tr": "Çarşı", + "uk": "Ринок", + "vi": "Chợ phiên", + "yue": "街市", + "zh-CN": "市场", + "zh-HK": "街市", + "zh-TW": "市場", + "zh": "市场", + "mk": "Пазар", + "bg": "Пазар", + "he": "שוק", + "eu": "Merkatu" + } + }, + "amenity/motorcycle_parking": { + "title": { + "C": "Motorcycle Parking", + "en": "Motorcycle Parking", + "ar": "موقف دراجات نارية", + "ast": "Aparcaderu de motos", + "ca": "Aparcament per a motocicletes", + "cs": "Parkování pro motorky", + "da": "Motorcykelparkering", + "de": "Motorradparkplatz", + "el": "Στάθμευση μοτοσυκλετών", + "en-GB": "Motorcycle Parking", + "eo": "Motorcikla parkumejo", + "es": "Aparcamiento de motocicletas", + "et": "Mootorratta parkla", + "fa": "پارکینگ موتور سیکلت", + "fi": "Moottoripyöräpysäköinti", + "fr": "Parking pour motocyclettes", + "gl": "Aparcadoiro de motos", + "hr": "Parkiralište za motocikle", + "hu": "Motorkerékpár-parkoló", + "id": "Parkir Motor", + "is": "Mótorhjólastæði", + "it": "Parcheggio moto", + "ja": "オートバイの駐車場", + "ko": "오토바이 주차장", + "lt": "Motociklų stovėjimo aikštelė", + "lv": "Motociklu stāvvieta", + "nl": "Motorfietsparking", + "no": "Motorsykkelparkering", + "pl": "Parking dla motocykli", + "pt-BR": "Estacionamento de motos", + "pt": "Parque de motas", + "ro": "Parcare de Motociclete", + "ru": "Парковка для мотоциклов", + "sk": "Parkovanie pre motocykle", + "sl": "Parkirišče za motorje", + "sr": "Паркинг за мотоцикле", + "sv": "Motorcykelparkering", + "ta": "ஈருருளை நிறுத்துமிடம்", + "tr": "Motosiklet Parkı", + "uk": "Стоянка для мотоциклів", + "vi": "Chỗ Đậu Xe máy", + "zh-CN": "摩托车停车场", + "zh-HK": "電單車停車位", + "zh-TW": "機車停車場", + "mk": "Паркиралиште за мотоцикли", + "he": "חניית אופנועים", + "ms": "Tempat Letak Motosikal", + "eu": "Motorren aparkalekua" + } + }, + "amenity/nightclub": { + "title": { + "C": "Nightclub", + "en": "Nightclub", + "ar": "ملهى ليلي", + "ast": "Discoteca", + "ca": "Club nocturn", + "cs": "Diskotéka", + "da": "Natklub", + "de": "Diskothek, Nachtklub", + "el": "Νυχτερινό Κέντρο", + "en-GB": "Nightclub", + "eo": "Noktoklubejo", + "es": "Discoteca", + "et": "Ööklubi", + "fa": "کلوپ شبانه", + "fi": "Yökerho", + "fr": "Boîte de nuit", + "gl": "Clube nocturno ou discoteca", + "hr": "Noćni klub", + "hu": "Diszkó", + "id": "Kelab Malam", + "is": "Næturklúbbur", + "it": "Discoteca", + "ja": "ナイトクラブ", + "ko": "나이트클럽", + "lt": "Naktinis klubas", + "lv": "Naktsklubs", + "nl": "Nachtclub", + "no": "Nattklubb", + "pl": "Klub nocny", + "pt-BR": "Boate", + "pt": "Discoteca", + "ro": "Club de Noapte", + "ru": "Ночной клуб", + "sk": "Nočný klub", + "sl": "Nočni klub", + "sr": "Ноћни клуб", + "sv": "Nattklubb", + "ta": "இரவு விடுதி", + "tr": "Gece Kulübü", + "uk": "Нічний клуб", + "vi": "Câu lạc bộ Giải trí", + "zh-CN": "夜总会", + "zh-HK": "夜總會", + "zh-TW": "夜總會", + "mk": "Ноќен клуб", + "he": "מועדון לילה", + "ms": "Kelab Malam", + "eu": "Klub", + "ckb": "یانەی شەوانە" + } + }, + "amenity/parking": { + "title": { + "C": "Parking Lot", + "en": "Parking Lot", + "ar": "ساحة انتظار سيارات", + "cs": "Parkoviště", + "da": "Bilparkering", + "de": "Parkplatz", + "el": "Θέσεις Στάθμευσης", + "en-GB": "Car Park", + "eo": "Parkumejo", + "es": "Aparcamiento / Estacionamiento", + "et": "Autoparkla", + "fa": "پارکینگ", + "fi": "Pysäköintialue", + "fr": "Parking", + "gl": "Aparcadoiro de automóbiles", + "hr": "Parkiralište za automobile", + "hu": "Parkoló", + "is": "Bílastæðasvæði", + "it": "Area di parcheggio", + "ja": "駐車場", + "ko": "주차장", + "lt": "Automobilių stovėjimo aikštelė", + "lv": "Stāvvieta", + "nl": "Parkeerplaats", + "no": "Parkeringsplass", + "pl": "Parking samochodowy", + "pt-BR": "Estacionamento", + "pt": "Parque de estacionamento", + "ru": "Парковка", + "sl": "Parkirno mesto", + "sr": "Паркинг место", + "sv": "Parkeringsplats", + "tr": "Otopark", + "uk": "Автостоянка", + "vi": "Bãi Đậu xe", + "zh-CN": "停车场", + "zh-HK": "停車場", + "zh-TW": "停車場", + "mk": "Паркиралиште", + "he": "מגרש חנייה" + } + }, + "amenity/parking_entrance": { + "title": { + "C": "Parking Garage Entrance / Exit", + "en": "Parking Garage Entrance / Exit", + "cs": "Vjezd / Výjezd krytého parkoviště", + "da": "Ind/udgang til parkeringsgarage", + "de": "Garageneinfahrt/-ausfahrt", + "el": "Είσοδος / Έξοδος Γκαράζ", + "eo": "Parkumeja en-/el-veturejo", + "es": "Entrada / salida del garaje de estacionamiento", + "fa": "ورود / خروج از گاراژ پارکینگ", + "fi": "Pysäköintihallin ajoramppi", + "fr": "Entrée / sortie de garage ou parking", + "gl": "Porta de entrada ou saída de aparcadoiro", + "hr": "Ulaz/izlaz iz garaže za automobile", + "it": "Ingresso/uscita parcheggio sotterraneo", + "ja": "出入口(駐車場)", + "ko": "주차장 입구/출구", + "no": "Parkeringshus Inngang / utgang", + "pl": "Wjazd/wyjazd z parkingu/garażu", + "pt-BR": "Entrada / Saída da garagem", + "pt": "Entrada / Saída de estacionamento", + "ru": "Въезд в крытую парковку", + "sr": "Улаз/излаз за паркинг", + "uk": "В’їзд/виїзд на криту стоянку", + "vi": "Lối Ra vào Bãi Đậu xe Cao tầng", + "zh-CN": "车库入口 / 出口", + "zh-TW": "停車場入口/出口", + "mk": "Влез/излез на покриено паркиралиште", + "he": "יציאה לחניון" + } + }, + "amenity/parking_space": { + "title": { + "C": "Parking Space", + "en": "Parking Space", + "ar": "موقف سيارات", + "ast": "Espaciu d'aparcamientu", + "ca": "Espai d'aparcament", + "cs": "Parkovací místo", + "da": "Parkeringsbås", + "de": "Stellplatz", + "el": "Χώρος Στάθμευσης", + "en-GB": "Parking Space", + "eo": "Parkumeja loko (detala)", + "es": "Plaza de aparcamiento / estacionamiento", + "et": "Parkimiskoht", + "fa": "جای پارک منفرد", + "fi": "Pysäköintiruutu", + "fr": "Place de parking", + "gl": "Praza de aparcadoiro", + "hr": "Parkirališno mjesto", + "hu": "Parkolóhely", + "is": "Bílastæðarými", + "it": "Stallo", + "ja": "駐車区画(1台ごとの)", + "ko": "주차 공간", + "lt": "Stovėjimo vieta", + "nl": "Parkeerplaats binnen parkeergelegenheid", + "no": "Parkeringsplass", + "pl": "Miejsce/miejsca parkingowe (pojedyncze lub ich zwarty blok)", + "pt-BR": "Vaga de Estacionamento", + "pt": "Lugar de estacionamento", + "ro": "Loc de Parcare", + "ru": "Отдельное парковочное место на парковке", + "sk": "Parkovacie miesto", + "sl": "Parkirni prostor", + "sr": "Паркинг простор", + "sv": "Parkeringsruta", + "tr": "Park Yeri", + "uk": "Місце на стоянці", + "vi": "Chỗ Đậu xe", + "zh-CN": "停车位", + "zh-HK": "泊車位", + "zh-TW": "停車位", + "mk": "Паркинг-место", + "he": "אזור חניה", + "ms": "Ruang Letak Kenderaan", + "eu": "Aparkatzeko lekua" + } + }, + "amenity/pharmacy": { + "title": { + "C": "Pharmacy Counter", + "en": "Pharmacy Counter", + "ar": "شباك صيدلية", + "ca": "Farmàcia", + "cs": "Okénko/přepážka lékárny", + "de": "Apotheke", + "el": "Γκισέ Φαρμακείου", + "eo": "Apoteko", + "es": "Farmacia", + "fa": "پیشخوان داروخانه", + "fi": "Apteekki", + "fr": "Pharmacie", + "gl": "Farmacia", + "hu": "Gyógyszertár", + "it": "Farmacia", + "ja": "薬局・ドラッグストア(薬剤師が居る店)", + "ko": "약국", + "nl": "Apotheek", + "no": "Apotek Disk", + "pl": "Apteka", + "pt-BR": "Farmácia", + "pt": "Farmácia", + "ru": "Аптека", + "sl": "Lekarna", + "sr": "Апотекарски шалтер", + "sv": "Läkemedel", + "tr": "Eczane", + "uk": "Аптека", + "vi": "Quầy thuốc", + "zh-CN": "药房", + "zh-TW": "藥局", + "mk": "Аптека", + "he": "דלפק בית מרקחת", + "en-AU": "Pharmacy" + } + }, + "amenity/place_of_worship": { + "title": { + "C": "Place of Worship", + "en": "Place of Worship", + "af": "Plek van aanbidding", + "ar": "مكان عبادة", + "ast": "Llugar de cultu", + "bn": "প্রার্থনাস্থল", + "bs": "Bogomolja", + "ca": "Lloc de culte", + "cs": "Chrám", + "da": "Tilbedelsessted", + "de": "Andachtsstätte", + "el": "Χώρος Λατρείας", + "en-GB": "Place of Worship", + "eo": "Preĝejo", + "es": "Lugar de adoración", + "et": "Pühakoda", + "fa": "پرستشگاه", + "fi": "Rukoilupaikka", + "fr": "Lieu de culte", + "gl": "Lugar de culto", + "hr": "Vjerski objekt", + "hu": "Istentiszteleti hely", + "id": "Tempat Beribadah", + "is": "Tilbeiðsluhús", + "it": "Luogo di culto", + "ja": "宗教施設全般", + "ko": "종교 시설", + "lt": "Maldos namai", + "lv": "Dievnams", + "nl": "Gebedshuis", + "no": "Bedested", + "pl": "Miejsce odbywania się praktyk religijnych", + "pt-BR": "Local de Prática Religiosa", + "pt": "Local de oração", + "ro": "Loc de Rugăciune", + "ru": "Место поклонения", + "sk": "Náboženské miesto", + "sl": "Verski objekt", + "sr": "Место богослужења", + "sv": "Plats för tillbedjan", + "ta": "வழிபாட்டு இடம்", + "tr": "İbadethane", + "uk": "Культове місце", + "vi": "Nơi Thờ phụng", + "yue": "拜神之所", + "zh-CN": "礼拜场所", + "zh-HK": "祟拜場所", + "zh-TW": "宗教祟拜場所", + "zh": "礼拜场所", + "mk": "Верско здание", + "bg": "Религиозен храм", + "dv": "އަޅުކަންކުރާ ތަންތަން", + "he": "בית תפילה", + "ms": "Tempat Ibadat", + "eu": "Gurtza gune", + "ckb": "پەرستگا", + "so": "Goobta Cibaadada" + } + }, + "amenity/police": { + "title": { + "C": "Police", + "en": "Police", + "af": "Polisie", + "ar": "شرطة", + "ast": "Policía", + "bn": "পুলিশ", + "bs": "Policija", + "ca": "Comissaria de Policia", + "cs": "Policie", + "da": "Politi", + "de": "Polizei", + "el": "Αστυνομικό Τμήμα", + "en-GB": "Police", + "eo": "Policejo", + "es": "Policía", + "et": "Politsei", + "fa": "پليس", + "fi": "Poliisiasema", + "fr": "Poste de police", + "gl": "Policía", + "hr": "Policija", + "hu": "Rendőrség", + "id": "Polisi", + "is": "Lögregla", + "it": "Forze di polizia", + "ja": "警察", + "kn": "ಪೊಲೀಸು", + "ko": "경찰서", + "lt": "Policija", + "lv": "Policija", + "nl": "Politiekantoor", + "no": "Politi", + "pl": "Policja/straż miejsca lub gminna", + "pt-BR": "Polícia", + "pt": "Esquadra da polícia", + "ro": "Poliție", + "ru": "Полиция", + "sk": "Polícia", + "sl": "Policija", + "sr": "Полиција", + "sv": "Polis", + "ta": "காவல்", + "te": "పోలీసు", + "tr": "Emniyet Müdürlüğü", + "uk": "Поліція", + "vi": "Đồn Cảnh sát", + "yue": "差館", + "zh-CN": "警察局", + "zh-HK": "警署", + "zh-TW": "警察局", + "zh": "警察局", + "mk": "Полиција", + "bg": "Полиция", + "he": "משטרה", + "ms": "Polis", + "eu": "Polizia", + "ckb": "پۆلیس" + } + }, + "amenity/post_box": { + "title": { + "C": "Mail Drop Box", + "en": "Mail Drop Box", + "ar": "صندوق البريد", + "cs": "Poštovní schránka", + "de": "Briefkasten", + "en-GB": "Post Box", + "eo": "Poŝtkesto (senda)", + "es": "Buzón de correo", + "et": "Kirjakast", + "fa": "جعبه انداختن پست", + "fi": "Postilaatikko", + "fr": "Boîte aux lettres (envoi)", + "gl": "Caixa do correo", + "hu": "Utcai postaláda", + "it": "Buca delle lettere", + "ja": "郵便ポスト", + "ko": "우체통", + "no": "Post innleveringspostkasse", + "pl": "Skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Marco de correio", + "sv": "Brevlåda", + "tr": "Posta Bırakma Kutusu", + "uk": "Поштова скриня", + "vi": "Thùng thư", + "zh-CN": "邮件投递箱", + "zh-TW": "郵筒", + "mk": "Поштенска преграда", + "he": "תיבת איסוף דואר" + } + }, + "amenity/post_office": { + "title": { + "C": "Post Office", + "en": "Post Office", + "af": "Poskantoor", + "ar": "مكتب البريد", + "ast": "Oficina de correos", + "bn": "ডাকঘর", + "bs": "Pošta", + "ca": "Oficina de correus", + "cs": "Pošta", + "da": "Postkontor", + "de": "Postfiliale", + "el": "Ταχυδρομείο", + "en-GB": "Post Office", + "eo": "Poŝtoficejo", + "es": "Oficina postal", + "et": "Postkontor", + "fa": "اداره پست", + "fi": "Postitoimisto", + "fr": "Bureau de poste", + "gl": "Oficina de correos", + "hr": "Pošta", + "hu": "Posta", + "id": "Kantor Pos", + "is": "Pósthús", + "it": "Ufficio Postale", + "ja": "郵便局", + "kn": "ಅಂಚೆ ಕಚೇರಿ", + "ko": "우체국", + "lt": "Paštas", + "lv": "Pasta nodaļa", + "nl": "Postkantoor", + "no": "Postkontor", + "pl": "Poczta/agencja pocztowa", + "pt-BR": "Agência de Correios", + "pt": "Estação de correios", + "ro": "Oficiul Poștal", + "ru": "Почтовое отделение", + "sk": "Pošta", + "sl": "Pošta", + "sr": "Пошта", + "sv": "Postkontor", + "ta": "அஞ்சலகம்", + "te": "తపాలా కార్యాలయం", + "tr": "Postane", + "uk": "Пошта", + "vi": "Bưu điện", + "yue": "郵政局", + "zh-CN": "邮局", + "zh-HK": "郵政局", + "zh-TW": "郵局", + "zh": "邮局", + "mk": "Пошта", + "bg": "Поща", + "he": "סניף דואר", + "ms": "Pejabat Pos", + "eu": "Postetxe", + "ckb": "نووسینگەی پۆستە" + } + }, + "amenity/pub": { + "title": { + "C": "Pub", + "en": "Pub", + "af": "Kroeg", + "ar": "حانة", + "ast": "Pub", + "bn": "সরাইখানা", + "bs": "Pub", + "ca": "Bar", + "cs": "Hospoda", + "da": "Værtshus", + "de": "Kneipe", + "el": "Καπηλειό", + "en-GB": "Pub", + "eo": "Taverno", + "es": "Pub (latam) / Bar (es)", + "et": "Kõrts", + "fa": "میخانه", + "fi": "Pubi", + "fr": "Pub", + "gl": "Bar", + "hr": "Pivnica", + "hu": "Kocsma", + "id": "Pub", + "is": "Krá", + "it": "Pub", + "ja": "居酒屋", + "ko": "주점", + "lt": "Aludė", + "lv": "Krogs", + "nl": "Café", + "no": "Pub", + "pl": "Pub", + "pt-BR": "Bar / Boteco", + "pt": "Taberna", + "ro": "Pub", + "ru": "Паб", + "sk": "Krčma", + "sl": "Pivnica", + "sr": "Паб", + "sv": "Pub", + "ta": "பப் ", + "te": "పబ్", + "tr": "Bar", + "uk": "Паб", + "vi": "Quán rượu Pub", + "yue": "酒館", + "zh-CN": "酒馆", + "zh-HK": "酒館", + "zh-TW": "Pub", + "zh": "酒馆", + "mk": "Паб", + "bg": "Пъб", + "he": "פאב", + "ms": "Pub", + "eu": "Pub" + } + }, + "amenity/public_bookcase": { + "title": { + "C": "Public Bookcase", + "en": "Public Bookcase", + "ar": "خزانة كتب عامة", + "ast": "Biblioteca llibre", + "ca": "Biblioteca pública", + "cs": "Veřejná knihovnička", + "da": "Bogkasse", + "de": "Öffentlicher Bücherschrank", + "el": "Δημόσια Ανταλλακτική Βιβλιοθήκη", + "en-GB": "Public Bookcase", + "eo": "Publika libroŝranko", + "es": "Biblioteca libre", + "et": "Avalik raamaturiiul", + "fa": "قفسه کتاب عمومی", + "fi": "Julkinen kirjahylly", + "fr": "Microbibliothèque", + "gl": "Estante pública", + "hr": "Javna knjižnica", + "hu": "Közösségi könyvespolc", + "is": "Almenningsbókakassi", + "it": "Libreria pubblica", + "ja": "公共の本棚", + "ko": "공공 책장", + "lv": "Publisks Grāmatplaukts", + "nl": "Openbare boekenkast", + "no": "Bokkiosk", + "pl": "Publiczna wymiana książek", + "pt-BR": "Biblioteca ao Ar Livre", + "pt": "Biblioteca de rua", + "ru": "Общественный книжный шкаф", + "sk": "Verejná knihovnička", + "sl": "Ulična knjižnica", + "sr": "Јавна библиотека", + "sv": "Offentlig bokhylla", + "tr": "Sokak Kütüphanesi", + "uk": "Книжкова шафа", + "vi": "Tủ sách Công cộng", + "zh-CN": "公共书架", + "zh-HK": "公眾書架", + "zh-TW": "漂書站", + "mk": "Јавен шкаф за книги", + "he": "ספריה", + "eu": "Apalategi publikoa" + } + }, + "amenity/ranger_station": { + "title": { + "C": "Ranger Station", + "en": "Ranger Station", + "ar": "محطة الحراسة", + "ast": "Guardes forestales", + "bs": "Stanica rendžerske službe", + "ca": "Base d'Agents Rurals", + "cs": "Návštěvnické centrum", + "da": "Rangerstation", + "de": "Ranger-Station", + "el": "Σταθμός Δασοφυλάκων", + "en-GB": "Warden Station", + "eo": "Naturrezerveja oficejo/impostbudo", + "es": "Estación de guardaparque", + "et": "Looduskeskus", + "fa": "ایستگاه جنگلبانی", + "fi": "Metsävartiosto", + "fr": "Services publics des parcs nationaux", + "gl": "Estación de garda de bosques", + "hr": "Rendžerska postaja", + "hu": "Nemzeti park látogatóközpontja", + "is": "Landvarðastöð", + "it": "Guardiaparco", + "ja": "レンジャーの詰所", + "ko": "관리소", + "lt": "Girininkų stotis", + "nl": "Boswachtershut", + "pl": "Baza strażników rezerwatu/parku", + "pt-BR": "Estação de Patrulha", + "pt": "Posto de guarda florestal", + "ru": "Лесничество", + "sk": "Stanica horskej služby", + "sl": "Čuvaj parka", + "sr": "Шумарска станица", + "sv": "Friluftsanläggningen", + "tr": "Korucu İstasyonu", + "uk": "Контора лісництва", + "vi": "Trạm Kiểm lâm", + "yue": "郊野訪客處", + "zh-CN": "野郊访客处", + "zh-HK": "郊野公園遊客中心", + "zh-TW": "國家公園管理站", + "mk": "Шумарска куќарка", + "he": "תחנת פקחים", + "ms": "Stesen Renjer", + "eu": "Basozain geltokia" + } + }, + "amenity/restaurant": { + "title": { + "C": "Restaurant", + "en": "Restaurant", + "af": "Restaurant", + "ar": "مطعم", + "ast": "Restaurante", + "bn": "রেস্তোরাঁ", + "bs": "Restoran", + "ca": "Restaurant", + "cs": "Restaurace", + "da": "Restaurant", + "de": "Restaurant", + "el": "Εστιατόριο / Ταβέρνα", + "en-GB": "Restaurant", + "eo": "Restoracio", + "es": "Restaurante", + "et": "Restoran", + "fa": "رستوران", + "fi": "Ravintola", + "fr": "Restaurant", + "gl": "Restaurante", + "hr": "Restoran", + "hu": "Étterem", + "id": "Restoran", + "is": "Veitingahús", + "it": "Ristorante", + "ja": "レストラン全般", + "kn": " ಉಪಾಹಾರ ಗೃಹ", + "ko": "음식점", + "lt": "Restoranas", + "lv": "Restorāns", + "nl": "Restaurant", + "no": "Restaurant", + "pl": "Restauracja", + "pt-BR": "Restaurante", + "pt": "Restaurante", + "ro": "Restaurant", + "ru": "Ресторан", + "sk": "Reštaurácia", + "sl": "Restavracija", + "sr": "Ресторан", + "sv": "Restaurang", + "ta": "உணவகம்", + "te": "రెస్టారెంట్", + "tr": "Lokanta", + "uk": "Ресторан", + "vi": "Nhà hàng", + "yue": "餐廳", + "zh-CN": "餐馆", + "zh-HK": "餐廳", + "zh-TW": "餐廳", + "zh": "餐馆", + "mk": "Ресторан", + "bg": "Ресторант", + "dv": "ރެސްޓޯރަންޓް", + "he": "מסעדה", + "ms": "Restoran", + "eu": "Jatetxe", + "ckb": "خواردنگە", + "so": "Maqaayad" + } + }, + "amenity/sanitary_dump_station": { + "title": { + "C": "RV Toilet Disposal", + "en": "RV Toilet Disposal", + "ast": "Vertíu de depósitos d'autocaravanes", + "ca": "Estació de buidatge de lavabos", + "cs": "Výlevka pro karavany", + "da": "Bortskaffelse af sanitært affald", + "de": "Campingtoiletten-Entsorgungsanlage", + "en-GB": "RV Toilet Disposal", + "eo": "Stacio de forigo de fekaĵoj (kampado)", + "es": "Desecho de inodoro de casa rodante", + "fa": "دفع توالت RV", + "fi": "Asuntoautojen jäteveden tyhjennyspiste", + "fr": "Station de vidange sanitaire", + "gl": "Eliminación de WC de caravanas", + "hr": "Pražnjenje toaleta za kamp kućice", + "hu": "Szaniterürítő hely (lakóautóknak)", + "is": "Salernishreinsun fyrir bíla", + "it": "Smaltimento reflui camper", + "ja": "キャンピングカー用汚物廃棄所", + "ko": "RV 화장실 처리장", + "nl": "Kampeerauto-toilet-afvoer", + "no": "Bobil-tømmestasjon", + "pl": "Miejsce opróżniania toalety (dla kamperów)", + "pt-BR": "Ponto de Descarga de Dejetos (para trailers)", + "pt": "Escoamento sanitário para autocaravanas", + "ru": "Слив для туалета трейлеров", + "sk": "Vyprázdňovanie karavánových toaliet", + "sl": "Odlaganje fekalij za avtodome", + "sv": "Latrintömning för campingfordon", + "tr": "Tuvalet Atık Yeri", + "uk": "Місце зливу каналізації", + "vi": "Trạm Đổ Chất thải dành cho Nhà lưu động", + "zh-CN": "厕所卸污处", + "zh-HK": "露營車廁所廢物收集", + "zh-TW": "RV移動廁所", + "mk": "Исфрлање трајлерски фекалии", + "he": "תחנת סילוק שפכים מקרוונים" + } + }, + "amenity/school": { + "title": { + "C": "School Grounds", + "en": "School Grounds", + "ar": "أرض مدرسة", + "ast": "Antoxana d'escuela", + "ca": "Escola", + "cs": "Prostor školy", + "da": "Skolegrund", + "de": "Schule, Schulgelände", + "el": "Χώρος Σχολείου", + "en-GB": "School Grounds", + "eo": "Lernejo (ISCED 1-3)", + "es": "Terrenos de escuela / colegio", + "et": "Kool", + "fa": "محیط مدرسه", + "fi": "Koulualue (peruskoulu/lukio/ammattikoulu)", + "fr": "École élémentaire ou secondaire", + "gl": "Área escolar", + "hr": "Škola i teren oko škole", + "hu": "Iskola", + "id": "Lingkungan Sekolah", + "is": "Skólalóð", + "it": "Area scolastica", + "ja": "学校(代表点または敷地)", + "ko": "학교 부지", + "lt": "Mokyklos kiemas", + "lv": "Skolas Zeme", + "nl": "Schoolgebied", + "no": "Skoleområde", + "pl": "Szkoła podstawowa/średnia – teren (nie stosować dla budynku!)", + "pt-BR": "Escola", + "pt": "Escola", + "ro": "Școală", + "ru": "Школа", + "sk": "Školský areál", + "sl": "Izobraževalno središče", + "sr": "Школско двориште", + "sv": "Skolområde", + "ta": "பள்ளி மைதானம்", + "tr": "Okul", + "uk": "Територія школи", + "vi": "Sân Trường", + "zh-CN": "学校", + "zh-HK": "學校範圍", + "zh-TW": "中小學範圍", + "mk": "Училиштен двор", + "dv": "ސްކޫލު ބިން", + "he": "מגרש בית ספר", + "ms": "Kawasan Sekolah", + "eu": "Eskola eremu", + "so": "Goobaha Dugsiyada" + } + }, + "amenity/shelter": { + "title": { + "C": "Shelter", + "en": "Shelter", + "ar": "مأوى", + "ast": "Abellugu", + "bs": "Sklonište", + "ca": "Refugi", + "cs": "Přístřešek", + "da": "Læsted", + "de": "Wetterschutz", + "el": "Στέγαστρο", + "en-GB": "Shelter", + "eo": "Ŝirmejo", + "es": "Refugio", + "et": "Varjualune", + "fa": "پناهگاه", + "fi": "Katos", + "fr": "Abri", + "gl": "Abeiro", + "hr": "Sklonište", + "hu": "Esőbeálló", + "is": "Skýli", + "it": "Riparo", + "ja": "シェルター全般(休憩所、避難所)", + "kn": "ಅಡೆ", + "ko": "대피소", + "lt": "Pastogė", + "lv": "Pajumte", + "nl": "Beschutting", + "no": "Skur", + "pl": "Schronienie", + "pt-BR": "Abrigo contra Intempéries", + "pt": "Abrigo", + "ru": "Укрытие от непогоды", + "sk": "Prístrešok", + "sl": "Zavetišče", + "sr": "Склониште", + "sv": "Väderskydd", + "tr": "Barınak", + "uk": "Притулок", + "vi": "Nhà trú", + "yue": "天遮或亭", + "zh-CN": "亭", + "zh-HK": "涼亭", + "zh-TW": "涼亭", + "mk": "Засолниште", + "he": "מקלט", + "eu": "Aterpetxe" + } + }, + "amenity/social_facility": { + "title": { + "C": "Social Facility", + "en": "Social Facility", + "ar": "مؤسسة اجتماعية", + "ast": "Serviciu social", + "ca": "Equipament social", + "cs": "Zařízení sociálních služeb", + "da": "Sociale faciliteter", + "de": "Sozialeinrichtung", + "el": "Μονάδα Κοινωνικών Υπηρεσιών", + "en-GB": "Social Facility", + "eo": "Socia servejo", + "es": "Instalación social", + "et": "Sotsiaalkeskus", + "fa": "خدمات اجتماعی", + "fi": "Sosiaalipalvelu", + "fr": "Établissement de services sociaux", + "gl": "Axuda Social", + "hr": "Socijalna ustanova", + "hu": "Szociális létesítmény", + "id": "Fasilitas Sosial", + "is": "Félagsþjónusta", + "it": "Centro socio-assistenziale", + "ja": "福祉施設", + "ko": "사회 복지 시설", + "nl": "Sociale Faciliteit", + "pl": "Placówka pomocy społecznej", + "pt-BR": "Unidade de Assistência Social", + "pt": "Serviços sociais", + "ro": "Facilitate Socială", + "ru": "Социальное учреждение", + "sk": "Sociálne zariadenie", + "sl": "Socialnovarstvena ustanova", + "sr": "Социјална установа", + "sv": "Social inrättning", + "tr": "Okul Tesisleri", + "uk": "Соціальний центр", + "vi": "Dịch vụ Xã hội", + "zh-CN": "社会服务设施", + "zh-HK": "社會服務設施", + "zh-TW": "社福機構", + "mk": "Социјална служба", + "he": "מתקן שירותי רווחה", + "eu": "Gizarte-instalazio" + } + }, + "amenity/studio": { + "title": { + "C": "Studio", + "en": "Studio", + "ar": "أستوديو", + "ast": "Estudiu", + "bs": "Studio", + "ca": "Estudi", + "cs": "Studio", + "da": "Studie", + "de": "Ton-/Fernsehstudio", + "el": "Στούντιο", + "en-GB": "Studio", + "eo": "Studio", + "es": "Estudio de grabación", + "et": "Stuudio", + "fa": "استدیو", + "fi": "Studio", + "fr": "Studio", + "gl": "Estudio", + "hr": "Studio", + "hu": "Stúdió", + "id": "Studio", + "is": "Upptökustúdíó", + "it": "Studio radiotelevisivo", + "ja": "スタジオ", + "ko": "스튜디오", + "lt": "Studija", + "lv": "Studija", + "nl": "Studio", + "no": "Studio", + "pl": "Studio", + "pt-BR": "Estúdio de rádio/TV ou de gravação", + "pt": "Estúdio", + "ro": "Studio", + "ru": "Студия", + "sk": "Štúdio", + "sl": "Studio", + "sr": "Студио", + "sv": "Studio", + "tr": "Stüdyo", + "uk": "Студія", + "vi": "Studio", + "zh-CN": "工作室", + "zh-HK": "工作室", + "zh-TW": "工作室", + "mk": "Студио", + "he": "סטודיו", + "ms": "Studio", + "eu": "Estudio", + "ckb": "ستۆدیۆ" + } + }, + "amenity/taxi": { + "title": { + "C": "Taxi Stand", + "en": "Taxi Stand", + "af": "Taxi staanplek", + "ar": "موقف تاكسي", + "ast": "Parada de taxis", + "bs": "Taxi stajalište", + "ca": "Parada de Taxi", + "cs": "Stanoviště taxi", + "da": "Taxiholdeplads", + "de": "Taxistand", + "el": "Πιάτσα Ταξί", + "en-GB": "Taxi Stand", + "eo": "Taksistacio", + "es": "Parada de taxi", + "et": "Taksopeatus", + "fa": "تاکسی", + "fi": "Taksitolppa", + "fr": "Station de taxi", + "gl": "Paraxe de taxi", + "hr": "Taksi stajalište", + "hu": "Taxiállomás", + "id": "Tempat Tunggu Taksi", + "is": "Leigubílastæði", + "it": "Posteggio Taxi", + "ja": "タクシー乗り場", + "kn": "‍ಕಾರು ನಿಲ್ಡಾಣ ", + "ko": "택시 승차장", + "lt": "Taksi stendas", + "nl": "Taxistandplaats", + "no": "Taxiholdeplass", + "pl": "Postój taksówek", + "pt-BR": "Ponto de Táxi", + "pt": "Praça de táxis", + "ro": "Stand de Taxi", + "ru": "Стоянка такси", + "sk": "Stanovisko taxíkov", + "sl": "Postajališče za taksi", + "sr": "Такси стајалиште", + "sv": "Taxihållplats", + "tr": "Taksi Durağı", + "uk": "Стоянка таксі", + "vi": "Bến Tắc xi", + "yue": "的士站", + "zh-CN": "出租车停车处", + "zh-HK": "的士站", + "zh-TW": "計程車招呼站", + "mk": "Такси-постојка", + "bg": "Такси стоянка", + "he": "עמדת מוניות", + "ms": "Tempat Menunggu Teksi", + "eu": "Taxi postu" + } + }, + "amenity/telephone": { + "title": { + "C": "Telephone", + "en": "Telephone", + "af": "Telefoon", + "ar": "هاتف", + "ast": "Teléfonu", + "bn": "টেলিফোন", + "bs": "Telefon", + "ca": "Telèfon", + "cs": "Telefon", + "da": "Telefon", + "de": "Telefon", + "el": "Τηλέφωνο", + "en-GB": "Telephone", + "eo": "Telefono", + "es": "Teléfono", + "et": "Taksofon", + "fa": "تلفن عمومی", + "fi": "Yleinen puhelin", + "fr": "Téléphone", + "gl": "Teléfono", + "hr": "Telefon", + "hu": "Telefon", + "id": "Telepon", + "is": "Sími", + "it": "Telefono", + "ja": "公衆電話", + "kn": "ದುರವಾಣಿ", + "ko": "전화", + "lt": "Telefonas", + "lv": "Telefons", + "nl": "Telefoon", + "no": "Telefon", + "pl": "Telefon", + "pt-BR": "Telefone Público", + "pt": "Telefone", + "ro": "Telefon", + "ru": "Телефон", + "sk": "Telefón", + "sl": "Telefon", + "sr": "Телефонска говорница", + "sv": "Telefon", + "ta": "தொலைபேசி", + "tr": "Telefon", + "uk": "Телефон", + "vi": "Điện thoại", + "yue": "電話", + "zh-CN": "电话", + "zh-HK": "電話", + "zh-TW": "公用電話", + "zh": "电话", + "mk": "Телефон", + "bg": "Телефон", + "he": "טלפון", + "ms": "Telefon", + "eu": "Telefono", + "ckb": "تەلەفۆن" + } + }, + "amenity/theatre": { + "title": { + "C": "Theater", + "en": "Theater", + "af": "Teater", + "ar": "مسرح", + "ast": "Teatru", + "bn": "থিয়েটার", + "bs": "Pozorište", + "ca": "Teatre", + "cs": "Divadlo", + "da": "Teater", + "de": "The­a­ter", + "el": "Θέατρο", + "en-GB": "Theatre", + "eo": "Teatrejo", + "es": "Teatro", + "et": "Teater", + "fa": "تئاتر", + "fi": "Teatteri", + "fr": "Théâtre", + "gl": "Teatro", + "hr": "Kazalište", + "hu": "Színház", + "id": "Teater", + "is": "Leikhús", + "it": "Teatro", + "ja": "劇場", + "kn": "ಚಿತ್ರಮಂದಿರ", + "ko": "극장", + "lt": "Teatras", + "lv": "Teātris", + "nl": "Theater", + "no": "Teater", + "pl": "Teatr", + "pt-BR": "Teatro", + "pt": "Teatro", + "ro": "Teatru", + "ru": "Театр", + "sk": "Divadlo", + "sl": "Gledališče", + "sr": "Позориште", + "sv": "Teater", + "ta": "திரையரங்கம்", + "tr": "Tiyatro", + "uk": "Театр", + "vi": "Nhà hát", + "yue": "舞臺戲院", + "zh-CN": "剧院", + "zh-HK": "劇院", + "zh-TW": "戲劇院", + "zh": "剧院", + "mk": "Театар", + "bg": "Театър", + "he": "תאטרון", + "ms": "Teater", + "eu": "Antzoki", + "ckb": "شانۆ" + } + }, + "amenity/toilets": { + "title": { + "C": "Toilets", + "en": "Toilets", + "af": "Toilette", + "ar": "دورات مياه", + "ast": "Aseos", + "bn": "শৌচাগার", + "bs": "Toaleti", + "ca": "Lavabos", + "cs": "Toalety", + "da": "Toiletter", + "de": "Toilette", + "el": "Τουαλέτες", + "en-GB": "Toilets", + "eo": "Necesejo", + "es": "Baños", + "et": "Tualett", + "fa": "سرویس بهداشتی", + "fi": "WC", + "fr": "Toilettes publiques", + "gl": "Aseos", + "hr": "Toalet", + "hu": "WC", + "id": "Toilet", + "is": "Salerni", + "it": "Bagni", + "ja": "トイレ", + "kn": "ಶೌಚಾಲಯ", + "ko": "화장실", + "lt": "Tualetas", + "lv": "Tualete", + "nl": "Toiletten", + "no": "Toaletter", + "pl": "Toalety publiczne", + "pt-BR": "Banheiros Públicos", + "pt": "Casas de banho", + "ro": "Toaletă", + "ru": "Туалет", + "sk": "Toalety", + "sl": "Stranišča", + "sr": "Тоалети", + "sv": "Toaletter", + "ta": "கழிவறைகள்", + "te": "మరుగుదొడ్లు", + "tr": "Tuvalet", + "uk": "Туалет", + "vi": "Phòng Vệ sinh", + "yue": "廁所", + "zh-CN": "厕所", + "zh-HK": "廁所", + "zh-TW": "廁所", + "zh": "厕所", + "mk": "Тоалет", + "bg": "Тоалетна", + "dv": "ފާޚާނާ", + "he": "בתי שימוש", + "ms": "Tandas", + "eu": "Komun", + "ckb": "ئاودەست", + "so": "Musqulo" + } + }, + "amenity/townhall": { + "title": { + "C": "Town Hall", + "en": "Town Hall", + "af": "Stadsaal", + "ar": "مبنى البلدية", + "ast": "Edificiu municipal", + "bn": "টাউন হল", + "bs": "Gradska vijećnica", + "ca": "Ajuntament", + "cs": "Radnice", + "da": "Rådhus", + "de": "Rathaus", + "el": "Δημαρχείο", + "en-GB": "Town Hall", + "eo": "Urbodomo", + "es": "Ayuntamiento / Municipalidad", + "et": "Linnahall", + "fa": "شهرداری", + "fi": "Kunnantalo", + "fr": "Mairie, hôtel de ville", + "gl": "Casa do Concello", + "hr": "Gradska vijećnica", + "hu": "Városháza", + "id": "Balai Kota", + "is": "Ráðhús", + "it": "Municipio", + "ja": "役場", + "ko": "마을 회관", + "lt": "Rotušė", + "lv": "Pilsētas dome", + "nl": "Gemeentehuis", + "no": "Rådhus", + "pl": "Ratusz", + "pt-BR": "Paço Municipal ou Prefeitura", + "pt": "Câmara municipal / Junta de freguesia", + "ro": "Primărie", + "ru": "Администрация", + "sk": "Mestský úrad", + "sl": "Mestna hiša", + "sr": "Градска кућа", + "sv": "Kommunhus", + "ta": "நகராட்சிமன்றம்", + "tr": "Belediye Binası", + "uk": "Міська державна адміністрація", + "vi": "Tòa thị chính Thị xã", + "yue": "大會堂", + "zh-CN": "市政府", + "zh-HK": "大會堂", + "zh-TW": "鄉鎮市區公所", + "zh": "市政府", + "mk": "Градски дом", + "bg": "Кметство", + "he": "בניין עירייה", + "ms": "Dewan Perbandaran", + "eu": "Udaletxe" + } + }, + "amenity/university": { + "title": { + "C": "University Grounds", + "en": "University Grounds", + "ar": "أرض جامعة", + "ast": "Campus universitariu", + "ca": "Campus universitari", + "cs": "Prostor vysoké školy", + "da": "Universitetsområde", + "de": "Universitätsgelände", + "el": "Χώρος Πανεπιστημίου", + "en-GB": "University Grounds", + "eo": "Altgrada lernejo (ISCED 5-7)", + "es": "Terreno de universidad", + "et": "Ülikooliala", + "fa": "محوطه دانشگاه", + "fi": "Yliopistokampus", + "fr": "Université, enseignement supérieur universitaire - institution ou campus", + "gl": "Área universitaria", + "hr": "Sveučilišno zemljište", + "hu": "Egyetem", + "id": "Lingkungan Universitas", + "is": "Háskólalóð", + "it": "Area universitaria", + "ja": "大学(代表点または敷地)", + "ko": "대학 부지", + "lt": "Universiteto kiemas", + "nl": "Campus van universiteit of hogeschool", + "no": "Universitetsområde", + "pl": "Teren uczelni", + "pt-BR": "Universidade ou Faculdade", + "pt": "Universidade", + "ro": "Universitate", + "ru": "Университет / Институт", + "sk": "Univerzita", + "sl": "Univerzitetno območje", + "sr": "Универзитетски кампус", + "sv": "Universitetsområde", + "ta": "பல்கலைக்கழகத் திடல்", + "tr": "Üniversite Yerleşkesi", + "uk": "Територія університету", + "vi": "Sân trường Đại học", + "zh-CN": "大学", + "zh-HK": "大學範圍", + "zh-TW": "大學範圍", + "mk": "Универзитетски двор", + "he": "מתחם אוניברסיטה", + "ms": "Kawasan Universiti", + "eu": "Unibertsitatearen eremua" + } + }, + "amenity/veterinary": { + "title": { + "C": "Veterinary", + "en": "Veterinary", + "ar": "طبيب بيطري", + "ast": "Veterinariu", + "ca": "Veterinari", + "cs": "Veterina", + "da": "Dyrlæge", + "de": "Tierarzt, Tierärztin", + "el": "Κτηνιατρείο", + "en-GB": "Veterinary", + "eo": "Bestokuracistejo", + "es": "Veterinario", + "et": "Loomaarst", + "fa": "دامپزشکی", + "fi": "Eläinlääkäri", + "fr": "Vétérinaire", + "gl": "Veterinario", + "hr": "Veterinar", + "hu": "Állatorvos", + "id": "Dokter Hewan", + "is": "Dýralæknir", + "it": "Veterinario", + "ja": "獣医", + "kn": "ಪಶುವೈದ್ಯಕೀಯ", + "ko": "동물병원", + "lt": "Veterinarija", + "lv": "Veternārārsts", + "nl": "Dierenarts", + "no": "Veterinær", + "pl": "Weterynarz", + "pt-BR": "Veterinário", + "pt": "Veterinário", + "ro": "Medic Veterinar", + "ru": "Ветеринар", + "sk": "Veterinár", + "sl": "Veterinar", + "sr": "Ветеринарница", + "sv": "Veterinär ", + "tr": "Veteriner", + "uk": "Ветеринарна лікарня", + "vi": "Thú y", + "zh-CN": "动物医院", + "zh-HK": "獸醫", + "zh-TW": "獸醫院", + "mk": "Ветеринар", + "he": "וטרינר", + "ms": "Veterinar", + "eu": "Albaitari", + "ckb": "ڤێتێرنەری" + } + }, + "amenity/waste_basket": { + "title": { + "C": "Waste Basket", + "en": "Waste Basket", + "af": "Asblik", + "ar": "سلة مهملات", + "ast": "Papelera", + "bs": "Kanta za otpatke", + "ca": "Paperera", + "cs": "Odpadkový koš", + "da": "Skraldespand", + "de": "Mülleimer", + "el": "Καλάθι Απορριμμάτων", + "en-GB": "Rubbish Bin", + "eo": "Rubujo", + "es": "Papelera", + "et": "Prügikast", + "fa": "سطل زباله", + "fi": "Roskakori", + "fr": "Poubelle pour piétons", + "gl": "Papeleira", + "hr": "Kanta za smeće", + "hu": "Szemeteskosár", + "id": "Tong Sampah", + "is": "Ruslafata", + "it": "Cestino della spazzatura", + "ja": "ゴミ箱", + "ko": "쓰레기통", + "lt": "Šiukšliadėžė", + "lv": "Atkritumu grozs", + "nl": "Prullenbak", + "no": "Søppel", + "pl": "Kosz na śmieci", + "pt-BR": "Lixeira", + "pt": "Caixote do lixo", + "ru": "Мусорная корзина", + "sk": "Odpadový kôš", + "sl": "Koš za odpadke", + "sr": "Корпа за отпатке", + "sv": "Soptunna (liten)", + "tr": "Çöp Kutusu", + "uk": "Бак для сміття", + "vi": "Thùng rác", + "yue": "垃圾桶", + "zh-CN": "垃圾桶", + "zh-HK": "垃圾桶", + "zh-TW": "垃圾筒", + "zh": "垃圾箱", + "mk": "Корпа за отпадоци", + "bg": "Кош за боклук", + "he": "סל אשפה" + } + }, + "amenity/waste_disposal": { + "title": { + "C": "Garbage Dumpster", + "en": "Garbage Dumpster", + "ar": "صندوق قمامة قابل للنقل", + "ast": "Contenedor de basoria", + "ca": "Contenidor d'escombraries", + "cs": "Kontejner na směsný odpad", + "da": "Skraldespand", + "de": "Müllcontainer", + "el": "Κάδος απορριμμάτων", + "en-GB": "Garbage Dumpster", + "eo": "Rubujego (miksita)", + "es": "Contenedor de residuos", + "et": "Prügikonteiner", + "fa": "زباله‌دان بزرگ", + "fi": "Jäteastia", + "fr": "Bac à déchets", + "gl": "Contedor de lixo", + "hr": "Kontejner za smeće", + "hu": "Szemeteskonténer", + "is": "Ruslagámur", + "it": "Cassonetto del pattume", + "ja": "ゴミ収集ボックス", + "ko": "쓰레기 수거함", + "lt": "Šiukšlių konteineris", + "lv": "Atkritumu konteiners", + "nl": "Kleine afvalcontainer", + "no": "Søppelkonteiner", + "pl": "Śmietnik", + "pt-BR": "Contêiner de lixo não reciclável", + "pt": "Contentor de lixo", + "ro": "Container de Gunoi", + "ru": "Мусорный бак", + "sl": "Zabojnik za odpadke", + "sr": "Контејнер за смеће", + "sv": "Soptunna (hushålls- eller industrisopor)", + "tr": "Çöp Tenekesi", + "uk": "Контейнер для сміття", + "vi": "Thùng Rác Lớn", + "zh-CN": "大型垃圾箱", + "zh-HK": "大型垃圾箱", + "zh-TW": "垃圾場", + "mk": "Контејнер", + "he": "פח אשפה" + } + }, + "amenity/water_point": { + "title": { + "C": "RV Drinking Water", + "en": "RV Drinking Water", + "ar": "RV مياه الشرب", + "ast": "Agua potable pa caravanes", + "ca": "Aigua potable d'autocaravana", + "cs": "Pitná voda pro karavany", + "da": "Tankning af drikkevand", + "de": "Camping-Trinkwasser", + "el": "Πόσιμο Νερό Αυτοκινούμενου Τροχόσπιτου", + "en-GB": "RV Drinking Water", + "eo": "Trinkakvejo (kampado)", + "es": "Recarga de agua potable para autocaravanas", + "fa": "آب آشامیدنی", + "fi": "Asuntoauton vesipiste", + "fr": "Eau potable pour citerne de véhicule de loisirs", + "gl": "Auga potábel para caravanas", + "hr": "Pitka voda za kamp kućice", + "hu": "Ivóvíz-csatlakozás lakóautónak", + "is": "Drykkjarvatn fyrir bíla", + "it": "Acqua potabile per camper", + "ja": "キャンピングカー用の給水施設", + "ko": "RV 식수대", + "nl": "Waterpunt voor kampeerauto's", + "no": "Bobil Drikkevann", + "pl": "Woda pitna dla kamperów", + "pt-BR": "Torneira de Água Potável", + "pt": "Água potável para autocaravanas", + "ru": "Питьевая вода для трейлера", + "sk": "Pitná voda pre karavany", + "sl": "Pitna voda za avtodome", + "sv": "Dricksvatten för campingfordon", + "tr": "İçme Suyu", + "uk": "Заправка питною водою", + "vi": "Vòi Nước uống dành cho Nhà lưu động", + "zh-CN": "直饮水", + "zh-HK": "露營車飲用水", + "zh-TW": "RV 飲用水", + "mk": "Пивка вода за трајлери", + "he": "מי שתייה לקרוואן" + } + }, + "amenity/shower": { + "title": { + "C": "Shower", + "en": "Shower", + "ar": "دش استحمام", + "ast": "Ducha", + "ca": "Dutxa", + "cs": "Sprchy", + "da": "Brusebad", + "de": "Dusche", + "el": "Ντουζιέρα", + "en-GB": "Shower", + "eo": "Duŝejo", + "es": "Ducha", + "fa": "دوش", + "fi": "Suihku", + "fr": "Douche", + "gl": "Ducha", + "hr": "Tuš", + "hu": "Zuhany", + "is": "Steypibað", + "it": "Doccia", + "ja": "シャワー室", + "ko": "샤워실", + "lt": "Dušas", + "lv": "Duša", + "nl": "Douche", + "no": "Dusj", + "pl": "Prysznic", + "pt-BR": "Ducha", + "pt": "Chuveiro", + "ru": "Душ", + "sk": "Sprcha", + "sl": "Tuš", + "sr": "Туш", + "sv": "Dusch", + "tr": "Banyo", + "uk": "Душ", + "vi": "Tắm đứng", + "zh-CN": "淋浴间", + "zh-HK": "淋浴處", + "zh-TW": "淋浴間", + "mk": "Туш", + "he": "מקלחת", + "eu": "Dutxa" + } + }, + "amenity/ice_cream": { + "title": { + "C": "Ice Cream Shop", + "en": "Ice Cream Shop", + "ar": "محل بيع المثلجات", + "ast": "Xeladería", + "ca": "Gelateria", + "cs": "Zmrzlina", + "da": "Ishus", + "de": "Eisgeschäft", + "el": "Παγωτατζίδικο", + "en-GB": "Ice Cream Shop", + "eo": "Glaciaĵejo", + "es": "Heladería", + "et": "Jäätisekohvik", + "fa": "بستنی فروشی", + "fi": "Jäätelön myyntipiste", + "fr": "Magasin de crèmes glacées", + "gl": "Xeadaría", + "hu": "Fagylaltozó", + "is": "Ísbúð", + "it": "Gelateria", + "ja": "アイスクリーム店", + "kn": "ಐಸ್ ಕ್ರೀಮ್ ಅಂಗ", + "ko": "아이스크림 가게", + "lt": "Ledų parduotuvė", + "lv": "Saldējuma Veikals", + "nl": "IJskraam", + "no": "Iskrem Butikk", + "pl": "Lodziarnia", + "pt-BR": "Sorveteria", + "pt": "Geladaria", + "ro": "Magazin de Înghețată", + "ru": "Прилавок с мороженным", + "sk": "Obchod so zmrzlinou", + "sl": "Sladoledarna", + "sr": "Сладоледџиница", + "sv": "Glassaffär", + "tr": "Dondurmacı", + "uk": "Морозиво", + "vi": "Tiệm Kem", + "zh-CN": "冰淇淋店", + "zh-HK": "雪榚店", + "zh-TW": "冰淇淋店", + "mk": "Сладоледџилница", + "he": "חנות גלידה", + "ms": "Kedai Ais Krim", + "eu": "Izozki denda", + "ckb": "فرۆشگای ساردەمەنی" + } + }, + "amenity/planetarium": { + "title": { + "C": "Planetarium", + "en": "Planetarium", + "ar": "قبة فلكية", + "ast": "Planetariu", + "ca": "Planetari", + "cs": "Planetárium", + "da": "Planetarium", + "de": "Planetarium", + "el": "Πλανητάριο", + "en-GB": "Planetarium", + "eo": "Planetario (astrokinejo)", + "es": "Planetario", + "et": "Planetaarium", + "fa": "آسمان نما", + "fi": "Planetaario", + "fr": "Planétarium", + "gl": "Planetario", + "hr": "Planetarij", + "hu": "Planetárium", + "is": "Stjörnuver", + "it": "Planetario", + "ja": "プラネタリウム", + "kn": "ತಾರಾಲಯ", + "ko": "천체투영관", + "lt": "Planetariumas", + "lv": "Planetārijs", + "nl": "Planetarium", + "no": "Planetarium", + "pl": "Planetarium", + "pt-BR": "Planetário", + "pt": "Planetário", + "ro": "Planetariu", + "ru": "Планетарий", + "sk": "Planetárium", + "sl": "Planetarij", + "sr": "Планетаријум", + "sv": "Planetarium", + "ta": "கோளரங்கம் ", + "tr": "Gökevi", + "uk": "Планетарій", + "vi": "Cung Thiên văn", + "zh-CN": "天文馆", + "zh-HK": "天象廳", + "zh-TW": "天文臺", + "mk": "Планетариум", + "he": "מצפה כוכבים", + "ms": "Planetarium", + "eu": "Planetario" + } + }, + "amenity/prison": { + "title": { + "C": "Prison Grounds", + "en": "Prison Grounds", + "ar": "سجن", + "ast": "Terrén de cárcel", + "ca": "Terrenys de presó", + "cs": "Prostor věznice", + "da": "Fængselsgrund", + "de": "Gefängnisanlage", + "el": "Χώρος Φυλακής", + "en-GB": "Prison Grounds", + "eo": "Mallibereja tereno", + "es": "Terrenos de prisión / cárcel", + "et": "Vangla", + "fa": "محوطه زندان", + "fi": "Vankila-alue", + "fr": "Prison", + "gl": "Área penitenciaria", + "hr": "Zatvorsko zemljište", + "hu": "Börtön", + "is": "Fangelsislóð", + "it": "Area carceraria", + "ja": "刑務所(代表点または敷地)", + "kn": "ಬಂದೀಖಾನೆ ಮೈದಾನ", + "ko": "교도소 부지", + "nl": "Gevangenisgebied", + "no": "Fengselsområde", + "pl": "Teren więzienia", + "pt-BR": "Presídio", + "pt": "Prisão", + "ro": "Închisoare", + "ru": "Тюрьма", + "sk": "Areál väznice", + "sl": "Območje zapora", + "sr": "Затворско двориште", + "sv": "Fängelseområde", + "tr": "Cezaevi", + "uk": "Вʼязниця", + "vi": "Sân Nhà tù", + "zh-CN": "监狱/看守所", + "zh-HK": "監獄範圍", + "zh-TW": "監獄範圍", + "mk": "Затворски двор", + "he": "מגרש כלא", + "ms": "Kawasan Penjara", + "eu": "Espetxe" + } + }, + "amenity/coworking_space": { + "title": { + "C": "Coworking Space", + "en": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Sdílený pracovní prostor", + "da": "Kontorfællesskab", + "de": "Coworking-Räumlichkeiten", + "el": "Χώρος Συνεργατών", + "en-GB": "Coworking Space", + "eo": "Loko por samloka laborado (ang. coworking)", + "es": "Espacio de trabajo compartido", + "et": "Ühiskasutatavad tööruumid", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de bureaux partagés, coworking", + "gl": "Espacio de cotraballo", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Spazio di Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "nl": "Coworking-kantoor", + "no": "Medarbeider Rom", + "pl": "Coworking", + "pt-BR": "Espaço de Coworking", + "pt": "Espaço de trabalho partilhado", + "ru": "Коворкинг", + "sk": "Priestory pre coworking", + "sl": "Prostor za sodelanje", + "sr": "Заједнички радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間", + "mk": "Споделен работен простор", + "he": "מתחם עבודה שיתופי", + "eu": "Coworking espazioa" + } + }, + "amenity/nursing_home": { + "title": { + "C": "Nursing Home", + "en": "Nursing Home", + "ar": "دار التمريض", + "ca": "Llar d'avis", + "cs": "Domov pro seniory/pečovatelský ústav", + "da": "Plejehjem", + "de": "Pflegeheim", + "el": "Κλινική", + "en-GB": "Nursing Home", + "eo": "Domo de permanenta zorgado", + "es": "Residencia de ancianos", + "et": "Hoolduskodu", + "fa": "آسایشگاه", + "fi": "Hoitokoti", + "fr": "Maison de repos", + "gl": "Residencia de anciáns", + "hu": "Ápolóotthon", + "is": "Hjúkrunarheimili", + "it": "Residenza Sanitaria Assistenziale (RSA)", + "ja": "介護施設", + "ko": "요양원", + "nl": "Verpleeghuis", + "no": "Gamlehjem", + "pl": "Dom spokojnej starości", + "pt-BR": "Casa de Repouso", + "pt": "Centro Geriátrico", + "ru": "Дом престарелых/Дом инвалидов (устаревший тег)", + "sk": "Ošetrovateľské centum", + "sl": "Dom za bolniško nego", + "sr": "Старачки дом", + "sv": "Vårdhem", + "tr": "Bakım Evi", + "uk": "Будинок престарілих", + "vi": "Viện Dưỡng lão", + "zh-CN": "疗养院", + "zh-HK": "護養院", + "zh-TW": "養老院", + "mk": "Старечки дом", + "he": "בית אבות" + } + }, + "amenity/crematorium": { + "title": { + "C": "Crematorium", + "en": "Crematorium", + "ar": "محرقة فرن لاحراق الجث", + "ast": "Crematoriu", + "ca": "Crematori", + "cs": "Krematorium", + "da": "Krematorium", + "de": "Krematorium", + "el": "Κρεματόριο", + "en-GB": "Crematorium", + "eo": "Kadavrobruligejo", + "es": "Crematorio", + "et": "Krematoorium", + "fa": "مٌرده سوز", + "fi": "Krematorio", + "fr": "Crématorium", + "gl": "Crematorio", + "hu": "Krematórium", + "is": "Líkbrennsla", + "it": "Forno crematorio", + "ja": "火葬場", + "ko": "화장장", + "lt": "Krematoriumas", + "lv": "Krematorija", + "nl": "Crematorium", + "no": "Krematorium", + "pl": "Krematorium", + "pt-BR": "Crematório", + "pt": "Crematório", + "ro": "Crematoriu", + "ru": "Крематорий", + "sk": "Krematórium", + "sl": "Krematorij", + "sr": "Крематоријум", + "sv": "Krematorium", + "ta": "சுடுகாடு", + "tr": "Cesed Yakma Yeri", + "uk": "Крематорій", + "vi": "Lò Thiêu", + "zh-CN": "火葬场", + "zh-HK": "火葬場", + "zh-TW": "火葬場", + "mk": "Крематориум", + "he": "משרפה", + "eu": "Errausketa-labe" + } + }, + "amenity/food_court": { + "title": { + "C": "Food Court", + "en": "Food Court", + "ar": "قاعة طعام", + "cs": "Společná jídelní plocha více restaurací", + "da": "Torvehaller", + "de": "Gemeinschaftlicher Gastronomiebereich", + "el": "Χώρος Εστίασης", + "en-GB": "Food Court", + "eo": "Manĝ-bazaro", + "es": "Plaza de comida", + "et": "Toiduväljak", + "fa": "فودکورت", + "fi": "Ravintolamaailma", + "fr": "Aire de restauration, food-court", + "gl": "Zona de comidas", + "hu": "Étkezőtér", + "is": "Matarmarkaður", + "it": "Zona ristorazione", + "ja": "フードコート", + "ko": "푸드코트", + "lv": "Ēdnīca", + "nl": "Eetplaats omringd door fastfoodzaken", + "no": "Mathall", + "pl": "Strefa gastronomiczna – (w centrum handlowym)", + "pt-BR": "Praça de Alimentação", + "pt": "Praça de alimentação", + "ru": "Ресторанный дворик", + "sk": "Stravovacia zóna", + "sl": "Skupni jedilni prostor", + "sv": "Restaurangtorg", + "tr": "Yemek Yeri", + "uk": "Фуд-корт", + "vi": "Trung tâm Ẩm thực", + "zh-CN": "美食广场", + "zh-HK": "美食廣場", + "zh-TW": "美食街", + "mk": "Сала за брза храна", + "he": "מתחם מזון", + "ms": "Medan Selera", + "eu": "Bazkaltzeko eremua" + } + }, + "amenity/internet_cafe": { + "title": { + "C": "Internet Cafe", + "en": "Internet Cafe", + "ar": "مقهى إنترنت", + "ca": "Cifercafè", + "cs": "Internetová kavárna", + "da": "Internetcafe", + "de": "Internetcafé", + "el": "Internet Cafe", + "en-GB": "Internet Cafe", + "eo": "Retkafejo", + "es": "Internet café", + "et": "Internetikohvik", + "fa": "کافی‌نت", + "fi": "Internetkahvila", + "fr": "Cybercafé", + "gl": "Internet café", + "hu": "Internetkávézó", + "is": "Netkaffihús", + "it": "Internet Cafe", + "ja": "インターネットカフェ", + "ko": "PC방", + "lt": "Interneto kavinė", + "lv": "Interneta Kafejnīca", + "nl": "Internetcafé", + "no": "Internettkafé", + "pl": "Kafejka internetowa", + "pt-BR": "Internet Café", + "pt": "Cibercafé", + "ro": "Internet Cafe", + "ru": "Интернет-кафе", + "sk": "Internetová kaviareň", + "sl": "Internet Cafe", + "sr": "Интернет кафе", + "sv": "Internetkafé", + "tr": "İnternet Kafe", + "uk": "Інтернет кафе", + "vi": "Quán Internet", + "zh-CN": "网吧", + "zh-HK": "網吧", + "zh-TW": "網咖", + "mk": "Интернет-кафуле", + "he": "קפה אינטרנט", + "ms": "Kafe Internet", + "eu": "Internet kafetegi" + } + }, + "amenity/public_bath": { + "title": { + "C": "Public Bath", + "en": "Public Bath", + "ar": "حمام عام", + "ast": "Baños públicos", + "ca": "Banys públic", + "cs": "Veřejné lázně", + "da": "Offentligt bad", + "de": "Öffentliches Bad", + "el": "Δημόσιο Λουτρό", + "en-GB": "Public Bath", + "eo": "Banejo (distro)", + "es": "Baño público", + "fa": "حمام عمومی", + "fi": "Kylpylaitos", + "fr": "Bain public", + "gl": "Baño público", + "hr": "Javno kupalište", + "hu": "Nyilvános fürdő", + "is": "Almenningsböð", + "it": "Bagni Pubblici", + "ja": "公衆浴場", + "ko": "대중 목욕탕", + "lt": "Vieša vonia", + "nl": "Publiek bad", + "no": "Offentlig bad", + "pl": "Łaźnia publiczna", + "pt-BR": "Banho Público", + "pt": "Banhos públicos", + "ro": "Baie Publică", + "ru": "Общественная баня", + "sk": "Verejné sprchy", + "sl": "Javno kopališče", + "sr": "Јавно купатило", + "sv": "Publikt bad", + "tr": "Hamam", + "uk": "Громадська лазня", + "vi": "Nơi Tắm Công cộng", + "zh-CN": "公共浴室", + "zh-HK": "公共浴室", + "zh-TW": "公共澡堂", + "mk": "Јавна бања", + "he": "מרחצאות ציבוריות", + "eu": "Komun publikoak" + } + }, + "amenity/recycling": { + "title": { + "C": "Recycling Container", + "en": "Recycling", + "ar": "إعادة التدوير", + "ca": "Reciclatge", + "cs": "Recyklace", + "de": "Recycling", + "el": "Ανακύκλωση", + "eo": "Recikligejo", + "es": "Reciclaje", + "fa": "بازیافت", + "fi": "Kierrätys", + "fr": "Point de recyclage", + "gl": "Reciclaxe", + "hr": "Recikliranje", + "hu": "Szelektív hulladékgyűjtő", + "is": "Endurvinnsla", + "it": "Riciclaggio", + "ja": "リサイクル施設", + "ko": "재활용", + "nl": "Recycling", + "no": "Resirkulering", + "pl": "Przetwarzanie odpadów", + "pt-BR": "Reciclagem", + "pt": "Reciclagem", + "ru": "Вторичное сырьё", + "sl": "Recikliranje", + "sr": "Рециклирање", + "sv": "Återvinning", + "tr": "Geri Dönüşüm", + "uk": "Переробка вторсировини", + "vi": "Tái chế", + "zh-CN": "资源回收设施", + "zh-HK": "回收設施", + "zh-TW": "回收", + "mk": "Рециклажа", + "he": "מיחזור", + "eu": "Birziklatze" + } + }, + "recycling_type/centre": { + "title": { + "C": "Recycling Center" + } + }, + "amenity/waste_transfer_station": { + "title": { + "C": "Waste Transfer Station", + "en": "Waste Transfer Station", + "ar": "محطة نقل النفايات", + "ast": "Estación de tresferencia de basoria", + "ca": "Centre de tractament de residus", + "cs": "Překládací stanice odpadu", + "da": "Affaldsstation", + "de": "Müllumladestation", + "el": "Σταθμός Μεταφοράς Απορριμμάτων", + "en-GB": "Waste Transfer Station", + "eo": "Stacio de rubmastrumado", + "es": "Estación de transferencia de residuos", + "fa": "ایستگاه انتقال زباله", + "fi": "Jätteiden putkikeräysasema", + "fr": "Installation de transit, regroupement ou tri de déchets", + "gl": "Estación de bombeo de augas residuais", + "hu": "Hulladékátrakó állomás", + "is": "Sorpflokkunarstöð", + "it": "Centro Raccolta Rifiuti", + "ja": "ゴミ集積場", + "ko": "쓰레기 운반장", + "nl": "Afval-transfer-station", + "pl": "Stacja przeładunku odpadów", + "pt-BR": "Estação de Transferência de Resíduos", + "pt": "Estação de transferência de lixo", + "ru": "Канализационно-насосная станция", + "sl": "Zbirni center odpadkov", + "sr": "Станица за пренос отпада", + "sv": "Avfallscentral", + "tr": "Çöp Transfer İstasyonu", + "uk": "Сміттєперевантажувальна станція", + "vi": "Trạm Trung chuyển Chất thải", + "zh-CN": "垃圾中转站", + "zh-HK": "垃圾轉運站", + "zh-TW": "垃圾清運站", + "mk": "Претоварна отпадна станица", + "he": "תחנת מעבר זבל" + } + }, + "amenity/animal_boarding": { + "title": { + "C": "Animal Boarding Facility", + "en": "Animal Boarding Facility", + "ar": "منشأة رعاية حيوانات", + "ast": "Instalación d'embarque d'animales", + "ca": "Instal·lació d'embarcament d'animals", + "cs": "Hotel pro zvířata", + "da": "Dyrepension", + "de": "Tierpension", + "el": "Επιθεώρηση Ζώων", + "en-GB": "Animal Boarding Facility", + "eo": "Hotelo (prizorgejo) por hejmbestoj", + "es": "Alojamiento de animales", + "fa": "امکانات پانسیون حیوانات", + "fi": "Lemmikkihoitola", + "fr": "Plateforme de chargement d'animaux", + "gl": "Aloxamento de animais", + "hu": "Állatpanzió", + "is": "Dýrahótel", + "it": "Pensione per animali", + "ja": "ペットホテル", + "ko": "동물 기숙 시설", + "nl": "Dierenpension", + "pl": "Hotel dla zwierząt", + "pt-BR": "Hotel para animais", + "pt": "Hotel para animais", + "ru": "Передержка животных", + "sk": "Opatrovanie zvierat", + "sl": "Živalski hotel", + "sv": "Djurhotell", + "tr": "Yatılı Hayvan Bakım Yeri", + "uk": "Готель для тварин", + "vi": "Khách sạn Thú cưng", + "zh-CN": "动物寄养机构", + "zh-HK": "寵物酒店", + "zh-TW": "寵物度假村", + "mk": "Престојувалиште за животни", + "he": "פנסיון" + } + }, + "amenity/animal_breeding": { + "title": { + "C": "Animal Breeding Facility", + "en": "Animal Breeding Facility", + "ar": "منشأة تربية وبيع حيوانات", + "ast": "Instalación d'alimentación d'animales", + "ca": "Instal·lació de reproducció d'animals", + "cs": "Chovná stanice", + "da": "Dyreforsøgsklinik", + "de": "Tierzucht", + "el": "Εκτροφείο", + "en-GB": "Animal Breeding Facility", + "eo": "Bredejo", + "es": "Criadero de animales", + "fa": "امکانات پرورش حیوانات", + "fi": "Eläinten ruokintapaikka", + "fr": "Installation d'élevage d'animaux", + "gl": "Granxa de animais", + "hu": "Állattenyésztő", + "is": "Dýraræktun", + "it": "Allevamento", + "ja": "動物繁殖施設", + "ko": "동물 사육 시설", + "nl": "Fokkerij", + "pl": "Hodowla zwierząt", + "pt-BR": "Estabelecimento para reprodução de animais", + "pt": "Instalação para reprodução de animais ", + "ru": "Питомник", + "sk": "Chovateľská stanica", + "sl": "Središče za vzrejo živali", + "sv": "Djuruppfödning", + "tr": "Hayvan Islah Yeri", + "uk": "Розплідник тварин", + "vi": "Trại Nuôi Thú", + "zh-CN": "动物饲养繁育机构", + "zh-HK": "動物繁殖場", + "zh-TW": "動物繁殖場", + "mk": "Размножувалиште на животни", + "he": "מתקן לגידול לבעלי חיים" + } + }, + "amenity/animal_shelter": { + "title": { + "C": "Animal Shelter", + "en": "Animal Shelter", + "ar": "مأوى حيوانات", + "ast": "Refuxu d'animales", + "ca": "Refugi d'animals", + "cs": "Zvířecí útulek", + "da": "Dyrehjem", + "de": "Tierheim", + "el": "Καταφύγιο Ζώων", + "en-GB": "Animal Shelter", + "eo": "Azilo por bestoj", + "es": "Refugio de animales", + "fa": "پناهگاه حیوانات", + "fi": "Eläinhoitola", + "fr": "Refuge animalier", + "gl": "Abeiro de animais", + "hu": "Állatmenhely", + "is": "Dýraathvarf", + "it": "Rifugio per animali", + "ja": "動物保護施設", + "ko": "동물 보호소", + "lt": "Gyvūnų prieglauda", + "lv": "Dzīvnieku patversme", + "nl": "Dierenasiel", + "no": "Dyrehjem", + "pl": "Schronisko dla zwierząt", + "pt-BR": "Abrigo de Animais", + "pt": "Abrigo para animais", + "ru": "Приют для животных", + "sk": "Útulok pre zvieratá", + "sl": "Zavetišče za živali", + "sr": "Азил за животиње", + "sv": "Djurhem", + "tr": "Hayvan Barinağı", + "uk": "Притулок для тварин", + "vi": "Trạm Cứu hộ Thú cưng", + "zh-CN": "动物收容救助所", + "zh-HK": "動物收容中心", + "zh-TW": "動物收容中心", + "mk": "Засолниште за животни", + "he": "בית מחסה לחיות מחמד" + } + }, + "amenity/driving_school": { + "title": { + "C": "Driving School", + "en": "Driving School", + "ar": "مدرسة تعليم القيادة", + "ast": "Autoescuela", + "ca": "Autoescola", + "cs": "Autoškola", + "da": "Køreskole", + "de": "Fahrschule", + "el": "Σχολή Οδήγησης", + "en-GB": "Driving School", + "eo": "Stirlernejo", + "es": "Escuela de conducción", + "et": "Sõidukool", + "fa": "آموزشگاه رانندگی", + "fi": "Autokoulu", + "fr": "Auto-école", + "gl": "Autoescola", + "hu": "Autósiskola", + "is": "Ökuskóli", + "it": "Scuola guida", + "ja": "自動車教習所", + "ko": "운전학원", + "lt": "Vairavimo mokykla", + "lv": "Autoskola", + "nl": "Rijschool", + "no": "Trafikkskole", + "pl": "Szkoła nauki jazdy", + "pt-BR": "Auto Escola", + "pt": "Escola de condução", + "ro": "Școală de Șoferi", + "ru": "Автошкола", + "sk": "Autoškola", + "sl": "Avtošola", + "sr": "Ауто школа", + "sv": "Trafikskola", + "ta": "ஓட்டுநர் பள்ளி", + "tr": "Sürücü Kursu", + "uk": "Автошкола", + "vi": "Trường Dạy Lái Xe", + "zh-CN": "驾校", + "zh-HK": "駕駛學校", + "zh-TW": "駕訓班", + "mk": "Автоучилиште", + "he": "בית ספר לנהיגה", + "ms": "Sekolah Memandu", + "eu": "Auto-eskola" + } + }, + "amenity/vending_machine": { + "title": { + "C": "Vending Machine", + "en": "Vending Machine", + "ar": "آلة بيع", + "ast": "Máquina de venta automática", + "ca": "Màquina de vending", + "cs": "Prodejní automat", + "da": "Salgsautomat", + "de": "Verkaufsautomat", + "el": "Αυτόματος Πωλητής", + "en-GB": "Vending Machine", + "eo": "Vendilo", + "es": "Máquina expendedora", + "fa": "دستگاه فروش خودکار", + "fi": "Myyntiautomaatti", + "fr": "Distributeur automatique", + "gl": "Máquina expendedora", + "hr": "Automat za prodaju", + "hu": "Árusító automata", + "is": "Sjálfsali", + "it": "Distributore automatico", + "ja": "自動販売機", + "ko": "자동판매기", + "lt": "Prekybos automatas", + "lv": "Tirdzniecības automāts", + "nl": "Automaat", + "no": "Automat", + "pl": "Automat sprzedający", + "pt-BR": "Máquina de Venda", + "pt": "Máquina de venda automática", + "ru": "Торговый автомат", + "sk": "Výdajný automat", + "sl": "Prodajni avtomat", + "sr": "Аутомат", + "sv": "Varuautomat", + "tr": "Otomatik Satış Makinası", + "uk": "Торговельний автомат", + "vi": "Máy Bán Hàng", + "zh-CN": "自动售货机", + "zh-HK": "售賣機", + "zh-TW": "自動販賣機", + "mk": "Продажен автомат", + "he": "מכונת ממכר", + "ms": "Mesin Layan Diri", + "eu": "Makina saltzaile" + } + }, + "amenity/watering_place": { + "title": { + "C": "Animal Watering Place", + "en": "Animal Watering Place", + "ar": "مكان شرب للحيوانات", + "ast": "Bebederu p'animales", + "ca": "Font d'aigua per animals", + "cs": "Napajedlo pro zvířata", + "da": "Dyrevandtrug", + "de": "Tränke", + "el": "Ποτίστρα Ζώων", + "en-GB": "Animal Watering Place", + "eo": "Akvotrinkejo por bestoj", + "es": "Abrevadero para animales", + "fa": "آبشخور حیوانات", + "fi": "Eläinten juomapaikka", + "fr": "Point d'eau pour animaux", + "gl": "Bebedoiro de animais", + "hu": "Állatitató hely", + "is": "Brynning fyrir dýr", + "it": "Abbeveratoio", + "ja": "動物の水飲み場", + "ko": "동물 급수 장소", + "nl": "Drinkplaats voor dieren", + "no": "Dyrevanningssted", + "pl": "Poidło dla zwierząt", + "pt-BR": "Bebedouro para animais", + "pt": "Bebedouro para animais", + "ru": "Водопой для животных", + "sl": "Napajališče za živali", + "sr": "Појило", + "sv": "Dricksvatten för djur", + "tr": "Hayvan Yıkama Yeri", + "uk": "Водопій", + "vi": "Nước Uống dành cho Thú vật", + "zh-CN": "动物饮水地", + "zh-HK": "動物飲水處", + "zh-TW": "動物飲水區", + "mk": "Поило за миленици", + "he": "מקור מים לחיות" + } + }, + "amenity/bus_station": { + "title": { + "C": "Bus Station / Terminal", + "en": "Bus Station / Terminal", + "ar": "محطة حافلات", + "ast": "Estación d'autobuses / Terminal", + "ca": "Estació d'autobusos", + "cs": "Autobusové nádraží / terminál", + "da": "Busstation/rutebilstation", + "de": "Busbahnhof / Busterminal", + "el": "Τερματικός Σταθμός Λεωφορείου", + "en-GB": "Bus Station / Terminal", + "eo": "Aŭtobus-stacio", + "es": "Estación / Terminal de bus", + "fa": "پایانه اتوبوس / ترمینال", + "fi": "Linja-autoasema/-terminaali", + "fr": "Gare routière", + "gl": "Estación de autobuses", + "hr": "Autobusni kolodvor", + "hu": "Buszpályaudvar", + "is": "Strætisvagnastöð / Umferðarmiðstöð", + "it": "Stazione /Terminal degli autobus", + "ja": "バスターミナル(旧:単独)", + "ko": "버스 터미널", + "lv": "Autobusu pietura / Terminālis", + "nl": "Busstation", + "no": "Busstasjon/-terminal", + "pl": "Dworzec autobusowy", + "pt-BR": "Terminal / Estação de Ônibus", + "pt": "Estação / Terminal de autocarros", + "ru": "Автобусная станция/терминал", + "sk": "Autobusová zastávka / Terminál", + "sl": "Avtobusna postaja / Terminal", + "sq": "Stacioni i Autobusave", + "sv": "Busstation / Bussterminal", + "ta": "பேருந்து நிலையம் / முனையம்", + "tr": "Otobüs Durağı / Terminali", + "uk": "Автостанція/Термінал", + "vi": "Ga Xe buýt", + "zh-CN": "公交车站 / 枢纽站", + "zh-HK": "巴士總站", + "zh-TW": "客運站", + "mk": "Автобуска станица / терминал", + "he": "תחנת אוטובוס", + "eu": "Autobus geltoki / Terminal" + } + }, + "amenity/ferry_terminal": { + "title": { + "C": "Ferry Terminal", + "en": "Ferry Terminal", + "cs": "Terminál přívozu/trajektu", + "de": "Schiffsanleger", + "el": "Σταθμός Επιβατών Προθμείου", + "eo": "Pramstacio", + "es": "Terminal de ferry", + "fa": "ترمینال کشتی", + "fr": "Terminal de ferry", + "it": "Terminal Traghetti", + "ja": "フェリー乗り場", + "ko": "페리 터미널", + "pl": "Terminal promowy", + "pt-BR": "Terminal da balsa", + "pt": "Terminal de ferry", + "sk": "Trajektový terminál", + "sr": "Терминал за трајект", + "sv": "Färjeterminal", + "uk": "Поромний термінал", + "vi": "Nhà ga Phà", + "zh-TW": "渡輪碼頭", + "mk": "Траектен терминал", + "he": "מסוף מעבורת" + } + }, + "amenity/car_pooling": { + "title": { + "C": "Car Pooling Station", + "en": "Car Pooling Station", + "cs": "stanice spolujízdy", + "da": "Samkørselsstation", + "de": "Car Pooling Station", + "eo": "Haltejo aŭtomobila (carpooling)", + "es": "Estación de vehículo compartido (Carpooling)", + "fa": "ایستگاه هم‌سفری (نوعی اشتراک خودرو)", + "fi": "Kimppakyytiasema", + "fr": "Aire de covoiturage", + "gl": "Estación de automóbil compartido (Carpooling)", + "it": "Stazione per il Car Pooling", + "ja": "カープール", + "pl": "Carpooling", + "pt-BR": "Estação de carona solidária", + "pt": "Posto de boleia partilhada", + "sv": "Bilpoolstation", + "uk": "Місце посадки/висадки пасажирів", + "vi": "Chỗ Đón để Đi Cùng Xe", + "zh-TW": "汽車共乘站", + "mk": "Станица за заедничко автомобилско возење", + "he": "תחנת שיתוף נסיעות" + } + }, + "amenity/love_hotel": { + "title": { + "C": "Love Hotel", + "en": "Love Hotel", + "cs": "Hodinový hotel", + "da": "Kærlighedshotel", + "de": "Stundenhotel", + "el": "Ξενοδοχείο Ημιδιαμονής", + "en-GB": "Love Hotel", + "eo": "Amor-hotelo", + "es": "Hotel para parejas", + "fa": "هتل عشق", + "fi": "Tuntihotelli", + "fr": "Love hôtel", + "gl": "Hotel para parellas", + "hu": "Love hotel", + "is": "Ástarhótel", + "it": "Love Hotel", + "ja": "ラブホテル", + "ko": "러브 호텔", + "nl": "Love hotel", + "no": "Kjærlighetshotell", + "pl": "Love hotel", + "pt-BR": "Motel", + "pt": "Motel para casais", + "ru": "Отель любви", + "sr": "Љубавни хотел", + "sv": "Kärlekshotell", + "tr": "Aşk Oteli", + "uk": "Готель кохання", + "vi": "Khách sạn Tình yêu", + "zh-CN": "爱情宾馆", + "zh-HK": "愛情酒店", + "zh-TW": "情趣旅館", + "mk": "Љубовен хотел", + "he": "מלון לפי שעות" + } + }, + "amenity/music_school": { + "title": { + "C": "Music School", + "en": "Music School", + "ar": "مدرسة موسيقى", + "ast": "Academia de música", + "ca": "Escola de música", + "cs": "Hudební škola", + "da": "Musikskole", + "de": "Musikschule", + "el": "Ωδείο", + "en-GB": "Music School", + "eo": "Muzika lernejo", + "es": "Escuela de música", + "fa": "آموزشگاه موسیقی", + "fi": "Musiikkikoulu", + "fr": "École de musique", + "gl": "Escola de música", + "hu": "Zeneiskola", + "is": "Tónlistarskóli", + "it": "Scuola di musica", + "ja": "音楽学校", + "ko": "음악 학교", + "lt": "Muzikos mokykla", + "lv": "Mūzikas skola", + "nl": "Muziekschool", + "no": "Musikkskole", + "pl": "Szkoła muzyczna niepodlegająca MEN", + "pt-BR": "Escola de Música", + "pt": "Escola de música", + "ru": "Музыкальная школа", + "sk": "Hudobná škola", + "sl": "Glasbena šola", + "sr": "Музичка школа", + "sv": "Musikskola", + "ta": "இசைப் பள்ளி", + "tr": "Müzik Okulu", + "uk": "Музична школа", + "vi": "Trường Âm nhạc", + "zh-CN": "音乐学校", + "zh-HK": "音樂學校", + "zh-TW": "音樂學校", + "mk": "Музичко училиште", + "he": "בית ספר למוזיקה", + "ms": "Sekolah Muzik", + "eu": "Musika eskola", + "ckb": "قوتابخانەی مۆسیقی" + } + }, + "amenity/smoking_area": { + "title": { + "C": "Smoking Area", + "en": "Smoking Area", + "ar": "منطقة مخصصة للتدخين", + "ca": "Àrea per a fumadors", + "cs": "Kuřárna", + "da": "Rygeområde", + "de": "Raucherbereich", + "el": "Καπνιστές", + "en-GB": "Smoking Area", + "eo": "Fumejo", + "es": "Área de fumadores", + "et": "Suitsetamise koht", + "fa": "منطقه سیگار کشیدن", + "fi": "Tupakointialue", + "fr": "Zone fumeur", + "gl": "Zona de fumadores", + "hu": "Dohányzó terület", + "is": "Reykingasvæði", + "it": "Area fumatori", + "ja": "喫煙所", + "ko": "흡연 구역", + "lt": "Rūkymo vieta", + "lv": "Smēķēšanas vieta", + "nl": "Rookgebied", + "no": "Røykeområde", + "pl": "Palarnia", + "pt-BR": "Área de fumantes", + "pt": "Área para fumadores", + "ru": "Место для курения", + "sk": "Fajčiarska zóna", + "sr": "Област за пушаче", + "sv": "Rökområde", + "tr": "Sigara İçme Alanı", + "uk": "Місце для куріння", + "vi": "Khu vực Hút thuốc", + "zh-CN": "吸烟区域", + "zh-HK": "吸煙區", + "zh-TW": "吸煙區", + "mk": "Пушилница", + "he": "אזור עישון", + "eu": "Erretzeko gune", + "ckb": "ناوچەی جگەرەکێشان" + } + }, + "amenity/monastery": { + "title": { + "C": "Monastery Grounds", + "en": "Monastery Grounds", + "cs": "Klášterní pozemky", + "da": "Kloster-område", + "de": "Klostergelände", + "el": "Ιερά Μονή", + "en-GB": "Monastery Grounds", + "eo": "Monaĥeja tereno", + "es": "Terrenos del monasterio", + "et": "Kloostriala", + "fa": "زمین های صومعه", + "fi": "Luostari", + "fr": "Terrain de monastère", + "gl": "Área de mosteiro", + "hu": "Kolostor", + "is": "Klausturlóð", + "it": "Monastero", + "ja": "修道院", + "ko": "수도원 부지", + "nl": "Kloostergebied", + "no": "Klosterområde", + "pl": "Teren klasztoru", + "pt-BR": "Jardins do mosteiro", + "pt": "Mosteiro", + "ru": "Монастырь", + "sr": "Манастирско земљиште", + "sv": "Klosterområde", + "uk": "Територія монастиря", + "vi": "Sân Tu viện", + "zh-HK": "寺院範圍", + "zh-TW": "修道院", + "mk": "Манастир", + "he": "מתחם מנזר", + "eu": "Monastegiaren eremu" + } + }, + "amenity/dive_centre": { + "title": { + "C": "Dive Center", + "en": "Dive Center", + "ar": "مركز الغوص", + "cs": "Centrum potápění", + "de": "Tauchschule", + "el": "Κέντρο Καταδύσεων", + "en-GB": "Dive Centre", + "eo": "Centro de subakva naĝado", + "es": "Centro de buceo", + "fa": "مرکز غواصی", + "fi": "Sukelluskeskus", + "fr": "Centre de plongée", + "gl": "Centro de mergullo", + "hu": "Búvárközpont", + "is": "Köfunarmiðstöð", + "it": "Centro subacqueo", + "ja": "ダイブセンター", + "ko": "다이브 센터", + "nl": "Duikcentrum", + "no": "Dykkesenter", + "pl": "Centrum nurkowe", + "pt-BR": "Centro de Mergulho", + "pt": "Centro de mergulho", + "sr": "Ронилачки центар", + "sv": "Dykcenter", + "uk": "Центр навчання підводного плавання", + "vi": "Trung tâm Lặn biển", + "zh-CN": "潜水中心", + "zh-HK": "潛水中心", + "zh-TW": "潛水中心", + "mk": "Нуркачки центар", + "he": "מרכז צלילה", + "en-AU": "Dive Centre" + } + }, + "amenity/language_school": { + "title": { + "C": "Language School", + "en": "Language School", + "ar": "مدرسة لغات", + "ca": "Escola d'idiomes", + "cs": "Jazyková škola", + "da": "Sprogskole", + "de": "Sprachschule", + "el": "Φροντιστήριο Ξένων Γλωσσών", + "eo": "Lingva lernejo", + "es": "Escuela de idiomas", + "fa": "آموزشگاه زبان", + "fi": "Kielikoulu", + "fr": "École de langues", + "gl": "Escola de idiomas", + "hu": "Nyelviskola", + "is": "Tungumálaskóli", + "it": "Scuola di lingue straniere", + "ja": "外国語教室", + "ko": "언어 학원", + "lt": "Kalbų mokykla", + "nl": "Taalschool", + "no": "Språkskole", + "pl": "Szkoła językowa", + "pt-BR": "Escola de idiomas", + "pt": "Escola de línguas", + "ru": "Языковая школа", + "sk": "Jazyková škola", + "sr": "Језичка школа", + "sv": "Språkskola", + "ta": "மொழிப் பள்ளி", + "uk": "Мовна школа", + "vi": "Trường học Ngoại ngữ", + "zh-CN": "语言学校", + "zh-HK": "語言學校", + "zh-TW": "語言學校", + "mk": "Училиште за јазици", + "he": "בית ספר לשפות", + "eu": "Hizkuntz eskola", + "ckb": "قوتابخانەی زمان" + } + }, + "amenity/money_transfer": { + "title": { + "C": "Money Transfer Station", + "en": "Money Transfer Station", + "cs": "místo pro peněžní převody", + "de": "Geldtransferstation", + "el": "Υπηρεσία Μεταφοράς Χρημάτων", + "eo": "Centro de mon-transigo", + "es": "Estación de transferencia de dinero", + "fa": "ایستگاه انتقال پول", + "fi": "Rahansiirtopiste", + "fr": "Transfert d'argent", + "gl": "Estación de transferencia de diñeiro", + "hu": "Pénz átutaló hely", + "it": "Agenzia di Money Transfer", + "ja": "海外送金所", + "ko": "환전소", + "nl": "Wisselkantoor", + "no": "Pengeoverføringsstasjon", + "pl": "Placówka przekazów pieniężnych", + "pt-BR": "Estação de transferência de dinheiro", + "pt": "Serviço de transferência de dinheiro", + "ru": "Денежные переводы", + "sv": "Pengaöverföring", + "tr": "Para Transfer İstasyonu", + "uk": "Грошові перекази", + "vi": "Gửi Tiền", + "zh-HK": "滙款中心", + "zh-TW": "匯款站", + "mk": "Испраќање на пари", + "he": "תחנת העברת כספים" + } + }, + "amenity/payment_centre": { + "title": { + "C": "Payment Center", + "en": "Payment Center", + "ar": "مركز دفع نقود", + "cs": "platební centrum", + "de": "Zahlstelle", + "el": "Κέντρο Πληρωμών", + "en-GB": "Payment Centre", + "eo": "Centro de pago", + "es": "Centro de pago", + "fa": "مرکز پرداخت", + "fi": "Maksupalvelu", + "fr": "Centre de paiement", + "gl": "Centro de pagamento", + "it": "Centro per i pagamenti", + "ja": "納入窓口", + "nl": "Betalingscentrum", + "no": "Betalingssenter", + "pl": "Centrum płatnicze", + "pt-BR": "Centro de pagamento", + "pt": "Balcão de pagamento", + "sl": "Plačilni center", + "sv": "Betalningscenter", + "uk": "Приймання платежів", + "zh-HK": "繳費處", + "zh-TW": "繳費中心", + "mk": "Платежно место", + "he": "מרכז תשלום", + "en-AU": "Payment Centre" + } + }, + "amenity/payment_terminal": { + "title": { + "C": "Payment Terminal", + "en": "Payment Terminal", + "ar": "محطة دفع نقود", + "cs": "Platební terminál", + "de": "Zahlungsterminal", + "el": "Τερματικό Πληρωμών", + "eo": "Pag-aŭtomato", + "es": "Terminal de pago", + "fa": "ترمینال پرداخت ، POS", + "fi": "Maksupääte", + "fr": "Terminal de paiement", + "gl": "Terminal de pagamento", + "hu": "Befizetőautomata", + "it": "Terminale pagamenti", + "ja": "支払端末", + "nl": "Betalingsterminal", + "no": "Betalingsterminal", + "pl": "Terminal płatniczy", + "pt-BR": "Terminal de pagamento", + "pt": "Terminal de pagamento", + "ru": "Платёжный терминал", + "sl": "Plačilni terminal", + "sv": "Betalningsterminal", + "uk": "Платіжний термінал", + "zh-HK": "繳費終端機", + "zh-TW": "繳費窗口", + "mk": "Платежен терминал", + "he": "מסוף תשלום" + } + }, + "recycling_type/container": { + "title": { + "C": "Recycling Container" + } + }, + "amenity/vehicle_inspection": { + "title": { + "C": "Vehicle Inspection", + "en": "Vehicle Inspection", + "ar": "فحص مركبات", + "ca": "Inspecció de vehicles", + "cs": "Kontrola vozidel", + "de": "Fahrzeuginspektion", + "el": "Επιθεώρηση Οχήματος", + "eo": "Aŭtomobil-kontrolejo", + "es": "Inspección de vehículo", + "fa": "مرکز معاینه فنی خودرو", + "fi": "Katsastusasema", + "fr": "Centre de contrôle technique", + "gl": "Inspección de vehículo", + "hr": "Tehnički pregled vozila", + "hu": "Autóműszaki vizsgáló", + "is": "Skoðun farartækja", + "it": "Ispezione veicolo", + "ja": "車検場", + "ko": "차량 점검", + "nl": "Voertuigkeuring", + "pl": "Stacja kontroli pojazdów", + "pt-BR": "Inspeção veicular", + "pt": "Centro de inspeção de veículos", + "ru": "Станция техосмотра", + "sk": "Stanica technickej kontroly", + "sv": "Fordonsbesiktning", + "uk": "Техогляд траспортних засобів", + "vi": "Trạm Kiểm tra Xe", + "zh-CN": "车辆检查站", + "zh-TW": "車輛檢查", + "mk": "Преглед на возила", + "he": "בדיקת כלי רכב" + } + }, + "amenity/photo_booth": { + "title": { + "C": "Photo Booth", + "en": "Photo Booth", + "cs": "Foto budka", + "da": "Pasfotoautomat", + "de": "Fotoautomat", + "el": "Φωτογραφικός Θάλαμος", + "eo": "fot-aŭtomato", + "es": "Cabina de fotos", + "et": "Fotokabiin", + "fa": "غرفه عکس", + "fi": "Valokuvauskoppi", + "fr": "Photomaton", + "gl": "Cabina de fotos", + "hu": "Fényképezőfülke", + "it": "Cabina per fototessere", + "ja": "証明写真機", + "ko": "사진 부스", + "nl": "Pasfotohokje", + "no": "Fotokiosk", + "pl": "Fotobudka", + "pt-BR": "Cabine de foto", + "pt": "Cabine Fotográfica", + "ru": "Фотокабина", + "sk": "Fotobúdka", + "sv": "Fotoautomat", + "uk": "Фото-кабінка", + "zh-CN": "自助拍照机", + "zh-TW": "照相站", + "mk": "Фотокабина", + "he": "תא צילום" + } + }, + "amenity/embassy": { + "title": { + "C": "Embassy", + "en": "Embassy", + "af": "Ambassade", + "ar": "سفارة", + "ast": "Embaxada", + "bn": "দুতাবাস", + "bs": "Ambasada", + "ca": "Ambaixada", + "cs": "Velvyslanectví", + "da": "Ambassade", + "de": "Botschaft", + "el": "Πρεσβεία", + "en-GB": "Embassy", + "eo": "Ambasadejo", + "es": "Embajada", + "et": "Saatkond", + "fa": "سفارت خانه", + "fi": "Suurlähetystö", + "fr": "Ambassade", + "gl": "Embaixada", + "hr": "Ambasada", + "hu": "Külképviselet", + "id": "Kedutaan besar", + "is": "Sendiráð", + "it": "Ambasciata", + "ja": "大使館", + "kn": "ರಾಯಭಾರ", + "ko": "대사관", + "lt": "Ambasada", + "lv": "Vēstniecība", + "nl": "Ambassade", + "no": "Ambassade", + "pl": "Ambasada/konsulat", + "pt-BR": "Embaixada", + "pt": "Embaixada", + "ro": "Ambasadă", + "ru": "Посольство", + "sk": "Veľvyslanectvo", + "sl": "Veleposlaništvo", + "sr": "Амбасада", + "sv": "Ambassad", + "ta": "தூதரகம்", + "tr": "Büyükelçilik", + "uk": "Амбасада", + "vi": "Tòa đại sứ", + "yue": "大使館", + "zh-CN": "使馆", + "zh-HK": "大使館", + "zh-TW": "使館", + "zh": "使馆", + "mk": "Амбасада", + "bg": "Посолство", + "he": "שגרירות", + "ms": "Kedutaan", + "eu": "Enbaxada" + } + }, + "amenity/conference_centre": { + "title": { + "C": "Convention Center", + "en": "Convention Center", + "cs": "konferenční centrum", + "de": "Kongresszentrum", + "eo": "Konferenca centro", + "es": "Centro de convenciones", + "et": "Konverentsikeskus", + "fa": "مرکز همایش", + "fi": "Kongressikeskus", + "fr": "Centre de congrés", + "gl": "Centro de convencións", + "hu": "Konferenciaközpont", + "it": "Centro conferenze", + "ja": "コンベンションセンター", + "ko": "컨벤션 센터", + "no": "Konferansesenter", + "pl": "Centrum konferencyjne", + "pt-BR": "Centro de Convenções", + "pt": "Centro de convenções", + "sr": "Конгресни центар", + "sv": "Kongresscenter", + "uk": "Конференц-центр ", + "vi": "Trung tâm Hội nghị", + "zh-TW": "會議中心", + "mk": "Центар за собири", + "he": "מרכז כנסים", + "en-AU": "Convention Centre" + } + }, + "amenity/dressing_room": { + "title": { + "C": "Changing Room", + "en": "Changing Room", + "cs": "kabinka pro převlečení", + "de": "Umkleideraum", + "el": "Αποδυτήρια", + "eo": "Vestejo", + "es": "Vestuario", + "fa": "اتاق تعویض لباس", + "fi": "Pukuhuone", + "fr": "Vestiaire", + "gl": "Vestiario", + "hu": "Öltöző", + "it": "Camerino", + "ja": "更衣室", + "ko": "탈의실", + "nl": "Kleedkamer", + "no": "Garderobe", + "pl": "Przebieralnia", + "pt-BR": "Vestiário", + "pt": "Cabine de provas", + "sr": "Свлачионица", + "sv": "Omklädningsrum", + "uk": "Роздягальня", + "vi": "Phòng Thay đồ", + "zh-CN": "更衣室", + "zh-TW": "更衣室", + "mk": "Соблекувална", + "he": "חדר הלבשה" + } + }, + "amenity/events_venue": { + "title": { + "C": "Events Venue", + "en": "Events Venue", + "ar": "مكان الأحداث", + "cs": "kulturní sál", + "da": "Begivenhedsarena", + "de": "Veranstaltungszentrum", + "eo": "Domo de ceremonioj", + "es": "Lugar de eventos", + "et": "Ürituste toimumiskoht", + "fa": "تالار", + "fi": "Tapahtumahalli", + "fr": "Établissement accueillant des événements", + "gl": "Lugar de eventos", + "it": "Sala eventi", + "ja": "イベント施設", + "ko": "행사장", + "nl": "Evenementenlocatie", + "no": "Arrangementsted", + "pl": "Sala bankietowa", + "pt-BR": "Local de Eventos", + "pt": "Espaço para eventos", + "sv": "Evenemangsplats/festlokal", + "uk": "Банкетна зала", + "vi": "Trung tâm Sự kiện", + "zh-TW": "活動場館", + "mk": "Одржувалиште на настани", + "he": "מתחם אירועים" + } + }, + "amenity/exhibition_centre": { + "title": { + "C": "Exposition Center", + "en": "Exposition Center", + "cs": "veletržní palác", + "de": "Messezentrum", + "eo": "Centro de ekspozicioj kaj foiroj", + "es": "Centro de exposiciones", + "fa": "مرکز نمایشگاهی ، عرضه", + "fi": "Messukeskus", + "fr": "Centre d'expositions", + "gl": "Centro de exposicións", + "it": "Centro Espositivo", + "ja": "展示場", + "ko": "전시회장", + "pl": "Centrum targowo-wystawiennicze", + "pt-BR": "Centro de exposições", + "pt": "Centro de exposições", + "sr": "Изложбени центар", + "sv": "Utställningscenter/Mässa", + "uk": "Виставковий центр", + "vi": "Trung tâm Triển lãm", + "zh-TW": "展覽中心", + "mk": "Изложбен центар", + "he": "מרכז כנסים" + } + }, + "amenity/gambling": { + "title": { + "C": "Gambling Hall", + "en": "Gambling Hall", + "cs": "místo pro hazard", + "de": "Spielhalle", + "el": "Αίθουσα Τυχερών Παιγνίων για Διασκέδαση", + "eo": "Hazardludejo", + "es": "Salón de juegos de azar", + "fa": "سالن قمار", + "fi": "Uhkapelisali", + "ja": "ギャンブル場", + "ko": "도박장", + "nl": "Gokhal", + "pl": "Salon pachinko/bingo", + "pt-BR": "Sala de jogos", + "pt": "Sala de bingo", + "sk": "Herňa", + "sr": "Коцкарска дворана", + "uk": "Ігорна зала", + "vi": "Phòng Chơi bài", + "zh-CN": "赌场厅", + "zh-TW": "賭博場所", + "mk": "Сала за коцкање", + "he": "היכל הימורים" + } + }, + "amenity/karaoke_box": { + "title": { + "C": "Karaoke Box", + "en": "Karaoke Box", + "cs": "karaoke kabinka", + "de": "Karaoke-Box", + "eo": "Karaokeejo", + "es": "Karaoke Box", + "fa": "جعبه کارائوکه (ابزار سرگرمی آوازخوانی)", + "fi": "Karaokekoppi", + "fr": "Karaoke", + "ja": "カラオケボックス", + "ko": "노래방", + "pl": "Budka karaoke", + "pt-BR": "Caixa de Karaokê", + "pt": "Caixa de karaoke", + "sr": "Караоке кабина", + "uk": "Кабінка караоке", + "vi": "Dàn Karaoke", + "zh-CN": "KTV亭", + "zh-TW": "卡拉 OK 包廂", + "mk": "Просторија за караоке", + "he": "תיבת קריוקי" + } + }, + "amenity/kneipp_water_cure": { + "title": { + "C": "Kneipp Water Cure", + "en": "Kneipp Water Cure", + "cs": "Kneippova lázeň", + "de": "Kneippanlage", + "eo": "Naĝejeto", + "es": "Cura de agua Kneipp", + "fa": "تصفیه آب سباستین کنیپ / آب درمانی Kneipp", + "gl": "Augas termais Kneipp", + "ja": "足浴場(ヨーロッパ)", + "pl": "Basen Kneippa", + "pt-BR": "Cura da água do Kneipp ", + "pt": "Balneário Kneippiano", + "uk": "Водолікарня", + "vi": "Bồn tắm Trị liệu Kneipp", + "zh-CN": "克奈圃水疗", + "zh-TW": "Kneipp 水療", + "mk": "Водотерапија Кнајп", + "he": "טיפול מים קנאיפ" + } + }, + "amenity/lavoir": { + "title": { + "C": "Lavoir", + "en": "Lavoir", + "cs": "Lavor", + "de": "Waschhaus", + "eo": "Vestaĵ-lavejo (ĉe rivero)", + "es": "Lavadero", + "fa": "محل شست‌وشوی لباس", + "fr": "Lavoir", + "gl": "Lavadoiro", + "it": "Lavatoio", + "ja": "共同洗い場", + "no": "Vaskehus", + "pl": "Pralnia (przy rzece)", + "pt-BR": "Lavanderia pública", + "pt": "Lavadouro", + "uk": "Місце для прання", + "zh-TW": "洗手台", + "mk": "Пералница", + "he": "מקום מרחץ בגדים" + } + }, + "amenity/letter_box": { + "title": { + "C": "Letter Box", + "en": "Letter Box", + "cs": "domovní poštovní schránka", + "de": "Hausbriefkasten", + "eo": "Leterkesto (riceva)", + "es": "Buzón", + "fa": "صندوق پستی", + "fi": "Asunnon postilaatikko", + "fr": "Boîte aux lettres privée", + "gl": "Caixa do correo", + "hu": "Személyes postaláda", + "it": "Cassetta delle lettere", + "ja": "郵便受け", + "ko": "우편함", + "nl": "Brievenbus", + "no": "Postkasse", + "pl": "Prywatna skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Caixa de correio", + "sr": "Поштанско сандуче", + "sv": "Postlåda", + "uk": "Поштова скринька", + "vi": "Hòm thư Cá nhân", + "zh-CN": "信箱", + "zh-TW": "信箱", + "mk": "Поштенско сандаче", + "he": "תיבת מכתבים" + } + }, + "amenity/loading_dock": { + "title": { + "C": "Loading Dock", + "en": "Loading Dock", + "cs": "nakládací rampa", + "de": "Laderampe", + "el": "Αποβάθρα Φόρτωσης", + "eo": "Ŝarĝ-kajo", + "es": "Muelle de carga", + "fa": "اسکله بارگیری", + "fi": "Lastauslaituri", + "fr": "Quai de chargement", + "gl": "Peirao de carga", + "hu": "Rakodó dokk", + "ja": "貨物の搬出入口", + "no": "Lastebrygge", + "pl": "Dok załadunkowy", + "pt-BR": "Doca de carregamento", + "pt": "Cais de carga", + "sv": "Lastkaj", + "uk": "Вантажна рампа", + "vi": "Khu Bốc dỡ Hàng hóa", + "zh-CN": "装卸码头", + "zh-TW": "裝卸碼頭", + "mk": "Товарна рампа", + "he": "מתחם העמסה" + } + }, + "amenity/polling_station": { + "title": { + "C": "Permanent Polling Place", + "en": "Permanent Polling Place", + "cs": "stálé volební místo", + "de": "Permanentes Wahllokal", + "eo": "Balotejo (neŝanĝanta loko)", + "es": "Lugar de votación permanente", + "fa": "محل دائمی رأی‌گیری", + "fi": "Pysyvä äänestyspaikka", + "fr": "Bureau de vote permanent", + "gl": "Lugar de votación permanente", + "hu": "Állandó szavazóhely", + "it": "Sezione Elettorale permanente", + "ja": "投票所(常設)", + "ko": "상설 투표소", + "nl": "Permanent stembureau", + "no": "Fast Stemmeplass", + "pl": "Stały lokal wyborczy", + "pt-BR": "Local de votação permanente", + "pt": "Local de voto permanente", + "sv": "Permanent vallokal", + "uk": "Виборча дільниця", + "zh-TW": "永久投票處", + "mk": "Трајно гласачко место", + "he": "קלפי קבוע" + } + }, + "amenity/post_depot": { + "title": { + "C": "Post Sorting Office", + "en": "Post Sorting Office", + "cs": "poštovní depo", + "de": "Postverteilzentrum", + "el": "Γραφείο Ταξινόμησης Αλληλογραφίας", + "eo": "Poŝta disspecigejo", + "es": "Oficina de clasificación de correos", + "fa": "اداره پست", + "fi": "Postinlajittelukeskus", + "fr": "Bureau de tri de courrier", + "gl": "Oficina de clasificación de correos", + "hu": "Postacsomag üzem", + "it": "Ufficio di smistamento postale", + "ja": "郵便集配所", + "ko": "우편집중국", + "no": "Post Sorteringskontor", + "pl": "Sortownia listów lub paczek", + "pt-BR": "Escritório de classificação de correspondência", + "pt": "Centro de distribuição de correio", + "sr": "Поштански сортажни центар", + "sv": "Postsorteringskontor", + "uk": "Поштова сортувальна станція", + "zh-TW": "郵件處理中心", + "mk": "Служба за поштенска отпрема", + "he": "משרד מיון דואר" + } + }, + "amenity/prep_school": { + "title": { + "C": "Test Prep / Tutoring School", + "en": "Test Prep / Tutoring School", + "cs": "doučovací škola", + "de": "Vorbereitungsschule", + "eo": "Lernejo pretiganta (al ekzameno/universitato)", + "es": "Preparación para exámenes / Escuela de tutoría", + "fa": "آزمون آزمایشی / مؤسسه آموزش", + "fr": "École préparatoire", + "gl": "Preparación para exames / Escola de titoría", + "hu": "Tesztpálya, tanulópálya", + "ja": "進学予備校(欧米)", + "ko": "학원", + "pl": "Szkoła korepetycji", + "pt-BR": "Escola de preparação para exames", + "pt": "Centro de explicações", + "sv": "Pluggskola", + "uk": "Підготовчий центр/Репетитор", + "vi": "Trường Luyện thi / Dạy Kèm", + "zh-TW": "補習班", + "mk": "Подготвително училиште", + "he": "לימודי נהיגה" + } + }, + "amenity/research_institute": { + "title": { + "C": "Research Institute Grounds", + "en": "Research Institute Grounds", + "cs": "prostor výzkumného ústavu", + "de": "Forschungseinrichtung", + "eo": "Esplorada instituto", + "es": "Terrenos del Instituto de Investigación", + "fa": "محدوده مؤسسه تحقیقاتی / پژوهشکده زمین‌شناسی", + "fi": "Tutkimuslaitos", + "gl": "Área de Instituto de Investigación", + "ja": "研究所", + "ko": "연구 기관 부지", + "no": "Forskningsinstitutt Grunn", + "pl": "Instytut badawczy", + "pt-BR": "Área do Instituto de Pesquisa", + "pt": "Instituto de pesquisa", + "uk": "Територія науково-дослідного інституту", + "zh-CN": "研究所场地", + "zh-TW": "研究機構場地", + "mk": "Истражувачки институт", + "he": "מתחם מכון מחקר" + } + }, + "amenity/social_centre": { + "title": { + "C": "Social Center", + "en": "Social Center", + "cs": "Sociální středisko", + "de": "Sozialzentrum", + "el": "Κοινωνικό Κέντρο", + "eo": "Centro de socio", + "es": "Centro social", + "et": "Sotsiaalkeskus", + "fa": "مرکز اجتماعی", + "fi": "Sosiaalikeskus", + "fr": "Centre social", + "gl": "Centro social", + "hu": "Szociális ház", + "it": "Centro attività sociali", + "ja": "社交センター", + "pl": "Centrum społecznościowe", + "pt-BR": "Centro social", + "pt": "Centro social", + "sr": "Дружтвени центар", + "sv": "Medborgarhus", + "uk": "Громадський центр", + "zh-TW": "社交中心", + "mk": "Друштвен дом", + "he": "מרכז חברתי", + "en-AU": "Social Centre" + } + }, + "amenity/toy_library": { + "title": { + "C": "Toy Library", + "en": "Toy Library", + "cs": "půjčovna hraček", + "de": "Spielzeugbibliothek", + "el": "Βιβλιοθήκη Παιγνίων", + "eo": "Ludil‑biblioteko", + "es": "Biblioteca de juguetes", + "fa": "قفسه اسباب‌بازی", + "fi": "Lelukirjasto", + "fr": "Ludothèque", + "gl": "Biblioteca de xoguetes", + "hu": "Játékkölcsönző", + "it": "Ludoteca", + "ja": "おもちゃ資料館", + "nl": "Spelotheek", + "no": "Lekebibliotek", + "pl": "Wypożyczalnia gier i zabawek", + "pt-BR": "Biblioteca de brinquedos", + "pt": "Brinquedoteca", + "sv": "Leksaksbibliotek", + "uk": "Прокат іграшок", + "vi": "Thư viện Đồ chơi", + "zh-TW": "玩具圖書館", + "mk": "Зајмување играчки", + "he": "ספריית צעצועים" + } + }, + "amenity/weighbridge": { + "title": { + "C": "Truck Scale", + "en": "Truck Scale", + "cs": "váha pro kamiony", + "da": "Brovægt", + "de": "Brückenwaage, LKW-Waage", + "eo": "Pesilo por aŭtomobiloj", + "es": "Báscula de camiones", + "fa": "باسکول کامیون", + "fi": "Rekkavaaka / rautatievaaka", + "fr": "pont bascule", + "gl": "Balanza de camións", + "hu": "Teherautó mérleg", + "ja": "トラックスケール", + "ko": "트럭 저울", + "no": "Lastebilvekt", + "pl": "Waga dla pojazdów", + "pt-BR": "Balança de caminhão", + "pt": "Balança rodoviária", + "sr": "Камионска вага", + "sv": "Lastbilsvåg", + "uk": "Автомобільні ваги", + "vi": "Trạm Cân Xe tải", + "zh-TW": "地磅", + "mk": "Мосна вага", + "he": "משקל משאיות" + } + }, + "amenity/give_box": { + "title": { + "C": "Free Box", + "en": "Free Box", + "cs": "Darovací box", + "de": "Schenkschrank/Tauschschrank", + "eo": "Kesto de senpaga interŝanĝo", + "es": "Caja libre", + "fa": "صندوق آزاد", + "gl": "Caixa libre", + "ja": "ギブボックス", + "pl": "Wystawka (wymiana używanych rzeczy)", + "pt-BR": "Caixa grátis", + "pt": "Caixa livre", + "uk": "Безкоштовні речі", + "vi": "Thùng Tặng/Lấy", + "zh-TW": "禮物盒", + "mk": "Даровница", + "he": "תיבת הענקה" + } + }, + "amenity/refugee_site": { + "title": { + "C": "Refugee Camp", + "en": "Refugee Camp", + "cs": "Uprchlický tábor", + "de": "Flüchtlingslager", + "el": "Δομή Προσφύγων", + "eo": "Kampadejo por rifuĝantoj", + "es": "Campamento de refugiados", + "fa": "اردوگاه پناهندگان", + "fi": "Pakolaisleiri", + "it": "Campo profughi", + "ja": "難民キャンプ", + "ko": "난민촌", + "pl": "Obóz uchodźców", + "pt-BR": "Campo de refugiados", + "pt": "Campo de refugiados", + "sr": "Избеглички камп", + "uk": "Табір біженців", + "vi": "Trại Tị nạn", + "zh-CN": "难民营", + "zh-TW": "難民營", + "mk": "Бегалски камп", + "he": "מחנה פליטים" + } + }, + "amenity/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaning Station", + "en": "Vacuum Cleaning Station", + "cs": "Vysavač", + "de": "Auto-Staubsauganlage", + "el": "Σταθμός Ηλεκτρικής Σκούπας", + "eo": "Polvosuĉilo", + "es": "Estación de limpieza con aspiradora", + "fa": "ایستگاه جاروبرقی", + "it": "Stazione di Aspirapolvere per Interni", + "ja": "ゴミ吸取機", + "pl": "Odkurzacz", + "pt-BR": "Estação de aspiração", + "pt": "Posto de aspiração", + "uk": "Стаціонарний пилотяг", + "vi": "Trạm Hút bụi", + "zh-CN": "真空清洁站", + "zh-TW": "吸塵器站", + "mk": "Постројка за правосмукање", + "he": "תחנת שאיבת אבק" + } + }, + "leisure/adult_gaming_centre": { + "title": { + "C": "Adult Gaming Center", + "en": "Adult Gaming Center", + "ast": "Centru de xuegos p'adultos", + "ca": "Centre d'oci adult", + "cs": "Herna (hrací automaty)", + "da": "Voksen spillecenter", + "de": "Spielothek für Erwachsene", + "el": "Κέντρο Παιχνιδιών Ενηλίκων", + "en-GB": "Adult Gaming Centre", + "eo": "Hazardludejo (enĵet-maŝinoj)", + "es": "Centro de juegos para adultos", + "fa": "مرکز بازی بزرگسالان", + "fi": "Uhkapelipelaamo", + "fr": "Jeux pour adultes", + "gl": "Centro recreativo para adultos", + "hu": "Felnőtt játékközpont", + "id": "Pusat permainan dewasa", + "is": "Fjárhættuspilasalur", + "it": "Sala da gioco", + "ja": "遊技場(成人向け)", + "ko": "성인용 게임방", + "lt": "Suaugusiųjų lošimų vieta", + "nl": "Speelzaal (met kansspelmachines)", + "no": "Spillekasino", + "pl": "Salon gier hazardowych", + "pt-BR": "Centro de Jogos para Adultos", + "pt": "Centro de jogos para adultos", + "ru": "Игровые автоматы (азартные, на деньги)", + "sk": "Výherné automaty", + "sl": "Igralnica za odrasle", + "sv": "Center för vuxenspel", + "tr": "Yetişkin Oyun Merkezi", + "uk": "Гральні автомати", + "vi": "Trung tâm Đánh bạc", + "zh-CN": "成人街机厅", + "zh-HK": "成人遊戲中心", + "zh-TW": "成人遊戲中心", + "mk": "Игротека за возрасни", + "he": "מרכז בידור למבוגרים", + "en-AU": "Adult Gaming Centre" + } + }, + "leisure/bowling_alley": { + "title": { + "C": "Bowling Alley", + "en": "Bowling Alley", + "ar": "بولينغ", + "ast": "Bolera americana", + "ca": "Bolera", + "cs": "Bowlingová dráha", + "da": "Bowlingbaner", + "de": "Bowlingbahn", + "el": "Διάδρομος Bowling", + "en-GB": "Bowling Alley", + "eo": "Kegloludejo", + "es": "Pista de bolos", + "et": "Boolingusaal", + "fa": "سالن بولینگ", + "fi": "Keilahalli", + "fr": "Bowling", + "gl": "Birlos", + "hr": "Kuglalište", + "hu": "Bowlingpálya", + "id": "Tempat Boling", + "is": "Keiluhöll", + "it": "Sala da Bowling", + "ja": "ボウリング場", + "ko": "볼링장", + "lv": "Boulinga Zāle", + "nl": "Bowlingbaan", + "no": "Bowlingsenter", + "pl": "Kręgielnia", + "pt-BR": "Pista de Boliche", + "pt": "Pista de bólingue", + "ro": "Alee de Bowling", + "ru": "Боулинг центр", + "sk": "Bowlingová hala", + "sl": "Kegljišče", + "sv": "Bowlinghall", + "tr": "Bowling Salonu", + "uk": "Боулінг", + "vi": "Khu Bowling", + "zh-CN": "保龄球馆", + "zh-HK": "保齡球場", + "zh-TW": "保齡球館", + "mk": "Кугларница", + "he": "אולם כדורת" + } + }, + "leisure/common": { + "title": { + "C": "Common", + "en": "Common", + "ar": "أرض مشترك ", + "ast": "Terrén comunitariu", + "bs": "Uobičajeno", + "ca": "Àrea comuna", + "cs": "Volně přístupný prostor", + "da": "Fælled", + "de": "Öffentliche Fläche, Allmende", + "el": "Κοινό", + "en-GB": "Common", + "eo": "Publika ripoza tereno", + "es": "Tierras comunes -Reino Unido-", + "fa": "زمین عمومی (معمولا در انگلستان)", + "fi": "Yleinen", + "fr": "Terrain communal", + "gl": "Terreo comunal", + "hr": "Zelena površina po kojoj se može hodati - u UK", + "hu": "Szabadidős tevékenységre használható közös terület (Nagy-Britannia)", + "id": "Perintah", + "is": "Almenningur", + "it": "Luogo pubblico", + "ja": "共有地", + "ko": "일반", + "lt": "Bendros ganyklos", + "nl": "Gemene weide", + "no": "Fellesområde", + "pl": "Teren rekreacyjny ogólnodostępny", + "pt-BR": "Área Comunitária", + "pt": "Terrenos comunitários", + "ro": "Comun", + "ru": "Общественные места для прогулок, без специфики", + "sk": "Verejné priestranstvo", + "sl": "Javni prostor", + "sr": "Јавно добро", + "sv": "Allmänning", + "ta": "பொதுவான", + "tr": "Piknik Alanı", + "uk": "Громада", + "vi": "Đất công", + "yue": "公地", + "zh-CN": "公共用地", + "zh-HK": "公共用地", + "zh-TW": "公共用地", + "mk": "Јавно зеленило", + "he": "אזור משותף" + } + }, + "leisure/dog_park": { + "title": { + "C": "Dog Park", + "en": "Dog Park", + "af": "Hondepark", + "ar": "حديقة كلاب", + "ast": "Parque pa perros", + "bs": "Igralište za pse", + "ca": "Parc Caní", + "cs": "Psí park", + "da": "Hundepark", + "de": "Hundepark", + "el": "Πάρκο Σκύλων", + "en-GB": "Dog Park", + "eo": "Hund-parko", + "es": "Parque canino", + "et": "Koerapark", + "fa": "پارک سگ", + "fi": "Koirapuisto", + "fr": "Parc canin", + "gl": "Parque para cans", + "hr": "Park za pse", + "hu": "Kutyafuttató", + "id": "Taman Anjing", + "is": "Hundagarður", + "it": "Area per cani", + "ja": "ドッグパーク", + "ko": "개 공원", + "lt": "Šunų parkas", + "lv": "Suņu parks", + "nl": "Hondenpark", + "no": "Hundepark", + "pl": "Wybieg dla psów", + "pt-BR": "Cachorródromo", + "pt": "Parque para cães", + "ro": "Parc de Câini", + "ru": "Площадка для выгула собак", + "sk": "Psí park", + "sl": "Pasji park", + "sr": "Парк за псе", + "sv": "Hundpark", + "tr": "Köpek Parkı", + "uk": "Парк для собак", + "vi": "Công viên dành cho Chó", + "yue": "狗公園", + "zh-CN": "狗公园", + "zh-HK": "狗公園", + "zh-TW": "狗公園", + "mk": "Кучешки парк", + "he": "פארק כלבים" + } + }, + "leisure/firepit": { + "title": { + "C": "Fire Pit", + "en": "Fire Pit", + "ar": "حفرة نار", + "cs": "ohniště", + "de": "Feuerstelle", + "en-GB": "Fire Pit", + "eo": "Lignofajrejo", + "es": "Pozo de fuego", + "fa": "گودال آتش", + "fi": "Tulentekopaikka", + "fr": "Emplacement pour feu", + "gl": "Pozo de lume", + "ja": "焚き火場", + "ko": "불구덩이", + "pl": "Miejsce na ognisko", + "pt-BR": "Fogueira", + "pt": "Espaço para fogueira", + "sk": "Ohnisko", + "uk": "Вогнище", + "zh-CN": "火坑", + "zh-TW": "篝火", + "mk": "Огниште", + "he": "שוחה למדורה" + } + }, + "leisure/garden": { + "title": { + "C": "Garden", + "en": "Garden", + "af": "Tuin", + "ar": "حديقة", + "ast": "Xardín", + "bn": "বাগান", + "bs": "Vrt", + "ca": "Jardí", + "cs": "Zahrada", + "da": "Have", + "de": "Garten", + "el": "Κήπος", + "en-GB": "Garden", + "eo": "Ĝardeno", + "es": "Jardín", + "et": "Aed", + "fa": "باغ", + "fi": "Puutarha", + "fr": "Jardin", + "gl": "Xardín", + "hr": "Vrt", + "hu": "Kert", + "id": "Kebun", + "is": "Garður", + "it": "Giardino", + "ja": "庭園", + "kn": "ಕೈತೋಟ", + "ko": "정원", + "lt": "Sodas", + "lv": "Dārzs", + "nl": "Tuin", + "no": "Hage", + "pl": "Ogród", + "pt-BR": "Jardim / Horta", + "pt": "Jardim", + "ro": "Grădină", + "ru": "Сад", + "sk": "Záhrada", + "sl": "Vrt", + "sr": "Башта", + "sv": "Trädgård", + "ta": "தோட்டம்", + "te": "తోట", + "tr": "Bahçe", + "uk": "Сад", + "vi": "Vườn", + "yue": "花園", + "zh-CN": "花园", + "zh-HK": "花園", + "zh-TW": "花園", + "zh": "花园", + "mk": "Градина", + "bg": "Градина", + "he": "גן", + "ckb": "باخچە" + } + }, + "leisure/golf_course": { + "title": { + "C": "Golf Course", + "en": "Golf Course", + "af": "Golfbaan", + "ar": "معلب جولف", + "ast": "Campu de golf", + "bn": "গল্ফ মাঠ", + "bs": "Golf teren", + "ca": "Camp de golf", + "cs": "Golfové hřiště", + "da": "Golfbane", + "de": "Golfplatz", + "el": "Γήπεδο Γκολφ", + "en-GB": "Golf Course", + "eo": "Golfludejo", + "es": "Campo de golf", + "et": "Golfiväljak", + "fa": "زمین گلف", + "fi": "Golfkenttä", + "fr": "Parcours de golf", + "gl": "Campo de golf", + "hr": "Igralište za golf", + "hu": "Golfpálya", + "id": "Lapangan Golf", + "is": "Golfvöllur", + "it": "Campo da Golf", + "ja": "ゴルフコース", + "ko": "골프장", + "lt": "Golfo aikštynas", + "lv": "Golfa laukums", + "nl": "Golfbaan", + "no": "Golfbane", + "pl": "Pole golfowe", + "pt-BR": "Campo de Golfe", + "pt": "Campo de golfe", + "ro": "Curs de Golf", + "ru": "Площадка для гольфа", + "sk": "Golfové ihrisko", + "sl": "Golfišče", + "sr": "Голф терен", + "sv": "Golfbana", + "ta": "கோல்ஃப் கோர்ஸ்", + "tr": "Golf Sahası", + "uk": "Поле для гольфу", + "vi": "Sân Golf", + "yue": "哥夫球場", + "zh-CN": "高尔夫球场", + "zh-HK": "高爾夫球場", + "zh-TW": "高爾夫球場", + "zh": "高尔夫球场", + "mk": "Терен за голф", + "bg": "Голф игрище", + "he": "מגרש גולף" + } + }, + "leisure/ice_rink": { + "title": { + "C": "Ice Rink", + "en": "Ice Rink", + "ar": "حلبة تزلج", + "ast": "Pista de xelu", + "ca": "Pista de gel", + "cs": "Kluziště", + "da": "Skøjtebane", + "de": "Eislaufbahn", + "el": "Παγοδρόμιο", + "en-GB": "Ice Rink", + "eo": "Glitkurejo", + "es": "Pista de hielo", + "et": "Uisuväljak", + "fa": "یخ بازی", + "fi": "Luistelukenttä", + "fr": "Patinoire", + "gl": "Pista de xeo", + "hr": "Klizalište", + "hu": "Jégpálya", + "id": "Arena Seluncur Es", + "is": "Skautasvell", + "it": "Pista di Ghiaccio", + "ja": "アイススケート場", + "ko": "아이스 링크", + "lt": "Čiuožykla", + "lv": "Ledus halle", + "nl": "Schaatsbaan", + "no": "Skøytebane", + "pl": "Lodowisko", + "pt-BR": "Pista de Patinação no Gelo", + "pt": "Rinque de gelo", + "ru": "Каток", + "sk": "Klzisko", + "sl": "Drsališče", + "sr": "Клизалиште", + "sv": "Skridskobana ", + "tr": "Buz Pateni", + "uk": "Каток", + "vi": "Sân Băng", + "zh-CN": "滑冰场", + "zh-HK": "溜冰場", + "zh-TW": "溜冰場", + "mk": "Лизгалиште", + "he": "החלקרח" + } + }, + "leisure/marina": { + "title": { + "C": "Marina", + "en": "Marina", + "af": "Vasmeerplek", + "ar": "مرسى السفن", + "ast": "Puertu deportivu", + "bs": "Marina", + "ca": "Port esportiu", + "cs": "Přístaviště", + "da": "Lystbådehavn", + "de": "Yachthafen", + "el": "Μαρίνα", + "en-GB": "Marina", + "eo": "Jaĥt-haveno", + "es": "Puerto deportivo", + "et": "Väikesadam", + "fa": "تفرجگاه ساحلی", + "fi": "Venesatama", + "fr": "Marina", + "gl": "Porto deportivo", + "hr": "Marina", + "hu": "Kishajókikötő", + "id": "Marina", + "is": "Bátahöfn", + "it": "Marina", + "ja": "マリーナ", + "ko": "마리나", + "lt": "Prieplauka", + "nl": "Jachthaven", + "no": "Marina", + "pl": "Przystań", + "pt-BR": "Marina", + "pt": "Marina", + "ru": "Стоянка для яхт", + "sk": "Lodenica", + "sl": "Marina", + "sr": "Марина", + "sv": "Marina", + "ta": "மரினா", + "tr": "Yat Limanı", + "uk": "Пристань для яхт", + "vi": "Bến tàu", + "yue": "遊艇碼頭", + "zh-CN": "游艇码头", + "zh-HK": "遊艇碼頭", + "zh-TW": "遊艇碼頭", + "zh": "码头", + "mk": "Сидриште", + "bg": "Яхт клуб", + "dv": "ޔޮޓު މެރީނާ", + "he": "מרינה", + "so": "Deked" + } + }, + "leisure/nature_reserve": { + "title": { + "C": "Nature Reserve", + "en": "Nature Reserve", + "ar": "محمية طبيعية", + "ast": "Reserva natural", + "ca": "Reserva Natural", + "cs": "Přírodní rezervace", + "da": "Naturreservat", + "de": "Naturschutzgebiet", + "el": "Προστατευόμενος Βιότοπος", + "en-GB": "Nature Reserve", + "eo": "Natur-rezervejo", + "es": "Reserva natural", + "et": "Looduskaitseala", + "fa": "ذخیره‌گاه طبیعی", + "fi": "Luonnonsuojelualue", + "fr": "Réserve naturelle", + "gl": "Reserva natural", + "hr": "Prirodni rezervat", + "hu": "Természetvédelmi terület", + "id": "Cagar Alam", + "is": "Friðland", + "it": "Riserva naturale", + "ja": "自然保護区", + "ko": "자연 보호 구역", + "lt": "Draustinis", + "nl": "Natuurreservaat", + "no": "Naturreservat", + "pl": "Rezerwat przyrody", + "pt-BR": "Reserva natural", + "pt": "Reserva natural", + "ro": "Rezervat Natural", + "ru": "Заповедник", + "sk": "Prírodná rezervácia", + "sl": "Naravni rezervat", + "sr": "Резерват природе", + "sv": "Naturreservat", + "tr": "Doğal Koruma Alanı", + "uk": "Заповідник", + "vi": "Khu Bảo tồn Thiên nhiên", + "zh-CN": "自然保护区", + "zh-HK": "自然保護區", + "zh-TW": "自然保留區", + "mk": "Природен резерват", + "he": "שמורת טבע" + } + }, + "leisure/park": { + "title": { + "C": "Park", + "en": "Park", + "af": "Park", + "ar": "منتزه", + "ast": "Parque", + "bn": "উদ্যান", + "bs": "Park", + "ca": "Parc", + "cs": "Park", + "da": "Park", + "de": "Park", + "el": "Πάρκο", + "en-GB": "Park", + "eo": "Parko", + "es": "Parque / Plaza verde", + "et": "Park", + "fa": "پارک", + "fi": "Puisto", + "fr": "Parc", + "gl": "Parque", + "hr": "Park", + "hu": "Park", + "id": "Taman", + "is": "Garður", + "it": "Parco", + "ja": "公園", + "kn": "ಉದ್ಯಾನವನ", + "ko": "공원", + "lt": "Parkas", + "lv": "Parks", + "nl": "Park", + "no": "Park", + "pl": "Park rekreacyjno-wypoczynkowy", + "pt-BR": "Parque ou Praça", + "pt": "Parque público", + "ro": "Parc", + "ru": "Парк отдыха", + "sk": "Park", + "sl": "Park", + "sr": "Парк", + "sv": "Park", + "ta": "பூங்கா", + "te": "పార్కు", + "tr": "Park", + "uk": "Парк", + "vi": "Công viên", + "yue": "園", + "zh-CN": "公园", + "zh-HK": "公園", + "zh-TW": "公園", + "zh": "公园", + "mk": "Парк", + "bg": "Парк", + "dv": "ޕާރކުތައް", + "he": "פארק", + "so": "Jardiino" + } + }, + "leisure/picnic_table": { + "title": { + "C": "Picnic Table", + "en": "Picnic Table", + "ar": "طاولة النزهة", + "ast": "Mesa de merenderu", + "ca": "Taula de picnic", + "cs": "Stůl na piknik", + "da": "Picnicbord", + "de": "Picknicktisch", + "el": "Τραπέζι Πικ Νικ", + "en-GB": "Picnic Table", + "eo": "Piknika tablo", + "es": "Mesa de picnic", + "et": "Piknikulaud", + "fa": "میز پیکنیک", + "fi": "Piknikpöytä", + "fr": "Table de pique-nique", + "gl": "Mesa de pícnic", + "hr": "Stol za piknik", + "hu": "Piknikasztal", + "id": "Meja Piknik", + "is": "Nestisborð", + "it": "Tavolo da picnic", + "ja": "ピクニックテーブル", + "ko": "피크닉 테이블", + "lt": "Pikniko stalas", + "lv": "Piknika galds", + "nl": "Picknicktafel", + "no": "Piknikbord", + "pl": "Stół piknikowy", + "pt-BR": "Mesa de piquenique", + "pt": "Mesa de piquenique", + "ro": "Masă de Picnic", + "ru": "Стол для пикника", + "sk": "Piknikový stôl", + "sl": "Piknik miza", + "sr": "Сто за излет", + "sv": "Picknickbord", + "tr": "Piknik Masası", + "uk": "Місце для пікніка", + "vi": "Bàn ăn Ngoài trời", + "zh-CN": "野餐桌", + "zh-HK": "野餐桌", + "zh-TW": "野餐桌", + "mk": "Излетничка маса", + "he": "שולחן פיקניק" + } + }, + "leisure/pitch": { + "title": { + "C": "Sport Pitch", + "en": "Sport Pitch", + "af": "Sport Veld", + "ar": "ملعب رياضي", + "ast": "Campu deportivu", + "bs": "Sportsko igralište", + "ca": "Camp d'esports", + "cs": "Hřiště", + "da": "Sportsbane", + "de": "Sportplatz", + "el": "Αγωνιστικός Χώρος", + "en-GB": "Sport Pitch", + "eo": "Ludkampo", + "es": "Cancha de juego", + "et": "Spordiväljak", + "fa": "زمین ورزشی", + "fi": "Urheilukenttä", + "fr": "Terrain de sport", + "gl": "Cancha deportiva", + "hr": "Sportski teren", + "hu": "Sportpálya", + "id": "Lapangan Olahraga", + "is": "Íþróttavöllur", + "it": "Campo da gioco", + "ja": "スポーツ競技場", + "ko": "운동장", + "lt": "Sporto aikštelė", + "lv": "Sporta laukums", + "nl": "Sportveld", + "no": "Idrettsbane", + "pl": "Boisko", + "pt-BR": "Quadra ou Campo Esportivo", + "pt": "Campo de desporto", + "ro": "Teren de Sport", + "ru": "Спортивная площадка", + "sk": "Športový kurt", + "sl": "Športno igrišče", + "sr": "Спортско игралиште", + "sv": "Idrottsplats", + "tr": "Spor Sahası", + "uk": "Спортивний майданчик", + "vi": "Sân Thể thao", + "yue": "運動場", + "zh-CN": "运动场地", + "zh-HK": "運動場地", + "zh-TW": "運動場地", + "zh": "运动场所", + "mk": "Спортско игралиште", + "bg": "Спортно игрище", + "he": "מגרש ספורט" + } + }, + "leisure/playground": { + "title": { + "C": "Playground", + "en": "Playground", + "af": "Speelpark", + "ar": "ساحة ألعاب للأطفال", + "ast": "Xuegos infantiles", + "bn": "খেলার মাঠ", + "bs": "Igralište", + "ca": "Zona de jocs infantils", + "cs": "Dětské hřiště", + "da": "Legeplads", + "de": "Spielplatz", + "el": "Παιδική Χαρά", + "en-GB": "Playground", + "eo": "Infana ludejo", + "es": "Patio de juegos", + "et": "Mänguväljak", + "fa": "زمین بازی", + "fi": "Leikkipuisto", + "fr": "Jeux pour enfants", + "gl": "Parque infantil", + "hr": "Igralište", + "hu": "Játszótér", + "id": "Lapangan Bermain", + "is": "Leikvöllur", + "it": "Parco giochi", + "ja": "児童公園", + "ko": "놀이터", + "lt": "Žaidimų aikštelė", + "lv": "Spēļlaukums", + "nl": "Speeltuin", + "no": "Lekeplass", + "pl": "Plac zabaw", + "pt-BR": "Parquinho", + "pt": "Parque infantil", + "ro": "Loc de Joacă", + "ru": "Детская площадка", + "sk": "Ihrisko pre deti", + "sl": "Otroško igrišče", + "sr": "Игралиште", + "sv": "Lekplats", + "ta": "விளையாட்டுத் திடல்", + "te": "ఆటమైదానం", + "tr": "Çocuk Parkı", + "uk": "Ігровий майданчик", + "vi": "Sân chơi", + "yue": "遊樂場", + "zh-CN": "儿童游乐场", + "zh-HK": "遊樂場", + "zh-TW": "遊樂場", + "zh": "游乐场", + "mk": "Игралиште", + "bg": "Детска площадка", + "he": "גן שעשועים", + "eu": "Jolastoki" + } + }, + "leisure/slipway": { + "title": { + "C": "Slipway", + "en": "Slipway", + "af": "Inglipbaan", + "ar": "مزلقة سفن", + "ast": "Rampla de botadura", + "bs": "Navoz", + "ca": "Pendent per a embarcacions", + "cs": "Vodní skluz", + "da": "Bådrampe", + "de": "Gleitbahn", + "el": "Γλίστρα", + "en-GB": "Slipway", + "eo": "Ŝipglitejo", + "es": "Rampa para botes", + "et": "Slipp", + "fa": "قایق ساکن", + "fi": "Veneramppi", + "fr": "Cale de mise à l'eau", + "gl": "Rampla para embarcacións", + "hr": "Navoz za brodove", + "hu": "Sólya", + "is": "Dráttarbraut", + "it": "Scivolo per barche", + "ja": "進水路", + "ko": "선가대", + "nl": "Botenhelling", + "no": "Båtslipp", + "pl": "Pochylnia okrętowa", + "pt-BR": "Rampa Náutica", + "pt": "Rampa para barcos", + "ru": "Стапель", + "sk": "Spúšťanie lodí", + "sl": "Rampa", + "sr": "Навоз", + "sv": "Stapelbädd", + "tr": "Gemi Kızağı", + "uk": "Стапель", + "vi": "Đường Trượt tàu", + "yue": "船排", + "zh-CN": "船台", + "zh-HK": "船台", + "zh-TW": "船架滑道", + "zh": "船架滑道", + "mk": "Испуст за пловила", + "bg": "Хелинг", + "he": "ממשה" + } + }, + "leisure/stadium": { + "title": { + "C": "Stadium", + "en": "Stadium", + "af": "Stadium", + "ar": "استاد رياضي", + "ast": "Estadiu", + "bn": "স্টেডিয়াম", + "bs": "Stadion", + "ca": "Estadi", + "cs": "Stadion", + "da": "Stadion", + "de": "Stadion", + "el": "Στάδιο", + "en-GB": "Stadium", + "eo": "Stadiono", + "es": "Estadio", + "et": "Staadion", + "fa": "ورزشگاه", + "fi": "Stadion", + "fr": "Stade", + "gl": "Estadio", + "hr": "Stadion", + "hu": "Stadion", + "id": "Stadion", + "is": "Leikvangur", + "it": "Stadio", + "ja": "スタジアム", + "kn": "ಕ್ರೀಡಾಂಗಣ", + "ko": "경기장", + "lt": "Stadionas", + "lv": "Stadions", + "nl": "Stadion", + "no": "Stadion", + "pl": "Stadion", + "pt-BR": "Estádio", + "pt": "Estádio", + "ro": "Stadion", + "ru": "Стадион (территория)", + "sk": "Štadión", + "sl": "Stadion", + "sr": "Стадион", + "sv": "Stadium", + "ta": "விளையாட்டு அரங்கம்", + "tr": "Stadyum", + "uk": "Стадіон", + "vi": "Sân vận động", + "yue": "大體育館", + "zh-CN": "体育场", + "zh-HK": "體育館", + "zh-TW": "體育場", + "zh": "体育场", + "mk": "Стадион", + "bg": "Стадион", + "dv": "ސްޓޭޑިއަމް", + "he": "אצטדיון", + "eu": "Estadio", + "so": "Garoon" + } + }, + "leisure/swimming_pool": { + "title": { + "C": "Swimming Pool", + "en": "Swimming Pool", + "af": "Swembad", + "ar": "حوض سباحة", + "ast": "Piscina", + "bn": "সুইমিং পুল", + "bs": "Bazen", + "ca": "Piscina", + "cs": "Plavecký bazén", + "da": "Svømmebassin", + "de": "Schwimmbecken", + "el": "Πισίνα", + "en-GB": "Swimming Pool", + "eo": "Naĝejo (akvo)", + "es": "Piscina", + "et": "Ujumisbassein", + "fa": "استخر شنا", + "fi": "Uimahalli tai -allas", + "fr": "Piscine", + "gl": "Piscina", + "hr": "Sportski bazen", + "hu": "Úszómedence", + "id": "Kolam Renang", + "is": "Sundlaug", + "it": "Piscina", + "ja": "遊泳プール(屋外)", + "kn": "ಈಜುಕೊಳ", + "ko": "수영장", + "lt": "Baseinas", + "lv": "Peldbaseins", + "nl": "Zwembad", + "no": "Svømmebasseng", + "pl": "Basen", + "pt-BR": "Piscina", + "pt": "Piscina", + "ro": "Piscină", + "ru": "Бассейн (его водная поверхность)", + "sk": "Plaváreň", + "sl": "Plavalni bazen", + "sr": "Базен", + "sv": "Simbassäng", + "ta": "நீச்சல் குளம்", + "te": "ఈత కొలను", + "tr": "Yüzme Havuzu", + "uk": "Басейн", + "vi": "Hồ Bơi", + "yue": "游水池", + "zh-CN": "游泳池", + "zh-HK": "游泳池", + "zh-TW": "游泳池", + "zh": "游泳池", + "mk": "Базен", + "bg": "Плувен басейн", + "he": "בריכת שחייה", + "eu": "Igerileku" + } + }, + "leisure/track": { + "title": { + "C": "Racetrack (Non-Motorsport)", + "en": "Racetrack (Non-Motorsport)", + "ar": "مضمار سباق", + "ast": "Circuitu (Deportes sin motor)", + "cs": "Závodní dráha (ne pro motorsport)", + "da": "Løbsbane (Ej motorsport)", + "de": "Bahn (Nicht Motorsport)", + "el": "Αγωνιστική Πίστα (Για Μη Μηχανοκίνηση)", + "en-GB": "Racetrack (Non-Motorsport)", + "eo": "Kurejo/biciklejo/konkursejo (nemotora)", + "es": "Pista de carrera (no motorizada)", + "et": "Staadion", + "fi": "Kilparata (ei moottoriurheilu)", + "fr": "Piste de course (hors sports mécaniques)", + "gl": "Pista de competición (non motorizada)", + "hu": "Versenypálya (nem motorsport)", + "is": "Keppnisbraut (ekki mótorsport)", + "it": "Pista (sport non motoristici)", + "ja": "競技トラック(モータースポーツ以外)", + "ko": "경주로(비모터스포츠)", + "nl": "Racepiste (niet-motorsport)", + "pl": "Tor wyścigowy (niemotorowy)", + "pt-BR": "Pista para esportes não-motorizados", + "pt": "Pista de desportos não motorizados", + "ru": "Гоночный трек (не автоспорт)", + "sk": "Pretekárska dráha (nemotorové športy)", + "sl": "Tekmovalna steza (neasfaltirana)", + "sv": "Tävlingsbana (Icke motorsport)", + "tr": "Yarış Pisti (motor spor hariç)", + "uk": "Гоночний трек (не мотоспорт)", + "vi": "Đường Đua (Không phải Đua Xe)", + "zh-CN": "赛道(非机动竞速项目)", + "zh-HK": "賽道(非賽車)", + "zh-TW": "賽道(非賽車運動)", + "mk": "Тркалиште (немоторно)", + "he": "מסלול מרוצים (לבלתי ממונעים)" + } + }, + "leisure/bird_hide": { + "title": { + "C": "Bird Hide", + "en": "Bird Hide", + "ast": "Observatoriu d'aves", + "ca": "Observatori d'ocells", + "cs": "Pozorovatelna zvěře", + "da": "Fugletårn", + "de": "Vogelbeobachtungsturm", + "el": "Κρυψώνα Κυνηγών Πτηνών", + "en-GB": "Bird Hide", + "eo": "Bird-observejo", + "es": "Observatorio de aves", + "fa": "مکان تماشای پرندگان", + "fi": "Lintutorni", + "fr": "Observatoire ornithologique", + "gl": "Observatorio de aves", + "hu": "Madárles", + "is": "Fuglaskoðunarskýli", + "it": "Osservazione uccelli", + "ja": "野鳥観察舎", + "ko": "탐조대", + "nl": "Vogelkijkscherm of -hut", + "pl": "Czatownia ornitologiczna", + "pt-BR": "Local de observação de pássaros", + "pt": "Posto de observação de aves", + "ru": "Пункт наблюдения за птицами", + "sk": "Pozorovateľňa vtáctva", + "sl": "Opazovalnica", + "sv": "Torn/gömsle för fågelskådning", + "tr": "Vahşi Yaşam Gözetleme Kulesi", + "uk": "Пункт спостереження", + "vi": "Căn nhà Quan sát Chim", + "zh-CN": "观鸟点", + "zh-HK": "觀鳥屋", + "zh-TW": "鳥類棲息處", + "mk": "Птицонабљудувачница", + "he": "מסתור צפרות" + } + }, + "leisure/miniature_golf": { + "title": { + "C": "Miniature Golf", + "en": "Miniature Golf", + "ar": "ملعب الجولف المصغرة", + "ast": "Minigolf", + "ca": "Golf en miniatura", + "cs": "Minigolf", + "da": "Minigolf", + "de": "Minigolf", + "el": "Μίνι Γκολφ", + "en-GB": "Miniature Golf", + "eo": "Minigolfludejo", + "es": "Mini golf", + "et": "Minatuurgolf", + "fa": "گلف مینیاتوری", + "fi": "Minigolf", + "fr": "Mini-golf", + "gl": "Minigolf", + "hu": "Minigolf", + "is": "Mínígolf", + "it": "Minigolf", + "ja": "ミニゴルフ", + "ko": "미니 골프", + "lt": "Minigolfas", + "nl": "Minigolf", + "no": "Minigolf", + "pl": "Minigolf", + "pt-BR": "Campo de Minigolfe", + "pt": "Campo de minigolfe", + "ro": "Minigolf", + "ru": "Мини-гольф", + "sk": "Miniatúrny golf", + "sl": "Minigolf", + "sr": "Мини-голф", + "sv": "Minigolf", + "tr": "Mini Golf", + "uk": "Міні-гольф", + "vi": "Sân Golf Mini", + "zh-CN": "迷你高尔夫", + "zh-HK": "迷你哥爾夫", + "zh-TW": "迷你高爾夫", + "mk": "Миниголф", + "he": "מיני-גולף" + } + }, + "leisure/sports_centre": { + "title": { + "C": "Sports Center / Complex", + "en": "Sports Center / Complex", + "ar": "مركز رياضي", + "ast": "Centru / Complexu deportivu", + "ca": "Complex esportiu", + "cs": "Sportovní centrum", + "da": "Sportcenter / Kompleks", + "de": "Sportzentrum / -komplex", + "el": "Αθλητικό Κέντρο/ Συγκρότημα", + "en-GB": "Sports Centre / Complex", + "eo": "Sporta centro", + "es": "Complejo deportivo", + "et": "Spordikeskus", + "fa": "مجتمع / مرکز ورزشی", + "fi": "Liikuntakeskus", + "fr": "Centre sportif", + "gl": "Complexo deportivo", + "hu": "Sportközpont / komplexum", + "is": "Íþróttamiðstöð", + "it": "Complesso / Centro Sportivo", + "ja": "スポーツセンター/複合施設", + "ko": "스포츠 센터 / 단지", + "lv": "Sporta Centrs / Komplekss", + "nl": "Sportcentrum of -complex", + "pl": "Centrum sportowe", + "pt-BR": "Centro Esportivo / Clube", + "pt": "Complexo desportivo", + "ro": "Centru / Complex de Sport", + "ru": "Спортивный центр/комплекс", + "sl": "Športni center / kompleks", + "sr": "Спортски центар / Комплекс", + "sv": "Sportcenter / -anläggning", + "tr": "Spor Merkezi", + "uk": "Спортивний центр/комплекс", + "vi": "Trung tâm Thể thao", + "zh-CN": "体育中心/综合体育场", + "zh-HK": "體育中心 / 體育館", + "zh-TW": "體育中心/設施", + "mk": "Спортски центар / комплекс", + "dv": "ކުުޅިވަރު މަރުކަޒު", + "he": "מרכז ספורט", + "eu": "Kiroldegia/ gunea", + "so": "Xarunta Cayaaraha", + "en-AU": "Sports Centre / Complex" + } + }, + "leisure/water_park": { + "title": { + "C": "Water Park", + "en": "Water Park", + "ar": "ملاهي مائية", + "ast": "Parque acuáticu", + "ca": "Parc Aquàtic", + "cs": "Akvapark", + "da": "Vandland", + "de": "Erlebnisbad", + "el": "Νεροτσουλήθρες", + "en-GB": "Water Park", + "eo": "Akvoparko", + "es": "Parque acuático", + "et": "Veepark", + "fa": "پارک آبی", + "fi": "Vesipuisto", + "fr": "Parc à thème aquatique", + "gl": "Parque acuático", + "hr": "Vodeni park", + "hu": "Élményfürdő", + "is": "Vatnagarður", + "it": "Parco acquatico", + "ja": "ウォーターパーク", + "ko": "워터파크", + "lt": "Vandens parkas", + "lv": "Akvaparks", + "nl": "Waterpretpark", + "no": "Utendørs badeland", + "pl": "Park wodny", + "pt-BR": "Parque Aquático", + "pt": "Parque aquático", + "ro": "Parc Acvatic", + "ru": "Аквапарк", + "sk": "Vodný park", + "sl": "Vodni park", + "sr": "Водени парк", + "sv": "Äventyrsbad / Vattenpark", + "ta": "தண்ணீர் பூங்கா", + "tr": "Su Parkı", + "uk": "Аквапарк", + "vi": "Công viên Nước", + "zh-CN": "水上乐园", + "zh-HK": "水上樂園", + "zh-TW": "水上樂園", + "mk": "Воден парк", + "he": "פארק מים", + "eu": "Ur-parkea" + } + }, + "leisure/dance": { + "title": { + "C": "Dance School", + "en": "Dance Hall", + "ar": "قاعة الرقص", + "ast": "Salón de baille", + "ca": "Pista de ball", + "cs": "Tančírna", + "da": "Dansehal", + "de": "Tanzsaal", + "el": "Αίθουσα Xορού", + "en-GB": "Dance Hall", + "eo": "Dancejo", + "es": "Salón de baile", + "et": "Tantsusaal", + "fa": "سالن رقص", + "fi": "Tanssipaikka", + "fr": "Salle de danse", + "gl": "Sala de baile", + "hu": "Táncterem", + "is": "Danssalur", + "it": "Sala da ballo", + "ja": "ダンスホール", + "ko": "댄스 홀", + "lt": "Šokių salė", + "lv": "Deju zāle", + "nl": "Danszaal", + "pl": "Sala taneczna", + "pt-BR": "Danceteria", + "pt": "Salão de dança", + "ro": "Sală de Dans", + "ru": "Танцевальный зал", + "sk": "Tanečná hala", + "sl": "Plesna dvorana", + "sr": "Плесна сала", + "sv": "Dansbana", + "tr": "Dans Salonu", + "uk": "Зала для танців", + "vi": "Phòng Khiêu vũ", + "zh-CN": "舞厅", + "zh-HK": "舞廳", + "zh-TW": "舞廳", + "mk": "Сала за игранки", + "he": "היכל ריקודים", + "ckb": "هۆڵی سەماکردن" + } + }, + "leisure/fitness_centre": { + "title": { + "C": "Gym / Fitness Center", + "en": "Gym / Fitness Center", + "ar": "مركز اللياقة البدنية", + "ast": "Ximnasiu / Centru de fitness", + "ca": "Gimnàs / Centre de Fitness", + "cs": "Tělocvična / Fitness centrum", + "da": "Gym / Fitnesscenter", + "de": "Fitness-Studio", + "el": "Γυμναστήριο", + "en-GB": "Gym / Fitness Centre", + "eo": "Ripoz-gimnastika centro", + "es": "Gimnasio", + "fa": "باشگاه تناسب اندام", + "fi": "Kuntosali / fitness-keskus", + "fr": "Centre de fitness / gym", + "gl": "Ximnasio", + "hr": "Zatvoreni prostor za vježbanje", + "hu": "Edzőterem / Fitneszklub", + "is": "Líkamsræktarmiðstöð", + "it": "Palestra / Centro Fitness", + "ja": "ジム/フィットネスセンター", + "ko": "체육관 / 피트니스 센터", + "lv": "Sportazāle / Fitnesa centrs", + "nl": "Fitnesscentrum", + "no": "Treningssenter", + "pl": "Siłownia / klub fitness", + "pt-BR": "Academia", + "pt": "Ginásio", + "ro": "Centru Fitness", + "ru": "Спортзал, фитнес-центр", + "sl": "Telovadnica / Fitness", + "sr": "Теретана / Фитнес центар", + "sv": "Gym / Fitnesscenter", + "tr": "Spor Salonu", + "uk": "Зал/Фітнес центр", + "vi": "Trung tâm Thể dục", + "zh-CN": "健身房/健身中心", + "zh-HK": "體育館 / 健體中心", + "zh-TW": "健身房/健身中心", + "mk": "Вежбалница", + "he": "מכון כושר", + "en-AU": "Gym / Fitness Centre" + } + }, + "leisure/fitness_station": { + "title": { + "C": "Outdoor Fitness Station", + "en": "Outdoor Fitness Station", + "ar": "محطة اللياقة البدنية في الهواء الطلق", + "ast": "Centru de fitness albentestate", + "ca": "Instal·lació exterior de Fitness", + "cs": "Venkovní tělocvična", + "da": "Udendørs fitnessplads", + "de": "Freiluft-Fitness-Station", + "el": "Υπαίθριο Γυμναστήριο", + "en-GB": "Outdoor Fitness Station", + "eo": "Ekzerc-parko (eksterdoma)", + "es": "Estación de gimnasia al aire libre", + "fa": "ایستگاه ورزشی در فضای باز", + "fi": "Ulkokuntosali", + "fr": "Fitness en extérieur", + "gl": "Estación de ximnasia ao aire libre", + "hr": "Vanjski prostor za vježbanje", + "hu": "Fitneszpark", + "is": "Líkamsþjálfunarstöð utandyra", + "it": "Palestra a cielo aperto", + "ja": "屋外トレーニング場", + "ko": "야외 신체단련소", + "lv": "Brīvdabas fitnesa vieta", + "nl": "Buitenshuis fitness-station", + "pl": "Siłownia zewnętrzna ", + "pt-BR": "Equipamento de Exercícios ao Ar Livre", + "pt": "Ginásio ao ar livre", + "ro": "Stație de Fitness în Aer Liber", + "ru": "Спортплощадка — тренажёры, турник, брусья", + "sl": "Telovadna orodja na prostem", + "sv": "Utomhusgym", + "tr": "Açıkhava Spor Yeri", + "uk": "Тренажери на вулиці", + "vi": "Trạm Thể dục", + "zh-CN": "户外健身站", + "zh-HK": "戶外健體站", + "zh-TW": "戶外健身站", + "mk": "Вежбалница на отворено", + "he": "תחנת כושר" + } + }, + "leisure/horse_riding": { + "title": { + "C": "Horseback Riding Facility", + "en": "Horseback Riding Facility", + "ar": "منشأة ركوب خيل", + "ast": "Instalación pa equitación", + "cs": "Jezdecký areál", + "da": "Ridningsfaciliteter", + "de": "Reitanlage", + "el": "Χώροι Ιπποστασίου", + "en-GB": "Horseback Riding Facility", + "eo": "Ĉeval-rajdadejo", + "es": "Centro de equitación", + "et": "Ratsakeskus", + "fa": "باشگاه اسب سواری", + "fi": "Ratsastusalue", + "fr": "Centre équestre", + "gl": "Centro de equitación", + "hu": "Lovasiskola", + "is": "Aðstaða fyrir reiðmennsku", + "it": "Centro equestre", + "ja": "乗馬施設", + "ko": "승마 시설", + "lv": "Zirgu jāšanas vieta", + "nl": "Manege", + "no": "Ridesenter", + "pl": "Ośrodek jeździecki", + "pt-BR": "Centro de Hipismo", + "pt": "Centro equestre", + "ro": "Facilitate de Călărie", + "ru": "Площадка для верховой езды", + "sl": "Jahalni klub", + "sv": "Ridskola", + "tr": "At Binicilik Spor Kulübü", + "uk": "Верхова їзда", + "vi": "Khu Cưỡi ngựa", + "zh-CN": "骑马场", + "zh-HK": "騎馬設施", + "zh-TW": "騎馬場", + "mk": "Јавачница за коњи", + "he": "מתקן רכיבה על סוסים" + } + }, + "leisure/resort": { + "title": { + "C": "Resort", + "en": "Resort", + "ar": "منتجع", + "cs": "Letovisko", + "da": "Turistresort", + "de": "Resort", + "el": "Θέρετρο", + "en-GB": "Resort", + "eo": "Turisma centro", + "es": "Complejo turístico", + "et": "Puhkekeskus", + "fa": "مجتمع تفریحی", + "fi": "Lomakohde", + "fr": "Complexe touristique , Village de vacances", + "gl": "Complexo turístico", + "hu": "Üdülőhely", + "is": "Afþreyingarþorp", + "it": "Resort", + "ja": "リゾート地", + "ko": "리조트", + "nl": "Resort", + "pl": "Ośrodek wczasowy", + "pt-BR": "Resort", + "pt": "Estância turística", + "ro": "Resort", + "ru": "База отдыха / санаторий / пасионат / детский лагерь", + "sk": "Rezort", + "sl": "Letovišče", + "sr": "Одмаралиште", + "sv": "Resort", + "tr": "Tatil Yeri", + "uk": "Курорт", + "vi": "Khu Nghỉ dưỡng", + "zh-CN": "度假区", + "zh-HK": "度假勝地", + "zh-TW": "度假勝地", + "mk": "Одморалиште", + "he": "אתר נופש", + "eu": "opor-leku" + } + }, + "leisure/amusement_arcade": { + "title": { + "C": "Amusement Arcade", + "en": "Amusement Arcade", + "cs": "Herna", + "da": "Spillehal", + "de": "Spielhalle", + "el": "Αίθουσα Ψυχαγωγίας", + "en-GB": "Amusement Arcade", + "eo": "Salono de ludoj", + "es": "Sala de juegos recreativos", + "et": "Videomängumasin", + "fa": "بازی تفریحی / سالن سرگرمی", + "fi": "Pelihalli", + "fr": "Salle de jeux", + "gl": "Sala de xogos recreativos", + "hu": "Játékterem (kiskorúaknak is)", + "is": "Spilasalur", + "it": "Sala giochi", + "ja": "ゲームセンター", + "ko": "오락실", + "nl": "Speelhal", + "pl": "Salon gier", + "pt-BR": "Fliperama", + "pt": "Salão de jogos", + "ru": "Игровые автоматы", + "sv": "Arkadhall", + "tr": "Oyun Salonu", + "uk": "Ігрові автомати", + "vi": "Khu Trò chơi Điện tử", + "zh-TW": "遊樂場", + "mk": "Забавна аркада", + "he": "משחקי ארקייד" + } + }, + "leisure/hackerspace": { + "title": { + "C": "Hackerspace", + "en": "Hackerspace", + "cs": "hackerspace", + "da": "Hackerspace", + "de": "Hackerspace", + "el": "Χώρος Συζήτησης Εργασιών", + "en-GB": "Hackerspace", + "eo": "Kodumulejo (hackerspace)", + "es": "Hacklab", + "fa": "هکراسپیس", + "fi": "Koodausnurkkaus", + "fr": "Hackerspace", + "hu": "Alkotóműhely", + "is": "Hakkaraathvarf", + "it": "Spazio hacker", + "ja": "ハッカースペース", + "ko": "해커스페이스", + "nl": "Hackerspace", + "no": "Hackerspace", + "pl": "Hackerspace", + "pt-BR": "Hackerspace", + "pt": "Espaço de hackers", + "ru": "Хакерспейс", + "sv": "Hackerspace", + "uk": "Хакерспейс", + "vi": "Không gian Hacker", + "zh-CN": "创客空间", + "zh-TW": "駭客空間", + "mk": "Хакерски простор", + "he": "משרד היי טק משותף" + } + }, + "leisure/sauna": { + "title": { + "C": "Sauna", + "en": "Sauna", + "ar": "سونا", + "ast": "Sauna", + "cs": "Sauna", + "da": "Sauna", + "de": "Sauna", + "el": "Σάουνα", + "en-GB": "Sauna", + "eo": "Ŝvitbanejo", + "es": "Sauna", + "et": "Saun", + "fa": "سونا", + "fi": "Sauna", + "fr": "Sauna", + "gl": "Sauna", + "hu": "Szauna", + "is": "Gufubað", + "it": "Sauna", + "ja": "サウナ", + "ko": "사우나", + "lt": "Sauna", + "lv": "Sauna", + "nl": "Sauna", + "no": "Badstu", + "pl": "Sauna", + "pt-BR": "Sauna", + "pt": "Sauna", + "ru": "Сауна", + "sk": "Sauna", + "sr": "Сауна", + "sv": "Bastu", + "tr": "Sauna", + "uk": "Сауна", + "vi": "Tắm hơi", + "zh-CN": "桑拿", + "zh-TW": "桑拿", + "mk": "Сауна", + "he": "סאונה", + "eu": "Sauna" + } + }, + "leisure/beach_resort": { + "title": { + "C": "Beach Resort", + "en": "Beach Resort", + "ar": "منتجع الشاطئ", + "cs": "spravovaná pláž", + "da": "Strandresort", + "de": "Strandresort", + "el": "Παραθαλάσσιο Θέρετρο", + "en-GB": "Beach Resort", + "eo": "Sablobordo administrata (kun oportunaĵoj)", + "es": "Balneario", + "et": "Rannakuurort", + "fa": "تفرجگاه ساحلی", + "fi": "Rantalomakohde", + "fr": "Station balnéaire", + "gl": "Complexo turístico", + "hr": "Kupalište", + "hu": "Fürdőhely, vízparti strand", + "is": "Strandbær", + "it": "Stabilimento balneare", + "ja": "ビーチリゾート", + "ko": "해변 리조트", + "nl": "Strandoord", + "no": "Strandhotell", + "pl": "Resort nadmorski", + "pt-BR": "Resort em Praia", + "pt": "Estância balnear", + "ru": "Пляжный курорт", + "sk": "Plážový rezort", + "sv": "Strandresort", + "uk": "Пляжний курорт", + "vi": "Bãi biển Nghỉ dưỡng", + "zh-CN": "海滩度假区", + "zh-TW": "海灘渡假村", + "mk": "Плажно летувалиште", + "he": "אתר נופש על החוף" + } + }, + "leisure/bleachers": { + "title": { + "C": "Bleachers", + "en": "Bleachers", + "cs": "nekryté tribuny", + "de": "Nicht überdachte Tribüne", + "el": "Εξέδρα Χωρίς Σκεπή", + "eo": "Spektejo", + "es": "Gradas", + "fa": "نیمکت مسابقات ورزشی", + "fi": "Katsomo", + "fr": "Gradins", + "gl": "Chanzos", + "hu": "Lelátó", + "it": "Gradinate", + "ja": "観覧席", + "ko": "관중석", + "nl": "Tribune", + "no": "Tribune", + "pl": "Trybuna (odkryta)", + "pt-BR": "Arquibancada simples", + "pt": "Bancadas", + "ru": "Трибуны", + "sk": "Tribúny", + "sv": "Läktare", + "uk": "Трибуни", + "vi": "Khán đài Ngoài trời", + "zh-TW": "看台", + "mk": "Гледалиште на отворено", + "he": "טריבונות" + } + }, + "dance:teaching/yes": { + "title": { + "C": "Dance School" + } + }, + "leisure/outdoor_seating": { + "title": { + "C": "Outdoor Seating Area", + "en": "Outdoor Seating Area", + "cs": "Venkovní posezení", + "da": "Udendørs siddepladser", + "de": "Außengastronomie", + "el": "Υπαίθριο Καθιστικό", + "en-GB": "Outdoor Seating Area", + "eo": "Seĝoj eksterdome", + "es": "Área de asientos al exterior", + "fi": "Ulkoterassi", + "fr": "Aire des places en terrasse", + "gl": "Área de asentos ó exterior", + "hr": "Sjedenje vani", + "is": "Svæði fyrir sæti utandyra", + "it": "Posti a sedere all’esterno", + "ja": "屋外食事席エリア", + "ko": "야외 좌석 구역", + "nl": "Terras (horeca)", + "pl": "Ogródek", + "pt-BR": "Área de estar ao ar livre", + "pt": "Esplanada", + "ru": "Столики на улице (площадка)", + "sk": "Vonkajšie sedenie", + "sv": "Uteservering", + "uk": "Місця на свіжому повітрі", + "vi": "Khu Ăn uống Ngoài trời", + "zh-CN": "室外座位", + "zh-TW": "戶外座位區", + "mk": "Маси на отворено", + "he": "אזור ישיבה בחוץ" + } + }, + "leisure/bandstand": { + "title": { + "C": "Bandstand", + "en": "Bandstand", + "cs": "Kryté pódium", + "de": "Musikpavillon", + "el": "Εξέδρα Συναυλιών", + "eo": "Orkestrejeto", + "es": "Quiosco de música", + "fa": "محل دسته موسیقی", + "fi": "Pieni esiintymislava", + "fr": "Kiosque à musique", + "gl": "Palco de música", + "hu": "Zenepavilon", + "is": "Hljómsveitapallur", + "it": "Chiosco della musica", + "ja": "野外音楽堂", + "ko": "연주 무대", + "nl": "Podium", + "pl": "Estrada", + "pt-BR": "Coreto", + "pt": "Coreto", + "ru": "Площадка для музыкантов", + "sk": "Hudobný pavilón", + "sv": "Musikestrad", + "uk": "Естрада", + "vi": "Bục Dàn nhạc", + "zh-TW": "演奏臺", + "mk": "Оркестарска естрада", + "he": "בימת תזמורת" + } + }, + "leisure/fishing": { + "title": { + "C": "Fishing Spot", + "en": "Fishing Spot", + "cs": "Místo pro rybolov", + "de": "Fischplatz", + "el": "Χώρος Αλιείας", + "en-GB": "Fishing Spot", + "eo": "Loko por fiŝhokado", + "es": "Lugar de pesca", + "fi": "Kalastuspaikka", + "fr": "Lieu de pêche", + "gl": "Lugar de pesca", + "hu": "Horgászhely", + "is": "Veiðistaður", + "it": "Punto per la pesca", + "ja": "釣りスポット", + "ko": "낚시터", + "nl": "Visstek", + "no": "Fiske Plass", + "pl": "Łowisko", + "pt-BR": "Ponto de pesca", + "pt": "Local de pesca", + "ru": "Место для рыбалки", + "sk": "Rybárske miesto", + "sr": "Место за риболов", + "sv": "Fiskeplats", + "uk": "Місце для риболовлі", + "vi": "Chỗ Câu cá", + "zh-CN": "钓鱼地点", + "zh-TW": "釣魚點", + "mk": "Место за риболов", + "he": "נקודת דיג" + } + }, + "leisure/disc_golf_course": { + "title": { + "C": "Disc Golf Course", + "en": "Disc Golf Course", + "cs": "hřiště pro disc golf", + "de": "Discgolf Anlage", + "eo": "Ludkampo por golfdisko", + "es": "Golf de disco", + "fi": "Frisbeegolfkenttä", + "fr": "Parcours de disc golf", + "ja": "ディスクゴルフコース", + "ko": "디스크 골프 코스", + "no": "Disc Golf Bane", + "pl": "Pole do gry w disc golfa", + "pt-BR": "Percurso de golfe de disco", + "pt": "Campo de golfe de disco", + "sk": "Ihrisko na frisbee golf", + "sv": "Frisbeegolfbana", + "uk": "Диско-гольф", + "zh-TW": "飛盤高爾夫球場", + "mk": "Терен за дикс-голф", + "he": "מגרש דיסק גולף" + } + }, + "leisure/escape_game": { + "title": { + "C": "Escape Room", + "en": "Escape Room", + "cs": "úniková hra", + "de": "Escape Room", + "el": "Δωμάτιο Απόδρασης", + "en-GB": "Escape Room", + "eo": "Ĉambro de enigmoj", + "es": "Sala de escape", + "fa": "اتاق فرار", + "fi": "Pakopeli", + "fr": "Escape game", + "gl": "Escape room", + "hu": "Szabadulószoba", + "it": "Escape Room", + "ja": "脱出ゲーム場", + "ko": "방탈출", + "pl": "Escape room", + "pt-BR": "Sala de fuga", + "pt": "Sala de fuga", + "uk": "Квест-кімната", + "vi": "Trò chơi Thoát khỏi Phòng", + "zh-TW": "密室逃脫", + "mk": "Соба за бегство", + "he": "חדר בריחה" + } + }, + "leisure/swimming_area": { + "title": { + "C": "Natural Swimming Area", + "en": "Natural Swimming Area", + "cs": "Přírodní koupaliště", + "da": "Åbentvandssvømningsområde", + "de": "Natürlicher Badebereich", + "el": "Φυσική Περιοχή Κολύμβησης", + "eo": "Naĝejo natura", + "es": "Área de natación natural", + "fi": "Uimaranta", + "fr": "Lieu de baignade", + "gl": "Área de natación natural", + "hu": "Szabadvizi úszóterület", + "it": "Area riservata ai bagnanti", + "ja": "遊泳区域", + "pl": "Kąpielisko", + "pt-BR": "Área de natação natural", + "pt": "Área balnear natural", + "sk": "Prírodný plavecký areál", + "uk": "Місце для плавання", + "vi": "Vũng Sâu để Bơi", + "zh-CN": "自然游泳区域", + "zh-TW": "自然游泳區", + "mk": "Природно пливалиште", + "he": "שטח שחייה טבעי" + } + }, + "leisure/sports_hall": { + "title": { + "C": "Gymnasium", + "en": "Gymnasium" + } + }, + "leisure/trampoline_park": { + "title": { + "C": "Trampoline Park", + "en": "Trampoline Park", + "cs": "Trampolínová hala", + "da": "Trampolinpark", + "de": "Trampolinpark", + "eo": "Parko de saltadtukoj", + "es": "Parque de trampolín", + "fi": "Trampoliinipuisto", + "fr": "Parc à trampolines", + "ja": "トランポリンパーク", + "pl": "Park trampolin", + "pt-BR": "Parque de trampolim ", + "pt": "Parque de trampolins", + "sk": "Tempolínovy park", + "uk": "Батутна арена", + "vi": "Khu Giàn nhún", + "zh-TW": "彈簧床公園", + "mk": "Трамбулински парк", + "he": "פארק טרמפולינות" + } + }, + "office/accountant": { + "title": { + "C": "Accountant Office", + "en": "Accountant Office", + "ar": " المحاسب ", + "ast": "Contable", + "ca": "Oficina comptable", + "cs": "Účetnictví", + "da": "Revisor-kontor", + "de": "Buchhaltungsbüro", + "el": "Λογιστικό Γραφείο", + "en-GB": "Accountant Office", + "eo": "Oficejo de kontisto", + "es": "Oficina de contador", + "fa": "دفتر حسابدار", + "fi": "Tilintarkastustoimisto", + "fr": "Comptable", + "gl": "Contábel", + "hu": "Könyvelő iroda", + "is": "Bókhaldsskrifstofa", + "it": "Commercialista", + "ja": "会計事務所(主に法人向け)", + "ko": "회계사 사무소", + "nl": "Boekhouder", + "no": "Revisorkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Contabilidade", + "pt": "Contabilista", + "ru": "Бухгалтер", + "sk": "Účtovnik", + "sr": "Рачуноводствена канцеларија", + "sv": "Bokhållare", + "tr": "Muhasebeci", + "uk": "Бухгалтер", + "vi": "Văn phòng Kế toán", + "zh-CN": "会计师事务所", + "zh-TW": "會計師事務所", + "mk": "Сметководствено биро", + "he": "משרד רואה חשבון", + "ms": "Pejabat Akauntan" + } + }, + "office/architect": { + "title": { + "C": "Architect Office", + "en": "Architect Office", + "ar": " مهندس معماري ", + "ca": "Oficina d'arquitectura", + "cs": "Kancelář architekta", + "da": "Arkitekt-kontor", + "de": "Architekturbüro", + "el": "Αρχιτεκτονικό Γραφείο", + "en-GB": "Architect Office", + "eo": "Oficejo de arĥitekturisto", + "es": "Oficina de arquitecto", + "fa": "دفتر معماری", + "fi": "Arkkitehtitoimisto", + "fr": "Architecte", + "gl": "Oficina de arquitectura", + "hr": "Arhitektonski ured", + "hu": "Építészi iroda", + "is": "Arkitektastofa", + "it": "Studio di architettura", + "ja": "設計事務所", + "ko": "건축가 사무소", + "lt": "Architekto biuras", + "lv": "Arhitekta birojs", + "nl": "Architectenbureau", + "no": "Arkitektkontor", + "pl": "Architekt", + "pt-BR": "Escritório de Arquitetura", + "pt": "Arquiteto", + "ru": "Архитектурное бюро", + "sk": "Architekt", + "sr": "Архитектонска канцеларија", + "sv": "Arkitektbyrå", + "tr": "Mimarlık Ofisi", + "uk": "Архітектор", + "vi": "Văn phòng Kiến trúc sư", + "zh-CN": "建筑事务所", + "zh-TW": "建築師事務所", + "mk": "Архитектонско биро", + "he": "משרד אדריכלים", + "ms": "Pejabat Arkitek" + } + }, + "office/company": { + "title": { + "C": "Corporate Office", + "en": "Corporate Office", + "ar": "مكتب شركة", + "ca": "Oficina corporativa", + "cs": "Kancelář korporace", + "de": "Firmenbüro", + "el": "Εταιρικό Γραφείο", + "en-GB": "Corporate Office", + "eo": "Oficejo de firmao", + "es": "Oficina corporativa", + "et": "Ettevõtte kontor", + "fa": "دفتر شرکت خصوصی", + "fi": "Yritystoimisto", + "fr": "Bureau d'entreprise", + "gl": "Oficina corporativa", + "hr": "Ured firme", + "hu": "Vállalati iroda", + "is": "Skrifstofa fyrirtækis", + "it": "Ufficio aziendale", + "ja": "会社", + "ko": "기업 사무소", + "lt": "Korporacijos biuras", + "nl": "Kantoor van bedrijf", + "pl": "Biuro firmy", + "pt-BR": "Escritório de Empresa", + "pt": "Empresa", + "ru": "Частная компания", + "sr": "Пословна канцеларија", + "sv": "Företagskontor", + "tr": "Şirket", + "uk": "Офіс компанії", + "vi": "Văn phòng Công ty", + "zh-CN": "企业公司", + "zh-TW": "公司辦公室", + "mk": "Деловни простории", + "he": "משרד תאגידי" + } + }, + "office/educational_institution": { + "title": { + "C": "Educational Institution", + "en": "Educational Institution", + "ar": "مؤسسة تعليمية ", + "ast": "Institución educativa", + "bs": "Obrazovna institucija", + "ca": "Institució Educativa", + "cs": "Vzdělávací instituce", + "da": "Uddannelsesinstitution", + "de": "Bildungseinrichtung", + "el": "Εκπαιδευτικό Ίδρυμα", + "en-GB": "Educational Institution", + "eo": "Oficejo de edukada institucio", + "es": "Oficina de institución educativa", + "fa": "مؤسسه آموزشی", + "fi": "Koulutushallinnon toimisto", + "fr": "Bureau de l'établissement d'enseignement", + "gl": "Institución educativa", + "hr": "Obrazovna ustanova", + "hu": "Oktatási intézmény", + "id": "Institusi Pendidikan", + "is": "Menntastofnun", + "it": "Istituto d'Istruzione", + "ja": "教育機関事務所", + "ko": "교육 기관", + "lt": "Edukacinis institutas", + "lv": "Izglītības Iestāde", + "nl": "Kantoor van onderwijsinstelling", + "no": "Utdanningsinstitusjon", + "pl": "Instytucja edukacyjna", + "pt-BR": "Instituição Educacional", + "pt": "Instituição de ensino", + "ro": "Instituție Educațională", + "ru": "Администрация общеобразовательного учреждения", + "sk": "Vzdelávací inštitút", + "sl": "Izobraževalna ustanova", + "sr": "Образовна институција", + "sv": "Utbildningskontor", + "tr": "Eğitim Kurumu", + "uk": "Офіс освітнього закладу", + "vi": "Trường học", + "yue": "敎育機構", + "zh-CN": "教育机构", + "zh-HK": "敎育機構", + "zh-TW": "教育機構", + "mk": "Образовна установа", + "he": "מוסד חינוכי", + "ms": "Institusi Pendidikan" + } + }, + "office/employment_agency": { + "title": { + "C": "Employment Agency", + "en": "Employment Agency", + "ar": "مكتب التوظيف ", + "ast": "Axencia d'emplegu", + "bs": "Agencija za zapošljavanje", + "ca": "Oficina de treball", + "cs": "Úřad práce", + "da": "Arbejdsformidling", + "de": "Arbeitsamt", + "el": "Γραφείο Ευρέσεως Εργασίας", + "en-GB": "Employment Agency", + "eo": "Dungoficejo", + "es": "Agencia de empleo", + "fa": "آژانس کاریابی", + "fi": "Työnvälitystoimisto", + "fr": "Agence pour l'emploi", + "gl": "Oficina de emprego", + "hu": "Munkaügyi központ", + "id": "Agen Tenaga Kerja", + "is": "Atvinnumiðlun", + "it": "Agenzia per l'impiego", + "ja": "職業安定所", + "ko": "직업 소개소", + "lt": "Įdarbinimo agentūra", + "nl": "Uitzendbureau", + "no": "Bemanningsbyrå", + "pl": "Agencja zatrudnienia", + "pt-BR": "Agência de Empregos", + "pt": "Agência de emprego", + "ro": "Agenție de Muncă", + "ru": "Кадровое агентство", + "sk": "Zamestnávateľská agentúra", + "sl": "Agencija za zaposlovanje", + "sr": "Служба за запошљавање", + "sv": "Arbetsförmedling", + "ta": "வேலைவாய்ப்பு முகவர்", + "tr": "İş ve İşçi Bulma Kurumu", + "uk": "Кадрова агенція", + "vi": "Cơ quan Giới thiệu Việc làm", + "yue": "薦人館", + "zh-CN": "就业机构", + "zh-HK": "職業介紹所", + "zh-TW": "就業服務站", + "mk": "Агенција за вработување", + "he": "סוכנות כוח אדם", + "ms": "Agensi Pekerjaan" + } + }, + "office/estate_agent": { + "title": { + "C": "Real Estate Office", + "en": "Real Estate Office", + "ar": "مكتب عقاري", + "ast": "Axencia inmobiliaria", + "bs": "Agencija za nekretnine", + "ca": "Oficina d'agència immobiliària", + "cs": "Realitní kancelář", + "da": "Ejendomsmægler", + "de": "Immobilienmakler", + "el": "Κτηματομεσιτικό Γραφείο", + "en-GB": "Estate Agent", + "eo": "Oficejo de nemoveblaĵisto", + "es": "Inmobiliaria", + "fa": "دفتر املاک", + "fi": "Kiinteistönvälitystoimisto", + "fr": "Agence immobilière", + "gl": "Axencia inmobiliaria", + "hu": "Ingatlaniroda", + "id": "Kantor Real Estate", + "is": "Fasteignasöluskrifstofa", + "it": "Agente Immobiliare", + "ja": "不動産代理店", + "ko": "부동산 사무소", + "lt": "Nekilnojamo turto biuras", + "nl": "Immobiliënkantoor", + "no": "Eiendomsmegler", + "pl": "Biuro nieruchomości", + "pt-BR": "Imobiliária", + "pt": "Agência imobiliária", + "ro": "Oficiu de Proprietate Imobiliară", + "ru": "Агентство недвижимости", + "sk": "Realitná agentúra", + "sl": "Nepremičninska agencija", + "sr": "Канцеларија за некретнине", + "sv": "Mäklare/bostadsförmedling", + "tr": "Gayrimenkul Ofisi", + "uk": "Агенція з нерухомості", + "vi": "Văn phòng Bất động sản", + "yue": "管業處", + "zh-CN": "地产中介", + "zh-HK": "地產", + "zh-TW": "房地產仲介", + "mk": "Агенција за недвижности", + "he": "משרד נדל״ן", + "ms": "Pejabat Hartanah" + } + }, + "office/financial": { + "title": { + "C": "Financial Office", + "en": "Financial Office", + "ar": "مكتب مالي", + "ast": "Oficina financiera", + "bs": "Finansijski ured", + "ca": "Oficina financera", + "cs": "Finanční úřad", + "da": "Finanskontor", + "de": "Finanzberater", + "el": "Γραφείο Οικονομικών", + "en-GB": "Financial Office", + "eo": "Financa oficejo", + "es": "Financiera", + "fa": "اداره مالی", + "fi": "Taloustoimisto", + "fr": "Bureau d'entreprise financière", + "gl": "Oficina financeira", + "hu": "Pénzügyi vállalat irodája", + "id": "Kantor Keuangan", + "is": "Fjármálafyrirtæki", + "it": "Ufficio Finanziario", + "ja": "会計事務所(主に個人向け)", + "ko": "금융 사무소", + "lt": "Finansų biuras", + "nl": "Privékantoor van financiële instelling", + "pl": "Biuro finansowe", + "pt-BR": "Escritório Financeiro", + "pt": "Empresa financeira", + "ro": "Oficiu Financiar", + "ru": "Финансовая организация", + "sk": "Finančný úrad", + "sl": "Finančna agencija", + "sr": "Финансијска канцеларија", + "sv": "Bankkontor", + "tr": "Finans Ofisi", + "uk": "Фінансове управління", + "vi": "Văn phòng Tài chính", + "yue": "財務部寫字樓", + "zh-CN": "金融机构", + "zh-HK": "金融機構辦事處", + "zh-TW": "金融機構辦公室", + "mk": "Финансиска служба", + "he": "משרד פיננסי", + "ms": "Pejabat Kewangan" + } + }, + "office/government": { + "title": { + "C": "Government Office", + "en": "Government Office", + "ar": "مكتب حكومي", + "ast": "Oficina gubernamental", + "bs": "Vladin ured", + "ca": "Oficina governamental", + "cs": "Státní úřad", + "da": "Statsligt kontor", + "de": "Behörde", + "el": "Γραφείο του Δημόσιου", + "en-GB": "Government Office", + "eo": "Registara oficejo", + "es": "Oficina de gobierno", + "et": "Valitsuse kontor", + "fa": "دفتر دولتی", + "fi": "Julkishallinnon toimisto", + "fr": "Administration publique", + "gl": "Oficina gobernamental", + "hr": "Državni ured", + "hu": "Kormányzati hivatal", + "id": "Kantor Pemerintah", + "is": "Opinber stofnun", + "it": "Ufficio governativo", + "ja": "行政機関事務所", + "ko": "관청", + "lt": "Vyriausybės biuras", + "lv": "Valdības birojs", + "nl": "Overheidskantoor", + "no": "Regjeringskontor", + "pl": "Biuro rządowe lub samorządowe", + "pt-BR": "Órgão governamental", + "pt": "Escritório governamental", + "ro": "Oficiu de Guvern", + "ru": "Государственное учреждение", + "sk": "Vládny úrad", + "sl": "Vladna agencija", + "sr": "Владина канцеларија", + "sv": "Myndighet", + "ta": "அரசு அலுவலகம்", + "tr": "Devlet Dairesi", + "uk": "Уряд", + "vi": "Công sở", + "yue": "衙門", + "zh-CN": "政府办公点", + "zh-HK": "政府辦公室", + "zh-TW": "政府機關", + "mk": "Управна служба", + "dv": "ސަރުކާރު އޮފީސްތައް", + "he": "משרד ממשלתי", + "ms": "Pejabat Kerajaan", + "so": "Xafiis Dowladeed" + } + }, + "office/insurance": { + "title": { + "C": "Insurance Office", + "en": "Insurance Office", + "ar": "مكتب تأمينات", + "ast": "Oficina de seguros", + "bs": "Ured za osiguranje", + "ca": "Oficina de companyia asseguradora", + "cs": "Pojišťovna", + "da": "Forsikringselskab", + "de": "Versicherung", + "el": "Ασφαλιστικό Γραφείο", + "en-GB": "Insurance Office", + "eo": "Oficejo de asekur-kompanio", + "es": "Aseguradora", + "fa": "دفتر بیمه", + "fi": "Vakuutustoimisto", + "fr": "Agence d'assurance", + "gl": "Oficina de seguros", + "hr": "Ured osiguravajućeg društva", + "hu": "Biztosító", + "id": "Kantor Asuransi", + "is": "Tryggingaskrifstofa", + "it": "Assicurazione", + "ja": "保険会社・代理店", + "ko": "보험 사무소", + "lt": "Draudimo įstaiga", + "lv": "Apdrošināšanas birojs", + "nl": "Verzekeringskantoor", + "no": "Forsikringskontor", + "pl": "Biuro ubezpieczeń", + "pt-BR": "Seguradora", + "pt": "Agência de seguros", + "ro": "Oficiu de Asigurare", + "ru": "Страховая компания", + "sk": "Poistenie", + "sl": "Zavarovalnica", + "sr": "Осигуравајућа канцеларија", + "sv": "Försäkringskontor", + "tr": "Sigorta Acentesi", + "uk": "Страхова компанія", + "vi": "Văn phòng Bảo hiểm", + "yue": "保險公司寫字樓", + "zh-CN": "保险公司", + "zh-HK": "保險公司辦公室", + "zh-TW": "保險公司辦公室", + "mk": "Осигурително друштво", + "he": "משרד ביטוח", + "ms": "Pejabat Insurans" + } + }, + "office/it": { + "title": { + "C": "Information Technology Office", + "en": "Information Technology Office", + "ar": "متخصص في تكنولوجيا المعلومات", + "cs": "Kancelář informačních technologií", + "de": "Informations-Technologie-Firma", + "el": "Γραφείο Πληροφοριών Τεχνολογίας ", + "en-GB": "Information Technology Office", + "eo": "Oficejo de inform-teĥnologia firmao", + "es": "Oficina de tecnología de la información", + "fa": "دفتر فناوری اطلاعات", + "fi": "Informaatioteknologian toimisto", + "fr": "Spécialiste en informatique", + "gl": "Oficina de tecnoloxías da información", + "hu": "Informatikai iroda", + "is": "Upplýsingatækniskrifstofa", + "it": "Ufficio società IT", + "ja": "IT企業", + "ko": "IT 사무소", + "nl": "IT-kantoor", + "pl": "Firma informatyczna", + "pt-BR": "Escritório de Empresa de Tecnologia da Informação", + "pt": "Escritório de Ti", + "ru": "Офис IT-компании", + "sr": "Информатичка канцеларија", + "sv": "IT-kontor", + "tr": "Bilişim Teknoloji Ofisi", + "uk": "ІТ компанія", + "vi": "Văn phòng Tin học", + "zh-CN": "IT公司", + "zh-TW": "資訊公司辦公室", + "mk": "Информатичка служба", + "he": "משרד שירותי מחשוב", + "ms": "Pejabat Teknologi Maklumat" + } + }, + "office/lawyer": { + "title": { + "C": "Law Office", + "en": "Law Office", + "ar": "مكتب قانوني ", + "ast": "Despachu d'abogaos", + "bs": "Pravni ured", + "ca": "Bufet d'advocats", + "cs": "Právní kancelář", + "da": "Advokatkontor", + "de": "Anwalt", + "el": "Δικηγορικό Γραφείο", + "en-GB": "Law Office", + "eo": "Oficejo de leĝisto", + "es": "Despacho de abogados", + "fa": "دفتر حقوقی", + "fi": "Lakitoimisto", + "fr": "Cabinet d'avocats", + "gl": "Bufete", + "hr": "Odvjetnički ured", + "hu": "Ügyvéd", + "id": "Kantor Hukum", + "is": "Lögmannaskrifstofa", + "it": "Studio legale", + "ja": "法律事務所", + "ko": "법률 사무소", + "lt": "Advokatų kontora", + "nl": "Advocatenkantoor", + "no": "Advokatkontor", + "pl": "Biuro prawnika", + "pt-BR": "Escritório de Advocacia", + "pt": "Escritório de advogados", + "ro": "Cabinet de Avocatură", + "ru": "Юридические услуги", + "sk": "Právna kancelária", + "sl": "Pravna pisarna", + "sr": "Адвокатска канцеларија", + "sv": "Advokatkontor", + "ta": "சட்ட அலுவலகம்", + "tr": "Hukuk Bürosu", + "uk": "Адвокатське бюро", + "vi": "Văn phòng Luật sư", + "yue": "律師事務所", + "zh-CN": "律师事务所", + "zh-HK": "律師事務所", + "zh-TW": "律師事務所", + "mk": "Правник", + "he": "משרד עורכי דין", + "ms": "Pejabat Undang-undang" + } + }, + "office/newspaper": { + "title": { + "C": "Newspaper Office", + "en": "Newspaper Office", + "ar": "صحيفة", + "ast": "Redacción de periódicu", + "cs": "Novinářská redakce", + "de": "Zeitungsbüro", + "el": "Γραφεία Εφημερίδας", + "en-GB": "Newspaper Office", + "eo": "Oficejo de redakto", + "es": "Oficina de periódicos", + "fa": "دفتر روزنامه", + "fi": "Toimitus", + "fr": "Journal", + "gl": "Oficina de xornal", + "hu": "Újságírói iroda", + "is": "Skrifstofur fréttablaðs", + "it": "Ufficio giornalistico", + "ja": "新聞社", + "ko": "신문사 사무소", + "nl": "Krantredactie", + "no": "Avisredaksjon", + "pl": "Siedziba wydawcy gazety", + "pt-BR": "Escritório de Jornal", + "pt": "Jornal", + "ru": "Редакция газеты", + "sr": "Новинска канцеларија", + "sv": "Tidningsredaktion", + "ta": "செய்தித்தாள் அலுவலகம்", + "tr": "Gazete Şubesi", + "uk": "Редакція газети", + "vi": "Văn phòng Tờ báo", + "zh-CN": "报社", + "zh-TW": "報社辦公室", + "mk": "Новинарска служба", + "he": "משרד עיתונאות", + "ms": "Pejabat Akhbar" + } + }, + "office/ngo": { + "title": { + "C": "NGO Office", + "en": "NGO Office", + "ar": "مكتب المنظمات الغير حكومية", + "ast": "Oficina d'ONG", + "bn": "এনজিও অফিস", + "bs": "Ured NVO", + "ca": "Oficina d'ONG", + "cs": "Nezisková organizace", + "da": "NGO kontor", + "de": "NGO-Büro – Nichtregierungsorganisation", + "el": "Γραφείο ΜΚΟ", + "en-GB": "NGO Office", + "eo": "Oficejo de neregistara organizaĵo", + "es": "ONG", + "fa": "سازمان مردم نهاد", + "fi": "Kansalaisjärjestö", + "fr": "Organisation non gouvernementale", + "gl": "Oficina ONG", + "hr": "Nevladina organizacija", + "hu": "Civil szervezet", + "id": "Kantor LSM", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Organizzazione non governativa", + "ja": "NGO事務所", + "ko": "NGO 사무소", + "nl": "Kantoor van NGO", + "pl": "Biuro organizacji pozarządowej", + "pt-BR": "Sede de ONG", + "pt": "ONG", + "ro": "Oficiu NGO", + "ru": "Общественная организация", + "sk": "Nezisková organizácia", + "sl": "Sedež nevladne organizacije", + "sr": "НВО канцеларија", + "sv": "Icke-statlig organisation", + "tr": "Sivil Toplum Örgütü", + "uk": "Недержавна громадська організація", + "vi": "Tổ chức Phi chính phủ", + "yue": "志顠機構寫字樓", + "zh-CN": "非政府组织", + "zh-HK": "非政府機構辦公室", + "zh-TW": "非政府機構辦公室", + "mk": "НВО", + "he": "משרד ארגון לא ממשלתי", + "ms": "Pejabat Pertubuhan Bukan Kerajaan" + } + }, + "office/political_party": { + "title": { + "C": "Political Party Office", + "en": "Political Party Office", + "ar": "مكتب الحزب السياسي", + "cs": "Kancelář politické strany", + "de": "Parteibüro, Büro einer politischen Partei", + "el": "Γραφείο Πολιτικού Κόμματος", + "eo": "Oficejo de partio politika", + "es": "Oficina del partido político", + "fa": "دفتر حزب سیاسی", + "fi": "Puoluetoimisto", + "fr": "Bureau de parti politique", + "gl": "Oficina de partido político", + "hu": "Pártiroda", + "it": "Ufficio di un partito", + "ja": "政党事務所", + "ko": "정당 사무소", + "no": "Politisk Parti Kontor", + "pl": "Biuro partii politycznej", + "pt-BR": "Escritório de partido político", + "pt": "Sede partidária", + "sk": "Kancelária politicjkej strany", + "sr": "Канцеларија политичке странке", + "sv": "Partikontor", + "uk": "Офіс політичної партії", + "vi": "Văn phòng Đảng phái Chính trị", + "zh-CN": "政党办公室", + "zh-TW": "政黨辦公室", + "mk": "Партиски штаб", + "he": "משרד של מפלגה" + } + }, + "office/research": { + "title": { + "C": "Research Office", + "en": "Research Office", + "ar": "مكتب بحوث", + "ast": "Despachu d'investigación", + "bs": "Ured za istraživanje", + "ca": "Oficines d'R+D", + "cs": "Výzkumný ústav", + "da": "Forskning", + "de": "Forschungseinrichtung", + "el": "Γραφείο Ερευνών", + "en-GB": "Research Office", + "eo": "Oficejo de scienca esplorado", + "es": "Oficina de investigación", + "fa": "سازمان تحقیقاتی و پژوهشی", + "fi": "Tutkimustoimisto", + "fr": "Organisme de recherche", + "gl": "Oficina de investigación", + "hr": "Ured za istraživanje", + "hu": "Kutatóintézet", + "id": "Kantor Riset", + "is": "Rannsóknarstofa", + "it": "Istituto di Ricerca", + "ja": "研究所", + "kn": "ಸಂಶೋಧನಾ ಕಛೇರಿ", + "ko": "연구 사무소", + "lt": "Tyrimų tarnyba", + "nl": "Onderzoekskantoor", + "no": "Forskningskontor", + "pl": "Biuro badawcze", + "pt-BR": "Escritório de Pesquisa", + "pt": "Centro de investigação", + "ro": "Birou de Cercetare", + "ru": "Научно-исследовательская организация", + "sk": "Výskum", + "sl": "Raziskave", + "sr": "Истраживачка канцеларија", + "sv": "Forskning och utveckling", + "ta": "ஆராய்ச்சி அலுவலகம்", + "tr": "Araştırma Kurumu", + "uk": "Дослідницька лабораторія", + "vi": "Văn phòng Nghiên cứu", + "yue": "研究所", + "zh-CN": "研究所", + "zh-HK": "研究所", + "zh-TW": "研究機構", + "mk": "Истражувачка служба", + "he": "משרד מחקר", + "ms": "Pejabat Penyelidikan" + } + }, + "office/telecommunication": { + "title": { + "C": "Telecom Office", + "en": "Telecom Office", + "ar": "مكتب اتصالات", + "ast": "Oficina de telecomunicaciones", + "bn": "টেলিকম অফিস", + "bs": "Ured telekoma", + "ca": "Oficina de telecomunicacions", + "cs": "Telekomunikační společnost", + "da": "Teleselskabskontor", + "de": "Telefongesellschaft", + "el": "Γραφείο Τηλεπικοινωνιών", + "en-GB": "Telecom Office", + "eo": "Oficejo de telekomunikada firmao", + "es": "Oficina de telecomunicaciones", + "fa": "دفتر مخابراتی", + "fi": "Tietoliikennetoimisto", + "fr": "Agence de télécommunications", + "gl": "Oficina de telecomunicacións", + "hr": "Ured za telekomunikacije", + "hu": "Távközlési cég irodája", + "id": "Kantor Telekomunikasi", + "is": "Samskiptaskrifstofa", + "it": "Ufficio di telecomunicazioni", + "ja": "通信会社事務所", + "ko": "통신 사무소", + "lt": "Telekomunikacijų biuras", + "lv": "Telekomunikāciju birojs", + "nl": "Telecomkantoor", + "no": "Telekontor", + "pl": "Biuro firmy telekomunikacyjnej", + "pt-BR": "Escritório de Telecomunicações", + "pt": "Empresa de telecomunicações", + "ro": "Oficiu Telecom", + "ru": "Офис телекоммуникационной компании", + "sk": "Telekomunikácie", + "sl": "Telekomunikacijska pisarna", + "sr": "Телекомуникациона канцеларија", + "sv": "Telekom", + "ta": "தொலைத்தொடர்பு அலுவலகம்", + "tr": "Haberleşme Bürosu", + "uk": "Телекомунікаційна компанія", + "vi": "Văn phòng Viễn thông", + "yue": "電話公司寫字樓", + "zh-CN": "电信办公室", + "zh-HK": "電訊公司辦公室", + "zh-TW": "電信公司辦事處", + "mk": "Телекомуникациска служба", + "he": "משרד חברת תקשורת", + "ms": "Pejabat Telekom" + } + }, + "office/therapist": { + "title": { + "C": "Therapist Office", + "en": "Therapist Office", + "ar": "المعالج", + "ca": "Oficina de terapeuta", + "cs": "Terapeutická kancelář", + "de": "Therapeut", + "el": "Γραφείο Θεραπευτών", + "en-GB": "Therapist Office", + "eo": "Kabineto de terapiisto", + "es": "Oficina de terapeuta", + "fi": "Terapia", + "fr": "Thérapeute", + "gl": "Oficina de terapeuta", + "is": "Meðferðarstofa", + "it": "Studio psichiatrico", + "ja": "セラピスト(オフィス)", + "ko": "치료사 사무소", + "lv": "Terapieta birojs", + "nl": "Kantoor van therapeut", + "no": "Terapeutkontor", + "pl": "Terapeuta", + "pt-BR": "Escritório de Terapeuta", + "pt": "Terapeuta", + "ru": "Офис терапевта", + "sk": "Terapeut", + "sr": "Терапеутска канцеларија", + "sv": "Terapeut", + "tr": "Terapist", + "uk": "Фізіотерапевт", + "vi": "Văn phòng Trị liệu", + "zh-CN": "治疗师工作室", + "zh-HK": "治療師辦公室", + "zh-TW": "治療師辦公室", + "mk": "Терапевт", + "he": "משרד מטפל", + "ms": "Pejabat Ahli Terapi" + } + }, + "office/travel_agent": { + "title": { + "C": "Travel Agency", + "en": "Travel Agency", + "ar": "وكالة السفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyage", + "gl": "Axencia de viaxes", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Турагентство (устаревший тег)", + "sk": "Cestovná agentúra", + "sl": "Potovalna agencija", + "sr": "Туристичка агенција", + "sv": "Resebyrå ", + "ta": "பயண முகவர்", + "tr": "Seyahat Acentesi", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "mk": "Туристичка агенција", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "he": "סוכנות נסיעות", + "ms": "Agensi Pelancongan", + "so": "Wakaalad Socdaal" + } + }, + "office/coworking": { + "title": { + "C": "Coworking Space", + "en": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Místo pro spolupráci", + "da": "Kontorfællesskab", + "de": "Coworking-Büro", + "el": "Χώρος Συνεργασίας", + "en-GB": "Coworking Space", + "eo": "Oficejo por samloka laborado (coworking)", + "es": "Espacio de trabajo compartido", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de coworking", + "gl": "Espacio de cotraballo", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Ufficio in Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "nl": "Coworking-kantoor", + "pl": "Centrum coworkingowe", + "pt-BR": "Espaço de Coworking", + "pt": "Coworking", + "ru": "Коворкинг", + "sl": "Prostor za sodelo", + "sr": "Дељени радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間", + "mk": "Споделен работен простор", + "he": "משרדים משותפים" + } + }, + "office/physician": { + "title": { + "C": "Physician", + "en": "Physician", + "ar": "طبيب", + "ast": "Médicu", + "bn": "চিকিত্সক", + "bs": "Ljekar", + "ca": "Metge", + "cs": "Praktický lékař", + "da": "Læge", + "de": "Arztpraxis", + "el": "Ιατρός", + "en-GB": "Physician", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "fa": "پزشک", + "fi": "Lääkäri", + "fr": "Médecin", + "gl": "Médico", + "hr": "Liječnička praksa", + "hu": "Orvosi rendelő", + "is": "Læknir", + "it": "Medico", + "ja": "医者", + "kn": "ವೈದ್ಯ", + "ko": "내과의원", + "lt": "Gydytojas", + "nl": "Arts", + "no": "Lege", + "pl": "Lekarz", + "pt-BR": "Médico", + "pt": "Médico especialista", + "ro": "Fizician", + "ru": "Врач", + "sk": "Doktor", + "sl": "Ambulanta", + "sr": "Лекар", + "sv": "Läkare", + "ta": "மருத்துவர்", + "tr": "Hekim", + "uk": "Лікар", + "vi": "Văn phòng Bác sĩ", + "yue": "醫生", + "zh-CN": "医生", + "zh-HK": "醫生", + "zh-TW": "醫務所", + "mk": "Лекар", + "he": "רופא", + "ms": "Pakar Perubatan" + } + }, + "office/administrative": { + "title": { + "C": "Administrative Office", + "en": "Administrative Office", + "ar": "مكتب الإداري ", + "ast": "Oficina alministrativa", + "bs": "Administrativni ured", + "ca": "Oficina de tràmits locals", + "cs": "Místní úřad", + "da": "Administrativt kontor", + "de": "Verwaltungsamt", + "el": "Διοικητικό γραφείο", + "en-GB": "Administrative Office", + "eo": "Administra oficejo", + "es": "Oficina administrativa", + "fa": "اداره حکومتی", + "fi": "Kunnallishallinnon toimisto", + "fr": "Bureau administratif", + "gl": "Oficina administrativa", + "hu": "Közigazgatási hivatal", + "id": "Kantor Administrasi", + "is": "Stjórnsýsluskrifstofa", + "it": "Autorità locale", + "ja": "地方行政事務所", + "ko": "관리 사무소", + "lt": "Administracinis biuras", + "nl": "Bestuurlijke instantie", + "pl": "Biuro samorządowe", + "pt-BR": "Escritório Administrativo", + "pt": "Escritório da administração local", + "ro": "Oficiu Administrativ", + "ru": "Местная администрация и надзирающие органы", + "sk": "Administratívny úrad", + "sl": "Upravna enota", + "sr": "Управна канцеларија", + "sv": "Lokal myndighet", + "ta": "நிருவாக அலுவலகம்", + "tr": "İdari Ofis", + "uk": "Канцелярія", + "vi": "Cơ quan Địa phương", + "yue": "行政樓", + "zh-CN": "行政楼", + "zh-HK": "行政樓", + "zh-TW": "政府機關", + "mk": "Администрација", + "he": "משרד אדמינסטרטיבי", + "ms": "Pejabat Pentadbiran" + } + }, + "office/adoption_agency": { + "title": { + "C": "Adoption Agency", + "en": "Adoption Agency", + "ca": "Agència d'adopció", + "cs": "Adopční agentura", + "da": "Adoptionsbureau", + "de": "Adoptionsagentur", + "el": "Οργανισμός Υιοθεσίας", + "en-GB": "Adoption Agency", + "eo": "Oficejo de adopto", + "es": "Agencia de adopción", + "fa": "سازمان بهزیستی", + "fi": "Adoptiotoimisto", + "fr": "Agence d'adoption", + "gl": "Axencia de adopción", + "hr": "Agencija za posvajanje", + "hu": "Örökbefogadási ügynökség", + "is": "Ættleiðingaskrifstofa", + "it": "Agenzia per adozioni", + "ja": "養子縁組み機関", + "ko": "입양기관", + "lv": "Adopcijas Aģentūra", + "nl": "Adoptiebureau", + "no": "Adopsjonsbyrå", + "pl": "Ośrodek adopcyjny", + "pt-BR": "Agência de Adoção", + "pt": "Agência de adoção", + "ru": "Агенство по усыновлению", + "sk": "Agentúra pre adopcie", + "sr": "Агенција за усвајање", + "sv": "Adoptionsbyrå", + "tr": "Evlat Edinme Ajansı", + "uk": "Агенція з усиновлення", + "vi": "Cơ quan Nhận Con nuoi", + "zh-CN": "领养中介", + "zh-TW": "領養代理", + "mk": "Агенција за посвојување", + "he": "סוכנות אימוץ", + "ms": "Agensi Pengambilan Anak Angkat" + } + }, + "office/advertising_agency": { + "title": { + "C": "Advertising Agency", + "en": "Advertising Agency", + "ar": "وكالة إعلانية", + "ast": "Axencia de publicidá", + "ca": "Agència de publicitat", + "cs": "Reklamní agentura", + "da": "Reklamebureau", + "de": "Werbeagentur", + "el": "Διαφημιστική", + "en-GB": "Advertising Agency", + "eo": "Oficejo de reklamo", + "es": "Agencia de publicidad", + "fa": "کانون تبلیغاتی", + "fi": "Mainostoimisto", + "fr": "Agence de publicité", + "gl": "Axencia de publicidade", + "hr": "Reklamna agencija", + "hu": "Reklámügynökség", + "is": "Auglýsingastofa", + "it": "Agenzia pubblicitaria", + "ja": "広告代理店", + "ko": "광고 대행사", + "lt": "Reklamos agentūra", + "nl": "Reclamebureau", + "no": "Reklamebyrå", + "pl": "Agencja reklamowa", + "pt-BR": "Agência de Publicidade", + "pt": "Agência de publicidade", + "ru": "Рекламное агенство", + "sk": "Reklamná agentúra", + "sr": "Рекламна агенција", + "sv": "Reklambyrå", + "ta": "விளம்பர முகவர்", + "tr": "Reklam Ajansı", + "uk": "Рекламна агенція", + "vi": "Cơ sở Quảng cáo", + "zh-CN": "广告中介", + "zh-TW": "廣告代理公司", + "mk": "Рекламна агенција", + "he": "סוכנות פרסום", + "ms": "Agensi Pengiklanan" + } + }, + "office/association": { + "title": { + "C": "Nonprofit Organization Office", + "en": "Nonprofit Organization Office", + "ar": "جمعية ", + "ast": "Oficina d'ONG", + "ca": "Oficina d'organització no governamental", + "cs": "Kancelář neziskové organizace", + "de": "Büro einer Nonprofit-Organisation", + "el": "Μη Κερδοσκοπικό Γραφείο", + "en-GB": "Nonprofit Organization Office", + "eo": "Oficejo de ne-profit-cela organizaĵo", + "es": "Oficina de organización sin fines de lucro", + "fa": "دفتر سازمان غیر انتفاعی", + "fi": "Voittoa tavoittelematon järjestö", + "fr": "Bureau d'association", + "gl": "Oficina de asociación", + "hr": "Ured neprofitne udruge", + "hu": "Nonprofit szervezet iroda", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Ufficio associazione senza scopo di lucro", + "ja": "非営利組織", + "ko": "비영리 단체 사무소", + "lt": "Ne pelno organizacijos biuras", + "nl": "Kantoor van non-profitorganisatie", + "pl": "Biuro organizacji non profit", + "pt-BR": "Escritório de organização sem fins lucrativos", + "pt": "Organização sem fins lucrativos", + "ru": "Ассоциация (союз)", + "sk": "Nezisková organizácia", + "sr": "Непрофитна канцеларија", + "sv": "Frivilligorganisation", + "tr": "Yardım Kuruluşu", + "uk": "Неприбуткова організація", + "vi": "Tổ chức Phi lợi nhuận", + "zh-CN": "非营利机构办公室", + "zh-TW": "非營利組織辦公室", + "mk": "Непрофитна организација", + "he": "ארגון ללא מטרת רווח", + "ms": "Pejabat Pertubuhan Bukan Untung" + } + }, + "office/charity": { + "title": { + "C": "Charity Office", + "en": "Charity Office", + "ar": "منظمة خيرية", + "cs": "Kancelář charity", + "de": "Wohlfahrtseinrichtung", + "el": "Γραφείο Φιλανθρωπίας", + "en-GB": "Charity Office", + "eo": "Oficejo de almoza organizaĵo", + "es": "Oficina de beneficencia", + "fa": "دفتر خیریه", + "fi": "Hyväntekeväisyysjärjestö", + "fr": "Organisation de bienfaisance/charité", + "gl": "Oficina da caridade", + "hu": "Jótékonysági iroda", + "is": "Skrifstofa góðgerðasamtaka", + "it": "Organizzazione benefica", + "ja": "慈善団体", + "ko": "자선 단체 사무소", + "lt": "Labdaros biuras", + "nl": "Kantoor van liefdadigheidsinstelling", + "no": "Veldedighetskontor", + "pl": "Organizacja charytatywna", + "pt-BR": "Escritório de Caridade", + "pt": "Instituição de caridade", + "ru": "Благотворительная организация", + "sk": "Charita", + "sr": "Добротворна канцеларија", + "sv": "Välgörenhetsorganisation", + "tr": "Hayır Kurumu", + "uk": "Благодійна організація", + "vi": "Tổ chức Từ thiện", + "zh-CN": "慈善机构", + "zh-TW": "慈善機構", + "mk": "Добротворна организација", + "he": "משרד צדקה", + "ms": "Pejabat Kebajikan" + } + }, + "office/energy_supplier": { + "title": { + "C": "Energy Supplier Office", + "en": "Energy Supplier Office", + "ar": "شركة مرافق الكهرباء", + "ast": "Oficina de distribuidora d'enerxía", + "cs": "Kancelář dodavatele elektřiny", + "de": "Energieversorgungsunternehmen", + "el": "Γραφείο Προμηθειών Ενέργειας", + "en-GB": "Energy Supplier Office", + "eo": "Oficejo de elektr-provizanto", + "es": "Oficina de proveedor de energía", + "fa": "دفتر تأمین کننده انرژی", + "fi": "Energiayhtiö", + "fr": "Fournisseur d'énergie", + "gl": "Oficina de empresa enerxética", + "hr": "Uredi opskrbljivača energijom", + "hu": "Energiaszolgáltató hivatal", + "is": "Orkusöluskrifstofa", + "it": "Ufficio azienda fornitrice di energia", + "ja": "エネルギー供給者", + "ko": "에너지 공급자 사무소", + "lv": "Elektrodevēja birojs", + "nl": "Kantoor van energiemaatschappij", + "pl": "Biuro dostawcy energii", + "pt-BR": "Escritório de Fornecedor de Energia", + "pt": "Distribuidor de energia", + "ru": "Офис поставщика электроэнергии", + "sr": "Електродистрибутивна канцеларија", + "sv": "Energibolag", + "tr": "Enerji Kurumu Şubesi", + "uk": "Електропостачальна компанія", + "vi": "Văn phòng Công ty Điện lực", + "zh-CN": "电力公司", + "zh-TW": "電力公司辦公室", + "mk": "Енергостопанска служба", + "he": "משרד ספק חשמל", + "ms": "Pejabat Pembekal Tenaga" + } + }, + "office/forestry": { + "title": { + "C": "Forestry Office", + "en": "Forestry Office", + "ar": "إدارة الغابات", + "cs": "Kancelář lesní správy", + "da": "Skovbrugskontor", + "de": "Forstverwaltung", + "el": "Γραφείο Δασοκομίας", + "en-GB": "Forestry Office", + "eo": "Oficejo de arbar-mastrumo", + "es": "Oficina forestal", + "fa": "دفتر جنگلداری", + "fi": "Metsätalousvirasto", + "fr": "Administration forestière", + "gl": "Oficina forestal", + "hu": "Erdészeti hivatal", + "is": "Skrifstofa skógarvarða", + "it": "Ufficio forestale", + "ja": "林業事務所", + "ko": "삼림 관리 사무소", + "lv": "Mežniecības birojs", + "nl": "Bosbeheerkantoor", + "no": "Skogbrukskontoret", + "pl": "Leśnictwo", + "pt-BR": "Escritório da Administração Florestal", + "pt": "Posto florestal", + "ru": "Лесоводство", + "sk": "Lesný správca", + "sr": "Шумарска канцеларија", + "sv": "Skogsbolag", + "tr": "Ormancılık Şubesi", + "uk": "Лісництво", + "vi": "Văn phòng Lâm nghiệp", + "zh-CN": "林务管理", + "zh-TW": "林業事業辦公室", + "mk": "Шумарска служба", + "he": "משרד יעור", + "ms": "Pejabat Perhutanan" + } + }, + "office/foundation": { + "title": { + "C": "Foundation Office", + "en": "Foundation Office", + "ar": "مؤسسة", + "ast": "Oficina de fundación", + "cs": "kancelář nadace", + "de": "Stiftung", + "el": "Γραφείο Ιδρύματος", + "en-GB": "Foundation Office", + "eo": "Oficejo de fondaĵo", + "es": "Oficina de fundación", + "fi": "Säätiö", + "fr": "Fondation", + "gl": "Oficina de fundación", + "is": "Skrifstofa sjálfseignarstofnunar", + "it": "Fondazione", + "ja": "財団", + "ko": "재단 사무소", + "nl": "Kantoor van stichting", + "pl": "Biuro fundacji", + "pt-BR": "Escritório de Fundação", + "pt": "Fundação", + "ru": "Фонд", + "sr": "Фондациона канцеларија", + "sv": "Stiftelse", + "tr": "Vakıf", + "uk": "Фундація", + "vi": "Quỹ Từ thiện", + "zh-CN": "基金办公室", + "zh-TW": "基金會辦公室", + "mk": "Задолжбина", + "he": "משרד קרן", + "ms": "Pejabat Yayasan" + } + }, + "office/guide": { + "title": { + "C": "Tour Guide Office", + "en": "Tour Guide Office", + "ar": "مكتب الدليل السياحي", + "cs": "Kancelář turistického průvodce", + "da": "Turguidekontor", + "de": "Fremdenführer", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Tour Guide Office", + "eo": "Oficejo de vojaĝ-gvido", + "es": "Oficina de turismo", + "fa": "دفتر راهنمای تور", + "fi": "Turistiopastoimisto", + "fr": "Bureau des guides", + "gl": "Oficina de guías turísticos", + "hu": "Turisztikai iroda", + "is": "Skrifstofa leiðsögumanna", + "it": "Ufficio guide turistiche", + "ja": "ツアーガイド", + "ko": "여행 가이드 사무소", + "nl": "Gidsenkantoor", + "pl": "Przewodnik turystyczny", + "pt-BR": "Escritório de Guia Turístico", + "pt": "Guia turístico", + "ru": "Туристические гиды", + "sr": "Туристичка канцеларија", + "sv": "Guidekontor", + "tr": "Tur Rehberi", + "uk": "Гід", + "vi": "Văn phòng Hướng dẫn Du lịch", + "zh-CN": "导游机构", + "zh-TW": "導遊辦公室", + "mk": "Туристички водич", + "he": "משרד תיירות", + "ms": "Pejabat Pemandu Pelancong" + } + }, + "office/moving_company": { + "title": { + "C": "Moving Company Office", + "en": "Moving Company Office", + "cs": "Kancelář stěhovací služby", + "de": "Umzugsfirma", + "el": "Γραφείο Εταιρείας Μετακομίσεων", + "en-GB": "Moving Company Office", + "eo": "Oficejo de transloĝiĝ-helpa firmao", + "es": "Oficina de mudanzas", + "fa": "دفتر خدمات باربری / حمل بار", + "fi": "Muuttoyhtiö", + "fr": "Entreprise de déménagement", + "gl": "Empresa de mudanzas", + "hu": "Költöztetőcég iroda", + "is": "Skrifstofa flutningafyrirtækis", + "it": "Ufficio compagnia di traslochi", + "ja": "引っ越し業者", + "ko": "이삿짐센터", + "nl": "Kantoor van verhuisbedrijf", + "pl": "Biuro firmy przeprowadzkowej", + "pt-BR": "Escritório de Companhia de Mudanças", + "pt": "Empresa de mudanças", + "ru": "Помощь при переезде", + "sv": "Flyttfirma", + "tr": "Taşıma Şirketi Ofisi", + "uk": "Перевезення речей", + "vi": "Văn phòng Công ty Chuyển nhà", + "zh-CN": "搬家公司", + "zh-TW": "搬家公司辦公室", + "mk": "Преселувач", + "he": "משרד תובלה", + "ms": "Pejabat Syarikat Pemindahan" + } + }, + "office/notary": { + "title": { + "C": "Notary Office", + "en": "Notary Office", + "ar": "كاتب عدل / موثق", + "ast": "Notaría", + "ca": "Notaria", + "cs": "Notářství", + "de": "Notariat", + "el": "Γραφείο Συμβολαιογράφων", + "en-GB": "Notary Office", + "eo": "Oficejo de notario", + "es": "Escribanía / Notaría", + "fa": "دفتر اسناد رسمی", + "fi": "Notaari", + "fr": "Notaire", + "gl": "Notaría", + "hu": "Közjegyző", + "is": "Skrifstofa lögbókanda", + "it": "Ufficio notarile", + "ja": "公証役場", + "ko": "공증사무소", + "lv": "Notāru birojs", + "nl": "Notariskantoor", + "pl": "Notariusz", + "pt-BR": "Tabelionato", + "pt": "Notário", + "ru": "Нотариус", + "sk": "Notár", + "sr": "Нотарска канцеларија", + "sv": "Notarie", + "tr": "Noter", + "uk": "Нотаріус", + "vi": "Văn phòng Công chứng", + "zh-CN": "公证处", + "zh-TW": "公證機構", + "mk": "Нотар", + "he": "משרד נוטריון", + "ms": "Pejabat Penyaksi Awam" + } + }, + "office/private_investigator": { + "title": { + "C": "Private Investigator Office", + "en": "Private Investigator Office", + "ar": "مكتب محقق", + "cs": "Soukromá detektivní kancelář", + "de": "Privatdetektiv", + "el": "Γραφείο Ιδιωτικού Ερευνητή", + "en-GB": "Private Investigator Office", + "eo": "Oficejo de detektivo", + "es": "Oficina de investigador privado", + "fa": "دفتر تحقیقات خصوصی", + "fi": "Yksityisetsivä", + "fr": "Enquêteur privé/détective", + "gl": "Oficina de investigador privado", + "hu": "Magánnyomozó iroda", + "is": "Einkaspæjaraskrifstofa", + "it": "Ufficio agenzia investigativa privata", + "ja": "私立探偵社", + "ko": "사설탐정 사무소", + "lv": "Privātizmeklētēja birojs", + "nl": "Kantoor van privédetective", + "no": "Privat Etterforskning Kontor", + "pl": "Prywatny detektyw", + "pt-BR": "Escritório de detetive particular", + "pt": "Detetive privado", + "ru": "Частный сыщик", + "sr": "Детективска канцеларија", + "sv": "Privatdetektiv", + "ta": "தனியார் துப்பு துலக்கும் அலுவலகம்", + "tr": "Dedektif", + "uk": "Приватний детектив", + "vi": "Văn phòng Thám tử Tư", + "zh-CN": "私家侦探事务所", + "zh-TW": "私家偵探辦公室", + "mk": "Приватен иследувач", + "he": "משרד חוקר פרטי", + "ms": "Pejabat Penyiasat Peribadi" + } + }, + "office/quango": { + "title": { + "C": "Quasi-NGO Office", + "en": "Quasi-NGO Office", + "ar": "السلطة الإدارية المستقلة", + "cs": "kancelář kvaziautonomní nevládní organizace", + "de": "Quasi-NGO-Büro", + "en-GB": "Quasi-NGO Office", + "eo": "Oficejo de duon-registara organizaĵo", + "es": "Oficina ONG cuasiautónoma", + "fi": "Kansalaisjärjestön toimisto", + "fr": "Autorité administrative indépendante ", + "is": "Félagasamtök í samstarfi við hið opinbera (quango)", + "it": "Ufficio di una simil ONG", + "ja": "準非政府機関", + "ko": "준정부조직 사무소", + "nl": "Kantoor van quango", + "pl": "Biuro organizacji prawie pozarządowej", + "pt-BR": "Escritório de Organização Não Governamental Quase Autônoma", + "pt": "ONG subsidiada", + "ru": "Полу-независимая некоммерческая организация", + "sr": "Квази-непрофитна канцеларија", + "sv": "Kvasiautonom icke-statlig organisation", + "tr": "Yarı Özel Sivil Toplum Örgütü", + "uk": "Квазі-НГО", + "vi": "Tổ chức Bán độc lập Phi chính phủ", + "zh-CN": "准非政府组织", + "zh-TW": "準非政府組織辦公室", + "mk": "Квази-НВО", + "he": "משרד ארגון חצי לא ממשלתי", + "ms": "Pejabat Separa NGO" + } + }, + "office/surveyor": { + "title": { + "C": "Surveyor Office", + "en": "Surveyor Office", + "ar": "مكتب مساح أرضي", + "cs": "Zeměměřický úřad", + "de": "Vermessungstechniker", + "el": "Γραφείο Επιθεωρητών", + "en-GB": "Surveyor Office", + "eo": "Oficejo de analiza firmao", + "es": "Oficina de agrimensor", + "fa": "دفتر نظرسنجی", + "fi": "Maanmittaustoimisto", + "fr": "Géomètre", + "hu": "Földmérő", + "is": "Landmælingaskrifstofa", + "it": "Ufficio di supervisione", + "ja": "測量会社", + "ko": "측량기사 사무소", + "nl": "Kantoor van landmeter/expert/risicoschatter/schademeter/opiniepeilers/statisticus", + "no": "Landmålerkontor", + "pl": "Biuro geodety", + "pt-BR": "Escritório de Pesquisas ou Inspeções", + "pt": "Empresa de peritagem", + "ru": "Организация оценки и статистики", + "sr": "Геодетска канцеларија", + "sv": "Undersökning/inspektion", + "ta": "நில அளவாய்வாளர் அலுவலகம்", + "tr": "Harita Mühendisliği", + "uk": "Експет-оцінщик", + "vi": "Văn phòng Khảo sát", + "yue": "量地官寫字樓", + "zh-TW": "測繪公司辦公室", + "mk": "Земјомерна служба", + "he": "משרד מודד", + "ms": "Pejabat Juruukur" + } + }, + "office/tax_advisor": { + "title": { + "C": "Tax Advisor Office", + "en": "Tax Advisor Office", + "ar": "مستشار الضرائب", + "cs": "Kancelář daňového poradce", + "de": "Steuerberatungskanzlei", + "el": "Γραφείο Φορολογικού Συμβούλου", + "en-GB": "Tax Advisor Office", + "eo": "Oficejo de impost-konsilo", + "es": "Oficina de asesor impositivo", + "fa": "دفتر مشاور مالیاتی", + "fi": "Veroneuvonta", + "fr": "Conseiller fiscal", + "gl": "Oficina de xestor fiscal", + "hu": "Adótanácsadó", + "is": "Skattaráðgjafarskrifstofa", + "it": "Centro assistenza fiscale", + "ja": "税金アドバイザー", + "ko": "세무사 사무소", + "nl": "Kantoor van belastingsadviseur", + "no": "Skatterådgiverkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Assessoria Fiscal", + "pt": "Escritório de contabilidade", + "ru": "Офис консультанта по налогам", + "sk": "Daňový poradca", + "sr": "Канцеларија пореског саветника", + "sv": "Skatterådgivning", + "tr": "Vergi Danışmanlığı", + "uk": "Податкова консультація", + "vi": "Dich vụ Khai thuế", + "zh-CN": "税务顾问机构", + "zh-TW": "稅務顧問辦公室", + "mk": "Даночен советник", + "he": "משרד יועץ מס", + "ms": "Pejabat Penasihat Cukai" + } + }, + "office/water_utility": { + "title": { + "C": "Water Utility Office", + "en": "Water Utility Office", + "ar": "شركة المياه", + "cs": "vodohospodářská kancelář", + "da": "Vandforsyningskontor", + "de": "Wasserversorgungsunternehmen", + "el": "Γραφείο Εκμετάλλευσης Νερού", + "en-GB": "Water Utility Office", + "eo": "Oficejo de akv-provizanta firmao", + "es": "Oficina de servicios públicos de agua", + "fi": "Vesilaitostoimisto", + "fr": "Agence de l'eau", + "gl": "Oficina de servizos públicos de auga", + "hu": "Vízmű iroda", + "is": "Skrifstofa vatnsveitu", + "it": "Ufficio azienda di fornitura dell'acqua", + "ja": "水道工事店", + "ko": "수도사업소", + "nl": "Kantoor van watermaatschappij", + "pl": "Biuro wodociągowe", + "pt-BR": "Escritório de Companhia de Água", + "pt": "Fornecedor de água", + "ru": "Офис водопроводной компании", + "sv": "Vattenleverantör", + "tr": "Su Müdürlüğü", + "uk": "Водоканал", + "vi": "Văn phòng Nhà cung cấp Nước uống", + "zh-CN": "水务设施机构", + "zh-HK": "水上設施辦公室", + "zh-TW": "自來水公司", + "mk": "Водоводна служба", + "he": "משרד לשירות ציבורי - מים", + "ms": "Pejabat Pembekal Air" + } + }, + "office/religion": { + "title": { + "C": "Religious Office", + "en": "Religious Office", + "cs": "Náboženská kancelář", + "de": "Büro einer Glaubensgemeinschaft", + "el": "Γραφείο Θρησκείας", + "eo": "Kancelario religia", + "es": "Oficina religiosa", + "fa": "دفاتر مذهبی", + "fi": "Uskonnollinen toimisto", + "fr": "Bureau religieux", + "gl": "Oficina relixiosa", + "hu": "Egyházi iroda", + "it": "Ufficio religioso", + "ja": "教団事務所", + "ko": "종교 사무소", + "nl": "Religieus kantoor", + "no": "Religiøst Kontor", + "pl": "Biuro organizacji religijnej", + "pt-BR": "Escritório religioso", + "pt": "Escritório religioso", + "sr": "Верска канцеларија", + "sv": "Religiöst kontor", + "uk": "Релігійна організація", + "vi": "Văn phòng Tôn giáo", + "zh-TW": "宗教辦公處所", + "mk": "Верска служба", + "he": "משרד לנושאי דת" + } + }, + "office/consulting": { + "title": { + "C": "Consultancy Office", + "en": "Consultancy Office", + "cs": "Poradenská kancelář", + "de": "Consulting/Beratungs-Büro", + "el": "Γραφείο Συμβούλων", + "eo": "Oficejo de konsilado", + "es": "Oficina de consultora", + "fa": "دفتر مشاوره", + "fi": "Konsulttitoimisto", + "fr": "Bureau de consultant", + "it": "Studio di consulenza", + "ja": "コンサルティング事務所", + "ko": "컨설팅 사무소", + "pl": "Biuro konsultanta", + "pt-BR": "Gabinete de consultoria", + "pt": "Empresa de consultadoria", + "ru": "Консультационная компания", + "sr": "Консултантска канцеларија", + "uk": "Консалтингова фірма", + "vi": "Văn phòng Tư vấn", + "zh-TW": "諮詢處", + "mk": "Советодавно биро", + "he": "משרד ייעוץ" + } + }, + "office/diplomatic": { + "title": { + "C": "Diplomatic Office", + "en": "Diplomatic Office", + "cs": "diplomatická kancelář", + "de": "Diplomatische und konsularische Vertretung", + "el": "Διπλωματικό Γραφείο", + "eo": "Oficejo diplomatia", + "es": "Oficina diplomática", + "fa": "دفتر دیپلماتیک / امور خارجه", + "fi": "Diplomaattinen toimisto", + "fr": "Bâtiment diplomatique", + "gl": "Oficina diplomática", + "hu": "Diplomáciai iroda", + "it": "Ufficio diplomatico", + "ja": "外交施設", + "ko": "외교 사무소", + "pl": "Placówka dyplomatyczna", + "pt-BR": "Escritório diplomático", + "pt": "Escritório diplomático", + "sr": "Дипломатска канцеларија", + "uk": "Дипломатична установа", + "vi": "Văn phòng Ngoại giao", + "zh-CN": "外交代表机构", + "zh-TW": "外交辦公室", + "mk": "Дипломатска служба", + "he": "משרד דיפלומטי" + } + }, + "office/bail_bond_agent": { + "title": { + "C": "Bail Bond Agent", + "en": "Bail Bond Agent", + "cs": "zastavárna pro získání kauce", + "de": "Kautionsvermittler", + "eo": "Oficejo de kaŭci-leĝisto", + "es": "Agente de fianzas", + "fr": "Agent de cautionnement", + "hu": "Óvadékiroda", + "ja": "保釈保証業者", + "pl": "Poręczyciel majątkowy", + "pt-BR": "Agente de fiança", + "pt": "Agente de fianças", + "uk": "Застава за звільнення", + "vi": "Văn phòng Đóng tiền Thế chân Tại ngoại", + "zh-TW": "保釋債券代理人", + "mk": "Кауционист", + "he": "סוכן שחרור בערבות" + } + }, + "office/financial_advisor": { + "title": { + "C": "Financial Advisor", + "en": "Financial Advisor", + "cs": "finanční poradce", + "de": "Finanzberater", + "el": "Οικονομικός Σύμβουλος", + "eo": "Oficejo de financa konsilisto", + "es": "Asesor financiero", + "fi": "Talousneuvonta", + "fr": "Conseiller financier", + "gl": "Asesor financeiro", + "hu": "Pénzügyi Tanácsadó", + "it": "Consulente finanziario", + "ja": "ファイナンシャル・アドバイザー", + "pl": "Doradca finansowy", + "pt-BR": "Conselheiro financeiro", + "pt": "Conselheiro financeiro", + "sk": "Finančný poradca", + "sr": "Финансијски саветник", + "sv": "Finansiell rådgivare", + "uk": "Радник з фінансових питань", + "vi": "Cố vấn Tài chính", + "zh-TW": "財務顧問", + "mk": "Финансов советник", + "he": "ייעוץ כלכלי" + } + }, + "place/city": { + "title": { + "C": "City", + "en": "City", + "af": "Stad", + "ar": "مدينة", + "ast": "Ciudá", + "bn": "শহর", + "bs": "Grad", + "ca": "Ciutat ", + "cs": "Velkoměsto", + "da": "Storby", + "de": "Großstadt", + "el": "Πόλη", + "en-GB": "City", + "eo": "Urbego", + "es": "Ciudad", + "et": "Linn", + "fa": "شهر", + "fi": "Suuri kaupunki", + "fr": "Grande ville (plus de 100 000 habitants)", + "gl": "Cidade", + "hr": "Grad s više od 100 000 stanovnika", + "hu": "Nagyváros", + "id": "Kota", + "is": "Borg", + "it": "Città", + "ja": "市制地方自治体", + "kn": "ನಗರ", + "ko": "시", + "lt": "Miestas", + "lv": "Lielpilsēta", + "nl": "Stad", + "no": "By", + "pl": "Miasto", + "pt-BR": "Cidade Maior", + "pt": "Capital de distrito", + "ro": "Oraș", + "ru": "Большой город", + "sk": "Veľkomesto", + "sl": "Velemesto", + "sq": "Qytet", + "sr": "Град", + "sv": "Större stad", + "ta": "மாநகரம்", + "te": "నగరం", + "tr": "Şehir", + "uk": "Місто", + "vi": "Thành phố", + "yue": "城", + "zh-CN": "城市", + "zh-HK": "城市", + "zh-TW": "城市", + "zh": "城市", + "mk": "Град", + "bg": "Град над 100 000", + "dv": "ސިިޓީ", + "he": "עיר", + "ms": "Bandar", + "so": "Magaalo" + } + }, + "place/hamlet": { + "title": { + "C": "Hamlet", + "en": "Hamlet", + "af": "Dorpie", + "ar": "قرية صغيرة", + "ast": "Aldea", + "bs": "Zaselak", + "ca": "Llogaret", + "cs": "Osada", + "da": "Mindre beboet område", + "de": "Weiler", + "el": "Οικισμός", + "en-GB": "Hamlet", + "eo": "Vilaĝeto", + "es": "Aldea", + "fa": "دهکده", + "fi": "Pikkukylä", + "fr": "Lieu-dit ou hameau", + "gl": "Aldea", + "hr": "Zaseok", + "hu": "Falucska", + "id": "Dusun", + "is": "Þéttbýliskjarni", + "it": "Piccolo borgo", + "ja": "Hamlet", + "ko": "반", + "lt": "Viensėdis", + "nl": "Dorp/gehucht/buurtschap", + "no": "Bosetning", + "pl": "Przysiółek", + "pt-BR": "Lugarejo", + "pt": "Aldeia", + "ro": "Cătun", + "ru": "Деревня", + "sk": "Osada", + "sl": "Zaselek", + "sr": "Засеок", + "sv": "By", + "tr": "Mezra", + "uk": "Хутір", + "vi": "Thôn", + "yue": "村仔", + "zh-CN": "小村庄", + "zh-HK": "小村莊", + "zh-TW": "村莊", + "zh": "村庄", + "mk": "Заселок", + "bg": "Махала", + "he": "כפריר", + "ms": "Dukuh" + } + }, + "place/island": { + "title": { + "C": "Island", + "en": "Island", + "af": "Eiland", + "ar": "جزيرة", + "ast": "Islla", + "bn": "দ্বীপ", + "bs": "Ostrvo", + "ca": "Illa", + "cs": "Ostrov", + "da": "Ø", + "de": "Insel", + "el": "Νησί", + "en-GB": "Island", + "eo": "Insulo", + "es": "Isla", + "et": "Saar", + "fa": "جزیره", + "fi": "Saari", + "fr": "Île", + "gl": "Illa", + "hr": "Otok", + "hu": "Sziget", + "id": "Pulau", + "is": "Eyja", + "it": "Isola", + "ja": "島", + "kn": "ದ್ವೀಪ", + "ko": "섬", + "lt": "Sala", + "lv": "Sala", + "nl": "Eiland", + "no": "Øy", + "pl": "Wyspa", + "pt-BR": "Ilha", + "pt": "Ilha", + "ro": "Insulă", + "ru": "Остров", + "sk": "Ostrov", + "sl": "Otok", + "sr": "Острво", + "sv": "Ö", + "ta": "தீவு", + "tr": "Ada", + "uk": "Острів", + "vi": "Đảo", + "yue": "洲", + "zh-CN": "岛屿", + "zh-HK": "島嶼", + "zh-TW": "島嶼", + "zh": "岛屿", + "mk": "Остров", + "bg": "Остров", + "dv": "ރަށް", + "he": "אי", + "ms": "Pulau", + "so": "Jasiirad" + } + }, + "place/isolated_dwelling": { + "title": { + "C": "Isolated Dwelling", + "en": "Isolated Dwelling", + "af": "Afgeleë blyplek", + "ar": "مساكن متفرقة", + "ast": "Vivienda aisllada", + "bs": "Izolirano stanovanje", + "ca": "Vivenda aïllada", + "cs": "Samota", + "da": "Lille beboet område (1-2 hustande)", + "de": "Einzelsiedlung", + "el": "Απομονωμένες Κατοικίες", + "en-GB": "Isolated Dwelling", + "eo": "Solstaranta domo", + "es": "Vivienda aislada", + "fa": "مسکن ایزوله", + "fi": "Yksittäinen asunto", + "fr": "Lieu-dit habité (1 ou 2 habitations)", + "gl": "Vivenda illada", + "hr": "Usamljena kućanstva", + "hu": "Elszigetelt lakás", + "is": "Einöngruð búseta", + "it": "Abitazioni isolate", + "ja": "孤立した(2世帯以下の)居住区", + "ko": "독립 주택", + "lt": "Izoliuota gyvenvietė", + "nl": "Alleenstaande woning", + "pl": "Pojedyncze zabudowania", + "pt-BR": "Moradia Isolada", + "pt": "Habitação isolada", + "ru": "Хутор", + "sk": "Samota", + "sl": "Osamljeno bivališče", + "sr": "Изоловано пребивалиште", + "sv": "Isolerad boplats", + "tr": "Mesken", + "uk": "Маєток", + "vi": "Chỗ ở Hẻo lánh", + "yue": "孤離居所", + "zh-CN": "孤立居所", + "zh-HK": "孤立民居", + "zh-TW": "獨立聚落", + "zh": "孤立的民房", + "mk": "Оддалечено живеалиште", + "bg": "Изолирано жилище", + "he": "מבנה מבודד", + "ms": "Tempat Tinggal Terpencil" + } + }, + "place/locality": { + "title": { + "C": "Locality", + "en": "Locality", + "af": "Ligging", + "ar": "موقع", + "ast": "Llugar despobláu", + "bn": "অঞ্চল", + "bs": "Lokalitet", + "ca": "Indret", + "cs": "Neobydlené místo", + "da": "Lokalitet", + "de": "Örtlichkeit", + "el": "Τοποθεσία", + "en-GB": "Locality", + "eo": "Loko neloĝata", + "es": "Paraje", + "fa": "محل خالی از سکنه", + "fi": "Paikkakunta", + "fr": "Lieu-dit non habité", + "gl": "Lugar", + "hr": "Lokalitet", + "hu": "Lakatlan hely", + "id": "Daerah Sekitar", + "is": "Staðfesti", + "it": "Località non popolata", + "ja": "地形名", + "kn": "ಸ್ಥಳ", + "ko": "소재지명", + "lt": "Vietovė", + "nl": "Veldnaam", + "pl": "Miejsce nazwane", + "pt-BR": "Localidade", + "pt": "Local ermo e desabitado", + "ro": "Localitate", + "ru": "Урочище, местность", + "sk": "Lokalita", + "sl": "Kraj (OSM: ODSVETOVANO)", + "sr": "Локалитет", + "sv": "Plats", + "tr": "Mevkii", + "uk": "Місцевість", + "vi": "Địa phương", + "yue": "地方", + "zh-CN": "地方", + "zh-HK": "地區", + "zh-TW": "地點(無人定居)", + "zh": "地点(无人定居)", + "mk": "Месност", + "bg": "Местност", + "dv": "ރަށްްފުށު", + "he": "אזור בלתי מיושב", + "ms": "Lokaliti", + "so": "Deegaanka" + } + }, + "place/neighbourhood": { + "title": { + "C": "Neighborhood", + "en": "Neighborhood", + "ar": "حي سكني", + "ast": "Barriu", + "ca": "Barri", + "cs": "Část obce", + "da": "Nabolag", + "de": "Wohngegend", + "el": "Γειτονιά", + "en-GB": "Neighborhood", + "eo": "Najbaraĵo", + "es": "Barrio pequeño / Vecindario", + "fa": "همسایگی", + "fi": "Naapurusto", + "fr": "Voisinage", + "gl": "Veciñanza ou subarrio", + "hr": "Susjedstvo", + "hu": "Környék", + "id": "Tetangga", + "is": "Hverfi", + "it": "Quartiere", + "ja": "小字", + "ko": "동", + "lt": "Kaiminystė", + "nl": "Buurt", + "no": "Nabolag", + "pl": "Sąsiedztwo", + "pt-BR": "Vizinhança", + "pt": "Bairro", + "ro": "Cartier", + "ru": "Исторический район со сложившимся именем", + "sk": "Susedstvo", + "sl": "Soseska", + "sr": "Суседство", + "sv": "Kvarter", + "ta": "நகர்ப்பகுதி", + "tr": "Mahalle", + "uk": "Житловий масив", + "vi": "Hàng xóm", + "zh-CN": "街坊社区 / 小区", + "zh-HK": "近鄰", + "zh-TW": "鄰里", + "mk": "Маало", + "he": "שכונה", + "ms": "Kejiranan" + } + }, + "place/suburb": { + "title": { + "C": "Borough / Suburb", + "en": "Borough / Suburb", + "ar": "ضاحية", + "cs": "Čtvrť / předměstí", + "da": "Bydistrikt / Bydel", + "de": "Stadtteil / Vorort", + "el": "Προάστιο", + "en-GB": "Borough / Suburb", + "eo": "Suburbo", + "es": "Burgo / Suburbio", + "et": "Eeslinn", + "fa": "منطقه ، ناحیه", + "fi": "Kaupunginosa / lähiö", + "fr": "Banlieue", + "gl": "Barrio ou suburbio", + "hu": "Városrész", + "is": "Jaðarbyggð / Úthverfi", + "it": "Sobborgo", + "ja": "区", + "ko": "자치구 / 근교", + "nl": "Stadsdeel", + "pl": "Dzielnica", + "pt-BR": "Bairro", + "pt": "Subúrbio", + "ro": "Suburbie", + "ru": "Район / Пригород", + "sk": "Predmestie", + "sl": "Predmestje", + "sv": "Förort / Borough", + "tr": "Mahalle", + "uk": "Район в місті/Передмістя", + "vi": "Quận", + "zh-CN": "区(城市)", + "zh-HK": "自治市 / 郊區", + "zh-TW": "郊區", + "mk": "Населба", + "he": "פרוור" + } + }, + "place/town": { + "title": { + "C": "Town", + "en": "Town", + "af": "Dorp", + "ar": "بلدة", + "ast": "Villa", + "bn": "উপনগর", + "bs": "Gradić", + "ca": "Ciutat", + "cs": "Město", + "da": "By", + "de": "Kleinstadt", + "el": "Κωμόπολη", + "en-GB": "Town", + "eo": "Urbo", + "es": "Pueblo / Ciudad pequeña", + "et": "Linn", + "fa": "شهر کوچک", + "fi": "Pieni kaupunki / taajama", + "fr": "Ville (de 10 000 à 100 000 habitants)", + "gl": "Cidade pequena", + "hr": "Gradić", + "hu": "Város", + "id": "Kota", + "is": "Bær", + "it": "Cittadina", + "ja": "町制地方自治体", + "kn": "ಪಟ್ಟಣ", + "ko": "읍·면·동·로동자구", + "lt": "Miestelis", + "lv": "Pilsēta", + "nl": "Plaats", + "no": "Tettsted", + "pl": "Miasto", + "pt-BR": "Cidade Menor", + "pt": "Cidade / vila", + "ro": "Oraș", + "ru": "Город", + "sk": "Mesto", + "sl": "Mesto", + "sr": "Варош", + "sv": "Mellanstor stad", + "ta": "நகரம்", + "te": "పట్టణం", + "tr": "Kasaba", + "uk": "Місто (невелике)", + "vi": "Thị xã", + "yue": "鎮", + "zh-CN": "城镇", + "zh-HK": "鎮", + "zh-TW": "鄉鎮市區", + "zh": "城镇", + "mk": "Гратче", + "bg": "Град под 100 000", + "dv": "އަވަށް", + "he": "עירייה", + "ms": "Bandar", + "so": "Magaalo" + } + }, + "place/village": { + "title": { + "C": "Village", + "en": "Village", + "af": "Dorpie", + "ar": "قرية", + "ast": "Pueblu", + "bn": "গ্রাম", + "bs": "Selo", + "ca": "Poble", + "cs": "Vesnice", + "da": "Landsby", + "de": "Dorf", + "el": "Χωριό", + "en-GB": "Village", + "eo": "Vilaĝo", + "es": "Población / Aldea", + "et": "Küla", + "fa": "روستا", + "fi": "Kylä", + "fr": "Village (de 100 à 10 000 habitants)", + "gl": "Vila", + "hr": "Selo", + "hu": "Falu", + "id": "Desa", + "is": "Þorp", + "it": "Paese", + "ja": "村制の地方自治体", + "kn": "ಹಳ್ಳಿ", + "ko": "리·통", + "lt": "Kaimas", + "lv": "Ciems", + "nl": "Dorp", + "no": "Tettsted", + "pl": "Wieś", + "pt-BR": "Povoado", + "pt": "Sede de Freguesia", + "ro": "Sat", + "ru": "Село (более 300 жителей)", + "sk": "Dedina", + "sl": "Vas", + "sr": "Село", + "sv": "Mindre samhälle", + "ta": "கிராமம்", + "te": "గ్రామం", + "tr": "Köy", + "uk": "Село", + "vi": "Làng", + "yue": "村", + "zh-CN": "村庄", + "zh-HK": "鄉村", + "zh-TW": "村里", + "zh": "村庄", + "mk": "Село", + "bg": "Село", + "he": "כפר", + "ms": "Kampung" + } + }, + "place/square": { + "title": { + "C": "Square", + "en": "Square", + "ar": "ساحة", + "ast": "Plaza", + "ca": "Plaça", + "cs": "Náměstí", + "da": "Plads", + "de": "Platz", + "el": "Πλατεία", + "en-GB": "Square", + "eo": "Placo", + "es": "Plaza cívica", + "fa": "فضای عمومی باز (احاطه شده با ساختمان)", + "fi": "Aukio", + "fr": "Place", + "gl": "Praza", + "hu": "Tér", + "is": "Torg", + "it": "Piazza", + "ja": "広場(都心部)", + "ko": "광장", + "lv": "Skvērs", + "nl": "Plein", + "no": "Torg", + "pl": "Plac publiczny", + "pt-BR": "Praça Pavimentada", + "pt": "Praça ou largo", + "ro": "Piață", + "ru": "Площадь", + "sk": "Námestie", + "sl": "Trg", + "sr": "Трг", + "sv": "Torg", + "ta": "சதுக்கம்", + "tr": "Meydan", + "uk": "Майдан", + "vi": "Quảng trường", + "yue": "前地", + "zh-CN": "广场", + "zh-HK": "廣場", + "zh-TW": "廣場", + "mk": "Плоштад", + "he": "כיכר" + } + }, + "place/farm": { + "title": { + "C": "Farm", + "en": "Farm", + "ar": "مزرعة", + "ast": "Granxa", + "ca": "Granja", + "cs": "Zemědělská usedlost", + "da": "Gård", + "de": "Bauernhof", + "el": "Φάρμα", + "en-GB": "Farm", + "eo": "Farmejo (setlejo)", + "es": "Granja", + "et": "farm", + "fa": "مزرعه", + "fi": "Maatila", + "fr": "Ferme isolée", + "gl": "Granxa", + "hu": "Tanya", + "id": "Peternakan", + "is": "Býli", + "it": "Fattoria o cascina", + "ja": "農場", + "kn": "ತೋಟ", + "ko": "농장", + "lt": "Ūkis", + "lv": "Zemnieku saimniecība", + "nl": "Boerderij", + "no": "Gård", + "pl": "Farma/gospodarstwo rolne", + "pt-BR": "Fazenda", + "pt": "Quinta", + "ro": "Fermă", + "ru": "Ферма", + "sk": "Farma", + "sl": "Kmetija", + "sr": "Фарма", + "sv": "Gård", + "ta": "பண்ணை", + "tr": "Çiftlik", + "uk": "Ферма", + "vi": "Trại", + "yue": "農場", + "zh-CN": "农场", + "zh-HK": "農場", + "zh-TW": "農場", + "mk": "Фарма", + "he": "חווה", + "ms": "Ladang" + } + }, + "place/quarter": { + "title": { + "C": "Sub-Borough / Quarter", + "en": "Sub-Borough / Quarter", + "cs": "Městská čtvrť", + "da": "Nabolag / Kvarter", + "de": "Gegend / Quartier", + "en-GB": "Sub-Borough / Quarter", + "eo": "Kvartalo", + "es": "Sub-burgo / Barrio grande - Quarter", + "fa": "توابع منطقه / محله", + "fi": "Alakeskus", + "fr": "Quartier", + "gl": "Sub-municipio / Distrito", + "is": "Úthverfishluti / Hverfi", + "it": "Sotto-distretto / Quartiere", + "ja": "大字 / (市内の)町", + "ko": "하위 자치구 / 지구", + "nl": "Wijk", + "pl": "Kwartał", + "pt-BR": "Sub-bairro", + "pt": "Zona de cidade", + "ro": "Cartier", + "ru": "Подрайон / квартал", + "sl": "Mestna četrt", + "sv": "Kvarter / Under-Borough", + "tr": "Semt", + "uk": "Мікро-район/Квартал", + "vi": "Khu", + "zh-CN": "街道办/片区", + "zh-HK": "自治市分區 / 小區", + "zh-TW": "自治市區", + "mk": "Маало / Четврт", + "he": "רובע" + } + }, + "place/islet": { + "title": { + "C": "Islet", + "en": "Islet", + "ar": "جزيرة صغيرة", + "cs": "Ostrůvek", + "da": "Holm", + "de": "Kleine Insel", + "el": "Νησίδα", + "en-GB": "Islet", + "eo": "Insuleto", + "es": "Islote", + "et": "Laid", + "fa": "جزیره کوچک", + "fi": "Luoto", + "fr": "Îlot", + "gl": "Illote", + "hu": "Szigetecske", + "is": "Hólmi", + "it": "Isoletta", + "ja": "小島", + "ko": "작은 섬", + "nl": "Eilandje < 1 km²", + "no": "Liten øy", + "pl": "Wysepka na wodzie", + "pt-BR": "Ilhota", + "pt": "Ilhéu", + "ru": "Островок", + "sr": "Острвце", + "sv": "Holme", + "uk": "Острівець", + "vi": "Đảo Nhỏ", + "yue": "洲仔", + "zh-CN": "小岛", + "zh-TW": "小島", + "mk": "Островче", + "he": "איון", + "ms": "Anak Pulau" + } + }, + "place/plot": { + "title": { + "C": "Plot", + "en": "Plot", + "ar": "قطعة الأرض", + "cs": "Parcela", + "da": "Matrikel", + "de": "Grundstück", + "en-GB": "Plot", + "eo": "Parcelo", + "es": "Parcela", + "et": "Krunt", + "fa": "طرح / قطعه زمین", + "fi": "Tontti", + "fr": "Parcelle", + "gl": "Parcela", + "hu": "Parcella", + "is": "Skiki", + "it": "Particella catastale", + "ja": "小区画", + "ko": "필지", + "nl": "Perceel", + "no": "Tomt", + "pl": "Działka", + "pt-BR": "Lote", + "pt": "Lote de terreno", + "ru": "Земельный участок", + "sr": "Парцела", + "sv": "Tomt", + "uk": "Ділянка", + "vi": "Miếng đất", + "zh-TW": "地籍", + "mk": "Парцела", + "he": "חלקה", + "ms": "Plot" + } + }, + "place/city_block": { + "title": { + "C": "City Block", + "en": "City Block", + "cs": "Městský blok", + "de": "Häuserblock", + "el": "Οικοδομικό Τετράγωνο", + "eo": "Dombloko", + "es": "Manzana urbana", + "fa": "بلوک شهری", + "fi": "Kortteli", + "fr": "Îlot urbain", + "gl": "Mazá urbana", + "hu": "Várostömb", + "is": "Byggingareitur", + "it": "Isolato urbano", + "ja": "街区(日本では未定義)", + "ko": "도시 블록", + "nl": "Huizenblok", + "no": "Bykvartal", + "pl": "Kwartał", + "pt-BR": "Quarteirão", + "pt": "Quarteirão", + "sr": "Градска четврт", + "sv": "Kvarter", + "uk": "Квартал в місті", + "zh-CN": "城市街区", + "zh-TW": "城市街區", + "mk": "Градски блок", + "he": "מבנן עירוני" + } + }, + "shop/alcohol": { + "title": { + "C": "Liquor Store", + "en": "Liquor Store", + "af": "Drankwinkel", + "ar": "متجر خمور", + "ast": "Llicorería", + "bs": "Prodavnica alkoholnih pića", + "ca": "Botiga de licors", + "cs": "Prodejna alkoholu", + "da": "Vinforhandler", + "de": "Spirituosenladen", + "el": "Κάβα Ποτών", + "en-GB": "Off licence (Alcohol shop)", + "eo": "Alkohola vendejo", + "es": "Licorería", + "et": "Alkoholipood", + "fa": "مغازه مشروبات الکلی", + "fi": "Alkoholimyymälä", + "fr": "Magasin de vente d'alcool", + "gl": "Licoraría", + "hr": "Prodavaonica alkoholnih pića", + "hu": "Alkoholüzlet", + "id": "Toko Minuman", + "is": "Vínbúð", + "it": "Negozio di liquori", + "ja": "酒店", + "kn": " ಸಾರಾಯಿ ಅಂಗಡಿ", + "ko": "주류상", + "lt": "Alkoholinių gėrimų parduotuvė", + "lv": "Alkoholisko dzērienu veikals", + "nl": "Slijterij", + "no": "Vinutsalg", + "pl": "Sklep monopolowy", + "pt-BR": "Loja de alcoólicos licenciada", + "pt": "Loja de bebidas alcoólicas", + "ro": "Magazin de Băuturi Alcoolice", + "ru": "Алкогольный магазин", + "sk": "Obchod s alkoholom", + "sl": "Trgovina z alkoholnimi pijačami", + "sr": "Продавница алкохолних пића", + "sv": "Vin-och-spritaffär", + "ta": "மதுபானக் கடை", + "tr": "İçki Dükkanı", + "uk": "Алкогольні напої", + "vi": "Tiệm Rượu", + "yue": "酒莊", + "zh-CN": "酒水店", + "zh-HK": "酒類專賣店", + "zh-TW": "酒類專賣店", + "zh": "酒品店", + "mk": "Продавница за алкохолни пијалаци", + "bg": "Магазин за алкохол", + "he": "חנות משקאות חריפים" + } + }, + "shop/anime": { + "title": { + "C": "Anime / Manga Shop", + "en": "Anime / Manga Shop", + "ar": "متجر أنيمي / مانغا", + "cs": "obchod s Anime / Manga", + "de": "Anime-, Manga-Geschäft", + "eo": "Anime-/manga-vendejo", + "es": "Tienda de anime / manga", + "fa": "فروشگاه انیمه / مانگا (کمیک ژاپنی)", + "fi": "Anime-/mangaliike", + "fr": "Boutique de manga et anime", + "ja": "アニメショップ", + "ko": "애니메이션/만화 가게", + "pl": "Sklep z mangą i anime", + "pt-BR": "Loja de Anime / Manga", + "pt": "Loja de animé", + "ru": "Магазин аниме / манги", + "sr": "Продавница манга и аниме", + "uk": "Аніме/манга магазин", + "vi": "Tiệm Anime/Manga", + "zh-CN": "动漫/漫画店", + "zh-TW": "動畫/漫畫店", + "mk": "Продавница за аниме/манга", + "he": "חנות אנימה/מנגה" + } + }, + "shop/antiques": { + "title": { + "C": "Antiques Shop", + "en": "Antiques Shop", + "ar": "متجر تحف وأنتيكات", + "ast": "Anticuariu", + "ca": "Botiga d'antiguitats", + "cs": "Starožitnictví", + "da": "Antikvitetsforretning", + "de": "Antiquitätenhändler", + "el": "Παλαιοπωλείο", + "en-GB": "Antiques Shop", + "eo": "Antikvaĵa vendejo", + "es": "Tienda de antigüedades", + "et": "Antikvariaat", + "fa": "فروشگاه عتیقه‌جات", + "fi": "Antiikkiliike", + "fr": "Antiquaire", + "gl": "Tenda de antigüidades", + "hr": "Antikvarijat", + "hu": "Régiségkereskedés", + "id": "Toko Barang Antik", + "is": "Antíkverslun", + "it": "Antiquario", + "ja": "古美術品店", + "ko": "골동품 가게", + "lt": "Atikvarų parduotuvė", + "lv": "Antikvariāts", + "nl": "Antiquair", + "no": "Antikvariat / antikvitetshandel", + "pl": "Antykwariat", + "pt-BR": "Loja de Antiguidades", + "pt": "Loja de antiguidades", + "ro": "Anticariat", + "ru": "Магазин антиквариата", + "sk": "Obchod so tarožitnosťami", + "sl": "Starinarnica", + "sr": "Антикварница", + "sv": "Antikaffär", + "ta": "பழம்பொருள் அங்காடி", + "tr": "Antika Dükkanı", + "uk": "Антикварний магазин ", + "vi": "Tiệm Đồ Cổ", + "zh-CN": "古董店", + "zh-HK": "古董店", + "zh-TW": "古董店", + "mk": "Старинарница", + "he": "חנות עתיקות" + } + }, + "shop/art": { + "title": { + "C": "Art Store", + "en": "Art Store", + "ar": "متجر الفنون", + "ast": "Galería d'arte", + "ca": "Botiga d'art", + "cs": "Obchod s uměním", + "da": "Kunstbutik", + "de": "Kunsthandlung", + "en-GB": "Art Shop", + "eo": "Artaĵa vendejo", + "es": "Tienda de arte", + "et": "Kunstitarvete kauplus", + "fa": "فروشگاه آثار هنری", + "fi": "Taideliike", + "fr": "Marchand d'art", + "gl": "Tenda de arte", + "hr": "Trgovina umjetninama", + "hu": "Műalkotásbolt", + "is": "Listmunaverslun", + "it": "Negozio di opere d'arte", + "ja": "美術品販売店", + "ko": "미술품 가게", + "lt": "Meno parduotuvė", + "lv": "Mākslas veikals", + "nl": "Kunstwinkel", + "no": "Kunsthandel", + "pl": "Sklep z dziełami sztuki", + "pt-BR": "Loja de Arte", + "pt": "Loja de artigos de arte", + "ro": "Magazin de Artă", + "ru": "Магазин произведений искусства", + "sk": "Umelecký obchod", + "sl": "Trgovina z umetninami", + "sr": "Продавница уметнина", + "sv": "Konstaffär", + "ta": "கலை அங்காடி", + "tr": "Sanat Mağazası", + "uk": "Художній салон", + "vi": "Tiệm Nghệ phẩm", + "zh-CN": "艺术品店", + "zh-HK": "藝術商店", + "zh-TW": "藝術商店", + "mk": "Продавница за уметнички дела", + "he": "חנות לחפצי אומנות" + } + }, + "shop/baby_goods": { + "title": { + "C": "Baby Goods Store", + "en": "Baby Goods Store", + "ar": "متجر سلع أطفال", + "ca": "Botiga per a nadons", + "cs": "Potřeby pro děti", + "da": "Babyudstyrsbutik", + "de": "Babysachengeschäft", + "el": "Κατάστημα Βρεφικών Ειδών", + "en-GB": "Baby Goods Shop", + "eo": "Bebaĵa vendejo", + "es": "Tienda de productos para bebé", + "et": "Beebipood", + "fa": "فروشگاه کالای کودک", + "fi": "Vauvatarvikeliike", + "fr": "Magasin de produits pour bébés", + "gl": "Tenda de produtos para meniños", + "hr": "Trgovina za bebe", + "hu": "Bababolt", + "id": "Toko Perlengkapan Bayi", + "is": "Barnavöruverslun", + "it": "Negozio di prodotti per l'infanzia", + "ja": "赤ちゃん用品店", + "ko": "유아 용품 가게", + "lt": "Vaikų prekių parduotuvė", + "nl": "Babyartikelenwinkel", + "no": "Babyutstyrsbutikk", + "pl": "Sklep z artykułami dla dzieci i niemowląt", + "pt-BR": "Loja de Artigos para Bebês", + "pt": "Loja de acessórios para bebés", + "ro": "Magazin de Produse pentru Bebeluși", + "ru": "Магазин детских товаров", + "sk": "Obchod s detskými potrebami", + "sl": "Trgovina za otroke", + "sr": "Продавница беби-опреме", + "sv": "Babyprodukter", + "tr": "Bebek Malzemeleri Mağazası", + "uk": "Товари для немовлят", + "vi": "Tiệm Đồ Sơ sinh", + "zh-CN": "婴儿用品店", + "zh-HK": "嬰兒用品店", + "zh-TW": "嬰兒用品店", + "mk": "Продавница за бебешка опрема", + "he": "חנות לדברי תינוקות" + } + }, + "shop/bag": { + "title": { + "C": "Bag/Luggage Store", + "en": "Bag/Luggage Store", + "ar": "متجر حقائب وأمتعة", + "ca": "Botiga d'equipatges", + "cs": "Obchod se zavazadly", + "da": "Taske/Kuffertbutik", + "de": "Taschenladen", + "el": "Κατάστημα αποσκευών", + "en-GB": "Bag/Luggage Shop", + "eo": "Saka/valiza vendejo", + "es": "Tienda de carteras / equipaje", + "et": "Kotipood", + "fa": "فروشگاه کیف/چمدان", + "fi": "Matkalaukkumyymälä", + "fr": "Bagagerie", + "gl": "Tenda de maletas", + "hr": "Trgovina sa torbama", + "hu": "Táska- és bőröndbolt", + "id": "Toko Tas/Koper", + "is": "Töskubúð", + "it": "Negozio di borse e valigie", + "ja": "バッグ/カバン店", + "ko": "가방/여행가방 가게", + "lt": "Kuprinių/lagaminų parduotuvė", + "lv": "Somu / Čemodānu veikals", + "nl": "Zak-/Reiskofferwinkel", + "no": "Veskebutikk", + "pl": "Sklep z torebkami/walizkami", + "pt-BR": "Loja de Bolsas/Malas", + "pt": "Loja de malas / bagagem", + "ro": "Magazin de Bagaje", + "ru": "Магазин сумок и саквояжа", + "sk": "Obchod s kuframi", + "sl": "Trgovina za prtljago", + "sv": "Väskaffär", + "tr": "Çanta/Valiz Mağazası", + "uk": "Магазин з продажу валіз", + "vi": "Tiệm Túi", + "zh-CN": "箱包店", + "zh-HK": "袋/行李箱店", + "zh-TW": "包包/行李店", + "mk": "Продавница за чанти, торби и куфери", + "he": "חנות מזוודות" + } + }, + "shop/bakery": { + "title": { + "C": "Bakery", + "en": "Bakery", + "af": "Bakkery", + "ar": "مخبز", + "ast": "Panadería", + "bn": "বেকারি", + "bs": "Pekara", + "ca": "Fleca", + "cs": "Pekařství", + "da": "Bager", + "de": "Bäckerei", + "el": "Αρτοποιείο", + "en-GB": "Bakery", + "eo": "Panejo", + "es": "Panadería", + "et": "Pagariäri", + "fa": "نانوایی", + "fi": "Leipomo", + "fr": "Boulangerie", + "gl": "Panadaría", + "hr": "Pekara", + "hu": "Pékség", + "id": "Toko Roti", + "is": "Bakarí", + "it": "Panificio", + "ja": "パン屋", + "kn": "ಅಟ್ಟಂಗಡಿ", + "ko": "제과점", + "lt": "Kepykla", + "lv": "Konditoreja", + "nl": "Bakkerij", + "no": "Bakeri", + "pl": "Piekarnia", + "pt-BR": "Padaria", + "pt": "Padaria", + "ro": "Brutărie", + "ru": "Булочная", + "sk": "Pekáreň", + "sl": "Pekarna", + "sq": "Furrë buke", + "sr": "Пекара", + "sv": "Bageri", + "ta": "அடுமனை", + "tr": "Fırın", + "uk": "Булочна", + "vi": "Tiệm Bánh", + "yue": "麪飽舖同餅家", + "zh-CN": "面包店", + "zh-HK": "麵包西餅店", + "zh-TW": "麵包店", + "zh": "面包店", + "mk": "Пекарница", + "bg": "Пекарна", + "he": "מאפייה" + } + }, + "shop/bathroom_furnishing": { + "title": { + "C": "Bathroom Furnishing Store", + "en": "Bathroom Furnishing Store", + "ar": "متجر أثاث الحمام", + "ca": "Botiga de mobles de bany", + "cs": "Vybavení koupelen", + "da": "Badeværelseindretningsbutik", + "de": "Badeinrichtungsgeschäft", + "el": "Κατάστημα εξοπλισμού μπάνιου", + "en-GB": "Bathroom Furnishing Shop", + "eo": "Lavĉambr-akcesoraĵa vendejo", + "es": "Tienda de muebles de baño", + "et": "Santehnika kauplus", + "fa": "فروشگاه لوازم حمام", + "fi": "Kylpyhuoneliike", + "fr": "Fournitures pour salles de bain", + "gl": "Tenda de mobles de baño", + "hr": "Prodavaonica kupaonske opreme", + "hu": "Fürdőszobabútor-bolt", + "id": "Toko Perlengkapan Kamar Mandi", + "is": "Baðinnréttingaverslun", + "it": "Negozio di prodotti per il bagno", + "ja": "浴室用品店", + "ko": "화장실 기구 가게", + "lt": "Vonios baldų parduotuvė", + "nl": "Badkamermeubelwinkel", + "no": "Baderomsbutikk", + "pl": "Sklep z wyposażeniem łazienek", + "pt-BR": "Loja de Mobiliário de Banheiros", + "pt": "Loja de assessórios para casas de banho", + "ro": "Magazin de Mobilier pentru Băi", + "ru": "Магазин продающий мебель для ванных комнат", + "sk": "Obchod s kúpelňami", + "sl": "Trgovina s kopalniško opremo", + "sv": "Badrumsinredning", + "tr": "Züccaciye", + "uk": "Магазин сантехніки", + "vi": "Tiệm Bán đồ Phòng tắm", + "zh-CN": "浴室家具店", + "zh-HK": "浴室配件店", + "zh-TW": "衛浴用品店", + "mk": "Продавница за санитарии", + "he": "חנות רהיטי שירותים/מקלחת" + } + }, + "shop/beauty": { + "title": { + "C": "Beauty Shop", + "en": "Beauty Shop", + "af": "Skoonheidswinkel", + "ar": "محل تجميل", + "ast": "Cosmética", + "bs": "Salon ljepote", + "ca": "Botiga de cosmètics", + "cs": "Kosmetický salón", + "da": "Skønhedsforhandler", + "de": "Schönheitssalon", + "el": "Κατάστημα Ομορφιάς", + "en-GB": "Beauty Shop", + "eo": "Salono de beligado", + "es": "Salón de belleza", + "et": "Ilusalong", + "fa": "فروشگاه زیبایی", + "fi": "Kauneushoitola", + "fr": "Salon de beauté", + "gl": "Salón de beleza", + "hr": "Kozmetički salon", + "hu": "Szépségszalon", + "id": "Salon Kecantikan", + "is": "Fegrunarstofa", + "it": "Negozio di articoli di bellezza", + "ja": "美容サービス", + "ko": "뷰티 샵", + "lt": "Grožio salonas", + "lv": "Skaistumveikals", + "nl": "Schoonheidssalon", + "no": "Skjønnhetsbutikk", + "pl": "Salon urody", + "pt-BR": "Salão de Beleza", + "pt": "Centro de estética", + "ro": "Magazin Beauty", + "ru": "Салон красоты", + "sk": "Bižutéria", + "sl": "Lepotilni salon", + "sr": "Салон лепоте", + "sv": "Skönhetssalong", + "ta": "அழகுசாதனக் கடை", + "tr": "Güzellik Salonu", + "uk": "Cалон краси", + "vi": "Tiệm Mỹ phẩm", + "yue": "美容院", + "zh-CN": "美容店", + "zh-HK": "美容院", + "zh-TW": "美容店", + "zh": "美容店", + "mk": "Салон за убавина", + "bg": "Козметик", + "he": "חנות מוצרי יופי/טיפוח" + } + }, + "shop/bed": { + "title": { + "C": "Bedding/Mattress Store", + "en": "Bedding/Mattress Store", + "ar": "متجر مراتب ولوازم الفراش", + "ca": "Botiga de matalassos", + "cs": "Prodejna postelí", + "da": "Sengetøj / Madras forhandler", + "de": "Betten/Matratzengeschäft", + "el": "Κατάστημα κρεβατιών/στρωμάτων", + "en-GB": "Bed Shop", + "eo": "Lita/matraca vendejo", + "es": "Tienda de ropa de cama/colchón", + "et": "Magamistoa kauba pood", + "fa": "فروشگاه کالای خواب/ تشک", + "fi": "Vuodetarvikeliike", + "fr": "Magasin de literie", + "gl": "Tenda de colchóns/roupa de cama", + "hr": "Trgovina opreme za krevete", + "hu": "Ágy- és matracbolt", + "id": "Toko Selimut/Matras", + "is": "Rúm/Dýnuverslun", + "it": "Negozio di letti/materassi", + "ja": "寝具店", + "ko": "침구/매트리스 가게", + "lv": "Gultasveļas / Matraču veikals", + "nl": "Bed-/Matrassenwinkel", + "no": "Sengebutikk", + "pl": "Sklep z łóżkami/materacami", + "pt-BR": "Loja de Camas e Colchões", + "pt": "Loja de camas / colchões", + "ro": "Magazin de Saltele", + "ru": "Магазин матрасов и постельных принадлежностей", + "sk": "Obchod s posteľami/matracmi", + "sl": "Trgovina s posteljnino in žimnicami", + "sr": "Продавница душека", + "sv": "Sängaffär", + "tr": "Yatak Mağazası", + "uk": "Магазин постільних приналежностей ", + "vi": "Tiệm Nệm", + "zh-CN": "床上用品店", + "zh-HK": "寢具/床褥店", + "zh-TW": "床具/寐具店", + "mk": "Продавница за кревети и постелнина", + "he": "חנות מזרנים" + } + }, + "shop/beverages": { + "title": { + "C": "Beverage Store", + "en": "Beverage Store", + "af": "Koeldrankwinkel", + "ar": "محل مشروبات", + "ast": "Venta de bebíes", + "bs": "Prodavnica pića", + "ca": "Botiga de begudes", + "cs": "Prodejna nápojů", + "da": "Vinforhandler", + "de": "Getränkehandel", + "el": "Αναψυκτήριο", + "en-GB": "Beverages Shop", + "eo": "Trinkaĵa vendejo", + "es": "Tienda de bebidas", + "et": "Joogikauplus", + "fa": "فروشگاه آشامیدنی", + "fi": "Viinakauppa", + "fr": "Magasin de boissons", + "gl": "Tenda de bebidas", + "hr": "Trgovina s pićima", + "hu": "Italbolt", + "id": "Toko Minuman", + "is": "Drykkjarbúð", + "it": "Negozio di bevande", + "ja": "飲料店", + "ko": "음료 가게", + "lt": "Gėrimų parduotuvė", + "lv": "Dzērienu veikals", + "nl": "Drankenwinkel", + "no": "Øl- og vinutsalg", + "pl": "Sklep z napojami", + "pt-BR": "Loja de Bebidas", + "pt": "Loja de bebidas", + "ro": "Magazin de Băuturi", + "ru": "Магазин по продаже алкогольных и безалкогольных напитков", + "sk": "Obchod s nápojmi", + "sl": "Trgovina s pijačami", + "sr": "Продавница пића", + "sv": "Dryckaffär", + "tr": "İçecek Dükkanı", + "uk": "Напої", + "vi": "Tiệm Đồ uống", + "yue": "飲品舖", + "zh-CN": "饮料店", + "zh-HK": "飲品店", + "zh-TW": "飲品店", + "zh": "饮品店", + "mk": "Продавница за пијалаци", + "bg": "Магазин за алкохол и цигари", + "he": "חנות משקאות" + } + }, + "shop/bicycle": { + "title": { + "C": "Bicycle Shop", + "en": "Bicycle Shop", + "af": "Fietswinkel", + "ar": "متجر دراجات هوائية", + "ast": "Tienda de ciclismu", + "bn": "সাইকেলের দোকান", + "bs": "Prodavnica bicikala", + "ca": "Botiga de bicicletes", + "cs": "Cykloprodejna", + "da": "Cykelbutik", + "de": "Fahrradladen", + "el": "Κατάστημα Ποδηλάτων", + "en-GB": "Bicycle Shop", + "eo": "Bicikla vendejo", + "es": "Tienda de bicicletas", + "et": "Rattapood", + "fa": "فروشگاه دوچرخه", + "fi": "Pyöräliike", + "fr": "Magasin de vélos", + "gl": "Tenda de bicicletas", + "hr": "prodavaonica bicikala", + "hu": "Kerékpárbolt", + "id": "Toko Sepeda", + "is": "Hjólabúð", + "it": "Negozio di biciclette", + "ja": "自転車店", + "ko": "자전거 가게", + "lt": "Dviračių parduotuvė", + "lv": "Velo veikals", + "nl": "Fietswinkel", + "no": "Sykkelbutikk", + "pl": "Sklep rowerowy", + "pt-BR": "Loja de Bicicletas", + "pt": "Loja de bicicletas", + "ro": "Magazin de Biciclete", + "ru": "Веломагазин", + "sk": "Cykloobchod", + "sl": "Kolesarska trgovina", + "sr": "Продавница бицикала", + "sv": "Cykelaffär", + "ta": "மிதிவண்டிக் கடை", + "tr": "Bisiklet Mağazası", + "uk": "Веломагазин", + "vi": "Tiệm Xe đạp", + "yue": "單車舖", + "zh-CN": "自行车店", + "zh-HK": "單車店", + "zh-TW": "單車店", + "zh": "自行车店", + "mk": "Продавница за велосипеди", + "bg": "Магазин за велосипеди", + "he": "חנות אופניים", + "ms": "Kedai Basikal" + } + }, + "shop/bookmaker": { + "title": { + "C": "Bookmaker", + "en": "Bookmaker", + "ar": "مكتب رهانات", + "ast": "Encuadernador", + "ca": "Cusidor de llibres", + "cs": "Sázková kancelář", + "da": "Bookmaker", + "de": "Wettbüro", + "el": "Πρακτορείο στοιχημάτων", + "en-GB": "Bookmaker", + "eo": "Vetperistejo", + "es": "Corredor de apuestas", + "et": "Trükkal", + "fa": "دلال شرط‌بندی", + "fi": "Kirjapaino", + "fr": "Bookmaker", + "gl": "Corredor de apostas", + "hr": "Kladioničar", + "hu": "Fogadóiroda", + "id": "Juru Taruh", + "is": "Veðmangari", + "it": "Agenzia di scommesse", + "ja": "公営競技投票券売り場", + "ko": "마권업자", + "lt": "Knygrišys", + "nl": "Bookmaker (gokkantoor)", + "no": "Bookmaker", + "pl": "Bukmacher", + "pt-BR": "Casa de Apostas", + "pt": "Casa de apostas", + "ro": "Atelier de Cărți", + "ru": "Букмекерская контора", + "sk": "Stávková kancelária", + "sl": "Stavnica", + "sr": "Кладионичар", + "sv": "Vadslagning", + "tr": "Bahis Merkezi", + "uk": "Букмекер", + "vi": "Phòng Đánh cá Ngựa", + "zh-CN": "书商", + "zh-HK": "投注站", + "zh-TW": "投注處", + "mk": "Обложувалница", + "he": "כורך ספרים" + } + }, + "shop/books": { + "title": { + "C": "Book Store", + "en": "Book Store", + "ar": "متجر كتب", + "ast": "Llibrería", + "ca": "Llibreria", + "cs": "Knihkupectví", + "da": "Boghandler", + "de": "Buchladen", + "el": "Βιβλιοπωλείο", + "en-GB": "Book Shop", + "eo": "Libra vendejo", + "es": "Librería (venta de libros)", + "et": "Raamatupood", + "fa": "کتاب‌فروشی", + "fi": "Kirjakauppa", + "fr": "Librairie", + "gl": "Libraría", + "hi": "किताबों की दुकान", + "hr": "Knjižara", + "hu": "Könyvesbolt", + "id": "Toko Buku", + "is": "Bókabúð", + "it": "Libreria", + "ja": "本屋", + "ko": "서점", + "lt": "Knygynas", + "lv": "Grāmatu veikals", + "nl": "Boekwinkel", + "no": "Bokhandel", + "pl": "Księgarnia", + "pt-BR": "Livraria", + "pt": "Livraria", + "ro": "Magazin de Cărți", + "ru": "Книжный магазин", + "sk": "Kníhkupectvo", + "sl": "Knjigarna", + "sr": "Продавница књига", + "sv": "Bokhandel", + "ta": "புத்தகக் கடை", + "tr": "Kitapçı", + "uk": "Книжковий магазин", + "vi": "Hiệu Sách", + "zh-CN": "书店", + "zh-HK": "書店", + "zh-TW": "書店", + "mk": "Книжарница", + "he": "חנות ספרים" + } + }, + "shop/butcher": { + "title": { + "C": "Butcher", + "en": "Butcher", + "af": "Slagter", + "ar": "جزار", + "ast": "Carnicería", + "bn": "কসাই", + "bs": "Mesar", + "ca": "Carnisseria", + "cs": "Řeznictví", + "da": "Slagter", + "de": "Metzger", + "el": "Κρεοπωλείο", + "en-GB": "Butcher", + "eo": "Vianda vendejo", + "es": "Carnicería", + "et": "Lihapood", + "fa": "قصابی", + "fi": "Lihakauppa", + "fr": "Boucher", + "gl": "Carnizaría", + "hr": "Mesnica", + "hu": "Hentes", + "id": "Penjagalan", + "is": "Slátrari", + "it": "Macellaio", + "ja": "精肉店", + "ko": "정육점", + "lt": "Mėsinė", + "lv": "Miesnieks", + "nl": "Slagerij", + "no": "Slakter", + "pl": "Sklep mięsny", + "pt-BR": "Açougue", + "pt": "Talho", + "ro": "Măcelărie", + "ru": "Мясной", + "sk": "Mäsiarstvo", + "sl": "Mesar", + "sr": "Месар", + "sv": "Slaktare", + "ta": "இறைச்சிக் கடை", + "tr": "Kasap", + "uk": "М’ясна лавка", + "vi": "Hàng Thịt", + "yue": "肉舖", + "zh-CN": "肉店", + "zh-HK": "肉舖", + "zh-TW": "肉販", + "zh": "肉贩", + "mk": "Месарница", + "bg": "Колбаси", + "he": "קצב" + } + }, + "shop/candles": { + "title": { + "C": "Candle Shop", + "en": "Candle Shop", + "ar": "متجر الشموع", + "ca": "Botiga d'espelmes", + "cs": "Obchod se svíčkami", + "da": "Stearinlysforhandler", + "de": "Kerzengeschäft", + "el": "Κατάστημα Κεριών", + "en-GB": "Candle Shop", + "eo": "Kandela vendejo", + "es": "Tienda de velas", + "et": "Küünlapood", + "fa": "شمع فروشی", + "fi": "Kynttiläkauppa", + "fr": "Magasin de bougies", + "gl": "Tenda de velas", + "hr": "Prodavaonica svijeća", + "hu": "Gyertya- és mécsesbolt", + "id": "Toko Lilin", + "is": "Kertabúð", + "it": "Negozio di candele", + "ja": "キャンドル専門店", + "ko": "양초 가게", + "lt": "Žvakių parduotuvė", + "lv": "Sveču veikals", + "nl": "Kaarsenwinkel", + "no": "Lysstøperi", + "pl": "Sklep ze świecami", + "pt-BR": "Loja de Velas", + "pt": "Loja de velas", + "ro": "Magazin de Lumânări", + "ru": "Свечной магазин", + "sk": "Obchod so svičkami", + "sl": "Svečarstvo", + "sr": "Свећарница", + "sv": "Ljusaffär", + "tr": "Mum Mağazası", + "uk": "Магазин свічок", + "vi": "Tiệm Cây nến", + "zh-CN": "蜡烛店", + "zh-HK": "蠟燭店", + "zh-TW": "燈具店", + "mk": "Свеќарница", + "he": "חנות נרות" + } + }, + "shop/car": { + "title": { + "C": "Car Dealership", + "en": "Car Dealership", + "af": "Voertuighandelaar", + "ar": "وكالة سيارات", + "ast": "Venta d'automóviles", + "bn": "গাড়ির ডিলারশিপ", + "bs": "Salon automobila", + "ca": "Concessionari de cotxes", + "cs": "Prodejna aut", + "da": "Bilforhandler", + "de": "Autohändler", + "el": "Εμπορία Αυτοκινήτων", + "en-GB": "Car Dealership", + "eo": "Aŭtomobila vendejo", + "es": "Concesionario de automóviles", + "et": "Autopood", + "fa": "نمایندگی خودرو", + "fi": "Autokauppa", + "fr": "Concessionnaire automobile", + "gl": "Concesionario de automóbiles", + "hr": "Prodavaonica automobila", + "hu": "Autókereskedés", + "id": "Dealer Mobil", + "is": "Bílabúð", + "it": "Concessionario", + "ja": "カーディーラー", + "ko": "자동차 대리점", + "lt": "Automobilių prekybos atstovybė", + "lv": "Auto dīleris", + "nl": "Autoshowroom", + "no": "Bilforhandler", + "pl": "Sprzedaż samochodów", + "pt-BR": "Revenda de Automóveis", + "pt": "Loja de automóveis", + "ro": "Magazin de Mașini", + "ru": "Автодилер", + "sk": "Predajňa áut", + "sl": "Avtomobilski salon", + "sr": "Салон аутомобила", + "sv": "Bilhandlare", + "ta": "வாகன விற்பனையகம்", + "tr": "Oto Galeri", + "uk": "Автосалон", + "vi": "Tiệm Xe hơi", + "yue": "車行", + "zh-CN": "汽车店", + "zh-HK": "車行", + "zh-TW": "汽車行", + "zh": "车行", + "mk": "Автосалон", + "bg": "Автомобили", + "he": "סוכנות רכב" + } + }, + "shop/car_parts": { + "title": { + "C": "Car Parts Store", + "en": "Car Parts Store", + "af": "Onderdelewinkel", + "ar": "محل بيع أجزاء السيارة", + "ast": "Repuestos d'automóviles", + "bn": "গাড়ির যন্ত্রাংশের দোকান", + "bs": "Prodavnica auto dijelova", + "ca": "Botiga de recanvis de cotxe", + "cs": "Náhradní díly pro auta", + "da": "Bilreservedelsforhandler", + "de": "Autoteilehandel", + "el": "Ανταλλακτικά Αυτοκινήτων", + "en-GB": "Car Parts Shop", + "eo": "Aŭtomobil-parta vendejo", + "es": "Tienda de componentes de automóvil", + "et": "Autoosade pood", + "fa": "فروشگاه قطعات خودرو", + "fi": "Varaosamyymälä", + "fr": "Magasin de pièces automobiles", + "gl": "Tenda de recambios de automóbiles", + "hr": "Trgovina rezevnih dijelova za automobile", + "hu": "Autóalkatrész-üzlet", + "id": "Toko Peralatan Mobil", + "is": "Bílavarahlutaverslun", + "it": "Negozio di autoricambi", + "ja": "カー用品店", + "ko": "자동차 부품 가게", + "lt": "Auto dalių parduotuvė", + "lv": "Auto rezerves daļu veikals", + "nl": "Auto-onderdelenwinkel", + "no": "Bildelforhandler", + "pl": "Sklep z częściami do samochodów", + "pt-BR": "Loja de Peças Automotivas", + "pt": "Loja de peças para automóveis", + "ru": "Автозапчасти", + "sk": "Predajňa autodielov", + "sl": "Avtomobilski deli", + "sr": "Продавница ауто делова", + "sv": "Biltillbehör", + "tr": "Yedek Parça Dükkanı", + "uk": "Автозапчастини", + "vi": "Tiệm Phụ tùng Xe hơi", + "yue": "汽車零件舖", + "zh-CN": "汽车零部件商店", + "zh-HK": "汽車零件店", + "zh-TW": "汽車零件店", + "zh": "汽车配件店", + "mk": "Продавница за автоделови", + "bg": "Авточасти", + "he": "חנות חלקי מכוניות" + } + }, + "shop/car_repair": { + "title": { + "C": "Car Repair Shop", + "en": "Car Repair Shop", + "af": "Werkswinkel", + "ar": "ورشة إصلاح سيارات", + "ast": "Taller d'automóviles", + "bn": "গাড়ি মেরামতের দোকান", + "bs": "Auto servis", + "ca": "Taller d'automòbils", + "cs": "Autoopravna", + "da": "Bilværksted", + "de": "Autowerkstatt", + "el": "Συνεργείο Αυτοκινήτων", + "en-GB": "Car Repair Shop", + "eo": "Aŭtomobil-riparejo", + "es": "Taller de reparación de automóviles", + "et": "Autoremont", + "fa": "تعمیرگاه خودرو", + "fi": "Autokorjaamo", + "fr": "Garage de réparation automobile", + "gl": "Taller de arranxo de automóbiles", + "hr": "Automehaničar", + "hu": "Autószerelő", + "id": "Bengkel Mobil", + "is": "Bílaverkstæði", + "it": "Autofficina", + "ja": "自動車修理工場", + "ko": "자동차 수리점", + "lt": "Auto taisykla", + "lv": "Auto remontdarbnīca", + "nl": "Autogarage (herstel)", + "no": "Bilverksted", + "pl": "Warsztat samochodowy", + "pt-BR": "Oficina Mecânica", + "pt": "Oficina de automóveis", + "ro": "Vulcanizare", + "ru": "Автомастерская", + "sk": "Autoservis", + "sl": "Avtoservis", + "sr": "Ауто-сервис", + "sv": "Bilverkstad", + "tr": "Tamirci", + "uk": "Автомайстерня", + "vi": "Tiệm Sửa Xe", + "yue": "車房", + "zh-CN": "汽车修理店", + "zh-HK": "車房", + "zh-TW": "汽車維修店", + "zh": "汽车修理店", + "mk": "Автосервис", + "bg": "Сервиз автомобили", + "dv": "ކާާރު ހަދައިދޭ ގަރާޖް", + "he": "מוסך", + "so": "Garaash" + } + }, + "shop/carpet": { + "title": { + "C": "Carpet Store", + "en": "Carpet Store", + "ar": "متجر سجاد", + "ast": "Alfombres", + "ca": "Botiga de catifes", + "cs": "Prodejna koberců", + "da": "Tæppeforhandler", + "de": "Teppichgeschäft", + "el": "Κατάστημα χαλιών", + "en-GB": "Carpet Shop", + "eo": "Tapiŝa vendejo", + "es": "Tienda de alfombras", + "et": "Vaibapood", + "fa": "فرش فروشی", + "fi": "Mattokauppa", + "fr": "Magasin de tapis", + "gl": "Tenda de alfombras", + "hr": "Prodavaonica tepiha", + "hu": "Szőnyegbolt", + "id": "Toko Karpet", + "is": "Gólfteppaverslun", + "it": "Negozio di tappeti", + "ja": "カーペット専門店", + "ko": "카펫 가게", + "lt": "Kilimų parduotuvė", + "lv": "Paklāju veikals", + "nl": "Tapijtwinkel", + "no": "Teppehandler", + "pl": "Sklep z dywanami", + "pt-BR": "Tapeçaria", + "pt": "Loja de tapetes", + "ro": "Magazin de Covoare", + "ru": "Магазин ковров", + "sk": "Obchod s kobercami", + "sl": "Trgovina s preprogrami", + "sr": "Продавница тепиха", + "sv": "Mattaffär", + "tr": "Halı Mağazası", + "uk": "Магазин килимів ", + "vi": "Tiệm Thảm", + "zh-CN": "地毯店", + "zh-HK": "地毯店", + "zh-TW": "地毯店", + "mk": "Продавница за теписи", + "he": "חנות שטיחים" + } + }, + "shop/cheese": { + "title": { + "C": "Cheese Store", + "en": "Cheese Store", + "ar": "متجر أجبان", + "ast": "Quesería", + "ca": "Botiga de formatge", + "cs": "Prodejna sýrů", + "da": "Ostehandler", + "de": "Käseladen", + "el": "Τυροπωλείο", + "en-GB": "Cheese Shop", + "eo": "Fromaĝa vendejo", + "es": "Tienda de quesos", + "et": "Juustupood", + "fa": "پنیر فروشی", + "fi": "Juustopuoti", + "fr": "Fromager", + "gl": "Tenda de queixos", + "hr": "Prodavaonica sira", + "hu": "Sajtbolt", + "id": "Toko Keju", + "is": "Ostabúð", + "it": "Negozio di formaggi", + "ja": "チーズ店", + "ko": "치즈 가게", + "lt": "Sūrių parduotuvė", + "lv": "Siera veikals", + "nl": "Kaaswinkel", + "no": "Ostebutikk", + "pl": "Sklep z serami", + "pt-BR": "Loja de Queijos", + "pt": "Loja de queijos", + "ro": "Magazin de Brânzeturi", + "ru": "Магазин сыров", + "sk": "Obchod so syrmi", + "sl": "Trgovina s siri", + "sr": "Продавница сирева", + "sv": "Ostaffär", + "tr": "Peynirci", + "uk": "Магазин сиру", + "vi": "Tiệm Pho mát", + "zh-CN": "奶酪店", + "zh-HK": "芝士店", + "zh-TW": "起士店", + "mk": "Сирењарница", + "he": "חנות גבינות", + "en-AU": "Cheese Shop" + } + }, + "shop/chemist": { + "title": { + "C": "Drugstore", + "en": "Drugstore", + "ar": "متجر أدوات تجميل مستحضرات نظافة", + "ast": "Droguería", + "ca": "Farmàcia", + "cs": "Drogerie", + "da": "Materialist", + "de": "Drogerie", + "el": "Φαρμακείο", + "en-GB": "Chemist", + "eo": "Kosmetikaĵa (ankaŭ purigaĵoj) vendejo", + "es": "Tienda de artículos de limpieza y cosméticos", + "et": "Kodukeemia kauplus", + "fa": "داروخانه", + "fi": "Apteekki-luontaistuotemyymälä", + "fr": "Parapharmacie", + "gl": "Drogaría", + "hr": "Drogerija", + "hu": "Drogéria", + "is": "Hreinlætisvöruverslun", + "it": "Drogheria", + "ja": "ドラッグストア・化粧品・薬品店(薬剤師がいない店)", + "ko": "드러그스토어", + "lt": "Vaistinė", + "lv": "Aptieka", + "nl": "Drogisterij", + "no": "Apotek", + "pl": "Drogeria", + "pt-BR": "Loja de Cosméticos e Higiene", + "pt": "Drogaria", + "ro": "Drogărie", + "ru": "Бытовая химия", + "sk": "Drogéria", + "sl": "Lekarna", + "sv": "Kemiaffär (hygien, kosmetika & städ)", + "ta": "மருந்தகம்", + "tr": "İlaç Dükkanı", + "uk": "Аптека", + "vi": "Tiệm Dược phẩm", + "zh-CN": "药妆店", + "zh-HK": "藥店", + "zh-TW": "藥妝店", + "mk": "Аптека", + "bg": "Дрогерия", + "he": "בית מרקחת", + "en-AU": "Pharmacy" + } + }, + "shop/chocolate": { + "title": { + "C": "Chocolate Store", + "en": "Chocolate Store", + "ar": "متجر شوكولاتة", + "ast": "Chocolatería", + "ca": "Botiga de xocolata", + "cs": "Prodejna čokolády", + "da": "Chokoladeforretning", + "de": "Schokoladenladen", + "el": "Κατάστημα Ειδών Σοκολάτας", + "en-GB": "Chocolate Shop", + "eo": "Ĉokolada vendejo", + "es": "Chocolatería", + "et": "Šokolaadikauplus", + "fa": "فروشگاه شکلات", + "fi": "Suklaapuoti", + "fr": "Chocolatier", + "gl": "Chocolataría", + "hr": "Prodavaonica čokolade", + "hu": "Csokoládébolt", + "id": "Toko Cokelat", + "is": "Súkkulaðibúð", + "it": "Cioccolateria", + "ja": "チョコレート店", + "ko": "초콜릿 가게", + "lt": "Šokolado parduotuvė", + "lv": "Šokolādes veikals", + "nl": "Chocoladewinkel", + "no": "Sjokoladebutikk", + "pl": "Sklep z czekoladą", + "pt-BR": "Loja de Chocolates", + "pt": "Loja de chocolates", + "ro": "Magazin de Ciocolată", + "ru": "Магазин шоколада", + "sk": "Obchod s čokoládou", + "sl": "Trgovina s čokolado", + "sr": "Продавница чоколаде", + "sv": "Chokladaffär", + "tr": "Çikolata Dükkanı", + "uk": "Магазин шоколаду", + "vi": "Tiệm Sô-cô-la", + "zh-CN": "巧克力店", + "zh-HK": "朱古力店", + "zh-TW": "巧克力店", + "mk": "Продавница за чоколади", + "he": "חנות שוקולד", + "ms": "Kedai Coklat", + "en-AU": "Chocolate Shop" + } + }, + "shop/clothes": { + "title": { + "C": "Clothing Store", + "en": "Clothing Store", + "af": "Klere Winkel", + "ar": "محل ملابس", + "ast": "Tienda de ropa", + "bn": "জামাকাপড়ের দোকান", + "bs": "Prodavnica odjeće", + "ca": "Botiga de roba", + "cs": "Oblečení", + "da": "Tøjbutik", + "de": "Bekleidungsgeschäft", + "el": "Κατάστημα Ένδυσης", + "en-GB": "Clothing Shop", + "eo": "Vesta vendejo", + "es": "Tienda de ropa", + "et": "Riidepood", + "fa": "فروشگاه لباس", + "fi": "Vaatekauppa", + "fr": "Magasin de vêtements", + "gl": "Tenda de roupa", + "hr": "Prodavaonica odjeće", + "hu": "Ruházati bolt", + "id": "Toko Baju", + "is": "Fataverslun", + "it": "Negozio di abbigliamento", + "ja": "衣料品店", + "ko": "옷 가게", + "lt": "Drabužių parduotuvė", + "lv": "Apģērba veikals", + "nl": "Kledingzaak", + "no": "Klesbutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Roupas", + "pt": "Loja de roupa", + "ro": "Magazin de Haine", + "ru": "Магазин одежды", + "sk": "Obchod s odevami", + "sl": "Trgovina z oblekami", + "sq": "Dyqan Veshjesh", + "sr": "Продавница одеће", + "sv": "Klädaffär", + "ta": "ஜவுளிக் கடை", + "tr": "Giyim Mağazası", + "uk": "Одяг", + "vi": "Tiệm Quần áo", + "yue": "衫舖", + "zh-CN": "服装店", + "zh-HK": "服飾店", + "zh-TW": "服飾店", + "zh": "服装店", + "mk": "Продавница за облека", + "bg": "Магазин за дрехи", + "he": "חנות בגדים", + "ms": "Kedai Pakaian" + } + }, + "shop/computer": { + "title": { + "C": "Computer Store", + "en": "Computer Store", + "af": "Rekenaarwinkel", + "ar": "محل حاسوب", + "ast": "Informática", + "bn": "কম্পিউটারের দোকান", + "bs": "Prodavnica računara", + "ca": "Botiga d'informàtica", + "cs": "Počítače", + "da": "Computerforhandler", + "de": "Computerfachhandel", + "el": "Κατάστημα Υπολογιστών", + "en-GB": "Computer Shop", + "eo": "Komputila vendejo", + "es": "Tienda de informática", + "et": "Arvutipood", + "fa": "فروشگاه کامپیوتر", + "fi": "Tietokoneliike", + "fr": "Magasin d'informatique", + "gl": "Tenda de informática", + "hr": "Prodavaonica računala", + "hu": "Számítógépbolt", + "id": "Toko Komputer", + "is": "Tölvuverslun", + "it": "Negozio di informatica", + "ja": "コンピューター店", + "kn": "ಗಣಕಯಂತ್ರದ ಅಂಗಡಿ", + "ko": "컴퓨터 가게", + "lt": "Kompiuterių parduotuvė", + "lv": "Datorveikals", + "nl": "Computerwinkel", + "no": "Databutikk", + "pl": "Sklep komputerowy", + "pt-BR": "Loja de Informática", + "pt": "Loja de informática", + "ro": "Magazin de Calculatoare", + "ru": "Компьютерный магазин", + "sk": "Obchod s výpočtovou technikou", + "sl": "Računalniška trgovina", + "sr": "Продавница рачунара", + "sv": "Datorbutik", + "ta": "கணினி விற்பனையகம்", + "tr": "Bilgisayar Mağazası", + "uk": "Комп’ютери", + "vi": "Tiệm Máy tính", + "yue": "電腦舖", + "zh-CN": "电脑店", + "zh-HK": "電腦店", + "zh-TW": "電腦店", + "zh": "电脑店", + "mk": "Продавница за сметачи", + "bg": "Компютърен магазин", + "he": "חנות מחשבים", + "ms": "Kedai Komputer" + } + }, + "shop/confectionery": { + "title": { + "C": "Candy Store", + "en": "Candy Store", + "ar": "متجر سكاكر", + "ast": "Venta de llambionaes", + "ca": "Botiga de llaminadures", + "cs": "Cukrovinky", + "da": "Slikbutik", + "de": "Süßwarenladen", + "el": "Ζαχαροπλαστείο", + "en-GB": "Sweet Shop", + "eo": "Sukeraĵa vendejo", + "es": "Tienda de dulces", + "et": "Kommipood", + "fa": "فروشگاه آب‌نبات", + "fi": "Karkkipuoti", + "fr": "Confiserie", + "gl": "Tenda de larpeiradas", + "hr": "Prodavaonica slatkiša", + "hu": "Édességbolt", + "id": "Toko Permen", + "is": "Nammibúð", + "it": "Negozio di dolciumi", + "ja": "菓子屋(販売)", + "ko": "사탕 가게", + "lt": "Saldainių parduotuvė", + "lv": "Saldumu veikals", + "nl": "Snoepwinkel", + "no": "Godtebutikk", + "pl": "Sklep ze słodyczami", + "pt-BR": "Doceria", + "pt": "Doçaria", + "ro": "Magazin de Dulciuri", + "ru": "Кондитерская", + "sk": "Obchod so sladkosťami", + "sl": "Trgovina s slaščicami", + "sr": "Бомбонџиница", + "sv": "Godisaffär", + "tr": "Şeker Mağazası", + "uk": "Кондитерська ", + "vi": "Tiệm Kẹo", + "zh-CN": "糖果店", + "zh-HK": "糖果店", + "zh-TW": "糖果店", + "mk": "Бонбониера", + "he": "חנות ממתקים" + } + }, + "shop/convenience": { + "title": { + "C": "Convenience Store", + "en": "Convenience Store", + "af": "Geriefswinkel", + "ar": "بقالة", + "ast": "Tienda d'ultramarinos", + "bs": "Bakalnica", + "ca": "Botiga d'ultramarins", + "cs": "Smíšené zboží", + "da": "Minimarked", + "de": "Minimarkt", + "el": "Παντοπωλείο", + "en-GB": "Convenience Store", + "eo": "Butiko oportuna", + "es": "Tienda multiservicio", + "et": "Toidupood", + "fa": "سوپرمارکت / فروشگاه کوچک", + "fi": "Lähikauppa", + "fr": "Épicerie / Supérette ", + "gl": "Tenda de ultramarinos", + "hr": "Trgovina mješovitom robom", + "hu": "Kis élelmiszerbolt", + "id": "Toko Kelontong", + "is": "Kjörbúð", + "it": "Minimarket", + "ja": "コンビニエンスストア", + "ko": "편의점", + "lt": "Savitarnos parduotuvė", + "lv": "Veikals", + "nl": "Gemakswinkel", + "no": "Nærbutikk", + "pl": "Sklep ogólnospożywczy", + "pt-BR": "Loja de Conveniência", + "pt": "Minimercado / loja de conveniência", + "ro": "Magazin Universal", + "ru": "Магазин у дома", + "sk": "Samoobsluha", + "sl": "Minimarket", + "sr": "Бакалница", + "sv": "Närbutik", + "tr": "Market", + "uk": "Міні-маркет", + "vi": "Tiệm Tiện lợi", + "yue": "便利店", + "zh-CN": "便利店", + "zh-HK": "便利店", + "zh-TW": "便利商店", + "zh": "便利店", + "mk": "Бакалница", + "bg": "Магазин за хранителни стоки", + "he": "חנות נוחות", + "ms": "Kedai Kecil" + } + }, + "shop/copyshop": { + "title": { + "C": "Copy Store", + "en": "Copy Store", + "ar": "متجر نسخ وتصوير", + "ast": "Copistería", + "ca": "Copisteria", + "cs": "Kopírování", + "da": "Fotokopishop", + "de": "Kopierladen", + "el": "Κατάστημα Φωτοτυπιών", + "en-GB": "Copyshop", + "eo": "Fotokopiilejo", + "es": "Centro de copiado", + "et": "Koopiateenuse kauplus", + "fa": "چاپ و تکثیر", + "fi": "Kopiointiliike", + "fr": "Reprographie", + "gl": "Copistaría", + "hr": "Fotokopiraona", + "hu": "Fénymásoló", + "id": "Tempat Fotokopi", + "is": "Ljósritunarstofa", + "it": "Copisteria", + "ja": "コピー店", + "ko": "복사집", + "lt": "Kopijavimo parduotuvė", + "lv": "Printēšanas veikals", + "nl": "Copyshop", + "no": "Printsjappe", + "pl": "Punkt ksero", + "pt-BR": "Copiadora", + "pt": "Loja de fotocópias", + "ro": "Atelier de Copiere", + "ru": "Магазин копирования, печати", + "sk": "Fotokopírovanie", + "sl": "Fotokopirnica", + "sq": "Fotokopje", + "sr": "Копирница", + "sv": "Tryckeri", + "tr": "Kırtasiye", + "uk": "Копіювальні послуги", + "vi": "Tiệm Sao chép", + "zh-CN": "打印店", + "zh-HK": "影印店", + "zh-TW": "影印店", + "mk": "Копирница", + "he": "חנות העתקות" + } + }, + "shop/cosmetics": { + "title": { + "C": "Cosmetics Store", + "en": "Cosmetics Store", + "ar": "متجر مستحضرات التجميل", + "ast": "Perfumería", + "ca": "Botiga de cosmètics", + "cs": "Obchod s kosmetikou", + "da": "Kosmetikbutik", + "de": "Kosmetikladen", + "el": "Κατάστημα καλλυντικών", + "en-GB": "Cosmetics Shop", + "eo": "Kosmetikaĵa (persona higieno) vendejo", + "es": "Tienda de cosméticos", + "et": "Kosmeetikapood", + "fa": "فروشگاه آرایشی و بهداشتی ", + "fi": "Kosmetiikkamyymälä", + "fr": "Magasin de cosmétiques", + "gl": "Tenda de cosméticos", + "hr": "Prodavaonica kozmetike", + "hu": "Kozmetikai bolt", + "id": "Toko Kosmetik", + "is": "Snyrtivöruverslun", + "it": "Negozio di cosmetici", + "ja": "化粧品店", + "ko": "화장품 가게", + "lt": "Kosmetikos parduotuvė", + "lv": "Kosmētikas veikals", + "nl": "Cosmeticawinkel", + "no": "Parfymeri", + "pl": "Sklep z kosmetykami", + "pt-BR": "Loja de Cosméticos", + "pt": "Loja de cosmética", + "ro": "osmetic", + "ru": "Магазин косметики", + "sk": "Obchod s kozmetikou", + "sl": "Kozmetična trgovina", + "sr": "Продавница козметике", + "sv": "Sminkaffär", + "tr": "Kozmetik Mağazası", + "uk": "Магазин косметики", + "vi": "Tiệm Mỹ phẩm", + "zh-CN": "化妆品店", + "zh-HK": "化妝品店", + "zh-TW": "化妝品店", + "mk": "Продавница за козметика", + "he": "חנות קוסמטיקה" + } + }, + "shop/craft": { + "title": { + "C": "Arts & Crafts Store", + "en": "Arts & Crafts Store", + "ar": "متجر الفنون والحرف", + "cs": "Obchod s řemeslnými výrobky", + "de": "Geschäft für Künstlerbedarf", + "eo": "Vendejo de materialoj por metio", + "es": "Tienda de artesanías", + "fa": "فروشگاه هنر و صنایع دستی", + "fi": "Käsityöliike", + "fr": "Magasin d'arts et loisirs créatifs", + "ja": "美術・工芸用品店", + "ko": "미술 & 공예 가게", + "no": "Kunst & Håndverksbutikk", + "pl": "Sklep z artykułami dla artystów", + "pt-BR": "Loja de artesanato", + "pt": "Loja de acessórios para artes manuais", + "uk": "Мистецтво та ремесла", + "vi": "Tiệm Bán đồ Thủ công", + "zh-TW": "手工藝品店", + "mk": "Продавница за уметнички ракотворби", + "he": "חנות חפצי אומנות" + } + }, + "shop/curtain": { + "title": { + "C": "Curtain Store", + "en": "Curtain Store", + "ar": "محل بيع الستائر", + "ast": "Tienda de cortines", + "ca": "Botiga de cortines", + "cs": "Obchod se závěsy", + "da": "Gardinbutik", + "de": "Vorhanggeschäft", + "el": "Είδη Κουρτίνας", + "en-GB": "Curtain Shop", + "eo": "Kurtena vendejo", + "es": "Tienda de cortinas", + "et": "Kardinakauplus", + "fa": "پرده فروشی", + "fi": "Verhomyymälä", + "fr": "Magasin de rideaux", + "gl": "Tenda de cortinas", + "hr": "Trgovina za zastore", + "hu": "Függönybolt", + "id": "Toko Gorden", + "is": "Gluggatjaldaverslun", + "it": "Negozio di tende", + "ja": "カーテン店", + "ko": "커튼 가게", + "lt": "Užuolaidų parduotuvė", + "lv": "Aizkaru veikals", + "nl": "Gordijnenwinkel", + "no": "Gardinbutikk", + "pl": "Sklep z zasłonami", + "pt-BR": "Loja de Cortinas", + "pt": "Loja de cortinas", + "ro": "Magazin de Perdele", + "ru": "Магазин штор и драпировок", + "sk": "Obchod so záclonami", + "sl": "Trgovina z zavesami", + "sr": "Продавница завеса", + "sv": "Gardinaffär", + "tr": "Perde Mağazası", + "uk": "Магазин занавісок", + "vi": "Tiệm Màn cửa", + "zh-CN": "窗帘店", + "zh-HK": "窗簾店", + "zh-TW": "窗廉店", + "mk": "Продавница за завеси", + "he": "חנות וילונות" + } + }, + "shop/dairy": { + "title": { + "C": "Dairy Store", + "en": "Dairy Store", + "ar": "متجر الألبان", + "ast": "Llechería", + "ca": "Botiga de productes làctics", + "cs": "Mléčné výrobky", + "da": "Ismejeri", + "de": "Milchgeschäft", + "el": "Γαλακτοπωλείο", + "en-GB": "Dairy Shop", + "eo": "Laktaĵa vendejo", + "es": "Tienda de lácteos", + "et": "Piimapood", + "fa": "فروشگاه لبنی", + "fi": "Maitotuotemyymälä", + "fr": "Crèmerie", + "gl": "Tenda de produtos frescos", + "hr": "Prodavaonica mliječnih proizvoda", + "hu": "Tejtermékbolt", + "id": "Toko Susu", + "is": "Mjólkurbúð", + "it": "Negozio di latticini", + "ja": "乳製品店", + "ko": "유제품 가게", + "lt": "Pieno produktų parduotuvė", + "lv": "Piena veikals", + "nl": "Zuivelhandel", + "no": "Ferskvarebutikk", + "pl": "Sklep z nabiałem", + "pt-BR": "Loja de Laticínios", + "pt": "Loja de laticínios", + "ro": "Magazin de Lactate", + "ru": "Магазин молочных продуктов", + "sk": "Obchod s mliečnymi výrobkami", + "sl": "Mlekarna", + "sr": "Продавница млечних производа", + "sv": "Mejeriaffär", + "tr": "Süt Mağazası", + "uk": "Молочний магазин", + "vi": "Tiệm Sữa", + "zh-CN": "牛奶店", + "zh-HK": "奶製品店", + "zh-TW": "奶製品店", + "mk": "Бакалница", + "he": "חנות מוצרי חלב" + } + }, + "shop/deli": { + "title": { + "C": "Deli", + "en": "Deli", + "af": "Deli", + "ar": "محل أطعمة لذيذة", + "ast": "Gourmet", + "bs": "Delikatese", + "ca": "Botiga de comestibles", + "cs": "Lahůdkářství", + "da": "Deli", + "de": "Feinkostladen", + "el": "Ντελικατέσεν", + "en-GB": "Deli", + "eo": "Delikataĵa vendejo", + "es": "Delicatessen", + "et": "Delikatessikauplus", + "fa": "حاضری فروشی", + "fi": "Deli", + "fr": "Épicerie de luxe", + "gl": "Delicatessen", + "hr": "Prodavaonica delikatesa", + "hu": "Csemegebolt", + "is": "Deli", + "it": "Gastronomia", + "ja": "惣菜屋", + "ko": "델리", + "lt": "Gastronomas", + "lv": "Delikateses", + "nl": "Delicatessenwinkel", + "no": "Delikatessebutikk", + "pl": "Ekskluzywne delikatesy", + "pt-BR": "Delicatessen", + "pt": "Loja gourmet", + "ru": "Магазин деликатесов", + "sk": "Delikatesy", + "sl": "Delikatesa", + "sr": "Деликатеси", + "sv": "Delikatessaffär", + "tr": "Şarküteri", + "uk": "Делікатеси/Вишукана їжа", + "vi": "Tiệm Deli", + "yue": "美食舖", + "zh-CN": "熟食店", + "zh-HK": "食肆", + "zh-TW": "美食店", + "zh": "熟食店", + "mk": "Продавница за деликатеси", + "bg": "Магазин за деликатеси", + "he": "מעדניה" + } + }, + "shop/department_store": { + "title": { + "C": "Department Store", + "en": "Department Store", + "af": "Afdelingswinkel", + "ar": "محل متعدد الأقسام", + "ast": "Grandes almacenes", + "bn": "ডিপার্টমেন্ট স্টোর", + "bs": "Robna kuća", + "ca": "Grans magatzems", + "cs": "Obchodní dům", + "da": "Stormagasin", + "de": "Kaufhaus", + "el": "Πολυκατάστημα", + "en-GB": "Department Store", + "eo": "Ĉiovendejo", + "es": "Grandes almacenes / Tienda departamental", + "et": "Kaubamaja", + "fa": "فروشگاه چندمنظوره", + "fi": "Tavaratalo", + "fr": "Grand magasin", + "gl": "Grandes almacéns", + "hr": "Robna kuća", + "hu": "Nagyáruház", + "id": "Pasar Swalayan", + "is": "Stórverslun", + "it": "Grande magazzino", + "ja": "百貨店", + "kn": "ಕಿರಾಣಿ ಅಂಗಡಿ", + "ko": "백화점", + "lt": "Universalinė parduotuvė", + "lv": "Lielveikals", + "nl": "Warenhuis", + "no": "Supermarked", + "pl": "Dom towarowy", + "pt-BR": "Loja de Departamentos", + "pt": "Grande armazém", + "ro": "Magazin Universal", + "ru": "Универсальный магазин (с отделами)", + "sk": "Obchodný dom", + "sl": "Veleblagovnica", + "sr": "Робна кућа", + "sv": "Varuhus", + "tr": "Mağaza", + "uk": "Універмаг", + "vi": "Tiệm Bách hóa", + "yue": "百貨公司", + "zh-CN": "百货商场", + "zh-HK": "百貨公司", + "zh-TW": "百貨公司", + "zh": "百货店", + "mk": "Стоковна куќа", + "bg": "Универсален магазин", + "he": "חנות כלבו" + } + }, + "shop/doityourself": { + "title": { + "C": "DIY Store", + "en": "DIY Store", + "af": "Selfdoenwinkel", + "ar": "محل افعلها بنفسك", + "ast": "Bricolage", + "bn": "নিজে করুন স্টোর", + "bs": "Sve za kuću", + "ca": "Botiga de bricolatge", + "cs": "Obchod pro kutily", + "da": "Gør det selv-butik", + "de": "Heimwerkerladen", + "el": "Κατάστημα ιδιοκατασκευών", + "en-GB": "DIY Shop", + "eo": "Memfaradila vendejo", + "es": "Tienda de bricolaje / Hágalo usted mismo", + "et": "Ehituskauplus", + "fa": "فروشگاه DIY", + "fi": "Askartelukauppa", + "fr": "Magasin de bricolage", + "gl": "Tenda de bricolaxe", + "hr": "Uradi sam", + "hu": "Barkácsáruház", + "id": "Toko Swakriya", + "is": "Handlaginna verslun", + "it": "Negozio di fai-da-te", + "ja": "ホームセンター", + "ko": "DIY 가게", + "lt": "Pasidaryk pats parduotuvė", + "nl": "Bouwmarkt, doe-het-zelfwinkel", + "no": "Byggevarehus", + "pl": "Market budowlany/sklep dla majsterkowiczów", + "pt-BR": "Loja de Ferragens/Bricolagem", + "pt": "Loja de bricolagem", + "ro": "Magazin DIY", + "ru": "Строительный магазин", + "sk": "Obchod pre kutilov", + "sl": "Orodjarna", + "sr": "Продавница све за кућу", + "sv": "Byggmarknad", + "tr": "Malzeme Mağazası", + "uk": "Зроби сам", + "vi": "Tiệm Vật liệu Xây dựng", + "yue": "自組舖", + "zh-CN": "DIY店", + "zh-HK": "DIY店", + "zh-TW": "DIY商店", + "zh": "DIY商店", + "mk": "Продавница за мајсторисување", + "bg": "Магазин \"Направи си сам\"", + "he": "חנות עשה זאת בעצמך", + "ms": "Kedai DIY" + } + }, + "shop/dry_cleaning": { + "title": { + "C": "Dry Cleaner", + "en": "Dry Cleaner", + "ar": "تنظيف جاف", + "ast": "Llimpieza en seco", + "ca": "Bugaderia", + "cs": "Čistírna", + "da": "Renseri", + "de": "Chemische Reinigung", + "el": "Στεγνοκαθαριστήριο", + "en-GB": "Dry Cleaner", + "eo": "Vest-lavejo (nepolara solvilo)", + "es": "Tintorería", + "et": "Keemiline puhastus", + "fa": "خشکشویی", + "fi": "Kuivapesula", + "fr": "Pressing", + "gl": "Tinturaría", + "hr": "Kemijska čistionica", + "hu": "Vegytisztitó", + "id": "Jasa Cuci Kering", + "is": "Þurrhreinsun", + "it": "Lavanderia", + "ja": "クリーニング店", + "ko": "드라이클리닝", + "lv": "Ķīmiskā tīrītava", + "nl": "Stomerij", + "no": "Renseri", + "pl": "Pralnia chemiczna", + "pt-BR": "Lavanderia a seco", + "pt": "Limpeza a seco", + "ro": "Uscător", + "ru": "Химчистка", + "sk": "Čistiareň odevov", + "sl": "Čistilnica", + "sq": "Pastrim Kimik", + "sr": "Хемијско чишћење", + "sv": "Kemtvätt", + "tr": "Kuru Temizleme Mağazası", + "uk": "Хімчистка", + "vi": "Tiệm Giặt khô", + "zh-CN": "干洗店", + "zh-HK": "乾洗店", + "zh-TW": "乾洗店", + "mk": "Хемиско чистење", + "he": "ניקוי יבש", + "ms": "Kedai Cucian Kering" + } + }, + "shop/electronics": { + "title": { + "C": "Electronics Store", + "en": "Electronics Store", + "af": "Elektronikawinkel", + "ar": "محل إلكترونيات", + "ast": "Electrónica", + "bn": "ইলেকট্রনিক্স-এর দোকান", + "bs": "Prodavnica elektronike", + "ca": "Botiga d'electrònica", + "cs": "Elektro", + "da": "Elektronikbutik", + "de": "Elektronikfachgeschäft", + "el": "Κατάστημα Ηλεκτρονικών", + "en-GB": "Electronics Shop", + "eo": "Elektronika vendejo", + "es": "Tienda de electrónica y electrodomésticos", + "et": "Elektroonikapood", + "fa": "فروشگاه لوازم برقی", + "fi": "Elektroniikkamyymälä", + "fr": "Magasin d'électronique et d'électroménager", + "gl": "Tenda de electrodomésticos", + "hr": "Prodavaonica elektronike", + "hu": "Elektronikai bolt", + "id": "Toko Elektronik", + "is": "Rafeindatækjaverslun", + "it": "Negozio di elettronica", + "ja": "家電販売店(小型製品)", + "ko": "전자 제품 가게", + "lt": "Elektronikos parduotuvė", + "lv": "Elektronikas veikals", + "nl": "Huishoudtoestellen-/Witgoedwinkel", + "no": "Elektronikkbutikk", + "pl": "Sklep z elektroniką/RTV/AGD", + "pt-BR": "Loja de Eletrônicos", + "pt": "Loja de eletrodomésticos", + "ro": "Magazin de Electronice", + "ru": "Магазин бытовой электроники", + "sk": "Elektro obchod", + "sl": "Elektronska trgovina", + "sr": "Продавница електронике", + "sv": "Elektronikbutik", + "tr": "Elektronik Mağazası", + "uk": "Електроніка", + "vi": "Tiệm Điện tử", + "yue": "電器舖", + "zh-CN": "电器店", + "zh-HK": "電子舖", + "zh-TW": "電器店", + "zh": "电器店", + "mk": "Продавница за електронска роба", + "bg": "Магазин за електроника", + "he": "חנות אלקטרוניקה", + "ms": "Kedai Elektronik" + } + }, + "shop/erotic": { + "title": { + "C": "Erotic Store", + "en": "Erotic Store", + "ast": "Artículos eróticos", + "ca": "Botiga d'articles eròtics", + "cs": "Sex shop", + "da": "Erotikbutik", + "de": "Erotikgeschäft", + "el": "Μαγαζί ερωτικών ειδών", + "en-GB": "Erotic Shop", + "eo": "Seksumila vendejo", + "es": "Tienda erótica", + "et": "Erootikapood", + "fa": "فروشگاه لوازم بزرگسالان", + "fi": "Erotiikkamyymälä", + "fr": "Sex-shop", + "gl": "Tenda erótica", + "hr": "Prodavaonica erotskih pomagala", + "hu": "Szexbolt", + "is": "Hjálpartæki ástarlífsins", + "it": "Negozio erotico", + "ja": "アダルトショップ", + "ko": "성인용품 가게", + "lt": "Erotikos parduotuvė", + "lv": "Erotiskais veikals", + "nl": "Seksshop", + "no": "Erotikkbutikk", + "pl": "Sex shop", + "pt-BR": "Sex Shop", + "pt": "Sex shop", + "ro": "Magazin Erotic", + "ru": "Секс-шоп", + "sk": "Ochod s erotickými potrebami", + "sl": "Erotična trgovina", + "sr": "Продавница еротике", + "sv": "Sexshop", + "tr": "Erotik Ürünler Mağazası", + "uk": "Секс-шоп", + "vi": "Tiệm Bán đồ Khiêu dâm", + "zh-CN": "情趣用品店", + "zh-HK": "情趣用品店", + "zh-TW": "情趣用品店", + "mk": "Еротска продавница", + "he": "חנות ארוטיקה" + } + }, + "shop/fabric": { + "title": { + "C": "Fabric Store", + "en": "Fabric Store", + "ar": "محل بيع الأقمشة", + "ca": "Botiga de teles", + "cs": "Obchod s textilem", + "da": "Stofforretning", + "de": "Stoffgeschäft", + "el": "Πωλήσεις Υφασμάτων", + "en-GB": "Fabric Shop", + "eo": "Teksaĵa vendejo", + "es": "Tienda textil", + "et": "Kangakauplus", + "fa": "پارچه فروشی", + "fi": "Rakennusliike", + "fr": "Magasin de tissus", + "gl": "Tenda de teas", + "hr": "Trgovina za tkanine", + "hu": "Rövidáru- és méterárubolt", + "id": "Toko Kain", + "is": "Álnavöruverslun", + "it": "Negozio di tessuti", + "ja": "生地屋", + "ko": "직물 가게", + "lt": "Audinių parduotuvė", + "lv": "Audumu veikals", + "nl": "Stofwinkel", + "no": "Stoffbutikk", + "pl": "Sklep z tkaninami", + "pt-BR": "Loja de Tecidos", + "pt": "Loja de tecidos", + "ro": "Magazin de Materiale", + "ru": "Магазин тканей", + "sk": "Obchod s látkami", + "sl": "Trgovina z metrskim blagom", + "sr": "Продавница текстила", + "sv": "Tygaffär", + "tr": "Kumaş Mağazası", + "uk": "Магазин тканин", + "vi": "Tiệm Vải", + "zh-CN": "布店", + "zh-HK": "布料店", + "zh-TW": "帆布店", + "mk": "Продавница за ткаенини", + "he": "חנות אריגה", + "ms": "Kedai Fabrik" + } + }, + "shop/farm": { + "title": { + "C": "Produce Stand", + "en": "Produce Stand", + "af": "Padstal", + "ar": "المنتج", + "bs": "Štand proizvodnje", + "ca": "Estand productiu", + "cs": "Stánek s ovocem, zeleninou", + "da": "Gårdbutik", + "de": "Hofladen", + "el": "Πάγκος Παραγωγής", + "en-GB": "Farm Shop", + "eo": "Terfrukta vendotablo", + "es": "Tienda de productos agrícolas", + "et": "Talukaup", + "fa": "غرفه میوه و سبزی باغ", + "fi": "Maatilan suoramyynti", + "fr": "Magasin de producteurs", + "gl": "Tenda de produtos agrícolas", + "hr": "Prodavaonica proizvoda farme", + "hu": "Termelői bolt", + "is": "Vörubás", + "it": "Banchetto Alimentari Freschi", + "ja": "農産物直売所", + "ko": "산지 직매", + "lt": "Produktų stendas", + "nl": "Groente- en fruitkraam", + "no": "Gårdsutsalg", + "pl": "Stragan świeżych produktów", + "pt-BR": "Quitanda de Produção Local", + "pt": "Loja de produtos agrícolas locais", + "ru": "Магазин свежих продуктов", + "sk": "Voľný predaj ovocia", + "sl": "Prodaja domačih pridelkov", + "sr": "Производни штанд", + "sv": "Gårdsbutik", + "tr": "Manav", + "uk": "Стелаж з фермерськими товарами", + "vi": "Quầy Nông sản", + "yue": "檔", + "zh-CN": "农产直销店", + "zh-HK": "農產品檔攤", + "zh-TW": "產地直銷店", + "mk": "Пилјарска тезга", + "bg": "Щанд за плодове и зеленчуци", + "he": "דוכן ירקות" + } + }, + "shop/florist": { + "title": { + "C": "Florist", + "en": "Florist", + "af": "Bloemiste", + "ar": "محل بيع الورود", + "ast": "Floristería", + "bn": "ফুল ব্যবসায়ী", + "bs": "Cvjećar", + "ca": "Floristeria", + "cs": "Květinářství", + "da": "Blomsterbutik", + "de": "Blumenhändler", + "el": "Ανθοπωλείο", + "en-GB": "Florist", + "eo": "Florvendejo", + "es": "Floristería", + "et": "Lillepood", + "fa": "گل فروشی", + "fi": "Kukkakauppa", + "fr": "Fleuriste", + "gl": "Floraría", + "hr": "Cvjećarna", + "hu": "Virágárus", + "id": "Toko Bunga", + "is": "Blómabúð", + "it": "Fioraio", + "ja": "生花店", + "kn": "ಹೂವಿನ ವ್ಯಾಪಾರಿ", + "ko": "꽃 가게", + "lt": "Gėlės", + "lv": "Florists", + "nl": "Bloemenwinkel", + "no": "Blomsterbutikk", + "pl": "Kwiaciarnia", + "pt-BR": "Floricultura", + "pt": "Florista", + "ro": "Florărie", + "ru": "Цветочный магазин", + "sk": "Kvetinárstvo", + "sl": "Cvetličarna", + "sr": "Цвећар", + "sv": "Florist", + "ta": "பூக்கடை", + "tr": "Çiçekçi", + "uk": "Квіти", + "vi": "Tiệm Hoa", + "yue": "花舖", + "zh-CN": "花店", + "zh-HK": "花店", + "zh-TW": "花店", + "zh": "花店", + "mk": "Цвеќарница", + "bg": "Магазин за цветя", + "he": "חנות פרחים", + "ms": "Kedai Bunga" + } + }, + "shop/frame": { + "title": { + "C": "Framing Shop", + "en": "Framing Shop", + "ast": "Marcos", + "ca": "Botiga de marcs", + "cs": "Rámařství", + "da": "Rammebutik", + "de": "Bilderrahmengeschäft", + "en-GB": "Framing Shop", + "eo": "Bild-kadra vendejo", + "es": "Tienda de enmarcación", + "et": "Raamikauplus", + "fa": "قاب سازی", + "fi": "Kehystämö", + "fr": "Magasin d'encadrements", + "gl": "Tenda de enmarcado", + "hr": "Trgovina za okvire", + "hu": "Képkeretező", + "id": "Toko Bingkai", + "is": "Innrömmun", + "it": "Negozio di cornici", + "ja": "額縁店", + "ko": "액자 가게", + "lt": "Įrėminimo parduotuvė", + "nl": "Kaderwinkel", + "no": "Innrammingsbutikk", + "pl": "Sklep z ramami", + "pt-BR": "Loja de Molduras", + "pt": "Loja de molduras", + "ru": "Магазин рамок для фотографий и картин", + "sk": "Obchod s rámami", + "sr": "Стаклар", + "sv": "Ramaffär", + "tr": "Çerçeve Mağazası", + "uk": "Багетна майстерня", + "vi": "Tiệm Khung Tranh", + "zh-CN": "相框店", + "zh-HK": "表框店", + "zh-TW": "表框店", + "mk": "Врамувачница", + "he": "חנות חקלאות" + } + }, + "shop/funeral_directors": { + "title": { + "C": "Funeral Home", + "en": "Funeral Home", + "ar": "بيت الدفن", + "ast": "Velatoriu", + "ca": "Tanatori", + "cs": "Pohřební služba", + "da": "Bedemandsforretning", + "de": "Beerdigungsinstitut", + "el": "Γραφείο Τελετών", + "en-GB": "Funeral Home", + "eo": "Tombistejo", + "es": "Funeraria", + "et": "Matusebüroo", + "fa": "غسالخانه", + "fi": "Hautaustoimisto", + "fr": "Funérarium", + "gl": "Funeraria", + "hr": "Pogrebno poduzeće", + "hu": "Temetkezési iroda", + "id": "Rumah Pemakaman", + "is": "Útfararheimili", + "it": "Casa funeraria", + "ja": "葬儀社", + "kn": "ಶವಸಂಸ್ಕಾರದ ನೆಲೆ", + "ko": "장례식장", + "lt": "Laidojimo namai", + "lv": "Apbedīšanas birojs", + "nl": "Begrafenisondernemer", + "no": "Begravelsesagent", + "pl": "Zakład pogrzebowy", + "pt-BR": "Funerária", + "pt": "Agência funerária", + "ro": "Casă Funerală", + "ru": "Бюро похоронных услуг", + "sk": "Pohrebný ústav", + "sl": "Pogrebne storitve", + "sr": "Продавница загробне опреме", + "sv": "Begravningsbyrå", + "tr": "Cenaze Koordinatörü", + "uk": "Ритуальні послуги", + "vi": "Nhà quàn", + "yue": "殯儀館", + "zh-CN": "殡仪馆", + "zh-HK": "殯儀館", + "zh-TW": "生命禮儀公司", + "mk": "Погребално друштво", + "he": "קברן" + } + }, + "shop/furniture": { + "title": { + "C": "Furniture Store", + "en": "Furniture Store", + "af": "Meubelwinkel", + "ar": "محل أثاث", + "ast": "Mueblería", + "bn": "আসবাবপত্রের দোকান", + "bs": "Salon namještaja", + "ca": "Botiga de mobles", + "cs": "Nábytek", + "da": "Møbelforhandler", + "de": "Möbelhaus", + "el": "Κατάστημα Επίπλων", + "en-GB": "Furniture Shop", + "eo": "Mebla vendejo", + "es": "Mueblería", + "et": "Mööblipood", + "fa": "فروشگاه مبلمان", + "fi": "Huonekaluliike", + "fr": "Magasin de meubles", + "gl": "Moblaría", + "hr": "Salon namještaja", + "hu": "Bútorbolt", + "id": "Toko Furnitur", + "is": "Húsgagnaverslun", + "it": "Negozio di mobili", + "ja": "家具店", + "kn": "ಪಿಟೋಪಕರಣಗಳ ಅಂಗಡಿ", + "ko": "가구점", + "lt": "Baldų parduotuvė", + "lv": "Mēbeļu veikals", + "nl": "Meubelzaak", + "no": "Møbelforhandler", + "pl": "Sklep meblowy", + "pt-BR": "Loja de Móveis", + "pt": "Loja de mobiliário", + "ro": "Magazin de Mobilă", + "ru": "Мебельный магазин", + "sk": "Obchod s nábytkom", + "sl": "Trgovina s pohištvom", + "sr": "Продавница намештаја", + "sv": "Möbelaffär", + "tr": "Mobilya Mağazası", + "uk": "Меблі", + "vi": "Cửa hàng Nội thất", + "yue": "傢俬舖", + "zh-CN": "家具店", + "zh-HK": "傢俬店", + "zh-TW": "傢具店", + "zh": "家具店", + "mk": "Салон за мебел", + "bg": "Мебелен магазин", + "he": "חנות רהיטים" + } + }, + "shop/garden_centre": { + "title": { + "C": "Garden Center", + "en": "Garden Center", + "af": "Tuinsentrum", + "ar": "مشتل", + "ast": "Xardinería", + "bs": "Centar za baštovanstvo", + "ca": "Centre de jardineria", + "cs": "Zahradnictví", + "da": "Havecenter", + "de": "Gartenzentrum", + "el": "Κέντρο Κήπου", + "en-GB": "Garden Centre", + "eo": "Ĝarden-vendejo", + "es": "Centro de jardinería / Vivero", + "et": "Aianduskeskus", + "fa": "مرکز خرید گل و گلدان", + "fi": "Puutarhamyymälä", + "fr": "Magasin spécialiste du jardin", + "gl": "Centro de xardinaría", + "hr": "Vrtni centar", + "hu": "Kertészet", + "id": "Toko Tanaman", + "is": "Garðaverslun", + "it": "Vivaio", + "ja": "園芸用品店", + "ko": "원예 용품점", + "lt": "Sodo centras", + "lv": "Dārzkopības veikals", + "nl": "Tuincentrum", + "no": "Gartneri", + "pl": "Centrum ogrodnicze", + "pt-BR": "Centro de Jardinagem", + "pt": "Loja de jardinagem", + "ro": "Magazin de Grădinărit", + "ru": "Садовые принадлежности", + "sk": "Záhradné centrum", + "sl": "Vrtni center", + "sr": "Баштенски центар", + "sv": "Trädgårdscenter", + "tr": "Bahçe Düzenleme Mağazası", + "uk": "Садово-парковий центр", + "vi": "Trung tâm Làm vườn", + "yue": "園藝舖", + "zh-CN": "园艺品店", + "zh-HK": "園藝中心", + "zh-TW": "園藝中心", + "zh": "花店", + "mk": "Градинарски центар", + "bg": "Градински център", + "he": "חנות גננות", + "en-AU": "Garden Centre" + } + }, + "shop/gift": { + "title": { + "C": "Gift Shop", + "en": "Gift Shop", + "af": "Geskenkwinkel", + "ar": "محل الهدايا", + "ast": "Regalos", + "bn": "উপহারের দোকান", + "bs": "Prodavnica suvenira", + "ca": "Botiga de regals", + "cs": "Dárky, suvenýry", + "da": "Gavebutik", + "de": "Geschenkeladen", + "el": "Κατάστημα Δώρων", + "en-GB": "Gift Shop", + "eo": "Suvenira vendejo", + "es": "Tienda de regalos", + "et": "Kingipood", + "fa": "فروشگاه لوازم کادویی", + "fi": "Lahjamyymälä", + "fr": "Boutique de cadeaux", + "gl": "Tenda de agasallos", + "hr": "Suvenirnica", + "hu": "Ajándékbolt", + "id": "Toko Hadiah", + "is": "Gjafavörubúð", + "it": "Negozio souvenir", + "ja": "ギフト店", + "kn": "ಉಡುಗೊರೆಯ ಅಂಗಡಿ", + "ko": "선물 가게", + "lt": "Dovanų parduotuvė", + "lv": "Dāvanu veikals", + "nl": "Cadeauwinkel", + "no": "Gavebutikk", + "pl": "Sklep z pamiątkami", + "pt-BR": "Loja de Presentes", + "pt": "Loja de lembranças", + "ro": "Magazin de Cadouri", + "ru": "Магазин сувениров", + "sk": "Darčekový obchod", + "sl": "Prodajalna daril", + "sr": "Продавница поклона", + "sv": "Presentbutik", + "tr": "Hediyelik Eşya Dükkanı", + "uk": "Подарунки", + "vi": "Tiệm Quà tặng", + "yue": "禮品舖", + "zh-CN": "礼品店", + "zh-HK": "禮品店", + "zh-TW": "禮品店", + "zh": "礼品店", + "mk": "Продавница за подароци", + "bg": "Магазин за подаръци", + "he": "חנות מתנות" + } + }, + "shop/greengrocer": { + "title": { + "C": "Greengrocer", + "en": "Greengrocer", + "af": "Groentewinkel", + "ar": "بقالة", + "ast": "Frutería", + "bs": "Zelenara", + "ca": "Fruiteria", + "cs": "Ovoce a zelenina", + "da": "Grønthandler", + "de": "Obst- und Gemüseladen", + "el": "Οπωροπωλείο", + "en-GB": "Greengrocer", + "eo": "Legom-butiko", + "es": "Verdulería / Frutería", + "et": "Aedviljapood", + "fa": "سبزی و میوه فروشی", + "fi": "Kasviskauppa", + "fr": "Marchand de fruits et légumes", + "gl": "Froitaría", + "hr": "Voćarna", + "hu": "Zöldséges", + "id": "Toko Buah dan Sayuran", + "is": "Grænmetissali", + "it": "Fruttivendolo", + "ja": "八百屋・果物屋", + "ko": "청과상", + "lt": "Daržovių ir vaisių pardavėjas", + "nl": "Groenteboer", + "no": "Grønnsakshandler", + "pl": "Warzywniak", + "pt-BR": "Verdureira ou quitanda", + "pt": "Loja de frutas e verduras", + "ru": "Магазин овощей и фруктов", + "sk": "Predajňa zeleniny", + "sl": "Sadje in zelenjava", + "sr": "Пиљар", + "sv": "Grönsakshandlare", + "tr": "Manav", + "uk": "Овочевий", + "vi": "Tiệm Rau quả", + "yue": "菜檔", + "zh-CN": "果蔬店", + "zh-HK": "菜檔", + "zh-TW": "蔬果店", + "zh": "果蔬店", + "mk": "Пилјарница", + "bg": "Плод-зеленчук", + "he": "ירקן", + "ms": "Kedai Menjual Sayur" + } + }, + "shop/hairdresser": { + "title": { + "C": "Hairdresser", + "en": "Hairdresser", + "af": "Haarkapper", + "ar": "حلاق", + "ast": "Peluquería", + "bs": "Frizer", + "ca": "Perruqueria", + "cs": "Kadeřnictví", + "da": "Frisør", + "de": "Friseur", + "el": "Κομμωτήριο", + "en-GB": "Hairdresser", + "eo": "Frizejo", + "es": "Peluquería", + "et": "Juuksurisalong", + "fa": "آرایشگاه", + "fi": "Parturi-kampaamo", + "fr": "Salon de coiffure", + "gl": "Perrucaría", + "hr": "Frizerski salon", + "hu": "Fodrász", + "id": "Salon", + "is": "Hárstofa", + "it": "Parrucchiere", + "ja": "理美容店", + "ko": "미용실", + "lt": "Kirpykla", + "lv": "Frizieris", + "nl": "Kapper", + "no": "Frisør", + "pl": "Fryzjer", + "pt-BR": "Cabeleireiro", + "pt": "Cabeleireiro(a)", + "ro": "Frizer", + "ru": "Парикмахерская", + "sk": "Kaderníctvo", + "sl": "Frizer", + "sr": "Фризер", + "sv": "Hårfrisör", + "tr": "Kuaför", + "uk": "Перукарня", + "vi": "Tiệm Làm tóc", + "yue": "飛髮舖", + "zh-CN": "理发店", + "zh-HK": "理髮店", + "zh-TW": "理髮店", + "zh": "理发点", + "mk": "Фризерски салон", + "bg": "Фризьорски салон", + "he": "מעצב שיער" + } + }, + "shop/hardware": { + "title": { + "C": "Hardware Store", + "en": "Hardware Store", + "af": "Hardewarewinkel", + "ar": "محل أجهزة", + "ast": "Ferretería", + "bs": "Prodavnica željezarije", + "ca": "Ferreteria", + "cs": "Železářství", + "da": "Værktøjsbutik", + "de": "Eisenwarenhandel", + "el": "Χρωματοπωλείο", + "en-GB": "Hardware Shop", + "eo": "Laborila vendejo", + "es": "Ferretería", + "et": "Rauakauplus", + "fa": "فروشگاه ابزارآلات و یراق", + "fi": "Rautakauppa", + "fr": "Quincaillerie", + "gl": "Ferraxaría", + "hr": "Željezarija", + "hu": "Vas-műszaki bolt", + "id": "Toko Perkakas", + "is": "Byggingavöruverslun", + "it": "Ferramenta", + "ja": "金物屋", + "ko": "철물점", + "lt": "Techninės įrangos parduotuvė", + "lv": "Celtniecības veikals", + "nl": "Bouwmarkt", + "no": "Jernvarehandel", + "pl": "Sklep z narzędziami", + "pt-BR": "Loja de Material de Construção", + "pt": "Loja de ferragens", + "ru": "Хозяйственный магазин", + "sk": "Železiarstvo", + "sl": "Železnina", + "sr": "Гвожђара", + "sv": "Järnaffär", + "tr": "Donanım Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Ngũ kim", + "yue": "五金舖", + "zh-CN": "五金店", + "zh-HK": "五金店", + "zh-TW": "五金店", + "zh": "五金店", + "mk": "Продавница за алат и опрема", + "bg": "Железария", + "dv": "ހާރޑްވެއާރ ފިހާރަ", + "he": "חנות אספקה טכנית", + "so": "Dukaanka Qalabka" + } + }, + "shop/hearing_aids": { + "title": { + "C": "Hearing Aids Store", + "en": "Hearing Aids Store", + "ar": "متجر سماعات الأذن الطبية", + "ast": "Audiólogu", + "ca": "Centre d'audició", + "cs": "Obchod s naslouchátky", + "da": "Høreapparatbutik", + "de": "Hörgerätegeschäft", + "el": "Κατάστημα ακουστικών βαρηκοΐας", + "en-GB": "Hearing Aids Shop", + "eo": "Aŭd-helpila vendejo", + "es": "Tienda de audífonos", + "et": "Kuulmisabipood", + "fa": "فروشگاه لوازم کمک شنوایی", + "fi": "Kuuloapumyymälä", + "fr": "Audioprothésiste", + "gl": "Tenda de audífonos", + "hr": "Prodavaonica slušnih pomagala", + "hu": "Hallókészülékbolt", + "id": "Toko Alat Bantu Dengar", + "is": "Heyrnartækjaverslun", + "it": "Negozio di apparecchi acustici", + "ja": "補聴器店", + "ko": "보청기 가게", + "lt": "Klausos aparatų parduotuvė", + "nl": "Hoorapparatenwinkel", + "no": "Høreapparatutsalg", + "pl": "Sklep z aparatami słuchowymi", + "pt-BR": "Loja de Aparelhos Auditivos", + "pt": "Loja de aparelhos auditivos", + "ru": "Магазин по продаже слуховых аппаратов", + "sk": "Obchod s načúvacími prístrojmi", + "sl": "Trgovina s slušnimi pripomočki", + "sv": "Hörapparater", + "tr": "İşitme Cihazı Mağazası ", + "uk": "Слухові апарати", + "vi": "Tiệm Ống nghe", + "zh-CN": "听觉恢复用品店", + "zh-HK": "助聽器店", + "zh-TW": "助聽器店", + "mk": "Продавница за слушни помагала", + "he": "חנות מכשירי שמיעה" + } + }, + "shop/herbalist": { + "title": { + "C": "Herbalist", + "en": "Herbalist", + "ar": "محل بيع الأعشاب الطبية", + "ast": "Herbolariu", + "ca": "Herborista", + "cs": "Bylinkářství", + "da": "Helseforretning", + "de": "Kräuterladen", + "el": "Βοτανολόγος", + "en-GB": "Herbalist", + "eo": "Herba vendejo", + "es": "Herbolario", + "et": "Ravimtaimekauplus", + "fa": "عطاری", + "fi": "Luontaistuotemyymälä", + "fr": "Herboristerie", + "gl": "Herboristaría", + "hu": "Gyógynövénybolt", + "is": "Grasalæknir", + "it": "Erboristeria", + "ja": "薬草店", + "ko": "약초 가게", + "lt": "Žolininkas", + "nl": "Herbalist", + "no": "Plantelegemiddelbutikk", + "pl": "Zielarz", + "pt-BR": "Ervanária", + "pt": "Ervanária", + "ru": "Магазин трав и лекарственных растений", + "sk": "Bylinkárstvo", + "sl": "Zeliščarstvo", + "sr": "Травар", + "sv": "Medicinalväxter", + "tr": "Şifalı Bitkiler Mağazası", + "uk": "Ботанік", + "vi": "Tiệm Thuốc Bắc/Nam", + "zh-CN": "草药店", + "zh-HK": "草藥店", + "zh-TW": "草藥店", + "mk": "Билна аптека", + "he": "חנות צמחי מרפא" + } + }, + "shop/hifi": { + "title": { + "C": "Hifi Store", + "en": "Hifi Store", + "af": "Hoëtrouwinkel", + "ar": "محل بيع أجهزة عالية الدقة", + "ast": "Equipos de música", + "bs": "HiFi prodavnica", + "ca": "Botiga d'alta fidelitat", + "cs": "Hifi elektronika", + "da": "Radioforhandler", + "de": "HiFi-Laden", + "el": "Κατάστημα Hifi", + "en-GB": "Hifi Shop", + "eo": "Aldfidela-sona vendejo", + "es": "Tienda de equipos de sonido", + "et": "Hifi kauplus", + "fa": "فروشگاه لوازم صوتی", + "fi": "Hifimyymälä", + "fr": "Magasin de matériel hi-fi", + "gl": "Tenda de equipamento de son", + "hr": "Prodavaonica audio opreme", + "hu": "HiFi-bolt", + "id": "Toko Hifi", + "is": "Hljómverslun", + "it": "Negozio Hifi", + "ja": "音響機器店", + "ko": "고급 오디오 가게", + "lt": "Hifi parduotuvė", + "nl": "Hifi-/Bruingoedwinkel", + "no": "Hifi-butikk", + "pl": "Sklep ze sprzętem hi-fi", + "pt-BR": "Loja de Aparelhos Hi-Fi", + "pt": "Loja de alta fidelidade", + "ru": "Магазин по продаже Hi-Fi", + "sk": "Obchod s ozvučením", + "sl": "Trgovina z avdio opremo", + "sr": "Музичка опрема", + "sv": "HiFi-butik", + "tr": "Hoparlör Mağazası", + "uk": "Аудіо апаратура", + "vi": "Tiệm Thiết bị Âm thanh", + "yue": "音響舖", + "zh-CN": "音响店", + "zh-HK": "音響店", + "zh-TW": "音響店", + "zh": "音响店", + "mk": "Продавница за аудиоопрема", + "bg": "Магазин за аудиотехника", + "he": "חנות הגברה" + } + }, + "shop/houseware": { + "title": { + "C": "Houseware Store", + "en": "Houseware Store", + "ar": "متجر الأدوات المنزلية", + "ast": "Menaxe del llar", + "ca": "Botiga de la llar", + "cs": "Domácí potřeby", + "da": "Køkkenudstyr", + "de": "Haushaltswarengeschäft", + "el": "Είδη Οικιακής Χρήσης", + "en-GB": "Houseware Store", + "eo": "Mastrum-aparata vendejo", + "es": "Tienda de artículos del hogar ", + "et": "Kodutarvete kauplus", + "fa": "فروشگاه لوازم خانگی ", + "fi": "Kotitarvikekauppa", + "fr": "Magasin d’articles ménagers", + "gl": "Tenda de artigos do fogar", + "hu": "Háztartási bolt", + "is": "Búsáhaldaverslun", + "it": "Casalinghi", + "ja": "家庭用品店", + "ko": "가정용품 가게", + "nl": "Huisraadwinkel", + "no": "Isenkrambutikk", + "pl": "Sklep z małymi artykułami gospodarstwa domowego", + "pt-BR": "Loja de Utensílios Domésticos", + "pt": "Loja de artigos para o lar", + "ru": "Магазин товаров для дома", + "sk": "Domáce potreby", + "sr": "Позамантерија", + "sv": "Husgeråd", + "tr": "Ev Eşyaları Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Gia dụng", + "zh-CN": "家居用品店", + "zh-HK": "家庭用品店", + "zh-TW": "家庭用品店", + "mk": "Продавница за домот", + "bg": "Домашни потреби", + "he": "חנות כלי בית" + } + }, + "shop/interior_decoration": { + "title": { + "C": "Interior Decoration Store", + "en": "Interior Decoration Store", + "ar": "متجر الديكور الداخلي", + "ast": "Decoración d'interiores", + "ca": "Botiga d'Interiorisme", + "cs": "Obchod s bytovými doplňky", + "da": "Brugskunstbutik", + "de": "Innenausstattungsgeschäft", + "el": "Διακοσμητές Εσωτερικών Χώρων", + "en-GB": "Interior Decoration Shop", + "eo": "Ensembla (meblara) vendejo", + "es": "Tienda de decoración de interiores", + "et": "Sisedekoratsioonikauplus", + "fa": "فروشگاه تزئینات داخلی", + "fi": "Sisustusmyymälä", + "fr": "Magasin de décoration d'intérieur", + "gl": "Tenda de decoración de interiores", + "hr": "Trgovina unutarnjeg uređenja", + "hu": "Lakberendezési bolt", + "id": "Toko Dekorasi Interior", + "is": "Innanhúshönnunarverslun", + "it": "Negozio di decorazioni per interni", + "ja": "インテリアショップ", + "ko": "실내장식 가게", + "lt": "Interjero dekoravimo parduotuvė", + "nl": "Binnenhuisdecoratiewinkel", + "no": "Interiørbutikk", + "pl": "Sklep z dekoracją wnętrz", + "pt-BR": "Loja de Decoração Interior", + "pt": "Loja de decoração de interiores", + "ro": "Magazin de Decorații Interioare", + "ru": "Магазин предметов интерьера", + "sk": "Obchod s bytovými dekoráciami", + "sr": "Унутрашња декорација", + "sv": "Inredningsaffär", + "tr": "İç Dekorasyon Mağazası", + "uk": "Оформлення інтер’єру", + "vi": "Tiệm Trang trí Nội thất", + "zh-CN": "室内装饰店", + "zh-HK": "室內設計店", + "zh-TW": "室內設計店", + "mk": "Продавница за внатрешно уредување", + "he": "חנות עיצוב פנים" + } + }, + "shop/jewelry": { + "title": { + "C": "Jewelry Store", + "en": "Jewelry Store", + "ar": "محل مجوهرات", + "cs": "Klenotnictví", + "da": "Guldsmed", + "de": "Juwelier", + "el": "Κοσμηματοπωλείο", + "eo": "Juvelista vendejo", + "es": "Joyería", + "fa": "جواهرفروشی", + "fi": "Jalokiviliike", + "fr": "Bijouterie", + "gl": "Xoiaría", + "hr": "Prodavaonica nakita", + "hu": "Ékszerüzlet", + "is": "Skartgripaverslun", + "it": "Negozio di gioielli", + "ja": "宝飾店", + "ko": "귀금속 가게", + "nl": "Juwelierszaak", + "no": "Gullsmed", + "pl": "Sklep jubilerski", + "pt-BR": "Joalheria", + "pt": "Ouriversaria", + "ru": "Ювелирный магазин", + "sk": "Klenotníctvo", + "sr": "Продавница накита", + "tr": "Kuyumcu", + "uk": "Ювелірні прикраси", + "vi": "Tiệm Kim hoàn", + "zh-CN": "珠宝店", + "zh-TW": "珠寶店", + "mk": "Златарница", + "he": "חנות תכשיטים" + } + }, + "shop/kiosk": { + "title": { + "C": "Kiosk", + "en": "Kiosk", + "ar": "كشك", + "ast": "Quioscu", + "ca": "Quiosc", + "cs": "Kiosek", + "da": "Kiosk", + "de": "Kiosk", + "el": "Περίπτερο", + "eo": "Gazetbudo", + "es": "Quiosco", + "fa": "دکه", + "fi": "Kioski", + "fr": "Kiosque", + "gl": "Quiosco", + "hr": "Kiosk", + "hu": "Trafik", + "is": "Blaðastandur", + "it": "Chiosco", + "ja": "キオスク", + "ko": "가판대", + "lt": "Kioskas", + "lv": "Kiosks", + "nl": "Winkelkiosk", + "no": "Kiosk", + "pl": "Kiosk", + "pt-BR": "Quiosque", + "pt": "Quiosque", + "ru": "Магазин в виде киоска", + "sk": "Stánok", + "sl": "Kiosk", + "sq": "Kioskë", + "sr": "Киоск", + "sv": "Kiosk", + "uk": "Кіоск", + "vi": "Gian hàng", + "zh-CN": "售货亭", + "zh-TW": "販賣亭", + "mk": "Киоск", + "he": "קיוסק" + } + }, + "shop/kitchen": { + "title": { + "C": "Kitchen Design Store", + "en": "Kitchen Design Store", + "ar": "متجر تصميم مطابخ", + "ast": "Diseñu de cocines", + "ca": "Botiga de disseny de cuines", + "cs": "Kuchyňské studio", + "da": "Køkkenforhandler", + "de": "Küchenfachmarkt", + "el": "Διακόσμηση Κουζίνας", + "en-GB": "Kitchen Design Shop", + "eo": "Kuirej-mebla vendejo", + "es": "Tienda de diseño de cocinas", + "et": "Köögimööblikauplus", + "fa": "فروشگاه تزئینات آشپزخانه", + "fi": "Keittiöliike", + "fr": "Cuisiniste", + "gl": "Tenda de deseño de cociñas", + "hr": "Trgovina kuhinjskog namještaja", + "hu": "Konyhabútorbolt", + "id": "Toko Desain Interior Dapur", + "is": "Eldhúshönnunarverslun", + "it": "Negozio di cucine", + "ja": "キッチンデザイン店", + "ko": "주방 디자인 가게", + "lt": "Virtuvės dizaino parduotuvė", + "lv": "Virtuves dizaina veikals", + "nl": "Keukenontwerpwinkel", + "no": "Kjøkkenbutikk", + "pl": "Sklep z wyposażeniem i meblami kuchennymi", + "pt-BR": "Loja de Cozinhas", + "pt": "Loja de cozinhas", + "ro": "Magazin de Bucătărie", + "ru": "Магазин кухонь", + "sk": "Kuchynské štúdio", + "sq": "Dyqan për Aredim të Kuzhinës", + "sr": "Кухињски дизајн", + "sv": "Köksinredning", + "tr": "Mutfak Eşyaları Mağazası", + "uk": "Меблі для кухні", + "vi": "Tiệm Thiết kế Phòng bếp", + "zh-CN": "厨房用品店", + "zh-HK": "廚房設計店", + "zh-TW": "廚房設計行", + "mk": "Кујни и елементи", + "he": "חנות עיצוב המטבח" + } + }, + "shop/laundry": { + "title": { + "C": "Laundry", + "en": "Laundry", + "af": "Wassery", + "ar": "محل غسيل ملابس", + "ast": "Llavandería", + "bs": "Praonica", + "ca": "Bugaderia", + "cs": "Prádelna", + "da": "Vaskeri", + "de": "Wäscherei", + "el": "Καθαριστήριο", + "en-GB": "Laundry", + "eo": "Vest-lavejo (akvo)", + "es": "Lavandería", + "et": "Pesumaja", + "fa": "رخت‌شوی‌خانه", + "fi": "Pesula", + "fr": "Laverie", + "gl": "Lavandaría", + "hr": "Praonica rublja", + "hu": "Mosoda", + "id": "Penatu", + "is": "Þvottur", + "it": "Lavanderia", + "ja": "洗濯屋・ランドリー(非セルフ)", + "kn": "ಧೋಬಿಖಾನೆ", + "ko": "세탁소", + "lt": "Skalbykla", + "lv": "Veļas mazgātuve", + "nl": "Wasserette", + "no": "Vaskeri", + "pl": "Pralnia", + "pt-BR": "Lavanderia", + "pt": "Lavandaria", + "ro": "Spălătorie", + "ru": "Прачечная", + "sk": "Čistiareň", + "sl": "Pralnica", + "sq": "Lavanderi", + "sr": "Перионица", + "sv": "Tvättinrättning", + "ta": "சலவையகம்", + "tr": "Çamaşır Yıkama", + "uk": "Пральня", + "vi": "Tiệm Máy giặt", + "yue": "洗衣舖", + "zh-CN": "洗衣店", + "zh-HK": "洗衣店", + "zh-TW": "洗衣店", + "zh": "洗衣店", + "mk": "Перачница", + "bg": "Пералня", + "he": "כביסה" + } + }, + "shop/leather": { + "title": { + "C": "Leather Store", + "en": "Leather Store", + "ar": "متجر المنتجات الجلدية", + "ast": "Artículos de piel", + "ca": "Botiga de cuirs", + "cs": "Kožené zboží", + "da": "Læderbutik", + "de": "Lederwarengeschäft", + "el": "Κατάστημα με Δερμάτινα", + "en-GB": "Leather Shop", + "eo": "Ledaĵa vendejo", + "es": "Talabartería", + "et": "Nahakauplus", + "fa": "فروشگاه چرم", + "fi": "Nahkaliike", + "fr": "Maroquinier", + "gl": "Tenda de peles", + "hr": "Trgovina kožnom galanterijom", + "hu": "Bőrdíszműbolt", + "id": "Toko Kulit", + "is": "Leðurvöruverslun", + "it": "Pelletteria", + "ja": "皮革用品店", + "ko": "가죽 가게", + "lt": "Odos dirbinių parduotuvė", + "lv": "Ādas veikals", + "nl": "Lederwinkel", + "no": "Skinnbutikk", + "pl": "Sklep z odzieżą skórzaną", + "pt-BR": "Loja de Couros", + "pt": "Loja de couro", + "ru": "Магазин кожаных изделий", + "sk": "Obchod s kožennými výrobkami", + "sl": "Usnjarna", + "sr": "Продавница коже", + "sv": "Läderaffär", + "ta": "தோல் கடை", + "tr": "Deri Dükkanı", + "uk": "Шкіргалантерея", + "vi": "Tiệm Đồ Da", + "zh-CN": "皮具店", + "zh-HK": "皮革店", + "zh-TW": "皮革店", + "mk": "Кожна галантерија", + "he": "חנות עור" + } + }, + "shop/locksmith": { + "title": { + "C": "Locksmith", + "en": "Locksmith", + "ar": "محل أقفال", + "ast": "Cerraxería", + "bs": "Bravar", + "ca": "Copisteria de claus", + "cs": "Zámečnictví", + "da": "Låsesmed", + "de": "Schlüsseldienst", + "el": "Κλειδαράς", + "en-GB": "Locksmith", + "eo": "Serurejo", + "es": "Cerrajería", + "et": "Lukksepp", + "fa": "قفل سازی", + "fi": "Lukkoliike", + "fr": "Serrurier", + "gl": "Cerralleiro", + "hr": "Bravar", + "hu": "Lakatos", + "id": "Ahli Kunci", + "is": "Lásasmiður", + "it": "Fabbro", + "ja": "鍵屋(専門店)", + "ko": "열쇠 제조공", + "lt": "Raktininkas", + "lv": "Atslēdznieks", + "nl": "Slotenmaker", + "no": "Låsesmed", + "pl": "Ślusarz", + "pt-BR": "Serralheiro", + "pt": "Chaveiro", + "ru": "Изготовление ключей", + "sk": "Zámočníctvo", + "sl": "Ključavničar", + "sr": "Бравар", + "sv": "Låssmed", + "tr": "Anahtarcı", + "uk": "Слюсар", + "vi": "Thợ khóa", + "yue": "鎖匠", + "zh-CN": "锁匠铺", + "zh-HK": "鎖匠", + "zh-TW": "鎖匠", + "mk": "Бравар", + "he": "מנעולן" + } + }, + "shop/lottery": { + "title": { + "C": "Lottery Shop", + "en": "Lottery Shop", + "ar": "متجر اليانصيب", + "ast": "Loteríes", + "ca": "Administració de loteria", + "cs": "Prodejna losů", + "da": "Lotteributik", + "de": "Lottoannahmestelle", + "el": "Κατάστημα λαχείων", + "en-GB": "Lottery Shop", + "eo": "Loterbileta vendejo", + "es": "Lotería", + "et": "Lotopood", + "fa": "فروشگاه قرعه کشی", + "fi": "Veikkauspiste", + "fr": "Loterie", + "gl": "Tenda de lotaría", + "hr": "Trgovina igara na sreću", + "hu": "Lottózó", + "id": "Toko Lotre", + "is": "Lottósjoppa", + "it": "Ricevitoria", + "ja": "宝くじ売り場", + "ko": "복권 가게", + "lt": "Loterijų parduotuvė", + "lv": "Loterijas veikals", + "nl": "Loterij", + "no": "Tipping", + "pl": "Kolektura", + "pt-BR": "Casa lotérica", + "pt": "Loja de lotaria", + "ro": "Loterie", + "ru": "Продажа лотерейных билетов", + "sk": "Lotéria", + "sl": "Loterijska prodajalna", + "sr": "Продавница лутрије", + "sv": "Lotteri", + "tr": "Loto Bayi", + "uk": "Лотерейний магазин", + "vi": "Tiệm Xổ số", + "zh-CN": "彩票店", + "zh-HK": "獎券店", + "zh-TW": "彩券行", + "mk": "<преведете со истозначници или сродни поими на „Лотарија“, одделени со запирки>", + "bg": "Лотарийни билети", + "he": "חנות לוטו" + } + }, + "shop/mall": { + "title": { + "C": "Mall", + "en": "Mall", + "af": "Winkelsentrum", + "ar": "مركز تسوق مول", + "ast": "Centru comercial", + "bn": "মল", + "bs": "Tržni centar", + "ca": "Centre comercial", + "cs": "Obchodní centrum", + "da": "Indkøbscenter", + "de": "Einkaufzentrum", + "el": "Εμπορικό Κέντρο", + "en-GB": "Mall", + "eo": "Vendejaro", + "es": "Centro comercial", + "et": "Kaubanduskeskus", + "fa": "مرکز خرید", + "fi": "Kauppakeskus", + "fr": "Centre commercial", + "gl": "Centro comercial", + "hr": "Trgovački centar", + "hu": "Bevásárlóközpont", + "id": "Mal", + "is": "Verslunarmiðstöð", + "it": "Centro commerciale", + "ja": "ショッピングセンター", + "ko": "쇼핑몰", + "lt": "Prekybos centras", + "lv": "Iepirkšanās centrs", + "nl": "Winkelcentrum", + "no": "Kjøpesenter", + "pl": "Centrum handlowe", + "pt-BR": "Shopping ou Galeria de lojas", + "pt": "Centro comercial", + "ro": "Mall", + "ru": "Торговый центр", + "sk": "Nákupné centrum", + "sl": "Trgovski center", + "sr": "Тржни центар", + "sv": "Köpcenter", + "ta": "பேரங்காடி", + "tr": "Alışveriş Merkezi", + "uk": "Торгівельний центр", + "vi": "Trung tâm Thương mại", + "yue": "大商場", + "zh-CN": "购物中心", + "zh-HK": "購物中心", + "zh-TW": "購物中心", + "zh": "商场", + "mk": "Трговски центар", + "bg": "Мол", + "he": "קניון" + } + }, + "shop/massage": { + "title": { + "C": "Massage Shop", + "en": "Massage Shop", + "ar": "صالون التدليك", + "ast": "Masaxes", + "ca": "Centre de massatges", + "cs": "Masáže", + "da": "Massagebutik", + "de": "Massagesalon", + "el": "Κατάστημα Μασάζ", + "en-GB": "Massage Shop", + "eo": "Salono de masaĝo", + "es": "Tienda de masajes", + "et": "Massaaž", + "fa": "فروشگاه ماساژ", + "fi": "Hierontayritys", + "fr": "Salon de massage", + "gl": "Tenda de masaxes", + "hr": "Studio za masažu", + "hu": "Masszázsszalon", + "id": "Panti Pijat", + "is": "Nuddstofa", + "it": "Centro Massaggi", + "ja": "マッサージ店", + "ko": "마사지 가게", + "lt": "Masažo parduotuvė", + "lv": "Masāžu veikals", + "nl": "Massagewinkel", + "no": "Massasjesenter", + "pl": "Masaż", + "pt-BR": "Loja de Massagem", + "pt": "Centro de massagens", + "ro": "Masaj", + "ru": "Массажный салон", + "sk": "Masérstvo", + "sr": "Салон за масажу", + "sv": "Massage", + "tr": "Masaj Salonu", + "uk": "Массаж", + "vi": "Tiệm Xoa bóp", + "zh-CN": "按摩店", + "zh-HK": "按摩店", + "zh-TW": "按摩店", + "mk": "Масажа", + "he": "מכון עיסוי" + } + }, + "shop/medical_supply": { + "title": { + "C": "Medical Supply Store", + "en": "Medical Supply Store", + "ar": "متجر مستلزمات طبية", + "ast": "Tienda d'equipu médicu", + "ca": "Farmàcia", + "cs": "Zdravotnické potřeby", + "da": "Håndkøbsmedicinforhandler", + "de": "Sanitätshaus", + "el": "Κατάστημα Προμήθειας Ιατρικών Ειδών", + "en-GB": "Medical Supply Shop", + "eo": "Medicin-aparata vendejo", + "es": "Tienda de aparatos ortopédicos", + "et": "Tervisetoodete kauplus", + "fa": "فروشگاه تجهیزات پزشکی", + "fi": "Lääketarvikemyymälä", + "fr": "Magasin de matériel médical", + "gl": "Tenda de subministracións médicas", + "hr": "Trgovina medicinske opreme", + "hu": "Gyógyászati segédeszközök boltja", + "id": "Toko Peralatan Medis", + "is": "Lækningavöruverslun", + "it": "Negozio di forniture mediche", + "ja": "健康・医療器具店", + "ko": "의료 용품 가게", + "lt": "Medicinos reikmenų parduotuvė", + "lv": "Medicīnisko piederumu veikals", + "nl": "Winkel voor Medische Hulpmiddelen", + "no": "Medisinsk utstyrsbutikk", + "pl": "Sklep ze sprzętem medycznym", + "pt-BR": "Loja de Equipamentos Hospitalares", + "pt": "Loja de material médico", + "ro": "Magazin Alimentar Medical", + "ru": "Медицинские принадлежности", + "sk": "Obchod so zdravotníckymi pomôckami", + "sl": "Trgovina z medicinskimi primpomočki", + "sr": "Продавница медицинске опреме", + "sv": "Medicinsk utrustning ", + "tr": "Medikal Ürünler Mağazası", + "uk": "Медтехніка", + "vi": "Tiệm Thiết bị Y tế", + "zh-CN": "医疗用品店", + "zh-HK": "醫療器材行", + "zh-TW": "醫療器材行", + "mk": "Медицинска опрема и залихи", + "he": "חנות ציוד רפואי" + } + }, + "shop/mobile_phone": { + "title": { + "C": "Mobile Phone Store", + "en": "Mobile Phone Store", + "af": "Selfoonwinkel", + "ar": "محل بيع هواتف", + "ast": "Telefonía móvil", + "bn": "মোবাইল ফোন-এর দোকান", + "bs": "Prodavnica mobilnih uređaja", + "ca": "Botiga de telefonia mòbil", + "cs": "Obchod s mobily", + "da": "Mobiltelefonforhandler", + "de": "Mobiltelefonladen", + "el": "Κατάστημα Κινητής Τηλεφωνίας", + "en-GB": "Mobile Phone Shop", + "eo": "Poŝtelefona vendejo", + "es": "Tienda de telefonía móvil", + "et": "Mobiilipood", + "fa": "فروشگاه تلفن همراه", + "fi": "Matkapuhelinmyymälä", + "fr": "Magasin de téléphonie mobile", + "gl": "Tenda de telefonía móbil", + "hr": "Prodavaonica mobilnih telefona", + "hu": "Mobiltelefon-szaküzlet", + "id": "Toko Handphone", + "is": "Farsímaverslun", + "it": "Negozio di telefonia mobile", + "ja": "携帯電話店", + "ko": "휴대폰 가게", + "lt": "Mobiliųjų telefonų parduotuvė", + "lv": "Mobilo telefonu veikals", + "nl": "Mobieletelefoonwinkel", + "no": "Mobiltelefonforhandler", + "pl": "Sklep z telefonami komórkowymi", + "pt-BR": "Loja de Celulares", + "pt": "Loja de telemóveis", + "ro": "Magazin de Telefoane Mobile", + "ru": "Магазин мобильных телефонов и аксессуаров", + "sk": "Obchod s mobilnými telefónmi", + "sl": "Trgovina z mobilnimi telefoni", + "sr": "Продавница мобилних телефона", + "sv": "Mobiltelefoner", + "tr": "Cep Telefonu Mağazası", + "uk": "Мобільні телефони", + "vi": "Tiệm Điện thoại Di động", + "yue": "電話舖", + "zh-CN": "手机店", + "zh-HK": "流動電話店", + "zh-TW": "行動電話店", + "zh": "手机店", + "mk": "Мобилара", + "bg": "Магазин за мобилни телефони", + "dv": "މޯބައިލް ފޯނު ވިއްކާ ފިހާރަ", + "he": "חנות טלפונים ניידים", + "ms": "Kedai Telefon Bimbit", + "so": "Dukaanka Taleefoonka Gacanta" + } + }, + "shop/money_lender": { + "title": { + "C": "Money Lender", + "en": "Money Lender", + "ar": "مقرض المال", + "ast": "Prestamista", + "ca": "Prestamista", + "cs": "Nebankovní půjčky", + "da": "Pengeudlåner", + "de": "Geldverleiher", + "el": "Τοκογλύφος", + "en-GB": "Money Lender", + "eo": "Mon-pruntejo", + "es": "Prestamista de dinero", + "et": "Rahalaenutaja", + "fa": "وام دهنده پول", + "fi": "Rahanlainausliike", + "fr": "Prêteur", + "gl": "Prestamista de cartos", + "hu": "Pénzkölcsönző", + "id": "Peminjaman Uang", + "is": "Peningaútlán", + "it": "Agenzia Prestito", + "ja": "消費者金融", + "ko": "대출", + "lt": "Pinigų skolintojas", + "lv": "Naudas Aizdevējs", + "nl": "Particuliere Gelduitleendienst", + "no": "Pengeutlåner", + "pl": "Pożyczki", + "pt-BR": "Financiadora", + "pt": "Loja de empréstimos", + "ro": "Creditor de Bani", + "ru": "Ростовщик", + "sk": "Požičovňa peňazí", + "sl": "Posojilnica", + "sr": "Зајмодавац", + "sv": "Långivare", + "tr": "Tefeci", + "uk": "Кредитна спілка", + "vi": "Chỗ Mượn Tiền", + "zh-CN": "放贷人", + "zh-HK": "放債人", + "zh-TW": "地下錢莊", + "mk": "Зајмување пари", + "he": "מלווה בריבית", + "ms": "Ceti" + } + }, + "shop/motorcycle": { + "title": { + "C": "Motorcycle Dealership", + "en": "Motorcycle Dealership", + "af": "Motorfietshandelaar", + "ar": "بائع دراجات نارية", + "ast": "Venta de motos", + "bs": "Salon motocikala", + "ca": "Botiga de motocicletes", + "cs": "Obchod s motocykly", + "da": "Motorcykelforhandler", + "de": "Motorradhändler", + "el": "Εμπόριο Μοτοσυκλετών", + "en-GB": "Motorcycle Dealership", + "eo": "Motorcikla vendejo", + "es": "Concesionario de motocicletas", + "et": "Mootorrattapood", + "fa": "نمایندگی موتور سیکلت", + "fi": "Moottoripyöräliike", + "fr": "Vendeur de motos", + "gl": "Concesionario de motocicletas", + "hr": "Prodavaonica motocikala", + "hu": "Motorkerékpár-kereskedés", + "id": "Dealer Motor", + "is": "Mótorhjólaverslun", + "it": "Concessionario di motociclette", + "ja": "バイク店", + "ko": "오토바이 대리점", + "lt": "Motociklų prekybos atstovybė", + "lv": "Motociklu veikals", + "nl": "Motorwinkel", + "no": "Motorsykkelforhandler", + "pl": "Sklep motocyklowy", + "pt-BR": "Revenda de Motos", + "pt": "Loja de motas", + "ro": "Magazin de Motociclete", + "ru": "Магазин мотоциклов", + "sk": "Predajňa motocyklov", + "sl": "Trgovina z motorji", + "sr": "Продавница мотоцикала", + "sv": "Återförsäljare av motorcyklar", + "tr": "Motosiklet Satış Mağazası", + "uk": "Салон мотоциклів", + "vi": "Tiệm Xe máy", + "yue": "電單車行", + "zh-CN": "摩托车店", + "zh-HK": "電單車店", + "zh-TW": "機車行", + "zh": "摩托车行", + "mk": "Салон за мотоцикли", + "bg": "Магазин за мотоциклети", + "he": "חנות אופנועים" + } + }, + "shop/music": { + "title": { + "C": "Music Store", + "en": "Music Store", + "af": "Musiekwinkel", + "ar": "متجر بيع موسيقى", + "ast": "Tienda de música", + "bn": "সঙ্গীতের দোকান", + "bs": "Muzička prodavnica", + "ca": "Botiga de música", + "cs": "Obchod s hudbou", + "da": "Musikbutik", + "de": "Musikgeschäft", + "el": "Κατάστημα Μουσικής", + "en-GB": "Music Shop", + "eo": "Muzika vendejo", + "es": "Tienda de música", + "et": "Muusikapood", + "fa": "فروشگاه موسیقی", + "fi": "Musiikkiliike", + "fr": "Magasin de musique", + "gl": "Tenda de música", + "hr": "Prodavaonica glazbene opreme", + "hu": "Hanglemezbolt", + "id": "Toko Musik", + "is": "Tónlistarbúð", + "it": "Negozio di musica", + "ja": "CD/レコード店", + "ko": "음반 가게", + "lt": "Muzikos parduotuvė", + "lv": "Mūzikas veikals", + "nl": "Muziekwinkel", + "no": "Musikkforretning", + "pl": "Sklep muzyczny", + "pt-BR": "Loja de Discos Musicais", + "pt": "Loja de música", + "ro": "Magazin de Muzică", + "ru": "Музыкальный магазин", + "sk": "Obchod s hudbou", + "sl": "Trgovina z glasbo", + "sr": "Продавница музике", + "sv": "Musikaffär", + "tr": "Müzik Mağazası", + "uk": "Музичний магазин", + "vi": "Tiệm Âm nhạc", + "yue": "唱片舖", + "zh-CN": "音乐店", + "zh-HK": "唱片店", + "zh-TW": "音樂店", + "zh": "音乐店", + "mk": "Продавница за музика", + "bg": "Музикален магазин", + "he": "חנות מוזיקה", + "ms": "Kedai Muzik" + } + }, + "shop/musical_instrument": { + "title": { + "C": "Musical Instrument Store", + "en": "Musical Instrument Store", + "ar": "متجر آلات موسيقية", + "ast": "Instrumentos musicales", + "ca": "Botiga d'instruments musicals", + "cs": "Obchod s hudebními nástroji", + "da": "Musikinstrumentbutik", + "de": "Musikinstrumentegeschäft", + "el": "Κατάστημα μουσικών οργάνων", + "en-GB": "Musical Instrument Shop", + "eo": "Muzikinstrumenta vendejo", + "es": "Tienda de instrumentos musicales", + "et": "Muusikainstrumentide kauplus", + "fa": "فروشگاه سازهای موسیقی", + "fi": "Instrumenttimyymälä", + "fr": "Magasin d'instruments de musique", + "gl": "Tenda de instrumentos musicais", + "hr": "Trgovina glazbenih instrumenata", + "hu": "Hangszerbolt", + "id": "Toko Alat Musik", + "is": "Hljóðfæraverslun", + "it": "Negozio di strumenti musicali", + "ja": "楽器店", + "ko": "악기 가게", + "lt": "Muzikos instrumentų parduotuvė", + "lv": "Mūzikas instrumentu veikals", + "nl": "Muziekinstrumentenwinkel", + "no": "Musikkinstrumentbutikk", + "pl": "Sklep z instrumentami muzycznymi", + "pt-BR": "Loja de Instrumentos Musicais", + "pt": "Loja de instrumentos musicais", + "ro": "Magazin de Instrumente Muzicale", + "ru": "Магазин музыкальных инструментов", + "sk": "Obchod s hudobnými nástrojmi", + "sl": "Trgovina z glasbenimi inštrumenti", + "sr": "Продавница музичких инструмената", + "sv": "Musikinstrument", + "tr": "Müzik Aletleri Mağazası", + "uk": "Магазин музичних інструментів", + "vi": "Tiệm Nhạc cụ", + "zh-CN": "乐器店", + "zh-HK": "樂器店", + "zh-TW": "音樂樂器行", + "mk": "Продавница за музички инструменти", + "he": "חנות כלי נגינה", + "ms": "Kedai Alatan Muzik" + } + }, + "shop/newsagent": { + "title": { + "C": "Newspaper/Magazine Shop", + "en": "Newspaper/Magazine Shop", + "ar": "محل بيع الجرائد", + "ast": "Prensa y revistes", + "ca": "Botiga de diaris i revistes", + "cs": "Trafika", + "da": "Avis/Bladforhandler", + "de": "Zeitschriftenhandel", + "el": "Πρακτορείο τύπου", + "en-GB": "Newspaper/Magazine Shop", + "eo": "Gazeta vendejo", + "es": "Puesto de periódicos / revistas", + "et": "Ajakirjapood", + "fa": "فروشگاه روزنامه/مجله", + "fi": "Lehtikoju", + "fr": "Magasin de journaux", + "gl": "Tenda de xornais/revistas", + "hr": "Trgovina za novine i magazine", + "hu": "Újságárus", + "id": "Toko Majalah/Koran", + "is": "Dagblaða/tímaritasala", + "it": "Edicola", + "ja": "新聞・雑誌店", + "ko": "신문/잡지 가게", + "lt": "Laikraščių/žurnalų parduotuvė", + "lv": "Avīžu / Žurnālu veikals", + "nl": "Kranten-/Tijdschriftwinkel", + "no": "Aviskiosk", + "pl": "Sklep z prasą", + "pt-BR": "Banca de Revistas", + "pt": "Loja de jornais / revistas", + "ro": "Magazin de Ziare", + "ru": "Газеты/пресса/журналы", + "sk": "Obchod s novinami/časopismi", + "sl": "Trgovina s časopisi/revijami", + "sr": "Дневне новине/часописи", + "sv": "Tidningsaffär", + "tr": "Gazete Bayii", + "uk": "Преса", + "vi": "Tiệm Báo", + "zh-CN": "报摊", + "zh-HK": "報紙/雜誌店", + "zh-TW": "報紙/雜誌攤", + "mk": "Весникарница", + "he": "חנות עיתונים" + } + }, + "shop/optician": { + "title": { + "C": "Optician", + "en": "Optician", + "af": "Oogarts", + "ar": "متجر نظارات", + "ast": "Óptica", + "bn": "চক্ষুরোগের চিকিত্সক", + "bs": "Optičar", + "ca": "Òptica", + "cs": "Optika", + "da": "Optiker", + "de": "Optiker", + "el": "Οπτικός", + "en-GB": "Optician", + "eo": "Optikbutiko", + "es": "Óptica", + "et": "Optikapood", + "fa": "عینک فروشی", + "fi": "Optikko", + "fr": "Opticien", + "gl": "Óptica", + "hr": "Optičar", + "hu": "Látszerész", + "id": "Optik", + "is": "Gleraugnaverslun", + "it": "Ottico", + "ja": "メガネ店", + "kn": "ನೇತ್ರ ತಜ್ಞ", + "ko": "안경점", + "lt": "Optika", + "lv": "Optometrists", + "nl": "Opticien", + "no": "Optiker", + "pl": "Optyk", + "pt-BR": "Ótica", + "pt": "Ótica", + "ro": "Optician", + "ru": "Оптика", + "sk": "Optika", + "sl": "Optik", + "sq": "Okulist", + "sr": "Оптичар", + "sv": "Optiker", + "tr": "Gözlükçü", + "uk": "Оптика", + "vi": "Tiệm Kính mắt", + "yue": "眼鏡鋪", + "zh-CN": "眼镜店", + "zh-HK": "眼鏡店", + "zh-TW": "眼鏡行", + "zh": "眼镜店", + "mk": "Оптичар", + "bg": "Оптика", + "he": "אופטיקאי" + } + }, + "shop/outdoor": { + "title": { + "C": "Outdoors Store", + "en": "Outdoors Store", + "ar": "متجر ملابس ومعدات الأنشطة في الهواء الطلق", + "ast": "Equipamientu d'aire llibre", + "ca": "Botiga per a activitats a l'aire lliure", + "cs": "Outdoorové zboží", + "da": "Friluftsudstyrsbutik", + "de": "Outdoorgeschäft", + "el": "Κατάστημα με Είδη Εξοπλισμού Υπαίθρου", + "en-GB": "Outdoors Shop", + "eo": "Vojaĝila vendejo", + "es": "Tienda de actividades al aire libre", + "et": "Matkatarvete kauplus", + "fa": "فروشگاه لوازم کوهنوردی و کمپینگ", + "fi": "Ulkoilmamyymälä", + "fr": "Magasin de matériel de sports de plein air", + "gl": "Tenda de actividades ó ar libre", + "hr": "Trgovina sa opremom za kampiranje", + "hu": "Túrafelszerelés-bolt", + "id": "Toko Perlengkapan Outdoor", + "is": "Útivistarbúð", + "it": "Negozio per sport all'aria aperta", + "ja": "アウトドアショップ", + "ko": "아웃도어 가게", + "lt": "Laisvalaikio parduotuvė", + "nl": "Winkel voor Benodigdheden voor Buitenactiviteiten", + "no": "Villmarksbutikk", + "pl": "Sklep turystyczny", + "pt-BR": "Loja de Esportes de Aventura", + "pt": "Loja de artigos para atividades ao ar livre", + "ro": "Magazin în Aer Liber", + "ru": "Магазин снаряжения для активного отдыха", + "sk": "Outdoorový obchod", + "sl": "Trgovina za dejavosti na prostem", + "sr": "Продавница планинарске опреме", + "sv": "Friluftsaffär", + "tr": "Kamp Malzemeleri Mağazası", + "uk": "Активний відпочинок", + "vi": "Tiệm Thể thao Ngoài trời", + "zh-CN": "户外用品店", + "zh-HK": "戶外用品店", + "zh-TW": "戶外用品店", + "mk": "Продавница за рекреативна опрема", + "he": "חנות רהיטי גינה" + } + }, + "shop/paint": { + "title": { + "C": "Paint Store", + "en": "Paint Store", + "ar": "متجر دهانات وطلاء", + "ast": "Tienda de pintures", + "ca": "Botiga de pintura", + "cs": "Barvy a laky", + "da": "Farvehandel", + "de": "Farbengeschäft", + "el": "Χρωματοπωλείο", + "en-GB": "Paint Shop", + "eo": "Farba vendejo", + "es": "Tienda de pinturas", + "et": "Värvipood", + "fa": "فروشگاه رنگ", + "fi": "Maalikauppa", + "fr": "Magasin de peintures", + "gl": "Tenda de pinturas", + "hr": "Prodavaonica boja", + "hu": "Festékbolt", + "id": "Toko Cat", + "is": "Málningarvöruverslun", + "it": "Negozio di vernici", + "ja": "塗料店", + "ko": "페인트 가게", + "lt": "Dažų parduotuvė", + "lv": "Krāsu veikals", + "nl": "Verfwinkel", + "no": "Malingsbutikk", + "pl": "Sklep z farbami", + "pt-BR": "Loja de Tintas", + "pt": "Loja de tintas", + "ro": "Magazin de Pictură", + "ru": "Магазин красочных изделий", + "sk": "Obchod s nátermi", + "sl": "Trgovina z barvami", + "sr": "Фарбара", + "sv": "Färgbutik", + "tr": "Boyacı", + "uk": "Магазин фарб", + "vi": "Tiệm Sơn", + "zh-CN": "油漆店", + "zh-HK": "油漆店", + "zh-TW": "油漆行", + "mk": "Бои и лакови", + "he": "חנות צבע", + "ms": "Kedai Cat" + } + }, + "shop/pawnbroker": { + "title": { + "C": "Pawn Shop", + "en": "Pawn Shop", + "ar": "متجر رهن", + "ast": "Casa d'empeños", + "ca": "Botiga d'empenyoraments", + "cs": "Zastavárna", + "da": "Panteudlåner", + "de": "Pfandleiher", + "el": "Ενεχυροδανειστήριο", + "en-GB": "Pawn Shop", + "eo": "Mon-pruntejo (kontraŭ garantiaĵo)", + "es": "Casa de empeño", + "et": "Pandimaja", + "fi": "Panttilainaamo", + "fr": "Prêteur sur gages", + "gl": "Casa de empeños", + "hr": "Zalagaonica", + "hu": "Zálogház", + "id": "Pegadaian", + "is": "Veðlánari", + "it": "Banco dei pegni", + "ja": "質店", + "ko": "전당포", + "lt": "Lombardas", + "lv": "Lombards", + "nl": "Bank van lening", + "no": "Pantelåner", + "pl": "Lombard", + "pt-BR": "Loja de Penhoras", + "pt": "Casa de penhoras", + "ru": "Ломбард", + "sk": "Záložňa", + "sl": "Zastavljalnica", + "sr": "Залагаоница", + "sv": "Pantbank", + "tr": "İkinciel Alım Satım Mağazası", + "uk": "Ломбард", + "vi": "Tiệm Cầm đồ", + "zh-CN": "典当商铺", + "zh-HK": "當舖", + "zh-TW": "汽機車借款", + "mk": "Заложилница", + "he": "חנות יד שניה" + } + }, + "shop/pet": { + "title": { + "C": "Pet Store", + "en": "Pet Store", + "af": "Troeteldierwinkel", + "ar": "محل حيوانات أليفة", + "ast": "Tienda de mascotes", + "bs": "Prodavnica kućnih ljubnimaca", + "ca": "Botiga d'animals", + "cs": "Chovatelské potřeby", + "da": "Kæledyrsbutik", + "de": "Tierhandlung", + "el": "Κατάστημα Κατοικίδιων", + "en-GB": "Pet Shop", + "eo": "Dombesta vendejo", + "es": "Tienda de mascotas", + "et": "Lemmikloomapood", + "fa": "فروشگاه حیوانات خانگی", + "fi": "Lemmikkiliike", + "fr": "Animalerie", + "gl": "Tenda de mascotas", + "hr": "Prodavaonica kućnim ljubimcima", + "hu": "Kisállatkereskedés", + "id": "Toko Peliharaan", + "is": "Dýrabúð", + "it": "Negozio per animali", + "ja": "ペットショップ", + "ko": "애완동물 가게", + "lt": "Augintinių parduotuvė", + "lv": "Dzīvnieku veikals", + "nl": "Dierenwinkel", + "no": "Dyrebutikk", + "pl": "Sklep zoologiczny", + "pt-BR": "Loja de animais ou artigos para animais", + "pt": "Loja de animais de estimação", + "ro": "Magazin de Animale", + "ru": "Зоомагазин", + "sk": "Chovprodukt", + "sl": "Trgovina za domače živali", + "sr": "Продавница кућних љубимаца", + "sv": "Djurbutik", + "tr": "Evcil Hayvan Mağazası", + "uk": "Товари для тварин", + "vi": "Tiệm Vật nuôi", + "yue": "寵物舖", + "zh-CN": "宠物店", + "zh-HK": "寵物舖", + "zh-TW": "寵物店", + "zh": "宠物店", + "mk": "Продавница за домашни миленици", + "bg": "Зоо магазин", + "he": "חנות לחיות מחמד" + } + }, + "shop/photo": { + "title": { + "C": "Photography Store", + "en": "Photography Store", + "ar": "محل تصوير", + "ast": "Fotografía", + "bs": "Fotografska radnja", + "ca": "Botiga de fotografia", + "cs": "Fotografický obchod", + "da": "Fotoforretning", + "de": "Fotofachgeschäft", + "el": "Φωτογραφείο", + "en-GB": "Photography Shop", + "eo": "Fotografia vendejo", + "es": "Tienda de fotografía", + "et": "Fotograafiapood", + "fa": "عکس و ویدیو", + "fi": "Valokuvausliike", + "fr": "Tirage de photos", + "gl": "Tenda de fotografía", + "hr": "Prodavaonica fotografske opreme", + "hu": "Fotósbolt", + "id": "Toko Fotografi", + "is": "Ljósmyndavöruverslun", + "it": "Fotografo", + "ja": "写真店", + "ko": "사진 가게", + "lt": "Fotografijos parduotuvė", + "lv": "Fotogrāfijas veikals", + "nl": "Fotowinkel", + "no": "Fotobutikk", + "pl": "Sklep fotograficzny", + "pt-BR": "Loja de Fotografia", + "pt": "Loja de fotografia", + "ro": "Magazin de Fotografie", + "ru": "Фототовары", + "sk": "Obchod s fototechnikou", + "sl": "Foto trgovina", + "sr": "Фотографска радња", + "sv": "Fotoaffär ", + "tr": "Fotoğrafçı", + "uk": "Фототовари", + "vi": "Tiệm Chụp Hình", + "yue": "影相舖", + "zh-CN": "照相馆", + "zh-HK": "相片沖印店", + "zh-TW": "攝影用品店", + "mk": "Фотографски дуќан", + "he": "חנות צילום" + } + }, + "shop/pyrotechnics": { + "title": { + "C": "Fireworks Store", + "en": "Fireworks Store", + "ar": "متجر ألعاب نارية", + "ast": "Venta de pirotecnia", + "ca": "Botiga d'articles pirotècnics", + "cs": "Obchod s pyrotechnikou", + "da": "Fyrværkeributik", + "de": "Feuerwerksgeschäft", + "el": "Κατάστημα Πυροτεχνημάτων", + "en-GB": "Fireworks Shop", + "eo": "Art-fajraĵa vendejo", + "es": "Tienda de fuegos artificiales", + "et": "Ilutulestiku kauplus", + "fa": "فروشگاه لوازم آتش‌بازی ", + "fi": "Ilotulitemyymälä", + "fr": "Magasin de feux d'artifice", + "gl": "Tenda de fogos artificiais", + "hr": "Prodavaonica za pirotehniku", + "hu": "Tűzijátékbolt", + "id": "Toko Kembang Api", + "is": "Flugeldaverslun", + "it": "Negozio di fuochi d'artificio", + "ja": "花火店", + "ko": "불꽃놀이 가게", + "lt": "Fejerverkų parduotuvė", + "nl": "Vuurwerkwinkel", + "no": "Fyrverkerihandel", + "pl": "Sklep z ogniami sztucznymi", + "pt-BR": "Loja de Fogos de Artifício", + "pt": "Loja de pirotecnia", + "ro": "Magazin de Artificii", + "ru": "Магазин фейерверков", + "sk": "Obchod s pyrotechnikov", + "sr": "Продавница петарди", + "sv": "Fyrverkerier", + "tr": "Havai Fişek Mağazası", + "uk": "Феєрверки", + "vi": "Tiệm Pháo bông", + "yue": "煙花舖", + "zh-CN": "烟花爆竹店", + "zh-HK": "煙花店", + "zh-TW": "煙火商", + "mk": "Продавница за огномет", + "he": "חנות זיקוקים" + } + }, + "shop/radiotechnics": { + "title": { + "C": "Radio/Electronic Component Store", + "en": "Radio/Electronic Component Store", + "ar": "متجر المكونات الإلكترونية", + "ast": "Componentes electrónicos", + "ca": "Botiga d'articles electrònics", + "cs": "Obchod s elektronickými součástkami", + "da": "Radio/Elektronikbutik", + "de": "Radio/Elektronik-Geschäft", + "el": "Μαγαζί Ηλεκτρονικών Εξαρτημάτων", + "en-GB": "Radio/Electronic Component Shop", + "eo": "Radioteĥnika/elektronik-parta vendejo", + "es": "Tienda de componentes radio electrónicos", + "et": "Elektroonikakomponentide pood", + "fa": "فروشگاه رادیو/اجزای الکترونیکی", + "fi": "Elektroniikkakomponenttimyymälä", + "fr": "Magasin de composants électroniques et de radio ", + "gl": "Tenda de compoñentes electrónicos", + "hr": "Trgovina za elektroniku", + "hu": "Rádiótechnikai bolt", + "id": "Toko Komponen Radio/Elektronik", + "is": "Rafíhlutaverslun", + "it": "Negozio di componenti elettronici", + "ja": "電子部品店", + "ko": "라디오/전자 부품 가게", + "lt": "Radijo/elektroninių dalių parduotuvė", + "lv": "Radio / Elektronisko komponenšu veikals", + "nl": "Winkel voor radio- en elektronische componenten", + "no": "Elektronikkbutikk", + "pl": "Sklep z częściami elektronicznymi", + "pt-BR": "Loja de Componentes Eletrônicos", + "pt": "Loja de componentes eletrónicos / rádio", + "ru": "Магазин радиодеталей", + "sk": "Obchod s elektronikou", + "sl": "Trgovina z elektroniko", + "sr": "Продавница електронских делова", + "sv": "Radio/Elektronikbutik", + "tr": "Radyocu", + "uk": "Радіодеталі", + "vi": "Tiệm Linh kiện Điện tử", + "yue": "無綫電/電子零件舖", + "zh-CN": "音像制品店", + "zh-HK": "無線電/電子零件店", + "zh-TW": "無線電/電子零件店", + "mk": "Продавница за електрични делови", + "he": "חנות אלקטרוניקה ורדיו" + } + }, + "shop/religion": { + "title": { + "C": "Religious Store", + "en": "Religious Store", + "ar": "متجر ديني", + "ast": "Artículos relixosos", + "ca": "Botiga d'articles religiosos", + "cs": "Náboženské předměty", + "da": "Religøs forretning", + "de": "Devotionalienhandlung", + "el": "Κατάστημα Θρησκευτικών Ειδών", + "en-GB": "Religious Shop", + "eo": "Devotaĵa vendejo", + "es": "Tienda religiosa", + "et": "Usutarvete kauplus", + "fa": "فروشگاه مذهبی", + "fi": "Uskonnollinen myymälä", + "fr": "Magasin d'articles religieux", + "gl": "Tenda relixiosa", + "hr": "Prodavaonica religioznih pomagala", + "hu": "Kegytárgybolt", + "id": "Toko Agamawi", + "is": "Verslun með trúartengdar vörur", + "it": "Negozio di articoli religiosi", + "ja": "宗教用品店", + "ko": "종교 가게", + "lt": "Religinė parduotuvė", + "nl": "Religieuze winkel", + "no": "Religiøs butikk", + "pl": "Sklep z dewocjonaliami", + "pt-BR": "Loja de Artigos Religiosos", + "pt": "Loja de artigos religiosos", + "ro": "Magazin Religios", + "ru": "Религиозная лавка", + "sk": "Obchod s náboženkými pomôckami", + "sr": "Продавница верских предмета", + "sv": "Religiös butik", + "tr": "Dini Ürünler Mağazası", + "uk": "Церковна лавка", + "vi": "Tiệm Bán đồ Tôn giáo", + "yue": "宗教舖", + "zh-CN": "宗教商店", + "zh-HK": "宗教用品店", + "zh-TW": "宗教用品店", + "mk": "Верска продавница", + "he": "חנות לתשמישי דת" + } + }, + "shop/scuba_diving": { + "title": { + "C": "Scuba Diving Shop", + "en": "Scuba Diving Shop", + "ar": "متجر غوص تحت الماء", + "ast": "Tienda de merguyu", + "ca": "Botiga de submarinisme", + "cs": "Potřeby pro potápěče", + "da": "Dykkerudstyrsbutik", + "de": "Tauchwarengeschäft", + "el": "Κατάστημα Εξοπλισμού Καταδύσεων", + "en-GB": "Scuba Diving Shop", + "eo": "Subakvad-aparata vendejo", + "es": "Tienda de buceo", + "et": "Sukeldustarvikute kauplus", + "fa": "فروشگاه لوازم غواصی ", + "fi": "Sukellusliike", + "fr": "Magasin de matériel de plongée sous-marine", + "gl": "Tenda de mergullo", + "hr": "Prodavaonica opreme za ronjenje", + "hu": "Búvárfelszerelés-bolt", + "id": "Toko Perlengkapan Menyelam", + "is": "Verslun með köfunarvörur", + "it": "Negozio di attrezzatura per subacquei", + "ja": "スキューバダイビングショップ", + "ko": "스쿠버 다이빙 가게", + "lt": "Povandeninio nardymo parduotuvė", + "nl": "Duikwinkel", + "no": "Dykkerutstyrsbutikk", + "pl": "Sklep nurkowy", + "pt-BR": "Loja de Equipamentos de Mergulho", + "pt": "Loja de equipamento de mergulho", + "ro": "Magazin de Scufundări", + "ru": "Магазин подводного снаряжения", + "sk": "Obchod s potápačským vybavením", + "sl": "Trgovina s potapljaško opremo", + "sr": "Продавница ронилачке опреме", + "sv": "Dykarbutik", + "tr": "Tüple Dalış Mağazası", + "uk": "Підводне плавання", + "vi": "Tiệm Dụng cụ Lặn Scuba", + "zh-CN": "潜水商店", + "zh-HK": "潛水用品店", + "zh-TW": "潛水用品店", + "mk": "Продавница за нуркачка опрема", + "he": "חנות לצוללנים" + } + }, + "shop/seafood": { + "title": { + "C": "Seafood Shop", + "en": "Seafood Shop", + "ar": "متجر مأكولات بحرية", + "ast": "Mariscos", + "ca": "Marisqueria", + "cs": "Rybárna", + "da": "Fiskehandler", + "de": "Fischgeschäft", + "el": "Κατάστημα Θαλασσινών", + "en-GB": "Seafood Shop", + "eo": "Marfrukta vendejo", + "es": "Tienda de pescados y mariscos", + "et": "Kalapood", + "fa": "فروشگاه غذای دریایی", + "fi": "Meriruokakauppa", + "fr": "Poissonnerie / Vente de fruits de mer", + "gl": "Peixaría", + "hr": "Ribarnica", + "hu": "Halbolt", + "id": "Toko HIdangan Laut", + "is": "Fiskverslun", + "it": "Pescheria", + "ja": "魚屋", + "ko": "해산물 가게", + "lt": "Jūros gėrybių parduotuvė", + "nl": "Viswinkel", + "no": "Sjømatbutikk", + "pl": "Sklep z owocami morza", + "pt-BR": "Peixaria ou loja de frutos do mar", + "pt": "Loja de marisco", + "ro": "Magazin de Fructe de Mare", + "ru": "Магазин морепродуктов", + "sk": "Obchod s morskými špecialitami", + "sl": "Ribarnica", + "sr": "Продавница морске хране ", + "sv": "Fiskaffär", + "tr": "Deniz Ürünleri Mağazası", + "uk": "Морепродукти", + "vi": "Tiệm Hải sản", + "zh-CN": "海鲜店", + "zh-HK": "海鮮店", + "zh-TW": "海產店", + "mk": "Продавница за морска храна", + "he": "חנות למאכלי ים" + } + }, + "shop/second_hand": { + "title": { + "C": "Consignment/Thrift Store", + "en": "Consignment/Thrift Store", + "ar": "محل لبيع البضائع المستعملة", + "ast": "Reventa d'empeños", + "ca": "Consigna", + "cs": "Second hand", + "da": "Genbrugsbutik", + "de": "Second-Hand-Laden", + "en-GB": "Second Hand Shop", + "eo": "Brokantejo", + "es": "Tienda de segunda mano", + "et": "Komisjonikauplus", + "fa": "دست دوم فروشی", + "fi": "Käytetyn tavaran kauppa", + "fr": "Dépôt-vente/produits d'occasion", + "gl": "Tenda de segunda man", + "hu": "Használtáru-bolt", + "id": "Jual Titip/Pasar Loak", + "is": "Notað og nýtt", + "it": "Negozio di articoli usati", + "ja": "リサイクルショップ", + "ko": "위탁/중고품 할인 매장", + "nl": "Tweedehandswinkel", + "no": "Gjenbruksbutikk", + "pl": "Sklep z rzeczami używanymi", + "pt-BR": "Brechó", + "pt": "Loja de produtos em segunda mão", + "ro": "Magazin de Depozite", + "ru": "Магазин секонд хенда", + "sk": "Second hand", + "sr": "Слање робе", + "sv": "Second hand", + "tr": "Bit Pazarı", + "uk": "Благодійний магазин", + "vi": "Tiệm Mua lại", + "zh-CN": "二手市场", + "zh-HK": "寄賣/二手店", + "zh-TW": "格仔鋪/二手店", + "mk": "Продавница за половни работи", + "he": "חנות יד שניה" + } + }, + "shop/shoes": { + "title": { + "C": "Shoe Store", + "en": "Shoe Store", + "af": "Skoenwinkel", + "ar": "متجر أحذية", + "ast": "Zapatería", + "bn": "জুতোর দোকান", + "bs": "Prodavnica obuće", + "ca": "Sabateria", + "cs": "Obuvnictví", + "da": "Skobutik", + "de": "Schuhgeschäft", + "el": "Κατάστημα Υπόδησης", + "en-GB": "Shoe Shop", + "eo": "Ŝua vendejo", + "es": "Zapatería", + "et": "Kingapood", + "fa": "کفش فروشی", + "fi": "Kenkäkauppa", + "fr": "Magasin de chaussures", + "gl": "Zapataría", + "hr": "Prodavaonica obuće", + "hu": "Cipőbolt", + "id": "Toko Sepatu", + "is": "Skóbúð", + "it": "Negozio di scarpe", + "ja": "靴店", + "kn": "ಮೆಟ್ಟು ಅಂಗಡಿ", + "ko": "신발 가게", + "lt": "Batų parduotuvė", + "lv": "Apavu veikals", + "nl": "Schoenenwinkel", + "no": "Skobutikk", + "pl": "Sklep obuwniczy", + "pt-BR": "Loja de Calçados", + "pt": "Sapataria", + "ro": "Magazin de Ghete", + "ru": "Обувь", + "sk": "Obchod s obuvov", + "sl": "Trgovina s čevlji", + "sr": "Продавница обуће", + "sv": "Skoaffär", + "ta": "காலணியகம்", + "tr": "Ayakkabı Mağazası", + "uk": "Взуття", + "vi": "Tiệm Giày", + "yue": "鞋舖", + "zh-CN": "鞋店", + "zh-HK": "鞋舖", + "zh-TW": "鞋店", + "zh": "鞋店", + "mk": "Продавница за обувки", + "bg": "Магазин за обувки", + "he": "חנות נעליים" + } + }, + "shop/sports": { + "title": { + "C": "Sporting Goods Store", + "en": "Sporting Goods Store", + "af": "Sportwinkel", + "ar": "متجر أدوات رياضية", + "ast": "Material deportivu", + "bn": "খেলার সামগ্রির দোকান", + "bs": "Prodavnica sportske opreme", + "ca": "Botiga d'esports", + "cs": "Sportovní potřeby", + "da": "Sportsudstyrsbutik", + "de": "Sportgeschäft", + "el": "Κατάστημα Αθλητικών Ειδών", + "en-GB": "Sporting Goods Shop", + "eo": "Sporta vendejo", + "es": "Tienda de artículos deportivos", + "et": "Sporditarvete pood", + "fa": "فروشگاه لوازم ورزشی", + "fi": "Urheiluliike", + "fr": "Magasin d'équipement sportif", + "gl": "Tenda de deportes", + "hr": "Prodavaonica sportske opreme", + "hu": "Sportbolt", + "id": "Toko Olahraga", + "is": "Íþróttaverslun", + "it": "Negozio di articoli sportivi", + "ja": "スポーツ用品店", + "ko": "스포츠 용품 가게", + "lt": "Sporto reikmenų parduotuvė", + "lv": "Sporta veikals", + "nl": "Sportzaak", + "no": "Sportsbutikk", + "pl": "Sklep sportowy", + "pt-BR": "Loja de Equipamentos Esportivos", + "pt": "Loja de artigos desportivos", + "ro": "Magazin de Haine de Sport", + "ru": "Спорттовары", + "sk": "Obchod so športovými potrebami", + "sl": "Športna trgovina", + "sr": "Продавница спортске опреме", + "sv": "Sportaffär", + "tr": "Spor Ürünleri Mağazası", + "uk": "Спорттовари", + "vi": "Tiệm Dụng cụ Thể thao", + "yue": "運動舖", + "zh-CN": "体育用品店", + "zh-HK": "運動用品店", + "zh-TW": "運動用品店", + "zh": "体育用品店", + "mk": "Продавница за спортска опрема", + "bg": "Спортен магазин", + "he": "חנות לאביזרי ספורט" + } + }, + "shop/stationery": { + "title": { + "C": "Stationery Store", + "en": "Stationery Store", + "af": "Skryfbehoeftewinkel", + "ar": "متجر أدوات مكتبية", + "ast": "Papelería", + "bs": "Prodavnica kancelarijske opreme", + "ca": "Papereria", + "cs": "Kancelářské potřeby", + "da": "Papirforhandler", + "de": "Schreibwarengeschäft", + "el": "Κατάστημα Γραφικής Ύλης", + "en-GB": "Stationery Shop", + "eo": "Papervara vendejo", + "es": "Artículos de papelería y oficina", + "et": "Kirjatarvete kauplus", + "fa": "فروشگاه نوشت‌افزار", + "fi": "Toimistotarvikekauppa", + "fr": "Papeterie", + "gl": "Papelaría", + "hr": "Papirnica", + "hu": "Írószerbolt", + "id": "Toko Alat Tulis", + "is": "Skriffangaverslun", + "it": "Negozio di cancelleria", + "ja": "文具店", + "ko": "문구점", + "lt": "Kanceliarinių prekių parduotuvė", + "lv": "Rakstāmlietu veikals", + "nl": "Kantoorboekhandel", + "no": "Papirhandel", + "pl": "Sklep papierniczy", + "pt-BR": "Papelaria", + "pt": "Papelaria", + "ru": "Канцелярские товары", + "sk": "Papierníctvo", + "sl": "Papirnica", + "sr": "Продавница канцеларијске опреме", + "sv": "Pappershandel", + "tr": "Kırtasiye", + "uk": "Канцтовари", + "vi": "Tiệm Văn phòng phẩm", + "yue": "文具舖", + "zh-CN": "文具店", + "zh-HK": "文具店", + "zh-TW": "文具店", + "zh": "文化用品店", + "mk": "Канцелариски материјали", + "bg": "Магазин за канцеларски стоки", + "he": "חנות לדברי כתיבה" + } + }, + "shop/supermarket": { + "title": { + "C": "Supermarket", + "en": "Supermarket", + "af": "Supermark", + "ar": "سوبر ماركت", + "ast": "Supermercáu", + "bn": "সুপারমার্কেট", + "bs": "Supermarket", + "ca": "Supermercat", + "cs": "Supermarket", + "da": "Supermarked", + "de": "Supermarkt", + "el": "Supermarket", + "en-GB": "Supermarket", + "eo": "Superbazaro", + "es": "Supermercado", + "et": "Supermarket", + "fa": "فروشگاه بزرگ", + "fi": "Supermarketti", + "fr": "Supermarché", + "gl": "Supermercado", + "hr": "Veletrgovina", + "hu": "Szupermarket", + "id": "Supermarket", + "is": "Stórmarkaður", + "it": "Supermercato", + "ja": "スーパーマーケット", + "ko": "슈퍼마켓", + "lt": "Prekybos centras", + "lv": "Lielveikals", + "nl": "Supermarkt", + "no": "Supermarked", + "pl": "Supermarket", + "pt-BR": "Supermercado", + "pt": "Supermercado / Hipermercado", + "ro": "Supermarket", + "ru": "Супермаркет", + "sk": "Supermarket", + "sl": "Supermarket", + "sq": "Supermarket", + "sr": "Самопослуга", + "sv": "Snabbköp", + "te": "సుపర్ మార్కెట్", + "tr": "Süpermarket", + "uk": "Супермаркет", + "vi": "Siêu thị", + "yue": "超級市場", + "zh-CN": "超市", + "zh-HK": "超級市場", + "zh-TW": "超級市場", + "zh": "超级市场", + "mk": "Супермаркет", + "bg": "Супермаркет", + "dv": "ސުޕަރމާރކެޓް", + "he": "סופרמרקט", + "so": "Suuq-weyne" + } + }, + "shop/tailor": { + "title": { + "C": "Tailor", + "en": "Tailor", + "ar": "خياط", + "ast": "Sastrería", + "ca": "Sastreria", + "cs": "Krejčovství", + "da": "Skrædder", + "de": "Schneider", + "el": "Ράφτης", + "en-GB": "Tailor", + "eo": "Tajlora laborejo/vendejo", + "es": "Sastrería", + "et": "Rätsep", + "fa": "خیاط", + "fi": "Räätäliliike", + "fr": "Tailleur", + "gl": "Xastraría", + "hr": "Krojač", + "hu": "Szabó", + "id": "Tukang Jahit", + "is": "Skraddari", + "it": "Sartoria", + "ja": "仕立屋", + "kn": "ದರ್ಜಿ", + "ko": "양복점", + "nl": "Kleermaker", + "no": "Skredder", + "pl": "Krawiec", + "pt-BR": "Alfaiataria", + "pt": "Alfaiate", + "ru": "Портной", + "sk": "Krajčírstvo", + "sl": "Krojač", + "sr": "Kројач", + "sv": "Skräddare", + "ta": "தையல்காரர்", + "tr": "Terzi", + "uk": "Кравець", + "vi": "Tiệm May", + "zh-CN": "裁缝店", + "zh-HK": "裁縫", + "zh-TW": "裁縫", + "mk": "Кројач", + "he": "חייט", + "ms": "Kedai Tukang Jahit" + } + }, + "shop/tattoo": { + "title": { + "C": "Tattoo Parlor", + "en": "Tattoo Parlor", + "ar": "صالون الوشم", + "ast": "Tatuaxes", + "ca": "Centre de tatuatges", + "cs": "Tetovací salón", + "da": "Tatovør", + "de": "Tätowierer", + "el": "Στούντιο Τατουάζ", + "en-GB": "Tattoo Parlor", + "eo": "Salono de tatuado", + "es": "Salón de tatuajes", + "et": "Tatoveeringu salong", + "fa": "سالن تاتو", + "fi": "Tatuointisalonki", + "fr": "Salon de tatouage", + "gl": "Salón de tatuaxes", + "hr": "Studio za tetoviranje", + "hu": "Tetováló szalon", + "id": "Jasa Pembuatan Tato", + "is": "Húðflúrstofa", + "it": "Studio per Tatuaggi", + "ja": "タトゥースタジオ", + "ko": "문신 가게", + "lt": "Tatuiruočių salonas", + "lv": "Tetovējumu veikals", + "nl": "Tattoozetter", + "no": "Tatovør", + "pl": "Studio tatuażu", + "pt-BR": "Estúdio de Tatuagem", + "pt": "Estúdio de tatuagens ", + "ro": "Artist de Tatuaje", + "ru": "Тату салон", + "sk": "Tetovací salón", + "sl": "Salon za tetovažo", + "sr": "Салон за тетоваже", + "sv": "Tatueringsstudio", + "tr": "Dövmeci", + "uk": "Тату салон", + "vi": "Tiệm Xăm", + "zh-CN": "纹身店", + "zh-HK": "紋身店", + "zh-TW": "刺青店", + "mk": "Тетоважи", + "he": "מכון קעקועים" + } + }, + "shop/tea": { + "title": { + "C": "Tea Store", + "en": "Tea Store", + "ar": "متجر شاي", + "ast": "Tienda de tes", + "ca": "Botiga de te", + "cs": "Obchod s čajem", + "da": "Tebutik", + "de": "Teegeschäft", + "el": "Τεϊοπωλείο", + "en-GB": "Tea Shop (Retail)", + "eo": "Tea vendejo", + "es": "Tienda de té", + "et": "Teepood", + "fa": "فروشگاه چای", + "fi": "Teekauppa", + "fr": "Magasin de thés", + "gl": "Tenda de té", + "hr": "Trgovina za čajeve", + "hu": "Teaüzlet", + "id": "Toko Teh", + "is": "Teverslun", + "it": "Negozio di tè", + "ja": "茶舗", + "ko": "차 가게", + "lt": "Arbatos parduotuvė", + "lv": "Tējas veikals", + "nl": "Theewinkel", + "no": "Tebutikk", + "pl": "Sklep z herbatą", + "pt-BR": "Loja de Chás", + "pt": "Loja de chás", + "ro": "Magazin de Ceaiuri", + "ru": "Чайный магазин", + "sk": "Obchod s čajom", + "sl": "Čajnica", + "sr": "Чајџиница", + "sv": "Te-butik", + "ta": "தேநீர் கடை", + "tr": "Çaycı", + "uk": "Чай", + "vi": "Tiệm Trà Khô", + "zh-CN": "茶叶商店", + "zh-HK": "茶莊", + "zh-TW": "茶行", + "mk": "Продавница за чај", + "he": "חנות תה" + } + }, + "shop/ticket": { + "title": { + "C": "Ticket Seller", + "en": "Ticket Seller", + "ar": "بائع تذاكر", + "ast": "Venta d'entraes", + "ca": "Venedor de tiquets", + "cs": "Prodejna vstupenek", + "da": "Billetsælger", + "de": "Eintrittskartenverkäufer", + "el": "Εκδοτήριο Εισιτηρίων", + "en-GB": "Ticket Seller", + "eo": "Biletejo", + "es": "Venta de boletos", + "et": "Piletikauplus", + "fa": "بلیط فروشی", + "fi": "Lipunmyyntipiste", + "fr": "Boutique de vente de billets", + "gl": "Venda de entradas", + "hr": "Prodavač ulaznica", + "hu": "Jegyárus", + "id": "Penjual Tiket", + "is": "Miðasala", + "it": "Rivenditore di Biglietti", + "ja": "チケット店", + "ko": "티켓 판매소", + "lt": "Bilietų pardavėjas", + "lv": "Biļešu kase", + "nl": "Ticketverkoop", + "no": "Billettutsalg", + "pl": "Sprzedaż biletów", + "pt-BR": "Bilheteria", + "pt": "Bilheteira", + "ro": "Vânzător de Bilete", + "ru": "Билетная касса", + "sk": "Predajňa vstupeniek", + "sl": "Prodajalna vstopnic", + "sr": "Билетарница", + "sv": "Biljettförsäljning", + "tr": "Bilet Satıcısı", + "uk": "Квиткова каса", + "vi": "Đại lý Bán Vé", + "zh-CN": "售票处", + "zh-HK": "門票售賣", + "zh-TW": "賣票亭", + "mk": "Билетарница", + "he": "עמדת מכירת כרטיסים" + } + }, + "shop/tobacco": { + "title": { + "C": "Tobacco Shop", + "en": "Tobacco Shop", + "ar": "محل بيع التبغ", + "ast": "Estancu", + "ca": "Estanc", + "cs": "Kuřácké potřeby", + "da": "Tobaksforretning", + "de": "Tabakwarengeschäft", + "el": "Κατάστημα Ειδών Καπνού", + "en-GB": "Tobacco Shop", + "eo": "Tabaka vendejo", + "es": "Tienda de tabaco", + "et": "Tubakapood", + "fa": "فروشگاه مواد افیونی تنباکو", + "fi": "Tupakkapuoti", + "fr": "Bureau de tabac", + "gl": "Estanco", + "hr": "Trgovina za duhanske proizvode", + "hu": "Dohánybolt", + "id": "Toko Tembakau", + "is": "Tóbaksverslun", + "it": "Tabaccheria", + "ja": "たばこ店", + "ko": "담배 가게", + "lt": "Tabako parduotuvė", + "lv": "Tabakas veikals", + "nl": "Tabakwinkel", + "no": "Tobakksbutikk", + "pl": "Sklep z tytoniem", + "pt-BR": "Tabacaria", + "pt": "Tabacaria", + "ro": "Tăbăcărie", + "ru": "Табачный магазин", + "sk": "Obchod s tabakom", + "sl": "Tobačna trgovina", + "sr": "Дуванџиница", + "sv": "Tobaksbutik", + "ta": "புகையிலைக் கடை", + "tr": "Tütüncü", + "uk": "Тютюн", + "vi": "Tiệm Thuốc lá", + "zh-CN": "烟草店", + "zh-HK": "煙草店", + "zh-TW": "菸店", + "mk": "Продавница за тутун", + "he": "חנות טבק" + } + }, + "shop/toys": { + "title": { + "C": "Toy Store", + "en": "Toy Store", + "af": "Speelgoedwinkel", + "ar": "متجر ألعاب", + "ast": "Xuguetería", + "bn": "খেলনার দোকান", + "bs": "Prodavnica igračaka", + "ca": "Botiga de joguines", + "cs": "Hračkářství", + "da": "Legetøjsbutik", + "de": "Spielwarengeschäft", + "el": "Κατάστημα Παιχνιδιών", + "en-GB": "Toy Shop", + "eo": "Ludila vendejo", + "es": "Juguetería", + "et": "Mänguasjapood", + "fa": "اسباب بازی فروشی", + "fi": "Lelukauppa", + "fr": "Magasin de jouets", + "gl": "Tenda de xoguetes", + "hr": "Prodavaonica igračaka", + "hu": "Játékbolt", + "id": "Toko Mainan", + "is": "Dótabúð", + "it": "Negozio di giocattoli", + "ja": "玩具店", + "ko": "완구점", + "lt": "Žaislų parduotuvė", + "lv": "Rotaļlietu veikals", + "nl": "Speelgoedwinkel", + "no": "Lekebutikk", + "pl": "Sklep z zabawkami", + "pt-BR": "Loja de Brinquedos", + "pt": "Loja de brinquedos", + "ro": "Magazin de Jucării", + "ru": "Игрушки", + "sk": "Hračkárstvo", + "sl": "Trgovina igrač", + "sr": "Продавница играчака", + "sv": "Leksaksaffär", + "ta": "விளையாட்டுப் பொருட் கடை", + "te": "బొమ్మల కొట్టు", + "tr": "Oyuncak Mağazası", + "uk": "Іграшки", + "vi": "Tiệm Đồ chơi", + "yue": "玩具舖", + "zh-CN": "玩具店", + "zh-HK": "玩具店", + "zh-TW": "玩具店", + "zh": "玩具店", + "mk": "Продавница за играчки", + "bg": "Магазин за играчки", + "he": "חנות צעצועים", + "ms": "Kedai Permainan" + } + }, + "shop/travel_agency": { + "title": { + "C": "Travel Agency", + "en": "Travel Agency", + "af": "Reisagentskap", + "ar": "وكالة سفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyages", + "gl": "Axencia de viaxes", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "lv": "Ceļojumu aģentūra", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Бюро путешествий", + "sk": "Cestovná agentúra", + "sl": "Turistična agencija", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Turizm Acentası", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "zh": "旅行社", + "mk": "Туристичка агенција", + "bg": "Туристическа агенция", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "he": "סוכנות נסיעות", + "so": "Wakaalad Socdaal" + } + }, + "shop/tyres": { + "title": { + "C": "Tire Store", + "en": "Tire Store", + "af": "Bandewinkel", + "ar": "محل بيع إطارات", + "ast": "Neumáticos", + "bs": "Prodavnica guma", + "ca": "Botiga de pneumàtics", + "cs": "Pneuservis", + "da": "Dækforhandler", + "de": "Reifenhandel", + "el": "Βουλκανιζατέρ", + "en-GB": "Tyre Shop", + "eo": "Aerbenda vendejo", + "es": "Tienda de neumáticos", + "et": "Rehvipood", + "fa": "تایر فروشی", + "fi": "Rengasliike", + "fr": "Magasin de pneus", + "gl": "Tenda de pneumáticos", + "hr": "Prodavaonica pneumaticima", + "hu": "Autógumibolt", + "id": "Toko Ban", + "is": "Dekkjabúð", + "it": "Gommista", + "ja": "タイヤ店", + "ko": "타이어 가게", + "lt": "Padangų parduotuvė", + "lv": "Riepu veikals", + "nl": "Bandenwinkel", + "no": "Dekkutsalg", + "pl": "Sklep z oponami", + "pt-BR": "Loja de pneus/borracharia", + "pt": "Loja de pneus", + "ro": "Magazin de Roți", + "ru": "Шины", + "sk": "Predajňa pneumatík", + "sl": "Prodaja pnevmatik", + "sr": "Продавница гума", + "sv": "Däckfirma", + "tr": "Araç Lastiği Mağazası", + "uk": "Колеса та шини", + "vi": "Tiệm Lốp xe", + "yue": "軚舖", + "zh-CN": "轮胎店", + "zh-HK": "輪胎店", + "zh-TW": "輪胎店", + "zh": "轮胎店", + "mk": "Продавница за автогуми", + "bg": "Магазин за автомобилни гуми", + "he": "חנות צמיגים", + "ms": "Kedai Tayar", + "en-AU": "Tyre Shop" + } + }, + "shop/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaner Store", + "en": "Vacuum Cleaner Store", + "ar": "متجر المكنسات الكهربائية", + "ast": "Tienda d'aspiradores", + "ca": "Botiga d'aspiradors", + "cs": "Obchod s vysavači", + "da": "Støvsugerforhandler", + "de": "Staubsaugergeschäft", + "el": "Κατάστημα Ηλεκτρικών Σκουπών", + "en-GB": "Vacuum Cleaner Shop", + "eo": "Polvosuĉila vendejo", + "es": "Tienda de aspiradoras", + "et": "Tolmuimeja kauplus", + "fa": "فروشگاه جاروبرقی", + "fi": "Pölynimuriliike", + "fr": "Magasin d'électroménager de nettoyage", + "gl": "Tenda de aspiradoras", + "hr": "Trgovina za usisavače", + "hu": "Porszívóbolt", + "id": "Toko Pengisap Debu", + "is": "Verslun með ryksugur", + "it": "Negozio di aspirapolveri", + "ja": "掃除機店", + "ko": "진공청소기 가게", + "lv": "Putekļusūcēju veikals", + "nl": "Stofzuigerwinkel", + "no": "Støvsugerbutikk", + "pl": "Sklep z odkurzaczami", + "pt-BR": "Loja de Aspiradores de Pó", + "pt": "Loja de aspiradores", + "ro": "Magazin de Aspiratoare", + "ru": "Магазин по продаже пылесосов", + "sk": "Obchod s vysavačmi", + "sl": "Trgovina s sesalci", + "sr": "Продавница усисивача", + "sv": "Dammsugarbutik", + "tr": "Elektrikli Süpürge Mağazası", + "uk": "Пилотяги", + "vi": "Tiệm Máy Hút bụi", + "zh-CN": "吸尘器店", + "zh-HK": "吸塵機店", + "zh-TW": "吸塵器店", + "mk": "Продавница за правосмукалки", + "he": "חנות שואבי אבק" + } + }, + "shop/variety_store": { + "title": { + "C": "Variety Store", + "en": "Variety Store", + "af": "Algemene handelaar", + "ar": "محل كل شيء ", + "ast": "Bazar", + "bs": "Prodavnica mješovite robe", + "ca": "Botiga de tot a 100", + "cs": "Laciné zboží", + "da": "Spøg og skæmtbutik ", + "de": "Sonderpostenmarkt", + "el": "Κατάστημα 1 ευρώ", + "en-GB": "Variety Store", + "eo": "Ĉio-po-unu-spesmilo vendejo", + "es": "Tienda de variedades o bazar", + "et": "Kodukauba pood", + "fa": "فروشگاه متنوع و ارزان", + "fi": "Halpahalli", + "fr": "Magasin à prix unique ou à bas prix", + "gl": "Tenda de variedades ou bazar", + "hr": "Prodavaonica mješovite robe", + "hu": "100 forintos bolt", + "id": "Toserba", + "is": "Allrahandaverslun", + "it": "Negozio a prezzo fisso", + "ja": "雑貨店(低価格)", + "ko": "잡화점", + "nl": "Euroshop", + "pl": "Sklep z różnościami", + "pt-BR": "Loja de Variedades", + "pt": "Loja dos chineses", + "ro": "Magazin de Varietăți", + "ru": "Товары по одной цене", + "sk": "Obchod so zmiešaným tovarom", + "sl": "Trgovina z mešanim blagom", + "sr": "Продавница мешовите робе", + "sv": "Fyndbutik", + "tr": "Herşey 1 TL Mağazası", + "uk": "Універсам", + "vi": "Tiệm Tạp hóa", + "yue": "雜貨舖", + "zh-CN": "杂货店", + "zh-HK": "十蚊店", + "zh-TW": "雜貨店", + "zh": "杂货店", + "mk": "Продавница за разновидна роба", + "bg": "Смесен магазин", + "he": "חנות מגוון מוצרים" + } + }, + "shop/video": { + "title": { + "C": "Video Store", + "en": "Video Store", + "af": "Videowinkel", + "ar": "محل بيع وتأجير الأفلام", + "ast": "Tienda de videos", + "bs": "Video klub", + "ca": "Botiga de vídeos", + "cs": "Video obchod", + "da": "Videobutik", + "de": "Videothek", + "el": "Βιντεοκλάμπ", + "en-GB": "Video/DVD Shop", + "eo": "Filma vendejo/pruntejo", + "es": "Videoclub", + "et": "Videopood", + "fa": "فیلم فروشی", + "fi": "Videovuokraamo", + "fr": "Vidéo-club", + "gl": "Videoclube", + "hr": "Videoteka", + "hu": "Videófilmbolt vagy -kölcsönző", + "id": "Toko Video", + "is": "Myndbandaverslun", + "it": "Videoteca", + "ja": "ビデオソフト店", + "ko": "비디오 가게", + "lt": "Vaizdo prekių parduotuvė", + "lv": "Video veikals", + "nl": "Videotheek", + "no": "Videoforhandler", + "pl": "Sklep/wypożyczalnia z filmami wideo/dvd", + "pt-BR": "Loja/Locadora de Vídeos", + "pt": "Videoclube", + "ro": "Magazin Video", + "ru": "Видеомагазин", + "sk": "Videopožičovňa", + "sl": "Videoteka", + "sr": "Видео-клуб", + "sv": "Videobutik", + "tr": "Film - Video Mağazası", + "uk": "Відео", + "vi": "Tiệm Phim", + "yue": "影視店", + "zh-CN": "影像店", + "zh-HK": "影視店", + "zh-TW": "錄影帶店", + "zh": "影像店", + "mk": "Видеотека", + "bg": "Видеотека", + "he": "חנות סרטים" + } + }, + "shop/video_games": { + "title": { + "C": "Video Game Store", + "en": "Video Game Store", + "ar": "متجر العاب الفيديو", + "ast": "Tienda de videuxuegos", + "ca": "Botiga de videojocs", + "cs": "Obchod s videohrami", + "da": "Videospilbutik", + "de": "Videospielgeschäft", + "el": "Μαγαζί Βιντεοπαιχνιδιών", + "en-GB": "Video Games Shop", + "eo": "Videoluda vendejo", + "es": "Tienda de videojuegos", + "et": "Konsoolimängude pood", + "fa": "فروشگاه بازی ویدئویی", + "fi": "Videopeliliike", + "fr": "Magasin de location et vente de jeux vidéo", + "gl": "Tenda de videoxogos", + "hr": "Prodavaonica video igara", + "hu": "Videojátékbolt", + "id": "Toko Permainan Video", + "is": "Tölvuleikjaverslun", + "it": "Negozio di videogiochi", + "ja": "テレビゲーム販売店", + "ko": "비디오 게임 가게", + "lt": "Video Žaidimų parduotuvė", + "lv": "Videospēļu veikals", + "nl": "Computerspelwinkel", + "no": "Dataspillbutikk", + "pl": "Sklep z grami wideo", + "pt-BR": "Loja de Vídeogames", + "pt": "Loja de videojogos", + "ro": "Magazin de Jocuri de Calculator", + "ru": "Магазин видеоигр", + "sk": "Obchod s videohrami", + "sl": "Trgovina z video igrami", + "sr": "Продавница видео-игара", + "sv": "TV-spel", + "tr": "Bilgisayar Oyun Mağazası", + "uk": "Комп’ютерні ігри", + "vi": "Tiệm Trò chơi Điện tử", + "zh-CN": "电子游戏店", + "zh-HK": "電子遊戲店", + "zh-TW": "電子遊戲店", + "mk": "Продавница за видеоигри", + "he": "חנות למשחקי מחשב" + } + }, + "shop/water_sports": { + "title": { + "C": "Watersport/Swim Shop", + "en": "Watersport/Swim Shop", + "ar": "متجر رياضة مائية/سباحة", + "ast": "Tienda de natación/deportes acuáticos", + "ca": "Botiga d'esports aquàtics", + "cs": "Plavecké potřeby", + "da": "Svømmesport/Svømmeudstyrsbutik", + "de": "Wassersportgeschäft", + "el": "Κατάστημα Ειδών Θαλάσσιων Σπορ / Κολύμβησης", + "en-GB": "Watersport/Swim Shop", + "eo": "Akvosport-aparata vendejo", + "es": "Tienda de deportes acuáticos / natación", + "et": "Veesporditarvete kauplus", + "fa": "فروشگاه لوازم ورزش‌های آبی / شنا ", + "fi": "Vesiurheiluliike", + "fr": "Vente d'équipements et d'articles pour sports nautiques", + "gl": "Tenda de deportes acuáticos / natación", + "hr": "Trgovina za vodene sportove", + "hu": "Vízisport-bolt", + "id": "Toko Renang/Olahraga Air", + "is": "Verslun með sund/vatnaíþróttavörur", + "it": "Negozio per sport acquatici", + "ja": "ウォータースポーツ用品店", + "ko": "수상 스포츠/수영 가게", + "nl": "Watersport-/Zwemwinkel", + "pl": "Sklep ze sprzętem do sportów wodnych", + "pt-BR": "Loja de Esportes Aquáticos", + "pt": "Loja de desportos aquáticos", + "ru": "Водный спорт/ Спорттовары", + "si": "ජල ක්‍රීඩා/ පිහිනුම් තටාකය", + "sk": "Ochod s plaveckým vybavením", + "sr": "Продавница пливачке опреме", + "sv": "Vattensport/simning ", + "tr": "Su Sporları Mağazası", + "uk": "Водний спорт/Спорттовари", + "vi": "Tiệm Dụng cụ Bơi lội", + "zh-CN": "水上运动/泳具店", + "zh-HK": "水上活動/游泳用品店", + "zh-TW": "水上活動/泳具店", + "mk": "Опрема за капење/водени спортови", + "he": "חנות שחייה" + } + }, + "shop/weapons": { + "title": { + "C": "Weapon Shop", + "en": "Weapon Shop", + "ar": "متجر أسلحة", + "ast": "Armería", + "ca": "Armeria", + "cs": "Zbraně a střelivo", + "da": "Våbenbutik", + "de": "Waffengeschäft", + "el": "Κατάστημα Οπλισμού", + "en-GB": "Weapon Shop", + "eo": "Armila vendejo", + "es": "Tienda de armas", + "et": "Relvapood", + "fa": "فروشگاه سلاح", + "fi": "Aseliike", + "fr": "Armurerie", + "gl": "Armaría", + "hr": "Trgovina za oružje", + "hu": "Fegyverbolt", + "id": "Toko Senjata", + "is": "Vopnaverslun", + "it": "Armeria", + "ja": "武器屋", + "ko": "무기 가게", + "lt": "Ginklų parduotuvė", + "lv": "Ieroču Veikals", + "nl": "Wapenwinkel", + "no": "Våpenbutikk", + "pl": "Sklep z bronią", + "pt-BR": "Loja de Armas", + "pt": "Loja de armas", + "ro": "Magazin de Arme", + "ru": "Оружейный магазин", + "sk": "Ochod so zbraňami", + "sl": "Trgovina z orožjem", + "sr": "Оружарница", + "sv": "Vapenaffär", + "ta": "ஆயுதவிற்பனைக் கடை", + "tr": "Silah Mağazası", + "uk": "Зброя", + "vi": "Tiệm Súng", + "zh-CN": "武器店", + "zh-HK": "武器店", + "zh-TW": "武器店", + "mk": "Продавница за оружје", + "he": "חנות נשק קר" + } + }, + "shop/window_blind": { + "title": { + "C": "Window Blind Store", + "en": "Window Blind Store", + "ar": "متجر ستائر نوافذ", + "ast": "Venta de persianes", + "ca": "Botiga de persianes", + "cs": "Obchod s roletami", + "da": "Persienneforhandler", + "de": "Fensterladengeschäft", + "el": "Κατάστημα σκιάστρων παραθύρου", + "en-GB": "Window Blind Shop", + "eo": "Fenestr-kovrila vendejo", + "es": "Tienda de persianas", + "et": "Aknakatete kauplus", + "fa": "فروشگاه پرده و کرکره", + "fi": "Kaihdinmyymälä", + "fr": "Magasin de vente de stores", + "gl": "Tenda de persianas", + "hu": "Redőnybolt", + "id": "Toko Kerai", + "is": "Verslun með rimlagluggatjöld", + "it": "Negozio di tapparelle e serrande", + "ja": "ブラインドカーテン専門店", + "ko": "창문 블라인드 가게", + "lv": "Logu žalūziju veikals", + "nl": "Jaloeziewinkel", + "no": "Persiennebutikk", + "pl": "Sklep z żaluzjami/roletami", + "pt-BR": "Loja de Persianas", + "pt": "Loja de estores", + "ru": "Магазин жалюзей", + "sk": "Obchod so žalúziami", + "sl": "Trgovina z okenskimi senčili", + "sv": "Persienner", + "tr": "Jaluzi Mağazası", + "uk": "Жалюзі, ролети", + "vi": "Tiệm Mành", + "zh-CN": "百叶窗店", + "zh-HK": "百葉簾店", + "zh-TW": "窗廉店", + "mk": "Продавница за завеси и ролетни", + "he": "חנות וילונות" + } + }, + "shop/wine": { + "title": { + "C": "Wine Shop", + "en": "Wine Shop", + "ar": "متجر نبيذ", + "ast": "Bodega", + "ca": "Botiga de vins", + "cs": "Vinotéka", + "da": "Vinforretning", + "de": "Weinhandel", + "el": "Κάβα Κρασιών", + "en-GB": "Wine Shop", + "eo": "Vina vendejo", + "es": "Tienda de vinos", + "et": "Veinipood", + "fa": "فروشگاه شراب", + "fi": "Viinikauppa", + "fr": "Caviste", + "gl": "Tenda de viños", + "hr": "Prodavaonica vina", + "hu": "Borszaküzlet", + "id": "Toko Anggur", + "is": "Vínbúð", + "it": "Enoteca", + "ja": "ワイン店", + "ko": "와인 가게", + "lt": "Vyno parduotuvė", + "lv": "Vīna veikals", + "nl": "Wijnhandel", + "no": "Vinbutikk", + "pl": "Sklep z winami", + "pt-BR": "Loja de Vinhos", + "pt": "Loja de vinhos", + "ro": "Magazin de Vinuri", + "ru": "Винный магазин", + "sk": "Vináreň", + "sl": "Vinoteka", + "sr": "Винарница", + "sv": "Vinaffär", + "tr": "Şarap Mağazası", + "uk": "Вино", + "vi": "Tiệm Rượu vang", + "yue": "酒舖", + "zh-CN": "酒品商店", + "zh-HK": "酒品店", + "zh-TW": "販酒店", + "mk": "Винотека", + "he": "חנות יינות" + } + }, + "shop/vacant": { + "title": { + "C": "Vacant Shop", + "en": "Vacant Shop", + "af": "Leë winkel", + "ar": "محل شاغر", + "ast": "Tienda balera", + "bs": "Prodavnica za iznajmljivanje", + "ca": "Botiga per ocupar", + "cs": "Neobsazený obchod", + "da": "Ledig butik (ingen salg pt)", + "de": "Leerstehendes Geschäft", + "el": "Κενό Κατάστημα", + "en-GB": "Vacant Shop", + "eo": "Forlasita vendejo", + "es": "Local disponible", + "et": "Vaba kaubanduspind", + "fa": "فروشگاه خالی", + "fi": "Tyhjä liikehuoneisto", + "fr": "Commerce désaffecté", + "gl": "Local baleiro", + "hr": "Prazan dućanski prostor", + "hu": "Kiadó üzlethelyiség", + "is": "Tóm verslun", + "it": "Negozio vuoto", + "ja": "空き店舗, シャッター店舗", + "ko": "빈 가게", + "lt": "Tuščia parduotuvė", + "nl": "Leegstaande winkel", + "pl": "Pusty lokal sklepowy", + "pt-BR": "Loja Desocupada", + "pt": "Loja desocupada", + "ro": "Magazin Vacant", + "ru": "Помещение под открытие магазина", + "sk": "Prázdny obchod", + "sl": "Nedelujoča trgovina", + "sr": "Упражњена продавница", + "sv": "Tom lokal", + "te": "ఖాళీ దుకాణం", + "tr": "Boş Dükkan", + "uk": "Здається в оренду", + "vi": "Tiệm Trống", + "yue": "吉舖", + "zh-CN": "空置铺位", + "zh-HK": "空置商舖", + "zh-TW": "閒置商店", + "zh": "空置铺位", + "mk": "Празна продавница", + "bg": "Свободна търговска площ", + "he": "חנות ריקה" + } + }, + "shop/charity": { + "title": { + "C": "Charity Store", + "en": "Charity Store", + "ar": "متجر خيري", + "ca": "Botiga de Caritat", + "cs": "Charitativní obchod", + "da": "Velgørenhedsbutik", + "de": "Sozialkaufhaus", + "en-GB": "Charity Shop", + "eo": "Almoza vendejo", + "es": "Tienda de caridad", + "et": "Heategevuslik kauplus", + "fa": "فروشگاه خیریه", + "fi": "Hyväntekeväisyyskauppa", + "fr": "Magasin d'organisme caritatif", + "gl": "Tenda solidaria", + "hu": "Adománybolt", + "is": "Góðgerðaverslun", + "it": "Mercatino dell'usato", + "ja": "チャリティーショップ", + "ko": "자선 쇼핑몰", + "nl": "Winkel van goed doel", + "pl": "Sklep charytatywny", + "pt-BR": "Loja de Caridade", + "pt": "Loja solidária", + "ro": "Magazin de Caritate", + "ru": "Благотворительный магазин", + "sv": "Second hand-butik", + "tr": "Yardım Mağazası", + "uk": "Доброчинна крамниця", + "vi": "Tiệm Từ thiện", + "zh-CN": "慈善机构店", + "zh-HK": "慈善商店", + "zh-TW": "慈善商店", + "mk": "Добротворна продавница", + "he": "חנות צדקה" + } + }, + "shop/coffee": { + "title": { + "C": "Coffee Store", + "en": "Coffee Store", + "ar": "متجر القهوة", + "ast": "Venta de café", + "ca": "Botiga de cafè", + "cs": "Obchod kávou", + "da": "Kaffebutik", + "de": "Kaffeegeschäft", + "el": "Καφεκοπτείο", + "en-GB": "Coffee Shop (Retail)", + "eo": "Kafa vendejo", + "es": "Tienda de café", + "et": "Kohvipood", + "fa": "فروشگاه قهوه", + "fi": "Kahvikauppa", + "fr": "Boutique de vente de cafés", + "gl": "Tenda de café", + "hr": "Prodavaonica za kavu", + "hu": "Kávébolt", + "is": "Kaffibúð", + "it": "Negozio di caffè", + "ja": "コーヒー豆販売店", + "ko": "커피 가게", + "lt": "Kavos parduotuvė", + "lv": "Kafijas veikals", + "nl": "Koffiewinkel", + "no": "Kaffebutikk", + "pl": "Sklep z kawą", + "pt-BR": " Loja de Cafés", + "pt": "Loja de café", + "ro": "Magazin de Cafea", + "ru": "Магазин кофе", + "sk": "Kaviareň", + "sl": "Trgovina s kavo", + "sr": "Продавница кафе", + "sv": "Kaffeaffär", + "tr": "Kahveci", + "uk": "Крамниця кави", + "vi": "Tiệm Bột Cà phê", + "zh-CN": "咖啡豆/粉店", + "zh-HK": "咖啡店", + "zh-TW": "咖啡店", + "mk": "Продавница за кафе", + "he": "חנות קפה" + } + }, + "shop/nutrition_supplements": { + "title": { + "C": "Nutrition Supplements Store", + "en": "Nutrition Supplements Store", + "ar": "متجر المكملات الغذائية", + "ast": "Tienda de suplementos nutritivos", + "ca": "Botiga de suplements nutricionals", + "cs": "Obchod s potravními doplňky", + "da": "Helsekostbutik", + "de": "Nahrungsergänzungsmittelgeschäft", + "el": "Κατάστημα με Συμπληρώματα Διατροφής", + "en-GB": "Nutrition Supplements Shop", + "eo": "Diet-suplementa vendejo", + "es": "Tienda de suplementos nutricionales", + "et": "Toidulisandite kauplus", + "fa": "فروشگاه تغذیه مکمل", + "fi": "Lisäravinnemyymälä", + "fr": "Boutique de compléments alimentaires", + "gl": "Tenda de suplementos nutricionais", + "hu": "Étrendkiegészítő-bolt", + "is": "Verslun með fæðubótarefni", + "it": "Negozio di integratori alimentari", + "ja": "栄養サプリ販売店", + "ko": "영양 보조 식품 가게", + "nl": "Voedingssupplementenwinkel", + "pl": "Sklep z suplementami diety", + "pt-BR": "Loja de Suplementos Nutricionais", + "pt": "Loja de suplementos alimentares", + "ro": "Magazin de Suplimente Nutritive", + "ru": "Магазин пищевых добавок", + "sk": "Obchod s výživovými doplnkami", + "sl": "Trgovina s prehrambenimi dodatki", + "sr": "Продавница додатака исхрани", + "sv": "Hälsokost", + "tr": "Gıda Takviye Ürünleri Mağazası", + "uk": "Магазин харчових добавок", + "vi": "Tiệm Thuốc bổ", + "zh-CN": "保健品店", + "zh-HK": "營養補充品店", + "zh-TW": "營養補充品店", + "mk": "Продавница за прехранбени додатоци", + "he": "חנות ויטמינים" + } + }, + "shop/storage_rental": { + "title": { + "C": "Storage Rental", + "en": "Storage Rental", + "ar": "تأجير أماكن التخزين", + "ast": "Alquiler d'almacenes", + "ca": "Lloguer de magatzem", + "cs": "Skladovací prostor", + "da": "Lagerhotel", + "de": "Lagerraumvermieter", + "el": "Ενοικιαζόμενος Χώρος Αποθήκευσης", + "en-GB": "Storage Rental", + "eo": "Magazena spaco por lui", + "es": "Alquiler de depósito", + "fa": "کرایه انبار", + "fi": "Varastonvuokrauspalvelu", + "fr": "Location de stockage - Ne pas utiliser", + "gl": "Alugueiro de almacéns", + "hu": "Tárolóhely bérbeadása", + "is": "Geymsluleiga", + "it": "Box a noleggio", + "ja": "レンタル倉庫", + "ko": "저장공간 대여소", + "nl": "Verworpen tag, gebruik dit niet", + "no": "Minilager", + "pl": "Przechowalnia rzeczy (długoterminowa)", + "pt-BR": "Aluguel de Armazenamento", + "pt": "Aluguer de depósitos", + "ru": "Аренда складских помещений", + "sk": "Prenájom skladových priestorov", + "sl": "Najem shrambnih prostorov", + "sr": "Изнајмљивање складишта", + "sv": "Hyrlager", + "tr": "Depo Kiralama Mağazası", + "uk": "Склади в оренду", + "vi": "Cho thuê Chỗ Để đồ", + "zh-CN": "租赁处", + "zh-HK": "存倉", + "zh-TW": "儲物空間出租", + "mk": "Изнамјување складишен простор", + "he": "שטח אחסון להשכרה" + } + }, + "shop/e-cigarette": { + "title": { + "C": "E-Cigarette Shop", + "en": "E-Cigarette Shop", + "ar": "متجر سجائر إلكترونية", + "ca": "Botiga de cigars electrònics", + "cs": "Obchod s e-cigaretami", + "da": "E-cigaretbutik", + "de": "E-Zigarettengeschäft", + "el": "Κατάστημα Ηλεκτρονικού Τσιγάρου", + "en-GB": "E-Cigarette Shop", + "eo": "Elektronik-cigareda vendejo", + "es": "Tienda de cigarrillo electrónico", + "et": "E-sigaretipood", + "fa": "فروشگاه سیگار الکترونیکی", + "fi": "Sähkösavukemyymälä", + "fr": "Magasin de cigarettes électroniques", + "gl": "Tenda de cigarros electrónicos", + "hu": "E-cigaretta bolt", + "is": "Rafrettubúð", + "it": "Negozio di sigarette elettroniche", + "ja": "電子タバコ店", + "ko": "전자 담배 가게", + "lt": "El. cigarečių parduotuvė", + "lv": "E-Cigarešu veikals", + "nl": "E-sigarettenwinkel", + "pl": "Sklep z e-papierosami", + "pt-BR": "Loja de Cigarro Eletrônico", + "pt": "Loja de cigarros eletrónicos", + "ro": "Magazin de Țigarete Electrice", + "ru": "Магазин электронных сигарет", + "sr": "Продавница електронских цигарета", + "sv": "Affär för elektroniska cigaretter", + "tr": "Elektronik Sigara Mağazası", + "uk": "Магазин Е-цигарок", + "vi": "Tiệm Thuốc lá Điện tử", + "zh-CN": "电子烟店", + "zh-HK": "電子煙店", + "zh-TW": "電子菸商店", + "mk": "Продавница за е-цигари", + "he": "חנות מוצרי עישון", + "ms": "Kedai Rokok Elektronik" + } + }, + "shop/pastry": { + "title": { + "C": "Pastry Shop", + "en": "Pastry Shop", + "ar": "متجر حلويات", + "ast": "Pastelería", + "ca": "Pastisseria", + "cs": "Cukrárna", + "da": "Konditori", + "de": "Konditorei", + "el": "Ζαχαροπλαστείο", + "en-GB": "Pastry Shop", + "eo": "Kukejo", + "es": "Pastelería", + "et": "Kondiiter", + "fa": "شیرینی فروشی", + "fi": "Leipomokonditoria", + "fr": "Pâtisserie", + "gl": "Confeitaría ou pastelaría", + "hr": "Slastičarna", + "hu": "Cukrászda", + "is": "Kökubúð", + "it": "Pasticceria", + "ja": "焼菓子(ペイストリー)店", + "ko": "과자 가게", + "lt": "Kepykla", + "nl": "Fijnbakkerij", + "no": "Bakeri", + "pl": "Cukiernia", + "pt-BR": "Confeitaria", + "pt": "Pastelaria", + "ru": "Пироги", + "sl": "Slaščičarna", + "sr": "Посластичарница", + "sv": "Konditori", + "tr": "Pastane", + "uk": "Кондитерські вироби", + "vi": "Tiệm Bánh ngọt", + "zh-CN": "糕饼店", + "zh-HK": "榚點店", + "zh-TW": "糕餅店", + "mk": "Бели печива", + "he": "בית מאפה" + } + }, + "shop/watches": { + "title": { + "C": "Watches Shop", + "en": "Watches Shop", + "ar": "متجر الساعات اليدوية", + "ast": "Reloxería", + "ca": "Òptica", + "cs": "Hodinářství", + "da": "Urbutik", + "de": "Uhrengeschäft", + "el": "Κατάστημα Ρολογιών", + "en-GB": "Watches Shop", + "eo": "Horloĝa vendejo", + "es": "Relojería", + "et": "Kellapood", + "fa": "ساعت فروشی", + "fi": "Kellokauppa", + "fr": "Magasin de montres", + "gl": "Reloxaría", + "hr": "Trgovina Satovima", + "hu": "Órabolt (karóra)", + "is": "Úraverslun", + "it": "Negozio di orologi", + "ja": "腕時計店", + "ko": "손목시계 가게", + "lt": "Laikrodžių parduotuvė", + "lv": "Pulksteņu Veikals", + "nl": "Horlogewinkel", + "no": "Urmaker", + "pl": "Sklep z zegarkami", + "pt-BR": "Relojoaria", + "pt": "Loja de relógios", + "ro": "Magazin de Ceasuri", + "ru": "Магазин часов", + "sk": "Obchod s hodinkami", + "sl": "Trgovina z urami", + "sr": "Продавница сатова", + "sv": "Klockaffär", + "tr": "Saatçi", + "uk": "Годинники", + "vi": "Tiệm Đồng hồ Đeo tay", + "zh-CN": "手表店", + "zh-HK": "手錶店", + "zh-TW": "鐘錶行", + "mk": "Продавница за часовници", + "he": "שען" + } + }, + "shop/appliance": { + "title": { + "C": "Appliance Store", + "en": "Appliance Store", + "ar": "متجر الأجهزة المنزلية", + "cs": "Prodejna spotřební elektroniky", + "da": "Hvidevareforretning", + "de": "Haushaltselektrogerätegeschäft", + "el": "Κατάστημα Συσκευών", + "en-GB": "Appliance Shop", + "eo": "Elektronikaĵega vendejo", + "es": "Tienda de electrodomésticos", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kodinkonemyymälä", + "fr": "Magasin d'électroménager", + "gl": "Tenda de electrodomésticos", + "hu": "Háztartási gép üzlet", + "is": "Raftækjaverslun", + "it": "Negozio di elettrodomestici", + "ja": "白物家電販売店(大型製品)", + "ko": "가전 제품 가게", + "nl": "Huishoudelijkeapparatuurwinkel", + "no": "Hvitevarebutikk", + "pl": "Sklep z AGD", + "pt-BR": "Loja de Eletrodomésticos", + "pt": "Loja de eletrodomésticos \"brancos\"", + "ro": "Magazin de Electrocasnice", + "ru": "Магазин бытовой техники", + "sl": "Splošna tehnična trgovina", + "sv": "Vitvaror", + "tr": "Beyaz Eşya Mağazası", + "uk": "Побутова техніка", + "vi": "Tiệm Gia dụng", + "zh-CN": "家用电器店", + "zh-HK": "電器店", + "zh-TW": "家用電器店", + "mk": "Продавница за апарати и уреди", + "he": "חנות כלים חשמלים" + } + }, + "shop/gas": { + "title": { + "C": "Bottled Gas Shop", + "en": "Bottled Gas Shop", + "ast": "Gas embotelláu", + "cs": "Obchod s lahvovým plynem", + "da": "Gasflaskebutik", + "de": "Gasflaschenverkauf", + "el": "Κατάστημα Εμφιαλωμένων Αερίων", + "en-GB": "Bottled Gas Shop", + "eo": "Gasuja vendejo", + "es": "Tienda de gas embotellado", + "et": "Balloongaasi kauplus", + "fa": "فروشگاه کپسول گاز / پیکنیکی", + "fi": "Kaasupulloliike", + "fr": "Magasin de bouteilles de gaz", + "gl": "Tenda de bombonas de gas", + "hu": "Palackozottgáz-bolt", + "is": "Verslun með flöskugas", + "it": "Bombolaio", + "ja": "ガスボンベ店", + "ko": "가스통 가게", + "lv": "Gāzes balonu veikals", + "nl": "Gasflessenwinkel", + "pl": "Sklep z butlami gazowymi", + "pt-BR": "Distribuidor de Gás", + "pt": "Loja de botijas de gás", + "ru": "Магазин газовых баллонов", + "sl": "Trgovina s plinskimi jeklenkami", + "sv": "Försäljning av gas", + "tr": "Tüpçü", + "uk": "Продаж зрідженого газу", + "vi": "Tiệm Ga", + "zh-CN": "瓶装燃气站", + "zh-HK": "瓶裝石油氣店", + "zh-TW": "瓦斯店", + "mk": "Продавница за плински боци", + "he": "חנות גז" + } + }, + "shop/perfumery": { + "title": { + "C": "Perfume Store", + "en": "Perfume Store", + "ar": "متجر العطور", + "ast": "Perfumería", + "ca": "Botiga de perfums", + "cs": "Parfumerie", + "da": "Parfumebutik", + "de": "Parfümerie", + "el": "Κατάστημα Αρωμάτων", + "en-GB": "Perfume Shop", + "eo": "Parfuma vendejo", + "es": "Perfumería", + "et": "Parfüümikauplus", + "fa": "عطر فروشی", + "fi": "Hajusteliike", + "fr": "Parfumerie", + "gl": "Perfumaría", + "hr": "Parfimerija", + "hu": "Parfüméria", + "is": "Ilmvatnsbúð", + "it": "Profumeria", + "ja": "香水店", + "ko": "향수 가게", + "lt": "Parfumerijos parduotuvė", + "nl": "Parfumwinkel", + "no": "Parfymeri", + "pl": "Perfumeria", + "pt-BR": "Perfumaria", + "pt": "Perfumaria", + "ro": "Magazin de Parfum", + "ru": "Парфюмерия", + "sk": "Parfuméria", + "sl": "Parfumerija", + "sr": "Парфемџиница", + "sv": "Parfymbutik", + "tr": "Parfümeri", + "uk": "Парфуми", + "vi": "Tiệm Nước hoa", + "zh-CN": "香水店", + "zh-HK": "香水店", + "zh-TW": "香水店", + "mk": "Парфимерија", + "he": "חנות בשמים" + } + }, + "shop/agrarian": { + "title": { + "C": "Farm Supply Shop", + "en": "Farm Supply Shop", + "ar": "متجر مستلزمات مزارع", + "cs": "Farmářská prodejna", + "da": "Grovvareforretning", + "de": "Agrarmarkt", + "el": "Προμήθειες Φάρμας", + "eo": "Terkultur-investaĵa vendejo", + "es": "Tienda de suministros agrícolas", + "et": "Põllumajandustarvete kauplus", + "fa": "فروشگاه لوازم کشاورزی", + "fi": "Maataloustarvikeliike", + "fr": "Magasin d'agriculture", + "gl": "Tenda de subministracións agrícolas", + "hu": "Gazdabolt", + "is": "Landbúnaðarvöruverslun", + "it": "Negozio di attrezzatura agricola", + "ja": "農業用品店", + "ko": "농업 용품 가게", + "nl": "Landbouwbenodigdhedenwinkel", + "pl": "Sklep rolniczy", + "pt-BR": "Loja de Suprimentos Agrícolas", + "pt": "Loja de produtos agrícolas", + "ru": "Сельскохозяйственный магазин", + "sr": "Продавница пољопривредне опреме", + "sv": "Jordbruksaffär", + "uk": "Сільгосптовари", + "vi": "Tiệm Nông nghiệp", + "zh-CN": "农场供应店", + "zh-TW": "農業資材行", + "mk": "Земјоделска продавица", + "he": "חנות אביזרי חקלאות" + } + }, + "shop/health_food": { + "title": { + "C": "Health Food Shop", + "en": "Health Food Shop", + "ar": "متجر أغذية صحية", + "cs": "Obchod zdravé výživy", + "de": "Reformhaus", + "el": "Είδη Υγιεινής Διατροφής", + "en-GB": "Health Food Shop", + "eo": "Sanig-manĝaĵa vendejo", + "es": "Tienda de comida saludable", + "et": "Tervisliku toidu kauplus", + "fa": "فروشگاه غذای سلامت‌زا", + "fi": "Terveysravinnemyymälä", + "fr": "Magasin d'alimentation de santé", + "hu": "Egészséges ételek boltja", + "is": "Verslun með heilsuvörur", + "it": "Prodotti per il benessere", + "ja": "健康食品店", + "ko": "건강식품 가게", + "nl": "Gezondheidswinkel", + "no": "Helsekostbutikk", + "pl": "Sklep ze zdrową żywnością", + "pt-BR": "Loja de Alimentos Saudáveis", + "pt": "Loja de comida saudável", + "ru": "Магазин здорового питания", + "sk": "Obchod so zdravými potravinami", + "sv": "Hälsokostbutik", + "uk": "Магазин здорового харчування", + "vi": "Tiệm Thực phẩm Tự nhiên", + "zh-CN": "保健食品店", + "zh-TW": "健康食品店", + "mk": "Продавница за здрава храна", + "he": "חנות מאכלי בריאות" + } + }, + "shop/tiles": { + "title": { + "C": "Tile Shop", + "en": "Tile Shop", + "ar": "متجر بلاط", + "ast": "Tienda d'azulexos", + "cs": "Obchod s obklady", + "da": "Fliseforhandler", + "de": "Fliesenhändler", + "el": "Κατάστημα Πλακιδίων", + "en-GB": "Tile Shop", + "eo": "Kahela vendejo", + "es": "Tienda de azulejos", + "fa": "کاشی فروشی", + "fi": "Laattamyymälä", + "fr": "Magasin de carrelage", + "gl": "Tenda de azulexos", + "hu": "Csempebolt", + "is": "Flísaverslun", + "it": "Negozio di piastrelle", + "ja": "タイル店", + "ko": "타일 가게", + "lv": "Flīžu veikals", + "nl": "Tegelwinkel", + "no": "Flisebutikk", + "pl": "Sklep z płytkami ceramicznymi", + "pt-BR": "Loja de Azulejos", + "pt": "Loja de azulejos", + "ru": "Магазин плитки", + "sr": "Продавница керамике", + "sv": "Kakelbutik", + "uk": "Кахель", + "vi": "Tiệm Ngói", + "zh-CN": "瓷砖商店", + "zh-TW": "磁磚商店", + "mk": "Продавница за плочки", + "he": "חנות מרצפות" + } + }, + "shop/trade": { + "title": { + "C": "Trade Shop", + "en": "Trade Shop", + "cs": "stavebniny", + "da": "Brancheforhandler", + "de": "Baustoffhandel", + "el": "Εμπορικό Κατάστημα", + "en-GB": "Trade Shop", + "eo": "Pogranda vendejo (konstruaĵ‑materialoj)", + "es": "Tienda comercial / Corralón", + "fr": "Grossiste", + "gl": "Distribuidor", + "hu": "Kereskedelmi üzlet", + "is": "Iðnaðarvörusala", + "it": "Materiali da edilizia", + "ja": "建築資材店", + "ko": "무역 가게", + "nl": "Bouwmaterialenhandel", + "pl": "Skład branżowy", + "pt-BR": "Distribuidor", + "pt": "Loja de materiais de construção", + "ru": "Оптовая база", + "sr": "Трговачка продавница", + "sv": "Proffshandel", + "uk": "Оптово-роздрібний магазин", + "vi": "Tiệm Công nghiệp", + "zh-CN": "材料商店", + "zh-TW": "材料行", + "mk": "Занаетчиски набавки", + "he": "חנות קמעונאית" + } + }, + "shop/wholesale": { + "title": { + "C": "Wholesale Store", + "en": "Wholesale Store", + "ar": "متجر بيع بالجملة", + "cs": "Velkoobchodní sklad", + "de": "Großhandel", + "el": "Κατάστημα Χονδρικής", + "en-GB": "Wholesale Shop / Cash & Carry ", + "eo": "Pogranda vendejo", + "es": "Almacén al por mayor", + "et": "Hulgikauplus", + "fi": "Tukkukauppa", + "fr": "Commerce de gros", + "gl": "Almacén ó por maior", + "hu": "Nagykereskedés", + "is": "Heildverslun", + "it": "Grossista", + "ja": "卸売店", + "ko": "도매상", + "nl": "Groothandel", + "pl": "Hurtownia", + "pt-BR": "Atacadista", + "pt": "Loja grossista", + "ru": "Оптовый магазин", + "sk": "Veľkoobchod", + "sr": "Велепродајна продавница", + "sv": "Grosistaffär", + "ta": "மொத்தவிலைக் கடை", + "uk": "Гуртова торгівля", + "vi": "Tiệm Bán buôn", + "zh-CN": "批发市场", + "zh-TW": "批發商", + "mk": "Големопродажен центар", + "he": "חנות סיטונאות" + } + }, + "shop/motorcycle_repair": { + "title": { + "C": "Motorcycle Repair Shop", + "en": "Motorcycle Repair Shop", + "ar": "ورشة تصليح الدراجات النارية", + "cs": "Opravna motocyklů", + "da": "Motorcykelværksted", + "de": "Motorradwerkstatt", + "el": "Συνεργείο Μοτοσυκλετών", + "en-GB": "Motorcycle Repair Shop", + "eo": "Motorcikl-riparejo", + "es": "Taller de reparación de motocicletas", + "et": "Mootorratta remondikoda", + "fa": "تعمیرگاه موتورسیکلت", + "fi": "Moottoripyöräkorjaamo", + "fr": "Réparateur de motos", + "gl": "Taller de arranxo de motocicletas", + "hr": "Ormarići za bicikle", + "hu": "Motorkerékpár alkatrész bolt", + "is": "Mótorhjólaviðgerðaverslun", + "it": "Officina riparazione motocicli", + "ja": "バイク修理店", + "ko": "오토바이 수리점", + "lt": "Motociklų taisykla", + "lv": "Motociklu remonta darbnīca", + "nl": "Motorreparatie", + "no": "Motorsykkelverksted", + "pl": "Warsztat motocyklowy", + "pt-BR": "Oficina de Motocicletas", + "pt": "Oficina de motas", + "ru": "Мотомастерская", + "sr": "Поправка мотоцикала", + "sv": "Motorcykelverkstad", + "uk": "Ремонт мотоциклів", + "vi": "Tiệm Sửa Xe máy", + "zh-CN": "摩托车修理店", + "zh-TW": "摩托車維修店", + "mk": "Поправка на мотоцикли", + "he": "מוסך אופנועים" + } + }, + "shop/pet_grooming": { + "title": { + "C": "Pet Grooming Store", + "en": "Pet Grooming Store", + "cs": "zvířecí salon", + "de": "Tierpflegedienst, Tierfriseur (meist Hundesalon)", + "el": "Κατάστημα Καλλωπισμού Κατοικίδιων", + "en-GB": "Pet Grooming Shop", + "eo": "Dombesta beligejo", + "es": "Tienda de aseo para mascotas", + "fa": "فروشگاه لوازم نظافت حیوان خانگی", + "fi": "Lemmikkihoitola", + "fr": "Salon de toilettage", + "hu": "Állatkozmetikai bolt", + "is": "Dýrasnyrtiverslun", + "it": "Toelettatura per animali", + "ja": "ペット美容室", + "ko": "애완동물 용품 가게", + "nl": "Trimsalon", + "pl": "Salon fryzjerski dla zwierząt", + "pt-BR": "Loja de cuidados com animais de estimação", + "pt": "Loja de banhos e tosquias", + "ru": "Парикмахерская для животных", + "sr": "Сређивање кућних љубимаца", + "sv": "Pälsvård för husdjur", + "uk": "Салон догляду за тваринами", + "vi": "Dịch vụ Tỉa lông", + "zh-TW": "寵物美容店", + "mk": "Продавница за нега на миленици", + "he": "חנות לטיפוח חיות מחמד" + } + }, + "shop/catalogue": { + "title": { + "C": "Catalog Shop", + "en": "Catalog Shop", + "cs": "katalogový obchod", + "de": "Versandhandel", + "en-GB": "Catalogue Shop", + "eo": "Ricevejo de aĉetaĵoj (per katalogo)", + "es": "Tienda de catálogo", + "fa": "فروشگاه کاتالوگ", + "fr": "Magasin à catalogue", + "ja": "カタログショップ", + "ko": "카탈로그 가게", + "nl": "Cataloguswinkel", + "pl": "Sklep Argos", + "pt-BR": "Catálogo de loja", + "pt": "Loja de catálogo", + "sv": "Katalogaffär", + "uk": "Товари поштою", + "zh-TW": "目錄店", + "mk": "Каталошка продавница", + "he": "חנות קטלוגים" + } + }, + "shop/country_store": { + "title": { + "C": "Country Store", + "en": "Country Store", + "cs": "venkovský obchod", + "de": "Ländlicher Laden", + "el": "Είδη Εξοχής", + "eo": "Ĝenerala vendejo", + "es": "Tienda de campo", + "fr": "Magasin de campagne", + "ja": "よろずや", + "nl": "Outdoorzaak", + "no": "Landhandel", + "pl": "Sklep wiejski", + "pt-BR": "Loja Country", + "pt": "Loja para proprietários rurais", + "sv": "Lanthandel", + "uk": "Сільмаг", + "vi": "Tiệm Nông thôn", + "zh-TW": "鄉村商店", + "mk": "Селска продавница", + "he": "חנות למטיילים" + } + }, + "shop/hairdresser_supply": { + "title": { + "C": "Hairdresser Supply Store", + "en": "Hairdresser Supply Store", + "ar": "متجر مستلزمات حلاقين", + "cs": "Kadeřnické potřeby", + "de": "Friseurbedarf", + "el": "Εξοπλισμός Κομμωτηρίου", + "eo": "Frizist-ilara vendejo", + "es": "Tienda de suministros para peluquería", + "fa": "فروشگاه لوازم سلمانی", + "fi": "Hiustarvikemyymälä", + "fr": "Magasin de matériel de coiffure", + "hu": "Fodrászcikk bolt", + "it": "Negozio di prodotti per parrucchiere", + "ja": "理容用品店", + "ko": "미용실 용품 가게", + "nl": "Haarbenodigdhedenwinkel", + "pl": "Sklep z artykułami fryzjerskimi", + "pt-BR": "Loja de suprimentos de cabeleireiro", + "pt": "Loja de acessórios de cabeleireiro", + "sv": "Affär för hårprodukter", + "uk": "Перукарські товари", + "vi": "Tiệm Mỹ phẩm Tóc", + "zh-TW": "剪髮器材店", + "mk": "Фризерски набавки", + "he": "חנות ציוד לספרים" + } + }, + "shop/party": { + "title": { + "C": "Party Supply Store", + "en": "Party Supply Store", + "ar": "متجر مستلزمات حفلات", + "cs": "párty zboží", + "de": "Partyzubehör", + "el": "Κατάστημα Προμηθειών για Πάρτυ", + "eo": "Vendejo de okazaĵaj provizoj", + "es": "Tienda de artículos para fiestas", + "fa": "فروشگاه لوازم مهمانی", + "fr": "Magasin de matériel de fête", + "gl": "Tenda de artigos para festas", + "hu": "Partykellékbolt", + "it": "Negozio di articoli per le feste", + "ja": "パーティ用品店", + "ko": "파티 용품 가게", + "nl": "Feestwinkel", + "pl": "Sklep z artykułami imprezowymi", + "pt-BR": "Loja de materiais para festas", + "pt": "Loja de acessórios para festas", + "sv": "Partybutik", + "uk": "Товари до свят", + "vi": "Tiệm Phụ kiện Trang trí Tiệc", + "zh-TW": "宴會器材店", + "mk": "Набавки за забавни настани", + "he": "חנות ציוד למסיבות" + } + }, + "shop/sewing": { + "title": { + "C": "Sewing Supply Shop", + "en": "Sewing Supply Shop", + "ar": "متجر مستلزمات خياطة", + "cs": "Šicí potřeby, galanterie", + "da": "Syforretning", + "de": "Kurzwarenladen", + "el": "Κατάστημα Προμηθειών για Ράψιμο", + "eo": "Kudrilar-vendejo", + "es": "Tienda de suministros de costura", + "fa": "فروشگاه لوازم خیاطی / خرازی", + "fi": "Ompelutarvikeliike", + "fr": "Magasin de couture", + "gl": "Tenda de artigos de costura", + "hu": "Varrásfelszerelés bolt", + "is": "Saumavöruverslun", + "it": "Merceria", + "ja": "手芸用品店", + "ko": "바느질 용품 가게", + "nl": "Naaiwinkel", + "no": "Sybutikk", + "pl": "Pasmanteria", + "pt-BR": "Loja de suprimentos de costura", + "pt": "Retrosaria", + "ru": "Швейные принадлежности", + "sk": "Galantéria", + "sr": "Продавница кројачке робе", + "sv": "Sybutik", + "uk": "Приладдя для шиття", + "vi": "Tiệm Đồ Kim chỉ", + "zh-TW": "縫紉用品店", + "mk": "Шивачки набавки", + "he": "חנות ציוד תפירה" + } + }, + "shop/caravan": { + "title": { + "C": "RV Dealership", + "en": "RV Dealership", + "cs": "prodejna karavanů", + "de": "Wohnwagengeschäft", + "eo": "Vendejo de kampad-veturiloj", + "es": "Concesionario de autocaravanas", + "et": "Haagissuvilate/autoelamute müügiplats", + "fi": "Asuntovaunukauppa", + "fr": "Concessionnaire de véhicules de tourisme", + "hu": "Lakókocsi kereskedés", + "it": "Concessionario caravan", + "ja": "キャラバンカー販売店", + "ko": "RV 대리점", + "nl": "Caravan-dealer", + "pl": "Sklep z kamperami i przyczepami", + "pt-BR": "Concessionária de Motorhomes", + "pt": "Vendedor de caravanas", + "sv": "Husvagnsförsäljare", + "uk": "Салон автотрейлерів", + "vi": "Tiệm Nhà xe Lưu động", + "zh-TW": "拖車經銷商", + "mk": "Продавач на камп-возила", + "he": "סוכנות קרוואנים" + } + }, + "shop/fireplace": { + "title": { + "C": "Fireplace Store", + "en": "Fireplace Store", + "cs": "prodej krbů a kamen", + "de": "Kachelofenladen", + "el": "Είδη Τζακιού", + "eo": "Kamen-vendejo", + "es": "Tienda de chimenea", + "et": "Küttekollete pood", + "fa": "فروشگاه شومینه ، بخاری", + "fi": "Takkamyymälä", + "fr": "Magasin de cheminées", + "it": "Negozio di caminetti", + "ja": "暖房具店", + "ko": "벽난로 가게", + "nl": "Haardwinkel", + "no": "Peisbutikk", + "pl": "Sklep z kominkami", + "pt-BR": "Loja de Lareiras", + "pt": "Loja de lareiras", + "sv": "Kaminbutik", + "uk": "Печі, каміни", + "vi": "Tiệm Lò sưởi", + "zh-TW": "壁爐商店", + "mk": "Продавница за камини", + "he": "חנות חימום" + } + }, + "shop/fishing": { + "title": { + "C": "Fishing Shop", + "en": "Fishing Shop", + "cs": "Rybářské potřeby", + "de": "Angelgeschäft", + "el": "Είδη Αλιείας", + "eo": "Fiŝkaptil-vendejo", + "es": "Tienda de pesca", + "et": "Kalastustarvete pood", + "fa": "فروشگاه لوازم ماهی گیری", + "fi": "Kalastuskauppa", + "fr": "Magasin de pêche", + "gl": "Tenda de pesca", + "hr": "Prodavaonica ribolovne opreme", + "hu": "Horgászbolt", + "it": "Negozio di pesca", + "ja": "釣具店", + "ko": "낚시 가게", + "nl": "Hengelsportwinkel", + "no": "Fiskebutikk", + "pl": "Sklep wędkarski", + "pt-BR": "Loja de pesca", + "pt": "Loja de artigos de pesca", + "ru": "Рыболовный магазин", + "sk": "Rybárske potreby", + "sr": "Продавница рибе", + "sv": "Fiskeaffär", + "uk": "Рибальський магазин", + "vi": "Tiệm Cần câu", + "zh-CN": "钓鱼店", + "zh-TW": "釣魚用品店", + "mk": "Риболовна продавница", + "he": "חנות דיג" + } + }, + "shop/frozen_food": { + "title": { + "C": "Frozen Food Store", + "en": "Frozen Food Store", + "cs": "prodejna mražených potravin", + "de": "Geschäft für Tiefkühlprodukte", + "eo": "Frostigit-manĝaĵa vendejo", + "es": "Tienda de alimentos congelados", + "fr": "Magasin de produits surgelés", + "it": "Negozio di Cibo Surgelato", + "ja": "冷凍食品店", + "ko": "냉동식품 가게", + "pl": "Sklep z mrożonkami", + "pt-BR": "Loja de alimentos congelados", + "pt": "Loja de comida congelada", + "sk": "Obchod s mrazenými potravinami", + "sr": "Продавница смрзнуте хране", + "uk": "Заморожені продукти", + "vi": "Tiệm Thực phẩm Đông lạnh", + "zh-CN": "冷冻食品店", + "zh-TW": "冷凍食品商店", + "mk": "Продавница за замрзната храна", + "he": "חנות מזון קפוא" + } + }, + "shop/fuel": { + "title": { + "C": "Fuel Shop", + "en": "Fuel Shop", + "cs": "Obchod s palivem", + "de": "Tankstelle", + "el": "Κατάστημα Καυσίμων", + "eo": "Brulaĵ-vendejo", + "es": "Tienda de combustible", + "et": "Küttepood", + "fa": "فروشگاه سوخت", + "fi": "Polttoainemyymälä", + "fr": "Revendeur de carburant", + "gl": "Tenda de combustíbel", + "hu": "Üzemanyagot árusító bolt", + "it": "Negozio di carburanti", + "ja": "燃料店", + "ko": "연료 가게", + "nl": "Tankstation", + "no": "Drivstoffbuttikk", + "pl": "Sklep z paliwami", + "pt-BR": "Loja de Combustível", + "pt": "Loja de combustíveis", + "sv": "Bränsleaffär", + "uk": "Паливо", + "vi": "Tiệm Nhiên liệu", + "zh-CN": "燃料店", + "zh-TW": "燃料店", + "mk": "Продавница за гориво", + "he": "חנות נוחות" + } + }, + "shop/hunting": { + "title": { + "C": "Hunting Shop", + "en": "Hunting Shop", + "cs": "Lovecké potřeby", + "da": "Jagtbutik", + "de": "Jägereigeschäft", + "el": "Είδη Κυνηγιού", + "eo": "Ĉasil-vendejo", + "es": "Tienda de caza", + "et": "Jahipood", + "fa": "فروشگاه لوازم شکار", + "fi": "Metsästyskauppa", + "fr": "Magasin de chasse", + "gl": "Tenda de caza", + "hu": "Vadászati bolt", + "is": "Veiðibúð", + "it": "Negozio di caccia", + "ja": "狩猟用品店", + "ko": "사냥 용품 가게", + "nl": "Jachtwinkel", + "no": "Jaktbutikk", + "pl": "Sklep myśliwski", + "pt-BR": "Loja de Caça", + "pt": "Loja de artigos de caça", + "ru": "Охотничий магазин", + "sk": "Lovecké potreby", + "sr": "Продавница ловачке опреме", + "sv": "Jaktbutik", + "uk": "Мисливський магазин", + "vi": "Tiệm Súng Săn", + "zh-CN": "狩猎店", + "zh-TW": "打獵用品店", + "mk": "Ловечка продавница ", + "he": "חנות ציד" + } + }, + "shop/water": { + "title": { + "C": "Drinking Water Shop", + "en": "Drinking Water Shop", + "ar": "متجر مياه شرب", + "cs": "Obchod s pitnou vodou", + "de": "Trinkwasserladen", + "el": "Κατάστημα Πόσης Νερού", + "eo": "Trinkakv-vendejo", + "es": "Tienda de agua potable", + "et": "Joogivee pood", + "fa": "فروشگاه آب", + "fi": "Juomavesikauppa", + "fr": "Magasin d'eau potable", + "gl": "Tenda de auga potábel", + "hu": "Ivóvíz bolt", + "it": "Negozio di acqua da bere", + "ja": "飲料水店", + "ko": "식수 가게", + "nl": "Drinkwaterwinkel", + "pl": "Sklep z wodą pitną", + "pt-BR": "Loja de Água Potável", + "pt": "Loja de água potável", + "sk": "Obchod s pinou vodou", + "sr": "Продавница пијаће воде", + "sv": "Affär för dricksvatten", + "uk": "Магазин питної води", + "vi": "Tiệm Nước uống", + "zh-CN": "饮水店", + "zh-TW": "飲用水商店", + "mk": "Продавница за пивка вода", + "he": "חנות מי שתייה" + } + }, + "shop/boat": { + "title": { + "C": "Boat Store", + "en": "Boat Store", + "cs": "prodejna lodí", + "da": "Bådforhandler", + "de": "Bootsgeschäft", + "eo": "Boat‑vendejo", + "es": "Tienda de barcos", + "fa": "فروشگاه قایق", + "fi": "Venekauppa", + "fr": "Magasin de bateaux", + "gl": "Tenda de embarcacións", + "hu": "Hajósbolt", + "it": "Negozio di barche", + "ja": "ボート店", + "ko": "보트 가게", + "pl": "Sklep żeglarski", + "pt-BR": "Loja de Barcos", + "pt": "Loja de barcos", + "sr": "Продавница чамаца", + "sv": "Båtaffär", + "uk": "Магазин човнів", + "vi": "Tiệm Tàu thuyền", + "zh-CN": "船店", + "zh-TW": "船店", + "mk": "Продавница за чамци", + "he": "חנות סירות" + } + }, + "shop/brewing_supplies": { + "title": { + "C": "Brewing Supply Store", + "en": "Brewing Supply Store", + "cs": "pivovarnický obchod", + "da": "Bryggeudstyrsbutik", + "de": "Brauzubehörgeschäft", + "eo": "Bier-/vin-farendaĵa vendejo", + "es": "Tienda de suministros de cerveza", + "fa": "فروشگاه فرآورده‌های آبجو", + "fr": "Magasin de matériel de brasserie", + "it": "Negozio di Forniture per Birrerie", + "ja": "醸造用品店", + "ko": "양조 용품 가게", + "pl": "Sklep dla piwowarów domowych", + "pt-BR": "Loja de suprimentos para cerveja", + "pt": "Loja de material de fermentação", + "uk": "Пивоварне та виноробне обладнання", + "zh-TW": "釀酒用品店", + "mk": "Пивоварска продавница", + "he": "חנות ציוד למבשלות" + } + }, + "shop/camera": { + "title": { + "C": "Camera Equipment Store", + "en": "Camera Equipment Store", + "cs": "prodejna kamer", + "da": "Fotoforhandler", + "de": "Fotofachgeschäft", + "eo": "Vendejo kun fotiloj kaj lensoj", + "es": "Tienda de equipos de fotografía", + "fi": "Kameraliike", + "fr": "Photographe", + "ja": "カメラ店", + "ko": "카메라 가게", + "pl": "Sklep z kamerami i aparatami", + "pt-BR": "Loja de equipamentos para câmeras", + "pt": "Loja de equipamento fotográfico", + "uk": "Фотообладнання", + "zh-TW": "相機配件店", + "mk": "Продавница за фотографска опрема", + "he": "חנות ציוד צילום" + } + }, + "shop/cannabis": { + "title": { + "C": "Cannabis Shop", + "en": "Cannabis Shop", + "cs": "Feťácká prodejna", + "de": "Cannabisgeschäft", + "eo": "Mariĥuana vendejo", + "es": "Tienda de cannabis", + "fa": "فروشگاه شاهدانه / ورمی کمپوست", + "fi": "Kannabiskauppa", + "fr": "Magasin de canabis", + "hu": "Marihuána bolt", + "it": "Negozio di cannabis", + "ja": "Cannabis Shop(illegal in Japan)", + "ko": "대마초 가게", + "pl": "Sklep z produktami z konopi", + "pt-BR": "Loja de canábis", + "pt": "Loja de canábis", + "sr": "Продавница канабиса", + "sv": "Cannabisaffär", + "uk": "Конопля", + "zh-CN": "大麻店", + "zh-TW": "娛樂用大麻店", + "mk": "Продавница за коноп", + "he": "חנות קנביס" + } + }, + "shop/doors": { + "title": { + "C": "Door Shop", + "en": "Door Shop", + "cs": "prodejna dveří", + "da": "Dørforhandler", + "de": "Türgeschäft", + "eo": "Vendejo de pordoj", + "es": "Tienda de puertas (aberturas)", + "fa": "فروشگاه درب", + "fi": "Oviliike", + "fr": "Magasin de portes", + "it": "Negozio di Porte", + "ja": "ドア販売店", + "ko": "문 가게", + "no": "Dør Butikk", + "pl": "Sklep z drzwiami", + "pt-BR": "Loja de portas", + "pt": "Loja de portas", + "sr": "Продавница врата", + "uk": "Магазин дверей", + "vi": "Tiệm Cửa", + "zh-TW": "門店", + "mk": "Продавница за врати", + "he": "חנות דלתות" + } + }, + "shop/electrical": { + "title": { + "C": "Electrical Equipment Store", + "en": "Electrical Equipment Store", + "cs": "prodejna elektoniky", + "de": "Elektrofachgeschaft", + "el": "Κατάστημα Ηλεκτρολογικού Εξοπλισμού", + "eo": "Elektraĵa vendejo", + "es": "Tienda de equipos eléctricos", + "et": "Elektrikauba pood", + "fa": "فروشگاه کالای برق", + "fi": "Sähkötarvikekauppa", + "fr": "Magasin d'équipements électriques", + "it": "Negozio di materiale elettrico", + "ja": "電気店", + "ko": "전기 기구 가게", + "no": "Elektrisk utstyrsbutikk", + "pl": "Sklep elektryczny", + "pt-BR": "Loja de equipamentos elétricos", + "pt": "Loja de material elétrico", + "sr": "Продавница беле технике", + "uk": "Магазин електротехнічного обладнання", + "zh-TW": "電氣材料行", + "mk": "Продавница за електрика", + "he": "חנות מוצרי חשמל" + } + }, + "shop/boutique": { + "title": { + "C": "Boutique", + "en": "Boutique", + "af": "Boetiek", + "ar": "بوتيك", + "ast": "Boutique", + "bn": "বুটিক", + "bs": "Butik", + "ca": "Boutique", + "cs": "Módní butik", + "da": "Boutique", + "de": "Boutique", + "el": "Μπουτίκ", + "en-GB": "Boutique", + "eo": "Mod-butiko (altprezaj vestaĵoj)", + "es": "Boutique", + "et": "Butiik", + "fa": "بوتیک", + "fi": "Muotiliike", + "fr": "Petit magasin de mode", + "gl": "Boutique", + "hr": "Butik", + "hu": "Butik", + "id": "Butik", + "is": "Búð", + "it": "Boutique", + "ja": "ブティック", + "ko": "부티크", + "lt": "Parduotuvė", + "lv": "Veikals", + "nl": "Boetiek", + "no": "Klesbutikk", + "pl": "Butik", + "pt-BR": "Loja de Alta Costura", + "pt": "Boutique", + "ro": "Boutique", + "ru": "Бутик", + "sk": "Butik", + "sl": "Butik", + "sr": "Бутик", + "sv": "Boutique (Dyra kläder och accessoarer)", + "tr": "Butik Mağaza", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "yue": "時裝店", + "zh-CN": "精品店", + "zh-HK": "時裝店", + "zh-TW": "服飾店", + "zh": "精品店", + "mk": "Бутик", + "bg": "Бутик", + "he": "בוטיק" + } + }, + "shop/fashion": { + "title": { + "C": "Fashion Store", + "en": "Fashion Store", + "ar": "متجر موضة", + "ast": "Tienda de moda", + "ca": "Botiga de roba", + "cs": "Módní zboží", + "da": "Modebutik", + "de": "Modegeschäft", + "el": "Κατάστημα Μόδας", + "en-GB": "Fashion Shop", + "eo": "Mod-butiko", + "es": "Tienda de moda", + "et": "Moekauplus", + "fa": "فروشگاه مد", + "fi": "Muotiliike", + "fr": "Boutique de mode", + "gl": "Tenda de moda", + "hr": "Modni dućan", + "hu": "Divatüzlet", + "id": "Toko Mode", + "is": "Tískuverslun", + "it": "Negozio di moda", + "ja": "ファッション店", + "ko": "패션 가게", + "lt": "Mados parduotuvė", + "lv": "Modes veikals", + "nl": "Modewinkel", + "no": "Motebutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Moda", + "pt": "Loja de moda", + "ro": "Magazin de Modă", + "ru": "Магазин модной брендовой одежды", + "sk": "Obchod s módnymi doplnkami", + "sl": "Trgovina z modnimi oblačili", + "sr": "Бутик", + "sv": "Modebutik", + "tr": "Giyim Mağazası", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "zh-CN": "服装店", + "zh-HK": "時裝店", + "zh-TW": "時尚店", + "mk": "Модна продавница", + "he": "חנות אופנה" + } + }, + "shop/fashion_accessories": { + "title": { + "C": "Fashion Accessories Store", + "en": "Fashion Accessories Store", + "cs": "prodejna módních doplňků", + "de": "Geschäft für Modeaccessoires", + "el": "Κατάστημα για Αξεσουάρ Μόδας", + "eo": "Galanteria (vestaj akcesoraĵoj) vendejo", + "es": "Tienda de accesorios de moda", + "fi": "Muotitarvikekauppa", + "fr": "Boutique d'accessoires de mode", + "hu": "Divat kiegészítők boltja", + "it": "Negozio di Accessori Moda", + "ja": "ファッション小物店", + "ko": "패션 액세서리 가게", + "pl": "Sklep z galanterią", + "pt-BR": "Loja de acessórios de moda", + "pt": "Loja de acessórios de moda", + "ru": "Магазин модных аксессуаров", + "uk": "Магазин модних аксесуарів", + "zh-TW": "服裝配飾商店", + "mk": "Продавница за модни додатоци", + "he": "חנות אביזרי אופנה" + } + }, + "shop/flooring": { + "title": { + "C": "Flooring Supply Shop", + "en": "Flooring Supply Shop", + "cs": "podlahové krytiny", + "de": "Fußbodengeschäft", + "eo": "Plank-vendejo", + "es": "Tienda de suministros para pisos", + "fa": "فروشگاه لوازم جانبی کفپوش", + "ja": "床用品店", + "ko": "바닥재 가게", + "pl": "Sklep z posadzkami", + "pt-BR": "Loja de materiais para pisos", + "pt": "Loja de material de pavimentação", + "uk": "Магазин напільних матеріалів", + "zh-TW": "地板商店", + "mk": "Продавница за подови", + "he": "חנות ריצוף" + } + }, + "shop/general": { + "title": { + "C": "General Store", + "en": "General Store", + "cs": "smíšené zboží", + "de": "Gemischtwarenhandlung", + "eo": "Ĝenerala vendejo", + "es": "Tienda general", + "et": "Kauplus", + "fi": "Sekatavarakauppa", + "fr": "Magasin général", + "hu": "Vegyesbolt", + "it": "Emporio", + "ja": "よろず屋", + "pl": "Sklep wielobranżowy", + "pt-BR": "Loja geral", + "pt": "Mercearia", + "sv": "Generell affär", + "uk": "Крамниця", + "zh-CN": "杂货店", + "zh-TW": "一般商店", + "mk": "Општа продавница", + "he": "חנות כללית" + } + }, + "shop/games": { + "title": { + "C": "Tabletop Game Store", + "en": "Tabletop Game Store", + "cs": "deskové hry", + "de": "Brettspielgeschäft", + "eo": "Tabullud‑vendejo", + "es": "Tienda de juegos de mesa", + "fi": "Lautapeliliike", + "fr": "Magasin de jeux de plateau", + "hu": "Asztali játékok boltja", + "it": "Negozio di giochi da tavolo", + "ja": "ボードゲーム販売店", + "ko": "보드게임 가게", + "nl": "Bordspellenwinkel", + "no": "Bordspill Butikk", + "pl": "Sklep z grami", + "pt-BR": "Loja de jogos de mesa", + "pt": "Loja de jogos de tabuleiro", + "sr": "Продавница друштвених игара", + "uk": "Настільні ігри", + "zh-TW": "桌遊店", + "mk": "Продавница за столни игри", + "he": "חנות משחקי קופסה" + } + }, + "shop/lighting": { + "title": { + "C": "Lighting Store", + "en": "Lighting Store", + "cs": "prodejna osvětlení", + "de": "Leuchten- und Lampengeschäft", + "el": "Κατάστημα Λάμπας", + "eo": "Prilumigad‑aparata vendejo", + "es": "Tienda de iluminación", + "fi": "Valaisinkauppa", + "fr": "Magasin de lampes", + "gl": "Tenda de iluminación", + "hu": "Világítási eszközök", + "it": "Negozio di illuminazione", + "ja": "照明器具店", + "ko": "조명 가게", + "pl": "Sklep z oświetleniem", + "pt-BR": "Loja de iluminação", + "pt": "Loja de iluminação", + "ru": "Магазин светильников", + "sk": "Svietidlá", + "sr": "Продавница осветљења", + "sv": "Belysningsbutik", + "uk": "Магазин освітлення", + "vi": "Tiệm Đèn sáng", + "zh-CN": "灯饰店", + "zh-TW": "燈具店", + "mk": "Продавница за расветни тела", + "he": "חנות תאורה" + } + }, + "shop/hobby": { + "title": { + "C": "Hobby Shop", + "en": "Hobby Shop", + "cs": "pro volný čas", + "da": "Hobbybutik", + "de": "Bastelgeschäft", + "eo": "Hobia vendejo", + "es": "Tienda de pasatiempos", + "fa": "فروشگاه سرگرمی", + "fi": "Harrastuskauppa", + "fr": "Magasin pour hobby (non spécifié)", + "hu": "Hobbi bolt", + "it": "Negozio di Hobbystica", + "ja": "ホビーショップ", + "ko": "취미 가게", + "no": "Hobby Butikk", + "pl": "Sklep hobbystyczny", + "pt-BR": "Loja de passatempo", + "pt": "Loja de modelismo", + "sv": "Hobbyaffär", + "uk": "Магазин товарів для хобі", + "zh-TW": "嗜好商店", + "mk": "Хобистичка продавница", + "he": "חנות תחביבים" + } + }, + "shop/pottery": { + "title": { + "C": "Pottery Store", + "en": "Pottery Store", + "cs": "keramika", + "de": "Keramikladen", + "eo": "Porcelan-vendejo", + "es": "Tienda de alfarería", + "fr": "Magasin de poterie", + "it": "Negozio di ceramica", + "ja": "陶磁器店", + "ko": "도자기 가게", + "pl": "Sklep garncarski", + "pt-BR": "Loja de cerâmica", + "pt": "Loja de cerâmica", + "sk": "Obchod s keramikou", + "sr": "Продавница грнчарије", + "uk": "Порцелянові вироби", + "zh-TW": "陶器店", + "mk": "Продавница за грнчарија", + "he": "חנות כדים" + } + }, + "shop/military_surplus": { + "title": { + "C": "Military Surplus Store", + "en": "Military Surplus Store", + "cs": "armádní výprodej", + "de": "Militärkleidungsabverkauf", + "el": "Κατάστημα Στρατιωτικού Εξοπλισμού", + "eo": "Ne-plu-necesa-armea-ekipaĵo vendejo", + "es": "Tienda de excedentes militares", + "fi": "Armeijan ylijäämämyymälä", + "fr": "Surplus militaire", + "hu": "Katonai felszerelések boltja", + "ja": "軍払い下げ品店", + "pl": "Sklep ze sprzętem wojskowym", + "pt-BR": "Loja de excedente militar", + "pt": "Loja de excedentes militares", + "ru": "Армейский магазин", + "sr": "Продавница војних вишкова", + "uk": "Магазин військових товарів", + "zh-TW": "軍用品店", + "mk": "Продавница за воени вишоци", + "he": "חנות עודפי צבא" + } + }, + "shop/outpost": { + "title": { + "C": "Online Retailer Outpost", + "en": "Online Retailer Outpost", + "cs": "výdejna e-shopu", + "de": "Abholstelle eines Onlinehändlers", + "eo": "Ricevejo de aĉetaĵoj (per interreto)", + "es": "Puesto de venta minorista online", + "fi": "Verkkokaupan noutopiste", + "fr": "Magasin de produits vendus en ligne", + "ja": "商品受け取り店", + "ko": "전자상거래 사업자 영업소", + "pl": "Placówka sklepu internetowego", + "pt-BR": "Posto de retalhista online", + "pt": "Posto de retalhista online", + "ru": "Пункт выдачи интернет-магазина", + "uk": "Пункт видачі онлайн магазина", + "zh-TW": "線上零售商提貨處", + "mk": "Испостава на семрежна продавница", + "he": "נקודת הפצה של שירות מקוון" + } + }, + "shop/printer_ink": { + "title": { + "C": "Printer Ink Store", + "en": "Printer Ink Store", + "cs": "barvy do tiskáren", + "de": "Druckertintengeschäft", + "el": "Κατάστημα για Μελάνια Εκτυπωτών", + "eo": "Presil-inka vendejo", + "es": "Tienda de tinta para impresora", + "fi": "Tulostinmustemyymälä", + "fr": "Vendeur d'encre pour imprimante", + "hu": "Nyomtatófesték bolt", + "it": "Negozio di cartucce per stampanti", + "ja": "プリンタ用インク店", + "ko": "프린터 잉크 가게", + "pl": "Sklep z tuszami do drukarek", + "pt-BR": "Loja de tinta de impressora", + "pt": "Loja de tinteiros de impressora", + "sk": "Obchod s tonermi", + "sv": "Butik för skrivarbläck", + "uk": "Чорнила для принтера", + "zh-CN": "打印机墨水店", + "zh-TW": "印表機墨水商店", + "mk": "Продавница за печатарска боја", + "he": "חנות דיו למדפסות" + } + }, + "shop/rental": { + "title": { + "C": "Rental Shop", + "en": "Rental Shop", + "cs": "půjčovna", + "da": "Udlejningsforretning", + "de": "Verleih", + "eo": "Pruntejo", + "es": "Tienda de alquiler", + "fi": "Vuokraamo", + "fr": "Magasin de location", + "gl": "Tenda de alugueiro", + "hu": "Kölcsönző", + "it": "Negozio di noleggio", + "ja": "レンタルショップ", + "ko": "대여점", + "pl": "Wypożyczalnia", + "pt-BR": "Locadora", + "pt": "Loja de aluguer de material em geral", + "sv": "Hyrbutik", + "uk": "Станція прокату", + "vi": "Cho thuê Hàng hóa", + "zh-TW": "租賃店", + "mk": "Изнајмувачница", + "he": "חנות השכרה" + } + }, + "shop/swimming_pool": { + "title": { + "C": "Pool Supply Store", + "en": "Pool Supply Store", + "cs": "bazény", + "de": "Swimmingpoolbedarf", + "eo": "Vendejo de naĝej-akcesoriaĵoj", + "es": "Tienda de suministros para piscinas", + "fa": "فروشگاه لوازم استخر", + "fi": "Uima-allasliike", + "fr": "Magasin de matériel de piscine", + "gl": "Tenda de subministracións para piscinas", + "hu": "Medence kellékek", + "it": "Negozio per rifornimenti per piscina", + "ja": "プール用品店", + "ko": "수영장 용품 가게", + "pl": "Sklep z akcesoriami do basenów", + "pt-BR": "Loja de suprimentos para piscinas", + "pt": "Loja de acessórios para piscinas", + "sv": "Butik för pooltillbehör", + "uk": "Обладнання для басейнів", + "zh-TW": "泳池用品商店", + "mk": "Базенски залихи", + "he": "חנות ציוד לבריכות" + } + }, + "shop/psychic": { + "title": { + "C": "Psychic", + "en": "Psychic", + "cs": "věštírna", + "de": "Astrologiker", + "eo": "Laborejo de mediumo", + "es": "Vidente", + "fa": "پیش‌گو", + "fi": "Psyykikko", + "fr": "Magasin ésotérique psi", + "ja": "サイキック店", + "ko": "초능력자", + "pl": "Medium", + "pt-BR": "Psíquico", + "pt": "Vidente", + "sr": "Видовњак", + "uk": "Екстрасенс", + "zh-TW": "算命店", + "mk": "Јасновидец", + "he": "מדיום" + } + }, + "shop/spices": { + "title": { + "C": "Spice Shop", + "en": "Spice Shop", + "cs": "koření, bylinky", + "da": "Kryddeributik", + "de": "Gewürzladen", + "el": "Κατάστημα Μπαχαρικών", + "eo": "Spica vendejo", + "es": "Tienda de especias", + "fi": "Maustekauppa", + "fr": "Magasin d'épices", + "gl": "Tenda de especias", + "hu": "Fűszerbolt", + "it": "Negozio di Spezie", + "ja": "スパイス店", + "ko": "향신료 가게", + "pl": "Sklep z przyprawami", + "pt-BR": "Loja de especiarias", + "pt": "Loja de especiarias", + "sk": "Obchod s koreninami", + "sr": "Продавница зачина", + "uk": "Спеції", + "vi": "Tiệm Gia vị", + "zh-CN": "香料店", + "zh-TW": "香料店", + "mk": "Продавница за зачини", + "he": "חנות תבלינים" + } + }, + "shop/telecommunication": { + "title": { + "C": "Telecom Retail Store", + "en": "Telecom Retail Store", + "cs": "telekomunikační prodejna", + "de": "Telekommunikationsfachgeschäft", + "eo": "Oficejo de telekomunikada firmao (vendo)", + "es": "Tienda minorista de telecomunicaciones", + "et": "Sidefirma pood", + "fa": "فروشگاه لوازم مخابراتی", + "fi": "Teleoperaattorin myymälä", + "fr": "Magasin de compagnie de télécommunication", + "ja": "通信サービス店", + "ko": "통신사 대리점", + "pl": "Dostawca Internetu/telefonu/TV", + "pt-BR": "Loja de telecomunicações", + "pt": "Loja de telecomunicações", + "uk": "Магазин телекомунікаційного обладнання", + "zh-TW": "通訊行", + "mk": "Телекомуникациска продавница", + "he": "חנות טלפונים" + } + }, + "shop/tool_hire": { + "title": { + "C": "Tool Rental", + "en": "Tool Rental", + "cs": "půjčovna nářadí", + "de": "Werkzeugverleih", + "eo": "Il-pruntejo", + "es": "Alquiler de herramientas", + "fi": "Työkaluvuokraamo", + "fr": "Location d'outils", + "it": "Noleggio Utensili", + "ja": "工具レンタル店", + "ko": "도구 대여점", + "no": "Verktøyutleie", + "pl": "Wypożyczalnia narzędzi", + "pt-BR": "Aluguel de ferramentas", + "pt": "Aluguer de ferramentas", + "sk": "Požičovňa nástrojov", + "sr": "Изнајмљивање алата", + "uk": "Прокат інструмента", + "vi": "Cho thuê Công cụ", + "zh-TW": "工具租賃", + "mk": "Изнајмување алати", + "he": "השכרת כלים" + } + }, + "shop/collector": { + "title": { + "C": "Collectibles Shop", + "en": "Collectibles Shop", + "cs": "Sběratel", + "de": "Sammlergeschäft", + "eo": "Kolektaĵa vendejo", + "es": "Tienda de coleccionables", + "ja": "コレクター店", + "ko": "수집품 가게", + "pl": "Sklep kolekcjonerski", + "pt-BR": "Loja de artigos para colecionadores", + "pt": "Loja de colecionismo", + "sr": "Продавница колекционарства", + "uk": "Магазин предметів колекціювання", + "vi": "Tiệm Đồ sưu tập", + "zh-TW": "收藏品商店", + "mk": "Колекционерска продавница", + "he": "חנות אספנים" + } + }, + "shop/household_linen": { + "title": { + "C": "Household Linen Shop", + "en": "Household Linen Shop", + "cs": "Bytový textil", + "de": "Haushaltswäschegeschäft", + "eo": "Tuka vendejo", + "es": "Tienda de ropa de hogar", + "ja": "家庭用布製品店", + "ko": "가정용 직물 가게", + "pl": "Sklep z pościelą/ręcznikami", + "pt-BR": "Loja de roupa de casa", + "pt": "Loja de têxteis para o lar", + "uk": "Магазин білизни", + "zh-TW": "家用亞麻布商店", + "mk": "Продавница за постелнини", + "he": "חנות מצעים" + } + }, + "shop/model": { + "title": { + "C": "Model Shop", + "en": "Model Shop", + "cs": "Modelářský obchod", + "de": "Modellbaugeschäft", + "eo": "Vendejo de modelfarado", + "es": "Tienda de modelismo", + "ja": "模型店", + "ko": "모형 가게", + "pl": "Sklep modelarski", + "pt": "Loja de modelismo", + "sk": "Modelárstvo", + "uk": "Магазин масштабних моделей", + "vi": "Tiệm Mô hình", + "zh-TW": "模型店", + "mk": "Моделарска продавница", + "he": "חנות דגמים" + } + }, + "shop/shoe_repair": { + "title": { + "C": "Shoe Repair Shop", + "en": "Shoe Repair Shop", + "cs": "Opravna obuvi", + "de": "Schuhreparatur", + "eo": "Ŝu-riparejo", + "es": "Taller de reparación de calzado", + "fr": "Cordonnier", + "it": "Calzolaio", + "ja": "靴修理店", + "ko": "신발 수선점", + "pl": "Naprawa obuwia", + "pt-BR": "Loja de conserto de calçados", + "pt": "Reparador de sapatos", + "sk": "Oprava obuvi", + "sr": "Обућар", + "uk": "Ремонт взуття", + "vi": "Tiệm Sửa Giày", + "zh-TW": "修鞋店", + "mk": "Чевлар", + "he": "חנות לתיקון נעליים" + } + }, + "shop/trophy": { + "title": { + "C": "Trophy Shop", + "en": "Trophy Shop", + "cs": "Prodejna trofejí", + "de": "Trophäengeschäft", + "eo": "Vendejo de pokaloj kaj premioj", + "es": "Tienda de trofeos", + "it": "Negozio di Coppe", + "ja": "徽章店", + "ko": "트로피 가게", + "pl": "Sklep z trofeami", + "pt-BR": "Loja de troféus", + "pt": "Loja de troféus", + "sr": "Продавница трофеја", + "uk": "Магазин нагород", + "vi": "Tiệm Giải thưởng", + "zh-TW": "獎盃商店", + "mk": "Продавница за трофеи", + "he": "חנות מדליות" + } + }, + "shop/wigs": { + "title": { + "C": "Wig Shop", + "en": "Wig Shop" + } + }, + "tourism/alpine_hut": { + "title": { + "C": "Alpine Hut", + "en": "Alpine Hut", + "af": "Berghuisie", + "ar": "كوخ جبلي", + "ast": "Refuxu d'alpinismu", + "bs": "Planinski dom", + "ca": "Refugi de muntanya", + "cs": "Horská chata", + "da": "Bjerghytte", + "de": "Schutzhütte", + "el": "Αλπική Καλύβα", + "en-GB": "Alpine Hut", + "eo": "Montara rifuĝejo", + "es": "Refugio de montaña", + "et": "Alpimaja", + "fa": "کلبه آلپ", + "fi": "Alppimaja", + "fr": "Refuge de montagne", + "gl": "Refuxio de montaña", + "hr": "Planinarski dom", + "hu": "Menedékház", + "is": "Fjallakofi", + "it": "Rifugio", + "ja": "山小屋", + "ko": "고산장", + "lt": "Kalnų namelis", + "nl": "Berghut", + "no": "Fjellhytte", + "pl": "Chata górska", + "pt-BR": "Abrigo de Montanha", + "pt": "Albergue alpino", + "ro": "Cabană", + "ru": "Горный приют", + "sk": "Vysokohorská chata", + "sl": "Planinska koča", + "sr": "Планинарски дом", + "sv": "Fjällstation", + "tr": "Dağ Evi", + "uk": "Гірський притулок", + "vi": "Túp lều trên Núi", + "yue": "高山屋仔", + "zh-CN": "高山小屋", + "zh-HK": "高山小屋", + "zh-TW": "高山小屋", + "zh": "高山小屋", + "mk": "Планинарски дом", + "bg": "Хижа", + "he": "בקטה הררית" + } + }, + "tourism/artwork": { + "title": { + "C": "Artwork", + "en": "Artwork", + "af": "Kunswerk", + "ar": "عمل فني", + "ast": "Obra d'arte", + "bs": "Umjetničko djelo", + "ca": "Obra d'art", + "cs": "Umělecké dílo", + "da": "Kunstværk", + "de": "Kunst", + "el": "Έργο τέχνης", + "en-GB": "Artwork", + "eo": "Artverko", + "es": "Obra de arte", + "et": "Kunstiteos", + "fa": "اثر هنری", + "fi": "Taideteos", + "fr": "Œuvre d'art", + "gl": "Obra artística", + "hr": "Umjetničko djelo", + "hu": "Műalkotás", + "id": "Karya Seni", + "is": "Listaverk", + "it": "Opera d'arte", + "ja": "パブリックアート", + "ko": "예술품", + "lt": "Meno kūrinys", + "lv": "Mākslas darbs", + "nl": "Kunstwerk", + "no": "Kunstverk", + "pl": "Dzieło sztuki", + "pt-BR": "Obra de Arte", + "pt": "Obra de arte pública", + "ru": "Произведение искусства", + "sk": "Umelecké dielo", + "sl": "Umetnina", + "sr": "Уметничко дело", + "sv": "Publik konst", + "ta": "ஓவியம்", + "tr": "Sanat Eseri", + "uk": "Витвір мистецтва", + "vi": "Nghệ phẩm", + "yue": "藝術品", + "zh-CN": "艺术品", + "zh-HK": "藝術品", + "zh-TW": "公共藝術", + "zh": "艺术品", + "mk": "Уметничко дело", + "bg": "Произведение на изкуството", + "he": "אומנות" + } + }, + "tourism/attraction": { + "title": { + "C": "Tourist Attraction", + "en": "Tourist Attraction", + "af": "Toerismeaantreklikheid", + "ar": "معلم سياحي", + "ast": "Atracción turística", + "bn": "পর্যটক আকর্ষণ", + "bs": "Turistička atrakcija", + "ca": "Atracció turística", + "cs": "Pamětihodnost", + "da": "Turistattraktion", + "de": "Sehenswürdigkeit", + "el": "Τ", + "en-GB": "Tourist Attraction", + "eo": "Turisma vidindaĵo", + "es": "Atracción turística", + "et": "Turismiatraktsioon", + "fa": "جاذبه گردشگری", + "fi": "Turistikohde", + "fr": "Attraction touristique", + "gl": "Atracción turística", + "hr": "Turistička atrakcija", + "hu": "Turisztikai látványosság", + "id": "Objek Wisata", + "is": "Ferðamannagildra", + "it": "Attrazione turistica", + "ja": "観光地", + "ko": "관광 명소", + "lt": "Turistų traukos vieta", + "lv": "Tūrisma objekts", + "nl": "Toeristische attractie", + "no": "Turistattraksjon", + "pl": "Atrakcja turystyczna", + "pt-BR": "Atração Turística", + "pt": "Atração turística", + "ro": "Atracție Turistică", + "ru": "Достопримечательность", + "sk": "Turistická atrakcia", + "sl": "Turistična znamenitost", + "sr": "Туристичка атракција", + "sv": "Turistattraktion", + "tr": "Turistik Yer", + "uk": "Туристична пам’ятка", + "vi": "Điểm Thu hút Du lịch", + "yue": "旅行名勝", + "zh-CN": "旅游名胜", + "zh-HK": "觀光名勝", + "zh-TW": "觀光景點", + "zh": "旅游景点", + "mk": "Знаменитост", + "bg": "Туристическа атракция", + "he": "אתר תיירותי" + } + }, + "tourism/camp_site": { + "title": { + "C": "Campground", + "en": "Campground", + "ar": "مكان التخييم", + "ast": "Campamentu", + "ca": "Àrea d'acampada", + "cs": "Tábořiště", + "da": "Campingplads", + "de": "Campingplatz", + "el": "Χώρος Κατασκήνωσης", + "en-GB": "Camp Site", + "eo": "Kampadejo", + "es": "Campamento", + "et": "Telkimisala", + "fa": "اردوگاه", + "fi": "Leirintäalue", + "fr": "Camping", + "gl": "Cámping", + "hu": "Kemping", + "is": "Tjaldsvæði", + "it": "Campeggio", + "ja": "キャンプ場", + "ko": "캠핑장", + "lv": "Kempinga vieta", + "nl": "Camping", + "pl": "Kemping", + "pt-BR": "Local de Acampamento", + "pt": "Parque de campismo", + "ro": "Teren de Camping", + "ru": "Кемпинг/туристический приют", + "sk": "Kemp", + "sl": "Kamp", + "sr": "Простор за камповање", + "sv": "Campingplats", + "tr": "Kamp Yeri", + "uk": "Табір", + "vi": "Khu Cắm trại", + "zh-CN": "宿营场地", + "zh-HK": "營地", + "zh-TW": "露營地", + "mk": "Камп", + "he": "אתר מחנאות" + } + }, + "tourism/caravan_site": { + "title": { + "C": "RV Park", + "en": "RV Park", + "af": "RV Park", + "ar": "موقف عربات كبيرة", + "ast": "Aparcaderu d'autocaravanes", + "bs": "Kamp park", + "ca": "Càmping per a caravanes", + "cs": "Místo pro karavany", + "da": "Autocamperplads", + "de": "Wohnwagen-Campingplatz", + "el": "Πάρκο τροχόσπιτων", + "en-GB": "Caravan Park", + "eo": "Kampad-veturila parkumejo", + "es": "Parque de autocaravanas", + "et": "Karavanipark", + "fa": "پارکینگ ماشین کاروان", + "fi": "Asuntoautopysäköinti", + "fr": "Aire pour caravanes", + "gl": "Parque de caravanas", + "hr": "Parkiralište za kamp kućice", + "hu": "Lakóautó park", + "is": "Hjólhýsagarður", + "it": "Sosta per camper", + "ja": "オートキャンプ場", + "ko": "RV 공원", + "nl": "Caravan-/kampeerwagenterrein", + "no": "Bobilpark", + "pl": "Kemping dla kamperów", + "pt-BR": "Estacionamento de Trailers", + "pt": "Parque de caravanas", + "ru": "Стоянка трейлеров", + "sk": "Parkovisko pre karavany", + "sl": "Parkirišče za avtodome", + "sr": "Камп-парк", + "sv": "Ställplats", + "ta": "ஆர்வி பூங்கா", + "tr": "Karavan Parkı", + "uk": "Караван-парк", + "vi": "Bãi Đậu Nhà lưu động", + "yue": "露營車營地", + "zh-CN": "房车营地", + "zh-HK": "露營車營地", + "zh-TW": "露營車停車場", + "zh": "房车营地", + "mk": "Трајлерски камп", + "bg": "Паркинг за каравани", + "he": "מגרש קרוונים", + "en-AU": "Caravan Site" + } + }, + "tourism/chalet": { + "title": { + "C": "Holiday Cottage", + "en": "Holiday Cottage", + "ar": "كوخ لقضاء العطلة", + "cs": "Prázdninová vesnice", + "da": "Feriehus", + "de": "Ferienhaus", + "el": "Εξοχική Κατοικία", + "en-GB": "Holiday Cottage", + "eo": "Dometo feria", + "es": "Cabaña vacacional / Bungaló", + "fi": "Loma-asunto", + "fr": "Gîte", + "gl": "Casas de vacacións ou chalets", + "hr": "Bungalov", + "hu": "Nyaralóház", + "is": "Frístundahús", + "it": "Chalet", + "ja": "貸別荘(戸建て)", + "ko": "별장", + "lt": "Atostogų kotedžas", + "nl": "Vakantiehuisje", + "pl": "Domek/domki na wynajem", + "pt-BR": "Chalé", + "pt": "Casa de campo", + "ru": "Коттедж под аренду", + "sr": "Викендица", + "sv": "Stuga", + "ta": "விடுமுறை குடில்", + "uk": "Шале", + "vi": "Nhà nghỉ Riêng biệt", + "zh-CN": "度假屋", + "zh-TW": "假日小屋", + "mk": "Викендичка", + "he": "בקתה לחגים" + } + }, + "tourism/guest_house": { + "title": { + "C": "Guest House", + "en": "Guest House", + "af": "Gastehuis", + "ar": "دار الضيافة", + "ast": "Pensión", + "bn": "অতিথিশালা", + "bs": "Gostinjska kuća", + "ca": "Habitacions de lloguer", + "cs": "Penzion", + "da": "Gæstehus", + "de": "Pension", + "el": "Ξενώνας", + "en-GB": "Guest House", + "eo": "Pensiono", + "es": "Casa de huéspedes / B&B", + "et": "Külalistemaja", + "fa": "مهمان خانه", + "fi": "Majatalo", + "fr": "Chambre d'hôtes", + "gl": "Hostal", + "hr": "Gostinjska kuća", + "hu": "Vendégház", + "id": "Rumah Tamu", + "is": "Gestahús", + "it": "Bed & Breakfast", + "ja": "民宿", + "ko": "민박", + "lt": "Svečių namai", + "lv": "Viesu nams", + "nl": "Pension", + "no": "Gjestehus", + "pl": "Pensjonat", + "pt-BR": "Guesthouse", + "pt": "Casa de hóspedes", + "ro": "Casă de Oaspeți", + "ru": "Гостевой дом", + "sk": "Penzión", + "sl": "Penzion", + "sr": "Гостинска кућа", + "sv": "Gästhus", + "ta": "விருந்தினர் இல்லம்", + "tr": "Konuk Evi", + "uk": "Гостьовий будинок", + "vi": "Nhà khách", + "yue": "賓館", + "zh-CN": "客栈", + "zh-HK": "賓館", + "zh-TW": "招待所", + "zh": "宾馆", + "mk": "Приватен пансион", + "bg": "Къща за гости", + "he": "בית הארחה" + } + }, + "tourism/hostel": { + "title": { + "C": "Hostel", + "en": "Hostel", + "af": "Hostel", + "ar": "نزل", + "ast": "Albergue", + "bn": "ছাত্রাবাস", + "bs": "Hostel", + "ca": "Alberg", + "cs": "Hostel", + "da": "Vandrerhjem", + "de": "Hostel", + "el": "Ξενώνας", + "en-GB": "Hostel", + "eo": "Gastejo", + "es": "Albergue", + "et": "Hostel", + "fa": "مسافرخانه", + "fi": "Hostelli", + "fr": "Auberge de jeunesse", + "gl": "Albergue", + "hr": "Hostel", + "hu": "Turistaszálló", + "id": "Hostel", + "is": "Farfuglaheimili", + "it": "Ostello", + "ja": "簡易宿泊所", + "ko": "호스텔", + "lt": "Viešbutis", + "lv": "Hostelis", + "nl": "Jeugdherberg", + "no": "Hostell", + "pl": "Schronisko lub hostel", + "pt-BR": "Hostel", + "pt": "Hostel", + "ro": "Hostel", + "ru": "Хостел", + "sk": "Hostel", + "sl": "Hostel", + "sr": "Хостел", + "sv": "Vandrarhem", + "ta": "விடுதி", + "tr": "Pansiyon", + "uk": "Хостел", + "vi": "Nhà trọ", + "yue": "旅舍", + "zh-CN": "旅舍", + "zh-HK": "旅舍", + "zh-TW": "旅舍", + "zh": "招待所", + "mk": "Хостел", + "bg": "Хостел", + "he": "אכסנייה" + } + }, + "tourism/hotel": { + "title": { + "C": "Hotel", + "en": "Hotel", + "af": "Hotel", + "ar": "فندق", + "ast": "Hotel", + "bn": "হোটেল", + "bs": "Hotel", + "ca": "Hotel", + "cs": "Hotel", + "da": "Hotel", + "de": "Hotel", + "el": "Ξενοδοχείο", + "en-GB": "Hotel", + "eo": "Hotelo", + "es": "Hotel", + "et": "Hotell", + "fa": "هتل", + "fi": "Hotelli", + "fr": "Hôtel", + "gl": "Hotel", + "hr": "Hotel", + "hu": "Szálloda", + "id": "Hotel", + "is": "Hótel", + "it": "Albergo", + "ja": "ホテル", + "kn": "ಭೋಜನಾಲಯ", + "ko": "호텔", + "lt": "Viešbutis", + "lv": "Viesnīca", + "nl": "Hotel", + "no": "Hotell", + "pl": "Hotel", + "pt-BR": "Hotel", + "pt": "Hotel", + "ro": "Hotel", + "ru": "Гостиница", + "sk": "Hotel", + "sl": "Hotel", + "sq": "Hotel", + "sr": "Хотел", + "sv": "Hotell", + "ta": "உணவகம்", + "te": "హోటెల్", + "tr": "Otel", + "uk": "Готель", + "vi": "Khách sạn", + "yue": "酒店", + "zh-CN": "宾馆", + "zh-HK": "酒店", + "zh-TW": "旅館", + "zh": "旅馆", + "mk": "Хотел", + "bg": "Хотел", + "dv": "ހޮޓާ", + "he": "מלון", + "ms": "Hotel", + "so": "Huteel" + } + }, + "tourism/information": { + "title": { + "C": "Information", + "en": "Information", + "af": "Inligting", + "ar": "معلومات سياحية", + "ast": "Información", + "bn": "তথ্য", + "bs": "Informacije", + "ca": "Informació", + "cs": "Informace", + "da": "Information", + "de": "Information", + "el": "Πληροφορίες", + "en-GB": "Information", + "eo": "Informejo", + "es": "Información turística", + "et": "Info", + "fa": "اطلاعات", + "fi": "Infopiste", + "fr": "Informations", + "gl": "Información", + "hr": "Turističke informacije", + "hu": "Információ", + "id": "Informasi", + "is": "Upplýsingar", + "it": "Informazioni", + "ja": "観光案内(全般)", + "kn": "ಮಾಹಿತಿ", + "ko": "안내", + "lt": "Informacija", + "lv": "Informācija", + "nl": "Informatie", + "no": "Informasjon", + "pl": "Informacja", + "pt-BR": "Informações Turísticas", + "pt": "Informação turística", + "ro": "Informații", + "ru": "Инфопункт", + "sk": "Informácie", + "sl": "Informacije", + "sq": "Informacion", + "sr": "Информације", + "sv": "Information", + "ta": "தகவல்", + "te": "సమాచారం", + "tr": "Bilgi", + "uk": "Інформація", + "vi": "Thông tin", + "yue": "資訊處", + "zh-CN": "问询处", + "zh-HK": "旅遊資訊", + "zh-TW": "旅遊資訊", + "zh": "资讯", + "mk": "Информации", + "bg": "Информация", + "he": "מידע" + } + }, + "tourism/motel": { + "title": { + "C": "Motel", + "en": "Motel", + "af": "Motel", + "ar": "فندق رخيص", + "ast": "Motel", + "bn": "মোটেল", + "bs": "Motel", + "ca": "Motel", + "cs": "Motel", + "da": "Motel", + "de": "Motel", + "el": "Μοτέλ", + "en-GB": "Motel", + "eo": "Aŭt-hotelo", + "es": "Motel", + "et": "Motell", + "fa": "متل", + "fi": "Motelli", + "fr": "Motel", + "gl": "Motel", + "hr": "Motel", + "hu": "Motel", + "id": "Motel", + "is": "Mótel", + "it": "Motel", + "ja": "モーテル", + "ko": "모텔", + "lt": "Motelis", + "lv": "Motelis", + "nl": "Motel", + "no": "Motell", + "pl": "Motel", + "pt-BR": "Hotel de Estrada", + "pt": "Motel", + "ro": "Motel", + "ru": "Мотель", + "sk": "Motel", + "sl": "Motel", + "sr": "Мотел", + "sv": "Motel", + "tr": "Motel", + "uk": "Мотель", + "vi": "Khách sạn Dọc đường", + "yue": "汽車酒店", + "zh-CN": "汽车旅馆", + "zh-HK": "汽車酒店", + "zh-TW": "汽車旅館", + "zh": "汽车旅馆", + "mk": "Мотел", + "bg": "Мотел", + "he": "מלון דרכים" + } + }, + "tourism/museum": { + "title": { + "C": "Museum", + "en": "Museum", + "af": "Musuem", + "ar": "متحف", + "ast": "Muséu", + "bn": "প্রদর্শনশালা", + "bs": "Muzej", + "ca": "Museu", + "cs": "Muzeum", + "da": "Museum", + "de": "Museum", + "el": "Μουσείο", + "en-GB": "Museum", + "eo": "Muzeo", + "es": "Museo", + "et": "Muuseum", + "fa": "موزه", + "fi": "Museo", + "fr": "Musée", + "gl": "Museo", + "hr": "Muzej", + "hu": "Múzeum", + "id": "Museum", + "is": "Safn", + "it": "Museo", + "ja": "博物館・美術館", + "kn": "ಒಡವೆಮನೆ", + "ko": "박물관", + "lt": "Muziejus", + "lv": "Muzejs", + "nl": "Museum", + "no": "Museum", + "pl": "Muzeum", + "pt-BR": "Museu", + "pt": "Museu", + "ro": "Muzeu", + "ru": "Музей", + "sk": "Múzeum", + "sl": "Muzej", + "sr": "Музеј", + "sv": "Museum", + "ta": "அருங்காட்சியகம்", + "te": "మ్యూజియం", + "tr": "Müze", + "uk": "Музей", + "vi": "Bảo tàng", + "yue": "博物館", + "zh-CN": "博物馆", + "zh-HK": "博物館", + "zh-TW": "博物館", + "zh": "博物馆", + "mk": "Музеј", + "bg": "Музей", + "he": "מוזיאון" + } + }, + "tourism/picnic_site": { + "title": { + "C": "Picnic Site", + "en": "Picnic Site", + "af": "Piekniek Plek", + "ar": "موقع نزهة", + "ast": "Área recreativa", + "bn": "পিকনিক-এর জায়গা", + "bs": "Izletište", + "ca": "Àrea de pícnic", + "cs": "Místo pro piknik", + "da": "Madpakkested", + "de": "Picknickplatz", + "el": "Χώρος Εκδρομής", + "en-GB": "Picnic Site", + "eo": "Piknika ejo", + "es": "Zona de picnic", + "et": "Piknikukoht", + "fa": "مکان پیک نیک", + "fi": "Piknikpuisto", + "fr": "Aire de pique-nique", + "gl": "Merendeiro ou zona de pícnic", + "hr": "Izletište", + "hu": "Piknikezőhely", + "id": "Tempat Piknik", + "is": "Áningarstaður", + "it": "Area picnic", + "ja": "ピクニック場", + "ko": "유원지", + "lt": "Pikniko stovyklavietė", + "lv": "Piknika vieta", + "nl": "Picknickplek", + "no": "Pikniksted", + "pl": "Miejsce na piknik", + "pt-BR": "Local de Piquenique", + "pt": "Parque de merendas", + "ro": "Picnic", + "ru": "Место для пикника", + "sk": "Miesto pre piknik", + "sl": "Prostor za piknike", + "sr": "Излетиште", + "sv": "Picknickplats", + "tr": "Piknik Alanı", + "uk": "Місце для пікніка", + "vi": "Nơi Ăn Ngoài trời", + "yue": "郊遊地點", + "zh-CN": "野餐地", + "zh-HK": "郊遊地點", + "zh-TW": "野餐場地", + "zh": "郊游地点", + "mk": "Излетничко место", + "bg": "Място за пикник", + "he": "פיקניק", + "ms": "Tapak Perkelahan" + } + }, + "tourism/theme_park": { + "title": { + "C": "Theme Park", + "en": "Theme Park", + "af": "Temapark", + "ar": "حديقة ترفيه", + "ast": "Parque temáticu", + "bn": "থিম পার্ক", + "bs": "Tematski park", + "ca": "Parc temàtic", + "cs": "Zábavní park", + "da": "Forlystelsespark", + "de": "Themenpark", + "el": "Πάρκο Ψυχαγωγίας", + "en-GB": "Theme Park", + "eo": "Amuzparko", + "es": "Parque de atracciones", + "et": "Lõbustuspark", + "fa": "پارک تفریحی, شهربازی", + "fi": "Huvipuisto", + "fr": "Parc d'attraction", + "gl": "Parque de atraccións", + "hr": "Zabavni park", + "hu": "Vidámpark", + "id": "Taman Rekreasi", + "is": "Skemmtigarður", + "it": "Parco a tema", + "ja": "テーマパーク", + "ko": "놀이공원", + "lt": "Atrakcijonų parkas", + "lv": "Tematiskais parks", + "nl": "Themapark", + "no": "Temapark", + "pl": "Park rozrywki", + "pt-BR": "Parque Temático", + "pt": "Parque de diversões", + "ro": "Parc de Distracții", + "ru": "Парк развлечений", + "sk": "Zábavný park", + "sl": "Zabaviščni park", + "sr": "Тематски парк", + "sv": "Nöjespark", + "tr": "Eğlence Parkı", + "uk": "Тематичний парк", + "vi": "Công viên Chủ đề", + "yue": "主題公園", + "zh-CN": "主题公园", + "zh-HK": "主題公園", + "zh-TW": "主題公園", + "zh": "主题公园", + "mk": "Забавен парк", + "bg": "Увеселителен парк", + "he": "לונה פארק" + } + }, + "tourism/viewpoint": { + "title": { + "C": "Viewpoint", + "en": "Viewpoint", + "af": "Uitkykpunt", + "ar": "منظر سياحي", + "ast": "Mirador", + "bs": "Vidikovac", + "ca": "Mirador", + "cs": "Výhled", + "da": "Udsigtspunkt", + "de": "Aussichtspunkt", + "el": "Σημείο θέασης", + "en-GB": "Viewpoint", + "eo": "Belvidejo", + "es": "Vista panorámica / Mirador", + "et": "Vaatekoht", + "fa": "نقطه دید", + "fi": "Näköalapaikka", + "fr": "Point de vue", + "gl": "Miradoiro", + "hr": "Vidikovac", + "hu": "Kilátóhely", + "id": "Titik Pandang", + "is": "Útsýnisstaður", + "it": "Punto panoramico", + "ja": "展望台", + "ko": "경승지", + "lt": "Apžvalgos taškas", + "lv": "Skatu punkts", + "nl": "Uitzichtpunt", + "no": "Utsiktspunkt", + "pl": "Punkt widokowy", + "pt-BR": "Mirante", + "pt": "Miradouro", + "ro": "Punct de Vedere", + "ru": "Обзорная точка", + "sk": "Vyhliadka", + "sl": "Razgledna točka", + "sr": "Видиковац", + "sv": "Utsiktspunkt", + "tr": "Görüş Noktası", + "uk": "Оглядовий майданчик", + "vi": "Điểm Ngắm cảnh", + "yue": "觀景臺", + "zh-CN": "观景点", + "zh-HK": "觀景臺", + "zh-TW": "觀景點", + "zh": "景点", + "mk": "Видиковец", + "bg": "Точка с хубава гледка", + "he": "תצפית" + } + }, + "tourism/zoo": { + "title": { + "C": "Zoo", + "en": "Zoo", + "af": "Dieretuin", + "ar": "حديقة حيوانات", + "ast": "Zoo", + "bn": "চিড়িয়াখানা", + "bs": "Zoološki vrt", + "ca": "Zoo", + "cs": "ZOO", + "da": "Zoologisk have", + "de": "Zoo", + "el": "Ζωολογικός Κήπος", + "en-GB": "Zoo", + "eo": "Bestoĝardeno", + "es": "Zoológico", + "et": "Loomaaed", + "fa": "باغ وحش", + "fi": "Eläintarha", + "fr": "Parc zoologique", + "gl": "Zoolóxico", + "hi": "चिड़िया घर", + "hr": "Zološki vrt", + "hu": "Állatkert", + "id": "Kebun Binatang", + "is": "Dýragarður", + "it": "Zoo", + "ja": "動物園", + "ko": "동물원", + "lt": "Zoologijos sodas", + "lv": "Zooloģiskais dārzs", + "nl": "Dierentuin", + "no": "Zoologisk hage", + "pl": "Zoo", + "pt-BR": "Zoológico", + "pt": "Jardim zoológico", + "ro": "Grădină Zoologică", + "ru": "Зоопарк", + "sk": "Zoo", + "sl": "Živalski vrt", + "sr": "Зоолошки врт", + "sv": "Zoo", + "ta": "உயிரியல் பூங்கா", + "te": "జూ", + "tr": "Hayvanat Bahçesi", + "uk": "Зоопарк", + "vi": "Vườn thú", + "yue": "動物園", + "zh-CN": "动物园", + "zh-HK": "動物園", + "zh-TW": "動物園", + "zh": "动物园", + "mk": "Зоолошка градина", + "bg": "Зоологическа градина", + "he": "גן חיות" + } + }, + "tourism/gallery": { + "title": { + "C": "Art Gallery", + "en": "Art Gallery", + "ar": "رواق الفنون", + "ast": "Galería d'arte", + "ca": "Galeria d'art", + "cs": "Galerie umění", + "da": "Kunstgalleri", + "de": "Kunstgalerie", + "el": "Γκαλερί Τέχνης", + "en-GB": "Art Gallery", + "eo": "Artgalerio", + "es": "Galería de arte", + "et": "Kunstigalerii", + "fa": "گالری هنری", + "fi": "Taidegalleria", + "fr": "Galerie d'art", + "gl": "Galería de arte", + "hr": "Umjetnička galerija", + "hu": "Művészeti galéria", + "is": "Listagallerí", + "it": "Galleria d'arte", + "ja": "アートギャラリー", + "kn": "ಕಲಾಮಂದಿರ", + "ko": "미술관", + "lt": "Meno galerija", + "lv": "Mākslas galerija", + "nl": "Kunstgallerij", + "no": "Kunstgalleri", + "pl": "Galeria sztuki", + "pt-BR": "Galeria de Arte", + "pt": "Galeria de arte", + "ro": "Galerie de Artă", + "ru": "Художественная галерея", + "sk": "Umelecká galéria", + "sl": "Umetnostna galerija", + "sr": "Галерија слика", + "sv": "Konstgalleri", + "ta": "கலைக்கூடம்", + "tr": "Sanat Galerisi", + "uk": "Художня галерея", + "vi": "Phòng tranh", + "zh-CN": "美术馆", + "zh-HK": "畫廊", + "zh-TW": "藝廊", + "mk": "Уметничка галерија", + "he": "גלריית אומנות" + } + }, + "tourism/apartment": { + "title": { + "C": "Guest Apartment / Condo", + "en": "Guest Apartment / Condo", + "ar": "شقة سياحية", + "ca": "Habitatge de convidats", + "cs": "Byt/apartmán k pronájmu", + "da": "Gæstelejlighed/Ejerlejlighed", + "de": "Ferienwohnung", + "el": "Ξενώνας / Διαμέρισμα", + "en-GB": "Guest Apartment / Condo", + "eo": "Apartamento feria (luprenebla)", + "es": "Apartamento de huéspedes", + "et": "Külaliskorter", + "fa": "آپارتمان مهمان / کاندو", + "fi": "Vierasmajoitus", + "fr": "Location de vacances", + "gl": "Apartamento de hóspedes", + "hr": "Turistički apartman", + "hu": "Apartman", + "is": "Gestaíbúð", + "it": "Affittacamere", + "ja": "リゾートマンション", + "ko": "게스트 아파트 / 콘도", + "lt": "Svečių apartamentai / butas", + "nl": "Vakantieappartement", + "pl": "Mieszkanie na wynajem", + "pt-BR": "Apartamento de Temporada", + "pt": "Apartamento de alojamento local", + "ro": "Apartament de Închiriat", + "ru": "Гостевые апартаменты/квартира", + "sl": "Apartma / Gostišče", + "sr": "Гостински апартман", + "sv": "Turistlägenhet", + "tr": "Misafir Apartmanı", + "uk": "Мебльована квартира/Комплекс", + "vi": "Khu chung cư Nghỉ dưỡng", + "zh-CN": "出租公寓", + "zh-HK": "民宿公寓 / 短租公寓", + "zh-TW": "假日公寓", + "mk": "Пансион", + "he": "דירה לאורחים" + } + }, + "tourism/aquarium": { + "title": { + "C": "Aquarium", + "en": "Aquarium", + "ar": "حوض سمك", + "ast": "Acuariu", + "cs": "Akvárium", + "da": "Akvarium", + "de": "Aquarium", + "el": "Ενυδρείο", + "en-GB": "Aquarium", + "eo": "Akvario", + "es": "Acuario", + "et": "Akvaarium", + "fa": "آکواریوم", + "fi": "Akvaario", + "fr": "Aquarium", + "gl": "Acuario", + "hr": "Akvarij", + "hu": "Akvárium", + "is": "Sædýrasafn", + "it": "Acquario", + "ja": "水族館", + "ko": "아쿠아리움", + "lt": "Akvariumas", + "lv": "Akvārijs", + "nl": "Aquarium", + "no": "Akvarium", + "pl": "Akwarium", + "pt-BR": "Aquário", + "pt": "Aquário público", + "ro": "Acvariu", + "ru": "Аквариум", + "sk": "Akvárium", + "sl": "Akvarij", + "sr": "Акваријум", + "sv": "Akvarium", + "ta": "மீன் காட்சியகம்", + "tr": "Akvaryum", + "uk": "Акваріум", + "vi": "Thủy cung", + "zh-CN": "水族馆", + "zh-HK": "水族館", + "zh-TW": "水族館(展覽館)", + "mk": "Аквариум", + "he": "אקווריום", + "ms": "Akuarium" + } + }, + "tourism/wilderness_hut": { + "title": { + "C": "Wilderness Hut", + "en": "Wilderness Hut", + "cs": "Chata v divočině", + "da": "Vildmarkshytte", + "de": "unbewirtschaftete Schutzhütte", + "el": "Ερημική Καλύβα", + "en-GB": "Wilderness Hut", + "eo": "Sovaĝeja kabano", + "es": "Refugio de paraje natural", + "fi": "Autiotupa", + "fr": "Refuge de bivouac", + "hr": "Planinarsko sklonište", + "hu": "Menedékház (személyzet nélkül)", + "is": "Óbyggðakofi", + "it": "Bivacco", + "ja": "避難小屋", + "ko": "황야 막사", + "nl": "Onbemande hut in wildernis", + "no": "Villmarkshytta", + "pl": "Odosobniona chata-schronienie dla turystów", + "pt-BR": "Abrigo Isolado", + "pt": "Abrigo remoto", + "ru": "Охотничий домик", + "sk": "Chata divočiny", + "sv": "Stuga (för vandrare o.d.)", + "uk": "Лісова хатинка", + "vi": "Lều trú", + "zh-CN": "野外住宿小屋", + "zh-TW": "野外小屋", + "mk": "Колиба во дивина", + "he": "בקתת טבע" + } + }, + "tourism/trail_riding_station": { + "title": { + "C": "Trail Riding Station", + "en": "Trail Riding Station", + "cs": "Stanice jízdy na koni", + "de": "Wanderreitstation", + "el": "Σταθμός Ιππασίας", + "en-GB": "Trail Riding Station", + "eo": "Pensiono por ĉevalistoj", + "es": "Estación en sendero de cabalgata", + "fa": "ایستگاه مسیر گذر / پیاده‌روی", + "fr": "Station équestre", + "it": "Stazione di sosta per cavalli", + "ja": "乗馬トレール乗り場", + "nl": "Ruiterlogies", + "pl": "Konny ośrodek wypoczynkowy", + "pt-BR": "Estação de Hipismo de Trilha", + "pt": "Posto de repouso equestre", + "ru": "Временное жильё для лошадей и наездников", + "sv": "Turridningsstation", + "uk": "Місце відпочинку для коней та вершників", + "vi": "Chuồng Ngựa Tạm thời", + "zh-TW": "騎馬車站", + "mk": "Конак за рекреативни јавачи", + "he": "תחנת רכיבה" + } + }, + "tourism/camp_pitch": { + "title": { + "C": "Camp Pitch", + "en": "Camp Pitch", + "cs": "místo pro stan/karavan", + "de": "Zeltplatz/Wohnwagenplatz", + "eo": "Loko por kampadveturilo/tendo", + "es": "Lugar para acampar", + "fi": "Leirintäalueen kenttä", + "fr": "Parcelle dans un camping", + "gl": "Lugar de campismo", + "hu": "Táborhely", + "ja": "キャンプ区画(キャンプ場内)", + "ko": "캠핑장 구역", + "pl": "Miejsce na kempingu", + "pt-BR": "Acampamento de arremesso", + "pt": "Alvéolo de parque de campismo", + "sr": "Камп-место", + "sv": "Tältplats/husvagnsplats", + "uk": "Місце під намет", + "zh-TW": "營地", + "mk": "Логориште", + "he": "מאהל" + } + } +} diff --git a/data/screenshots/maps-main.jpg b/data/screenshots/maps-main.jpg new file mode 100644 index 00000000..1dee544c Binary files /dev/null and b/data/screenshots/maps-main.jpg differ diff --git a/data/screenshots/maps-main.png b/data/screenshots/maps-main.png new file mode 100644 index 00000000..c4ca0dd7 Binary files /dev/null and b/data/screenshots/maps-main.png differ diff --git a/data/screenshots/maps-pinpoint.jpg b/data/screenshots/maps-pinpoint.jpg new file mode 100644 index 00000000..8e70da57 Binary files /dev/null and b/data/screenshots/maps-pinpoint.jpg differ diff --git a/data/screenshots/maps-pinpoint.png b/data/screenshots/maps-pinpoint.png new file mode 100644 index 00000000..5644184e Binary files /dev/null and b/data/screenshots/maps-pinpoint.png differ diff --git a/data/screenshots/maps-route.jpg b/data/screenshots/maps-route.jpg new file mode 100644 index 00000000..20be37b2 Binary files /dev/null and b/data/screenshots/maps-route.jpg differ diff --git a/data/screenshots/maps-route.png b/data/screenshots/maps-route.png new file mode 100644 index 00000000..1e8e62f4 Binary files /dev/null and b/data/screenshots/maps-route.png differ diff --git a/data/ui/account-row.ui b/data/ui/account-row.ui new file mode 100644 index 00000000..60afd7c6 --- /dev/null +++ b/data/ui/account-row.ui @@ -0,0 +1,76 @@ + + + + + diff --git a/data/ui/check-in-dialog.ui b/data/ui/check-in-dialog.ui new file mode 100644 index 00000000..7050a0d0 --- /dev/null +++ b/data/ui/check-in-dialog.ui @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + EVERYONE + Everyone + + + FRIENDS_OF_FRIENDS + Friends of friends + + + ALL_FRIENDS + Just friends + + + SELF + Just me + + + + + + + + + + + + + public + Public + + + followers + Followers + + + private + Private + + + + diff --git a/data/ui/context-menu.ui b/data/ui/context-menu.ui new file mode 100644 index 00000000..7fcb6734 --- /dev/null +++ b/data/ui/context-menu.ui @@ -0,0 +1,56 @@ + + + + + diff --git a/data/ui/export-view-dialog.ui b/data/ui/export-view-dialog.ui new file mode 100644 index 00000000..993a5339 --- /dev/null +++ b/data/ui/export-view-dialog.ui @@ -0,0 +1,146 @@ + + + + + diff --git a/data/ui/favorites-popover.ui b/data/ui/favorites-popover.ui new file mode 100644 index 00000000..7ee1bbb6 --- /dev/null +++ b/data/ui/favorites-popover.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/headerbar-left.ui b/data/ui/headerbar-left.ui new file mode 100644 index 00000000..f64b250f --- /dev/null +++ b/data/ui/headerbar-left.ui @@ -0,0 +1,90 @@ + + + + + + diff --git a/data/ui/headerbar-right.ui b/data/ui/headerbar-right.ui new file mode 100644 index 00000000..e2178a8a --- /dev/null +++ b/data/ui/headerbar-right.ui @@ -0,0 +1,75 @@ + + + + + + diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui new file mode 100644 index 00000000..c2056092 --- /dev/null +++ b/data/ui/help-overlay.ui @@ -0,0 +1,117 @@ + + + + 1 + + + 1 + + 10 + + + 1 + General + + + 1 + Show Shortcuts + <Primary>question + + + + + 1 + Search + <Primary>F + + + + + 1 + Toggle route planner + <Primary>D + + + + + 1 + Print route + <Primary>P + + + + + 1 + Quit + <Primary>Q + + + + + 1 + Open main menu + F10 + + + + + + + 1 + Map View + + + 1 + Zoom in + plus equal + + + + + 1 + Zoom out + minus + + + + + 1 + Toggle scale + <Primary>S + + + + + 1 + Go to current location + <Primary>L + + + + + 1 + Switch to street view + <Primary>1 + + + + + 1 + Switch to aerial view + <Primary>2 + + + + + 1 + Open shape layer + <Primary>O + + + + + + + + diff --git a/data/ui/instruction-row.ui b/data/ui/instruction-row.ui new file mode 100644 index 00000000..95254773 --- /dev/null +++ b/data/ui/instruction-row.ui @@ -0,0 +1,74 @@ + + + + + diff --git a/data/ui/layers-popover.ui b/data/ui/layers-popover.ui new file mode 100644 index 00000000..423c4a86 --- /dev/null +++ b/data/ui/layers-popover.ui @@ -0,0 +1,113 @@ + + + + + diff --git a/data/ui/location-service-dialog.ui b/data/ui/location-service-dialog.ui new file mode 100644 index 00000000..0c3ae660 --- /dev/null +++ b/data/ui/location-service-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/data/ui/main-window.ui b/data/ui/main-window.ui new file mode 100644 index 00000000..cb884538 --- /dev/null +++ b/data/ui/main-window.ui @@ -0,0 +1,160 @@ + + + + +
    + + app.night-mode + Night Mode + + + app.osm-account-setup + Set up OpenStreetMap Account + + + win.export-as-image + Export as Image + +
    +
    + + _Keyboard Shortcuts + win.show-help-overlay + + + win.about + About Maps + +
    +
    + +
    + diff --git a/data/ui/map-bubble.ui b/data/ui/map-bubble.ui new file mode 100644 index 00000000..06bf37fb --- /dev/null +++ b/data/ui/map-bubble.ui @@ -0,0 +1,148 @@ + + + + + + True + False + 8 + 10 + 10 + 10 + 10 + vertical + + + True + False + 15 + + + 1 + 0 + 2 + + + + + True + False + 10 + 15 + GTK_ALIGN_END + + + True + False + horizontal + 5 + + + bubble-route-button + False + True + False + Add to new route + + + True + False + route-button-symbolic + 1 + + + + + + + bubble-send-to-button + False + True + False + Share location + + + True + False + send-to-symbolic + 16 + + + + + + + bubble-favorite-button + False + True + False + Mark as favorite + + + bubble-favorite-button-image + True + False + starred-symbolic + 16 + + + + + + + C_heck in + False + True + False + True + Check in here + + + + + 0 + 0 + + + + + 1 + 1 + + + + + True + GTK_STACK_TRANSITION_TYPE_CROSSFADE + + + True + False + start + 0 + 16 + + + icon + + + + + True + False + start + 0 + 16 + + + thumbnail + + + + + 2 + 1 + + + + diff --git a/data/ui/open-with-row.ui b/data/ui/open-with-row.ui new file mode 100644 index 00000000..d236a2a8 --- /dev/null +++ b/data/ui/open-with-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-account-dialog.ui b/data/ui/osm-account-dialog.ui new file mode 100644 index 00000000..8cddfeca --- /dev/null +++ b/data/ui/osm-account-dialog.ui @@ -0,0 +1,319 @@ + + + + + diff --git a/data/ui/osm-edit-address.ui b/data/ui/osm-edit-address.ui new file mode 100644 index 00000000..1a36f87a --- /dev/null +++ b/data/ui/osm-edit-address.ui @@ -0,0 +1,59 @@ + + + + + diff --git a/data/ui/osm-edit-dialog.ui b/data/ui/osm-edit-dialog.ui new file mode 100644 index 00000000..ba059ee6 --- /dev/null +++ b/data/ui/osm-edit-dialog.ui @@ -0,0 +1,353 @@ + + + + + + False + + + True + GTK_ORIENTATION_VERTICAL + + + + + False + GTK_POS_BOTTOM + + + True + 5 + + + True + True + 20 + 40 + + + + + + diff --git a/data/ui/osm-type-list-row.ui b/data/ui/osm-type-list-row.ui new file mode 100644 index 00000000..05fbb6ac --- /dev/null +++ b/data/ui/osm-type-list-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-type-popover.ui b/data/ui/osm-type-popover.ui new file mode 100644 index 00000000..4ae9e7fb --- /dev/null +++ b/data/ui/osm-type-popover.ui @@ -0,0 +1,16 @@ + + + + + diff --git a/data/ui/osm-type-search-entry.ui b/data/ui/osm-type-search-entry.ui new file mode 100644 index 00000000..db292a76 --- /dev/null +++ b/data/ui/osm-type-search-entry.ui @@ -0,0 +1,10 @@ + + + + + diff --git a/data/ui/place-bubble.ui b/data/ui/place-bubble.ui new file mode 100644 index 00000000..5689792f --- /dev/null +++ b/data/ui/place-bubble.ui @@ -0,0 +1,127 @@ + + + + + + True + + + True + True + + + + + True + False + 5 + + + True + False + vertical + + + True + 10 + + + True + False + start + True + True + + + + + + 10 + True + + + True + True + GTK_ALIGN_START + GTK_ALIGN_CENTER + Edit on OpenStreetMap + + + True + False + document-edit-symbolic + 16 + + + + + + + + + + True + True + GTK_ALIGN_START + GTK_ALIGN_CENTER + Show more information + + + True + False + view-more-symbolic + 16 + + + + + + + + + + True + False + vertical + + + + + + True + False + start + True + 5 + + + True + False + start + True + 5 + + + + + + + + + + + diff --git a/data/ui/place-entry.ui b/data/ui/place-entry.ui new file mode 100644 index 00000000..417e42d2 --- /dev/null +++ b/data/ui/place-entry.ui @@ -0,0 +1,23 @@ + + + + + 2 + + + 2 + + + 0 + + + + + 4 + + + 2 + + + + diff --git a/data/ui/place-list-row.ui b/data/ui/place-list-row.ui new file mode 100644 index 00000000..f3d2bf09 --- /dev/null +++ b/data/ui/place-list-row.ui @@ -0,0 +1,83 @@ + + + + + + + diff --git a/data/ui/place-popover.ui b/data/ui/place-popover.ui new file mode 100644 index 00000000..e04114bb --- /dev/null +++ b/data/ui/place-popover.ui @@ -0,0 +1,79 @@ + + + + + diff --git a/data/ui/route-entry.ui b/data/ui/route-entry.ui new file mode 100644 index 00000000..b186e453 --- /dev/null +++ b/data/ui/route-entry.ui @@ -0,0 +1,50 @@ + + + + + diff --git a/data/ui/search-result-bubble.ui b/data/ui/search-result-bubble.ui new file mode 100644 index 00000000..c6f2b6a5 --- /dev/null +++ b/data/ui/search-result-bubble.ui @@ -0,0 +1,40 @@ + + + + + + True + + + True + True + + + + + True + False + vertical + + + + True + False + start + True + + + + False + True + 0 + + + + + + diff --git a/data/ui/send-to-dialog.ui b/data/ui/send-to-dialog.ui new file mode 100644 index 00000000..c5192b6d --- /dev/null +++ b/data/ui/send-to-dialog.ui @@ -0,0 +1,158 @@ + + + + + + diff --git a/data/ui/shape-layer-file-chooser.ui b/data/ui/shape-layer-file-chooser.ui new file mode 100644 index 00000000..383a2df5 --- /dev/null +++ b/data/ui/shape-layer-file-chooser.ui @@ -0,0 +1,30 @@ + + + + diff --git a/data/ui/shape-layer-row.ui b/data/ui/shape-layer-row.ui new file mode 100644 index 00000000..0a2ad8d1 --- /dev/null +++ b/data/ui/shape-layer-row.ui @@ -0,0 +1,62 @@ + + + + diff --git a/data/ui/sidebar.ui b/data/ui/sidebar.ui new file mode 100644 index 00000000..ab7b3890 --- /dev/null +++ b/data/ui/sidebar.ui @@ -0,0 +1,444 @@ + + + + + + + False + + + True + + + True + 5 + 5 + 5 + 5 + Routing itineraries for public transit is provided by third-party +services. +GNOME can not guarantee correctness of the itineraries and schedules shown. +Note that some providers might not include all available modes of transportation, +e.g. a national provider might not include airlines, and a local provider could +miss regional trains. +Names and brands shown are to be considered as registered trademarks when applicable. + + + + + + + True + False + + + + True + 6 + 6 + 4 + 4 + GTK_ALIGN_START + + + True + GTK_ALIGN_CENTER + + + True + False + False + go-previous-symbolic + + + + + + + 0 + 0 + + + + + True + 6 + 6 + 4 + 4 + False + GTK_ALIGN_START + + + 1 + 0 + + + + + True + 6 + 6 + 4 + 4 + True + GTK_ALIGN_START + + + + 2 + 0 + + + + diff --git a/data/ui/social-place-more-results-row.ui b/data/ui/social-place-more-results-row.ui new file mode 100644 index 00000000..2dcca7fa --- /dev/null +++ b/data/ui/social-place-more-results-row.ui @@ -0,0 +1,22 @@ + + + + + diff --git a/data/ui/social-place-row.ui b/data/ui/social-place-row.ui new file mode 100644 index 00000000..623c92af --- /dev/null +++ b/data/ui/social-place-row.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/transit-arrival-row.ui b/data/ui/transit-arrival-row.ui new file mode 100644 index 00000000..d1cb21e2 --- /dev/null +++ b/data/ui/transit-arrival-row.ui @@ -0,0 +1,77 @@ + + + + + diff --git a/data/ui/transit-itinerary-row.ui b/data/ui/transit-itinerary-row.ui new file mode 100644 index 00000000..d4be5468 --- /dev/null +++ b/data/ui/transit-itinerary-row.ui @@ -0,0 +1,66 @@ + + + + + diff --git a/data/ui/transit-leg-row.ui b/data/ui/transit-leg-row.ui new file mode 100644 index 00000000..c7eaa268 --- /dev/null +++ b/data/ui/transit-leg-row.ui @@ -0,0 +1,255 @@ + + + + + diff --git a/data/ui/transit-more-row.ui b/data/ui/transit-more-row.ui new file mode 100644 index 00000000..7de5b98a --- /dev/null +++ b/data/ui/transit-more-row.ui @@ -0,0 +1,40 @@ + + + + diff --git a/data/ui/transit-options-panel.ui b/data/ui/transit-options-panel.ui new file mode 100644 index 00000000..a11acfa0 --- /dev/null +++ b/data/ui/transit-options-panel.ui @@ -0,0 +1,159 @@ + + + + False + + + True + + + + + False + + + True + 6 + GTK_ORIENTATION_VERTICAL + + + True + GTK_ALIGN_START + Show + 6 + + + + + + True + True + Buses + + + + + True + True + Trams + + + + + True + True + Trains + + + + + True + True + Subway + + + + + True + True + Ferries + + + + + True + True + Airplanes + + + + + + + diff --git a/data/ui/transit-route-label.ui b/data/ui/transit-route-label.ui new file mode 100644 index 00000000..423f7826 --- /dev/null +++ b/data/ui/transit-route-label.ui @@ -0,0 +1,20 @@ + + + + + diff --git a/data/ui/transit-stop-row.ui b/data/ui/transit-stop-row.ui new file mode 100644 index 00000000..8f6aa214 --- /dev/null +++ b/data/ui/transit-stop-row.ui @@ -0,0 +1,55 @@ + + + + diff --git a/data/ui/user-location-bubble.ui b/data/ui/user-location-bubble.ui new file mode 100644 index 00000000..9bf448b6 --- /dev/null +++ b/data/ui/user-location-bubble.ui @@ -0,0 +1,54 @@ + + + + + + True + False + + + True + False + start + Current location + + + + 0 + 0 + + + + + True + False + start + + + + 0 + 1 + + + + + True + False + start + 3 + True + + + + 0 + 2 + + + + diff --git a/data/ui/zoom-in-dialog.ui b/data/ui/zoom-in-dialog.ui new file mode 100644 index 00000000..359dd46c --- /dev/null +++ b/data/ui/zoom-in-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/gnome-maps.doap b/gnome-maps.doap new file mode 100644 index 00000000..270faede --- /dev/null +++ b/gnome-maps.doap @@ -0,0 +1,29 @@ + + + gnome-maps + A simple GNOME 3 maps application + Map application based on OpenStreetMap map data + + JavaScript + + + + + + + + + Marcus Lundblad + + mlundblad + + + diff --git a/lib/maps-contact-store.c b/lib/maps-contact-store.c new file mode 100644 index 00000000..227fc5f7 --- /dev/null +++ b/lib/maps-contact-store.c @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + + +#include +#include + +#include "maps-contact-store.h" +#include "maps-contact.h" +#include "maps-enum-types.h" + +struct _MapsContactStorePrivate +{ + GList *list; + MapsContactStoreState state; + FolksIndividualAggregator *aggregator; +}; + +enum { + PROP_0, + + PROP_STATE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContactStore, maps_contact_store, G_TYPE_OBJECT) + +static void +maps_contact_store_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContactStore *store = MAPS_CONTACT_STORE (object); + + switch (property_id) + { + case PROP_STATE: + g_value_set_enum (value, + store->priv->state); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_store_dispose (GObject *object) +{ + MapsContactStore *store = (MapsContactStore *) object; + + g_clear_pointer (&store->priv->list, g_list_free); + g_clear_object (&store->priv->aggregator); + + G_OBJECT_CLASS (maps_contact_store_parent_class)->dispose (object); +} + +static void +maps_contact_store_class_init (MapsContactStoreClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_store_dispose; + maps_class->get_property = maps_contact_store_get_property; + + /** + * MapsContactStore:state: + * + * The current loading state of the contact store. + */ + pspec = g_param_spec_enum ("state", + "State", + "State", + MAPS_TYPE_CONTACT_STORE_STATE, + MAPS_CONTACT_STORE_STATE_INITIAL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_STATE, pspec); +} + +static void +maps_contact_store_init (MapsContactStore *store) +{ + store->priv = maps_contact_store_get_instance_private (store); + store->priv->list = NULL; + store->priv->state = MAPS_CONTACT_STORE_STATE_INITIAL; +} + +static MapsContact * +get_contact (FolksIndividual *individual) +{ + MapsContact *contact; + GLoadableIcon *avatar; + GeeCollection *addresses; + GeeIterator *iter; + + g_object_get (G_OBJECT (individual), "postal-addresses", + &addresses, NULL); + if (!addresses) + return NULL; + + iter = gee_iterable_iterator (GEE_ITERABLE (addresses)); + if (!gee_iterator_has_next (iter)) + { + g_object_unref (iter); + return NULL; + } + + contact = maps_contact_new (); + + g_object_set (G_OBJECT (contact), "name", + folks_individual_get_display_name (individual), NULL); + g_object_set (G_OBJECT (contact), "id", + folks_individual_get_id (individual), NULL); + + g_object_get (G_OBJECT (individual), "avatar", + &avatar, NULL); + g_object_set (G_OBJECT (contact), "icon", + avatar, NULL); + + while (gee_iterator_has_next (iter)) + { + GeocodePlace *place; + FolksPostalAddress *addr; + FolksAbstractFieldDetails *details; + GeeMultiMap *map; + GeeSet *keys; + GeeIterator *keys_iter; + char *name; + char *type = "Unknown"; + + gee_iterator_next (iter); + details = gee_iterator_get (iter); + addr = (FolksPostalAddress *) folks_abstract_field_details_get_value (details); + + /* Get the type of the address, such as "Home", "Work", "Other" */ + map = folks_abstract_field_details_get_parameters (details); + keys = gee_multi_map_get_keys (map); + keys_iter = gee_iterable_iterator (GEE_ITERABLE (keys)); + if (gee_iterator_has_next (keys_iter)) + { + GeeCollection *values; + GeeIterator *values_iter; + + gee_iterator_next (keys_iter); + values = gee_multi_map_get (map, + gee_iterator_get (keys_iter)); + if (gee_collection_get_size (values) != 0) + { + values_iter = gee_iterable_iterator (GEE_ITERABLE (values)); + gee_iterator_next (values_iter); + type = gee_iterator_get (values_iter); + } + } + if (gee_collection_get_size (addresses) > 1) + { + name = g_strdup_printf ("%s (%s)", + folks_individual_get_display_name (individual), + type); + } + else + { + name = g_strdup (folks_individual_get_display_name (individual)); + } + place = geocode_place_new (name, GEOCODE_PLACE_TYPE_STREET); + g_free (name); + + geocode_place_set_country (place, + folks_postal_address_get_country (addr)); + geocode_place_set_state (place, + folks_postal_address_get_region (addr)); + geocode_place_set_postal_code (place, + folks_postal_address_get_postal_code (addr)); + geocode_place_set_town (place, + folks_postal_address_get_locality (addr)); + geocode_place_set_street_address (place, + folks_postal_address_get_street (addr)); + + maps_contact_add_place (contact, place); + } + g_object_unref (iter); + + return contact; +} + +MapsContactStore * +maps_contact_store_new () +{ + return g_object_new (MAPS_TYPE_CONTACT_STORE, NULL); +} + +static void +maps_contact_store_lookup_cb (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + MapsContactStoreLookupCallback callback) +{ + FolksIndividual *individual; + + individual = folks_individual_aggregator_look_up_individual_finish (aggregator, + res, + NULL); + if (individual != NULL) + { + MapsContact *contact = get_contact (individual); + callback (contact); + } + else + { + callback (NULL); + } +} + +/** + * maps_contact_store_lookup: + * @store: A #MapsContactStore object + * @callback: (scope async): A #MapsContactStoreLookupCallback function + */ +void +maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback) +{ + folks_individual_aggregator_look_up_individual (store->priv->aggregator, + id, + (GAsyncReadyCallback) maps_contact_store_lookup_cb, + callback); +} + +static void +aggregator_quiescent_notify (FolksIndividualAggregator *aggregator, + GParamSpec *pspec, + MapsContactStore *store) +{ + GeeMap *map; + GeeMapIterator *iter; + + map = folks_individual_aggregator_get_individuals (aggregator); + iter = gee_map_map_iterator (map); + + while (gee_map_iterator_has_next (iter)) + { + MapsContact *contact; + + gee_map_iterator_next (iter); + contact = get_contact (gee_map_iterator_get_value (iter)); + if (contact) + store->priv->list = g_list_prepend (store->priv->list, contact); + } + g_clear_object (&iter); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADED; + g_object_notify (G_OBJECT (store), "state"); +} + +static void +aggregator_prepare (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + gpointer user_data) +{ + folks_individual_aggregator_prepare_finish (aggregator, res, NULL); +} + +/** + * maps_contact_store_load: + * @store: A #MapsContactStore object + * + * Load contacts from available backends. + * + */ +void +maps_contact_store_load (MapsContactStore *store) +{ + g_return_if_fail (MAPS_IS_CONTACT_STORE (store)); + + store->priv->aggregator = folks_individual_aggregator_dup (); + + g_signal_connect (G_OBJECT (store->priv->aggregator), + "notify::is-quiescent", + G_CALLBACK (aggregator_quiescent_notify), + store); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADING; + g_object_notify (G_OBJECT (store), "state"); + + folks_individual_aggregator_prepare (store->priv->aggregator, + (GAsyncReadyCallback) aggregator_prepare, + NULL); +} + +/** + * maps_contact_store_get_contacts: + * @store: A #MapsContactStore object + * + * Returns: (element-type MapsContact) (transfer none): a list of #MapsContact, + */ +GList * +maps_contact_store_get_contacts (MapsContactStore *store) +{ + g_return_val_if_fail (MAPS_IS_CONTACT_STORE (store), NULL); + + return store->priv->list; +} diff --git a/lib/maps-contact-store.h b/lib/maps-contact-store.h new file mode 100644 index 00000000..3bbf2cbc --- /dev/null +++ b/lib/maps-contact-store.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_STORE_H__ +#define __MAPS_CONTACT_STORE_H__ + +#include +#include "maps-contact.h" + +#define MAPS_TYPE_CONTACT_STORE maps_contact_store_get_type () +G_DECLARE_FINAL_TYPE(MapsContactStore, maps_contact_store, MAPS, CONTACT_STORE, + GObject) + +typedef struct _MapsContactStorePrivate MapsContactStorePrivate; + +/** + * MapsContactStoreState: + * @MAPS_CONTACT_STORE_STATE_INITIAL: Initial state + * @MAPS_CONTACT_STORE_STATE_LOADING: Loading + * @MAPS_CONTACT_STORE_STATE_LOADED: Loaded + */ +typedef enum { + MAPS_CONTACT_STORE_STATE_INITIAL, + MAPS_CONTACT_STORE_STATE_LOADING, + MAPS_CONTACT_STORE_STATE_LOADED, +} MapsContactStoreState; + +/** + * MapsContactStoreLookupCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactStoreLookupCallback) (MapsContact *contact); + +struct _MapsContactStore +{ + GObject parent_instance; + MapsContactStorePrivate *priv; +}; + +struct _MapsContactStoreClass +{ + GObjectClass parent_class; +}; + +MapsContactStore * maps_contact_store_new (void); +void maps_contact_store_load (MapsContactStore *store); +void maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback); +GList * maps_contact_store_get_contacts (MapsContactStore *store); + +#endif diff --git a/lib/maps-contact.c b/lib/maps-contact.c new file mode 100644 index 00000000..a842a5a9 --- /dev/null +++ b/lib/maps-contact.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include + +#include "maps-contact.h" + +struct _MapsContactPrivate +{ + char *name; + char *id; + + GLoadableIcon *icon; + GList *places; + ChamplainBoundingBox *bbox; + + GMutex geocode_mutex; + guint geocode_counter; + guint geocodes_to_perform; +}; + +typedef struct +{ + GeocodePlace *place; + MapsContact *contact; + MapsContactGeocodeCallback callback; + + GHashTable *params; +} GeocodeData; + +enum { + PROP_0, + + PROP_NAME, + PROP_ICON, + PROP_ID, + PROP_BBOX +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContact, maps_contact, G_TYPE_OBJECT) + +static void +maps_contact_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_free (contact->priv->name); + contact->priv->name = g_value_dup_string (value); + break; + + case PROP_ICON: + if (contact->priv->icon) + g_object_unref (contact->priv->icon); + contact->priv->icon = g_value_dup_object (value); + break; + + case PROP_ID: + g_free (contact->priv->id); + contact->priv->id = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_value_set_string (value, + contact->priv->name); + break; + + case PROP_ICON: + g_value_set_object (value, + contact->priv->icon); + break; + + case PROP_ID: + g_value_set_string (value, + contact->priv->id); + break; + + case PROP_BBOX: + g_value_set_boxed (value, + contact->priv->bbox); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_dispose (GObject *object) +{ + MapsContact *contact = (MapsContact *) object; + + g_clear_pointer (&contact->priv->name, g_free); + g_clear_pointer (&contact->priv->id, g_free); + g_clear_object (&contact->priv->icon); + g_clear_object (&contact->priv->bbox); + g_list_free_full (contact->priv->places, g_object_unref); + + G_OBJECT_CLASS (maps_contact_parent_class)->dispose (object); +} + +static void +maps_contact_class_init (MapsContactClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_dispose; + maps_class->get_property = maps_contact_get_property; + maps_class->set_property = maps_contact_set_property; + + /** + * MapsContact:name: + * + * The name of the contact. + */ + pspec = g_param_spec_string ("name", + "Name", + "Name", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_NAME, pspec); + + /** + * MapsContact:id: + * + * The unique id of the contact. + */ + pspec = g_param_spec_string ("id", + "ID", + "ID", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsContact:icon: + * + * The icon of the contact. + */ + pspec = g_param_spec_object ("icon", + "Icon", + "An icon representing the contact", + G_TYPE_ICON, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ICON, pspec); + + /** + * MapsContact:bounding-box: + * + * The bounding box for the contact. + */ + pspec = g_param_spec_boxed ("bounding-box", + "Bounding Box", + "The bounding box for the place", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_BBOX, pspec); +} + +static void +maps_contact_init (MapsContact *contact) +{ + contact->priv = maps_contact_get_instance_private (contact); + + contact->priv->name = NULL; + contact->priv->id = NULL; + contact->priv->icon = NULL; + contact->priv->places = NULL; + contact->priv->bbox = NULL; + + g_mutex_init (&contact->priv->geocode_mutex); +} + +/** + * maps_contact_add_address: + * @contact: A #MapsContact object + * @place: A #GeocodePlace object + */ +void +maps_contact_add_place (MapsContact *contact, + GeocodePlace *place) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (GEOCODE_IS_PLACE (place)); + + contact->priv->places = g_list_prepend (contact->priv->places, place); +} + +/** + * maps_contact_get_places: + * @contact: A #MapsContact object + * + * Returns: (element-type GeocodePlace) (transfer container): a list of #GeocodePlace + */ +GList * +maps_contact_get_places (MapsContact *contact) +{ + g_return_val_if_fail (MAPS_IS_CONTACT (contact), NULL); + + return contact->priv->places; +} + +static void +on_geocode_search_async (GeocodeForward *forward, + GAsyncResult *res, + GeocodeData *data) +{ + MapsContact *contact; + GList *places; + gboolean call_callback = FALSE; + + contact = data->contact; + places = geocode_forward_search_finish (forward, res, NULL); + + g_mutex_lock (&contact->priv->geocode_mutex); + + if (places) + { + GeocodePlace *place = g_list_nth_data (places, 0); + GeocodeLocation *location = geocode_place_get_location (place); + const char *street_address; + const char *street; + + /* Keep the naming, but add location and osm info */ + geocode_place_set_location (data->place, location); + g_object_set (G_OBJECT (data->place), "osm-type", + geocode_place_get_osm_type (place), NULL); + g_object_set (G_OBJECT (data->place), "osm-id", + geocode_place_get_osm_id (place), NULL); + + /* Update the contact bounding box */ + if (contact->priv->bbox == NULL) + contact->priv->bbox = champlain_bounding_box_new (); + + champlain_bounding_box_extend (contact->priv->bbox, + geocode_location_get_latitude (location), + geocode_location_get_longitude (location)); + + /* Make sure we do not lie about how good our resolution is */ + street_address = geocode_place_get_street_address (place); + street = geocode_place_get_street (place); + if (street_address) + geocode_place_set_street_address (data->place, street); + else if (street) + geocode_place_set_street (data->place, street); + + g_list_free_full(places, g_object_unref); + } + + contact->priv->geocode_counter++; + if (contact->priv->geocode_counter == contact->priv->geocodes_to_perform) + call_callback = TRUE; + + g_mutex_unlock (&contact->priv->geocode_mutex); + + g_hash_table_destroy (data->params); + + if (call_callback) + data->callback (contact); +} + +static void add_attribute (GHashTable *ht, + const char *key, + const char *s) +{ + GValue *value; + value = g_new0 (GValue, 1); + g_value_init (value, G_TYPE_STRING); + g_value_set_static_string (value, s); + g_hash_table_insert (ht, g_strdup (key), value); +} + +/** + * maps_contact_geocode: + * @contact: A #MapsContact object + * @callback: (scope async): A #MapsContactGeocodeCallback function + */ +void +maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (callback != NULL); + + GList *l; + + contact->priv->geocode_counter = 0; + contact->priv->geocodes_to_perform = g_list_length (contact->priv->places); + + for (l = contact->priv->places; l != NULL; l = l->next) { + GeocodeData *data; + GeocodeForward *forward; + + data = g_slice_new (GeocodeData); + data->contact = contact; + data->place = l->data; + data->callback = callback; + data->params = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + add_attribute (data->params, "street", + geocode_place_get_street_address (data->place)); + add_attribute (data->params, "locality", + geocode_place_get_town (data->place)); + add_attribute (data->params, "region", + geocode_place_get_state (data->place)); + add_attribute (data->params, "country", + geocode_place_get_country (data->place)); + + forward = geocode_forward_new_for_params (data->params); + geocode_forward_search_async (forward, + NULL, + (GAsyncReadyCallback) on_geocode_search_async, + data); + } +} + +MapsContact * +maps_contact_new () +{ + return g_object_new (MAPS_TYPE_CONTACT, NULL); +} diff --git a/lib/maps-contact.h b/lib/maps-contact.h new file mode 100644 index 00000000..d036faf2 --- /dev/null +++ b/lib/maps-contact.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_H__ +#define __MAPS_CONTACT_H__ + +#include +#include + +#define MAPS_TYPE_CONTACT maps_contact_get_type () +G_DECLARE_FINAL_TYPE(MapsContact, maps_contact, MAPS, CONTACT, GObject) + +typedef struct _MapsContactPrivate MapsContactPrivate; + +/** + * MapsContactGeocodeCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactGeocodeCallback) (MapsContact *contact); + +struct _MapsContact +{ + GObject parent_instance; + MapsContactPrivate *priv; +}; + +struct _MapsContactClass +{ + GObjectClass parent_class; +}; + +MapsContact *maps_contact_new (void); +void maps_contact_add_place (MapsContact *contact, + GeocodePlace *place); +GList * maps_contact_get_places (MapsContact *contact); +void maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback); +#endif diff --git a/lib/maps-enum-types.c.template b/lib/maps-enum-types.c.template new file mode 100644 index 00000000..188506a0 --- /dev/null +++ b/lib/maps-enum-types.c.template @@ -0,0 +1,31 @@ +/*** BEGIN file-header ***/ +#include "maps-enum-types.h" + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (etype == 0) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static ("@EnumName@", values); + } + return etype; +} + +/*** END value-tail ***/ diff --git a/lib/maps-enum-types.h.template b/lib/maps-enum-types.h.template new file mode 100644 index 00000000..14171b23 --- /dev/null +++ b/lib/maps-enum-types.h.template @@ -0,0 +1,36 @@ +/*** BEGIN file-header ***/ +#ifndef __MAPS_ENUM_TYPES_H__ +#define __MAPS_ENUM_TYPES_H__ + +#include "maps.h" + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; + +#define MAPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) + +/** + * SECTION:maps-enum-types + * @short_description: Maps enumerated types + * @include: maps.h + * + * The enumerated types defined and used by libgnome-maps. + **/ + +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __MAPS_ENUM_TYPES_H__ */ + +/*** END file-tail ***/ diff --git a/lib/maps-file-tile-source.c b/lib/maps-file-tile-source.c new file mode 100644 index 00000000..61e5f060 --- /dev/null +++ b/lib/maps-file-tile-source.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include +#include +#include +#include + +#include "mapsintl.h" +#include "maps-file-tile-source.h" + +#define MAPS_FILE_TILE_SOURCE_ERROR maps_file_tile_source_error_quark () + +GQuark +maps_file_tile_source_error_quark (void) +{ + return g_quark_from_static_string ("maps-file-tile-source-error"); +} + +enum { + PROP_0, + + PROP_PATH, + PROP_MAX_ZOOM, + PROP_MIN_ZOOM, + PROP_WORLD + +}; + +struct _MapsFileTileSourcePrivate +{ + gchar *path; + gchar *extension; + gint max_zoom; + gint min_zoom; + ChamplainBoundingBox *world; + + long min_x; + long min_y; + long max_x; + long max_y; +}; + +typedef struct +{ + ChamplainMapSource *map_source; + ChamplainTile *tile; +} CallbackData; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsFileTileSource, maps_file_tile_source, CHAMPLAIN_TYPE_TILE_SOURCE) + +static void fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile); + + +static void +maps_file_tile_source_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + tile_source->priv->path = g_strdup ((char *) g_value_get_string (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + g_value_set_string (value, tile_source->priv->path); + break; + + case PROP_MIN_ZOOM: + g_value_set_uint (value, tile_source->priv->min_zoom); + break; + + case PROP_MAX_ZOOM: + g_value_set_uint (value, tile_source->priv->max_zoom); + break; + + case PROP_WORLD: + g_value_set_boxed (value, tile_source->priv->world); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_dispose (GObject *object) +{ + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->dispose (object); +} + +static void +maps_file_tile_source_finalize (GObject *object) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + if (tile_source->priv->path) + g_free (tile_source->priv->path); + + if (tile_source->priv->extension) + g_free (tile_source->priv->extension); + + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->finalize (object); +} + +static guint +get_max_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->max_zoom; +} + +static guint +get_min_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->min_zoom; +} + +static void +maps_file_tile_source_class_init (MapsFileTileSourceClass *klass) +{ + ChamplainMapSourceClass *map_source_class = CHAMPLAIN_MAP_SOURCE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->finalize = maps_file_tile_source_finalize; + object_class->dispose = maps_file_tile_source_dispose; + object_class->get_property = maps_file_tile_source_get_property; + object_class->set_property = maps_file_tile_source_set_property; + map_source_class->get_max_zoom_level = get_max_zoom_level; + map_source_class->get_min_zoom_level = get_min_zoom_level; + map_source_class->fill_tile = fill_tile; + + /** + * MapsFileTileSource:path: + * + * The path to the tile source. + * + */ + pspec = g_param_spec_string ("path", + "Path", + "The path to the tile source", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property (object_class, PROP_PATH, pspec); + + /** + * MapsFileTileSource:min-zoom: + * + * The minimum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("min-zoom", + "Minimum zoom", + "The minimum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MIN_ZOOM, pspec); + + /** + * MapsFileTileSource:max-zoom: + * + * The maximum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("max-zoom", + "Maximum zoom", + "The maximum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MAX_ZOOM, pspec); + + /** + * MapsFileTileSource:world: + * + * Set a bounding box to limit the world to. No tiles will be loaded + * outside of this bounding box. It will not be possible to scroll outside + * of this bounding box. + * + */ + pspec = g_param_spec_boxed ("world", + "The world", + "The bounding box to limit the #ChamplainView to", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_WORLD, pspec); +} + +static void +maps_file_tile_source_init (MapsFileTileSource *tile_source) +{ + tile_source->priv = maps_file_tile_source_get_instance_private (tile_source); + tile_source->priv->path = NULL; + tile_source->priv->extension = NULL; + tile_source->priv->max_zoom = -1; + tile_source->priv->min_zoom = 21; + tile_source->priv->world = NULL; + tile_source->priv->min_x = G_MAXLONG; + tile_source->priv->min_y = G_MAXLONG; + tile_source->priv->max_x = 0; + tile_source->priv->max_y = 0; +} + +static gboolean +get_zoom_levels (MapsFileTileSource *tile_source, + GError **error) +{ + GFile *file; + GFileEnumerator *enumerator; + gboolean ret = TRUE; + long orig_min = tile_source->priv->min_zoom; + long orig_max = tile_source->priv->max_zoom; + + file = g_file_new_for_path (tile_source->priv->path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + const char *name; + char *endptr; + long val; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + val = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (val > tile_source->priv->max_zoom) + tile_source->priv->max_zoom = val; + + if (val < tile_source->priv->min_zoom) + tile_source->priv->min_zoom = val; + } + + if (tile_source->priv->min_zoom == orig_min || + tile_source->priv->max_zoom == orig_max) { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + + return ret; +} + +static gboolean +get_y_bounds (MapsFileTileSource *tile_source, + const char *path, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + gboolean ret = TRUE; + gboolean found = FALSE; + + file = g_file_new_for_path (path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + char **names; + char *endptr; + long y; + + if (!g_file_enumerator_iterate (enumerator, &info, + NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) + continue; + + names = g_strsplit (g_file_info_get_name (info), ".", 2); + if (!tile_source->priv->extension) + tile_source->priv->extension = g_strdup (names[1]); + + y = strtol (names[0], &endptr, 0); + if (endptr == names[0] || *endptr != '\0') { + g_strfreev (names); + continue; + } + + if (!found) + found = TRUE; + + g_strfreev (names); + + if (y > tile_source->priv->max_y) + tile_source->priv->max_y = y; + + if (y < tile_source->priv->min_y) + tile_source->priv->min_y = y; + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +static gboolean +get_bounds (MapsFileTileSource *tile_source, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + char *path; + gboolean ret = TRUE; + char min_zoom[3]; + gboolean found = FALSE; + + sprintf (min_zoom, "%u", tile_source->priv->min_zoom); + path = g_build_filename (tile_source->priv->path, min_zoom, NULL); + file = g_file_new_for_path (path); + + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + char *y_path; + GFileInfo *info; + const char *name; + char *endptr; + long x; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + x = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (!found) + found = TRUE; + + if (x > tile_source->priv->max_x) + tile_source->priv->max_x = x; + + if (x < tile_source->priv->min_x) + tile_source->priv->min_x = x; + + y_path = g_build_filename (path, name, NULL); + if (!get_y_bounds (tile_source, y_path, error)) { + g_free (y_path); + ret = FALSE; + goto out; + } + g_free (y_path); + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_free (path); + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +gboolean +maps_file_tile_source_prepare (MapsFileTileSource *tile_source, + GError **error) +{ + g_return_val_if_fail (MAPS_IS_FILE_TILE_SOURCE (tile_source), FALSE); + g_return_val_if_fail (tile_source->priv->path != NULL, FALSE); + + ChamplainMapSource *source = (ChamplainMapSource *) tile_source; + gboolean ret = TRUE; + guint tile_size = champlain_map_source_get_tile_size (source); + + if (!get_zoom_levels (tile_source, error)) { + ret = FALSE; + goto out; + } + + if (!get_bounds (tile_source, error)) { + ret = FALSE; + goto out; + } + + tile_source->priv->world = champlain_bounding_box_new (); + tile_source->priv->world->left = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_x * + tile_size); + tile_source->priv->world->right = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_x + 1) * + tile_size); + tile_source->priv->world->top = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_y * + tile_size); + tile_source->priv->world->bottom = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_y + 1) * + tile_size); + out: + return ret; +} + +static void +tile_rendered_cb (ChamplainTile *tile, + gpointer data, + guint size, + gboolean error, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source; + + g_signal_handlers_disconnect_by_func (tile, tile_rendered_cb, user_data); + g_slice_free (CallbackData, user_data); + + next_source = champlain_map_source_get_next_source (map_source); + + if (!error) + { + ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source); + ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source); + + if (tile_cache && data) + champlain_tile_cache_store_tile (tile_cache, tile, data, size); + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + } + else if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + g_object_unref (map_source); + g_object_unref (tile); +} + +static void +tile_loaded_cb (GFile *file, + GAsyncResult *res, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + ChamplainTile *tile = user_data->tile; + CallbackData *data; + ChamplainRenderer *renderer; + guint8 *content; + gsize length; + + g_slice_free (CallbackData, user_data); + + if (!g_file_load_contents_finish (file, res, (char **) &content, &length, NULL, NULL)) + { + goto load_next; + } + + renderer = champlain_map_source_get_renderer (map_source); + g_return_if_fail (CHAMPLAIN_IS_RENDERER (renderer)); + + data = g_slice_new (CallbackData); + data->map_source = map_source; + + g_signal_connect (tile, "render-complete", G_CALLBACK (tile_rendered_cb), data); + + champlain_renderer_set_data (renderer, content, length); + champlain_renderer_render (renderer, tile); + + return; + +load_next: + if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + goto cleanup; + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + +cleanup: + g_object_unref (tile); + g_object_unref (map_source); +} + +static void +fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile) +{ + g_return_if_fail (MAPS_IS_FILE_TILE_SOURCE (map_source)); + g_return_if_fail (CHAMPLAIN_IS_TILE (tile)); + + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (map_source); + CallbackData *callback_data; + GFile *file; + gchar *path = NULL; + + if (champlain_tile_get_state (tile) == CHAMPLAIN_STATE_DONE) + return; + + path = g_strdup_printf("%s/%d/%d/%d.%s", + tile_source->priv->path, + champlain_tile_get_zoom_level (tile), + champlain_tile_get_x (tile), + champlain_tile_get_y (tile), + tile_source->priv->extension); + file = g_file_new_for_path (path); + + if (g_file_query_exists(file, NULL)) + { + callback_data = g_slice_new (CallbackData); + callback_data->tile = tile; + callback_data->map_source = map_source; + + g_object_ref (map_source); + g_object_ref (tile); + + g_file_load_contents_async (file, NULL, + (GAsyncReadyCallback) tile_loaded_cb, + callback_data); + } + else + { + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + + if (CHAMPLAIN_IS_MAP_SOURCE (next_source)) + champlain_map_source_fill_tile (next_source, tile); + } + + g_object_unref (file); + g_free (path); +} diff --git a/lib/maps-file-tile-source.h b/lib/maps-file-tile-source.h new file mode 100644 index 00000000..9b432e04 --- /dev/null +++ b/lib/maps-file-tile-source.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef _MAPS_FILE_TILE_SOURCE_H_ +#define _MAPS_FILE_TILE_SOURCE_H_ + +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_FILE_TILE_SOURCE maps_file_tile_source_get_type () + +#define MAPS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSource)) + +#define MAPS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +#define MAPS_IS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_IS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_FILE_TILE_SOURCE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +typedef struct _MapsFileTileSourcePrivate MapsFileTileSourcePrivate; + +typedef struct _MapsFileTileSource MapsFileTileSource; +typedef struct _MapsFileTileSourceClass MapsFileTileSourceClass; + +/** + * MapsFileTileSource: + * + * The #MapsFileTileSource structure contains only private data + * and should be accessed using the provided API + * + */ +struct _MapsFileTileSource +{ + ChamplainTileSource parent_instance; + + MapsFileTileSourcePrivate *priv; +}; + +struct _MapsFileTileSourceClass +{ + ChamplainTileSourceClass parent_class; +}; + +GType maps_file_tile_source_get_type (void); + +gboolean maps_file_tile_source_prepare (MapsFileTileSource *tile_source, GError **error); +G_END_DECLS + +#endif /* _MAPS_FILE_TILE_SOURCE_H_ */ diff --git a/lib/maps-osm-changeset.c b/lib/maps-osm-changeset.c new file mode 100644 index 00000000..9dcc274d --- /dev/null +++ b/lib/maps-osm-changeset.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-changeset.h" + +#include + +struct _MapsOSMChangesetPrivate +{ + char *comment; + char *created_by; +}; + +enum { + PROP_0, + + PROP_COMMENT, + PROP_CREATED_BY +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMChangeset, maps_osm_changeset, G_TYPE_OBJECT) + +static void +maps_osm_changeset_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + changeset->priv->comment = g_value_dup_string (value); + break; + + case PROP_CREATED_BY: + changeset->priv->created_by = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + g_value_set_string (value, changeset->priv->comment); + break; + + case PROP_CREATED_BY: + g_value_set_string (value, changeset->priv->created_by); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_dispose (GObject *object) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + g_free (changeset->priv->comment); + g_free (changeset->priv->created_by); + + G_OBJECT_CLASS (maps_osm_changeset_parent_class)->dispose (object); +} + +static void +maps_osm_changeset_class_init (MapsOSMChangesetClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->dispose = maps_osm_changeset_dispose; + object_class->get_property = maps_osm_changeset_get_property; + object_class->set_property = maps_osm_changeset_set_property; + + /** + * MapsOSMChangeset:comment: + * + * The comment of the changes. + */ + pspec = g_param_spec_string ("comment", + "Comment", + "Comment", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_COMMENT, pspec); + + /** + * MapsOSMChangeset:created_by: + * + * The identifier of the client making the changeset. + */ + pspec = g_param_spec_string ("created_by", + "Created by", + "Created by", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_CREATED_BY, pspec); +} + +static void +maps_osm_changeset_init (MapsOSMChangeset *changeset) +{ + changeset->priv = maps_osm_changeset_get_instance_private (changeset); + + changeset->priv->comment = NULL; + changeset->priv->created_by = NULL; +} + +MapsOSMChangeset * +maps_osm_changeset_new (const char *comment, const char *created_by) +{ + return g_object_new (MAPS_TYPE_OSMCHANGESET, + "comment", comment, + "created_by", created_by, NULL); +} + +xmlNodePtr +maps_osm_changeset_create_tag_node (const char *key, const char * value) +{ + xmlNodePtr node; + + node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (node, (xmlChar *) "k", (xmlChar *) key); + xmlNewProp (node, (xmlChar *) "v", (xmlChar *) value); + + return node; +} + +char * +maps_osm_changeset_serialize (const MapsOSMChangeset *changeset) +{ + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr changeset_node; + xmlNodePtr comment_node; + xmlNodePtr created_by_node; + xmlChar *result; + int size; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + changeset_node = xmlNewNode (NULL, (xmlChar *) "changeset"); + comment_node = + maps_osm_changeset_create_tag_node ("comment", changeset->priv->comment); + created_by_node = + maps_osm_changeset_create_tag_node ("created_by", + changeset->priv->created_by); + xmlAddChild (osm_node, changeset_node); + xmlAddChild (changeset_node, comment_node); + xmlAddChild (changeset_node, created_by_node); + xmlDocSetRootElement (doc, osm_node); + + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-changeset.h b/lib/maps-osm-changeset.h new file mode 100644 index 00000000..01963366 --- /dev/null +++ b/lib/maps-osm-changeset.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_CHANGESET_H__ +#define __MAPS_OSM_CHANGESET_H__ + +#include + +#define MAPS_TYPE_OSMCHANGESET maps_osm_changeset_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMChangeset, maps_osm_changeset, MAPS, OSMCHANGESET, + GObject) + +typedef struct _MapsOSMChangesetPrivate MapsOSMChangesetPrivate; + +struct _MapsOSMChangeset +{ + GObject parent_instance; + MapsOSMChangesetPrivate *priv; +}; + +struct _MapsOSMChangesetClass +{ + GObjectClass parent_class; +}; + +/** + * maps_osm_changeset_new: + * @comment: (nullable): A comment about the OSM change, optional + * @created_by: (nullable): The client identifier of the OSM change, optional + */ +MapsOSMChangeset *maps_osm_changeset_new (const char *comment, + const char *created_by); + +char *maps_osm_changeset_serialize (const MapsOSMChangeset *changeset); + +#endif /* __MAPS_OSM_CHANGESET_H__ */ + diff --git a/lib/maps-osm-node.c b/lib/maps-osm-node.c new file mode 100644 index 00000000..05711e04 --- /dev/null +++ b/lib/maps-osm-node.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-node.h" + +struct _MapsOSMNodePrivate +{ + double lon; + double lat; +}; + +enum { + PROP_0, + + PROP_LONGITUDE, + PROP_LATITUDE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMNode, maps_osm_node, MAPS_TYPE_OSMOBJECT) + + +static void +maps_osm_node_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + node->priv->lon = g_value_get_double (value); + break; + + case PROP_LATITUDE: + node->priv->lat = g_value_get_double (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_node_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + g_value_set_double (value, node->priv->lon); + break; + + case PROP_LATITUDE: + g_value_set_double (value, node->priv->lat); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static const char * +maps_osm_node_get_xml_tag_name (void) +{ + return "node"; +} + +static GHashTable * +maps_osm_node_get_xml_attributes (const MapsOSMObject *object) +{ + const MapsOSMNode *node = MAPS_OSMNODE ((MapsOSMObject *) object); + GHashTable *attributes; + char buf[G_ASCII_DTOSTR_BUF_SIZE]; + + attributes = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); + + g_ascii_dtostr (buf, sizeof (buf), node->priv->lon); + g_hash_table_insert (attributes, "lon", g_strdup (buf)); + g_ascii_dtostr (buf, sizeof (buf), node->priv->lat); + g_hash_table_insert (attributes, "lat", g_strdup (buf)); + + return attributes; +} + +static void +maps_osm_node_class_init (MapsOSMNodeClass *klass) +{ + GObjectClass *node_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + node_class->get_property = maps_osm_node_get_property; + node_class->set_property = maps_osm_node_set_property; + object_class->get_xml_tag_name = maps_osm_node_get_xml_tag_name; + object_class->get_xml_attributes = maps_osm_node_get_xml_attributes; + + /** + * MapsOSMNode:longitude: + * + * The longitude of the node. + */ + pspec = g_param_spec_double ("longitude", + "Longitude", + "Longitude", + -180.0, + 180.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LONGITUDE, pspec); + + /** + * MapsOSMNode:latitude: + * + * The latitude of the node. + */ + pspec = g_param_spec_double ("latitude", + "Latitude", + "Latitude", + -90.0, + 90.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LATITUDE, pspec); +} + +static void +maps_osm_node_init (MapsOSMNode *node) +{ + node->priv = maps_osm_node_get_instance_private (node); + + node->priv->lon = 0.0; + node->priv->lat = 0.0; +} + +MapsOSMNode * +maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude) +{ + return g_object_new (MAPS_TYPE_OSMNODE, + "id", id, + "version", version, + "changeset", changeset, + "longitude", longitude, + "latitude", latitude, NULL); +} diff --git a/lib/maps-osm-node.h b/lib/maps-osm-node.h new file mode 100644 index 00000000..ba12d3bc --- /dev/null +++ b/lib/maps-osm-node.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_NODE_H__ +#define __MAPS_OSM_NODE_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMNODE maps_osm_node_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMNode, maps_osm_node, MAPS, OSMNODE, MapsOSMObject) + +typedef struct _MapsOSMNodePrivate MapsOSMNodePrivate; + +struct _MapsOSMNode +{ + MapsOSMObject parent_instance; + MapsOSMNodePrivate *priv; +}; + +struct _MapsOSMNodeClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMNode *maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude); + +#endif //__MAPS_OSM_NODE_H__ diff --git a/lib/maps-osm-oauth-proxy-call.c b/lib/maps-osm-oauth-proxy-call.c new file mode 100644 index 00000000..5e9e7544 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-oauth-proxy-call.h" + +#include +#include +#include + +#define MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL,\ + MapsOSMOAuthProxyCallPrivate)) + +struct _MapsOSMOAuthProxyCallPrivate +{ + char *payload; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(MapsOSMOAuthProxyCall, maps_osm_oauth_proxy_call, + OAUTH_TYPE_PROXY_CALL); + +static gboolean +maps_osm_oauth_proxy_call_serialize_params (RestProxyCall *call, + gchar **content_type, + gchar **content, + gsize *content_len, + GError **error) +{ + g_return_val_if_fail(MAPS_IS_OSM_OAUTH_PROXY_CALL (call), FALSE); + g_return_val_if_fail(content_type != NULL, FALSE); + g_return_val_if_fail(content != NULL, FALSE); + g_return_val_if_fail(content_len != NULL, FALSE); + + gchar *payload = (MAPS_OSM_OAUTH_PROXY_CALL (call))->priv->payload; + + *content_type = g_strdup ("text/xml"); + *content = g_strdup (payload); + *content_len = strlen (payload); + + return TRUE; +} + +static void +maps_osm_oauth_proxy_call_dispose (GObject *object) +{ + MapsOSMOAuthProxyCall *call = MAPS_OSM_OAUTH_PROXY_CALL (object); + + g_free (call->priv->payload); + call->priv->payload = NULL; + + G_OBJECT_CLASS (maps_osm_oauth_proxy_call_parent_class)->dispose (object); +} + +static void +maps_osm_oauth_proxy_call_class_init (MapsOSMOAuthProxyCallClass *klass) +{ + RestProxyCallClass *proxy_call_class = REST_PROXY_CALL_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + proxy_call_class->serialize_params = + maps_osm_oauth_proxy_call_serialize_params; + gobject_class->dispose = maps_osm_oauth_proxy_call_dispose; +} + +static void +maps_osm_oauth_proxy_call_init (MapsOSMOAuthProxyCall *call) +{ + call->priv = MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE (call); +} + +MapsOSMOAuthProxyCall * +maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, const char *payload) +{ + g_return_val_if_fail (OAUTH_IS_PROXY (proxy), NULL); + g_return_val_if_fail (payload != NULL, NULL); + + MapsOSMOAuthProxyCall *call = + g_object_new (MAPS_TYPE_OSM_OAUTH_PROXY_CALL, "proxy", proxy, NULL); + + call->priv->payload = g_strdup (payload); + + return call; +} + + diff --git a/lib/maps-osm-oauth-proxy-call.h b/lib/maps-osm-oauth-proxy-call.h new file mode 100644 index 00000000..e9c240d8 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef MAPS_OSM_OAUTH_PROXY_CALL_H +#define MAPS_OSM_OAUTH_PROXY_CALL_H + +#include + +#include +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_OSM_OAUTH_PROXY_CALL (maps_osm_oauth_proxy_call_get_type ()) +#define MAPS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCall)) +#define MAPS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_OSM_OAUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) + +typedef struct _MapsOSMOAuthProxyCall MapsOSMOAuthProxyCall; +typedef struct _MapsOSMOAuthProxyCallPrivate MapsOSMOAuthProxyCallPrivate; +typedef struct _MapsOSMOAuthProxyCallClass MapsOSMOAuthProxyCallClass; + +struct _MapsOSMOAuthProxyCall +{ + OAuthProxyCall parent; + MapsOSMOAuthProxyCallPrivate *priv; +}; + +struct _MapsOSMOAuthProxyCallClass +{ + OAuthProxyCallClass parent_class; +}; + +GType maps_osm_oauth_proxy_call_get_type(void); +MapsOSMOAuthProxyCall *maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, + const char *content); + +G_END_DECLS + +#endif /* MAPS_OSM_OAUTH_PROXY_CALL_H */ diff --git a/lib/maps-osm-object.c b/lib/maps-osm-object.c new file mode 100644 index 00000000..5a00f0c1 --- /dev/null +++ b/lib/maps-osm-object.c @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-object.h" + +struct _MapsOSMObjectPrivate +{ + guint64 id; + guint version; + guint64 changeset; + + GHashTable *tags; +}; + +enum { + PROP_0, + + PROP_ID, + PROP_VERSION, + PROP_CHANGESET +}; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MapsOSMObject, maps_osm_object, + G_TYPE_OBJECT) + +static void +maps_osm_object_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + priv->id = g_value_get_uint64 (value); + break; + + case PROP_VERSION: + priv->version = g_value_get_uint (value); + break; + + case PROP_CHANGESET: + priv->changeset = g_value_get_uint64 (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + g_value_set_uint64 (value, priv->id); + break; + + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + + case PROP_CHANGESET: + g_value_set_uint64 (value, priv->changeset); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_dispose (GObject *object) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + g_hash_table_destroy (priv->tags); + priv->tags = NULL; + + G_OBJECT_CLASS (maps_osm_object_parent_class)->dispose (object); +} + +/* base implementation returning no object-specific XML attributes */ +static GHashTable * +maps_osm_object_get_xml_attributes (const MapsOSMObject *object) +{ + return NULL; +} + +/* base implementation return no object-specific child XML nodes */ +static xmlNodePtr +maps_osm_object_get_xml_child_nodes (const MapsOSMObject *object) +{ + return NULL; +} + +static void +maps_osm_object_class_init (MapsOSMObjectClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_osm_object_dispose; + maps_class->get_property = maps_osm_object_get_property; + maps_class->set_property = maps_osm_object_set_property; + object_class->get_xml_attributes = maps_osm_object_get_xml_attributes; + object_class->get_xml_child_nodes = maps_osm_object_get_xml_child_nodes; + + /** + * MapsOSMObject:id: + * + * The OSM id of the object. + */ + pspec = g_param_spec_uint64 ("id", + "ID", + "ID", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsOSMObject:version: + * + * The latest OSM version of the object. + */ + pspec = g_param_spec_uint("version", + "Version", + "Version", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_VERSION, pspec); + + /** + * MapsOSMObject:changeset: + * + * The OSM changeset for the current upload of the object. + */ + pspec = g_param_spec_uint64 ("changeset", + "Changeset", + "Changeset", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_CHANGESET, pspec); +} + +static void +maps_osm_object_init (MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + priv->tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); +} + +const char * +maps_osm_object_get_tag (const MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private ((MapsOSMObject *) object); + + g_return_val_if_fail (key != NULL, NULL); + + return g_hash_table_lookup (priv->tags, key); +} + +void +maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_insert (priv->tags, g_strdup (key), g_strdup (value)); +} + +void +maps_osm_object_delete_tag (MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_remove (priv->tags, key); +} + +static void +maps_osm_object_foreach_tag (gpointer key, gpointer value, gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + /* skip tag if it has an empty placeholder value */ + if (val && *val) + { + xmlNodePtr tag_node; + + tag_node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (tag_node, (xmlChar *) "k", name); + xmlNewProp (tag_node, (xmlChar *) "v", val); + xmlAddChild (object_node, tag_node); + } +} + +static void +maps_osm_object_foreach_type_attr (gpointer key, gpointer value, + gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + xmlNewProp (object_node, name, val); +} + +xmlDocPtr +maps_osm_object_to_xml (const MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv; + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr object_node; + const char *type; + GHashTable *type_attrs; + xmlNodePtr type_sub_nodes; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + priv = (MapsOSMObjectPrivate *) maps_osm_object_get_instance_private ((MapsOSMObject *) object); + type = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_tag_name (); + object_node = xmlNewNode (NULL, (const xmlChar *) type); + + /* add common OSM attributes */ + if (priv->id != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->id); + xmlNewProp (object_node, (xmlChar *) "id", (xmlChar *) buf); + } + + if (priv->version != 0) + { + char buf[16]; + g_snprintf (buf, 16, "%d", priv->version); + xmlNewProp (object_node, (xmlChar *) "version", (xmlChar *) buf); + } + + if (priv->changeset != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->changeset); + xmlNewProp (object_node, (xmlChar *) "changeset", (xmlChar *) buf); + } + + /* add OSM tags */ + g_hash_table_foreach (priv->tags, maps_osm_object_foreach_tag, object_node); + + /* add type-specific attributes */ + type_attrs = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_attributes (object); + if (type_attrs) + { + g_hash_table_foreach (type_attrs, maps_osm_object_foreach_type_attr, + object_node); + g_hash_table_destroy (type_attrs); + } + + /* add type-specific sub-nodes */ + type_sub_nodes = + MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_child_nodes (object); + if (type_sub_nodes) + xmlAddChildList (object_node, type_sub_nodes); + + /* add type node to top node */ + xmlAddChild (osm_node, object_node); + xmlDocSetRootElement (doc, osm_node); + + return doc; +} + + +char * +maps_osm_object_serialize (const MapsOSMObject *object) +{ + xmlDocPtr doc; + xmlChar *result; + int size; + + doc = maps_osm_object_to_xml (object); + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-object.h b/lib/maps-osm-object.h new file mode 100644 index 00000000..6e8f2e3b --- /dev/null +++ b/lib/maps-osm-object.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_OBJECT_H__ +#define __MAPS_OSM_OBJECT_H__ + +#include +#include + +#define MAPS_TYPE_OSMOBJECT maps_osm_object_get_type () +G_DECLARE_DERIVABLE_TYPE(MapsOSMObject, maps_osm_object, MAPS, OSMOBJECT, + GObject) + +typedef struct _MapsOSMObjectPrivate MapsOSMObjectPrivate; + +struct _MapsOSMObjectClass +{ + GObjectClass parent_class; + + /* return the name of the distinguishing OSM XML tag (beneath ) */ + const char * (* get_xml_tag_name) (void); + + /* return hash table with XML attributes (key/values) specific for + the object (on the XML tag beneath ) */ + GHashTable * (* get_xml_attributes) (const MapsOSMObject *object); + + /* return a list of custom object-specific XML tags to attach, + can return NULL if there's no object-specific nodes */ + xmlNodePtr (* get_xml_child_nodes) (const MapsOSMObject *object); +}; + +const char *maps_osm_object_get_tag (const MapsOSMObject *object, + const char *key); +void maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value); +void maps_osm_object_delete_tag (MapsOSMObject *object, const char *key); + +char *maps_osm_object_serialize (const MapsOSMObject *object); + +#endif //__MAPS_OSM_OBJECT_H__ diff --git a/lib/maps-osm-relation.c b/lib/maps-osm-relation.c new file mode 100644 index 00000000..e4d4efd2 --- /dev/null +++ b/lib/maps-osm-relation.c @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-relation.h" + +struct _MapsOSMRelationPrivate +{ + GList *members; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMRelation, maps_osm_relation, + MAPS_TYPE_OSMOBJECT); + +typedef struct +{ + char *role; + guint type; + guint64 ref; +} MapsOSMRelationMember; + +static void +maps_osm_relation_member_free (gpointer data) +{ + MapsOSMRelationMember *member = (MapsOSMRelationMember *) data; + + g_free (member->role); +} + +static void +maps_osm_relation_dispose (GObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION (object); + + g_list_free_full (relation->priv->members, maps_osm_relation_member_free); + relation->priv->members = NULL; + + G_OBJECT_CLASS (maps_osm_relation_parent_class)->dispose (object); +} + +static const char * +maps_osm_relation_get_xml_tag_name (void) +{ + return "relation"; +} + +static const char * +maps_osm_relation_member_type_to_string (guint type) +{ + switch (type) { + case MEMBER_TYPE_NODE: + return "node"; + case MEMBER_TYPE_WAY: + return "way"; + case MEMBER_TYPE_RELATION: + return "relation"; + default: + g_warning ("Unknown relation member type: %d\n", type); + return NULL; + } +} + +static xmlNodePtr +maps_osm_relation_get_member_node (const MapsOSMRelationMember *member) +{ + xmlNodePtr node = xmlNewNode (NULL, (xmlChar *) "member"); + char buf[16]; + + if (member->role) + xmlNewProp (node, (xmlChar *) "role", (xmlChar *) g_strdup (member->role)); + + xmlNewProp (node, (xmlChar *) "type", + (xmlChar *) maps_osm_relation_member_type_to_string (member->type)); + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, member->ref); + xmlNewProp (node, (xmlChar *) "ref", (xmlChar *) buf); + + return node; +} + +static xmlNodePtr +maps_osm_relation_get_xml_child_nodes (const MapsOSMObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION ((MapsOSMObject *) object); + xmlNodePtr nodes = NULL; + const GList *members = relation->priv->members; + + if (members) + { + const GList *iter; + nodes = maps_osm_relation_get_member_node ((MapsOSMRelationMember *) + members->data); + + for (iter = members->next; iter; iter = iter->next) + { + xmlAddSibling (nodes, maps_osm_relation_get_member_node ( + (MapsOSMRelationMember *) iter->data)); + } + } + + return nodes; +} + +static void +maps_osm_relation_class_init (MapsOSMRelationClass *klass) +{ + GObjectClass *relation_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + relation_class->dispose = maps_osm_relation_dispose; + object_class->get_xml_tag_name = maps_osm_relation_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_relation_get_xml_child_nodes; +} + +static void +maps_osm_relation_init (MapsOSMRelation *relation) +{ + relation->priv = maps_osm_relation_get_instance_private (relation); +} + +MapsOSMRelation * +maps_osm_relation_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMRELATION, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_relation_add_member (MapsOSMRelation *relation, const gchar *role, + guint type, guint64 ref) +{ + MapsOSMRelationMember *member = g_new (MapsOSMRelationMember, 1); + + member->role = g_strdup (role); + member->type = type; + member->ref = ref; + + relation->priv->members = g_list_append (relation->priv->members, member); +} + diff --git a/lib/maps-osm-relation.h b/lib/maps-osm-relation.h new file mode 100644 index 00000000..ffcae785 --- /dev/null +++ b/lib/maps-osm-relation.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_RELATION_H__ +#define __MAPS_OSM_RELATION_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMRELATION maps_osm_relation_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMRelation, maps_osm_relation, MAPS, OSMRELATION, + MapsOSMObject) + +typedef struct _MapsOSMRelationPrivate MapsOSMRelationPrivate; + +struct _MapsOSMRelation +{ + MapsOSMObject parent_instance; + MapsOSMRelationPrivate *priv; +}; + +struct _MapsOSMRelationClass +{ + MapsOSMObjectClass parent_class; +}; + +enum { + MEMBER_TYPE_NODE, + MEMBER_TYPE_WAY, + MEMBER_TYPE_RELATION +}; + +MapsOSMRelation *maps_osm_relation_new (guint64 id, guint version, + guint64 changeset); + +void maps_osm_relation_add_member (MapsOSMRelation *relation, const char *role, + guint type, guint64 ref); + +#endif /* __MAPS_OSM_RELATION_H__ */ + diff --git a/lib/maps-osm-way.c b/lib/maps-osm-way.c new file mode 100644 index 00000000..a2150287 --- /dev/null +++ b/lib/maps-osm-way.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-way.h" + +struct _MapsOSMWayPrivate +{ + GArray *node_ids; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMWay, maps_osm_way, MAPS_TYPE_OSMOBJECT); + +static void +maps_osm_way_dispose (GObject *object) +{ + MapsOSMWay *way = MAPS_OSMWAY (object); + + g_array_free (way->priv->node_ids, TRUE); + way->priv->node_ids = NULL; + + G_OBJECT_CLASS (maps_osm_way_parent_class)->dispose (object); +} + +static const char * +maps_osm_way_get_xml_tag_name (void) +{ + return "way"; +} + +static xmlNodePtr +maps_osm_way_create_node_xml_node (guint64 ref) +{ + xmlNodePtr nd; + char buf[16]; + + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, ref); + nd = xmlNewNode (NULL, (xmlChar *) "nd"); + xmlNewProp (nd, (xmlChar *) "ref", (xmlChar *) buf); + + return nd; +} + +static xmlNodePtr +maps_osm_way_get_xml_child_nodes(const MapsOSMObject *object) +{ + const MapsOSMWay *way = MAPS_OSMWAY ((MapsOSMObject *) object); + int i; + xmlNodePtr result; + xmlNodePtr next; + + g_return_val_if_fail (way->priv->node_ids->len > 0, NULL); + + result = maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, 0)); + next = result; + + for (i = 1; i < way->priv->node_ids->len; i++) + { + xmlNodePtr new_node; + new_node = + maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, i)); + next = xmlAddNextSibling (next, new_node); + } + + return result; +} + +static void +maps_osm_way_class_init (MapsOSMWayClass *klass) +{ + GObjectClass *way_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + way_class->dispose = maps_osm_way_dispose; + object_class->get_xml_tag_name = maps_osm_way_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_way_get_xml_child_nodes; +} + +static void +maps_osm_way_init (MapsOSMWay *way) +{ + way->priv = maps_osm_way_get_instance_private (way); + way->priv->node_ids = g_array_new (FALSE, FALSE, sizeof (guint64)); +} + +MapsOSMWay * +maps_osm_way_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMWAY, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id) +{ + g_array_append_val (way->priv->node_ids, id); +} diff --git a/lib/maps-osm-way.h b/lib/maps-osm-way.h new file mode 100644 index 00000000..0dee1eec --- /dev/null +++ b/lib/maps-osm-way.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_WAY_H__ +#define __MAPS_OSM_WAY_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMWAY maps_osm_way_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMWay, maps_osm_way, MAPS, OSMWAY, MapsOSMObject) + +typedef struct _MapsOSMWayPrivate MapsOSMWayPrivate; + +struct _MapsOSMWay +{ + MapsOSMObject parent_instance; + MapsOSMWayPrivate *priv; +}; + +struct _MapsOSMWayClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMWay *maps_osm_way_new (guint64 id, guint version, guint64 changeset); + +void maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id); + +#endif /* __MAPS_OSM_WAY_H__ */ + diff --git a/lib/maps-osm.c b/lib/maps-osm.c new file mode 100644 index 00000000..307a9361 --- /dev/null +++ b/lib/maps-osm.c @@ -0,0 +1,471 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm.h" +#include "mapsintl.h" + +#include +#include + +#define MAPS_OSM_ERROR maps_osm_error_quark () + +GQuark +maps_osm_error_quark (void) +{ + return g_quark_from_static_string ("maps-osm-error"); +} + +void +maps_osm_init (void) +{ + LIBXML_TEST_VERSION; +} + +void +maps_osm_finalize (void) +{ + xmlCleanupParser (); +} + +static xmlDocPtr +read_xml_doc (const char *content, guint length, GError **error) +{ + xmlDoc *doc; + + doc = xmlReadMemory (content, length, "noname.xml", NULL, 0); + + if (!doc) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Failed to parse XML document")); + return NULL; + } + + return doc; +} + +static void +parse_tag (const xmlAttr *attrs, GHashTable *tags) +{ + const xmlAttr *cur_attr; + char *key; + char *value; + + key = NULL; + value = NULL; + + for (cur_attr = attrs; cur_attr; cur_attr = cur_attr->next) + { + if (g_str_equal (cur_attr->name, "k")) + key = (char *) cur_attr->children->content; + else if (g_str_equal (cur_attr->name, "v")) + value = (char *) cur_attr->children->content; + else + g_warning ("Unexpected tag property: %s\n", cur_attr->name); + } + + g_hash_table_insert (tags, key, value); +} + +static GHashTable * +parse_attributes (const xmlNode *node) +{ + GHashTable *attributes; + const xmlAttr *cur_attr; + + attributes = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_attr = node->properties; cur_attr; cur_attr = cur_attr->next) + { + g_hash_table_insert (attributes, + (gpointer) cur_attr->name, + (gpointer) cur_attr->children->content); + } + + return attributes; +} + +static GHashTable * +parse_tags (const xmlNode *tag_child) +{ + GHashTable *tags; + const xmlNode *cur_node; + + tags = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_node = tag_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "tag")) + parse_tag (cur_node->properties, tags); + } + + return tags; +} + +static GArray * +parse_node_refs (const xmlNode *node_ref_child) +{ + GArray *node_refs; + const xmlNode *cur_node; + + node_refs = g_array_new (FALSE, FALSE, sizeof (guint64)); + + for (cur_node = node_ref_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "nd")) + { + char *ref; + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + ref = g_hash_table_lookup (attributes, "ref"); + + if (ref) + { + guint64 id = g_ascii_strtoull (ref, NULL, 10); + + if (id == 0) + g_warning ("Invalid node ref: %s", ref); + else + g_array_append_val (node_refs, id); + } + + g_hash_table_destroy (attributes); + } + } + + return node_refs; +} + +static xmlNode * +get_sub_node (xmlDoc *doc) +{ + xmlNode *node; + xmlXPathContext *xpath_ctx; + xmlXPathObject * xpath_obj; + + xpath_ctx = xmlXPathNewContext (doc); + xpath_obj = xmlXPathEvalExpression ((xmlChar *) "/osm/node|/osm/way|/osm/relation", + xpath_ctx); + + if (xpath_obj && xpath_obj->nodesetval && xpath_obj->nodesetval->nodeNr > 0) + { + node = xmlCopyNode (xpath_obj->nodesetval->nodeTab[0], 1); + } + else + { + g_warning ("Couldn't find element"); + node = NULL; + } + + xmlXPathFreeObject (xpath_obj); + xmlXPathFreeContext (xpath_ctx); + + return node; +} + +static void +for_each_tag (gpointer key, gpointer value, gpointer user_data) +{ + const char *k = (const char *) key; + const char *v = (const char *) value; + MapsOSMObject *object = MAPS_OSMOBJECT (user_data); + + maps_osm_object_set_tag (object, k, v); +} + +static void +fill_tags (MapsOSMObject *object, GHashTable *tags) +{ + g_hash_table_foreach (tags, for_each_tag, object); +} + +static void +fill_node_ref_list (MapsOSMWay *way, const GArray *node_refs) +{ + int i; + + for (i = 0; i < node_refs->len; i++) + { + maps_osm_way_add_node_id (way, g_array_index (node_refs, guint64, i)); + } +} + +static MapsOSMNode * +parse_node (const xmlNodePtr node, GError **error) +{ + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + const char *lat_string; + double lat; + const char *lon_string; + double lon; + + GHashTable *tags; + GHashTable *attributes; + + MapsOSMNode *result; + + attributes = parse_attributes (node); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + lat_string = g_hash_table_lookup (attributes, "lat"); + lon_string = g_hash_table_lookup (attributes, "lon"); + + if (!id_string || !changeset_string || !version_string + || !lat_string || !lon_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + lon = g_ascii_strtod (lon_string, NULL); + lat = g_ascii_strtod (lat_string, NULL); + + g_hash_table_destroy (attributes); + + result = maps_osm_node_new (id, version, changeset, lon, lat); + + tags = parse_tags (node->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + + g_hash_table_destroy (tags); + + return result; +} + +static MapsOSMWay * +parse_way (const xmlNodePtr way, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GArray *node_refs; + MapsOSMWay *result; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + attributes = parse_attributes (way); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + g_warning ("Missing required attributes\n"); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_way_new (id, version, changeset); + + tags = parse_tags (way->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + node_refs = parse_node_refs (way->children); + fill_node_ref_list (result, node_refs); + g_array_free (node_refs, TRUE); + + return result; +} + + +static GList * +parse_members (const xmlNode *member_child) +{ + const xmlNode *cur_node; + GList *members; + + members = NULL; + + for (cur_node = member_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "member")) + { + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + members = g_list_append (members, attributes); + } + } + + return members; +} + +static void +fill_members (MapsOSMRelation *relation, const GList *members) +{ + const GList *cur; + + for (cur = members; cur; cur = g_list_next (cur)) { + GHashTable *attributes = (GHashTable *) cur->data; + const char *type_string = g_hash_table_lookup (attributes, "type"); + guint type; + const char *role = g_hash_table_lookup (attributes, "role"); + const char *ref_string = g_hash_table_lookup (attributes, "ref"); + guint64 ref; + + if (ref_string) + ref = g_ascii_strtoull (ref_string, NULL, 10); + + if (g_strcmp0 (type_string, "node") == 0) + type = MEMBER_TYPE_NODE; + else if (g_strcmp0 (type_string, "way") == 0) + type = MEMBER_TYPE_WAY; + else if (g_strcmp0 (type_string, "relation") == 0) + type = MEMBER_TYPE_RELATION; + else + { + g_warning ("Unknown relation type: %s\n", type_string); + continue; + } + + maps_osm_relation_add_member (relation, role, type, ref); + } +} + +static MapsOSMRelation * +parse_relation (const xmlNodePtr relation, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GList *member_list; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + MapsOSMRelation *result; + + attributes = parse_attributes (relation); + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_relation_new (id, version, changeset); + + tags = parse_tags (relation->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + member_list = parse_members (relation->children); + fill_members (result, member_list); + g_list_free_full (member_list, (GDestroyNotify) g_hash_table_destroy); + + return result; +} + +/** + * maps_osm_parse: + * @content: XML data + * @length: Length of data + * @error: Error handle + * Returns: (transfer full): A MapsOSMObject + */ +MapsOSMObject * +maps_osm_parse (const char *content, guint length, GError **error) +{ + xmlDocPtr doc; + xmlNodePtr sub_node; + MapsOSMObject *object; + + doc = read_xml_doc (content, length, error); + + if (!doc) + return NULL; + + sub_node = get_sub_node (doc); + + if (!sub_node) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Could not find OSM element")); + return NULL; + } + + if (g_str_equal (sub_node->name, "node")) + { + object = MAPS_OSMOBJECT (parse_node (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "way")) + { + object = MAPS_OSMOBJECT (parse_way (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "relation")) + { + object = MAPS_OSMOBJECT (parse_relation (sub_node, error)); + } + + xmlFreeNode (sub_node); + xmlFreeDoc (doc); + + return object; +} diff --git a/lib/maps-osm.h b/lib/maps-osm.h new file mode 100644 index 00000000..faca7404 --- /dev/null +++ b/lib/maps-osm.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_H__ +#define __MAPS_OSM_H__ + +#include + +#include "maps-osm-node.h" +#include "maps-osm-way.h" +#include "maps-osm-relation.h" + +void maps_osm_init (void); +void maps_osm_finalize (void); + +MapsOSMObject *maps_osm_parse (const char *content, guint length, + GError **error); + +#endif diff --git a/lib/maps.h b/lib/maps.h new file mode 100644 index 00000000..a6916d2b --- /dev/null +++ b/lib/maps.h @@ -0,0 +1,25 @@ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_H__ +#define __MAPS_H__ + +#include +#include "maps-contact-store.h" +#include "maps-contact.h" + +#endif diff --git a/lib/mapsintl.h b/lib/mapsintl.h new file mode 100644 index 00000000..56f31c3f --- /dev/null +++ b/lib/mapsintl.h @@ -0,0 +1,11 @@ +#ifndef _MAPS_INTL_H_ +#define _MAPS_INTL_H_ + +#ifdef ENABLE_NLS +#include +#define _(String) g_dgettext(GETTEXT_PACKAGE "-properties",String) +#else +#define _(String) (String) +#endif + +#endif diff --git a/lib/meson.build b/lib/meson.build new file mode 100644 index 00000000..60543648 --- /dev/null +++ b/lib/meson.build @@ -0,0 +1,75 @@ +maps_h = 'maps.h' + +headers_private = files( + 'maps-contact.h', + 'maps-contact-store.h', + 'maps-file-tile-source.h', + 'maps-osm.h', + 'maps-osm-changeset.h', + 'maps-osm-node.h', + 'maps-osm-object.h', + 'maps-osm-way.h', + 'maps-osm-relation.h', + 'maps-osm-oauth-proxy-call.h' +) + +sources = files( + 'maps-contact.c', + 'maps-contact-store.c', + 'maps-file-tile-source.c', + 'maps-osm.c', + 'maps-osm-changeset.c', + 'maps-osm-node.c', + 'maps-osm-object.c', + 'maps-osm-way.c', + 'maps-osm-relation.c', + 'maps-osm-oauth-proxy-call.c' +) + +enum_types = 'maps-enum-types' + +maps_enums = gnome.mkenums( + enum_types, + sources: headers_private, + c_template: enum_types + '.c.template', + h_template: enum_types + '.h.template', + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower() +) + +cflags = [ + '-DG_DISABLE_DEPRECATED', + '-DPREFIX="@0@"'.format(prefix), + '-DLIBDIR="@0@"'.format(libdir) +] + +libmaps = shared_library( + maps_libname, + version: '0.0.0', + sources: sources + maps_enums, + include_directories: top_inc, + dependencies: libmaps_deps, + c_args: cflags, + install: true, + install_dir: pkglibdir +) + +gnome.generate_gir( + libmaps, + sources: sources + [maps_enums, headers_private], + nsversion: maps_gir_version, + namespace: maps_gir_name, + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower(), + includes: [ + 'GLib-2.0', + 'GObject-2.0', + 'GeocodeGlib-1.0', + 'Champlain-0.12', + 'Rest-0.7' + ], + install: true, + install_dir_gir: join_paths(pkgdatadir, 'gir-' + maps_gir_version), + install_dir_typelib: join_paths(pkglibdir, 'girepository-' + maps_gir_version) +) + diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..d4b61aa3 --- /dev/null +++ b/meson.build @@ -0,0 +1,60 @@ +project('gnome-maps', 'c', + version: '3.38.1.1', + license: 'GPL2+' +) + +app_id = 'org.gnome.Maps' +gnome = import('gnome') +i18n = import('i18n') + +prefix = get_option('prefix') +name = meson.project_name() +version = meson.project_version() + +bindir = join_paths(prefix, get_option('bindir')) +libdir = join_paths(prefix, get_option('libdir')) +datadir = join_paths(prefix, get_option('datadir')) +pkgdatadir = join_paths(datadir, name) +pkglibdir = join_paths(libdir, name) + +maps_ns = 'Maps' +maps_libname = 'gnome-maps' +maps_gir_name = 'GnomeMaps' +maps_gir_version = '1.0' + +desktop_file_validate = find_program('desktop-file-validate', required: false) +appstream_util = find_program('appstream-util', required: false) + +gio = dependency('gio-2.0', version: '>= 2.44.0') +gjs = dependency('gjs-1.0', version: '>= 1.50.0') +girepository = dependency('gobject-introspection-1.0', version: '>= 0.10.1') +gtk3 = dependency('gtk+-3.0', version: '>= 3.22.0') +geoclue2 = dependency('geoclue-2.0', version: '>= 0.12.99') + +libmaps_deps = [ + dependency('gee-0.8', version: '>= 0.16.0'), + dependency('folks', version: '>= 0.10.0'), + dependency('geocode-glib-1.0', version: '>= 3.15.2'), + dependency('champlain-0.12', version: '>= 0.12.14'), + dependency('libxml-2.0'), + dependency('rest-0.7', version: '>= 0.7.90') +] + +msgfmt = find_program('msgfmt') +po_dir = join_paths(meson.source_root(), 'po') + +top_inc = include_directories('.') + +cc = meson.get_compiler('c') + +subdir('po') +subdir('src') +subdir('lib') +subdir('data') +subdir('tests') + +meson.add_install_script( + 'meson_post_install.py', + datadir, + bindir +) diff --git a/meson_post_install.py b/meson_post_install.py new file mode 100644 index 00000000..bb6b67c9 --- /dev/null +++ b/meson_post_install.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import glob +import os +import re +import subprocess +import sys + +datadir = sys.argv[1] + +destdir = os.environ.get('DESTDIR', '') +bindir = os.path.normpath(destdir + os.sep + sys.argv[2]) + +# FIXME: meson will not track the creation of these files +# https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 +if not os.path.exists(bindir): + os.makedirs(bindir) + +src = os.path.join(datadir, 'gnome-maps', 'org.gnome.Maps') +dest = os.path.join(bindir, 'gnome-maps') +subprocess.call(['ln', '-s', '-f', src, dest]) + +if not os.environ.get('DESTDIR'): + icondir = os.path.join(datadir, 'icons', 'hicolor') + + print('Update icon cache...') + subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir]) + + schemadir = os.path.join(datadir, 'glib-2.0', 'schemas') + print('Compiling gsettings schemas...') + subprocess.call(['glib-compile-schemas', schemadir]) + + # FIXME + ''' + search_pattern = '/*.desktop' + + desktopdir = os.path.join(datadir, 'applications') + print('Validate desktop files...') + [subprocess.call(['desktop-file-validate', file]) + for file in glob.glob(desktopdir + search_pattern, recursive=False)] + ''' + diff --git a/org.gnome.Maps.json b/org.gnome.Maps.json new file mode 100644 index 00000000..8c58292d --- /dev/null +++ b/org.gnome.Maps.json @@ -0,0 +1,222 @@ +{ + "app-id" : "org.gnome.Maps", + "runtime" : "org.gnome.Platform", + "runtime-version" : "master", + "sdk" : "org.gnome.Sdk", + "command" : "gnome-maps", + "tags" : [ + "devel" + ], + "desktop-file-name-prefix" : "(Development) ", + "finish-args" : [ + "--share=ipc", + "--socket=x11", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--share=network", + "--talk-name=org.gnome.OnlineAccounts", + "--talk-name=org.gnome.evolution.dataserver.AddressBook10", + "--talk-name=org.gnome.evolution.dataserver.Calendar7", + "--talk-name=org.gnome.evolution.dataserver.Sources5", + "--talk-name=org.gnome.evolution.dataserver.Subprocess.Backend.*", + "--talk-name=org.freedesktop.secrets", + "--system-talk-name=org.freedesktop.GeoClue2", + "--filesystem=xdg-run/dconf", + "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", + "--env=DCONF_USER_CONFIG_DIR=.config/dconf" + ], + "build-options" : { + "cflags" : "-O2 -g", + "cxxflags" : "-O2 -g", + "env" : { + "V" : "1" + } + }, + "cleanup" : [ + "/include", + "/lib/pkgconfig", + "/share/pkgconfig", + "/share/aclocal", + "/man", + "/share/man", + "/share/gtk-doc", + "/share/vala", + "*.la", + "*.a" + ], + "modules" : [ + { + "name": "libical", + "cleanup": [ + "/lib/cmake" + ], + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DCMAKE_INSTALL_LIBDIR=lib", + "-DBUILD_SHARED_LIBS:BOOL=ON", + "-DICAL_GLIB=true", + "-DGOBJECT_INTROSPECTION=true", + "-DICAL_GLIB_VAPI=true", + "-DICAL_BUILD_DOCS=false" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/libical/libical/releases/download/v3.0.8/libical-3.0.8.tar.gz", + "sha256": "09fecacaf75ba5a242159e3a9758a5446b5ce4d0ab684f98a7040864e1d1286f" + } + ] + }, + { + "name" : "gnome-online-accounts", + "config-opts" : [ + "--disable-Werror", + "--disable-telepathy", + "--disable-documentation", + "--disable-backend" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-online-accounts.git" + } + ] + }, + { + "name" : "geocode-glib", + "buildsystem" : "meson", + "builddir" : true, + "config-opts" : [ + "--libdir=/app/lib", + "-Denable-gtk-doc=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/geocode-glib.git" + } + ] + }, + { + "name" : "libgweather", + "buildsystem" : "meson", + "config-opts" : [ + "--libdir=/app/lib" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgweather.git" + } + ] + }, + { + "name": "intltool", + "cleanup": [ "*" ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz", + "sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd" + } + ] + }, + { + "name" : "evolution-data-server", + "cleanup" : [ + "/lib/cmake", + "/lib/evolution-data-server/*-backends", + "/libexec", + "/share/dbus-1/services" + ], + "config-opts" : [ + "-DENABLE_GTK=OFF", + "-DENABLE_GOOGLE_AUTH=OFF", + "-DENABLE_UOA=OFF", + "-DENABLE_GOOGLE=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DWITH_OPENLDAP=OFF", + "-DWITH_LIBDB=OFF", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_INSTALLED_TESTS=OFF", + "-DENABLE_GTK_DOC=OFF", + "-DENABLE_EXAMPLES=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_CANBERRA=OFF" + ], + "buildsystem" : "cmake-ninja", + "sources" : [ + { + "type" : "git", + "url": "https://gitlab.gnome.org/GNOME/evolution-data-server.git" + } + ] + }, + { + "name" : "folks", + "buildsystem": "meson", + "cleanup" : [ + "/bin" + ], + "config-opts" : [ + "-Dtelepathy_backend=false", + "-Dofono_backend=false", + "-Dbluez_backend=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/folks.git" + } + ] + }, + { + "name" : "libchamplain", + "buildsystem": "meson", + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libchamplain.git" + } + ] + }, + { + "name" : "librest", + "sources" : [ + { + "type" : "archive", + "url" : "https://gitlab.gnome.org/GNOME/librest/-/archive/0.8.1/librest-0.8.1.tar.gz", + "sha256" : "2bdd1be07a9150b1c6ceea6e01dedf2efcff564381cae0cd6c7330403efe59d7" + } + ] + }, + { + "name" : "libgfbgraph", + "cleanup" : [ + "/doc/libgfbgraph" + ], + "sources" : [ + { + "type" : "archive", + "url" : "https://download.gnome.org/sources/gfbgraph/0.2/gfbgraph-0.2.4.tar.xz", + "sha256" : "6065391f35e7335588cc6b0cc4c1abbce7341488573a654551264cb9793b9379" + } + ] + }, + { + "name" : "gnome-maps", + "buildsystem" : "meson", + "builddir" : true, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-maps.git" + } + ] + } + ] +} \ No newline at end of file diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 00000000..7f374e34 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,64 @@ +af +an +ar +as +bg +bs +ca +ca@valencia +cs +da +de +el +en_GB +eo +es +et +eu +fa +fi +fr +fur +ga +gd +gl +he +hi +hr +hu +id +is +it +ja +kk +kn +ko +lt +lv +mjw +ml +ms +nb +ne +nl +oc +pa +pl +pt +pt_BR +ru +ro +sk +sl +sr +sr@latin +sv +ta +te +tg +tr +uk +vi +zh_CN +zh_HK +zh_TW diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..676a7a6f --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,65 @@ +# List of source files containing translatable strings. +# Please keep this file sorted alphabetically. +data/org.gnome.Maps.appdata.xml.in +data/org.gnome.Maps.desktop.in +data/org.gnome.Maps.gschema.xml +data/ui/check-in-dialog.ui +data/ui/context-menu.ui +data/ui/export-view-dialog.ui +data/ui/headerbar-left.ui +data/ui/headerbar-right.ui +data/ui/help-overlay.ui +data/ui/layers-popover.ui +data/ui/location-service-dialog.ui +data/ui/main-window.ui +data/ui/map-bubble.ui +data/ui/osm-account-dialog.ui +data/ui/osm-edit-address.ui +data/ui/osm-edit-dialog.ui +data/ui/place-bubble.ui +data/ui/place-popover.ui +data/ui/route-entry.ui +data/ui/send-to-dialog.ui +data/ui/shape-layer-file-chooser.ui +data/ui/shape-layer-row.ui +data/ui/sidebar.ui +data/ui/social-place-more-results-row.ui +data/ui/transit-leg-row.ui +data/ui/transit-options-panel.ui +data/ui/user-location-bubble.ui +data/ui/zoom-in-dialog.ui +lib/maps-file-tile-source.c +lib/maps-osm.c +src/application.js +src/checkInDialog.js +src/checkIn.js +src/contextMenu.js +src/exportViewDialog.js +src/geoclue.js +src/geoJSONSource.js +src/graphHopper.js +src/layersPopover.js +src/mainWindow.js +src/mapView.js +src/osmConnection.js +src/osmEditDialog.js +src/photonParser.js +src/placeBubble.js +src/placeEntry.js +src/place.js +src/printLayout.js +src/printOperation.js +src/routeEntry.js +src/sendToDialog.js +src/shapeLayer.js +src/sidebar.js +src/transit.js +src/transitLegRow.js +src/transitMoreRow.js +src/transitOptionsPanel.js +src/transitPlan.js +src/translations.js +src/userLocationBubble.js +src/utils.js +src/transitplugins/goMetro.js +src/transitplugins/openTripPlanner.js diff --git a/po/POTFILES.skip b/po/POTFILES.skip new file mode 100644 index 00000000..4427cad6 --- /dev/null +++ b/po/POTFILES.skip @@ -0,0 +1,2 @@ +data/gnome-maps.appdata.xml +data/org.gnome.Maps.desktop diff --git a/po/af.po b/po/af.po new file mode 100644 index 00000000..fee368e4 --- /dev/null +++ b/po/af.po @@ -0,0 +1,182 @@ +# Afrikaans translation for gnome-maps. +# This file is distributed under the same license as the gnome-maps package. +# Copyright (C) +# Dawid Loubser , 2013. +# F Wolff , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-09 20:30+0000\n" +"PO-Revision-Date: 2013-10-13 23:29+0200\n" +"Last-Translator: F Wolff \n" +"Language-Team: translate-discuss-af@lists.sourceforge.net\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Padkaart gee vinnige toegang tot padkaarte van regoor die wêreld. Dit laat " +"mens toe om vinnig 'n gewenste plek te vind deur te soek vir 'n stad of 'n " +"straat, of om 'n ontmoetingspunt op te spoor." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +#, fuzzy +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • Soek vir 'n land, streek, stad of straat.
  • Soek vir spesifieke " +"tipe liggings, soos “Restaurante in Melville, Johannesburg” of “Hotelle in " +"Mosselbaai”
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Padkaart gebruik die gesamentlike OpenStreetMap-databasis, geskep deur " +"honderde duisende mense regoor die wêreld." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "Padkaart" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "'n Eenvoudige padkaart-toepassing" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;Padkaart;Kaart;Ligging;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Venstergrootte" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Venstergrootte (wydte en hoogte)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Vensterposisie" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Vensterposisie (X en Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Venster-maksimeringstoestand" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Toestand van die venster in terme van maksimering" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "Laas bekende ligging en akkuraatheid" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Laas bekende ligging (breedte- en lengtegraad in grade) en akkuraatheid (in " +"meter)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "Beskrywing van laas bekende ligging" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "Beskrywing van laas bekende ligging van gebruiker." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "Maksimum aantal soekresultate" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum aantal soekresultate van geokoderingsoektog." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "Gebruiker het laas bekende ligging gestel" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "Of die gebruiker self die laas bekende ligging gestel het." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "Aangaande" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "Sluit af" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Wat is hier?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "Ek is hier!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "Dawid Loubser" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "'n Padkaart-toepassing vir GNOME" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "Straat" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "Satelliet" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "Presies" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Ligging-akkuraatheid: %s" diff --git a/po/an.po b/po/an.po new file mode 100644 index 00000000..34fdb264 --- /dev/null +++ b/po/an.po @@ -0,0 +1,685 @@ +# Aragonese translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jorge Pérez Pérez , 2014 +# Daniel Martinez , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-05-03 19:08+0000\n" +"PO-Revision-Date: 2015-05-03 22:30+0200\n" +"Last-Translator: Daniel \n" +"Language-Team: Aragonés \n" +"Language: an\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.5.1.1\n" +"X-POOTLE-MTIME: 1430688604.000000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas te ofreix un acceso rapido a mapas de tot o mundo. Te permite trobar " +"puestos rapidament mirando por ciudat u por carrera, u mirar un puesto ta " +"trobar-te con un amigo." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Os mapas fan servir a base de datos colaborativa OpenStreetMap, feita por " +"cients de mils de personas de tot o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tamién puede buscar por tipos d'ubicacions especificos como “Tabiernas amán " +"d'o Paseyo d'a Independencia, Zaragoza”u “Hotels amán d'a Plaza d'o Torico, " +"Teruel”." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:366 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicación simpla de mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Grandaria d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Grandaria d'a finestra (amplaria y altura )" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Posición d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window position (X and Y)." +msgstr "Posición d'a finestra (X y Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Finestra maximizada" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window maximization state" +msgstr "Estau de maximización d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "Numero maximo de resultaus de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Numero maximo de resultaus de búsca ta buscas por cheocodigo." + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "Numero de puestos recients que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "Numero de puestos visitaus recientment que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Facebook usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Foursquare usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Arredol de" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Salir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilidat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar en Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar en Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Rechistrar" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Totz" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amigos d'amigos" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Solament amigos" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Solament yo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Público" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidores" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privau" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Qué bi ha aquí?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar os servicios d'ubicación ta trobar a suya posición" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Configuración d'a ubicación" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Trigar o tipo de mapa" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Commutar o planificador de rotas" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Commutar favoritos" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Mapas ye desconnectau" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Mapas ameneste una connexión a Internet activa ta funcionar correctament, " +"pero no s'ha trobau garra." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Comprebe a configuración d'a suya connexión y d'o suyo proxy." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Adhibir a la rota nueva" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Ubrir con unatra aplicación" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Rechistrar-se aquí" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Prete Intro ta buscar" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Ubrir ubicación" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Ubrir" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Rota buscada por GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Amostrar más resultaus" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:207 +msgid "Current location" +msgstr "Ubicación actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "No se puede trobar \"%s\" en o ret social" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede trobar un puesto adequau ta rechistrar-se en ista ubicación" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credencials han caducau. Ubra as Cuentas en linia ta encetar sesión y " +"activar ista cuenta." + +#: ../src/checkIn.js:153 ../src/checkInDialog.js:289 +msgid "An error has occurred" +msgstr "Ha ocurriu una error" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Cargando" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Seleccionar un puesto" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Facebook. Trigue " +"un d'a lista." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Foursquare. " +"Trigue un d'a lista." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Rechistrar-se en %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensache opcional ta rechistrar-se en %s." + +#: ../src/mainWindow.js:314 +msgid "Failed to connect to location service" +msgstr "Falló en connectar a o servicio d'ubicación" + +#: ../src/mainWindow.js:319 +msgid "Position not found" +msgstr "Posición no trobada" + +#: ../src/mainWindow.js:364 +msgid "translator-credits" +msgstr "" +"Jorge Pérez Pérez , 2014\n" +"Daniel Martínez Cucalón " + +#: ../src/mainWindow.js:367 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas ta GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:120 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:127 +msgid "limited" +msgstr "limitau" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:133 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:140 +msgid "designated" +msgstr "designau" + +#: ../src/routeService.js:69 +msgid "No route found." +msgstr "No s'ha trobau a rota." + +#: ../src/routeService.js:76 +msgid "Route request failed." +msgstr "Falló en solicitar a rota." + +#: ../src/routeService.js:147 +msgid "Start!" +msgstr "Empecipiar" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Codigo postal: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Codigo d'o país: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Población: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Horario d'obridura: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Acceso ta siellas de ruedas: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:197 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimau: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "tot o día" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "dende l'amaneixer dica a mesa d'o sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "festivos" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "vacancias escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "zarrau" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Desconoixiu" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:259 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f pietz" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zaguera ubicación conoixida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zaguera ubicación conoixida (latitut y longaria en graus) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location" +#~ msgstr "Descripción d'a zaguera ubicación conoixida" + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción d'a zaguera ubicación conoixida de l'usuario." + +#~ msgid "User set last known location" +#~ msgstr "Zaguera ubicación conoixida establida por l'usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si a zaguera ubicación conoixida la establió l'usuario manualment." + +#~ msgid "I’m here!" +#~ msgstr "Soi aquí!" + +#~ msgid "Street" +#~ msgstr "Carrera" + +#~ msgid "Satellite" +#~ msgstr "Satelite" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 00000000..900fcd71 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,1620 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Khaled Hosny , 2013, 2014, 2017. +# Safa Alfulaij , 2016, ٢٠١٦. +# Ibrahim Saed , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-29 17:50+0200\n" +"PO-Revision-Date: 2017-09-29 16:01+0200\n" +"Last-Translator: Khaled Hosny \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Virtaal 1.0.0-beta1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "خرائط جنوم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "جِد الأماكن حول العالم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"يمكّنك تطبيق الخرائط من مطالعة خرائط العالم أجمع، فهو يمكّنك من العثور على ما " +"تريد بالبحث عن مدينة أو اسم شارع أو مكان ستجمتع فيه مع صديقك." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"يستخدم تطبيق الخراط قاعدة بيانات «خريطة الشارع المفتوحة» التعاونية، والتي " +"شارك فيها آلاف الأشخاص حول العالم." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"يمكن أيضا البحث عن أماكن محدّدة النوع، مثل ”Pubs near Main Street, Boston\" " +"أو \"Hotels near Alexanderplatz, Berlin“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "الخرائط" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "تطبيق خرائط بسيط" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "خرائط;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "يسمح بإظهار مكانك على الخريطة." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "آخر مكان معروض" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "إحداثيات آخر مكان عُرض." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "حجم النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "حجم النافذة (العرض والارتفاع)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "موضع النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "موضع النافذة (س و ص)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "النافذة مُكبّرة" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "حالة تكبير النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "أقصى عدد لنتائج البحث" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "أقصى عدد لنتائج البحث من بحث الرمز الجغرافي." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "عدد أحدث الأماكن لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "عدد الأماكن التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "عدد أحدث المسارات لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "عدد المسارات التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "إعداد خصوصية الدخول إلى «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فيسبوك» قد استُخدم. القيم الممكنة هي: EVERYONE أو " +"FRIENDS_OF_FRIENDS أو ALL_FRIENDS أو SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "إعداد «فورسكوير» لخصوصية الدخول" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فورسكوير» قد استُخدم. القيم الممكنة هي: public أو " +"followers أو private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كمنشور في حساب فيسبوك المرتبط مع حساب " +"«فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كتغريدة في حساب «فيسبوك» المرتبط مع " +"حساب «فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "اسم مستخدم أو عنوان البريد الإلكترونيّ في «خريطة الشارع المفتوحة»" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "يشير في حال كان المستخدم قد ولج لتحرير بيانات «خريطة الشارع المفتوحة»." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "أعدّ حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "اختصارات لو_حة المفاتيح" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "عنْ" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "الظهور" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "أل_غِ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "اد_خل" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "للجميع" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "لأصدقاء أصدقائي" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "لأصدقائي فقط" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "لي فقط" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "للعامة" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "للمتابعين" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "خاص" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ماذا يوجد هنا؟" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "انسخ المكان" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "صدّر كصورة" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "صدّر العرض" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_صدّر" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ضمّن المسارات والعلامات" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "عام" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "اعرض الاختصارات" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "ابحث" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "اطبع المسار" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "منظور الخريطة" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "قرّب" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بعّد" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "اعرض/أخفِ المقياس" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "انتقل إلى منظور الشارع" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "انتقل إلى منظور جوي" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "افتح طبقة الشكل" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "حمّل طبقة خريطة" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "فعّل خدمات التموضع لتجد مكانك" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "إعدادات التموضع" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "اختر نوع الخريطة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "اعرض/أخفِ المفضّلة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "اطبع المسار" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "تطبيق الخرائط يعمل بلا اتصال!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"يحتاج تطبيق الخرائط إلى اتصال إنترنت نشط ليعمل كما ينبغي، لكنه لم يعثر على " +"واحد." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "افحص إعدادات اتصالك ووكيلك." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "أضفه إلى مسار جديد" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "افتح بتطبيق آخر" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "علّمه كمفضّل" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "ادخل هنا" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "سجّل لتحرير الخرائط" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"ساهم في تحسين الخريطة باستخدام\n" +"حساب «خريطة الشارع المفتوحة»." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "كلمة السر" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "لِج" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "أليس لديك حساب؟" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"آسفون، لم يعمل هذا. من فضلك جرّب مجددا، أو زُر\n" +"«خريطة الشارع " +"المفتوحة» لتصفير كلمة السر." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "رمز التأكيد لا يتطابق، من فضلك جرّب مجددا." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "أدخل رمز التأكيد الظاهر أعلاه" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "أكّد" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "أنت والج" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "حسابك في «خريطة الشارع المفتوحة» نشط." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "اخرج" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "الشوارع" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "رقم المنزل" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "الرقم البريدي" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "المدينة" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "النوع" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "بلا" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "أضف حقلا" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "تعليق" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ستظهر التعديلات على الخريطة في كل الخرائط التي تستخدم بيانات «خريطة الشارع " +"المفتوحة»." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "المستخدمة حديثًا" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ألغِ" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "التالي" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "اعرض معلومات أكثر" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "اضغط Enter للبحث" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "لا نتائج" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "اسحب لتغيير المسار" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "افتح المكان" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "ا_فتح" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "افتح طبقة" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "اعرض/أخفِ" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "البحث عن المسار يدعمه GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "البحث عن المسار يدعمه OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسارات وسائل النقل العامة توفرها جنوم بناء على\n" +"بيانات المواعيد من شركات و هيئات النقل.\n" +"ليست الشركات و الهيئات مسئولة عن النتائج المعروضة.\n" +"لا تضمن جنوم صحة المسارات و لا المواعيد المعروضة.\n" +"الأسماء تعتبر علامات تجارية مسجلة حسب القواعد." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "اعرض نتائج أكثر" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "أخف الخطوات البينية و المعلومات" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "اعرض الخطوات البينية و المعلومات" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "غادر الآن" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "غادر في" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "تصل في" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "اعرض" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "حافلات" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ترام" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "قطارات" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "قطارات الأنفاق" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "عبّارات" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "المكان الحالي" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "الدقة: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "قرّب لتضيف مكانا!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "حسنًا" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "فشل إيجاد بنية قطع خرائط في الدليل" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "فشل تحليل ملف XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "الصفات المطلوبة ناقصة" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "تعذر إيجاد عنصر OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "مسار يشير إلى دليل محليّ لبنية قطع خرائط" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "اختر حسابا" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "يحمّل" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "اختر مكانا" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فيسبوك». من فضلك اختر واحدا " +"من القائمة." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فورسكوير». من فضلك اختر " +"واحدا من القائمة." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "ادخل إلى %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "اكتب رسالة اختيارية للدخول إلى %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "حدث خطأ ما" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "تعذّر إيجاد ”%s“ في الخدمة الاجتماعية" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "تعذّر إيجاد مكان مناسب للدخول إلى هذا المكان" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"انتهت صلاحية معلومات الولوج، من فضلك افتح الحساب الشبكية لتلج وتفعّل هذا " +"الحساب" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "المسار من هنا" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "أضف مقصدا" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "المسار إلى هنا" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "لم أجد شيئا هنا!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"أُضيف المكان إلى الخريطة، لكن لاحظ أنه قد يأخذ وقتا ليظهر عليها وفي نتائج " +"البحث." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "نظام الملفات للقراءة فقط" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "لا صلاحيات لك للحفظ هناك" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "الدليل غير موجود" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "لم يُحدّد اسم ملف" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "تعذّر تصدير العرض" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "إحداثية غير صالحة" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "خطأ في التحليل" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "الهندسة مجهولة" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "فشل طلب المسار." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "لا مسار." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "ابدأ!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "كل ملفات الطبقات" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "فشل الاتصال بخدمة التموضع" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"فريق عربآيز للترجمة http://www.arabeyes.org:\n" +"خالد حسني\t\n" +"صفا الفليج\t" + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "تطبيق خرائط لجنوم" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "نوع الملفات غير مدعوم" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "فشل فتح الطبقة" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "فشل فتح العنوان الجغرافي" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "لم يُعثر على بدائل سابقة." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "لم يُعثر على بدائل لاحقة." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "لم يُعثر على بيانات المواعيد لهذا المسار." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "اسم المستخدم أو كلمة السر خاطئة" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "نجح" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "طلب سيّئ" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "الكائن غير موجود" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "ثمة تضارب، هناك من عدّل الكائن لتوّه" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "حُذف الكائن" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "يشير الطريق أو العلاقة إلى ابن غير موجود" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "الاسم" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "الاسم الرسمي. غالبا ما يكون على العلامات." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "العنوان" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "موقع الوِب" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"موقع الوِب الرسمي. حاول استخدام أبسط صيغة للعنوان مثل http://example.com بدل " +"http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "الهاتف" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"رقم الهاتف. استخدم الصيغة العالمية، مبتدءًا الرقم بعلامة +. انتبه لحقوق " +"الخصوصية في الدول، خصوصا تلك الخاصة بأرقام الهواتف الخاصة." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "ويكيبيديا" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"الصيغة المُستخدمة هنا تتضمن رمز اللغة وعنوان المقال مثل ”ar:عنوان المقالة“." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "ساعات العمل" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "طالع الوصلة في اللصيقة لتجد مساعدة حول الصيغة." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "عدد السكان" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "الارتفاع الرأسي" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ارتفاع نقطة (عن مستوى سطح البحر) بالأمتار." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "دخول الكراسي ذات العجلات" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "مسموح" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "ممنوع" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "محدود" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "محدّد" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "الوصول إلى الإنترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "واي-فاي" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "سلكي" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "طرفيّة" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "خدمة" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "الدين" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "إحيائية" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "بهائية" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "بوذية" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "كاو دائية" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "مسيحية" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "كونفشيوسية" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "هندوسية" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "جاينية" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "يهودية" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "إسلام" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "ديانات متعددة" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "وثنية" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "باستافارية" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "سينتولوجيا" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "شنتو" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "سيخية" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "روحانية" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "طاوية" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "توحيدية كونية" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "فودو" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "يزدية" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرادشتية" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "حمامات" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "ملاحظة" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"معلومات تعلم الخرائطيين الآخرين عن معلومات غير بديهية عن عنصر ما، أو غرض " +"المؤلف عند إنشائه، أو ملاحظات تساعد في تحسينه." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "اختر نوعًا" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "تمّ" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "السّكانيّة:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "الارتفاع الرأسي:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "ساعات العمل:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "الوصول إلى الإنترنت:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "الدين:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "حمامات:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "دخول الكراسي ذات العجلات:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "الهاتف:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "فشل تحليل العنوان الجغرافي" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "مسموح" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ممنوع" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "محدّد" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "من %s إلى %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "يحمّل قطع الخرائط للطباعة" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "يمكنك إجهاض الطباعة إن أخذت وقتا طويلا" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "أجهض الطباعة" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "فشل فتح العنوان" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "فشل تحميل الملف" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "الوقت المقدّر: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "تصل إلى %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "تصل" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "ابدأ من %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "ابدأ" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "اعرض تعليمات المشي" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "أخفِ تعليمات المشي" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "امشِ %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "حمّل البدائل السابقة" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "حمّل البدائل اللاحقة" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %B" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d دقيقة" +msgstr[1] "دقيقة" +msgstr[2] "دقيقتين" +msgstr[3] "%d دقائق" +msgstr[4] "%d دقيقة" +msgstr[5] "%d دقيقة" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ساعة" +msgstr[1] "ساعة" +msgstr[2] "ساعتين" +msgstr[3] "%d ساعات" +msgstr[4] "%d ساعة" +msgstr[5] "%d ساعة" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ساعة" +msgstr[1] "%d:%02d ساعة" +msgstr[2] "%d:%02d ساعة" +msgstr[3] "%d:%02d ساعة" +msgstr[4] "%d:%02d ساعة" +msgstr[5] "%d:%02d ساعة" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "على مدار الساعة" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "من شروق الشمس حتى غروبها" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "يوميا" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "العطل العامة" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "العطل المدرسية" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "ليس مفتوحا" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "سلكي" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "طرفيّة" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "خدمة" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "غير معروف" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "بالضبط" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f سا" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f دق" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f ثا" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s كم" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s ميل" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s قدم" + +#~ msgid "%f km" +#~ msgstr "%f كم" + +#~ msgid "%f m" +#~ msgstr "%f م" + +#~ msgid "%f mi" +#~ msgstr "%f ميل" + +#~ msgid "%f ft" +#~ msgstr "%f قدم" + +#~ msgid "Edit Location" +#~ msgstr "حرّر المكان" + +#~ msgid "Position not found" +#~ msgstr "الموضع غير موجود" + +#~ msgid "Country code: %s" +#~ msgstr "رمز البلد: %s" + +#~ msgid "Population: %s" +#~ msgstr "عدد السكان: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "دخول الكراسي ذات العجلات: %s" + +#~ msgid "I’m here!" +#~ msgstr "أنا هنا" + +#~ msgid "Satellite" +#~ msgstr "قمر صناعي" + +#~ msgid " km2" +#~ msgstr " كم٢" + +#~ msgid " km²" +#~ msgstr " كم٢" diff --git a/po/as.po b/po/as.po new file mode 100644 index 00000000..1cf79918 --- /dev/null +++ b/po/as.po @@ -0,0 +1,260 @@ +# Assamese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Nilamdyuti Goswami , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-09-02 15:46+0000\n" +"PO-Revision-Date: 2014-09-02 21:54+0530\n" +"Last-Translator: Nilamdyuti Goswami \n" +"Language-Team: Assamese \n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"মানচিত্ৰই আপোনাক বিশ্বৰ সকলো মানচিত্ৰলৈ এটা দ্ৰুত অভিগম প্ৰদান কৰে। ই আপোনাক " +"এটা " +"নগৰ অথবা বাটৰ বাবে সন্ধান কৰি আপুনি বিচৰা স্থান দ্ৰুতভাৱে সন্ধান কৰাৰ অনুমতি " +"দিয়ে, " +"অথবা এজন বন্ধুক লগ ধৰিবলৈ এটা স্থান অৱস্থিত কৰাৰ সুবিধা দিয়ে।" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"মানচিত্ৰই সংযোগি OpenStreetMap ডাটাবেইচ ব্যৱহাৰ কৰে, যাক বিশ্বৰ বিভিন্ন " +"প্ৰান্তৰ " +"লোকে সৃষ্টি কৰিছে।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"আপুনি বিশেষ ধৰণৰ স্থান, যেনে “Pubs near Main Street, Boston“ অথবা “Hotels " +"near " +"Alexanderplatz, Berlin“ ৰ বাবে সন্ধান কৰিব পাৰিব।" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:304 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "মানচিত্ৰ" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "এটা সাধাৰণ মানচিত্ৰ এপ্লিকেচন" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "মানচিত্ৰ;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "উইন্ডোৰ আকাৰ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "উইন্ডোৰ আকাৰ (প্ৰস্থ আৰু উচ্চতা)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "উইন্ডোৰ অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "উইন্ডোৰ অৱস্থান (X আৰু Y)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "উইন্ডো সৰ্বাধিক আকাৰলৈ বৃদ্ধি কৰা হৈছে" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "উইন্ডোৰ সৰ্বাধিক আকাৰ অৱস্থা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থান আৰু সঠিকতা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান (অক্ষাংশ আৰু দ্ৰাঘিমা ডিগ্ৰিসমূহত) আৰু সঠিকতা (মিটাৰত)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "ব্যৱহাৰকাৰীৰ সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "সন্ধান ফলাফলসমূহৰ সৰ্বাধিক সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "geocode সন্ধানৰ পৰা সন্ধান ফলাফলৰ সৰ্বাধিক সংখ্যা।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "ব্যৱহাৰকাৰী দ্বাৰা সংহতি কৰা সৰ্বশেষ জ্ঞাত অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান ব্যৱহাৰকাৰী দ্বাৰা হস্তচালিতভাৱে সংহতি কৰা হৈছিল নে।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়া স্থানবোৰৰ সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়াভাৱে ভ্ৰমণ কৰা স্থানবোৰৰ সংখ্যা।" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "বিষয়ে" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "প্ৰস্থান কৰক" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ইয়াত কি আছে?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "মই ইয়াত আছো!" + +#: ../src/mainWindow.js:302 +msgid "translator-credits" +msgstr "নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)" + +#: ../src/mainWindow.js:305 +msgid "A map application for GNOME" +msgstr "GNOME ৰ বাবে এটা মানচিত্ৰ এপ্লিকেচন" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "বৰ্তমান অৱস্থানলৈ যাওক" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "মানচিত্ৰৰ ধৰণ বাছক" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "পথ পৰিকল্পক টগল কৰক" + +#: ../src/routeService.js:73 +msgid "No route found." +msgstr "কোনো পথ পোৱা নগল।" + +#: ../src/routeService.js:80 +msgid "Route request failed." +msgstr "পথৰ অনুৰোধ ব্যৰ্থ হল।" + +#: ../src/routeService.js:151 +msgid "Start!" +msgstr "আৰম্ভ কৰক!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "দেশৰ ক'ড: %s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "পস্টেল ক'ড: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:190 +#, javascript-format +msgid "Estimated time: %s" +msgstr "আনুমানিক সময়: %s" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "বৰ্তমান অৱস্থান" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "সঠিকতা: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "অজ্ঞাত" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "অবিকল" + +#: ../src/utils.js:179 +#, javascript-format +msgid "%f km²" +msgstr "%f km²" + +#: ../src/utils.js:276 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:278 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:288 +#, javascript-format +#| msgid "%f km²" +msgid "%f km" +msgstr "%f km" + +#: ../src/utils.js:290 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#~ msgid "To" +#~ msgstr "লৈ" + +#~ msgid "From" +#~ msgstr "পৰা" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Street" +#~ msgstr "বাট" + +#~ msgid "Satellite" +#~ msgstr "চেটেলাইট" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 00000000..a85e0b41 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1096 @@ +# Bulgarian translation for gnome-maps. +# Copyright (C) 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ivailo Panamski , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-14 21:19+0200\n" +"PO-Revision-Date: 2016-02-14 21:19+0200\n" +"Last-Translator: \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Търсене на места по света" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"„Картите“ ви дават бърз достъп до места и карти по целия свят. Те ви " +"позволяват да намерите бързо мястото, което търсите, независимо дали е град, " +"улица или място на уречена срещал." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Картите използват базите от данни на OpenStreetMap. Те са събрани от стотици " +"хиляди хора от целия свят." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Може да търсите и по конкретен вид място, напр. „Кръчми край Мейн Стрийт, " +"Бостън“ или „Хотели близо до Александерплац, Берлин“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:86 ../src/mainWindow.js:400 +msgid "Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Програма за преглед на карти" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "карти;глобус;атлас;maps;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "последно видяно местоположение" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Координати на последно видяно местоположение." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Размери на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Размери (широчина и дължина)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Положение на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Положение на прозореца (X и Y)л" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Максимизиран прозорец" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Дали прозорецът на програмата е максимизиран" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Максимален брой на резултатите от търсене" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Максимален брой на резултати от търсенето по геокод." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Брой на последните места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Брой на последно посетени места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Брой на последни маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Брой на последно посетени маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Настройки за публикуване във Facebook на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последно използвани настройки за публикуване във Facebook на съобщение. " +"Възможните стойности са: „EVERYONE“ (до всички), „FRIENDS_OF_FRIENDS“ (до " +"приятелите и техните приятели), „ALL_FRIENDS“ (до приятелите) или „SELF“ (до " +"себе си)." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Настройки за публикуване във Foursquare на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последно използвани настройки за публикуване във Foursquare на посещение. " +"Възможните стойности са: „public“ (до всички), „followers“ (до " +"последователите) или „private“ (частно)." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Публикуване във Facebook на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да публикува посещението на някое място в регистрацията към " +"Facebook свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Публикуване във Twitter на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да „изчурулика“ посещението на някое място в регистрацията " +"към Twitter свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Потребителско име или е-поща за OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показва дали потребителят е влязъл, за да променя информация в OpenStreetMap." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Създаване на регистрация в OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Относно" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Видимост" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Публикуване във Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Публикуване в Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Отказ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Обявяване на посещение" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Всички" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Приятели и техни приятели" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Само приятели" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "За себе си" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Публично" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Последователи" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Частно" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Какво има тук?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Копиране на местоположението" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Изнасяне като изображение" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Добавяне към OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Изнасяне на изглед" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Изнасяне" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Включване на маршрут и маркери" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Общи" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показване на клавишните комбинации" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Търсене" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Изглед карти" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приближаване" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалечаване" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Превключване на ска̀лата" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Към текущото местоположение." + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Зареждане на слой" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Включване на услугата за намиране на местоположението ви" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Настройки на местоположението" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Текущо местоположение" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Избиране на вид карта" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Включване на любими" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Няма връзка с Интернет!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Картите се нуждаят от връзка с Интернет за да функционират правилно, но " +"такава няма." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Проверка на връзката и сървъра-посредник." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Добавяне към нов маршрут" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Отваряне с друга програма" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Маркиране като любим" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Обявяване на посещение" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Регистрация в OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Впишете се, за да редактирате картите" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогнете да подобрим картите, като\n" +"използвате регистрация в OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Е-поща" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Парола" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Вписване" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "Нямате регистрация?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Това не сработи. Опитайте отново, или посетете\n" +"OpenStreetMap, за да промените паролата си." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "Кодът за потвърждение не съвпада, опитайте отново." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Въведете кода за потвърждение" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Потвърждаване" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Вписани сте" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Регистрацията ви в OpenStreetMap акаунт активна" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Изход" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "None" +msgstr "Няма" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "Recently Used" +msgstr "Скоро ползвани" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Edit on OpenStreetMap" +msgstr "Редактиране в OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Cancel" +msgstr "Отказ" + +#: ../data/ui/osm-edit-dialog.ui.h:5 ../src/osmEditDialog.js:400 +msgid "Next" +msgstr "Следващ" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "Показване на повече информация" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Натиснете „Enter“ за търсене" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Отваряне на местоположение" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Отваряне" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Отваряна на слой" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "Включване на видимост" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Търсене на маршрут с GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намиране на още резултати" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:148 +msgid "Current location" +msgstr "Текущо местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Прецизност: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Приближаване за добавяне на местоположение!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Добре" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Структурата на плочката не може да се открие в папка" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Документът не може да бъде анализиран като XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Липсват задължителни атрибути" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Не може да се открие елемент на OpenStreetMap" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Път към локалната папка със структури" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Избор на регистрация" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Зареждане" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Избор на място" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Facebook. Изберете от списъка" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Foursquare. Изберете от списъка." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Обявяване на посещение на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Добавяне на незадължително съобщение при посещаване на „%s“." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:437 +msgid "An error has occurred" +msgstr "Възникна грешка" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "„%s“ не може да се намери в социалната услуга" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "На това местоположение няма какво да се обяви като посетено" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Идентификацията ви е изтекла, отворете „Регистрации в сайтове“, за да се " +"впишете и използвате тази регистрация" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "Маршрут от тук" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "Добавяне на цел" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "Маршрут до тук" + +#: ../src/contextMenu.js:182 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположението е добавено на картата, може да мин известно време преди да " +"се появи в резултатите от търсене." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Файловата система е само за четене" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Нямате права да записвате тук" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "Папката не съществува" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Не е зададено име на файла" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Изгледът не може да бъде изнесен" + +#: ../src/geoJSONSource.js:99 +msgid "invalid coordinate" +msgstr "грешни координати" + +#: ../src/geoJSONSource.js:143 ../src/geoJSONSource.js:183 +#: ../src/geoJSONSource.js:198 +msgid "parse error" +msgstr "грешка при анализ" + +#: ../src/geoJSONSource.js:177 +msgid "unknown geometry" +msgstr "неизвестна геометрия" + +#: ../src/geoJSONSource.js:211 +msgid "failed to load file" +msgstr "файлът не може да се зареди" + +#: ../src/mainWindow.js:348 +msgid "Failed to connect to location service" +msgstr "Грешка при свързването с услуги за местоположение" + +#: ../src/mainWindow.js:353 +msgid "Position not found" +msgstr "Позицията не е намерена" + +#: ../src/mainWindow.js:398 +msgid "translator-credits" +msgstr "" +"Ивайло Панамски \n" +"Александър Шопов \n" +"\n" +"Проектът за превод на GNOME има нужда от подкрепа.\n" +"Научете повече за нас на http://gnome.cult." +"bg\n" +"Докладвайте за грешки на http://gnome." +"cult.bg/bugs" + +#: ../src/mainWindow.js:401 +msgid "A map application for GNOME" +msgstr "Карти за GNOME" + +#: ../src/mapView.js:233 +msgid "File type is not supported" +msgstr "Този вид файлове не се поддържат" + +#: ../src/mapView.js:240 +msgid "Failed to open layer" +msgstr "Слоят не може да се отвори" + +#: ../src/mapView.js:276 +msgid "Failed to open GeoURI" +msgstr "Геоадресът не може да бъде отворен" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:439 +msgid "Incorrect user name or password" +msgstr "Грешно потребителско име или парола" + +#: ../src/osmConnection.js:441 +msgid "Success" +msgstr "Успех" + +#: ../src/osmConnection.js:443 +msgid "Bad request" +msgstr "Лоша заявка" + +#: ../src/osmConnection.js:445 +msgid "Object not found" +msgstr "Обектът не е намерен" + +#: ../src/osmConnection.js:447 +msgid "Conflict, someone else has just modified the object" +msgstr "Възникна проблем, някой друг тъкмо промени обекта" + +#: ../src/osmConnection.js:449 +msgid "Object has been deleted" +msgstr "Обектът беше изтрит" + +#: ../src/osmConnection.js:451 +msgid "Way or relation refers to non-existing children" +msgstr "Пътят или връзката се отнася към несъществуващ обект" + +#: ../src/osmEditDialog.js:98 +msgid "Name" +msgstr "Име" + +#: ../src/osmEditDialog.js:103 ../src/placeBubble.js:158 +msgid "Website" +msgstr "Сайт" + +#: ../src/osmEditDialog.js:108 +msgid "Phone" +msgstr "Телефон" + +#: ../src/osmEditDialog.js:114 ../src/placeBubble.js:164 +msgid "Wikipedia" +msgstr "Уикипедия" + +#: ../src/osmEditDialog.js:119 +msgid "Opening hours" +msgstr "Работно време" + +#: ../src/osmEditDialog.js:126 +msgid "Population" +msgstr "Население" + +#: ../src/osmEditDialog.js:131 +msgid "Wheelchair access" +msgstr "Инвалидни колички" + +#: ../src/osmEditDialog.js:134 ../src/osmEditDialog.js:143 +msgid "Yes" +msgstr "Да" + +#: ../src/osmEditDialog.js:135 ../src/osmEditDialog.js:144 +msgid "No" +msgstr "Не" + +#: ../src/osmEditDialog.js:136 +msgid "Limited" +msgstr "Непълно" + +#: ../src/osmEditDialog.js:137 +msgid "Designated" +msgstr "Обозначено" + +#: ../src/osmEditDialog.js:140 +msgid "Internet access" +msgstr "Достъп до Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:145 ../src/translations.js:341 +msgid "WLAN" +msgstr "Безжичен" + +#: ../src/osmEditDialog.js:146 +msgid "Wired" +msgstr "Етернет" + +#: ../src/osmEditDialog.js:147 +msgid "Terminal" +msgstr "Техни компютри" + +#: ../src/osmEditDialog.js:148 +msgid "Service" +msgstr "Обслужване" + +#: ../src/osmEditDialog.js:217 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавяне в OpenStreetMap" + +#: ../src/osmEditDialog.js:268 +msgid "Select Type" +msgstr "Избор на вид" + +#: ../src/osmEditDialog.js:386 +msgid "Done" +msgstr "Готово" + +#: ../src/placeBubble.js:127 +msgid "Population:" +msgstr "Население:" + +#: ../src/placeBubble.js:132 +msgid "Opening hours:" +msgstr "Работно време:" + +#: ../src/placeBubble.js:137 +msgid "Internet access:" +msgstr "Достъп до Интернет:" + +#: ../src/placeBubble.js:142 +msgid "Wheelchair access:" +msgstr "Инвалидни колички:" + +#: ../src/placeBubble.js:148 ../src/placeBubble.js:152 +msgid "Phone:" +msgstr "Телефон:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Геоадресът не може да бъде анализиран" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:177 ../src/translations.js:330 +msgid "yes" +msgstr "да" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:184 +msgid "limited" +msgstr "непълно" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:190 ../src/translations.js:336 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:197 +msgid "designated" +msgstr "обозначено" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Не е намерен маршрут." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "Неуспешна заявка за маршрут." + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Старт!" + +#: ../src/sendToDialog.js:173 +msgid "Failed to open URI" +msgstr "Адресът не може да се зареди" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:210 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Очаквано време: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "денонощно" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "от изгрев до залез" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "всеки ден" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "почивни дни" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "ваканции" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "не е отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "етернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "техни компютри" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "обслужване" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:228 +msgid "Unknown" +msgstr "Неизвестно" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Exact" +msgstr "Точно" + +#: ../src/utils.js:334 +#, javascript-format +msgid "%f h" +msgstr "%f ч." + +#: ../src/utils.js:336 +#, javascript-format +msgid "%f min" +msgstr "%f мин." + +#: ../src/utils.js:338 +#, javascript-format +msgid "%f s" +msgstr "%f сек." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:349 +#, javascript-format +msgid "%f km" +msgstr "%f км." + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:352 +#, javascript-format +msgid "%f m" +msgstr "%f м." + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:360 +#, javascript-format +msgid "%f mi" +msgstr "%f мили" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:363 +#, javascript-format +msgid "%f ft" +msgstr "%f фута" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 00000000..394c5f37 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,610 @@ +# Bosnian translation for bosnianuniversetranslation +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the bosnianuniversetranslation package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: bosnianuniversetranslation\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-02-26 20:01+0000\n" +"PO-Revision-Date: 2015-03-03 11:19+0100\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.4\n" +"X-Launchpad-Export-Date: 2015-02-15 06:20+0000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama cijelog svijeta.Omogućava vam da brzo " +"nađete mjesto koje tražite , tražeći grad ili ulicu , ili da pronađe mjesto " +"da sretnete priajtelja." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste kolaboraticnu OpenStreetMap bazu podataka, napravljenu od " +"strane stotinu hiljada ljudi širom svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to seje what words you can usi for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak tražiti određene vrste mjesta , kao što su \"pubovi u blizini " +"Main Street, Boston \" ili \"Hoteli u blizini Alexanderplatz u Berlinu\"." + +#. Translators: This is the program nami. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:362 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program karti" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Karte;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Veličina prozora(širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Pozicija prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Pozicija prozora(X i Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Maksimalno uvećan prozor" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Stanje maksimalno uvećanog prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Maksimalan broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalan broj rezultata pretrage od geocode pretrage." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Broj posljednjih mjesta za pohranu" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za pohranu." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Facebook. " +"Moguće vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Foursquare. " +"Moguće vrijednosti su: javni, sljedbenici ili privatne." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao post na Facebook račun " +"koji je povezan s Foursquare računa." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Twitter" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao tweet na Twitter račun " +"koji je povezan s Foursquare računom--" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Odustani" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Prijava" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svi" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo meni" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je ovdje?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite na lokaciji usluge za pronalaženje lokacija" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Postavke lokacija" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Izaberi tip mape" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Prebaci planer" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Preklopi omiljene" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Karte su offline!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Karte trebaju aktivnu internetsku vezu za ispravno funkcioniranje, ali nije " +"moguće naći ." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Provjerite Vašu konekcijju i proxy postavke." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Otvori sa drugom aplikacijom" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Označi kao omiljeni" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Prijavi se ovdje" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "pritisni Enter za pretragu" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "Ot_vori" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Put nije nađen." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikaži još rezultata" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Trenutna lokacija" + +#. To translators: %s can bje "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#. Translators: %s is the place nami that user wanted to check-in */ +#: ../src/checkIn.js:136 +msgid "Cannot find \"%s\" in the social service" +msgstr "Ne mogu naći \"%s\" u socijalnoj usluzi" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu naći pogodno mjesto za prijavu na ovoj lokaciji" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akreditivi su istekli, molim otvorite mrežne naloge da se prijavite i " +"ukljčite ovaj nalog" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Došlo je do greške:" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Odaberi nalog" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Učitava se" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Izaberi mjesto" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Facebook. Odaberite ga s liste." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Foursquare. Odaberite ga s liste." + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +msgid "Check in to %s" +msgstr "Prijavi na %s" + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +msgid "Write an optional message to check in to %s." +msgstr "Napiši opcionu poruku za prijavu na %s." + +#: ../src/mainWindow.js:310 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje na lokacijsku uslugu" + +#: ../src/mainWindow.js:315 +msgid "Position not found" +msgstr "Pozicija nije nađena" + +#: ../src/mainWindow.js:360 +msgid "translator-credits" +msgstr "" +" Hasanic Nadin https://launchpad.net/~nhasanic1\n" +" Merima Cisija https://launchpad.net/~cisijam" + +#: ../src/mainWindow.js:363 +msgid "A map application for GNOME" +msgstr "Program karta za GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can bje accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradijent). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "dizajnirano" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Put nije nađen." + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Zahtjev za put nije uspio." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/placeBubble.js:102 +msgid "Postal code: %s" +msgstr "Poštanski broj: %s" + +#: ../src/placeBubble.js:104 +msgid "Country code: %s" +msgstr "Kod države: %s" + +#: ../src/placeBubble.js:113 +msgid "Population: %s" +msgstr "Stanovništvo: %s" + +#: ../src/placeBubble.js:116 +msgid "Opening hours: %s" +msgstr "Radno vrijeme: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +msgid "Wheelchair access: %s" +msgstr "Pristup za invalidska kolica: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +msgid "Estimated time: %s" +msgstr "Procijenjeno vrijeme : %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "po satu" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "od izlaska do zalaska Sunca" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could bje substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can bje rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could bje modified by +#. * the translation. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can bje set by the +#. * translation as needed. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:355 +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:357 +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:359 +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +msgid "%f ft" +msgstr "%f ft" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 00000000..e50f7f13 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,1913 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013-2020. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017, 2018. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-01 07:10+0200\n" +"Last-Translator: Gil Forcada \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes us dóna un accés ràpid a mapes d'arreu del món. Us permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu cercar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "El projecte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliació" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivell d'ampliació" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipus de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipus de mapa a mostrar (carrer, aeri, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Mida de la finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplada i alçada)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posició de la finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de cerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de cerca en fer-la per geocodi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mode fosc" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Si l'aplicació utilitza el mode fosc." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utilitza caselles aèries híbrides" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Si les caselles aèries haurien d'utilitzar l'estil híbrid (amb etiquetes)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tothom" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Només amics" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Només jo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Públic" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidors" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Comenceu la ruta des d'aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Afegeix una parada intermèdia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Continueu la ruta fins aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Què hi ha aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Afegeix a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exporta vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Allunya" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Commuta els preferits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Surt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obre la capa de forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra les etiquetes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Obre la capa de forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel·la" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode fosc" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporta com a imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Quant al Mapes" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Cerca una ruta" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Afegeix a la ruta nova" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Comparteix la ubicació" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marca com a preferit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Registreu-vos aquí" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correu electrònic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasenya" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreu-vos" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat a sobre" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Surt de la sessió" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrer" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de carrer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciutat" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Afegeix un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostra més informació" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'ordre de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Obre ubicació" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Envia a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Obre la capa de forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Obre" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels\n" +"seus respectius propietaris, quan es pugui aplicar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sortiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sortiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busos" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvies" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Transbordadors" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Ubicació actual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Amplia" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Mida de les caselles pel directori de caselles local" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Mostra la versió del programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignora la disponibilitat de la xarxa" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FITXER…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "S'està carregant" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-us a %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en aquesta ubicació" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No s'ha trobat res aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la cerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i desar allí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error d'anàlisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de cercar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Comença" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2019 Red Hat, Inc. i els altres autors del Mapes del GNOME" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dades del mapa de %s i col·laboradors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Caselles de mapa proporcionades per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Cerca proveïda per %s utilitzant %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Aquest tipus de fitxer no està suportat" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Èxit" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Lloc web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telèfon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Població" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (altura sobre el nivell del mar) d'un punt en metres." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designat" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Amb fil" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servei" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religió" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Lavabos" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afegeix a l'OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fet" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Ubicació sense nom" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Població:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religió:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Lavabos:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telèfon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designat" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lloc no trobat a l'OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "L'URL de l'OpenStreetMap no és vàlid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Les coordenades a l'URL no són vàlides" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "L'URL no és compatible" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si aquesta tarda massa temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Afegeix a través de la ubicació" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimeix a través de la ubicació" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Afegeix %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Obre amb %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "s'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris proporcionats per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Comença" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Arribeu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per aquesta ruta." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "No s'ha trobat un proveïdor per a aquesta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de la sortida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Aquest connector no permet cercar per l'última arribada" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continueu a %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continueu" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gireu a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Gireu a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gireu lleugerament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Gireu lleugerament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gireu pronunciadament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Gireu pronunciadament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gireu a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Gireu a la dreta" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gireu lleugerament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Gireu lleugerament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gireu pronunciadament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Gireu pronunciadament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "A la rotonda, agafeu la sortida %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "A la rotonda, agafeu la sortida a %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Agafeu la rotonda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Agafeu l'ascensor i sortiu a %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Agafeu l'ascensor" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Canvieu de sentit cap a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Canvieu de sentit cap a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Canvieu de sentit cap a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Canvieu de sentit cap a la dreta" + +#~ msgid "Primary menu" +#~ msgstr "Menú primari" diff --git a/po/ca@valencia.po b/po/ca@valencia.po new file mode 100644 index 00000000..3dde2252 --- /dev/null +++ b/po/ca@valencia.po @@ -0,0 +1,1636 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013, 2014. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-10-03 16:33+0000\n" +"PO-Revision-Date: 2017-08-01 19:02+0200\n" +"Last-Translator: Xavi Ivars \n" +"Language-Team: Catalan \n" +"Language: ca-valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes vos dóna un accés ràpid a mapes d'arreu del món. Vos permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu buscar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "mapes;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Mida de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplària i alçària)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posició de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de busca en fer-la per geocodi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Quant a" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tothom" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Només amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Només jo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Públic" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidors" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Què hi ha ací?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exporta com imatge" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Afig a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exporta vista" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exporta" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Busca" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obri la capa de forma" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Carrega la capa mapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Commuta els favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Afig a la ruta nova" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Obri amb una altra aplicació" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marca com a favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Registreu-vos ací" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Correu electrònic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Contrasenya" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "No teniu un compte?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat damunt." + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verifica" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Ix de la sessió" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrer" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Número de carrer" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Ciutat" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipus" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Afig un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Mostra més informació" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Premeu retorn per buscar" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'orde de la ruta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Obri la ubicació" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Obri" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Obri la capa" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Itinerari proporcionat per OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels " +"seus respectius propietaris, quan es puga aplicar." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Eixiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Eixiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Mostra" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Busos" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Metro" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Transbordadors" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "Ubicació actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "D'acord" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "S'està carregant" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-vos a %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en esta ubicació" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Comenceu la ruta des d'ací" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Afegiu una destinació" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Continueu la ruta fins ací" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "No s'ha trobat res ací." + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la busca." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i guardar allí" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "error d'anàlisi" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de buscar la ruta." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Comença" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Este tipus de fitxer no està suportat" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per esta ruta." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Lloc web" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Telèfon" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Població" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (alçària sobre el nivell del mar) d'un punt en metres." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Sí" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "No" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Designat" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Amb fil" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Servei" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Religió" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "Lavabos" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "Nota" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afig a l'OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Fet" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Població:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Altitud:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Religió:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Lavabos:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Telèfon:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "designat" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si esta tarda massa temps" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "S'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "Arribeu" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "Comença" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de l'eixida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Exacte" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milles" + +#~ msgid "%f ft" +#~ msgstr "%f peus" + +#~ msgid "Position not found" +#~ msgstr "No s'ha trobat la posició." + +#~ msgid "Edit Location" +#~ msgstr "Edita ubicació" + +#~ msgid "Country code: %s" +#~ msgstr "Codi de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Població: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Accés amb cadira de rodes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "S'ha produït un error en analitzar el fitxer GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'última ubicació coneguda i la precisió" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'última ubicació coneguda (latitud i longitud en graus) i la precisió " +#~ "(en metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripció de l'última ubicació coneguda de l'usuari." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Si l'última ubicació coneguda l'ha definit manualment l'usuari." + +#~ msgid "I’m here!" +#~ msgstr "Sóc aquí!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..529294ea --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1909 @@ +# Czech translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marek Černocký , 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-13 01:04+0200\n" +"Last-Translator: Marek Černocký \n" +"Language-Team: čeština \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhledávejte místa na celém světě" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikace Mapy poskytuje rychlý přístup k mapám celého světa. Díky ní můžete " +"rychle najít místo, které hledáte, ať už podle názvu města nebo ulice, nebo " +"určit místo pro setkání s přáteli." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy využívají databázi OpenStreetMap, která vzniká díky spolupráci stovek " +"tisíců lidí z celého světa." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Můžete také hledat určité typy míst, jako „restaurace poblíž ulice Kobližná, " +"Brno“ nebo „hotely poblíž Alexanderplatz, Berlín“." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá mapová aplikace" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "mapa;mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožňuje vám zobrazit si na mapě své místo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Poslední zobrazené místo" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Souřadnice naposledy zobrazeného místa." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Přiblížení" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň přiblížení" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, který se má zobrazit(běžná, letecká, atd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (šířka a výška)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poloha okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poloha okna (X a Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stav maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximální počet výsledků hledání" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximální počet výsledků hledání z geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávných míst k uchování" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených míst, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávných tras k uchování" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených tras, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Facebook. Možné " +"hodnoty jsou: EVERYONE (všem), FRIENDS_OF_FRIENDS (přátelům přátel), " +"ALL_FRIENDS (všem přátelům) nebo SELF (mě samotnému)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Foursquare. " +"Možné hodnoty jsou: public (veřejné), followers (následovníci) nebo private " +"(soukromé)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Facebooku přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Twitteru přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Uživatelské jméno nebo e-mailová adresa na OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Dává najevo, jestli je uživatel přihlášen k úpravám dat OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Poslední použitý typ dopravy pro hledání trasy" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Noční režim" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Zda je aplikace v nočním režimu" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Používat hybridní dlaždice s leteckými snímky" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Zda dlaždice s leteckými snímky mají používat hybridní styl (s popisky)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditelnost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Zveřejnit na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Zveřejnit na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušit" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Oznámit polo_hu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "všichni" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "přátelé přátel" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "jen přátelé" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "jen já" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "veřejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "příznivci" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "soukromé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtud" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Přidat průběžný cíl" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co je zde?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopírovat místo" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Přidat do OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazení" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovat" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Včetně tras a značek" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Zvolit typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddálit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Přiblížit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Přepnout oblíbené" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Tisk trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Obecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazit klávesové zkratky" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Hledat" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Vytisknout trasu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazení mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Přiblížit" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddálit" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Přepnout měřítko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Přepnout na panoramatický pohled" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Přepnout na letecký pohled" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobrazovat popisky" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otevřít uživatelskou vrstvu…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnout geolokační službu pro vyhledávání vaší polohy" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušit" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavení určování polohy" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noční režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavit účet na OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovat jako obrázek" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikaci Mapy" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Najít trasu" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapy jsou bez připojení!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby Mapy mohly fungovat, potřebují aktivní připojení k Internetu, ale žádné " +"nenalezly." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Zkontrolujte své připojení a nastavení proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Přidat novou trasu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Sdílet místo" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označit jako oblíbené" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Oznámit tuto polohu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet na OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Přihlaste se pro úpravy map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozte vylepšit mapy pomocí\n" +"účtu na OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zaregistrovat se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Přihlásit se" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Bohužel, ale nefunguje to. Zkuste to prosím znovu nebo navštivte\n" +"OpenStreetMap, abyste si znovu nastavili heslo." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Ověřovací kód nesouhlasí, zkuste to prosím znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadejte ověřovací kód zobrazený výše" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ověřit" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jste přihlášen" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet na OpenStreetMap je aktivní." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásit se" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulice" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PSČ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Město" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "žádné" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Přidat pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentář" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Změny mapy boudou viditelné všude, kde se používají\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úpravit v OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Další" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Úpravy v OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Zobrazit více informací" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nebyly nalezeny žádné výsledky" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Posloupnost trasy můžete změnit přetažením" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otevřít místo" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopírovat" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Poslat do…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otevřít" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Přepnout viditelnost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Hledání trasy pomocí GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Jízdní řády pro veřejnou dopravu jsou poskytovány službami třetích stran.\n" +"GNOME nemůže nijak zaručit správnost cestovních rozvrhů a plánů.\n" +"Může se stát, že poskytovatel nenabízí všechny dostupné způsoby dopravy, " +"například národní\n" +"poskytovatel nebude nabízet mezinárodní leteckou dopravu a u místního " +"poskytovatele mohou\n" +"scházet celostátní vlaky apod.\n" +"Zobrazené názvy a značky považujte za registrované ochranné známky, všude " +"tam, kde tomu tak má být." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobrazit více výsledků" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrýt průběžné zastávky a informace" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazit průběžné zastávky a informace" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odjezd teď" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odjezd v" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Příjezd v" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobrazit" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "tramvaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "letadla" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Současné místo" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Přiblížit pro přidání místa!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Přiblížit" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Selhalo vyhledání struktury ve složce" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Selhalo zpracování dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Schází vyžadované atributy" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nelze najít prvek OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k místní struktuře složek s dlaždicemi" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Velikost dlaždic pro místní složeku s dlaždicemi" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Zobrazit verzi programu" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignorovat dostupnost sítě" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[SOUBOR…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výběr účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítá se" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výběr místa" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Facebook. Vyberte " +"prosím nějaké ze seznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Foursquare. Vyberte " +"prosím nějaké ze seznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámení polohy na místě %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napište volitně zprávu k oznámení polohy na místě %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Vyskytla se chyba" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Na sociální službě nelze nalézt „%s“" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Na této poloze se nepodařilo najít žádné vhodné místo pro oznámení polohy" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Přihlášení vypršelo. Otevřete prosím Účty on-line, přihlaste se tam a tím " +"účet zpřístupněte." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Zde nebylo nic nalezeno!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Místo bylo přidáno do mapy, ale vezměte na vědomí, že může chvíli trvat, než " +"se zobrazí na mapě a ve výsledcích hledání." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa na souřadnicích %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Souborový systém je jen ke čtení" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemáte oprávnění ukládat do tohoto umístění" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Složka neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Není zadán název souboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nelze exportovat zobrazení" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatné souřadnice" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba zpracování" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznámé geometrické údaje" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Požadavek na vyhledání cesty selhal." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nenalezena žádná cesta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všechny soubory s vrstvami" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Selhalo připojení ke geolokační službě" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Marek Černocký " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Mapová aplikace pro GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 - 2019 Red Hat, Inc. a autoři Map GNOME" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapová data od %s a přispěvatelů" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapové dlaždice poskytuje %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Hledání zprostředkuje %s pomocí %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Typ souboru není podporován" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Selhalo otevření vrstvy" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Selhalo otevření adresy GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávné uživatelské jméno nebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspěšné" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Chybný požadavek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nebyl nalezen" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Došlo ke střetu, někdo jiný objekt právě upravil" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt byl smazán" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta nebo vztah odkazuje na neexistujícího potomka" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Název" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiální název. Typicky to, co bývá na informačních tabulích." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Stránky WWW" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiální webové stránky. Snažte se použít co nejzákladnější tvar, tj. " +"http://www.priklad.cz namísto http://www.priklad.cz/index.html" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonní číslo. Používejte mezinárodní formát začínající znakem +. Dbejte " +"místních zákonů na ochranu soukromí, zejména u soukromách telefonních čísel." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by měl obsahovat rovněž kód jazyka a název článku, jako „cs:" +"Název článku“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Otevírací doba" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Nápověda k formátu viz odkaz v popisku." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populace" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Nadmořská výška" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmořská výška bodu v metrech" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Bezbariérový přístup" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "ano" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "částečně" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "výslovně ano" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Přístup k Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "drátový" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "terminál" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "služba" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Náboženství" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "animizmus" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "bahaizmus" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "buddhizmus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "kaodaizmus" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "křesťanství" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "konfuciánství" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "hinduizmus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "džinizmus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "judaizmus" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "islám" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "více náboženství" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "pohanství" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "pastafariánství" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "scientologie" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "šintoizmus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "sikhizmus" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "spiritualizmus" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "taoizmus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "unitární univerzalizmus" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "jezídizmus" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "zarathuštrizmus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informace používané k informování ostatních autorů map o věcech, které " +"nejsou u prvku zcela zřejmé, o záměrech autora při vytváření prvku nebo k " +"názorům na další vylepšování." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Přidání do OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Vybrat typ" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Místo bez názvu" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populace:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Nadmořská výška:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Otevírací doba:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Přístup k Internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Náboženství:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalety:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Bezbariérový přístup:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Selhalo zpracování adresy GeoURI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ano" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "částečně" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "výslovně ano" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Místo nebylo v OpenStreetMap nalezeno" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Adresa URL do OpenStreetMap není platná" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Souřadnice v adrese URL nejsou platné" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Tato adreasa URL není podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítají se mapové dlaždice pro tisk" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pokud to trvá příliš dlouho, můžete tisk zrušit" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Zrušit tisk" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Přidat podle místa" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odebrat podle místa" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Otočit trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Přidat %s do %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Selhalo otevření adresy URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otevřít pomocí %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "selhalo načtení souboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Plán cesty poskytl %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start v %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chůze %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Příjezd do %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Příjezd" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazit pokyny pro pěší" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrýt pokyny pro pěší" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načíst dřívější variantu" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načíst pozdější variantu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nebyla nalezena žádná dřívější varianta." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nebyla nalezena žádná pozdější varianta." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d. %B" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Pro tuto trasu nebyly nalezeny žádné časové údaje." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Pro tuto trasu nebyl nalezen žádný poskytovatel údajů." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodina" +msgstr[1] "%s hodiny" +msgstr[2] "%s hodin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s hod" +msgstr[1] "%s∶%s hod" +msgstr[2] "%s∶%s hod" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s – %s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "24 hodin denně" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "za denního světla" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "každý den" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "státní svátky" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školní prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "zavřeno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drátové" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminál" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "služba" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Přesnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "neznámá" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "velmi přesná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s hod" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje poslední příjezd" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zahněte doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Zahněte doleva" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Zahněte mírně doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Zahněte mírně doleva" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zahněte ostře doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Zahněte ostře doleva" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zahněte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Zahněte doprava" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Zahněte mírně doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Zahněte mírně doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zahněte ostře doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Zahněte ostře doprava" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovém objezdu použijte výjezd %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovém objezdu použijte výjezd směr %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Najeďte na kruhový objezd" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použijte výtah a vystupte v %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Použijte výtah" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Proveďte otočku doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Proveďte otočku doleva" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Proveďte otočku doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Proveďte otočku doprava" diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..a6caef23 --- /dev/null +++ b/po/da.po @@ -0,0 +1,1984 @@ +# Danish translation for gnome-maps. +# Copyright (C) 2013, 2016-2018 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Kris Thomsen , 2013. +# Kenneth Nielsen , 2014. +# scootergrisen, 2015, 2019. +# Ask Hjorth Larsen , 2015, 16, 17, 18. +# Alan Mortensen , 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-09-07 18:31+0200\n" +"Last-Translator: Alan Mortensen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find steder i hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kort giver dig hurtig adgang til kort over hele verden. Det giver dig " +"mulighed for hurtigt at finde stedet du leder efter ved at søge efter en by " +"eller gade, eller et sted hvor du kan mødes med en ven." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kort bruger den kollaborative OpenStreetMap-database, skabt af flere " +"hundrede tusinde mennesker over hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan endda søge efter bestemte typer af placeringer, såsom “Pubs near Main " +"Street, Boston” eller “Hotels near Alexanderplatz, Berlin” (Dansk endnu ikke " +"understøttet)." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Kort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et simpelt kortprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillader at din placering vises på kortet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sidst viste sted" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sidst viste sted." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Korttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen af kort som skal vises (vejkort, luftfoto osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vinduesstørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vinduesstørrelse (bredde og højde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduesplacering" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduesplacering (X og Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindue maksimeret" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimeringstilstand for vindue" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimum antal af søgeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum antal af søgeresultater fra geokode-søgning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal seneste steder, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senest besøgte steder, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal seneste ruter, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senest besøgte ruter, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Facebook. Mulige " +"værdier er: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS og SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Foursquare. " +"Mulige værdier er: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som opdatering på Facebook-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som tweet i Twitter-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brugernavn eller e-mail-adresse på OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Angiver om brugeren er logget ind til at kunne redigere data i OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sidst brugte transporttype til routing" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattilstand" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet er i nattilstand." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Brug fliser til hybridluftfoto" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Hvorvidt luftfotofliser skal bruge hybrid stil (med etiketter)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighed" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annullér" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "T_jek ind" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venners venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Kun venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Kun mig" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute herfra" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tilføj mellemliggende destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute hertil" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hvad er der her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiér placering" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportér visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportér" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkludér rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Vælg korttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom ud" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom ind" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå foretrukne til/fra" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis genveje" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søg" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afslut" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom ind" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ud" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå skala til/fra" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skift til gadevisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skift til luftfotovisning" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åbn formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åbn formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå lokaliseringstjenster til for at bestemme din placering" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annullér" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Lokaliseringsindstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattilstand" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Opret OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportér som billede" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kort" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Find en rute" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Kort er offline!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kort skal bruge en aktiv internetforbindelse for at fungere korrekt, men der " +"er ingen." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Kontrollér dine indstillinger for forbindelse og proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Føj til ny rute" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Del placering" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markér som foretrukken" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Tjek ind her" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Log ind for at redigere kort" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjælp med at forbedre kortet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Adgangskode" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Tilmeld" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Log ind" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager - det fungerede ikke. Prøv venligst igen eller besøg\n" +"OpenStreetMap for at nulstille din adgangskode." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Godkendelseskoden var ikke korrekt. Prøv venligst igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Indtast godkendelseskoden vist ovenfor" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Godkend" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget ind" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Log ud" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gade" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +# Velsagtens by, postkode eller senest brugte jf. omkringstående +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tilføj felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kortændringer vil være synlige på alle kort, der\n" +"bruger data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senest brugte" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Vis flere oplysninger" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater fundet" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Træk for at ændre rækkefølge for ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åbn placering" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiér" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åbn formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åbn" + +# velsagtens af lag eller rute +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå synlighed til/fra" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøgning med GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rejseplaner for offentlig transport tilbydes af tredjepartstjenester.\n" +"\n" +"GNOME kan ikke garantere, at de viste ruter og køreplaner er korrekte.\n" +"Bemærk, at nogle udbydere måske ikke medtager alle mulige former for " +"transport,\n" +"f.eks. har en national udbyder måske ikke fly med, og en lokal udbyder har " +"måske\n" +"ikke regionale tog med.\n" +"Viste navne og mærker skal betragtes som registrerede varemærker, når dette " +"er muligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul mellemliggende stop og oplysninger" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis mellemliggende stop og oplysninger" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Tag afsted nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Afgangstidspunkt" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankomsttidspunkt" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvogne" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Færger" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Nuværende placering" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom ind for at tilføje sted!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom ind" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kunne ikke finde flisestruktur i mappe" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kunne ikke fortolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunne ikke finde OSM-element" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal flisemappestruktur" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Flisestørrelse til lokal flisemappe" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Vis programmets version" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignorér hvorvidt netværket er tilgængeligt" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Vælg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Indlæser" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Vælg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Facebook. Vælg " +"venligst et fra listen." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Foursquare. Vælg " +"venligst et fra listen." + +# Undgå problemer med forholdsord +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Tjek ind: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv valgfrit en besked for at tjekke ind her: %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Der opstod en fejl" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan ikke finde “%s” på den sociale tjeneste" + +# ?? +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan ikke finde et passende sted at tjekke ind her" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiverne er udløbet; åbn venligst Onlinekonti for at logge ind og slå " +"denne konto til" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Intet fundet her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Stedet blev føjet til kortet. Bemærk at det kan tage et stykke tid, før det " +"vises på kortet og i søgeresultaterne." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kort på %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke tilladelse til at gemme der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappen findes ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Intet filnavn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "fortolkerfejl" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukendt geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Ruteforespørgsel fejlede." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Ingen rute fundet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Kunne ikke forbinde til lokaliseringstjeneste" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Kris Thomsen\n" +"Kenneth Nielsen\n" +"scootergrisen\n" +"Ask Hjorth Larsen\n" +"Alan Mortensen\n" +"\n" +"Dansk-gruppen\n" +"Websted http://dansk-gruppen.dk\n" +"E-mail " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Et kortprogram til GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ophavsret © 2011 – 2019 Red Hat, Inc. og udviklerne af GNOME Kort" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortdata af %s og bidragydere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortfelter leveret af %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søgning leveret af %s med %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Filtypen understøttes ikke" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Kunne ikke åbne lag" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Kunne ikke åbne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Forkert brugernavn eller adgangskode" + +# Succes er et lidt stærkere ord på dansk end på engelsk. Har vi noget mere passende? +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørgsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt ikke fundet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt! En anden har netop ændret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er blevet slettet" + +# A way is an ordered list of nodes which normally also has at least one tag or is included within a Relation +# +# http://wiki.openstreetmap.org/wiki/Way +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way eller relation refererer til underelementer som ikke findes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officielle navn. Dette er typisk hvad der står på et skilt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webside" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officielle webside. Prøv at bruge den mest grundlæggende form, dvs. " +"http://eksempel.dk i stedet for http://eksempel.dk/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Brug det internationale format som begynder med tegnet +. Vær " +"opmærksom på lokale love om privatlivsbeskyttelse, især for private numre." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet bør inkludere sprogkoden og artiklens overskrift, f.eks. “da:" +"Artikeloverskrift”" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Åbningstider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se linket i etiketten for at få hjælp om format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Befolkning" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Højde" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Højde (over havoverfladen) af et punkt i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rullestolsadgang" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrænset" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Handicap" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetadgang" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådløs" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kabel" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitær universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toiletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information der bruges til at give andre kortbrugere oplysninger om et " +"element som ikke er åbenlyse, forfatterens hensigt med at oprette det, eller " +"fif om yderligere forbedringer." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Vælg type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Færdig" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unavngivet placering" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Befolkning:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Højde:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Åbningstider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetadgang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toiletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rullestolsadgang:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Fortolkning af Geo-URI mislykkedes" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrænset" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nej" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "handicap" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Placering ikke fundet i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL er ikke gyldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinater i URL er ikke gyldige" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL understøttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Indlæser kortfliser til udskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan afbryde udskriften hvis dette varer for længe" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afbryd udskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tilføj via sted" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern via sted" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vend ruten om" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tilføj %s til %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Kunne ikke åbne URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Åbn med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "kunne ikke indlæse fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Anslået tid: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rejseplaner leveret af %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starttidspunkt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankomst %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Ankomst" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis gangrute" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul gangrute" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Indlæs tidligere alternative ruter" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Indlæs senere alternative ruter" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer fundet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer fundet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Ingen køreplan fundet for denne rute." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Ingen udbyder fundet for denne rute." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "hele døgnet" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "fra solopgang til solnedgang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "helligdage" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skoleferier" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# hvorfor ikke closed? +#: src/translations.js:264 +msgid "not open" +msgstr "ikke åbent" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kabel" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjeneste" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøjagtighed: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ukendt" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Præcis" + +# h er symbolet for enheden time +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s fod" + +# Formoder der er tale om, at man ikke kan angive, hvornår man senest vil ankomme +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette udvidelsesmodul understøtter ikke senest ankomsttidspunkt" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsæt på %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Fortsæt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Drej til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Drej til venstre" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Drej lidt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Drej lidt til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Drej skarpt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Drej skarpt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Drej til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Drej til højre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Drej lidt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Drej lidt til højre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Drej skarpt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Drej skarpt til højre" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Tag %s. vej i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Drej fra mod %s i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Kør ind i rundkørslen" + +# . er for at markere ordenstal og ikke et afsluttende punktum +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tag elevatoren og stå af på %s." + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Tag elevatoren" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Lav en u-vending til venstre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Lav en u-vending til venstre" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Lav en u-vending til højre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Lav en u-vending til højre" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du ikke en konto?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Rutesøgning med OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Tilføj destination" + +#~ msgid "Open with another application" +#~ msgstr "Åbn med andet program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryk enter for at søge" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Afslut" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Åbn formlag …" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Indlæs kortlag" + +#~ msgid "Open Layer" +#~ msgstr "Åbn lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mile" + +#~ msgid "%f ft" +#~ msgstr "%f fod" + +#~ msgid "Country code: %s" +#~ msgstr "Landekode: %s" diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..310b9f26 --- /dev/null +++ b/po/de.po @@ -0,0 +1,1967 @@ +# German translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# +# Tobias Endrigkeit , 2013. +# Benjamin Steinwender , 2014. +# Christian Kirbach , 2014-2020. +# Wolfgang Stöggl , 2014-2015, 2017. +# Mario Blättermann , 2015-2018, 2020. +# Bernd Homuth , 2015. +# Paul Seyfert , 2016. +# Tim Sabsch , 2018-2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-09-04 16:52+0200\n" +"Last-Translator: Mario Blättermann \n" +"Language-Team: Deutsch \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 20.08.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karten" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Orte in der ganzen Welt finden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"»Karten« gibt Ihnen einen schnellen Zugang zu Karten aus der ganzen Welt. Es " +"erlaubt Ihnen, Orte schnell zu finden, indem Sie eine Stadt oder eine Straße " +"suchen, oder einen Ort zu finden, um einen Freund zu treffen." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"»Karten« nutzt die gemeinschaftliche OpenStreetMap-Datenbank, die von " +"hunderttausenden Menschen aus der ganzen Welt erstellt worden ist." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Suchen Sie nach bestimmten Arten von Orten, wie »Kneipen in der Nähe von " +"Main Street, Boston« oder »Hotels in der Nähe vom Alexanderplatz, Berlin«." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Das GNOME-Projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Karten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Eine einfache Karten-Anwendung" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ermöglicht die Anzeige Ihres Ortes in der Karte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Zuletzt betrachteter Ort" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinaten des letzten betrachteten Orts." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Ansichtsgröße" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Vergrößerungsstufe" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartentyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Die Art der anzuzeigenden Karte (Straße, Luftbildansicht, usw.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenstergröße" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenstergröße (Breite und Höhe)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fensterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fensterposition (X und Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenster maximiert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximierungszustand des Fensters" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximale Anzahl an Suchergebnissen" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximale Anzahl an Suchergebnissen aus der Geocode-Suche." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Facebook-Check-in" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Facebook-Check-in. " +"Mögliche Werte sind: EVERYONE (jeder), FRIENDS_OF_FRIENDS (Freunde von " +"Freunden), ALL_FRIENDS (alle Freunde) oder SELF (selbst)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Foursquare-Check-in" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Foursquare-Check-in. " +"Mögliche Werte sind: Öffentlich, Anhänger oder Privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Facebook-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Twitter-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Benutzername oder E-Mail-Adresse für OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Zeigt an, dass sich der Benutzer angemeldet hat, um OpenStreetMap-Daten " +"bearbeiten zu können." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Für die Route zuletzt benutzte Beförderungsart" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Gibt an, ob sich die Anwendung im Nachtmodus befindet." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Verwendung von Hybrid-Luftausschnitten" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Gibt an, ob Luftausschnitte Hybrid verwenden sollen (mit Markierungen)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Auf Facebook veröffentlichen" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Auf Twitter veröffentlichen" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Abbrechen" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Ein_checken" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Jeder" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Freunde von Freunden" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur Freunde" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur ich" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Öffentlich" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Anhänger" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route von hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zwischenziel hinzufügen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route hierher" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Was ist hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Ort kopieren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ansicht exportieren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportieren" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Route und Markierungen einbeziehen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Wählen Sie den Kartentyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Verkleinern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Vergrößern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Favoriten umschalten" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allgemein" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tastenkürzel anzeigen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Suchen" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Verlassen" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartenansicht" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Vergrößern" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Verkleinern" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Maßstab umschalten" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Zur Straßenansicht wechseln" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Zur Luftbildansicht wechseln" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Formebene öffnen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Markierungen anzeigen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Formebene öffnen …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Schalten Sie die Ortungsdienste ein, um Ihren Ort zu bestimmen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Abbrechen" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Einstellungen der Ortungsdienste" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-Konto einrichten" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Als Bild exportieren" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Tasten_kürzel" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Info zu Karten" + +#: data/ui/main-window.ui:56 +#| msgctxt "shortcut window" +#| msgid "Open main menu" +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/main-window.ui:81 +#| msgid "Print Route" +msgid "Find a Route" +msgstr "Route suchen" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Karten ist vom Internet getrennt!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karten erfordert eine bestehende Internetverbindung, um richtig arbeiten zu " +"können. Es besteht aber keine." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Prüfen Sie Ihre Verbindung und die Proxy-Einstellungen." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Zu einer neuen Route hinzufügen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Ort teilen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Als bevorzugt markieren" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Hier einchecken" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-Konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Anmelden, um Karten bearbeiten zu " +"können" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helfen Sie bei der Verbesserung der Karte,\n" +"indem Sie ein OpenStreetMap-Konto nutzen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-Mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passwort" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Anmelden" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Anmelden" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Das hat leider nicht funktioniert. Bitte versuchen Sie es erneut, oder " +"besuchen Sie\n" +"OpenStreetMap, um Ihr Passwort zurückzusetzen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "" +"Die Verifizierungscodes stimmen nicht überein, bitte versuchen Sie es erneut." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Geben Sie den oben angezeigten Verifizierungscode ein" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifizieren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Angemeldet" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ihr OpenStreetMap-Konto ist aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Abmelden" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straße" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hausnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postleitzahl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Stadt" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Keine" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Feld hinzufügen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartenänderungen werden in allen Karten sichtbar, die\n" +"Daten von OpenStreetMap verwenden." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Zuletzt verwendet" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Nächste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Weitere Informationen anzeigen" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Keine Ergebnisse gefunden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ziehen, um die Reihenfolge der Routenziele zu ändern" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ort öffnen" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopieren" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Senden an …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Formebene öffnen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ö_ffnen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Sichtbarkeit umschalten" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routenplanung von GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Die Reisedaten für öffentliche Verkehrsmittel werden von Drittanbietern\n" +"bereitgestellt.\n" +"GNOME kann für die Korrektheit der Routen und angezeigten Fahrzeiten\n" +"nicht garantieren. Beachten Sie, dass nicht alle Anbieter Informationen für " +"alle\n" +"Transportmittel beinhalten. Zum Beispiel könnte ein nationaler Anbieter " +"keine\n" +"Fluglinien beinhalten, oder ein lokaler Anbieter keine Regionalzüge.\n" +"Die angezeigten Namen und Marken sind als eingetragene Warenzeichen zu " +"betrachten, sofern anwendbar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Weitere Ergebnisse anzeigen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Zwischenstationen und Informationen verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zwischenstationen und Informationen anzeigen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Jetzt starten" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Abfahrt um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankunft um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Anzeigen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busse" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Straßenbahnen" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Züge" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "U-Bahn" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Fähren" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flugzeuge" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktueller Ort" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Vergrößern, um einen Ort hinzufügen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Vergrößern" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Es konnte keine Kachel-Struktur im Ordner gefunden werden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-Dokument konnte nicht ausgewertet werden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Erforderliche Attribute fehlen" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-Element kann nicht gefunden werden" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Pfad zu einer lokalen Kachel-Ordnerstruktur" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Kachelgröße des lokalen Kachel-Ordner" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Die Versionsnummer des Programms anzeigen" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Verfügbarkeit des Netzwerks ignorieren" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[DATEI …|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Wählen Sie ein Konto aus" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Wird geladen" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Wählen Sie einen Ort" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Facebook finden. " +"Bitte wählen Sie einen aus der Liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Foursquare " +"finden. Bitte wählen Sie einen aus der Liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Bei %s einchecken" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Schreiben Sie eine optionale Nachricht, um bei %s einzuchecken." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Ein Fehler ist aufgetreten" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "»%s« konnte im sozialen Netzwerk nicht gefunden werden" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Für einen Check-in konnte an diesem Ort kein geeigneter Platz gefunden werden" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Die Anmeldedaten sind abgelaufen. Bitte öffnen Sie Online-Konten, um sich " +"anzumelden und das Konto zu aktivieren" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Hier wurde nichts gefunden!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Der Ort wurde zur Karte hinzugefügt. Beachten Sie, dass es eine Zeit dauern " +"kann, bis er in der Karte und in den Suchergebnissen erscheint." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karten auf %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dateisystem ist schreibgeschützt" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Sie haben nicht die nötigen Rechte zum Speichern" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Der Ordner existiert nicht" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Kein Dateiname angegeben" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ansicht kann nicht exportiert werden" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "Ungültige Koordinaten" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "Verarbeitungsfehler" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "Unbekannte Geometrie" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Routenanfrage schlug fehl." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Keine Route gefunden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle Ebenendateien" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Es konnte keine Verbindung zum Ortungsdienst hergestellt werden" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Christian Kirbach \n" +"Tobias Endrigkeit \n" +"Benjamin Steinwender \n" +"Mario Blättermann \n" +"Bernd Homuth \n" +"Paul Seyfert \n" +"Tim Sabsch " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Eine Karten-Anwendung für GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. und die Autoren von GNOME Karten" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartendaten bereitgestellt von %s und weiteren Mitwirkenden" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartenausschnitte bereitgestellt von %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Suche bereitgestellt von %s unter Verwendung von %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Dateityp wird nicht unterstützt" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Ebene konnte nicht geöffnet werden" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Geo-Adresse konnte nicht geöffnet werden" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Benutzername oder Passwort falsch" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Erfolg" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Fehlerhafte Anfrage" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nicht gefunden" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, jemand anderes hat gerade das Objekt geändert" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt wurde gelöscht" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Weg oder Bezug verweist auf nicht existierende Unterobjekte" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" +"Der offizielle Name, der üblicherweise auf dem Ortseingangsschild erscheint." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Internet-Seite" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Die offizielle Webseite. Verwenden Sie möglichst die Grundform der Adresse, " +"zum Beispiel http://example.com statt http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Die Telefonnummer im internationalen Format, beginnend mit einem Plus-" +"Zeichen. Denken Sie an den Schutz der Privatsphäre, insbesondere für private " +"Telefonnummern." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Das verwendete Format sollte den Sprachcode und den Artikel enthalten, zum " +"Beispiel »de:Titel des Artikels«." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Öffnungszeiten" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Öffnen Sie den Verweis in der Beschriftung für Hilfe zur Formatierung." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Bevölkerung" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Höhe" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höhe eines Punktes über dem Meeresspiegel in Meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Barrierefreier Zugang" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nein" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrenzt" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Geeignet" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetzugang" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Funknetzwerk" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kabelgebunden" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismus" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaitum" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhismus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismus" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christentum" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuzianismus" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judentum" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Mehrere Religionen" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heidentum" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismus" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoismus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismus" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualismus" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Daoismus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarismus" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jesidismus" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zarathustrismus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toiletten" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Notiz" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Notiz, die anderen Kartennutzern nicht-offensichtliche Hinweise zu einem " +"Element, die Absicht des Autors bei der Erstellung, oder Hinweise zur " +"weiteren Verbesserung zur Verfügung stellt." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Typ wählen" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Abgeschlossen" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unbenannter Ort" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Bevölkerung:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Höhe:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Öffnungszeiten:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetzugang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toiletten:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Barrierefreier Zugang:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Geo-Adresse konnte nicht gelesen werden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrenzt" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nein" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "geeignet" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Ort wurde nicht in OpenStreetMap gefunden" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-Adresse ist ungültig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaten in der Adresse sind ungültig" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Adresse wird nicht unterstützt" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Von %s nach %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Kartenausschnitte zum Drucken werden geladen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Sie können den Druck abbrechen, wenn dies zu lange dauert" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Drucken abbrechen" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zwischenstopp hinzufügen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Zwischenstopp entfernen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route umkehren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s zu %s hinzufügen" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Adresse konnte nicht geöffnet werden" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Öffnen mit %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "Laden der Datei ist fehlgeschlagen" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschätzte Zeit: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Reiseplan bereitgestellt von %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Abfahrt in %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Abfahrt" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Fußweg %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankunft in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Ankunft" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Anweisungen für den Fußweg anzeigen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Anweisungen für den Fußweg verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Frühere Alternativen laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Spätere Alternativen laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Keine früheren Alternativen gefunden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Keine späteren Alternativen gefunden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Für diese Route wurden keine Fahrplandaten gefunden." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Für diese Route wurden kein Anbieter gefunden." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s Minute" +msgstr[1] "%s Minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s Stunde" +msgstr[1] "%s Stunden" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s Stunde" +msgstr[1] "%s:%s Stunden" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "jederzeit" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "von Sonnenaufgang bis Sonnenuntergang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s und %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "Jeden Tag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "gesetzliche Feiertage" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "Schulferien" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "geschlossen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "Kabelgebunden" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "Terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "Dienst" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Genauigkeit: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Unbekannt" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Genau" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h, %s min" +msgstr[1] "%s h, %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s min" +#| msgid_plural "%s mins" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dieses Plugin unterstützt nicht die letzte Ankunft" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsetzen auf %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Fortsetzen" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Halb links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Halb links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Scharf links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Scharf links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Halb rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Halb rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Scharf rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Scharf rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Im Kreisverkehr die Ausfahrt %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Im Kreisverkehr die Ausfahrt auf %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "In den Kreisverkehr fahren" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Den Aufzug nehmen und bei %s aussteigen" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Den Aufzug nehmen" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Eine Kehrtwende nach links auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Eine Kehrtwende nach links machen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Eine Kehrtwende nach rechts auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Eine Kehrtwende nach rechts machen" + +#~ msgid "Primary menu" +#~ msgstr "Hauptmenü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Sie haben kein Konto?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routenplanung von OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Ziel hinzufügen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mit einer anderen Anwendung öffnen" + +#~ msgid "Press enter to search" +#~ msgstr "Drücken Sie zum Suchen die Eingabetaste" + +#~ msgid "Quit" +#~ msgstr "Verlassen" diff --git a/po/el.po b/po/el.po new file mode 100644 index 00000000..25abf82a --- /dev/null +++ b/po/el.po @@ -0,0 +1,2043 @@ +# Greek translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Dimitris Spingos , 2013. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014, 2015. +# Efstathios Iosifidis , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-09 00:48+0300\n" +"Last-Translator: Efstathios Iosifidis \n" +"Language-Team: Greek, Modern (1453-) \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Χάρτες GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Βρείτε μέρη από όλο τον κόσμο" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Η εφαρμογή Χάρτες, σας παρέχει μια γρήγορη πρόσβαση σε χάρτες από όλο τον " +"κόσμο. Σας επιτρέπει να βρείτε γρήγορα μια τοποθεσία αναζητώντας είτε μια " +"πόλη είτε μια οδό, ή μπορείτε να εντοπίσετε μια τοποθεσία για να συναντήσετε " +"ένα φίλο." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Η εφαρμογή Χάρτες, χρησιμοποιεί την βάση δεδομένων OpenStreetMap, που έχει " +"φτιαχτεί από χιλιάδες άτομα σε όλο τον κόσμο." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Μπορείτε ακόμη και να κάνετε αναζήτηση για καθορισμένους τύπους τοποθεσιών, " +"όπως “Λέσχες κοντά στην Σταδίου, Αθήνα” ή “Ξενοδοχεία κοντά στην Ομόνοια, " +"Αθήνα”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Το έργο GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Χάρτες" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Μια απλή εφαρμογή χαρτών" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Χάρτες;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Επιτρέπει την τοποθεσία σας να εμφανιστεί στον χάρτη." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "τελευταία τοποθεσία που προβλήθηκε" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Συντεταγμένες τελευταίας τοποθεσίας που προβλήθηκε." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "εστίαση" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Επίπεδο εστίασης" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Τύπος χάρτη" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Ο τύπος του χάρτη για προβολή (δρόμος, εναέριος κλπ.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Μέγεθος παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Μέγεθος παραθύρου (πλάτος και ύψος)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Θέση παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Θέση παραθύρου (Χ και Υ)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Μεγιστοποιημένο παράθυρο" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Κατάσταση μεγιστοποίησης παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Μέγιστος αριθμός αποτελεσμάτων αναζήτησης" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" +"Μέχιστος αριθμός αποτελεσμάτων αναζήτησης από την αναζήτηση στο geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Αριθμός πρόσφατων τοποθεσιών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Αριθμός τοποθεσιών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Αριθμός πρόσφατων διαδρομών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Αριθμός διαδρομών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Ρυθμίσεις ιδιωτικότητας ελέγχου εισόδου στο Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου. Δυνατές " +"τιμές είναι: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ή SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο " +"Foursquare. Δυνατές τιμές είναι: public, followers ή private.." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Έλεγχος εισόδου του Foursquare στην αναμετάδοση του Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"αποστολή στον λογαριασμό Facebook συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Έλεγχος εισόδου στην αναμετάδοση του Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"τιτίβισμα στον λογαριασμό Twitter συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου του OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Υποδεικνύει αν ο χρήστης έχει συνδεθεί για να επεξεργαστεί τα δεδομένα του " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Τελευταία χρησιμοποιημένος τύπος μεταφορικών μέσων για δρομολόγια" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Εάν η εφαρμογή βρίσκεται σε νυχτερινή λειτουργία." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Χρήση υβριδικών πλακιδίων" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Εάν τα πλακίδια πρέπει να χρησιμοποιούν υβριδικό στυλ (με ετικέτες)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ορατότητα" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Δημοσίευση στο Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Δημοσίευση στο Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ά_κυρο" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Όλοι" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Φίλοι των φίλων" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Μόνο φίλοι" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Μόνο εγώ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Δημόσιο" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Ακόλουθοι" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Προσωπικό" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Διαδρομή από εδώ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Προσθήκη ενδιάμεσου προορισμού" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Διαδρομή προς εδώ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Τι είναι εδώ;" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Αντιγραφή τοποθεσίας" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Προβολή εξαγωγής" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Ε_ξαγωγή" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Συμπεριέλαβε διαδρομή και δείκτες" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Επιλογή τύπου χάρτη" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Εναλλαγή αγαπημένων" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Γενικά" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Εμφάνιση συντομεύσεων" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Αναζήτηση" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Έξοδος" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Προβολή χάρτη" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Εναλλαγή εστίασης" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Εναλλαγή σε προβολή δρόμου" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Εναλλαγή σε εναέρια προβολή" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Εμφάνιση ετικετών" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Άνοιγμα στρώσης σχήματος…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ενεργοποίηση υπηρεσιών τοποθεσίας για να βρείτε την τοποθεσία σας" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Ακύρωση" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ρυθμίσεις τοποθεσίας" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ρύθμιση λογαριασμού OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Εξαγωγή ως εικόνα" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Συντομεύσεις _πληκτρολογίου" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Περί του Χάρτες" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Οι Χάρτες είναι εκτός σύνδεσης!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Η εφαρμογή Χάρτες χρειάζεται μια ενεργή σύνδεση στο διαδίκτυο ώστε να " +"λειτουργήσει σωστά, αλλά δε βρέθηκε κάποια." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Ελέγξτε τις ρυθμίσεις της σύνδεσης και του διαμεσολαβητή σας." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Προσθήκη σε νέα διαδρομή" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Διαμοιρασμός τοποθεσίας" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Επισήμανση ως αγαπημένο" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in εδώ" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Λογαριασμός OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Συνδεθείτε για να επεξεργαστείτε τους " +"χάρτες" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Βοηθήστε να βελτιώσουμε τον χάρτη, χρησιμοποιώντας\n" +"ένα λογαριασμό OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Κωδικός πρόσβασης" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Εγγραφή" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Σύνδεση" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Συγγνώμη, κάτι δε λειτούργησε σωστά. Παρακαλούμε δοκιμάστε ξανά, ή " +"επισκεφθείτε το\n" +"OpenStreetMap για να επαναφέρετε τον κωδικό πρόσβασης σας." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Δεν ταιριάζει ο κωδικός επιβεβαίωσης, παρακαλούμε προσπαθήστε ξανά." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Εισάγετε τον κωδικό επιβεβαίωσης που φαίνεται παραπάνω" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Επαλήθευση" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Συνδεδεμένος/η" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ο λογαριασμός στο OpenStreetMap είναι ενεργός." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Αποσύνδεση" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Οδός" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Αριθμός κατοικίας" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Ταχ. κώδικας" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Πόλη" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Τύπος" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Χωρίς" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Προσθήκη πεδίου" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Σχόλιο" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Οι αλλαγές θα γίνουν ορατές σε όλους τους χάρτες που\n" +"χρησιμοποιούν δεδομένα του OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Πρόσφατα χρησιμοποιημένα" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Επόμενο" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Εμφάνιση περισσότερων πληροφοριών" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Δεν βρέθηκαν αποτελέσματα" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Σύρετε για να αλλάξετε την σειρά στη διαδρομή" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Άνοιγμα τοποθεσίας" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Αντιγραφή" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Αποστολή σε…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ά_νοιγμα" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Εναλλαγή ορατότητας" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Αναζήτηση διαδρομής από το GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Τα δρομολόγια για τα μέσα μαζικής μεταφοράς παρέχονται από υπηρεσίες\n" +"από τρίτους.\n" +"Το GNOME δεν μπορεί να εγγυηθεί την ορθότητα των δρομολογίων και των " +"χρονοδιαγραμμάτων που εμφανίζονται.\n" +"Σημειώστε ότι ορισμένοι πάροχοι ενδέχεται να μην περιλαμβάνουν όλους τους " +"διαθέσιμους τρόπους μεταφοράς,\n" +"π.χ. ένας εθνικός πάροχος ενδέχεται να μην περιλαμβάνει αεροπορικές " +"εταιρείες και ένας τοπικός πάροχος θα μπορούσε\n" +"παραλείψει περιφερειακά τρένα.\n" +"Τα ονόματα και τα εμπορικά σήματα που εμφανίζονται πρέπει να θεωρούνται ως " +"σήματα κατατεθέντα όταν ισχύουν." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Εμφάνιση περισσότερων αποτελεσμάτων" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Απόκρυψη ενδιάμεσων στάσεων και πληροφοριών" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Εμφάνιση ενδιάμεσων στάσεων και πληροφοριών" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Αναχώρηση τώρα" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Αναχώρηση στις" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Άφιξη στις" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Εμφάνιση" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Λεωφορεία" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Τραμ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Τρένα" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Μετρό" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Πλοία" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Αεροπλάνα" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Τρέχουσα τοποθεσία" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Εστιάστε για να προσθέσετε μια τοποθεσία!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Μεγέθυνση" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Αποτυχία εύρεσης δομής πλακιδίων στον κατάλογο" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Αποτυχία ανάλυσης εγγράφου XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Λείπουν απαιτούμενα γνωρίσματα" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Αποτυχία εύρεσης στοιχείου OSM" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Η τοποθεσία μιας τοπικής δομής πλακιδίων" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "Μέγεθος πλακιδίων για τοπικό κατάλογο πλακιδίων" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Εμφάνιση της έκδοσης του προγράμματος" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Αγνόησε διαθεσιμότητα του δικτύου" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Επιλογή λογαριασμού" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Φορτώνεται" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Επιλέξτε μια θέση" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Facebook. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Foursquare. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in στο %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Γράψτε ένα προαιρετικό μήνυμα για check in στο %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Παρουσιάστηκε σφάλμα" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Αδύνατη η εύρεση του «%s» στην κοινωνική υπηρεσία" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Αδύνατη η εύρεση μιας κατάλληλης θέσης για check-in σε αυτήν την τοποθεσία" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Τα διαπιστευτήρια έχουν λήξει, παρακαλούμε ανοίξτε τους διαδικτυακούς " +"λογαριασμούς για να εισέλθετε και να ενεργοποιήσετε αυτόν τον λογαριασμό" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Δεν βρέθηκε τίποτα εδώ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Η τοποθεσία προστέθηκε στον χάρτη, μπορεί να πάρει λίγη ώρα πρωτού " +"εμφανιστεί στον χάρτη και στα αποτελέσματα αναζήτησης." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Χάρτες στο %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Το σύστημα αρχείων είναι μόνο για ανάγνωση" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Δεν έχετε δικαιώματα για να αποθηκεύσετε" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Δεν υπάρχει ο κατάλογος" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Δεν ορίσθηκε όνομα αρχείου" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Αδυναμία εξαγωγής προβολής" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "μη έγκυρη συντεταγμένη" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "σφάλμα ανάλυσης" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "άγνωστη γεωμετρία" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Αποτυχία αιτήματος διαδρομής." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Δεν βρέθηκε διαδρομή." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Εκκίνηση!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Όλα τα αρχεία στρώσεων" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Αποτυχία σύνδεσης με την υπηρεσία τοποθεσίας" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Ελληνική μεταφραστική ομάδα GNOME\n" +" Δημήτρης Σπίγγος \n" +" Ευστάθιος Ιωσηφίδης \n" +" Εύα Φωτοπούλου \n" +" Μαρία Θουκιδίδου \n" +" Μαρία Μαυρίδου \n" +" Θάνος Τρυφωνίδης \n" +"\n" +"Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" +"http://gnome.gr/" + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "Μια εφαρμογή χάρτη για το GNOME" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Πνευματικά δικαιώματα © 2011 – 2019 Red Hat, Inc. και συγγραφείς του Χάρτες " +"GNOME" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Δεδομένα χαρτών από %s και τους συνεισφέροντες" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Τα πλακίδια των χαρτών παρέχονται από %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Η αναζήτηση παρέχεται από το %s με τη χρήση του %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Δεν υποστηρίζεται ο τύπος αρχείου" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Αποτυχία ανοίγματος στρώσης" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Αποτυχία ανοίγματος GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Επιτυχία" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Εσφαλμένο αίτημα" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Δε βρέθηκε το αντικείμενο" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Σύγκρουση, κάποιος άλλος μόλις τροποποίησε το αντικείμενο" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Το αντικείμενο έχει διαγραφεί" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ο τρόπος ή η σχέση παραπέμπουν σε μη υπάρχον θυγατρικό" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Όνομα" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Το επίσημο όνομα. Αυτό φαίνεται συνήθως στις πινακίδες." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Διεύθυνση" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Ιστότοπος" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ο επίσημος ιστότοπος. Προσπαθήστε να χρησιμοποιήσετε τη βασική μορφή της " +"διεύθυνσης. Π.χ. http://example.com αντί για http://example.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Τηλέφωνο" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Αριθμός τηλεφώνου. Χρησιμοποιήστε την παγκόσμια μορφή, ξεκινώντας με το " +"σύμβολο +. Προσέχετε τους τοπικούς νόμους περί ιδιωτικότητας, ειδικά για " +"απόρρητα τηλεφωνικά νούμερα." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Βικιπαιδεία" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Η μορφή που θα χρησιμοποιηθεί πρέπει να περιλαμβάνει τον κωδικό γλώσσας και " +"έναν τίτλο άρθρου όπως \"en:Article title\"." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Ώρες λειτουργίας" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Δείτε τον σύνδεσμο στην ετικέτα για βοήθεια στην μορφοποίηση." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Πληθυσμός" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Υψόμετρο" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Υψόμετρο (πάνω από το επίπεδο της θάλασσας) ενός σημείου σε μέτρα." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Πρόσβαση αμαξιδίου" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Ναι" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Όχι" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Περιορισμένο" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Υποδεικνυόμενο" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Ενσύρματη δικτύωση" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Υπολογιστής" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Υπηρεσία" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Θρησκεία" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Ανιμισμός" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Μπαχάι" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Βουδισμός" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Καοδαϊσμός" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Χριστιανισμός" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Κομφουκιανισμός" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Ινδουϊσμός" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Τζαϊνισμός" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Ιουδαϊσμός" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Ισλαμισμός" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Πολλαπλές θρησκείες" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Παγανισμός" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Πασαφιανισμός" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Σαηεντολογία" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Σιντό" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Σιχισμός" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Πνευματισμός" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Ταοϊσμός" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Ουνιταριανός Ουνιβερσαλισμός" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Βουντού" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Γιαζιδισμός" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Ζωροαστριανισμός" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Τουαλέτες" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Σημείωση" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Πληροφορίες που χρησιμοποιούνται για την ενημέρωση άλλων χαρτογράφων σχετικά " +"με τις μη προφανείς πληροφορίες σχετικά με ένα στοιχείο, την πρόθεση του " +"δημιουργού κατά τη δημιουργία του, ή συμβουλές για περαιτέρω βελτίωση." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Επιλογή τύπου" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Έτοιμο" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Άγνωστο μέρος" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Πληθυσμός:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Υψόμετρο:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Ώρες λειτουργίας:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Πρόσβαση στο διαδίκτυο:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Θρησκεία:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Τουαλέτες:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Πρόσβαση αμαξιδίου:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Τηλέφωνο:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Αποτυχία ανάλυσης Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ναι" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "περιορισμένη" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "όχι" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "υποδεικνυόμενο" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Η τοποθεσία δεν βρέθηκε στο OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Η URL του OpenStreetMap δεν είναι έγκυρη" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Οι συντεταγμένες στη URL δεν είναι έγκυρες" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Η URL δεν υποστηρίζεται" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Από %s σε %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Φόρτωση χάρτη για εκτύπωση" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Μπορείτε να ακυρώσετε την εκτύπωση αν αυτό διαρκεί πολλή ώρα" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ακύρωση εκτύπωσης" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Προσθήκη μέσω της τοποθεσίας" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Αφαίρεση μέσω της τοποθεσίας" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Αντίστροφη διαδρομή" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Προσθήκη %s σε %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Αποτυχία ανοίγματος του URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Άνοιγμα με %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "αδυναμία φόρτωσης αρχείου" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Εκτιμώμενος χρόνος: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Οι διαδρομές παρέχονται από %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Έναρξη από %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Έναρξη" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Περπάτημα %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Άφιξη στο %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Άφιξη" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Εμφάνιση οδηγιών περπατήματος" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Απόκρυψη οδηγιών περπατήματος" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Φόρτωση νεοτέρων εναλλακτικών" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Φόρτωση τελευταίων εναλλακτικών" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Δεν βρέθηκαν νεότερες εναλλακτικές." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Δεν βρέθηκαν τελευταίες εναλλακτικές." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Δεν βρέθηκε δρομολόγιο γι' αυτή τη διαδρομή." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Δεν βρέθηκε πάροχος γι' αυτή τη διαδρομή." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s λεπτό" +msgstr[1] "%s λεπτά" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ώρα" +msgstr[1] "%s ώρες" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ώρα" +msgstr[1] "%s:%s ώρες" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "εικοσιτετράωρο" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "από την ανατολή μέχρι τη δύση του ήλιου" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "κάθε ημέρα" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "επίσημες αργίες" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "σχολικές αργίες" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "δεν είναι ανοικτό" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ενσύρματο δίκτυο" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "υπολογιστής" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "εξυπηρέτηση" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ακρίβεια: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Άγνωστο" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Ακριβής" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s ω" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s λεπτό" +msgstr[1] "%s h %s λεπτά" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s λεπτ" +msgstr[1] "%s λεπτ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s δ" +msgstr[1] "%s δ" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Αυτό το πρόσθετο δεν υποστηρίζει την τελευταία άφιξη" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Συνεχίστε στο %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Συνέχεια" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Στρίψτε αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Στρίψτε αριστερά" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Στρίψτε λίγο αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Στρίψτε λίγο αριστερά" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Απότομη στροφή αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Απότομη στροφή αριστερά" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Στρίψτε δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Στρίψτε δεξιά" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Στρίψτε λίγο δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Στρίψτε λίγο δεξιά" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Απότομη στροφή δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Απότομη στροφή δεξιά" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο προς %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Πάρτε τον κυκλικό κόμβο" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Πάρτε τον ανισόπεδο κόμβο και εξέλθετε από το %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Πάρτε τον ανισόπεδο κόμβο" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Κάντε μια αριστερή αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Κάντε μια αριστερή αναστροφή" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Κάντε μια δεξιά αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Κάντε μια δεξιά αναστροφή" + +#~ msgid "Don’t have an account?" +#~ msgstr "Δεν έχετε λογαριασμό;" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Προσθήκη προορισμού" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Αναζήτηση διαδρομής από το OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Άνοιγμα με άλλη εφαρμογή" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Press enter to search" +#~ msgstr "Πατήστε enter για αναζήτηση" + +#~ msgid "Quit" +#~ msgstr "Έξοδος" + +#~ msgid "OK" +#~ msgstr "Εντάξει" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Άνοιγμα στρώσης σχήματος…" + +#~ msgid "Load Map Layer" +#~ msgstr "Φόρτωση στρώσης χάρτη" + +#~ msgid "Open Layer" +#~ msgstr "Άνοιγμα στρώσης" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Η τοποθεσία δεν βρέθηκε" + +#~ msgid "Postal code: %s" +#~ msgstr "Ταχ. κώδικας: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Κωδικός χώρας: %s" + +#~ msgid "Population: %s" +#~ msgstr "Πληθυσμός: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Πρόσβαση αμαξιδίου: %s " + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Αποτυχία ανάλυσης αρχείου GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Κοινή χρήση" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Τελευταία γνωστή θέση και ακρίβεια" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Τελευταία γνωστή θέση (πλάτος και μήκος σε μοίρες) και ακρίβεια (σε " +#~ "μέτρα)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Περιγραφή της τελευταίας γνωστής θέσης του χρήστη." + +#~ msgid "User set last known location" +#~ msgstr "Ορισμός της τελευταίας γνωστής τοποθεσίας από τον χρήστη" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Εάν η τελευταία γνωστή τοποθεσία ορίστηκε χειροκίνητα από τον χρήστη." + +#~ msgid "I’m here!" +#~ msgstr "Είμαι εδώ!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "From" +#~ msgstr "Από" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Satellite" +#~ msgstr "Δορυφόρος" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 00000000..19af997d --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,1987 @@ +# British English translation of gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER. +# This file is distributed under the same licence as the gnome-maps package. +# Philip Withnall , 2013. +# Bruce Cowan , 2017-2020. +# Zander Brown , 2019-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-09-02 09:53+0100\n" +"Last-Translator: Zander Brown \n" +"Language-Team: English - United Kingdom \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Project-Style: gnome\n" +"X-Generator: Gtranslator 3.36.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find places around the world" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "The GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "A simple maps application" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Allows your location to be shown on the map." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom level" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Map type" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "The type of map to display (street, aerial, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximised" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximisation state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Last used transportation type for routing" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Night mode" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Whether the application is in night mode." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Use hybrid aerial tiles" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Whether aerial tiles should use hybrid style (with labels)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibility" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post on Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post on Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Everyone" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Friends of friends" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Just friends" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Just me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route from here" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Add intermediate destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route to here" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "What’s here?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copy Location" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export view" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Export" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Include route and markers" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Go to current location" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Choose map type" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom out" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Toggle favourites" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Print Route" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Show Shortcuts" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Search" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Print route" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Map View" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom out" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toggle scale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Go to current location" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Switch to street view" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Switch to aerial view" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Open shape layer" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Show Labels" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Open Shape Layer…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Turn on location services to find your location" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Location Settings" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Night Mode" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Set up OpenStreetMap Account" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Export as Image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "About Maps" + +#: data/ui/main-window.ui:56 +#| msgctxt "shortcut window" +#| msgid "Open main menu" +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Find a Route" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Maps is offline!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Check your connection and proxy settings." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Add to new route" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Share location" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Mark as favourite" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in here" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Sign in to edit maps" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help to improve the map, using an\n" +"OpenStreetMap account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Sign up" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Sign In" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "The verification code didn’t match, please try again." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Enter verification code shown above" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verify" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Signed In" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Your OpenStreetMap account is active." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sign Out" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Street" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "House number" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postal code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "City" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "None" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Add Field" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recently Used" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Next" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Show more information" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No results found" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Drag to change order of the route" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Open Location" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send To…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Open Shape Layer" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Open" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Toggle visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Route search by GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Show more results" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Hide intermediate stops and information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Show intermediate stops and information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Leave Now" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Leave By" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrive By" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Show" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Underground" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferries" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplanes" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Current location" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in to add location!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom In" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Failed to find tile structure in directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Failed to parse XML document" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Missing required attributes" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Could not find OSM element" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "A path to a local tiles directory structure" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Tile size for local tiles directory" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Show the version of the program" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignore network availability" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Select an account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Loading" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Select a place" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in to %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Write an optional message to check in to %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "An error has occurred" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Cannot find “%s” in the social service" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Cannot find a suitable place to check-in in this location" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nothing found here!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Maps at %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filesystem is read only" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "You do not have permission to save there" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "The directory does not exist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No filename specified" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Unable to export view" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "invalid coordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parse error" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "unknown geometry" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Route request failed." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "No route found." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "All Layer Files" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Failed to connect to location service" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Philip Withnall \n" +"David King \n" +"Bruce Cowan \n" +"Zander Brown " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Map data by %s and contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Map tiles provided by %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Search provided by %s using %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "File type is not supported" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Failed to open layer" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Failed to open GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Incorrect user name or password" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Success" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bad request" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object not found" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, someone else has just modified the object" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object has been deleted" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way or relation refers to non-existing children" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "The official name. This is typically what appears on signs." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Address" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Phone" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"The format used should include the language code and the article title like " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Opening hours" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "See the link in the label for help on format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevation (height above sea level) of a point in metres." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Wheelchair access" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Yes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limited" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designated" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toilets" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Select Type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Done" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unnamed place" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Population:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Opening hours:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet access:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toilets:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Wheelchair access:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Phone:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Failed to parse Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "yes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limited" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designated" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Place not found in OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL is not valid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coordinates in URL are not valid" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL is not supported" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "From %s to %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Loading map tiles for printing" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "You can abort printing if this takes too long" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abort printing" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Add via location" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via location" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverse route" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Add %s to %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Failed to open URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Open with %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "failed to load file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimated time: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraries provided by %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Walk %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Arrive" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Show walking instructions" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Hide walking instructions" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Load earlier alternatives" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Load later alternatives" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No earlier alternatives found." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No later alternatives found." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "No timetable data found for this route." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "No provider found for this route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hour" +msgstr[1] "%s hours" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hour" +msgstr[1] "%s:%s hours" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "around the clock" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "from sunrise to sunset" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "every day" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "public holidays" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "school holidays" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "not open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "wired" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "service" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Accuracy: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Unknown" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s min" +#| msgid_plural "%s mins" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "This plug-in doesn't support latest arrival" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue on %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turn left on %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Turn left" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turn slightly left on %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Turn slightly left" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turn sharp left on %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Turn sharp left" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turn right on %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Turn right" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turn slightly right on %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Turn slightly right" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turn sharp right on %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Turn sharp right" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "In the roundabout, take exit %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "In the roundabout, take exit to %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Take the roundabout" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Take the lift and get off at %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Take the lift" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Make a left u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Make a left u-turn" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Make a right u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Make a right u-turn" + +#~ msgid "Primary menu" +#~ msgstr "Primary menu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Don’t have an account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Add destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Route search by OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "Quit" + +#~ msgid "Load Map Layer" +#~ msgstr "Load Map Layer" + +#~ msgid "Open with another application" +#~ msgstr "Open with another application" + +#~ msgid "Press enter to search" +#~ msgstr "Press enter to search" + +#~ msgid "Open Layer" +#~ msgstr "Open Layer" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "Last known location was set manually by user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I'm here!" +#~ msgstr "I’m here!" + +#~ msgid "Satellite" +#~ msgstr "Satellite" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 00000000..70521d83 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1889 @@ +# Esperanto translation for gnome-maps. +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ryan LORTIE , 2013. +# Matthew CHISHOLM , 2013. +# Daniel PUENTES , 2015. +# Nicolas MAIA , 2015. +# Baptiste DARTHENAY , 2016. +# Carmen Bianca BAKKER , 2018. +# Tirifto , 2019. +# Kristjan SCHMIDT , 2013-2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-12-15 18:16+0000\n" +"PO-Revision-Date: 2019-12-18 23:21+0200\n" +"Last-Translator: Kristjan SCHMIDT \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-DamnedLies-Scope: partial\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapoj" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trovi lokojn tra la mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapoj donas al vi rapidan aliron al mapoj de la tuta mondo. Ĝi ebligas vin " +"rapide trovi la lokon, kiun vi serĉas, serĉante urbon aŭ straton, aŭ trovi " +"lokon por renkonti amikon." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapoj uzas la kunlaboran datumbazon OpenStreetMap, farita de centoj da miloj " +"da personoj tra la tuta mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vi eĉ povas serĉi specifajn specojn de lokoj, kiel ekzemple “Trinkejo " +"proksime al Main Street, Bostono” aŭ “Hotelo proksime al Alexanderplatz, " +"Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "La projekto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:513 +msgid "Maps" +msgstr "Mapoj" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Simpla mapa aplikaĵo" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapoj;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ebligas montri vian pozicion sur la mapo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laste vidita loko" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinatoj de laste vidita loko." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Speco de mapo" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenestra grando" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenestra grando (larĝo kaj alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fenestra pozicio" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozicio de fenestro (x kaj y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenestro maksimumigita" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimumiga stato de fenestro" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimuma numero da serĉa rezultoj" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimuma numero da serĉa rezultoj de geocode-a serĉo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombro de lastatempaj lokoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombro de lastatempaj lokoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombro de lastatempaj kursoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombro da lastatempe vizititaj kursoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privateca agordo de Facebook-prezentiĝo" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"EVERYONE (ĉiuj), FRIENDS_OF_FRIENDS (amikoj de amikoj), ALL_FRIENDS (ĉiuj " +"amikoj), aŭ SELF (sin mem)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privateca agordo de Foursquare-prezentiĝo" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"public (publika), followers (sekvantoj), aŭ private (privata)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Facebook ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Twitter ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-uzantonomo aŭ retpoŝtadreso" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikas ĉu la uzanto estas salutinta por redakti OpenStreetMap-datumojn." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Videbleco" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Afiŝi ĉe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Alfiŝi ĉe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Nuligi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "P_rezentiĝi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ĉiu" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amikoj de amikoj" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur amikoj" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur mi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publika" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekvantoj" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privata" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Kio estas ĉi tie?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Kopii lokon" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Elporti kiel bildo" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Elporta vido" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Elporti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkluzivi kurson kaj markilojn" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ĝenerale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Montri la klavkombinojn" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Serĉo" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Presi la kurson" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ĉesi" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Mapa vido" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zomi" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Malzomi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Baskuligi skalon" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Ŝalti al strata vido" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Baskuligi al aera vido" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Malfermi forman tavolon" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Malfermi forman tavolon…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Enŝalti lokajn servojn por trovi vian lokon" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Nuligi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Agordoj de loko" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Agordi OpenStreetMap-konton" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Pri Mapoj" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Elekti specon de mapo" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Malzomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Zomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Baskuligi ŝataĵojn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Presi la kurson" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Mapoj estas nekonektitaj!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapoj bezonas interretaliron por bone funkcii, sed oni ne trovis ĝin." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kontrolu vian konekton kaj agordojn de la prokurilo." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aldoni al nova kurso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kunhavigi lokon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marki kiel ŝatatan" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prezentiĝi ĉi tie" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Salutu por redakti mapojn" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helpu plibonigi la mapon uzante\n" +"OpenStreetMap-konton." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Retpoŝtadreso" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasvorto" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Saluti" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ĉu vi ne havas konton?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Pardonon, tio ne funkciis. Bonvolu provi denove, aŭ viziti\n" +"OpenStreetMap por reagordi vian pasvorton." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "La kontrolkodo ne kongruis, bonvolu provi denove." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Bonvolu enigi la ĉi supran kontrolkodon" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Kontroli" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Salutinta" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Via OpenStreetMap-konto estas aktiva." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Adiaŭi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strato" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Domnumero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poŝtkodo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Urbo" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Neniu" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aldoni kampon" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Mapaj redaktoj videblos en ĉiuj mapoj kiuj uzas\n" +"OpenStreetMap-datumojn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Freŝe uzitaj" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sekva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montri pli da informoj" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ne trovis rezulton" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ŝovu por ŝangi la ordon de la kurso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopii" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sendi al…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Malfermi forman tavolon" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Malfermi" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Baskuligi videblecon" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Kursa serĉado de GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Planado de kursoj kun publikaj transportiloj estas provizata\n" +"de eksteraj servoj.\n" +"GNOME ne povas garantii ĝustecon de la montrataj kursoj kaj planoj.\n" +"Rimarku, ke iuj provizantoj eble ne traktas ĉiujn specojn de transportado. " +"Ekzemple,\n" +"landa provizanto eble ne traktus aviadon, kaj loka liveranto eble ne traktus " +"regionajn\n" +"vagonarojn.\n" +"Nomojn kaj varmarkojn prezentatajn rigardu kiel registritajn posedaĵojn, " +"kiam tio taŭgas." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montri pli da rezultoj" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Kaŝi intermezajn staciojn kaj informojn" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Montri intermezajn staciojn kaj informojn" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Ekveturi nun" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Ekveturi je" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Alveni je" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Montri" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busoj" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramoj" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vagonaroj" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subtera fervojo" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Pramŝipoj" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviadiloj" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuala loko" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Precizeco: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zomu por aldoni lokon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zomi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Malsukcesis trovi kahelan strukturon en dosierujo" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Malsukcesis analizi la XML-dokumenton" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mankas bezonataj atributoj" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ne sukcesis trovi la OSM-elementon" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Vojo al loka kahela dosieruja strukturo" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Montri la version de la programo" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Malatenti atingeblecon de reto" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Elekti konton" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ŝarĝante" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Elekti lokon" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Facebook. Bonvole elektu unu " +"el ĉi tiu listo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Foursquare. Bonvole elektu " +"unu el ĉi tiu listo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prezentiĝi al %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skribi malnepran mesaĝon por prezentiĝi ĉe %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Eraro okazis" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne povis trovi na “%s” en la socia servo" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne trovis taŭgan lokon por prezentiĝi en tiu ĉi lokon" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"La salutiloj malvalidiĝis, bonvole lanĉu Enretajn Kontojn por saluti kaj " +"ebligi ĉi tiun konton" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Kurso ekde ĉi tie" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Aldoni alvenon" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Kurso ĝis ĉi tie" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Nenio trovita ĉi tie!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Loko estis aldonita al la mapo, rimarku ke ĝi povas preni momenton antaŭ ĝi " +"montras sur la mapo kaj en serĉrezultoj." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapoj ĉe %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosiersistemo estas nurlega" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vi ne havas la permeson por tie konservi" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La dosierujo ne ekzistas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Neniu dosiernomo specifita" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne eblas elporti la vidon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nevalida koordinato" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analizeraro" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nekonata geometrio" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Kurs-peto malsukcesis." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ne trovis kurson." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Ek!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Ĉiuj tavolaj dosieroj" + +#: src/mainWindow.js:446 +msgid "Failed to connect to location service" +msgstr "Malsukcesis konekti al loka servo" + +#: src/mainWindow.js:511 +msgid "translator-credits" +msgstr "" +"Ryan LORTIE\n" +"Kristjan SCHMIDT\n" +"Matthew CHISHOLM\n" +"Daniel PUENTES\n" +"Nicolas MAIA\n" +"Baptiste DARTHENAY\n" +"Carmen Bianca BAKKER \n" +"Tirifto " + +#: src/mainWindow.js:514 +msgid "A map application for GNOME" +msgstr "Mapa aplikaĵo por GNOME" + +#: src/mainWindow.js:525 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Kopirajto © 2011 – 2019 Red Hat, Inc. kaj la kontribuintoj de GNOME Maps" + +#: src/mainWindow.js:545 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapdatumoj de %s kaj kontribuantoj" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:561 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapajn kahelojn provizas %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:590 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Serĉo povigita de %s per %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dosiertipo ne estas subtenata" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Malsukcesis malfermi la tavolon" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Malsukcesis malfermi la Geo-URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Malkorekta uzantonomo aŭ pasvorto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sukceso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Malbona peto" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekto ne trovita" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikto, iu alia ĵus redaktis tiun objekton" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "La objekto estis forigita" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vojo aŭ rilato referencas al neekzistantaj idoj" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nomo" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "La oficiala nomo. Tio ĉi kutime aperas sur signoj." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreso" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Retejo" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La oficiala retejo. Provo uzi la plej bazan formon de URL t.e. http://" +"example.com anstataŭ http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefona numero. Uzu la internacian formon, komencantan kun la signo “+”. " +"Observu lokajn privatecajn leĝojn, precipe por privataj telefonaj numeroj." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedio" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"La uzata formo devus inkluzivi lingvan kodon kaj la artikolan titolon, kiel " +"“eo:artikola titolo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horoj de malfermo" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vidi la ligon en la etikedo por helpo sur formo." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Loĝantaro" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudo" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Alteco (alto super mara nivelo) de punkto per metroj." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rulseĝa aliro" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Jes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limigita" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Indikita" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interreta aliro" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sendrata" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Drata" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalo" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religio" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaismo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budaismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaismo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristanismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuceismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ĝajnismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Pluraj religioj" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologio" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Ŝintoismo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaria Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voduismo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratuŝtrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Necesejoj" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Noto" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informo uzota por sciigi nememkompreneblajn informojn al aliaj mapistoj pri " +"elemento, intenco de ĝia aŭtoro, aŭ helpiloj por plia plibonigado." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Elekti tipon" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Farite" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sennoma loko" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Loĝantaro:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Alto:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horoj de malfermo:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interreta aliro:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religio:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Necesejoj:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rulseĝa aliro:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Malsukcesis analizi Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limigita" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "indikita" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Loko ne troviĝis en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL de OpenStreetMap ne estas valida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatoj en URL ne estas validaj" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL ne estas subtenata" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s ĝis %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ŝarĝante maperojn por presado" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vi rajtas ĉesigi presadon se tro daŭras" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ĉesigi presadon" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aldoni per loko" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Forigi per loko" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Renversi kurson" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aldoni %s al %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Malsukcesis malfermi la URI" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Malfermi per %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "malsukcesis ŝarĝi la dosieron" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Antaŭkalkulita tempo: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Kursojn provizas %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Alveturi je %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Ek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Promeni %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Alveni je %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Alveni" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montri promenajn instrukciojn" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Kaŝi promenajn instrukciojn" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ŝargi antaŭajn alternativojn" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ŝargi postajn alternativojn" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Neniu antaŭa alternativo trovita." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Neniu posta alternativo trovita." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-e-a de %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Neniuj horaraj datumoj trovitaj por ĉi tiu kurso." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Neniu provizanto trovita por ĉi tiu kurso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutoj" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d horo" +msgstr[1] "%d horoj" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d horo" +msgstr[1] "%d:%02d horoj" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tuttaga" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de sunleviĝo ĝis sunsubiro" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ĉiutaga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "publikaj ferioj" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "lernejaj ferioj" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ne malfermita" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drata" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalo" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servo" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nekonata" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Preciza" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mej" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Daŭrigi je %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Daŭrigi" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turni maldekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Turni maldekstren" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turni maldekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Turni maldekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turni maldekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Turni maldekstren akre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turni dekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Turni dekstren" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turni dekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Turni dekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turni dekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Turni dekstren akre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iru el la rondirejo per eliro %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iru el la rondirejo per eliro al %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Iru la rondirejon" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Uzu la lifton kaj eliru je %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Uzu la lifton" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Turni maldekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Turni maldekstren reen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Turniĝu dekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1233 +#| msgid "Make a rigth u-turn" +msgid "Make a right u-turn" +msgstr "Turni dekstren reen" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Kursa serĉado de OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Malfermi per alia aplikaĵo" + +#~ msgid "Press enter to search" +#~ msgstr "Premu la enigan klavon por serĉi" + +#~ msgid "Quit" +#~ msgstr "Ĉesi" + +#~ msgid "Load Map Layer" +#~ msgstr "Ŝarĝi mapan tavolon" + +#~ msgid "Open Layer" +#~ msgstr "Malfermi tavolon" + +#~ msgid "OK" +#~ msgstr "En ordo" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f me" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Landkodo: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Laste-sciita loko kaj ekzakto" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Laste-sciita loko (latitudo kaj longitudo en gradoj) kaj ekzakto (en " +#~ "metroj)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Priskribo de laste sciita loko de la uzanto." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ĉu la laste sciatan lokon agordis permane la uzanto" + +#~ msgid "I’m here!" +#~ msgstr "Mi estas ĉi tie!" + +#~ msgid "Satellite" +#~ msgstr "Satelito" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..b38decad --- /dev/null +++ b/po/es.po @@ -0,0 +1,2041 @@ +# Spanish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# Daniel Mustieles , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-13 08:32+0000\n" +"PO-Revision-Date: 2020-08-13 10:38+0200\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Spanish - Spain \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 3.36.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encuentre lugares por todo el mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas le ofrece un acceso rápido a mapas de todo el mundo. Le permite " +"encontrar lugares rápidamente buscando por ciudad o por calle, o buscar un " +"lugar para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa la base de datos colaborativa OpenStreetMap, hecha por cientos de " +"miles de personas de todo el mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"También puede buscar por tipos de ubicaciones específicos como «Bares cerca " +"de la Gran Vía, Madrid» u «Hoteles cerca de la Plaza Mayor, Madrid»." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "El Proyecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una sencilla aplicación de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite mostrar su ubicación en el mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicación vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas de la última ubicación vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "El tipo de mapa que mostrar (callejero, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño de la ventana" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño de la ventana (anchura y altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición de la ventana" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición de la ventana (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ventana maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado maximizado de la ventana" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de búsqueda" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de búsqueda para búsquedas por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rutas visitadas recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidad del registro de Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última configuración de privacidad de registro de Facebook usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidad del registro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidad de registro de Foursquare usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nombre de usuario de OpenStreetMap o cuenta de correo-e" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si el usuario ha iniciado sesión para editar los datos de " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para la ruta" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo nocturno" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "indica si la aplicación está en modo nocturno." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usar cuadrículas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica si las cuadrículas aéreas se deben usar con un estilo híbrido (con " +"etiquetas)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidad" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar el Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar el Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Registrar" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo yo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Añadir destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta hasta aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "¿Qué hay aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar ubicación" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir ruta y marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Elegir el tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Reducir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Conmutar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atajos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Salir" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reducir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Conmutar escalado" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Cambiar a vista de calle" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Cambiar a vista aérea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir capa de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir capa de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicios de ubicación para encontrar su posición" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configuración de la ubicación" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo nocturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar cuenta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagen" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atajos del teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca de Mapas" + +#: data/ui/main-window.ui:56 +#| msgctxt "shortcut window" +#| msgid "Open main menu" +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Buscar una ruta" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapas está desconectado" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necesita una conexión a Internet activa para funcionar correctamente, " +"pero no se ha encontrado ninguna." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Compruebe la configuración de su conexión y de su proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Añadir a la ruta nueva" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Compartir ubicación" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Registrarse aquí" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cuenta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ayude a mejorar el mapa, usando una\n" +"cuenta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo-e" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contraseña" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Eso no ha funcionado. Inténtelo de nuevo o visite\n" +"OpenStreetMap para restablecer su contraseña." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El código de verificación no coincide, inténtelo de nuevo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduzca el código de verificación mostrado" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Su cuenta de OpenStreetMap está activada." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Cerrar sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Calle" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciudad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ninguno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Añadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Los cambios en los mapas serán visibles en todos los mapas que usen\n" +"datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recientemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Siguiente" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar más información" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No se han encontrado resultados" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastre para cambiar el orden de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir ubicación" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir capa de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Conmutar estado visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta buscada por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itinerarios de las rutas para viajes públicos los proporciona\n" +"un servicio de terceros.\n" +"GNOME no puede garantizar la corrección de los itinerarios y los tiempos " +"mostrados.\n" +"Algunos proveedores pueden no incluir todos mos medios de transporte " +"disponibles,\n" +"ej. un proveedor nacional puede no incluir aerolíneas y un proveedor local " +"puede\n" +"no incluir trenes regionales.\n" +"Los nombres y las marcas mostradas se consideran marcas registradas cuando " +"sea aplicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar más resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar información y paradas intermedias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar información y paradas intermedias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Salir ahora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Salir en" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Llegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenes" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviones" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Ubicación actual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para añadir una ubicación." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falló al buscar la estructura de la cuadrícula en la carpeta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falló al analizar el documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan los atributos necesarios" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No se pudo encontrar el elemento OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Una ruta a la estructura de carpetas locales de cuadrículas" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Tamaño de cuadrícula para carpeta de cuadrículas locales" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Mostrar la versión del programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignorar la disponibilidad de la red" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[ARCHIVO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un lugar" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Facebook. " +"Seleccione uno de la lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Foursquare. " +"Seleccione uno de la lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Registrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensaje opcional para registrarse en %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Ha ocurrido un error" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No se puede encontrar «%s» en la red social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede encontrar un lugar adecuado para registrarse en esta ubicación" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las credenciales han caducado. Abra las Cuentas en línea para iniciar sesión " +"y activar esta cuenta." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No se ha encontrado nada aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Se ha añadido la ubicación al mapa, tenga en cuenta que puede tardar un rato " +"antes de mostrarse en el mapa y en los resultados de búsqueda." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de archivos es de solo lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tiene permisos para guardar ahí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La carpeta no existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No se ha especificado un nombre de archivo" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No se puede exportar la vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada no válida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error al analizar" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometría desconocida" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Falló al solicitar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "No se ha encontrado la ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Empezar" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos los archivos de capas" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Falló al conectar al servicio de ubicación" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Daniel Mustieles , 2013 - 2020" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas para GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. y los autores de Mapas de GNOME" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos de mapas por %s y colaboradores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Cuadrículas de mapas proporcionadas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Búsqueda proporcionada por %s usando %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Tipo de archivo no soportado" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Falló al abrir la capa" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Falló al abrir el GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nombre de usuario o contraseña no válidos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Correcto" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitud incorrecta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto no encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguien acaba de modificar el objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Se ha eliminado el objeto" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La vía o la relación se refiere a hijos no existentes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nombre" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "El nombre oficial. Esto es lo que normalmente aparece en las firmas." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Dirección" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Página web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La página web oficial. Pruebe a usar la forma más sencilla de URL, por " +"ejemplo http://ejemplo.com en lugar de of http://ejemplo.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use el formato internacional, empezando por el signo +. " +"Tenga en cuenta las leyes de privacidad locales, especialmente en el caso de " +"números privados." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El formato usado debe incluir el código del idioma y el título del artículo, " +"similar a «es:Título del artículo»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horario de apertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Consulte el enlace en la etiqueta para obtener ayuda sobre el formato." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Población" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre el nivel del mar) de un punto, en metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acceso para sillas de ruedas" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acceso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Inalámbrica" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cableada" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servicio" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religión" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Varias religiones" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cienciología" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sijismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarismo universalista" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para notificar a otros mapeadores sobre información no " +"obvia sobre un elemento, un intento del autor de crearlo o pistas sobre " +"futuras mejoras." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccionar tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Hecho" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Lugar sin nombre" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Población:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horario de apertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acceso a Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religión:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Baño:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acceso para sillas de ruedas:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Teléfono:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Falló al analizar el URI de Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar no encontrado en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "El URL de OpenStreetMap no es válido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Las coordenadas del URL no son válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL no soportado" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando mapa para imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puede cancelar la impresión si esto tarda mucho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Cancelar la impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Añadir ubicación de la vía" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar ubicación de la vía" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Añadir %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Falló al abrir el URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "falló al cargar el archivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimado: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios proporcionados por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Empezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Llegar a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Llegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucciones del camino" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucciones del camino" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No hay alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No hay alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "No hay datos en la tabla de tiempos para esta ruta." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "No se ha encontrado un proveedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "todo el día" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "desde el amanecer hasta la puesta del sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "festivos" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacaciones escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "cerrado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cableada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servicio" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconocida" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s min" +#| msgid_plural "%s mins" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este complemento no soporta la última llegada" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continúe por %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continúe" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gire a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Gire a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gire levemente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Gire levemente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gire bruscamente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Gire bruscamente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gire a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Gire a la derecha" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gire levemente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Gire levemente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gire bruscamente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Gire bruscamente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "En la rotonda, coja la salida %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "En la rotonda, coja la salida hacia %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Entre en la rotonda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Coja el ascensor y salga en %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Coja el ascensor" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Dé la vuelta hacia la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Dé la vuelta hacia la izquierda" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Dé la vuelta hacia la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Dé la vuelta hacia la derecha" + +#~ msgid "Primary menu" +#~ msgstr "Menú primario" + +#~ msgid "Don’t have an account?" +#~ msgstr "¿No tiene una cuenta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Añadir destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta buscada por OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Abrir con otra aplicación" + +#~ msgid "Press enter to search" +#~ msgstr "Pulse Intro para buscar" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Salir" + +#~ msgid "OK" +#~ msgstr "Aceptar" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abrir capa de formas…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar capa de mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir capa" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pies" + +#~ msgid "Position not found" +#~ msgstr "Posición no encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código del país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Población: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acceso para sillas de ruedas: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falló al analizar el archivo GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Compartir" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última ubicación conocida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última ubicación conocida (latitud y longitud en grados) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción de la última ubicación conocida del usuario." + +#~ msgid "User set last known location" +#~ msgstr "Última ubicación conocida establecida por el usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si la última ubicación conocida la estableció el usuario " +#~ "manualmente." + +#~ msgid "I’m here!" +#~ msgstr "Yo estoy aquí" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "From" +#~ msgstr "Desde" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/et.po b/po/et.po new file mode 100644 index 00000000..13982e71 --- /dev/null +++ b/po/et.po @@ -0,0 +1,148 @@ +# Estonian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mattias Põldaru , 2013, +# Priit Laes , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-11 10:56+0000\n" +"PO-Revision-Date: 2013-09-20 10:20+0300\n" +"Last-Translator: Priit Laes \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaardirakendus võimaldab kiiret ligipääsu kaartidele üle terve maailma. " +"See võimaldab kiiresti leida otsitava koha kasutades linna- või tänavanime, või" +"määrata kohta sõbraga kokkusaamiseks." + +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" +"
  • Otsi riiki, regiooni, linna või tänavat.
  • Otsi erinevat liiki " +"asukohti nagu \"Pubs near Main Street, Boston\" või \"WiFi Access near " +"Alexanderplatz, Berlin\"
  • " + +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaardid kasutavad ühistööna valminud OpenStreetMap andmebaasi, millele on " +"kaasa aidanud tuhanded inimesed üle maailma." + +#. Translators: This is the program name. +msgid "Maps" +msgstr "Kaardid" + +msgid "A simple maps application" +msgstr "Lihtne kaardirakendus" + +msgid "Maps;" +msgstr "Kaardid;Kaart;" + +msgid "Window size" +msgstr "Akna suurus" + +msgid "Window size (width and height)." +msgstr "Akna suurus (laius ja kõrgus)." + +msgid "Window position" +msgstr "Akna asukoht" + +msgid "Window position (x and y)." +msgstr "Akna asukoht (x ja y)." + +msgid "Window maximized" +msgstr "Aken on maksimeeritud" + +msgid "Window maximized state" +msgstr "Akna maksimeerituse olek" + +msgid "Last known location and accuracy" +msgstr "Viimane teadaolev asukoht ja täpsus" + +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Viimane teadaolev asukoht (laius- ja pikkuskraadid) ning täpsus (meetrites)." + +msgid "Description of last known location" +msgstr "Viimase teadaoleva asukoha kirjeldus" + +msgid "Description of last known location of user." +msgstr "Kasutaja viimase teadaoleva asukoha kirjeldus." + +msgid "Maximum number of search results" +msgstr "Otsingutulemuste maksimaalne arv" + +msgid "Maximum number of search results from geocode search." +msgstr "Geokoodi otsingu tulemuste maksimaalne arv." + +msgid "User set last known location" +msgstr "Kasutaja määratud viimane teadaolev asukoht" + +msgid "Last known location was set manually by user." +msgstr "Kasutaja poolt käsitsi määratud viimane teadaolev asukoht." + +msgid "About" +msgstr "Programmist" + +msgid "Quit" +msgstr "Lõpeta" + +msgid "What's here?" +msgstr "Mis siin on?" + +msgid "I'm here!" +msgstr "Mina olen siin!" + +msgid "translator-credits" +msgstr "Mattias Põldaru, 2013,\nPriit Laes, 2013" + +msgid "A map application for GNOME" +msgstr "GNOME kaardirakendus" + +msgid "Street" +msgstr "Tänav" + +msgid "Satellite" +msgstr "Satelliit" + +#. Translators: Accuracy of user location information +msgid "Unknown" +msgstr "Teadmata" + +#. Translators: Accuracy of user location information +msgid "Exact" +msgstr "Täpne" + +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Asukoha täpsus: %s" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 00000000..4633323e --- /dev/null +++ b/po/eu.po @@ -0,0 +1,1963 @@ +# Basque translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Iñaki Larrañaga Murgoitio , 2013, 2014, 2015, 2016, 2017. +# Asier Sarasua Garmendia , 2019, 2020. +# +msgid "" +msgstr "Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-10 10:00+0100\n" +"Last-Translator: Asier Sarasua Garmendia \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapak" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Bilatu lekuak munduan zehar" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Mapek mundu osoan zeharreko mapetarako atzipen azkarra eskaintzen dizu. Bilatzen ari zaren lekua modu azkar batean aurkitzen lagunduko dizu kalearen edo herriaren izena bilatuz, edo bilatu leku bat lagunekin aurkitzeko." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Mapak auzolanean eraikitako OpenStreetMap datu-basea darabil, mundu osoan zehar ehun eta milaka pertsonen artean sortutakoa" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "Bilatu kokaleku mota zehatz bat, adibidez 'Diru-truke bulegoa, Bilbo' edo 'Hotelak kale nagusia, Bilbo'" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME proiektua" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapak" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Mapen aplikazio xume bat" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapak;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Zure kokalekua maparen gainean erakustea baimentzen du." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ikusitako azken kokalekua" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ikusitako azken kokalekuaren koordenatuak." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zooma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaren maila" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Mapa mota" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Bistaratuko den mapa mota (kalekoa, airekoa eta abar)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Leihoaren tamaina" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Leihoaren tamaina (zabalera eta altuera)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Leihoaren posizioa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Leihoaren posizioa (X eta Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Leihoa maximizatuta" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Leihoaren maximizazioaren egoera" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilaketaren emaitzen gehieneko kopurua" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilaketaren emaitzen gehieneko kopurua geokodifikazioaren bilaketatik." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Azken aldiko lekuen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Azken aldian bisitatutako lekuen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Azken aldiko ibilbideen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Azken aldian bisitatutako ibilbideen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-en erregistroaren pribatutasunaren ezarpena" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "Facebook-en erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'EVERYONE' (edonor), 'FRIENDS_OF_FRIENDS' (lagunen lagunak), 'ALL_FRIENDS' (lagun guztiak) edo 'SELF' (norbera)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-ren erregistroaren pribatutasunaren ezarpena" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "Foursquare-ren erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'public' (publikoa), 'followers' (jarraitzaileak) edo 'private' (pribatua)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-ren erregistroaren Facebook-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Facebook-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-ren erregistroaren Twitter-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Twitter-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-eko erabiltzaile-izena edo helbide elektronikoa" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "OpenStreetMap-eko datuak editatzeko erabiltzaileak sinatu duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Erabilitako azken garraio mota bidea egiteko" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Gaueko modua" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Aplikazioa gaueko moduan dagoen edo ez." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Erabili aireko lauza hibridoak" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Aireko lauzek estilo hibridoa (etiketekin) erabiliko duten ala ez." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ikusgaitasuna" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Argitaratu Facebook-en" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Argitaratu Twitter-en" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Utzi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Erregistratu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Edonor" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Lagunen lagunak" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Lagunak soilik" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nik bakarrik" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publikoa" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Pribatua" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ibilbidea hemendik" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Gehitu tarteko helmuga" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ibilbidea hona" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Zer dago hemen?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiatu kokalekua" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esportatu ikuspegia" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esportatu" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Txertatu ibilbidea eta markatzaileak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Aukeratu mapa mota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Txikiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Handiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Txandakatu gogokoak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Orokorra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Erakutsi lasterbideak" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Bilatu" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Irten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Maparen ikuspegia" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Handiagotu" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Txikiagotu" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Txandakatu eskala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Aldatu kaleen ikuspegira" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Aldatu aireko ikuspegira" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ireki formen geruza" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Erakutsi etiketak" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ireki formen geruza…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Aktibatu kokapen-zerbitzuak zure kokapena aurkitzeko" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Utzi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Kokapenaren ezarpenak" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gauko modua" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfiguratu OpenStreetMap-eko kontua" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esportatu irudi gisa" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Las_ter-teklak" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Mapak aplikazioari buruz" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Bilatu ibilbide bat" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapa lineaz kanpo dago!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapak interneteko konexio aktiboa behar du ongi funtzionatzeko, baina ez da bat ere aurkitu." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Egiaztatu konexioaren eta proxyaren ezarpenak." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Gehitu ibilbide berriari" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partekatu kokalekua" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markatu gogoko gisa" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Erregistratu hemen" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-eko kontua" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Hasi saioa mapak editatzeko" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "Lagundu mapa hobetzen\n" +"OpenStreetMap-eko kontu bat erabiliz." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Posta elektronikoa" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasahitza" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Erregistratu" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Hasi saioa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "Ez du funtzionatzen. Saiatu berriro, edo bisitatu\n" +"OpenStreetMap zure pasahitza berrezartzeko." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Egiaztapen-kodea ez dator bat, saiatu berriro." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sartu goian erakutsitako egiaztapen-kodea" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Egiaztatu" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Saioa hasita" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Zure OpenStreetMap-eko kontua aktibo dago." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Amaitu saioa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Kalea" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Zenbakia" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta-kodea" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Hiria" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Mota" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Bat ere ez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Gehitu eremua" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Iruzkina" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "Mapen aldaketak ikusgai egongo dira OpenStreetMap-eko\n" +"datuak erabiltzen dituzten mapa guztietan." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Azken aldian erabilia" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Hurrengoa" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Erakutsi informazio gehiago" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ez da emaitzarik aurkitu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastatu ibilbidearen ordena aldatzeko" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ireki kokalekua" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiatu" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Bidali hona…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ireki formen geruza" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ireki" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Txandakatu ikusgaitasuna" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ibilbidea GraphHopper-ek bilatuta" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "Ibilbide publikoen bideak hirugarrenek eskaintzen dituzte.\n" +"GNOMEk ezin du bermatu erakutsitako ibilbideen eta ordutegien zuzentasuna.\n" +"Kontuan izan zenbait hornitzailek ez dituztela garraio modu guztiak kontuan hartzen, adibidez nazio mailako hornitzaile batek beharbada ez ditu hegaldiak kontuan hartzen, eta hornitzaile lokal batek agian ez ditu eskualde mailako trenak erakusten.\n" +"Erakutsitako izenak eta markak erregistratutako marka gisa hartuko dira dagokienenean." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Erakutsi emaitza gehiago" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ezkutatu bitarteko puntuak eta informazioak" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Erakutsi bitarteko puntuak eta informazioak" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Irten orain" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Irten:" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Iritsi:" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Erakutsi" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusak" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranbia" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenak" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metroak" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferryak" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Hegazkinak" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Uneko kokalekua" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Handiagotu zooma kokalekua gehitzeko!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Handiagotu" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Huts egin du lauzaren egitura direktorioan bilatzean" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Huts egin du XML dokumentua aztertzean" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Beharrezko atributuak falta dira" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ezin izan da OSM elementua aurkitu" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Lokaleko lauzen direktorioaren egituraren bide-izena" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Lokaleko lauzen direktorioaren lauza-tamaina" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Erakutsi programaren bertsioa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ezikusi egin sarearen erabilgarritasunari" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FITXATEGIA…|URIA]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Hautatu kontua" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Kargatzen" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Hautatu lekua" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Facebook-ekin erregistratzeko. Hautatu bat zerrendatik." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Foursquare-rekin erregistratzeko Hautatu bat zerrendatik." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s(e)n erregistratzen" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Idatzi aukerako mezua '%s'(e)n erregistratzeko." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Errore bat gertatu da" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ezin da “%s” aurkitu zerbitzu sozialean" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ezin da leku egokirik aurkitu kokaleku honetan erregistratzeko" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "Kredentzialak iraungi egin dira. Ireki 'Lineako kontuak' kontu hau sinatzeko eta gaitzeko" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ez da ezer aurkitu." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "Kokalekua mapari gehitu zaio. Jakin ezazu denbora bat igaroko dela mapetan eta bilaketen emaitzetan erakutsi aurretik." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapak hemen: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Fitxategi-sistema irakurtzeko soilik da" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ez duzu baimenik han gordetzeko" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorioa ez da existitzen" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ez da fitxategi-izenik zehaztu" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ezin da ikuspegia esportatu" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "baliogabeko koordenatua" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analisi-errorea" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria ezezaguna" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Huts egin du ibilbidearen eskaerak." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Ez da ibilbiderik aurkitu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Hasi!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Geruzen fitxategi guztiak" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Huts egin du kokapen-zerbitzuarekin konektatzean" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "translator-credits" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "GNOMEren mapen aplikazioa" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. eta GNOME Maps egileak" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Maparen datuen sortzaileak: %s eta laguntzaileak" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa-lauzen hornitzaileak: %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s motorrak hornitutako bilaketa %s bidez" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Fitxategi mota ez dago onartuta" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Huts egin du geruza irekitzean" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Huts egin du GeoURIa irekitzean" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Ongi burutu da" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Eskaera okerra" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektua ez da aurkitu" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Gatazka, beste norbaitek objektua aldatu du" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektua ezabatua izan da" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Bideak edo erlazioak ez dauden umeei egiten diote erreferentzia" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Izena" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Izen ofiziala. Saioa hastean agertu ohi izaten da." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Helbidea" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webgunea" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "Webgune ofiziala. Saiatu URL baten oinarrizko modua erabiltzen. Adib. http://example.com erabili http://example.com/index.html URLaren ordez." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefonoa" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "Telefono zenbakia. Erabili nazioarteko formatua, + ikurrarekin hasiz. Kontutan eduki pribatutasunari buruzko bertako legeak, telefono zenbaki pribatuei dagokiena bereziki." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Erabilitako formatuak hizkuntzaren kodea eta artikuluaren titulua ”eu:Artikuluaren titulua\" gisa eduki beharko lituzke." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Irekiera orduak" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Ikusi esteka etiketan formatua ematean laguntzeko." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populazioa" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudea" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Puntu baten elebazioa (itsas-mailaren gaineko altuera) metrotan." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Gurpil-aulkien irisgarritasuna" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Bai" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ez" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Mugatua" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Izendatuta" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interneterako sarbidea" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wifia" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Hariduna" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminala" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Zerbitzua" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Erlijioa" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismoa" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismoa" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismoa" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristautasuna" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuzianismoa" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismoa" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismoa" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaismoa" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islama" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Hainbat erlijio" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismoa" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismoa" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Zientziologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismoa" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismoa" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismoa" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarismo unibertsalista" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismoa" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianismoa" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Komunak" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Oharra" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Mapen beste sortzaileei elementu bati buruzko hain garbia ez den informazioari buruz, egilearen asmoa hura sortzean edo argibideak hobekuntza gehiagorako jakinarazteko informazioa." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Hautatu mota" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Eginda" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Izenik gabeko tokia" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populazioa:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudea:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Irekiera orduak:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interneterako sarbidea:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Erlijioa:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Komunak:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Gurpil-aulkien irisgarritasuna:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefonoa:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Huts egin du Geo URIa aztertzean" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "bai" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "mugatua" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ez" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "zehaztutakoa" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap zerbitzuan aurkitu ez den tokia" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URLa ez da baliozkoa" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URLaren koordenatuak ez dira baliozkoak" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URLa ez da onartzen" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "“%s”(e)ndik “%s”(e)ra" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Mapen lauzak inprimatzeko kargatzen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Inprimatzea bertan behera utz dezakezu denbora gehiegi badarama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Utzi inprimatzea bertan behera" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Gehitu bidearen kokalekua" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Kendu bidearen kokalekua" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Alderantzikatu ibilbidea" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Gehitu %s honi: %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Huts egin du URIa irekitzean" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Ireki honekin: %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "huts egin du fitxategia kargatzean" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Aurreikusitako denbora: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ibilbideen hornitzailea: %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Hasiera: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Hasiera" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Oinez: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Iritsi: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Iritsi" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Erakutsi oinezkoen instrukzioak" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ezkutatu oinezkoen instrukzioak" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Kargatu alternatibak lehenago" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Kargatu alternatibak geroago" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ez da aurreragoko ordezkorik aurkitu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ez da ondorengoko ordezkorik aurkitu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Ez da ordutegiaren daturik aurkitu ibilbide honetan." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Ez da hornitzailerik aurkitu ibilbide honetarako." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "minutu %s" +msgstr[1] "%s minutu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "ordu %s" +msgstr[1] "%s ordu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ordu" +msgstr[1] "%s:%s ordu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "erlojuaren inguruan" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "egunsentitik ilunsentira" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "egunero" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "jaiegunak" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "eskolako jaiegunak" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ez ireki" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "hariduna" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminala" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "zerbitzua" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Zehaztasuna: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ezezaguna" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Zehatza" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Plugin honek ez du onartzen azken iritsiera" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Jarraitu hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Jarraitu" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Biratu ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Biratu ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Biratu pixka bat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Biratu pixka bat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Biratu erabat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Biratu erabat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Biratu eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Biratu eskuinera" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Biratu pixka bat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Biratu pixka bat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Biratu erabat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Biratu erabat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Biribilgunean, hartu %s irteera" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Biribilgunean, hartu %s helbidera joateko irteera" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Hartu biribilgunea" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Hartu igogailua eta utzi hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Hartu igogailua" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Aldatu noranzkoa ezkerrerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Aldatu noranzkoa ezkerrerantz" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Aldatu noranzkoa eskuinerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Aldatu noranzkoa eskuinerantz" + +#~ msgid "Primary menu" +#~ msgstr "Menu nagusia" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ez daukazu konturik?" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Gehitu helmuga" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "ibilbidea OpenTripPlanner-ek bilatuta" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Ireki beste aplikazio batekin" + +#~ msgid "Press enter to search" +#~ msgstr "Sakatu Sartu bilatzeko" + +#~ msgid "Quit" +#~ msgstr "Irten" + +#~ msgid "Load Map Layer" +#~ msgstr "Kargatu maparen geruza" + +#~ msgid "Open Layer" +#~ msgstr "Ireki geruza" + +#~ msgid "OK" +#~ msgstr "Ados" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f oin" + +#~ msgid "Country code: %s" +#~ msgstr "Estatuaren kodea: %s" + +#~ msgid "_Share" +#~ msgstr "_Partekatu" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Azken kokaleku ezaguna eta zehaztasuna" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Azken kokaleku ezaguna (latitudea eta longitudea gradutan) eta " +#~ "zehaztasuna (metrotan)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Erabiltzailearen azken kokaleku ezagunaren azalpena." + +#~ msgid "User set last known location" +#~ msgstr "Erabiltzaileak ezarritako azken kokaleku ezaguna" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Azken kokaleku ezaguna erabiltzaileak eskuz ezarri zuen edo ez." + +#~ msgid "I’m here!" +#~ msgstr "Hemen nago!" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "Nora" + +#~ msgid "From" +#~ msgstr "Nondik" + +#~ msgid "Satellite" +#~ msgstr "Satelitea" + +#~ msgid " km²" +#~ msgstr " km²" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 00000000..b6f092c3 --- /dev/null +++ b/po/fa.po @@ -0,0 +1,1956 @@ +# Persian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Arash Mousavi , 2013-2016. +# Danial Behzadi , 2014, 2017-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-19 21:19+0000\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "نقشه‌های گنوم" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "یافتن مکان‌ها در هر جایی از جهان" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, or " +"locate a place to meet a friend." +msgstr "" +"نقشه‌ها دسترسی سریعی به نقشه‌ها در تمام جهان را می‌دهد. این برنامه می‌گذارد با جست‌وجو " +"برای یک شهر یا خیابان، مکانی را که به دنبالشید یافته یا مکانی را برای قرار مشخّص " +"کنید." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands " +"of people across the globe." +msgstr "" +"نقشه‌ها از پایگاه دادهٔ مشارکتی OpenStreetMap استفاده می‌کند که به دست صدها هزار نفر " +"در سراسر جهان درست شده است." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"حتا می‌توانید گونه‌های خاصی از موقعیت‌ها را، مثل «Pubs near Main Street, Boston» یا " +"«WiFi Access near Alexanderplatz, Berlin» جست‌وجو کنید." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "پروژهٔ گنوم" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 src/application.js:82 +#: src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "نقشه‌ها" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "یک برنامهٔ ساده نقشه" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "نقشه;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "اجازهٔ نمایش موقعیتتان روی نقشه." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "آخرین موقعیت دیده شده" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "مختصات آخرین موقعیت سر زده." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "سطح بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "گونهٔ نقشه" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "گونهٔ نمایشی نقشه (خیابانی، هوایی و…)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "اندازهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "اندازهٔ پنجره (پهنا و بلندا)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "موقعیت پنجره" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "موقعیت پنجره (x و y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "پنجره بیشینه شد" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "وضعیت بیشینهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "بیشینهٔ تعداد نتایج جست‌وجو" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "بیشینهٔ تعداد نتایج جست‌وجو از طریق جست‌وجوی کد جغرافیایی." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "تعداد مکان‌های اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "تعداد مکان‌های اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "تعداد مسیرهای اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "تعداد مسیرهای اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فیس‌بوک" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فیس‌بوک. مقادیر مجاز عبارتند از: " +"EVERYONE، FRIENDS_OF_FRIENDS، ALL_FRIENDS و SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فوراسکور" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, " +"followers or private." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فوراسکور. مقادیر مجاز عبارتند از: " +"public، followers یا private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "اعلام حضور در فوراسکور و انتشار در فیس‌بوک" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک فرسته در حساب فیس‌بوک " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "اعلام حضور فوراسکور و انتشار در توییتر" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک توییت در حساب توییتر " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "نام‌کاربری یا نشانی رایانامهٔ OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "مشخّص می‌کند که آیا کاربر برای ویرایش داده‌های OpenStreetMap وارد شده یا نه." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "آخرین گونهٔ حمل‌ونقل برای مسیریابی" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "حالت شب" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "این که برنامه در حالت شب است یا نه." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "استفاده از کاشی‌های هوایی پیوندی" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "این که کاشی‌های هوایی باید از سبک پیوندی (با برچسب‌ها) استفاده کنند یا نه." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "نمایانی" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "فرستادن به فیس‌بوک" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "فرستادن به توییتر" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_لغو" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "اعلام _حضور" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "همه" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "دوستانِ دوستان" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "فقط دوستان" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "فقط خودم" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "عمومی" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "پیروان" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "خصوصی" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "مسیر از این‌جا" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "افزودن مقصد میانی" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "مسیر به این‌جا" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "این‌جا چیست؟" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "رونوشت موقعیت" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "نمای برون‌ریزی" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_برون‌ریزی" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "شامل مسیر و علائم شدن" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "گزینش گونهٔ نقشه" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "بزرگنمایی به خارج" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "تغییر وضعیت برگزیده‌ها" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "عمومی" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "نمایش میان‌برها" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "جست‌وجو" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "خروج" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "نمای نقشه" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بزرگ‌نمایی به خارج" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "تغییر وضعیت مقیاس" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "تعویض به نمای خیابانی" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "تعویض به نمای هوایی" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "نمایش برچسب‌ها" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "گشودن لایهٔ شکل…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "روشن کردن خدمات مکانی برای یافتن موقعیتتان" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "لغو" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "تنظیمات موقعیت" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "حالت شب" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "برپاسازی حساب OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "برون‌ریزی به عنوان عکس" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "میان‌برهای _صفحه‌کلید" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "دربارهٔ نقشه‌ها" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "یافتن یک مسیر" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "نقشه‌ها برون‌خط است!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t be " +"found." +msgstr "نقشه‌ها برای عملکرد صحیح نیاز به اینترنت دارد." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "تنظیمات پیشکار و اتّصالتان را بررسی کنید." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "افزودن به مسیر جدید" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "هم‌رسانی موقعیت" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "علامت‌گذاری به عنوان برگزیده" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "اعلام حضور در این‌جا" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "حساب OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "ورود به ویرایش نقشه‌ها" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"با استفاده از یک حساب OpenStreetMap\n" +"به گسترش نقشه کمک کنید." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "رایانامه" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "گذرواژه" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ثبت‌نام" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ورود" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap " +"to reset your password." +msgstr "" +"متأسّفانه تأثیری نداشت. لطفا دوباره تلاش کرده یا برای\n" +"باز نشانی گذرواژه‌تان به OpenStreetMap سر بزنید." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "کد تأیید مطابق نبود، لطفاً دوباره بیازمایید." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "کد تأیید بالا را وارد کنید" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "تأیید" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "وارد شده" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "حساب OpenStreetMapتان فعّال است." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "خروج" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "خیابان" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "پلاک خانه" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "کد پستی" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "شهر" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "گونه" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "هیچ‌کدام" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "افزودن زمینه" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "توضیح" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"تغییرات نقشه در تمام نقشه‌هایی که از داده‌های\n" +"اوپن‌استریت‌مپ استفاده می‌کنند قابل مشاهده است." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "به‌تازگی استفاده شده" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "بعدی" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "نمایش اطّلاعات بیش‌تر" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "هیچ نتیجه‌ای پیدا نشد" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "برای تغییر ترتیب مسیر بکشید" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "رونوشت" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "فرستادن به…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_گشودن" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "تغییر وضعیت نمایانی" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "جست‌وجوی مسیر به دست GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسیریابی برنامهٔ سفر برای حمل‌ونقل عمومی به دست خدمات ثالث فراهم شده است.\n" +"گنوم نمی‌تواند درستی برنامهٔ سفر و زمان‌بندی‌های نمایش داده‌شده را تصمین کند.\n" +"به خاطر داشته باشید که ممکن است برخی فراهم‌کنندگان، تمام حالت‌های موجود برای\n" +"حمل‌ونقل را نداشته باشند. مثلاً ممکن است یک فراهم‌کنندهٔ ملّی، خطوط هوایی را نداشته\n" +"باشد و یک فراهم‌کنندهٔ محلّی می‌تواند قطارهای منطقه‌ای را نشان ندهد.\n" +"نام‌ها و برندهای نمایش‌داده‌شده باید هنگام امکان به عنوان علایم تجاری در نظر گرفته " +"شوند." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "نمایش نتایج بیش‌تر" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "نهفتن اطّلاعات و توقّف‌های میانی" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "نمایش اطّلاعات و توقّف‌های میانی" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "اکنون خارج شوید" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "شروع حرکت از" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "رسیدن به مقصد از" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "نمایش" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "اتوبوس‌ها" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ترامواها" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "قطارها" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "مترو" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "قایق‌ها" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "هواپیماها" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "موقعیت کنونی" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "برای افزودن موقعیت، بزرگ‌نمایی کنید!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "بزرگ‌نمایی به داخل" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "شکست در یافتن ساختار کاشی در شاخه" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "شکست در تجزیهٔ سند XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ویژگی‌های لازم وجود ندارند" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "ناتوان در یافتن عنصر OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "مسیری به ساختار شاخهٔ کاشی‌های محلّی" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "اندازهٔ شاخهٔ کاشی‌های محلّی" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "نمایش نگارش برنامه" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "نادیده گرفتن موجود بودن شبکه" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "گزینش یک حساب" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "در حال بار کردن" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "گزینش یک موقعیت" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فیس‌بوک بیابد. لطفاً موقعیتی را از فهرست " +"برگزینید." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فوراسکور بیابد. لطفاً موقعیتی را از " +"فهرست برگزینید." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "اعلام حضور در %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "نوشتن اختیاری پیامی برای اعلام حضور در %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "خطایی رخ داد" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "نمی‌توان «%s» را در خدمت اجتماعی یافت" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "نمی‌توان مکانی مناسب برای اعلام حضور در این موقعیت یافت" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable this " +"account" +msgstr "" +"اعتبارنامه‌ها منقضی شده‌اند. لطفاً برای ورود و به کار انداختن این حساب، حساب‌های برخط " +"را بگشایید" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "این‌جا چیزی پیدا نشد!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows on " +"the map and in search results." +msgstr "" +"موقعیت به نقشه اضافه شد. خواستان باشد که نمایشش در نقشه و نتایج جست‌وجو، ممکن است " +"کمی طول بکشد." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "نقشه‌ها در %If، %If.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "سامانه‌پرونده فقط-خواندنی است" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "برای ذخیره در آن‌جا دسترسی ندارید" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "شاخه وجود ندارد" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "نامی برای پرونده مشخّص نشده" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ناتوان در برون‌ریزی نما" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "مختصات نامعتبر" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "خطای تجزیه" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "هندسهٔ ناشناخته" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "درخواست مسیر شکست خورد." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "هیچ مسیری پیدا نشد." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "شروع!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "تمام پرونده‌های لایه" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "شکست در اتّصال به خدمت مکانی" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"دانیال بهزادی \n" +"آرش موسوی " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "یک برنامهٔ نقشه برای گنوم" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "حق رونوشت © ۲۰۱۱ - ۲۰۱۹ – شرکت ردهت و نگارندگان نقشه‌های گنوم" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "دادهّای نقشه به دست %s و مشارکت‌کنندگان" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "کاشی‌های نقشه به دست %s فراهم شده" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "جست‌وجو به دست %s با استفاده از %s فراهم شده" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "گونهٔ پرونده پشتیبانی نمی‌شود" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "شکست در گشودن لایه" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "شکست در گشودن نشانی جغرافیایی" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "گذرواژه یا نام‌کاربری نادرست" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "موفّقیت" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "درخواست بد" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "شی پیدا نشد" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "تداخل، گسی دیگر به تازگی شی را تغییر داده" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "شی پاک شد" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "راه یا ارتباط به فرزندی ناموجود اشاره می‌کند" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "نام" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "نام رسمی. معمولاً نامیست که روی تابلوها نوشته." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "نشانی" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "پایگاه وب" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example." +"com instead of http://example.com/index.html." +msgstr "" +"پایگاه وب رسمی. سعی کنید از ساده‌ترین شکل آدرس استفاده کنید مثلا http://example." +"com به جای http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "تلفن" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of " +"local privacy laws, especially for private phone numbers." +msgstr "" +"شماره تلفن. از قالب بین‌المللی که با + شروع می‌شود اشتفاده کنید. لطفاً قوانین " +"محرمانگی محلّی را در نظر داشته باشید، به خصوص برای شماره‌های تلفن خصوصی." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "ویکی‌پدیا" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:" +"Article title”." +msgstr "" +"قالب استفاده شده باید شامل کد زبان و عنوان مقاله باید مثل «en:Article title» باشد." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "ساعت‌های کار" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "پیوند روی برچسب را برای راهنمایی قالب ببینید." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "جمعیت" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "بلندی" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "بلندی (فاصله از سطح دریا) یک نقطه به متر." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "دسترسی صندلی چرخ‌دار" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "بله" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "خیر" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "محدود" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "تعیین شده" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "دسترسی اینترنتی" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "وای‌فای" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "سیمی" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "پایانه" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "خدمت" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "دین" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "جانگرایی" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "بهایی" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "بوداییسم" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "کایوداییسم" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "مسیحیت" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "کنفسیوسیسم" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "هندوییسم" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "برهما‌بوداییسم" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "یهودیت" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "اسلام" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "دین‌های مختلف" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "پگانیسم" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "پاستاپرستی" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "علمگرایی" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "شینتو" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "سیک" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "روحگرایی" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "تائوییسم" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "جهانگرایی یکتاپرست" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "وودو" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "یزیدی" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرتشتی" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "دستشویی‌ها" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "نکته" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an " +"element, the author’s intent when creating it, or hints for further improvement." +msgstr "" +"اطّلاعات برای آگاه کردن دیگر نقشه‌کش‌ها دربارهٔ اطّلاعات نابدیهی دربارهٔ یک عنصر، قصد " +"نگارنده هنگام ایجادش یا راهنمایی برای بهبودهای بعدی." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "گزینش گونه" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "انجام شد" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "مکان بی‌نام" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "جمعیت:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "بلندی:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "ساعت‌های کار:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "دسترسی اینترنتی:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "دین:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "دستشویی‌ها:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "دسترسی صندلی چرخ‌دار:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "تلفن:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "شکست در پردازش نشانی جغرافیایی" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "بله" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "خیر" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "تعیین شده" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "مکان در اوپن استریت مپ پیدا نشد" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "نشانی OpenStreetMap نامعتبر است" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "مختصات نشانی نامعتبر" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "نشانی پشتیبانی نمی‌شود" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "از %s تا %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "در حال بار کردن کاشی‌های نقشه برای چاپ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "اگر خیلی طول کشید، می‌توانید چاپ را خاتمه دهید" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "خاتمهٔ چاپ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "افزودن از راه موقعیت" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "برداشتن از راه موقعیت" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "مسیر برعکس" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "افزودن %s به %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "شکست در گشودن نشانی" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "گشودن با %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "شکست در بارگیری پرونده" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "زمان تخمینی: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "برنامه سفر فراهم شده به دست %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "شروع در %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "شروع" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s قدم بزنید" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "رسیدن به مقصد در %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "رسیدن" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "نمایش دستور کار قدم زدن" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "نهفتن دستور کار قدم زدن" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "بار کردن جایگزین‌های قدیمی‌تر" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "بار کردن جایگزین‌های جدیدتر" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "جایگزین‌های قدیمی‌تری پیدا نشدند." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "جایگزین‌های جدیدتری پیدا نشدند." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %Oe" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "برای این مسیر هیچ دادهٔ جدول زمانی‌ای پیدا نشد." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "برای این مسیر هیچ فراهم کننده‌ای پیدا نشد." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s دقیقه" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ساعت" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ساعت" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "حدود ساعت" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "از سپیده‌دم تا غروب" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "هر روز" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "تعطیلات عمومی" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "تعطیلات مدرسه" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "باز نیست" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "سیمی" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "پایانه" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "خدمت" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "دقّت: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "ناشناخته" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "دقیقاً" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s س" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s س %s د" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s د" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s ث" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s ک‌م" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s ما" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s پا" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "این افزایه، جدیدترین زمان حضور را پشتیبانی نمی‌کند" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "در %s ادامه دهید" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "ادامه" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "در %s به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "در %s آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "در %s تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "در %s به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "در %s آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "در %s تند به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "تند به رایت بپیچید" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "در میدان از %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "در میدان به %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "وارد میدان شوید" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "وارد آسانسور شده و در %s حارج شوید" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "وارد آسانسور شوید" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "به %s گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "به %s گردش به راست کنید" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "گردش به راست کنید" + +#~ msgid "Don’t have an account?" +#~ msgstr "حسابی ندارید؟" + +#~ msgid "%f h" +#~ msgstr "%If ساعت" + +#~ msgid "%f min" +#~ msgstr "%If دقیقه" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "افزودن مقصد" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "جست‌وجوی مسیر به دست OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "خروج" + +#~ msgid "Load Map Layer" +#~ msgstr "بار کردن لایه نقشه" + +#~ msgid "Open with another application" +#~ msgstr "گشودن با برنامه‌ای دیگر" + +#~ msgid "Press enter to search" +#~ msgstr "برای جست‌وجو دکمه Enter را فشار دهید" + +#~ msgid "OK" +#~ msgstr "تایید" + +#~ msgid "%f km" +#~ msgstr "%If کیلومتر" + +#~ msgid "%f m" +#~ msgstr "%If متر" + +#~ msgid "%f mi" +#~ msgstr "%If مایل" + +#~ msgid "%f ft" +#~ msgstr "%If فوت" + +#~ msgid "Country code: %s" +#~ msgstr "کد کشور: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "آخرین مکان و دقت شناخته شده" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "آخرین مکان شناخته شده (عرض و طول جغرافیایی به درجه) و دقت (به متر)" + +#~ msgid "Description of last known location of user." +#~ msgstr "توضیحات آخرین مکان شناخته شده کاربر." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "این که آخرین مکان شناخته شده به صورت دستی توسط کاربر تنظیم شده یا نه." + +#~ msgid "I’m here!" +#~ msgstr "من این‌جا هستم!" + +#~ msgid "Satellite" +#~ msgstr "ماهواره" + +#~ msgid " km²" +#~ msgstr "کیلومتر مربع" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..b848d7c9 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,2001 @@ +# Finnish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jiri Grönroos , 2013, 2014, 2015, 2016, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-16 23:19+0300\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: suomi \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnomen kartat" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Löydä sijainteja ympäri maailman" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartat mahdollistaa maailmanlaajuisen karttatiedon käytön nopeasti. Voit " +"paikallistaa haluamasi paikan etsimällä vaikkapa kaupunkia tai katua." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartat hyödyntää tuhansien ihmisten yhdessä luomaa OpenStreetMap-tietokantaa." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Voit myös etsiä tietynlaista sijaintia, kuten \"Pubit lähellä Kallio, " +"Helsinki\" tai \"Hotellit lähellä Berliini, Saksa\"." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Gnome-projekti" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Kartat" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Yksinkertainen karttasovellus" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kartta;Kartat;Reitit;Reitti;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Sallii sijaintisi näytettävän kartalla." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "viimeksi katsottu sijainti" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Viimeksi katsotun sijainnin koordinaatit." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaustaso" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartan tyyppi" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Näytettävän kartan tyyppi (katu, ilma jne.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ikkunan koko" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ikkunan koko (leveys ja korkeus)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ikkunan sijainti" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ikkunan sijainti (x ja y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ikkuna suurennettu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Ikkunan suurennuksen tila" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Hakutulosten enimmäismäärä" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode-haun tulosten enimmäismäärä." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Äskettäisten sijaintien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Äskettäin käytyjen sijaintin varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Äskettäisten reittien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Äskettäin käytyjen reittien varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-paikkakirjautumisen yksityisyysasetus" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Viimeisin käytetty Facebook-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS tai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-paikkakirjautumisen yksityisyysasetus" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Viimeisin käytetty Foursquare-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: public, followers tai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Facebookiin" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen viestinä " +"Foursquare-tiliin liitetylle Facebook-tilille." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Twitteriin" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen twiittinä " +"Foursquare-tiliin liitetylle Twitter-tilille." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-käyttäjätunnus tai -sähköposti" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Ilmaisee onko käyttäjä kirjautunut muokatakseen OpenStreetMap-tietoja." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Reitityksessä viimeksi käytetty matkatapa" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Yötila" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Onko sovellus yötilassa vai ei." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Käytä hybridejä ilmatiilejä" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Tuleeko ilmatiilten käyttää hybridityyliä (selitteiden kera)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Näkyvyys" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Lähetä Facebookiin" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Lähetä Twitteriin" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Peru" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Kirjaudu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kaikki" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Kaverien kaverit" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Vain kaverit" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Vain minä" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Julkinen" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seuraajat" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Yksityinen" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Reitti täältä" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lisää välisijainti" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Reitti tänne" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mitä täällä on?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopioi sijainti" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Vie näkymä" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Vie" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sisällytä reitti ja merkit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Valitse kartan tyyppi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Loitonna" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Lähennä" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Näytä/piilota suosikit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Yleiset" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Näytä pikanäppäimet" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Etsi" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Lopeta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Karttanäkymä" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Lähennä" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Loitonna" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Näytä/piilota mittakaava" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Vaihda katunäkymään" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Vaihda ilmanäkymään" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Avaa muototaso" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Näytä selitteet" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Avaa muototaso…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ota sijaintipalvelut käyttöön selvittääksesi sijaintisi" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Peru" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Sijaintipalvelut" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Yötila" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Määritä OpenStreetMap-tili" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Vie kuvana" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tietoja - Kartat" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Hae reitti" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Kartat on verkottomassa tilassa!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartat tarvitsee aktiivisen internetyhteyden toimiakseen kunnolla, mutta " +"sellaista ei kuitenkaan havaittu." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Tarkista yhteytesi ja välityspalvelimen asetukset." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Lisää uusi reitti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Jaa sijainti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merkitse suosikiksi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Kirjaudu tänne" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-tili" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Kirjaudu sisään muokataksesi " +"karttoja" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Auta parantamaan karttaa\n" +"OpenStreetMap-tiliä käyttäen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Sähköposti" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Salasana" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rekisteröidy" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Kirjaudu sisään" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Valitettavasti se ei kelvannut. Yritä uudelleen tai siirry\n" +"OpenStreetMapiin nollataksesi salasanasi." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Vahvistuskoodi ei kelvannut, yritä uudelleen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Kirjoita yllä oleva vahvistuskoodi" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vahvista" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sisäänkirjautunut" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap-tilisi on aktiivinen." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kirjaudu ulos" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Katu" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Talon numero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postinumero" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kaupunki" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tyyppi" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ei mitään" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lisää kenttä" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentti" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Karttamuutokset näkyvät kaikissa OpenStreetMapin\n" +"sisältöä käyttävissä kartoissa." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Viimeksi käytetty" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Seuraava" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Näytä lisätietoja" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tuloksia ei löytynyt" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Vedä muuttaaksesi reitin määritystä" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopioi" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Lähetä…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Avaa muototaso" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Avaa" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Näytä/piilota" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Reittihaun tarjoaa GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Julkisen liikenteen reitityksen matkareitit tarjoaa Gnome\n" +"käyttäen kolmansien osapuolien palveluja.\n" +"Gnome ei voi taata näytettävien matkareittien ja aikataulujen " +"oikeellisuutta.\n" +"Huomioi, että jotkin palveluntarjoajat eivät välttämättä sisällytä kaikkia\n" +"liikennöintimuotoja, esimerkiksi kansalliset palveluntarjoajat eivät " +"välttämättä\n" +"huomioi lentoreittejä, tai paikalliset palveluntarjoajat eivät välttämättä\n" +"huomioi valtakunnallisia junia.\n" +"Näytettävät nimet ja tuotemerkit on soveltuvin osin oletettava " +"rekisteröidyiksi." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Näytä lisää tuloksia" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Piilota välipysäkit ja tiedot" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Näytä välipysäkit ja tiedot" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Lähde nyt" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Lähde määrättynä aikana" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Saavu määrättynä aikana" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Näytä" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussit" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Raitiovaunut" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Junat" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Lautat" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lentokoneet" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Nykyinen sijainti" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Lähennä lisätäksesi sijainnin!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Lähennä" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Tiilirakennetta ei löytynyt hakemistosta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-asiakirjan jäsentäminen epäonnistui" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Vaaditut attribuutit puuttuvat" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-elementtiä ei löytynyt" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Polku paikallisten tiilien hakemistorakenteeseen" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Tiilen koko paikalliseen tiilten hakemistoon" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Näytä ohjelman versio" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Älä huomioi verkon saatavuutta" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[TIEDOSTO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Valitse tili" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ladataan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Valitse paikka" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Facebookista paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Foursquaresta paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Kirjaudu paikkaan %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Kirjoita valinnainen viesti paikkaan %s kirjautumisen yhteydessä." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Tapahtui virhe" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Paikkaa \"%s\" ei löydy sosiaalisista palveluista" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Tästä sijainnista ei löydy kelvollista paikkaa kirjautumista varten" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kirjautumistiedot ovat vanhentuneet. Avaa verkkotilien asetukset " +"kirjautuaksesi ja käyttääksesi tätä tiliä" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Täältä ei löytynyt mitään!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Sijainti lisättiin karttaan. Ota huomioon, että sen näkymisessä kartalla ja " +"hakutuloksissa saattaa kestää jonkin aikaa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartta sijainnissa %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Tiedostojärjestemä on \"vain luku\"-muodossa" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oikeutesi eivät riitä tänne tallentamiseen" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Kansiota ei ole olemassa" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiedostonimeä ei määritetty" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Näkymän vienti epäonnistui" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "virheellinen koordinaatti" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "jäsentämisvirhe" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "tuntematon geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Reittipyyntö epäonnistui." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Reittiä ei löytynyt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Aloitus!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Kaikki tasotiedostot" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Yhteys sijaintipalveluun epäonnistui" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Karttasovellus Gnomelle" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Tekijänoikeus © 2011 – 2019 Red Hat, Inc. ja Gnomen karttasovelluksen " +"kehittäjät" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Karttatiedot tarjoaa %s ja avustajat" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karttatiilet tarjoaa %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Haun tarjoaa %s käyttämällä %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Tiedostotyyppi ei ole tuettu" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Tason avaaminen epäonnistui" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "GeoURI:n avaaminen epäonnistui" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Onnistui" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Virheellinen pyyntö" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektia ei löytynyt" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Ristiriita, joku toinen muokkasi juuri objektia" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekti on poistettu" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tie tai relaatio viittaa lapseen, jota ei ole olemassa" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nimi" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Virallinen nimi. Tämä on yleensä näkyvillä kyltissä." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Osoite" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Verkkosivusto" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Virallinen verkkosivusto. Käytä verkkotunnuksen perusmuotoa, eli mieluummin " +"http://esimerkki.fi kuin http://esimerkki.fi/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Puhelin" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Puhelinnumero. Käytä kansainvälistä muotoa, aloita +-merkillä. Ota huomioon " +"mahdolliset paikalliset yksityisyyslait, jotka voivat koskea salaisia " +"puhelinnumeroita." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Käytettävän muotoilun tulisi sisältää kielikoodin ja artikkelin nimen, kuten " +"”en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Aukioloajat" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Avaa linkki nähdäksesi muotoilua koskevan ohjeen." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Asukasluku" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Korkeus" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Sijaintipisteen korkeus merenpinnan yläpuolella metreissä." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pääsy pyörätuolilla" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Kyllä" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Rajoitettu" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Suunniteltu" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet-käyttö" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kiinteä" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Pääte" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Palvelu" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Uskonto" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismi" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhalaisuus" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismi" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristinusko" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Kungfutselaisuus" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindulaisuus" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainalaisuus" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Juutalaisuus" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Useita uskontoja" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pakanuus" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarilaisuus" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Skientologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintolaisuus" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhiläisyys" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualismi" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taolaisuus" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaariuniversalismi" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jesidismi" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zarathustralaisuus" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Vessat" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Huomio" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Tietoja muille kartoittajille elementistä, sen luomisen tarkoituksesta tai " +"vihjeitä parannusten suhteen." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Valitse tyyppi" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Valmis" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nimetön paikka" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Asukasluku:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Korkeus:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Aukioloajat:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetin käyttö:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Uskonto:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Vessat:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Pääsy pyörätuolilla:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Puhelin:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Geo URI:n jäsentäminen epäonnistui" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "kyllä" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "rajoitettu" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "suunniteltu esteettömäksi" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Paikkaa ei löytynyt OpenStreetMapista" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-osoite ei ole kelvollinen" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaatit osoitteessa eivät ole kelvolliset" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Osoite ei ole tuettu" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Alkupisteestä %s päätepisteeseen %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ladataan karttatiiliä tulostusta varten" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Voit perua tulostuksen, jos siinä kestää liian kauan" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Peru tulostus" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lisää välisijainti" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Poista välisijainti" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Käänteinen reitti" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lisää %s sovellukseen %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI:n avaaminen epäonnistui" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Avaa sovelluksella %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "tiedoston lataaminen epäonnistui" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Arvioitu aika: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Matkareitit tarjoaa %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Aloita %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Aloita" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Kävele %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Saavu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Saavu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Näytä kävelyohjeet" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Piilota kävelyohjeet" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Lataa aiemmat vaihtoehdot" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Lataa myöhemmät vaihtoehdot" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aiempia vaihtoehtoja ei löytynyt." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Myöhempiä vaihtoehtoja ei löytynyt." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Tälle reitille ei löytynyt aikataulutietoja." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Tälle reitille ei löytynyt palveluntarjoajaa." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuutti" +msgstr[1] "%s minuuttia" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s tunti" +msgstr[1] "%s tuntia" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%02s tunti" +msgstr[1] "%s:%02s tuntia" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "kellon ympäri" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "auringonnoususta auringonlaskuun" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "päivittäin" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "yleiset vapaapäivät" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "koulujen vapaapäivät" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ei avoinna" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kiinteä" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "pääte" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "palvelu" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tarkkuus: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Tuntematon" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tarkka" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tämä liitännäinen ei tue myöhäisintä saapumista" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Jatka %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Jatka" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Käänny vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Käänny vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Käänny hieman vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Käänny hieman vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Käänny terävästi vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Käänny terävästi vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Käänny oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Käänny oikealle" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Käänny hieman oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Käänny hieman oikealle" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Käänny terävästi oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Käänny terävästi oikealle" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Kiertoliittymässä ota poistumistie %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Kiertoliittymässä ota poistumistie kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Mene kiertoliittymään" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ota hissi ja jää pois kerroksessa %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Ota hissi" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Tee u-käännös vasemmalle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Tee u-käännös vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Tee u-käännös oikealle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Tee u-käännös oikealle" + +#~ msgid "Don’t have an account?" +#~ msgstr "Oletko vailla tiliä?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lisää välipiste" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Reittihaun tarjoaa OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Avaa muussa sovelluksessa" + +#~ msgid "Press enter to search" +#~ msgstr "Paina enter etsiäksesi" + +#~ msgid "Quit" +#~ msgstr "Lopeta" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Avaa muototaso…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Lataa karttataso" + +#~ msgid "Open Layer" +#~ msgstr "Avaa taso" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Sijaintia ei löytynyt" + +#~ msgid "Country code: %s" +#~ msgstr "Maanumero: %s" + +#~ msgid "Population: %s" +#~ msgstr "Asukasluku: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pääsy pyörätuolilla: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON-tiedoston jäsentäminen epäonnistui" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Viimeksi tunnettu sijainti ja tarkkuus" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Viimeksi tunnettu sijainti (leveys ja pituus asteissa) ja tarkkuus " +#~ "(metreissä)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Käyttäjän viimeksi tunnetun sijainnin kuvaus." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Asetettiinko viimeksi tunnettu sijainti käyttäjän toimesta." + +#~ msgid "I’m here!" +#~ msgstr "Minä, minä olen täällä!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelliitti" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..8c8cc688 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,1946 @@ +# French Translation of GNOME Maps. +# Copyright (C) 2013-2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ouharzoune Mohammed , 2013 +# Claude Paroz , 2013-2017, 2020 +# Alexandre Franke , 2016. +# Guillaume Bernard , 2014, 2015, 2016. +# Alain Lojewski ,2018 +# Charles Monzat , 2018-2019. +# vanadiae , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-16 21:00+0000\n" +"PO-Revision-Date: 2020-09-18 12:42+0200\n" +"Last-Translator: vanadiae \n" +"Language-Team: GNOME French Team \n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Gtranslator 3.36.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Cartes de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recherche d’emplacements autour du monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L’application Cartes vous donne un accès rapide à des cartes du monde " +"entier. Elle permet de trouver rapidement un emplacement en recherchant par " +"ville ou par rue, ou de situer un endroit de rencontre avec un ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Les cartes utilisent la base de données collaborative OpenStreetMap, à " +"laquelle contribuent des centaines de milliers de personnes dans le monde " +"entier." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vous pouvez même chercher des lieux spécifiques, comme « Restaurants à côté " +"de la Cathédrale de Strasbourg » ou « Hôtels à côté d’Alexanderplatz à " +"Berlin »." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Le projet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Cartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une application cartographique simple" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Cartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d’afficher votre emplacement sur la carte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "dernier emplacement affiché" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonnées du dernier emplacement affiché." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Niveau de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type de carte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Le type de carte à afficher (plan, satellite, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Taille de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Taille de la fenêtre (hauteur et largeur)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Position de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Position de la fenêtre (X et Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenêtre agrandie" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "État d’agrandissement de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de résultats de recherche" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de résultats d’une recherche par géocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de positions récentes à conserver" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de positions récemment visitées à conserver." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre d’itinéraires récents à conserver" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre d’itinéraires récemment visités à conserver." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidentialité d’annonce de la localisation sur Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation sur Facebook. Les valeurs possibles sont : EVERYONE (tout le " +"monde), FRIENDS_OF_FRIENDS (amis des amis), ALL_FRIENDS (tous les amis) or " +"SELF (soi)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidentialité d’annonce de la localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation Foursquare. Les valeurs possibles sont : public (publiques), " +"followers (personnes qui me suivent) ou private (privé)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Diffusion sur Facebook des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Facebook associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Diffusion sur Twitter des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Twitter associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d’utilisateur ou adresse électronique OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indique si l’utilisateur s’est identifié pour modifier des données " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Type de transport utilisé lors du dernier itinéraire" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mode nuit" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indique si l’application est en mode nuit." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utiliser les tuiles aériennes hybrides" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indique si les tuiles aériennes doivent être utilisées en mode hybride (avec " +"étiquettes)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilité" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publier sur Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publier sur Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuler" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "A_nnoncer sa localisation" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tout le monde" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amis des amis" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Juste les amis" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Juste moi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publique" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personnes qui me suivent" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinéraire depuis ici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ajouter une destination intermédiaire" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinéraire jusqu’à ce point" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Qu’y a-t-il ici ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copier l’emplacement" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Ajouter à OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportation de l’affichage" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclure l’itinéraire et les marqueurs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Choisir le type de carte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom arrière" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Basculer les favoris" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Général" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afficher les raccourcis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Rechercher" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitter" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afficher la carte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrière" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Afficher/masquer l’échelle" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passer en vue cartographique" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passer en vue aérienne" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afficher les étiquettes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ouvrir une couche de formes…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activer les services de localisation pour trouver votre position." + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuler" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localisation" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode nuit" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurer un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporter comme image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "À propos de Cartes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Cartes est hors ligne !" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Cartes a besoin d’une connexion Internet active et fonctionnelle, mais " +"aucune n’a été trouvée." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Vérifiez votre connexion et vos paramètres de proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Ajouter à un nouvel itinéraire" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partager l’emplacement" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marquer comme favori" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Annoncer cet emplacement comme localisation" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S’identifier pour modifier des " +"cartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aider à l’amélioration des cartes avec\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adresse électronique" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mot de passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscrire" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "S’identifier" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Désolé, ça n’a pas fonctionné. Veuillez réessayer ou visiter\n" +"OpenStreetMap pour réinitialiser votre mot de passe." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Le code de vérification ne correspond pas, essayez encore une fois." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Saisissez le code de vérification affiché ci-dessus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vérifier" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Vous êtes inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Votre compte OpenStreetMap est actif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Se déconnecter" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rue" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numéro" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Code postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ville" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Aucun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Ajouter un champ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaire" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Les modifications de la carte seront visibles sur toutes\n" +"les cartes qui utilisent des données OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Dernièrement utilisé" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Suivant" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montrer plus d’informations" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Aucun résultat trouvé" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Faites glisser pour modifier l’ordre de l’itinéraire" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ouvrir l’emplacement" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copier" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Envoyer vers…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ouvrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inverser la visibilité" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recherche d’itinéraire avec GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Les itinéraires par transport public sont fournis par des services tiers\n" +"GNOME ne peut garantir l’exactitude des itinéraires et horaires présentés.\n" +"Notez que certains fournisseurs ne présentent pas toujours tous les modes " +"de\n" +"transport disponibles, par ex. un fournisseur national n’indiquerait peut-" +"être\n" +"pas les lignes aériennes ou un fournisseur local pourrait omettre les trains " +"régionaux\n" +".Les noms et marques affichés doivent être considérés comme des marques " +"déposées, le cas échéant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montrer plus de résultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Masquer les arrêts et informations intermédiaires" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afficher les arrêts et informations intermédiaires" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir maintenant" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Départ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivée" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afficher" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Métros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Bateaux" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lieu actuel" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomez pour ajouter un emplacement !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trouver une structure de tuiles dans le répertoire" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Échec d’analyse d’un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributs obligatoires manquants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trouver l’élément OSM" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Un chemin vers un répertoire local de structure de tuiles" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "Taille de tuile pour le répertoire local de tuiles" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Afficher la version du logiciel" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignorer la disponibilité du réseau" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FICHIER…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Sélectionner un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Chargement" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Sélectionner un lieu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Facebook. " +"Veuillez en sélectionner un dans cette liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Foursquare. " +"Veuillez en sélectionner un dans cette liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Annoncer sa localisation à %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Écrire un message optionnel pour votre annonce de localisation à %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Une erreur est survenue" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trouver « %s » sur le réseau social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trouver un endroit correspondant pour annoncer sa localisation " +"ici." + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Les informations d’authentification ont expiré, ouvrez Comptes en ligne pour " +"vous connecter et activer ce compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Rien n’a été trouvé à cet endroit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L’emplacement a été ajouté à la carte, notez que cela peut prendre un moment " +"avant qu’il n’apparaisse sur la carte et dans les résultats de recherche." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Cartes situées à %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Le système de fichiers est en lecture seule" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vous n’avez pas la permission d’enregistrer à cet endroit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Le dossier n’existe pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Aucun nom de fichier indiqué" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d’exporter l’affichage" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordonnée non valable" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erreur d’analyse" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "géométrie inconnue" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Échec de la recherche d’itinéraire." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Aucun itinéraire trouvé." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "C’est parti !" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Tous les fichiers de couches" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Échec à la connexion au service de localisation" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Ouharzoune Mohammed \n" +"Claude Paroz \n" +"Guillaume Bernard " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "Une application cartographique pour GNOME" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2019 Red Hat, Inc. et les auteurs de Cartes de GNOME" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Données cartographiques de %s et contributeurs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Couches de données cartographiques fournies par %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Recherche fournie par %s utilisant %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Le type de fichier n’est pas pris en charge" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Échec d’ouverture de la couche" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Échec d’ouverture de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d’utilisateur ou mot de passe incorrect" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Mauvaise requête" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objet non trouvé" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, quelqu’un d’autre vient de modifier l’objet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L’objet a été supprimé" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Le chemin ou la relation se réfère à des enfants qui n’existent pas" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Le nom officiel. C’est en général ce qui est écrit sur l’enseigne." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Site Web" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Le site officiel. Essayez d’utiliser la forme la plus simple pour l’URL, " +"c’est-à-dire http://example.com au lieu de http://example.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Téléphone" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numéro de téléphone. Utilisez le format international, en commençant par un " +"signe +. Attention aux lois locales sur la vie privée, surtout pour les " +"numéros de téléphone des particuliers." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Le format utilisé devrait comprendre le code langue et le titre de " +"l’article, comme « fr:Titre de l’article »." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Heures d’ouverture" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Voir le lien dans l’étiquette pour de l’aide sur le format." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Élévation (hauteur au-dessus du niveau de la mer) d’un point en mètres." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Accès aux fauteuils roulants" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Oui" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Limité" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Réservé" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Accès à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Filaire" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahaïsme" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Bouddhisme" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Christianisme" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindouisme" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Plusieurs religions" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universaliste" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Vaudou" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Yézidisme" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Toilettes" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informations utilisées pour informer d’autres cartographes sur les " +"informations non évidentes sur un élément, l’intention de l’auteur lors de " +"sa création ou des indications pour de possibles améliorations." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Ajout à OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Sélectionner le type" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Terminé" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Emplacement sans nom" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Population :" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Altitude :" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Heures d’ouverture :" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Accès à Internet :" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Religion :" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Toilettes :" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Accès aux fauteuils roulants :" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Téléphone :" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Échec à l’analyse de la Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "oui" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limité" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "non" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "réservé" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Emplacement introuvable sur OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "L’URL de OpenStreetMap n’est pas valide" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Les coordonnées dans l’URL ne sont pas valides" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "L’URL n’est pas prise en charge" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s à %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Chargement des tuiles de carte pour l’impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vous pouvez interrompre l’impression si cela prend trop de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l’impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ajouter un emplacement intermédiaire" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Supprimer l’emplacement intermédiaire" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Chemin inverse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Ajouter %s à %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Échec d’ouverture de l’URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Ouvrir avec %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "impossible de charger le fichier" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimé : %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinéraires fournis par %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Départ de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Départ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Marcher %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrivée à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Arrivée" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montrer les instructions de marche à pied" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Masquer les instructions de marche à pied" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Charger les alternatives précédentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Charger les alternatives suivantes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aucune alternative précédente trouvée." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Aucune alternative suivante trouvée." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Aucun horaire trouvé pour cet itinéraire." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Aucun fournisseur trouvé pour cet itinéraire." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s heure" +msgstr[1] "%s heures" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s heure" +msgstr[1] "%s:%s heures" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "24h/24" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "du lever au coucher du soleil" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "tous les jours" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "congés publics" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "congés scolaires" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "fermé" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "filaire" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "service" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Précision de la position : %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Inconnue" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ce greffon ne prend pas en charge les dernières arrivées" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuer sur %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continuer" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Tourner à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Tourner à gauche" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Tourner légèrement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Tourner légèrement à gauche" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Tourner franchement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Tourner franchement à gauche" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Tourner à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Tourner à droite" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Tourner légèrement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Tourner légèrement à droite" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Tourner franchement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Tourner franchement à droite" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dans le giratoire, prendre la sortie %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dans le giratoire, prendre la sortie vers %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "S’engager dans le giratoire" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendre l’ascenseur et sortir à %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Prendre l’ascenseur" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faire un demi-tour à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Faire un demi-tour à gauche" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faire un demi-tour à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Faire un demi-tour à droite" + +#~ msgid "Find a Route" +#~ msgstr "Trouver un itinéraire" + +#~ msgid "Primary menu" +#~ msgstr "Menu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Vous n’avez pas de compte ?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" diff --git a/po/fur.po b/po/fur.po new file mode 100644 index 00000000..144bf355 --- /dev/null +++ b/po/fur.po @@ -0,0 +1,1998 @@ +# Friulian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Fabio Tomat , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-28 13:12+0200\n" +"Last-Translator: Fabio Tomat \n" +"Language-Team: Friulian \n" +"Language: fur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapis GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cjate puescj tor atôr pal mont" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapis ti da un acès veloç a lis mapis ator pal mont. Ti permet di cjatâ di " +"corse il puest che ti interesse cirint citât o vie, o cirî un puest dulà " +"cjatâsi cuntun ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapis al dopre il database colaboratîf OpenStreetMap, fat da centenârs di " +"miârs di personis ator pal mont." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tu puedis ancje cirî par specifics gjenars di puescj, come \"Pubs near Main " +"Street, Boston\" o \"Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Il progjet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapis" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une semplice aplicazion par lis mapiss" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapis;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet ae tô posizion di jessi mostrade te mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultime posizion viodude" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinadis de ultime posizion viodude." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel di ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Gjenar di mape" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il gjenar di mape di mostrâ (stradâl, aerie, ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimension barcon" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimension barcon (largjece e altece)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizion barcon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizion barcon (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Barcon massimizât" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stat massimizât dal barcon" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Massim numar di risultâts di ricercje" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Massim numar di risultâts de ricercje da codifiche gjeografiche." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numar di lûcs resints di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numar di lûcs resints viodûts di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numar di stradis resintis di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numar di stradis resintis viodudis di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazions privacy dai check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazion pe privacy dai check-in su Facebook doprade. I valôrs " +"pussibii a son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazions pe privacy dai check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazion pe privacy dai check-in doprade. I valôrs pussibii a son: " +"public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmission a Facebook dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un post tal account " +"Facebook associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmission a Twitter dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un tweet tal account " +"Twitter associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Non utent o direzion e-mail OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Al indiche se l'utent al è jentrât te session par modificâ dâts " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultin gjenar di traspuart doprât par spostâsi" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modalitât gnot" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indiche se la aplicazion e je in modalitât gnot." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Dopre sezions aeriis ibridis" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indiche se lis sezions de mape aeriis a àn di doprâ il stîl ibrit (cun " +"etichetis)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitât" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publiche su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publiche su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anule" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ducj" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amîs di amîs" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nome amîs" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nome jo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personis che a mi seguissin" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privât" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Strade di chi" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zonte destinazion intermedie" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Strade par rivâ chi" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce isal chi?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copie posizion" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Espuarte viodude" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Espuarte" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclût stradis e marcadôrs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Sielç il gjenar di mape" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Impiçulìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ingrandìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Ative/disative plan di percors" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Ative/disative preferîts" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Stampe Strade" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Gjenerâl" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostre scurtis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cîr" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Cambie plan stradis" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampe strade" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Jes" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Viodude mape" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumente ingrandiment" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuìs ingrandiment" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Cambiâ scjale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passe ae viodude stradâl" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passe ae viodude aerie" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vierç strât sagome" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostre etichetis" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vierç strât sagome…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ativâ i servizis di localizazion par cjatâ la tô posizion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anule" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazions di localizazion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalitât gnot" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configure Account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Espuarte come Imagjin" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtis tastiere" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazions su Mapis" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Cjate un percors" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapis al è offline!" + +# cjatâ'nt indi? +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapis a scugne vê une conession internet ative par podê funzionâ, ma no si " +"'nt rive a cjatâ une." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Controle le tô conession e lis impostazions proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Zonte a gnûf percors" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Condivît posizion" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Segne come preferît" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Fâs il check-in chi" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jentre par modificâ lis mapis" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Jude a miorâ la mape doprant un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regjistriti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Jentre" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Mi displâs, nol funzione. Torne prove o visite\n" +"OpenStreetMap par tornâ a configurâ la tô password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codiç di verifiche nol corispuint, torne prove." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Scrîf il codiç di verifiche mostrât chi parsore" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiche" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jentrât" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Il tô account OpenStreetMap al è atîf." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Jes" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Vie" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numar civic" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codiç postâl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Citât" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Gjenar" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nissun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Zonte cjamp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Coment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"I cambiaments de mape a saran visibii in dutis lis mapis che a doprin\n" +"dâts OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Doprâts di resint" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Prossim" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostre plui informazions" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nissun risultât cjatât" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Strissine par cambiâ l'ordin de strade" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Vierç posizion" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copie" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Invie a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vierç strât sagome" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Vierç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Cambiâ stât visibil" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricercje dal percors cun GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I itineraris di percors pai mieçs publics a son furnîts di servizis di\n" +"tiercis parts.\n" +"GNOME nol pues garantî la justece dai itineraris e dai oraris mostrâts.\n" +"Viôt che cualchi furnidôr al podarès no includi dutis lis modalitâts di " +"traspuart disponibilis,\n" +"p.e. un furnidôr nazionâl al podarès no includi lis tratis aeronautichis e " +"un furnidôr locâl\n" +"al pues no includi i trens regjionâi.\n" +"I nons e lis marchis mostradis si àn di considerâ come marchis regjistradis " +"cuant che si puedin aplicâ." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostre plui risultâts" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Plate fermadis intermediis e informazions" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostre fermadis intermediis e informazions" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partî cumò" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partî tor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Rivâ tor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostre" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghets" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Posizion atuâl" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Aumente ingrandiment par zontâ un puest!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ingrandìs" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impussibil cjatâ la struture des sezions de mape te cartele" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Impussibil analizâ il document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "E mancjin i atribûts necessaris" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impussibil cjatâ l'element OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Un percors par une struture de cartele des sezions di mape locâls" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "La dimension des sezions de mape pe cartele des sezions locâls" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Mostre la version dal program" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignore disponibilitât rêt" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezione un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Daûr a cjamâ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezione un lûc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Facebook. Selezionâ un di " +"cheste liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Foursquare. Selezionâ un di " +"cheste liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in là di %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivi un coment opzionâl pal check-in là di %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Si è verificât un erôr" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No rivi a cjatâ “%s” tal servizi social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impussibil cjatâ un puest adat pal check-in in chest lûc" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Lis credenziâi a son scjadudis, vierç Accounts Online par coneti e abilitâ " +"chest account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nol è nuie culì!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Il lûc al è stât zontât te mape, viôt che al podarès coventâ un pôc prime " +"che al vegni fûr te mape e tai risultâts di ricercje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapis a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il file di sisteme al è in modalitât dome-leture" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tu âs i permès par salvâ là" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La cartele no esist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nissun non file specificât" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impussibil espuartâ la viodude" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinade no valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erôr tal analizâ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "gjeometrie no valide" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Richieste dal percors falide." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Percors no cjatât." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Invie!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Ducj i file di strât" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Impussibil conetisi al servizi di localizazion" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Fabio Tomat, " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Une aplicazion di GNOME par lis mapis" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e i autôrs di GNOME Mapis" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dâts mape di %s e colaboradôrs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Sezions de mape furnîts di %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricercje furnide di %s doprant %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Gjenar di file no supuartât" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Impussibil vierzi il strât" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Impussibil vierzi il GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Non utent o password sbaliâts" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richieste no juste" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Element no cjatât" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, cualchidun altri al à apene modificât l'element" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'element al è stât eliminât" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La vie o la relazion si riferìs a fîs no-esistents" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Non" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Il non uficiâl. Chest al è, di solit, chel che al ven fûr tes firmis." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Recapit" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Sît web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sît web uficiâl. Cîr di doprâ la plui semplice forme di direzion, par " +"esempli http://example.com invezit di http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numar di telefon. Dopre il formât internazionâl, tacant cun un segn +. Sta " +"atent das leçs locâi su le privacy, in particolâr par numars di telefon " +"privâts." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedie" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formât doprât al à di includi il codiç de lenghe e il titul dal articul " +"come \"fur:Titul dal articul\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Orari di viertidure" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Viôt il leam te etichete pal jutori sul formât." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Popolazion" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudin" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevazion (altece sul nivel dal mâr) di un pont in metris." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acès disabii" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitât par disabii" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Specific par disabii" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cablade" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminâl" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servizi" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religjon" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisim" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisim" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisim" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianitât" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisim" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Induisim" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisim" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisim" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Religjons multiplis" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisim" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisim" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisim" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisim" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisim" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalisim Unitari" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisim" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisim" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Gabinets" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informazion doprade par informâ altris mapadôrs su no evidentis informazions " +"suntun element, l’intent dai autôrs tal creâlu o sugjeriments par ulteriôrs " +"mioraments." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Selezione un gjenar" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fat" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Puest cence non" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Popolazion:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudin:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Orari di viertidure:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acès internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religjon:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Gabinets:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acès disabii:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Impussibil analizâ il Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sì" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitât pai disabii" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "specific par disabii" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lûc no cjatât su OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL di OpenStreetMap nol è valit" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Lis coordenadis tal URL no son validis" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nol è supuartât" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Di %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Daûr a cjariâ lis sezions de mape pe stampe" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tu puedis fermâ di stampâ se al sta masse" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ferme stampe" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zonte posizion de vie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gjave posizion de vie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percors inviers" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Zonte %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Impussibil vierzi il URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Vierç cun %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "impussibil cjariâ il file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp stimât: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris furnîts di %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partìs di %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partence" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Cjaminâ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Rive a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Rivade" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostre istruzions par lâ a pît" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Plate istruzions par lâ a pît" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cjariâ alternativis plui adore" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cjariâ alternativis plui tart" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nissune alternative plui adore cjatade." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nissune alternative plui tart cjatade." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e di %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nissun dât di oraris cjatât par chest percors." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nissun furnidôr cjatât par chest percors." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minût" +msgstr[1] "%s minûts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ore" +msgstr[1] "%s oris" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ore" +msgstr[1] "%s:%s oris" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dut il dì" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "di un scûr a chel altri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ogni dì" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "festîfs" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacancis di scuele" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "no viert" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cablade" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminâl" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servizi" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de posizion: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "No cognossût" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Di precîs" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Chest plugin nol supuarte la ultime rivade" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue su %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolte a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Svolte a çampe" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolte di pôc a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Svolte di pôc a çampe" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolte di bot a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Svolte di bot a çampe" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolte a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Svolte a diestre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolte di pôc a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Svolte di pôc a diestre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolte di bot a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Svolte di bot a diestre" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Inte rotatorie, cjape la jessude %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Inte rotatorie, cjape la jessude par %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Cjape la rotatorie" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Cjape l'assensôr e jes a %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Cjape l'assensôr" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fâs une inversion a U a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Fâs une inversion a U a çampe" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fâs une inversion a U a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Fâs une inversion a U a diestre" + +#~ msgid "Primary menu" +#~ msgstr "Menù primari" + +#~ msgid "Don’t have an account?" +#~ msgstr "No tu âs un account?" + +#~ msgid "Add destination" +#~ msgstr "Zonte destinazion" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ricercje dal percors cun OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Vierç cuntune altre aplicazion" + +#~ msgid "Press enter to search" +#~ msgstr "Frache Invie par cirî" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Jes" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vierç strât sagome…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cjarie strât de mape" + +#~ msgid "Open Layer" +#~ msgstr "Vierç Strât" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Codiç paîs: %s" + +#~ msgid "_Share" +#~ msgstr "_Condivît" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'ultime posizion e precision cognossude" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'ultime posizion (latitudin e longjitudin in grâts) e precision (in " +#~ "metris) cognossude." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrizion de ultime posizion dal utent." + +#~ msgid "User set last known location" +#~ msgstr "Ultime posizion cognossude impuestade dal utent." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indiche se l'ultime posizion cognossude a je stade impuestade a man dal " +#~ "utent." + +#~ msgid "I’m here!" +#~ msgstr "O soi chi!" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ga.po b/po/ga.po new file mode 100644 index 00000000..b7753be9 --- /dev/null +++ b/po/ga.po @@ -0,0 +1,637 @@ +# Irish translations for gnome-maps package. +# Copyright (C) 2013-2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Seán de Búrca , 2013-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps.master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-01 14:40-0600\n" +"PO-Revision-Date: 2015-10-01 14:52-0600\n" +"Last-Translator: Seán de Búrca \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " +"4;\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:373 +msgid "Maps" +msgstr "Léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Feidhmchlár simplí léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Léarscáileanna;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Méid na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Méid na fuinneoige (leithead agus airde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Ionad na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +#, fuzzy +msgid "Window position (X and Y)." +msgstr "Ionad na fuinneoige (x agus y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Uasmhéadaíodh an fhuinneog" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +#, fuzzy +msgid "Window maximization state" +msgstr "Staid uasmhéadaithe na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent routes to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited routes to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Maidir Leis Seo" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Scoir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cealaigh" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Príobháideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Cad atá anseo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Cóipeáil Suíomh" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Socruithe Suímh" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Téigh go dtí an suíomh reatha" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Roghnaigh cineál léarscáile" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Tá Léarscáileanna as líne!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Cuir le bealach nua" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Oscail le feidhmchlár eile" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Oscail suíomh" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Oscail" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Cuardach bealaí ag GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Taispeáin tuilleadh torthaí" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:209 +msgid "Current location" +msgstr "Suíomh reatha" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Cruinneas: %s" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../src/application.js:86 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Á luchtú" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Roghnaigh áit" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +msgid "An error has occurred" +msgstr "Tharla earráid" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/mainWindow.js:321 +msgid "Failed to connect to location service" +msgstr "" + +#: ../src/mainWindow.js:326 +msgid "Position not found" +msgstr "" + +#: ../src/mainWindow.js:371 +msgid "translator-credits" +msgstr "Seán de Búrca " + +#: ../src/mainWindow.js:374 +msgid "A map application for GNOME" +msgstr "Feidhmchlár léarscáile do GNOME" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Cód poist: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Cód tíre: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Daonra: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Uaireanta oscailte: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Vicipéid" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Bealach isteach do chathaoireacha rothaí: %s" + +#: ../src/placeEntry.js:215 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: ../src/place.js:121 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:128 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: ../src/place.js:134 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:141 +msgid "designated" +msgstr "" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Bealach gan aimsiú." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "" + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Tosaigh!" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:230 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Am measta: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "gach lá" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Anaithnid" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:259 +msgid "Exact" +msgstr "" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f n" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f cm" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mí" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f tr" diff --git a/po/gd.po b/po/gd.po new file mode 100644 index 00000000..573cf67f --- /dev/null +++ b/po/gd.po @@ -0,0 +1,1621 @@ +# Scottish Gaelic translation for gnome-maps. +# Copyright (C) 2016 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# GunChleoc , 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-20\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product" +"=gnome-maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-09-11 20:24+0000\n" +"PO-Revision-Date: 2018-03-02 10:29+0100\n" +"Last-Translator: GunChleoc \n" +"Language-Team: Fòram na Gàidhlig\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " +"(n > 2 && n < 20) ? 2 : 3;\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapaichean GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Lorg àitichean air feadh an t-saoghail" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Bheir Mapaichean dhut inntrigeadh luath dha mhapaichean air feadh an t-" +"saoghail. Leigidh e leat àite a lorg gu luath a-rèir baile no sràide no an t-" +"àite a lorg far a bheil thu airson tachairt ri caraid." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Cleachdaidh Mapaichean stòr-dàta OpenStreetMap co-obrachail a chaidh a " +"chruthachadh leis na mìltean mòra de dhaoine o fheadh an t-saoghail." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"’S urrainn dut fiù ’s lorg airson ionadan sònraichte, can “Taighean-seinnse " +"faisg air Sràid nam Prionnsachan, Dùn Èideann” no “Taighean-òsta faisg air " +"Sràid Sauchiehall, Glaschu”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapaichean" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Aplacaid mhapaichean shimplidh" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;mapaichean;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Faodaidh far a bheil thu a nochdadh air a’ mhapa le seo." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "an t-ionad mu dheireadh a chaidh a shealltainn" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Co-chomharran an ionaid mu dheireadh a chaidh a shealltainn." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Meud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Meud na h-uinneige (leud ’s àirde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Ionad na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Ionad na h-uinneige (x is y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Làn-mheud air an uinneag" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Staid làn-mheud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "An àireamh as motha de thoraidhean luirg" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "An àireamh as motha de thoraidhean luirg o lorg geocode." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Àireamh dhe dh’ionadan o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" +"Àireamh dhe dh’ionadan air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Àireamh dhe shlighean o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "" +"Àireamh dhe shlighean air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Facebook. Seo na luachan as urrainn dhut cleachdadh: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS no SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Foursquare. Seo na luachan as urrainn dhut cleachdadh: public, " +"followers no private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Craoladh Facebook airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar phost sa " +"chunntas Facebook a tha co-cheangailte ris a’ chunntas Foursquare gus nach " +"bu chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Craoladh Twitter airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar tweet sa " +"chunntas Twitter a tha co-cheangailte ris a’ chunntas Foursquare gus nach bu " +"chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Ainm-cleachdaiche no seòladh puist-d OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Innsidh seo an do clàraich an cleachdaiche a-steach gus dàta OpenStreetMap a " +"dheasachadh gus nach do chlàraich." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Suidhich cunntas OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Ath-ghoiridean a’ _mheur-chlàir" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Mu dhèidhinn" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Faicsinneachd" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Postaich air Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Postaich air Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Sguir dheth" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "Noc_hd air" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "A h-uile duine" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Caraidean nan caraidean" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Caraidean a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Mise a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Poblach" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Daoine a leanas orm" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Prìobhaideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Dè tha an-seo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Dèan lethbhreac dhen ionad" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Às-phortaich mar dhealbh" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Às-phortaich an sealladh" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "À_s-phortaich" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Gabh a-steach an t-slighe is na comharran" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Coitcheann" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Seall na h-ath-ghoiridean" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Lorg" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Sealladh a’ mhapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Sùm a-steach" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Sùm a-mach" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toglaich an sgèile" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Fosgail breath" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Luchdaich breath a’ mhapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Cuir seirbheisean ionaid air gus lorg far a bheil thu" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Roghainnean ionaid" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Tagh seòrsa a’ mhapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Toglaich na h-annsachdan" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "Tha Mapaichean far loidhne!" + +#: ../data/ui/main-window.ui.h:13 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Tha Mapaichean feumach air ceangal dhan eadar-lìon gus obrachadh mar bu " +"chòir ach cha deach gin a lorg." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Thoir sùil air roghainnean a’ cheangail ’s a’ phrogsaidh agad." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Cuir ri slighe ùr" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Fosgail le aplacaid eile" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Comharraich ’na h-annsachd" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Nochd seo" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Cunntas OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Clàraich a-steach gus mapaichean a " +"dheasachadh" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Cuidich gus piseach a thoirt air a’ mhapa\n" +"le cunntas OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Post-d" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Facal-faire" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Clàraich a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Nach eil cunntas agad?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Tha sinn duilich ach cha do dh’obraich sin. Feuch ris a-rithist no tadhail " +"air\n" +"OpenStreetMap gus am facal-faire agad ath-shuidheachadh." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Cha robh an còd dearbhaidh mar bu chòir, am feuch thu ris a-rithist?" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Cuir a-steach an còd dearbhaidh a chì thu gu h-àrd" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Dearbhaich" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Air do chlàradh a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Tha an cunntas OpenStreetMap agad gnìomhach." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Clàraich a-mach" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Sràid" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Àireamh an taighe" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còd-puist" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Baile" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Seòrsa" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Chan eil gin" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Cuir raon ris" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Beachd" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Chithear atharraichean a’ mhapa air a h-uile mapa a chleachdas\n" +"dàta OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Air an cleachdadh o chionn ghoirid" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Sguir dheth" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Air adhart" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Seall barrachd fiosrachaidh" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Brùth air Enter airson lorg" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cha deach toradh a lorg" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Slaod gus òrdugh na slighe atharrachadh" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Fosgail ionad" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "F_osgail" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Fosgail breath" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Toglaich an fhaicsinneachd" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Lorg shlighean le GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Lorg shlighean le OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Seall barrachd toraidhean" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "An t-ionad làithreach" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Pongalachd: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Sùm a-steach gus ionad a chur ris!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Ceart ma-thà" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Cha deach leinn structar leacagan a lorg sa phasgan" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Dh’fhàillig le parsadh na sgrìobhainn XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Tha roghainnean riatanach a dhìth" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Cha deach leinn eileamaid OSM a lorg" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Slighe gu structar pasgain leacagan ionadail" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Tagh cunntas" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "’Ga luchdadh" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Tagh àite" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Facebook. Tagh fear " +"on liosta seo." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Foursquare. Tagh fear " +"on liosta seo." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Nochd %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Sgrìobh teachdaireachd ma thogras tu gus %s a nochdadh." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "Thachair mearachd" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Cha b’ urrainn dhuinn “%s” a lorg san t-seirbheis sòisealta" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Cha b’ urrainn dhuinn àite iomchaidh a lorg gus an t-ionad seo a nochdadh" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Dh’fhalbh an ùine air an teisteas, fosgail na cunntasan air loidhne gus " +"clàradh a-steach agus an cunntas seo a chur an comas" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Slighe on a sheo" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Cuir ceann-uidhe ris" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Slighe dhan a sheo" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "Cha deach dad a lorg an-seo!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Chaidh an t-ionad a chur ris a’ mhapa. Thoir an aire gun doir e greis mhath " +"mus nochd e air a’ mhapa agus ann an toraidhean luirg." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Tha an siostam-faidhlichean ri leughadh a-màin" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Chan eil cead agad gus rud a shàbhaladh an-seo" + +#: ../src/exportViewDialog.js:160 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Chan eil am pasgan ann" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Cha deach ainm-faidhle a shònrachadh" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Cha b’ urrainn dhuinn an sealladh às-phortadh" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "co-chomharran mì-dhligheach" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "mearachd parsaidh" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geomatras nach aithne dhuinn" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Dh’fhàillig le iarrtas slighe." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "Cha deach slighe a lorg." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Tòisich!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "A h-uile faidhle breatha" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Dh’fhàillig an ceangal ris an t-seirbheis ionadan" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "GunChleoc " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Aplacaid mhapaichean airson GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Cha chuirear taic ris an t-seòrsa faidhle" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "Dh’fhàillig le fosgladh na breatha" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "Dh’fhàillig le fosgladh GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:623 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" +"Chan eil an t-ainm-cleachdaiche no chan eil am facal-faire mar bu chòir" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Shoirbhich leis" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Droch iarrtas" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "Cha deach an t-oibseact a lorg" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Còmhstri, tha cuideigin eile dìreach air an t-oibseact atharrachadh" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Chaidh an t-oibseact a sguabadh às" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tha an t-slighe no an dàimh a’ toirt iomradh air clann nach eil ann" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Ainm" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "Ainm oifigeil. Seo na nochdas air sanasan mar as trice." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Seòladh" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Làrach-lìn" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"An làrach-lìn oifigeil. Feuch an cleachd thu an dreach as bunasaiche dhen " +"URL, can http://ball-eisimpleir.com seach http://ball-eisimpleir.com/index." +"html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Fòn" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"An àireamh fòn. Cleachd am fòrmat eadar-nàiseanta, a’ tòiseachadh le samhla " +"+. Thoir an aire air laghan prìobhaideachd ionadail, gu h-àraidh a thaobh " +"àireamhan prìobhaideach." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "An Uicipeid" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Bu chòir dhan fhòrmat a chleachdas tu an còd cànan agus tiotal na h-aiste a " +"ghabhail a-steach, can “gd:Tiotal na h-aiste”." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Uairean fosglaidh" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Faic an ceangal san leubail airson cobhair mun fòrmat." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Sluagh" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Àirde" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Meatair a dh’àirde (os cionn na mara) aig puing." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Inntrigeadh cathrach-cuibhle" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Tha inntrigeadh ann" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "Chan eil inntrigeadh ann" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Cuingichte" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Ainmichte" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Inntrigeadh an eadar-lìn" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "WiFi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Le uèir" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Tèirmineal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Seirbheis" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Creideamh" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "An aire" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Tagh seòrsa" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Deiseil" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Sluagh:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Àirde:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Uairean fosglaidh:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Inntrigeadh an eadar-lìn:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Creideamh:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Taighean-beaga:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Inntrigeadh cathrach-cuibhle:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Fòn:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Dh’fhàillig le parsadh a’ Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "tha inntrigeadh ann" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "cuingichte" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "chan eil inntrigeadh ann" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "ainmichte" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "O %s gu %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "A’ luchdadh leacagan a’ mhapa a chum clò-bhualaidh" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "’S urrainn dhut sgur dhen chlò-bhualadh ma bheir e ro fhada" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Sguir dhen chlò-bhualadh" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "Dh’fhàillig le fosgladh URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "dh’fhàillig le luchdadh faidhle" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tuairmse air an ùine: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +#| msgid "Start!" +msgid "Start" +msgstr "Toiseach" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mhionaid" +msgstr[1] "%d mhionaid" +msgstr[2] "%d mionaidean" +msgstr[3] "%d mionaid" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d uair a thìde" +msgstr[1] "%d uair a thìde" +msgstr[2] "%d uairean a thìde" +msgstr[3] "%d uair a thìde" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d uair a thìde" +msgstr[1] "%d:%02d uair a thìde" +msgstr[2] "%d:%02d uairean a thìde" +msgstr[3] "%d:%02d uair a thìde" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "fad an latha" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "o èirigh gu laighe na grèine" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "gach latha" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "saor-làithean poblach" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "saor-làithean sgoile" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "dùinte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "le uèir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "tèirmineal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "seirbheis" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Chan eil fhios" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Pongail" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f mion" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f d" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mì" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s troigh" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mì" + +#~ msgid "%f ft" +#~ msgstr "%f troigh" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 00000000..0aa47f1f --- /dev/null +++ b/po/gl.po @@ -0,0 +1,1932 @@ +# Galician translations for PACKAGE package. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Fran Diéguez , 2013. +# Fran Dieguez , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-13 23:27+0200\n" +"Last-Translator: Fran Dieguez \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 3.36.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Busque lugares por todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas dálle acceso a mapas de todo o mundo. Permítelle buscar de forma " +"rápida o lugar que está buscando por cidade ou rúa, ou localizar un lugar " +"para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapa usa a base de datos colaborativa de OpenStreetMap, feita por centos de " +"persoas por todo o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Incluso pode buscar por tipos de localizacións específicos como «Bares cerca " +"de Rúa Nova, Compostela» ou «Puntos WiFi cerca de Praza de Galiza, " +"Vilagarcía»." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "O Proxecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Unha aplicación sinxela de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permitir que se mostre a súa localización no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localización vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localización vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a mostrar (rúas, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño da xanela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño da xanela (ancho e alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición da xanela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición da xanela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Xanela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximizado de xanela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de busca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número de máximo de resultados de busca para as buscas xeolocalizada." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última configuración de privacidade do rexistro de Facebook. Os valores " +"posíbeis son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidade do rexistro de Foursquare. Os valores " +"posíbeis son: public, followers ou private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un mensaxe novo na conta " +"de Facebook asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un chío novo na conta de " +"Twitter asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuario ou enderezo de correo de OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuario iniciou sesión para editar datos en OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "O último tipo de transporte para enrutado usado" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo noite" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indica se a aplicación está en modo noite." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usar teselas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica se as teselas aéreas deberían usar o estilo híbrido (con etiquetas)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Enviar a Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Enviar a Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Rexistrar" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Só amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Só eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Engadir un destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta a aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Que hai aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localización" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluír rutas e marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir á localización actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Escolla o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Afastar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Activar/desactivar o planificador de rutas" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Trocar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Xeral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atallos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Trocar o planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Saír" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista do mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Afastar" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Trocar escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir á localización actual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Trocar á vista de rúa" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Trocar á vista aérea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir a capa de relieve…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Active os servizos de localización para buscar a súa localización" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Preferencias de localización" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noite" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar unha conta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imaxe" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Atallos de _teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre Mapas" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Abrir menú principal" + +#: data/ui/main-window.ui:81 +#| msgid "Print Route" +msgid "Find a Route" +msgstr "Buscar unha ruta" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapa precisa unha conexión a internet activa para funcionar correctamente, " +"pero non se atopou ningunha." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Comprobe a súa conexión ou preferencias do seu proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Engadir unha nova ruta" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Compartir localización" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como facorito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Rexistrarse aquí" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Iniciar sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Axude a mellorar o mapa, use unha\n" +"conta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo electrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasinal" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Rexistrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Isto non funcionou. Ténteo de novo ou visite\n" +"OpenStreetMap para restabelecer o seu contrasinal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificación non coincide, probe de novo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Escriba o código de verificación mostrado arriba" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Comprobar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A súa conta de OpenStreetMap está activa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Pechar a sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rúa" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ningún" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Engadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Os cambios no mapa serán visíbeis en todos os\n" +"mapas que usen datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usados recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Seguinte" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar máis información" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Non se atoparon resultados" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastrar a orde de cambio de ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localización" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Trocar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Búsqueda de ruta por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Os itinerarios de ruta para o tránsito público están fornecidos por servizos " +"de terceiros.\n" +"GNOME non ofrece ningunha garantía de que os datos e horarios dos " +"itinerarios sexan\n" +"correctos. \n" +"Teña en conta que algúns fornecedores poden non incluír todos os modos " +"dispoñíbeis\n" +"de transporte, por exemplo o fornecedor nacional pode non incluír as " +"aeroliñas, e o \n" +"fornecedor local pode omitir os trens rexionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar máis resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermedias e información" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar paradas intermedias e información" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Saír agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sae ás" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chega ás" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avións" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Localización actual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplíe para engadir unha localización!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Produciuse un fallo ao atopar a estrutura de teselas no cartafol" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Produciuse un fallo ao analizar o XML do documento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan atributos requiridos" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Non foi posíbel atopar o elemento de OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Unha ruta a unha estrutura de directorios de teselas locais" + +#: src/application.js:102 +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "O tamaño de tesela para o cartafol de teselas locais" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Mostra a versión do programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignorar a dispoñibilidade da rede" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccione unha conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccione un lugar" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Facebook. Por favor " +"seleccione un desde a lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Foursquare. Por favor " +"seleccione un desde a lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Rexistrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriba unha mensaxe opcional para rexistrarse en %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Produciuse un erro" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Non se pode atopar «%s» no servizo social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Non é posíbel atopar un lugar axeitado para rexistrarse nesta localización" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As súas credenciais expiraron, abra as «Contas en liña» para iniciar sesión " +"e activar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non se atopou nada aquí!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Engadiuse a localización ao mapa, teña en conta que pode tardar algún tempo " +"antes de que se mostre no mapa e nos resultados de busca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é de só lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non ten permiso para gardar aquí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O cartafol non existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nome de ficheiro non especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Non foi posíbel exportar a vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada non válida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro na análise" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "xeometría descoñecida" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Produciuse un fallo na solicitude de ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Non se atopou a ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Comezar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de capa" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Produciuse un fallo ao conectar co servizo de localización" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Fran Diéguez , 2013-2020" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Unha aplicación de mapas para GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e os autores de Mapas de GNOME" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos do mapa por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Teselas de mapas fornecidas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Busca fornecida por %s usando %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Tipo de ficheiro non admitido" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Produciuse un fallo ao abrir a capa" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Produciuse un fallo ao abrir o GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome de usuario ou contrasinal non correcto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Éxito" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitude non válida" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "O obxecto non se atopou" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguén modificou o obxecto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O obxecto foi eliminado" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "A forma ou relación refírese aos fillos non existentes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é o aparece normalmente nos sinais." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Enderezo" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Sitio web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O sitio web oficial. Tente usar o formulario máis básico de URL p.ex. http://" +"exemplo.gal no lugar de http://exemplo.gal/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use o formato internaciona, comezando polo signo +. Teña " +"en conta as leis de privacidade locais." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato usado debería incluír o código de idioma e o título do artigo como " +"«gl:Título do artigo»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horas de apertura" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vexa a ligazón na etiqueta para obter axuda no formatado." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Poboación" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre o nivel do mar) do punto en metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acceso con cadeira de rodas" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Si" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Diseñado" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acceso a internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sen fíos" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Con fíos" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servizo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Relixión" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Xainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Xudaismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Múltiples relixións" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cienciloxía" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sixismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalismo unitario" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Xazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para informar a outros mapeadores sobre inforamción non " +"obvia sobre un elemento, un intento do autor de crealo ou pistas sobre " +"futuras melloras." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccione tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Lugar sen nome" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Poboación:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horario de apertura:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acceso a internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Relixión:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Baño:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acceso con cadeira de rodas:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Teléfono:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Produciuse un fallo ao analizar o URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "non" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar non atopada en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "O URL de OpenStreetMap non é válido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL non son válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "O URL non é compatíbel" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Desde %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando teselas do mapa para a impresión" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impresión se isto leva moito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Engadir mediante localización" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar mediante localización" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Invertir ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Engadir %s a %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Produciuse un fallo ao abrir o URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "produciuse un fallo ao cargar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camiñar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chega ás %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucións do camiño" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucións do camiño" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non hai alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non hai alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Non se atoparon datos de horarios para esta ruta." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Non hai un fornecedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +#| msgid "%d hour" +#| msgid_plural "%d hours" +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "todo o día" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "desde o amencer até a posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "vacacións públicas" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacacións de escola" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "non aberto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "con fíos" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servizo" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Descoñecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s pes" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este engadido non admite a última chegada" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuar en %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continuar" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Xire á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Xire á esquerda" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Xire lixeiramente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Xire lixeiramente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Xire bruscamente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Xire bruscamente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Xire á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Xire á dereita" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Xire lixeiramente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Xire lixeiramente á dereita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Xire bruscamente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Xire bruscamente á dereita" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotonda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotonda, tome a saída a %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Tome a rotonda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Colla o ascensor e saia en %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Colla o ascensor" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Faga un xiro en U" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Faga un xiro en U á dereita" + +#~ msgid "Don’t have an account?" +#~ msgstr "Non ten unha conta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Engadir destino" diff --git a/po/he.po b/po/he.po new file mode 100644 index 00000000..768c97db --- /dev/null +++ b/po/he.po @@ -0,0 +1,1241 @@ +# Hebrew translations for gnome-maps package. +# Copyright (C) 2013 THE gnome-maps'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# יוסף אור בוצ׳קו , 2013. +# Yosef Or Boczko , 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.9.91\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-09 21:43+0300\n" +"PO-Revision-Date: 2016-08-11 16:08+0300\n" +"Last-Translator: Yosef Or Boczko \n" +"Language-Team: עברית <>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural= (n!=1);\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "GNOME מפות" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "מציאת מקומות מסביב לעולם" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"מפות נותן לך גישה מהירה למפות על פני כל העולם. הוא מאפשר לך למצוא במהירות את " +"המקום שאתה מחפש באמצעות חיפוש עיר או רחוב, או לאתר מקום לפגישת חבר." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"מפות משתמש במסד הנתונים השיתופי OpenStreetMap, שנוצר על ידי מאות אלפי אנשים " +"על פני כדור הארץ." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ניתן לחפש גם מקום מסוים, כמו „בית קפה ליד הרחוב הראשי, ירושלים” או „מלון " +"קרוב לאוניברסיטה, תל אביב”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:425 +msgid "Maps" +msgstr "מפות" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "יישום מפות פשוט" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "מפות;מפה;maps;Maps;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "מאפשר למיקום שלך להיראות על המפה." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "last viewed location" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Window size" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Window position" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Window maximized" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Window maximization state" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "הגדרת חשבון OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_צירופי מקשים" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "על אודות" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "יציאה" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "נראה" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "לפרסם ב־Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "לפרסם ב־Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_ביטול" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "ה_רשמה" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "כולם" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "חברים של חברים" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "חברים בלבד" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "רק אני" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "ציבורי" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "עוקבים" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "פרטי" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "מה זה כאן?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "העתקת מיקום" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "ייצוא כתמונה" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "הוספה אל OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "תצוגת ייצוא" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_ייצוא" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "לכלול מסלול וסימונים" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "כללי" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "הצגת צירופי מקשים" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "חיפוש" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "הצגה/הסתרת מתכנן מסלול" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "הדפסת מסלול" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "יציאה" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "תצוגת מפה" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "התקרבות" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "התרחקות" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "הצגת סרגל קנה מידה" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "טעינת שכבת מפה" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "הפעלת שירותי איכון למציאת המיקום שלך" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "הגדרות מיקום" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "בחירת סוג המפה" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "להציג/להסתיר מתכנן מסלול" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "מועדפים" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "הדפסת מסלול" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "מפות איננו מקוון!" + +#: ../data/ui/main-window.ui.h:8 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "מפות צריך חיבור אינטרנט פעיל על מנת לתפקד כראוי, אך אין אחד בנמצא." + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "יש לבדוק את החיבור שלך ואת הגדרות הפרוקסי." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "הוספה למסלול חדש" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "פתיחה באמצעות יישום אחר" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "סימון כמועדף" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "הרשמה כאן" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "חשבון OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "התחברות לעריכת מפות" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"עזרה בשיפור המפה,\n" +"באמצעות חשבון OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "דוא״ל" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "ססמה" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "התחברות" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "אין לך חשבון?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"אנו מצטערים, זה לא עובד. יש לנסות שוב, או לבקר באתר OpenStreetMap לאיפוס הססמה שלך." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "קוד האימות לא מתאים, יש לנסות שוב." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "יש להזין את קוד האימות המוצע למעלה" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "אימות" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "התחברות" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "חשבון ה־OpenStreetMap שלך פעיל." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "התנתקות" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "רחוב" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "מספר בית" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "מיקוד" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "עיר" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "סוג" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "ללא" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "הוספת שדה" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "הערות" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +" OpenStreetMap data." +msgstr "שינויים במפה יופיעו בכל המפות המשתמשות במידע מ־OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "בשימוש לאחרונה" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ביטול" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:471 +msgid "Next" +msgstr "הבא" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "הצגת מידע נוסף" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "יש ללחוץ Enter לחיפוש" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "יש לגרור לשינוי סדר המסלול" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "פתיחת מיקום" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_פתיחה" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "פתיחת שכבה" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "הצגה" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "חיפוש מסלולים באמצעות GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "הצגת תוצאות נוספות" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "מיקום נוכחי" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "דיוק: ‏%s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "יש להתקרב על מנת להוסיף מיקום!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "אישור" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "נכשל חיפוש מבנה אריח בתיקייה" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "נכשל ניתוח מסמך XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "חסרות תכונות דרושות" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "לא ניתן למצוא יסוד OSM" + +#: ../src/application.js:101 +msgid "A path to a local tiles directory structure" +msgstr "נתיב לתיקייה מבני אריחים מקומיים" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "בחירת חשבון" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "בטעינה" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "בחירת מקום" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Facebook. נא לבחור אחד מרשימה זו." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Foursquare. נא לבחור אחד מרשימה זו." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "נרשם עבור %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "כתיבת הודעה אפשרית להרשמה עבור %s." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:508 +msgid "An error has occurred" +msgstr "התרחשה שגיאה" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "לא ניתן למצוא את „%s” בשירות החברתי" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "לא ניתן למצוא מקום מתאים להירשם במיקום זה" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "האישורים פגי תוקף, נא לפתוח חשבונות מקוונים להתחברות ולאפשר חשבון זה" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "מסלול מכאן" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "הוספת ידע" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "מסלול לכאן" + +#: ../src/contextMenu.js:130 +msgid "Nothing found here!" +msgstr "לא נמצא כאן דבר!" + +#: ../src/contextMenu.js:187 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"מיקום נוסף למפה, יש לשים לב כי יתכן ויעבור זמן מה לפני שהוא יוצג על המפה " +"ובתוצאות החיפוש." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "מערכת הקבצים היא לקריאה בלבד" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "אין לך הרשאות לשמירה כאן" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "התיקייה אינה קיימת" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "לא צוין שם קובץ" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "לא ניתן לייצא תצוגה" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "נקודת ציון לא חוקית" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "שגיאת ניתוח" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "שגיאה הנדסית" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "כל שכבות הקבצים" + +#: ../src/mainWindow.js:371 +msgid "Failed to connect to location service" +msgstr "ארע כשל בהתחברות לשרת האיכון" + +#: ../src/mainWindow.js:423 +msgid "translator-credits" +msgstr "יוסף אור בוצ׳קו " + +#: ../src/mainWindow.js:426 +msgid "A map application for GNOME" +msgstr "יישום מפות עבור GNOME" + +#: ../src/mapView.js:254 +msgid "File type is not supported" +msgstr "סוג הקובץ אינו נתמך" + +#: ../src/mapView.js:261 +msgid "Failed to open layer" +msgstr "אירע כשל בפתיחת שכבה" + +#: ../src/mapView.js:297 +msgid "Failed to open GeoURI" +msgstr "אירע כשל בפתיחת GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:443 +msgid "Incorrect user name or password" +msgstr "שם או ססמה לא נכונים" + +#: ../src/osmConnection.js:445 +msgid "Success" +msgstr "הצלחה" + +#: ../src/osmConnection.js:447 +msgid "Bad request" +msgstr "בקשה שגויה" + +#: ../src/osmConnection.js:449 +msgid "Object not found" +msgstr "עצם לא נמצא" + +#: ../src/osmConnection.js:451 +msgid "Conflict, someone else has just modified the object" +msgstr "התנגשות, מישהו אחר שינה את העצם זה עתה" + +#: ../src/osmConnection.js:453 +msgid "Object has been deleted" +msgstr "העצם נמחק" + +#: ../src/osmConnection.js:455 +msgid "Way or relation refers to non-existing children" +msgstr "נתיב או יחס מפנה לילדים לא קיימים" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "שם" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "השם הרשמי. זה בדרך כלל מה שמופיע על השילוטים." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "כתובת" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:165 +msgid "Website" +msgstr "אתר אינטרנט" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"אתר האינטרנט הרשמי. יש לנסות להשתמש בצורה הבסיסית ביותר של הכתובת. למשל " +"http://example.com במקום http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "טלפון" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"מספר טלפון. יש להשתמש בתבנית בינלאומית, המתחיל עם סימן פלוס +. יש להיזהר " +"מחוקי הפרטיות, בפרט עבור מספרי טלפון פרטיים." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:171 +msgid "Wikipedia" +msgstr "ויקיפדיה" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"התבנית בשימוש צריכה לכלול את קוד השפה ואת כותרת הערך. למשל: \"he:כותרת הערך." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "שעות פתיחה" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "ניתן לקבל עזרה עבור התבנית בקישור בתווית." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "אוכלוסייה" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "גובה" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "גובה (גובה מעל פני הים) של נקודה במטרים." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "נגישות נכים" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +msgid "Yes" +msgstr "יש" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "אין" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "מוגבל" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "מובנה" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "גישה לאינטרנט" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:341 +msgid "Wi-Fi" +msgstr "רשת אלחוטית" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "רשת קווית" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "מסוף" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "שרת" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "הוספה ל־OpenStreetMap" + +#: ../src/osmEditDialog.js:339 +msgid "Select Type" +msgstr "בחירת סוג" + +#: ../src/osmEditDialog.js:457 +msgid "Done" +msgstr "בוצה" + +#: ../src/placeBubble.js:128 +msgid "Population:" +msgstr "אוכלוסייה:" + +#: ../src/placeBubble.js:134 +msgid "Altitude:" +msgstr "גובה:" + +#: ../src/placeBubble.js:139 +msgid "Opening hours:" +msgstr "שעות פתיחה:" + +#: ../src/placeBubble.js:144 +msgid "Internet access:" +msgstr "גישת אינטרנט:" + +#: ../src/placeBubble.js:149 +msgid "Wheelchair access:" +msgstr "נגישות נכים:" + +#: ../src/placeBubble.js:155 ../src/placeBubble.js:159 +msgid "Phone:" +msgstr "טלפון:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "ארע כשל בניתוח כתובת Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:330 +msgid "yes" +msgstr "יש" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "מוגבל" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:336 +msgid "no" +msgstr "אין" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "מובנה" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "מ־%s אל %s" + +#: ../src/printOperation.js:47 +msgid "Loading map tiles for printing" +msgstr "טוען אירי מפה להדפסה" + +#: ../src/printOperation.js:48 +msgid "You can abort printing if this takes too long" +msgstr "נתן לבטל ההדפסה אם היא לוקחת יותר מדי זמן" + +#: ../src/printOperation.js:50 +msgid "Abort printing" +msgstr "ביטול הדפסה" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "לא נמצא מסלול." + +#: ../src/routeService.js:101 +msgid "Route request failed." +msgstr "בקשת המסלול נכשלה." + +#: ../src/routeService.js:178 +msgid "Start!" +msgstr "להתחיל!" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "ארע כשל בפתיחת הכתובת" + +#: ../src/shapeLayer.js:93 +msgid "failed to load file" +msgstr "אירע כשל בטעינת הקובץ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:208 +#, javascript-format +msgid "Estimated time: %s" +msgstr "זמן משוער: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "מסביב לשעון" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "מהזריחה עד השקיעה" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "כל יום" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s – %s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "חגים ציבוריים" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "חגי בית ספר" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "לא פתוח" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s – %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "אתרנט" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "מסוף" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "שרת" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "לא ידוע" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "מדויק" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f שעות" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f דקות" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f שניות" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f ק״מ" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f מ׳" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f מיל" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f רגל" + +#~ msgid "Country code: %s" +#~ msgstr "קוד מדינה: %s" + +#~ msgid "_Share" +#~ msgstr "_שיתוף" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "User set last known location" +#~ msgstr "User set last known location" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I’m here!" +#~ msgstr "אני כאן!" + +#~ msgid "%f km²" +#~ msgstr "‏%f ק״מ²" + +#~ msgid "To" +#~ msgstr "אל" + +#~ msgid "From" +#~ msgstr "מ" + +#~ msgid " km2" +#~ msgstr " ק״מ2" + +#~ msgid "Satellite" +#~ msgstr "לווין" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 00000000..bcc3d5be --- /dev/null +++ b/po/hi.po @@ -0,0 +1,261 @@ +# Hindi translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Solomon Nadar , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-11-09 07:50+0000\n" +"PO-Revision-Date: 2014-11-09 20:06-0000\n" +"Last-Translator: Solomon Nadar \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"नक्शे आपको सभी दुनिया भर में नक्शे के लिए त्वरित पहुँच देता है. दोस्त से मिलने के लिए एक जगह " +"का पता लगाने के लिए, या जल्दी से एक शहर या सड़क के लिए खोजकर आप ढूंढ रहे जगह आपको " +"बताती है." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"नक्शे दुनिया भर में हजारों, सैकड़ों लोगों के द्वारा बनाई सहयोगी OpenStreetMap डेटाबेस का " +"उपयोग करता है." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"\"मेन स्ट्रीट के पास पब, बोस्टन\" या \"अलेक्सान्देरप्लात्ज़ के पास होटल, बर्लिन\" इस तरह के " +"रूप में स्थानों के विशिष्ट प्रकार के लिए भी आप खोज कर सकते हैं." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:79 +#: ../src/mainWindow.js:347 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "नक्शे" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "एक साधारण नक्शा अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "नक्शे;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "खिड़की का आकर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "खिड़की का आकर (चौड़ाई और ऊंचाई)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "खिड़की स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "खिड़की स्थान (X और Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "खिड़की अधिकतम पर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "खिड़की अधिकतम स्थिति" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "अंतिम ज्ञात स्थान और सटीकता" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "अंतिम ज्ञात स्थान (अक्षांश और देशांतर डिग्री में) और सटीकता (मीटर में)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "अंतिम ज्ञात स्थान का विवरण" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "उपयोगकर्ता की अंतिम ज्ञात स्थान का विवरण." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "खोज परिणामों की अधिकतम संख्या" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "जियोकोड खोज से खोज परिणामों की अधिकतम संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "उपयोगकर्ता ने सेट की अंतिम ज्ञात स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "अंतिम ज्ञात स्थान उपयोगकर्ता द्वारा मैन्युअल रूप से सेट किया गया था या नहीं." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "जमा करने हाल के स्थानों की संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "जमा करने हाल के दर्शन किये स्थानों की संख्या." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "के बारे में" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "छोड़े" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहाँ क्या है?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "मैं यहां हूं!" + +#: ../src/geoclue.js:137 ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "वर्तमान स्थान" + +#: ../src/mainWindow.js:345 +msgid "translator-credits" +msgstr "अनुवादक-प्रसिद्धि" + +#: ../src/mainWindow.js:348 +msgid "A map application for GNOME" +msgstr "GNOME के लिए एक नक्शा अनुप्रयोग" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "वर्तमान स्थान पर जाएं" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "नक्शा प्रकार चुनें" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "मार्ग योजनाकार टॉगल करें " + +#: ../src/main-window.ui.h:5 +msgid "Maps is offline!" +msgstr "नक्शे ऑफ़लाइन है!" + +#: ../src/main-window.ui.h:6 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"नक्शे ठीक ढंग से काम करने के लिए एक सक्रिय इंटरनेट कनेक्शन की जरूरत है, लेकिन एक नहीं पाया " +"जा सका." + +#: ../src/main-window.ui.h:7 +msgid "Check your connection and proxy settings." +msgstr "आपके कनेक्शन और प्रॉक्सी सेटिंग्स की जाँच करें." + +#: ../src/routeService.js:72 +msgid "No route found." +msgstr "कोई मार्ग नहीं मिला." + +#: ../src/routeService.js:79 +msgid "Route request failed." +msgstr "मार्ग अनुरोध विफल." + +#: ../src/routeService.js:150 +msgid "Start!" +msgstr "शुरू करो!" + +#: ../src/searchResultBubble.js:58 +#, javascript-format +msgid "Country code: %s" +msgstr "देश कोड: %s" + +#: ../src/searchResultBubble.js:64 +#, javascript-format +msgid "Postal code: %s" +msgstr "डाक कोड: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:236 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अनुमानित समय: %s" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "सटीकता: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:189 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:192 +msgid "Exact" +msgstr "ठीक" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f h" +msgstr "%f घं" + +#: ../src/utils.js:293 +#, javascript-format +msgid "%f min" +msgstr "%f मि" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:304 +#, javascript-format +msgid "%f km" +msgstr "%f किमी" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:307 +#, javascript-format +msgid "%f m" +msgstr "%f मी" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:315 +#, javascript-format +msgid "%f mi" +msgstr "%f मील" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:318 +#, javascript-format +msgid "%f ft" +msgstr "%f फी" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 00000000..37e680d3 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,1958 @@ +# Croatian translation for gnome-maps. +# Copyright (C) 2017 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-23 16:54+0200\n" +"Last-Translator: gogo \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karte" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Potražite mjesta diljem svijeta" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama diljem svijeta. Omogućuje vam da brzo " +"pronađete mjesto koje tražite pretragom gradova ili ulica, ili lociranje " +"mjesta za sastanak s prijateljem." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste suradničku OpenStreetMap bazu podataka, načinjenu od strane " +"stotine tisuća ljudi diljem svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak pretražiti određenu vrstu lokacije, poput \"Kavane blizu Jelačić " +"placa, Zagreb\" ili \"Hoteli blizu Straduna, Dubrovnik\"." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Karte" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednostava aplikacija za karte" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karte;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Omogućuje vašoj lokaciji da bude prikazana na mapi." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "posljednja pogledana lokacija" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate posljednje pogledane lokacije." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "uvećanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Razina uvećanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta karte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta prikazane karte (ulice, područje, itd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veličina prozora" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj prozora" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (x-os i y-os)" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Prozor uvećan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage iz geokôd pretrage." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Broj nedavnih mjesta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Broj nedavnih ruta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Broj nedavno posjećenih ruta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti Facebook provjere" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti Facebook provjere. Moguće " +"vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ili SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti Foursquare provjere" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti Foursquare provjere. Moguće " +"vrijednosti su: public, followers ili private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitira provjeru na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Facebook " +"računu pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitira provjeru na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Twitter računu " +"pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili adresa e-pošte" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Označava je li se korisnik prijavio za uređivanje OpenStreetMap karata." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Posljednja korištena vrsta prijevoza za određivanje rute" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Koristi noćni način rada" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Je li aplikacija u noćnom načinu rada." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Koristi hibridne zračne nazive" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Trebaju li zračni nazivi koristiti hibridni izgled (s oznakama)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vidljivost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Odustani" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Provjeri" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Svakog" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prijatelje prijatelja" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Samo prijatelje" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Samo meni" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sljedbenike" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privatno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Početak rute" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj međuodredište" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Završetak rute" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Što je ovdje?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj lokaciju" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Izvezi prikaz" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvoz" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Uključi rute i oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Odaberi vrstu karte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Udalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Približi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Uklj/Isklj omiljene" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Općenito" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaži prečice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zatvori" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Prikaz karte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Udalji" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Uklj/Isklj promjenu veličine" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na prikaz ulica" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na satelitski prikaz" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj karte" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvori sloj karte…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Uključite uslugu lociranja kako bi pronašli svoju lokaciju" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Odustani" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Postavke lokacije" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noćni način rada" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Postavi OpenStreetMap račun" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvezi kao sliku" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O Kartama" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Potraži rutu" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Karta je nedostupna!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karta treba aktivni internet povezivanje kako bi ispravno funkcionirala, ali " +"se ne može nijedan pronaći." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Provjerite vaše povezivanje i proxy postavke." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dijeli lokaciju" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označi kao omiljeno" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Provjeri ovdje" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap račun" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijavi se za uređivanje karata" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozite poboljšati karte, koristeći\n" +"OpenStreetMap račun." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pošta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lozinka" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Odjava" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije uspjelo. Pokušajte ponovno, ili posjetite\n" +"OpenStreetMap za obnovu lozinke." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kôd provjere se ne podudara, pokušajte ponovno." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Upišite kôd provjere prikazan iznad" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Provjeri" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeni" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap račun je aktivan." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjava" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Kućni broj" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Grad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nijedno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Promjene karte biti će vidljive na svim kartama koje\n" +"koriste OpenStreetMap podatke." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno korišteno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sljedeće" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Prikaži više informacija" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nema pronađenih rezultata" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ispusti za promjenu redoslijeda rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Pošalji u…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvori sloj karte" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvori" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Uklj/Isklj vidljivost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta se traži pomoću GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Plan ruta za javni prijevoz omogućio je GNOME\n" +"pomoću rasporeda podataka dobivenih od prijevozničkih tvrtki ili agencija.\n" +"Prijevozničke tvrtke ili agencije ne mogu biti odgovorne za prikazane " +"rezultate.\n" +"GNOME ne može jamčiti točnost prikazanih planova i rasporeda.\n" +"Prikazani nazivi i trgovačke marke trebaju se smatrati registriranim " +"zaštitinim zankovima kada je primjenjivo." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Prikaži više rezultata" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sakrij posredna zaustavljanja i informacije" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Prikaži posredna zaustavljanja i informacije" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Kreni odmah" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odlazak" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Dolazak" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Prikaz" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busevi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Valkovi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Zrakoplovi" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutna lokacija" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspješna pretraga strukture pločice u direktoriju" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neuspješna obrada XML dokumenta" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nedostaju potrebna svojstva" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nemoguć pronalazak OSM elementa" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne strukture bloka u direktoriju" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Veličina bloka za direktorij lokalnih blokova" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Prikaži inačicu programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Zanemari mrežnu dostupnost" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Odaberi račun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavanje" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Odaberi mjesto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Facebooka. Odaberite jedno s " +"popisa." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Foursquara. Odaberite jedno s " +"popisa." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Provjeri u %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napiši neobaveznu poruku za provjeru u %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Dogodila se greška" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nemoguće je pronaći “%s” na društvenim mrežama" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nemoguće je pronaći prikladno mjesto za provjeru ove lokacije" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Vjerodajnice su istekle, otvorite mrežne račune za prijavu i omogućavanje " +"ovog računa" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ništa nije pronađeno ovdje!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodana na kartu, zapamtite da može potrajati prije nego se " +"pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sustav je samo za čitanje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate za tamo dozvolu spremanja" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorij ne postoji" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Naziv datoteke nije naveden" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nemoguće izvesti prikaz" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "pogrešne koordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "greška obrade" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Zahtjev rute neuspio." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Ruta nije pronađena." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Kreni!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje s uslugom lociranja" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "gogo https://launchpad.net/~trebelnik-stefina" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Aplikacija karata za GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autorsko pravo © 2011 – 2019 Red Hat, Inc. i autori GNOME karta" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke karte omogućili %s i doprinositelji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blokove karte je omogućio %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pretragu je omogućio %s koristeći %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Neuspjelo otvaranje sloja" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Neuspjelo otvaranje GeoURI-ja" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Uspjeh" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Neispravan zahtjev" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nije pronađen" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, netko drugi je upravo promijenio objekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt je obrisan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Način ili veza povezana za nepostojeći objekt" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Službeni naziv. To se uobičajeno pojavljuje na znakovima." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Web stranica" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Službena web stranca. Pokušajte koristiti najosnovnije od URL-a npr. http://" +"primjer.com umjesto http://primjer.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format, započinjući s + znakom. Ne " +"zaboravite lokalne zakone, osobito za privatne telefonske linije." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišteni format trebao bi uključiti kôd jezika i naslov članka poput “hr:" +"Naslov članka”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Vrijeme otvaranja" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte poveznicu u naslovu za pomoć formata." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Uzvišenje (nadmorska visina) od točke u metrima." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup za invalidska kolica" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ograničeno" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Određeno" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežična mreža" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žična mreža" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaizam" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kršćanstvo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucijanizam" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Džainizam" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Više religija" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizam" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scijentologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrizam" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Napomena" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacije koje se koriste za informiranje drugih kartografa o neočekivanim " +"informacijama o nekom elementu, o autorovoj namjeri prilikom izrade, ili " +"savjeti za buduće poboljšanje." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj u OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Odaberi vrstu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Završeno" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Neimenovano mjesto" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populacija:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Visina:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Vrijeme otvaranja:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaleti:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Pristup za invalidska kolica:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Neuspješna obrada Geo URI-ja" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "određeno" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Mjesto nije pronađeno na OpenStreetMapama" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nije valjan" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate u URL-u nisu valjane" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nije podržan" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavanje bloka karte za ispis" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti ispisivanje ako traje predugo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini ispisivanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj pomoću lokacije" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ukloni pomoću lokacije" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni rutu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s u %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Neuspjelo otvaranje URI-ja" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otvori sa %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neuspješno učitavanje datoteke" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Vrijeme dolaska: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Planove je omogućio %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Polazak u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Polazak" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Pješači %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazak u %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Dolazak" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Prikaži upute pješačenja" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sakrij upute pješačenja" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj kasnije alternative" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nema pronađenih ranijih alternativa." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nema pronađenih kasnijih alternativa." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nema pronađenih podataka rasporeda za ovu rutu." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nema pronađenih pružatelja usluge za ovu rutu." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minute" +msgstr[2] "%s minuta" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s sat" +msgstr[1] "%s sata" +msgstr[2] "%s sati" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s sat" +msgstr[1] "%s:%s sata" +msgstr[2] "%s:%s sati" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "oko sata" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od sumraka do zore" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "žični priključak" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Točnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Napoznato" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Točno" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "% sat(a)" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s sat(a) %s min" +msgstr[1] "%s sat(a) %s min" +msgstr[2] "%s sat(a) %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Priključak ne podržava posljednji dolazak" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Nastavi u %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Nastavi" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skrenite lijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skrenite blago ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Skrenite blago ulijevo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skrenite oštro ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Skrenite oštro ulijevo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skrenite desno na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Skrenite desno" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skrenite blago udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Skrenite blago udesno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skrenite oštro udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Skrenite oštro udesno" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "U kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "U kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Idite na kružni tok" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Idite u dizalo i izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Idite u dizalo" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Skrenite lijevo u %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Skrenite desno u %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Skrenite desno" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemate račun?" + +#~ msgid "%f h" +#~ msgstr "%f sat" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta se traži pomoću OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj odredište" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Otvori s drugom aplikacijom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite Enter za pretragu" + +#~ msgid "Quit" +#~ msgstr "Zatvori" + +#~ msgid "OK" +#~ msgstr "U REDU" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvori sloj karte…" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..ab347665 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1924 @@ +# Hungarian translation for gnome-maps. +# Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Balázs Úr , 2013, 2014, 2015, 2016, 2018, 2019, 2020. +# Gabor Kelemen , 2013, 2015, 2016, 2017. +# Balázs Meskó , 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-06 19:39+0200\n" +"Last-Translator: Meskó Balázs \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Térképek" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Helyek keresése a világ minden pontján" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"A Térképek gyors hozzáférést ad térképekhez az egész világról. Lehetővé " +"teszi egy keresett hely gyors megtalálását település vagy utca keresésével, " +"vagy találni egy helyet, ahol ismerőseivel találkozhat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A Térképek az együttműködésen alapuló OpenStreetMap adatbázist használja, " +"amelyet több százezer ember készít a világ minden részén." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Adott típusú helyeket is kereshet, úgymint „Kocsmák a bostoni sétálóutca " +"közelében” vagy „Szállodák a berlini Alexanderplatz közelében”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "A GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Térképek" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Egyszerű térképalkalmazás" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Térképek;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lehetővé teszi a földrajzi helyének megjelenítését a térképen." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "legutóbbi megtekintett hely" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Az utolsó megtekintett hely koordinátái." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "nagyítás" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nagyítási szint" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Térképtípus" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "A megjelenítendő térkép típusa (utca, légi, stb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ablakméret" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ablak mérete (szélesség és magasság)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ablakpozíció" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ablakpozíció (X és Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ablak teljes méretű" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Az ablak maximalizált állapota" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "A keresési találatok maximális száma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "A keresési találatok maximális száma a geokód keresésből." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "A tárolandó legutóbbi helyek száma" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "A tárolandó legutóbb látogatott helyek száma." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "A tárolandó legutóbbi útvonalak száma" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "A tárolandó legutóbb látogatott útvonalak száma." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook bejelentkezés adatvédelmi beállításai" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Legutóbb használt Facebook bejelentkezés adatvédelmi beállításai. Lehetséges " +"értékek: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vagy SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare bejelentkezés adatvédelmi beállításai" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Legutóbb használt Foursquare bejelentkezés adatvédelmi beállításai. " +"Lehetséges értékek: public, followers, vagy private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare bejelentkezés Facebook üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare hozzászólásként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Facebook fiókban." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare bejelentkezés Twitter üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare üzenetként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Twitter fiókban." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap felhasználónév vagy e-mail cím" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Jelzi, hogy a felhasználó bejelentkezett-e az OpenStreetMap adatok " +"szerkesztéséhez." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Legutóbb útvonaltervezéshez használt közlekedéstípus" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Éjszakai mód" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Az alkalmazás éjszakai módban van-e." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hibrid légi csempék használata" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "A légi csempék a hibrid stílust használják-e (címkékkel)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Láthatóság" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Közzététel a Facebookon" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Közzététel a Twitteren" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Mégse" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Bejelentkezés" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mindenki" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Ismerősök ismerősei" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Csak ismerősök" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Csak én" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Nyilvános" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Követők" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Személyes" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Útvonal innen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Közbenső megálló hozzáadása" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Útvonal ide" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mi van itt?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Hely másolása" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMap-hez" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportálási nézet" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportálás" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Útvonalak és jelölők megtartása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Térképtípus kiválasztása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Kicsinyítés" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Nagyítás" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Kedvencek ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Általános" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Gyorsbillentyűk megjelenítése" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Keresés" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Kilépés" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Térkép nézet" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Nagyítás" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Kicsinyítés" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Váltás utcanézetre" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Váltás légifelvételre" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Címkék megjelenítése" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Alak réteg megnyitása…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Helymeghatározó szolgáltatások bekapcsolása a helyzetének megkereséséhez" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Mégse" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Helybeállítások" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Éjszakai mód" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap fiók beállítása" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportálás képként" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Gyorsbillentyűk" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A Térképek névjegye" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "A Térképek kapcsolat nélküli!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"A Térképeknek aktív internet-kapcsolat szükséges a megfelelő működéshez, de " +"az nem található." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Ellenőrizze a kapcsolat és a proxy beállításait." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Hozzáadás új útvonalhoz" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Hely megosztása" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Megjelölés kedvencként" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Bejelentkezés itt" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap fiók" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jelentkezzen be a térképek " +"szerkesztéséhez" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Segítsen a térkép javításában, egy\n" +"OpenStreetMap fiók használatával." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Jelszó" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regisztráció" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Bejelentkezés" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Elnézést, ez nem sikerült. Próbálja újra, vagy látogassa meg az\n" +"OpenStreetMap\n" +"oldalt a jelszava helyreállításához." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Az ellenőrző kód nem egyezik, próbálja újra." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Írja be a fent megjelenített ellenőrző kódot" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ellenőrzés" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Bejelentkezve" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Az OpenStreetMap fiókja aktív." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kijelentkezés" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Utca" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Házszám" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Irányítószám" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Város" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Típus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nincs" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Mező hozzáadása" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Megjegyzés" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"A térképváltozások mindenhol láthatóvá válnak,\n" +"ahol OpenStreetMap adatokat használnak." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nemrég használt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Következő" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "További információk megjelenítése" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nincs találat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Húzza az útvonal sorrendjének módosításához" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Másolás" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Küldés neki…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Megnyitás" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Útvonalkeresés a GraphHopperrel" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"A közlekedési útvonalak harmadik féltől származó szolgáltatásból\n" +"származnak.\n" +"A GNOME nem garantálhatja a megjelenített útvonalak és menetrendek " +"helyességét.\n" +"Ne feledje, hogy egyes szolgáltatók lehet hogy nem tartalmazzák az összes " +"elérhető\n" +"közlekedési módokat, például egy nemzeti szolgáltató lehet, hogy nem " +"tartalmazza\n" +"a légitársaságokat, egy helyi szolgáltató pedig nem tartalmazza a " +"regionális\n" +"vonatokat.\n" +"A megjelenített nevek és márkák adott esetben bejegyzett védjegyeknek " +"tekintendők." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "További találatok megjelenítése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Közbenső megállók és információk elrejtése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Közbenső megállók és információk megjelenítése" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Indulás most" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Indulás ekkor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Érkezés ekkor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Megjelenítés" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buszok" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Villamosok" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vonatok" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metró" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Kompok" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Repülőgépek" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Jelenlegi hely" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Nagyítson a hely hozzáadásához!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Nagyítás" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nem sikerült csempeszerkezetet találni a könyvtárban" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Az XML dokumentum feldolgozása sikertelen" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Szükséges attribútumok hiányoznak" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nem sikerült megtalálni az OSM elemet" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Egy útvonal a helyi csempék könyvtárszerkezetéhez" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "A csempék mérete a helyi csempék könyvtárához" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "A program verziószámának megjelenítése" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Hálózat elérhetőségének figyelmen kívül hagyása" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FÁJL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Válasszon egy fiókot" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Betöltés" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Válasszon egy helyet" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Facebook " +"használatával. Válasszon egyet erről a listáról." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Foursquare " +"használatával. Válasszon egyet erről a listáról." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Bejelentkezés ide: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Opcionális üzenet írása a következőbe való bejelentkezéshez: %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Hiba történt" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nem található „%s” a közösségi szolgáltatásban" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nem található megfelelő hely a bejelentkezéshez ezen a helyen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"A hitelesítési adatok lejártak, nyissa meg az Online fiókokat a " +"bejelentkezéshez, és engedélyezze ezt a fiókot" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Itt nincs semmi!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A hely hozzáadva a térképhez, de eltarthat egy ideig, amíg megjelenik a " +"térképen és a keresési találatokban." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Térképek itt: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "A fájlrendszer csak olvasható" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nincs jogosultsága oda menteni" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "A könyvtár nem létezik" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nincs megadva fájlnév" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "A nézet exportálása sikertelen" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "érvénytelen koordináta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "feldolgozási hiba" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ismeretlen geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Az útvonalkérés nem sikerült." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nem található útvonal." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Indulás!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Minden rétegfájl" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Nem sikerült kapcsolódni a helymeghatározó szolgáltatáshoz" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Meskó Balázs \n" +"Úr Balázs " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "Térképalkalmazás a GNOME-hoz" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. és a GNOME Térképek szerzői" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Térképadatok: %s és közreműködők" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "A térképcsempéket a(z) %s szolgáltatja" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "A keresést a(z) %s biztosította %s használatával" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "A fájltípus nem támogatott" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "A réteg megnyitása nem sikerült" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "A GeoURI megnyitása nem sikerült" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Helytelen felhasználónév vagy jelszó" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sikerült" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Rossz kérés" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nem található objektum" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktus, valaki épp most módosította az objektumot" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Az objektum törlésre került" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Út vagy kapcsolat nem létező gyermekekre hivatkozik" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Név" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "A hivatalos név. Jellemzően ez jelenik meg a jelzéseken." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Cím" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Weboldal" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A hivatalos honlap. Próbálja meg az URL alapvető formáját használni, pl. " +"http://pelda.hu a http://pelda.hu/index.html helyett." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonszám. Használja a nemzetközi formátumot a + jellel. Figyeljen a helyi " +"adatvédelmi törvényekre, különösen a magántelefonszámokra." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"A használt formátumban legyen benne a nyelvi kód és a cikk címe, mint " +"például „hu:Cikk címe”." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Nyitva tartás" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Kövesse a címke hivatkozását formázási segítségért." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Népesség" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Magasság" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Egy pont tengerszint feletti magassága méterben." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Kerekesszékes elérés" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Igen" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Nem" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Korlátozott" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Kijelölt" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Internet-hozzáférés" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Vezetékes" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Szolgáltatás" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Vallás" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhizmus" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Kereszténység" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Dzsainizmus" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Iszlám" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Több vallás" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Pogányság" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pasztafarizmus" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Szcientológia" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoizmus" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Szikhizmus" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitárius univerzalizmus" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizmus" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroasztrizmus" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Toalett" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Megjegyzés" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Más térképezőknek szánt információ, egy elem nem egyértelmű " +"tulajdonságairól, a szerző szándékáról, vagy tippek a további finomításokhoz." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMaphez" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Válasszon egy típust" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Kész" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Névtelen hely" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Népesség:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Magasság:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Nyitva tartás:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Internet-hozzáférés:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Vallás:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Toalett:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Kerekesszékes elérés:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "A Geo URI feldolgozása nem sikerült" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "igen" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "korlátozott" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nem" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "kijelölt" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "A hely nem található az OpenStreetMapen" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Az OpenStreetMap URL nem érvényes" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Az URL-ben lévő koordináták nem érvényesek" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Az URL nem támogatott" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Ettől: %s, eddig: %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Térképszelvények betöltése nyomtatáshoz" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Megszakíthatja a nyomtatást, ha ez túl sokáig tart" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Nyomtatás megszakítása" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Hozzáadás hely szerint" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Eltávolítás hely szerint" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Fordított útvonal" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s hozzáadása ehhez: %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Az URI megnyitása nem sikerült" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Megnyitás %s használatával" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nem sikerült betölteni a fájlt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Becsült idő: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Az útvonalakat a(z) %s szolgáltatja" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Indulás innen: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Indulás" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gyaloglás: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Érkezés ide: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Érkezés" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Gyaloglási utasítások megjelenítése" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Gyaloglási utasítások elrejtése" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Korábbi lehetőségek betöltése" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Későbbi lehetőségek betöltése" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nem található korábbi lehetőség." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nem található későbbi lehetőség." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b. %e." + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nem található menetrend ehhez az útvonalhoz." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nem található szolgáltató ehhez az útvonalhoz." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s óra" +msgstr[1] "%s óra" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s óra" +msgstr[1] "%s:%s óra" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "éjjel-nappal" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "napkeltétől napnyugtáig" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "minden nap" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "munkaszüneti napok" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "tanszüneti napok" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nincs nyitva" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "vezetékes" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminál" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "szolgáltatás" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Pontosság: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ismeretlen" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Pontos" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s ó" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ó %s perc" +msgstr[1] "%s ó %s perc" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s mp" +msgstr[1] "%s mp" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "A bővítmény nem támogatja a legkésőbbi érkezést" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Haladjon tovább ezen: %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Haladjon tovább" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Forduljon balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Forduljon balra" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Forduljon enyhén balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Forduljon enyhén balra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Forduljon élesen balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Forduljon élesen balra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Forduljon jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Forduljon jobbra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Forduljon enyhén jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Forduljon enyhén jobbra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Forduljon élesen jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Forduljon élesen jobbra" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "A körforgalomban válassza a(z) %s. kijáratot" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "A körforgalomban válassza a(z) %s felé tartó kijáratot" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Menjen a körforgalomba" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Menjen a lifthez, és szálljon ki itt: %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Menjen a lifthez" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Forduljon vissza balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Forduljon vissza balra" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Forduljon vissza jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Forduljon vissza jobbra" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nincs fiókja?" + +#~ msgid "%f h" +#~ msgstr "%f óra" + +#~ msgid "%f min" +#~ msgstr "%f perc" + +#~ msgid "%f s" +#~ msgstr "%f mp" diff --git a/po/id.po b/po/id.po new file mode 100644 index 00000000..7a2a1520 --- /dev/null +++ b/po/id.po @@ -0,0 +1,1925 @@ +# Indonesian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Andika Triwidada , 2013, 2014, 2015, 2018. +# Kukuh Syafaat , 2017-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-28\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-14 17:43+0700\n" +"Last-Translator: Kukuh Syafaat \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Peta" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Temukan tempat di seluruh dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memberi Anda akses cepat ke peta di seluruh penjuru dunia. Ini " +"memungkinkan Anda secara cepat menemukan tempat yang Anda cari dengan " +"mencari suatu kota atau jalan, atau menemukan tempat untuk bertemu dengan " +"teman." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta memakai basis data kolaboratif OpenStreetMap, yang dibuat oleh ratusan " +"ribu orang di seluruh dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda bahkan dapat mencari lokasi dengan jenis tertentu, seperti misalnya " +"\"Pub dekat Main Street, Boston\" atau \"Hotel dekat Alexanderplatz, Berlin" +"\"." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Proyek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Aplikasi peta sederhana" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Memungkinkan ditunjukkannya lokasi Anda pada peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi yang terakhir dilihat" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat dari lokasi yang terakhir dilihat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "perbesar" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Tingkat perbesaran" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis Peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta untuk ditampilkan (jalan, udara, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ukuran jendela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ukuran jendela (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posisi jendela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posisi jendela (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Jendela dimaksimalkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan termaksimalkan jendela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Banyaknya hasil pencarian maksimum" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Banyanyak hasil pencarian maksimum dari pencarian geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Cacah lokasi baru-baru ini yang disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Banyaknya lokasi baru-baru ini dikunjungi yang disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Cacah rute baru-baru ini yang akan disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Banyaknya rute baru-baru ini dikunjungi yang akan disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Pengaturan privasi check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pengaturan privasi check in Facebook yang terakhir dipakai. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Pengaturan privasi check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pengaturan privasi check in Foursquare yang terakhir dipakai. Nilai yang " +"mungkin adalah: public (umum), followers (para pengikut), atau private " +"(pribadi)" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Penyiaran Facebook untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah " +"kiriman dalam akun Facebook yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Penyiaran Twitter untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah twit " +"dalam akun Twitter yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat surel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menandakan apakah pengguna telah masuk untuk menyunting data OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis transportasi terakhir yang digunakan untuk rute" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mode malam" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Apakah aplikasi sedang dalam mode malam." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Gunakan ubin udara hybrid" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Apakah ubin udara harus menggunakan gaya hybrid (dengan label)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Kenampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Kirim pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Kirim pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Semua orang" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Teman dari teman" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Teman saja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Hanya saya" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Umum" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Pribadi" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute dari sini" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tambahkan tujuan antara" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute ke sini" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ada apa di sini?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ekspor tilikan" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Ekspor" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan rute dan penanda" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Perkecil" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Perbesar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Jungkitkan favorit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Cetak Rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Umum" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tampilkan Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cari" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Tilikan Peta" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Perbesar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Perkecil" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Jungkitkan skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke tampilan jalan" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke tampilan udara" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka layer shape" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Tampilkan Label" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Buka Layer Shape…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Nyalakan layanan lokasi untuk menemukan lokasi Anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Pengaturan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode Malam" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Menyiapkan Akun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Ekspor sebagai Citra" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tombol Pintas" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tentang Peta" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Temukan Rute" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Peta luring!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlu suatu koneksi internet aktif untuk berfungsi dengan benar, tapi " +"tidak ditemukan satupun." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Periksalah pengaturan proksi dan koneksi Anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke rute baru" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Bagikan lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tandai sebagai favorit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Masuklah untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantulah memperbaiki peta, memakai\n" +"akun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Surel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata Sandi" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Daftar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Masuk" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, itu tidak bisa. Harap coba lagi, atau kunjungi\n" +"OpenStreetMap untuk mereset sandi Anda." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kode verifikasi tidak cocok, silakan coba lagi." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Masukkan kode verifikasi yang ditunjukkan di atas" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifikasi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Masuk" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Akun OpenStreetMap Anda aktif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nomor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kode pos" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kota" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nihil" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Ruas" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan tampak pada semua peta yang memakai\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Baru-baru Ini Dipakai" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Selanjutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tampilkan lebih banyak informasi" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hasil tak ditemukan" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah urutan rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kirim Ke…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Buka Layer Shape" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Jungkitkan kenampakan" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pencarian rute oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rute perjalanan untuk angkutan umum disediakan oleh layanan pihak ketiga.\n" +"GNOME tidak dapat menjamin kebenaran dari perjalanan dan jadwal yang " +"ditampilkan.\n" +"Perhatikan bawa beberapa penyedia mungkin tidak menyertakan semua mode " +"transportasi\n" +"yang tersedia, mis. sebuah penyedia nasional mungkin tidak menyertakan " +"penerbangan,\n" +"dan suatu penyedia lokal mungkin tidak punya jadwal kereta regional.\n" +"Nama dan merek yang ditampilkan dianggap sebagai merek dagang terdaftar " +"ketika berlaku." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tampilkan lebih banyak hasil" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyikan informasi dan perhentian antara" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tampilkan berhenti menengah dan informasi" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tampilkan" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bis" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trem" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Kereta api" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Kereta bawah tanah" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Penerbangan" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi saat ini" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Perbesar untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Perbesar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal menemukan struktur ubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal mengurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut yang diperlukan kurang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tak bisa temukan elemen OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Suatu path ke sebuah struktur direktori ubin lokal" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Ukuran ubin untuk direktori ubin lokal" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Tampilkan versi program" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Abaikan ketersediaan jaringan" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih sebuah akun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuat" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih suatu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Facebook. Harap pilih " +"satu dari daftar ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Foursquare. Harap pilih " +"satu dari daftar ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in ke %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis suatu pesan tambahan untuk check in ke %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Terjadi suatu kesalahan" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tak dapat menemukan \"%s\" dalam layanan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tak dapat temukan suatu tempat yang cocok untuk check in dalam lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kredensial telah kedaluarsa, harap buka Akun Daring untuk masuk dan " +"memfungsikan akun ini" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tak ada yang ditemukan di sini!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi ditambahkan ke peta, perhatikan bahwa mungkin perlu waktu sebelum itu " +"muncul pada peta dan dalam hasil pencarian." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem berkas hanya baca" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tak punya ijin untuk menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak ada" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tak ada nama berkas yang dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tak bisa mengekspor tilikan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tak valid" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "galat penguraian" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tak dikenal" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Permintaan rute gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Rute tak ditemukan." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Mulai!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Semua Berkas Lapisan" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung ke layanan lokasi" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Andika Triwidada , 2013-2016, 2018, 2019.\n" +"Kukuh Syafaat , 2017-2020." + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Aplikasi peta bagi GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak Cipta © 2011 – 2019 Red Hat, Inc. dan Penulis GNOME Peta" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan kontributor" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Ubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pencarian disediakan oleh %s menggunakan %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Jenis berkas tak didukung" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Gagal membuka layer" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau sandi salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berhasil" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan yang buruk" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tak ditemukan" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, seseorang baru saja mengubah objek itu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dihapus" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cara atau hubungan mengacu ke anak yang tak ada" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama resmi. Ini biasanya apa yang tertulis pada rambu." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Situs web" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Situs web resmi. Cobalah memakai bentuk URL paling dasar yaitu http://" +"example.com/ bukan http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telepon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nomor telepon. Gunakan format internasional, diawali dengan tanda +. Hati-" +"hati dengan perundangan privasi lokal, khususnya untuk nomor telepon pribadi." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang dipakai mesti menyertakan kode bahasa dan judul artikel seperti " +"\"id:Judul artikel\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat taut dalam label untuk bantuan tentang format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Ketinggian" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevasi (ketinggian di atas muka laut) dari suatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Akses kursi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terbatas" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Ditugaskan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Akses internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Ethernet" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Layanan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kekristenan" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multi Agama" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pagan" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Saintologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalisme Unitarian" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toilet" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Catatan" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informasi yang digunakan untuk menginformasikan pemeta lain mengenai " +"informasi yang tidak jelas tentang suatu elemen, maksud penulis saat " +"membuatnya, atau petunjuk untuk perbaikan lebih lanjut." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Ketinggian:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Akses internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toilet:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Akses kursi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telepon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Gagal mengurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terbatas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "ditugaskan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemukan pada OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tak valid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tak valid" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tak didukung" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s ke %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuat ubin peta untuk pencetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Anda dapat menggugurkan pencetakan bila ini makan waktu terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Gugurkan pencetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah lewat lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Hapus lewat lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rute sebaliknya" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambahkan %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuat berkas" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Perkiraan waktu: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Jadwal disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mulai dari %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mulai" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba di %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tampilkan petunjuk berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyikan petunjuk berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Memuat alternatif sebelumnya" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Memuat alternatif kemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tidak ditemukan alternatif sebelumnya." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tidak ada alternatif lain yang ditemukan." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Tidak ada data jadwal yang ditemukan untuk rute ini." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Tidak ada penyedia yang ditemukan untuk rute ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s menit" +msgstr[1] "%s menit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s jam" +msgstr[1] "%s jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s jam" +msgstr[1] "%s:%s jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "terus menerus" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit sampai terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "hari libur publik" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "hari libur sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ethernet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "pelayanan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Akurasi: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Tak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Eksak" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s j" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s j %s mnt" +msgstr[1] "%s j %s mnt" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s mnt" +msgstr[1] "%s mnt" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s dtk" +msgstr[1] "%s dtk" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mil" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Pengaya ini tidak mendukung kedatangan terbaru" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Lanjutkan pada %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Lanjutkan" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri di %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit ke kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Belok sedikit ke kiri" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok kiri tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Belok kiri tajam" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit ke kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Belok sedikit ke kanan" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok kanan tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Belok kanan tajam" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Di bundaran, ambil jalur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Di bundaran, ambil jalur ke %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Ambil bundaran" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Naik lift dan turun di %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Naik lift" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Putar balik kiri ke %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Putar balik kiri" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Putar balik kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Putar balik kanan" + +#~ msgid "Primary menu" +#~ msgstr "Menu utama" + +#~ msgid "Don’t have an account?" +#~ msgstr "Tidak punya akun?" + +#~ msgid "%f h" +#~ msgstr "%f j" + +#~ msgid "%f min" +#~ msgstr "%f men" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Tambahkan tujuan" diff --git a/po/is.po b/po/is.po new file mode 100644 index 00000000..bacb714d --- /dev/null +++ b/po/is.po @@ -0,0 +1,1665 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2015, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-03-26 17:04+0000\n" +"PO-Revision-Date: 2019-07-06 07:57+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME-landakort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Finndu staði út um allan heim" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Landakortaforritið gefur aðgang að landakortum hvaðanæva úr heiminum. Það " +"hjálpar þér að finna staði, til dæmis með því að leita að götu eða bæ, nú " +"eða með því að skoða kort til að finna góðan stað til að hitta vinina." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Landakortaforritið notar OpenStreetMap gagnagrunninn, sem er " +"samvinnuverkefni hundruða þúsunda manna víðsvegar um heiminn." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Þú getur líka leitað að sérstökum tegundum staðsetninga, eins og “Pöbbar " +"nálægt Main Street, Boston”, \"Myndbandaleigur á Selfossi\" eða “Hótel " +"nálægt Alexanderplatz, Berlín”." + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "Landakort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Einfalt landakortaforrit" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Landakort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leyfir að staðsetning þín sé birt á kortinu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "síðasta skoðuð staðsetning" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Hnit síðast skoðuðu staðsetningar." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Gluggastærð" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Gluggastærð (breidd og hæð)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Staðsetning glugga" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Staðsetning glugga (x og y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Gluggi hámarkaður" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Staða hámörkunar glugga" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Hámarksfjöldi leitarniðurstaðna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Hámarksfjöldi niðurstaðna úr leit með geocode." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Fjöldi nýlegra staða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Fjöldi nýlega heimsóttra staða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Fjöldi nýlegra leiða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Fjöldi nýlega notaðra leiða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Facebook. Möguleg " +"gildi eru: ALLIR, VINIR_VINA, ALLIR_VINIR eða SJÁLF(UR)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Foursquare. " +"Möguleg gildi eru: opinbert, fylgjendur eða einka." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Tilkynning á Facebook við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tilkynningu um innskráningu " +"inn á Facebook-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Tilkynning á Twitter við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tíst um innskráningu inn á " +"Twitter-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Notandanafn eða netfang á OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Gefur til kynna hvort notandinn hafi skráð sig inn til að breyta gögnum í " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Síðast notaða gerð samgangna fyrir leiðaval" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sýnileiki" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Senda á Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Senda á Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Hætta við" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "S_krá inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Allir" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vinir vina" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vinir" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara ég" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Opið (public)" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Fylgjendur" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Einka" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Hvað er hér?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Afrita staðsetningu" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Flytja út sem mynd" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Flytja út sýn" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Flytja út" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Hafa með leið og merkingar" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Almennt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Birta flýtilykla" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Leita" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Prenta leið" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Hætta" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortasýn" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Renna að" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Renna frá" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Víxla á milli kvarða" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skipta yfir í götusýn" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skipta yfir í loftmyndasýn" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Opna lag með lögunum" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Opna lag með lögunum…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Kveikja á staðsetningarþjónustum til að finna staðsetningu þína" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Hætta við" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Staðsetningarstillingar" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Setja upp OpenStreetMap aðgang" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: data/ui/main-window.ui:18 +#| msgid "About" +msgid "About Maps" +msgstr "Um hugbúnaðinn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Veldu tegund landakorts" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Renna frá" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Renna að" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Víxla Eftirlætum af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Prenta leið" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Kortin eru án nettengingar!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Landakortaforritið þarf virka internet-tengingu til að virka almennilega, en " +"ekki hefur gengið að finna neina slíka." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Athugaðu tengi- og milliþjónastillingarnar þínar." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Bæta við nýja leið" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Opna með öðru forriti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merkja sem Eftirlæti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Skrá inn hér" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap aðgangur" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Skrá inn til að breyta kortum" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjálpa til við að bæta kortið, með því\n" +"að nota OpenStreetMap-aðgang." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Tölvupóstur" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lykilorð" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Skrá inn" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ertu ekki með aðgang?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Æ, þetta virkaði ekki. Endilega reyndu aftur, eða farðu á\n" +"OpenStreetMap til að endurstilla lykilorðið þitt." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Sannvottunarkóðinn stemmdi ekki, prófaðu aftur." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Settu inn sannvottunarkóðann hér fyrir ofan" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sannreyna" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Skráð inn" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap aðgangurinn þinn er virkur." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Skrá út" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Húsnúmer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Póstnúmer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Borg" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tegund" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ekkert" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Bæta við reit" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Athugasemd" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Breytingar á korti verða sýnilegar á öllum kortum sem nota\n" +"OpenStreetMap gögn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nýlega notað" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næsta" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Birta nánari upplýsingar" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Ýttu á Enter til að leita" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Engar niðurstöður fundust" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dragðu til að breyta röð leiðarinnar" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Opna staðsetningu" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Opna" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Opna lag með lögunum" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Víxla sýnilegu" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Leita að leiðum með GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Leita að leiðum með OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Leiðatöflur almenningssamgangna koma frá GNOME\n" +"í gegnum tímatöflugögn frá rekstraraðilum eða ferðaskrifstofum.\n" +"Þeir aðilar eru ekki ábyrgir fyrir niðurstöðum sem birtar eru hér.\n" +"GNOME getur ekki ábyrgst áreiðanleika þessara leiða og áætlana.\n" +"Nöfn og vörumerki ber að líta á sem eign viðkomandi fyrirtækja þegar slíkt á " +"við." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Birta fleiri niðurstöður" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Fela biðstöðvar á leiðinni og upplýsingar" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Sýna biðstöðvar á leiðinni og upplýsingar" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Fara núna" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Fara um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Koma um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Birta" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Strætisvagna" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Lestir" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Neðanjarðarlestir" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjur" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Núverandi staðsetning" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Nákvæmni: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Renndu að til að bæta við staðsetningu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Renna að" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Mistókst að finna tíglaskipan í möppu" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gat ekki þáttað XML-skjal" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nauðsynleg eigindi vantar" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Gat ekki fundið OSM-stak" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Slóð á möppuuppbyggingu fyrir kortaflísar á tölvunni" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "Sýna útgáfu forrits" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Veldu aðgang" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Hleð inn" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Veldu stað" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Facebook. Veldu einn af þessum " +"lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Foursquare. Veldu einn af þessum " +"lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Skrá inn í %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Þú getur skrifað skilaboð með innskráningunni í %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Villa hefur átt sér stað" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finn ekki \"%s\" á samfélagsmiðilsþjónustunni" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Get ekki fundið hentugan stað til að skrá inn á þessari staðsetningu" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Auðkennin eru útrunnin, opnaðu \"Aðgangar á neti\" til að skrá þig inn og " +"virkja þennan aðgang" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Leið héðan" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Bæta við áfangastað" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Leið hingað" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Ekkert fannst hér!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Staðsetningunni var bætt á kortið, athugaðu að nokkur tími getur liðið " +"þangað til hún fer að sjást á kortinu eða koma upp í leitarniðurstöðum." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Landakort á %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Skráakerfi er aðeins til lestrar" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Þú hefur ekki nægar aðgangsheimildir til að vista þarna" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappan er ekki til" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ekkert skráarheiti tilgreint" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tókst ekki að flytja út sýnina" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ógild hnit" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "þáttunarvilla" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "óþekkt gerð rúmfræði" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Leiðarbeiðni mistókst." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Engin leið fannst." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Byrja!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Allar lagaskrár" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "Tókst ekki að tengjast staðsetningarþjónustu" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "Sveinn í Felli, sv1@fellsnet.is" + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "Landakortaforrit fyrir GNOME" + +#: src/mainWindow.js:520 +#| msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Höfundarréttur © 2011 – 2019 Red Hat, Inc. og höfundar GNOME Maps" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortagögn frá %s og meðhöfundum" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortatíglar gefnir út af %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Það er enginn stuðningur við skráategundina" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Mistókst að opna lag" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Mistókst að opna Geo URI-slóð" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Engin tímatöflugögn fundust fyrir þessa leið." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Rangt notandanafn eða lykilorð" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Tókst" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Óleyfileg beiðni" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Hluturinn fannst ekki" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Árekstur, einhver annar er nýbúinn að breyta atriðinu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Hlutnum hefur verið eytt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Leið eða vensl vísa í afleiður sem ekki eru til" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nafn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Opinbera heitið. Venjulega það sem birt væri á skiltum og þess háttar" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Heimilisfang" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Vefsvæði" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Opinbera vefsvæðið. Reyndu að nota grunnform slóðarinnar, t.d. http://vefur." +"is í stað http://dæmi.is/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Símanúmer" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Símanúmer. Notaðu alþjóðlega framsetningu, sem byrjar á + merki. Vertu " +"meðvitaður um reglur þær sem í gildi eru á svæðinu, sérstaklega varðandi " +"persónulega friðhelgi." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Sniðið ætti að innihalda tungumálskóða og titil greinar, til dæmis \"is:" +"Heiti greinar\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Opnunartímar" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" +"Skoðaðu tengilinn í skýringum um hvar hægt sé að fá hjálp varðandi snið." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Fólksfjöldi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Hæð" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Hæð yfir sjávarmáli í metrum." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Hjólastólaaðgangur" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Já" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "takmarkað" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "uppgefið" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetaðgangur" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Þráðlaust net" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Um kapal" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Útstöð" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Þjónusta" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Trúarbrögð" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Andatrú" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Búddismi" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kao-Daí" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristindómur" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfúsíusismi" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindúismi" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jaínismi" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Gyðingdómur" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Íslam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Margra trúarbragða" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heiðni" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafaríanismi" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Vísindakirkjan" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismi" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spírítismi" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taóismi" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Alþjóðlegur únítarismi" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jasismi" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Sóróismi" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Snyrtingar" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Athugasemd" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Upplýsingar sem notaðar eru til að gefa öðrum kortahönnuðum ekki-augljósar " +"ábendingar um tiltekið atriði, markmið höfundar þegar hann útbjó atriði, eða " +"ábendingar um hvernig hægt yrði að þróa/bæta það." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Veldu tegund" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Lokið" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Fólksfjöldi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Hæð:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Opnunartímar:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetaðgangur:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Trúarbrögð:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Snyrtingar:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Hjólastólaaðgangur:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Sími:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Gat ekki þáttað Geo URI-slóð" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "já" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "takmarkað" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "uppgefið" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Frá %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Hleð inn kortaflísum fyrir prentun" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Þú getur hætt við prentun ef þetta tekur of langan tíma" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hætta við prentun" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Bæta við í gegnum staðsetningu" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjarlægja í gegnum staðsetningu" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Snúa við leið" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Gat ekki opnað URI-slóð" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "mistókst að hlaða inn skrá" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Áætlaður tími: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Koma til %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Koma" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Byrja í %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Upphaf" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Birta gönguleiðbeiningar" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Fela gönguleiðbeiningar" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Ganga %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Hlaða inn fyrri valkostum" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Hlaða inn síðari valkostum" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Engir fyrri möguleikar fundust." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Engir síðari möguleikar fundust." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mínúta" +msgstr[1] "%d mínútur" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d klukkustund" +msgstr[1] "%d klukkustundir" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d klukkustund" +msgstr[1] "%d:%02d klukkustundir" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "allan sólarhringinn" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "frá sólarupprás til sólarlags" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "alla daga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "almennir frídagar" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skólafrídagar" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ekki opið" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "um kapal" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "útstöð" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "þjónusta" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Óþekkt" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Nákvæmt" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f klst" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f mín" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f sek" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s míl" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s fet" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Hætta" + +#~ msgid "OK" +#~ msgstr "Í lagi" + +#~ msgid "Load Map Layer" +#~ msgstr "Hlaða inn kortalagi" + +#~ msgid "Open Layer" +#~ msgstr "Opna lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f fet" + +#~ msgid "Country code: %s" +#~ msgstr "Landskóði: %s" diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..143365e8 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1920 @@ +# Italian translation for gnome-maps. +# Copyright (C) 2013 - 2019 Red Hat & gnome-maps authors +# This file is distributed under the same license as the gnome-maps package. +# Claudio Arseni , 2013, 2014, 2015. +# Gianvito Cavasoli , 2016-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-10 14:47+0200\n" +"Last-Translator: Gianvito Cavasoli \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 3.36.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mappe GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trova luoghi in giro per il mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mappe fornisce un rapido accesso alla cartografia mondiale. Consente di " +"trovare velocemente i luoghi utilizzando la ricerca per città o per " +"indirizzo e di trovare i luoghi in cui incontrare i propri amici." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mappe usa il database OpenStreetMap creato dalla collaborazione di centinaia " +"di migliaia di persone da ogni parte del mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"È possibile cercare posti specifici, tipo «Pub vicino a Via del Corso, Roma» " +"o «Hotel vicino a Piazza del Duomo, Milano»." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Il progetto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Mappe" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una semplice applicazione per le mappe" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mappe;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Consente alla vostra posizione di essere mostrata sulla mappa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultima posizione visualizzata" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinate dell'ultima posizione visualizzata." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Livello d'ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo di mappa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il tipo di mappa da mostrare (stradale, aerea, ecc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensione finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensione della finestra (larghezza e altezza)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizione finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizione della finestra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra massimizzata" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stato massimizzazione della finestra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numero massimo di risultati per la ricerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Numero massimo di risultati per la ricerca da codifica geografica." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numero di luoghi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numero di luoghi visitati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numero di percorsi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numero di percorsi effettuati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Facebook usate. I valori " +"possibili sono: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Foursquare usate. I " +"valori possibili sono: public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmissione a Facebook dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come post all'account Facebook " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmissione a Twitter dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come tweet all'account Twitter " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome utente o indirizzo e-mail di OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utente ha effettuato l'accesso per modificare i dati " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultimo tipo di trasporto usato per il percorso" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modalità notturna" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indica se l'applicazione è nella modalità notturna." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usa mappe aeree ibride" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Indica se le mappe aeree devono usare lo stile ibrido (con etichette)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilità" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Invia su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Invia su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "A_nnulla" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "C_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Chiunque" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Gli amici dei propri amici" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo gli amici" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo a me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Pubblico" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Follower" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privato" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Percorso da qui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Aggiungi destinazione intermedia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Percorso fino a qui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Cosa c'è qui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia posizione" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esporta visualizzazione" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includere percorsi e marcatori" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai alla posizione attuale" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Scegli il tipo di mappa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Attiva/Disattiva i preferiti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Stampa percorso" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra scorciatoie" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ricerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampa il percorso" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Esci" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Apre il menù principale" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualizzazione mappa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Attiva/Disattiva scala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va a alla posizione attuale" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passa alla visualizzazione stradale" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passa alla visualizzazione aerea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Apre livello di forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra etichette" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Apri livello di forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Attivare i servizi di localizzazione per rilevare la posizione" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annulla" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazioni di localizzazione" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalità notturna" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Impostazione account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esporta come immagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazioni su Mappe" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Apri menù principale" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mappe è fuori rete." + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mappe ha bisogno di una connessione a Internet attiva per funzionare " +"correttamente, ma al momento è impossibile trovarne una." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Verificare la propria connessione e le impostazioni del proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aggiungi a nuovo percorso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Condivide la posizione" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Contrassegna come preferito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check-in qui" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Accedi per modificare le mappe" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aiuta a migliorare la mappa, usando un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Iscriviti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Accedi" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Non ha funzionato. Riprovare, o visitare\n" +"OpenStreetMap per ripristinare la password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codice di verifica non corrisponde, riprovare." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Inserire il codice di verifica mostrato sopra" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Accesso effettuato" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "L'account OpenStreetMap è attivo." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Disconnetti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numero civico" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codice postale" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Città" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nessuno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aggiungi campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Le modifiche alla mappa saranno visibili su tutte le mappe che usano\n" +"dati di OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usate recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Successiva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostra più informazioni" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nessun risultato trovato" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trascinare per modificare l'ordine del percorso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Apri posizione" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Invia a…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Apri livello di forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Apri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Attiva/Disattiva visibilità" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricerca del percorso con GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I percorsi itineranti per il trasporto pubblico sono forniti da servizi\n" +"di terze parti.\n" +"GNOME non può garantire la correttezza degli itinerari e degli orari " +"indicati.\n" +"Notare che alcuni fornitori potrebbero non includere tutte le modalità di " +"trasporto disponibili,\n" +"per esempio un fornitore nazionale potrebbe non includere le linee aeree, e " +"un fornitore locale\n" +"potrebbe non includere treni regionali.\n" +"Nomi e marchi riportati sono da considerarsi, quando applicabile, come " +"marchi registrati." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra più risultati" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Nasconde le fermate intermedie e informazioni" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra le fermate intermedie e informazioni" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partire ora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partire alle" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivare alle" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghetti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplani" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Posizione attuale" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ingrandire per aggiungere la posizione." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Aumenta ingrandimento" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossibile trovare sezioni delle mappe nella directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Analisi del documento XML non riuscita" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributi richiesti mancanti" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossibile trovare l'elemento OSM" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Un percorso di una directory locale contenente sezioni delle mappe" + +#: src/application.js:101 +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Dimensione mappa per la directory locale delle mappe" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Mostra la versione del programma" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignora disponibilità rete" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezionare un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Caricamento" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezionare un posto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Facebook. Selezionarne " +"uno da questo elenco." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Foursquare. Selezionarne " +"uno da questo elenco." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in presso %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivere un commento opzionale per il check-in presso %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Si è verificato un errore" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossibile trovare «%s» nel servizio social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impossibile trovare un posto adatto per il check-in in questo luogo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credenziali scadute. Aprire «Account online» per accedere e abilitare questo " +"account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non c'è niente qui." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La posizione è stata aggiunta alla mappa, notare che ci potrebbe volere un " +"po' prima che venga mostrata sulla mappa e nei risultati di ricerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mappe di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il filesystem è in sola lettura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non si hanno i permessi per salvarle" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La directory non esiste" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nessun nome file specificato" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossibile esportare la visualizzazione" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinate non valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "errore di analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria sconosciuta" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Richiesta del percorso non riuscita." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Percorso non trovato." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Avvia." + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Tutti i file livello" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Impossibile connettersi al servizio di localizzazione" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Claudio Arseni \n" +"Gianvito Cavasoli " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "Una applicazione di GNOME per le mappe" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e gli autori di GNOME Maps" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "I dati delle mappe sono di %s e collaboratori" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Le sezioni delle mappe sono fornite da %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricerca fornita da «%s» usando «%s»" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Il tipo di file non è supportato" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Apertura del livello non riuscita" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Apertura di GeoURI non riuscita" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome utente o password non corretti" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Successo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richiesta errata" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Oggetto non trovato" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflitto, qualcun altro ha già modificato l'oggetto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'oggetto è stato eliminato" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Percorso o relazione in riferimento a un nodo figlio non esistente" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Il nome ufficiale. Questo è tipicamente quello che appare all'accesso." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Indirizzo" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Sito web" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sito web ufficiale. Provare a usare la forma più basica di un URL, " +"esempio http://example.com invece di http://example.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Il numero di telefono. Usare il formato internazionale, a partire dal " +"simbolo +. Fare attenzione alle leggi locali sulla privacy, specialmente per " +"i numeri di telefono privati." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formato usato deve includere il codice della lingua e il titolo " +"dell'articolo tipo «it:Titolo dell'articolo»." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Orari di apertura" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Vedere il collegamento nell'etichetta per un aiuto sul formato." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Popolazione" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Altitudine (altezza sopra il livello del mare) di un punto in metri." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Accesso per disabili" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Limitata" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Designata" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Accesso Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Con cavo" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminale" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Servizio" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Religione" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhismo" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianesimo" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianesimo" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Induismo" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Giainismo" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Ebraismo" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Religioni multiple" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Paganesimo" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianesimo" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoismo" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismo" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualismo" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitariani universalisti" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Servizi igienici" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Indicazioni usate per comunicare altri mappatori le informazioni non " +"evidenti su un elemento, l'intento dell'autore quando lo crea, o suggerire " +"futuri miglioramenti." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Seleziona tipo" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Fatto" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Luogo senza nome" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Popolazione:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Altitudine:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Orari di apertura:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Accesso Internet:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Religione:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Servizi igienici:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Accesso per disabili:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Analisi dell'URI geografico non riuscita" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sì" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitata" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designata" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Luogo non trovato su OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "L'URL di OpenStreetMap non è valido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "L'URL delle coordinate non è valido" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "L'URL non è supportato" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Da %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Caricamento sezioni della mappa per la stampa" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Si può interrompere la stampa se questa prende troppo tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompi stampa" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aggiunge tramite posizione" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Rimuove tramite posizione" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percorso inverso" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aggiungi «%s» in «%s»" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Apertura dell'URI non riuscita" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Apri con %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "caricamento file non riuscito" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo stimato: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari forniti da %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partenza da %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partenza" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camminare per %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arriva in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Arrivo" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra il percorso a piedi" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Nasconde il percorso a piedi" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Caricare alternative precedenti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Caricare alternative successive" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non è stata trovata alcuna alternativa precedente." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non è stata trovata alcuna alternativa successiva." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nessun dato trovato sugli orari di questo percorso." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nessun fornitore trovato per questo percorso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minuti" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +#| msgid "%d hour" +#| msgid_plural "%d hours" +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tutto il giorno" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dal tramonto all'alba" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "tutti i giorni" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "vacanze" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacanze scolastiche" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "chiuso" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "con cavo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminale" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servizio" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisione: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Sconosciuta" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Esatta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s ora" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ora %s min" +msgstr[1] "%s ore %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sec" +msgstr[1] "%s sec" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Questo plugin non supporta l'ultimo arrivo" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continua su %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continua" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolta a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Svolta a sinistra" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolta leggermente a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Svolta leggermente a sinistra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolta brusca a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Svolta brusca a sinistra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolta a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Svolta a destra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolta leggermente a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Svolta leggermente a destra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolta brusca a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Svolta brusca a destra" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Alla rotonda, prendere l'uscita %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Alla rotonda, prendere l'uscita verso %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Prendere la rotonda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendere l'ascensore e scendere a %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Prendere l'ascensore" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fare un'inversione a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Fare un'inversione a sinistra" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fare un'inversione a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Fare un'inversione a destra" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..a974b3e4 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1477 @@ +# Japanese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# victory , 2013. +# Jiro Matsuzawa , 2013. +# Ikuya Awashiro , 2014. +# Hajime Taira , 2014-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-03-16 20:35+0000\n" +"PO-Revision-Date: 2016-04-06 07:08+0900\n" +"Last-Translator: sujiniku \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"世界中あらゆる場所の地図に簡単にアクセスできます。都市や住所を検索して、お探" +"しの場所をさっと見つけられ、待ち合わせ場所もすぐに特定できます。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"この地図アプリは、OpenStreetMap データベースを利用しています。このデータベー" +"スは、世界中の膨大な人々が協力して作成しています。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"特定のタイプにより検索することができます。場所の特定の種類による検索。" +"例:“Pubs near Main Street, Boston“ あるいは “Hotel near Alexanderplatz, " +"Berlin“" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:441 +msgid "Maps" +msgstr "地図" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "シンプルな地図アプリケーション" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;地図;マップ;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +#| msgid "User set last known location" +msgid "last viewed location" +msgstr "直近の既知の位置がユーザー設定によるものかどうか" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +#, fuzzy +#| msgid "Description of last known location" +msgid "Coordinates of last viewed location." +msgstr "直近の既知の位置の詳細" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "ウィンドウサイズ" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "ウィンドウサイズ (幅と高さ) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "ウィンドウの位置" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "ウィンドウの位置 (横位置と縦位置) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "ウィンドウ最大化" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "ウィンドウを最大化しているかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "検索結果の最大数" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "geocode 検索の検索結果として表示する最大数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "記録する最近の場所の数" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "最近訪れた場所を記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "記録する最近のルートの数" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "最近訪れたルートを記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebookへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最新のFacebookのチェックイン時のプライバシー設定で指定可能な値: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquareへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最新のFoursquareのチェックイン時のプライバシー設定で指定可能な値: public, " +"followers, private" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "FoursquareのチェックインをFacebookにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"FacebookアカウントがFoursquareアカウントに関連付けられている場合、Foursquare" +"のチェックインをFacebookにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "FoursquareのチェックインをTwitterにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"TwitterアカウントがFoursquareアカウントに関連付けられている場合、Foursquareの" +"チェックインをTwitterにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap アカウントの設定" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "キーボードショートカット(_K)" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "このアプリケーションについて" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "終了" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "公開範囲" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Facebookに投稿" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Twitterに投稿" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "チェックイン(_H)" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "誰でも" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "友達の友達まで" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "友達のみ" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "自分のみ" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "公開" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "フォロワー" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "プライベート" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ここはどこ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "場所をコピー" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "画像としてエクスポート" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "ビューのエクスポート" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ルートとマーカーを含む" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ショートカットを表示する" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "検索する" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ルート案内の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ルートを印刷する" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "終了する" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地図の表示" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拡大する" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "縮小する" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "縮尺の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "現在の位置へ移動する" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "現在位置を特定するには位置情報サービスをオンにしてください" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "場所の設定" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "現在の位置へ移動します" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "地図の種類を選択" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "ルート案内" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "お気に入り" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "ルートの印刷" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "地図はオフラインです。" + +#: ../data/ui/main-window.ui.h:8 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"インターネット接続がありません。このアプリケーションが適切に機能するためにイ" +"ンターネット接続が必要です。" + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "インターネット接続とプロキシの設定を確認してください。" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "新しいルートを追加" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "別のアプリケーションで開く" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "お気に入りに追加" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "ここにチェックイン" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap アカウント" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"地図編集のためのサインイン" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "メールアドレス" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "パスワード" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "サインイン" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "アカウントをお持ちでありませんか?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +#, fuzzy +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "認証コードが一致しません、やりなおしてください。" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "上記の認証コードを入力" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "検証" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "サインイン済み" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "あなたの OpenStreetMap account アカウントはアクティブです。" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "サインアウト" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "道路地図" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "" + +#: ../data/ui/osm-edit-address.ui.h:3 +#, fuzzy +#| msgid "Postal code: %s" +msgid "Postal code" +msgstr "郵便番号: %s" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +#, fuzzy +#| msgid "_Cancel" +msgid "Cancel" +msgstr "キャンセル(_C)" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:472 +msgid "Next" +msgstr "" + +#: ../data/ui/place-bubble.ui.h:1 +#, fuzzy +#| msgid "Show more results" +msgid "Show more information" +msgstr "さらに結果を表示" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Enterキーを押すと検索します" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "ルートの順序をドラッグで変更" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "場所を開く" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "開く(_O)" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "" + +#: ../data/ui/shape-layer-row.ui.h:1 +#, fuzzy +#| msgid "Toggle favorites" +msgid "Toggle visible" +msgstr "お気に入り" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "さらに結果を表示" + +#: ../data/ui/transit-leg-row.ui.h:1 +msgid "Hide intermediate stops and information" +msgstr "" + +#: ../data/ui/transit-leg-row.ui.h:2 +#, fuzzy +#| msgid "Show more results" +msgid "Show intermediate stops and information" +msgstr "さらに結果を表示" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "現在の位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "位置精度: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to parse XML document" +msgstr "Geo URIの解析に失敗しました" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "" + +#: ../src/application.js:103 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "アカウントの選択" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "読み込み中" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "場所の選択" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Facebookでチェックインする場所を見つけることができませんでした。次のリストか" +"ら1つ選択してください。" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Foursquareでチェックインする場所を見つけることができませんでした。次のリスト" +"から1つ選択してください。" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "%sへチェックイン" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%sへチェックイン時に添えるコメントを書きます。" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:509 +msgid "An error has occurred" +msgstr "エラーが発生しました" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ソーシャルサービスにて \"%s\" を見つけることができません" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "この場所にチェックインするために適切な場所を見つけることができません" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"認証情報が失効しました。オンラインアカウント設定を開き、再度アカウントを認証" +"してください" + +#: ../src/contextMenu.js:96 +msgid "Route from here" +msgstr "ここからのルート" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "行き先を追加" + +#: ../src/contextMenu.js:100 +msgid "Route to here" +msgstr "ここまでのルート" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:630 +msgid "Route request failed." +msgstr "ルート要求は失敗しました。" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:614 +#: ../src/openTripPlanner.js:728 +msgid "No route found." +msgstr "ルートが見つかりません。" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "開始!" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "" + +#: ../src/mainWindow.js:387 +msgid "Failed to connect to location service" +msgstr "位置情報サービスに接続できません" + +#: ../src/mainWindow.js:439 +msgid "translator-credits" +msgstr "" +"松澤 二郎 \n" +"victory \n" +"Ikuya Awashiro \n" +"Hajime Taira \n" +"日本GNOMEユーザー会 " + +#: ../src/mainWindow.js:442 +msgid "A map application for GNOME" +msgstr "GNOME 向け地図アプリケーション" + +#: ../src/mapView.js:354 +msgid "File type is not supported" +msgstr "" + +#: ../src/mapView.js:361 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open layer" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/mapView.js:397 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open GeoURI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/openTripPlanner.js:626 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "" + +#: ../src/osmConnection.js:448 +#, fuzzy +#| msgid "Position not found" +msgid "Object not found" +msgstr "位置が見つかりません" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:159 +msgid "Website" +msgstr "" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:165 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours" +msgstr "営業時間: %s" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +#, fuzzy +#| msgid "Population: %s" +msgid "Population" +msgstr "人口: %s" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access" +msgstr "車いすでのアクセス: %s" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "可能" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "" + +#: ../src/osmEditDialog.js:167 +#, fuzzy +#| msgid "limited" +msgid "Limited" +msgstr "制限あり" + +#: ../src/osmEditDialog.js:168 +#, fuzzy +#| msgid "designated" +msgid "Designated" +msgstr "車いす専用" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../src/osmEditDialog.js:340 +#, fuzzy +#| msgid "Select a place" +msgid "Select Type" +msgstr "場所の選択" + +#: ../src/osmEditDialog.js:458 +msgid "Done" +msgstr "" + +#: ../src/placeBubble.js:122 +#, fuzzy +#| msgid "Population: %s" +msgid "Population:" +msgstr "人口: %s" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "" + +#: ../src/placeBubble.js:133 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours:" +msgstr "営業時間: %s" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "" + +#: ../src/placeBubble.js:143 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access:" +msgstr "車いすでのアクセス: %s" + +#: ../src/placeBubble.js:149 ../src/placeBubble.js:153 +msgid "Phone:" +msgstr "" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Geo URIの解析に失敗しました" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:329 +msgid "yes" +msgstr "可能" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "制限あり" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:335 +msgid "no" +msgstr "困難" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "車いす専用" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "" + +#: ../src/sendToDialog.js:179 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open URI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:285 +#, javascript-format +msgid "Estimated time: %s" +msgstr "所要時間: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:74 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:80 +#, fuzzy +#| msgid "Start!" +msgid "Start" +msgstr "開始!" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:248 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:275 +#, fuzzy, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%f 分" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:286 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:292 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:611 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24時間体制" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "日の出から日没まで" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "毎日" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "祝日" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "学校休日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "休業" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "正確" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f 時間" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f 分" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f マイル" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f フィート" + +#~ msgid "Country code: %s" +#~ msgstr "国コード: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "直近の既知の位置と精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "直近の既知の位置 (緯度と経度を度単位で) と精度 (メートル単位) です。" + +#~ msgid "Description of last known location of user." +#~ msgstr "ユーザーの直近の既知の位置の詳細です。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "直近の既知の位置が、ユーザーが手動で設定したものかどうかの設定です。" + +#~ msgid "I’m here!" +#~ msgstr "私はここにいます!" + +#~ msgid "To" +#~ msgstr "目的地" + +#~ msgid "From" +#~ msgstr "出発地点" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星写真" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 00000000..e2e5da82 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,1992 @@ +# Kazakh translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Baurzhan Muftakhidinov , 2014-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-15 23:20+0500\n" +"Last-Translator: Baurzhan Muftakhidinov \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME карталары" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Дүниежүзілік орындарды табу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карталар қолданбасы сізге дүниежүзі карталарына жылдам қатынауды мүмкін " +"қылады. Оның көмегімен керек болған орынды оның орналасқан қаласын не " +"көшесін енгізу арқылы табуға, немесе доспен кездесу үшін орынды табуға " +"болады." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карталар қолданбасы қауымдастық ұсынатын OpenStreetMap дерекқорын қолданады, " +"оны дүниежүзінің әр жеріндегі мыңдаған адамдар жасайды." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Сонымен қатар, орналасулардың нақты түрлерін де іздеуге болады, мысалы " +"\"Гостиницы Астаны возле Байтерека\" немесе \"Hotels near Gorky Park, Almaty" +"\" (қазақша іздеу әлі мүмкін емес)." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME жобасы" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Карталар" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Қарапайым карталар қолданбасы" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Карталар;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Картада сіздің орналасуыңызды көрсете алады." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "соңғы қаралған орналасу" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Соңғы қаралған орналасудың координаттары." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштабтау" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабтау деңгейі" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Карта түрі" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Көрсетілетін карта түрі (көше, әуе және т.б.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Терезе өлшемі" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Терезе өлшемі (ені мен биіктігі)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Терезе орны" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Терезе орны (x және y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Терезе максималды етілген" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Терезенің максималды күйі" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Іздеу нәтижелерінің максималды саны" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Геокодын іздеуі қайтаратын нәтижелерінің максималды саны." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Соңғы орындардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Соңғы болған орындардың қаншауын сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Соңғы бағыттардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Соңғы бағыттардың нешеуін сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook көмегімен белгіленудің жекелік баптауы" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Facebook көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS және SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare көмегімен белгіленудің жекелік баптауы" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Foursquare көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері: public, followers не private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare көмегімен белгіленудің Facebook ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Facebook тіркелгісіне жазба ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare көмегімен белгіленудің Twitter ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Twitter тіркелгісіне твит ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap пайдаланушы аты немесе эл. пошта адресі" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Пайдаланушы OpenStreetMap деректерін түзету үшін кірген ба, соны анықтайды." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Бағдарды құрастыру кезінде соңғы қолданылған көлік түрі" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Түнгі режимі" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Қолданба түнгі режимінде ме, соны көрсетеді." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Гибридті әуе мозаикасын пайдалану" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Әуе мозаикасы гибридтік стильді (белгілермен) пайдалануы керек пе." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Көрінуі" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook-те жариялау" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter-де жариялау" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ба_с тарту" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Б_елгілену" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Әркім" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Достардың достары" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Тек достар" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Тек мен" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Публикалық" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Сонымнан ерушілер" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Жеке" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Осыдан бағдар" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Аралық мақсатты қосу" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Осыған дейін бағдар" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Осында не бар?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Орналасуды көшіріп алу" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Көріністі экспорттау" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Э_кспорт" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Бағдар және маркерлерді қоса" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Карта түрін таңдаңыз" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Кішірейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Үлкейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Таңдамалыларды көрсету/жасыру" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Жалпы" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Пернетақта жарлықтарын көрсету" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Іздеу" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Шығу" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Карта көрінісі" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Үлкейту" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Кішірейту" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Масштабты іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Көше көрінісіне ауысу" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Ауадан көрінісіне ауысу" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Белгілерді көрсету" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Қабатты (shape) ашу…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Орнасуыңызды анықтау үшін орналасулар қызметін іске қосыңыз" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Бас тарту" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Орналасу баптаулары" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Түнгі режимі" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісін баптау" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Сурет ретінде экспорттау" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "П_ернетақта жарлықтары" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Карталар қолданбасы туралы" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Бағдарды табу" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Карталар желіге қосылмаған!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карталар дұрыс жұмысы үшін интернетпен байланыс керек, бірақ ондай байланыс " +"табылмады." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Байланысу және прокси баптауларын тексеріңіз." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Жаңа бағдарға қосу" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Орналасумен бөлісу" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Таңдамалы ретінде белгілеу" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Осында белгілену" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісі" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Карталарды түзету үшін кіріңіз" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap тіркелгісі көмегімен\n" +"карталарды жақсартуға көмектесіңіз." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Эл. пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Тіркелу" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Кіру" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Кешіріңіз, бұл жасамады. Қайталап көріңіз, немесе\n" +"пароліңізді тастау үшін, OpenStreetMap сайтын шолыңыз." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Растау коды сәйкес болмады, қайталап көріңіз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Жоғарыда көрсетілген растау кодын енгізіңіз" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Растау" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Кіру орындалды" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Сіздің OpenStreetMap тіркелгіңіз белсенді." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Шығу" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Көше" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Үй нөмірі" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Пошталық индексі" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Қала" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Түрі" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Жоқ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Өрісті қосу" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Пікір" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Карта өзгерістері OpenStreetMap деректерін қолданатын\n" +"барлық карталарда көрінетін болады." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Жақында қолданылған" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Келесі" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Көбірек ақпарат шығару" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нәтижелер табылмады" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Бағдар ретін ауыстыру үшін тартып апарыңыз" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Орналасуды ашу" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Көшіру" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Қайда жіберу…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ашу" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Көрінуін іске қосу/сөндіру" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Бағдарды іздеу GraphHopper ұсынады" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Қоғамдық көліктің маршруттары үшінші жақты қызметтермен\n" +"ұсынылған.\n" +"GNOME көрсетілген бағдарлар және уақыттар үшін жауапты емес.\n" +"Кейбір провайдерлер тасымалдаудың барлық қолжетімді түрлерін қамтымауы " +"мүмкін\n" +"екенін ескеріңіз, мысалы, ұлттық провайдер авиакомпанияларды қамтымауы " +"мүмкін және\n" +"жергілікті провайдер аймақтық поездарды қамтымауы мүмкін\n" +"Көрсетілген атаулар және брендтер тіркелген сауда белгілері ретінде " +"қарастырылуы тиіс." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Көбірек нәтижелерді көрсету" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты жасыру" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты көрсету" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Қазір кету" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Кету, " + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Жету, " + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Көрсету" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобустар" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамвайлар" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Пойыздар" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Паромдар" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Ұшақтар" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Ағымдағы орналасу" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Орналасуды қосу үшін масштабты үлкейтіңіз!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Үлкейту" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Бумадан мозаикалық құрылымды табу сәтсіз аяқталды" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML құжатын талдау қатемен аяқталды" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Керек атрибуттар жетіспейді" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM элементін табу мүмкін емес" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Жергілікті плиткалық бумалар құрылымына дейінгі жол" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Жергілікті мозаика бумасының өлшемі" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Бағдарлама нұсқасын көрсету" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Желінің қолжетімділігін елемеу" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Тіркелгіні таңдаңыз" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Жүктелуде" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Орынды таңдаңыз" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Карталар Facebook көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Карталар Foursquare көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s жерінде белгілену" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s жерінде белгіленудің міндетті емес хабарламасын жазыңыз." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Қате орын алды" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "\"%s\" орнын әлеуметтік қызметтен табу мүмкін емес" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Бұл орналасуда белгілену үшін жарамды орынды табу мүмкін емес" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Тіркелу деректерінің мерзімі аяқталған, бұл тіркелгіге кіру және оны іске " +"қосу үшін желілік тіркелгілерді ашыңыз" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Осында ешнәрсе табылмады!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Орналасу картаға қосылды. Бірақ, ол картада және іздеу нәтижелерінде " +"көрінуіне дейін біршама уақыт өту керек болуын ескертіңіз." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта, %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлдық жүйе тек оқу үшін қолжетерлік" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Осында сақтау үшін керек рұқсаттарыңыз жоқ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Бума жоқ болып тұр" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Файл аты көрсетілмеген" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Көріністі экспорттау мүмкін емес" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "координаттар жарамсыз" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "талдау қатесі" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "геометрия белгісіз" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Бағдар сұранымы сәтсіз." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Бағдар табылмады." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Бастау!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Барлық қабаттар файлдары" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Орналасулар қызметіне байланысу сәтсіз аяқталды" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Baurzhan Muftakhidinov " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "GNOME үшін карталар қолданбасы" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. және GNOME Maps авторлары" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Карта деректерін ұсынған %s және үлес қосушылар" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Карта мозаикасын ұсынған %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Іздеуді %s ұсынған, %s негізінде" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Файл түріне қолдау жоқ" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Қабатты ашу сәтсіз аяқталды" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "GeoURI ашу сәтсіз аяқталды" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Пайдаланушы аты не паролі қате" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Сәтті" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Қате сұраным" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Объект табылмады" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Ерегесу, біреу бұл объектті жаңа ғана түзеткен" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Объект өшірілген" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Жол немесе байланыс жоқ ұрпақтарға сілтеп тұр" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Аты" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Ресми аты. Әдетте бұл белгілерде көрсетіледі." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адресі" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ресми веб сайты. Оңайлатылған түрін қолдануға тырысыңыз, мысалы, http://" +"example.com (http://example.com/index.html емес)." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Телефон нөмірі. +таңбасынан басталатын халықаралық пішімді қолданыңыз. " +"Жергілікті жекелік заңдарды ескертіңіз, әсіресе, жеке нөмірлер үшін." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Қолданылатын пішімі тіл коды және мақала атауынан тұруы керек (мыс, ”kk:" +"Мақала атауы”)." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Жұмыс істеу уақыты" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Пішім көмегін алу үшін белгі сілтемесін қараңыз." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Халық саны" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Теңіз деңгейінен биіктігі" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Нүктенің биіктігі (теңіз деңгейінен), метр есебімен." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Мүгедектер арбасымен қатынау" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Иә" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Жоқ" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Шектелген" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Арнайы" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Интернетпен байланыс" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Сымды" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Қызмет" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Дін" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Христиан" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуциандық" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Бірнеше дін" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Паганизм" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафариандық" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Сайентология" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Шинто" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритуализм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Таоизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитариандық универсализм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Әжетханалар" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Естелік" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Басқа карталар жасаушыларға элемент туралы айқын емес ақпаратты жеткізуге " +"қолданатын ақпарат, немесе оны жасау кезіндегі автордың пікірі, немесе " +"болашақ жақсартулар туралы кеңестер." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Түрін таңдаңыз" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Дайын" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Аталмаған орын" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Халық саны:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Теңіз деңгейінен биіктігі:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Жұмыс істеу уақыты:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Интернетпен байланыс:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Дін:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Әжетханалар:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Мүгедектер арбасымен қатынау:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Geo URI талдау сәтсіз аяқталды" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "иә" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "шектелген" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "жоқ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "арнайы" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Орын OpenStreetMap ішінен табылмады" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL жарамсыз" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL ішіндегі координаталар жарамсыз" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL түріне қолдау жоқ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s және %s арасында" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Баспаға шығару үшін картаны жүктеп алу" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Баспаға шығару тым көп уақыт алса, оны үзе аласыз" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Баспаға шығару туралы" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Орналасуы бойынша қосу" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Орналасуы бойынша өшіру" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Кері бағыт" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s %s ішіне қосу" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI ашу сәтсіз аяқталды" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s көмегімен ашу" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "файлды жүктеу сәтсіз" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Шамамен уақыты: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруттарды ұсынған %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s адресінен бастау" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Бастау" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Жүріс %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s адресіне жету" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Жету" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Жүріс ақпаратын көрсету" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Жүріс ақпаратын жасыру" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ертерек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Кейінірек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ертерек балама нұсқалары табылмады." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Кейінірек балама нұсқалары табылмады." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Бұл бағдар үшін кесте жоспары табылмады." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Бұл маршрут үшін ұсынушы табылмады." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сағат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сағат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "тәулік бойы" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "күн шыққаннан бастап күн батқанға дейін" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "әр күнде" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "мейрамдар" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "мектеп демалысы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ашық емес" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "сымды" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "терминал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "қызмет" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Дәлдігі: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Белгісіз" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Дәл" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s сағ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s сағ %s мин" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s миля" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s фут" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Бұл плагині соңғы келуді қолдамайды" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "%s көмегімен жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s жерінде солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s жерінде сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s жерінде сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s жерінде оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s жерінде оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s жерінде оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Сақиналы қиылыстан %s шығысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Сақиналы қиылыстан %s үшін шығысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Сақиналы қиылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Лифтті қолданып, %s жерінен шығу" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Лифтті қолдану" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s үшін сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s үшін оң жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Оң жақ кері бұрылысын қолдану" + +#~ msgid "Primary menu" +#~ msgstr "Басты мәзір" + +#~ msgid "Don’t have an account?" +#~ msgstr "Тіркелгіңіз жоқ па?" + +#~ msgid "%f h" +#~ msgstr "%f сағ" + +#~ msgid "%f min" +#~ msgstr "%f мин" + +#~ msgid "%f s" +#~ msgstr "%f с" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Басқа қолданбамен ашу" + +#~ msgid "Press enter to search" +#~ msgstr "Іздеу үшін enter басыңыз" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Бағдарды іздеу OpenTripPlanner ұсынады" + +#~ msgid "Add destination" +#~ msgstr "Мақсатты қосу" + +#~ msgid "Quit" +#~ msgstr "Шығу" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Қабатты (shape) ашу…" + +#~ msgid "OK" +#~ msgstr "ОК" + +#~ msgid "Load Map Layer" +#~ msgstr "Карта қабатын жүктеу" + +#~ msgid "Open Layer" +#~ msgstr "Қабатты ашу" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миля" + +#~ msgid "%f ft" +#~ msgstr "%f фут" + +#~ msgid "Position not found" +#~ msgstr "Орны табылмады" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON файлын талдау қатемен аяқталды" + +#~ msgid "Country code: %s" +#~ msgstr "Ел коды: %s" + +#~ msgid "Population: %s" +#~ msgstr "Халық саны: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Мүгедектер арбасымен қатынау: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Соңғы белгілі орналасу және дәлдігі" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Соңғы белгілі орналасу (ендігі және бойлығы, градуспен) және дәлдігі " +#~ "(метрмен)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Пайдаланушының соңғы белгілі орналасудың сипаттамасы." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Соңғы белгілі орналасуды пайдаланушы қолмен көрсеткен ба, соны анықтайды." + +#~ msgid "I’m here!" +#~ msgstr "Мен осындамын!" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 00000000..513961bb --- /dev/null +++ b/po/kn.po @@ -0,0 +1,172 @@ +# Kannada translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# prabodhcp , 2013 +# Shankar Prasad , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-18 20:54+0000\n" +"PO-Revision-Date: 2013-12-30 17:35+0630\n" +"Last-Translator: Shankar Prasad \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "ಮ್ಯಾಪ್ಸ್" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ಒಂದು ಸರಳ ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "ನಕ್ಷೆಗಳು;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "ಕಿಟಕಿ ಗಾತ್ರ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "ಕಿಟಕಿಯ ಗಾತ್ರ (ಉದ್ದ ಮತ್ತು ಅಗಲ)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (x and y)." +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ (x ಮತ್ತು y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximized state" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Last known location was set manually by user." +msgstr "" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "ಕುರಿತು" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "ನಿರ್ಗಮಿಸು" + +#: ../src/context-menu.ui.h:1 +msgid "What's here?" +msgstr "ಇಲ್ಲೇನಿದೆ?" + +#: ../src/context-menu.ui.h:2 +msgid "I'm here!" +msgstr "ನಾನಿಲ್ಲಿದ್ದೇನೆ!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "prabodhcp , ಶಂಕರ್ ಪ್ರಸಾದ್ " + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME ಗಾಗಿ ಒಂದು ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "ರಸ್ತೆ" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ಉಪಗ್ರಹ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "ಗೊತ್ತಿರದ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "ನಿಖರ" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#: ../src/userLocation.js:62 +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"ಸ್ಥಾನ ನಿಖರತೆ: %s" + diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..965872e1 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,1949 @@ +# Korean translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Seong-ho Cho , 2013-2019. +# Kwangseob Jeong , 2018. +# Jeeyong Um , 2019-2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-08 22:09+0900\n" +"Last-Translator: Jeeyong Um \n" +"Language-Team: GNOME Korea \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "그놈 지도" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "전세계의 장소를 찾아봅니다" + +# NOTE: false alarm +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"지도로 전 세계 모든 지도에 빠르게 접근할 수 있습니다. 도시, 거리, 친구를 만" +"날 여러분이 찾는 장소를 빠르게 찾을 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"지도는 전세계 수많은 사람이 함께 만든 OpenStreenMap 데이터베이스를 사용합니" +"다." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"“보스턴 번화가 근처의 술집” 또는 “베를린 알렉산더플라츠 근처의 호텔”과 같은 " +"지정된 형식의 위치도 검색할 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "그놈 프로젝트" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "지도" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "간단한 지도 프로그램" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;지도;맵;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "사용자 위치를 지도에 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "최근 본 위치" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "최근 살펴본 위치의 좌표." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "확대" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "확대 수준" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "지도 형식" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "지도 표시 형식(거리, 항공 등)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "창 크기" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "창 크기(너비 및 높이)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "창 위치" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "창 위치(가로 및 세로)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "창 최대화" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "창 최대화 상태" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "최대 검색 결과 수" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "지오코드 검색 결과의 최대 결과 갯수." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "최근 위치를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "최근 방문할 위치를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "최근 경로를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "최근 방문 경로를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "페이스북 체크인 개인 정보 설정" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"최근 사용한 페이스북 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "포스퀘어 체크인 개인 정보 설정" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"최근에 사용한 포스퀘어 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: 공개, 팔로워, 비공개." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "페이스북에 포스퀘어 체크인 게시글 보내기" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 페이스북 계정으로 체크인 게시글을 올릴 경우 표시합니" +"다." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "트위터 포스퀘어 체크인 트윗 보내기" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 트위터 계정으로 체크인 트윗을 올릴 경우 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 사용자 이름 및 전자메일 주소" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"사용자가 OpenStreetMap 데이터를 편집하려고 접속했는지 여부를 나타냅니다." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "최근 확인한 경로 안내 대중교통" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "야간 모드" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "프로그램이 야간 모드 상태인지 여부." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "하이브리드 항공 타일 사용" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "항공 타일에서 (레이블이 포함된) 하이브리드 스타일 사용 여부." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "공개 범위" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "페이스북에 게시" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "트위터에 게시" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "취소(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "체크인(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "전체 공개" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "친구의 친구" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "친구만 보기" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "나만 보기" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "공개" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "팔로워" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "비공개" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "여기서부터 경로 표시" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "경유지 추가" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "여기까지 경로 표시" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "여기가 어딘가요?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "위치 복사" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "내보내기 보기" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "내보내기(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "경로 및 표시 포함" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "지도 형식을 선택하세요" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "축소" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "확대" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "경로 계획 도우미 토글" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "즐겨찾기 토글" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "일반" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "바로 가기 표시" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "검색" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "경로 계획 도우미 전환" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "끝내기" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "지도 보기" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "확대" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "축소" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "축척 바꾸기" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "거리 보기로 전환" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "공중 보기로 전환" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "도형 레이어 열기" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "레이블 보기" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "도형 레이어 열기…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "위치 정보 서비스에서 현재 위치 정보를 찾도록 켜기" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "취소" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "위치 정보 설정" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "야간 모드" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap 계정 설정" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "이미지로 내보내기" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "키보드 바로 가기 키(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "지도 정보" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "맵은 오프라인 상태입니다!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"지도가 제대로 동작하려면 인터넷에 연결해야하지만, 연결을 찾을 수 없습니다." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "연결 및 프록시 설정을 확인하십시오." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "새 경로에 추가" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "위치 공유" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "즐겨찾기 표시" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "이곳을 체크인" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 계정" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"지도를 편집하려면 접속하십시오" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap 계정으로\n" +"지도 개선을 도와주십시오." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "전자메일" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "암호" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "가입" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "접속" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"죄송하지만 동작하지 않습니다. 다시 시도하시거나\n" +"OpenStreetMap을 방문하여 암호를 다시 설정하십시오." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "인증 코드가 일치하지 않습니다. 다시 시도하십시오." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "아래에 나타난 인증 코드를 입력하십시오" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "검증" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "접속함" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap 계정을 활성화했습니다." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "나가기" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "거리" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "지번" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "우편 번호" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "도시" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "형식" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "없음" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "필드 추가" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "설명" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"OpenStreetMap 데이터를 활용하는 모든 지도에\n" +"바뀐 지도가 나타납니다." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "최근 사용" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "다음" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "더 많은 정보 표시" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "결과가 없습니다" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "경로를 바꾸려면 끌어다놓으십시오" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "위치 열기" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "복사" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "보내기…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "도형 레이어 열기" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "열기(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "보기 상태 전환" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "그래프 하퍼 경로 검색" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"제 3자 서비스에서 제공하는 대중 교통 운행 일정입니다.\n" +"그놈에서는 운행 경로와 일정의 정확성을 보증할 수 없습니다.\n" +"서비스 제공자에 따라 이용 가능한 모든 교통 수단을 제공하는 것은 아님에\n" +"주의해주세요. 예를 들어 전국 단위 제공자는 항공편을 제공하지 않는다거나\n" +"지역 제공자가 지방 열차편 정보를 제공하지 않을 수 있습니다.\n" +"명칭과 브랜드는 상표법 적용이 가능할 경우 등록 상표로 간주합니다." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "더 많은 결과 보기" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "중간 정류장 및 정보 숨김" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "중간 정류장 및 정보 표시" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "지금 출발" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "출발 수단" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "도착 수단" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "보이기" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "버스" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "트램" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "열차" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "지하철" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "선박" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "비행기" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "현재 위치" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "추가할 위치를 확대합니다!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "확대" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "디렉터리에서 타일 구조 찾기에 실패했습니다" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML 문서 해석에 실패했습니다" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "필요한 속성이 빠졌습니다" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM 구성 요소를 찾을 수 없습니다" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "로컬 타일 디렉터리 구조 경로" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "로컬 타일 디렉터리의 타일 크기" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "프로그램 버전 보기" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "네트워크 사용 가능 여부 무시" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[<파일>…|]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "계정을 선택하십시오" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "불러오는 중" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "장소를 선택하십시오" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"페이스북에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"포스퀘어에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s에 체크인" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s에 체크인할 추가 메시지를 작성합니다." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "오류가 발생했습니다" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "소셜 서비스에서 “%s”을(를) 찾을 수 없습니다" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "이 위치를 체크인할 적당한 장소를 찾을 수 없습니다" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"인증 기한이 지났습니다. 온라인 계정을 열어 접속한 후 이 계정을 활성화하십시오" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "여기에 아무것도 없습니다!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"지도에 위치를 추가했습니다. 지도와 검색 결과에 나타나기까지 시간이 조금 걸릴 " +"수 있는 점을 참고하십시오." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f의 지도.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "읽기 전용 파일 시스템입니다" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "해당 위치를 저장할 권한이 없습니다" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "디렉터리가 없습니다" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "파일 이름을 지정하지 않았습니다" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "보기 화면을 내보낼 수 없습니다" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "잘못된 좌표" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "해석 오류" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "알 수 없는 지형 정보" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "경로 요청에 실패했습니다." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "경로가 없습니다." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "시작!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "모든 레이어 파일" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "위치 서비스 연결에 실패했습니다" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"조성호 \n" +"정광섭 \n" +"엄지용 " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "그놈용 지도 프로그램" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s와(과) 기여자의 지도 데이터" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "%s에서 제공한 지도 타일" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s에서 %s을(를) 활용한 검색 기능 제공함" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "파일 형식을 지원하지 않습니다" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "레이어 열기에 실패했습니다" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "GeoURI 열기에 실패했습니다" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "사용자 이름 또는 암호가 올바르지 않습니다" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "성공" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "잘못된 요청" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "객체가 없습니다" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "누군가가 객체를 수정하여 바꾼 동작이 중복됐습니다" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "객체를 삭제했습니다" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "길 또는 관계는 '없는 하위 구성 요소'를 참조합니다" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "이름" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "공식 이름입니다. 보통 이정표에 나타납니다." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "주소" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "웹사이트" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"공식 웹사이트입니다. http://example.com/index.html 대신 http://example.com과 " +"같은 식의 기본 URL 형식을 활용하십시오." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "전화번호" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"전화번호입니다. + 기호로 시작하는 국제 전화번호 형식을 사용하십시오. 개인 전" +"화번호를 입력할 때 해당 국가의 개인 정보 보호법을 따르십시오." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "위키피디아" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"사용하는 형식에는 “ko:게시글 제목”처럼 언어 코드 및 게시글 제목을 넣어야합니" +"다." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "개장 시간" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "형식 도움말을 보려면 레이블의 링크를 살펴보십시오." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "인구" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "고도" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "미터 단위의 높이(해발고도)입니다." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "휠체어 접근" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "예" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "아니요" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "제한" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "지정됨" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "인터넷 접속" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "무선 네트워크" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "유선" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "터미널" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "서비스" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "종교" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "애니미즘" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "바하이교" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "불교" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "까오다이교" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "크리스트교" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "유교" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "힌두교" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "자이나교" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "유대교" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "이슬람교" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "다신교" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "켈트 파가니즘" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "FSM교" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "사이언톨로지" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "신토(しんとう)" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "시크교" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "심령술" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "도교" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "유니테리안 유니버설리즘" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "부두교" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "야지디교" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "조로아스터교" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "화장실" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "참고" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"요소, 작성자의 작성 의도, 사후 개선을 위한 힌트에 대해 명확하지 않은 정보를 " +"알리려는 용도로 사용하는 정보입니다." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "형식 선택" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "완료" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "이름 없는 장소" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "인구수:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "고도:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "영업 시간:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "인터넷 접속:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "종교시설:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "화장실:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "휠체어 접근:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "전화번호:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "지리 URL 해석에 실패했습니다" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "예" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "제한함" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "아니요" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "지정됨" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap에 해당 위치가 없습니다" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL이 올바르지 않습니다" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL 좌표가 올바르지 않습니다" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL을 지원하지 않습니다" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s에서 %s까지" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "인쇄할 바둑판 배치 지도 불러오는 중" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "인쇄 시간이 오래걸린다면 취소할 수 있습니다" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "인쇄 취소" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "현재 위치 추가" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "현재 위치 제거" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "역경로" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s을(를) %s에 추가" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI 열기에 실패했습니다" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s 프로그램으로 열기" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "파일 불러오기에 실패했습니다" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "예상 시간: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s에서 제공한 일정" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s에 시작" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "시작" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s 걷기" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s에 도착" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "도" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "도보 안내 표시" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "도보 안내 숨김" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "이른 대안 수단 불러오기" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "다음 대안 수단 불러오기" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "이른 대안 수단이 없습니다." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "다음 대안 수단이 없습니다." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e일" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "이 경로의 시각표 데이터가 없습니다." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "이 경로의 제공자가 없습니다." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s분" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s시간" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s시간" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "하루 종일" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "일출부터 일몰까지" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "매일" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "공휴일" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "방학" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "열지 않음" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s~%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "유선" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "터미널" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "서비스" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "위치 정확도: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "알 수 없음" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "정확함" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s시간" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s시간 %s분" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s분" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s초" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s 킬로미터" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s 미터" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s 마일" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s 피트" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "이 플러그인은 최근 도착 시간을 지원하지 않습니다" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "%s에서 계속 진행" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "계속 진행" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s에서 좌회전" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "좌회전" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s에서 살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s에서 크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s에서 우회전" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "우회전" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s에서 살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s에서 크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "로터리에서 %s 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "로터리에서 %s 쪽 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "로터리로 진입" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "엘리베이터 탑승 후 %s에서 내림" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "엘리베이터 탑승" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 쪽으로 왼쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "왼쪽으로 유턴" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 쪽으로 오른쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "오른쪽으로 유턴" + +#~ msgid "Don’t have an account?" +#~ msgstr "계정이 없습니까?" + +#~ msgid "%f h" +#~ msgstr "%f시간" + +#~ msgid "%f min" +#~ msgstr "%f분" + +#~ msgid "%f s" +#~ msgstr "%f초" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner 경로 검색" + +#~ msgid "Add destination" +#~ msgstr "목적지 추가" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "다른 프로그램으로 열기" + +#~ msgid "Press enter to search" +#~ msgstr "검색할 단어를 입력하십시오" + +#~ msgid "Quit" +#~ msgstr "끝내기" + +#~ msgid "Open Shape Layer…" +#~ msgstr "도형 레이어 열기…" + +#~ msgid "OK" +#~ msgstr "확인" + +#~ msgid "Load Map Layer" +#~ msgstr "맵 레이어 불러오기" + +#~ msgid "Open Layer" +#~ msgstr "레이어 열기" + +#~ msgid "%f km" +#~ msgstr "%f킬로미터" + +#~ msgid "%f m" +#~ msgstr "%f미터" + +#~ msgid "%f mi" +#~ msgstr "%f마일" + +#~ msgid "%f ft" +#~ msgstr "%f피트" + +#~ msgid "Country code: %s" +#~ msgstr "국가 기호: %s" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 00000000..c8f1cede --- /dev/null +++ b/po/lt.po @@ -0,0 +1,1993 @@ +# Lithuanian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Aurimas Černius , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-25 22:46+0300\n" +"Last-Translator: Aurimas Černius \n" +"Language-Team: Lietuvių \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Gtranslator 3.36.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME žemėlapiai" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Rasti vietas aplink pasaulį" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Žemėlapiai leidžia jums lengvai pasiekti pasaulio žemėlapius. Ši programa " +"leidžia greitai rasti ieškomą vietą naudojant paiešką pagal miestą ar gatvę " +"bei rasti vietą susitikimui su draugu." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Žemėlapiai naudoja OpenStreetMap duomenų bazę, kurią sukūrė tūkstančiai " +"žmonių iš viso pasaulio." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Taip pat galite ieškoti specifinių vietų, tokių kaip „Barai šalia Gedimino " +"prospekto, Vilnius“ arba „Viešbučiai šalia Basanavičiaus gatvės, Palanga“." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME projektas" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Žemėlapiai" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Paprasta žemėlapių programa" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Žemėlapiai;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leidžia parodyti žemėlapyje jūsų vietą." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "paskutinė žiūrėta vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Paskutinės žiūrėtos vietos koordinatės." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mastelis" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mastelis" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Žemėlapio tipas" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Rodomas žemėlapio tipas (gatvių, oro, ir t. t.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Lango dydis" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Lango dydis (plotis ir aukštis)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Lango padėtis" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Lango padėtis (X ir Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Langas išdidintas" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Lango išdidinimo būsena" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Didžiausias paieškos rezultatų skaičius" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Didžiausias paieškos rezultatų skaičius iš geocode paieškos." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Įrašomas paskutinių vietų skaičius" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Įrašomas paskutinių aplankytų vietų skaičius." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Paskutinių įrašomų maršrutų skaičius" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Įrašomas paskutinių aplankytų maršrutų skaičius." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Siuntimo į Facebook privatumo nustatymas" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paskutinis naudotas siuntimo į Facebook privatumo nustatymas. Galimos vertės " +"yra EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS arba SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Siuntimo į Foursquare privatumo nustatymas" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paskutinis naudotas siuntimo į Foursquare nustatymas. Galimo vertės yra " +"public, followers arba private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siuntimo į Foursquare pranešimas į Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Facebook paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Twitter paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap naudotojo vardas arba el. pašto adresas" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Nurodo ar naudotojas prisijungė OpenStreetMap duomenų redagavimui." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Paskutinis transporto tipas, naudotas keliui" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nakties veiksena" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Ar programa yra naktinėje veiksenoje." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Naudoti hibridines oro plyteles" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Ar oro plytelės turėtų naudoti hibridinį stilių (su užrašais)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Matomumas" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Pranešti Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Pranešti Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Atsisakyti" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Nusiųsti" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Visiems" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugų draugams" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tik draugams" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tik man" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Viešas" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekėjams" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privatus" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršrutas iš čia" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridėti tarpinę stotelę" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršrutas į čia" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ten?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopijuoti vietą" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridėti prie OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportuoti rodinį" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportuoti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Įtraukti maršrutą ir žymes" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Pasirinkite žemėlapio tipą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Mažinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Didinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Perjungti mėgiamiausius" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Bendra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rodyti trumpinius" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ieškoti" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Išeiti" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Žemėlapio rodinys" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Didinti" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Mažinti" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Perjungti skalę" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Perjungti į gatvės vaizdą" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Perjungti į vaizdą iš oro" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rodyti užrašus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atverti formos sluoksnį…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Savo vietai surasti įjunkite vietos tarnybas" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atsisakyti" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Vietos nustatymai" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakties veiksena" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nusistatyti OpenStreetMap paskyrą" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportuoti kaip paveikslėlį" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klaviatūros trumpiniai" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Apie žemėlapius" + +#: data/ui/main-window.ui:56 +#| msgctxt "shortcut window" +#| msgid "Open main menu" +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/main-window.ui:81 +#| msgid "Print Route" +msgid "Find a Route" +msgstr "Rasti kelią" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Žemėlapiai atsijungę nuo interneto!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Žemėlapių tvarkingam veikimui reikia aktyvaus interneto ryšio, bet tokio " +"nėra." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Patikrinkite savo prisijungimo ir tarpinio serverio nustatymus." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pridėti naują maršrutą" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dalintis vieta" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Pažymėti kaip mėgiamą" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Patikrinkite čia" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap paskyra" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prisijunkite, kad redaguotumėte " +"žemėlapius" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Padėkite tobulinti žemėlapį, naudodami\n" +"OpenStreetMap paskyrą." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "El. paštas" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Slaptažodis" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Prisiregistruoti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prisijungti" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Atleiskite, tai nesuveikė. Prašome bandyti dar kartą arba apsilankyti\n" +"OpenStreetMap, kad atstatytumėte savo slaptažodį." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Patvirtinimo kodas neatitiko, prašome bandyti dar kartą." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Įveskite aukščiau parodytą patvirtinimo kodą" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Patvirtinti" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prisijungę" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsų OpenStreetMap paskyra yra aktyvi." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Atsijungti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gatvė" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Namo numeris" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pašto kodas" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miestas" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipas" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nėra" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridėti lauką" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentaras" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Žemėlapio pakeitimai bus matomi visuose žemėlapiuose,\n" +"kuriuose naudojami OpenStreetMap duomenys." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Neseniai naudoti" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Kitas" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Rodyti daugiau informacijos" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nerasta rezultatų" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Tempkite kelio eilės tvarkai keisti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atverti vietą" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopijuoti" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Siųsti…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atverti" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Perjungti matomus" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Maršruto paieška naudojant GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Viešojo transporto maršrutai yra pateikiami trečiųjų šalių tarnybų.\n" +"GNOME negali garantuoti rodomų tvarkaraščių teisingumo.\n" +"Pastebėtinas, kad kai kurie teikėjai gali neteikti visų transporto rūšių,\n" +"pvz. nacionalinis teikėjas gali neteikti oro linijų, o vietiniam gali " +"trūkti\n" +"regioninių traukinių.\n" +"Pavadinimai ir prekės ženklai yra laikomi registruotais prekyženkliais, kai " +"taikoma." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rodyti daugiau rezultatų" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slėpti tarpines stoteles ir informaciją" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rodyti tarpines stoteles ir informaciją" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Išvykti dabar" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Išvykti" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atvykti" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rodyti" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusai" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvajai" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Traukiniai" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Keltai" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lėktuvai" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Dabartinė vieta" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Pritraukti vietos pridėjimui!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Padidinti" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nepavyko kataloge rasti koklių struktūros" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nepavyko perskaityti XML dokumento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkta reikiamų požymių" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepavyko rasti OSM elemento" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Kelias iki vietinės koklių katalogo struktūros" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Plytelės dydis vietiniam plytelių aplankui" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Rodyti programos versiją" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Nepaisyti tinklo prieinamumo" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FAILAS…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pasirinkite paskyrą" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Įkeliama" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pasirinkite vietą" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Facebook. Pasirinkitę ją iš " +"sąrašo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Foursquare. Pasirinkite ją iš " +"sąrašo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Nusiųsti į %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Parašykite pranešimą nusiuntimui į %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Kilo klaida" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nepavyko rasti „%s“ socialinėje tarnyboje" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nepavyko rasti tinkamos vietos šios vietos nusiuntimui" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Įgaliojimai pasibaigė, atverkite internetines paskyra prisijungimui ir " +"paskyros atnaujinimui" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Čia nieko nerasta!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vieta pridėta prie žemėlapio, pastebėsime, kad gali užtrukti, kol ji taps " +"matoma žemėlapyje bei paieškoje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Žemėlapiai ties %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Failų sistema yra tik skaitymui" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jūs neturite leidimo ten įrašyti" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogo nėra" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenurodytas failo pavadinimas" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nepavyko eksportuoti rodinio" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neteisinga koordinatė" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "perskaitymo klaida" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nežinoma geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Nepavyko užklausti maršruto." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Maršrutas nerastas." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Pradėti!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Visi sluoksnių failai" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Nepavyko prisijungti prie vietos tarnybos" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Išvertė:\n" +"Aurimas Černius " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Žemėlapių programa GNOME aplinkai" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorių teisės priklauso © 2011 – 2019 Red Hat, Inc. ir GNOME Žemėlapių " +"autoriams" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Žemėlapio duomenys pagal %s ir talkininkus" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Žemėlapio išklotinę pateikė %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Paiešką teikia %s naudojant %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Failo tipas yra nepalaikomas" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Nepavyko atverti sluoksnio" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Nepavyko atverti GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Pavyko" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bloga užklausa" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektas nerastas" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktas, kažkas ką tik modifikavo objektą" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektas buvo ištrintas" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Kelias ar santykis nurodo į nesantį kūrinį" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Pavadinimas" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficialus pavadinimas. Jis dažniausiai matomas ženkluose." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresas" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tinklalapis" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficialus tinklalapis. Bandykite paprasčiausią URL formą, pvz. http://" +"pavyzdys.lt vietoj http://pavyzdys.lt/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefonas" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefono numeris. Naudokite tarptautinį formatą, prasidedantį + simboliu. " +"Atsižvelkite į vietinius privatumo įstatymus, ypač dės asmeninių telefono " +"numerių." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Naudojamas formatas turi įtraukti kalbos kodą bei straipsnio pavadinimą, " +"pvz. „lt:Straipsnio pavadinimas“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Darbo laikas" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Informaciją apie formatą gausite paspaudę saitą apačioje." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Gyventojų skaičius" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Aukštis" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Absoliutus aukšti (virš jūros lygio) metrais." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Taip" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ribota" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Su paskirtimi" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interneto prieiga" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Laidinis" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalas" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tarnyba" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizmas" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizmas" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizmas" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Krikščionybė" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucionizmas" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Induizmas" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizmas" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judėjizmas" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamas" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Daug religijų" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pagonybė" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizmas" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Sientologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sichizmas" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizmas" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizmas" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarinis universalizmas" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jazidizmas" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmas" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tualetai" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Pastaba" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacija, naudojama kitiems žemėlapių naudotojams informuoti apie " +"neakivaizdžią informaciją, susijusią su elementu, autoriaus tikslą jį " +"kuriant arba patarimus tolimesniam patobulinimui." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridėti į OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pasirinkite tipą" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Atlikta" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nepavadinta vieta" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Gyventojų skaičius:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Aukštis:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Darbo laikas:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interneto prieiga:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tualetai:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Prieiga neįgaliųjų vežimėliais:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefonas:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Nepavyko perskaityti Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "taip" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ribota" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "su paskirtimi" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nerasta OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL yra netinkamas" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatės URL yra netinkamos" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL yra nepalaikomas" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Nuo %s iki %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Įkeliami žemėlapio kokliai spausdinimui" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Galite atšaukti spausdinimą, jei tai per ilgai užtrunka" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Atšaukti spausdinimą" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridėti per vietą" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Šalinti per vietą" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Atgalinis maršrutas" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridėti %s į %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Nepavyko atverti URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Atverti su %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nepavyko įkelti failo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Įvertintas laikas: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Teikėjus pateikė %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Pradėkite ties %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pradėkite" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Nueikite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Atvykti ties %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Atvykti" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rodyti ėjimo nurodymus" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slėpti ėjimo nurodymus" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Įkelti ankstesnes alternatyvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Įkelti vėlesnes alternatyvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nerasta ankstesnių alternatyvų." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nerasta vėlesnių alternatyvų." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Šiam maršrutui nerasta tvarkaraščio duomenų." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Šiam maršrutui nerasta teikėjo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutė" +msgstr[1] "%s minutės" +msgstr[2] "%s minučių" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s valanda" +msgstr[1] "%s valandos" +msgstr[2] "%s valandų" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s valanda" +msgstr[1] "%s:%s valandos" +msgstr[2] "%s:%s valandų" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "visą parą" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "nuo saulėtekio iki saulėlydžio" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "kasdien" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "nedarbo dienomis" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "mokslo dienomis" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "uždaryta" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "laidinis" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalas" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tarnyba" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tikslumas: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nežinomas" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tikslus" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s min" +#| msgid_plural "%s mins" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mylios" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s pėdos" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis įskiepis nepalaiko vėliausio atvykimo laiko" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Tęsti %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Tęsti" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sukti kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Sukti kairėn" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sukti kairiau ties %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Sukti kairiau" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Staigiai sukti į kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Staigiai sukti į kairėn" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sukti dešiniau ties %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Sukti dešiniau" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Staigiai sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Staigiai sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Žiede pasirinkite %s išvažiavimą" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Žiede pasirinkite išvažiavimą į %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Įvažiuokite į žiedą" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Liftu pasikelkite į %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Kilkite liftu" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Apsisukite į %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Apsisukite" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Apsisukite į dešinę į %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Apsisukite į dešinę" + +#~ msgid "Primary menu" +#~ msgstr "Pirminis meniu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Neturite paskyros?" + +#~ msgid "%f h" +#~ msgstr "%f val" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Maršruto paieška naudojant OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Pridėti paskirties vietą" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atverti su kita programa" + +#~ msgid "Press enter to search" +#~ msgstr "Spauskite enter paieškai" + +#~ msgid "Quit" +#~ msgstr "Išeiti" + +#~ msgid "OK" +#~ msgstr "Gerai" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Atverti formos sluoksnį…" + +#~ msgid "Load Map Layer" +#~ msgstr "Įkelti žemėlapio sluoksnį" + +#~ msgid "Open Layer" +#~ msgstr "Atverti sluoksnį" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pėdos" + +#~ msgid "Position not found" +#~ msgstr "Nerasta padėtis" + +#~ msgid "Country code: %s" +#~ msgstr "Šalies kodas: %s" + +#~ msgid "Population: %s" +#~ msgstr "Gyventojų skaičius: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nepavyko perskaityti GeoJSON failo" + +#~ msgid "_Share" +#~ msgstr "_Viešinti" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 00000000..9feeb122 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,1985 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Rūdolfs Mazurs , 2013, 2014, 2016, 2017, 2018, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-12 22:46+0300\n" +"Last-Translator: Rūdolfs Mazurs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :" +" 2);\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kartes" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Atrodi vietas visā pasaulē" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartes dod iespēju ātri piekļūt kartēm visā pasaulē. Tās ļauj ātri atrast " +"kādu vietu, meklējot pilsētu vai ielu, vai atrast vietu, kur sastapt draugus." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartes izmanto kolektīvi veidoto OpenStreetMap datubāzi, ko veidojuši " +"tūkstošiem cilvēku visā pasaulē." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Varat pat meklēt noteikta veida vietas, piemēram “Krogi pie gaismas ielas”, " +"vai “Autostāvvieta Ādaži”" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME projekts" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Kartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Vienkārša karšu lietotnes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ļauj uz kartes parādīt jūsu atrašanās vietu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "pēdējā skatītā vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Pēdējās apskatītās vietas koordinātas" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mērogs" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mērogs" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartes veids" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Kartes veids, ko attēlot (ielu, aerofoto utt.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Loga izmērs" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Loga izmērs (platums un augstums)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Loga novietojums" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Loga novietojums (X un Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Logs maksimizēts" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Loga maksimizācijas stāvoklis" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimālais meklēšanas rezultātu skaits" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimālais meklēšanas rezultātu skaits no geocode meklējuma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saglabājamo neseno vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saglabājamo nesen apmeklēto vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saglabājamo neseno maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saglabājamo nesen apmeklēto maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook vietas reģistrēšanas privātuma iestatījumi" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pēdējie izmantotie Facebook vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare vietas reģistrēšanas privātuma iestatījumi" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pēdējie izmantotie Foursquare vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: public, followers vai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare vietas reģistrēšanas Facebook apziņošana" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Facebook kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare vietas reģistrēšanas Twitter apziņošana" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Twitter kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap lietotājvārds vai e-pasta adrese" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Norāda, vai lietotājs ir ierakstījies, lai rediģētu OpenStreetMap datus." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Pēdējais izmantotais transportēšanas tips maršrutēšanai" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nakts režīms" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Vai lietotne ir nakts režīmā." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Izmantot hibrīda aerofoto flīzes" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Vai aerofoto flīzēm jāizmanto hibrīda stils (ar apzīmējumiem)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Redzamība" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Veidot Facebook ziņojumu" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Veidot Twitter ziņojumu" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "At_celt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Reģistrēt vietu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ikviens" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugu draugi" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tikai draugi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tikai es" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publisks" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekotāji" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privāts" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršruts no šejienes" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Pievienot starp-galamērķi" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršruts uz šejieni" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ir šeit?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopēt atrašanās vietu" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportēt skatu" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportēt" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Iekļaut maršrutu un marķierus" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Izvēlieties kartes veidu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Tālināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Tuvināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Pārslēgt izlasi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Vispārīgi" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rādīt saīsnes" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Meklēt" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Iziet" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartes skats" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Tuvināt" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Tālināt" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Pārslēgt mērogu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Pārslēgties uz ielas skatu" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Pārslēgties uz aerofoto skatu" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atvērt formu slāni" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rādīt apzīmējumus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atvērt formu slāni…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Ieslēgt vietas noteikšanas pakalpojumu, lai atrastu savu atrašanās vietu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atcelt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Atrašanās vietas iestatījumi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakts režīms" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Izveidot OpenStreetMap kontu" + +#: data/ui/main-window.ui:16 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Eksportēt kā attēlu" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatūras īsinājumtaustiņi" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "P_ar kartēm" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartes ir nesaistē!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Lai varētu strādāt, Kartēm vajag aktīvu savienojumu ar internetu, bet tādu " +"nevar atrast." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Pārbaudiet savu savienojumu un starpnieka iestatījumus." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pievienot jaunu maršrutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Koplietot vietu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Pievienot izlasei" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Reģistrēt šo vietu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap konts" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ierakstieties, lai rediģētu kartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Palīdziet uzlabot karti, izmantojot\n" +"OpenStreetMap kontu." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pasts" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parole" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Ierakstīties" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Ierakstīties" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz vai apmeklējiet\n" +"OpenStreetMap, lai pārstatītu savu paroli." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifikācijas kodi nesakrīt. Lūdzu, mēģiniet vēlreiz." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Ievadiet verifikācijas kodu, kas redzams augšā" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificēt" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ierakstījies" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsu OpenStreetMap konts ir aktīvs." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Izrakstīties" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Iela" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Mājas numurs" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pasta indekss" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Pilsēta" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tips" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nav" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pievienot lauku" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentārs" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmaiņas kartē būs redzmas visās kartēs, kas izmanto\n" +"OpenStreetMap datus." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nesen lietotie" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Nākamais" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Rādīt vairāk informācijas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nav atrastu rezultātu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Velciet, lai mainītu maršruta secību" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atvērt vietu" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopēt" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sūtīt uz…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Atvērt formu slāni" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atvērt" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Pārslēgt redzamību" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper maršruta meklēšana" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Sabiedriskā transporta maršrutus nodrošina trešo pušu pakalpojumus.\n" +"GNOME nevar garantēt attēloto maršrutu un sarakstu pareizību.\n" +"Ņemiet vērā, ka daži pakalpojumu sniedzēji neiekļauj visus pieejamos" +" transporta veidus, piemēram, nacionālais pakalpojumu sniedzējs neiekļauj" +" avio satiksmi un lokālais pakalpojumu sniedzējs varētu neiekļaut reģionālos" +" vilcienus.\n" +"Attēlotie nosaukumi un zīmoli tiek uzskatīti par preču zīmēm, ja attiecināms." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rādīt vairāk rezultātu" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slēpt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rādīt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Doties tagad" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Doties līdz" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atbraukt līdz" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rādīt" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vilcieni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Prāmji" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lidmašīnas" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Pašreizējā atrašanās vieta" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Tuviniet, lai pievienotu atrašanās vietu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Tuvināt" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Direktorijā nevarēja atrast flīžu struktūru" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neizdevās parsēt XML dokumentu" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkst nepieciešamo atribūtu" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nevarēja atrast OSM elementu" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Ceļš uz lokālo flīžu direktorijas struktūru" + +#: src/application.js:101 +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Flīzes izmērs lokālo flīžu direktorijai" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Rādīt programmas versiju" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignorēt tīkla pieejamību" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[DATNE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izvēlēties kontu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ielādē" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izvēlieties vietu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Facebook. Lūdzu, izvēlieties " +"vienu no saraksta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Foursquare. Lūdzu, izvēlieties " +"vienu no saraksta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Reģistrēties %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ja vēlaties, reģistrējoties %s, ierakstiet ziņojumu." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Gadījās kļūda" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nevar atrast “%s” sociālajā pakalpojumā" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nevar atrast piemērotu vietu, kur ierakstīties šajā apkārtnē" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Pilnvaras termiņš ir beidzies, atveriet tiešsaistes kontus, lai ierakstītos " +"un ieslēgtu šo kontu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Šeit nekas nav atrasts!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Atrašanās vieta tika pievienota kartei. Ņemiet vērā, ka varētu paiet kāds " +"laiks, pirms izmaiņas parādās kartē un meklēšanas rezultātos." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartes pie %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datņu sistēma ir tikai lasāma" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jums nav tiesību tur saglabāt" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorija nepastāv" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nav norādīts datnes nosaukums" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nevar eksportēt skatu" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nederīga koordināta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parsēšanas kļūda" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nezināma ģeometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Maršruta pieprasījums neizdevās." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nav atrastu maršrutu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Sākt!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Visu slāņu datnes" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Neizdevās savienoties ar pozīcijas noteikšanas pakalpojumu" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "Rūdolfs Mazurs " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "GNOME karšu lietotne" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autortiesības © 2011 – 2019 Red Hat, Inc. un GNOME “Kartes” autori" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartes datus nodrošina %s un atbalstītāji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karšu fragmentus nodrošina %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Meklēšanu nodrošina %s izmanto %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Datnes tips nav atbalstīts" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Neizdevās atvērt slāni" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Neizdevās atvērt GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Veiksmīgi" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nederīgs pieprasījums" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekts nav atrasts" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikts, kāds cits tikko modificēja objektu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekts tika izdzēsts" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ceļš vai relācija norāda uz neeksistējošu bērnu" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Nosaukums" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiālais nosaukums. Tas parasti ir redzams uz zīmēm." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Adrese" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Tīmekļa vietne" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiālā tīmekļa vietne. Mēģiniet izmantot pamata URL, tas ir, http://" +"example.com, nevis http://example.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Tālrunis" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Tālruņa numurs. Izmantojiet starptautisko formātu, sākot ar + zīmi. Ņemiet " +"vērā lokālos privātuma likumus, sevišķi privātiem tālruņu numuriem." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formātam vajadzētu iekļaut valodas kodu un raksta virsrakstu, piemēram “lv:" +"Raksta virsraksts”" + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Darba laiks" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Skatiet saiti apzīmējumā, lai saņemtu palīdzību par formātu." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Iedzīvotāju skaits" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Augstums" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Punkta augstums (virs jūras līmeņa) metros." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Piekļuve ar ratiņkrēsliem" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Jā" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Nē" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Ierobežots" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Nozīmēts" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Pieeja internetam" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Vadu" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminālis" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Serviss" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Reliģija" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animisms" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahāisms" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisms" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaisms" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Kristietība" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfūcisms" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisms" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Džainisms" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Jūdaisms" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islāms" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Vairākas reliģijas" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Pagānisms" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisms" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Scientoloģija" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoisms" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisms" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spirituālisms" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Daoisms" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitārais universālisms" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Jadīdisms" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisms" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Tualetes" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Piezīme" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informācija, ko izmantot citiem kartētajiem par ne acīmredzamu informāciju " +"par elementu, autora nodomu to veidojot vai norādēm turpmākai uzlabošanai." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Izvēlēties tipu" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Pabeigts" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nenosaukta vieta" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Iedzīvotāju skaits:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Augstums:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Darba laiks:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Pieeja internetam:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Reliģija:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Tualetes:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Piekļuve ar ratiņkrēsliem:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Tālrunis:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Neizdevās parsēt Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jā" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ierobežots" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nē" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "nozīmēts" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nav atrasta OpenStreetMap kartē" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nav derīga" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL koordinātas nav derīgas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nav atbalstīts" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "No %s līdz %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ielādē kartes flīzes drukāšanai" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Jūs varat pārtraukt drukāšanu, ja tas aizņem pārāk daudz laika" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Par drukāšanu" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pievienot “caur vietu”" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Izņemt “caur vietu”" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Apgriezt maršrutu pretēji" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pievienot %s pie %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Neizdevās atvērt URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Atvērt ar %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neizdevās ielādēt datni" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Novērtētais laiks — %s" + +#: src/sidebar.js:414 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Maršrutu nodrošina %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Sākt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Sākums" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Iet %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Pienāk %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Pienāk" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rādīt iešanas norādes" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slēpt iešanas norādes" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ielādēt agrākas alternatīvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ielādēt vēlākas alternatīvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nav atrastu vecāku alternatīvu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nav atrastu jaunāku alternatīvu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Šim maršrutam nav atrastu transporta sarakstu." + +#: src/transitPlan.js:205 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Šim maršrutam nav atrastu nodrošinātāju." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minūte" +msgstr[1] "%s minūtes" +msgstr[2] "%s minūšu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +#| msgid "%d hour" +#| msgid_plural "%d hours" +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s stunda" +msgstr[1] "%s stundas" +msgstr[2] "%s stundu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s stunda" +msgstr[1] "%s:%s stundas" +msgstr[2] "%s:%s stundu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "diennakti" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "no saullēkta līdz saulrietam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "katru dienu" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "brīvdienas" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skolas brīvdienas" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nav atvērts" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "vadu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminālis" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviss" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precizitāte — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nezināms" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Precīzi" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s jūdzes" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s pēdas" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis spraudnis neatbalsta vēlāko ierašanos" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Turpināt uz %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Turpināt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Pagriezt nedaudz pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Pagriezt nedaudz pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Strauji pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Strauji pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Pagriezt pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Pagriezt pa labi" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Pagriezt nedaudz pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Pagriezt nedaudz pa labi" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Asi pagriezti pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Asi pagriezti pa labi" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "No apļa izbrauciet izejā %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "No apļa izbrauciet caur izeju uz %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Iebrauciet aplī" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ņemiet liftu un izbrauciet %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Ņemiet liftu" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nav sava konta?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner maršruta meklēšana" + +#~ msgid "Add destination" +#~ msgstr "Pievienot galamērķi" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atvērt ar citu lietotni" + +#~ msgid "Press enter to search" +#~ msgstr "Spiediet “Enter”, lai meklētu" + +#~ msgid "Quit" +#~ msgstr "Iziet" + +#~ msgid "OK" +#~ msgstr "Labi" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Atvērt formu slāni…" + +#~ msgid "Load Map Layer" +#~ msgstr "Ielādēt kartes slāni" + +#~ msgid "Open Layer" +#~ msgstr "Atvērt slāni" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f jūdzes" + +#~ msgid "%f ft" +#~ msgstr "%f pēdas" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..63ad5f4e --- /dev/null +++ b/po/meson.build @@ -0,0 +1,2 @@ +i18n.gettext(name, preset: 'glib', + args: [ '--keyword=X-Geoclue-Reason' ]) diff --git a/po/mjw.po b/po/mjw.po new file mode 100644 index 00000000..eb6e5569 --- /dev/null +++ b/po/mjw.po @@ -0,0 +1,1653 @@ +# Karbi translation for gnome-maps. +# Copyright (C) 2019 gnome-maps's Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Jor Teron , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-03 19:54+0000\n" +"PO-Revision-Date: 2019-08-04 23:24+0530\n" +"Last-Translator: Jor Teron \n" +"Language-Team: Karbi \n" +"Language: mjw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2 ; plural=( n != 1 );\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "pathe-bi" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X pen Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username mate e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook long Post" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter long Post" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kadokawe" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Jirpo a jirpo" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Jirpo chot" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Ne anchot" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Monit an" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ladak kopi lo do?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Kiri" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Pathe" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pabi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Account selam" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Maps Aputhak" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Pabi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Pathe" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Maps ke offline!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Sign In" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Nangli OpenStreetMap account dambom lo." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ale" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hem phai" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PIN Code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Rongsopi" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dunthu" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kelo dim…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Non kedam lo" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Kedam apor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Kele apor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Paklang" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Hemkonglong" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Telong" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Pathe" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Account chongvai" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Dim chongvai" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Dak ajat ta longle!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "" + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "" + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "" +"Jor Teron \n" +"Biju Rongpi " + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Chunlo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Men" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Kangpu apor" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Armu" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Dhorom" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Barso-barpi-hem" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Amen tokte adim" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Armu:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Kangpu apor:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet do:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Dhorom:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Barso-barpi-hem:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "" + +#: src/placeEntry.js:194 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "%s pen ingpu" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s pen pangcheng" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pangcheng" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Keng-kedam %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kele dim %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Nangkele" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "Porphai %d" +msgstr[1] "Porphai %d" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "Porphai %d:%02d" +msgstr[1] "Porphai %d:%02d" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "arni ketet pen arni chelut an" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "arnivang" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "rat kangkir" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "locharli-hem kangkir" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ingpu pe" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Puthekthe" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 00000000..8dc9906b --- /dev/null +++ b/po/ml.po @@ -0,0 +1,1600 @@ +# Malayalam translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# syamlalpullamballi , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-10-25 19:38+0000\n" +"PO-Revision-Date: 2018-10-26 22:15+0800\n" +"Last-Translator: Anish Sheela \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ഗ്നോം ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ലോകമെമ്പാടുമുള്ള സ്ഥലങ്ങൾ കണ്ടെത്തുക" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to quickly find the place " +"you’re looking for by searching for a city or street, or locate a place to meet a friend." +msgstr "" +"ഭൂപടങ്ങള്‍ താങ്കള്‍ക്കു ലോകത്തിലെ എല്ലായിടത്തെയും ഭൂപടങ്ങളിലേക്കു പ്രവേശനം നല്‍കുന്നു. ഇത് താങ്കള്‍ അന്വേഷിക്കുന്ന സ്ഥലം നഗരമോ " +"തെരുവൊ തിരയുന്നതിലൂടെ പെട്ടന്നു തന്നെ കണ്ടുപിടിക്കാന്‍ അല്ലെങ്കില്‍ സുഹൃത്തിനെ കാണുവാന്‍ ഒരു സ്ഥലം കണ്ടുപിടിക്കാന്‍ സഹായിക്കുന്നു." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands of people across " +"the globe." +msgstr "" +"ഭൂപടങ്ങള്‍ സഹകരണപരമായ OpenStreetMap ന്റെ ശേഖരിച്ചു് വചിട്ടുള്ള വിവരങ്ങളും വസ്തുതകളും ഉപയോഗിക്കുന്നുണ്ട്, ലോകത്തിലെ " +"എല്ലായിടത്തിലേയും നൂറുകണക്കിനു ആളുകള്‍ ചേര്‍ന്നുണ്ടക്കിയതാണത്." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main Street, Boston” or " +"“Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 src/mainWindow.js:503 +msgid "Maps" +msgstr "ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ലളിതമായ ഒരു ഭൂപട പ്രയോഗം" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "നിങ്ങളുടെ ലൊക്കേഷനെ മാപ്പിൽ കാണിക്കുന്നതിന് അനുവദിക്കുന്നു" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "അവസാനം കണ്ട സ്ഥലം" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "അവസാനം കണ്ട സ്ഥലത്തിന്റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം (വീതിയും ഉയരവും)" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം (X ഉം Y ഉം)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "വലുതാക്കിയ ജാലകം" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "ജാലകം വലുതാക്കുന്ന അവസ്ഥ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "തിരച്ചില്‍ ഫലങ്ങളുടെ പരമാവധി എണ്ണം" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "geocode ഇല്‍ നിന്നും പരിശോധന ഫലത്തിന്റെ പരമാവധി എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS or SELF." +msgstr "" +"ഏറ്റവും പുതിയ ഉപയോഗത്തിലുള്ള Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം. സാധ്യമായ മൂല്യങ്ങൾ: എല്ലാവരേയും, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS അല്ലെങ്കിൽ SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "ഫോർസ്ക്വെയർ ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം." + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private." +msgstr "" +"ഏറ്റവുമധികം ഉപയോഗിച്ചത് Foursquare ചെക്ക്-ഇൻ സ്വകാര്യതാ ക്രമീകരണം. സാധ്യമായ വിലകൾ: പൊതുജനം, പിന്തുടരുന്നവർ " +"അല്ലെങ്കിൽ സ്വകാര്യം." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated " +"with the Foursquare account." +msgstr "" +"ഫോർസ്ക്വെയർ അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഫേസ്സ്കാർ ഫേസ്ബുക്കിൽ അക്കൗണ്ട് പോസ്റ്റുചെയ്ത് ഒരു ഫോൾഡർ ആയി പ്രക്ഷേപണം ചെയ്യേണ്ടതുണ്ടോ " +"എന്ന് സൂചിപ്പിക്കുന്നു." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated " +"with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ദൃശ്യപരത" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ഫേസ്ബുക്കിൽ പോസ്റ്റുചെയ്യുക" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 data/ui/send-to-dialog.ui:21 +#: data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "റദ്ദാക്കുക" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "എല്ലാവർക്കും" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "കൂട്ടുകാരുടെ കൂട്ടുകാര്" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "സുഹൃത്തുക്കൾ മാത്രം" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ഞാൻ മാത്രം" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "പൊതുവായത്" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "അനുയായികൾ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "സ്വകാര്യം" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "എന്താണ് ഇവിടെ ഉള്ളത്?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "സ്ഥാനം പകർത്തുക" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +#, fuzzy +#| msgid "Quit" +msgctxt "shortcut window" +msgid "Quit" +msgstr "അവസാനിപ്പിക്കുക" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ലൊക്കേഷൻ ക്രമീകരണങ്ങൾ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാക്കുക" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "കീബോർഡ് കുറുക്കുവഴികൾ" + +#: data/ui/main-window.ui:18 +#, fuzzy +#| msgid "About" +msgid "About Maps" +msgstr "കുറിപ്പ്" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "നിലവിലെ ലൊക്കേഷനിൽ പോകുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "മാപ്പ് തരം തിരഞ്ഞെടുക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "ചെറുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "വലുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "" + +#: data/ui/main-window.ui:256 +msgid "Maps need an active internet connection to function properly, but one can’t be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ഇമെയിൽ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "രഹസ്യവാക്ക് " + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "പ്രവേശിക്കുക" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "ഒരു അക്കൗണ്ട് ഇല്ലേ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your " +"password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് പൊരുത്തപ്പെടുന്നില്ല, വീണ്ടും ശ്രമിക്കുക." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "മുകളിൽ കാണിച്ചിരിക്കുന്ന പരിശോധനാ കോഡ് നൽകുക" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "പരിശോധിക്കുക" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാണ്." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "പുറത്തിറങ്ങുക" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "തെരുവ്" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "വീട്ട് നമ്പര്‍" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "തപാൽ കോഡ്" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "നഗരം" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "തരം" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ഒന്നുമില്ല" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ഫീള്‍ഡ് ചേര്‍ക്കുക" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "അഭിപ്രായം" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "സമീപകാലത്ത് ഉപയോഗിച്ചവ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "അടുത്തത്" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ല്‍ തിരുത്തുക" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "തെരയാന്‍ എന്റെര്‍ അമര്‍ത്തു" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "ഒരു ഫലവും കണ്ടെത്താനായില്ല" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "വഴിയുടെ ക്രമം മാറ്റാന്‍ നീക്കുക" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "സ്ഥലം തുറക്കുക" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "തുറക്കുക (_O)" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ഇപ്പോൾ വിടുക" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "പുറപ്പെടേണ്ടത്" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "കാണിക്കുക" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ബസ്സുകൾ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ട്രാമുകള്‍" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ട്രെയിനുകൾ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "സബ്‍വേ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ഫെറികള്‍" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ഇപ്പോഴത്തെ സ്ഥാനം" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "കൃത്യത: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "സ്ഥാനം ചേര്‍ക്കാന്‍ വലുതാക്കുക" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "വലുതാക്കുക" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "പ്രോഗ്രാമിന്റെ പതിപ്പു് കാണിക്കുക" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ലോഡ് ചെയ്യുന്നു" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:201 +msgid "Maps cannot find the place to check in to with Facebook. Please select one from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "Maps cannot find the place to check in to with Foursquare. Please select one from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യുക" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യാനുള്ള സന്ദേശം എഴുതുക (താല്‍പര്യമുണ്ടെങ്കില്‍)" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ഒരു പിശക് സംഭവിച്ചു" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "Credentials have expired, please open Online Accounts to sign in and enable this account" +msgstr "" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "ഇവിടെ നിന്ന് പാത" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "ലക്ഷ്യസ്ഥാനം ചേർക്കുക" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "ഇങ്ങോട്ട് റൂട്ട് ചെയ്യുക" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "ഇവിടെ ഒന്നും കണ്ടെത്തിയില്ല" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows on the map and in " +"search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ഡയറക്ടറി നിലവിലില്ല" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ഫയൽ പേരൊന്നും തന്നില്ല" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "റൂട്ട് അഭ്യർത്ഥന പരാജയപ്പെട്ടു." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "ഒരു വഴിയും കണ്ടെത്തിയില്ല." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "ആരംഭിക്കുക!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:436 +msgid "Failed to connect to location service" +msgstr "ലൊക്കേഷൻ സേവനവുമായി ബന്ധിപ്പിക്കുന്നത് പരാജയപ്പെട്ടു" + +#: src/mainWindow.js:501 +msgid "translator-credits" +msgstr "" +"Syamlal Pullamballi \n" +"Anish Sheela \n" +"Suneesh T R " + +#: src/mainWindow.js:504 +msgid "A map application for GNOME" +msgstr "ഗ്നോമിനു വേണ്ടിയുള്ള ഒരു ഭൂപട പ്രയോഗം" + +#: src/mainWindow.js:515 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" + +#: src/mainWindow.js:534 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:550 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "ഫയൽ തരം പിന്തുണയ്ക്കുന്നില്ല" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "ലെയർ തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "തെറ്റായ ഉപയോക്തൃ നാമം അല്ലെങ്കിൽ പാസ്വേഡ്" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "കിട്ടി" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "മോശം അഭ്യർത്ഥന" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "പേര്" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "വിലാസം" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "വെബ്സൈറ്റ്" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example.com instead of " +"http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ഫോൺ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of local privacy laws, " +"especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "വിക്കിപീഡിയ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "തുറക്കുന്ന സമയം" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ജനസംഖ്യ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ഉയരം" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "അതെ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ഇല്ല" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "നിയുക്തനായി" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "വൈ-ഫൈ " + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "വയര്‍" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ടെര്‍മിനല്‍" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "സേവനം" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "മതം" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "അനീമിസം" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ബഹാ ഇ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ബുദ്ധമതം" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "കാവോഡായിസം" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ക്രിസ്തുമതം" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ഹിന്ദുമതം" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ജൈനമതം" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ഇസ്ലാം" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "പല മതങ്ങള്‍" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "പാസ്തഫാരിയന്‍ മതം" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "സൈന്റോളജി" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ഷിന്റോ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "സിഖ് മതം" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "താവോയിസം" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "വൂഡു" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "കക്കുസ്" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "കുറിപ്പ്" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an element, the " +"author’s intent when creating it, or hints for further improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ല്‍ ചേര്‍ക്കുക" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "തരം തെരഞ്ഞെടുക്കുക" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ചെയ്തു" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ജനസംഖ്യ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ഉയരം:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "തുറക്കുന്ന സമയം:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "മതം:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "കക്കുസ്:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ഫോൺ:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "അതെ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ഇല്ല" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "പ്രത്യേക" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "%s-ല്‍ നിന്നും %s-ലേക്ക്" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "റൂട്ട് മറിക്കുക" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "പുറപ്പെടുക" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "നടക്കാനുള്ള വഴി കാണിക്കുക" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "നടക്കാനുള്ള വഴി മറയ്ക്കുക" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "%s നടക്കുക" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" +msgstr[1] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "സൂര്യോദയം മുതൽ സൂര്യാസ്തമനം വരെ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "" + +#: src/translations.js:185 +msgid "every day" +msgstr "എല്ലാ ദിവസവും" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "പൊതു അവധികൾ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "സ്കൂള്‍ അവധിക്കാലം" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "" + +#: src/translations.js:264 +msgid "not open" +msgstr "തുറന്നിട്ടില്ല" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "വയര്‍" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ടെര്‍മിനല്‍" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "സേവനം" + +#. Translators: Accuracy of user location information +#: src/utils.js:226 +msgid "Unknown" +msgstr "അപരിചിതം" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Exact" +msgstr "അനുയോജ്യമായ" + +#: src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "" + +#: src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "" + +#: src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "" + +#. Translators: This is a distance measured in meters +#: src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "" + +#. Translators: This is a distance measured in miles +#: src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "" + +#. Translators: This is a distance measured in feet +#: src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "" + +#~ msgid "Last known location and accuracy" +#~ msgstr "അവസാനത്തെ സ്ഥാനവും കൃത്യതയും" + +#~ msgid "Last known location (latitude and longitude in degrees) and accuracy (in meters)." +#~ msgstr "അവസാന അറിയുന്ന സ്ഥലവും (അക്ഷാംശവും രേഖാംശവും ഡിഗ്രിയില്‍) കൃത്യതയും (മീറ്ററില്‍)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ഉപയോക്താവിന്‍റെ അവസാന സ്ഥാനത്തിന്റെ വിവരണം." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ഉപയോക്താവിന്റെ സ്ഥാനം ഉപയോക്താവ് നേരിട്ട് ചെയ്തതാണോ എന്ന്." + +#~ msgid "I’m here!" +#~ msgstr "എന്റെ സ്ഥാനം" + +#~ msgid "Satellite" +#~ msgstr "ഉപഗ്രഹം" + +#~ msgid " km²" +#~ msgstr "കിമീ²" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 00000000..f59530e7 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,1838 @@ +# Malay translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# abuyop , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-27 07:57+0000\n" +"PO-Revision-Date: 2020-01-27 17:51+0800\n" +"Language-Team: Pasukan Terjemahan GNOME Malaysia\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Last-Translator: abuyop \n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Peta GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cari tempat-tempat di sekitar dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memudahkan capaian pada peta di serata dunia. Ia membolehkan anda cari " +"tempat yang dikehendaki dengan pantas iaitu menggelintar sebuah bandar atau " +"jalan, atau ketahui lokasi untuk bertemu dengan rakan." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta menggunakan pangkalan data OpenStreetMap yang terhasil secara " +"kolaboratif oleh beratus-ratus individu di serata dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda boleh menggelintar jenis-jenis lokasi secara khusus, seperti \"Pubs " +"near Main Street, Boston” atau “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Sebuah aplikasi peta yang ringkas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Membolehkan lokasi anda ditunjukkan di dalam peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi dilihat terakhir" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat lokasi dilihat kali terakhir." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zum" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Aras zum" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta yang dipaparkan (jalan, aerial, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Saiz tetingkap" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Saiz tetingkap (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Kedudukan tetingkap" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Kedudukan tetingkap (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilangan maksimum keputusan gelintar" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilangan maksimum keputusan gelintar melalui geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Bilang tempat baru-baru ini disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Bilangan tempat baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Bilangan laluan baru-baru ini untuk disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Bilangan laluan baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Facebook terakhir digunakan. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Foursquare terakhir digunakan. Nilai yang " +"mungkin adalah: public, followers atau private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siaran Facebook daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Facebook yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Siaran Twitter daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Twitter yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat e-mel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menunjukkan jika pengguna telah berdaftar masuk untuk menyunting data " +"OpenstreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis pengangkutan terakhir digunakan untuk perjalanan" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ketampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Hantaran pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Hantaran pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Daftar masuk" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Sesiapa Sahaja" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Rakan rakan" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Rakan sahaja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Saya sahaja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Awam" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Persendirian" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Apa ada di sini?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pandangan eksport" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksport" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan laluan dan penanda" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Am" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tunjuk Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Gelintar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak laluan" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pandangan Peta" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zum masuk" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zum keluar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Togol skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke pandangan jalan" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke pandangan aerial" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka lapisan bentuk" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Buka Lapisan Bentuk…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Hidupkan perkhidmatan lokasi untuk mencari lokasi anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Tetapan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Pasang Akaun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksport sebagai Imej" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Pintasan Papan _Kekunci" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Perihal Peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zum keluar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zum masuk" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Togol kegemaran" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Cetak Laluan" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Peta di luar talian!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlukan satu sambungan internet aktif supaya dapat berfungsi dengan " +"baik, tetapi tidak ditemui." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Periksa sambungan dan tetapan proksi anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke laluan baharu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kongsi lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tanda sebagai kegemaran" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Daftar-masuk di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akaun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Daftar masuk untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantu menambah baik peta, menggunakan\n" +"akaun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata laluan" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Daftar Masuk" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Belum ada akaun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, tidak berjaya. Cuba sekali lagi, atau lawati\n" +"OpenStreetMap untuk menetap semula kata laluan anda." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kod pengesahan tidak sepadan, cuba sekali lagi." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Masukkan kod pengesahan yang ditunjukkan di bawah" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sahkan" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Berdaftar Masuk" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Akaun OpenStreetMap anda masih aktif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Daftar Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nombor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poskod" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Bandar" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Tiada" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Medan" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Ulasan" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan kelihatan pada semua peta yang\n" +"menggunakan data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Digunakan Baru-Baru Ini" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Berikutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tunjuk lagi maklumat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tiad keputusan ditemui" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah tertib laluan" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Hantar Kepada…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Buka Lapisan Bentuk" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Togol tampak" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Gelintar laluan oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerari laluan untuk pengangkutan awam disediakan oleh\n" +"perkhidmatan pihak-ketiga.\n" +"GNOME tidak memberi apa-apa jaminan ketepatan itinerari dan jadual yang " +"ditunjukkan.\n" +"Perhatian, sesetengah penyedia tidak menyertakan semua mod pengangkutan yang " +"ada,\n" +"iaitu penyedia kebangsaan mungkin tidak melibatkan kapal terbang, dan " +"penyedia tempatan\n" +"mungkin tidak melibatkan keretapi wilayah.\n" +"Nama dan jenama yang ditunjukkan dianggap sebagai tanda dagangan berdaftar " +"bila perlu." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tunjuk lagi keputusan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyi hentian dan maklumat pertengahan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tunjuk hentian dan maklumat pertengahan" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tunjuk" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bas" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Keretapi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Kapal Terbang" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi semasa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zum masuk untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom Masuk" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal mencari struktur jubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal menghurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut diperlukan hilang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tidak dapat mencari unsur OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Satu laluan ke struktur direktori jubin setempat" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Tunjuk versi program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Abai ketersediaan rangkaian" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih satu akaun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuatkan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih satu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Facebook. Sila " +"pilih salah satu menerusi senarai ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Foursquare. " +"Sila pilih salah satu menerusi senarai ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Daftar masuk pada %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis satu mesej pilihan untuk mendaftar masuk pada %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Satu ralat telah berlaku" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tidak dapat mencari \"%s\" dalam perkhidmatan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tidak dapat mencari satu tempat yang sesuai untuk mendaftar masuk dalam " +"lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kelayakan telah luput, sila buka Akaun Dalam Talian untuk mendaftar masuk " +"dan membenarkan akaun ini" + +#: src/contextMenu.js:94 +msgid "Route from here" +msgstr "Laluan dari sini" + +#: src/contextMenu.js:96 +msgid "Add destination" +msgstr "Tambah destinasi" + +#: src/contextMenu.js:98 +msgid "Route to here" +msgstr "Laluan ke sini" + +#: src/contextMenu.js:124 +msgid "Nothing found here!" +msgstr "Tiada apa-apa ditemui di sini!" + +#: src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi telah ditambah ke dalam peta, perhatian ia mungkin mengambil masa " +"sebelum dapat ditunjukkan pada peta dan dalam keputusan gelintar." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta pada %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem fail adalah baca sahaja" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tidak mempunyai keizinan menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak wujud" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiada nama fail dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tidak boleh mengeksport pandangan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tidak sah" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ralat hurai" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tidak diketahui" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Permintaan laluan gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Tiada laluan ditemui." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Mula!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Semua Fail Lapisan" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung dengan perkhidmatan lokasi" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"abuyop\n" +"CL TAN https://launchpad.net/~tcl111985\n" +"Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris\n" +"Launchpad Translations Administrators https://launchpad.net/~rosetta\n" +"ahmad akmal bin mohd idris https://launchpad.net/~mamahopsk87\n" +"dequan https://launchpad.net/~dequan" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Sebuah aplikasi peta untuk GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak cipta © 2011 – 2019 Red Hat, Inc. dan para pengarang Peta GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan para penyumbang" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Gelintar disediakan oleh %s menggunakan %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Jenis fail tidak disokong" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Gagal membuka lapisan" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau kata laluan salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berjaya" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan tidak elok" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tidak ditemui" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, ada orang lain baru sahaja mengubah suai objek" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dipadamkan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama rasmi. Ia biasanya muncul ketika daftar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tapak Sesawang" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Tapak sesawang rasmi. Cuba guna bentuk URL paling asas iaitu http://example." +"com selain dari http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nombor telefon. Guna format antarabangsa, bermula dengan tanda +. Hati-hati " +"dengan undang-undang kerahsiaan setempat, terutamanya nombor telefon " +"persendirian." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang digunakan patut sertakan kod bahasa dan tajuk artikel seperti " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat pautan dalam label untuk bantuan berkenaan format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Ketinggian (tinggi di atas aras laut) sesuatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Capaian kerusi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terhad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Dikhususkan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Capaian internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Berwayar" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Perkhidmatan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budha" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Taodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristian" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindu" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Agama Berbilang" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tandas" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Maklumat yang digunakan untuk maklumkan pemeta lain berkenaan maklumat tidak " +"jelas berkenaan sesebuah unsur, niat pengarang ketika menciptanya, atau " +"pembayang untuk penambahbaikan lanjutan." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Capaian internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tandas:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Capaian kerusi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Gagal menghurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terhad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "dikhususkan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemui dalam OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tidak sah" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tidak sah" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tidak disokong" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s hingga %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuatkan jubin-jubin peta untuk percetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" +"Anda boleh menghenti paksi percetakan jika ia mengambil masa terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Henti paksa percetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah melalui lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Buang melalui lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Songsangkan laluan" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambah %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuatkan fail" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Masa anggaran: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mula pada %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mula" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba pada %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tunjuk arahan berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyi arahan berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Muat alternatif lebih awal" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Muat alternatif terkemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tiada alternatif lebih awal ditemui." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tiada alternatif terkemudian ditemui." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tiada data jadual waktu ditemui untuk laluan ini." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tiada penyedia ditemui untuk laluan ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minit" +msgstr[1] "%d minit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d jam" +msgstr[1] "%d jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d jam" +msgstr[1] "%d:%02d jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dalam tempoh" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit hingga matahari terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "cuti umum" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "cuti sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "berwayar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "perkhidmatan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ketepatan: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tidak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tepat" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f j" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Teruskan pada %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Teruskan" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Belok sedikit kiri" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok tajam kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Belok tajam kiri" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Belok sedikit kanan" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok tajam kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Belok tajam kanan" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dalam bulatan, ambil susur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dalam bulatan, ambil susur keluar ke %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Masuk bulatan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Masuk lif dan keluar pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Masuk lif" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Buat satu pusingan-u ke %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Buat satu pusingan-u" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Buat satu pusingan-u kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Buat satu pusingan-u kanan" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 00000000..374903dd --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1820 @@ +# Norwegian bokmål translation of gnome-maps. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kjartan Maraas , 2013-2020. +# Åka Sikrom , 2014. +# haarek , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.36.x\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-09 18:18+0100\n" +"Last-Translator: Kjartan Maraas \n" +"Language-Team: Norwegian bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kart" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Se på steder over hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kart gir deg rask tilgang til kart for hele verden. Det lar deg raskt finne " +"stedet du leter etter ved å søke etter en by eller en gate, eller finne et " +"sted å møte en venn." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kart bruker OpenStreetMap-databasen som er laget av hundretusener av " +"mennesker fra hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan også søke etter en bestemt type sted, som f.eks. «Pub nær Main " +"Street, Boston» eller «Hoteller nær Alexanderplatz, Berlin»." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "GNOME prosjektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Kart" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kart;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lar lokasjonen din vises på kartet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sist viste posisjon" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sist viste posisjon." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom-nivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type kart" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Type kart som skal vises (gate, fly osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vindustørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vindustørrelse (bredde og høyde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduposisjon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduposisjon (x og y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindu maksimert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tilstand for maksimering av vindu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimalt antall søkeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalt antall søkeresultater fra geokode-søk." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antall nylige steder å lagre" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antall nylig besøkte steder som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antall nylige ruter å lagre" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antall nylig besøkte ruter som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Personvern-innstilling for Facebook-innsjekk" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sist brukt personvern-innstilling for Facebook-innsjekk. Følgende verdier er " +"gyldige: «EVERYONE» (alle), «FRIENDS_OF_FRIENDS» (venners venner), " +"«ALL_FRIENDS» (alle venner) og «SELF» (bare meg)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Personvern-innstilling for Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sist brukt personvern-innstilling for Foursquare-innsjekk. Følgende verdier " +"er gyldige: «public», «followers» og «private»." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Facebook-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Twitter-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brukernavn eller e-postadresse for OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indikerer om bruker har logget inn for å redigere OpenStreeMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sist brukte transporttype for ruting" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "S_jekk inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venner av venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bare venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bare meg" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute fra denne lokasjonen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Legg til mellomstopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute til denne lokasjonen" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hva finnes her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopier posisjon" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksporter visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Ta med rute og markører" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis snarveier" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søk" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avslutt" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvisning" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom inn" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ut" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå av/på skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Bytt til gatevisning" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Bytt til flyvisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åpne formlag" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Åpne formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Skru på posisjonstjenester for å se hvor du er" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Posisjonsinnstillinger" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Sett opp konto på OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksporter som bilde" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatursnarveier" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Om Kart" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Velg karttype" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zoom ut" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zoom inn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Slå av/på favoritter" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Skriv ut rute" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Kart er frakoblet!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kart trenger en aktiv internettforbindelse for å fungere, men ingen ble " +"funnet." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Sjekk tilkobling og innstillinger for proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Legg til i ny rute" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Del posisjon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merk som favoritt" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Sjekk inn her" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto for OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logg inn for å redigere kart" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjelp til å forbedre kartet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Logg inn" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Har du ikke en konto?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager, det virket ikke. Vennligst prøv igjen eller besøk\n" +"OpenStreetMap for å nullstille passordet ditt." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Verifiseringskoden var ikke riktig. Vennligst prøv igjen." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Oppgi verifikasjonskoden som vises over" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Verifiser" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Logget inn" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Logg ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gate" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Legg til felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Endringer på kartet vil vises på alle kart som bruker\n" +"data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nylig brukt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Neste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Vis mer informasjon" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater funnet" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra for å endre rekkefølgen på ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åpne posisjon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopier" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Åpne formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åpne" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå av/på synlige" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøk av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutetabeller for offentlig transport tilbys av tredjepartstjenester\n" +"\n" +"GNOME kan ikke garantere riktighet for rutetabellene og tidsplanene.\n" +"Merk at enkelte tilbydere ikke alltid inkluderer alle mulige typer transport. F.eks. vil noen aktører ikke ta med flyselskaper, mens en lokal tilbyder kanskje utelater regionstog.\n" +"Navn og merker som vises skal anses som registrerte varemerker når det er relevant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul stopp og informasjon langs ruten" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis stopp og informasjon på veien" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Dra nå" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Dra før" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankom før" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trikker" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "T-bane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjer" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Gjeldende posisjon" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom inn for å legge til en lokasjon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom inn" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Klarte ikke å finne flisstruktur i katalogen" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Klarte ikke å tolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Fant ikke OSM-element" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal katalogstruktur med fliser" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Vis programmets versjon" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Overse nettverkstilgjengelighet" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Velg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Laster" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Velg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Facebook. Velg et sted " +"her." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Foursquare. Velg et sted " +"her." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Sjekk inn på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv en valgfri melding for å sjekke inn ved %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Det har oppstått en feil" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finner ikke «%s» i sosial tjeneste" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Fant ingen passende steder å sjekke inn på denne posisjonen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiver er utgått. Åpne Nettkontoer for å logge inn og bruke denne " +"kontoen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasjonen ble lagt til på kartet. Merk at det kan ta litt tid før den vises " +"på kartet og dukker opp i søkeresultater." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kart fra %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke rettigheter til å lagre der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen eksisterer ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Filnavn ikke oppgitt" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lesefeil" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukjent geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Forespørsel om rute feilet." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ingen rute funnet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Klarte ikke å koble til posisjonstjeneste" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"haarek , Kjartan Maraas , Åka " +"Sikrom " + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Et kartprogram for GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Opphavsrett © 2011 - 2019 Red Hat, Inc. og GNOME kart utviklerene" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata av %s og bidragsytere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartfliser av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søk tilbys av %s ved bruk av %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Filtypen er ikke støttet" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Klarte ikke å åpne lag" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Klarte ikke å åpne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Feil brukernavn eller passord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Suksess" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Fant ikke objektet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt. Noen andre har akkurat endret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er slettet" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det offisielle navnet. Dette er typisk det som vises på skilt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Nettsted" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Det offisielle nettstedet. Prøv å bruke den mest grunnleggende formen av en " +"URL. F.eks. http://eksempel.no i stedet for http://eksempel.no/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Bruk det internasjonale formatet som starter med et +-tegn. " +"Vær observant på lokale lover om personvern, spesielt for private " +"telefonnummer." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Åpningstider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se lenken i etiketten for hjelp om format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Folketall" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Høyde" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Høyde over have for et punkt i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rullestolvennlig" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrenset" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Spesialtilpasset" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internett-tilgang" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådløst" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikdom" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jesidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Merknad" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Velg type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Ferdig" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sted uten navn" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Folketall:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Høyde:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Åpningstider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internettaksess:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rullestolvennlig:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Klarte ikke å tolke Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrenset" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "spesialtilpasset" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Stedet ble ikke funnet i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL er ikke gyldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatene i URLen er ikke gyldige" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URLen støttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Laster kartruter for utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryte utskriften hvis dette tar for lang tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Legg til mellomlokasjon" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern mellomlokasjon" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Omvendt rute" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Legg til %s til %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Klarte ikke å åpne URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Åpne med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "klarte ikke å laste fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimert tid: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ruteplaner tilbys av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start ved %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankom ved %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Ankom" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis instruksjoner for fotgjengere" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul instruksjoner for fotgjengere" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Last tidligere alternativer" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Last senere alternativer" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer funnet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer funnet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Ingen ruteinformasjon funnet for denne ruten." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Ingen tilbyder funnet for denne ruten." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minutt" +msgstr[1] "%d minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d time" +msgstr[1] "%d timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d time" +msgstr[1] "%d:%02d timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "hele døgnet" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "fra soloppgang til solnedgang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s til %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s til %s og %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "offentlige fridager" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skoleferie" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ikke åpen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "trådbundet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjeneste" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøyaktighet: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Ukjent" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Nøyaktig" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f t" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsett på %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Fortsett" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sving til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sving svakt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Sving svakt til venstre" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sving hardt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Sving hardt til venstre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sving til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Sving til høyre" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sving svakt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Sving svakt til høyre" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sving hardt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Sving hardt til høyre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avkjørsel %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avkjørsel til %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Kjør gjennom rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta heisen og gå av i %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Ta heisen" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 00000000..05303199 --- /dev/null +++ b/po/ne.po @@ -0,0 +1,1617 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Gnome Nepali Translation Project\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-07-24 21:57+0000\n" +"PO-Revision-Date: 2017-08-13 14:57+0545\n" +"Last-Translator: Pawan Chitrakar \n" +"Language-Team: Nepali Translation Team \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "जिनोम मानचित्र" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:476 +msgid "Maps" +msgstr "मानचित्र" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "सहज मानचित्र अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "मानचित्र;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +msgid "last viewed location" +msgstr "हालै हेरिसकेको" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "सञ्झ्याल साइज" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "सञ्झ्यालको नाप( उचाइ र चौडाई )" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "संझ्यालको स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "सञ्झ्यालको स्थान(X र Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "सञ्झ्यालको अधिकतम स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +#, fuzzy +msgid "Window maximization state" +msgstr "बढाइएको स्थितिलाई टगल गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "अत्याधिक खोजी परिणाम प्राप्त गर्दै..." + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +#, fuzzy +msgid "Number of recent places to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +#, fuzzy +msgid "Number of recent routes to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +#, fuzzy +msgid "Number of recently visited routes to store." +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +#, fuzzy +msgid "OpenStreetMap username or e-mail address" +msgstr "इमेल ठेगाना प्रतिलिपि गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +#, fuzzy +msgid "Set up OpenStreetMap Account" +msgstr "सिर्जना र सेटअप गर्नुहोस्" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "कुञ्जीपाटी सटकर्ट" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "बारेमा" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "अन्त्य गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "दृश्यात्मक" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "फेसबुकमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "ट्विट्टरमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_रद्द गर्नुहोस्" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +#, fuzzy +msgid "C_heck in" +msgstr "जाँच गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "सबैजना" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "साथीको साथी" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "साथीमात्र" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "म मात्रै" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "सार्वजनिक" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "अनुयायीहरू" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "व्यक्तिगत" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहा के छ ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "स्थान प्रतिलिपि गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "छवि को रुपमा निर्यात गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:4 +#, fuzzy +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "निर्यात दृष्य" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "निर्यात" + +#: ../data/ui/export-view-dialog.ui.h:4 +#, fuzzy +msgid "Include route and markers" +msgstr "लाइन चिन्हकलाई देखाउनुहोस्" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "सामान्य" + +#: ../data/ui/help-overlay.ui.h:2 +#, fuzzy +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "सर्टकटहरू" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "खोजी" + +#: ../data/ui/help-overlay.ui.h:4 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "उल्टनू" + +#: ../data/ui/help-overlay.ui.h:5 +#, fuzzy +msgctxt "shortcut window" +msgid "Print route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "_बन्द गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:7 +#, fuzzy +msgctxt "shortcut window" +msgid "Map View" +msgstr "...मा मानचित्र्शा" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "यसमा जुम गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "जुम घटाउनुहोस््" + +#: ../data/ui/help-overlay.ui.h:10 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "मापन" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#: ../data/ui/help-overlay.ui.h:12 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:13 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "आकार:वितरणको आकार परामिति" + +#: ../data/ui/layers-popover.ui.h:1 +#, fuzzy +msgid "Load Map Layer" +msgstr "छवि मानचित्र लोड गर्नुहोस्" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +#, fuzzy +msgid "Location Settings" +msgstr "सेटिङ्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "मानचित्र प्रकार रोज्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#, fuzzy +msgid "Toggle route planner" +msgstr "उल्टनू" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#, fuzzy +msgid "Toggle favorites" +msgstr "मनपर्ने" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +#, fuzzy +msgid "Print Route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/main-window.ui.h:12 +#, fuzzy +msgid "Maps is offline!" +msgstr "अफलाइन" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +#, fuzzy +msgid "Add to new route" +msgstr "नयाँ पात्रो जोड्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +#, fuzzy +msgid "Mark as favorite" +msgstr "मनपर्ने " + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +#, fuzzy +msgid "Check in here" +msgstr "यहाँ ल्याउनुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:1 +#, fuzzy +msgid "OpenStreetMap Account" +msgstr "खाता:" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "इमेल" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "पासवर्ड" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "लगइन गर्दै" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +msgid "Don’t have an account?" +msgstr "यो प्रदर्शन प्रयोग नगर्नु" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "रूजु गर्नुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:16 +#, fuzzy +msgid "Your OpenStreetMap account is active." +msgstr "तपाईँको सिप खाताको पासवर्ड के हो ?" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "साइन आउट" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "सडक" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "घर नम्बर" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "जिप/हुलाकी सङ्केत" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "सहर" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "वर्ग" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "कुनै पनि होइन" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "फाँट थप्नुहोस्" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "टिप्पणी" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "हालै प्रयोग गरिएको" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#, fuzzy +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "रद्द गर्ने" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "पछिल्लो" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +#, fuzzy +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "बढी सूचना" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "खोजको लागि इन्टर थिच्नुहोस्" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "नतिजा भेटिएन" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +#, fuzzy +msgid "Drag to change order of the route" +msgstr "वक्ररेखाको आकार परिवर्तन गर्न तान्नुहोस् क्लिक गर्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "स्थान खोल्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "खोल्नुहोस्" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "तह खोल्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +#, fuzzy +msgid "Toggle visible" +msgstr "दृष्य" + +#: ../data/ui/sidebar.ui.h:1 +#, fuzzy +msgid "Route search by GraphHopper" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +msgid "Route search by OpenTripPlanner" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "अरू धेरै नतिजा देखाउनुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#, fuzzy +msgid "Show intermediate stops and information" +msgstr "संस्करण सूचना देखाउनुहोस् र निस्कनुहोस्" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +#, fuzzy +msgid "Leave Now" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +#, fuzzy +msgid "Leave By" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "देखाउने" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "बस" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ट्राम" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "ट्रेन" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "सबवे" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "फेर्री" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "हालको स्थन" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "शुद्धता: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +#, fuzzy +#| msgid "Go to current location" +msgid "Zoom in to add location!" +msgstr "स्थान" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "OK" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +msgid "Failed to parse XML document" +msgstr "XML कागजात राम्रोसँग ढाँचा भएन !" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "आवश्यक मान हराइरहेछ" + +#: ../lib/maps-osm.c:453 +#, fuzzy +msgid "Could not find OSM element" +msgstr "मद्दत डाइरेक्टरी फेला पार्न सकेन" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "खाता चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "लोड गर्दै" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "स्थान चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, fuzzy, javascript-format +msgid "Check in to %s" +msgstr "%s पत्र फाइल जाँच गर्न सकेन: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, fuzzy, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s लाई लेख्न असफल भयो (अनुमतिहरू जाँच गर्नुहुन्छ ?)" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "एउटा त्रुटि देखापर्यो ।" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "डाइरेक्टरी फेला पार्न सक्दैन %s" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/contextMenu.js:96 +#, fuzzy +msgid "Route from here" +msgstr "बाटो भेटिएन" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "गन्तव्य थप्नुहोस्" + +#: ../src/contextMenu.js:100 +#, fuzzy +msgid "Route to here" +msgstr "पूर्वनिर्धारित पथ" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "केही पनि भेटिएन" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +#, fuzzy +msgid "Filesystem is read only" +msgstr "फाइल प्रणाली" + +#: ../src/exportViewDialog.js:158 +#, fuzzy +msgid "You do not have permission to save there" +msgstr "यो फाइल संचय गर्न तपाईँसँग आवश्यक अनुमतिहरू छैनन् ।" + +#: ../src/exportViewDialog.js:160 +#, fuzzy +msgid "The directory does not exist" +msgstr "त्यहा अवस्थित छैन" + +#: ../src/exportViewDialog.js:162 +#, fuzzy +msgid "No filename specified" +msgstr "फाइलनाम:" + +#: ../src/exportViewDialog.js:170 +#, fuzzy +msgid "Unable to export view" +msgstr "निर्यात गर्नुहोस्" + +#: ../src/geoJSONSource.js:98 +#, fuzzy +msgid "invalid coordinate" +msgstr "समन्वय गर्नुहोस्" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "पदवर्णन त्रुटि" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "अज्ञात ज्यामिति" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +#, fuzzy +msgid "Route request failed." +msgstr "अनुरोध असफल" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "बाटो भेटिएन" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "सुरु!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "सबै तह फाइलहरू" + +#: ../src/mainWindow.js:418 +msgid "Failed to connect to location service" +msgstr "स्थान सेवा जडान असफल" + +#: ../src/mainWindow.js:474 +msgid "translator-credits" +msgstr "Pawan Chitrakar " + +#: ../src/mainWindow.js:477 +msgid "A map application for GNOME" +msgstr "जिनोमको मानचित्र अनुप्रयोग" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "फाइल प्रकार समर्थित छैन" + +#: ../src/mapView.js:363 +#, fuzzy +msgid "Failed to open layer" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/mapView.js:399 +#, fuzzy +msgid "Failed to open GeoURI" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/openTripPlanner.js:622 +#, fuzzy +msgid "No earlier alternatives found." +msgstr "%s भन्दा छिटो होइन" + +#: ../src/openTripPlanner.js:623 +#, fuzzy +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "पछि" + +#: ../src/openTripPlanner.js:661 +#, fuzzy +msgid "No timetable data found for this route." +msgstr "बाटो भेटिएन" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +#, fuzzy +msgid "Incorrect user name or password" +msgstr "" +"सर्भरमा जडान गर्दा त्यहाँ एउटा त्रुटि थियो । यो एउटा गलत प्रयोग कर्ता नाम र/वा " +"पासवर्ड प्रयोग गरेको कारणले हुन सक्दछ ।" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "सफलता" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "खराब अनुरोध" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "वस्तु फेला परेन" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +#, fuzzy +msgid "Object has been deleted" +msgstr "मुद्रणयन्त्र “%s” मेटियो" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "नाम" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "ठेगाना" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "वेबसाइट" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "फोन" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "विकिपेडिया" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +msgid "Opening hours" +msgstr "खुल्दैछ" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "जनसङ्ख्या" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "ऊचाई" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +msgid "Wheelchair access" +msgstr "पहुँच:" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "ठिक छ" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "होइन" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "सिमित" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "" + +#: ../src/osmEditDialog.js:171 +#, fuzzy +msgid "Internet access" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "वाई-फाई" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "तारजडिट" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "टर्मिनल" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "सेवा" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "धर्म" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "बहाई धर्म" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "बौद्ध धर्म" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "ईसाई धर्म" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "कन्फुशियस धर्म" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "हिन्दु धर्म" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "जैन धर्म" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "यहूदी धर्म" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "इस्लाम धर्म" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "धेरैवटा क्षेत्र" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "पगानि धर्म" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "वैज्ञानिक विज्ञान" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "शिन्टो धर्म" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "सिख धर्म" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "आध्यात्मिकता" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "टाओ धर्म" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "यूनिटेरिया यूनिवर्सलवाद" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "शौचालय" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "द्रष्टव्य" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +#, fuzzy +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "प्रकार चयन गर्नुहोस्" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "सम्पन्न भयो" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "जनसङ्ख्या :" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "ऊचाई:" + +#: ../src/placeBubble.js:133 +#, fuzzy +msgid "Opening hours:" +msgstr "खुल्दैछ" + +#: ../src/placeBubble.js:138 +#, fuzzy +msgid "Internet access:" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "धर्म:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "शौचालय:" + +#: ../src/placeBubble.js:153 +#, fuzzy +msgid "Wheelchair access:" +msgstr "पहुँच:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "फोन:" + +#: ../src/placeEntry.js:190 +#, fuzzy +msgid "Failed to parse Geo URI" +msgstr "जिपिजि प्रयोगकर्ता आइडी संकेत पद वर्णन गर्न असफल भयो ।" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "ठिक छ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "सिमित" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "होइन" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "%s बाट %s " + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "परित्याग गर्नुहोस्" + +#: ../src/sendToDialog.js:179 +#, fuzzy +msgid "Failed to open URI" +msgstr "URI खोल्न असक्षम" + +#: ../src/shapeLayer.js:92 +#, fuzzy +msgid "failed to load file" +msgstr "फाइल लोड गर्न असफल" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अन्दजि समय: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "आइपुग्छन्" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "सुरु" + +#: ../src/transitLegRow.js:107 +#, fuzzy +msgid "Show walking instructions" +msgstr "यसका लागि देखाउनुहोस्" + +#: ../src/transitLegRow.js:108 +#, fuzzy +msgid "Hide walking instructions" +msgstr "सञ्झ्याल लुकाउनुहोस्" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, fuzzy, javascript-format +msgid "Walk %s" +msgstr "%s: का लागि" + +#: ../src/transitMoreRow.js:41 +#, fuzzy +msgid "Load earlier alternatives" +msgstr "%s भन्दा छिटो होइन" + +#: ../src/transitMoreRow.js:43 +#, fuzzy +msgid "Load later alternatives" +msgstr "पछि" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d मिनेट" +msgstr[1] "%d मिनेट" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d घण्टा" +msgstr[1] "%d घण्टा" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d घण्टा" +msgstr[1] "%d:%02d घण्टा" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +#, fuzzy +msgid "around the clock" +msgstr "घडी" + +#: ../src/translations.js:58 +#, fuzzy +msgid "from sunrise to sunset" +msgstr "सूर्यास्ट देखि सूर्योदय" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "प्रत्येक दिन" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "सार्वजनिक विदा" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "स्कुल विदा" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +#, fuzzy +msgid "not open" +msgstr "यससँग खोल्नुहोस्:" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "तारजडिट" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "टर्मिनल" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "सेवा" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "दुरुस्त" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s किलोमिटर" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s मिटर" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s माइल" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%sफिट" + +#~ msgid "I’m here!" +#~ msgstr "म यहा छु" + +#~ msgid "Country code: %s" +#~ msgstr "देश मानक:%s" + +#~ msgid "%f km²" +#~ msgstr "%f वर्गकिलोमिटर" + +#~ msgid "%f km" +#~ msgstr "%f किलोमिटर" + +#~ msgid "%f m" +#~ msgstr "%f m" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 00000000..84827d23 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,1977 @@ +# Dutch translation for gnome-maps +# Copyright (C) 2013, 2014 +# This file is distributed under the same license as the GNOME Maps package. +# Check-in: voorlopig even onvertaald gelaten - Hannie +# Erwin Poeze , 2013, 2014. +# Reinout van Schouwen , 2013. +# Hannie Dumoleyn , 2015. +# Nathan Follens , 2015-2020. +# Justin van Steijn , 2015, 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.16\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-25 18:10+0200\n" +"Last-Translator: Nathan Follens \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnome Kaarten" + +# rond de wereld +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vind plaatsen de wereld rond" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaarten geeft u snelle toegang tot kaarten over de hele wereld. U kunt snel " +"de plaats waarnaar u op zoek bent vinden door te zoeken naar een stad of de " +"straat, of de plek opzoeken om een vriend te ontmoeten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaarten gebruikt de gemeenschappelijk opgebouwde OpenStreetMap-database, " +"gemaakt door honderdduizenden mensen over de hele wereld." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"U kunt zelfs naar specifieke soorten locaties zoeken, zoals ‘Pubs in de " +"buurt van Main Street, Boston’ of ‘WiFi-toegang in de buurt van " +"Alexanderplatz, Berlijn’." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Het Gnome-project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Kaarten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Een eenvoudige kaartentoepassing" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kaart;Kaarten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Geeft uw locatie weer op de kaart." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laatst bekeken locatie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coördinaten van de laatst bekeken locatie." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoomen" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kaarttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Het type kaart om weer te geven (straten, lucht, enz.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Venstergrootte" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Venstergrootte (breedte en hoogte)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vensterpositie" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vensterpositie (X en Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Venstergrootte gemaximaliseerd" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Venstermaximalisatiestaat" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum aantal zoekresultaten" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum aantal resultaten van zoeken op geografische positie." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Aantal recente locaties om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Aantal recent bezochte locaties om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Aantal recente routes om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Aantal recent afgelegde routes om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-inchecken privacyinstellingen" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Voor het laatst gebruikte privacyinstellingen Facebook-incheck. Mogelijke " +"waarden zijn: IEDEREEN, VRIENDEN VAN VRIENDEN, ALLE VRIENDEN of ZICHZELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-inchecken privacyinstellingen" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"De laatst gebruikte privacyinstellingen Foursquare-incheck. Mogelijke " +"waarden zijn: openbaar, volgers of privé." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de incheck in een bericht moet bekend maken in het " +"Facebook-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de controle in een bericht moet bekend maken in het " +"Twitter-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-gebruikersnaam of -e-mailadres" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Geeft aan of de gebruiker ingelogd is om OpenStreetMap-gegevens te bewerken." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Laatst gebruikte transporttype voor routering" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Of het programma in nachtmodus staat." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hybride luchtfototegels gebruiken" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Of luchtfototegels een hybride stijl moeten gebruiken (met labels)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Posten op Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Posten op Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuleren" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Inc_hecken" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Iedereen" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vrienden van vrienden" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Alleen vrienden" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Alleen ik" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Openbaar" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Volgers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route vanaf hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tussenstop toevoegen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route naar hier" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Wat bevindt zich hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Locatie kopiëren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Weergave exporteren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporteren" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Route en markeringen opnemen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Kies kaartsoort" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Uitzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Inzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Bladwijzers in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Algemeen" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Sneltoetsen tonen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Zoeken" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afsluiten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kaartweergave" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Inzoomen" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uitzoomen" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Schaal in/uitschakelen" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Overschakelen naar straatbeeld" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Overschakelen naar luchtbeeld" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vormlaag openen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Labels tonen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vormlaag openen…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Locatiedienst inschakelen om uw locatie te bepalen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuleren" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Locatie-instellingen" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-account instellen" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporteren als afbeelding" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "S_neltoetsen" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Over Kaarten" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Route zoeken" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Kaarten is offline!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kaarten heeft een actieve internetverbinding nodig om te functioneren, maar " +"die is niet gevonden." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Controleer uw verbinding en proxy-instellingen." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aan nieuwe route toevoegen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Locatie delen" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markeren als bladwijzer" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Hier inchecken" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inloggen om kaarten te bewerken" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help om de kaart te verbeteren, door gebruik te maken van een\n" +"OpenStreetMap-account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Wachtwoord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inloggen" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, dat werkte niet. Probeer het opnieuw of bezoek\n" +"OpenStreetMap om uw wachtwoord te herstellen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "De verificatiecode kwam niet overeen, probeer het opnieuw." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Voer de verificatiecode hierboven in" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiëren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingelogd" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Uw OpenStreetMap-account is actief." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Uitloggen" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straat" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Huisnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postcode" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Plaats" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Soort" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Geen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Wijzigingen aan de kaart zijn zichtbaar op alle kaarten\n" +"die OpenStreetMap-gegevens gebruiken." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recent gebruikt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Volgende" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Meer informatie tonen" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Geen resultaten gevonden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Verslepen om de volgorde van de route te wijzigen" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Locatie openen" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiëren" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Versturen naar…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vormlaag openen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Openen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Zichtbaar/onzichtbaar maken" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routezoeken door GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routering voor openbaar vervoer wordt aangeboden door diensten van derde " +"partijen.\n" +"Gnome kan de juistheid van de hier weergegeven routes en dienstregelingen " +"niet garanderen.\n" +"Merk op dat sommige leveranciers mogelijk niet alle beschikbare " +"transportmodi weergeven,\n" +"bv. een nationale leverancier geeft mogelijk geen vliegroutes weer, en een " +"lokale leverancier\n" +"geeft mogelijk niet alle regionale treinen weer.\n" +"De hier weergegeven namen en merknamen worden, waar toepasbaar, beschouwd " +"als\n" +"geregistreerde handelsmerken." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Meer resultaten tonen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Tussenstops en informatie verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tussenstops en informatie tonen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Nu vertrekken" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Vertrekken tegen" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Aankomen tegen" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tonen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussen" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treinen" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Veerboten" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Vliegtuigen" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Huidige locatie" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in om locatie toe te voegen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Inzoomen" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kon de tegelstructuur in de map niet vinden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kon XML-document niet ontleden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Benodigde eigenschappen ontbreken" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kon OSM-element niet vinden" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Een pad naar een mappenstructuur met lokale tegels" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Tegelgrootte voor lokale tegelmap" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "De versie van het programma tonen" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Beschikbaarheid netwerk negeren" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[BESTAND…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Een account kiezen" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Bezig met laden" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Een plaats kiezen" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Facebook niet vinden. Gelieve er " +"een uit de lijst te kiezen." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Foursquare niet vinden. Gelieve " +"er een uit de lijst te kiezen." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Inchecken bij %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Voeg eventueel een bericht toe bij het inchecken bij %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Er is een fout opgetreden" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "‘%s’ werd niet aangetroffen in de sociale dienst" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Er is geen geschikte plaats gevonden om in te checken op deze locatie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"De aanmeldgegevens zijn verlopen, gelieve Online-accounts te openen om u aan " +"te melden en dit account in te schakelen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Niets gevonden hier!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locatie is toegevoegd aan de kaart, het kan even duren voor deze op de kaart " +"en in zoekresultaten wordt weergegeven." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kaart op %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Bestandssysteem is alleen-lezen" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "U heeft geen toestemming om hier op te slaan" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "De map bestaat niet" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Geen bestandsnaam opgegeven" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kon weergave niet exporteren" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ongeldige coördinaat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ontleedfout" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "onbekende afmetingen" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Routeaanvraag is mislukt." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Geen route gevonden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle laagbestanden" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Verbinden met locatiedienst is mislukt" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Erwin Poeze \n" +"Reinout van Schouwen \n" +"Hannie Dumoleyn \n" +"Nathan Follens \n" +"Justin van Steijn \n" +"\n" +"Meer info over Gnome-NL http://nl.gnome.org" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Een kaartentoepassing voor Gnome" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. en de auteurs van Gnome Maps" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kaartgegevens door %s en bijdragers" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kaarttegels geleverd door %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Zoekfunctionaliteit aangeboden door %s met %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Bestandstype wordt niet ondersteund" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Laag openen mislukt" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "GeoURI openen mislukt" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Onjuiste aanvraag" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object niet gevonden" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, iemand anders heeft net het object gewijzigd" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object is verwijderd" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Manier of relatie verwijst naar niet-bestaande dochter" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naam" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "De officiële naam. Dit is wat normaal gezien op borden verschijnt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"De officiële website. Probeer de meest beperkte vorm van een URL te " +"gebruiken, i.e., https://voorbeeld.be in plaats van https://voorbeeld.be/" +"index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefoon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefoonnummer. Gebruik het internationale formaat, beginnend met een " +"plusteken (+). Wees bewust van lokale privacywetten, zeker wanneer het gaat " +"om privételefoonnummers." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Het gebruikte formaat hoort de taalcode en de titel van het artikel te " +"bevatten, zoals ‘nl:Titel van artikel’." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Openingstijden" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Zie de koppeling in het label voor hulp bij het formaat." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populatie" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Hoogte" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "De hoogte boven de zeespiegel van een punt in meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rolstoeltoegankelijk" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nee" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Beperkt toegankelijk" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Aangewezen" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internettoegang" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Bedraad" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Boeddisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindoeïsme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jodendom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Meerdere religies" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heidendom" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaristisch Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yezidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Mazdeïsme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Wc's" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Opmerking" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Deze informatie wordt gebruikt om andere ‘mappers’ te informeren over niet-" +"evidente informatie over een element, de bedoeling van de auteur bij het " +"aanmaken ervan, of tips voor verbetering." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Een type kiezen" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Klaar" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Naamloze plaats" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populatie:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Hoogte:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Openingstijden:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internettoegang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religie:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Wc's:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rolstoeltoegankelijk:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefoon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Kon GeoURI niet ontleden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "beperkt toegankelijk" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nee" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "aangewezen" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Plaats niet gevonden op OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL is ongeldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coördinaten in URL zijn ongeldig" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL wordt niet ondersteund" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Van %s naar %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Bezig met laden van kaarttegels voor afdrukken" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "U kan het afdrukken afbreken indien het te lang duurt" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afdrukken afbreken" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "‘Via’ toevoegen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "‘Via’ verwijderen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route omkeren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s toevoegen aan %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI openen mislukt" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Openen met %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "bestand laden mislukt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschatte tijdsduur: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Routeberekening geleverd door %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Vertrek om %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Wandel %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kom aan tegen %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Kom aan" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wandelinstructies tonen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Wandelinstructies verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Vroegere alternatieven laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Latere alternatieven laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Geen vroegere alternatieven gevonden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Geen latere alternatieven gevonden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Geen gegevens betreffende dienstregeling gevonden voor deze route." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Geen leverancier gevonden voor deze route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuut" +msgstr[1] "%s minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s uur" +msgstr[1] "%s uur" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s uur" +msgstr[1] "%s:%s uur" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "de hele dag" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "van zonsopkomst tot zonsondergang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "dagelijks" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "officiële feestdagen" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "schoolvakanties" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "niet open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "bedraad" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "dienst" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Positienauwkeurigheid: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%su" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%su %sm" +msgstr[1] "%su %sm" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%sm" +msgstr[1] "%sm" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%ss" +msgstr[1] "%ss" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Deze plug-in biedt geen ondersteuning voor laatste aankomst" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Ga door op %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Ga door" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sla linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Sla linksaf" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sla iets linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Sla iets linksaf" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sla scherp linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Sla scherp linksaf" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sla rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Sla rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sla iets rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Sla iets rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sla scherp rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Sla scherp rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Neem op de rotonde afslag %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Neem op de rotonde de afslag naar %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Rijd de rotonde op" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Neem de lift en stap af op %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Neem de lift" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Draai 180 graden linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Draai 180 graden linksaf" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Draai 180 graden rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Draai 180 graden rechtsaf" + +#~ msgid "Don’t have an account?" +#~ msgstr "Heeft u geen account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routezoeken door OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Bestemming toevoegen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Openen met een andere toepassing" + +#~ msgid "Press enter to search" +#~ msgstr "Druk op enter om te zoeken" + +#~ msgid "Quit" +#~ msgstr "Afsluiten" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vormlaag openen…" + +#~ msgid "Load Map Layer" +#~ msgstr "Maplaag laden" + +#~ msgid "Open Layer" +#~ msgstr "Laag openen" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mijl" + +#~ msgid "%f ft" +#~ msgstr "%f voet" + +#~ msgid "Position not found" +#~ msgstr "Positie niet gevonden" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 00000000..031a380e --- /dev/null +++ b/po/oc.po @@ -0,0 +1,1706 @@ +# Occitan Translation of GNOME Maps. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Cédric Valmary (Tot en Òc) , 2015. +# Cédric Valmary (Tot en òc) , 2015. +# Cédric Valmary (totenoc.eu) , 2016, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-03-26 15:40+0000\n" +"PO-Revision-Date: 2018-06-08 09:01+0200\n" +"Last-Translator: Cédric Valmary (totenoc.eu) \n" +"Language-Team: Tot En Òc\n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapas GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Recèrca d'emplaçaments a l'entorn del monde" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L'aplicacion Mapas vos dona un accès rapid a de mapas del monde entièr. " +"Permet de trobar rapidament un emplaçament en recercant per vila o per " +"carrièra, o de situar un endreit de recontre amb un amic." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Las mapas utilizan la basa de donadas collaborativa OpenStreetMap, a la " +"quala contribuisson de centenats de milierats de personas dins lo monde " +"entièr." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Podètz quitament cercar de luòcs especifics, coma « Restaurants al costat de " +"la Catedrala d'Estrasborg » o « Ostalariás al costat d'Alexanderplatz a " +"Berlin »." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicacion cartografica simpla" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet d'afichar vòstre emplaçament sus la mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "darrièr emplaçament vist" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas del darrièr emplaçament afichat." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Talha de la fenèstra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Talha de la fenèstra (nautor e largor)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posicion de la fenèstra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posicion de la fenèstra (X e Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Fenèstra agrandida" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat d'agrandiment de la fenèstra" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre maximum de resultats de recèrca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de resultats d'una recèrca per geocòdi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidencialitat d'anonci de la localizacion sus Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion sus Facebook. Las valors possiblas son : EVERYONE (tot lo " +"monde), FRIENDS_OF_FRIENDS (amics dels amics), ALL_FRIENDS (totes los amics) " +"o SELF (siá)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidencialitat d'anonci de la localizacion Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion Foursquare. Las valors possiblas son : public (publicas), " +"followers (personas que me seguisson) o private (privat)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusion sus Facebook dels anoncis de localizacion Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Facebook associat al compte Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusion sus Twitter dels anoncis de localizacion Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Twitter associat al compte Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'utilizaire o adreça electronica OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utilizaire s'es identificat per modificar de donadas " +"OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Tipe de transpòrt utilizat al moment del darrièr itinerari" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar un compte OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Acorchis de clavièr" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "A prepaus" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Quitar" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar sus Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar sus Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Anullar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "A_nonciar sa localizacion" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tot lo monde" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics dels amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Sonque los amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Sonque ieu" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Public" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Personas que me seguisson" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "De qué i a aicí ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copiar l'emplaçament" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exportar coma imatge" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exportacion de l'afichatge" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exportar" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclure l'itinerari e los marcadors" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afichar los acorchis" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Recercar" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir l'itinerari" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitar" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afichar la mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bascular los favorits" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passar en vista cartografica" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passar en vista aeriana" + +#: ../data/ui/help-overlay.ui.h:14 +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Dobrir un jaç de formas" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +#| msgid "Open Layer" +msgid "Open Shape Layer…" +msgstr "Dobrir un jaç de formas…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar los servicis de localizacion per trobar vòstra posicion." + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paramètres de localizacion" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Causir lo tipe de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#| msgctxt "shortcut window" +#| msgid "Zoom out" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Bascular los favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Imprimir l'itinerari" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Mapas es fòra linha !" + +#: ../data/ui/main-window.ui.h:17 +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas a besonh d’una connexion Internet activa e foncionala, mas n'a pas " +"trobat cap." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Verificatz vòstra connexion e vòstres paramètres de proxy." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Apondre a un novèl itinerari" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Dobrir amb una autra aplicacion" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marcar coma favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Anonciar aqueste emplaçament coma localizacion" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"S'identificar per modificar de mapas" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudar al melhorament de las mapas amb\n" +"un compte OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Adreça de corrièr electronic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Senhal" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Connexion" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Avètz pas de compte ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"O planhèm, aquò a pas foncionat. Reensajatz o visitatz\n" +"OpenStreetMap per reïnicializar vòstre senhal." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Lo còdi de verificacion correspond pas, ensajatz encara un còp." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Sasissètz lo còdi de verificacion afichat çaisús" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verificar" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sètz inscrit" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vòstre compte OpenStreetMap es actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Desconnexion" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrièra" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Numèro d'ostal" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còdi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Vila" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipe" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Pas cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Apondre un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Las modificacions de la mapa seràn visiblas sus totas\n" +"las mapas qu'utilizan de donadas OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Darrièrament utilizat" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Anullar" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Seguent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Far veire mai d'informacion" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Quichatz sus entrada per recercar" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cap de resultat pas trobat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Fasètz lisar per modificar l'òrdre de l'itinerari" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Dobrir l'emplaçament" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Dobrir" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +#| msgid "Open Layer" +msgid "Open Shape Layer" +msgstr "Dobrir un jaç de formas" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Inversar la visibilitat" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Recèrca d'itinerari amb GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Recèrca d’itinerari amb OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itineraris per transpòrt public prepausats per GNOME utilizan\n" +"de tablèus oraris obtenguts de las companhias de transpòrt.\n" +"Aquelas companhias pòdon pas èsser tengudas responsablas dels resultats " +"afichats.\n" +"GNOME pòt pas garantir l’exactitud dels itineraris e oraris presentats.\n" +"Los noms e marcas afichats devon èsser considerats coma de marcas " +"depausadas, se fa mestièr." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Far veire mai de resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Amagar los arrèsts e informacions intermediàrias" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "Afichar los arrèsts e informacions intermediàrias" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Partir ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Despart" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribada" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Afichar" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Bus" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Mètros" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Vaissèls" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Luòc actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precision de la posicion : %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Zoomatz per apondre un emplaçament !" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Validar" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trobar una estructura de teulas dins lo repertòri" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Fracàs d'analisi d'un document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Atributs obligatòris mancants" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Impossible de trobar l'element OSM" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Afichar la version del logicial" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar un compte" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargament" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un luòc" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Facebook. " +"Seleccionatz-ne un dins aquesta lista." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Foursquare. " +"Seleccionatz-ne un dins aquesta lista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Anonciar sa localizacion a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriure un messatge opcional per vòstre anonci de localizacion a %s." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Una error s'es produita" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trobar « %s » sus la ret sociala" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trobar un endreit correspondent per anonciar sa localizacion " +"ici." + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las informacions d'autenficacion an expirat, dobrissètz Comptes en linha per " +"vos connectar e activar aqueste compte" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Itinerari dempuèi aicí" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Apondre una destinacion" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Itinerari fins a aqueste punt" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Res es pas estat trobat a aqueste endreit !" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L'emplaçament es estat apondut a la mapa, notatz qu'aquò pòt prene un moment " +"abans qu'aparesca sus la mapa e dins los resultats de recèrca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas situadas a %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Lo sistèma de fichièrs es en lectura sola" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Avètz pas la permission d'enregistrar a aqueste endreit" + +#: ../src/exportViewDialog.js:158 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Lo dorsièr existís pas" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Cap de nom de fichièr pas indicat" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d'exportar l'afichatge" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada pas valabla" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error d'analisi" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Fracàs de la recèrca d'itinerari." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Cap d'itinerari pas trobat." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Es partit !" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Totes los fichièrs de jaces" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Fracàs a la connexion al servici de localizacion" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "Cédric Valmary (totenoc.eu) " + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Una aplicacion cartografica per GNOME" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2017 Red Hat, Inc. e los autors de Mapas de GNOME" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Donadas cartograficas de %s e contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Lo tipe de fichièr es pas pris en charge" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Fracàs de dobertura del jaç" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Fracàs de dobertura de la Geo URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Cap d'alternativa precedenta pas trobada." + +#: ../src/openTripPlanner.js:614 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "Cap d'alternativa seguenta pas trobada." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'utilizaire o senhal incorrècte" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Marrida requèsta" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objècte pas trobat" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, qualqu'un mai ven de modificar l'objècte" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objècte es estat suprimit" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lo camin o la relacion se referís a d'enfants qu'existisson pas" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Lo nom oficial. Es en general çò qu'es escrit sus l'ensenha." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Site internet" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Lo site officiel. Ensajatz d'utilizar la forma la plus simple per l'URL, es " +"a dire http://example.com al luòc de http://example.com/index.html." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefòn" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numèro de telefòn. Utilizatz lo format internacional, en començant per un " +"signe +. Atencion a las leis localas sus la vida privada, sustot pels " +"numéros de telefòn dels particulars." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Wikipèdia" + +#: ../src/osmEditDialog.js:140 +#| msgid "" +#| "The format used should include the language code and the article title " +#| "like ”en:Article title”." +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Lo format utilizat deuriá comprene lo còdi lenga e lo títol de l’article, " +"coma « oc:Títol de l’article »." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Oras de dobertura" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Veire lo ligam dins l'etiqueta per de l'ajuda sul format." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacion" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevacion (nautor en dessús del nivèl de la mar) d'un punt en mètres." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Accès als fautuèlhs rotlants" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "òc" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Non" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Reservat" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Accès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Fialar" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servici" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Baaïsme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Bodisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Indoïsme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jaïnisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaïsme" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Mantuna religion" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Scientologie" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Shintoïsme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoïsme" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodó" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Iezidisme" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Comuns" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nòta" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacions utilizadas per informar d’autres cartografes sus las " +"informacions non evidentas sus un element, l’intencion de l’autor al moment " +"de sa creacion, o de las indicacions per de possibles melhoraments." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Seleccionar un tipe" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Fait" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Populacion :" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Altitud :" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Oras de dobertura :" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Accès internet :" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Religion :" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Comuns :" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Accès als fautuèlhs rotlants :" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefòn :" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Fracàs a l'analisi de la Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "òc" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "non" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "reservat" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargament de las teulas de mapa per l'impression" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podètz interrompre l'impression se cela pren tròp de temps" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l'impression" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +#| msgid "last viewed location" +msgid "Add via location" +msgstr "Apondre un emplaçament intermediari" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +#| msgid "Open location" +msgid "Remove via location" +msgstr "Suprimir l’emplaçament intermediari" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Camin invèrse" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Fracàs de dobertura de l'URI" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "impossible de cargar lo fichièr" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat : %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribada a %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Arribada" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Despart de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +#| msgid "Start!" +msgid "Start" +msgstr "Despart" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Afichar las instruccions de caminada a pè" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Amagar las instruccions de caminada a pè" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar las alternativas precedentas" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar las alternativas seguentas" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuta" +msgstr[1] "%d minutas" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ora" +msgstr[1] "%d oras" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ora" +msgstr[1] "%d:%02d oras" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24h/24" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "del sortir al colcar del solelh" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada jorn" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "comjats" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "comjats escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "tampat" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "filar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servici" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar lo jaç cartografic" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posicion pas trobada" + +#~ msgid "Country code: %s" +#~ msgstr "Còdi del país : %s" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Dobrir un jaç de formas…" + +#~ msgid "Open Layer" +#~ msgstr "Dobrir la couche" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 00000000..9355ee16 --- /dev/null +++ b/po/pa.po @@ -0,0 +1,1895 @@ +# Punjabi translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# A S Alam , 2013, 2014, 2015, 2016, 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-30 20:30+0000\n" +"PO-Revision-Date: 2020-03-04 20:50-0800\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Lokalize 19.04.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ਗਨੋਮ ਨਕਸ਼ੇ" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ਸੰਸਾਰ ਭਰ ਵਿੱਚ ਥਾਵਾਂ ਨੂੰ ਲੱਭੋ" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਤੁਹਾਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ ਨਕਸ਼ੇ ਉਪਲੱਬਧ ਕਰਵਾਉਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਤੁਰੰਤ" +" ਸ਼ਹਿਰ ਜਾਂ ਸੜਕਾਂ ਦੇ ਨਾਂ " +"ਰਾਹੀਂ ਥਾਂ ਲੱਭਣ ਲਈ ਜਾਂ ਮਿੱਤਰ ਨੂੰ ਮਿਲਣ ਲਈ ਥਾਂ ਪੱਕਾ ਕਰਨ ਲਈ ਮੱਦਦ ਕਰਦੀ ਹੈ।" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਸਾਂਝਾ OpenStreetMap ਡਾਟਾਬੇਸ ਵਰਤਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ" +" ਲੱਖਾਂ-ਕਰੋੜਾਂ ਲੋਕਾਂ " +"ਵਲੋਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ਤੁਸੀਂ ਟਿਕਾਣਿਆਂ ਦੀ ਖਾਸ ਕਿਸਮ ਲਈ ਵੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ \"ਮੇਨ ਸਟਰੀਟ, ਬੋਸਟਨ" +" ਨੇੜੇ ਪੱਬ\" " +"ਜਾਂ \"ਅਲੈਗਜੈਂਡਰਪਲੇਟਜ਼, ਬਰਲਿਨ ਨੇੜੇ ਹੋਟਲ\"।" + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "ਨਕਸ਼ਾ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ਸੌਖੀ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "ਨਕਸ਼ਾ;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਦਿਖਾਉਣ ਲਈ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ਪਿਛਲਾ ਵੇਖਿਆ ਟਿਕਾਣਾ" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ਪਿਛਲੇ ਵੇਖੇ ਗਏ ਟਿਕਾਣੇ ਦੇ ਧੁਰੇ।" + +#: data/org.gnome.Maps.gschema.xml:21 +#| msgctxt "shortcut window" +#| msgid "Map View" +msgid "Map type" +msgstr "ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "ਵਿੰਡੋ ਆਕਾਰ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (X ਅਤੇ Y)।" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "ਜੀਓਕੋਡ ਖੋਜ ਤੋਂ ਵੱਧ ਤੋਂ ਵੱਧ ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਟਿਕਾਣਿਆਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਸਥਾਨਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਹਰੇਕ," +" ਦੋਸਤਾਂ_ਦੇ_ਦੋਸਤ, ਸਭ_ਦੋਸਤ, ਜਾਂ " +"ਖੁਦ" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "ਫੋਰਸਿਕਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਪਬਲਿਕ, ਫ਼ੋਲਅਰ ਜਾਂ" +" ਪ੍ਰਾਈਵੇਟ।" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਫੇਸਬੁੱਕ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ" +" ਫੇਸਬੁੱਕ ਖਾਤੇ ਵਿੱਚ ਪੋਸਟ ਵਜੋਂ " +"ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਟਵਿੱਟਰ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਟਵਿੱਟਰ" +" ਖਾਤੇ ਵਿੱਚ ਟਵਿੱਟ " +"ਵਜੋਂ ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਈਮੇਲ ਪਤਾ" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਵਰਤੋਂਕਾਰ ਨੇ OpenStreetMap ਡਾਟੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਈਨ ਇਨ ਕੀਤਾ ਹੈ।" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ਵੇਖਣਯੋਗਤਾ" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ਫੇਸਬੁੱਕ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "ਟਵਿੱਟਰ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "ਚੈਕ ਇਨ(_h)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "ਹਰੇਕ" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "ਦੋਸਤਾਂ ਦੇ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "ਕੇਵਲ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ਕੇਵਲ ਮੈਂ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "ਪਬਲਿਕ" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "ਫ਼ੌਲਅਰ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "ਇੱਥੇ ਤੋਂ ਰੂਟ" + +#: data/ui/context-menu.ui:16 +#| msgid "Add destination" +msgid "Add intermediate destination" +msgstr "ਵਿਚਕਾਰਲੀ ਮੰਜ਼ਲ ਜੋੜੋ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "ਇੱਥੇ ਤੱਕ ਰੂਟ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "ਇੱਥੇ ਕੀ ਹੈ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਕਾਪੀ ਕਰੋ" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "ਐਕਸਪੋਰਟ(_I)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "ਰੂਟਾਂ ਅਤੇ ਚਿੰਨ੍ਹਾਂ ਸਮੇਤ" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "ਆਮ" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਵੇਖੋ" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "ਖੋਜੋ" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "ਬਾਹਰ" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "ਨਕਸ਼ੇ ਦੀ ਝਲਕ" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "ਸਕੇਲ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "ਸੜਕੀ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "ਹਵਾਈ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:101 +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +#| msgid "Open Layer" +msgid "Open Shape Layer…" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "ਆਪਣੇ ਟਿਕਾਣੇ ਨੂੰ ਲੱਭਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤੇ ਨੂੰ ਸੈਟਅੱਪ ਕਰੋ" + +#: data/ui/main-window.ui:12 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "ਚਿੱਤਰ ਵਜੋਂ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)" + +#: data/ui/main-window.ui:22 +#| msgid "About" +msgid "About Maps" +msgstr "ਨਕਸ਼ੇ ਬਾਰੇ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "ਨਕਸ਼ਾ ਕਿਸਮ ਚੁਣੋ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +#| msgctxt "shortcut window" +#| msgid "Zoom out" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "ਪਸੰਦਾਂ ਨੂੰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "ਨਕਸ਼ੇ ਆਫਲਾਈਨ ਹਨ!" + +#: data/ui/main-window.ui:260 +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਸਰਗਰਮ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਇਹ ਮਿਲਿਆ" +" ਨਹੀਂ।" + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਤੇ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਦੀ ਜਾਂਚ ਕਰੋ।" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "ਨਵੇਂ ਰੂਟ ਵਿੱਚ ਜੋੜੋ" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +#| msgid "Open location" +msgid "Share location" +msgstr "ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰੋ" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "ਪਸੰਦ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਗਾਓ" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "ਇੱਥੇ ਚੈਕ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤਾ" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap ਖਾਤੇ ਨਾਲ ਨਕਸ਼ੇ ਨੂੰ\n" +" ਸੁਧਾਰਨ ਲਈ ਮਦਦ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ਈਮੇਲ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ਪਾਸਵਰਡ" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "ਸਾਇਨ ਇਨ" + +#: data/ui/osm-account-dialog.ui:146 +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "ਖਾਤਾ ਨਹੀਂ ਹੈ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"ਅਫਸੋਸ, ਇਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਬਾਅਦ 'ਚ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਮੁੜ-ਸੈੱਟ" +" ਕਰਨ ਲਈ \n" +"OpenStreetMap ਨੂੰ ਖੋਲ੍ਹੋ।" + +#: data/ui/osm-account-dialog.ui:172 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "ਤਸਦੀਕ ਕਰਨ ਵਾਲਾ ਕੋਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਤਸਦੀਕੀ ਕੋਡ ਦਿਓ" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "ਤਸਦੀਕ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "ਤੁਹਾਡਾ OpenStreetMap ਖਾਤਾ ਹੁਣ ਸਰਗਰਮ ਹੈ।" + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "ਸਾਇਨ ਆਉਟ" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "ਗਲੀ" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "ਘਰ ਨੰਬਰ" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "ਡਾਕ ਕੋਡ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "ਸ਼ਹਿਰ" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "ਕਿਸਮ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ਖੇਤਰ ਨੂੰ ਜੋੜੋ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "ਟਿੱਪਣੀ" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "ਤਾਜ਼ਾ ਵਰਤੇ ਗਏ" + +#: data/ui/osm-edit-dialog.ui:280 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "ਅੱਗੇ" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "ਹੋਰ ਜਾਣਕਾਰੀ ਵੇਖੋ" + +#: data/ui/place-popover.ui:54 +#| msgid "No route found." +msgid "No results found" +msgstr "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "ਰੂਟ ਦਾ ਕ੍ਰਮ ਬਦਲਣ ਲਈ ਖਿੱਚੋ" + +#: data/ui/send-to-dialog.ui:10 +#| msgid "Open location" +msgid "Open Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਖੋਲ੍ਹੋ" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "…ਨੂੰ ਭੇਜੋ" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +#| msgid "Open Layer" +msgid "Open Shape Layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "ਖੋਲ੍ਹੋ(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "ਦਿੱਖ ਨੂੰ ਬਦਲੋ" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ਗਰਾਫਹੋਪਰ ਵਲੋਂ ਰੂਟ ਖੋਜ" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "ਹੋਰ ਨਤੀਜੇ ਵੇਖੋ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਲੁਕਾਓ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ਹੁਣੇ ਚੱਲੋ" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "ਤੱਕ ਚੱਲੋ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "ਤੱਕ ਪਹੁੰਚ" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "ਸ਼ੋਅ" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ਬੱਸਾਂ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ਟਰਾਮਾਂ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ਟਰੇਨਾਂ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "ਸਬ-ਵੇਅ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ਫੈਰੀ" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "ਹਵਾਈ-ਜਹਾਜ਼" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣਾ" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਜੋੜਨ ਲਈ ਜ਼ੂਮ ਇਨ ਕਰੋ!" + +#: data/ui/zoom-in-dialog.ui:38 +#| msgctxt "shortcut window" +#| msgid "Zoom in" +msgid "Zoom In" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਟਾਈਲ ਢਾਂਚੇ ਨੂੰ ਲੱਭਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML ਡੌਕੂਮੈਂਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ਲੋੜੀਂਦੇ ਗੁਣ ਗੁੰਮ ਹਨ" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ਐਲੀਮੈਂਟ ਨੂੰ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "ਲੋਕਲ ਟਾਈਲ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚੇ ਲਈ ਮਾਰਗ" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜ਼ਨ ਵੇਖੋ" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "ਨੈੱਟਵਰਕ ਉਪਲਬਟਾ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ਖਾਤੇ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ਸਥਾਨ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੇਸਬੁੱਕ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੋਰਸਕਿਉਰ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ਲਈ ਚੈਕ ਇਨ" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ਵਿੱਚ ਚੈਕ ਇਨ ਕਰਨ ਲਈ ਚੋਣਵਾਂ ਸੁਨੇਹਾ ਲਿਖੋ।" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ਗਲਤੀ ਆਈ" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ਸਮਾਜਿਕ ਸੇਵਾ ਵਿੱਚ “%s“ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "ਇਹ ਟਿਕਾਣੇ ਵਿੱਚ ਚੈਕ-ਇਨ ਕਰਨ ਲਈ ਢੁੱਕਵਾਂ ਸਥਾਨ ਲੱਭਿਆ ਨੀਹਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"ਸਨਦ ਦੀ ਮਿਆਦ ਪੁੱਗੀ, ਕਿਰਪਾ ਕਰਕੇ ਸਾਇਨ ਇਨ ਕਰਨ ਤੇ ਇਹ ਖਾਤੇ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਆਨਲਾਈਨ" +" ਖਾਤਿਆਂ ਨੂੰ " +"ਖੋਲ੍ਹੋ।" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "ਕੁਝ ਵੀ ਨਹੀਂ ਲੱਭਿਆ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਜੋੜਿਆ ਗਿਆ, ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਅਤੇ ਖੋਜ ਨਤੀਜਿਆਂ" +" ਵਿੱਚ ਆਉਣ ਲਈ ਕੁਝ " +"ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "ਨਕਸ਼ਾ %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "ਫਾਇਲ-ਸਿਸਟਮ ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ ਹੈ" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "ਤੁਹਾਡੇ ਕੋਲ ਉੱਥੇ ਸੰਭਾਲਣ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ" + +#: src/exportViewDialog.js:158 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "ਡਾਇਰੈਕਟਰੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ਕੋਈ ਫਾਇਲ-ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ਗਲਤ ਧੁਰੇ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ਪਾਰਸ ਕਰਨ ਦੀ ਗਲਤੀ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ਅਣਜਾਣ ਜੁਮੈਟਰੀ" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "ਰੂਟ ਬੇਨਤੀ ਫੇਲ੍ਹ ਹੋਈ।" + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "ਕੋਈ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "ਸ਼ੁਰੂ!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "ਸਾਰੀਆਂ ਪਰਤਾਂ ਫਾਈਲਾਂ" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "ਟਿਕਾਣਾ ਸੇਵਾ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" +"ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "ਗਨੋਮ ਲਈ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "ਕਾਪੀਰਾਈਟ © 2011 – 2019 Red Hat, Inc. ਅਤੇ ਗਨੋਮ ਨਕਸ਼ਾ ਡਿਵੈਲਪਰ" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "ਨਕਸ਼ੇ ਦਾ ਡਾਟਾ %s ਅਤੇ ਯੋਗਦਾਨੀਆਂ ਵਲੋਂ" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "ਨਕਸ਼ੇ ਲਈ ਨਾਂ %s ਵਲੋਂ ਦਿੱਤੇ" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "ਖੋਜ %s ਰਾਹੀਂ %s ਵਰਤ ਕੇ ਦਿੱਤੀ ਗਈ ਹੈ" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "ਫਾਇਲ ਦੀ ਕਿਸਮ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "ਪਰਤ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "GeoURI ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "ਗਲਤ ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "ਕਾਮਯਾਬ" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "ਗਲਤ ਬੇਨਤੀ" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "ਆਬਜੈਕਟ ਨਹੀਂ ਲੱਭਿਆ" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "ਟਕਰਾ, ਕਿਸੇ ਨੇ ਹੁਣੇ ਹੀ ਆਬਜੈਕਟ ਨੂੰ ਸੋਧਿਆ ਹੈ" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "ਆਬਜੈਕਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "ਪਤਾ" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "ਵੈੱਬਸਾਈਟ" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ਫ਼ੋਨ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "ਵਿਕਿਪੀਡਿਆ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ਆਬਾਦੀ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ਉਚਾਈ" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ਸੀਮਿਤ" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "ਨਿਯਤ ਕੀਤਾ" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ਟਰਮੀਨਲ" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "ਸੇਵਾ" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "ਧਰਮ" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "ਅਨੀਮੀਸਮ" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ਬਾਹਾਈ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ਬੁੱਧ" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ਇਸਾਈ" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "ਕਨਫਿਊਸ਼ੀਵਾਦ" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ਹਿੰਦੂ" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ਜੈਨ" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "ਯਹੂਦੀ" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ਇਸਲਾਮ" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "ਕਈ ਧਰਮ" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "ਪਾਗਾਨੀਸਮ" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "ਪਾਸਟਾਫਾਰਿਨੇਮ" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "ਸਾਇੰਸਟੋਲੋਜੀ" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ਸ਼ਿਨਟੋ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "ਸਿੱਖੀ" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "ਅਧਿਆਤਮਵਾਦ" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "ਤਾਓਵਾਦ" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "ਵੂਡੂ" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "ਯਾਜ਼ਿਡੀਸਮ" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "ਪਾਰਸੀ" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "ਗੁਸਲਖਾਨੇ" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "ਨੋਟ" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "ਕਿਸਮ ਨੂੰ ਚੁਣੋ" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ਮੁਕੰਮਲ" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "ਬੇਨਾਮ ਥਾਂ" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ਆਬਾਦੀ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ਉਚਾਈ:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "ਧਰਮ:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "ਗੁਸਲਖਾਨੇ:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ਫ਼ੋਨ:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "ਜੀਓ URI ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ਹਾਂ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ਸੀਮਿਤ" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ਨਹੀਂ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "ਮਕਸਦ" + +#: src/place.js:475 +#| msgid "Edit on OpenStreetMap" +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਥਾਂ ਨਹੀਂ ਲੱਭੀ" + +#: src/place.js:495 +#| msgid "OpenStreetMap Account" +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL ਵਾਜਬ ਨਹੀਂ ਹੈ" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL ਵਿੱਚ ਦਿੱਤੇ ਧੁਰੇ ਵਾਜਬ ਨਹੀਂ ਹਨ" + +#: src/place.js:521 +#| msgid "File type is not supported" +msgid "URL is not supported" +msgstr "URL ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s ਤੋਂ %s ਤੱਕ" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਲਈ ਨਕਸ਼ਿਆਂ ਦੇ ਨਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "ਜੇ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲੰਮਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ ਤਾਂ ਤੁਸੀਂ ਪਰਿੰਟ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹੋ" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਨੂੰ ਵਿਚੇ ਛੱਡੋ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +#| msgid "last viewed location" +msgid "Add via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਜੋੜੋ" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +#| msgid "Open location" +msgid "Remove via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਹਟਾਓ" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "ਉਲਟ ਰਾਹ" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "%s ਤੋਂ %s ਜੋੜੋ" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URL ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "ਅੰਦਾਜ਼ਨ ਸਮਾਂ: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s ਵਲੋਂ ਸਫ਼ਰਨਾਮਾ ਦਿੱਤਾ" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s ਵਜੇ ਸ਼ੁਰੂ ਕਰੋ" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +#| msgid "Start!" +msgid "Start" +msgstr "ਸ਼ੁਰੂ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s ਤੁਰੋ" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s ਵਜੇ ਪਹੁੰਚੋ" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "ਪਹੁੰਚ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਦਿਖਾਓ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਲੁਕਾਓ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "ਸਵਖਤੇ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "ਬਾਦ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "ਕੋਈ ਸਵਖਤੇ ਦਾ ਬਦਲ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitMoreRow.js:56 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "ਕੋਈ ਬਦਲਵਾਂ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਸਮਾਂ-ਸਾਰਣੀ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਪੂਰਕ ਨਹੀਂ ਲੱਭਿਆ।" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d ਮਿੰਟ" +msgstr[1] "%d ਮਿੰਟ" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ਘੰਟਾ" +msgstr[1] "%d ਘੰਟੇ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ਘੰਟਾ" +msgstr[1] "%d:%02d ਘੰਟੇ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "ਚੌਵੀਂ ਘੰਟੇ" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "ਸੂਰਜ ਚੜ੍ਹਨ ਤੋਂ ਸੂਰਜ ਡੁੱਬਣ ਤੱਕ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ਹਰ ਰੋਜ਼" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "ਪਬਲਿਕ ਛੁੱਟੀਆਂ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "ਸਕੂਲ ਛੁੱਟੀਆਂ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ਖੁੱਲ੍ਹਾ ਨਹੀਂ" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ਟਰਮੀਨਲ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "ਸੇਵਾ" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "ਸ਼ੁੱਧਤਾ: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "ਠੀਕ-ਠੀਕ" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f ਮਿੰਟ" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f ਸ" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s ਕਿਮੀ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s ਮੀ" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s ਮੀਲ" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ਫੁੱਟ" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "%s ਉੱਤੇ ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr " %s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "ਸੱਜ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "ਥੋੜ੍ਹਾ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "ਗੋਲ ਚੱਕਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ ਅਤੇ %s ਉੱਤੇ ਉਤਰ ਜਾਓ" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "ਖੱਬੀ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#~ msgid "Quit" +#~ msgstr "ਬਾਹਰ" + +#~ msgid "Load Map Layer" +#~ msgstr "ਨਕਸ਼ੇ ਦੀ ਪਰਤ ਨੂੰ ਲੋਡ ਕਰੋ" + +#~ msgid "Open with another application" +#~ msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਖੋਲ੍ਹੋ" + +#~ msgid "Press enter to search" +#~ msgstr "ਖੋਜ ਕਰਨ ਲਈ ਐਂਟਰ ਦਬਾਉ" + +#~ msgid "OK" +#~ msgstr "ਠੀਕ ਹੈ" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f ਮੀਲ" + +#~ msgid "%f ft" +#~ msgstr "%f ਫੁੱਟ" + +#~ msgid "Country code: %s" +#~ msgstr "ਦੇਸ਼ ਕੋਡ: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਤੇ ਸ਼ੁੱਧਤਾ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ (ਲੰਬਕਾਰ ਤੇ ਵਿਸਥਾਰ ਡਿਗਰੀਆਂ ਵਿੱਚ) ਤੇ ਸ਼ੁੱਧਤਾ (ਮੀਟਰਾਂ ਵਿੱਚ)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ਯੂਜ਼ਰ ਦੇ ਆਖਰੀ ਜਾਣੇ ਟਿਕਾਣੇ ਦਾ ਵੇਰਵਾ" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ਕੀ ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਯੂਜ਼ਰ ਵਲੋਂ ਖੁਦ ਤਹਿ ਕੀਤਾ ਸੀ।" + +#~ msgid "I’m here!" +#~ msgstr "ਮੈਂ ਇੱਥੇ ਹਾਂ!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "ਸੈਟੇਲਾਈਟ" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..33a63433 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1916 @@ +# Polish translation for gnome-maps. +# Copyright © 2013-2020 the gnome-maps authors. +# This file is distributed under the same license as the gnome-maps package. +# Piotr Drąg , 2013-2020. +# Paweł Żołnowski , 2014-2015. +# Aviary.pl , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-22 15:49+0200\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Wyszukiwanie miejsc na świecie" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapy zapewniają szybki dostęp do map całego świata oraz umożliwiają szybkie " +"wyszukiwanie miejsc według miast i ulic. Pomogą również ustalić miejsce " +"spotkania z przyjaciółmi." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy udostępniane są przez projekt OpenStreetMap, który jest tworzony przez " +"setki tysięcy ludzi z całego świata." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Można nawet wyszukiwać konkretne rodzaje miejsc, takie jak „Puby w pobliżu " +"ulicy Marszałkowskiej, Warszawa” lub „Hotspot Wi-Fi na Rynku, Wrocław”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Prosty program do wyświetlania map" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "" +"Mapy;Mapa;Satelita;Satelitarna;Położenie;Lokalizacja;Współrzędne;Geografia;" +"Geograficzne;GPS;Ulica;Miasto;Województwo;Kraj;Państwo;Dojazd;Gdzie jestem;" +"Jak dojechać;Jak dojadę;Trasa;Trasy;Wycieczka;Wycieczki;Planowanie;Autobusy;" +"Tramwaje;Pociągi;Metro;Promy;OpenStreetMap;OpenTripPlanner;Foursquare;" +"Meldowanie;Zamelduj się;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umożliwia wyświetlenie położenia użytkownika na mapie." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ostatnio wyświetlane położenie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Współrzędne ostatnio wyświetlanego położenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "powiększenie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Poziom powiększenia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ wyświetlanej mapy (zwykła, satelitarna itp.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Rozmiar okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Rozmiar okna (szerokość i wysokość)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Położenie okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Położenie okna (na osi X i Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maksymalizacja okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stan maksymalizacji okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksymalna liczba wyników wyszukiwania" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksymalna liczba wyników wyszukiwania geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Liczba ostatnich miejsc do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Liczba ostatnio odwiedzonych miejsc do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Liczba ostatnich tras do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Liczba ostatnio odwiedzonych tras do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Facebook dotyczące meldowania" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Facebook dotyczące meldowania. " +"Możliwe wartości: „EVERYONE” (wszyscy), „FRIENDS_OF_FRIENDS” (znajomi " +"znajomych), „ALL_FRIENDS” (wszyscy znajomi) lub „SELF” (tylko ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Foursquare dotyczące meldowania" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Foursquare dotyczące " +"meldowania. Możliwe wartości to: „public” (publiczne), " +"„followers” (obserwujący) lub „private” (prywatne)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako post na koncie " +"w serwisie Facebook powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako tweet na koncie " +"w serwisie Twitter powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nazwa użytkownika lub adres e-mail w serwisie OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Czy użytkownik jest zalogowany, aby modyfikować dane OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Ostatnio używany typ transportu dla tras" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Tryb nocny" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Czy program jest w trybie nocnym." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hybrydowe kafle satelitarne" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Czy kafle satelitarne mają używać stylu hybrydowego (z etykietami)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Widoczność" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Udostępnij w serwisie Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Udostępnij w serwisie Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anuluj" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Za_melduj się" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Wszyscy" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Znajomi znajomych" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tylko znajomi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tylko ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publiczne" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Obserwujący" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Prywatne" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa stąd" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj cel pośredni" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa dotąd" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co tutaj jest?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopiuj położenie" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj do serwisu OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksport widoku" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Wy_eksportuj" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Dołączenie tras i znaczników" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Przechodzi do obecnego położenia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Wybiera rodzaj mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Pomniejsza" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Powiększa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Włącza planowanie trasy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Włącza ulubione" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Drukuje trasę" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ogólne" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Wyświetlenie skrótów" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Wyszukiwanie" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Przełączenie planowania trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Wydrukowanie trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zakończenie działania" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otwarcie menu głównego" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Widok mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Powiększenie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pomniejszenie" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Przełączenie skali" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Przejście do obecnego położenia" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Przełączenie na widok mapy" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Przełączenie na widok satelitarny" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etykiety" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otwórz warstwę figur…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Włączenie usług położenia umożliwia odnalezienie bieżącego położenia" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anuluj" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ustawienia położenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Tryb nocny" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ustaw konto serwisu OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Wyeksportuj jako obraz" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programie" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Otwórz menu główne" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Wyszukiwanie trasy" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapy są w trybie offline." + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Nie wykryto połączenia z Internetem, które jest potrzebne do prawidłowego " +"działania Map." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Proszę sprawdzić ustawienia połączenia oraz pośrednika." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaje do nowej trasy" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Udostępnia położenie" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Oznacza jako ulubione" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Melduje w tym miejscu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto serwisu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Zalogowanie umożliwia modyfikowanie " +"map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Można pomóc ulepszyć mapę za pomocą\n" +"konta serwisu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Hasło" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zarejestruj się" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Zaloguj się" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"To nie zadziałało. Proszę spróbować ponownie lub przejść do serwisu\n" +"OpenStreetMap, aby przywrócić hasło." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kod weryfikacyjny się nie zgadza. Proszę spróbować ponownie." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Proszę podać kod weryfikacji widoczny powyżej" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Weryfikuj" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Zalogowano" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Konto serwisu OpenStreetMap jest aktywne." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Wyloguj się" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numer domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kod pocztowy" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miasto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brak" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentarz" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmiany mapy będą widoczne na wszystkich mapach\n" +"używających danych serwisu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Ostatnio używane" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modyfikacja w serwisie OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dalej" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Modyfikuje w serwisie OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Wyświetla więcej informacji" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Brak wyników" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Przeciągnięcie zmienia kolejność trasy" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otwarcie położenia" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Skopiuj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Wyślij do…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otwórz" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Przełącza widoczne" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Wyszukiwanie trasy za pomocą oprogramowania GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Trasy transportu publicznego są dostarczane przez zewnętrzne serwisy.\n" +"Projekt GNOME nie gwarantuje prawidłowości wyświetlanych rozkładów.\n" +"Proszę zauważyć, że część dostawców może nie podawać wszystkich dostępnych\n" +"środków transportu, np. krajowy dostawca może nie podawać lotów, a lokalny\n" +"może nie podawać pociągów regionalnych.\n" +"Widoczne nazwy i marki są zastrzeżonymi znakami towarowymi ich właścicieli." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Wyświetl więcej wyników" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ukrywa przystanki pośrednie i informacje" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Wyświetla przystanki pośrednie i informacje" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Wyjście teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Wyjście przed" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Przybycie przed" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Wyświetlanie" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramwaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Pociągi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Promy" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Loty" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Obecne położenie" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Należy powiększyć, aby dodać położenie." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Powiększ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Odnalezienie struktury kafli w katalogu się nie powiodło" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Przetworzenie dokumentu XML się nie powiodło" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Brak wymaganych atrybutów" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nie można odnaleźć elementu OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Ścieżka do lokalnej struktury katalogów kafli" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Rozmiar kafli dla katalogu lokalnych kafli" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Wyświetla wersję programu" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignoruje dostępność sieci" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[PLIK…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Wybór konta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Wczytywanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Wybór miejsca" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Facebook. Proszę " +"wybrać miejsce z listy." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Foursquare. Proszę " +"wybrać miejsce z listy." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Zameldowanie w „%s”" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Można napisać wiadomość związaną z zameldowaniem się w „%s”." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Wystąpił błąd" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nie odnaleziono „%s” w serwisie społecznościowym" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "W tym położeniu nie odnaleziono odpowiedniego miejsca do zameldowania" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uwierzytelnienie wygasło. Proszę otworzyć Konta online, aby zalogować się " +"lub włączyć to konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nic tu nie odnaleziono." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Dodano położenie do mapy. Proszę zauważyć, że może minąć trochę czasu, zanim " +"pojawi się ono na mapie i w wynikach wyszukiwania." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa dla %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "System plików jest tylko do odczytu" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Brak uprawnień do zapisywania w tym miejscu" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalog nie istnieje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie podano nazwy pliku" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie można wyeksportować widoku" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nieprawidłowe współrzędne" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "błąd przetwarzania" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nieznana geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Żądanie trasy się nie powiodło." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nie odnaleziono żadnej trasy." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Wszystkie pliki warstw" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Połączenie z usługą położenia się nie powiodło" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Piotr Drąg , 2013-2020\n" +"Paweł Żołnowski , 2014-2015\n" +"Aviary.pl , 2013-2020" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Mapy dla środowiska GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011-2019 Red Hat, Inc. i autorzy Map GNOME" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dane mapy autorstwa %s i współtwórców" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa dostarczana przez %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Funkcja wyszukiwania dostarczana przez %s za pomocą %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Typ pliku jest nieobsługiwany" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Otwarcie warstwy się nie powiodło" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Otwarcie adresu GeoURI się nie powiodło" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Niepoprawna nazwa użytkownika lub hasło" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Powodzenie" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Błędne żądanie" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nie odnaleziono obiektu" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, ktoś inny właśnie zmodyfikował obiekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Usunięto obiekt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Droga lub związek odnosi się do nieistniejących elementów potomnych" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nazwa" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficjalna nazwa. Zwykle pojawia się na znakach." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Strona WWW" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficjalna strona WWW. Proszę używać najbardziej podstawowej formy adresu " +"URL, tzn. „http://example.com” zamiast „http://example.com/index.html”." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numer telefonu. Proszę używać formatu międzynarodowego, zaczynając znakiem " +"„+”. Proszę przestrzegać lokalnych praw do prywatności, zwłaszcza w stosunku " +"do prywatnych numerów telefonów." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Używany format powinien zawierać kod języka i tytuł artykułu, np. „pl:Tytuł " +"artykułu”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Godziny otwarcia" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" +"Więcej informacji o formacie znajduje się pod odnośnikiem na etykiecie." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Liczba mieszkańców" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Wysokość" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Wyniesienie (wysokość ponad poziomem morza) miejsca w metrach." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Dostęp dla osób na wózku" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Tak" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ograniczony" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Specjalnie zaprojektowany" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Dostęp do Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Przewodowy" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Na miejscu" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Obsługa" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religia" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizm" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddyzm" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Chrześcijaństwo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucjanizm" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Dźinizm" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizm" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Wiele religii" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Pogaństwo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizm" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scjentologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shintō" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhizm" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spirytualizm" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizm" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Uniwersalizm unitariański" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jazydyzm" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratusztrianizm" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Uwaga" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Używane do informowania innych twórców map o nieoczywistych informacjach " +"o elemencie, intencjach autora przy jego tworzeniu lub wskazówkach na dalsze " +"ulepszenia." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodanie do serwisu OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Wybór typu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotowe" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Miejsce bez nazwy" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Liczba mieszkańców:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Wysokość:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Godziny otwarcia:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Dostęp do Internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religia:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalety:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Dostęp dla osób na wózku:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Przetworzenie adresu URI Geo się nie powiodło" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "tak" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ograniczony" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nie" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "specjalnie zaprojektowany" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Nie odnaleziono tego miejsca w serwisie OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Adres URL serwisu OpenStreetMap jest nieprawidłowy" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Współrzędne w adresie URL są nieprawidłowe" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Nieobsługiwany adres URL" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Z %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Wczytywanie mapy do wydrukowania" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Można przerwać drukowanie, jeśli trwa to za długo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Przerwij drukowanie" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaje położenie pośrednie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Usuwa położenie pośrednie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Odwraca trasę" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s do programu %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Otwarcie adresu URI się nie powiodło" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otwórz za pomocą „%s”" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "wczytanie pliku się nie powiodło" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Przybliżony czas: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Trasy dostarczane przez %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Początek w: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Początek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Przejście %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Przybycie do: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Przybycie" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wyświetla wskazówki" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ukrywa wskazówki" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Wczytaj wcześniejsze możliwości" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Wczytaj późniejsze możliwości" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nie odnaleziono wcześniejszych możliwości." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nie odnaleziono późniejszych możliwości." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nie odnaleziono rozkładu jazdy dla tej trasy." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nie odnaleziono dostawcy dla tej trasy." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s-%s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s godzina" +msgstr[1] "%s godziny" +msgstr[2] "%s godzin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s godzina" +msgstr[1] "%s∶%s godziny" +msgstr[2] "%s∶%s godzin" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "całą dobę" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od świtu do zmierzchu" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "codziennie" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "dni ustawowo wolne od pracy" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "wakacje/ferie szkolne" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "zamknięte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "przewodowy" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "na miejscu" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "obsługa" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Dokładność: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nieznana" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Dokładna" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s godz." + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s godz. %s min" +msgstr[1] "%s godz. %s min" +msgstr[2] "%s godz. %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta wtyczka nie obsługuje najpóźniejszego przybycia" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Kontynuuj na: %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Kontynuuj" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skręć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Skręć w lewo" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skręć lekko w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Skręć lekko w lewo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skręć gwałtownie w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Skręć gwałtownie w lewo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skręć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Skręć w prawo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skręć lekko w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Skręć lekko w prawo" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skręć gwałtownie w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Skręć gwałtownie w prawo" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rondzie zjedź w: %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rondzie zjedź do: %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Wjedź na rondo" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Wejdź do windy i wysiądź na: %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Wejdź do windy" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Zawróć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Zawróć w lewo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Zawróć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Zawróć w prawo" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..db8c26f3 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,1993 @@ +# Portuguese translation for gnome-maps. +# Copyright © 2013, 2014 gnome-maps +# This file is distributed under the same license as the gnome-maps package. +# António Lima , 2013. +# Duarte Loreto , 2014. +# Tiago Santos , 2014 - 2016. +# Pedro Albuquerque , 2015. +# Bruno Ramalhete , 2016. +# Juliano Camargo , 2020. +# Juliano de Souza Camargo , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-08 19:28+0000\n" +"PO-Revision-Date: 2020-09-16 18:33-0300\n" +"Last-Translator: Juliano de Souza Camargo \n" +"Language-Team: Portuguese <>\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 3.36.0\n" +"X-Language: pt_PT\n" +"X-Source-Language: C\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontre lugares em todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"O Mapas dá-lhe acesso a mapas de todo o mundo. Permite que encontre " +"rapidamente o local que procura, procurando por uma cidade ou rua, ou " +"localizando um sítio para um encontro com um amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A aplicação Mapas utiliza a base de dados colaborativa OpenStreetMap, " +"construída por centenas de milhares de pessoas por todo o globo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Procure por tipos de localizações específicas, tais como “Bares perto da Rua " +"Augusta, Lisboa” ou “Hotéis perto de Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Uma aplicação simples para visualização de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;Rotas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que a sua localização seja colocada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a visualizar (ruas, satélite etc)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximização da janela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de procura" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de procura da busca geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de locais recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de locais recentemente visitados a armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas recentemente visitadas a armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Definição de privacidade para o Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última definição de privacidade usada para o Facebook. Valores possíveis são " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Definição de privacidade para o Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última definição de privacidade usada para o Foursquare. Valores possíveis " +"são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Emissão do Foursquare para o Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como publicação na conta do Facebook " +"associada à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Emissão do Foursquare para o Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como tweet na conta do Twitter associada " +"à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de utilizador OpenStreetMap ou correio eletrónico" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se o utilizador iniciou sessão para editar dados no OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte utilizado para roteamento" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Se a aplicação está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utilizar vista aérea híbrida" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se a vista aérea deve utilizar estilo híbrido (com rótulos)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar no Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar no Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Inscrever" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Só amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Só eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar um destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que há aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar a localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar a vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir a rota e os marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ver a sua localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Escolher o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Reduzir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Ver os favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Procurar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ver escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir para a localização atual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Mudar para a vista de mapas" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Mudar para a vista de satélite" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Ver os rótulos" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camadas de mapa..." + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ligue os serviços de localização para saber onde está" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Definições de local" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar a conta OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atalhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre o Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "O Mapas está desligado!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"O Mapas precisa de uma ligação à Internet ativa para funcionar corretamente, " +"mas não encontrou nenhuma." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Verifique a sua ligação e definições de proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partilhar a localização" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Inscrever aqui" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie uma sessão para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa usando\n" +"uma conta OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correio eletrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Palavra-passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Inscrever-se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sessão" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, não resultou. Por favor, tente novamente ou visite\n" +"OpenStreetMap para repor a sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não correspondeu, por favor, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Insira o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessão iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A sua conta OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Terminar sessão" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Estrada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações ao mapa serão visíveis em todos os mapas\n" +"que utilizar dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recentemente utilizado" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Seguinte" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar mais informação" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Sem resultados encontrados" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste-o para alterar a ordem em que aparece na rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar para..." + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Mudar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Procura de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rotas de itinerários de transporte público são providas por serviços\n" +"de terceiros.\n" +"O GNOME não garante a idoneidade dos itinerários e programações expostas.\n" +"Note que alguns provedores podem não incluir todos os tipos de transportes,\n" +"ou seja, um provedor nacional pode não incluir linhas aéreas, e um provedor\n" +"local pode ignorar comboios regionais.\n" +"Nomes e marcas mostradas devem ser consideradas como registadas quando " +"aplicável." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Ver mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermediária e informação" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ver paradas intermediárias e informação" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir já" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partir às" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar às" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Ver" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ónibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Eléctricos" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Comboios" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Barcos" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Localização atual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para adicionar a localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falhou ao localizar estrutura de mosaico na pasta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falhou ao processar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributos requeridos em falta" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossível localizar o elemento OSM" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para a estrutura de pasta local de telas" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "O tamanho da tela para o diretório local de telas" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Ver a versão da aplicação" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignorar a disponibilidade de rede" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO...|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "A carregar" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selecione um local" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Facebook. Por favor, " +"selecione outro na lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Foursquare. Por " +"favor, selecione outro na lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Inscrever-se em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para se inscrever em %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Ocorreu um erro" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossível encontrar “%s” no serviço social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossível encontrar um local adequado para inscrição nesta localização" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor, abra as Contas online para iniciar " +"sessão e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Localização foi adicionada ao mapa, note que pode demorar um pouco antes de " +"mostrar no mapa e nos resultados pesquisados." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é só de leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Não tem permissão para gravar aí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Sem nome de ficheiro" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossível exportar a vista" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenadas inválidas" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro de processamento" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Pedido de rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Rota não encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Iniciar!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Todos os ficheiros de camada" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Falha ao ligar-se ao serviço de localização" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"António Lima \n" +"Bruno Ramalhete \n" +"Pedro Albuquerque \n" +"Tiago Santos \n" +"Juliano de Souza Camargo " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "Uma aplicação de mapas para o GNOME" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e autores do GNOME Maps" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados cartográficos de %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Telas de mapas fornecida por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Procura fornecida por %s utilizando %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Tipo de ficheiro não suportado" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Falha ao abrir GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Utilizador ou palavra-passe incorretos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Mau pedido" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O objeto foi eliminado" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relação referem-se a filho não existente" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece nos sinais." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Página Web" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A página Web oficial. Tente utilizar a forma mais básica do URL p.ex. http://" +"exemplo.com em vez de http://exemplo.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Utilize o formato internacional, começando com o sinal " +"+. Tenha atenção às leis locais de privacidade, sobretudo para números de " +"telefone privados." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir um código de linguagem e um título de " +"artigo tal como \"pt:Título do artigo\"." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Veja a ligação na etiqueta para ajuda no formato." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Acesso para cadeiras de rodas" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Acesso à Internet." + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Ligado" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Confusionismo" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Jinismo" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Taioísmo" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalismo Unitário" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianismo" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Casas de banho" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Notas" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação utilizada para informar outros contribuidores acerca de " +"informações não tão óbvias de elementos, a intenção do autor ao criá-los, ou " +"dicas para aperfeiçoamentos." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Selecione o tipo" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sítio não nomeado" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "População:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Horário de funcionamento:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Acesso à Internet:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Religião:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Casas de banho:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Acesso para cadeiras de rodas:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Telefone:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Falha ao processar URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sim" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "não" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Sítio não encontrado no OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "O URL OpenStreetMap não é válido" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coordenadas no URL não são válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL não suportado" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s para %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "A carregar telas de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impressão se isto demorar demasiado" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adicionar um destino intermediário" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remover o destino intermediário" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverter a rota" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s com %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Falha ao abrir URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "falha ao carregar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerário fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partir de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partir" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegar à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Ver as instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar as instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar as alternativas antecedentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar as alternativas subsequentes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Sem alternativas antecedentes." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Sem alternativas subsequentes." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário encontrado nesta rota." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nenhum fornecedor encontrado nesta rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "24 horas" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "do nascer ao pôr do Sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s - %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s - %s - %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s - %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "todos os dias" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "feriados públicos" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "fechado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "ligado" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviço" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconhecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exata" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Esta extensão não suporta a última chegada" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire curva ligeira à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Vire curva ligeira à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire curva apertada à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Vire curva apertada à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire curva ligeira à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Vire curva ligeira à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire curva apertada à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Vire curva apertada à direita" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotunda, pegue a saída %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotunda, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Tome a rotunda" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tome o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Tome o elevador" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça uma curva em u à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Faça uma curva em u à esquerda" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça uma curva em u à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Faça uma curva em u à direita em %s" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Encontrar uma Rota" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada de mapa" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outra aplicação" + +#~ msgid "Don't have an account?" +#~ msgstr "Não tem uma conta?" + +#~ msgid "Press enter to search" +#~ msgstr "Prima Enter para procurar" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f s" +#~ msgstr "%f seg" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso para deficientes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao processar ficheiro GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última localização conhecida e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última localização conhecida (latitude e longitude em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição da última localização conhecida do utilizador." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Se a última localização conhecida foi definida manualmente pelo " +#~ "utilizador ou não." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..36975b7f --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,2056 @@ +# Brazilian Portuguese translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Georges Basile Stavracas Neto , 2013. +# Fábio Nogueira , 2016. +# Artur de Aquino Morais , 2016. +# Antonio Fernandes C. Neto , 2016. +# Gustavo Marques , 2016. +# Enrico Nicoletto , 2013-2016, 2018. +# Jamerson Tiossi , 2017. +# Bruno Lopes da Silva , 2018. +# Rafael Fontenelle , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-18 10:31-0300\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"X-Generator: Gtranslator 3.36.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapas" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontrar lugares ao redor do mundo" + +# O último 'ou' dá sentido de inclusão, pois ambos são opções válidas.--Enrico +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas oferece a você acesso rápido a mapas ao redor de todo o mundo. Permite " +"que você localize rapidamente o local que deseja encontrar através da " +"pesquisa por uma cidade ou rua e a encontrar um local para encontrar um " +"amigo(a)." + +# Contribuições pois os usuários inserem os dados no banco de dados e não criam as tabelas deste --Enrico. +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa o banco de dados colaborativo do OpenStreetMap, com contribuições " +"de centenas de milhares de pessoas ao redor do planeta." + +# Para assegurar a fidelidade do comando, a alternativa brasileira (Fernando de Noronha) foi pesquisada no serviço e por resultado satisfatório, acrescentada por mim neste aplicativo --Enrico +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Você também pode pesquisar por tipos específicos de localizações, como " +"“Praias perto de Fernando de Noronha” ou “Universidade perto de " +"Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Um simples aplicativo de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que sua localização seja mostrada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas do última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo do mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo do mapa para exibir (rua, aérea etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "A posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "O estado de janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de pesquisa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados da pesquisa por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas visitadas recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configurações de privacidade de check-in do Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultima configuração de privacidade de check-in usada no Facebook. Valores " +"possíveis são: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configurações de privacidade de check-in do quadrante" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultima configuração de privacidade de check-in do quadrante usada. Valores " +"possíveis são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Publicação no Facebook de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um postagem na conta " +"Facebook associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Publicação no Twitter de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um tweet na conta " +"Twitter associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuário do OpenStreetMap ou endereço de e-mail" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuário ingressou para editar dados do OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para rotas" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Se o aplicativo está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usar blocos aéreos híbridos" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se blocos aéreos devem usar estilo híbrido (com etiquetas)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Postar no Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Postar no Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Fazer c_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Somente amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Somente eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota a partir daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que está aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar visão" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir rota e marcações" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Escolhe o tipo do mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Reduz" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Ativa favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Imprime rota" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pesquisa" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprime a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sai" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abre o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visão de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduz" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Alterna a escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Muda para a visão de rua" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Muda para a visão aérea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abre a camada" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camada…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Habilite o serviço de localização para encontrar sua localização" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurações de localização" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar conta do OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "A_talhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre o Mapas" + +#: data/ui/main-window.ui:56 +#| msgctxt "shortcut window" +#| msgid "Open main menu" +msgid "Open main menu" +msgstr "Abrir menu principal" + +#: data/ui/main-window.ui:81 +#| msgid "Print Route" +msgid "Find a Route" +msgstr "Encontrar uma rota" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necessita de uma conexão de internet ativa para funcionar " +"propriamente, mas nenhuma pode ser encontrada." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Verifique sua conexão e as configurações de proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Compartilhar localização" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Fazer check-in aqui" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ingresse para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa, usando uma\n" +"conta do OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senha" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Cadastrar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Entrar" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, mas isto não funcionou. Tente novamente ou visite\n" +"o OpenStreetMap para reiniciar sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não combina, por gentileza, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Digite o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingressado" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Sua conta do OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sair" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rua" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da residência" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações no aplicativo Mapas serão visíveis em\n" +"todos os mapas que usarem dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Próximo" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Mostrar mais informação" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste para alterar a ordem da rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camada" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Tornar visível" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pesquisa de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerários de rotas para trânsito público é fornecido por serviços\n" +"de terceiros.\n" +"GNOME não pode garantir que os itinerários e agendamentos mostrados estejam\n" +"corretos. Observe que alguns fornecedores podem não incluir todos os modos\n" +"de transporte disponíveis, por exemplo, um fornecedor nacional pode não\n" +"incluir companhias aéreas e um fornecedor local pode perder trens regionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar informações e paradas intermediárias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar informações e paradas intermediárias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sair agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sair por" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ônibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Bondes" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrô" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Balsas" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Localização atual" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplie para adicionar uma localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falha ao pesquisar estrutura de blocos no diretório" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falha ao analisar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltando atributos necessários" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Não foi possível localizar elemento OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para um diretório local de estrutura de blocos" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "O tamanho de bloco para o diretório local de blocos" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Mostra a versão do programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignora a disponibilidade de rede" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[ARQUIVO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Carregando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Escolha um local" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas não conseguiu sua localização para dar check-in no Facebook. Por favor " +"selecione um local da lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas não consegue encontrar o local para dar check-in no Foursquare. Por " +"favor selecione um local da lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Fazer check-in em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para fazer check-in em %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Um erro foi encontrado" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Não foi possível localizar “%s” no serviço social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Não foi possível encontrar um local apropriado para fazer check-in nessa " +"localização" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor abra o Contas Online, para autenticar-se " +"e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada foi encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A localização foi adicionada ao mapa; note que pode levar um tempo antes " +"dela ser mostrada no mapa e em resultados de pesquisa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de arquivos é somente leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Você não possui permissão para salvar lá" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenhum nome de arquivo foi especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Não foi possível exportar a visão" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada inválida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro de análise" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Solicitação da rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nenhuma rota encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Começar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todas os arquivos de camadas" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Falha ao conectar ao serviço de localização" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Enrico Nicoletto \n" +"Fábio Nogueira \n" +"Rafael Fontenelle " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Um aplicativo de mapas para o GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. e os autores do GNOME Mapas" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados de mapas por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blocos de mapas fornecidos por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pesquisa fornecida por %s usando %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Não há suporte ao tipo de arquivo" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Falha ao analisar o URI geo" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome de usuário ou senha incorretos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitação inválida" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O objeto foi excluído" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relacionamento faz referência a filho não existente" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece em sinais." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Site" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O site oficial. Tente usar o formulário mais básico de um URL i.e. http://" +"exemplo.com.br em vez de http://exemplo.com.br/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Use o formato internacional, começando com um sinal de " +"+. Cuidado com as leis de privacidade locais, especialmente para números de " +"telefone privado." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir o código do idioma e o título do artigo " +"como “pt:Título do artigo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Veja o link na etiqueta para obter ajuda sobre o formato." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acesso a cadeirantes" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acesso à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cabeada" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islã" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitário Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vodu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Banheiros" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação usada para informar outros mapeadores sobre informações não " +"óbvias sobre um elemento, a intenção do autor ao criá-la ou dicas para " +"melhorias posteriores." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Selecione um tipo" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Concluído" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Lugar sem nome" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "População:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitude:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horário de funcionamento:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acesso à Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religião:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Banheiros:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acesso a cadeirantes:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefone:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Falha ao analisar o URI geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "sim" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "não" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "designado" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar não encontrado no OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "A URL do OpenStreetMap não é válida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL não são válidas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Não há suporte à URL" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s até %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Carregando mosaicos de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Você pode abortar a impressão se isso leva muito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adiciona via localização" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via localização" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rota reversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s para %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Falha ao abrir a URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "falha ao carregar arquivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerários fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Início em %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Início" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegada em %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Chegada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenhuma alternativa anterior encontrada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenhuma alternativa posterior encontrada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário localizado para essa rota." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nenhum provedor localizado para essa rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "em volta do relógio" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "do nascer até o pôr do sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "todo dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "feriados públicos" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "não abrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cabeada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviço" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconhecido" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exato" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s min" +#| msgid_plural "%s mins" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este plugin não tem suporte a chegada mais recente" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire ligeiramente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Vire ligeiramente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire acentuadamente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Vire acentuadamente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire ligeiramente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Vire ligeiramente à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire acentuadamente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Vire acentuadamente à direita" + +# %s aqui é um número -- Rafael +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotatória, pegue a %sª saída" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotatória, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Pegue a rotatória" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Pegue o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Pegue o elevador" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça um retorno em U à esquerda para %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Faça um retorno em U à esquerda" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça um retorno em U à direita para %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Faça um retorno em U à direita" + +#~ msgid "Primary menu" +#~ msgstr "Menu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Você não tem uma conta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Adicionar destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Pesquisa de rota por OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outro programa" + +#~ msgid "Press enter to search" +#~ msgstr "Pressione enter para pesquisar" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "OK" +#~ msgstr "OK" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abre a camada…" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada do mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir camada" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mil" + +#~ msgid "%f ft" +#~ msgstr "%f pés" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Wlan" +#~ msgstr "WLAN" + +#~ msgid "wlan" +#~ msgstr "wlan" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao analisar arquivo GeoJSON" + +#~ msgid "Country code: %s" +#~ msgstr "Código do país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso a cadeirantes: %s" + +#~ msgid "_Share" +#~ msgstr "_Compartilhar" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Último localização conhecido e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Último localização conhecido (latitude e longitude, em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição do último localização conhecido do usuário." + +#~ msgid "User set last known location" +#~ msgstr "O usuário definiu o último local conhecido" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "O último local conhecido foi definido manualmente pelo usuário." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Para" + +#~ msgid "From" +#~ msgstr "De" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastreia a localização do usuário." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Ciclismo" + +#~ msgid "Transit" +#~ msgstr "Trânsito" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 00000000..160f7be0 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,1952 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mada-Gabriela , 2018. +# Daniel Șerbănescu , 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-14 15:38+0300\n" +"Last-Translator: Florentina Mușat \n" +"Language-Team: Gnome Romanian Translation Team\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2);\n" +"X-Generator: Poedit 2.4\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Hărți GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Găsește locații din întreaga lume" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Hărți vă oferă acces rapid la hărți din întreaga lume. Vă permite să găsiți " +"rapid locul pe care îl căutați, să căutați un oraș sau o stradă sau să " +"localizați un loc unde să întâlniți un prieten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Hărți colaborează cu OpenStreetMap folosind o întreagă bază de date, " +"realizată de sute de mii de oameni de pe întregul pământ." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Puteți de asemenea să căutați anumite tipuri de locații, precum „Gara " +"Lipscani, București” sau „Acces Wi-Fi lângă Dumbrava, Sibiu”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Proiectul GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Hărți" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "O aplicație simplă cu hărți" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Hărți;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite ca locația curentă să fie arătată pe hartă." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "locația vizualizată ultima dată" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonatele locației vizualizate ultima dată." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tip de hartă" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipul de hartă de afișat (stradală, aeriană, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensiunea ferestrei" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensiunea ferestrei (lățime și înălțime)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poziția ferestrei" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poziția ferestrei (X si Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fereastră maximizată" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Starea de maximizare a ferestrei" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numărul maxim de rezultate pentru căutare" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Număr maxim de rezultate din căutarea după coordonate geografice." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Număr de locuri recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Număr de locuri vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Număr de rute recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Număr de rute vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Facebook utilizată cel " +"mai recent. Valorile posibile sunt: TOATĂ_LUMEA, PRIETENII_PRIETENILOR, " +"TOȚI_PRIETENII sau DE_SINE." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Foursquare utilizată " +"cel mai recent. Valorile posibile sunt: public, cei care urmăresc sau privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difuzarea pe Facebook a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un mesaj pe " +"contul Facebook asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difuzarea pe Twitter a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un tweet pe " +"contul Twitter asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nume de utilizator OpenStreetMap sau adresă de e-mail" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indică dacă utilizatorul s-a conectat pentru editarea datelor OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Ultimul tip de transport utilizat pentru drum" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mod nocturn" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Dacă aplicația este în modul nocturn." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utilizează dalele aeriene hibride" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Dacă dalele aeriene ar trebui să utilizeze stilul hibrid (cu etichete)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vizibilitate" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Postează pe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Postează pe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anulează" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Înr_egistrează" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Toată lumea" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prietenii prietenilor" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Doar prietenii" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Doar eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Urmăritori" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rută de aici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adaugă destinațiile intermediare" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rută până aici" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce este aici?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiază locația" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportă vizualizarea" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportă" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includeți ruta și marcajele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Alegeți tipul hărții" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Micșorează" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Mărește" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Comută preferatele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Arată scurtăturile" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Caută" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ieșire" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vizualizarea hărții" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Mărește" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Micșorează" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Comută scara" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Schimbă la vizualizarea stradală" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Schimbă la vederea aeriană" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Deschide stratul formei" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Arată etichetele" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Deschide stratul formei…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Pornește serviciile de localizare pentru a vă găsi locația" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anulează" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurări de locație" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mod nocturn" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurează contul OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportă ca imagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtături de tastatură" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Despre Hărți" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Găsește o rută" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Hărți este offline!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Hărți necesită o conexiune la internet pentru a funcționa în mod " +"corespunzător, dar nicio conexiune nu a fost găsită." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Verificați conexiunile și configurările proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Adaugă la ruta nouă" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Partajează locația" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marchează ca favorit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Înregistrați-vă aici" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cont OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Autentificați-vă pentru a edita " +"hărți" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajutați la îmbunătățirea hărții, utilizând un\n" +"cont OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parolă" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Înregistrare" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Autentificare" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nu a funcționat. Încercați din nou, sau vizitați\n" +"OpenStreetMap pentru a restabili parola." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Codul de verificare nu se potrivește, încercați din nou." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduceți codul de verificare arătat mai sus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifică" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Autentificat" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Contul dumneavoastră OpenStreetMap este activ." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Deautentificare" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Stradă" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Număr casă" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Cod poștal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Oraș" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tip" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Niciunul" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adaugă un câmp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentariu" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Schimbările de hartă vor fi vizibile pe toate hărțile\n" +"care utilizează date OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Folosite recent" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editare pe OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Următorul" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Editează pe OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Arată mai multe informații" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Niciun rezultat găsit" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trageți pentru a schimba ordinea rutei" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Deschide locația" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copiază" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Trimite la…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Deschide stratul formei" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Deschide" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Comută vizibilitatea" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Caută rute prin GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutarea itinerariilor pentru transportul public este furnizată de servicii\n" +"părți terțe.\n" +"GNOME nu poate garanta corectitudinea itinerariilor și orarelor arătate.\n" +"Observați că unii furnizori pot să nu includă toate modurile de transport " +"disponibile,\n" +"de ex. un furnizor național ar putea să nu includă liniile aeriene, și un " +"furnizor local ar putea\n" +"să lipsească trenurile regionale.\n" +"Numele și mărcile arătate trebuie să fie considerate mărci înregistrate " +"atunci când este cazul." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Arată mai multe rezultate" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ascunde informațiile și opririle intermediare" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Arată informațiile și opririle intermediare" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pleacă acum" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pleacă până la" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Sosește până la" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Arată" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuze" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaie" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenuri" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrouri" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feriboturi" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avioane" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Locația curentă" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Măriți pentru a adăuga locația!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Mărește" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nu s-a putut găsi structura de fragmente în director" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nu s-a putut analiza documentul XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Lipsesc atributele necesare" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nu s-a putut găsi elementul OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "O cale către o structură locală de directoare pentru fragmente" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Dimensiunea unei dale pentru directorul de dale local" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Arată versiunea programului" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignoră disponibilitatea rețelei" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FIȘIER…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selectați un cont" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Se încarcă" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selectați un loc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsi locul pentru înregistrarea cu Facebook. Selectați unul " +"din această listă." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsit locul pentru înregistrarea cu Foursquare. Selectați " +"unul din această listă." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Înregistează la %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrieți un mesaj opțional pentru înregistrare la %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "A apărut o eroare" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nu s-a putut găsi „%s” la serviciul social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Nu s-a putut găsit un loc potrivit pentru înregistrare la această locație" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Certificările au expirat, deschideți conturi online pentru a vă autentifica " +"și activa contul acesta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nimic nu a fost găsit aici!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locația a fost adăugată pe hartă, rețineți că poate dura ceva timp înainte " +"de a fi arătată pe hartă și în rezultatele căutării." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Hărți la %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistemul de fișiere este numai pentru citire" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nu aveți permisiunea de a salva acolo" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Directorul nu există" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nu este specificat nici un nume de fișier" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nu se poate exporta vizualizarea" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordonate nevalide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "eroare de parsare" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometrie necunoscută" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Cererea rutei a eșuat." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nu s-au găsit rute." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Pornește!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Toate fișierele strat" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Nu s-a reușit conectarea la serviciul de localizare" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Mădălin Șerbănescu , 2018\n" +"Florentina Mușat , " +"2018-2020" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "O aplicație cu hărți pentru GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Drepturi de autor © 2011 – 2019 Red Hat, Inc. și autorii GNOME Hărți" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datele hărții ale %s și contribuitorii" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Fragmente de hărți furnizate de %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Căutare furnizată de %s utilizând %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Tipul de fișier nu este suportat" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Nu s-a putut deschide stratul" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Nu s-a putut deschide GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Cerere greșită" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Obiectul nu a fost găsit" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, altcineva tocmai a modificat obiectul" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Obiectul a fost șters" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Calea sau relația se referă la copii care nu există" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nume" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Numele oficial. Acesta este, de obicei, numele real." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresă" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Pagina web oficială. Încercați să utilizați forma cea mai de bază a unui URL " +"de ex: http://example.com în loc de http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Număr de telefon. Utilizați formatul internațional, care începe cu un semn " +"+. Aveți grijă la legile de confidențialitate locale, în special pentru " +"numerele de telefon private." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatul utilizat trebuie să includă codul de limbă și titlul articolului ca " +"„en:titlu de articol”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Ore de deschidere" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Consultați legătura din etichetă pentru ajutor cu formatul." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populație" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevația (înălțimea deasupra nivelului mării) unui punct în metri." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Acces pentru scaun cu rotile" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nu" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Desemnat" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Acces la internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Cu fir" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Serviciu" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Creștinism" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Iudaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Religii multiple" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Păgânism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Universalism unitarian" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toalete" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Notiță" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informații utilizate pentru a informa alți utilizatori de hărți despre " +"informațiile care nu sunt evidente despre un element, intenția autorului în " +"timpul creării acestuia, sau indicii pentru îmbunătățiri ulterioare." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Selectați tipul" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gata" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Loc nedenumit" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populație:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitudine:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Ore de deschidere:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Acces la internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religie:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toalete:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Acces pentru scaun cu rotile:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Număr de telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Nu s-a putut parsa URI-ul Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nu" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "desemnat" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Locul nu a fost găsit în OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL-ul de OpenStreetMap nu este valid" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Coordonatele din URL nu sunt valide" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL-ul nu este suportat" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De la %s la %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Se încarcă fragmentele de hartă pentru tipărire" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puteți să anulați tipărirea dacă durează prea mult" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Despre tipărire" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adaugă via locație" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Elimină via locație" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inversează ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adaugă %s la %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Nu s-a putut deschide URI-ul" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Deschide cu %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nu s-a putut încărca fișierul" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp estimat: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarii furnizate de %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Începe la %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Începe" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Plimbare pe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Sosește la %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Sosește" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Arată instrucțiunile de plimbare" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ascunde instrucțiunile de plimbare" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Încarcă alternativele de dinainte" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Încarcă alternativele de mai târziu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nu s-au găsit alternative anterioare." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nu s-au găsit alternative de mai târziu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nu s-au găsit date în orar pentru această rută." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nu s-a găsit furnizor pentru această rută." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minute" +msgstr[2] "%s de minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s oră" +msgstr[1] "%s ore" +msgstr[2] "%s de ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s oră" +msgstr[1] "%s:%s ore" +msgstr[2] "%s:%s de ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tot timpul" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de la răsărit la apus" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "în fiecare zi" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "vacanțe publice" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "vacanțe școlare" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nu este deschis" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "cu fir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviciu" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Acuratețe: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Necunoscut" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s o" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s o %s min" +msgstr[1] "%s o %s min" +msgstr[2] "%s o %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Acest modul nu suportă ultima sosire" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuă pe %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Continuă" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Virează la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Virează la stânga" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Virează ușor la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Virează ușor la stânga" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Virează ascuțit la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Virează ascuțit la stânga" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Virează la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Virează la dreapta" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Virează ușor la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Virează ușor la dreapta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Virează ascuțit la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Virează ascuțit la dreapta" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "În sensul giratoriu, luați ieșirea %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "În sensul giratoriu, luați ieșirea la %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Luați sensul giratoriu" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Luați liftul și ieșiți la %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Luați liftul" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faceți un viraj spre stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Faceți un viraj spre stânga" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faceți un viraj spre dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Faceți un viraj spre dreapta" + +#~ msgid "Primary menu" +#~ msgstr "Meniu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nu aveți un cont?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Căută rute prin OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Adaugă o destinație" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Deschide cu o altă aplicație" + +#~ msgid "Press enter to search" +#~ msgstr "Apasă Enter pentru a căuta" + +#~ msgid "Quit" +#~ msgstr "Ieșire" + +#~ msgid "OK" +#~ msgstr "OK" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..1a0f0532 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1685 @@ +# Russian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mihail Gurin , 2014, 2015. +# Ivan Komaritsyn , 2015. +# Yuri Myasoedov , 2013, 2014, 2015. +# Stas Solovey , 2014, 2015, 2016. +# Роман Верменко , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-01-14 19:43+0000\n" +"PO-Revision-Date: 2019-02-27 22:10+0300\n" +"Last-Translator: Stas Solovey \n" +"Language-Team: русский \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.2.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карты GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Поиск местоположений по всему миру" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Приложение «Карты» позволяет получить быстрый доступ к картам по всему миру, " +"находить места в городах, на улицах или указывать места для встречи с " +"друзьями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карты используют базу данных OpenStreetMap, созданную сотнями тысяч людей по " +"всеми миру." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Вы также можете искать определённые места, например «Паб, Невский проспект» " +"или «Гостиницы около Александерплац, Берлин»." + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/mainWindow.js:500 +msgid "Maps" +msgstr "Карты" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Простое картографическое приложение" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карты;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Позволяет показывать на карте ваше местоположение." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последнее просмотренное местоположение" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координаты последнего просмотренного местоположения." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Размер окна" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Размер окна (ширина и высота)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Положение окна" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Положение окна (X, Y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Окно развёрнуто" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Режим развёрнутого окна" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Максимальное количество результатов поиска" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальное количество результатов поиска по поиску геокода." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Количество последних сохранённых мест" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Количество сохранённых недавно посещённых мест." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Количество последних сохранённых маршрутов" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Количество сохранённых недавно использовавшихся маршрутов." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Кто может видеть публикацию в Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последняя использованная настройка. Возможные значения: EVERYONE (все), " +"FRIEND_OF_FRIENDS (друзья друзей), ALL_FRIENDS (друзья) и SELF (только я)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Кто может видеть публикацию в Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последняя использованная настройка. Возможные значения: public, followers " +"или private." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Трансляция из Foursquare в Facebook" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Facebook." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Трансляция из Foursquare в Twitter" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Twitter." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Имя или адрес эл. почты пользователя OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Указывает, выполнил ли пользователь вход для редактирования данных " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Последний тип транспорта, использовавшийся для маршрута" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видимость" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Опубликовать в Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Опубликовать в Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Отменить" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "О_тметиться" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Друзья друзей" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Только друзья" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Только я" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Подписчики" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Те, кто в этом месте" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Что здесь?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Копировать местоположение" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Экспортировать как изображение" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Экспортировать просматриваемую область" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Экспортировать" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Включить маршрут и маркеры" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Основные" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показать комбинации клавиш" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Поиск" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Печать маршрута" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Завершить" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Просмотр карты" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приблизить" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалить" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Включить или выключить масштаб" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Переключиться на просмотр улиц" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Переключиться на вид сверху" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Открыть слой" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "Открыть слой фигур…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Включите сервисы местоположения для определения вашей позиции" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Отменить" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметры местоположения" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Настроить учётную запись OpenStreetMap" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "О приложении" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Выберите тип карты" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Отдалить" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Приблизить" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Включить или выключить избранные места" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Печать маршрута" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Приложение работает в автономном режиме!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Приложению требуется соединение с Интернетом, но оно отсутствует." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Проверьте настройки прокси и соединения." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Добавить к новому маршруту" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Открыть в другом приложении" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Добавить в избранное" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Отметиться здесь" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Учётная запись OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Войдите, чтобы редактировать карты" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогите улучшить карту, используя\n" +"учётную запись OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Электронная почта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Войти" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Нет учётной записи?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Неверное имя пользователя или пароль. Попробуйте снова или посетите\n" +"OpenStreetMap для сброса пароля." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Проверочный код не совпадает, попробуйте снова." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Введите показанный выше проверочный код" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Проверить" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Авторизован" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ваша учётная запись OpenStreetMap активна." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Выйти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер дома" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Почтовый индекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Город" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Отсутствует" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Добавить поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Комментарий" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Изменения, сделанных в картах, будут доступны на всех картах,\n" +"использующие данные OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно использованные" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Далее" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Показать подробную информацию" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Нажмите Enter для поиска" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Результатов не найдено" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перетащите, чтобы изменить порядок маршрута" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Открыть местоположение" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Открыть" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Открыть слой фигур" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Включить или выключить видимый" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Поиск маршрута с помощью GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Поиск маршрута с помощью OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Схемы маршрутов общественного транспорта, предоставленные GNOME,\n" +"получены на основе расписаний транспортных компаний и агентств.\n" +"Компании и агентства не несут ответственности за показанные результаты.\n" +"GNOME не может гарантировать правильность показанных маршрутов и " +"расписаний.\n" +"Имена и бренды считаются зарегистрированными торговыми знаками, когда это " +"применимо." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Показать больше результатов" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Скрывать промежуточные остановки и информацию" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показывать промежуточные остановки и информацию" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Отправляются сейчас" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Отправляются" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибывают" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показывать" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобусы" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваи" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Поезда" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Переправы" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Текущее местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Точность: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Приблизить, чтобы добавить местоположение!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Приблизить" + +# сомнительно, требует проверки +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не удалось найти плиточную структуру в каталоге" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не удалось разобрать документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Пропущены обязательные атрибуты" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Не удалось найти элемент OSM" + +# сомнительно, требует проверки +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Путь к локальному каталогу плиточной структуры" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "Показать версию программы" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Выберите учётную запись" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Загрузка" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Выберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Facebook. Выберите одно из списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Foursquare. Выберите одно из " +"списка." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Отметиться в %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите необязательное сообщение для отметки в %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Произошла ошибка" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не удалось найти «%s» в социальной сети" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не удалось найти подходящее место, чтобы отметиться здесь" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Истекли полномочия, откройте Сетевые учётные записи, чтобы войти и " +"активировать эту учётную запись" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Маршрут отсюда" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Добавить пункт назначения" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Маршрут сюда" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Здесь ничего не найдено!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположение добавлено на карту. Скоро оно появится на карте и будет " +"выводиться в результатах поиска." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карты на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файловая система доступна только для чтения" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Отсутствуют права на запись в данную директорию" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не существует" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не указано имя файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не удалось экспортировать просматриваемую область" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неверные координаты" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ошибка разбора" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "неизвестная геометрия" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Сбой при запросе маршрута." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Маршрут не найден." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Старт!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Все файлы слоёв" + +#: src/mainWindow.js:433 +msgid "Failed to connect to location service" +msgstr "Не удалось подключиться к службе местоположения" + +#: src/mainWindow.js:498 +msgid "translator-credits" +msgstr "" +"Yuri Myasoedov , 2013, 2014.\n" +"Stas Solovey , 2014-2019." + +#: src/mainWindow.js:501 +msgid "A map application for GNOME" +msgstr "Приложение карт для GNOME" + +#: src/mainWindow.js:512 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Авторское право © 2011 – 2019 Red Hat, Inc. и авторы GNOME Maps" + +#: src/mainWindow.js:531 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Картографические данные %s и участников" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:547 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Картографические слои предоставлены %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Тип файла не поддерживается" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Не удалось открыть слой" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Не удалось открыть геолокационный URI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Для этого маршрута не найдено расписаний." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неверное имя пользователя или пароль" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успешно" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Неверный запрос" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Объект не найден" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфликт: кто-то ещё только что изменил объект" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Объект был удалён" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Путь или связь ссылается на несуществующего потомка" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Имя" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Официальное название. Обычно то, что написано на знаках." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адрес" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб-сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Официальный веб-сайт. Рекомендуется использовать URL в наиболее общей форме, " +"например «http://example.com» вместо «http://example.com/index.html»." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефона. Используйте международный формат, начинающийся со знака «+»." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Википедия" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Используемый формат должен содержать код языка и заголовок статьи, например " +"«ru:Заголовок статьи»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Часы работы" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Для получения справки по формату см. ссылку в метке." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Население" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Высота" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Высота над уровнем моря в метрах." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Доступ для инвалидных колясок" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Нет" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ограниченный" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Специализированный" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Доступ к Интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Проводной" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Служебный" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Религия" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодаизм" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Христианство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуцианство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Несколько религий" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Язычество" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафарианство" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Саентология" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Синто" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритизм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитарный универсализм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Шаманство" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Туалеты" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Заметка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Информация, используемая для информирования других картографов о неочевидной " +"информации об элементе, намерении автора при его создании или о намеках на " +"дальнейшее совершенствование." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Выберите тип" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Готово" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Население:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Высота:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Часы работы:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Доступ к Интернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Религия:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Туалеты:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Доступ для инвалидных колясок:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Не удалось разобрать геолокационный URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "есть" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "ограниченный" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "нет" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "специализированный" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Из %s в %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Загрузка областей карты для печати" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Печать можно прервать, если она выполняется слишком долго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прервать печать" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Добавить через местоположение" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Удалить через местоположение" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обратный маршрут" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Не удалось открыть URI" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "не удалось загрузить файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Расчётное время: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибытие в %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Прибытие" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Отправление в %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Отправление" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Показывать информацию для пешего маршрута" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Скрывать информацию для пешего маршрута" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Пешком %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Загрузить предыдущие варианты" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Загрузить следующие варианты" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Не найдено более ранних вариантов." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Не найдено более поздних вариантов." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d минута" +msgstr[1] "%d минуты" +msgstr[2] "%d минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d час" +msgstr[1] "%d часа" +msgstr[2] "%d часов" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d час" +msgstr[1] "%d:%02d часа" +msgstr[2] "%d:%02d часов" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "круглосуточно" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "с утра до вечера" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ежедневно" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "праздничные дни" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "школьные каникулы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# нужно проверить можно ли переводить как "закрыто", так как странно почему так, а не "closed" +#: src/translations.js:264 +msgid "not open" +msgstr "не открыто" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "проводной" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "терминал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "служебный" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Неизвестная" + +# Точность: Максимальная +# точная не подходит, т. к. получается "точность: точная" +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Максимальная" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f ч" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f мин" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s миль" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s футов" + +#~ msgid "Quit" +#~ msgstr "Завершить" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Открыть слой фигур…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Загрузить слой карты" + +#~ msgid "Open Layer" +#~ msgstr "Открыть слой" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миль" + +#~ msgid "%f ft" +#~ msgstr "%f футов" + +#~ msgid "Position not found" +#~ msgstr "Местоположение не найдено" + +#~ msgid "Country code: %s" +#~ msgstr "Код страны: %s" + +#~ msgid "Population: %s" +#~ msgstr "Население: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Доступ для инвалидных колясок: %s" + +#~| msgid "Failed to parse Geo URI" +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Не удалось разобрать файл GeoJSON" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 00000000..4ea81d10 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,2077 @@ +# Slovak translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Dušan Kazik , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-16 21:00+0000\n" +"PO-Revision-Date: 2020-10-01 09:25+0200\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy prostredia GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhľadáva miesta po celom svete" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikácia Mapy vám poskytuje rýchly prístup k mapám celého sveta. Umožňuje " +"vám rýchlo nájsť miesto, ktoré hľadáte zadaním vyhľadávanej obce alebo " +"ulice, prípadne zistiť polohu, kde sa máte stretnúť s priateľom." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Aplikácia Mapy používa databázu projektu OpenStreetMap, na ktorej " +"spolupracujú stovky tisícov ľudí z celého sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Môžete vyhľadať špecifické typy umiestnení, napríklad „Hostince neďaleko " +"Hlavnej ulice, Boston“ alebo „Ubytovňa neďaleko Alexanderplatzu, Berlin“." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +# desktop entry name +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Mapy" + +# desktop entry comment +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá aplikácia na prezeranie máp" + +# desktop enty keywords +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožní zobrazenie vášho umiestnenia na mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "naposledy zobrazené umiestnenie" + +# summary +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Súradnice naposledy zobrazeného umiestnenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "priblíženie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň priblíženia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, ktorý sa má zobraziť (pohľad ulíc, letecký pohľad, atď.)" + +# summary +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veľkosť okna" + +# description +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veľkosť okna (šírka a výška)" + +# summary +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pozícia okna" + +# description +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozícia okna (X a Y)." + +# summary +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizované okno" + +# description +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximalizovaný stav okna" + +# summary +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximálny počet výsledkov hľadania" + +# description +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximálny počet výsledkov hľadania z vyhľadávača geokódov." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávnych miest na uloženie" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených miest, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávnych trás na uloženie" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených trás, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v sieti Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v sieti Facebook. " +"Možné hodnoty sú: EVERYONE(ktokoľvek), FRIENDS_OF_FRIENDS(priatelia mojich " +"priateľov), ALL_FRIENDS(iba moji priatelia) or SELF(iba ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v službe Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v službe " +"Foursquare. Možné hodnoty sú: public(verejné), followers(nasledovatelia) " +"alebo private(súkromné)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Facebook priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Twitter priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Používateľské meno alebo e-mailová adresa projektu OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikuje, či sa používateľ prihlásil na úpravu údajov projektu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Naposledy použitý typ dopravy pre plánovanie trasy" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nočný režim" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Či je aplikácia v nočnom režime." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Použiť hybridné dlaždice leteckého pohľadu" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Či majú použiť dlaždice s leteckým pohľadom hybridný štýl (s menovkami)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditeľnosť" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Uverejniť na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Uverejniť na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušiť" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Oznámiť _polohu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ktokoľvek" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Priatelia mojich priateľov" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Iba moji priatelia" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Iba ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Verejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Nasledovatelia" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Súkromné" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtiaľto" + +# tooltip +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridať prechodný cieľ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Čo sa nachádza tu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopírovať umiestnenie" + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridať do projektu OpenStreetMap" + +# dialog title +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazenia" + +# button label +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovať" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Zahrnúť trasy a značky" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Prejde na aktuálne umiestnenie" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Vyberie typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddiali" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Priblíži" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Prepne plánovač trasy" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Prepne obľúbené" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Vytlačí trasu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Všeobecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazenie klávesových skratiek" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Vyhľadanie" + +# DK:tooltip +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Prepnutie plánovača trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tlač trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončenie" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvorenie hlavnej ponuky" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazenie mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Priblíženie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddialenie" + +# tooltip +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Prepnutie obľúbených" + +# DK:tooltip +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Prejdenie na aktuálne umiestnenie" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prepnutie na pohľad ulíc" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prepnutie na letecký pohľad" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobraziť menovky" + +# dialo title +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvoriť vrstvu s tvarmi…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnite lokalizačné služby, aby mohlo byť nájdené vaše umiestnenie" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušiť" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavenia umiestnenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočný režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastaviť účet projektu OpenStreetMap" + +# menu item +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovať ako obrázok" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové skratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikácii Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otvoriť hlavnú ponuku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Aplikácia Mapy je bez pripojenia!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby mohla aplikácia Mapy pracovať správne, vyžaduje sa aktívne internetové " +"pripojenie, ale žiadne nie je dostupné." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Skontrolujte vaše nastavenia pripojenia a sprostredkovateľa proxy." + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pridá do novej trasy" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Sprístupní umiestnenie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označí ako obľúbené" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Oznámi túto polohu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet projektu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prihláste sa na úpravu máp" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomôžte zlepšiť mapu pomocou\n" +"účtu projektu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +# button label +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prihlásiť sa" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prihlásiť sa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Prepáčte, ale toto nefungovalo. Prosím, skúste to znovu, alebo navštívte " +"webovú adresu\n" +"OpenStreetMap na obnovenie vášho hesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overovací kód sa nezhoduje. Prosím, skúste to znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadajte overovací kód zobrazený vyššie" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overiť" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prihlásený" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet projektu OpenStreetMap je aktívny." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásiť sa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Smerovacie číslo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Obec" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nič" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridanie poľa" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentár" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmeny mapy budú viditeľné na všetkých mapách, ktoré\n" +"využívajú údaje z projektu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Ďalej" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Zobrazí viac informácií" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenašli sa žiadne výsledky" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potiahnutím zmeníte poradie trasy" + +# dialog title +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvorenie umiestnenia" + +# gtkbutton +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopírovať" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Odoslať do…" + +# dialo title +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvoriť" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Prepne viditeľné" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Trasa poskytovaná službou GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerár trasy verejnej dopravy je poskytovaný službami tretích strán\n" +"Projekt GNOME nemôže zaručiť správnosť zobrazeného itineráru a plánu.\n" +"Berte na vedomie, že niektorí poskytovatelia nemusia zahŕňať všetky spôsoby " +"prepravy,\n" +"napr. národný poskytovateľ nemusí zahrnúť letecké linky a miestnemu " +"poskytovateľovi\n" +"môžu chýbať regionálne vlaky.\n" +"Zobrazené názvy a značky sú považované za registrované obchodné známky, ak " +"je to nevyhnutné." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobraziť viac výsledkov" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skryje prechodné zastávky a informácie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazí prechodné zastávky a informácie" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odchod teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odchod o" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Príchod o" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobraziť" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Električky" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lietadlá" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuálne umiestnenie" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Priblížením pridajte umiestnenie!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Priblížiť" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Zlyhalo nájdenie štruktúry dlaždíc v adresári" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Zlyhala analýza dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Chýbajú potrebné atribúty" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepodarilo sa nájsť prvok služby OSM" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k štruktúre adresárov miestnych dlaždíc" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "Veľkosť dlaždice pre adresár miestnych dlaždíc" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Zobrazí verziu programu" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignorovať dostupnosť siete" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[SÚBOR…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výber účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítavanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výber miesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v sieti Facebook. Prosím, " +"vyberte nejaké zo zoznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v službe Foursquare. Prosím, " +"vyberte nejaké zo zoznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámiť polohu %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napíšte voliteľnú správu k oznámeniu polohy %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Vyskytla sa chyba" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nedá sa nájsť miesto „%s“ v sociálnej službe" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "V tejto lokalite sa nedá nájsť vhodné miesto na oznámenie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Platnosť poverení vypršala. Prosím, otvorte Účty služieb na prihlásenie a " +"povolenie tohto účtu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu sa nič nenašlo!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Umiestnenie bolo pridané do mapy. Berte na vedomie, že jeho zobrazenie na " +"mape a vo výsledkoch vyhľadávania môže trvať nejakú dobu." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapy na mieste %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Systém súborov je iba na čítanie" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Do tohto umiestnenia nemáte oprávnenia na zápis" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Adresár neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie je určený názov súboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie je možné exportovať zobrazenie" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatná súradnica" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba analýzy" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznáma geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Požiadavka na trasu zlyhala." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nenašla sa žiadna trasa." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Začiatok!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Všetky súbory vrstiev" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Zlyhalo pripojenie k lokalizačnej službe" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "Dušan Kazik " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "Aplikácia na prezeranie máp pre GNOME" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorské práva © 2011 – 2019 Red Hat, Inc. a autori aplikácie Mapy " +"prostredia GNOME" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Údaje mapy zo služby %s a jej prispievateľov" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Dlaždice mapy poskytnuté zo služby %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Vyhľadávanie poskytnuté službou %s použitím %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Typ súboru nie je podporovaný" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Zlyhalo otvorenie vrstvy" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Zlyhalo otvorenie GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávne používateľské meno alebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspech" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nesprávna požiadavka" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt sa nenašiel" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Nastal konflikt. Niekto iný práve upravil objekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt bol odstránený" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta alebo relácia odkazuje na neexistujúceho potomka" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Názov" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiálny názov. Toto obvykle býva napísané na tabuliach." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Webová stránka" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiálna webová stránka. Skúste použiť čo najjednoduchší tvar URL napr. " +"http://priklad.sk namiesto of http://priklad.sk/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Telefón" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefónne číslo. Použite medzinárodný formát, začínajúci so znakom +. Dbajte " +"na miestne zákony o ochrane súkromia, obzvlášť pri súkromných telefónnych " +"číslach." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by mal zahŕňať kód jazyka a názov článku ako „sk:Názov " +"článku“." + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Otváracia doba" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Pre pomoc k formátu si prezrite odkaz v menovke." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Obyvateľstvo" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Nadmorská výška" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Stúpanie (výška nad morskou hladinou) bodu v metroch." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Bezbariérový prístup" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Áno" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Obmedzený" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Vyhradený" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Prístup na internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Drôtový" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Obsluha" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Náboženstvo" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Baháizmus" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Budhizmus" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Kresťanstvo" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizmus" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Viacero náboženstiev" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizmus" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizmus" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Scientológia" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizmus" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhizmus" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Centralistický univerzalizmus" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidizmus" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmus" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informácie slúžiace ostatným mapovačom na informovanie o neobvyklých " +"informáciách o súčasti, účeli autora počas tvorby, alebo radách pre " +"neskoršie vylepšenia." + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridanie do projektu OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Výber typu" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nepomenované miesto" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Obyvateľstvo:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Nadmorská výška:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Otváracia doba:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Prístup na internet:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Náboženstvo:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Toalety:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Bezbariérový prístup:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Telefón:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Zlyhala analýza URI geografickej polohy" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "áno" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "obmedzený" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nie" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "vyhradený" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Miesto sa nenašlo v projekte OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL projektu OpenStreetMap nie je platná" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Súradnice v URL nie sú platné" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nie je podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s po %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítavajú sa dlaždice mapy na vytlačenie" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tlač môžete prerušiť, ak toto trvá príliš dlho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prerušiť tlač" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridá cez umiestnenie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstráni cez umiestnenie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obráti trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridať obec %s do aplikácie %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Zlyhalo otvorenie URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otvoriť pomocou %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "zlyhalo načítanie súboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerár poskytnutý zo služby %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začiatok z adresy %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začiatok" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chôdza %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Príchod na adresu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Príchod" + +# tooltip +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazí pokyny pre chôdzu" + +# tooltip +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skryje pokyny pre chôdzu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načítať skoršie alternatívy" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načítať neskoršie alternatívy" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenašli sa žiadne skoršie alternatívy." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenašli sa žiadne neskoršie alternatívy." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Pre túto trasu sa nenašli žiadne údaje cestovného poriadku." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Pre túto trasu sa nenašiel žiadny poskytovateľ." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodín" +msgstr[1] "%s hodina" +msgstr[2] "%s hodiny" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hodín" +msgstr[1] "%s:%s hodina" +msgstr[2] "%s:%s hodiny" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "nonstop" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od východu slnka po západ slnka" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "každý deň" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "štátne sviatky" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školské prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "zatvorené" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drôtový" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminál" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "obsluha" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Presnosť: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Neznáma" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Presná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje posledný príchod" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Odbočte doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Odbočte doľava" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Odbočte mierne doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Odbočte mierne doľava" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Odbočte ostro doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Odbočte ostro doľava" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Odbočte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Odbočte doprava" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Odbočte mierne doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Odbočte mierne doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Odbočte ostro doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Odbočte ostro doprava" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovom objazde použite %s. výjazd" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovom objazde použite výjazd na %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Vojdite do kruhového objazdu" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použite výťah a vstúpte na %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Použite výťah" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Otočte sa doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Otočte sa doľava" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Otočte sa doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Otočte sa doprava" + +# tooltip +#~ msgid "Find a Route" +#~ msgstr "Nájsť trasu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemáte účet?" + +#~ msgid "Add destination" +#~ msgstr "Pridať cieľ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Trasa poskytovaná službou OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Ukončiť" + +# tooltip +#~ msgid "Open with another application" +#~ msgstr "Otvorí pomocou inej aplikácie" + +#~ msgid "Press enter to search" +#~ msgstr "Stlačte enter na vyhľadanie" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvoriť vrstvu s tvarmi…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Načítať mapovú vrstvu" + +#~ msgid "Open Layer" +#~ msgstr "Otvorenie vrstvy" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Pozícia sa nenašla" + +#~ msgid "Wlan" +#~ msgstr "WiFi" + +#~ msgid "wlan" +#~ msgstr "wifi" + +#~ msgid "Country code: %s" +#~ msgstr "Kód krajiny: %s" + +#~ msgid "Population: %s" +#~ msgstr "Obyvateľstvo: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Bezbariérový prístup: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Zlyhala analýza súboru GeoJSON" + +#~ msgid "Copy Geo URI" +#~ msgstr "Skopírovať URI geografickej polohy" + +#~ msgid "_Share" +#~ msgstr "_Sprístupniť" + +# summary +#~ msgid "Last known location and accuracy" +#~ msgstr "Posledná známa poloha a presnosť" + +# description +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Posledné známa poloha (zemepisná šírka a zemepisná dĺžka v stupňoch) a " +#~ "presnosť (v metroch)." + +# description +#~ msgid "Description of last known location of user." +#~ msgstr "Popis poslednej známej polohy používateľa." + +# summary +#~ msgid "User set last known location" +#~ msgstr "Používateľ nastavil poslednú známu polohu" + +# description +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Určuje, či bola posledná známa poloha ručne nastavená používateľom." + +#~ msgid "I’m here!" +#~ msgstr "Tu sa nachádzam!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 00000000..73938c23 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,2056 @@ +# Slovenian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Martin Srebotnjak , 2013–2015. +# Matej Urbančič , 2015–2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-19 21:22+0000\n" +"PO-Revision-Date: 2020-08-21 20:26+0200\n" +"Last-Translator: Matej Urbančič \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Zemljevidi GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Najdi mesta po svetu" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Program omogoča hiter dostop do zemljevidov sveta. Omogoča hitro iskanje " +"mest in ulic, različnih javnih prostorov, ki jih je nujno treba obiskati, " +"ali mesta zmenka s prijatelji." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Program uporablja podatkovno zbirko OpenStreetMap, ki jo ustvarja več sto " +"tisoč posameznikov na vseh koncih sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Iskati je mogoče tudi posebna mesta, kot so »bari v središču Kranja« ali " +"»Hotel blizu avtobusne postaje v Mariboru«.>" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Zemljevidi" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Enostaven program za pregled zemljevidov" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Zemljevidi;karta;karte;maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Dovoli prikazovanje trenutnega mesta na zemljevidu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "zadnje gledano mesto" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate nazadnje gledanega mesta." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "približanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Raven približanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta zemljevida" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta zemljevida za prikaz (ulični, zračni ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (širina in višina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj okna (osi x in y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Povečano okno" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje razpetosti okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Največje število zadetkov iskanja" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Največje število zadetkov iskanja pri uporabi iskalnika krajev." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Število nedavnih mest za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Število nedavno obiskanih mest za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Število poti za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Število nedavno obiskanih poti za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavitve zasebnosti objav na Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Facebook. Dovoljene " +"vrednosti so: vsi, prijatelji prijateljev, prijatelji ali zame." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavitve zasebnosti objav Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Foursquare. Dovoljene " +"vrednosti so: javno, spremljevalci, zasebno." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Povezovanje objav Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Facebook." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Povezovanje objav Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave na Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Twitter." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Elektronski naslov oziroma uporabniško ime OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Kaže, ali je uporabnik prijavljen za urejanje podatkov OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Nazadnje uporabljena vrsta transporta za vodenje" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nočni način" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Ali naj bo vmesnik programa zagnan v nočnem načinu" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Uporabi hibridne zračne sličice" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Ali naj bo pri prikazu zračnega pogleda uporabljen hibridni slog (z " +"oznakami)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vidnost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Objavi na Twitterju" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Prekliči" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Vstopi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Vsi" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prijatelji prijateljev" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Le prijatelji" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Le jaz" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Spremljevalci" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Zasebno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Pot od tu" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj vmesni cilj" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Pot do tu" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kaj je to?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj mesto" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Objavi na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pogled izvoza" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvozi" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Vključi pot in oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Trenutna vrsta zemljevida" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Približaj" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Preklopi plan poti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Preklop priljubljenih" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Natisni pot" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Splošno" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Pokaže tipkovne bližnjice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Omogoči iskanje" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Preklopi načrtovalnik poti" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Natisne pot" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Konča program" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Odpre glavni meni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pokaže pogled zemljevida" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približa pogled" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddalji pogled" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Preklopi merilo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Preklopi na ulični pogled" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Preklopi na pogled iz zraka" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Odpre plast oblike" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Odpri plast oblike …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Priklop storitev določanja trenutnega mesta za uporabo v programu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Prekliči" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavitve mesta" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočni način" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavi račun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvozi kot sliko" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programu" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Odpri glavni meni" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Najdi pot" + +#: data/ui/main-window.ui:182 +msgid "Maps is offline!" +msgstr "Zemljevid ni povezan v omrežje!" + +#: data/ui/main-window.ui:195 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Program Zemljevidi zahtevajo za pravilno delovanje dejavno internetno " +"povezavo, ki pa trenutno ni na voljo." + +#: data/ui/main-window.ui:204 +msgid "Check your connection and proxy settings." +msgstr "Preverite povezavo in nastavitve posredniškega strežnika." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaj novo pot" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Objavi mesto" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označi kot priljubljeno" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prijavi se tu." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Račun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijava za urejanje zemljevida" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Sodelujte pri izdelavi zemljevida\n" +"prek OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Elektronski naslov" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Geslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Vpis" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Povezovanje je spodletelo. Poskusite znova kasneje, ali pa \n" +"obiščite spletišče OpenStreetMap za ponastavitev gesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overitvena koda ni skladna. Poskusite znova." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Vpišite overitveno kodo prikazano zgoraj" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeno" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Račun OpenStreetMap je dejaven." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjavi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hišna številka" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštna koda" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Mesto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Opomba" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Spremembe bodo vidne na vseh zemljevidih,\n" +" ki uporabljajo podatke OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno uporabljeno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Naslednji" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Pokaži več podrobnosti" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ni najdenih zadetkov" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potegnite točko za spreminjanje poti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Odpri mesto" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Pošlji …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Odpri plast oblike" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Odpri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Preklopi vidno" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Iskanje poti s podporo GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Načrt potovanja z javnim prevozom zagotavljajo različne storitve.\n" +"Teh podatkov ni mogoče preverjati in zagotavljati pravilnosti voznih\n" +"poti in časov. Nekateri ponudniki morda ne vključujejo vseh načinov\n" +"potovanja, na primer državni ponudniki morda ne vključujejo letalskih\n" +"povezav in krajevni morda nimajo podatkov o vlakih.\n" +"Prikazana imena in blagovne znamke je treba obravnavati kot registrirane " +"znamke." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Pokaži več zadetkov" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrij vmesne postanke in podrobnosti" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Pokaži vmesne postaje in podrobnosti mest" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odhod takoj" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odhod do" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Prihod do" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Pokaži" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Avtobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaki" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna železnica" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Letala" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutno mesto" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Približaj za dodajanje mesta!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približaj" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Določanje pravilne zgradbe v mapi je spodletelo." + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Razčlenjevanje dokumenta XML je spodletelo" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Manjkajo zahtevani atributi" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ni mogoče najti predmeta OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Pot do krajevne mape s sličicami" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Velikost sličic za krajevno mapo s sličicami" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Pokaži različico programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Prezri razpoložljivost omrežja" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA …|NASLOV URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izbor računa" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Nalaganje" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izbor mesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Facebook. Izberite ustrezno mesto iz " +"seznama." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Foursquare. Izberite ustrezno mesto iz " +"seznama." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se v %s." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Vpišite sporočilo za objavo v %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Prišlo je do napake!" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ni mogoče najti »%s« med razpoložljivimi storitvami" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ni mogoče najti ustreznega mesta za objavo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Poverila so potekla. Ponovna vzpostavitev računa je mogoče med nastavitvami." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu ni ničesar!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Na zemljevid je dodano mesto. Upoštevajte, da lahko traja, preden se pokaže " +"na zemljevidu in med rezultati iskanja." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "zemljevid na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sistem je le za branje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ni ustreznih dovoljenj za shranjevanje na to mesto" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mapa ne obstaja" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ime datoteke ni določeno" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ni mogoče izvoziti pogleda" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neveljavna koordinata" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "napaka med razčlenjevanjem" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznana geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Zahteva za pridobivanje poti je spodletela." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Ni najdene poti" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Začetna točka!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Vse datoteke plasti" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Napaka med povezovanjem s storitvijo določevanja točke GPS" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Matej Urbančič \n" +"Martin Srebotnjak" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Program za prikaz zemljevidov za GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Avtorske pravice © 2011–2019 Red Hat, Inc. in avtorji programa Zemljevidi " +"GNOME" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke zemljevida objavljajo %s in drugi sodelujoči" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Podatke zemljevida objavlja %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Iskalnik omogoča %s z uporabo %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Vrsta datoteke ni podprta" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Odpiranje plasti je spodletelo" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Odpiranje naslova URI Geo je spodletelo." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Uspešno zaključeno" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Slaba zahteva" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Predmeta ni mogoče najti" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Spor urejanja; ravnokar je nekdo drug spremenil isti predmet." + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Predmet je izbrisan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Pot oziroma zveza je sklicana na neobstoječ podrejen predmet" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Ime" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Uradno ime ali naziv se običajno pojavlja na tablah." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Naslov" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Spletišče" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Uradna spletna stran mora biti zapisana kot osnovni naslov URL, na primer " +"http://www.primer.si in ne http://www.primer.si/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonska številka mora biti zapisana v mednarodnem zapisu (začne se s " +"+ ...) Upoštevajte tudi krajevna določila zasebnosti, še posebej za zasebne " +"telefonske številke." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedija" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Uporabljen zapis mora vključevati kodo jezika in naslov prispevka, na primer " +"»sl:Naslov prispevka«." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Odpiralni čas" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Poglejte povezano na oznakiza pomoč o zapisu." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Nadmorska višina" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska višina točke v metrih" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Invalidom prijazno" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Omejeno" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Označeno" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetni dostop" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žično" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Storitev" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizem" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizem" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizem" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizem" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Krščanstvo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucionizem" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizem" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainizem" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judovstvo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Izberi več" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Poganstvo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizem" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizem" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhizem" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizem" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizem" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Univerzalni unitarizem" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jazidizem" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizem" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Stranišča" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Opomba" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podrobnosti, s katerimi lahko obvestimo druge uporabnike o neobičajnih " +"spremembah predmetov, pomembnih podatkih ali namenih za nadaljne izboljšave." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodajanje točke na OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izbor vrste" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Končano" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Neimenovano mesto" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populacija:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Nadmorska višina:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Odpiralne ure:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetni dostop:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Stranišča:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Invalidom prijazno:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Razčlenjevanje naslova URI Geo je spodletelo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "omejeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "podpora invalidom" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Mesta na OpenStreetMap ni mogoče najti" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Podan naslov URL OpenStreetMap ni veljaven" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate v naslovu URL niso veljavne" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Podan naslov URL ni podprt" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Poteka nalaganje zemljevida za tiskanje" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tiskanje je mogoče prekiniti, če je postopek predolg" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekliči tiskanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj prek mesta" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstrani prek mesta" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni pot" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s v %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Odpiranje naslova URI je spodletelo" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Odpri s programom %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nalaganje datoteke je spodletelo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Predviden čas: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Načrt potovanja objavlja %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začnite na %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začetna točka" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Hodite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Prihod k %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Prihod" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Pokaži navodila za hojo" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrij navodila za hojo" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Naloži predhodne možnosti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Naloži kasnejše možnosti" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ni predhodnih možnosti." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ni kasnejših možnosti." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Za to pot podatki o času niso na voljo." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Za to pot podatki o ponudnikih niso na voljo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuta" +msgstr[2] "%s minuti" +msgstr[3] "%s minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ur" +msgstr[1] "%s ura" +msgstr[2] "%s uri" +msgstr[3] "%s ure" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ur" +msgstr[1] "%s:%s ura" +msgstr[2] "%s:%s uri" +msgstr[3] "%s:%s ure" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "neprestano" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od zore do mraka" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "vsak dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "javni prazniki" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "šolske počitnice" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ni odprto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "žično" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "storitev" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Natančnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Neznan položaj" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Natančen položaj" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" +msgstr[3] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" +msgstr[3] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" +msgstr[3] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta vstavek ne podpira najnovejšega prihod" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Nadaljujte po %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Nadaljujte" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zavijte levo na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Zavijte levo" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Držite se leve na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Držite se leve" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zavijte ostro levo na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Zavijte ostro levo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zavijte desno na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Zavijte desno" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Držite se desne na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Držite se desne" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zavijte ostro desno na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Zavijte ostro desno" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iz krožišča zapeljite na izvoz %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iz krožišča zapeljite na izvoz za %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Zapeljite v krožišče" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Vstopite v dvigalo in izstopite v %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Vstopite v dvigalo" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Naredite polkrožni zavoj v levo na %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Naredite polkrožni zavoj v levo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Naredite polkrožni zavoj v desno na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Naredite polkrožni zavoj v desno" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ali še nimate svojega računa?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Iskanje poti s OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj cilj" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Odpri z drugim programom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite vnosno tipko za iskanje" + +#~ msgid "Quit" +#~ msgstr "Izhod" + +#~ msgid "OK" +#~ msgstr "V redu" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Odpri plast oblike…" + +#~ msgid "Load Map Layer" +#~ msgstr "Naloži plast zemljevida" + +#~ msgid "Open Layer" +#~ msgstr "Odpri plast" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "" +#~ "Maps need an active internet connection to function properly, but one " +#~ "can't be found." +#~ msgstr "" +#~ "Zemljevidi potrebujejo za pravilno delovanje dejavno internetno povezavo, " +#~ "ki pa ni na voljo." + +#~ msgid "Don't have an account?" +#~ msgstr "Še nimate računa za dostop?" + +#~ msgid "The verification code didn't match, please try again." +#~ msgstr "Neveljavna koda za pooblastitev. Poskusite znova." + +#~ msgid "Cannot find \"%s\" in the social service" +#~ msgstr "Ni mogoče najti \"%s\" med razpoložljivimi storitvami" + +#~ msgid "The directory does not exists" +#~ msgstr "Ciljna mapa ne obstaja" + +#~ msgid "Setup OpenStreetMap Account" +#~ msgstr "Nastavitev računa OpenStreetMap" + +#~ msgid "Position not found" +#~ msgstr "Položaja ni mogoče določiti" + +#~ msgid "Postal code: %s" +#~ msgstr "Poštna številka: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Koda države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Populacija: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Dostop v vozičku: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zadnje znano mesto in natančnost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zadnje znano mesto (geografska širina in dolžina v stopinjah) in " +#~ "natančnost (v metrih)." + +#~ msgid "Description of last known location" +#~ msgstr "Opis zadnjega znanega mesta" + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis zadnjega znanega mesta uporabnika." + +#~ msgid "User set last known location" +#~ msgstr "Ročno nastavljeno zadnje mesto nahajanja" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ali je bilo zadnje znano mesto nastavljeno ročno." + +#~ msgid "I’m here!" +#~ msgstr "Jaz sem tu!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid "Track user location." +#~ msgstr "Sledenje gibanja uporabnika." + +#~ msgid "Map Type" +#~ msgstr "Vrsta zemljevida" + +#~ msgid "Cycling" +#~ msgstr "Kolesarjenje" + +#~ msgid "Transit" +#~ msgstr "Javni promet" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 00000000..cf5d0323 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,2021 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Мирослав Николић , 2013—2017. +# Борисав Живановић , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-09-03 10:32+0200\n" +"Last-Translator: Марко М. Костић \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.4.1\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Гномове карте" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Нађите места широм света" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Гномове Карте вам дају брз приступ картама широм света. Омогућава вам да " +"брзо и лако пронађете место које тражите тражећи град или улицу, или да " +"одредите место за сусрет са пријатељима." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Овај програм користи заједничку базу података „OpenStreetMap“, коју стварају " +"стотине хиљада људи широм света." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете чак и да потражите нека посебна места, као што су „Градски паркови у " +"Јагодини“ или „Хотели у центру Пирота“." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Гномов пројекат" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Карте" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Једноставан програм за карте" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;карте;мапе;карта;мапа;karte;mape;karta;mapa;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозвољава да се ваша локација приказује на карти." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последње погледано место" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координате последње погледаног места." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увећање" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Ниво увећања" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Врста карте" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Врста карте за приказ (улица, авионски и сл.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Величина прозора" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Величина прозора (ширина и висина)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положај прозора" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положај прозора (положено и усправно)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Увећавање прозора" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стање увећања прозора" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Највећи број резултата претраге" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Највећи број резултата претраге за претрагу геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Број скорашњих места за чување" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Број недавно посећених места за чување." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Број скорашњих путева које треба сачувати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Број скоро посећених путева које треба сачувати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Подешавање провере приватности Фејсбука" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последње подешавање провере приватности Фејсбука. Могуће вредности су: " +"„EVERYONE“ (свако), „FRIENDS_OF_FRIENDS“ (пријатељи пријатеља), " +"„ALL_FRIENDS“ (сви пријатељи) или „SELF“ (сами)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Подешавање провере приватности Форсквера" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последње подешавање провере приватности Форсквера. Могуће вредности су: " +"„public“ (јавно), „followers“ (пратиоци) или „private“ (приватно)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Форскверова провера Фејсбуковог емитовања" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као објаву у налогу Фејсбука " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Форскверова провера Твитеровог емитовања" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као цвркут у налогу Твитера " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap корисничко име или е-адреса" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показује да ли је корисник пријављен да би могао да уређује OpenStreetMap " +"податке." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Последња врста превоза коришћена за проналажење пута" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Ноћни режим" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Да ли је програм у ноћном режиму." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Користи хибридне ваздушне плоче" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Да ли треба користити ваздушне плоче са хибридним стилом (са етикетама)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видљивост" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Објави на Фејсбуку" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Објави на Твитеру" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Откажи" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Провери" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Свако" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Пријатељи пријатеља" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Само пријатељи" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Само ја" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Јавно" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Пратиоци" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Приватно" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Пут одавде" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додај међу-одредиште" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Пут довде" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Шта је то овде?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Умножите место" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap налог" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Извези преглед" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "И_звези" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Укључи путеве и маркере" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Идите на текуће место" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Изаберите врсту карте" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Умањи" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Увећај" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Пребаците на планирање пута" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Пребаците на омиљене" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Опште" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Приказ пречица" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Претрага" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Покретање планирања пута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Излаз" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Отвара главни изборник" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Преглед карте" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Увећавање" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Умањивање" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Подешавање увећања" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Одлазак на тренутно место" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Пребаци на поглед са улице" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Пребаци на поглед из ваздуха" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Отвори слој облика" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Прикажи етикете" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Отвори слој облика…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Укључите услуге положаја да нађете ваш положај" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Откажи" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Подешавања положаја" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Ноћни режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Подеси OpenStreetMap налог" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Извези као слику" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Пречице на _тастатури" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "О Картама" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Отвори главни изборник" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Нађи пут" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Програм је ван мреже!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Потребна је радна интернет веза да би програм исправно радио, али није " +"доступна." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Проверите вашу везу и подешавања посредника." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Додајте у нови пут" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Подели место" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Означите омиљеним" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Проверите овде" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap налог" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Пријавите се да бисте мењали карте" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Побољшајте карту користећи\n" +"OpenStreetMap налог." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Е-адреса" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Лозинка" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Регистрација" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Пријави ме" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Нажалост, то није прорадило. Пробајте поново или посетите\n" +"OpenStreetMap да бисте опоравили вашу лозинку." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Потврдни код се не подудара, пробајте поново." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Унесите потврдни код приказан изнад" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Потврди" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Пријављен" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш OpenStreetMap налог је сада активан." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Одјави ме" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Кућни број" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштански број" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Град" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Врста" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ништа" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додај поље" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Измене на карти ће бити видљиве на свим картама\n" +"које користе податке са OpenStreetMap пројекта." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно коришћено" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Следеће" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Прикажи још података" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нема резултата" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Превуци да би променио редослед пута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Отвори место" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Копирај" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Пошаљи у…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Отвори слој облика" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Отвори" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Подеси видљивост" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Претрага руте Граф Хопером" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршруте јавног превоза омогућује услуга треће стране.\n" +"Гном не може јемчити за тачност приказаних маршрута и заказаних полазака.\n" +"Знајте да неки достављачи неће укључити све могуће режиме превоза,\n" +"нпр.: национални достављач података неће приказати све авио превознике а\n" +"локални достављач неће приказати регионалне возне линије.\n" +"Приказани називи и робне марке се требају сматрати регистрованим робним " +"маркама\n" +"где је то могуће." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Прикажите још резултата" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сакриј станице и податке на маршрути" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Прикажи станице и податке на маршрути" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Полази сада" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Полази у" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Долази у" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Прикажи" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Аутобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваји" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Возови" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Подземна" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Трајекти" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Авиони" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Тренутни положај" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Увећај за додавање локације!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Увећај" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Неуспех при тражењу структуре плочица у фасцикли" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Нисам успео да обрадим ИксМЛ документ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Недостају потребне особине" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Нисам могао да нађем ОСМ елемент" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Путања до локалне фасцикле са структуром плочица" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Величина плочица за локални директоријум плочица" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Прикажи издање програма" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Занемари доступност мреже" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Изаберите налог" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Учитавам" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Изаберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Фејсбуком. Изаберите једно са списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Форсквером. Изаберите једно са списка." + +# Мисли се на рецепцију, хотеле. +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Пријави се у „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите изборну поруку за рецепцију „%s“." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Дошло је до грешке" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не могу да нађем „%s“ у друштвеним услугама" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не могу да нађем одговарајуће место за пријаву на овом месту" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Уверења су истекла, отворите налоге на мрежи да се пријавите и укључите овај " +"налог" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ништа није нађено овде!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Локација је додата на карту. Знајте да ће требати мало времена пре него што " +"се појави на карти и у резултатима претраге." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Систем датотека је само за читање" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немате овлашћење да сачувате ту" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Директоријум не постоји" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Није наведено име датотеке" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не могу да извезем преглед" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неисправна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "грешка у обрађивању" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "непозната геометрија" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Захтев пута није успео." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Нисам пронашао пут." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Крени!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Све датотеке слоја" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Нисам успео да се повежем на услугу положаја" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Мирослав Николић \n" +"Марко М. Костић \n" +"Борисав Живановић \n" +"\n" +"https://гном.срб — превод Гнома на српски језик" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Гномов програм за карте" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Право на копирање © 2011 – 2019 Red Hat, Inc. и творци Гномових Карти" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Подаци о картама са платформе %s и од доприносилаца" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Плочице за карту су преузете са %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Претрагу омогућава %s помоћу %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Врста датотеке није подржана" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Нисам успео да отворим слој" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Нисам успео да отворим Гео-УРИ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неисправно корисничко име или лозинка" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успех" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Лош захтев" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Објекат није нађен" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Сукоб, неко други је управо изменио објекат" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Објекат је обрисан" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Пут или релација се односи на непостојеће дете" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Назив" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Званични назив. Обично назив који се налази на саобраћајним знаковима." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб страница" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Званична веб страница. Пробајте да унесете најосновнији облик адресе. На " +"пример: „http://primer.rs“ уместо „http://primer.rs/pocetna.html“." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Број телефона. Користите међународни формат где број почиње са плус знаком. " +"Обратите пажњу на локалне законе о заштити приватности, нарочито ако су у " +"питању приватни бројеви телефона." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Википедија" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Коришћени формат треба да садржи ознаку језика и наслов чланка. На пример: " +"„sr:Наслов чланка“." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Радно време" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Погледајте везу у етикети за више података о формату." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Становништво" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Висина" + +# Ми не морамо да пишемо "(height above sea lever)" јер сама реч „надморска висина“ описује да је у питању висина изнад мора. :) +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Надморска висина тачке у метрима." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Приступ инвалидима" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Не" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ограничен" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Намењено" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Приступ интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Бежични" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Жичани" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Интернет кафе" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Услуга" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Вероисповест" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизам" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаизам" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Будизам" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодаизам" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Хришћанство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфучијанство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Хиндуизам" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ђаинизам" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Јудаизам" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Вишеструке вероисповести" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Паганизам" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафаријанизам" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Сајентологија" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Шинтоизам" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикизам" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритуализам" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Таоизам" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитарни универзализам" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Језидизам" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастизам" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Тоалети" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Белешка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Подаци за обавештавање других картографа о мање очигледним подацима о " +"елементу, намери аутора приликом стварања или о саветима за будућа побољшања." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Изабери врсту" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Неименовано место" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Број становника:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Висина:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Радно време:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Приступ интернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Вероисповест:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Тоалети:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Приступ инвалидима:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Неуспех при обради Гео путање" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "да" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ограничено" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "намењено" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Место није нађено на OpenStreetMap-у" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Неисправна OpenStreetMap адреса" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Неисправне координате у адреси" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Адреса није подржана" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Од %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Учитавам плочице карте за штампање" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете прекинути штампање ако ово потраје" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прекини штампање" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додај преко места" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Уклони преко места" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обрни пут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додај %s на %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Нисам успео да отворим путању" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Отвори програмом %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "нисам успео да учитам датотеку" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Процењено време: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруте су преузете са %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Креће у %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Крени" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешачите %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Долази у %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Долази" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Прикажи упутства за пешачење" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сакриј упутства за пешачење" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Учитај раније алтернативе" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Учитај старије алтернативе" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Нисам успео да нађем раније алтернативе." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Нисам успео да нађем старије алтернативе." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Нема редова вожњи за ову руту." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Ниједан достављач није нађен за ову руту." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" +msgstr[1] "%s минута" +msgstr[2] "%s минута" +msgstr[3] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сат" +msgstr[1] "%s сата" +msgstr[2] "%s сати" +msgstr[3] "%s сат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сат" +msgstr[1] "%s:%s сата" +msgstr[2] "%s:%s сати" +msgstr[3] "%s:%s сат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "у времену" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "од јутра до вечери" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "сваког дана" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "јавни празници" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "школски празници" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "није отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "жичани" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "интернет кафе" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "услуга" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Тачност: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Непознато" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Тачно" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s ч" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч %s м" +msgstr[1] "%s ч %s м" +msgstr[2] "%s ч %s м" +msgstr[3] "%s ч %s м" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин." +msgstr[1] "%s мин." +msgstr[2] "%s мин." +msgstr[3] "%s мин." + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s километара" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s метара" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s миља" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s стопа" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Овај прикључак не подржава последњи долазак" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Настави ка %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Настави" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Скрени лево код %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Скрени лево" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Скрени благо лево код %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Скрени благо лево" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Скрени оштро лево код %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Скрени оштро лево" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Скрени десно код %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Скрени десно" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Скрени благо десно код %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Скрени благо десно" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Скрени оштро десно код %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Скрени оштро десно" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "У кружном току, изађите %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "У кружном току, изађите код %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Идите на кружни ток" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Уђите у лифт и изађите на спрат %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Уђите у лифт" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Направите заокрет налево ка %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Направите заокрет налево" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Направите заокрет надесно ка %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Направите заокрет надесно" + +#~ msgid "Don’t have an account?" +#~ msgstr "Немате налог?" + +#~ msgid "%f h" +#~ msgstr "%f ч" + +#~ msgid "%f min" +#~ msgstr "%f мин." + +#~ msgid "%f s" +#~ msgstr "%f сек." + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Претрага руте преко Опен-Трип-Планера" + +#~ msgid "Add destination" +#~ msgstr "Додај одредиште" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Отворите другим програмом" + +#~ msgid "Press enter to search" +#~ msgstr "Притисните „унеси“ да претражите" + +#~ msgid "Quit" +#~ msgstr "Изађи" + +#~ msgid "OK" +#~ msgstr "У реду" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Отвори слој облика…" + +#~ msgid "Load Map Layer" +#~ msgstr "Учитај слој карте" + +#~ msgid "Open Layer" +#~ msgstr "Отвори слој" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f миља" + +#~ msgid "%f ft" +#~ msgstr "%f стопа" + +#~ msgid "Position not found" +#~ msgstr "Нисам пронашао положај" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Нисам успео да обрадим Гео-ЈСОН датотеку" + +#~ msgid "Country code: %s" +#~ msgstr "Шифра државе: %s" + +#~ msgid "Population: %s" +#~ msgstr "Становника: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Приступна рампа: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Последње познато место и прецизност" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Последње познато место корисника (географска ширина и дужина у степенима) " +#~ "и прецизност (у метрима)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Опис последњег познатог места корисника." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Да ли је корисник ручно подесио последње познато место." + +#~ msgid "I’m here!" +#~ msgstr "Ја сам овде!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Сателит" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 00000000..94102f39 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1712 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Miroslav Nikolić , 2013—2017. +# Borisav Živanović , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2018-02-22 22:22+0000\n" +"PO-Revision-Date: 2018-02-16 09:25+0100\n" +"Last-Translator: Marko M. Kostić \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.0.3\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Gnomove karte" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Nađite mesta širom sveta" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Gnomove Karte vam daju brz pristup kartama širom sveta. Omogućava vam da " +"brzo i lako pronađete mesto koje tražite tražeći grad ili ulicu, ili da " +"odredite mesto za susret sa prijateljima." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Ovaj program koristi zajedničku bazu podataka „OpenStreetMap“, koju stvaraju " +"stotine hiljada ljudi širom sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak i da potražite neka posebna mesta, kao što su „Gradski parkovi u " +"Jagodini“ ili „Hoteli u centru Pirota“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program za karte" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;karte;mape;karta;mapa;karte;mape;karta;mapa;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Dozvoljava da se vaša lokacija prikazuje na karti." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "poslednje pogledano mesto" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Koordinate poslednje pogledanog mesta." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Položaj prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (položeno i uspravno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Uvećavanje prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage za pretragu geokoda." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Broj skorašnjih mesta za čuvanje" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posećenih mesta za čuvanje." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Broj skorašnjih puteva koje treba sačuvati" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Broj skoro posećenih puteva koje treba sačuvati." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Podešavanje provere privatnosti Fejsbuka" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslednje podešavanje provere privatnosti Fejsbuka. Moguće vrednosti su: " +"„EVERYONE“ (svako), „FRIENDS_OF_FRIENDS“ (prijatelji prijatelja), " +"„ALL_FRIENDS“ (svi prijatelji) ili „SELF“ (sami)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Podešavanje provere privatnosti Forskvera" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslednje podešavanje provere privatnosti Forskvera. Moguće vrednosti su: " +"„public“ (javno), „followers“ (pratioci) ili „private“ (privatno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Forskverova provera Fejsbukovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao objavu u nalogu Fejsbuka " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Forskverova provera Tviterovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao cvrkut u nalogu Tvitera " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili e-adresa" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Pokazuje da li je korisnik prijavljen da bi mogao da uređuje OpenStreetMap " +"podatke." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Poslednja vrsta prevoza korišćena za pronalaženje puta" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Podesi OpenStreetMap nalog" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Prečice na _tastaturi" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Izađi" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Fejsbuku" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Tviteru" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Proveri" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svako" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo ja" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je to ovde?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Umnožite mesto" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Izvezi kao sliku" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap nalog" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Izvezi pregled" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "I_zvezi" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Uključi puteve i markere" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Opšte" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaz prečica" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pokretanje planiranja puta" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Štampaj put" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Izlaz" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pregled karte" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Uvećavanje" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Umanjivanje" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Podešavanje uvećanja" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Odlazak na trenutno mesto" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na pogled sa ulice" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na pogled iz vazduha" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj oblika" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +msgid "Open Shape Layer…" +msgstr "Otvori sloj oblika…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite usluge položaja da nađete vaš položaj" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Podešavanja položaja" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Idite na tekuće mesto" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Izaberite vrstu karte" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Zoom out" +msgstr "Umanji" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Zoom in" +msgstr "Uvećaj" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Prebacite na planiranje puta" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Prebacite na omiljene" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Štampaj put" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Program je van mreže!" + +#: ../data/ui/main-window.ui.h:17 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Potrebna je radna internet veza da bi program ispravno radio, ali nije " +"dostupna." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Proverite vašu vezu i podešavanja posrednika." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Dodajte u novi put" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Otvorite drugim programom" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Označite omiljenim" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Proverite ovde" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap nalog" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Prijavite se da biste menjali karte" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Poboljšajte kartu koristeći\n" +"OpenStreetMap nalog." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "E-adresa" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Lozinka" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Prijavi me" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "Nemate nalog?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije proradilo. Probajte ponovo ili posetite\n" +"OpenStreetMap da biste oporavili vašu lozinku." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "Potvrdni kod se ne podudara, probajte ponovo." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Unesite potvrdni kod prikazan iznad" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Potvrdi" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Prijavljen" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap nalog je sada aktivan." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Odjavi me" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Ulica" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Kućni broj" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Grad" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Vrsta" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Ništa" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Dodaj polje" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Komentar" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmene na karti će biti vidljive na svim kartama\n" +"koje koriste podatke sa OpenStreetMap projekta." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Nedavno korišćeno" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Otkaži" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sledeće" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Prikaži još podataka" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Pritisnite „unesi“ da pretražite" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "Nema rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Prevuci da bi promenio redosled puta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvorite mesto" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Otvori" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Otvori sloj oblika" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Podesi vidljivost" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Pretraga rute Graf Hoperom" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Pretraga rute preko Open-Trip-Planera" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Maršrute javnog prevoza omogućuje Gnom korišćenjem\n" +"redova vožnji nabavljenih od prevoznika ili agencija.\n" +"Ove firme i agencije se ne mogu smatrati odgovornim za prikazane rezultate.\n" +"Gnom ne može jemčiti za tačnost prikazanih maršruta i zakazanih polazaka.\n" +"Prikazani nazivi i robne marke se trebaju smatrati registrovanim robnim " +"markama\n" +"gde je to moguće." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikažite još rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Sakrij stanice i podatke na maršruti" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Prikaži stanice i podatke na maršruti" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Polazi sada" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Polazi u" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Dolazi u" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Prikaži" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Autobusi" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Tramvaji" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Vozovi" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Podzemna" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Trajekti" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutni položaj" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "U redu" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspeh pri traženju strukture pločica u fascikli" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nisam uspeo da obradim IksML dokument" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Nedostaju potrebne osobine" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Nisam mogao da nađem OSM element" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne fascikle sa strukturom pločica" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Prikaži izdanje programa" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izaberite nalog" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavam" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izaberite mesto" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Fejsbukom. Izaberite jedno sa spiska." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Forskverom. Izaberite jedno sa spiska." + +# Misli se na recepciju, hotele. +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se u „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napišite izbornu poruku za recepciju „%s“." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Došlo je do greške" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne mogu da nađem „%s“ u društvenim uslugama" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu da nađem odgovarajuće mesto za prijavu na ovom mestu" + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uverenja su istekla, otvorite naloge na mreži da se prijavite i uključite ovaj " +"nalog" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Put odavde" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Dodaj odredište" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Put dovde" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Ništa nije nađeno ovde!" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodata na kartu. Znajte da će trebati malo vremena pre nego što " +"se pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem datoteka je samo za čitanje" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate ovlašćenje da sačuvate tu" + +#: ../src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorijum ne postoji" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nije navedeno ime datoteke" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne mogu da izvezem pregled" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neispravna koordinata" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška u obrađivanju" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Zahtev puta nije uspeo." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Nisam pronašao put." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Nisam uspeo da se povežem na uslugu položaja" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "" +"Miroslav Nikolić \n" +"Marko M. Kostić \n" +"Borisav Živanović \n" +"\n" +"http://prevod.org — prevod na srpski jezik" + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Gnomov program za karte" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Pravo na kopiranje © 2011 – 2017 Red Hat, Inc. i tvorci Gnomovih Karti" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podaci o kartama sa platforme %s i od doprinosilaca" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Pločice za kartu su preuzete sa %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Nisam uspeo da otvorim sloj" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Nisam uspeo da otvorim Geo-URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Nisam uspeo da nađem ranije alternative." + +#: ../src/openTripPlanner.js:614 +msgid "No later alternatives found." +msgstr "Nisam uspeo da nađem starije alternative." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Nema redova vožnji za ovu rutu." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Uspeh" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Loš zahtev" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekat nije nađen" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, neko drugi je upravo izmenio objekat" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekat je obrisan" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Put ili relacija se odnosi na nepostojeće dete" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Zvanični naziv. Obično naziv koji se nalazi na saobraćajnim znakovima." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Veb stranica" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Zvanična veb stranica. Probajte da unesete najosnovniji oblik adrese. Na " +"primer: „http://primer.rs“ umesto „http://primer.rs/pocetna.html“." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format gde broj počinje sa plus znakom. " +"Obratite pažnju na lokalne zakone o zaštiti privatnosti, naročito ako su u " +"pitanju privatni brojevi telefona." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Vikipedija" + +#: ../src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišćeni format treba da sadrži oznaku jezika i naslov članka. Na primer: " +"„sr:Naslov članka“." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Radno vreme" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte vezu u etiketi za više podataka o formatu." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Stanovništvo" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +# Mi ne moramo da pišemo "(height above sea lever)" jer sama reč „nadmorska visina“ opisuje da je u pitanju visina iznad mora. :) +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska visina tačke u metrima." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup invalidima" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "da" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ograničen" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "namenjeno" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežični" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žičani" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Internet kafe" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Veroispovest" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizam" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Hrišćanstvo" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Konfučijanstvo" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Đainizam" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Višestruke veroispovesti" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarijanizam" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Sajentologija" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastizam" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Beleška" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podaci za obaveštavanje drugih kartografa o manje očiglednim podacima o " +"elementu, nameri autora prilikom stvaranja ili o savetima za buduća poboljšanja." + +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izaberi vrstu" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotovo" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Broj stanovnika:" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Visina:" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Radno vreme:" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Veroispovest:" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Toaleti:" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Pristup invalidima:" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefon:" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Neuspeh pri obradi Geo putanje" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "namenjeno" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavam pločice karte za štampanje" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti štampanje ako ovo potraje" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini štampanje" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +msgid "Add via location" +msgstr "Dodaj preko mesta" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +msgid "Remove via location" +msgstr "Ukloni preko mesta" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Obrni put" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Nisam uspeo da otvorim putanju" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nisam uspeo da učitam datoteku" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Procenjeno vreme: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazi u %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Dolazi" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Kreće u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +msgid "Start" +msgstr "Kreni" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Prikaži uputstva za pešačenje" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Sakrij uputstva za pešačenje" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Pešačite %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj starije alternative" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuta" +msgstr[2] "%d minuta" +msgstr[3] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sata" +msgstr[2] "%d sati" +msgstr[3] "%d sat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d sat" +msgstr[1] "%d:%02d sata" +msgstr[2] "%d:%02d sati" +msgstr[3] "%d:%02d sat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "u vremenu" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od jutra do večeri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "svakog dana" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "žičani" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "internet kafe" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f č" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min." + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f sek." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s kilometara" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s metara" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s milja" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s stopa" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milja" + +#~ msgid "%f ft" +#~ msgstr "%f stopa" + +#~ msgid "Position not found" +#~ msgstr "Nisam pronašao položaj" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nisam uspeo da obradim Geo-JSON datoteku" + +#~ msgid "Country code: %s" +#~ msgstr "Šifra države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Stanovnika: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pristupna rampa: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Poslednje poznato mesto i preciznost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Poslednje poznato mesto korisnika (geografska širina i dužina u stepenima) " +#~ "i preciznost (u metrima)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis poslednjeg poznatog mesta korisnika." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Da li je korisnik ručno podesio poslednje poznato mesto." + +#~ msgid "I’m here!" +#~ msgstr "Ja sam ovde!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..6c87a9d7 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,2024 @@ +# Swedish translations for gnome-maps package +# Svenska översättningar för paketet gnome-maps. +# Copyright © 2013-2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marcus Lundblad , 2013. +# Sebastian Rasmussen , 2015, 2016. +# Anders Jonsson , 2015, 2016, 2017, 2018, 2019, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-23 18:51+0200\n" +"Last-Translator: Anders Jonsson \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kartor" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Hitta platser i världen" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartor ger dig snabb tillgång till kartor över hela världen. Det låter dig " +"hitta platsen du letar efter genom att söka efter en stad eller gata eller " +"finna ett ställe att möta en vän på." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartor använder kartdatabasen OpenStreetMap, skapad genom samarbete av flera " +"hundratusentals personer över hela världen." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan till och med söka efter specifika platser såsom ”Pub nära " +"Drottninggatan, Stockholm” eller ”Hotell vid Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Kartor" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ett enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartor;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillåter att din plats visas på kartan." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "senaste visade plats" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater för senast visade plats." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomnivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Karttyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen av karta att visa (vägkarta, flygfoto o.s.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fönsterstorlek" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fönsterstorlek (bredd och höjd)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fönsterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fönsterposition (X och Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fönster maximerat" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tillstånd för maximerat fönster" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximalt antal sökresultat" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximalt antal sökresultat från geocode-sökning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal senaste platser att lagra" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senast besökta platser att lagra." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal senaste rutter att lagra" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senast besökta rutter att lagra." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Sekretessinställning för Facebook-incheckning" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Senaste använda sekretessinställning för Facebook-incheckning. Möjliga " +"värden är: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS eller SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Sekretessinställning för Foursquare-incheckning" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Senast använda sekretessinställning för Foursquare-incheckning. Möjliga " +"värden är: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Facebook-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Twitter-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Användarnamn hos OpenStreetMap eller e-postadress" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikerar om användaren har loggat in för att redigera OpenStreetMap-data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Senaste transporttyp för rutter" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattläge" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Huruvida programmet är i nattläge." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Använd hybridflygfotorutor" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Huruvida flygfotorutor ska använda hybridstil (med etiketter)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Posta på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Posta på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Checka in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alla" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vänners vänner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vänner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara jag" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publikt" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Följare" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rutt härifrån" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lägg till mellanliggande stopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rutt hit" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Vad finns här?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiera plats" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportera vy" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportera" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkludera rutt och markörer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Välj karttyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zooma ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zooma in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå på/av favoriter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allmänt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Visa genvägar" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Sök" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avsluta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zooma in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zooma ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Visa/dölj skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Växla till gatuvy" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Växla till flygfotovy" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Öppna formlager" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Visa etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Öppna formlager…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå på platstjänster för att hitta din plats" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Platsinställningar" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattläge" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfigurera OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportera som bild" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tangentbordsgenvägar" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kartor" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Hitta en rutt" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Kartor är frånkopplad!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartor behöver en aktiv internetanslutning för att fungera korrekt, men en " +"sådan kan ej hittas." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Kontrollera din anslutning och proxyinställningar." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Lägg till ny rutt" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dela plats" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markera som favorit" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Checka in här" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logga in för att redigera kartor" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjälp till att förbättra kartan via ett\n" +"OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lösenord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrera dig" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logga in" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Det fungerade tyvärr inte. Prova igen eller besök\n" +"OpenStreetMap för att återställa ditt lösenord." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifieringskoden stämde inte, prova igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Mata in verifieringskoden som visas ovan" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiera" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Inloggad" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ditt OpenStreetMap-konto är aktivt." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logga ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Postort" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lägg till fält" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartändringar kommer synas på alla kartor som använder\n" +"OpenStreetMap-data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senast använda" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Nästa" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Visa fler resultat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Inga resultat hittades" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra för att ändra ruttens ordning" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Öppna plats" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiera" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Skicka till…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Öppna formlager" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Öppna" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå på/av favoriter" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruttsökning utförd av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Resväg för kollektivtrafik tillhandahålls av tredjepartstjänster.\n" +"GNOME kan inte garantera korrektheten hos resvägarna och tabellerna som " +"visas.\n" +"Observera att vissa operatörer kanske inte inkluderar alla möjliga " +"färdsätt,\n" +"t.ex. visar en nationell operatör kanske inte flyglinjer, och en lokal\n" +"operatör saknar kanske regionala tåg.\n" +"Namn och varumärken som visas anses vara registrerade varumärken då " +"tillämpligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Visa fler resultat" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Dölj mellanliggande stopp och information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Visa mellanliggande stopp och information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Åk nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Åk tidigast" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Anländ senast" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Visa" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussar" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Spårvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tåg" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Tunnelbana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Färjor" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flygplan" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuell plats" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zooma in för att lägga till plats!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zooma in" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Misslyckades med att hitta rutstruktur i katalog" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Misslyckades med att tolka XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Saknar nödvändiga attribut" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunde inte hitta OSM-element" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "En sökväg till en lokal katalogstruktur med kartrutor" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Rutstorlek för lokal katalog med kartrutor" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Visa programmets version" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignorera nätverkets tillgänglighet" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Välj ett konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Läser in" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Välj en plats" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Facebook. Välj en från " +"denna lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Foursquare. Välj en från " +"denna lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Checka in på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv ett valfritt meddelande för att checka in på %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Ett fel har inträffat" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan inte hitta ”%s” i den sociala tjänsten" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan inte hitta en lämplig plats att checka in på denna plats" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Inloggningsuppgifterna har gått ut, öppna Nätkonton för att logga in och " +"aktivera detta konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting hittades här!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Plats lades till på kartan, observera att det kan ta ett tag innan det syns " +"på kartan och bland sökresultaten." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartor vid %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet är skrivskyddat" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har inte rättigheter att spara där" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen existerar inte" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Inget filnamn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ej exportera vy" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ogiltig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "tolkningsfel" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "okänd geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Ruttbegäran misslyckades." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Hittade ingen rutt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Starta!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alla lagerfiler" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Misslyckades att ansluta till platstjänst" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Marcus Lundblad \n" +"Anders Jonsson \n" +"Skicka synpunkter på översättningen till\n" +"." + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Ett kartprogram för GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. och upphovsmännen för GNOME Maps" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata från %s och bidragsgivare" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartrutor tillhandahållna av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Sökning tillhandahålls av %s med %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Filtypen stöds inte" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Misslyckades med att öppna lager" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Misslyckades med att öppna GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Framgång" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Felaktig begäran" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt hittades ej" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, någon annan har precis modifierat objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet har tagits bort" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Väg eller relation refererar till obefintliga barn" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Namn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officiella namnet. Detta är typiskt vad som visas på skyltar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adress" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webbplats" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officiella webbplatsen. Försök att använda den mest grundläggande formen " +"för en URL, d.v.s. http://example.com istället för http://example.com/index." +"html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Använd det internationella formatet som börjar med ett " +"plustecken. Var uppmärksam på lokala sekretesslagar, speciellt för privata " +"telefonnummer." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet som används bör inkludera språkkoden och artikeltiteln, t.ex. ”sv:" +"Artikelns titel”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Öppettider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se länken i etiketten för hjälp om formatet." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Folkmängd" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Höjd över havet" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höjd (höjd över havet) för en plats i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Åtkomst för rullstol" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begränsad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Avsett för" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetåtkomst" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådlöst" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjänst" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Cao đai" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judendom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flera religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaristisk universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Anteckning" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information som används för att informera andra karterare om icke uppenbar " +"information om ett element, personens avsikt då det skapades, eller tips på " +"hur det kan förbättras ytterligare." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Välj typ" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Klar" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Namnlös plats" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Folkmängd:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Höjd över havet:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Öppettider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetåtkomst:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Åtkomst för rullstol:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Misslyckades med att tolka geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begränsad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nej" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "avsett för" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Platsen hittades inte i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL:en är felaktig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaterna i URL:en är felaktiga" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL:en stöds inte" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Från %s till %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Läser in kartrutor för utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryta utskriften om detta tar för lång tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lägg till position att passera" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ta bort position att passera" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vänd rutt" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lägg till %s till %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Misslyckades med att öppna URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Öppna med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "misslyckades med att läsa in fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Uppskattad tid: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Resvägar tillhandahållna av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starta från %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Starta" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Anländ vid %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Anländ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Visa gånginstruktioner" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Dölj gånginstruktioner" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Läs in tidigare alternativ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Läs in senare alternativ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Inga tidigare alternativ hittades." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Inga senare alternativ hittades." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Inga tidtabellsdata hittades för denna rutt." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Ingen operatör hittades för denna rutt." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s timme" +msgstr[1] "%s timmar" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s timme" +msgstr[1] "%s:%s timmar" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dygnet runt" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "från soluppgång till solnedgång" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "varje dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "helgdagar" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skollov" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "inte öppen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "trådbunden" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjänst" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Noggrannhet: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Okänd" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exakt" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s fot" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Denna insticksmodul stöder inte senaste ankomsttid" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsätt på %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Fortsätt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sväng vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Sväng vänster" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sväng svagt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Sväng svagt vänster" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sväng kraftigt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Sväng kraftigt vänster" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sväng höger på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Sväng höger" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sväng svagt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Sväng svagt höger" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sväng kraftigt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Sväng kraftigt höger" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avfart %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avfart till %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Ta rondellen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta hissen och stig av på %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Ta hissen" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Gör en u-sväng åt vänster in på %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Gör en u-sväng åt vänster" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Gör en u-sväng åt höger in på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Gör en u-sväng åt höger" + +#~ msgid "Primary menu" +#~ msgstr "Primär meny" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du inte ett konto?" + +#~ msgid "%f h" +#~ msgstr "%f tim" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lägg till destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruttsökning utförd av OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Öppna med annat program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryck på retur för att söka" + +#~ msgid "Quit" +#~ msgstr "Avsluta" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Öppna formlager…" + +#~ msgid "Load Map Layer" +#~ msgstr "Läs in kartlager" + +#~ msgid "Open Layer" +#~ msgstr "Öppna lager" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f engelska mil" + +#~ msgid "%f ft" +#~ msgstr "%f fot" + +#~ msgid "Position not found" +#~ msgstr "Plats hittades ej" + +#~ msgid "Country code: %s" +#~ msgstr "Landskod: %s" + +#~ msgid "Population: %s" +#~ msgstr "Folkmängd: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Åtkomst för rullstol: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Misslyckades med att tolka GeoJSON-fil" + +#~ msgid "Export to PNG" +#~ msgstr "Exportera till PNG" + +#~ msgid "_Share" +#~ msgstr "_Dela" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Senast kända plats och noggrannhet" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Senast kända plats (latitud och longitud i grader) och noggrannhet (i " +#~ "meter)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Beskrivning av senast kända plats för användaren." + +#~ msgid "User set last known location" +#~ msgstr "Användaren angav senast kända plats." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Huruvida senast kända plats angavs manuellt av användaren." + +#~ msgid "I’m here!" +#~ msgstr "Jag är här!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Till" + +#~ msgid "From" +#~ msgstr "Från" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satellit" diff --git a/po/ta.po b/po/ta.po new file mode 100644 index 00000000..67a3716c --- /dev/null +++ b/po/ta.po @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# அருள்ராஜன் அ லை , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-26 10:29+0000\n" +"PO-Revision-Date: 2013-10-27 09:31+0530\n" +"Last-Translator: அருள்ராஜன் அ லை \n" +"Language-Team: தமிழ் <>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "வரைபடங்கள்" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ஓர் எளிய வரைபட பயன்பாடு" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "வரைபடங்கள்;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "சாளர அளவு" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "சாளர அளவு (அகலம் மற்றும் உயரம்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "சாளர அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "சாளர அமைவிடம் (X மற்றும் Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "சாளரம் பெரிதாக்கப்பட்டது" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "சாளரம் பெரிதாக்கப்பட்ட நிலை." + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் மற்றும் துல்லியம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"கடைசியாகத் தெரிந்த அமைவிடம்(அட்சரேகை மற்றும் தீர்க்கரேகை பாகைகளில்) மற்றும் துல்லியம்" +"(மீட்டரில்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "கடைசியாகத் தெரிந்த அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "கடைசியாகத் தெரிந்த பயனரின் அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "புவிக்குறீயீடு மூலமான தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "கடைசியாக அமைக்கப்பட்ட பயனர் அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் பயனரால் அமைக்கப்பட்டதா?" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "இதைப் பற்றி" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "வெளியேறு" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "இங்கு உள்ளதென்ன?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "நான் இங்குள்ளேன்!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "translator-credits" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME-க்கான வரைபட பயன்பாடு" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "தெரு" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "செயற்கைக்கோள்" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "தெரியாதது" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "மிகச்சரியான" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " கிமீ²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"அமைவிடத்தின் துல்லியம்: %s" diff --git a/po/te.po b/po/te.po new file mode 100644 index 00000000..57f7f07f --- /dev/null +++ b/po/te.po @@ -0,0 +1,188 @@ +# Telugu translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Praveen Illa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-03-21 07:58+0000\n" +"PO-Revision-Date: 2014-03-21 22:26+0530\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"పటాలు మీకు ప్రపంచవ్యాప్తంగా ఉన్న పటాలకు శీఘ్రంగా ప్రాప్యతను కల్పిస్తుంది. ఒక నగరం లేదా వీధి, లేదా ఒక " +"స్నేహితుడు కలుసుకునే ప్రదేశాన్ని ప్రవేశపెట్టి వెదకడం ద్వారా మీరు వెతుకుతున్న ప్రదేశాన్ని త్వరగా కనుగొనడంలో " +"సహకరిస్తుంది." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • దేశము, ప్రాంతము, పట్టణం లేదా వీధి కోసం వెతకండి.
  • నిర్దిష్ట స్థానముల కోసం వెతకండి, " +"“Theatres near RTC X Roads, Hyderabad” లేదా “Wi-Fi Access near Ameerpet, " +"Hyderabad” వంటివి.
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"పటాలు ప్రపంచవ్యాప్తంగా వేలమంది వ్యక్తుల సహకారంతో తయారుచేయబడిన ఓపెన్‌స్ట్రీట్‌మ్యాప్ డేటాబేసును వినియోగిస్తుంది." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:55 +#: ../src/mainWindow.js:300 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "పటాలు" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ఒక సరళ పటముల అనువర్తనం" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "పటాలు;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "కిటికీ పరిమాణం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "కిటికీ పరిమాణం (వెడల్పు మరియు ఎత్తు)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "కిటికీ స్థానము" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "కిటికీ స్థానము (X మరియు Y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "కిటికీ పెద్దగా చేయబడింది" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "కిటికీ పెద్దగా చేయబడిన స్థితి" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "చివరిగా తెలిసిన స్థానము మరియు ఖచ్ఛితత్వం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "చివరిగా తెలిసిన స్థానము (అక్షాంశము, రేఖాంశము డిగ్రీలలో) మరియు ఖచ్ఛితత్వం (మీటర్లలో)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "చివరిగా తెలిసిన స్థానము యొక్క వివరణ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "చివరిగా తెలిసిన స్థాన వాడుకరి యొక్క వివరణ." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "జియోకోడ్ శోధన నుండి గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "చివరిగా తెలిసిన స్థానమును వాడుకరి అమర్చు" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "చివరిగా తెలిసిన స్థానమును మానవీయంగా వాడుకరి అమర్చాలా వద్దా." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "భద్రపరుచాల్సిన ఇటీవలి ప్రదేశాల సంఖ్య." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "భద్రపరుచాల్సిన ఇటీవలి సందర్శించిన ప్రదేశాల సంఖ్య." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "గురించి" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "నిష్క్రమించు" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ఇక్కడ ఏమి ఉంది?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "ఇక్కడ ఉన్నాను!" + +#: ../src/mainWindow.js:298 +msgid "translator-credits" +msgstr "Praveen Illa , 2013, 2014." + +#: ../src/mainWindow.js:301 +msgid "A map application for GNOME" +msgstr "గ్నోమ్ కొరకు రూపొందించిన పటము అనువర్తనం" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "వీధి" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ఉపగ్రహం" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:164 +msgid "Unknown" +msgstr "తెలియదు" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:167 +msgid "Exact" +msgstr "ఖచ్ఛితం" + +#: ../src/mapLocation.js:177 +msgid " km2" +msgstr " కిమీ2" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +#, javascript-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"స్థానము ఖచ్ఛితత్వం: %s" + +#~ msgid " km²" +#~ msgstr "కిమీ²" diff --git a/po/tg.po b/po/tg.po new file mode 100644 index 00000000..b11d4eee --- /dev/null +++ b/po/tg.po @@ -0,0 +1,678 @@ +# Tajik translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Victor Ibragimov , 2013, 2014, 2015 +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-03-16 19:54+0000\n" +"PO-Revision-Date: 2015-03-17 09:59+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Харитаҳо барои шумо ба тамоми ҳаритаҳои ҷаҳон имкони дастраси зуд медиҳад. " +"Ин барнома ба шумо инчунин имкон медиҳад, ки тавонед шаҳр ё кӯчаи " +"мехостагиро ёфт кунед ё барои бо дӯстон фохӯрдан маконро муайян кунед." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Харитаҳо пойгоҳи иттилоотии OpenStreetMap-ро, ки бо миллионҳо одам аз тамоми " +"ҷаҳон ташкил шудааст, истифода мебарад." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Шумо ҳатто метавонед навъи маконҳои махсусро, монанди “Қаҳвахонаҳо дар назди " +"хиёбони Рудакӣ” ё “Меҳмонхонаҳо дар назди хиёбони Рудакӣ, Душанбе” ҷустуҷӯ " +"кунед." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:367 +msgid "Maps" +msgstr "Харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Барномаи оддии харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Харитаҳо;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Андозаи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Андозаи равзана (бар ва баландӣ)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Мавқеи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Мавқеи равзана (X ва Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Равзана дар ҳадди аксар" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Вазъияти ҳадди акcаpёбии равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ аз ҷустуҷӯи рамзи ҷуғрофӣ." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Миқдори маконҳои охирин барои нигоҳ доштан" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Миқдори маконҳои кушодашудаи охирин барои нигоҳ доштан." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Facebook. Қиматҳои " +"имконпазир: ҲАР ЯК КАС, ДӮСТОНИ_ДӮСТОН, ҲАМАИ_ДӮСТОН ё ХУД." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Foursquare. Қиматҳои " +"имконпазир: иҷтимоӣ, пайравон ё махфият." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Пахшкунии бақайдгирии Facebook дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Facebook-и марбут ба ҳисоби Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Пахшкунии бақайдгирии Twitter дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Twitter-и марбут ба ҳисоби Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Дар бораи барнома" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Хуруҷ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Қобили намоиш" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Интишор дар Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Интишор дар Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Бақайдгирӣ" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Ҳар як кас" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Дӯстони дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Танҳо дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Танҳо ман" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Ҷамъиятӣ" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Пайравон" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Махфӣ" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Дар он ҷо чист?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Барои ёфтани ҷойгиршавии худ, хидматҳои ҷойгиршавиро фаъол кунед" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Танзимоти ҷойгиршавӣ" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Гузариш ба ҷойгиршавии ҷорӣ" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Интихоби намуди харита" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Фаъолсозии нақшакаши масирҳо" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Фаъолсозии баргузидаҳо" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Харитаҳо дар офлайн мебошанд!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Барои кори комил ба Харитаҳо пайвасти интернети фаъол лозим аст, вале " +"пайваст ёфт нашуд." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Танзимоти прокси ва пайвасти худро санҷед." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Илова кардан ба масири нав" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Кушодан бо барномаи дигар" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Қайд кардан ҳамчун баргузида" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Инҷо ба қайд гиред" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Барои ҷустуҷӯ Enter-ро пахш кунед" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Кушодани ҷойгиршавӣ" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Кушодан" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Ҷустуҷӯи масир тавассути GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намоиш додани натиҷаҳи дигар" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Ҷойгиршавии ҷорӣ" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Саҳеҳӣ: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:136 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "\"%s\" дар хидмати иҷтимоӣ ёфт нашуд" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Барои бақайдгирии ин макон, ҷои мувофиқ ёфт нашуд" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Муҳлати маълумоти корбар ба анҷом расид, лутфан барои ворид шудан ва фаъол " +"кардани ин ҳисоб, ба Ҳисобҳои онлайн ворид шавед" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Хато ба амал омад" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Ҳисоберо интихоб кунед" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Дар ҳоли боргирӣ" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Маконеро интихоб кунед" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Facebook ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Foursquare ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Check in to %s" +msgstr "Бақайдгирӣ ба %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Барои бақайдгирӣ ба %s, паёми интихобиро нависед." + +#: ../src/mainWindow.js:315 +msgid "Failed to connect to location service" +msgstr "Пайваст ба хидмати ҷойгиршавӣ иҷро нашуд" + +#: ../src/mainWindow.js:320 +msgid "Position not found" +msgstr "Мавқеъ ёфт нашуд" + +#: ../src/mainWindow.js:365 +msgid "translator-credits" +msgstr "Victor Ibragimov, victor.ibragimov@gmail.com" + +#: ../src/mainWindow.js:368 +msgid "A map application for GNOME" +msgstr "Барномаи харитаҳо барои GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "ҳа" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "маҳдуд" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "муайяншуда" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Ягон масир ёфт нашуд" + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Дархости масир қатъ шуд." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Оғоз!" + +#: ../src/placeBubble.js:102 +#, javascript-format +msgid "Postal code: %s" +msgstr "Рамзи почта: %s" + +#: ../src/placeBubble.js:104 +#, javascript-format +msgid "Country code: %s" +msgstr "Рамзи кишвар: %s" + +#: ../src/placeBubble.js:113 +#, javascript-format +msgid "Population: %s" +msgstr "Аҳолӣ: %s" + +#: ../src/placeBubble.js:116 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Соатҳои кушоиш: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Дастрасӣ бо аробаи маъюбӣ: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Вақти тахминӣ: %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "дар гирди соат" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "аз тулӯъ то шафақ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "ҳар рӯз" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "идҳои ҷамъиятӣ" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "идҳои мактабӣ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "кушода нест" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Номаълум" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Дақиқ" + +#: ../src/utils.js:355 +#, javascript-format +msgid "%f h" +msgstr "%f соат" + +#: ../src/utils.js:357 +#, javascript-format +msgid "%f min" +msgstr "%f дақиқа" + +#: ../src/utils.js:359 +#, javascript-format +msgid "%f s" +msgstr "%f сония" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +#, javascript-format +msgid "%f km" +msgstr "%f км" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +#, javascript-format +msgid "%f m" +msgstr "%f м" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +#, javascript-format +msgid "%f mi" +msgstr "%f мил" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +#, javascript-format +msgid "%f ft" +msgstr "%f фут" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Ҷойгиршавии охирин ва дақиқӣ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Ҷойгиршавии охирин (арз ва тӯл дар дараҷаҳо) ва дақиқӣ (дар метрҳо)." + +#~ msgid "Description of last known location" +#~ msgstr "Тавсифи ҷойгиршавии охирин" + +#~ msgid "Description of last known location of user." +#~ msgstr "Тавсифи ҷойгиршавии охирини корбар." + +#~ msgid "User set last known location" +#~ msgstr "Ҷойгиршавии охирини таъиншудаи корбар" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Интихоби ҷойгиршавии охирини муайяншуда ба таври дастӣ аз ҷониби корбар." + +#~ msgid "I’m here!" +#~ msgstr "Ман дар ҳамон ҷоям!" + +#~ msgid "Street" +#~ msgstr "Кӯча" + +#~ msgid "Satellite" +#~ msgstr "Радиф" + +#~ msgid " km2" +#~ msgstr " км2" + +#~ msgid " km²" +#~ msgstr " км²" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 00000000..1c090271 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,1982 @@ +# Turkish translation for gnome-maps. +# Copyright (C) 2013-2019 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Gökhan Gurbetoğlu , 2014, 2015. +# Osman Karagöz , 2017. +# Çağatay Yiğit Şahin , 2017. +# Furkan Ahmet Kara , 2018. +# Muhammet Kara , 2013, 2014, 2015, 2016, 2018. +# Ahmet Elgun , 2019. +# Sabri Ünal , 2013, 2017, 2018, 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-17 02:26+0300\n" +"Last-Translator: Emin Tufan Çetin \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Haritalar" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Dünya genelindeki yerleri bulun" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Haritalar, tüm dünya çapındaki haritalara hızla erişmenizi sağlar. Şehir ya " +"da sokak araması yoluyla, aramakta olduğunuz yeri hızla bulmanıza veya " +"arkadaşınızla buluşacağınız yeri belirlemenize olanak tanır." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Haritalar dünya çapında yüzbinlerce insan tarafından hazırlanan " +"OpenStreetMap ile ortak veri tabanını kullanır." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Hatta “Kızılay, Ankara yakınındaki Lokantalar” ya da “Ulus, Ankara " +"yakınındaki Oteller” gibi belirli türde yerleri bile arayabilirsiniz." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME Projesi" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Haritalar" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Basit harita uygulaması" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Haritalar;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Konumunuzun harita üzerinde gösterilmesine olanak tanır." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "son görüntülenen konum" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Son görüntülenen konumun koordinatları." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "yakınlaştırma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Yakınlaştırma düzeyi" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Harita türü" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Görüntülenecek haritanın türü (street, aerial, vb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Pencere boyutu" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Pencere boyutu (genişlik ve yükseklik)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pencere konumu" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pencere konumu (X ve Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Pencere büyültüldüğünde" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Pencerenin büyütülme durumu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Azami arama sonucu sayısı" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode aramasından azami arama sonucu sayısı." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saklanacak son konumların sayısı" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen yerlerin sayısı." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saklanacak son rotaların sayısı" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen rotaların sayısı." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook yer bildirimi gizlilik ayarı" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Son kullanılan Facebook yer bildirimi gizlilik ayarı. Olası değerler: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare yer bildirimi gizlilik ayarı" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Son kullanılan Foursquare yer bildirimi ayarı. Olası değerler: herkese açık, " +"takipçiler veya gizli." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare yer bildirimi için Facebook yayını" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Facebook " +"hesabında gönderi olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare yer bildirimi için Twitter yayını" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Twitter " +"hesabında tweet olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap kullanıcı adı ya da e-posta adresi" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Kullanıcının OpenStreetMap verilerini düzenlemek için oturup açıp açmamış " +"olduğunu belirtir." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Yönlendirme için son kullanılan ulaşım şekli" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Gece kipi" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Uygulamanın gece kipinde olup olmadığı." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hibrit uydu döşemelerini kullan" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Uydu döşemelerinin hibrit biçim (etiketli) kullanıp kullanmayacağı." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Görünürlük" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook’a Gönder" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter’a Gönder" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_İptal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Yer bildirimi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Herkes" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Arkadaşların arkadaşları" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Yalnızca arkadaşlar" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Yalnızca ben" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Herkese açık" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Takipçiler" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Gizli" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Buradan rota" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ara durak ekle" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Buraya rota" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Burada ne var?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Konumu Kopyala" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Görünümü dışa aktarın" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Dışa _Aktar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Rota ve işaretçileri içer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Harita türü seç" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Uzaklaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Yakınlaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Gözdeleri aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Rotayı Yazdır" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Genel" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Kısayolları göster" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ara" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Rotayı yazdır" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Çıkış" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Harita Görünümü" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Yakınlaş" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uzaklaş" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ölçeği değiştir" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Sokak görünümüne geç" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Kuş bakışı görünüme geç" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Şekil katmanını aç" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etiketleri Göster" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Şekil Katmanını Aç…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Konumunuzu bulmak için konum hizmetlerini etkinleştirin" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "İptal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Konum Ayarları" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gece Kipi" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Hesabını Ayarla" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Resim Olarak Dışarıya Aktar" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Haritalar Hakkında" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Rota Bul" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Haritalar çevrim dışı!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Haritaların çalışması için kullanılabilir internet bağlantısı gerekli, ancak " +"bağlantı yok." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Bağlantı ve vekil sunucu ayarlarınızı denetleyin." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Yeni rotaya ekle" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Konum paylaş" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Favori olarak işaretle" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Buradan yer bildirimi yap" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Hesabı" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Haritaları düzenlemek için oturum " +"açın" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap hesabı kullanarak\n" +"haritayı iyileştirmeye yardım edin." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-posta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parola" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Kaydol" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Oturum Aç" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Üzgünüm, işe yaramadı. Lütfen yeniden deneyin ya da parolanızı sıfırlamak " +"için\n" +"OpenStreetMap’i ziyaret edin." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Doğrulama kodu eşleşmedi, lütfen yeniden deneyin." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Yukarıda gösterilen doğrulama kodunu girin" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Doğrula" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Oturum Açıldı" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap hesabınız etkin." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Oturumu Kapat" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Cadde/Sokak" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Bina numarası" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta kodu" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Şehir" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tür" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Yok" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Alan Ekle" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Yorum" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Harita değişiklikleri, OpenStreetMap verilerini\n" +"kullanan tüm haritalar üzerinde görünür olacaktır." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Sok Kullanılan" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "İleri" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Daha çok bilgi göster" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hiçbir sonuç bulunamadı" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Rota sıralamasını değiştirmek için sürükle" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Konum Aç" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopyala" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Gönder…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Şekil Katmanını Aç" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Aç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Görünürlüğü aç/kapat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper ile rota arama" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Toplu taşımada rota yönergeleri üçüncü taraf hizmetleri tarafından " +"sağlanır.\n" +"GNOME gösterilen rota yönergelerinin ve çizelgelerin doğruluğunu garanti " +"edemez.\n" +"Bazı sağlayıcıların var olan tüm taşıma kiplerini içermeyebileceğini " +"unutmayın; \n" +"ör. ulusal bir sağlayıcı havayollarını içermeyebilir ve yerel bir sağlayıcı " +"bölgesel trenleri kaçırabilir.\n" +"Adlar ve markalar uygulanabilir olduğunda tescilli marka olarak " +"değerlendirilmelidir." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Daha çok sonuç göster" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ara durakları ve bilgiyi gizle" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ara durakları ve bilgiyi göster" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Şimdi Çık" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "İtibaren Çık" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Öncesinde Var" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Göster" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Otobüsler" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaylar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenler" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrolar" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feribotlar" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Uçaklar" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Geçerli konum" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Konum eklemek için yakınlaştırın!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Yakınlaştır" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Dizinde döşeme yapısı bulunamadı" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML belgesini ayrıştırma başarısız" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Gerekli öznitelikler eksik" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ögesi bulunamadı" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Yerel döşeme dizini yapısını barındıran yol" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Yerel döşeme dizini için döşeme boyutu" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Programın sürümünü göster" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ağ uygunluğunu göz ardı et" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[DOSYA…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Hesap seç" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Yükleniyor" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Yer seç" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Haritalar Facebook ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Haritalar Foursquare ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s için yer bildiriminde bulun" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s’den yer bildiriminde bulunmak için isteğe bağlı ileti girin." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Hata oluştu" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Sosyal hizmette “%s” bulunamıyor" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Bu konumda yer bildirimi yapılabilecek uygun yer bulunamıyor" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Oturumun süresi doldu, giriş yapıp bu hesabı etkinleştirmek için lütfen " +"Çevrim İçi Hesapları açın" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Burada bir şey bulunamadı!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Konum haritaya eklendi, arama sonuçlarında haritada gösterilmesi biraz zaman " +"alabilir." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f konumunda haritalar.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosya sistemi salt okunur" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oraya kaydetmek için gerekli izniniz yok" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Dizin yok" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Dosya adı belirtilmedi" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Görüntü aktarılamıyor" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "geçersiz koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ayrıştırma hatası" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "bilinmeyen geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Rota isteği başarısız oldu." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Hiçbir rota bulunamadı." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Başla!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tüm Katman Dosyaları" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Konum hizmetine bağlanma başarısız oldu" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Muhammet Kara \n" +"Emin Tufan Çetin \n" +"Gökhan Gurbetoğlu \n" +"Osman Karagöz \n" +"Çağatay Yiğit Şahin \n" +"Furkan Ahmet Kara \n" +"Ahmet Elgun \n" +"Sabri Ünal " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "GNOME için harita uygulaması" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Telif Hakkı © 2011 – 2019 Red Hat, Inc. ve GNOME Haritalar yazarları" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s ve katkıcılar tarafından harita verisi" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Harita döşemeleri %s tarafından sağlanmıştır" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Arama %s tarafından %s kullanılarak sağlanmıştır" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Dosya türü desteklenmiyor" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Katman açma başarısız oldu" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "GeoURI açma başarısız" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Hatalı kullanıcı adı veya parola" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Başarılı" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Geçersiz istek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nesne bulunamadı" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Çakışma; nesneyi az önce başkası değiştirdi" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Nesne silindi" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Yol ya da ilişki, var olmayan alt nesneye başvuruyor" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Ad" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Resmi ad. Genellikle tabelalarda yer alan addır." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Web sitesi" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Resmi web sitesi. URL adresinin en temel halini kullanmaya çalışın. Örn. " +"http://example.com/index.html yerine http://example.com." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefon numarası. + işaretiyle başlayan uluslararası biçimi kullanın. " +"Özellikle kişisel telefon numaraları konusunda, yerel kişisel gizlilik " +"yasalarına dikkat edin." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedi" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Kullanılan biçim, dil kodu ve makale başlığı içermeli “tr:Makale başlığı” " +"gibi." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Açılış saatleri" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Biçimdeki yardım için etiketteki bağlantıyı gör." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Nüfus" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Yükseklik" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Bir noktanın metre türünden yükseltisi (deniz seviyesinden yüksekliği)." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Tekerlekli sandalye erişimi" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Evet" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Hayır" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Sınırlı" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Belirlenmiş" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "İnternet erişimi" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Kablosuz" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kablolu" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Hizmet" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Din" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahâîlik" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizm" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Hristiyanlık" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfüçyüsçülük" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Caynizm" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Musevilik" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "İslam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Çoklu Dinler" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizm" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafaryanizm" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Şinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sihizm" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Ruhiyatçılık" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoculuk" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Üniteryen Üniversalizm" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yezidilik" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianizm" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tuvaletler" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Not" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Bir ögeyle ilgili bariz olmayan bilgiler, yazarın onu yaratırkenki niyeti " +"veya ileriki geliştirmeler için ipuçlarıyla ilgili diğer haritacıları " +"bilgilendirmek için kullanılan bilgiler." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Tür Seç" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Bitti" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Adsız yer" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Nüfus:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Rakım:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Açılış saatleri:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "İnternet erişimi:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Din:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tuvaletler:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Tekerlekli sandalye erişimi:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Geo URI ayrıştırma başarısız" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "evet" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "sınırlı" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "hayır" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "özel olarak belirlenmiş" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Yer OpenStreetMap’te bulunamadı" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URLsi geçersiz" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URLdeki koordinatlar geçersiz" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL desteklenmiyor" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s’ten %s’e" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Harita parçası yazmak için yükleniyor" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Eğer bu uzun zaman alırsa yazdırmaktan vazgeçebilirsiniz" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Yazdırmayı iptal et" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ara konum ekle" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ara konumu kaldır" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rotayı tersine çevir" + +# ilk s şehir, ikinci s uygulama +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s şehrini %s uygulamasına ekle" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "URI açma başarısız oldu" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "%s ile aç" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "dosya yükleme başarısız" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tahmini süre: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rota yönergelerini %s sağlamıştır" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s’te başla" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Başla" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s yürü" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s’te var" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Var" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Yürüme yönergelerini göster" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Yürüme yönergelerini gizle" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Daha erken alternatifleri yükle" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Daha geç alternatifleri yükle" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Daha erken alternatif bulunamadı." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Daha geç alternatif bulunamadı." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Bu rota için tarife verisi bulunamadı." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Bu rota için sağlayıcı bulunamadı." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s dakika" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s saat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s saat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "gün boyu" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "gün doğumundan gün batımına" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "her gün" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "resmi tatiller" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "okul tatilleri" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "açık değil" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kablolu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "hizmet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Doğruluk: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Bilinmiyor" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tam" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s s" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s s %s dak" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s dak" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sn" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Bu uzantı son varışı desteklemiyor" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "%s üstünde devam et" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Devam et" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s üstünde sola dön" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Sola dön" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s üstünde hafifçe sola dön" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Sola hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s üstünde sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s üstünde sağa dön" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Sağa dön" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s üstünde hafifçe sağa dön" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Sağa hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s üstünde sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dönel kavşakta %s. çıkışa gidin" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dönel kavşakta %s. çıkıştan çıkın" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Dönel kavşağı kullanın" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Asansörü kullanın ve %s. katta inin" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Asansörü kullanın" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s üstünde sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s üstünde sağa u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Sağa u dönüşü yapın" + +#~ msgid "Primary menu" +#~ msgstr "Ana menü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Hesabınız yok mu?" + +#~ msgid "%f h" +#~ msgstr "%f sa" + +#~ msgid "%f min" +#~ msgstr "%f dk" + +#~ msgid "%f s" +#~ msgstr "%f sn" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner ile rota arama" + +#~ msgid "Add destination" +#~ msgstr "Hedef ekle" + +#~ msgid "Open with another application" +#~ msgstr "Başka bir uygulamayla birlikte aç" + +#~ msgid "Press enter to search" +#~ msgstr "Aramak için Enter’a basın" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Çıkış" + +#~ msgid "OK" +#~ msgstr "Tamam" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Şekil Katmanını Aç…" + +#~ msgid "Load Map Layer" +#~ msgstr "Harita Katmanı Yükle" + +#~ msgid "Open Layer" +#~ msgstr "Katman Aç" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON dosya ayrıştırması başarısız" + +#~ msgid "Country code: %s" +#~ msgstr "Ülke kodu: %s" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 00000000..85026c37 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,1919 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Daniel Korostil , 2013, 2014, 2015, 2016, 2017. +# Yuri Chornoivan , 2020. +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-12 09:20+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 20.07.70\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карти GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Знаходити місця по світу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карти надають швидкий доступ до карт по всьому світу. Вони дозволяють швидко " +"знайти місце, яке ви шукаєте, через пошук міста, вулиці, ба визначити місце " +"для зустрічі з друзями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карти використовують колективну базу даних OpenStreetMap, яку роблять тисячі " +"осіб по всій планеті." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете навіть шукати спеціальні місця, як-от «Паби біля головної вулиці, " +"Бостон» або «Готелі біля Александерплац, Берлін»." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "Проєкт GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Проста програма для роботи з картами" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карти;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозволити вашому перебуванню показуватись на карті." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "останнє переглянуте місце" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координати останнього переглянутого місця." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштаб" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабування" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Тип карти" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карти, яку слід показати (вулиці, супутникова тощо)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Розмір вікна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Розмір вікна (ширина і висота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положення вікна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положення вікна (X і Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Вікно розгорнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стан розгорнутого вікна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальна кількість пошукових результатів" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальна кількість пошукових результатів з пошуку geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Кількість недавно відвіданих місць, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Кількість недавно відвіданих місць, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Кількість недавніх маршрутів, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Кількість недавно відвіданих маршрутів, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Параметри конфіденційності Facebook щодо відзначення" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Останній використаний параметр конфіденційності Facebook щодо відзначення. " +"Допустимі значення: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS або SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Параметри конфіденційності Foursquare щодо відзначення" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Останній використаний параметр конфіденційності Foursquare щодо відзначення. " +"Допустимі значення: public, followers або private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Транслювання відзначення Foursquare через Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Facebook, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Транслювання відзначення Foursquare через Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Twitter, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Користувач або поштова скринька у OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показує, чи користувач увійшов у систему OpenStreetMap для редагування даних." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Останній використаний тип транспорту для побудови маршрутів" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Нічний режим" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Чи програма в нічному режимі." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Використовувати гібридні супутникові плитки" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Чи слід використовувати гібридний стиль (із мітками) для супутникових плиток." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видимість" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Допис на Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Допис на Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Скасувати" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "Від_значитись" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Усім" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Друзям друзів" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Тільки друзям" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Лише собі" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Відкрито" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Послідовники" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Особисто" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут звідси" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додати проміжний пункт маршруту" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюди" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Що тут?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копіювати місцевість" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Експортувати перегляд" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Експортувати" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Врахувати маршрут і помітки" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Вибрати тип карти" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Зменшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Збільшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Змінити улюблені" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Загальне" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показати клавіатурні скорочення" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Пошук" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Вийти" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Перегляд карти" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Наблизити" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Віддалити" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Перемкнути шкалу" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Перемкнутися на перегляд вулиць" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Перемкнутися на супутниковий перегляд" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Відкрити шар форм" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Показувати мітки" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Відкрити шар форм…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Увімкнути службу розташування для знаходження місцевості" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Скасувати" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметри розташування" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Нічний режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Відкрити обліковий запис у OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Експортувати як зображення" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Клавіатурні скорочення" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Про «Карти»" + +#: data/ui/main-window.ui:56 +#| msgctxt "shortcut window" +#| msgid "Open main menu" +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Знайти маршрут" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Карти поза мережею!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карти потребують з'єднання з інтернетом, щоб повноцінно працювати, але його " +"немає." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Перевірте зв'язок і параметри проксі." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Додати новий маршрут" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Оприлюднити місце" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Зазначити як улюблене" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Відзначитись тут" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Обліковий запис OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Увійти, щоб редагувати карту" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Допоможіть покращити карту через\n" +"обліковий запис OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Зареєструватися" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Увійти" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Вибачте, не виконалось. Спробуйте ще раз, або відвідайте\n" +"OpenStreetMap, щоб оновити пароль." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Код звіряння не збігається, спробуйте ще раз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Введіть код звіряння, що показано вище" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Перевірити" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Увійшли" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш обліковий запис OpenStreetMap активовано." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Вийти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Вулиця" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер будинку" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштовий індекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Місто" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Немає" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додати поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Зміни в карті будуть видимі для карт, що використовують\n" +"дані з OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно вжите" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Далі" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Докладніше" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нічого не знайдено" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перенесіть, щоб змінити порядок маршруту" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Відкрити місце" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Копіювати" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Надіслати…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Відкрити шар форм" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Відкрити" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Перемкнути видимість" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Пошук маршрутів через GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Дані путівника для громадського транспорту надано сторонніми службами.\n" +"GNOME не може гарантувати правильність показаних маршрутів і розкладів.\n" +"Зауважте, що деякі надавачі даних можуть не включати усі можливі варіанти\n" +"пересування. Наприклад, національний оператор громадського транспорту може\n" +"не включати дані перельотів літаком, а надавач даних громадського " +"транспорту\n" +"у місті — даних регіональної залізниці.\n" +"Показані назви і торгові марки є зареєстрованими знаками, якщо це може їх " +"стосуватися." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "показати більше результатів" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сховати проміжні зупинки та відомості" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показати проміжні зупинки та відомості" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Уже їде" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Їде через" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибуває за" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показувати" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваї" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Потяги" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Пороми" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Літаки" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Поточна місцевість" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Наблизьтесь, щоб додати місцевість!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Збільшити" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не вдалося знайти плиткову структуру в каталозі" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не вдалося розібрати документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Бракує потрібних атрибутів" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Неможливо знайти елемент OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Шлях до локального каталогу зі структурою плиток " + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Розмір плитки для каталогу локальних плиток" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Показати версію програми" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ігнорувати доступність мережі" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|АДРЕСА]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Виберіть обліковий запис" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Завантаження" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Виберіть місце" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Facebook. Виберіть " +"щось зі списку." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Foursquare. Виберіть " +"щось зі списку." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Відзначитись на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишіть довільне повідомлення, щоб відзначитись на %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Трапилась помилка" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Неможливо знайти «%s» в соціальних службах" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Неможливо знайти зручне місце, щоб відзначити цю місцевість" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Реєстраційні дані застаріли, відкрийте Мережеві облікові записи, щоб увійти " +"та ввімкнути цей обліковий запис" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Тут нічого немає!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Місцевість додано на карту, майте на увазі, що це може забрати трохи часу " +"перед тим, як воно буде показано на карті й у результатах пошуку." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта для %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлова система тільки для читання" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немає прав, щоб зберігати там" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не існує" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не вказано назви файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Неможливо експортувати перегляд" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неправильна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "помилка розбирання" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "невідома геометрія" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Невдалий запит маршруту." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Не знайдено жодного маршруту." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Нумо!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Усі файли шарів" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Не вдалося з'єднатись зі службою розташування" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "Daniel Korostil " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Карти для GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "© Red Hat, Inc. та розробники «Карт» GNOME, 2011–2019" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Дані карт надано %s та учасниками проєкту" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Блоки карти надано %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Послуги з пошуку надано %s, використовуємо %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Тип файла не підтримується" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Не вдалося відкрити шар" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Не вдалося відкрити GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Хибний користувач або пароль" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успіх" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Поганий запит" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Об'єкт не знайдено" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфлікт, хтось інший щойно змінив об'єкт" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Об'єкт вилучено" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Спосіб або відношення не стосується чогось явного" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Назва" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Офіційна назва. Це зазвичай перше, що потрапляє на очі." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Офіційний сайт. Намагайтесь використовувати найосновнішу форму посилання, " +"наприклад, http://example.com замість http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефону. Використовуйте міжнародний формат, який починається з знаку " +"плюса (+). Будь обачні з місцевим законами щодо конфіденційності, особливо " +"особистими номерами." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Формат слід містити код мови і назву статті, як-от «uk:Назва статті»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Робочий час" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Довідку щодо формату можна знати за посилання у мітці." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Населення" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Висота" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Висота (над рівнем моря) у метрах." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Доступ для возиків" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Так" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ні" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Обмежено" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Вказано" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Доступ до інтернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Дріт" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Термінал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Служба" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Релігія" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анімізм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаїзм" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Християнство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуціанство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Індуїзм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнізм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Юдаїзм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Іслам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Мультиконфесійність" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Язичництво" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафаріанство" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Сайнтологія" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Сінтоїзм" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхізм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спіритуалізм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унітарний універсалізм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Єзидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Туалети" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Примітка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Запис інформації використовується для надання іншим творцям карти " +"неочевидних відомостей щодо елемента карти, мети його створення або підказок " +"щодо подальшого поліпшення." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Виберіть тип" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Зроблено" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Місце без назви" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Населення:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Висота:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Робочий час:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Доступ до інтернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Релігія:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Туалети:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Доступ для возиків:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Не вдалося розібрати геопосилання" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "так" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "обмежено" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ні" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "визначено" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Місце не знайдено на OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "Адреса OpenStreetMap є некоректною" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Координати у адресі є некоректними" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "Підтримки адреси не передбачено" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "З %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Завантаження плиток карти для друкування" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете скасувати друкування, якщо це надто довго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Скасувати друкування" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додати проміжне місце" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Влучити проміжне місце" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Зворотній маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додати %s до %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Не вдалося відкрити посилання" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Відкрити через %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "не вдалося завантажити файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Розрахунковий час: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршрути надано %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Відправляється з %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Нумо" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Прогулянка %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибуває до %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Прибуває" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показати піші варіанти" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сховати піші варіанти" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Завантажити попередні альтернативи" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Завантажити подальші альтернативи" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Раніших альтернатив не знайдено." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Пізніших альтернатив не знайдено." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Немає даних про цей маршрут." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Для цього маршруту не знайдено надавачів даних." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s хвилина" +msgstr[1] "%s хвилини" +msgstr[2] "%s хвилин" +msgstr[3] "%s хвилина" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s година" +msgstr[1] "%s години" +msgstr[2] "%s годин" +msgstr[3] "%s година" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s година" +msgstr[1] "%s:%s години" +msgstr[2] "%s:%s годин" +msgstr[3] "%s:%s година" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "цілодобово" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "від світанку до заходу" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "щодня" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "святкові дні" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "шкільні канікули" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "не відкрито" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "дріт" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "термінал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "служба" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точність: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Невідомо" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Уточнити" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s год" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgid "%s h %s min" +#| msgid_plural "%s h %s mins" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s год %s хв" +msgstr[1] "%s год %s хв" +msgstr[2] "%s год %s хв" +msgstr[3] "%s год %s хв" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s min" +#| msgid_plural "%s mins" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s хв" +msgstr[1] "%s хв" +msgstr[2] "%s хв" +msgstr[3] "%s хв" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s ми" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s фт" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" +"У цьому додатку не передбачено підтримки визначення найпізнішого прибуття" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Продовжуйте на %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Продовжуйте" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверніть ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверніть трохи ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Поверніть трохи ліворуч" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверніть строго ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Різко поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверніть трохи праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Поверніть трохи праворуч" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Різко поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Різко поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "На розвороті виберіть виїзд %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "На розвороті виберіть виїзд до %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "В'їжджайте на розворот" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Увійдіть до ліфта і вийдіть на %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Увійдіть до ліфта" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Виконайте лівий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Виконайте лівий розворот" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Виконайте правий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Виконайте правий розворот" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 00000000..e15cc1b4 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,1660 @@ +# Vietnamese translations for Maps package +# Bản dịch Tiếng Việt dành cho gói Maps. +# This file is distributed under the same license as the Maps package. +# Trần Ngọc Quân , 2016, 2017, 2018, 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-03-03 03:47+0000\n" +"PO-Revision-Date: 2019-03-03 14:27+0700\n" +"Last-Translator: Trần Ngọc Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Bản đồ GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Tìm các địa điểm trên khắp thế giới" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps giúp bạn truy cập bản đồ trên toàn thế giới. Nó cho phép bạn nhanh " +"chóng tìm đến chỗ mà bạn đang tìm bằng cách tìm thành phố hay đường, hoặc vị " +"trí địa điểm để gặp mặt bạn bè." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps dùng cơ sở dữ liệu OpenStreetMap cộng tác, được tạo bởi hàng trăm ngàn " +"người trên toàn cầu." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Bạn thậm chí còn có thể chỉ định kiểu của địa điểm như là “Pubs near Main " +"Street, Boston” hay “Hotels near Alexanderplatz, Berlin”." + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "Bản đồ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ứng dụng bản đồ đơn giản" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Bản đồ;Ban do;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Cho phép vị trí của bạn được hiển thị trên bản đồ." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "vị trí xem cuối cùng" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Tọa độ của vị trí xem cuối cùng." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Kích thước cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Kích thước cửa sổ (rộng và cao)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Vị trí cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Vị trí cửa sổ (X và Y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Cửa sổ phóng to" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Cửa sổ ở trạng thái phóng to hết cỡ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Số kết quả tìm kiếm tối đa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Số kết quả tìm kiếm tối đa từ việc tìm kiếm geocode." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Số lượng nơi chốn mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Số lượng nơi chốn mới thăm được lưu." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Số lượng đường đi mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Số lượng đường đi mới đi được lưu." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Cài đặt riêng tư check-in Facebook lần cuối. Giá trị có thể là: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS hay SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Cài đặt riêng tư check-in Foursquare lần cuối. Giá trị có thể là: public, " +"followers hay private." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in quảng bá Facebook" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một bài viết trên tài " +"khoản Facebook tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in quảng bá Twitter" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một tweet trên tài khoản " +"Twitter tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Tên tài khoản OpenStreetMap hay địa chỉ thư điện tử" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Biểu thị nếu người dùng đã đăng nhập vào sửa dữ liệu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Kiểu phương tiện vận tải dùng cuối cùng để tìm đường" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Thấy" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Gửi lên Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Gửi lên Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "T_hôi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Ghi danh" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mọi người" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Bạn của bạn" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Chỉ bạn" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Chỉ tôi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Công khai" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Theo dõi" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Riêng tư" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Đây là đâu?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Chép vị trí" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Xuất ra ảnh" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Xuất phần hiển thị" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Xuất" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Bao gồm đường đi và người tạo" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Chung" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Hiện phím tắt" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Tìm kiếm" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Thoát" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Xem bản đồ" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Phóng to" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Thu nhỏ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bật/tắt thước đo" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Chuyển sang xem đường phố" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Chuyển sang xem từ trên trời" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Mở lớp hình dạng" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Mở lớp hình dạng…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Bật dịch vụ vị trí để tìm vị trí của bạn" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Thôi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Cài đặt vị trí" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Cài đặt tài khoản OpenStreetMap" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Phím tắt" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Giới thiệu Bản đồ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Chọn kiểu bản đồ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Thu nhỏ" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Phóng to" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Chuyển đến chỗ đánh dấu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "In đường đi" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Bản đồ đang ngoại tuyến!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Bản đồ cần được kết nối mạng internet để các chức năng một cách đúng đắn, " +"nhưng không tìm thấy kết nối mạng nào." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kiểm tra lại kết nối và cài đặt ủy nhiệm của bạn." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Thêm đường đi mới" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Mở bằng ứng dụng khác" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Đánh dấu là hay dùng" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Check in vào đây" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Tài khoản OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Đăng nhập để chỉnh sửa bản đồ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Giúp đỡ cải tiến bản đồ bằng cách dùng\n" +"một tài khoản OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Thư điện tử" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mật khẩu" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Đăng nhập" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Không có tài khoản?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Rất tiếc, nó không làm việc. Vui lòng thử lại, hoặc truy cập\n" +"OpenStreetMap để đặt lại tài khoản của bạn." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Mã xác nhận không khớp, vui lòng thử lại." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Nhập vào mã xác nhận hiện ở trên" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Xác nhận" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Đã đăng nhập" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Tài khoản OpenStreetMap của bạn đang hoạt động." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Đăng xuất" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Đường" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Số nhà" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Mã vùng" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Thành phố" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Kiểu" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Không" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Thêm trường" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Chú thích" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Các thay đổi bản đồ sẽ khả kiến trên mọi bản đồ mà\n" +"nó dùng dữ liệu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Vừa dùng" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Tiếp theo" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Cung cấp thêm thông tin" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Bấm phím Enter để tìm kiếm" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Không tìm thấy kết quả nào" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Kéo thả để thay đổi thứ tự của đường đi" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Mở vị trí" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Mở" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Mở lớp hình dạng" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Bật/tắt khả kiến" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Tìm kiếm đường đi bằng GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Tìm kiếm đường đi bằng OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Hành trình chọn đường cho giao thông công cộng được cung cấp bởi GNOME\n" +"sử dụng dữ liệu bảng thời gian lấy về từ các công ty vận tải hay trung " +"gian.\n" +"Các công ty và trung gian không phải chịu trách nhiệm cho các kết quả hiển " +"thị.\n" +"GNOME không thể đảm bảo tính chính xác của hành trình và giờ giấc hiển thị.\n" +"Các tên và nhánh hiển thị coi như là các thương hiệu đã đăng ký khi áp dụng " +"được." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Hiện thêm các kết quả" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ẩn các điểm dừng và thông tin trung gian" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Hiển thị các điểm dừng và thông tin trung gian" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Khởi hành ngay" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Khởi hành bằng" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tới bằng" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Hiện" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Xe buýt" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Xe điện" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Xe lửa" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Xe điện ngầm" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Phà" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Vị trí hiện tại" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Độ chính xác: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Phóng to vào vị trí thêm!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Phóng to" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gặp lỗi khi tìm cấu trúc lát gạch trong thư mục" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gặp lỗi khi phân tích cú pháp XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Thiếu các thuộc tính cần thiết" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Không thể tìm thấy phần tử OSM" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Một đường dẫn đến cấu trúc thư mục lát gạch" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "Hiển thị phiên bản của chương trình" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Chọn tài khoản" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Đang tải" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Chọn một địa điểm" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Facebook. Vui lòng chọn một " +"cái từ danh sách này." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Foursquare. Vui lòng chọn " +"một cái từ danh sách này." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in vào %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ghi một lời nhắn tùy chọn để check in vào %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Đã có lỗi xảy ra" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Không thể tìm thấy “%s” trong dịch vụ xã hội" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Không thể tìm thấy chỗ phù hợp để check-in vào vị trí này" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Giấy ủy nhiệm đã hết hạn, vui lòng mở Tài khoản trực tuyến để đang nhập và " +"bật tài khoản này" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Đường đi từ đây" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Thêm đích" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Đường đi đến đây" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Không thấy gì ở đây!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vị trí đã được thêm vào bản đồ, chú ý rằng cần chờ một thời gian trước khi " +"nó được hiển thị trên bản đồ và khi tìm kiếm sẽ có kết quả." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Bản đồ tại %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Hệ thống tập tin chỉ cho đọc" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Bạn không có đủ quyền hạn để lưu vào đây" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Thư mục không tồn tại" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Chưa xác định tên tập tin" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Không thể xuất hình vẽ" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "tọa độ không hợp lệ" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "lỗi phân tích" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "không hiểu dạng hình" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Yêu cầu đường đi gặp lỗi." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Không tìm thấy lộ trình nào." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Bắt đầu!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Mọi tập tin lớp" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "Gặp lỗi khi kết nối đến dịch vụ vị trí" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "Nhóm Việt hóa GNOME " + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "Ứng dụng bản đồ dành cho GNOME" + +#: src/mainWindow.js:520 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Bản quyền © 2011 – 2019 Red Hat, Inc. và các tác giả Bản đồ GNOME" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dữ liệu bản đồ bởi %s và những người đóng góp" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Tiêu đề bản đồ cung cấp bởi %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Kiểu tập tin không được hỗ trợ" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Gặp lỗi khi mở lớp" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Gặp lỗi khi mở GeoURI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Không tìm thấy dữ liệu bản thời gian cho lộ trình này." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Tên người dùng hay mật khẩu sai" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Thành công" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Yêu cầu sai" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Không thể tìm thấy đối tượng" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Xung đột, đã có ai đó vừa sửa đối tượng" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Đối tượng đã bị xóa" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lối hoặc quan hệ chỉ đến một con mà nó không tồn tại" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Tên" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Tên chính thức. Đây là cái thường xuất hiện trên chữ ký." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Địa chỉ" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Trang thông tin điện tử" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Trang thông tin điện tử chính thức. Dùng dạng thức URL cơ bản nhất ví dụ " +"http://example.com thay cho http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Điện thoại" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Số điện thoại. Dùng định dạng quốc tế, bắt đầu bằng dấu +. Hãy cẩn thận với " +"luật riêng tư địa phương, đặc biệt là các số điện thoại riêng." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Nên dùng dạng thức có bao gồm mã ngôn ngữ và tiêu đề bài viết như là ”vi:" +"Tiêu đề bài viết”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Giờ mở cửa" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Xem liên kết trong nhãn để nhận được hỗ trợ về định dạng." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Dân số" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Cao độ" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Cao độ (độ cao trên mực nước biển) của một điểm tính bằng mét." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Lối vào xe lăn" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Đồng ý" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Không" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Bị giới hạn" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Đã được thiết kế" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Truy cập mạng Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Có dây" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Thiết bị cuối" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Dịch vụ" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Tôn giáo" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Thuyết vật linh" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Phật giáo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Đạo cao đài" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Cơ đốc giáo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Khổng giáo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Ấn Độ giáo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Đạo Giai-na" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Đạo Do Thái" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Hồi giáo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Đa tôn giáo" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Tà giáo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Khoa học học" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Đạo thần Nhật bản" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Đạo Sikh" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Thuyết duy linh" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Đạo Lão" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Thuyết phổ độ nhất thể" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Thầy mo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Đạo thờ lửa" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Nhà vệ sinh" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Ghi chú" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Thông tin được sử dụng để cung cấp thông tin các bản đồ khác về các thông " +"tin không-rõ-ràng về một phần tử, mục đích của tác giả khi tạo nó, hoặc gợi " +"ý cải tiến hơn nữa." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Chọn kiểu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Xong" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Dân số:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Cao độ:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Giờ mở cửa:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Truy cập Internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Tôn giáo:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Nhà vệ sinh:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Lối vào xe lăn:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Điện thoại:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Gặp lỗi khi phân tích Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "có" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "bị giới hạn" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "không" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "được thiết kế" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Từ %s đến %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Đang tải tựa đề bản đồ để in ấn" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Bạn có thể bãi bỏ việc in ấn nếu việc đó diễn ra quá lâu" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hủy bỏ việc in" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Thêm thông qua vị trí" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gỡ bỏ thông qua vị trí" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Đảo ngược lộ trình" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Gặp lỗi khi mở URI" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gặp lỗi khi tải tập tin" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Thời gian ước tính: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tới lúc %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Tới" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Bắt đầu ở %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Bắt đầu" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Hiển thị chỉ dẫn đi bộ" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Ẩn chỉ dẫn đi bộ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Đi bộ %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Tải các lựa chọn trước" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Tải các lựa chọn sau" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Không tìm thấy lựa chọn trước nào." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Không tìm thấy lựa chọn sau nào." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d phút" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d giờ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d giờ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "suốt ngày đêm" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "từ bình minh đến khi hoàng hôn" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hàng ngày " + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "ngày nghỉ chung" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "ngày học sinh nghỉ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "chưa mở" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "có dây" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "thiết bị cuối" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "dịch vụ" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Chưa biết" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Trích" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f giờ" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f phút" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f giây" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s dặm" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "Quit" +#~ msgstr "Thoát" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Mở lớp hình dạng…" + +#~ msgid "OK" +#~ msgstr "Được" + +#~ msgid "Load Map Layer" +#~ msgstr "Tải lớp bản đồ" + +#~ msgid "Open Layer" +#~ msgstr "Mở lớp" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f dặm" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..63e3c540 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,1981 @@ +# Chinese (China) translation for gnome-maps. +# Copyright (C) 2013-2019 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# tuhaihe <1132321739qq@gmail.com>, 2013. +# Tong Hui , 2014. +# YunQiang Su , 2015, 2016. +# Mingcong Bai , 2015, 2016, 2017, 2018. +# Dingzhong Chen , 2015, 2016, 2017, 2018, 2019. +# 王滋涵 Zephyr Wang , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-12 19:41+0000\n" +"PO-Revision-Date: 2020-08-25 18:12-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese - China \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.1\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地图" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "寻找世界各地的地点" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"地图应用帮您快速访问世界各地的地图。允许您快速定位到城市、街道或约会地点。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"地图应用使用了 OpenStreetMap 数据库,该数据库由全球成千上万的人们协同制作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"你甚至可以搜索特定类型的位置,比如“Pubs near Main Street, Boston”或“Hotels " +"near Alexanderplatz, Berlin”。" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME 项目" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "地图" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "一款简单的地图应用程序" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地图;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允许你的位置显示在地图上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最近查看的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最近查看的位置的座标。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "缩放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "缩放级别" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地图类型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要显示的地图类型(街道、航拍等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "窗口大小" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "窗口大小(宽度和高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "窗口位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "窗口位置(水平和竖直)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "窗口最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "窗口最大化状态" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜索结果的最大数量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "来自 geocode 搜索结果的最大数量。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "存储最近地点的数量" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "存储最近拜访过地点的数量。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "存储最近路线的数量" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "存储最近使用过路线的数量。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 签到隐私设置" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 签到隐私设置。可能的值有:EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 签到隐私设置" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 签到隐私设置。可能的值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 签到同步到 Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成消息发布到 Foursquare 已经关联的 Facebook 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 签到同步到 Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成推文发布到 Foursquare 已经关联的 Twitter 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 用户名或电子邮件地址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示用户是否已经登录以编辑 OpenStreetMap 数据。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "载入用过的交通类型来规划路线" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "使用混合航拍区块" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "航拍区块是否使用混合样式(带标签)。" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可见性" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "发到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "发到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "签到(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每个人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "仅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "仅限自己" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公开" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "关注者" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "从此处出发的路径" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "添加途经目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "前往此处的路径" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "这是哪里?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "复制位置信息" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "导出视图" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "导出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包括路线和标记" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "转到当前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "选择地图类型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "缩小" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "放大" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "切换喜爱" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "常规" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "显示快捷键" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜索" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "退出" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地图视图" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "放大" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "缩小" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切换比例尺" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "转到当前位置" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切换到街景视图" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切换到空中视图" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "打开图形图层" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "显示标签" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "打开形状图层…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "开启定位服务来获取您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "地点设置" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "建立 OpenStreetMap 帐号" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "导出为图像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "键盘快捷键(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "关于地图" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "寻找路线" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "地图应用处于离线状态!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "地图应用需要有效的网络连接才能正常运行,但是未发现有效连接。" + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "请检查您的网络连接和代理设置。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "添加到新路线" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "标记为喜爱" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在这里签到" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帐号" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登录以编辑地图" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"使用 OpenStreetMap 帐号\n" +"帮助完善地图。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "电子邮件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密码" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "注册" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登录" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"对不起,密码无效。请重试,或访问\n" +"OpenStreetMap 以重置密码。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "验证码不匹配,请重试。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "输入在上面显示的验证码" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "验证" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登录" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帐号已激活。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "退出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "门牌号码" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "邮政编码" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "类型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "无" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "添加字段" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "备注" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地图更改将会呈现在所有使用\n" +"OpenStreetMap 数据的地图上。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "下一步" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "显示更多信息" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "未找到结果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖动以改变路线的顺序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "打开位置" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "复制" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "发送至…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "打开图形图层" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "打开(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切换可见" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "通过 GraphHopper 搜索路线" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"公共交通行程路线由第三方服务提供。\n" +"GNOME 无法保证所显示的行程和时间表的准确性。\n" +"一些提供者可能不会包含所有可用的交通方式,\n" +"例如,国家级提供者可能不包括航空公司,\n" +"地方提供者也可能会缺少地区列车信息。\n" +"所示名称和品牌在适用时应视为注册商标。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "显示更多结果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隐藏途径停站及沿路信息" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "显示途径停站及沿路信息" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "现在动身" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "出发时间" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "到达时间" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "显示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公交车" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "有轨电车" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "列车" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "地铁" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡轮" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飞机" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "当前位置" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "放大以添加地点!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "放大" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "未在目录中找到地图区块结构" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "解析 XML 文档失败" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺失需要的属性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "指向本地区块目录结构的路径" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "本地区块目录的区块大小" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "显示该程序的版本" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "忽略网络可用性" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[文件…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "选择帐号" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "正在载入" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "选择地点" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "地图应用无法在 Facebook 中找到签到地点。请在列表中选择。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "地图应用无法在 Foursquare 中找到签到地点。请在列表中选择。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "签到于 %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "编写附加信息来签到 %s 。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "发生了一个错误" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社交服务中找不到“%s”" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "在此地无法找到符合的签到地点" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "证书已过期,请打开“在线帐号”登录并启用此帐号" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "这里什么都没有找到!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "地点已添加到地图,注意它可能需要一段时间才能显示在地图上和搜索结果里。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f 处的地图.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "文件系统为只读" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您没有保存到那里的权限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "该目录不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "未指定文件名" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "无法导出视图" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "无效坐标" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析错误" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "未知几何方位" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "路线请求失败。" + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "没有找到路线。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "开始!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "全部图层文件" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "无法连接到定位服务" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"tuhaihe <1132321739qq@gmail.com>, 2013, 2020\n" +"Tong Hui , 2014\n" +"Mingcong Bai , 2015, 2016, 2017, 2018\n" +"Dingzhong Chen , 2015-2018\n" +"王滋涵 , 2020" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "一款 GNOME 地图应用程序" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "版权所有 © 2011 – 2019 红帽公司和 GNOME 地图作者" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "地图数据来自 %s 和贡献者" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "地图图块由 %s 提供" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "使用 %s 提供的服务搜索 %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "文件类型未支持" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "打开图层失败" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "打开 GeoURI 失败" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正确的用户名或密码" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "错误的请求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到对象" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "冲突,别人刚修改了对象" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "对象已被删除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "道路或关系指向了不存在的子项" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "名称" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "官方名称。这通常就是标记上显示的东西。" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "网站" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方网站。尝试使用 URL 的最基本形式,例如 http://example.com 而不是 http://" +"example.com/index.html。" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "电话" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"电话号码。使用国际格式,以 + 加号开头。留心当地的隐私法律,特别是对于私人电话" +"号码。" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "维基百科" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式应该包含语言代码和文章标题如“zh_CN:文章标题”。" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "开放时间" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "请参阅标签中的链接来获得关于格式的帮助。" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "人口总数" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "海拔" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一点的海拔(海平面之上的高度),以米计。" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "轮椅通行" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "有" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "无" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "受限" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "指定" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "网络接入" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "有线" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "终端" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "服务" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "泛灵论" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "儒学" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "犹太教" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "伊斯兰教" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多宗教信仰" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "异教" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飞天面条神教" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "山达基" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "神道" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "锡克教" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "唯灵论" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神普救派" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "伏都教" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "琐罗亚斯德教" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "洗手间" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "备注" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用于提醒其他制图人的信息,比如关于元素的隐蔽信息、作者创建的意图,亦或进一步" +"完善的提示。" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "选择类型" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "未命名地点" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "人口总数:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "海拔:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "开放时间:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "网络接入:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "洗手间:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "轮椅通行:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "电话:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "解析 Geo URI 失败" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "有" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "无" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "专用设施" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "地点在 OpenStreetMap 上找不到" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL 无效" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL 中的坐标无效" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL 不支持" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "从 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "正在加载地图图块以便打印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果打印时间太长你可以中止它" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止打印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "通过位置添加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "通过位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路线" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "添加 %s 到 %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "打开 URI 失败" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "用 %s 打开" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "载入文件失败" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "估计时间:%s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "路线由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "出发时间为 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "出发" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "到达时间为 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "到达" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "显示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隐藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "载入上一个替代方案" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "载入下一个替代方案" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到上一个替代方案。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到下一个替代方案。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-m月%-d日" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "找不到该路线的时间表信息。" + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "找不到该路线的提供商。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s - %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分钟" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小时" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小时" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "全天" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "白天" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "公众假期" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "学校假期" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "未开放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有线" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "终端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服务" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "位置精度:%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "未知" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "准确" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s 小时" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 小时 %s 分钟" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分钟" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s 千米" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s 米" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s 英里" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s 英尺" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "该插件不支持最近到达信息" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "继续沿 %s 前进" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "继续" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s 处左转" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "左转" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s 处稍向左转" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "稍向左转" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s 处向左急转" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "向左急转" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s 处右转" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "右转" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s 处稍向右转" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "稍向右转" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s 处向右急转" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "向右急转" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在 %s 出环岛" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "环岛驶出 %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "环岛绕行" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "乘坐电梯并在 %s 层离开" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "乘坐电梯" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "向走掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "向走掉头" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "向右掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "向右掉头" + +#~ msgid "Primary menu" +#~ msgstr "主菜单" + +#~ msgid "Don’t have an account?" +#~ msgstr "没有帐号?" + +#~ msgid "Open with another application" +#~ msgstr "以其他程序打开" + +#~ msgid "Press enter to search" +#~ msgstr "按下回车键开始搜索" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "通过 OpenTripPlanner 搜索路线" + +#~ msgid "Add destination" +#~ msgstr "添加目的地" + +#~ msgid "%f h" +#~ msgstr "%f 小时" + +#~ msgid "%f min" +#~ msgstr "%f 分钟" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "退出" + +#~ msgid "OK" +#~ msgstr "确定" + +#~ msgid "Open Shape Layer…" +#~ msgstr "打开图形图层…" + +#~ msgid "Load Map Layer" +#~ msgstr "加载地图图层" + +#~ msgid "Open Layer" +#~ msgstr "打开图层" + +#~ msgid "%f km" +#~ msgstr "%f 千米" + +#~ msgid "%f m" +#~ msgstr "%f 米" + +#~ msgid "%f mi" +#~ msgstr "%f 英里" + +#~ msgid "%f ft" +#~ msgstr "%f 英尺" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "解析 GeoJSON 文件失败" + +#~ msgid "Country code: %s" +#~ msgstr "国家代码:%s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "最近已知的位置和精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "最近已知的位置(经纬度)和精度(米)。" + +#~ msgid "Description of last known location of user." +#~ msgstr "对最近已知的用户位置的描述。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "最近已知的位置 是否是用户手动设置的。" + +#~ msgid "I’m here!" +#~ msgstr "我在这!" + +#~ msgid "%f km²" +#~ msgstr "%f平方千米" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "From" +#~ msgstr "从" + +#~ msgid "Satellite" +#~ msgstr "卫星" + +#~ msgid "Track user location." +#~ msgstr "跟踪用户位置。" diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 00000000..0911015d --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,213 @@ +# Chinese (Hong Kong) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-08-30 18:59+0000\n" +"PO-Revision-Date: 2014-08-31 15:54+0800\n" +"Last-Translator: Chao-Hsiung Liao \n" +"Language-Team: Chinese (Hong Kong) \n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.3\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Maps 讓你可以快速存取世界上的地圖。它讓你快速的找到想找的位置,只要搜尋城市或街道,也可以定位要與朋友見面的場所。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Maps 使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "你甚至能搜尋指定的位置類型,像是“Pubs near Main Street, Boston“或是“Hotels near Alexanderplatz, Berlin“" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:303 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "地圖" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "視窗尺寸" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "視窗大小 (闊度與高度)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "視窗位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "上次知道的位置與準確度" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "上次知道的位置 (緯度與經度) 與準確度 (以米計)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "上次知道的位置描述" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "上次知道的使用者位置描述。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "使用者設定上次知道的位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "上次知道的位置是否是由使用者手動設定。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "關於" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "結束" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "這裏有什麼?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "我在這裏!" + +#: ../src/mainWindow.js:301 +msgid "translator-credits" +msgstr "Chao-Hsiung Liao , 2013" + +#: ../src/mainWindow.js:304 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: ../src/routeService.js:76 +msgid "No route found." +msgstr "找不到路線。" + +#: ../src/routeService.js:82 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: ../src/routeService.js:153 +msgid "Start!" +msgstr "開始!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "國家代碼:%s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "郵遞區號:%s" + +#: ../src/sidebar.ui.h:1 +msgid "To" +msgstr "終點" + +#: ../src/sidebar.ui.h:2 +msgid "From" +msgstr "起點" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "目前位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "準確" + +#: ../src/utils.js:179 +#, javascript-format +#| msgid " km²" +msgid "%f km²" +msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Street" +#~ msgstr "街道" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 00000000..0a8a5992 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1959 @@ +# Chinese (Taiwan) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-04-23 20:59+0000\n" +"PO-Revision-Date: 2020-05-02 00:22+0800\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地圖" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "尋找世界上各個地方" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"《地圖》讓您可以快速存取世界上的地圖。它讓您快速的找到想找的位置,只要搜尋城" +"市或街道,也可以定位要與朋友見面的場所。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"《地圖》使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製" +"作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"您甚至能搜尋指定的位置類型,像是「Pubs near Main Street, Boston」或是" +"「Hotels near Alexanderplatz, Berlin」等。" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME 專案" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:563 +msgid "Maps" +msgstr "地圖" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允許您的位置顯示在地圖上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最後檢視的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最後檢視位置的坐標。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "縮放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "縮放等級" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地圖類型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要顯示的地圖類型(街道、航空圖等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "視窗尺寸" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "視窗大小 (寬度與高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "視窗位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "要儲存的最近路線數" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "要儲存的最近到訪路線數。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 打卡隱私權設定值" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 打卡隱私權設定值。可能的數值有:EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 打卡隱私權設定值" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 打卡隱私權設定值。可能的數值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 打卡 Facebook 廣播" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Facebook 帳號連結的 Foursquare 帳號以貼文方式廣" +"播此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 打卡 Twitter 廣播" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Twitter 帳號連結的 Foursquare 帳號以推文方式廣播" +"此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 的使用者名稱或電子郵件位址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示使用者是否已登入可編輯 OpenStreetMap 資料。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "上次路線規劃時使用的交通類型" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可見狀態" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "張貼到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "張貼到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "打卡(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每個人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "僅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "僅限本人" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公開" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "跟隨" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "從這裡開始的路線" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "加入中間目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "到這裡的路線" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "這裡有什麼?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "複製位置" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "匯出檢視" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "匯出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包含路線和標記" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "前往目前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "選擇地圖類型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "拉遠" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "拉近" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "切換喜好" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "顯示捷徑鍵" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜尋" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "結束" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地圖檢視" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拉近" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "拉遠" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切換縮放" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "前往目前位置" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切換為街道檢視" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切換為鳥瞰圖" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "開啟形狀圖層" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "開啟形狀圖層…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "開啟位置服務以尋找您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "位置設定值" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "設定 OpenStreetMap 帳號" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "匯出為影像" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "鍵盤捷徑鍵(_K)" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "關於《地圖》" + +#: data/ui/main-window.ui:106 +msgid "Maps is offline!" +msgstr "Maps 已離線!" + +#: data/ui/main-window.ui:116 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Maps 需要使用網際網路連線才能正常運作,但找不到網際網路。" + +#: data/ui/main-window.ui:125 +msgid "Check your connection and proxy settings." +msgstr "請檢查您的連線與代理伺服器設定值。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "加入新的路線" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "標記為喜好" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在這裡檢查" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帳號" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登入以編輯地圖" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"協助改善地圖,使用\n" +"OpenStreetMap 帳號。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "電子郵件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密碼" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "登入" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "還沒有會員帳號嗎?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"抱歉,那沒有作用。請再試一次,或者參訪\n" +"OpenStreetMap以重置您的密碼。" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "驗證碼不符合,請再試一次。" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "輸入上面顯示的驗證碼" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "驗證" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "已登入" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帳號已啟用。" + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "登出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "門牌號碼" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "郵遞區號" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "類型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "沒有" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "加入欄位" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "評註" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地圖更動資訊會在所有利用 OpenStreetMap\n" +" 資料的地圖中出現。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "下一個" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "顯示更多資訊" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "找不到結果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖曳以修改路徑順序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "開啟位置" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "複製" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "傳送至…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "開啟形狀圖層" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "開啟(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切換可見性" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "透過 GraphHopper 搜尋路線" + +#: data/ui/sidebar.ui:364 +#, fuzzy +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"大眾運輸的路線規劃是由 GNOME 提供\n" +"使用的時刻表資料來自大眾運輸公司或機構。\n" +"這些大眾運輸公司或機構不對顯示的結果負責。\n" +"GNOME 亦無法保證所顯示的規劃與行程的正確性。\n" +"此處所顯示的名稱或商標為其註冊商標所有人所有。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "顯示更多結果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隱藏中間站與資訊" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "顯示中間站與資訊" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "正在離開" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "離開於" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "抵達於" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "顯示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公車" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "輕軌" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "火車" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "捷運" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡輪" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飛機" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "目前位置" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "拉近以加入位置!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "拉近" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "無法在目錄中找到拼貼結構" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "無法解析 XML 文件" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺少了必要的屬性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "本地端拼貼目錄結構的路徑" + +#: src/application.js:100 +#, fuzzy +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "本地端拼貼目錄結構的路徑" + +#: src/application.js:104 +msgid "Show the version of the program" +msgstr "顯示程式版本" + +#: src/application.js:110 +msgid "Ignore network availability" +msgstr "忽略網路可用性" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "選擇一個帳號" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "載入中" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "選擇一個地點" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Facebook 中打卡的地點。請從清單中選擇一個。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Foursquare 中打卡的地點。請從清單中選擇一個。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "打卡於:%s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "寫些關於在 %s 打卡的訊息。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "發生錯誤" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社群服務中找不到「%s」" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "找不到適合的地點來打卡" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "憑證已過期,請開啟線上帳號再次登入並啟用這個帳號" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "這裡找不到東西!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"位置已加到地圖上,請注意在顯示在地圖上與搜尋結果中之前可能需要一段時間。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "於 %f 的地圖, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "檔案系統是唯讀的" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您沒有在該處儲存檔案的權限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "目錄不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "沒有指定檔案名稱" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "無法匯出檢視" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "無效的坐標" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析錯誤" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "不明的位置大小" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "找不到路線。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "開始!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "所有圖層檔案" + +#: src/mainWindow.js:466 +msgid "Failed to connect to location service" +msgstr "無法連接位置服務" + +#: src/mainWindow.js:561 +msgid "translator-credits" +msgstr "" +"Chao-Hsiung Liao , 2013\n" +"Yi-Jyun Pan , 2020" + +#: src/mainWindow.js:564 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: src/mainWindow.js:575 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "著作權所有 © 2011 – 2019 Red Hat, Inc. 和 GNOME 地圖作者群" + +#: src/mainWindow.js:595 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "來自 %s 與貢獻者的地圖資料" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:611 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "由 %s 提供的地圖圖塊" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "搜尋使用 %2$s 並由 %1$s 提供" + +#: src/mapView.js:378 +msgid "File type is not supported" +msgstr "檔案類型不支援" + +#: src/mapView.js:385 +msgid "Failed to open layer" +msgstr "無法開啟圖層" + +#: src/mapView.js:421 +msgid "Failed to open GeoURI" +msgstr "無法開啟 GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正確的使用者名稱或密碼" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "錯誤的要求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到物件" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "衝突,有其他人剛剛修改了這個物件" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "物件已刪除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "路徑或關係參照到不存在的子項" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "名稱" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "正式的名稱。這通常會出現在招牌上。" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "網站" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方網站。嘗試使用最基本形式的 URL ,例如 HTTP://example.com ,而不是 HTTP://" +"example.com/index.html。" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "電話" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"電話號碼。使用國際格式,以 + 號開頭。提防當地的隱私權法律,特別是私人電話號" +"碼。" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "維基百科" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式應該包括語言代碼和文章標題,例如「en:Article title」。" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "開放時間" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "請參閱標籤的連結以取得格式的求助訊息。" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "資料母體" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "海拔高度" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一點的高度,以公尺計 (自海平面以上的高度)。" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "使用輪椅" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "是" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "否" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "有限制" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "特定" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "網際網路存取" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "有線網路" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "網路終端" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "服務" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "萬物有靈論" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "儒教" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "猶太教" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "伊斯蘭教" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多種宗教" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "異教" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飛天義大利麵神教" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "科學神教" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "神道教" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "錫克教" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "精神主義" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神論的普遍主義" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "巫毒教" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "拜火教" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "廁所" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "備註" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用來通知其他製圖者關於元件、建立時作者的目的、與更多資訊提示的不明顯資訊。" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "選擇類型" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "未命名位置" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "人口:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "海拔高度:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "開放時間:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "網際網路存取:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "廁所:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "使用輪椅:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "電話:" + +#: src/placeEntry.js:210 +msgid "Failed to parse Geo URI" +msgstr "無法分析 Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "是" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "否" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "特定" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "在 OpenStreetMap 找不到位置" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap 網址無效" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "網址中的座標無效" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "網址不支援" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "從 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "載入地圖拼貼以供列印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果這花費的時間太長,您可以放棄列印" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "關於列印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "透過位置增加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "透過位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路線" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "加入 %s 至 %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "無法開啟 URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "使用 %s 開啟" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "無法載入檔案" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:299 +#, javascript-format +msgid "Estimated time: %s" +msgstr "預估時間:%s" + +#: src/sidebar.js:355 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "行程表由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "開始於 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "開始" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "抵達於 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "抵達" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "顯示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隱藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "載入較早的替代路線" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "載入較晚的替代路線" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到較早的替代路線。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到較晚的替代路線。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b%e日" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "找不到這條路線的時刻表資料。" + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "找不到這個路線的提供者。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分鐘" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小時" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小時" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "在時鐘周圍" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "從日出到日落" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "共通假日" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "學校假日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "不開放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有線網路" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "網路終端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服務" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:237 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: src/utils.js:240 +msgid "Exact" +msgstr "準確" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:321 +#, javascript-format +msgid "%s h" +msgstr "%s 小時" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:327 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s mins" +msgstr[0] "%s 小時 %s 分鐘" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:334 +#, javascript-format +msgid "%s min" +msgid_plural "%s mins" +msgstr[0] "%s 分鐘" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:340 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:351 +#, javascript-format +msgid "%s km" +msgstr "%s 公里" + +#. Translators: This is a distance measured in meters +#: src/utils.js:354 +#, javascript-format +msgid "%s m" +msgstr "%s 公尺" + +#. Translators: This is a distance measured in miles +#: src/utils.js:362 +#, javascript-format +msgid "%s mi" +msgstr "%s 英哩" + +#. Translators: This is a distance measured in feet +#: src/utils.js:365 +#, javascript-format +msgid "%s ft" +msgstr "%s 英呎" + +#: src/transitplugins/goMetro.js:60 +#, fuzzy +msgid "This plugin doesn't support latest arrival" +msgstr "這個外掛插件不支援最近的抵達" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "在 %s 繼續走" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "繼續走" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "在 %s 左轉" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "左轉" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "在 %s 稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "在 %s 急左轉" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "急左轉" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "在 %s 右轉" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "右轉" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "在 %s 稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "在 %s 急右轉" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "急右轉" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在圓環中,從 %s 離開" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "在圓環中,離開往 %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "走圓環" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "搭乘電梯到 %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "搭乘電梯" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 進行右迴轉" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "進行右迴轉" + +#~ msgid "%f h" +#~ msgstr "%f 小時" + +#~ msgid "%f min" +#~ msgstr "%f 分鐘" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "Add destination" +#~ msgstr "加入目的地" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "以其他應用程式開啟" + +#~ msgid "Press enter to search" +#~ msgstr "按下 Enter 開始搜尋" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "透過 OpenTripPlanner 搜尋路徑" + +#~ msgid "Quit" +#~ msgstr "結束" + +#~ msgid "OK" +#~ msgstr "確定" + +#~ msgid "Load Map Layer" +#~ msgstr "載入地圖圖層" + +#~ msgid "Open Layer" +#~ msgstr "開啟圖層" + +#~ msgid "%f km" +#~ msgstr "%f 公里" + +#~ msgid "%f m" +#~ msgstr "%f 公尺" + +#~ msgid "%f mi" +#~ msgstr "%f 哩" + +#~ msgid "%f ft" +#~ msgstr "%f 呎" + +#~ msgid "Position not found" +#~ msgstr "找不到地點" + +#~ msgctxt "shortcut window" +#~ msgid "Show help" +#~ msgstr "顯示求助文件" + +#~ msgid "General" +#~ msgstr "一般" + +#~ msgid "Search" +#~ msgstr "搜尋" + +#~ msgid "Country code: %s" +#~ msgstr "國家代碼:%s" + +#~ msgid "Population: %s" +#~ msgstr "資料母體:%s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "使用輪椅:%s" + +#~ msgid "_Share" +#~ msgstr "分享(_S)" + +#~ msgid "Last known location and accuracy" +#~ msgstr "上次知道的位置與準確度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "上次知道的位置 (緯度與經度) 與準確度 (以公尺計)" + +#~ msgid "Description of last known location of user." +#~ msgstr "上次知道的使用者位置描述。" + +#~ msgid "User set last known location" +#~ msgstr "使用者設定上次知道的位置" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "上次知道的位置是否是由使用者手動設定。" + +#~ msgid "I’m here!" +#~ msgstr "我在這裡!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "終點" + +#~ msgid "From" +#~ msgstr "起點" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/scripts/README b/scripts/README new file mode 100644 index 00000000..2be7d78f --- /dev/null +++ b/scripts/README @@ -0,0 +1,18 @@ +SCRIPTS +======= + +extractPoiTypesFromID.js +------------------------ + +Extracts the POI types (presets) that the iD editor uses to JSON for us to consume. + +Run the extractPoiTypesFromID.js script against a checkout of iD (https://github.com/openstreetmap/iD) + +$ ./extractPoiTypesFromID.js > osm-types.json + +This script would be run by upstream before making a release of gnome-maps if an updated version +of the iD editor is available with updated OSM types preset and/or new or updated translations +of those. +Check the resulting .json file (i.e. check size and possibly diff against the current version). +Copy the result to data/osm-types.json + diff --git a/scripts/extractPoiTypesFromID.js b/scripts/extractPoiTypesFromID.js new file mode 100755 index 00000000..73dc226a --- /dev/null +++ b/scripts/extractPoiTypesFromID.js @@ -0,0 +1,142 @@ +#!/usr/bin/env gjs + +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Script to generate a simplified JSON mapping file for POI types from the + * presets definitions from the iD Web-based OpenStreetMap editor + * + * Usage: ./extractPoiTypesFromID.js > osm-types.json + * + */ + +const Gio = imports.gi.Gio; + +const ByteArray = imports.byteArray; + +const PRESETS_PATH = 'data/presets/presets'; +const LOCALES_PATH = 'dist/locales'; +const PRESET_TYPES = [ 'aeroway', + 'amenity', + 'leisure', + 'office', + 'place', + 'shop', + 'tourism' ]; + +const OUTPUT = {}; + +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function parseJson(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let {tags, name} = JSON.parse(getBufferText(buffer)); + + for (let key in tags) { + let value = tags[key]; + + OUTPUT[key + '/' + value] = {'title': {'C': name}}; + } +} + +function processType(type, basePath) { + let dirPath = [basePath, PRESETS_PATH, type].join('/'); + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + parseJson(dirPath, file.get_name()); + } +} + +function processTypes(basePath) { + PRESET_TYPES.forEach(function(type) { + processType(type, basePath); + }); +} + +function processLocale(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let object = JSON.parse(getBufferText(buffer)); + let lang = fileName.substring(0, fileName.indexOf('.json')); + + for (let type in OUTPUT) { + let name; + + try { + name = object[lang].presets.presets[type].name; + } catch (ex) { + continue; + } + + OUTPUT[type].title[lang] = name; + } +} + +function processLocales(basePath) { + let dirPath = basePath + '/' + LOCALES_PATH; + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*.json', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + processLocale(dirPath, file.get_name()); + } +} + +function outputJson() { + print(JSON.stringify(OUTPUT, null, 2)); +} + +function main(args) { + let path = args[0]; + + processTypes(path); + processLocales(path); + + outputJson(); +} + +main(ARGV); diff --git a/src/accountListBox.js b/src/accountListBox.js new file mode 100644 index 00000000..924a8a96 --- /dev/null +++ b/src/accountListBox.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const Goa = imports.gi.Goa; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var AccountRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/account-row.ui', + InternalChildren: [ 'providerLabel', + 'identityLabel', + 'providerImage', + 'attentionNeededImage' ], +}, class AccountRow extends Gtk.ListBoxRow { + _init(params) { + this.account = params.account; + delete params.account; + + super._init(params); + + let account = this.account.get_account(); + + this._providerLabel.label = account.provider_name; + this._identityLabel.label = account.presentation_identity; + this._providerImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + this._attentionNeededImage.visible = account.attention_needed; + } +}); + +var AccountListBox = GObject.registerClass({ + Signals: { + 'account-selected': { param_types: [Goa.Object] } + }, +}, class AccountListBox extends Gtk.ListBox { + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + Application.checkInManager.connect('accounts-refreshed', () => this.refresh()); + + this.connect('row-activated', + (list, row) => this.emit('account-selected', row.account)); + + this.refresh(); + } + + refresh() { + let accounts = Application.checkInManager.accounts; + + this.forall(function(row) { + row.destroy(); + }); + + accounts.forEach((account) => this.add(new AccountRow({ account: account }))); + } +}); diff --git a/src/address.js b/src/address.js new file mode 100644 index 00000000..0d171840 --- /dev/null +++ b/src/address.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for address formatting. + */ + +const Format = imports.format; + +/** + * Translation lookup table for street name and house number. + * First argument is the street name and the second the housenumber. + * Based on examples from https://en.wikipedia.org/wiki/Address#Address_format + * Currently don't include address formats for i.e. China and Japan as those + * formats differ from the Western ones and would need additional handling + * when printing place addresses (currently we assume there is a street name + * and house number). + */ +const FORMAT_MAP = { + 'AI': '%2$s %1$s', + 'AL': '%1$s %2$s̈́', + 'AR': '%1$s %2$s', + 'AS': '%1$s %2$s', + 'AU': '%2$s %1$s', + 'AX': '%1$s %2$s', + 'BA': '%1$s %2$s', + 'BD': '%1$s. %2$s', + 'BE': '%1$s %2$s', + 'BM': '%2$s %1$s', + 'BR': '%1$s, %2$s', + 'BY': '%1$s, д. %2$s', + /* if we had access to state codes, we could add a special case for + * Quebec format + */ + 'CA': '%2$s %1$s', + 'CH': '%1$s %2$s', + 'CL': '%1$s No° %2$s', + 'CZ': '%1$s %2$s', + 'CY': '%1$s %2$s', + 'DE': '%1$s %2$s', + 'DK': '%1$s %2$s', + 'EE': '%1$s %2$s', + 'ES': '%1$s, %2$s', + 'FI': '%1$s %2$s', + 'FK': '%2$s %1$s', + 'FO': '%1$s %2$s', + 'FR': '%2$s, %1$s', + 'GB': '%2$s %1$s', + 'GG': '%2$s %1$s', + 'GL': '%1$s %2$s', + 'GR': '%1$s %2$s', + 'HK': '%2$s %1$s', + 'HR': '%1$s %2$s', + 'HU': '%1$s %2$s', + 'IE': '%2$s %1$s', + 'IL': '%2$s %1$s', + 'IS': '%1$s %2$s', + 'IM': '%2$s %1$s', + 'IN': '%2$s %1$s', + 'ID': '%1$s No. %2$s', + 'IR': '%1$s %2$s', + 'IT': '%1$s %2$s', + 'IQ': '%1$s %2$s', + 'JE': '%2$s %1$s', + 'KR': '%1$s %2$s', + 'KY': '%2$s %1$s', + 'LI': '%1$s %2$s', + 'LK': '%2$s %1$s', + 'LU': '%1$s %2$s', + 'LV': '%1$s %2$s', + 'ME': '%1$s %2$s', + 'MO': '%1$s%2$s', + 'MS': '%2$s %1$s', + 'MY': '%2$s $1%s', + 'MX': '%1$s No. %2$s', + 'NL': '%1$s %2$s', + 'NO': '%1$s %2$s', + 'NZ': '%2$s %1$s', + 'OM': '%1$s, %2$s', + 'PE': '%1$s %2$s', + 'PH': '%2$s %1$s', + 'PN': '%2$s %1$s', + 'PK': '%2$s, %1$s', + 'PL': '%1$s %2$s', + 'PT': '%1$s %2$s', + 'RO': '%1$s, nr. %2$s', + 'RS': '%1$s %2$s', + 'RU': '%1$s, д. %2$s', + 'SA': '%2$s %1$s', + 'SE': '%1$s %2$s', + 'SG': '%2$s %1$s', + 'SH': '%2$s %1$s', + 'SJ': '%1$s %2$s', + 'SK': '%1$s %2$s', + 'SL': '%1$s %2$s', + 'TC': '%2$s %1$s', + 'TR': '%1$s %2$s', + 'TW': '%1$s, %2$s̈́', + 'UK': 'вул. %1$s, буд. %2$s', + 'US': '%2$s %1$s', + 'VG': '%2$s %1$s', + 'VI': '%2$s %1$s', + 'VN': 'số %2$s %1$s' +} + +function streetAddressForCountryCode(streetName, housenumber, countryCode) { + let format = FORMAT_MAP[countryCode]; + + if (format) + return Format.vprintf(format, [streetName, housenumber]); + else + return Format.vprintf('%s %s', [housenumber, streetName]); +} diff --git a/src/application.js b/src/application.js new file mode 100644 index 00000000..f7a80c51 --- /dev/null +++ b/src/application.js @@ -0,0 +1,383 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const WebKit2 = imports.gi.WebKit2; + +const CheckIn = imports.checkIn; +const ContactPlace = imports.contactPlace; +const Format = imports.format; +const Geoclue = imports.geoclue; +const MainWindow = imports.mainWindow; +const Maps = imports.gi.GnomeMaps; +const OSMEdit = imports.osmEdit; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const PlaceStore = imports.placeStore; +const RoutingDelegator = imports.routingDelegator; +const RouteQuery = imports.routeQuery; +const Settings = imports.settings; +const Utils = imports.utils; + +// used globally +var application = null; +var settings = null; +var placeStore = null; +var routingDelegator = null; +var geoclue = null; +var networkMonitor = null; +var checkInManager = null; +var contactStore = null; +var osmEdit = null; +var normalStartup = true; +var routeQuery = null; + +const _ensuredTypes = [WebKit2.WebView, + OSMTypeSearchEntry.OSMTypeSearchEntry]; + +var Application = GObject.registerClass({ + Properties: { + 'connected': GObject.ParamSpec.boolean('connected', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE) + }, +}, class Application extends Gtk.Application { + + set connected(p) { + this._connected = p; + this.notify('connected'); + } + + get connected() { + return this._connected; + } + + _init() { + /* Translators: This is the program name. */ + GLib.set_application_name(_("Maps")); + + /* Needed to be able to use in UI files */ + _ensuredTypes.forEach((type) => GObject.type_ensure(type)); + + super._init({ application_id: 'org.gnome.Maps', + flags: Gio.ApplicationFlags.HANDLES_OPEN | + Gio.ApplicationFlags.HANDLES_COMMAND_LINE }); + this._connected = false; + + this.add_main_option('local', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.FILENAME, + _("A path to a local tiles directory structure"), + null); + this.add_main_option('local-tile-size', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.INT, + _("Tile size for local tiles directory"), + null); + + this.add_main_option('version', 'v'.charCodeAt(0), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, + _("Show the version of the program"), null); + + this.add_main_option('force-online', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + _("Ignore network availability"), + null); + /* due to https://gitlab.gnome.org/GNOME/gjs/-/issues/330 the + * description for the remaining args needs to be passed as both + * description and arg_description + */ + this.add_main_option(GLib.OPTION_REMAINING, + 0, + 0, + GLib.OptionArg.STRING_ARRAY, + _("[FILE…|URI]"), + _("[FILE…|URI]")); + } + + _checkNetwork() { + this.connected = + this._forceOnline || + networkMonitor.connectivity === Gio.NetworkConnectivity.FULL; + } + + _showContact(id) { + contactStore.lookup(id, (contact) => { + this.mark_busy(); + if (!contact) { + this.unmark_busy(); + return; + } + contact.geocode(() => { + this.unmark_busy(); + this._mainWindow.mapView.showContact(contact); + }); + }); + } + + _onShowContactActivate(action, parameter) { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + + let id = parameter.deep_unpack(); + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this. _showContact(id); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._showContact(id); + }); + } + } + + _onOsmAccountSetupActivate() { + let dialog = osmEdit.createAccountDialog(this._mainWindow, false); + + dialog.show(); + dialog.connect('response', () => dialog.destroy()); + } + + _addContacts() { + let contacts = contactStore.get_contacts(); + + this._addContactsRecursive(contacts, 0); + } + + _addContactsRecursive(contacts, index) { + if (index < contacts.length) { + let contact = contacts[index]; + + contact.geocode(() => { + contact.get_places().forEach((p) => { + if (!p.location) + return + + Utils.debug('Adding contact address: ' + p.name); + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + placeStore.addPlace(place, PlaceStore.PlaceType.CONTACT); + }); + + this._addContactsRecursive(contacts, index + 1); + }); + } + } + + _initPlaceStore() { + placeStore = new PlaceStore.PlaceStore({ + recentPlacesLimit: settings.get('recent-places-limit'), + recentRoutesLimit: settings.get('recent-routes-limit') + }); + try { + placeStore.load(); + } catch (e) { + log('Failed to parse Maps places file, ' + + 'subsequent writes will overwrite the file!'); + } + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this._addContacts(); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._addContacts(); + }); + } + } + + _onNightModeChange(action) { + let state = action.get_state(); + let gtkSettings = Gtk.Settings.get_default(); + gtkSettings.gtk_application_prefer_dark_theme = state.get_boolean(); + } + + vfunc_startup() { + super.vfunc_startup(); + + GtkClutter.init(null); + + Utils.loadStyleSheet(Gio.file_new_for_uri('resource:///org/gnome/Maps/application.css')); + + application = this; + this._initServices(); + + Utils.addActions(this, { + 'show-contact': { + paramType: 's', + onActivate: this._onShowContactActivate.bind(this) + }, + 'osm-account-setup': { + onActivate: this._onOsmAccountSetupActivate.bind(this) + }, + 'night-mode': { + paramType: 'b', + onChangeState: this._onNightModeChange.bind(this), + setting: 'night-mode' + }, + 'quit': { + onActivate: () => this.quit(), + accels: ['Q'] + } + }, settings); + + // set dark theme when night-mode is enabled + let gtkSettings = Gtk.Settings.get_default(); + + gtkSettings.gtk_application_prefer_dark_theme = + settings.get('night-mode'); + + Gtk.IconTheme.get_default().append_search_path(GLib.build_filenamev([pkg.pkgdatadir, + 'icons'])); + this._initPlaceStore(); + } + + _initServices() { + settings = Settings.getSettings('org.gnome.Maps'); + routeQuery = new RouteQuery.RouteQuery(); + routingDelegator = new RoutingDelegator.RoutingDelegator({ query: routeQuery }); + geoclue = new Geoclue.Geoclue(); + networkMonitor = Gio.NetworkMonitor.get_default(); + networkMonitor.connect('network-changed', + this._checkNetwork.bind(this)); + checkInManager = new CheckIn.CheckInManager(); + contactStore = new Maps.ContactStore(); + contactStore.load(); + osmEdit = new OSMEdit.OSMEdit(); + } + + _createWindow() { + if (this._mainWindow) + return; + + this._mainWindow = new MainWindow.MainWindow({ application: this }); + this._mainWindow.connect('destroy', () => this._onWindowDestroy()); + if (GLib.getenv('MAPS_DEBUG') === 'focus') { + this._mainWindow.connect('set-focus', (window, widget) => { + log('* focus widget: %s'.format(widget)); + }); + } + } + + vfunc_dbus_register(connection, path) { + super.vfunc_dbus_register(connection, path); + return true; + } + + vfunc_dbus_unregister(connection, path) { + super.vfunc_dbus_unregister(connection, path); + } + + vfunc_activate() { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + } + + _openInternal(files) { + if (!this._mainWindow || !this._mainWindow.mapView.view.realized) + return; + + let uri = files[0].get_uri(); + let scheme = GLib.uri_parse_scheme(uri); + + if (scheme === 'geo') { + /* we get an uri that looks like geo:///lat,lon, remove slashes */ + let geoURI = uri.replace(/\//g, ''); + this._mainWindow.mapView.goToGeoURI(geoURI); + } else if (scheme === 'http' || scheme === 'https') { + this._mainWindow.mapView.goToHttpURL(uri); + } else { + this._mainWindow.mapView.openShapeLayers(files); + } + } + + vfunc_open(files) { + normalStartup = false; + this.activate(); + + let mapView = this._mainWindow.mapView; + if (mapView.view.realized) + this._openInternal(files); + else + mapView.view.connect('notify::realized', + this._openInternal.bind(this, files)); + } + + vfunc_command_line(cmdline) { + let options = cmdline.get_options_dict(); + + if (options.contains('local')) { + let variant = options.lookup_value('local', null); + this.local_tile_path = variant.deep_unpack(); + normalStartup = false; + if (options.contains('local-tile-size')) { + variant = options.lookup_value('local-tile-size', null); + this.local_tile_size = variant.deep_unpack(); + } + } else if (options.contains('version')) { + print(pkg.version); + /* quit the invoked process after printing the version number + * leaving the running instance unaffected + */ + return 0; + } else if (options.contains('force-online')) { + this._forceOnline = true; + } + + let remaining = options.lookup(GLib.OPTION_REMAINING, null); + + if (remaining) { + let files = []; + + remaining.forEach((r) => { + let path = r.get_string()[0]; + + if (path.startsWith('geo:') || path.startsWith('http://') || + path.startsWith('https://')) { + files.push(Gio.File.new_for_uri(path)); + } else { + files.push(Gio.File.new_for_path(path)); + } + }); + + this.open(files, ''); + } else { + this.activate(); + } + + return 0; + } + + _onWindowDestroy(window) { + this._mainWindow = null; + } +}); diff --git a/src/checkIn.js b/src/checkIn.js new file mode 100644 index 00000000..e314da7a --- /dev/null +++ b/src/checkIn.js @@ -0,0 +1,178 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Goa = imports.gi.Goa; +const Gtk = imports.gi.Gtk; + +const CheckInDialog = imports.checkInDialog; +const FacebookBackend = imports.facebookBackend; +const FoursquareBackend = imports.foursquareBackend; + +var CheckInManager = GObject.registerClass({ + Signals: { + 'accounts-refreshed': { } + }, + Properties: { + 'hasCheckIn': GObject.ParamSpec.boolean('hasCheckIn', + '', + '', + GObject.ParamFlags.READABLE) + } +}, class CheckInManager extends GObject.Object { + _init() { + super._init(); + + try { + this._goaClient = Goa.Client.new_sync(null); + } catch (e) { + log('Error creating GOA client: %s'.format(e.message)); + } + + this._accounts = []; + this._authorizers = {}; + this._backends = {}; + + this._initBackends(); + + if (this._goaClient) { + this._goaClient.connect('account-added', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-changed', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-removed', + this._refreshGoaAccounts.bind(this)); + } + + this._refreshGoaAccounts(); + } + + _initBackends() { + let facebookBackend = new FacebookBackend.FacebookBackend(); + this._backends[facebookBackend.name] = facebookBackend; + + let foursquareBackend = new FoursquareBackend.FoursquareBackend(); + this._backends[foursquareBackend.name] = foursquareBackend; + } + + _refreshGoaAccounts() { + if (!this._goaClient) + return; + let accounts = this._goaClient.get_accounts(); + this._accounts = []; + this._accountsCount = 0; + this._authorizers = {}; + + accounts.forEach((object) => { + if (!object.get_account()) + return; + + if (!object.get_maps()) + return; + + let accountId = object.get_account().id; + this._accounts.push(object); + + this._authorizers[accountId] = this._getBackend(object).createAuthorizer(object); + }); + + this.emit('accounts-refreshed'); + this.notify('hasCheckIn'); + } + + get client() { + return this._goaClient; + } + + get accounts() { + return this._accounts; + } + + get hasCheckIn() { + return this._accounts.length > 0; + } + + _getAuthorizer(account) { + return this._authorizers[account.get_account().id]; + } + + _getBackend(account) { + return this._backends[account.get_account().provider_type]; + } + + performCheckIn(account, checkIn, callback, cancellable) { + this._getBackend(account) + .performCheckIn(this._getAuthorizer(account), checkIn, callback, cancellable); + } + + findPlaces(account, latitude, longitude, distance, callback, cancellable) { + this._getBackend(account) + .findPlaces(this._getAuthorizer(account), latitude, longitude, distance, callback, cancellable); + } + + showCheckInDialog(parentWindow, place, matchPlace) { + let dialog = new CheckInDialog.CheckInDialog({ transient_for: parentWindow, + matchPlace: matchPlace, + place: place }); + let response = dialog.run(); + dialog.destroy(); + + let message = null; + + switch (response) { + case CheckInDialog.Response.FAILURE_NO_PLACES: + if (matchPlace) + /* Translators: %s is the place name that user wanted to check-in */ + message = _("Cannot find “%s” in the social service").format(place.name); + else + message = _("Cannot find a suitable place to check-in in this location"); + break; + case CheckInDialog.Response.FAILURE_GET_PLACES: + if (dialog.error.code === 401) + message = _("Credentials have expired, please open Online Accounts to sign in and enable this account"); + else + message = dialog.error.message; + break; + } + + if (message) { + let messageDialog = new Gtk.MessageDialog({ transient_for: parentWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: message }); + messageDialog.run(); + messageDialog.destroy(); + } + } +}); + +var CheckIn = class { + _init() { + this.message = null; + this.place = null; + this.privacy = null; + this.broadcastFacebook = false; + this.broadcastTwitter = false; + } +}; diff --git a/src/checkInDialog.js b/src/checkInDialog.js new file mode 100644 index 00000000..7b65cf27 --- /dev/null +++ b/src/checkInDialog.js @@ -0,0 +1,288 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const AccountListBox = imports.accountListBox; +const Application = imports.application; +const CheckIn = imports.checkIn; +const SocialPlaceListBox = imports.socialPlaceListBox; +const SocialPlaceMatcher = imports.socialPlaceMatcher; + +var Response = { + SUCCESS: 0, + CANCELLED: 1, + FAILURE_NO_PLACES: 2, + FAILURE_GET_PLACES: 3, + FAILURE_ACCOUNT_DISABLED: 4, + FAILURE_CHECKIN_DISABLED: 5 +}; + +var CheckInDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/check-in-dialog.ui', + InternalChildren: [ 'cancelButton', + 'okButton', + 'stack', + 'accountFrame', + 'placeScrolledWindow', + 'placeNotFoundInfoBar', + 'placeNotFoundLabel', + 'messageInfoLabel', + 'messageInfoAccountImage', + 'messageTextView', + 'facebookOptionsGrid', + 'facebookOptionsPrivacyComboBox', + 'foursquareOptionsGrid', + 'foursquareOptionsPrivacyComboBox', + 'foursquareOptionsBroadcastFacebookCheckButton', + 'foursquareOptionsBroadcastTwitterCheckButton' ], +}, class CheckInDialog extends Gtk.Dialog { + _init(params) { + this._place = params.place; + delete params.place; + + this._matchPlace = params.matchPlace; + delete params.matchPlace; + + // This is a construct-only property and cannot be set by GtkBuilder + params.use_header_bar = true; + + super._init(params); + + this._account = null; + this._checkIn = new CheckIn.CheckIn(); + this.error = null; + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + Application.checkInManager.connect('accounts-refreshed', + () => this._onAccountRefreshed()); + + this._initHeaderBar(); + this._initWidgets(); + } + + _initHeaderBar() { + this._cancelButton.connect('clicked', + () => this._cancellable.cancel()); + + this._okButton.connect('clicked', () => this._startCheckInStep()); + } + + _initWidgets() { + // Limitations in Gjs means we can't do this in UI files yet + this._accountListBox = new AccountListBox.AccountListBox({ visible: true }); + this._accountFrame.add(this._accountListBox); + + this._placeListBox = new SocialPlaceListBox.SocialPlaceListBox({ visible: true }); + this._placeScrolledWindow.add(this._placeListBox); + + Application.settings.bind('checkin-facebook-privacy', + this._facebookOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-privacy', + this._foursquareOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-facebook', + this._foursquareOptionsBroadcastFacebookCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-twitter', + this._foursquareOptionsBroadcastTwitterCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + this._accountListBox.connect('account-selected', (list, account) => { + this._account = account; + this._startPlaceStep(); + }); + + this._placeListBox.connect('place-selected', (list, place) => { + this._checkIn.place = place; + this._startMessageStep(); + }); + } + + vfunc_show() { + this._startup(); + super.vfunc_show(); + } + + _startup() { + let accounts = Application.checkInManager.accounts; + + if (accounts.length > 1) + this._startAccountStep(); + else if (accounts.length === 1) { + this._account = Application.checkInManager.accounts[0]; + this._startPlaceStep(); + } else { + Mainloop.idle_add(() => { + this.response(Response.FAILURE_CHECKIN_DISABLED); + }); + } + } + + _onAccountRefreshed() { + let accounts = Application.checkInManager.accounts; + + if (!Application.checkInManager.hasCheckIn) + this.response(Response.FAILURE_CHECKIN_DISABLED); + else if (this._account) { + for (let account of accounts) { + if (this._account.get_account().id === account.get_account().id) + return; + } + + this.response(Response.FAILURE_ACCOUNT_DISABLED); + } + } + + _startAccountStep() { + this.set_title(_("Select an account")); + this._stack.set_visible_child_name('account'); + } + + _startPlaceStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + Application.checkInManager.findPlaces(this._account, + this._place.location.latitude, + this._place.location.longitude, + 100, + this._onFindPlacesFinished.bind(this), + this._cancellable); + } + + _onFindPlacesFinished(account, places, error) { + if (!error) { + if (places.length === 0) { + this.response(Response.FAILURE_NO_PLACES); + return; + } + + let matches = SocialPlaceMatcher.match(this._place, places); + + if (matches.exactMatches.length === 1 && this._matchPlace) { + this._checkIn.place = matches.exactMatches[0]; + this._startMessageStep(); + } else { + this.set_title(_("Select a place")); + this._placeListBox.matches = matches; + + if (this._matchPlace) { + if (this._account.get_account().provider_type === 'facebook') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Facebook. Please select one from this list."); + else if (this._account.get_account().provider_type === 'foursquare') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Foursquare. Please select one from this list."); + } else + this._placeNotFoundInfoBar.hide(); + + this._stack.set_visible_child_name('place'); + } + } else { + this.error = error; + this.response(Response.FAILURE_GET_PLACES); + } + } + + _startMessageStep() { + /* Translators: %s is the name of the place to check in. + */ + this.set_title(_("Check in to %s").format(this._checkIn.place.name)); + this._stack.set_visible_child_name('message'); + + this._messageTextView.grab_focus(); + this._okButton.show(); + + let account = this._account.get_account(); + + /* Translators: %s is the name of the place to check in. + */ + let labelMessageInfo = _("Write an optional message to check in to %s."); + this._messageInfoLabel.label = labelMessageInfo.format('%s'.format(this._checkIn.place.link, + this._checkIn.place.name)); + this._messageInfoAccountImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + + let optionsGrids = { 'facebook': this._facebookOptionsGrid, + 'foursquare': this._foursquareOptionsGrid }; + + for (let provider in optionsGrids) + if (provider === account.provider_type) + optionsGrids[provider].show(); + else + optionsGrids[provider].hide(); + } + + _startCheckInStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + this._okButton.hide(); + + let message = this._messageTextView.buffer.text; + let privacy; + + if (this._account.get_account().provider_type === 'facebook') + privacy = this._facebookOptionsPrivacyComboBox.active_id; + else if (this._account.get_account().provider_type === 'foursquare') + privacy = this._foursquareOptionsPrivacyComboBox.active_id; + + let broadcastFacebook = this._foursquareOptionsBroadcastFacebookCheckButton.active; + let broadcastTwitter = this._foursquareOptionsBroadcastTwitterCheckButton.active; + + this._checkIn.message = message; + this._checkIn.privacy = privacy; + this._checkIn.broadcastFacebook = broadcastFacebook; + this._checkIn.broadcastTwitter = broadcastTwitter; + + Application.checkInManager.performCheckIn(this._account, + this._checkIn, + this._onPerformCheckInFinished.bind(this), + this._cancellable); + } + + _onPerformCheckInFinished(account, data, error) { + if (!error) + this.response(Response.SUCCESS); + else { + let messageDialog = new Gtk.MessageDialog({ transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: error.message }); + messageDialog.run(); + messageDialog.destroy(); + + this._startMessageStep(); + } + } +}); diff --git a/src/color.js b/src/color.js new file mode 100644 index 00000000..feb630a3 --- /dev/null +++ b/src/color.js @@ -0,0 +1,94 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* Minimum contrast ratio for foreground/background color for i.e. route labels */ +const MIN_CONTRAST_RATIO = 2.0; + +/** + * Parses a given color component index (0: red, 1: green, 2: blue) + * from a hex-encoded color string. Optionally, if defaultValue is supplied, + * fallback to that if color is undefined. + */ +function parseColor(color, component, defaultValue) { + if (color) { + let index = component * 2; + return parseInt(color.substring(index, index + 2), 16) / 255; + } else { + return defaultValue; + } +} + +/** + * Returns the relative luminance (0.0 - 1.0) of a color, expressed in HTML + * notation (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Relative_luminance + */ +function relativeLuminance(color) { + let rsRGB = parseColor(color, 0); + let gsRGB = parseColor(color, 1); + let bsRGB = parseColor(color, 2); + let r = rsRGB <= 0.03928 ? + rsRGB / 12.92 : Math.pow(((rsRGB + 0.055) / 1.055), 2.4); + let g = gsRGB <= 0.03928 ? + gsRGB / 12.92 : Math.pow(((gsRGB + 0.055) / 1.055), 2.4); + let b = bsRGB <= 0.03928 ? + bsRGB / 12.92 : Math.pow(((bsRGB + 0.055) / 1.055), 2.4); + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +/** + * Returns the contrast ratio between two colors, expressed in HTML notation + * (i.e. ffffff for white) according to the W3C WCAG defintion: + * https://www.w3.org/WAI/GL/wiki/Contrast_ratio + */ +function contrastRatio(color1, color2) { + let lc1 = relativeLuminance(color1); + let lc2 = relativeLuminance(color2); + /* order by luminance, lighter before darker */ + let l1 = Math.max(lc1, lc2); + let l2 = Math.min(lc1, lc2); + + return (l1 + 0.05) / (l2 + 0.05); +} + +/** + * Finds a suitable foreground (text) color for a given background color. + * If the desiredForegroundColor argument is defined, return this color if it + * has enough contrast against the background, otherwise (or if that argument + * is undefined), return the one of black or white giving the higest contrast + */ +function getContrastingForegroundColor(backgroundColor, + desiredForegroundColor) { + if (!desiredForegroundColor || + (contrastRatio(backgroundColor, desiredForegroundColor) < + MIN_CONTRAST_RATIO)) { + let contrastAgainstWhite = contrastRatio(backgroundColor, 'ffffff'); + let contrastAgainstBlack = contrastRatio(backgroundColor, '000000'); + + if (contrastAgainstWhite > contrastAgainstBlack) + return 'ffffff'; + else + return '000000'; + } else { + return desiredForegroundColor; + } +} diff --git a/src/contactPlace.js b/src/contactPlace.js new file mode 100644 index 00000000..6c036c22 --- /dev/null +++ b/src/contactPlace.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; + +const Place = imports.place; + +var ContactPlace = GObject.registerClass( +class ContactPlace extends Place.Place { + _init(params) { + this._contact = params.contact; + delete params.contact; + + params.store = false; + super._init(params); + } + + get icon() { + return this._contact.icon; + } + + get uniqueID() { + return [this.name, + this.osm_type, + this.osm_id].join('-'); + } +}); diff --git a/src/contextMenu.js b/src/contextMenu.js new file mode 100644 index 00000000..6a4727a2 --- /dev/null +++ b/src/contextMenu.js @@ -0,0 +1,201 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEdit = imports.osmEdit; +const OSMEditDialog = imports.osmEditDialog; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; +const ZoomInDialog = imports.zoomInDialog; + +var ContextMenu = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/context-menu.ui', + InternalChildren: [ 'whatsHereItem', + 'geoURIItem', + 'addOSMLocationItem', + 'routeFromHereItem', + 'addIntermediateDestinationItem', + 'routeToHereItem' ], +}, class ContextMenu extends Gtk.Menu { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + super._init(params); + + this._mapView.connect('button-release-event', + this._onButtonReleaseEvent.bind(this)); + + this._whatsHereItem.connect('activate', + this._onWhatsHereActivated.bind(this)); + this._geoURIItem.connect('activate', + this._onGeoURIActivated.bind(this)); + this._addOSMLocationItem.connect('activate', + this._onAddOSMLocationActivated.bind(this)); + this._routeFromHereItem.connect('activate', + this._onRouteFromHereActivated.bind(this)); + this._addIntermediateDestinationItem.connect('activate', + this._onAddIntermediateDestinationActivated.bind(this)); + this._routeToHereItem.connect('activate', + this._onRouteToHereActivated.bind(this)); + Application.routeQuery.connect('notify::points', + this._routingUpdate.bind(this)); + this._routingUpdate(); + } + + _onButtonReleaseEvent(widget, event) { + let [, button] = event.get_button(); + let [, x, y] = event.get_coords(); + this._longitude = this._mapView.view.x_to_longitude(x); + this._latitude = this._mapView.view.y_to_latitude(y); + + if (button === Gdk.BUTTON_SECONDARY) { + // Need idle to avoid Clutter dead-lock on re-entrance + Mainloop.idle_add(() => this.popup_at_pointer(event)); + } + } + + _routingUpdate() { + let query = Application.routeQuery; + let numPoints = query.points.length; + + this._routeFromHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._routeToHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._addIntermediateDestinationItem.sensitive = + query.filledPoints.length >= 2 && numPoints < RouteQuery.MAX_QUERY_POINTS; + } + + _onRouteFromHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location }); + + query.points[0].place = place; + } + + _onRouteToHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location }); + + query.points.last().place = place; + } + + _onAddIntermediateDestinationActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location }); + + query.addPoint(-1).place = place; + } + + _onWhatsHereActivated() { + GeocodeFactory.getGeocoder().reverse(this._latitude, this._longitude, + (place) => { + if (place) { + this._mapView.showPlace(place, false); + } else { + let msg = _("Nothing found here!"); + + Utils.showDialog(msg, Gtk.MessageType.INFO, this._mainWindow); + } + }); + } + + _onGeoURIActivated() { + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + let uri = location.to_uri(Geocode.LocationURIScheme.GEO); + + clipboard.set_text(uri, uri.length); + } + + _onAddOSMLocationActivated() { + let osmEdit = Application.osmEdit; + /* if the user is not alread signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this._mainWindow, true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._addOSMLocation(); + }); + + return; + } + + this._addOSMLocation(); + } + + _addOSMLocation() { + let osmEdit = Application.osmEdit; + + if (this._mapView.view.get_zoom_level() < OSMEdit.MIN_ADD_LOCATION_ZOOM_LEVEL) { + let zoomInDialog = + new ZoomInDialog.ZoomInDialog({ longitude: this._longitude, + latitude: this._latitude, + view: this._mapView.view, + transient_for: this._mainWindow, + modal: true }); + + zoomInDialog.connect('response', () => zoomInDialog.destroy()); + zoomInDialog.show_all(); + return; + } + + let dialog = + osmEdit.createEditNewDialog(this._mainWindow, + this._latitude, this._longitude); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMEditDialog.Response.UPLOADED) { + Utils.showDialog(_("Location was added to the map, note that it may take a while before it shows on the map and in search results."), + Gtk.MessageType.INFO, this._mainWindow); + } + }); + } +}); diff --git a/src/epaf.js b/src/epaf.js new file mode 100644 index 00000000..4465a730 --- /dev/null +++ b/src/epaf.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jussi Kukkonen + * Mattias Bengtsson + */ + +// Google encoded polyline decoder +// https://developers.google.com/maps/documentation/utilities/polylinealgorithm + +const Champlain = imports.gi.Champlain; + +function _decodeValue(data, index) { + let b; + let shift = 0; + let value = 0; + + do { + // 63 added to keep string printable + b = data.charCodeAt(index++) - 63; + + // Get 5 bits at a time until hit the end of value + // (which is not OR'd with 0x20) + value |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + + // negative values are encoded as two's complement + let ret_val = ((value & 1) ? ~(value >> 1) : (value >> 1)); + return [ret_val, index]; +} + +function decode(data) { + let length = data.length; + let polyline = []; + let index = 0; + let lat = 0; + let lon = 0; + + while (index < length) { + let latdelta, londelta; + + [latdelta, index] = _decodeValue(data, index); + [londelta, index] = _decodeValue(data, index); + + // first value is absolute, rest are relative to previous value + lat += latdelta; + lon += londelta; + polyline.push(new Champlain.Coordinate({ + latitude: lat * 1e-5, + longitude: lon * 1e-5 + })); + } + return polyline; +} diff --git a/src/exportViewDialog.js b/src/exportViewDialog.js new file mode 100644 index 00000000..42b7996d --- /dev/null +++ b/src/exportViewDialog.js @@ -0,0 +1,183 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _PREVIEW_WIDTH = 150; + +var ExportViewDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/export-view-dialog.ui', + InternalChildren: [ 'exportButton', + 'cancelButton', + 'filenameEntry', + 'fileChooserButton', + 'previewArea', + 'layersCheckButton' ], +}, class ExportViewDialog extends Gtk.Dialog { + _init(params) { + this._surface = params.surface; + delete params.surface; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._cancelButton.connect('clicked', () => this.response(Response.CANCEL)); + this._exportButton.connect('clicked', () => this._exportView()); + this._filenameEntry.connect('changed', () => this._onFileNameChanged()); + this._fileChooserButton.connect('file-set', () => this._onFolderChanged()); + this._layersCheckButton.connect('toggled', () => this._includeLayersChanged()); + + + this._folder = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES); + if (!this._folder) + this._folder = GLib.get_user_data_dir(); + + this._filenameEntry.text = this._fileName = this._getName(); + this._fileChooserButton.set_current_folder(this._folder); + this._setupPreviewArea(); + } + + _getName() { + /* Translators: This is a format string for a PNG filename for an + * exported image with coordinates. The .png extension should be kept + * intact in the translated string. + */ + return _("Maps at %f, %f.png").format(this._latitude.toFixed(2), + this._longitude.toFixed(2)); + } + + _setupPreviewArea() { + let [surfaceWidth, surfaceHeight] = this._mapView.view.get_size(); + + let width = _PREVIEW_WIDTH; + this._scaleFactor = width / surfaceWidth; + let height = surfaceHeight * this._scaleFactor; + + this._previewArea.set_size_request(width, height); + this._previewArea.connect('draw', + (w, cr) => this._drawPreview(w, cr)); + } + + _drawPreview(widget, cr) { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.scale(this._scaleFactor, this._scaleFactor); + cr.setSourceSurface(this._surface, 0, 0); + cr.paint(); + } + + _onFileNameChanged() { + let name = GLib.filename_from_utf8(this._filenameEntry.text, -1)[0]; + name = name.toString(); + if (!name) { + this._exportButton.sensitive= false; + return; + } + + try { + GLib.build_filenamev([this._folder, name]); + this._exportButton.sensitive = true; + this._fileName = name; + } catch(e) { + this._exportButton.sensitive = false; + } + } + + _onFolderChanged() { + let folder = this._fileChooserButton.get_filename(); + + if (!GLib.file_test(folder, GLib.FileTest.IS_DIR)) { + this._exportButton.sensitive= false; + return; + } + if (!GLib.file_test(folder, GLib.FileTest.EXISTS)) { + this._exportButton.sensitive = false; + return; + } + + this._exportButton.sensitive = true; + this._folder = folder; + } + + _exportView() { + let [width, height] = this._mapView.view.get_size(); + let pixbuf = Gdk.pixbuf_get_from_surface(this._surface, 0, 0, width, height); + let path = GLib.build_filenamev([this._folder, this._fileName]); + + try { + pixbuf.savev(path, "png", [], []); + this.response(Response.SUCCESS); + } catch(e) { + Utils.debug('failed to export view: ' + e.message); + let details = null; + + if (e.matches(GLib.FileError, GLib.FileError.ROFS)) + details = _("Filesystem is read only"); + else if (e.matches(GLib.FileError, GLib.FileError.ACCES)) + details = _("You do not have permission to save there"); + else if (e.matches(GLib.FileError, GLib.FileError.NOENT)) + details = _("The directory does not exist"); + else if (e.matches(GLib.FileError, GLib.FileError.ISDIR)) + details = _("No filename specified"); + + let dialog = new Gtk.MessageDialog({ + transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("Unable to export view"), + secondary_text: details + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + } + + _includeLayersChanged() { + let includeLayers = this._layersCheckButton.get_active(); + + this._surface = this._mapView.view.to_surface(includeLayers); + this._previewArea.queue_draw(); + } +}); diff --git a/src/facebookBackend.js b/src/facebookBackend.js new file mode 100644 index 00000000..3df30adc --- /dev/null +++ b/src/facebookBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GFBGraph = imports.gi.GFBGraph; +const GObject = imports.gi.GObject; + +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://www.facebook.com/%s'; + +var FacebookBackend = GObject.registerClass( +class FacebookBackend extends ServiceBackend.ServiceBackend { + get name() { + return 'facebook'; + } + + createRestCall(authorizer) { + return GFBGraph.new_rest_call(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refresh_authorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goa_object; + } + + createAuthorizer(account) { + return new GFBGraph.GoaAuthorizer({ goa_object: account }); + } + + isTokenInvalid(restCall, data) { + return data.error && + (data.error.code === 2500 || data.error.code === 104 || data.error.code === 190); + } + + isInvalidCall(restCall, data) { + if (!data) { + return true; + } else if (data.error) { + return true; + } else { + return false; + } + } + + getCallResultCode(restCall, data) { + return data ? + (data.error ? data.error.code : null) : + restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? + (data.error ? data.error.message : null) : + restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + this.callAsync(authorizer, + 'POST', + 'me/feed', + { + 'message': checkIn.message, + 'place': checkIn.place.id, + 'privacy_value': checkIn.privacy + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'search', + { + 'type': 'place', + 'center': latitude + ',' + longitude, + 'distance': distance + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.data.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.latitude, + longitude: place.location.longitude, + category: place.category, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/favoritesPopover.js b/src/favoritesPopover.js new file mode 100644 index 00000000..097864ba --- /dev/null +++ b/src/favoritesPopover.js @@ -0,0 +1,120 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; + +const _N_VISIBLE = 6; + +var FavoritesPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/favorites-popover.ui', + InternalChildren: [ 'mainGrid', + 'entry', + 'scrolledWindow', + 'list' ], + Properties: { + 'rows': GObject.ParamSpec.int('rows', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, GLib.MAXINT32, 0) + } +}, class FavoritesPopover extends Gtk.Popover { + + _init(params) { + params = params || { }; + + this._mapView = params.mapView; + delete params.mapView; + + params.transitions_enabled = false; + super._init(params); + + this._rows = 0; + + let placeType = PlaceStore.PlaceType.FAVORITE; + this._model = Application.placeStore.getModelForPlaceType(placeType); + + this._model.connect('row-deleted', + this._updateList.bind(this)); + this._model.connect('row-inserted', + this._updateList.bind(this)); + + this._list.set_header_func(function(row, before) { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this.connect('notify::rows', () => { + let visible = Math.min(this._rows, _N_VISIBLE); + let separators = visible - 1; // separators are 1px + let height = PlaceListRow.ROW_HEIGHT * visible + separators; + + this._scrolledWindow.min_content_height = height; + this._entry.visible = this._rows > _N_VISIBLE; + }); + + this._entry.connect('changed', + () => this._list.invalidate_filter(this._list)); + + this._list.connect('row-activated', (list, row) => { + this.hide(); + this._mapView.showPlace(row.place, true); + }); + + this._list.set_filter_func((row) => { + return row.place.match(this._entry.text); + }); + + this._updateList(); + } + + set rows(rows) { + if (rows !== this._rows) { + this._rows = rows; + this.notify('rows'); + } + } + + get rows() { + return this._rows; + } + + _updateList() { + this._list.forall((row) => row.destroy()); + + let rows = 0; + this._model.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + + let row = new PlaceListRow.PlaceListRow({ place: place, + can_focus: true }); + this._list.add(row); + rows++; + }); + + this.rows = rows; + } +}); diff --git a/src/foursquareBackend.js b/src/foursquareBackend.js new file mode 100644 index 00000000..164ddfb6 --- /dev/null +++ b/src/foursquareBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const FoursquareGoaAuthorizer = imports.foursquareGoaAuthorizer; +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://foursquare.com/v/foursquare-hq/%s'; + +var FoursquareBackend = GObject.registerClass( +class SocialServiceFoursquareBackend extends ServiceBackend.ServiceBackend { + + get name() { + return 'foursquare'; + } + + createRestCall(authorizer) { + return FoursquareGoaAuthorizer.newRestCall(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refreshAuthorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goaObject; + } + + createAuthorizer(account) { + return new FoursquareGoaAuthorizer.FoursquareGoaAuthorizer({ goaObject: account }); + } + + isTokenInvalid(restCall, data) { + return data.meta.code === 401 || data.meta.code === 403; + } + + isInvalidCall(restCall, data) { + return !data || data.meta.code !== 200; + } + + getCallResultCode(restCall, data) { + return data ? data.meta.code : restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? data.meta.errorDetail : restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + let broadcast = checkIn.privacy; + + if (checkIn.broadcastFacebook) + broadcast += ',facebook'; + + if (checkIn.broadcastTwitter) + broadcast += ',twitter'; + + this.callAsync(authorizer, + 'POST', + 'checkins/add', + { + 'shout': checkIn.message, + 'venueId': checkIn.place.id, + 'broadcast': broadcast + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'venues/search', + { + 'll': latitude + ',' + longitude, + 'radius': distance, + 'intent': 'checkin' + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.response.venues.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.lat, + longitude: place.location.lng, + category: place.categories.length > 0 ? + place.categories[0].name : + null, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/foursquareGoaAuthorizer.js b/src/foursquareGoaAuthorizer.js new file mode 100644 index 00000000..d51ba968 --- /dev/null +++ b/src/foursquareGoaAuthorizer.js @@ -0,0 +1,91 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Rest = imports.gi.Rest; + +const _FOURSQUARE_API_VERSION = '20140226'; + +var FoursquareGoaAuthorizer = class FoursquareGoaAuthorizer { + constructor(params) { + if (!params.goaObject) { + logError('FoursquareGoaAuthorizer requires goaObject parameter'); + return; + } + + this.goaObject = params.goaObject; + } + + get goaObject() { + return this._goaObject; + } + + set goaObject(object) { + this._goaObject = object; + this._accessToken = null; + } + + _refreshAccessToken(cancellable) { + if (this._accessToken) + return true; + + let getAccessTokenResult = this.goaObject.get_oauth2_based().call_get_access_token_sync(cancellable); + + if (getAccessTokenResult[0]) { + this._accessToken = getAccessTokenResult[1]; + return true; + } + + return false; + } + + processCall(restCall) { + this._refreshAccessToken(null); + restCall.add_param('oauth_token', this._accessToken); + restCall.add_param('v', _FOURSQUARE_API_VERSION); + } + + processMessage(soupMessage) { + this._refreshAccessToken(null); + let uri = soupMessage.get_uri(); + uri.set_query(uri, 'oauth_token' + this._accessToken + '&v=' + _FOURSQUARE_API_VERSION); + } + + refreshAuthorization(cancellable) { + let ensureCredentialsResult = this.goaObject.get_account().call_ensure_credentials_sync(cancellable); + if (ensureCredentialsResult[0]) { + this._accessToken = null; + return this._refreshAccessToken(cancellable); + } + + return false; + } +}; + +function newRestCall(authorizer) +{ + let proxy = new Rest.Proxy({ url_format: 'https://api.foursquare.com/v2', + binding_required: false }); + let restCall = proxy.new_call(); + + authorizer.processCall(restCall); + + return restCall; +} diff --git a/src/geoJSONShapeLayer.js b/src/geoJSONShapeLayer.js new file mode 100644 index 00000000..5b9b1b1b --- /dev/null +++ b/src/geoJSONShapeLayer.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +var GeoJSONShapeLayer = GObject.registerClass( +class GeoJSONShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + getName() { + /* Special Case since this file extension contains 2 periods */ + let suffix = '.geo.json'; + if (this.filename.endsWith(suffix)) + return this.filename.replace(new RegExp(suffix + '$'), ''); + else + return super.getName(); + } + + _parseContent() { + this._mapSource.parse(JSON.parse(Utils.getBufferText(this._fileContents))); + } +}); + +GeoJSONShapeLayer.mimeTypes = ['application/vnd.geo+json', + 'application/geo+json', + 'application/json']; +GeoJSONShapeLayer.displayName = 'GeoJSON'; +GeoJSONShapeLayer.createInstance = function(params) { + return new GeoJSONShapeLayer(params); +}; diff --git a/src/geoJSONSource.js b/src/geoJSONSource.js new file mode 100644 index 00000000..48fe9e2a --- /dev/null +++ b/src/geoJSONSource.js @@ -0,0 +1,280 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Geojsonvt = imports.geojsonvt.geojsonvt; +const Location = imports.location; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const Service = imports.service; +const Utils = imports.utils; +const GeoJSONStyle = imports.geoJSONStyle; +const MapView = imports.mapView; + +const TileFeature = { POINT: 1, + LINESTRING: 2, + POLYGON: 3 }; + +var GeoJSONSource = GObject.registerClass( +class GeoJSONSource extends Champlain.TileSource { + + _init(params) { + super._init(); + + this._mapView = params.mapView; + this._markerLayer = params.markerLayer; + this._bbox = new Champlain.BoundingBox(); + this._tileSize = Service.getService().tiles.street.tile_size; + } + + get bbox() { + return this._bbox; + } + + vfunc_get_tile_size() { + return this._tileSize; + } + + vfunc_get_max_zoom_level() { + return 20; + } + + vfunc_get_min_zoom_level() { + return 0; + } + + vfunc_get_id() { + return 'GeoJSONSource'; + } + + vfunc_get_name() { + return 'GeoJSONSource'; + } + + vfunc_fill_tile(tile) { + if (tile.get_state() === Champlain.State.DONE) + return; + + tile.connect('render-complete', (tile, data, size, error) => { + if(!error) { + tile.set_state(Champlain.State.DONE); + tile.display_content(); + } else if(this.next_source) + this.next_source.fill_tile(tile); + }); + + Mainloop.idle_add(() => this._renderTile(tile), tile); + } + + _validate([lon, lat]) { + if ((-180 <= lon && lon <= 180) && + (-90 <= lat && lat <= 90)) { + return; + } + + throw new Error(_("invalid coordinate")); + } + + _compose(coordinates) { + coordinates.forEach((coordinate) => { + this._validate(coordinate); + this._bbox.extend(coordinate[1], coordinate[0]); + }); + } + + _clampBBox() { + this._bbox.top = Math.min(this._bbox.top, MapView.MAX_LATITUDE); + this._bbox.left = Math.max(this._bbox.left, MapView.MIN_LONGITUDE); + this._bbox.bottom = Math.max(this._bbox.bottom, MapView.MIN_LATITUDE); + this._bbox.right = Math.min(this._bbox.right, MapView.MAX_LONGITUDE); + } + + _parseLineString(coordinates) { + this._compose(coordinates); + } + + _parsePolygon(coordinates) { + coordinates.forEach((coordinate) => this._compose(coordinate)); + } + + _parsePoint(coordinates, properties) { + let name = null; + if (properties) + name = properties.name; + + this._validate(coordinates); + this._bbox.extend(coordinates[1], + coordinates[0]); + + let location = new Location.Location({ + latitude: coordinates[1], + longitude: coordinates[0] + }); + + let place = new Place.Place({ name: name, + store: false, + location: location }); + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this._mapView }); + this._markerLayer.add_marker(placeMarker); + } + + _parseGeometry(geometry, properties) { + if(!geometry) + throw new Error(_("parse error")); + + switch(geometry.type) { + case 'LineString': + this._parseLineString(geometry.coordinates); + break; + + case 'MultiLineString': + geometry.coordinates.forEach((coordinate) => { + this._parseLineString(coordinate); + }); + break; + + case 'Polygon': + this._parsePolygon(geometry.coordinates); + break; + + case 'MultiPolygon': + geometry.coordinates.forEach((coordinate) => { + this._parsePolygon(coordinate); + }); + break; + + case 'Point': + this._parsePoint(geometry.coordinates, properties); + break; + + case 'MultiPoint': + geometry.coordinates.forEach((coordinate, properties) => { + this._parsePoint(coordinate,properties); + }); + break; + + default: + throw new Error(_("unknown geometry")); + } + } + + _parseInternal(root) { + if (!root || !root.type) + throw new Error(_("parse error")); + + switch(root.type) { + case 'FeatureCollection': + root.features.forEach((feature) => { + this._parseGeometry(feature.geometry, feature.properties); + }); + break; + + case 'Feature': + this._parseGeometry(root.geometry, root.properties); + break; + + case 'GeometryCollection': + if (!root.geometries) + throw new Error(_("parse error")); + + root.geometries.forEach((g) => this._parseGeometry(g)); + break; + + default: + this._parseGeometry(root); + } + } + + parse(json) { + this._parseInternal(json); + this._tileIndex = Geojsonvt.geojsonvt(json, { extent: this._tileSize, + maxZoom: 20 }); + this._clampBBox(); + } + + _renderTile(tile) { + let tileJSON = this._tileIndex.getTile(tile.zoom_level, tile.x, tile.y); + let content = new Clutter.Canvas({ width: this._tileSize, + height: this._tileSize }); + tile.content = new Clutter.Actor({ width: this._tileSize, + height: this._tileSize, + content: content }); + + content.connect('draw', (canvas, cr) => { + tile.set_surface(cr.getTarget()); + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + cr.setFillRule(Cairo.FillRule.EVEN_ODD); + + if (!tileJSON) { + tile.emit('render-complete', null, 0, false); + return; + } + + tileJSON.features.forEach((feature) => { + if (feature.type === TileFeature.POINT) + return; + + let geoJSONStyleObj = GeoJSONStyle.GeoJSONStyle.parseSimpleStyle(feature.tags); + + feature.geometry.forEach((geometry) => { + let first = true; + cr.moveTo(0, 0); + cr.setLineWidth(geoJSONStyleObj.lineWidth); + cr.setSourceRGBA(geoJSONStyleObj.color.red, + geoJSONStyleObj.color.green, + geoJSONStyleObj.color.blue, + geoJSONStyleObj.alpha); + + geometry.forEach(function(coord) { + if (first) { + cr.moveTo(coord[0], coord[1]); + first = false; + } else { + cr.lineTo(coord[0], coord[1]); + } + }); + }); + if (feature.type === TileFeature.POLYGON) { + cr.closePath(); + cr.strokePreserve(); + cr.setSourceRGBA(geoJSONStyleObj.fillColor.red, + geoJSONStyleObj.fillColor.green, + geoJSONStyleObj.fillColor.blue, + geoJSONStyleObj.fillAlpha); + cr.fill(); + } else { + cr.stroke(); + } + }); + + tile.emit('render-complete', null, 0, false); + }); + + content.invalidate(); + } +}); diff --git a/src/geoJSONStyle.js b/src/geoJSONStyle.js new file mode 100644 index 00000000..2cfd7162 --- /dev/null +++ b/src/geoJSONStyle.js @@ -0,0 +1,87 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Alaf Azam + */ + +const DEFAULT_LINE_WIDTH = 5; +const DEFAULT_COLOR = '69B1FF'; + +var GeoJSONStyle = class GeoJSONStyle { + constructor(params) { + if (params.lineWidth || params.lineWidth === 0) + this.lineWidth = params.lineWidth; + else + this.lineWidth = DEFAULT_LINE_WIDTH; + + if (params.alpha || params.alpha === 0) + this.alpha = params.alpha; + else + this.alpha = 1; + + if (params.fillAlpha || params.fillAlpha === 0) + this.fillAlpha = params.fillAlpha; + else + this.fillAlpha = 0.25; + + this.color = this._hexToColor(params.color || DEFAULT_COLOR); + this.fillColor = this._hexToColor(params.fillColor) || { red: 0.37, + green: 0.62, + blue: 0.87 }; + } + + _hexToColor(colorString) { + let color = null; + + if (!colorString) + return null; + + if (colorString.startsWith('#')) { + colorString = colorString.slice(1); + } + + if (colorString.length === 3) { + colorString = colorString.match(/([0-9a-f]{3})$/i); + if (colorString) { + color = { + red: (parseInt(colorString[0].chatAt(0), 16) * 0x11)/255, + green: (parseInt(colorString[0].chatAt(1), 16) * 0x11)/255, + blue: (parseInt(colorString[0].chatAt(2), 16) * 0x11)/255 + }; + } + } else { + colorString = colorString.match(/([0-9a-f]{6})$/i); + if (colorString) { + color = { + red: parseInt(colorString[0].substr(0, 2), 16)/255, + green: parseInt(colorString[0].substr(2, 2), 16)/255, + blue: parseInt(colorString[0].substr(4, 2), 16)/255 + }; + } + } + + return color; + } +}; + +GeoJSONStyle.parseSimpleStyle = function(tags) { + return new GeoJSONStyle({ alpha: tags['stroke-opacity'], + fillAlpha: tags['fill-opacity'], + color: tags['stroke'], + fillColor: tags['fill'], + lineWidth: tags['stroke-width'] }); +} diff --git a/src/geoclue.js b/src/geoclue.js new file mode 100644 index 00000000..65fd7ecf --- /dev/null +++ b/src/geoclue.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const GClue = imports.gi.Geoclue; +const Gio = imports.gi.Gio; +const Mainloop = imports.mainloop; + +const Place = imports.place; +const Location = imports.location; +const Settings = imports.settings; +const Utils = imports.utils; + +var State = { + INITIAL: 0, + ON: 1, + DENIED: 2, + FAILED: 3 +}; + +var Geoclue = GObject.registerClass({ + Signals: { + 'location-changed': { } + }, + Properties: { + 'state': GObject.ParamSpec.int('state', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + State.INITIAL, + State.FAILED, + State.INITIAL) + }, +}, class Geoclue extends GObject.Object { + + set state(s) { + this._state = s; + this.notify('state'); + } + + get state() { + return this._state; + } + + _init() { + super._init(); + this.place = null; + this._state = State.INITIAL; + + this.start(null); + } + + start(callback) { + let id = 'org.gnome.Maps'; + let level = GClue.AccuracyLevel.EXACT; + + GClue.Simple.new(id, level, null, (object, result) => { + try { + this._simple = GClue.Simple.new_finish(result); + } + catch (e) { + Utils.debug("GeoClue2 service: " + e.message); + if (e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED)) + this.state = State.DENIED; + else + this.state = State.FAILED; + if (callback) + callback(false); + return; + } + + this._simple.connect('notify::location', + () => this._onLocationNotify(this._simple)); + this._simple.client.connect('notify::active', () => { + this.state = this._simple.client.active ? State.ON : State.DENIED; + }); + + this.state = State.ON; + this._onLocationNotify(this._simple); + if (callback) + callback(true); + }); + } + + _onLocationNotify(simple) { + let geoclueLocation = simple.get_location(); + let location = new Location.Location({ + latitude: geoclueLocation.latitude, + longitude: geoclueLocation.longitude, + accuracy: geoclueLocation.accuracy, + heading: geoclueLocation.heading, + description: geoclueLocation.description + }); + this._updateLocation(location); + } + + _updateLocation(location) { + if (!this.place) + this.place = new Place.Place({ name: _("Current location"), + isCurrentLocation: true }); + + this.place.location = location; + this.emit('location-changed'); + Utils.debug("Updated location: " + location.description + + " (" + location.latitude + ", " + location.longitude + + ", accuracy = " + location.accuracy + " m)"); + } +}); diff --git a/src/geocode.js b/src/geocode.js new file mode 100644 index 00000000..7623684a --- /dev/null +++ b/src/geocode.js @@ -0,0 +1,39 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Service = imports.service; +const GraphHopperGeocode = imports.graphHopperGeocode; +const PhotonGeocode = imports.photonGeocode; + +var _geocoder = null; + +function getGeocoder() { + if (!_geocoder) { + if (Service.getService().photonGeocode) + _geocoder = new PhotonGeocode.PhotonGeocode(); + else + _geocoder = new GraphHopperGeocode.GraphHopperGeocode(); + } + + return _geocoder; +} + + diff --git a/src/geojson-vt/LICENSE b/src/geojson-vt/LICENSE new file mode 100644 index 00000000..00e99140 --- /dev/null +++ b/src/geojson-vt/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/src/geojson-vt/clip.js b/src/geojson-vt/clip.js new file mode 100644 index 00000000..cad7a21e --- /dev/null +++ b/src/geojson-vt/clip.js @@ -0,0 +1,149 @@ +'use strict'; + +/* clip features between two axis-parallel lines: + * | | + * ___|___ | / + * / | \____|____/ + * | | + */ + +function clip(features, scale, k1, k2, axis, intersect, minAll, maxAll) { + + k1 /= scale; + k2 /= scale; + + if (minAll >= k1 && maxAll <= k2) return features; // trivial accept + else if (minAll > k2 || maxAll < k1) return null; // trivial reject + + var clipped = []; + + for (var i = 0; i < features.length; i++) { + + var feature = features[i], + geometry = feature.geometry, + type = feature.type, + min, max; + + min = feature.min[axis]; + max = feature.max[axis]; + + if (min >= k1 && max <= k2) { // trivial accept + clipped.push(feature); + continue; + } else if (min > k2 || max < k1) continue; // trivial reject + + var slices = type === 1 ? + clipPoints(geometry, k1, k2, axis) : + clipGeometry(geometry, k1, k2, axis, intersect, type === 3); + + if (slices.length) { + // if a feature got clipped, it will likely get clipped on the next zoom level as well, + // so there's no need to recalculate bboxes + clipped.push({ + geometry: slices, + type: type, + tags: features[i].tags || null, + min: feature.min, + max: feature.max + }); + } + } + + return clipped.length ? clipped : null; +} + +function clipPoints(geometry, k1, k2, axis) { + var slice = []; + + for (var i = 0; i < geometry.length; i++) { + var a = geometry[i], + ak = a[axis]; + + if (ak >= k1 && ak <= k2) slice.push(a); + } + return slice; +} + +function clipGeometry(geometry, k1, k2, axis, intersect, closed) { + + var slices = []; + + for (var i = 0; i < geometry.length; i++) { + + var ak = 0, + bk = 0, + b = null, + points = geometry[i], + area = points.area, + dist = points.dist, + len = points.length, + a, j, last; + + var slice = []; + + for (j = 0; j < len - 1; j++) { + a = b || points[j]; + b = points[j + 1]; + ak = bk || a[axis]; + bk = b[axis]; + + if (ak < k1) { + + if ((bk > k2)) { // ---|-----|--> + slice.push(intersect(a, b, k1), intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk >= k1) slice.push(intersect(a, b, k1)); // ---|--> | + + } else if (ak > k2) { + + if ((bk < k1)) { // <--|-----|--- + slice.push(intersect(a, b, k2), intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk <= k2) slice.push(intersect(a, b, k2)); // | <--|--- + + } else { + + slice.push(a); + + if (bk < k1) { // <--|--- | + slice.push(intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk > k2) { // | ---|--> + slice.push(intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + } + // | --> | + } + } + + // add the last point + a = points[len - 1]; + ak = a[axis]; + if (ak >= k1 && ak <= k2) slice.push(a); + + // close the polygon if its endpoints are not the same after clipping + + last = slice[slice.length - 1]; + if (closed && last && (slice[0][0] !== last[0] || slice[0][1] !== last[1])) slice.push(slice[0]); + + // add the final slice + newSlice(slices, slice, area, dist); + } + + return slices; +} + +function newSlice(slices, slice, area, dist) { + if (slice.length) { + // we don't recalculate the area/length of the unclipped geometry because the case where it goes + // below the visibility threshold as a result of clipping is rare, so we avoid doing unnecessary work + slice.area = area; + slice.dist = dist; + + slices.push(slice); + } + return []; +} diff --git a/src/geojson-vt/convert.js b/src/geojson-vt/convert.js new file mode 100644 index 00000000..eda26c7d --- /dev/null +++ b/src/geojson-vt/convert.js @@ -0,0 +1,147 @@ +'use strict'; + +const simplify = imports.geojsonvt.simplify.simplify; + +// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data + +function convert(data, tolerance) { + var features = []; + + if (data.type === 'FeatureCollection') { + for (var i = 0; i < data.features.length; i++) { + convertFeature(features, data.features[i], tolerance); + } + } else if (data.type === 'Feature') { + convertFeature(features, data, tolerance); + + } else { + // single geometry or a geometry collection + convertFeature(features, {geometry: data}, tolerance); + } + return features; +} + +function convertFeature(features, feature, tolerance) { + if (feature.geometry === null) { + // ignore features with null geometry + return; + } + + var geom = feature.geometry, + type = geom.type, + coords = geom.coordinates, + tags = feature.properties, + i, j, rings; + + if (type === 'Point') { + features.push(create(tags, 1, [projectPoint(coords)])); + + } else if (type === 'MultiPoint') { + features.push(create(tags, 1, project(coords))); + + } else if (type === 'LineString') { + features.push(create(tags, 2, [project(coords, tolerance)])); + + } else if (type === 'MultiLineString' || type === 'Polygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + rings.push(project(coords[i], tolerance)); + } + features.push(create(tags, type === 'Polygon' ? 3 : 2, rings)); + + } else if (type === 'MultiPolygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + for (j = 0; j < coords[i].length; j++) { + rings.push(project(coords[i][j], tolerance)); + } + } + features.push(create(tags, 3, rings)); + + } else if (type === 'GeometryCollection') { + for (i = 0; i < geom.geometries.length; i++) { + convertFeature(features, { + geometry: geom.geometries[i], + properties: tags + }, tolerance); + } + + } else { + throw new Error('Input data is not a valid GeoJSON object.'); + } +} + +function create(tags, type, geometry) { + var feature = { + geometry: geometry, + type: type, + tags: tags || null, + min: [2, 1], // initial bbox values; + max: [-1, 0] // note that coords are usually in [0..1] range + }; + calcBBox(feature); + return feature; +} + +function project(lonlats, tolerance) { + var projected = []; + for (var i = 0; i < lonlats.length; i++) { + projected.push(projectPoint(lonlats[i])); + } + if (tolerance) { + simplify(projected, tolerance); + calcSize(projected); + } + return projected; +} + +function projectPoint(p) { + var sin = Math.sin(p[1] * Math.PI / 180), + x = (p[0] / 360 + 0.5), + y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); + + y = y < 0 ? 0 : + y > 1 ? 1 : y; + + return [x, y, 0]; +} + +// calculate area and length of the poly +function calcSize(points) { + var area = 0, + dist = 0; + + for (var i = 0, a, b; i < points.length - 1; i++) { + a = b || points[i]; + b = points[i + 1]; + + area += a[0] * b[1] - b[0] * a[1]; + + // use Manhattan distance instead of Euclidian one to avoid expensive square root computation + dist += Math.abs(b[0] - a[0]) + Math.abs(b[1] - a[1]); + } + points.area = Math.abs(area / 2); + points.dist = dist; +} + +// calculate the feature bounding box for faster clipping later +function calcBBox(feature) { + var geometry = feature.geometry, + min = feature.min, + max = feature.max; + + if (feature.type === 1) calcRingBBox(min, max, geometry); + else for (var i = 0; i < geometry.length; i++) calcRingBBox(min, max, geometry[i]); + + return feature; +} + +function calcRingBBox(min, max, points) { + for (var i = 0, p; i < points.length; i++) { + p = points[i]; + min[0] = Math.min(p[0], min[0]); + max[0] = Math.max(p[0], max[0]); + min[1] = Math.min(p[1], min[1]); + max[1] = Math.max(p[1], max[1]); + } +} diff --git a/src/geojson-vt/index.js b/src/geojson-vt/index.js new file mode 100644 index 00000000..bd0c6e59 --- /dev/null +++ b/src/geojson-vt/index.js @@ -0,0 +1,238 @@ +'use strict'; + +const convert = imports.geojsonvt.convert.convert; +const transform = { tile: imports.geojsonvt.transform.transformTile, + point: imports.geojsonvt.transform.transformPoint }; +const clip = imports.geojsonvt.clip.clip; +const createTile = imports.geojsonvt.tile.createTile; +const wrap = imports.geojsonvt.wrap.wrap; + +function geojsonvt(data, options) { + return new GeoJSONVT(data, options); +} + +function GeoJSONVT(data, options) { + options = this.options = extend(Object.create(this.options), options); + + var debug = options.debug; + + if (debug) console.time('preprocess data'); + + var z2 = 1 << options.maxZoom, // 2^z + features = convert(data, options.tolerance / (z2 * options.extent)); + + this.tiles = {}; + this.tileCoords = []; + + if (debug) { + console.timeEnd('preprocess data'); + console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); + console.time('generate tiles'); + this.stats = {}; + this.total = 0; + } + + features = wrap(features, options.buffer / options.extent, intersectX); + + // start slicing from the top tile down + if (features.length) this.splitTile(features, 0, 0, 0); + + if (debug) { + if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); + console.timeEnd('generate tiles'); + console.log('tiles generated:', this.total, JSON.stringify(this.stats)); + } +} + +GeoJSONVT.prototype.options = { + maxZoom: 14, // max zoom to preserve detail on + indexMaxZoom: 5, // max zoom in the tile index + indexMaxPoints: 100000, // max number of points per tile in the tile index + solidChildren: false, // whether to tile solid square tiles further + tolerance: 3, // simplification tolerance (higher means simpler) + extent: 4096, // tile extent + buffer: 64, // tile buffer on each side + debug: 0 // logging level (0, 1 or 2) +}; + +GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { + + var stack = [features, z, x, y], + options = this.options, + debug = options.debug, + solid = null; + + // avoid recursion by using a processing queue + while (stack.length) { + y = stack.pop(); + x = stack.pop(); + z = stack.pop(); + features = stack.pop(); + + var z2 = 1 << z, + id = toID(z, x, y), + tile = this.tiles[id], + tileTolerance = z === options.maxZoom ? 0 : options.tolerance / (z2 * options.extent); + + if (!tile) { + if (debug > 1) console.time('creation'); + + tile = this.tiles[id] = createTile(features, z2, x, y, tileTolerance, z === options.maxZoom); + this.tileCoords.push({z: z, x: x, y: y}); + + if (debug) { + if (debug > 1) { + console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', + z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); + console.timeEnd('creation'); + } + var key = 'z' + z; + this.stats[key] = (this.stats[key] || 0) + 1; + this.total++; + } + } + + // save reference to original geometry in tile so that we can drill down later if we stop now + tile.source = features; + + // if it's the first-pass tiling + if (!cz) { + // stop tiling if we reached max zoom, or if the tile is too simple + if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; + + // if a drilldown to a specific tile + } else { + // stop tiling if we reached base zoom or our target tile zoom + if (z === options.maxZoom || z === cz) continue; + + // stop tiling if it's not an ancestor of the target tile + var m = 1 << (cz - z); + if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; + } + + // stop tiling if the tile is solid clipped square + if (!options.solidChildren && isClippedSquare(tile, options.extent, options.buffer)) { + if (cz) solid = z; // and remember the zoom if we're drilling down + continue; + } + + // if we slice further down, no need to keep source geometry + tile.source = null; + + if (debug > 1) console.time('clipping'); + + // values we'll use for clipping + var k1 = 0.5 * options.buffer / options.extent, + k2 = 0.5 - k1, + k3 = 0.5 + k1, + k4 = 1 + k1, + tl, bl, tr, br, left, right; + + tl = bl = tr = br = null; + + left = clip(features, z2, x - k1, x + k3, 0, intersectX, tile.min[0], tile.max[0]); + right = clip(features, z2, x + k2, x + k4, 0, intersectX, tile.min[0], tile.max[0]); + + if (left) { + tl = clip(left, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + bl = clip(left, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (right) { + tr = clip(right, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + br = clip(right, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (debug > 1) console.timeEnd('clipping'); + + if (tl) stack.push(tl, z + 1, x * 2, y * 2); + if (bl) stack.push(bl, z + 1, x * 2, y * 2 + 1); + if (tr) stack.push(tr, z + 1, x * 2 + 1, y * 2); + if (br) stack.push(br, z + 1, x * 2 + 1, y * 2 + 1); + } + + return solid; +}; + +GeoJSONVT.prototype.getTile = function (z, x, y) { + var options = this.options, + extent = options.extent, + debug = options.debug; + + var z2 = 1 << z; + x = ((x % z2) + z2) % z2; // wrap tile x coordinate + + var id = toID(z, x, y); + if (this.tiles[id]) return transform.tile(this.tiles[id], extent); + + if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); + + var z0 = z, + x0 = x, + y0 = y, + parent; + + while (!parent && z0 > 0) { + z0--; + x0 = Math.floor(x0 / 2); + y0 = Math.floor(y0 / 2); + parent = this.tiles[toID(z0, x0, y0)]; + } + + if (!parent || !parent.source) return null; + + // if we found a parent tile containing the original geometry, we can drill down from it + if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); + + // it parent tile is a solid clipped square, return it instead since it's identical + if (isClippedSquare(parent, extent, options.buffer)) return transform.tile(parent, extent); + + if (debug > 1) console.time('drilling down'); + var solid = this.splitTile(parent.source, z0, x0, y0, z, x, y); + if (debug > 1) console.timeEnd('drilling down'); + + // one of the parent tiles was a solid clipped square + if (solid !== null) { + var m = 1 << (z - solid); + id = toID(solid, Math.floor(x / m), Math.floor(y / m)); + } + + return this.tiles[id] ? transform.tile(this.tiles[id], extent) : null; +}; + +function toID(z, x, y) { + return (((1 << z) * y + x) * 32) + z; +} + +function intersectX(a, b, x) { + return [x, (x - a[0]) * (b[1] - a[1]) / (b[0] - a[0]) + a[1], 1]; +} +function intersectY(a, b, y) { + return [(y - a[1]) * (b[0] - a[0]) / (b[1] - a[1]) + a[0], y, 1]; +} + +function extend(dest, src) { + for (var i in src) dest[i] = src[i]; + return dest; +} + +// checks whether a tile is a whole-area fill after clipping; if it is, there's no sense slicing it further +function isClippedSquare(tile, extent, buffer) { + + var features = tile.source; + if (features.length !== 1) return false; + + var feature = features[0]; + if (feature.type !== 3 || feature.geometry.length > 1) return false; + + var len = feature.geometry[0].length; + if (len !== 5) return false; + + for (var i = 0; i < len; i++) { + var p = transform.point(feature.geometry[0][i], extent, tile.z2, tile.x, tile.y); + if ((p[0] !== -buffer && p[0] !== extent + buffer) || + (p[1] !== -buffer && p[1] !== extent + buffer)) return false; + } + + return true; +} diff --git a/src/geojson-vt/simplify.js b/src/geojson-vt/simplify.js new file mode 100644 index 00000000..2e55972e --- /dev/null +++ b/src/geojson-vt/simplify.js @@ -0,0 +1,72 @@ +'use strict'; + +// calculate simplification data using optimized Douglas-Peucker algorithm + +function simplify(points, tolerance) { + + var sqTolerance = tolerance * tolerance, + len = points.length, + first = 0, + last = len - 1, + stack = [], + i, maxSqDist, sqDist, index; + + // always retain the endpoints (1 is the max value) + points[first][2] = 1; + points[last][2] = 1; + + // avoid recursion by using a stack + while (last) { + + maxSqDist = 0; + + for (i = first + 1; i < last; i++) { + sqDist = getSqSegDist(points[i], points[first], points[last]); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + points[index][2] = maxSqDist; // save the point importance in squared pixels as a z coordinate + stack.push(first); + stack.push(index); + first = index; + + } else { + last = stack.pop(); + first = stack.pop(); + } + } +} + +// square distance from a point to a segment +function getSqSegDist(p, a, b) { + + var x = a[0], y = a[1], + bx = b[0], by = b[1], + px = p[0], py = p[1], + dx = bx - x, + dy = by - y; + + if (dx !== 0 || dy !== 0) { + + var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); + + if (t > 1) { + x = bx; + y = by; + + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = px - x; + dy = py - y; + + return dx * dx + dy * dy; +} diff --git a/src/geojson-vt/tile.js b/src/geojson-vt/tile.js new file mode 100644 index 00000000..764d5385 --- /dev/null +++ b/src/geojson-vt/tile.js @@ -0,0 +1,83 @@ +'use strict'; + +function createTile(features, z2, tx, ty, tolerance, noSimplify) { + var tile = { + features: [], + numPoints: 0, + numSimplified: 0, + numFeatures: 0, + source: null, + x: tx, + y: ty, + z2: z2, + transformed: false, + min: [2, 1], + max: [-1, 0] + }; + for (var i = 0; i < features.length; i++) { + tile.numFeatures++; + addFeature(tile, features[i], tolerance, noSimplify); + + var min = features[i].min, + max = features[i].max; + + if (min[0] < tile.min[0]) tile.min[0] = min[0]; + if (min[1] < tile.min[1]) tile.min[1] = min[1]; + if (max[0] > tile.max[0]) tile.max[0] = max[0]; + if (max[1] > tile.max[1]) tile.max[1] = max[1]; + } + return tile; +} + +function addFeature(tile, feature, tolerance, noSimplify) { + + var geom = feature.geometry, + type = feature.type, + simplified = [], + sqTolerance = tolerance * tolerance, + i, j, ring, p; + + if (type === 1) { + for (i = 0; i < geom.length; i++) { + simplified.push(geom[i]); + tile.numPoints++; + tile.numSimplified++; + } + + } else { + + // simplify and transform projected coordinates for tile geometry + for (i = 0; i < geom.length; i++) { + ring = geom[i]; + + // filter out tiny polylines & polygons + if (!noSimplify && ((type === 2 && ring.dist < tolerance) || + (type === 3 && ring.area < sqTolerance))) { + tile.numPoints += ring.length; + continue; + } + + var simplifiedRing = []; + + for (j = 0; j < ring.length; j++) { + p = ring[j]; + // keep points with importance > tolerance + if (noSimplify || p[2] > sqTolerance) { + simplifiedRing.push(p); + tile.numSimplified++; + } + tile.numPoints++; + } + + simplified.push(simplifiedRing); + } + } + + if (simplified.length) { + tile.features.push({ + geometry: simplified, + type: type, + tags: feature.tags || null + }); + } +} diff --git a/src/geojson-vt/transform.js b/src/geojson-vt/transform.js new file mode 100644 index 00000000..fe93e947 --- /dev/null +++ b/src/geojson-vt/transform.js @@ -0,0 +1,38 @@ +'use strict'; + +// Transforms the coordinates of each feature in the given tile from +// mercator-projected space into (extent x extent) tile space. +function transformTile(tile, extent) { + if (tile.transformed) return tile; + + var z2 = tile.z2, + tx = tile.x, + ty = tile.y, + i, j, k; + + for (i = 0; i < tile.features.length; i++) { + var feature = tile.features[i], + geom = feature.geometry, + type = feature.type; + + if (type === 1) { + for (j = 0; j < geom.length; j++) geom[j] = transformPoint(geom[j], extent, z2, tx, ty); + + } else { + for (j = 0; j < geom.length; j++) { + var ring = geom[j]; + for (k = 0; k < ring.length; k++) ring[k] = transformPoint(ring[k], extent, z2, tx, ty); + } + } + } + + tile.transformed = true; + + return tile; +} + +function transformPoint(p, extent, z2, tx, ty) { + var x = Math.round(extent * (p[0] * z2 - tx)), + y = Math.round(extent * (p[1] * z2 - ty)); + return [x, y]; +} diff --git a/src/geojson-vt/wrap.js b/src/geojson-vt/wrap.js new file mode 100644 index 00000000..7d9b243a --- /dev/null +++ b/src/geojson-vt/wrap.js @@ -0,0 +1,59 @@ +'use strict'; + +const clip = imports.geojsonvt.clip.clip; + +function wrap(features, buffer, intersectX) { + var merged = features, + left = clip(features, 1, -1 - buffer, buffer, 0, intersectX, -1, 2), // left world copy + right = clip(features, 1, 1 - buffer, 2 + buffer, 0, intersectX, -1, 2); // right world copy + + if (left || right) { + merged = clip(features, 1, -buffer, 1 + buffer, 0, intersectX, -1, 2); // center world copy + + if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center + if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center + } + + return merged; +} + +function shiftFeatureCoords(features, offset) { + var newFeatures = []; + + for (var i = 0; i < features.length; i++) { + var feature = features[i], + type = feature.type; + + var newGeometry; + + if (type === 1) { + newGeometry = shiftCoords(feature.geometry, offset); + } else { + newGeometry = []; + for (var j = 0; j < feature.geometry.length; j++) { + newGeometry.push(shiftCoords(feature.geometry[j], offset)); + } + } + + newFeatures.push({ + geometry: newGeometry, + type: type, + tags: feature.tags, + min: [feature.min[0] + offset, feature.min[1]], + max: [feature.max[0] + offset, feature.max[1]] + }); + } + + return newFeatures; +} + +function shiftCoords(points, offset) { + var newPoints = []; + newPoints.area = points.area; + newPoints.dist = points.dist; + + for (var i = 0; i < points.length; i++) { + newPoints.push([points[i][0] + offset, points[i][1], points[i][2]]); + } + return newPoints; +} diff --git a/src/gfx.js b/src/gfx.js new file mode 100644 index 00000000..8f6ce6a4 --- /dev/null +++ b/src/gfx.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Color = imports.color; + +/** + * Draws a colored badged with rounded corners and an optional outline. + * + * cr: A Cairo context to draw into + * bgColor: The fill color to draw the background with, represented as + * a string with 8-bit HEX-encoded RGB values + * outlineColor: The color to use for the outline, or null if no outline + * x: pixel offset for x-coord of top-left corner of bounding box + * y: pixel offset for y-coord of top-left corner of bounding box + * width: The width to draw the badge + * height: The height to draw the badge + */ +function drawColoredBagde(cr, bgColor, outlineColor, x, y, width, height) { + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let radius = outlineColor ? 5 : 3; + + cr.newSubPath(); + cr.arc(width - radius + x, radius + y, radius, -Math.PI / 2, 0); + cr.arc(width - radius + x, height - radius + y, radius, 0 , Math.PI / 2); + cr.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI); + cr.arc(radius + x, radius + y, radius, Math.PI, 3 * Math.PI / 2); + cr.closePath(); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.fillPreserve(); + + if (outlineColor) { + let outlineRed = Color.parseColor(outlineColor, 0); + let outlineGreen = Color.parseColor(outlineColor, 1); + let outlineBlue = Color.parseColor(outlineColor, 2); + + cr.setSourceRGB(outlineRed, outlineGreen, outlineBlue); + cr.setLineWidth(1); + cr.stroke(); + } +} diff --git a/src/gpxShapeLayer.js b/src/gpxShapeLayer.js new file mode 100644 index 00000000..e3a23b99 --- /dev/null +++ b/src/gpxShapeLayer.js @@ -0,0 +1,52 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var GpxShapeLayer = GObject.registerClass( +class GpxShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.gpx(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +GpxShapeLayer.mimeTypes = ['application/gpx+xml' ]; +GpxShapeLayer.displayName = 'GPX'; +GpxShapeLayer.createInstance = function(params) { + return new GpxShapeLayer(params); +}; diff --git a/src/graphHopper.js b/src/graphHopper.js new file mode 100644 index 00000000..41d6bc43 --- /dev/null +++ b/src/graphHopper.js @@ -0,0 +1,269 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Mainloop = imports.mainloop; +const Soup = imports.gi.Soup; + +const EPAF = imports.epaf; +const HTTP = imports.http; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; + +/** + * Directional sign from the GraphHopper API. + * https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md + */ +var Sign = { + KEEP_LEFT: -7, + TURN_SHARP_LEFT: -3, + TURN_LEFT: -2, + TURN_SLIGHT_LEFT: -1, + CONTINUE_ON_STREET: 0, + TURN_SLIGHT_RIGHT: 1, + TURN_RIGHT: 2, + TURN_SHARP_RIGHT: 3, + FINISH: 4, + REACHED_VIA: 5, + USE_ROUNDABOUT: 6, + KEEP_RIGHT: 7 +} + +var GraphHopper = class GraphHopper { + + get route() { + return this._route; + } + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._key = "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP"; + this._baseURL = "https://graphhopper.com/api/1/route?"; + this._locale = GLib.get_language_names()[0]; + this._route = new Route.Route(); + this.storedRoute = null; + this._query = params.query; + } + + _updateFromStored() { + Mainloop.idle_add(() => { + if (!this.storedRoute) + return; + + this.route.update({ path: this.storedRoute.path, + turnPoints: this.storedRoute.turnPoints, + distance: this.storedRoute.distance, + time: this.storedRoute.time, + bbox: this.storedRoute.bbox }); + this.storedRoute = null; + }); + } + + _queryGraphHopper(points, transportationType, callback) { + let url = this._buildURL(points, transportationType); + let msg = Soup.Message.new('GET', url); + this._session.queue_message(msg, (session, message) => { + try { + let result = this._parseMessage(message); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + callback(null, e); + } + }); + } + + fetchRoute(points, transportationType) { + if (this.storedRoute) { + this._updateFromStored(); + return; + } + + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (exception) { + Utils.debug(exception); + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("Route request failed.")); + } else { + if (!result) { + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("No route found.")); + } else { + let route = this._createRoute(result.paths[0]); + this.route.update(route); + } + } + }); + } + + fetchRouteAsync(points, transportationType, callback) { + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (result) { + let route = this._createRoute(result.paths[0]); + callback(route, exception); + } else { + callback(null, exception); + } + }); + } + + _buildURL(points, transportation) { + let locations = points.map(function(point) { + return [point.place.location.latitude, point.place.location.longitude].join(','); + }); + let vehicle = RouteQuery.Transportation.toString(transportation); + let query = new HTTP.Query({ type: 'json', + key: this._key, + vehicle: vehicle, + locale: this._locale, + point: locations, + debug: Utils.debugEnabled + }); + let url = this._baseURL + query.toString(); + Utils.debug("Sending route request to: " + url); + return url; + } + + _parseMessage({ status_code, response_body, uri }) { + if (status_code === 500) { + log("Internal server error.\n" + + "This is most likely a bug in GraphHopper"); + log("Please file a bug at " + + "https://github.com/graphhopper/graphhopper/issues\n" + + "with the the following Graphopper request URL included:\n"); + log(uri.to_string(false)); + } + if (status_code !== 200) + return null; + + let result = JSON.parse(response_body.data); + + if (!Array.isArray(result.paths)) { + Utils.debug("No route found"); + if (result.info && Array.isArray(result.info.errors)) { + result.info.errors.forEach(({ message, details }) => { + Utils.debug("Message: " + message); + Utils.debug("Details: " + details); + }); + } + return null; + } + + return result; + } + + _createRoute(route) { + let path = EPAF.decode(route.points); + let turnPoints = this._createTurnPoints(path, route.instructions); + let bbox = new Champlain.BoundingBox(); + + // GH does lonlat-order and Champlain latlon-order + bbox.extend(route.bbox[1], route.bbox[0]); + bbox.extend(route.bbox[3], route.bbox[2]); + + return { path: path, + turnPoints: turnPoints, + distance: route.distance, + time: route.time, + bbox: bbox }; + } + + _createTurnPoints(path, instructions) { + let via = 0; + let startPoint = new Route.TurnPoint({ + coordinate: path[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let rest = this._foldInstructions(instructions).map((instr) => { + let type = this._createTurnPointType(instr.sign); + let text = instr.text; + if (type === Route.TurnPointType.VIA) { + via++; + let viaPlace = this._query.filledPoints[via].place; + text = viaPlace.name || instr.text; + } + return new Route.TurnPoint({ + coordinate: path[instr.interval[0]], + type: type, + distance: instr.distance, + instruction: text, + time: instr.time, + turnAngle: instr.turn_angle + }); + }); + return [startPoint].concat(rest); + } + + _foldInstructions(instructions) { + let currInstruction = instructions[0]; + let res = []; + + for (let i = 1; i < instructions.length; i++) { + let newInstruction = instructions[i]; + let newSign = newInstruction.sign; + let newStreetname = newInstruction.street_name; + + /* if the direction is to continue straight, or keep left or keep + * right on the same street/road number, fold the instruction into + * the previous one + */ + if (newSign === Sign.CONTINUE_ON_STREET || + ((newSign === Sign.KEEP_LEFT || newSign === Sign.KEEP_RIGHT) && + newStreetname === currInstruction.street_name)) { + currInstruction.distance += newInstruction.distance; + } else { + res.push(currInstruction); + currInstruction = instructions[i]; + } + } + + // push finish instruction + res.push(instructions[instructions.length - 1]); + + return res; + } + + _createTurnPointType(sign) { + let type = sign + 3; + let min = Route.TurnPointType.SHARP_LEFT; + let max = Route.TurnPointType.ROUNDABOUT; + if (min <= type && type <= max) + return type; + else + return undefined; + } +}; diff --git a/src/graphHopperGeocode.js b/src/graphHopperGeocode.js new file mode 100644 index 00000000..e63877e4 --- /dev/null +++ b/src/graphHopperGeocode.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var GraphHopperGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().graphHopperGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().graphHopperGeocode.attributionUrl; + } + + get name() { + return 'GraphHopper Geocode'; + } + + get url() { + return 'https://docs.graphhopper.com/#tag/Geocoding-API'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let hits = json.hits; + + if (!hits || hits.length === 0) { + Utils.debug('No hits in response'); + return null; + } + + hits.forEach(hit => { + let place = this._parseHit(hit); + + if (place) + result.push(place); + }); + + return result; + } + + _parseHit(hit) { + let lat = hit.point.lat; + let lon = hit.point.lng; + + return PhotonParser.parsePlace(lat, lon, hit); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ point: latitude + ',' + longitude, + limit: string ? this._limit : 1, + locale: this._language, + key: this._apiKey + }); + if (string) + query.add('q', string); + else + query.add('reverse', 'true'); + + return Format.vprintf('%s/api/1/geocode?%s', [this._baseUrl, + query.toString()]); + } + + _readService() { + let graphHopperGeocode = Service.getService().graphHopperGeocode; + this._language = Utils.getLanguage(); + + if (graphHopperGeocode) { + this._baseUrl = graphHopperGeocode.baseUrl; + this._apiKey = graphHopperGeocode.apiKey; + } + } +} diff --git a/src/graphHopperTransit.js b/src/graphHopperTransit.js new file mode 100644 index 00000000..7fa927e9 --- /dev/null +++ b/src/graphHopperTransit.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utilities to use GraphHopper to perform walking routes for use in + * transit itineraries, for plugins not natively supporting turn-by-turn + * routing for walking legs + */ + +const Champlain = imports.gi.Champlain; + +const Application = imports.application; +const Location = imports.location; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const TransitPlan = imports.transitPlan; + +/* Creates a new walking leg given start and end places, and a route + * obtained from GraphHopper. If the route is undefined (which happens if + * GraphHopper failed to obtain a walking route, approximate it with a + * straight line. */ +function createWalkingLeg(from, to, fromName, toName, route) { + let fromLocation = from.place.location; + let toLocation = to.place.location; + let fromCoordinate = [fromLocation.latitude, fromLocation.longitude]; + let toCoordinate = [toLocation.latitude, toLocation.longitude]; + let polyline = route ? route.path : + createStraightPolyline(fromLocation, toLocation); + let distance = route ? route.distance : + fromLocation.get_distance_from(toLocation) * 1000; + /* as an estimate for approximated straight-line walking legs, + * assume a speed of 1 m/s to allow some extra time */ + let duration = route ? route.time / 1000 : distance; + let walkingInstructions = route ? route.turnPoints : null; + + return new TransitPlan.Leg({ fromCoordinate: fromCoordinate, + toCoordinate: toCoordinate, + from: fromName, + to: toName, + isTransit: false, + polyline: polyline, + duration: duration, + distance: distance, + walkingInstructions: walkingInstructions }); +} + +// create a straight-line "as the crow flies" polyline between two places +function createStraightPolyline(fromLoc, toLoc) { + return [new Champlain.Coordinate({ latitude: fromLoc.latitude, + longitude: fromLoc.longitude }), + new Champlain.Coordinate({ latitude: toLoc.latitude, + longitude: toLoc.longitude })]; +} + +var _walkingRoutes = []; + +/* fetches walking route and stores the route for the given coordinate + * pair to avoid requesting the same route over and over from GraphHopper + */ +function fetchWalkingRoute(points, callback) { + let index = points[0].place.location.latitude + ',' + + points[0].place.location.longitude + ';' + + points[1].place.location.latitude + ',' + + points[1].place.location.longitude; + let route = _walkingRoutes[index]; + + if (!route) { + Application.routingDelegator.graphHopper.fetchRouteAsync(points, + RouteQuery.Transportation.PEDESTRIAN, + (newRoute) => { + _walkingRoutes[index] = newRoute; + callback(newRoute); + }); + } else { + callback(route); + } +} + +// create a query point from a bare coordinate (lat, lon pair) +function createQueryPointForCoord(coord) { + let location = new Location.Location({ latitude: coord[0], + longitude: coord[1], + accuracy: 0 }); + let place = new Place.Place({ location: location }); + let point = new RouteQuery.QueryPoint(); + + point.place = place; + return point; +} + +/** + * Refine itineraries with walking legs retrieved from GraphHopper. + * Intended for use by transit plugins where the source API doesn't give + * full walking turn-by-turn routing + */ +function addWalkingToItineraries(itineraries, callback) { + _addWalkingToItinerariesRecursive(itineraries, 0, callback); +} + +function _addWalkingToItinerariesRecursive(itineraries, index, callback) { + if (index === itineraries.length) { + callback(); + } else { + let itinerary = itineraries[index]; + + _addWalkingToLegsRecursive(itinerary.legs, 0, () => { + _addWalkingToItinerariesRecursive(itineraries, index + 1, callback); + }); + } +} + +function _addWalkingToLegsRecursive(legs, index, callback) { + if (index === legs.length) { + callback(); + } else { + let leg = legs[index]; + + if (!leg.transit) { + let from = createQueryPointForCoord(leg.fromCoordinate); + let to = createQueryPointForCoord(leg.toCoordinate); + + fetchWalkingRoute([from, to], (route) => { + if (route) { + let duration = route.time / 1000; + + /* for walking legs not in the start or end + * only replace with the retrieved one if it's not + * longer in duration that the previous (straight-line) + * one. + */ + if (index === 0 || index === legs.length - 1 || + duration <= leg.duration) { + leg.distance = route.distance; + leg.walkingInstructions = route.turnPoints; + leg.polyline = route.path; + } + } + + _addWalkingToLegsRecursive(legs, index + 1, callback); + }); + } else { + _addWalkingToLegsRecursive(legs, index + 1, callback); + } + } +} diff --git a/src/headerBar.js b/src/headerBar.js new file mode 100644 index 00000000..fed6569c --- /dev/null +++ b/src/headerBar.js @@ -0,0 +1,95 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const FavoritesPopover = imports.favoritesPopover; +const LayersPopover = imports.layersPopover; +const MapView = imports.mapView; + +var HeaderBarLeft = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-left.ui', + InternalChildren: [ 'layersButton' ] +}, class HeaderBarLeft extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._layersPopover = new LayersPopover.LayersPopover({ + mapView: this._mapView + }); + this._layersButton.popover = this._layersPopover; + + this._application.connect('notify::connected', () => { + let app = this._application; + this._layersButton.sensitive = app.connected; + }); + } + + popdownLayersPopover() { + this._layersPopover.popdown(); + } +}); + +var HeaderBarRight = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-right.ui', + InternalChildren: [ 'toggleSidebarButton', + 'favoritesButton', + 'printRouteButton' ] +}, class HeaderBarRight extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._favoritesButton.popover = new FavoritesPopover.FavoritesPopover({ + mapView: this._mapView + }); + let favoritesPopover = this._favoritesButton.popover; + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + favoritesPopover.connect('notify::rows', () => { + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + }); + + this._mapView.bind_property('routeShowing', this._printRouteButton, + 'visible', GObject.BindingFlags.DEFAULT); + + this._application.connect('notify::connected', () => { + let app = this._application; + + this._toggleSidebarButton.sensitive = app.connected; + this._favoritesButton.sensitive = (app.connected && + favoritesPopover.rows > 0); + this._printRouteButton.sensitive = app.connected; + }); + } +}); diff --git a/src/http.js b/src/http.js new file mode 100644 index 00000000..8d853fee --- /dev/null +++ b/src/http.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Soup = imports.gi.Soup; + +function encode(data) { + if(data === null) + return null; + + return Soup.URI.encode(data.toString(), '&'); +} + +var Query = class Query { + + constructor(obj) { + this._query = {}; + for(let key in obj) { + this.add(key, obj[key]); + } + } + + // a value === null represents an empty value + add(key, value) { + // Initialize query field if it isn't already + let queryValue = this._query[key]; + if(!Array.isArray(queryValue)) + this._query[key] = []; + + if(Array.isArray(value)) + this._query[key] = this._query[key].concat(value); + else + this._query[key].push(value); + } + + /** + * Get the query parameters in string form. + * If useArrayNotation is given, and true, use array notation adding [] + * after key if there's multiple values for that key. + */ + toString(useArrayNotation = false) { + let vars = []; + for(let key in this._query) { + let values = this._query[key]; + let multipleValues = values.length > 1; + let encKey = encode(key) + (multipleValues && useArrayNotation ? + '[]' : ''); + + values.forEach(function(value) { + let encValue = encode(value); + if(encValue !== null) + vars.push([encKey, encValue].join('=')); + else + vars.push(encKey); + }); + } + return vars.join('&'); + } +}; diff --git a/src/hvt.js b/src/hvt.js new file mode 100644 index 00000000..810b1ad4 --- /dev/null +++ b/src/hvt.js @@ -0,0 +1,249 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Extended route types using HVT (Hierarchical Vehicle Type) codes from + * the European TPEG standard. + * https://support.google.com/transitpartners/answer/3520902 + */ + +/* when adding an additional constant here, make sure to edit the LAST_ + * constant for the corresponding block + */ + +// rail services +var RAILWAY_SERVICE = 100; +var HIGH_SPEED_RAIL_SERVICE = 101; +var LONG_DISTANCE_TRAINS = 102; +var INTER_REGIONAL_RAIL_SERVICE = 103; +var CAR_TRANSPORT_RAIL_SERVICE = 104; +var SLEEPER_RAIL_SERVICE = 105; +var REGIONAL_RAIL_SERVICE = 106; +var TOURIST_RAILWAY_SERVICE = 107; +var RAIL_SHUTTLE = 108; +var SUBURBAN_RAILWAY = 109; +var REPLACEMENT_RAIL_SERVICE = 110; +var SPECIAL_RAIL_SERVICE = 111; +var LORRY_TRANSPORT_RAIL_SERVICE = 112; +var ALL_RAIL_SERVICES = 113; +var CROSS_COUNTRY_RAIL_SERVICE = 114; +var VEHICLE_TRANSPORT_RAIL_SERVICE = 115; +var RACK_AND_PINION_RAILWAY = 116; +var ADDITIONAL_RAIL_SERVICE = 117; +var LAST_RAIL_SERVICE = ADDITIONAL_RAIL_SERVICE; + +// coach services +var COACH_SERVICE = 200; +var INTERNATIONAL_COACH_SERVICE = 201; +var NATIONAL_COACH_SERVICE = 202; +var SHUTTLE_COACH_SERVICE = 203; +var REGIONAL_COACH_SERVICE = 204; +var SPECIAL_COACH_SERVICE = 205; +var SIGHTSEEING_COACH_SERVICE = 206; +var TOURIST_COACH_SERVICE = 207; +var COMMUTER_COACH_SERVICE = 208; +var ALL_COACH_SERVICES = 209; +var LAST_COACH_SERVICE = ALL_COACH_SERVICES; + +/// suburban railway services +var SUBURBAN_RAILWAY_SERVICE = 300; + +// urban railway services +var URBAN_RAILWAY_SERVICE = 400; +var URBAN_METRO_SERVICE = 401; +var URBAN_UNDERGROUND_SERVICE = 402; +// this constant has the same name as 400 in the specification +var URBAN_RAILWAY_SERVICE_2 = 403; +var ALL_URBAN_RAILWAY_SERVICES = 404; +var MONORAIL = 405; +var LAST_URBAN_RAILWAY_SERVICE = MONORAIL; + +// metro services +var METRO_SERVICE = 500; + +// underground services +var UNDERGROUND_SERVICE = 600; + +// bus services +var BUS_SERVICE = 700; +var REGIONAL_BUS_SERVICE = 701; +var EXPRESS_BUS_SERVICE = 702; +var STOPPING_BUS_SERVICE = 703; +var LOCAL_BUS_SERVICE = 704; +var NIGHT_BUS_SERVICE = 705; +var POST_BUS_SERVICE = 706; +var SPECIAL_NEEDS_BUS_SERVICE = 707; +var MOBILITY_BUS_SERVICE = 708; +var MOBILITY_BUS_SERVICE_FOR_REGISTERED_DISABLED = 709; +var SIGHTSEEING_BUS = 710; +var SHUTTLE_BUS = 711; +var SCHOOL_BUS = 712; +var SCHOOL_AND_PUBLIC_SERVICE_BUS_SERVICE = 713; +var RAIL_REPLACEMENT_BUS_SERVICE = 714; +var DEMAND_AND_RESPONSE_BUS_SERVICE = 715; +var ALL_BUS_SERVICES = 716; +var LAST_BUS_SERVICE = ALL_BUS_SERVICES; + +// trolleybus services +var TROLLEYBUS_SERVICE = 800; + +// tram services +var TRAM_SERVICE = 900; +var CITY_TRAM_SERVICE = 901; +var LOCAL_TRAM_SERVICE = 902; +var REGIONAL_TRAM_SERVICE = 903; +var SIGHTSEEING_TRAM_SERVICE = 904; +var SHUTTLE_TRAM_SERVICE = 905; +var ALL_TRAM_SERVICES = 906; +var LAST_TRAM_SERVICE = ALL_TRAM_SERVICES; + +// water transport services +var WATER_TRANSPORT_SERVICE = 1000; +var INTERNATIONAL_CAR_FERRY_SERVICE = 1001; +var NATIONAL_CAR_FERRY_SERVICE = 1002; +var REGIONAL_CAR_FERRY_SERVICE = 1003; +var LOCAL_CAR_FERRY_SERVICE = 1004; +var INTERNATIONAL_PASSENGER_FERRY_SERVICE = 1005; +var NATIONAL_PASSENGER_FERRY_SERVICE = 1006; +var REGIONAL_PASSENGER_FERRY_SERVICE = 1007; +var LOCAL_PASSENGER_FERRY_SERVICE = 1008; +var POST_BOAT_SERVICE = 1009; +var TRAIN_FERRY_SERVICE = 1010; +var ROAD_LINK_FERRY_SERVICE = 1011; +var AIRPORT_LINK_FERRY_SERVICE = 1012; +var CAR_HIGH_SPEED_FERRY_SERVICE = 1013; +var PASSENGER_HIGH_SPEED_FERRY_SERVICE = 1014; +var SIGHTSEEING_BOAT_SERVICE = 1015; +var SCHOOL_BOAT = 1016; +var CABLE_DRAWN_BOAT_SERVICE = 1017; +var RIVER_BUS_SERVICE = 1018; +var SCHEDULED_FERRY_SERVICE = 1019; +var SHUTTLE_FERRY_SERVICE = 1020; +var ALL_WATER_TRANSPORT_SERVICE = 1021; +var LAST_WATER_TRANSPORT_SERVICE = ALL_WATER_TRANSPORT_SERVICE; + +// air service +var AIR_SERVICE = 1100; +var INTERNATIONAL_AIR_SERVICE = 1101; +var DOMESTIC_AIR_SERVICE = 1102; +var INTERCONTINENTAL_AIR_SERVICE = 1103; +var DOMESTIC_SCHEDULED_AIR_SERVICE = 1104; +var SHUTTLE_AIR_SERVICE = 1105; +var INTERCONTINENTAL_CHARTER_AIR_SERVICE = 1106; +var INTERNATIONAL_CHARTER_AIR_SERVICE = 1107; +var ROUND_TRIP_CHARTER_AIR_SERVICE = 1108; +var SIGHTSEEING_AIR_SERVICE = 1109; +var HELICOPTER_AIR_SERVICE = 1110; +var DOMESTIC_CHARTER_AIR_SERVICE = 1111; +var SCHENGEN_AREA_AIR_SERVICE = 1112; +var AIRSHIP_SERVICE = 1113; +var ALL_AIR_SERVICES = 1114; +var LAST_AIR_SERVICE = ALL_AIR_SERVICES; + +// ferry services +var FERRY_SERVICE = 1200; + +// telecabin services +var TELECABIN_SERVICE = 1300; +var TELECABIN_SERVICES = 1301; +// renamed this to not be confused with the tram-like street level cable cars +var TELECABIN_CABLE_CAR_SERVICE = 1302; +var ELEVATOR_SERVICE = 1303; +var CHAIR_LIFT_SERVICE = 1304; +var DRAG_LIFT_SERVICE = 1305; +var SMALL_TELECABIN_SERVICE = 1306; +var ALL_TELECABIN_SERVICES = 1307; +var LAST_TELECABIN_SERVICE = ALL_TELECABIN_SERVICES; + +// funicular services +var FUNICULAR_SERVICE = 1400; +var FUNICULAR_SERVICE_2 = 1401; +var ALL_FUNICULAR_SERVICES = 1402; +var LAST_FUNICULAR_SERVICE = ALL_FUNICULAR_SERVICES; + +// taxi services +var TAXI_SERVICE = 1500; +var COMMUNAL_TAXI_SERVICE = 1501; +var WATER_TAXI_SERVICE = 1502; +var RAIL_TAXI_SERVICE = 1503; +var BIKE_TAXI_SERVICE = 1504; +var LICENSED_TAXI_SERVICE = 1505; +var PRIVATE_HIRE_SERVICE_VEHICLE = 1506; +var ALL_TAXI_SERVICES = 1507; +var LAST_TAXI_SERVICE = ALL_TAXI_SERVICES; + +// self drive +var SELF_DRIVE = 1600; +var HIRE_CAR = 1601; +var HIRE_VAN = 1602; +var HIRE_MOTORBIKE = 1603; +var HIRE_CYCLE = 1604; +var LAST_SELF_DRIVE = HIRE_CYCLE; + +// misc. service +var MISCELLANEOUS_SERVICE = 1700; +var CABLE_CAR = 1701; +var HORSE_DRAWN_CARRIAGE = 1702; +var LAST_MISCELLANEOUS_SERVCE = HORSE_DRAWN_CARRIAGE; + +/** + * returns the super type of a given HVT type code, or -1 if the supplied code + * is not among the defined codes + */ +function supertypeOf(type) { + if (type >= RAILWAY_SERVICE && type <= LAST_RAIL_SERVICE) + return RAILWAY_SERVICE; + else if (type >= COACH_SERVICE && type <= LAST_COACH_SERVICE) + return COACH_SERVICE; + else if (type == SUBURBAN_RAILWAY_SERVICE) + return SUBURBAN_RAILWAY_SERVICE; + else if (type >= URBAN_RAILWAY_SERVICE && type <= LAST_URBAN_RAILWAY_SERVICE) + return URBAN_RAILWAY_SERVICE; + else if (type == METRO_SERVICE) + return METRO_SERVICE; + else if (type == UNDERGROUND_SERVICE) + return UNDERGROUND_SERVICE; + else if (type >= BUS_SERVICE && type <= LAST_BUS_SERVICE) + return BUS_SERVICE; + else if (type == TROLLEYBUS_SERVICE) + return TROLLEYBUS_SERVICE; + else if (type >= TRAM_SERVICE && type <= LAST_TRAM_SERVICE) + return TRAM_SERVICE; + else if (type >= WATER_TRANSPORT_SERVICE && + type <= LAST_WATER_TRANSPORT_SERVICE) + return WATER_TRANSPORT_SERVICE; + else if (type >= AIR_SERVICE && type <= LAST_AIR_SERVICE) + return AIR_SERVICE; + else if (type == FERRY_SERVICE) + return FERRY_SERVICE; + else if (type >= TELECABIN_SERVICE && type <= LAST_TELECABIN_SERVICE) + return TELECABIN_SERVICE; + else if (type >= FUNICULAR_SERVICE && type <= LAST_FUNICULAR_SERVICE) + return FUNICULAR_SERVICE; + else if (type >= TAXI_SERVICE && type <= LAST_TAXI_SERVICE) + return TAXI_SERVICE; + else if (type >= SELF_DRIVE && type <= LAST_SELF_DRIVE) + return SELF_DRIVE; + else if (type >= MISCELLANEOUS_SERVICE && type <= LAST_MISCELLANEOUS_SERVCE) + return MISCELLANEOUS_SERVICE; + else + return -1; +} diff --git a/src/instructionRow.js b/src/instructionRow.js new file mode 100644 index 00000000..f8f4cdc9 --- /dev/null +++ b/src/instructionRow.js @@ -0,0 +1,68 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Utils = imports.utils; + +var InstructionRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/instruction-row.ui', + InternalChildren: [ 'directionImage', + 'instructionLabel', + 'distanceLabel' ] +}, class InstructionRow extends Gtk.ListBoxRow { + + _init(params) { + this.turnPoint = params.turnPoint; + delete params.turnPoint; + + this._hasColor = params.hasColor; + delete params.hasColor; + + let lines = params.lines; + delete params.lines; + + super._init(params); + + if (lines) + this._instructionLabel.lines = lines; + + this._instructionLabel.label = this.turnPoint.instruction; + + /* + * The SVG icons for turn point stops has the color red, but has + * the suffix '-symbolic'. So when loading through GtkImage it will have + * the proper GtkIconLookupflags to re-color the icon as symbolic. + * When we load the PixBuf from the SVG ourself, we get the color. + */ + if (this._hasColor) { + let theme = Gtk.IconTheme.get_default(); + let iconName = this.turnPoint.iconName; + this._directionImage.pixbuf = theme.load_icon(iconName, 0, 0); + } else { + this._directionImage.icon_name = this.turnPoint.iconName; + } + + if (this.turnPoint.distance > 0) + this._distanceLabel.label = Utils.prettyDistance(this.turnPoint.distance); + } +}); diff --git a/src/kmlShapeLayer.js b/src/kmlShapeLayer.js new file mode 100644 index 00000000..c7ef0a1f --- /dev/null +++ b/src/kmlShapeLayer.js @@ -0,0 +1,51 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var KmlShapeLayer = GObject.registerClass( +class KmlShapeLayer extends ShapeLayer.ShapeLayer { + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.kml(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +KmlShapeLayer.mimeTypes = ['application/vnd.google-earth.kml+xml']; +KmlShapeLayer.displayName = 'KML'; +KmlShapeLayer.createInstance = function(params) { + return new KmlShapeLayer(params); +}; diff --git a/src/layersPopover.js b/src/layersPopover.js new file mode 100644 index 00000000..3f80f93c --- /dev/null +++ b/src/layersPopover.js @@ -0,0 +1,266 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Gdk = imports.gi.Gdk; + +const Application = imports.application; +const MapSource = imports.mapSource; +const MapView = imports.mapView; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +const PREVIEW_WIDTH = 180; +const PREVIEW_HEIGHT = 80; + +var ShapeLayerRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-row.ui', + Children: ['closeButton'], + InternalChildren: ['layerLabel', 'visibleButton'] +}, class ShapeLayerRow extends Gtk.ListBoxRow { + + _init(params) { + this.shapeLayer = params.shapeLayer; + delete params.shapeLayer; + + super._init(params); + + this._layerLabel.label = this.shapeLayer.getName(); + this._layerLabel.tooltip_text = this.shapeLayer.file.get_parse_name(); + this._visibleButton.connect('clicked', () => { + let image = this._visibleButton.get_child(); + + this.shapeLayer.visible = !this.shapeLayer.visible; + this.activatable = this.shapeLayer.visible; + if (this.shapeLayer.visible) + image.icon_name = 'layer-visible-symbolic'; + else + image.icon_name = 'layer-not-visible-symbolic'; + }); + } +}); + +var LayersPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/layers-popover.ui', + InternalChildren: [ 'streetLayerButton', + 'aerialLayerButton', + 'streetLayerImage', + 'aerialLayerImage', + 'hybridAerialRevealer', + 'layersListBox', + 'loadLayerButton' ] +}, class LayersPopover extends Gtk.Popover { + + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init({ width_request: 200, + no_show_all: true, + transitions_enabled: false, + visible: false }); + + this._aerialLayerButton.join_group(this._streetLayerButton); + + this.get_style_context().add_class('maps-popover'); + + this._layersListBox.bind_model(this._mapView.shapeLayerStore, + this._listBoxCreateWidget.bind(this)); + this._layersListBox.connect('row-activated', (lb, row) => { + this._mapView.gotoBBox(row.shapeLayer.bbox); + }); + + this._layersListBox.set_header_func((row, before) => { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this._layerPreviews = { + street: { + source: MapSource.createStreetSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + } + }; + + if (Service.getService().tiles.streetDark) { + this._layerPreviews.streetDark = { + source: MapSource.createStreetDarkSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.aerial) { + this._layerPreviews.aerial = { + source: MapSource.createAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.hybridAerial) { + this._layerPreviews.hybridAerial = { + source: MapSource.createHybridAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + + // disable the map type switch buttons if aerial is unavailable + if (Service.getService().tiles.aerial) { + this._streetLayerButton.connect('clicked', () => { + if (this._streetLayerButton.active) { + this._mapView.setMapType(MapView.MapType.STREET); + } + }); + + this._aerialLayerButton.connect('clicked', () => { + if (this._aerialLayerButton.active) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + }); + + this._mapView.view.connect("notify::zoom-level", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::latitude", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::longitude", + this._setLayerPreviews.bind(this)); + Application.settings.connect("changed::night-mode", + this._onNightModeChanged.bind(this)); + Application.settings.connect("changed::hybrid-aerial", + this._onHybridAerialChanged.bind(this)); + + } else { + this._streetLayerButton.visible = false; + this._aerialLayerButton.visible = false; + } + + this.setMapType(this._mapView.getMapType()); + this._mapView.connect("map-type-changed", (_mapView, type) => { + this.setMapType(type); + }); + } + + _onNightModeChanged() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark', true); + } else { + this._setLayerPreviewImage('street', true); + } + } + + _onHybridAerialChanged() { + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial', true); + } else { + this._setLayerPreviewImage('aerial', true); + } + } + + _setLayerPreviews() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark'); + } else { + this._setLayerPreviewImage('street'); + } + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial'); + } else { + this._setLayerPreviewImage('aerial'); + } + } + + _setLayerPreviewImage(layer, forceUpdate = false) { + let previewInfo = this._layerPreviews[layer]; + let source = previewInfo.source; + let widget = previewInfo.widget; + + let z = this._mapView.view.zoom_level - 1; + if (z < 0) + z = 0; + let size = source.get_tile_size(); + let x = Math.floor(source.get_x(z, this._mapView.view.longitude) / size); + let y = Math.floor(source.get_y(z, this._mapView.view.latitude) / size); + + // If the view hasn't moved enough that the tile is different, + // then don't bother changing anything + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z && !forceUpdate) { + + return; + } + previewInfo.lastLocation = {x, y, z}; + + let tile = Champlain.Tile.new_full(x, y, size, z); + + tile.connect("render-complete", (a, b, c, error) => { + if (error) + return; // oh well + + // Make sure we're still at the same location + // This is especially important on slow connections + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z) { + + let pixbuf = Gdk.pixbuf_get_from_surface(tile.surface, + (size - PREVIEW_WIDTH) / 2, + (size - PREVIEW_HEIGHT) / 2, + PREVIEW_WIDTH, + PREVIEW_HEIGHT); + widget.set_from_pixbuf(pixbuf); + } + }); + + source.fill_tile(tile); + } + + setMapType(mapType) { + if (mapType === MapView.MapType.STREET) { + this._streetLayerButton.active = true; + this._hybridAerialRevealer.reveal_child = false; + } else if (mapType === MapView.MapType.AERIAL) { + this._aerialLayerButton.active = true; + if (Service.getService().tiles.hybridAerial) + this._hybridAerialRevealer.reveal_child = true; + } + } + + _onRemoveClicked(row) { + this._mapView.removeShapeLayer(row.shapeLayer); + if (this._layersListBox.get_children().length <= 0) + this._layersListBox.hide(); + } + + _listBoxCreateWidget(shapeLayer) { + let row = new ShapeLayerRow({ shapeLayer: shapeLayer }); + row.closeButton.connect('clicked', + () => this._onRemoveClicked(row)); + this._layersListBox.show(); + return row; + } +}); diff --git a/src/location.js b/src/location.js new file mode 100644 index 00000000..88427abc --- /dev/null +++ b/src/location.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Red Hat Inc. + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Authors: Zeeshan Ali (Khattak) + * Jonas Danielsson + */ + +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +/* Adds heading to Geocode.Location */ +var Location = GObject.registerClass( +class Location extends Geocode.Location { + + _init(params) { + this._heading = params.heading; + delete params.heading; + + super._init(params); + } + + get heading() { + return this._heading; + } + + set heading(v) { + this._heading = v; + } +}); diff --git a/src/locationServiceDialog.js b/src/locationServiceDialog.js new file mode 100644 index 00000000..4e459556 --- /dev/null +++ b/src/locationServiceDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2018 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +const _PRIVACY_PANEL = 'gnome-privacy-panel.desktop'; + +var LocationServiceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/location-service-dialog.ui', + InternalChildren: [ 'cancelButton', + 'settingsButton'], +}, class LocationServiceDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + this._settingsButton.connect('clicked', () => this._onSettings()); + this._cancelButton.connect('clicked', () => this._onCancel()); + } + + _onSettings() { + let privacyInfo = Gio.DesktopAppInfo.new(_PRIVACY_PANEL); + + try { + let display = Gdk.Display.get_default(); + + privacyInfo.launch([], display.get_app_launch_context()); + } catch(e) { + Utils.debug('launching privacy panel failed: ' + e); + } + + this.response(Gtk.ResponseType.OK); + } + + _onCancel() { + this.response(Gtk.ResponseType.CANCEL); + } +}); \ No newline at end of file diff --git a/src/longPrintLayout.js b/src/longPrintLayout.js new file mode 100644 index 00000000..3882f4e9 --- /dev/null +++ b/src/longPrintLayout.js @@ -0,0 +1,140 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; +const Route = imports.route; + +const _NUM_MINIMAPS = 5; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 0.57, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; +const _MiniMapView = { + SCALE_X: 0.4, + SCALE_Y: 0.20, + SCALE_MARGIN: 0.03, + ZOOM_LEVEL: 18 +}; + +var LongPrintLayout = GObject.registerClass( +class LongPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + 3 maps) + instructions */ + let totalSurfaces = 4 + this._route.turnPoints.length; + + /* Plus via points */ + this._route.turnPoints.forEach((turnPoint) => { + if (turnPoint.type === Route.TurnPointType.VIA) + totalSurfaces++; + }); + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let miniMapViewWidth = _MiniMapView.SCALE_X * this._pageWidth; + let miniMapViewHeight = _MiniMapView.SCALE_Y * this._pageHeight; + let miniMapViewMargin = _MiniMapView.SCALE_MARGIN * this._pageHeight; + let miniMapViewZoomLevel = _MiniMapView.ZOOM_LEVEL; + + let dy = 0; + let pointsLength = this._route.turnPoints.length; + + /* Fixed number of locations are plotted on minimaps which requires a + * check on instructions bound. Later on this can be made dynamic + * depending upon factors like total number of instructions, complexity + * of neighbourhood areas, etc. + * + * We currently have maps besides the instructions for: + * - the start location + * - via points in the route + * - the end location + * + * We include _NUM_MINIMAPS instructions per map, and have the map + * ensure the bounding box of those instructions. + * + * For the start location we include _NUM_MINIMAPS number of + * instruction, if available, from start. + * + * For via points we include _NUM_MINIMAPS / 2 number of instructions + * before and _NUM_MINIMAPS / 2 number of instructions after the + * via point. + * + * For the end location we include _NUM_MINIMAPS number of instructions + * leading up to the end location. + * + */ + let first = 0; + let last = Math.min(_NUM_MINIMAPS, pointsLength); + let points = this._createTurnPointArray(first, last); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + + /* x-cursor is increased temporarily for rendering instructions */ + let tmpX = this._cursorX; + for (let i = 0; i < this._route.turnPoints.length; i++) { + let turnPoint = this._route.turnPoints[i]; + + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._cursorX = tmpX + miniMapViewWidth + miniMapViewMargin; + this._drawInstruction(instructionWidth, instructionHeight, + turnPoint); + this._cursorY += dy; + + if (turnPoint.type === Route.TurnPointType.VIA) { + let tmpY = this._cursorY; + + first = Math.max(0, (i + 1) - (_NUM_MINIMAPS / 2)); + last = Math.min((i + 1) + (_NUM_MINIMAPS / 2), pointsLength); + points = this._createTurnPointArray(Math.floor(first), + Math.floor(last)); + this._cursorX = tmpX; + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + this._cursorY = tmpY; + } + } + this._cursorX = tmpX; + + first = Math.max(0, pointsLength - _NUM_MINIMAPS); + last = pointsLength; + points = this._createTurnPointArray(first, last); + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + } +}); diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..d93f0408 --- /dev/null +++ b/src/main.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +pkg.initGettext(); +pkg.initFormat(); +pkg.require({ 'cairo': '1.0', + 'Champlain': '0.12', + 'Clutter': '1.0', + 'Cogl': '1.0', + 'GeocodeGlib': '1.0', + 'Gdk': '3.0', + 'GdkPixbuf': '2.0', + 'GFBGraph': '0.2', + 'Gio': '2.0', + 'GLib': '2.0', + 'Goa': '1.0', + 'GObject': '2.0', + 'Gtk': '3.0', + 'GtkChamplain': '0.12', + 'GtkClutter': '1.0', + 'Rest': '0.7', + 'Soup': '2.4' }); + +const Application = imports.application; + +function main(args) { + /* Add prototype to get last element of an array. + * TODO: if we get more of these, might move initing + * to a decicated Prototypes modules. + */ + if (!Array.prototype.last) { + Array.prototype.last = function() { + return this[this.length - 1]; + } + } + + let application = new Application.Application(); + return application.run(args); +} diff --git a/src/mainWindow.js b/src/mainWindow.js new file mode 100644 index 00000000..10830667 --- /dev/null +++ b/src/mainWindow.js @@ -0,0 +1,665 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContextMenu = imports.contextMenu; +const ExportViewDialog = imports.exportViewDialog; +const FavoritesPopover = imports.favoritesPopover; +const Geoclue = imports.geoclue; +const GeocodeFactory = imports.geocode; +const HeaderBar = imports.headerBar; +const LocationServiceDialog = imports.locationServiceDialog; +const MapView = imports.mapView; +const PlaceEntry = imports.placeEntry; +const PlaceStore = imports.placeStore; +const PrintOperation = imports.printOperation; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Sidebar = imports.sidebar; +const Utils = imports.utils; + +const _CONFIGURE_ID_TIMEOUT = 100; // msecs +const _ADAPTIVE_VIEW_WIDTH = 700; +const _PLACE_ENTRY_MARGIN = 35; + +var ShapeLayerFileChooser = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-file-chooser.ui' +}, class ShapeLayerFileChooser extends Gtk.FileChooserNative { + + _init(params) { + super._init(params); + let allFilter = new Gtk.FileFilter(); + allFilter.set_name(_("All Layer Files")); + this.add_filter(allFilter); + this.set_filter(allFilter); + this.title = _("Open Shape Layer"); + + ShapeLayer.SUPPORTED_TYPES.forEach((layerClass) => { + let filter = new Gtk.FileFilter(); + [filter, allFilter].forEach((f) => { + layerClass.mimeTypes.forEach((type) => { + f.add_mime_type(type); + }); + }); + filter.set_name(layerClass.displayName); + this.add_filter(filter); + }); + } +}); + +var MainWindow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/main-window.ui', + InternalChildren: [ 'headerBar', + 'grid', + 'mainStack', + 'mainGrid', + 'noNetworkView', + 'actionBar', + 'actionBarRevealer' ] +}, class MainWindow extends Gtk.ApplicationWindow { + + get mapView() { + return this._mapView; + } + + _init(params) { + super._init(params); + + this._configureId = 0; + + this._mapView = new MapView.MapView({ + mapType: this.application.local_tile_path ? + MapView.MapType.LOCAL : undefined, + mainWindow: this }); + + this._mainGrid.add(this._mapView); + + this._mapView.gotoUserLocation(false); + + this._sidebar = this._createSidebar(); + + this._contextMenu = new ContextMenu.ContextMenu({ mapView: this._mapView, + mainWindow: this }); + + this._initActions(); + this._initHeaderbar(); + this._initSignals(); + this._restoreWindowGeometry(); + this._initDND(); + + this._grid.attach(this._sidebar, 1, 0, 1, 1); + + this._grid.show_all(); + + /* for some reason, setting the title of the window through the .ui + * template does not work anymore (maybe has something to do with + * setting a custom title on the headerbar). Setting it programmatically + * here works though. And yields a proper label in the gnome-shell + * overview. + */ + this.title = _("Maps"); + } + + _createPlaceEntry() { + let placeEntry = new PlaceEntry.PlaceEntry({ mapView: this._mapView, + visible: true, + margin_start: _PLACE_ENTRY_MARGIN, + margin_end: _PLACE_ENTRY_MARGIN, + max_width_chars: 50, + loupe: true, + matchRoute: true + }); + placeEntry.connect('notify::place', () => { + if (placeEntry.place) { + this._mapView.showPlace(placeEntry.place, true); + } + }); + + let popover = placeEntry.popover; + popover.connect('selected', () => this._mapView.grab_focus()); + this._mapView.view.connect('button-press-event', () => popover.hide()); + return placeEntry; + } + + _createSidebar() { + let sidebar = new Sidebar.Sidebar(this._mapView); + + Application.routeQuery.connect('notify', () => this._setRevealSidebar(true)); + this.application.bind_property('connected', + sidebar, 'visible', + GObject.BindingFlags.DEFAULT); + return sidebar; + } + + _initDND() { + this.drag_dest_set(Gtk.DestDefaults.DROP, null, 0); + this.drag_dest_add_uri_targets(); + + this.connect('drag-motion', (widget, ctx, x, y, time) => { + Gdk.drag_status(ctx, Gdk.DragAction.COPY, time); + return true; + }); + + this.connect('drag-data-received', (widget, ctx, x, y, data, info, time) => { + let files = data.get_uris().map(Gio.file_new_for_uri); + if (this._mapView.openShapeLayers(files)) + Gtk.drag_finish(ctx, true, false, time); + else + Gtk.drag_finish(ctx, false, false, time); + }); + } + + _initActions() { + Utils.addActions(this, { + 'about': { + onActivate: () => this._onAboutActivate() + }, + 'map-type-menu': { + state: ['b', false], + onActivate: () => this._onMapTypeMenuActivate() + }, + 'switch-to-street-view': { + accels: ['1', 'KP_1'], + onActivate: () => this._onStreetViewActivate() + }, + 'switch-to-aearial-view': { + accels: ['2', 'KP_2'], + onActivate: () => this._onAerialViewActivate() + }, + 'hybrid-aerial': { + paramType: 'b', + setting: 'hybrid-aerial' + }, + 'goto-user-location': { + accels: ['L'], + onActivate: () => this._onGotoUserLocationActivate() + }, + 'goto-antipode-location': { + accels: ['A'], + onActivate: () => this._mapView.gotoAntipode() + }, + 'toggle-sidebar': { + accels: ['D'], + state: ['b', false], + onChangeState: (a, v) => this._onToggleSidebarChangeState(a, v) + }, + 'zoom-in': { + accels: ['plus', 'plus', 'KP_Add', 'KP_Add', 'equal', 'equal'], + onActivate: () => this._mapView.view.zoom_in() + }, + 'zoom-out': { + accels: ['minus', 'minus', 'KP_Subtract', 'KP_Subtract'], + onActivate: () => this._mapView.view.zoom_out() + }, + 'toggle-scale': { + accels: ['S'], + onActivate: () => this._mapView.toggleScale() + }, + 'find': { + accels: ['F'], + onActivate: () => this._placeEntry.grab_focus() + }, + 'print-route': { + accels: ['P'], + onActivate: () => this._printRouteActivate() + }, + 'open-shape-layer': { + accels: ['O'], + onActivate: () => this._onOpenShapeLayer() + }, + 'export-as-image': { + onActivate: () => this._onExportActivated() + } + }, Application.settings); + } + + _initSignals() { + this.connect('delete-event', this._quit.bind(this)); + this.connect('configure-event', + this._onConfigureEvent.bind(this)); + + this.connect('window-state-event', + this._onWindowStateEvent.bind(this)); + this._mapView.view.connect('button-press-event', () => { + // Can not call something that will generate clutter events + // from a clutter event-handler. So use an idle. + Mainloop.idle_add(() => this._mapView.grab_focus()); + }); + + this.application.connect('notify::connected', () => { + if (this.application.connected || this.application.local_tile_path) + this._mainStack.visible_child = this._mainGrid; + else + this._mainStack.visible_child = this._noNetworkView; + }); + + /* + * If the currently focused widget is an entry then we will + * hijack the key-press to the main window and make sure that + * they reach the entry before they can be swallowed as accelerator. + */ + this.connect('key-press-event', (window, event) => { + let focusWidget = window.get_focus(); + let keyval = event.get_keyval()[1]; + let keys = [Gdk.KEY_plus, Gdk.KEY_KP_Add, + Gdk.KEY_minus, Gdk.KEY_KP_Subtract, + Gdk.KEY_equal]; + let isPassThroughKey = keys.indexOf(keyval) !== -1; + + /* if no entry is focused, and the key is not one we should treat + * as a zoom accelerator when no entry is focused, focus the + * main search entry in the headebar to propaget the keypress there + */ + if (!(focusWidget instanceof Gtk.Entry) && !isPassThroughKey) { + /* if the search entry does not handle the event, pass it on + * instead of activating the entry + */ + if (this._placeEntry.handle_event(event) === Gdk.EVENT_PROPAGATE) + return false; + + this._placeEntry.has_focus = true; + focusWidget = this._placeEntry; + } + + if (focusWidget instanceof Gtk.Entry) + return focusWidget.event(event); + + return false; + }); + + this._mapView.view.connect('notify::zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::max-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::min-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + } + + _updateZoomButtonsSensitivity() { + let zoomLevel = this._mapView.view.zoom_level; + let maxZoomLevel = this._mapView.view.max_zoom_level; + let minZoomLevel = this._mapView.view.min_zoom_level; + let zoomInAction = this.lookup_action("zoom-in"); + let zoomOutAction = this.lookup_action("zoom-out"); + + if (zoomLevel >= maxZoomLevel) + zoomInAction.set_enabled(false); + else + zoomInAction.set_enabled(true); + + if (zoomLevel <= minZoomLevel) + zoomOutAction.set_enabled(false); + else + zoomOutAction.set_enabled(true); + } + + _updateLocationSensitivity() { + let sensitive = (Application.geoclue.state !== Geoclue.State.INITIAL && + (this.application.connected || + this.application.local_tile_path)); + + this.lookup_action("goto-user-location").set_enabled(sensitive); + } + + _initHeaderbar() { + this._headerBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_start(this._headerBarLeft); + + this._headerBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_end(this._headerBarRight); + + this._placeEntry = this._createPlaceEntry(); + this._headerBar.custom_title = this._placeEntry; + + Application.geoclue.connect('notify::state', + this._updateLocationSensitivity.bind(this)); + this.application.connect('notify::connected', () => { + let app = this.application; + + this._updateLocationSensitivity(); + this._placeEntry.sensitive = app.connected; + }); + + // action bar, for when the window is too narrow for the full headerbar + this._actionBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_start(this._actionBarLeft); + + this._actionBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_end(this._actionBarRight); + + this.connect('size-allocate', () => { + let [width, height] = this.get_size(); + if (width < _ADAPTIVE_VIEW_WIDTH) { + this._headerBarLeft.hide(); + this._headerBarRight.hide(); + this._actionBarRevealer.set_reveal_child(true); + this._placeEntry.set_margin_start(0); + this._placeEntry.set_margin_end(0); + } else { + this._headerBarLeft.show(); + this._headerBarRight.show(); + this._actionBarRevealer.set_reveal_child(false); + this._placeEntry.set_margin_start(_PLACE_ENTRY_MARGIN); + this._placeEntry.set_margin_end(_PLACE_ENTRY_MARGIN); + } + }); + } + + _saveWindowGeometry() { + let window = this.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.MAXIMIZED) + return; + + // GLib.Variant.new() can handle arrays just fine + let size = this.get_size(); + Application.settings.set('window-size', size); + + let position = this.get_position(); + Application.settings.set('window-position', position); + } + + _restoreWindowGeometry() { + let size = Application.settings.get('window-size'); + if (size.length === 2) { + let [width, height] = size; + this.set_default_size(width, height); + } + + let position = Application.settings.get('window-position'); + if (position.length === 2) { + let [x, y] = position; + + this.move(x, y); + } + + if (Application.settings.get('window-maximized')) + this.maximize(); + } + + _onConfigureEvent(widget, event) { + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + this._configureId = Mainloop.timeout_add(_CONFIGURE_ID_TIMEOUT, () => { + this._saveWindowGeometry(); + this._configureId = 0; + return false; + }); + } + + _onWindowStateEvent(widget, event) { + let window = widget.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.FULLSCREEN) + return; + + let maximized = (state & Gdk.WindowState.MAXIMIZED); + Application.settings.set('window-maximized', maximized); + } + + _quit() { + // remove configure event handler if still there + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + // always save geometry before quitting + this._saveWindowGeometry(); + + return false; + } + + _onGotoUserLocationActivate() { + let message; + + if (Application.geoclue.state === Geoclue.State.ON) { + this._mapView.gotoUserLocation(true); + return; + } + + Application.geoclue.start(() => { + switch(Application.geoclue.state) { + case Geoclue.State.FAILED: + message = _("Failed to connect to location service"); + Utils.showDialog(message, Gtk.MessageType.ERROR, this); + break; + + case Geoclue.State.DENIED: + let dialog = new LocationServiceDialog.LocationServiceDialog({ + visible: true, + transient_for: this, + modal: true }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + break; + + default: + this._mapView.gotoUserLocation(true); + break; + } + }); + } + + _activateExport() { + let view = this._mapView.view; + let surface = view.to_surface(true); + let bbox = view.get_bounding_box(); + let [latitude, longitude] = bbox.get_center(); + + let dialog = new ExportViewDialog.ExportViewDialog({ + transient_for: this, + modal: true, + surface: surface, + latitude: latitude, + longitude: longitude, + mapView: this._mapView + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + + _onExportActivated() { + if (this._mapView.view.state === Champlain.State.DONE) { + this._activateExport(); + } else { + let notifyId = this._mapView.view.connect('notify::state', () => { + if (this._mapView.view.state === Champlain.State.DONE) { + this._mapView.view.disconnect(notifyId); + this._activateExport(); + } + }); + } + } + + _printRouteActivate() { + if (this._mapView.routeShowing) { + let operation = new PrintOperation.PrintOperation({ mainWindow: this }); + } + } + + _onMapTypeMenuActivate(action) { + let state = action.get_state().get_boolean(); + action.set_state(GLib.Variant.new('b', !state)); + } + + _onStreetViewActivate() { + this._mapView.setMapType(MapView.MapType.STREET); + } + + _onAerialViewActivate() { + // don't attempt to switch to aerial if we don't have tiles for it + if (Service.getService().tiles.aerial) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + } + + _onToggleSidebarChangeState(action, variant) { + action.set_state(variant); + + let reveal = variant.get_boolean(); + this._sidebar.set_reveal_child(reveal); + } + + _setRevealSidebar(value) { + let action = this.lookup_action('toggle-sidebar'); + action.change_state(GLib.Variant.new_boolean(value)); + } + + _onAboutActivate() { + let aboutDialog = new Gtk.AboutDialog({ + artists: [ 'Jakub Steiner ', + 'Andreas Nilsson ' ], + authors: [ 'Zeeshan Ali (Khattak) ', + 'Mattias Bengtsson ', + 'Jonas Danielsson ', + 'Marcus Lundblad '], + translator_credits: _("translator-credits"), + /* Translators: This is the program name. */ + program_name: _("Maps"), + comments: _("A map application for GNOME"), + license_type: Gtk.License.GPL_2_0, + logo_icon_name: 'org.gnome.Maps', + version: pkg.version, + website: 'https://live.gnome.org/Apps/Maps', + wrap_license: true, + + modal: true, + transient_for: this + }); + + let copyright = _("Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors"); + let attribution = this._getAttribution(); + + copyright += '\n' + attribution; + + /* HACK: we need to poke into gtkaboutdialog internals + * to set the copyright with markup like attribution requires + */ + + let copyrightLabel = aboutDialog.get_template_child(Gtk.AboutDialog, 'copyright_label'); + copyrightLabel.set_markup('' + copyright + ''); + copyrightLabel.show(); + + aboutDialog.show(); + aboutDialog.connect('response', () => aboutDialog.destroy()); + } + + _getAttribution() { + let tileProviderInfo = Service.getService().tileProviderInfo; + let photonGeocode = Service.getService().photonGeocode; + let attribution = _("Map data by %s and contributors").format('OpenStreetMap'); + + if (tileProviderInfo) { + let tileProviderString; + if (tileProviderInfo.url) { + tileProviderString = '' + + tileProviderInfo.name + ''; + } else { + tileProviderString = tileProviderInfo.name; + } + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * tile provider where the %s placeholder is replaced by either + * the bare name of the tile provider, or a linkified URL if one + * is available + */ + attribution += _("Map tiles provided by %s").format(tileProviderString); + } + + let provider = GeocodeFactory.getGeocoder().attribution; + let providerUrl = GeocodeFactory.getGeocoder().attributionUrl; + let geocoderName = GeocodeFactory.getGeocoder().name; + let geocoderUrl = GeocodeFactory.getGeocoder().url; + + let providerString; + if (providerUrl) { + providerString = + '' + provider + ''; + } else { + providerString = provider; + } + + let geocoderLink = + '%s'.format(geocoderUrl, geocoderName); + + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * search provider where the first %s placeholder is replaced by either + * the bare name of the geocoder provider, or a linkified URL if one + * is available, and the second %s placeholder is replaced by the + * URL to the geocoder project page. These placeholders + * can be swapped, if needed using the %n$s positional syntax + * (i.e. "%2$s ... %1$s ..." for positioning the project URL + * before the provider). + */ + attribution += _("Search provided by %s using %s"). + format(providerString, geocoderLink); + + return attribution; + } + + _onOpenShapeLayer() { + this._fileChooser = new ShapeLayerFileChooser({ + transient_for: this, + }); + + this._fileChooser.connect('response', (widget, response) => { + if (response === Gtk.ResponseType.ACCEPT) { + this._mapView.openShapeLayers(this._fileChooser.get_files()); + this._headerBarLeft.popdownLayersPopover(); + this._actionBarLeft.popdownLayersPopover(); + } + this._fileChooser.destroy(); + }); + this._fileChooser.show(); + } +}); diff --git a/src/mapBubble.js b/src/mapBubble.js new file mode 100644 index 00000000..998f0213 --- /dev/null +++ b/src/mapBubble.js @@ -0,0 +1,192 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const SendToDialog = imports.sendToDialog; +const Utils = imports.utils; + +var Button = { + NONE: 0, + ROUTE: 2, + SEND_TO: 4, + FAVORITE: 8, + CHECK_IN: 16 +}; + +var MapBubble = GObject.registerClass({ Abstract: true }, +class MapBubble extends Gtk.Popover { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + params.relative_to = params.mapView; + params.transitions_enabled = false; + delete params.mapView; + + let buttonFlags = params.buttons || Button.NONE; + delete params.buttons; + + let routeFrom = params.routeFrom; + delete params.routeFrom; + + let checkInMatchPlace = params.checkInMatchPlace; + if (checkInMatchPlace !== false) + checkInMatchPlace = true; + delete params.checkInMatchPlace; + + params.modal = false; + + super._init(params); + let ui = Utils.getUIObject('map-bubble', [ 'bubble-main-grid', + 'bubble-image', + 'bubble-thumbnail', + 'bubble-icon-stack', + 'bubble-content-area', + 'bubble-button-area', + 'bubble-route-button', + 'bubble-send-to-button', + 'bubble-favorite-button', + 'bubble-check-in-button', + 'bubble-favorite-button-image']); + this._image = ui.bubbleImage; + this._thumbnail = ui.bubbleThumbnail; + this._iconStack = ui.bubbleIconStack; + this._content = ui.bubbleContentArea; + + if (!buttonFlags) + ui.bubbleButtonArea.visible = false; + else { + if (buttonFlags & Button.ROUTE) + this._initRouteButton(ui.bubbleRouteButton, routeFrom); + if (buttonFlags & Button.SEND_TO) + this._initSendToButton(ui.bubbleSendToButton); + if (buttonFlags & Button.FAVORITE) + this._initFavoriteButton(ui.bubbleFavoriteButton, ui.bubbleFavoriteButtonImage); + if (buttonFlags & Button.CHECK_IN) + this._initCheckInButton(ui.bubbleCheckInButton, checkInMatchPlace); + } + + this.add(ui.bubbleMainGrid); + } + + get image() { + return this._image; + } + + get thumbnail() { + return this._thumbnail; + } + + get iconStack() { + return this._iconStack; + } + + get place() { + return this._place; + } + + get content() { + return this._content; + } + + _initFavoriteButton(button, image) { + let placeStore = Application.placeStore; + button.visible = true; + + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + image.icon_name = 'starred-symbolic'; + } else { + image.icon_name = 'non-starred-symbolic'; + } + + button.connect('clicked', () => { + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + image.icon_name = 'non-starred-symbolic'; + placeStore.removePlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } else { + image.icon_name = 'starred-symbolic'; + placeStore.addPlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } + }); + } + + _initSendToButton(button) { + button.visible = true; + button.connect('clicked', () => { + let dialog = new SendToDialog.SendToDialog({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this._place }); + dialog.connect('response', () => dialog.destroy()); + dialog.show(); + }); + } + + _initRouteButton(button, routeFrom) { + let query = Application.routeQuery; + let from = query.points[0]; + let to = query.points[query.points.length - 1]; + + button.visible = true; + + button.connect('clicked', () => { + query.freeze_notify(); + query.reset(); + Application.routingDelegator.reset(); + if (routeFrom) { + from.place = this._place; + } else { + if (Application.geoclue.place) + from.place = Application.geoclue.place; + to.place = this._place; + } + this.destroy(); + query.thaw_notify(); + }); + } + + _initCheckInButton(button, matchPlace) { + Application.checkInManager.bind_property('hasCheckIn', + button, 'visible', + GObject.BindingFlags.DEFAULT | + GObject.BindingFlags.SYNC_CREATE); + + button.connect('clicked', () => { + Application.checkInManager.showCheckInDialog(this.get_toplevel(), + this.place, + matchPlace); + }); + } +}); diff --git a/src/mapMarker.js b/src/mapMarker.js new file mode 100644 index 00000000..49cf491c --- /dev/null +++ b/src/mapMarker.js @@ -0,0 +1,392 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const MapWalker = imports.mapWalker; +const Utils = imports.utils; + +var MapMarker = GObject.registerClass({ + Implements: [Champlain.Exportable], + Abstract: true, + Signals: { + 'gone-to': { } + }, + Properties: { + 'surface': GObject.ParamSpec.override('surface', + Champlain.Exportable), + 'view-latitude': GObject.ParamSpec.double('view-latitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -90, 90, 0), + 'view-longitude': GObject.ParamSpec.double('view-longitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -180, 180, 0), + 'view-zoom-level': GObject.ParamSpec.int('view-zoom-level', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, 20, 3) + } +}, class MapMarker extends Champlain.Marker { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.selectable = true; + + super._init(params); + + this.connect('notify::size', this._translateMarkerPosition.bind(this)); + if (this._mapView) { + this._view = this._mapView.view; + this.connect('notify::selected', this._onMarkerSelected.bind(this)); + this.connect('button-press', this._onButtonPress.bind(this)); + this.connect('touch-event', this._onTouchEvent.bind(this)); + + // Some markers are draggable, we want to sync the marker location and + // the location saved in the GeocodePlace + // These are not bindings because the place may have a different + // location later + this.connect('notify::latitude', () => { + this.place.location.latitude = this.latitude; + }); + this.connect('notify::longitude', () => { + this.place.location.longitude = this.longitude; + }); + + this.place.connect('notify::location', this._onLocationChanged.bind(this)); + + this._view.bind_property('latitude', this, 'view-latitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('longitude', this, 'view-longitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('zoom-level', this, 'view-zoom-level', + GObject.BindingFlags.DEFAULT); + this.connect('notify::view-latitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-longitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-zoom-level', this._onViewUpdated.bind(this)); + } + } + + get surface() { + return this._surface; + } + + set surface(v) { + this._surface = v; + } + + vfunc_get_surface() { + return this._surface; + } + + vfunc_set_surface(surface) { + this._surface = surface; + } + + _actorFromIconName(name, size, color) { + try { + let theme = Gtk.IconTheme.get_default(); + let pixbuf; + + if (color) { + let info = theme.lookup_icon(name, size, 0); + pixbuf = info.load_symbolic(color, null, null, null)[0]; + } else { + pixbuf = theme.load_icon(name, size, 0); + } + + let canvas = new Clutter.Canvas({ width: pixbuf.get_width(), + height: pixbuf.get_height() }); + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0); + cr.paint(); + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + actor.set_content(canvas); + actor.set_size(pixbuf.get_width(), pixbuf.get_height()); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + _onButtonPress(marker, event) { + // Zoom in on marker on double-click + if (event.get_click_count() > 1) { + if (this._view.zoom_level < this._view.max_zoom_level) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.center_on(this.latitude, this.longitude); + } + } + } + + _onTouchEvent(marker, event) { + if (event.type() == Clutter.EventType.TOUCH_BEGIN) + this.selected = true; + + return Clutter.EVENT_STOP; + } + + _translateMarkerPosition() { + this.set_translation(-this.anchor.x, -this.anchor.y, 0); + } + + _onLocationChanged() { + this.set_location(this.place.location.latitude, this.place.location.longitude); + + if (this._bubble) { + if (this._isInsideView()) + this._positionBubble(this._bubble); + else + this.hideBubble(); + } + } + + /** + * Returns: The anchor point for the marker icon, relative to the + * top left corner. + */ + get anchor() { + return { x: 0, y: 0 }; + } + + get bubbleSpacing() { + return 0; + } + + get place() { + return this._place; + } + + get bubble() { + if (this._bubble === undefined) + this._bubble = this._createBubble(); + + return this._bubble; + } + + _createBubble() { + // Markers has no associated bubble by default + return null; + } + + _positionBubble(bubble) { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + let pos = new Gdk.Rectangle({ x: x + tx - this.bubbleSpacing, + y: y + ty - this.bubbleSpacing, + width: this.width + this.bubbleSpacing * 2, + height: this.height + this.bubbleSpacing * 2 }); + bubble.pointing_to = pos; + bubble.position = Gtk.PositionType.TOP; + + // Gtk+ doesn't provide a widget allocation by calling get_allocation + // if it's not visible, the bubble positioning occurs when bubble + // is not visible yet + let bubbleSize = bubble.get_preferred_size()[1]; + + // Set bubble position left/right if it's close to a vertical map edge + if (pos.x + pos.width / 2 + bubbleSize.width / 2 >= mapSize.width) + bubble.position = Gtk.PositionType.LEFT; + else if (pos.x + pos.width / 2 - bubbleSize.width / 2 <= 0) + bubble.position = Gtk.PositionType.RIGHT; + // Avoid bubble to cover header bar if the marker is close to the top map edge + else if (pos.y - bubbleSize.height <= 0) + bubble.position = Gtk.PositionType.BOTTOM; + } + + _hideBubbleOn(signal, duration) { + let sourceId = null; + let signalId = this._view.connect(signal, () => { + if (sourceId) + Mainloop.source_remove(sourceId); + else + this.hideBubble(); + + let callback = (function() { + sourceId = null; + this.showBubble(); + }).bind(this); + + if (duration) + sourceId = Mainloop.timeout_add(duration, callback); + else + sourceId = Mainloop.idle_add(callback); + }); + + Utils.once(this.bubble, 'closed', () => { + // We still listening for the signal to refresh + // the existent timeout + if (!sourceId) + this._view.disconnect(signalId); + }); + + Utils.once(this, 'notify::selected', () => { + // When the marker gets deselected, we need to ensure + // that the timeout callback is not called anymore. + if (sourceId) { + Mainloop.source_remove(sourceId); + this._view.disconnect(signalId); + } + }); + } + + _initBubbleSignals() { + this._hideBubbleOn('notify::zoom-level', 500); + this._hideBubbleOn('notify::size'); + + // This is done to get just one marker selected at any time regardless + // of the layer to which it belongs so we can get only one visible bubble + // at any time. We do this for markers in different layers because for + // markers in the same layer, ChamplainMarkerLayer single selection mode + // does the job. + this._mapView.onSetMarkerSelected(this); + + let markerSelectedSignalId = this._mapView.connect('marker-selected', (mapView, selectedMarker) => { + if (this.get_parent() !== selectedMarker.get_parent()) + this.selected = false; + }); + + let viewTouchEventSignalId = + this._view.connect('touch-event', () => this.set_selected(false)); + + let goingToSignalId = this._mapView.connect('going-to', () => { + this.set_selected(false); + }); + let buttonPressSignalId = + this._view.connect('button-press-event', () => { + this.set_selected(false); + }); + // Destroy the bubble when the marker is destroyed o removed from a layer + let parentSetSignalId = this.connect('parent-set', () => { + this.set_selected(false); + }); + let dragMotionSignalId = this.connect('drag-motion', () => { + this.set_selected(false); + }); + let markerHiddenSignalId = this.connect('notify::visible', () => { + if (!this.visible) { + this.set_selected(false); + } + }); + + Utils.once(this.bubble, 'closed', () => { + this._mapView.disconnect(markerSelectedSignalId); + this._mapView.disconnect(goingToSignalId); + this._view.disconnect(buttonPressSignalId); + this._view.disconnect(viewTouchEventSignalId); + this.disconnect(parentSetSignalId); + this.disconnect(dragMotionSignalId); + + this._bubble.destroy(); + delete this._bubble; + }); + } + + _isInsideView() { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + return x + tx + this.width > 0 && x + tx < mapSize.width && + y + ty + this.height > 0 && y + ty < mapSize.height; + } + + _onViewUpdated() { + if (this.bubble) { + if (this._isInsideView()) + this._positionBubble(this.bubble); + else + this.bubble.hide(); + } + } + + showBubble() { + if (this.bubble && !this.bubble.visible && this._isInsideView()) { + this._initBubbleSignals(); + this.bubble.show(); + this._positionBubble(this.bubble); + } + } + + hideBubble() { + if (this._bubble) + this._bubble.hide(); + } + + get walker() { + if (this._walker === undefined) + this._walker = new MapWalker.MapWalker(this.place, this._mapView); + + return this._walker; + } + + zoomToFit() { + this.walker.zoomToFit(); + } + + goTo(animate) { + Utils.once(this.walker, 'gone-to', () => this.emit('gone-to')); + this.walker.goTo(animate); + } + + goToAndSelect(animate) { + Utils.once(this, 'gone-to', () => this.selected = true); + + this.goTo(animate); + } + + _onMarkerSelected() { + if (this.selected) + this.showBubble(); + else + this.hideBubble(); + } +}); diff --git a/src/mapSource.js b/src/mapSource.js new file mode 100644 index 00000000..b653b42b --- /dev/null +++ b/src/mapSource.js @@ -0,0 +1,155 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const System = imports.system; + +const Service = imports.service; +const Utils = imports.utils; + +let _attributionImage = null; + +const _FILE_CACHE_SIZE_LIMIT = (10 * 1024 * 1024); /* 10Mb */ +const _MEMORY_CACHE_SIZE_LIMIT = 100; /* number of tiles */ + +const _LOGO_PADDING_X = 10; +const _LOGO_PADDING_Y = 25; +// extra pading below logo in RTL, where scale will be on the right side +const _LOGO_PADDING_Y_RTL = 35; + +var AttributionLogo = GObject.registerClass({}, +class AttributionLogo extends GtkClutter.Actor { + + _init(view) { + super._init(); + + if (_attributionImage) + this.contents = _attributionImage; + else + return; + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + view.connect('notify::width', () => this._updatePosition(view)); + view.connect('notify::height', () => this._updatePosition(view)); + + this._updatePosition(view); + } + + _updatePosition(view) { + let width = _attributionImage.pixbuf.width; + let height = _attributionImage.pixbuf.height; + let x = view.width - width - _LOGO_PADDING_X; + /* TODO: ideally the attribution logo should be aligned to the left + * side in RTL locales, but I couldn't get that working with Clutter + * actor positioning, so adjust the padding to fit above the scale + * for now + */ + let y = view.height - height - + (this._rtl ? _LOGO_PADDING_Y_RTL : _LOGO_PADDING_Y); + + this.set_position(x, y); + } +}); + +function _updateAttributionImage(source) { + if (!source.attribution_logo || source.attribution_logo === "") + return; + + if (!_attributionImage) + _attributionImage = new Gtk.Image(); + + let data = GLib.base64_decode(source.attribution_logo); + let stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(data)); + _attributionImage.pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); +} + +function _createTileSource(source) { + let tileSource = new Champlain.NetworkTileSource({ + id: source.id, + name: source.name, + license: source.license, + license_uri: source.license_uri, + min_zoom_level: source.min_zoom_level, + max_zoom_level: source.max_zoom_level, + tile_size: source.tile_size, + renderer: new Champlain.ImageRenderer(), + uri_format: source.uri_format + }); + tileSource.max_conns = source.max_connections; + return tileSource; +} + +function _createCachedSource(source) { + let tileSource = _createTileSource(source); + _updateAttributionImage(source); + + let fileCache = new Champlain.FileCache({ + size_limit: _FILE_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let memoryCache = new Champlain.MemoryCache({ + size_limit: _MEMORY_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let errorSource = new Champlain.NullTileSource({ + renderer: new Champlain.ImageRenderer() + }); + + /* + * When the a source in the chain fails to load a given tile + * the next one in the chain tries instead. Until we get to the error + * source. + */ + let sourceChain = new Champlain.MapSourceChain(); + sourceChain.push(errorSource); + sourceChain.push(tileSource); + sourceChain.push(fileCache); + sourceChain.push(memoryCache); + + return sourceChain; +} + +function createAerialSource() { + return _createCachedSource(Service.getService().tiles.aerial); +} + +function createHybridAerialSource() { + return _createCachedSource(Service.getService().tiles.hybridAerial); +} + +function createStreetSource() { + return _createCachedSource(Service.getService().tiles.street); +} + +function createStreetDarkSource() { + return _createCachedSource(Service.getService().tiles.streetDark) +} + +function createPrintSource() { + return _createCachedSource(Service.getService().tiles.print); +} diff --git a/src/mapView.js b/src/mapView.js new file mode 100644 index 00000000..d14b678a --- /dev/null +++ b/src/mapView.js @@ -0,0 +1,856 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkChamplain = imports.gi.GtkChamplain; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const Color = imports.color; +const Geoclue = imports.geoclue; +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const KmlShapeLayer = imports.kmlShapeLayer; +const GpxShapeLayer = imports.gpxShapeLayer; +const Location = imports.location; +const Maps = imports.gi.GnomeMaps; +const MapSource = imports.mapSource; +const MapWalker = imports.mapWalker; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const StoredRoute = imports.storedRoute; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; +const TurnPointMarker = imports.turnPointMarker; +const UserLocationMarker = imports.userLocationMarker; +const Utils = imports.utils; + +var MapType = { + LOCAL: 'MapsLocalSource', + STREET: 'MapsStreetSource', + AERIAL: 'MapsAerialSource' +}; +const _LOCATION_STORE_TIMEOUT = 500; +const MapMinZoom = 2; + +/* + * Due to the mathematics of spherical mericator projection, + * the map must be truncated at a latitude less than 90 degrees. + */ +var MAX_LATITUDE = 85.05112; +var MIN_LATITUDE = -85.05112; +var MAX_LONGITUDE = 180; +var MIN_LONGITUDE = -180; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline on the path */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +// color used for turn-by-turn-based routes (non-transit) +const TURN_BY_TURN_ROUTE_COLOR = '0000FF'; + +// line width for route lines +const ROUTE_LINE_WIDTH = 5; + +/* length of filled parts of dashed lines used for walking legs of transit + * itineraries + */ +const DASHED_ROUTE_LINE_FILLED_LENGTH = 5; + +// length of gaps of dashed lines used for walking legs of transit itineraries +const DASHED_ROUTE_LINE_GAP_LENGTH = 5; + +var MapView = GObject.registerClass({ + Properties: { + // this property is true when the routing sidebar is active + 'routingOpen': GObject.ParamSpec.boolean('routingOpen', + 'Routing open', + 'Routing sidebar open', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false), + /* this property is true when a route is being shown on the map */ + 'routeShowing': GObject.ParamSpec.boolean('routeShowing', + 'Route showing', + 'Showing a route on the map', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false) + }, + Signals: { + 'user-location-changed': {}, + 'going-to': {}, + 'going-to-user-location': {}, + 'gone-to-user-location': {}, + 'view-moved': {}, + 'marker-selected': { param_types: [Champlain.Marker] }, + 'map-type-changed': { param_types: [GObject.TYPE_STRING] } + }, +}, class MapView extends GtkChamplain.Embed { + + get routingOpen() { + return this._routingOpen || this._instructionMarkerLayer.visible; + } + + set routingOpen(value) { + let isValid = Application.routeQuery.isValid(); + + this._routingOpen = value && isValid; + this._routeLayers.forEach((routeLayer) => routeLayer.visible = value && isValid); + this._instructionMarkerLayer.visible = value && isValid; + if (!value) + this.routeShowing = false; + this.notify('routingOpen'); + } + + get routeShowing() { + return this._routeShowing; + } + + set routeShowing(value) { + this._routeShowing = value; + this.notify('routeShowing'); + } + + _init(params) { + super._init(); + + let mapType = params.mapType || this._getStoredMapType(); + delete params.mapType; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._storeId = 0; + this.view = this._initView(); + this._initLayers(); + + this.setMapType(mapType); + + if (Application.normalStartup) + this._goToStoredLocation(); + + this.shapeLayerStore = new Gio.ListStore(GObject.TYPE_OBJECT); + + Application.geoclue.connect('location-changed', + this._updateUserLocation.bind(this)); + Application.geoclue.connect('notify::state', + this._updateUserLocation.bind(this)); + this._connectRouteSignals(); + } + + _initScale(view) { + this._scale = new Champlain.Scale({ visible: true }); + this._scale.connect_view(view); + + if (Utils.getMeasurementSystem() === Utils.METRIC_SYSTEM) + this._scale.unit = Champlain.Unit.KM; + else + this._scale.unit = Champlain.Unit.MILES; + + this._scale.set_x_expand(true); + this._scale.set_y_expand(true); + this._scale.set_x_align(Clutter.ActorAlign.START); + this._scale.set_y_align(Clutter.ActorAlign.END); + view.add_child(this._scale); + } + + _initView() { + let view = this.get_view(); + + view.min_zoom_level = MapMinZoom; + view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + view.reactive = true; + view.kinetic_mode = true; + view.horizontal_wrap = true; + + view.connect('notify::latitude', this._onViewMoved.bind(this)); + // switching map type will set view min-zoom-level from map source + view.connect('notify::min-zoom-level', () => { + if (view.min_zoom_level < MapMinZoom) { + view.min_zoom_level = MapMinZoom; + } + }); + + // if dark tiles is available, setup handler to switch style + if (Service.getService().tiles.streetDark) { + Application.settings.connect('changed::night-mode', + this._onNightModeChanged.bind(this)); + } + + // if hybrid aerial tiles are available, setup handler to toggle + if (Service.getService().tiles.hybridAerial) { + Application.settings.connect('changed::hybrid-aerial', + this._onHybridAerialChanged.bind(this)); + } + + this._gtkSettings = Gtk.Settings.get_default(); + this._gtkSettings.connect('notify::gtk-application-prefer-dark-theme', + this._onPreferDarkThemeChanged.bind(this)); + // set dark background if we start up in dark theme + if (this._gtkSettings.gtk_application_prefer_dark_theme) { + if (!this._darkBackgroud) + this._createDarkBackground(); + view.set_background_pattern(this._darkBackground); + } + + this._initScale(view); + return view; + } + + /* handler to draw background for dark theme, + * theese three functions should not be needed later with a native GTK + * widget (Shumate) + */ + _drawDarkBackground(canvas, cr, width, height) { + // set this arbitrarily to try to match the typical dark tile set + cr.setSourceRGB(0.2, 0.2, 0.2); + cr.rectangle(0, 0, width, height); + cr.fillPreserve(); + + return true; + } + + _createDarkBackground() { + this._darkBackground = new Clutter.Canvas(); + this._darkBackground.set_size(512, 512); + this._darkBackground.connect('draw', + this._drawDarkBackground.bind(this)); + this._darkBackground.invalidate(); + } + + _onPreferDarkThemeChanged() { + if (this._gtkSettings.gtk_application_prefer_dark_theme) { + if (!this._darkBackgroud) + this._createDarkBackground(); + this.view.set_background_pattern(this._darkBackground); + } else { + this.view.background_pattern = null; + } + } + + _onNightModeChanged() { + if (this._mapType === MapType.STREET) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('night-mode')) + this.view.map_source = MapSource.createStreetDarkSource(); + else + this.view.map_source = MapSource.createStreetSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + _onHybridAerialChanged() { + if (this._mapType === MapType.AERIAL) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('hybrid-aerial')) + this.view.map_source = MapSource.createHybridAerialSource(); + else + this.view.map_source = MapSource.createAerialSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + /* create and store a route layer, pass true to get a dashed line */ + _createRouteLayer(dashed, lineColor, width) { + let red = Color.parseColor(lineColor, 0); + let green = Color.parseColor(lineColor, 1); + let blue = Color.parseColor(lineColor, 2); + // Clutter uses a 0-255 range for color components + let strokeColor = new Clutter.Color({ red: red * 255, + blue: blue * 255, + green: green * 255, + alpha: 255 }); + let routeLayer = new Champlain.PathLayer({ stroke_width: width, + stroke_color: strokeColor }); + if (dashed) + routeLayer.set_dash([DASHED_ROUTE_LINE_FILLED_LENGTH, + DASHED_ROUTE_LINE_GAP_LENGTH]); + + this._routeLayers.push(routeLayer); + this.view.add_layer(routeLayer); + + return routeLayer; + } + + _clearRouteLayers() { + this._routeLayers.forEach((routeLayer) => { + routeLayer.remove_all(); + routeLayer.visible = false; + this.view.remove_layer(routeLayer); + }); + + this._routeLayers = []; + } + + _initLayers() { + let mode = Champlain.SelectionMode.SINGLE; + + this._userLocationLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._userLocationLayer); + + this._placeLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._placeLayer); + + this._instructionMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._instructionMarkerLayer); + + this._annotationMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._annotationMarkerLayer); + + ShapeLayer.SUPPORTED_TYPES.push(GeoJSONShapeLayer.GeoJSONShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(KmlShapeLayer.KmlShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(GpxShapeLayer.GpxShapeLayer); + + this._routeLayers = []; + } + + _ensureInstructionLayerAboveRouteLayers() { + this.view.remove_layer(this._instructionMarkerLayer); + this.view.add_layer(this._instructionMarkerLayer); + } + + _connectRouteSignals() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + let query = Application.routeQuery; + + route.connect('update', () => { + this.showRoute(route); + this.routeShowing = true; + }); + route.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('update', () => this._showTransitPlan(transitPlan)); + transitPlan.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('itinerary-selected', (obj, itinerary) => { + this._showTransitItinerary(itinerary); + this.routeShowing = true; + }); + transitPlan.connect('itinerary-deselected', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + + query.connect('notify', () => this.routingOpen = query.isValid()); + } + + _getStoredMapType() { + let mapType = Application.settings.get('map-type'); + + // make sure it's a valid map type + for (let type in MapType) { + if (mapType === MapType[type]) { + return mapType; + } + } + + return MapType.STREET; + } + + getMapType() { + return this._mapType; + } + + setMapType(mapType) { + if (this._mapType && this._mapType === mapType) + return; + + let overlay_sources = this.view.get_overlay_sources(); + + this._mapType = mapType; + + if (mapType !== MapType.LOCAL) { + if (mapType === MapType.AERIAL) { + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this.view.map_source = MapSource.createHybridAerialSource(); + } else { + this.view.map_source = MapSource.createAerialSource(); + } + } else { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this.view.map_source = MapSource.createStreetDarkSource(); + } else { + this.view.map_source = MapSource.createStreetSource(); + } + } + if (!this._attribution) { + this._attribution = new MapSource.AttributionLogo(this.view); + this.view.add_child(this._attribution); + } + + Application.settings.set('map-type', mapType); + } else { + let renderer = new Champlain.ImageRenderer(); + let source = new Maps.FileTileSource({ + path: Utils.getBufferText(Application.application.local_tile_path), + renderer: renderer, + tile_size: Application.application.local_tile_size || 512 + }); + try { + source.prepare(); + + this.view.map_source = source; + this.view.world = source.world; + let [lat, lon] = this.view.world.get_center(); + this.view.center_on(lat, lon); + } catch(e) { + this.setMapType(MapType.STREET); + Application.application.local_tile_path = false; + Application.application.notify('connected'); + Utils.showDialog(e.message, Gtk.MessageType.ERROR, this._mainWindow); + } + } + + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + + this.emit("map-type-changed", mapType); + } + + toggleScale() { + this._scale.visible = !this._scale.visible; + } + + openShapeLayers(files) { + let bbox = new Champlain.BoundingBox(); + let ret = true; + files.forEach((file) => { + try { + let i = this._findShapeLayerIndex(file); + let layer = (i > -1) ? this.shapeLayerStore.get_item(i) : null; + if (!layer) { + layer = ShapeLayer.newFromFile(file, this); + if (!layer) + throw new Error(_("File type is not supported")); + layer.load(); + this.shapeLayerStore.append(layer); + } + bbox.compose(layer.bbox); + } catch (e) { + Utils.debug(e); + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + ret = false; + } + }); + + this.gotoBBox(bbox); + return ret; + } + + removeShapeLayer(shapeLayer) { + shapeLayer.unload(); + let i = this._findShapeLayerIndex(shapeLayer.file); + this.shapeLayerStore.remove(i); + } + + _findShapeLayerIndex(file) { + for (let i = 0; i < this.shapeLayerStore.get_n_items(); i++) + if (this.shapeLayerStore.get_item(i).file.equal(file)) + return i; + return -1; + } + + goToGeoURI(uri) { + try { + let location = new Location.Location({ heading: -1 }); + location.set_from_uri(uri); + + let place = new Place.Place({ location: location, + name: location.description, + store: false }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } catch(e) { + let msg = _("Failed to open GeoURI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + Utils.debug("failed to open GeoURI: %s".format(e.message)); + } + } + + goToHttpURL(url) { + Place.parseHttpURL(url, (place, error) => { + if (place) { + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } else { + Utils.showDialog(error, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + gotoUserLocation(animate) { + if (!this._userLocation) + return; + + this.emit('going-to-user-location'); + Utils.once(this._userLocation, "gone-to", + () => this.emit('gone-to-user-location')); + this._userLocation.goTo(animate); + } + + gotoAntipode() { + let lat = -this.view.latitude; + let lon = this.view.longitude > 0 ? + this.view.longitude - 180 : this.view.longitude + 180; + let place = + new Place.Place({ location: new Location.Location({ latitude: lat, + longitude: lon }), + initialZoom: this.view.zoom_level }); + + new MapWalker.MapWalker(place, this).goTo(true); + } + + userLocationVisible() { + let box = this.view.get_bounding_box(); + + return box.covers(this._userLocation.latitude, this._userLocation.longitude); + } + + _updateUserLocation() { + if (!Application.geoclue.place) + return; + + if (Application.geoclue.state !== Geoclue.State.ON) { + if (this._userLocation) + this._userLocation.visible = false; + return; + } + + if (!this._userLocation) { + let place = Application.geoclue.place; + this._userLocation = new UserLocationMarker.UserLocationMarker({ place: place, + mapView: this }); + this._userLocationLayer.remove_all(); + this._userLocation.addToLayer(this._userLocationLayer); + } + + this._userLocation.visible = true; + + this.emit('user-location-changed'); + } + + _storeLocation() { + Application.settings.set('zoom-level', this.view.zoom_level); + let location = [this.view.latitude, this.view.longitude]; + Application.settings.set('last-viewed-location', location); + } + + _goToStoredLocation() { + let location = Application.settings.get('last-viewed-location'); + + if (location.length === 2) { + let [lat, lon] = location; + let zoom = Application.settings.get('zoom-level'); + + if (zoom >= this.view.min_zoom_level && + zoom <= this.view.max_zoom_level) + this.view.zoom_level = Application.settings.get('zoom-level'); + else + Utils.debug('Invalid initial zoom level: ' + zoom); + + if (lat >= MIN_LATITUDE && lat <= MAX_LATITUDE && + lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE) + this.view.center_on(location[0], location[1]); + else + Utils.debug('Invalid initial coordinates: ' + lat + ', ' + lon); + } else { + /* bounding box. for backwards compatibility, not used anymore */ + let bbox = new Champlain.BoundingBox({ top: location[0], + bottom: location[1], + left: location[2], + right: location[3] }); + this.view.connect("notify::realized", () => { + if (this.view.realized) + this.gotoBBox(bbox, true); + }); + } + } + + gotoBBox(bbox, linear) { + if (!bbox.is_valid()) { + Utils.debug('Bounding box is invalid'); + return; + } + + let [lat, lon] = bbox.get_center(); + let place = new Place.Place({ + location: new Location.Location({ latitude : lat, + longitude : lon }), + bounding_box: new Geocode.BoundingBox({ top : bbox.top, + bottom : bbox.bottom, + left : bbox.left, + right : bbox.right }) + }); + new MapWalker.MapWalker(place, this).goTo(true, linear); + } + + showTurnPoint(turnPoint) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = null; + if (turnPoint.isStop()) + return; + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showTransitStop(transitStop, transitLeg) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ transitStop: transitStop, + transitLeg: transitLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showContact(contact) { + let places = contact.get_places(); + if (places.length === 0) + return; + + this._placeLayer.remove_all(); + places.forEach((p) => { + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + }); + + if (places.length > 1) + this.gotoBBox(contact.bounding_box); + else + new MapWalker.MapWalker(places[0], this).goTo(true); + } + + _showStoredRoute(stored) { + let query = Application.routeQuery; + let route = Application.routingDelegator.graphHopper.route; + + Application.routingDelegator.graphHopper.storedRoute = stored.route; + + let resetId = route.connect('reset', function() { + route.disconnect(resetId); + query.freeze_notify(); + + let storedLast = stored.places.length - 1; + query.points[0].place = stored.places[0]; + query.points[1].place = stored.places[storedLast]; + query.transportation = stored.transportation; + + for (let i = 1; i < storedLast; i++) { + let point = query.addPoint(i); + point.place = stored.places[i]; + } + + query.thaw_notify(); + }); + route.reset(); + } + + showPlace(place, animation) { + this._placeLayer.remove_all(); + + if (place instanceof StoredRoute.StoredRoute) { + this._showStoredRoute(place); + return; + } + + this.routingOpen = false; + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(placeMarker); + placeMarker.goToAndSelect(animation); + } + + showRoute(route) { + let routeLayer; + + this._clearRouteLayers(); + this._placeLayer.remove_all(); + + routeLayer = this._createRouteLayer(false, TURN_BY_TURN_ROUTE_COLOR, + ROUTE_LINE_WIDTH); + route.path.forEach((polyline) => routeLayer.add_node(polyline)); + this.routingOpen = true; + + this._ensureInstructionLayerAboveRouteLayers(); + + this._showDestinationTurnpoints(); + this.gotoBBox(route.bbox); + } + + _showDestinationTurnpoints() { + let route = Application.routingDelegator.graphHopper.route; + let query = Application.routeQuery; + let pointIndex = 0; + + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + route.turnPoints.forEach((turnPoint) => { + if (turnPoint.isStop()) { + let queryPoint = query.filledPoints[pointIndex]; + let destinationMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + queryPoint: queryPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(destinationMarker); + pointIndex++; + } + }, this); + } + + _showTransitItinerary(itinerary) { + this.gotoBBox(itinerary.bbox); + this._clearRouteLayers(); + this._placeLayer.remove_all(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + + itinerary.legs.forEach((leg, index) => { + let dashed = !leg.transit; + let color = leg.color; + let outlineColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > + OUTLINE_LUMINANCE_THREASHHOLD; + let routeLayer; + let outlineRouteLayer; + + /* draw an outline by drawing a background path layer if needed + * TODO: maybe we should add support for outlined path layers in + * libchamplain */ + if (hasOutline) + outlineRouteLayer = this._createRouteLayer(dashed, outlineColor, + ROUTE_LINE_WIDTH + 2); + routeLayer = this._createRouteLayer(dashed, color, ROUTE_LINE_WIDTH); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way */ + if (index > 0 && !leg.transit) { + let previousLeg = itinerary.legs[index - 1]; + let lastPoint = previousLeg.polyline.last(); + + routeLayer.add_node(lastPoint); + } + + if (hasOutline) { + leg.polyline.forEach((function (polyline) { + outlineRouteLayer.add_node(polyline); + })); + } + leg.polyline.forEach((function (polyline) { + routeLayer.add_node(polyline); + })); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one */ + if (index < itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + }); + + this._ensureInstructionLayerAboveRouteLayers(); + + itinerary.legs.forEach((leg, index) => { + let previousLeg = index === 0 ? null : itinerary.legs[index - 1]; + + /* add start marker */ + let start; + if (!leg.transit) { + start = new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg, + mapView: this }); + } else { + start = new TransitBoardMarker.TransitBoardMarker({ leg: leg, + mapView: this }); + } + + this._instructionMarkerLayer.add_marker(start); + }); + + /* add arrival marker */ + let lastLeg = itinerary.legs.last(); + let arrival = new TransitArrivalMarker.TransitArrivalMarker({ leg: lastLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(arrival); + + this.routingOpen = true; + } + + _showTransitPlan(plan) { + this.gotoBBox(plan.bbox); + } + + _onViewMoved() { + this.emit('view-moved'); + if (this._storeId !== 0) + return; + + this._storeId = Mainloop.timeout_add(_LOCATION_STORE_TIMEOUT, () => { + this._storeId = 0; + this._storeLocation(); + }); + } + + onSetMarkerSelected(selectedMarker) { + this.emit('marker-selected', selectedMarker); + } +}); diff --git a/src/mapWalker.js b/src/mapWalker.js new file mode 100644 index 00000000..aad724ba --- /dev/null +++ b/src/mapWalker.js @@ -0,0 +1,197 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Utils = imports.utils; + +const _MAX_DISTANCE = 19850; // half of Earth's circumference (km) +const _MIN_ANIMATION_DURATION = 2000; // msec +const _MAX_ANIMATION_DURATION = 5000; // msec + +var MapWalker = GObject.registerClass({ + Signals: { + 'gone-to': { } + } +}, class MapWalker extends GObject.Object { + + _init(place, mapView) { + this.place = place; + this._mapView = mapView; + this._view = mapView.view; + this._boundingBox = this._createBoundingBox(this.place); + super._init(); + } + + _createBoundingBox(place) { + if (place.bounding_box !== null) { + return new Champlain.BoundingBox({ top: place.bounding_box.top, + bottom: place.bounding_box.bottom, + left: place.bounding_box.left, + right: place.bounding_box.right }); + } else + return null; + } + + // Zoom to the maximal zoom-level that fits the place type + zoomToFit() { + if (this._boundingBox !== null && this._boundingBox.is_valid()) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.ensure_visible(this._boundingBox, false); + } else { + let zoom; + + if (this.place.initialZoom) { + zoom = this.place.initialZoom; + } else { + switch (this.place.place_type) { + case Geocode.PlaceType.STREET: + zoom = 16; + break; + case Geocode.PlaceType.TOWN: + zoom = 11; + break; + case Geocode.PlaceType.COUNTRY: + zoom = 6; + break; + default: + zoom = this._view.max_zoom_level; + break; + } + } + this._view.zoom_level = zoom; + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + } + } + + goTo(animate, linear) { + Utils.debug('Going to ' + [this.place.name, + this.place.location.latitude, + this.place.location.longitude].join(' ')); + this._mapView.emit('going-to'); + + if (!animate) { + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + this.emit('gone-to'); + return; + } + + let fromLocation = new Location.Location({ latitude: this._view.get_center_latitude(), + longitude: this._view.get_center_longitude() }); + this._updateGoToDuration(fromLocation); + + if (linear) { + this._view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + Utils.once(this._view, 'animation-completed', + this.zoomToFit.bind(this)); + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + } else { + /* Lets first ensure that both current and destination location are visible + * before we start the animated journey towards destination itself. We do this + * to create the zoom-out-then-zoom-in effect that many map implementations + * do. This not only makes the go-to animation look a lot better visually but + * also give user a good idea of where the destination is compared to current + * location. + */ + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_CUBIC; + this._ensureVisible(fromLocation); + + Utils.once(this._view, 'animation-completed', () => { + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_OUT_CUBIC; + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + + Utils.once(this._view, 'animation-completed::go-to', () => { + this.zoomToFit(); + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + this.emit('gone-to'); + }); + }); + } + } + + _ensureVisible(fromLocation) { + let visibleBox = null; + + if (this._boundingBox !== null && this._boundingBox.is_valid()) { + visibleBox = this._boundingBox.copy(); + + visibleBox.extend(fromLocation.latitude, fromLocation.longitude); + } else { + visibleBox = new Champlain.BoundingBox({ left: 180, + right: -180, + bottom: 90, + top: -90 }); + + [fromLocation, this.place.location].forEach((location) => { + visibleBox.left = Math.min(visibleBox.left, location.longitude); + visibleBox.right = Math.max(visibleBox.right, location.longitude); + visibleBox.bottom = Math.min(visibleBox.bottom, location.latitude); + visibleBox.top = Math.max(visibleBox.top, location.latitude); + }); + } + + this._view.ensure_visible(visibleBox, true); + } + + _boxCovers(coverBox) { + if (this._boundingBox === null) + return false; + + if (coverBox.left > this._boundingBox.left) + return false; + + if (coverBox.right < this._boundingBox.right) + return false; + + if (coverBox.top < this._boundingBox.top) + return false; + + if (coverBox.bottom > this._boundingBox.bottom) + return false; + + return true; + } + + _updateGoToDuration(fromLocation) { + let toLocation = this.place.location; + + let distance = fromLocation.get_distance_from(toLocation); + let duration = (distance / _MAX_DISTANCE) * _MAX_ANIMATION_DURATION; + + // Clamp duration + duration = Math.max(_MIN_ANIMATION_DURATION, + Math.min(duration, _MAX_ANIMATION_DURATION)); + + // We divide by two because Champlain treats both go_to and + // ensure_visible as 'goto' journeys with its own duration. + this._view.goto_animation_duration = duration / 2; + } +}); diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..5cc7e5e3 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,22 @@ +script_conf = configuration_data() +script_conf.set('GJS', find_program('gjs').path()) +script_conf.set('PACKAGE_VERSION', version) +script_conf.set('libdir', libdir) +script_conf.set('prefix', prefix) + +configure_file( + input: app_id + '.in', + output: app_id, + configuration: script_conf, + install: true, + install_dir: pkgdatadir +) + +gnome.compile_resources( + app_id + '.src', + app_id + '.src.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + source_dir: 'geojson-vt' +) diff --git a/src/org.gnome.Maps.in b/src/org.gnome.Maps.in new file mode 100755 index 00000000..1cd74738 --- /dev/null +++ b/src/org.gnome.Maps.in @@ -0,0 +1,5 @@ +#!@GJS@ +imports.package.start({ name: "gnome-maps", + version: "@PACKAGE_VERSION@", + prefix: "@prefix@", + libdir: "@libdir@" }); diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml new file mode 100644 index 00000000..ab2e12f0 --- /dev/null +++ b/src/org.gnome.Maps.src.gresource.xml @@ -0,0 +1,122 @@ + + + + accountListBox.js + address.js + application.js + checkIn.js + checkInDialog.js + color.js + contactPlace.js + contextMenu.js + epaf.js + exportViewDialog.js + facebookBackend.js + favoritesPopover.js + foursquareBackend.js + foursquareGoaAuthorizer.js + geoclue.js + geocode.js + geoJSONShapeLayer.js + geoJSONSource.js + geoJSONStyle.js + gfx.js + gpxShapeLayer.js + graphHopper.js + graphHopperGeocode.js + graphHopperTransit.js + headerBar.js + hvt.js + http.js + instructionRow.js + kmlShapeLayer.js + layersPopover.js + location.js + locationServiceDialog.js + longPrintLayout.js + main.js + mainWindow.js + mapBubble.js + mapMarker.js + mapSource.js + mapView.js + mapWalker.js + osmAccountDialog.js + osmConnection.js + osmEdit.js + osmEditDialog.js + osmTypeSearchEntry.js + osmTypeListRow.js + osmTypePopover.js + osmTypes.js + osmUtils.js + overpass.js + photonGeocode.js + photonParser.js + place.js + placeBubble.js + placeEntry.js + placeFormatter.js + placeListRow.js + placeMarker.js + placePopover.js + placeStore.js + printLayout.js + printOperation.js + route.js + routeEntry.js + routeQuery.js + routingDelegator.js + searchPopover.js + serviceBackend.js + settings.js + sendToDialog.js + service.js + shapeLayer.js + shortPrintLayout.js + sidebar.js + socialPlace.js + socialPlaceListBox.js + socialPlaceMatcher.js + storedRoute.js + time.js + togeojson/togeojson.js + transit.js + transitArrivalMarker.js + transitArrivalRow.js + transitBoardMarker.js + transitItineraryRow.js + transitLegRow.js + transitMoreRow.js + transitOptions.js + transitOptionsPanel.js + transitPlan.js + transitPrintLayout.js + transitRouter.js + transitRouteLabel.js + transitStopRow.js + transitTweaks.js + transitWalkMarker.js + translations.js + turnPointMarker.js + userLocationBubble.js + userLocationMarker.js + utils.js + wikipedia.js + xmldom/dom.js + xmldom/domparser.js + xmldom/sax.js + zoomInDialog.js + clip.js + convert.js + index.js + simplify.js + tile.js + transform.js + wrap.js + transitplugins/goMetro.js + transitplugins/opendataCH.js + transitplugins/openTripPlanner.js + transitplugins/resrobot.js + + diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js new file mode 100644 index 00000000..b9a0ae7d --- /dev/null +++ b/src/osmAccountDialog.js @@ -0,0 +1,216 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const WebKit2 = imports.gi.WebKit2; + +const Application = imports.application; + +var Response = { + SIGNED_IN: 0 +}; + +var OSMAccountDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-account-dialog.ui', + InternalChildren: ['stack', + 'emailEntry', + 'passwordEntry', + 'signInButton', + 'signInSpinner', + 'signUpLinkButton', + 'resetPasswordLabel', + 'verifyGrid', + 'verificationEntry', + 'verifyButton', + 'verificationFailedLabel', + 'signedInUserLabel', + 'signOutButton'], +}, class OSMAccountDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + this._closeOnSignIn = params.closeOnSignIn; + delete params.closeOnSignIn; + + super._init(params); + + this._emailEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('activate', + this._onPasswordActivated.bind(this)); + this._signInButton.connect('clicked', + this._onSignInButtonClicked.bind(this)); + this._verifyButton.connect('clicked', + this._onVerifyButtonClicked.bind(this)); + this._verificationEntry.connect('changed', + this._onVerificationEntryChanged.bind(this)); + this._verificationEntry.connect('activate', + this._onVerificationEntryActivated.bind(this)); + this._signOutButton.connect('clicked', + this._onSignOutButtonClicked.bind(this)); + + /* if the user is logged in, show the logged-in view */ + if (Application.osmEdit.isSignedIn) { + this._signedInUserLabel.label = Application.osmEdit.username; + this._stack.visible_child_name = 'logged-in'; + } + + /* initilize verification web view, we do it programmatically rather + * declare it in the .ui file to be able to enable WebKit sandboxing + */ + let webContext = WebKit2.WebContext.get_default(); + + webContext.set_sandbox_enabled(true); + this._verifyView = WebKit2.WebView.new_with_context(webContext); + this._verifyView.visible = true; + this._verifyView.halign = Gtk.Align.FILL; + this._verifyView.height_request = 150; + this._verifyGrid.attach(this._verifyView, 0, 0, 1, 1); + } + + _onCredentialsChanged() { + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + // make sign in button sensitive if credential have been entered + this._signInButton.sensitive = + email && email.length > 0 && password && password.length > 0; + } + + _onSignInButtonClicked() { + this._performSignIn(); + } + + _onPasswordActivated() { + /* if username and password was entered, proceed with sign-in */ + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + if (email && email.length > 0 && password && password.length > 0) + this._performSignIn(); + } + + _performSignIn() { + /* turn on signing in spinner and desensisize credential entries */ + this._signInSpinner.visible = true; + this._signInButton.sensitive = false; + this._emailEntry.sensitive = false; + this._passwordEntry.sensitive = false; + this._signUpLinkButton.visible = false; + + Application.osmEdit.performOAuthSignIn(this._emailEntry.text, + this._passwordEntry.text, + this._onOAuthSignInPerformed.bind(this)); + } + + _onOAuthSignInPerformed(success, verificationPage) { + if (success) { + /* switch to the verification view and show the verification + page */ + this._verifyView.load_html(verificationPage, + 'https://www.openstreetmap.org/'); + this._stack.visible_child_name = 'verify'; + } else { + /* clear password entry */ + this._passwordEntry.text = ''; + /* show the password reset link */ + this._resetPasswordLabel.visible = true; + } + + this._signInSpinner.visible = false; + /* re-sensisize credential entries */ + this._emailEntry.sensitive = true; + this._passwordEntry.sensitive = true; + } + + _onVerifyButtonClicked() { + this._performVerification(); + } + + _performVerification() { + /* allow copying the leading space between the "The verification is" + label and the code */ + let verificationCode = this._verificationEntry.text.trim(); + + /* Since the text shown on OSM's OAuth authorization verification form + is a bit unclear with a trailing period after the verification code, + let's strip that off if the user copied that over. */ + if (verificationCode.charAt(verificationCode.length - 1) === '.') { + verificationCode = verificationCode.slice(0, -1); + } + + Application.osmEdit.requestOAuthAccessToken(verificationCode, + this._onOAuthAccessTokenRequested.bind(this)); + } + + _onVerificationEntryChanged() { + this._verifyButton.sensitive = + this._verificationEntry.text && + this._verificationEntry.text.length > 0; + } + + _onVerificationEntryActivated() { + /* proceed with verfication if a code has been entered */ + let verificationCode = this._verificationEntry.text; + + if (verificationCode && verificationCode.length > 0) + this._performVerification(); + } + + _onOAuthAccessTokenRequested(success) { + if (success) { + /* update the username label */ + this._signedInUserLabel.label = Application.osmEdit.username; + + if (this._closeOnSignIn) { + this.response(Response.SIGNED_IN); + } else { + /* switch to the logged in view and reset the state in case + the user signs out and start over again */ + this._resetPasswordLabel.visible = false; + this._verificationFailedLabel = false; + this._signUpLinkButton.visible = true; + this._stack.visible_child_name = 'logged-in'; + } + } else { + /* switch back to the sign-in view, and show a label indicating + that verification failed */ + this._resetPasswordLabel.visible = false; + this._signUpLinkButton.visible = false; + this._verificationFailedLabel.visible = true; + this._signInButton.sensitive = true; + this._stack.visible_child_name = 'sign-in'; + } + /* reset verification code entry */ + this._verificationEntry.text = ''; + } + + _onSignOutButtonClicked() { + Application.osmEdit.signOut(); + this._stack.visible_child_name = 'sign-in'; + } +}); diff --git a/src/osmConnection.js b/src/osmConnection.js new file mode 100644 index 00000000..fcb1183a --- /dev/null +++ b/src/osmConnection.js @@ -0,0 +1,452 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Maps = imports.gi.GnomeMaps; +const Rest = imports.gi.Rest; +const Secret = imports.gi.Secret; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://api.openstreetmap.org/api'; +const API_VERSION = '0.6'; + +/* OAuth constants */ +const CONSUMER_KEY = '2lbpDoED0ZspGssTBAJ8zOCtrtmUoX4KnmZUIWIK'; +const CONSUMER_SECRET = 'AO9BhDl9sJ33DjaZgQmYcNIuM3ZSml4xtugai6gE'; +const OAUTH_ENDPOINT_URL = 'https://www.openstreetmap.org/oauth'; +const LOGIN_URL = 'https://www.openstreetmap.org/login'; + +const SECRET_SCHEMA = new Secret.Schema("org.gnome.Maps", + Secret.SchemaFlags.NONE, + { + } +); + +var OSMConnection = class OSMConnection { + + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + + /* OAuth proxy used for making OSM uploads */ + this._callProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + BASE_URL + '/' + API_VERSION, + false); + Maps.osm_init(); + } + + getOSMObject(type, id, callback, cancellable) { + let url = this._getQueryUrl(type, id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + cancellable.connect(() => { + this._session.cancel_message(request, Soup.STATUS_CANCELLED); + }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + callback(false, message.status_code, null, type, null); + return; + } + + try { + let object = Maps.osm_parse (message.response_body.data, + message.response_body.length); + callback(true, message.status_code, object, type, null); + } catch (e) { + Utils.debug(e); + callback(false, message.status_code, null, type, e); + } + }); + } + + _getQueryUrl(type, id) { + return BASE_URL + '/' + API_VERSION + '/' + type + '/' + id; + } + + openChangeset(comment, callback) { + /* we assume that this would only be called if there's already been an + OAuth access token enrolled, so, if the currently instanciated + proxy instance doesn't have a token set, we could safely count on + it being present in the keyring */ + if (this._callProxy.get_token() === null) { + Secret.password_lookup(SECRET_SCHEMA, {}, null, (s, res) => { + this._onPasswordLookedUp(res, + comment, + callback); + }); + } else { + this._doOpenChangeset(comment, callback); + } + } + + _onPasswordLookedUp(result, comment, callback) { + let password = Secret.password_lookup_finish(result); + + if (password) { + let token = password.split(':')[0]; + let secret = password.split(':')[1]; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + this._doOpenChangeset(comment, callback); + } else { + callback(false, null, null); + } + } + + _doOpenChangeset(comment, callback) { + let changeset = + Maps.OSMChangeset.new(comment, 'gnome-maps ' + pkg.version); + let xml = changeset.serialize(); + + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + call.set_method('PUT'); + call.set_function('/changeset/create'); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetOpened(call, callback); }); + } + + _onChangesetOpened(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + let changesetId = parseInt(call.get_payload()); + callback(true, call.get_status_code(), changesetId); + } + + uploadObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('PUT'); + call.set_function(this._getCreateOrUpdateFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectUploaded(call, callback); }); + } + + _onObjectUploaded(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + deleteObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('DELETE'); + call.set_function(this._getDeleteFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectDeleted(call, callback); }); + } + + _onObjectDeleted(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + closeChangeset(changesetId, callback) { + let call = this._callProxy.new_call(); + call.set_method('PUT'); + call.set_function(this._getCloseChangesetFunction(changesetId)); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetClosed(call, callback); }); + } + + _onChangesetClosed(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + _getCloseChangesetFunction(changesetId) { + return '/changeset/' + changesetId + '/close'; + } + + _getCreateOrUpdateFunction(object, type) { + if (object.id) + return type + '/' + object.id; + else + return type + '/create'; + } + + _getDeleteFunction(object, type) { + return type + '/' + id; + } + + requestOAuthToken(callback) { + /* OAuth proxy used for enrolling access tokens */ + this._oauthProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + OAUTH_ENDPOINT_URL, false); + this._oauthProxy.request_token_async('request_token', 'oob', (p, error, w, u) => { + this._onRequestOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onRequestOAuthToken(error, callback) { + if (error) { + Utils.debug(error); + callback(false); + return; + } + + this._oauthToken = this._oauthProxy.get_token(); + this._oauthTokenSecret = this._oauthProxy.get_token_secret(); + callback(true); + } + + authorizeOAuthToken(username, password, callback) { + /* get login session ID */ + let loginUrl = LOGIN_URL + '?cookie_test=true'; + let uri = new Soup.URI(loginUrl); + let msg = new Soup.Message({method: 'GET', uri: uri}); + + this._session.queue_message(msg, (obj, message) => { + this._onLoginFormReceived(message, username, password, callback); + }); + } + + _onLoginFormReceived(message, username, password, callback) { + if (message.status_code !== Soup.Status.OK) { + callback(false); + return; + } + + let osmSessionID = + this._extractOSMSessionID(message.response_headers); + let osmSessionToken = + this._extractToken(message.response_body.data); + + if (osmSessionID === null || osmSessionToken === null) { + callback(false, null); + return; + } + + this._login(username, password, osmSessionID, osmSessionToken, callback); + } + + _login(username, password, sessionId, token, callback) { + /* post login form */ + let msg = Soup.form_request_new_from_hash('POST', LOGIN_URL, + {username: username, + password: password, + referer: '/', + commit: 'Login', + authenticity_token: token}); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', '_osm_session=' + sessionId); + msg.flags |= Soup.MessageFlags.NO_REDIRECT; + + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.MOVED_TEMPORARILY) + this._fetchAuthorizeForm(username, sessionId, callback); + else + callback(false, null); + }); + + } + + _fetchAuthorizeForm(username, sessionId, callback) { + let auth = '/authorize?oauth_token='; + let authorizeUrl = OAUTH_ENDPOINT_URL + auth + this._oauthToken; + let uri = new Soup.URI(authorizeUrl); + let msg = new Soup.Message({uri: uri, method: 'GET'}); + + msg.request_headers.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.OK) { + let token = this._extractToken(message.response_body.data); + this._postAuthorizeForm(username, sessionId, token, callback); + } else { + callback(false, null); + } + }); + } + + _postAuthorizeForm(username, sessionId, token, callback) { + let authorizeUrl = OAUTH_ENDPOINT_URL + '/authorize'; + let msg = Soup.form_request_new_from_hash('POST', authorizeUrl, { + oauth_token: this._oauthToken, + oauth_callback: '', + authenticity_token: token, + allow_write_api: 'yes', + commit: 'Save changes' + }); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + + this._session.queue_message(msg, (obj, message) => { + if (msg.status_code === Soup.Status.OK) { + callback(true, message.response_body.data); + } else + callback(false, null); + }); + } + + requestOAuthAccessToken(code, callback) { + this._oauthProxy.access_token_async('access_token', code, (p, error, w, data) => { + this._onAccessOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onAccessOAuthToken(error, callback) { + if (error) { + callback(false); + return; + } + + let token = this._oauthProxy.token; + let secret = this._oauthProxy.token_secret; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + Secret.password_store(SECRET_SCHEMA, {}, Secret.COLLECTION_DEFAULT, + "OSM OAuth access token and secret", + this._oauthProxy.token + ":" + + this._oauthProxy.token_secret, null, + (source, result, userData) => { + this._onPasswordStored(result, callback); + }); + } + + _onPasswordStored(result, callback) { + let res = false; + if (result) + res = Secret.password_store_finish(result); + callback(res); + } + + signOut() { + /* clear token on call proxy, so it will use a new token if the user + signs in again (with a new access token) during this running + session */ + this._callProxy.token = null; + this._callProxy.token_secret = null; + + Secret.password_clear(SECRET_SCHEMA, {}, null, + this._onPasswordCleared.bind(this)); + } + + _onPasswordCleared(source, result) { + Secret.password_clear_finish(result); + } + + /* extract the session ID from the login form response headers */ + _extractOSMSessionID(responseHeaders) { + let cookie = responseHeaders.get('Set-Cookie'); + + if (cookie === null) + return null; + + let cookieParts = cookie.split(';'); + for (let cookiePart of cookieParts) { + let kvPair = cookiePart.trim().split('='); + let kv = kvPair; + + if (kv.length !== 2) { + continue; + } else if (kv[0] === '_osm_session') { + return kv[1]; + } + } + + return null; + } + + /* extract the authenticity token from the hidden input field of the login + form */ + _extractToken(messageBody) { + let regex = /.*authenticity_token.*value=\"([^\"]+)\".*/; + let lines = messageBody.split('\n'); + + for (let line of lines) { + let match = line.match(regex); + + if (match && match.length === 2) + return match[1]; + } + + return null; + } +}; + +/* + * Gets a status message (usually for an error case) + * to show for a given OSM server response. + */ +function getStatusMessage(statusCode) { + switch (statusCode) { + case Soup.Status.IO_ERROR: + case Soup.Status.UNAUTHORIZED: + /* setting the status in session.cancel_message still seems + to always give status IO_ERROR */ + return _("Incorrect user name or password"); + case Soup.Status.OK: + return _("Success"); + case Soup.Status.BAD_REQUEST: + return _("Bad request"); + case Soup.Status.NOT_FOUND: + return _("Object not found"); + case Soup.Status.CONFLICT: + return _("Conflict, someone else has just modified the object"); + case Soup.Status.GONE: + return _("Object has been deleted"); + case Soup.Status.PRECONDITION_FAILED: + return _("Way or relation refers to non-existing children"); + default: + return null; + } +} diff --git a/src/osmEdit.js b/src/osmEdit.js new file mode 100644 index 00000000..cfb92069 --- /dev/null +++ b/src/osmEdit.js @@ -0,0 +1,193 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Application = imports.application; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMConnection = imports.osmConnection; +const Utils = imports.utils; + +/* minimum zoom level at which to offer adding a location */ +var MIN_ADD_LOCATION_ZOOM_LEVEL = 16; + +var OSMEdit = class OSMEdit { + + constructor() { + this._osmConnection = new OSMConnection.OSMConnection(); + this._osmObject = null; // currently edited object + this._username = Application.settings.get('osm-username'); + this._isSignedIn = this._username !== null && this._username.length > 0; + } + + get object() { + return this._osmObject; + } + + createEditDialog(parentWindow, place) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + place: place + }); + + return dialog; + } + + createEditNewDialog(parentWindow, latitude, longitude) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + addLocation: true, + latitude: latitude, + longitude: longitude + }); + + return dialog; + } + + createAccountDialog(parentWindow, closeOnSignIn) { + let dialog = new OSMAccountDialog.OSMAccountDialog({ + transient_for: parentWindow, + modal: true, + closeOnSignIn: closeOnSignIn + }); + + return dialog; + } + + fetchObject(place, callback, cancellable) { + let osmType = Utils.osmTypeToString(place.osmType); + + /* reset currenly edited object */ + this._osmObject = null; + this._osmConnection.getOSMObject(osmType, place.osm_id, + (function(success, status, osmObject, osmType) { + callback(success, status, osmObject, osmType); + }), cancellable); + } + + uploadObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._uploadObject.bind(this), callback); + } + + _onChangesetOpened(success, status, changesetId, object, type, action, callback) { + if (success) { + let osmType = Utils.osmTypeToString(type); + action(object, osmType, changesetId, callback); + } else { + callback(false, status); + } + } + + _openChangeset(object, type, comment, action, callback) { + this._osmConnection.openChangeset(comment, (success, status, changesetId) => { + this._onChangesetOpened(success, status, changesetId, object, type, action, callback); + }); + } + + _onObjectUploaded(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _uploadObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.uploadObject(object, type, changesetId, (success, status, response) => { + this._onObjectUploaded(success, status, response, changesetId, callback); + }); + } + + deleteObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._deleteObject.bind(this), callback); + } + + _onObjectDeleted(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _deleteObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.deleteObject(object, type, changesetId, (success, status, response) => { + this._onObjectDeleted(success, status, response, changesetId, callback); + }); + } + + _closeChangeset(changesetId, callback) { + this._osmConnection.closeChangeset(changesetId, callback); + } + + performOAuthSignIn(username, password, callback) { + this._osmConnection.requestOAuthToken((success) => { + if (success) + this._onOAuthTokenRequested(username, password, callback); + else + callback(false, null); + }); + } + + _onOAuthTokenRequested(username, password, callback) { + /* keep track of authorizing username */ + this._username = username; + this._osmConnection.authorizeOAuthToken(username, password, callback); + } + + requestOAuthAccessToken(code, callback) { + this._osmConnection.requestOAuthAccessToken(code, (success, token) => { + this._onOAuthAccessTokenRequested(success, callback); + }); + } + + _onOAuthAccessTokenRequested(success, callback) { + if (success) { + this._isSignedIn = true; + Application.settings.set('osm-username', this._username); + } else { + /* clear out username if verification was unsuccessful */ + this._username = null; + } + + callback(success); + } + + signOut() { + this._username = null; + this._isSignedIn = false; + + Application.settings.set('osm-username', ''); + this._osmConnection.signOut(); + } + + get isSignedIn() { + return this._isSignedIn; + } + + get username() { + return this._username; + } +}; diff --git a/src/osmEditDialog.js b/src/osmEditDialog.js new file mode 100644 index 00000000..4504c7b5 --- /dev/null +++ b/src/osmEditDialog.js @@ -0,0 +1,844 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const Maps = imports.gi.GnomeMaps; +const OSMConnection = imports.osmConnection; +const OSMTypes = imports.osmTypes; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const OSMUtils = imports.osmUtils; +const Utils = imports.utils; + +var Response = { + UPLOADED: 0, + DELETED: 1, + CANCELLED: 2, + ERROR: 3 +}; + +/* + * enumeration representing + * the different OSM editing + * field types + */ +const EditFieldType = { + TEXT: 0, + INTEGER: 1, + UNSIGNED_INTEGER: 2, + COMBO: 3, + ADDRESS: 4 +}; + +const _WIKI_BASE = 'https://wiki.openstreetmap.org/wiki/Key:'; + +var _osmWikipediaRewriteFunc = function(text) { + let wikipediaArticleFormatted = OSMUtils.getWikipediaOSMArticleFormatFromUrl(text); + + /* if the entered text is a Wikipedia link, + * substitute it with the OSM-formatted Wikipedia article tag */ + if (wikipediaArticleFormatted) + return wikipediaArticleFormatted; + else + return text; +}; + +/* Reformat a phone number string if it looks like a tel: URI + * strip off the leading tel: protocol string and trailing parameters, + * following a ; + * otherwise return the string unmodified */ +var _osmPhoneRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'tel') { + let afterTel = text.replace('tel:', ''); + + return Soup.uri_decode(afterTel.split(';')[0]); + } else { + return text; + } +}; + +/* + * specification of OSM edit fields + * name: the label for the edit field (translatable) + * tag: the OSM tag key value + * type: the field type (determines editing field type) + * rewriteFunc: a rewrite function taking a string argument + * (only used for TEXT fields) + * placeHolder: set a text place holder to act as example input + * (only used for TEXT fields) + * includeHelp: when true turn the name label to a link to the + * OSM wiki for tags. + * options: The options for the combo box (only used for COMBO fields) + * hint: a hint text to show in a popover displayed by a hint button + * (for TEXT and INTEGER fields) + * subtags: Used by a complex composite OSM tag. + * rows: Number of rows needed if != 1 (Currently only for ADDRESS). + */ +const OSM_FIELDS = [ + { + name: _("Name"), + tag: 'name', + type: EditFieldType.TEXT, + hint: _("The official name. This is typically what appears on signs.") + }, + { + name: _("Address"), + tag: 'addr', + subtags: ['addr:street', 'addr:housenumber', + 'addr:postcode', 'addr:city'], + type: EditFieldType.ADDRESS, + rows: 2 + }, + { + name: _("Website"), + tag: 'website', + type: EditFieldType.TEXT, + hint: _("The official website. Try to use the most basic form " + + "of a URL i.e. http://example.com instead of " + + "http://example.com/index.html.") + }, + { + name: _("Phone"), + tag: 'phone', + type: EditFieldType.TEXT, + rewriteFunc: this._osmPhoneRewriteFunc, + hint: _("Phone number. Use the international format, " + + "starting with a + sign. Beware of local privacy " + + "laws, especially for private phone numbers.") + }, + { + name: _("Wikipedia"), + tag: 'wikipedia', + type: EditFieldType.TEXT, + rewriteFunc: this._osmWikipediaRewriteFunc, + hint: _("The format used should include the language code " + + "and the article title like “en:Article title”.") + }, + { + name: _("Opening hours"), + tag: 'opening_hours', + type: EditFieldType.TEXT, + placeHolder: 'Mo-Fr 08:00-20:00; Sa-Su 10:00-14:00', + includeHelp: true, + hint: _("See the link in the label for help on format.") + }, + { + name: _("Population"), + tag: 'population', + type: EditFieldType.UNSIGNED_INTEGER + }, + { + name: _("Altitude"), + tag: 'ele', + type: EditFieldType.INTEGER, + hint: _("Elevation (height above sea level) of a point in metres.") + }, + { + name: _("Wheelchair access"), + tag: 'wheelchair', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['limited', _("Limited")], + ['designated', _("Designated")]] + }, + { + name: _("Internet access"), + tag: 'internet_access', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['wlan', _("Wi-Fi")], + ['wired', _("Wired")], + ['terminal', _("Terminal")], + ['service', _("Service")]] + }, + { + name: _("Religion"), + tag: 'religion', + type: EditFieldType.COMBO, + options: [['animist', _("Animism")], + ['bahai', _("Bahá’í")], + ['buddhist', _("Buddhism")], + ['caodaism', _("Caodaism")], + ['christian', _("Christianity")], + ['confucian', _("Confucianism")], + ['hindu', _("Hinduism")], + ['jain', _("Jainism")], + ['jewish', _("Judaism")], + ['muslim', _("Islam")], + ['multifaith', _("Multiple Religions")], + ['pagan', _("Paganism")], + ['pastafarian', _("Pastafarianism")], + ['scientologist', _("Scientology")], + ['shinto', _("Shinto")], + ['sikh', _("Sikhism")], + ['spiritualist', _("Spiritualism")], + ['taoist', _("Taoism")], + ['unitarian_universalist', _("Unitarian Universalism")], + ['voodoo', _("Voodoo")], + ['yazidi', _("Yazidism")], + ['zoroastrian', _("Zoroastrianism")]] + }, + { + name: _("Toilets"), + tag: 'toilets', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")]] + }, + { + name: _("Note"), + tag: 'note', + type: EditFieldType.TEXT, + hint: _("Information used to inform other mappers about non-obvious information about an element, the author’s intent when creating it, or hints for further improvement.") + }]; + +const OSMEditAddress = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-address.ui', + Children: [ 'street', + 'number', + 'post', + 'city' ], +}, class OSMEditAddress extends Gtk.Grid { + + _init(params) { + let street = params.street; + delete params.street; + + let number = params.number; + delete params.number; + + let postCode = params.postCode; + delete params.postCode; + + let city = params.city; + delete params.city; + + super._init(params); + + if (street) + this.street.text = street; + + if (number) + this.number.text = number; + + if (postCode) + this.post.text = postCode; + + if (city) + this.city.text = city; + } +}); + + +var OSMEditDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-dialog.ui', + InternalChildren: [ 'cancelButton', + 'backButton', + 'nextButton', + 'stack', + 'editorGrid', + 'commentTextView', + 'addFieldPopoverGrid', + 'addFieldButton', + 'typeSearchGrid', + 'typeLabel', + 'typeButton', + 'typeValueLabel', + 'recentTypesLabel', + 'recentTypesListBox', + 'hintPopover', + 'hintLabel', + 'headerBar'], +}, class OSMEditDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + delete params.place; + + this._addLocation = params.addLocation; + delete params.addLocation; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + /* I could not get this widget working from within the widget template + * this results in a segfault. The widget definition is left in-place, + * but commented-out in the template file */ + this._typeSearch = new OSMTypeSearchEntry.OSMTypeSearchEntry(); + this._typeSearchGrid.attach(this._typeSearch, 0, 0, 1, 1); + this._typeSearch.visible = true; + this._typeSearch.can_focus = true; + + let typeSearchPopover = this._typeSearch.popover; + typeSearchPopover.connect('selected', (o, k, v, t) => { + this._onTypeSelected(o, k, v, t); + }); + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + this._isEditing = false; + this._nextButton.connect('clicked', () => this._onNextClicked()); + this._cancelButton.connect('clicked', () => this._onCancelClicked()); + this._backButton.connect('clicked', () => this._onBackClicked()); + this._typeButton.connect('clicked', () => this._onTypeClicked()); + + if (this._addLocation) { + this._headerBar.title = C_("dialog title", "Add to OpenStreetMap"); + this._typeLabel.visible = true; + this._typeButton.visible = true; + + /* the OSMObject ID, version, and changeset ID is unknown for now */ + let newNode = + Maps.OSMNode.new(0, 0, 0, this._longitude, this._latitude); + /* set a placeholder name tag to always get a name entry for new + * locations */ + newNode.set_tag('name', ''); + this._loadOSMData(newNode); + this._isEditing = true; + this._osmType = Geocode.PlaceOsmType.NODE; + } else { + this._osmType = this._place.osmType; + Application.osmEdit.fetchObject(this._place, + this._onObjectFetched.bind(this), + this._cancellable); + } + + /* store original title of the dialog to be able to restore it when + * coming back from type selection */ + this._originalTitle = this._headerBar.title; + this._updateRecentTypesList(); + + this._recentTypesListBox.set_header_func((row, previous) => { + if (previous) + row.set_header(new Gtk.Separator()); + }); + + this._recentTypesListBox.connect('row-activated', (listbox, row) => { + this._onTypeSelected(null, row._key, row._value, row._title); + }); + } + + _onNextClicked() { + if (this._isEditing) { + this._switchToUpload(); + } else { + this._stack.visible_child_name = 'loading'; + this._nextButton.sensitive = false; + this._backButton.sensitive = false; + + let comment = this._commentTextView.buffer.text; + Application.osmEdit.uploadObject(this._osmObject, + this._osmType, comment, + this._onObjectUploaded.bind(this)); + } + } + + _onTypeClicked() { + this._cancelButton.visible = false; + this._backButton.visible = true; + this._nextButton.visible = false; + this._headerBar.title = _("Select Type"); + this._stack.visible_child_name = 'select-type'; + } + + _onTypeSelected(popover, key, value, title) { + this._typeValueLabel.label = title; + this._updateType(key, value); + + if (popover) + popover.hide(); + + /* clear out type search entry */ + this._typeSearch.text = ''; + + /* go back to the editing stack page */ + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._stack.visible_child_name = 'editor'; + this._headerBar.title = this._originalTitle; + + /* update recent types store */ + OSMTypes.recentTypesStore.pushType(key, value); + + /* enable the Next button, so that it's possible to just change the type + * of an object without changing anything else */ + this._nextButton.sensitive = true; + + this._updateRecentTypesList(); + } + + _updateType(key, value) { + /* clear out any previous type-related OSM tags */ + OSMTypes.OSM_TYPE_TAGS.forEach((tag) => this._osmObject.delete_tag(tag)); + + this._osmObject.set_tag(key, value); + } + + /* update visibility and enable the type selection button if the object has + * a well-known type (based on a known set of tags) */ + _updateTypeButton() { + let numTypeTags = 0; + let lastTypeTag = null; + + for (let i = 0; i < OSMTypes.OSM_TYPE_TAGS.length; i++) { + let key = OSMTypes.OSM_TYPE_TAGS[i]; + let value = this._osmObject.get_tag(key); + + if (value != null) { + numTypeTags++; + lastTypeTag = key; + } + } + + /* if the object has none of tags set, enable the button and keep the + * pre-set "None" label */ + if (numTypeTags === 0) { + this._typeLabel.visible = true; + this._typeButton.visible = true; + } else if (numTypeTags === 1) { + let value = this._osmObject.get_tag(lastTypeTag); + let typeTitle = OSMTypes.lookupType(lastTypeTag, value); + + /* if the type tag has a value we know of, and possible has + * translations for */ + if (typeTitle != null) { + this._typeValueLabel.label = typeTitle; + this._typeLabel.visible = true; + this._typeButton.visible = true; + } + } + } + + _updateRecentTypesList() { + let recentTypes = OSMTypes.recentTypesStore.recentTypes; + + if (recentTypes.length > 0) { + let children = this._recentTypesListBox.get_children(); + + for (let i = 0; i < children.length; i++) { + children[i].destroy(); + } + + this._recentTypesLabel.visible = true; + this._recentTypesListBox.visible = true; + + for (let i = 0; i < recentTypes.length; i++) { + let key = recentTypes[i].key; + let value = recentTypes[i].value; + let title = OSMTypes.lookupType(key, value); + + let row = new Gtk.ListBoxRow({visible: true, hexpand: true}); + let grid = new Gtk.Grid({visible: true, + margin_top: 6, margin_bottom: 6, + margin_start: 12, margin_end: 12}); + let label = new Gtk.Label({visible: true, halign: Gtk.Align.START, + label: title}); + + label.get_style_context().add_class('dim-label'); + + row._title = title; + row._key = key; + row._value = value; + + row.add(grid); + grid.add(label); + + this._recentTypesListBox.add(row); + } + } else { + this._recentTypesLabel.visible = false; + this._recentTypesListBox.visible = false; + } + } + + _switchToUpload() { + this._stack.set_visible_child_name('upload'); + this._nextButton.label = _("Done"); + this._cancelButton.visible = false; + this._backButton.visible = true; + this._cancelButton.visible = false; + this._isEditing = false; + this._commentTextView.grab_focus(); + } + + _onCancelClicked() { + this.response(Response.CANCELLED); + } + + _onBackClicked() { + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._nextButton.label = _("Next"); + this._stack.set_visible_child_name('editor'); + this._isEditing = true; + this._commentTextView.buffer.text = ''; + this._typeSearch.text = ''; + this._headerBar.title = this._originalTitle; + } + + _onObjectFetched(success, status, osmObject, osmType, error) { + if (success) { + this._isEditing = true; + this._loadOSMData(osmObject); + } else { + this._showError(status, error); + } + } + + _onObjectUploaded(success, status) { + if (success) { + this.response(Response.UPLOADED); + } else { + this._showError(status); + this.response(Response.ERROR); + } + } + + _showError(status, error) { + /* set error message from specific error if available, otherwise use + * a generic error message for the HTTP status code */ + let statusMessage = + error ? error.message : OSMConnection.getStatusMessage(status); + let messageDialog = + new Gtk.MessageDialog({ transient_for: this.get_toplevel(), + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: statusMessage }); + + messageDialog.run(); + messageDialog.destroy(); + this.response(Response.ERROR); + } + + /* GtkContainer.child_get_property doesn't seem to be usable from GJS */ + _getRowOfDeleteButton(button) { + for (let row = 1; row < this._currentRow; row++) { + let label = this._editorGrid.get_child_at(0, row); + let deleteButton = this._editorGrid.get_child_at(2, row); + + if (deleteButton === button) + return row; + } + + return -1; + } + + _addOSMEditDeleteButton(fieldSpec) { + let deleteButton = Gtk.Button.new_from_icon_name('user-trash-symbolic', + Gtk.IconSize.BUTTON); + let styleContext = deleteButton.get_style_context(); + let rows = fieldSpec.rows || 1; + + styleContext.add_class('flat'); + this._editorGrid.attach(deleteButton, 2, this._currentRow, 1, 1); + + deleteButton.connect('clicked', () => { + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((key) => this._osmObject.delete_tag(key)); + } else { + this._osmObject.delete_tag(fieldSpec.tag); + } + + let row = this._getRowOfDeleteButton(deleteButton); + for (let i = 0; i < rows; i++) { + this._editorGrid.remove_row(row); + this._currentRow--; + } + this._nextButton.sensitive = true; + this._updateAddFieldMenu(); + }); + + deleteButton.show(); + } + + _addOSMEditLabel(fieldSpec) { + let text = fieldSpec.name; + if (fieldSpec.includeHelp) { + let link = _WIKI_BASE + fieldSpec.tag; + text = '%s'.format(link, link, text); + } + let label = new Gtk.Label({ label: text, + use_markup: true }); + label.halign = Gtk.Align.END; + label.get_style_context().add_class('dim-label'); + this._editorGrid.attach(label, 0, this._currentRow, 1, 1); + label.show(); + } + + _showHintPopover(entry, hint) { + if (this._hintPopover.visible) { + this._hintPopover.popdown(); + } else { + this._hintPopover.relative_to = entry; + this._hintLabel.label = hint; + this._hintPopover.popup(); + } + } + + _addOSMEditTextEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let entry = new Gtk.Entry(); + entry.text = value; + entry.hexpand = true; + if (fieldSpec.placeHolder) + entry.placeholder_text = fieldSpec.placeHolder; + + entry.connect('changed', () => { + if (fieldSpec.rewriteFunc) + entry.text = fieldSpec.rewriteFunc(entry.text); + this._osmObject.set_tag(fieldSpec.tag, entry.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + entry.secondary_icon_name = 'dialog-information-symbolic'; + entry.connect('icon-press', (entry, iconPos, event) => { + this._showHintPopover(entry, fieldSpec.hint); + }); + } + + this._editorGrid.attach(entry, 1, this._currentRow, 1, 1); + entry.show(); + entry.grab_focus(); + + /* TODO: should we allow deleting the name field? */ + this._addOSMEditDeleteButton(fieldSpec); + + this._currentRow++; + } + + _addOSMEditIntegerEntry(fieldSpec, value, min, max) { + this._addOSMEditLabel(fieldSpec); + + let spinbutton = Gtk.SpinButton.new_with_range(min, max, 1); + spinbutton.value = value; + spinbutton.numeric = true; + spinbutton.hexpand = true; + spinbutton.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, spinbutton.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + spinbutton.secondary_icon_name = 'dialog-information-symbolic'; + spinbutton.connect('icon-press', (iconPos, event) => { + this._showHintPopover(spinbutton, fieldSpec.hint); + }); + } + + this._editorGrid.attach(spinbutton, 1, this._currentRow, 1, 1); + spinbutton.show(); + spinbutton.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditComboEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let combobox = new Gtk.ComboBoxText(); + + fieldSpec.options.forEach(function(option) { + combobox.append(option[0], option[1]); + }); + combobox.active_id = value; + combobox.hexpand = true; + combobox.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, combobox.active_id); + this._nextButton.sensitive = true; + }); + + this._editorGrid.attach(combobox, 1, this._currentRow, 1, 1); + combobox.show(); + combobox.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditAddressEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let addr = new OSMEditAddress({ street: value[0], + number: value[1], + postCode: value[2], + city: value[3] }); + let changedFunc = (function(entry, index) { + this._osmObject.set_tag(fieldSpec.subtags[index], entry.text); + this._nextButton.sensitive = true; + }).bind(this); + + addr.street.connect('changed', changedFunc.bind(this, addr.street, 0)); + addr.number.connect('changed', changedFunc.bind(this, addr.number, 1)); + addr.post.connect('changed', changedFunc.bind(this, addr.post, 2)); + addr.city.connect('changed', changedFunc.bind(this, addr.city, 3)); + + let rows = fieldSpec.rows || 1; + this._editorGrid.attach(addr, 1, this._currentRow, 1, rows); + addr.street.grab_focus(); + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow += rows; + } + + /* update visible items in the "Add Field" popover */ + _updateAddFieldMenu() { + /* clear old items */ + let children = this._addFieldPopoverGrid.get_children(); + let hasAllFields = true; + + for (let i = 0; i < children.length; i++) { + let button = children[i]; + button.destroy(); + } + + /* add selectable items */ + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let hasValue = false; + + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + if (this._osmObject.get_tag(tag) !== null) + hasValue = true; + }); + } else { + hasValue = this._osmObject.get_tag(fieldSpec.tag) !== null; + } + + if (!hasValue) { + let button = new Gtk.Button({ + visible: true, sensitive: true, + label: fieldSpec.name + }); + button.get_style_context().add_class('menuitem'); + button.get_style_context().add_class('button'); + button.get_style_context().add_class('flat'); + button.get_child().halign = Gtk.Align.START; + + button.connect('clicked', () => { + this._addFieldButton.active = false; + this._addOSMField(fieldSpec); + /* add a "placeholder" empty OSM tag to keep the add field + * menu updated, these tags will be filtered out if nothing + * is entered */ + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + this._osmObject.set_tag(tag, ''); + }); + } else { + this._osmObject.set_tag(fieldSpec.tag, ''); + } + this._updateAddFieldMenu(); + }); + + hasAllFields = false; + this._addFieldPopoverGrid.add(button); + } + } + + this._addFieldButton.sensitive = !hasAllFields; + } + + _addOSMField(fieldSpec, value) { + switch (fieldSpec.type) { + case EditFieldType.TEXT: + this._addOSMEditTextEntry(fieldSpec, value || ''); + break; + case EditFieldType.INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, -1e9, 1e9); + break; + case EditFieldType.UNSIGNED_INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, 0, 1e9); + break; + case EditFieldType.COMBO: + this._addOSMEditComboEntry(fieldSpec, value || ''); + break; + case EditFieldType.ADDRESS: + this._addOSMEditAddressEntry(fieldSpec, value || ''); + break; + } + } + + _loadOSMData(osmObject) { + this._osmObject = osmObject; + + /* keeps track of the current insertion row in the grid for editing + * widgets */ + this._currentRow = 1; + + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let value; + + if (fieldSpec.subtags) { + let hasAny = false; + fieldSpec.subtags.forEach(function(tag) { + if (osmObject.get_tag(tag) != null) + hasAny = true; + }); + + if (hasAny) { + value = fieldSpec.subtags.map(function(tag) { + return osmObject.get_tag(tag); + }); + this._addOSMField(fieldSpec, value); + } + } else { + value = osmObject.get_tag(fieldSpec.tag); + if (value != null) + this._addOSMField(fieldSpec, value); + } + } + + this._updateAddFieldMenu(); + this._updateTypeButton(); + this._stack.visible_child_name = 'editor'; + } +}); diff --git a/src/osmTypeListRow.js b/src/osmTypeListRow.js new file mode 100644 index 00000000..795d203c --- /dev/null +++ b/src/osmTypeListRow.js @@ -0,0 +1,50 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var OSMTypeListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-list-row.ui', + InternalChildren: [ 'name' ] +}, class OSMTypeListRow extends Gtk.ListBoxRow { + + _init(props) { + this._type = props.type; + delete props.type; + + super._init(props); + + this._name.label = this._type.title; + } + + get key() { + return this._type.key; + } + + get value() { + return this._type.value; + } + + get title() { + return this._type.title; + } +}); diff --git a/src/osmTypePopover.js b/src/osmTypePopover.js new file mode 100644 index 00000000..5355ca5d --- /dev/null +++ b/src/osmTypePopover.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypeListRow = imports.osmTypeListRow; +const SearchPopover = imports.searchPopover; + +var OSMTypePopover = GObject.registerClass({ + InternalChildren: ['list'], + Template: 'resource:///org/gnome/Maps/ui/osm-type-popover.ui', + Signals : { + /* signal emitted when selecting a type, indicates OSM key and value + * and display title */ + 'selected' : { param_types: [ GObject.TYPE_STRING, + GObject.TYPE_STRING, + GObject.TYPE_STRING ] } + } +}, class OSMTypePopover extends SearchPopover.SearchPopover { + + _init(props) { + super._init(props); + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.key, row.value, row.title); + }); + } + + showMatches(matches) { + this._list.forall((row) => row.destroy()); + + matches.forEach((type) => this._addRow(type)); + this.show(); + } + + _addRow(type) { + let row = new OSMTypeListRow.OSMTypeListRow({ type: type, + can_focus: true }); + this._list.add(row); + } +}); diff --git a/src/osmTypeSearchEntry.js b/src/osmTypeSearchEntry.js new file mode 100644 index 00000000..eae92355 --- /dev/null +++ b/src/osmTypeSearchEntry.js @@ -0,0 +1,75 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypePopover = imports.osmTypePopover; +const OSMTypes = imports.osmTypes; +const Utils = imports.utils; + +const MAX_MATCHES = 10; + +var OSMTypeSearchEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-search-entry.ui' +}, class OSMTypeSearchEntry extends Gtk.SearchEntry { + + _init(props) { + super._init(props); + + this._popover = + new OSMTypePopover.OSMTypePopover({relative_to: this}); + + this.connect('size-allocate', (widget, allocation) => { + /* Magic number to make the alignment pixel perfect. */ + let width_request = allocation.width + 20; + this._popover.width_request = width_request; + }); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + this.connect('activate', this._onSearchChanged.bind(this)); + } + + get popover() { + return this._popover; + } + + _onSearchChanged() { + if (this.text.length === 0) { + this._popover.hide(); + return; + } + + /* Note: Not sure if searching already on one character might be a bit + * too much, but unsure about languages such as Chinese and Japanese + * using ideographs. */ + if (this.text.length >= 1) { + let matches = OSMTypes.findMatches(this.text, MAX_MATCHES); + + if (matches.length > 0) { + /* show search results */ + this._popover.showMatches(matches); + } else { + this._popover.hide(); + } + } + } +}); diff --git a/src/osmTypes.js b/src/osmTypes.js new file mode 100644 index 00000000..8020043a --- /dev/null +++ b/src/osmTypes.js @@ -0,0 +1,165 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +const Utils = imports.utils; + +const _RECENT_TYPES_STORE_FILE = 'maps-recent-types.json'; +const _NUM_RECENT_TYPES = 10; + +const _file = Gio.file_new_for_uri('resource://org/gnome/Maps/osm-types.json'); +const [_status, _buffer] = _file.load_contents(null); +const OSM_TYPE_MAP = JSON.parse(Utils.getBufferText(_buffer)); + +/* Lists the OSM tags we base our notion of location types on */ +var OSM_TYPE_TAGS = ['aeroway', 'amenity', 'leisure', 'office', 'place', 'shop', 'tourism' ]; + +/* Sort function comparing two type values accoring to the locale-specific + * comparison of the type title */ +function _sortType(t1, t2) { + return t1.title.toLocaleLowerCase().localeCompare(t2.title.toLocaleLowerCase()); +} + +/* find the localized display title and a normalized locale-specific lower case + * value for search purposes, given a type mapping value, + * also cache the title to avoid re-iterating the language map every time, + * and store the lower-case normalized title in the current locale */ +function _lookupTitle(item) { + let langs = GLib.get_language_names(); + let title = item.cachedTitle; + + if (title) + return [title, item.normalizedTitle]; + + for (let i = 0; i < langs.length; i++) { + title = item.title[langs[i].replace('_', '-')]; + + if (title) { + let normalizedTitle = title.toLocaleLowerCase(); + + item.cachedTitle = title; + item.normalizedTitle = normalizedTitle; + return [title, normalizedTitle]; + } + } + + return null; +} + +function findMatches(prefix, maxMatches) { + let numMatches = 0; + let prefixLength = prefix.length; + let normalized = prefix.toLocaleLowerCase(); + let matches = []; + + for (let type in OSM_TYPE_MAP) { + let item = OSM_TYPE_MAP[type]; + let [title, normalizedTitle] = _lookupTitle(item); + let parts = type.split('/'); + + /* if the (locale-case-normalized) title matches parts of the search + * string, or as a convenience for expert mappers, if the search string + * is prefix of the raw OSM tag value */ + if (normalizedTitle.indexOf(normalized) != -1 + || (prefixLength >= 3 && parts[1].startsWith(prefix))) { + numMatches++; + matches.push({key: parts[0], value: parts[1], title: title}); + } + + if (numMatches === maxMatches) + break; + } + + return matches.sort(_sortType); +} + +/* return the title of a type with a given key/value if it is known by us */ +function lookupType(key, value) { + let item = OSM_TYPE_MAP[key + '/' + value]; + + if (item) { + let [title, _] = _lookupTitle(item); + return title; + } else + return null; +} + +var RecentTypesStore = class RecentTypesStore { + + constructor() { + this._filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _RECENT_TYPES_STORE_FILE]); + this._load(); + } + + get recentTypes() { + return this._recentTypes; + } + + _load() { + if (!GLib.file_test(this._filename, GLib.FileTest.EXISTS)) { + this._recentTypes = []; + return; + } + + let buffer = Utils.readFile(this._filename); + if (buffer === null) { + this._recentTypes = []; + return; + } + + this._recentTypes = JSON.parse(Utils.getBufferText(buffer)); + } + + _save() { + let buffer = JSON.stringify(this._recentTypes); + if (!Utils.writeFile(this._filename, buffer)) + log('Failed to write recent types file!'); + } + + /* push a type key/value as the most recently used type */ + pushType(key, value) { + /* find out if the type is already stored */ + let pos = -1; + for (let i = 0; i < this._recentTypes.length; i++) { + if (this._recentTypes[i].key === key && + this._recentTypes[i].value === value) { + pos = i; + break; + } + } + + /* remove the type if it was already found in the list */ + if (pos != -1) + this._recentTypes.splice(pos, 1); + + this._recentTypes.unshift({key: key, value: value}); + + /* prune the list */ + this._recentTypes.splice(_NUM_RECENT_TYPES); + + this._save(); + } +}; + +var recentTypesStore = new RecentTypesStore(); diff --git a/src/osmUtils.js b/src/osmUtils.js new file mode 100644 index 00000000..ad19c7c5 --- /dev/null +++ b/src/osmUtils.js @@ -0,0 +1,75 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Soup = imports.gi.Soup; + +const Application = imports.application; + +/* + * Gets a Wikipedia article in OSM tag format (i.e. lang:Article title) + * given a URL or null if input doesn't match a Wikipedia URL + */ +function getWikipediaOSMArticleFormatFromUrl(url) { + let regex = /https?:\/\/(..)\.wikipedia\.org\/wiki\/(.+)/; + let match = url.match(regex); + + if (match && match.length == 3) { + let lang = match[1]; + let article = match[2]; + + return lang + ':' + Soup.uri_decode(article).replace(/_/g, ' '); + } else { + return null; + } +} + +/** + * Updates a Place object according to an OSMObject. + * Will also update place in the place store. + */ +function updatePlaceFromOSMObject(place, object) { + let name = object.get_tag('name'); + + if (name) { + /* only update the place's name from the OSM object if the OSM object + * actually has a name set. + * https://bugzilla.gnome.org/show_bug.cgi?id=762569 + */ + place.name = name; + } + place.population = object.get_tag('population'); + place.website = object.get_tag('website'); + place.phone = object.get_tag('phone'); + place.wiki = object.get_tag('wikipedia'); + place.openingHours = object.get_tag('opening_hours'); + place.wheelchair = object.get_tag('wheelchair'); + place.toilets = object.get_tag('toilets'); + place.internetAccess = object.get_tag('internet_access'); + place.religion = object.get_tag('religion'); + + let altitude = object.get_tag('ele'); + + if (altitude) + place.location.altitude = altitude; + + Application.placeStore.updatePlace(place); +} diff --git a/src/overpass.js b/src/overpass.js new file mode 100644 index 00000000..af1ea389 --- /dev/null +++ b/src/overpass.js @@ -0,0 +1,262 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Rishi Raj Singh Jhelumi + */ + +const Format = imports.format; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Soup = imports.gi.Soup; + +const PhotonParser = imports.photonParser; +const Place = imports.place; +const Utils = imports.utils; + +const _DEFAULT_TIMEOUT = 180; +const _DEFAULT_MAXSIZE = 536870912; +const _DEFAULT_OUTPUT_FORMAT = 'json'; +const _DEFAULT_OUTPUT_COUNT = 1e6; +const _DEFAULT_OUTPUT_INFO = 'body'; +const _DEFAULT_OUTPUT_SORT_ORDER = 'qt'; + +const BASE_URL = 'https://overpass-api.de/api/interpreter'; + +var Overpass = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'Place with added information', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class Overpass extends GObject.Object { + + _init(params) { + params = params || { }; + + super._init(); + + // maximum allowed runtime for the query in seconds + this.timeout = params.timeout || _DEFAULT_TIMEOUT; + + // maximum allowed memory for the query in bytes RAM on the server + this.maxsize = params.maxsize || _DEFAULT_MAXSIZE; + + // output format : json or xml + this.outputFormat = params.outputFormat || _DEFAULT_OUTPUT_FORMAT; + + // maximum number of results the output must contain + this.outputCount = params.outputCount || _DEFAULT_OUTPUT_COUNT; + + // data output info must contain : ids, skel, body, meta + this.outputInfo = params.outputInfo || _DEFAULT_OUTPUT_INFO; + + // data sort order : qt(fastest based on geography), ids, asc + this.outputSortOrder = params.outputSortOrder || _DEFAULT_OUTPUT_SORT_ORDER; + + // HTTP Session Variables + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + addInfo(place) { + let url = this._getQueryUrl(Utils.osmTypeToString(place.osm_type), + place.osm_id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + return; + } + try { + let jsonObj = JSON.parse(message.response_body.data); + this._populatePlace(place, jsonObj); + this.place = place; + this.notify('place'); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + } + }); + } + + fetchPlace(osmType, osmId, callback) { + let url = this._getQueryUrl(osmType, osmId); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + callback(null); + } + try { + let jsonObj = JSON.parse(message.response_body.data); + let place = this._createPlace(jsonObj, osmType, osmId); + callback(place); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + callback(null); + } + }) + } + + _createPlace(overpassData, osmType, osmId) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return null; + + let [lat, lon] = this._getCoordsFromElement(element); + let photonProperties = + this._getPhotonProperties(element.tags, osmType, osmId); + let place = PhotonParser.parsePlace(lat, lon, photonProperties); + + this._populatePlace(place, overpassData); + place.prefilled = true; + + return place; + } + + _getCoordsFromElement(element) { + if (element.type === 'node') + return [element.lat, element.lon]; + else + return [element.center.lat, element.center.lon]; + } + + _getPhotonProperties(tags, osmType, osmId) { + let properties = {}; + + properties.osm_type = this._getPhotonOsmType(osmType); + properties.osm_id = osmId; + + if (tags.name) + properties.name = tags.name; + + if (tags['addr:street']) + properties.street = tags['addr:street']; + if (tags['addr:housenumber']) + properties.housenumber = tags['addr:housenumber']; + if (tags['addr:postcode']) + properties.postcode = tags['addr:postcode']; + if (tags['addr:city']) + properties.city = tags['addr:city']; + + if (tags.place) + this._setOsmKeyAndValue(properties, tags, 'place'); + else if (tags.amenity) + this._setOsmKeyAndValue(properties, tags, 'amenity'); + else if (tags.leisure) + this._setOsmKeyAndValue(properties, tags, 'leisure'); + else if (tags.shop) + this._setOsmKeyAndValue(properties, tags, 'shop'); + else if (tags.highway) + this._setOsmKeyAndValue(properties, tags, 'highway'); + else if (tags.railway) + this._setOsmKeyAndValue(properties, tags, 'railway'); + else if (tags.aeroway) + this._setOsmKeyAndValue(properties, tags, 'aeroway'); + else if (tags.building) + this._setOsmKeyAndValue(properties, tags, 'building'); + + return properties; + } + + _getPhotonOsmType(osmType) { + switch (osmType) { + case 'node': return 'N'; + case 'way': return 'W'; + case 'relation': return 'R'; + default: return null; + } + } + + _setOsmKeyAndValue(properties, tags, tag) { + properties.osm_key = tag; + properties.osm_value = tags[tag]; + } + + _populatePlace(place, overpassData) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return; + + if (element.tags.name) + place.name = element.tags.name; + if (element.tags.population) + place.population = element.tags.population; + if (element.tags['contact:website']) + place.website = element.tags['contact:website']; + if (element.tags.website) + place.website = element.tags.website; + if (element.tags['contact:phone']) + place.phone = element.tags['contact:phone']; + if (element.tags.phone) + place.phone = element.tags.phone; + if (element.tags.wikipedia) + place.wiki = element.tags.wikipedia; + if (element.tags.wheelchair) + place.wheelchair = element.tags.wheelchair; + if (element.tags.opening_hours) + place.openingHours = element.tags.opening_hours; + if (element.tags.internet_access) + place.internetAccess = element.tags.internet_access; + if (element.tags.ele && place.location) + place.location.altitude = parseFloat(element.tags.ele); + if (element.tags.religion) + place.religion = element.tags.religion + if (element.tags.toilets) + place.toilets = element.tags.toilets; + if (element.tags.note) + place.note = element.tags.note; + } + + _getQueryUrl(osmType, osmId) { + return Format.vprintf('%s?data=%s', [BASE_URL, + this._generateOverpassQuery(osmType, + osmId)]); + } + + _generateOverpassQuery(osmType, osmId) { + return Format.vprintf('%s%s%s;%s;%s;', + [ this._getKeyValue('timeout', this.timeout), + this._getKeyValue('out', this.outputFormat), + this._getKeyValue('maxsize', this.maxsize), + this._getData(osmType, osmId), + this._getOutput() ]); + } + + _getKeyValue(key, value) { + return Format.vprintf('[%s:%s]', [ key, + value ]); + } + + _getData(osmType, osmId) { + return Format.vprintf('%s(%s)', [osmType, osmId]); + } + + _getOutput() { + return Format.vprintf('out center %s %s %s', [ this.outputInfo, + this.outputSortOrder, + this.outputCount ]); + } +}); diff --git a/src/photonGeocode.js b/src/photonGeocode.js new file mode 100644 index 00000000..0de55dd2 --- /dev/null +++ b/src/photonGeocode.js @@ -0,0 +1,177 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var PhotonGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().photonGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().photonGeocode.attributionUrl; + } + + get name() { + return 'Photon'; + } + + get url() { + return 'https://github.com/Komoot/photon'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let features = json.features; + + if (!features || features.length === 0) { + Utils.debug('No features in response'); + return null; + } + + features.forEach(feature => { + let place = this._parseFeature(feature); + + if (place) + result.push(place); + }); + + return result; + } + + _parseFeature(feature) { + let [lon, lat] = feature.geometry.coordinates; + + return PhotonParser.parsePlace(lat, lon, feature.properties); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ lat: latitude, + lon: longitude, + limit: string ? this._limit : 1 + }); + + if (string) + query.add('q', string); + else + query.add('distance_sort', 'true'); + + if (this._language) + query.add('lang', this._language); + + if (this._additionalParams) + this._additionalParams.forEach((p) => query.add(p.key, p.value)); + + return Format.vprintf('%s/%s/?%s', [this._baseUrl, + string ? 'api' : 'reverse', + query.toString()]); + } + + _readService() { + let photon = Service.getService().photonGeocode; + let language = Utils.getLanguage(); + let supportedLanguages; + + if (photon) { + this._baseUrl = photon.baseUrl; + supportedLanguages = photon.supportedLanguages; + + if (photon.additionalParams) + this._additionalParams = photon.additionalParams; + } + + if (supportedLanguages.includes(language)) + this._language = language; + else + this._language = null; + } +} diff --git a/src/photonParser.js b/src/photonParser.js new file mode 100644 index 00000000..3c3a78b6 --- /dev/null +++ b/src/photonParser.js @@ -0,0 +1,208 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GWeather = imports.gi.GWeather; + +const Address = imports.address; +const OSMTypes = imports.osmTypes; +const Place = imports.place; +const Utils = imports.utils; + +function parsePlace(latitude, longitude, properties) { + let location = new Geocode.Location({ latitude: latitude, + longitude: longitude, + accuracy: 0.0 }); + let type = _parsePlaceType(properties); + let name = _parseName(properties); + + if (!name) + return null; + + let street = properties.street; + let housenumber = properties.housenumber; + let countryCode = Utils.getCountryCodeForCoordinates(latitude, longitude); + let streetAddress; + + if (housenumber && street) { + streetAddress = Address.streetAddressForCountryCode(street, housenumber, + countryCode); + + /* in some cases Photon seems to give housenumber or street as name, + * in that case set the name as the formatted street address + */ + if (name === housenumber || name === street) + name = streetAddress; + } + + let place = new Geocode.Place({ name: name, + place_type: type, + location: location }); + + if (streetAddress) + place.street_address = streetAddress; + + if (properties.osm_id && properties.osm_type) { + place.osm_id = properties.osm_id + ''; // Geocode-glib needs this as a string + place.osm_type = _parseOsmType(properties.osm_type); + } + + if (properties.street) + place.street = properties.street; + + if (properties.city) + place.town = properties.city; + + if (properties.postcode) + place.postal_code = properties.postcode; + + if (properties.state) + place.state = properties.state; + + if (countryCode) + place.country_code = countryCode; + + if (!countryCode && properties.country) + place.country = properties.country; + + return new Place.Place({ place: place }); +} + +function _parseName(properties) { + if (!properties) + return ''; + + if (properties.name) { + return properties.name; + } else if (properties.housenumber) { + return properties.housenumber; + } else { + let typeTitle = + OSMTypes.lookupType(properties.osm_key, properties.osm_value); + + return typeTitle || _("Unnamed place"); + } +} + +function _parseOsmType(osmType) { + switch (osmType) { + case 'N': + return Geocode.PlaceOsmType.NODE; + case 'W': + return Geocode.PlaceOsmType.WAY; + case 'R': + return Geocode.PlaceOsmType.RELATION; + default: + return Geocode.PlaceOsmType.UNKNOWN; + } +} + +function _parsePlaceType(properties) { + if (!properties) + return Geocode.PlaceType.UNKNOWN; + + let key = properties.osm_key; + let value = properties.osm_value; + + switch (key) { + case 'place': + switch (value) { + case 'continent': + return Geocode.PlaceType.CONTINENT; + case 'country': + return Geocode.PlaceType.COUNTRY; + case 'city': + case 'town': + case 'village': + case 'hamlet': + return Geocode.PlaceType.TOWN; + case 'suburb': + return Geocode.PlaceType.SUBURB; + case 'house': + return Geocode.PlaceType.BUILDING; + case 'island': + return Geocode.PlaceType.ISLAND; + case 'municipality': + return Geocode.PlaceType.COUNTY; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'amenity': + switch (value) { + case 'bar': + case 'pub': + case 'nightclub': + return Geocode.PlaceType.BAR; + case 'restaurant': + case 'fast_food': + return Geocode.PlaceType.RESTAURANT; + case 'school': + case 'kindergarten': + return Geocode.PlaceType.SCHOOL; + case 'place_of_worship': + return Geocode.PlaceType.PLACE_OF_WORSHIP; + case 'bus_station': + return Geocode.PlaceType.BUS_STOP; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'highway': + switch (value) { + case 'bus_stop': + return Geocode.PlaceType.BUS_STOP; + case 'motorway': + return Geocode.PlaceType.MOTORWAY; + default: + return Geocode.PlaceType.STREET; + } + case 'railway': + switch (value) { + case 'station': + case 'stop': + case 'halt': + return Geocode.PlaceType.RAILWAY_STATION; + case 'tram_stop': + return Geocode.PlaceType.LIGHT_RAIL_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'aeroway': + switch (value) { + case 'aerodrome': + return Geocode.PlaceType.AIRPORT; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'building': + switch (value) { + case 'yes': + return Geocode.PlaceType.BUILDING; + case 'railway_station': + return Geocode.PlaceType.RAILWAY_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + default: + return Geocode.PlaceType.MISCELLANEOUS; + } +} diff --git a/src/place.js b/src/place.js new file mode 100644 index 00000000..675e3320 --- /dev/null +++ b/src/place.js @@ -0,0 +1,524 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Overpass = imports.overpass; +const Translations = imports.translations; +const Utils = imports.utils; + +// Matches coordinates string in 'Decimal Degrees' format +const DECIMAL_COORDINATES_REGEX = ( + /^\s*(\-?\d+(?:\.\d+)?)°?\s*,\s*(\-?\d+(?:\.\d+)?)°?\s*$/ +); + +// Matches coordinates string in 'Degrees, Minutes, Seconds' format +const DMS_COORDINATES_REGEX = new RegExp( + /^\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(N|S)\s*,?/.source + + /\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(W|E)\s*$/.source, + "i" +); + +// Matches a URL pointing to an object in OpenStreetMap +const OSM_OBJECT_URL_REGEX = + new RegExp(/https?:\/\/(www\.)?openstreetmap\.org\/(node|way|relation)\/(\d+)\/?$/); + +// Matches a URL with a specifies coordinate in OpenStreetMap +const OSM_COORD_URL_REGEX = + new RegExp(/https?:\/\/(www\.)?openstreetmap\.org\/?\?(\&?mlat=(\d+(?:\.\d+)?))?(\&mlon=(\d+(?:\.\d+)?))?(\&zoom=(\d+))?(\#map=(\d+)\/(\d+(?:\.\d+)?)\/(\d+(?:\.\d+)?))?/); + +var Place = GObject.registerClass( +class Place extends Geocode.Place { + + _init(params) { + this._isCurrentLocation = params.isCurrentLocation; + delete params.isCurrentLocation; + + this._population = params.population; + delete params.population; + + this._website = params.website; + delete params.website; + + this._phone = params.phone; + delete params.phone; + + this._wiki = params.wiki; + delete params.wiki; + + this._openingHours = params.openingHours; + delete params.openingHours; + + this._internetAccess = params.internetAccess; + delete params.internetAccess; + + this._religion = params.religion; + delete params.religion; + + this._toilets = params.toilets; + delete params.toilets; + + this._note = params.note; + delete params.note; + + this._initialZoom = params.initialZoom; + delete params.initialZoom; + + /* set to true if the instance is pre-filled with Overpass data, + * at the time of creation, as will be the case when loading a place + * from an OSM object URL + */ + this._prefilled = params.prefilled; + delete params.prefilled; + + /* Determines if the place should be added to the place store */ + if (typeof(params.store) === 'undefined') { + this._store = true; + } else { + this._store = params.store; + delete params.store; + } + + this._wheelchair = params.wheelchair; + delete params.wheelchair; + + if (params.place) { + params = { osm_id: params.place.osm_id, + osm_type: params.place.osm_type, + name: params.place.name, + location: params.place.location, + bounding_box: params.place.bounding_box, + place_type: params.place.place_type, + street_address: params.place.street_address, + street: params.place.street, + building: params.place.building, + postal_code: params.place.postal_code, + area: params.place.area, + town: params.place.town, + state: params.place.state, + county: params.place.county, + country: params.place.country, + country_code: params.place.contry_code, + continent: params.place.continent }; + } + + for (let prop in params) + if (!params[prop]) + delete params[prop]; + + super._init(params); + } + + set store(v) { + this._store = v; + } + + get store() { + return this._store; + } + + get uniqueID() { + return this.osm_type + '-' + this.osm_id; + } + + get isCurrentLocation() { + return this._isCurrentLocation; + } + + set population(v) { + this._population = v; + } + + get population() { + return this._population; + } + + set website(v) { + this._website = v; + } + + get website() { + return this._website; + } + + set phone(v) { + this._phone = v; + } + + get phone() { + return this._phone; + } + + set wiki(v) { + this._wiki = v; + } + + get wiki() { + return this._wiki; + } + + set openingHours(v) { + this._openingHours = v; + } + + get openingHours() { + return this._openingHours; + } + + set internetAccess(v) { + this._internetAccess = v; + } + + get openingHoursTranslated() { + return Translations.translateOpeningHours(this._openingHours); + } + + get internetAccess() { + return this._internetAccess; + } + + get internetAccessTranslated() { + return Translations.translateInternetAccess(this._internetAccess); + } + + set religion(v) { + this._religion = v; + } + + get religion() { + return this._religion; + } + + get religionTranslated() { + return Translations.translateReligion(this._religion); + } + + set toilets(v) { + this._toilets = v; + } + + get toilets() { + return this._toilets; + } + + get toiletsTranslated() { + return Translations.translateYesNo(this._toilets); + } + + set note(v) { + this._note = v; + } + + get note() { + return this._note; + } + + set wheelchair(v) { + this._wheelchair = v; + } + + get wheelchair() { + return this._wheelchair; + } + + get wheelchairTranslated() { + return this._translateWheelchair(this._wheelchair); + } + + get initialZoom() { + return this._initialZoom; + } + + get prefilled() { + return this._prefilled; + } + + set prefilled(prefilled) { + this._prefilled = prefilled; + } + + _translateWheelchair(string) { + switch(string) { + /* Translators: + * This means wheelchairs have full unrestricted access. + */ + case 'yes': return _("yes"); + + /* Translators: + * This means wheelchairs have partial access (e.g some areas + * can be accessed and others not, areas requiring assistance + * by someone pushing up a steep gradient). + */ + case 'limited': return _("limited"); + + /* Translators: + * This means wheelchairs have no unrestricted access + * (e.g. stair only access). + */ + case 'no': return _("no"); + + /* Translators: + * This means that the way or area is designated or purpose built + * for wheelchairs (e.g. elevators designed for wheelchair access + * only). This is rarely used. + */ + case 'designated': return _("designated"); + + default: return null; + } + } + + + toJSON() { + let bounding_box = null; + + if (this.bounding_box) { + bounding_box = { top: this.bounding_box.top, + bottom: this.bounding_box.bottom, + left: this.bounding_box.left, + right: this.bounding_box.right }; + } + + let location = { latitude: this.location.latitude, + longitude: this.location.longitude, + altitude: this.location.altitude, + accuracy: this.location.accuracy }; + + return { id: this.osm_id, + osm_type: this.osm_type, + place_type: this.place_type, + name: this.name, + bounding_box: bounding_box, + this_type: this.this_type, + location: location, + street_address: this.street_address, + street: this.street, + building: this.building, + postal_code: this.postal_code, + area: this.area, + town: this.town, + state: this.state, + county: this.county, + country: this.country, + country_code: this.contry_code, + continent: this.continent, + population: this.population, + website: this.website, + phone: this.phone, + wiki: this.wiki, + wheelchair: this.wheelchair, + openingHours: this.openingHours, + internetAccess: this.internetAccess, + religion: this.religion, + toilets: this.toilets, + note: this.note }; + } + + match(searchString) { + let name = this.name; + if (!name) + return false; + + searchString = Utils.normalizeString(searchString); + if (searchString === null) + return false; + + if (searchString.length === 0) + return true; + + name = Utils.normalizeString(name); + if (name === null) + return false; + + /* the search method takes a regex, make sure we have a valid one */ + try { + return name.toLowerCase().search(searchString.toLowerCase()) !== -1; + } catch(e) { + /* not valid regex */ + return false; + } + } +}); + +Place.fromJSON = function(obj) { + let props = { }; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'id': + props.osm_id = prop; + break; + + case 'location': + props.location = new Location.Location(prop); + break; + + case 'bounding_box': + if (prop) + props.bounding_box = new Geocode.BoundingBox(prop); + break; + + default: + if (prop !== null && prop !== undefined) + props[key] = prop; + break; + } + } + return new Place(props); +}; + +Place.validateCoordinates = function(lat, lon) { + return lat <= 90 && lat >= -90 && lon <= 180 && lon >= -180; +}; + +Place.parseDecimalCoordinates = function(text) { + let match = text.match(DECIMAL_COORDINATES_REGEX); + + if (match) { + let latitude = parseFloat(match[1]); + let longitude = parseFloat(match[2]); + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseDmsCoordinates = function(text) { + let match = text.match(DMS_COORDINATES_REGEX); + + if (match) { + let degrees = parseFloat(match[1]); + let minutes = parseFloat(match[2]); + let seconds = parseFloat(match[3]); + let latitude = degrees + minutes / 60 + seconds / 3600; + + if (match[4].toUpperCase() === "S") + latitude *= -1; + + degrees = parseFloat(match[5]); + minutes = parseFloat(match[6]); + seconds = parseFloat(match[7]); + let longitude = degrees + minutes / 60 + seconds / 3600; + + if (match[8].toUpperCase() === "W") + longitude *= -1; + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseCoordinates = function(text) { + let coords = Place.parseDecimalCoordinates(text) || + Place.parseDmsCoordinates(text); + + if (coords && Place.validateCoordinates(coords[0], coords[1])) { + return new Location.Location({ latitude: coords[0], + longitude: coords[1] }); + } else { + return null; + } +}; + +let overpass = null; + +/* we can't import Application before the Place class has been defined + * since it's used via PlaceStore + */ +const Application = imports.application; + +function _parseOSMObjectURL(match, callback) { + let [,, type, id] = match; + let storedPlace = Application.placeStore.existsWithOsmTypeAndId(type, id); + + if (storedPlace) { + callback(storedPlace, null); + return; + } + + if (overpass === null) + overpass = new Overpass.Overpass(); + + Application.application.mark_busy(); + overpass.fetchPlace(type, id, (place) => { + Application.application.unmark_busy(); + if (place) + callback(place, null); + else + callback(null, _("Place not found in OpenStreetMap")); + }); +} + +function _parseOSMCoordURL(match, callback) { + let [,,,mlat,,mlon,,zoom,,mapZoom,mapLat, mapLon] = match; + let lat; + let lon; + let z; + + if (mapZoom && mapLat && mapLon) { + lat = mapLat; + lon = mapLon; + z = mapZoom; + } else if (mlat && mlon) { + lat = mlat; + lon = mlon; + if (zoom) + z = zoom; + } else { + callback(null, _("OpenStreetMap URL is not valid")); + return; + } + + if (!Place.validateCoordinates(lat, lon)) { + callback(null, _("Coordinates in URL are not valid")); + return; + } + + let location = new Location.Location({ latitude: lat, longitude: lon }); + let place = z ? new Place({ location: location, initialZoom: z }) : + new Place({ location: location }); + + callback(place, null); +} + +function parseHttpURL(text, callback) { + let match = text.match(OSM_OBJECT_URL_REGEX); + + if (match) { + _parseOSMObjectURL(match, callback); + } else { + match = text.match(OSM_COORD_URL_REGEX); + if (match) + _parseOSMCoordURL(match, callback); + else + callback(null, _("URL is not supported")); + } +} + diff --git a/src/placeBubble.js b/src/placeBubble.js new file mode 100644 index 00000000..a9adefd1 --- /dev/null +++ b/src/placeBubble.js @@ -0,0 +1,370 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Format = imports.format; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const MapBubble = imports.mapBubble; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMUtils = imports.osmUtils; +const Overpass = imports.overpass; +const Place = imports.place; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +// maximum dimension of thumbnails to fetch from Wikipedia +const THUMBNAIL_FETCH_SIZE = 128; +// final scaled size of cropped thumnail +const THUMBNAIL_FINAL_SIZE = 70; + +var PlaceBubble = GObject.registerClass({ + Properties: { + 'overpass-place': GObject.ParamSpec.object('overpass-place', + 'Overpass Place', + 'The place as filled in by Overpass', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceBubble extends MapBubble.MapBubble { + + _init(params) { + let ui = Utils.getUIObject('place-bubble', [ 'stack', + 'box-content', + 'grid-content', + 'label-title', + 'edit-button', + 'expand-button', + 'expanded-content', + 'content-revealer']); + params.buttons = (MapBubble.Button.ROUTE | + MapBubble.Button.SEND_TO); + + if (params.place.store) + params.buttons |= MapBubble.Button.FAVORITE; + + super._init(params); + + Utils.load_icon(this.place.icon, 48, (pixbuf) => this.image.pixbuf = pixbuf); + + this._stack = ui.stack; + this._title = ui.labelTitle; + this._boxContent = ui.boxContent; + this._gridContent = ui.gridContent; + this._editButton = ui.editButton; + this._expandButton = ui.expandButton; + this._expandedContent = ui.expandedContent; + this._revealer = ui.contentRevealer; + + let overpass = new Overpass.Overpass(); + + /* use a property binding from the Overpass instance to avoid + * accessing accessing this object after the underlying GObject has + * been finalized */ + overpass.bind_property('place', this, 'overpass-place', + GObject.BindingFlags.DEFAULT); + this.connect('notify::overpass-place', () => this._onInfoAdded()); + + if (Application.placeStore.exists(this.place, null)) { + + // If the place is stale, update from Overpass. + if (Application.placeStore.isStale(this.place)) { + overpass.addInfo(this.place); + } else { + let place = Application.placeStore.get(this.place); + this._populate(place); + } + } else if (this.place.store && !this.place.prefilled) { + overpass.addInfo(this.place); + } else { + this._populate(this.place); + } + this.content.add(this._stack); + + let osm_id = this.place.osm_id; + if (this.place instanceof ContactPlace.ContactPlace || !osm_id) + this._editButton.visible = false; + else + this._initEditButton(); + + this._initExpandButton(); + } + + _onInfoAdded() { + this._populate(this.place); + if (Application.placeStore.exists(this.place, null)) + Application.placeStore.updatePlace(this.place); + else + Application.placeStore.addPlace(this.place, PlaceStore.PlaceType.RECENT); + } + + _formatWikiLink(wiki) { + let lang = Wikipedia.getLanguage(wiki); + let article = Wikipedia.getArticle(wiki); + + return Format.vprintf('https://%s.wikipedia.org/wiki/%s', [ lang, article ]); + } + + /* + * Create an array of all content to be showed when expanding the place + * bubble + */ + _createExpandedContent(place) { + let expandedContent = []; + + if (place.population) { + /* TODO: this is a bit of a work-around to re-interpret the population, + * stored as a string into an integer to convert back to a locale- + * formatted string. Ideally it should be kept as an integer value + * in the Place class. But this will also need to be handled by the + * PlaceStore, possible in a backwards-compatible way + */ + expandedContent.push({ label: _("Population:"), + info: parseInt(place.population).toLocaleString() }); + } + + if (place.location.altitude > 0) { + let alt = place.location.altitude; + expandedContent.push({ label: _("Altitude:"), + info: Utils.prettyDistance(alt, true) }); + } + + if (place.openingHours) { + expandedContent.push({ label: _("Opening hours:"), + info: place.openingHoursTranslated }); + } + + if (place.internetAccess) { + expandedContent.push({ label: _("Internet access:"), + info: place.internetAccessTranslated }); + } + + if (place.religion) { + expandedContent.push({ label: _("Religion:"), + info: place.religionTranslated }); + } + + if (place.toilets) { + expandedContent.push({ label: _("Toilets:"), + info: place.toiletsTranslated }); + } + + if (place.wheelchair) { + expandedContent.push({ label: _("Wheelchair access:"), + info: place.wheelchairTranslated }); + } + + if (place.phone) { + if (Utils.uriSchemeSupported('tel')) { + expandedContent.push({ label: _("Phone:"), + linkText: place.phone, + linkUrl: 'tel:%s'.format(place.phone) }); + } else { + expandedContent.push({ label: _("Phone:"), + info: place.phone }); + } + } + + if (place.wiki) { + let link = this._formatWikiLink(place.wiki); + expandedContent.push({ linkText: _("Wikipedia"), + linkUrl: link}); + } + + return expandedContent; + } + + _attachContent(content, expandedContent) { + content.forEach((info) => { + let label = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + halign: Gtk.Align.START }); + this._boxContent.pack_start(label, false, true, 0); + }); + + expandedContent.forEach(({ label, linkUrl, linkText, info }, row) => { + let widget; + + if (label) { + widget = new Gtk.Label({ label: label.italics(), + visible: true, + use_markup: true, + yalign: 0, + halign: Gtk.Align.START }); + this._expandedContent.attach(widget, 0, row, 1, 1); + } + + if (linkUrl) { + let uri = GLib.markup_escape_text(linkUrl, -1); + /* double-escape the tooltip text, as GTK+ treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + info = '%s'.format(uri, + tooltipText, + linkText); + } + + widget = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + max_width_chars: 25, + wrap: true, + halign: Gtk.Align.START }); + + if(label) + this._expandedContent.attach(widget, 1, row, 1, 1); + else + // Expand over both columns if this row has no label + this._expandedContent.attach(widget, 0, row, 2, 1); + }); + } + + _populate(place) { + let formatter = new PlaceFormatter.PlaceFormatter(place); + + // refresh place view + this._clearView(); + + let content = formatter.rows.map((row) => { + row = row.map(function(prop) { + return GLib.markup_escape_text(place[prop], -1); + }); + return row.join(', '); + }); + let expandedContent = this._createExpandedContent(place); + + this._attachContent(content, expandedContent); + + let title = GLib.markup_escape_text(formatter.title, -1); + if (place.website) { + let uri = GLib.markup_escape_text(place.website, -1); + this._title.label = '%s'.format(uri, title); + } else { + this._title.label = title; + } + this._expandButton.visible = expandedContent.length > 0; + this._stack.visible_child = this._gridContent; + + if (place.wiki) + this._requestWikipediaThumbnail(place.wiki); + } + + _requestWikipediaThumbnail(wiki) { + Wikipedia.fetchArticleThumbnail(wiki, THUMBNAIL_FETCH_SIZE, + this._onThumbnailComplete.bind(this)); + } + + _onThumbnailComplete(thumbnail) { + if (thumbnail) { + this.thumbnail.pixbuf = this._cropAndScaleThumbnail(thumbnail); + this.iconStack.visible_child_name = 'thumbnail'; + } + } + + // returns a cropped square-shaped thumbnail + _cropAndScaleThumbnail(thumbnail) { + let width = thumbnail.get_width(); + let height = thumbnail.get_height(); + let croppedThumbnail; + + if (width > height) { + let x = (width - height) / 2; + croppedThumbnail = thumbnail.new_subpixbuf(x, 0, height, height); + } else { + let y = (height - width) / 2; + croppedThumbnail = thumbnail.new_subpixbuf(0, y, width, width); + } + + return croppedThumbnail.scale_simple(THUMBNAIL_FINAL_SIZE, + THUMBNAIL_FINAL_SIZE, + GdkPixbuf.InterpType.BILINEAR); + } + + // clear the view widgets to be able to re-populate an updated place + _clearView() { + this._boxContent.get_children().forEach((child) => child.destroy()); + this._expandedContent.get_children().forEach((child) => child.destroy()); + } + + _initEditButton() { + this._editButton.visible = true; + this._editButton.connect('clicked', this._onEditClicked.bind(this)); + } + + _initExpandButton() { + let image = this._expandButton.get_child(); + + this._expandButton.connect('clicked', (function() { + this._revealer.reveal_child = !this._revealer.child_revealed; + }).bind(this)); + } + + _onEditClicked() { + let osmEdit = Application.osmEdit; + /* if the user is not alread signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this.get_toplevel(), true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._edit(); + }); + + return; + } + + this._edit(); + } + + _edit() { + let osmEdit = Application.osmEdit; + let dialog = osmEdit.createEditDialog(this.get_toplevel(), this._place); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + + switch (response) { + case OSMEditDialog.Response.UPLOADED: + // update place + let object = osmEdit.object; + OSMUtils.updatePlaceFromOSMObject(this._place, object); + // refresh place view + this._clearView(); + this._populate(this._place); + break; + default: + break; + } + }); + } +}); diff --git a/src/placeEntry.js b/src/placeEntry.js new file mode 100644 index 00000000..3f0749f6 --- /dev/null +++ b/src/placeEntry.js @@ -0,0 +1,314 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013,2014 Jonas Danielsson, Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + * Mattias Bengtsson + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const PlacePopover = imports.placePopover; +const Utils = imports.utils; + +// minimum number of characters to start completion +const MIN_CHARS_COMPLETION = 3; + +// pattern matching CJK ideographic characters +const IDEOGRAPH_PATTERN = /[\u3300-\u9fff]/ + +var PlaceEntry = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceEntry extends Gtk.SearchEntry { + + set place(p) { + if (!this._place && !p) + return; + + /* if this entry belongs to a routing query entry, don't notify when + * setting the same place, otherwise it will trigger twice when + * initiating from the context menu + */ + if (!this._matchRoute && this._place && p && this._locEquals(this._place, p)) + return; + + if (p) { + if (p.name) + this._placeText = p.name; + else + this._placeText = '%.5f, %.5f'.format(p.location.latitude, + p.location.longitude); + } else { + this._placeText = ''; + } + + this.text = this._placeText; + + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } + + get popover() { + return this._popover; + } + + _init(props) { + let numVisible = props.num_visible || 6; + delete props.num_visible; + this._mapView = props.mapView; + delete props.mapView; + + if (!props.loupe) + props.primary_icon_name = null; + delete props.loupe; + + let maxChars = props.maxChars; + delete props.maxChars; + + this._matchRoute = props.matchRoute || false; + delete props.matchRoute; + + super._init(props); + + this._filter = new Gtk.TreeModelFilter({ child_model: Application.placeStore }); + this._filter.set_visible_func(this._completionVisibleFunc.bind(this)); + + this._popover = this._createPopover(numVisible, maxChars); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + + this._cache = {}; + + // clear cache when view moves, as result are location-dependent + this._mapView.view.connect('notify::latitude', () => this._cache = {}); + } + + _onSearchChanged() { + if (this._parse()) + return; + + // wait for an ongoing search + if (this._cancellable) + return; + + /* start search if more than the threashold number of characters have + * been entered, or if the first character is in the ideographic CJK + * block, as for these, shorter strings could be meaningful + */ + if ((this.text.length >= MIN_CHARS_COMPLETION || + (this.text.length > 0 && this.text[0].match(IDEOGRAPH_PATTERN))) && + this.text !== this._placeText) { + let cachedResults = this._cache[this.text]; + + if (cachedResults) { + this._updateResults(cachedResults); + } else { + // if no previous search has been performed, show spinner + if (!this._previousSearch || + this._previousSearch.length < MIN_CHARS_COMPLETION || + this._placeText) { + this._popover.showSpinner(); + } + this._placeText = ''; + this._doSearch(); + } + } else { + this._popover.hide(); + if (this.text.length === 0) + this.place = null; + this._previousSearch = null; + } + } + + _locEquals(placeA, placeB) { + if (!placeA.location || !placeB.location) + return false; + + return (placeA.location.latitude === placeB.location.latitude && + placeA.location.longitude === placeB.location.longitude); + } + + _createPopover(numVisible, maxChars) { + let popover = new PlacePopover.PlacePopover({ num_visible: numVisible, + relative_to: this, + maxChars: maxChars}); + + this.connect('size-allocate', (widget, allocation) => { + // Magic number to make the alignment pixel perfect. + let width_request = allocation.width + 20; + // set at least 320 px width to avoid too narrow in the sidebar + popover.width_request = Math.max(width_request, 320); + }); + + popover.connect('selected', (widget, place) => { + this.place = place; + popover.hide(); + }); + + return popover; + } + + _completionVisibleFunc(model, iter) { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + if (type !== PlaceStore.PlaceType.CONTACT && + type !== PlaceStore.PlaceType.RECENT_ROUTE || + (!this._matchRoute && type === PlaceStore.PlaceType.RECENT_ROUTE)) + return false; + + if (place !== null) + return place.match(this.text); + else + return false; + } + + _parse() { + let parsed = false; + + if (this.text.startsWith('geo:')) { + let location = new Geocode.Location(); + + try { + location.set_from_uri(this.text); + this.place = new Place.Place({ location: location }); + } catch(e) { + let msg = _("Failed to parse Geo URI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + } + + parsed = true; + } + + let parsedLocation = Place.Place.parseCoordinates(this.text); + if (parsedLocation) { + this.place = new Place.Place({ location: parsedLocation }); + parsed = true; + } + + if (this.text.startsWith('http://') || + this.text.startsWith('https://')) { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = null; + Place.parseHttpURL(this.text, (place, error) => { + if (place) + this.place = place; + else + Utils.showDialog(error, + Gtk.MessageType.ERROR, this.get_toplevel()); + }); + + /* don't cancel ongoing search, as we have started an async + * operation looking up the OSM object + */ + return true; + } + + if (parsed && this._cancellable) + this._cancellable.cancel(); + + return parsed; + } + + _doSearch() { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = new Gio.Cancellable(); + this._previousSearch = this.text; + GeocodeFactory.getGeocoder().search(this.text, + this._mapView.view.latitude, + this._mapView.view.longitude, + this._cancellable, + (places, error) => { + this._cancellable = null; + + if (error) { + this.place = null; + this._popover.showError(); + } else { + this._updateResults(places); + + // cache results for later + this._cache[this._previousSearch] = places; + } + + // if search input has been updated, trigger a refresh + if (this.text !== this._previousSearch) + this._onSearchChanged(); + }); + } + + _updateResults(places) { + if (!places) { + this.place = null; + this._popover.showNoResult(); + return; + } + + let completedPlaces = []; + + + this._filter.refilter(); + this._filter.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + completedPlaces.push({ place: place, type: type }); + }); + + let placeStore = Application.placeStore; + + places.forEach((place) => { + let type; + + if (placeStore.exists(place, PlaceStore.PlaceType.RECENT)) + type = PlaceStore.PlaceType.RECENT; + else if (placeStore.exists(place, PlaceStore.PlaceType.FAVORITE)) + type = PlaceStore.PlaceType.FAVORITE; + else + type = PlaceStore.PlaceType.ANY; + + completedPlaces.push({ place: place, type: type }); + }); + + this._popover.updateResult(completedPlaces, this.text); + this._popover.showResult(); + } +}); diff --git a/src/placeFormatter.js b/src/placeFormatter.js new file mode 100644 index 00000000..58dff6d1 --- /dev/null +++ b/src/placeFormatter.js @@ -0,0 +1,114 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; + +const StoredRoute = imports.storedRoute; + +var PlaceFormatter = class PlaceFormatter { + + constructor(place) { + this._place = place; + this._rows = []; + this._titleProperty = 'name'; + + this._update(); + } + + get place() { + return this._place; + } + + get title() { + let title; + // For the 'name' property we split after comma to avoid + // duplicating information in the title from the Geocode + // display name. + if (this._titleProperty === 'name') + title = this._place[this._titleProperty].split(',')[0]; + else + title = this.place[this._titleProperty]; + + return title; + } + + get rows() { + return this._rows; + } + + getDetailsString() { + if (this._place instanceof StoredRoute.StoredRoute) + return this._place.viaString; + + return this.rows.map((row) => { + return row.map((prop) => { + return this._place[prop]; + }).join(', '); + }).join(', '); + } + + _update() { + switch (this._place.place_type) { + case Geocode.PlaceType.COUNTRY: + if (this._place.country) + this._titleProperty = 'country'; + + this._addRow(['country_code']); + break; + + case Geocode.PlaceType.STATE: + if (this._place.state) + this._titleProperty = 'state'; + break; + + case Geocode.PlaceType.COUNTY: + if (this._place.county) + this._titleProperty = 'county'; + break; + + case Geocode.PlaceType.TOWN: + if (this._place.county) + this._addRow(['county']); + else if (this._place.state) + this._addRow(['state']); + else if (this._place.area) + this._addRow(['area']); + break; + + default: + if (this._place.street_address) + this._addRow(['street_address']); + else if (this._place.street) + this._addRow(['street']); + + if (this._place.town !== this._place[this._titleProperty]) + this._addRow(['postal_code', 'town']); + break; + } + } + + _addRow(properties) { + properties = properties.filter((prop) => this._place[prop] ? true : false); + + if (properties.length > 0) + this._rows.push(properties); + } +}; diff --git a/src/placeListRow.js b/src/placeListRow.js new file mode 100644 index 00000000..68ed931c --- /dev/null +++ b/src/placeListRow.js @@ -0,0 +1,86 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +var ROW_HEIGHT = 55; + +var PlaceListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-list-row.ui', + InternalChildren: [ 'icon', + 'name', + 'details', + 'typeIcon' ], +}, class PlaceListRow extends Gtk.ListBoxRow { + + _init(params) { + let place = params.place; + delete params.place; + + let searchString = params.searchString || ''; + delete params.searchString; + + let type = params.type; + delete params.type; + + params.height_request = ROW_HEIGHT; + super._init(params); + this.update(place, type, searchString); + } + + update(place, type, searchString) { + this.place = place; + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this.title = formatter.title; + let markup = GLib.markup_escape_text(formatter.title, -1); + + this._name.label = this._boldMatch(markup, searchString); + this._details.label = GLib.markup_escape_text(formatter.getDetailsString(),-1); + this._icon.gicon = place.icon; + + if (type === PlaceStore.PlaceType.RECENT || + type === PlaceStore.PlaceType.RECENT_ROUTE) + this._typeIcon.icon_name = 'document-open-recent-symbolic'; + else if (type === PlaceStore.PlaceType.FAVORITE) + this._typeIcon.icon_name = 'starred-symbolic'; + else if (type === PlaceStore.PlaceType.CONTACT) + this._typeIcon.icon_name = 'avatar-default-symbolic'; + else + this._typeIcon.icon_name = null; + } + + _boldMatch(title, string) { + let canonicalString = Utils.normalizeString(string).toLowerCase(); + let canonicalTitle = Utils.normalizeString(title).toLowerCase(); + + let index = canonicalTitle.indexOf(canonicalString); + + if (index !== -1) { + let substring = title.substring(index, index + string.length); + title = title.replace(substring, substring.bold()); + } + return title; + } +}); diff --git a/src/placeMarker.js b/src/placeMarker.js new file mode 100644 index 00000000..86e068c0 --- /dev/null +++ b/src/placeMarker.js @@ -0,0 +1,48 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; +const PlaceBubble = imports.placeBubble; + +var PlaceMarker = GObject.registerClass( +class PlaceMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this.add_actor(this._actorFromIconName('mark-location', 32)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: this.height - 3 }; + } + + _createBubble() { + if (this.place.name) { + return new PlaceBubble.PlaceBubble({ place: this.place, + mapView: this._mapView }); + } else + return null; + } +}); diff --git a/src/placePopover.js b/src/placePopover.js new file mode 100644 index 00000000..72917423 --- /dev/null +++ b/src/placePopover.js @@ -0,0 +1,143 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; +const SearchPopover = imports.searchPopover; + +const _PLACE_ICON_SIZE = 20; + +var PlacePopover = GObject.registerClass({ + Signals : { + 'selected' : { param_types: [ GObject.TYPE_OBJECT ] } + }, + Template: 'resource:///org/gnome/Maps/ui/place-popover.ui', + InternalChildren: [ 'scrolledWindow', + 'stack', + 'spinner', + 'list', + 'noResultsLabel', + 'errorLabel' ], +}, class PlacePopover extends SearchPopover.SearchPopover { + + _init(props) { + let numVisible = props.num_visible; + delete props.num_visible; + + this._maxChars = props.maxChars; + delete props.maxChars; + + props.transitions_enabled = false; + super._init(props); + + this._entry = this.relative_to; + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.place); + }); + + this._list.set_header_func((row, before) => { + let header = new Gtk.Separator(); + if (before) + row.set_header(header); + else + row.set_header(null); + }); + + let rowHeight = PlaceListRow.ROW_HEIGHT; + this._scrolledWindow.min_content_height = numVisible * rowHeight + 6; + + // This silents warning at Maps exit about this widget being + // visible but not mapped. + this.connect('unmap', (popover) => popover.hide()); + } + + showSpinner() { + this._spinner.start(); + this._stack.visible_child = this._spinner; + + if (!this.visible) + this.show(); + } + + showResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._scrolledWindow; + + let row = this._list.get_row_at_index(0); + if (row) + this._list.select_row(row); + + if (!this.visible) + this.show(); + } + + showNoResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._noResultsLabel; + } + + showError() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._errorLabel; + } + + updateResult(places, searchString) { + let i = 0; + + places.forEach((p) => { + let row = this._list.get_row_at_index(i); + + // update existing row, if there is one, otherwise create new + if (row) + row.update(p.place, p.type, searchString); + else + this._addRow(p.place, p.type, searchString); + + i++; + }); + + // remove remaining rows + let row = this._list.get_row_at_index(i); + + while (row) { + row.destroy(); + row = this._list.get_row_at_index(i); + } + } + + _addRow(place, type, searchString) { + let row = new PlaceListRow.PlaceListRow({ place: place, + searchString: searchString, + type: type, + can_focus: true }); + this._list.add(row); + } +}); diff --git a/src/placeStore.js b/src/placeStore.js new file mode 100644 index 00000000..7d05dc2b --- /dev/null +++ b/src/placeStore.js @@ -0,0 +1,343 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const Place = imports.place; +const StoredRoute = imports.storedRoute; +const Utils = imports.utils; + +const _PLACES_STORE_FILE = 'maps-places.json'; +const _ICON_SIZE = 20; +const _ONE_DAY = 1000 * 60 * 60 * 24; // one day in ms +const _STALE_THRESHOLD = 7; // mark the osm information as stale after a week + +var PlaceType = { + ANY: -1, + RECENT: 0, + FAVORITE: 1, + CONTACT: 2, + RECENT_ROUTE: 3 +}; + +var Columns = { + PLACE_ICON: 0, + PLACE: 1, + NAME: 2, + TYPE: 3, + ADDED: 4 +}; + +var PlaceStore = GObject.registerClass( +class PlaceStore extends Gtk.ListStore { + + _init(params) { + this._recentPlacesLimit = params.recentPlacesLimit; + delete params.recentPlacesLimit; + + this._recentRoutesLimit = params.recentRoutesLimit; + delete params.recentRoutesLimit; + + this._numRecentPlaces = 0; + this._numRecentRoutes = 0; + this.filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _PLACES_STORE_FILE]); + this._typeTable = {}; + + super._init(params); + this.set_column_types([GdkPixbuf.Pixbuf, + GObject.TYPE_OBJECT, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_DOUBLE]); + + this.set_sort_column_id(Columns.ADDED, Gtk.SortType.ASCENDING); + } + + _addPlace(place, type) { + this._setPlace(this.append(), place, type, new Date().getTime()); + this._store(); + } + + _addContact(place) { + if (this.exists(place, PlaceType.CONTACT)) { + return; + } + + this._addPlace(place, PlaceType.CONTACT); + } + + _addFavorite(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.FAVORITE)) { + return; + } + + if (this.exists(place, PlaceType.RECENT)) { + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + return p.uniqueID === place.uniqueID; + }, true); + } + this._addPlace(place, PlaceType.FAVORITE); + } + + _addRecent(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.RECENT)) { + this.updatePlace(place); + return; + } + + if (this._numRecentPlaces === this._recentPlacesLimit) { + // Since we sort by added, the oldest recent will be + // the first one we encounter. + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentPlaces--; + return true; + } + return false; + }, true); + } + this._addPlace(place, PlaceType.RECENT); + this._numRecentPlaces++; + } + + _addRecentRoute(stored) { + if (this.exists(stored, PlaceType.RECENT_ROUTE)) + return; + + if (stored.containsCurrentLocation) + return; + + if (this._numRecentRoutes >= this._recentRoutesLimit) { + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT_ROUTE) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentRoutes--; + return true; + } + return false; + }, true); + } + this._addPlace(stored, PlaceType.RECENT_ROUTE); + this._numRecentRoutes++; + } + + load() { + if (!GLib.file_test(this.filename, GLib.FileTest.EXISTS)) + return; + + let buffer = Utils.readFile(this.filename); + if (buffer === null) + return; + try { + let jsonArray = JSON.parse(Utils.getBufferText(buffer)); + jsonArray.forEach(({ place, type, added }) => { + // We expect exception to be thrown in this line when parsing + // gnome-maps 3.14 or below place stores since the "place" + // key is not present. + if (!place.id) + return; + + let p; + if (type === PlaceType.RECENT_ROUTE) { + if (this._numRecentRoutes >= this._recentRoutesLimit) + return; + p = StoredRoute.StoredRoute.fromJSON(place); + this._numRecentRoutes++; + } else { + p = Place.Place.fromJSON(place); + if (type === PlaceType.RECENT) + this._numRecentPlaces++; + } + this._setPlace(this.append(), p, type, added); + }); + } catch (e) { + throw new Error('failed to parse places file'); + } + } + + addPlace(place, type) { + if (type === PlaceType.FAVORITE) + this._addFavorite(place, type); + else if (type === PlaceType.RECENT) + this._addRecent(place, type); + else if (type === PlaceType.CONTACT) + this._addContact(place, type); + else if (type === PlaceType.RECENT_ROUTE) + this._addRecentRoute(place); + } + + removePlace(place, placeType) { + if (!this.exists(place, placeType)) + return; + + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + this._typeTable[place.uniqueID] = null; + return true; + } + return false; + }, true); + this._store(); + } + + getModelForPlaceType(placeType) { + let filter = new Gtk.TreeModelFilter({ child_model: this }); + + filter.set_visible_func((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + return (type === placeType); + }); + + return filter; + } + + _store() { + let jsonArray = []; + this.foreach((model, path, iter) => { + let place = model.get_value(iter, Columns.PLACE); + let type = model.get_value(iter, Columns.TYPE); + let added = model.get_value(iter, Columns.ADDED); + + if (!place || !place.store) + return; + jsonArray.push({ + place: place.toJSON(), + type: type, + added: added + }); + }); + + let buffer = JSON.stringify(jsonArray); + if (!Utils.writeFile(this.filename, buffer)) + log('Failed to write places file!'); + } + + _setPlace(iter, place, type, added) { + this.set(iter, + [Columns.PLACE, + Columns.NAME, + Columns.TYPE, + Columns.ADDED], + [place, + place.name, + type, + added]); + + if (place.icon !== null) { + Utils.load_icon(place.icon, _ICON_SIZE, (pixbuf) => { + this.set(iter, [Columns.ICON], [pixbuf]); + }); + } + this._typeTable[place.uniqueID] = type; + } + + get(place) { + let storedPlace = null; + + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + storedPlace = p; + return true; + } + return false; + }); + return storedPlace; + } + + isStale(place) { + if (!this.exists(place, null)) + return false; + + let added = null; + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let p_type = model.get_value(iter, Columns.TYPE); + added = model.get_value(iter, Columns.ADDED); + } + }); + + let now = new Date().getTime(); + let days = Math.abs(now - added) / _ONE_DAY; + + return (days >= _STALE_THRESHOLD); + } + + exists(place, type) { + if (type !== undefined && type !== null && this._typeTable[place.uniqueID] !== undefined) + return this._typeTable[place.uniqueID] === type; + else + return this._typeTable[place.uniqueID] !== undefined; + } + + existsWithOsmTypeAndId(osmType, osmId) { + let id = osmType + '-' + osmId; + if (this._typeTable[id]) + return this._typeTable[id]; + else + return null; + } + + _removeIf(evalFunc, stop) { + this.foreach((model, path, iter) => { + if (evalFunc(model, iter)) { + this.remove(iter); + if (stop) + return true; + } + return false; + }); + } + + updatePlace(place) { + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let type = model.get_value(iter, Columns.TYPE); + this._setPlace(iter, place, type, new Date().getTime()); + this._store(); + return; + } + }); + } +}); diff --git a/src/printLayout.js b/src/printLayout.js new file mode 100644 index 00000000..5602612b --- /dev/null +++ b/src/printLayout.js @@ -0,0 +1,364 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; +const PangoCairo = imports.gi.PangoCairo; + +const Application = imports.application; +const Color = imports.color; +const MapView = imports.mapView; +const MapSource = imports.mapSource; +const TurnPointMarker = imports.turnPointMarker; +const Utils = imports.utils; + +/* Following constant has unit as meters */ +const _SHORT_LAYOUT_MAX_DISTANCE = 3000; + +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +/* All following constants are ratios of surface size to page size */ +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; + +function newFromRoute(route, pageWidth, pageHeight) { + /* + * To avoid the circular dependencies, imports has + * been carried out in this method + */ + if (route.distance > _SHORT_LAYOUT_MAX_DISTANCE) { + return new imports.longPrintLayout.LongPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } else { + return new imports.shortPrintLayout.ShortPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } +} + +var PrintLayout = GObject.registerClass({ + Abstract: true, + Signals: { + 'render-complete': { } + } +}, class PrintLayout extends GObject.Object { + + _init(params) { + this._pageWidth = params.pageWidth; + delete params.pageWidth; + + this._pageHeight = params.pageHeight; + delete params.pageHeight; + + this._totalSurfaces = params.totalSurfaces; + delete params.totalSurfaces; + + super._init(params); + + this.numPages = 0; + this.surfaceObjects = []; + this._surfacesRendered = 0; + this.renderFinished = false; + this._initSignals(); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + // directional override character to force alignment of labels + this._dirChar = this._rtl ? '\u200F' : '\u200E'; + this._fontDescription = Pango.FontDescription.from_string("sans"); + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + this._createNewPage(); + let dy = 0; + + /* + * Before rendering each surface, page adjustment is done. It is checked if it + * can be adjusted in current page, otherwise a new page is created + */ + dy = headerHeight + headerMargin; + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + dy = mapViewHeight + mapViewMargin; + this._adjustPage(dy); + let turnPointsLength = this._route.turnPoints.length; + let allTurnPoints = this._createTurnPointArray(0, turnPointsLength); + this._drawMapView(mapViewWidth, mapViewHeight, + mapViewZoomLevel, allTurnPoints); + this._cursorY += dy; + } + + _initSignals() { + this.connect('render-complete', () => this.renderFinished = true); + } + + _createMarker(turnPoint) { + return new TurnPointMarker.TurnPointMarker({ + turnPoint: turnPoint, + queryPoint: {} + }); + } + + _drawMapView(width, height, zoomLevel, turnPoints) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let locations = []; + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + view.set_map_source(mapSource); + view.add_layer(markerLayer); + + this._addRouteLayer(view); + + turnPoints.forEach((turnPoint) => { + locations.push(turnPoint.coordinate); + if (turnPoint.isStop()) { + markerLayer.add_marker(this._createMarker(turnPoint)); + } + }); + + view.ensure_visible(this._route.createBBox(locations), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createTurnPointArray(startIndex, endIndex) { + let turnPointArray = []; + for (let i = startIndex; i < endIndex; i++) { + turnPointArray.push(this._route.turnPoints[i]); + } + return turnPointArray; + } + + _addRouteLayer(view) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + view.add_layer(routeLayer); + this._route.path.forEach((node) => routeLayer.add_node(node)); + } + + _drawIcon(cr, iconName, width, height) { + let theme = Gtk.IconTheme.get_default(); + let pixbuf = theme.load_icon(iconName, height, 0); + let iconWidth = pixbuf.width; + let iconHeight = pixbuf.height; + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + this._rtl ? + width - height + (height - iconWidth) / 2 : + (height - iconWidth) / 2, + (height - iconWidth) / 2); + cr.paint(); + } + + _createTextLayout(cr, text, width, height, alignment) { + let layout = PangoCairo.create_layout(cr); + + layout.set_text(this._dirChar + text, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(this._fontDescription); + layout.set_alignment(alignment); + layout.set_ellipsize(Pango.EllipsizeMode.END); + + return layout; + } + + _drawText(cr, text, x, y, width, height, alignment) { + this._drawTextWithColor(cr, text, x, y, width, height, '000000', alignment); + } + + _drawTextWithColor(cr, text, x, y, width, height, color, alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + + this._drawTextLayoutWithColor(cr, layout, x, y, width, height, color, + alignment); + } + + _drawTextLayoutWithColor(cr, layout, x, y, width, height, color, alignment) { + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + cr.moveTo(x, y); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawTextVerticallyCentered(cr, text, width, height, x, alignment) { + this._drawTextVerticallyCenteredWithColor(cr, text, width, height, x, + '000000', alignment); + } + + _drawTextVerticallyCenteredWithColor(cr, text, width, height, x, color, + alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + let [pWidth, pHeight] = layout.get_pixel_size(); + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + // place text centered + cr.moveTo(x, (height - pHeight) / 2); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawInstruction(width, height, turnPoint) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let iconName = turnPoint.iconName; + + if (iconName) { + this._drawIcon(cr, iconName, width, height); + } + + // draw the instruction text + this._drawTextVerticallyCentered(cr, turnPoint.instruction, + width - height * 3, height, + this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + + // draw the distance text + if (turnPoint.distance > 0) { + this._drawTextVerticallyCentered(cr, + Utils.prettyDistance(turnPoint.distance), + height * 2, + height, + this._rtl ? 0 : width - height * 2, + Pango.Alignment.RIGHT); + } + + this._addSurface(surface, x, y, pageNum); + } + + _drawHeader(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let layout = PangoCairo.create_layout(cr); + let from = this._formatQueryPlaceName(0); + let to = this._formatQueryPlaceName(-1); + let header = _("From %s to %s").format(from, to); + let desc = Pango.FontDescription.from_string("sans"); + + layout.set_text(header, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(desc); + layout.set_alignment(Pango.Alignment.CENTER); + PangoCairo.layout_path(cr, layout); + cr.setSourceRGB(0.0,0.0,0.0); + cr.fill(); + + this._addSurface(surface, x, y, pageNum); + } + + _addSurface(surface, x, y, pageNum) { + this.surfaceObjects[pageNum].push({ surface: surface, x: x, y: y }); + this._surfacesRendered++; + if (this._surfacesRendered === this._totalSurfaces) + this.emit('render-complete'); + } + + _adjustPage(dy) { + if (this._cursorY + dy > this._pageHeight) + this._createNewPage(); + } + + _createNewPage() { + this.numPages++; + this.surfaceObjects[this.numPages - 1] = []; + this._cursorX = 0; + this._cursorY = 0; + } + + _formatQueryPlaceName(index) { + let query = Application.routeQuery; + if (index === -1) + index = query.filledPoints.length - 1; + let name; + let place = query.filledPoints[index].place; + if (place.name) { + name = place.name; + if (name.length > 25) + name = name.substr(0, 22) + '\u2026'; + } else { + let lat = place.location.latitude.toFixed(5); + let lon = place.location.latitude.toFixed(5); + name = '%s, %s'.format(lat, lon); + } + + return name; + } +}); diff --git a/src/printOperation.js b/src/printOperation.js new file mode 100644 index 00000000..b3307c0a --- /dev/null +++ b/src/printOperation.js @@ -0,0 +1,119 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const PrintLayout = imports.printLayout; +const TransitPrintLayout = imports.transitPrintLayout; +const Utils = imports.utils; + +const _MIN_TIME_TO_ABORT = 3000; + +var PrintOperation = class PrintOperation { + + constructor(params) { + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._operation = new Gtk.PrintOperation({ embed_page_setup: true }); + this._operation.connect('begin-print', this._beginPrint.bind(this)); + this._operation.connect('paginate', this._paginate.bind(this)); + this._operation.connect('draw-page', this._drawPage.bind(this)); + + this._abortDialog = new Gtk.MessageDialog({ + transient_for: this._mainWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.OTHER, + modal: true, + text: _("Loading map tiles for printing"), + secondary_text: _("You can abort printing if this takes too long") + }); + this._abortDialog.add_button(_("Abort printing"), + Gtk.ResponseType.CANCEL); + this._responseId = this._abortDialog.connect('response', + this.onAbortDialogResponse.bind(this)); + + this._runPrintOperation(); + } + + _beginPrint(operation, context, data) { + let route = Application.routingDelegator.graphHopper.route; + let selectedTransitItinerary = + Application.routingDelegator.transitRouter.plan.selectedItinerary; + let width = context.get_width(); + let height = context.get_height(); + + Mainloop.timeout_add(_MIN_TIME_TO_ABORT, () => { + if (!this._layout.renderFinished) { + this._abortDialog.show(); + } + return false; + }, null); + + if (selectedTransitItinerary) { + this._layout = + new TransitPrintLayout.TransitPrintLayout({ itinerary: selectedTransitItinerary, + pageWidth: width, + pageHeight: height }); + } else { + this._layout = PrintLayout.newFromRoute(route, width, height); + } + this._layout.render(); + } + + onAbortDialogResponse(dialog, response) { + if (response === Gtk.ResponseType.DELETE_EVENT || + response === Gtk.ResponseType.CANCEL) { + this._abortDialog.disconnect(this._responseId); + this._operation.cancel(); + this._abortDialog.close(); + } + } + + _paginate(operation, context) { + if (this._layout.renderFinished) { + operation.set_n_pages(this._layout.numPages); + this._abortDialog.close(); + } + return this._layout.renderFinished; + } + + _drawPage(operation, context, page_num, data) { + let cr = context.get_cairo_context(); + this._layout.surfaceObjects[page_num].forEach((so) => { + cr.setSourceSurface(so.surface, so.x, so.y); + cr.paint(); + }); + } + + _runPrintOperation() { + try { + let result = this._operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, + this._mainWindow); + if (result === Gtk.PrintOperationResult.ERROR) { + let error = this._operation.get_error(); + Utils.debug('Failed to print: %s'.format(error)); + } + } catch(e) { + Utils.debug('Failed to print: %s'.format(e.message)); + } + } +}; diff --git a/src/route.js b/src/route.js new file mode 100644 index 00000000..1c30dfa4 --- /dev/null +++ b/src/route.js @@ -0,0 +1,180 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var TurnPointType = { + SHARP_LEFT: 0, + LEFT: 1, + SLIGHT_LEFT: 2, + CONTINUE: 3, + SLIGHT_RIGHT: 4, + RIGHT: 5, + SHARP_RIGHT: 6, + END: 7, + VIA: 8, + ROUNDABOUT: 9, + + // This one is not in GraphHopper, so choose + // a reasonably unlikely number for this + START: 10000, + ELEVATOR: 10001, + UTURN_LEFT: 10002, + UTURN_RIGHT: 10003 +}; + +/* countries/terrotories driving on the left + * source: https://en.wikipedia.org/wiki/Left-_and_right-hand_traffic + */ +const LHT_COUNTRIES = new Set(['AG', 'AI', 'AU', 'BB', 'BD', 'BM', 'BN', 'BS', + 'BT', 'BW', 'CY', 'DM', 'FJ', 'FK', 'GB', 'GB', + 'GD', 'GY', 'HK', 'ID', 'IE', 'IM', 'IN', 'JE', + 'JM', 'JP', 'KE', 'KI', 'KN', 'KY', 'LC', 'LK', + 'LS', 'MO', 'MS', 'MT', 'MU', 'MV', 'MW', 'MY', + 'MZ', 'NA', 'NP', 'NR', 'NZ', 'PG', 'PN', 'PK', + 'SB', 'SC', 'SG', 'SH', 'SR', 'SZ', 'TC', 'TH', + 'TL', 'TO', 'TT', 'TV', 'TZ', 'UG', 'VC', 'VG', + 'VI', 'WS', 'ZA', 'ZM', 'ZW']); + +var Route = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Route extends GObject.Object { + + _init() { + super._init(); + this.reset(); + } + + update({ path, turnPoints, distance, time, bbox }) { + this.path = path; + this.turnPoints = turnPoints; + this.distance = distance; + this.time = time; + this.bbox = bbox || this.createBBox(path); + + this.emit('update'); + } + + reset() { + this.path = []; + this.turnPoints = []; + this.distance = 0; + this.time = 0; + this.bbox = null; + this.emit('reset'); + } + + error(msg) { + this.emit('error', msg); + } + + createBBox(coordinates) { + let bbox = new Champlain.BoundingBox(); + coordinates.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }, this); + return bbox; + } +}); + +var TurnPoint = class TurnPoint { + + constructor({ coordinate, type, distance, instruction, turnAngle }) { + this.coordinate = coordinate; + this._type = type; + this.distance = distance; + this.instruction = instruction; + this.iconName = this._getIconName(turnAngle); + } + + get type() { + return this._type; + } + + isStop() { + return this._type === TurnPointType.START + || this._type === TurnPointType.VIA + || this._type === TurnPointType.END; + } + + _getIconName(turnAngle) { + switch(this._type) { + case TurnPointType.SHARP_LEFT: return 'maps-direction-sharpleft-symbolic'; + case TurnPointType.LEFT: return 'maps-direction-left-symbolic'; + case TurnPointType.SLIGHT_LEFT: return 'maps-direction-slightleft-symbolic'; + case TurnPointType.CONTINUE: return 'maps-direction-continue-symbolic'; + case TurnPointType.SLIGHT_RIGHT: return 'maps-direction-slightright-symbolic'; + case TurnPointType.RIGHT: return 'maps-direction-right-symbolic'; + case TurnPointType.SHARP_RIGHT: return 'maps-direction-sharpright-symbolic'; + case TurnPointType.START: return 'maps-point-start-symbolic'; + case TurnPointType.VIA: return 'maps-point-end-symbolic'; + case TurnPointType.END: return 'maps-point-end-symbolic'; + case TurnPointType.ROUNDABOUT: return this._getRoundaboutIconName(turnAngle); + case TurnPointType.ELEVATOR: return 'maps-direction-elevator-symbolic'; + case TurnPointType.UTURN_LEFT: return 'maps-direction-u-turn-left-symbolic'; + case TurnPointType.UTURN_RIGHT: return 'maps-direction-u-turn-right-symbolic'; + default: return ''; + } + } + + _getRoundaboutIconName(turnAngle) { + /* + * To map turnAngle with closest roundabout + * turning angle symbol available. The Algorithm + * calculates the minimum of absolute difference + * between turnAngle and the angle of which map + * has turning symbols. + */ + let minDiff = 2 * Math.PI; + let angle = 0; + if (turnAngle === null) + return 'maps-direction-roundabout-symbolic'; + + if (turnAngle < 0) + turnAngle += 2 * Math.PI; + + for (let x = 0; x < 360; x += 45) { + if (Math.abs(turnAngle - (x / 180) * Math.PI) < minDiff) { + minDiff = Math.abs(turnAngle - (x / 180) * Math.PI); + angle = x; + } + } + // use mirrored icon for left-hand traffic when angle is not zero + return 'maps-direction-roundabout-' + angle + + (angle !== 0 && this._isLefthandTraffic() ? '-lht' : '') + + '-symbolic'; + } + + _isLefthandTraffic() { + let country = + Utils.getCountryCodeForCoordinates(this.coordinate.latitude, + this.coordinate.longitude); + + return LHT_COUNTRIES.has(country); + } +}; diff --git a/src/routeEntry.js b/src/routeEntry.js new file mode 100644 index 00000000..ac2e2783 --- /dev/null +++ b/src/routeEntry.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceEntry = imports.placeEntry; +const RouteQuery = imports.routeQuery; + +var Type = { + FROM: 0, + TO: 1, + VIA: 2 +}; + +var RouteEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/route-entry.ui', + Children: [ 'iconEventBox' ], + InternalChildren: [ 'entryGrid', + 'icon', + 'button', + 'buttonImage' ] +}, class RouteEntry extends Gtk.Grid { + + _init(params) { + this._type = params.type; + delete params.type; + + this._point = params.point || null; + delete params.point; + + this._mapView = params.mapView || null; + delete params.mapView; + + super._init(params); + + this.entry = this._createEntry(); + this._entryGrid.add(this.entry); + + // There is no GdkWindow on the widget until it is realized + this._icon.connect('realize', function(icon) { + if (icon.window && icon.window.get_cursor()) + return; + + icon.window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1)); + }); + + switch (this._type) { + case Type.FROM: + let query = Application.routeQuery; + this._buttonImage.icon_name = 'list-add-symbolic'; + this._icon.icon_name = 'maps-point-start-symbolic'; + /* Translators: this is add via location tooltip */ + this._button.tooltip_text = _("Add via location"); + query.connect('notify::points', () => { + this._button.sensitive = query.points.length < RouteQuery.MAX_QUERY_POINTS; + }); + + break; + case Type.VIA: + this._buttonImage.icon_name = 'list-remove-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is remove via location tooltip */ + this._button.tooltip_text = _("Remove via location"); + break; + case Type.TO: + this._buttonImage.icon_name = 'route-reverse-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is reverse route tooltip */ + this._button.tooltip_text = _("Reverse route"); + break; + } + } + + get button() { + return this._button; + } + + get point() { + return this._point; + } + + _createEntry() { + let entry = new PlaceEntry.PlaceEntry({ visible: true, + can_focus: true, + hexpand: true, + receives_default: true, + mapView: this._mapView, + maxChars: 15 }); + if (this._point) { + entry.bind_property('place', + this._point, 'place', + GObject.BindingFlags.BIDIRECTIONAL); + } + + return entry; + } +}); diff --git a/src/routeQuery.js b/src/routeQuery.js new file mode 100644 index 00000000..3b424ec3 --- /dev/null +++ b/src/routeQuery.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; + +const Application = imports.application; +const PlaceStore = imports.placeStore; +const TransitOptions = imports.transitOptions; + +var MAX_QUERY_POINTS = 10; + +var Transportation = { + CAR: 0, + BIKE: 1, + PEDESTRIAN: 2, + TRANSIT: 3, + + toString: function (transportation) { + switch(transportation) { + case Transportation.CAR: return 'car'; + case Transportation.BIKE: return 'bike'; + case Transportation.PEDESTRIAN: return 'foot'; + case Transportation.TRANSIT: return 'transit'; + default: return null; + } + } +}; + +var QueryPoint = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class QueryPoint extends GObject.Object { + + _init() { + this._place = null; + super._init(); + } + + set place(p) { + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } +}); + +var RouteQuery = GObject.registerClass({ + Signals: { + 'reset': { }, + 'point-added': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'point-removed': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'run': { } + }, + Properties: { + 'points': GObject.ParamSpec.object('points', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + GObject.Object), + 'transportation': GObject.ParamSpec.int('transportation', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Transportation.CAR, + Transportation.PEDESTRIAN, + Transportation.CAR, + Transportation.TRANSIT) + } +}, class RouteQuery extends GObject.Object { + + get points() { + return this._points; + } + + set points(points) { + if (points.length > MAX_QUERY_POINTS) + throw new Error('Too many query points'); + this._points = points; + this.notify('points'); + } + + get filledPoints() { + return this.points.filter(function(point) { + return point.place; + }); + } + + get latest() { + return this._latest; + } + + get time() { + return this._time; + } + + /* time to leave or arrive, null implies "Leave now" */ + set time(time) { + this._time = time; + this.notify('points'); + } + + get date() { + return this._date; + } + + /* date to leave or arrive */ + set date(date) { + this._date = date; + /* only notify change when an actual date was set, when resetting time + * time and date (to use "Leave Now" routing) time would be set to null + * triggering an update */ + if (date) + this.notify('points'); + } + + get arriveBy() { + return this._arriveBy; + } + + /* when set to true, the set time and date means arrive by the specified + * time */ + set arriveBy(arriveBy) { + this._arriveBy = arriveBy; + if (this._time) + this.notify('points'); + } + + get transitOptions() { + return this._transitOptions; + } + + set transitOptions(options) { + this._transitOptions = options; + this.notify('points'); + } + + _init(args) { + super._init(args); + this._points = []; + this._time = null; + this._date = null; + this._arriveBy = false; + this._transitOptions = new TransitOptions.TransitOptions(); + this._initTransportation(); + this.reset(); + } + + _initTransportation() { + let transportationType = Application.settings.get_enum('transportation-type'); + + this.transportation = transportationType; + } + + addPoint(index) { + if (this._points.length >= MAX_QUERY_POINTS) + throw new Error('Too many query points'); + let point = new QueryPoint(); + + if (index === -1) + index = this.points.length - 1; + + this._points.splice(index, 0, point); + point.connect('notify::place', () => { + let placeStore = Application.placeStore; + if (point.place) { + if (!placeStore.exists(point.place, null)) { + placeStore.addPlace(point.place, + PlaceStore.PlaceType.RECENT); + } + } + this.notify('points'); + this._latest = point; + }); + this._latest = point; + this.notify('points'); + this.emit('point-added', point, index); + return point; + } + + removePoint(index) { + let removedPoints = this._points.splice(index, 1); + let point = removedPoints ? removedPoints[0] : null; + if (point === this._latest) + this._latest = null; + + if (point) { + this.notify('points'); + this.emit('point-removed', point, index); + } + } + + set transportation(transportation) { + Application.settings.set_enum('transportation-type', transportation); + this._transportation = transportation; + this.notify('transportation'); + this.notify('points'); + } + + get transportation() { + return this._transportation; + } + + reset() { + this.freeze_notify(); + this._points.forEach(function(point) { + point.place = null; + }); + this._latest = null; + this.thaw_notify(); + this.emit('reset'); + } + + isValid() { + if (this.filledPoints.length >= 2 && + this.filledPoints.length === this.points.length) + return true; + else + return false; + } + + toString() { + return "\nPoints: " + this.points + + "\nTransportation: " + this.transportation; + } +}); diff --git a/src/routingDelegator.js b/src/routingDelegator.js new file mode 100644 index 00000000..a3f71101 --- /dev/null +++ b/src/routingDelegator.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GraphHopper = imports.graphHopper; +const TransitRouter = imports.transitRouter; +const RouteQuery = imports.routeQuery; + +const _FALLBACK_TRANSPORTATION = RouteQuery.Transportation.PEDESTRIAN; + +var RoutingDelegator = class RoutingDelegator { + + constructor(params) { + this._query = params.query; + + this._transitRouting = false; + this._graphHopper = new GraphHopper.GraphHopper({ query: this._query }); + this._transitRouter = new TransitRouter.TransitRouter({ query: this._query }); + this._query.connect('notify::points', this._onQueryChanged.bind(this)); + + /* if the query is set to transit mode when it's not available, revert + * to a fallback mode + */ + if (this._query.transportation === RouteQuery.Transportation.TRANSIT && + !this._transitRouter.enabled) { + this._query.transportation = _FALLBACK_TRANSPORTATION; + } + } + + get graphHopper() { + return this._graphHopper; + } + + get transitRouter() { + return this._transitRouter; + } + + set useTransit(useTransit) { + this._transitRouting = useTransit; + } + + reset() { + if (this._transitRouting) + this._transitRouter.plan.reset(); + else + this._graphHopper.route.reset(); + } + + _onQueryChanged() { + if (this._query.isValid()) { + this._query.emit('run'); + if (this._transitRouting) { + this._transitRouter.fetchFirstResults(); + } else { + this._graphHopper.fetchRoute(this._query.filledPoints, + this._query.transportation); + } + } + } +}; diff --git a/src/searchPopover.js b/src/searchPopover.js new file mode 100644 index 00000000..f848c5b5 --- /dev/null +++ b/src/searchPopover.js @@ -0,0 +1,111 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* Abstract search result popover that progagates keypress events from a + focus-taking internal widget to the spawning search entry widget */ +var SearchPopover = GObject.registerClass({ + Abstract: true +}, class SearchPopover extends Gtk.Popover { + + _init(props) { + super._init(props); + + this._entry = this.relative_to; + + // We need to propagate events to the listbox so that we can + // keep typing while selecting a place. But we do not want to + // propagate the 'enter' key press if there is a selection. + this._entry.connect('key-press-event', + this._propagateKeys.bind(this)); + this._entry.connect('button-press-event', () => this._list.unselect_all()); + } + + _propagateKeys(entry, event) { + let keyval = event.get_keyval()[1]; + + if (keyval === Gdk.KEY_Escape) { + this.hide(); + this._list.unselect_all(); + return Gdk.EVENT_STOP; + } + + if (keyval === Gdk.KEY_Return || + keyval === Gdk.KEY_KP_ENTER || + keyval === Gdk.KEY_ISO_Enter) { + + // If we get an 'enter' keypress and we have a selected + // row, we do not want to propagate the event. + let row = this._list.get_selected_row(); + if (this.visible && row) { + row.activate(); + return Gdk.EVENT_STOP; + } else { + return Gdk.EVENT_PROPAGATE; + } + } + + if (keyval === Gdk.KEY_KP_Up || + keyval === Gdk.KEY_Up || + keyval === Gdk.KEY_KP_Down || + keyval === Gdk.KEY_Down) { + + let length = this._list.get_children().length; + if (length === 0) { + return Gdk.EVENT_PROPAGATE; + } + + let direction = (keyval === Gdk.KEY_KP_Up || keyval === Gdk.KEY_Up) ? -1 : 1; + let row = this._list.get_selected_row(); + let idx; + if (!row) { + idx = (direction === 1) ? 0 : length - 1; + } else { + idx = row.get_index() + direction; + } + let inBounds = 0 <= idx && idx < length; + if (inBounds) { + this.show(); + this._selectRow(this._list.get_row_at_index(idx)); + } else { + this._list.unselect_all(); + } + return Gdk.EVENT_STOP; + } + + return Gdk.EVENT_PROPAGATE; + } + + /* Selects given row and ensures that it is visible. */ + _selectRow(row) { + this._list.select_row(row); + let adjustment = this._list.get_adjustment(); + if (adjustment) { + let allocation = row.get_allocation(); + adjustment.clamp_page(allocation.y, allocation.y + allocation.height); + } + } +}); + diff --git a/src/sendToDialog.js b/src/sendToDialog.js new file mode 100644 index 00000000..9c3e9632 --- /dev/null +++ b/src/sendToDialog.js @@ -0,0 +1,262 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const PlaceFormatter = imports.placeFormatter; +const Utils = imports.utils; + +const _WEATHER_APPID = 'org.gnome.Weather'; +const _CLOCKS_APPID = 'org.gnome.clocks'; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _NUM_VISIBLE = 4; + +var SendToDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/send-to-dialog.ui', + InternalChildren: [ 'list', + 'weatherRow', + 'weatherLabel', + 'weatherIcon', + 'clocksRow', + 'clocksLabel', + 'clocksIcon', + 'cancelButton', + 'summaryLabel', + 'summaryUrl', + 'copyButton', + 'emailButton', + 'scrolledWindow' ] +}, class SendToDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + this._location = this._place.location; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._scrolledWindow.min_content_height = 40 * _NUM_VISIBLE; + this.get_header_bar().subtitle = this._place.name; + + this._cancelButton.connect('clicked', + () => this.response(Response.CANCEL)); + + this._list.connect('row-activated', (list, row) => this._activateRow(row)); + + this._list.set_header_func((row, before) => { + let horizontal = Gtk.Orientation.HORIZONTAL; + + if (before) + row.set_header(new Gtk.Separator({ orientation: horizontal })); + else + row.set_header(null); + }); + + this.connect('show', () => { + this._summaryLabel.label = this._getSummary(); + let osmuri = GLib.markup_escape_text(this._getOSMURI(), -1); + this._summaryUrl.label = '%s'.format(osmuri, osmuri); + + this._copyButton.connect('clicked', () => this._copySummary()); + this._emailButton.connect('clicked', () => this._emailSummary()); + }); + + if (GWeather) { + let world = GWeather.Location.get_world(); + let location = this._location; + this._city = world.find_nearest_city(location.latitude, + location.longitude); + /* Translators: The first string is the name of the city, the + second string is the name of the app to add it to */ + let label = _("Add %s to %s"); + + let weatherInfo = Gio.DesktopAppInfo.new(_WEATHER_APPID + '.desktop'); + if (!weatherInfo) { + this._list.remove(this._weatherRow); + } else { + this._weatherLabel.label = label.format(this._city.get_name(), + weatherInfo.get_name()); + this._weatherIcon.icon_name = weatherInfo.get_icon().to_string(); + } + + let clocksInfo = Gio.DesktopAppInfo.new(_CLOCKS_APPID + '.desktop'); + if (!clocksInfo) { + this._list.remove(this._clocksRow); + } else { + this._clocksLabel.label = label.format(this._city.get_name(), + clocksInfo.get_name()); + this._clocksIcon.icon_name = clocksInfo.get_icon().to_string(); + } + } + + /* Other apps that can launch geo: URIs */ + let contentType = Gio.content_type_from_mime_type('x-scheme-handler/geo'); + let thisId = Application.application.application_id + '.desktop'; + let apps = Gio.app_info_get_all_for_type(contentType); + apps.forEach((app) => { + if (app.get_id() == thisId) + return; + if (!app.should_show()) + return; + + this._list.add(new OpenWithRow({ appinfo: app })); + }); + + /* Hide the list box if it is empty */ + if (this._list.get_children().length == 0) { + this._scrolledWindow.hide(); + } + } + + _getSummary(markup) { + /* Gets a summary of the place (usually name, address, and coordinates, + whichever are available). Does not include OSM URL. */ + + let place = this._place; + let lines = []; + + let formatter = new PlaceFormatter.PlaceFormatter(place); + + if (!place.isCurrentLocation) + lines.push(formatter.title); + + let details = formatter.getDetailsString(); + if (details) { + lines.push(details); + } + + lines.push('%f, %f'.format(this._location.latitude, + this._location.longitude)); + + return lines.join('\n'); + } + + _getOSMURI() { + let view = this._mapView.view; + let place = this._place; + + let base = 'https://openstreetmap.org'; + if (this._place.osm_id && this._place.osm_type) { + return '%s/%s/%s'.format(base, + Utils.osmTypeToString(place.osm_type), + place.osm_id); + } else { + return '%s?mlat=%f&mlon=%f&zoom=%d'.format(base, + this._location.latitude, + this._location.longitude, + view.zoom_level); + } + } + + _copySummary() { + let summary = '%s\n%s'.format(this._getSummary(), this._getOSMURI()); + + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + clipboard.set_text(summary, -1); + this.response(Response.SUCCESS); + } + + _emailSummary() { + let title = new PlaceFormatter.PlaceFormatter(this._place).title; + let summary = "%s\n%s".format(this._getSummary(), this._getOSMURI()); + let uri = 'mailto:?subject=%s&body=%s'.format(Soup.URI.encode(title, null), + Soup.URI.encode(summary, null)); + + try { + Gio.app_info_launch_default_for_uri(uri, this._getAppLaunchContext()); + } catch(e) { + Utils.showDialog(_("Failed to open URI"), Gtk.MessageType.ERROR, + this.get_toplevel()); + Utils.debug('failed to open URI: %s'.format(e.message)); + } + + this.response(Response.SUCCESS); + } + + _getAppLaunchContext() { + let timestamp = Gtk.get_current_event_time(); + let display = Gdk.Display.get_default(); + let ctx = Gdk.Display.get_default().get_app_launch_context(); + let screen = display.get_default_screen(); + + ctx.set_timestamp(timestamp); + ctx.set_screen(screen); + + return ctx; + } + + _activateRow(row) { + if (row === this._weatherRow || row === this._clocksRow) { + let timestamp = Gtk.get_current_event_time(); + + let action; + let appId; + if (row === this._weatherRow) { + action = 'show-location'; + appId = _WEATHER_APPID; + } else { + action = 'add-location'; + appId = _CLOCKS_APPID; + } + + Utils.activateAction(appId, + action, + new GLib.Variant('v', this._city.serialize()), + timestamp); + } else if (row instanceof OpenWithRow) { + let uri = this._location.to_uri(Geocode.LocationURIScheme.GEO); + row.appinfo.launch_uris([ uri ], this._getAppLaunchContext()); + } + this.response(Response.SUCCESS); + } +}); + +var OpenWithRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/open-with-row.ui', + InternalChildren: [ 'label', + 'icon' ], +}, class OpenWithRow extends Gtk.ListBoxRow { + _init(params) { + this.appinfo = params.appinfo; + delete params.appinfo; + + super._init(params); + + this._label.label = _("Open with %s").format(this.appinfo.get_name()); + this._icon.gicon = this.appinfo.get_icon(); + } +}); diff --git a/src/service.js b/src/service.js new file mode 100644 index 00000000..4d71a99d --- /dev/null +++ b/src/service.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +let _service = null; + +const _SERVICE_URL = 'https://gis.gnome.org/services/v1/service.json'; +const _DEFAULT_SERVICE_FILE = 'maps-service.json'; + +function _getServiceFromFile(filename) { + let data = Utils.readFile(filename); + if (!data) { + log('Failed to open service file: ' + filename); + System.exit(1); + } + _service = JSON.parse(Utils.getBufferText(data)); + return _service; +} + +function _createDefaultService() { + let filename = GLib.build_filenamev([pkg.pkgdatadir, + _DEFAULT_SERVICE_FILE]); + return _getServiceFromFile(filename); +} + +function getService() { + if (_service) + return _service; + + let serviceOverride = GLib.getenv('MAPS_SERVICE'); + if (serviceOverride) + return _getServiceFromFile(serviceOverride); + + let user_agent = 'gnome-maps/' + pkg.version; + let session = new Soup.Session({ user_agent : user_agent }); + let msg = Soup.Message.new('GET', _SERVICE_URL); + try { + let stream = Gio.DataInputStream.new(session.send(msg, null)); + + let lines = ""; + while(true) { + let [line, _] = stream.read_line_utf8(null); + if (line === null) + break; + lines += line; + } + _service = JSON.parse(lines); + return _service; + } catch(e) { + Utils.debug(e); + return _createDefaultService(); + } +} diff --git a/src/serviceBackend.js b/src/serviceBackend.js new file mode 100644 index 00000000..edcfdebe --- /dev/null +++ b/src/serviceBackend.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var ServiceBackend = GObject.registerClass({ + Abstract: true +}, class ServiceBackend extends GObject.Object { + + //Abstract + get name() { } + + //Abstract + createRestCall(authorizer) { } + + //Abstract + refreshAuthorization(authorizer, cancellable) { } + + //Abstract + getAuthorizerAccount(authorizer) { } + + //Abstract + createAuthorizer(account) { } + + //Abstract + isTokenInvalid(restCall, parsedPayload) { } + + //Abstract + isInvalidCall(restCall, parsedPayload) { } + + //Abstract + getCallResultCode(restCall, parsedPayload) { } + + //Abstract + getCallResultMessage(restCall, parsedPayload) { } + + callAsync(authorizer, method, func, params, callback, cancellable, mustRefreshToken) { + mustRefreshToken = mustRefreshToken || true; + cancellable = cancellable || null; + + let restCall = this.createRestCall(authorizer); + + method = method.toUpperCase(); + restCall.set_method(method); + + for (let key in params) + restCall.add_param(key, params[key].toString()); + + restCall.set_function(func); + + Utils.debug(this.name + ': ' + func); + + restCall.invoke_async(cancellable, (call, result) => { + let data = JSON.parse(call.get_payload()); + let account = this.getAuthorizerAccount(authorizer); + + if (data && this.isTokenInvalid(call, data)) + if (mustRefreshToken) { + //Unauthorized token error, we need to refresh the token + Utils.debug(this.name + ': The token is not authorized, refreshing token'); + try { + this.refreshAuthorization(authorizer, cancellable); + this.callAsync(authorizer, method, func, params, callback, cancellable, false); + } catch(error) { + callback(account, data, { code: 401, + message: null }); + } + } else + callback(account, data, { code: 401, + message: null }); + else if (this.isInvalidCall(call, data)) + callback(account, data, { code: this.getCallResultCode(call, data), + message: this.getCallResultMessage(call, data) }); + else + callback(account, data, null); + }); + } + + performCheckIn(authorizer, checkIn, callback, cancellable) { + callback = callback || function() {}; + this._realPerformCheckIn(authorizer, checkIn, callback, cancellable); + } + + //Abstract + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { } + + findPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + callback = callback || function() {}; + this._realFindPlaces(authorizer, + latitude, + longitude, + distance, + (account, data, error) => { + if (!error) + callback(account, this.createPlaces(data), error); + else + callback(account, [], error); + }, + cancellable); + } + + //Abstract + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { } + + //Abstract + createPlaces(rawData) { } +}); diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..fa2478ab --- /dev/null +++ b/src/settings.js @@ -0,0 +1,74 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const System = imports.system; + +var Settings = GObject.registerClass( +class Settings extends Gio.Settings { + + _init(params) { + super._init(params); + // The GVariant types of the settings + this._keyTypes = {}; + this.list_keys().forEach((key) => { + this._keyTypes[key] = this.get_value(key) + .get_type() + .dup_string(); + }); + } + + get(name) { + return this.get_value(name).deep_unpack(); + } + + set(name, value) { + this.set_value(name, GLib.Variant.new (this._keyTypes[name], value)); + } +}); + +function getSettings(schemaId, path) { + const GioSSS = Gio.SettingsSchemaSource; + let schemaSource; + + if (!pkg.moduledir.startsWith('resource://')) { + // Running from the source tree + schemaSource = GioSSS.new_from_directory(pkg.pkgdatadir, + GioSSS.get_default(), + false); + } else { + schemaSource = GioSSS.get_default(); + } + + let schemaObj = schemaSource.lookup(schemaId, true); + if (!schemaObj) { + log('Missing GSettings schema ' + schemaId); + System.exit(1); + } + + if (path === undefined) + return new Settings({ settings_schema: schemaObj }); + else + return new Settings({ settings_schema: schemaObj, + path: path }); +} diff --git a/src/shapeLayer.js b/src/shapeLayer.js new file mode 100644 index 00000000..1b9b00ae --- /dev/null +++ b/src/shapeLayer.js @@ -0,0 +1,109 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; + +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; + +var SUPPORTED_TYPES = []; + +function newFromFile(file, mapView) { + let contentType = Gio.content_type_guess(file.get_uri(), null)[0]; + for (let layerClass of SUPPORTED_TYPES) { + if (layerClass.mimeTypes.indexOf(contentType) > -1) { + return layerClass.createInstance({ file: file, mapView: mapView }); + } + } + return null; +} + +var ShapeLayer = GObject.registerClass({ + Abstract: true +}, class ShapeLayer extends GObject.Object { + + _init(params) { + super._init(); + this._visible = true; + this._mapView = params.mapView; + this.file = params.file; + + this.filename = this.file.query_info( + Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, + Gio.FileQueryInfoFlags.NONE, + null + ).get_attribute_string(Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); + + this._markerLayer = new Champlain.MarkerLayer({ + selection_mode: Champlain.SelectionMode.SINGLE + }); + this._mapSource = null; + } + + get bbox() { + return this._mapSource.bbox; + } + + get visible() { + return this._visible; + } + + set visible(v) { + if (v && !this._visible) { + this._mapView.view.add_overlay_source(this._mapSource, 255); + this._markerLayer.show_all_markers(); + } else if (!v && this._visible) { + this._mapView.view.remove_overlay_source(this._mapSource); + this._markerLayer.hide_all_markers(); + } + this._visible = v; + } + + getName() { + /* + * Remove file extension and use that in lieu of a fileformat-specific + * display name. + */ + return this.filename.replace(/\.[^\.]+$/, ''); + } + + load() { + let [status, buffer] = this.file.load_contents(null); + this._fileContents = buffer; + if (!status) + throw new Error(_("failed to load file")); + this._parseContent(); + this._mapView.view.add_layer(this._markerLayer); + this._mapView.view.add_overlay_source(this._mapSource, 255); + } + + + _parseContent() { + /* Unimplemented */ + } + + unload() { + this._mapView.view.remove_layer(this._markerLayer); + this._mapView.view.remove_overlay_source(this._mapSource); + } +}); + +ShapeLayer.mimeTypes = []; +ShapeLayer.displayName = ''; diff --git a/src/shortPrintLayout.js b/src/shortPrintLayout.js new file mode 100644 index 00000000..a926afdb --- /dev/null +++ b/src/shortPrintLayout.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 1.0, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; + +var ShortPrintLayout = GObject.registerClass( +class ShortPrintLayout extends PrintLayout.PrintLayout { + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + map) + instructions */ + let totalSurfaces = 2 + this._route.turnPoints.length; + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + let dy = 0; + + this._route.turnPoints.forEach((turnPoint) => { + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, turnPoint); + this._cursorY += dy; + }); + } +}); diff --git a/src/sidebar.js b/src/sidebar.js new file mode 100644 index 00000000..d3f84316 --- /dev/null +++ b/src/sidebar.js @@ -0,0 +1,631 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const InstructionRow = imports.instructionRow; +const PlaceStore = imports.placeStore; +const RouteEntry = imports.routeEntry; +const RouteQuery = imports.routeQuery; +const StoredRoute = imports.storedRoute; +const TransitArrivalRow = imports.transitArrivalRow; +const TransitItineraryRow = imports.transitItineraryRow; +const TransitLegRow = imports.transitLegRow; +const TransitMoreRow = imports.transitMoreRow; +const TransitOptionsPanel = imports.transitOptionsPanel; +const Utils = imports.utils; + +var Sidebar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/sidebar.ui', + InternalChildren: [ 'distanceInfo', + 'entryList', + 'instructionList', + 'instructionWindow', + 'instructionSpinner', + 'instructionStack', + 'errorLabel', + 'modeBikeToggle', + 'modeCarToggle', + 'modePedestrianToggle', + 'modeTransitToggle', + 'timeInfo', + 'linkButtonStack', + 'transitWindow', + 'transitRevealer', + //'transitOptionsPanel', + 'transitHeader', + 'transitListStack', + 'transitOverviewListBox', + 'transitItineraryHeader', + 'transitItineraryListBox', + 'transitItineraryBackButton', + 'transitItineraryTimeLabel', + 'transitItineraryDurationLabel', + 'transitAttributionLabel'] +}, class Sidebar extends Gtk.Revealer { + + _init(mapView) { + super._init({ transition_type: Gtk.RevealerTransitionType.SLIDE_LEFT }); + + this._mapView = mapView; + + this._query = Application.routeQuery; + this._initInstructionList(); + + /* I could not get the custom GTK+ template widget to init properly + * from the UI file, we also need to manually insert the transit + * itinerary header widget into the GtkStack to get the correct + * animation direction. + */ + this._transitOptionsPanel = + new TransitOptionsPanel.TransitOptionsPanel({ visible: true }); + this._transitHeader.add_named(this._transitOptionsPanel, 'options'); + this._transitHeader.add_named(this._transitItineraryHeader, + 'itinerary-header'); + this._initTransportationToggles(this._modePedestrianToggle, + this._modeBikeToggle, + this._modeCarToggle, + this._modeTransitToggle); + + this._initQuerySignals(); + this._query.addPoint(0); + this._query.addPoint(1); + this._switchRoutingMode(Application.routeQuery.transportation); + /* Enable/disable transit mode switch based on the presence of + * public transit providers. + * For some reason, setting visible to false in the UI file and + * dynamically setting visible false here doesn't work, maybe because + * it's part of a radio group? As a workaround, just remove the button + * instead. + */ + if (!Application.routingDelegator.transitRouter.enabled) + this._modeTransitToggle.destroy(); + } + + _initTransportationToggles(pedestrian, bike, car, transit) { + let transport = RouteQuery.Transportation; + + let onToggle = function(mode, button) { + let previousMode = this._query.transportation; + + if (button.active && previousMode !== mode) { + this._switchRoutingMode(mode); + this._query.transportation = mode; + } + }; + pedestrian.connect('toggled', onToggle.bind(this, transport.PEDESTRIAN)); + car.connect('toggled', onToggle.bind(this, transport.CAR)); + bike.connect('toggled', onToggle.bind(this, transport.BIKE)); + transit.connect('toggled', onToggle.bind(this, transport.TRANSIT)) + + let setToggles = function() { + switch(Application.routeQuery.transportation) { + case transport.PEDESTRIAN: + pedestrian.active = true; + break; + case transport.CAR: + car.active = true; + break; + case transport.BIKE: + bike.active = true; + break; + case transport.TRANSIT: + transit.active = true; + break; + } + + this._switchRoutingMode(Application.routeQuery.transportation); + }; + + setToggles.bind(this)(); + this._query.connect('notify::transportation', setToggles.bind(this)); + } + + _switchRoutingMode(mode) { + if (mode === RouteQuery.Transportation.TRANSIT) { + Application.routingDelegator.useTransit = true; + this._linkButtonStack.visible_child_name = 'transit'; + this._transitOptionsPanel.reset(); + this._transitRevealer.reveal_child = true; + } else { + Application.routingDelegator.useTransit = false; + this._linkButtonStack.visible_child_name = 'turnByTurn'; + this._transitRevealer.reveal_child = false; + Application.routingDelegator.transitRouter.plan.deselectItinerary(); + } + this._clearInstructions(); + } + + _initQuerySignals() { + this._query.connect('point-added', (obj, point, index) => { + this._createRouteEntry(index, point); + }); + + this._query.connect('point-removed', (obj, point, index) => { + let row = this._entryList.get_row_at_index(index); + row.destroy(); + }); + } + + _cancelStore() { + Mainloop.source_remove(this._storeRouteTimeoutId); + this._storeRouteTimeoutId = 0; + } + + _createRouteEntry(index, point) { + let type; + if (index === 0) + type = RouteEntry.Type.FROM; + else if (index === this._entryList.get_children().length) + type = RouteEntry.Type.TO; + else + type = RouteEntry.Type.VIA; + + let routeEntry = new RouteEntry.RouteEntry({ type: type, + point: point, + mapView: this._mapView }); + + // add handler overriding tab focus behavior on route entries + routeEntry.entry.connect('focus', this._onRouteEntryFocus.bind(this)); + // add handler for + routeEntry.entry.connect('notify::place', () => { + this._onRouteEntrySelectedPlace(routeEntry.entry); + }); + this._entryList.insert(routeEntry, index); + + if (type === RouteEntry.Type.FROM) { + routeEntry.button.connect('clicked', () => { + let lastIndex = this._entryList.get_children().length; + this._query.addPoint(lastIndex - 1); + // focus on the newly added point's entry + this._entryList.get_row_at_index(lastIndex - 1).get_child().entry.grab_focus(); + }); + + this.connect('notify::child-revealed', () => { + if (this.child_revealed) + routeEntry.entry.grab_focus_without_selecting(); + }); + } else if (type === RouteEntry.Type.VIA) { + routeEntry.button.connect('clicked', () => { + let row = routeEntry.get_parent(); + this._query.removePoint(row.get_index()); + }); + } else if (type === RouteEntry.Type.TO) { + routeEntry.button.connect('clicked', + this._reverseRoutePoints.bind(this)); + } + + this._initRouteDragAndDrop(routeEntry); + } + + _onRouteEntryFocus(entry, direction) { + let index = this._getIndexForRouteEntry(entry); + + /* if tabbing forward from the last entry or backward from the first, + * let the default handler handle it + */ + if ((direction === Gtk.DirectionType.TAB_FORWARD && + index === this._entryList.get_children().length - 1) || + (direction === Gtk.DirectionType.TAB_BACKWARD && index === 0)) { + return false; + } + + if (direction === Gtk.DirectionType.TAB_FORWARD) { + index++; + } else if (direction === Gtk.DirectionType.TAB_BACKWARD) { + index--; + } else { + // don't handle other directions + return false; + } + + this._entryList.get_row_at_index(index).get_child().entry.grab_focus(); + return true; + } + + _onRouteEntrySelectedPlace(entry) { + let index = this._getIndexForRouteEntry(entry); + + /* if a new place is selected and it's not the last entry, focus next + * entry + */ + if (entry.place && index < this._entryList.get_children().length - 1) { + let nextPlaceEntry = + this._entryList.get_row_at_index(index + 1).get_child().entry; + + nextPlaceEntry.grab_focus(); + } + } + + _getIndexForRouteEntry(entry) { + for (let i = 0; i < this._entryList.get_children().length; i++) { + let routeEntry = this._entryList.get_row_at_index(i).get_child(); + + if (routeEntry.entry === entry) + return i; + } + + return -1; + } + + _initInstructionList() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + + route.connect('reset', () => { + this._clearInstructions(); + + let length = this._entryList.get_children().length; + for (let index = 1; index < (length - 1); index++) { + this._query.removePoint(index); + } + }); + + transitPlan.connect('reset', () => { + this._clearTransitOverview(); + this._showTransitOverview(); + this._instructionStack.visible_child = this._transitWindow; + /* don't remove query points as with the turn-based routing, + * since we might get "no route" because of the time selected + * and so on */ + this._transitAttributionLabel.label = ''; + }); + + transitPlan.connect('no-more-results', () => { + // set the "load more" row to indicate no more results + let numRows = this._transitOverviewListBox.get_children().length; + let loadMoreRow = this._transitOverviewListBox.get_row_at_index(numRows - 2); + loadMoreRow.showNoMore(); + }); + + this._query.connect('run', () => { + this._instructionStack.visible_child = this._instructionSpinner; + }); + + this._query.connect('notify', () => { + if (this._instructionStack.visible_child !== this._instructionSpinner && + this._instructionStack.visible_child !== this._errorLabel) { + if (this._query.transportation === RouteQuery.Transportation.TRANSIT) { + this._clearTransitOverview(); + this._showTransitOverview(); + this._transitAttributionLabel.label = ''; + } else { + this._clearInstructions(); + } + } + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + }); + + route.connect('update', () => { + this._clearInstructions(); + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + this._storeRouteTimeoutId = Mainloop.timeout_add(5000, () => { + let placeStore = Application.placeStore; + let places = this._query.filledPoints.map(function(point) { + return point.place; + }); + let storedRoute = new StoredRoute.StoredRoute({ + transportation: this._query.transportation, + route: route, + places: places, + geoclue: Application.geoclue + }); + + if (!storedRoute.containsNull) { + placeStore.addPlace(storedRoute, + PlaceStore.PlaceType.RECENT_ROUTE); + } + this._storeRouteTimeoutId = 0; + }); + + route.turnPoints.forEach((turnPoint) => { + let row = new InstructionRow.InstructionRow({ visible: true, + turnPoint: turnPoint }); + this._instructionList.add(row); + }); + + /* Translators: %s is a time expression with the format "%f h" or "%f min" */ + this._timeInfo.label = _("Estimated time: %s").format(Utils.prettyTime(route.time)); + this._distanceInfo.label = Utils.prettyDistance(route.distance); + }); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) + this._mapView.showTurnPoint(row.turnPoint); + }); + + transitPlan.connect('update', () => { + this._updateTransitAttribution(); + this._clearTransitOverview(); + this._showTransitOverview(); + this._populateTransitItineraryOverview(); + }); + + /* use list separators for the transit itinerary overview list */ + this._transitOverviewListBox.set_header_func((row, prev) => { + if (prev) + row.set_header(new Gtk.Separator()); + }); + + this._transitOverviewListBox.connect('row-activated', + this._onItineraryOverviewRowActivated.bind(this)); + this._transitItineraryBackButton.connect('clicked', + this._showTransitOverview.bind(this)); + + // connect error handlers + route.connect('error', (route, msg) => this._showError(msg)); + transitPlan.connect('error', (plan, msg) => this._showError(msg)); + } + + _showError(msg) { + this._instructionStack.visible_child = this._errorLabel; + this._errorLabel.label = msg; + } + + _clearTransitOverview() { + let listBox = this._transitOverviewListBox; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._transitWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + _clearTransitItinerary() { + let listBox = this._transitItineraryListBox; + listBox.forall(listBox.remove.bind(listBox)); + } + + _updateTransitAttribution() { + let plan = Application.routingDelegator.transitRouter.plan; + + if (plan.attribution) { + let attributionLabel = + _("Itineraries provided by %s").format(plan.attribution); + if (plan.attributionUrl) { + this._transitAttributionLabel.label = + '%s'.format([plan.attributionUrl], + attributionLabel); + } else { + this._transitAttributionLabel.label = attributionLabel; + } + } else { + this._transitAttributionLabel.label = ''; + } + } + + _showTransitOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + this._transitListStack.visible_child_name = 'overview'; + this._transitHeader.visible_child_name = 'options'; + plan.deselectItinerary(); + } + + _showTransitItineraryView() { + this._transitListStack.visible_child_name = 'itinerary'; + this._transitHeader.visible_child_name = 'itinerary-header'; + } + + _populateTransitItineraryOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + plan.itineraries.forEach((itinerary) => { + let row = + new TransitItineraryRow.TransitItineraryRow({ visible: true, + itinerary: itinerary }); + this._transitOverviewListBox.add(row); + }); + /* add the "load more" row */ + this._transitOverviewListBox.add( + new TransitMoreRow.TransitMoreRow({ visible: true })); + + /* add an empty list row to get a final separator */ + this._transitOverviewListBox.add(new Gtk.ListBoxRow({ visible: true })); + } + + _onItineraryActivated(itinerary) { + let plan = Application.routingDelegator.transitRouter.plan; + + this._populateTransitItinerary(itinerary); + this._showTransitItineraryView(); + plan.selectItinerary(itinerary); + } + + _onMoreActivated(row) { + row.startLoading(); + Application.routingDelegator.transitRouter.fetchMoreResults(); + } + + _onItineraryOverviewRowActivated(listBox, row) { + this._transitOverviewListBox.unselect_all(); + + if (row.itinerary) + this._onItineraryActivated(row.itinerary); + else + this._onMoreActivated(row); + } + + _populateTransitItinerary(itinerary) { + this._transitItineraryTimeLabel.label = + itinerary.prettyPrintTimeInterval(); + this._transitItineraryDurationLabel.label = + itinerary.prettyPrintDuration(); + + this._clearTransitItinerary(); + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + let row = new TransitLegRow.TransitLegRow({ leg: leg, + start: i === 0, + mapView: this._mapView }); + this._transitItineraryListBox.add(row); + } + + /* insert the additional arrival row, showing the arrival place and time */ + this._transitItineraryListBox.add( + new TransitArrivalRow.TransitArrivalRow({ itinerary: itinerary, + mapView: this._mapView })); + } + + + _clearInstructions() { + let listBox = this._instructionList; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._instructionWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + // Iterate over points and establish the new order of places + _reorderRoutePoints(srcIndex, destIndex) { + let points = this._query.points; + let srcPlace = this._draggedPoint.place; + + // Determine if we are swapping from "above" or "below" + let step = (srcIndex < destIndex) ? -1 : 1; + + // Hold off on notifying the changes to query.points until + // we have re-arranged the places. + this._query.freeze_notify(); + + for (let i = destIndex; i !== (srcIndex + step); i += step) { + // swap + [points[i].place, srcPlace] = [srcPlace, points[i].place]; + } + + this._query.thaw_notify(); + } + + /* The reason we don't just use the array .reverse() function is that we + * need to update the place parameters on the actual point objects in the + * array to fire the query notify signal that will iniate an update. + */ + _reverseRoutePoints() { + let points = this._query.points; + let length = points.length; + + this._query.freeze_notify(); + for (let i = 0; i < length / 2; i++) { + let p1 = points[i].place; + let p2 = points[length - i - 1].place; + + points[i].place = p2; + points[length - i - 1].place = p1; + } + this._query.thaw_notify(); + } + + _onDragDrop(row, context, x, y, time) { + let srcIndex = this._query.points.indexOf(this._draggedPoint); + let destIndex = row.get_index(); + + this._reorderRoutePoints(srcIndex, destIndex); + Gtk.drag_finish(context, true, false, time); + return true; + } + + _dragHighlightRow(row) { + row.opacity = 0.6; + } + + _dragUnhighlightRow(row) { + row.opacity = 1.0; + } + + // Set the opacity of the row we are currently dragging above + // to semi transparent. + _onDragMotion(row, context, x, y, time) { + let routeEntry = row.get_child(); + + if (this._draggedPoint && this._draggedPoint !== routeEntry.point) { + this._dragHighlightRow(row); + Gdk.drag_status(context, Gdk.DragAction.MOVE, time); + } else + Gdk.drag_status(context, 0, time); + return true; + } + + // Drag ends, show the dragged row again. + _onDragEnd(context, row) { + this._draggedPoint = null; + + // Restore to natural height + row.height_request = -1; + row.get_child().show(); + } + + // Drag begins, set the correct drag icon and hide the dragged row. + _onDragBegin(context, row) { + let routeEntry = row.get_child(); + let width = row.get_allocated_width(); + let height = row.get_allocated_height(); + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface) + + row.draw(cr); + this._draggedPoint = routeEntry.point; + + // Set a fixed height on the row to prevent the sidebar height + // to shrink while dragging a row. + row.height_request = height; + row.get_child().hide(); + + Gtk.drag_set_icon_surface(context, surface); + } + + // Set up drag and drop between RouteEntrys. The drag source is from a + // GtkEventBox that contains the start/end icon next in the entry. And + // the drag destination is the ListBox row. + _initRouteDragAndDrop(routeEntry) { + let dragIcon = routeEntry.iconEventBox; + let row = routeEntry.get_parent(); + + dragIcon.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, + null, + Gdk.DragAction.MOVE); + dragIcon.drag_source_add_image_targets(); + + row.drag_dest_set(Gtk.DestDefaults.MOTION, + null, + Gdk.DragAction.MOVE); + row.drag_dest_add_image_targets(); + + dragIcon.connect('drag-begin', (icon, context) => this._onDragBegin(context, row)); + dragIcon.connect('drag-end', (icon, context) => this._onDragEnd(context, row)); + + row.connect('drag-leave', this._dragUnhighlightRow.bind(this, row)); + row.connect('drag-motion', this._onDragMotion.bind(this)); + row.connect('drag-drop', this._onDragDrop.bind(this)); + } +}); diff --git a/src/socialPlace.js b/src/socialPlace.js new file mode 100644 index 00000000..8ee1e8d3 --- /dev/null +++ b/src/socialPlace.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Location = imports.location; + +var SocialPlace = GObject.registerClass( +class SocialPlace extends GObject.Object { + _init(params) { + super._init(); + + this.id = params.id; + this.name = params.name; + this.latitude = params.latitude; + this.longitude = params.longitude; + this.category = params.category; + this.link = params.link; + this.originalData = params.originalData; + } + + get location() { + return new Location.Location({ latitude: parseFloat(this.latitude), + longitude: parseFloat(this.longitude) }); + } +}); diff --git a/src/socialPlaceListBox.js b/src/socialPlaceListBox.js new file mode 100644 index 00000000..cb70fec7 --- /dev/null +++ b/src/socialPlaceListBox.js @@ -0,0 +1,103 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var SocialPlaceRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-row.ui', + InternalChildren: [ 'nameLabel', + 'categoryLabel' ] +}, class SocialPlaceRow extends Gtk.ListBoxRow { + + _init(params) { + this.place = params.place; + delete params.place; + + super._init(params); + + this._nameLabel.label = this.place.name; + if (this.place.category) + this._categoryLabel.label = this.place.category; + else + this._categoryLabel.visible = false; + } +}); + +var SocialPlaceMoreResultsRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-more-results-row.ui' +}, class SocialPlaceMoreResultsRow extends Gtk.ListBoxRow {}); + +var SocialPlaceListBox = GObject.registerClass({ + Signals: { + 'place-selected': { param_types: [GObject.TYPE_OBJECT] } + } +}, class SocialPlaceListBox extends Gtk.ListBox { + + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + this.connect('row-activated', (list, row) => { + if (!row.place) { + // "Show more results" row activated + row.destroy(); + this._showBadMatches(); + } else + this.emit('place-selected', row.place); + }); + } + + get matches() { + return this._matches; + } + + set matches(matches) { + this.forall(function(row) { + row.destroy(); + }); + + this._matches = matches; + + if (this._matches.exactMatches.length + + this._matches.goodMatches.length === 0) { + this._showBadMatches(); + } else { + this._matches.exactMatches.forEach(this._addPlace.bind(this)); + this._matches.goodMatches.forEach(this._addPlace.bind(this)); + + if (this._matches.badMatches.length > 0) + this._addMoreResults(); + } + } + + _showBadMatches() { + this._matches.badMatches.forEach(this._addPlace.bind(this)); + } + + _addPlace(place) { + this.add(new SocialPlaceRow({ place: place })); + } + + _addMoreResults() { + this.add(new SocialPlaceMoreResultsRow({})); + } +}); diff --git a/src/socialPlaceMatcher.js b/src/socialPlaceMatcher.js new file mode 100644 index 00000000..2c8c4e9d --- /dev/null +++ b/src/socialPlaceMatcher.js @@ -0,0 +1,125 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +/** + * The Levenshtein distance is a string comparison algorithm defined + * as the minimal number of characters you have to replace, insert or + * delete to transform string a into string b. + * We use it to compare the similarities of two place names. + * + * http://en.wikipedia.org/wiki/Levenshtein_distance + */ +function _getLevenshteinDistance(a, b) { + let i; + let j; + let d = []; + + for (i = 0; i <= a.length; i++) { + d[i] = []; + for (j = 0; j <= b.length; j++) + d[i][j] = 0; + } + + for (i = 1; i <= a.length; i++) + d[i][0] = i; + + for (j = 1; j <= b.length; j++) + d[0][j] = j; + + for (j = 1; j <= b.length; j++) + for (i = 1; i <= a.length; i++) + if (a[i - 1] === b[j - 1]) + d[i][j] = d[i-1][j-1]; + else + d[i][j] = Math.min(d[i-1][j] + 1, + d[i][j-1] + 1, + d[i-1][j-1] + 1); + + return d[a.length][b.length]; +} + +function _normalize(name) { + return name.toLowerCase().trim().replace(/ +(?= )/g,''); +} + +function _getPlacesLevenshteinDistance(geoPlace, socialPlace) { + let a = geoPlace.name; + let b = socialPlace.name; + + return _getLevenshteinDistance(_normalize(a), _normalize(b)); +} + +/** + * Returns: 0 for bad match, 1 for good match and 2 + * exact match. + */ +function _getKindOfMatch(geoPlace, socialPlace) { + let distance = geoPlace.location.get_distance_from(socialPlace.location); + let levenshtein = _getPlacesLevenshteinDistance(geoPlace, socialPlace); + + if (distance < 0.01 && levenshtein <= 2) + return 2; + else if (distance < 0.03 && levenshtein <= 5) + return 1; + else + return 0; +} + +function match(geoPlace, socialPlaces) { + let result = { + exactMatches: [], + goodMatches: [], + badMatches: [] + }; + + socialPlaces.sort(function(a, b) { + let da = geoPlace.location.get_distance_from(a.location); + let db = geoPlace.location.get_distance_from(b.location); + + if (da > db) + return 1; + else if (da < db) + return -1; + + return 0; + }); + + socialPlaces.forEach(function(place) { + let match = _getKindOfMatch(geoPlace, place); + + switch (match) + { + case 0: + result.badMatches.push(place); + break; + + case 1: + result.goodMatches.push(place); + break; + + case 2: + result.exactMatches.push(place); + break; + } + }); + + return result; +} diff --git a/src/storedRoute.js b/src/storedRoute.js new file mode 100644 index 00000000..b9e0bc85 --- /dev/null +++ b/src/storedRoute.js @@ -0,0 +1,218 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; + +// directional override markers +const _RLM = '\u200F'; +const _LRM = '\u200E'; + +var StoredRoute = GObject.registerClass( +class StoredRoute extends Place.Place { + + _init(params) { + let route = params.route; + delete params.route; + + this._transportation = params.transportation; + delete params.transportation; + + this.route = new Route.Route(); + this.route.update({ path: route.path, + turnPoints: route.turnPoints, + distance: route.distance, + time: route.time, + bbox: route.bbox }); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + + let places = params.places; + delete params.places; + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + params.name = directionMarker + places[0].name + directionMarker + + arrow + directionMarker + places[places.length -1].name; + + + let geoclue = params.geoclue; + delete params.geoclue; + + this.places = []; + this._containsCurrentLocation = false; + + let currentLocation = null; + if (geoclue) + currentLocation = geoclue.place; + + places.forEach((place) => { + if (currentLocation && place === currentLocation) + this._containsCurrentLocation = true; + + this.places.push(new Place.Place({ place: place })); + }); + + super._init(params); + } + + get viaString() { + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + return this.places.map(function(place) { + return directionMarker + place.name; + }).join(directionMarker + arrow); + } + + get transportation() { + return this._transportation; + } + + get icon() { + let transport = RouteQuery.Transportation; + let icon = Gio.Icon.new_for_string('route-button-symbolic'); + + switch(this._transportation) { + case transport.PEDESTRIAN: + icon = Gio.Icon.new_for_string('route-pedestrian-symbolic'); + break; + case transport.CAR: + icon = Gio.Icon.new_for_string('route-car-symbolic'); + break; + case transport.BIKE: + icon = Gio.Icon.new_for_string('route-bike-symbolic'); + break; + } + + return icon; + } + + get uniqueID() { + return this._transportation + '-' + this.places.map(function(place) { + return [place.osm_type, place.osm_id].join('-'); + }).join('-'); + } + + get containsCurrentLocation() { + return this._containsCurrentLocation; + } + + get containsNull() { + let hasNull = false; + + for (let p = 0; p < this.places.length; p++) { + if (!this.places[p].name) { + hasNull = true; + break; + } + } + return hasNull; + } + + toJSON() { + let turnPoints = this.route.turnPoints.map(function(turnPoint) { + let coordinate = { latitude: turnPoint.coordinate.latitude, + longitude: turnPoint.coordinate.longitude }; + return { coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction }; + }); + let bounding_box = { top: this.route.bbox.top, + bottom: this.route.bbox.bottom, + left: this.route.bbox.left, + right: this.route.bbox.right }; + + let path = this.route.path.map(function(coordinate) { + return { latitude: coordinate.latitude, + longitude: coordinate.longitude }; + }); + + let route = { path: path, + turnPoints: turnPoints, + distance: this.route.distance, + time: this.route.time }; + + let places = this.places.map(function(place) { + return place.toJSON(); + }); + + return { id: -1, + transportation: this._transportation, + route: route, + places: places }; + } +}); + +StoredRoute.fromJSON = function(obj) { + let props; + let places = []; + let route; + let transportation = null; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'transportation': + transportation = prop; + break; + + case 'route': + route = new Route.Route(); + prop.path = prop.path.map((coordinate) => { + let lat = coordinate.latitude; + let lon = coordinate.longitude; + return new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + }); + prop.turnPoints = prop.turnPoints.map((turnPoint) => { + let lat = turnPoint.coordinate.latitude; + let lon = turnPoint.coordinate.longitude; + + let coordinate = new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + + return new Route.TurnPoint({ + coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction + }); + }); + route.update(prop); + break; + + case 'places': + prop.forEach((p) => places.push(Place.Place.fromJSON(p))); + break; + } + } + return new StoredRoute({ transportation: transportation, + route: route, + places: places }); +}; diff --git a/src/time.js b/src/time.js new file mode 100644 index 00000000..4916a628 --- /dev/null +++ b/src/time.js @@ -0,0 +1,160 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +// allow using :, ., and the ratio symbol to separate hours:mins +const _DELIMITERS = [':', '.', '\u2236']; + +// digits variants +const _DIGIT_RANGE_BASES = [ + // Arabic + 0x0660, + // Persian + 0x06f0, + // Nko + 0x07c0, + // Devanagari + 0x0966, + // Bengali + 0x09e6, + // Gurmukhi + 0x0a66, + // Gujarati + 0x0ae6, + // Oriya + 0x0b66, + // Tamil + 0x0be6, + // Telugu + 0x0c66, + // Kannada + 0x0c80, + // Malayalam + 0x0d66, + // Sinhala + 0x0de6, + // Thai + 0x0e50, + // Lao + 0x0ed0, + // Tibetan + 0x0f20, + // Myanmar + 0x1090, + // Khmer + 0x17e0, + // Mongolian + 0x1810, + // Limbu + 0x1946, + // Tai lue + 0x19d0, + // Tai Tham + 0x1a90, + // Balinese + 0x1b50, + // Sundanese + 0x1bb0, + // Lepcha + 0x1c40 +]; + +/* parse a time from a fixed set of free-formats into a string representation: + * hour:min + * + * Examples: + * "10:00" → "10:00" + * "1:00pm" → "13:00" + * "0800" → "08:00" + * "10.30" → "10:30" + * "12" → "12:00" + * + * TODO: maybe try to use some library to get better locale handling, + * or push for something in GLib */ +function parseTimeString(timeString) { + let pmSet = false; + let hours; + let mins; + /* remove extra whitespaces */ + timeString = timeString.replace(/\s+/g, ''); + + if (timeString.endsWith('am')) { + timeString = timeString.substring(0, timeString.length - 2); + } else if (timeString.endsWith('pm')) { + timeString = timeString.substring(0, timeString.length - 2); + pmSet = true; + } + + /* remove delimiting characters if they occur at position 3 (hh:mm) + * or position 2 (h:mm) + */ + if (_DELIMITERS.includes(timeString.charAt(2))) + timeString = timeString.substring(0, 2) + timeString.substring(3); + else if (_DELIMITERS.includes(timeString.charAt(1))) + timeString = timeString.substring(0, 1) + timeString.substring(2); + + // translate localized digits to corresponding Latin digits + let translatedTimeString = ''; + + for (let i = 0; i < timeString.length; i++) { + let c = timeString.charCodeAt(i); + + _DIGIT_RANGE_BASES.forEach((base) => { + if (c >= base && c < base + 10) + c = (c - base) + 0x30; + }); + translatedTimeString += String.fromCharCode(c); + } + + if (translatedTimeString.length === 4) { + /* expect a full time specification (hours, minutes) */ + hours = translatedTimeString.substring(0, 2); + mins = translatedTimeString.substring(2, 4); + } else if (timeString.length === 3) { + /* interpret a 3 digit string as h:mm */ + hours = '0' + translatedTimeString.substring(0, 1); + mins = translatedTimeString.substring(1, 3); + } else if (translatedTimeString.length === 2) { + /* expect just the hour part */ + hours = translatedTimeString.substring(0, 2); + mins = '00'; + } else if (translatedTimeString.length === 1) { + /* expect just the hour part, one digit */ + hours = '0' + translatedTimeString; + mins = '00'; + } else { + /* this makes no sense, just bail out */ + return null; + } + + /* check if the parts can be interpreted as numbers */ + if (hours % 1 === 0 && mins % 1 === 0) { + if (pmSet) + hours = parseInt(hours) + 12; + + /* if the hours or minutes is out-of-range, bail out */ + if (hours < 0 || hours > 24 || mins < 0 || mins > 59) + return null; + + return hours + ':' + mins; + } else { + return null; + } +} diff --git a/src/togeojson/LICENSE b/src/togeojson/LICENSE new file mode 100644 index 00000000..bc7706e0 --- /dev/null +++ b/src/togeojson/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2012 Tom MacWright + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/src/togeojson/togeojson.js b/src/togeojson/togeojson.js new file mode 100644 index 00000000..ee99627f --- /dev/null +++ b/src/togeojson/togeojson.js @@ -0,0 +1,357 @@ +const Dom = imports.xmldom.dom; + +var toGeoJSON = (function() { + 'use strict'; + + var removeSpace = /\s*/g, + trimSpace = /^\s*|\s*$/g, + splitSpace = /\s+/; + // generate a short, numeric hash of a string + function okhash(x) { + if (!x || !x.length) return 0; + for (var i = 0, h = 0; i < x.length; i++) { + h = ((h << 5) - h) + x.charCodeAt(i) | 0; + } return h; + } + // all Y children of X + function get(x, y) { return x.getElementsByTagName(y); } + function attr(x, y) { return x.getAttribute(y); } + function attrf(x, y) { return parseFloat(attr(x, y)); } + // one Y child of X, if any, otherwise null + function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; } + // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize + function norm(el) { if (el.normalize) { el.normalize(); } return el; } + // cast array x into numbers + function numarray(x) { + for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); } + return o; + } + function clean(x) { + var o = {}; + for (var i in x) { if (x[i]) { o[i] = x[i]; } } + return o; + } + // get the content of a text node, if any + function nodeVal(x) { + if (x) { norm(x); } + return (x && x.textContent) || ''; + } + // get one coordinate from a coordinate array, if any + function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); } + // get all coordinates from a coordinate array as [[],[]] + function coord(v) { + var coords = v.replace(trimSpace, '').split(splitSpace), + o = []; + for (var i = 0; i < coords.length; i++) { + o.push(coord1(coords[i])); + } + return o; + } + function coordPair(x) { + var ll = [attrf(x, 'lon'), attrf(x, 'lat')], + ele = get1(x, 'ele'), + // handle namespaced attribute in browser + heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'), + time = get1(x, 'time'), + e; + if (ele) { + e = parseFloat(nodeVal(ele)); + if (!isNaN(e)) { + ll.push(e); + } + } + return { + coordinates: ll, + time: time ? nodeVal(time) : null, + heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null + }; + } + + // create a new feature collection parent object + function fc() { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var serializer = new Dom.XMLSerializer(); + function xml2str(str) { + // IE9 will create a new XMLSerializer but it'll crash immediately. + // This line is ignored because we don't run coverage tests in IE9 + /* istanbul ignore next */ + if (str.xml !== undefined) return str.xml; + return serializer.serializeToString(str); + } + + var t = { + kml: function(doc) { + + var gj = fc(), + // styleindex keeps track of hashed styles in order to match features + styleIndex = {}, + // atomic geospatial types supported by KML - MultiGeometry is + // handled separately + geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'], + // all root placemarks in the file + placemarks = get(doc, 'Placemark'), + styles = get(doc, 'Style'), + styleMaps = get(doc, 'StyleMap'); + + for (var k = 0; k < styles.length; k++) { + styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16); + } + for (var l = 0; l < styleMaps.length; l++) { + styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16); + } + for (var j = 0; j < placemarks.length; j++) { + gj.features = gj.features.concat(getPlacemark(placemarks[j])); + } + function kmlColor(v) { + var color, opacity; + v = v || ''; + if (v.substr(0, 1) === '#') { v = v.substr(1); } + if (v.length === 6 || v.length === 3) { color = v; } + if (v.length === 8) { + opacity = parseInt(v.substr(0, 2), 16) / 255; + color = '#'+v.substr(2); + } + return [color, isNaN(opacity) ? undefined : opacity]; + } + function gxCoord(v) { return numarray(v.split(' ')); } + function gxCoords(root) { + var elems = get(root, 'coord', 'gx'), coords = [], times = []; + if (elems.length === 0) elems = get(root, 'gx:coord'); + for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i]))); + var timeElems = get(root, 'when'); + for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j])); + return { + coords: coords, + times: times + }; + } + function getGeometry(root) { + var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = []; + if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); } + if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); } + if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); } + for (i = 0; i < geotypes.length; i++) { + geomNodes = get(root, geotypes[i]); + if (geomNodes) { + for (j = 0; j < geomNodes.length; j++) { + geomNode = geomNodes[j]; + if (geotypes[i] === 'Point') { + geoms.push({ + type: 'Point', + coordinates: coord1(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'LineString') { + geoms.push({ + type: 'LineString', + coordinates: coord(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'Polygon') { + var rings = get(geomNode, 'LinearRing'), + coords = []; + for (k = 0; k < rings.length; k++) { + coords.push(coord(nodeVal(get1(rings[k], 'coordinates')))); + } + geoms.push({ + type: 'Polygon', + coordinates: coords + }); + } else if (geotypes[i] === 'Track' || + geotypes[i] === 'gx:Track') { + var track = gxCoords(geomNode); + geoms.push({ + type: 'LineString', + coordinates: track.coords + }); + if (track.times.length) coordTimes.push(track.times); + } + } + } + } + return { + geoms: geoms, + coordTimes: coordTimes + }; + } + function getPlacemark(root) { + var geomsAndTimes = getGeometry(root), i, properties = {}, + name = nodeVal(get1(root, 'name')), + styleUrl = nodeVal(get1(root, 'styleUrl')), + description = nodeVal(get1(root, 'description')), + timeSpan = get1(root, 'TimeSpan'), + extendedData = get1(root, 'ExtendedData'), + lineStyle = get1(root, 'LineStyle'), + polyStyle = get1(root, 'PolyStyle'); + + if (!geomsAndTimes.geoms.length) return []; + if (name) properties.name = name; + if (styleUrl[0] !== '#') { + styleUrl = '#' + styleUrl; + } + if (styleUrl && styleIndex[styleUrl]) { + properties.styleUrl = styleUrl; + properties.styleHash = styleIndex[styleUrl]; + } + if (description) properties.description = description; + if (timeSpan) { + var begin = nodeVal(get1(timeSpan, 'begin')); + var end = nodeVal(get1(timeSpan, 'end')); + properties.timespan = { begin: begin, end: end }; + } + if (lineStyle) { + var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))), + color = linestyles[0], + opacity = linestyles[1], + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) properties.stroke = color; + if (!isNaN(opacity)) properties['stroke-opacity'] = opacity; + if (!isNaN(width)) properties['stroke-width'] = width; + } + if (polyStyle) { + var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))), + pcolor = polystyles[0], + popacity = polystyles[1], + fill = nodeVal(get1(polyStyle, 'fill')), + outline = nodeVal(get1(polyStyle, 'outline')); + if (pcolor) properties.fill = pcolor; + if (!isNaN(popacity)) properties['fill-opacity'] = popacity; + if (fill) properties['fill-opacity'] = fill === '1' ? 1 : 0; + if (outline) properties['stroke-opacity'] = outline === '1' ? 1 : 0; + } + if (extendedData) { + var datas = get(extendedData, 'Data'), + simpleDatas = get(extendedData, 'SimpleData'); + + for (i = 0; i < datas.length; i++) { + properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value')); + } + for (i = 0; i < simpleDatas.length; i++) { + properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]); + } + } + if (geomsAndTimes.coordTimes.length) { + properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ? + geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes; + } + var feature = { + type: 'Feature', + geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : { + type: 'GeometryCollection', + geometries: geomsAndTimes.geoms + }, + properties: properties + }; + if (attr(root, 'id')) feature.id = attr(root, 'id'); + return [feature]; + } + return gj; + }, + gpx: function(doc) { + var i, + tracks = get(doc, 'trk'), + routes = get(doc, 'rte'), + waypoints = get(doc, 'wpt'), + // a feature collection + gj = fc(), + feature; + for (i = 0; i < tracks.length; i++) { + feature = getTrack(tracks[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < routes.length; i++) { + feature = getRoute(routes[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < waypoints.length; i++) { + gj.features.push(getPoint(waypoints[i])); + } + function getPoints(node, pointname) { + var pts = get(node, pointname), + line = [], + times = [], + heartRates = [], + l = pts.length; + if (l < 2) return {}; // Invalid line in GeoJSON + for (var i = 0; i < l; i++) { + var c = coordPair(pts[i]); + line.push(c.coordinates); + if (c.time) times.push(c.time); + if (c.heartRate) heartRates.push(c.heartRate); + } + return { + line: line, + times: times, + heartRates: heartRates + }; + } + function getTrack(node) { + var segments = get(node, 'trkseg'), + track = [], + times = [], + heartRates = [], + line; + for (var i = 0; i < segments.length; i++) { + line = getPoints(segments[i], 'trkpt'); + if (line.line) track.push(line.line); + if (line.times && line.times.length) times.push(line.times); + if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates); + } + if (track.length === 0) return null; + var properties = getProperties(node); + if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times; + if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates; + return { + type: 'Feature', + properties: properties, + geometry: { + type: track.length === 1 ? 'LineString' : 'MultiLineString', + coordinates: track.length === 1 ? track[0] : track + } + }; + } + function getRoute(node) { + var line = getPoints(node, 'rtept'); + if (!line.line) return null; + var routeObj = { + type: 'Feature', + properties: getProperties(node), + geometry: { + type: 'LineString', + coordinates: line.line + } + }; + return routeObj; + } + function getPoint(node) { + var prop = getProperties(node); + prop.sym = nodeVal(get1(node, 'sym')); + return { + type: 'Feature', + properties: prop, + geometry: { + type: 'Point', + coordinates: coordPair(node).coordinates + } + }; + } + function getProperties(node) { + var meta = ['name', 'desc', 'author', 'copyright', 'link', + 'time', 'keywords'], + prop = {}, + k; + for (k = 0; k < meta.length; k++) { + prop[meta[k]] = nodeVal(get1(node, meta[k])); + } + return clean(prop); + } + return gj; + } + }; + return t; +})(); + +if (typeof module !== 'undefined') module.exports = toGeoJSON; diff --git a/src/transit.js b/src/transit.js new file mode 100644 index 00000000..936847e5 --- /dev/null +++ b/src/transit.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Utils = imports.utils; + +/** + * Get the label to display for the starting point of an itinerary leg. + * leg: the itinerary leg + * isFirstLeg: true if this is the first leg of the itinerary. + */ +function getFromLabel(leg, isFirstLeg) { + if (isFirstLeg) { + if (leg.from) { + /* Translators: this is a format string indicating instructions + * starting a journey at the address given as the parameter + */ + return _("Start at %s").format(leg.from); + } else { + /* Translators: this indicates starting a journey at a location + * with no set name (such as when the user started routing from + * an arbitrary point on the map) + */ + return _("Start"); + } + } else { + return leg.from; + } +} + +/** + * Get the label to display for the destination headsign. + * leg: the itinerary leg + */ +function getHeadsignLabel(leg) { + if (leg.transit && leg.headsign) { + return leg.headsign; + } else if (!leg.transit) { + /* Translators: this is a format string indicating walking a certain + * distance, with the distance expression being the %s placeholder + */ + return _("Walk %s").format(Utils.prettyDistance(leg.distance)); + } else { + return null; + } +} + +/** + * Get the label to display for arrival of the final leg of an itinerary. + */ +function getArrivalLabel(lastLeg) { + if (lastLeg.to) { + /* Translators: this a format string indicating arriving at the + * destination of journey with the arrival address and transit + * stop as the format parameter */ + return _("Arrive at %s").format(lastLeg.to); + } else { + return _("Arrive"); + } +} diff --git a/src/transitArrivalMarker.js b/src/transitArrivalMarker.js new file mode 100644 index 00000000..62547400 --- /dev/null +++ b/src/transitArrivalMarker.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitArrivalMarker = GObject.registerClass( +class TransitArrivalMarker extends MapMarker.MapMarker { + + _init(params) { + let lastPoint = params.leg.polyline[params.leg.polyline.length - 1]; + let location = + new Location.Location({ latitude: lastPoint.latitude, + longitude: lastPoint.longitude + }); + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-end-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitArrivalRow.js b/src/transitArrivalRow.js new file mode 100644 index 00000000..bb5333db --- /dev/null +++ b/src/transitArrivalRow.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Transit = imports.transit; + +var TransitArrivalRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-arrival-row.ui', + InternalChildren: ['arrivalLabel', + 'timeLabel', + 'eventBox', + 'separator'] +}, class TransitArrivalRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._arrivalLabel.label = Transit.getArrivalLabel(lastLeg); + this._timeLabel.label = lastLeg.prettyPrintArrivalTime(); + + this._eventBox.connect('event', (widget, event) => { + this._onEvent(event, lastLeg.toCoordinate); + return true; + }); + } + + _onEvent(event, coord) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(coord[0], coord[1]); + } + } +}); diff --git a/src/transitBoardMarker.js b/src/transitBoardMarker.js new file mode 100644 index 00000000..2bd33027 --- /dev/null +++ b/src/transitBoardMarker.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const ICON_SIZE = 12; +const ACTOR_SIZE = 20; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitBoardMarker = GObject.registerClass( +class TransitBoardMarker extends MapMarker.MapMarker { + + _init(params) { + let firstPoint = params.leg.polyline[0]; + let location = new Location.Location({ latitude: firstPoint.latitude, + longitude: firstPoint.longitude + }); + let leg = params.leg; + + delete params.leg; + params.place = new Place.Place({ location: location }); + super._init(params); + + this.add_actor(this._createActor(leg)); + } + + /* Creates a Clutter actor for the given transit leg, showing the + * corresponding transit type icon and rendered inside a circle using the + * foreground color of the icon taken from the transit legs text color + * attribute and background color taken from the transit legs color + * attribute. + * Also draw an outline in the same color as the icon in case the + * background color above a threashold to improve readability against the + * map background. + */ + _createActor(leg) { + try { + let bgColor = leg.color ? leg.color : TransitPlan.DEFAULT_ROUTE_COLOR; + let fgColor = + Color.getContrastingForegroundColor(bgColor, leg.textColor ? + leg.textColor : + TransitPlan.DEFAULT_ROUTE_TEXT_COLOR); + let hasOutline = + Color.relativeLuminance(bgColor) > OUTLINE_LUMINANCE_THREASHHOLD; + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let fgRed = Color.parseColor(fgColor, 0); + let fgGreen = Color.parseColor(fgColor, 1); + let fgBlue = Color.parseColor(fgColor, 2); + let fgRGBA = new Gdk.RGBA({ red: fgRed, + green: fgGreen, + blue: fgBlue, + alpha: 1.0 + }); + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_icon(leg.iconName, ICON_SIZE, + Gtk.IconLookupFlags.FORCE_SIZE); + let pixbuf = info.load_symbolic(fgRGBA, null, null, null)[0]; + let canvas = new Clutter.Canvas({ width: ACTOR_SIZE, + height: ACTOR_SIZE }); + + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.arc(ACTOR_SIZE / 2, ACTOR_SIZE / 2, ACTOR_SIZE / 2, + 0, Math.PI * 2); + cr.fillPreserve(); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + (ACTOR_SIZE - pixbuf.get_width()) / 2, + (ACTOR_SIZE - pixbuf.get_height()) / 2); + cr.paint(); + + if (hasOutline) { + cr.setSourceRGB(fgRed, fgGreen, fgBlue); + cr.setLineWidth(1); + cr.stroke(); + } + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + + actor.set_content(canvas); + actor.set_size(ACTOR_SIZE, ACTOR_SIZE); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitItineraryRow.js b/src/transitItineraryRow.js new file mode 100644 index 00000000..6c5c965b --- /dev/null +++ b/src/transitItineraryRow.js @@ -0,0 +1,136 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const TransitRouteLabel = imports.transitRouteLabel; + +// maximum number of legs to show before abbreviating with a … in the middle +const MAX_LEGS_SHOWN = 8; + +var TransitItineraryRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-itinerary-row.ui', + InternalChildren: ['timeLabel', + 'durationLabel', + 'summaryGrid'] +}, class TransitItineraryRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + super._init(params); + + this._timeLabel.label = this._itinerary.prettyPrintTimeInterval(); + this._durationLabel.label = this._itinerary.prettyPrintDuration(); + + this._populateSummary(); + } + + get itinerary() { + return this._itinerary; + } + + _populateSummary() { + let length = this._itinerary.legs.length; + /* use compacted route labels when more than 2 legs, to avoid + * overflowing the sidebar width + */ + let useCompact = length > 2; + /* don't show the route labels if too much space is consumed, + * the constant 26 here was empiracally tested out... + */ + let estimatedSpace = this._calculateEstimatedSpace(); + let useContractedLabels = estimatedSpace > 26; + + if (length > MAX_LEGS_SHOWN) { + /* ellipsize list with horizontal dots to avoid overflowing and + * expanding the sidebar + */ + this._renderLegs(this._itinerary.legs.slice(0, MAX_LEGS_SHOWN / 2), + true, true); + this._summaryGrid.add(new Gtk.Label({ visible: true, + label: '\u22ef' } )); + this._renderLegs(this._itinerary.legs.slice(-MAX_LEGS_SHOWN / 2), + true, true); + } else { + this._renderLegs(this._itinerary.legs, useCompact, + useContractedLabels); + } + } + + _renderLegs(legs, useCompact, useContractedLabels) { + let length = legs.length; + + legs.forEach((leg, i) => { + this._summaryGrid.add(this._createLeg(leg, useCompact, + useContractedLabels)); + if (i !== length - 1) + this._summaryGrid.add(new Gtk.Label({ visible: true, + label: '-' })); + }); + } + + /* calculate an estimated relative space-consuption for rendering, + * this is done based on route label character lengths and a fixed + * "placeholder" amount for mode icons and separators, since doing an + * exact pixel-correct calculation would be hard depeding on fonts and + * themes + */ + _calculateEstimatedSpace() { + let length = this._itinerary.legs.length; + /* assume mode icons and the separators consume about twice the space of + * characters + */ + let space = 4 * length - 2; + + this._itinerary.legs.forEach(function(leg) { + if (leg.transit) + space += leg.compactRoute.length; + }); + + return space; + } + + _createLeg(leg, useCompact, useContractedLabels) { + let icon = new Gtk.Image({ icon_name: leg.iconName, visible: true }); + + icon.get_style_context().add_class('sidebar-icon'); + + if (!leg.transit || useContractedLabels) { + /* if this is a non-transit leg (walking), or in case we should + * display only a mode icon (to save space), insert a sole icon */ + return icon; + } else { + /* for transit legs put besides a short route label */ + let grid = new Gtk.Grid({ visible: true, column_spacing: 2 }); + + grid.attach(icon, 0, 0, 1, 1); + grid.attach(new TransitRouteLabel.TransitRouteLabel({ leg: leg, + compact: useCompact, + visible: true }), + 1, 0, 1, 1); + + return grid; + } + } +}); diff --git a/src/transitLegRow.js b/src/transitLegRow.js new file mode 100644 index 00000000..142cf7c9 --- /dev/null +++ b/src/transitLegRow.js @@ -0,0 +1,208 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const InstructionRow = imports.instructionRow; +const Transit = imports.transit; +const TransitRouteLabel = imports.transitRouteLabel; +const TransitStopRow = imports.transitStopRow; +const Utils = imports.utils; + +var TransitLegRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-leg-row.ui', + InternalChildren: ['modeImage', + 'fromLabel', + 'routeGrid', + 'timeLabel', + 'footerStack', + 'expandButton', + 'detailsRevealer', + 'agencyLabel', + 'collapsButton', + 'instructionList', + 'eventBox'] +}, class TransitLegRow extends Gtk.ListBoxRow { + + _init(params) { + this._leg = params.leg; + delete params.leg; + + this._start = params.start; + delete params.start; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._modeImage.icon_name = this._leg.iconName; + this._fromLabel.label = Transit.getFromLabel(this._leg, this._start); + + if (this._leg.transit) { + let routeLabel = new TransitRouteLabel.TransitRouteLabel({ + leg: this._leg, + }); + + this._routeGrid.add(routeLabel); + + this._agencyLabel.visible = true; + + if (this._leg.agencyUrl) { + let url = GLib.markup_escape_text(this._leg.agencyUrl, -1); + /* we need to double-escape the tooltip text, as GTK+ treats it as + * markup + */ + let tooltip = GLib.markup_escape_text(url, -1); + this._agencyLabel.label = + '%s'.format(url, tooltip, + this._leg.agencyName); + } else { + this._agencyLabel.label = this._leg.agencyName; + } + } else { + this._expandButton.tooltip_text = _("Show walking instructions"); + this._collapsButton.tooltip_text = _("Hide walking instructions"); + } + + if (!this._leg.transit || this._leg.headsign) { + /* Restrict headsign label to 20 characters to avoid horizontally + * overflowing the sidebar. + */ + let headsignLabel = new Gtk.Label({ visible: true, + can_focus: false, + use_markup: true, + hexpand: true, + margin_start: 3, + max_width_chars: 20, + ellipsize: Pango.EllipsizeMode.END, + halign: Gtk.Align.START }); + let label = + GLib.markup_escape_text(Transit.getHeadsignLabel(this._leg), -1); + + headsignLabel.label = '%s'.format(label); + headsignLabel.get_style_context().add_class('dim-label'); + this._routeGrid.add(headsignLabel); + } + + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + + if (this._hasIntructions()) + this._populateInstructions(); + else + this._footerStack.visible_child_name = 'separator'; + + this._expandButton.connect('clicked', this._expand.bind(this)); + this._collapsButton.connect('clicked', this._collaps.bind(this)); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) { + if (row.turnPoint) + this._mapView.showTurnPoint(row.turnPoint); + else + this._mapView.showTransitStop(row.stop, this._leg); + } + }); + + this._eventBox.connect('event', (widget, event) => { + this._handleEventBox(event); + return true; + }); + + this._isExpanded = false; + } + + // Handle events received on the EventBox for expanding when clicking + _handleEventBox(event) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + if (this._isExpanded) { + this._collaps(); + } else { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(this._leg.fromCoordinate[0], + this._leg.fromCoordinate[1]); + if (this._hasIntructions()) + this._expand(); + } + } + } + + _expand() { + this._footerStack.visible_child_name = 'separator'; + this._detailsRevealer.reveal_child = true; + /* collaps the time label down to just show the start time when + * revealing intermediate stop times, as the arrival time is displayed + * at the last stop + */ + this._timeLabel.label = this._leg.prettyPrintDepartureTime(); + this._isExpanded = true; + } + + _collaps() { + this._footerStack.visible_child_name = 'expander'; + this._detailsRevealer.reveal_child = false; + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + this._isExpanded = false; + } + + _hasIntructions() { + return this._leg.transit || this._leg.walkingInstructions; + } + + _populateInstructions() { + if (this._leg.transit) { + if (this._leg.intermediateStops) { + let stops = this._leg.intermediateStops; + for (let index = 0; index < stops.length; index++) { + let stop = stops[index]; + let row = + new TransitStopRow.TransitStopRow({ visible: true, + stop: stop, + final: index === stops.length - 1 }); + this._instructionList.add(row); + } + } + } else { + /* don't output the starting and ending instructions from the walk + * route, since these are explicitely added by the itinerary + */ + for (let index = 1; + index < this._leg.walkingInstructions.length - 1; + index++) { + let instruction = this._leg.walkingInstructions[index]; + let row = + new InstructionRow.InstructionRow({ visible: true, + turnPoint: instruction }); + + this._instructionList.add(row); + } + } + } +}); diff --git a/src/transitMoreRow.js b/src/transitMoreRow.js new file mode 100644 index 00000000..64228b19 --- /dev/null +++ b/src/transitMoreRow.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var TransitMoreRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-more-row.ui', + InternalChildren: ['stack', + 'label'] +}, class TransitMoreRow extends Gtk.ListBoxRow { + + _init(params) { + super._init(params); + + if (Application.routeQuery.arriveBy) + this._label.label = _("Load earlier alternatives"); + else + this._label.label = _("Load later alternatives"); + } + + startLoading() { + this._stack.visible_child_name = 'spinner'; + } + + showNoMore() { + this.activatable = false; + this._label.get_style_context().add_class('dim-label'); + this._stack.visible_child_name = 'label'; + + if (Application.routeQuery.arriveBy) + this._label.label = _("No earlier alternatives found."); + else + this._label.label = _("No later alternatives found."); + } +}); diff --git a/src/transitOptions.js b/src/transitOptions.js new file mode 100644 index 00000000..0a964eef --- /dev/null +++ b/src/transitOptions.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +var TransitOptions = class TransitOptions { + + constructor() { + this._showAllTransitTypes = true; + this._transitTypes = []; + } + + get showAllTransitTypes() { + return this._showAllTransitTypes; + } + + /* When set to true, show any mode of transportation, else only show modes + * added with addTransitType() + */ + set showAllTransitTypes(showAllTransitTypes) { + this._showAllTransitTypes = showAllTransitTypes; + this._transitTypes = []; + } + + /* Add an explicit transport mode to show + */ + addTransitType(transitType) { + this._showAllTransitTypes = false; + this._transitTypes.push(transitType); + } + + get transitTypes() { + return this._transitTypes; + } +}; + +/* return true if the passed in options objects are equal, either both + * accept any transit type, or both contains the same set of types, otherwise + * return false + */ +function equals(first, second) { + if (first.showAllTransitTypes && second.showAllTransitTypes) { + return true; + } else if (first.transitTypes.length !== second.transitTypes.length) { + return false; + } else { + for (let type of first.transitTypes) { + if (second.transitTypes.indexOf(type) === -1) + return false; + } + + return true; + } +} diff --git a/src/transitOptionsPanel.js b/src/transitOptionsPanel.js new file mode 100644 index 00000000..6c23a3ee --- /dev/null +++ b/src/transitOptionsPanel.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const HVT = imports.hvt; +const Time = imports.time; +const TransitOptions = imports.transitOptions; +const TransitPlan = imports.transitPlan; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: clockFormat === '12h' }); + +var TransitOptionsPanel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-options-panel.ui', + InternalChildren: ['transitTimeOptionsComboBox', + 'transitTimeEntry', + 'transitDateButton', + 'transitDateCalendar', + 'transitParametersMenuButton', + 'busCheckButton', + 'tramCheckButton', + 'trainCheckButton', + 'subwayCheckButton', + 'ferryCheckButton', + 'airplaneCheckButton'] +}, class TransitOptionsPanel extends Gtk.Grid { + + _init(params) { + this._query = Application.routeQuery; + super._init(params); + this._initTransitOptions(); + } + + reset() { + /* reset to indicate departure now and forget any previous manually + * set time and date + */ + this._transitTimeOptionsComboBox.active_id = 'leaveNow'; + this._timeSelected = false; + this._dateSelected = false; + this._lastOptions = new TransitOptions.TransitOptions(); + } + + _initTransitOptions() { + this._transitTimeOptionsComboBox.connect('changed', + this._onTransitTimeOptionsComboboxChanged.bind(this)); + this._transitTimeEntry.connect('activate', + this._onTransitTimeEntryActivated.bind(this)); + /* trigger an update of the query time as soon as focus leave the time + * entry, to allow the user to enter a time before selecting start + * and destination without having to press enter */ + this._transitTimeEntry.connect('focus-out-event', + this._onTransitTimeEntryActivated.bind(this)); + this._transitDateButton.popover.get_child().connect('day-selected-double-click', + this._onTransitDateCalenderDaySelected.bind(this)); + this._transitDateButton.connect('toggled', + this._onTransitDateButtonToogled.bind(this)); + this._transitParametersMenuButton.connect('toggled', + this._onTransitParametersToggled.bind(this)) + } + + _onTransitTimeOptionsComboboxChanged() { + if (this._transitTimeOptionsComboBox.active_id === 'leaveNow') { + this._transitTimeEntry.visible = false; + this._transitDateButton.visible = false; + this._query.arriveBy = false; + this._query.date = null; + this._query.time = null; + this._timeSelected = null; + this._dateSelected = null; + } else { + this._transitTimeEntry.visible = true; + this._transitDateButton.visible = true; + + if (!this._timeSelected) + this._transitTimeEntry.text = _timeFormat.format(new Date()); + + if (!this._dateSelected) + this._updateTransitDateButton(GLib.DateTime.new_now_local()); + + if (this._transitTimeOptionsComboBox.active_id === 'arriveBy') { + this._query.arriveBy = true; + } else { + this._query.arriveBy = false; + } + } + } + + _onTransitTimeEntryActivated() { + let timeString = this._transitTimeEntry.text; + + if (timeString && timeString.length > 0) { + timeString = Time.parseTimeString(timeString); + + /* only trigger an update if a different time was entered */ + if (timeString && timeString !== this._timeSelected) { + this._query.time = timeString; + /* remember that the user has selected a time */ + this._timeSelected = timeString; + } + } + } + + _updateTransitDateButton(date) { + this._transitDateButton.label = + /* + * Translators: this is a format string giving the equivalent to + * "may 29" according to the current locale's convensions. + */ + date.format(C_("month-day-date", "%b %e")); + } + + _onTransitDateCalenderDaySelected() { + let calendar = this._transitDateButton.popover.get_child(); + let year = calendar.year; + let month = calendar.month + 1; + let day = calendar.day; + let date = '%04d-%02d-%02d'.format(year, month, day); + + /* only trigger an update if a different date was selected */ + if (date !== this._dateSelected) { + this._query.date = date; + this._transitDateButton.active = false; + this._updateTransitDateButton(GLib.DateTime.new_local(year, month, day, + 0, 0, 0)); + /* remember that the user has already selected a date */ + this._dateSelected = date; + } + } + + _onTransitDateButtonToogled() { + if (!this._transitDateButton.active) + this._onTransitDateCalenderDaySelected(); + } + + _createTransitOptions() { + let options = new TransitOptions.TransitOptions(); + let busSelected = this._busCheckButton.active; + let tramSelected = this._tramCheckButton.active; + let trainSelected = this._trainCheckButton.active; + let subwaySelected = this._subwayCheckButton.active; + let ferrySelected = this._ferryCheckButton.active; + let airplaneSelected = this._airplaneCheckButton.active; + + if (busSelected && tramSelected && trainSelected && subwaySelected && + ferrySelected && airplaneSelected) { + options.showAllTransitTypes = true; + } else { + if (busSelected) + options.addTransitType(TransitPlan.RouteType.BUS); + if (tramSelected) + options.addTransitType(TransitPlan.RouteType.TRAM); + if (trainSelected) + options.addTransitType(TransitPlan.RouteType.TRAIN); + if (subwaySelected) + options.addTransitType(TransitPlan.RouteType.SUBWAY); + if (ferrySelected) + options.addTransitType(TransitPlan.RouteType.FERRY); + if (airplaneSelected) + options.addTransitType(HVT.AIR_SERVICE); + } + + return options; + } + + _onTransitParametersToggled() { + if (!this._transitParametersMenuButton.active) { + let options = this._createTransitOptions(); + + if (!TransitOptions.equals(options, this._lastOptions)) { + this._query.transitOptions = options; + this._lastOptions = options; + } + } + } + }); diff --git a/src/transitPlan.js b/src/transitPlan.js new file mode 100644 index 00000000..96ba2416 --- /dev/null +++ b/src/transitPlan.js @@ -0,0 +1,850 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const HVT = imports.hvt; +const Utils = imports.utils; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +/* + * These constants corresponds to the routeType attribute of transit legs + * in original GTFS specification. + */ +var RouteType = { + NON_TRANSIT: -1, + TRAM: 0, + SUBWAY: 1, + TRAIN: 2, + BUS: 3, + FERRY: 4, + /* Cable car referres to street-level cabel cars, where the propulsive + * cable runs in a slot between the tracks beneeth the car + * https://en.wikipedia.org/wiki/Cable_car_%28railway%29 + * For example the cable cars in San Fransisco + * https://en.wikipedia.org/wiki/San_Francisco_cable_car_system + */ + CABLE_CAR: 5, + /* Gondola referres to a suspended cable car, typically aerial cable cars + * where the car is suspended from the cable + * https://en.wikipedia.org/wiki/Gondola_lift + * For example the "Emirates Air Line" in London + * https://en.wikipedia.org/wiki/Emirates_Air_Line_%28cable_car%29 + */ + GONDOLA: 6, + /* Funicular referres to a railway system designed for steep inclines, + * https://en.wikipedia.org/wiki/Funicular + */ + FUNICULAR: 7, + /* Electric buses that draw power from overhead wires using poles. */ + TROLLEYBUS: 11, + /* Railway in which the track consists of a single rail or a beam. */ + MONORAIL: 12 +}; + +/* extra time to add to the first itinerary leg when it's a walking leg */ +const WALK_SLACK = 120; + +const _timeFormat = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: clockFormat === '12h', + timeZone: 'UTC'}); + +function _printTimeWithTZOffset(time, offset) { + let utcTimeWithOffset = time + offset; + let date = new Date(); + + date.setTime(utcTimeWithOffset); + + return _timeFormat.format(date); +} + +var DEFAULT_ROUTE_COLOR = '4c4c4c'; +var DEFAULT_ROUTE_TEXT_COLOR = 'ffffff'; + +var Plan = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'no-more-results': {}, + 'itinerary-selected': { param_types: [GObject.TYPE_OBJECT] }, + 'itinerary-deselected': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Plan extends GObject.Object { + + _init(params) { + super._init(params); + this.reset(); + this._attribution = null; + this._attributionUrl = null; + } + + get itineraries() { + return this._itineraries; + } + + get selectedItinerary() { + return this._selectedItinerary; + } + + get attribution() { + return this._attribution; + } + + set attribution(attribution) { + this._attribution = attribution; + } + + get attributionUrl() { + return this._attributionUrl; + } + + set attributionUrl(attributionUrl) { + this._attributionUrl = attributionUrl; + } + + update(itineraries) { + this._itineraries = itineraries; + this.bbox = this._createBBox(); + this.emit('update'); + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + updateWithNewItineraries(itineraries, arriveBy, extendPrevious) { + /* sort itineraries, by departure time ascending if querying + * by leaving time, by arrival time descending when querying + * by arriving time + */ + if (arriveBy) + itineraries.sort(sortItinerariesByArrivalDesc); + else + itineraries.sort(sortItinerariesByDepartureAsc); + + let newItineraries = + extendPrevious ? this.itineraries.concat(itineraries) : itineraries; + + this.update(newItineraries); + } + + + + reset() { + this._itineraries = []; + this.bbox = null; + this._selectedItinerary = null; + this._attribution = null; + this._attributionUrl = null; + this.emit('reset'); + } + + noMoreResults() { + this.emit('no-more-results'); + } + + selectItinerary(itinerary) { + this._selectedItinerary = itinerary; + this.emit('itinerary-selected', itinerary); + } + + deselectItinerary() { + this._selectedItinerary = null; + this.emit('itinerary-deselected'); + } + + error(msg) { + this.emit('error', msg); + } + + noRouteFound() { + this.emit('error', _("No route found.")); + } + + noTimetable() { + this.emit('error', _("No timetable data found for this route.")); + } + + requestFailed() { + this.emit('error', _("Route request failed.")); + } + + noProvider() { + this.emit('error', _("No provider found for this route.")); + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + this._itineraries.forEach(function(itinerary) { + bbox.compose(itinerary.bbox); + }); + return bbox; + } +}); + +var Itinerary = GObject.registerClass( +class Itinerary extends GObject.Object { + + _init(params) { + this._duration = params.duration; + delete params.duration; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._transfers = params.transfers; + delete params.transfers; + + this._legs = params.legs; + delete params.legs; + + super._init(params); + + this.bbox = this._createBBox(); + } + + get duration() { + return this._duration; + } + + get departure() { + return this._departure; + } + + get arrival() { + return this._arrival; + } + + get transfers() { + return this._transfers; + } + + get legs() { + return this._legs; + } + + /* adjust timings of the legs of the itinerary, using the real duration of + * walking legs, also sets the timezone offsets according to adjacent + * transit legs + */ + _adjustLegTimings() { + if (this.legs.length === 1 && !this.legs[0].transit) { + /* if there is only one leg, and it's a walking one, just need to + * adjust the arrival time + */ + let leg = this.legs[0]; + leg.arrival = leg.departure + leg.duration * 1000; + + return; + } + + for (let i = 0; i < this.legs.length; i++) { + let leg = this.legs[i]; + + if (!leg.transit) { + if (i === 0) { + /* for the first leg subtract the walking time plus a + * safty slack from the departure time of the following + * leg + */ + let nextLeg = this.legs[i + 1]; + leg.departure = + nextLeg.departure - leg.duration * 1000 - WALK_SLACK; + leg.arrival = leg.departure + leg.duration * 1000; + // use the timezone offset from the first transit leg + leg.agencyTimezoneOffset = nextLeg.agencyTimezoneOffset; + } else { + /* for walking legs in the middle or at the end, just add + * the actual walking walk duration to the arrival time of + * the previous leg + */ + let previousLeg = this.legs[i - 1]; + leg.departure = previousLeg.arrival; + leg.arrival = previousLeg.arrival + leg.duration * 1000; + // use the timezone offset of the previous (transit) leg + leg.agencyTimezoneOffset = previousLeg.agencyTimezoneOffset; + } + } + } + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + + this._legs.forEach(function(leg) { + bbox.compose(leg.bbox); + }); + + return bbox; + } + + prettyPrintTimeInterval() { + /* Translators: this is a format string for showing a departure and + * arrival time, like: + * "12:00 – 13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s \u2013 %s").format(this._getDepartureTime(), + this._getArrivalTime()); + } + + _getDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg */ + return _printTimeWithTZOffset(this.departure, + this.legs[0].agencyTimezoneOffset); + } + + _getArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg */ + let lastLeg = this.legs[this.legs.length - 1]; + return _printTimeWithTZOffset(this.arrival, + lastLeg.agencyTimezoneOffset); + } + + prettyPrintDuration() { + let mins = this.duration / 60; + + if (mins < 60) { + let minStr = Utils.formatLocaleInteger(mins); + + /* translators: this is an indication for a trip duration of + * less than an hour, with only the minutes part, using plural forms + * as appropriate + */ + return ngettext("%s minute", "%s minutes", mins).format(minStr); + } else { + let hours = Math.floor(mins / 60); + let hourStr = Utils.formatLocaleInteger(hours); + + mins = mins % 60; + + if (mins === 0) { + /* translators: this is an indication for a trip duration, + * where the duration is an exact number of hours (i.e. no + * minutes part), using plural forms as appropriate + */ + return ngettext("%s hour", "%s hours", hours).format(hourStr); + } else { + let minStr = Utils.formatLocaleIntegerMinimumTwoDigits(mins); + + /* translators: this is an indication for a trip duration + * where the duration contains an hour and minute part, it's + * pluralized on the hours part + */ + return ngettext("%s:%s hour", "%s:%s hours", hours).format(hourStr, minStr); + } + } + } + + adjustTimings() { + this._adjustLegTimings(); + this._departure = this._legs[0].departure; + this._arrival = this._legs[this._legs.length - 1].arrival; + this._duration = (this._arrival - this._departure) / 1000; + } + + _getTransitDepartureLeg() { + for (let i = 0; i < this._legs.length; i++) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + _getTransitArrivalLeg() { + for (let i = this._legs.length - 1; i >= 0; i--) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + /* gets the departure time of the first transit leg */ + get transitDepartureTime() { + return this._getTransitDepartureLeg().departure; + } + + /* gets the timezone offset of the first transit leg */ + get transitDepartureTimezoneOffset() { + return this._getTransitDepartureLeg().timezoneOffset; + } + + /* gets the arrival time of the final transit leg */ + get transitArrivalTime() { + return this._getTransitArrivalLeg().arrival; + } + + /* gets the timezone offset of the final transit leg */ + get transitArrivalTimezoneOffset() { + return this._getTransitArrivalLeg().timezoneOffset; + } + + get isWalkingOnly() { + return this.legs.length === 1 && !this.legs[0].isTransit; + } +}); + +var Leg = class Leg { + + constructor(params) { + this._route = params.route; + delete params.route; + + this._routeType = params.routeType; + delete params.routeType; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._polyline = params.polyline; + delete params.polyline; + + this._fromCoordinate = params.fromCoordinate; + delete params.fromCoordinate; + + this._toCoordinate = params.toCoordinate; + delete params.toCoordinate; + + this._from = params.from; + delete params.from; + + this._to = params.to; + delete params.to; + + this._intermediateStops = params.intermediateStops; + delete params.intermediateStops; + + this._headsign = params.headsign; + delete params.headsign; + + this._isTransit = params.isTransit; + delete params.isTransit; + + this._walkingInstructions = params.walkingInstructions; + delete params.walkingInstructions; + + this._distance = params.distance; + delete params.distance; + + this._duration = params.duration; + delete params.duration; + + this._agencyName = params.agencyName; + delete params.agencyName; + + this._agencyUrl = params.agencyUrl; + delete params.agencyUrl; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._color = params.color; + delete params.color; + + this._textColor = params.textColor; + delete params.textColor; + + this._tripShortName = params.tripShortName; + delete params.tripShortName; + + this.bbox = this._createBBox(); + + this._compactRoute = null; + } + + get route() { + return this._route; + } + + set route(route) { + this._route = route; + } + + // try to get a shortened route name, suitable for overview rendering + get compactRoute() { + if (this._compactRoute) + return this._compactRoute; + + if (this._route.startsWith(this._agencyName)) { + /* if the agency name is a prefix of the route name, display the + * agency name in the overview, this way we get a nice "transition" + * into the expanded route showing the full route name + */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && + (this._agencyName.length < this._tripShortName.length)) { + /* if the agency name is shorter than the trip short name, + * which can sometimes be a more "internal" number, like a + * "train number", which is less known by the general public, + * prefer the agency name */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && this._tripShortName.length <= 6) { + /* if the above conditions are unmet, use the trip short name + * as a fallback if it was shorter than the original route name */ + this._compactRoute = this._tripShortName; + } else if (this._color) { + /* as a fallback when the route has a defined color, + * use an empty compact label to get a colored badge */ + this._compactRoute = ''; + } else { + /* if none of the above is true, use the original route name, + * and rely on label ellipsization */ + this._compactRoute = this._route; + } + + return this._compactRoute; + } + + get routeType() { + return this._routeType; + } + + set routeType(routeType) { + this._routeType = routeType; + } + + get departure() { + return this._departure; + } + + set departure(departure) { + this._departure = departure; + } + + get arrival() { + return this._arrival; + } + + get timezoneOffset() { + return this._agencyTimezoneOffset; + } + + set arrival(arrival) { + this._arrival = arrival; + } + + get polyline() { + return this._polyline; + } + + set polyline(polyline) { + this._polyline = polyline; + } + + get fromCoordinate() { + return this._fromCoordinate; + } + + get toCoordinate() { + return this._toCoordinate; + } + + get from() { + return this._from; + } + + get to() { + return this._to; + } + + get intermediateStops() { + return this._intermediateStops; + } + + set intermediateStops(intermediateStops) { + this._intermediateStops = intermediateStops; + } + + get headsign() { + return this._headsign; + } + + get transit() { + return this._isTransit; + } + + get distance() { + return this._distance; + } + + set distance(distance) { + this._distance = distance; + } + + get duration() { + return this._duration; + } + + get agencyName() { + return this._agencyName; + } + + get agencyUrl() { + return this._agencyUrl; + } + + get agencyTimezoneOffset() { + return this._agencyTimezoneOffset; + } + + set agencyTimezoneOffset(tzOffset) { + this._agencyTimezoneOffset = tzOffset; + } + + get color() { + return this._color || DEFAULT_ROUTE_COLOR; + } + + set color(color) { + this._color = color; + } + + get textColor() { + return this._textColor || DEFAULT_ROUTE_TEXT_COLOR; + } + + set textColor(textColor) { + this._textColor = textColor; + } + + get tripShortName() { + return this._tripShortName; + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + + this.polyline.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }); + + return bbox; + } + + get iconName() { + if (this._isTransit) { + let type = this._routeType; + switch (type) { + /* special case HVT codes */ + case HVT.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + default: + let hvtSupertype = HVT.supertypeOf(type); + + if (hvtSupertype !== -1) + type = hvtSupertype; + + switch (type) { + case RouteType.TRAM: + case HVT.TRAM_SERVICE: + return 'route-transit-tram-symbolic'; + + case RouteType.SUBWAY: + case HVT.METRO_SERVICE: + case HVT.URBAN_RAILWAY_SERVICE: + case HVT.UNDERGROUND_SERVICE: + return 'route-transit-subway-symbolic'; + + case RouteType.TRAIN: + case HVT.RAILWAY_SERVICE: + case HVT.SUBURBAN_RAILWAY_SERVICE: + return 'route-transit-train-symbolic'; + + case RouteType.BUS: + case HVT.BUS_SERVICE: + case HVT.COACH_SERVICE: + case HVT.TROLLEYBUS_SERVICE: + /* TODO: handle a special case icon for trolleybus */ + return 'route-transit-bus-symbolic'; + + case RouteType.FERRY: + case HVT.WATER_TRANSPORT_SERVICE: + case HVT.FERRY_SERVICE: + return 'route-transit-ferry-symbolic'; + + case RouteType.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + + case RouteType.GONDOLA: + case HVT.TELECABIN_SERVICE: + return 'route-transit-gondolalift-symbolic'; + + case RouteType.FUNICULAR: + case HVT.FUNICULAR_SERVICE: + return 'route-transit-funicular-symbolic'; + + case HVT.TAXI_SERVICE: + /* TODO: should we have a dedicated taxi icon? */ + return 'route-car-symbolic'; + + case HVT.AIR_SERVICE: + return 'route-transit-airplane-symbolic'; + + default: + /* use a fallback question mark icon in case of some future, + * for now unknown mode appears */ + return 'dialog-question-symbolic'; + } + } + } else { + return 'route-pedestrian-symbolic'; + } + } + + get walkingInstructions() { + return this._walkingInstructions; + } + + set walkingInstructions(walkingInstructions) { + this._walkingInstructions = walkingInstructions; + } + + /* Pretty print timing for a transit leg, set params.isStart: true when + * printing for the starting leg of an itinerary. + * For starting walking legs, only the departure time will be printed, + * otherwise the departure and arrival time of the leg (i.e. transit ride + * or an in-between walking section) will be printed. + */ + prettyPrintTime(params) { + if (!this.transit && params.isStart) { + return this.prettyPrintDepartureTime(); + } else { + /* Translators: this is a format string for showing a departure and + * arrival time in a more compact manner to show in the instruction + * list for an itinerary, like: + * "12:00–13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s\u2013%s").format(this.prettyPrintDepartureTime(), + this.prettyPrintArrivalTime()); + } + } + + prettyPrintDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg + */ + return _printTimeWithTZOffset(this.departure, this.agencyTimezoneOffset); + } + + prettyPrintArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg + */ + return _printTimeWithTZOffset(this.arrival, this.agencyTimezoneOffset); + } +}; + +var Stop = class Stop { + + constructor(params) { + this._name = params.name; + delete params.name; + + this._arrival = params.arrival; + delete params.arrival; + + this._departure = params.departure; + delete params.departure; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._coordinate = params.coordinate; + delete params.coordinate; + } + + get name() { + return this._name; + } + + get coordinate() { + return this._coordinate; + } + + prettyPrint(params) { + if (params.isFinal) { + /* take the stop arrival time and offset using the timezone + * offset of the last leg + */ + return _printTimeWithTZOffset(this._arrival, + this._agencyTimezoneOffset); + } else { + /* take the stop departure time and offset using the timezone + * offset of the first leg + */ + return _printTimeWithTZOffset(this._departure, + this._agencyTimezoneOffset); + } + } +}; + +function sortItinerariesByDepartureAsc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * starting at the earliest possible departure time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.departure > second.departure; +} + +function sortItinerariesByArrivalDesc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * ending at the latest possible arrival time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.arrival < second.arrival; +} diff --git a/src/transitPrintLayout.js b/src/transitPrintLayout.js new file mode 100644 index 00000000..323ed1e7 --- /dev/null +++ b/src/transitPrintLayout.js @@ -0,0 +1,331 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Pango = imports.gi.Pango; + +const Color = imports.color; +const Gfx = imports.gfx; +const MapSource = imports.mapSource; +const PrintLayout = imports.printLayout; +const Transit = imports.transit; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; + +// stroke color for walking paths +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 0, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +// All following constants are ratios of surface size to page size +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; +const _Instruction = { + SCALE_X: 0.9, + SCALE_Y: 0.1, + SCALE_MARGIN: 0.01 +}; + +// luminance threashhold for drawing outline around route label badges +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitPrintLayout = GObject.registerClass( +class TransitPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + params.totalSurfaces = this._getNumberOfSurfaces(); + + super._init(params); + } + + _getNumberOfSurfaces() { + // always one fixed surface for the title label + let numSurfaces = 1; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + numSurfaces++; + // add a surface when a leg of the itinerary should have a map view + if (this._legHasMiniMap(i)) + numSurfaces++; + } + + // always include the arrival row + numSurfaces++; + + return numSurfaces; + } + + _drawMapView(width, height, zoomLevel, index) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + let leg = this._itinerary.legs[index]; + let nextLeg = this._itinerary.legs[index + 1]; + let previousLeg = index === 0 ? null : this._itinerary.legs[index - 1]; + + view.set_map_source(mapSource); + /* we want to add the path layer before the marker layer, so that + * boarding marker are drawn about the walk dash lines + */ + this._addRouteLayer(view, index); + view.add_layer(markerLayer); + + markerLayer.add_marker(this._createStartMarker(leg, previousLeg)); + if (nextLeg) + markerLayer.add_marker(this._createBoardMarker(nextLeg)); + else + markerLayer.add_marker(this._createArrivalMarker(leg)); + + /* in some cases, we seem to get get zero distance walking instructions + * within station complexes, don't try to show a bounding box for low + * distances, instead center on the spot + */ + if (leg.distance < 10) + view.center_on(leg.fromCoordinate[0], leg.fromCoordinate[1]); + else + view.ensure_visible(leg.bbox, false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createStartMarker(leg, previousLeg) { + return new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg }); + } + + _createBoardMarker(leg) { + return new TransitBoardMarker.TransitBoardMarker({ leg: leg }); + } + + _createArrivalMarker(leg) { + return new TransitArrivalMarker.TransitArrivalMarker({ leg: leg }); + } + + _addRouteLayer(view, index) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + let leg = this._itinerary.legs[index]; + + routeLayer.set_dash([5, 5]); + view.add_layer(routeLayer); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way + */ + if (index > 0 && !leg.transit) { + let previousLeg = this._itinerary.legs[index - 1]; + let lastPoint = + previousLeg.polyline[previousLeg.polyline.length - 1]; + + routeLayer.add_node(lastPoint); + } + + leg.polyline.forEach((node) => routeLayer.add_node(node)); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one + */ + if (index < this._itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = this._itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + } + + _drawInstruction(width, height, leg, start) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let timeWidth = !leg.transit && start ? height : height * 2; + let fromText = Transit.getFromLabel(leg, start); + let routeWidth = 0; + + this._drawIcon(cr, leg.iconName, width, height); + this._drawText(cr, fromText, this._rtl ? timeWidth : height, 0, + width - height - timeWidth, height / 2, Pango.Alignment.LEFT); + + if (leg.transit) { + let color = leg.color; + let textColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD; + let routeText = + this._createTextLayout(cr, leg.route, width - height - timeWidth, + height / 2, + this._rtl ? Pango.Alignment.RIGHT : + Pango.Alignment.LEFT); + let [pWidth, pHeight] = routeText.get_pixel_size(); + let routePadding = 3; + let routeHeight = pHeight + routePadding * 2; + routeWidth = Math.max(pWidth, pHeight) + routePadding * 2; + let routeX = this._rtl ? width - height - routeWidth - 1 : height; + let routeY = height / 2 + ((height / 2) - routeHeight) / 2; + + + textColor = Color.getContrastingForegroundColor(color, textColor); + Gfx.drawColoredBagde(cr, color, hasOutline ? textColor : null, + routeX, routeY, routeWidth, routeHeight); + this._drawTextLayoutWithColor(cr, routeText, + routeX + routePadding + + (routeWidth - pWidth - + routePadding * 2) / 2, + routeY + routePadding, + routeWidth - routePadding * 2, + routeHeight - routePadding * 2, + textColor, Pango.Alignment.LEFT); + + // introduce some additional padding before the headsign label + routeWidth += routePadding; + } + + let headsign = Transit.getHeadsignLabel(leg); + + if (headsign) { + let headsignLayout = this._createTextLayout(cr, headsign, + width - height - timeWidth - routeWidth, + height / 2, + Pango.Alignment.LEFT); + let [pWidth, pHeight] = headsignLayout.get_pixel_size(); + this._drawTextLayoutWithColor(cr, headsignLayout, + this._rtl ? timeWidth : height + routeWidth, + height / 2 + (height / 2 - pHeight) / 2, + width - height - timeWidth - routeWidth, + height / 2, '888888', + Pango.Alignment.LEFT); + } + this._drawTextVerticallyCentered(cr, leg.prettyPrintTime({ isStart: start }), + timeWidth, height, + this._rtl ? 0 : width - timeWidth - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _drawArrival(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._drawIcon(cr, 'maps-point-end-symbolic', width, height); + // draw the arrival text + this._drawTextVerticallyCentered(cr, Transit.getArrivalLabel(lastLeg), + width - height * 3, + height, this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + // draw arrival time + this._drawTextVerticallyCentered(cr, lastLeg.prettyPrintArrivalTime(), + height, height, + this._rtl ? 0 : width - height - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _legHasMiniMap(index) { + let leg = this._itinerary.legs[index]; + return !leg.transit; + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let dy = headerHeight + headerMargin; + + this._createNewPage(); + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + let leg = this._itinerary.legs[i]; + let hasMap = this._legHasMiniMap(i); + let instructionDy = instructionHeight + instructionMargin; + let mapDy = hasMap ? mapViewHeight + mapViewMargin : 0; + + dy = instructionDy + mapDy; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, leg, + i === 0); + this._cursorY += instructionDy; + + if (hasMap) { + let nextLeg = i < this._itinerary.legs.length - 1 ? + this._itinerary.legs[i + 1] : null; + this._drawMapView(mapViewWidth, mapViewHeight, mapViewZoomLevel, i); + this._cursorY += mapDy; + } + } + + this._drawArrival(instructionWidth, instructionHeight); + } +}); diff --git a/src/transitRouteLabel.js b/src/transitRouteLabel.js new file mode 100644 index 00000000..8e1f0388 --- /dev/null +++ b/src/transitRouteLabel.js @@ -0,0 +1,124 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Gfx = imports.gfx; +const Utils = imports.utils; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; +/* the threashhold when using a dark theme, when the color is darker draw an + * outline around the label + */ +const DARK_OUTLINE_LUMINANCE_THREASHHOLD = 0.1; + +// fallback high contrast colors +const HIGH_CONTRAST_COLOR = '000000'; +const HIGH_CONTRAST_TEXT_COLOR = 'ffffff'; + +var TransitRouteLabel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-route-label.ui', +}, class TransitRouteLabel extends Gtk.Label { + + _init(params) { + let leg = params.leg; + let compact = params.compact; + + delete params.leg; + delete params.compact; + super._init(params); + + this._setLabel(leg, compact); + this.connect('draw', this._onDraw.bind(this)); + } + + _setLabel(leg, compact) { + let color = leg.color; + let textColor = leg.textColor; + let label = leg.route; + let usingDarkTheme = Utils.isUsingDarkThemeVariant(); + let usingHighContrastTheme = Utils.isUsingHighContrastTheme(); + + textColor = Color.getContrastingForegroundColor(color, textColor); + + /* if using the high contrast theme and a label is set, fallback to + * hight-contrasting colors, if no label, assume the route color is + * more relevant and keep it also for high contrast + */ + if (usingHighContrastTheme && ((compact && leg.compactRoute) || + (!compact && label))) { + color = HIGH_CONTRAST_COLOR; + textColor = HIGH_CONTRAST_TEXT_COLOR; + } + + this._color = color; + this._textColor = textColor; + + if ((!usingDarkTheme && + Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD) || + (usingDarkTheme && + Color.relativeLuminance(color) < DARK_OUTLINE_LUMINANCE_THREASHHOLD)) { + this._hasOutline = true; + } + + /* for compact (overview) mode, try to shorten the label if the route + * name was more than 6 characters + */ + if (compact && label.length > 6) + label = leg.compactRoute; + + if (compact) { + /* restrict number of characters shown in the label when compact mode + * is requested + */ + this.max_width_chars = 6; + } else if (leg && !leg.headsign) { + // if there is no trip headsign to display, allow more space + this.max_width_chars = 25; + } + + this.label = '%s'.format( + textColor, + GLib.markup_escape_text(label, -1)); + } + + /* I didn't find any easy/obvious way to override widget background color + * and getting rounded corner just using CSS styles, so doing a custom + * Cairo drawing of a "roundrect" + */ + _onDraw(widget, cr) { + let width = widget.get_allocated_width(); + let height = widget.get_allocated_height(); + + Gfx.drawColoredBagde(cr, this._color, + this._hasOutline ? this._textColor : null, + 0, 0, width, height); + + return false; + } +}); diff --git a/src/transitRouter.js b/src/transitRouter.js new file mode 100644 index 00000000..4114d09e --- /dev/null +++ b/src/transitRouter.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Champlain = imports.gi.Champlain; + +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * Class responsible for delegating requests to perform routing in transit + * mode. + * Holds the the shared plan instance (filled with journeys on successful + * requests). + */ +var TransitRouter = class TransitRoute { + constructor(params) { + this._plan = new TransitPlan.Plan(); + this._query = params.query; + this._providers = Service.getService().transitProviders; + this._providerCache = []; + this._language = Utils.getLanguage(); + this._probePlugins(); + } + + get enabled() { + return this._providers !== undefined; + } + + get plan() { + return this._plan; + } + + /** + * Called when the query has been updated to trigger the first set + * of results- + */ + fetchFirstResults() { + let bestProvider = this._getBestProviderForQuery(); + + if (bestProvider) { + let provider = bestProvider[0]; + + this._currPluginInstance = bestProvider[1]; + this._plan.attribution = this._getAttributionForProvider(provider); + if (provider.attributionUrl) + this._plan.attributionUrl = provider.attributionUrl; + this._currPluginInstance.fetchFirstResults(); + } else { + this._plan.reset(); + this._plan.noProvider(); + } + } + + /** + * Called to fetch additional (later or earlier) results depending on the + * query settings. + */ + fetchMoreResults() { + if (this._currPluginInstance) + this._currPluginInstance.fetchMoreResults(); + else + throw new Error('No previous provider'); + } + + _probePlugins() { + this._availablePlugins = []; + + for (let module in imports.transitplugins) { + for (let pluginClass in imports.transitplugins[module]) { + this._availablePlugins[pluginClass] = module; + } + } + } + + /** + * Get attribution for a provider. Returns a language-specific + * 'attribution:' tag if available, otherwise 'attribution' + */ + _getAttributionForProvider(provider) { + if (provider['attribution:' + this._language]) + return provider['attribution:' + this._language]; + else if (provider.attribution) + return provider.attribution; + else + return null; + } + + _getMatchingProvidersForLocation(location) { + let country = Utils.getCountryCodeForCoordinates(location.latitude, + location.longitude); + + let matchingProviders = []; + + this._providers.forEach((p) => { + let provider = p.provider; + let areas = provider.areas; + + if (!areas) { + Utils.debug('No coverage info for provider ' + provider.name); + return; + } + + areas.forEach((area) => { + /* if the area has a specified priority, override the + * overall area priority, this allows sub-areas of of + * coverage for a provider to have higher or lowe priorities + * than other providers (e.g. one "native" to that area + */ + if (area.priority) + provider.priority = area.priority; + + let countries = area.countries; + + if (countries) { + if (countries.includes(country)) { + matchingProviders[provider.name] = provider; + return; + } + } + + let bbox = area.bbox; + + if (bbox) { + if (bbox.length !== 4) { + Utils.debug('malformed bounding box for provider ' + provider.name); + return; + } + + let [x1, y1, x2, y2] = bbox; + let cbbox = new Champlain.BoundingBox({ bottom: x1, + left: y1, + top: x2, + right: y2 }); + + if (cbbox.covers(location.latitude, + location.longitude)) { + matchingProviders[provider.name] = provider; + return; + } + } + }); + }); + + return matchingProviders; + } + + /** + * Get the most preferred provider for a given query. + * Return: an array with the provider definition and the plugin instance, + * or null if no matching provider was found. + */ + _getBestProviderForQuery() { + let startLocation = this._query.filledPoints[0].place.location; + let endLocation = + this._query.filledPoints.last().place.location; + + let matchingProvidersForStart = + this._getMatchingProvidersForLocation(startLocation); + let matchingProvidersForEnd = + this._getMatchingProvidersForLocation(endLocation); + + let matchingProviders = []; + + // check all candidate providers matching on the start location + for (let name in matchingProvidersForStart) { + let providerAtStart = matchingProvidersForStart[name]; + let providerAtEnd = matchingProvidersForEnd[name]; + + /* if the provider also matches on the end location, consider it + * as a potential candidate + */ + if (providerAtEnd) { + let order = this._sortProviders(providerAtStart, providerAtEnd); + + /* add the provider at it lowest priority to favor higher + * priority providers in "fringe cases" + */ + if (order < 0) + matchingProviders.push(providerAtStart); + else + matchingProviders.push(providerAtEnd); + } + } + + matchingProviders.sort(this._sortProviders); + + for (let i = 0; i < matchingProviders.length; i++) { + let provider = matchingProviders[i]; + let plugin = provider.plugin; + + if (this._providerCache[provider.name]) + return [provider, this._providerCache[provider.name]]; + + let module = this._availablePlugins[plugin]; + + if (module) { + try { + let params = provider.params; + let instance = + params ? new imports.transitplugins[module][plugin](params) : + new imports.transitplugins[module][plugin](); + + this._providerCache[provider.name] = instance; + + return [provider, instance]; + } catch (e) { + Utils.debug('Failed to instanciate transit plugin: ' + + plugin + ": " + e); + } + } else { + Utils.debug('Transit provider plugin not available: ' + plugin); + } + } + + Utils.debug('No suitable transit provider found'); + return null; + } + + /** + * Sort function to sort providers in by preference. + * If both providers have a priority set, prefers the one with a lower + * value (higher prio), otherwise the one that has a priority set (if any), + * else no specific order. + */ + _sortProviders(p1, p2) { + if (p1.priority && p2.priority) + return p1.priority - p2.priority; + else if (p1.priority) + return -1; + else if (p2.priority) + return 1; + else + return 0; + } +}; diff --git a/src/transitStopRow.js b/src/transitStopRow.js new file mode 100644 index 00000000..f3cbe790 --- /dev/null +++ b/src/transitStopRow.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var TransitStopRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-stop-row.ui', + InternalChildren: [ 'nameLabel', + 'timeLabel' ] +}, class TransitStopRow extends Gtk.ListBoxRow { + + _init(params) { + this.stop = params.stop; + delete params.stop; + + this._final = params.final; + delete params.final; + + super._init(params); + + this._nameLabel.label = this.stop.name; + this._timeLabel.label = this.stop.prettyPrint({ isFinal: this._final }); + } +}); diff --git a/src/transitTweaks.js b/src/transitTweaks.js new file mode 100644 index 00000000..dc1f7deb --- /dev/null +++ b/src/transitTweaks.js @@ -0,0 +1,180 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://gis.gnome.org/services/aux'; + +var TransitTweaks = class { + constructor(params) { + this._name = params.name; + this._session = + new Soup.Session({ user_agent: 'gnome-maps/' + pkg.version }); + + if (!this._name) + throw new Error('Missing tweak name'); + } + + applyTweaks(itineraries, callback) { + if (!this._tweaks) { + let variable = 'TRANSIT_TWEAKS_' + this._name.toUpperCase(); + let filename = GLib.getenv(variable); + + if (filename) { + this._readTweaksFromFile(filename); + this._doApplyTweaks(itineraries, callback); + } else { + this._fetchTweaksAsync(itineraries, callback); + } + } else { + this._doApplyTweaks(itineraries, callback); + } + } + + _doApplyTweaks(itineraries, callback) { + if (Object.keys(this._tweaks).length !== 0) { + itineraries.forEach((itinerary) => + this._applyTweaksToItinerary(itinerary)); + } + + callback(); + } + + _readTweaksFromFile(filename) { + let data = Utils.readFile(filename); + + if (!data) { + Utils.debug('Failed to read from tweak file'); + this._tweaks = {}; + callback(); + } + + try { + this._tweaks = JSON.parse(Utils.getBufferText(data)); + } catch (e) { + Utils.debug('Failed to parse tweaks: ' + e); + this._tweaks = {}; + } + } + + _fetchTweaksAsync(itineraries, callback) { + let uri = new Soup.URI(BASE_URL + '/' + 'tweaks-' + this._name + '.json'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to download tweaks'); + this._tweaks = {}; + callback(); + } else { + try { + this._tweaks = JSON.parse(message.response_body.data); + } catch (e) { + Utils.debug('Failed to parse tweaks: ' + e); + this._tweaks = {}; + } + + this._doApplyTweaks(itineraries, callback); + } + }); + } + + _applyTweaksToItinerary(itinerary) { + itinerary.legs.forEach((leg) => { + if (leg.transit) + this._applyTweaksToLeg(leg); + }); + } + + _applyTweaksToLeg(leg) { + let agencyTweaks = this._tweaks.agencies[leg.agencyName]; + + if (agencyTweaks) { + let routeTypeTweaks = agencyTweaks.routeTypes[leg.routeType]; + + if (routeTypeTweaks) { + let tweakToApply; + let bboxTweaks = routeTypeTweaks.bboxes; + let routeTweaks = routeTypeTweaks.routes ? + routeTypeTweaks.routes[leg.route] || null : null; + let routePatternTweaks = routeTypeTweaks.routePatterns; + + // first check for boundingbox-specific tweaks + if (bboxTweaks) { + bboxTweaks.forEach((tweak) => { + let bbox = tweak.bbox; + let cbbox = new Champlain.BoundingBox({ bottom: bbox[0], + left: bbox[1], + top: bbox[2], + right: bbox[3] }); + + if (cbbox.covers(leg.polyline[0].latitude, + leg.polyline[0].longitude)) { + /* if boundingbox fits, use embedded route or + * route pattern tweaks + */ + routeTweaks = tweak.routes ? + tweak.routes[leg.route] : null; + routePatternTweaks = tweak.routePatterns; + } + }); + } + + if (routeTweaks) { + tweakToApply = routeTweaks; + } else if (routePatternTweaks) { + routePatternTweaks.forEach((pattern) => { + if (!(pattern.regex instanceof RegExp)) { + pattern.regex = new RegExp(pattern.regex); + } + + if (leg.route.match(pattern.regex)) + tweakToApply = pattern; + }); + } + + if (!tweakToApply) { + tweakToApply = routeTypeTweaks; + } + + this._applyRouteTweaksToLeg(leg, tweakToApply); + } + } + } + + _applyRouteTweaksToLeg(leg, tweaks) { + if (tweaks.route) + leg.route = tweaks.route; + + if (tweaks.routeType) + leg.routeType = tweaks.routeType; + + if (tweaks.color) + leg.color = tweaks.color; + + if (tweaks.textColor) + leg.textColor = tweaks.textColor; + } +} diff --git a/src/transitWalkMarker.js b/src/transitWalkMarker.js new file mode 100644 index 00000000..93c642ba --- /dev/null +++ b/src/transitWalkMarker.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitWalkMarker = GObject.registerClass( +class TransitWalkMarker extends MapMarker.MapMarker { + + _init(params) { + /* if there is a preceeding leg, put the marker at the end of that leg + * to avoid gaps, since we will "fill out" the walking leg path line + * since sometimes the walking route might not reach exactly to the + * transit stop's position + */ + let point; + if (params.previousLeg) + point = params.previousLeg.polyline[params.previousLeg.polyline.length - 1]; + else + point = params.leg.polyline[0]; + + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + delete params.previousLeg; + + let location = new Location.Location({ latitude: point.latitude, + longitude: point.longitude + }); + + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-start-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitplugins/README b/src/transitplugins/README new file mode 100644 index 00000000..890401cd --- /dev/null +++ b/src/transitplugins/README @@ -0,0 +1,67 @@ +This directory contains implementations of transit routing provider plugins. +Each plugin should contain an ES6 class implementing the plugin. + +Each implementation implements two methods: + +fetchFirstResults(): + +This is invoked when the singleton routing query has been updated and would +query itineraries from it's source, and on success populate the TransitPlan +singleton with an itinerary list and call plan.update(), or on error call +one of the pre-defined error methods on the plan, or trigger a custom error +with plan.error(). + +fetchMoreResults(): + +This is invoked when to fetch additional (later or earlier) results. +Would on success add additional itineraries and call plan.update(), or on +error call plan.noMoreResults(). + +Providers are configured via the downloaded service file using a JSON element +like: + +"transitProviders": [ + { + "provider": { + "name": "Description of provider 1", + "plugin": "OpenTripPlanner", + "attribution": "Provider 1", + "attributionUrl": "http://provider1.example.com", + "priority": 10, + "areas": [ + { + "priority": 10, + "countries": [ "UT" ] + } + ], + "params": { + "baseUrl": "http://otp.provider1.example.com/otp" + } + } + }, + { + "provider": { + "name": "Provider 2", + "plugin": "OpenTripPlanner", + "attribution": "Provider 2", + "attributionUrl": "https://provider2.example.com", + "areas": [ + { + "bbox": [48.28,0.81,49.73,4.11] + } + ], + "params": { + "baseUrl": "https://provider2.example.com/otp" + } + } + } + ] + + Each provider can have an optional priority, to allow more specific provider + (e.g. one serving a single city) within the area of a more general one. + Single sub-areas of a provider can also override the general provider priority. + This can be used to allow areas of provider to "shadow" neighboring providers + while keeping the the neighboring provider as the preferred one when used + exclusively for its region. + Custom parameters, if specified, will be passed as the "params" object the + constructor() of the plugin implementation. \ No newline at end of file diff --git a/src/transitplugins/goMetro.js b/src/transitplugins/goMetro.js new file mode 100644 index 00000000..e68cd1c2 --- /dev/null +++ b/src/transitplugins/goMetro.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the South African + * GoMetro API. + * https://proserver.gometro.co.za/api/v1/docs/#multimodal-routing + */ + +const BASE_URL = 'https://proserver.gometro.co.za/api'; +const API_VERSION = 'v1'; + +const NATIVE_TIMEZONE = 'Africa/Cape_Town'; + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +const Application = imports.application; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const OpenTripPlanner = imports.transitplugins.openTripPlanner; + +var GoMetro = class GoMetro extends OpenTripPlanner.OpenTripPlanner { + constructor() { + super({ baseUrl: BASE_URL }); + + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + } + + // the GoMetro API only supports start and destination points + fetchFirstResults() { + if (this._query.filledPoints.length > 2) { + Utils.debug('This plugin does not support via locations'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (this._query.arriveBy) { + this._reset(); + this._plan.error(_("This plugin doesn't support latest arrival")); + } else { + super.fetchFirstResults(); + } + } + + _getPlanUrlWithLocations() { + let fromLocation = this._query.filledPoints[0].place.location; + let toLocation = this._query.filledPoints.last().place.location; + + return '%s/%s/trips/%s,%s/%s,%s/%s/%s'.format(BASE_URL, + API_VERSION, + fromLocation.latitude, + fromLocation.longitude, + toLocation.latitude, + toLocation.longitude, + this._getDateAndTimeParams(), + this._getModesParam()); + } + + _getDateAndTimeParams() { + if (this._query.time || this._extendPrevious) { + let params = {}; + + this._addCommonParams(params); + let time = params.time; + let date = params.date; + + return '%s/%s%s'.format(date, this._query.arriveBy ? '-' : '', time); + } else { + let dateTime = GLib.DateTime.new_now(this._tz); + + return '%04d-%02d-%02d/%02d:%02d'.format(dateTime.get_year(), + dateTime.get_month(), + dateTime.get_day_of_month(), + dateTime.get_hour(), + dateTime.get_minute()); + } + } + + // GoMetro seems to (ab)use routeType ferry for communal taxi + _createLeg(leg, index, legs) { + let result = super._createLeg(leg, index, legs); + + if (result.routeType === TransitPlan.RouteType.FERRY) + result.routeType = HVT.TAXI_SERVICE; + + return result; + } + + _getModesParam() { + let params = ''; + let transitOptions = this._query.transitOptions; + + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAIN)) + params += 'RAIL,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.BUS)) + params += 'BUS,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.FERRY)) + params += 'FERRY,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAM)) + params += 'TRAM,'; + if (transitOptions.showAllTransitTypes) + params += 'GONDOLA,'; + + return params + 'WALK'; + } +} diff --git a/src/transitplugins/openTripPlanner.js b/src/transitplugins/openTripPlanner.js new file mode 100644 index 00000000..d1a3e3d3 --- /dev/null +++ b/src/transitplugins/openTripPlanner.js @@ -0,0 +1,1249 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const EPAF = imports.epaf; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const Location = imports.location; +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * This module implements the interface for communicating with an OpenTripPlanner + * server instance. + * The code is somewhat intricate since it supports instances of OpenTripPlanner + * running both with and without OSM data to complement the transit timetable + * data with turn-by-turn (walking) routing. + * + * There is two entry points for obtaining routes, one which is called by the + * routing delegator when the query is being modified (fetchFirstResults()), + * and the other being called when requesting additional results (later or + * earlier alternatives depending on search criteria) (fetchMoreResults()) + * These call into an entry point function "_fatchRoute()". + * "_fetchRoutes()" is called. + * In the case where there is no OSM data (onlyTransitData is true), it + * asyncronously calls "_fetchTransitStops()" to get closest transit stop for + * each of the query point, this function will involve OpenTripPlanner calls to + * find stops within a search circle around the coordinate and then calls out + * to GraphHopper to find the actual walking distance and selects the closest + * stop. + * In the callback for the results of _fetchTransitStops() the actual call to + * OpenTripPlanner is made. + * The callback for "_fetchRoutes()" will in turn reformat the resulting + * itineraries obtained from OpenTripPlanner into our internal format specified + * in the TransitPlan module and calls "_recalculateItineraries()" which will + * traverse these and do yet another recursive asyncrous pass over these results + * to refine the results with actual walking routes obtained from GraphHopper, + * since the results from our OpenTripPlanner instance with only transit data + * will result in walking legs which use "as the crow flies" routes for walking. + * It will also clean up the results by pruning out pointless transit legs, such + * as taking transit very short distances when almost reaching the target. + * + * API docs for OpenTripPlanner can be found at: http://dev.opentripplanner.org/apidoc/1.0.0/ + */ + +/* minimum distance when an explicit walk route will be requested to suppliment + * the transit route + */ +const MIN_WALK_ROUTING_DISTANCE = 100; + +/* minimum distance of a transit leg, below which we would replace the leg with + * walking if the leg is the first or last + */ +const MIN_TRANSIT_LEG_DISTANCE = 300; + +/* maximum walking distance for a potential replacement of a beginning or ending + * transit leg */ +const MAX_WALK_OPTIMIZATION_DISTANCE = 1000; + +/* maximum distance difference for performing a replacement of a beginning or + * ending transit leg with a walking leg + */ +const MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE = 500; + +/* minimum acceptable time margin when recalculating walking legs in the middle + * of an itinerary + */ +const MIN_INTERMEDIATE_WALKING_SLACK = 60; + +/* maximum walking distance, filter out itineraries containing walking legs + * whith longer walking after refined by GraphHopper + */ +const MAX_WALKING_DISTANCE = 2000; + +// maximum radius to search for stops +const STOP_SEARCH_RADIUS = 2000; + +// maximum number of transit stops to consider as candidates for start/end points +const NUM_STOPS_TO_TRY = 5; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpenTripPlanner = class OpenTripPlanner { + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._baseUrl = params.baseUrl; + this._router = params.router || 'default'; + this._routerUrl = params.routerUrl || null; + this._onlyTransitData = params.onlyTransitData || false; + this._extendPrevious = false; + this._language = Utils.getLanguage(); + + if (!this._baseUrl && !this._routerUrl) + throw new Error('must specify either baseUrl or routerUrl as an argument'); + + if (this._baseUrl && this._routerUrl) + throw new Error('can not specify both baseUrl and routerUrl as arguments'); + } + + get plan() { + return this._plan; + } + + get enabled() { + return this._baseUrl !== null; + } + + fetchFirstResults() { + this._extendPrevious = false; + this._fetchRoute(); + } + + fetchMoreResults() { + this._extendPrevious = true; + this._fetchRoute(); + } + + _getRouterUrl() { + return this._routerUrl ? this._routerUrl : + this._baseUrl + '/routers/' + this._router; + } + + _getMode(routeType) { + switch (routeType) { + case TransitPlan.RouteType.TRAM: + return 'TRAM'; + case TransitPlan.RouteType.TRAIN: + return 'RAIL'; + case TransitPlan.RouteType.SUBWAY: + return 'SUBWAY'; + case TransitPlan.RouteType.BUS: + return 'BUS'; + case TransitPlan.RouteType.FERRY: + return 'FERRY'; + case HVT.AIR_SERVICE: + return 'AIRPLANE'; + default: + throw new Error('unhandled route type'); + } + } + + _getModes(options) { + let modes = options.transitTypes.map((transitType) => { + return this._getMode(transitType); + }); + + /* should always include walk when setting explicit modes, + * otherwise only routes ending close to a stop would work + */ + modes.push('WALK'); + + return modes.join(','); + } + + _selectBestStopRecursive(stops, index, stopIndex, callback) { + if (index < stops.length) { + let points = this._query.filledPoints; + let stop = stops[index]; + let stopPoint = + GraphHopperTransit.createQueryPointForCoord([stop.lat, stop.lon]); + + if (stops[0].dist < 100) { + /* if the stop is close enough to the intended point, just + * return the top most from the the original query */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } else if (stopIndex === 0) { + GraphHopperTransit.fetchWalkingRoute([points[0], stopPoint], + (route) => { + /* if we couldn't find an exact walking route, go with the + * "as the crow flies" distance */ + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else if (stopIndex === points.length - 1) { + GraphHopperTransit.fetchWalkingRoute([stopPoint, points.last()], + (route) => { + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else { + /* for intermediate stops just return the one geographically + * closest */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } + } else { + /* re-sort stops by distance and select the closest after refining + * distances */ + stops.sort(this._sortTransitStops); + Utils.debug('refined stops: '); + stops.forEach((stop) => Utils.debug(JSON.stringify(stop, '', 2))); + callback(stops[0]); + } + } + + /* stopIndex here is the index of stop (i.e. starting point, intermediate + * stop, final stop + */ + _selectBestStop(stops, stopIndex, callback) { + this._selectBestStopRecursive(stops, 0, stopIndex, callback); + } + + _sortTransitStops(s1, s2) { + return s1.dist > s2.dist; + } + + _fetchRoutesForStop(stop, callback) { + let query = new HTTP.Query(); + let uri = new Soup.URI(this._getRouterUrl() + '/index/stops/' + + stop.id + '/routes'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get routes for stop'); + this._reset(); + } else { + let routes = JSON.parse(message.response_body.data); + + Utils.debug('Routes for stop: ' + stop + ': ' + JSON.stringify(routes)); + callback(routes); + } + }); + } + + _routeMatchesSelectedModes(route) { + let desiredTransitTypes = this._query.transitOptions.transitTypes; + + for (let i = 0; i < desiredTransitTypes.length; i++) { + let type = desiredTransitTypes[i]; + + if (type === TransitPlan.RouteType.TRAM && route.mode === 'TRAM') + return true; + else if (type === TransitPlan.RouteType.SUBWAY && route.mode === 'SUBWAY') + return true; + else if (type === TransitPlan.RouteType.TRAIN && route.mode === 'RAIL') + return true; + else if (type === TransitPlan.RouteType.BUS && + (route.mode === 'BUS' || route.mode === 'TAXI')) + return true; + else if (type === TransitPlan.RouteType.FERRY && route.mode === 'FERRY') + return true; + } + + return false; + } + + _filterStopsRecursive(stops, index, filteredStops, callback) { + if (index < stops.length) { + let stop = stops[index]; + + this._fetchRoutesForStop(stop, (routes) => { + for (let i = 0; i < routes.length; i++) { + let route = routes[i]; + + if (this._routeMatchesSelectedModes(route)) { + filteredStops.push(stop); + break; + } + } + this._filterStopsRecursive(stops, index + 1, filteredStops, + callback); + }); + } else { + callback(filteredStops); + } + } + + _filterStops(stops, callback) { + this._filterStopsRecursive(stops, 0, [], callback); + } + + _fetchTransitStopsRecursive(index, result, callback) { + let points = this._query.filledPoints; + + if (index < points.length) { + let point = points[index]; + let params = { lat: point.place.location.latitude, + lon: point.place.location.longitude, + radius: STOP_SEARCH_RADIUS }; + let query = new HTTP.Query(params); + let uri = new Soup.URI(this._getRouterUrl() + + '/index/stops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get stop for search point ' + point); + this._reset(); + } else { + let stops = JSON.parse(message.response_body.data); + + if (stops.length === 0) { + Utils.debug('No suitable stop found from router'); + callback(null); + return; + } + + if (this._query.transitOptions.showAllTransitTypes) { + stops.sort(this._sortTransitStops); + stops = stops.splice(0, NUM_STOPS_TO_TRY); + + Utils.debug('stops: ' + JSON.stringify(stops, '', 2)); + this._selectBestStop(stops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, result, + callback); + }); + } else { + this._filterStops(stops, (filteredStops) => { + filteredStops.sort(this._sortTransitStops); + filteredStops = filteredStops.splice(0, NUM_STOPS_TO_TRY); + + if (filteredStops.length === 0) { + Utils.debug('No suitable stop found using selected transit modes'); + callback(null); + return; + } + + this._selectBestStop(filteredStops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, + result, callback); + }); + }); + } + } + }); + } else { + callback(result); + } + } + + _fetchTransitStops(callback) { + this._fetchTransitStopsRecursive(0, [], callback); + } + + // get a time suitably formatted for the OpenTripPlanner query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the OpenTripPlanner query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParamFromLocation(location) { + return location.latitude + ',' + location.longitude; + } + + _addCommonParams(params) { + params.numItineraries = 5; + params.showIntermediateStops = true; + params.locale = this._language; + + let time = this._query.time; + let date = this._query.date; + + if (this._extendPrevious) { + let itineraries = this.plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (time) { + params.time = time; + /* it seems OTP doesn't like just setting a time, so if the query + * doesn't specify a date, go with today's date + */ + if (!date) { + let dateTime = GLib.DateTime.new_now_local(); + + params.date = dateTime.format('%F'); + } + } + + if (date) + params.date = date; + } + + if (this._query.arriveBy) + params.arriveBy = true; + + let options = this._query.transitOptions; + if (options && !options.showAllTransitTypes) + params.mode = this._getModes(options); + } + + _createParamsWithLocations() { + let points = this._query.filledPoints; + let params = { + fromPlace: this._getPlaceParamFromLocation(points[0].place.location), + toPlace: this._getPlaceParamFromLocation(points[points.length - 1].place.location) }; + let intermediatePlaces = []; + + for (let i = 1; i < points.length - 1; i++) { + let location = points[i].place.location; + intermediatePlaces.push(this._getPlaceParamFromLocation(location)); + } + if (intermediatePlaces) + params.intermediatePlaces = intermediatePlaces; + + params.maxWalkDistance = 2500; + this._addCommonParams(params); + + return params; + } + + // create parameter map for the request, given query and options + _createParamsWithStops(stops) { + let params = { fromPlace: stops[0].id, + toPlace: stops.last().id }; + let intermediatePlaces = []; + + for (let i = 1; i < stops.length - 1; i++) { + intermediatePlaces.push(stops[i].id); + } + if (intermediatePlaces.length > 0) + params.intermediatePlaces = intermediatePlaces; + + /* set walking speed for transfers to a slightly lower value to + * compensate for running OTP with only transit data, giving straight- + * line walking paths + */ + params.walkSpeed = 1.0; + + this._addCommonParams(params); + + return params; + } + + _fetchPlan(url, callback) { + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get route plan from router ' + + this._router + ' ' + message.reason_phrase); + callback(null); + } else { + try { + let result = JSON.parse(message.response_body.data); + + callback(result); + } catch (e) { + Utils.debug('Error parsing result: ' + e); + callback(null); + } + } + }); + } + + _getPlanUrlFromParams(params) { + let query = new HTTP.Query(params); + + return this._getRouterUrl() + '/plan?' + query.toString(); + } + + _getPlanUrlWithStops(stops) { + return this._getPlanUrlFromParams(this._createParamsWithStops(stops)); + } + + _getPlanUrlWithLocations() { + return this._getPlanUrlFromParams(this._createParamsWithLocations()); + } + + _fetchRoutes(callback) { + if (this._onlyTransitData) { + this._fetchTransitStops((stops) => { + let points = this._query.filledPoints; + + if (!stops) { + callback(null); + return; + } + + /* if there's only a start and end stop (no intermediate stops) + * and those stops are identical, reject the routing, since this + * means there would be no point in transit, and OTP would give + * some bizarre option like boarding transit, go one stop and then + * transfer to go back the same route + */ + if (stops.length === 2 && stops[0].id === stops[1].id) { + callback(null); + return; + } + + this._fetchPlan(this._getPlanUrlWithStops(stops), callback); + }); + } else { + this._fetchPlan(this._getPlanUrlWithLocations(), callback); + } + } + + _reset() { + this._extendPrevious = false; + if (this._query.latest) + this._query.latest.place = null; + else + this.plan.reset(); + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionallity as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._extendPrevious = false; + this.plan.noMoreResults(); + } else { + this.plan.noRouteFound(); + } + } + + _fetchRoute() { + let points = this._query.filledPoints; + + this._fetchRoutes((route) => { + if (route) { + let itineraries = []; + let plan = route.plan; + + Utils.debug('route: ' + JSON.stringify(route, null, 2)); + + if (plan && plan.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(plan.itineraries)); + } else if (route.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(route.itineraries)); + } + + if (itineraries.length === 0) { + /* don't reset query points, unlike for turn-based + * routing, since options and timeing might influence + * results */ + this._noRouteFound(); + } else { + if (this._onlyTransitData) + this._recalculateItineraries(itineraries); + else + this._updateWithNewItineraries(itineraries); + } + } else { + this._noRouteFound(); + } + }); + } + + _isOnlyWalkingItinerary(itinerary) { + return itinerary.legs.length === 1 && !itinerary.legs[0].transit; + } + + _recalculateItineraries(itineraries) { + // filter out itineraries with only walking + let newItineraries = []; + + itineraries.forEach((itinerary) => { + if (!this._isOnlyWalkingItinerary(itinerary)) + newItineraries.push(itinerary); + }); + + /* TODO: should we always calculate a walking itinerary to put at the + * top if the total distance is below some threashhold? + */ + this._recalculateItinerariesRecursive(newItineraries, 0); + } + + _isItineraryRealistic(itinerary) { + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + + if (!leg.transit) { + /* if a walking leg exceeds the maximum desired walking + * distance, or for a leg "in-between" two transit legs, if + * there's insufficent switch time + */ + if (leg.distance > MAX_WALKING_DISTANCE) { + return false; + } else if (i >= 1 && i < itinerary.legs.length - 1) { + let previousLeg = itinerary.legs[i - 1]; + let nextLeg = itinerary.legs[i + 1]; + + let availableTime = + (nextLeg.departure - previousLeg.arrival) / 1000; + + if (availableTime < + leg.duration + MIN_INTERMEDIATE_WALKING_SLACK) + return false; + } + } + } + + return true; + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + _updateWithNewItineraries(itineraries) { + this.plan.updateWithNewItineraries(itineraries, this._query.arriveBy, + this._extendPrevious); + this._extendPrevious = false; + } + + _recalculateItinerariesRecursive(itineraries, index) { + if (index < itineraries.length) { + this._recalculateItinerary(itineraries[index], (itinerary) => { + itineraries[index] = itinerary; + this._recalculateItinerariesRecursive(itineraries, index + 1); + }); + } else { + /* filter out itineraries where there are intermediate walking legs + * that are too narrow time-wise, this is nessesary since running + * OTP with only transit data can result in some over-optimistic + * walking itinerary legs, since it will use "line-of-sight" + * distances. + * also filter out itineraries where recalculation process ended + * up with just walking + */ + let filteredItineraries = []; + + itineraries.forEach((itinerary) => { + if (this._isItineraryRealistic(itinerary) && + !this._isOnlyWalkingItinerary(itinerary)) + filteredItineraries.push(itinerary); + }); + + if (filteredItineraries.length > 0) { + filteredItineraries.forEach((itinerary) => itinerary.adjustTimings()); + this._updateWithNewItineraries(filteredItineraries); + } else { + this._noRouteFound(); + } + } + } + + _recalculateItinerary(itinerary, callback) { + let from = this._query.filledPoints[0]; + let to = this._query.filledPoints.last(); + + if (itinerary.legs.length === 1 && !itinerary.legs[0].transit) { + /* special case, if there's just one leg of an itinerary, and that leg + * leg is a non-transit (walking), recalculate the route in its entire + * using walking + */ + GraphHopperTransit.fetchWalkingRoute(this._query.filledPoints, + (route) => { + let leg = GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + to.place.name, + route); + let newItinerary = + new TransitPlan.Itinerary({departure: itinerary.departure, + duration: route.time / 1000, + legs: [leg]}); + callback(newItinerary); + }); + } else if (itinerary.legs.length === 1 && itinerary.legs[0].transit) { + // special case if there is extactly one transit leg + let leg = itinerary.legs[0]; + let startLeg = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLoc = startLeg.place.location; + let endLoc = endLeg.place.location; + let toLoc = to.place.location; + let startWalkDistance = fromLoc.get_distance_from(startLoc) * 1000; + let endWalkDistance = endLoc.get_distance_from(toLoc) * 1000; + + if (startWalkDistance >= MIN_WALK_ROUTING_DISTANCE && + endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + /* add an extra walking leg to both the beginning and end of the + * itinerary + */ + GraphHopperTransit.fetchWalkingRoute([from, startLeg], + (firstRoute) => { + let firstLeg = + GraphHopperTransit.createWalkingLeg(from, startLeg, + from.place.name, + leg.from, firstRoute); + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, + leg.to, + to.place.name, + lastRoute); + itinerary.legs.unshift(firstLeg); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + }); + } else if (endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + // add an extra walking leg to the end of the itinerary + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, leg.to, + to.place.name, + lastRoute); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + } else { + /* if only there's only a walking leg to be added to the start + * let the recursive routine dealing with multi-leg itineraries + * handle it + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } else { + /* replace walk legs with GraphHopper-generated paths (hence the + * callback nature of this. Filter out unrealistic itineraries (having + * walking segments not possible in reasonable time, due to our running + * of OTP with only transit data). + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } + + _recalculateItineraryRecursive(itinerary, index, callback) { + if (index < itinerary.legs.length) { + let leg = itinerary.legs[index]; + if (index === 0) { + let from = this._query.filledPoints[0]; + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceToEndLeg = + fromLoc.get_distance_from(endLegLoc) * 1000; + let distanceToStartLeg = + fromLoc.get_distance_from(startLegLoc) * 1000; + let nextLeg = itinerary.legs[index + 1]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceToEndLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceToEndLeg - distanceToStartLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the first leg of the intinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * starting coordinate from the input query, + * also replace a transit leg at the start with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the next step in the itinerary due to + * similar reasons + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toName = leg.to; + + /* if the next leg is a walking one, "fold" it into the one + * we create here */ + if (nextLeg && !nextLeg.transit) { + to = GraphHopperTransit.createQueryPointForCoord(nextLeg.toCoordinate); + toName = nextLeg.to; + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + toName, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated + * by GH in case the OTP starting point as far enough from + * the original starting point + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + leg.from, + route); + itinerary.legs.unshift(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else if (index === itinerary.legs.length - 1) { + let to = this._query.filledPoints.last(); + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toLoc = to.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceFromEndLeg = + toLoc.get_distance_from(endLegLoc) * 1000; + let distanceFromStartLeg = + toLoc.get_distance_from(startLegLoc) * 1000; + let previousLeg = itinerary.legs[itinerary.legs.length - 2]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceFromStartLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceFromStartLeg - distanceFromEndLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the final leg of the itinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * ending coordinate from the input query + * also replace a transit leg at the end with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the previous step in the itinerary + * due to similar reasons + */ + let finalTransitLeg; + let insertIndex; + if (leg.transit && previousLeg && !previousLeg.transit) { + /* if we optimize away the final transit leg, and the + * previous leg is a walking one, "fold" both into a + * single walking leg */ + finalTransitLeg = previousLeg; + insertIndex = index -1; + itinerary.legs.pop(); + } else { + finalTransitLeg = leg; + insertIndex = index; + } + let from = + GraphHopperTransit.createQueryPointForCoord(finalTransitLeg.fromCoordinate); + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + finalTransitLeg.from, + to.place.name, route); + itinerary.legs[insertIndex] = newLeg; + this._recalculateItineraryRecursive(itinerary, + insertIndex + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated by GH in + * case the OTP end point as far enough from the original + * end point + */ + let from = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + leg.to, to.place.name, route); + itinerary.legs.push(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + /* if an intermediate leg is a walking one, and it's distance is + * above the threashhold distance, calculate an exact route + */ + if (!leg.transit && leg.distance >= MIN_WALK_ROUTING_DISTANCE) { + let from = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + + /* if the next leg is the final one of the itinerary, + * and it's shorter than the "optimize away" distance, + * create a walking leg all the way to the final destination + */ + let nextLeg = itinerary.legs[index + 1]; + if (index === itinerary.legs.length - 2 && + nextLeg.distance <= MIN_TRANSIT_LEG_DISTANCE) { + to = this._query.filledPoints.last(); + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, leg.from, + leg.to, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, + index + 1, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + callback(itinerary); + } + } + + _createItineraries(itineraries) { + return itineraries.map((itinerary) => this._createItinerary(itinerary)); + } + + _createItinerary(itinerary) { + let legs = this._createLegs(itinerary.legs); + return new TransitPlan.Itinerary({ duration: itinerary.duration, + transfers: itinerary.transfers, + departure: itinerary.startTime, + arrival: itinerary.endTime, + legs: legs}); + } + + _createLegs(legs) { + return legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + } + + /* check if a string is a valid hex RGB string */ + _isValidHexColor(string) { + if (string && string.length === 6) { + let regex = /^[A-Fa-f0-9]/; + + return string.match(regex); + } + + return false; + } + + _createLeg(leg, index, legs) { + let polyline = EPAF.decode(leg.legGeometry.points); + let color = leg.routeColor && this._isValidHexColor(leg.routeColor) ? + leg.routeColor : null; + let textColor = leg.routeTextColor && this._isValidHexColor(leg.routeTextColor) ? + leg.routeTextColor : null; + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !leg.transitLeg ? this._query.filledPoints[0].place.name : + leg.from.name; + let to = + last && !leg.transitLeg ? this._query.filledPoints.last().place.name : + leg.to.name; + + let result = new TransitPlan.Leg({ departure: leg.from.departure, + arrival: leg.to.arrival, + from: from, + to: to, + headsign: leg.headsign, + fromCoordinate: [leg.from.lat, + leg.from.lon], + toCoordinate: [leg.to.lat, + leg.to.lon], + route: leg.route, + routeType: leg.routeType, + polyline: polyline, + isTransit: leg.transitLeg, + distance: leg.distance, + duration: leg.duration, + agencyName: leg.agencyName, + agencyUrl: leg.agencyUrl, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + color: color, + textColor: textColor, + tripShortName: leg.tripShortName }); + + if (leg.transitLeg && leg.intermediateStops) + result.intermediateStops = this._createIntermediateStops(leg); + else if (!this._onlyTransitData) + result.walkingInstructions = this._createTurnpoints(leg, polyline); + + return result; + } + + _createIntermediateStops(leg) { + let stops = leg.intermediateStops; + let intermediateStops = + stops.map((stop) => this._createIntermediateStop(stop, leg)); + + /* instroduce an extra stop at the end (in additional to the + * intermediate stops we get from OTP + */ + intermediateStops.push(new TransitPlan.Stop({ name: leg.to.name, + arrival: leg.to.arrival, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [leg.to.lat, + leg.to.lon] })); + return intermediateStops; + } + + _createIntermediateStop(stop, leg) { + return new TransitPlan.Stop({ name: stop.name, + arrival: stop.arrival, + departure: stop.departure, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [stop.lat, stop.lon] }); + } + + /** + * Create a turnpoints list on the same format we use with GraphHopper + * from OpenTripPlanner walking steps + */ + _createTurnpoints(leg, polyline) { + if (leg.steps) { + let steps = leg.steps; + let startPoint = new Route.TurnPoint({ + coordinate: polyline[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let turnpoints = [startPoint]; + steps.forEach((step) => { + turnpoints.push(this._createTurnpoint(step)); + }); + + let endPoint = new Route.TurnPoint({ + coordinate: polyline.last(), + type: Route.TurnPoint.END, + distance: 0, + instruction:_("Arrive") + }); + + turnpoints.push(endPoint); + + return turnpoints; + } else { + return null; + } + } + + _createTurnpoint(step) { + let coordinate = new Champlain.Coordinate({ latitude: step.lat, + longitude: step.lon }); + let turnpoint = new Route.TurnPoint({ + coordinate: coordinate, + type: this._getTurnpointType(step), + distance: step.distance, + instruction: this._getTurnpointInstruction(step) + }); + + return turnpoint; + } + + _getTurnpointType(step) { + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + return Route.TurnPointType.CONTINUE; + case 'LEFT': + return Route.TurnPointType.LEFT; + case 'SLIGHTLY_LEFT': + return Route.TurnPointType.SLIGHT_LEFT; + case 'HARD_LEFT': + return Route.TurnPointType.SHARP_LEFT; + case 'RIGHT': + return Route.TurnPointType.RIGHT; + case 'SLIGHTLY_RIGHT': + return Route.TurnPointType.SLIGHT_RIGHT; + case 'HARD_RIGHT': + return Route.TurnPointType.SHARP_RIGHT; + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': + return Route.TurnPointType.ROUNDABOUT; + case 'ELEVATOR': + return Route.TurnPointType.ELEVATOR; + case 'UTURN_LEFT': + return Route.TurnPointType.UTURN_LEFT; + case 'UTURN_RIGHT': + return Route.TurnPointType.UTURN_RIGHT; + default: + return null; + } + } + + _getTurnpointInstruction(step) { + let street = !step.bogusName ? step.streetName : null; + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + if (street) + return _("Continue on %s").format(street); + else + return _("Continue"); + case 'LEFT': + if (street) + return _("Turn left on %s").format(street); + else + return _("Turn left"); + case 'SLIGHTLY_LEFT': + if (street) + return _("Turn slightly left on %s").format(street); + else + return _("Turn slightly left"); + case 'HARD_LEFT': + if (street) + return _("Turn sharp left on %s").format(street); + else + return _("Turn sharp left"); + case 'RIGHT': + if (street) + return _("Turn right on %s").format(street); + else + return _("Turn right"); + case 'SLIGHTLY_RIGHT': + if (street) + return _("Turn slightly right on %s").format(street); + else + return _("Turn slightly right"); + case 'HARD_RIGHT': + if (street) + return _("Turn sharp right on %s").format(street); + else + return _("Turn sharp right"); + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': { + let exit = step.exit; + + if (exit) + return _("In the roundabout, take exit %s").format(exit); + else if (street) + return _("In the roundabout, take exit to %s").format(street); + else + return _("Take the roundabout"); + } + case 'ELEVATOR': { + if (street) + return _("Take the elevator and get off at %s").format(street); + else + return _("Take the elevator"); + } + case 'UTURN_LEFT': + if (street) + return _("Make a left u-turn onto %s").format(street); + else + return _("Make a left u-turn"); + case 'UTURN_RIGHT': + if (street) + return _("Make a right u-turn onto %s").format(street); + else + return _("Make a right u-turn"); + default: + return ''; + } + } +}; diff --git a/src/transitplugins/opendataCH.js b/src/transitplugins/opendataCH.js new file mode 100644 index 00000000..62fb972f --- /dev/null +++ b/src/transitplugins/opendataCH.js @@ -0,0 +1,544 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swiss national + * opendata.ch transit journey planning API. + * + * API docs for opendata.ch journey planning can be found at: + * https://transport.opendata.ch/docs.html + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HVT = imports.hvt; +const HTTP = imports.http; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://transport.opendata.ch'; +const API_VERSION = 'v1'; + +const Transportations = { + TRAIN: 'train', + TRAM: 'tram', + SHIP: 'ship', + BUS: 'bus', + CABLEWAY: 'cableway' +}; + +/** + * These are not documented in the API documentation, so had to + * reverse-engineer by trial-and-error. + */ +const Category = { + // bus + B: 'B', + NFB: 'NFB', + NFO: 'NFO', + BUS: 'BUS', + + // tram + NFT: 'NFT', + TRAM: 'TRAM', + T: 'T', + + // metro + M: 'M', + + // urban rail + R: 'R', + S: 'S', + + // regional rail + RE: 'RE', + + // interregional rail + IR: 'IR', + + // intercity rail + IC: 'IC', + ICE: 'ICE', + + // night trains + N: 'N', + SN: 'SN', + + // funicular + FUN: 'FUN', + + // water transport + BAT: 'BAT' +}; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpendataCH = class OpendataCH { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaLocations = []; + + if (filledPoints.length > 7) { + Utils.debug('This plugin supports at most five via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else { + if (filledPoints.length > 2) + this._fetchNearbyLocations(filledPoints.slice(1, -1)); + else + this._fetchResults(); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + // if there's only a walking-only itinerary, don't try to fetch more + if (this._plan.itineraries.length === 1 && + this._plan.itineraries[0].legs.length === 1 && + !this._plan.itineraries[0].legs[0].transit) { + this._plan.noMoreResults(); + } else { + this._fetchResults(); + } + } + + _fetchNearbyLocations(points) { + this._fetchNearbyLocationsRecursive(points, 0); + } + + _fetchNearbyLocationsRecursive(points, index) { + if (index === points.length) { + this._fetchResults(); + } else { + let location = points[index].place.location; + let query = new HTTP.Query({ x: location.latitude, + y: location.longitude }); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/locations?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get location: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + + Utils.debug('locations: ' + JSON.stringify(result, null, 2)); + + if (result.stations && result.stations.length > 0) { + let station = this._getBestStation(result.stations); + + if (station) { + this._viaLocations.push(station); + this._fetchNearbyLocationsRecursive(points, index + 1); + } else { + Utils.debug('No suitable via location found'); + this._plan.noRouteFound(); + } + } else { + Utils.debug('No via location found'); + this._plan.noRouteFound(); + } + } + }); + } + } + + _getBestStation(stations) { + let name = null; + + for (let i = 0; i < stations.length; i++) { + if (stations[i].icon) + name = stations[i].name; + } + + return name; + } + + _fetchResults() { + let query = this._getQuery(); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/connections?' + + query.toString(true)); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + Utils.debug('uri: ' + uri.to_string(true)); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + + if (result.connections && result.connections.length > 0) { + let itineraries = this._createItineraries(result.connections); + + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } else { + this._plan.noRouteFound(); + } + } + }); + } + + _createItineraries(connections) { + return connections.map((connection) => this._createItinerary(connection)); + } + + _createItinerary(connection) { + let legs = this._createLegs(connection.sections); + let duration = + connection.to.arrivalTimestamp - connection.from.departureTimestamp; + let from = connection.from; + let to = connection.to; + let [startTime,] = this._parseTime(from.departure); + let [endTime,] = this._parseTime(to.arrival); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time string into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(timeString) { + let dateTime = GLib.DateTime.new_from_iso8601(timeString, null); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + _createLegs(sections) { + let result = sections.map((section, index, sections) => + this._createLeg(section, index, sections)); + + return result; + } + + _createLeg(section, index, sections) { + let isTransit = section.journey; + + let departure = section.departure; + let arrival = section.arrival; + let journey = section.journey; + + if (!departure) + throw new Error('Missing departure element'); + if (!arrival) + throw new Error('Missing arrival element'); + + let first = index === 0; + let last = index === sections.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !journey ? this._query.filledPoints[0].place.name : + departure.station.name; + let to = + last && !journey ? this._query.filledPoints.last().place.name : + arrival.station.nam; + let [departureTime, tzOffset] = this._parseTime(departure.departure); + let [arrivalTime,] = this._parseTime(arrival.arrival); + let route = journey ? journey.number : null; + let routeType = + journey ? this._getHVTCodeFromCategory(journey.category) : null; + let agencyName = journey ? journey.operator : null; + let polyline = this._createPolylineForSection(section, index, sections); + let duration = arrival.arrivalTimestamp - departure.departureTimestamp; + let headsign = journey ? journey.to : null; + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + let result = new TransitPlan.Leg({ departure: departureTime, + arrival: arrivalTime, + from: from, + to: to, + headsign: headsign, + fromCoordinate: [departureX, + departureY], + toCoordinate: [arrivalX, + arrivalY], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + duration: duration, + agencyName: agencyName, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (journey) + result.intermediateStops = this._createIntermediateStops(journey); + + return result; + } + + _getHVTCodeFromCategory(category) { + switch (category) { + case Category.B: + case Category.BUS: + case Category.NFB: + case Category.NFO: + return HVT.BUS_SERVICE; + case Category.TRAM: + case Category.NFT: + case Category.T: + return HVT.TRAM_SERVICE; + case Category.M: + return HVT.METRO_SERVICE; + case Category.R: + case Category.S: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case Category.RE: + return HVT.REGIONAL_RAIL_SERVICE; + case Category.IR: + return HVT.INTER_REGIONAL_RAIL_SERVICE; + case Category.IC: + case Category.ICE: + return HVT.LONG_DISTANCE_TRAINS; + case Category.N: + case Category.SN: + return HVT.SLEEPER_RAIL_SERVICE; + case Category.FUN: + return HVT.FUNICULAR_SERVICE; + case Category.BAT: + return HVT.WATER_TRANSPORT_SERVICE; + default: + return null; + } + } + + _getCoordsForSection(section, index, sections) { + let departureX = section.departure.location.coordinate.x; + let departureY = section.departure.location.coordinate.y; + let arrivalX = section.arrival.location.coordinate.x; + let arrivalY = section.arrival.location.coordinate.y; + + if (sections.length === 1) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } else if (index === 0) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + } else if (index === sections.length - 1) { + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } + + return [departureX, departureY, arrivalX, arrivalY]; + } + + _createPolylineForSection(section, index, sections) { + let polyline; + + if (section.journey) { + polyline = []; + + section.journey.passList.forEach((pass) => { + let coordinate = pass.location.coordinate; + polyline.push(new Champlain.Coordinate({ latitude: coordinate.x, + longitude: coordinate.y })); + }); + } else { + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + polyline = + [new Champlain.Coordinate({ latitude: departureX, + longitude: departureY }), + new Champlain.Coordinate({ latitude: arrivalX, + longitude: arrivalY })]; + } + + return polyline; + } + + _createIntermediateStops(journey) { + let result = []; + + journey.passList.forEach((pass, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(pass)); + }); + + return result; + } + + _createIntermediateStop(pass) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (pass.departure) + [departure, departureTzOffset] = this._parseTime(pass.departure) + if (pass.arrival) + [arrival, arrivalTzOffset] = this._parseTime(pass.arrival); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: pass.station.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [pass.location.coordinate.x, + pass.location.coordinate.y] }); + } + + // get a time suitably formatted for the the query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParam(point) { + let location = point.place.location; + + return location.latitude + ',' + location.longitude; + } + + _getQuery(vias) { + let points = this._query.filledPoints; + let transitOptions = this._query.transitOptions; + let params = { from: this._getPlaceParam(points[0]), + to: this._getPlaceParam(points.last()) }; + + if (!transitOptions.showAllTransitTypes) + params.transportations = this._getTransportations(transitOptions); + + if (this._query.arriveBy) + params.isArrivalTime = 1; + + /* the "page" parameter of the API seems broken for "arrive by" + * searches, so instead search by updated time + */ + if (this._extendPrevious) { + let itineraries = this._plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + let query = new HTTP.Query(params); + + if (this._viaLocations.length > 0) { + this._viaLocations.forEach((p) => { query.add('via', p); }); + } + + return query; + } + + _getTransportations(transitOptions) { + let transportations = []; + + this._query.transitOptions.transitTypes.forEach((type) => { + let transportation = this._transportationForTransitType(type); + + if (transportation) + transportations.push(transportation); + }); + + return transportations; + } + + _transportationForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Transportations.BUS; + case TransitPlan.RouteType.TRAM: + return Transportations.TRAM; + case TransitPlan.RouteType.TRAIN: + return Transportations.TRAIN; + case TransitPlan.RouteType.FERRY: + return Transportations.SHIP; + default: + return null; + } + } +} diff --git a/src/transitplugins/resrobot.js b/src/transitplugins/resrobot.js new file mode 100644 index 00000000..39c1cb3b --- /dev/null +++ b/src/transitplugins/resrobot.js @@ -0,0 +1,631 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swedish national + * Resrobot transit journey planning API. + * + * API docs for Resrobot can be found at: + * https://www.trafiklab.se/api/resrobot-reseplanerare/dokumentation/sokresa + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const TransitTweaks = imports.transitTweaks; +const Utils = imports.utils; + +const BASE_URL = 'https://api.resrobot.se'; +const API_VERSION = 'v2'; + +// Timezone for timestamps returned by this provider +const NATIVE_TIMEZONE = 'Europe/Stockholm'; + +const ISO_8601_DURATION_REGEXP = new RegExp(/P((\d+)D)?T((\d+)H)?((\d+)M)?/); + +const Products = { + EXPRESS_TRAIN: 2, + REGIONAL_TRAIN: 4, + EXPRESS_BUS: 8, + LOCAL_TRAIN: 16, + SUBWAY: 32, + TRAM: 64, + BUS: 128, + FERRY: 256, + TAXI: 512 +}; + +const LegType = { + WALK: 'WALK', + TRANSIT: 'JNY', + TRANSFER: 'TRSF' +}; + +const CatCode = { + EXPRESS_TRAIN: 1, + REGIONAL_TRAIN: 2, + EXPRESS_BUS: 3, + LOCAL_TRAIN: 4, + SUBWAY: 5, + TRAM: 6, + BUS: 7, + FERRY: 8, + TAXI: 9 +}; + +const MAX_NUM_NEARBY_STOPS = 5; +const NEARBY_STOPS_SEARCH_RADIUS = 500; + +// ignore walking legs at the beginning/end when below this distance +const DISTANCE_THREASHOLD_TO_IGNORE = 50; + +// search radius to search for walk-only journeys +const WALK_SEARCH_RADIUS = 2000; + +// maximum distance for walk-only journey +const MAX_WALK_ONLY_DISTANCE = 2500; + +var Resrobot = class Resrobot { + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._key = params.key; + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + this._tweaks = new TransitTweaks.TransitTweaks({ name: 'resrobot' }); + + if (!this._key) + throw new Error('missing key'); + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaId = null; + + if (filledPoints.length > 3) { + Utils.debug('This plugin supports at most one via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (filledPoints.length === 2) { + this._fetchResults(); + } else { + let lat = filledPoints[1].place.location.latitude; + let lon = filledPoints[1].place.location.longitude; + + this._fetchNearbyStops(lat, lon, MAX_NUM_NEARBY_STOPS, + NEARBY_STOPS_SEARCH_RADIUS, + () => this._fetchResults()); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + + if ((!this._scrF && !this._query.arriveBy) || + (!this._scrB && this._query.arriveBy)) + this._noRouteFound(); + else + this._fetchResults(); + } + + _fetchNearbyStops(lat, lon, num, radius, callback) { + let query = new HTTP.Query(this._getNearbyStopsQueryParams(lat, lon, + num, radius)); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + + '/location.nearbystops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get nearby stops: ' + message.status_code); + this._noRouteFound(); + } else { + try { + let result = JSON.parse(message.response_body.data); + let stopLocations = result.StopLocation; + + Utils.debug('nearby stops: ' + JSON.stringify(result, null, 2)); + + if (stopLocations && stopLocations.length > 0) { + let stopLocation = stopLocations[0]; + + this._viaId = stopLocation.id; + callback(); + } else { + Utils.debug('No nearby stops found'); + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + _fetchResults() { + let query = new HTTP.Query(this._getQueryParams()); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/trip?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + /* No routes found. If this is the first search + * (not "load more") and the distance is short + * enough, generate a walk-only itinerary + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && + distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, + end, + route); + this._plan.updateWithNewItineraries([walkingItinerary]); + } else { + this._noRouteFound(); + } + }); + } else { + this._noRouteFound(); + } + } else { + try { + let result = JSON.parse(message.response_body.data); + + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + if (result.Trip) { + let itineraries = this._createItineraries(result.Trip); + + // store the back and forward references from the result + this._scrB = result.scrB; + this._scrF = result.scrF; + this._tweaks.applyTweaks(itineraries, () => { + this._processItineraries(itineraries) + }); + } else { + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + /* get total "as the crow flies" start, and end points, and distance for + * the query + */ + _getAsTheCrowFliesPointsAndDistanceForQuery() { + let start = this._query.filledPoints[0]; + let end = this._query.filledPoints.last(); + let startLoc = start.place.location; + let endLoc = end.place.location; + + return [start, end, endLoc.get_distance_from(startLoc) * 1000]; + } + + _processItineraries(itineraries) { + /* if this is the first request, and the distance is short enough, + * add an additional walking-only itinerary at the beginning + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, end, route); + + itineraries.unshift(walkingItinerary); + } + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + }); + } else { + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } + } + + _createWalkingOnlyItinerary(start, end, route) { + let walkingLeg = GraphHopperTransit.createWalkingLeg(start, end, + start.place.name, + end.place.name, + route); + let duration = route.duration; + /* if the query has no date, just use a fake, since only the time + * is relevant for displaying in this case + */ + let date = this._query.date || '2019-01-01'; + let time = this._query.time + ':00'; + + let [timestamp, tzOffset] = + this._query.time ? this._parseTime(time, date) : + this._getTimestampAndTzOffsetNow(); + + if (this._query.arriveBy) { + walkingLeg.arrival = timestamp; + walkingLeg.departure = timestamp - route.time; + } else { + walkingLeg.departure = timestamp; + walkingLeg.arrival = timestamp + route.time; + } + + walkingLeg.agencyTimezoneOffset = tzOffset; + + let walkingItinerary = + new TransitPlan.Itinerary({ legs: [walkingLeg]} ); + + walkingItinerary.adjustTimings(); + + return walkingItinerary; + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionallity as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._plan.noMoreResults(); + } else { + this._plan.noRouteFound(); + } + } + + _createItineraries(trips) { + return trips.map((trip) => this._createItinerary(trip)); + } + + _createItinerary(trip) { + let legs = this._createLegs(trip.LegList.Leg); + let duration = this._parseDuration(trip.duration); + let origin = trip.LegList.Leg[0].Origin; + let destination = trip.LegList.Leg.last().Destination; + let [startTime,] = this._parseTime(origin.time, origin.date); + let [endTime,] = this._parseTime(destination.time, destination.date); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time and date string into a timestamp into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(time, date) { + let timeText = '%sT%s'.format(date, time); + let dateTime = GLib.DateTime.new_from_iso8601(timeText, this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Get absolute timestamp for "now" in ms and timezone offset in the + * native timezone of the provider's native timezone @ "now" + */ + _getTimestampAndTzOffsetNow() { + let dateTime = GLib.DateTime.new_now(this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Parse a subset of ISO 8601 duration expressions. + * Handle hour and minute parts + */ + _parseDuration(duration) { + let match = duration.match(ISO_8601_DURATION_REGEXP); + + if (match) { + let [,,d,,h,,min] = match; + + return (d || 0) * 86400 + (h || 0) * 3600 + (min || 0) * 60; + } else { + Utils.debug('Unknown duration: ' + duration); + + return -1; + } + } + + _createLegs(legs) { + let result = legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + + if (this._canLegBeIgnored(result[0])) + result.shift(); + + if (this._canLegBeIgnored(result.last())) + result.splice(-1); + + return result; + } + + /* determines if a leg can ignored at the start or end, to catch the + * case when the user probably meant to search for a trip from a transit + * stop anyway + */ + _canLegBeIgnored(leg) { + if (!leg.isTransit) { + /* check that the distance is below the threashold and also that + * the duration is below 1 min, since the API in some occasions + * apparently gives distance 0, even though a walking leg has + * longer duration, and spans a distance in coordinates. + */ + return leg.distance <= DISTANCE_THREASHOLD_TO_IGNORE && + leg.duration <= 60; + } else { + return false; + } + } + + _createLeg(leg, index, legs) { + let isTransit; + + if (leg.type === LegType.TRANSIT) + isTransit = true; + else if (leg.type === LegType.WALK || leg.type === LegType.TRANSFER) + isTransit = false; + else + throw new Error('Unknown leg type: ' + leg.type); + + let origin = leg.Origin; + let destination = leg.Destination; + let product = leg.Product; + + if (!origin) + throw new Error('Missing Origin element'); + if (!destination) + throw new Error('Missing Destination element'); + if (!product && isTransit) + throw new Error('Missing Product element for transit leg'); + + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !isTransit ? this._query.filledPoints[0].place.name : + origin.name; + let to = + last && !isTransit ? this._query.filledPoints.last().place.name : + destination.name; + let [departure, tzOffset] = this._parseTime(origin.time, origin.date); + let [arrival,] = this._parseTime(destination.time, destination.date); + let route = isTransit ? product.num : null; + let routeType = + isTransit ? this._getHVTCodeFromCatCode(product.catCode) : null; + let agencyName = isTransit ? product.operator : null; + let agencyUrl = isTransit ? product.operatorUrl : null; + let polyline = this._createPolylineForLeg(leg); + let duration = leg.duration ? this._parseDuration(leg.duration) : null; + + let result = new TransitPlan.Leg({ departure: departure, + arrival: arrival, + from: from, + to: to, + headsign: leg.direction, + fromCoordinate: [origin.lat, + origin.lon], + toCoordinate: [destination.lat, + destination.lon], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + distance: leg.dist, + duration: duration, + agencyName: agencyName, + agencyUrl: agencyUrl, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (isTransit) + result.intermediateStops = this._createIntermediateStops(leg); + + return result; + } + + _createPolylineForLeg(leg) { + let polyline; + + if (leg.Stops && leg.Stops.Stop) { + polyline = []; + + leg.Stops.Stop.forEach((stop) => { + polyline.push(new Champlain.Coordinate({ latitude: stop.lat, + longitude: stop.lon })); + }); + } else { + polyline = + [new Champlain.Coordinate({ latitude: leg.Origin.lat, + longitude: leg.Origin.lon }), + new Champlain.Coordinate({ latitude: leg.Destination.lat, + longitude: leg.Destination.lon })]; + } + + return polyline; + } + + _createIntermediateStops(leg) { + let result = []; + + if (!leg.Stops && !leg.Stops.Stop) + throw new Error('Missing Stops element'); + + leg.Stops.Stop.forEach((stop, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(stop)); + }); + + return result; + } + + _createIntermediateStop(stop) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (stop.depTime && stop.depDate) + [departure, departureTzOffset] = this._parseTime(stop.depTime, stop.depDate); + if (stop.arrTime && stop.arrDate) + [arrival, arrivalTzOffset] = this._parseTime(stop.arrTime, stop.arrDate); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: stop.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [stop.lat, stop.lon] }); + } + + _getHVTCodeFromCatCode(code) { + switch (parseInt(code)) { + case CatCode.EXPRESS_TRAIN: + return HVT.HIGH_SPEED_RAIL_SERVICE; + case CatCode.REGIONAL_TRAIN: + return HVT.REGIONAL_RAIL_SERVICE; + case CatCode.EXPRESS_BUS: + return HVT.EXPRESS_BUS_SERVICE; + case CatCode.LOCAL_TRAIN: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case CatCode.SUBWAY: + return HVT.METRO_SERVICE; + case CatCode.TRAM: + return HVT.TRAM_SERVICE; + case CatCode.BUS: + return HVT.BUS_SERVICE; + case CatCode.FERRY: + return HVT.WATER_TRANSPORT_SERVICE; + case CatCode.TAXI: + return HVT.COMMUNAL_TAXI_SERVICE; + default: + Utils.debug('Unknown catCode: ' + code); + return HVT.MISCELLANEOUS_SERVICE; + } + } + + _getQueryParams() { + let points = this._query.filledPoints; + let originLocation = points[0].place.location; + let destLocation = points.last().place.location; + let transitOptions = this._query.transitOptions; + let params = { key: this._key, + originCoordLat: originLocation.latitude, + originCoordLong: originLocation.longitude, + destCoordLat: destLocation.latitude, + destCoordLong: destLocation.longitude, + format: 'json' }; + + if (!transitOptions.showAllTransitTypes) + params.products = this._getAllowedProductsForQuery(); + + if (this._viaId) + params.viaId = this._viaId; + + if (this._extendPrevious) { + params.context = this._query.arriveBy ? this._scrB : this._scrF; + } else { + if (this._query.arriveBy) + params.searchForArrival = 1; + + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + return params; + } + + _getNearbyStopsQueryParams(lat, lon, num, radius) { + let params = { key: this._key, + originCoordLat: lat, + originCoordLong: lon, + maxNo: num, + r: radius, + format: 'json' }; + + return params; + } + + _getAllowedProductsForQuery() { + let products = 0; + + this._query.transitOptions.transitTypes.forEach((type) => { + products += this._productCodeForTransitType(type); + }); + + return products; + } + + _productCodeForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Products.BUS + Products.EXPRESS_BUS + Products.TAXI; + case TransitPlan.RouteType.TRAM: + return Products.TRAM; + case TransitPlan.RouteType.TRAIN: + return Products.EXPRESS_TRAIN + Products.LOCAL_TRAIN; + case TransitPlan.RouteType.SUBWAY: + return Products.SUBWAY; + case TransitPlan.RouteType.FERRY: + return Products.FERRY; + default: + return 0; + } + } +} diff --git a/src/translations.js b/src/translations.js new file mode 100644 index 00000000..73c0c7ce --- /dev/null +++ b/src/translations.js @@ -0,0 +1,395 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const C_ = imports.gettext.dgettext; + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + + +/* Translate an opening time specification tag value. + * from OSM to a human-readable string (marked for translation). + * + * Some limitations are imposed to keep the translations manageable: + * A maximum of three components (separated by ; in the tag) are considered. + * For each component a maximum of three day intervals are considered. + * Each day interval can have one or two time intervals specified. + * For each of these limitations, the input string is passed on unmodified + * if the format is outside the supported cases, so no data should be dropped. + * Currently only specifying weekdays and public and school holidays are + * supported. + * Other variants, such as month-specific opening hours and other interval + * variants are not currently supported. In these cases, the data is + * returned as-is. + * + * The definition for the opening_hours tag can be found at: + * http://wiki.openstreetmap.org/wiki/Key:opening_hours + */ +function translateOpeningHours(string) { + if (string === '24/7' || string === 'Mo-Su 00:00-24:00' || + string === '00:00-24:00') + return _("around the clock"); + else if (string === 'sunrise-sunset') + return _("from sunrise to sunset"); + else { + /* split "components" */ + let splitParts = string.split(';'); + let part1, part2, part3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursPart(splitParts[0].trim()); + case 2: + part1 = _translateOpeningHoursPart(splitParts[0].trim()); + part2 = _translateOpeningHoursPart(splitParts[1].trim()); + + /* Translators: + * This is a format string with two separate time ranges + * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" + * The space between the format place holders could be + * substituted with the appropriate separator. + */ + return C_("time range list", "%s %s").format(part1, part2); + case 3: + part1 = _translateOpeningHoursPart(splitParts[0].trim()); + part2 = _translateOpeningHoursPart(splitParts[1].trim()); + part3 = _translateOpeningHoursPart(splitParts[2].trim()); + + /* Translators: + * This is a format string with three separate time ranges + * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" + * The space between the format place holders could be + * substituted with the appropriate separator. + */ + return C_("time range list", "%s %s %s").format(part1, + part2, + part3); + default: + return string; + } + } + +} + +/* + * Parse a time range component, comprised of day and time ranges, such as: + * Mo-Fr 10:00-19:00 + * Mo-We,Fr 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursPart(string) { + let splitString = string.split(' '); + + if (splitString.length == 2) { + let dayIntervalSpec = + _translateOpeningHoursDayIntervalList(splitString[0].trim()); + let timeIntervalSpec = + _translateOpeningHoursTimeIntervalList(splitString[1].trim()); + + /* Translators: + * This is a format string consisting of a part specifying the days for + * which the specified time is applied and the time interval + * specification as the second argument. + * The space between the format place holders could be substituted with + * the appropriate separator or phrase and the ordering of the arguments + * can be rearranged with the %n#s syntax. */ + return C_("time range component", "%s %s"). + format(dayIntervalSpec, timeIntervalSpec); + } else { + // for an unknown format, just output the raw value + return string; + } +} + +/* + * Parse a day interval, such as: + * Mo-Fr + * Mo,We,Th-Fr + */ +function _translateOpeningHoursDayIntervalList(string) { + let splitParts = string.split(','); + let interval1, interval2, interval3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursDayInterval(splitParts[0].trim()); + case 2: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + /* Translators: + * This represents a format string consisting of two day interval + * specifications. + * For example: + * Mo-Fr,Sa + * where the "Mo-Fr" and "Sa" parts are replaced by the %s + * place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s").format(interval1, interval2); + case 3: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + interval3 = _translateOpeningHoursDayInterval(splitParts[2].trim()); + /* Translators: + * This represents a format string consisting of three day interval + * specifications. + * For example: + * Mo-We,Fr,Su + * where the "Mo-We", "Fr", and "Su" parts are replaced by the + * %s place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s,%s"). + format(interval1, interval2, interval3); + default: + // for other formats, just return the raw string + return string; + } +} + +/* + * Parse a day interval consisting of either a single day + * or a range, such as: + * Mo-Fr + * Tu + */ +function _translateOpeningHoursDayInterval(string) { + let splitString = string.split('-'); + + // special case: Mo-Su treated as "every day" + if (string === 'Mo-Su') + return _("every day"); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursDay(splitString[0].trim()); + case 2: + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This represents a range of days with a starting and ending day. + */ + return C_("day range", "%s-%s").format( + _translateOpeningHoursDay(from), + _translateOpeningHoursDay(to)); + default: + // unknown format, just return the input + return string; + } +} + +function _translateOpeningHoursDay(string) { + if (string === 'PH') + return _("public holidays"); + if (string === 'SH') + return _("school holidays"); + + // create a dummy DateTime instance which is guaranteed to be a Monday + let time = GLib.DateTime.new_local(1, 1, 1, 0, 0, 0.0); + let days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + for (let i = 0; i < days.length; i++) { + if (string === days[i]) { + time = time.add_days(i); + return time.format('%a'); + } + } + + // unknown value, just return the input + return string; +} + +/* + * Parse a time interval list, such as: + * 10:00-20:00 + * 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursTimeIntervalList(string) { + let splitString = string.split(','); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursTimeInterval(splitString[0].trim()); + case 2: + let interval1 = splitString[0].trim(); + let interval2 = splitString[1].trim(); + + /* Translators: + * This is a list with two time intervals, such as: + * 09:00-12:00, 13:00-14:00 + * The intervals are represented by the %s place holders and + * appropriate white space or connected phrase could be modified by + * the translation. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval list", "%s, %s").format( + _translateOpeningHoursTimeInterval(interval1), + _translateOpeningHoursTimeInterval(interval2)); + default: + // for other number of components, just return the input + return string; + } +} + +/* + * Parse a time interval + */ +function _translateOpeningHoursTimeInterval(string) { + if (string === 'off') + return _("not open"); + + let splitString = string.split('-'); + + if (splitString.length == 2) { + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This is a time interval with a starting and an ending time. + * The time values are represented by the %s place holders and + * appropriate white spacing or connecting phrases can be set by the + * translation as needed. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval", "%s-%s").format( + _translateOpeningHoursTime(from), + _translateOpeningHoursTime(to)); + } else { + // unknown time interval format, just return the input + return string; + } +} + +/* + * Parse a time. + */ +function _translateOpeningHoursTime(string) { + let splitString = string.split(':'); + + if (splitString.length == 2) { + let h = splitString[0]; + let min = splitString[1]; + + // if the parts aren't numbers + if (h % 1 !== 0 || min % 1 !== 0) + return string; + + // if the hours or minute components are out of range + if (h > 24 || h < 0 || min > 59 || min < 0) + return string; + + // should translate 24:00 to 00:00 to keep GDateTime happy + if (h == 24) + h = 0; + + // create a dummy DateTime, we are just interested in the hour and + // minute parts + let time = GLib.DateTime.new_local(1, 1, 1, h, min, 0.0); + + if (clockFormat === '24h') + return time.format('%R'); + else + return time.format('%r'); + } else { + // unknown format, just return input + return string; + } +} + +function translateInternetAccess(string) { + switch(string) { + /* Translators: + * There is public internet access but the particular kind is unknown. + */ + case 'yes': return _("yes"); + + /* Translators: + * no internet access is offered in a place where + * someone might expect it. + */ + case 'no': return _("no"); + + /* Translators: + * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. + */ + case 'wlan': return _("Wi-Fi"); + + /* Translators: + * This means a a place where you can plug in your laptop with ethernet. + */ + case 'wired': return _("wired"); + + /* Translators: + * Like internet cafe or library where the computer is given. + */ + case 'terminal': return _("terminal"); + + /* Translators: + * This means there is personnel which helps you in case of problems. + */ + case 'service': return _("service"); + + default: return null; + } +} + +function translateReligion(string) { + switch(string) { + case 'animist': return _("Animism"); + case 'bahai': return_("Bahá'í"); + case 'buddhist': return _("Buddhism"); + case 'caodaism': return _("Caodaism"); + case 'christian': return _("Christianity"); + case 'confucian': return _("Confucianism"); + case 'hindu': return _("Hinduism"); + case 'jain': return _("Jainism"); + case 'jewish': return _("Judaism"); + case 'muslim': return _("Islam"); + case 'multifaith': return _("Multiple Religions"); + case 'pagan': return _("Paganism"); + case 'pastafarian': return _("Pastafarianism"); + case 'scientologist': return _("Scientology"); + case 'shinto': return _("Shinto"); + case 'sikh': return _("Sikhism"); + case 'spiritualist': return _("Spiritualism"); + case 'taoist': return _("Taoism"); + case 'unitarian_universalist': return _("Unitarian Universalism"); + case 'voodoo': return _("Voodoo"); + case 'yazidi': return _("Yazidism"); + case 'zoroastrian': return _("Zoroastrianism"); + default: return null; + } +} + +function translateYesNo(string) { + switch(string) { + case 'yes': return _("yes"); + case 'no': return _("no"); + default: return null; + } +} diff --git a/src/turnPointMarker.js b/src/turnPointMarker.js new file mode 100644 index 00000000..ef810490 --- /dev/null +++ b/src/turnPointMarker.js @@ -0,0 +1,123 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Dario Di Nucci + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const Utils = imports.utils; + +var TurnPointMarker = GObject.registerClass( +class TurnPointMarker extends MapMarker.MapMarker { + + _init(params) { + this._queryPoint = params.queryPoint; + delete params.queryPoint; + + this._turnPoint = params.turnPoint; + delete params.turnPoint; + + this._transitStop = params.transitStop; + delete params.transitStop; + + this._transitLeg = params.transitLeg; + delete params.transitLeg; + + let latitude; + let longitude; + + if (this._turnPoint) { + latitude = this._turnPoint.coordinate.get_latitude(); + longitude = this._turnPoint.coordinate.get_longitude(); + } else { + latitude = this._transitStop.coordinate[0]; + longitude = this._transitStop.coordinate[1]; + } + + params.place = new Place.Place({ + location: new Location.Location({ latitude: latitude, + longitude: longitude }) }); + super._init(params); + + let actor; + if (this._queryPoint) { + this.draggable = true; + this.connect('drag-finish', () => this._onMarkerDrag()); + actor = this._actorFromIconName(this._turnPoint.iconName, 0); + } else { + let color = this._getColor(); + actor = this._actorFromIconName('maps-point-end-symbolic', + 0, + color); + } + this.add_actor(actor); + } + + _getColor() { + /* Use the route color from the transit leg when representing part of + * a transit trip, otherwise let the fallback functionallity of the + * utility function use a GNOMEish blue color for turn-by-turn routing. + */ + let color = this._transitLeg ? this._transitLeg.color : null; + + return new Gdk.RGBA({ red: Color.parseColor(color, 0, 33 / 255), + green: Color.parseColor(color, 1, 93 / 255), + blue: Color.parseColor(color, 2, 155 / 255), + alpha: 255 }); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } + + goTo() { + let view = this._mapView.view; + let turnPointZoomLevel = 15; + let latitude = this.latitude; + let longitude = this.longitude; + + view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + view.goto_duration = 0; + + Utils.once(view, 'animation-completed', () => { + view.zoom_level = turnPointZoomLevel; + view.center_on(latitude, longitude); + }); + + view.go_to(this.latitude, this.longitude); + } + + _onMarkerDrag() { + let query = Application.routeQuery; + let place = new Place.Place({ + location: new Location.Location({ latitude: this.latitude.toFixed(5), + longitude: this.longitude.toFixed(5) }) }); + + this._queryPoint.place = place; + } +}); diff --git a/src/userLocationBubble.js b/src/userLocationBubble.js new file mode 100644 index 00000000..77320e53 --- /dev/null +++ b/src/userLocationBubble.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; + +const MapBubble = imports.mapBubble; +const Utils = imports.utils; + +var UserLocationBubble = GObject.registerClass( +class UserLocationBubble extends MapBubble.MapBubble { + + _init(params) { + this._ui = Utils.getUIObject('user-location-bubble', [ 'grid-content', + 'label-accuracy', + 'label-coordinates' ]); + params.buttons = MapBubble.Button.ROUTE | + MapBubble.Button.SEND_TO | + MapBubble.Button.CHECK_IN; + params.routeFrom = true; + params.checkInMatchPlace = false; + + super._init(params); + + this.image.icon_name = 'find-location-symbolic'; + this.image.pixel_size = 48; + + this.updateLocation(); + this.content.add(this._ui.gridContent); + } + + updateLocation() { + /* Called by the UserLocationMarker when its location changes */ + + let accuracyDescription = Utils.getAccuracyDescription(this.place.location.accuracy); + /* Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) */ + this._ui.labelAccuracy.label = _("Accuracy: %s").format(accuracyDescription); + this._ui.labelCoordinates.label = this.place.location.latitude.toFixed(5) + + ', ' + + this.place.location.longitude.toFixed(5); + } +}); diff --git a/src/userLocationMarker.js b/src/userLocationMarker.js new file mode 100644 index 00000000..2eee4f53 --- /dev/null +++ b/src/userLocationMarker.js @@ -0,0 +1,130 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; +const UserLocationBubble = imports.userLocationBubble; + +var AccuracyCircleMarker = GObject.registerClass( +class AccuracyCirleMarker extends Champlain.Point { + + _init(params) { + this.place = params.place; + delete params.place; + + params.color = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 25 }); + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.reactive = false; + + super._init(params); + } + + refreshGeometry(view) { + this.latitude = this.place.location.latitude; + this.longitude = this.place.location.longitude; + + let zoom = view.zoom_level; + let source = view.map_source; + let metersPerPixel = source.get_meters_per_pixel(zoom, + this.latitude, + this.longitude); + let size = this.place.location.accuracy * 2 / metersPerPixel; + + if (size > view.width || size > view.height) + this.hide(); + else { + this.size = size; + this.show(); + } + } +}); + +var UserLocationMarker = GObject.registerClass( +class UserLocationMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this._accuracyMarker = new AccuracyCircleMarker({ place: this.place }); + this.connect('notify::view-zoom-level', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::width', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::height', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._accuracyMarker.refreshGeometry(this._view); + + this.place.connect('notify::location', () => this._updateLocation()); + this._updateLocation(); + + this.connect('notify::visible', this._updateAccuracyCircle.bind(this)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: Math.floor(this.height / 2) }; + } + + _createBubble() { + return new UserLocationBubble.UserLocationBubble({ place: this.place, + mapView: this._mapView }); + } + + addToLayer(layer) { + layer.add_marker(this._accuracyMarker); + layer.add_marker(this); + } + + _updateLocation() { + if (this._actor) { + this._actor.destroy(); + delete this._actor; + } + + if (this.place.location.heading > -1) { + this._actor = this._actorFromIconName('user-location-compass', 0); + this._actor.set_pivot_point(0.5, 0.5); + this._actor.set_rotation_angle(Clutter.RotateAxis.Z_AXIS, this.place.location.heading); + } else { + this._actor = this._actorFromIconName('user-location', 0); + } + this.add_actor(this._actor); + + this._updateAccuracyCircle(); + if (this._bubble) + this._bubble.updateLocation(); + } + + _updateAccuracyCircle() { + if (this.visible && this.place.location.accuracy > 0) { + this._accuracyMarker.refreshGeometry(this._view); + } else { + this._accuracyMarker.visible = false; + } + } +}); diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 00000000..fd4a2266 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,444 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const GLib = imports.gi.GLib; +const Gdk = imports.gi.Gdk; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; +const ByteArray = imports.byteArray; + +var METRIC_SYSTEM = 1; +var IMPERIAL_SYSTEM = 2; + +//List of locales using imperial system according to glibc locale database +const IMPERIAL_LOCALES = ['unm_US', 'es_US', 'es_PR', 'en_US', 'yi_US']; + +// Matches all unicode stand-alone accent characters +const ACCENTS_REGEX = /[\u0300-\u036F]/g; + +const _integerFormat = new Intl.NumberFormat([], { maximumFractionDigits: 0 }); +const _integerTwoDigitFormat = + new Intl.NumberFormat([], { minimumIntegerDigits: 2, + maximumFractionDigits: 0 }); + +let debugInit = false; +let measurementSystem = null; + +var debugEnabled = false; + +function debug(msg) { + if (!debugInit) { + let env = GLib.getenv('MAPS_DEBUG'); + if (env) + debugEnabled = true; + + debugInit = true; + } + + if (debugEnabled) { + log('DEBUG: ' + msg); + if (msg instanceof Error) + log(msg.stack); + } +} + +// Connect to a signal on an object and disconnect on its first emission. +function once(obj, signal, callback) { + let id = obj.connect(signal, function() { + obj.disconnect(id); + callback(); + }); +} + +function loadStyleSheet(file) { + let provider = new Gtk.CssProvider(); + provider.load_from_file(file); + Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), + provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +function addActions(actionMap, entries, settings = null) { + for(let name in entries) { + let entry = entries[name]; + let action = createAction(name, entry, settings); + + actionMap.add_action(action); + + if(entry.accels) + setAccelsForActionMap(actionMap, name, entry.accels); + } +} + +function setAccelsForActionMap(actionMap, actionName, accels) { + let app; + let prefix; + + if(actionMap instanceof Gtk.Application) { + app = actionMap; + prefix = "app"; + } else if(actionMap instanceof Gtk.Window) { + app = actionMap.application; + prefix = "win"; + } + app.set_accels_for_action(prefix + '.' + actionName, accels); +} + +function createAction(name, + { state, paramType, onActivate, onChangeState, setting }, + settings = null) { + let action; + + if (setting && settings) { + action = settings.create_action(setting); + + if (onChangeState) + action.connect('notify::state', onChangeState); + } else { + let entry = { name: name }; + + if (Array.isArray(state)) { + let [type, value] = state; + entry.state = new GLib.Variant.new(type, value); + } + + if (paramType !== undefined) + entry.parameter_type = GLib.VariantType.new(paramType); + + action = new Gio.SimpleAction(entry); + + if (onActivate) + action.connect('activate', onActivate); + if (onChangeState) + action.connect('change-state', onChangeState); + } + + return action; +} + +function _getPlatformData(appId, timestamp) { + let context = Gdk.Display.get_default().get_app_launch_context(); + context.set_timestamp(timestamp); + let info = Gio.DesktopAppInfo.new(appId + '.desktop'); + let id = new GLib.Variant('s', context.get_startup_notify_id(info, [])); + + return { 'desktop-startup-id': id }; +} + +function activateAction(appId, action, parameter, timestamp) { + let objectPath = '/' + appId.replace(/\./g, '/'); + let platformData = _getPlatformData(appId, timestamp); + let wrappedParam = parameter ? [parameter] : []; + + Gio.DBus.session.call(appId, + objectPath, + 'org.freedesktop.Application', + 'ActivateAction', + new GLib.Variant('(sava{sv})', [action, + wrappedParam, + platformData]), + null, + Gio.DBusCallFlags.NONE, -1, null, function(c, res) { + try { + c.call_finish(res); + } catch(e) { + debug('ActivateApplication: ' + e); + } + }); +} + +function dashedToCamelCase(name) { + return name.replace(/(-.)/g, function(x) { + return x[1].toUpperCase(); + }); +} + +function getUIObject(res, ids) { + let builder = new Gtk.Builder(); + builder.add_from_resource('/org/gnome/Maps/ui/' + res + '.ui'); + let ret = {}; + ids.forEach(function(id) { + ret[dashedToCamelCase(id)] = builder.get_object(id); + }); + return ret; +} + +function readFile(filename) { + let status, buffer; + let file = Gio.File.new_for_path(filename); + try { + [status, buffer] = file.load_contents(null); + } catch (e) { + return null; + } + if (status) + return buffer; + else + return null; +} + +function writeFile(filename, buffer) { + let file = Gio.File.new_for_path(filename); + let status; + try { + status = file.replace_contents(buffer, null, false, 0, null)[0]; + return status; + } catch (e) { + return false; + } +} + +function getMeasurementSystem() { + if (measurementSystem) + return measurementSystem; + + let locale = GLib.getenv('LC_MEASUREMENT') || GLib.get_language_names()[0]; + + // Strip charset + if (locale.indexOf('.') !== -1) + locale = locale.substring(0, locale.indexOf('.')); + + if (IMPERIAL_LOCALES.indexOf(locale) === -1) + measurementSystem = METRIC_SYSTEM; + else + measurementSystem = IMPERIAL_SYSTEM; + + return measurementSystem; +} + +/** + * Get the higest priority bare lange currently in use. + */ +function getLanguage() { + let locale = GLib.get_language_names()[0]; + // the last item returned is the "bare" language + return GLib.get_locale_variants(locale).slice(-1)[0]; +} + +function getAccuracyDescription(accuracy) { + switch(accuracy) { + case Geocode.LOCATION_ACCURACY_UNKNOWN: + /* Translators: Accuracy of user location information */ + return _("Unknown"); + case 0: + /* Translators: Accuracy of user location information */ + return _("Exact"); + default: + return prettyDistance(accuracy); + } +} + +function load_icon(icon, size, loadCompleteCallback) { + if (icon instanceof Gio.FileIcon || icon instanceof Gio.BytesIcon) { + _load_icon(icon, loadCompleteCallback); + } else if (icon instanceof Gio.ThemedIcon) { + _load_themed_icon(icon, size, loadCompleteCallback); + } +} + +function _load_icon(icon, loadCompleteCallback) { + icon.load_async(-1, null, function(icon, res) { + try { + let stream = icon.load_finish(res)[0]; + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + loadCompleteCallback(null); + } + }); +} + +function _load_themed_icon(icon, size, loadCompleteCallback) { + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_by_gicon(icon, size, 0); + + try { + let pixbuf = info.load_icon(); + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + } +} + +function osmTypeToString(osmType) { + switch(osmType) { + case Geocode.PlaceOsmType.NODE: return 'node'; + case Geocode.PlaceOsmType.RELATION: return 'relation'; + case Geocode.PlaceOsmType.WAY: return 'way'; + default: return 'node'; + } +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals + */ +function formatLocaleInteger(n) { + return _integerFormat.format(n); +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals using at least two digits + * with possible leading 0, suitable for time rendering. + */ +function formatLocaleIntegerMinimumTwoDigits(n) { + return _integerTwoDigitFormat.format(n); +} + +function prettyTime(time) { + let seconds = Math.floor(time / 1000); + let minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + + let secondsStr = formatLocaleInteger(seconds); + let minutesStr = formatLocaleInteger(minutes); + let hoursStr = formatLocaleInteger(hours); + + if (hours > 0 && minutes === 0) { + /* Translators: this is a duration with only hours, using + * an abbreviation for hours, corresponding to 'h' in English + */ + return _("%s h").format(hoursStr); + } else if (hours > 0) { + /* Translators: this is a duration with hours and minutes parts + * using abbreviations for hours and minutes, correspoding to 'h' + * and 'min' in English. The minutes has appropriate plural variations + */ + return ngettext("%s h %s min", "%s h %s min", + minutes).format(hoursStr, minutesStr); + } else if (minutes > 0) { + /* Translators: this is a duration with minutes part + * using abbreviation for minutes, corresponding to 'min' in English + * with appropriate plural variations + */ + return ngettext("%s min", "%s min", minutes).format(minutesStr); + } else { + /* Translators: this is a duration of less than one minute + * with seconds using an abbreviation for seconds, corresponding to + * 's' in English with appropriate plural forms + */ + return ngettext("%s s", "%s s", seconds).format(secondsStr); + } +} + +function prettyDistance(distance, noRound) { + if (getMeasurementSystem() === METRIC_SYSTEM) { + // round to whole meters + distance = Math.round(distance); + if (distance >= 1000 && !noRound) { + distance = Math.round(distance / 1000 * 10) / 10; + /* Translators: This is a distance measured in kilometers */ + return _("%s km").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in meters */ + return _("%s m").format(distance.toLocaleString()); + } else { + // Convert to feet + distance = Math.round(distance * 3.2808399); + if (distance >= 1056 && !noRound) { + // Convert to miles when distance is more than 0.2 mi + distance = Math.round(distance / 5280 * 10) / 10; + /* Translators: This is a distance measured in miles */ + return _("%s mi").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in feet */ + return _("%s ft").format(distance.toLocaleString()); + } +} + +function uriSchemeSupported(scheme) { + let apps = Gio.AppInfo.get_all(); + let prefix = 'x-scheme-handler/'; + + for (let app of apps) { + let types = app.get_supported_types(); + if (!types) + continue; + + for (let type of types) { + if (type.replace(prefix, '') === scheme) + return true; + } + } + return false; +} + +function normalizeString(string) { + let normalized = GLib.utf8_normalize(string, -1, GLib.NormalizeMode.ALL); + return normalized.replace(ACCENTS_REGEX, ''); +} + +function isUsingDarkThemeVariant() { + let gtkSettings = Gtk.Settings.get_default(); + + return gtkSettings.gtk_application_prefer_dark_theme; +} + +function isUsingHighContrastTheme() { + let gtkSettings = Gtk.Settings.get_default(); + let themeName = gtkSettings.gtk_theme_name; + + return themeName === 'HighContrast' || themeName === 'HighContrastInverse'; +} + +function showDialog(msg, type, transientFor) { + let messageDialog = + new Gtk.MessageDialog({ transient_for: transientFor, + destroy_with_parent: true, + message_type: type, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: msg }); + + messageDialog.connect('response', () => messageDialog.destroy()); + messageDialog.show_all(); +} + +/* Gets a string from either a ByteArray or Uint8Array. This is for +compatibility between two different Gjs versions, see discussion at +https://gitlab.gnome.org/GNOME/gnome-maps/merge_requests/19 */ +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function getCountryCodeForCoordinates(lat, lon) { + let location = GWeather.Location.new_detached('', null, lat, lon); + + return location.get_country(); +} + diff --git a/src/wikipedia.js b/src/wikipedia.js new file mode 100644 index 00000000..48e231c1 --- /dev/null +++ b/src/wikipedia.js @@ -0,0 +1,136 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Format = imports.format; +const Utils = imports.utils; + +let _soupSession = null; +function _getSoupSession() { + if (_soupSession === null) { + _soupSession = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + return _soupSession; +} + +let _thumbnailCache = {}; + +function getLanguage(wiki) { + return wiki.split(':')[0]; +} + +function getArticle(wiki) { + return Soup.uri_encode(wiki.replace(/ /g, '_').split(':').splice(1).join(':'), + '\''); +} + +function getHtmlEntityEncodedArticle(wiki) { + return GLib.markup_escape_text(wiki.split(':').splice(1).join(':'), -1); +} + +/* + * Try to fetch the thumbnail given an article title and thumbnail size + * Calls callback with the Gdk.PixBuf of the icon when successful, otherwise + * undefined + */ +function fetchArticleThumbnail(wiki, size, callback) { + let lang = getLanguage(wiki); + let title = getHtmlEntityEncodedArticle(wiki); + let uri = Format.vprintf('https://%s.wikipedia.org/w/api.php', [ lang ]); + let msg = Soup.form_request_new_from_hash('GET', uri, { action: 'query', + titles: title, + prop: 'pageimages', + format: 'json', + pithumbsize: size + ''}); + let session = _getSoupSession(); + let cachedThumbnail = _thumbnailCache[wiki + '/' + size]; + + if (cachedThumbnail) { + callback(cachedThumbnail); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to request thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let response = JSON.parse(msg.response_body.data); + let pages = response.query.pages; + + if (pages) { + /* we know there should be only one object instance in the "pages" + * object, but the API specifies the sub-object as the page ID, + * so we'll have to use this iteration approach here + */ + for (let page in pages) { + let thumbnail = pages[page].thumbnail; + + if (thumbnail) { + let source = pages[page].thumbnail.source; + + _fetchThumbnailImage(wiki, size, source, callback); + } else { + callback(null); + } + return; + } + } else { + callback(null); + } + }); +} + +function _fetchThumbnailImage(wiki, size, source, callback) { + let uri = new Soup.URI(source); + let msg = new Soup.Message({ method: 'GET', uri: uri }); + let session = _getSoupSession(); + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to download thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let contents = msg.response_body_data; + let stream = Gio.MemoryInputStream.new_from_bytes(contents); + + try { + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + _thumbnailCache[wiki + '/' + size] = pixbuf; + callback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + callback(null); + } + + stream.close(null); + }); +} diff --git a/src/xmldom/LICENSE b/src/xmldom/LICENSE new file mode 100644 index 00000000..68a9b5e1 --- /dev/null +++ b/src/xmldom/LICENSE @@ -0,0 +1,8 @@ +You can choose any one of those: + +The MIT License (MIT): + +link:http://opensource.org/licenses/MIT + +LGPL: +http://www.gnu.org/licenses/lgpl.html diff --git a/src/xmldom/dom.js b/src/xmldom/dom.js new file mode 100644 index 00000000..0ec86d14 --- /dev/null +++ b/src/xmldom/dom.js @@ -0,0 +1,1142 @@ +/* + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + */ + +function copy(src,dest){ + for(var p in src){ + dest[p] = src[p]; + } +} +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(!(pt instanceof Super)){ + let t = function (){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknow Class:"+Class) + } + pt.constructor = Class + } +} +var htmlns = 'http://www.w3.org/1999/xhtml' ; +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; + +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); + + +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; +}; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return this[index] || null; + }, + toString:function(){ + for(var buf = [], i = 0;i=0){ + var lastIndex = list.length-1 + while(i0 || key == 'xmlns'){ +// return null; +// } + var i = this.length; + while(i--){ + var attr = this[i]; + if(attr.nodeName == key){ + return attr; + } + } + return null; + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + + + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } +}; +/** + * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 + */ +function DOMImplementation(/* Object */ features) { + this._features = {}; + if (features) { + for (var feature in features) { + this._features = features[feature]; + } + } +}; + +DOMImplementation.prototype = { + hasFeature: function(/* string */ feature, /* string */ version) { + var versions = this._features[feature.toLowerCase()]; + if (versions && (!version || version in versions)) { + return true; + } else { + return false; + } + }, + // Introduced in DOM Level 2: + createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype; + if(doctype){ + doc.appendChild(doctype); + } + if(qualifiedName){ + var root = doc.createElementNS(namespaceURI,qualifiedName); + doc.appendChild(root); + } + return doc; + }, + // Introduced in DOM Level 2: + createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId; + node.systemId = systemId; + // Introduced in DOM Level 2: + //readonly attribute DOMString internalSubset; + + //TODO:.. + // readonly attribute NamedNodeMap entities; + // readonly attribute NamedNodeMap notations; + return node; + } +}; + + +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ + +function Node() { +}; + +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + this.insertBefore(newChild,oldChild); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } +}; + + +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' +} + + +copy(NodeType,Node); +copy(NodeType,Node.prototype); + +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if((node = node.firstChild)){ + do{ + if(_visitNode(node,callback)){return true} + }while((node=node.nextSibling)) + } + return false; +} + + + +function Document(){ +} +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } +} +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } +} +function _onUpdateChild(doc,el,newChild){ + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if(newChild){ + cs[cs.length++] = newChild; + }else{ + //console.log(1) + var child = el.firstChild; + var i = 0; + while(child){ + cs[i++] = child; + child =child.nextSibling; + } + cs.length = i; + } + } +} + +/** + * attributes; + * children; + * + * writeable properties: + * nodeValue,Attr:value,CharacterData:data + * prefix + */ +function _removeChild(parentNode,child){ + var previous = child.previousSibling; + var next = child.nextSibling; + if(previous){ + previous.nextSibling = next; + }else{ + parentNode.firstChild = next + } + if(next){ + next.previousSibling = previous; + }else{ + parentNode.lastChild = previous; + } + _onUpdateChild(parentNode.ownerDocument,parentNode); + return child; +} +/** + * preformance key(refChild == null) + */ +function _insertBefore(parentNode,newChild,nextChild){ + var cp = newChild.parentNode; + if(cp){ + cp.removeChild(newChild);//remove and update + } + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = newChild.firstChild; + if (newFirst == null) { + return newChild; + } + var newLast = newChild.lastChild; + }else{ + newFirst = newLast = newChild; + } + var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; + + newFirst.previousSibling = pre; + newLast.nextSibling = nextChild; + + + if(pre){ + pre.nextSibling = newFirst; + }else{ + parentNode.firstChild = newFirst; + } + if(nextChild == null){ + parentNode.lastChild = newLast; + }else{ + nextChild.previousSibling = newLast; + } + do{ + newFirst.parentNode = parentNode; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + //console.log(parentNode.lastChild.nextSibling == null) + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { + newChild.firstChild = newChild.lastChild = null; + } + return newChild; +} +function _appendSingleChild(parentNode,newChild){ + var cp = newChild.parentNode; + if(cp){ + var pre = parentNode.lastChild; + cp.removeChild(newChild);//remove and update + var pre = parentNode.lastChild; + } + var pre = parentNode.lastChild; + newChild.parentNode = parentNode; + newChild.previousSibling = pre; + newChild.nextSibling = null; + if(pre){ + pre.nextSibling = newChild; + }else{ + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + return newChild; + //console.log("__aa",parentNode.lastChild.nextSibling == null) +} +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + doctype : null, + documentElement : null, + _inc : 1, + + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + if(this.documentElement == null && newChild.nodeType == 1){ + this.documentElement = newChild; + } + + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == 1){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + return false; + }) + return rtv; + }, + + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.target = target; + node.nodeValue= node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); + + +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, + + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, + + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, + + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; + + +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); + + +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); + + }, + appendChild:function(newChild){ + //if(!(newChild instanceof CharacterData)){ + throw new Error(ExceptionMessage[3]) + //} + return Node.prototype.appendChild.apply(this,arguments) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } +} +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } +} +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE +} +_extends(Comment,CharacterData); + +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE +} +_extends(CDATASection,CharacterData); + + +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); + +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); + +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); + +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); + +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); + + +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node,attributeSorter){ + return node.toString(attributeSorter); +} +Node.prototype.toString =function(attributeSorter){ + var buf = []; + serializeToString(this,buf,attributeSorter); + return buf.join(''); +} +function serializeToString(node,buf,attributeSorter,isHTML){ + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; + isHTML = (htmlns === node.namespaceURI) ||isHTML + buf.push('<',nodeName); + if(attributeSorter){ + buf.sort.apply(attrs, attributeSorter); + } + for(var i=0;i'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + if(child){ + buf.push(child.data); + } + }else{ + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + } + buf.push(''); + }else{ + buf.push('/>'); + } + return null; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + return null; + case ATTRIBUTE_NODE: + return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push( ''); + case COMMENT_NODE: + return buf.push( ""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM "',sysid,'">'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return null; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( ""); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + return buf.push('??',node.nodeName); + } +} +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i','amp':'&','quot':'"','apos':"'"} + if(locator){ + domBuilder.setDocumentLocator(locator) + } + + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(/\/x?html?$/.test(mimeType)){ + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if(source){ + sax.parse(source,defaultNSMap,entityMap); + }else{ + sax.errorHandler.error("invalid document source"); + } + return domBuilder.document; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + } + errorHandler[key] = fn && function(msg){ + fn('[xmldom '+key+']\t'+msg+_locator(locator)); + }||function(){}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.document = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.document.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.document; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + if( attr.getOffset){ + position(attr.getOffset(1),attr) + } + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.document.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(this.currentElement && chars){ + if (this.cdata) { + var charNode = this.document.createCDATASection(chars); + this.currentElement.appendChild(charNode); + } else { + var charNode = this.document.createTextNode(chars); + this.currentElement.appendChild(charNode); + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.document.normalize(); + }, + setDocumentLocator:function (locator) { + if((this.locator = locator)){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.document.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, + + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, + + startDTD:function(name, publicId, systemId) { + var impl = this.document.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + log('[xmldom warning]\t'+error); + }, + error:function(error) { + log('[xmldom error]\t'+error); + throw error; + }, + fatalError:function(error) { + log('[xmldom fatalError]\t'+error); + throw error; + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } + return null; +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} + +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.document.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +}//appendChild and setAttributeNS are preformance key diff --git a/src/xmldom/sax.js b/src/xmldom/sax.js new file mode 100644 index 00000000..9be75bfa --- /dev/null +++ b/src/xmldom/sax.js @@ -0,0 +1,582 @@ +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\u203F-\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_S=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_V = 4;//attr value(no quot value only) +var S_E = 5;//attr value end and no space(quot end) +var S_S = 6;//(attr value end || tag end ) && (space offer) +var S_C = 7;//closed el + +function XMLReader(){ + +} + +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if(k in entityMap){ + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + if(end>start){ + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + } + function position(p,m){ + while(p>=lineEnd && (m = linePattern.exec(source))){ + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p-lineStart+1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.+(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; + + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + try{ + var tagStart = source.indexOf('<',start); + if(tagStart<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.document; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(tagStart>start){ + appendText(tagStart); + } + switch(source.charAt(tagStart+1)){ + case '/': + var end = source.indexOf('>',tagStart+3); + var tagName = source.substring(tagStart+2,end); + var config = parseStack.pop(); + var localNSMap = config.localNSMap; + if(config.tagName != tagName){ + errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); + } + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + end++; + break; + // end elment + case '?':// + locator&&position(tagStart); + end = parseInstruction(source,tagStart,domBuilder); + break; + case '!':// start){ + start = end; + }else{ + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart,start)+1); + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} + +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_S){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if(s === S_EQ){//equal + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + el.add(attrName,value,start-1); + s = S_E; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_V){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName,value,start); + //console.dir(el) + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_E + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + s = S_C; + el.closed = true; + case S_V: + case S_ATTR: + case S_ATTR_S: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") + } + break; + case ''://end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + break;//normal + case S_V://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_S: + if(s === S_ATTR_S){ + value = attrName; + } + if(s == S_V){ + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) + }else{ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + el.add(value,value,start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_S; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_S; + break; + case S_V: + var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value,start) + case S_E: + s = S_S; + break; + //case S_S: + //case S_EQ: + //case S_ATTR_S: + // void();break; + //case S_C: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_V:void();break; + case S_ATTR_S: + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + el.add(attrName,attrName,start); + start = p; + s = S_ATTR; + break; + case S_E: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_S: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_V; + start = p; + break; + case S_C: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } + p++; + } +} +/** + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function appendElement(el,domBuilder,parseStack){ + var tagName = el.tagName; + var localNSMap = null; + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/' + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix] + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for(prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + parseStack.push(el); + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} + + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = closeMap[tagName] = source.lastIndexOf('') + } + return pos',start+4); + //append comment source.substring(4,end)// + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg new file mode 100644 index 00000000..135278f5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg new file mode 100644 index 00000000..a50bbc43 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg new file mode 100644 index 00000000..4d5a6b17 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg new file mode 100644 index 00000000..b51794c4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg new file mode 100644 index 00000000..f476455f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg new file mode 100644 index 00000000..ab3daf84 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg new file mode 100644 index 00000000..de9a2668 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg new file mode 100644 index 00000000..46f6ddd1 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg @@ -0,0 +1,43 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg new file mode 100644 index 00000000..dcc3f2da --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg new file mode 100644 index 00000000..0223d5f8 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg new file mode 100644 index 00000000..d9547d66 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg new file mode 100644 index 00000000..c511fe1c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg new file mode 100644 index 00000000..7317b867 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg new file mode 100644 index 00000000..961c35e0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg @@ -0,0 +1,30 @@ + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg new file mode 100644 index 00000000..ae2d69a6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg new file mode 100644 index 00000000..279639a4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg new file mode 100644 index 00000000..6984bd05 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg new file mode 100644 index 00000000..61184b56 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg new file mode 100644 index 00000000..a9c653c2 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg new file mode 100644 index 00000000..c39a3397 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg new file mode 100644 index 00000000..11b5cf0b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg new file mode 100644 index 00000000..05a49d52 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg new file mode 100644 index 00000000..76b863b3 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg new file mode 100644 index 00000000..ee275b5a --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg new file mode 100644 index 00000000..06abf130 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg @@ -0,0 +1,47 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg new file mode 100644 index 00000000..ae2fdd03 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg new file mode 100644 index 00000000..be789b79 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/data/icons/private/hicolor/24x24/apps/user-location-compass.png b/data/icons/private/hicolor/24x24/apps/user-location-compass.png new file mode 100644 index 00000000..d2f3c7d7 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location-compass.png differ diff --git a/data/icons/private/hicolor/24x24/apps/user-location.png b/data/icons/private/hicolor/24x24/apps/user-location.png new file mode 100644 index 00000000..833fd907 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location.png differ diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg new file mode 100644 index 00000000..3eecf0fe --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg new file mode 100644 index 00000000..e6ec05fd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg new file mode 100644 index 00000000..110fda85 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg new file mode 100644 index 00000000..c955b77d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg new file mode 100644 index 00000000..1c429d12 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg new file mode 100644 index 00000000..a1950490 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg new file mode 100644 index 00000000..3f4f0ea1 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg new file mode 100644 index 00000000..e78482f8 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg new file mode 100644 index 00000000..03c5744c --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg new file mode 100644 index 00000000..bb0886ba --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg new file mode 100644 index 00000000..3cfcbaae --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg new file mode 100644 index 00000000..ebbe0172 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg new file mode 100644 index 00000000..c5bcbf6a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg new file mode 100644 index 00000000..520dd2ab --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg new file mode 100644 index 00000000..73fa4e1a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg new file mode 100644 index 00000000..19f98821 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg new file mode 100644 index 00000000..b92d3e69 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg new file mode 100644 index 00000000..283cdfbc --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg new file mode 100644 index 00000000..eb93b7bd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg new file mode 100644 index 00000000..1178640b --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg new file mode 100644 index 00000000..37d46da9 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg new file mode 100644 index 00000000..deaa22df --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg new file mode 100644 index 00000000..0fc527c2 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg new file mode 100644 index 00000000..17893292 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg new file mode 100644 index 00000000..72d3cef4 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg new file mode 100644 index 00000000..da099f9d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/mark-location.png b/data/icons/private/hicolor/32x32/apps/mark-location.png new file mode 100644 index 00000000..1a34a63c Binary files /dev/null and b/data/icons/private/hicolor/32x32/apps/mark-location.png differ diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg new file mode 100644 index 00000000..3ecd81a5 --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg new file mode 100644 index 00000000..1986990c --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg @@ -0,0 +1,202 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg new file mode 100644 index 00000000..32ac0b74 --- /dev/null +++ b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg @@ -0,0 +1,28 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + diff --git a/data/maps-service.json b/data/maps-service.json new file mode 100644 index 00000000..2eedd51c --- /dev/null +++ b/data/maps-service.json @@ -0,0 +1,39 @@ +{ + "tileProviderInfo": { + "name": "Mapbox", + "url": "https://www.mapbox.com" + }, + "tiles": { + "street": { + "id": "osm.streets", + "name": "OpenStreetMap street tiles", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 256, + "uri_format": "https://tile.openstreetmap.org/#Z#/#X#/#Y#.png", + "attribution_logo": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjgxLjU4NjQ4N21tIgogICBoZWlnaHQ9IjEwLjA1NjIwMm1tIgogICB2aWV3Qm94PSIwIDAgODEuNTg2NDg3IDEwLjA1NjIwMiIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIgogICBzb2RpcG9kaTpkb2NuYW1lPSJkcmF3aW5nLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjEuOTc5ODk5IgogICAgIGlua3NjYXBlOmN4PSI4Ni45MTU1MzYiCiAgICAgaW5rc2NhcGU6Y3k9Ijc4Ljc2NjQ3OSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIGlua3NjYXBlOmRvY3VtZW50LXJvdGF0aW9uPSIwIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA0MyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTUiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNC41MzY3MDgsLTI1LjI5NDkpIj4KICAgIDx0ZXh0CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6MTAuNTgzM3B4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzIgogICAgICAgeD0iMjMuOTQyNDMiCiAgICAgICB5PSIzMy4xNDk2OTMiCiAgICAgICBpZD0idGV4dDEyIj48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuMTAiCiAgICAgICAgIHg9IjIzLjk0MjQzIgogICAgICAgICB5PSIzMy4xNDk2OTMiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzO3N0cm9rZS1vcGFjaXR5OjEiPk9wZW5TdHJlZXRNYXA8L3RzcGFuPjwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=", + "max_connections": 2 + }, + + "print": { + "id": "osm.print", + "name": "OpenStreetMap street tiles for print", + "license": "© OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 256, + "uri_format": "https://tile.openstreetmap.org/#Z#/#X#/#Y#.png", + "attribution_logo": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjgxLjU4NjQ4N21tIgogICBoZWlnaHQ9IjEwLjA1NjIwMm1tIgogICB2aWV3Qm94PSIwIDAgODEuNTg2NDg3IDEwLjA1NjIwMiIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOCIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4wLjIgKGU4NmM4NzA4NzksIDIwMjEtMDEtMTUpIgogICBzb2RpcG9kaTpkb2NuYW1lPSJkcmF3aW5nLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczIiIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjEuOTc5ODk5IgogICAgIGlua3NjYXBlOmN4PSI4Ni45MTU1MzYiCiAgICAgaW5rc2NhcGU6Y3k9Ijc4Ljc2NjQ3OSIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIGlua3NjYXBlOmRvY3VtZW50LXJvdGF0aW9uPSIwIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA0MyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTUiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNC41MzY3MDgsLTI1LjI5NDkpIj4KICAgIDx0ZXh0CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6MTAuNTgzM3B4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzIgogICAgICAgeD0iMjMuOTQyNDMiCiAgICAgICB5PSIzMy4xNDk2OTMiCiAgICAgICBpZD0idGV4dDEyIj48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuMTAiCiAgICAgICAgIHg9IjIzLjk0MjQzIgogICAgICAgICB5PSIzMy4xNDk2OTMiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzO3N0cm9rZS1vcGFjaXR5OjEiPk9wZW5TdHJlZXRNYXA8L3RzcGFuPjwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=", + "max_connections": 2 + } + }, + "graphHopperGeocode": { + "baseUrl": "https://graphhopper.com", + "attribution": "GraphHopper", + "attributionUrl": "https://graphhopper.com/", + "apiKey": "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP" + } +} diff --git a/data/media/maps-point-end-symbolic.svg b/data/media/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/media/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/media/maps-point-start-symbolic.svg b/data/media/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/media/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 00000000..2be4ee73 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,80 @@ +gnome.compile_resources( + app_id + '.data', + app_id + '.data.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir +) + +install_data( + 'maps-service.json', + install_dir: pkgdatadir +) + +desktop = app_id + '.desktop' + +desktop_file = custom_target('desktop-file', + input: desktop + '.in', + output: desktop, + install: true, + install_dir: join_paths(datadir, 'applications'), + command: [msgfmt, '--desktop', + '--template', '@INPUT@', '-d', po_dir, '-o', '@OUTPUT@', + '--keyword=X-Geoclue-Reason', '--keyword=Name', '--keyword=Comment', + '--keyword=Keywords' + ] +) + +install_data( + app_id + '.gschema.xml', + install_dir: join_paths(datadir, 'glib-2.0', 'schemas') +) + +appdata = app_id + '.appdata.xml' + +appdata_file = i18n.merge_file( + appdata, + input: appdata + '.in', + output: appdata, + po_dir: po_dir, + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +service_conf = configuration_data() +service_conf.set('PACKAGE_NAME', meson.project_name()) +service_conf.set('pkgdatadir', pkgdatadir) + +configure_file( + input: app_id + '.service.in', + output: app_id + '.service', + configuration: service_conf, + install: true, + install_dir: join_paths(datadir, 'dbus-1', 'services') +) + +desktop_file_validate = find_program('desktop-file-validate', required: false) +if desktop_file_validate.found() + test( + 'validate-desktop', + desktop_file_validate, + args: [ + desktop_file.full_path() + ] + ) +endif + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test( + 'validate-appdata', + appstream_util, + args: [ + 'validate-relax', + '--nonet', + appdata_file.full_path() + ] + ) +endif + +subdir('icons') \ No newline at end of file diff --git a/data/org.gnome.Maps.appdata.xml.in b/data/org.gnome.Maps.appdata.xml.in new file mode 100644 index 00000000..bfec6a87 --- /dev/null +++ b/data/org.gnome.Maps.appdata.xml.in @@ -0,0 +1,262 @@ + + + org.gnome.Maps.desktop + CC0-1.0 + GPL-2.0-or-later + GNOME Maps + Find places around the world + +

    + Maps gives you quick access to maps all across the world. It allows you + to quickly find the place you’re looking for by searching for a city or + street, or locate a place to meet a friend. +

    +

    + Maps uses the collaborative OpenStreetMap database, made by hundreds of + thousands of people across the globe. +

    + + +

    + You can even search for specific types of locations, such as “Pubs near + Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”. +

    +
    + + org.gnome.Maps.desktop + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-main.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-route.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-pinpoint.png + + + + + +
      +
    • Update donation and wiki web links in appdata
    • +
    +
    + +
      +
    • Fix regression when signing in for OSM editing
    • +
    +
    + +
      +
    • Fix crashes when no aerial tile definition is available
    • +
    • Fix cut-off text in place bubble in some translations
    • +
    +
    + +
      +
    • Fix a bug where unfavoring a place made it unselectable until after a restart
    • +
    • Use country code attribute from GraphHopper/Photon geocode results to improve +accuracy of address formatting among others
    • +
    +
    + +
      +
    • Redesigned place bubbles
    • +
    • Adaptive UI for the place bubbles on small screens
    • +
    • Show translated place names in user's language when available
    • +
    +
    + +
      +
    • Fix a bug resulting in writing a broken last view position on exit in some circumstances
    • +
    • Fix a bug preventing wrapping around at the date line with dark tiles
    • +
    • Fix a bug causing hanging in cases when dragging around route markers
    • +
    +
    + +
      +
    • Fix a bug where place details gets lost after searching again for the same place
    • +
    +
    + +
      Translation updates
    +
    + +
      +
    • Fix a race-condition bug in search-as-you-type resulting in out-of-sync search results in some circumstances
    • +
    • Fix updating missing details after editing a POI in OpenStreetMap
    • +
    +
    + + +
      +
    • Show error message in popover when a search request has failed
    • +
    • Fix exception on shutdown when unregistering DBus
    • +
    • Fix "no network" display to fit on smaller screens
    • +
    +
    +
    + + + +
      +
    • Initial adpative UI
    • +
    • Added night mode
    • +
    • Added support for hybrid aerial layer
    • +
    • Public transit plugin for South Africa (GoMetro)
    • +
    • Improved keyboard navigation in routing sidebar
    • +
    • Make more use of localized number formatting
    • +
    +
    +
    + + +
      +
    • Fix an issue where some search result gets the wrong level of name
    • +
    +
    +
    + + +
      +
    • Don't reset query points when routing fails (e.g. no public transit provider is available) to allow switching mode with the same query
    • +
    • Fix a bug not displaying tiles south of the equator when using --local command line option
    • +
    • Allow entering DMS coordinates without comma between latitude and logitude parts
    • +
    +
    +
    + + +
      +
    • Updated POI defintions for OpenStreetMap editing
    • +
    • Fix link to sign up for an OpenStreetMap account
    • +
    +
    +
    + + + +
      +
    • Initial support for public transit routing
    • +
    • Re-arrange context menu. Move "export as image" to hamburger menu
    • +
    • Avoid flickering the current location marker when changes
    • +
    +
    +
    + + +
      +
    • Added Malay translation
    • +
    +
    +
    + + +
      +
    • Fix generating Wikipedia URLs in some cases
    • +
    +
    +
    + + +
      +
    • Update tile size to 512 px when using --local option
    • +
    +
    +
    + + +
      +
    • Auto-complete "search-as-you-type"
    • +
    • Revamped sharing dialog
    • +
    • Support opening OpenStreetMap URLs
    • +
    • Faster startup
    • +
    • Remember map style last used when starting (street or aerial view)
    • +
    +
    +
    + + +
      +
    • Fix misaligned rendering of shape layers with the new map tiles
    • +
    +
    +
    + + +
      +
    • Remove some unnessesary instructions in turn-by-turn route searches
    • +
    +
    +
    + + +
      +
    • Updated Croatian translations
    • +
    +
    +
    + + + +
      +
    • Show live-updated thumbnails for the street/aerial layer switcher, instead of (outdated) hard-code thumbnails
    • +
    • Move app menu to the headerbar
    • +
    • Updated application icon
    • +
    +
    +
    +
    + + gnome-maps.desktop + + GNOME + The GNOME Project + https://wiki.gnome.org/Apps/Maps + https://gitlab.gnome.org/GNOME/gnome-maps/ + https://www.gnome.org/donate/ + gnome-maps-list@gnome.org + gnome-maps + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + + + workstation + mobile + +
    + + + diff --git a/data/org.gnome.Maps.data.gresource.xml b/data/org.gnome.Maps.data.gresource.xml new file mode 100644 index 00000000..5ad801fa --- /dev/null +++ b/data/org.gnome.Maps.data.gresource.xml @@ -0,0 +1,50 @@ + + + + ui/account-row.ui + ui/check-in-dialog.ui + ui/context-menu.ui + ui/export-view-dialog.ui + ui/favorites-popover.ui + ui/headerbar-left.ui + ui/headerbar-right.ui + ui/instruction-row.ui + ui/layers-popover.ui + ui/shape-layer-row.ui + ui/shape-layer-file-chooser.ui + ui/location-service-dialog.ui + ui/main-window.ui + ui/open-with-row.ui + ui/osm-account-dialog.ui + ui/osm-edit-address.ui + ui/osm-edit-dialog.ui + ui/osm-type-list-row.ui + ui/osm-type-search-entry.ui + ui/osm-type-popover.ui + ui/place-bar.ui + ui/place-buttons.ui + ui/place-dialog.ui + ui/place-entry.ui + ui/place-list-row.ui + ui/place-popover.ui + ui/place-view.ui + ui/route-entry.ui + ui/send-to-dialog.ui + ui/sidebar.ui + ui/social-place-more-results-row.ui + ui/social-place-row.ui + ui/transit-arrival-row.ui + ui/transit-itinerary-row.ui + ui/transit-leg-row.ui + ui/transit-more-row.ui + ui/transit-options-panel.ui + ui/transit-route-label.ui + ui/transit-stop-row.ui + ui/zoom-in-dialog.ui + gnome-maps.css + osm-types.json + + + ui/help-overlay.ui + + diff --git a/data/org.gnome.Maps.desktop.in b/data/org.gnome.Maps.desktop.in new file mode 100644 index 00000000..85a58a9b --- /dev/null +++ b/data/org.gnome.Maps.desktop.in @@ -0,0 +1,18 @@ +[Desktop Entry] +Version=1.0 +Name=Maps +Comment=A simple maps application +Exec=gapplication launch org.gnome.Maps %U +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=org.gnome.Maps +Terminal=false +Type=Application +StartupNotify=true +Categories=GNOME;GTK;Utility; +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Maps; +DBusActivatable=true +MimeType=application/vnd.geo+json;x-scheme-handler/geo;application/vnd.google-earth.kml+xml;application/gpx+xml; +X-Geoclue-Reason=Allows your location to be shown on the map. +# Translators: Do NOT translate or transliterate this text (these are enum types)! +X-Purism-FormFactor=Workstation;Mobile; diff --git a/data/org.gnome.Maps.gschema.xml b/data/org.gnome.Maps.gschema.xml new file mode 100644 index 00000000..9fdf7c6a --- /dev/null +++ b/data/org.gnome.Maps.gschema.xml @@ -0,0 +1,95 @@ + + + + + + + + + + [0.0,0.0] + last viewed location + Coordinates of last viewed location. + + + 0 + zoom + Zoom level + + + "MapsStreetSource" + Map type + The type of map to display (street, aerial, etc.) + + + [768, 600] + Window size + Window size (width and height). + + + [] + Window position + Window position (X and Y). + + + true + Window maximized + Window maximization state + + + 20 + Maximum number of search results + Maximum number of search results from geocode search. + + + 50 + Number of recent places to store + Number of recently visited places to store. + + + 5 + Number of recent routes to store + Number of recently visited routes to store. + + + "EVERYONE" + Facebook check-in privacy setting + + Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF. + + + "public" + Foursquare check-in privacy setting + Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private. + + + false + Foursquare check-in Facebook broadcasting + Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated with the Foursquare account. + + + false + Foursquare check-in Twitter broadcasting + Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated with the Foursquare account. + + + "" + OpenStreetMap username or e-mail address + Indicates if the user has signed in to edit OpenStreetMap data. + + + 'pedestrian' + Last used transportation type for routing + + + false + Night mode + Whether the application is in night mode. + + + false + Use hybrid aerial tiles + Whether aerial tiles should use hybrid style (with labels). + + + diff --git a/data/org.gnome.Maps.service.in b/data/org.gnome.Maps.service.in new file mode 100644 index 00000000..f8a854f6 --- /dev/null +++ b/data/org.gnome.Maps.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.Maps +Exec=@pkgdatadir@/org.gnome.Maps --gapplication-service diff --git a/data/osm-types.json b/data/osm-types.json new file mode 100644 index 00000000..8f181e98 --- /dev/null +++ b/data/osm-types.json @@ -0,0 +1,19067 @@ +{ + "aeroway/aerodrome": { + "title": { + "C": "Airport", + "af": "Lughawe", + "ar": "مطار", + "ast": "Aeropuertu", + "bg": "Летище", + "bn": "বিমানবন্দর", + "bs": "Aerodrom", + "ca": "Aeroport", + "ckb": "فڕۆکەخانە", + "cs": "Letiště", + "da": "Lufthavn", + "de": "Flughafen", + "el": "Αεροδρόμιο", + "en-GB": "Airport", + "en": "Airport", + "eo": "Aerodromo", + "es": "Aeropuerto", + "et": "Lennujaam", + "eu": "Aireportu", + "fa": "فرودگاه", + "fi": "Lentokenttä", + "fr": "Aéroport", + "gl": "Aeroporto", + "he": "נמל תעופה", + "hr": "Zračna luka", + "hu": "Repülőtér", + "hy": "Օդանավակայան", + "id": "Bandar udara", + "is": "Flugvöllur", + "it": "Aeroporto", + "ja": "空港", + "kn": "ವಿಮಾನ ನಿಲ್ದಾಣ", + "ko": "공항", + "lt": "Oro uostas", + "lv": "Lidosta", + "mk": "Аеродром", + "nl": "Luchthaven", + "no": "Flyplass", + "pl": "Lotnisko", + "pt-BR": "Aeroporto ou aeródromo", + "pt": "Aeroporto", + "ro": "Aeroport", + "ru": "Аэропорт", + "sk": "Letisko", + "sl": "Letališče", + "sr": "Аеродром", + "sv": "Flygplats", + "ta": "விமானநிலையம்", + "te": "విమానాశ్రయం", + "tr": "Havaalanı", + "uk": "Аеропорт", + "vi": "Sân bay", + "yue": "飛機場", + "zh-CN": "机场", + "zh-HK": "機場", + "zh-TW": "機場", + "zh": "机场" + } + }, + "aeroway/apron": { + "title": { + "C": "Airport Apron", + "cs": "Odbavovací plocha", + "de": "Vorfeld", + "en": "Airport Apron", + "eo": "Aviadil-parkumejo", + "es": "Plataforma de estacionamiento de aeronaves", + "fa": "صحن فرودگاه", + "fi": "Lentokentän asemataso", + "fr": "Aire de stationnement d'aéroport", + "gl": "Estacionamento aéreo", + "he": "רחבת חניית מטוסים", + "it": "Parcheggio Aeromobili", + "ja": "駐機場", + "ko": "공항 에이프런", + "mk": "Авионска постојка", + "nl": "Platform (vliegveld)", + "pl": "Płyta postojowa samolotów", + "pt-BR": "Plataforma de estacionamento", + "pt": "Plataforma de estacionamento", + "sr": "Авио-прилаз", + "sv": "Parkering för flygplan (Apron)", + "tr": "Havaalanı Apronu", + "uk": "Перон", + "vi": "Thềm đế Máy bay", + "zh-CN": "机场停机坪", + "zh-TW": "機場停機坪" + } + }, + "aeroway/gate": { + "title": { + "C": "Airport Gate", + "ar": "بوابة المطار", + "ast": "Puerta de terminal", + "ca": "Porta d'aeroport", + "cs": "Letištní gate", + "da": "Lufthavnsgate", + "de": "Flugsteig", + "el": "Πύλη Αεροδρομίου", + "en-GB": "Airport Gate", + "en": "Airport Gate", + "eo": "Aerodroma enirejo", + "es": "Puerta de embarque", + "eu": "Aireportuko ate", + "fa": "دروازه فرودگاه", + "fi": "Lähtöportti", + "fr": "Porte d'embarquement", + "gl": "Porta de embarque", + "he": "שער נמל תעופה", + "hu": "Repülőtéri kapu", + "is": "Flugvallarhlið", + "it": "Gate aeroportuale", + "ja": "空港ゲート", + "ko": "공항 게이트", + "lv": "Lidostas vārti", + "mk": "Аеродромска порта", + "nl": "Luchthaven-gate", + "no": "Flyplassgate", + "pl": "Bramka na lotnisku", + "pt-BR": "Portão de embarque", + "pt": "Porta de embarque / desembarque", + "ru": "Выход на посадку", + "sk": "Letisková brána", + "sl": "Letališka vrata", + "sr": "Излаз за укрцавање", + "sv": "Gate", + "ta": "விமான நிலைய நுழைவாயில்", + "tr": "Kapı", + "uk": "Вихід на посадку", + "vi": "Cổng Sân bay", + "zh-CN": "登机口", + "zh-HK": "登機閘", + "zh-TW": "登機閘門" + } + }, + "aeroway/hangar": { + "title": { + "C": "Hangar", + "af": "Loods", + "ar": "حظيرة الطائرات", + "ast": "Hangar", + "bg": "Хангар", + "bs": "Hangar", + "ca": "Hàngar", + "cs": "Hangár", + "da": "Hangar", + "de": "Hangar", + "el": "Υπόστεγο Αεροσκαφών", + "en-GB": "Hangar", + "en": "Hangar", + "eo": "Hangaro", + "es": "Hangar", + "et": "Angaar", + "fa": "آشیانه هواپیما (بزرگ / فرودگاه)", + "fi": "Lentokonehalli", + "fr": "Hangar", + "gl": "Hangar", + "he": "הנגר", + "hr": "Hangar", + "hu": "Hangár", + "id": "Hanggar", + "is": "Flugskýli", + "it": "Hangar", + "ja": "航空機格納庫", + "ko": "격납고", + "lt": "Angaras", + "lv": "Angārs", + "mk": "Хангар", + "nl": "Hangar", + "no": "Hangar", + "pl": "Hangar", + "pt-BR": "Hangar", + "pt": "Hangar", + "ru": "Ангар", + "sk": "Hangár", + "sl": "Hangar", + "sr": "Хангар", + "sv": "Hangar", + "ta": "விமானங்கள் நிறுத்துமிடம்", + "tr": "Hangar", + "uk": "Ангар", + "vi": "Nhà Máy bay", + "yue": "飛機庫", + "zh-CN": "飞机库", + "zh-HK": "飛機庫", + "zh-TW": "機庫", + "zh": "机库" + } + }, + "aeroway/helipad": { + "title": { + "C": "Helipad", + "af": "Helipad", + "ar": "مهبط الهليكوبتر", + "ast": "Helipuertu", + "bg": "Хеликоптерна площадка", + "bn": "হেলিপ্যাড", + "bs": "Heliodrom", + "ca": "Heliport", + "cs": "Heliport", + "da": "Helikopterlandingsplads", + "de": "Hubschrauberlandeplatz", + "el": "Ελικοδρόμιο", + "en-GB": "Helipad", + "en": "Helipad", + "eo": "Surteriĝejo helikoptera", + "es": "Helipuerto", + "et": "Kopteriväljak", + "fa": "محل فرود هلی کوپتر", + "fi": "Helikopterikenttä", + "fr": "Héliport", + "gl": "Heliporto", + "he": "מנחת מסוקים", + "hr": "Heliodrom", + "hu": "Helikopter-leszállóhely", + "hy": "Ուղաթիռային հրապարակ", + "id": "Helipad", + "is": "Þyrlupallur", + "it": "Elisuperficie", + "ja": "ヘリパッド", + "ko": "헬기 착륙장", + "lt": "Sraigtasparnių aikštelė", + "lv": "Helikopteru nosēšanās laukums", + "mk": "Хеликоптерско слетувалиште", + "nl": "Helipad", + "no": "Helikopterlandingsplass", + "pl": "Lądowisko dla helikopterów", + "pt-BR": "Heliponto", + "pt": "Heliponto", + "ru": "Вертолётная площадка", + "sk": "Heliport", + "sl": "Heliodrom", + "sr": "Хелиодром", + "sv": "Helikopterplatta", + "ta": "சிறு விமானம் இறங்கும் தளம்", + "tr": "Helikopter Pisti", + "uk": "Вертолітний майданчик", + "vi": "Sân bay Trực thăng", + "yue": "直升機坪", + "zh-CN": "直升机场", + "zh-HK": "直升機坪", + "zh-TW": "直昇機坪", + "zh": "直升机场" + } + }, + "aeroway/holding_position": { + "title": { + "C": "Aircraft Holding Position", + "cs": "vyčkávací místo letadla", + "de": "Rollhalteort", + "en": "Aircraft Holding Position", + "eo": "Aviadila atendejo", + "es": "Posición de espera de aviones", + "fa": "موقعیت توقف و انتظار هواپیما", + "fi": "Lentokoneen pysähtymiskohta", + "fr": "Point d’attente avion", + "gl": "Punto de espera de avións", + "he": "תבנית ריתוק כלי טיס", + "it": "Circuito di attesa per aeromobili", + "ja": "停止ポイント(空港)", + "mk": "Чекална положба на леталото", + "nl": "Vliegtuigwachtplaats", + "pl": "Punkt oczekiwania dla samolotu", + "pt-BR": "Posição de retenção de aeronaves", + "pt": "Ponto de espera de avião", + "sv": "Väntplats för flygplan", + "tr": "Hava aracı tutma pozisyonu", + "uk": "Стоп-лінія", + "vi": "Vị trí Chờ đợi dành cho Máy bay", + "zh-CN": "跑道等待位置", + "zh-TW": "飛機停靠點" + } + }, + "aeroway/jet_bridge": { + "title": { + "C": "Jetway", + "cs": "Nástupní most", + "de": "Fluggastbrücke", + "en": "Jetway", + "eo": "Ponto flugstacio - aviadilo", + "es": "Pasarela de acceso a aeronaves", + "fa": "راه هوایی", + "fi": "Matkustajasilta", + "fr": "Passerelle aéroportuaire", + "gl": "Ponte de embarque", + "he": "גשר עלייה למטוס", + "it": "Manicotto d’imbarco", + "ja": "ボーディング・ブリッジ", + "ko": "탑승교", + "mk": "Авионски мост", + "nl": "Vliegtuigslurf", + "pl": "Rękaw lotniczy", + "pt-BR": "Jetway", + "pt": "Ponte de embarque", + "sk": "Nástupný tunel", + "sv": "Ombordstigningsbrygga", + "tr": "Jet yolu", + "uk": "Посадковий рукав", + "vi": "Cầu Hành khách", + "zh-CN": "登机廊桥", + "zh-TW": "空橋" + } + }, + "aeroway/parking_position": { + "title": { + "C": "Aircraft Parking Position", + "cs": "parkovací místo letadla", + "de": "Flugzeugparkposition", + "el": "Θέση Στάθμευσης Αεροσκάφους", + "en": "Aircraft Parking Position", + "eo": "Aviadil-parkumejo (detala pozicio)", + "es": "Posición de estacionamiento de aviones", + "fa": "محل قرارگیری پارکینگ هواپیما", + "fi": "Lentokoneen pysäköintikohta", + "fr": "Voie de garage pour avion", + "gl": "Estacionamento de transportes aéreos", + "he": "מיקום חניית כלי טיס", + "it": "Posizione di parcheggio per aeromobili", + "ja": "駐機ポイント(空港)", + "mk": "Паркирна положба на леталото", + "nl": "Vliegtuigparkeerplaats", + "no": "Luftfartøy Parkering Posisjon", + "pl": "Miejsce postoju samolotu", + "pt-BR": "Posição de estacionamento de aeronaves", + "pt": "Área de estacionamento de avião", + "sv": "Parkeringsplats för flygplan", + "tr": "Havaaracı Park Pozisyonu", + "uk": "Місце стоянки літака", + "vi": "Chỗ Đậu Máy bay", + "zh-CN": "停机位", + "zh-TW": "停機坪" + } + }, + "aeroway/runway": { + "title": { + "C": "Runway", + "af": "Aanloopbaan", + "ar": "مدرج الطائر", + "ast": "Pista", + "bg": "Летателна писта", + "bs": "Pista", + "ca": "Pista d'enlairament/aterratge", + "cs": "Vzletová a přistávací dráha", + "da": "Landingsbane", + "de": "Start- und Landebahn", + "dv": "އެއާރޕޯޓް ރަންވޭ", + "el": "Διάδρομος Αεροδρομίου", + "en-GB": "Runway", + "en": "Runway", + "eo": "Aviokurejo", + "es": "Pista de aterrizaje", + "et": "Lennurada", + "fa": "باند فرودگاه", + "fi": "Kiitorata", + "fr": "Piste d’atterrissage", + "gl": "Pista de aeroporto", + "he": "מסלול המראה", + "hr": "Uzletno-sletna staza", + "hu": "Kifutópálya", + "id": "Landas pacu", + "is": "Flugbraut", + "it": "Pista di decollo/atterraggio", + "ja": "滑走路", + "kn": "ಓಡುದಾರಿ", + "ko": "활주로", + "lt": "Pakilimo takas", + "lv": "Skrejceļš", + "mk": "Писта", + "nl": "Startbaan", + "no": "Rullebane", + "pl": "Pas startowy", + "pt-BR": "Pista de pouso e decolagem", + "pt": "Pista de aterragem e descolagem", + "ru": "Взлётная полоса", + "sk": "Vzletová dráha", + "sl": "Vzletno-pristajalna steza", + "so": "Gegada diyaaradaha", + "sr": "Узлетиште", + "sv": "Start- och landningsbana", + "ta": "ஓடுதளம்", + "tr": "Uçak Pisti", + "uk": "Злітно-посадкова смуга", + "vi": "Đường băng", + "yue": "跑道", + "zh-CN": "机场跑道", + "zh-HK": "跑道", + "zh-TW": "機場跑道", + "zh": "跑道" + } + }, + "aeroway/spaceport": { + "title": { + "C": "Spaceport", + "cs": "kosmodrom", + "da": "Rumhavn", + "de": "Weltraumbahnhof", + "el": "Διαστημοδρόμιο", + "en": "Spaceport", + "eo": "Kosmodromo", + "es": "Puerto espacial", + "et": "Kosmodroom", + "fa": "پایگاه فضایی", + "fi": "Laukaisukeskus", + "fr": "Centre spatial", + "gl": "Cosmódromo", + "he": "מתקן שיגור", + "hu": "Űrállomás", + "it": "Spazioporto", + "ja": "宇宙船基地", + "ko": "우주 공항", + "mk": "Космодром", + "nl": "Ruimtehaven", + "no": "Rakettbase", + "pl": "Port kosmiczny", + "pt-BR": "Base de lançamento espacial", + "pt": "Cosmódromo", + "ru": "Космодром", + "sr": "Свемирска лука", + "sv": "Rymdbas", + "tr": "Uzay İstasyonu", + "uk": "Космопорт", + "vi": "Sân bay Vũ trụ", + "zh-CN": "航天港", + "zh-TW": "太空發射中心" + } + }, + "aeroway/taxiway": { + "title": { + "C": "Taxiway", + "af": "Rolbaan", + "ar": "طريق للمدرج", + "ast": "Cai de rodaxe", + "bg": "Рольожка", + "bs": "Staza za vožnju", + "ca": "Plataforma de rodada", + "cs": "Pojezdová dráha", + "da": "Taxiway", + "de": "Rollweg", + "el": "Τροχιόδρομος", + "en-GB": "Taxiway", + "en": "Taxiway", + "eo": "Aŭtokur-strato", + "es": "Pista de rodaje", + "et": "Ruleerimistee", + "fa": "خزشراه", + "fi": "Rullaustie", + "fr": "Taxiway", + "gl": "Pista de rodaxe", + "he": "מסלול הסעה", + "hr": "Rulnica", + "hu": "Gurulóút", + "id": "Landas hubung", + "is": "Akbraut flugvéla", + "it": "Pista di rullaggio", + "ja": "航空機誘導路", + "ko": "유도로", + "lv": "Manevrēšanas ceļš", + "mk": "Воздухопловен приод", + "nl": "Taxibaan", + "no": "Taxibane", + "pl": "Droga kołowania", + "pt-BR": "Pista de taxiamento", + "pt": "Via de circulação", + "ru": "Рулёжная дорожка", + "sk": "Rolovacia dráha", + "sl": "Vozna steza", + "sr": "Полетно-слетна стаза", + "sv": "Taxibana", + "tr": "Taksi Yolu", + "uk": "Руліжна доріжка", + "vi": "Đường lăn", + "yue": "滑行道", + "zh-CN": "滑行道", + "zh-HK": "滑行道", + "zh-TW": "滑行道", + "zh": "滑行道" + } + }, + "aeroway/terminal": { + "title": { + "C": "Airport Terminal", + "ar": "محطة المطار", + "ast": "Terminal d'aeropuertu", + "ca": "Terminal d'aeroport", + "cs": "Letištní terminál", + "da": "Lufthavnsterminal", + "de": "Flughafenterminal", + "dv": "އެއާރޕޯޓް ގިމަތަ", + "el": "Σταθμός Αεροναυτιλίας", + "en-GB": "Airport Terminal", + "en": "Airport Terminal", + "eo": "Flugstacio", + "es": "Terminal de aeropuerto", + "et": "Lennuterminal", + "eu": "Aireportuko Terminal", + "fa": "پایانه فرودگاه", + "fi": "Lentokenttäterminaali", + "fr": "Terminal d'aéroport", + "gl": "Terminal de aeroporto", + "he": "טרמינל שדה תעופה", + "hu": "Repülőtéri terminál", + "is": "Flugstöð", + "it": "Terminal aeroportuale", + "ja": "空港ターミナル", + "ko": "공항 터미널", + "lv": "Lidostas Terminālis", + "mk": "Аеродромски терминал", + "nl": "Luchthaventerminal", + "no": "Flyplassterminal", + "pl": "Terminal pasażerski", + "pt-BR": "Terminal de aeroporto", + "pt": "Terminal de aeroporto", + "ru": "Терминал аэропорта", + "sk": "Letiskový termnál", + "sl": "Letališki terminal", + "so": "Gagida Dayaaradeed", + "sr": "Аеродромски терминал", + "sv": "Flygterminal", + "tr": "Terminal", + "uk": "Термінал", + "vi": "Ga Sân bay", + "zh-CN": "航站楼", + "zh-HK": "機場客運大樓", + "zh-TW": "機場航廈" + } + }, + "aeroway/windsock": { + "title": { + "C": "Windsock", + "cs": "větrný rukáv", + "de": "Windsack", + "en": "Windsock", + "eo": "Ventmontrilo (maniko)", + "es": "Manga de viento", + "et": "Tuulekott", + "fa": "بادنمای کیسه‌ای", + "fi": "Tuulisukka", + "fr": "Manche à air", + "gl": "Manga de vento", + "he": "שרוול רוח", + "hu": "Szélzsák", + "it": "Manica a vento", + "ja": "吹流し", + "mk": "Ветроказен ракав", + "nl": "Windzak", + "no": "Vindpølse", + "pl": "Rękaw (wiatrowskaz)", + "pt-BR": "Biruta", + "pt": "Manga de vento", + "sk": "Veterný rukáv", + "sr": "Ветроказ", + "sv": "Vindstrut", + "tr": "Rüzgâr hortumu", + "uk": "Вітровказ", + "vi": "Ống gió", + "zh-CN": "风向袋", + "zh-TW": "風向袋" + } + }, + "amenity/bus_station": { + "title": { + "C": "Bus Station / Terminal", + "ar": "محطة حافلات", + "ast": "Estación d'autobuses / Terminal", + "ca": "Estació d'autobusos", + "cs": "Autobusové nádraží / terminál", + "da": "Busstation/rutebilstation", + "de": "Busbahnhof / Busterminal", + "el": "Τερματικός Σταθμός Λεωφορείου", + "en-GB": "Bus Station / Terminal", + "en": "Bus Station / Terminal", + "eo": "Aŭtobus-stacio", + "es": "Estación / Terminal de bus", + "eu": "Autobus geltoki / Terminal", + "fa": "پایانه اتوبوس / ترمینال", + "fi": "Linja-autoasema/-terminaali", + "fr": "Gare routière", + "gl": "Estación de autobuses", + "he": "תחנת אוטובוס", + "hr": "Autobusni kolodvor", + "hu": "Buszpályaudvar", + "is": "Strætisvagnastöð / Umferðarmiðstöð", + "it": "Stazione /Terminal degli autobus", + "ja": "バスターミナル(旧:単独)", + "ko": "버스 터미널", + "lv": "Autobusu pietura / Terminālis", + "mk": "Автобуска станица / терминал", + "nl": "Busstation", + "no": "Busstasjon/-terminal", + "pl": "Dworzec autobusowy", + "pt-BR": "Terminal / Estação de ônibus", + "pt": "Estação / Terminal de autocarros", + "ru": "Автобусная станция/терминал", + "sk": "Autobusová zastávka / Terminál", + "sl": "Avtobusna postaja / Terminal", + "sq": "Stacioni i Autobusave", + "sv": "Busstation / Bussterminal", + "ta": "பேருந்து நிலையம் / முனையம்", + "tr": "Otobüs Durağı / Terminali", + "uk": "Автостанція/Термінал", + "vi": "Ga Xe buýt", + "zh-CN": "公交车站 / 枢纽站", + "zh-HK": "巴士總站", + "zh-TW": "客運站" + } + }, + "amenity/coworking_space": { + "title": { + "C": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Sdílený pracovní prostor", + "da": "Kontorfællesskab", + "de": "Coworking-Räumlichkeiten", + "el": "Χώρος Συνεργατών", + "en-GB": "Coworking Space", + "en": "Coworking Space", + "eo": "Loko por samloka laborado (ang. coworking)", + "es": "Espacio de trabajo compartido", + "et": "Ühiskasutatavad tööruumid", + "eu": "Coworking espazioa", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de bureaux partagés, coworking", + "gl": "Espacio de cotraballo", + "he": "מתחם עבודה שיתופי", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Spazio di Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "mk": "Споделен работен простор", + "nl": "Coworking-kantoor", + "no": "Medarbeider Rom", + "pl": "Coworking", + "pt-BR": "Espaço de Coworking", + "pt": "Espaço de trabalho partilhado", + "ru": "Коворкинг", + "sk": "Priestory pre coworking", + "sl": "Prostor za sodelanje", + "sr": "Заједнички радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間" + } + }, + "amenity/embassy": { + "title": { + "C": "Embassy", + "af": "Ambassade", + "ar": "سفارة", + "ast": "Embaxada", + "bg": "Посолство", + "bn": "দুতাবাস", + "bs": "Ambasada", + "ca": "Ambaixada", + "cs": "Velvyslanectví", + "da": "Ambassade", + "de": "Botschaft", + "el": "Πρεσβεία", + "en-GB": "Embassy", + "en": "Embassy", + "eo": "Ambasadejo", + "es": "Embajada", + "et": "Saatkond", + "eu": "Enbaxada", + "fa": "سفارت خانه", + "fi": "Suurlähetystö", + "fr": "Ambassade", + "gl": "Embaixada", + "he": "שגרירות", + "hr": "Ambasada", + "hu": "Külképviselet", + "id": "Kedutaan besar", + "is": "Sendiráð", + "it": "Ambasciata", + "ja": "大使館", + "kn": "ರಾಯಭಾರ", + "ko": "대사관", + "lt": "Ambasada", + "lv": "Vēstniecība", + "mk": "Амбасада", + "ms": "Kedutaan", + "nl": "Ambassade", + "no": "Ambassade", + "pl": "Ambasada/konsulat", + "pt-BR": "Embaixada", + "pt": "Embaixada", + "ro": "Ambasadă", + "ru": "Посольство", + "sk": "Veľvyslanectvo", + "sl": "Veleposlaništvo", + "sr": "Амбасада", + "sv": "Ambassad", + "ta": "தூதரகம்", + "tr": "Büyükelçilik", + "uk": "Амбасада", + "vi": "Tòa đại sứ", + "yue": "大使館", + "zh-CN": "使馆", + "zh-HK": "大使館", + "zh-TW": "使館", + "zh": "使馆" + } + }, + "amenity/ferry_terminal": { + "title": { + "C": "Ferry Terminal", + "cs": "Terminál přívozu/trajektu", + "de": "Schiffsanleger", + "el": "Σταθμός Επιβατών Προθμείου", + "en": "Ferry Terminal", + "eo": "Pramstacio", + "es": "Terminal de ferry", + "fa": "ترمینال کشتی", + "fi": "Laivaterminaali", + "fr": "Terminal de ferry", + "gl": "Terminal de transbordadores", + "he": "מסוף מעבורת", + "it": "Terminal Traghetti", + "ja": "フェリー乗り場", + "ko": "페리 터미널", + "mk": "Траектен терминал", + "nl": "Veerbootterminal", + "pl": "Terminal promowy", + "pt-BR": "Terminal da balsa", + "pt": "Terminal de ferry", + "ru": "Причал для паромов", + "sk": "Trajektový terminál", + "sr": "Терминал за трајект", + "sv": "Färjeterminal", + "tr": "Feribot Terminali", + "uk": "Поромний термінал", + "vi": "Nhà ga Phà", + "zh-CN": "轮渡码头", + "zh-TW": "渡輪碼頭" + } + }, + "amenity/nursing_home": { + "title": { + "C": "Nursing Home", + "ar": "دار التمريض", + "ca": "Llar d'avis", + "cs": "Domov pro seniory/pečovatelský ústav", + "da": "Plejehjem", + "de": "Pflegeheim", + "el": "Κλινική", + "en-GB": "Nursing Home", + "en": "Nursing Home", + "eo": "Domo de permanenta zorgado", + "es": "Residencia de ancianos", + "et": "Hoolduskodu", + "fa": "آسایشگاه", + "fi": "Hoitokoti", + "fr": "Maison de repos", + "gl": "Residencia de anciáns", + "he": "בית אבות", + "hu": "Ápolóotthon", + "is": "Hjúkrunarheimili", + "it": "Residenza Sanitaria Assistenziale (RSA)", + "ja": "介護施設", + "ko": "요양원", + "mk": "Старечки дом", + "nl": "Verpleeghuis", + "no": "Gamlehjem", + "pl": "Dom spokojnej starości", + "pt-BR": "Casa de Repouso", + "pt": "Centro Geriátrico", + "ru": "Дом престарелых/Дом инвалидов (устаревший тег)", + "sk": "Ošetrovateľské centum", + "sl": "Dom za bolniško nego", + "sr": "Старачки дом", + "sv": "Vårdhem", + "tr": "Bakım Evi", + "uk": "Будинок престарілих", + "vi": "Viện Dưỡng lão", + "zh-CN": "疗养院", + "zh-HK": "護養院", + "zh-TW": "養老院" + } + }, + "amenity/recycling": { + "title": { + "C": "Recycling Container", + "ar": "إعادة التدوير", + "ca": "Reciclatge", + "cs": "Recyklace", + "de": "Recycling", + "el": "Ανακύκλωση", + "en": "Recycling", + "eo": "Recikligejo", + "es": "Reciclaje", + "eu": "Birziklatze", + "fa": "بازیافت", + "fi": "Kierrätys", + "fr": "Point de recyclage", + "gl": "Reciclaxe", + "he": "מיחזור", + "hr": "Recikliranje", + "hu": "Szelektív hulladékgyűjtő", + "is": "Endurvinnsla", + "it": "Riciclaggio", + "ja": "リサイクル施設", + "ko": "재활용", + "mk": "Рециклажа", + "nl": "Recycling", + "no": "Resirkulering", + "pl": "Przetwarzanie odpadów", + "pt-BR": "Reciclagem", + "pt": "Reciclagem", + "ru": "Вторичное сырьё", + "sk": "Recyklovanie", + "sl": "Recikliranje", + "sr": "Рециклирање", + "sv": "Återvinning", + "tr": "Geri Dönüşüm", + "uk": "Переробка вторсировини", + "vi": "Tái chế", + "zh-CN": "资源回收设施", + "zh-HK": "回收設施", + "zh-TW": "回收" + } + }, + "amenity/animal_boarding": { + "title": { + "C": "Animal Boarding Facility", + "ar": "منشأة رعاية حيوانات", + "ast": "Instalación d'embarque d'animales", + "ca": "Instal·lació d'embarcament d'animals", + "cs": "Hotel pro zvířata", + "da": "Dyrepension", + "de": "Tierpension", + "el": "Επιθεώρηση Ζώων", + "en-GB": "Animal Boarding Facility", + "en": "Animal Boarding Facility", + "eo": "Hotelo (prizorgejo) por hejmbestoj", + "es": "Alojamiento de animales", + "fa": "امکانات پانسیون حیوانات", + "fi": "Lemmikkihoitola", + "fr": "Plateforme de chargement d'animaux", + "gl": "Aloxamento de animais", + "he": "פנסיון", + "hu": "Állatpanzió", + "is": "Dýrahótel", + "it": "Pensione per animali", + "ja": "ペットホテル", + "ko": "동물 기숙 시설", + "mk": "Престојувалиште за животни", + "nl": "Dierenpension", + "pl": "Hotel dla zwierząt", + "pt-BR": "Hotel para animais", + "pt": "Hotel para animais", + "ru": "Передержка животных", + "sk": "Opatrovanie zvierat", + "sl": "Živalski hotel", + "sv": "Djurhotell", + "tr": "Yatılı Hayvan Bakım Yeri", + "uk": "Готель для тварин", + "vi": "Khách sạn Thú cưng", + "zh-CN": "动物寄养机构", + "zh-HK": "寵物酒店", + "zh-TW": "寵物度假村" + } + }, + "amenity/animal_breeding": { + "title": { + "C": "Animal Breeding Facility", + "ar": "منشأة تربية وبيع حيوانات", + "ast": "Instalación d'alimentación d'animales", + "ca": "Instal·lació de reproducció d'animals", + "cs": "Chovná stanice", + "da": "Dyreforsøgsklinik", + "de": "Tierzucht", + "el": "Εκτροφείο", + "en-GB": "Animal Breeding Facility", + "en": "Animal Breeding Facility", + "eo": "Bredejo", + "es": "Criadero de animales", + "fa": "امکانات پرورش حیوانات", + "fi": "Eläinten ruokintapaikka", + "fr": "Installation d'élevage d'animaux", + "gl": "Granxa de animais", + "he": "מתקן לגידול לבעלי חיים", + "hu": "Állattenyésztő", + "is": "Dýraræktun", + "it": "Allevamento", + "ja": "動物繁殖施設", + "ko": "동물 사육 시설", + "mk": "Размножувалиште на животни", + "nl": "Fokkerij", + "pl": "Hodowla zwierząt", + "pt-BR": "Estabelecimento para reprodução de animais", + "pt": "Instalação para reprodução de animais", + "ru": "Питомник", + "sk": "Chovateľská stanica", + "sl": "Središče za vzrejo živali", + "sv": "Djuruppfödning", + "tr": "Hayvan Islah Yeri", + "uk": "Розплідник тварин", + "vi": "Trại Nuôi Thú", + "zh-CN": "动物饲养繁育机构", + "zh-HK": "動物繁殖場", + "zh-TW": "動物繁殖場" + } + }, + "amenity/animal_shelter": { + "title": { + "C": "Animal Shelter", + "ar": "مأوى حيوانات", + "ast": "Refuxu d'animales", + "ca": "Refugi d'animals", + "cs": "Zvířecí útulek", + "da": "Dyrehjem", + "de": "Tierheim", + "el": "Καταφύγιο Ζώων", + "en-GB": "Animal Shelter", + "en": "Animal Shelter", + "eo": "Azilo por bestoj", + "es": "Refugio de animales", + "fa": "پناهگاه حیوانات", + "fi": "Eläinhoitola", + "fr": "Refuge animalier", + "gl": "Abeiro de animais", + "he": "בית מחסה לחיות מחמד", + "hu": "Állatmenhely", + "is": "Dýraathvarf", + "it": "Rifugio per animali", + "ja": "動物保護施設", + "ko": "동물 보호소", + "lt": "Gyvūnų prieglauda", + "lv": "Dzīvnieku patversme", + "mk": "Засолниште за животни", + "nl": "Dierenasiel", + "no": "Dyrehjem", + "pl": "Schronisko dla zwierząt", + "pt-BR": "Abrigo de animais", + "pt": "Abrigo para animais", + "ru": "Приют для животных", + "sk": "Útulok pre zvieratá", + "sl": "Zavetišče za živali", + "sr": "Азил за животиње", + "sv": "Djurhem", + "tr": "Hayvan Barinağı", + "uk": "Притулок для тварин", + "vi": "Trạm Cứu hộ Thú cưng", + "zh-CN": "动物收容救助所", + "zh-HK": "動物收容中心", + "zh-TW": "動物收容中心" + } + }, + "amenity/arts_centre": { + "title": { + "C": "Arts Center", + "ar": "مركز فنون", + "ast": "Centru d'arte", + "bn": "শিল্প কেন্দ্র", + "bs": "Centar za umjetnost", + "ca": "Centre artístic", + "cs": "Umělecké centrum", + "da": "Kunstcenter", + "de": "Kunstzentrum", + "el": "Κέντρο Καλών Τεχνών", + "en-AU": "Arts Centre", + "en-GB": "Arts Centre", + "en": "Arts Center", + "eo": "Belart-centro", + "es": "Centro de Arte", + "et": "Kunstide keskus", + "eu": "Arte Zentro", + "fa": "مرکز هنری", + "fi": "Taidekeskus", + "fr": "Centre artistique et culturel", + "gl": "Centro de arte", + "he": "מרכז אומנויות", + "hr": "Umjetnički paviljon", + "hu": "Művészeti központ", + "id": "Pusat Kesenian", + "is": "Listamiðstöð", + "it": "Centro Culturale", + "ja": "アートセンター", + "ko": "아트 센터", + "lt": "Menų centras", + "lv": "Mākslas Centrs", + "mk": "Дом на уметноста", + "nl": "Cultureel centrum", + "no": "Kunst Senter", + "pl": "Centrum artystyczne", + "pt-BR": "Centro cultural", + "pt": "Centro de artes", + "ro": "Centru de Artă", + "ru": "Центр Искусств", + "sk": "Galéria umenia", + "sl": "Umetniško središče", + "sr": "Уметнички центар", + "sv": "Konstcenter", + "ta": "கலையரங்கம்", + "tr": "Sanat Merkezi", + "uk": "Мистецький центр", + "vi": "Trung tâm Nghệ thuật", + "yue": "美術館", + "zh-CN": "艺术中心", + "zh-HK": "美術館", + "zh-TW": "藝文中心" + } + }, + "amenity/atm": { + "title": { + "C": "ATM", + "af": "ATM", + "ar": "صراف آلي", + "ast": "Caxeru automáticu", + "bg": "Банкомат", + "bn": "এটিএম", + "bs": "Bankomat", + "ca": "Caixer automàtic", + "cs": "Bankomat", + "da": "Pengeautomat", + "de": "Geldautomat", + "el": "ATM", + "en-GB": "Cash Machine", + "en": "ATM", + "eo": "Bankaŭtomato", + "es": "Cajero automático", + "et": "Pangaautomaat", + "eu": "ATM", + "fa": "دستگاه خودپرداز", + "fi": "Pankkiautomaatti", + "fr": "Distributeur de billets", + "gl": "Caixeiro automático", + "he": "כספומט", + "hr": "Bankomat", + "hu": "Bankautomata", + "id": "ATM", + "is": "Hraðbanki", + "it": "Bancomat", + "ja": "ATM", + "kn": "ಎಟಿಎಮ್", + "ko": "ATM", + "lt": "Bankomatas", + "lv": "Bankomāts", + "mk": "Банкомат", + "nl": "Bankautomaat", + "nn": "Minibank", + "no": "Minibank", + "pl": "Bankomat", + "pt-BR": "Caixa eletrônico", + "pt": "Multibanco", + "ro": "Bancomat", + "ru": "Банкомат", + "sk": "Bankomat", + "sl": "Bankomat", + "sr": "Банкомат", + "sv": "Uttagsautomat", + "ta": "ஏ.டி.எம்", + "tr": "ATM", + "uk": "Банкомат", + "vi": "Máy Rút tiền", + "yue": "提款機", + "zh-CN": "ATM机", + "zh-HK": "提款機", + "zh-TW": "自動櫃員機", + "zh": "自动柜员机(ATM)。" + } + }, + "amenity/bank": { + "title": { + "C": "Bank", + "af": "Bank", + "ar": "بنك", + "ast": "Bancu", + "bg": "Банка", + "bn": "ব্যাংক", + "bs": "Banka", + "ca": "Banc", + "ckb": "بانک", + "cs": "Banka", + "da": "Bank", + "de": "Bank-Filiale", + "dv": "ބޭންކު", + "el": "Τράπεζα", + "en-GB": "Bank", + "en": "Bank", + "eo": "Bankejo", + "es": "Banco", + "et": "Pank", + "eu": "Banku", + "fa": "بانک", + "fi": "Pankki", + "fr": "Banque", + "gl": "Banco", + "he": "בנק", + "hr": "Banka", + "hu": "Bank", + "hy": "Բանկ", + "id": "Bank", + "is": "Banki", + "it": "Banca", + "ja": "銀行", + "kn": "ಬ್ಯಾಂಕ್", + "ko": "은행", + "lt": "Bankas", + "lv": "Banka", + "mk": "Банка", + "ne": "बैंक", + "nl": "Bank (financieel)", + "no": "Bank", + "pl": "Bank", + "pt-BR": "Banco", + "pt": "Banco", + "ro": "Banca", + "ru": "Банк", + "sk": "Banka", + "sl": "Banka", + "so": "Bangi", + "sr": "Банка", + "sv": "Bank", + "ta": "வங்கி", + "te": "బ్యాంకు", + "tr": "Banka", + "uk": "Банк", + "vi": "Ngân hàng", + "yue": "銀行", + "zh-CN": "银行", + "zh-HK": "銀行", + "zh-TW": "銀行", + "zh": "银行" + } + }, + "amenity/bar": { + "title": { + "C": "Bar", + "af": "Kroeg", + "ar": "حانة", + "ast": "Bar", + "bg": "Бар", + "bn": "পানশালা", + "bs": "Bar", + "ca": "Bar de copes", + "ckb": "مەیخانە", + "cs": "Bar", + "da": "Bar", + "de": "Bar", + "dv": "ބާރ", + "el": "Μπαρ", + "en-GB": "Bar", + "en": "Bar", + "eo": "Drinkejo", + "es": "Bar (latam) / Bar de copas (es)", + "et": "Baar", + "eu": "Taberna", + "fa": "بار", + "fi": "Baari", + "fr": "Bar", + "gl": "Bar de copas", + "he": "בר", + "hr": "Bar", + "hu": "Bár", + "hy": "Բար", + "id": "Bar", + "is": "Knæpa", + "it": "Bar", + "ja": "バー", + "ko": "바", + "lt": "Baras", + "lv": "Bārs", + "mk": "Бар", + "ne": "बार", + "nl": "Bar", + "no": "Bar", + "pl": "Bar alkoholowy", + "pt-BR": "Bar requintado / Drinqueria", + "pt": "Bar", + "ro": "Bar", + "ru": "Бар", + "sk": "Bar", + "sl": "Bar", + "so": "Makhaayad", + "sr": "Бар", + "sv": "Bar", + "ta": "மதுபானக் கடை", + "tr": "Bar", + "uk": "Бар", + "vi": "Quán rượu", + "yue": "酒吧", + "zh-CN": "酒吧", + "zh-HK": "酒吧", + "zh-TW": "酒吧", + "zh": "酒吧" + } + }, + "amenity/bbq": { + "title": { + "C": "Barbecue/Grill", + "ar": "مكان مخصص للشواء", + "ast": "Barbacoa/Asador", + "ca": "Barbacoa/graella", + "cs": "Gril", + "da": "Barbecue/Grill", + "de": "Grillplatz", + "el": "Ψησταριά/Σκάρα", + "en-GB": "Barbecue/Grill", + "en": "Barbecue/Grill", + "eo": "Rostilo", + "es": "Asador/Parrilla", + "et": "Väligrill", + "eu": "Barbakoa/Parrila", + "fa": "باربیکیو / گریل", + "fi": "Grilli", + "fr": "Barbecue, grill", + "gl": "Barbacoa/Grella", + "he": "מנגל", + "hr": "Roštilj", + "hu": "Közösségi grillező - szallonasütő", + "id": "Barbekyu/Pemanggang", + "is": "Grill", + "it": "Barbecue/Griglia", + "ja": "バーベキュー場/グリル", + "ko": "바비큐/그릴", + "lt": "Barbekiu/Grilis", + "lv": "Barbekjū/Grills", + "mk": "Скара", + "nl": "Barbecue/Grill", + "no": "Grill", + "pl": "Grill", + "pt-BR": "Churrasqueira", + "pt": "Grelhador", + "ru": "Барбекю/Гриль", + "sk": "Stanovište pre gril", + "sl": "Okrepčevalnica", + "sr": "Роштиљ/печењара", + "sv": "Grillplats/Grill", + "tr": "Mangal Restoranı", + "uk": "Барбекю/мангал", + "vi": "Vỉ nướng", + "zh-CN": "烧烤设施", + "zh-HK": "燒烤", + "zh-TW": "燒烤" + } + }, + "amenity/bench": { + "title": { + "C": "Bench", + "af": "Bankie", + "ar": "مقعد", + "ast": "Asientu", + "bg": "Пейка", + "bn": "বেঞ্চ", + "bs": "Klupa", + "ca": "Banc", + "cs": "Lavička", + "da": "Bænk", + "de": "Sitzbank", + "el": "Παγκάκι", + "en-GB": "Bench", + "en": "Bench", + "eo": "Benko", + "es": "Banco / Asiento", + "et": "Pink", + "eu": "Banku", + "fa": "نیمکت", + "fi": "Penkki", + "fr": "Banc", + "gl": "Banco", + "he": "ספסל", + "hr": "Klupa", + "hu": "Pad", + "id": "Bangku", + "is": "Bekkur", + "it": "Panchina", + "ja": "ベンチ", + "kn": "ನ್ಯಾಯಪೀಠ", + "ko": "벤치", + "lt": "Suolas", + "lv": "Sols", + "mk": "Клупа", + "nl": "Zitbank", + "no": "Benk", + "pl": "Ławka", + "pt-BR": "Assento", + "pt": "Banco", + "ro": "Bancă", + "ru": "Скамейка", + "sk": "Lavička", + "sl": "Klop", + "sr": "Клупа", + "sv": "Bänk", + "ta": "விசுப்பலகை", + "tr": "Bank", + "uk": "Лавка", + "vi": "Băng ghế", + "yue": "長椅", + "zh-CN": "长椅", + "zh-HK": "長椅", + "zh-TW": "長椅", + "zh": "长凳" + } + }, + "amenity/bicycle_parking": { + "title": { + "C": "Bicycle Parking", + "af": "Fietsparkering", + "ar": "موقف دراجات هوائية", + "ast": "Aparcaderu de bicicletes", + "bg": "Паркинг за велосипеди", + "bn": "সাইকেল পার্ক করার জায়গা", + "bs": "Parking bicikala", + "ca": "Aparcament per a bicicletes", + "ckb": "گەراجی پاسکیل", + "cs": "Parkování kol", + "da": "Cykelparkering", + "de": "Fahrradparkplatz", + "el": "Στάθμευση Ποδηλάτων", + "en-GB": "Bicycle Parking", + "en": "Bicycle Parking", + "eo": "Bicikla parkumejo", + "es": "Aparcamiento / estacionamiento de bicicletas", + "et": "Rattaparkla", + "eu": "Bizikletentzako Aparkalekua", + "fa": "پارکینگ دوچرخه", + "fi": "Pyöräpysäköinti", + "fr": "Parking à vélos", + "gl": "Aparcadoiro de bicicletas", + "he": "חניית אופניים", + "hr": "Parkiralište za bicikle", + "hu": "Kerékpártároló", + "hy": "Հեծանվային կայանատեղի", + "id": "Parkir Sepeda", + "is": "Hjólastæði", + "it": "Parcheggio biciclette", + "ja": "駐輪場", + "ko": "자전거 주차장", + "lt": "Dviračių stovėjimo aikštelė", + "lv": "Velo stāvvieta", + "mk": "Велосипедско паркиралиште", + "nl": "Fietsenstalling", + "no": "Sykkelparkering", + "pl": "Parking dla rowerów", + "pt-BR": "Bicicletário", + "pt": "Parque de bicicletas", + "ro": "Parcare biciclete", + "ru": "Велопарковка", + "sk": "Stojan pre bicykle", + "sl": "Parkirišče za kolesa", + "sr": "Бициклистички паркинг", + "sv": "Cykelparkering", + "ta": "ஈருருளை நிறுத்தகம்", + "tr": "Bisiklet Parkı", + "uk": "Велостоянка", + "vi": "Chỗ Đậu Xe đạp", + "yue": "泊單車處", + "zh-CN": "自行车停车处", + "zh-HK": "單車停放處", + "zh-TW": "單車停車場", + "zh": "自行车停放处" + } + }, + "amenity/bicycle_rental": { + "title": { + "C": "Bicycle Rental", + "af": "Fietshuur", + "ar": "تأجير دراجات", + "ast": "Alquiler de bicicletes", + "bg": "Наем на велосипеди", + "bn": "সাইকেল ভাড়া নেয়া", + "bs": "Iznajmljivanje bicikala", + "ca": "Lloguer de bicicletes", + "cs": "Půjčovna kol", + "da": "Cykeludlejning", + "de": "Fahrradverleih", + "el": "Ενοικιαζόμενα Ποδηλάτα", + "en-GB": "Bicycle Rental", + "en": "Bicycle Rental", + "eo": "Bicikl-pruntejo", + "es": "Alquiler de bicicletas", + "et": "Rattarent", + "eu": "Bizikleten Alokairua", + "fa": "اجاره دوچرخه", + "fi": "Kaupunkipyöräasema", + "fr": "Location de vélos", + "gl": "Alugueiro de bicicletas", + "he": "השכרת אופניים", + "hr": "Najam bicikla", + "hu": "Kerékpárkölcsönző", + "hy": "Հեծանիվի վարձակալություն", + "id": "Penyewaan Sepeda", + "is": "Hjólaleiga", + "it": "Stazione del Bike Sharing", + "ja": "レンタサイクル", + "ko": "자전거 대여소", + "lt": "Dviračių nuoma", + "lv": "Velonoma", + "mk": "Изнајмување велосипеди", + "nl": "Fietsverhuur", + "no": "Sykkelutleie", + "pl": "Wypożyczalnia rowerów", + "pt-BR": "Estação de bicicletas públicas", + "pt": "Aluguer de bicicletas", + "ro": "Închiriere biciclete", + "ru": "Велопрокат", + "sk": "Prenájom bicyklov", + "sl": "Izposoja koles", + "sr": "Изнајмљивање бицикла", + "sv": "Cykeluthyrning", + "ta": "சைக்கிள் வாடகை", + "tr": "Bisiklet Kiralama", + "uk": "Прокат велосипедів", + "vi": "Cho thuê Xe đạp", + "yue": "租單車舖", + "zh-CN": "自行车出租点", + "zh-HK": "單車出租", + "zh-TW": "單車出租", + "zh": "自行车租赁处" + } + }, + "amenity/bicycle_repair_station": { + "title": { + "C": "Bicycle Repair Tool Stand", + "ar": "ورشة إصلاح دراجات هوائية", + "ast": "Caballete pa reparar bicicletes", + "ca": "Lloc de reparació de Bicicletes", + "cs": "Montážní stojan na kola", + "da": "Cykelreparationsværktøj", + "de": "Fahrradreparatur-Werkzeugkasten", + "el": "Πάγκος Επισκευής Ποδηλάτων", + "en-GB": "Bicycle Repair Tool Stand", + "en": "Bicycle Repair Tool Stand", + "eo": "Bicikla mem-riparejo", + "es": "Puesto de reparación de bicicletas", + "et": "Jalgrattaremondi pukk", + "eu": "Bizikleta konpontzeko tresneriaren postua", + "fa": "ایستگاه تعمیر دوچرخه", + "fi": "Polkupyörän huoltoteline", + "fr": "Stand d'outils de réparation de vélos", + "gl": "Lugar para ferramentas de reparación de bicicletas", + "he": "עמדת תיקון אופניים", + "hr": "Stalak sa alatima za bicikle", + "hu": "Önálló kerékpárszerelő pont", + "is": "Hjólaviðgerðastandur", + "it": "Stazione di riparazione biciclette", + "ja": "自転車修理店", + "ko": "자전거 수리 도구", + "lv": "Velosipēdu Remonta Darbarīku Stends", + "mk": "Држач за поправка на велосипеди", + "nl": "Openbaar fietsgereedschap", + "no": "Sykkel Mekkestativ", + "pl": "Samoobsługowa stacja naprawy rowerów", + "pt-BR": "Estação de reparo de bicicletas", + "pt": "Ponto de reparação de bicicletas", + "ru": "Стойка для ремонта велосипедов", + "sk": "Stojan s náradím na opravu bicyklov", + "sl": "Stojalo za popravilo koles", + "sv": "Station för cykelreparation", + "tr": "Bisiklet Tamircisi", + "uk": "Станція ремонту велосипедів", + "vi": "Quầy Sửa Xe đạp", + "zh-CN": "自行车维修工具站", + "zh-HK": "單車維修站", + "zh-TW": "自行車維修工具站" + } + }, + "amenity/biergarten": { + "title": { + "C": "Biergarten", + "cs": "Pivní zahrada", + "de": "Biergarten", + "en": "Biergarten", + "eo": "Bierĝardeno", + "es": "Biergarten (Bar al aire libre)", + "eu": "Biergarten", + "fa": "بیرگارتن (حیاط با سرو آبجو - ریشه در مونیخ آلمان)", + "fr": "Biergarten", + "gl": "Biergarten (xardín da cervexa alemán)", + "he": "ביר גרדן", + "hu": "Sörkert", + "is": "Bjórgarður", + "it": "Biergarten", + "ja": "ビアガーデン", + "ko": "옥외 식탁", + "mk": "Пивска градина", + "nl": "Biergarten", + "no": "Ølhage", + "pl": "Ogródek piwny", + "pt-BR": "Biergarten", + "pt": "Jardim de cerveja", + "ru": "Пивной сад", + "sv": "Ölträdgård", + "tr": "Bira bahçesi", + "uk": "Пивний садок", + "vi": "Vườn Bia", + "zh-CN": "啤酒花园", + "zh-HK": "露天啤酒店", + "zh-TW": "啤酒花園" + } + }, + "amenity/binoculars": { + "title": { + "C": "Mounted Binoculars", + "cs": "Namontovaný dalekohled", + "da": "Fastmonteret kikkert", + "de": "Stationäres Aussichtsfernrohr", + "en": "Mounted Binoculars", + "eo": "Lorno", + "es": "Binoculares montados", + "fa": "دوربین شکاری سوار شده", + "gl": "Binoculares panorámicos", + "he": "משקפת מקובעת", + "it": "Binocolo Montato", + "ja": "双眼鏡", + "mk": "Прицврстен двоглед", + "nl": "Vaste verrekijkers", + "pl": "Lornetka", + "pt-BR": "Binóculos montados", + "pt": "Binóculo panorâmico", + "sv": "Fast monterad kikare", + "tr": "Monte Dürbün", + "uk": "Стаціонарний бінокль", + "zh-TW": "固定式雙筒望遠鏡" + } + }, + "amenity/boat_rental": { + "title": { + "C": "Boat Rental", + "ar": "محل استئجار قوارب", + "ast": "Alquiler de barcos", + "bs": "Iznajmljivanje plovila", + "ca": "Lloguer d'embarcacions", + "cs": "Půjčovna lodí", + "da": "Bådudlejning", + "de": "Bootsvermietung", + "el": "Ενοικίαση Σκαφών", + "en-GB": "Boat Rental", + "en": "Boat Rental", + "eo": "Boat-pruntejo", + "es": "Alquiler de barcos", + "et": "Paadi laenutus", + "eu": "Ontzi alokairu", + "fa": "کرایه قایق", + "fi": "Venevuokraamo", + "fr": "Location de bateau", + "gl": "Alugueiro de embarcacións", + "he": "השכרת סירה", + "hr": "Najam brodova", + "hu": "Hajókölcsönző", + "id": "Penyewaan Perahu Boat", + "is": "Bátaleiga", + "it": "Noleggio barche", + "ja": "貸しボート", + "ko": "보트 대여소", + "lt": "Laivų nuoma", + "lv": "Laivu īre", + "mk": "Изнајмување чамци", + "nl": "Bootverhuur", + "no": "Båuttleie", + "pl": "Wypożyczalnia łodzi", + "pt-BR": "Aluguel de barcos", + "pt": "Aluguer de barcos", + "ro": "Închiriere Barcă", + "ru": "Аренда Лодок", + "sk": "Prenájom lodí", + "sl": "Izposoja plovil", + "sr": "Изнајмљивање чамаца", + "sv": "Båtuthyrning", + "tr": "Bot Kiralama", + "uk": "Прокат човнів", + "vi": "Cho thuê Tàu", + "yue": "租艇", + "zh-CN": "船舶租赁处", + "zh-HK": "租艇", + "zh-TW": "小艇出租" + } + }, + "amenity/boat_storage": { + "title": { + "C": "Boat Storage", + "cs": "Místo pro uložení lodí", + "da": "Bådlager", + "de": "Bootslagerplatz", + "en": "Boat Storage", + "eo": "Boat-garaĝo seka", + "es": "Almacenamiento de barcos", + "fa": "انبار قایق", + "gl": "Tenda de embarcacións", + "he": "אחסון סירות", + "it": "Rimessaggio Barche", + "ja": "ボート店", + "mk": "Склад за чамци", + "nl": "Botenopslag", + "pl": "Przechowalnia łodzi", + "pt-BR": "Armazenamento de barco", + "pt": "Depósito de barcos", + "sk": "Sklad lodí", + "sv": "Båtförvaring", + "tr": "Tekne Depolaması", + "uk": "Зберігання човнів", + "zh-TW": "般隻停放處" + } + }, + "amenity/bureau_de_change": { + "title": { + "C": "Currency Exchange", + "ar": "تحويل أموال", + "ast": "Cambiu de moneda", + "ca": "Canvi de divisa", + "ckb": "گۆڕینەوەی دراو", + "cs": "Směnárna", + "da": "Valutaveksling", + "de": "Geldwechselstube", + "el": "Ανταλλακτήριο Συναλλάγματος", + "en-GB": "Currency Exchange", + "en": "Currency Exchange", + "eo": "Monŝanĝejo", + "es": "Cambio de moneda", + "et": "Valuutavahetus", + "eu": "Moneta trukea", + "fa": "تبدیل ارز / صرافی", + "fi": "Valuutanvaihtopiste", + "fr": "Bureau de change", + "gl": "Troco de divisas", + "he": "המרת מט״ח", + "hr": "Mjenjačnica", + "hu": "Pénzváltó", + "id": "Penukaran Mata Uang", + "is": "Gjaldmiðlaskipti", + "it": "Cambiavalute", + "ja": "両替所", + "ko": "환전소", + "lt": "Valiutos keitykla", + "lv": "Valūtas Maiņa", + "mk": "Менувачница", + "nl": "Wisselkantoor", + "no": "Valutaveksling", + "pl": "Kantor", + "pt-BR": "Casa de câmbio", + "pt": "Agência de câmbio", + "ro": "Schimbare Valută", + "ru": "Пункт обмена валюты", + "sk": "Zmenáreň", + "sl": "Menjalnica", + "sr": "Мењачница", + "sv": "Växlingskontor", + "ta": "பணப் பரிமாற்றம்", + "tr": "Döviz Bürosu", + "uk": "Обмін валют", + "vi": "Đổi tiền", + "zh-CN": "货币兑换", + "zh-HK": "外幣兌換", + "zh-TW": "外幣兌換" + } + }, + "amenity/cafe": { + "title": { + "C": "Cafe", + "af": "Kafee", + "ar": "مقهى", + "ast": "Café", + "bg": "Кафене", + "bn": "ক্যাফে", + "bs": "Kafe", + "ca": "Cafè", + "cs": "Kavárna", + "da": "Cafe", + "de": "Café", + "dv": "ކެފޭ", + "el": "Καφετέρια", + "en-GB": "Cafe", + "en": "Cafe", + "eo": "Kafejo", + "es": "Cafetería", + "et": "Kohvik", + "eu": "Kafetegi", + "fa": "کافه", + "fi": "Kahvila", + "fr": "Café", + "gl": "Cafetaría", + "he": "בית קפה", + "hr": "Kafić", + "hu": "Kávézó", + "hy": "Սրճարան", + "id": "Kafe", + "is": "Kaffihús", + "it": "Caffè", + "ja": "喫茶店", + "ko": "카페", + "lt": "Kavinė", + "lv": "Kafejnīca", + "mk": "Кафетерија", + "ms": "Kafe", + "ne": "क्याफे", + "nl": "Cafetaria", + "no": "Kafé", + "pl": "Kawiarnia", + "pt-BR": "Cafeteria", + "pt": "Café", + "ro": "Cafenea", + "ru": "Кафе", + "sk": "Kaviareň", + "sl": "Kavarna", + "so": "Kafateeriya", + "sr": "Кафе", + "sv": "Café", + "ta": "டீக்கடை", + "tr": "Kafe", + "uk": "Кафе", + "vi": "Quán Cà phê/Trà/Chè", + "yue": "茶座", + "zh-CN": "咖啡馆", + "zh-HK": "茶座", + "zh-TW": "咖啡廳", + "zh": "咖啡" + } + }, + "amenity/car_pooling": { + "title": { + "C": "Car Pooling Station", + "cs": "stanice spolujízdy", + "da": "Samkørselsstation", + "de": "Car-Pooling-Station", + "en": "Car Pooling Station", + "eo": "Haltejo aŭtomobila (carpooling)", + "es": "Estación de vehículo compartido (Carpooling)", + "fa": "ایستگاه هم‌سفری (نوعی اشتراک خودرو)", + "fi": "Kimppakyytiasema", + "fr": "Aire de covoiturage", + "gl": "Estación de automóbil compartido (Carpooling)", + "he": "תחנת שיתוף נסיעות", + "it": "Stazione per il Car Pooling", + "ja": "カープール", + "mk": "Станица за заедничко автомобилско возење", + "nl": "Carpoolparking", + "pl": "Carpooling", + "pt-BR": "Estação de carona solidária", + "pt": "Posto de boleia partilhada", + "sv": "Bilpoolstation", + "tr": "Araç Havuzlama İstasyonu", + "uk": "Місце посадки/висадки пасажирів", + "vi": "Chỗ Đón để Đi Cùng Xe", + "zh-TW": "汽車共乘站" + } + }, + "amenity/car_rental": { + "title": { + "C": "Car Rental", + "af": "Kar huur", + "ar": "محل إيجار سيارات", + "ast": "Alquiler d'automóviles", + "bg": "Коли под наем", + "bn": "গাড়ি ভাড়া", + "bs": "Rent-a-car", + "ca": "Lloguer de cotxes", + "cs": "Půjčovna aut", + "da": "Biludlejning", + "de": "Autovermietung", + "el": "Ενοικίαση Αυτοκινήτων", + "en-GB": "Car Rental", + "en": "Car Rental", + "eo": "Aŭtomobil-pruntejo", + "es": "Alquiler de automóviles", + "et": "Autorent", + "eu": "Auto Alokairua", + "fa": "کرایه ماشین", + "fi": "Autonvuokraus", + "fr": "Location de voiture", + "gl": "Alugueiro de automóbiles", + "he": "השכרת רכב", + "hr": "Najam automobila", + "hu": "Autókölcsönző", + "id": "Penyewaan Mobil", + "is": "Bílaleiga", + "it": "Noleggio auto", + "ja": "レンタカー", + "ko": "자동차 대여점", + "lt": "Automobilių nuoma", + "lv": "Autonoma", + "mk": "Изнајмување автомобили", + "nl": "Autoverhuur", + "no": "Bilutleie", + "pl": "Wypożyczalnia samochodów", + "pt-BR": "Locadora de veículos", + "pt": "Aluguer de automóveis", + "ro": "Închiriere Mașini", + "ru": "Аренда автомобилей", + "sk": "Autopožičovňa", + "sl": "Izposoja avtomobilov", + "sr": "Изнајмљивање возила", + "sv": "Biluthyrning", + "tr": "Araç Kiralama", + "uk": "Прокат автомобілів", + "vi": "Cho thuê Xe", + "yue": "租車舖", + "zh-CN": "汽车租赁", + "zh-HK": "汽車租賃", + "zh-TW": "汽車租車店" + } + }, + "amenity/car_sharing": { + "title": { + "C": "Car Sharing Station", + "ar": "محطة مشاركة السيارات", + "cs": "stanice sdílení aut", + "da": "Delebilsstation", + "de": "Car Sharing Station", + "en": "Car Sharing Station", + "eo": "Aŭtomobil-pruntejo komunuma (organizita kunveturado)", + "es": "Estación de uso temporal de vehículos (Carsharing)", + "fa": "ایستگاه اشتراک‌گذاری خودرو", + "fr": "Station d'auto-partage", + "gl": "Estación de vehículos compartidos (Carsharing)", + "he": "תחנת שיתוף מכוניות", + "it": "Stazione per il Car Sharing", + "ja": "カーシェアリング", + "mk": "Станица за споделување автомобили", + "nl": "Autodelen", + "pl": "Stacja miejskiej wypożyczalni samochodów", + "pt-BR": "Estação de compartilhamento de carros", + "pt": "Posto de partilha de automóvel", + "sk": "Stanica zdieľania áut", + "sv": "Bildelningsstation", + "tr": "Araç Paylaşma İstasyonu", + "uk": "Каршерінг станція", + "vi": "Trạm Chia sẻ Xe", + "zh-CN": "共享汽车站点", + "zh-TW": "共享汽車站" + } + }, + "amenity/car_wash": { + "title": { + "C": "Car Wash", + "af": "Karwas", + "ar": "غسيل سيارات", + "ast": "Llaváu de coches", + "bg": "Автомивка", + "bs": "Autopraonica", + "ca": "Rentat de cotxes", + "ckb": "شووشتنگەی ئۆتۆمبێل", + "cs": "Automyčka", + "da": "Bilvask", + "de": "Autowäsche", + "el": "Πλυντήριο Αυτοκινήτων", + "en-GB": "Car Wash", + "en": "Car Wash", + "eo": "Aŭtomobil-purigejo", + "es": "Lavado de automóviles", + "et": "Autopesula", + "eu": "Auto garbiketa", + "fa": "کارواش", + "fi": "Autopesula", + "fr": "Station de lavage de voiture", + "gl": "Lavado de automóbiles", + "he": "שטיפת רכב", + "hr": "Autopraonica", + "hu": "Autómosó", + "id": "Pencucian Mobil", + "is": "Bílaþvottur", + "it": "Autolavaggio", + "ja": "洗車場", + "ko": "세차장", + "lt": "Automobilių plovykla", + "lv": "Automazgātuve", + "mk": "Автоперална", + "nl": "Autowasstraat", + "no": "Bilvask", + "pl": "Myjnia samochodowa", + "pt-BR": "Lava a jato", + "pt": "Lavagem de veículos", + "ro": "Spălătorie Auto", + "ru": "Автомойка", + "sk": "Autoumyváreň", + "sl": "Avtopralnica", + "sr": "Ауто-перионица", + "sv": "Biltvätt", + "tr": "Araç Yıkama", + "uk": "Автомийка", + "vi": "Rửa xe", + "yue": "洗車舖", + "zh-CN": "洗车", + "zh-HK": "洗車店", + "zh-TW": "洗車店", + "zh": "洗车" + } + }, + "amenity/casino": { + "title": { + "C": "Casino", + "ar": "كازينو", + "ast": "Casino", + "ca": "Casino", + "ckb": "گازینۆ", + "cs": "Kasino", + "da": "Kasino", + "de": "Kasino", + "el": "Καζίνο", + "en-GB": "Casino", + "en": "Casino", + "eo": "Monludejo", + "es": "Casino", + "et": "Kasiino", + "eu": "Kasino", + "fa": "کازینو", + "fi": "Kasino", + "fr": "Casino", + "gl": "Casino", + "he": "קזינו", + "hr": "Kasino", + "hu": "Kaszinó", + "id": "Kasino", + "is": "Spilavíti", + "it": "Casinò", + "ja": "カジノ", + "ko": "카지노", + "lt": "Kazino", + "lv": "Kazino", + "mk": "Коцкарница", + "nl": "Casino", + "no": "Kasino", + "pl": "Kasyno", + "pt-BR": "Cassino", + "pt": "Casino", + "ro": "Cazino", + "ru": "Казино", + "sk": "Kasíno", + "sl": "Igralnica", + "sr": "Казино", + "sv": "Kasino", + "tr": "Kumarhane", + "uk": "Казино", + "vi": "Sòng bạc", + "zh-CN": "赌场", + "zh-HK": "賭場", + "zh-TW": "賭場" + } + }, + "amenity/charging_station": { + "title": { + "C": "Charging Station", + "ar": "محطة شحن", + "ast": "Estación de recarga", + "ca": "Estació de càrrega", + "cs": "Nabíjecí stanice", + "da": "Opladerstation", + "de": "Ladestation für Elektrofahrzeuge", + "el": "Σταθμός Φόρτισης", + "en-GB": "Charging Station", + "en": "Charging Station", + "eo": "Ŝargostacio", + "es": "Estación de carga para vehículos eléctricos", + "et": "Laadimisjaam", + "eu": "Kargatzeko geltokia", + "fa": "ایستگاه شارژ", + "fi": "Latauspiste", + "fr": "Borne de recharge", + "gl": "Estación de carga", + "he": "תחנת טעינה", + "hr": "Punionica za električna vozila", + "hu": "Elektromos töltőállomás", + "is": "Hleðslustöð", + "it": "Stazione di ricarica", + "ja": "充電スタンド", + "ko": "충전소", + "lt": "Įkrovimo stotelė", + "lv": "Uzlādes stacija", + "mk": "Напојна станица", + "nl": "Oplaadstation", + "no": "Ladestasjon", + "pl": "Stacja ładowania pojazdów", + "pt-BR": "Estação de carregamento", + "pt": "Posto de carregamento", + "ro": "Benzinărie", + "ru": "Станция зарядки", + "sk": "Nabíjacia stanica", + "sl": "Polnilna postaja", + "sv": "Laddstation", + "tr": "Şarj İstasyonu", + "uk": "Зарядна станція", + "vi": "Trạm Sạc Pin", + "zh-CN": "充电站", + "zh-HK": "充電站", + "zh-TW": "充電站" + } + }, + "amenity/childcare": { + "title": { + "C": "Nursery/Childcare", + "ar": "رعاية الأطفال", + "ast": "Preescolar/Guardería", + "ca": "Llar d'Infants", + "cs": "Předškolní a mimoškolní péče", + "da": "Dagpleje/Vuggestue", + "de": "Kinderkrippenbetreuung, Kindertagesstätte", + "el": "Παιδιατρική", + "en-GB": "Nursery/Childcare", + "en": "Nursery/Childcare", + "eo": "Bebovartejo", + "es": "Guardería/Cuidado de niños", + "et": "Lastehoid", + "eu": "Haurtzendegi/ Ume zaintza", + "fa": "مهدکودک/مراقبت از کودکان", + "fi": "Päiväkoti", + "fr": "Crèche, garde d'enfants", + "gl": "Gardaría", + "he": "גנון", + "hr": "Jaslice", + "hu": "Bölcsőde", + "id": "Tempat Penitipan Anak", + "is": "Barnagæsla/dagvistun", + "it": "Asilo nido", + "ja": "保育所", + "ko": "보육/육아", + "lv": "Bērnistaba / Bērnu aprūpe", + "mk": "Детска градинка", + "nl": "Kinderdagverblijf", + "pl": "Żłobek", + "pt-BR": "Berçário ou creche", + "pt": "Berçário / Creche", + "ro": "Grădiniță", + "ru": "Детская комната", + "sk": "Detská starostlivosť", + "sl": "Jasli / Vrtec", + "sr": "Обданиште", + "sv": "Barnomsorg", + "tr": "Çocuk Bakımı", + "uk": "Дитяча кімната", + "vi": "Giữ trẻ", + "zh-CN": "托儿所/保育园", + "zh-HK": "託兒所/幼兒護理", + "zh-TW": "托兒所/托嬰處" + } + }, + "amenity/cinema": { + "title": { + "C": "Cinema", + "af": "Fliek", + "ar": "سينما", + "ast": "Cine", + "bg": "Кино", + "bn": "সিনেমা", + "bs": "Kino", + "ca": "Cinema", + "ckb": "سینەما", + "cs": "Kino", + "da": "Biograf", + "de": "Kino", + "dv": "ސިނަމާ", + "el": "Κινηματογράφος", + "en-GB": "Cinema", + "en": "Cinema", + "eo": "Kinejo", + "es": "Cine", + "et": "Kino", + "eu": "Zinema", + "fa": "سینما", + "fi": "Elokuvateatteri", + "fr": "Cinéma", + "gl": "Cine", + "he": "קולנוע", + "hr": "Kino", + "hu": "Mozi", + "hy": "Կինոթատրոն", + "id": "Bioskop", + "is": "Kvikmyndahús", + "it": "Cinema", + "ja": "映画館", + "kn": "ಸಿನಿಮಾ", + "ko": "영화관", + "lt": "Kino teatras", + "lv": "Kino", + "mk": "Кино", + "nl": "Bioscoop", + "no": "Kino", + "pl": "Kino", + "pt-BR": "Cinema", + "pt": "Cinema", + "ro": "Cinema", + "ru": "Кинотеатр", + "sk": "Kino", + "sl": "Kino", + "so": "Shaneemo", + "sr": "Биоскоп", + "sv": "Biograf", + "ta": "சினிமா", + "te": "సినిమా హాలు", + "tr": "Sinema", + "uk": "Кінотеатр", + "vi": "Rạp phim", + "yue": "電影戲院", + "zh-CN": "电影院", + "zh-HK": "戲院", + "zh-TW": "電影院", + "zh": "电影院" + } + }, + "amenity/clinic": { + "title": { + "C": "Clinic", + "ar": "عيادة", + "ast": "Clínica", + "bs": "Klinika", + "ca": "Clínica", + "ckb": "نۆڕینگە", + "cs": "Poliklinika", + "da": "Klinik", + "de": "Klinik", + "el": "Κλινική", + "en-GB": "Clinic", + "en": "Clinic", + "eo": "Kuracistejo (centro de komunuma sano)", + "es": "Clínica", + "et": "Kliinik", + "eu": "Erietxe", + "fa": "کلینیک", + "fi": "Terveyskeskus", + "fr": "Centre médical de taille moyenne, soins en ambulatoire", + "gl": "Clínica ou centro de saúde", + "he": "מרפאה", + "hr": "Klinika", + "hu": "Rendelőintézet", + "id": "Klinik", + "is": "Læknastofa", + "it": "Clinica medica", + "ja": "クリニック(中規模病院)", + "kn": "ಚಿಕಿತ್ಸಾಲಯ", + "ko": "클리닉", + "lt": "Klinika", + "lv": "Klīnika", + "mk": "Клиника", + "nl": "Dagkliniek", + "no": "Klinikk", + "pl": "Klinika/oddział", + "pt-BR": "Clínica ou posto de saúde", + "pt": "Centro de saúde / Clínica", + "ro": "Clinică", + "ru": "Клиника", + "sk": "Klinika", + "sl": "Klinika", + "sr": "Клиника", + "sv": "Vårdcentral", + "tr": "Klinik", + "uk": "Клініка", + "vi": "Trạm Y tế", + "zh-CN": "诊所", + "zh-HK": "診所", + "zh-TW": "診所" + } + }, + "amenity/clock": { + "title": { + "C": "Clock", + "ar": "ساعة", + "ast": "Reló", + "ca": "Rellotge", + "ckb": "کاتژمێر", + "cs": "Hodiny", + "da": "Ur", + "de": "Uhr", + "el": "Ρολόι", + "en-GB": "Clock", + "en": "Clock", + "eo": "Horloĝo", + "es": "Reloj", + "et": "Kell", + "eu": "Ordulari", + "fa": "ساعت", + "fi": "Kello", + "fr": "Horloge", + "gl": "Reloxo", + "he": "שעון", + "hi": "घडी", + "hr": "Sat", + "hu": "Óra", + "id": "Jam", + "is": "Klukka", + "it": "Orologio", + "ja": "時計", + "kn": "ಗಡಿಯಾರ", + "ko": "시계", + "lt": "Laikrodis", + "lv": "Pulkstenis", + "mk": "Часовник", + "nl": "Klok", + "no": "Klokke", + "pl": "Zegar", + "pt-BR": "Relógio", + "pt": "Relógio", + "ro": "Ceas", + "ru": "Часы", + "sk": "Hodiny", + "sl": "Ura", + "sr": "Сат", + "sv": "Klocka", + "ta": "கடிகாரம்", + "tr": "Saat", + "uk": "Годинник", + "vi": "Đồng hồ", + "zh-CN": "时钟", + "zh-HK": "時鐘", + "zh-TW": "時鐘" + } + }, + "amenity/college": { + "title": { + "C": "College Grounds", + "ar": "أرض كلية", + "ast": "Terrén de colexu universitariu", + "ca": "Escola professional", + "cs": "Prostor vyšší odborné školy/college", + "da": "Universitetsområder", + "de": "Hochschulgelände", + "el": "Χώρος Κολλεγίου", + "en-GB": "College Grounds", + "en": "College Grounds", + "eo": "Postmezgrada lernejo (ISCED 4)", + "es": "Terreno de centro educativo superior no universitario", + "et": "Kolledžiala", + "eu": "Unibertsitate Eremu", + "fa": "محیط کالج", + "fi": "Korkeakoulualue (college)", + "fr": "Enseignement supérieur (non universitaire) - institution ou campus", + "gl": "Área de educación superior", + "he": "גן המכללה", + "hr": "Fakultetsko zemljište", + "hu": "Főiskola", + "id": "Lapangan Kampus", + "is": "Framhaldskólalóð", + "it": "Area di un’accademia", + "ja": "短大・高専・専門学校(代表点または敷地)", + "ko": "전문대학 부지", + "lt": "Kolegijos kiemas", + "mk": "Средношколски двор", + "nl": "Campus van beroepsschool", + "pl": "Teren koledżu / szkoły policealnej", + "pt-BR": "Escola técnica", + "pt": "Colégio", + "ru": "Территория колледжа", + "sk": "Vysoká škola", + "sl": "Šolsko središče", + "sv": "Collegeområde", + "tr": "Üniversite Kampüsü", + "uk": "Територія коледжу", + "vi": "Sân trường Cao đẳng", + "zh-CN": "学院", + "zh-HK": "學院範圍", + "zh-TW": "學院範圍" + } + }, + "amenity/community_centre": { + "title": { + "C": "Community Center", + "ar": "مركز اجتماعي", + "ast": "Centru comunitariu", + "ca": "Centre Comunitari", + "cs": "Komunitní centrum", + "da": "Medborgerhus", + "de": "Gemeindezentrum", + "el": "Κέντρο Κοινότητας", + "en-AU": "Community Centre", + "en-GB": "Community Centre", + "en": "Community Center", + "eo": "Komunuma centro", + "es": "Centro Comunitario", + "et": "Kogukonna keskus", + "eu": "Gizarte Etxe", + "fa": "مرکز اجتماع", + "fi": "Yhteisökeskus", + "fr": "Salle polyvalente", + "gl": "Centro comunitario", + "he": "מרכז קהילתי", + "hr": "Društveni centar", + "hu": "Közösségi ház", + "is": "Samfélagsmiðstöð", + "it": "Centro sociale (pubblico)", + "ja": "コミュニティセンター", + "ko": "커뮤니티 센터", + "lt": "Bendruomenės centras", + "lv": "Kopienas centrs", + "mk": "Месна заедница", + "nl": "Buurthuis", + "no": "Samfunnshus", + "pl": "Centrum społeczności", + "pt-BR": "Centro comunitário", + "pt": "Centro comunitário", + "ro": "Centru Comunitar", + "ru": "Культурный центр", + "sk": "Komunitné centrum", + "sl": "Središče skupnosti", + "sr": "Дом културе", + "sv": "Samlingslokal", + "tr": "Toplum Merkezi", + "uk": "Суспільний центр", + "vi": "Trung tâm Cộng đồng", + "zh-CN": "社区活动中心", + "zh-HK": "社區中心", + "zh-TW": "社區中心" + } + }, + "amenity/compressed_air": { + "title": { + "C": "Compressed Air", + "ar": "هواء مضغوط", + "ast": "Aire comprimíu", + "ca": "Aire comprimit", + "cs": "Stlačený vzduch", + "da": "Luftpumpe", + "de": "Druckluft", + "el": "Πεπιεσμένος Αέρας", + "en-GB": "Compressed Air", + "en": "Compressed Air", + "eo": "Gaskunpremilo", + "es": "Aire comprimido", + "et": "Suruõhk", + "eu": "Aire konpromitua", + "fa": "هوای فشرده", + "fi": "Ilmanpainepiste", + "fr": "Air comprimé", + "gl": "Aire comprimido", + "he": "אוויר דחוס", + "hr": "Komprimirani zrak", + "hu": "Sűrített levegő", + "id": "Pompa Ban", + "is": "Loftdæla", + "it": "Aria Compressa", + "ja": "空気入れ", + "ko": "압축된 공기", + "lt": "Suspaustas oras", + "lv": "Saspiests Gaiss", + "mk": "Компресор", + "nl": "Perslucht", + "no": "Komprimert Luft", + "pl": "Kompresor", + "pt-BR": "Bomba de ar comprimido", + "pt": "Ar comprimido", + "ro": "Aer Comprimat", + "ru": "Сжатый воздух", + "sk": "Stlačený vzduch", + "sl": "Zračni kompresor", + "sr": "Компримовани ваздух", + "sv": "Tryckluft", + "tr": "Hava Basma İstasyonu", + "uk": "Стиснене повітря", + "vi": "Khí Nén", + "zh-CN": "压缩空气", + "zh-HK": "打氣服務", + "zh-TW": "壓縮空氣" + } + }, + "amenity/conference_centre": { + "title": { + "C": "Convention Center", + "cs": "konferenční centrum", + "de": "Kongresszentrum", + "en-AU": "Convention Centre", + "en": "Convention Center", + "eo": "Konferenca centro", + "es": "Centro de convenciones", + "et": "Konverentsikeskus", + "fa": "مرکز همایش", + "fi": "Kongressikeskus", + "fr": "Centre de congrés", + "gl": "Centro de convencións", + "he": "מרכז כנסים", + "hu": "Konferenciaközpont", + "it": "Centro conferenze", + "ja": "コンベンションセンター", + "ko": "컨벤션 센터", + "mk": "Центар за собири", + "nl": "Congrescentrum", + "no": "Konferansesenter", + "pl": "Centrum konferencyjne", + "pt-BR": "Centro de convenções", + "pt": "Centro de convenções", + "sr": "Конгресни центар", + "sv": "Kongresscenter", + "tr": "Kongre Merkezi", + "uk": "Конференц-центр", + "vi": "Trung tâm Hội nghị", + "zh-TW": "會議中心" + } + }, + "amenity/courthouse": { + "title": { + "C": "Courthouse", + "af": "Hof", + "ar": "محكمة", + "ast": "Xulgáu", + "bg": "Съд", + "bs": "Sudnica", + "ca": "Jutjat", + "cs": "Soud", + "da": "Domstolsbygning", + "de": "Gericht", + "el": "Δικαστήριο", + "en-GB": "Courthouse", + "en": "Courthouse", + "eo": "Juĝdomo", + "es": "Juzgado", + "et": "Kohtumaja", + "eu": "Epaitegi", + "fa": "دادگاه", + "fi": "Tuomioistuin", + "fr": "Tribunal", + "gl": "Xulgado", + "he": "בית משפט", + "hr": "Zgrada suda", + "hu": "Bíróság", + "id": "Pengadilan", + "is": "Dómhús", + "it": "Tribunale", + "ja": "裁判所", + "ko": "법원", + "lt": "Teismo rūmai", + "lv": "Tiesas nams", + "mk": "Суд", + "nl": "Gerechtsgebouw", + "no": "Tinghus", + "pl": "Sąd", + "pt-BR": "Tribunal", + "pt": "Tribunal", + "ro": "Tribunal", + "ru": "Суд", + "sk": "Súd", + "sl": "Sodišče", + "sr": "Судница", + "sv": "Domstol", + "tr": "Mahkeme", + "uk": "Суд", + "vi": "Tòa", + "yue": "法庭", + "zh-CN": "法院", + "zh-HK": "法庭", + "zh-TW": "法院", + "zh": "法院" + } + }, + "amenity/crematorium": { + "title": { + "C": "Crematorium", + "ar": "محرقة فرن لاحراق الجث", + "ast": "Crematoriu", + "ca": "Crematori", + "cs": "Krematorium", + "da": "Krematorium", + "de": "Krematorium", + "el": "Κρεματόριο", + "en-GB": "Crematorium", + "en": "Crematorium", + "eo": "Kadavrobruligejo", + "es": "Crematorio", + "et": "Krematoorium", + "eu": "Errausketa-labe", + "fa": "مٌرده سوز", + "fi": "Krematorio", + "fr": "Crématorium", + "gl": "Crematorio", + "he": "משרפה", + "hu": "Krematórium", + "is": "Líkbrennsla", + "it": "Forno crematorio", + "ja": "火葬場", + "ko": "화장장", + "lt": "Krematoriumas", + "lv": "Krematorija", + "mk": "Крематориум", + "nl": "Crematorium", + "no": "Krematorium", + "pl": "Krematorium", + "pt-BR": "Crematório", + "pt": "Crematório", + "ro": "Crematoriu", + "ru": "Крематорий", + "sk": "Krematórium", + "sl": "Krematorij", + "sr": "Крематоријум", + "sv": "Krematorium", + "ta": "சுடுகாடு", + "tr": "Cesed Yakma Yeri", + "uk": "Крематорій", + "vi": "Lò Thiêu", + "zh-CN": "火葬场", + "zh-HK": "火葬場", + "zh-TW": "火葬場" + } + }, + "amenity/dentist": { + "title": { + "C": "Dentist", + "ar": "طبيب أسنان", + "ast": "Dentista", + "bs": "Zubar", + "ca": "Dentista", + "ckb": "ددانساز", + "cs": "Zubař", + "da": "Tandlæge", + "de": "Zahnarzt, Zahnärztin", + "el": "Οδοντιατρείο", + "en-GB": "Dentist", + "en": "Dentist", + "eo": "Dentistejo", + "es": "Dentista", + "et": "Hambaarst", + "eu": "Dentista", + "fa": "دندانپزشکی", + "fi": "Hammaslääkäriasema", + "fr": "Dentiste", + "gl": "Dentista", + "he": "מרפאת שיניים", + "hr": "Zubar", + "hu": "Fogorvos", + "id": "Dokter Gigi", + "is": "Tannlæknir", + "it": "Dentista", + "ja": "歯医者", + "kn": "ದಂತವೈದ್ಯ", + "ko": "치과 의원", + "lt": "Dantistas", + "lv": "Zobārsts", + "mk": "Забар", + "nl": "Tandarts", + "nn": "Tannlege", + "no": "Tannlege", + "pl": "Dentysta", + "pt-BR": "Dentista", + "pt": "Dentista", + "ro": "Dentist", + "ru": "Стоматология", + "sk": "Zubár", + "sl": "Zobozdravnik", + "sr": "Зубар", + "sv": "Tandläkare", + "ta": "பல் மருத்துவர்", + "tr": "Dişçi", + "uk": "Стоматолог", + "vi": "Nha sĩ", + "yue": "牙醫", + "zh-CN": "牙科医院", + "zh-HK": "牙醫", + "zh-TW": "牙醫" + } + }, + "amenity/dive_centre": { + "title": { + "C": "Dive Center", + "ar": "مركز الغوص", + "cs": "Centrum potápění", + "de": "Tauchschule", + "el": "Κέντρο Καταδύσεων", + "en-AU": "Dive Centre", + "en-GB": "Dive Centre", + "en": "Dive Center", + "eo": "Centro de subakva naĝado", + "es": "Centro de buceo", + "fa": "مرکز غواصی", + "fi": "Sukelluskeskus", + "fr": "Centre de plongée", + "gl": "Centro de mergullo", + "he": "מרכז צלילה", + "hu": "Búvárközpont", + "is": "Köfunarmiðstöð", + "it": "Centro subacqueo", + "ja": "ダイブセンター", + "ko": "다이브 센터", + "mk": "Нуркачки центар", + "nl": "Duikcentrum", + "no": "Dykkesenter", + "pl": "Centrum nurkowe", + "pt-BR": "Centro de mergulho", + "pt": "Centro de mergulho", + "sk": "Centrum potápania", + "sr": "Ронилачки центар", + "sv": "Dykcenter", + "tr": "Dalış Merkezi", + "uk": "Центр навчання підводного плавання", + "vi": "Trung tâm Lặn biển", + "zh-CN": "潜水中心", + "zh-HK": "潛水中心", + "zh-TW": "潛水中心" + } + }, + "amenity/doctors": { + "title": { + "C": "Doctor", + "ar": "طبيب", + "ast": "Doctor", + "ca": "Doctor", + "ckb": "پزیشک", + "cs": "Lékař", + "da": "Læge", + "de": "Arzt, Ärztin", + "el": "Ιατρός", + "en-GB": "Doctor", + "en": "Doctor", + "eo": "Kabineto de kuracisto", + "es": "Doctor", + "et": "Arst", + "eu": "Mediku", + "fa": "مطب دکتر", + "fi": "Yksityinen lääkäri", + "fr": "Médecin", + "gl": "Doutor", + "he": "רופא", + "hr": "Doktor", + "hu": "Orvos", + "is": "Læknir", + "it": "Medico di base", + "ja": "医院(小規模病院)", + "kn": "ವೈದ್ಯರು", + "ko": "의원", + "lt": "Daktaras", + "lv": "Dakteris", + "mk": "Лекар", + "nl": "Dokter", + "no": "Lege", + "pl": "Gabinet lekarski lub przychodnia", + "pt-BR": "Consultório médico", + "pt": "Consultório médico", + "ro": "Doctor", + "ru": "Кабинет врача", + "sk": "Doktor", + "sl": "Zdravnik", + "sr": "Доктор", + "sv": "Doktor", + "ta": "மருத்துவர்", + "tr": "Doktor", + "uk": "Лікар", + "vi": "Bác sĩ", + "yue": "醫生", + "zh-CN": "医师", + "zh-HK": "醫生", + "zh-TW": "醫生" + } + }, + "amenity/dojo": { + "title": { + "C": "Dojo / Martial Arts Academy", + "ar": "دوجو / أكاديمية الفنون القتالية", + "ast": "Dojo / Academia d'artes marciales", + "ca": "Dojo / Acadèmia d'arts marcials", + "cs": "Škola bojových umění", + "da": "Dojo/Kampsportsakademi", + "de": "Kampfsportstudio", + "el": "Ντότζο/ Σχολή Πολεμικών Τεχνών", + "en-GB": "Dojo / Martial Arts Academy", + "en": "Dojo / Martial Arts Academy", + "eo": "Doĵo / batalart-lernejo", + "es": "Academia de artes marciales", + "fa": "باشگاه / آموزشگاه هنرهای رزمی", + "fi": "Japanilaisten itsepuolustuslajien harjoittelupaikka", + "fr": "Dojo", + "gl": "Dojo/academia de artes marciais", + "he": "דוג׳ו / מרכז לאומנויות לחימה", + "hr": "Škola borilačkih vještina", + "hu": "Harcművészeti edzőterem / dodzso", + "id": "Sasana Bela Diri", + "is": "Dojo / Bardagaíþróttir", + "it": "Dojo/Accademia di arti marziali", + "ja": "道場", + "ko": "도장 / 무술 학원", + "lv": "Dojo / Karatē apmācība", + "mk": "Училиште за боречки вештини", + "nl": "Dojo / School voor Japanse krijgskunsten", + "pl": "Dojo/szkoła sztuk walki", + "pt-BR": "Academia de Artes Marciais", + "pt": "Centro de artes marciais", + "ru": "Додзё / Школа боевых искусств", + "sk": "Škola bojových umení", + "sl": "Dojo in šola borilnih veščin", + "sr": "Школа борилачких вештина", + "sv": "Dojo / Akademi för kampsport", + "tr": "Dövüş Sanatları Akademisi", + "uk": "Додзьо / Школа бойових мистецтв", + "vi": "Võ đường", + "zh-CN": "道场/武术学院", + "zh-HK": "道場/武術學院", + "zh-TW": "道場/武術研習班" + } + }, + "amenity/dressing_room": { + "title": { + "C": "Changing Room", + "cs": "kabinka pro převlečení", + "de": "Umkleideraum", + "el": "Αποδυτήρια", + "en": "Changing Room", + "eo": "Vestejo", + "es": "Vestuario", + "fa": "اتاق تعویض لباس", + "fi": "Pukuhuone", + "fr": "Vestiaire", + "gl": "Vestiario", + "he": "חדר הלבשה", + "hu": "Öltöző", + "it": "Camerino", + "ja": "更衣室", + "ko": "탈의실", + "mk": "Соблекувална", + "nl": "Kleedkamer", + "no": "Garderobe", + "pl": "Przebieralnia", + "pt-BR": "Vestiário", + "pt": "Cabine de provas", + "sk": "Šatňa", + "sr": "Свлачионица", + "sv": "Omklädningsrum", + "tr": "Giyinme Odası", + "uk": "Роздягальня", + "vi": "Phòng Thay đồ", + "zh-CN": "更衣室", + "zh-TW": "更衣室" + } + }, + "amenity/drinking_water": { + "title": { + "C": "Drinking Water", + "af": "Drinkwater", + "ar": "مياه شرب", + "ast": "Agua potable", + "bg": "Чешма", + "bn": "পানীয় জল", + "bs": "Voda za piće", + "ca": "Aigua apta per al consum", + "ckb": "ئاوی خواردنەوە", + "cs": "Pitná voda", + "da": "Drikkevand", + "de": "Trinkwasser", + "el": "Πόσιμο Νερό", + "en-GB": "Drinking Water", + "en": "Drinking Water", + "eo": "Trinkakvejo", + "es": "Fuente de agua potable", + "et": "Joogivesi", + "eu": "Ur edangarria", + "fa": "آب آشامیدنی", + "fi": "Juomavesipiste", + "fr": "Eau potable", + "gl": "Fonte de auga potábel", + "he": "מי שתייה", + "hi": "पीने का पानी", + "hr": "Pitka voda", + "hu": "Ivóvíz", + "id": "Air Minum", + "is": "Drykkjarvatn", + "it": "Fontanella", + "ja": "水飲み場", + "ko": "식수대", + "lt": "Geriamas vanduo", + "lv": "Dzeramūdens", + "mk": "Пивка вода", + "nl": "Drinkwaterkraantje", + "no": "Drikkevann", + "pl": "Woda pitna", + "pt-BR": "Bebedouro", + "pt": "Água potável", + "ro": "Apă de Băut", + "ru": "Питьевая вода", + "si": "බොනවතුර", + "sk": "Pitná voda", + "sl": "Pitna voda", + "sr": "Пијаћа вода", + "sv": "Dricksvatten", + "ta": "குடிநீர்", + "te": "తాగే నీరు", + "tr": "İçme Suyu", + "uk": "Питна вода", + "vi": "Nước Uống", + "yue": "飲水處", + "zh-CN": "饮水处", + "zh-HK": "飲用水", + "zh-TW": "飲水機" + } + }, + "amenity/driving_school": { + "title": { + "C": "Driving School", + "ar": "مدرسة تعليم القيادة", + "ast": "Autoescuela", + "ca": "Autoescola", + "cs": "Autoškola", + "da": "Køreskole", + "de": "Fahrschule", + "el": "Σχολή Οδήγησης", + "en-GB": "Driving School", + "en": "Driving School", + "eo": "Stirlernejo", + "es": "Escuela de conducción", + "et": "Sõidukool", + "eu": "Auto-eskola", + "fa": "آموزشگاه رانندگی", + "fi": "Autokoulu", + "fr": "Auto-école", + "gl": "Autoescola", + "he": "בית ספר לנהיגה", + "hu": "Autósiskola", + "is": "Ökuskóli", + "it": "Scuola guida", + "ja": "自動車教習所", + "ko": "운전학원", + "lt": "Vairavimo mokykla", + "lv": "Autoskola", + "mk": "Автоучилиште", + "ms": "Sekolah Memandu", + "nl": "Rijschool", + "no": "Trafikkskole", + "pl": "Szkoła nauki jazdy", + "pt-BR": "Auto escola", + "pt": "Escola de condução", + "ro": "Școală de Șoferi", + "ru": "Автошкола", + "sk": "Autoškola", + "sl": "Avtošola", + "sr": "Ауто школа", + "sv": "Trafikskola", + "ta": "ஓட்டுநர் பள்ளி", + "tr": "Sürücü Kursu", + "uk": "Автошкола", + "vi": "Trường Dạy Lái Xe", + "zh-CN": "驾校", + "zh-HK": "駕駛學校", + "zh-TW": "駕訓班" + } + }, + "amenity/events_venue": { + "title": { + "C": "Events Venue", + "ar": "مكان الأحداث", + "cs": "kulturní sál", + "da": "Begivenhedsarena", + "de": "Veranstaltungszentrum", + "en": "Events Venue", + "eo": "Domo de ceremonioj", + "es": "Lugar de eventos", + "et": "Ürituste toimumiskoht", + "fa": "تالار", + "fi": "Tapahtumahalli", + "fr": "Établissement accueillant des événements", + "gl": "Lugar de eventos", + "he": "מתחם אירועים", + "it": "Sala eventi", + "ja": "イベント施設", + "ko": "행사장", + "mk": "Одржувалиште на настани", + "nl": "Evenementenlocatie", + "no": "Arrangementsted", + "pl": "Sala bankietowa", + "pt-BR": "Local de eventos", + "pt": "Espaço para eventos", + "sv": "Evenemangsplats/festlokal", + "tr": "Etkinlikler Meydanı", + "uk": "Банкетна зала", + "vi": "Trung tâm Sự kiện", + "zh-TW": "活動場館" + } + }, + "amenity/exhibition_centre": { + "title": { + "C": "Exposition Center", + "cs": "veletržní palác", + "de": "Messezentrum", + "en": "Exposition Center", + "eo": "Centro de ekspozicioj kaj foiroj", + "es": "Centro de exposiciones", + "fa": "مرکز نمایشگاهی ، عرضه", + "fi": "Messukeskus", + "fr": "Centre d'expositions", + "gl": "Centro de exposicións", + "he": "מרכז כנסים", + "it": "Centro Espositivo", + "ja": "展示場", + "ko": "전시회장", + "mk": "Изложбен центар", + "nl": "Expo center", + "pl": "Centrum targowo-wystawiennicze", + "pt-BR": "Centro de exposições", + "pt": "Centro de exposições", + "sk": "Výstavné centrum", + "sr": "Изложбени центар", + "sv": "Utställningscenter/Mässa", + "tr": "Fuar Merkezi", + "uk": "Виставковий центр", + "vi": "Trung tâm Triển lãm", + "zh-TW": "展覽中心" + } + }, + "amenity/fast_food": { + "title": { + "C": "Fast Food", + "af": "Kitskos", + "ar": "وجبات سريعة", + "ast": "Comida rápida", + "bg": "Бърза закуска", + "bn": "ফাস্টফুড", + "bs": "Fast Food", + "ca": "Local de menjar ràpid", + "ckb": "خواردنی خێرا", + "cs": "Rychlé občerstvení", + "da": "Fast food", + "de": "Schnellimbiss", + "dv": "ފާސްޓް ފުޑް", + "el": "Ταχυφαγείο", + "en-GB": "Fast Food", + "en": "Fast Food", + "eo": "Rapidmanĝejo", + "es": "Comida rápida", + "et": "Kiirtoitlustus", + "eu": "Janari azkarra", + "fa": "فست فود", + "fi": "Pikaruokaravintola", + "fr": "Restauration rapide", + "gl": "Comida rápida", + "he": "מזון מהיר", + "hr": "Brza hrana", + "hu": "Gyorsétterem", + "hy": "Արագ սնունդ", + "id": "Makanan Cepat Saji", + "is": "Skyndibiti", + "it": "Fast Food", + "ja": "ファストフード全般", + "ko": "패스트푸드", + "lt": "Greitas maistas", + "lv": "Ātrās ēdināšanas iestāde", + "mk": "Брза храна", + "ms": "Makanan Segera", + "ne": "फास्ट फूड", + "nl": "Fastfoodrestaurant", + "no": "Hurtigmat", + "pl": "Bar / fast food", + "pt-BR": "Lanchonete", + "pt": "Comida rápida", + "ro": "Fast Food", + "ru": "Фаст-фуд", + "sk": "Rýchle občerstvenie", + "sl": "Hitra prehrana", + "so": "Cuntooyinka Fudud", + "sr": "Брза храна", + "sv": "Snabbmat", + "ta": "துரித உணவு", + "tr": "Fast Food", + "uk": "Фаст-Фуд", + "vi": "Nhà hàng Ăn nhanh", + "yue": "快餐店", + "zh-CN": "快餐店", + "zh-HK": "快餐店", + "zh-TW": "速食餐廳", + "zh": "快餐" + } + }, + "amenity/fire_station": { + "title": { + "C": "Fire Station", + "af": "Brandweerstasie", + "ar": "محطة إطفاء حريق", + "ast": "Parque de bomberos", + "bg": "Пожарна", + "bn": "দমকল", + "bs": "Vatrogasna stanica", + "ca": "Parc de bombers", + "cs": "Hasiči", + "da": "Brandstation", + "de": "Feuerwehrhaus", + "el": "Πυροσβεστικός Σταθμός", + "en-GB": "Fire Station", + "en": "Fire Station", + "eo": "Fajrobrigadejo", + "es": "Estación de bomberos", + "et": "Päästedepoo", + "eu": "Suhiltzaile-etxe", + "fa": "ایستگاه آتش نشانی", + "fi": "Paloasema", + "fr": "Caserne de pompiers", + "gl": "Parque de bombeiros", + "he": "תחנת כיבוי אש", + "hr": "Vatrogasna postaja", + "hu": "Tűzoltóság", + "id": "Kantor Pemadam Kebakaran", + "is": "Slökkvistöð", + "it": "Caserma dei vigili del fuoco", + "ja": "消防署", + "kn": "ಅಗ್ನಿಶಾಮಕ ಕೇಂದ್ರ", + "ko": "소방서", + "lt": "Gaisrinė", + "lv": "Ugunsdzēsēju stacija", + "mk": "Противпожарна станица", + "ms": "Balai Bomba", + "nl": "Brandweerkazerne", + "no": "Brannstasjon", + "pl": "Remiza strażacka", + "pt-BR": "Posto de bombeiros", + "pt": "Quartel de bombeiros", + "ro": "Pompieri", + "ru": "Пожарная часть", + "sk": "Požiarna stanica", + "sl": "Gasilska postaja", + "sr": "Ватрогасна станица", + "sv": "Brandstation", + "ta": "தீயணைப்பு நிலையம்", + "tr": "İtfaiye", + "uk": "Пожежна станція", + "vi": "Trạm Cứu hỏa", + "yue": "滅火局", + "zh-CN": "消防站", + "zh-HK": "消防局", + "zh-TW": "消防局", + "zh": "消防站" + } + }, + "amenity/food_court": { + "title": { + "C": "Food Court", + "ar": "قاعة طعام", + "cs": "Společná jídelní plocha více restaurací", + "da": "Torvehaller", + "de": "Gemeinschaftlicher Gastronomiebereich", + "el": "Χώρος Εστίασης", + "en-GB": "Food Court", + "en": "Food Court", + "eo": "Manĝ-bazaro", + "es": "Plaza de comida", + "et": "Toiduväljak", + "eu": "Bazkaltzeko eremua", + "fa": "فودکورت", + "fi": "Ravintolamaailma", + "fr": "Aire de restauration, food-court", + "gl": "Zona de comidas", + "he": "מתחם מזון", + "hu": "Étkezőtér", + "is": "Matarmarkaður", + "it": "Zona ristorazione", + "ja": "フードコート", + "ko": "푸드코트", + "lv": "Ēdnīca", + "mk": "Сала за брза храна", + "ms": "Medan Selera", + "nl": "Eetplaats omringd door fastfoodzaken", + "no": "Mathall", + "pl": "Strefa gastronomiczna – (w centrum handlowym)", + "pt-BR": "Praça de alimentação", + "pt": "Praça de alimentação", + "ru": "Ресторанный дворик", + "sk": "Stravovacia zóna", + "sl": "Skupni jedilni prostor", + "sv": "Restaurangtorg", + "tr": "Yemek Yeri", + "uk": "Фуд-корт", + "vi": "Trung tâm Ẩm thực", + "zh-CN": "美食广场", + "zh-HK": "美食廣場", + "zh-TW": "美食街" + } + }, + "amenity/fountain": { + "title": { + "C": "Fountain", + "af": "Fontein", + "ar": "نافورة", + "ast": "Fonte d'adornu", + "bg": "Фонтан", + "bn": "ঝর্না", + "bs": "Fontana", + "ca": "Font", + "ckb": "نافورە", + "cs": "Fontána, vodotrysk", + "da": "Springvand", + "de": "Springbrunnen", + "el": "Σιντριβάνι", + "en-GB": "Fountain", + "en": "Fountain", + "eo": "Fontano", + "es": "Fuente o surtidor ornamental", + "et": "Purskkaev", + "eu": "Iturri", + "fa": "فواره", + "fi": "Suihkulähde", + "fr": "Fontaine", + "gl": "Fonte ornamental", + "he": "מזרקה", + "hr": "Fontana", + "hu": "Szökőkút", + "id": "Air Mancur", + "is": "Gosbrunnur", + "it": "Fontana (decorativa)", + "ja": "噴水", + "kn": "ಬುಗ್ಗೆ", + "ko": "분수대", + "lt": "Fontanas", + "lv": "Strūklaka", + "mk": "Фонтана", + "nl": "Fontein", + "no": "Fontene", + "pl": "Fontanna", + "pt-BR": "Fonte", + "pt": "Fonte", + "ro": "Fântână", + "ru": "Фонтан", + "sk": "Fontána", + "sl": "Vodomet", + "sr": "Фонтана", + "sv": "Fontän", + "tr": "Su Fıskiyesi", + "uk": "Фонтан", + "vi": "Vòi nước", + "yue": "噴水池", + "zh-CN": "喷泉", + "zh-HK": "噴水池", + "zh-TW": "噴水池", + "zh": "喷泉" + } + }, + "amenity/fuel": { + "title": { + "C": "Gas Station", + "af": "Petrolstasie", + "ar": "محطة وقود", + "ast": "Gasolinera", + "bg": "Бензиностанция", + "bn": "গ্যাস স্টেশন", + "bs": "Benzinska pumpa", + "ca": "Benzinera", + "cs": "Čerpací stanice", + "da": "Tankstation", + "de": "Tankstelle", + "el": "Βενζινάδικο", + "en-AU": "Service Station", + "en-GB": "Petrol Station", + "en": "Gas Station", + "eo": "Benzinejo", + "es": "Estación de servicio / Gasolinera", + "et": "Tankla", + "eu": "Gasolindegi", + "fa": "جایگاه سوخت", + "fi": "Huoltoasema", + "fr": "Station-service", + "gl": "Gasolineira", + "he": "תחנת דלק", + "hr": "Benzinska postaja", + "hu": "Benzinkút", + "id": "Pom Bensin", + "is": "Bensínstöð", + "it": "Stazione di servizio", + "ja": "ガソリンスタンド", + "ko": "주유소", + "lt": "Degalinė", + "lv": "Degvielas uzpildes stacija", + "mk": "Бензинска станица", + "ms": "Stesen Minyak", + "nl": "Tankstation", + "no": "Bensinstasjon", + "pl": "Stacja paliw", + "pt-BR": "Posto de combustível", + "pt": "Posto de combustível", + "ro": "Benzinărie", + "ru": "АЗС", + "sk": "Čerpacia stanica", + "sl": "Bencinska črpalka", + "sr": "Бензинска пумпа", + "sv": "Bensinstation", + "tr": "Benzinci", + "uk": "Заправка", + "vi": "Cây xăng", + "yue": "油站", + "zh-CN": "加油站", + "zh-HK": "油站", + "zh-TW": "加油站", + "zh": "加油站" + } + }, + "amenity/gambling": { + "title": { + "C": "Gambling Hall", + "cs": "místo pro hazard", + "de": "Spielhalle", + "el": "Αίθουσα Τυχερών Παιγνίων για Διασκέδαση", + "en": "Gambling Hall", + "eo": "Hazardludejo", + "es": "Salón de juegos de azar", + "fa": "سالن قمار", + "fi": "Uhkapelisali", + "fr": "Salle de jeux d'argent", + "he": "היכל הימורים", + "it": "Sala da Gioco", + "ja": "ギャンブル場", + "ko": "도박장", + "mk": "Сала за коцкање", + "nl": "Gokhal", + "pl": "Salon pachinko/bingo", + "pt-BR": "Sala de jogos", + "pt": "Sala de bingo", + "sk": "Herňa", + "sr": "Коцкарска дворана", + "sv": "Spelhall", + "tr": "Kumar Salonu", + "uk": "Ігорна зала", + "vi": "Phòng Chơi bài", + "zh-CN": "赌场厅", + "zh-TW": "賭博場所" + } + }, + "amenity/give_box": { + "title": { + "C": "Free Box", + "cs": "Darovací box", + "de": "Schenkschrank/Tauschschrank", + "en": "Free Box", + "eo": "Kesto de senpaga interŝanĝo", + "es": "Caja libre", + "fa": "صندوق آزاد", + "gl": "Caixa libre", + "he": "תיבת הענקה", + "ja": "ギブボックス", + "mk": "Даровница", + "nl": "Ruilkast", + "pl": "Wystawka (wymiana używanych rzeczy)", + "pt-BR": "Caixa grátis", + "pt": "Caixa livre", + "sk": "Voľná kabína", + "sv": "Bortskänkningslåda", + "tr": "Ücretsiz Kutu", + "uk": "Безкоштовні речі", + "vi": "Thùng Tặng/Lấy", + "zh-TW": "禮物盒" + } + }, + "amenity/grave_yard": { + "title": { + "C": "Graveyard", + "af": "Begrafplaas", + "ar": "مقبرة", + "ast": "Enterramientos", + "bg": "Гробище", + "bn": "কবরখানা", + "bs": "Groblje", + "ca": "Cementiri", + "ckb": "گۆڕستان", + "cs": "Pohřebiště", + "da": "Gravplads", + "de": "Gräberfeld", + "el": "Κοιμητήριο", + "en-GB": "Graveyard", + "en": "Graveyard", + "eo": "Tombejo (ĉirkaŭpreĝeja)", + "es": "Camposanto", + "et": "Surnuaed", + "eu": "Hilerri", + "fa": "قبرستان محوطه امام‌زاده یا مکان متبرکه", + "fi": "Kirkkomaa", + "fr": "Lieu de sépulture attenant à un lieu de culte, cimetière paroissial", + "gl": "Camposanto", + "he": "בית עלמין", + "hr": "Groblje uz crkvu", + "hu": "Templom körüli temető", + "id": "Kuburan", + "is": "Grafreitur", + "it": "Cimitero", + "ja": "墓地(宗教施設内など、小)", + "kn": "ಶ್ಮಶಾನ", + "ko": "묘지", + "lt": "Kapinės prie bažnyčios", + "lv": "Kapi", + "mk": "Гробишта", + "nl": "Begraafplaats", + "no": "Kirkegård", + "pl": "Cmentarz przykościelny", + "pt-BR": "Cemitério paroquial", + "pt": "Sepultura (fora de cemitérios)", + "ro": "Cimitir", + "ru": "Небольшие захоронения при местах служения (церквях и т.п.)", + "sk": "Pohrebisko", + "sl": "Pokopališče", + "sr": "Гробље", + "sv": "Kyrkogård", + "ta": "இடுகாடு", + "te": "స్మశానం", + "tr": "Mezarlık", + "uk": "Цвинтар", + "vi": "Nghĩa địa tại Nhà thờ", + "yue": "墳地", + "zh-CN": "墓地", + "zh-HK": "墓地", + "zh-TW": "墓地", + "zh": "墓地" + } + }, + "amenity/grit_bin": { + "title": { + "C": "Grit Bin", + "ast": "Caxón de sal", + "ca": "Contenidor de sorra", + "cs": "Zásobník na posypový materiál", + "da": "Vejsaltkasse", + "de": "Streugutkiste", + "en-GB": "Grit Bin", + "en": "Grit Bin", + "eo": "Ujo kun sablo kaj salo", + "es": "Contenedor de gravilla", + "et": "Libedustõrje kast", + "eu": "Hare-ontzi", + "fa": "سطل شن", + "fi": "Hiekoitushiekkalaatikko", + "fr": "Bac à sel", + "gl": "Contedor de grava", + "he": "סל חצץ", + "hr": "Kanta sa šljunkom za poledicu", + "hu": "Útszóróanyagos láda", + "is": "Sandkista", + "it": "Cestino del sale", + "ja": "砂箱(降雪対策)", + "ko": "염화칼슘 보관소", + "lt": "Smėlio dėžė", + "lv": "Smilšu tvertne", + "mk": "Кутија за попескување", + "nl": "Bak met Mengeling van Strooizout en Grind", + "no": "Strøkasse", + "pl": "Pojemnik z piaskiem lub żwirem", + "pt-BR": "Caixa de Sal-Gema", + "pt": "Caixa de sal para estrada", + "ru": "Ящик с песком и солью (зимой)", + "sk": "Nádoba s posypom", + "sl": "Zabojnik za sol in pesek", + "sv": "Sandkista", + "tr": "Çakıl Kutusu", + "uk": "Контейнер з піском", + "vi": "Thùng Muối để Làm Tan Tuyết", + "zh-CN": "砂箱", + "zh-HK": "砂礫桶", + "zh-TW": "沙盒" + } + }, + "amenity/hospital": { + "title": { + "C": "Hospital Grounds", + "ar": "أرض مستشفى", + "ast": "Antoxana d'hospital", + "ca": "Hospital", + "cs": "Prostor nemocnice", + "da": "Hospitalsområde", + "de": "Krankenhaus", + "dv": "ހޮސްޕިޓަލް", + "el": "Χώρος Νοσοκομείου", + "en-GB": "Hospital Grounds", + "en": "Hospital Grounds", + "eo": "Malsanuleja tereno", + "es": "Terrenos del hospital", + "et": "Haigla territoorium", + "eu": "Ospitalearen Eremua", + "fa": "محیط بیمارستان", + "fi": "Sairaala-alue", + "fr": "Terrains hospitaliers", + "gl": "Área hospitalaria", + "he": "גן בית חולים", + "hr": "Bolničko zemljište", + "hu": "Kórház", + "id": "Lingkungan Rumah Sakit", + "is": "Spítalalóð", + "it": "Area ospedaliera", + "ja": "大規模病院(代表点または敷地)", + "ko": "병원 부지", + "lt": "Ligoninės kiemas", + "mk": "Болнички двор", + "ne": "अस्पताल मैदान", + "nl": "Ziekenhuisgebied", + "no": "Sykehusområde", + "pl": "Teren szpitala", + "pt-BR": "Hospital", + "pt": "Hospital", + "ro": "Spital", + "ru": "Больница", + "sk": "Nemocničný areál", + "sl": "Klinično središče", + "so": "Goob Isbitaal", + "sr": "Болнички круг", + "sv": "Sjukhusområde", + "ta": "மருத்துவமனை", + "tr": "Hastane", + "uk": "Територія лікарні", + "vi": "Sân Bệnh viện", + "yue": "醫院地", + "zh-CN": "医院", + "zh-HK": "醫院範圍", + "zh-TW": "醫院" + } + }, + "amenity/hunting_stand": { + "title": { + "C": "Hunting Stand", + "ast": "Puestu de caza", + "ca": "Punt de caça", + "cs": "Posed", + "da": "Jagttårn", + "de": "Jägerstand", + "el": "Καραούλι", + "en-GB": "Hunting Stand", + "en": "Hunting Stand", + "eo": "Altembusko ĉasada", + "es": "Puesto de caza", + "et": "Jahitorn", + "eu": "Ehiza postua", + "fa": "ایستگاه شکار", + "fi": "Metsästyspaikka", + "fr": "Mirador de chasse", + "gl": "Posto de caza", + "he": "עמדת ציד", + "hr": "Lovačka čeka", + "hu": "Magasles", + "is": "Skotvöllur", + "it": "Postazione da caccia", + "ja": "狩猟スタンド", + "ko": "사냥 스탠드", + "lt": "Medžioklės bokštelis", + "lv": "Medību stends", + "mk": "Ловен видиковец", + "nl": "Jachthut", + "no": "Jakttårn", + "pl": "Ambona strzelnicza", + "pt-BR": "Cabana de Caça", + "pt": "Torre de caça", + "ro": "Stand de Vânătoare", + "ru": "Охотничья вышка", + "sk": "Poľovnícka postriežka", + "sl": "Lovska preža", + "sr": "Чека", + "sv": "Jakttorn", + "tr": "Av Platformu", + "uk": "Мисливська вежа", + "vi": "Chỗ Săn Cao", + "zh-CN": "狩猎站", + "zh-HK": "狩獵台", + "zh-TW": "獵寮" + } + }, + "amenity/ice_cream": { + "title": { + "C": "Ice Cream Shop", + "ar": "محل بيع المثلجات", + "ast": "Xeladería", + "ca": "Gelateria", + "ckb": "فرۆشگای ساردەمەنی", + "cs": "Zmrzlina", + "da": "Ishus", + "de": "Eisgeschäft", + "el": "Παγωτατζίδικο", + "en-GB": "Ice Cream Shop", + "en": "Ice Cream Shop", + "eo": "Glaciaĵejo", + "es": "Heladería", + "et": "Jäätisekohvik", + "eu": "Izozki denda", + "fa": "بستنی فروشی", + "fi": "Jäätelön myyntipiste", + "fr": "Magasin de crèmes glacées", + "gl": "Xeadaría", + "he": "חנות גלידה", + "hu": "Fagylaltozó", + "is": "Ísbúð", + "it": "Gelateria", + "ja": "アイスクリーム店", + "kn": "ಐಸ್ ಕ್ರೀಮ್ ಅಂಗ", + "ko": "아이스크림 가게", + "lt": "Ledų parduotuvė", + "lv": "Saldējuma Veikals", + "mk": "Сладоледџилница", + "ms": "Kedai Ais Krim", + "nl": "IJskraam", + "no": "Iskrem Butikk", + "pl": "Lodziarnia", + "pt-BR": "Sorveteria", + "pt": "Geladaria", + "ro": "Magazin de Înghețată", + "ru": "Прилавок с мороженным", + "sk": "Obchod so zmrzlinou", + "sl": "Sladoledarna", + "sr": "Сладоледџиница", + "sv": "Glassaffär", + "tr": "Dondurmacı", + "uk": "Морозиво", + "vi": "Tiệm Kem", + "zh-CN": "冰淇淋店", + "zh-HK": "雪榚店", + "zh-TW": "冰淇淋店" + } + }, + "amenity/internet_cafe": { + "title": { + "C": "Internet Cafe", + "ar": "مقهى إنترنت", + "ca": "Cifercafè", + "cs": "Internetová kavárna", + "da": "Internetcafe", + "de": "Internetcafé", + "el": "Internet Cafe", + "en-GB": "Internet Cafe", + "en": "Internet Cafe", + "eo": "Retkafejo", + "es": "Cibercafé", + "et": "Internetikohvik", + "eu": "Internet kafetegi", + "fa": "کافی‌نت", + "fi": "Internetkahvila", + "fr": "Cybercafé", + "gl": "Internet café", + "he": "קפה אינטרנט", + "hu": "Internetkávézó", + "is": "Netkaffihús", + "it": "Internet Cafe", + "ja": "インターネットカフェ", + "ko": "PC방", + "lt": "Interneto kavinė", + "lv": "Interneta Kafejnīca", + "mk": "Интернет-кафуле", + "ms": "Kafe Internet", + "nl": "Internetcafé", + "no": "Internettkafé", + "pl": "Kafejka internetowa", + "pt-BR": "Internet Café", + "pt": "Cibercafé", + "ro": "Internet Cafe", + "ru": "Интернет-кафе", + "sk": "Internetová kaviareň", + "sl": "Internet Cafe", + "sr": "Интернет кафе", + "sv": "Internetkafé", + "tr": "İnternet Kafe", + "uk": "Інтернет кафе", + "vi": "Quán Internet", + "zh-CN": "网吧", + "zh-HK": "網吧", + "zh-TW": "網咖" + } + }, + "amenity/karaoke_box": { + "title": { + "C": "Karaoke Box", + "cs": "karaoke kabinka", + "de": "Karaoke-Box", + "en": "Karaoke Box", + "eo": "Karaokeejo", + "es": "Karaoke Box", + "fa": "جعبه کارائوکه (ابزار سرگرمی آوازخوانی)", + "fi": "Karaokekoppi", + "fr": "Karaoke", + "he": "תיבת קריוקי", + "it": "Karaoke", + "ja": "カラオケボックス", + "ko": "노래방", + "mk": "Просторија за караоке", + "nl": "Karaokehokje", + "pl": "Budka karaoke", + "pt-BR": "Caixa de Karaokê", + "pt": "Caixa de karaoke", + "sk": "Karaoke kabínka", + "sr": "Караоке кабина", + "sv": "Karaoke Box", + "tr": "Karaoke Kutusu", + "uk": "Кабінка караоке", + "vi": "Dàn Karaoke", + "zh-CN": "KTV亭", + "zh-TW": "卡拉 OK 包廂" + } + }, + "amenity/kindergarten": { + "title": { + "C": "Preschool / Kindergarten Grounds", + "ar": "مرحلة ما قبل المدرسة / رياض الأطفال", + "cs": "Prostor školky / předškolního zařízení", + "da": "Børnehave/vuggestue-grund", + "de": "Kindergarten", + "el": "Αυλή Νηπιαγωγείου", + "en": "Preschool / Kindergarten Grounds", + "eo": "Infanvartejo (ISCED 0)", + "es": "Terreno de preescolar / jardín de infantes", + "fa": "محوطه پیش‌دبستانی / مهدکودک", + "fi": "Esikoulu", + "gl": "Área escolar infantil", + "he": "מתחם גן/גן חובה", + "hr": "Zemljište dječjeg vrtića", + "it": "Area dell'asilo/scuola d'infanzia", + "ja": "幼稚園/保育園(代表点または敷地)", + "ko": "유치원 부지", + "mk": "Двор на детска градинка", + "nl": "Gebied van Crèche/Kleuterschool", + "no": "Førskole- / Barnehageområde", + "pl": "Teren przedszkola/żłobka", + "pt-BR": "Educação infantil", + "pt": "Infantário / pré-escola", + "ru": "Подготовительная школа / Детский сад", + "sk": "Materská škôlka", + "sr": "Предшколско двориште", + "sv": "Förskoleområde", + "tr": "Anaokulu Sahası", + "uk": "Територія дитячого садочка", + "vi": "Sân Nhà trẻ", + "zh-CN": "幼儿园场地", + "zh-TW": "幼兒園範圍" + } + }, + "amenity/kneipp_water_cure": { + "title": { + "C": "Kneipp Water Cure", + "cs": "Kneippova lázeň", + "de": "Kneippanlage", + "en": "Kneipp Water Cure", + "eo": "Naĝejeto", + "es": "Cura de agua Kneipp", + "fa": "تصفیه آب سباستین کنیپ / آب درمانی Kneipp", + "fr": "Cure par l'eau Kneipp", + "gl": "Augas termais Kneipp", + "he": "טיפול מים קנאיפ", + "it": "Cura Acquatica Kneipp", + "ja": "足浴場(ヨーロッパ)", + "mk": "Водотерапија Кнајп", + "nl": "Kneipp Waterbad", + "pl": "Basen Kneippa", + "pt-BR": "Cura da água do Kneipp", + "pt": "Balneário Kneippiano", + "sv": "Kneipp vattenterapi", + "tr": "Kneipp Hidroterapisi", + "uk": "Водолікарня", + "vi": "Bồn tắm Trị liệu Kneipp", + "zh-CN": "克奈圃水疗", + "zh-TW": "Kneipp 水療" + } + }, + "amenity/language_school": { + "title": { + "C": "Language School", + "ar": "مدرسة لغات", + "ca": "Escola d'idiomes", + "ckb": "قوتابخانەی زمان", + "cs": "Jazyková škola", + "da": "Sprogskole", + "de": "Sprachschule", + "el": "Φροντιστήριο Ξένων Γλωσσών", + "en": "Language School", + "eo": "Lingva lernejo", + "es": "Escuela de idiomas", + "eu": "Hizkuntz eskola", + "fa": "آموزشگاه زبان", + "fi": "Kielikoulu", + "fr": "École de langues", + "gl": "Escola de idiomas", + "he": "בית ספר לשפות", + "hu": "Nyelviskola", + "is": "Tungumálaskóli", + "it": "Scuola di lingue straniere", + "ja": "外国語教室", + "ko": "언어 학원", + "lt": "Kalbų mokykla", + "mk": "Училиште за јазици", + "nl": "Taalschool", + "no": "Språkskole", + "pl": "Szkoła językowa", + "pt-BR": "Escola de idiomas", + "pt": "Escola de línguas", + "ru": "Языковая школа", + "sk": "Jazyková škola", + "sr": "Језичка школа", + "sv": "Språkskola", + "ta": "மொழிப் பள்ளி", + "tr": "Dil Okulu", + "uk": "Мовна школа", + "vi": "Trường học Ngoại ngữ", + "zh-CN": "语言学校", + "zh-HK": "語言學校", + "zh-TW": "語言學校" + } + }, + "amenity/lavoir": { + "title": { + "C": "Lavoir", + "cs": "Lavor", + "de": "Waschhaus", + "en": "Lavoir", + "eo": "Vestaĵ-lavejo (ĉe rivero)", + "es": "Lavadero", + "fa": "محل شست‌وشوی لباس", + "fr": "Lavoir", + "gl": "Lavadoiro", + "he": "מקום מרחץ בגדים", + "it": "Lavatoio", + "ja": "共同洗い場", + "mk": "Пералница", + "nl": "Openbare wasplaats", + "no": "Vaskehus", + "pl": "Pralnia (przy rzece)", + "pt-BR": "Lavanderia pública", + "pt": "Lavadouro", + "sv": "Tvättbrygga", + "tr": "Yıkama Evi", + "uk": "Місце для прання", + "zh-TW": "洗手台" + } + }, + "amenity/letter_box": { + "title": { + "C": "Letter Box", + "cs": "domovní poštovní schránka", + "de": "Hausbriefkasten", + "en": "Letter Box", + "eo": "Leterkesto (riceva)", + "es": "Buzón", + "fa": "صندوق پستی", + "fi": "Asunnon postilaatikko", + "fr": "Boîte aux lettres privée", + "gl": "Caixa do correo", + "he": "תיבת מכתבים", + "hu": "Személyes postaláda", + "it": "Cassetta delle lettere", + "ja": "郵便受け", + "ko": "우편함", + "mk": "Поштенско сандаче", + "nl": "Brievenbus", + "no": "Postkasse", + "pl": "Prywatna skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Caixa de correio", + "sk": "Poštová schránka", + "sr": "Поштанско сандуче", + "sv": "Postlåda", + "tr": "Mektup Kutusu", + "uk": "Поштова скринька", + "vi": "Hòm thư Cá nhân", + "zh-CN": "信箱", + "zh-TW": "信箱" + } + }, + "amenity/library": { + "title": { + "C": "Library", + "af": "Biblioteek", + "ar": "مكتبة", + "ast": "Biblioteca", + "bg": "Библиотека", + "bn": "পাঠাগার", + "bs": "Biblioteka", + "ca": "Biblioteca", + "ckb": "پەڕتووکخانە", + "cs": "Knihovna", + "da": "Bibliotek", + "de": "Bibliothek", + "dv": "ލައިބްރަރީ", + "el": "Βιβλιοθήκη", + "en-GB": "Library", + "en": "Library", + "eo": "Biblioteko", + "es": "Biblioteca", + "et": "Raamatukogu", + "eu": "Liburutegi", + "fa": "کتابخانه", + "fi": "Kirjasto", + "fr": "Bibliothèque", + "gl": "Biblioteca", + "he": "ספריה", + "hr": "Knjižnica", + "hu": "Könyvtár", + "id": "Perpustakaan", + "is": "Bókasafn", + "it": "Biblioteca", + "ja": "図書館", + "kn": "ಗ್ರಂಥಾಲಯ", + "ko": "도서관", + "lt": "Biblioteka", + "lv": "Bibliotēka", + "mk": "Библиотека", + "ms": "Perpustakaan", + "nl": "Bibliotheek", + "no": "Bibliotek", + "pl": "Biblioteka", + "pt-BR": "Biblioteca", + "pt": "Biblioteca", + "ro": "Librărie", + "ru": "Библиотека", + "sk": "Knižnica", + "sl": "Knjižnica", + "so": "Maktabad", + "sr": "Библиотека", + "sv": "Bibliotek", + "ta": "புத்தகச்சாலை", + "te": "గ్రంథాలయం", + "tr": "Kütüphane", + "uk": "Бібліотека", + "vi": "Thư viện", + "yue": "圖書館", + "zh-CN": "图书馆", + "zh-HK": "圖書館", + "zh-TW": "圖書館", + "zh": "图书馆" + } + }, + "amenity/loading_dock": { + "title": { + "C": "Loading Dock", + "cs": "nakládací rampa", + "de": "Laderampe", + "el": "Αποβάθρα Φόρτωσης", + "en": "Loading Dock", + "eo": "Ŝarĝ-kajo", + "es": "Muelle de carga", + "fa": "اسکله بارگیری", + "fi": "Lastauslaituri", + "fr": "Quai de chargement", + "gl": "Peirao de carga", + "he": "מתחם העמסה", + "hu": "Rakodó dokk", + "it": "Zona di carico", + "ja": "出入口(貨物)", + "mk": "Товарна рампа", + "nl": "Laadkaai", + "no": "Lastebrygge", + "pl": "Dok załadunkowy", + "pt-BR": "Doca de carregamento", + "pt": "Cais de carga", + "sk": "Nakladací prístav", + "sv": "Lastkaj", + "tr": "Yükleme Rıhtımı", + "uk": "Вантажна рампа", + "vi": "Khu Bốc dỡ Hàng hóa", + "zh-CN": "装卸码头", + "zh-TW": "裝卸碼頭" + } + }, + "amenity/lounger": { + "title": { + "C": "Lounger", + "cs": "Lehátka", + "de": "Liege", + "en": "Lounger", + "eo": "Kuŝseĝo", + "es": "Sillón de jardín / Tumbona", + "fa": "صندلی راحتی", + "fr": "Chaise longue", + "he": "מיטת שיזוף", + "it": "Sdraio", + "ja": "サマーベッド", + "ko": "일광욕용 의자", + "mk": "Лежалка", + "nl": "Ligstoel", + "pl": "Leżak", + "pt-BR": "Espreguiçadeira", + "pt": "Espreguiçadeira", + "sk": "Ležadlo", + "sv": "Solstol(ar)", + "tr": "Şezlong", + "uk": "Лежак", + "vi": "Ghế Tắm nắng", + "zh-TW": "躺椅區" + } + }, + "amenity/love_hotel": { + "title": { + "C": "Love Hotel", + "cs": "Hodinový hotel", + "da": "Kærlighedshotel", + "de": "Stundenhotel", + "el": "Ξενοδοχείο Ημιδιαμονής", + "en-GB": "Love Hotel", + "en": "Love Hotel", + "eo": "Amor-hotelo", + "es": "Hotel para parejas", + "fa": "هتل عشق", + "fi": "Tuntihotelli", + "fr": "Love hôtel", + "gl": "Hotel para parellas", + "he": "מלון לפי שעות", + "hu": "Love hotel", + "is": "Ástarhótel", + "it": "Love Hotel", + "ja": "ラブホテル", + "ko": "러브 호텔", + "mk": "Љубовен хотел", + "nl": "Love hotel", + "no": "Kjærlighetshotell", + "pl": "Love hotel", + "pt-BR": "Motel", + "pt": "Motel para casais", + "ru": "Отель любви", + "sk": "Hodinový hotel", + "sr": "Љубавни хотел", + "sv": "Kärlekshotell", + "tr": "Aşk Oteli", + "uk": "Готель кохання", + "vi": "Khách sạn Tình yêu", + "zh-CN": "爱情宾馆", + "zh-HK": "愛情酒店", + "zh-TW": "情趣旅館" + } + }, + "amenity/marketplace": { + "title": { + "C": "Marketplace", + "af": "Markplein", + "ar": "محل تسوق", + "ast": "Mercáu", + "bg": "Пазар", + "bn": "বাজার", + "bs": "Tržnica", + "ca": "Mercat", + "cs": "Tržiště", + "da": "Markedsplads", + "de": "Marktplatz", + "el": "Αγορά", + "en-GB": "Marketplace", + "en": "Marketplace", + "eo": "Bazaro", + "es": "Mercado", + "et": "Turg", + "eu": "Merkatu", + "fa": "بازار", + "fi": "Tori", + "fr": "Marché", + "gl": "Mercado", + "he": "שוק", + "hr": "Tržnica", + "hu": "Piac", + "id": "Pasar", + "is": "Markaður", + "it": "Mercato", + "ja": "市場", + "ko": "시장", + "lt": "Prekyvietė", + "lv": "Tirgus", + "mk": "Пазар", + "nl": "Marktplaats", + "no": "Markedsplass", + "pl": "Targowisko / Hala targowa", + "pt-BR": "Feira ou mercado público", + "pt": "Mercado", + "ro": "Piață", + "ru": "Рынок", + "sk": "Tržnica", + "sl": "Tržnica", + "sr": "Тржница", + "sv": "Marknadsplats", + "ta": "பஜார்", + "tr": "Çarşı", + "uk": "Ринок", + "vi": "Chợ phiên", + "yue": "街市", + "zh-CN": "市场", + "zh-HK": "街市", + "zh-TW": "市場", + "zh": "市场" + } + }, + "amenity/monastery": { + "title": { + "C": "Monastery Grounds", + "cs": "Klášterní pozemky", + "da": "Kloster-område", + "de": "Klostergelände", + "el": "Ιερά Μονή", + "en-GB": "Monastery Grounds", + "en": "Monastery Grounds", + "eo": "Monaĥeja tereno", + "es": "Terrenos del monasterio", + "et": "Kloostriala", + "eu": "Monastegiaren eremu", + "fa": "زمین های صومعه", + "fi": "Luostari", + "fr": "Terrain de monastère", + "gl": "Área de mosteiro", + "he": "מתחם מנזר", + "hu": "Kolostor", + "is": "Klausturlóð", + "it": "Monastero", + "ja": "修道院", + "ko": "수도원 부지", + "mk": "Манастир", + "nl": "Kloostergebied", + "no": "Klosterområde", + "pl": "Teren klasztoru", + "pt-BR": "Jardins do mosteiro", + "pt": "Mosteiro", + "ru": "Монастырь", + "sk": "Pozemky kláštora", + "sr": "Манастирско земљиште", + "sv": "Klosterområde", + "tr": "Manastır Alanı", + "uk": "Територія монастиря", + "vi": "Sân Tu viện", + "zh-HK": "寺院範圍", + "zh-TW": "修道院" + } + }, + "amenity/money_transfer": { + "title": { + "C": "Money Transfer Station", + "cs": "místo pro peněžní převody", + "de": "Geldtransferstation", + "el": "Υπηρεσία Μεταφοράς Χρημάτων", + "en": "Money Transfer Station", + "eo": "Centro de mon-transigo", + "es": "Estación de transferencia de dinero", + "fa": "ایستگاه انتقال پول", + "fi": "Rahansiirtopiste", + "fr": "Transfert d'argent", + "gl": "Estación de transferencia de diñeiro", + "he": "תחנת העברת כספים", + "hu": "Pénz átutaló hely", + "it": "Agenzia di Money Transfer", + "ja": "海外送金所", + "ko": "환전소", + "mk": "Испраќање на пари", + "nl": "Wisselkantoor", + "no": "Pengeoverføringsstasjon", + "pl": "Placówka przekazów pieniężnych", + "pt-BR": "Estação de transferência de dinheiro", + "pt": "Serviço de transferência de dinheiro", + "ru": "Денежные переводы", + "sk": "Stanica prevodi peňazí", + "sv": "Pengaöverföring", + "tr": "Para Transfer İstasyonu", + "uk": "Грошові перекази", + "vi": "Gửi Tiền", + "zh-HK": "滙款中心", + "zh-TW": "匯款站" + } + }, + "amenity/mortuary": { + "title": { + "C": "Morgue", + "cs": "Márnice", + "da": "Lighus", + "de": "Leichenhaus", + "en": "Morgue", + "eo": "Kadavrejo", + "es": "Morgue", + "fa": "سردخانه", + "fi": "Ruumishuone", + "fr": "Morgue", + "gl": "Velorio / tanatorio", + "he": "חדר מתים", + "it": "Obitorio", + "ja": "死体安置所", + "ko": "영안실", + "mk": "Мртовечница", + "nl": "Lijkenhuis", + "pl": "Kostnica", + "pt-BR": "Necrotério", + "pt": "Morgue", + "sk": "Márnica", + "sv": "Bårhus", + "tr": "Morg", + "uk": "Морг", + "vi": "Nhà xác", + "zh-TW": "太平間" + } + }, + "amenity/motorcycle_parking": { + "title": { + "C": "Motorcycle Parking", + "ar": "موقف دراجات نارية", + "ast": "Aparcaderu de motos", + "ca": "Aparcament per a motocicletes", + "cs": "Parkování pro motorky", + "da": "Motorcykelparkering", + "de": "Motorradparkplatz", + "el": "Στάθμευση μοτοσυκλετών", + "en-GB": "Motorcycle Parking", + "en": "Motorcycle Parking", + "eo": "Motorcikla parkumejo", + "es": "Estacionamiento de motos", + "et": "Mootorratta parkla", + "eu": "Motorren aparkalekua", + "fa": "پارکینگ موتور سیکلت", + "fi": "Moottoripyöräpysäköinti", + "fr": "Parking pour motocyclettes", + "gl": "Aparcadoiro de motos", + "he": "חניית אופנועים", + "hr": "Parkiralište za motocikle", + "hu": "Motorkerékpár-parkoló", + "id": "Parkir Motor", + "is": "Mótorhjólastæði", + "it": "Parcheggio moto", + "ja": "オートバイの駐車場", + "ko": "오토바이 주차장", + "lt": "Motociklų stovėjimo aikštelė", + "lv": "Motociklu stāvvieta", + "mk": "Паркиралиште за мотоцикли", + "ms": "Tempat Letak Motosikal", + "nl": "Motorfietsparking", + "no": "Motorsykkelparkering", + "pl": "Parking dla motocykli", + "pt-BR": "Estacionamento de motos", + "pt": "Parque de motas", + "ro": "Parcare de Motociclete", + "ru": "Парковка для мотоциклов", + "sk": "Parkovanie pre motocykle", + "sl": "Parkirišče za motorje", + "sr": "Паркинг за мотоцикле", + "sv": "Motorcykelparkering", + "ta": "ஈருருளை நிறுத்துமிடம்", + "tr": "Motosiklet Parkı", + "uk": "Стоянка для мотоциклів", + "vi": "Chỗ Đậu Xe máy", + "zh-CN": "摩托车停车场", + "zh-HK": "電單車停車位", + "zh-TW": "機車停車場" + } + }, + "amenity/motorcycle_rental": { + "title": { + "C": "Motorcycle Rental", + "de": "Motorradverleih", + "en": "Motorcycle Rental", + "eo": "Motorcikl-pruntejo", + "es": "Alquiler de motos", + "fa": "اجاره موتور سیکلت", + "ja": "レンタルバイク", + "mk": "Изнајмување мотоцикли", + "nl": "Motorfietsverhuur", + "pl": "Wypożyczalnia motocykli", + "pt-BR": "Aluguel de motocicleta", + "pt": "Aluguer de motas", + "sv": "Motorcykeluthyrning", + "tr": "Motosiklet Kiralama", + "uk": "Прокат мотоциклів", + "zh-TW": "摩托車租賃" + } + }, + "amenity/music_school": { + "title": { + "C": "Music School", + "ar": "مدرسة موسيقى", + "ast": "Academia de música", + "ca": "Escola de música", + "ckb": "قوتابخانەی مۆسیقی", + "cs": "Hudební škola", + "da": "Musikskole", + "de": "Musikschule", + "el": "Μουσικό Σχολείο", + "en-GB": "Music School", + "en": "Music School", + "eo": "Muzika lernejo", + "es": "Escuela de música", + "eu": "Musika eskola", + "fa": "آموزشگاه موسیقی", + "fi": "Musiikkikoulu", + "fr": "École de musique", + "gl": "Escola de música", + "he": "בית ספר למוזיקה", + "hu": "Zeneiskola", + "is": "Tónlistarskóli", + "it": "Scuola di musica", + "ja": "音楽学校", + "ko": "음악 학교", + "lt": "Muzikos mokykla", + "lv": "Mūzikas skola", + "mk": "Музичко училиште", + "ms": "Sekolah Muzik", + "nl": "Muziekschool", + "no": "Musikkskole", + "pl": "Szkoła muzyczna niepodlegająca MEN", + "pt-BR": "Escola de Música", + "pt": "Escola de música", + "ru": "Музыкальная школа", + "sk": "Hudobná škola", + "sl": "Glasbena šola", + "sr": "Музичка школа", + "sv": "Musikskola", + "ta": "இசைப் பள்ளி", + "tr": "Müzik Okulu", + "uk": "Музична школа", + "vi": "Trường Âm nhạc", + "zh-CN": "音乐学校", + "zh-HK": "音樂學校", + "zh-TW": "音樂學校" + } + }, + "amenity/nightclub": { + "title": { + "C": "Nightclub", + "ar": "ملهى ليلي", + "ast": "Discoteca", + "ca": "Club nocturn", + "ckb": "یانەی شەوانە", + "cs": "Diskotéka", + "da": "Natklub", + "de": "Diskothek", + "el": "Νυχτερινό Κέντρο", + "en-GB": "Nightclub", + "en": "Nightclub", + "eo": "Noktoklubejo", + "es": "Discoteca", + "et": "Ööklubi", + "eu": "Klub", + "fa": "کلوپ شبانه", + "fi": "Yökerho", + "fr": "Boîte de nuit", + "gl": "Clube nocturno ou discoteca", + "he": "מועדון לילה", + "hr": "Noćni klub", + "hu": "Diszkó", + "id": "Kelab Malam", + "is": "Næturklúbbur", + "it": "Discoteca", + "ja": "ナイトクラブ", + "ko": "나이트클럽", + "lt": "Naktinis klubas", + "lv": "Naktsklubs", + "mk": "Ноќен клуб", + "ms": "Kelab Malam", + "nl": "Nachtclub", + "no": "Nattklubb", + "pl": "Klub nocny / dyskoteka", + "pt-BR": "Boate", + "pt": "Discoteca", + "ro": "Club de Noapte", + "ru": "Ночной клуб", + "sk": "Nočný klub", + "sl": "Nočni klub", + "sr": "Ноћни клуб", + "sv": "Nattklubb", + "ta": "இரவு விடுதி", + "tr": "Gece Kulübü", + "uk": "Нічний клуб", + "vi": "Câu lạc bộ Giải trí", + "zh-CN": "夜总会", + "zh-HK": "夜總會", + "zh-TW": "夜總會" + } + }, + "amenity/parking": { + "title": { + "C": "Parking Lot", + "ar": "ساحة انتظار سيارات", + "cs": "Parkoviště", + "da": "Bilparkering", + "de": "Parkplatz", + "el": "Θέσεις Στάθμευσης", + "en-GB": "Car Park", + "en": "Parking Lot", + "eo": "Parkumejo", + "es": "Estacionamiento / Aparcamiento", + "et": "Autoparkla", + "fa": "پارکینگ", + "fi": "Pysäköintialue", + "fr": "Parking", + "gl": "Aparcadoiro de automóbiles", + "he": "מגרש חנייה", + "hr": "Parkiralište za automobile", + "hu": "Parkoló", + "is": "Bílastæðasvæði", + "it": "Area di parcheggio", + "ja": "駐車場", + "ko": "주차장", + "lt": "Automobilių stovėjimo aikštelė", + "lv": "Stāvvieta", + "mk": "Паркиралиште", + "nl": "Parkeerplaats", + "no": "Parkeringsplass", + "pl": "Parking samochodowy", + "pt-BR": "Estacionamento", + "pt": "Parque de estacionamento", + "ru": "Парковка", + "sk": "Parkovisko", + "sl": "Parkirno mesto", + "sr": "Паркинг место", + "sv": "Parkeringsplats", + "tr": "Otopark", + "uk": "Автостоянка", + "vi": "Bãi Đậu xe", + "zh-CN": "停车场", + "zh-HK": "停車場", + "zh-TW": "停車場" + } + }, + "amenity/parking_entrance": { + "title": { + "C": "Parking Garage Entrance / Exit", + "cs": "Vjezd / Výjezd krytého parkoviště", + "da": "Ind/udgang til parkeringsgarage", + "de": "Garageneinfahrt/-ausfahrt", + "el": "Είσοδος / Έξοδος Γκαράζ", + "en": "Parking Garage Entrance / Exit", + "eo": "Parkumeja en-/el-veturejo", + "es": "Entrada / salida del garaje de estacionamiento", + "fa": "ورودی / خروجی پارکینگ", + "fi": "Pysäköintihallin ajoramppi", + "fr": "Entrée / sortie de garage ou parking", + "gl": "Porta de entrada de aparcadoiro", + "he": "יציאה לחניון", + "hr": "Ulaz/izlaz iz garaže za automobile", + "it": "Ingresso/uscita parcheggio sotterraneo", + "ja": "出入口(駐車場)", + "ko": "주차장 입구/출구", + "mk": "Влез/излез на покриено паркиралиште", + "nl": "Ingang/uitgang van parkeergarage", + "no": "Parkeringshus Inngang / utgang", + "pl": "Wjazd/wyjazd z parkingu/garażu", + "pt-BR": "Entrada / Saída da garagem", + "pt": "Entrada / Saída de estacionamento", + "ru": "Въезд в крытую парковку", + "sk": "Vchod / východ do garáže", + "sr": "Улаз/излаз за паркинг", + "sv": "In- och utfart parkeringsgarage", + "tr": "Kapalı Otopark Giriş / Çıkış", + "uk": "В’їзд/виїзд на криту стоянку", + "vi": "Lối Ra vào Bãi Đậu xe Cao tầng", + "zh-CN": "车库入口 / 出口", + "zh-TW": "停車場入口/出口" + } + }, + "amenity/parking_space": { + "title": { + "C": "Parking Space", + "ar": "موقف سيارات", + "ast": "Espaciu d'aparcamientu", + "ca": "Espai d'aparcament", + "cs": "Parkovací místo", + "da": "Parkeringsbås", + "de": "Stellplatz", + "el": "Χώρος Στάθμευσης", + "en-GB": "Parking Space", + "en": "Parking Space", + "eo": "Parkumeja loko (detala)", + "es": "Plaza de estacionamiento", + "et": "Parkimiskoht", + "eu": "Aparkatzeko lekua", + "fa": "جای پارک منفرد", + "fi": "Pysäköintiruutu", + "fr": "Place de parking", + "gl": "Praza de aparcadoiro", + "he": "אזור חניה", + "hr": "Parkirališno mjesto", + "hu": "Parkolóhely", + "is": "Bílastæðarými", + "it": "Stallo", + "ja": "駐車区画(1台ごとの)", + "ko": "주차 공간", + "lt": "Stovėjimo vieta", + "mk": "Паркинг-место", + "ms": "Ruang Letak Kenderaan", + "nl": "Parkeerplaats binnen parkeergelegenheid", + "no": "Parkeringsplass", + "pl": "Miejsce/miejsca parkingowe (pojedyncze lub ich zwarty blok)", + "pt-BR": "Vaga de Estacionamento", + "pt": "Lugar de estacionamento", + "ro": "Loc de Parcare", + "ru": "Отдельное парковочное место на парковке", + "sk": "Parkovacie miesto", + "sl": "Parkirni prostor", + "sr": "Паркинг простор", + "sv": "Parkeringsruta", + "tr": "Park Yeri", + "uk": "Місце на стоянці", + "vi": "Chỗ Đậu xe", + "zh-CN": "停车位", + "zh-HK": "泊車位", + "zh-TW": "停車位" + } + }, + "amenity/payment_centre": { + "title": { + "C": "Payment Center", + "ar": "مركز دفع نقود", + "cs": "platební centrum", + "de": "Zahlstelle", + "el": "Κέντρο Πληρωμών", + "en-AU": "Payment Centre", + "en-GB": "Payment Centre", + "en": "Payment Center", + "eo": "Centro de pago", + "es": "Centro de pago", + "fa": "مرکز پرداخت", + "fi": "Maksupalvelu", + "fr": "Centre de paiement", + "gl": "Centro de pagamento", + "he": "מרכז תשלום", + "it": "Centro per i pagamenti", + "ja": "納入窓口", + "mk": "Платежно место", + "nl": "Betalingscentrum", + "no": "Betalingssenter", + "pl": "Centrum płatnicze", + "pt-BR": "Centro de pagamento", + "pt": "Balcão de pagamento", + "sk": "Platobné centrum", + "sl": "Plačilni center", + "sv": "Betalningscenter", + "tr": "Ödeme Merkezi", + "uk": "Приймання платежів", + "zh-HK": "繳費處", + "zh-TW": "繳費中心" + } + }, + "amenity/payment_terminal": { + "title": { + "C": "Payment Terminal", + "ar": "محطة دفع نقود", + "cs": "Platební terminál", + "de": "Zahlungsterminal", + "el": "Τερματικό Πληρωμών", + "en": "Payment Terminal", + "eo": "Pag-aŭtomato", + "es": "Terminal de pago", + "fa": "ترمینال پرداخت ، POS", + "fi": "Maksupääte", + "fr": "Terminal de paiement", + "gl": "Terminal de pagamento", + "he": "מסוף תשלום", + "hu": "Befizetőautomata", + "it": "Terminale pagamenti", + "ja": "支払端末", + "mk": "Платежен терминал", + "nl": "Betalingsterminal", + "no": "Betalingsterminal", + "pl": "Terminal płatniczy", + "pt-BR": "Terminal de pagamento", + "pt": "Terminal de pagamento", + "ru": "Платёжный терминал", + "sk": "Platobný terminál", + "sl": "Plačilni terminal", + "sv": "Betalningsterminal", + "tr": "Ödeme Terminali", + "uk": "Платіжний термінал", + "zh-CN": "支付终端", + "zh-HK": "繳費終端機", + "zh-TW": "繳費窗口" + } + }, + "amenity/pharmacy": { + "title": { + "C": "Pharmacy Counter", + "ar": "شباك صيدلية", + "ca": "Farmàcia", + "cs": "Okénko/přepážka lékárny", + "de": "Apotheke", + "el": "Γκισέ Φαρμακείου", + "en-AU": "Pharmacy", + "en": "Pharmacy Counter", + "eo": "Apoteko", + "es": "Farmacia", + "fa": "داروخانه", + "fi": "Apteekki", + "fr": "Pharmacie", + "gl": "Farmacia", + "he": "דלפק בית מרקחת", + "hu": "Gyógyszertár", + "it": "Farmacia", + "ja": "薬局・ドラッグストア(薬剤師が居る店)", + "ko": "약국", + "mk": "Аптека", + "nl": "Apotheek", + "no": "Apotek Disk", + "pl": "Apteka", + "pt-BR": "Farmácia", + "pt": "Farmácia", + "ru": "Аптека", + "sl": "Lekarna", + "sr": "Апотекарски шалтер", + "sv": "Läkemedel", + "tr": "Eczane", + "uk": "Аптека", + "vi": "Quầy thuốc", + "zh-CN": "药房", + "zh-TW": "藥局" + } + }, + "amenity/photo_booth": { + "title": { + "C": "Photo Booth", + "cs": "Foto budka", + "da": "Pasfotoautomat", + "de": "Fotoautomat", + "el": "Φωτογραφικός Θάλαμος", + "en": "Photo Booth", + "eo": "fot-aŭtomato", + "es": "Cabina de fotos", + "et": "Fotokabiin", + "fa": "غرفه عکس", + "fi": "Valokuvauskoppi", + "fr": "Photomaton", + "gl": "Cabina de fotos", + "he": "תא צילום", + "hu": "Fényképezőfülke", + "it": "Cabina per fototessere", + "ja": "証明写真機", + "ko": "사진 부스", + "mk": "Фотокабина", + "nl": "Pasfotohokje", + "no": "Fotokiosk", + "pl": "Fotobudka", + "pt-BR": "Cabine de foto", + "pt": "Cabine Fotográfica", + "ru": "Фотокабина", + "sk": "Fotobúdka", + "sv": "Fotoautomat", + "tr": "Fotoğraf Kabini", + "uk": "Фото-кабінка", + "zh-CN": "自助拍照机", + "zh-TW": "照相站" + } + }, + "amenity/place_of_worship": { + "title": { + "C": "Place of Worship", + "af": "Plek van aanbidding", + "ar": "مكان عبادة", + "ast": "Llugar de cultu", + "bg": "Религиозен храм", + "bn": "প্রার্থনাস্থল", + "bs": "Bogomolja", + "ca": "Lloc de culte", + "ckb": "پەرستگا", + "cs": "Chrám", + "da": "Tilbedelsessted", + "de": "Andachtsstätte", + "dv": "އަޅުކަންކުރާ ތަންތަން", + "el": "Χώρος Λατρείας", + "en-GB": "Place of Worship", + "en": "Place of Worship", + "eo": "Preĝejo", + "es": "Lugar de adoración", + "et": "Pühakoda", + "eu": "Gurtza gune", + "fa": "پرستشگاه", + "fi": "Rukoilupaikka", + "fr": "Lieu de culte", + "gl": "Lugar de culto", + "he": "בית תפילה", + "hr": "Vjerski objekt", + "hu": "Istentiszteleti hely", + "id": "Tempat Beribadah", + "is": "Tilbeiðsluhús", + "it": "Luogo di culto", + "ja": "宗教施設全般", + "ko": "종교 시설", + "lt": "Maldos namai", + "lv": "Dievnams", + "mk": "Верско здание", + "ms": "Tempat Ibadat", + "ne": "पूजा गर्ने ठाउँ", + "nl": "Gebedshuis", + "no": "Bedested", + "pl": "Miejsce odbywania się praktyk religijnych", + "pt-BR": "Local de prática religiosa", + "pt": "Local de oração", + "ro": "Loc de Rugăciune", + "ru": "Место поклонения", + "sk": "Náboženské miesto", + "sl": "Verski objekt", + "so": "Goobta Cibaadada", + "sr": "Место богослужења", + "sv": "Plats för tillbedjan", + "ta": "வழிபாட்டு இடம்", + "tr": "İbadethane", + "uk": "Культове місце", + "vi": "Nơi Thờ phụng", + "yue": "拜神之所", + "zh-CN": "礼拜场所", + "zh-HK": "祟拜場所", + "zh-TW": "宗教祟拜場所", + "zh": "礼拜场所" + } + }, + "amenity/planetarium": { + "title": { + "C": "Planetarium", + "ar": "قبة فلكية", + "ast": "Planetariu", + "ca": "Planetari", + "cs": "Planetárium", + "da": "Planetarium", + "de": "Planetarium", + "el": "Πλανητάριο", + "en-GB": "Planetarium", + "en": "Planetarium", + "eo": "Planetario (astrokinejo)", + "es": "Planetario", + "et": "Planetaarium", + "eu": "Planetario", + "fa": "آسمان نما", + "fi": "Planetaario", + "fr": "Planétarium", + "gl": "Planetario", + "he": "מצפה כוכבים", + "hr": "Planetarij", + "hu": "Planetárium", + "is": "Stjörnuver", + "it": "Planetario", + "ja": "プラネタリウム", + "kn": "ತಾರಾಲಯ", + "ko": "천체투영관", + "lt": "Planetariumas", + "lv": "Planetārijs", + "mk": "Планетариум", + "ms": "Planetarium", + "nl": "Planetarium", + "no": "Planetarium", + "pl": "Planetarium", + "pt-BR": "Planetário", + "pt": "Planetário", + "ro": "Planetariu", + "ru": "Планетарий", + "sk": "Planetárium", + "sl": "Planetarij", + "sr": "Планетаријум", + "sv": "Planetarium", + "ta": "கோளரங்கம்", + "tr": "Gökevi", + "uk": "Планетарій", + "vi": "Cung Thiên văn", + "zh-CN": "天文馆", + "zh-HK": "天象廳", + "zh-TW": "天文臺" + } + }, + "amenity/police": { + "title": { + "C": "Police", + "af": "Polisie", + "ar": "شرطة", + "ast": "Policía", + "bg": "Полиция", + "bn": "পুলিশ", + "bs": "Policija", + "ca": "Comissaria de Policia", + "ckb": "پۆلیس", + "cs": "Policie", + "da": "Politi", + "de": "Polizei", + "el": "Αστυνομικό Τμήμα", + "en-GB": "Police", + "en": "Police", + "eo": "Policejo", + "es": "Policía", + "et": "Politsei", + "eu": "Polizia", + "fa": "پليس", + "fi": "Poliisiasema", + "fr": "Poste de police", + "gl": "Policía", + "he": "משטרה", + "hr": "Policija", + "hu": "Rendőrség", + "id": "Polisi", + "is": "Lögregla", + "it": "Forze di polizia", + "ja": "警察", + "kn": "ಪೊಲೀಸು", + "ko": "경찰서", + "lt": "Policija", + "lv": "Policija", + "mk": "Полиција", + "ms": "Polis", + "nl": "Politiekantoor", + "no": "Politi", + "pl": "Policja/straż miejsca lub gminna", + "pt-BR": "Polícia", + "pt": "Esquadra da polícia", + "ro": "Poliție", + "ru": "Полиция", + "sk": "Polícia", + "sl": "Policija", + "sr": "Полиција", + "sv": "Polis", + "ta": "காவல்", + "te": "పోలీసు", + "tr": "Emniyet Müdürlüğü", + "uk": "Поліція", + "vi": "Đồn Cảnh sát", + "yue": "差館", + "zh-CN": "警察局", + "zh-HK": "警署", + "zh-TW": "警察局", + "zh": "警察局" + } + }, + "amenity/polling_station": { + "title": { + "C": "Permanent Polling Place", + "cs": "stálé volební místo", + "de": "Permanentes Wahllokal", + "en": "Permanent Polling Place", + "eo": "Balotejo (neŝanĝanta loko)", + "es": "Lugar de votación permanente", + "fa": "محل دائمی رأی‌گیری", + "fi": "Pysyvä äänestyspaikka", + "fr": "Bureau de vote permanent", + "gl": "Lugar de votación permanente", + "he": "קלפי קבוע", + "hu": "Állandó szavazóhely", + "it": "Sezione Elettorale permanente", + "ja": "投票所(常設)", + "ko": "상설 투표소", + "mk": "Трајно гласачко место", + "nl": "Permanent stembureau", + "no": "Fast Stemmeplass", + "pl": "Stały lokal wyborczy", + "pt-BR": "Local de votação permanente", + "pt": "Local de voto permanente", + "sk": "Permanentná volebná miestnosť", + "sv": "Permanent vallokal", + "tr": "Daimi Oylama Yeri", + "uk": "Виборча дільниця", + "zh-TW": "永久投票處" + } + }, + "amenity/post_box": { + "title": { + "C": "Mail Drop Box", + "ar": "صندوق البريد", + "cs": "Poštovní schránka", + "de": "Briefkasten", + "en-GB": "Post Box", + "en": "Mail Drop Box", + "eo": "Poŝtkesto (senda)", + "es": "Buzón de correo", + "et": "Kirjakast", + "fa": "جعبه انداختن پست", + "fi": "Postilaatikko", + "fr": "Boîte aux lettres (envoi)", + "gl": "Caixa do correo", + "he": "תיבת איסוף דואר", + "hu": "Utcai postaláda", + "it": "Buca delle lettere", + "ja": "郵便ポスト", + "ko": "우체통", + "mk": "Поштенска преграда", + "nl": "Brievenbus", + "no": "Post innleveringspostkasse", + "pl": "Skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Marco de correio", + "ru": "Почтовый ящик", + "sk": "Poštová schránka", + "sv": "Brevlåda", + "tr": "Posta Bırakma Kutusu", + "uk": "Поштова скриня", + "vi": "Thùng thư", + "zh-CN": "邮件投递箱", + "zh-TW": "郵筒" + } + }, + "amenity/post_depot": { + "title": { + "C": "Post Sorting Office", + "cs": "poštovní depo", + "da": "Postsorteringsfacilitet", + "de": "Postverteilzentrum", + "el": "Γραφείο Ταξινόμησης Αλληλογραφίας", + "en": "Post Sorting Office", + "eo": "Poŝta disspecigejo", + "es": "Oficina de clasificación de correos", + "fa": "اداره پست", + "fi": "Postinlajittelukeskus", + "fr": "Bureau de tri de courrier", + "gl": "Oficina de clasificación de correos", + "he": "משרד מיון דואר", + "hu": "Postacsomag üzem", + "it": "Ufficio di smistamento postale", + "ja": "郵便集配所", + "ko": "우편집중국", + "mk": "Служба за поштенска отпрема", + "nl": "Postsorteerkantoor", + "no": "Post Sorteringskontor", + "pl": "Sortownia listów lub paczek", + "pt-BR": "Escritório de classificação de correspondência", + "pt": "Centro de distribuição de correio", + "sk": "Kancelária triedenia pošty", + "sr": "Поштански сортажни центар", + "sv": "Postsorteringskontor", + "tr": "Posta Sıralama Ofisi", + "uk": "Поштова сортувальна станція", + "zh-TW": "郵件處理中心" + } + }, + "amenity/post_office": { + "title": { + "C": "Post Office", + "af": "Poskantoor", + "ar": "مكتب البريد", + "ast": "Oficina de correos", + "bg": "Поща", + "bn": "ডাকঘর", + "bs": "Pošta", + "ca": "Oficina de correus", + "ckb": "نووسینگەی پۆستە", + "cs": "Pošta", + "da": "Postkontor", + "de": "Postfiliale", + "el": "Ταχυδρομείο", + "en-GB": "Post Office", + "en": "Post Office", + "eo": "Poŝtoficejo", + "es": "Oficina postal", + "et": "Postkontor", + "eu": "Postetxe", + "fa": "اداره پست", + "fi": "Postitoimisto", + "fr": "Bureau de poste", + "gl": "Oficina de correos", + "he": "סניף דואר", + "hr": "Pošta", + "hu": "Posta", + "id": "Kantor Pos", + "is": "Pósthús", + "it": "Ufficio Postale", + "ja": "郵便局", + "kn": "ಅಂಚೆ ಕಚೇರಿ", + "ko": "우체국", + "lt": "Paštas", + "lv": "Pasta nodaļa", + "mk": "Пошта", + "ms": "Pejabat Pos", + "nl": "Postkantoor", + "no": "Postkontor", + "pl": "Poczta/agencja pocztowa", + "pt-BR": "Agência de correios", + "pt": "Estação de correios", + "ro": "Oficiul Poștal", + "ru": "Почтовое отделение", + "sk": "Pošta", + "sl": "Pošta", + "sr": "Пошта", + "sv": "Postkontor", + "ta": "அஞ்சலகம்", + "te": "తపాలా కార్యాలయం", + "tr": "Postane", + "uk": "Пошта", + "vi": "Bưu điện", + "yue": "郵政局", + "zh-CN": "邮局", + "zh-HK": "郵政局", + "zh-TW": "郵局", + "zh": "邮局" + } + }, + "amenity/prep_school": { + "title": { + "C": "Test Prep / Tutoring School", + "cs": "doučovací škola", + "de": "Nachhilfeanbieter", + "el": "Σχολείο Προπαρασκευής", + "en": "Test Prep / Tutoring School", + "eo": "Lernejo pretiganta (al ekzameno/universitato)", + "es": "Preparación para exámenes / Escuela de tutoría", + "fa": "آزمون آزمایشی / مؤسسه آموزش", + "fr": "École préparatoire", + "gl": "Preparación para exames / Escola de titoría", + "he": "לימודי נהיגה", + "hu": "Tesztpálya, tanulópálya", + "it": "Scuola di preparazione / tutoraggio ai test", + "ja": "進学予備校(欧米)", + "ko": "학원", + "mk": "Подготвително училиште", + "nl": "Studiebegeleiding", + "pl": "Szkoła korepetycji", + "pt-BR": "Escola de preparação para exames", + "pt": "Centro de explicações", + "sv": "Pluggskola", + "tr": "Sınava Hazırlık / Özel Ders Okulu", + "uk": "Підготовчий центр/Репетитор", + "vi": "Trường Luyện thi / Dạy Kèm", + "zh-TW": "補習班" + } + }, + "amenity/prison": { + "title": { + "C": "Prison Grounds", + "ar": "سجن", + "ast": "Terrén de cárcel", + "ca": "Terrenys de presó", + "cs": "Prostor věznice", + "da": "Fængselsgrund", + "de": "Gefängnisanlage", + "el": "Χώρος Φυλακής", + "en-GB": "Prison Grounds", + "en": "Prison Grounds", + "eo": "Mallibereja tereno", + "es": "Terrenos de prisión / cárcel", + "et": "Vangla", + "eu": "Espetxe", + "fa": "محوطه زندان", + "fi": "Vankila-alue", + "fr": "Prison", + "gl": "Área penitenciaria", + "he": "מגרש כלא", + "hr": "Zatvorsko zemljište", + "hu": "Börtön", + "is": "Fangelsislóð", + "it": "Area carceraria", + "ja": "刑務所(代表点または敷地)", + "kn": "ಬಂದೀಖಾನೆ ಮೈದಾನ", + "ko": "교도소 부지", + "mk": "Затворски двор", + "ms": "Kawasan Penjara", + "nl": "Gevangenisgebied", + "no": "Fengselsområde", + "pl": "Teren więzienia", + "pt-BR": "Presídio", + "pt": "Prisão", + "ro": "Închisoare", + "ru": "Тюрьма", + "sk": "Areál väznice", + "sl": "Območje zapora", + "sr": "Затворско двориште", + "sv": "Fängelseområde", + "tr": "Cezaevi", + "uk": "Вʼязниця", + "vi": "Sân Nhà tù", + "zh-CN": "监狱/看守所", + "zh-HK": "監獄範圍", + "zh-TW": "監獄範圍" + } + }, + "amenity/pub": { + "title": { + "C": "Pub", + "af": "Kroeg", + "ar": "حانة", + "ast": "Pub", + "bg": "Пъб", + "bn": "সরাইখানা", + "bs": "Pub", + "ca": "Bar", + "cs": "Hospoda", + "da": "Værtshus", + "de": "Kneipe", + "el": "Καπηλειό", + "en-GB": "Pub", + "en": "Pub", + "eo": "Taverno", + "es": "Pub (latam) / Bar (es)", + "et": "Kõrts", + "eu": "Pub", + "fa": "میخانه", + "fi": "Pubi", + "fr": "Pub", + "gl": "Bar", + "he": "פאב", + "hr": "Pivnica", + "hu": "Kocsma", + "id": "Pub", + "is": "Krá", + "it": "Pub", + "ja": "居酒屋", + "ko": "주점", + "lt": "Aludė", + "lv": "Krogs", + "mk": "Паб", + "ms": "Pub", + "nl": "Café", + "no": "Pub", + "pl": "Pub", + "pt-BR": "Bar / Boteco", + "pt": "Taberna", + "ro": "Pub", + "ru": "Паб", + "sk": "Krčma", + "sl": "Pivnica", + "sr": "Паб", + "sv": "Pub", + "ta": "பப்", + "te": "పబ్", + "tr": "Bar", + "uk": "Паб", + "vi": "Quán rượu Pub", + "yue": "酒館", + "zh-CN": "酒馆", + "zh-HK": "酒館", + "zh-TW": "Pub", + "zh": "酒馆" + } + }, + "amenity/public_bath": { + "title": { + "C": "Public Bath", + "ar": "حمام عام", + "ast": "Baños públicos", + "ca": "Banys públic", + "cs": "Veřejné lázně", + "da": "Offentligt bad", + "de": "Öffentliches Bad", + "el": "Δημόσιο Λουτρό", + "en-GB": "Public Bath", + "en": "Public Bath", + "eo": "Banejo (distro)", + "es": "Baño público", + "eu": "Komun publikoak", + "fa": "حمام عمومی", + "fi": "Kylpylaitos", + "fr": "Bain public", + "gl": "Baño público", + "he": "מרחצאות ציבוריות", + "hr": "Javno kupalište", + "hu": "Nyilvános fürdő", + "is": "Almenningsböð", + "it": "Bagni pubblici", + "ja": "公衆浴場", + "ko": "대중 목욕탕", + "lt": "Vieša vonia", + "mk": "Јавна бања", + "nl": "Publiek bad", + "no": "Offentlig bad", + "pl": "Łaźnia publiczna", + "pt-BR": "Banho público", + "pt": "Banhos públicos", + "ro": "Baie Publică", + "ru": "Общественная баня", + "sk": "Verejné sprchy", + "sl": "Javno kopališče", + "sr": "Јавно купатило", + "sv": "Publikt bad", + "tr": "Hamam", + "uk": "Громадська лазня", + "vi": "Nơi Tắm Công cộng", + "zh-CN": "公共浴室", + "zh-HK": "公共浴室", + "zh-TW": "公共澡堂" + } + }, + "amenity/public_bookcase": { + "title": { + "C": "Public Bookcase", + "ar": "خزانة كتب عامة", + "ast": "Biblioteca llibre", + "ca": "Biblioteca pública", + "cs": "Veřejná knihovnička", + "da": "Bogkasse", + "de": "Öffentlicher Bücherschrank", + "el": "Δημόσια Ανταλλακτική Βιβλιοθήκη", + "en-GB": "Public Bookcase", + "en": "Public Bookcase", + "eo": "Publika libroŝranko", + "es": "Biblioteca libre", + "et": "Avalik raamaturiiul", + "eu": "Apalategi publikoa", + "fa": "قفسه کتاب عمومی", + "fi": "Julkinen kirjahylly", + "fr": "Microbibliothèque", + "gl": "Estante pública", + "he": "ספריה", + "hr": "Javna knjižnica", + "hu": "Közösségi könyvespolc", + "is": "Almenningsbókakassi", + "it": "Libreria pubblica", + "ja": "公共の本棚", + "ko": "공공 책장", + "lv": "Publisks Grāmatplaukts", + "mk": "Јавен шкаф за книги", + "nl": "Openbare boekenkast", + "no": "Bokkiosk", + "pl": "Publiczna wymiana książek", + "pt-BR": "Biblioteca ao ar livre", + "pt": "Biblioteca de rua", + "ru": "Общественный книжный шкаф", + "sk": "Verejná knihovnička", + "sl": "Ulična knjižnica", + "sr": "Јавна библиотека", + "sv": "Offentlig bokhylla", + "tr": "Sokak Kütüphanesi", + "uk": "Книжкова шафа", + "vi": "Tủ sách Công cộng", + "zh-CN": "公共书架", + "zh-HK": "公眾書架", + "zh-TW": "漂書站" + } + }, + "amenity/ranger_station": { + "title": { + "C": "Ranger Station", + "ar": "محطة الحراسة", + "ast": "Guardes forestales", + "bs": "Stanica rendžerske službe", + "ca": "Base d'Agents Rurals", + "cs": "Návštěvnické centrum", + "da": "Rangerstation", + "de": "Ranger-Station", + "el": "Σταθμός Δασοφυλάκων", + "en-GB": "Warden Station", + "en": "Ranger Station", + "eo": "Naturrezerveja oficejo/impostbudo", + "es": "Estación de guardaparques", + "et": "Looduskeskus", + "eu": "Basozain geltokia", + "fa": "ایستگاه جنگلبانی", + "fi": "Metsävartiosto", + "fr": "Services publics des parcs nationaux", + "gl": "Estación de garda de bosques", + "he": "תחנת פקחים", + "hr": "Rendžerska postaja", + "hu": "Nemzeti park látogatóközpontja", + "is": "Landvarðastöð", + "it": "Guardiaparco", + "ja": "レンジャーの詰所", + "ko": "관리소", + "lt": "Girininkų stotis", + "mk": "Шумарска куќарка", + "ms": "Stesen Renjer", + "nl": "Boswachtershut", + "pl": "Baza strażników rezerwatu/parku", + "pt-BR": "Estação de patrulha", + "pt": "Posto de guarda florestal", + "ru": "Лесничество", + "sk": "Stanica horskej služby", + "sl": "Čuvaj parka", + "sr": "Шумарска станица", + "sv": "Friluftsanläggningen", + "tr": "Korucu İstasyonu", + "uk": "Контора лісництва", + "vi": "Trạm Kiểm lâm", + "yue": "郊野訪客處", + "zh-CN": "野郊访客处", + "zh-HK": "郊野公園遊客中心", + "zh-TW": "國家公園管理站" + } + }, + "recycling_type/centre": { + "title": { + "C": "Recycling Center" + } + }, + "recycling_type/container": { + "title": { + "C": "Recycling Container" + } + }, + "amenity/refugee_site": { + "title": { + "C": "Refugee Camp", + "cs": "Uprchlický tábor", + "de": "Flüchtlingslager", + "el": "Δομή Προσφύγων", + "en": "Refugee Camp", + "eo": "Kampadejo por rifuĝantoj", + "es": "Campamento de refugiados", + "fa": "اردوگاه پناهندگان", + "fi": "Pakolaisleiri", + "fr": "Camp de réfugiés", + "gl": "Campo de refuxiados", + "he": "מחנה פליטים", + "it": "Campo profughi", + "ja": "難民キャンプ", + "ko": "난민촌", + "mk": "Бегалски камп", + "nl": "Vluchtelingenkamp", + "pl": "Obóz uchodźców", + "pt-BR": "Campo de refugiados", + "pt": "Campo de refugiados", + "sk": "Utečenecký tábor", + "sr": "Избеглички камп", + "sv": "Flyktingläger", + "tr": "Mülteci Kampı", + "uk": "Табір біженців", + "vi": "Trại Tị nạn", + "zh-CN": "难民营", + "zh-TW": "難民營" + } + }, + "amenity/research_institute": { + "title": { + "C": "Research Institute Grounds", + "cs": "prostor výzkumného ústavu", + "da": "Forskningsinstitutsområde", + "de": "Forschungseinrichtung", + "en": "Research Institute Grounds", + "eo": "Esplorada instituto", + "es": "Terrenos del Instituto de Investigación", + "fa": "محدوده مؤسسه تحقیقاتی / پژوهشکده زمین‌شناسی", + "fi": "Tutkimuslaitos", + "gl": "Área de Instituto de Investigación", + "he": "מתחם מכון מחקר", + "it": "Istituto di ricerca", + "ja": "研究所", + "ko": "연구 기관 부지", + "mk": "Истражувачки институт", + "nl": "Gebied van een onderzoekscentrum", + "no": "Forskningsinstitutt Grunn", + "pl": "Instytut badawczy", + "pt-BR": "Área do instituto de pesquisa", + "pt": "Instituto de pesquisa", + "sk": "Výskumný ústav", + "sv": "Forskningsinstitutsområde", + "tr": "Araştırma Enstitüsü Alanı", + "uk": "Територія науково-дослідного інституту", + "zh-CN": "研究所场地", + "zh-TW": "研究機構場地" + } + }, + "amenity/restaurant": { + "title": { + "C": "Restaurant", + "af": "Restaurant", + "ar": "مطعم", + "ast": "Restaurante", + "bg": "Ресторант", + "bn": "রেস্তোরাঁ", + "bs": "Restoran", + "ca": "Restaurant", + "ckb": "خواردنگە", + "cs": "Restaurace", + "da": "Restaurant", + "de": "Restaurant", + "dv": "ރެސްޓޯރަންޓް", + "el": "Εστιατόριο / Ταβέρνα", + "en-GB": "Restaurant", + "en": "Restaurant", + "eo": "Restoracio", + "es": "Restaurante", + "et": "Restoran", + "eu": "Jatetxe", + "fa": "رستوران", + "fi": "Ravintola", + "fr": "Restaurant", + "gl": "Restaurante", + "he": "מסעדה", + "hr": "Restoran", + "hu": "Étterem", + "id": "Restoran", + "is": "Veitingahús", + "it": "Ristorante", + "ja": "レストラン全般", + "kn": "ಉಪಾಹಾರ ಗೃಹ", + "ko": "음식점", + "lt": "Restoranas", + "lv": "Restorāns", + "mk": "Ресторан", + "ms": "Restoran", + "ne": "रेस्टुरेन्ट", + "nl": "Restaurant", + "no": "Restaurant", + "pl": "Restauracja", + "pt-BR": "Restaurante", + "pt": "Restaurante", + "ro": "Restaurant", + "ru": "Ресторан", + "sk": "Reštaurácia", + "sl": "Restavracija", + "so": "Maqaayad", + "sr": "Ресторан", + "sv": "Restaurang", + "ta": "உணவகம்", + "te": "రెస్టారెంట్", + "tr": "Lokanta", + "uk": "Ресторан", + "vi": "Nhà hàng", + "yue": "餐廳", + "zh-CN": "餐馆", + "zh-HK": "餐廳", + "zh-TW": "餐廳", + "zh": "餐馆" + } + }, + "amenity/sanitary_dump_station": { + "title": { + "C": "RV Toilet Disposal", + "ast": "Vertíu de depósitos d'autocaravanes", + "ca": "Estació de buidatge de lavabos", + "cs": "Výlevka pro karavany", + "da": "Bortskaffelse af sanitært affald", + "de": "Campingtoiletten-Entsorgungsanlage", + "en-GB": "RV Toilet Disposal", + "en": "RV Toilet Disposal", + "eo": "Stacio de forigo de fekaĵoj (kampado)", + "es": "Desecho de inodoro de casa rodante", + "fa": "دفع توالت RV", + "fi": "Asuntoautojen jäteveden tyhjennyspiste", + "fr": "Station de vidange sanitaire", + "gl": "Depósito sanitario para caravanas", + "he": "תחנת סילוק שפכים מקרוונים", + "hr": "Pražnjenje toaleta za kamp kućice", + "hu": "Szaniterürítő hely (lakóautóknak)", + "is": "Salernishreinsun fyrir bíla", + "it": "Smaltimento reflui camper", + "ja": "キャンピングカー用汚物廃棄所", + "ko": "RV 화장실 처리장", + "mk": "Исфрлање трајлерски фекалии", + "nl": "Kampeerauto-toilet-afvoer", + "no": "Bobil-tømmestasjon", + "pl": "Miejsce opróżniania toalety (dla kamperów)", + "pt-BR": "Ponto de descarga de dejetos (para trailers)", + "pt": "Escoamento sanitário para autocaravanas", + "ru": "Слив для туалета трейлеров", + "sk": "Vyprázdňovanie karavánových toaliet", + "sl": "Odlaganje fekalij za avtodome", + "sv": "Latrintömning för campingfordon", + "tr": "Tuvalet Atık Yeri", + "uk": "Місце зливу каналізації", + "vi": "Trạm Đổ Chất thải dành cho Nhà lưu động", + "zh-CN": "厕所卸污处", + "zh-HK": "露營車廁所廢物收集", + "zh-TW": "RV移動廁所" + } + }, + "amenity/school": { + "title": { + "C": "School Grounds", + "ar": "أرض مدرسة", + "ast": "Antoxana d'escuela", + "ca": "Escola", + "cs": "Prostor školy", + "da": "Skolegrund", + "de": "Schule, Schulgelände", + "dv": "ސްކޫލު ބިން", + "el": "Σχολείο", + "en-GB": "School Grounds", + "en": "School Grounds", + "eo": "Lernejo (ISCED 1-3)", + "es": "Terrenos de escuela / colegio", + "et": "Kool", + "eu": "Eskola eremu", + "fa": "محیط مدرسه", + "fi": "Koulualue (peruskoulu/lukio/ammattikoulu)", + "fr": "École élémentaire ou secondaire", + "gl": "Área escolar", + "he": "מגרש בית ספר", + "hr": "Škola i teren oko škole", + "hu": "Iskola", + "id": "Lingkungan Sekolah", + "is": "Skólalóð", + "it": "Area scolastica", + "ja": "学校(代表点または敷地)", + "ko": "학교 부지", + "lt": "Mokyklos kiemas", + "lv": "Skolas Zeme", + "mk": "Училиштен двор", + "ms": "Kawasan Sekolah", + "nl": "Schoolgebied", + "no": "Skoleområde", + "pl": "Szkoła podstawowa/średnia – teren (nie stosować dla budynku!)", + "pt-BR": "Escola", + "pt": "Escola", + "ro": "Școală", + "ru": "Школа", + "sk": "Školský areál", + "sl": "Izobraževalno središče", + "so": "Goobaha Dugsiyada", + "sr": "Школско двориште", + "sv": "Skolområde", + "ta": "பள்ளி மைதானம்", + "tr": "Okul", + "uk": "Територія школи", + "vi": "Sân Trường", + "zh-CN": "学校", + "zh-HK": "學校範圍", + "zh-TW": "中小學範圍" + } + }, + "amenity/shelter": { + "title": { + "C": "Shelter", + "ar": "مأوى", + "ast": "Abellugu", + "bs": "Sklonište", + "ca": "Refugi", + "cs": "Přístřešek", + "da": "Læsted", + "de": "Wetterschutz", + "el": "Στέγαστρο", + "en-GB": "Shelter", + "en": "Shelter", + "eo": "Ŝirmejo", + "es": "Refugio", + "et": "Varjualune", + "eu": "Aterpetxe", + "fa": "پناهگاه", + "fi": "Katos", + "fr": "Abri", + "gl": "Abeiro", + "he": "מקלט", + "hr": "Sklonište", + "hu": "Esőbeálló", + "is": "Skýli", + "it": "Riparo", + "ja": "シェルター全般(休憩所、避難所)", + "kn": "ಅಡೆ", + "ko": "대피소", + "lt": "Pastogė", + "lv": "Pajumte", + "mk": "Засолниште", + "nl": "Beschutting", + "no": "Skur", + "pl": "Schronienie", + "pt-BR": "Abrigo contra intempéries", + "pt": "Abrigo", + "ru": "Укрытие от непогоды", + "sk": "Prístrešok", + "sl": "Zavetišče", + "sr": "Склониште", + "sv": "Väderskydd", + "tr": "Barınak", + "uk": "Притулок", + "vi": "Nhà trú", + "yue": "天遮或亭", + "zh-CN": "亭", + "zh-HK": "涼亭", + "zh-TW": "涼亭" + } + }, + "amenity/shower": { + "title": { + "C": "Shower", + "ar": "دش استحمام", + "ast": "Ducha", + "ca": "Dutxa", + "cs": "Sprchy", + "da": "Brusebad", + "de": "Dusche", + "el": "Ντουζιέρα", + "en-GB": "Shower", + "en": "Shower", + "eo": "Duŝejo", + "es": "Ducha", + "et": "Dušš", + "eu": "Dutxa", + "fa": "دوش", + "fi": "Suihku", + "fr": "Douche", + "gl": "Ducha", + "he": "מקלחת", + "hr": "Tuš", + "hu": "Zuhany", + "is": "Steypibað", + "it": "Doccia", + "ja": "シャワー室", + "ko": "샤워실", + "lt": "Dušas", + "lv": "Duša", + "mk": "Туш", + "nl": "Douche", + "no": "Dusj", + "pl": "Prysznic", + "pt-BR": "Ducha", + "pt": "Chuveiro", + "ru": "Душ", + "sk": "Sprcha", + "sl": "Tuš", + "sr": "Туш", + "sv": "Dusch", + "tr": "Banyo", + "uk": "Душ", + "vi": "Tắm đứng", + "zh-CN": "淋浴间", + "zh-HK": "淋浴處", + "zh-TW": "淋浴間" + } + }, + "amenity/smoking_area": { + "title": { + "C": "Smoking Area", + "ar": "منطقة مخصصة للتدخين", + "ca": "Àrea per a fumadors", + "ckb": "ناوچەی جگەرەکێشان", + "cs": "Kuřárna", + "da": "Rygeområde", + "de": "Raucherbereich", + "el": "Καπνιστές", + "en-GB": "Smoking Area", + "en": "Smoking Area", + "eo": "Fumejo", + "es": "Área de fumadores", + "et": "Suitsetamise koht", + "eu": "Erretzeko gune", + "fa": "منطقه سیگار کشیدن", + "fi": "Tupakointialue", + "fr": "Zone fumeur", + "gl": "Zona de fumadores", + "he": "אזור עישון", + "hu": "Dohányzó terület", + "is": "Reykingasvæði", + "it": "Area fumatori", + "ja": "喫煙所", + "ko": "흡연 구역", + "lt": "Rūkymo vieta", + "lv": "Smēķēšanas vieta", + "mk": "Пушилница", + "nl": "Rookgebied", + "no": "Røykeområde", + "pl": "Palarnia", + "pt-BR": "Área de fumantes", + "pt": "Área para fumadores", + "ru": "Место для курения", + "sk": "Fajčiarska zóna", + "sr": "Област за пушаче", + "sv": "Rökområde", + "tr": "Sigara İçme Alanı", + "uk": "Місце для куріння", + "vi": "Khu vực Hút thuốc", + "zh-CN": "吸烟区域", + "zh-HK": "吸煙區", + "zh-TW": "吸煙區" + } + }, + "amenity/social_centre": { + "title": { + "C": "Social Center", + "cs": "Sociální středisko", + "de": "Sozialzentrum", + "el": "Κοινωνικό Κέντρο", + "en-AU": "Social Centre", + "en": "Social Center", + "eo": "Centro de socio", + "es": "Centro social", + "et": "Sotsiaalkeskus", + "fa": "مرکز اجتماعی", + "fi": "Sosiaalikeskus", + "fr": "Centre social", + "gl": "Centro social", + "he": "מרכז חברתי", + "hu": "Szociális ház", + "it": "Centro attività sociali", + "ja": "社交センター", + "mk": "Друштвен дом", + "nl": "Buurthuis", + "pl": "Centrum społecznościowe", + "pt-BR": "Centro social", + "pt": "Centro social", + "sk": "Spoločenské centrum", + "sr": "Дружтвени центар", + "sv": "Medborgarhus", + "tr": "Sosyal Merkez", + "uk": "Громадський центр", + "zh-TW": "社交中心" + } + }, + "amenity/social_facility": { + "title": { + "C": "Social Facility", + "ar": "مؤسسة اجتماعية", + "ast": "Serviciu social", + "ca": "Equipament social", + "cs": "Zařízení sociálních služeb", + "da": "Sociale faciliteter", + "de": "Sozialeinrichtung", + "el": "Μονάδα Κοινωνικών Υπηρεσιών", + "en-GB": "Social Facility", + "en": "Social Facility", + "eo": "Socia servejo", + "es": "Instalación social", + "et": "Sotsiaalkeskus", + "eu": "Gizarte-instalazio", + "fa": "خدمات اجتماعی", + "fi": "Sosiaalipalvelu", + "fr": "Établissement de services sociaux", + "gl": "Axuda Social", + "he": "מתקן שירותי רווחה", + "hr": "Socijalna ustanova", + "hu": "Szociális létesítmény", + "id": "Fasilitas Sosial", + "is": "Félagsþjónusta", + "it": "Centro socio-assistenziale", + "ja": "福祉施設", + "ko": "사회 복지 시설", + "mk": "Социјална служба", + "nl": "Sociale Faciliteit", + "pl": "Placówka pomocy społecznej", + "pt-BR": "Unidade de assistência social", + "pt": "Serviços sociais", + "ro": "Facilitate Socială", + "ru": "Социальное учреждение", + "sk": "Sociálne zariadenie", + "sl": "Socialnovarstvena ustanova", + "sr": "Социјална установа", + "sv": "Social inrättning", + "tr": "Okul Tesisleri", + "uk": "Соціальний центр", + "vi": "Dịch vụ Xã hội", + "zh-CN": "社会服务设施", + "zh-HK": "社會服務設施", + "zh-TW": "社福機構" + } + }, + "amenity/studio": { + "title": { + "C": "Studio", + "ar": "أستوديو", + "ast": "Estudiu", + "bs": "Studio", + "ca": "Estudi", + "ckb": "ستۆدیۆ", + "cs": "Studio", + "da": "Studie", + "de": "Ton-/Fernsehstudio", + "el": "Στούντιο", + "en-GB": "Studio", + "en": "Studio", + "eo": "Studio", + "es": "Estudio de grabación", + "et": "Stuudio", + "eu": "Estudio", + "fa": "استدیو", + "fi": "Studio", + "fr": "Studio", + "gl": "Estudio", + "he": "סטודיו", + "hr": "Studio", + "hu": "Stúdió", + "id": "Studio", + "is": "Upptökustúdíó", + "it": "Studio radiotelevisivo", + "ja": "スタジオ", + "ko": "스튜디오", + "lt": "Studija", + "lv": "Studija", + "mk": "Студио", + "ms": "Studio", + "nl": "Studio", + "no": "Studio", + "pl": "Studio", + "pt-BR": "Estúdio de rádio/TV ou de gravação", + "pt": "Estúdio", + "ro": "Studio", + "ru": "Студия", + "sk": "Štúdio", + "sl": "Studio", + "sr": "Студио", + "sv": "Studio", + "tr": "Stüdyo", + "uk": "Студія", + "vi": "Studio", + "zh-CN": "工作室", + "zh-HK": "工作室", + "zh-TW": "工作室" + } + }, + "amenity/taxi": { + "title": { + "C": "Taxi Stand", + "af": "Taxi staanplek", + "ar": "موقف تاكسي", + "ast": "Parada de taxis", + "bg": "Такси стоянка", + "bs": "Taxi stajalište", + "ca": "Parada de Taxi", + "cs": "Stanoviště taxi", + "da": "Taxiholdeplads", + "de": "Taxistand", + "el": "Πιάτσα Ταξί", + "en-GB": "Taxi Stand", + "en": "Taxi Stand", + "eo": "Taksistacio", + "es": "Parada de taxi", + "et": "Taksopeatus", + "eu": "Taxi postu", + "fa": "تاکسی", + "fi": "Taksitolppa", + "fr": "Station de taxi", + "gl": "Parada de taxi", + "he": "עמדת מוניות", + "hr": "Taksi stajalište", + "hu": "Taxiállomás", + "id": "Tempat Tunggu Taksi", + "is": "Leigubílastæði", + "it": "Posteggio Taxi", + "ja": "タクシー乗り場", + "kn": "‍ಕಾರು ನಿಲ್ಡಾಣ", + "ko": "택시 승차장", + "lt": "Taksi stendas", + "mk": "Такси-постојка", + "ms": "Tempat Menunggu Teksi", + "nl": "Taxistandplaats", + "no": "Taxiholdeplass", + "pl": "Postój taksówek", + "pt-BR": "Ponto de Táxi", + "pt": "Praça de táxis", + "ro": "Stand de Taxi", + "ru": "Стоянка такси", + "sk": "Stanovisko taxíkov", + "sl": "Postajališče za taksi", + "sr": "Такси стајалиште", + "sv": "Taxihållplats", + "tr": "Taksi Durağı", + "uk": "Стоянка таксі", + "vi": "Bến Tắc xi", + "yue": "的士站", + "zh-CN": "出租车停车处", + "zh-HK": "的士站", + "zh-TW": "計程車招呼站" + } + }, + "amenity/telephone": { + "title": { + "C": "Telephone", + "af": "Telefoon", + "ar": "هاتف", + "ast": "Teléfonu", + "bg": "Телефон", + "bn": "টেলিফোন", + "bs": "Telefon", + "ca": "Telèfon", + "ckb": "تەلەفۆن", + "cs": "Telefon", + "da": "Telefon", + "de": "Telefon", + "el": "Τηλέφωνο", + "en-GB": "Telephone", + "en": "Telephone", + "eo": "Telefono", + "es": "Teléfono", + "et": "Taksofon", + "eu": "Telefono", + "fa": "تلفن عمومی", + "fi": "Yleinen puhelin", + "fr": "Téléphone", + "gl": "Teléfono", + "he": "טלפון", + "hr": "Telefon", + "hu": "Telefon", + "id": "Telepon", + "is": "Sími", + "it": "Telefono", + "ja": "公衆電話", + "kn": "ದುರವಾಣಿ", + "ko": "전화", + "lt": "Telefonas", + "lv": "Telefons", + "mk": "Телефон", + "ms": "Telefon", + "nl": "Telefoon", + "no": "Telefon", + "pl": "Telefon", + "pt-BR": "Telefone público", + "pt": "Telefone", + "ro": "Telefon", + "ru": "Телефон", + "sk": "Telefón", + "sl": "Telefon", + "sr": "Телефонска говорница", + "sv": "Telefon", + "ta": "தொலைபேசி", + "tr": "Telefon", + "uk": "Телефон", + "vi": "Điện thoại", + "yue": "電話", + "zh-CN": "电话", + "zh-HK": "電話", + "zh-TW": "公用電話", + "zh": "电话" + } + }, + "amenity/theatre": { + "title": { + "C": "Theater", + "af": "Teater", + "ar": "مسرح", + "ast": "Teatru", + "bg": "Театър", + "bn": "থিয়েটার", + "bs": "Pozorište", + "ca": "Teatre", + "ckb": "شانۆ", + "cs": "Divadlo", + "da": "Teater", + "de": "The­a­ter", + "el": "Θέατρο", + "en-GB": "Theatre", + "en": "Theater", + "eo": "Teatrejo", + "es": "Teatro", + "et": "Teater", + "eu": "Antzoki", + "fa": "تئاتر", + "fi": "Teatteri", + "fr": "Théâtre", + "gl": "Teatro", + "he": "תאטרון", + "hr": "Kazalište", + "hu": "Színház", + "id": "Teater", + "is": "Leikhús", + "it": "Teatro", + "ja": "劇場", + "kn": "ಚಿತ್ರಮಂದಿರ", + "ko": "극장", + "lt": "Teatras", + "lv": "Teātris", + "mk": "Театар", + "ms": "Teater", + "nl": "Theater", + "no": "Teater", + "pl": "Teatr", + "pt-BR": "Teatro", + "pt": "Teatro", + "ro": "Teatru", + "ru": "Театр", + "sk": "Divadlo", + "sl": "Gledališče", + "sr": "Позориште", + "sv": "Teater", + "ta": "திரையரங்கம்", + "tr": "Tiyatro", + "uk": "Театр", + "vi": "Nhà hát", + "yue": "舞臺戲院", + "zh-CN": "剧院", + "zh-HK": "劇院", + "zh-TW": "戲劇院", + "zh": "剧院" + } + }, + "amenity/toilets": { + "title": { + "C": "Toilets", + "af": "Toilette", + "ar": "دورات مياه", + "ast": "Aseos", + "bg": "Тоалетна", + "bn": "শৌচাগার", + "bs": "Toaleti", + "ca": "Lavabos", + "ckb": "ئاودەست", + "cs": "Toalety", + "da": "Toiletter", + "de": "Toilette", + "dv": "ފާޚާނާ", + "el": "Τουαλέτες", + "en-GB": "Toilets", + "en": "Toilets", + "eo": "Necesejo", + "es": "Baños", + "et": "Tualett", + "eu": "Komun", + "fa": "سرویس بهداشتی", + "fi": "WC", + "fr": "Toilettes publiques", + "gl": "Aseos", + "he": "בתי שימוש", + "hr": "Toalet", + "hu": "WC", + "id": "Toilet", + "is": "Salerni", + "it": "Bagni", + "ja": "トイレ", + "kn": "ಶೌಚಾಲಯ", + "ko": "화장실", + "lt": "Tualetas", + "lv": "Tualete", + "mk": "Тоалет", + "ms": "Tandas", + "nl": "Toiletten", + "no": "Toaletter", + "pl": "Toalety publiczne", + "pt-BR": "Banheiros públicos", + "pt": "Casas de banho", + "ro": "Toaletă", + "ru": "Туалет", + "sk": "Toalety", + "sl": "Stranišča", + "so": "Musqulo", + "sr": "Тоалети", + "sv": "Toaletter", + "ta": "கழிவறைகள்", + "te": "మరుగుదొడ్లు", + "tr": "Tuvalet", + "uk": "Туалет", + "vi": "Phòng Vệ sinh", + "yue": "廁所", + "zh-CN": "厕所", + "zh-HK": "廁所", + "zh-TW": "廁所", + "zh": "厕所" + } + }, + "amenity/townhall": { + "title": { + "C": "Town Hall", + "af": "Stadsaal", + "ar": "مبنى البلدية", + "ast": "Edificiu municipal", + "bg": "Кметство", + "bn": "টাউন হল", + "bs": "Gradska vijećnica", + "ca": "Ajuntament", + "cs": "Radnice", + "da": "Rådhus", + "de": "Rathaus", + "el": "Δημαρχείο", + "en-GB": "Town Hall", + "en": "Town Hall", + "eo": "Urbodomo", + "es": "Ayuntamiento / Municipalidad", + "et": "Linnahall", + "eu": "Udaletxe", + "fa": "شهرداری", + "fi": "Kunnantalo", + "fr": "Mairie, hôtel de ville", + "gl": "Casa do Concello", + "he": "בניין עירייה", + "hr": "Gradska vijećnica", + "hu": "Városháza", + "id": "Balai Kota", + "is": "Ráðhús", + "it": "Municipio", + "ja": "役場", + "ko": "마을 회관", + "lt": "Rotušė", + "lv": "Pilsētas dome", + "mk": "Градски дом", + "ms": "Dewan Perbandaran", + "nl": "Gemeentehuis", + "no": "Rådhus", + "pl": "Ratusz", + "pt-BR": "Paço municipal ou prefeitura", + "pt": "Câmara municipal / Junta de freguesia", + "ro": "Primărie", + "ru": "Администрация", + "sk": "Mestský úrad", + "sl": "Mestna hiša", + "sr": "Градска кућа", + "sv": "Kommunhus", + "ta": "நகராட்சிமன்றம்", + "tr": "Belediye Binası", + "uk": "Міська державна адміністрація", + "vi": "Tòa thị chính Thị xã", + "yue": "大會堂", + "zh-CN": "市政府", + "zh-HK": "大會堂", + "zh-TW": "鄉鎮市區公所", + "zh": "市政府" + } + }, + "amenity/toy_library": { + "title": { + "C": "Toy Library", + "cs": "půjčovna hraček", + "de": "Spielzeugbibliothek", + "el": "Βιβλιοθήκη Παιγνίων", + "en": "Toy Library", + "eo": "Ludil‑biblioteko", + "es": "Biblioteca de juguetes", + "fa": "قفسه اسباب‌بازی", + "fi": "Lelukirjasto", + "fr": "Ludothèque", + "gl": "Biblioteca de xoguetes", + "he": "ספריית צעצועים", + "hu": "Játékkölcsönző", + "it": "Ludoteca", + "ja": "おもちゃ資料館", + "mk": "Зајмување играчки", + "nl": "Spelotheek", + "no": "Lekebibliotek", + "pl": "Wypożyczalnia gier i zabawek", + "pt-BR": "Biblioteca de brinquedos", + "pt": "Brinquedoteca", + "sk": "Knižnica hračiek", + "sv": "Leksaksbibliotek", + "tr": "Oyuncak Kütüphanesi", + "uk": "Прокат іграшок", + "vi": "Thư viện Đồ chơi", + "zh-TW": "玩具圖書館" + } + }, + "amenity/university": { + "title": { + "C": "University Grounds", + "ar": "أرض جامعة", + "ast": "Campus universitariu", + "ca": "Campus universitari", + "cs": "Prostor vysoké školy", + "da": "Universitetsområde", + "de": "Universitätsgelände", + "el": "Χώρος Πανεπιστημίου", + "en-GB": "University Grounds", + "en": "University Grounds", + "eo": "Altgrada lernejo (ISCED 5-7)", + "es": "Terreno de universidad", + "et": "Ülikooliala", + "eu": "Unibertsitatearen eremua", + "fa": "محوطه دانشگاه", + "fi": "Yliopistokampus", + "fr": "Université, enseignement supérieur universitaire - institution ou campus", + "gl": "Área universitaria", + "he": "מתחם אוניברסיטה", + "hr": "Sveučilišno zemljište", + "hu": "Egyetem", + "id": "Lingkungan Universitas", + "is": "Háskólalóð", + "it": "Area universitaria", + "ja": "大学(代表点または敷地)", + "ko": "대학 부지", + "lt": "Universiteto kiemas", + "mk": "Универзитетски двор", + "ms": "Kawasan Universiti", + "nl": "Campus van universiteit of hogeschool", + "no": "Universitetsområde", + "pl": "Teren uczelni", + "pt-BR": "Universidade ou faculdade", + "pt": "Universidade", + "ro": "Universitate", + "ru": "Университет / Институт", + "sk": "Univerzita", + "sl": "Univerzitetno območje", + "sr": "Универзитетски кампус", + "sv": "Universitetsområde", + "ta": "பல்கலைக்கழகத் திடல்", + "tr": "Üniversite Yerleşkesi", + "uk": "Територія університету", + "vi": "Sân trường Đại học", + "zh-CN": "大学", + "zh-HK": "大學範圍", + "zh-TW": "大學範圍" + } + }, + "amenity/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaning Station", + "cs": "Vysavač", + "de": "Auto-Staubsauganlage", + "el": "Σταθμός Ηλεκτρικής Σκούπας", + "en": "Vacuum Cleaning Station", + "eo": "Polvosuĉilo", + "es": "Estación de limpieza con aspiradora", + "fa": "ایستگاه جاروبرقی", + "fr": "Station d'aspirateurs pour nettoyage automobile", + "he": "תחנת שאיבת אבק", + "it": "Stazione di Aspirapolvere per Interni", + "ja": "ゴミ吸取機", + "mk": "Постројка за правосмукање", + "nl": "Stofzuiger", + "pl": "Odkurzacz", + "pt-BR": "Estação de aspiração", + "pt": "Posto de aspiração", + "sk": "Stanica s vysávačom", + "sv": "Dammsugarstation", + "tr": "Elektrikli Süpürge İstasyonu", + "uk": "Стаціонарний пилотяг", + "vi": "Trạm Hút bụi", + "zh-CN": "真空清洁站", + "zh-TW": "吸塵器站" + } + }, + "amenity/vehicle_inspection": { + "title": { + "C": "Vehicle Inspection", + "ar": "فحص مركبات", + "ca": "Inspecció de vehicles", + "cs": "Kontrola vozidel", + "de": "Fahrzeuginspektion", + "el": "Επιθεώρηση Οχήματος", + "en": "Vehicle Inspection", + "eo": "Aŭtomobil-kontrolejo", + "es": "Inspección vehicular", + "fa": "مرکز معاینه فنی خودرو", + "fi": "Katsastusasema", + "fr": "Centre de contrôle technique", + "gl": "Inspección de vehículo", + "he": "בדיקת כלי רכב", + "hr": "Tehnički pregled vozila", + "hu": "Autóműszaki vizsgáló", + "is": "Skoðun farartækja", + "it": "Ispezione veicolo", + "ja": "車検場", + "ko": "차량 점검", + "mk": "Преглед на возила", + "nl": "Voertuigkeuring", + "pl": "Stacja kontroli pojazdów", + "pt-BR": "Inspeção veicular", + "pt": "Centro de inspeção de veículos", + "ru": "Станция техосмотра", + "sk": "Stanica technickej kontroly", + "sv": "Fordonsbesiktning", + "tr": "Araç denetleme", + "uk": "Техогляд траспортних засобів", + "vi": "Trạm Kiểm tra Xe", + "zh-CN": "车辆检查站", + "zh-TW": "車輛檢查" + } + }, + "amenity/vending_machine": { + "title": { + "C": "Vending Machine", + "ar": "آلة بيع", + "ast": "Máquina de venta automática", + "ca": "Màquina de vending", + "cs": "Prodejní automat", + "da": "Salgsautomat", + "de": "Verkaufsautomat", + "el": "Αυτόματος Πωλητής", + "en-GB": "Vending Machine", + "en": "Vending Machine", + "eo": "Vendilo", + "es": "Máquina expendedora", + "eu": "Makina saltzaile", + "fa": "دستگاه فروش خودکار", + "fi": "Myyntiautomaatti", + "fr": "Distributeur automatique", + "gl": "Máquina expendedora", + "he": "מכונת ממכר", + "hr": "Automat za prodaju", + "hu": "Árusító automata", + "is": "Sjálfsali", + "it": "Distributore automatico", + "ja": "自動販売機", + "ko": "자동판매기", + "lt": "Prekybos automatas", + "lv": "Tirdzniecības automāts", + "mk": "Продажен автомат", + "ms": "Mesin Layan Diri", + "nl": "Automaat", + "no": "Automat", + "pl": "Automat sprzedający", + "pt-BR": "Máquina de venda", + "pt": "Máquina de venda automática", + "ru": "Торговый автомат", + "sk": "Výdajný automat", + "sl": "Prodajni avtomat", + "sr": "Аутомат", + "sv": "Varuautomat", + "tr": "Otomatik Satış Makinası", + "uk": "Торговельний автомат", + "vi": "Máy Bán Hàng", + "zh-CN": "自动售货机", + "zh-HK": "售賣機", + "zh-TW": "自動販賣機" + } + }, + "amenity/veterinary": { + "title": { + "C": "Veterinary", + "ar": "طبيب بيطري", + "ast": "Veterinariu", + "ca": "Veterinari", + "ckb": "ڤێتێرنەری", + "cs": "Veterina", + "da": "Dyrlæge", + "de": "Tierarztpraxis", + "el": "Κτηνιατρείο", + "en-GB": "Veterinary", + "en": "Veterinary", + "eo": "Bestokuracistejo", + "es": "Veterinario", + "et": "Loomaarst", + "eu": "Albaitari", + "fa": "دامپزشکی", + "fi": "Eläinlääkäri", + "fr": "Vétérinaire", + "gl": "Veterinario", + "he": "וטרינר", + "hr": "Veterinar", + "hu": "Állatorvos", + "id": "Dokter Hewan", + "is": "Dýralæknir", + "it": "Veterinario", + "ja": "獣医", + "kn": "ಪಶುವೈದ್ಯಕೀಯ", + "ko": "동물병원", + "lt": "Veterinarija", + "lv": "Veternārārsts", + "mk": "Ветеринар", + "ms": "Veterinar", + "nl": "Dierenarts", + "no": "Veterinær", + "pl": "Weterynarz", + "pt-BR": "Veterinário", + "pt": "Veterinário", + "ro": "Medic Veterinar", + "ru": "Ветеринар", + "sk": "Veterinár", + "sl": "Veterinar", + "sr": "Ветеринарница", + "sv": "Veterinär", + "tr": "Veteriner", + "uk": "Ветеринарна лікарня", + "vi": "Thú y", + "zh-CN": "动物医院", + "zh-HK": "獸醫", + "zh-TW": "獸醫院" + } + }, + "amenity/waste_basket": { + "title": { + "C": "Waste Basket", + "af": "Asblik", + "ar": "سلة مهملات", + "ast": "Papelera", + "bg": "Кош за боклук", + "bs": "Kanta za otpatke", + "ca": "Paperera", + "cs": "Odpadkový koš", + "da": "Skraldespand", + "de": "Mülleimer", + "el": "Καλάθι Απορριμμάτων", + "en-GB": "Rubbish Bin", + "en": "Waste Basket", + "eo": "Rubujo", + "es": "Papelera", + "et": "Prügikast", + "fa": "سطل زباله", + "fi": "Roskakori", + "fr": "Poubelle pour piétons", + "gl": "Papeleira", + "he": "סל אשפה", + "hr": "Kanta za smeće", + "hu": "Szemeteskosár", + "id": "Tong Sampah", + "is": "Ruslafata", + "it": "Cestino della spazzatura", + "ja": "ゴミ箱", + "ko": "쓰레기통", + "lt": "Šiukšliadėžė", + "lv": "Atkritumu grozs", + "mk": "Корпа за отпадоци", + "nl": "Vuilnisbak", + "no": "Søppel", + "pl": "Kosz na śmieci", + "pt-BR": "Lixeira", + "pt": "Caixote do lixo", + "ru": "Мусорная корзина", + "sk": "Odpadový kôš", + "sl": "Koš za odpadke", + "sr": "Корпа за отпатке", + "sv": "Soptunna (liten)", + "tr": "Çöp Kutusu", + "uk": "Бак для сміття", + "vi": "Thùng rác", + "yue": "垃圾桶", + "zh-CN": "垃圾桶", + "zh-HK": "垃圾桶", + "zh-TW": "垃圾筒", + "zh": "垃圾箱" + } + }, + "amenity/waste_disposal": { + "title": { + "C": "Garbage Dumpster", + "ar": "صندوق قمامة قابل للنقل", + "ast": "Contenedor de basoria", + "ca": "Contenidor d'escombraries", + "cs": "Kontejner na směsný odpad", + "da": "Skraldespand", + "de": "Müllcontainer", + "el": "Κάδος απορριμμάτων", + "en-GB": "Garbage Dumpster", + "en": "Garbage Dumpster", + "eo": "Rubujego (miksita)", + "es": "Contenedor de residuos", + "et": "Prügikonteiner", + "fa": "زباله‌دان بزرگ", + "fi": "Jäteastia", + "fr": "Bac à déchets", + "gl": "Contedor de lixo", + "he": "פח אשפה", + "hr": "Kontejner za smeće", + "hu": "Szemeteskonténer", + "is": "Ruslagámur", + "it": "Cassonetto del pattume", + "ja": "ゴミ収集ボックス", + "ko": "쓰레기 수거함", + "lt": "Šiukšlių konteineris", + "lv": "Atkritumu konteiners", + "mk": "Контејнер", + "nl": "Kleine afvalcontainer", + "no": "Søppelkonteiner", + "pl": "Śmietnik", + "pt-BR": "Contêiner de lixo não reciclável", + "pt": "Contentor de lixo", + "ro": "Container de Gunoi", + "ru": "Мусорный бак", + "sk": "Odpadkový kontajner", + "sl": "Zabojnik za odpadke", + "sr": "Контејнер за смеће", + "sv": "Soptunna (hushålls- eller industrisopor)", + "tr": "Çöp Tenekesi", + "uk": "Контейнер для сміття", + "vi": "Thùng Rác Lớn", + "zh-CN": "大型垃圾箱", + "zh-HK": "大型垃圾箱", + "zh-TW": "垃圾場" + } + }, + "amenity/waste_transfer_station": { + "title": { + "C": "Waste Transfer Station", + "ar": "محطة نقل النفايات", + "ast": "Estación de tresferencia de basoria", + "ca": "Centre de tractament de residus", + "cs": "Překládací stanice odpadu", + "da": "Affaldsstation", + "de": "Müllumladestation", + "el": "Σταθμός Μεταφοράς Απορριμμάτων", + "en-GB": "Waste Transfer Station", + "en": "Waste Transfer Station", + "eo": "Stacio de rubmastrumado", + "es": "Estación de transferencia de residuos", + "fa": "ایستگاه انتقال زباله", + "fi": "Jätteiden putkikeräysasema", + "fr": "Installation de transit, regroupement ou tri de déchets", + "gl": "Estación de bombeo de augas residuais", + "he": "תחנת מעבר זבל", + "hu": "Hulladékátrakó állomás", + "is": "Sorpflokkunarstöð", + "it": "Centro Raccolta Rifiuti", + "ja": "ゴミ集積場", + "ko": "쓰레기 운반장", + "mk": "Претоварна отпадна станица", + "nl": "Afval-transfer-station", + "pl": "Stacja przeładunku odpadów", + "pt-BR": "Estação de transferência de resíduos", + "pt": "Estação de transferência de lixo", + "ru": "Канализационно-насосная станция", + "sk": "Stanica na prepravu odpadu", + "sl": "Zbirni center odpadkov", + "sr": "Станица за пренос отпада", + "sv": "Avfallscentral", + "tr": "Çöp Transfer İstasyonu", + "uk": "Сміттєперевантажувальна станція", + "vi": "Trạm Trung chuyển Chất thải", + "zh-CN": "垃圾中转站", + "zh-HK": "垃圾轉運站", + "zh-TW": "垃圾清運站" + } + }, + "amenity/water_point": { + "title": { + "C": "RV Drinking Water", + "ar": "RV مياه الشرب", + "ast": "Agua potable pa caravanes", + "ca": "Aigua potable d'autocaravana", + "cs": "Pitná voda pro karavany", + "da": "Tankning af drikkevand", + "de": "Camping-Trinkwasser", + "el": "Πόσιμο Νερό Αυτοκινούμενου Τροχόσπιτου", + "en-GB": "RV Drinking Water", + "en": "RV Drinking Water", + "eo": "Trinkakvejo (kampado)", + "es": "Recarga de agua potable para autocaravanas", + "fa": "آب آشامیدنی", + "fi": "Asuntoauton vesipiste", + "fr": "Eau potable pour citerne de véhicule de loisirs", + "gl": "Auga potábel para caravanas", + "he": "מי שתייה לקרוואן", + "hr": "Pitka voda za kamp kućice", + "hu": "Ivóvíz-csatlakozás lakóautónak", + "is": "Drykkjarvatn fyrir bíla", + "it": "Acqua potabile per camper", + "ja": "キャンピングカー用の給水施設", + "ko": "RV 식수대", + "mk": "Пивка вода за трајлери", + "nl": "Waterpunt voor kampeerauto's", + "no": "Bobil Drikkevann", + "pl": "Woda pitna dla kamperów", + "pt-BR": "Torneira de água potável", + "pt": "Água potável para autocaravanas", + "ru": "Питьевая вода для трейлера", + "sk": "Pitná voda pre karavany", + "sl": "Pitna voda za avtodome", + "sv": "Dricksvatten för campingfordon", + "tr": "İçme Suyu", + "uk": "Заправка питною водою", + "vi": "Vòi Nước uống dành cho Nhà lưu động", + "zh-CN": "直饮水", + "zh-HK": "露營車飲用水", + "zh-TW": "RV 飲用水" + } + }, + "amenity/watering_place": { + "title": { + "C": "Animal Watering Place", + "ar": "مكان شرب للحيوانات", + "ast": "Bebederu p'animales", + "ca": "Font d'aigua per animals", + "cs": "Napajedlo pro zvířata", + "da": "Dyrevandtrug", + "de": "Tränke", + "el": "Ποτίστρα Ζώων", + "en-GB": "Animal Watering Place", + "en": "Animal Watering Place", + "eo": "Akvotrinkejo por bestoj", + "es": "Abrevadero para animales", + "fa": "آبشخور حیوانات", + "fi": "Eläinten juomapaikka", + "fr": "Point d'eau pour animaux", + "gl": "Bebedoiro de animais", + "he": "מקור מים לחיות", + "hu": "Állatitató hely", + "is": "Brynning fyrir dýr", + "it": "Abbeveratoio", + "ja": "動物の水飲み場", + "ko": "동물 급수 장소", + "mk": "Поило за миленици", + "nl": "Drinkplaats voor dieren", + "no": "Dyrevanningssted", + "pl": "Poidło dla zwierząt", + "pt-BR": "Bebedouro para animais", + "pt": "Bebedouro para animais", + "ru": "Водопой для животных", + "sk": "Miesto na napájanie zvierat", + "sl": "Napajališče za živali", + "sr": "Појило", + "sv": "Dricksvatten för djur", + "tr": "Hayvan Yıkama Yeri", + "uk": "Водопій", + "vi": "Nước Uống dành cho Thú vật", + "zh-CN": "动物饮水地", + "zh-HK": "動物飲水處", + "zh-TW": "動物飲水區" + } + }, + "amenity/weighbridge": { + "title": { + "C": "Truck Scale", + "cs": "váha pro kamiony", + "da": "Brovægt", + "de": "Brückenwaage, LKW-Waage", + "en": "Truck Scale", + "eo": "Pesilo por aŭtomobiloj", + "es": "Báscula de camiones", + "fa": "باسکول کامیون", + "fi": "Rekkavaaka / rautatievaaka", + "fr": "pont bascule", + "gl": "Balanza de camións", + "he": "משקל משאיות", + "hu": "Teherautó mérleg", + "it": "Bilancia per camion", + "ja": "トラックスケール", + "ko": "트럭 저울", + "mk": "Мосна вага", + "nl": "Weegbrug", + "no": "Lastebilvekt", + "pl": "Waga dla pojazdów", + "pt-BR": "Balança de caminhão", + "pt": "Balança rodoviária", + "sk": "Váha pre nákladné vozidlá", + "sr": "Камионска вага", + "sv": "Lastbilsvåg", + "tr": "Kamyon Kantarı", + "uk": "Автомобільні ваги", + "vi": "Trạm Cân Xe tải", + "zh-CN": "汽车衡", + "zh-TW": "地磅" + } + }, + "leisure/adult_gaming_centre": { + "title": { + "C": "Adult Gaming Center", + "ast": "Centru de xuegos p'adultos", + "ca": "Centre d'oci adult", + "cs": "Herna (hrací automaty)", + "da": "Voksen spillecenter", + "de": "Spielothek für Erwachsene", + "el": "Κέντρο Παιχνιδιών Ενηλίκων", + "en-AU": "Adult Gaming Centre", + "en-GB": "Adult Gaming Centre", + "en": "Adult Gaming Center", + "eo": "Hazardludejo (enĵet-maŝinoj)", + "es": "Centro de juegos para adultos", + "fa": "مرکز بازی بزرگسالان", + "fi": "Uhkapelipelaamo", + "fr": "Jeux pour adultes", + "gl": "Centro recreativo para adultos", + "he": "מרכז בידור למבוגרים", + "hu": "Felnőtt játékközpont", + "id": "Pusat permainan dewasa", + "is": "Fjárhættuspilasalur", + "it": "Sala da gioco", + "ja": "遊技場(成人向け)", + "ko": "성인용 게임방", + "lt": "Suaugusiųjų lošimų vieta", + "mk": "Игротека за возрасни", + "nl": "Speelzaal (met kansspelmachines)", + "no": "Spillekasino", + "pl": "Salon gier hazardowych", + "pt-BR": "Centro de Jogos para Adultos", + "pt": "Centro de jogos para adultos", + "ru": "Игровые автоматы (азартные, на деньги)", + "sk": "Výherné automaty", + "sl": "Igralnica za odrasle", + "sv": "Center för vuxenspel", + "tr": "Yetişkin Oyun Merkezi", + "uk": "Гральні автомати", + "vi": "Trung tâm Đánh bạc", + "zh-CN": "成人街机厅", + "zh-HK": "成人遊戲中心", + "zh-TW": "成人遊戲中心" + } + }, + "leisure/amusement_arcade": { + "title": { + "C": "Amusement Arcade", + "cs": "Herna", + "da": "Spillehal", + "de": "Spielhalle", + "el": "Αίθουσα Ψυχαγωγίας", + "en-GB": "Amusement Arcade", + "en": "Amusement Arcade", + "eo": "Salono de ludoj", + "es": "Sala recreativa de videojuegos", + "et": "Videomängumasin", + "fa": "بازی تفریحی / سالن سرگرمی", + "fi": "Pelihalli", + "fr": "Salle de jeux", + "gl": "Sala de xogos recreativos", + "he": "משחקי ארקייד", + "hu": "Játékterem (kiskorúaknak is)", + "is": "Spilasalur", + "it": "Sala giochi", + "ja": "ゲームセンター", + "ko": "오락실", + "mk": "Забавна аркада", + "nl": "Speelhal", + "pl": "Salon gier", + "pt-BR": "Fliperama", + "pt": "Salão de jogos", + "ru": "Игровые автоматы", + "sv": "Arkadhall", + "tr": "Oyun Salonu", + "uk": "Ігрові автомати", + "vi": "Khu Trò chơi Điện tử", + "zh-TW": "遊樂場" + } + }, + "leisure/bandstand": { + "title": { + "C": "Bandstand", + "cs": "Kryté pódium", + "da": "Orkesterpavillon", + "de": "Musikpavillon", + "el": "Εξέδρα Συναυλιών", + "en": "Bandstand", + "eo": "Orkestrejeto", + "es": "Quiosco de música", + "fa": "محل دسته موسیقی (در پارک یا فضای باز)", + "fi": "Pieni esiintymislava", + "fr": "Kiosque à musique", + "gl": "Palco de música", + "he": "בימת תזמורת", + "hu": "Zenepavilon", + "is": "Hljómsveitapallur", + "it": "Chiosco della musica", + "ja": "野外音楽堂", + "ko": "연주 무대", + "mk": "Оркестарска естрада", + "nl": "Podium", + "pl": "Muszla koncertowa / estrada", + "pt-BR": "Coreto", + "pt": "Coreto", + "ru": "Площадка для музыкантов", + "sk": "Hudobný pavilón", + "sv": "Musikestrad", + "tr": "Bando standı", + "uk": "Естрада", + "vi": "Bục Dàn nhạc", + "zh-TW": "演奏臺" + } + }, + "leisure/beach_resort": { + "title": { + "C": "Beach Resort", + "ar": "منتجع الشاطئ", + "cs": "spravovaná pláž", + "da": "Strandresort", + "de": "Strandresort", + "el": "Παραθαλάσσιο Θέρετρο", + "en-GB": "Beach Resort", + "en": "Beach Resort", + "eo": "Sablobordo administrata (kun oportunaĵoj)", + "es": "Balneario", + "et": "Rannakuurort", + "fa": "تفرجگاه ساحلی", + "fi": "Rantalomakohde", + "fr": "Station balnéaire", + "gl": "Estancia de praia", + "he": "אתר נופש על החוף", + "hr": "Kupalište", + "hu": "Fürdőhely, vízparti strand", + "is": "Strandbær", + "it": "Stabilimento balneare", + "ja": "ビーチリゾート", + "ko": "해변 리조트", + "mk": "Плажно летувалиште", + "nl": "Strandoord", + "no": "Strandhotell", + "pl": "Resort nadmorski", + "pt-BR": "Resort em Praia", + "pt": "Estância balnear", + "ru": "Пляжный курорт", + "sk": "Plážový rezort", + "sv": "Strandresort", + "tr": "Sahil Tatil Yeri", + "uk": "Пляжний курорт", + "vi": "Bãi biển Nghỉ dưỡng", + "zh-CN": "海滩度假区", + "zh-TW": "海灘渡假村" + } + }, + "leisure/bird_hide": { + "title": { + "C": "Bird Hide", + "ast": "Observatoriu d'aves", + "ca": "Observatori d'ocells", + "cs": "Pozorovatelna zvěře", + "da": "Fugletårn", + "de": "Vogelbeobachtungsstation", + "el": "Κρυψώνα Κυνηγών Πτηνών", + "en-GB": "Bird Hide", + "en": "Bird Hide", + "eo": "Bird-observejo", + "es": "Observatorio de aves", + "fa": "مکان تماشای پرندگان", + "fi": "Lintutorni", + "fr": "Observatoire ornithologique", + "gl": "Observatorio de aves", + "he": "מסתור צפרות", + "hu": "Madárles", + "is": "Fuglaskoðunarskýli", + "it": "Osservazione uccelli", + "ja": "野鳥観察舎", + "ko": "탐조대", + "mk": "Птицонабљудувачница", + "nl": "Vogelkijkscherm of -hut", + "pl": "Czatownia ornitologiczna", + "pt-BR": "Local de observação de pássaros", + "pt": "Posto de observação de aves", + "ru": "Пункт наблюдения за птицами", + "sk": "Pozorovateľňa vtáctva", + "sl": "Opazovalnica", + "sv": "Torn/gömsle för fågelskådning", + "tr": "Vahşi Yaşam Gözetleme Kulesi", + "uk": "Пункт спостереження", + "vi": "Căn nhà Quan sát Chim", + "zh-CN": "观鸟点", + "zh-HK": "觀鳥屋", + "zh-TW": "鳥類棲息處" + } + }, + "leisure/bleachers": { + "title": { + "C": "Bleachers", + "cs": "nekryté tribuny", + "da": "Lægtepladser", + "de": "Nicht überdachte Tribüne", + "el": "Εξέδρα Χωρίς Σκεπή", + "en": "Bleachers", + "eo": "Spektejo", + "es": "Gradas", + "fa": "نیمکت مسابقات ورزشی", + "fi": "Katsomo", + "fr": "Gradins", + "gl": "Bancadas", + "he": "טריבונות", + "hu": "Lelátó", + "it": "Gradinate", + "ja": "観覧席", + "ko": "관중석", + "mk": "Гледалиште на отворено", + "nl": "Tribune", + "no": "Tribune", + "pl": "Trybuna (odkryta)", + "pt-BR": "Arquibancada simples", + "pt": "Bancadas", + "ru": "Трибуны", + "sk": "Tribúny", + "sv": "Läktare", + "tr": "Açık Tribün", + "uk": "Трибуни", + "vi": "Khán đài Ngoài trời", + "zh-TW": "看台" + } + }, + "leisure/bowling_alley": { + "title": { + "C": "Bowling Alley", + "ar": "بولينغ", + "ast": "Bolera americana", + "ca": "Bolera", + "cs": "Bowlingová dráha", + "da": "Bowlingbaner", + "de": "Bowlingbahn", + "el": "Διάδρομος Bowling", + "en-GB": "Bowling Alley", + "en": "Bowling Alley", + "eo": "Kegloludejo", + "es": "Pista de bolos", + "et": "Boolingusaal", + "fa": "سالن بولینگ", + "fi": "Keilahalli", + "fr": "Bowling", + "gl": "Birlos", + "he": "אולם כדורת", + "hr": "Kuglalište", + "hu": "Bowlingpálya", + "id": "Tempat Boling", + "is": "Keiluhöll", + "it": "Sala da Bowling", + "ja": "ボウリング場", + "ko": "볼링장", + "lv": "Boulinga Zāle", + "mk": "Кугларница", + "nl": "Bowlingbaan", + "no": "Bowlingsenter", + "pl": "Kręgielnia", + "pt-BR": "Pista de boliche", + "pt": "Pista de bólingue", + "ro": "Alee de Bowling", + "ru": "Боулинг центр", + "sk": "Bowlingová hala", + "sl": "Kegljišče", + "sv": "Bowlinghall", + "tr": "Bowling Salonu", + "uk": "Боулінг", + "vi": "Khu Bowling", + "zh-CN": "保龄球馆", + "zh-HK": "保齡球場", + "zh-TW": "保齡球館" + } + }, + "leisure/common": { + "title": { + "C": "Common", + "ar": "أرض مشترك", + "ast": "Terrén comunitariu", + "bs": "Uobičajeno", + "ca": "Àrea comuna", + "cs": "Volně přístupný prostor", + "da": "Fælled", + "de": "Öffentliche Fläche, Allmende", + "el": "Κοινό", + "en-GB": "Common", + "en": "Common", + "eo": "Publika ripoza tereno", + "es": "Tierras comunes -Reino Unido-", + "fa": "زمین عمومی (معمولا در انگلستان)", + "fi": "Yleinen", + "fr": "Terrain communal", + "gl": "Terreo comunal", + "he": "אזור משותף", + "hr": "Zelena površina po kojoj se može hodati - u UK", + "hu": "Szabadidős tevékenységre használható közös terület (Nagy-Britannia)", + "id": "Perintah", + "is": "Almenningur", + "it": "Luogo pubblico", + "ja": "共有地", + "ko": "일반", + "lt": "Bendros ganyklos", + "mk": "Јавно зеленило", + "nl": "Gemene weide", + "no": "Fellesområde", + "pl": "Teren rekreacyjny ogólnodostępny", + "pt-BR": "Área Comunitária", + "pt": "Terrenos comunitários", + "ro": "Comun", + "ru": "Общественные места для прогулок, без специфики", + "sk": "Verejné priestranstvo", + "sl": "Javni prostor", + "sr": "Јавно добро", + "sv": "Allmänning", + "ta": "பொதுவான", + "tr": "Piknik Alanı", + "uk": "Громада", + "vi": "Đất công", + "yue": "公地", + "zh-CN": "公共用地", + "zh-HK": "公共用地", + "zh-TW": "公共用地" + } + }, + "leisure/dance": { + "title": { + "C": "Dance School", + "ar": "قاعة الرقص", + "ast": "Salón de baille", + "ca": "Pista de ball", + "ckb": "هۆڵی سەماکردن", + "cs": "Tančírna", + "da": "Dansehal", + "de": "Tanzsaal", + "el": "Αίθουσα Xορού", + "en-GB": "Dance Hall", + "en": "Dance Hall", + "eo": "Dancejo", + "es": "Salón de baile", + "et": "Tantsusaal", + "fa": "سالن رقص", + "fi": "Tanssipaikka", + "fr": "Salle de danse", + "gl": "Sala de baile", + "he": "היכל ריקודים", + "hu": "Táncterem", + "is": "Danssalur", + "it": "Sala da ballo", + "ja": "ダンスホール", + "ko": "댄스 홀", + "lt": "Šokių salė", + "lv": "Deju zāle", + "mk": "Сала за игранки", + "nl": "Danszaal", + "pl": "Sala taneczna", + "pt-BR": "Danceteria", + "pt": "Salão de dança", + "ro": "Sală de Dans", + "ru": "Танцевальный зал", + "sk": "Tanečná hala", + "sl": "Plesna dvorana", + "sr": "Плесна сала", + "sv": "Dansbana", + "tr": "Dans Salonu", + "uk": "Зала для танців", + "vi": "Phòng Khiêu vũ", + "zh-CN": "舞厅", + "zh-HK": "舞廳", + "zh-TW": "舞廳" + } + }, + "dance:teaching/yes": { + "title": { + "C": "Dance School" + } + }, + "leisure/disc_golf_course": { + "title": { + "C": "Disc Golf Course", + "cs": "hřiště pro disc golf", + "de": "Discgolfanlage", + "en": "Disc Golf Course", + "eo": "Ludkampo por golfdisko", + "es": "Golf de disco", + "fa": "زمین گلف دیسک", + "fi": "Frisbeegolfkenttä", + "fr": "Parcours de disc golf", + "gl": "Golf de disco", + "he": "מגרש דיסק גולף", + "it": "Campo da golf del disco", + "ja": "ディスクゴルフコース", + "ko": "디스크 골프 코스", + "mk": "Терен за дикс-голф", + "nl": "Frisbeegolfparcours", + "no": "Disc Golf Bane", + "pl": "Pole do gry w disc golfa", + "pt-BR": "Percurso de golfe de disco", + "pt": "Campo de golfe de disco", + "sk": "Ihrisko na frisbee golf", + "sv": "Frisbeegolfbana", + "tr": "Disk Golf Sahası", + "uk": "Диско-гольф", + "zh-TW": "飛盤高爾夫球場" + } + }, + "leisure/dog_park": { + "title": { + "C": "Dog Park", + "af": "Hondepark", + "ar": "حديقة كلاب", + "ast": "Parque pa perros", + "bs": "Igralište za pse", + "ca": "Parc Caní", + "cs": "Psí park", + "da": "Hundepark", + "de": "Hundepark", + "el": "Πάρκο Σκύλων", + "en-GB": "Dog Park", + "en": "Dog Park", + "eo": "Hund-parko", + "es": "Parque canino", + "et": "Koerapark", + "fa": "پارک سگ", + "fi": "Koirapuisto", + "fr": "Parc canin", + "gl": "Parque para cans", + "he": "פארק כלבים", + "hr": "Park za pse", + "hu": "Kutyafuttató", + "id": "Taman Anjing", + "is": "Hundagarður", + "it": "Area per cani", + "ja": "ドッグパーク", + "ko": "개 공원", + "lt": "Šunų parkas", + "lv": "Suņu parks", + "mk": "Кучешки парк", + "nl": "Hondenpark", + "no": "Hundepark", + "pl": "Wybieg dla psów", + "pt-BR": "Cachorródromo", + "pt": "Parque para cães", + "ro": "Parc de Câini", + "ru": "Площадка для выгула собак", + "sk": "Psí park", + "sl": "Pasji park", + "sr": "Парк за псе", + "sv": "Hundpark", + "tr": "Köpek Parkı", + "uk": "Парк для собак", + "vi": "Công viên dành cho Chó", + "yue": "狗公園", + "zh-CN": "狗公园", + "zh-HK": "狗公園", + "zh-TW": "狗公園" + } + }, + "leisure/escape_game": { + "title": { + "C": "Escape Room", + "cs": "úniková hra", + "de": "Escape Room", + "el": "Δωμάτιο Απόδρασης", + "en-GB": "Escape Room", + "en": "Escape Room", + "eo": "Ĉambro de enigmoj", + "es": "Sala de escape", + "fa": "اتاق فرار", + "fi": "Pakopeli", + "fr": "Escape game", + "gl": "Escape room", + "he": "חדר בריחה", + "hu": "Szabadulószoba", + "it": "Escape Room", + "ja": "脱出ゲーム場", + "ko": "방탈출", + "mk": "Соба за бегство", + "nl": "Escaperoom", + "pl": "Escape room", + "pt-BR": "Sala de fuga", + "pt": "Sala de fuga", + "sk": "Escape Room", + "sv": "Escape Room", + "tr": "Kaçış Odası", + "uk": "Квест-кімната", + "vi": "Trò chơi Thoát khỏi Phòng", + "zh-TW": "密室逃脫" + } + }, + "leisure/firepit": { + "title": { + "C": "Fire Pit", + "ar": "حفرة نار", + "cs": "ohniště", + "da": "Bålsted", + "de": "Feuerstelle", + "en-GB": "Fire Pit", + "en": "Fire Pit", + "eo": "Lignofajrejo", + "es": "Pozo de fuego", + "fa": "گودال آتش", + "fi": "Tulentekopaikka", + "fr": "Emplacement pour feu", + "gl": "Fogueira", + "he": "שוחה למדורה", + "it": "Focolare", + "ja": "焚き火場", + "ko": "불구덩이", + "mk": "Огниште", + "nl": "Vuurplaats", + "pl": "Miejsce na ognisko", + "pt-BR": "Fogueira", + "pt": "Espaço para fogueira", + "sk": "Ohnisko", + "sv": "Eldstad", + "tr": "Ateş Çukuru", + "uk": "Вогнище", + "zh-CN": "火坑", + "zh-TW": "篝火" + } + }, + "leisure/fishing": { + "title": { + "C": "Fishing Spot", + "cs": "Místo pro rybolov", + "de": "Angelplatz", + "el": "Χώρος Αλιείας", + "en-GB": "Fishing Spot", + "en": "Fishing Spot", + "eo": "Loko por fiŝhokado", + "es": "Lugar de pesca", + "fa": "محل ماهیگیری", + "fi": "Kalastuspaikka", + "fr": "Lieu de pêche", + "gl": "Couto de pesca", + "he": "נקודת דיג", + "hr": "Mjesto za pecanje", + "hu": "Horgászhely", + "is": "Veiðistaður", + "it": "Punto per la pesca", + "ja": "釣りスポット", + "ko": "낚시터", + "mk": "Место за риболов", + "nl": "Visstek", + "no": "Fiske Plass", + "pl": "Łowisko", + "pt-BR": "Ponto de pesca", + "pt": "Local de pesca", + "ru": "Место для рыбалки", + "sk": "Rybárske miesto", + "sr": "Место за риболов", + "sv": "Fiskeplats", + "tr": "Balık Tutma Yeri", + "uk": "Місце для риболовлі", + "vi": "Chỗ Câu cá", + "zh-CN": "钓鱼地点", + "zh-TW": "釣魚點" + } + }, + "leisure/fitness_centre": { + "title": { + "C": "Gym / Fitness Center", + "ar": "مركز اللياقة البدنية", + "ast": "Ximnasiu / Centru de fitness", + "ca": "Gimnàs / Centre de Fitness", + "cs": "Tělocvična / Fitness centrum", + "da": "Gym / Fitnesscenter", + "de": "Fitness-Studio", + "el": "Γυμναστήριο", + "en-AU": "Gym / Fitness Centre", + "en-GB": "Gym / Fitness Centre", + "en": "Gym / Fitness Center", + "eo": "Ripoz-gimnastika centro", + "es": "Gimnasio / Centro de fitness", + "fa": "باشگاه تناسب اندام", + "fi": "Kuntosali / fitness-keskus", + "fr": "Centre de fitness / gym", + "gl": "Ximnasio", + "he": "מכון כושר", + "hr": "Zatvoreni prostor za vježbanje", + "hu": "Edzőterem / Fitneszklub", + "is": "Líkamsræktarmiðstöð", + "it": "Palestra / Centro Fitness", + "ja": "ジム/フィットネスセンター", + "ko": "체육관 / 피트니스 센터", + "lv": "Sportazāle / Fitnesa centrs", + "mk": "Вежбалница", + "nl": "Fitnesscentrum", + "no": "Treningssenter", + "pl": "Siłownia / klub fitness", + "pt-BR": "Academia", + "pt": "Ginásio", + "ro": "Centru Fitness", + "ru": "Спортзал, фитнес-центр", + "sl": "Telovadnica / Fitness", + "sr": "Теретана / Фитнес центар", + "sv": "Gym / Fitnesscenter", + "tr": "Spor Salonu", + "uk": "Зал/Фітнес центр", + "vi": "Trung tâm Thể dục", + "zh-CN": "健身房/健身中心", + "zh-HK": "體育館 / 健體中心", + "zh-TW": "健身房/健身中心" + } + }, + "leisure/fitness_station": { + "title": { + "C": "Outdoor Fitness Station", + "ar": "محطة اللياقة البدنية في الهواء الطلق", + "ast": "Centru de fitness albentestate", + "ca": "Instal·lació exterior de Fitness", + "cs": "Venkovní tělocvična", + "da": "Udendørs fitnessplads", + "de": "Freiluft-Fitness-Station", + "el": "Υπαίθριο Γυμναστήριο", + "en-GB": "Outdoor Fitness Station", + "en": "Outdoor Fitness Station", + "eo": "Ekzerc-parko (eksterdoma)", + "es": "Estación de gimnasia al aire libre", + "fa": "ایستگاه ورزشی در فضای باز", + "fi": "Ulkokuntoilulaitteet", + "fr": "Fitness en extérieur", + "gl": "Estación de ximnasia ao aire libre", + "he": "תחנת כושר", + "hr": "Vanjski prostor za vježbanje", + "hu": "Fitneszpark", + "is": "Líkamsþjálfunarstöð utandyra", + "it": "Palestra a cielo aperto", + "ja": "屋外トレーニング場", + "ko": "야외 신체단련소", + "lv": "Brīvdabas fitnesa vieta", + "mk": "Вежбалница на отворено", + "nl": "Buitenshuis fitness-station", + "pl": "Siłownia zewnętrzna", + "pt-BR": "Equipamento de Exercícios ao Ar Livre", + "pt": "Ginásio ao ar livre", + "ro": "Stație de Fitness în Aer Liber", + "ru": "Спортплощадка — тренажёры, турник, брусья", + "sl": "Telovadna orodja na prostem", + "sv": "Utomhusgym", + "tr": "Açıkhava Spor Yeri", + "uk": "Тренажери на вулиці", + "vi": "Trạm Thể dục", + "zh-CN": "户外健身站", + "zh-HK": "戶外健體站", + "zh-TW": "戶外健身站" + } + }, + "leisure/garden": { + "title": { + "C": "Garden", + "af": "Tuin", + "ar": "حديقة", + "ast": "Xardín", + "bg": "Градина", + "bn": "বাগান", + "bs": "Vrt", + "ca": "Jardí", + "ckb": "باخچە", + "cs": "Zahrada", + "da": "Have", + "de": "Garten", + "el": "Κήπος", + "en-GB": "Garden", + "en": "Garden", + "eo": "Ĝardeno", + "es": "Jardín", + "et": "Aed", + "fa": "باغ", + "fi": "Puutarha", + "fr": "Jardin", + "gl": "Xardín", + "he": "גן", + "hr": "Vrt", + "hu": "Kert", + "id": "Kebun", + "is": "Garður", + "it": "Giardino", + "ja": "庭園", + "kn": "ಕೈತೋಟ", + "ko": "정원", + "lt": "Sodas", + "lv": "Dārzs", + "mk": "Градина", + "nl": "Tuin", + "no": "Hage", + "pl": "Ogród", + "pt-BR": "Jardim / Horta", + "pt": "Jardim", + "ro": "Grădină", + "ru": "Сад", + "sk": "Záhrada", + "sl": "Vrt", + "sr": "Башта", + "sv": "Trädgård", + "ta": "தோட்டம்", + "te": "తోట", + "tr": "Bahçe", + "uk": "Сад", + "vi": "Vườn", + "yue": "花園", + "zh-CN": "花园", + "zh-HK": "花園", + "zh-TW": "花園", + "zh": "花园" + } + }, + "leisure/golf_course": { + "title": { + "C": "Golf Course", + "af": "Golfbaan", + "ar": "معلب جولف", + "ast": "Campu de golf", + "bg": "Голф игрище", + "bn": "গল্ফ মাঠ", + "bs": "Golf teren", + "ca": "Camp de golf", + "cs": "Golfové hřiště", + "da": "Golfbane", + "de": "Golfplatz", + "el": "Γήπεδο Γκολφ", + "en-GB": "Golf Course", + "en": "Golf Course", + "eo": "Golfludejo", + "es": "Campo de golf", + "et": "Golfiväljak", + "fa": "زمین گلف", + "fi": "Golfkenttä", + "fr": "Parcours de golf", + "gl": "Campo de golf", + "he": "מגרש גולף", + "hr": "Igralište za golf", + "hu": "Golfpálya", + "id": "Lapangan Golf", + "is": "Golfvöllur", + "it": "Campo da Golf", + "ja": "ゴルフコース", + "ko": "골프장", + "lt": "Golfo aikštynas", + "lv": "Golfa laukums", + "mk": "Терен за голф", + "nl": "Golfbaan", + "no": "Golfbane", + "pl": "Pole golfowe", + "pt-BR": "Campo de Golfe", + "pt": "Campo de golfe", + "ro": "Curs de Golf", + "ru": "Площадка для гольфа", + "sk": "Golfové ihrisko", + "sl": "Golfišče", + "sr": "Голф терен", + "sv": "Golfbana", + "ta": "கோல்ஃப் கோர்ஸ்", + "tr": "Golf Sahası", + "uk": "Поле для гольфу", + "vi": "Sân Golf", + "yue": "哥夫球場", + "zh-CN": "高尔夫球场", + "zh-HK": "高爾夫球場", + "zh-TW": "高爾夫球場", + "zh": "高尔夫球场" + } + }, + "leisure/hackerspace": { + "title": { + "C": "Hackerspace", + "cs": "hackerspace", + "da": "Hackerspace", + "de": "Hackerspace", + "el": "Χώρος Συζήτησης Εργασιών", + "en-GB": "Hackerspace", + "en": "Hackerspace", + "eo": "Kodumulejo (hackerspace)", + "es": "Hacklab", + "fa": "هکراسپیس", + "fi": "Hacklab", + "fr": "Hackerspace", + "he": "משרד היי טק משותף", + "hu": "Alkotóműhely", + "is": "Hakkaraathvarf", + "it": "Spazio hacker", + "ja": "ハッカースペース", + "ko": "해커스페이스", + "mk": "Хакерски простор", + "nl": "Hackerspace", + "no": "Hackerspace", + "pl": "Hackerspace", + "pt-BR": "Hackerspace", + "pt": "Espaço de hackers", + "ru": "Хакерспейс", + "sk": "Hackerspace", + "sv": "Hackerspace", + "tr": "Bilgisayar Korsanı Alanı", + "uk": "Хакерспейс", + "vi": "Không gian Hacker", + "zh-CN": "创客空间", + "zh-TW": "駭客空間" + } + }, + "leisure/horse_riding": { + "title": { + "C": "Horseback Riding Facility", + "ar": "منشأة ركوب خيل", + "ast": "Instalación pa equitación", + "cs": "Jezdecký areál", + "da": "Ridningsfaciliteter", + "de": "Reitanlage", + "el": "Χώροι Ιπποστασίου", + "en-GB": "Horseback Riding Facility", + "en": "Horseback Riding Facility", + "eo": "Ĉeval-rajdadejo", + "es": "Centro de equitación", + "et": "Ratsakeskus", + "fa": "باشگاه اسب سواری", + "fi": "Ratsastusalue", + "fr": "Centre équestre", + "gl": "Centro de equitación", + "he": "מתקן רכיבה על סוסים", + "hu": "Lovasiskola", + "is": "Aðstaða fyrir reiðmennsku", + "it": "Centro equestre", + "ja": "乗馬施設", + "ko": "승마 시설", + "lv": "Zirgu jāšanas vieta", + "mk": "Јавачница за коњи", + "nl": "Manege", + "no": "Ridesenter", + "pl": "Ośrodek jeździecki", + "pt-BR": "Centro de Hipismo", + "pt": "Centro equestre", + "ro": "Facilitate de Călărie", + "ru": "Площадка для верховой езды", + "sk": "Zariadenie jazdy na koni", + "sl": "Jahalni klub", + "sv": "Ridskola", + "tr": "At Binicilik Spor Kulübü", + "uk": "Верхова їзда", + "vi": "Khu Cưỡi ngựa", + "zh-CN": "骑马场", + "zh-HK": "騎馬設施", + "zh-TW": "騎馬場" + } + }, + "leisure/ice_rink": { + "title": { + "C": "Ice Rink", + "ar": "حلبة تزلج", + "ast": "Pista de xelu", + "ca": "Pista de gel", + "cs": "Kluziště", + "da": "Skøjtebane", + "de": "Eislaufbahn", + "el": "Παγοδρόμιο", + "en-GB": "Ice Rink", + "en": "Ice Rink", + "eo": "Glitkurejo", + "es": "Pista de hielo", + "et": "Uisuväljak", + "fa": "بازی روی یخ", + "fi": "Luistelukenttä", + "fr": "Patinoire", + "gl": "Pista de xeo", + "he": "החלקרח", + "hr": "Klizalište", + "hu": "Jégpálya", + "id": "Arena Seluncur Es", + "is": "Skautasvell", + "it": "Pista di Ghiaccio", + "ja": "アイススケート場", + "ko": "아이스 링크", + "lt": "Čiuožykla", + "lv": "Ledus halle", + "mk": "Лизгалиште", + "nl": "Schaatsbaan", + "no": "Skøytebane", + "pl": "Lodowisko", + "pt-BR": "Pista de Patinação no Gelo", + "pt": "Rinque de gelo", + "ru": "Каток", + "sk": "Klzisko", + "sl": "Drsališče", + "sr": "Клизалиште", + "sv": "Skridskobana", + "tr": "Buz Pateni", + "uk": "Каток", + "vi": "Sân Băng", + "zh-CN": "滑冰场", + "zh-HK": "溜冰場", + "zh-TW": "溜冰場" + } + }, + "leisure/indoor_play": { + "title": { + "C": "Indoor Play Center" + } + }, + "leisure/marina": { + "title": { + "C": "Marina", + "af": "Vasmeerplek", + "ar": "مرسى السفن", + "ast": "Puertu deportivu", + "bg": "Яхт клуб", + "bs": "Marina", + "ca": "Port esportiu", + "cs": "Přístaviště", + "da": "Lystbådehavn", + "de": "Yachthafen", + "dv": "ޔޮޓު މެރީނާ", + "el": "Μαρίνα", + "en-GB": "Marina", + "en": "Marina", + "eo": "Jaĥt-haveno", + "es": "Puerto deportivo", + "et": "Väikesadam", + "fa": "تفرجگاه ساحلی", + "fi": "Venesatama", + "fr": "Marina", + "gl": "Porto deportivo", + "he": "מרינה", + "hr": "Marina", + "hu": "Kishajókikötő", + "id": "Marina", + "is": "Bátahöfn", + "it": "Marina", + "ja": "マリーナ", + "ko": "마리나", + "lt": "Prieplauka", + "mk": "Сидриште", + "nl": "Jachthaven", + "no": "Marina", + "pl": "Przystań", + "pt-BR": "Marina", + "pt": "Marina", + "ru": "Стоянка для яхт", + "sk": "Lodenica", + "sl": "Marina", + "so": "Deked", + "sr": "Марина", + "sv": "Marina", + "ta": "மரினா", + "tr": "Yat Limanı", + "uk": "Пристань для яхт", + "vi": "Bến tàu", + "yue": "遊艇碼頭", + "zh-CN": "游艇码头", + "zh-HK": "遊艇碼頭", + "zh-TW": "遊艇碼頭", + "zh": "码头" + } + }, + "leisure/miniature_golf": { + "title": { + "C": "Miniature Golf", + "ar": "ملعب الجولف المصغرة", + "ast": "Minigolf", + "ca": "Golf en miniatura", + "cs": "Minigolf", + "da": "Minigolf", + "de": "Minigolfanlage", + "el": "Μίνι Γκολφ", + "en-GB": "Miniature Golf", + "en": "Miniature Golf", + "eo": "Minigolfludejo", + "es": "Mini golf", + "et": "Minatuurgolf", + "fa": "گلف مینیاتوری", + "fi": "Minigolf", + "fr": "Mini-golf", + "gl": "Minigolf", + "he": "מיני-גולף", + "hr": "Minigolf", + "hu": "Minigolf", + "is": "Mínígolf", + "it": "Minigolf", + "ja": "ミニゴルフ", + "ko": "미니 골프", + "lt": "Minigolfas", + "mk": "Миниголф", + "nl": "Minigolf", + "no": "Minigolf", + "pl": "Minigolf", + "pt-BR": "Campo de Minigolfe", + "pt": "Campo de minigolfe", + "ro": "Minigolf", + "ru": "Мини-гольф", + "sk": "Miniatúrny golf", + "sl": "Minigolf", + "sr": "Мини-голф", + "sv": "Minigolf", + "tr": "Mini Golf", + "uk": "Міні-гольф", + "vi": "Sân Golf Mini", + "zh-CN": "迷你高尔夫", + "zh-HK": "迷你哥爾夫", + "zh-TW": "迷你高爾夫" + } + }, + "leisure/nature_reserve": { + "title": { + "C": "Nature Reserve", + "ar": "محمية طبيعية", + "ast": "Reserva natural", + "ca": "Reserva Natural", + "cs": "Přírodní rezervace", + "da": "Naturreservat", + "de": "Naturschutzgebiet", + "el": "Προστατευόμενος Βιότοπος", + "en-GB": "Nature Reserve", + "en": "Nature Reserve", + "eo": "Natur-rezervejo", + "es": "Reserva natural", + "et": "Looduskaitseala", + "fa": "ذخیره‌گاه طبیعی", + "fi": "Luonnonsuojelualue", + "fr": "Réserve naturelle", + "gl": "Reserva natural", + "he": "שמורת טבע", + "hr": "Prirodni rezervat", + "hu": "Természetvédelmi terület", + "id": "Cagar Alam", + "is": "Friðland", + "it": "Riserva naturale", + "ja": "自然保護区", + "ko": "자연 보호 구역", + "lt": "Draustinis", + "mk": "Природен резерват", + "nl": "Natuurreservaat", + "no": "Naturreservat", + "pl": "Rezerwat przyrody", + "pt-BR": "Reserva natural", + "pt": "Reserva natural", + "ro": "Rezervat Natural", + "ru": "Заповедник", + "sk": "Prírodná rezervácia", + "sl": "Naravni rezervat", + "sr": "Резерват природе", + "sv": "Naturreservat", + "tr": "Doğal Koruma Alanı", + "uk": "Заповідник", + "vi": "Khu Bảo tồn Thiên nhiên", + "zh-CN": "自然保护区", + "zh-HK": "自然保護區", + "zh-TW": "自然保留區" + } + }, + "leisure/outdoor_seating": { + "title": { + "C": "Outdoor Seating Area", + "cs": "Venkovní posezení", + "da": "Udendørs siddepladser", + "de": "Außengastronomie", + "el": "Υπαίθριο Καθιστικό", + "en-GB": "Outdoor Seating Area", + "en": "Outdoor Seating Area", + "eo": "Seĝoj eksterdome", + "es": "Área de asientos al exterior", + "fa": "محل استقرار در فضای باز", + "fi": "Ulkoterassi", + "fr": "Aire des places en terrasse", + "gl": "Área de asentos ó exterior", + "he": "אזור ישיבה בחוץ", + "hr": "Sjedenje vani", + "is": "Svæði fyrir sæti utandyra", + "it": "Posti a sedere all’esterno", + "ja": "屋外食事席エリア", + "ko": "야외 좌석 구역", + "mk": "Маси на отворено", + "nl": "Terras (horeca)", + "pl": "Ogródek", + "pt-BR": "Área de estar ao ar livre", + "pt": "Esplanada", + "ru": "Столики на улице (площадка)", + "sk": "Vonkajšie sedenie", + "sv": "Uteservering", + "tr": "Açık Oturma Alanı", + "uk": "Місця на свіжому повітрі", + "vi": "Khu Ăn uống Ngoài trời", + "zh-CN": "室外座位", + "zh-TW": "戶外座位區" + } + }, + "leisure/park": { + "title": { + "C": "Park", + "af": "Park", + "ar": "منتزه", + "ast": "Parque", + "bg": "Парк", + "bn": "উদ্যান", + "bs": "Park", + "ca": "Parc", + "cs": "Park", + "da": "Park", + "de": "Park", + "dv": "ޕާރކުތައް", + "el": "Πάρκο", + "en-GB": "Park", + "en": "Park", + "eo": "Parko", + "es": "Parque / Plaza verde", + "et": "Park", + "fa": "پارک", + "fi": "Puisto", + "fr": "Parc", + "gl": "Parque", + "he": "פארק", + "hr": "Park", + "hu": "Park", + "id": "Taman", + "is": "Garður", + "it": "Parco", + "ja": "公園", + "kn": "ಉದ್ಯಾನವನ", + "ko": "공원", + "lt": "Parkas", + "lv": "Parks", + "mk": "Парк", + "ne": "पार्क", + "nl": "Park", + "no": "Park", + "pl": "Park rekreacyjno-wypoczynkowy", + "pt-BR": "Parque ou Praça", + "pt": "Parque público", + "ro": "Parc", + "ru": "Парк отдыха", + "sk": "Park", + "sl": "Park", + "so": "Jardiino", + "sr": "Парк", + "sv": "Park", + "ta": "பூங்கா", + "te": "పార్కు", + "tr": "Park", + "uk": "Парк", + "vi": "Công viên", + "yue": "園", + "zh-CN": "公园", + "zh-HK": "公園", + "zh-TW": "公園", + "zh": "公园" + } + }, + "leisure/picnic_table": { + "title": { + "C": "Picnic Table", + "ar": "طاولة النزهة", + "ast": "Mesa de merenderu", + "ca": "Taula de picnic", + "cs": "Stůl na piknik", + "da": "Madpakkebord", + "de": "Picknicktisch", + "el": "Τραπέζι Πικ Νικ", + "en-GB": "Picnic Table", + "en": "Picnic Table", + "eo": "Piknika tablo", + "es": "Mesa de picnic", + "et": "Piknikulaud", + "fa": "میز پیکنیک", + "fi": "Piknikpöytä", + "fr": "Table de pique-nique", + "gl": "Mesa de pícnic", + "he": "שולחן פיקניק", + "hr": "Stol za piknik", + "hu": "Piknikasztal", + "id": "Meja Piknik", + "is": "Nestisborð", + "it": "Tavolo da picnic", + "ja": "ピクニックテーブル", + "ko": "피크닉 테이블", + "lt": "Pikniko stalas", + "lv": "Piknika galds", + "mk": "Излетничка маса", + "nl": "Picknicktafel", + "no": "Piknikbord", + "pl": "Stół piknikowy", + "pt-BR": "Mesa de piquenique", + "pt": "Mesa de piquenique", + "ro": "Masă de Picnic", + "ru": "Стол для пикника", + "sk": "Piknikový stôl", + "sl": "Piknik miza", + "sr": "Сто за излет", + "sv": "Picknickbord", + "tr": "Piknik Masası", + "uk": "Місце для пікніка", + "vi": "Bàn ăn Ngoài trời", + "zh-CN": "野餐桌", + "zh-HK": "野餐桌", + "zh-TW": "野餐桌" + } + }, + "leisure/pitch": { + "title": { + "C": "Sport Pitch", + "af": "Sport Veld", + "ar": "ملعب رياضي", + "ast": "Campu deportivu", + "bg": "Спортно игрище", + "bs": "Sportsko igralište", + "ca": "Camp d'esports", + "cs": "Hřiště", + "da": "Sportsbane", + "de": "Sportplatz", + "el": "Αγωνιστικός Χώρος", + "en-GB": "Sport Pitch", + "en": "Sport Pitch", + "eo": "Ludkampo", + "es": "Cancha de juego", + "et": "Spordiväljak", + "fa": "زمین ورزشی", + "fi": "Urheilukenttä", + "fr": "Terrain de sport", + "gl": "Cancha deportiva", + "he": "מגרש ספורט", + "hr": "Sportski teren", + "hu": "Sportpálya", + "id": "Lapangan Olahraga", + "is": "Íþróttavöllur", + "it": "Campo da gioco", + "ja": "スポーツ競技場", + "ko": "운동장", + "lt": "Sporto aikštelė", + "lv": "Sporta laukums", + "mk": "Спортско игралиште", + "nl": "Sportveld", + "no": "Idrettsbane", + "pl": "Boisko", + "pt-BR": "Quadra ou Campo Esportivo", + "pt": "Campo de desporto", + "ro": "Teren de Sport", + "ru": "Спортивная площадка", + "sk": "Športový kurt", + "sl": "Športno igrišče", + "sr": "Спортско игралиште", + "sv": "Idrottsplats", + "tr": "Spor Sahası", + "uk": "Спортивний майданчик", + "vi": "Sân Thể thao", + "yue": "運動場", + "zh-CN": "运动场地", + "zh-HK": "運動場地", + "zh-TW": "運動場地", + "zh": "运动场所" + } + }, + "leisure/playground": { + "title": { + "C": "Playground", + "af": "Speelpark", + "ar": "ساحة ألعاب للأطفال", + "ast": "Xuegos infantiles", + "bg": "Детска площадка", + "bn": "খেলার মাঠ", + "bs": "Igralište", + "ca": "Zona de jocs infantils", + "cs": "Dětské hřiště", + "da": "Legeplads", + "de": "Spielplatz", + "el": "Παιδική Χαρά", + "en-GB": "Playground", + "en": "Playground", + "eo": "Infana ludejo", + "es": "Patio de juegos", + "et": "Mänguväljak", + "eu": "Jolastoki", + "fa": "زمین بازی", + "fi": "Leikkipuisto", + "fr": "Jeux pour enfants", + "gl": "Parque infantil", + "he": "גן שעשועים", + "hr": "Igralište", + "hu": "Játszótér", + "id": "Lapangan Bermain", + "is": "Leikvöllur", + "it": "Parco giochi", + "ja": "児童公園", + "ko": "놀이터", + "lt": "Žaidimų aikštelė", + "lv": "Spēļlaukums", + "mk": "Игралиште", + "nl": "Speeltuin", + "no": "Lekeplass", + "pl": "Plac zabaw", + "pt-BR": "Parquinho", + "pt": "Parque infantil", + "ro": "Loc de Joacă", + "ru": "Детская площадка", + "sk": "Ihrisko pre deti", + "sl": "Otroško igrišče", + "sr": "Игралиште", + "sv": "Lekplats", + "ta": "விளையாட்டுத் திடல்", + "te": "ఆటమైదానం", + "tr": "Çocuk Parkı", + "uk": "Ігровий майданчик", + "vi": "Sân chơi", + "yue": "遊樂場", + "zh-CN": "儿童游乐场", + "zh-HK": "遊樂場", + "zh-TW": "遊樂場", + "zh": "游乐场" + } + }, + "leisure/resort": { + "title": { + "C": "Resort", + "ar": "منتجع", + "cs": "Letovisko", + "da": "Turistresort", + "de": "Resort", + "el": "Θέρετρο", + "en-GB": "Resort", + "en": "Resort", + "eo": "Turisma centro", + "es": "Complejo turístico", + "et": "Puhkekeskus", + "eu": "opor-leku", + "fa": "مجتمع تفریحی", + "fi": "Lomakohde", + "fr": "Complexe touristique , Village de vacances", + "gl": "Complexo turístico", + "he": "אתר נופש", + "hu": "Üdülőhely", + "is": "Afþreyingarþorp", + "it": "Resort", + "ja": "リゾート地", + "ko": "리조트", + "mk": "Одморалиште", + "nl": "Resort", + "pl": "Ośrodek wczasowy", + "pt-BR": "Resort", + "pt": "Estância turística", + "ro": "Resort", + "ru": "База отдыха / санаторий / пасионат / детский лагерь", + "sk": "Rezort", + "sl": "Letovišče", + "sr": "Одмаралиште", + "sv": "Resort", + "tr": "Tatil Yeri", + "uk": "Курорт", + "vi": "Khu Nghỉ dưỡng", + "zh-CN": "度假区", + "zh-HK": "度假勝地", + "zh-TW": "度假勝地" + } + }, + "leisure/sauna": { + "title": { + "C": "Sauna", + "ar": "سونا", + "ast": "Sauna", + "cs": "Sauna", + "da": "Sauna", + "de": "Sauna", + "el": "Σάουνα", + "en-GB": "Sauna", + "en": "Sauna", + "eo": "Ŝvitbanejo", + "es": "Sauna", + "et": "Saun", + "eu": "Sauna", + "fa": "سونا", + "fi": "Sauna", + "fr": "Sauna", + "gl": "Sauna", + "he": "סאונה", + "hr": "Sauna", + "hu": "Szauna", + "is": "Gufubað", + "it": "Sauna", + "ja": "サウナ", + "ko": "사우나", + "lt": "Sauna", + "lv": "Sauna", + "mk": "Сауна", + "nl": "Sauna", + "no": "Badstu", + "pl": "Sauna", + "pt-BR": "Sauna", + "pt": "Sauna", + "ru": "Сауна", + "sk": "Sauna", + "sr": "Сауна", + "sv": "Bastu", + "tr": "Sauna", + "uk": "Сауна", + "vi": "Tắm hơi", + "zh-CN": "桑拿", + "zh-TW": "桑拿" + } + }, + "leisure/slipway": { + "title": { + "C": "Slipway", + "af": "Inglipbaan", + "ar": "مزلقة سفن", + "ast": "Rampla de botadura", + "bg": "Хелинг", + "bs": "Navoz", + "ca": "Pendent per a embarcacions", + "cs": "Vodní skluz", + "da": "Bådrampe", + "de": "Gleitbahn", + "el": "Γλίστρα", + "en-GB": "Slipway", + "en": "Slipway", + "eo": "Ŝipglitejo", + "es": "Rampa para botes", + "et": "Slipp", + "fa": "سرسره آب اندازی قایق", + "fi": "Veneramppi", + "fr": "Cale de mise à l'eau", + "gl": "Rampla para embarcacións", + "he": "ממשה", + "hr": "Navoz za brodove", + "hu": "Sólya", + "is": "Dráttarbraut", + "it": "Scivolo per barche", + "ja": "進水路", + "ko": "선가대", + "mk": "Испуст за пловила", + "nl": "Botenhelling", + "no": "Båtslipp", + "pl": "Pochylnia okrętowa", + "pt-BR": "Rampa Náutica", + "pt": "Rampa para barcos", + "ru": "Стапель", + "sk": "Spúšťanie lodí", + "sl": "Rampa", + "sr": "Навоз", + "sv": "Stapelbädd", + "tr": "Gemi Kızağı", + "uk": "Стапель", + "vi": "Đường Trượt tàu", + "yue": "船排", + "zh-CN": "船台", + "zh-HK": "船台", + "zh-TW": "船架滑道", + "zh": "船架滑道" + } + }, + "leisure/sports_centre": { + "title": { + "C": "Sports Center / Complex", + "ar": "مركز رياضي", + "ast": "Centru / Complexu deportivu", + "ca": "Complex esportiu", + "cs": "Sportovní centrum", + "da": "Sportcenter / Kompleks", + "de": "Sportzentrum / -komplex", + "dv": "ކުުޅިވަރު މަރުކަޒު", + "el": "Αθλητικό Κέντρο/ Συγκρότημα", + "en-AU": "Sports Centre / Complex", + "en-GB": "Sports Centre / Complex", + "en": "Sports Center / Complex", + "eo": "Sporta centro", + "es": "Complejo deportivo", + "et": "Spordikeskus", + "eu": "Kiroldegia/ gunea", + "fa": "مجتمع / مرکز ورزشی", + "fi": "Liikuntakeskus", + "fr": "Centre sportif", + "gl": "Complexo deportivo", + "he": "מרכז ספורט", + "hr": "Sportski centar", + "hu": "Sportközpont / komplexum", + "is": "Íþróttamiðstöð", + "it": "Complesso / Centro Sportivo", + "ja": "スポーツセンター/複合施設", + "ko": "스포츠 센터 / 단지", + "lv": "Sporta Centrs / Komplekss", + "mk": "Спортски центар / комплекс", + "nl": "Sportcentrum of -complex", + "pl": "Centrum sportowe", + "pt-BR": "Centro Esportivo / Clube", + "pt": "Complexo desportivo", + "ro": "Centru / Complex de Sport", + "ru": "Спортивный центр/комплекс", + "sk": "Športové centrum / Komplex", + "sl": "Športni center / kompleks", + "so": "Xarunta Cayaaraha", + "sr": "Спортски центар / Комплекс", + "sv": "Sportcenter / -anläggning", + "tr": "Spor Merkezi", + "uk": "Спортивний центр/комплекс", + "vi": "Trung tâm Thể thao", + "zh-CN": "体育中心/综合体育场", + "zh-HK": "體育中心 / 體育館", + "zh-TW": "體育中心/設施" + } + }, + "leisure/sports_hall": { + "title": { + "C": "Gymnasium", + "cs": "Tělocvična", + "da": "Fitness", + "de": "Sporthalle", + "en": "Gymnasium", + "eo": "Sporthalo", + "es": "Gimnasio / Pabellón deportivo", + "et": "Spordihall", + "fi": "Liikuntasali", + "fr": "Gymnase", + "gl": "Pavillón polideportivo", + "he": "חדר כושר", + "hr": "Sportska dvorana", + "it": "Palestra", + "ja": "体育館", + "mk": "Фискултурна сала", + "nl": "Sporthal", + "pl": "Sala sportowa", + "pt-BR": "Ginásio", + "pt": "Pavilhão desportivo", + "sk": "Telocvičňa", + "sv": "Sporthall", + "tr": "Spor salonu", + "uk": "Спортзал", + "zh-CN": "体育馆", + "zh-TW": "體育館" + } + }, + "leisure/stadium": { + "title": { + "C": "Stadium", + "af": "Stadium", + "ar": "استاد رياضي", + "ast": "Estadiu", + "bg": "Стадион", + "bn": "স্টেডিয়াম", + "bs": "Stadion", + "ca": "Estadi", + "cs": "Stadion", + "da": "Stadion", + "de": "Stadion", + "dv": "ސްޓޭޑިއަމް", + "el": "Στάδιο", + "en-GB": "Stadium", + "en": "Stadium", + "eo": "Stadiono", + "es": "Estadio", + "et": "Staadion", + "eu": "Estadio", + "fa": "ورزشگاه", + "fi": "Stadion", + "fr": "Stade", + "gl": "Estadio", + "he": "אצטדיון", + "hr": "Stadion", + "hu": "Stadion", + "id": "Stadion", + "is": "Leikvangur", + "it": "Stadio", + "ja": "スタジアム", + "kn": "ಕ್ರೀಡಾಂಗಣ", + "ko": "경기장", + "lt": "Stadionas", + "lv": "Stadions", + "mk": "Стадион", + "nl": "Stadion", + "no": "Stadion", + "pl": "Stadion", + "pt-BR": "Estádio", + "pt": "Estádio", + "ro": "Stadion", + "ru": "Стадион (территория)", + "sk": "Štadión", + "sl": "Stadion", + "so": "Garoon", + "sr": "Стадион", + "sv": "Stadium", + "ta": "விளையாட்டு அரங்கம்", + "tr": "Stadyum", + "uk": "Стадіон", + "vi": "Sân vận động", + "yue": "大體育館", + "zh-CN": "体育场", + "zh-HK": "體育館", + "zh-TW": "體育場", + "zh": "体育场" + } + }, + "leisure/swimming_area": { + "title": { + "C": "Natural Swimming Area", + "cs": "Přírodní koupaliště", + "da": "Åbentvandssvømningsområde", + "de": "Natürlicher Badebereich", + "el": "Φυσική Περιοχή Κολύμβησης", + "en": "Natural Swimming Area", + "eo": "Naĝejo natura", + "es": "Área de natación natural", + "fa": "منطقه طبیعی شنا", + "fi": "Uimaranta", + "fr": "Lieu de baignade", + "gl": "Área de natación natural", + "he": "שטח שחייה טבעי", + "hu": "Szabadvizi úszóterület", + "it": "Area riservata ai bagnanti", + "ja": "遊泳区域", + "mk": "Природно пливалиште", + "nl": "Natuurlijk zwemgebied", + "pl": "Kąpielisko", + "pt-BR": "Área de natação natural", + "pt": "Área balnear natural", + "sk": "Prírodný plavecký areál", + "sv": "Naturbadområde", + "tr": "Doğal Yüzme Alanı", + "uk": "Місце для плавання", + "vi": "Vũng Sâu để Bơi", + "zh-CN": "自然游泳区域", + "zh-TW": "自然游泳區" + } + }, + "leisure/swimming_pool": { + "title": { + "C": "Swimming Pool", + "af": "Swembad", + "ar": "حوض سباحة", + "ast": "Piscina", + "bg": "Плувен басейн", + "bn": "সুইমিং পুল", + "bs": "Bazen", + "ca": "Piscina", + "cs": "Plavecký bazén", + "da": "Svømmebassin", + "de": "Schwimmbecken", + "el": "Πισίνα", + "en-GB": "Swimming Pool", + "en": "Swimming Pool", + "eo": "Naĝejo (akvo)", + "es": "Piscina", + "et": "Ujumisbassein", + "eu": "Igerileku", + "fa": "استخر شنا", + "fi": "Uimahalli tai -allas", + "fr": "Piscine", + "gl": "Piscina", + "he": "בריכת שחייה", + "hr": "Sportski bazen", + "hu": "Úszómedence", + "id": "Kolam Renang", + "is": "Sundlaug", + "it": "Piscina", + "ja": "遊泳プール(屋外)", + "kn": "ಈಜುಕೊಳ", + "ko": "수영장", + "lt": "Baseinas", + "lv": "Peldbaseins", + "mk": "Базен", + "nl": "Zwembad", + "no": "Svømmebasseng", + "pl": "Basen", + "pt-BR": "Piscina", + "pt": "Piscina", + "ro": "Piscină", + "ru": "Бассейн (его водная поверхность)", + "sk": "Plaváreň", + "sl": "Plavalni bazen", + "sr": "Базен", + "sv": "Simbassäng", + "ta": "நீச்சல் குளம்", + "te": "ఈత కొలను", + "tr": "Yüzme Havuzu", + "uk": "Басейн", + "vi": "Hồ Bơi", + "yue": "游水池", + "zh-CN": "游泳池", + "zh-HK": "游泳池", + "zh-TW": "游泳池", + "zh": "游泳池" + } + }, + "leisure/track": { + "title": { + "C": "Racetrack (Non-Motorsport)", + "ar": "مضمار سباق", + "ast": "Circuitu (Deportes sin motor)", + "cs": "Závodní dráha (ne pro motorsport)", + "da": "Løbsbane (Ej motorsport)", + "de": "Bahn (Nicht Motorsport)", + "el": "Αγωνιστική Πίστα (Για Μη Μηχανοκίνηση)", + "en-GB": "Racetrack (Non-Motorsport)", + "en": "Racetrack (Non-Motorsport)", + "eo": "Kurejo/biciklejo/konkursejo (nemotora)", + "es": "Pista de carrera (no motorizada)", + "et": "Staadion", + "fa": "میدان مسابقه (مسابقات غیرموتوری)", + "fi": "Kilparata (ei moottoriurheilu)", + "fr": "Piste de course (hors sports mécaniques)", + "gl": "Pista de competición (non motorizada)", + "he": "מסלול מרוצים (לבלתי ממונעים)", + "hr": "Staza za utrkivanje (nemotorizirane discipline)", + "hu": "Versenypálya (nem motorsport)", + "is": "Keppnisbraut (ekki mótorsport)", + "it": "Pista (sport non motoristici)", + "ja": "競技トラック(モータースポーツ以外)", + "ko": "경주로(비모터스포츠)", + "mk": "Тркалиште (немоторно)", + "nl": "Racepiste (niet-motorsport)", + "pl": "Tor wyścigowy (niemotorowy)", + "pt-BR": "Pista para esportes não-motorizados", + "pt": "Pista de desportos não motorizados", + "ru": "Гоночный трек (не автоспорт)", + "sk": "Pretekárska dráha (nemotorové športy)", + "sl": "Tekmovalna steza (neasfaltirana)", + "sv": "Tävlingsbana (Icke motorsport)", + "tr": "Yarış Pisti (motor spor hariç)", + "uk": "Гоночний трек (не мотоспорт)", + "vi": "Đường Đua (Không phải Đua Xe)", + "zh-CN": "赛道(非机动竞速项目)", + "zh-HK": "賽道(非賽車)", + "zh-TW": "賽道(非賽車運動)" + } + }, + "leisure/trampoline_park": { + "title": { + "C": "Trampoline Park", + "cs": "Trampolínová hala", + "da": "Trampolinpark", + "de": "Trampolinpark", + "en": "Trampoline Park", + "eo": "Parko de saltadtukoj", + "es": "Parque de trampolín", + "fa": "پارک ترامپولین", + "fi": "Trampoliinipuisto", + "fr": "Parc à trampolines", + "gl": "Parque de trampolíns", + "he": "פארק טרמפולינות", + "it": "Parco di trampolini", + "ja": "トランポリンパーク", + "mk": "Трамбулински парк", + "nl": "Trampolinepark", + "pl": "Park trampolin", + "pt-BR": "Parque de trampolim", + "pt": "Parque de trampolins", + "sk": "Tempolínovy park", + "sv": "Trampolinpark", + "tr": "Trambolin Parkı", + "uk": "Батутна арена", + "vi": "Khu Giàn nhún", + "zh-TW": "彈簧床公園" + } + }, + "leisure/water_park": { + "title": { + "C": "Water Park", + "ar": "ملاهي مائية", + "ast": "Parque acuáticu", + "ca": "Parc Aquàtic", + "cs": "Akvapark", + "da": "Vandland", + "de": "Erlebnisbad", + "el": "Νεροτσουλήθρες", + "en-GB": "Water Park", + "en": "Water Park", + "eo": "Akvoparko", + "es": "Parque acuático", + "et": "Veepark", + "eu": "Ur-parkea", + "fa": "پارک آبی", + "fi": "Vesipuisto", + "fr": "Parc à thème aquatique", + "gl": "Parque acuático", + "he": "פארק מים", + "hr": "Vodeni park", + "hu": "Élményfürdő", + "is": "Vatnagarður", + "it": "Parco acquatico", + "ja": "ウォーターパーク", + "ko": "워터파크", + "lt": "Vandens parkas", + "lv": "Akvaparks", + "mk": "Воден парк", + "nl": "Waterpretpark", + "no": "Utendørs badeland", + "pl": "Park wodny", + "pt-BR": "Parque Aquático", + "pt": "Parque aquático", + "ro": "Parc Acvatic", + "ru": "Аквапарк", + "sk": "Vodný park", + "sl": "Vodni park", + "sr": "Водени парк", + "sv": "Äventyrsbad / Vattenpark", + "ta": "தண்ணீர் பூங்கா", + "tr": "Su Parkı", + "uk": "Аквапарк", + "vi": "Công viên Nước", + "zh-CN": "水上乐园", + "zh-HK": "水上樂園", + "zh-TW": "水上樂園" + } + }, + "office/administrative": { + "title": { + "C": "Administrative Office", + "ar": "مكتب الإداري", + "ast": "Oficina alministrativa", + "bs": "Administrativni ured", + "ca": "Oficina de tràmits locals", + "cs": "Místní úřad", + "da": "Administrativt kontor", + "de": "Verwaltungsamt", + "el": "Διοικητικό γραφείο", + "en-GB": "Administrative Office", + "en": "Administrative Office", + "eo": "Administra oficejo", + "es": "Oficina administrativa", + "fa": "اداره حکومتی", + "fi": "Kunnallishallinnon toimisto", + "fr": "Bureau administratif", + "gl": "Oficina administrativa", + "he": "משרד אדמינסטרטיבי", + "hu": "Közigazgatási hivatal", + "id": "Kantor Administrasi", + "is": "Stjórnsýsluskrifstofa", + "it": "Autorità locale", + "ja": "地方行政事務所", + "ko": "관리 사무소", + "lt": "Administracinis biuras", + "mk": "Администрација", + "ms": "Pejabat Pentadbiran", + "nl": "Bestuurlijke instantie", + "pl": "Biuro samorządowe", + "pt-BR": "Escritório Administrativo", + "pt": "Escritório da administração local", + "ro": "Oficiu Administrativ", + "ru": "Местная администрация и надзирающие органы", + "sk": "Administratívny úrad", + "sl": "Upravna enota", + "sr": "Управна канцеларија", + "sv": "Lokal myndighet", + "ta": "நிருவாக அலுவலகம்", + "tr": "İdari Ofis", + "uk": "Канцелярія", + "vi": "Cơ quan Địa phương", + "yue": "行政樓", + "zh-CN": "行政楼", + "zh-HK": "行政樓", + "zh-TW": "政府機關" + } + }, + "office/physician": { + "title": { + "C": "Physician", + "ar": "طبيب", + "ast": "Médicu", + "bn": "চিকিত্সক", + "bs": "Ljekar", + "ca": "Metge", + "cs": "Praktický lékař", + "da": "Læge", + "de": "Arztpraxis", + "el": "Ιατρός", + "en-GB": "Physician", + "en": "Physician", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "fa": "پزشک", + "fi": "Lääkäri", + "fr": "Médecin", + "gl": "Médico", + "he": "רופא", + "hr": "Liječnička praksa", + "hu": "Orvosi rendelő", + "is": "Læknir", + "it": "Medico", + "ja": "医者", + "kn": "ವೈದ್ಯ", + "ko": "내과의원", + "lt": "Gydytojas", + "mk": "Лекар", + "ms": "Pakar Perubatan", + "nl": "Arts", + "no": "Lege", + "pl": "Lekarz", + "pt-BR": "Médico", + "pt": "Médico especialista", + "ro": "Fizician", + "ru": "Врач", + "sk": "Doktor", + "sl": "Ambulanta", + "sr": "Лекар", + "sv": "Läkare", + "ta": "மருத்துவர்", + "tr": "Hekim", + "uk": "Лікар", + "vi": "Văn phòng Bác sĩ", + "yue": "醫生", + "zh-CN": "医生", + "zh-HK": "醫生", + "zh-TW": "醫務所" + } + }, + "office/travel_agent": { + "title": { + "C": "Travel Agency", + "ar": "وكالة السفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "en": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyage", + "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "mk": "Туристичка агенција", + "ms": "Agensi Pelancongan", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Турагентство (устаревший тег)", + "sk": "Cestovná agentúra", + "sl": "Potovalna agencija", + "so": "Wakaalad Socdaal", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Seyahat Acentesi", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社" + } + }, + "office/accountant": { + "title": { + "C": "Accountant Office", + "ar": "المحاسب", + "ast": "Contable", + "ca": "Oficina comptable", + "cs": "Účetnictví", + "da": "Revisor-kontor", + "de": "Buchhaltungsbüro", + "el": "Λογιστικό Γραφείο", + "en-GB": "Accountant Office", + "en": "Accountant Office", + "eo": "Oficejo de kontisto", + "es": "Oficina de contador", + "fa": "دفتر حسابدار", + "fi": "Tilintarkastustoimisto", + "fr": "Comptable", + "gl": "Oficina contábel", + "he": "משרד רואה חשבון", + "hu": "Könyvelő iroda", + "is": "Bókhaldsskrifstofa", + "it": "Commercialista", + "ja": "会計事務所(主に法人向け)", + "ko": "회계사 사무소", + "mk": "Сметководствено биро", + "ms": "Pejabat Akauntan", + "nl": "Boekhouder", + "no": "Revisorkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Contabilidade", + "pt": "Contabilista", + "ru": "Бухгалтер", + "sk": "Účtovnik", + "sr": "Рачуноводствена канцеларија", + "sv": "Bokhållare", + "tr": "Muhasebeci", + "uk": "Бухгалтер", + "vi": "Văn phòng Kế toán", + "zh-CN": "会计师事务所", + "zh-TW": "會計師事務所" + } + }, + "office/adoption_agency": { + "title": { + "C": "Adoption Agency", + "ca": "Agència d'adopció", + "cs": "Adopční agentura", + "da": "Adoptionsbureau", + "de": "Adoptionsagentur", + "el": "Οργανισμός Υιοθεσίας", + "en-GB": "Adoption Agency", + "en": "Adoption Agency", + "eo": "Oficejo de adopto", + "es": "Agencia de adopción", + "fa": "سازمان بهزیستی", + "fi": "Adoptiotoimisto", + "fr": "Agence d'adoption", + "gl": "Axencia de adopción", + "he": "סוכנות אימוץ", + "hr": "Agencija za posvajanje", + "hu": "Örökbefogadási ügynökség", + "is": "Ættleiðingaskrifstofa", + "it": "Agenzia per adozioni", + "ja": "養子縁組み機関", + "ko": "입양기관", + "lv": "Adopcijas Aģentūra", + "mk": "Агенција за посвојување", + "ms": "Agensi Pengambilan Anak Angkat", + "nl": "Adoptiebureau", + "no": "Adopsjonsbyrå", + "pl": "Ośrodek adopcyjny", + "pt-BR": "Agência de Adoção", + "pt": "Agência de adoção", + "ru": "Агенство по усыновлению", + "sk": "Agentúra pre adopcie", + "sr": "Агенција за усвајање", + "sv": "Adoptionsbyrå", + "tr": "Evlat Edinme Ajansı", + "uk": "Агенція з усиновлення", + "vi": "Cơ quan Nhận Con nuoi", + "zh-CN": "领养中介", + "zh-TW": "領養代理" + } + }, + "office/advertising_agency": { + "title": { + "C": "Advertising Agency", + "ar": "وكالة إعلانية", + "ast": "Axencia de publicidá", + "ca": "Agència de publicitat", + "cs": "Reklamní agentura", + "da": "Reklamebureau", + "de": "Werbeagentur", + "el": "Διαφημιστική", + "en-GB": "Advertising Agency", + "en": "Advertising Agency", + "eo": "Oficejo de reklamo", + "es": "Agencia de publicidad", + "fa": "کانون تبلیغاتی", + "fi": "Mainostoimisto", + "fr": "Agence de publicité", + "gl": "Axencia de publicidade", + "he": "סוכנות פרסום", + "hr": "Reklamna agencija", + "hu": "Reklámügynökség", + "is": "Auglýsingastofa", + "it": "Agenzia pubblicitaria", + "ja": "広告代理店", + "ko": "광고 대행사", + "lt": "Reklamos agentūra", + "mk": "Рекламна агенција", + "ms": "Agensi Pengiklanan", + "nl": "Reclamebureau", + "no": "Reklamebyrå", + "pl": "Agencja reklamowa", + "pt-BR": "Agência de Publicidade", + "pt": "Agência de publicidade", + "ru": "Рекламное агенство", + "sk": "Reklamná agentúra", + "sr": "Рекламна агенција", + "sv": "Reklambyrå", + "ta": "விளம்பர முகவர்", + "tr": "Reklam Ajansı", + "uk": "Рекламна агенція", + "vi": "Cơ sở Quảng cáo", + "zh-CN": "广告中介", + "zh-TW": "廣告代理公司" + } + }, + "office/architect": { + "title": { + "C": "Architect Office", + "ar": "مهندس معماري", + "ca": "Oficina d'arquitectura", + "cs": "Kancelář architekta", + "da": "Arkitekt-kontor", + "de": "Architekturbüro", + "el": "Αρχιτεκτονικό Γραφείο", + "en-GB": "Architect Office", + "en": "Architect Office", + "eo": "Oficejo de arĥitekturisto", + "es": "Oficina de arquitecto", + "fa": "دفتر معماری", + "fi": "Arkkitehtitoimisto", + "fr": "Architecte", + "gl": "Oficina de arquitectura", + "he": "משרד אדריכלים", + "hr": "Arhitektonski ured", + "hu": "Építészi iroda", + "is": "Arkitektastofa", + "it": "Studio di architettura", + "ja": "設計事務所", + "ko": "건축가 사무소", + "lt": "Architekto biuras", + "lv": "Arhitekta birojs", + "mk": "Архитектонско биро", + "ms": "Pejabat Arkitek", + "nl": "Architectenbureau", + "no": "Arkitektkontor", + "pl": "Architekt", + "pt-BR": "Escritório de Arquitetura", + "pt": "Arquiteto", + "ru": "Архитектурное бюро", + "sk": "Architekt", + "sr": "Архитектонска канцеларија", + "sv": "Arkitektbyrå", + "tr": "Mimarlık Ofisi", + "uk": "Архітектор", + "vi": "Văn phòng Kiến trúc sư", + "zh-CN": "建筑事务所", + "zh-TW": "建築師事務所" + } + }, + "office/association": { + "title": { + "C": "Nonprofit Organization Office", + "ar": "جمعية", + "ast": "Oficina d'ONG", + "ca": "Oficina d'organització no governamental", + "cs": "Kancelář neziskové organizace", + "da": "Almennyttigt kontor", + "de": "Büro einer Nonprofit-Organisation", + "el": "Μη Κερδοσκοπικό Γραφείο", + "en-GB": "Nonprofit Organization Office", + "en": "Nonprofit Organization Office", + "eo": "Oficejo de ne-profit-cela organizaĵo", + "es": "Oficina de organización sin fines de lucro", + "fa": "دفتر سازمان غیر انتفاعی", + "fi": "Voittoa tavoittelematon järjestö", + "fr": "Bureau d'association", + "gl": "Oficina de asociación", + "he": "ארגון ללא מטרת רווח", + "hr": "Ured neprofitne udruge", + "hu": "Nonprofit szervezet iroda", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Ufficio associazione senza scopo di lucro", + "ja": "非営利組織", + "ko": "비영리 단체 사무소", + "lt": "Ne pelno organizacijos biuras", + "mk": "Непрофитна организација", + "ms": "Pejabat Pertubuhan Bukan Untung", + "nl": "Kantoor van non-profitorganisatie", + "pl": "Biuro organizacji non profit", + "pt-BR": "Escritório de organização sem fins lucrativos", + "pt": "Organização sem fins lucrativos", + "ru": "Ассоциация (союз)", + "sk": "Nezisková organizácia", + "sr": "Непрофитна канцеларија", + "sv": "Frivilligorganisation", + "tr": "Yardım Kuruluşu", + "uk": "Неприбуткова організація", + "vi": "Tổ chức Phi lợi nhuận", + "zh-CN": "非营利机构办公室", + "zh-TW": "非營利組織辦公室" + } + }, + "office/bail_bond_agent": { + "title": { + "C": "Bail Bond Agent", + "cs": "zastavárna pro získání kauce", + "de": "Kautionsvermittler", + "en": "Bail Bond Agent", + "eo": "Oficejo de kaŭci-leĝisto", + "es": "Agente de fianzas", + "fr": "Agent de cautionnement", + "gl": "Axente de fianzas", + "he": "סוכן שחרור בערבות", + "hu": "Óvadékiroda", + "it": "Agente di cauzione", + "ja": "保釈保証業者", + "mk": "Кауционист", + "nl": "Borgtochtgeldschieter", + "pl": "Poręczyciel majątkowy", + "pt-BR": "Agente de fiança", + "pt": "Agente de fianças", + "sv": "Bail Bond-agent", + "tr": "Kefaletnameci", + "uk": "Застава за звільнення", + "vi": "Văn phòng Đóng tiền Thế chân Tại ngoại", + "zh-TW": "保釋債券代理人" + } + }, + "office/charity": { + "title": { + "C": "Charity Office", + "ar": "منظمة خيرية", + "cs": "Kancelář charity", + "da": "Velgørenhedskontor", + "de": "Wohlfahrtseinrichtung", + "el": "Γραφείο Φιλανθρωπίας", + "en-GB": "Charity Office", + "en": "Charity Office", + "eo": "Oficejo de almoza organizaĵo", + "es": "Oficina de beneficencia", + "fa": "دفتر خیریه", + "fi": "Hyväntekeväisyysjärjestö", + "fr": "Organisation de bienfaisance/charité", + "gl": "Oficina da caridade", + "he": "משרד צדקה", + "hu": "Jótékonysági iroda", + "is": "Skrifstofa góðgerðasamtaka", + "it": "Organizzazione benefica", + "ja": "慈善団体", + "ko": "자선 단체 사무소", + "lt": "Labdaros biuras", + "mk": "Добротворна организација", + "ms": "Pejabat Kebajikan", + "nl": "Kantoor van liefdadigheidsinstelling", + "no": "Veldedighetskontor", + "pl": "Organizacja charytatywna", + "pt-BR": "Escritório de Caridade", + "pt": "Instituição de caridade", + "ru": "Благотворительная организация", + "sk": "Charita", + "sr": "Добротворна канцеларија", + "sv": "Välgörenhetsorganisation", + "tr": "Hayır Kurumu", + "uk": "Благодійна організація", + "vi": "Tổ chức Từ thiện", + "zh-CN": "慈善机构", + "zh-TW": "慈善機構" + } + }, + "office/company": { + "title": { + "C": "Corporate Office", + "ar": "مكتب شركة", + "ca": "Oficina corporativa", + "cs": "Kancelář korporace", + "da": "Virksomhedskontor", + "de": "Firmenbüro", + "el": "Εταιρικό Γραφείο", + "en-GB": "Corporate Office", + "en": "Corporate Office", + "eo": "Oficejo de firmao", + "es": "Oficina corporativa", + "et": "Ettevõtte kontor", + "fa": "دفتر شرکت خصوصی", + "fi": "Yritystoimisto", + "fr": "Bureau d'entreprise", + "gl": "Oficina corporativa", + "he": "משרד תאגידי", + "hr": "Ured firme", + "hu": "Vállalati iroda", + "is": "Skrifstofa fyrirtækis", + "it": "Ufficio aziendale", + "ja": "会社", + "ko": "기업 사무소", + "lt": "Korporacijos biuras", + "mk": "Деловни простории", + "nl": "Kantoor van bedrijf", + "pl": "Biuro firmy", + "pt-BR": "Escritório de Empresa", + "pt": "Empresa", + "ru": "Частная компания", + "sr": "Пословна канцеларија", + "sv": "Företagskontor", + "tr": "Şirket", + "uk": "Офіс компанії", + "vi": "Văn phòng Công ty", + "zh-CN": "企业公司", + "zh-TW": "公司辦公室" + } + }, + "office/consulting": { + "title": { + "C": "Consultancy Office", + "cs": "Poradenská kancelář", + "da": "Konsulentkontor", + "de": "Consulting/Beratungs-Büro", + "el": "Γραφείο Συμβούλων", + "en": "Consultancy Office", + "eo": "Oficejo de konsilado por firmaoj", + "es": "Oficina de consultora", + "fa": "دفتر مشاوره", + "fi": "Konsulttitoimisto", + "fr": "Bureau de consultant", + "gl": "Oficina de consultoría", + "he": "משרד ייעוץ", + "it": "Studio di consulenza", + "ja": "コンサルティング事務所", + "ko": "컨설팅 사무소", + "mk": "Советодавно биро", + "nl": "Adviesbureau", + "pl": "Biuro konsultanta", + "pt-BR": "Gabinete de consultoria", + "pt": "Empresa de consultadoria", + "ru": "Консультационная компания", + "sr": "Консултантска канцеларија", + "sv": "Konsultkontor", + "tr": "Danışmanlık Ofisi", + "uk": "Консалтингова фірма", + "vi": "Văn phòng Tư vấn", + "zh-TW": "諮詢處" + } + }, + "office/coworking": { + "title": { + "C": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Místo pro spolupráci", + "da": "Kontorfællesskab", + "de": "Coworking-Büro", + "el": "Χώρος Συνεργασίας", + "en-GB": "Coworking Space", + "en": "Coworking Space", + "eo": "Oficejo por samloka laborado (coworking)", + "es": "Espacio de trabajo compartido", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de coworking", + "gl": "Espacio de cotraballo", + "he": "משרדים משותפים", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Ufficio in Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "mk": "Споделен работен простор", + "nl": "Coworking-kantoor", + "pl": "Centrum coworkingowe", + "pt-BR": "Espaço de Coworking", + "pt": "Coworking", + "ru": "Коворкинг", + "sl": "Prostor za sodelo", + "sr": "Дељени радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間" + } + }, + "office/diplomatic": { + "title": { + "C": "Diplomatic Office", + "cs": "diplomatická kancelář", + "da": "Diplomatkontor", + "de": "Diplomatische und konsularische Vertretung", + "el": "Διπλωματικό Γραφείο", + "en": "Diplomatic Office", + "eo": "Oficejo diplomatia", + "es": "Oficina diplomática", + "fa": "دفتر دیپلماتیک / امور خارجه", + "fi": "Diplomaattinen toimisto", + "fr": "Bâtiment diplomatique", + "gl": "Oficina diplomática", + "he": "משרד דיפלומטי", + "hu": "Diplomáciai iroda", + "it": "Ufficio diplomatico", + "ja": "外交施設", + "ko": "외교 사무소", + "mk": "Дипломатска служба", + "nl": "Diplomatisch kantoor", + "pl": "Placówka dyplomatyczna", + "pt-BR": "Escritório diplomático", + "pt": "Escritório diplomático", + "sk": "Diplomatický úrad", + "sr": "Дипломатска канцеларија", + "sv": "Diplomatkontor", + "tr": "Diplomatik Ofis", + "uk": "Дипломатична установа", + "vi": "Văn phòng Ngoại giao", + "zh-CN": "外交代表机构", + "zh-TW": "外交辦公室" + } + }, + "office/educational_institution": { + "title": { + "C": "Educational Institution", + "ar": "مؤسسة تعليمية", + "ast": "Institución educativa", + "bs": "Obrazovna institucija", + "ca": "Institució Educativa", + "cs": "Vzdělávací instituce", + "da": "Uddannelsesinstitution", + "de": "Bildungseinrichtung", + "el": "Εκπαιδευτικό Ίδρυμα", + "en-GB": "Educational Institution", + "en": "Educational Institution", + "eo": "Oficejo de edukada institucio", + "es": "Oficina de institución educativa", + "fa": "مؤسسه آموزشی", + "fi": "Koulutushallinnon toimisto", + "fr": "Bureau de l'établissement d'enseignement", + "gl": "Institución educativa", + "he": "מוסד חינוכי", + "hr": "Obrazovna ustanova", + "hu": "Oktatási intézmény", + "id": "Institusi Pendidikan", + "is": "Menntastofnun", + "it": "Istituto d'Istruzione", + "ja": "教育機関事務所", + "ko": "교육 기관", + "lt": "Edukacinis institutas", + "lv": "Izglītības Iestāde", + "mk": "Образовна установа", + "ms": "Institusi Pendidikan", + "nl": "Kantoor van onderwijsinstelling", + "no": "Utdanningsinstitusjon", + "pl": "Instytucja edukacyjna", + "pt-BR": "Instituição Educacional", + "pt": "Instituição de ensino", + "ro": "Instituție Educațională", + "ru": "Администрация общеобразовательного учреждения", + "sk": "Vzdelávací inštitút", + "sl": "Izobraževalna ustanova", + "sr": "Образовна институција", + "sv": "Utbildningskontor", + "tr": "Eğitim Kurumu", + "uk": "Офіс освітнього закладу", + "vi": "Trường học", + "yue": "敎育機構", + "zh-CN": "教育机构", + "zh-HK": "敎育機構", + "zh-TW": "教育機構" + } + }, + "office/employment_agency": { + "title": { + "C": "Employment Agency", + "ar": "مكتب التوظيف", + "ast": "Axencia d'emplegu", + "bs": "Agencija za zapošljavanje", + "ca": "Oficina de treball", + "cs": "Úřad práce", + "da": "Arbejdsformidling", + "de": "Arbeitsamt", + "el": "Γραφείο Ευρέσεως Εργασίας", + "en-GB": "Employment Agency", + "en": "Employment Agency", + "eo": "Dungoficejo", + "es": "Agencia de empleo", + "fa": "آژانس کاریابی", + "fi": "Työnvälitystoimisto", + "fr": "Agence pour l'emploi", + "gl": "Oficina de emprego", + "he": "סוכנות כוח אדם", + "hu": "Munkaügyi központ", + "id": "Agen Tenaga Kerja", + "is": "Atvinnumiðlun", + "it": "Agenzia per l'impiego", + "ja": "職業安定所", + "ko": "직업 소개소", + "lt": "Įdarbinimo agentūra", + "mk": "Агенција за вработување", + "ms": "Agensi Pekerjaan", + "nl": "Uitzendbureau", + "no": "Bemanningsbyrå", + "pl": "Agencja zatrudnienia", + "pt-BR": "Agência de Empregos", + "pt": "Agência de emprego", + "ro": "Agenție de Muncă", + "ru": "Кадровое агентство", + "sk": "Zamestnávateľská agentúra", + "sl": "Agencija za zaposlovanje", + "sr": "Служба за запошљавање", + "sv": "Arbetsförmedling", + "ta": "வேலைவாய்ப்பு முகவர்", + "tr": "İş ve İşçi Bulma Kurumu", + "uk": "Кадрова агенція", + "vi": "Cơ quan Giới thiệu Việc làm", + "yue": "薦人館", + "zh-CN": "就业机构", + "zh-HK": "職業介紹所", + "zh-TW": "就業服務站" + } + }, + "office/energy_supplier": { + "title": { + "C": "Energy Supplier Office", + "ar": "شركة مرافق الكهرباء", + "ast": "Oficina de distribuidora d'enerxía", + "cs": "Kancelář dodavatele elektřiny", + "da": "Energiforsyningskontor", + "de": "Energieversorgungsunternehmen", + "el": "Γραφείο Προμηθειών Ενέργειας", + "en-GB": "Energy Supplier Office", + "en": "Energy Supplier Office", + "eo": "Oficejo de elektr-provizanto", + "es": "Oficina de proveedor de energía", + "fa": "دفتر تأمین کننده انرژی", + "fi": "Energiayhtiö", + "fr": "Fournisseur d'énergie", + "gl": "Oficina de empresa enerxética", + "he": "משרד ספק חשמל", + "hr": "Uredi opskrbljivača energijom", + "hu": "Energiaszolgáltató hivatal", + "is": "Orkusöluskrifstofa", + "it": "Ufficio azienda fornitrice di energia", + "ja": "エネルギー供給者", + "ko": "에너지 공급자 사무소", + "lv": "Elektrodevēja birojs", + "mk": "Енергостопанска служба", + "ms": "Pejabat Pembekal Tenaga", + "nl": "Kantoor van energiemaatschappij", + "pl": "Biuro dostawcy energii", + "pt-BR": "Escritório de Fornecedor de Energia", + "pt": "Distribuidor de energia", + "ru": "Офис поставщика электроэнергии", + "sr": "Електродистрибутивна канцеларија", + "sv": "Energibolag", + "tr": "Enerji Kurumu Şubesi", + "uk": "Електропостачальна компанія", + "vi": "Văn phòng Công ty Điện lực", + "zh-CN": "电力公司", + "zh-TW": "電力公司辦公室" + } + }, + "office/estate_agent": { + "title": { + "C": "Real Estate Office", + "ar": "مكتب عقاري", + "ast": "Axencia inmobiliaria", + "bs": "Agencija za nekretnine", + "ca": "Oficina d'agència immobiliària", + "cs": "Realitní kancelář", + "da": "Ejendomsmægler", + "de": "Immobilienmakler", + "el": "Κτηματομεσιτικό Γραφείο", + "en-GB": "Estate Agent", + "en": "Real Estate Office", + "eo": "Oficejo de nemoveblaĵisto", + "es": "Inmobiliaria", + "fa": "دفتر املاک", + "fi": "Kiinteistönvälitystoimisto", + "fr": "Agence immobilière", + "gl": "Axencia inmobiliaria", + "he": "משרד נדל״ן", + "hu": "Ingatlaniroda", + "id": "Kantor Real Estate", + "is": "Fasteignasöluskrifstofa", + "it": "Agenzia immobiliare", + "ja": "不動産代理店", + "ko": "부동산 사무소", + "lt": "Nekilnojamo turto biuras", + "mk": "Агенција за недвижности", + "ms": "Pejabat Hartanah", + "nl": "Immobiliënkantoor", + "no": "Eiendomsmegler", + "pl": "Biuro nieruchomości", + "pt-BR": "Imobiliária", + "pt": "Agência imobiliária", + "ro": "Oficiu de Proprietate Imobiliară", + "ru": "Агентство недвижимости", + "sk": "Realitná agentúra", + "sl": "Nepremičninska agencija", + "sr": "Канцеларија за некретнине", + "sv": "Mäklare/bostadsförmedling", + "tr": "Gayrimenkul Ofisi", + "uk": "Агенція з нерухомості", + "vi": "Văn phòng Bất động sản", + "yue": "管業處", + "zh-CN": "地产中介", + "zh-HK": "地產", + "zh-TW": "房地產仲介" + } + }, + "office/financial": { + "title": { + "C": "Financial Office", + "ar": "مكتب مالي", + "ast": "Oficina financiera", + "bs": "Finansijski ured", + "ca": "Oficina financera", + "cs": "Finanční úřad", + "da": "Finanskontor", + "de": "Finanzberater", + "el": "Γραφείο Οικονομικών", + "en-GB": "Financial Office", + "en": "Financial Office", + "eo": "Financa oficejo", + "es": "Financiera", + "fa": "اداره مالی", + "fi": "Taloustoimisto", + "fr": "Bureau d'entreprise financière", + "gl": "Oficina financeira", + "he": "משרד פיננסי", + "hu": "Pénzügyi vállalat irodája", + "id": "Kantor Keuangan", + "is": "Fjármálafyrirtæki", + "it": "Ufficio finanziario", + "ja": "会計事務所(主に個人向け)", + "ko": "금융 사무소", + "lt": "Finansų biuras", + "mk": "Финансиска служба", + "ms": "Pejabat Kewangan", + "nl": "Privékantoor van financiële instelling", + "pl": "Biuro finansowe", + "pt-BR": "Escritório Financeiro", + "pt": "Empresa financeira", + "ro": "Oficiu Financiar", + "ru": "Финансовая организация", + "sk": "Finančný úrad", + "sl": "Finančna agencija", + "sr": "Финансијска канцеларија", + "sv": "Bankkontor", + "tr": "Finans Ofisi", + "uk": "Фінансове управління", + "vi": "Văn phòng Tài chính", + "yue": "財務部寫字樓", + "zh-CN": "金融机构", + "zh-HK": "金融機構辦事處", + "zh-TW": "金融機構辦公室" + } + }, + "office/financial_advisor": { + "title": { + "C": "Financial Advisor", + "cs": "finanční poradce", + "de": "Finanzberater", + "el": "Οικονομικός Σύμβουλος", + "en": "Financial Advisor", + "eo": "Oficejo de financa konsilisto", + "es": "Asesor financiero", + "fi": "Talousneuvonta", + "fr": "Conseiller financier", + "gl": "Asesor financeiro", + "he": "ייעוץ כלכלי", + "hu": "Pénzügyi Tanácsadó", + "it": "Consulente finanziario", + "ja": "ファイナンシャル・アドバイザー", + "mk": "Финансов советник", + "nl": "Financieel adviseur", + "pl": "Doradca finansowy", + "pt-BR": "Conselheiro financeiro", + "pt": "Conselheiro financeiro", + "sk": "Finančný poradca", + "sr": "Финансијски саветник", + "sv": "Finansiell rådgivare", + "tr": "Finans Danışmanı", + "uk": "Радник з фінансових питань", + "vi": "Cố vấn Tài chính", + "zh-TW": "財務顧問" + } + }, + "office/forestry": { + "title": { + "C": "Forestry Office", + "ar": "إدارة الغابات", + "cs": "Kancelář lesní správy", + "da": "Skovbrugskontor", + "de": "Forstverwaltung", + "el": "Γραφείο Δασοκομίας", + "en-GB": "Forestry Office", + "en": "Forestry Office", + "eo": "Oficejo de arbar-mastrumo", + "es": "Oficina forestal", + "fa": "دفتر جنگلداری", + "fi": "Metsätalousvirasto", + "fr": "Administration forestière", + "gl": "Oficina forestal", + "he": "משרד יעור", + "hu": "Erdészeti hivatal", + "is": "Skrifstofa skógarvarða", + "it": "Ufficio forestale", + "ja": "林業事務所", + "ko": "삼림 관리 사무소", + "lv": "Mežniecības birojs", + "mk": "Шумарска служба", + "ms": "Pejabat Perhutanan", + "nl": "Bosbeheerkantoor", + "no": "Skogbrukskontoret", + "pl": "Leśnictwo", + "pt-BR": "Escritório da Administração Florestal", + "pt": "Posto florestal", + "ru": "Лесоводство", + "sk": "Lesný správca", + "sr": "Шумарска канцеларија", + "sv": "Skogsbolag", + "tr": "Ormancılık Şubesi", + "uk": "Лісництво", + "vi": "Văn phòng Lâm nghiệp", + "zh-CN": "林务管理", + "zh-TW": "林業事業辦公室" + } + }, + "office/foundation": { + "title": { + "C": "Foundation Office", + "ar": "مؤسسة", + "ast": "Oficina de fundación", + "cs": "kancelář nadace", + "da": "Fondskontor", + "de": "Stiftung", + "el": "Γραφείο Ιδρύματος", + "en-GB": "Foundation Office", + "en": "Foundation Office", + "eo": "Oficejo de fondaĵo", + "es": "Oficina de fundación", + "fi": "Säätiö", + "fr": "Fondation", + "gl": "Oficina de fundación", + "he": "משרד קרן", + "is": "Skrifstofa sjálfseignarstofnunar", + "it": "Fondazione", + "ja": "財団", + "ko": "재단 사무소", + "mk": "Задолжбина", + "ms": "Pejabat Yayasan", + "nl": "Kantoor van stichting", + "pl": "Biuro fundacji", + "pt-BR": "Escritório de Fundação", + "pt": "Fundação", + "ru": "Фонд", + "sr": "Фондациона канцеларија", + "sv": "Stiftelse", + "tr": "Vakıf", + "uk": "Фундація", + "vi": "Quỹ Từ thiện", + "zh-CN": "基金办公室", + "zh-TW": "基金會辦公室" + } + }, + "office/government": { + "title": { + "C": "Government Office", + "ar": "مكتب حكومي", + "ast": "Oficina gubernamental", + "bs": "Vladin ured", + "ca": "Oficina governamental", + "cs": "Státní úřad", + "da": "Statsligt kontor", + "de": "Behörde", + "dv": "ސަރުކާރު އޮފީސްތައް", + "el": "Γραφείο του Δημόσιου", + "en-GB": "Government Office", + "en": "Government Office", + "eo": "Registara oficejo", + "es": "Oficina de gobierno", + "et": "Valitsuse kontor", + "fa": "دفتر دولتی", + "fi": "Julkishallinnon toimisto", + "fr": "Administration publique", + "gl": "Oficina gobernamental", + "he": "משרד ממשלתי", + "hr": "Državni ured", + "hu": "Kormányzati hivatal", + "id": "Kantor Pemerintah", + "is": "Opinber stofnun", + "it": "Ufficio governativo", + "ja": "行政機関事務所", + "ko": "관청", + "lt": "Vyriausybės biuras", + "lv": "Valdības birojs", + "mk": "Управна служба", + "ms": "Pejabat Kerajaan", + "nl": "Overheidskantoor", + "no": "Regjeringskontor", + "pl": "Biuro rządowe lub samorządowe", + "pt-BR": "Órgão governamental", + "pt": "Escritório governamental", + "ro": "Oficiu de Guvern", + "ru": "Государственное учреждение", + "sk": "Vládny úrad", + "sl": "Vladna agencija", + "so": "Xafiis Dowladeed", + "sr": "Владина канцеларија", + "sv": "Myndighet", + "ta": "அரசு அலுவலகம்", + "tr": "Devlet Dairesi", + "uk": "Уряд", + "vi": "Công sở", + "yue": "衙門", + "zh-CN": "政府办公点", + "zh-HK": "政府辦公室", + "zh-TW": "政府機關" + } + }, + "office/guide": { + "title": { + "C": "Tour Guide Office", + "ar": "مكتب الدليل السياحي", + "cs": "Kancelář turistického průvodce", + "da": "Turguidekontor", + "de": "Fremdenführer", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Tour Guide Office", + "en": "Tour Guide Office", + "eo": "Oficejo de vojaĝ-gvido", + "es": "Oficina de turismo", + "fa": "دفتر راهنمای تور", + "fi": "Turistiopastoimisto", + "fr": "Bureau des guides", + "gl": "Oficina de guías turísticos", + "he": "משרד תיירות", + "hu": "Turisztikai iroda", + "is": "Skrifstofa leiðsögumanna", + "it": "Ufficio guide turistiche", + "ja": "ツアーガイド", + "ko": "여행 가이드 사무소", + "mk": "Туристички водич", + "ms": "Pejabat Pemandu Pelancong", + "nl": "Gidsenkantoor", + "pl": "Przewodnik turystyczny", + "pt-BR": "Escritório de Guia Turístico", + "pt": "Guia turístico", + "ru": "Туристические гиды", + "sr": "Туристичка канцеларија", + "sv": "Guidekontor", + "tr": "Tur Rehberi", + "uk": "Гід", + "vi": "Văn phòng Hướng dẫn Du lịch", + "zh-CN": "导游机构", + "zh-TW": "導遊辦公室" + } + }, + "office/insurance": { + "title": { + "C": "Insurance Office", + "ar": "مكتب تأمينات", + "ast": "Oficina de seguros", + "bs": "Ured za osiguranje", + "ca": "Oficina de companyia asseguradora", + "cs": "Pojišťovna", + "da": "Forsikringselskab", + "de": "Versicherungsbüro", + "el": "Ασφαλιστικό Γραφείο", + "en-GB": "Insurance Office", + "en": "Insurance Office", + "eo": "Oficejo de asekur-kompanio", + "es": "Aseguradora", + "fa": "دفتر بیمه", + "fi": "Vakuutustoimisto", + "fr": "Agence d'assurance", + "gl": "Oficina de seguros", + "he": "משרד ביטוח", + "hr": "Ured osiguravajućeg društva", + "hu": "Biztosító", + "id": "Kantor Asuransi", + "is": "Tryggingaskrifstofa", + "it": "Assicurazione", + "ja": "保険会社・代理店", + "ko": "보험 사무소", + "lt": "Draudimo įstaiga", + "lv": "Apdrošināšanas birojs", + "mk": "Осигурително друштво", + "ms": "Pejabat Insurans", + "nl": "Verzekeringskantoor", + "no": "Forsikringskontor", + "pl": "Biuro ubezpieczeń", + "pt-BR": "Seguradora", + "pt": "Agência de seguros", + "ro": "Oficiu de Asigurare", + "ru": "Страховая компания", + "sk": "Poistenie", + "sl": "Zavarovalnica", + "sr": "Осигуравајућа канцеларија", + "sv": "Försäkringskontor", + "tr": "Sigorta Acentesi", + "uk": "Страхова компанія", + "vi": "Văn phòng Bảo hiểm", + "yue": "保險公司寫字樓", + "zh-CN": "保险公司", + "zh-HK": "保險公司辦公室", + "zh-TW": "保險公司辦公室" + } + }, + "office/it": { + "title": { + "C": "Information Technology Office", + "ar": "متخصص في تكنولوجيا المعلومات", + "cs": "Kancelář informačních technologií", + "da": "Informationsteknologikontor", + "de": "IT-Unternehmen", + "el": "Γραφείο Πληροφοριών Τεχνολογίας", + "en-GB": "Information Technology Office", + "en": "Information Technology Office", + "eo": "Oficejo de inform-teĥnologia firmao", + "es": "Oficina de tecnología de la información", + "fa": "دفتر فناوری اطلاعات", + "fi": "Informaatioteknologian toimisto", + "fr": "Spécialiste en informatique", + "gl": "Oficina de tecnoloxías da información", + "he": "משרד שירותי מחשוב", + "hu": "Informatikai iroda", + "is": "Upplýsingatækniskrifstofa", + "it": "Ufficio società IT", + "ja": "IT企業", + "ko": "IT 사무소", + "mk": "Информатичка служба", + "ms": "Pejabat Teknologi Maklumat", + "nl": "IT-kantoor", + "pl": "Firma informatyczna", + "pt-BR": "Escritório de Empresa de Tecnologia da Informação", + "pt": "Escritório de Ti", + "ru": "Офис IT-компании", + "sr": "Информатичка канцеларија", + "sv": "IT-kontor", + "tr": "Bilişim Teknoloji Ofisi", + "uk": "ІТ компанія", + "vi": "Văn phòng Tin học", + "zh-CN": "IT公司", + "zh-TW": "資訊公司辦公室" + } + }, + "office/lawyer": { + "title": { + "C": "Law Office", + "ar": "مكتب قانوني", + "ast": "Despachu d'abogaos", + "bs": "Pravni ured", + "ca": "Bufet d'advocats", + "cs": "Právní kancelář", + "da": "Advokatkontor", + "de": "Anwaltskanzlei", + "el": "Δικηγορικό Γραφείο", + "en-GB": "Law Office", + "en": "Law Office", + "eo": "Oficejo de leĝisto", + "es": "Despacho de abogados", + "fa": "دفتر حقوقی", + "fi": "Lakitoimisto", + "fr": "Cabinet d'avocats", + "gl": "Bufete", + "he": "משרד עורכי דין", + "hr": "Odvjetnički ured", + "hu": "Ügyvéd", + "id": "Kantor Hukum", + "is": "Lögmannaskrifstofa", + "it": "Studio legale", + "ja": "法律事務所", + "ko": "법률 사무소", + "lt": "Advokatų kontora", + "mk": "Правник", + "ms": "Pejabat Undang-undang", + "nl": "Advocatenkantoor", + "no": "Advokatkontor", + "pl": "Biuro prawnika", + "pt-BR": "Escritório de Advocacia", + "pt": "Escritório de advogados", + "ro": "Cabinet de Avocatură", + "ru": "Юридические услуги", + "sk": "Právna kancelária", + "sl": "Pravna pisarna", + "sr": "Адвокатска канцеларија", + "sv": "Advokatkontor", + "ta": "சட்ட அலுவலகம்", + "tr": "Hukuk Bürosu", + "uk": "Адвокатське бюро", + "vi": "Văn phòng Luật sư", + "yue": "律師事務所", + "zh-CN": "律师事务所", + "zh-HK": "律師事務所", + "zh-TW": "律師事務所" + } + }, + "office/moving_company": { + "title": { + "C": "Moving Company Office", + "cs": "Kancelář stěhovací služby", + "da": "Flyttefirmakontor", + "de": "Umzugsfirma", + "el": "Γραφείο Εταιρείας Μετακομίσεων", + "en-GB": "Moving Company Office", + "en": "Moving Company Office", + "eo": "Oficejo de transloĝiĝ-helpa firmao", + "es": "Oficina de mudanzas", + "fa": "دفتر خدمات باربری / حمل بار", + "fi": "Muuttoyhtiö", + "fr": "Entreprise de déménagement", + "gl": "Oficina de empresa de mudanzas", + "he": "משרד תובלה", + "hu": "Költöztetőcég iroda", + "is": "Skrifstofa flutningafyrirtækis", + "it": "Ufficio compagnia di traslochi", + "ja": "引っ越し業者", + "ko": "이삿짐센터", + "mk": "Преселувач", + "ms": "Pejabat Syarikat Pemindahan", + "nl": "Kantoor van verhuisbedrijf", + "pl": "Biuro firmy przeprowadzkowej", + "pt-BR": "Escritório de Companhia de Mudanças", + "pt": "Empresa de mudanças", + "ru": "Помощь при переезде", + "sv": "Flyttfirma", + "tr": "Taşıma Şirketi Ofisi", + "uk": "Перевезення речей", + "vi": "Văn phòng Công ty Chuyển nhà", + "zh-CN": "搬家公司", + "zh-TW": "搬家公司辦公室" + } + }, + "office/newspaper": { + "title": { + "C": "Newspaper Office", + "ar": "صحيفة", + "ast": "Redacción de periódicu", + "cs": "Novinářská redakce", + "da": "Aviskontor", + "de": "Zeitungsredaktion", + "el": "Γραφεία Εφημερίδας", + "en-GB": "Newspaper Office", + "en": "Newspaper Office", + "eo": "Oficejo de redakto", + "es": "Oficina de periódicos", + "fa": "دفتر روزنامه", + "fi": "Toimitus", + "fr": "Journal", + "gl": "Oficina de xornal", + "he": "משרד עיתונאות", + "hu": "Újságírói iroda", + "is": "Skrifstofur fréttablaðs", + "it": "Ufficio giornalistico", + "ja": "新聞社", + "ko": "신문사 사무소", + "mk": "Новинарска служба", + "ms": "Pejabat Akhbar", + "nl": "Krantredactie", + "no": "Avisredaksjon", + "pl": "Siedziba wydawcy gazety", + "pt-BR": "Escritório de Jornal", + "pt": "Jornal", + "ru": "Редакция газеты", + "sr": "Новинска канцеларија", + "sv": "Tidningsredaktion", + "ta": "செய்தித்தாள் அலுவலகம்", + "tr": "Gazete Şubesi", + "uk": "Редакція газети", + "vi": "Văn phòng Tờ báo", + "zh-CN": "报社", + "zh-TW": "報社辦公室" + } + }, + "office/ngo": { + "title": { + "C": "NGO Office", + "ar": "مكتب المنظمات الغير حكومية", + "ast": "Oficina d'ONG", + "bn": "এনজিও অফিস", + "bs": "Ured NVO", + "ca": "Oficina d'ONG", + "cs": "Nezisková organizace", + "da": "NGO-kontor", + "de": "NGO-Büro – Nichtregierungsorganisation", + "el": "Γραφείο ΜΚΟ", + "en-GB": "NGO Office", + "en": "NGO Office", + "eo": "Oficejo de neregistara organizaĵo", + "es": "Oficina de ONG", + "fa": "سازمان مردم نهاد", + "fi": "Kansalaisjärjestö", + "fr": "Organisation non gouvernementale", + "gl": "Oficina ONG", + "he": "משרד ארגון לא ממשלתי", + "hr": "Nevladina organizacija", + "hu": "Civil szervezet", + "id": "Kantor LSM", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Organizzazione non governativa", + "ja": "NGO事務所", + "ko": "NGO 사무소", + "mk": "НВО", + "ms": "Pejabat Pertubuhan Bukan Kerajaan", + "nl": "Kantoor van NGO", + "pl": "Biuro organizacji pozarządowej", + "pt-BR": "Sede de ONG", + "pt": "ONG", + "ro": "Oficiu NGO", + "ru": "Общественная организация", + "sk": "Nezisková organizácia", + "sl": "Sedež nevladne organizacije", + "sr": "НВО канцеларија", + "sv": "Icke-statlig organisation", + "tr": "Sivil Toplum Örgütü", + "uk": "Недержавна громадська організація", + "vi": "Tổ chức Phi chính phủ", + "yue": "志顠機構寫字樓", + "zh-CN": "非政府组织", + "zh-HK": "非政府機構辦公室", + "zh-TW": "非政府機構辦公室" + } + }, + "office/notary": { + "title": { + "C": "Notary Office", + "ar": "كاتب عدل / موثق", + "ast": "Notaría", + "ca": "Notaria", + "cs": "Notářství", + "de": "Notariat", + "el": "Γραφείο Συμβολαιογράφων", + "en-GB": "Notary Office", + "en": "Notary Office", + "eo": "Oficejo de notario", + "es": "Escribanía / Notaría", + "fa": "دفتر اسناد رسمی", + "fi": "Notaari", + "fr": "Notaire", + "gl": "Notaría", + "he": "משרד נוטריון", + "hu": "Közjegyző", + "is": "Skrifstofa lögbókanda", + "it": "Ufficio notarile", + "ja": "公証役場", + "ko": "공증사무소", + "lv": "Notāru birojs", + "mk": "Нотар", + "ms": "Pejabat Penyaksi Awam", + "nl": "Notariskantoor", + "pl": "Notariusz", + "pt-BR": "Tabelionato", + "pt": "Notário", + "ru": "Нотариус", + "sk": "Notár", + "sr": "Нотарска канцеларија", + "sv": "Notarie", + "tr": "Noter", + "uk": "Нотаріус", + "vi": "Văn phòng Công chứng", + "zh-CN": "公证处", + "zh-TW": "公證機構" + } + }, + "office/political_party": { + "title": { + "C": "Political Party Office", + "ar": "مكتب الحزب السياسي", + "cs": "Kancelář politické strany", + "da": "Politisk partikontor", + "de": "Parteibüro", + "el": "Γραφείο Πολιτικού Κόμματος", + "en": "Political Party Office", + "eo": "Oficejo de partio politika", + "es": "Oficina del partido político", + "fa": "دفتر حزب سیاسی", + "fi": "Puoluetoimisto", + "fr": "Bureau de parti politique", + "gl": "Oficina de partido político", + "he": "משרד של מפלגה", + "hu": "Pártiroda", + "it": "Ufficio di un partito", + "ja": "政党事務所", + "ko": "정당 사무소", + "mk": "Партиски штаб", + "nl": "Kantoor van een politieke partij", + "no": "Politisk Parti Kontor", + "pl": "Biuro partii politycznej", + "pt-BR": "Escritório de partido político", + "pt": "Sede partidária", + "sk": "Kancelária politicjkej strany", + "sr": "Канцеларија политичке странке", + "sv": "Partikontor", + "tr": "Siyasi Parti Ofisi", + "uk": "Офіс політичної партії", + "vi": "Văn phòng Đảng phái Chính trị", + "zh-CN": "政党办公室", + "zh-TW": "政黨辦公室" + } + }, + "office/private_investigator": { + "title": { + "C": "Private Investigator Office", + "ar": "مكتب محقق", + "cs": "Soukromá detektivní kancelář", + "da": "Privatdetektivkontor", + "de": "Privatdetektiv", + "el": "Γραφείο Ιδιωτικού Ερευνητή", + "en-GB": "Private Investigator Office", + "en": "Private Investigator Office", + "eo": "Oficejo de detektivo", + "es": "Oficina de investigador privado", + "fa": "دفتر تحقیقات خصوصی", + "fi": "Yksityisetsivä", + "fr": "Enquêteur privé/détective", + "gl": "Oficina de investigador privado", + "he": "משרד חוקר פרטי", + "hu": "Magánnyomozó iroda", + "is": "Einkaspæjaraskrifstofa", + "it": "Ufficio agenzia investigativa privata", + "ja": "私立探偵社", + "ko": "사설탐정 사무소", + "lv": "Privātizmeklētēja birojs", + "mk": "Приватен иследувач", + "ms": "Pejabat Penyiasat Peribadi", + "nl": "Kantoor van privédetective", + "no": "Privat Etterforskning Kontor", + "pl": "Prywatny detektyw", + "pt-BR": "Escritório de detetive particular", + "pt": "Detetive privado", + "ru": "Частный сыщик", + "sr": "Детективска канцеларија", + "sv": "Privatdetektiv", + "ta": "தனியார் துப்பு துலக்கும் அலுவலகம்", + "tr": "Dedektif", + "uk": "Приватний детектив", + "vi": "Văn phòng Thám tử Tư", + "zh-CN": "私家侦探事务所", + "zh-TW": "私家偵探辦公室" + } + }, + "office/quango": { + "title": { + "C": "Quasi-NGO Office", + "ar": "السلطة الإدارية المستقلة", + "cs": "kancelář kvaziautonomní nevládní organizace", + "de": "Mittlerorganisation", + "en-GB": "Quasi-NGO Office", + "en": "Quasi-NGO Office", + "eo": "Oficejo de duon-registara organizaĵo", + "es": "Oficina ONG cuasiautónoma", + "fi": "Kansalaisjärjestön toimisto", + "fr": "Autorité administrative indépendante", + "gl": "Oficina ONG cuasiautónoma", + "he": "משרד ארגון חצי לא ממשלתי", + "is": "Félagasamtök í samstarfi við hið opinbera (quango)", + "it": "Ufficio di una simil ONG", + "ja": "準非政府機関", + "ko": "준정부조직 사무소", + "mk": "Квази-НВО", + "ms": "Pejabat Separa NGO", + "nl": "Kantoor van quango", + "pl": "Biuro organizacji prawie pozarządowej", + "pt-BR": "Escritório de Organização Não Governamental Quase Autônoma", + "pt": "ONG subsidiada", + "ru": "Полу-независимая некоммерческая организация", + "sr": "Квази-непрофитна канцеларија", + "sv": "Kvasiautonom icke-statlig organisation", + "tr": "Yarı Özel Sivil Toplum Örgütü", + "uk": "Квазі-НГО", + "vi": "Tổ chức Bán độc lập Phi chính phủ", + "zh-CN": "准非政府组织", + "zh-TW": "準非政府組織辦公室" + } + }, + "office/religion": { + "title": { + "C": "Religious Office", + "cs": "Náboženská kancelář", + "da": "Religiøst kontor", + "de": "Büro einer Glaubensgemeinschaft", + "el": "Γραφείο Θρησκείας", + "en": "Religious Office", + "eo": "Kancelario religia", + "es": "Oficina religiosa", + "fa": "دفاتر مذهبی", + "fi": "Uskonnollinen toimisto", + "fr": "Bureau religieux", + "gl": "Oficina relixiosa", + "he": "משרד לנושאי דת", + "hu": "Egyházi iroda", + "it": "Ufficio religioso", + "ja": "教団事務所", + "ko": "종교 사무소", + "mk": "Верска служба", + "nl": "Religieus kantoor", + "no": "Religiøst Kontor", + "pl": "Biuro organizacji religijnej", + "pt-BR": "Escritório religioso", + "pt": "Escritório religioso", + "sr": "Верска канцеларија", + "sv": "Religiöst kontor", + "tr": "Dini Ofis", + "uk": "Релігійна організація", + "vi": "Văn phòng Tôn giáo", + "zh-TW": "宗教辦公處所" + } + }, + "office/research": { + "title": { + "C": "Research Office", + "ar": "مكتب بحوث", + "ast": "Despachu d'investigación", + "bs": "Ured za istraživanje", + "ca": "Oficines d'R+D", + "cs": "Výzkumný ústav", + "da": "Forskning", + "de": "Forschungseinrichtung", + "el": "Γραφείο Ερευνών", + "en-GB": "Research Office", + "en": "Research Office", + "eo": "Oficejo de scienca esplorado", + "es": "Oficina de investigación", + "fa": "سازمان تحقیقاتی و پژوهشی", + "fi": "Tutkimustoimisto", + "fr": "Organisme de recherche", + "gl": "Oficina de investigación", + "he": "משרד מחקר", + "hr": "Ured za istraživanje", + "hu": "Kutatóintézet", + "id": "Kantor Riset", + "is": "Rannsóknarstofa", + "it": "Istituto di Ricerca", + "ja": "研究所", + "kn": "ಸಂಶೋಧನಾ ಕಛೇರಿ", + "ko": "연구 사무소", + "lt": "Tyrimų tarnyba", + "mk": "Истражувачка служба", + "ms": "Pejabat Penyelidikan", + "nl": "Onderzoekskantoor", + "no": "Forskningskontor", + "pl": "Biuro badawcze", + "pt-BR": "Escritório de Pesquisa", + "pt": "Centro de investigação", + "ro": "Birou de Cercetare", + "ru": "Научно-исследовательская организация", + "sk": "Výskum", + "sl": "Raziskave", + "sr": "Истраживачка канцеларија", + "sv": "Forskning och utveckling", + "ta": "ஆராய்ச்சி அலுவலகம்", + "tr": "Araştırma Kurumu", + "uk": "Дослідницька лабораторія", + "vi": "Văn phòng Nghiên cứu", + "yue": "研究所", + "zh-CN": "研究所", + "zh-HK": "研究所", + "zh-TW": "研究機構" + } + }, + "office/security": { + "title": { + "C": "Security Office", + "de": "Sicherheitsdienstleister", + "en": "Security Office", + "eo": "Oficejo de garda firmao", + "es": "Oficina de seguridad", + "ja": "警備会社", + "mk": "Обезбедување", + "nl": "Kantoor van de beveiliging", + "pl": "Biuro ochrony", + "pt-BR": "Escritório de segurança", + "pt": "Gabinete de segurança privado", + "sv": "Bevakningskontor", + "tr": "Emniyet Amirliği", + "uk": "Охоронна фірма", + "zh-TW": "保全辦公室" + } + }, + "office/surveyor": { + "title": { + "C": "Surveyor Office", + "ar": "مكتب مساح أرضي", + "cs": "Zeměměřický úřad", + "de": "Vermessungstechniker", + "el": "Γραφείο Επιθεωρητών", + "en-GB": "Surveyor Office", + "en": "Surveyor Office", + "eo": "Oficejo de analiza firmao", + "es": "Oficina de agrimensor", + "fa": "دفتر نظرسنجی", + "fi": "Maanmittaustoimisto", + "fr": "Géomètre", + "gl": "Oficina de agrimensor", + "he": "משרד מודד", + "hu": "Földmérő", + "is": "Landmælingaskrifstofa", + "it": "Ufficio di supervisione", + "ja": "測量会社", + "ko": "측량기사 사무소", + "mk": "Земјомерна служба", + "ms": "Pejabat Juruukur", + "nl": "Kantoor van landmeter/expert/risicoschatter/schademeter/opiniepeilers/statisticus", + "no": "Landmålerkontor", + "pl": "Biuro geodety", + "pt-BR": "Escritório de Pesquisas ou Inspeções", + "pt": "Empresa de peritagem", + "ru": "Организация оценки и статистики", + "sr": "Геодетска канцеларија", + "sv": "Undersökning/inspektion", + "ta": "நில அளவாய்வாளர் அலுவலகம்", + "tr": "Harita Mühendisliği", + "uk": "Експет-оцінщик", + "vi": "Văn phòng Khảo sát", + "yue": "量地官寫字樓", + "zh-TW": "測繪公司辦公室" + } + }, + "office/tax_advisor": { + "title": { + "C": "Tax Advisor Office", + "ar": "مستشار الضرائب", + "cs": "Kancelář daňového poradce", + "da": "Skatterådgivningskontor", + "de": "Steuerberatungskanzlei", + "el": "Γραφείο Φορολογικού Συμβούλου", + "en-GB": "Tax Advisor Office", + "en": "Tax Advisor Office", + "eo": "Oficejo de impost-konsilo", + "es": "Oficina de asesor impositivo", + "fa": "دفتر مشاور مالیاتی", + "fi": "Veroneuvonta", + "fr": "Conseiller fiscal", + "gl": "Oficina de xestor fiscal", + "he": "משרד יועץ מס", + "hu": "Adótanácsadó", + "is": "Skattaráðgjafarskrifstofa", + "it": "Centro assistenza fiscale", + "ja": "税理士事務所", + "ko": "세무사 사무소", + "mk": "Даночен советник", + "ms": "Pejabat Penasihat Cukai", + "nl": "Kantoor van belastingsadviseur", + "no": "Skatterådgiverkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Assessoria Fiscal", + "pt": "Escritório de contabilidade", + "ru": "Офис консультанта по налогам", + "sk": "Daňový poradca", + "sr": "Канцеларија пореског саветника", + "sv": "Skatterådgivning", + "tr": "Vergi Danışmanlığı", + "uk": "Податкова консультація", + "vi": "Dich vụ Khai thuế", + "zh-CN": "税务顾问机构", + "zh-TW": "稅務顧問辦公室" + } + }, + "office/telecommunication": { + "title": { + "C": "Telecom Office", + "ar": "مكتب اتصالات", + "ast": "Oficina de telecomunicaciones", + "bn": "টেলিকম অফিস", + "bs": "Ured telekoma", + "ca": "Oficina de telecomunicacions", + "cs": "Telekomunikační společnost", + "da": "Teleselskabskontor", + "de": "Telekommunikationsunternehmen", + "el": "Γραφείο Τηλεπικοινωνιών", + "en-GB": "Telecom Office", + "en": "Telecom Office", + "eo": "Oficejo de telekomunikada firmao", + "es": "Oficina de telecomunicaciones", + "fa": "دفتر مخابراتی", + "fi": "Tietoliikennetoimisto", + "fr": "Agence de télécommunications", + "gl": "Oficina de telecomunicacións", + "he": "משרד חברת תקשורת", + "hr": "Ured za telekomunikacije", + "hu": "Távközlési cég irodája", + "id": "Kantor Telekomunikasi", + "is": "Samskiptaskrifstofa", + "it": "Ufficio di telecomunicazioni", + "ja": "通信会社事務所", + "ko": "통신 사무소", + "lt": "Telekomunikacijų biuras", + "lv": "Telekomunikāciju birojs", + "mk": "Телекомуникациска служба", + "ms": "Pejabat Telekom", + "nl": "Telecomkantoor", + "no": "Telekontor", + "pl": "Biuro firmy telekomunikacyjnej", + "pt-BR": "Escritório de Telecomunicações", + "pt": "Empresa de telecomunicações", + "ro": "Oficiu Telecom", + "ru": "Офис телекоммуникационной компании", + "sk": "Telekomunikácie", + "sl": "Telekomunikacijska pisarna", + "sr": "Телекомуникациона канцеларија", + "sv": "Telekom", + "ta": "தொலைத்தொடர்பு அலுவலகம்", + "tr": "Haberleşme Bürosu", + "uk": "Телекомунікаційна компанія", + "vi": "Văn phòng Viễn thông", + "yue": "電話公司寫字樓", + "zh-CN": "电信办公室", + "zh-HK": "電訊公司辦公室", + "zh-TW": "電信公司辦事處" + } + }, + "office/therapist": { + "title": { + "C": "Therapist Office", + "ar": "المعالج", + "ca": "Oficina de terapeuta", + "cs": "Terapeutická kancelář", + "da": "Terapikontor", + "de": "Therapeut", + "el": "Γραφείο Θεραπευτών", + "en-GB": "Therapist Office", + "en": "Therapist Office", + "eo": "Kabineto de terapiisto", + "es": "Oficina de terapeuta", + "fi": "Terapia", + "fr": "Thérapeute", + "gl": "Oficina de terapeuta", + "he": "משרד מטפל", + "is": "Meðferðarstofa", + "it": "Studio psichiatrico", + "ja": "セラピスト(オフィス)", + "ko": "치료사 사무소", + "lv": "Terapieta birojs", + "mk": "Терапевт", + "ms": "Pejabat Ahli Terapi", + "nl": "Kantoor van therapeut", + "no": "Terapeutkontor", + "pl": "Terapeuta", + "pt-BR": "Escritório de Terapeuta", + "pt": "Terapeuta", + "ru": "Офис терапевта", + "sk": "Terapeut", + "sr": "Терапеутска канцеларија", + "sv": "Terapeut", + "tr": "Terapist", + "uk": "Фізіотерапевт", + "vi": "Văn phòng Trị liệu", + "zh-CN": "治疗师工作室", + "zh-HK": "治療師辦公室", + "zh-TW": "治療師辦公室" + } + }, + "office/water_utility": { + "title": { + "C": "Water Utility Office", + "ar": "شركة المياه", + "cs": "vodohospodářská kancelář", + "da": "Vandforsyningskontor", + "de": "Wasserversorgungsunternehmen", + "el": "Γραφείο Εκμετάλλευσης Νερού", + "en-GB": "Water Utility Office", + "en": "Water Utility Office", + "eo": "Oficejo de akv-provizanta firmao", + "es": "Oficina de servicios públicos de agua", + "fi": "Vesilaitostoimisto", + "fr": "Agence de l'eau", + "gl": "Oficina de servizos públicos de auga", + "he": "משרד לשירות ציבורי - מים", + "hu": "Vízmű iroda", + "is": "Skrifstofa vatnsveitu", + "it": "Ufficio azienda di fornitura dell'acqua", + "ja": "水道工事店", + "ko": "수도사업소", + "mk": "Водоводна служба", + "ms": "Pejabat Pembekal Air", + "nl": "Kantoor van watermaatschappij", + "pl": "Biuro wodociągowe", + "pt-BR": "Escritório de Companhia de Água", + "pt": "Fornecedor de água", + "ru": "Офис водопроводной компании", + "sv": "Vattenleverantör", + "tr": "Su Müdürlüğü", + "uk": "Водоканал", + "vi": "Văn phòng Nhà cung cấp Nước uống", + "zh-CN": "水务设施机构", + "zh-HK": "水上設施辦公室", + "zh-TW": "自來水公司" + } + }, + "place/farm": { + "title": { + "C": "Farm", + "ar": "مزرعة", + "ast": "Granxa", + "ca": "Granja", + "cs": "Zemědělská usedlost", + "da": "Gård", + "de": "Bauernhof", + "el": "Φάρμα", + "en-GB": "Farm", + "en": "Farm", + "eo": "Farmejo (setlejo)", + "es": "Granja", + "et": "farm", + "fa": "مزرعه", + "fi": "Maatila", + "fr": "Ferme isolée", + "gl": "Granxa", + "he": "חווה", + "hu": "Tanya", + "id": "Peternakan", + "is": "Býli", + "it": "Fattoria o cascina", + "ja": "農場", + "kn": "ತೋಟ", + "ko": "농장", + "lt": "Ūkis", + "lv": "Zemnieku saimniecība", + "mk": "Фарма", + "ms": "Ladang", + "nl": "Boerderij", + "no": "Gård", + "pl": "Farma/gospodarstwo rolne", + "pt-BR": "Fazenda", + "pt": "Quinta", + "ro": "Fermă", + "ru": "Ферма", + "sk": "Farma", + "sl": "Kmetija", + "sr": "Фарма", + "sv": "Gård", + "ta": "பண்ணை", + "tr": "Çiftlik", + "uk": "Ферма", + "vi": "Trại", + "yue": "農場", + "zh-CN": "农场", + "zh-HK": "農場", + "zh-TW": "農場" + } + }, + "place/city": { + "title": { + "C": "City", + "af": "Stad", + "ar": "مدينة", + "ast": "Ciudá", + "bg": "Град над 100 000", + "bn": "শহর", + "bs": "Grad", + "ca": "Ciutat", + "cs": "Velkoměsto", + "da": "Storby", + "de": "Großstadt", + "dv": "ސިިޓީ", + "el": "Πόλη", + "en-GB": "City", + "en": "City", + "eo": "Urbego", + "es": "Ciudad", + "et": "Linn", + "fa": "شهر", + "fi": "Suuri kaupunki", + "fr": "Grande ville (plus de 100 000 habitants)", + "gl": "Cidade", + "he": "עיר", + "hr": "Grad s više od 100 000 stanovnika", + "hu": "Nagyváros", + "id": "Kota", + "is": "Borg", + "it": "Città", + "ja": "市制地方自治体", + "kn": "ನಗರ", + "ko": "시", + "lt": "Miestas", + "lv": "Lielpilsēta", + "mk": "Град", + "ms": "Bandar", + "nl": "Stad", + "no": "By", + "pl": "Miasto", + "pt-BR": "Cidade Maior", + "pt": "Capital de distrito", + "ro": "Oraș", + "ru": "Большой город", + "sk": "Veľkomesto", + "sl": "Velemesto", + "so": "Magaalo", + "sq": "Qytet", + "sr": "Град", + "sv": "Större stad", + "ta": "மாநகரம்", + "te": "నగరం", + "tr": "Şehir", + "uk": "Місто", + "vi": "Thành phố", + "yue": "城", + "zh-CN": "城市", + "zh-HK": "城市", + "zh-TW": "城市", + "zh": "城市" + } + }, + "place/city_block": { + "title": { + "C": "City Block", + "cs": "Městský blok", + "de": "Häuserblock", + "el": "Οικοδομικό Τετράγωνο", + "en": "City Block", + "eo": "Dombloko", + "es": "Manzana urbana", + "fa": "بلوک شهری", + "fi": "Kortteli", + "fr": "Îlot urbain", + "gl": "Mazá urbana", + "he": "מבנן עירוני", + "hu": "Várostömb", + "is": "Byggingareitur", + "it": "Isolato urbano", + "ja": "街区(日本では未定義)", + "ko": "도시 블록", + "mk": "Градски блок", + "nl": "Huizenblok", + "no": "Bykvartal", + "pl": "Kwartał", + "pt-BR": "Quarteirão", + "pt": "Quarteirão", + "sr": "Градска четврт", + "sv": "Kvarter", + "tr": "Şehir Bloğu", + "uk": "Квартал в місті", + "zh-CN": "城市街区", + "zh-TW": "城市街區" + } + }, + "place/hamlet": { + "title": { + "C": "Hamlet", + "af": "Dorpie", + "ar": "قرية صغيرة", + "ast": "Aldea", + "bg": "Махала", + "bs": "Zaselak", + "ca": "Llogaret", + "cs": "Osada", + "da": "Mindre beboet område", + "de": "Weiler", + "el": "Οικισμός", + "en-GB": "Hamlet", + "en": "Hamlet", + "eo": "Vilaĝeto", + "es": "Aldea", + "fa": "دهکده", + "fi": "Pikkukylä", + "fr": "Lieu-dit ou hameau", + "gl": "Aldea", + "he": "כפריר", + "hr": "Zaseok", + "hu": "Falucska", + "id": "Dusun", + "is": "Þéttbýliskjarni", + "it": "Piccolo borgo", + "ja": "Hamlet", + "ko": "반", + "lt": "Viensėdis", + "mk": "Заселок", + "ms": "Dukuh", + "nl": "Dorp/gehucht/buurtschap", + "no": "Bosetning", + "pl": "Przysiółek", + "pt-BR": "Lugarejo", + "pt": "Aldeia", + "ro": "Cătun", + "ru": "Деревня", + "sk": "Osada", + "sl": "Zaselek", + "sr": "Засеок", + "sv": "By", + "tr": "Mezra", + "uk": "Хутір", + "vi": "Thôn", + "yue": "村仔", + "zh-CN": "小村庄", + "zh-HK": "小村莊", + "zh-TW": "村莊", + "zh": "村庄" + } + }, + "place/island": { + "title": { + "C": "Island", + "af": "Eiland", + "ar": "جزيرة", + "ast": "Islla", + "bg": "Остров", + "bn": "দ্বীপ", + "bs": "Ostrvo", + "ca": "Illa", + "cs": "Ostrov", + "da": "Ø", + "de": "Insel", + "dv": "ރަށް", + "el": "Νησί", + "en-GB": "Island", + "en": "Island", + "eo": "Insulo", + "es": "Isla", + "et": "Saar", + "fa": "جزیره", + "fi": "Saari", + "fr": "Île", + "gl": "Illa", + "he": "אי", + "hr": "Otok", + "hu": "Sziget", + "id": "Pulau", + "is": "Eyja", + "it": "Isola", + "ja": "島", + "kn": "ದ್ವೀಪ", + "ko": "섬", + "lt": "Sala", + "lv": "Sala", + "mk": "Остров", + "ms": "Pulau", + "nl": "Eiland", + "no": "Øy", + "pl": "Wyspa", + "pt-BR": "Ilha", + "pt": "Ilha", + "ro": "Insulă", + "ru": "Остров", + "sk": "Ostrov", + "sl": "Otok", + "so": "Jasiirad", + "sr": "Острво", + "sv": "Ö", + "ta": "தீவு", + "tr": "Ada", + "uk": "Острів", + "vi": "Đảo", + "yue": "洲", + "zh-CN": "岛屿", + "zh-HK": "島嶼", + "zh-TW": "島嶼", + "zh": "岛屿" + } + }, + "place/islet": { + "title": { + "C": "Islet", + "ar": "جزيرة صغيرة", + "cs": "Ostrůvek", + "da": "Holm", + "de": "Kleine Insel", + "el": "Νησίδα", + "en-GB": "Islet", + "en": "Islet", + "eo": "Insuleto", + "es": "Islote", + "et": "Laid", + "fa": "جزیره کوچک", + "fi": "Luoto", + "fr": "Îlot", + "gl": "Illote", + "he": "איון", + "hu": "Szigetecske", + "is": "Hólmi", + "it": "Isoletta", + "ja": "小島", + "ko": "작은 섬", + "mk": "Островче", + "ms": "Anak Pulau", + "nl": "Eilandje < 1 km²", + "no": "Liten øy", + "pl": "Wysepka na wodzie", + "pt-BR": "Ilhota", + "pt": "Ilhéu", + "ru": "Островок", + "sr": "Острвце", + "sv": "Holme", + "tr": "Adacık", + "uk": "Острівець", + "vi": "Đảo Nhỏ", + "yue": "洲仔", + "zh-CN": "小岛", + "zh-TW": "小島" + } + }, + "place/isolated_dwelling": { + "title": { + "C": "Isolated Dwelling", + "af": "Afgeleë blyplek", + "ar": "مساكن متفرقة", + "ast": "Vivienda aisllada", + "bg": "Изолирано жилище", + "bs": "Izolirano stanovanje", + "ca": "Vivenda aïllada", + "cs": "Samota", + "da": "Lille beboet område (1-2 hustande)", + "de": "Einzelsiedlung", + "el": "Απομονωμένες Κατοικίες", + "en-GB": "Isolated Dwelling", + "en": "Isolated Dwelling", + "eo": "Solstaranta domo", + "es": "Vivienda aislada", + "fa": "مسکن ایزوله", + "fi": "Yksittäinen asunto", + "fr": "Lieu-dit habité (1 ou 2 habitations)", + "gl": "Vivenda illada", + "he": "מבנה מבודד", + "hr": "Usamljena kućanstva", + "hu": "Elszigetelt lakás", + "is": "Einöngruð búseta", + "it": "Abitazioni isolate", + "ja": "孤立した(2世帯以下の)居住区", + "ko": "독립 주택", + "lt": "Izoliuota gyvenvietė", + "mk": "Оддалечено живеалиште", + "ms": "Tempat Tinggal Terpencil", + "nl": "Alleenstaande woning", + "pl": "Pojedyncze odosobnione zabudowania", + "pt-BR": "Moradia Isolada", + "pt": "Habitação isolada", + "ru": "Хутор", + "sk": "Samota", + "sl": "Osamljeno bivališče", + "sr": "Изоловано пребивалиште", + "sv": "Isolerad boplats", + "tr": "Mesken", + "uk": "Маєток", + "vi": "Chỗ ở Hẻo lánh", + "yue": "孤離居所", + "zh-CN": "孤立居所", + "zh-HK": "孤立民居", + "zh-TW": "獨立聚落", + "zh": "孤立的民房" + } + }, + "place/locality": { + "title": { + "C": "Locality", + "af": "Ligging", + "ar": "موقع", + "ast": "Llugar despobláu", + "bg": "Местност", + "bn": "অঞ্চল", + "bs": "Lokalitet", + "ca": "Indret", + "cs": "Neobydlené místo", + "da": "Lokalitet", + "de": "Örtlichkeit", + "dv": "ރަށްްފުށު", + "el": "Τοποθεσία", + "en-GB": "Locality", + "en": "Locality", + "eo": "Loko neloĝata", + "es": "Paraje", + "fa": "محل خالی از سکنه", + "fi": "Paikkakunta", + "fr": "Lieu-dit non habité", + "gl": "Lugar", + "he": "אזור בלתי מיושב", + "hr": "Lokalitet", + "hu": "Lakatlan hely", + "id": "Daerah Sekitar", + "is": "Staðfesti", + "it": "Località non popolata", + "ja": "地形名", + "kn": "ಸ್ಥಳ", + "ko": "소재지명", + "lt": "Vietovė", + "mk": "Месност", + "ms": "Lokaliti", + "nl": "Veldnaam", + "pl": "Miejsce nazwane", + "pt-BR": "Localidade", + "pt": "Local ermo e desabitado", + "ro": "Localitate", + "ru": "Урочище, местность", + "sk": "Lokalita", + "sl": "Kraj (OSM: ODSVETOVANO)", + "so": "Deegaanka", + "sr": "Локалитет", + "sv": "Plats", + "tr": "Mevkii", + "uk": "Місцевість", + "vi": "Địa phương", + "yue": "地方", + "zh-CN": "地方", + "zh-HK": "地區", + "zh-TW": "地點(無人定居)", + "zh": "地点(无人定居)" + } + }, + "place/neighbourhood": { + "title": { + "C": "Neighborhood", + "ar": "حي سكني", + "ast": "Barriu", + "ca": "Barri", + "cs": "Část obce", + "da": "Nabolag", + "de": "Wohngegend", + "el": "Γειτονιά", + "en-GB": "Neighborhood", + "en": "Neighborhood", + "eo": "Najbaraĵo", + "es": "Barrio pequeño / Vecindario", + "fa": "همسایگی", + "fi": "Naapurusto", + "fr": "Voisinage", + "gl": "Veciñanza ou subarrio", + "he": "שכונה", + "hr": "Susjedstvo", + "hu": "Környék", + "id": "Tetangga", + "is": "Hverfi", + "it": "Quartiere", + "ja": "小字", + "ko": "동", + "lt": "Kaiminystė", + "mk": "Маало", + "ms": "Kejiranan", + "nl": "Buurt", + "no": "Nabolag", + "pl": "Sąsiedztwo", + "pt-BR": "Vizinhança", + "pt": "Bairro", + "ro": "Cartier", + "ru": "Исторический район со сложившимся именем", + "sk": "Susedstvo", + "sl": "Soseska", + "sr": "Суседство", + "sv": "Kvarter", + "ta": "நகர்ப்பகுதி", + "tr": "Mahalle", + "uk": "Житловий масив", + "vi": "Hàng xóm", + "zh-CN": "街坊社区 / 小区", + "zh-HK": "近鄰", + "zh-TW": "鄰里" + } + }, + "place/plot": { + "title": { + "C": "Plot", + "ar": "قطعة الأرض", + "cs": "Parcela", + "da": "Matrikel", + "de": "Grundstück", + "en-GB": "Plot", + "en": "Plot", + "eo": "Parcelo", + "es": "Parcela", + "et": "Krunt", + "fa": "طرح / قطعه زمین", + "fi": "Tontti", + "fr": "Parcelle", + "gl": "Parcela", + "he": "חלקה", + "hu": "Parcella", + "is": "Skiki", + "it": "Particella catastale", + "ja": "小区画", + "ko": "필지", + "mk": "Парцела", + "ms": "Plot", + "nl": "Perceel", + "no": "Tomt", + "pl": "Działka", + "pt-BR": "Lote", + "pt": "Lote de terreno", + "ru": "Земельный участок", + "sr": "Парцела", + "sv": "Tomt", + "tr": "Arsa", + "uk": "Ділянка", + "vi": "Miếng đất", + "zh-TW": "地籍" + } + }, + "place/quarter": { + "title": { + "C": "Sub-Borough / Quarter", + "cs": "Městská čtvrť", + "da": "Nabolag / Kvarter", + "de": "Gegend / Quartier", + "el": "Συνοικία", + "en-GB": "Sub-Borough / Quarter", + "en": "Sub-Borough / Quarter", + "eo": "Kvartalo", + "es": "Sub-burgo / Barrio grande - Quarter", + "fa": "توابع منطقه / محله", + "fi": "Alakeskus", + "fr": "Quartier", + "gl": "Sub-municipio / Distrito", + "he": "רובע", + "is": "Úthverfishluti / Hverfi", + "it": "Sotto-distretto / Quartiere", + "ja": "大字 / (市内の)町", + "ko": "하위 자치구 / 지구", + "mk": "Маало / Четврт", + "nl": "Wijk", + "pl": "Kwartał", + "pt-BR": "Sub-bairro", + "pt": "Zona de cidade", + "ro": "Cartier", + "ru": "Подрайон / квартал", + "sl": "Mestna četrt", + "sv": "Kvarter / Under-Borough", + "tr": "Semt", + "uk": "Мікро-район/Квартал", + "vi": "Khu", + "zh-CN": "街道办/片区", + "zh-HK": "自治市分區 / 小區", + "zh-TW": "自治市區" + } + }, + "place/square": { + "title": { + "C": "Square", + "ar": "ساحة", + "ast": "Plaza", + "ca": "Plaça", + "cs": "Náměstí", + "da": "Plads", + "de": "Platz", + "el": "Πλατεία", + "en-GB": "Square", + "en": "Square", + "eo": "Placo", + "es": "Plaza cívica", + "fa": "فضای عمومی باز (احاطه شده با ساختمان)", + "fi": "Aukio", + "fr": "Place", + "gl": "Praza", + "he": "כיכר", + "hu": "Tér", + "is": "Torg", + "it": "Piazza", + "ja": "広場(都心部)", + "ko": "광장", + "lv": "Skvērs", + "mk": "Плоштад", + "nl": "Plein", + "no": "Torg", + "pl": "Plac publiczny", + "pt-BR": "Praça Pavimentada", + "pt": "Praça ou largo", + "ro": "Piață", + "ru": "Площадь", + "sk": "Námestie", + "sl": "Trg", + "sr": "Трг", + "sv": "Torg", + "ta": "சதுக்கம்", + "tr": "Meydan", + "uk": "Майдан", + "vi": "Quảng trường", + "yue": "前地", + "zh-CN": "广场", + "zh-HK": "廣場", + "zh-TW": "廣場" + } + }, + "place/suburb": { + "title": { + "C": "Borough / Suburb", + "ar": "ضاحية", + "cs": "Čtvrť / předměstí", + "da": "Bydistrikt / Bydel", + "de": "Stadtteil / Vorort", + "el": "Προάστιο", + "en-GB": "Borough / Suburb", + "en": "Borough / Suburb", + "eo": "Suburbo", + "es": "Burgo / Suburbio", + "et": "Eeslinn", + "fa": "منطقه ، ناحیه", + "fi": "Kaupunginosa / lähiö", + "fr": "Banlieue", + "gl": "Barrio ou suburbio", + "he": "פרוור", + "hu": "Városrész", + "is": "Jaðarbyggð / Úthverfi", + "it": "Sobborgo", + "ja": "区", + "ko": "자치구 / 근교", + "mk": "Населба", + "nl": "Stadsdeel", + "pl": "Dzielnica", + "pt-BR": "Bairro", + "pt": "Subúrbio", + "ro": "Suburbie", + "ru": "Район / Пригород", + "sk": "Predmestie", + "sl": "Predmestje", + "sv": "Förort / Borough", + "tr": "Mahalle", + "uk": "Район в місті/Передмістя", + "vi": "Quận", + "zh-CN": "区(城市)", + "zh-HK": "自治市 / 郊區", + "zh-TW": "郊區" + } + }, + "place/town": { + "title": { + "C": "Town", + "af": "Dorp", + "ar": "بلدة", + "ast": "Villa", + "bg": "Град под 100 000", + "bn": "উপনগর", + "bs": "Gradić", + "ca": "Ciutat", + "cs": "Město", + "da": "By", + "de": "Kleinstadt", + "dv": "އަވަށް", + "el": "Κωμόπολη", + "en-GB": "Town", + "en": "Town", + "eo": "Urbo", + "es": "Pueblo / Ciudad pequeña", + "et": "Linn", + "fa": "شهر کوچک", + "fi": "Pieni kaupunki / taajama", + "fr": "Ville (de 10 000 à 100 000 habitants)", + "gl": "Cidade pequena", + "he": "עירייה", + "hr": "Gradić", + "hu": "Város", + "id": "Kota", + "is": "Bær", + "it": "Cittadina", + "ja": "町制地方自治体", + "kn": "ಪಟ್ಟಣ", + "ko": "읍·면·동·로동자구", + "lt": "Miestelis", + "lv": "Pilsēta", + "mk": "Гратче", + "ms": "Bandar", + "nl": "Plaats", + "no": "Tettsted", + "pl": "Miasto", + "pt-BR": "Cidade Menor", + "pt": "Cidade / vila", + "ro": "Oraș", + "ru": "Город", + "sk": "Mesto", + "sl": "Mesto", + "so": "Magaalo", + "sr": "Варош", + "sv": "Mellanstor stad", + "ta": "நகரம்", + "te": "పట్టణం", + "tr": "Kasaba", + "uk": "Місто (невелике)", + "vi": "Thị xã", + "yue": "鎮", + "zh-CN": "城镇", + "zh-HK": "鎮", + "zh-TW": "鄉鎮市區", + "zh": "城镇" + } + }, + "place/village": { + "title": { + "C": "Village", + "af": "Dorpie", + "ar": "قرية", + "ast": "Pueblu", + "bg": "Село", + "bn": "গ্রাম", + "bs": "Selo", + "ca": "Poble", + "cs": "Vesnice", + "da": "Landsby", + "de": "Dorf", + "el": "Χωριό", + "en-GB": "Village", + "en": "Village", + "eo": "Vilaĝo", + "es": "Población / Aldea", + "et": "Küla", + "fa": "روستا", + "fi": "Kylä", + "fr": "Village (de 100 à 10 000 habitants)", + "gl": "Vila", + "he": "כפר", + "hr": "Selo", + "hu": "Falu", + "id": "Desa", + "is": "Þorp", + "it": "Paese", + "ja": "村制の地方自治体", + "kn": "ಹಳ್ಳಿ", + "ko": "리·통", + "lt": "Kaimas", + "lv": "Ciems", + "mk": "Село", + "ms": "Kampung", + "nl": "Dorp", + "no": "Tettsted", + "pl": "Wieś", + "pt-BR": "Povoado", + "pt": "Sede de Freguesia", + "ro": "Sat", + "ru": "Село (более 300 жителей)", + "sk": "Dedina", + "sl": "Vas", + "sr": "Село", + "sv": "Mindre samhälle", + "ta": "கிராமம்", + "te": "గ్రామం", + "tr": "Köy", + "uk": "Село", + "vi": "Làng", + "yue": "村", + "zh-CN": "村庄", + "zh-HK": "鄉村", + "zh-TW": "村里", + "zh": "村庄" + } + }, + "shop/boutique": { + "title": { + "C": "Boutique", + "af": "Boetiek", + "ar": "بوتيك", + "ast": "Boutique", + "bg": "Бутик", + "bn": "বুটিক", + "bs": "Butik", + "ca": "Boutique", + "cs": "Módní butik", + "da": "Boutique", + "de": "Boutique", + "el": "Μπουτίκ", + "en-GB": "Boutique", + "en": "Boutique", + "eo": "Mod-butiko (altprezaj vestaĵoj)", + "es": "Boutique", + "et": "Butiik", + "fa": "بوتیک", + "fi": "Muotiliike", + "fr": "Petit magasin de mode", + "gl": "Boutique", + "he": "בוטיק", + "hr": "Butik", + "hu": "Butik", + "id": "Butik", + "is": "Búð", + "it": "Boutique", + "ja": "ブティック", + "ko": "부티크", + "lt": "Parduotuvė", + "lv": "Veikals", + "mk": "Бутик", + "nl": "Boetiek", + "no": "Klesbutikk", + "pl": "Butik", + "pt-BR": "Loja de Alta Costura", + "pt": "Boutique", + "ro": "Boutique", + "ru": "Бутик", + "sk": "Butik", + "sl": "Butik", + "sr": "Бутик", + "sv": "Boutique (Dyra kläder och accessoarer)", + "tr": "Butik Mağaza", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "yue": "時裝店", + "zh-CN": "精品店", + "zh-HK": "時裝店", + "zh-TW": "服飾店", + "zh": "精品店" + } + }, + "shop/fashion": { + "title": { + "C": "Fashion Store", + "ar": "متجر موضة", + "ast": "Tienda de moda", + "ca": "Botiga de roba", + "cs": "Módní zboží", + "da": "Modebutik", + "de": "Modegeschäft", + "el": "Κατάστημα Μόδας", + "en-GB": "Fashion Shop", + "en": "Fashion Store", + "eo": "Mod-butiko", + "es": "Tienda de moda", + "et": "Moekauplus", + "fa": "فروشگاه مد", + "fi": "Muotiliike", + "fr": "Boutique de mode", + "gl": "Tenda de moda", + "he": "חנות אופנה", + "hr": "Modni dućan", + "hu": "Divatüzlet", + "id": "Toko Mode", + "is": "Tískuverslun", + "it": "Negozio di moda", + "ja": "ファッション店", + "ko": "패션 가게", + "lt": "Mados parduotuvė", + "lv": "Modes veikals", + "mk": "Модна продавница", + "nl": "Modewinkel", + "no": "Motebutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Moda", + "pt": "Loja de moda", + "ro": "Magazin de Modă", + "ru": "Магазин модной брендовой одежды", + "sk": "Obchod s módnymi doplnkami", + "sl": "Trgovina z modnimi oblačili", + "sr": "Бутик", + "sv": "Modebutik", + "tr": "Giyim Mağazası", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "zh-CN": "服装店", + "zh-HK": "時裝店", + "zh-TW": "時尚店" + } + }, + "shop/vacant": { + "title": { + "C": "Vacant Shop", + "af": "Leë winkel", + "ar": "محل شاغر", + "ast": "Tienda balera", + "bg": "Свободна търговска площ", + "bs": "Prodavnica za iznajmljivanje", + "ca": "Botiga per ocupar", + "cs": "Neobsazený obchod", + "da": "Ledig butik (ingen salg pt)", + "de": "Leerstehendes Geschäft", + "el": "Κενό Κατάστημα", + "en-GB": "Vacant Shop", + "en": "Vacant Shop", + "eo": "Forlasita vendejo", + "es": "Local disponible", + "et": "Vaba kaubanduspind", + "fa": "فروشگاه خالی", + "fi": "Tyhjä liikehuoneisto", + "fr": "Commerce désaffecté", + "gl": "Local baleiro", + "he": "חנות ריקה", + "hr": "Prazan dućanski prostor", + "hu": "Kiadó üzlethelyiség", + "is": "Tóm verslun", + "it": "Negozio vuoto", + "ja": "空き店舗, シャッター店舗", + "ko": "빈 가게", + "lt": "Tuščia parduotuvė", + "mk": "Празна продавница", + "nl": "Leegstaande winkel", + "pl": "Pusty lokal sklepowy", + "pt-BR": "Loja Desocupada", + "pt": "Loja desocupada", + "ro": "Magazin Vacant", + "ru": "Помещение под открытие магазина", + "sk": "Prázdny obchod", + "sl": "Nedelujoča trgovina", + "sr": "Упражњена продавница", + "sv": "Tom lokal", + "te": "ఖాళీ దుకాణం", + "tr": "Boş Dükkan", + "uk": "Здається в оренду", + "vi": "Tiệm Trống", + "yue": "吉舖", + "zh-CN": "空置铺位", + "zh-HK": "空置商舖", + "zh-TW": "閒置商店", + "zh": "空置铺位" + } + }, + "shop/agrarian": { + "title": { + "C": "Farm Supply Shop", + "ar": "متجر مستلزمات مزارع", + "cs": "Farmářská prodejna", + "da": "Grovvareforretning", + "de": "Agrarmarkt", + "el": "Προμήθειες Φάρμας", + "en": "Farm Supply Shop", + "eo": "Terkultur-investaĵa vendejo", + "es": "Tienda de suministros agrícolas", + "et": "Põllumajandustarvete kauplus", + "fa": "فروشگاه لوازم کشاورزی", + "fi": "Maataloustarvikeliike", + "fr": "Magasin d'agriculture", + "gl": "Tenda de subministracións agrícolas", + "he": "חנות אביזרי חקלאות", + "hu": "Gazdabolt", + "is": "Landbúnaðarvöruverslun", + "it": "Negozio di attrezzatura agricola", + "ja": "農業用品店", + "ko": "농업 용품 가게", + "mk": "Земјоделска продавица", + "nl": "Landbouwbenodigdhedenwinkel", + "pl": "Sklep rolniczy", + "pt-BR": "Loja de Suprimentos Agrícolas", + "pt": "Loja de produtos agrícolas", + "ru": "Сельскохозяйственный магазин", + "sr": "Продавница пољопривредне опреме", + "sv": "Jordbruksaffär", + "tr": "Çiftlik Malzemeleri Dükkanı", + "uk": "Сільгосптовари", + "vi": "Tiệm Nông nghiệp", + "zh-CN": "农场供应店", + "zh-TW": "農業資材行" + } + }, + "shop/alcohol": { + "title": { + "C": "Liquor Store", + "af": "Drankwinkel", + "ar": "متجر خمور", + "ast": "Llicorería", + "bg": "Магазин за алкохол", + "bs": "Prodavnica alkoholnih pića", + "ca": "Botiga de licors", + "cs": "Prodejna alkoholu", + "da": "Vinforhandler", + "de": "Spirituosenladen", + "el": "Κάβα Ποτών", + "en-GB": "Off licence (Alcohol shop)", + "en": "Liquor Store", + "eo": "Alkohola vendejo", + "es": "Licorería", + "et": "Alkoholipood", + "fa": "مغازه مشروبات الکلی", + "fi": "Alkoholimyymälä", + "fr": "Magasin de vente d'alcool", + "gl": "Licoraría", + "he": "חנות משקאות חריפים", + "hr": "Prodavaonica alkoholnih pića", + "hu": "Alkoholüzlet", + "id": "Toko Minuman", + "is": "Vínbúð", + "it": "Negozio di liquori", + "ja": "酒店", + "kn": "ಸಾರಾಯಿ ಅಂಗಡಿ", + "ko": "주류상", + "lt": "Alkoholinių gėrimų parduotuvė", + "lv": "Alkoholisko dzērienu veikals", + "mk": "Продавница за алкохолни пијалаци", + "nl": "Slijterij", + "no": "Vinutsalg", + "pl": "Sklep monopolowy", + "pt-BR": "Loja de alcoólicos licenciada", + "pt": "Loja de bebidas alcoólicas", + "ro": "Magazin de Băuturi Alcoolice", + "ru": "Алкогольный магазин", + "sk": "Obchod s alkoholom", + "sl": "Trgovina z alkoholnimi pijačami", + "sr": "Продавница алкохолних пића", + "sv": "Vin-och-spritaffär", + "ta": "மதுபானக் கடை", + "tr": "İçki Dükkanı", + "uk": "Алкогольні напої", + "vi": "Tiệm Rượu", + "yue": "酒莊", + "zh-CN": "酒水店", + "zh-HK": "酒類專賣店", + "zh-TW": "酒類專賣店", + "zh": "酒品店" + } + }, + "shop/anime": { + "title": { + "C": "Anime / Manga Shop", + "ar": "متجر أنيمي / مانغا", + "cs": "obchod s Anime / Manga", + "de": "Anime- / Manga-Geschäft", + "en": "Anime / Manga Shop", + "eo": "Anime-/manga-vendejo", + "es": "Tienda de anime / manga", + "fa": "فروشگاه انیمه / مانگا (کمیک ژاپنی)", + "fi": "Anime-/mangaliike", + "fr": "Boutique de manga et anime", + "gl": "Tenda de anime / manga", + "he": "חנות אנימה/מנגה", + "it": "Negozio di Anime / Manga", + "ja": "アニメショップ", + "ko": "애니메이션/만화 가게", + "mk": "Продавница за аниме/манга", + "nl": "Anime-/Mangawinkel", + "pl": "Sklep z mangą i anime", + "pt-BR": "Loja de Anime / Manga", + "pt": "Loja de animé", + "ru": "Магазин аниме / манги", + "sr": "Продавница манга и аниме", + "sv": "Anime/Manga-affär", + "tr": "Anime / Manga Dükkanı", + "uk": "Аніме/манга магазин", + "vi": "Tiệm Anime/Manga", + "zh-CN": "动漫/漫画店", + "zh-TW": "動畫/漫畫店" + } + }, + "shop/antiques": { + "title": { + "C": "Antiques Shop", + "ar": "متجر تحف وأنتيكات", + "ast": "Anticuariu", + "ca": "Botiga d'antiguitats", + "cs": "Starožitnictví", + "da": "Antikvitetsforretning", + "de": "Antiquitätenhändler", + "el": "Παλαιοπωλείο", + "en-GB": "Antiques Shop", + "en": "Antiques Shop", + "eo": "Antikvaĵa vendejo", + "es": "Tienda de antigüedades", + "et": "Antikvariaat", + "fa": "فروشگاه عتیقه‌جات", + "fi": "Antiikkiliike", + "fr": "Antiquaire", + "gl": "Tenda de antigüidades", + "he": "חנות עתיקות", + "hr": "Antikvarijat", + "hu": "Régiségkereskedés", + "id": "Toko Barang Antik", + "is": "Antíkverslun", + "it": "Antiquario", + "ja": "古美術品店", + "ko": "골동품 가게", + "lt": "Atikvarų parduotuvė", + "lv": "Antikvariāts", + "mk": "Старинарница", + "nl": "Antiquair", + "no": "Antikvariat / antikvitetshandel", + "pl": "Antykwariat", + "pt-BR": "Loja de Antiguidades", + "pt": "Loja de antiguidades", + "ro": "Anticariat", + "ru": "Магазин антиквариата", + "sk": "Obchod so tarožitnosťami", + "sl": "Starinarnica", + "sr": "Антикварница", + "sv": "Antikaffär", + "ta": "பழம்பொருள் அங்காடி", + "tr": "Antika Dükkanı", + "uk": "Антикварний магазин", + "vi": "Tiệm Đồ Cổ", + "zh-CN": "古董店", + "zh-HK": "古董店", + "zh-TW": "古董店" + } + }, + "shop/appliance": { + "title": { + "C": "Appliance Store", + "ar": "متجر الأجهزة المنزلية", + "cs": "Prodejna spotřební elektroniky", + "da": "Hvidevareforretning", + "de": "Haushaltselektrogerätegeschäft", + "el": "Κατάστημα Συσκευών", + "en-GB": "Appliance Shop", + "en": "Appliance Store", + "eo": "Elektronikaĵega vendejo", + "es": "Tienda de electrodomésticos", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kodinkonemyymälä", + "fr": "Magasin d'électroménager", + "gl": "Tenda de electrodomésticos", + "he": "חנות כלים חשמלים", + "hu": "Háztartási gép üzlet", + "is": "Raftækjaverslun", + "it": "Negozio di elettrodomestici", + "ja": "白物家電販売店(大型製品)", + "ko": "가전 제품 가게", + "mk": "Продавница за апарати и уреди", + "nl": "Huishoudelijkeapparatuurwinkel", + "no": "Hvitevarebutikk", + "pl": "Sklep z AGD", + "pt-BR": "Loja de Eletrodomésticos", + "pt": "Loja de eletrodomésticos \"brancos\"", + "ro": "Magazin de Electrocasnice", + "ru": "Магазин бытовой техники", + "sl": "Splošna tehnična trgovina", + "sv": "Vitvaror", + "tr": "Beyaz Eşya Mağazası", + "uk": "Побутова техніка", + "vi": "Tiệm Gia dụng", + "zh-CN": "家用电器店", + "zh-HK": "電器店", + "zh-TW": "家用電器店" + } + }, + "shop/art": { + "title": { + "C": "Art Store", + "ar": "متجر الفنون", + "ast": "Galería d'arte", + "ca": "Botiga d'art", + "cs": "Obchod s uměním", + "da": "Kunstbutik", + "de": "Kunsthandlung", + "en-GB": "Art Shop", + "en": "Art Store", + "eo": "Artaĵa vendejo", + "es": "Tienda de arte", + "et": "Kunstitarvete kauplus", + "fa": "فروشگاه آثار هنری", + "fi": "Taideliike", + "fr": "Marchand d'art", + "gl": "Tenda de arte", + "he": "חנות לחפצי אומנות", + "hr": "Trgovina umjetninama", + "hu": "Műalkotásbolt", + "is": "Listmunaverslun", + "it": "Negozio di opere d'arte", + "ja": "美術品販売店", + "ko": "미술품 가게", + "lt": "Meno parduotuvė", + "lv": "Mākslas veikals", + "mk": "Продавница за уметнички дела", + "nl": "Kunstwinkel", + "no": "Kunsthandel", + "pl": "Sklep z dziełami sztuki", + "pt-BR": "Loja de Arte", + "pt": "Loja de artigos de arte", + "ro": "Magazin de Artă", + "ru": "Магазин произведений искусства", + "sk": "Umelecký obchod", + "sl": "Trgovina z umetninami", + "sr": "Продавница уметнина", + "sv": "Konstaffär", + "ta": "கலை அங்காடி", + "tr": "Sanat Mağazası", + "uk": "Художній салон", + "vi": "Tiệm Nghệ phẩm", + "zh-CN": "艺术品店", + "zh-HK": "藝術商店", + "zh-TW": "藝術商店" + } + }, + "shop/baby_goods": { + "title": { + "C": "Baby Goods Store", + "ar": "متجر سلع أطفال", + "ca": "Botiga per a nadons", + "cs": "Potřeby pro děti", + "da": "Babyudstyrsbutik", + "de": "Babysachengeschäft", + "el": "Κατάστημα Βρεφικών Ειδών", + "en-GB": "Baby Goods Shop", + "en": "Baby Goods Store", + "eo": "Bebaĵa vendejo", + "es": "Tienda de productos para bebé", + "et": "Beebipood", + "fa": "فروشگاه کالای کودک", + "fi": "Vauvatarvikeliike", + "fr": "Magasin de produits pour bébés", + "gl": "Tenda de produtos para meniños", + "he": "חנות לדברי תינוקות", + "hr": "Trgovina za bebe", + "hu": "Bababolt", + "id": "Toko Perlengkapan Bayi", + "is": "Barnavöruverslun", + "it": "Negozio di prodotti per l'infanzia", + "ja": "赤ちゃん用品店", + "ko": "유아 용품 가게", + "lt": "Vaikų prekių parduotuvė", + "mk": "Продавница за бебешка опрема", + "nl": "Babyartikelenwinkel", + "no": "Babyutstyrsbutikk", + "pl": "Sklep z artykułami dla dzieci i niemowląt", + "pt-BR": "Loja de Artigos para Bebês", + "pt": "Loja de acessórios para bebés", + "ro": "Magazin de Produse pentru Bebeluși", + "ru": "Магазин детских товаров", + "sk": "Obchod s detskými potrebami", + "sl": "Trgovina za otroke", + "sr": "Продавница беби-опреме", + "sv": "Babyprodukter", + "tr": "Bebek Malzemeleri Mağazası", + "uk": "Товари для немовлят", + "vi": "Tiệm Đồ Sơ sinh", + "zh-CN": "婴儿用品店", + "zh-HK": "嬰兒用品店", + "zh-TW": "嬰兒用品店" + } + }, + "shop/bag": { + "title": { + "C": "Bag/Luggage Store", + "ar": "متجر حقائب وأمتعة", + "ca": "Botiga d'equipatges", + "cs": "Obchod se zavazadly", + "da": "Taske/Kuffertbutik", + "de": "Taschenladen", + "el": "Κατάστημα αποσκευών", + "en-GB": "Bag/Luggage Shop", + "en": "Bag/Luggage Store", + "eo": "Saka/valiza vendejo", + "es": "Tienda de bolsos / equipaje", + "et": "Kotipood", + "fa": "فروشگاه کیف/چمدان", + "fi": "Matkalaukkumyymälä", + "fr": "Bagagerie", + "gl": "Tenda de maletas", + "he": "חנות מזוודות", + "hr": "Trgovina sa torbama", + "hu": "Táska- és bőröndbolt", + "id": "Toko Tas/Koper", + "is": "Töskubúð", + "it": "Negozio di borse e valigie", + "ja": "バッグ/カバン店", + "ko": "가방/여행가방 가게", + "lt": "Kuprinių/lagaminų parduotuvė", + "lv": "Somu / Čemodānu veikals", + "mk": "Продавница за чанти, торби и куфери", + "nl": "Zak-/Reiskofferwinkel", + "no": "Veskebutikk", + "pl": "Sklep z torebkami/walizkami", + "pt-BR": "Loja de Bolsas/Malas", + "pt": "Loja de malas / bagagem", + "ro": "Magazin de Bagaje", + "ru": "Магазин сумок и саквояжа", + "sk": "Obchod s kuframi", + "sl": "Trgovina za prtljago", + "sv": "Väskaffär", + "tr": "Çanta/Valiz Mağazası", + "uk": "Магазин з продажу валіз", + "vi": "Tiệm Túi", + "zh-CN": "箱包店", + "zh-HK": "袋/行李箱店", + "zh-TW": "包包/行李店" + } + }, + "shop/bakery": { + "title": { + "C": "Bakery", + "af": "Bakkery", + "ar": "مخبز", + "ast": "Panadería", + "bg": "Пекарна", + "bn": "বেকারি", + "bs": "Pekara", + "ca": "Fleca", + "cs": "Pekařství", + "da": "Bager", + "de": "Bäckerei", + "el": "Αρτοποιείο", + "en-GB": "Bakery", + "en": "Bakery", + "eo": "Panejo", + "es": "Panadería", + "et": "Pagariäri", + "fa": "نانوایی", + "fi": "Leipomo", + "fr": "Boulangerie", + "gl": "Panadaría", + "he": "מאפייה", + "hr": "Pekara", + "hu": "Pékség", + "id": "Toko Roti", + "is": "Bakarí", + "it": "Panificio", + "ja": "パン屋", + "kn": "ಅಟ್ಟಂಗಡಿ", + "ko": "제과점", + "lt": "Kepykla", + "lv": "Konditoreja", + "mk": "Пекарница", + "nl": "Bakkerij", + "no": "Bakeri", + "pl": "Piekarnia", + "pt-BR": "Padaria", + "pt": "Padaria", + "ro": "Brutărie", + "ru": "Булочная", + "sk": "Pekáreň", + "sl": "Pekarna", + "sq": "Furrë buke", + "sr": "Пекара", + "sv": "Bageri", + "ta": "அடுமனை", + "tr": "Fırın", + "uk": "Булочна", + "vi": "Tiệm Bánh", + "yue": "麪飽舖同餅家", + "zh-CN": "烘焙店", + "zh-HK": "麵包西餅店", + "zh-TW": "麵包店", + "zh": "面包店" + } + }, + "shop/bathroom_furnishing": { + "title": { + "C": "Bathroom Furnishing Store", + "ar": "متجر أثاث الحمام", + "ca": "Botiga de mobles de bany", + "cs": "Vybavení koupelen", + "da": "Badeværelseindretningsbutik", + "de": "Badeinrichtungsgeschäft", + "el": "Κατάστημα εξοπλισμού μπάνιου", + "en-GB": "Bathroom Furnishing Shop", + "en": "Bathroom Furnishing Store", + "eo": "Lavĉambr-akcesoraĵa vendejo", + "es": "Tienda de muebles de baño", + "et": "Santehnika kauplus", + "fa": "فروشگاه لوازم حمام", + "fi": "Kylpyhuoneliike", + "fr": "Fournitures pour salles de bain", + "gl": "Tenda de mobles de baño", + "he": "חנות רהיטי שירותים/מקלחת", + "hr": "Prodavaonica kupaonske opreme", + "hu": "Fürdőszobabútor-bolt", + "id": "Toko Perlengkapan Kamar Mandi", + "is": "Baðinnréttingaverslun", + "it": "Negozio di prodotti per il bagno", + "ja": "浴室用品店", + "ko": "화장실 기구 가게", + "lt": "Vonios baldų parduotuvė", + "mk": "Продавница за санитарии", + "nl": "Badkamermeubelwinkel", + "no": "Baderomsbutikk", + "pl": "Sklep z wyposażeniem łazienek", + "pt-BR": "Loja de Mobiliário de Banheiros", + "pt": "Loja de assessórios para casas de banho", + "ro": "Magazin de Mobilier pentru Băi", + "ru": "Магазин продающий мебель для ванных комнат", + "sk": "Obchod s kúpelňami", + "sl": "Trgovina s kopalniško opremo", + "sv": "Badrumsinredning", + "tr": "Züccaciye", + "uk": "Магазин сантехніки", + "vi": "Tiệm Bán đồ Phòng tắm", + "zh-CN": "浴室家具店", + "zh-HK": "浴室配件店", + "zh-TW": "衛浴用品店" + } + }, + "shop/beauty": { + "title": { + "C": "Beauty Shop", + "af": "Skoonheidswinkel", + "ar": "محل تجميل", + "ast": "Cosmética", + "bg": "Козметик", + "bs": "Salon ljepote", + "ca": "Botiga de cosmètics", + "cs": "Kosmetický salón", + "da": "Skønhedsforhandler", + "de": "Schönheitssalon", + "el": "Κατάστημα Ομορφιάς", + "en-GB": "Beauty Shop", + "en": "Beauty Shop", + "eo": "Salono de beligado", + "es": "Salón de belleza", + "et": "Ilusalong", + "fa": "سالن زیبایی", + "fi": "Kauneushoitola", + "fr": "Salon de beauté", + "gl": "Salón de beleza", + "he": "חנות מוצרי יופי/טיפוח", + "hr": "Kozmetički salon", + "hu": "Szépségszalon", + "id": "Salon Kecantikan", + "is": "Fegrunarstofa", + "it": "Negozio di articoli di bellezza", + "ja": "美容サービス", + "ko": "뷰티 샵", + "lt": "Grožio salonas", + "lv": "Skaistumveikals", + "mk": "Салон за убавина", + "nl": "Schoonheidssalon", + "no": "Skjønnhetsbutikk", + "pl": "Salon urody", + "pt-BR": "Salão de Beleza", + "pt": "Centro de estética", + "ro": "Magazin Beauty", + "ru": "Салон красоты", + "sk": "Bižutéria", + "sl": "Lepotilni salon", + "sr": "Салон лепоте", + "sv": "Skönhetssalong", + "ta": "அழகுசாதனக் கடை", + "tr": "Güzellik Salonu", + "uk": "Cалон краси", + "vi": "Tiệm Mỹ phẩm", + "yue": "美容院", + "zh-CN": "美容店", + "zh-HK": "美容院", + "zh-TW": "美容店", + "zh": "美容店" + } + }, + "shop/bed": { + "title": { + "C": "Bedding/Mattress Store", + "ar": "متجر مراتب ولوازم الفراش", + "ca": "Botiga de matalassos", + "cs": "Prodejna postelí", + "da": "Sengetøj / Madras forhandler", + "de": "Betten/Matratzengeschäft", + "el": "Κατάστημα κρεβατιών/στρωμάτων", + "en-GB": "Bed Shop", + "en": "Bedding/Mattress Store", + "eo": "Lita/matraca vendejo", + "es": "Tienda de ropa de cama/colchón", + "et": "Magamistoa kauba pood", + "fa": "فروشگاه کالای خواب/ تشک", + "fi": "Vuodetarvikeliike", + "fr": "Magasin de literie", + "gl": "Tenda de colchóns/roupa de cama", + "he": "חנות מזרנים", + "hr": "Trgovina opreme za krevete", + "hu": "Ágy- és matracbolt", + "id": "Toko Selimut/Matras", + "is": "Rúm/Dýnuverslun", + "it": "Negozio di letti/materassi", + "ja": "寝具店", + "ko": "침구/매트리스 가게", + "lv": "Gultasveļas / Matraču veikals", + "mk": "Продавница за кревети и постелнина", + "nl": "Bed-/Matrassenwinkel", + "no": "Sengebutikk", + "pl": "Sklep z łóżkami/materacami", + "pt-BR": "Loja de Camas e Colchões", + "pt": "Loja de camas / colchões", + "ro": "Magazin de Saltele", + "ru": "Магазин матрасов и постельных принадлежностей", + "sk": "Obchod s posteľami/matracmi", + "sl": "Trgovina s posteljnino in žimnicami", + "sr": "Продавница душека", + "sv": "Sängaffär", + "tr": "Yatak Mağazası", + "uk": "Магазин постільних приналежностей", + "vi": "Tiệm Nệm", + "zh-CN": "床上用品店", + "zh-HK": "寢具/床褥店", + "zh-TW": "床具/寐具店" + } + }, + "shop/beverages": { + "title": { + "C": "Beverage Store", + "af": "Koeldrankwinkel", + "ar": "محل مشروبات", + "ast": "Venta de bebíes", + "bg": "Магазин за алкохол и цигари", + "bs": "Prodavnica pića", + "ca": "Botiga de begudes", + "cs": "Prodejna nápojů", + "da": "Vinforhandler", + "de": "Getränkehandel", + "el": "Αναψυκτήριο", + "en-GB": "Beverages Shop", + "en": "Beverage Store", + "eo": "Trinkaĵa vendejo", + "es": "Tienda de bebidas", + "et": "Joogikauplus", + "fa": "فروشگاه آشامیدنی", + "fi": "Viinakauppa", + "fr": "Magasin de boissons", + "gl": "Tenda de bebidas", + "he": "חנות משקאות", + "hr": "Trgovina s pićima", + "hu": "Italbolt", + "id": "Toko Minuman", + "is": "Drykkjarbúð", + "it": "Negozio di bevande", + "ja": "飲料店", + "ko": "음료 가게", + "lt": "Gėrimų parduotuvė", + "lv": "Dzērienu veikals", + "mk": "Продавница за пијалаци", + "nl": "Drankenwinkel", + "no": "Øl- og vinutsalg", + "pl": "Sklep z napojami", + "pt-BR": "Loja de Bebidas", + "pt": "Loja de bebidas", + "ro": "Magazin de Băuturi", + "ru": "Магазин по продаже алкогольных и безалкогольных напитков", + "sk": "Obchod s nápojmi", + "sl": "Trgovina s pijačami", + "sr": "Продавница пића", + "sv": "Dryckaffär", + "tr": "İçecek Dükkanı", + "uk": "Напої", + "vi": "Tiệm Đồ uống", + "yue": "飲品舖", + "zh-CN": "饮料店", + "zh-HK": "飲品店", + "zh-TW": "飲品店", + "zh": "饮品店" + } + }, + "shop/bicycle": { + "title": { + "C": "Bicycle Shop", + "af": "Fietswinkel", + "ar": "متجر دراجات هوائية", + "ast": "Tienda de ciclismu", + "bg": "Магазин за велосипеди", + "bn": "সাইকেলের দোকান", + "bs": "Prodavnica bicikala", + "ca": "Botiga de bicicletes", + "cs": "Cykloprodejna", + "da": "Cykelbutik", + "de": "Fahrradladen", + "el": "Κατάστημα Ποδηλάτων", + "en-GB": "Bicycle Shop", + "en": "Bicycle Shop", + "eo": "Bicikla vendejo", + "es": "Tienda de bicicletas", + "et": "Rattapood", + "fa": "فروشگاه دوچرخه", + "fi": "Pyöräliike", + "fr": "Magasin de vélos", + "gl": "Tenda de bicicletas", + "he": "חנות אופניים", + "hr": "prodavaonica bicikala", + "hu": "Kerékpárbolt", + "id": "Toko Sepeda", + "is": "Hjólabúð", + "it": "Negozio di biciclette", + "ja": "自転車店", + "ko": "자전거 가게", + "lt": "Dviračių parduotuvė", + "lv": "Velo veikals", + "mk": "Продавница за велосипеди", + "ms": "Kedai Basikal", + "nl": "Fietswinkel", + "no": "Sykkelbutikk", + "pl": "Sklep rowerowy", + "pt-BR": "Loja de Bicicletas", + "pt": "Loja de bicicletas", + "ro": "Magazin de Biciclete", + "ru": "Веломагазин", + "sk": "Cykloobchod", + "sl": "Kolesarska trgovina", + "sr": "Продавница бицикала", + "sv": "Cykelaffär", + "ta": "மிதிவண்டிக் கடை", + "tr": "Bisiklet Mağazası", + "uk": "Веломагазин", + "vi": "Tiệm Xe đạp", + "yue": "單車舖", + "zh-CN": "自行车店", + "zh-HK": "單車店", + "zh-TW": "單車店", + "zh": "自行车店" + } + }, + "shop/boat": { + "title": { + "C": "Boat Store", + "cs": "prodejna lodí", + "da": "Bådforhandler", + "de": "Bootsgeschäft", + "en": "Boat Store", + "eo": "Boat‑vendejo", + "es": "Tienda de barcos", + "fa": "فروشگاه قایق", + "fi": "Venekauppa", + "fr": "Magasin de bateaux", + "gl": "Tenda de embarcacións", + "he": "חנות סירות", + "hu": "Hajósbolt", + "it": "Negozio di barche", + "ja": "ボート店", + "ko": "보트 가게", + "mk": "Продавница за чамци", + "nl": "Bootwinkel", + "pl": "Sklep żeglarski", + "pt-BR": "Loja de Barcos", + "pt": "Loja de barcos", + "sk": "Obchod predávajúci lode", + "sr": "Продавница чамаца", + "sv": "Båtaffär", + "tr": "Tekne Mağazası", + "uk": "Магазин човнів", + "vi": "Tiệm Tàu thuyền", + "zh-CN": "船店", + "zh-TW": "船店" + } + }, + "shop/bookmaker": { + "title": { + "C": "Bookmaker", + "ar": "مكتب رهانات", + "ast": "Encuadernador", + "ca": "Cusidor de llibres", + "cs": "Sázková kancelář", + "da": "Bookmaker", + "de": "Wettbüro", + "el": "Πρακτορείο στοιχημάτων", + "en-GB": "Bookmaker", + "en": "Bookmaker", + "eo": "Vetperistejo", + "es": "Corredor de apuestas", + "et": "Trükkal", + "fa": "دلال شرط‌بندی", + "fi": "Kirjapaino", + "fr": "Bookmaker", + "gl": "Corredor de apostas", + "he": "כורך ספרים", + "hr": "Kladioničar", + "hu": "Fogadóiroda", + "id": "Juru Taruh", + "is": "Veðmangari", + "it": "Agenzia di scommesse", + "ja": "公営競技投票券売り場", + "ko": "마권업자", + "lt": "Knygrišys", + "mk": "Обложувалница", + "nl": "Bookmaker (gokkantoor)", + "no": "Bookmaker", + "pl": "Zakład bukmacherski", + "pt-BR": "Casa de Apostas", + "pt": "Casa de apostas", + "ro": "Atelier de Cărți", + "ru": "Букмекерская контора", + "sk": "Stávková kancelária", + "sl": "Stavnica", + "sr": "Кладионичар", + "sv": "Vadslagning", + "tr": "Bahis Merkezi", + "uk": "Букмекер", + "vi": "Phòng Đánh cá Ngựa", + "zh-CN": "书商", + "zh-HK": "投注站", + "zh-TW": "投注處" + } + }, + "shop/books": { + "title": { + "C": "Book Store", + "ar": "متجر كتب", + "ast": "Llibrería", + "ca": "Llibreria", + "cs": "Knihkupectví", + "da": "Boghandler", + "de": "Buchladen", + "el": "Βιβλιοπωλείο", + "en-GB": "Book Shop", + "en": "Book Store", + "eo": "Libra vendejo", + "es": "Librería (venta de libros)", + "et": "Raamatupood", + "fa": "کتاب‌فروشی", + "fi": "Kirjakauppa", + "fr": "Librairie", + "gl": "Libraría", + "he": "חנות ספרים", + "hi": "किताबों की दुकान", + "hr": "Knjižara", + "hu": "Könyvesbolt", + "id": "Toko Buku", + "is": "Bókabúð", + "it": "Libreria", + "ja": "本屋", + "ko": "서점", + "lt": "Knygynas", + "lv": "Grāmatu veikals", + "mk": "Книжарница", + "nl": "Boekwinkel", + "no": "Bokhandel", + "pl": "Księgarnia", + "pt-BR": "Livraria", + "pt": "Livraria", + "ro": "Magazin de Cărți", + "ru": "Книжный магазин", + "sk": "Kníhkupectvo", + "sl": "Knjigarna", + "sr": "Продавница књига", + "sv": "Bokhandel", + "ta": "புத்தகக் கடை", + "tr": "Kitapçı", + "uk": "Книжковий магазин", + "vi": "Hiệu Sách", + "zh-CN": "书店", + "zh-HK": "書店", + "zh-TW": "書店" + } + }, + "shop/brewing_supplies": { + "title": { + "C": "Brewing Supply Store", + "cs": "pivovarnický obchod", + "da": "Bryggeudstyrsbutik", + "de": "Brauzubehörgeschäft", + "en": "Brewing Supply Store", + "eo": "Bier-/vin-farendaĵa vendejo", + "es": "Tienda de suministros de cerveza", + "fa": "فروشگاه فرآورده‌های آبجو", + "fr": "Magasin de matériel de brasserie", + "gl": "Tenda de cervexaría artesanal", + "he": "חנות ציוד למבשלות", + "it": "Negozio di forniture per la produzione di birra", + "ja": "醸造用品店", + "ko": "양조 용품 가게", + "mk": "Пивоварска продавница", + "nl": "Winkel voor brouwbenodigdheden", + "pl": "Sklep dla piwowarów domowych", + "pt-BR": "Loja de suprimentos para cerveja", + "pt": "Loja de material de fermentação", + "sv": "Affär för hembryggningstillbehör", + "tr": "Bira Malzemeleri Mağazası", + "uk": "Пивоварне та виноробне обладнання", + "zh-TW": "釀酒用品店" + } + }, + "shop/butcher": { + "title": { + "C": "Butcher", + "af": "Slagter", + "ar": "جزار", + "ast": "Carnicería", + "bg": "Колбаси", + "bn": "কসাই", + "bs": "Mesar", + "ca": "Carnisseria", + "cs": "Řeznictví", + "da": "Slagter", + "de": "Metzgerei", + "el": "Κρεοπωλείο", + "en-GB": "Butcher", + "en": "Butcher", + "eo": "Vianda vendejo", + "es": "Carnicería", + "et": "Lihapood", + "fa": "قصابی", + "fi": "Lihakauppa", + "fr": "Boucher", + "gl": "Carnizaría", + "he": "קצב", + "hr": "Mesnica", + "hu": "Hentes", + "id": "Penjagalan", + "is": "Slátrari", + "it": "Macellaio", + "ja": "精肉店", + "ko": "정육점", + "lt": "Mėsinė", + "lv": "Miesnieks", + "mk": "Месарница", + "nl": "Slagerij", + "no": "Slakter", + "pl": "Sklep mięsny", + "pt-BR": "Açougue", + "pt": "Talho", + "ro": "Măcelărie", + "ru": "Мясной", + "sk": "Mäsiarstvo", + "sl": "Mesar", + "sr": "Месар", + "sv": "Slaktare", + "ta": "இறைச்சிக் கடை", + "tr": "Kasap", + "uk": "М’ясна лавка", + "vi": "Hàng Thịt", + "yue": "肉舖", + "zh-CN": "肉店", + "zh-HK": "肉舖", + "zh-TW": "肉販", + "zh": "肉贩" + } + }, + "shop/camera": { + "title": { + "C": "Camera Equipment Store", + "cs": "prodejna kamer", + "da": "Fotoforhandler", + "de": "Fotofachgeschäft", + "en": "Camera Equipment Store", + "eo": "Vendejo kun fotiloj kaj lensoj", + "es": "Tienda de equipos de fotografía", + "fi": "Kameraliike", + "fr": "Boutique de matériel photographique", + "gl": "Tenda de fotografía", + "he": "חנות ציוד צילום", + "it": "Negozio di materiale fotografico", + "ja": "カメラ店", + "ko": "카메라 가게", + "mk": "Продавница за фотографска опрема", + "nl": "Winkel voor camerabenodigdheden", + "pl": "Sklep z kamerami i aparatami", + "pt-BR": "Loja de equipamentos para câmeras", + "pt": "Loja de equipamento fotográfico", + "sv": "Affär för kameratillbehör", + "tr": "Kamera Ekipman Mağazası", + "uk": "Фотообладнання", + "zh-TW": "相機配件店" + } + }, + "shop/candles": { + "title": { + "C": "Candle Shop", + "ar": "متجر الشموع", + "ca": "Botiga d'espelmes", + "cs": "Obchod se svíčkami", + "da": "Stearinlysforhandler", + "de": "Kerzengeschäft", + "el": "Κατάστημα Κεριών", + "en-GB": "Candle Shop", + "en": "Candle Shop", + "eo": "Kandela vendejo", + "es": "Tienda de velas", + "et": "Küünlapood", + "fa": "شمع فروشی", + "fi": "Kynttiläkauppa", + "fr": "Magasin de bougies", + "gl": "Tenda de velas", + "he": "חנות נרות", + "hr": "Prodavaonica svijeća", + "hu": "Gyertya- és mécsesbolt", + "id": "Toko Lilin", + "is": "Kertabúð", + "it": "Negozio di candele", + "ja": "キャンドル専門店", + "ko": "양초 가게", + "lt": "Žvakių parduotuvė", + "lv": "Sveču veikals", + "mk": "Свеќарница", + "nl": "Kaarsenwinkel", + "no": "Lysstøperi", + "pl": "Sklep ze świecami", + "pt-BR": "Loja de Velas", + "pt": "Loja de velas", + "ro": "Magazin de Lumânări", + "ru": "Свечной магазин", + "sk": "Obchod so svičkami", + "sl": "Svečarstvo", + "sr": "Свећарница", + "sv": "Ljusaffär", + "tr": "Mum Mağazası", + "uk": "Магазин свічок", + "vi": "Tiệm Cây nến", + "zh-CN": "蜡烛店", + "zh-HK": "蠟燭店", + "zh-TW": "燈具店" + } + }, + "shop/cannabis": { + "title": { + "C": "Cannabis Shop", + "cs": "Feťácká prodejna", + "de": "Cannabisgeschäft", + "en": "Cannabis Shop", + "eo": "Mariĥuana vendejo", + "es": "Tienda de cannabis", + "fa": "فروشگاه شاهدانه / ورمی کمپوست", + "fi": "Kannabiskauppa", + "fr": "Magasin de canabis", + "gl": "Tenda de cannabis", + "he": "חנות קנביס", + "hu": "Marihuána bolt", + "it": "Negozio di cannabis", + "ja": "Cannabis Shop(illegal in Japan)", + "ko": "대마초 가게", + "mk": "Продавница за коноп", + "nl": "Cannabiswinkel", + "pl": "Sklep z produktami z konopi", + "pt-BR": "Loja de canábis", + "pt": "Loja de canábis", + "sr": "Продавница канабиса", + "sv": "Cannabisaffär", + "tr": "Esrar Dükkanı", + "uk": "Конопля", + "zh-CN": "大麻店", + "zh-TW": "娛樂用大麻店" + } + }, + "shop/car": { + "title": { + "C": "Car Dealership", + "af": "Voertuighandelaar", + "ar": "وكالة سيارات", + "ast": "Venta d'automóviles", + "bg": "Автомобили", + "bn": "গাড়ির ডিলারশিপ", + "bs": "Salon automobila", + "ca": "Concessionari de cotxes", + "cs": "Prodejna aut", + "da": "Bilforhandler", + "de": "Autohändler", + "el": "Εμπορία Αυτοκινήτων", + "en-GB": "Car Dealership", + "en": "Car Dealership", + "eo": "Aŭtomobila vendejo", + "es": "Concesionario de automóviles", + "et": "Autopood", + "fa": "نمایندگی خودرو", + "fi": "Autokauppa", + "fr": "Concessionnaire automobile", + "gl": "Concesionario de automóbiles", + "he": "סוכנות רכב", + "hr": "Prodavaonica automobila", + "hu": "Autókereskedés", + "id": "Dealer Mobil", + "is": "Bílabúð", + "it": "Concessionario", + "ja": "カーディーラー", + "ko": "자동차 대리점", + "lt": "Automobilių prekybos atstovybė", + "lv": "Auto dīleris", + "mk": "Автосалон", + "nl": "Autoshowroom", + "no": "Bilforhandler", + "pl": "Sprzedaż samochodów", + "pt-BR": "Revenda de Automóveis", + "pt": "Loja de automóveis", + "ro": "Magazin de Mașini", + "ru": "Автодилер", + "sk": "Predajňa áut", + "sl": "Avtomobilski salon", + "sr": "Салон аутомобила", + "sv": "Bilhandlare", + "ta": "வாகன விற்பனையகம்", + "tr": "Oto Galeri", + "uk": "Автосалон", + "vi": "Tiệm Xe hơi", + "yue": "車行", + "zh-CN": "汽车店", + "zh-HK": "車行", + "zh-TW": "汽車行", + "zh": "车行" + } + }, + "shop/car_parts": { + "title": { + "C": "Car Parts Store", + "af": "Onderdelewinkel", + "ar": "محل بيع أجزاء السيارة", + "ast": "Repuestos d'automóviles", + "bg": "Авточасти", + "bn": "গাড়ির যন্ত্রাংশের দোকান", + "bs": "Prodavnica auto dijelova", + "ca": "Botiga de recanvis de cotxe", + "cs": "Náhradní díly pro auta", + "da": "Bilreservedelsforhandler", + "de": "Autoteilehandel", + "el": "Ανταλλακτικά Αυτοκινήτων", + "en-GB": "Car Parts Shop", + "en": "Car Parts Store", + "eo": "Aŭtomobil-parta vendejo", + "es": "Tienda de componentes de automóvil", + "et": "Autoosade pood", + "fa": "فروشگاه قطعات خودرو", + "fi": "Varaosamyymälä", + "fr": "Magasin de pièces automobiles", + "gl": "Tenda de recambios de automóbiles", + "he": "חנות חלקי מכוניות", + "hr": "Trgovina rezevnih dijelova za automobile", + "hu": "Autóalkatrész-üzlet", + "id": "Toko Peralatan Mobil", + "is": "Bílavarahlutaverslun", + "it": "Negozio di autoricambi", + "ja": "カー用品店", + "ko": "자동차 부품 가게", + "lt": "Auto dalių parduotuvė", + "lv": "Auto rezerves daļu veikals", + "mk": "Продавница за автоделови", + "nl": "Auto-onderdelenwinkel", + "no": "Bildelforhandler", + "pl": "Sklep z częściami do samochodów", + "pt-BR": "Loja de Peças Automotivas", + "pt": "Loja de peças para automóveis", + "ru": "Автозапчасти", + "sk": "Predajňa autodielov", + "sl": "Avtomobilski deli", + "sr": "Продавница ауто делова", + "sv": "Biltillbehör", + "tr": "Yedek Parça Dükkanı", + "uk": "Автозапчастини", + "vi": "Tiệm Phụ tùng Xe hơi", + "yue": "汽車零件舖", + "zh-CN": "汽车零部件商店", + "zh-HK": "汽車零件店", + "zh-TW": "汽車零件店", + "zh": "汽车配件店" + } + }, + "shop/car_repair": { + "title": { + "C": "Car Repair Shop", + "af": "Werkswinkel", + "ar": "ورشة إصلاح سيارات", + "ast": "Taller d'automóviles", + "bg": "Сервиз автомобили", + "bn": "গাড়ি মেরামতের দোকান", + "bs": "Auto servis", + "ca": "Taller d'automòbils", + "cs": "Autoopravna", + "da": "Bilværksted", + "de": "Autowerkstatt", + "dv": "ކާާރު ހަދައިދޭ ގަރާޖް", + "el": "Συνεργείο Αυτοκινήτων", + "en-GB": "Car Repair Shop", + "en": "Car Repair Shop", + "eo": "Aŭtomobil-riparejo", + "es": "Taller de reparación de automóviles", + "et": "Autoremont", + "fa": "تعمیرگاه خودرو", + "fi": "Autokorjaamo", + "fr": "Garage de réparation automobile", + "gl": "Taller de arranxo de automóbiles", + "he": "מוסך", + "hr": "Automehaničar", + "hu": "Autószerelő", + "id": "Bengkel Mobil", + "is": "Bílaverkstæði", + "it": "Autofficina", + "ja": "自動車修理工場", + "ko": "자동차 수리점", + "lt": "Auto taisykla", + "lv": "Auto remontdarbnīca", + "mk": "Автосервис", + "nl": "Autogarage (herstel)", + "no": "Bilverksted", + "pl": "Warsztat samochodowy", + "pt-BR": "Oficina Mecânica", + "pt": "Oficina de automóveis", + "ro": "Vulcanizare", + "ru": "Автомастерская", + "sk": "Autoservis", + "sl": "Avtoservis", + "so": "Garaash", + "sr": "Ауто-сервис", + "sv": "Bilverkstad", + "tr": "Tamirci", + "uk": "Автомайстерня", + "vi": "Tiệm Sửa Xe", + "yue": "車房", + "zh-CN": "汽车修理店", + "zh-HK": "車房", + "zh-TW": "汽車維修店", + "zh": "汽车修理店" + } + }, + "shop/caravan": { + "title": { + "C": "RV Dealership", + "cs": "prodejna karavanů", + "de": "Wohnwagengeschäft", + "en": "RV Dealership", + "eo": "Vendejo de kampad-veturiloj", + "es": "Concesionario de autocaravanas", + "et": "Haagissuvilate/autoelamute müügiplats", + "fi": "Asuntovaunukauppa", + "fr": "Concessionnaire de véhicules de tourisme", + "gl": "Concesionario de autocaravanas", + "he": "סוכנות קרוואנים", + "hu": "Lakókocsi kereskedés", + "it": "Concessionario caravan", + "ja": "キャラバンカー販売店", + "ko": "RV 대리점", + "mk": "Продавач на камп-возила", + "nl": "Caravan-dealer", + "pl": "Sklep z kamperami i przyczepami", + "pt-BR": "Concessionária de Motorhomes", + "pt": "Vendedor de caravanas", + "sv": "Husvagnsförsäljare", + "tr": "Karavan Galerisi", + "uk": "Салон автотрейлерів", + "vi": "Tiệm Nhà xe Lưu động", + "zh-TW": "拖車經銷商" + } + }, + "shop/carpet": { + "title": { + "C": "Carpet Store", + "ar": "متجر سجاد", + "ast": "Alfombres", + "ca": "Botiga de catifes", + "cs": "Prodejna koberců", + "da": "Tæppeforhandler", + "de": "Teppichgeschäft", + "el": "Κατάστημα χαλιών", + "en-GB": "Carpet Shop", + "en": "Carpet Store", + "eo": "Tapiŝa vendejo", + "es": "Tienda de alfombras", + "et": "Vaibapood", + "fa": "فرش فروشی", + "fi": "Mattokauppa", + "fr": "Magasin de tapis", + "gl": "Tenda de alfombras", + "he": "חנות שטיחים", + "hr": "Prodavaonica tepiha", + "hu": "Szőnyegbolt", + "id": "Toko Karpet", + "is": "Gólfteppaverslun", + "it": "Negozio di tappeti", + "ja": "カーペット専門店", + "ko": "카펫 가게", + "lt": "Kilimų parduotuvė", + "lv": "Paklāju veikals", + "mk": "Продавница за теписи", + "nl": "Tapijtwinkel", + "no": "Teppehandler", + "pl": "Sklep z dywanami", + "pt-BR": "Tapeçaria", + "pt": "Loja de tapetes", + "ro": "Magazin de Covoare", + "ru": "Магазин ковров", + "sk": "Obchod s kobercami", + "sl": "Trgovina s preprogrami", + "sr": "Продавница тепиха", + "sv": "Mattaffär", + "tr": "Halı Mağazası", + "uk": "Магазин килимів", + "vi": "Tiệm Thảm", + "zh-CN": "地毯店", + "zh-HK": "地毯店", + "zh-TW": "地毯店" + } + }, + "shop/catalogue": { + "title": { + "C": "Catalog Shop", + "cs": "katalogový obchod", + "de": "Versandhandel", + "en-GB": "Catalogue Shop", + "en": "Catalog Shop", + "eo": "Ricevejo de aĉetaĵoj (per katalogo)", + "es": "Tienda de catálogo", + "fa": "فروشگاه کاتالوگ", + "fr": "Magasin à catalogue", + "gl": "Tenda de catálogo", + "he": "חנות קטלוגים", + "ja": "カタログショップ", + "ko": "카탈로그 가게", + "mk": "Каталошка продавница", + "nl": "Cataloguswinkel", + "pl": "Catalog Shop", + "pt-BR": "Catálogo de loja", + "pt": "Loja de catálogo", + "sv": "Katalogaffär", + "tr": "Katalog Mağazası", + "uk": "Товари поштою", + "zh-TW": "目錄店" + } + }, + "shop/charity": { + "title": { + "C": "Charity Store", + "ar": "متجر خيري", + "ca": "Botiga de Caritat", + "cs": "Charitativní obchod", + "da": "Velgørenhedsbutik", + "de": "Sozialkaufhaus", + "en-GB": "Charity Shop", + "en": "Charity Store", + "eo": "Almoza vendejo", + "es": "Tienda de caridad", + "et": "Heategevuslik kauplus", + "fa": "فروشگاه خیریه", + "fi": "Hyväntekeväisyyskauppa", + "fr": "Magasin d'organisme caritatif", + "gl": "Tenda solidaria", + "he": "חנות צדקה", + "hu": "Adománybolt", + "is": "Góðgerðaverslun", + "it": "Mercatino dell'usato", + "ja": "チャリティーショップ", + "ko": "자선 쇼핑몰", + "mk": "Добротворна продавница", + "nl": "Winkel van goed doel", + "pl": "Sklep charytatywny", + "pt-BR": "Loja de Caridade", + "pt": "Loja solidária", + "ro": "Magazin de Caritate", + "ru": "Благотворительный магазин", + "sv": "Second hand-butik", + "tr": "Yardım Mağazası", + "uk": "Доброчинна крамниця", + "vi": "Tiệm Từ thiện", + "zh-CN": "慈善机构店", + "zh-HK": "慈善商店", + "zh-TW": "慈善商店" + } + }, + "shop/cheese": { + "title": { + "C": "Cheese Store", + "ar": "متجر أجبان", + "ast": "Quesería", + "ca": "Botiga de formatge", + "cs": "Prodejna sýrů", + "da": "Ostehandler", + "de": "Käseladen", + "el": "Τυροπωλείο", + "en-AU": "Cheese Shop", + "en-GB": "Cheese Shop", + "en": "Cheese Store", + "eo": "Fromaĝa vendejo", + "es": "Tienda de quesos", + "et": "Juustupood", + "fa": "پنیر فروشی", + "fi": "Juustopuoti", + "fr": "Fromager", + "gl": "Queixaría", + "he": "חנות גבינות", + "hr": "Prodavaonica sira", + "hu": "Sajtbolt", + "id": "Toko Keju", + "is": "Ostabúð", + "it": "Negozio di formaggi", + "ja": "チーズ店", + "ko": "치즈 가게", + "lt": "Sūrių parduotuvė", + "lv": "Siera veikals", + "mk": "Сирењарница", + "nl": "Kaaswinkel", + "no": "Ostebutikk", + "pl": "Sklep z serami", + "pt-BR": "Loja de Queijos", + "pt": "Loja de queijos", + "ro": "Magazin de Brânzeturi", + "ru": "Магазин сыров", + "sk": "Obchod so syrmi", + "sl": "Trgovina s siri", + "sr": "Продавница сирева", + "sv": "Ostaffär", + "tr": "Peynirci", + "uk": "Магазин сиру", + "vi": "Tiệm Pho mát", + "zh-CN": "奶酪店", + "zh-HK": "芝士店", + "zh-TW": "起士店" + } + }, + "shop/chemist": { + "title": { + "C": "Drugstore", + "ar": "متجر أدوات تجميل مستحضرات نظافة", + "ast": "Droguería", + "bg": "Дрогерия", + "ca": "Farmàcia", + "cs": "Drogerie", + "da": "Materialist", + "de": "Drogerie", + "el": "Φαρμακείο", + "en-AU": "Pharmacy", + "en-GB": "Chemist", + "en": "Drugstore", + "eo": "Kosmetikaĵa (ankaŭ purigaĵoj) vendejo", + "es": "Tienda de artículos de limpieza y cosméticos", + "et": "Kodukeemia kauplus", + "fa": "لوازم آرایشی بهداشتی", + "fi": "Apteekki-luontaistuotemyymälä", + "fr": "Parapharmacie", + "gl": "Drogaría", + "he": "בית מרקחת", + "hr": "Drogerija", + "hu": "Drogéria", + "is": "Hreinlætisvöruverslun", + "it": "Drogheria", + "ja": "ドラッグストア・化粧品・薬品店(薬剤師がいない店)", + "ko": "드러그스토어", + "lt": "Vaistinė", + "lv": "Aptieka", + "mk": "Аптека", + "nl": "Drogisterij", + "no": "Apotek", + "pl": "Drogeria", + "pt-BR": "Loja de Cosméticos e Higiene", + "pt": "Drogaria", + "ro": "Drogărie", + "ru": "Бытовая химия", + "sk": "Drogéria", + "sl": "Lekarna", + "sv": "Kemiaffär (hygien, kosmetika & städ)", + "ta": "மருந்தகம்", + "tr": "İlaç Dükkanı", + "uk": "Аптека", + "vi": "Tiệm Dược phẩm", + "zh-CN": "药妆店", + "zh-HK": "藥店", + "zh-TW": "藥妝店" + } + }, + "shop/chocolate": { + "title": { + "C": "Chocolate Store", + "ar": "متجر شوكولاتة", + "ast": "Chocolatería", + "ca": "Botiga de xocolata", + "cs": "Prodejna čokolády", + "da": "Chokoladeforretning", + "de": "Schokoladenladen", + "el": "Κατάστημα Ειδών Σοκολάτας", + "en-AU": "Chocolate Shop", + "en-GB": "Chocolate Shop", + "en": "Chocolate Store", + "eo": "Ĉokolada vendejo", + "es": "Chocolatería", + "et": "Šokolaadikauplus", + "fa": "فروشگاه شکلات", + "fi": "Suklaapuoti", + "fr": "Chocolatier", + "gl": "Chocolataría", + "he": "חנות שוקולד", + "hr": "Prodavaonica čokolade", + "hu": "Csokoládébolt", + "id": "Toko Cokelat", + "is": "Súkkulaðibúð", + "it": "Cioccolateria", + "ja": "チョコレート店", + "ko": "초콜릿 가게", + "lt": "Šokolado parduotuvė", + "lv": "Šokolādes veikals", + "mk": "Продавница за чоколади", + "ms": "Kedai Coklat", + "nl": "Chocoladewinkel", + "no": "Sjokoladebutikk", + "pl": "Sklep z czekoladą", + "pt-BR": "Loja de Chocolates", + "pt": "Loja de chocolates", + "ro": "Magazin de Ciocolată", + "ru": "Магазин шоколада", + "sk": "Obchod s čokoládou", + "sl": "Trgovina s čokolado", + "sr": "Продавница чоколаде", + "sv": "Chokladaffär", + "tr": "Çikolata Dükkanı", + "uk": "Магазин шоколаду", + "vi": "Tiệm Sô-cô-la", + "zh-CN": "巧克力店", + "zh-HK": "朱古力店", + "zh-TW": "巧克力店" + } + }, + "shop/clothes": { + "title": { + "C": "Clothing Store", + "af": "Klere Winkel", + "ar": "محل ملابس", + "ast": "Tienda de ropa", + "bg": "Магазин за дрехи", + "bn": "জামাকাপড়ের দোকান", + "bs": "Prodavnica odjeće", + "ca": "Botiga de roba", + "cs": "Oblečení", + "da": "Tøjbutik", + "de": "Bekleidungsgeschäft", + "el": "Κατάστημα Ένδυσης", + "en-GB": "Clothing Shop", + "en": "Clothing Store", + "eo": "Vesta vendejo", + "es": "Tienda de ropa", + "et": "Riidepood", + "fa": "فروشگاه لباس", + "fi": "Vaatekauppa", + "fr": "Magasin de vêtements", + "gl": "Tenda de roupa", + "he": "חנות בגדים", + "hr": "Prodavaonica odjeće", + "hu": "Ruházati bolt", + "id": "Toko Baju", + "is": "Fataverslun", + "it": "Negozio di abbigliamento", + "ja": "衣料品店", + "ko": "옷 가게", + "lt": "Drabužių parduotuvė", + "lv": "Apģērba veikals", + "mk": "Продавница за облека", + "ms": "Kedai Pakaian", + "nl": "Kledingzaak", + "no": "Klesbutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Roupas", + "pt": "Loja de roupa", + "ro": "Magazin de Haine", + "ru": "Магазин одежды", + "sk": "Obchod s odevami", + "sl": "Trgovina z oblekami", + "sq": "Dyqan Veshjesh", + "sr": "Продавница одеће", + "sv": "Klädaffär", + "ta": "ஜவுளிக் கடை", + "tr": "Giyim Mağazası", + "uk": "Одяг", + "vi": "Tiệm Quần áo", + "yue": "衫舖", + "zh-CN": "服装店", + "zh-HK": "服飾店", + "zh-TW": "服飾店", + "zh": "服装店" + } + }, + "shop/coffee": { + "title": { + "C": "Coffee Store", + "ar": "متجر القهوة", + "ast": "Venta de café", + "ca": "Botiga de cafè", + "cs": "Obchod kávou", + "da": "Kaffebutik", + "de": "Kaffeegeschäft", + "el": "Καφεκοπτείο", + "en-GB": "Coffee Shop (Retail)", + "en": "Coffee Store", + "eo": "Kafa vendejo", + "es": "Tienda de café", + "et": "Kohvipood", + "fa": "فروشگاه قهوه", + "fi": "Kahvikauppa", + "fr": "Boutique de vente de cafés", + "gl": "Tenda de café", + "he": "חנות קפה", + "hr": "Prodavaonica za kavu", + "hu": "Kávébolt", + "is": "Kaffibúð", + "it": "Negozio di caffè", + "ja": "コーヒー豆販売店", + "ko": "커피 가게", + "lt": "Kavos parduotuvė", + "lv": "Kafijas veikals", + "mk": "Продавница за кафе", + "nl": "Koffiewinkel", + "no": "Kaffebutikk", + "pl": "Sklep z kawą", + "pt-BR": "Loja de Cafés", + "pt": "Loja de café", + "ro": "Magazin de Cafea", + "ru": "Магазин кофе", + "sk": "Kaviareň", + "sl": "Trgovina s kavo", + "sr": "Продавница кафе", + "sv": "Kaffeaffär", + "tr": "Kahveci", + "uk": "Крамниця кави", + "vi": "Tiệm Bột Cà phê", + "zh-CN": "咖啡豆/粉店", + "zh-HK": "咖啡店", + "zh-TW": "咖啡店" + } + }, + "shop/collector": { + "title": { + "C": "Collectibles Shop", + "cs": "Sběratel", + "de": "Sammlergeschäft", + "en": "Collectibles Shop", + "eo": "Kolektaĵa vendejo", + "es": "Tienda de coleccionables", + "gl": "Tenda de colecionismo", + "he": "חנות אספנים", + "it": "Negozio di articoli da collezione", + "ja": "コレクター店", + "ko": "수집품 가게", + "mk": "Колекционерска продавница", + "nl": "Winkel voor verzamelobjecten", + "pl": "Sklep kolekcjonerski", + "pt-BR": "Loja de artigos para colecionadores", + "pt": "Loja de colecionismo", + "sr": "Продавница колекционарства", + "sv": "Affär med samlarobjekt", + "tr": "Koleksiyon Mağazası", + "uk": "Магазин предметів колекціювання", + "vi": "Tiệm Đồ sưu tập", + "zh-TW": "收藏品商店" + } + }, + "shop/computer": { + "title": { + "C": "Computer Store", + "af": "Rekenaarwinkel", + "ar": "محل حاسوب", + "ast": "Informática", + "bg": "Компютърен магазин", + "bn": "কম্পিউটারের দোকান", + "bs": "Prodavnica računara", + "ca": "Botiga d'informàtica", + "cs": "Počítače", + "da": "Computerforhandler", + "de": "Computerfachhandel", + "el": "Κατάστημα Υπολογιστών", + "en-GB": "Computer Shop", + "en": "Computer Store", + "eo": "Komputila vendejo", + "es": "Tienda de informática", + "et": "Arvutipood", + "fa": "فروشگاه کامپیوتر", + "fi": "Tietokoneliike", + "fr": "Magasin d'informatique", + "gl": "Tenda de informática", + "he": "חנות מחשבים", + "hr": "Prodavaonica računala", + "hu": "Számítógépbolt", + "id": "Toko Komputer", + "is": "Tölvuverslun", + "it": "Negozio di informatica", + "ja": "コンピューター店", + "kn": "ಗಣಕಯಂತ್ರದ ಅಂಗಡಿ", + "ko": "컴퓨터 가게", + "lt": "Kompiuterių parduotuvė", + "lv": "Datorveikals", + "mk": "Продавница за сметачи", + "ms": "Kedai Komputer", + "nl": "Computerwinkel", + "no": "Databutikk", + "pl": "Sklep komputerowy", + "pt-BR": "Loja de Informática", + "pt": "Loja de informática", + "ro": "Magazin de Calculatoare", + "ru": "Компьютерный магазин", + "sk": "Obchod s výpočtovou technikou", + "sl": "Računalniška trgovina", + "sr": "Продавница рачунара", + "sv": "Datorbutik", + "ta": "கணினி விற்பனையகம்", + "tr": "Bilgisayar Mağazası", + "uk": "Комп’ютери", + "vi": "Tiệm Máy tính", + "yue": "電腦舖", + "zh-CN": "电脑店", + "zh-HK": "電腦店", + "zh-TW": "電腦店", + "zh": "电脑店" + } + }, + "shop/confectionery": { + "title": { + "C": "Candy Store", + "ar": "متجر سكاكر", + "ast": "Venta de llambionaes", + "ca": "Botiga de llaminadures", + "cs": "Cukrovinky", + "da": "Slikbutik", + "de": "Süßwarenladen", + "el": "Ζαχαροπλαστείο", + "en-GB": "Sweet Shop", + "en": "Candy Store", + "eo": "Sukeraĵa vendejo", + "es": "Tienda de dulces", + "et": "Kommipood", + "fa": "فروشگاه آب‌نبات", + "fi": "Karkkipuoti", + "fr": "Confiserie", + "gl": "Tenda de larpeiradas", + "he": "חנות ממתקים", + "hr": "Prodavaonica slatkiša", + "hu": "Édességbolt", + "id": "Toko Permen", + "is": "Nammibúð", + "it": "Negozio di dolciumi", + "ja": "菓子屋(販売)", + "ko": "사탕 가게", + "lt": "Saldainių parduotuvė", + "lv": "Saldumu veikals", + "mk": "Бонбониера", + "nl": "Snoepwinkel", + "no": "Godtebutikk", + "pl": "Sklep ze słodyczami", + "pt-BR": "Doceria", + "pt": "Doçaria", + "ro": "Magazin de Dulciuri", + "ru": "Кондитерская", + "sk": "Obchod so sladkosťami", + "sl": "Trgovina s slaščicami", + "sr": "Бомбонџиница", + "sv": "Godisaffär", + "tr": "Şeker Mağazası", + "uk": "Кондитерська", + "vi": "Tiệm Kẹo", + "zh-CN": "糖果店", + "zh-HK": "糖果店", + "zh-TW": "糖果店" + } + }, + "shop/convenience": { + "title": { + "C": "Convenience Store", + "af": "Geriefswinkel", + "ar": "بقالة", + "ast": "Tienda d'ultramarinos", + "bg": "Магазин за хранителни стоки", + "bs": "Bakalnica", + "ca": "Botiga d'ultramarins", + "cs": "Smíšené zboží", + "da": "Minimarked", + "de": "Minimarkt", + "el": "Παντοπωλείο", + "en-GB": "Convenience Store", + "en": "Convenience Store", + "eo": "Butiko oportuna", + "es": "Tienda multiservicio", + "et": "Toidupood", + "fa": "سوپرمارکت / فروشگاه کوچک", + "fi": "Lähikauppa", + "fr": "Épicerie / Supérette", + "gl": "Tenda de ultramarinos", + "he": "חנות נוחות", + "hr": "Trgovina mješovitom robom", + "hu": "Kis élelmiszerbolt", + "id": "Toko Kelontong", + "is": "Kjörbúð", + "it": "Minimarket", + "ja": "コンビニエンスストア", + "ko": "편의점", + "lt": "Savitarnos parduotuvė", + "lv": "Veikals", + "mk": "Бакалница", + "ms": "Kedai Kecil", + "nl": "Gemakswinkel", + "no": "Nærbutikk", + "pl": "Sklep ogólnospożywczy", + "pt-BR": "Loja de Conveniência", + "pt": "Minimercado / loja de conveniência", + "ro": "Magazin Universal", + "ru": "Магазин у дома", + "sk": "Samoobsluha", + "sl": "Minimarket", + "sr": "Бакалница", + "sv": "Närbutik", + "tr": "Market", + "uk": "Міні-маркет", + "vi": "Tiệm Tiện lợi", + "yue": "便利店", + "zh-CN": "便利店", + "zh-HK": "便利店", + "zh-TW": "便利商店", + "zh": "便利店" + } + }, + "shop/copyshop": { + "title": { + "C": "Copy Store", + "ar": "متجر نسخ وتصوير", + "ast": "Copistería", + "ca": "Copisteria", + "cs": "Kopírování", + "da": "Fotokopishop", + "de": "Kopierladen", + "el": "Κατάστημα Φωτοτυπιών", + "en-GB": "Copyshop", + "en": "Copy Store", + "eo": "Fotokopiilejo", + "es": "Centro de copiado", + "et": "Koopiateenuse kauplus", + "fa": "چاپ و تکثیر", + "fi": "Kopiointiliike", + "fr": "Photocopie et impression", + "gl": "Copistaría", + "he": "חנות העתקות", + "hr": "Fotokopiraona", + "hu": "Fénymásoló", + "id": "Tempat Fotokopi", + "is": "Ljósritunarstofa", + "it": "Copisteria", + "ja": "コピー店", + "ko": "복사집", + "lt": "Kopijavimo parduotuvė", + "lv": "Printēšanas veikals", + "mk": "Копирница", + "nl": "Copyshop", + "no": "Printsjappe", + "pl": "Punkt ksero i druku", + "pt-BR": "Copiadora", + "pt": "Loja de fotocópias", + "ro": "Atelier de Copiere", + "ru": "Магазин копирования, печати", + "sk": "Fotokopírovanie", + "sl": "Fotokopirnica", + "sq": "Fotokopje", + "sr": "Копирница", + "sv": "Tryckeri", + "tr": "Kırtasiye", + "uk": "Копіювальні послуги", + "vi": "Tiệm Sao chép", + "zh-CN": "打印店", + "zh-HK": "影印店", + "zh-TW": "影印店" + } + }, + "shop/cosmetics": { + "title": { + "C": "Cosmetics Store", + "ar": "متجر مستحضرات التجميل", + "ast": "Perfumería", + "ca": "Botiga de cosmètics", + "cs": "Obchod s kosmetikou", + "da": "Kosmetikbutik", + "de": "Kosmetikladen", + "el": "Κατάστημα καλλυντικών", + "en-GB": "Cosmetics Shop", + "en": "Cosmetics Store", + "eo": "Kosmetikaĵa (persona higieno) vendejo", + "es": "Tienda de cosméticos", + "et": "Kosmeetikapood", + "fa": "فروشگاه آرایشی و بهداشتی", + "fi": "Kosmetiikkamyymälä", + "fr": "Magasin de cosmétiques", + "gl": "Tenda de cosméticos", + "he": "חנות קוסמטיקה", + "hr": "Prodavaonica kozmetike", + "hu": "Kozmetikai bolt", + "id": "Toko Kosmetik", + "is": "Snyrtivöruverslun", + "it": "Negozio di cosmetici", + "ja": "化粧品店", + "ko": "화장품 가게", + "lt": "Kosmetikos parduotuvė", + "lv": "Kosmētikas veikals", + "mk": "Продавница за козметика", + "nl": "Cosmeticawinkel", + "no": "Parfymeri", + "pl": "Sklep z kosmetykami", + "pt-BR": "Loja de Cosméticos", + "pt": "Loja de cosmética", + "ro": "osmetic", + "ru": "Магазин косметики", + "sk": "Obchod s kozmetikou", + "sl": "Kozmetična trgovina", + "sr": "Продавница козметике", + "sv": "Sminkaffär", + "tr": "Kozmetik Mağazası", + "uk": "Магазин косметики", + "vi": "Tiệm Mỹ phẩm", + "zh-CN": "化妆品店", + "zh-HK": "化妝品店", + "zh-TW": "化妝品店" + } + }, + "shop/country_store": { + "title": { + "C": "Country Store", + "cs": "venkovský obchod", + "de": "Ländlicher Laden", + "el": "Είδη Εξοχής", + "en": "Country Store", + "eo": "Ĝenerala vendejo", + "es": "Tienda de campo", + "fr": "Magasin de campagne", + "gl": "Tenda do agro ou campo", + "he": "חנות למטיילים", + "ja": "よろずや", + "mk": "Селска продавница", + "nl": "Outdoorzaak", + "no": "Landhandel", + "pl": "Country Store", + "pt-BR": "Loja Country", + "pt": "Loja para proprietários rurais", + "sv": "Lanthandel", + "tr": "Köy Mağazası", + "uk": "Сільмаг", + "vi": "Tiệm Nông thôn", + "zh-TW": "鄉村商店" + } + }, + "shop/craft": { + "title": { + "C": "Arts & Crafts Store", + "ar": "متجر الفنون والحرف", + "cs": "Obchod s řemeslnými výrobky", + "de": "Geschäft für Künstlerbedarf", + "en": "Arts & Crafts Store", + "eo": "Vendejo de materialoj por metio", + "es": "Tienda de artesanías", + "fa": "فروشگاه هنر و صنایع دستی", + "fi": "Käsityöliike", + "fr": "Magasin d'arts et loisirs créatifs", + "gl": "Tenda de artes e oficios", + "he": "חנות חפצי אומנות", + "it": "Negozio di arti e mestieri", + "ja": "美術・工芸用品店", + "ko": "미술 & 공예 가게", + "mk": "Продавница за уметнички ракотворби", + "nl": "Winkel voor schilder- en tekengereedschap", + "no": "Kunst & Håndverksbutikk", + "pl": "Sklep z artykułami dla artystów", + "pt-BR": "Loja de artesanato", + "pt": "Loja de acessórios para artes manuais", + "sv": "Konst- & hantverksbutik", + "tr": "El Sanatları Mağazası", + "uk": "Мистецтво та ремесла", + "vi": "Tiệm Bán đồ Thủ công", + "zh-TW": "手工藝品店" + } + }, + "shop/curtain": { + "title": { + "C": "Curtain Store", + "ar": "محل بيع الستائر", + "ast": "Tienda de cortines", + "ca": "Botiga de cortines", + "cs": "Obchod se závěsy", + "da": "Gardinbutik", + "de": "Vorhanggeschäft", + "el": "Είδη Κουρτίνας", + "en-GB": "Curtain Shop", + "en": "Curtain Store", + "eo": "Kurtena vendejo", + "es": "Tienda de cortinas", + "et": "Kardinakauplus", + "fa": "پرده فروشی", + "fi": "Verhomyymälä", + "fr": "Magasin de rideaux", + "gl": "Tenda de cortinas", + "he": "חנות וילונות", + "hr": "Trgovina za zastore", + "hu": "Függönybolt", + "id": "Toko Gorden", + "is": "Gluggatjaldaverslun", + "it": "Negozio di tende", + "ja": "カーテン店", + "ko": "커튼 가게", + "lt": "Užuolaidų parduotuvė", + "lv": "Aizkaru veikals", + "mk": "Продавница за завеси", + "nl": "Gordijnenwinkel", + "no": "Gardinbutikk", + "pl": "Sklep z zasłonami", + "pt-BR": "Loja de Cortinas", + "pt": "Loja de cortinas", + "ro": "Magazin de Perdele", + "ru": "Магазин штор и драпировок", + "sk": "Obchod so záclonami", + "sl": "Trgovina z zavesami", + "sr": "Продавница завеса", + "sv": "Gardinaffär", + "tr": "Perde Mağazası", + "uk": "Магазин занавісок", + "vi": "Tiệm Màn cửa", + "zh-CN": "窗帘店", + "zh-HK": "窗簾店", + "zh-TW": "窗廉店" + } + }, + "shop/dairy": { + "title": { + "C": "Dairy Store", + "ar": "متجر الألبان", + "ast": "Llechería", + "ca": "Botiga de productes làctics", + "cs": "Mléčné výrobky", + "da": "Ismejeri", + "de": "Milchgeschäft", + "el": "Γαλακτοπωλείο", + "en-GB": "Dairy Shop", + "en": "Dairy Store", + "eo": "Laktaĵa vendejo", + "es": "Tienda de lácteos", + "et": "Piimapood", + "fa": "فروشگاه لبنی", + "fi": "Maitotuotemyymälä", + "fr": "Crèmerie", + "gl": "Tenda de produtos frescos", + "he": "חנות מוצרי חלב", + "hr": "Prodavaonica mliječnih proizvoda", + "hu": "Tejtermékbolt", + "id": "Toko Susu", + "is": "Mjólkurbúð", + "it": "Negozio di latticini", + "ja": "乳製品店", + "ko": "유제품 가게", + "lt": "Pieno produktų parduotuvė", + "lv": "Piena veikals", + "mk": "Бакалница", + "nl": "Zuivelhandel", + "no": "Ferskvarebutikk", + "pl": "Sklep z nabiałem", + "pt-BR": "Loja de Laticínios", + "pt": "Loja de laticínios", + "ro": "Magazin de Lactate", + "ru": "Магазин молочных продуктов", + "sk": "Obchod s mliečnymi výrobkami", + "sl": "Mlekarna", + "sr": "Продавница млечних производа", + "sv": "Mejeriaffär", + "tr": "Süt Mağazası", + "uk": "Молочний магазин", + "vi": "Tiệm Sữa", + "zh-CN": "牛奶店", + "zh-HK": "奶製品店", + "zh-TW": "奶製品店" + } + }, + "shop/deli": { + "title": { + "C": "Deli", + "af": "Deli", + "ar": "محل أطعمة لذيذة", + "ast": "Gourmet", + "bg": "Магазин за деликатеси", + "bs": "Delikatese", + "ca": "Botiga de comestibles", + "cs": "Lahůdkářství", + "da": "Deli", + "de": "Feinkostladen", + "el": "Ντελικατέσεν", + "en-GB": "Deli", + "en": "Deli", + "eo": "Delikataĵa vendejo", + "es": "Delicatessen", + "et": "Delikatessikauplus", + "fa": "حاضری فروشی", + "fi": "Deli", + "fr": "Épicerie de luxe", + "gl": "Delicatessen", + "he": "מעדניה", + "hr": "Prodavaonica delikatesa", + "hu": "Csemegebolt", + "is": "Deli", + "it": "Gastronomia", + "ja": "惣菜屋", + "ko": "델리", + "lt": "Gastronomas", + "lv": "Delikateses", + "mk": "Продавница за деликатеси", + "nl": "Delicatessenwinkel", + "no": "Delikatessebutikk", + "pl": "Ekskluzywne delikatesy", + "pt-BR": "Delicatessen", + "pt": "Loja gourmet", + "ru": "Магазин деликатесов", + "sk": "Delikatesy", + "sl": "Delikatesa", + "sr": "Деликатеси", + "sv": "Delikatessaffär", + "tr": "Şarküteri", + "uk": "Делікатеси/Вишукана їжа", + "vi": "Tiệm Deli", + "yue": "美食舖", + "zh-CN": "熟食店", + "zh-HK": "食肆", + "zh-TW": "美食店", + "zh": "熟食店" + } + }, + "shop/department_store": { + "title": { + "C": "Department Store", + "af": "Afdelingswinkel", + "ar": "محل متعدد الأقسام", + "ast": "Grandes almacenes", + "bg": "Универсален магазин", + "bn": "ডিপার্টমেন্ট স্টোর", + "bs": "Robna kuća", + "ca": "Grans magatzems", + "cs": "Obchodní dům", + "da": "Stormagasin", + "de": "Kaufhaus", + "el": "Πολυκατάστημα", + "en-GB": "Department Store", + "en": "Department Store", + "eo": "Ĉiovendejo", + "es": "Grandes almacenes / Tienda departamental", + "et": "Kaubamaja", + "fa": "فروشگاه چندمنظوره", + "fi": "Tavaratalo", + "fr": "Grand magasin", + "gl": "Grandes almacéns", + "he": "חנות כלבו", + "hr": "Robna kuća", + "hu": "Nagyáruház", + "id": "Pasar Swalayan", + "is": "Stórverslun", + "it": "Grande magazzino", + "ja": "百貨店", + "kn": "ಕಿರಾಣಿ ಅಂಗಡಿ", + "ko": "백화점", + "lt": "Universalinė parduotuvė", + "lv": "Lielveikals", + "mk": "Стоковна куќа", + "nl": "Warenhuis", + "no": "Supermarked", + "pl": "Dom towarowy", + "pt-BR": "Loja de Departamentos", + "pt": "Grande armazém", + "ro": "Magazin Universal", + "ru": "Универсальный магазин (с отделами)", + "sk": "Obchodný dom", + "sl": "Veleblagovnica", + "sr": "Робна кућа", + "sv": "Varuhus", + "tr": "Mağaza", + "uk": "Універмаг", + "vi": "Tiệm Bách hóa", + "yue": "百貨公司", + "zh-CN": "百货商场", + "zh-HK": "百貨公司", + "zh-TW": "百貨公司", + "zh": "百货店" + } + }, + "shop/doityourself": { + "title": { + "C": "DIY Store", + "af": "Selfdoenwinkel", + "ar": "محل افعلها بنفسك", + "ast": "Bricolage", + "bg": "Магазин \"Направи си сам\"", + "bn": "নিজে করুন স্টোর", + "bs": "Sve za kuću", + "ca": "Botiga de bricolatge", + "cs": "Obchod pro kutily", + "da": "Byggemarked", + "de": "Heimwerkerladen", + "el": "Κατάστημα ιδιοκατασκευών", + "en-GB": "DIY Shop", + "en": "DIY Store", + "eo": "Memfaradila vendejo", + "es": "Tienda de bricolaje / Hágalo usted mismo", + "et": "Ehituskauplus", + "fa": "فروشگاه DIY", + "fi": "Askartelukauppa", + "fr": "Magasin de bricolage", + "gl": "Tenda de bricolaxe", + "he": "חנות עשה זאת בעצמך", + "hr": "Uradi sam", + "hu": "Barkácsáruház", + "id": "Toko Swakriya", + "is": "Handlaginna verslun", + "it": "Negozio di fai-da-te", + "ja": "ホームセンター", + "ko": "DIY 가게", + "lt": "Pasidaryk pats parduotuvė", + "mk": "Продавница за мајсторисување", + "ms": "Kedai DIY", + "nl": "Bouwmarkt, doe-het-zelfwinkel", + "no": "Byggevarehus", + "pl": "Market budowlany / sklep dla majsterkowiczów", + "pt-BR": "Loja de Ferragens/Bricolagem", + "pt": "Loja de bricolagem", + "ro": "Magazin DIY", + "ru": "Строительный магазин", + "sk": "Obchod pre kutilov", + "sl": "Orodjarna", + "sr": "Продавница све за кућу", + "sv": "Byggmarknad", + "tr": "Malzeme Mağazası", + "uk": "Зроби сам", + "vi": "Tiệm Vật liệu Xây dựng", + "yue": "自組舖", + "zh-CN": "DIY店", + "zh-HK": "DIY店", + "zh-TW": "DIY商店", + "zh": "DIY商店" + } + }, + "shop/doors": { + "title": { + "C": "Door Shop", + "cs": "prodejna dveří", + "da": "Dørforhandler", + "de": "Türgeschäft", + "en": "Door Shop", + "eo": "Vendejo de pordoj", + "es": "Tienda de puertas (aberturas)", + "fa": "فروشگاه درب", + "fi": "Oviliike", + "fr": "Magasin de portes", + "gl": "Tenda de portas", + "he": "חנות דלתות", + "it": "Negozio di porte", + "ja": "ドア販売店", + "ko": "문 가게", + "mk": "Продавница за врати", + "nl": "Deurenwinkem", + "no": "Dør Butikk", + "pl": "Sklep z drzwiami", + "pt-BR": "Loja de portas", + "pt": "Loja de portas", + "ru": "Магазин дверей", + "sr": "Продавница врата", + "sv": "Affär med dörrar", + "tr": "Kapı Dükkanı", + "uk": "Магазин дверей", + "vi": "Tiệm Cửa", + "zh-TW": "門店" + } + }, + "shop/dry_cleaning": { + "title": { + "C": "Dry Cleaner", + "ar": "تنظيف جاف", + "ast": "Llimpieza en seco", + "ca": "Bugaderia", + "cs": "Čistírna", + "da": "Renseri", + "de": "Chemische Reinigung", + "el": "Στεγνοκαθαριστήριο", + "en-GB": "Dry Cleaner", + "en": "Dry Cleaner", + "eo": "Vest-lavejo (nepolara solvilo)", + "es": "Tintorería", + "et": "Keemiline puhastus", + "fa": "خشکشویی", + "fi": "Kuivapesula", + "fr": "Pressing", + "gl": "Tinturaría", + "he": "ניקוי יבש", + "hr": "Kemijska čistionica", + "hu": "Vegytisztitó", + "id": "Jasa Cuci Kering", + "is": "Þurrhreinsun", + "it": "Lavanderia", + "ja": "クリーニング店", + "ko": "드라이클리닝", + "lv": "Ķīmiskā tīrītava", + "mk": "Хемиско чистење", + "ms": "Kedai Cucian Kering", + "nl": "Stomerij", + "no": "Renseri", + "pl": "Pralnia chemiczna", + "pt-BR": "Lavanderia a seco", + "pt": "Limpeza a seco", + "ro": "Uscător", + "ru": "Химчистка", + "sk": "Čistiareň odevov", + "sl": "Čistilnica", + "sq": "Pastrim Kimik", + "sr": "Хемијско чишћење", + "sv": "Kemtvätt", + "tr": "Kuru Temizleme Mağazası", + "uk": "Хімчистка", + "vi": "Tiệm Giặt khô", + "zh-CN": "干洗店", + "zh-HK": "乾洗店", + "zh-TW": "乾洗店" + } + }, + "shop/e-cigarette": { + "title": { + "C": "E-Cigarette Shop", + "ar": "متجر سجائر إلكترونية", + "ca": "Botiga de cigars electrònics", + "cs": "Obchod s e-cigaretami", + "da": "E-cigaretbutik", + "de": "E-Zigarettengeschäft", + "el": "Κατάστημα Ηλεκτρονικού Τσιγάρου", + "en-GB": "E-Cigarette Shop", + "en": "E-Cigarette Shop", + "eo": "Elektronik-cigareda vendejo", + "es": "Tienda de cigarrillo electrónico", + "et": "E-sigaretipood", + "fa": "فروشگاه سیگار الکترونیکی", + "fi": "Sähkösavukemyymälä", + "fr": "Magasin de cigarettes électroniques", + "gl": "Tenda de cigarros electrónicos", + "he": "חנות מוצרי עישון", + "hu": "E-cigaretta bolt", + "is": "Rafrettubúð", + "it": "Negozio di sigarette elettroniche", + "ja": "電子タバコ店", + "ko": "전자 담배 가게", + "lt": "El. cigarečių parduotuvė", + "lv": "E-Cigarešu veikals", + "mk": "Продавница за е-цигари", + "ms": "Kedai Rokok Elektronik", + "nl": "E-sigarettenwinkel", + "pl": "Sklep z e-papierosami", + "pt-BR": "Loja de cigarro eletrônico", + "pt": "Loja de cigarros eletrónicos", + "ro": "Magazin de Țigarete Electrice", + "ru": "Магазин электронных сигарет", + "sk": "Obchod s elektronickými cigaretami", + "sr": "Продавница електронских цигарета", + "sv": "Affär för elektroniska cigaretter", + "tr": "Elektronik Sigara Mağazası", + "uk": "Магазин Е-цигарок", + "vi": "Tiệm Thuốc lá Điện tử", + "zh-CN": "电子烟店", + "zh-HK": "電子煙店", + "zh-TW": "電子菸商店" + } + }, + "shop/electrical": { + "title": { + "C": "Electrical Equipment Store", + "cs": "prodejna elektoniky", + "de": "Elektrofachgeschaft", + "el": "Κατάστημα Ηλεκτρολογικού Εξοπλισμού", + "en": "Electrical Equipment Store", + "eo": "Elektraĵa vendejo", + "es": "Tienda de equipos eléctricos", + "et": "Elektrikauba pood", + "fa": "فروشگاه کالای برق", + "fi": "Sähkötarvikekauppa", + "fr": "Magasin d'équipements électriques", + "gl": "Tenda de material de electrónica", + "he": "חנות מוצרי חשמל", + "it": "Negozio di materiale elettrico", + "ja": "電気店", + "ko": "전기 기구 가게", + "mk": "Продавница за електрика", + "nl": "Winkel voor elektriciteitsbenodigdheden", + "no": "Elektrisk utstyrsbutikk", + "pl": "Sklep elektryczny", + "pt-BR": "Loja de equipamentos elétricos", + "pt": "Loja de material elétrico", + "ru": "Магазин электротоваров", + "sr": "Продавница беле технике", + "sv": "Affär med elutrustning", + "tr": "Elektrikli Ekipman Mağazası", + "uk": "Магазин електротехнічного обладнання", + "zh-TW": "電氣材料行" + } + }, + "shop/electronics": { + "title": { + "C": "Electronics Store", + "af": "Elektronikawinkel", + "ar": "محل إلكترونيات", + "ast": "Electrónica", + "bg": "Магазин за електроника", + "bn": "ইলেকট্রনিক্স-এর দোকান", + "bs": "Prodavnica elektronike", + "ca": "Botiga d'electrònica", + "cs": "Elektro", + "da": "Elektronikbutik", + "de": "Elektronikfachgeschäft", + "el": "Κατάστημα Ηλεκτρονικών", + "en-GB": "Electronics Shop", + "en": "Electronics Store", + "eo": "Elektronika vendejo", + "es": "Tienda de electrónica y electrodomésticos", + "et": "Elektroonikapood", + "fa": "فروشگاه لوازم برقی", + "fi": "Elektroniikkamyymälä", + "fr": "Magasin d'électronique et d'électroménager", + "gl": "Tenda de electrodomésticos", + "he": "חנות אלקטרוניקה", + "hr": "Prodavaonica elektronike", + "hu": "Elektronikai bolt", + "id": "Toko Elektronik", + "is": "Rafeindatækjaverslun", + "it": "Negozio di elettronica", + "ja": "家電販売店(小型製品)", + "ko": "전자 제품 가게", + "lt": "Elektronikos parduotuvė", + "lv": "Elektronikas veikals", + "mk": "Продавница за електронска роба", + "ms": "Kedai Elektronik", + "nl": "Huishoudtoestellen-/Witgoedwinkel", + "no": "Elektronikkbutikk", + "pl": "Sklep z elektroniką/RTV/AGD", + "pt-BR": "Loja de Eletrônicos", + "pt": "Loja de eletrodomésticos", + "ro": "Magazin de Electronice", + "ru": "Магазин бытовой электроники", + "sk": "Elektro obchod", + "sl": "Elektronska trgovina", + "sr": "Продавница електронике", + "sv": "Elektronikbutik", + "tr": "Elektronik Mağazası", + "uk": "Електроніка", + "vi": "Tiệm Điện tử", + "yue": "電器舖", + "zh-CN": "电器店", + "zh-HK": "電子舖", + "zh-TW": "電器店", + "zh": "电器店" + } + }, + "shop/erotic": { + "title": { + "C": "Erotic Store", + "ast": "Artículos eróticos", + "ca": "Botiga d'articles eròtics", + "cs": "Sex shop", + "da": "Erotikbutik", + "de": "Erotikgeschäft", + "el": "Μαγαζί ερωτικών ειδών", + "en-GB": "Erotic Shop", + "en": "Erotic Store", + "eo": "Seksumila vendejo", + "es": "Tienda erótica", + "et": "Erootikapood", + "fa": "فروشگاه لوازم بزرگسالان", + "fi": "Erotiikkamyymälä", + "fr": "Sex-shop", + "gl": "Tenda erótica", + "he": "חנות ארוטיקה", + "hr": "Prodavaonica erotskih pomagala", + "hu": "Szexbolt", + "is": "Hjálpartæki ástarlífsins", + "it": "Negozio erotico", + "ja": "アダルトショップ", + "ko": "성인용품 가게", + "lt": "Erotikos parduotuvė", + "lv": "Erotiskais veikals", + "mk": "Еротска продавница", + "nl": "Seksshop", + "no": "Erotikkbutikk", + "pl": "Sex shop", + "pt-BR": "Sex Shop", + "pt": "Sex shop", + "ro": "Magazin Erotic", + "ru": "Секс-шоп", + "sk": "Ochod s erotickými potrebami", + "sl": "Erotična trgovina", + "sr": "Продавница еротике", + "sv": "Sexshop", + "tr": "Erotik Ürünler Mağazası", + "uk": "Секс-шоп", + "vi": "Tiệm Bán đồ Khiêu dâm", + "zh-CN": "情趣用品店", + "zh-HK": "情趣用品店", + "zh-TW": "情趣用品店" + } + }, + "shop/fabric": { + "title": { + "C": "Fabric Store", + "ar": "محل بيع الأقمشة", + "ca": "Botiga de teles", + "cs": "Obchod s textilem", + "da": "Stofforretning", + "de": "Stoffgeschäft", + "el": "Πωλήσεις Υφασμάτων", + "en-GB": "Fabric Shop", + "en": "Fabric Store", + "eo": "Teksaĵa vendejo", + "es": "Tienda textil", + "et": "Kangakauplus", + "fa": "پارچه فروشی", + "fi": "Rakennusliike", + "fr": "Magasin de tissus", + "gl": "Tenda de teas", + "he": "חנות אריגה", + "hr": "Trgovina za tkanine", + "hu": "Rövidáru- és méterárubolt", + "id": "Toko Kain", + "is": "Álnavöruverslun", + "it": "Negozio di tessuti", + "ja": "生地屋", + "ko": "직물 가게", + "lt": "Audinių parduotuvė", + "lv": "Audumu veikals", + "mk": "Продавница за ткаенини", + "ms": "Kedai Fabrik", + "nl": "Stofwinkel", + "no": "Stoffbutikk", + "pl": "Sklep z tkaninami", + "pt-BR": "Loja de Tecidos", + "pt": "Loja de tecidos", + "ro": "Magazin de Materiale", + "ru": "Магазин тканей", + "sk": "Obchod s látkami", + "sl": "Trgovina z metrskim blagom", + "sr": "Продавница текстила", + "sv": "Tygaffär", + "tr": "Kumaş Mağazası", + "uk": "Магазин тканин", + "vi": "Tiệm Vải", + "zh-CN": "布店", + "zh-HK": "布料店", + "zh-TW": "帆布店" + } + }, + "shop/farm": { + "title": { + "C": "Produce Stand", + "af": "Padstal", + "ar": "المنتج", + "bg": "Щанд за плодове и зеленчуци", + "bs": "Štand proizvodnje", + "ca": "Estand productiu", + "cs": "Stánek s ovocem, zeleninou", + "da": "Gårdbutik", + "de": "Hofladen", + "el": "Πάγκος Παραγωγής", + "en-GB": "Farm Shop", + "en": "Produce Stand", + "eo": "Terfrukta vendotablo", + "es": "Tienda de productos agrícolas", + "et": "Talukaup", + "fa": "غرفه میوه و سبزی باغ", + "fi": "Maatilan suoramyynti", + "fr": "Magasin de producteurs", + "gl": "Tenda de produtos agrícolas", + "he": "דוכן ירקות", + "hr": "Prodavaonica proizvoda farme", + "hu": "Termelői bolt", + "is": "Vörubás", + "it": "Banchetto Alimentari Freschi", + "ja": "農産物直売所", + "ko": "산지 직매", + "lt": "Produktų stendas", + "mk": "Пилјарска тезга", + "nl": "Groente- en fruitkraam", + "no": "Gårdsutsalg", + "pl": "Stragan świeżych produktów", + "pt-BR": "Quitanda de Produção Local", + "pt": "Loja de produtos agrícolas locais", + "ru": "Магазин свежих продуктов", + "sk": "Voľný predaj ovocia", + "sl": "Prodaja domačih pridelkov", + "sr": "Производни штанд", + "sv": "Gårdsbutik", + "tr": "Manav", + "uk": "Стелаж з фермерськими товарами", + "vi": "Quầy Nông sản", + "yue": "檔", + "zh-CN": "农产直销店", + "zh-HK": "農產品檔攤", + "zh-TW": "產地直銷店" + } + }, + "shop/fashion_accessories": { + "title": { + "C": "Fashion Accessories Store", + "cs": "prodejna módních doplňků", + "de": "Geschäft für Modeaccessoires", + "el": "Κατάστημα για Αξεσουάρ Μόδας", + "en": "Fashion Accessories Store", + "eo": "Galanteria (vestaj akcesoraĵoj) vendejo", + "es": "Tienda de accesorios de moda", + "fi": "Muotitarvikekauppa", + "fr": "Boutique d'accessoires de mode", + "gl": "Tenda de accesorios de moda", + "he": "חנות אביזרי אופנה", + "hu": "Divat kiegészítők boltja", + "it": "Negozio di accessori di moda", + "ja": "ファッション小物店", + "ko": "패션 액세서리 가게", + "mk": "Продавница за модни додатоци", + "nl": "Modeaccessoirewinkel", + "pl": "Sklep z galanterią", + "pt-BR": "Loja de acessórios de moda", + "pt": "Loja de acessórios de moda", + "ru": "Магазин модных аксессуаров", + "sv": "Affär för modeaccessoarer", + "tr": "Moda Aksesuarları Mağazası", + "uk": "Магазин модних аксесуарів", + "zh-TW": "服裝配飾商店" + } + }, + "shop/fireplace": { + "title": { + "C": "Fireplace Store", + "cs": "prodej krbů a kamen", + "de": "Kachelofenladen", + "el": "Είδη Τζακιού", + "en": "Fireplace Store", + "eo": "Kamen-vendejo", + "es": "Tienda de chimenea", + "et": "Küttekollete pood", + "fa": "فروشگاه شومینه ، بخاری", + "fi": "Takkamyymälä", + "fr": "Magasin de cheminées", + "gl": "Tenda de chemineas", + "he": "חנות חימום", + "it": "Negozio di caminetti", + "ja": "暖房具店", + "ko": "벽난로 가게", + "mk": "Продавница за камини", + "nl": "Haardwinkel", + "no": "Peisbutikk", + "pl": "Sklep z kominkami", + "pt-BR": "Loja de Lareiras", + "pt": "Loja de lareiras", + "sv": "Kaminbutik", + "tr": "Şömine Mağazası", + "uk": "Печі, каміни", + "vi": "Tiệm Lò sưởi", + "zh-TW": "壁爐商店" + } + }, + "shop/fishing": { + "title": { + "C": "Fishing Shop", + "cs": "Rybářské potřeby", + "de": "Angelgeschäft", + "el": "Είδη Αλιείας", + "en": "Fishing Shop", + "eo": "Fiŝkaptil-vendejo", + "es": "Tienda de pesca", + "et": "Kalastustarvete pood", + "fa": "فروشگاه لوازم ماهی گیری", + "fi": "Kalastuskauppa", + "fr": "Magasin de pêche", + "gl": "Tenda de pesca", + "he": "חנות דיג", + "hr": "Prodavaonica ribolovne opreme", + "hu": "Horgászbolt", + "it": "Negozio di pesca", + "ja": "釣具店", + "ko": "낚시 가게", + "mk": "Риболовна продавница", + "nl": "Hengelsportwinkel", + "no": "Fiskebutikk", + "pl": "Sklep wędkarski", + "pt-BR": "Loja de pesca", + "pt": "Loja de artigos de pesca", + "ru": "Рыболовный магазин", + "sk": "Rybárske potreby", + "sr": "Продавница рибе", + "sv": "Fiskeaffär", + "tr": "Balıkçılık Mağazası", + "uk": "Рибальський магазин", + "vi": "Tiệm Cần câu", + "zh-CN": "钓鱼店", + "zh-TW": "釣魚用品店" + } + }, + "shop/flooring": { + "title": { + "C": "Flooring Supply Shop", + "cs": "podlahové krytiny", + "de": "Fußbodengeschäft", + "en": "Flooring Supply Shop", + "eo": "Plank-vendejo", + "es": "Tienda de suministros para pisos", + "fa": "فروشگاه لوازم جانبی کفپوش", + "gl": "Tenda de chans", + "he": "חנות ריצוף", + "it": "Negozio di articoli per pavimentazioni", + "ja": "床用品店", + "ko": "바닥재 가게", + "mk": "Продавница за подови", + "nl": "Vloerwinkel", + "pl": "Sklep z posadzkami", + "pt-BR": "Loja de materiais para pisos", + "pt": "Loja de material de pavimentação", + "sv": "Affär för golv", + "tr": "Döşeme Malzemeleri Mağazası", + "uk": "Магазин напільних матеріалів", + "zh-TW": "地板商店" + } + }, + "shop/florist": { + "title": { + "C": "Florist", + "af": "Bloemiste", + "ar": "محل بيع الورود", + "ast": "Floristería", + "bg": "Магазин за цветя", + "bn": "ফুল ব্যবসায়ী", + "bs": "Cvjećar", + "ca": "Floristeria", + "cs": "Květinářství", + "da": "Blomsterbutik", + "de": "Blumenhändler", + "el": "Ανθοπωλείο", + "en-GB": "Florist", + "en": "Florist", + "eo": "Florvendejo", + "es": "Floristería", + "et": "Lillepood", + "fa": "گل فروشی", + "fi": "Kukkakauppa", + "fr": "Fleuriste", + "gl": "Floraría", + "he": "חנות פרחים", + "hr": "Cvjećarna", + "hu": "Virágárus", + "id": "Toko Bunga", + "is": "Blómabúð", + "it": "Fioraio", + "ja": "生花店", + "kn": "ಹೂವಿನ ವ್ಯಾಪಾರಿ", + "ko": "꽃 가게", + "lt": "Gėlės", + "lv": "Florists", + "mk": "Цвеќарница", + "ms": "Kedai Bunga", + "nl": "Bloemenwinkel", + "no": "Blomsterbutikk", + "pl": "Kwiaciarnia", + "pt-BR": "Floricultura", + "pt": "Florista", + "ro": "Florărie", + "ru": "Цветочный магазин", + "sk": "Kvetinárstvo", + "sl": "Cvetličarna", + "sr": "Цвећар", + "sv": "Florist", + "ta": "பூக்கடை", + "tr": "Çiçekçi", + "uk": "Квіти", + "vi": "Tiệm Hoa", + "yue": "花舖", + "zh-CN": "花店", + "zh-HK": "花店", + "zh-TW": "花店", + "zh": "花店" + } + }, + "shop/frame": { + "title": { + "C": "Framing Shop", + "ast": "Marcos", + "ca": "Botiga de marcs", + "cs": "Rámařství", + "da": "Rammebutik", + "de": "Bilderrahmengeschäft", + "en-GB": "Framing Shop", + "en": "Framing Shop", + "eo": "Bild-kadra vendejo", + "es": "Tienda de enmarcación", + "et": "Raamikauplus", + "fa": "قاب سازی", + "fi": "Kehystämö", + "fr": "Magasin d'encadrements", + "gl": "Tenda de enmarcado", + "he": "חנות חקלאות", + "hr": "Trgovina za okvire", + "hu": "Képkeretező", + "id": "Toko Bingkai", + "is": "Innrömmun", + "it": "Negozio di cornici", + "ja": "額縁店", + "ko": "액자 가게", + "lt": "Įrėminimo parduotuvė", + "mk": "Врамувачница", + "nl": "Kaderwinkel", + "no": "Innrammingsbutikk", + "pl": "Sklep z ramami", + "pt-BR": "Loja de Molduras", + "pt": "Loja de molduras", + "ru": "Магазин рамок для фотографий и картин", + "sk": "Obchod s rámami", + "sr": "Стаклар", + "sv": "Ramaffär", + "tr": "Çerçeve Mağazası", + "uk": "Багетна майстерня", + "vi": "Tiệm Khung Tranh", + "zh-CN": "相框店", + "zh-HK": "表框店", + "zh-TW": "表框店" + } + }, + "shop/frozen_food": { + "title": { + "C": "Frozen Food Store", + "cs": "prodejna mražených potravin", + "de": "Geschäft für Tiefkühlprodukte", + "en": "Frozen Food Store", + "eo": "Frostigit-manĝaĵa vendejo", + "es": "Tienda de alimentos congelados", + "fr": "Magasin de produits surgelés", + "gl": "Tenda de conxelados", + "he": "חנות מזון קפוא", + "it": "Negozio di cibo surgelato", + "ja": "冷凍食品店", + "ko": "냉동식품 가게", + "mk": "Продавница за замрзната храна", + "nl": "Winkel voor bevroren voedsel", + "pl": "Sklep z mrożonkami", + "pt-BR": "Loja de alimentos congelados", + "pt": "Loja de comida congelada", + "ru": "Магазин замороженных продуктов", + "sk": "Obchod s mrazenými potravinami", + "sr": "Продавница смрзнуте хране", + "sv": "Affär för fryst mat", + "tr": "Donmuş Yiyecek Mağazası", + "uk": "Заморожені продукти", + "vi": "Tiệm Thực phẩm Đông lạnh", + "zh-CN": "冷冻食品店", + "zh-TW": "冷凍食品商店" + } + }, + "shop/fuel": { + "title": { + "C": "Fuel Shop", + "cs": "Obchod s palivem", + "de": "Tankstelle", + "el": "Κατάστημα Καυσίμων", + "en": "Fuel Shop", + "eo": "Brulaĵ-vendejo", + "es": "Tienda de combustible", + "et": "Küttepood", + "fa": "فروشگاه سوخت", + "fi": "Polttoainemyymälä", + "fr": "Revendeur de carburant", + "gl": "Tenda de combustíbel", + "he": "חנות נוחות", + "hu": "Üzemanyagot árusító bolt", + "it": "Negozio di carburanti", + "ja": "燃料店", + "ko": "연료 가게", + "mk": "Продавница за гориво", + "nl": "Tankstation", + "no": "Drivstoffbuttikk", + "pl": "Sklep z paliwami", + "pt-BR": "Loja de Combustível", + "pt": "Loja de combustíveis", + "sv": "Bränsleaffär", + "tr": "Akaryakıt İstasyonu", + "uk": "Паливо", + "vi": "Tiệm Nhiên liệu", + "zh-CN": "燃料店", + "zh-TW": "燃料店" + } + }, + "shop/funeral_directors": { + "title": { + "C": "Funeral Home", + "ar": "بيت الدفن", + "ast": "Velatoriu", + "ca": "Tanatori", + "cs": "Pohřební služba", + "da": "Bedemandsforretning", + "de": "Beerdigungsinstitut", + "el": "Γραφείο Τελετών", + "en-GB": "Funeral Home", + "en": "Funeral Home", + "eo": "Tombistejo", + "es": "Funeraria", + "et": "Matusebüroo", + "fa": "غسالخانه", + "fi": "Hautaustoimisto", + "fr": "Funérarium", + "gl": "Funeraria", + "he": "קברן", + "hr": "Pogrebno poduzeće", + "hu": "Temetkezési iroda", + "id": "Rumah Pemakaman", + "is": "Útfararheimili", + "it": "Casa funeraria", + "ja": "葬儀社", + "kn": "ಶವಸಂಸ್ಕಾರದ ನೆಲೆ", + "ko": "장례식장", + "lt": "Laidojimo namai", + "lv": "Apbedīšanas birojs", + "mk": "Погребално друштво", + "nl": "Begrafenisondernemer", + "no": "Begravelsesagent", + "pl": "Zakład pogrzebowy", + "pt-BR": "Funerária", + "pt": "Agência funerária", + "ro": "Casă Funerală", + "ru": "Бюро похоронных услуг", + "sk": "Pohrebný ústav", + "sl": "Pogrebne storitve", + "sr": "Продавница загробне опреме", + "sv": "Begravningsbyrå", + "tr": "Cenaze Koordinatörü", + "uk": "Ритуальні послуги", + "vi": "Nhà quàn", + "yue": "殯儀館", + "zh-CN": "殡仪馆", + "zh-HK": "殯儀館", + "zh-TW": "生命禮儀公司" + } + }, + "shop/furniture": { + "title": { + "C": "Furniture Store", + "af": "Meubelwinkel", + "ar": "محل أثاث", + "ast": "Mueblería", + "bg": "Мебелен магазин", + "bn": "আসবাবপত্রের দোকান", + "bs": "Salon namještaja", + "ca": "Botiga de mobles", + "cs": "Nábytek", + "da": "Møbelforhandler", + "de": "Möbelhaus", + "el": "Κατάστημα Επίπλων", + "en-GB": "Furniture Shop", + "en": "Furniture Store", + "eo": "Mebla vendejo", + "es": "Mueblería", + "et": "Mööblipood", + "fa": "فروشگاه مبلمان", + "fi": "Huonekaluliike", + "fr": "Magasin de meubles", + "gl": "Moblaría", + "he": "חנות רהיטים", + "hr": "Salon namještaja", + "hu": "Bútorbolt", + "id": "Toko Furnitur", + "is": "Húsgagnaverslun", + "it": "Negozio di mobili", + "ja": "家具店", + "kn": "ಪಿಟೋಪಕರಣಗಳ ಅಂಗಡಿ", + "ko": "가구점", + "lt": "Baldų parduotuvė", + "lv": "Mēbeļu veikals", + "mk": "Салон за мебел", + "nl": "Meubelzaak", + "no": "Møbelforhandler", + "pl": "Sklep meblowy", + "pt-BR": "Loja de Móveis", + "pt": "Loja de mobiliário", + "ro": "Magazin de Mobilă", + "ru": "Мебельный магазин", + "sk": "Obchod s nábytkom", + "sl": "Trgovina s pohištvom", + "sr": "Продавница намештаја", + "sv": "Möbelaffär", + "tr": "Mobilya Mağazası", + "uk": "Меблі", + "vi": "Cửa hàng Nội thất", + "yue": "傢俬舖", + "zh-CN": "家具店", + "zh-HK": "傢俬店", + "zh-TW": "傢具店", + "zh": "家具店" + } + }, + "shop/games": { + "title": { + "C": "Tabletop Game Store", + "cs": "deskové hry", + "de": "Brettspielgeschäft", + "en": "Tabletop Game Store", + "eo": "Tabullud‑vendejo", + "es": "Tienda de juegos de mesa", + "fi": "Lautapeliliike", + "fr": "Magasin de jeux de plateau", + "gl": "Tenda de xogos de mesa", + "he": "חנות משחקי קופסה", + "hu": "Asztali játékok boltja", + "it": "Negozio di giochi da tavolo", + "ja": "ボードゲーム販売店", + "ko": "보드게임 가게", + "mk": "Продавница за столни игри", + "nl": "Bordspellenwinkel", + "no": "Bordspill Butikk", + "pl": "Sklep z grami", + "pt-BR": "Loja de jogos de mesa", + "pt": "Loja de jogos de tabuleiro", + "ru": "Магазин настольных игр", + "sk": "Obchod so stolovými hrami", + "sr": "Продавница друштвених игара", + "sv": "Affär för brädspel", + "tr": "Masa Oyunları Mağazası", + "uk": "Настільні ігри", + "zh-TW": "桌遊店" + } + }, + "shop/garden_centre": { + "title": { + "C": "Garden Center", + "af": "Tuinsentrum", + "ar": "مشتل", + "ast": "Xardinería", + "bg": "Градински център", + "bs": "Centar za baštovanstvo", + "ca": "Centre de jardineria", + "cs": "Zahradnictví", + "da": "Havecenter", + "de": "Gartenzentrum", + "el": "Κέντρο Κήπου", + "en-AU": "Garden Centre", + "en-GB": "Garden Centre", + "en": "Garden Center", + "eo": "Ĝarden-vendejo", + "es": "Centro de jardinería / Vivero", + "et": "Aianduskeskus", + "fa": "مرکز خرید گل و گلدان", + "fi": "Puutarhamyymälä", + "fr": "Magasin spécialiste du jardin", + "gl": "Centro de xardinaría", + "he": "חנות גננות", + "hr": "Vrtni centar", + "hu": "Kertészet", + "id": "Toko Tanaman", + "is": "Garðaverslun", + "it": "Vivaio", + "ja": "園芸用品店", + "ko": "원예 용품점", + "lt": "Sodo centras", + "lv": "Dārzkopības veikals", + "mk": "Градинарски центар", + "nl": "Tuincentrum", + "no": "Gartneri", + "pl": "Centrum ogrodnicze", + "pt-BR": "Centro de Jardinagem", + "pt": "Loja de jardinagem", + "ro": "Magazin de Grădinărit", + "ru": "Садовые принадлежности", + "sk": "Záhradné centrum", + "sl": "Vrtni center", + "sr": "Баштенски центар", + "sv": "Trädgårdscenter", + "tr": "Bahçe Düzenleme Mağazası", + "uk": "Садово-парковий центр", + "vi": "Trung tâm Làm vườn", + "yue": "園藝舖", + "zh-CN": "园艺品店", + "zh-HK": "園藝中心", + "zh-TW": "園藝中心", + "zh": "花店" + } + }, + "shop/gas": { + "title": { + "C": "Bottled Gas Shop", + "ast": "Gas embotelláu", + "cs": "Obchod s lahvovým plynem", + "da": "Gasflaskebutik", + "de": "Gasflaschenverkauf", + "el": "Κατάστημα Εμφιαλωμένων Αερίων", + "en-GB": "Bottled Gas Shop", + "en": "Bottled Gas Shop", + "eo": "Gasuja vendejo", + "es": "Tienda de gas embotellado", + "et": "Balloongaasi kauplus", + "fa": "فروشگاه کپسول گاز / پیکنیکی", + "fi": "Kaasupulloliike", + "fr": "Magasin de bouteilles de gaz", + "gl": "Tenda de bombonas de gas", + "he": "חנות גז", + "hu": "Palackozottgáz-bolt", + "is": "Verslun með flöskugas", + "it": "Bombolaio", + "ja": "ガスボンベ店", + "ko": "가스통 가게", + "lv": "Gāzes balonu veikals", + "mk": "Продавница за плински боци", + "nl": "Gasflessenwinkel", + "pl": "Sklep z butlami gazowymi", + "pt-BR": "Distribuidor de Gás", + "pt": "Loja de botijas de gás", + "ru": "Магазин газовых баллонов", + "sl": "Trgovina s plinskimi jeklenkami", + "sv": "Försäljning av gas", + "tr": "Tüpçü", + "uk": "Продаж зрідженого газу", + "vi": "Tiệm Ga", + "zh-CN": "瓶装燃气站", + "zh-HK": "瓶裝石油氣店", + "zh-TW": "瓦斯店" + } + }, + "shop/general": { + "title": { + "C": "General Store", + "cs": "smíšené zboží", + "de": "Gemischtwarenhandlung", + "en": "General Store", + "eo": "Ĝenerala vendejo", + "es": "Tienda general", + "et": "Kauplus", + "fi": "Sekatavarakauppa", + "fr": "Magasin général", + "gl": "Tenda xeral", + "he": "חנות כללית", + "hu": "Vegyesbolt", + "it": "Emporio", + "ja": "よろず屋", + "mk": "Општа продавница", + "nl": "Algemene winkel", + "pl": "Sklep wielobranżowy", + "pt-BR": "Loja geral", + "pt": "Mercearia", + "sv": "Generell affär", + "tr": "Genel Mağaza", + "uk": "Крамниця", + "zh-CN": "杂货店", + "zh-TW": "一般商店" + } + }, + "shop/gift": { + "title": { + "C": "Gift Shop", + "af": "Geskenkwinkel", + "ar": "محل الهدايا", + "ast": "Regalos", + "bg": "Магазин за подаръци", + "bn": "উপহারের দোকান", + "bs": "Prodavnica suvenira", + "ca": "Botiga de regals", + "cs": "Dárky, suvenýry", + "da": "Gavebutik", + "de": "Geschenkeladen", + "el": "Κατάστημα Δώρων", + "en-GB": "Gift Shop", + "en": "Gift Shop", + "eo": "Suvenira vendejo", + "es": "Tienda de regalos", + "et": "Kingipood", + "fa": "فروشگاه لوازم کادویی", + "fi": "Lahjamyymälä", + "fr": "Boutique de cadeaux", + "gl": "Tenda de agasallos", + "he": "חנות מתנות", + "hr": "Suvenirnica", + "hu": "Ajándékbolt", + "id": "Toko Hadiah", + "is": "Gjafavörubúð", + "it": "Negozio souvenir", + "ja": "ギフト店", + "kn": "ಉಡುಗೊರೆಯ ಅಂಗಡಿ", + "ko": "선물 가게", + "lt": "Dovanų parduotuvė", + "lv": "Dāvanu veikals", + "mk": "Продавница за подароци", + "nl": "Cadeauwinkel", + "no": "Gavebutikk", + "pl": "Sklep z pamiątkami", + "pt-BR": "Loja de Presentes", + "pt": "Loja de lembranças", + "ro": "Magazin de Cadouri", + "ru": "Магазин сувениров", + "sk": "Darčekový obchod", + "sl": "Prodajalna daril", + "sr": "Продавница поклона", + "sv": "Presentbutik", + "tr": "Hediyelik Eşya Dükkanı", + "uk": "Подарунки", + "vi": "Tiệm Quà tặng", + "yue": "禮品舖", + "zh-CN": "礼品店", + "zh-HK": "禮品店", + "zh-TW": "禮品店", + "zh": "礼品店" + } + }, + "shop/greengrocer": { + "title": { + "C": "Greengrocer", + "af": "Groentewinkel", + "ar": "بقالة", + "ast": "Frutería", + "bg": "Плод-зеленчук", + "bs": "Zelenara", + "ca": "Fruiteria", + "cs": "Ovoce a zelenina", + "da": "Grønthandler", + "de": "Obst- und Gemüseladen", + "el": "Οπωροπωλείο", + "en-GB": "Greengrocer", + "en": "Greengrocer", + "eo": "Legom-butiko", + "es": "Verdulería / Frutería", + "et": "Aedviljapood", + "fa": "سبزی و میوه فروشی", + "fi": "Kasviskauppa", + "fr": "Marchand de fruits et légumes", + "gl": "Froitaría", + "he": "ירקן", + "hr": "Voćarna", + "hu": "Zöldséges", + "id": "Toko Buah dan Sayuran", + "is": "Grænmetissali", + "it": "Fruttivendolo", + "ja": "八百屋・果物屋", + "ko": "청과상", + "lt": "Daržovių ir vaisių pardavėjas", + "mk": "Пилјарница", + "ms": "Kedai Menjual Sayur", + "nl": "Groenteboer", + "no": "Grønnsakshandler", + "pl": "Warzywniak", + "pt-BR": "Verdureira ou quitanda", + "pt": "Loja de frutas e verduras", + "ru": "Магазин овощей и фруктов", + "sk": "Predajňa zeleniny", + "sl": "Sadje in zelenjava", + "sr": "Пиљар", + "sv": "Grönsakshandlare", + "tr": "Manav", + "uk": "Овочевий", + "vi": "Tiệm Rau quả", + "yue": "菜檔", + "zh-CN": "果蔬店", + "zh-HK": "菜檔", + "zh-TW": "蔬果店", + "zh": "果蔬店" + } + }, + "shop/hairdresser": { + "title": { + "C": "Hairdresser", + "af": "Haarkapper", + "ar": "حلاق", + "ast": "Peluquería", + "bg": "Фризьорски салон", + "bs": "Frizer", + "ca": "Perruqueria", + "cs": "Kadeřnictví", + "da": "Frisør", + "de": "Friseur", + "el": "Κομμωτήριο", + "en-GB": "Hairdresser", + "en": "Hairdresser", + "eo": "Frizejo", + "es": "Peluquería", + "et": "Juuksurisalong", + "fa": "آرایشگاه", + "fi": "Parturi-kampaamo", + "fr": "Salon de coiffure", + "gl": "Perrucaría", + "he": "מעצב שיער", + "hr": "Frizerski salon", + "hu": "Fodrász", + "id": "Salon", + "is": "Hárstofa", + "it": "Parrucchiere", + "ja": "理美容店", + "ko": "미용실", + "lt": "Kirpykla", + "lv": "Frizieris", + "mk": "Фризерски салон", + "nl": "Kapper", + "no": "Frisør", + "pl": "Fryzjer", + "pt-BR": "Cabeleireiro", + "pt": "Cabeleireiro(a)", + "ro": "Frizer", + "ru": "Парикмахерская", + "sk": "Kaderníctvo", + "sl": "Frizer", + "sr": "Фризер", + "sv": "Hårfrisör", + "tr": "Kuaför", + "uk": "Перукарня", + "vi": "Tiệm Làm tóc", + "yue": "飛髮舖", + "zh-CN": "理发店", + "zh-HK": "理髮店", + "zh-TW": "理髮店", + "zh": "理发点" + } + }, + "shop/hairdresser_supply": { + "title": { + "C": "Hairdresser Supply Store", + "ar": "متجر مستلزمات حلاقين", + "cs": "Kadeřnické potřeby", + "de": "Friseurbedarf", + "el": "Εξοπλισμός Κομμωτηρίου", + "en": "Hairdresser Supply Store", + "eo": "Frizist-ilara vendejo", + "es": "Tienda de suministros para peluquería", + "fa": "فروشگاه لوازم سلمانی", + "fi": "Hiustarvikemyymälä", + "fr": "Magasin de matériel de coiffure", + "gl": "Tenda de accesorios de salón de peiteado", + "he": "חנות ציוד לספרים", + "hu": "Fodrászcikk bolt", + "it": "Negozio di prodotti per parrucchiere", + "ja": "理容用品店", + "ko": "미용실 용품 가게", + "mk": "Фризерски набавки", + "nl": "Haarbenodigdhedenwinkel", + "pl": "Sklep z artykułami fryzjerskimi", + "pt-BR": "Loja de suprimentos de cabeleireiro", + "pt": "Loja de acessórios de cabeleireiro", + "sv": "Affär för hårprodukter", + "tr": "Kuaför Malzemeleri Mağazası", + "uk": "Перукарські товари", + "vi": "Tiệm Mỹ phẩm Tóc", + "zh-TW": "剪髮器材店" + } + }, + "shop/hardware": { + "title": { + "C": "Hardware Store", + "af": "Hardewarewinkel", + "ar": "محل أجهزة", + "ast": "Ferretería", + "bg": "Железария", + "bs": "Prodavnica željezarije", + "ca": "Ferreteria", + "cs": "Železářství", + "da": "Håndværkerbutik", + "de": "Eisenwarenhandel", + "dv": "ހާރޑްވެއާރ ފިހާރަ", + "el": "Χρωματοπωλείο", + "en-GB": "Hardware Shop", + "en": "Hardware Store", + "eo": "Laborila vendejo", + "es": "Ferretería", + "et": "Rauakauplus", + "fa": "فروشگاه ابزارآلات و یراق", + "fi": "Rautakauppa", + "fr": "Quincaillerie", + "gl": "Ferraxaría", + "he": "חנות אספקה טכנית", + "hr": "Željezarija", + "hu": "Vas-műszaki bolt", + "id": "Toko Perkakas", + "is": "Byggingavöruverslun", + "it": "Ferramenta", + "ja": "金物屋", + "ko": "철물점", + "lt": "Techninės įrangos parduotuvė", + "lv": "Celtniecības veikals", + "mk": "Продавница за алат и опрема", + "nl": "Bouwmarkt", + "no": "Jernvarehandel", + "pl": "Sklep z narzędziami", + "pt-BR": "Loja de Material de Construção", + "pt": "Loja de ferragens", + "ru": "Хозяйственный магазин", + "sk": "Železiarstvo", + "sl": "Železnina", + "so": "Dukaanka Qalabka", + "sr": "Гвожђара", + "sv": "Järnaffär", + "tr": "Donanım Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Ngũ kim", + "yue": "五金舖", + "zh-CN": "五金店", + "zh-HK": "五金店", + "zh-TW": "五金店", + "zh": "五金店" + } + }, + "shop/health_food": { + "title": { + "C": "Health Food Shop", + "ar": "متجر أغذية صحية", + "cs": "Obchod zdravé výživy", + "de": "Reformhaus", + "el": "Είδη Υγιεινής Διατροφής", + "en-GB": "Health Food Shop", + "en": "Health Food Shop", + "eo": "Sanig-manĝaĵa vendejo", + "es": "Tienda de comida saludable", + "et": "Tervisliku toidu kauplus", + "fa": "فروشگاه غذای سلامت‌زا", + "fi": "Terveysravinnemyymälä", + "fr": "Magasin d'alimentation de santé", + "gl": "Tenda de produtos saudábeis", + "he": "חנות מאכלי בריאות", + "hu": "Egészséges ételek boltja", + "is": "Verslun með heilsuvörur", + "it": "Prodotti per il benessere", + "ja": "健康食品店", + "ko": "건강식품 가게", + "mk": "Продавница за здрава храна", + "nl": "Gezondheidswinkel", + "no": "Helsekostbutikk", + "pl": "Sklep ze zdrową żywnością", + "pt-BR": "Loja de Alimentos Saudáveis", + "pt": "Loja de comida saudável", + "ru": "Магазин здорового питания", + "sk": "Obchod so zdravými potravinami", + "sv": "Hälsokostbutik", + "tr": "Sağlıklı Yiyecek Mağazası", + "uk": "Магазин здорового харчування", + "vi": "Tiệm Thực phẩm Tự nhiên", + "zh-CN": "保健食品店", + "zh-TW": "健康食品店" + } + }, + "shop/hearing_aids": { + "title": { + "C": "Hearing Aids Store", + "ar": "متجر سماعات الأذن الطبية", + "ast": "Audiólogu", + "ca": "Centre d'audició", + "cs": "Obchod s naslouchátky", + "da": "Høreapparatbutik", + "de": "Hörgerätegeschäft", + "el": "Κατάστημα ακουστικών βαρηκοΐας", + "en-GB": "Hearing Aids Shop", + "en": "Hearing Aids Store", + "eo": "Aŭd-helpila vendejo", + "es": "Tienda de audífonos", + "et": "Kuulmisabipood", + "fa": "فروشگاه لوازم کمک شنوایی", + "fi": "Kuuloapumyymälä", + "fr": "Audioprothésiste", + "gl": "Tenda de audífonos", + "he": "חנות מכשירי שמיעה", + "hr": "Prodavaonica slušnih pomagala", + "hu": "Hallókészülékbolt", + "id": "Toko Alat Bantu Dengar", + "is": "Heyrnartækjaverslun", + "it": "Negozio di apparecchi acustici", + "ja": "補聴器店", + "ko": "보청기 가게", + "lt": "Klausos aparatų parduotuvė", + "mk": "Продавница за слушни помагала", + "nl": "Hoorapparatenwinkel", + "no": "Høreapparatutsalg", + "pl": "Sklep z aparatami słuchowymi", + "pt-BR": "Loja de Aparelhos Auditivos", + "pt": "Loja de aparelhos auditivos", + "ru": "Магазин по продаже слуховых аппаратов", + "sk": "Obchod s načúvacími prístrojmi", + "sl": "Trgovina s slušnimi pripomočki", + "sv": "Hörapparater", + "tr": "İşitme Cihazı Mağazası", + "uk": "Слухові апарати", + "vi": "Tiệm Ống nghe", + "zh-CN": "听觉恢复用品店", + "zh-HK": "助聽器店", + "zh-TW": "助聽器店" + } + }, + "shop/herbalist": { + "title": { + "C": "Herbalist", + "ar": "محل بيع الأعشاب الطبية", + "ast": "Herbolariu", + "ca": "Herborista", + "cs": "Bylinkářství", + "da": "Helseforretning", + "de": "Kräuterladen", + "el": "Βοτανολόγος", + "en-GB": "Herbalist", + "en": "Herbalist", + "eo": "Herba vendejo", + "es": "Herbolario", + "et": "Ravimtaimekauplus", + "fa": "عطاری", + "fi": "Luontaistuotemyymälä", + "fr": "Herboristerie", + "gl": "Herboristaría", + "he": "חנות צמחי מרפא", + "hu": "Gyógynövénybolt", + "is": "Grasalæknir", + "it": "Erboristeria", + "ja": "薬草店", + "ko": "약초 가게", + "lt": "Žolininkas", + "mk": "Билна аптека", + "nl": "Herbalist", + "no": "Plantelegemiddelbutikk", + "pl": "Sklep zielarski", + "pt-BR": "Ervanária", + "pt": "Ervanária", + "ru": "Магазин трав и лекарственных растений", + "sk": "Bylinkárstvo", + "sl": "Zeliščarstvo", + "sr": "Травар", + "sv": "Medicinalväxter", + "tr": "Şifalı Bitkiler Mağazası", + "uk": "Ботанік", + "vi": "Tiệm Thuốc Bắc/Nam", + "zh-CN": "草药店", + "zh-HK": "草藥店", + "zh-TW": "草藥店" + } + }, + "shop/hifi": { + "title": { + "C": "Hifi Store", + "af": "Hoëtrouwinkel", + "ar": "محل بيع أجهزة عالية الدقة", + "ast": "Equipos de música", + "bg": "Магазин за аудиотехника", + "bs": "HiFi prodavnica", + "ca": "Botiga d'alta fidelitat", + "cs": "Hifi elektronika", + "da": "Radioforhandler", + "de": "HiFi-Laden", + "el": "Κατάστημα Hifi", + "en-GB": "Hifi Shop", + "en": "Hifi Store", + "eo": "Aldfidela-sona vendejo", + "es": "Tienda de equipos de sonido", + "et": "Hifi kauplus", + "fa": "فروشگاه لوازم صوتی", + "fi": "Hifimyymälä", + "fr": "Magasin de matériel hi-fi", + "gl": "Tenda de equipamento de son", + "he": "חנות הגברה", + "hr": "Prodavaonica audio opreme", + "hu": "HiFi-bolt", + "id": "Toko Hifi", + "is": "Hljómverslun", + "it": "Negozio Hifi", + "ja": "音響機器店", + "ko": "고급 오디오 가게", + "lt": "Hifi parduotuvė", + "mk": "Продавница за аудиоопрема", + "nl": "Hifi-/Bruingoedwinkel", + "no": "Hifi-butikk", + "pl": "Sklep ze sprzętem hi-fi", + "pt-BR": "Loja de Aparelhos Hi-Fi", + "pt": "Loja de alta fidelidade", + "ru": "Магазин по продаже Hi-Fi", + "sk": "Obchod s ozvučením", + "sl": "Trgovina z avdio opremo", + "sr": "Музичка опрема", + "sv": "HiFi-butik", + "tr": "Hoparlör Mağazası", + "uk": "Аудіо апаратура", + "vi": "Tiệm Thiết bị Âm thanh", + "yue": "音響舖", + "zh-CN": "音响店", + "zh-HK": "音響店", + "zh-TW": "音響店", + "zh": "音响店" + } + }, + "shop/hobby": { + "title": { + "C": "Hobby Shop", + "cs": "pro volný čas", + "da": "Hobbybutik", + "de": "Bastelgeschäft", + "en": "Hobby Shop", + "eo": "Hobia vendejo", + "es": "Tienda de pasatiempos", + "fa": "فروشگاه سرگرمی", + "fi": "Harrastuskauppa", + "fr": "Magasin pour hobby (non spécifié)", + "gl": "Tenda de pasatempos", + "he": "חנות תחביבים", + "hu": "Hobbi bolt", + "it": "Negozio di hobbystica", + "ja": "ホビーショップ", + "ko": "취미 가게", + "mk": "Хобистичка продавница", + "nl": "Hobbywinkel", + "no": "Hobby Butikk", + "pl": "Sklep hobbystyczny", + "pt-BR": "Loja de passatempo", + "pt": "Loja de modelismo", + "sv": "Hobbyaffär", + "tr": "Hobi Mağazası", + "uk": "Магазин товарів для хобі", + "zh-TW": "嗜好商店" + } + }, + "shop/household_linen": { + "title": { + "C": "Household Linen Shop", + "cs": "Bytový textil", + "de": "Haushaltswäschegeschäft", + "en": "Household Linen Shop", + "eo": "Tuka vendejo", + "es": "Tienda de ropa de hogar", + "gl": "Tenda de roupa de fogar", + "he": "חנות מצעים", + "it": "Negozio di biancheria per la casa", + "ja": "家庭用布製品店", + "ko": "가정용 직물 가게", + "mk": "Продавница за постелнини", + "nl": "Winkel voor huishoudelijk linnen", + "pl": "Sklep z pościelą/ręcznikami", + "pt-BR": "Loja de roupa de casa", + "pt": "Loja de têxteis para o lar", + "sv": "Affär för hushållstextilier", + "tr": "Ev Tekstili Mağazası", + "uk": "Магазин білизни", + "zh-TW": "家用亞麻布商店" + } + }, + "shop/houseware": { + "title": { + "C": "Houseware Store", + "ar": "متجر الأدوات المنزلية", + "ast": "Menaxe del llar", + "bg": "Домашни потреби", + "ca": "Botiga de la llar", + "cs": "Domácí potřeby", + "da": "Køkkenudstyr", + "de": "Haushaltswarengeschäft", + "el": "Είδη Οικιακής Χρήσης", + "en-GB": "Houseware Store", + "en": "Houseware Store", + "eo": "Mastrum-aparata vendejo", + "es": "Tienda de artículos del hogar", + "et": "Kodutarvete kauplus", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kotitarvikekauppa", + "fr": "Magasin d’articles ménagers", + "gl": "Tenda de artigos do fogar", + "he": "חנות כלי בית", + "hu": "Háztartási bolt", + "is": "Búsáhaldaverslun", + "it": "Casalinghi", + "ja": "家庭用品店", + "ko": "가정용품 가게", + "mk": "Продавница за домот", + "nl": "Huisraadwinkel", + "no": "Isenkrambutikk", + "pl": "Sklep z małymi artykułami gospodarstwa domowego", + "pt-BR": "Loja de Utensílios Domésticos", + "pt": "Loja de artigos para o lar", + "ru": "Магазин товаров для дома", + "sk": "Domáce potreby", + "sr": "Позамантерија", + "sv": "Husgeråd", + "tr": "Ev Eşyaları Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Gia dụng", + "zh-CN": "家居用品店", + "zh-HK": "家庭用品店", + "zh-TW": "家庭用品店" + } + }, + "shop/hunting": { + "title": { + "C": "Hunting Shop", + "cs": "Lovecké potřeby", + "da": "Jagtbutik", + "de": "Jägereigeschäft", + "el": "Είδη Κυνηγιού", + "en": "Hunting Shop", + "eo": "Ĉasil-vendejo", + "es": "Tienda de caza", + "et": "Jahipood", + "fa": "فروشگاه لوازم شکار", + "fi": "Metsästyskauppa", + "fr": "Magasin de chasse", + "gl": "Tenda de caza", + "he": "חנות ציד", + "hu": "Vadászati bolt", + "is": "Veiðibúð", + "it": "Negozio di caccia", + "ja": "狩猟用品店", + "ko": "사냥 용품 가게", + "mk": "Ловечка продавница", + "nl": "Jachtwinkel", + "no": "Jaktbutikk", + "pl": "Sklep myśliwski", + "pt-BR": "Loja de Caça", + "pt": "Loja de artigos de caça", + "ru": "Охотничий магазин", + "sk": "Lovecké potreby", + "sr": "Продавница ловачке опреме", + "sv": "Jaktbutik", + "tr": "Avcılık Mağazası", + "uk": "Мисливський магазин", + "vi": "Tiệm Súng Săn", + "zh-CN": "狩猎店", + "zh-TW": "打獵用品店" + } + }, + "shop/interior_decoration": { + "title": { + "C": "Interior Decoration Store", + "ar": "متجر الديكور الداخلي", + "ast": "Decoración d'interiores", + "ca": "Botiga d'Interiorisme", + "cs": "Obchod s bytovými doplňky", + "da": "Brugskunstbutik", + "de": "Innenausstattungsgeschäft", + "el": "Διακοσμητές Εσωτερικών Χώρων", + "en-GB": "Interior Decoration Shop", + "en": "Interior Decoration Store", + "eo": "Ensembla (meblara) vendejo", + "es": "Tienda de decoración de interiores", + "et": "Sisedekoratsioonikauplus", + "fa": "فروشگاه تزئینات داخلی", + "fi": "Sisustusmyymälä", + "fr": "Magasin de décoration d'intérieur", + "gl": "Tenda de decoración de interiores", + "he": "חנות עיצוב פנים", + "hr": "Trgovina unutarnjeg uređenja", + "hu": "Lakberendezési bolt", + "id": "Toko Dekorasi Interior", + "is": "Innanhúshönnunarverslun", + "it": "Negozio di decorazioni per interni", + "ja": "インテリアショップ", + "ko": "실내장식 가게", + "lt": "Interjero dekoravimo parduotuvė", + "mk": "Продавница за внатрешно уредување", + "nl": "Binnenhuisdecoratiewinkel", + "no": "Interiørbutikk", + "pl": "Sklep z dekoracją wnętrz", + "pt-BR": "Loja de Decoração Interior", + "pt": "Loja de decoração de interiores", + "ro": "Magazin de Decorații Interioare", + "ru": "Магазин предметов интерьера", + "sk": "Obchod s bytovými dekoráciami", + "sr": "Унутрашња декорација", + "sv": "Inredningsaffär", + "tr": "İç Dekorasyon Mağazası", + "uk": "Оформлення інтер’єру", + "vi": "Tiệm Trang trí Nội thất", + "zh-CN": "室内装饰店", + "zh-HK": "室內設計店", + "zh-TW": "室內設計店" + } + }, + "shop/jewelry": { + "title": { + "C": "Jewelry Store", + "ar": "محل مجوهرات", + "cs": "Klenotnictví", + "da": "Guldsmed", + "de": "Juwelier", + "el": "Κοσμηματοπωλείο", + "en": "Jewelry Store", + "eo": "Juvelista vendejo", + "es": "Joyería", + "fa": "جواهرفروشی", + "fi": "Jalokiviliike", + "fr": "Bijouterie", + "gl": "Xoiaría", + "he": "חנות תכשיטים", + "hr": "Prodavaonica nakita", + "hu": "Ékszerüzlet", + "is": "Skartgripaverslun", + "it": "Negozio di gioielli", + "ja": "宝飾店", + "ko": "귀금속 가게", + "mk": "Златарница", + "nl": "Juwelierszaak", + "no": "Gullsmed", + "pl": "Sklep jubilerski", + "pt-BR": "Joalheria", + "pt": "Ouriversaria", + "ru": "Ювелирный магазин", + "sk": "Klenotníctvo", + "sr": "Продавница накита", + "sv": "Juvelerare", + "tr": "Kuyumcu", + "uk": "Ювелірні прикраси", + "vi": "Tiệm Kim hoàn", + "zh-CN": "珠宝店", + "zh-TW": "珠寶店" + } + }, + "shop/kiosk": { + "title": { + "C": "Kiosk", + "ar": "كشك", + "ast": "Quioscu", + "ca": "Quiosc", + "cs": "Kiosek", + "da": "Kiosk", + "de": "Kiosk", + "el": "Περίπτερο", + "en": "Kiosk", + "eo": "Gazetbudo", + "es": "Quiosco", + "fa": "دکه", + "fi": "Kioski", + "fr": "Kiosque", + "gl": "Quiosco", + "he": "קיוסק", + "hr": "Kiosk", + "hu": "Trafik", + "is": "Blaðastandur", + "it": "Chiosco", + "ja": "キオスク", + "ko": "가판대", + "lt": "Kioskas", + "lv": "Kiosks", + "mk": "Киоск", + "nl": "Winkelkiosk", + "no": "Kiosk", + "pl": "Kiosk", + "pt-BR": "Quiosque (comercial)", + "pt": "Quiosque", + "ru": "Магазин в виде киоска", + "sk": "Stánok", + "sl": "Kiosk", + "sq": "Kioskë", + "sr": "Киоск", + "sv": "Kiosk", + "tr": "Büfe", + "uk": "Кіоск", + "vi": "Gian hàng", + "zh-CN": "售货亭", + "zh-TW": "販賣亭" + } + }, + "shop/kitchen": { + "title": { + "C": "Kitchen Design Store", + "ar": "متجر تصميم مطابخ", + "ast": "Diseñu de cocines", + "ca": "Botiga de disseny de cuines", + "cs": "Kuchyňské studio", + "da": "Køkkenforhandler", + "de": "Küchenfachmarkt", + "el": "Διακόσμηση Κουζίνας", + "en-GB": "Kitchen Design Shop", + "en": "Kitchen Design Store", + "eo": "Kuirej-mebla vendejo", + "es": "Tienda de diseño de cocinas", + "et": "Köögimööblikauplus", + "fa": "فروشگاه تزئینات آشپزخانه", + "fi": "Keittiöliike", + "fr": "Cuisiniste", + "gl": "Tenda de deseño de cociñas", + "he": "חנות עיצוב המטבח", + "hr": "Trgovina kuhinjskog namještaja", + "hu": "Konyhabútorbolt", + "id": "Toko Desain Interior Dapur", + "is": "Eldhúshönnunarverslun", + "it": "Negozio di cucine", + "ja": "キッチンデザイン店", + "ko": "주방 디자인 가게", + "lt": "Virtuvės dizaino parduotuvė", + "lv": "Virtuves dizaina veikals", + "mk": "Кујни и елементи", + "nl": "Keukenontwerpwinkel", + "no": "Kjøkkenbutikk", + "pl": "Sklep z wyposażeniem i meblami kuchennymi", + "pt-BR": "Loja de Cozinhas", + "pt": "Loja de cozinhas", + "ro": "Magazin de Bucătărie", + "ru": "Магазин кухонь", + "sk": "Kuchynské štúdio", + "sq": "Dyqan për Aredim të Kuzhinës", + "sr": "Кухињски дизајн", + "sv": "Köksinredning", + "tr": "Mutfak Eşyaları Mağazası", + "uk": "Меблі для кухні", + "vi": "Tiệm Thiết kế Phòng bếp", + "zh-CN": "厨房用品店", + "zh-HK": "廚房設計店", + "zh-TW": "廚房設計行" + } + }, + "shop/laundry": { + "title": { + "C": "Laundry", + "af": "Wassery", + "ar": "محل غسيل ملابس", + "ast": "Llavandería", + "bg": "Пералня", + "bs": "Praonica", + "ca": "Bugaderia", + "cs": "Prádelna", + "da": "Vaskeri", + "de": "Wäscherei", + "el": "Καθαριστήριο", + "en-GB": "Laundry", + "en": "Laundry", + "eo": "Vest-lavejo (akvo)", + "es": "Lavandería", + "et": "Pesumaja", + "fa": "رخت‌شوی‌خانه", + "fi": "Pesula", + "fr": "Laverie", + "gl": "Lavandaría", + "he": "כביסה", + "hr": "Praonica rublja", + "hu": "Mosoda", + "id": "Penatu", + "is": "Þvottur", + "it": "Lavanderia", + "ja": "洗濯屋・ランドリー(非セルフ)", + "kn": "ಧೋಬಿಖಾನೆ", + "ko": "세탁소", + "lt": "Skalbykla", + "lv": "Veļas mazgātuve", + "mk": "Перачница", + "nl": "Wasserette", + "no": "Vaskeri", + "pl": "Pralnia", + "pt-BR": "Lavanderia", + "pt": "Lavandaria", + "ro": "Spălătorie", + "ru": "Прачечная", + "sk": "Čistiareň", + "sl": "Pralnica", + "sq": "Lavanderi", + "sr": "Перионица", + "sv": "Tvättinrättning", + "ta": "சலவையகம்", + "tr": "Çamaşır Yıkama", + "uk": "Пральня", + "vi": "Tiệm Máy giặt", + "yue": "洗衣舖", + "zh-CN": "洗衣店", + "zh-HK": "洗衣店", + "zh-TW": "洗衣店", + "zh": "洗衣店" + } + }, + "shop/leather": { + "title": { + "C": "Leather Store", + "ar": "متجر المنتجات الجلدية", + "ast": "Artículos de piel", + "ca": "Botiga de cuirs", + "cs": "Kožené zboží", + "da": "Læderbutik", + "de": "Lederwarengeschäft", + "el": "Κατάστημα με Δερμάτινα", + "en-GB": "Leather Shop", + "en": "Leather Store", + "eo": "Ledaĵa vendejo", + "es": "Talabartería", + "et": "Nahakauplus", + "fa": "فروشگاه چرم", + "fi": "Nahkaliike", + "fr": "Maroquinier", + "gl": "Tenda de peles", + "he": "חנות עור", + "hr": "Trgovina kožnom galanterijom", + "hu": "Bőrdíszműbolt", + "id": "Toko Kulit", + "is": "Leðurvöruverslun", + "it": "Pelletteria", + "ja": "皮革用品店", + "ko": "가죽 가게", + "lt": "Odos dirbinių parduotuvė", + "lv": "Ādas veikals", + "mk": "Кожна галантерија", + "nl": "Lederwinkel", + "no": "Skinnbutikk", + "pl": "Sklep z odzieżą skórzaną", + "pt-BR": "Loja de Couros", + "pt": "Loja de couro", + "ru": "Магазин кожаных изделий", + "sk": "Obchod s kožennými výrobkami", + "sl": "Usnjarna", + "sr": "Продавница коже", + "sv": "Läderaffär", + "ta": "தோல் கடை", + "tr": "Deri Dükkanı", + "uk": "Шкіргалантерея", + "vi": "Tiệm Đồ Da", + "zh-CN": "皮具店", + "zh-HK": "皮革店", + "zh-TW": "皮革店" + } + }, + "shop/lighting": { + "title": { + "C": "Lighting Store", + "cs": "prodejna osvětlení", + "de": "Leuchten- und Lampengeschäft", + "el": "Κατάστημα Λάμπας", + "en": "Lighting Store", + "eo": "Prilumigad‑aparata vendejo", + "es": "Tienda de iluminación", + "fi": "Valaisinkauppa", + "fr": "Magasin de lampes", + "gl": "Tenda de iluminación", + "he": "חנות תאורה", + "hu": "Világítási eszközök", + "it": "Negozio di illuminazione", + "ja": "照明器具店", + "ko": "조명 가게", + "mk": "Продавница за расветни тела", + "nl": "Verlichtingswinkel", + "pl": "Sklep z oświetleniem", + "pt-BR": "Loja de iluminação", + "pt": "Loja de iluminação", + "ru": "Магазин светильников", + "sk": "Svietidlá", + "sr": "Продавница осветљења", + "sv": "Belysningsbutik", + "tr": "Aydınlatma Mağazası", + "uk": "Магазин освітлення", + "vi": "Tiệm Đèn sáng", + "zh-CN": "灯饰店", + "zh-TW": "燈具店" + } + }, + "shop/locksmith": { + "title": { + "C": "Locksmith", + "ar": "محل أقفال", + "ast": "Cerraxería", + "bs": "Bravar", + "ca": "Copisteria de claus", + "cs": "Zámečnictví", + "da": "Låsesmed", + "de": "Schlüsseldienst", + "el": "Κλειδαράς", + "en-GB": "Locksmith", + "en": "Locksmith", + "eo": "Laborejo de seruristo", + "es": "Cerrajería", + "et": "Lukksepp", + "fa": "قفل سازی", + "fi": "Lukkoliike", + "fr": "Serrurier", + "gl": "Cerralleiro", + "he": "מנעולן", + "hr": "Bravar", + "hu": "Lakatos", + "id": "Ahli Kunci", + "is": "Lásasmiður", + "it": "Fabbro", + "ja": "鍵屋(専門店)", + "ko": "열쇠 제조공", + "lt": "Raktininkas", + "lv": "Atslēdznieks", + "mk": "Бравар", + "nl": "Slotenmaker", + "no": "Låsesmed", + "pl": "Dorabianie kluczy / Ślusarz", + "pt-BR": "Serralheiro", + "pt": "Chaveiro", + "ru": "Изготовление ключей", + "sk": "Zámočníctvo", + "sl": "Ključavničar", + "sr": "Бравар", + "sv": "Låssmed", + "tr": "Anahtarcı", + "uk": "Слюсар", + "vi": "Thợ khóa", + "yue": "鎖匠", + "zh-CN": "锁匠铺", + "zh-HK": "鎖匠", + "zh-TW": "鎖匠" + } + }, + "shop/lottery": { + "title": { + "C": "Lottery Shop", + "ar": "متجر اليانصيب", + "ast": "Loteríes", + "bg": "Лотарийни билети", + "ca": "Administració de loteria", + "cs": "Prodejna losů", + "da": "Lotteributik", + "de": "Lottoannahmestelle", + "el": "Κατάστημα λαχείων", + "en-GB": "Lottery Shop", + "en": "Lottery Shop", + "eo": "Loterbileta vendejo", + "es": "Lotería", + "et": "Lotopood", + "fa": "فروشگاه قرعه کشی", + "fi": "Veikkauspiste", + "fr": "Loterie", + "gl": "Tenda de lotaría", + "he": "חנות לוטו", + "hr": "Trgovina igara na sreću", + "hu": "Lottózó", + "id": "Toko Lotre", + "is": "Lottósjoppa", + "it": "Ricevitoria", + "ja": "宝くじ売り場", + "ko": "복권 가게", + "lt": "Loterijų parduotuvė", + "lv": "Loterijas veikals", + "mk": "<преведете со истозначници или сродни поими на „Лотарија“, одделени со запирки>", + "nl": "Loterij", + "no": "Tipping", + "pl": "Kolektura", + "pt-BR": "Casa lotérica", + "pt": "Loja de lotaria", + "ro": "Loterie", + "ru": "Продажа лотерейных билетов", + "sk": "Lotéria", + "sl": "Loterijska prodajalna", + "sr": "Продавница лутрије", + "sv": "Lotteri", + "tr": "Loto Bayi", + "uk": "Лотерейний магазин", + "vi": "Tiệm Xổ số", + "zh-CN": "彩票店", + "zh-HK": "獎券店", + "zh-TW": "彩券行" + } + }, + "shop/mall": { + "title": { + "C": "Mall", + "af": "Winkelsentrum", + "ar": "مركز تسوق مول", + "ast": "Centru comercial", + "bg": "Мол", + "bn": "মল", + "bs": "Tržni centar", + "ca": "Centre comercial", + "cs": "Obchodní centrum", + "da": "Indkøbscenter", + "de": "Einkaufzentrum", + "el": "Εμπορικό Κέντρο", + "en-GB": "Mall", + "en": "Mall", + "eo": "Vendejaro", + "es": "Centro comercial", + "et": "Kaubanduskeskus", + "fa": "مرکز خرید", + "fi": "Kauppakeskus", + "fr": "Centre commercial", + "gl": "Centro comercial", + "he": "קניון", + "hr": "Trgovački centar", + "hu": "Bevásárlóközpont", + "id": "Mal", + "is": "Verslunarmiðstöð", + "it": "Centro commerciale", + "ja": "ショッピングセンター", + "ko": "쇼핑몰", + "lt": "Prekybos centras", + "lv": "Iepirkšanās centrs", + "mk": "Трговски центар", + "nl": "Winkelcentrum", + "no": "Kjøpesenter", + "pl": "Centrum handlowe", + "pt-BR": "Shopping ou Galeria de lojas", + "pt": "Centro comercial", + "ro": "Mall", + "ru": "Торговый центр", + "sk": "Nákupné centrum", + "sl": "Trgovski center", + "sr": "Тржни центар", + "sv": "Köpcenter", + "ta": "பேரங்காடி", + "tr": "Alışveriş Merkezi", + "uk": "Торгівельний центр", + "vi": "Trung tâm Thương mại", + "yue": "大商場", + "zh-CN": "购物中心", + "zh-HK": "購物中心", + "zh-TW": "購物中心", + "zh": "商场" + } + }, + "shop/massage": { + "title": { + "C": "Massage Shop", + "ar": "صالون التدليك", + "ast": "Masaxes", + "ca": "Centre de massatges", + "cs": "Masáže", + "da": "Massagebutik", + "de": "Massagesalon", + "el": "Κατάστημα Μασάζ", + "en-GB": "Massage Shop", + "en": "Massage Shop", + "eo": "Salono de masaĝo", + "es": "Tienda de masajes", + "et": "Massaaž", + "fa": "فروشگاه ماساژ", + "fi": "Hierontayritys", + "fr": "Salon de massage", + "gl": "Tenda de masaxes", + "he": "מכון עיסוי", + "hr": "Studio za masažu", + "hu": "Masszázsszalon", + "id": "Panti Pijat", + "is": "Nuddstofa", + "it": "Centro Massaggi", + "ja": "マッサージ店", + "ko": "마사지 가게", + "lt": "Masažo parduotuvė", + "lv": "Masāžu veikals", + "mk": "Масажа", + "nl": "Massagewinkel", + "no": "Massasjesenter", + "pl": "Salon masażu", + "pt-BR": "Loja de Massagem", + "pt": "Centro de massagens", + "ro": "Masaj", + "ru": "Массажный салон", + "sk": "Masérstvo", + "sr": "Салон за масажу", + "sv": "Massage", + "tr": "Masaj Salonu", + "uk": "Массаж", + "vi": "Tiệm Xoa bóp", + "zh-CN": "按摩店", + "zh-HK": "按摩店", + "zh-TW": "按摩店" + } + }, + "shop/medical_supply": { + "title": { + "C": "Medical Supply Store", + "ar": "متجر مستلزمات طبية", + "ast": "Tienda d'equipu médicu", + "ca": "Farmàcia", + "cs": "Zdravotnické potřeby", + "da": "Håndkøbsmedicinforhandler", + "de": "Sanitätshaus", + "el": "Κατάστημα Προμήθειας Ιατρικών Ειδών", + "en-GB": "Medical Supply Shop", + "en": "Medical Supply Store", + "eo": "Medicin-aparata vendejo", + "es": "Tienda de aparatos ortopédicos", + "et": "Tervisetoodete kauplus", + "fa": "فروشگاه تجهیزات پزشکی", + "fi": "Lääketarvikemyymälä", + "fr": "Magasin de matériel médical", + "gl": "Tenda de subministracións médicas", + "he": "חנות ציוד רפואי", + "hr": "Trgovina medicinske opreme", + "hu": "Gyógyászati segédeszközök boltja", + "id": "Toko Peralatan Medis", + "is": "Lækningavöruverslun", + "it": "Negozio di forniture mediche", + "ja": "健康・医療器具店", + "ko": "의료 용품 가게", + "lt": "Medicinos reikmenų parduotuvė", + "lv": "Medicīnisko piederumu veikals", + "mk": "Медицинска опрема и залихи", + "nl": "Winkel voor Medische Hulpmiddelen", + "no": "Medisinsk utstyrsbutikk", + "pl": "Sklep ze sprzętem medycznym", + "pt-BR": "Loja de Equipamentos Hospitalares", + "pt": "Loja de material médico", + "ro": "Magazin Alimentar Medical", + "ru": "Медицинские принадлежности", + "sk": "Obchod so zdravotníckymi pomôckami", + "sl": "Trgovina z medicinskimi primpomočki", + "sr": "Продавница медицинске опреме", + "sv": "Medicinsk utrustning", + "tr": "Medikal Ürünler Mağazası", + "uk": "Медтехніка", + "vi": "Tiệm Thiết bị Y tế", + "zh-CN": "医疗用品店", + "zh-HK": "醫療器材行", + "zh-TW": "醫療器材行" + } + }, + "shop/military_surplus": { + "title": { + "C": "Military Surplus Store", + "cs": "armádní výprodej", + "de": "Militärkleidungsabverkauf", + "el": "Κατάστημα Στρατιωτικού Εξοπλισμού", + "en": "Military Surplus Store", + "eo": "Ne-plu-necesa-armea-ekipaĵo vendejo", + "es": "Tienda de excedentes militares", + "fi": "Armeijan ylijäämämyymälä", + "fr": "Surplus militaire", + "gl": "Tenda de accesorios militares", + "he": "חנות עודפי צבא", + "hu": "Katonai felszerelések boltja", + "it": "Negozio di eccedenze militari", + "ja": "軍払い下げ品店", + "mk": "Продавница за воени вишоци", + "nl": "Winkel voor militair overschot", + "pl": "Sklep ze sprzętem wojskowym", + "pt-BR": "Loja de excedente militar", + "pt": "Loja de excedentes militares", + "ru": "Армейский магазин", + "sr": "Продавница војних вишкова", + "sv": "Affär med militäröverskott", + "tr": "Askeri Fazlalık Mağazası", + "uk": "Магазин військових товарів", + "zh-TW": "軍用品店" + } + }, + "shop/mobile_phone": { + "title": { + "C": "Mobile Phone Store", + "af": "Selfoonwinkel", + "ar": "محل بيع هواتف", + "ast": "Telefonía móvil", + "bg": "Магазин за мобилни телефони", + "bn": "মোবাইল ফোন-এর দোকান", + "bs": "Prodavnica mobilnih uređaja", + "ca": "Botiga de telefonia mòbil", + "cs": "Obchod s mobily", + "da": "Mobiltelefonforhandler", + "de": "Mobiltelefonladen", + "dv": "މޯބައިލް ފޯނު ވިއްކާ ފިހާރަ", + "el": "Κατάστημα Κινητής Τηλεφωνίας", + "en-GB": "Mobile Phone Shop", + "en": "Mobile Phone Store", + "eo": "Poŝtelefona vendejo", + "es": "Tienda de telefonía móvil", + "et": "Mobiilipood", + "fa": "فروشگاه تلفن همراه", + "fi": "Matkapuhelinmyymälä", + "fr": "Magasin de téléphonie mobile", + "gl": "Tenda de telefonía móbil", + "he": "חנות טלפונים ניידים", + "hr": "Prodavaonica mobilnih telefona", + "hu": "Mobiltelefon-szaküzlet", + "id": "Toko Handphone", + "is": "Farsímaverslun", + "it": "Negozio di telefonia mobile", + "ja": "携帯電話店", + "ko": "휴대폰 가게", + "lt": "Mobiliųjų telefonų parduotuvė", + "lv": "Mobilo telefonu veikals", + "mk": "Мобилара", + "ms": "Kedai Telefon Bimbit", + "nl": "Mobieletelefoonwinkel", + "no": "Mobiltelefonforhandler", + "pl": "Sklep z telefonami komórkowymi", + "pt-BR": "Loja de Celulares", + "pt": "Loja de telemóveis", + "ro": "Magazin de Telefoane Mobile", + "ru": "Магазин мобильных телефонов и аксессуаров", + "sk": "Obchod s mobilnými telefónmi", + "sl": "Trgovina z mobilnimi telefoni", + "so": "Dukaanka Taleefoonka Gacanta", + "sr": "Продавница мобилних телефона", + "sv": "Mobiltelefoner", + "tr": "Cep Telefonu Mağazası", + "uk": "Мобільні телефони", + "vi": "Tiệm Điện thoại Di động", + "yue": "電話舖", + "zh-CN": "手机店", + "zh-HK": "流動電話店", + "zh-TW": "行動電話店", + "zh": "手机店" + } + }, + "shop/model": { + "title": { + "C": "Model Shop", + "cs": "Modelářský obchod", + "de": "Modellbaugeschäft", + "en": "Model Shop", + "eo": "Vendejo de modelfarado", + "es": "Tienda de modelismo", + "fr": "Magasin de modélisme", + "gl": "Tenda de modelismo", + "he": "חנות דגמים", + "it": "Negozio di modellistica", + "ja": "模型店", + "ko": "모형 가게", + "mk": "Моделарска продавница", + "nl": "Modelwinkel", + "pl": "Sklep modelarski", + "pt-BR": "Loja de modelos", + "pt": "Loja de modelismo", + "ru": "Магазин для моделирования", + "sk": "Modelárstvo", + "sv": "Affär för byggmodeller", + "tr": "Manken Dükkanı", + "uk": "Магазин масштабних моделей", + "vi": "Tiệm Mô hình", + "zh-TW": "模型店" + } + }, + "shop/money_lender": { + "title": { + "C": "Money Lender", + "ar": "مقرض المال", + "ast": "Prestamista", + "ca": "Prestamista", + "cs": "Nebankovní půjčky", + "da": "Pengeudlåner", + "de": "Geldverleih", + "el": "Τοκογλύφος", + "en-GB": "Money Lender", + "en": "Money Lender", + "eo": "Mon-pruntejo", + "es": "Prestamista de dinero", + "et": "Rahalaenutaja", + "fa": "وام دهنده پول", + "fi": "Rahanlainausliike", + "fr": "Prêteur", + "gl": "Prestamista de cartos", + "he": "מלווה בריבית", + "hu": "Pénzkölcsönző", + "id": "Peminjaman Uang", + "is": "Peningaútlán", + "it": "Agenzia Prestito", + "ja": "消費者金融", + "ko": "대출", + "lt": "Pinigų skolintojas", + "lv": "Naudas Aizdevējs", + "mk": "Зајмување пари", + "ms": "Ceti", + "nl": "Particuliere Gelduitleendienst", + "no": "Pengeutlåner", + "pl": "Firma pożyczkowa", + "pt-BR": "Financiadora", + "pt": "Loja de empréstimos", + "ro": "Creditor de Bani", + "ru": "Ростовщик", + "sk": "Požičovňa peňazí", + "sl": "Posojilnica", + "sr": "Зајмодавац", + "sv": "Långivare", + "tr": "Tefeci", + "uk": "Кредитна спілка", + "vi": "Chỗ Mượn Tiền", + "zh-CN": "放贷人", + "zh-HK": "放債人", + "zh-TW": "地下錢莊" + } + }, + "shop/motorcycle": { + "title": { + "C": "Motorcycle Dealership", + "af": "Motorfietshandelaar", + "ar": "بائع دراجات نارية", + "ast": "Venta de motos", + "bg": "Магазин за мотоциклети", + "bs": "Salon motocikala", + "ca": "Botiga de motocicletes", + "cs": "Obchod s motocykly", + "da": "Motorcykelforhandler", + "de": "Motorradhändler", + "el": "Εμπόριο Μοτοσυκλετών", + "en-GB": "Motorcycle Dealership", + "en": "Motorcycle Dealership", + "eo": "Motorcikla vendejo", + "es": "Concesionario de motos", + "et": "Mootorrattapood", + "fa": "نمایندگی موتور سیکلت", + "fi": "Moottoripyöräliike", + "fr": "Vendeur de motos", + "gl": "Concesionario de motocicletas", + "he": "חנות אופנועים", + "hr": "Prodavaonica motocikala", + "hu": "Motorkerékpár-kereskedés", + "id": "Dealer Motor", + "is": "Mótorhjólaverslun", + "it": "Concessionario di motociclette", + "ja": "バイク店", + "ko": "오토바이 대리점", + "lt": "Motociklų prekybos atstovybė", + "lv": "Motociklu veikals", + "mk": "Салон за мотоцикли", + "nl": "Motorwinkel", + "no": "Motorsykkelforhandler", + "pl": "Sklep motocyklowy", + "pt-BR": "Revenda de Motos", + "pt": "Loja de motas", + "ro": "Magazin de Motociclete", + "ru": "Магазин мотоциклов", + "sk": "Predajňa motocyklov", + "sl": "Trgovina z motorji", + "sr": "Продавница мотоцикала", + "sv": "Återförsäljare av motorcyklar", + "tr": "Motosiklet Satış Mağazası", + "uk": "Салон мотоциклів", + "vi": "Tiệm Xe máy", + "yue": "電單車行", + "zh-CN": "摩托车店", + "zh-HK": "電單車店", + "zh-TW": "機車行", + "zh": "摩托车行" + } + }, + "shop/motorcycle_repair": { + "title": { + "C": "Motorcycle Repair Shop", + "ar": "ورشة تصليح الدراجات النارية", + "cs": "Opravna motocyklů", + "da": "Motorcykelværksted", + "de": "Motorradwerkstatt", + "el": "Συνεργείο Μοτοσυκλετών", + "en-GB": "Motorcycle Repair Shop", + "en": "Motorcycle Repair Shop", + "eo": "Motorcikl-riparejo", + "es": "Taller de reparación de motos", + "et": "Mootorratta remondikoda", + "fa": "تعمیرگاه موتورسیکلت", + "fi": "Moottoripyöräkorjaamo", + "fr": "Réparateur de motos", + "gl": "Taller de arranxo de motocicletas", + "he": "מוסך אופנועים", + "hr": "Ormarići za bicikle", + "hu": "Motorkerékpár alkatrész bolt", + "is": "Mótorhjólaviðgerðaverslun", + "it": "Officina riparazione motocicli", + "ja": "バイク修理店", + "ko": "오토바이 수리점", + "lt": "Motociklų taisykla", + "lv": "Motociklu remonta darbnīca", + "mk": "Поправка на мотоцикли", + "nl": "Motorreparatie", + "no": "Motorsykkelverksted", + "pl": "Warsztat motocyklowy", + "pt-BR": "Oficina de motocicletas", + "pt": "Oficina de motas", + "ru": "Мотомастерская", + "sk": "Oprava motocyklov", + "sr": "Поправка мотоцикала", + "sv": "Motorcykelverkstad", + "tr": "Motosiklet Tamir Atölyesi", + "uk": "Ремонт мотоциклів", + "vi": "Tiệm Sửa Xe máy", + "zh-CN": "摩托车修理店", + "zh-TW": "摩托車維修店" + } + }, + "shop/music": { + "title": { + "C": "Music Store", + "af": "Musiekwinkel", + "ar": "متجر بيع موسيقى", + "ast": "Tienda de música", + "bg": "Музикален магазин", + "bn": "সঙ্গীতের দোকান", + "bs": "Muzička prodavnica", + "ca": "Botiga de música", + "cs": "Obchod s hudbou", + "da": "Musikbutik", + "de": "Musikgeschäft", + "el": "Κατάστημα Μουσικής", + "en-GB": "Music Shop", + "en": "Music Store", + "eo": "Muzika vendejo", + "es": "Tienda de música", + "et": "Muusikapood", + "fa": "فروشگاه موسیقی", + "fi": "Musiikkiliike", + "fr": "Magasin de musique", + "gl": "Tenda de música", + "he": "חנות מוזיקה", + "hr": "Prodavaonica glazbene opreme", + "hu": "Hanglemezbolt", + "id": "Toko Musik", + "is": "Tónlistarbúð", + "it": "Negozio di musica", + "ja": "CD/レコード店", + "ko": "음반 가게", + "lt": "Muzikos parduotuvė", + "lv": "Mūzikas veikals", + "mk": "Продавница за музика", + "ms": "Kedai Muzik", + "nl": "Muziekwinkel", + "no": "Musikkforretning", + "pl": "Sklep muzyczny", + "pt-BR": "Loja de Discos Musicais", + "pt": "Loja de música", + "ro": "Magazin de Muzică", + "ru": "Музыкальный магазин", + "sk": "Obchod s hudbou", + "sl": "Trgovina z glasbo", + "sr": "Продавница музике", + "sv": "Musikaffär", + "tr": "Müzik Mağazası", + "uk": "Музичний магазин", + "vi": "Tiệm Âm nhạc", + "yue": "唱片舖", + "zh-CN": "音乐店", + "zh-HK": "唱片店", + "zh-TW": "音樂店", + "zh": "音乐店" + } + }, + "shop/musical_instrument": { + "title": { + "C": "Musical Instrument Store", + "ar": "متجر آلات موسيقية", + "ast": "Instrumentos musicales", + "ca": "Botiga d'instruments musicals", + "cs": "Obchod s hudebními nástroji", + "da": "Musikinstrumentbutik", + "de": "Musikinstrumentegeschäft", + "el": "Κατάστημα μουσικών οργάνων", + "en-GB": "Musical Instrument Shop", + "en": "Musical Instrument Store", + "eo": "Muzikinstrumenta vendejo", + "es": "Tienda de instrumentos musicales", + "et": "Muusikainstrumentide kauplus", + "fa": "فروشگاه سازهای موسیقی", + "fi": "Instrumenttimyymälä", + "fr": "Magasin d'instruments de musique", + "gl": "Tenda de instrumentos musicais", + "he": "חנות כלי נגינה", + "hr": "Trgovina glazbenih instrumenata", + "hu": "Hangszerbolt", + "id": "Toko Alat Musik", + "is": "Hljóðfæraverslun", + "it": "Negozio di strumenti musicali", + "ja": "楽器店", + "ko": "악기 가게", + "lt": "Muzikos instrumentų parduotuvė", + "lv": "Mūzikas instrumentu veikals", + "mk": "Продавница за музички инструменти", + "ms": "Kedai Alatan Muzik", + "nl": "Muziekinstrumentenwinkel", + "no": "Musikkinstrumentbutikk", + "pl": "Sklep z instrumentami muzycznymi", + "pt-BR": "Loja de Instrumentos Musicais", + "pt": "Loja de instrumentos musicais", + "ro": "Magazin de Instrumente Muzicale", + "ru": "Магазин музыкальных инструментов", + "sk": "Obchod s hudobnými nástrojmi", + "sl": "Trgovina z glasbenimi inštrumenti", + "sr": "Продавница музичких инструмената", + "sv": "Musikinstrument", + "tr": "Müzik Aletleri Mağazası", + "uk": "Магазин музичних інструментів", + "vi": "Tiệm Nhạc cụ", + "zh-CN": "乐器店", + "zh-HK": "樂器店", + "zh-TW": "音樂樂器行" + } + }, + "shop/newsagent": { + "title": { + "C": "Newspaper/Magazine Shop", + "ar": "محل بيع الجرائد", + "ast": "Prensa y revistes", + "ca": "Botiga de diaris i revistes", + "cs": "Trafika", + "da": "Avis/Bladforhandler", + "de": "Zeitschriftenhandel", + "el": "Πρακτορείο τύπου", + "en-GB": "Newspaper/Magazine Shop", + "en": "Newspaper/Magazine Shop", + "eo": "Gazeta vendejo", + "es": "Puesto de periódicos / revistas", + "et": "Ajakirjapood", + "fa": "فروشگاه روزنامه/مجله", + "fi": "Lehtikoju", + "fr": "Magasin de journaux", + "gl": "Tenda de xornais/revistas", + "he": "חנות עיתונים", + "hr": "Trgovina za novine i magazine", + "hu": "Újságárus", + "id": "Toko Majalah/Koran", + "is": "Dagblaða/tímaritasala", + "it": "Edicola", + "ja": "新聞・雑誌店", + "ko": "신문/잡지 가게", + "lt": "Laikraščių/žurnalų parduotuvė", + "lv": "Avīžu / Žurnālu veikals", + "mk": "Весникарница", + "nl": "Kranten-/Tijdschriftwinkel", + "no": "Aviskiosk", + "pl": "Sklep z prasą", + "pt-BR": "Banca de Revistas", + "pt": "Loja de jornais / revistas", + "ro": "Magazin de Ziare", + "ru": "Газеты/пресса/журналы", + "sk": "Obchod s novinami/časopismi", + "sl": "Trgovina s časopisi/revijami", + "sr": "Дневне новине/часописи", + "sv": "Tidningsaffär", + "tr": "Gazete Bayii", + "uk": "Преса", + "vi": "Tiệm Báo", + "zh-CN": "报摊", + "zh-HK": "報紙/雜誌店", + "zh-TW": "報紙/雜誌攤" + } + }, + "shop/nutrition_supplements": { + "title": { + "C": "Nutrition Supplements Store", + "ar": "متجر المكملات الغذائية", + "ast": "Tienda de suplementos nutritivos", + "ca": "Botiga de suplements nutricionals", + "cs": "Obchod s potravními doplňky", + "da": "Helsekostbutik", + "de": "Nahrungsergänzungsmittelgeschäft", + "el": "Κατάστημα με Συμπληρώματα Διατροφής", + "en-GB": "Nutrition Supplements Shop", + "en": "Nutrition Supplements Store", + "eo": "Diet-suplementa vendejo", + "es": "Tienda de suplementos nutricionales", + "et": "Toidulisandite kauplus", + "fa": "فروشگاه تغذیه مکمل", + "fi": "Lisäravinnemyymälä", + "fr": "Boutique de compléments alimentaires", + "gl": "Tenda de suplementos nutricionais", + "he": "חנות ויטמינים", + "hu": "Étrendkiegészítő-bolt", + "is": "Verslun með fæðubótarefni", + "it": "Negozio di integratori alimentari", + "ja": "栄養サプリ販売店", + "ko": "영양 보조 식품 가게", + "mk": "Продавница за прехранбени додатоци", + "nl": "Voedingssupplementenwinkel", + "pl": "Sklep z suplementami diety", + "pt-BR": "Loja de Suplementos Nutricionais", + "pt": "Loja de suplementos alimentares", + "ro": "Magazin de Suplimente Nutritive", + "ru": "Магазин пищевых добавок", + "sk": "Obchod s výživovými doplnkami", + "sl": "Trgovina s prehrambenimi dodatki", + "sr": "Продавница додатака исхрани", + "sv": "Hälsokost", + "tr": "Gıda Takviye Ürünleri Mağazası", + "uk": "Магазин харчових добавок", + "vi": "Tiệm Thuốc bổ", + "zh-CN": "保健品店", + "zh-HK": "營養補充品店", + "zh-TW": "營養補充品店" + } + }, + "shop/optician": { + "title": { + "C": "Optician", + "af": "Oogarts", + "ar": "متجر نظارات", + "ast": "Óptica", + "bg": "Оптика", + "bn": "চক্ষুরোগের চিকিত্সক", + "bs": "Optičar", + "ca": "Òptica", + "cs": "Optika", + "da": "Optiker", + "de": "Optiker", + "el": "Οπτικός", + "en-GB": "Optician", + "en": "Optician", + "eo": "Optikbutiko", + "es": "Óptica", + "et": "Optikapood", + "fa": "عینک فروشی", + "fi": "Optikko", + "fr": "Opticien", + "gl": "Óptica", + "he": "אופטיקאי", + "hr": "Optičar", + "hu": "Látszerész", + "id": "Optik", + "is": "Gleraugnaverslun", + "it": "Ottico", + "ja": "メガネ店", + "kn": "ನೇತ್ರ ತಜ್ಞ", + "ko": "안경점", + "lt": "Optika", + "lv": "Optometrists", + "mk": "Оптичар", + "nl": "Opticien", + "no": "Optiker", + "pl": "Optyk", + "pt-BR": "Ótica", + "pt": "Ótica", + "ro": "Optician", + "ru": "Оптика", + "sk": "Optika", + "sl": "Optik", + "sq": "Okulist", + "sr": "Оптичар", + "sv": "Optiker", + "tr": "Gözlükçü", + "uk": "Оптика", + "vi": "Tiệm Kính mắt", + "yue": "眼鏡鋪", + "zh-CN": "眼镜店", + "zh-HK": "眼鏡店", + "zh-TW": "眼鏡行", + "zh": "眼镜店" + } + }, + "shop/outdoor": { + "title": { + "C": "Outdoors Store", + "ar": "متجر ملابس ومعدات الأنشطة في الهواء الطلق", + "ast": "Equipamientu d'aire llibre", + "ca": "Botiga per a activitats a l'aire lliure", + "cs": "Outdoorové zboží", + "da": "Friluftsudstyrsbutik", + "de": "Outdoorgeschäft", + "el": "Κατάστημα με Είδη Εξοπλισμού Υπαίθρου", + "en-GB": "Outdoors Shop", + "en": "Outdoors Store", + "eo": "Vojaĝila vendejo", + "es": "Tienda de actividades al aire libre", + "et": "Matkatarvete kauplus", + "fa": "فروشگاه لوازم کوهنوردی و کمپینگ", + "fi": "Ulkoilmamyymälä", + "fr": "Magasin de matériel de sports de plein air", + "gl": "Tenda de actividades ó ar libre", + "he": "חנות רהיטי גינה", + "hr": "Trgovina sa opremom za kampiranje", + "hu": "Túrafelszerelés-bolt", + "id": "Toko Perlengkapan Outdoor", + "is": "Útivistarbúð", + "it": "Negozio per sport all'aria aperta", + "ja": "アウトドアショップ", + "ko": "아웃도어 가게", + "lt": "Laisvalaikio parduotuvė", + "mk": "Продавница за рекреативна опрема", + "nl": "Winkel voor Benodigdheden voor Buitenactiviteiten", + "no": "Villmarksbutikk", + "pl": "Sklep turystyczny", + "pt-BR": "Loja de Esportes de Aventura", + "pt": "Loja de artigos para atividades ao ar livre", + "ro": "Magazin în Aer Liber", + "ru": "Магазин снаряжения для активного отдыха", + "sk": "Outdoorový obchod", + "sl": "Trgovina za dejavosti na prostem", + "sr": "Продавница планинарске опреме", + "sv": "Friluftsaffär", + "tr": "Kamp Malzemeleri Mağazası", + "uk": "Активний відпочинок", + "vi": "Tiệm Thể thao Ngoài trời", + "zh-CN": "户外用品店", + "zh-HK": "戶外用品店", + "zh-TW": "戶外用品店" + } + }, + "shop/outpost": { + "title": { + "C": "Online Retailer Outpost", + "cs": "výdejna e-shopu", + "de": "Abholstelle eines Onlinehändlers", + "en": "Online Retailer Outpost", + "eo": "Ricevejo de aĉetaĵoj (per interreto)", + "es": "Puesto de venta minorista online", + "fi": "Verkkokaupan noutopiste", + "fr": "Magasin de produits vendus en ligne", + "gl": "Posto de venda minorista online", + "he": "נקודת הפצה של שירות מקוון", + "it": "Centro ritiro acquisti online", + "ja": "商品受け取り店", + "ko": "전자상거래 사업자 영업소", + "mk": "Испостава на семрежна продавница", + "nl": "Voorpost van een online retailer", + "pl": "Placówka sklepu internetowego", + "pt-BR": "Posto de retalhista online", + "pt": "Posto de retalhista online", + "ru": "Пункт выдачи интернет-магазина", + "sv": "Utlämning av online-beställningar", + "tr": "Çevrimiçi Perakende Satış Noktası", + "uk": "Пункт видачі онлайн магазина", + "zh-TW": "線上零售商提貨處" + } + }, + "shop/paint": { + "title": { + "C": "Paint Store", + "ar": "متجر دهانات وطلاء", + "ast": "Tienda de pintures", + "ca": "Botiga de pintura", + "cs": "Barvy a laky", + "da": "Farvehandel", + "de": "Farbengeschäft", + "el": "Χρωματοπωλείο", + "en-GB": "Paint Shop", + "en": "Paint Store", + "eo": "Farba vendejo", + "es": "Tienda de pinturas", + "et": "Värvipood", + "fa": "فروشگاه رنگ", + "fi": "Maalikauppa", + "fr": "Magasin de peintures", + "gl": "Tenda de pinturas", + "he": "חנות צבע", + "hr": "Prodavaonica boja", + "hu": "Festékbolt", + "id": "Toko Cat", + "is": "Málningarvöruverslun", + "it": "Negozio di vernici", + "ja": "塗料店", + "ko": "페인트 가게", + "lt": "Dažų parduotuvė", + "lv": "Krāsu veikals", + "mk": "Бои и лакови", + "ms": "Kedai Cat", + "nl": "Verfwinkel", + "no": "Malingsbutikk", + "pl": "Sklep z farbami", + "pt-BR": "Loja de Tintas", + "pt": "Loja de tintas", + "ro": "Magazin de Pictură", + "ru": "Магазин красочных изделий", + "sk": "Obchod s nátermi", + "sl": "Trgovina z barvami", + "sr": "Фарбара", + "sv": "Färgbutik", + "tr": "Boyacı", + "uk": "Магазин фарб", + "vi": "Tiệm Sơn", + "zh-CN": "油漆店", + "zh-HK": "油漆店", + "zh-TW": "油漆行" + } + }, + "shop/party": { + "title": { + "C": "Party Supply Store", + "ar": "متجر مستلزمات حفلات", + "cs": "párty zboží", + "de": "Partyzubehör", + "el": "Κατάστημα Προμηθειών για Πάρτυ", + "en": "Party Supply Store", + "eo": "Vendejo de okazaĵaj provizoj", + "es": "Tienda de artículos para fiestas", + "fa": "فروشگاه لوازم مهمانی", + "fr": "Magasin de matériel de fête", + "gl": "Tenda de artigos para festas", + "he": "חנות ציוד למסיבות", + "hu": "Partykellékbolt", + "it": "Negozio di articoli per le feste", + "ja": "パーティ用品店", + "ko": "파티 용품 가게", + "mk": "Набавки за забавни настани", + "nl": "Feestwinkel", + "pl": "Sklep z artykułami imprezowymi", + "pt-BR": "Loja de materiais para festas", + "pt": "Loja de acessórios para festas", + "sv": "Partybutik", + "tr": "Parti Malzemeleri Mağazası", + "uk": "Товари до свят", + "vi": "Tiệm Phụ kiện Trang trí Tiệc", + "zh-TW": "宴會器材店" + } + }, + "shop/pastry": { + "title": { + "C": "Pastry Shop", + "ar": "متجر حلويات", + "ast": "Pastelería", + "ca": "Pastisseria", + "cs": "Cukrárna", + "da": "Konditori", + "de": "Konditorei", + "el": "Ζαχαροπλαστείο", + "en-GB": "Pastry Shop", + "en": "Pastry Shop", + "eo": "Kukejo", + "es": "Pastelería", + "et": "Kondiiter", + "fa": "شیرینی فروشی", + "fi": "Leipomokonditoria", + "fr": "Pâtisserie", + "gl": "Confeitaría ou pastelaría", + "he": "בית מאפה", + "hr": "Slastičarna", + "hu": "Cukrászda", + "is": "Kökubúð", + "it": "Pasticceria", + "ja": "焼菓子(ペイストリー)店", + "ko": "과자 가게", + "lt": "Kepykla", + "mk": "Бели печива", + "nl": "Fijnbakkerij", + "no": "Bakeri", + "pl": "Cukiernia", + "pt-BR": "Confeitaria", + "pt": "Pastelaria", + "ru": "Пироги", + "sl": "Slaščičarna", + "sr": "Посластичарница", + "sv": "Konditori", + "tr": "Pastane", + "uk": "Кондитерські вироби", + "vi": "Tiệm Bánh ngọt", + "zh-CN": "糕饼店", + "zh-HK": "榚點店", + "zh-TW": "糕餅店" + } + }, + "shop/pawnbroker": { + "title": { + "C": "Pawn Shop", + "ar": "متجر رهن", + "ast": "Casa d'empeños", + "ca": "Botiga d'empenyoraments", + "cs": "Zastavárna", + "da": "Panteudlåner", + "de": "Pfandleiher", + "el": "Ενεχυροδανειστήριο", + "en-GB": "Pawn Shop", + "en": "Pawn Shop", + "eo": "Mon-pruntejo (kontraŭ garantiaĵo)", + "es": "Casa de empeño", + "et": "Pandimaja", + "fi": "Panttilainaamo", + "fr": "Prêteur sur gages", + "gl": "Casa de empeños", + "he": "חנות יד שניה", + "hr": "Zalagaonica", + "hu": "Zálogház", + "id": "Pegadaian", + "is": "Veðlánari", + "it": "Banco dei pegni", + "ja": "質店", + "ko": "전당포", + "lt": "Lombardas", + "lv": "Lombards", + "mk": "Заложилница", + "nl": "Bank van lening", + "no": "Pantelåner", + "pl": "Lombard", + "pt-BR": "Loja de Penhoras", + "pt": "Casa de penhoras", + "ru": "Ломбард", + "sk": "Záložňa", + "sl": "Zastavljalnica", + "sr": "Залагаоница", + "sv": "Pantbank", + "tr": "İkinciel Alım Satım Mağazası", + "uk": "Ломбард", + "vi": "Tiệm Cầm đồ", + "zh-CN": "典当商铺", + "zh-HK": "當舖", + "zh-TW": "汽機車借款" + } + }, + "shop/perfumery": { + "title": { + "C": "Perfume Store", + "ar": "متجر العطور", + "ast": "Perfumería", + "ca": "Botiga de perfums", + "cs": "Parfumerie", + "da": "Parfumebutik", + "de": "Parfümerie", + "el": "Κατάστημα Αρωμάτων", + "en-GB": "Perfume Shop", + "en": "Perfume Store", + "eo": "Parfuma vendejo", + "es": "Perfumería", + "et": "Parfüümikauplus", + "fa": "عطر فروشی", + "fi": "Hajusteliike", + "fr": "Parfumerie", + "gl": "Perfumaría", + "he": "חנות בשמים", + "hr": "Parfimerija", + "hu": "Parfüméria", + "is": "Ilmvatnsbúð", + "it": "Profumeria", + "ja": "香水店", + "ko": "향수 가게", + "lt": "Parfumerijos parduotuvė", + "mk": "Парфимерија", + "nl": "Parfumwinkel", + "no": "Parfymeri", + "pl": "Perfumeria", + "pt-BR": "Perfumaria", + "pt": "Perfumaria", + "ro": "Magazin de Parfum", + "ru": "Парфюмерия", + "sk": "Parfuméria", + "sl": "Parfumerija", + "sr": "Парфемџиница", + "sv": "Parfymbutik", + "tr": "Parfümeri", + "uk": "Парфуми", + "vi": "Tiệm Nước hoa", + "zh-CN": "香水店", + "zh-HK": "香水店", + "zh-TW": "香水店" + } + }, + "shop/pet": { + "title": { + "C": "Pet Store", + "af": "Troeteldierwinkel", + "ar": "محل حيوانات أليفة", + "ast": "Tienda de mascotes", + "bg": "Зоо магазин", + "bs": "Prodavnica kućnih ljubnimaca", + "ca": "Botiga d'animals", + "cs": "Chovatelské potřeby", + "da": "Kæledyrsbutik", + "de": "Tierhandlung", + "el": "Κατάστημα Κατοικίδιων", + "en-GB": "Pet Shop", + "en": "Pet Store", + "eo": "Dombesta vendejo", + "es": "Tienda de mascotas", + "et": "Lemmikloomapood", + "fa": "فروشگاه حیوانات خانگی", + "fi": "Lemmikkiliike", + "fr": "Animalerie", + "gl": "Tenda de mascotas", + "he": "חנות לחיות מחמד", + "hr": "Prodavaonica kućnim ljubimcima", + "hu": "Kisállatkereskedés", + "id": "Toko Peliharaan", + "is": "Dýrabúð", + "it": "Negozio per animali", + "ja": "ペットショップ", + "ko": "애완동물 가게", + "lt": "Augintinių parduotuvė", + "lv": "Dzīvnieku veikals", + "mk": "Продавница за домашни миленици", + "nl": "Dierenwinkel", + "no": "Dyrebutikk", + "pl": "Sklep zoologiczny", + "pt-BR": "Loja de animais ou artigos para animais", + "pt": "Loja de animais de estimação", + "ro": "Magazin de Animale", + "ru": "Зоомагазин", + "sk": "Chovprodukt", + "sl": "Trgovina za domače živali", + "sr": "Продавница кућних љубимаца", + "sv": "Djurbutik", + "tr": "Evcil Hayvan Mağazası", + "uk": "Товари для тварин", + "vi": "Tiệm Vật nuôi", + "yue": "寵物舖", + "zh-CN": "宠物店", + "zh-HK": "寵物舖", + "zh-TW": "寵物店", + "zh": "宠物店" + } + }, + "shop/pet_grooming": { + "title": { + "C": "Pet Grooming Store", + "cs": "zvířecí salon", + "de": "Tierpflegedienst, Tierfriseur (meist Hundesalon)", + "el": "Κατάστημα Καλλωπισμού Κατοικίδιων", + "en-GB": "Pet Grooming Shop", + "en": "Pet Grooming Store", + "eo": "Hejmbesta beligejo", + "es": "Tienda de aseo para mascotas", + "fa": "فروشگاه لوازم نظافت حیوان خانگی", + "fi": "Lemmikkihoitola", + "fr": "Salon de toilettage", + "gl": "Tenda de coidado de animais", + "he": "חנות לטיפוח חיות מחמד", + "hu": "Állatkozmetikai bolt", + "is": "Dýrasnyrtiverslun", + "it": "Toelettatura per animali", + "ja": "ペット美容室", + "ko": "애완동물 용품 가게", + "mk": "Продавница за нега на миленици", + "nl": "Trimsalon", + "pl": "Salon fryzjerski dla zwierząt", + "pt-BR": "Loja de cuidados com animais de estimação", + "pt": "Loja de banhos e tosquias", + "ru": "Парикмахерская для животных", + "sr": "Сређивање кућних љубимаца", + "sv": "Pälsvård för husdjur", + "tr": "Evcil Hayvan Bakım Mağazası", + "uk": "Салон догляду за тваринами", + "vi": "Dịch vụ Tỉa lông", + "zh-TW": "寵物美容店" + } + }, + "shop/photo": { + "title": { + "C": "Photography Store", + "ar": "محل تصوير", + "ast": "Fotografía", + "bs": "Fotografska radnja", + "ca": "Botiga de fotografia", + "cs": "Fotografický obchod", + "da": "Fotoforretning", + "de": "Fotofachgeschäft", + "el": "Φωτογραφείο", + "en-GB": "Photography Shop", + "en": "Photography Store", + "eo": "Fotografia vendejo", + "es": "Tienda de fotografía", + "et": "Fotograafiapood", + "fa": "عکس و ویدیو", + "fi": "Valokuvausliike", + "fr": "Tirage de photos", + "gl": "Tenda de fotografía", + "he": "חנות צילום", + "hr": "Prodavaonica fotografske opreme", + "hu": "Fotósbolt", + "id": "Toko Fotografi", + "is": "Ljósmyndavöruverslun", + "it": "Fotografo", + "ja": "写真店", + "ko": "사진 가게", + "lt": "Fotografijos parduotuvė", + "lv": "Fotogrāfijas veikals", + "mk": "Фотографски дуќан", + "nl": "Fotowinkel", + "no": "Fotobutikk", + "pl": "Sklep fotograficzny", + "pt-BR": "Loja de Fotografia", + "pt": "Loja de fotografia", + "ro": "Magazin de Fotografie", + "ru": "Фототовары", + "sk": "Obchod s fototechnikou", + "sl": "Foto trgovina", + "sr": "Фотографска радња", + "sv": "Fotoaffär", + "tr": "Fotoğrafçı", + "uk": "Фототовари", + "vi": "Tiệm Chụp Hình", + "yue": "影相舖", + "zh-CN": "照相馆", + "zh-HK": "相片沖印店", + "zh-TW": "攝影用品店" + } + }, + "shop/pottery": { + "title": { + "C": "Pottery Store", + "cs": "keramika", + "de": "Keramikladen", + "en": "Pottery Store", + "eo": "Porcelan-vendejo", + "es": "Tienda de alfarería", + "fr": "Magasin de poterie", + "gl": "Tenda de cerámica", + "he": "חנות כדים", + "it": "Negozio di ceramica", + "ja": "陶磁器店", + "ko": "도자기 가게", + "mk": "Продавница за грнчарија", + "nl": "Winkel voor aardewerk", + "pl": "Sklep garncarski", + "pt-BR": "Loja de cerâmica", + "pt": "Loja de cerâmica", + "ru": "Магазин керамики", + "sk": "Obchod s keramikou", + "sr": "Продавница грнчарије", + "sv": "Keramikaffär", + "tr": "Çömlek Mağazası", + "uk": "Порцелянові вироби", + "zh-TW": "陶器店" + } + }, + "shop/printer_ink": { + "title": { + "C": "Printer Ink Store", + "cs": "barvy do tiskáren", + "de": "Druckertintengeschäft", + "el": "Κατάστημα για Μελάνια Εκτυπωτών", + "en": "Printer Ink Store", + "eo": "Presil-inka vendejo", + "es": "Tienda de tinta para impresora", + "fi": "Tulostinmustemyymälä", + "fr": "Vendeur d'encre pour imprimante", + "gl": "Tenda de tinta de impresora", + "he": "חנות דיו למדפסות", + "hu": "Nyomtatófesték bolt", + "it": "Negozio di cartucce per stampanti", + "ja": "プリンタ用インク店", + "ko": "프린터 잉크 가게", + "mk": "Продавница за печатарска боја", + "nl": "Winkel voor printerinkt", + "pl": "Sklep z tuszami do drukarek", + "pt-BR": "Loja de tinta de impressora", + "pt": "Loja de tinteiros de impressora", + "sk": "Obchod s tonermi", + "sv": "Butik för skrivarbläck", + "tr": "Kartuş Mağazası", + "uk": "Чорнила для принтера", + "vi": "Tiệm Mực in", + "zh-CN": "打印机墨水店", + "zh-TW": "印表機墨水商店" + } + }, + "shop/psychic": { + "title": { + "C": "Psychic", + "cs": "věštírna", + "de": "Astrologiker", + "en": "Psychic", + "eo": "Laborejo de mediumo", + "es": "Vidente", + "fa": "پیش‌گو", + "fi": "Psyykikko", + "fr": "Magasin ésotérique psi", + "gl": "Vidente", + "he": "מדיום", + "ja": "サイキック店", + "ko": "초능력자", + "mk": "Јасновидец", + "nl": "Medium (esoterie)", + "pl": "Medium", + "pt-BR": "Psíquico", + "pt": "Vidente", + "sr": "Видовњак", + "sv": "Medium / Psykisk", + "tr": "Medyum", + "uk": "Екстрасенс", + "zh-CN": "特异功能(看相等)", + "zh-TW": "算命店" + } + }, + "shop/pyrotechnics": { + "title": { + "C": "Fireworks Store", + "ar": "متجر ألعاب نارية", + "ast": "Venta de pirotecnia", + "ca": "Botiga d'articles pirotècnics", + "cs": "Obchod s pyrotechnikou", + "da": "Fyrværkeributik", + "de": "Feuerwerksgeschäft", + "el": "Κατάστημα Πυροτεχνημάτων", + "en-GB": "Fireworks Shop", + "en": "Fireworks Store", + "eo": "Art-fajraĵa vendejo", + "es": "Tienda de fuegos artificiales", + "et": "Ilutulestiku kauplus", + "fa": "فروشگاه لوازم آتش‌بازی", + "fi": "Ilotulitemyymälä", + "fr": "Magasin de feux d'artifice", + "gl": "Tenda de fogos artificiais", + "he": "חנות זיקוקים", + "hr": "Prodavaonica za pirotehniku", + "hu": "Tűzijátékbolt", + "id": "Toko Kembang Api", + "is": "Flugeldaverslun", + "it": "Negozio di fuochi d'artificio", + "ja": "花火店", + "ko": "불꽃놀이 가게", + "lt": "Fejerverkų parduotuvė", + "mk": "Продавница за огномет", + "nl": "Vuurwerkwinkel", + "no": "Fyrverkerihandel", + "pl": "Sklep ze sztucznymi ogniami", + "pt-BR": "Loja de Fogos de Artifício", + "pt": "Loja de pirotecnia", + "ro": "Magazin de Artificii", + "ru": "Магазин фейерверков", + "sk": "Obchod s pyrotechnikov", + "sr": "Продавница петарди", + "sv": "Fyrverkerier", + "tr": "Havai Fişek Mağazası", + "uk": "Феєрверки", + "vi": "Tiệm Pháo bông", + "yue": "煙花舖", + "zh-CN": "烟花爆竹店", + "zh-HK": "煙花店", + "zh-TW": "煙火商" + } + }, + "shop/radiotechnics": { + "title": { + "C": "Radio/Electronic Component Store", + "ar": "متجر المكونات الإلكترونية", + "ast": "Componentes electrónicos", + "ca": "Botiga d'articles electrònics", + "cs": "Obchod s elektronickými součástkami", + "da": "Radio/Elektronikbutik", + "de": "Radio/Elektronik-Geschäft", + "el": "Μαγαζί Ηλεκτρονικών Εξαρτημάτων", + "en-GB": "Radio/Electronic Component Shop", + "en": "Radio/Electronic Component Store", + "eo": "Radioteĥnika/elektronik-parta vendejo", + "es": "Tienda de componentes radio electrónicos", + "et": "Elektroonikakomponentide pood", + "fa": "فروشگاه رادیو/اجزای الکترونیکی", + "fi": "Elektroniikkakomponenttimyymälä", + "fr": "Magasin de composants électroniques et de radio", + "gl": "Tenda de compoñentes electrónicos", + "he": "חנות אלקטרוניקה ורדיו", + "hr": "Trgovina za elektroniku", + "hu": "Rádiótechnikai bolt", + "id": "Toko Komponen Radio/Elektronik", + "is": "Rafíhlutaverslun", + "it": "Negozio di componenti elettronici", + "ja": "電子部品店", + "ko": "라디오/전자 부품 가게", + "lt": "Radijo/elektroninių dalių parduotuvė", + "lv": "Radio / Elektronisko komponenšu veikals", + "mk": "Продавница за електрични делови", + "nl": "Winkel voor radio- en elektronische componenten", + "no": "Elektronikkbutikk", + "pl": "Sklep z częściami elektronicznymi", + "pt-BR": "Loja de Componentes Eletrônicos", + "pt": "Loja de componentes eletrónicos / rádio", + "ru": "Магазин радиодеталей", + "sk": "Obchod s elektronikou", + "sl": "Trgovina z elektroniko", + "sr": "Продавница електронских делова", + "sv": "Radio/Elektronikbutik", + "tr": "Radyocu", + "uk": "Радіодеталі", + "vi": "Tiệm Linh kiện Điện tử", + "yue": "無綫電/電子零件舖", + "zh-CN": "音像制品店", + "zh-HK": "無線電/電子零件店", + "zh-TW": "無線電/電子零件店" + } + }, + "shop/religion": { + "title": { + "C": "Religious Store", + "ar": "متجر ديني", + "ast": "Artículos relixosos", + "ca": "Botiga d'articles religiosos", + "cs": "Náboženské předměty", + "da": "Religøs forretning", + "de": "Devotionalienhandlung", + "el": "Κατάστημα Θρησκευτικών Ειδών", + "en-GB": "Religious Shop", + "en": "Religious Store", + "eo": "Devotaĵa vendejo", + "es": "Tienda religiosa", + "et": "Usutarvete kauplus", + "fa": "فروشگاه مذهبی", + "fi": "Uskonnollinen myymälä", + "fr": "Magasin d'articles religieux", + "gl": "Tenda relixiosa", + "he": "חנות לתשמישי דת", + "hr": "Prodavaonica religioznih pomagala", + "hu": "Kegytárgybolt", + "id": "Toko Agamawi", + "is": "Verslun með trúartengdar vörur", + "it": "Negozio di articoli religiosi", + "ja": "宗教用品店", + "ko": "종교 가게", + "lt": "Religinė parduotuvė", + "mk": "Верска продавница", + "nl": "Religieuze winkel", + "no": "Religiøs butikk", + "pl": "Sklep z dewocjonaliami", + "pt-BR": "Loja de Artigos Religiosos", + "pt": "Loja de artigos religiosos", + "ro": "Magazin Religios", + "ru": "Религиозная лавка", + "sk": "Obchod s náboženkými pomôckami", + "sr": "Продавница верских предмета", + "sv": "Religiös butik", + "tr": "Dini Ürünler Mağazası", + "uk": "Церковна лавка", + "vi": "Tiệm Bán đồ Tôn giáo", + "yue": "宗教舖", + "zh-CN": "宗教商店", + "zh-HK": "宗教用品店", + "zh-TW": "宗教用品店" + } + }, + "shop/rental": { + "title": { + "C": "Rental Shop", + "cs": "půjčovna", + "da": "Udlejningsforretning", + "de": "Verleih", + "en": "Rental Shop", + "eo": "Pruntejo", + "es": "Tienda de alquiler", + "fi": "Vuokraamo", + "fr": "Magasin de location", + "gl": "Tenda de alugueiro", + "he": "חנות השכרה", + "hu": "Kölcsönző", + "it": "Negozio di noleggio", + "ja": "レンタルショップ", + "ko": "대여점", + "mk": "Изнајмувачница", + "nl": "Verhuurwinkel", + "pl": "Wypożyczalnia", + "pt-BR": "Locadora", + "pt": "Loja de aluguer de material em geral", + "sv": "Hyrbutik", + "tr": "Kiralık Dükkan", + "uk": "Станція прокату", + "vi": "Cho thuê Hàng hóa", + "zh-TW": "租賃店" + } + }, + "shop/repair": { + "title": { + "C": "Repair Shop", + "de": "Reparaturgeschäft", + "en": "Repair Shop", + "eo": "Riparejo", + "es": "Taller de reparaciones", + "ja": "修理店", + "mk": "Поправачница", + "nl": "Reparatiewinkel", + "pl": "Naprawy", + "pt-BR": "Oficina", + "pt": "Loja de reparações", + "sv": "Reparatör", + "uk": "Ремонт", + "zh-TW": "維修店" + } + }, + "shop/scuba_diving": { + "title": { + "C": "Scuba Diving Shop", + "ar": "متجر غوص تحت الماء", + "ast": "Tienda de merguyu", + "ca": "Botiga de submarinisme", + "cs": "Potřeby pro potápěče", + "da": "Dykkerudstyrsbutik", + "de": "Tauchwarengeschäft", + "el": "Κατάστημα Εξοπλισμού Καταδύσεων", + "en-GB": "Scuba Diving Shop", + "en": "Scuba Diving Shop", + "eo": "Subakvad-aparata vendejo", + "es": "Tienda de buceo", + "et": "Sukeldustarvikute kauplus", + "fa": "فروشگاه لوازم غواصی", + "fi": "Sukellusliike", + "fr": "Magasin de matériel de plongée sous-marine", + "gl": "Tenda de mergullo", + "he": "חנות לצוללנים", + "hr": "Prodavaonica opreme za ronjenje", + "hu": "Búvárfelszerelés-bolt", + "id": "Toko Perlengkapan Menyelam", + "is": "Verslun með köfunarvörur", + "it": "Negozio di attrezzatura per subacquei", + "ja": "スキューバダイビングショップ", + "ko": "스쿠버 다이빙 가게", + "lt": "Povandeninio nardymo parduotuvė", + "mk": "Продавница за нуркачка опрема", + "nl": "Duikwinkel", + "no": "Dykkerutstyrsbutikk", + "pl": "Sklep nurkowy", + "pt-BR": "Loja de Equipamentos de Mergulho", + "pt": "Loja de equipamento de mergulho", + "ro": "Magazin de Scufundări", + "ru": "Магазин подводного снаряжения", + "sk": "Obchod s potápačským vybavením", + "sl": "Trgovina s potapljaško opremo", + "sr": "Продавница ронилачке опреме", + "sv": "Dykarbutik", + "tr": "Tüple Dalış Mağazası", + "uk": "Підводне плавання", + "vi": "Tiệm Dụng cụ Lặn Scuba", + "zh-CN": "潜水商店", + "zh-HK": "潛水用品店", + "zh-TW": "潛水用品店" + } + }, + "shop/seafood": { + "title": { + "C": "Seafood Shop", + "ar": "متجر مأكولات بحرية", + "ast": "Mariscos", + "ca": "Marisqueria", + "cs": "Rybárna", + "da": "Fiskehandler", + "de": "Fischgeschäft", + "el": "Κατάστημα Θαλασσινών", + "en-GB": "Seafood Shop", + "en": "Seafood Shop", + "eo": "Marfrukta vendejo", + "es": "Tienda de pescados y mariscos", + "et": "Kalapood", + "fa": "فروشگاه غذای دریایی", + "fi": "Meriruokakauppa", + "fr": "Poissonnerie / Vente de fruits de mer", + "gl": "Peixaría", + "he": "חנות למאכלי ים", + "hr": "Ribarnica", + "hu": "Halbolt", + "id": "Toko HIdangan Laut", + "is": "Fiskverslun", + "it": "Pescheria", + "ja": "魚屋", + "ko": "해산물 가게", + "lt": "Jūros gėrybių parduotuvė", + "mk": "Продавница за морска храна", + "nl": "Viswinkel", + "no": "Sjømatbutikk", + "pl": "Sklep z rybami i owocami morza", + "pt-BR": "Peixaria ou loja de frutos do mar", + "pt": "Peixaria", + "ro": "Magazin de Fructe de Mare", + "ru": "Магазин морепродуктов", + "sk": "Obchod s morskými špecialitami", + "sl": "Ribarnica", + "sr": "Продавница морске хране", + "sv": "Fiskaffär", + "tr": "Deniz Ürünleri Mağazası", + "uk": "Морепродукти", + "vi": "Tiệm Hải sản", + "zh-CN": "海鲜店", + "zh-HK": "海鮮店", + "zh-TW": "海產店" + } + }, + "shop/second_hand": { + "title": { + "C": "Consignment/Thrift Store", + "ar": "محل لبيع البضائع المستعملة", + "ast": "Reventa d'empeños", + "ca": "Consigna", + "cs": "Second hand", + "da": "Genbrugsbutik", + "de": "Second-Hand-Laden", + "en-GB": "Second Hand Shop", + "en": "Consignment/Thrift Store", + "eo": "Brokantejo", + "es": "Tienda de segunda mano", + "et": "Komisjonikauplus", + "fa": "دست دوم فروشی", + "fi": "Käytetyn tavaran kauppa", + "fr": "Dépôt-vente/produits d'occasion", + "gl": "Tenda de segunda man", + "he": "חנות יד שניה", + "hu": "Használtáru-bolt", + "id": "Jual Titip/Pasar Loak", + "is": "Notað og nýtt", + "it": "Negozio di articoli usati", + "ja": "リサイクルショップ", + "ko": "위탁/중고품 할인 매장", + "mk": "Продавница за половни работи", + "nl": "Tweedehandswinkel", + "no": "Gjenbruksbutikk", + "pl": "Sklep z rzeczami używanymi", + "pt-BR": "Brechó", + "pt": "Loja de produtos em segunda mão", + "ro": "Magazin de Depozite", + "ru": "Магазин секонд хенда", + "sk": "Second hand", + "sr": "Слање робе", + "sv": "Second hand", + "tr": "Bit Pazarı", + "uk": "Благодійний магазин", + "vi": "Tiệm Mua lại", + "zh-CN": "二手市场", + "zh-HK": "寄賣/二手店", + "zh-TW": "格仔鋪/二手店" + } + }, + "shop/sewing": { + "title": { + "C": "Sewing Supply Shop", + "ar": "متجر مستلزمات خياطة", + "cs": "Šicí potřeby, galanterie", + "da": "Syforretning", + "de": "Kurzwarenladen", + "el": "Κατάστημα Προμηθειών για Ράψιμο", + "en": "Sewing Supply Shop", + "eo": "Kudrilar-vendejo", + "es": "Tienda de suministros de costura", + "fa": "فروشگاه لوازم خیاطی / خرازی", + "fi": "Ompelutarvikeliike", + "fr": "Magasin de couture", + "gl": "Tenda de artigos de costura", + "he": "חנות ציוד תפירה", + "hu": "Varrásfelszerelés bolt", + "is": "Saumavöruverslun", + "it": "Merceria", + "ja": "手芸用品店", + "ko": "바느질 용품 가게", + "mk": "Шивачки набавки", + "nl": "Naaiwinkel", + "no": "Sybutikk", + "pl": "Pasmanteria", + "pt-BR": "Loja de suprimentos de costura", + "pt": "Retrosaria", + "ru": "Швейные принадлежности", + "sk": "Galantéria", + "sr": "Продавница кројачке робе", + "sv": "Sybutik", + "tr": "Dikiş Malzemeleri Dükkanı", + "uk": "Приладдя для шиття", + "vi": "Tiệm Đồ Kim chỉ", + "zh-TW": "縫紉用品店" + } + }, + "shop/shoe_repair": { + "title": { + "C": "Shoe Repair Shop", + "cs": "Opravna obuvi", + "de": "Schuhreparatur", + "en": "Shoe Repair Shop", + "eo": "Ŝu-riparejo", + "es": "Taller de reparación de calzado", + "fr": "Cordonnier", + "he": "חנות לתיקון נעליים", + "it": "Calzolaio", + "ja": "靴修理店", + "ko": "신발 수선점", + "mk": "Чевлар", + "nl": "Schoenenreparatiewinkel", + "pl": "Szewc (naprawa obuwia)", + "pt-BR": "Loja de conserto de calçados", + "pt": "Reparador de sapatos", + "ru": "Ремонт обуви", + "sk": "Oprava obuvi", + "sr": "Обућар", + "sv": "Skomakare", + "tr": "Ayakkabı Tamir Mağazası", + "uk": "Ремонт взуття", + "vi": "Tiệm Sửa Giày", + "zh-TW": "修鞋店" + } + }, + "shop/shoes": { + "title": { + "C": "Shoe Store", + "af": "Skoenwinkel", + "ar": "متجر أحذية", + "ast": "Zapatería", + "bg": "Магазин за обувки", + "bn": "জুতোর দোকান", + "bs": "Prodavnica obuće", + "ca": "Sabateria", + "cs": "Obuvnictví", + "da": "Skobutik", + "de": "Schuhgeschäft", + "el": "Κατάστημα Υπόδησης", + "en-GB": "Shoe Shop", + "en": "Shoe Store", + "eo": "Ŝua vendejo", + "es": "Zapatería", + "et": "Kingapood", + "fa": "کفش فروشی", + "fi": "Kenkäkauppa", + "fr": "Magasin de chaussures", + "gl": "Zapataría", + "he": "חנות נעליים", + "hr": "Prodavaonica obuće", + "hu": "Cipőbolt", + "id": "Toko Sepatu", + "is": "Skóbúð", + "it": "Negozio di scarpe", + "ja": "靴店", + "kn": "ಮೆಟ್ಟು ಅಂಗಡಿ", + "ko": "신발 가게", + "lt": "Batų parduotuvė", + "lv": "Apavu veikals", + "mk": "Продавница за обувки", + "nl": "Schoenenwinkel", + "no": "Skobutikk", + "pl": "Sklep obuwniczy", + "pt-BR": "Loja de Calçados", + "pt": "Sapataria", + "ro": "Magazin de Ghete", + "ru": "Обувь", + "sk": "Obchod s obuvov", + "sl": "Trgovina s čevlji", + "sr": "Продавница обуће", + "sv": "Skoaffär", + "ta": "காலணியகம்", + "tr": "Ayakkabı Mağazası", + "uk": "Взуття", + "vi": "Tiệm Giày", + "yue": "鞋舖", + "zh-CN": "鞋店", + "zh-HK": "鞋舖", + "zh-TW": "鞋店", + "zh": "鞋店" + } + }, + "shop/spices": { + "title": { + "C": "Spice Shop", + "cs": "koření, bylinky", + "da": "Kryddeributik", + "de": "Gewürzladen", + "el": "Κατάστημα Μπαχαρικών", + "en": "Spice Shop", + "eo": "Spica vendejo", + "es": "Tienda de especias", + "fi": "Maustekauppa", + "fr": "Magasin d'épices", + "gl": "Tenda de especias", + "he": "חנות תבלינים", + "hu": "Fűszerbolt", + "it": "Negozio di spezie", + "ja": "スパイス店", + "ko": "향신료 가게", + "mk": "Продавница за зачини", + "nl": "Winkel voor kruiden", + "pl": "Sklep z przyprawami", + "pt-BR": "Loja de especiarias", + "pt": "Loja de especiarias", + "sk": "Obchod s koreninami", + "sr": "Продавница зачина", + "sv": "Affär för kryddor", + "tr": "Baharat Mağazası", + "uk": "Спеції", + "vi": "Tiệm Gia vị", + "zh-CN": "香料店", + "zh-TW": "香料店" + } + }, + "shop/sports": { + "title": { + "C": "Sporting Goods Store", + "af": "Sportwinkel", + "ar": "متجر أدوات رياضية", + "ast": "Material deportivu", + "bg": "Спортен магазин", + "bn": "খেলার সামগ্রির দোকান", + "bs": "Prodavnica sportske opreme", + "ca": "Botiga d'esports", + "cs": "Sportovní potřeby", + "da": "Sportsudstyrsbutik", + "de": "Sportgeschäft", + "el": "Κατάστημα Αθλητικών Ειδών", + "en-GB": "Sporting Goods Shop", + "en": "Sporting Goods Store", + "eo": "Sporta vendejo", + "es": "Tienda de artículos deportivos", + "et": "Sporditarvete pood", + "fa": "فروشگاه لوازم ورزشی", + "fi": "Urheiluliike", + "fr": "Magasin d'équipement sportif", + "gl": "Tenda de deportes", + "he": "חנות לאביזרי ספורט", + "hr": "Prodavaonica sportske opreme", + "hu": "Sportbolt", + "id": "Toko Olahraga", + "is": "Íþróttaverslun", + "it": "Negozio di articoli sportivi", + "ja": "スポーツ用品店", + "ko": "스포츠 용품 가게", + "lt": "Sporto reikmenų parduotuvė", + "lv": "Sporta veikals", + "mk": "Продавница за спортска опрема", + "nl": "Sportzaak", + "no": "Sportsbutikk", + "pl": "Sklep sportowy", + "pt-BR": "Loja de Equipamentos Esportivos", + "pt": "Loja de artigos desportivos", + "ro": "Magazin de Haine de Sport", + "ru": "Спорттовары", + "sk": "Obchod so športovými potrebami", + "sl": "Športna trgovina", + "sr": "Продавница спортске опреме", + "sv": "Sportaffär", + "tr": "Spor Ürünleri Mağazası", + "uk": "Спорттовари", + "vi": "Tiệm Dụng cụ Thể thao", + "yue": "運動舖", + "zh-CN": "体育用品店", + "zh-HK": "運動用品店", + "zh-TW": "運動用品店", + "zh": "体育用品店" + } + }, + "shop/stationery": { + "title": { + "C": "Stationery Store", + "af": "Skryfbehoeftewinkel", + "ar": "متجر أدوات مكتبية", + "ast": "Papelería", + "bg": "Магазин за канцеларски стоки", + "bs": "Prodavnica kancelarijske opreme", + "ca": "Papereria", + "cs": "Kancelářské potřeby", + "da": "Papirforhandler", + "de": "Schreibwarengeschäft", + "el": "Κατάστημα Γραφικής Ύλης", + "en-GB": "Stationery Shop", + "en": "Stationery Store", + "eo": "Papervara vendejo", + "es": "Artículos de papelería y oficina", + "et": "Kirjatarvete kauplus", + "fa": "فروشگاه نوشت‌افزار", + "fi": "Toimistotarvikekauppa", + "fr": "Papeterie", + "gl": "Papelaría", + "he": "חנות לדברי כתיבה", + "hr": "Papirnica", + "hu": "Írószerbolt", + "id": "Toko Alat Tulis", + "is": "Skriffangaverslun", + "it": "Negozio di cancelleria", + "ja": "文具店", + "ko": "문구점", + "lt": "Kanceliarinių prekių parduotuvė", + "lv": "Rakstāmlietu veikals", + "mk": "Канцелариски материјали", + "nl": "Kantoorboekhandel", + "no": "Papirhandel", + "pl": "Sklep papierniczy", + "pt-BR": "Papelaria", + "pt": "Papelaria", + "ru": "Канцелярские товары", + "sk": "Papierníctvo", + "sl": "Papirnica", + "sr": "Продавница канцеларијске опреме", + "sv": "Pappershandel", + "tr": "Kırtasiye", + "uk": "Канцтовари", + "vi": "Tiệm Văn phòng phẩm", + "yue": "文具舖", + "zh-CN": "文具店", + "zh-HK": "文具店", + "zh-TW": "文具店", + "zh": "文化用品店" + } + }, + "shop/storage_rental": { + "title": { + "C": "Storage Rental", + "ar": "تأجير أماكن التخزين", + "ast": "Alquiler d'almacenes", + "ca": "Lloguer de magatzem", + "cs": "Skladovací prostor", + "da": "Lagerhotel", + "de": "Lagerraumvermieter", + "el": "Ενοικιαζόμενος Χώρος Αποθήκευσης", + "en-GB": "Storage Rental", + "en": "Storage Rental", + "eo": "Magazena spaco por lui", + "es": "Alquiler de depósito", + "fa": "کرایه انبار", + "fi": "Varastonvuokrauspalvelu", + "fr": "Location de stockage - Ne pas utiliser", + "gl": "Alugueiro de almacéns", + "he": "שטח אחסון להשכרה", + "hu": "Tárolóhely bérbeadása", + "is": "Geymsluleiga", + "it": "Box a noleggio", + "ja": "レンタル倉庫", + "ko": "저장공간 대여소", + "mk": "Изнамјување складиштен простор", + "nl": "Verworpen tag, gebruik dit niet", + "no": "Minilager", + "pl": "Przechowalnia rzeczy (długoterminowa)", + "pt-BR": "Aluguel de Armazenamento", + "pt": "Aluguer de depósitos", + "ru": "Аренда складских помещений", + "sk": "Prenájom skladových priestorov", + "sl": "Najem shrambnih prostorov", + "sr": "Изнајмљивање складишта", + "sv": "Hyrlager", + "tr": "Depo Kiralama Mağazası", + "uk": "Склади в оренду", + "vi": "Cho thuê Chỗ Để đồ", + "zh-CN": "租赁处", + "zh-HK": "存倉", + "zh-TW": "儲物空間出租" + } + }, + "shop/supermarket": { + "title": { + "C": "Supermarket", + "af": "Supermark", + "ar": "سوبر ماركت", + "ast": "Supermercáu", + "bg": "Супермаркет", + "bn": "সুপারমার্কেট", + "bs": "Supermarket", + "ca": "Supermercat", + "cs": "Supermarket", + "da": "Supermarked", + "de": "Supermarkt", + "dv": "ސުޕަރމާރކެޓް", + "el": "Supermarket", + "en-GB": "Supermarket", + "en": "Supermarket", + "eo": "Superbazaro", + "es": "Supermercado", + "et": "Supermarket", + "fa": "فروشگاه بزرگ", + "fi": "Supermarketti", + "fr": "Supermarché", + "gl": "Supermercado", + "he": "סופרמרקט", + "hr": "Veletrgovina", + "hu": "Szupermarket", + "id": "Supermarket", + "is": "Stórmarkaður", + "it": "Supermercato", + "ja": "スーパーマーケット", + "ko": "슈퍼마켓", + "lt": "Prekybos centras", + "lv": "Lielveikals", + "mk": "Супермаркет", + "ne": "सुपरमार्केट", + "nl": "Supermarkt", + "no": "Supermarked", + "pl": "Supermarket", + "pt-BR": "Supermercado", + "pt": "Supermercado / Hipermercado", + "ro": "Supermarket", + "ru": "Супермаркет", + "sk": "Supermarket", + "sl": "Supermarket", + "so": "Suuq-weyne", + "sq": "Supermarket", + "sr": "Самопослуга", + "sv": "Mataffär", + "te": "సుపర్ మార్కెట్", + "tr": "Süpermarket", + "uk": "Супермаркет", + "vi": "Siêu thị", + "yue": "超級市場", + "zh-CN": "超市", + "zh-HK": "超級市場", + "zh-TW": "超級市場", + "zh": "超级市场" + } + }, + "shop/swimming_pool": { + "title": { + "C": "Pool Supply Store", + "cs": "bazény", + "de": "Swimmingpoolbedarf", + "en": "Pool Supply Store", + "eo": "Vendejo de naĝej-akcesoriaĵoj", + "es": "Tienda de suministros para piscinas", + "fa": "فروشگاه لوازم استخر", + "fi": "Uima-allasliike", + "fr": "Magasin de matériel de piscine", + "gl": "Tenda de subministracións para piscinas", + "he": "חנות ציוד לבריכות", + "hu": "Medence kellékek", + "it": "Negozio per rifornimenti per piscina", + "ja": "プール用品店", + "ko": "수영장 용품 가게", + "mk": "Базенски залихи", + "nl": "Winkel voor zwembadbenodigdheden", + "pl": "Sklep z akcesoriami do basenów", + "pt-BR": "Loja de suprimentos para piscinas", + "pt": "Loja de acessórios para piscinas", + "sv": "Butik för pooltillbehör", + "tr": "Havuz Malzemeleri Mağazası", + "uk": "Обладнання для басейнів", + "zh-TW": "泳池用品商店" + } + }, + "shop/tailor": { + "title": { + "C": "Tailor", + "ar": "خياط", + "ast": "Sastrería", + "ca": "Sastreria", + "cs": "Krejčovství", + "da": "Skrædder", + "de": "Schneider", + "el": "Ράφτης", + "en-GB": "Tailor", + "en": "Tailor", + "eo": "Tajlora laborejo/vendejo", + "es": "Sastrería", + "et": "Rätsep", + "fa": "خیاط", + "fi": "Räätäliliike", + "fr": "Tailleur", + "gl": "Xastraría", + "he": "חייט", + "hr": "Krojač", + "hu": "Szabó", + "id": "Tukang Jahit", + "is": "Skraddari", + "it": "Sartoria", + "ja": "仕立屋", + "kn": "ದರ್ಜಿ", + "ko": "양복점", + "mk": "Кројач", + "ms": "Kedai Tukang Jahit", + "nl": "Kleermaker", + "no": "Skredder", + "pl": "Krawiec / usługi krawieckie", + "pt-BR": "Alfaiataria", + "pt": "Alfaiate", + "ru": "Портной", + "sk": "Krajčírstvo", + "sl": "Krojač", + "sr": "Kројач", + "sv": "Skräddare", + "ta": "தையல்காரர்", + "tr": "Terzi", + "uk": "Кравець", + "vi": "Tiệm May", + "zh-CN": "裁缝店", + "zh-HK": "裁縫", + "zh-TW": "裁縫" + } + }, + "shop/tattoo": { + "title": { + "C": "Tattoo Parlor", + "ar": "صالون الوشم", + "ast": "Tatuaxes", + "ca": "Centre de tatuatges", + "cs": "Tetovací salón", + "da": "Tatovør", + "de": "Tätowierer", + "el": "Στούντιο Τατουάζ", + "en-GB": "Tattoo Parlor", + "en": "Tattoo Parlor", + "eo": "Salono de tatuado", + "es": "Salón de tatuajes", + "et": "Tatoveeringu salong", + "fa": "سالن تاتو", + "fi": "Tatuointisalonki", + "fr": "Salon de tatouage", + "gl": "Salón de tatuaxes", + "he": "מכון קעקועים", + "hr": "Studio za tetoviranje", + "hu": "Tetováló szalon", + "id": "Jasa Pembuatan Tato", + "is": "Húðflúrstofa", + "it": "Studio per Tatuaggi", + "ja": "タトゥースタジオ", + "ko": "문신 가게", + "lt": "Tatuiruočių salonas", + "lv": "Tetovējumu veikals", + "mk": "Тетоважи", + "nl": "Tattoozetter", + "no": "Tatovør", + "pl": "Studio tatuażu", + "pt-BR": "Estúdio de Tatuagem", + "pt": "Estúdio de tatuagens", + "ro": "Artist de Tatuaje", + "ru": "Тату салон", + "sk": "Tetovací salón", + "sl": "Salon za tetovažo", + "sr": "Салон за тетоваже", + "sv": "Tatueringsstudio", + "tr": "Dövmeci", + "uk": "Тату салон", + "vi": "Tiệm Xăm", + "zh-CN": "纹身店", + "zh-HK": "紋身店", + "zh-TW": "刺青店" + } + }, + "shop/tea": { + "title": { + "C": "Tea Store", + "ar": "متجر شاي", + "ast": "Tienda de tes", + "ca": "Botiga de te", + "cs": "Obchod s čajem", + "da": "Tebutik", + "de": "Teegeschäft", + "el": "Τεϊοπωλείο", + "en-GB": "Tea Shop (Retail)", + "en": "Tea Store", + "eo": "Tea vendejo", + "es": "Tienda de té", + "et": "Teepood", + "fa": "فروشگاه چای", + "fi": "Teekauppa", + "fr": "Magasin de thés", + "gl": "Tenda de té", + "he": "חנות תה", + "hr": "Trgovina za čajeve", + "hu": "Teaüzlet", + "id": "Toko Teh", + "is": "Teverslun", + "it": "Negozio di tè", + "ja": "茶舗", + "ko": "차 가게", + "lt": "Arbatos parduotuvė", + "lv": "Tējas veikals", + "mk": "Продавница за чај", + "nl": "Theewinkel", + "no": "Tebutikk", + "pl": "Sklep z herbatą", + "pt-BR": "Loja de Chás", + "pt": "Loja de chás", + "ro": "Magazin de Ceaiuri", + "ru": "Чайный магазин", + "sk": "Obchod s čajom", + "sl": "Čajnica", + "sr": "Чајџиница", + "sv": "Te-butik", + "ta": "தேநீர் கடை", + "tr": "Çaycı", + "uk": "Чай", + "vi": "Tiệm Trà Khô", + "zh-CN": "茶叶商店", + "zh-HK": "茶莊", + "zh-TW": "茶行" + } + }, + "shop/telecommunication": { + "title": { + "C": "Telecom Retail Store", + "cs": "telekomunikační prodejna", + "de": "Telekommunikationsfachgeschäft", + "en": "Telecom Retail Store", + "eo": "Oficejo de telekomunikada firmao (vendo)", + "es": "Tienda minorista de telecomunicaciones", + "et": "Sidefirma pood", + "fa": "فروشگاه لوازم مخابراتی", + "fi": "Teleoperaattorin myymälä", + "fr": "Magasin de compagnie de télécommunication", + "gl": "Tenda de subministracións de telecomunicación", + "he": "חנות טלפונים", + "it": "Negozio al dettaglio di Telefonia", + "ja": "通信サービス店", + "ko": "통신사 대리점", + "mk": "Телекомуникациска продавница", + "nl": "Telecomwinkel", + "pl": "Dostawca Internetu/telefonu/TV", + "pt-BR": "Loja de telecomunicações", + "pt": "Loja de telecomunicações", + "sv": "Telekombutik", + "tr": "Telekom Perakende Mağazası", + "uk": "Магазин телекомунікаційного обладнання", + "zh-CN": "电信零售店", + "zh-TW": "通訊行" + } + }, + "shop/ticket": { + "title": { + "C": "Ticket Seller", + "ar": "بائع تذاكر", + "ast": "Venta d'entraes", + "ca": "Venedor de tiquets", + "cs": "Prodejna vstupenek", + "da": "Billetsælger", + "de": "Eintrittskartenverkäufer", + "el": "Εκδοτήριο Εισιτηρίων", + "en-GB": "Ticket Seller", + "en": "Ticket Seller", + "eo": "Biletejo", + "es": "Venta de boletos", + "et": "Piletikauplus", + "fa": "بلیط فروشی", + "fi": "Lipunmyyntipiste", + "fr": "Boutique de vente de billets", + "gl": "Venda de entradas", + "he": "עמדת מכירת כרטיסים", + "hr": "Prodavač ulaznica", + "hu": "Jegyárus", + "id": "Penjual Tiket", + "is": "Miðasala", + "it": "Rivenditore di Biglietti", + "ja": "チケット店", + "ko": "티켓 판매소", + "lt": "Bilietų pardavėjas", + "lv": "Biļešu kase", + "mk": "Билетарница", + "nl": "Ticketverkoop", + "no": "Billettutsalg", + "pl": "Sprzedaż biletów", + "pt-BR": "Bilheteria", + "pt": "Bilheteira", + "ro": "Vânzător de Bilete", + "ru": "Билетная касса", + "sk": "Predajňa vstupeniek", + "sl": "Prodajalna vstopnic", + "sr": "Билетарница", + "sv": "Biljettförsäljning", + "tr": "Bilet Satıcısı", + "uk": "Квиткова каса", + "vi": "Đại lý Bán Vé", + "zh-CN": "售票处", + "zh-HK": "門票售賣", + "zh-TW": "賣票亭" + } + }, + "shop/tiles": { + "title": { + "C": "Tile Shop", + "ar": "متجر بلاط", + "ast": "Tienda d'azulexos", + "cs": "Obchod s obklady", + "da": "Fliseforhandler", + "de": "Fliesenhändler", + "el": "Κατάστημα Πλακιδίων", + "en-GB": "Tile Shop", + "en": "Tile Shop", + "eo": "Kahela vendejo", + "es": "Tienda de azulejos", + "fa": "کاشی فروشی", + "fi": "Laattamyymälä", + "fr": "Magasin de carrelage", + "gl": "Tenda de azulexos", + "he": "חנות מרצפות", + "hu": "Csempebolt", + "is": "Flísaverslun", + "it": "Negozio di piastrelle", + "ja": "タイル店", + "ko": "타일 가게", + "lv": "Flīžu veikals", + "mk": "Продавница за плочки", + "nl": "Tegelwinkel", + "no": "Flisebutikk", + "pl": "Sklep z płytkami ceramicznymi", + "pt-BR": "Loja de Azulejos", + "pt": "Loja de azulejos", + "ru": "Магазин плитки", + "sr": "Продавница керамике", + "sv": "Kakelbutik", + "tr": "Karo Dükkanı", + "uk": "Кахель", + "vi": "Tiệm Ngói", + "zh-CN": "瓷砖商店", + "zh-TW": "磁磚商店" + } + }, + "shop/tobacco": { + "title": { + "C": "Tobacco Shop", + "ar": "محل بيع التبغ", + "ast": "Estancu", + "ca": "Estanc", + "cs": "Kuřácké potřeby", + "da": "Tobaksforretning", + "de": "Tabakwarengeschäft", + "el": "Κατάστημα Ειδών Καπνού", + "en-GB": "Tobacco Shop", + "en": "Tobacco Shop", + "eo": "Tabaka vendejo", + "es": "Tienda de tabaco", + "et": "Tubakapood", + "fa": "فروشگاه مواد افیونی تنباکو", + "fi": "Tupakkapuoti", + "fr": "Bureau de tabac", + "gl": "Estanco", + "he": "חנות טבק", + "hr": "Trgovina za duhanske proizvode", + "hu": "Dohánybolt", + "id": "Toko Tembakau", + "is": "Tóbaksverslun", + "it": "Tabaccheria", + "ja": "たばこ店", + "ko": "담배 가게", + "lt": "Tabako parduotuvė", + "lv": "Tabakas veikals", + "mk": "Продавница за тутун", + "nl": "Tabakwinkel", + "no": "Tobakksbutikk", + "pl": "Sklep z tytoniem", + "pt-BR": "Tabacaria", + "pt": "Tabacaria", + "ro": "Tăbăcărie", + "ru": "Табачный магазин", + "sk": "Obchod s tabakom", + "sl": "Tobačna trgovina", + "sr": "Дуванџиница", + "sv": "Tobaksbutik", + "ta": "புகையிலைக் கடை", + "tr": "Tütüncü", + "uk": "Тютюн", + "vi": "Tiệm Thuốc lá", + "zh-CN": "烟草店", + "zh-HK": "煙草店", + "zh-TW": "菸店" + } + }, + "shop/tool_hire": { + "title": { + "C": "Tool Rental", + "cs": "půjčovna nářadí", + "de": "Werkzeugverleih", + "en": "Tool Rental", + "eo": "Il-pruntejo", + "es": "Alquiler de herramientas", + "fi": "Työkaluvuokraamo", + "fr": "Location d'outils", + "gl": "Alugueiro de ferramentas", + "he": "השכרת כלים", + "it": "Noleggio Utensili", + "ja": "工具レンタル店", + "ko": "도구 대여점", + "mk": "Изнајмување алати", + "nl": "Gereedschapsverhuur", + "no": "Verktøyutleie", + "pl": "Wypożyczalnia narzędzi", + "pt-BR": "Aluguel de ferramentas", + "pt": "Aluguer de ferramentas", + "sk": "Požičovňa nástrojov", + "sr": "Изнајмљивање алата", + "sv": "Verktygsuthyrning", + "tr": "Alet Kiralama", + "uk": "Прокат інструмента", + "vi": "Cho thuê Công cụ", + "zh-TW": "工具租賃" + } + }, + "shop/toys": { + "title": { + "C": "Toy Store", + "af": "Speelgoedwinkel", + "ar": "متجر ألعاب", + "ast": "Xuguetería", + "bg": "Магазин за играчки", + "bn": "খেলনার দোকান", + "bs": "Prodavnica igračaka", + "ca": "Botiga de joguines", + "cs": "Hračkářství", + "da": "Legetøjsbutik", + "de": "Spielwarengeschäft", + "el": "Κατάστημα Παιχνιδιών", + "en-GB": "Toy Shop", + "en": "Toy Store", + "eo": "Ludila vendejo", + "es": "Juguetería", + "et": "Mänguasjapood", + "fa": "اسباب بازی فروشی", + "fi": "Lelukauppa", + "fr": "Magasin de jouets", + "gl": "Tenda de xoguetes", + "he": "חנות צעצועים", + "hr": "Prodavaonica igračaka", + "hu": "Játékbolt", + "id": "Toko Mainan", + "is": "Dótabúð", + "it": "Negozio di giocattoli", + "ja": "玩具店", + "ko": "완구점", + "lt": "Žaislų parduotuvė", + "lv": "Rotaļlietu veikals", + "mk": "Продавница за играчки", + "ms": "Kedai Permainan", + "nl": "Speelgoedwinkel", + "no": "Lekebutikk", + "pl": "Sklep z zabawkami", + "pt-BR": "Loja de Brinquedos", + "pt": "Loja de brinquedos", + "ro": "Magazin de Jucării", + "ru": "Игрушки", + "sk": "Hračkárstvo", + "sl": "Trgovina igrač", + "sr": "Продавница играчака", + "sv": "Leksaksaffär", + "ta": "விளையாட்டுப் பொருட் கடை", + "te": "బొమ్మల కొట్టు", + "tr": "Oyuncak Mağazası", + "uk": "Іграшки", + "vi": "Tiệm Đồ chơi", + "yue": "玩具舖", + "zh-CN": "玩具店", + "zh-HK": "玩具店", + "zh-TW": "玩具店", + "zh": "玩具店" + } + }, + "shop/trade": { + "title": { + "C": "Trade Shop", + "cs": "stavebniny", + "da": "Brancheforhandler", + "de": "Baustoffhandel", + "el": "Εμπορικό Κατάστημα", + "en-GB": "Trade Shop", + "en": "Trade Shop", + "eo": "Pogranda vendejo (konstruaĵ‑materialoj)", + "es": "Tienda comercial / Corralón", + "fr": "Grossiste", + "gl": "Distribuidor", + "he": "חנות קמעונאית", + "hu": "Kereskedelmi üzlet", + "is": "Iðnaðarvörusala", + "it": "Materiali da edilizia", + "ja": "建築資材店", + "ko": "무역 가게", + "mk": "Занаетчиски набавки", + "nl": "Bouwmaterialenhandel", + "pl": "Skład materiałów budowlanych", + "pt-BR": "Distribuidor", + "pt": "Loja de materiais de construção", + "ru": "Оптовая база", + "sk": "Stavebniny", + "sr": "Трговачка продавница", + "sv": "Proffshandel", + "tr": "Ticaret Mağazası", + "uk": "Оптово-роздрібний магазин", + "vi": "Tiệm Công nghiệp", + "zh-CN": "材料商店", + "zh-TW": "材料行" + } + }, + "shop/travel_agency": { + "title": { + "C": "Travel Agency", + "af": "Reisagentskap", + "ar": "وكالة سفر", + "ast": "Axencia de viaxes", + "bg": "Туристическа агенция", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "en": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyages", + "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "lv": "Ceļojumu aģentūra", + "mk": "Туристичка агенција", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Бюро путешествий", + "sk": "Cestovná agentúra", + "sl": "Turistična agencija", + "so": "Wakaalad Socdaal", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Turizm Acentası", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "zh": "旅行社" + } + }, + "shop/trophy": { + "title": { + "C": "Trophy Shop", + "cs": "Prodejna trofejí", + "de": "Trophäengeschäft", + "en": "Trophy Shop", + "eo": "Vendejo de pokaloj kaj premioj", + "es": "Tienda de trofeos", + "gl": "Tenda de trofeos", + "he": "חנות מדליות", + "it": "Negozio di coppe", + "ja": "徽章店", + "ko": "트로피 가게", + "mk": "Продавница за трофеи", + "nl": "Trofeewinkel", + "pl": "Sklep z trofeami", + "pt-BR": "Loja de troféus", + "pt": "Loja de troféus", + "sk": "Obchod s trofejami", + "sr": "Продавница трофеја", + "sv": "Affär för troféer", + "tr": "Kupa Dükkanı", + "uk": "Магазин нагород", + "vi": "Tiệm Giải thưởng", + "zh-TW": "獎盃商店" + } + }, + "shop/tyres": { + "title": { + "C": "Tire Store", + "af": "Bandewinkel", + "ar": "محل بيع إطارات", + "ast": "Neumáticos", + "bg": "Магазин за автомобилни гуми", + "bs": "Prodavnica guma", + "ca": "Botiga de pneumàtics", + "cs": "Pneuservis", + "da": "Dækforhandler", + "de": "Reifenhandel", + "el": "Βουλκανιζατέρ", + "en-AU": "Tyre Shop", + "en-GB": "Tyre Shop", + "en": "Tire Store", + "eo": "Aerbenda vendejo", + "es": "Tienda de neumáticos", + "et": "Rehvipood", + "fa": "تایر فروشی", + "fi": "Rengasliike", + "fr": "Magasin de pneus", + "gl": "Tenda de pneumáticos", + "he": "חנות צמיגים", + "hr": "Prodavaonica pneumaticima", + "hu": "Autógumibolt", + "id": "Toko Ban", + "is": "Dekkjabúð", + "it": "Gommista", + "ja": "タイヤ店", + "ko": "타이어 가게", + "lt": "Padangų parduotuvė", + "lv": "Riepu veikals", + "mk": "Продавница за автогуми", + "ms": "Kedai Tayar", + "nl": "Bandenwinkel", + "no": "Dekkutsalg", + "pl": "Sklep z oponami / wulkanizacja", + "pt-BR": "Loja de pneus/borracharia", + "pt": "Loja de pneus", + "ro": "Magazin de Roți", + "ru": "Шины", + "sk": "Predajňa pneumatík", + "sl": "Prodaja pnevmatik", + "sr": "Продавница гума", + "sv": "Däckfirma", + "tr": "Araç Lastiği Mağazası", + "uk": "Колеса та шини", + "vi": "Tiệm Lốp xe", + "yue": "軚舖", + "zh-CN": "轮胎店", + "zh-HK": "輪胎店", + "zh-TW": "輪胎店", + "zh": "轮胎店" + } + }, + "shop/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaner Store", + "ar": "متجر المكنسات الكهربائية", + "ast": "Tienda d'aspiradores", + "ca": "Botiga d'aspiradors", + "cs": "Obchod s vysavači", + "da": "Støvsugerforhandler", + "de": "Staubsaugergeschäft", + "el": "Κατάστημα Ηλεκτρικών Σκουπών", + "en-GB": "Vacuum Cleaner Shop", + "en": "Vacuum Cleaner Store", + "eo": "Polvosuĉila vendejo", + "es": "Tienda de aspiradoras", + "et": "Tolmuimeja kauplus", + "fa": "فروشگاه جاروبرقی", + "fi": "Pölynimuriliike", + "fr": "Magasin d'électroménager de nettoyage", + "gl": "Tenda de aspiradoras", + "he": "חנות שואבי אבק", + "hr": "Trgovina za usisavače", + "hu": "Porszívóbolt", + "id": "Toko Pengisap Debu", + "is": "Verslun með ryksugur", + "it": "Negozio di aspirapolveri", + "ja": "掃除機店", + "ko": "진공청소기 가게", + "lv": "Putekļusūcēju veikals", + "mk": "Продавница за правосмукалки", + "nl": "Stofzuigerwinkel", + "no": "Støvsugerbutikk", + "pl": "Sklep z odkurzaczami", + "pt-BR": "Loja de Aspiradores de Pó", + "pt": "Loja de aspiradores", + "ro": "Magazin de Aspiratoare", + "ru": "Магазин по продаже пылесосов", + "sk": "Obchod s vysavačmi", + "sl": "Trgovina s sesalci", + "sr": "Продавница усисивача", + "sv": "Dammsugarbutik", + "tr": "Elektrikli Süpürge Mağazası", + "uk": "Пилотяги", + "vi": "Tiệm Máy Hút bụi", + "zh-CN": "吸尘器店", + "zh-HK": "吸塵機店", + "zh-TW": "吸塵器店" + } + }, + "shop/variety_store": { + "title": { + "C": "Variety Store", + "af": "Algemene handelaar", + "ar": "محل كل شيء", + "ast": "Bazar", + "bg": "Смесен магазин", + "bs": "Prodavnica mješovite robe", + "ca": "Botiga de tot a 100", + "cs": "Laciné zboží", + "da": "Spøg og skæmtbutik", + "de": "Sonderpostenmarkt", + "el": "Κατάστημα 1 ευρώ", + "en-GB": "Variety Store", + "en": "Variety Store", + "eo": "Ĉio-po-unu-spesmilo vendejo", + "es": "Tienda de variedades o bazar", + "et": "Kodukauba pood", + "fa": "فروشگاه متنوع و ارزان", + "fi": "Halpahalli", + "fr": "Magasin à prix unique ou à bas prix", + "gl": "Tenda de variedades ou bazar", + "he": "חנות מגוון מוצרים", + "hr": "Prodavaonica mješovite robe", + "hu": "100 forintos bolt", + "id": "Toserba", + "is": "Allrahandaverslun", + "it": "Negozio a prezzo fisso", + "ja": "雑貨店(低価格)", + "ko": "잡화점", + "mk": "Продавница за разновидна роба", + "nl": "Euroshop", + "pl": "Sklep z różnościami", + "pt-BR": "Loja de Variedades", + "pt": "Loja dos chineses", + "ro": "Magazin de Varietăți", + "ru": "Товары по одной цене", + "sk": "Obchod so zmiešaným tovarom", + "sl": "Trgovina z mešanim blagom", + "sr": "Продавница мешовите робе", + "sv": "Fyndbutik", + "tr": "Herşey 1 TL Mağazası", + "uk": "Універсам", + "vi": "Tiệm Tạp hóa", + "yue": "雜貨舖", + "zh-CN": "杂货店", + "zh-HK": "十蚊店", + "zh-TW": "雜貨店", + "zh": "杂货店" + } + }, + "shop/video": { + "title": { + "C": "Video Store", + "af": "Videowinkel", + "ar": "محل بيع وتأجير الأفلام", + "ast": "Tienda de videos", + "bg": "Видеотека", + "bs": "Video klub", + "ca": "Botiga de vídeos", + "cs": "Video obchod", + "da": "Videobutik", + "de": "Videothek", + "el": "Βιντεοκλάμπ", + "en-GB": "Video/DVD Shop", + "en": "Video Store", + "eo": "Filma vendejo/pruntejo", + "es": "Videoclub", + "et": "Videopood", + "fa": "فیلم فروشی", + "fi": "Videovuokraamo", + "fr": "Vidéo-club", + "gl": "Videoclube", + "he": "חנות סרטים", + "hr": "Videoteka", + "hu": "Videófilmbolt vagy -kölcsönző", + "id": "Toko Video", + "is": "Myndbandaverslun", + "it": "Videoteca", + "ja": "ビデオソフト店", + "ko": "비디오 가게", + "lt": "Vaizdo prekių parduotuvė", + "lv": "Video veikals", + "mk": "Видеотека", + "nl": "Videotheek", + "no": "Videoforhandler", + "pl": "Sklep/wypożyczalnia z filmami wideo/dvd", + "pt-BR": "Loja/Locadora de Vídeos", + "pt": "Videoclube", + "ro": "Magazin Video", + "ru": "Видеомагазин", + "sk": "Videopožičovňa", + "sl": "Videoteka", + "sr": "Видео-клуб", + "sv": "Videobutik", + "tr": "Film - Video Mağazası", + "uk": "Відео", + "vi": "Tiệm Phim", + "yue": "影視店", + "zh-CN": "影像店", + "zh-HK": "影視店", + "zh-TW": "錄影帶店", + "zh": "影像店" + } + }, + "shop/video_games": { + "title": { + "C": "Video Game Store", + "ar": "متجر العاب الفيديو", + "ast": "Tienda de videuxuegos", + "ca": "Botiga de videojocs", + "cs": "Obchod s videohrami", + "da": "Videospilbutik", + "de": "Videospielgeschäft", + "el": "Μαγαζί Βιντεοπαιχνιδιών", + "en-GB": "Video Games Shop", + "en": "Video Game Store", + "eo": "Videoluda vendejo", + "es": "Tienda de videojuegos", + "et": "Konsoolimängude pood", + "fa": "فروشگاه بازی ویدئویی", + "fi": "Videopeliliike", + "fr": "Magasin de location et vente de jeux vidéo", + "gl": "Tenda de videoxogos", + "he": "חנות למשחקי מחשב", + "hr": "Prodavaonica video igara", + "hu": "Videojátékbolt", + "id": "Toko Permainan Video", + "is": "Tölvuleikjaverslun", + "it": "Negozio di videogiochi", + "ja": "テレビゲーム販売店", + "ko": "비디오 게임 가게", + "lt": "Video Žaidimų parduotuvė", + "lv": "Videospēļu veikals", + "mk": "Продавница за видеоигри", + "nl": "Computerspelwinkel", + "no": "Dataspillbutikk", + "pl": "Sklep z grami wideo", + "pt-BR": "Loja de Vídeogames", + "pt": "Loja de videojogos", + "ro": "Magazin de Jocuri de Calculator", + "ru": "Магазин видеоигр", + "sk": "Obchod s videohrami", + "sl": "Trgovina z video igrami", + "sr": "Продавница видео-игара", + "sv": "TV-spel", + "tr": "Bilgisayar Oyun Mağazası", + "uk": "Комп’ютерні ігри", + "vi": "Tiệm Trò chơi Điện tử", + "zh-CN": "电子游戏店", + "zh-HK": "電子遊戲店", + "zh-TW": "電子遊戲店" + } + }, + "shop/watches": { + "title": { + "C": "Watches Shop", + "ar": "متجر الساعات اليدوية", + "ast": "Reloxería", + "ca": "Òptica", + "cs": "Hodinářství", + "da": "Urbutik", + "de": "Uhrengeschäft", + "el": "Κατάστημα Ρολογιών", + "en-GB": "Watches Shop", + "en": "Watches Shop", + "eo": "Horloĝa vendejo", + "es": "Relojería", + "et": "Kellapood", + "fa": "ساعت فروشی", + "fi": "Kellokauppa", + "fr": "Magasin de montres", + "gl": "Reloxaría", + "he": "שען", + "hr": "Trgovina Satovima", + "hu": "Órabolt (karóra)", + "is": "Úraverslun", + "it": "Negozio di orologi", + "ja": "腕時計店", + "ko": "손목시계 가게", + "lt": "Laikrodžių parduotuvė", + "lv": "Pulksteņu Veikals", + "mk": "Продавница за часовници", + "nl": "Horlogewinkel", + "no": "Urmaker", + "pl": "Sklep z zegarkami", + "pt-BR": "Relojoaria", + "pt": "Loja de relógios", + "ro": "Magazin de Ceasuri", + "ru": "Магазин часов", + "sk": "Obchod s hodinkami", + "sl": "Trgovina z urami", + "sr": "Продавница сатова", + "sv": "Klockaffär", + "tr": "Saatçi", + "uk": "Годинники", + "vi": "Tiệm Đồng hồ Đeo tay", + "zh-CN": "手表店", + "zh-HK": "手錶店", + "zh-TW": "鐘錶行" + } + }, + "shop/water": { + "title": { + "C": "Drinking Water Shop", + "ar": "متجر مياه شرب", + "cs": "Obchod s pitnou vodou", + "de": "Trinkwasserladen", + "el": "Κατάστημα Πόσης Νερού", + "en": "Drinking Water Shop", + "eo": "Trinkakv-vendejo", + "es": "Tienda de agua potable", + "et": "Joogivee pood", + "fa": "فروشگاه آب", + "fi": "Juomavesikauppa", + "fr": "Magasin d'eau potable", + "gl": "Tenda de auga potábel", + "he": "חנות מי שתייה", + "hu": "Ivóvíz bolt", + "it": "Negozio di acqua da bere", + "ja": "飲料水店", + "ko": "식수 가게", + "mk": "Продавница за пивка вода", + "nl": "Drinkwaterwinkel", + "pl": "Sklep z wodą pitną", + "pt-BR": "Loja de Água Potável", + "pt": "Loja de água potável", + "sk": "Obchod s pinou vodou", + "sr": "Продавница пијаће воде", + "sv": "Affär för dricksvatten", + "tr": "İçme Suyu Mağazası", + "uk": "Магазин питної води", + "vi": "Tiệm Nước uống", + "zh-CN": "饮水店", + "zh-TW": "飲用水商店" + } + }, + "shop/water_sports": { + "title": { + "C": "Watersport/Swim Shop", + "ar": "متجر رياضة مائية/سباحة", + "ast": "Tienda de natación/deportes acuáticos", + "ca": "Botiga d'esports aquàtics", + "cs": "Plavecké potřeby", + "da": "Svømmesport/Svømmeudstyrsbutik", + "de": "Wassersportgeschäft", + "el": "Κατάστημα Ειδών Θαλάσσιων Σπορ / Κολύμβησης", + "en-GB": "Watersport/Swim Shop", + "en": "Watersport/Swim Shop", + "eo": "Akvosport-aparata vendejo", + "es": "Tienda de deportes acuáticos / natación", + "et": "Veesporditarvete kauplus", + "fa": "فروشگاه لوازم ورزش‌های آبی / شنا", + "fi": "Vesiurheiluliike", + "fr": "Vente d'équipements et d'articles pour sports nautiques", + "gl": "Tenda de deportes acuáticos / natación", + "he": "חנות שחייה", + "hr": "Trgovina za vodene sportove", + "hu": "Vízisport-bolt", + "id": "Toko Renang/Olahraga Air", + "is": "Verslun með sund/vatnaíþróttavörur", + "it": "Negozio per sport acquatici", + "ja": "ウォータースポーツ用品店", + "ko": "수상 스포츠/수영 가게", + "mk": "Опрема за капење/водени спортови", + "nl": "Watersport-/Zwemwinkel", + "pl": "Sklep ze sprzętem do sportów wodnych", + "pt-BR": "Loja de Esportes Aquáticos", + "pt": "Loja de desportos aquáticos", + "ru": "Водный спорт/ Спорттовары", + "si": "ජල ක්‍රීඩා/ පිහිනුම් තටාකය", + "sk": "Ochod s plaveckým vybavením", + "sr": "Продавница пливачке опреме", + "sv": "Vattensport/simning", + "tr": "Su Sporları Mağazası", + "uk": "Водний спорт/Спорттовари", + "vi": "Tiệm Dụng cụ Bơi lội", + "zh-CN": "水上运动/泳具店", + "zh-HK": "水上活動/游泳用品店", + "zh-TW": "水上活動/泳具店" + } + }, + "shop/weapons": { + "title": { + "C": "Weapon Shop", + "ar": "متجر أسلحة", + "ast": "Armería", + "ca": "Armeria", + "cs": "Zbraně a střelivo", + "da": "Våbenbutik", + "de": "Waffengeschäft", + "el": "Κατάστημα Οπλισμού", + "en-GB": "Weapon Shop", + "en": "Weapon Shop", + "eo": "Armila vendejo", + "es": "Tienda de armas", + "et": "Relvapood", + "fa": "فروشگاه سلاح", + "fi": "Aseliike", + "fr": "Armurerie", + "gl": "Armaría", + "he": "חנות נשק קר", + "hr": "Trgovina za oružje", + "hu": "Fegyverbolt", + "id": "Toko Senjata", + "is": "Vopnaverslun", + "it": "Armeria", + "ja": "武器屋", + "ko": "무기 가게", + "lt": "Ginklų parduotuvė", + "lv": "Ieroču Veikals", + "mk": "Продавница за оружје", + "nl": "Wapenwinkel", + "no": "Våpenbutikk", + "pl": "Sklep z bronią", + "pt-BR": "Loja de Armas", + "pt": "Loja de armas", + "ro": "Magazin de Arme", + "ru": "Оружейный магазин", + "sk": "Ochod so zbraňami", + "sl": "Trgovina z orožjem", + "sr": "Оружарница", + "sv": "Vapenaffär", + "ta": "ஆயுதவிற்பனைக் கடை", + "tr": "Silah Mağazası", + "uk": "Зброя", + "vi": "Tiệm Súng", + "zh-CN": "武器店", + "zh-HK": "武器店", + "zh-TW": "武器店" + } + }, + "shop/wholesale": { + "title": { + "C": "Wholesale Store", + "ar": "متجر بيع بالجملة", + "cs": "Velkoobchodní sklad", + "de": "Großhandel", + "el": "Κατάστημα Χονδρικής", + "en-GB": "Wholesale Shop / Cash & Carry", + "en": "Wholesale Store", + "eo": "Pogranda vendejo", + "es": "Almacén al por mayor", + "et": "Hulgikauplus", + "fi": "Tukkukauppa", + "fr": "Commerce de gros", + "gl": "Almacén ó por maior", + "he": "חנות סיטונאות", + "hu": "Nagykereskedés", + "is": "Heildverslun", + "it": "Grossista", + "ja": "卸売店", + "ko": "도매상", + "mk": "Големопродажен центар", + "nl": "Groothandel", + "pl": "Hurtownia", + "pt-BR": "Atacadista", + "pt": "Loja grossista", + "ru": "Оптовый магазин", + "sk": "Veľkoobchod", + "sr": "Велепродајна продавница", + "sv": "Grosistaffär", + "ta": "மொத்தவிலைக் கடை", + "tr": "Toptan satış Mağazası", + "uk": "Гуртова торгівля", + "vi": "Tiệm Bán buôn", + "zh-CN": "批发市场", + "zh-TW": "批發商" + } + }, + "shop/wigs": { + "title": { + "C": "Wig Shop", + "cs": "Paruky", + "de": "Perückenladen", + "en": "Wig Shop", + "eo": "Vendejo de perukoj", + "es": "Tienda de pelucas", + "fr": "Magasin de perruques", + "gl": "Tenda de perrucas", + "he": "חנות פיאות", + "it": "Negozio di parrucche", + "ja": "かつら店", + "ko": "가발 가게", + "mk": "Продавница за перики", + "nl": "Pruikenwinkel", + "pl": "Sklep z perukami", + "pt-BR": "Loja de perucas", + "pt": "Loja de perucas", + "sk": "Obchod s parochňami", + "sv": "Affär för peruker", + "tr": "Peruk Mağazası", + "uk": "Магазин перук", + "vi": "Tiệm Tóc giả", + "zh-TW": "假髮專賣店" + } + }, + "shop/window_blind": { + "title": { + "C": "Window Blind Store", + "ar": "متجر ستائر نوافذ", + "ast": "Venta de persianes", + "ca": "Botiga de persianes", + "cs": "Obchod s roletami", + "da": "Persienneforhandler", + "de": "Fensterladengeschäft", + "el": "Κατάστημα σκιάστρων παραθύρου", + "en-GB": "Window Blind Shop", + "en": "Window Blind Store", + "eo": "Fenestr-kovrila vendejo", + "es": "Tienda de persianas", + "et": "Aknakatete kauplus", + "fa": "فروشگاه پرده و کرکره", + "fi": "Kaihdinmyymälä", + "fr": "Magasin de vente de stores", + "gl": "Tenda de persianas", + "he": "חנות וילונות", + "hu": "Redőnybolt", + "id": "Toko Kerai", + "is": "Verslun með rimlagluggatjöld", + "it": "Negozio di tapparelle e serrande", + "ja": "ブラインドカーテン専門店", + "ko": "창문 블라인드 가게", + "lv": "Logu žalūziju veikals", + "mk": "Продавница за завеси и ролетни", + "nl": "Jaloeziewinkel", + "no": "Persiennebutikk", + "pl": "Sklep z żaluzjami/roletami", + "pt-BR": "Loja de Persianas", + "pt": "Loja de estores", + "ru": "Магазин жалюзей", + "sk": "Obchod so žalúziami", + "sl": "Trgovina z okenskimi senčili", + "sv": "Persienner", + "tr": "Jaluzi Mağazası", + "uk": "Жалюзі, ролети", + "vi": "Tiệm Mành", + "zh-CN": "百叶窗店", + "zh-HK": "百葉簾店", + "zh-TW": "窗廉店" + } + }, + "shop/wine": { + "title": { + "C": "Wine Shop", + "ar": "متجر نبيذ", + "ast": "Bodega", + "ca": "Botiga de vins", + "cs": "Vinotéka", + "da": "Vinforretning", + "de": "Weinhandel", + "el": "Κάβα Κρασιών", + "en-GB": "Wine Shop", + "en": "Wine Shop", + "eo": "Vina vendejo", + "es": "Tienda de vinos", + "et": "Veinipood", + "fa": "فروشگاه شراب", + "fi": "Viinikauppa", + "fr": "Caviste", + "gl": "Tenda de viños", + "he": "חנות יינות", + "hr": "Prodavaonica vina", + "hu": "Borszaküzlet", + "id": "Toko Anggur", + "is": "Vínbúð", + "it": "Enoteca", + "ja": "ワイン店", + "ko": "와인 가게", + "lt": "Vyno parduotuvė", + "lv": "Vīna veikals", + "mk": "Винотека", + "nl": "Wijnhandel", + "no": "Vinbutikk", + "pl": "Sklep z winami", + "pt-BR": "Loja de Vinhos", + "pt": "Loja de vinhos", + "ro": "Magazin de Vinuri", + "ru": "Винный магазин", + "sk": "Vináreň", + "sl": "Vinoteka", + "sr": "Винарница", + "sv": "Vinaffär", + "tr": "Şarap Mağazası", + "uk": "Вино", + "vi": "Tiệm Rượu vang", + "yue": "酒舖", + "zh-CN": "酒品商店", + "zh-HK": "酒品店", + "zh-TW": "販酒店" + } + }, + "tourism/alpine_hut": { + "title": { + "C": "Alpine Hut", + "af": "Berghuisie", + "ar": "كوخ جبلي", + "ast": "Refuxu d'alpinismu", + "bg": "Хижа", + "bs": "Planinski dom", + "ca": "Refugi de muntanya", + "cs": "Horská chata", + "da": "Bjerghytte", + "de": "Bewirtschaftete Schutzhütte", + "el": "Αλπική Καλύβα", + "en-GB": "Alpine Hut", + "en": "Alpine Hut", + "eo": "Montara rifuĝejo", + "es": "Refugio de montaña", + "et": "Alpimaja", + "fa": "کلبه آلپ", + "fi": "Alppimaja", + "fr": "Refuge de montagne", + "gl": "Refuxio de montaña", + "he": "בקתה הררית", + "hr": "Planinarski dom", + "hu": "Menedékház", + "is": "Fjallakofi", + "it": "Rifugio", + "ja": "山小屋", + "ko": "고산장", + "lt": "Kalnų namelis", + "mk": "Планинарски дом", + "nl": "Berghut", + "no": "Fjellhytte", + "pl": "Chata górska", + "pt-BR": "Abrigo de Montanha", + "pt": "Albergue alpino", + "ro": "Cabană", + "ru": "Горный приют", + "sk": "Vysokohorská chata", + "sl": "Planinska koča", + "sr": "Планинарски дом", + "sv": "Fjällstation", + "tr": "Dağ Evi", + "uk": "Гірський притулок", + "vi": "Túp lều trên Núi", + "yue": "高山屋仔", + "zh-CN": "高山小屋", + "zh-HK": "高山小屋", + "zh-TW": "高山小屋", + "zh": "高山小屋" + } + }, + "tourism/apartment": { + "title": { + "C": "Guest Apartment / Condo", + "ar": "شقة سياحية", + "ca": "Habitatge de convidats", + "cs": "Byt/apartmán k pronájmu", + "da": "Gæstelejlighed/Ejerlejlighed", + "de": "Ferienwohnung", + "el": "Ξενώνας / Διαμέρισμα", + "en-GB": "Guest Apartment / Condo", + "en": "Guest Apartment / Condo", + "eo": "Apartamento feria (luprenebla)", + "es": "Apartamento de huéspedes", + "et": "Külaliskorter", + "fa": "آپارتمان مهمان / کاندو", + "fi": "Vierasmajoitus", + "fr": "Location de vacances", + "gl": "Apartamento de hóspedes", + "he": "דירה לאורחים", + "hr": "Turistički apartman", + "hu": "Apartman", + "is": "Gestaíbúð", + "it": "Affittacamere", + "ja": "リゾートマンション", + "ko": "게스트 아파트 / 콘도", + "lt": "Svečių apartamentai / butas", + "mk": "Пансион", + "nl": "Vakantieappartement", + "pl": "Mieszkanie na wynajem", + "pt-BR": "Apartamento de Temporada", + "pt": "Apartamento de alojamento local", + "ro": "Apartament de Închiriat", + "ru": "Гостевые апартаменты/квартира", + "sl": "Apartma / Gostišče", + "sr": "Гостински апартман", + "sv": "Turistlägenhet", + "tr": "Misafir Apartmanı", + "uk": "Мебльована квартира/Комплекс", + "vi": "Khu chung cư Nghỉ dưỡng", + "zh-CN": "出租公寓", + "zh-HK": "民宿公寓 / 短租公寓", + "zh-TW": "假日公寓" + } + }, + "tourism/aquarium": { + "title": { + "C": "Aquarium", + "ar": "حوض سمك", + "ast": "Acuariu", + "cs": "Akvárium", + "da": "Akvarium", + "de": "Aquarium", + "el": "Ενυδρείο", + "en-GB": "Aquarium", + "en": "Aquarium", + "eo": "Akvario", + "es": "Acuario", + "et": "Akvaarium", + "fa": "آکواریوم", + "fi": "Akvaario", + "fr": "Aquarium", + "gl": "Acuario", + "he": "אקווריום", + "hr": "Akvarij", + "hu": "Akvárium", + "is": "Sædýrasafn", + "it": "Acquario", + "ja": "水族館", + "ko": "아쿠아리움", + "lt": "Akvariumas", + "lv": "Akvārijs", + "mk": "Аквариум", + "ms": "Akuarium", + "nl": "Aquarium", + "no": "Akvarium", + "pl": "Akwarium", + "pt-BR": "Aquário", + "pt": "Aquário público", + "ro": "Acvariu", + "ru": "Аквариум", + "sk": "Akvárium", + "sl": "Akvarij", + "sr": "Акваријум", + "sv": "Akvarium", + "ta": "மீன் காட்சியகம்", + "tr": "Akvaryum", + "uk": "Акваріум", + "vi": "Thủy cung", + "zh-CN": "水族馆", + "zh-HK": "水族館", + "zh-TW": "水族館(展覽館)" + } + }, + "tourism/artwork": { + "title": { + "C": "Artwork", + "af": "Kunswerk", + "ar": "عمل فني", + "ast": "Obra d'arte", + "bg": "Произведение на изкуството", + "bs": "Umjetničko djelo", + "ca": "Obra d'art", + "cs": "Umělecké dílo", + "da": "Kunstværk", + "de": "Kunst", + "el": "Έργο τέχνης", + "en-GB": "Artwork", + "en": "Artwork", + "eo": "Artverko", + "es": "Obra de arte", + "et": "Kunstiteos", + "fa": "اثر هنری", + "fi": "Taideteos", + "fr": "Œuvre d'art", + "gl": "Obra artística", + "he": "אומנות", + "hr": "Umjetničko djelo", + "hu": "Műalkotás", + "id": "Karya Seni", + "is": "Listaverk", + "it": "Opera d'arte", + "ja": "パブリックアート", + "ko": "예술품", + "lt": "Meno kūrinys", + "lv": "Mākslas darbs", + "mk": "Уметничко дело", + "nl": "Kunstwerk", + "no": "Kunstverk", + "pl": "Dzieło sztuki", + "pt-BR": "Obra de Arte", + "pt": "Obra de arte pública", + "ru": "Произведение искусства", + "sk": "Umelecké dielo", + "sl": "Umetnina", + "sr": "Уметничко дело", + "sv": "Publik konst", + "ta": "ஓவியம்", + "tr": "Sanat Eseri", + "uk": "Витвір мистецтва", + "vi": "Nghệ phẩm", + "yue": "藝術品", + "zh-CN": "艺术品", + "zh-HK": "藝術品", + "zh-TW": "公共藝術", + "zh": "艺术品" + } + }, + "tourism/attraction": { + "title": { + "C": "Tourist Attraction", + "af": "Toerismeaantreklikheid", + "ar": "معلم سياحي", + "ast": "Atracción turística", + "bg": "Туристическа атракция", + "bn": "পর্যটক আকর্ষণ", + "bs": "Turistička atrakcija", + "ca": "Atracció turística", + "cs": "Pamětihodnost", + "da": "Turistattraktion", + "de": "Sehenswürdigkeit", + "el": "Τ", + "en-GB": "Tourist Attraction", + "en": "Tourist Attraction", + "eo": "Turisma vidindaĵo", + "es": "Atracción turística", + "et": "Turismiatraktsioon", + "fa": "جاذبه گردشگری", + "fi": "Turistikohde", + "fr": "Attraction touristique", + "gl": "Atracción turística", + "he": "אתר תיירותי", + "hr": "Turistička atrakcija", + "hu": "Turisztikai látványosság", + "id": "Objek Wisata", + "is": "Ferðamannagildra", + "it": "Attrazione turistica", + "ja": "観光地", + "ko": "관광 명소", + "lt": "Turistų traukos vieta", + "lv": "Tūrisma objekts", + "mk": "Знаменитост", + "nl": "Toeristische attractie", + "no": "Turistattraksjon", + "pl": "Atrakcja turystyczna", + "pt-BR": "Atração Turística", + "pt": "Atração turística", + "ro": "Atracție Turistică", + "ru": "Достопримечательность", + "sk": "Turistická atrakcia", + "sl": "Turistična znamenitost", + "sr": "Туристичка атракција", + "sv": "Turistattraktion", + "tr": "Turistik Yer", + "uk": "Туристична пам’ятка", + "vi": "Điểm Thu hút Du lịch", + "yue": "旅行名勝", + "zh-CN": "旅游名胜", + "zh-HK": "觀光名勝", + "zh-TW": "觀光景點", + "zh": "旅游景点" + } + }, + "tourism/camp_pitch": { + "title": { + "C": "Camp Pitch", + "cs": "místo pro stan/karavan", + "de": "Zeltplatz/Wohnwagenplatz", + "en": "Camp Pitch", + "eo": "Loko por kampadveturilo/tendo", + "es": "Lugar para acampar", + "fi": "Leirintäalueen kenttä", + "fr": "Parcelle dans un camping", + "gl": "Lugar de campismo", + "he": "מאהל", + "hu": "Táborhely", + "it": "Piazzola", + "ja": "キャンプ区画(キャンプ場内)", + "ko": "캠핑장 구역", + "mk": "Логориште", + "nl": "Staplaats (camping)", + "pl": "Miejsce na kempingu", + "pt-BR": "Acampamento de arremesso", + "pt": "Alvéolo de parque de campismo", + "sr": "Камп-место", + "sv": "Tältplats/husvagnsplats", + "tr": "Kamp Sahası", + "uk": "Місце під намет", + "zh-TW": "營地" + } + }, + "tourism/camp_site": { + "title": { + "C": "Campground", + "ar": "مكان التخييم", + "ast": "Campamentu", + "ca": "Àrea d'acampada", + "cs": "Tábořiště", + "da": "Campingplads", + "de": "Campingplatz", + "el": "Χώρος Κατασκήνωσης", + "en-GB": "Camp Site", + "en": "Campground", + "eo": "Kampadejo", + "es": "Campamento", + "et": "Telkimisala", + "fa": "اردوگاه", + "fi": "Leirintäalue", + "fr": "Camping", + "gl": "Cámping", + "he": "אתר מחנאות", + "hu": "Kemping", + "is": "Tjaldsvæði", + "it": "Campeggio", + "ja": "キャンプ場", + "ko": "캠핑장", + "lv": "Kempinga vieta", + "mk": "Камп", + "nl": "Camping", + "pl": "Kemping", + "pt-BR": "Local de Acampamento", + "pt": "Parque de campismo", + "ro": "Teren de Camping", + "ru": "Кемпинг/туристический приют", + "sk": "Kemp", + "sl": "Kamp", + "sr": "Простор за камповање", + "sv": "Campingplats", + "tr": "Kamp Yeri", + "uk": "Табір", + "vi": "Khu Cắm trại", + "zh-CN": "宿营场地", + "zh-HK": "營地", + "zh-TW": "露營地" + } + }, + "tourism/caravan_site": { + "title": { + "C": "RV Park", + "af": "RV Park", + "ar": "موقف عربات كبيرة", + "ast": "Aparcaderu d'autocaravanes", + "bg": "Паркинг за каравани", + "bs": "Kamp park", + "ca": "Càmping per a caravanes", + "cs": "Místo pro karavany", + "da": "Autocamperplads", + "de": "Wohnwagen-Campingplatz", + "el": "Πάρκο τροχόσπιτων", + "en-AU": "Caravan Site", + "en-GB": "Caravan Park", + "en": "RV Park", + "eo": "Kampad-veturila parkumejo", + "es": "Parque de autocaravanas", + "et": "Karavanipark", + "fa": "پارکینگ ماشین کاروان", + "fi": "Asuntoautopysäköinti", + "fr": "Aire pour caravanes", + "gl": "Parque de caravanas", + "he": "מגרש קרוונים", + "hr": "Parkiralište za kamp kućice", + "hu": "Lakóautó park", + "is": "Hjólhýsagarður", + "it": "Sosta per camper", + "ja": "オートキャンプ場", + "ko": "RV 공원", + "mk": "Трајлерски камп", + "nl": "Caravan-/kampeerwagenterrein", + "no": "Bobilpark", + "pl": "Kemping dla kamperów", + "pt-BR": "Estacionamento de Trailers", + "pt": "Parque de caravanas", + "ru": "Стоянка трейлеров", + "sk": "Parkovisko pre karavany", + "sl": "Parkirišče za avtodome", + "sr": "Камп-парк", + "sv": "Ställplats", + "ta": "ஆர்வி பூங்கா", + "tr": "Karavan Parkı", + "uk": "Караван-парк", + "vi": "Bãi Đậu Nhà lưu động", + "yue": "露營車營地", + "zh-CN": "房车营地", + "zh-HK": "露營車營地", + "zh-TW": "露營車停車場", + "zh": "房车营地" + } + }, + "tourism/chalet": { + "title": { + "C": "Holiday Cottage", + "ar": "كوخ لقضاء العطلة", + "cs": "Prázdninová vesnice", + "da": "Feriehus", + "de": "Ferienhaus", + "el": "Εξοχική Κατοικία", + "en-GB": "Holiday Cottage", + "en": "Holiday Cottage", + "eo": "Dometo feria", + "es": "Cabaña vacacional / Bungaló", + "fi": "Loma-asunto", + "fr": "Gîte", + "gl": "Casa rural", + "he": "בקתה לחגים", + "hr": "Bungalov", + "hu": "Nyaralóház", + "is": "Frístundahús", + "it": "Chalet", + "ja": "貸別荘(戸建て)", + "ko": "별장", + "lt": "Atostogų kotedžas", + "mk": "Викендичка", + "nl": "Vakantiehuisje", + "pl": "Domek/domki na wynajem", + "pt-BR": "Chalé", + "pt": "Casa de campo", + "ru": "Коттедж под аренду", + "sr": "Викендица", + "sv": "Stuga", + "ta": "விடுமுறை குடில்", + "tr": "Tatil Kulübesi", + "uk": "Шале", + "vi": "Nhà nghỉ Riêng biệt", + "zh-CN": "度假屋", + "zh-TW": "假日小屋" + } + }, + "tourism/gallery": { + "title": { + "C": "Art Gallery", + "ar": "رواق الفنون", + "ast": "Galería d'arte", + "ca": "Galeria d'art", + "cs": "Galerie umění", + "da": "Kunstgalleri", + "de": "Kunstgalerie", + "el": "Γκαλερί Τέχνης", + "en-GB": "Art Gallery", + "en": "Art Gallery", + "eo": "Artgalerio", + "es": "Galería de arte", + "et": "Kunstigalerii", + "fa": "گالری هنری", + "fi": "Taidegalleria", + "fr": "Galerie d'art", + "gl": "Galería de arte", + "he": "גלריית אומנות", + "hr": "Umjetnička galerija", + "hu": "Művészeti galéria", + "is": "Listagallerí", + "it": "Galleria d'arte", + "ja": "アートギャラリー", + "kn": "ಕಲಾಮಂದಿರ", + "ko": "미술관", + "lt": "Meno galerija", + "lv": "Mākslas galerija", + "mk": "Уметничка галерија", + "nl": "Kunstgallerij", + "no": "Kunstgalleri", + "pl": "Galeria sztuki", + "pt-BR": "Galeria de Arte", + "pt": "Galeria de arte", + "ro": "Galerie de Artă", + "ru": "Художественная галерея", + "sk": "Umelecká galéria", + "sl": "Umetnostna galerija", + "sr": "Галерија слика", + "sv": "Konstgalleri", + "ta": "கலைக்கூடம்", + "tr": "Sanat Galerisi", + "uk": "Художня галерея", + "vi": "Phòng tranh", + "zh-CN": "美术馆", + "zh-HK": "畫廊", + "zh-TW": "藝廊" + } + }, + "tourism/guest_house": { + "title": { + "C": "Guest House", + "af": "Gastehuis", + "ar": "دار الضيافة", + "ast": "Pensión", + "bg": "Къща за гости", + "bn": "অতিথিশালা", + "bs": "Gostinjska kuća", + "ca": "Habitacions de lloguer", + "cs": "Penzion", + "da": "Gæstehus", + "de": "Pension", + "el": "Ξενώνας", + "en-GB": "Guest House", + "en": "Guest House", + "eo": "Pensiono", + "es": "Casa de huéspedes / B&B", + "et": "Külalistemaja", + "fa": "مهمان خانه", + "fi": "Majatalo", + "fr": "Chambre d'hôtes", + "gl": "Hostal", + "he": "בית הארחה", + "hr": "Gostinjska kuća", + "hu": "Vendégház", + "id": "Rumah Tamu", + "is": "Gestahús", + "it": "Bed & Breakfast", + "ja": "民宿", + "ko": "민박", + "lt": "Svečių namai", + "lv": "Viesu nams", + "mk": "Приватен пансион", + "nl": "Pension", + "no": "Gjestehus", + "pl": "Pensjonat", + "pt-BR": "Guesthouse", + "pt": "Casa de hóspedes", + "ro": "Casă de Oaspeți", + "ru": "Гостевой дом", + "sk": "Penzión", + "sl": "Penzion", + "sr": "Гостинска кућа", + "sv": "Gästhus", + "ta": "விருந்தினர் இல்லம்", + "tr": "Konuk Evi", + "uk": "Гостьовий будинок", + "vi": "Nhà khách", + "yue": "賓館", + "zh-CN": "客栈", + "zh-HK": "賓館", + "zh-TW": "招待所", + "zh": "宾馆" + } + }, + "tourism/hostel": { + "title": { + "C": "Hostel", + "af": "Hostel", + "ar": "نزل", + "ast": "Albergue", + "bg": "Хостел", + "bn": "ছাত্রাবাস", + "bs": "Hostel", + "ca": "Alberg", + "cs": "Hostel", + "da": "Vandrerhjem", + "de": "Hostel", + "el": "Ξενώνας", + "en-GB": "Hostel", + "en": "Hostel", + "eo": "Gastejo", + "es": "Albergue", + "et": "Hostel", + "fa": "مسافرخانه", + "fi": "Hostelli", + "fr": "Auberge de jeunesse", + "gl": "Albergue", + "he": "אכסנייה", + "hr": "Hostel", + "hu": "Turistaszálló", + "id": "Hostel", + "is": "Farfuglaheimili", + "it": "Ostello", + "ja": "簡易宿泊所", + "ko": "호스텔", + "lt": "Viešbutis", + "lv": "Hostelis", + "mk": "Хостел", + "nl": "Jeugdherberg", + "no": "Hostell", + "pl": "Schronisko lub hostel", + "pt-BR": "Hostel", + "pt": "Hostel", + "ro": "Hostel", + "ru": "Хостел", + "sk": "Hostel", + "sl": "Hostel", + "sr": "Хостел", + "sv": "Vandrarhem", + "ta": "விடுதி", + "tr": "Pansiyon", + "uk": "Хостел", + "vi": "Nhà trọ", + "yue": "旅舍", + "zh-CN": "旅舍", + "zh-HK": "旅舍", + "zh-TW": "旅舍", + "zh": "招待所" + } + }, + "tourism/hotel": { + "title": { + "C": "Hotel", + "af": "Hotel", + "ar": "فندق", + "ast": "Hotel", + "bg": "Хотел", + "bn": "হোটেল", + "bs": "Hotel", + "ca": "Hotel", + "cs": "Hotel", + "da": "Hotel", + "de": "Hotel", + "dv": "ހޮޓާ", + "el": "Ξενοδοχείο", + "en-GB": "Hotel", + "en": "Hotel", + "eo": "Hotelo", + "es": "Hotel", + "et": "Hotell", + "fa": "هتل", + "fi": "Hotelli", + "fr": "Hôtel", + "gl": "Hotel", + "he": "מלון", + "hr": "Hotel", + "hu": "Szálloda", + "id": "Hotel", + "is": "Hótel", + "it": "Albergo", + "ja": "ホテル", + "kn": "ಭೋಜನಾಲಯ", + "ko": "호텔", + "lt": "Viešbutis", + "lv": "Viesnīca", + "mk": "Хотел", + "ms": "Hotel", + "nl": "Hotel", + "no": "Hotell", + "pl": "Hotel", + "pt-BR": "Hotel", + "pt": "Hotel", + "ro": "Hotel", + "ru": "Гостиница", + "sk": "Hotel", + "sl": "Hotel", + "so": "Huteel", + "sq": "Hotel", + "sr": "Хотел", + "sv": "Hotell", + "ta": "உணவகம்", + "te": "హోటెల్", + "tr": "Otel", + "uk": "Готель", + "vi": "Khách sạn", + "yue": "酒店", + "zh-CN": "宾馆", + "zh-HK": "酒店", + "zh-TW": "旅館", + "zh": "旅馆" + } + }, + "tourism/information": { + "title": { + "C": "Information", + "af": "Inligting", + "ar": "معلومات سياحية", + "ast": "Información", + "bg": "Информация", + "bn": "তথ্য", + "bs": "Informacije", + "ca": "Informació", + "cs": "Informace", + "da": "Information", + "de": "Information", + "el": "Πληροφορίες", + "en-GB": "Information", + "en": "Information", + "eo": "Informejo", + "es": "Información turística", + "et": "Info", + "fa": "اطلاعات", + "fi": "Infopiste", + "fr": "Informations", + "gl": "Información", + "he": "מידע", + "hr": "Turističke informacije", + "hu": "Információ", + "id": "Informasi", + "is": "Upplýsingar", + "it": "Informazioni", + "ja": "観光案内(全般)", + "kn": "ಮಾಹಿತಿ", + "ko": "안내", + "lt": "Informacija", + "lv": "Informācija", + "mk": "Информации", + "nl": "Informatie", + "no": "Informasjon", + "pl": "Informacja", + "pt-BR": "Informações Turísticas", + "pt": "Informação turística", + "ro": "Informații", + "ru": "Инфопункт", + "sk": "Informácie", + "sl": "Informacije", + "sq": "Informacion", + "sr": "Информације", + "sv": "Information", + "ta": "தகவல்", + "te": "సమాచారం", + "tr": "Bilgi", + "uk": "Інформація", + "vi": "Thông tin", + "yue": "資訊處", + "zh-CN": "问询处", + "zh-HK": "旅遊資訊", + "zh-TW": "旅遊資訊", + "zh": "资讯" + } + }, + "tourism/motel": { + "title": { + "C": "Motel", + "af": "Motel", + "ar": "فندق رخيص", + "ast": "Motel", + "bg": "Мотел", + "bn": "মোটেল", + "bs": "Motel", + "ca": "Motel", + "cs": "Motel", + "da": "Motel", + "de": "Motel", + "el": "Μοτέλ", + "en-GB": "Motel", + "en": "Motel", + "eo": "Aŭt-hotelo", + "es": "Motel", + "et": "Motell", + "fa": "متل", + "fi": "Motelli", + "fr": "Motel", + "gl": "Motel", + "he": "מלון דרכים", + "hr": "Motel", + "hu": "Motel", + "id": "Motel", + "is": "Mótel", + "it": "Motel", + "ja": "モーテル", + "ko": "모텔", + "lt": "Motelis", + "lv": "Motelis", + "mk": "Мотел", + "nl": "Motel", + "no": "Motell", + "pl": "Motel", + "pt-BR": "Hotel de Estrada", + "pt": "Motel", + "ro": "Motel", + "ru": "Мотель", + "sk": "Motel", + "sl": "Motel", + "sr": "Мотел", + "sv": "Motel", + "tr": "Motel", + "uk": "Мотель", + "vi": "Khách sạn Dọc đường", + "yue": "汽車酒店", + "zh-CN": "汽车旅馆", + "zh-HK": "汽車酒店", + "zh-TW": "汽車旅館", + "zh": "汽车旅馆" + } + }, + "tourism/museum": { + "title": { + "C": "Museum", + "af": "Musuem", + "ar": "متحف", + "ast": "Muséu", + "bg": "Музей", + "bn": "প্রদর্শনশালা", + "bs": "Muzej", + "ca": "Museu", + "cs": "Muzeum", + "da": "Museum", + "de": "Museum", + "el": "Μουσείο", + "en-GB": "Museum", + "en": "Museum", + "eo": "Muzeo", + "es": "Museo", + "et": "Muuseum", + "fa": "موزه", + "fi": "Museo", + "fr": "Musée", + "gl": "Museo", + "he": "מוזיאון", + "hr": "Muzej", + "hu": "Múzeum", + "id": "Museum", + "is": "Safn", + "it": "Museo", + "ja": "博物館・美術館", + "kn": "ಒಡವೆಮನೆ", + "ko": "박물관", + "lt": "Muziejus", + "lv": "Muzejs", + "mk": "Музеј", + "nl": "Museum", + "no": "Museum", + "pl": "Muzeum", + "pt-BR": "Museu", + "pt": "Museu", + "ro": "Muzeu", + "ru": "Музей", + "sk": "Múzeum", + "sl": "Muzej", + "sr": "Музеј", + "sv": "Museum", + "ta": "அருங்காட்சியகம்", + "te": "మ్యూజియం", + "tr": "Müze", + "uk": "Музей", + "vi": "Bảo tàng", + "yue": "博物館", + "zh-CN": "博物馆", + "zh-HK": "博物館", + "zh-TW": "博物館", + "zh": "博物馆" + } + }, + "tourism/picnic_site": { + "title": { + "C": "Picnic Site", + "af": "Piekniek Plek", + "ar": "موقع نزهة", + "ast": "Área recreativa", + "bg": "Място за пикник", + "bn": "পিকনিক-এর জায়গা", + "bs": "Izletište", + "ca": "Àrea de pícnic", + "cs": "Místo pro piknik", + "da": "Madpakkested", + "de": "Picknickplatz", + "el": "Χώρος Εκδρομής", + "en-GB": "Picnic Site", + "en": "Picnic Site", + "eo": "Piknika ejo", + "es": "Zona de picnic", + "et": "Piknikukoht", + "fa": "مکان پیک نیک", + "fi": "Piknikpuisto", + "fr": "Aire de pique-nique", + "gl": "Merendeiro ou zona de pícnic", + "he": "פיקניק", + "hr": "Izletište", + "hu": "Piknikezőhely", + "id": "Tempat Piknik", + "is": "Áningarstaður", + "it": "Area picnic", + "ja": "ピクニック場", + "ko": "유원지", + "lt": "Pikniko stovyklavietė", + "lv": "Piknika vieta", + "mk": "Излетничко место", + "ms": "Tapak Perkelahan", + "nl": "Picknickplek", + "no": "Pikniksted", + "pl": "Miejsce na piknik", + "pt-BR": "Local de Piquenique", + "pt": "Parque de merendas", + "ro": "Picnic", + "ru": "Место для пикника", + "sk": "Miesto pre piknik", + "sl": "Prostor za piknike", + "sr": "Излетиште", + "sv": "Picknickplats", + "tr": "Piknik Alanı", + "uk": "Місце для пікніка", + "vi": "Nơi Ăn Ngoài trời", + "yue": "郊遊地點", + "zh-CN": "野餐地", + "zh-HK": "郊遊地點", + "zh-TW": "野餐場地", + "zh": "郊游地点" + } + }, + "tourism/theme_park": { + "title": { + "C": "Theme Park", + "af": "Temapark", + "ar": "حديقة ترفيه", + "ast": "Parque temáticu", + "bg": "Увеселителен парк", + "bn": "থিম পার্ক", + "bs": "Tematski park", + "ca": "Parc temàtic", + "cs": "Zábavní park", + "da": "Forlystelsespark", + "de": "Themenpark", + "el": "Πάρκο Ψυχαγωγίας", + "en-GB": "Theme Park", + "en": "Theme Park", + "eo": "Amuzparko", + "es": "Parque de atracciones", + "et": "Lõbustuspark", + "fa": "پارک تفریحی, شهربازی", + "fi": "Huvipuisto", + "fr": "Parc d'attraction", + "gl": "Parque de atraccións", + "he": "לונה פארק", + "hr": "Zabavni park", + "hu": "Vidámpark", + "id": "Taman Rekreasi", + "is": "Skemmtigarður", + "it": "Parco a tema", + "ja": "テーマパーク", + "ko": "놀이공원", + "lt": "Atrakcijonų parkas", + "lv": "Tematiskais parks", + "mk": "Забавен парк", + "nl": "Themapark", + "no": "Temapark", + "pl": "Park rozrywki", + "pt-BR": "Parque Temático", + "pt": "Parque de diversões", + "ro": "Parc de Distracții", + "ru": "Парк развлечений", + "sk": "Zábavný park", + "sl": "Zabaviščni park", + "sr": "Тематски парк", + "sv": "Nöjespark", + "tr": "Eğlence Parkı", + "uk": "Тематичний парк", + "vi": "Công viên Chủ đề", + "yue": "主題公園", + "zh-CN": "主题公园", + "zh-HK": "主題公園", + "zh-TW": "主題公園", + "zh": "主题公园" + } + }, + "tourism/trail_riding_station": { + "title": { + "C": "Trail Riding Station", + "cs": "Stanice jízdy na koni", + "de": "Wanderreitstation", + "el": "Σταθμός Ιππασίας", + "en-GB": "Trail Riding Station", + "en": "Trail Riding Station", + "eo": "Pensiono por ĉevalistoj", + "es": "Estación en sendero de cabalgata", + "fa": "ایستگاه مسیر گذر / پیاده‌روی", + "fr": "Station équestre", + "gl": "Posto de repouso ecuestre", + "he": "תחנת רכיבה", + "it": "Stazione di sosta per cavalli", + "ja": "乗馬トレール乗り場", + "mk": "Конак за рекреативни јавачи", + "nl": "Ruiterlogies", + "pl": "Konny ośrodek wypoczynkowy", + "pt-BR": "Estação de Hipismo de Trilha", + "pt": "Posto de repouso equestre", + "ru": "Временное жильё для лошадей и наездников", + "sv": "Turridningsstation", + "tr": "İz Sürme İstasyonu", + "uk": "Місце відпочинку для коней та вершників", + "vi": "Chuồng Ngựa Tạm thời", + "zh-TW": "騎馬車站" + } + }, + "tourism/viewpoint": { + "title": { + "C": "Viewpoint", + "af": "Uitkykpunt", + "ar": "منظر سياحي", + "ast": "Mirador", + "bg": "Точка с хубава гледка", + "bs": "Vidikovac", + "ca": "Mirador", + "cs": "Výhled", + "da": "Udsigtspunkt", + "de": "Aussichtspunkt", + "el": "Σημείο θέασης", + "en-GB": "Viewpoint", + "en": "Viewpoint", + "eo": "Belvidejo", + "es": "Vista panorámica / Mirador", + "et": "Vaatekoht", + "fa": "نقطه دید", + "fi": "Näköalapaikka", + "fr": "Point de vue", + "gl": "Miradoiro", + "he": "תצפית", + "hr": "Vidikovac", + "hu": "Kilátóhely", + "id": "Titik Pandang", + "is": "Útsýnisstaður", + "it": "Punto panoramico", + "ja": "展望台", + "ko": "경승지", + "lt": "Apžvalgos taškas", + "lv": "Skatu punkts", + "mk": "Видиковец", + "nl": "Uitzichtpunt", + "no": "Utsiktspunkt", + "pl": "Punkt widokowy", + "pt-BR": "Mirante", + "pt": "Miradouro", + "ro": "Punct de Vedere", + "ru": "Обзорная точка", + "sk": "Vyhliadka", + "sl": "Razgledna točka", + "sr": "Видиковац", + "sv": "Utsiktspunkt", + "tr": "Görüş Noktası", + "uk": "Оглядовий майданчик", + "vi": "Điểm Ngắm cảnh", + "yue": "觀景臺", + "zh-CN": "观景点", + "zh-HK": "觀景臺", + "zh-TW": "觀景點", + "zh": "景点" + } + }, + "tourism/wilderness_hut": { + "title": { + "C": "Wilderness Hut", + "cs": "Chata v divočině", + "da": "Vildmarkshytte", + "de": "unbewirtschaftete Schutzhütte", + "el": "Ερημική Καλύβα", + "en-GB": "Wilderness Hut", + "en": "Wilderness Hut", + "eo": "Sovaĝeja kabano", + "es": "Refugio de paraje natural", + "fi": "Autiotupa", + "fr": "Refuge de bivouac", + "gl": "Abeiro da natureza", + "he": "בקתת טבע", + "hr": "Planinarsko sklonište", + "hu": "Menedékház (személyzet nélkül)", + "is": "Óbyggðakofi", + "it": "Bivacco", + "ja": "避難小屋", + "ko": "황야 막사", + "mk": "Колиба во дивина", + "nl": "Onbemande hut in wildernis", + "no": "Villmarkshytta", + "pl": "Odosobniona chata-schronienie dla turystów", + "pt-BR": "Abrigo isolado", + "pt": "Abrigo remoto", + "ru": "Охотничий домик", + "sk": "Chata divočiny", + "sv": "Stuga (för vandrare o.d.)", + "tr": "Dağ kulübesi", + "uk": "Лісова хатинка", + "vi": "Lều trú", + "zh-CN": "野外住宿小屋", + "zh-TW": "野外小屋" + } + }, + "tourism/zoo": { + "title": { + "C": "Zoo", + "af": "Dieretuin", + "ar": "حديقة حيوانات", + "ast": "Zoo", + "bg": "Зоологическа градина", + "bn": "চিড়িয়াখানা", + "bs": "Zoološki vrt", + "ca": "Zoo", + "cs": "ZOO", + "da": "Zoologisk have", + "de": "Zoo", + "el": "Ζωολογικός Κήπος", + "en-GB": "Zoo", + "en": "Zoo", + "eo": "Bestoĝardeno", + "es": "Zoológico", + "et": "Loomaaed", + "fa": "باغ وحش", + "fi": "Eläintarha", + "fr": "Parc zoologique", + "gl": "Zoolóxico", + "he": "גן חיות", + "hi": "चिड़िया घर", + "hr": "Zološki vrt", + "hu": "Állatkert", + "id": "Kebun Binatang", + "is": "Dýragarður", + "it": "Zoo", + "ja": "動物園", + "ko": "동물원", + "lt": "Zoologijos sodas", + "lv": "Zooloģiskais dārzs", + "mk": "Зоолошка градина", + "nl": "Dierentuin", + "no": "Zoologisk hage", + "pl": "Zoo", + "pt-BR": "Zoológico", + "pt": "Jardim zoológico", + "ro": "Grădină Zoologică", + "ru": "Зоопарк", + "sk": "Zoo", + "sl": "Živalski vrt", + "sr": "Зоолошки врт", + "sv": "Zoo", + "ta": "உயிரியல் பூங்கா", + "te": "జూ", + "tr": "Hayvanat Bahçesi", + "uk": "Зоопарк", + "vi": "Vườn thú", + "yue": "動物園", + "zh-CN": "动物园", + "zh-HK": "動物園", + "zh-TW": "動物園", + "zh": "动物园" + } + } +} diff --git a/data/screenshots/maps-main.jpg b/data/screenshots/maps-main.jpg new file mode 100644 index 00000000..1dee544c Binary files /dev/null and b/data/screenshots/maps-main.jpg differ diff --git a/data/screenshots/maps-main.png b/data/screenshots/maps-main.png new file mode 100644 index 00000000..0fc8f8de Binary files /dev/null and b/data/screenshots/maps-main.png differ diff --git a/data/screenshots/maps-pinpoint.jpg b/data/screenshots/maps-pinpoint.jpg new file mode 100644 index 00000000..8e70da57 Binary files /dev/null and b/data/screenshots/maps-pinpoint.jpg differ diff --git a/data/screenshots/maps-pinpoint.png b/data/screenshots/maps-pinpoint.png new file mode 100644 index 00000000..1cb239f1 Binary files /dev/null and b/data/screenshots/maps-pinpoint.png differ diff --git a/data/screenshots/maps-route.jpg b/data/screenshots/maps-route.jpg new file mode 100644 index 00000000..20be37b2 Binary files /dev/null and b/data/screenshots/maps-route.jpg differ diff --git a/data/screenshots/maps-route.png b/data/screenshots/maps-route.png new file mode 100644 index 00000000..be42744d Binary files /dev/null and b/data/screenshots/maps-route.png differ diff --git a/data/ui/account-row.ui b/data/ui/account-row.ui new file mode 100644 index 00000000..60afd7c6 --- /dev/null +++ b/data/ui/account-row.ui @@ -0,0 +1,76 @@ + + + + + diff --git a/data/ui/check-in-dialog.ui b/data/ui/check-in-dialog.ui new file mode 100644 index 00000000..7050a0d0 --- /dev/null +++ b/data/ui/check-in-dialog.ui @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + EVERYONE + Everyone + + + FRIENDS_OF_FRIENDS + Friends of friends + + + ALL_FRIENDS + Just friends + + + SELF + Just me + + + + + + + + + + + + + public + Public + + + followers + Followers + + + private + Private + + + + diff --git a/data/ui/context-menu.ui b/data/ui/context-menu.ui new file mode 100644 index 00000000..7fcb6734 --- /dev/null +++ b/data/ui/context-menu.ui @@ -0,0 +1,56 @@ + + + + + diff --git a/data/ui/export-view-dialog.ui b/data/ui/export-view-dialog.ui new file mode 100644 index 00000000..993a5339 --- /dev/null +++ b/data/ui/export-view-dialog.ui @@ -0,0 +1,146 @@ + + + + + diff --git a/data/ui/favorites-popover.ui b/data/ui/favorites-popover.ui new file mode 100644 index 00000000..7ee1bbb6 --- /dev/null +++ b/data/ui/favorites-popover.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/headerbar-left.ui b/data/ui/headerbar-left.ui new file mode 100644 index 00000000..f64b250f --- /dev/null +++ b/data/ui/headerbar-left.ui @@ -0,0 +1,90 @@ + + + + + + diff --git a/data/ui/headerbar-right.ui b/data/ui/headerbar-right.ui new file mode 100644 index 00000000..e2178a8a --- /dev/null +++ b/data/ui/headerbar-right.ui @@ -0,0 +1,75 @@ + + + + + + diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui new file mode 100644 index 00000000..e427db71 --- /dev/null +++ b/data/ui/help-overlay.ui @@ -0,0 +1,120 @@ + + + + 1 + + + 1 + + 10 + + + 1 + General + + + 1 + Show Shortcuts + <Primary>question + + + + + 1 + Search + <Primary>F + + + + + 1 + Toggle route planner + <Primary>D + + + + + 1 + Print route + <Primary>P + + + + + 1 + Quit + <Primary>Q + + + + + 1 + Open main menu + F10 + + + + + + + 1 + Map View + + + 1 + Zoom in + plus equal + + + + + 1 + Zoom out + minus + + + + + 1 + Toggle scale + <Primary>S + + + + + 1 + Go to current location + <Primary>L + + + + + + 0 + Switch to street view + <Primary>1 + + + + + 0 + Switch to aerial view + <Primary>2 + + + + + 1 + Open shape layer + <Primary>O + + + + + + + + diff --git a/data/ui/instruction-row.ui b/data/ui/instruction-row.ui new file mode 100644 index 00000000..95254773 --- /dev/null +++ b/data/ui/instruction-row.ui @@ -0,0 +1,74 @@ + + + + + diff --git a/data/ui/layers-popover.ui b/data/ui/layers-popover.ui new file mode 100644 index 00000000..423c4a86 --- /dev/null +++ b/data/ui/layers-popover.ui @@ -0,0 +1,113 @@ + + + + + diff --git a/data/ui/location-service-dialog.ui b/data/ui/location-service-dialog.ui new file mode 100644 index 00000000..0c3ae660 --- /dev/null +++ b/data/ui/location-service-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/data/ui/main-window.ui b/data/ui/main-window.ui new file mode 100644 index 00000000..a21db6aa --- /dev/null +++ b/data/ui/main-window.ui @@ -0,0 +1,170 @@ + + + + +
    + + app.night-mode + Night Mode + + + app.osm-account-setup + Set up OpenStreetMap Account + + + win.export-as-image + Export as Image + +
    +
    + + _Keyboard Shortcuts + win.show-help-overlay + + + win.about + About Maps + +
    +
    + +
    + diff --git a/data/ui/open-with-row.ui b/data/ui/open-with-row.ui new file mode 100644 index 00000000..d236a2a8 --- /dev/null +++ b/data/ui/open-with-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-account-dialog.ui b/data/ui/osm-account-dialog.ui new file mode 100644 index 00000000..8cddfeca --- /dev/null +++ b/data/ui/osm-account-dialog.ui @@ -0,0 +1,319 @@ + + + + + diff --git a/data/ui/osm-edit-address.ui b/data/ui/osm-edit-address.ui new file mode 100644 index 00000000..1a36f87a --- /dev/null +++ b/data/ui/osm-edit-address.ui @@ -0,0 +1,59 @@ + + + + + diff --git a/data/ui/osm-edit-dialog.ui b/data/ui/osm-edit-dialog.ui new file mode 100644 index 00000000..ba059ee6 --- /dev/null +++ b/data/ui/osm-edit-dialog.ui @@ -0,0 +1,353 @@ + + + + + + False + + + True + GTK_ORIENTATION_VERTICAL + + + + + False + GTK_POS_BOTTOM + + + True + 5 + + + True + True + 20 + 40 + + + + + + diff --git a/data/ui/osm-type-list-row.ui b/data/ui/osm-type-list-row.ui new file mode 100644 index 00000000..05fbb6ac --- /dev/null +++ b/data/ui/osm-type-list-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-type-popover.ui b/data/ui/osm-type-popover.ui new file mode 100644 index 00000000..4ae9e7fb --- /dev/null +++ b/data/ui/osm-type-popover.ui @@ -0,0 +1,16 @@ + + + + + diff --git a/data/ui/osm-type-search-entry.ui b/data/ui/osm-type-search-entry.ui new file mode 100644 index 00000000..db292a76 --- /dev/null +++ b/data/ui/osm-type-search-entry.ui @@ -0,0 +1,10 @@ + + + + + diff --git a/data/ui/place-bar.ui b/data/ui/place-bar.ui new file mode 100644 index 00000000..28825b11 --- /dev/null +++ b/data/ui/place-bar.ui @@ -0,0 +1,67 @@ + + + + + + diff --git a/data/ui/place-buttons.ui b/data/ui/place-buttons.ui new file mode 100644 index 00000000..bace12aa --- /dev/null +++ b/data/ui/place-buttons.ui @@ -0,0 +1,104 @@ + + + + + diff --git a/data/ui/place-dialog.ui b/data/ui/place-dialog.ui new file mode 100644 index 00000000..9c49c767 --- /dev/null +++ b/data/ui/place-dialog.ui @@ -0,0 +1,36 @@ + + + + + + diff --git a/data/ui/place-entry.ui b/data/ui/place-entry.ui new file mode 100644 index 00000000..417e42d2 --- /dev/null +++ b/data/ui/place-entry.ui @@ -0,0 +1,23 @@ + + + + + 2 + + + 2 + + + 0 + + + + + 4 + + + 2 + + + + diff --git a/data/ui/place-list-row.ui b/data/ui/place-list-row.ui new file mode 100644 index 00000000..9164f52c --- /dev/null +++ b/data/ui/place-list-row.ui @@ -0,0 +1,97 @@ + + + + + + + diff --git a/data/ui/place-popover.ui b/data/ui/place-popover.ui new file mode 100644 index 00000000..e04114bb --- /dev/null +++ b/data/ui/place-popover.ui @@ -0,0 +1,79 @@ + + + + + diff --git a/data/ui/place-view.ui b/data/ui/place-view.ui new file mode 100644 index 00000000..95fee9dc --- /dev/null +++ b/data/ui/place-view.ui @@ -0,0 +1,136 @@ + + + + + + True + + + True + False + vertical + + + False + False + + + + + False + False + + + + + + True + False + vertical + 18 + 12 + + + True + False + vertical + + + True + False + horizontal + 12 + + + False + False + True + 32 + + + + + True + False + start + True + True + 30 + 0 + + + + + + False + True + False + Share location + + + True + False + send-to-symbolic + 16 + + + + + + + + + False + False + start + True + True + 30 + 0 + 6 + + + + + + + + True + False + start + 0 + True + True + + + + + True + False + vertical + + + + + + + True + False + + + + + + + True + False + + + + diff --git a/data/ui/route-entry.ui b/data/ui/route-entry.ui new file mode 100644 index 00000000..b186e453 --- /dev/null +++ b/data/ui/route-entry.ui @@ -0,0 +1,50 @@ + + + + + diff --git a/data/ui/send-to-dialog.ui b/data/ui/send-to-dialog.ui new file mode 100644 index 00000000..072dc3f5 --- /dev/null +++ b/data/ui/send-to-dialog.ui @@ -0,0 +1,169 @@ + + + + + + diff --git a/data/ui/shape-layer-file-chooser.ui b/data/ui/shape-layer-file-chooser.ui new file mode 100644 index 00000000..383a2df5 --- /dev/null +++ b/data/ui/shape-layer-file-chooser.ui @@ -0,0 +1,30 @@ + + + + diff --git a/data/ui/shape-layer-row.ui b/data/ui/shape-layer-row.ui new file mode 100644 index 00000000..0a2ad8d1 --- /dev/null +++ b/data/ui/shape-layer-row.ui @@ -0,0 +1,62 @@ + + + + diff --git a/data/ui/sidebar.ui b/data/ui/sidebar.ui new file mode 100644 index 00000000..ab7b3890 --- /dev/null +++ b/data/ui/sidebar.ui @@ -0,0 +1,444 @@ + + + + + + + False + + + True + + + True + 5 + 5 + 5 + 5 + Routing itineraries for public transit is provided by third-party +services. +GNOME can not guarantee correctness of the itineraries and schedules shown. +Note that some providers might not include all available modes of transportation, +e.g. a national provider might not include airlines, and a local provider could +miss regional trains. +Names and brands shown are to be considered as registered trademarks when applicable. + + + + + + + True + False + + + + True + 6 + 6 + 4 + 4 + GTK_ALIGN_START + + + True + GTK_ALIGN_CENTER + + + True + False + False + go-previous-symbolic + + + + + + + 0 + 0 + + + + + True + 6 + 6 + 4 + 4 + False + GTK_ALIGN_START + + + 1 + 0 + + + + + True + 6 + 6 + 4 + 4 + True + GTK_ALIGN_START + + + + 2 + 0 + + + + diff --git a/data/ui/social-place-more-results-row.ui b/data/ui/social-place-more-results-row.ui new file mode 100644 index 00000000..2dcca7fa --- /dev/null +++ b/data/ui/social-place-more-results-row.ui @@ -0,0 +1,22 @@ + + + + + diff --git a/data/ui/social-place-row.ui b/data/ui/social-place-row.ui new file mode 100644 index 00000000..623c92af --- /dev/null +++ b/data/ui/social-place-row.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/transit-arrival-row.ui b/data/ui/transit-arrival-row.ui new file mode 100644 index 00000000..d1cb21e2 --- /dev/null +++ b/data/ui/transit-arrival-row.ui @@ -0,0 +1,77 @@ + + + + + diff --git a/data/ui/transit-itinerary-row.ui b/data/ui/transit-itinerary-row.ui new file mode 100644 index 00000000..d4be5468 --- /dev/null +++ b/data/ui/transit-itinerary-row.ui @@ -0,0 +1,66 @@ + + + + + diff --git a/data/ui/transit-leg-row.ui b/data/ui/transit-leg-row.ui new file mode 100644 index 00000000..c7eaa268 --- /dev/null +++ b/data/ui/transit-leg-row.ui @@ -0,0 +1,255 @@ + + + + + diff --git a/data/ui/transit-more-row.ui b/data/ui/transit-more-row.ui new file mode 100644 index 00000000..7de5b98a --- /dev/null +++ b/data/ui/transit-more-row.ui @@ -0,0 +1,40 @@ + + + + diff --git a/data/ui/transit-options-panel.ui b/data/ui/transit-options-panel.ui new file mode 100644 index 00000000..a11acfa0 --- /dev/null +++ b/data/ui/transit-options-panel.ui @@ -0,0 +1,159 @@ + + + + False + + + True + + + + + False + + + True + 6 + GTK_ORIENTATION_VERTICAL + + + True + GTK_ALIGN_START + Show + 6 + + + + + + True + True + Buses + + + + + True + True + Trams + + + + + True + True + Trains + + + + + True + True + Subway + + + + + True + True + Ferries + + + + + True + True + Airplanes + + + + + + + diff --git a/data/ui/transit-route-label.ui b/data/ui/transit-route-label.ui new file mode 100644 index 00000000..423f7826 --- /dev/null +++ b/data/ui/transit-route-label.ui @@ -0,0 +1,20 @@ + + + + + diff --git a/data/ui/transit-stop-row.ui b/data/ui/transit-stop-row.ui new file mode 100644 index 00000000..8f6aa214 --- /dev/null +++ b/data/ui/transit-stop-row.ui @@ -0,0 +1,55 @@ + + + + diff --git a/data/ui/zoom-in-dialog.ui b/data/ui/zoom-in-dialog.ui new file mode 100644 index 00000000..359dd46c --- /dev/null +++ b/data/ui/zoom-in-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/gnome-maps.doap b/gnome-maps.doap new file mode 100644 index 00000000..a0fdefd4 --- /dev/null +++ b/gnome-maps.doap @@ -0,0 +1,28 @@ + + + gnome-maps + A simple GNOME 3 maps application + Map application based on OpenStreetMap map data + + JavaScript + + + + + + + + + Marcus Lundblad + + mlundblad + + + diff --git a/lib/maps-contact-store.c b/lib/maps-contact-store.c new file mode 100644 index 00000000..227fc5f7 --- /dev/null +++ b/lib/maps-contact-store.c @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + + +#include +#include + +#include "maps-contact-store.h" +#include "maps-contact.h" +#include "maps-enum-types.h" + +struct _MapsContactStorePrivate +{ + GList *list; + MapsContactStoreState state; + FolksIndividualAggregator *aggregator; +}; + +enum { + PROP_0, + + PROP_STATE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContactStore, maps_contact_store, G_TYPE_OBJECT) + +static void +maps_contact_store_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContactStore *store = MAPS_CONTACT_STORE (object); + + switch (property_id) + { + case PROP_STATE: + g_value_set_enum (value, + store->priv->state); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_store_dispose (GObject *object) +{ + MapsContactStore *store = (MapsContactStore *) object; + + g_clear_pointer (&store->priv->list, g_list_free); + g_clear_object (&store->priv->aggregator); + + G_OBJECT_CLASS (maps_contact_store_parent_class)->dispose (object); +} + +static void +maps_contact_store_class_init (MapsContactStoreClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_store_dispose; + maps_class->get_property = maps_contact_store_get_property; + + /** + * MapsContactStore:state: + * + * The current loading state of the contact store. + */ + pspec = g_param_spec_enum ("state", + "State", + "State", + MAPS_TYPE_CONTACT_STORE_STATE, + MAPS_CONTACT_STORE_STATE_INITIAL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_STATE, pspec); +} + +static void +maps_contact_store_init (MapsContactStore *store) +{ + store->priv = maps_contact_store_get_instance_private (store); + store->priv->list = NULL; + store->priv->state = MAPS_CONTACT_STORE_STATE_INITIAL; +} + +static MapsContact * +get_contact (FolksIndividual *individual) +{ + MapsContact *contact; + GLoadableIcon *avatar; + GeeCollection *addresses; + GeeIterator *iter; + + g_object_get (G_OBJECT (individual), "postal-addresses", + &addresses, NULL); + if (!addresses) + return NULL; + + iter = gee_iterable_iterator (GEE_ITERABLE (addresses)); + if (!gee_iterator_has_next (iter)) + { + g_object_unref (iter); + return NULL; + } + + contact = maps_contact_new (); + + g_object_set (G_OBJECT (contact), "name", + folks_individual_get_display_name (individual), NULL); + g_object_set (G_OBJECT (contact), "id", + folks_individual_get_id (individual), NULL); + + g_object_get (G_OBJECT (individual), "avatar", + &avatar, NULL); + g_object_set (G_OBJECT (contact), "icon", + avatar, NULL); + + while (gee_iterator_has_next (iter)) + { + GeocodePlace *place; + FolksPostalAddress *addr; + FolksAbstractFieldDetails *details; + GeeMultiMap *map; + GeeSet *keys; + GeeIterator *keys_iter; + char *name; + char *type = "Unknown"; + + gee_iterator_next (iter); + details = gee_iterator_get (iter); + addr = (FolksPostalAddress *) folks_abstract_field_details_get_value (details); + + /* Get the type of the address, such as "Home", "Work", "Other" */ + map = folks_abstract_field_details_get_parameters (details); + keys = gee_multi_map_get_keys (map); + keys_iter = gee_iterable_iterator (GEE_ITERABLE (keys)); + if (gee_iterator_has_next (keys_iter)) + { + GeeCollection *values; + GeeIterator *values_iter; + + gee_iterator_next (keys_iter); + values = gee_multi_map_get (map, + gee_iterator_get (keys_iter)); + if (gee_collection_get_size (values) != 0) + { + values_iter = gee_iterable_iterator (GEE_ITERABLE (values)); + gee_iterator_next (values_iter); + type = gee_iterator_get (values_iter); + } + } + if (gee_collection_get_size (addresses) > 1) + { + name = g_strdup_printf ("%s (%s)", + folks_individual_get_display_name (individual), + type); + } + else + { + name = g_strdup (folks_individual_get_display_name (individual)); + } + place = geocode_place_new (name, GEOCODE_PLACE_TYPE_STREET); + g_free (name); + + geocode_place_set_country (place, + folks_postal_address_get_country (addr)); + geocode_place_set_state (place, + folks_postal_address_get_region (addr)); + geocode_place_set_postal_code (place, + folks_postal_address_get_postal_code (addr)); + geocode_place_set_town (place, + folks_postal_address_get_locality (addr)); + geocode_place_set_street_address (place, + folks_postal_address_get_street (addr)); + + maps_contact_add_place (contact, place); + } + g_object_unref (iter); + + return contact; +} + +MapsContactStore * +maps_contact_store_new () +{ + return g_object_new (MAPS_TYPE_CONTACT_STORE, NULL); +} + +static void +maps_contact_store_lookup_cb (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + MapsContactStoreLookupCallback callback) +{ + FolksIndividual *individual; + + individual = folks_individual_aggregator_look_up_individual_finish (aggregator, + res, + NULL); + if (individual != NULL) + { + MapsContact *contact = get_contact (individual); + callback (contact); + } + else + { + callback (NULL); + } +} + +/** + * maps_contact_store_lookup: + * @store: A #MapsContactStore object + * @callback: (scope async): A #MapsContactStoreLookupCallback function + */ +void +maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback) +{ + folks_individual_aggregator_look_up_individual (store->priv->aggregator, + id, + (GAsyncReadyCallback) maps_contact_store_lookup_cb, + callback); +} + +static void +aggregator_quiescent_notify (FolksIndividualAggregator *aggregator, + GParamSpec *pspec, + MapsContactStore *store) +{ + GeeMap *map; + GeeMapIterator *iter; + + map = folks_individual_aggregator_get_individuals (aggregator); + iter = gee_map_map_iterator (map); + + while (gee_map_iterator_has_next (iter)) + { + MapsContact *contact; + + gee_map_iterator_next (iter); + contact = get_contact (gee_map_iterator_get_value (iter)); + if (contact) + store->priv->list = g_list_prepend (store->priv->list, contact); + } + g_clear_object (&iter); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADED; + g_object_notify (G_OBJECT (store), "state"); +} + +static void +aggregator_prepare (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + gpointer user_data) +{ + folks_individual_aggregator_prepare_finish (aggregator, res, NULL); +} + +/** + * maps_contact_store_load: + * @store: A #MapsContactStore object + * + * Load contacts from available backends. + * + */ +void +maps_contact_store_load (MapsContactStore *store) +{ + g_return_if_fail (MAPS_IS_CONTACT_STORE (store)); + + store->priv->aggregator = folks_individual_aggregator_dup (); + + g_signal_connect (G_OBJECT (store->priv->aggregator), + "notify::is-quiescent", + G_CALLBACK (aggregator_quiescent_notify), + store); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADING; + g_object_notify (G_OBJECT (store), "state"); + + folks_individual_aggregator_prepare (store->priv->aggregator, + (GAsyncReadyCallback) aggregator_prepare, + NULL); +} + +/** + * maps_contact_store_get_contacts: + * @store: A #MapsContactStore object + * + * Returns: (element-type MapsContact) (transfer none): a list of #MapsContact, + */ +GList * +maps_contact_store_get_contacts (MapsContactStore *store) +{ + g_return_val_if_fail (MAPS_IS_CONTACT_STORE (store), NULL); + + return store->priv->list; +} diff --git a/lib/maps-contact-store.h b/lib/maps-contact-store.h new file mode 100644 index 00000000..3bbf2cbc --- /dev/null +++ b/lib/maps-contact-store.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_STORE_H__ +#define __MAPS_CONTACT_STORE_H__ + +#include +#include "maps-contact.h" + +#define MAPS_TYPE_CONTACT_STORE maps_contact_store_get_type () +G_DECLARE_FINAL_TYPE(MapsContactStore, maps_contact_store, MAPS, CONTACT_STORE, + GObject) + +typedef struct _MapsContactStorePrivate MapsContactStorePrivate; + +/** + * MapsContactStoreState: + * @MAPS_CONTACT_STORE_STATE_INITIAL: Initial state + * @MAPS_CONTACT_STORE_STATE_LOADING: Loading + * @MAPS_CONTACT_STORE_STATE_LOADED: Loaded + */ +typedef enum { + MAPS_CONTACT_STORE_STATE_INITIAL, + MAPS_CONTACT_STORE_STATE_LOADING, + MAPS_CONTACT_STORE_STATE_LOADED, +} MapsContactStoreState; + +/** + * MapsContactStoreLookupCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactStoreLookupCallback) (MapsContact *contact); + +struct _MapsContactStore +{ + GObject parent_instance; + MapsContactStorePrivate *priv; +}; + +struct _MapsContactStoreClass +{ + GObjectClass parent_class; +}; + +MapsContactStore * maps_contact_store_new (void); +void maps_contact_store_load (MapsContactStore *store); +void maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback); +GList * maps_contact_store_get_contacts (MapsContactStore *store); + +#endif diff --git a/lib/maps-contact.c b/lib/maps-contact.c new file mode 100644 index 00000000..a842a5a9 --- /dev/null +++ b/lib/maps-contact.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include + +#include "maps-contact.h" + +struct _MapsContactPrivate +{ + char *name; + char *id; + + GLoadableIcon *icon; + GList *places; + ChamplainBoundingBox *bbox; + + GMutex geocode_mutex; + guint geocode_counter; + guint geocodes_to_perform; +}; + +typedef struct +{ + GeocodePlace *place; + MapsContact *contact; + MapsContactGeocodeCallback callback; + + GHashTable *params; +} GeocodeData; + +enum { + PROP_0, + + PROP_NAME, + PROP_ICON, + PROP_ID, + PROP_BBOX +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContact, maps_contact, G_TYPE_OBJECT) + +static void +maps_contact_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_free (contact->priv->name); + contact->priv->name = g_value_dup_string (value); + break; + + case PROP_ICON: + if (contact->priv->icon) + g_object_unref (contact->priv->icon); + contact->priv->icon = g_value_dup_object (value); + break; + + case PROP_ID: + g_free (contact->priv->id); + contact->priv->id = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_value_set_string (value, + contact->priv->name); + break; + + case PROP_ICON: + g_value_set_object (value, + contact->priv->icon); + break; + + case PROP_ID: + g_value_set_string (value, + contact->priv->id); + break; + + case PROP_BBOX: + g_value_set_boxed (value, + contact->priv->bbox); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_dispose (GObject *object) +{ + MapsContact *contact = (MapsContact *) object; + + g_clear_pointer (&contact->priv->name, g_free); + g_clear_pointer (&contact->priv->id, g_free); + g_clear_object (&contact->priv->icon); + g_clear_object (&contact->priv->bbox); + g_list_free_full (contact->priv->places, g_object_unref); + + G_OBJECT_CLASS (maps_contact_parent_class)->dispose (object); +} + +static void +maps_contact_class_init (MapsContactClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_dispose; + maps_class->get_property = maps_contact_get_property; + maps_class->set_property = maps_contact_set_property; + + /** + * MapsContact:name: + * + * The name of the contact. + */ + pspec = g_param_spec_string ("name", + "Name", + "Name", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_NAME, pspec); + + /** + * MapsContact:id: + * + * The unique id of the contact. + */ + pspec = g_param_spec_string ("id", + "ID", + "ID", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsContact:icon: + * + * The icon of the contact. + */ + pspec = g_param_spec_object ("icon", + "Icon", + "An icon representing the contact", + G_TYPE_ICON, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ICON, pspec); + + /** + * MapsContact:bounding-box: + * + * The bounding box for the contact. + */ + pspec = g_param_spec_boxed ("bounding-box", + "Bounding Box", + "The bounding box for the place", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_BBOX, pspec); +} + +static void +maps_contact_init (MapsContact *contact) +{ + contact->priv = maps_contact_get_instance_private (contact); + + contact->priv->name = NULL; + contact->priv->id = NULL; + contact->priv->icon = NULL; + contact->priv->places = NULL; + contact->priv->bbox = NULL; + + g_mutex_init (&contact->priv->geocode_mutex); +} + +/** + * maps_contact_add_address: + * @contact: A #MapsContact object + * @place: A #GeocodePlace object + */ +void +maps_contact_add_place (MapsContact *contact, + GeocodePlace *place) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (GEOCODE_IS_PLACE (place)); + + contact->priv->places = g_list_prepend (contact->priv->places, place); +} + +/** + * maps_contact_get_places: + * @contact: A #MapsContact object + * + * Returns: (element-type GeocodePlace) (transfer container): a list of #GeocodePlace + */ +GList * +maps_contact_get_places (MapsContact *contact) +{ + g_return_val_if_fail (MAPS_IS_CONTACT (contact), NULL); + + return contact->priv->places; +} + +static void +on_geocode_search_async (GeocodeForward *forward, + GAsyncResult *res, + GeocodeData *data) +{ + MapsContact *contact; + GList *places; + gboolean call_callback = FALSE; + + contact = data->contact; + places = geocode_forward_search_finish (forward, res, NULL); + + g_mutex_lock (&contact->priv->geocode_mutex); + + if (places) + { + GeocodePlace *place = g_list_nth_data (places, 0); + GeocodeLocation *location = geocode_place_get_location (place); + const char *street_address; + const char *street; + + /* Keep the naming, but add location and osm info */ + geocode_place_set_location (data->place, location); + g_object_set (G_OBJECT (data->place), "osm-type", + geocode_place_get_osm_type (place), NULL); + g_object_set (G_OBJECT (data->place), "osm-id", + geocode_place_get_osm_id (place), NULL); + + /* Update the contact bounding box */ + if (contact->priv->bbox == NULL) + contact->priv->bbox = champlain_bounding_box_new (); + + champlain_bounding_box_extend (contact->priv->bbox, + geocode_location_get_latitude (location), + geocode_location_get_longitude (location)); + + /* Make sure we do not lie about how good our resolution is */ + street_address = geocode_place_get_street_address (place); + street = geocode_place_get_street (place); + if (street_address) + geocode_place_set_street_address (data->place, street); + else if (street) + geocode_place_set_street (data->place, street); + + g_list_free_full(places, g_object_unref); + } + + contact->priv->geocode_counter++; + if (contact->priv->geocode_counter == contact->priv->geocodes_to_perform) + call_callback = TRUE; + + g_mutex_unlock (&contact->priv->geocode_mutex); + + g_hash_table_destroy (data->params); + + if (call_callback) + data->callback (contact); +} + +static void add_attribute (GHashTable *ht, + const char *key, + const char *s) +{ + GValue *value; + value = g_new0 (GValue, 1); + g_value_init (value, G_TYPE_STRING); + g_value_set_static_string (value, s); + g_hash_table_insert (ht, g_strdup (key), value); +} + +/** + * maps_contact_geocode: + * @contact: A #MapsContact object + * @callback: (scope async): A #MapsContactGeocodeCallback function + */ +void +maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (callback != NULL); + + GList *l; + + contact->priv->geocode_counter = 0; + contact->priv->geocodes_to_perform = g_list_length (contact->priv->places); + + for (l = contact->priv->places; l != NULL; l = l->next) { + GeocodeData *data; + GeocodeForward *forward; + + data = g_slice_new (GeocodeData); + data->contact = contact; + data->place = l->data; + data->callback = callback; + data->params = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + add_attribute (data->params, "street", + geocode_place_get_street_address (data->place)); + add_attribute (data->params, "locality", + geocode_place_get_town (data->place)); + add_attribute (data->params, "region", + geocode_place_get_state (data->place)); + add_attribute (data->params, "country", + geocode_place_get_country (data->place)); + + forward = geocode_forward_new_for_params (data->params); + geocode_forward_search_async (forward, + NULL, + (GAsyncReadyCallback) on_geocode_search_async, + data); + } +} + +MapsContact * +maps_contact_new () +{ + return g_object_new (MAPS_TYPE_CONTACT, NULL); +} diff --git a/lib/maps-contact.h b/lib/maps-contact.h new file mode 100644 index 00000000..d036faf2 --- /dev/null +++ b/lib/maps-contact.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_H__ +#define __MAPS_CONTACT_H__ + +#include +#include + +#define MAPS_TYPE_CONTACT maps_contact_get_type () +G_DECLARE_FINAL_TYPE(MapsContact, maps_contact, MAPS, CONTACT, GObject) + +typedef struct _MapsContactPrivate MapsContactPrivate; + +/** + * MapsContactGeocodeCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactGeocodeCallback) (MapsContact *contact); + +struct _MapsContact +{ + GObject parent_instance; + MapsContactPrivate *priv; +}; + +struct _MapsContactClass +{ + GObjectClass parent_class; +}; + +MapsContact *maps_contact_new (void); +void maps_contact_add_place (MapsContact *contact, + GeocodePlace *place); +GList * maps_contact_get_places (MapsContact *contact); +void maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback); +#endif diff --git a/lib/maps-enum-types.c.template b/lib/maps-enum-types.c.template new file mode 100644 index 00000000..188506a0 --- /dev/null +++ b/lib/maps-enum-types.c.template @@ -0,0 +1,31 @@ +/*** BEGIN file-header ***/ +#include "maps-enum-types.h" + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (etype == 0) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static ("@EnumName@", values); + } + return etype; +} + +/*** END value-tail ***/ diff --git a/lib/maps-enum-types.h.template b/lib/maps-enum-types.h.template new file mode 100644 index 00000000..14171b23 --- /dev/null +++ b/lib/maps-enum-types.h.template @@ -0,0 +1,36 @@ +/*** BEGIN file-header ***/ +#ifndef __MAPS_ENUM_TYPES_H__ +#define __MAPS_ENUM_TYPES_H__ + +#include "maps.h" + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; + +#define MAPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) + +/** + * SECTION:maps-enum-types + * @short_description: Maps enumerated types + * @include: maps.h + * + * The enumerated types defined and used by libgnome-maps. + **/ + +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __MAPS_ENUM_TYPES_H__ */ + +/*** END file-tail ***/ diff --git a/lib/maps-file-tile-source.c b/lib/maps-file-tile-source.c new file mode 100644 index 00000000..61e5f060 --- /dev/null +++ b/lib/maps-file-tile-source.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include +#include +#include +#include + +#include "mapsintl.h" +#include "maps-file-tile-source.h" + +#define MAPS_FILE_TILE_SOURCE_ERROR maps_file_tile_source_error_quark () + +GQuark +maps_file_tile_source_error_quark (void) +{ + return g_quark_from_static_string ("maps-file-tile-source-error"); +} + +enum { + PROP_0, + + PROP_PATH, + PROP_MAX_ZOOM, + PROP_MIN_ZOOM, + PROP_WORLD + +}; + +struct _MapsFileTileSourcePrivate +{ + gchar *path; + gchar *extension; + gint max_zoom; + gint min_zoom; + ChamplainBoundingBox *world; + + long min_x; + long min_y; + long max_x; + long max_y; +}; + +typedef struct +{ + ChamplainMapSource *map_source; + ChamplainTile *tile; +} CallbackData; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsFileTileSource, maps_file_tile_source, CHAMPLAIN_TYPE_TILE_SOURCE) + +static void fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile); + + +static void +maps_file_tile_source_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + tile_source->priv->path = g_strdup ((char *) g_value_get_string (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + g_value_set_string (value, tile_source->priv->path); + break; + + case PROP_MIN_ZOOM: + g_value_set_uint (value, tile_source->priv->min_zoom); + break; + + case PROP_MAX_ZOOM: + g_value_set_uint (value, tile_source->priv->max_zoom); + break; + + case PROP_WORLD: + g_value_set_boxed (value, tile_source->priv->world); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_dispose (GObject *object) +{ + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->dispose (object); +} + +static void +maps_file_tile_source_finalize (GObject *object) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + if (tile_source->priv->path) + g_free (tile_source->priv->path); + + if (tile_source->priv->extension) + g_free (tile_source->priv->extension); + + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->finalize (object); +} + +static guint +get_max_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->max_zoom; +} + +static guint +get_min_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->min_zoom; +} + +static void +maps_file_tile_source_class_init (MapsFileTileSourceClass *klass) +{ + ChamplainMapSourceClass *map_source_class = CHAMPLAIN_MAP_SOURCE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->finalize = maps_file_tile_source_finalize; + object_class->dispose = maps_file_tile_source_dispose; + object_class->get_property = maps_file_tile_source_get_property; + object_class->set_property = maps_file_tile_source_set_property; + map_source_class->get_max_zoom_level = get_max_zoom_level; + map_source_class->get_min_zoom_level = get_min_zoom_level; + map_source_class->fill_tile = fill_tile; + + /** + * MapsFileTileSource:path: + * + * The path to the tile source. + * + */ + pspec = g_param_spec_string ("path", + "Path", + "The path to the tile source", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property (object_class, PROP_PATH, pspec); + + /** + * MapsFileTileSource:min-zoom: + * + * The minimum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("min-zoom", + "Minimum zoom", + "The minimum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MIN_ZOOM, pspec); + + /** + * MapsFileTileSource:max-zoom: + * + * The maximum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("max-zoom", + "Maximum zoom", + "The maximum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MAX_ZOOM, pspec); + + /** + * MapsFileTileSource:world: + * + * Set a bounding box to limit the world to. No tiles will be loaded + * outside of this bounding box. It will not be possible to scroll outside + * of this bounding box. + * + */ + pspec = g_param_spec_boxed ("world", + "The world", + "The bounding box to limit the #ChamplainView to", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_WORLD, pspec); +} + +static void +maps_file_tile_source_init (MapsFileTileSource *tile_source) +{ + tile_source->priv = maps_file_tile_source_get_instance_private (tile_source); + tile_source->priv->path = NULL; + tile_source->priv->extension = NULL; + tile_source->priv->max_zoom = -1; + tile_source->priv->min_zoom = 21; + tile_source->priv->world = NULL; + tile_source->priv->min_x = G_MAXLONG; + tile_source->priv->min_y = G_MAXLONG; + tile_source->priv->max_x = 0; + tile_source->priv->max_y = 0; +} + +static gboolean +get_zoom_levels (MapsFileTileSource *tile_source, + GError **error) +{ + GFile *file; + GFileEnumerator *enumerator; + gboolean ret = TRUE; + long orig_min = tile_source->priv->min_zoom; + long orig_max = tile_source->priv->max_zoom; + + file = g_file_new_for_path (tile_source->priv->path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + const char *name; + char *endptr; + long val; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + val = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (val > tile_source->priv->max_zoom) + tile_source->priv->max_zoom = val; + + if (val < tile_source->priv->min_zoom) + tile_source->priv->min_zoom = val; + } + + if (tile_source->priv->min_zoom == orig_min || + tile_source->priv->max_zoom == orig_max) { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + + return ret; +} + +static gboolean +get_y_bounds (MapsFileTileSource *tile_source, + const char *path, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + gboolean ret = TRUE; + gboolean found = FALSE; + + file = g_file_new_for_path (path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + char **names; + char *endptr; + long y; + + if (!g_file_enumerator_iterate (enumerator, &info, + NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) + continue; + + names = g_strsplit (g_file_info_get_name (info), ".", 2); + if (!tile_source->priv->extension) + tile_source->priv->extension = g_strdup (names[1]); + + y = strtol (names[0], &endptr, 0); + if (endptr == names[0] || *endptr != '\0') { + g_strfreev (names); + continue; + } + + if (!found) + found = TRUE; + + g_strfreev (names); + + if (y > tile_source->priv->max_y) + tile_source->priv->max_y = y; + + if (y < tile_source->priv->min_y) + tile_source->priv->min_y = y; + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +static gboolean +get_bounds (MapsFileTileSource *tile_source, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + char *path; + gboolean ret = TRUE; + char min_zoom[3]; + gboolean found = FALSE; + + sprintf (min_zoom, "%u", tile_source->priv->min_zoom); + path = g_build_filename (tile_source->priv->path, min_zoom, NULL); + file = g_file_new_for_path (path); + + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + char *y_path; + GFileInfo *info; + const char *name; + char *endptr; + long x; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + x = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (!found) + found = TRUE; + + if (x > tile_source->priv->max_x) + tile_source->priv->max_x = x; + + if (x < tile_source->priv->min_x) + tile_source->priv->min_x = x; + + y_path = g_build_filename (path, name, NULL); + if (!get_y_bounds (tile_source, y_path, error)) { + g_free (y_path); + ret = FALSE; + goto out; + } + g_free (y_path); + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_free (path); + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +gboolean +maps_file_tile_source_prepare (MapsFileTileSource *tile_source, + GError **error) +{ + g_return_val_if_fail (MAPS_IS_FILE_TILE_SOURCE (tile_source), FALSE); + g_return_val_if_fail (tile_source->priv->path != NULL, FALSE); + + ChamplainMapSource *source = (ChamplainMapSource *) tile_source; + gboolean ret = TRUE; + guint tile_size = champlain_map_source_get_tile_size (source); + + if (!get_zoom_levels (tile_source, error)) { + ret = FALSE; + goto out; + } + + if (!get_bounds (tile_source, error)) { + ret = FALSE; + goto out; + } + + tile_source->priv->world = champlain_bounding_box_new (); + tile_source->priv->world->left = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_x * + tile_size); + tile_source->priv->world->right = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_x + 1) * + tile_size); + tile_source->priv->world->top = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_y * + tile_size); + tile_source->priv->world->bottom = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_y + 1) * + tile_size); + out: + return ret; +} + +static void +tile_rendered_cb (ChamplainTile *tile, + gpointer data, + guint size, + gboolean error, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source; + + g_signal_handlers_disconnect_by_func (tile, tile_rendered_cb, user_data); + g_slice_free (CallbackData, user_data); + + next_source = champlain_map_source_get_next_source (map_source); + + if (!error) + { + ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source); + ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source); + + if (tile_cache && data) + champlain_tile_cache_store_tile (tile_cache, tile, data, size); + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + } + else if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + g_object_unref (map_source); + g_object_unref (tile); +} + +static void +tile_loaded_cb (GFile *file, + GAsyncResult *res, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + ChamplainTile *tile = user_data->tile; + CallbackData *data; + ChamplainRenderer *renderer; + guint8 *content; + gsize length; + + g_slice_free (CallbackData, user_data); + + if (!g_file_load_contents_finish (file, res, (char **) &content, &length, NULL, NULL)) + { + goto load_next; + } + + renderer = champlain_map_source_get_renderer (map_source); + g_return_if_fail (CHAMPLAIN_IS_RENDERER (renderer)); + + data = g_slice_new (CallbackData); + data->map_source = map_source; + + g_signal_connect (tile, "render-complete", G_CALLBACK (tile_rendered_cb), data); + + champlain_renderer_set_data (renderer, content, length); + champlain_renderer_render (renderer, tile); + + return; + +load_next: + if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + goto cleanup; + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + +cleanup: + g_object_unref (tile); + g_object_unref (map_source); +} + +static void +fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile) +{ + g_return_if_fail (MAPS_IS_FILE_TILE_SOURCE (map_source)); + g_return_if_fail (CHAMPLAIN_IS_TILE (tile)); + + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (map_source); + CallbackData *callback_data; + GFile *file; + gchar *path = NULL; + + if (champlain_tile_get_state (tile) == CHAMPLAIN_STATE_DONE) + return; + + path = g_strdup_printf("%s/%d/%d/%d.%s", + tile_source->priv->path, + champlain_tile_get_zoom_level (tile), + champlain_tile_get_x (tile), + champlain_tile_get_y (tile), + tile_source->priv->extension); + file = g_file_new_for_path (path); + + if (g_file_query_exists(file, NULL)) + { + callback_data = g_slice_new (CallbackData); + callback_data->tile = tile; + callback_data->map_source = map_source; + + g_object_ref (map_source); + g_object_ref (tile); + + g_file_load_contents_async (file, NULL, + (GAsyncReadyCallback) tile_loaded_cb, + callback_data); + } + else + { + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + + if (CHAMPLAIN_IS_MAP_SOURCE (next_source)) + champlain_map_source_fill_tile (next_source, tile); + } + + g_object_unref (file); + g_free (path); +} diff --git a/lib/maps-file-tile-source.h b/lib/maps-file-tile-source.h new file mode 100644 index 00000000..9b432e04 --- /dev/null +++ b/lib/maps-file-tile-source.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef _MAPS_FILE_TILE_SOURCE_H_ +#define _MAPS_FILE_TILE_SOURCE_H_ + +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_FILE_TILE_SOURCE maps_file_tile_source_get_type () + +#define MAPS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSource)) + +#define MAPS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +#define MAPS_IS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_IS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_FILE_TILE_SOURCE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +typedef struct _MapsFileTileSourcePrivate MapsFileTileSourcePrivate; + +typedef struct _MapsFileTileSource MapsFileTileSource; +typedef struct _MapsFileTileSourceClass MapsFileTileSourceClass; + +/** + * MapsFileTileSource: + * + * The #MapsFileTileSource structure contains only private data + * and should be accessed using the provided API + * + */ +struct _MapsFileTileSource +{ + ChamplainTileSource parent_instance; + + MapsFileTileSourcePrivate *priv; +}; + +struct _MapsFileTileSourceClass +{ + ChamplainTileSourceClass parent_class; +}; + +GType maps_file_tile_source_get_type (void); + +gboolean maps_file_tile_source_prepare (MapsFileTileSource *tile_source, GError **error); +G_END_DECLS + +#endif /* _MAPS_FILE_TILE_SOURCE_H_ */ diff --git a/lib/maps-osm-changeset.c b/lib/maps-osm-changeset.c new file mode 100644 index 00000000..9dcc274d --- /dev/null +++ b/lib/maps-osm-changeset.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-changeset.h" + +#include + +struct _MapsOSMChangesetPrivate +{ + char *comment; + char *created_by; +}; + +enum { + PROP_0, + + PROP_COMMENT, + PROP_CREATED_BY +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMChangeset, maps_osm_changeset, G_TYPE_OBJECT) + +static void +maps_osm_changeset_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + changeset->priv->comment = g_value_dup_string (value); + break; + + case PROP_CREATED_BY: + changeset->priv->created_by = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + g_value_set_string (value, changeset->priv->comment); + break; + + case PROP_CREATED_BY: + g_value_set_string (value, changeset->priv->created_by); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_dispose (GObject *object) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + g_free (changeset->priv->comment); + g_free (changeset->priv->created_by); + + G_OBJECT_CLASS (maps_osm_changeset_parent_class)->dispose (object); +} + +static void +maps_osm_changeset_class_init (MapsOSMChangesetClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->dispose = maps_osm_changeset_dispose; + object_class->get_property = maps_osm_changeset_get_property; + object_class->set_property = maps_osm_changeset_set_property; + + /** + * MapsOSMChangeset:comment: + * + * The comment of the changes. + */ + pspec = g_param_spec_string ("comment", + "Comment", + "Comment", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_COMMENT, pspec); + + /** + * MapsOSMChangeset:created_by: + * + * The identifier of the client making the changeset. + */ + pspec = g_param_spec_string ("created_by", + "Created by", + "Created by", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_CREATED_BY, pspec); +} + +static void +maps_osm_changeset_init (MapsOSMChangeset *changeset) +{ + changeset->priv = maps_osm_changeset_get_instance_private (changeset); + + changeset->priv->comment = NULL; + changeset->priv->created_by = NULL; +} + +MapsOSMChangeset * +maps_osm_changeset_new (const char *comment, const char *created_by) +{ + return g_object_new (MAPS_TYPE_OSMCHANGESET, + "comment", comment, + "created_by", created_by, NULL); +} + +xmlNodePtr +maps_osm_changeset_create_tag_node (const char *key, const char * value) +{ + xmlNodePtr node; + + node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (node, (xmlChar *) "k", (xmlChar *) key); + xmlNewProp (node, (xmlChar *) "v", (xmlChar *) value); + + return node; +} + +char * +maps_osm_changeset_serialize (const MapsOSMChangeset *changeset) +{ + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr changeset_node; + xmlNodePtr comment_node; + xmlNodePtr created_by_node; + xmlChar *result; + int size; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + changeset_node = xmlNewNode (NULL, (xmlChar *) "changeset"); + comment_node = + maps_osm_changeset_create_tag_node ("comment", changeset->priv->comment); + created_by_node = + maps_osm_changeset_create_tag_node ("created_by", + changeset->priv->created_by); + xmlAddChild (osm_node, changeset_node); + xmlAddChild (changeset_node, comment_node); + xmlAddChild (changeset_node, created_by_node); + xmlDocSetRootElement (doc, osm_node); + + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-changeset.h b/lib/maps-osm-changeset.h new file mode 100644 index 00000000..01963366 --- /dev/null +++ b/lib/maps-osm-changeset.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_CHANGESET_H__ +#define __MAPS_OSM_CHANGESET_H__ + +#include + +#define MAPS_TYPE_OSMCHANGESET maps_osm_changeset_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMChangeset, maps_osm_changeset, MAPS, OSMCHANGESET, + GObject) + +typedef struct _MapsOSMChangesetPrivate MapsOSMChangesetPrivate; + +struct _MapsOSMChangeset +{ + GObject parent_instance; + MapsOSMChangesetPrivate *priv; +}; + +struct _MapsOSMChangesetClass +{ + GObjectClass parent_class; +}; + +/** + * maps_osm_changeset_new: + * @comment: (nullable): A comment about the OSM change, optional + * @created_by: (nullable): The client identifier of the OSM change, optional + */ +MapsOSMChangeset *maps_osm_changeset_new (const char *comment, + const char *created_by); + +char *maps_osm_changeset_serialize (const MapsOSMChangeset *changeset); + +#endif /* __MAPS_OSM_CHANGESET_H__ */ + diff --git a/lib/maps-osm-node.c b/lib/maps-osm-node.c new file mode 100644 index 00000000..05711e04 --- /dev/null +++ b/lib/maps-osm-node.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-node.h" + +struct _MapsOSMNodePrivate +{ + double lon; + double lat; +}; + +enum { + PROP_0, + + PROP_LONGITUDE, + PROP_LATITUDE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMNode, maps_osm_node, MAPS_TYPE_OSMOBJECT) + + +static void +maps_osm_node_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + node->priv->lon = g_value_get_double (value); + break; + + case PROP_LATITUDE: + node->priv->lat = g_value_get_double (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_node_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + g_value_set_double (value, node->priv->lon); + break; + + case PROP_LATITUDE: + g_value_set_double (value, node->priv->lat); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static const char * +maps_osm_node_get_xml_tag_name (void) +{ + return "node"; +} + +static GHashTable * +maps_osm_node_get_xml_attributes (const MapsOSMObject *object) +{ + const MapsOSMNode *node = MAPS_OSMNODE ((MapsOSMObject *) object); + GHashTable *attributes; + char buf[G_ASCII_DTOSTR_BUF_SIZE]; + + attributes = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); + + g_ascii_dtostr (buf, sizeof (buf), node->priv->lon); + g_hash_table_insert (attributes, "lon", g_strdup (buf)); + g_ascii_dtostr (buf, sizeof (buf), node->priv->lat); + g_hash_table_insert (attributes, "lat", g_strdup (buf)); + + return attributes; +} + +static void +maps_osm_node_class_init (MapsOSMNodeClass *klass) +{ + GObjectClass *node_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + node_class->get_property = maps_osm_node_get_property; + node_class->set_property = maps_osm_node_set_property; + object_class->get_xml_tag_name = maps_osm_node_get_xml_tag_name; + object_class->get_xml_attributes = maps_osm_node_get_xml_attributes; + + /** + * MapsOSMNode:longitude: + * + * The longitude of the node. + */ + pspec = g_param_spec_double ("longitude", + "Longitude", + "Longitude", + -180.0, + 180.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LONGITUDE, pspec); + + /** + * MapsOSMNode:latitude: + * + * The latitude of the node. + */ + pspec = g_param_spec_double ("latitude", + "Latitude", + "Latitude", + -90.0, + 90.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LATITUDE, pspec); +} + +static void +maps_osm_node_init (MapsOSMNode *node) +{ + node->priv = maps_osm_node_get_instance_private (node); + + node->priv->lon = 0.0; + node->priv->lat = 0.0; +} + +MapsOSMNode * +maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude) +{ + return g_object_new (MAPS_TYPE_OSMNODE, + "id", id, + "version", version, + "changeset", changeset, + "longitude", longitude, + "latitude", latitude, NULL); +} diff --git a/lib/maps-osm-node.h b/lib/maps-osm-node.h new file mode 100644 index 00000000..ba12d3bc --- /dev/null +++ b/lib/maps-osm-node.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_NODE_H__ +#define __MAPS_OSM_NODE_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMNODE maps_osm_node_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMNode, maps_osm_node, MAPS, OSMNODE, MapsOSMObject) + +typedef struct _MapsOSMNodePrivate MapsOSMNodePrivate; + +struct _MapsOSMNode +{ + MapsOSMObject parent_instance; + MapsOSMNodePrivate *priv; +}; + +struct _MapsOSMNodeClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMNode *maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude); + +#endif //__MAPS_OSM_NODE_H__ diff --git a/lib/maps-osm-oauth-proxy-call.c b/lib/maps-osm-oauth-proxy-call.c new file mode 100644 index 00000000..5e9e7544 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-oauth-proxy-call.h" + +#include +#include +#include + +#define MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL,\ + MapsOSMOAuthProxyCallPrivate)) + +struct _MapsOSMOAuthProxyCallPrivate +{ + char *payload; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(MapsOSMOAuthProxyCall, maps_osm_oauth_proxy_call, + OAUTH_TYPE_PROXY_CALL); + +static gboolean +maps_osm_oauth_proxy_call_serialize_params (RestProxyCall *call, + gchar **content_type, + gchar **content, + gsize *content_len, + GError **error) +{ + g_return_val_if_fail(MAPS_IS_OSM_OAUTH_PROXY_CALL (call), FALSE); + g_return_val_if_fail(content_type != NULL, FALSE); + g_return_val_if_fail(content != NULL, FALSE); + g_return_val_if_fail(content_len != NULL, FALSE); + + gchar *payload = (MAPS_OSM_OAUTH_PROXY_CALL (call))->priv->payload; + + *content_type = g_strdup ("text/xml"); + *content = g_strdup (payload); + *content_len = strlen (payload); + + return TRUE; +} + +static void +maps_osm_oauth_proxy_call_dispose (GObject *object) +{ + MapsOSMOAuthProxyCall *call = MAPS_OSM_OAUTH_PROXY_CALL (object); + + g_free (call->priv->payload); + call->priv->payload = NULL; + + G_OBJECT_CLASS (maps_osm_oauth_proxy_call_parent_class)->dispose (object); +} + +static void +maps_osm_oauth_proxy_call_class_init (MapsOSMOAuthProxyCallClass *klass) +{ + RestProxyCallClass *proxy_call_class = REST_PROXY_CALL_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + proxy_call_class->serialize_params = + maps_osm_oauth_proxy_call_serialize_params; + gobject_class->dispose = maps_osm_oauth_proxy_call_dispose; +} + +static void +maps_osm_oauth_proxy_call_init (MapsOSMOAuthProxyCall *call) +{ + call->priv = MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE (call); +} + +MapsOSMOAuthProxyCall * +maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, const char *payload) +{ + g_return_val_if_fail (OAUTH_IS_PROXY (proxy), NULL); + g_return_val_if_fail (payload != NULL, NULL); + + MapsOSMOAuthProxyCall *call = + g_object_new (MAPS_TYPE_OSM_OAUTH_PROXY_CALL, "proxy", proxy, NULL); + + call->priv->payload = g_strdup (payload); + + return call; +} + + diff --git a/lib/maps-osm-oauth-proxy-call.h b/lib/maps-osm-oauth-proxy-call.h new file mode 100644 index 00000000..e9c240d8 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef MAPS_OSM_OAUTH_PROXY_CALL_H +#define MAPS_OSM_OAUTH_PROXY_CALL_H + +#include + +#include +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_OSM_OAUTH_PROXY_CALL (maps_osm_oauth_proxy_call_get_type ()) +#define MAPS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCall)) +#define MAPS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_OSM_OAUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) + +typedef struct _MapsOSMOAuthProxyCall MapsOSMOAuthProxyCall; +typedef struct _MapsOSMOAuthProxyCallPrivate MapsOSMOAuthProxyCallPrivate; +typedef struct _MapsOSMOAuthProxyCallClass MapsOSMOAuthProxyCallClass; + +struct _MapsOSMOAuthProxyCall +{ + OAuthProxyCall parent; + MapsOSMOAuthProxyCallPrivate *priv; +}; + +struct _MapsOSMOAuthProxyCallClass +{ + OAuthProxyCallClass parent_class; +}; + +GType maps_osm_oauth_proxy_call_get_type(void); +MapsOSMOAuthProxyCall *maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, + const char *content); + +G_END_DECLS + +#endif /* MAPS_OSM_OAUTH_PROXY_CALL_H */ diff --git a/lib/maps-osm-object.c b/lib/maps-osm-object.c new file mode 100644 index 00000000..5a00f0c1 --- /dev/null +++ b/lib/maps-osm-object.c @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-object.h" + +struct _MapsOSMObjectPrivate +{ + guint64 id; + guint version; + guint64 changeset; + + GHashTable *tags; +}; + +enum { + PROP_0, + + PROP_ID, + PROP_VERSION, + PROP_CHANGESET +}; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MapsOSMObject, maps_osm_object, + G_TYPE_OBJECT) + +static void +maps_osm_object_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + priv->id = g_value_get_uint64 (value); + break; + + case PROP_VERSION: + priv->version = g_value_get_uint (value); + break; + + case PROP_CHANGESET: + priv->changeset = g_value_get_uint64 (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + g_value_set_uint64 (value, priv->id); + break; + + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + + case PROP_CHANGESET: + g_value_set_uint64 (value, priv->changeset); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_dispose (GObject *object) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + g_hash_table_destroy (priv->tags); + priv->tags = NULL; + + G_OBJECT_CLASS (maps_osm_object_parent_class)->dispose (object); +} + +/* base implementation returning no object-specific XML attributes */ +static GHashTable * +maps_osm_object_get_xml_attributes (const MapsOSMObject *object) +{ + return NULL; +} + +/* base implementation return no object-specific child XML nodes */ +static xmlNodePtr +maps_osm_object_get_xml_child_nodes (const MapsOSMObject *object) +{ + return NULL; +} + +static void +maps_osm_object_class_init (MapsOSMObjectClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_osm_object_dispose; + maps_class->get_property = maps_osm_object_get_property; + maps_class->set_property = maps_osm_object_set_property; + object_class->get_xml_attributes = maps_osm_object_get_xml_attributes; + object_class->get_xml_child_nodes = maps_osm_object_get_xml_child_nodes; + + /** + * MapsOSMObject:id: + * + * The OSM id of the object. + */ + pspec = g_param_spec_uint64 ("id", + "ID", + "ID", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsOSMObject:version: + * + * The latest OSM version of the object. + */ + pspec = g_param_spec_uint("version", + "Version", + "Version", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_VERSION, pspec); + + /** + * MapsOSMObject:changeset: + * + * The OSM changeset for the current upload of the object. + */ + pspec = g_param_spec_uint64 ("changeset", + "Changeset", + "Changeset", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_CHANGESET, pspec); +} + +static void +maps_osm_object_init (MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + priv->tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); +} + +const char * +maps_osm_object_get_tag (const MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private ((MapsOSMObject *) object); + + g_return_val_if_fail (key != NULL, NULL); + + return g_hash_table_lookup (priv->tags, key); +} + +void +maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_insert (priv->tags, g_strdup (key), g_strdup (value)); +} + +void +maps_osm_object_delete_tag (MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_remove (priv->tags, key); +} + +static void +maps_osm_object_foreach_tag (gpointer key, gpointer value, gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + /* skip tag if it has an empty placeholder value */ + if (val && *val) + { + xmlNodePtr tag_node; + + tag_node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (tag_node, (xmlChar *) "k", name); + xmlNewProp (tag_node, (xmlChar *) "v", val); + xmlAddChild (object_node, tag_node); + } +} + +static void +maps_osm_object_foreach_type_attr (gpointer key, gpointer value, + gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + xmlNewProp (object_node, name, val); +} + +xmlDocPtr +maps_osm_object_to_xml (const MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv; + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr object_node; + const char *type; + GHashTable *type_attrs; + xmlNodePtr type_sub_nodes; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + priv = (MapsOSMObjectPrivate *) maps_osm_object_get_instance_private ((MapsOSMObject *) object); + type = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_tag_name (); + object_node = xmlNewNode (NULL, (const xmlChar *) type); + + /* add common OSM attributes */ + if (priv->id != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->id); + xmlNewProp (object_node, (xmlChar *) "id", (xmlChar *) buf); + } + + if (priv->version != 0) + { + char buf[16]; + g_snprintf (buf, 16, "%d", priv->version); + xmlNewProp (object_node, (xmlChar *) "version", (xmlChar *) buf); + } + + if (priv->changeset != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->changeset); + xmlNewProp (object_node, (xmlChar *) "changeset", (xmlChar *) buf); + } + + /* add OSM tags */ + g_hash_table_foreach (priv->tags, maps_osm_object_foreach_tag, object_node); + + /* add type-specific attributes */ + type_attrs = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_attributes (object); + if (type_attrs) + { + g_hash_table_foreach (type_attrs, maps_osm_object_foreach_type_attr, + object_node); + g_hash_table_destroy (type_attrs); + } + + /* add type-specific sub-nodes */ + type_sub_nodes = + MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_child_nodes (object); + if (type_sub_nodes) + xmlAddChildList (object_node, type_sub_nodes); + + /* add type node to top node */ + xmlAddChild (osm_node, object_node); + xmlDocSetRootElement (doc, osm_node); + + return doc; +} + + +char * +maps_osm_object_serialize (const MapsOSMObject *object) +{ + xmlDocPtr doc; + xmlChar *result; + int size; + + doc = maps_osm_object_to_xml (object); + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-object.h b/lib/maps-osm-object.h new file mode 100644 index 00000000..6e8f2e3b --- /dev/null +++ b/lib/maps-osm-object.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_OBJECT_H__ +#define __MAPS_OSM_OBJECT_H__ + +#include +#include + +#define MAPS_TYPE_OSMOBJECT maps_osm_object_get_type () +G_DECLARE_DERIVABLE_TYPE(MapsOSMObject, maps_osm_object, MAPS, OSMOBJECT, + GObject) + +typedef struct _MapsOSMObjectPrivate MapsOSMObjectPrivate; + +struct _MapsOSMObjectClass +{ + GObjectClass parent_class; + + /* return the name of the distinguishing OSM XML tag (beneath ) */ + const char * (* get_xml_tag_name) (void); + + /* return hash table with XML attributes (key/values) specific for + the object (on the XML tag beneath ) */ + GHashTable * (* get_xml_attributes) (const MapsOSMObject *object); + + /* return a list of custom object-specific XML tags to attach, + can return NULL if there's no object-specific nodes */ + xmlNodePtr (* get_xml_child_nodes) (const MapsOSMObject *object); +}; + +const char *maps_osm_object_get_tag (const MapsOSMObject *object, + const char *key); +void maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value); +void maps_osm_object_delete_tag (MapsOSMObject *object, const char *key); + +char *maps_osm_object_serialize (const MapsOSMObject *object); + +#endif //__MAPS_OSM_OBJECT_H__ diff --git a/lib/maps-osm-relation.c b/lib/maps-osm-relation.c new file mode 100644 index 00000000..e4d4efd2 --- /dev/null +++ b/lib/maps-osm-relation.c @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-relation.h" + +struct _MapsOSMRelationPrivate +{ + GList *members; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMRelation, maps_osm_relation, + MAPS_TYPE_OSMOBJECT); + +typedef struct +{ + char *role; + guint type; + guint64 ref; +} MapsOSMRelationMember; + +static void +maps_osm_relation_member_free (gpointer data) +{ + MapsOSMRelationMember *member = (MapsOSMRelationMember *) data; + + g_free (member->role); +} + +static void +maps_osm_relation_dispose (GObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION (object); + + g_list_free_full (relation->priv->members, maps_osm_relation_member_free); + relation->priv->members = NULL; + + G_OBJECT_CLASS (maps_osm_relation_parent_class)->dispose (object); +} + +static const char * +maps_osm_relation_get_xml_tag_name (void) +{ + return "relation"; +} + +static const char * +maps_osm_relation_member_type_to_string (guint type) +{ + switch (type) { + case MEMBER_TYPE_NODE: + return "node"; + case MEMBER_TYPE_WAY: + return "way"; + case MEMBER_TYPE_RELATION: + return "relation"; + default: + g_warning ("Unknown relation member type: %d\n", type); + return NULL; + } +} + +static xmlNodePtr +maps_osm_relation_get_member_node (const MapsOSMRelationMember *member) +{ + xmlNodePtr node = xmlNewNode (NULL, (xmlChar *) "member"); + char buf[16]; + + if (member->role) + xmlNewProp (node, (xmlChar *) "role", (xmlChar *) g_strdup (member->role)); + + xmlNewProp (node, (xmlChar *) "type", + (xmlChar *) maps_osm_relation_member_type_to_string (member->type)); + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, member->ref); + xmlNewProp (node, (xmlChar *) "ref", (xmlChar *) buf); + + return node; +} + +static xmlNodePtr +maps_osm_relation_get_xml_child_nodes (const MapsOSMObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION ((MapsOSMObject *) object); + xmlNodePtr nodes = NULL; + const GList *members = relation->priv->members; + + if (members) + { + const GList *iter; + nodes = maps_osm_relation_get_member_node ((MapsOSMRelationMember *) + members->data); + + for (iter = members->next; iter; iter = iter->next) + { + xmlAddSibling (nodes, maps_osm_relation_get_member_node ( + (MapsOSMRelationMember *) iter->data)); + } + } + + return nodes; +} + +static void +maps_osm_relation_class_init (MapsOSMRelationClass *klass) +{ + GObjectClass *relation_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + relation_class->dispose = maps_osm_relation_dispose; + object_class->get_xml_tag_name = maps_osm_relation_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_relation_get_xml_child_nodes; +} + +static void +maps_osm_relation_init (MapsOSMRelation *relation) +{ + relation->priv = maps_osm_relation_get_instance_private (relation); +} + +MapsOSMRelation * +maps_osm_relation_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMRELATION, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_relation_add_member (MapsOSMRelation *relation, const gchar *role, + guint type, guint64 ref) +{ + MapsOSMRelationMember *member = g_new (MapsOSMRelationMember, 1); + + member->role = g_strdup (role); + member->type = type; + member->ref = ref; + + relation->priv->members = g_list_append (relation->priv->members, member); +} + diff --git a/lib/maps-osm-relation.h b/lib/maps-osm-relation.h new file mode 100644 index 00000000..ffcae785 --- /dev/null +++ b/lib/maps-osm-relation.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_RELATION_H__ +#define __MAPS_OSM_RELATION_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMRELATION maps_osm_relation_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMRelation, maps_osm_relation, MAPS, OSMRELATION, + MapsOSMObject) + +typedef struct _MapsOSMRelationPrivate MapsOSMRelationPrivate; + +struct _MapsOSMRelation +{ + MapsOSMObject parent_instance; + MapsOSMRelationPrivate *priv; +}; + +struct _MapsOSMRelationClass +{ + MapsOSMObjectClass parent_class; +}; + +enum { + MEMBER_TYPE_NODE, + MEMBER_TYPE_WAY, + MEMBER_TYPE_RELATION +}; + +MapsOSMRelation *maps_osm_relation_new (guint64 id, guint version, + guint64 changeset); + +void maps_osm_relation_add_member (MapsOSMRelation *relation, const char *role, + guint type, guint64 ref); + +#endif /* __MAPS_OSM_RELATION_H__ */ + diff --git a/lib/maps-osm-way.c b/lib/maps-osm-way.c new file mode 100644 index 00000000..a2150287 --- /dev/null +++ b/lib/maps-osm-way.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-way.h" + +struct _MapsOSMWayPrivate +{ + GArray *node_ids; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMWay, maps_osm_way, MAPS_TYPE_OSMOBJECT); + +static void +maps_osm_way_dispose (GObject *object) +{ + MapsOSMWay *way = MAPS_OSMWAY (object); + + g_array_free (way->priv->node_ids, TRUE); + way->priv->node_ids = NULL; + + G_OBJECT_CLASS (maps_osm_way_parent_class)->dispose (object); +} + +static const char * +maps_osm_way_get_xml_tag_name (void) +{ + return "way"; +} + +static xmlNodePtr +maps_osm_way_create_node_xml_node (guint64 ref) +{ + xmlNodePtr nd; + char buf[16]; + + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, ref); + nd = xmlNewNode (NULL, (xmlChar *) "nd"); + xmlNewProp (nd, (xmlChar *) "ref", (xmlChar *) buf); + + return nd; +} + +static xmlNodePtr +maps_osm_way_get_xml_child_nodes(const MapsOSMObject *object) +{ + const MapsOSMWay *way = MAPS_OSMWAY ((MapsOSMObject *) object); + int i; + xmlNodePtr result; + xmlNodePtr next; + + g_return_val_if_fail (way->priv->node_ids->len > 0, NULL); + + result = maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, 0)); + next = result; + + for (i = 1; i < way->priv->node_ids->len; i++) + { + xmlNodePtr new_node; + new_node = + maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, i)); + next = xmlAddNextSibling (next, new_node); + } + + return result; +} + +static void +maps_osm_way_class_init (MapsOSMWayClass *klass) +{ + GObjectClass *way_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + way_class->dispose = maps_osm_way_dispose; + object_class->get_xml_tag_name = maps_osm_way_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_way_get_xml_child_nodes; +} + +static void +maps_osm_way_init (MapsOSMWay *way) +{ + way->priv = maps_osm_way_get_instance_private (way); + way->priv->node_ids = g_array_new (FALSE, FALSE, sizeof (guint64)); +} + +MapsOSMWay * +maps_osm_way_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMWAY, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id) +{ + g_array_append_val (way->priv->node_ids, id); +} diff --git a/lib/maps-osm-way.h b/lib/maps-osm-way.h new file mode 100644 index 00000000..0dee1eec --- /dev/null +++ b/lib/maps-osm-way.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_WAY_H__ +#define __MAPS_OSM_WAY_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMWAY maps_osm_way_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMWay, maps_osm_way, MAPS, OSMWAY, MapsOSMObject) + +typedef struct _MapsOSMWayPrivate MapsOSMWayPrivate; + +struct _MapsOSMWay +{ + MapsOSMObject parent_instance; + MapsOSMWayPrivate *priv; +}; + +struct _MapsOSMWayClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMWay *maps_osm_way_new (guint64 id, guint version, guint64 changeset); + +void maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id); + +#endif /* __MAPS_OSM_WAY_H__ */ + diff --git a/lib/maps-osm.c b/lib/maps-osm.c new file mode 100644 index 00000000..307a9361 --- /dev/null +++ b/lib/maps-osm.c @@ -0,0 +1,471 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm.h" +#include "mapsintl.h" + +#include +#include + +#define MAPS_OSM_ERROR maps_osm_error_quark () + +GQuark +maps_osm_error_quark (void) +{ + return g_quark_from_static_string ("maps-osm-error"); +} + +void +maps_osm_init (void) +{ + LIBXML_TEST_VERSION; +} + +void +maps_osm_finalize (void) +{ + xmlCleanupParser (); +} + +static xmlDocPtr +read_xml_doc (const char *content, guint length, GError **error) +{ + xmlDoc *doc; + + doc = xmlReadMemory (content, length, "noname.xml", NULL, 0); + + if (!doc) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Failed to parse XML document")); + return NULL; + } + + return doc; +} + +static void +parse_tag (const xmlAttr *attrs, GHashTable *tags) +{ + const xmlAttr *cur_attr; + char *key; + char *value; + + key = NULL; + value = NULL; + + for (cur_attr = attrs; cur_attr; cur_attr = cur_attr->next) + { + if (g_str_equal (cur_attr->name, "k")) + key = (char *) cur_attr->children->content; + else if (g_str_equal (cur_attr->name, "v")) + value = (char *) cur_attr->children->content; + else + g_warning ("Unexpected tag property: %s\n", cur_attr->name); + } + + g_hash_table_insert (tags, key, value); +} + +static GHashTable * +parse_attributes (const xmlNode *node) +{ + GHashTable *attributes; + const xmlAttr *cur_attr; + + attributes = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_attr = node->properties; cur_attr; cur_attr = cur_attr->next) + { + g_hash_table_insert (attributes, + (gpointer) cur_attr->name, + (gpointer) cur_attr->children->content); + } + + return attributes; +} + +static GHashTable * +parse_tags (const xmlNode *tag_child) +{ + GHashTable *tags; + const xmlNode *cur_node; + + tags = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_node = tag_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "tag")) + parse_tag (cur_node->properties, tags); + } + + return tags; +} + +static GArray * +parse_node_refs (const xmlNode *node_ref_child) +{ + GArray *node_refs; + const xmlNode *cur_node; + + node_refs = g_array_new (FALSE, FALSE, sizeof (guint64)); + + for (cur_node = node_ref_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "nd")) + { + char *ref; + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + ref = g_hash_table_lookup (attributes, "ref"); + + if (ref) + { + guint64 id = g_ascii_strtoull (ref, NULL, 10); + + if (id == 0) + g_warning ("Invalid node ref: %s", ref); + else + g_array_append_val (node_refs, id); + } + + g_hash_table_destroy (attributes); + } + } + + return node_refs; +} + +static xmlNode * +get_sub_node (xmlDoc *doc) +{ + xmlNode *node; + xmlXPathContext *xpath_ctx; + xmlXPathObject * xpath_obj; + + xpath_ctx = xmlXPathNewContext (doc); + xpath_obj = xmlXPathEvalExpression ((xmlChar *) "/osm/node|/osm/way|/osm/relation", + xpath_ctx); + + if (xpath_obj && xpath_obj->nodesetval && xpath_obj->nodesetval->nodeNr > 0) + { + node = xmlCopyNode (xpath_obj->nodesetval->nodeTab[0], 1); + } + else + { + g_warning ("Couldn't find element"); + node = NULL; + } + + xmlXPathFreeObject (xpath_obj); + xmlXPathFreeContext (xpath_ctx); + + return node; +} + +static void +for_each_tag (gpointer key, gpointer value, gpointer user_data) +{ + const char *k = (const char *) key; + const char *v = (const char *) value; + MapsOSMObject *object = MAPS_OSMOBJECT (user_data); + + maps_osm_object_set_tag (object, k, v); +} + +static void +fill_tags (MapsOSMObject *object, GHashTable *tags) +{ + g_hash_table_foreach (tags, for_each_tag, object); +} + +static void +fill_node_ref_list (MapsOSMWay *way, const GArray *node_refs) +{ + int i; + + for (i = 0; i < node_refs->len; i++) + { + maps_osm_way_add_node_id (way, g_array_index (node_refs, guint64, i)); + } +} + +static MapsOSMNode * +parse_node (const xmlNodePtr node, GError **error) +{ + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + const char *lat_string; + double lat; + const char *lon_string; + double lon; + + GHashTable *tags; + GHashTable *attributes; + + MapsOSMNode *result; + + attributes = parse_attributes (node); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + lat_string = g_hash_table_lookup (attributes, "lat"); + lon_string = g_hash_table_lookup (attributes, "lon"); + + if (!id_string || !changeset_string || !version_string + || !lat_string || !lon_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + lon = g_ascii_strtod (lon_string, NULL); + lat = g_ascii_strtod (lat_string, NULL); + + g_hash_table_destroy (attributes); + + result = maps_osm_node_new (id, version, changeset, lon, lat); + + tags = parse_tags (node->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + + g_hash_table_destroy (tags); + + return result; +} + +static MapsOSMWay * +parse_way (const xmlNodePtr way, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GArray *node_refs; + MapsOSMWay *result; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + attributes = parse_attributes (way); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + g_warning ("Missing required attributes\n"); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_way_new (id, version, changeset); + + tags = parse_tags (way->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + node_refs = parse_node_refs (way->children); + fill_node_ref_list (result, node_refs); + g_array_free (node_refs, TRUE); + + return result; +} + + +static GList * +parse_members (const xmlNode *member_child) +{ + const xmlNode *cur_node; + GList *members; + + members = NULL; + + for (cur_node = member_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "member")) + { + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + members = g_list_append (members, attributes); + } + } + + return members; +} + +static void +fill_members (MapsOSMRelation *relation, const GList *members) +{ + const GList *cur; + + for (cur = members; cur; cur = g_list_next (cur)) { + GHashTable *attributes = (GHashTable *) cur->data; + const char *type_string = g_hash_table_lookup (attributes, "type"); + guint type; + const char *role = g_hash_table_lookup (attributes, "role"); + const char *ref_string = g_hash_table_lookup (attributes, "ref"); + guint64 ref; + + if (ref_string) + ref = g_ascii_strtoull (ref_string, NULL, 10); + + if (g_strcmp0 (type_string, "node") == 0) + type = MEMBER_TYPE_NODE; + else if (g_strcmp0 (type_string, "way") == 0) + type = MEMBER_TYPE_WAY; + else if (g_strcmp0 (type_string, "relation") == 0) + type = MEMBER_TYPE_RELATION; + else + { + g_warning ("Unknown relation type: %s\n", type_string); + continue; + } + + maps_osm_relation_add_member (relation, role, type, ref); + } +} + +static MapsOSMRelation * +parse_relation (const xmlNodePtr relation, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GList *member_list; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + MapsOSMRelation *result; + + attributes = parse_attributes (relation); + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_relation_new (id, version, changeset); + + tags = parse_tags (relation->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + member_list = parse_members (relation->children); + fill_members (result, member_list); + g_list_free_full (member_list, (GDestroyNotify) g_hash_table_destroy); + + return result; +} + +/** + * maps_osm_parse: + * @content: XML data + * @length: Length of data + * @error: Error handle + * Returns: (transfer full): A MapsOSMObject + */ +MapsOSMObject * +maps_osm_parse (const char *content, guint length, GError **error) +{ + xmlDocPtr doc; + xmlNodePtr sub_node; + MapsOSMObject *object; + + doc = read_xml_doc (content, length, error); + + if (!doc) + return NULL; + + sub_node = get_sub_node (doc); + + if (!sub_node) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Could not find OSM element")); + return NULL; + } + + if (g_str_equal (sub_node->name, "node")) + { + object = MAPS_OSMOBJECT (parse_node (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "way")) + { + object = MAPS_OSMOBJECT (parse_way (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "relation")) + { + object = MAPS_OSMOBJECT (parse_relation (sub_node, error)); + } + + xmlFreeNode (sub_node); + xmlFreeDoc (doc); + + return object; +} diff --git a/lib/maps-osm.h b/lib/maps-osm.h new file mode 100644 index 00000000..faca7404 --- /dev/null +++ b/lib/maps-osm.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_H__ +#define __MAPS_OSM_H__ + +#include + +#include "maps-osm-node.h" +#include "maps-osm-way.h" +#include "maps-osm-relation.h" + +void maps_osm_init (void); +void maps_osm_finalize (void); + +MapsOSMObject *maps_osm_parse (const char *content, guint length, + GError **error); + +#endif diff --git a/lib/maps.h b/lib/maps.h new file mode 100644 index 00000000..a6916d2b --- /dev/null +++ b/lib/maps.h @@ -0,0 +1,25 @@ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_H__ +#define __MAPS_H__ + +#include +#include "maps-contact-store.h" +#include "maps-contact.h" + +#endif diff --git a/lib/mapsintl.h b/lib/mapsintl.h new file mode 100644 index 00000000..56f31c3f --- /dev/null +++ b/lib/mapsintl.h @@ -0,0 +1,11 @@ +#ifndef _MAPS_INTL_H_ +#define _MAPS_INTL_H_ + +#ifdef ENABLE_NLS +#include +#define _(String) g_dgettext(GETTEXT_PACKAGE "-properties",String) +#else +#define _(String) (String) +#endif + +#endif diff --git a/lib/meson.build b/lib/meson.build new file mode 100644 index 00000000..60543648 --- /dev/null +++ b/lib/meson.build @@ -0,0 +1,75 @@ +maps_h = 'maps.h' + +headers_private = files( + 'maps-contact.h', + 'maps-contact-store.h', + 'maps-file-tile-source.h', + 'maps-osm.h', + 'maps-osm-changeset.h', + 'maps-osm-node.h', + 'maps-osm-object.h', + 'maps-osm-way.h', + 'maps-osm-relation.h', + 'maps-osm-oauth-proxy-call.h' +) + +sources = files( + 'maps-contact.c', + 'maps-contact-store.c', + 'maps-file-tile-source.c', + 'maps-osm.c', + 'maps-osm-changeset.c', + 'maps-osm-node.c', + 'maps-osm-object.c', + 'maps-osm-way.c', + 'maps-osm-relation.c', + 'maps-osm-oauth-proxy-call.c' +) + +enum_types = 'maps-enum-types' + +maps_enums = gnome.mkenums( + enum_types, + sources: headers_private, + c_template: enum_types + '.c.template', + h_template: enum_types + '.h.template', + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower() +) + +cflags = [ + '-DG_DISABLE_DEPRECATED', + '-DPREFIX="@0@"'.format(prefix), + '-DLIBDIR="@0@"'.format(libdir) +] + +libmaps = shared_library( + maps_libname, + version: '0.0.0', + sources: sources + maps_enums, + include_directories: top_inc, + dependencies: libmaps_deps, + c_args: cflags, + install: true, + install_dir: pkglibdir +) + +gnome.generate_gir( + libmaps, + sources: sources + [maps_enums, headers_private], + nsversion: maps_gir_version, + namespace: maps_gir_name, + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower(), + includes: [ + 'GLib-2.0', + 'GObject-2.0', + 'GeocodeGlib-1.0', + 'Champlain-0.12', + 'Rest-0.7' + ], + install: true, + install_dir_gir: join_paths(pkgdatadir, 'gir-' + maps_gir_version), + install_dir_typelib: join_paths(pkglibdir, 'girepository-' + maps_gir_version) +) + diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..22aed8fb --- /dev/null +++ b/meson.build @@ -0,0 +1,62 @@ +project('gnome-maps', 'c', + version: '40.4', + license: 'GPL2+' +) + +app_id = 'org.gnome.Maps' +gnome = import('gnome') +i18n = import('i18n') + +prefix = get_option('prefix') +name = meson.project_name() +version = meson.project_version() + +bindir = join_paths(prefix, get_option('bindir')) +libdir = join_paths(prefix, get_option('libdir')) +datadir = join_paths(prefix, get_option('datadir')) +pkgdatadir = join_paths(datadir, name) +pkglibdir = join_paths(libdir, name) + +maps_ns = 'Maps' +maps_libname = 'gnome-maps' +maps_gir_name = 'GnomeMaps' +maps_gir_version = '1.0' + +desktop_file_validate = find_program('desktop-file-validate', required: false) +appstream_util = find_program('appstream-util', required: false) + +glib = dependency('glib-2.0', version: '>= 2.66.0') +gio = dependency('gio-2.0', version: '>= 2.44.0') +gjs = dependency('gjs-1.0', version: '>= 1.66.0') +girepository = dependency('gobject-introspection-1.0', version: '>= 0.10.1') +gtk3 = dependency('gtk+-3.0', version: '>= 3.22.0') +geoclue2 = dependency('geoclue-2.0', version: '>= 0.12.99') +handy = dependency('libhandy-1', version: '>= 0.84.0') + +libmaps_deps = [ + dependency('gee-0.8', version: '>= 0.16.0'), + dependency('folks', version: '>= 0.10.0'), + dependency('geocode-glib-1.0', version: '>= 3.15.2'), + dependency('champlain-0.12', version: '>= 0.12.14'), + dependency('libxml-2.0'), + dependency('rest-0.7', version: '>= 0.7.90') +] + +msgfmt = find_program('msgfmt') +po_dir = join_paths(meson.source_root(), 'po') + +top_inc = include_directories('.') + +cc = meson.get_compiler('c') + +subdir('po') +subdir('src') +subdir('lib') +subdir('data') +subdir('tests') + +meson.add_install_script( + 'meson_post_install.py', + datadir, + bindir +) diff --git a/meson_post_install.py b/meson_post_install.py new file mode 100644 index 00000000..bb6b67c9 --- /dev/null +++ b/meson_post_install.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import glob +import os +import re +import subprocess +import sys + +datadir = sys.argv[1] + +destdir = os.environ.get('DESTDIR', '') +bindir = os.path.normpath(destdir + os.sep + sys.argv[2]) + +# FIXME: meson will not track the creation of these files +# https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 +if not os.path.exists(bindir): + os.makedirs(bindir) + +src = os.path.join(datadir, 'gnome-maps', 'org.gnome.Maps') +dest = os.path.join(bindir, 'gnome-maps') +subprocess.call(['ln', '-s', '-f', src, dest]) + +if not os.environ.get('DESTDIR'): + icondir = os.path.join(datadir, 'icons', 'hicolor') + + print('Update icon cache...') + subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir]) + + schemadir = os.path.join(datadir, 'glib-2.0', 'schemas') + print('Compiling gsettings schemas...') + subprocess.call(['glib-compile-schemas', schemadir]) + + # FIXME + ''' + search_pattern = '/*.desktop' + + desktopdir = os.path.join(datadir, 'applications') + print('Validate desktop files...') + [subprocess.call(['desktop-file-validate', file]) + for file in glob.glob(desktopdir + search_pattern, recursive=False)] + ''' + diff --git a/org.gnome.Maps.json b/org.gnome.Maps.json new file mode 100644 index 00000000..32efa596 --- /dev/null +++ b/org.gnome.Maps.json @@ -0,0 +1,211 @@ +{ + "app-id" : "org.gnome.Maps", + "runtime" : "org.gnome.Platform", + "runtime-version" : "master", + "sdk" : "org.gnome.Sdk", + "command" : "gnome-maps", + "tags" : [ + "devel" + ], + "desktop-file-name-prefix" : "(Development) ", + "finish-args" : [ + "--share=ipc", + "--socket=x11", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--share=network", + "--talk-name=org.gnome.OnlineAccounts", + "--talk-name=org.gnome.evolution.dataserver.AddressBook10", + "--talk-name=org.gnome.evolution.dataserver.Calendar7", + "--talk-name=org.gnome.evolution.dataserver.Sources5", + "--talk-name=org.gnome.evolution.dataserver.Subprocess.Backend.*", + "--system-talk-name=org.freedesktop.GeoClue2", + "--filesystem=xdg-run/dconf", + "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", + "--env=DCONF_USER_CONFIG_DIR=.config/dconf" + ], + "build-options" : { + "cflags" : "-O2 -g", + "cxxflags" : "-O2 -g", + "env" : { + "V" : "1" + } + }, + "cleanup" : [ + "/include", + "/lib/pkgconfig", + "/share/pkgconfig", + "/share/aclocal", + "/man", + "/share/man", + "/share/gtk-doc", + "/share/vala", + "*.la", + "*.a" + ], + "modules" : [ + { + "name": "libical", + "cleanup": [ + "/lib/cmake" + ], + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DCMAKE_INSTALL_LIBDIR=lib", + "-DBUILD_SHARED_LIBS:BOOL=ON", + "-DICAL_GLIB=true", + "-DGOBJECT_INTROSPECTION=true", + "-DICAL_GLIB_VAPI=true", + "-DICAL_BUILD_DOCS=false" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/libical/libical/releases/download/v3.0.8/libical-3.0.8.tar.gz", + "sha256": "09fecacaf75ba5a242159e3a9758a5446b5ce4d0ab684f98a7040864e1d1286f" + } + ] + }, + { + "name" : "gnome-online-accounts", + "config-opts" : [ + "--disable-Werror", + "--disable-telepathy", + "--disable-documentation", + "--disable-backend" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-online-accounts.git" + } + ] + }, + { + "name" : "geocode-glib", + "buildsystem" : "meson", + "builddir" : true, + "config-opts" : [ + "--libdir=/app/lib", + "-Denable-gtk-doc=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/geocode-glib.git" + } + ] + }, + { + "name" : "libgweather", + "buildsystem" : "meson", + "config-opts" : [ + "--libdir=/app/lib" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgweather.git" + } + ] + }, + { + "name": "intltool", + "cleanup": [ "*" ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz", + "sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd" + } + ] + }, + { + "name" : "evolution-data-server", + "cleanup" : [ + "/lib/cmake", + "/lib/evolution-data-server/*-backends", + "/libexec", + "/share/dbus-1/services" + ], + "config-opts" : [ + "-DENABLE_GTK=OFF", + "-DENABLE_GOOGLE_AUTH=OFF", + "-DENABLE_UOA=OFF", + "-DENABLE_GOOGLE=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DWITH_OPENLDAP=OFF", + "-DWITH_LIBDB=OFF", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_INSTALLED_TESTS=OFF", + "-DENABLE_GTK_DOC=OFF", + "-DENABLE_EXAMPLES=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_CANBERRA=OFF" + ], + "buildsystem" : "cmake-ninja", + "sources" : [ + { + "type" : "git", + "url": "https://gitlab.gnome.org/GNOME/evolution-data-server.git" + } + ] + }, + { + "name" : "folks", + "buildsystem": "meson", + "cleanup" : [ + "/bin" + ], + "config-opts" : [ + "-Dtelepathy_backend=false", + "-Dofono_backend=false", + "-Dbluez_backend=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/folks.git" + } + ] + }, + { + "name" : "libchamplain", + "buildsystem": "meson", + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libchamplain.git" + } + ] + }, + { + "name" : "libgfbgraph", + "cleanup" : [ + "/doc/libgfbgraph" + ], + "sources" : [ + { + "type" : "archive", + "url" : "https://download.gnome.org/sources/gfbgraph/0.2/gfbgraph-0.2.4.tar.xz", + "sha256" : "6065391f35e7335588cc6b0cc4c1abbce7341488573a654551264cb9793b9379" + } + ] + }, + { + "name" : "gnome-maps", + "buildsystem" : "meson", + "builddir" : true, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-maps.git" + } + ] + } + ] +} diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 00000000..7f374e34 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,64 @@ +af +an +ar +as +bg +bs +ca +ca@valencia +cs +da +de +el +en_GB +eo +es +et +eu +fa +fi +fr +fur +ga +gd +gl +he +hi +hr +hu +id +is +it +ja +kk +kn +ko +lt +lv +mjw +ml +ms +nb +ne +nl +oc +pa +pl +pt +pt_BR +ru +ro +sk +sl +sr +sr@latin +sv +ta +te +tg +tr +uk +vi +zh_CN +zh_HK +zh_TW diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..dd6119c4 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,64 @@ +# List of source files containing translatable strings. +# Please keep this file sorted alphabetically. +data/org.gnome.Maps.appdata.xml.in +data/org.gnome.Maps.desktop.in +data/org.gnome.Maps.gschema.xml +data/ui/check-in-dialog.ui +data/ui/context-menu.ui +data/ui/export-view-dialog.ui +data/ui/headerbar-left.ui +data/ui/headerbar-right.ui +data/ui/help-overlay.ui +data/ui/layers-popover.ui +data/ui/location-service-dialog.ui +data/ui/main-window.ui +data/ui/osm-account-dialog.ui +data/ui/osm-edit-address.ui +data/ui/osm-edit-dialog.ui +data/ui/place-popover.ui +data/ui/route-entry.ui +data/ui/send-to-dialog.ui +data/ui/shape-layer-file-chooser.ui +data/ui/shape-layer-row.ui +data/ui/sidebar.ui +data/ui/social-place-more-results-row.ui +data/ui/transit-leg-row.ui +data/ui/transit-options-panel.ui +data/ui/place-bar.ui +data/ui/place-buttons.ui +data/ui/place-view.ui +data/ui/zoom-in-dialog.ui +lib/maps-file-tile-source.c +lib/maps-osm.c +src/application.js +src/checkInDialog.js +src/checkIn.js +src/contextMenu.js +src/exportViewDialog.js +src/geoclue.js +src/geoJSONSource.js +src/graphHopper.js +src/layersPopover.js +src/mainWindow.js +src/mapView.js +src/osmConnection.js +src/osmEditDialog.js +src/photonParser.js +src/placeEntry.js +src/placeView.js +src/place.js +src/printLayout.js +src/printOperation.js +src/routeEntry.js +src/sendToDialog.js +src/shapeLayer.js +src/sidebar.js +src/transit.js +src/transitLegRow.js +src/transitMoreRow.js +src/transitOptionsPanel.js +src/transitPlan.js +src/translations.js +src/utils.js +src/transitplugins/goMetro.js +src/transitplugins/openTripPlanner.js diff --git a/po/POTFILES.skip b/po/POTFILES.skip new file mode 100644 index 00000000..4427cad6 --- /dev/null +++ b/po/POTFILES.skip @@ -0,0 +1,2 @@ +data/gnome-maps.appdata.xml +data/org.gnome.Maps.desktop diff --git a/po/af.po b/po/af.po new file mode 100644 index 00000000..fee368e4 --- /dev/null +++ b/po/af.po @@ -0,0 +1,182 @@ +# Afrikaans translation for gnome-maps. +# This file is distributed under the same license as the gnome-maps package. +# Copyright (C) +# Dawid Loubser , 2013. +# F Wolff , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-09 20:30+0000\n" +"PO-Revision-Date: 2013-10-13 23:29+0200\n" +"Last-Translator: F Wolff \n" +"Language-Team: translate-discuss-af@lists.sourceforge.net\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Padkaart gee vinnige toegang tot padkaarte van regoor die wêreld. Dit laat " +"mens toe om vinnig 'n gewenste plek te vind deur te soek vir 'n stad of 'n " +"straat, of om 'n ontmoetingspunt op te spoor." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +#, fuzzy +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • Soek vir 'n land, streek, stad of straat.
  • Soek vir spesifieke " +"tipe liggings, soos “Restaurante in Melville, Johannesburg” of “Hotelle in " +"Mosselbaai”
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Padkaart gebruik die gesamentlike OpenStreetMap-databasis, geskep deur " +"honderde duisende mense regoor die wêreld." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "Padkaart" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "'n Eenvoudige padkaart-toepassing" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;Padkaart;Kaart;Ligging;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Venstergrootte" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Venstergrootte (wydte en hoogte)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Vensterposisie" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Vensterposisie (X en Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Venster-maksimeringstoestand" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Toestand van die venster in terme van maksimering" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "Laas bekende ligging en akkuraatheid" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Laas bekende ligging (breedte- en lengtegraad in grade) en akkuraatheid (in " +"meter)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "Beskrywing van laas bekende ligging" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "Beskrywing van laas bekende ligging van gebruiker." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "Maksimum aantal soekresultate" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum aantal soekresultate van geokoderingsoektog." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "Gebruiker het laas bekende ligging gestel" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "Of die gebruiker self die laas bekende ligging gestel het." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "Aangaande" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "Sluit af" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Wat is hier?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "Ek is hier!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "Dawid Loubser" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "'n Padkaart-toepassing vir GNOME" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "Straat" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "Satelliet" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "Presies" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Ligging-akkuraatheid: %s" diff --git a/po/an.po b/po/an.po new file mode 100644 index 00000000..34fdb264 --- /dev/null +++ b/po/an.po @@ -0,0 +1,685 @@ +# Aragonese translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jorge Pérez Pérez , 2014 +# Daniel Martinez , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-05-03 19:08+0000\n" +"PO-Revision-Date: 2015-05-03 22:30+0200\n" +"Last-Translator: Daniel \n" +"Language-Team: Aragonés \n" +"Language: an\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.5.1.1\n" +"X-POOTLE-MTIME: 1430688604.000000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas te ofreix un acceso rapido a mapas de tot o mundo. Te permite trobar " +"puestos rapidament mirando por ciudat u por carrera, u mirar un puesto ta " +"trobar-te con un amigo." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Os mapas fan servir a base de datos colaborativa OpenStreetMap, feita por " +"cients de mils de personas de tot o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tamién puede buscar por tipos d'ubicacions especificos como “Tabiernas amán " +"d'o Paseyo d'a Independencia, Zaragoza”u “Hotels amán d'a Plaza d'o Torico, " +"Teruel”." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:366 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicación simpla de mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Grandaria d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Grandaria d'a finestra (amplaria y altura )" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Posición d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window position (X and Y)." +msgstr "Posición d'a finestra (X y Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Finestra maximizada" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window maximization state" +msgstr "Estau de maximización d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "Numero maximo de resultaus de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Numero maximo de resultaus de búsca ta buscas por cheocodigo." + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "Numero de puestos recients que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "Numero de puestos visitaus recientment que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Facebook usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Foursquare usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Arredol de" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Salir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilidat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar en Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar en Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Rechistrar" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Totz" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amigos d'amigos" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Solament amigos" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Solament yo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Público" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidores" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privau" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Qué bi ha aquí?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar os servicios d'ubicación ta trobar a suya posición" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Configuración d'a ubicación" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Trigar o tipo de mapa" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Commutar o planificador de rotas" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Commutar favoritos" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Mapas ye desconnectau" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Mapas ameneste una connexión a Internet activa ta funcionar correctament, " +"pero no s'ha trobau garra." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Comprebe a configuración d'a suya connexión y d'o suyo proxy." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Adhibir a la rota nueva" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Ubrir con unatra aplicación" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Rechistrar-se aquí" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Prete Intro ta buscar" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Ubrir ubicación" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Ubrir" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Rota buscada por GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Amostrar más resultaus" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:207 +msgid "Current location" +msgstr "Ubicación actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "No se puede trobar \"%s\" en o ret social" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede trobar un puesto adequau ta rechistrar-se en ista ubicación" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credencials han caducau. Ubra as Cuentas en linia ta encetar sesión y " +"activar ista cuenta." + +#: ../src/checkIn.js:153 ../src/checkInDialog.js:289 +msgid "An error has occurred" +msgstr "Ha ocurriu una error" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Cargando" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Seleccionar un puesto" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Facebook. Trigue " +"un d'a lista." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Foursquare. " +"Trigue un d'a lista." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Rechistrar-se en %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensache opcional ta rechistrar-se en %s." + +#: ../src/mainWindow.js:314 +msgid "Failed to connect to location service" +msgstr "Falló en connectar a o servicio d'ubicación" + +#: ../src/mainWindow.js:319 +msgid "Position not found" +msgstr "Posición no trobada" + +#: ../src/mainWindow.js:364 +msgid "translator-credits" +msgstr "" +"Jorge Pérez Pérez , 2014\n" +"Daniel Martínez Cucalón " + +#: ../src/mainWindow.js:367 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas ta GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:120 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:127 +msgid "limited" +msgstr "limitau" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:133 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:140 +msgid "designated" +msgstr "designau" + +#: ../src/routeService.js:69 +msgid "No route found." +msgstr "No s'ha trobau a rota." + +#: ../src/routeService.js:76 +msgid "Route request failed." +msgstr "Falló en solicitar a rota." + +#: ../src/routeService.js:147 +msgid "Start!" +msgstr "Empecipiar" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Codigo postal: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Codigo d'o país: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Población: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Horario d'obridura: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Acceso ta siellas de ruedas: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:197 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimau: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "tot o día" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "dende l'amaneixer dica a mesa d'o sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "festivos" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "vacancias escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "zarrau" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Desconoixiu" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:259 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f pietz" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zaguera ubicación conoixida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zaguera ubicación conoixida (latitut y longaria en graus) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location" +#~ msgstr "Descripción d'a zaguera ubicación conoixida" + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción d'a zaguera ubicación conoixida de l'usuario." + +#~ msgid "User set last known location" +#~ msgstr "Zaguera ubicación conoixida establida por l'usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si a zaguera ubicación conoixida la establió l'usuario manualment." + +#~ msgid "I’m here!" +#~ msgstr "Soi aquí!" + +#~ msgid "Street" +#~ msgstr "Carrera" + +#~ msgid "Satellite" +#~ msgstr "Satelite" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 00000000..900fcd71 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,1620 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Khaled Hosny , 2013, 2014, 2017. +# Safa Alfulaij , 2016, ٢٠١٦. +# Ibrahim Saed , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-29 17:50+0200\n" +"PO-Revision-Date: 2017-09-29 16:01+0200\n" +"Last-Translator: Khaled Hosny \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Virtaal 1.0.0-beta1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "خرائط جنوم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "جِد الأماكن حول العالم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"يمكّنك تطبيق الخرائط من مطالعة خرائط العالم أجمع، فهو يمكّنك من العثور على ما " +"تريد بالبحث عن مدينة أو اسم شارع أو مكان ستجمتع فيه مع صديقك." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"يستخدم تطبيق الخراط قاعدة بيانات «خريطة الشارع المفتوحة» التعاونية، والتي " +"شارك فيها آلاف الأشخاص حول العالم." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"يمكن أيضا البحث عن أماكن محدّدة النوع، مثل ”Pubs near Main Street, Boston\" " +"أو \"Hotels near Alexanderplatz, Berlin“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "الخرائط" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "تطبيق خرائط بسيط" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "خرائط;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "يسمح بإظهار مكانك على الخريطة." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "آخر مكان معروض" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "إحداثيات آخر مكان عُرض." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "حجم النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "حجم النافذة (العرض والارتفاع)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "موضع النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "موضع النافذة (س و ص)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "النافذة مُكبّرة" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "حالة تكبير النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "أقصى عدد لنتائج البحث" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "أقصى عدد لنتائج البحث من بحث الرمز الجغرافي." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "عدد أحدث الأماكن لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "عدد الأماكن التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "عدد أحدث المسارات لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "عدد المسارات التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "إعداد خصوصية الدخول إلى «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فيسبوك» قد استُخدم. القيم الممكنة هي: EVERYONE أو " +"FRIENDS_OF_FRIENDS أو ALL_FRIENDS أو SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "إعداد «فورسكوير» لخصوصية الدخول" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فورسكوير» قد استُخدم. القيم الممكنة هي: public أو " +"followers أو private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كمنشور في حساب فيسبوك المرتبط مع حساب " +"«فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كتغريدة في حساب «فيسبوك» المرتبط مع " +"حساب «فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "اسم مستخدم أو عنوان البريد الإلكترونيّ في «خريطة الشارع المفتوحة»" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "يشير في حال كان المستخدم قد ولج لتحرير بيانات «خريطة الشارع المفتوحة»." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "أعدّ حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "اختصارات لو_حة المفاتيح" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "عنْ" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "الظهور" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "أل_غِ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "اد_خل" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "للجميع" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "لأصدقاء أصدقائي" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "لأصدقائي فقط" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "لي فقط" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "للعامة" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "للمتابعين" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "خاص" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ماذا يوجد هنا؟" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "انسخ المكان" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "صدّر كصورة" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "صدّر العرض" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_صدّر" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ضمّن المسارات والعلامات" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "عام" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "اعرض الاختصارات" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "ابحث" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "اطبع المسار" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "منظور الخريطة" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "قرّب" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بعّد" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "اعرض/أخفِ المقياس" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "انتقل إلى منظور الشارع" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "انتقل إلى منظور جوي" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "افتح طبقة الشكل" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "حمّل طبقة خريطة" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "فعّل خدمات التموضع لتجد مكانك" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "إعدادات التموضع" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "اختر نوع الخريطة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "اعرض/أخفِ المفضّلة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "اطبع المسار" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "تطبيق الخرائط يعمل بلا اتصال!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"يحتاج تطبيق الخرائط إلى اتصال إنترنت نشط ليعمل كما ينبغي، لكنه لم يعثر على " +"واحد." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "افحص إعدادات اتصالك ووكيلك." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "أضفه إلى مسار جديد" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "افتح بتطبيق آخر" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "علّمه كمفضّل" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "ادخل هنا" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "سجّل لتحرير الخرائط" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"ساهم في تحسين الخريطة باستخدام\n" +"حساب «خريطة الشارع المفتوحة»." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "كلمة السر" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "لِج" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "أليس لديك حساب؟" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"آسفون، لم يعمل هذا. من فضلك جرّب مجددا، أو زُر\n" +"«خريطة الشارع " +"المفتوحة» لتصفير كلمة السر." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "رمز التأكيد لا يتطابق، من فضلك جرّب مجددا." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "أدخل رمز التأكيد الظاهر أعلاه" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "أكّد" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "أنت والج" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "حسابك في «خريطة الشارع المفتوحة» نشط." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "اخرج" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "الشوارع" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "رقم المنزل" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "الرقم البريدي" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "المدينة" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "النوع" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "بلا" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "أضف حقلا" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "تعليق" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ستظهر التعديلات على الخريطة في كل الخرائط التي تستخدم بيانات «خريطة الشارع " +"المفتوحة»." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "المستخدمة حديثًا" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ألغِ" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "التالي" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "اعرض معلومات أكثر" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "اضغط Enter للبحث" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "لا نتائج" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "اسحب لتغيير المسار" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "افتح المكان" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "ا_فتح" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "افتح طبقة" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "اعرض/أخفِ" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "البحث عن المسار يدعمه GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "البحث عن المسار يدعمه OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسارات وسائل النقل العامة توفرها جنوم بناء على\n" +"بيانات المواعيد من شركات و هيئات النقل.\n" +"ليست الشركات و الهيئات مسئولة عن النتائج المعروضة.\n" +"لا تضمن جنوم صحة المسارات و لا المواعيد المعروضة.\n" +"الأسماء تعتبر علامات تجارية مسجلة حسب القواعد." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "اعرض نتائج أكثر" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "أخف الخطوات البينية و المعلومات" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "اعرض الخطوات البينية و المعلومات" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "غادر الآن" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "غادر في" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "تصل في" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "اعرض" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "حافلات" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ترام" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "قطارات" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "قطارات الأنفاق" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "عبّارات" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "المكان الحالي" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "الدقة: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "قرّب لتضيف مكانا!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "حسنًا" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "فشل إيجاد بنية قطع خرائط في الدليل" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "فشل تحليل ملف XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "الصفات المطلوبة ناقصة" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "تعذر إيجاد عنصر OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "مسار يشير إلى دليل محليّ لبنية قطع خرائط" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "اختر حسابا" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "يحمّل" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "اختر مكانا" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فيسبوك». من فضلك اختر واحدا " +"من القائمة." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فورسكوير». من فضلك اختر " +"واحدا من القائمة." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "ادخل إلى %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "اكتب رسالة اختيارية للدخول إلى %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "حدث خطأ ما" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "تعذّر إيجاد ”%s“ في الخدمة الاجتماعية" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "تعذّر إيجاد مكان مناسب للدخول إلى هذا المكان" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"انتهت صلاحية معلومات الولوج، من فضلك افتح الحساب الشبكية لتلج وتفعّل هذا " +"الحساب" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "المسار من هنا" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "أضف مقصدا" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "المسار إلى هنا" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "لم أجد شيئا هنا!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"أُضيف المكان إلى الخريطة، لكن لاحظ أنه قد يأخذ وقتا ليظهر عليها وفي نتائج " +"البحث." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "نظام الملفات للقراءة فقط" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "لا صلاحيات لك للحفظ هناك" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "الدليل غير موجود" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "لم يُحدّد اسم ملف" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "تعذّر تصدير العرض" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "إحداثية غير صالحة" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "خطأ في التحليل" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "الهندسة مجهولة" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "فشل طلب المسار." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "لا مسار." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "ابدأ!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "كل ملفات الطبقات" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "فشل الاتصال بخدمة التموضع" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"فريق عربآيز للترجمة http://www.arabeyes.org:\n" +"خالد حسني\t\n" +"صفا الفليج\t" + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "تطبيق خرائط لجنوم" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "نوع الملفات غير مدعوم" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "فشل فتح الطبقة" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "فشل فتح العنوان الجغرافي" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "لم يُعثر على بدائل سابقة." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "لم يُعثر على بدائل لاحقة." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "لم يُعثر على بيانات المواعيد لهذا المسار." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "اسم المستخدم أو كلمة السر خاطئة" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "نجح" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "طلب سيّئ" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "الكائن غير موجود" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "ثمة تضارب، هناك من عدّل الكائن لتوّه" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "حُذف الكائن" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "يشير الطريق أو العلاقة إلى ابن غير موجود" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "الاسم" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "الاسم الرسمي. غالبا ما يكون على العلامات." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "العنوان" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "موقع الوِب" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"موقع الوِب الرسمي. حاول استخدام أبسط صيغة للعنوان مثل http://example.com بدل " +"http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "الهاتف" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"رقم الهاتف. استخدم الصيغة العالمية، مبتدءًا الرقم بعلامة +. انتبه لحقوق " +"الخصوصية في الدول، خصوصا تلك الخاصة بأرقام الهواتف الخاصة." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "ويكيبيديا" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"الصيغة المُستخدمة هنا تتضمن رمز اللغة وعنوان المقال مثل ”ar:عنوان المقالة“." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "ساعات العمل" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "طالع الوصلة في اللصيقة لتجد مساعدة حول الصيغة." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "عدد السكان" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "الارتفاع الرأسي" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ارتفاع نقطة (عن مستوى سطح البحر) بالأمتار." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "دخول الكراسي ذات العجلات" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "مسموح" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "ممنوع" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "محدود" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "محدّد" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "الوصول إلى الإنترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "واي-فاي" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "سلكي" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "طرفيّة" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "خدمة" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "الدين" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "إحيائية" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "بهائية" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "بوذية" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "كاو دائية" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "مسيحية" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "كونفشيوسية" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "هندوسية" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "جاينية" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "يهودية" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "إسلام" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "ديانات متعددة" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "وثنية" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "باستافارية" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "سينتولوجيا" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "شنتو" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "سيخية" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "روحانية" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "طاوية" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "توحيدية كونية" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "فودو" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "يزدية" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرادشتية" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "حمامات" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "ملاحظة" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"معلومات تعلم الخرائطيين الآخرين عن معلومات غير بديهية عن عنصر ما، أو غرض " +"المؤلف عند إنشائه، أو ملاحظات تساعد في تحسينه." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "اختر نوعًا" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "تمّ" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "السّكانيّة:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "الارتفاع الرأسي:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "ساعات العمل:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "الوصول إلى الإنترنت:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "الدين:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "حمامات:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "دخول الكراسي ذات العجلات:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "الهاتف:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "فشل تحليل العنوان الجغرافي" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "مسموح" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ممنوع" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "محدّد" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "من %s إلى %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "يحمّل قطع الخرائط للطباعة" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "يمكنك إجهاض الطباعة إن أخذت وقتا طويلا" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "أجهض الطباعة" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "فشل فتح العنوان" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "فشل تحميل الملف" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "الوقت المقدّر: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "تصل إلى %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "تصل" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "ابدأ من %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "ابدأ" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "اعرض تعليمات المشي" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "أخفِ تعليمات المشي" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "امشِ %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "حمّل البدائل السابقة" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "حمّل البدائل اللاحقة" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %B" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d دقيقة" +msgstr[1] "دقيقة" +msgstr[2] "دقيقتين" +msgstr[3] "%d دقائق" +msgstr[4] "%d دقيقة" +msgstr[5] "%d دقيقة" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ساعة" +msgstr[1] "ساعة" +msgstr[2] "ساعتين" +msgstr[3] "%d ساعات" +msgstr[4] "%d ساعة" +msgstr[5] "%d ساعة" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ساعة" +msgstr[1] "%d:%02d ساعة" +msgstr[2] "%d:%02d ساعة" +msgstr[3] "%d:%02d ساعة" +msgstr[4] "%d:%02d ساعة" +msgstr[5] "%d:%02d ساعة" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "على مدار الساعة" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "من شروق الشمس حتى غروبها" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "يوميا" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "العطل العامة" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "العطل المدرسية" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "ليس مفتوحا" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "سلكي" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "طرفيّة" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "خدمة" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "غير معروف" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "بالضبط" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f سا" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f دق" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f ثا" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s كم" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s ميل" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s قدم" + +#~ msgid "%f km" +#~ msgstr "%f كم" + +#~ msgid "%f m" +#~ msgstr "%f م" + +#~ msgid "%f mi" +#~ msgstr "%f ميل" + +#~ msgid "%f ft" +#~ msgstr "%f قدم" + +#~ msgid "Edit Location" +#~ msgstr "حرّر المكان" + +#~ msgid "Position not found" +#~ msgstr "الموضع غير موجود" + +#~ msgid "Country code: %s" +#~ msgstr "رمز البلد: %s" + +#~ msgid "Population: %s" +#~ msgstr "عدد السكان: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "دخول الكراسي ذات العجلات: %s" + +#~ msgid "I’m here!" +#~ msgstr "أنا هنا" + +#~ msgid "Satellite" +#~ msgstr "قمر صناعي" + +#~ msgid " km2" +#~ msgstr " كم٢" + +#~ msgid " km²" +#~ msgstr " كم٢" diff --git a/po/as.po b/po/as.po new file mode 100644 index 00000000..1cf79918 --- /dev/null +++ b/po/as.po @@ -0,0 +1,260 @@ +# Assamese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Nilamdyuti Goswami , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-09-02 15:46+0000\n" +"PO-Revision-Date: 2014-09-02 21:54+0530\n" +"Last-Translator: Nilamdyuti Goswami \n" +"Language-Team: Assamese \n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"মানচিত্ৰই আপোনাক বিশ্বৰ সকলো মানচিত্ৰলৈ এটা দ্ৰুত অভিগম প্ৰদান কৰে। ই আপোনাক " +"এটা " +"নগৰ অথবা বাটৰ বাবে সন্ধান কৰি আপুনি বিচৰা স্থান দ্ৰুতভাৱে সন্ধান কৰাৰ অনুমতি " +"দিয়ে, " +"অথবা এজন বন্ধুক লগ ধৰিবলৈ এটা স্থান অৱস্থিত কৰাৰ সুবিধা দিয়ে।" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"মানচিত্ৰই সংযোগি OpenStreetMap ডাটাবেইচ ব্যৱহাৰ কৰে, যাক বিশ্বৰ বিভিন্ন " +"প্ৰান্তৰ " +"লোকে সৃষ্টি কৰিছে।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"আপুনি বিশেষ ধৰণৰ স্থান, যেনে “Pubs near Main Street, Boston“ অথবা “Hotels " +"near " +"Alexanderplatz, Berlin“ ৰ বাবে সন্ধান কৰিব পাৰিব।" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:304 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "মানচিত্ৰ" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "এটা সাধাৰণ মানচিত্ৰ এপ্লিকেচন" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "মানচিত্ৰ;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "উইন্ডোৰ আকাৰ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "উইন্ডোৰ আকাৰ (প্ৰস্থ আৰু উচ্চতা)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "উইন্ডোৰ অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "উইন্ডোৰ অৱস্থান (X আৰু Y)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "উইন্ডো সৰ্বাধিক আকাৰলৈ বৃদ্ধি কৰা হৈছে" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "উইন্ডোৰ সৰ্বাধিক আকাৰ অৱস্থা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থান আৰু সঠিকতা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান (অক্ষাংশ আৰু দ্ৰাঘিমা ডিগ্ৰিসমূহত) আৰু সঠিকতা (মিটাৰত)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "ব্যৱহাৰকাৰীৰ সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "সন্ধান ফলাফলসমূহৰ সৰ্বাধিক সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "geocode সন্ধানৰ পৰা সন্ধান ফলাফলৰ সৰ্বাধিক সংখ্যা।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "ব্যৱহাৰকাৰী দ্বাৰা সংহতি কৰা সৰ্বশেষ জ্ঞাত অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান ব্যৱহাৰকাৰী দ্বাৰা হস্তচালিতভাৱে সংহতি কৰা হৈছিল নে।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়া স্থানবোৰৰ সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়াভাৱে ভ্ৰমণ কৰা স্থানবোৰৰ সংখ্যা।" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "বিষয়ে" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "প্ৰস্থান কৰক" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ইয়াত কি আছে?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "মই ইয়াত আছো!" + +#: ../src/mainWindow.js:302 +msgid "translator-credits" +msgstr "নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)" + +#: ../src/mainWindow.js:305 +msgid "A map application for GNOME" +msgstr "GNOME ৰ বাবে এটা মানচিত্ৰ এপ্লিকেচন" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "বৰ্তমান অৱস্থানলৈ যাওক" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "মানচিত্ৰৰ ধৰণ বাছক" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "পথ পৰিকল্পক টগল কৰক" + +#: ../src/routeService.js:73 +msgid "No route found." +msgstr "কোনো পথ পোৱা নগল।" + +#: ../src/routeService.js:80 +msgid "Route request failed." +msgstr "পথৰ অনুৰোধ ব্যৰ্থ হল।" + +#: ../src/routeService.js:151 +msgid "Start!" +msgstr "আৰম্ভ কৰক!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "দেশৰ ক'ড: %s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "পস্টেল ক'ড: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:190 +#, javascript-format +msgid "Estimated time: %s" +msgstr "আনুমানিক সময়: %s" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "বৰ্তমান অৱস্থান" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "সঠিকতা: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "অজ্ঞাত" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "অবিকল" + +#: ../src/utils.js:179 +#, javascript-format +msgid "%f km²" +msgstr "%f km²" + +#: ../src/utils.js:276 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:278 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:288 +#, javascript-format +#| msgid "%f km²" +msgid "%f km" +msgstr "%f km" + +#: ../src/utils.js:290 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#~ msgid "To" +#~ msgstr "লৈ" + +#~ msgid "From" +#~ msgstr "পৰা" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Street" +#~ msgstr "বাট" + +#~ msgid "Satellite" +#~ msgstr "চেটেলাইট" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 00000000..a85e0b41 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1096 @@ +# Bulgarian translation for gnome-maps. +# Copyright (C) 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ivailo Panamski , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-14 21:19+0200\n" +"PO-Revision-Date: 2016-02-14 21:19+0200\n" +"Last-Translator: \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Търсене на места по света" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"„Картите“ ви дават бърз достъп до места и карти по целия свят. Те ви " +"позволяват да намерите бързо мястото, което търсите, независимо дали е град, " +"улица или място на уречена срещал." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Картите използват базите от данни на OpenStreetMap. Те са събрани от стотици " +"хиляди хора от целия свят." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Може да търсите и по конкретен вид място, напр. „Кръчми край Мейн Стрийт, " +"Бостън“ или „Хотели близо до Александерплац, Берлин“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:86 ../src/mainWindow.js:400 +msgid "Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Програма за преглед на карти" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "карти;глобус;атлас;maps;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "последно видяно местоположение" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Координати на последно видяно местоположение." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Размери на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Размери (широчина и дължина)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Положение на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Положение на прозореца (X и Y)л" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Максимизиран прозорец" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Дали прозорецът на програмата е максимизиран" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Максимален брой на резултатите от търсене" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Максимален брой на резултати от търсенето по геокод." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Брой на последните места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Брой на последно посетени места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Брой на последни маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Брой на последно посетени маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Настройки за публикуване във Facebook на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последно използвани настройки за публикуване във Facebook на съобщение. " +"Възможните стойности са: „EVERYONE“ (до всички), „FRIENDS_OF_FRIENDS“ (до " +"приятелите и техните приятели), „ALL_FRIENDS“ (до приятелите) или „SELF“ (до " +"себе си)." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Настройки за публикуване във Foursquare на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последно използвани настройки за публикуване във Foursquare на посещение. " +"Възможните стойности са: „public“ (до всички), „followers“ (до " +"последователите) или „private“ (частно)." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Публикуване във Facebook на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да публикува посещението на някое място в регистрацията към " +"Facebook свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Публикуване във Twitter на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да „изчурулика“ посещението на някое място в регистрацията " +"към Twitter свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Потребителско име или е-поща за OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показва дали потребителят е влязъл, за да променя информация в OpenStreetMap." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Създаване на регистрация в OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Относно" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Видимост" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Публикуване във Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Публикуване в Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Отказ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Обявяване на посещение" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Всички" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Приятели и техни приятели" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Само приятели" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "За себе си" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Публично" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Последователи" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Частно" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Какво има тук?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Копиране на местоположението" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Изнасяне като изображение" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Добавяне към OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Изнасяне на изглед" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Изнасяне" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Включване на маршрут и маркери" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Общи" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показване на клавишните комбинации" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Търсене" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Изглед карти" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приближаване" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалечаване" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Превключване на ска̀лата" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Към текущото местоположение." + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Зареждане на слой" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Включване на услугата за намиране на местоположението ви" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Настройки на местоположението" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Текущо местоположение" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Избиране на вид карта" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Включване на любими" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Няма връзка с Интернет!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Картите се нуждаят от връзка с Интернет за да функционират правилно, но " +"такава няма." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Проверка на връзката и сървъра-посредник." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Добавяне към нов маршрут" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Отваряне с друга програма" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Маркиране като любим" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Обявяване на посещение" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Регистрация в OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Впишете се, за да редактирате картите" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогнете да подобрим картите, като\n" +"използвате регистрация в OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Е-поща" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Парола" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Вписване" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "Нямате регистрация?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Това не сработи. Опитайте отново, или посетете\n" +"OpenStreetMap, за да промените паролата си." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "Кодът за потвърждение не съвпада, опитайте отново." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Въведете кода за потвърждение" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Потвърждаване" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Вписани сте" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Регистрацията ви в OpenStreetMap акаунт активна" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Изход" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "None" +msgstr "Няма" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "Recently Used" +msgstr "Скоро ползвани" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Edit on OpenStreetMap" +msgstr "Редактиране в OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Cancel" +msgstr "Отказ" + +#: ../data/ui/osm-edit-dialog.ui.h:5 ../src/osmEditDialog.js:400 +msgid "Next" +msgstr "Следващ" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "Показване на повече информация" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Натиснете „Enter“ за търсене" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Отваряне на местоположение" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Отваряне" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Отваряна на слой" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "Включване на видимост" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Търсене на маршрут с GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намиране на още резултати" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:148 +msgid "Current location" +msgstr "Текущо местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Прецизност: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Приближаване за добавяне на местоположение!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Добре" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Структурата на плочката не може да се открие в папка" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Документът не може да бъде анализиран като XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Липсват задължителни атрибути" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Не може да се открие елемент на OpenStreetMap" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Път към локалната папка със структури" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Избор на регистрация" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Зареждане" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Избор на място" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Facebook. Изберете от списъка" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Foursquare. Изберете от списъка." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Обявяване на посещение на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Добавяне на незадължително съобщение при посещаване на „%s“." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:437 +msgid "An error has occurred" +msgstr "Възникна грешка" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "„%s“ не може да се намери в социалната услуга" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "На това местоположение няма какво да се обяви като посетено" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Идентификацията ви е изтекла, отворете „Регистрации в сайтове“, за да се " +"впишете и използвате тази регистрация" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "Маршрут от тук" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "Добавяне на цел" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "Маршрут до тук" + +#: ../src/contextMenu.js:182 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположението е добавено на картата, може да мин известно време преди да " +"се появи в резултатите от търсене." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Файловата система е само за четене" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Нямате права да записвате тук" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "Папката не съществува" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Не е зададено име на файла" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Изгледът не може да бъде изнесен" + +#: ../src/geoJSONSource.js:99 +msgid "invalid coordinate" +msgstr "грешни координати" + +#: ../src/geoJSONSource.js:143 ../src/geoJSONSource.js:183 +#: ../src/geoJSONSource.js:198 +msgid "parse error" +msgstr "грешка при анализ" + +#: ../src/geoJSONSource.js:177 +msgid "unknown geometry" +msgstr "неизвестна геометрия" + +#: ../src/geoJSONSource.js:211 +msgid "failed to load file" +msgstr "файлът не може да се зареди" + +#: ../src/mainWindow.js:348 +msgid "Failed to connect to location service" +msgstr "Грешка при свързването с услуги за местоположение" + +#: ../src/mainWindow.js:353 +msgid "Position not found" +msgstr "Позицията не е намерена" + +#: ../src/mainWindow.js:398 +msgid "translator-credits" +msgstr "" +"Ивайло Панамски \n" +"Александър Шопов \n" +"\n" +"Проектът за превод на GNOME има нужда от подкрепа.\n" +"Научете повече за нас на http://gnome.cult." +"bg\n" +"Докладвайте за грешки на http://gnome." +"cult.bg/bugs" + +#: ../src/mainWindow.js:401 +msgid "A map application for GNOME" +msgstr "Карти за GNOME" + +#: ../src/mapView.js:233 +msgid "File type is not supported" +msgstr "Този вид файлове не се поддържат" + +#: ../src/mapView.js:240 +msgid "Failed to open layer" +msgstr "Слоят не може да се отвори" + +#: ../src/mapView.js:276 +msgid "Failed to open GeoURI" +msgstr "Геоадресът не може да бъде отворен" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:439 +msgid "Incorrect user name or password" +msgstr "Грешно потребителско име или парола" + +#: ../src/osmConnection.js:441 +msgid "Success" +msgstr "Успех" + +#: ../src/osmConnection.js:443 +msgid "Bad request" +msgstr "Лоша заявка" + +#: ../src/osmConnection.js:445 +msgid "Object not found" +msgstr "Обектът не е намерен" + +#: ../src/osmConnection.js:447 +msgid "Conflict, someone else has just modified the object" +msgstr "Възникна проблем, някой друг тъкмо промени обекта" + +#: ../src/osmConnection.js:449 +msgid "Object has been deleted" +msgstr "Обектът беше изтрит" + +#: ../src/osmConnection.js:451 +msgid "Way or relation refers to non-existing children" +msgstr "Пътят или връзката се отнася към несъществуващ обект" + +#: ../src/osmEditDialog.js:98 +msgid "Name" +msgstr "Име" + +#: ../src/osmEditDialog.js:103 ../src/placeBubble.js:158 +msgid "Website" +msgstr "Сайт" + +#: ../src/osmEditDialog.js:108 +msgid "Phone" +msgstr "Телефон" + +#: ../src/osmEditDialog.js:114 ../src/placeBubble.js:164 +msgid "Wikipedia" +msgstr "Уикипедия" + +#: ../src/osmEditDialog.js:119 +msgid "Opening hours" +msgstr "Работно време" + +#: ../src/osmEditDialog.js:126 +msgid "Population" +msgstr "Население" + +#: ../src/osmEditDialog.js:131 +msgid "Wheelchair access" +msgstr "Инвалидни колички" + +#: ../src/osmEditDialog.js:134 ../src/osmEditDialog.js:143 +msgid "Yes" +msgstr "Да" + +#: ../src/osmEditDialog.js:135 ../src/osmEditDialog.js:144 +msgid "No" +msgstr "Не" + +#: ../src/osmEditDialog.js:136 +msgid "Limited" +msgstr "Непълно" + +#: ../src/osmEditDialog.js:137 +msgid "Designated" +msgstr "Обозначено" + +#: ../src/osmEditDialog.js:140 +msgid "Internet access" +msgstr "Достъп до Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:145 ../src/translations.js:341 +msgid "WLAN" +msgstr "Безжичен" + +#: ../src/osmEditDialog.js:146 +msgid "Wired" +msgstr "Етернет" + +#: ../src/osmEditDialog.js:147 +msgid "Terminal" +msgstr "Техни компютри" + +#: ../src/osmEditDialog.js:148 +msgid "Service" +msgstr "Обслужване" + +#: ../src/osmEditDialog.js:217 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавяне в OpenStreetMap" + +#: ../src/osmEditDialog.js:268 +msgid "Select Type" +msgstr "Избор на вид" + +#: ../src/osmEditDialog.js:386 +msgid "Done" +msgstr "Готово" + +#: ../src/placeBubble.js:127 +msgid "Population:" +msgstr "Население:" + +#: ../src/placeBubble.js:132 +msgid "Opening hours:" +msgstr "Работно време:" + +#: ../src/placeBubble.js:137 +msgid "Internet access:" +msgstr "Достъп до Интернет:" + +#: ../src/placeBubble.js:142 +msgid "Wheelchair access:" +msgstr "Инвалидни колички:" + +#: ../src/placeBubble.js:148 ../src/placeBubble.js:152 +msgid "Phone:" +msgstr "Телефон:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Геоадресът не може да бъде анализиран" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:177 ../src/translations.js:330 +msgid "yes" +msgstr "да" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:184 +msgid "limited" +msgstr "непълно" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:190 ../src/translations.js:336 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:197 +msgid "designated" +msgstr "обозначено" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Не е намерен маршрут." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "Неуспешна заявка за маршрут." + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Старт!" + +#: ../src/sendToDialog.js:173 +msgid "Failed to open URI" +msgstr "Адресът не може да се зареди" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:210 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Очаквано време: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "денонощно" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "от изгрев до залез" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "всеки ден" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "почивни дни" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "ваканции" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "не е отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "етернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "техни компютри" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "обслужване" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:228 +msgid "Unknown" +msgstr "Неизвестно" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Exact" +msgstr "Точно" + +#: ../src/utils.js:334 +#, javascript-format +msgid "%f h" +msgstr "%f ч." + +#: ../src/utils.js:336 +#, javascript-format +msgid "%f min" +msgstr "%f мин." + +#: ../src/utils.js:338 +#, javascript-format +msgid "%f s" +msgstr "%f сек." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:349 +#, javascript-format +msgid "%f km" +msgstr "%f км." + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:352 +#, javascript-format +msgid "%f m" +msgstr "%f м." + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:360 +#, javascript-format +msgid "%f mi" +msgstr "%f мили" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:363 +#, javascript-format +msgid "%f ft" +msgstr "%f фута" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 00000000..394c5f37 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,610 @@ +# Bosnian translation for bosnianuniversetranslation +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the bosnianuniversetranslation package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: bosnianuniversetranslation\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-02-26 20:01+0000\n" +"PO-Revision-Date: 2015-03-03 11:19+0100\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.4\n" +"X-Launchpad-Export-Date: 2015-02-15 06:20+0000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama cijelog svijeta.Omogućava vam da brzo " +"nađete mjesto koje tražite , tražeći grad ili ulicu , ili da pronađe mjesto " +"da sretnete priajtelja." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste kolaboraticnu OpenStreetMap bazu podataka, napravljenu od " +"strane stotinu hiljada ljudi širom svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to seje what words you can usi for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak tražiti određene vrste mjesta , kao što su \"pubovi u blizini " +"Main Street, Boston \" ili \"Hoteli u blizini Alexanderplatz u Berlinu\"." + +#. Translators: This is the program nami. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:362 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program karti" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Karte;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Veličina prozora(širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Pozicija prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Pozicija prozora(X i Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Maksimalno uvećan prozor" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Stanje maksimalno uvećanog prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Maksimalan broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalan broj rezultata pretrage od geocode pretrage." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Broj posljednjih mjesta za pohranu" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za pohranu." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Facebook. " +"Moguće vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Foursquare. " +"Moguće vrijednosti su: javni, sljedbenici ili privatne." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao post na Facebook račun " +"koji je povezan s Foursquare računa." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Twitter" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao tweet na Twitter račun " +"koji je povezan s Foursquare računom--" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Odustani" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Prijava" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svi" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo meni" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je ovdje?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite na lokaciji usluge za pronalaženje lokacija" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Postavke lokacija" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Izaberi tip mape" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Prebaci planer" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Preklopi omiljene" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Karte su offline!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Karte trebaju aktivnu internetsku vezu za ispravno funkcioniranje, ali nije " +"moguće naći ." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Provjerite Vašu konekcijju i proxy postavke." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Otvori sa drugom aplikacijom" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Označi kao omiljeni" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Prijavi se ovdje" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "pritisni Enter za pretragu" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "Ot_vori" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Put nije nađen." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikaži još rezultata" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Trenutna lokacija" + +#. To translators: %s can bje "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#. Translators: %s is the place nami that user wanted to check-in */ +#: ../src/checkIn.js:136 +msgid "Cannot find \"%s\" in the social service" +msgstr "Ne mogu naći \"%s\" u socijalnoj usluzi" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu naći pogodno mjesto za prijavu na ovoj lokaciji" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akreditivi su istekli, molim otvorite mrežne naloge da se prijavite i " +"ukljčite ovaj nalog" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Došlo je do greške:" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Odaberi nalog" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Učitava se" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Izaberi mjesto" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Facebook. Odaberite ga s liste." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Foursquare. Odaberite ga s liste." + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +msgid "Check in to %s" +msgstr "Prijavi na %s" + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +msgid "Write an optional message to check in to %s." +msgstr "Napiši opcionu poruku za prijavu na %s." + +#: ../src/mainWindow.js:310 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje na lokacijsku uslugu" + +#: ../src/mainWindow.js:315 +msgid "Position not found" +msgstr "Pozicija nije nađena" + +#: ../src/mainWindow.js:360 +msgid "translator-credits" +msgstr "" +" Hasanic Nadin https://launchpad.net/~nhasanic1\n" +" Merima Cisija https://launchpad.net/~cisijam" + +#: ../src/mainWindow.js:363 +msgid "A map application for GNOME" +msgstr "Program karta za GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can bje accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradijent). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "dizajnirano" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Put nije nađen." + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Zahtjev za put nije uspio." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/placeBubble.js:102 +msgid "Postal code: %s" +msgstr "Poštanski broj: %s" + +#: ../src/placeBubble.js:104 +msgid "Country code: %s" +msgstr "Kod države: %s" + +#: ../src/placeBubble.js:113 +msgid "Population: %s" +msgstr "Stanovništvo: %s" + +#: ../src/placeBubble.js:116 +msgid "Opening hours: %s" +msgstr "Radno vrijeme: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +msgid "Wheelchair access: %s" +msgstr "Pristup za invalidska kolica: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +msgid "Estimated time: %s" +msgstr "Procijenjeno vrijeme : %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "po satu" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "od izlaska do zalaska Sunca" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could bje substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can bje rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could bje modified by +#. * the translation. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can bje set by the +#. * translation as needed. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:355 +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:357 +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:359 +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +msgid "%f ft" +msgstr "%f ft" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 00000000..1ff00b70 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,1942 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013-2020. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017, 2018. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2020-12-23 09:35+0100\n" +"Last-Translator: Miquel-Àngel Burgos i Fradeja \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street," +" or locate a place to meet a friend." +msgstr "" +"El Mapes us dona un accés ràpid a mapes d'arreu del món. Us permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per a trobar-vos amb una amistat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per" +" centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and +#. click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main" +" Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu cercar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, " +"Berlín»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "El projecte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#. Translators: Search terms to find this application. Do NOT translate or +#. localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicació vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliació" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivell d'ampliació" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipus de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipus de mapa a mostrar (carrer, aeri, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Mida de la finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplada i alçada)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posició de la finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de cerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de cerca en fer-la per geocodi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are +#. constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors" +" possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de" +" Facebook associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per a editar les dades " +"d'OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mode fosc" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Si l'aplicació utilitza el mode fosc." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utilitza caselles aèries híbrides" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Si les caselles aèries haurien d'utilitzar l'estil híbrid (amb etiquetes)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tothom" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Només amics" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Només jo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Públic" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidors" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Comenceu la ruta des d'aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Afegeix una parada intermèdia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Continueu la ruta fins aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Què hi ha aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Afegeix a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exporta vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ves a la ubicació actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Allunya" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Commuta els preferits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Surt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ves a la ubicació actual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obre la capa de forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra les etiquetes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Obre la capa de forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per a trobar-ne la vostra" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel·la" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode fosc" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporta com a imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Quant al Mapes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per a funcionar " +"correctament, però no se n'ha trobat cap." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per a editar " +"mapes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correu electrònic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasenya" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreu-vos" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#. The label should contain the link to the OSM reset password page with a +#. translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per a restablir la contrasenya." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat a sobre" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Surt de la sessió" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrer" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de carrer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address +#. (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciutat" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Afegeix un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Següent" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per a canviar l'ordre de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Obre ubicació" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Envia a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Crea un compte..." + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Obre la capa de forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Obre" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of transportation,\n" +"e.g. a national provider might not include airlines, and a local provider could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels\n" +"seus respectius propietaris, quan es pugui aplicar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sortiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the +#. earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sortiu a" + +#. Indicates searching for itineraries arriving no later than the specified +#. time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busos" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvies" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Transbordadors" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 +#: data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Comparteix la ubicació" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Afegeix a la ruta nova" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Indicacions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marca com a preferit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplia per a afegir ubicació!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Amplia" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Mida de les caselles pel directori de caselles local" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra la versió del programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora la disponibilitat de la xarxa" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FITXER…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "S'està carregant" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one" +" from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per a registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per a inscriure-us a %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No es pot trobar un lloc adequat per a registrar-vos en aquesta ubicació" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per a registrar-vos-" +"hi i habilitar el compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No s'ha trobat res aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows" +" on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la cerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No teniu permís per a anomenar i desar allí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ubicació actual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error d'anàlisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de cercar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Comença" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga \n" +"Miquel-Àngel Burgos i Fradeja " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2021 Red Hat, Inc. i els altres autors del Mapes del " +"GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dades del mapa de %s i col·laboradors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Caselles de mapa proporcionades per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Cerca proveïda per %s utilitzant %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Voleu continuar?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some" +" time to load" +msgstr "" +"Esteu a punt d'obrir fitxers amb una mida total de %s MB. Això pot trigar " +"una estona a carregar-se" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Aquest tipus de fitxer no està suportat" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Èxit" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Lloc web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Aquest URL no és vàlid. Assegureu-vos d'incloure-hi http:// o https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. " +"http://example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telèfon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe" +" +. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Població" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (altura sobre el nivell del mar) d'un punt en metres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designat" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accés a Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Amb fil" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servei" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religió" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budisme" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Cienciologia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Xintoisme" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Lavabos" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about" +" an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per a informar altres creadors de mapes " +"d'informació no òbvia sobre un element, la intenció de l'autor en crear-lo, " +"o pistes per a millorar-lo." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afegeix a l'OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fet" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Ubicació sense nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordenades" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precisió" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Número de telèfon" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accés públic a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Sense accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi públic" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accés cablejat a Internet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Ordinadors disponibles per al seu ús" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistència d'Internet disponible" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Sense lavabos disponibles" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Lavabos disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accessible amb cadira de rodes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accessibilitat amb cadira de rodes limitada" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "No accessible amb cadira de rodes" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Dissenyat per a usuaris en cadira de rodes" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religió:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Lloc no trobat a l'OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Les coordenades a l'URL no són vàlides" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L'URL no és compatible" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per a imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si aquesta tarda massa temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Afegeix a través de la ubicació" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimeix a través de la ubicació" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Afegeix %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Obre amb %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "s'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris proporcionats per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#: src/transit.js:43 +msgid "Start" +msgstr "Comença" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arribeu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per aquesta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No s'ha trobat un proveïdor per a aquesta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Tot el dia" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Des de l'alba fins al capvespre" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Tots els dies" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Dies festius" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Aquest connector no permet cercar per l'última arribada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continueu a %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continueu" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gireu a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Gireu a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gireu lleugerament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Gireu lleugerament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gireu pronunciadament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Gireu pronunciadament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gireu a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Gireu a la dreta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gireu lleugerament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Gireu lleugerament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gireu pronunciadament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Gireu pronunciadament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "A la rotonda, agafeu la sortida %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "A la rotonda, agafeu la sortida a %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Agafeu la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Agafeu l'ascensor i sortiu a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Agafeu l'ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Canvieu de sentit cap a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Canvieu de sentit cap a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Canvieu de sentit cap a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Canvieu de sentit cap a la dreta" + +#~ msgid "Find a Route" +#~ msgstr "Cerca una ruta" + +#~ msgid "Check in here" +#~ msgstr "Registreu-vos aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostra més informació" + +#~ msgid "Population:" +#~ msgstr "Població:" + +#~ msgid "Altitude:" +#~ msgstr "Altitud:" + +#~ msgid "Opening hours:" +#~ msgstr "Hores d'obertura:" + +#~ msgid "Internet access:" +#~ msgstr "Accés a Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Lavabos:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accés amb cadira de rodes:" + +#~ msgid "Phone:" +#~ msgstr "Telèfon:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designat" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "L'URL de l'OpenStreetMap no és vàlid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "amb fil" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servei" + +#~ msgid "Primary menu" +#~ msgstr "Menú primari" diff --git a/po/ca@valencia.po b/po/ca@valencia.po new file mode 100644 index 00000000..3dde2252 --- /dev/null +++ b/po/ca@valencia.po @@ -0,0 +1,1636 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013, 2014. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-10-03 16:33+0000\n" +"PO-Revision-Date: 2017-08-01 19:02+0200\n" +"Last-Translator: Xavi Ivars \n" +"Language-Team: Catalan \n" +"Language: ca-valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes vos dóna un accés ràpid a mapes d'arreu del món. Vos permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu buscar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "mapes;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Mida de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplària i alçària)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posició de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de busca en fer-la per geocodi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Quant a" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tothom" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Només amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Només jo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Públic" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidors" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Què hi ha ací?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exporta com imatge" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Afig a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exporta vista" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exporta" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Busca" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obri la capa de forma" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Carrega la capa mapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Commuta els favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Afig a la ruta nova" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Obri amb una altra aplicació" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marca com a favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Registreu-vos ací" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Correu electrònic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Contrasenya" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "No teniu un compte?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat damunt." + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verifica" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Ix de la sessió" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrer" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Número de carrer" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Ciutat" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipus" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Afig un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Mostra més informació" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Premeu retorn per buscar" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'orde de la ruta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Obri la ubicació" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Obri" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Obri la capa" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Itinerari proporcionat per OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels " +"seus respectius propietaris, quan es puga aplicar." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Eixiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Eixiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Mostra" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Busos" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Metro" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Transbordadors" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "Ubicació actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "D'acord" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "S'està carregant" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-vos a %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en esta ubicació" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Comenceu la ruta des d'ací" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Afegiu una destinació" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Continueu la ruta fins ací" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "No s'ha trobat res ací." + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la busca." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i guardar allí" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "error d'anàlisi" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de buscar la ruta." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Comença" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Este tipus de fitxer no està suportat" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per esta ruta." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Lloc web" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Telèfon" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Població" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (alçària sobre el nivell del mar) d'un punt en metres." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Sí" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "No" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Designat" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Amb fil" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Servei" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Religió" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "Lavabos" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "Nota" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afig a l'OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Fet" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Població:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Altitud:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Religió:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Lavabos:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Telèfon:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "designat" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si esta tarda massa temps" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "S'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "Arribeu" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "Comença" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de l'eixida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Exacte" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milles" + +#~ msgid "%f ft" +#~ msgstr "%f peus" + +#~ msgid "Position not found" +#~ msgstr "No s'ha trobat la posició." + +#~ msgid "Edit Location" +#~ msgstr "Edita ubicació" + +#~ msgid "Country code: %s" +#~ msgstr "Codi de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Població: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Accés amb cadira de rodes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "S'ha produït un error en analitzar el fitxer GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'última ubicació coneguda i la precisió" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'última ubicació coneguda (latitud i longitud en graus) i la precisió " +#~ "(en metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripció de l'última ubicació coneguda de l'usuari." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Si l'última ubicació coneguda l'ha definit manualment l'usuari." + +#~ msgid "I’m here!" +#~ msgstr "Sóc aquí!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..a1ba412d --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1902 @@ +# Czech translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marek Černocký , 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-08 15:22+0100\n" +"Last-Translator: Marek Černocký \n" +"Language-Team: čeština \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhledávejte místa na celém světě" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikace Mapy poskytuje rychlý přístup k mapám celého světa. Díky ní můžete " +"rychle najít místo, které hledáte, ať už podle názvu města nebo ulice, nebo " +"určit místo pro setkání s přáteli." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy využívají databázi OpenStreetMap, která vzniká díky spolupráci stovek " +"tisíců lidí z celého světa." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Můžete také hledat určité typy míst, jako „restaurace poblíž ulice Kobližná, " +"Brno“ nebo „hotely poblíž Alexanderplatz, Berlín“." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá mapová aplikace" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "mapa;mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožňuje vám zobrazit si na mapě své místo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Poslední zobrazené místo" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Souřadnice naposledy zobrazeného místa." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Přiblížení" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň přiblížení" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, který se má zobrazit(běžná, letecká, atd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (šířka a výška)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poloha okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poloha okna (X a Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stav maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximální počet výsledků hledání" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximální počet výsledků hledání z geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávných míst k uchování" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených míst, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávných tras k uchování" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených tras, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Facebook. Možné " +"hodnoty jsou: EVERYONE (všem), FRIENDS_OF_FRIENDS (přátelům přátel), " +"ALL_FRIENDS (všem přátelům) nebo SELF (mě samotnému)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Foursquare. " +"Možné hodnoty jsou: public (veřejné), followers (následovníci) nebo private " +"(soukromé)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Facebooku přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Twitteru přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Uživatelské jméno nebo e-mailová adresa na OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Dává najevo, jestli je uživatel přihlášen k úpravám dat OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Poslední použitý typ dopravy pro hledání trasy" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Noční režim" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Zda je aplikace v nočním režimu" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Používat hybridní dlaždice s leteckými snímky" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Zda dlaždice s leteckými snímky mají používat hybridní styl (s popisky)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditelnost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Zveřejnit na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Zveřejnit na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušit" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Oznámit polo_hu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "všichni" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "přátelé přátel" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "jen přátelé" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "jen já" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "veřejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "příznivci" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "soukromé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtud" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Přidat průběžný cíl" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co je zde?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopírovat místo" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Přidat do OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazení" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovat" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Včetně tras a značek" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Zvolit typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddálit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Přiblížit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Přepnout oblíbené" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Tisk trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Obecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazit klávesové zkratky" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Hledat" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Vytisknout trasu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazení mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Přiblížit" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddálit" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Přepnout měřítko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Přepnout na panoramatický pohled" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Přepnout na letecký pohled" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobrazovat popisky" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otevřít uživatelskou vrstvu…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnout geolokační službu pro vyhledávání vaší polohy" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušit" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavení určování polohy" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noční režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavit účet na OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovat jako obrázek" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikaci Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapy jsou bez připojení!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby Mapy mohly fungovat, potřebují aktivní připojení k Internetu, ale žádné " +"nenalezly." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Zkontrolujte své připojení a nastavení proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet na OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Přihlaste se pro úpravy map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozte vylepšit mapy pomocí\n" +"účtu na OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zaregistrovat se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Přihlásit se" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Bohužel, ale nefunguje to. Zkuste to prosím znovu nebo navštivte\n" +"OpenStreetMap, abyste si znovu nastavili heslo." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Ověřovací kód nesouhlasí, zkuste to prosím znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadejte ověřovací kód zobrazený výše" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ověřit" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jste přihlášen" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet na OpenStreetMap je aktivní." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásit se" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulice" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PSČ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Město" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "žádné" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Přidat pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentář" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Změny mapy boudou viditelné všude, kde se používají\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úpravit v OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Další" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nebyly nalezeny žádné výsledky" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Vyskytla se chyba" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Posloupnost trasy můžete změnit přetažením" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otevřít místo" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopírovat" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Poslat do…" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Oznámit polohu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otevřít" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Přepnout viditelnost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Hledání trasy pomocí GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Jízdní řády pro veřejnou dopravu jsou poskytovány službami třetích stran.\n" +"GNOME nemůže nijak zaručit správnost cestovních rozvrhů a plánů.\n" +"Může se stát, že poskytovatel nenabízí všechny dostupné způsoby dopravy, " +"například národní\n" +"poskytovatel nebude nabízet mezinárodní leteckou dopravu a u místního " +"poskytovatele mohou\n" +"scházet celostátní vlaky apod.\n" +"Zobrazené názvy a značky považujte za registrované ochranné známky, všude " +"tam, kde tomu tak má být." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobrazit více výsledků" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrýt průběžné zastávky a informace" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazit průběžné zastávky a informace" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odjezd teď" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odjezd v" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Příjezd v" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobrazit" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "tramvaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "letadla" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Sdílet místo" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Přidat novou trasu" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Směry" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označit jako oblíbené" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Úpravy v OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Přiblížit pro přidání místa!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Přiblížit" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Selhalo vyhledání struktury ve složce" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Selhalo zpracování dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Schází vyžadované atributy" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nelze najít prvek OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k místní struktuře složek s dlaždicemi" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Velikost dlaždic pro místní složeku s dlaždicemi" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Zobrazit verzi programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorovat dostupnost sítě" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SOUBOR…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výběr účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítá se" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výběr místa" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Facebook. Vyberte " +"prosím nějaké ze seznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Foursquare. Vyberte " +"prosím nějaké ze seznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámení polohy na místě %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napište volitně zprávu k oznámení polohy na místě %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Na sociální službě nelze nalézt „%s“" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Na této poloze se nepodařilo najít žádné vhodné místo pro oznámení polohy" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Přihlášení vypršelo. Otevřete prosím Účty on-line, přihlaste se tam a tím " +"účet zpřístupněte." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Zde nebylo nic nalezeno!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Místo bylo přidáno do mapy, ale vezměte na vědomí, že může chvíli trvat, než " +"se zobrazí na mapě a ve výsledcích hledání." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa na souřadnicích %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Souborový systém je jen ke čtení" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemáte oprávnění ukládat do tohoto umístění" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Složka neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Není zadán název souboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nelze exportovat zobrazení" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Současné místo" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatné souřadnice" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba zpracování" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznámé geometrické údaje" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Požadavek na vyhledání cesty selhal." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenalezena žádná cesta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všechny soubory s vrstvami" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Selhalo připojení ke geolokační službě" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Marek Černocký " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Mapová aplikace pro GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 - 2021 Red Hat, Inc. a autoři Map GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapová data od %s a přispěvatelů" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapové dlaždice poskytuje %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Hledání zprostředkuje %s pomocí %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Selhalo otevření vrstvy" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Chcete pokračovat?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Chystáte se otevřít soubory o celkové velikosti %s MB. To může zabrat nějaký " +"čas." + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Typ souboru není podporován" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Selhalo otevření adresy GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávné uživatelské jméno nebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspěšné" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Chybný požadavek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nebyl nalezen" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Došlo ke střetu, někdo jiný objekt právě upravil" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt byl smazán" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta nebo vztah odkazuje na neexistujícího potomka" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Název" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiální název. Typicky to, co bývá na informačních tabulích." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Stránky WWW" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Nejedná se o platnou adresu URL. Nezapomeňte začít http:// nebo https://" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiální webové stránky. Snažte se použít co nejzákladnější tvar, tj. " +"http://www.priklad.cz namísto http://www.priklad.cz/index.html" + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonní číslo. Používejte mezinárodní formát začínající znakem +. Dbejte " +"místních zákonů na ochranu soukromí, zejména u soukromách telefonních čísel." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by měl obsahovat rovněž kód jazyka a název článku, jako „cs:" +"Název článku“." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Otevírací doba" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Nápověda k formátu viz odkaz v popisku." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populace" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Nadmořská výška" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmořská výška bodu v metrech" + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Bezbariérový přístup" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "ano" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "ne" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "částečně" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "výslovně ano" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Přístup k Internetu" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "drátový" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "terminál" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "služba" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Náboženství" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "animizmus" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "bahaizmus" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "buddhizmus" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "kaodaizmus" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "křesťanství" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "konfuciánství" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "hinduizmus" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "džinizmus" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "judaizmus" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "islám" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "více náboženství" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "pohanství" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "pastafariánství" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "scientologie" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "šintoizmus" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "sikhizmus" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "spiritualizmus" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "taoizmus" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "unitární univerzalizmus" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "vúdú" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "jezídizmus" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "zarathuštrizmus" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informace používané k informování ostatních autorů map o věcech, které " +"nejsou u prvku zcela zřejmé, o záměrech autora při vytváření prvku nebo k " +"názorům na další vylepšování." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Přidání do OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Vybrat typ" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Místo bez názvu" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Selhalo zpracování adresy GeoURI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Souřadnice" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Přesnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Přesnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonní číslo" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Veřejný přístup k Internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Bez přístupu k Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Veřejná Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Drátový přístup k Internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Počítač k dispozici k používání" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internetová asistence k dispozici" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Bez toalet k dispozici" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "K dispozici toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Bezbariérový přístup" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Omezený bezbariérový přístup" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Nemá bezbariérový přístup" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Výslovně vhodné pro vozíčkáře" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Náboženství:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Místo nebylo v OpenStreetMap nalezeno" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Souřadnice v adrese URL nejsou platné" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Tato adreasa URL není podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítají se mapové dlaždice pro tisk" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pokud to trvá příliš dlouho, můžete tisk zrušit" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Zrušit tisk" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Přidat podle místa" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odebrat podle místa" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Otočit trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Přidat %s do %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Selhalo otevření adresy URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otevřít pomocí %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "selhalo načtení souboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Plán cesty poskytl %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start v %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chůze %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Příjezd do %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Příjezd" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazit pokyny pro pěší" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrýt pokyny pro pěší" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načíst dřívější variantu" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načíst pozdější variantu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nebyla nalezena žádná dřívější varianta." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nebyla nalezena žádná pozdější varianta." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d. %B" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Pro tuto trasu nebyly nalezeny žádné časové údaje." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Pro tuto trasu nebyl nalezen žádný poskytovatel údajů." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodina" +msgstr[1] "%s hodiny" +msgstr[2] "%s hodin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s hod" +msgstr[1] "%s∶%s hod" +msgstr[2] "%s∶%s hod" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s – %s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 hodin denně" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "za denního světla" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "každý den" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "státní svátky" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "školní prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "zavřeno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "neznámá" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "velmi přesná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s hod" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje poslední příjezd" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zahněte doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Zahněte doleva" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Zahněte mírně doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Zahněte mírně doleva" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zahněte ostře doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Zahněte ostře doleva" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zahněte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Zahněte doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Zahněte mírně doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Zahněte mírně doprava" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zahněte ostře doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Zahněte ostře doprava" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovém objezdu použijte výjezd %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovém objezdu použijte výjezd směr %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Najeďte na kruhový objezd" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použijte výtah a vystupte v %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Použijte výtah" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Proveďte otočku doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Proveďte otočku doleva" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Proveďte otočku doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Proveďte otočku doprava" + diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..a6caef23 --- /dev/null +++ b/po/da.po @@ -0,0 +1,1984 @@ +# Danish translation for gnome-maps. +# Copyright (C) 2013, 2016-2018 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Kris Thomsen , 2013. +# Kenneth Nielsen , 2014. +# scootergrisen, 2015, 2019. +# Ask Hjorth Larsen , 2015, 16, 17, 18. +# Alan Mortensen , 2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-09-07 18:31+0200\n" +"Last-Translator: Alan Mortensen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find steder i hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kort giver dig hurtig adgang til kort over hele verden. Det giver dig " +"mulighed for hurtigt at finde stedet du leder efter ved at søge efter en by " +"eller gade, eller et sted hvor du kan mødes med en ven." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kort bruger den kollaborative OpenStreetMap-database, skabt af flere " +"hundrede tusinde mennesker over hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan endda søge efter bestemte typer af placeringer, såsom “Pubs near Main " +"Street, Boston” eller “Hotels near Alexanderplatz, Berlin” (Dansk endnu ikke " +"understøttet)." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Kort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et simpelt kortprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillader at din placering vises på kortet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sidst viste sted" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sidst viste sted." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Korttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen af kort som skal vises (vejkort, luftfoto osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vinduesstørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vinduesstørrelse (bredde og højde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduesplacering" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduesplacering (X og Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindue maksimeret" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimeringstilstand for vindue" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimum antal af søgeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum antal af søgeresultater fra geokode-søgning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal seneste steder, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senest besøgte steder, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal seneste ruter, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senest besøgte ruter, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Facebook. Mulige " +"værdier er: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS og SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Foursquare. " +"Mulige værdier er: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som opdatering på Facebook-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som tweet i Twitter-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brugernavn eller e-mail-adresse på OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Angiver om brugeren er logget ind til at kunne redigere data i OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sidst brugte transporttype til routing" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattilstand" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet er i nattilstand." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Brug fliser til hybridluftfoto" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Hvorvidt luftfotofliser skal bruge hybrid stil (med etiketter)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighed" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annullér" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "T_jek ind" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venners venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Kun venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Kun mig" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute herfra" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tilføj mellemliggende destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute hertil" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hvad er der her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiér placering" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportér visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportér" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkludér rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Vælg korttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom ud" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom ind" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå foretrukne til/fra" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis genveje" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søg" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afslut" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom ind" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ud" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå skala til/fra" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skift til gadevisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skift til luftfotovisning" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åbn formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åbn formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå lokaliseringstjenster til for at bestemme din placering" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annullér" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Lokaliseringsindstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattilstand" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Opret OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportér som billede" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kort" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Find en rute" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Kort er offline!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kort skal bruge en aktiv internetforbindelse for at fungere korrekt, men der " +"er ingen." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Kontrollér dine indstillinger for forbindelse og proxy." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Føj til ny rute" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Del placering" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Markér som foretrukken" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Tjek ind her" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Log ind for at redigere kort" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjælp med at forbedre kortet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Adgangskode" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Tilmeld" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Log ind" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager - det fungerede ikke. Prøv venligst igen eller besøg\n" +"OpenStreetMap for at nulstille din adgangskode." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Godkendelseskoden var ikke korrekt. Prøv venligst igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Indtast godkendelseskoden vist ovenfor" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Godkend" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget ind" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Log ud" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gade" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +# Velsagtens by, postkode eller senest brugte jf. omkringstående +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tilføj felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kortændringer vil være synlige på alle kort, der\n" +"bruger data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senest brugte" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næste" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Vis flere oplysninger" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater fundet" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Træk for at ændre rækkefølge for ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åbn placering" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiér" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åbn formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åbn" + +# velsagtens af lag eller rute +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå synlighed til/fra" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøgning med GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rejseplaner for offentlig transport tilbydes af tredjepartstjenester.\n" +"\n" +"GNOME kan ikke garantere, at de viste ruter og køreplaner er korrekte.\n" +"Bemærk, at nogle udbydere måske ikke medtager alle mulige former for " +"transport,\n" +"f.eks. har en national udbyder måske ikke fly med, og en lokal udbyder har " +"måske\n" +"ikke regionale tog med.\n" +"Viste navne og mærker skal betragtes som registrerede varemærker, når dette " +"er muligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul mellemliggende stop og oplysninger" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis mellemliggende stop og oplysninger" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Tag afsted nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Afgangstidspunkt" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankomsttidspunkt" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvogne" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Færger" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Nuværende placering" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom ind for at tilføje sted!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom ind" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kunne ikke finde flisestruktur i mappe" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kunne ikke fortolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunne ikke finde OSM-element" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal flisemappestruktur" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Flisestørrelse til lokal flisemappe" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Vis programmets version" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Ignorér hvorvidt netværket er tilgængeligt" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Vælg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Indlæser" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Vælg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Facebook. Vælg " +"venligst et fra listen." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Foursquare. Vælg " +"venligst et fra listen." + +# Undgå problemer med forholdsord +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Tjek ind: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv valgfrit en besked for at tjekke ind her: %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Der opstod en fejl" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan ikke finde “%s” på den sociale tjeneste" + +# ?? +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan ikke finde et passende sted at tjekke ind her" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiverne er udløbet; åbn venligst Onlinekonti for at logge ind og slå " +"denne konto til" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Intet fundet her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Stedet blev føjet til kortet. Bemærk at det kan tage et stykke tid, før det " +"vises på kortet og i søgeresultaterne." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kort på %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke tilladelse til at gemme der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappen findes ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Intet filnavn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "fortolkerfejl" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukendt geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Ruteforespørgsel fejlede." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Ingen rute fundet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Kunne ikke forbinde til lokaliseringstjeneste" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "" +"Kris Thomsen\n" +"Kenneth Nielsen\n" +"scootergrisen\n" +"Ask Hjorth Larsen\n" +"Alan Mortensen\n" +"\n" +"Dansk-gruppen\n" +"Websted http://dansk-gruppen.dk\n" +"E-mail " + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Et kortprogram til GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ophavsret © 2011 – 2019 Red Hat, Inc. og udviklerne af GNOME Kort" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortdata af %s og bidragydere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortfelter leveret af %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søgning leveret af %s med %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Filtypen understøttes ikke" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Kunne ikke åbne lag" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Kunne ikke åbne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Forkert brugernavn eller adgangskode" + +# Succes er et lidt stærkere ord på dansk end på engelsk. Har vi noget mere passende? +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørgsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt ikke fundet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt! En anden har netop ændret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er blevet slettet" + +# A way is an ordered list of nodes which normally also has at least one tag or is included within a Relation +# +# http://wiki.openstreetmap.org/wiki/Way +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way eller relation refererer til underelementer som ikke findes" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officielle navn. Dette er typisk hvad der står på et skilt." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Webside" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officielle webside. Prøv at bruge den mest grundlæggende form, dvs. " +"http://eksempel.dk i stedet for http://eksempel.dk/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Brug det internationale format som begynder med tegnet +. Vær " +"opmærksom på lokale love om privatlivsbeskyttelse, især for private numre." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet bør inkludere sprogkoden og artiklens overskrift, f.eks. “da:" +"Artikeloverskrift”" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Åbningstider" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Se linket i etiketten for at få hjælp om format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Befolkning" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Højde" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Højde (over havoverfladen) af et punkt i meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rullestolsadgang" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Begrænset" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Handicap" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetadgang" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Trådløs" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Kabel" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitær universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toiletter" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information der bruges til at give andre kortbrugere oplysninger om et " +"element som ikke er åbenlyse, forfatterens hensigt med at oprette det, eller " +"fif om yderligere forbedringer." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Vælg type" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Færdig" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Unavngivet placering" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Befolkning:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Højde:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Åbningstider:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetadgang:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religion:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toiletter:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rullestolsadgang:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Fortolkning af Geo-URI mislykkedes" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ja" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "begrænset" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nej" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "handicap" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Placering ikke fundet i OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap-URL er ikke gyldig" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinater i URL er ikke gyldige" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL understøttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Indlæser kortfliser til udskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan afbryde udskriften hvis dette varer for længe" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afbryd udskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tilføj via sted" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern via sted" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vend ruten om" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tilføj %s til %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Kunne ikke åbne URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Åbn med %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "kunne ikke indlæse fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Anslået tid: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rejseplaner leveret af %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starttidspunkt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankomst %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Ankomst" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis gangrute" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul gangrute" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Indlæs tidligere alternative ruter" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Indlæs senere alternative ruter" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer fundet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer fundet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Ingen køreplan fundet for denne rute." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Ingen udbyder fundet for denne rute." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "hele døgnet" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "fra solopgang til solnedgang" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "helligdage" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skoleferier" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# hvorfor ikke closed? +#: src/translations.js:264 +msgid "not open" +msgstr "ikke åbent" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "kabel" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "tjeneste" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøjagtighed: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ukendt" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Præcis" + +# h er symbolet for enheden time +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s fod" + +# Formoder der er tale om, at man ikke kan angive, hvornår man senest vil ankomme +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette udvidelsesmodul understøtter ikke senest ankomsttidspunkt" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsæt på %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Fortsæt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Drej til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Drej til venstre" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Drej lidt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Drej lidt til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Drej skarpt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Drej skarpt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Drej til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Drej til højre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Drej lidt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Drej lidt til højre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Drej skarpt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Drej skarpt til højre" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Tag %s. vej i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Drej fra mod %s i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Kør ind i rundkørslen" + +# . er for at markere ordenstal og ikke et afsluttende punktum +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tag elevatoren og stå af på %s." + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Tag elevatoren" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Lav en u-vending til venstre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Lav en u-vending til venstre" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Lav en u-vending til højre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Lav en u-vending til højre" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du ikke en konto?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Rutesøgning med OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Tilføj destination" + +#~ msgid "Open with another application" +#~ msgstr "Åbn med andet program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryk enter for at søge" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Afslut" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Åbn formlag …" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Indlæs kortlag" + +#~ msgid "Open Layer" +#~ msgstr "Åbn lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mile" + +#~ msgid "%f ft" +#~ msgstr "%f fod" + +#~ msgid "Country code: %s" +#~ msgstr "Landekode: %s" diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..c6aa8aa6 --- /dev/null +++ b/po/de.po @@ -0,0 +1,2018 @@ +# German translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Tobias Endrigkeit , 2013. +# Benjamin Steinwender , 2014. +# Bernd Homuth , 2015. +# Paul Seyfert , 2016. +# Wolfgang Stöggl , 2014-2015, 2017. +# Christian Kirbach , 2014-2020. +# Mario Blättermann , 2015-2018, 2020. +# Tim Sabsch , 2018-2020. +# Philipp Kiemle , 2020-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-26 10:41+0100\n" +"Last-Translator: Philipp Kiemle \n" +"Language-Team: Deutsch \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karten" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Orte in der ganzen Welt finden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"»Karten« gibt Ihnen einen schnellen Zugang zu Karten aus der ganzen Welt. Es " +"erlaubt Ihnen, Orte schnell zu finden, indem Sie eine Stadt oder eine Straße " +"suchen, oder einen Ort zu finden, um einen Freund zu treffen." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"»Karten« nutzt die gemeinschaftliche OpenStreetMap-Datenbank, die von " +"hunderttausenden Menschen aus der ganzen Welt erstellt worden ist." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Suchen Sie nach bestimmten Arten von Orten, wie »Kneipen in der Nähe von " +"Main Street, Boston« oder »Hotels in der Nähe vom Alexanderplatz, Berlin«." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Das GNOME-Projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Karten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Eine einfache Karten-Anwendung" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ermöglicht die Anzeige Ihres Ortes in der Karte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Zuletzt betrachteter Ort" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinaten des letzten betrachteten Orts." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Ansichtsgröße" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Vergrößerungsstufe" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartentyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Die Art der anzuzeigenden Karte (Straße, Luftbildansicht, usw.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenstergröße" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenstergröße (Breite und Höhe)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fensterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fensterposition (X und Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenster maximiert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximierungszustand des Fensters" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximale Anzahl an Suchergebnissen" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximale Anzahl an Suchergebnissen aus der Geocode-Suche." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Facebook-Check-in" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Facebook-Check-in. " +"Mögliche Werte sind: EVERYONE (jeder), FRIENDS_OF_FRIENDS (Freunde von " +"Freunden), ALL_FRIENDS (alle Freunde) oder SELF (selbst)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Foursquare-Check-in" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Foursquare-Check-in. " +"Mögliche Werte sind: Öffentlich, Anhänger oder Privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Facebook-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Twitter-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Benutzername oder E-Mail-Adresse für OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Zeigt an, dass sich der Benutzer angemeldet hat, um OpenStreetMap-Daten " +"bearbeiten zu können." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Für die Route zuletzt benutzte Beförderungsart" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Gibt an, ob sich die Anwendung im Nachtmodus befindet." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Verwendung von Hybrid-Luftausschnitten" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Gibt an, ob Luftausschnitte Hybrid verwenden sollen (mit Markierungen)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Auf Facebook veröffentlichen" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Auf Twitter veröffentlichen" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Ein_checken" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Jeder" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Freunde von Freunden" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur Freunde" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur ich" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Öffentlich" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Anhänger" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route von hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zwischenziel hinzufügen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route hierher" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Was ist hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Ort kopieren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ansicht exportieren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportieren" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Route und Markierungen einbeziehen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Wählen Sie den Kartentyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Verkleinern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Vergrößern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Favoriten umschalten" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allgemein" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tastenkürzel anzeigen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Suchen" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Verlassen" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartenansicht" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Vergrößern" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Verkleinern" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Maßstab umschalten" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Zur Straßenansicht wechseln" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Zur Luftbildansicht wechseln" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Formebene öffnen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Markierungen anzeigen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Formebene öffnen …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Schalten Sie die Ortungsdienste ein, um Ihren Ort zu bestimmen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Abbrechen" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Einstellungen der Ortungsdienste" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-Konto einrichten" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Als Bild exportieren" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Tasten_kürzel" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Info zu Karten" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Karten ist vom Internet getrennt!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karten erfordert eine bestehende Internetverbindung, um richtig arbeiten zu " +"können. Es besteht aber keine." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Prüfen Sie Ihre Verbindung und die Proxy-Einstellungen." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-Konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Anmelden, um Karten bearbeiten zu " +"können" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helfen Sie bei der Verbesserung der Karte,\n" +"indem Sie ein OpenStreetMap-Konto nutzen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-Mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passwort" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrieren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Anmelden" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Das hat leider nicht funktioniert. Bitte versuchen Sie es erneut, oder " +"besuchen Sie\n" +"OpenStreetMap, um Ihr Passwort zurückzusetzen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "" +"Die Verifizierungscodes stimmen nicht überein, bitte versuchen Sie es erneut." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Geben Sie den oben angezeigten Verifizierungscode ein" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifizieren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Angemeldet" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ihr OpenStreetMap-Konto ist aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Abmelden" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straße" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hausnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postleitzahl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Stadt" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Keine" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Feld hinzufügen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartenänderungen werden in allen Karten sichtbar, die\n" +"Daten von OpenStreetMap verwenden." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Zuletzt verwendet" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Nächste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Keine Ergebnisse gefunden" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Ein Fehler ist aufgetreten" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ziehen, um die Reihenfolge der Routenziele zu ändern" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ort öffnen" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopieren" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Senden an …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Ein_checken …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Formebene öffnen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ö_ffnen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Sichtbarkeit umschalten" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routenplanung von GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Die Reisedaten für öffentliche Verkehrsmittel werden von Drittanbietern\n" +"bereitgestellt.\n" +"GNOME kann für die Korrektheit der Routen und angezeigten Fahrzeiten\n" +"nicht garantieren. Beachten Sie, dass nicht alle Anbieter Informationen für " +"alle\n" +"Transportmittel beinhalten. Zum Beispiel könnte ein nationaler Anbieter " +"keine\n" +"Fluglinien beinhalten, oder ein lokaler Anbieter keine Regionalzüge.\n" +"Die angezeigten Namen und Marken sind als eingetragene Warenzeichen zu " +"betrachten, sofern anwendbar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Weitere Ergebnisse anzeigen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Zwischenstationen und Informationen verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zwischenstationen und Informationen anzeigen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Jetzt starten" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Abfahrt um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankunft um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Anzeigen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busse" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Straßenbahnen" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Züge" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "U-Bahn" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Fähren" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flugzeuge" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Ort teilen" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Zu einer neuen Route hinzufügen" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Route" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Als bevorzugt markieren" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Vergrößern, um einen Ort hinzufügen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Vergrößern" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Es konnte keine Kachel-Struktur im Ordner gefunden werden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-Dokument konnte nicht ausgewertet werden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Erforderliche Attribute fehlen" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-Element kann nicht gefunden werden" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Pfad zu einer lokalen Kachel-Ordnerstruktur" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Kachelgröße des lokalen Kachel-Ordner" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Die Versionsnummer des Programms anzeigen" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Verfügbarkeit des Netzwerks ignorieren" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATEI …|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Wählen Sie ein Konto aus" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Wird geladen" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Wählen Sie einen Ort" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Facebook finden. " +"Bitte wählen Sie einen aus der Liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Foursquare " +"finden. Bitte wählen Sie einen aus der Liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Bei %s einchecken" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Schreiben Sie eine optionale Nachricht, um bei %s einzuchecken." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "»%s« konnte im sozialen Netzwerk nicht gefunden werden" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Für einen Check-in konnte an diesem Ort kein geeigneter Platz gefunden werden" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Die Anmeldedaten sind abgelaufen. Bitte öffnen Sie Online-Konten, um sich " +"anzumelden und das Konto zu aktivieren" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Hier wurde nichts gefunden!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Der Ort wurde zur Karte hinzugefügt. Beachten Sie, dass es eine Zeit dauern " +"kann, bis er in der Karte und in den Suchergebnissen erscheint." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karten auf %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dateisystem ist schreibgeschützt" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Sie haben nicht die nötigen Rechte zum Speichern" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Der Ordner existiert nicht" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Kein Dateiname angegeben" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ansicht kann nicht exportiert werden" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktueller Ort" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "Ungültige Koordinaten" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "Verarbeitungsfehler" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "Unbekannte Geometrie" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Routenanfrage schlug fehl." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Keine Route gefunden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle Ebenendateien" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Es konnte keine Verbindung zum Ortungsdienst hergestellt werden" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Christian Kirbach \n" +"Tobias Endrigkeit \n" +"Benjamin Steinwender \n" +"Mario Blättermann \n" +"Bernd Homuth \n" +"Paul Seyfert \n" +"Tim Sabsch \n" +"Philipp Kiemle " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Eine Karten-Anwendung für GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. und die Autoren von GNOME Karten" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartendaten bereitgestellt von %s und weiteren Mitwirkenden" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartenausschnitte bereitgestellt von %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Suche bereitgestellt von %s unter Verwendung von %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Ebene konnte nicht geöffnet werden" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Möchten Sie fortfahren?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sie sind dabei, Dateien mit einer Gesamtgröße von %s MB zu öffnen. Das " +"könnte einige Zeit dauern" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Dateityp wird nicht unterstützt" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Geo-Adresse konnte nicht geöffnet werden" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Benutzername oder Passwort falsch" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Erfolg" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Fehlerhafte Anfrage" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nicht gefunden" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, jemand anderes hat gerade das Objekt geändert" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt wurde gelöscht" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Weg oder Bezug verweist auf nicht existierende Unterobjekte" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "" +"Der offizielle Name, der üblicherweise auf dem Ortseingangsschild erscheint." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Internet-Seite" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Das ist keine gültige URL. Bitte beginnen Sie mit »http://« oder »https://«." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Die offizielle Webseite. Verwenden Sie möglichst die Grundform der Adresse, " +"zum Beispiel http://example.com statt http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Die Telefonnummer im internationalen Format, beginnend mit einem Plus-" +"Zeichen. Denken Sie an den Schutz der Privatsphäre, insbesondere für private " +"Telefonnummern." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Das verwendete Format sollte den Sprachcode und den Artikel enthalten, zum " +"Beispiel »de:Titel des Artikels«." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Öffnungszeiten" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Öffnen Sie den Verweis in der Beschriftung für Hilfe zur Formatierung." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Bevölkerung" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Höhe" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höhe eines Punktes über dem Meeresspiegel in Meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Barrierefreier Zugang" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nein" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Begrenzt" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Geeignet" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internetzugang" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Funknetzwerk" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Kabelgebunden" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animismus" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahaitum" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhismus" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaismus" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Christentum" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfuzianismus" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduismus" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainismus" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judentum" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Mehrere Religionen" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Heidentum" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianismus" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shintoismus" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhismus" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualismus" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Daoismus" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarismus" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jesidismus" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zarathustrismus" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toiletten" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Notiz" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Notiz, die anderen Kartennutzern nicht-offensichtliche Hinweise zu einem " +"Element, die Absicht des Autors bei der Erstellung, oder Hinweise zur " +"weiteren Verbesserung zur Verfügung stellt." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Typ wählen" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Abgeschlossen" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Unbenannter Ort" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo-Adresse konnte nicht gelesen werden" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinaten" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Genauigkeit" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Genauigkeit: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Öffentlicher Internetzugang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Kein Internetzugang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Öffentliches WLAN" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Kabelgebundener Internetzugang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computer zur Nutzung verfügbar" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internet-Hilfestellung verfügbar" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Keine Toiletten vorhanden" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toiletten vorhanden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Barrierefrei" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Eingeschränkt barrierefrei" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Nicht barrierefrei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Barrierefrei" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Ort wurde nicht in OpenStreetMap gefunden" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaten in der Adresse sind ungültig" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Adresse wird nicht unterstützt" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Von %s nach %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Kartenausschnitte zum Drucken werden geladen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Sie können den Druck abbrechen, wenn dies zu lange dauert" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Drucken abbrechen" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zwischenstopp hinzufügen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Zwischenstopp entfernen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route umkehren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s zu %s hinzufügen" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Adresse konnte nicht geöffnet werden" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Öffnen mit %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "Laden der Datei ist fehlgeschlagen" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschätzte Zeit: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Reiseplan bereitgestellt von %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Abfahrt in %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Abfahrt" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Fußweg %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankunft in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankunft" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Anweisungen für den Fußweg anzeigen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Anweisungen für den Fußweg verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Frühere Alternativen laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Spätere Alternativen laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Keine früheren Alternativen gefunden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Keine späteren Alternativen gefunden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Für diese Route wurden keine Fahrplandaten gefunden." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Für diese Route wurden kein Anbieter gefunden." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s Minute" +msgstr[1] "%s Minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s Stunde" +msgstr[1] "%s Stunden" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s Stunde" +msgstr[1] "%s:%s Stunden" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Jederzeit" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Von Sonnenaufgang bis Sonnenuntergang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Jeden Tag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Gesetzliche Feiertage" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Schulferien" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "geschlossen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Unbekannt" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Genau" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h, %s min" +msgstr[1] "%s h, %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dieses Plugin unterstützt nicht die letzte Ankunft" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsetzen auf %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsetzen" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Halb links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Halb links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Scharf links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Scharf links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Halb rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Halb rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Scharf rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Scharf rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Im Kreisverkehr die Ausfahrt %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Im Kreisverkehr die Ausfahrt auf %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "In den Kreisverkehr fahren" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Den Aufzug nehmen und bei %s aussteigen" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Den Aufzug nehmen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Eine Kehrtwende nach links auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Eine Kehrtwende nach links machen" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Eine Kehrtwende nach rechts auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Eine Kehrtwende nach rechts machen" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s, %s und %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Check in here" +#~ msgstr "Hier einchecken" + +#~ msgid "Show more information" +#~ msgstr "Weitere Informationen anzeigen" + +#~ msgid "Population:" +#~ msgstr "Bevölkerung:" + +#~ msgid "Altitude:" +#~ msgstr "Höhe:" + +#~ msgid "Opening hours:" +#~ msgstr "Öffnungszeiten:" + +#~ msgid "Internet access:" +#~ msgstr "Internetzugang:" + +#~ msgid "Toilets:" +#~ msgstr "Toiletten:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Barrierefreier Zugang:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begrenzt" + +#~ msgid "no" +#~ msgstr "nein" + +#~ msgid "designated" +#~ msgstr "geeignet" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-Adresse ist ungültig" + +#~ msgid "wired" +#~ msgstr "Kabelgebunden" + +#~ msgid "terminal" +#~ msgstr "Terminal" + +#~ msgid "service" +#~ msgstr "Dienst" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Route suchen" + +#~ msgid "Primary menu" +#~ msgstr "Hauptmenü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Sie haben kein Konto?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routenplanung von OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Ziel hinzufügen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mit einer anderen Anwendung öffnen" + +#~ msgid "Press enter to search" +#~ msgstr "Drücken Sie zum Suchen die Eingabetaste" + +#~ msgid "Quit" +#~ msgstr "Verlassen" diff --git a/po/el.po b/po/el.po new file mode 100644 index 00000000..7723c658 --- /dev/null +++ b/po/el.po @@ -0,0 +1,2094 @@ +# Greek translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Dimitris Spingos , 2013. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014, 2015. +# Efstathios Iosifidis , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-06 00:12+0200\n" +"Last-Translator: Efstathios Iosifidis \n" +"Language-Team: Greek, Modern (1453-) \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Χάρτες GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Βρείτε μέρη από όλο τον κόσμο" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Η εφαρμογή Χάρτες, σας παρέχει μια γρήγορη πρόσβαση σε χάρτες από όλο τον " +"κόσμο. Σας επιτρέπει να βρείτε γρήγορα μια τοποθεσία αναζητώντας είτε μια " +"πόλη είτε μια οδό, ή μπορείτε να εντοπίσετε μια τοποθεσία για να συναντήσετε " +"ένα φίλο." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Η εφαρμογή Χάρτες, χρησιμοποιεί την βάση δεδομένων OpenStreetMap, που έχει " +"φτιαχτεί από χιλιάδες άτομα σε όλο τον κόσμο." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Μπορείτε ακόμη και να κάνετε αναζήτηση για καθορισμένους τύπους τοποθεσιών, " +"όπως “Λέσχες κοντά στην Σταδίου, Αθήνα” ή “Ξενοδοχεία κοντά στην Ομόνοια, " +"Αθήνα”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Το έργο GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Χάρτες" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Μια απλή εφαρμογή χαρτών" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Χάρτες;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Επιτρέπει την τοποθεσία σας να εμφανιστεί στον χάρτη." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "τελευταία τοποθεσία που προβλήθηκε" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Συντεταγμένες τελευταίας τοποθεσίας που προβλήθηκε." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "εστίαση" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Επίπεδο εστίασης" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Τύπος χάρτη" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Ο τύπος του χάρτη για προβολή (δρόμος, εναέριος κλπ.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Μέγεθος παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Μέγεθος παραθύρου (πλάτος και ύψος)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Θέση παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Θέση παραθύρου (Χ και Υ)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Μεγιστοποιημένο παράθυρο" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Κατάσταση μεγιστοποίησης παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Μέγιστος αριθμός αποτελεσμάτων αναζήτησης" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" +"Μέχιστος αριθμός αποτελεσμάτων αναζήτησης από την αναζήτηση στο geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Αριθμός πρόσφατων τοποθεσιών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Αριθμός τοποθεσιών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Αριθμός πρόσφατων διαδρομών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Αριθμός διαδρομών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Ρυθμίσεις ιδιωτικότητας ελέγχου εισόδου στο Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου. Δυνατές " +"τιμές είναι: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ή SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο " +"Foursquare. Δυνατές τιμές είναι: public, followers ή private.." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Έλεγχος εισόδου του Foursquare στην αναμετάδοση του Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"αποστολή στον λογαριασμό Facebook συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Έλεγχος εισόδου στην αναμετάδοση του Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"τιτίβισμα στον λογαριασμό Twitter συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου του OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Υποδεικνύει αν ο χρήστης έχει συνδεθεί για να επεξεργαστεί τα δεδομένα του " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Τελευταία χρησιμοποιημένος τύπος μεταφορικών μέσων για δρομολόγια" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Εάν η εφαρμογή βρίσκεται σε νυχτερινή λειτουργία." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Χρήση υβριδικών πλακιδίων" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Εάν τα πλακίδια πρέπει να χρησιμοποιούν υβριδικό στυλ (με ετικέτες)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ορατότητα" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Δημοσίευση στο Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Δημοσίευση στο Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ά_κυρο" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Όλοι" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Φίλοι των φίλων" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Μόνο φίλοι" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Μόνο εγώ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Δημόσιο" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Ακόλουθοι" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Προσωπικό" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Διαδρομή από εδώ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Προσθήκη ενδιάμεσου προορισμού" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Διαδρομή προς εδώ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Τι είναι εδώ;" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Αντιγραφή τοποθεσίας" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Προβολή εξαγωγής" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Ε_ξαγωγή" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Συμπεριέλαβε διαδρομή και δείκτες" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Επιλογή τύπου χάρτη" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Εναλλαγή αγαπημένων" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Γενικά" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Εμφάνιση συντομεύσεων" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Αναζήτηση" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Έξοδος" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Προβολή χάρτη" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Εναλλαγή εστίασης" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Εναλλαγή σε προβολή δρόμου" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Εναλλαγή σε εναέρια προβολή" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Εμφάνιση ετικετών" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Άνοιγμα στρώσης σχήματος…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ενεργοποίηση υπηρεσιών τοποθεσίας για να βρείτε την τοποθεσία σας" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Ακύρωση" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ρυθμίσεις τοποθεσίας" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ρύθμιση λογαριασμού OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Εξαγωγή ως εικόνα" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Συντομεύσεις _πληκτρολογίου" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Περί του Χάρτες" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Οι Χάρτες είναι εκτός σύνδεσης!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Η εφαρμογή Χάρτες χρειάζεται μια ενεργή σύνδεση στο διαδίκτυο ώστε να " +"λειτουργήσει σωστά, αλλά δε βρέθηκε κάποια." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Ελέγξτε τις ρυθμίσεις της σύνδεσης και του διαμεσολαβητή σας." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Λογαριασμός OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Συνδεθείτε για να επεξεργαστείτε τους " +"χάρτες" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Βοηθήστε να βελτιώσουμε τον χάρτη, χρησιμοποιώντας\n" +"ένα λογαριασμό OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Κωδικός πρόσβασης" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Εγγραφή" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Σύνδεση" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Συγγνώμη, κάτι δε λειτούργησε σωστά. Παρακαλούμε δοκιμάστε ξανά, ή " +"επισκεφθείτε το\n" +"OpenStreetMap για να επαναφέρετε τον κωδικό πρόσβασης σας." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Δεν ταιριάζει ο κωδικός επιβεβαίωσης, παρακαλούμε προσπαθήστε ξανά." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Εισάγετε τον κωδικό επιβεβαίωσης που φαίνεται παραπάνω" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Επαλήθευση" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Συνδεδεμένος/η" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ο λογαριασμός στο OpenStreetMap είναι ενεργός." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Αποσύνδεση" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Οδός" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Αριθμός κατοικίας" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Ταχ. κώδικας" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Πόλη" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Τύπος" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Χωρίς" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Προσθήκη πεδίου" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Σχόλιο" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Οι αλλαγές θα γίνουν ορατές σε όλους τους χάρτες που\n" +"χρησιμοποιούν δεδομένα του OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Πρόσφατα χρησιμοποιημένα" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Επόμενο" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Δεν βρέθηκαν αποτελέσματα" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Παρουσιάστηκε σφάλμα" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Σύρετε για να αλλάξετε την σειρά στη διαδρομή" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Άνοιγμα τοποθεσίας" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Αντιγραφή" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Αποστολή σε…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ά_νοιγμα" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Εναλλαγή ορατότητας" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Αναζήτηση διαδρομής από το GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Τα δρομολόγια για τα μέσα μαζικής μεταφοράς παρέχονται από υπηρεσίες\n" +"από τρίτους.\n" +"Το GNOME δεν μπορεί να εγγυηθεί την ορθότητα των δρομολογίων και των " +"χρονοδιαγραμμάτων που εμφανίζονται.\n" +"Σημειώστε ότι ορισμένοι πάροχοι ενδέχεται να μην περιλαμβάνουν όλους τους " +"διαθέσιμους τρόπους μεταφοράς,\n" +"π.χ. ένας εθνικός πάροχος ενδέχεται να μην περιλαμβάνει αεροπορικές " +"εταιρείες και ένας τοπικός πάροχος θα μπορούσε\n" +"παραλείψει περιφερειακά τρένα.\n" +"Τα ονόματα και τα εμπορικά σήματα που εμφανίζονται πρέπει να θεωρούνται ως " +"σήματα κατατεθέντα όταν ισχύουν." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Εμφάνιση περισσότερων αποτελεσμάτων" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Απόκρυψη ενδιάμεσων στάσεων και πληροφοριών" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Εμφάνιση ενδιάμεσων στάσεων και πληροφοριών" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Αναχώρηση τώρα" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Αναχώρηση στις" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Άφιξη στις" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Εμφάνιση" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Λεωφορεία" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Τραμ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Τρένα" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Μετρό" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Πλοία" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Αεροπλάνα" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Διαμοιρασμός τοποθεσίας" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Προσθήκη σε νέα διαδρομή" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Οδηγίες" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Επισήμανση ως αγαπημένο" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Εστιάστε για να προσθέσετε μια τοποθεσία!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Μεγέθυνση" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Αποτυχία εύρεσης δομής πλακιδίων στον κατάλογο" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Αποτυχία ανάλυσης εγγράφου XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Λείπουν απαιτούμενα γνωρίσματα" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Αποτυχία εύρεσης στοιχείου OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Η τοποθεσία μιας τοπικής δομής πλακιδίων" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Μέγεθος πλακιδίων για τοπικό κατάλογο πλακιδίων" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Εμφάνιση της έκδοσης του προγράμματος" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Αγνόησε διαθεσιμότητα του δικτύου" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Επιλογή λογαριασμού" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Φορτώνεται" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Επιλέξτε μια θέση" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Facebook. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Foursquare. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in στο %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Γράψτε ένα προαιρετικό μήνυμα για check in στο %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Αδύνατη η εύρεση του «%s» στην κοινωνική υπηρεσία" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Αδύνατη η εύρεση μιας κατάλληλης θέσης για check-in σε αυτήν την τοποθεσία" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Τα διαπιστευτήρια έχουν λήξει, παρακαλούμε ανοίξτε τους διαδικτυακούς " +"λογαριασμούς για να εισέλθετε και να ενεργοποιήσετε αυτόν τον λογαριασμό" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Δεν βρέθηκε τίποτα εδώ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Η τοποθεσία προστέθηκε στον χάρτη, μπορεί να πάρει λίγη ώρα πρωτού " +"εμφανιστεί στον χάρτη και στα αποτελέσματα αναζήτησης." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Χάρτες στο %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Το σύστημα αρχείων είναι μόνο για ανάγνωση" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Δεν έχετε δικαιώματα για να αποθηκεύσετε" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Δεν υπάρχει ο κατάλογος" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Δεν ορίσθηκε όνομα αρχείου" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Αδυναμία εξαγωγής προβολής" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Τρέχουσα τοποθεσία" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "μη έγκυρη συντεταγμένη" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "σφάλμα ανάλυσης" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "άγνωστη γεωμετρία" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Αποτυχία αιτήματος διαδρομής." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Δεν βρέθηκε διαδρομή." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Εκκίνηση!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Όλα τα αρχεία στρώσεων" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Αποτυχία σύνδεσης με την υπηρεσία τοποθεσίας" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Ελληνική μεταφραστική ομάδα GNOME\n" +" Δημήτρης Σπίγγος \n" +" Ευστάθιος Ιωσηφίδης \n" +" Εύα Φωτοπούλου \n" +" Μαρία Θουκιδίδου \n" +" Μαρία Μαυρίδου \n" +" Θάνος Τρυφωνίδης \n" +"\n" +"Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" +"http://gnome.gr/" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Μια εφαρμογή χάρτη για το GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Πνευματικά δικαιώματα © 2011 – 2021 Red Hat, Inc. και συγγραφείς του Χάρτες " +"GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Δεδομένα χαρτών από %s και τους συνεισφέροντες" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Τα πλακίδια των χαρτών παρέχονται από %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Η αναζήτηση παρέχεται από το %s με τη χρήση του %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Αποτυχία ανοίγματος στρώσης" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Θέλετε να συνεχίσετε;" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Πρόκειται να ανοίξετε αρχεία με συνολικό μέγεθος %s MB. Μπορεί να χρειαστεί " +"λίγος χρόνος για τη φόρτωση" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Δεν υποστηρίζεται ο τύπος αρχείου" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Αποτυχία ανοίγματος GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Επιτυχία" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Εσφαλμένο αίτημα" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Δε βρέθηκε το αντικείμενο" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Σύγκρουση, κάποιος άλλος μόλις τροποποίησε το αντικείμενο" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Το αντικείμενο έχει διαγραφεί" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ο τρόπος ή η σχέση παραπέμπουν σε μη υπάρχον θυγατρικό" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Όνομα" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Το επίσημο όνομα. Αυτό φαίνεται συνήθως στις πινακίδες." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Διεύθυνση" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Ιστότοπος" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Αυτή δεν είναι έγκυρη URL. Φροντίστε να συμπεριλάβετε http:// ή https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ο επίσημος ιστότοπος. Προσπαθήστε να χρησιμοποιήσετε τη βασική μορφή της " +"διεύθυνσης. Π.χ. http://example.com αντί για http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Τηλέφωνο" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Αριθμός τηλεφώνου. Χρησιμοποιήστε την παγκόσμια μορφή, ξεκινώντας με το " +"σύμβολο +. Προσέχετε τους τοπικούς νόμους περί ιδιωτικότητας, ειδικά για " +"απόρρητα τηλεφωνικά νούμερα." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Βικιπαιδεία" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Η μορφή που θα χρησιμοποιηθεί πρέπει να περιλαμβάνει τον κωδικό γλώσσας και " +"έναν τίτλο άρθρου όπως \"en:Article title\"." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Ώρες λειτουργίας" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Δείτε τον σύνδεσμο στην ετικέτα για βοήθεια στην μορφοποίηση." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Πληθυσμός" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Υψόμετρο" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Υψόμετρο (πάνω από το επίπεδο της θάλασσας) ενός σημείου σε μέτρα." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Πρόσβαση αμαξιδίου" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ναι" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Όχι" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Περιορισμένο" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Υποδεικνυόμενο" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Πρόσβαση στο διαδίκτυο" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Ενσύρματη δικτύωση" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Υπολογιστής" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Υπηρεσία" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Θρησκεία" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Ανιμισμός" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Μπαχάι" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Βουδισμός" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Καοδαϊσμός" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Χριστιανισμός" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Κομφουκιανισμός" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Ινδουϊσμός" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Τζαϊνισμός" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Ιουδαϊσμός" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Ισλαμισμός" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Πολλαπλές θρησκείες" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Παγανισμός" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Πασαφιανισμός" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Σαηεντολογία" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Σιντό" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Σιχισμός" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Πνευματισμός" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Ταοϊσμός" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Ουνιταριανός Ουνιβερσαλισμός" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Βουντού" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Γιαζιδισμός" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Ζωροαστριανισμός" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Τουαλέτες" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Σημείωση" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Πληροφορίες που χρησιμοποιούνται για την ενημέρωση άλλων χαρτογράφων σχετικά " +"με τις μη προφανείς πληροφορίες σχετικά με ένα στοιχείο, την πρόθεση του " +"δημιουργού κατά τη δημιουργία του, ή συμβουλές για περαιτέρω βελτίωση." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Επιλογή τύπου" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Έτοιμο" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Άγνωστο μέρος" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Αποτυχία ανάλυσης Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Συντεταγμένες" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Ακρίβεια" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ακρίβεια: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Αριθμός τηλεφώνου" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Δημόσια πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Δεν υπάρχει πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Δημόσιο Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Ενσύρματη πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Υπολογιστές διαθέσιμοι προς χρήση" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Διατίθεται βοήθεια στο διαδίκτυο" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Δεν υπάρχουν διαθέσιμες τουαλέτες" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Διαθέσιμες τουαλέτες" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Περιορισμένη πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Δεν υπάρχει πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Έχει καθοριστεί για αναπηρικ αμαξιδίων" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Θρησκεία:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Η τοποθεσία δεν βρέθηκε στο OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Οι συντεταγμένες στη URL δεν είναι έγκυρες" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Η URL δεν υποστηρίζεται" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Από %s σε %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Φόρτωση χάρτη για εκτύπωση" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Μπορείτε να ακυρώσετε την εκτύπωση αν αυτό διαρκεί πολλή ώρα" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ακύρωση εκτύπωσης" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Προσθήκη μέσω της τοποθεσίας" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Αφαίρεση μέσω της τοποθεσίας" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Αντίστροφη διαδρομή" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Προσθήκη %s σε %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Αποτυχία ανοίγματος του URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Άνοιγμα με %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "αδυναμία φόρτωσης αρχείου" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Εκτιμώμενος χρόνος: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Οι διαδρομές παρέχονται από %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Έναρξη από %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Έναρξη" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Περπάτημα %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Άφιξη στο %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Άφιξη" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Εμφάνιση οδηγιών περπατήματος" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Απόκρυψη οδηγιών περπατήματος" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Φόρτωση νεοτέρων εναλλακτικών" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Φόρτωση τελευταίων εναλλακτικών" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Δεν βρέθηκαν νεότερες εναλλακτικές." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Δεν βρέθηκαν τελευταίες εναλλακτικές." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Δεν βρέθηκε δρομολόγιο γι' αυτή τη διαδρομή." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Δεν βρέθηκε πάροχος γι' αυτή τη διαδρομή." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s λεπτό" +msgstr[1] "%s λεπτά" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ώρα" +msgstr[1] "%s ώρες" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ώρα" +msgstr[1] "%s:%s ώρες" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Εικοσιτετράωρο" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Από την ανατολή μέχρι τη δύση του ήλιου" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Κάθε ημέρα" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Επίσημες αργίες" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Σχολικές αργίες" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "δεν είναι ανοικτό" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Άγνωστο" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Ακριβής" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ω" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s λεπτό" +msgstr[1] "%s h %s λεπτά" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s λεπτ" +msgstr[1] "%s λεπτ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s δ" +msgstr[1] "%s δ" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Αυτό το πρόσθετο δεν υποστηρίζει την τελευταία άφιξη" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Συνεχίστε στο %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Συνέχεια" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Στρίψτε αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Στρίψτε αριστερά" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Στρίψτε λίγο αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Στρίψτε λίγο αριστερά" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Απότομη στροφή αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Απότομη στροφή αριστερά" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Στρίψτε δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Στρίψτε δεξιά" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Στρίψτε λίγο δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Στρίψτε λίγο δεξιά" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Απότομη στροφή δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Απότομη στροφή δεξιά" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο προς %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Πάρτε τον κυκλικό κόμβο" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Πάρτε τον ανισόπεδο κόμβο και εξέλθετε από το %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Πάρτε τον ανισόπεδο κόμβο" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Κάντε μια αριστερή αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Κάντε μια αριστερή αναστροφή" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Κάντε μια δεξιά αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Κάντε μια δεξιά αναστροφή" + +#~ msgid "Check in here" +#~ msgstr "Check in εδώ" + +#~ msgid "Show more information" +#~ msgstr "Εμφάνιση περισσότερων πληροφοριών" + +#~ msgid "Population:" +#~ msgstr "Πληθυσμός:" + +#~ msgid "Altitude:" +#~ msgstr "Υψόμετρο:" + +#~ msgid "Opening hours:" +#~ msgstr "Ώρες λειτουργίας:" + +#~ msgid "Internet access:" +#~ msgstr "Πρόσβαση στο διαδίκτυο:" + +#~ msgid "Toilets:" +#~ msgstr "Τουαλέτες:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Πρόσβαση αμαξιδίου:" + +#~ msgid "Phone:" +#~ msgstr "Τηλέφωνο:" + +#~ msgid "yes" +#~ msgstr "ναι" + +#~ msgid "limited" +#~ msgstr "περιορισμένη" + +#~ msgid "no" +#~ msgstr "όχι" + +#~ msgid "designated" +#~ msgstr "υποδεικνυόμενο" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Η URL του OpenStreetMap δεν είναι έγκυρη" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ενσύρματο δίκτυο" + +#~ msgid "terminal" +#~ msgstr "υπολογιστής" + +#~ msgid "service" +#~ msgstr "εξυπηρέτηση" + +#~ msgid "Don’t have an account?" +#~ msgstr "Δεν έχετε λογαριασμό;" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Προσθήκη προορισμού" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Αναζήτηση διαδρομής από το OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Άνοιγμα με άλλη εφαρμογή" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Press enter to search" +#~ msgstr "Πατήστε enter για αναζήτηση" + +#~ msgid "Quit" +#~ msgstr "Έξοδος" + +#~ msgid "OK" +#~ msgstr "Εντάξει" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Άνοιγμα στρώσης σχήματος…" + +#~ msgid "Load Map Layer" +#~ msgstr "Φόρτωση στρώσης χάρτη" + +#~ msgid "Open Layer" +#~ msgstr "Άνοιγμα στρώσης" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Η τοποθεσία δεν βρέθηκε" + +#~ msgid "Postal code: %s" +#~ msgstr "Ταχ. κώδικας: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Κωδικός χώρας: %s" + +#~ msgid "Population: %s" +#~ msgstr "Πληθυσμός: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Πρόσβαση αμαξιδίου: %s " + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Αποτυχία ανάλυσης αρχείου GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Κοινή χρήση" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Τελευταία γνωστή θέση και ακρίβεια" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Τελευταία γνωστή θέση (πλάτος και μήκος σε μοίρες) και ακρίβεια (σε " +#~ "μέτρα)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Περιγραφή της τελευταίας γνωστής θέσης του χρήστη." + +#~ msgid "User set last known location" +#~ msgstr "Ορισμός της τελευταίας γνωστής τοποθεσίας από τον χρήστη" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Εάν η τελευταία γνωστή τοποθεσία ορίστηκε χειροκίνητα από τον χρήστη." + +#~ msgid "I’m here!" +#~ msgstr "Είμαι εδώ!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "From" +#~ msgstr "Από" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Satellite" +#~ msgstr "Δορυφόρος" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 00000000..cef6cc73 --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,2054 @@ +# British English translation of gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER. +# This file is distributed under the same licence as the gnome-maps package. +# Philip Withnall , 2013. +# Bruce Cowan , 2017-2020. +# Zander Brown , 2019-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-20 09:01+0000\n" +"PO-Revision-Date: 2021-03-22 12:30+0000\n" +"Last-Translator: Zander Brown \n" +"Language-Team: English - United Kingdom \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Project-Style: gnome\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find places around the world" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:197 +msgid "The GNOME Project" +msgstr "The GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "A simple maps application" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Allows your location to be shown on the map." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom level" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Map type" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "The type of map to display (street, aerial, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximised" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximisation state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Last used transportation type for routing" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Night mode" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Whether the application is in night mode." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Use hybrid aerial tiles" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Whether aerial tiles should use hybrid style (with labels)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibility" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post on Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post on Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Everyone" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Friends of friends" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Just friends" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Just me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route from here" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Add intermediate destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route to here" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "What’s here?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copy Location" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export view" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Export" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Include route and markers" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Go to current location" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Choose map type" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom out" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Toggle favourites" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Print Route" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Show Shortcuts" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Search" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Print route" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Map View" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom out" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toggle scale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Go to current location" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Switch to street view" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Switch to aerial view" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Open shape layer" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Show Labels" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Open Shape Layer…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Turn on location services to find your location" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Location Settings" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Night Mode" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Set up OpenStreetMap Account" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Export as Image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "About Maps" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Maps is offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Check your connection and proxy settings." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Sign in to edit maps" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help to improve the map, using an\n" +"OpenStreetMap account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Sign up" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Sign In" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "The verification code didn’t match, please try again." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Enter verification code shown above" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verify" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Signed In" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Your OpenStreetMap account is active." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sign Out" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Street" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "House number" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postal code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "City" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "None" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Add Field" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recently Used" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Next" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No results found" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "An error has occurred" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Drag to change order of the route" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Open Location" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send To…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Open Shape Layer" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Open" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Toggle visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Route search by GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Show more results" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Hide intermediate stops and information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Show intermediate stops and information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Leave Now" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Leave By" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrive By" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Show" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Underground" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferries" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplanes" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Share location" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Add to new route" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Directions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Mark as favourite" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in to add location!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom In" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Failed to find tile structure in directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Failed to parse XML document" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Missing required attributes" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Could not find OSM element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "A path to a local tiles directory structure" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tile size for local tiles directory" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Show the version of the program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignore network availability" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Select an account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Loading" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Select a place" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in to %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Write an optional message to check in to %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Cannot find “%s” in the social service" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Cannot find a suitable place to check-in in this location" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nothing found here!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Maps at %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filesystem is read only" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "You do not have permission to save there" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "The directory does not exist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No filename specified" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Unable to export view" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Current Location" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "invalid coordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parse error" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "unknown geometry" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Route request failed." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No route found." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "All Layer Files" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Failed to connect to location service" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Philip Withnall \n" +"David King \n" +"Bruce Cowan \n" +"Zander Brown " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Map data by %s and contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Map tiles provided by %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Search provided by %s using %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Failed to open layer" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Do you want to continue?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "File type is not supported" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Failed to open GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Incorrect user name or password" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Success" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bad request" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object not found" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, someone else has just modified the object" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object has been deleted" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way or relation refers to non-existing children" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "The official name. This is typically what appears on signs." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Address" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "This is not a valid URL. Make sure to include http:// or https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Phone" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"The format used should include the language code and the article title like " +"“en:Article title”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Opening hours" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "See the link in the label for help on format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevation (height above sea level) of a point in metres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Wheelchair access" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Yes" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limited" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designated" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internet access" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toilets" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Select Type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Done" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Unnamed place" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Failed to parse Geo URI" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Coordinates" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Accuracy" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Accuracy: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +#| msgid "House number" +msgid "Phone number" +msgstr "Phone number" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Public internet access" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +#| msgid "Internet access" +msgid "No internet access" +msgstr "No internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Public Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Wired internet access" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computers available for use" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internet assistance available" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "No toilets available" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toilets available" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Wheelchair accessible" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Limited wheelchair accessibility" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Not wheelchair accessible" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Designated for wheelchair users" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Place not found in OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Coordinates in URL are not valid" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL is not supported" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "From %s to %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Loading map tiles for printing" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "You can abort printing if this takes too long" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abort printing" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Add via location" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via location" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverse route" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Add %s to %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Failed to open URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Open with %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "failed to load file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimated time: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraries provided by %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Walk %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrive" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Show walking instructions" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Hide walking instructions" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Load earlier alternatives" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Load later alternatives" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No earlier alternatives found." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No later alternatives found." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No timetable data found for this route." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No provider found for this route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hour" +msgstr[1] "%s hours" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hour" +msgstr[1] "%s:%s hours" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Around the clock" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "From sunrise to sunset" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +#| msgid "every day" +msgid "Every day" +msgstr "Every day" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Public holidays" + +#: src/translations.js:179 +#| msgid "school holidays" +msgid "School holidays" +msgstr "School holidays" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "not open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Unknown" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "This plug-in doesn't support latest arrival" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue on %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turn left on %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Turn left" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turn slightly left on %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Turn slightly left" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turn sharp left on %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Turn sharp left" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turn right on %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Turn right" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turn slightly right on %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Turn slightly right" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turn sharp right on %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Turn sharp right" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "In the roundabout, take exit %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "In the roundabout, take exit to %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Take the roundabout" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Take the lift and get off at %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Take the lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Make a left u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Make a left u-turn" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Make a right u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Make a right u-turn" + +#~ msgid "Find a Route" +#~ msgstr "Find a Route" + +#~ msgid "Check in here" +#~ msgstr "Check in here" + +#~ msgid "Show more information" +#~ msgstr "Show more information" + +#~ msgid "Population:" +#~ msgstr "Population:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Opening hours:" + +#~ msgid "Internet access:" +#~ msgstr "Internet access:" + +#~ msgid "Toilets:" +#~ msgstr "Toilets:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Wheelchair access:" + +#~ msgid "Phone:" +#~ msgstr "Phone:" + +#~ msgid "yes" +#~ msgstr "yes" + +#~ msgid "limited" +#~ msgstr "limited" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designated" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL is not valid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "wired" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "service" + +#~ msgid "Primary menu" +#~ msgstr "Primary menu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Don’t have an account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Add destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Route search by OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "Quit" + +#~ msgid "Load Map Layer" +#~ msgstr "Load Map Layer" + +#~ msgid "Open with another application" +#~ msgstr "Open with another application" + +#~ msgid "Press enter to search" +#~ msgstr "Press enter to search" + +#~ msgid "Open Layer" +#~ msgstr "Open Layer" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "Last known location was set manually by user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I'm here!" +#~ msgstr "I’m here!" + +#~ msgid "Satellite" +#~ msgstr "Satellite" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 00000000..70521d83 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1889 @@ +# Esperanto translation for gnome-maps. +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ryan LORTIE , 2013. +# Matthew CHISHOLM , 2013. +# Daniel PUENTES , 2015. +# Nicolas MAIA , 2015. +# Baptiste DARTHENAY , 2016. +# Carmen Bianca BAKKER , 2018. +# Tirifto , 2019. +# Kristjan SCHMIDT , 2013-2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-12-15 18:16+0000\n" +"PO-Revision-Date: 2019-12-18 23:21+0200\n" +"Last-Translator: Kristjan SCHMIDT \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-DamnedLies-Scope: partial\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapoj" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trovi lokojn tra la mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapoj donas al vi rapidan aliron al mapoj de la tuta mondo. Ĝi ebligas vin " +"rapide trovi la lokon, kiun vi serĉas, serĉante urbon aŭ straton, aŭ trovi " +"lokon por renkonti amikon." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapoj uzas la kunlaboran datumbazon OpenStreetMap, farita de centoj da miloj " +"da personoj tra la tuta mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vi eĉ povas serĉi specifajn specojn de lokoj, kiel ekzemple “Trinkejo " +"proksime al Main Street, Bostono” aŭ “Hotelo proksime al Alexanderplatz, " +"Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "La projekto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:513 +msgid "Maps" +msgstr "Mapoj" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Simpla mapa aplikaĵo" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapoj;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ebligas montri vian pozicion sur la mapo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laste vidita loko" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinatoj de laste vidita loko." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Speco de mapo" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenestra grando" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenestra grando (larĝo kaj alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fenestra pozicio" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozicio de fenestro (x kaj y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenestro maksimumigita" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimumiga stato de fenestro" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimuma numero da serĉa rezultoj" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimuma numero da serĉa rezultoj de geocode-a serĉo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombro de lastatempaj lokoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombro de lastatempaj lokoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombro de lastatempaj kursoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombro da lastatempe vizititaj kursoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privateca agordo de Facebook-prezentiĝo" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"EVERYONE (ĉiuj), FRIENDS_OF_FRIENDS (amikoj de amikoj), ALL_FRIENDS (ĉiuj " +"amikoj), aŭ SELF (sin mem)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privateca agordo de Foursquare-prezentiĝo" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"public (publika), followers (sekvantoj), aŭ private (privata)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Facebook ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Twitter ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-uzantonomo aŭ retpoŝtadreso" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikas ĉu la uzanto estas salutinta por redakti OpenStreetMap-datumojn." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Videbleco" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Afiŝi ĉe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Alfiŝi ĉe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Nuligi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "P_rezentiĝi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ĉiu" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amikoj de amikoj" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur amikoj" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur mi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publika" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekvantoj" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privata" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Kio estas ĉi tie?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Kopii lokon" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Elporti kiel bildo" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Elporta vido" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Elporti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkluzivi kurson kaj markilojn" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ĝenerale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Montri la klavkombinojn" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Serĉo" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Presi la kurson" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ĉesi" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Mapa vido" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zomi" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Malzomi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Baskuligi skalon" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Ŝalti al strata vido" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Baskuligi al aera vido" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Malfermi forman tavolon" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Malfermi forman tavolon…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Enŝalti lokajn servojn por trovi vian lokon" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Nuligi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Agordoj de loko" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Agordi OpenStreetMap-konton" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Pri Mapoj" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Elekti specon de mapo" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Malzomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Zomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Baskuligi ŝataĵojn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Presi la kurson" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Mapoj estas nekonektitaj!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapoj bezonas interretaliron por bone funkcii, sed oni ne trovis ĝin." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kontrolu vian konekton kaj agordojn de la prokurilo." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aldoni al nova kurso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kunhavigi lokon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marki kiel ŝatatan" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prezentiĝi ĉi tie" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Salutu por redakti mapojn" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helpu plibonigi la mapon uzante\n" +"OpenStreetMap-konton." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Retpoŝtadreso" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasvorto" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Saluti" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ĉu vi ne havas konton?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Pardonon, tio ne funkciis. Bonvolu provi denove, aŭ viziti\n" +"OpenStreetMap por reagordi vian pasvorton." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "La kontrolkodo ne kongruis, bonvolu provi denove." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Bonvolu enigi la ĉi supran kontrolkodon" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Kontroli" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Salutinta" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Via OpenStreetMap-konto estas aktiva." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Adiaŭi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strato" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Domnumero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poŝtkodo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Urbo" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Neniu" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aldoni kampon" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Mapaj redaktoj videblos en ĉiuj mapoj kiuj uzas\n" +"OpenStreetMap-datumojn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Freŝe uzitaj" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sekva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montri pli da informoj" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ne trovis rezulton" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ŝovu por ŝangi la ordon de la kurso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopii" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sendi al…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Malfermi forman tavolon" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Malfermi" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Baskuligi videblecon" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Kursa serĉado de GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Planado de kursoj kun publikaj transportiloj estas provizata\n" +"de eksteraj servoj.\n" +"GNOME ne povas garantii ĝustecon de la montrataj kursoj kaj planoj.\n" +"Rimarku, ke iuj provizantoj eble ne traktas ĉiujn specojn de transportado. " +"Ekzemple,\n" +"landa provizanto eble ne traktus aviadon, kaj loka liveranto eble ne traktus " +"regionajn\n" +"vagonarojn.\n" +"Nomojn kaj varmarkojn prezentatajn rigardu kiel registritajn posedaĵojn, " +"kiam tio taŭgas." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montri pli da rezultoj" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Kaŝi intermezajn staciojn kaj informojn" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Montri intermezajn staciojn kaj informojn" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Ekveturi nun" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Ekveturi je" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Alveni je" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Montri" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busoj" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramoj" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vagonaroj" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subtera fervojo" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Pramŝipoj" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviadiloj" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuala loko" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Precizeco: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zomu por aldoni lokon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zomi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Malsukcesis trovi kahelan strukturon en dosierujo" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Malsukcesis analizi la XML-dokumenton" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mankas bezonataj atributoj" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ne sukcesis trovi la OSM-elementon" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Vojo al loka kahela dosieruja strukturo" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Montri la version de la programo" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Malatenti atingeblecon de reto" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Elekti konton" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ŝarĝante" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Elekti lokon" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Facebook. Bonvole elektu unu " +"el ĉi tiu listo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Foursquare. Bonvole elektu " +"unu el ĉi tiu listo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prezentiĝi al %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skribi malnepran mesaĝon por prezentiĝi ĉe %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Eraro okazis" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne povis trovi na “%s” en la socia servo" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne trovis taŭgan lokon por prezentiĝi en tiu ĉi lokon" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"La salutiloj malvalidiĝis, bonvole lanĉu Enretajn Kontojn por saluti kaj " +"ebligi ĉi tiun konton" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Kurso ekde ĉi tie" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Aldoni alvenon" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Kurso ĝis ĉi tie" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Nenio trovita ĉi tie!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Loko estis aldonita al la mapo, rimarku ke ĝi povas preni momenton antaŭ ĝi " +"montras sur la mapo kaj en serĉrezultoj." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapoj ĉe %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosiersistemo estas nurlega" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vi ne havas la permeson por tie konservi" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La dosierujo ne ekzistas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Neniu dosiernomo specifita" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne eblas elporti la vidon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nevalida koordinato" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analizeraro" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nekonata geometrio" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Kurs-peto malsukcesis." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ne trovis kurson." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Ek!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Ĉiuj tavolaj dosieroj" + +#: src/mainWindow.js:446 +msgid "Failed to connect to location service" +msgstr "Malsukcesis konekti al loka servo" + +#: src/mainWindow.js:511 +msgid "translator-credits" +msgstr "" +"Ryan LORTIE\n" +"Kristjan SCHMIDT\n" +"Matthew CHISHOLM\n" +"Daniel PUENTES\n" +"Nicolas MAIA\n" +"Baptiste DARTHENAY\n" +"Carmen Bianca BAKKER \n" +"Tirifto " + +#: src/mainWindow.js:514 +msgid "A map application for GNOME" +msgstr "Mapa aplikaĵo por GNOME" + +#: src/mainWindow.js:525 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Kopirajto © 2011 – 2019 Red Hat, Inc. kaj la kontribuintoj de GNOME Maps" + +#: src/mainWindow.js:545 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapdatumoj de %s kaj kontribuantoj" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:561 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapajn kahelojn provizas %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:590 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Serĉo povigita de %s per %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dosiertipo ne estas subtenata" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Malsukcesis malfermi la tavolon" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Malsukcesis malfermi la Geo-URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Malkorekta uzantonomo aŭ pasvorto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sukceso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Malbona peto" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekto ne trovita" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikto, iu alia ĵus redaktis tiun objekton" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "La objekto estis forigita" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vojo aŭ rilato referencas al neekzistantaj idoj" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nomo" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "La oficiala nomo. Tio ĉi kutime aperas sur signoj." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreso" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Retejo" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La oficiala retejo. Provo uzi la plej bazan formon de URL t.e. http://" +"example.com anstataŭ http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefona numero. Uzu la internacian formon, komencantan kun la signo “+”. " +"Observu lokajn privatecajn leĝojn, precipe por privataj telefonaj numeroj." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedio" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"La uzata formo devus inkluzivi lingvan kodon kaj la artikolan titolon, kiel " +"“eo:artikola titolo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horoj de malfermo" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vidi la ligon en la etikedo por helpo sur formo." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Loĝantaro" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudo" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Alteco (alto super mara nivelo) de punkto per metroj." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rulseĝa aliro" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Jes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limigita" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Indikita" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interreta aliro" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sendrata" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Drata" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalo" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religio" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaismo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budaismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaismo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristanismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuceismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ĝajnismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Pluraj religioj" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologio" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Ŝintoismo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaria Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voduismo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratuŝtrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Necesejoj" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Noto" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informo uzota por sciigi nememkompreneblajn informojn al aliaj mapistoj pri " +"elemento, intenco de ĝia aŭtoro, aŭ helpiloj por plia plibonigado." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Elekti tipon" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Farite" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sennoma loko" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Loĝantaro:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Alto:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horoj de malfermo:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interreta aliro:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religio:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Necesejoj:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rulseĝa aliro:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Malsukcesis analizi Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limigita" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "indikita" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Loko ne troviĝis en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL de OpenStreetMap ne estas valida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatoj en URL ne estas validaj" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL ne estas subtenata" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s ĝis %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ŝarĝante maperojn por presado" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vi rajtas ĉesigi presadon se tro daŭras" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ĉesigi presadon" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aldoni per loko" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Forigi per loko" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Renversi kurson" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aldoni %s al %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Malsukcesis malfermi la URI" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Malfermi per %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "malsukcesis ŝarĝi la dosieron" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Antaŭkalkulita tempo: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Kursojn provizas %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Alveturi je %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Ek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Promeni %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Alveni je %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Alveni" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montri promenajn instrukciojn" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Kaŝi promenajn instrukciojn" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ŝargi antaŭajn alternativojn" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ŝargi postajn alternativojn" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Neniu antaŭa alternativo trovita." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Neniu posta alternativo trovita." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-e-a de %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Neniuj horaraj datumoj trovitaj por ĉi tiu kurso." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Neniu provizanto trovita por ĉi tiu kurso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutoj" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d horo" +msgstr[1] "%d horoj" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d horo" +msgstr[1] "%d:%02d horoj" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tuttaga" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de sunleviĝo ĝis sunsubiro" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ĉiutaga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "publikaj ferioj" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "lernejaj ferioj" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ne malfermita" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drata" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalo" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servo" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nekonata" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Preciza" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mej" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Daŭrigi je %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Daŭrigi" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turni maldekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Turni maldekstren" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turni maldekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Turni maldekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turni maldekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Turni maldekstren akre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turni dekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Turni dekstren" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turni dekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Turni dekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turni dekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Turni dekstren akre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iru el la rondirejo per eliro %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iru el la rondirejo per eliro al %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Iru la rondirejon" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Uzu la lifton kaj eliru je %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Uzu la lifton" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Turni maldekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Turni maldekstren reen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Turniĝu dekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1233 +#| msgid "Make a rigth u-turn" +msgid "Make a right u-turn" +msgstr "Turni dekstren reen" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Kursa serĉado de OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Malfermi per alia aplikaĵo" + +#~ msgid "Press enter to search" +#~ msgstr "Premu la enigan klavon por serĉi" + +#~ msgid "Quit" +#~ msgstr "Ĉesi" + +#~ msgid "Load Map Layer" +#~ msgstr "Ŝarĝi mapan tavolon" + +#~ msgid "Open Layer" +#~ msgstr "Malfermi tavolon" + +#~ msgid "OK" +#~ msgstr "En ordo" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f me" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Landkodo: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Laste-sciita loko kaj ekzakto" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Laste-sciita loko (latitudo kaj longitudo en gradoj) kaj ekzakto (en " +#~ "metroj)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Priskribo de laste sciita loko de la uzanto." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ĉu la laste sciatan lokon agordis permane la uzanto" + +#~ msgid "I’m here!" +#~ msgstr "Mi estas ĉi tie!" + +#~ msgid "Satellite" +#~ msgstr "Satelito" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..fc5c88df --- /dev/null +++ b/po/es.po @@ -0,0 +1,2092 @@ +# Spanish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# Daniel Mustieles , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-15 10:30+0100\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Spanish - Spain \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encuentre lugares por todo el mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas le ofrece un acceso rápido a mapas de todo el mundo. Le permite " +"encontrar lugares rápidamente buscando por ciudad o por calle, o buscar un " +"lugar para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa la base de datos colaborativa OpenStreetMap, hecha por cientos de " +"miles de personas de todo el mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"También puede buscar por tipos de ubicaciones específicos como «Bares cerca " +"de la Gran Vía, Madrid» u «Hoteles cerca de la Plaza Mayor, Madrid»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "El Proyecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una sencilla aplicación de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite mostrar su ubicación en el mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicación vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas de la última ubicación vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "El tipo de mapa que mostrar (callejero, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño de la ventana" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño de la ventana (anchura y altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición de la ventana" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición de la ventana (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ventana maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado maximizado de la ventana" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de búsqueda" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de búsqueda para búsquedas por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rutas visitadas recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidad del registro de Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última configuración de privacidad de registro de Facebook usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidad del registro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidad de registro de Foursquare usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nombre de usuario de OpenStreetMap o cuenta de correo-e" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si el usuario ha iniciado sesión para editar los datos de " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para la ruta" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo nocturno" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "indica si la aplicación está en modo nocturno." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usar cuadrículas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica si las cuadrículas aéreas se deben usar con un estilo híbrido (con " +"etiquetas)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidad" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar el Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar el Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Registrar" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo yo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Añadir destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta hasta aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "¿Qué hay aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar ubicación" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir ruta y marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Elegir el tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Reducir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Conmutar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atajos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Salir" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reducir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Conmutar escalado" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Cambiar a vista de calle" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Cambiar a vista aérea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir capa de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir capa de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicios de ubicación para encontrar su posición" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configuración de la ubicación" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo nocturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar cuenta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagen" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atajos del teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca de Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necesita una conexión a Internet activa para funcionar correctamente, " +"pero no se ha encontrado ninguna." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Compruebe la configuración de su conexión y de su proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cuenta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ayude a mejorar el mapa, usando una\n" +"cuenta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo-e" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contraseña" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Eso no ha funcionado. Inténtelo de nuevo o visite\n" +"OpenStreetMap para restablecer su contraseña." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El código de verificación no coincide, inténtelo de nuevo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduzca el código de verificación mostrado" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Su cuenta de OpenStreetMap está activada." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Cerrar sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Calle" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciudad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ninguno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Añadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Los cambios en los mapas serán visibles en todos los mapas que usen\n" +"datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recientemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Siguiente" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No se han encontrado resultados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Ha ocurrido un error" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastre para cambiar el orden de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir ubicación" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Registrar…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir capa de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Conmutar estado visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta buscada por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itinerarios de las rutas para viajes públicos los proporciona\n" +"un servicio de terceros.\n" +"GNOME no puede garantizar la corrección de los itinerarios y los tiempos " +"mostrados.\n" +"Algunos proveedores pueden no incluir todos mos medios de transporte " +"disponibles,\n" +"ej. un proveedor nacional puede no incluir aerolíneas y un proveedor local " +"puede\n" +"no incluir trenes regionales.\n" +"Los nombres y las marcas mostradas se consideran marcas registradas cuando " +"sea aplicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar más resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar información y paradas intermedias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar información y paradas intermedias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Salir ahora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Salir en" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Llegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenes" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviones" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Compartir ubicación" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Añadir a la ruta nueva" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direcciones" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para añadir una ubicación." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falló al buscar la estructura de la cuadrícula en la carpeta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falló al analizar el documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan los atributos necesarios" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No se pudo encontrar el elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Una ruta a la estructura de carpetas locales de cuadrículas" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tamaño de cuadrícula para carpeta de cuadrículas locales" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostrar la versión del programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar la disponibilidad de la red" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ARCHIVO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un lugar" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Facebook. " +"Seleccione uno de la lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Foursquare. " +"Seleccione uno de la lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Registrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensaje opcional para registrarse en %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No se puede encontrar «%s» en la red social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede encontrar un lugar adecuado para registrarse en esta ubicación" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las credenciales han caducado. Abra las Cuentas en línea para iniciar sesión " +"y activar esta cuenta." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No se ha encontrado nada aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Se ha añadido la ubicación al mapa, tenga en cuenta que puede tardar un rato " +"antes de mostrarse en el mapa y en los resultados de búsqueda." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de archivos es de solo lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tiene permisos para guardar ahí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La carpeta no existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No se ha especificado un nombre de archivo" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No se puede exportar la vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ubicación actual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada no válida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error al analizar" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometría desconocida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Falló al solicitar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No se ha encontrado la ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Empezar" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos los archivos de capas" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Falló al conectar al servicio de ubicación" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Daniel Mustieles , 2013 - 2020" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas para GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. y los autores de Mapas de GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos de mapas por %s y colaboradores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Cuadrículas de mapas proporcionadas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Búsqueda proporcionada por %s usando %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Falló al abrir la capa" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "¿Quiere continuar?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Va a abrir archivos con un total de %s MB. Esto puede tardar bastante tiempo " +"en cargar" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Tipo de archivo no soportado" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Falló al abrir el GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nombre de usuario o contraseña no válidos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Correcto" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitud incorrecta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto no encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguien acaba de modificar el objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Se ha eliminado el objeto" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La vía o la relación se refiere a hijos no existentes" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nombre" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "El nombre oficial. Esto es lo que normalmente aparece en las firmas." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Dirección" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Página web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Esto no es un URL válido. asegúrese de incluir http:// o https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La página web oficial. Pruebe a usar la forma más sencilla de URL, por " +"ejemplo http://ejemplo.com en lugar de of http://ejemplo.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use el formato internacional, empezando por el signo +. " +"Tenga en cuenta las leyes de privacidad locales, especialmente en el caso de " +"números privados." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El formato usado debe incluir el código del idioma y el título del artículo, " +"similar a «es:Título del artículo»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Horario de apertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Consulte el enlace en la etiqueta para obtener ayuda sobre el formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Población" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre el nivel del mar) de un punto, en metros." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Acceso para sillas de ruedas" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Acceso a Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Inalámbrica" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Cableada" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servicio" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religión" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Varias religiones" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarismo" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Cienciología" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sijismo" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarismo universalista" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para notificar a otros mapeadores sobre información no " +"obvia sobre un elemento, un intento del autor de crearlo o pistas sobre " +"futuras mejoras." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleccionar tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Hecho" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Lugar sin nombre" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falló al analizar el URI de Geo" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Precisión" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Número de teléfono" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Acceso público a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Sin acceso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Red Wi-Fi pública" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Acceso a Internet por cable" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Ordenadores disponibles para su uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Asistencia de Internet disponible" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Sin baños disponibles" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Baños disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accesible para sillas de ruedas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accesibilidad limitada para sillas de ruedas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Sin acceso para sillas de ruedas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Diseñador para usuarios de sillas de ruedas" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religión:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar no encontrado en OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Las coordenadas del URL no son válidas" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL no soportado" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando mapa para imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puede cancelar la impresión si esto tarda mucho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Cancelar la impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Añadir ubicación de la vía" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar ubicación de la vía" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Añadir %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falló al abrir el URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falló al cargar el archivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimado: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios proporcionados por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Empezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Llegar a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Llegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucciones del camino" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucciones del camino" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No hay alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No hay alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No hay datos en la tabla de tiempos para esta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No se ha encontrado un proveedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Todo el día" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Desde el amanecer hasta la puesta del sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Festivos" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Vacaciones escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "cerrado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconocida" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este complemento no soporta la última llegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continúe por %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continúe" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gire a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Gire a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gire levemente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Gire levemente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gire bruscamente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Gire bruscamente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gire a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Gire a la derecha" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gire levemente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Gire levemente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gire bruscamente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Gire bruscamente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "En la rotonda, coja la salida %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "En la rotonda, coja la salida hacia %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Entre en la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Coja el ascensor y salga en %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Coja el ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Dé la vuelta hacia la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Dé la vuelta hacia la izquierda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Dé la vuelta hacia la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Dé la vuelta hacia la derecha" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "El URL de OpenStreetMap no es válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Buscar una ruta" + +#~ msgid "Check in here" +#~ msgstr "Registrarse aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostrar más información" + +#~ msgid "Population:" +#~ msgstr "Población:" + +#~ msgid "Altitude:" +#~ msgstr "Altitud:" + +#~ msgid "Opening hours:" +#~ msgstr "Horario de apertura:" + +#~ msgid "Internet access:" +#~ msgstr "Acceso a Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Baño:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acceso para sillas de ruedas:" + +#~ msgid "Phone:" +#~ msgstr "Teléfono:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "wired" +#~ msgstr "cableada" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servicio" + +#~ msgid "Primary menu" +#~ msgstr "Menú primario" + +#~ msgid "Don’t have an account?" +#~ msgstr "¿No tiene una cuenta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Añadir destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta buscada por OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Abrir con otra aplicación" + +#~ msgid "Press enter to search" +#~ msgstr "Pulse Intro para buscar" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Salir" + +#~ msgid "OK" +#~ msgstr "Aceptar" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abrir capa de formas…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar capa de mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir capa" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pies" + +#~ msgid "Position not found" +#~ msgstr "Posición no encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código del país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Población: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acceso para sillas de ruedas: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falló al analizar el archivo GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Compartir" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última ubicación conocida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última ubicación conocida (latitud y longitud en grados) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción de la última ubicación conocida del usuario." + +#~ msgid "User set last known location" +#~ msgstr "Última ubicación conocida establecida por el usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si la última ubicación conocida la estableció el usuario " +#~ "manualmente." + +#~ msgid "I’m here!" +#~ msgstr "Yo estoy aquí" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "From" +#~ msgstr "Desde" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/et.po b/po/et.po new file mode 100644 index 00000000..13982e71 --- /dev/null +++ b/po/et.po @@ -0,0 +1,148 @@ +# Estonian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mattias Põldaru , 2013, +# Priit Laes , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-11 10:56+0000\n" +"PO-Revision-Date: 2013-09-20 10:20+0300\n" +"Last-Translator: Priit Laes \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaardirakendus võimaldab kiiret ligipääsu kaartidele üle terve maailma. " +"See võimaldab kiiresti leida otsitava koha kasutades linna- või tänavanime, või" +"määrata kohta sõbraga kokkusaamiseks." + +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" +"
  • Otsi riiki, regiooni, linna või tänavat.
  • Otsi erinevat liiki " +"asukohti nagu \"Pubs near Main Street, Boston\" või \"WiFi Access near " +"Alexanderplatz, Berlin\"
  • " + +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaardid kasutavad ühistööna valminud OpenStreetMap andmebaasi, millele on " +"kaasa aidanud tuhanded inimesed üle maailma." + +#. Translators: This is the program name. +msgid "Maps" +msgstr "Kaardid" + +msgid "A simple maps application" +msgstr "Lihtne kaardirakendus" + +msgid "Maps;" +msgstr "Kaardid;Kaart;" + +msgid "Window size" +msgstr "Akna suurus" + +msgid "Window size (width and height)." +msgstr "Akna suurus (laius ja kõrgus)." + +msgid "Window position" +msgstr "Akna asukoht" + +msgid "Window position (x and y)." +msgstr "Akna asukoht (x ja y)." + +msgid "Window maximized" +msgstr "Aken on maksimeeritud" + +msgid "Window maximized state" +msgstr "Akna maksimeerituse olek" + +msgid "Last known location and accuracy" +msgstr "Viimane teadaolev asukoht ja täpsus" + +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Viimane teadaolev asukoht (laius- ja pikkuskraadid) ning täpsus (meetrites)." + +msgid "Description of last known location" +msgstr "Viimase teadaoleva asukoha kirjeldus" + +msgid "Description of last known location of user." +msgstr "Kasutaja viimase teadaoleva asukoha kirjeldus." + +msgid "Maximum number of search results" +msgstr "Otsingutulemuste maksimaalne arv" + +msgid "Maximum number of search results from geocode search." +msgstr "Geokoodi otsingu tulemuste maksimaalne arv." + +msgid "User set last known location" +msgstr "Kasutaja määratud viimane teadaolev asukoht" + +msgid "Last known location was set manually by user." +msgstr "Kasutaja poolt käsitsi määratud viimane teadaolev asukoht." + +msgid "About" +msgstr "Programmist" + +msgid "Quit" +msgstr "Lõpeta" + +msgid "What's here?" +msgstr "Mis siin on?" + +msgid "I'm here!" +msgstr "Mina olen siin!" + +msgid "translator-credits" +msgstr "Mattias Põldaru, 2013,\nPriit Laes, 2013" + +msgid "A map application for GNOME" +msgstr "GNOME kaardirakendus" + +msgid "Street" +msgstr "Tänav" + +msgid "Satellite" +msgstr "Satelliit" + +#. Translators: Accuracy of user location information +msgid "Unknown" +msgstr "Teadmata" + +#. Translators: Accuracy of user location information +msgid "Exact" +msgstr "Täpne" + +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Asukoha täpsus: %s" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 00000000..401e3b8d --- /dev/null +++ b/po/eu.po @@ -0,0 +1,2016 @@ +# Basque translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Iñaki Larrañaga Murgoitio , 2013, 2014, 2015, 2016, 2017. +# Asier Sarasua Garmendia , 2019, 2020, 2021. +# +msgid "" +msgstr "Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-23 10:00+0100\n" +"Last-Translator: Asier Sarasua Garmendia \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapak" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Bilatu lekuak munduan zehar" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Mapek mundu osoan zeharreko mapetarako atzipen azkarra eskaintzen dizu. Bilatzen ari zaren lekua modu azkar batean aurkitzen lagunduko dizu kalearen edo herriaren izena bilatuz, edo bilatu leku bat lagunekin aurkitzeko." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Mapak auzolanean eraikitako OpenStreetMap datu-basea darabil, mundu osoan zehar ehun eta milaka pertsonen artean sortutakoa" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "Bilatu kokaleku mota zehatz bat, adibidez 'Diru-truke bulegoa, Bilbo' edo 'Hotelak kale nagusia, Bilbo'" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME proiektua" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapak" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Mapen aplikazio xume bat" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapak;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Zure kokalekua maparen gainean erakustea baimentzen du." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ikusitako azken kokalekua" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ikusitako azken kokalekuaren koordenatuak." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zooma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaren maila" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Mapa mota" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Bistaratuko den mapa mota (kalekoa, airekoa eta abar)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Leihoaren tamaina" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Leihoaren tamaina (zabalera eta altuera)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Leihoaren posizioa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Leihoaren posizioa (X eta Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Leihoa maximizatuta" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Leihoaren maximizazioaren egoera" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilaketaren emaitzen gehieneko kopurua" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilaketaren emaitzen gehieneko kopurua geokodifikazioaren bilaketatik." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Azken aldiko lekuen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Azken aldian bisitatutako lekuen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Azken aldiko ibilbideen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Azken aldian bisitatutako ibilbideen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-en erregistroaren pribatutasunaren ezarpena" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "Facebook-en erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'EVERYONE' (edonor), 'FRIENDS_OF_FRIENDS' (lagunen lagunak), 'ALL_FRIENDS' (lagun guztiak) edo 'SELF' (norbera)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-ren erregistroaren pribatutasunaren ezarpena" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "Foursquare-ren erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'public' (publikoa), 'followers' (jarraitzaileak) edo 'private' (pribatua)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-ren erregistroaren Facebook-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Facebook-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-ren erregistroaren Twitter-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Twitter-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-eko erabiltzaile-izena edo helbide elektronikoa" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "OpenStreetMap-eko datuak editatzeko erabiltzaileak sinatu duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Erabilitako azken garraio mota bidea egiteko" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Gaueko modua" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Aplikazioa gaueko moduan dagoen edo ez." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Erabili aireko lauza hibridoak" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Aireko lauzek estilo hibridoa (etiketekin) erabiliko duten ala ez." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ikusgaitasuna" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Argitaratu Facebook-en" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Argitaratu Twitter-en" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Utzi" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Erregistratu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Edonor" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Lagunen lagunak" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Lagunak soilik" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nik bakarrik" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publikoa" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Pribatua" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ibilbidea hemendik" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Gehitu tarteko helmuga" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ibilbidea hona" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Zer dago hemen?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiatu kokalekua" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esportatu ikuspegia" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esportatu" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Txertatu ibilbidea eta markatzaileak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Aukeratu mapa mota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Txikiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Handiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Txandakatu gogokoak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Orokorra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Erakutsi lasterbideak" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Bilatu" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Irten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Maparen ikuspegia" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Handiagotu" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Txikiagotu" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Txandakatu eskala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Aldatu kaleen ikuspegira" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Aldatu aireko ikuspegira" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ireki formen geruza" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Erakutsi etiketak" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ireki formen geruza…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Aktibatu kokapen-zerbitzuak zure kokapena aurkitzeko" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Utzi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Kokapenaren ezarpenak" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gauko modua" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfiguratu OpenStreetMap-eko kontua" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esportatu irudi gisa" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Las_ter-teklak" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Mapak aplikazioari buruz" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapa lineaz kanpo dago!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapak interneteko konexio aktiboa behar du ongi funtzionatzeko, baina ez da bat ere aurkitu." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Egiaztatu konexioaren eta proxyaren ezarpenak." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-eko kontua" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Hasi saioa mapak editatzeko" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "Lagundu mapa hobetzen\n" +"OpenStreetMap-eko kontu bat erabiliz." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Posta elektronikoa" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasahitza" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Erregistratu" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Hasi saioa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "Ez du funtzionatzen. Saiatu berriro, edo bisitatu\n" +"OpenStreetMap zure pasahitza berrezartzeko." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Egiaztapen-kodea ez dator bat, saiatu berriro." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sartu goian erakutsitako egiaztapen-kodea" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Egiaztatu" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Saioa hasita" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Zure OpenStreetMap-eko kontua aktibo dago." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Amaitu saioa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Kalea" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Zenbakia" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta-kodea" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Hiria" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Mota" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Bat ere ez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Gehitu eremua" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Iruzkina" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "Mapen aldaketak ikusgai egongo dira OpenStreetMap-eko\n" +"datuak erabiltzen dituzten mapa guztietan." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Azken aldian erabilia" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Hurrengoa" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ez da emaitzarik aurkitu" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Errore bat gertatu da" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastatu ibilbidearen ordena aldatzeko" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ireki kokalekua" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiatu" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Bidali hona…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Eregistratu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ireki formen geruza" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ireki" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Txandakatu ikusgaitasuna" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ibilbidea GraphHopper-ek bilatuta" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "Ibilbide publikoen bideak hirugarrenek eskaintzen dituzte.\n" +"GNOMEk ezin du bermatu erakutsitako ibilbideen eta ordutegien zuzentasuna.\n" +"Kontuan izan zenbait hornitzailek ez dituztela garraio modu guztiak kontuan hartzen, adibidez nazio mailako hornitzaile batek beharbada ez ditu hegaldiak kontuan hartzen, eta hornitzaile lokal batek agian ez ditu eskualde mailako trenak erakusten.\n" +"Erakutsitako izenak eta markak erregistratutako marka gisa hartuko dira dagokienenean." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Erakutsi emaitza gehiago" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ezkutatu bitarteko puntuak eta informazioak" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Erakutsi bitarteko puntuak eta informazioak" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Irten orain" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Irten:" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Iritsi:" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Erakutsi" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusak" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranbia" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenak" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metroak" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferryak" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Hegazkinak" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Partekatu kokalekua" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Gehitu ibilbide berriari" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Norabideak" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markatu gogoko gisa" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Handiagotu zooma kokalekua gehitzeko!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Handiagotu" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Huts egin du lauzaren egitura direktorioan bilatzean" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Huts egin du XML dokumentua aztertzean" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Beharrezko atributuak falta dira" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ezin izan da OSM elementua aurkitu" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Lokaleko lauzen direktorioaren egituraren bide-izena" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Lokaleko lauzen direktorioaren lauza-tamaina" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Erakutsi programaren bertsioa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ezikusi egin sarearen erabilgarritasunari" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FITXATEGIA…|URIA]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Hautatu kontua" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Kargatzen" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Hautatu lekua" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Facebook-ekin erregistratzeko. Hautatu bat zerrendatik." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Foursquare-rekin erregistratzeko Hautatu bat zerrendatik." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s(e)n erregistratzen" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Idatzi aukerako mezua '%s'(e)n erregistratzeko." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ezin da “%s” aurkitu zerbitzu sozialean" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ezin da leku egokirik aurkitu kokaleku honetan erregistratzeko" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "Kredentzialak iraungi egin dira. Ireki 'Lineako kontuak' kontu hau sinatzeko eta gaitzeko" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ez da ezer aurkitu." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "Kokalekua mapari gehitu zaio. Jakin ezazu denbora bat igaroko dela mapetan eta bilaketen emaitzetan erakutsi aurretik." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapak hemen: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Fitxategi-sistema irakurtzeko soilik da" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ez duzu baimenik han gordetzeko" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorioa ez da existitzen" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ez da fitxategi-izenik zehaztu" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ezin da ikuspegia esportatu" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Uneko kokalekua" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "baliogabeko koordenatua" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analisi-errorea" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria ezezaguna" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Huts egin du ibilbidearen eskaerak." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ez da ibilbiderik aurkitu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Hasi!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Geruzen fitxategi guztiak" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Huts egin du kokapen-zerbitzuarekin konektatzean" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "translator-credits" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "GNOMEren mapen aplikazioa" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. eta The GNOME Maps egileak" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Maparen datuen sortzaileak: %s eta laguntzaileak" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa-lauzen hornitzaileak: %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s motorrak hornitutako bilaketa %s bidez" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Huts egin du geruza irekitzean" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Jarraitu nahi duzu?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Guztira %s MB dituzten fitxategiak irekitzera zoaz. Horrek denbora bat beharko du" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Fitxategi mota ez dago onartuta" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Huts egin du GeoURIa irekitzean" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Ongi burutu da" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Eskaera okerra" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektua ez da aurkitu" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Gatazka, beste norbaitek objektua aldatu du" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektua ezabatua izan da" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Bideak edo erlazioak ez dauden umeei egiten diote erreferentzia" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Izena" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Izen ofiziala. Saioa hastean agertu ohi izaten da." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Helbidea" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Webgunea" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "URLa ez da baliozkoa. Ziurtatu http:// edo https:// gehitzen diozula." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "Webgune ofiziala. Saiatu URL baten oinarrizko modua erabiltzen. Adib. http://example.com erabili http://example.com/index.html URLaren ordez." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefonoa" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "Telefono zenbakia. Erabili nazioarteko formatua, + ikurrarekin hasiz. Kontutan eduki pribatutasunari buruzko bertako legeak, telefono zenbaki pribatuei dagokiena bereziki." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Erabilitako formatuak hizkuntzaren kodea eta artikuluaren titulua ”eu:Artikuluaren titulua\" gisa eduki beharko lituzke." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Irekiera orduak" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Ikusi esteka etiketan formatua ematean laguntzeko." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populazioa" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitudea" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Puntu baten elebazioa (itsas-mailaren gaineko altuera) metrotan." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Gurpil-aulkien irisgarritasuna" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Bai" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Ez" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Mugatua" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Izendatuta" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Interneterako sarbidea" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wifia" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Hariduna" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminala" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Zerbitzua" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Erlijioa" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animismoa" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budismoa" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaismoa" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kristautasuna" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfuzianismoa" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduismoa" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainismoa" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaismoa" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islama" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Hainbat erlijio" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganismoa" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianismoa" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Zientziologia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhismoa" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Espiritualismoa" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoismoa" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarismo unibertsalista" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidismoa" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianismoa" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Komunak" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Oharra" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Mapen beste sortzaileei elementu bati buruzko hain garbia ez den informazioari buruz, egilearen asmoa hura sortzean edo argibideak hobekuntza gehiagorako jakinarazteko informazioa." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Hautatu mota" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Eginda" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Izenik gabeko tokia" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Huts egin du Geo URIa aztertzean" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordenatuak" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Zehaztasuna" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Zehaztasuna: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefono-zenbakia" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Interneteko sarbide publikoa" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ez dago interneteko sarbiderik" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wifi publikoa" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Interneteko haridun sarbidea" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Erabilgarri dauden ordenagailuak" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internet laguntza erabilgarri" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Ez dago komunik erabilgarri" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Komunak erabilgarri" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Gurpil-aulkientzat irisgarri" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Gurpil-aulkien irisgarritasun mugatua" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Ez da gurpil-aulkientzat irisgarri" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Gurpil-aulkien erabiltzaileentzako prestatua" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Erlijioa:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap zerbitzuan aurkitu ez den tokia" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URLaren koordenatuak ez dira baliozkoak" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URLa ez da onartzen" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "“%s”(e)ndik “%s”(e)ra" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Mapen lauzak inprimatzeko kargatzen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Inprimatzea bertan behera utz dezakezu denbora gehiegi badarama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Utzi inprimatzea bertan behera" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Gehitu bidearen kokalekua" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Kendu bidearen kokalekua" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Alderantzikatu ibilbidea" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Gehitu %s honi: %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Huts egin du URIa irekitzean" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Ireki honekin: %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "huts egin du fitxategia kargatzean" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Aurreikusitako denbora: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ibilbideen hornitzailea: %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Hasiera: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Hasiera" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Oinez: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Iritsi: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Iritsi" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Erakutsi oinezkoen instrukzioak" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ezkutatu oinezkoen instrukzioak" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Kargatu alternatibak lehenago" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Kargatu alternatibak geroago" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ez da aurreragoko ordezkorik aurkitu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ez da ondorengoko ordezkorik aurkitu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ez da ordutegiaren daturik aurkitu ibilbide honetan." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ez da hornitzailerik aurkitu ibilbide honetarako." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "minutu %s" +msgstr[1] "%s minutu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "ordu %s" +msgstr[1] "%s ordu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ordu" +msgstr[1] "%s:%s ordu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Egun osoan" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Egunsentitik ilunabarrera" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Egunero" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Jaiegunak" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Eskolako jaiegunak" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ez ireki" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ezezaguna" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Zehatza" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Plugin honek ez du onartzen azken iritsiera" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Jarraitu hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Jarraitu" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Biratu ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Biratu ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Biratu pixka bat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Biratu pixka bat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Biratu erabat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Biratu erabat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Biratu eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Biratu eskuinera" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Biratu pixka bat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Biratu pixka bat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Biratu erabat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Biratu erabat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Biribilgunean, hartu %s irteera" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Biribilgunean, hartu %s helbidera joateko irteera" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Hartu biribilgunea" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Hartu igogailua eta utzi hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Hartu igogailua" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Aldatu noranzkoa ezkerrerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Aldatu noranzkoa ezkerrerantz" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Aldatu noranzkoa eskuinerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Aldatu noranzkoa eskuinerantz" + +#~ msgid "Find a Route" +#~ msgstr "Bilatu ibilbide bat" + +#~ msgid "Check in here" +#~ msgstr "Erregistratu hemen" + +#~ msgid "Show more information" +#~ msgstr "Erakutsi informazio gehiago" + +#~ msgid "Population:" +#~ msgstr "Populazioa:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudea:" + +#~ msgid "Opening hours:" +#~ msgstr "Irekiera orduak:" + +#~ msgid "Internet access:" +#~ msgstr "Interneterako sarbidea:" + +#~ msgid "Toilets:" +#~ msgstr "Komunak:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Gurpil-aulkien irisgarritasuna:" + +#~ msgid "Phone:" +#~ msgstr "Telefonoa:" + +#~ msgid "yes" +#~ msgstr "bai" + +#~ msgid "limited" +#~ msgstr "mugatua" + +#~ msgid "no" +#~ msgstr "ez" + +#~ msgid "designated" +#~ msgstr "zehaztutakoa" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URLa ez da baliozkoa" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "hariduna" + +#~ msgid "terminal" +#~ msgstr "terminala" + +#~ msgid "service" +#~ msgstr "zerbitzua" + +#~ msgid "Primary menu" +#~ msgstr "Menu nagusia" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ez daukazu konturik?" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Gehitu helmuga" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "ibilbidea OpenTripPlanner-ek bilatuta" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Ireki beste aplikazio batekin" + +#~ msgid "Press enter to search" +#~ msgstr "Sakatu Sartu bilatzeko" + +#~ msgid "Quit" +#~ msgstr "Irten" + +#~ msgid "Load Map Layer" +#~ msgstr "Kargatu maparen geruza" + +#~ msgid "Open Layer" +#~ msgstr "Ireki geruza" + +#~ msgid "OK" +#~ msgstr "Ados" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f oin" + +#~ msgid "Country code: %s" +#~ msgstr "Estatuaren kodea: %s" + +#~ msgid "_Share" +#~ msgstr "_Partekatu" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Azken kokaleku ezaguna eta zehaztasuna" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Azken kokaleku ezaguna (latitudea eta longitudea gradutan) eta " +#~ "zehaztasuna (metrotan)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Erabiltzailearen azken kokaleku ezagunaren azalpena." + +#~ msgid "User set last known location" +#~ msgstr "Erabiltzaileak ezarritako azken kokaleku ezaguna" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Azken kokaleku ezaguna erabiltzaileak eskuz ezarri zuen edo ez." + +#~ msgid "I’m here!" +#~ msgstr "Hemen nago!" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "Nora" + +#~ msgid "From" +#~ msgstr "Nondik" + +#~ msgid "Satellite" +#~ msgstr "Satelitea" + +#~ msgid " km²" +#~ msgstr " km²" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 00000000..e5811960 --- /dev/null +++ b/po/fa.po @@ -0,0 +1,2009 @@ +# Persian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Arash Mousavi , 2013-2016. +# Danial Behzadi , 2014, 2017-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-10 15:07+0000\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "نقشه‌های گنوم" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "یافتن مکان‌ها در هر جایی از جهان" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, or " +"locate a place to meet a friend." +msgstr "" +"نقشه‌ها دسترسی سریعی به نقشه‌ها در تمام جهان را می‌دهد. این برنامه می‌گذارد با جست‌وجو " +"برای یک شهر یا خیابان، مکانی را که به دنبالشید یافته یا مکانی را برای قرار مشخّص " +"کنید." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands " +"of people across the globe." +msgstr "" +"نقشه‌ها از پایگاه دادهٔ مشارکتی OpenStreetMap استفاده می‌کند که به دست صدها هزار نفر " +"در سراسر جهان درست شده است." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"حتا می‌توانید گونه‌های خاصی از موقعیت‌ها را، مثل «Pubs near Main Street, Boston» یا " +"«WiFi Access near Alexanderplatz, Berlin» جست‌وجو کنید." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "پروژهٔ گنوم" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 src/application.js:94 +#: src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "نقشه‌ها" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "یک برنامهٔ ساده نقشه" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "نقشه;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "اجازهٔ نمایش موقعیتتان روی نقشه." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "آخرین موقعیت دیده شده" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "مختصات آخرین موقعیت سر زده." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "سطح بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "گونهٔ نقشه" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "گونهٔ نمایشی نقشه (خیابانی، هوایی و…)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "اندازهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "اندازهٔ پنجره (پهنا و بلندا)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "موقعیت پنجره" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "موقعیت پنجره (x و y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "پنجره بیشینه شد" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "وضعیت بیشینهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "بیشینهٔ تعداد نتایج جست‌وجو" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "بیشینهٔ تعداد نتایج جست‌وجو از طریق جست‌وجوی کد جغرافیایی." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "تعداد مکان‌های اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "تعداد مکان‌های اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "تعداد مسیرهای اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "تعداد مسیرهای اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فیس‌بوک" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فیس‌بوک. مقادیر مجاز عبارتند از: " +"EVERYONE، FRIENDS_OF_FRIENDS، ALL_FRIENDS و SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فوراسکور" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, " +"followers or private." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فوراسکور. مقادیر مجاز عبارتند از: " +"public، followers یا private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "اعلام حضور در فوراسکور و انتشار در فیس‌بوک" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک فرسته در حساب فیس‌بوک " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "اعلام حضور فوراسکور و انتشار در توییتر" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک توییت در حساب توییتر " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "نام‌کاربری یا نشانی رایانامهٔ OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "مشخّص می‌کند که آیا کاربر برای ویرایش داده‌های OpenStreetMap وارد شده یا نه." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "آخرین گونهٔ حمل‌ونقل برای مسیریابی" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "حالت شب" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "این که برنامه در حالت شب است یا نه." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "استفاده از کاشی‌های هوایی پیوندی" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "این که کاشی‌های هوایی باید از سبک پیوندی (با برچسب‌ها) استفاده کنند یا نه." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "نمایانی" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "فرستادن به فیس‌بوک" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "فرستادن به توییتر" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_لغو" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "اعلام _حضور" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "همه" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "دوستانِ دوستان" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "فقط دوستان" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "فقط خودم" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "عمومی" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "پیروان" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "خصوصی" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "مسیر از این‌جا" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "افزودن مقصد میانی" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "مسیر به این‌جا" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "این‌جا چیست؟" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "رونوشت موقعیت" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "نمای برون‌ریزی" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_برون‌ریزی" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "شامل مسیر و علائم شدن" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "گزینش گونهٔ نقشه" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "بزرگنمایی به خارج" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "تغییر وضعیت برگزیده‌ها" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "عمومی" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "نمایش میان‌برها" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "جست‌وجو" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "خروج" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "نمای نقشه" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بزرگ‌نمایی به خارج" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "تغییر وضعیت مقیاس" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "تعویض به نمای خیابانی" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "تعویض به نمای هوایی" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "نمایش برچسب‌ها" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "گشودن لایهٔ شکل…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "روشن کردن خدمات مکانی برای یافتن موقعیتتان" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "لغو" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "تنظیمات موقعیت" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "حالت شب" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "برپاسازی حساب OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "برون‌ریزی به عنوان عکس" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "میان‌برهای _صفحه‌کلید" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "دربارهٔ نقشه‌ها" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "نقشه‌ها برون‌خط است!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t be " +"found." +msgstr "نقشه‌ها برای عملکرد صحیح نیاز به اینترنت دارد." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "تنظیمات پیشکار و اتّصالتان را بررسی کنید." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "حساب OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "ورود به ویرایش نقشه‌ها" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"با استفاده از یک حساب OpenStreetMap\n" +"به گسترش نقشه کمک کنید." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "رایانامه" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "گذرواژه" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ثبت‌نام" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ورود" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap " +"to reset your password." +msgstr "" +"متأسّفانه تأثیری نداشت. لطفا دوباره تلاش کرده یا برای\n" +"باز نشانی گذرواژه‌تان به OpenStreetMap سر بزنید." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "کد تأیید مطابق نبود، لطفاً دوباره بیازمایید." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "کد تأیید بالا را وارد کنید" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "تأیید" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "وارد شده" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "حساب OpenStreetMapتان فعّال است." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "خروج" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "خیابان" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "پلاک خانه" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "کد پستی" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "شهر" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "گونه" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "هیچ‌کدام" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "افزودن زمینه" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "توضیح" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"تغییرات نقشه در تمام نقشه‌هایی که از داده‌های\n" +"اوپن‌استریت‌مپ استفاده می‌کنند قابل مشاهده است." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "به‌تازگی استفاده شده" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "بعدی" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "هیچ نتیجه‌ای پیدا نشد" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "خطایی رخ داد" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "برای تغییر ترتیب مسیر بکشید" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "رونوشت" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "فرستادن به…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "اعلام حضور…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_گشودن" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "تغییر وضعیت نمایانی" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "جست‌وجوی مسیر به دست GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسیریابی برنامهٔ سفر برای حمل‌ونقل عمومی به دست خدمات ثالث فراهم شده است.\n" +"گنوم نمی‌تواند درستی برنامهٔ سفر و زمان‌بندی‌های نمایش داده‌شده را تصمین کند.\n" +"به خاطر داشته باشید که ممکن است برخی فراهم‌کنندگان، تمام حالت‌های موجود برای\n" +"حمل‌ونقل را نداشته باشند. مثلاً ممکن است یک فراهم‌کنندهٔ ملّی، خطوط هوایی را نداشته\n" +"باشد و یک فراهم‌کنندهٔ محلّی می‌تواند قطارهای منطقه‌ای را نشان ندهد.\n" +"نام‌ها و برندهای نمایش‌داده‌شده باید هنگام امکان به عنوان علایم تجاری در نظر گرفته " +"شوند." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "نمایش نتایج بیش‌تر" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "نهفتن اطّلاعات و توقّف‌های میانی" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "نمایش اطّلاعات و توقّف‌های میانی" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "اکنون خارج شوید" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "شروع حرکت از" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "رسیدن به مقصد از" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "نمایش" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "اتوبوس‌ها" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ترامواها" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "قطارها" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "مترو" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "قایق‌ها" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "هواپیماها" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "هم‌رسانی موقعیت" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "افزودن به مسیر جدید" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "مسیرها" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "علامت‌گذاری به عنوان برگزیده" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "برای افزودن موقعیت، بزرگ‌نمایی کنید!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "بزرگ‌نمایی به داخل" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "شکست در یافتن ساختار کاشی در شاخه" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "شکست در تجزیهٔ سند XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ویژگی‌های لازم وجود ندارند" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "ناتوان در یافتن عنصر OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "مسیری به ساختار شاخهٔ کاشی‌های محلّی" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "اندازهٔ شاخهٔ کاشی‌های محلّی" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "نمایش نگارش برنامه" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "نادیده گرفتن موجود بودن شبکه" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "گزینش یک حساب" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "در حال بار کردن" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "گزینش یک موقعیت" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فیس‌بوک بیابد. لطفاً موقعیتی را از فهرست " +"برگزینید." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فوراسکور بیابد. لطفاً موقعیتی را از " +"فهرست برگزینید." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "اعلام حضور در %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "نوشتن اختیاری پیامی برای اعلام حضور در %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "نمی‌توان «%s» را در خدمت اجتماعی یافت" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "نمی‌توان مکانی مناسب برای اعلام حضور در این موقعیت یافت" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable this " +"account" +msgstr "" +"اعتبارنامه‌ها منقضی شده‌اند. لطفاً برای ورود و به کار انداختن این حساب، حساب‌های برخط " +"را بگشایید" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "این‌جا چیزی پیدا نشد!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows on " +"the map and in search results." +msgstr "" +"موقعیت به نقشه اضافه شد. خواستان باشد که نمایشش در نقشه و نتایج جست‌وجو، ممکن است " +"کمی طول بکشد." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "نقشه‌ها در %If، %If.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "سامانه‌پرونده فقط-خواندنی است" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "برای ذخیره در آن‌جا دسترسی ندارید" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "شاخه وجود ندارد" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "نامی برای پرونده مشخّص نشده" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ناتوان در برون‌ریزی نما" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "موقعیت کنونی" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "مختصات نامعتبر" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "خطای تجزیه" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "هندسهٔ ناشناخته" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "درخواست مسیر شکست خورد." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "هیچ مسیری پیدا نشد." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "شروع!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "تمام پرونده‌های لایه" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "شکست در اتّصال به خدمت مکانی" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"دانیال بهزادی \n" +"آرش موسوی " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "یک برنامهٔ نقشه برای گنوم" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "حق رونوشت © ۲۰۱۱ - ۲۰۲۱ – شرکت ردهت و نگارندگان نقشه‌های گنوم" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "دادهّای نقشه به دست %s و مشارکت‌کنندگان" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "کاشی‌های نقشه به دست %s فراهم شده" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "جست‌وجو به دست %s با استفاده از %s فراهم شده" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "شکست در گشودن لایه" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "می‌خواهید ادامه دهید؟" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some time " +"to load" +msgstr "در حال گشودن پرونده‌ای با حجم کل %s م‌ب هستید. بار شدنش ممکن است کمی طول بکشد" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "گونهٔ پرونده پشتیبانی نمی‌شود" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "شکست در گشودن نشانی جغرافیایی" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "گذرواژه یا نام‌کاربری نادرست" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "موفّقیت" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "درخواست بد" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "شی پیدا نشد" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "تداخل، گسی دیگر به تازگی شی را تغییر داده" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "شی پاک شد" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "راه یا ارتباط به فرزندی ناموجود اشاره می‌کند" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "نام" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "نام رسمی. معمولاً نامیست که روی تابلوها نوشته." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "نشانی" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "پایگاه وب" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "نشنی اینترنتی معتبر نیست. مطمئن شوید دارای ‪http://‬ یا ‪https://‬ است." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example." +"com instead of http://example.com/index.html." +msgstr "" +"پایگاه وب رسمی. سعی کنید از ساده‌ترین شکل آدرس استفاده کنید مثلا http://example." +"com به جای http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "تلفن" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of " +"local privacy laws, especially for private phone numbers." +msgstr "" +"شماره تلفن. از قالب بین‌المللی که با + شروع می‌شود اشتفاده کنید. لطفاً قوانین " +"محرمانگی محلّی را در نظر داشته باشید، به خصوص برای شماره‌های تلفن خصوصی." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "ویکی‌پدیا" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like “en:" +"Article title”." +msgstr "" +"قالب استفاده شده باید شامل کد زبان و عنوان مقاله باید مثل «en:Article title» باشد." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "ساعت‌های کار" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "پیوند روی برچسب را برای راهنمایی قالب ببینید." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "جمعیت" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "بلندی" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "بلندی (فاصله از سطح دریا) یک نقطه به متر." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "دسترسی صندلی چرخ‌دار" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "بله" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "خیر" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "محدود" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "تعیین شده" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "دسترسی اینترنتی" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "وای‌فای" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "سیمی" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "پایانه" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "خدمت" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "دین" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "جانگرایی" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "بهایی" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "بوداییسم" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "کایوداییسم" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "مسیحیت" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "کنفسیوسیسم" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "هندوییسم" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "برهما‌بوداییسم" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "یهودیت" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "اسلام" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "دین‌های مختلف" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "پگانیسم" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "پاستاپرستی" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "علمگرایی" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "شینتو" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "سیک" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "روحگرایی" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "تائوییسم" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "جهانگرایی یکتاپرست" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "وودو" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "یزیدی" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "زرتشتی" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "دستشویی‌ها" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "نکته" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about an " +"element, the author’s intent when creating it, or hints for further improvement." +msgstr "" +"اطّلاعات برای آگاه کردن دیگر نقشه‌کش‌ها دربارهٔ اطّلاعات نابدیهی دربارهٔ یک عنصر، قصد " +"نگارنده هنگام ایجادش یا راهنمایی برای بهبودهای بعدی." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "گزینش گونه" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "انجام شد" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "مکان بی‌نام" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "شکست در پردازش نشانی جغرافیایی" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "مختصات" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "دقّت" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "دقّت: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "شماره تلفن" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "دسترسی عمومی به اینترنت" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "بدون دسترسی به اینترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "وای‌فای عمومی" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "دسترسی سیمی به اینترنت" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "رایانه‌های موجود برای استفاده" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "همیار اینترنت در دسترس" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "دستشویی در دسترس نیست" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "دستشویی در دسترس" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "قابل دسترسی با صندلی چرخ‌دار" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "قابلیت دسترسی محدود با صندلی چرخ‌دار" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "بدون قابلیت دسترسی با صندلی چرخ‌دار" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "مخصوص استفاده‌کنندگان از صندلی چرخ‌دار" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "دین:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "مکان در اوپن استریت مپ پیدا نشد" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "مختصات نشانی نامعتبر" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "نشانی پشتیبانی نمی‌شود" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "از %s تا %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "در حال بار کردن کاشی‌های نقشه برای چاپ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "اگر خیلی طول کشید، می‌توانید چاپ را خاتمه دهید" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "خاتمهٔ چاپ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "افزودن از راه موقعیت" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "برداشتن از راه موقعیت" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "مسیر برعکس" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "افزودن %s به %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "شکست در گشودن نشانی" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "گشودن با %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "شکست در بارگیری پرونده" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "زمان تخمینی: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "برنامه سفر فراهم شده به دست %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "شروع در %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "شروع" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s قدم بزنید" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "رسیدن به مقصد در %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "رسیدن" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "نمایش دستور کار قدم زدن" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "نهفتن دستور کار قدم زدن" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "بار کردن جایگزین‌های قدیمی‌تر" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "بار کردن جایگزین‌های جدیدتر" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "جایگزین‌های قدیمی‌تری پیدا نشدند." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "جایگزین‌های جدیدتری پیدا نشدند." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %Oe" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "برای این مسیر هیچ دادهٔ جدول زمانی‌ای پیدا نشد." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "برای این مسیر هیچ فراهم کننده‌ای پیدا نشد." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s دقیقه" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ساعت" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ساعت" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "حدود ساعت" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "از سپیده‌دم تا غروب" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "هر روز" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "تعطیلات عمومی" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "تعطیلات مدرسه" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "باز نیست" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "ناشناخته" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "دقیقاً" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s س" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s س %s د" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s د" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s ث" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s ک‌م" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s ما" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s پا" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "این افزایه، جدیدترین زمان حضور را پشتیبانی نمی‌کند" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "در %s ادامه دهید" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "ادامه" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "در %s به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "در %s آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "در %s تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "در %s به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "در %s آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "در %s تند به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "تند به رایت بپیچید" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "در میدان از %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "در میدان به %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "وارد میدان شوید" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "وارد آسانسور شده و در %s حارج شوید" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "وارد آسانسور شوید" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "به %s گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "به %s گردش به راست کنید" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "گردش به راست کنید" + +#~ msgid "Find a Route" +#~ msgstr "یافتن یک مسیر" + +#~ msgid "Check in here" +#~ msgstr "اعلام حضور در این‌جا" + +#~ msgid "Show more information" +#~ msgstr "نمایش اطّلاعات بیش‌تر" + +#~ msgid "Population:" +#~ msgstr "جمعیت:" + +#~ msgid "Altitude:" +#~ msgstr "بلندی:" + +#~ msgid "Opening hours:" +#~ msgstr "ساعت‌های کار:" + +#~ msgid "Internet access:" +#~ msgstr "دسترسی اینترنتی:" + +#~ msgid "Toilets:" +#~ msgstr "دستشویی‌ها:" + +#~ msgid "Wheelchair access:" +#~ msgstr "دسترسی صندلی چرخ‌دار:" + +#~ msgid "Phone:" +#~ msgstr "تلفن:" + +#~ msgid "yes" +#~ msgstr "بله" + +#~ msgid "limited" +#~ msgstr "محدود" + +#~ msgid "no" +#~ msgstr "خیر" + +#~ msgid "designated" +#~ msgstr "تعیین شده" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "نشانی OpenStreetMap نامعتبر است" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "سیمی" + +#~ msgid "terminal" +#~ msgstr "پایانه" + +#~ msgid "service" +#~ msgstr "خدمت" + +#~ msgid "Don’t have an account?" +#~ msgstr "حسابی ندارید؟" + +#~ msgid "%f h" +#~ msgstr "%If ساعت" + +#~ msgid "%f min" +#~ msgstr "%If دقیقه" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "افزودن مقصد" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "جست‌وجوی مسیر به دست OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "خروج" + +#~ msgid "Load Map Layer" +#~ msgstr "بار کردن لایه نقشه" + +#~ msgid "Open with another application" +#~ msgstr "گشودن با برنامه‌ای دیگر" + +#~ msgid "Press enter to search" +#~ msgstr "برای جست‌وجو دکمه Enter را فشار دهید" + +#~ msgid "OK" +#~ msgstr "تایید" + +#~ msgid "%f km" +#~ msgstr "%If کیلومتر" + +#~ msgid "%f m" +#~ msgstr "%If متر" + +#~ msgid "%f mi" +#~ msgstr "%If مایل" + +#~ msgid "%f ft" +#~ msgstr "%If فوت" + +#~ msgid "Country code: %s" +#~ msgstr "کد کشور: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "آخرین مکان و دقت شناخته شده" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "آخرین مکان شناخته شده (عرض و طول جغرافیایی به درجه) و دقت (به متر)" + +#~ msgid "Description of last known location of user." +#~ msgstr "توضیحات آخرین مکان شناخته شده کاربر." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "این که آخرین مکان شناخته شده به صورت دستی توسط کاربر تنظیم شده یا نه." + +#~ msgid "I’m here!" +#~ msgstr "من این‌جا هستم!" + +#~ msgid "Satellite" +#~ msgstr "ماهواره" + +#~ msgid " km²" +#~ msgstr "کیلومتر مربع" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..f14d8cca --- /dev/null +++ b/po/fi.po @@ -0,0 +1,2057 @@ +# Finnish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jiri Grönroos , 2013, 2014, 2015, 2016, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-22 17:09+0200\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: suomi \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnomen kartat" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Löydä sijainteja ympäri maailman" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartat mahdollistaa maailmanlaajuisen karttatiedon käytön nopeasti. Voit " +"paikallistaa haluamasi paikan etsimällä vaikkapa kaupunkia tai katua." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartat hyödyntää tuhansien ihmisten yhdessä luomaa OpenStreetMap-tietokantaa." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Voit myös etsiä tietynlaista sijaintia, kuten \"Pubit lähellä Kallio, " +"Helsinki\" tai \"Hotellit lähellä Berliini, Saksa\"." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Gnome-projekti" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Kartat" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Yksinkertainen karttasovellus" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kartta;Kartat;Reitit;Reitti;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Sallii sijaintisi näytettävän kartalla." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "viimeksi katsottu sijainti" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Viimeksi katsotun sijainnin koordinaatit." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaustaso" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartan tyyppi" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Näytettävän kartan tyyppi (katu, ilma jne.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ikkunan koko" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ikkunan koko (leveys ja korkeus)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ikkunan sijainti" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ikkunan sijainti (x ja y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ikkuna suurennettu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Ikkunan suurennuksen tila" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Hakutulosten enimmäismäärä" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode-haun tulosten enimmäismäärä." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Äskettäisten sijaintien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Äskettäin käytyjen sijaintin varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Äskettäisten reittien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Äskettäin käytyjen reittien varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-paikkakirjautumisen yksityisyysasetus" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Viimeisin käytetty Facebook-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS tai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-paikkakirjautumisen yksityisyysasetus" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Viimeisin käytetty Foursquare-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: public, followers tai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Facebookiin" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen viestinä " +"Foursquare-tiliin liitetylle Facebook-tilille." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Twitteriin" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen twiittinä " +"Foursquare-tiliin liitetylle Twitter-tilille." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-käyttäjätunnus tai -sähköposti" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Ilmaisee onko käyttäjä kirjautunut muokatakseen OpenStreetMap-tietoja." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Reitityksessä viimeksi käytetty matkatapa" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Yötila" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Onko sovellus yötilassa vai ei." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Käytä hybridejä ilmatiilejä" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Tuleeko ilmatiilten käyttää hybridityyliä (selitteiden kera)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Näkyvyys" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Lähetä Facebookiin" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Lähetä Twitteriin" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Peru" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Kirjaudu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kaikki" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Kaverien kaverit" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Vain kaverit" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Vain minä" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Julkinen" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seuraajat" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Yksityinen" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Reitti täältä" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lisää välisijainti" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Reitti tänne" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mitä täällä on?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopioi sijainti" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Vie näkymä" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Vie" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sisällytä reitti ja merkit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Valitse kartan tyyppi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Loitonna" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Lähennä" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Näytä/piilota suosikit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Yleiset" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Näytä pikanäppäimet" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Etsi" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Lopeta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Karttanäkymä" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Lähennä" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Loitonna" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Näytä/piilota mittakaava" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Vaihda katunäkymään" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Vaihda ilmanäkymään" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Avaa muototaso" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Näytä selitteet" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Avaa muototaso…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ota sijaintipalvelut käyttöön selvittääksesi sijaintisi" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Peru" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Sijaintipalvelut" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Yötila" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Määritä OpenStreetMap-tili" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Vie kuvana" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tietoja - Kartat" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartat on verkottomassa tilassa!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartat tarvitsee aktiivisen internetyhteyden toimiakseen kunnolla, mutta " +"sellaista ei kuitenkaan havaittu." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Tarkista yhteytesi ja välityspalvelimen asetukset." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-tili" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Kirjaudu sisään muokataksesi " +"karttoja" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Auta parantamaan karttaa\n" +"OpenStreetMap-tiliä käyttäen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Sähköposti" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Salasana" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rekisteröidy" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Kirjaudu sisään" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Valitettavasti se ei kelvannut. Yritä uudelleen tai siirry\n" +"OpenStreetMapiin nollataksesi salasanasi." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Vahvistuskoodi ei kelvannut, yritä uudelleen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Kirjoita yllä oleva vahvistuskoodi" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vahvista" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sisäänkirjautunut" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap-tilisi on aktiivinen." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kirjaudu ulos" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Katu" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Talon numero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postinumero" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kaupunki" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tyyppi" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ei mitään" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lisää kenttä" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentti" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Karttamuutokset näkyvät kaikissa OpenStreetMapin\n" +"sisältöä käyttävissä kartoissa." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Viimeksi käytetty" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Seuraava" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tuloksia ei löytynyt" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Tapahtui virhe" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Vedä muuttaaksesi reitin määritystä" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopioi" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Lähetä…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "_Ilmoittaudu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Avaa muototaso" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Avaa" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Näytä/piilota" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Reittihaun tarjoaa GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Julkisen liikenteen reitityksen matkareitit tarjoaa Gnome\n" +"käyttäen kolmansien osapuolien palveluja.\n" +"Gnome ei voi taata näytettävien matkareittien ja aikataulujen " +"oikeellisuutta.\n" +"Huomioi, että jotkin palveluntarjoajat eivät välttämättä sisällytä kaikkia\n" +"liikennöintimuotoja, esimerkiksi kansalliset palveluntarjoajat eivät " +"välttämättä\n" +"huomioi lentoreittejä, tai paikalliset palveluntarjoajat eivät välttämättä\n" +"huomioi valtakunnallisia junia.\n" +"Näytettävät nimet ja tuotemerkit on soveltuvin osin oletettava " +"rekisteröidyiksi." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Näytä lisää tuloksia" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Piilota välipysäkit ja tiedot" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Näytä välipysäkit ja tiedot" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Lähde nyt" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Lähde määrättynä aikana" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Saavu määrättynä aikana" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Näytä" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussit" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Raitiovaunut" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Junat" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Lautat" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lentokoneet" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Jaa sijainti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Lisää uusi reitti" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Reittiohjeet" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merkitse suosikiksi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Lähennä lisätäksesi sijainnin!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Lähennä" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Tiilirakennetta ei löytynyt hakemistosta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-asiakirjan jäsentäminen epäonnistui" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Vaaditut attribuutit puuttuvat" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-elementtiä ei löytynyt" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Polku paikallisten tiilien hakemistorakenteeseen" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tiilen koko paikalliseen tiilten hakemistoon" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Näytä ohjelman versio" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Älä huomioi verkon saatavuutta" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[TIEDOSTO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Valitse tili" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ladataan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Valitse paikka" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Facebookista paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Foursquaresta paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Kirjaudu paikkaan %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Kirjoita valinnainen viesti paikkaan %s kirjautumisen yhteydessä." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Paikkaa \"%s\" ei löydy sosiaalisista palveluista" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Tästä sijainnista ei löydy kelvollista paikkaa kirjautumista varten" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kirjautumistiedot ovat vanhentuneet. Avaa verkkotilien asetukset " +"kirjautuaksesi ja käyttääksesi tätä tiliä" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Täältä ei löytynyt mitään!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Sijainti lisättiin karttaan. Ota huomioon, että sen näkymisessä kartalla ja " +"hakutuloksissa saattaa kestää jonkin aikaa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartta sijainnissa %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Tiedostojärjestemä on \"vain luku\"-muodossa" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oikeutesi eivät riitä tänne tallentamiseen" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Kansiota ei ole olemassa" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiedostonimeä ei määritetty" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Näkymän vienti epäonnistui" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Nykyinen sijainti" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "virheellinen koordinaatti" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "jäsentämisvirhe" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "tuntematon geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Reittipyyntö epäonnistui." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Reittiä ei löytynyt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Aloitus!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Kaikki tasotiedostot" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Yhteys sijaintipalveluun epäonnistui" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Karttasovellus Gnomelle" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Tekijänoikeus © 2011 – 2021 Red Hat, Inc. ja Gnomen karttasovelluksen " +"kehittäjät" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Karttatiedot tarjoaa %s ja avustajat" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karttatiilet tarjoaa %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Haun tarjoaa %s käyttämällä %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Tason avaaminen epäonnistui" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Haluatko jatkaa?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Olet aikeissa avata tiedostoja, joiden koko yhteensä on %s Mt. Näiden " +"lataaminen saattaa kestää jonkin aikaa" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Tiedostotyyppi ei ole tuettu" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI:n avaaminen epäonnistui" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Onnistui" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Virheellinen pyyntö" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektia ei löytynyt" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Ristiriita, joku toinen muokkasi juuri objektia" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekti on poistettu" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tie tai relaatio viittaa lapseen, jota ei ole olemassa" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nimi" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Virallinen nimi. Tämä on yleensä näkyvillä kyltissä." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Osoite" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Verkkosivusto" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Tämä ei ole kelvollinen URL-osoite. Varmista että osoitteen alussa on " +"http:// tai https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Virallinen verkkosivusto. Käytä verkkotunnuksen perusmuotoa, eli mieluummin " +"http://esimerkki.fi kuin http://esimerkki.fi/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Puhelin" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Puhelinnumero. Käytä kansainvälistä muotoa, aloita +-merkillä. Ota huomioon " +"mahdolliset paikalliset yksityisyyslait, jotka voivat koskea salaisia " +"puhelinnumeroita." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Käytettävän muotoilun tulisi sisältää kielikoodin ja artikkelin nimen, kuten " +"”en:Article title”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Aukioloajat" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Avaa linkki nähdäksesi muotoilua koskevan ohjeen." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Asukasluku" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Korkeus" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Sijaintipisteen korkeus merenpinnan yläpuolella metreissä." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Pääsy pyörätuolilla" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Kyllä" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Ei" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Rajoitettu" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Suunniteltu" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internet-käyttö" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Kiinteä" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Pääte" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Palvelu" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Uskonto" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animismi" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhalaisuus" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaismi" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kristinusko" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Kungfutselaisuus" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hindulaisuus" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainalaisuus" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Juutalaisuus" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Useita uskontoja" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Pakanuus" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarilaisuus" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Skientologia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Šintolaisuus" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhiläisyys" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualismi" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taolaisuus" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitaariuniversalismi" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jesidismi" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zarathustralaisuus" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Vessat" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Huomio" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Tietoja muille kartoittajille elementistä, sen luomisen tarkoituksesta tai " +"vihjeitä parannusten suhteen." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Valitse tyyppi" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Valmis" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Nimetön paikka" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI:n jäsentäminen epäonnistui" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinaatit" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Tarkkuus" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tarkkuus: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Puhelinnumero" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Julkinen internetyhteys" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ei internetyhteyttä" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Julkinen Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Langallinen internetyhteys" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Tietokoneita käytettävissä" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internetopastusta saatavilla" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Vessoja ei käytettävissä" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Vessoja käytettävissä" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Pääsy pyörätuolilla" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Rajoitettu pääsy pyörätuolilla" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Ei pääsyä pyörätuolilla" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Suunniteltu pyörätuolikäyttäjille" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Uskonto:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Paikkaa ei löytynyt OpenStreetMapista" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaatit osoitteessa eivät ole kelvolliset" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Osoite ei ole tuettu" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Alkupisteestä %s päätepisteeseen %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ladataan karttatiiliä tulostusta varten" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Voit perua tulostuksen, jos siinä kestää liian kauan" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Peru tulostus" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lisää välisijainti" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Poista välisijainti" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Käänteinen reitti" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lisää %s sovellukseen %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI:n avaaminen epäonnistui" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Avaa sovelluksella %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "tiedoston lataaminen epäonnistui" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Arvioitu aika: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Matkareitit tarjoaa %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Aloita %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Aloita" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Kävele %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Saavu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Saavu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Näytä kävelyohjeet" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Piilota kävelyohjeet" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Lataa aiemmat vaihtoehdot" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Lataa myöhemmät vaihtoehdot" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aiempia vaihtoehtoja ei löytynyt." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Myöhempiä vaihtoehtoja ei löytynyt." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Tälle reitille ei löytynyt aikataulutietoja." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Tälle reitille ei löytynyt palveluntarjoajaa." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuutti" +msgstr[1] "%s minuuttia" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s tunti" +msgstr[1] "%s tuntia" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%02s tunti" +msgstr[1] "%s:%02s tuntia" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Kellon ympäri" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Auringonnoususta auringonlaskuun" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Päivittäin" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Yleiset vapaapäivät" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Koulujen vapaapäivät" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ei avoinna" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Tuntematon" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tarkka" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tämä liitännäinen ei tue myöhäisintä saapumista" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Jatka %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Jatka" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Käänny vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Käänny vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Käänny hieman vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Käänny hieman vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Käänny terävästi vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Käänny terävästi vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Käänny oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Käänny oikealle" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Käänny hieman oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Käänny hieman oikealle" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Käänny terävästi oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Käänny terävästi oikealle" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Kiertoliittymässä ota poistumistie %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Kiertoliittymässä ota poistumistie kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Mene kiertoliittymään" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ota hissi ja jää pois kerroksessa %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ota hissi" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Tee u-käännös vasemmalle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Tee u-käännös vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Tee u-käännös oikealle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Tee u-käännös oikealle" + +#~ msgid "Find a Route" +#~ msgstr "Hae reitti" + +#~ msgid "Check in here" +#~ msgstr "Kirjaudu tänne" + +#~ msgid "Show more information" +#~ msgstr "Näytä lisätietoja" + +#~ msgid "Population:" +#~ msgstr "Asukasluku:" + +#~ msgid "Altitude:" +#~ msgstr "Korkeus:" + +#~ msgid "Opening hours:" +#~ msgstr "Aukioloajat:" + +#~ msgid "Internet access:" +#~ msgstr "Internetin käyttö:" + +#~ msgid "Toilets:" +#~ msgstr "Vessat:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Pääsy pyörätuolilla:" + +#~ msgid "Phone:" +#~ msgstr "Puhelin:" + +#~ msgid "yes" +#~ msgstr "kyllä" + +#~ msgid "limited" +#~ msgstr "rajoitettu" + +#~ msgid "no" +#~ msgstr "ei" + +#~ msgid "designated" +#~ msgstr "suunniteltu esteettömäksi" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-osoite ei ole kelvollinen" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kiinteä" + +#~ msgid "terminal" +#~ msgstr "pääte" + +#~ msgid "service" +#~ msgstr "palvelu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Oletko vailla tiliä?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lisää välipiste" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Reittihaun tarjoaa OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Avaa muussa sovelluksessa" + +#~ msgid "Press enter to search" +#~ msgstr "Paina enter etsiäksesi" + +#~ msgid "Quit" +#~ msgstr "Lopeta" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Avaa muototaso…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Lataa karttataso" + +#~ msgid "Open Layer" +#~ msgstr "Avaa taso" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Sijaintia ei löytynyt" + +#~ msgid "Country code: %s" +#~ msgstr "Maanumero: %s" + +#~ msgid "Population: %s" +#~ msgstr "Asukasluku: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pääsy pyörätuolilla: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON-tiedoston jäsentäminen epäonnistui" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Viimeksi tunnettu sijainti ja tarkkuus" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Viimeksi tunnettu sijainti (leveys ja pituus asteissa) ja tarkkuus " +#~ "(metreissä)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Käyttäjän viimeksi tunnetun sijainnin kuvaus." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Asetettiinko viimeksi tunnettu sijainti käyttäjän toimesta." + +#~ msgid "I’m here!" +#~ msgstr "Minä, minä olen täällä!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelliitti" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..48fc36b6 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,1998 @@ +# French Translation of GNOME Maps. +# Copyright (C) 2013-2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ouharzoune Mohammed , 2013 +# Claude Paroz , 2013-2017, 2020 +# Alexandre Franke , 2016. +# Guillaume Bernard , 2014, 2015, 2016. +# Alain Lojewski ,2018 +# vanadiae , 2020-2021. +# Charles Monzat , 2018-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-03 22:17+0000\n" +"PO-Revision-Date: 2021-02-14 20:37+0100\n" +"Last-Translator: Charles Monzat \n" +"Language-Team: GNOME French Team \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Cartes de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recherche d’emplacements autour du monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L’application Cartes vous donne un accès rapide à des cartes du monde " +"entier. Elle permet de trouver rapidement un emplacement en recherchant par " +"ville ou par rue, ou de situer un endroit de rencontre avec un ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Les cartes utilisent la base de données collaborative OpenStreetMap, à " +"laquelle contribuent des centaines de milliers de personnes dans le monde " +"entier." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vous pouvez même chercher des lieux spécifiques, comme « Restaurants à côté " +"de la Cathédrale de Strasbourg » ou « Hôtels à côté d’Alexanderplatz à " +"Berlin »." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Le projet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Cartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une application cartographique simple" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Cartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d’afficher votre emplacement sur la carte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "dernier emplacement affiché" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonnées du dernier emplacement affiché." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Niveau de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type de carte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Le type de carte à afficher (plan, satellite, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Taille de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Taille de la fenêtre (hauteur et largeur)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Position de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Position de la fenêtre (X et Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenêtre agrandie" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "État d’agrandissement de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de résultats de recherche" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de résultats d’une recherche par géocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de positions récentes à conserver" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de positions récemment visitées à conserver." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre d’itinéraires récents à conserver" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre d’itinéraires récemment visités à conserver." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidentialité d’annonce de la localisation sur Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation sur Facebook. Les valeurs possibles sont : EVERYONE (tout le " +"monde), FRIENDS_OF_FRIENDS (amis des amis), ALL_FRIENDS (tous les amis) or " +"SELF (soi)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidentialité d’annonce de la localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation Foursquare. Les valeurs possibles sont : public (publiques), " +"followers (personnes qui me suivent) ou private (privé)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Diffusion sur Facebook des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Facebook associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Diffusion sur Twitter des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Twitter associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d’utilisateur ou adresse électronique OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indique si l’utilisateur s’est identifié pour modifier des données " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Type de transport utilisé lors du dernier itinéraire" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mode nuit" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indique si l’application est en mode nuit." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utiliser les tuiles aériennes hybrides" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indique si les tuiles aériennes doivent être utilisées en mode hybride (avec " +"étiquettes)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilité" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publier sur Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publier sur Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuler" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "A_nnoncer sa localisation" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tout le monde" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amis des amis" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Juste les amis" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Juste moi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publique" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personnes qui me suivent" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinéraire depuis ici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ajouter une destination intermédiaire" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinéraire jusqu’à ce point" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Qu’y a-t-il ici ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copier l’emplacement" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Ajouter à OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportation de l’affichage" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclure l’itinéraire et les marqueurs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Choisir le type de carte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom arrière" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Basculer les favoris" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Général" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afficher les raccourcis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Rechercher" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitter" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afficher la carte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrière" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Afficher/masquer l’échelle" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passer en vue cartographique" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passer en vue aérienne" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afficher les étiquettes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ouvrir une couche de formes…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activer les services de localisation pour trouver votre position." + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuler" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localisation" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode nuit" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurer un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporter comme image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "À propos de Cartes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Cartes est hors ligne !" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Cartes a besoin d’une connexion Internet active et fonctionnelle, mais " +"aucune n’a été trouvée." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Vérifiez votre connexion et vos paramètres de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S’identifier pour modifier des " +"cartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aider à l’amélioration des cartes avec\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adresse électronique" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mot de passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscrire" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "S’identifier" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Désolé, ça n’a pas fonctionné. Veuillez réessayer ou visiter\n" +"OpenStreetMap pour réinitialiser votre mot de passe." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Le code de vérification ne correspond pas, essayez encore une fois." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Saisissez le code de vérification affiché ci-dessus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vérifier" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Vous êtes inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Votre compte OpenStreetMap est actif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Se déconnecter" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rue" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numéro" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Code postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ville" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Aucun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Ajouter un champ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaire" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Les modifications de la carte seront visibles sur toutes\n" +"les cartes qui utilisent des données OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Dernièrement utilisé" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Suivant" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Aucun résultat trouvé" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Une erreur est survenue" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Faites glisser pour modifier l’ordre de l’itinéraire" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ouvrir l’emplacement" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copier" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Envoyer vers…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Annoncer sa localisation…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ouvrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inverser la visibilité" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recherche d’itinéraire avec GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Les itinéraires par transport public sont fournis par des services tiers\n" +"GNOME ne peut garantir l’exactitude des itinéraires et horaires présentés.\n" +"Notez que certains fournisseurs ne présentent pas toujours tous les modes " +"de\n" +"transport disponibles, par ex. un fournisseur national n’indiquerait peut-" +"être\n" +"pas les lignes aériennes ou un fournisseur local pourrait omettre les trains " +"régionaux\n" +".Les noms et marques affichés doivent être considérés comme des marques " +"déposées, le cas échéant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montrer plus de résultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Masquer les arrêts et informations intermédiaires" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afficher les arrêts et informations intermédiaires" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir maintenant" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Départ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivée" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afficher" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Métros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Bateaux" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partager l’emplacement" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Ajouter à un nouvel itinéraire" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Directions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marquer comme favori" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomez pour ajouter un emplacement !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trouver une structure de tuiles dans le répertoire" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Échec d’analyse d’un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributs obligatoires manquants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trouver l’élément OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un chemin vers un répertoire local de structure de tuiles" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Taille de tuile pour le répertoire local de tuiles" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Afficher la version du logiciel" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorer la disponibilité du réseau" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHIER…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Sélectionner un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Chargement" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Sélectionner un lieu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Facebook. " +"Veuillez en sélectionner un dans cette liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Foursquare. " +"Veuillez en sélectionner un dans cette liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Annoncer sa localisation à %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Écrire un message optionnel pour votre annonce de localisation à %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trouver « %s » sur le réseau social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trouver un endroit correspondant pour annoncer sa localisation " +"ici." + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Les informations d’authentification ont expiré, ouvrez Comptes en ligne pour " +"vous connecter et activer ce compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Rien n’a été trouvé à cet endroit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L’emplacement a été ajouté à la carte, notez que cela peut prendre un moment " +"avant qu’il n’apparaisse sur la carte et dans les résultats de recherche." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Cartes situées à %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Le système de fichiers est en lecture seule" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vous n’avez pas la permission d’enregistrer à cet endroit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Le dossier n’existe pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Aucun nom de fichier indiqué" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d’exporter l’affichage" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Lieu actuel" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordonnée non valable" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erreur d’analyse" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "géométrie inconnue" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Échec de la recherche d’itinéraire." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Aucun itinéraire trouvé." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "C’est parti !" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tous les fichiers de couches" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Échec à la connexion au service de localisation" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Ouharzoune Mohammed \n" +"Claude Paroz \n" +"Guillaume Bernard \n" +"Charles Monzat " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Une application cartographique pour GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2021 Red Hat, Inc. et les auteurs de Cartes de GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Données cartographiques de %s et contributeurs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Couches de données cartographiques fournies par %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Recherche fournie par %s utilisant %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Échec d’ouverture de la couche" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Voulez-vous continuer ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Vous êtes sur le point d’ouvrir des fichiers pour une taille totale de %s Mo. " +"Cela peut prendre un certain temps à charger" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Le type de fichier n’est pas pris en charge" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Échec d’ouverture de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d’utilisateur ou mot de passe incorrect" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Mauvaise requête" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objet non trouvé" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, quelqu’un d’autre vient de modifier l’objet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L’objet a été supprimé" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Le chemin ou la relation se réfère à des enfants qui n’existent pas" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Le nom officiel. C’est en général ce qui est écrit sur l’enseigne." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Site Web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Cette URL n’est pas valide. Assurez-vous d’inclure http:// ou https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Le site officiel. Essayez d’utiliser la forme la plus simple pour l’URL, " +"c’est-à-dire http://example.com au lieu de http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Téléphone" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numéro de téléphone. Utilisez le format international, en commençant par un " +"signe +. Attention aux lois locales sur la vie privée, surtout pour les " +"numéros de téléphone des particuliers." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Le format utilisé devrait comprendre le code langue et le titre de " +"l’article, comme « fr:Titre de l’article »." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Heures d’ouverture" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Voir le lien dans l’étiquette pour de l’aide sur le format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Élévation (hauteur au-dessus du niveau de la mer) d’un point en mètres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accès aux fauteuils roulants" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Oui" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limité" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Réservé" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accès à Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Filaire" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahaïsme" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Bouddhisme" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Christianisme" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindouisme" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Plusieurs religions" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universaliste" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vaudou" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yézidisme" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toilettes" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informations utilisées pour informer d’autres cartographes sur les " +"informations non évidentes sur un élément, l’intention de l’auteur lors de " +"sa création ou des indications pour de possibles améliorations." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Ajout à OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Sélectionner le type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Terminé" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Emplacement sans nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Échec à l’analyse de la Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordonnées" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Précision de la position" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Précision de la position : %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accès public à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Aucun accès à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accès Internet filaire" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Ordinateurs disponibles pour utilisation" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistance Internet disponible" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Toilettes indisponibles" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toilettes disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accessible aux fauteuils roulants" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accessibilité limitée aux fauteuils roulants" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Aucune accessibilité aux fauteuils roulants" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Accès destiné aux utilisateurs de fauteuils roulants" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion :" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Emplacement introuvable sur OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Les coordonnées dans l’URL ne sont pas valides" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L’URL n’est pas prise en charge" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s à %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Chargement des tuiles de carte pour l’impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vous pouvez interrompre l’impression si cela prend trop de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l’impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ajouter un emplacement intermédiaire" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Supprimer l’emplacement intermédiaire" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Chemin inverse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Ajouter %s à %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Échec d’ouverture de l’URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Ouvrir avec %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impossible de charger le fichier" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimé : %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinéraires fournis par %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Départ de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Départ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Marcher %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrivée à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrivée" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montrer les instructions de marche à pied" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Masquer les instructions de marche à pied" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Charger les alternatives précédentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Charger les alternatives suivantes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aucune alternative précédente trouvée." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Aucune alternative suivante trouvée." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Aucun horaire trouvé pour cet itinéraire." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Aucun fournisseur trouvé pour cet itinéraire." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s heure" +msgstr[1] "%s heures" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s heure" +msgstr[1] "%s:%s heures" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 h/24" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Du lever au coucher du soleil" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Tous les jours" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Jours fériés" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacances scolaires" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "fermé" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Inconnue" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ce greffon ne prend pas en charge les dernières arrivées" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuer sur %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuer" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Tourner à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Tourner à gauche" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Tourner légèrement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Tourner légèrement à gauche" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Tourner franchement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Tourner franchement à gauche" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Tourner à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Tourner à droite" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Tourner légèrement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Tourner légèrement à droite" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Tourner franchement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Tourner franchement à droite" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dans le giratoire, prendre la sortie %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dans le giratoire, prendre la sortie vers %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "S’engager dans le giratoire" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendre l’ascenseur et sortir à %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Prendre l’ascenseur" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faire un demi-tour à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faire un demi-tour à gauche" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faire un demi-tour à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faire un demi-tour à droite" + +#~ msgid "Check in here" +#~ msgstr "Annoncer cet emplacement comme localisation" + +#~ msgid "Show more information" +#~ msgstr "Montrer plus d’informations" + +#~ msgid "Population:" +#~ msgstr "Population :" + +#~ msgid "Altitude:" +#~ msgstr "Altitude :" + +#~ msgid "Opening hours:" +#~ msgstr "Heures d’ouverture :" + +#~ msgid "Internet access:" +#~ msgstr "Accès à Internet :" + +#~ msgid "Toilets:" +#~ msgstr "Toilettes :" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accès aux fauteuils roulants :" + +#~ msgid "Phone:" +#~ msgstr "Téléphone :" + +#~ msgid "yes" +#~ msgstr "oui" + +#~ msgid "limited" +#~ msgstr "limité" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "réservé" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "L’URL de OpenStreetMap n’est pas valide" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "filaire" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "service" + +#~ msgid "Find a Route" +#~ msgstr "Trouver un itinéraire" + +#~ msgid "Primary menu" +#~ msgstr "Menu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Vous n’avez pas de compte ?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" diff --git a/po/fur.po b/po/fur.po new file mode 100644 index 00000000..639f916c --- /dev/null +++ b/po/fur.po @@ -0,0 +1,2053 @@ +# Friulian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Fabio Tomat , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-10 14:36+0100\n" +"Last-Translator: Fabio Tomat \n" +"Language-Team: Friulian \n" +"Language: fur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapis GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cjate puescj tor atôr pal mont" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapis ti da un acès veloç a lis mapis ator pal mont. Ti permet di cjatâ di " +"corse il puest che ti interesse cirint citât o vie, o cirî un puest dulà " +"cjatâsi cuntun ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapis al dopre il database colaboratîf OpenStreetMap, fat da centenârs di " +"miârs di personis ator pal mont." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tu puedis ancje cirî par specifics gjenars di puescj, come \"Pubs near Main " +"Street, Boston\" o \"Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Il progjet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapis" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une semplice aplicazion pes mapis" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapis;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet ae tô posizion di jessi mostrade te mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultime posizion viodude" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadis de ultime posizion viodude." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel di ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Gjenar di mape" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il gjenar di mape di mostrâ (stradâl, aerie, ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimension barcon" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimension barcon (largjece e altece)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizion barcon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizion barcon (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Barcon massimizât" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stat massimizât dal barcon" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Massim numar di risultâts di ricercje" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Massim numar di risultâts de ricercje da codifiche gjeografiche." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numar di lûcs resints di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numar di lûcs resints viodûts di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numar di stradis resintis di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numar di stradis resintis viodudis di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazions privacy dai check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazion pe privacy dai check-in su Facebook doprade. I valôrs " +"pussibii a son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazions pe privacy dai check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazion pe privacy dai check-in doprade. I valôrs pussibii a son: " +"public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmission a Facebook dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un post tal account " +"Facebook associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmission a Twitter dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un tweet tal account " +"Twitter associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Non utent o direzion e-mail OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Al indiche se l'utent al è jentrât te session par modificâ dâts " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultin gjenar di traspuart doprât par spostâsi" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modalitât gnot" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indiche se la aplicazion e je in modalitât gnot." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Dopre sezions aeriis ibridis" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indiche se lis sezions de mape aeriis a àn di doprâ il stîl ibrit (cun " +"etichetis)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitât" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publiche su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publiche su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anule" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ducj" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amîs di amîs" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nome amîs" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nome jo" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personis che a mi seguissin" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privât" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Strade di chi" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zonte destinazion intermedie" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Strade par rivâ chi" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce isal chi?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copie posizion" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Espuarte viodude" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Espuarte" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclût stradis e marcadôrs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Sielç il gjenar di mape" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Impiçulìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ingrandìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Ative/disative plan di percors" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Ative/disative preferîts" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Stampe Strade" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Gjenerâl" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostre scurtis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cîr" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Cambie plan stradis" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampe strade" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Jes" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Viodude mape" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumente ingrandiment" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuìs ingrandiment" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Cambiâ scjale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passe ae viodude stradâl" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passe ae viodude aerie" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vierç strât sagome" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostre etichetis" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vierç strât sagome…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ativâ i servizis di localizazion par cjatâ la tô posizion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anule" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazions di localizazion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalitât gnot" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configure Account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Espuarte come Imagjin" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtis tastiere" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazions su Mapis" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapis al è offline!" + +# cjatâ'nt indi? +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapis a scugne vê une conession internet ative par podê funzionâ, ma no si " +"'nt rive a cjatâ une." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Controle le tô conession e lis impostazions proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jentre par modificâ lis mapis" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Jude a miorâ la mape doprant un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regjistriti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Jentre" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Mi displâs, nol funzione. Torne prove o visite\n" +"OpenStreetMap par tornâ a configurâ la tô password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codiç di verifiche nol corispuint, torne prove." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Scrîf il codiç di verifiche mostrât chi parsore" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiche" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jentrât" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Il tô account OpenStreetMap al è atîf." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Jes" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Vie" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numar civic" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codiç postâl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Citât" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Gjenar" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nissun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Zonte cjamp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Coment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"I cambiaments de mape a saran visibii in dutis lis mapis che a doprin\n" +"dâts OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Doprâts di resint" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Prossim" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nissun risultât cjatât" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Si è verificât un erôr" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Strissine par cambiâ l'ordin de strade" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Vierç posizion" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copie" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Invie a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vierç strât sagome" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Vierç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Cambiâ stât visibil" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricercje dal percors cun GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I itineraris di percors pai mieçs publics a son furnîts di servizis di\n" +"tiercis parts.\n" +"GNOME nol pues garantî la justece dai itineraris e dai oraris mostrâts.\n" +"Viôt che cualchi furnidôr al podarès no includi dutis lis modalitâts di " +"traspuart disponibilis,\n" +"p.e. un furnidôr nazionâl al podarès no includi lis tratis aeronautichis e " +"un furnidôr locâl\n" +"al pues no includi i trens regjionâi.\n" +"I nons e lis marchis mostradis si àn di considerâ come marchis regjistradis " +"cuant che si puedin aplicâ." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostre plui risultâts" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Plate fermadis intermediis e informazions" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostre fermadis intermediis e informazions" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partî cumò" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partî tor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Rivâ tor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostre" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghets" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Condivît posizion" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Zonte a gnûf percors" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direzions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Segne come preferît" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Aumente ingrandiment par zontâ un puest!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ingrandìs" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impussibil cjatâ la struture des sezions de mape te cartele" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Impussibil analizâ il document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "E mancjin i atribûts necessaris" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impussibil cjatâ l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un percors par une struture de cartele des sezions di mape locâls" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "La dimension des sezions de mape pe cartele des sezions locâls" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostre la version dal program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignore disponibilitât rêt" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezione un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Daûr a cjamâ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezione un lûc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Facebook. Selezionâ un di " +"cheste liste." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Foursquare. Selezionâ un di " +"cheste liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in là di %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivi un coment opzionâl pal check-in là di %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No rivi a cjatâ “%s” tal servizi social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impussibil cjatâ un puest adat pal check-in in chest lûc" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Lis credenziâi a son scjadudis, vierç Accounts Online par coneti e abilitâ " +"chest account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nol è nuie culì!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Il lûc al è stât zontât te mape, viôt che al podarès coventâ un pôc prime " +"che al vegni fûr te mape e tai risultâts di ricercje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapis a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il file di sisteme al è in modalitât dome-leture" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tu âs i permès par salvâ là" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La cartele no esist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nissun non file specificât" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impussibil espuartâ la viodude" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Posizion atuâl" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenade no valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erôr tal analizâ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "gjeometrie no valide" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Richieste dal percors falide." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Percors no cjatât." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Invie!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Ducj i files di strât" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Impussibil conetisi al servizi di localizazion" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Fabio Tomat, " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Une aplicazion di GNOME pes mapis" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e i autôrs di GNOME Mapis" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dâts mape di %s e colaboradôrs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Sezions de mape furnîts di %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricercje furnide di %s doprant %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Impussibil vierzi il strât" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Desideristu continuâ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Tu stâs par vierzi files che a àn un totâl di %s MB di dimension. Al podarès " +"tirâle a dilunc par cjariâju" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Gjenar di file no supuartât" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Impussibil vierzi il GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Non utent o password sbaliâts" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richieste no juste" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Element no cjatât" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, cualchidun altri al à apene modificât l'element" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'element al è stât eliminât" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "La vie o la relazion si riferìs a fîs no-esistents" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Non" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Il non uficiâl. Chest al è, di solit, chel che al ven fûr tes firmis." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Recapit" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Sît web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Chest nol è un URL valit. Controle di includi http:// o https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sît web uficiâl. Cîr di doprâ la plui semplice forme di direzion, par " +"esempli http://example.com invezit di http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numar di telefon. Dopre il formât internazionâl, tacant cuntun segn +f. Sta " +"atent des leçs locâls su la privacy, in particolâr par numars di telefon " +"privâts." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedie" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formât doprât al à di includi il codiç de lenghe e il titul dal articul " +"come \"fur:Titul dal articul\"." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Orari di viertidure" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Viôt il leam te etichete pal jutori sul formât." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Popolazion" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitudin" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevazion (altece sul nivel dal mâr) di un pont in metris." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Acès disabii" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitât par disabii" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Specific par disabii" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Acès internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Cablade" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminâl" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servizi" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religjon" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animisim" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budisim" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaisim" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Cristianitât" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucianisim" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Induisim" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainisim" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaisim" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Religjons multiplis" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganisim" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianisim" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhisim" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualisim" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoisim" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Universalisim Unitari" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidisim" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianisim" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Gabinets" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informazion doprade par informâ altris mapadôrs su no evidentis informazions " +"suntun element, l’intent dai autôrs tal creâlu o sugjeriments par ulteriôrs " +"mioraments." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Selezione un gjenar" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fat" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Puest cence non" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Impussibil analizâ il Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordenadis" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precision" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de posizion: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numar di telefon" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Acès internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Nissun acès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Acès internet vie fîl" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computers disponibii di doprâ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistence internet disponibile" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Nissun gabinet disponibil" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Gabinets disponibii" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Acessibil in carocele" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Acessibil in carocele in mût limitât" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "No acessibil in carocele" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Progjetât pai utents in carocele" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religjon:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Lûc no cjatât su OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Lis coordenadis tal URL no son validis" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL nol è supuartât" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Di %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Daûr a cjariâ lis sezions de mape pe stampe" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tu puedis fermâ di stampâ se al sta masse" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ferme stampe" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zonte posizion de vie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gjave posizion de vie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percors inviers" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Zonte %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Impussibil vierzi il URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Vierç cun %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impussibil cjariâ il file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp stimât: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris furnîts di %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partìs di %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partence" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Cjaminâ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Rive a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Rivade" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostre istruzions par lâ a pît" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Plate istruzions par lâ a pît" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cjariâ alternativis plui adore" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cjariâ alternativis plui tart" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nissune alternative plui adore cjatade." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nissune alternative plui tart cjatade." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e di %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nissun dât di oraris cjatât par chest percors." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nissun furnidôr cjatât par chest percors." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minût" +msgstr[1] "%s minûts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ore" +msgstr[1] "%s oris" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ore" +msgstr[1] "%s:%s oris" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Dut il dì" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Di un scûr a chel altri" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Ogni dì" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Festîfs" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Vacancis di scuele" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "no viert" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "No cognossût" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Di precîs" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Chest plugin nol supuarte la ultime rivade" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolte a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Svolte a çampe" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolte di pôc a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Svolte di pôc a çampe" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolte di bot a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Svolte di bot a çampe" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolte a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Svolte a diestre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolte di pôc a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Svolte di pôc a diestre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolte di bot a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Svolte di bot a diestre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Inte rotatorie, cjape la jessude %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Inte rotatorie, cjape la jessude par %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Cjape la rotatorie" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Cjape l'assensôr e jes a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Cjape l'assensôr" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fâs une inversion a U a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Fâs une inversion a U a çampe" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fâs une inversion a U a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Fâs une inversion a U a diestre" + +#~ msgid "Check in here" +#~ msgstr "Fâs il check-in chi" + +#~ msgid "Show more information" +#~ msgstr "Mostre plui informazions" + +#~ msgid "Population:" +#~ msgstr "Popolazion:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudin:" + +#~ msgid "Opening hours:" +#~ msgstr "Orari di viertidure:" + +#~ msgid "Internet access:" +#~ msgstr "Acès internet:" + +#~ msgid "Toilets:" +#~ msgstr "Gabinets:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acès disabii:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "sì" + +#~ msgid "limited" +#~ msgstr "limitât pai disabii" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "specific par disabii" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL di OpenStreetMap nol è valit" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "cablade" + +#~ msgid "terminal" +#~ msgstr "terminâl" + +#~ msgid "service" +#~ msgstr "servizi" + +#~ msgid "Find a Route" +#~ msgstr "Cjate un percors" + +#~ msgid "Primary menu" +#~ msgstr "Menù primari" + +#~ msgid "Don’t have an account?" +#~ msgstr "No tu âs un account?" + +#~ msgid "Add destination" +#~ msgstr "Zonte destinazion" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ricercje dal percors cun OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Vierç cuntune altre aplicazion" + +#~ msgid "Press enter to search" +#~ msgstr "Frache Invie par cirî" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Jes" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vierç strât sagome…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cjarie strât de mape" + +#~ msgid "Open Layer" +#~ msgstr "Vierç Strât" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Codiç paîs: %s" + +#~ msgid "_Share" +#~ msgstr "_Condivît" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'ultime posizion e precision cognossude" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'ultime posizion (latitudin e longjitudin in grâts) e precision (in " +#~ "metris) cognossude." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrizion de ultime posizion dal utent." + +#~ msgid "User set last known location" +#~ msgstr "Ultime posizion cognossude impuestade dal utent." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indiche se l'ultime posizion cognossude a je stade impuestade a man dal " +#~ "utent." + +#~ msgid "I’m here!" +#~ msgstr "O soi chi!" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ga.po b/po/ga.po new file mode 100644 index 00000000..b7753be9 --- /dev/null +++ b/po/ga.po @@ -0,0 +1,637 @@ +# Irish translations for gnome-maps package. +# Copyright (C) 2013-2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Seán de Búrca , 2013-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps.master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-01 14:40-0600\n" +"PO-Revision-Date: 2015-10-01 14:52-0600\n" +"Last-Translator: Seán de Búrca \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " +"4;\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:373 +msgid "Maps" +msgstr "Léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Feidhmchlár simplí léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Léarscáileanna;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Méid na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Méid na fuinneoige (leithead agus airde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Ionad na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +#, fuzzy +msgid "Window position (X and Y)." +msgstr "Ionad na fuinneoige (x agus y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Uasmhéadaíodh an fhuinneog" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +#, fuzzy +msgid "Window maximization state" +msgstr "Staid uasmhéadaithe na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent routes to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited routes to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Maidir Leis Seo" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Scoir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cealaigh" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Príobháideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Cad atá anseo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Cóipeáil Suíomh" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Socruithe Suímh" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Téigh go dtí an suíomh reatha" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Roghnaigh cineál léarscáile" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Tá Léarscáileanna as líne!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Cuir le bealach nua" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Oscail le feidhmchlár eile" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Oscail suíomh" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Oscail" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Cuardach bealaí ag GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Taispeáin tuilleadh torthaí" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:209 +msgid "Current location" +msgstr "Suíomh reatha" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Cruinneas: %s" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../src/application.js:86 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Á luchtú" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Roghnaigh áit" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +msgid "An error has occurred" +msgstr "Tharla earráid" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/mainWindow.js:321 +msgid "Failed to connect to location service" +msgstr "" + +#: ../src/mainWindow.js:326 +msgid "Position not found" +msgstr "" + +#: ../src/mainWindow.js:371 +msgid "translator-credits" +msgstr "Seán de Búrca " + +#: ../src/mainWindow.js:374 +msgid "A map application for GNOME" +msgstr "Feidhmchlár léarscáile do GNOME" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Cód poist: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Cód tíre: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Daonra: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Uaireanta oscailte: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Vicipéid" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Bealach isteach do chathaoireacha rothaí: %s" + +#: ../src/placeEntry.js:215 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: ../src/place.js:121 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:128 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: ../src/place.js:134 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:141 +msgid "designated" +msgstr "" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Bealach gan aimsiú." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "" + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Tosaigh!" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:230 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Am measta: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "gach lá" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Anaithnid" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:259 +msgid "Exact" +msgstr "" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f n" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f cm" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mí" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f tr" diff --git a/po/gd.po b/po/gd.po new file mode 100644 index 00000000..573cf67f --- /dev/null +++ b/po/gd.po @@ -0,0 +1,1621 @@ +# Scottish Gaelic translation for gnome-maps. +# Copyright (C) 2016 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# GunChleoc , 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-20\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product" +"=gnome-maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-09-11 20:24+0000\n" +"PO-Revision-Date: 2018-03-02 10:29+0100\n" +"Last-Translator: GunChleoc \n" +"Language-Team: Fòram na Gàidhlig\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " +"(n > 2 && n < 20) ? 2 : 3;\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapaichean GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Lorg àitichean air feadh an t-saoghail" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Bheir Mapaichean dhut inntrigeadh luath dha mhapaichean air feadh an t-" +"saoghail. Leigidh e leat àite a lorg gu luath a-rèir baile no sràide no an t-" +"àite a lorg far a bheil thu airson tachairt ri caraid." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Cleachdaidh Mapaichean stòr-dàta OpenStreetMap co-obrachail a chaidh a " +"chruthachadh leis na mìltean mòra de dhaoine o fheadh an t-saoghail." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"’S urrainn dut fiù ’s lorg airson ionadan sònraichte, can “Taighean-seinnse " +"faisg air Sràid nam Prionnsachan, Dùn Èideann” no “Taighean-òsta faisg air " +"Sràid Sauchiehall, Glaschu”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapaichean" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Aplacaid mhapaichean shimplidh" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;mapaichean;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Faodaidh far a bheil thu a nochdadh air a’ mhapa le seo." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "an t-ionad mu dheireadh a chaidh a shealltainn" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Co-chomharran an ionaid mu dheireadh a chaidh a shealltainn." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Meud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Meud na h-uinneige (leud ’s àirde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Ionad na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Ionad na h-uinneige (x is y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Làn-mheud air an uinneag" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Staid làn-mheud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "An àireamh as motha de thoraidhean luirg" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "An àireamh as motha de thoraidhean luirg o lorg geocode." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Àireamh dhe dh’ionadan o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" +"Àireamh dhe dh’ionadan air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Àireamh dhe shlighean o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "" +"Àireamh dhe shlighean air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Facebook. Seo na luachan as urrainn dhut cleachdadh: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS no SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Foursquare. Seo na luachan as urrainn dhut cleachdadh: public, " +"followers no private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Craoladh Facebook airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar phost sa " +"chunntas Facebook a tha co-cheangailte ris a’ chunntas Foursquare gus nach " +"bu chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Craoladh Twitter airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar tweet sa " +"chunntas Twitter a tha co-cheangailte ris a’ chunntas Foursquare gus nach bu " +"chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Ainm-cleachdaiche no seòladh puist-d OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Innsidh seo an do clàraich an cleachdaiche a-steach gus dàta OpenStreetMap a " +"dheasachadh gus nach do chlàraich." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Suidhich cunntas OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Ath-ghoiridean a’ _mheur-chlàir" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Mu dhèidhinn" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Faicsinneachd" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Postaich air Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Postaich air Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Sguir dheth" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "Noc_hd air" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "A h-uile duine" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Caraidean nan caraidean" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Caraidean a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Mise a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Poblach" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Daoine a leanas orm" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Prìobhaideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Dè tha an-seo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Dèan lethbhreac dhen ionad" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Às-phortaich mar dhealbh" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Às-phortaich an sealladh" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "À_s-phortaich" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Gabh a-steach an t-slighe is na comharran" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Coitcheann" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Seall na h-ath-ghoiridean" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Lorg" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Sealladh a’ mhapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Sùm a-steach" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Sùm a-mach" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toglaich an sgèile" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Fosgail breath" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Luchdaich breath a’ mhapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Cuir seirbheisean ionaid air gus lorg far a bheil thu" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Roghainnean ionaid" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Tagh seòrsa a’ mhapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Toglaich na h-annsachdan" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "Tha Mapaichean far loidhne!" + +#: ../data/ui/main-window.ui.h:13 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Tha Mapaichean feumach air ceangal dhan eadar-lìon gus obrachadh mar bu " +"chòir ach cha deach gin a lorg." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Thoir sùil air roghainnean a’ cheangail ’s a’ phrogsaidh agad." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Cuir ri slighe ùr" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Fosgail le aplacaid eile" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Comharraich ’na h-annsachd" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Nochd seo" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Cunntas OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Clàraich a-steach gus mapaichean a " +"dheasachadh" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Cuidich gus piseach a thoirt air a’ mhapa\n" +"le cunntas OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Post-d" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Facal-faire" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Clàraich a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Nach eil cunntas agad?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Tha sinn duilich ach cha do dh’obraich sin. Feuch ris a-rithist no tadhail " +"air\n" +"OpenStreetMap gus am facal-faire agad ath-shuidheachadh." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Cha robh an còd dearbhaidh mar bu chòir, am feuch thu ris a-rithist?" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Cuir a-steach an còd dearbhaidh a chì thu gu h-àrd" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Dearbhaich" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Air do chlàradh a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Tha an cunntas OpenStreetMap agad gnìomhach." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Clàraich a-mach" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Sràid" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Àireamh an taighe" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còd-puist" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Baile" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Seòrsa" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Chan eil gin" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Cuir raon ris" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Beachd" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Chithear atharraichean a’ mhapa air a h-uile mapa a chleachdas\n" +"dàta OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Air an cleachdadh o chionn ghoirid" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Sguir dheth" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Air adhart" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Seall barrachd fiosrachaidh" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Brùth air Enter airson lorg" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cha deach toradh a lorg" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Slaod gus òrdugh na slighe atharrachadh" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Fosgail ionad" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "F_osgail" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Fosgail breath" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Toglaich an fhaicsinneachd" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Lorg shlighean le GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Lorg shlighean le OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Seall barrachd toraidhean" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "An t-ionad làithreach" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Pongalachd: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Sùm a-steach gus ionad a chur ris!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Ceart ma-thà" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Cha deach leinn structar leacagan a lorg sa phasgan" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Dh’fhàillig le parsadh na sgrìobhainn XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Tha roghainnean riatanach a dhìth" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Cha deach leinn eileamaid OSM a lorg" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Slighe gu structar pasgain leacagan ionadail" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Tagh cunntas" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "’Ga luchdadh" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Tagh àite" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Facebook. Tagh fear " +"on liosta seo." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Foursquare. Tagh fear " +"on liosta seo." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Nochd %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Sgrìobh teachdaireachd ma thogras tu gus %s a nochdadh." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "Thachair mearachd" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Cha b’ urrainn dhuinn “%s” a lorg san t-seirbheis sòisealta" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Cha b’ urrainn dhuinn àite iomchaidh a lorg gus an t-ionad seo a nochdadh" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Dh’fhalbh an ùine air an teisteas, fosgail na cunntasan air loidhne gus " +"clàradh a-steach agus an cunntas seo a chur an comas" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Slighe on a sheo" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Cuir ceann-uidhe ris" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Slighe dhan a sheo" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "Cha deach dad a lorg an-seo!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Chaidh an t-ionad a chur ris a’ mhapa. Thoir an aire gun doir e greis mhath " +"mus nochd e air a’ mhapa agus ann an toraidhean luirg." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Tha an siostam-faidhlichean ri leughadh a-màin" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Chan eil cead agad gus rud a shàbhaladh an-seo" + +#: ../src/exportViewDialog.js:160 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Chan eil am pasgan ann" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Cha deach ainm-faidhle a shònrachadh" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Cha b’ urrainn dhuinn an sealladh às-phortadh" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "co-chomharran mì-dhligheach" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "mearachd parsaidh" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geomatras nach aithne dhuinn" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Dh’fhàillig le iarrtas slighe." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "Cha deach slighe a lorg." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Tòisich!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "A h-uile faidhle breatha" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Dh’fhàillig an ceangal ris an t-seirbheis ionadan" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "GunChleoc " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Aplacaid mhapaichean airson GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Cha chuirear taic ris an t-seòrsa faidhle" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "Dh’fhàillig le fosgladh na breatha" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "Dh’fhàillig le fosgladh GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:623 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" +"Chan eil an t-ainm-cleachdaiche no chan eil am facal-faire mar bu chòir" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Shoirbhich leis" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Droch iarrtas" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "Cha deach an t-oibseact a lorg" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Còmhstri, tha cuideigin eile dìreach air an t-oibseact atharrachadh" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Chaidh an t-oibseact a sguabadh às" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tha an t-slighe no an dàimh a’ toirt iomradh air clann nach eil ann" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Ainm" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "Ainm oifigeil. Seo na nochdas air sanasan mar as trice." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Seòladh" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Làrach-lìn" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"An làrach-lìn oifigeil. Feuch an cleachd thu an dreach as bunasaiche dhen " +"URL, can http://ball-eisimpleir.com seach http://ball-eisimpleir.com/index." +"html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Fòn" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"An àireamh fòn. Cleachd am fòrmat eadar-nàiseanta, a’ tòiseachadh le samhla " +"+. Thoir an aire air laghan prìobhaideachd ionadail, gu h-àraidh a thaobh " +"àireamhan prìobhaideach." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "An Uicipeid" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Bu chòir dhan fhòrmat a chleachdas tu an còd cànan agus tiotal na h-aiste a " +"ghabhail a-steach, can “gd:Tiotal na h-aiste”." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Uairean fosglaidh" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Faic an ceangal san leubail airson cobhair mun fòrmat." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Sluagh" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Àirde" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Meatair a dh’àirde (os cionn na mara) aig puing." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Inntrigeadh cathrach-cuibhle" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Tha inntrigeadh ann" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "Chan eil inntrigeadh ann" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Cuingichte" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Ainmichte" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Inntrigeadh an eadar-lìn" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "WiFi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Le uèir" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Tèirmineal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Seirbheis" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Creideamh" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "An aire" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Tagh seòrsa" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Deiseil" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Sluagh:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Àirde:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Uairean fosglaidh:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Inntrigeadh an eadar-lìn:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Creideamh:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Taighean-beaga:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Inntrigeadh cathrach-cuibhle:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Fòn:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Dh’fhàillig le parsadh a’ Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "tha inntrigeadh ann" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "cuingichte" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "chan eil inntrigeadh ann" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "ainmichte" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "O %s gu %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "A’ luchdadh leacagan a’ mhapa a chum clò-bhualaidh" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "’S urrainn dhut sgur dhen chlò-bhualadh ma bheir e ro fhada" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Sguir dhen chlò-bhualadh" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "Dh’fhàillig le fosgladh URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "dh’fhàillig le luchdadh faidhle" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tuairmse air an ùine: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +#| msgid "Start!" +msgid "Start" +msgstr "Toiseach" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mhionaid" +msgstr[1] "%d mhionaid" +msgstr[2] "%d mionaidean" +msgstr[3] "%d mionaid" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d uair a thìde" +msgstr[1] "%d uair a thìde" +msgstr[2] "%d uairean a thìde" +msgstr[3] "%d uair a thìde" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d uair a thìde" +msgstr[1] "%d:%02d uair a thìde" +msgstr[2] "%d:%02d uairean a thìde" +msgstr[3] "%d:%02d uair a thìde" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "fad an latha" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "o èirigh gu laighe na grèine" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "gach latha" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "saor-làithean poblach" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "saor-làithean sgoile" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "dùinte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "le uèir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "tèirmineal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "seirbheis" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Chan eil fhios" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Pongail" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f mion" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f d" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mì" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s troigh" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mì" + +#~ msgid "%f ft" +#~ msgstr "%f troigh" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 00000000..8e88bfae --- /dev/null +++ b/po/gl.po @@ -0,0 +1,1976 @@ +# Galician translations for PACKAGE package. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Fran Diéguez , 2013. +# Fran Dieguez , 2013-2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-18 17:32+0000\n" +"PO-Revision-Date: 2021-02-24 22:34+0100\n" +"Last-Translator: Fran Diéguez \n" +"Language-Team: Proxecto Trasno \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 3.38.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Busque lugares por todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas dálle acceso a mapas de todo o mundo. Permítelle buscar de forma " +"rápida o lugar que está buscando por cidade ou rúa, ou localizar un lugar " +"para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapa usa a base de datos colaborativa de OpenStreetMap, feita por centos de " +"persoas por todo o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Incluso pode buscar por tipos de localizacións específicos como «Bares cerca " +"de Rúa Nova, Compostela» ou «Puntos Wifi cerca de Praza de Galiza, " +"Vilagarcía»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "O Proxecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Unha aplicación sinxela de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permitir que se mostre a súa localización no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localización vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localización vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a mostrar (rúas, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño da xanela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño da xanela (ancho e alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición da xanela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición da xanela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Xanela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximizado de xanela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de busca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número de máximo de resultados de busca para as buscas xeolocalizada." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última configuración de privacidade do rexistro de Facebook. Os valores " +"posíbeis son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidade do rexistro de Foursquare. Os valores " +"posíbeis son: public, followers ou private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un mensaxe novo na conta " +"de Facebook asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un chío novo na conta de " +"Twitter asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuario ou enderezo de correo de OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuario iniciou sesión para editar datos en OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "O último tipo de transporte para enrutado usado" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo noite" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indica se a aplicación está en modo noite." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usar teselas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica se as teselas aéreas deberían usar o estilo híbrido (con etiquetas)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Enviar a Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Enviar a Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Rexistrar" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Só amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Só eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Engadir un destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta a aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Que hai aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localización" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluír rutas e marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir á localización actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Escolla o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Afastar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Activar/desactivar o planificador de rutas" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Trocar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Xeral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atallos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Trocar o planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Saír" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista do mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Afastar" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Trocar escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir á localización actual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Trocar á vista de rúa" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Trocar á vista aérea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir a capa de relieve…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Active os servizos de localización para buscar a súa localización" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Preferencias de localización" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noite" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar unha conta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imaxe" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Atallos de _teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapa precisa unha conexión a internet activa para funcionar correctamente, " +"pero non se atopou ningunha." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Comprobe a súa conexión ou preferencias do seu proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Iniciar sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Axude a mellorar o mapa, use unha\n" +"conta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo electrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasinal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rexistrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Isto non funcionou. Ténteo de novo ou visite\n" +"OpenStreetMap para restabelecer o seu contrasinal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificación non coincide, probe de novo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Escriba o código de verificación mostrado arriba" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Comprobar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A súa conta de OpenStreetMap está activa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Pechar a sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rúa" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ningún" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Engadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Os cambios no mapa serán visíbeis en todos os\n" +"mapas que usen datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usados recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Seguinte" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Non se atoparon resultados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Produciuse un erro" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastrar a orde de cambio de ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localización" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Rexistrarse…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Trocar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Busca de ruta por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Os itinerarios de ruta para o tránsito público están fornecidos por servizos " +"de terceiros.\n" +"GNOME non ofrece ningunha garantía de que os datos e horarios dos " +"itinerarios sexan\n" +"correctos. \n" +"Teña en conta que algúns fornecedores poden non incluír todos os modos " +"dispoñíbeis\n" +"de transporte, por exemplo o fornecedor nacional pode non incluír as " +"aeroliñas, e o \n" +"fornecedor local pode omitir os trens rexionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar máis resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermedias e información" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar paradas intermedias e información" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Saír agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sae ás" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chega ás" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avións" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Compartir localización" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Engadir unha nova ruta" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direccións" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplíe para engadir unha localización!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Produciuse un fallo ao atopar a estrutura de teselas no cartafol" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Produciuse un fallo ao analizar o XML do documento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan atributos requiridos" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Non foi posíbel atopar o elemento de OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Unha ruta a unha estrutura de directorios de teselas locais" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamaño de tesela para o cartafol de teselas locais" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra a versión do programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar a dispoñibilidade da rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccione unha conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccione un lugar" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Facebook. Por favor " +"seleccione un desde a lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Foursquare. Por favor " +"seleccione un desde a lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Rexistrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriba unha mensaxe opcional para rexistrarse en %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Non se pode atopar «%s» no servizo social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Non é posíbel atopar un lugar axeitado para rexistrarse nesta localización" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As súas credenciais expiraron, abra as «Contas en liña» para iniciar sesión " +"e activar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non se atopou nada aquí!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Engadiuse a localización ao mapa, teña en conta que pode tardar algún tempo " +"antes de que se mostre no mapa e nos resultados de busca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é de só lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non ten permiso para gardar aquí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O cartafol non existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nome de ficheiro non especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Non foi posíbel exportar a vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localización actual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada non válida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro na análise" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "xeometría descoñecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Produciuse un fallo na solicitude de ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Non se atopou a ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Comezar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de capa" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Produciuse un fallo ao conectar co servizo de localización" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Fran Diéguez , 2013-2020" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Unha aplicación de mapas para GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e os autores de Mapas de GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos do mapa por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Teselas de mapas fornecidas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Busca fornecida por %s usando %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Produciuse un fallo ao abrir a capa" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Desexa continuar?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Está a piques de abrir ficheiros con un tamaño total de %s MB. Isto pode " +"tardar algún tempo en cargar" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Tipo de ficheiro non admitido" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Produciuse un fallo ao abrir o GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome de usuario ou contrasinal non correcto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Éxito" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitude non válida" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "O obxecto non se atopou" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguén modificou o obxecto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O obxecto foi eliminado" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "A forma ou relación refírese aos fillos non existentes" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é o aparece normalmente nos sinais." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Enderezo" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Sitio web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Esta non é un URL válido. Asegúrese que inclúe http:// ou https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O sitio web oficial. Tente usar o formulario máis básico de URL p.ex. http://" +"exemplo.gal no lugar de http://exemplo.gal/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use o formato internacional, comezando polo signo +. Teña " +"en conta as leis de privacidade locais." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato usado debería incluír o código de idioma e o título do artigo como " +"«gl:Título do artigo»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Horas de apertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Vexa a ligazón na etiqueta para obter axuda no formatado." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Poboación" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre o nivel do mar) do punto en metros." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Acceso con cadeira de rodas" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Si" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Deseñado" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Acceso a internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Sen fíos" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Con fíos" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servizo" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Relixión" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Xainismo" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Xudaísmo" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiples relixións" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciloxía" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sixismo" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoísmo" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalismo unitario" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Xazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para informar a outros mapeadores sobre información non " +"obvia sobre un elemento, un intento do autor de crealo ou pistas sobre " +"futuras melloras." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleccione tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Lugar sen nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Produciuse un fallo ao analizar o URI Geo" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precisión" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Número de teléfono" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Acceso a internet pública" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Non hai acceso a internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wifi público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Acceso a internet cableado" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computadores dispoñíbeis para o uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Asistencia a internet dispoñíbel" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Sen baños dispoñíbeis" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Baños dispoñíbeis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Acceso con cadeira de rodas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Acceso con cadeira de rodas limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Sen acceso con cadeira de rodas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Deseñado para usuarios de cadeira de rodas" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Relixión:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar non atopada en OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL non son válidas" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "O URL non é compatíbel" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Desde %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando teselas do mapa para a impresión" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impresión se isto leva moito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Engadir mediante localización" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar mediante localización" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inverter ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Engadir %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Produciuse un fallo ao abrir o URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "produciuse un fallo ao cargar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camiñar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chega ás %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucións do camiño" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucións do camiño" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non hai alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non hai alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Non se atoparon datos de horarios para esta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Non hai un fornecedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Todo o día" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Desde o solpor ao amencer" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Vacacións públicas" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacacións de escola" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "non aberto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Descoñecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s pes" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este engadido non admite a última chegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuar en %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuar" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Xire á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Xire á esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Xire lixeiramente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Xire lixeiramente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Xire bruscamente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Xire bruscamente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Xire á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Xire á dereita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Xire lixeiramente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Xire lixeiramente á dereita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Xire bruscamente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Xire bruscamente á dereita" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotonda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotonda, tome a saída a %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Tome a rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Colla o ascensor e saia en %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Colla o ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faga un xiro en U" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faga un xiro en U á dereita" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Buscar unha ruta" + +#~ msgid "Check in here" +#~ msgstr "Rexistrarse aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostrar máis información" + +#~ msgid "Population:" +#~ msgstr "Poboación:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horario de apertura:" + +#~ msgid "Internet access:" +#~ msgstr "Acceso a internet:" + +#~ msgid "Toilets:" +#~ msgstr "Baño:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acceso con cadeira de rodas:" + +#~ msgid "Phone:" +#~ msgstr "Teléfono:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "O URL de OpenStreetMap non é válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "con fíos" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servizo" + +#~ msgid "Don’t have an account?" +#~ msgstr "Non ten unha conta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Engadir destino" diff --git a/po/he.po b/po/he.po new file mode 100644 index 00000000..f1a6140b --- /dev/null +++ b/po/he.po @@ -0,0 +1,2019 @@ +# Hebrew translations for gnome-maps package. +# Copyright (C) 2013 THE gnome-maps'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# יוסף אור בוצ׳קו , 2013. +# Yosef Or Boczko , 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.9.91\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-20 09:01+0000\n" +"PO-Revision-Date: 2021-03-31 19:24+0300\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: עברית <>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " +"2 : 3);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME מפות" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "מציאת מקומות מסביב לעולם" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"מפות נותן לך גישה מהירה למפות על פני כל העולם. הוא מאפשר לך למצוא במהירות את " +"המקום שאתה מחפש באמצעות חיפוש עיר או רחוב, או לאתר מקום לפגישת חבר." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"מפות משתמש במסד הנתונים השיתופי OpenStreetMap, שנוצר על ידי מאות אלפי אנשים " +"על פני כדור הארץ." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ניתן לחפש גם מקום מסוים, כמו „בית קפה ליד הרחוב הראשי, ירושלים” או „מלון " +"קרוב לאוניברסיטה, תל אביב”." + +#: data/org.gnome.Maps.appdata.xml.in:197 +msgid "The GNOME Project" +msgstr "מיזם GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "מפות" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "יישום מפות פשוט" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "מפות;מפה;maps;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "מאפשר למיקום שלך להיראות על המפה." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "תקריב" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "רמת תקריב" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "סוג מפה" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "סוג המפה להצגה (רחוב, אווירית וכו׳)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximized" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximization state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "סוג התחבורה האחרונה לניווט" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "מצב לילה" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "האם היישום הוא במצב לילה." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "להשתמש באריחים אוויריים משולבים" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "האם אריחים אוויריים אמורים להשתמש בסגנון משולב (עם תוויות)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "נראה" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "לפרסם בפייסבוק" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "לפרסם בטוויטר" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_ביטול" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "ה_רשמה" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "כולם" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "חברים של חברים" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "חברים בלבד" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "רק אני" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "ציבורי" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "עוקבים" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "פרטי" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "מסלול מכאן" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "הוספת יעד ביניים" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "מסלול לכאן" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "מה זה כאן?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "העתקת מיקום" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "הוספה אל OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "תצוגת ייצוא" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_ייצוא" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "לכלול מסלול וסימונים" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "בחירת סוג המפה" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "להתרחק" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "להתקרב" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "להציג/להסתיר מתכנן מסלול" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "מועדפים" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "הדפסת מסלול" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "כללי" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "הצגת צירופי מקשים" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "חיפוש" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "הצגה/הסתרת מתכנן מסלול" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "הדפסת מסלול" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "יציאה" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "פתיחת התפריט הראשי" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "תצוגת מפה" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "התקרבות" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "התרחקות" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "הצגת סרגל קנה מידה" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "מעבר לתצוגת רחוב" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "מעבר לתצוגה אווירית" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "לפתוח שכבת צורות" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "להציג תוויות" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "לפתוח שכבת צורות…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "הפעלת שירותי איכון למציאת המיקום שלך" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ביטול" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "הגדרות מיקום" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "מצב לילה" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "הגדרת חשבון OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "לייצא כתמונה" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_צירופי מקשים" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "על תכנית המפות" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "פתיחת התפריט הראשי" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "מפות איננו מקוון!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "למפות דרוש חיבור אינטרנט פעיל כדי לתפקד כראוי, אך אין כזה." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "יש לבדוק את החיבור שלך ואת הגדרות הפרוקסי." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "חשבון OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "התחברות לעריכת מפות" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"עזרה בשיפור המפה,\n" +"באמצעות חשבון OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "דוא״ל" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ססמה" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "להירשם" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "התחברות" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"זה לא עבד, עמך הסליחה. נא לנסות שוב או לבקר\n" +"‫‫ב־OpenStreetMap כדי לאפס את הססמה שלך." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "קוד האימות לא מתאים, נא לנסות שוב." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "יש להזין את קוד האימות המוצע למעלה" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "אימות" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "התחברות" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "חשבון ה־OpenStreetMap שלך פעיל." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "התנתקות" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "רחוב" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "מספר בית" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "מיקוד" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "עיר" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "סוג" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ללא" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "הוספת שדה" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "הערות" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"שינויים במפה יופיעו בכל המפות המשתמשות\n" +"במידע מ־OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "בשימוש לאחרונה" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "הבא" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "לא נמצאו תוצאות" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "התרחשה שגיאה" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "יש לגרור לשינוי סדר המסלול" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "לפתוח את המיקום" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "העתקה" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "לשלוח אל…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "להירשם במיקום…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "לפתוח שכבת צורות" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_פתיחה" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "הצגה" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "חיפוש מסלולים באמצעות GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"הרכבת מסלולי הנסיעה בתחבורה הציבורית מסופקת על ידי שירותי‬\n" +"‫צד־שלישי.‬\n" +"‫ל־GNOME אין אפשרות לאמת את תוקף המידע של המסלולים ולוחות הזמנים המופיעים.‬\n" +"‫נא לשים לב שחלק מהספקים עשויים לא לכלול את כל תצורות התחבורה הזמינות,‬\n" +"‫למשל ספק לאומי עשוי שלא לכלול קווי תעופה וספק מקומי יכול לפספס רכבות " +"אזוריות.‬\n" +"‫יש להתייחס לשמות ולמותגים כסימני מסחר רשומים בהתאם לצרכים." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "הצגת תוצאות נוספות" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "להסתיר מידע ותחנות ביניים" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "להציג מידע ותחנות ביניים" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "לצאת כעת" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "לצאת עד" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "להגיע עד" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "הצגה" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "אוטובוסים" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "חשמליות" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "רכבות" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "רכבת תחתית" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "מעבורות" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "מטוסים" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "שיתוף מיקום" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "הוספה למסלול חדש" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "הנחיות" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "סימון כמועדף" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "יש להתקרב כדי להוסיף מיקום!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "להתקרב" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "חיפוש מבנה אריח בתיקייה נכשל" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "ניתוח מסמך XML נכשל" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "חסרות תכונות חיוניות" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "לא ניתן למצוא יסוד OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "נתיב לתיקייה מבני אריחים מקומיים" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "גודל אריח לתיקיית האריחים המקומית" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "להציג את גרסת התכנית" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "להתעלם מזמינות הרשת" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[קובץ…|כתובת]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "בחירת חשבון" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "בטעינה" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "בחירת מקום" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Facebook. נא לבחור אחד מרשימה זו." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Foursquare. נא לבחור אחד מרשימה זו." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "נרשם עבור %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "כתיבת הודעה אפשרית להרשמה עבור %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "לא ניתן למצוא את „%s” בשירות הרשת החברתי" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "לא ניתן למצוא מקום מתאים להירשם במיקום זה" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "האישורים פגי תוקף, נא לפתוח חשבונות מקוונים להתחברות ולאפשר חשבון זה" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "לא נמצא כאן דבר!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"מיקום נוסף למפה, יש לשים לב כי יתכן ויעבור זמן מה לפני שהוא יוצג על המפה " +"ובתוצאות החיפוש." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "מפות ב־%f,‏ %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "מערכת הקבצים היא לקריאה בלבד" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "אין לך הרשאות לשמירה כאן" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "התיקייה אינה קיימת" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "לא צוין שם קובץ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "לא ניתן לייצא תצוגה" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "מיקום נוכחי" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "נקודת ציון לא חוקית" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "שגיאת ניתוח" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "שגיאה הנדסית" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "בקשת המסלול נכשלה." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "לא נמצא מסלול." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "להתחיל!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "כל שכבות הקבצים" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "ההתחברות לשרת האיכון נכשלה" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "יוסף אור בוצ׳קו " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "יישום מפות עבור GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"כל הזכויות שמורות © 2011 – 2021 ל־Red Hat בע״מ וליוצרי תכנית המפות של GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "נתוני המפה באדיבות %s והמתנדבים במיזם" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "אריחי המפה סופקו על ידי %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "החיפוש סופק על ידי %s בעזרת %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "אירע כשל בפתיחת שכבה" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "להמשיך?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "פעולה זו תפתח קבצים בגודל כולל של %s מ״ב. הטעינה עשויה לארוך זמן מה" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "סוג הקובץ אינו נתמך" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "אירע כשל בפתיחת GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "שם או ססמה לא נכונים" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "הצלחה" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "בקשה שגויה" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "עצם לא נמצא" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "התנגשות, מישהו אחר שינה את העצם זה עתה" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "העצם נמחק" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "נתיב או יחס מפנה לילדים לא קיימים" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "שם" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "השם הרשמי. זה בדרך כלל מה שמופיע על השילוטים." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "כתובת" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "אתר אינטרנט" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "זו אינה כתובת תקפה. נא לוודא שכללת את התחיליות http://‎ או https://‎." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"אתר האינטרנט הרשמי. יש לנסות להשתמש בצורה הבסיסית ביותר של הכתובת. למשל " +"http://example.com במקום http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "טלפון" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"מספר טלפון. יש להשתמש בתבנית בינלאומית, המתחיל עם סימן פלוס +. יש להיזהר " +"מחוקי הפרטיות, בפרט עבור מספרי טלפון פרטיים." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "ויקיפדיה" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"התבנית בשימוש צריכה לכלול את קוד השפה ואת כותרת הערך. למשל: \"he:כותרת הערך." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "שעות פתיחה" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "ניתן לקבל עזרה עבור התבנית בקישור בתווית." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "אוכלוסייה" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "גובה" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "גובה (גובה מעל פני הים) של נקודה במטרים." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "נגישות נכים" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "יש" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "אין" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "מוגבל" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "מובנה" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "גישה לאינטרנט" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "רשת אלחוטית" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "רשת קווית" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "מסוף" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "שרת" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "דת" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "אנימיזם" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "בהאית" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "בודהיזם" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "קאודאיזם" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "נצרות" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "קונפוציוסיזם" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "הינדואיזם" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "ג׳ייניזם" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "יהדות" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "אסלאם" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "מגוון דתות" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "פגניות" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "פסטפריאניזם" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "סיינטולוגיה" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "שינטו" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "סיקיזם" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "ספיריטואליזם" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "דאואיזם" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "אוניברסליזם אוניטריאני" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "וודו" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "יזידיזם" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "זורואסטריות" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "שירותים" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "הערה" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"מידע שמשמש ליידע ממפים אחרים בנוגע למידע בלתי מובן מאליו בנוגע לרכיב, מטרת " +"הכותב בעת יצירתה או רמזים לשיפור נוסף." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "הוספה ל־OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "בחירת סוג" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "בוצה" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "מקום ללא שם" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "ניתוח כתובת Geo נכשל" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "נקודת ציון" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "דיוק" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "דיוק: ‏%s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "מספר טלפון" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "גישה ציבורית לאינטרנט" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "אין גישה לאינטרנט" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "רשת אלחוטית ציבורית" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "גישה לאינטרנט עם כבל" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "מחשבים זמינים לשימוש" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "יש עזרה עם האינטרנט" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "אין שירותים זמינים" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "יש שירותים זמינים" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "גישה לנכים" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "גישה מוגבלת לנכים" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "אין גישה לנכים" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "מוקצה למשתמשי כסאות גלגלים" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "דת:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "המקום לא נמצא ב־OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "נקודות הציון שבכתובת שגויות" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "הכתובת לא נתמכת" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "מ־%s אל %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "טוען אירי מפה להדפסה" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "נתן לבטל ההדפסה אם היא לוקחת יותר מדי זמן" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ביטול הדפסה" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "הוספה דרך מיקום" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "הסרה דרך מיקום" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "להפוך את המסלול" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "הוספת %s אל %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "פתיחת הכתובת נכשלה" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "לפתוח עם %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "אירע כשל בטעינת הקובץ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "זמן משוער: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "המסלולים סופקו על ידי %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "להתחיל בנקודה %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "התחלה" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "ללכת %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "להגיע אל %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "הגעה" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "להציג הנחיות הליכה" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "להסתיר הנחיות הליכה" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "לטעון חלופות קודמות" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "לטעון חלופות מאוחרות" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "לא נמצאו חלופות מוקדמות." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "לא נמצאו חלופות מאוחרות יותר." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e ב%b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "לא נמצאו נתוני לוח זמנים למסלול הזה." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "לא נמצא ספק למסלול הזה." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +#| msgid "%f min" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "דקה" +msgstr[1] "שתי דקות" +msgstr[2] "‫%s דקות" +msgstr[3] "‫%s דקות" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "שעה" +msgstr[1] "שעתיים" +msgstr[2] "‫%s שעות" +msgstr[3] "‏‫%s שעות" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "‫%s:%s שעה" +msgstr[1] "‫%s:%s שעתיים" +msgstr[2] "‫%s:%s שעות" +msgstr[3] "‫%s:%s שעות" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "מסביב לשעון" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "מהזריחה עד השקיעה" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "כל יום" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s – %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "חגים ציבוריים" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "חופשי בית ספר" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "לא פתוח" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s – %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "לא ידוע" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "מדויק" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "‫%s שע׳" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "‫%s שע׳ %s דק׳" +msgstr[1] "‏‫%s שע׳ %s דק׳" +msgstr[2] "‏‫%s שע׳ %s דק׳" +msgstr[3] "‏‫%s שע׳ %s דק׳" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +#| msgid "%f min" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "‫%s min" +msgstr[1] "‫%s min" +msgstr[2] "‫%s דק׳" +msgstr[3] "‫%s דק׳‎" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "‏‫%s שנ׳" +msgstr[1] "‏‫%s שנ׳" +msgstr[2] "‏‫%s שנ׳" +msgstr[3] "‏‫%s שנ׳" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "‫%s ק״מ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "‫%s מ׳" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "‫%s מיל" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "‫%s רגל" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "התוסף הזה לא תומך בהגעה המאוחרת ביותר" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "להמשיך על %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "להמשיך" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "לפנות שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "לפנות שמאלה" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "לסטות שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "לסטות שמאלה" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "לפנות שמאלה בחדות אל %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "לפנות שמאלה בחדות" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "לפנות ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "לפנות ימינה" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "לסטות ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "לסטות ימינה" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "לפנות ימינה בחדות אל %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "לפנות ימינה בחדות" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "בכיכר, לצאת ביציאה ה%s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "בכיכר, לצאת ביציאה אל %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "להיכנס לכיכר" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "להשתמש במעלית ולצאת בקומה %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "להשתמש במעלית" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "לפנות פניית פרסה שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "לפנות פניית פרסה שמאלה" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "לפנות פניית פרסה ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "לפנות פניית פרסה ימינה" + +#~ msgid "Quit" +#~ msgstr "יציאה" + +#~ msgid "Load Map Layer" +#~ msgstr "טעינת שכבת מפה" + +#~ msgid "Open with another application" +#~ msgstr "פתיחה באמצעות יישום אחר" + +#~ msgid "Check in here" +#~ msgstr "הרשמה כאן" + +#~ msgid "Don't have an account?" +#~ msgstr "אין לך חשבון?" + +#~ msgid "Press enter to search" +#~ msgstr "יש ללחוץ Enter לחיפוש" + +#~ msgid "OK" +#~ msgstr "אישור" + +#~ msgid "Population:" +#~ msgstr "אוכלוסייה:" + +#~ msgid "Altitude:" +#~ msgstr "גובה:" + +#~ msgid "Opening hours:" +#~ msgstr "שעות פתיחה:" + +#~ msgid "Internet access:" +#~ msgstr "גישת אינטרנט:" + +#~ msgid "Wheelchair access:" +#~ msgstr "נגישות נכים:" + +#~ msgid "Phone:" +#~ msgstr "טלפון:" + +#~ msgid "yes" +#~ msgstr "יש" + +#~ msgid "limited" +#~ msgstr "מוגבל" + +#~ msgid "no" +#~ msgstr "אין" + +#~ msgid "designated" +#~ msgstr "מובנה" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "אתרנט" + +#~ msgid "terminal" +#~ msgstr "מסוף" + +#~ msgid "service" +#~ msgstr "שרת" + +#~ msgid "%f h" +#~ msgstr "%f שעות" + +#~ msgid "%f s" +#~ msgstr "%f שניות" + +#~ msgid "%f km" +#~ msgstr "%f ק״מ" + +#~ msgid "%f m" +#~ msgstr "%f מ׳" + +#~ msgid "%f mi" +#~ msgstr "%f מיל" + +#~ msgid "%f ft" +#~ msgstr "%f רגל" + +#~ msgid "Country code: %s" +#~ msgstr "קוד מדינה: %s" + +#~ msgid "_Share" +#~ msgstr "_שיתוף" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "User set last known location" +#~ msgstr "User set last known location" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I’m here!" +#~ msgstr "אני כאן!" + +#~ msgid "%f km²" +#~ msgstr "‏%f ק״מ²" + +#~ msgid "To" +#~ msgstr "אל" + +#~ msgid "From" +#~ msgstr "מ" + +#~ msgid " km2" +#~ msgstr " ק״מ2" + +#~ msgid "Satellite" +#~ msgstr "לווין" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 00000000..bcc3d5be --- /dev/null +++ b/po/hi.po @@ -0,0 +1,261 @@ +# Hindi translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Solomon Nadar , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-11-09 07:50+0000\n" +"PO-Revision-Date: 2014-11-09 20:06-0000\n" +"Last-Translator: Solomon Nadar \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"नक्शे आपको सभी दुनिया भर में नक्शे के लिए त्वरित पहुँच देता है. दोस्त से मिलने के लिए एक जगह " +"का पता लगाने के लिए, या जल्दी से एक शहर या सड़क के लिए खोजकर आप ढूंढ रहे जगह आपको " +"बताती है." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"नक्शे दुनिया भर में हजारों, सैकड़ों लोगों के द्वारा बनाई सहयोगी OpenStreetMap डेटाबेस का " +"उपयोग करता है." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"\"मेन स्ट्रीट के पास पब, बोस्टन\" या \"अलेक्सान्देरप्लात्ज़ के पास होटल, बर्लिन\" इस तरह के " +"रूप में स्थानों के विशिष्ट प्रकार के लिए भी आप खोज कर सकते हैं." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:79 +#: ../src/mainWindow.js:347 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "नक्शे" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "एक साधारण नक्शा अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "नक्शे;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "खिड़की का आकर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "खिड़की का आकर (चौड़ाई और ऊंचाई)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "खिड़की स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "खिड़की स्थान (X और Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "खिड़की अधिकतम पर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "खिड़की अधिकतम स्थिति" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "अंतिम ज्ञात स्थान और सटीकता" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "अंतिम ज्ञात स्थान (अक्षांश और देशांतर डिग्री में) और सटीकता (मीटर में)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "अंतिम ज्ञात स्थान का विवरण" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "उपयोगकर्ता की अंतिम ज्ञात स्थान का विवरण." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "खोज परिणामों की अधिकतम संख्या" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "जियोकोड खोज से खोज परिणामों की अधिकतम संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "उपयोगकर्ता ने सेट की अंतिम ज्ञात स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "अंतिम ज्ञात स्थान उपयोगकर्ता द्वारा मैन्युअल रूप से सेट किया गया था या नहीं." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "जमा करने हाल के स्थानों की संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "जमा करने हाल के दर्शन किये स्थानों की संख्या." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "के बारे में" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "छोड़े" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहाँ क्या है?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "मैं यहां हूं!" + +#: ../src/geoclue.js:137 ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "वर्तमान स्थान" + +#: ../src/mainWindow.js:345 +msgid "translator-credits" +msgstr "अनुवादक-प्रसिद्धि" + +#: ../src/mainWindow.js:348 +msgid "A map application for GNOME" +msgstr "GNOME के लिए एक नक्शा अनुप्रयोग" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "वर्तमान स्थान पर जाएं" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "नक्शा प्रकार चुनें" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "मार्ग योजनाकार टॉगल करें " + +#: ../src/main-window.ui.h:5 +msgid "Maps is offline!" +msgstr "नक्शे ऑफ़लाइन है!" + +#: ../src/main-window.ui.h:6 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"नक्शे ठीक ढंग से काम करने के लिए एक सक्रिय इंटरनेट कनेक्शन की जरूरत है, लेकिन एक नहीं पाया " +"जा सका." + +#: ../src/main-window.ui.h:7 +msgid "Check your connection and proxy settings." +msgstr "आपके कनेक्शन और प्रॉक्सी सेटिंग्स की जाँच करें." + +#: ../src/routeService.js:72 +msgid "No route found." +msgstr "कोई मार्ग नहीं मिला." + +#: ../src/routeService.js:79 +msgid "Route request failed." +msgstr "मार्ग अनुरोध विफल." + +#: ../src/routeService.js:150 +msgid "Start!" +msgstr "शुरू करो!" + +#: ../src/searchResultBubble.js:58 +#, javascript-format +msgid "Country code: %s" +msgstr "देश कोड: %s" + +#: ../src/searchResultBubble.js:64 +#, javascript-format +msgid "Postal code: %s" +msgstr "डाक कोड: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:236 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अनुमानित समय: %s" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "सटीकता: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:189 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:192 +msgid "Exact" +msgstr "ठीक" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f h" +msgstr "%f घं" + +#: ../src/utils.js:293 +#, javascript-format +msgid "%f min" +msgstr "%f मि" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:304 +#, javascript-format +msgid "%f km" +msgstr "%f किमी" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:307 +#, javascript-format +msgid "%f m" +msgstr "%f मी" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:315 +#, javascript-format +msgid "%f mi" +msgstr "%f मील" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:318 +#, javascript-format +msgid "%f ft" +msgstr "%f फी" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 00000000..37e680d3 --- /dev/null +++ b/po/hr.po @@ -0,0 +1,1958 @@ +# Croatian translation for gnome-maps. +# Copyright (C) 2017 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-08-11 20:42+0000\n" +"PO-Revision-Date: 2020-08-23 16:54+0200\n" +"Last-Translator: gogo \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karte" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Potražite mjesta diljem svijeta" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama diljem svijeta. Omogućuje vam da brzo " +"pronađete mjesto koje tražite pretragom gradova ili ulica, ili lociranje " +"mjesta za sastanak s prijateljem." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste suradničku OpenStreetMap bazu podataka, načinjenu od strane " +"stotine tisuća ljudi diljem svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak pretražiti određenu vrstu lokacije, poput \"Kavane blizu Jelačić " +"placa, Zagreb\" ili \"Hoteli blizu Straduna, Dubrovnik\"." + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:82 src/mainWindow.js:134 src/mainWindow.js:626 +msgid "Maps" +msgstr "Karte" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednostava aplikacija za karte" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karte;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Omogućuje vašoj lokaciji da bude prikazana na mapi." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "posljednja pogledana lokacija" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate posljednje pogledane lokacije." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "uvećanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Razina uvećanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta karte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta prikazane karte (ulice, područje, itd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veličina prozora" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj prozora" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (x-os i y-os)" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Prozor uvećan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage iz geokôd pretrage." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Broj nedavnih mjesta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Broj nedavnih ruta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Broj nedavno posjećenih ruta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti Facebook provjere" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti Facebook provjere. Moguće " +"vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ili SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti Foursquare provjere" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti Foursquare provjere. Moguće " +"vrijednosti su: public, followers ili private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitira provjeru na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Facebook " +"računu pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitira provjeru na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Twitter računu " +"pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili adresa e-pošte" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Označava je li se korisnik prijavio za uređivanje OpenStreetMap karata." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Posljednja korištena vrsta prijevoza za određivanje rute" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Koristi noćni način rada" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Je li aplikacija u noćnom načinu rada." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Koristi hibridne zračne nazive" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Trebaju li zračni nazivi koristiti hibridni izgled (s oznakama)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vidljivost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Odustani" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Provjeri" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Svakog" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prijatelje prijatelja" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Samo prijatelje" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Samo meni" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sljedbenike" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privatno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Početak rute" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj međuodredište" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Završetak rute" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Što je ovdje?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj lokaciju" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Izvezi prikaz" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvoz" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Uključi rute i oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Odaberi vrstu karte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Udalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Približi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Uklj/Isklj omiljene" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 data/ui/main-window.ui:98 +msgid "Print Route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Općenito" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaži prečice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zatvori" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Prikaz karte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Udalji" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Uklj/Isklj promjenu veličine" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na prikaz ulica" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na satelitski prikaz" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj karte" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvori sloj karte…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Uključite uslugu lociranja kako bi pronašli svoju lokaciju" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Odustani" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Postavke lokacije" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noćni način rada" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Postavi OpenStreetMap račun" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvezi kao sliku" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O Kartama" + +#: data/ui/main-window.ui:56 +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/main-window.ui:81 +msgid "Find a Route" +msgstr "Potraži rutu" + +#: data/ui/main-window.ui:181 +msgid "Maps is offline!" +msgstr "Karta je nedostupna!" + +#: data/ui/main-window.ui:194 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karta treba aktivni internet povezivanje kako bi ispravno funkcionirala, ali " +"se ne može nijedan pronaći." + +#: data/ui/main-window.ui:203 +msgid "Check your connection and proxy settings." +msgstr "Provjerite vaše povezivanje i proxy postavke." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Dijeli lokaciju" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Označi kao omiljeno" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Provjeri ovdje" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap račun" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijavi se za uređivanje karata" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozite poboljšati karte, koristeći\n" +"OpenStreetMap račun." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pošta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lozinka" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Odjava" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije uspjelo. Pokušajte ponovno, ili posjetite\n" +"OpenStreetMap za obnovu lozinke." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kôd provjere se ne podudara, pokušajte ponovno." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Upišite kôd provjere prikazan iznad" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Provjeri" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeni" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap račun je aktivan." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjava" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Kućni broj" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Grad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nijedno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Promjene karte biti će vidljive na svim kartama koje\n" +"koriste OpenStreetMap podatke." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno korišteno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sljedeće" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Prikaži više informacija" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nema pronađenih rezultata" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ispusti za promjenu redoslijeda rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Pošalji u…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvori sloj karte" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvori" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Uklj/Isklj vidljivost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta se traži pomoću GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Plan ruta za javni prijevoz omogućio je GNOME\n" +"pomoću rasporeda podataka dobivenih od prijevozničkih tvrtki ili agencija.\n" +"Prijevozničke tvrtke ili agencije ne mogu biti odgovorne za prikazane " +"rezultate.\n" +"GNOME ne može jamčiti točnost prikazanih planova i rasporeda.\n" +"Prikazani nazivi i trgovačke marke trebaju se smatrati registriranim " +"zaštitinim zankovima kada je primjenjivo." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Prikaži više rezultata" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sakrij posredna zaustavljanja i informacije" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Prikaži posredna zaustavljanja i informacije" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Kreni odmah" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odlazak" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Dolazak" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Prikaz" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busevi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Valkovi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Zrakoplovi" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutna lokacija" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspješna pretraga strukture pločice u direktoriju" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neuspješna obrada XML dokumenta" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nedostaju potrebna svojstva" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nemoguć pronalazak OSM elementa" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne strukture bloka u direktoriju" + +#: src/application.js:102 +msgid "Tile size for local tiles directory" +msgstr "Veličina bloka za direktorij lokalnih blokova" + +#: src/application.js:106 +msgid "Show the version of the program" +msgstr "Prikaži inačicu programa" + +#: src/application.js:112 +msgid "Ignore network availability" +msgstr "Zanemari mrežnu dostupnost" + +#: src/application.js:122 src/application.js:123 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Odaberi račun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavanje" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Odaberi mjesto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Facebooka. Odaberite jedno s " +"popisa." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Foursquara. Odaberite jedno s " +"popisa." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Provjeri u %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napiši neobaveznu poruku za provjeru u %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Dogodila se greška" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nemoguće je pronaći “%s” na društvenim mrežama" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nemoguće je pronaći prikladno mjesto za provjeru ove lokacije" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Vjerodajnice su istekle, otvorite mrežne račune za prijavu i omogućavanje " +"ovog računa" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ništa nije pronađeno ovdje!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodana na kartu, zapamtite da može potrajati prije nego se " +"pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sustav je samo za čitanje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate za tamo dozvolu spremanja" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorij ne postoji" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Naziv datoteke nije naveden" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nemoguće izvesti prikaz" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "pogrešne koordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "greška obrade" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Zahtjev rute neuspio." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Ruta nije pronađena." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Kreni!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: src/mainWindow.js:508 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje s uslugom lociranja" + +#: src/mainWindow.js:624 +msgid "translator-credits" +msgstr "gogo https://launchpad.net/~trebelnik-stefina" + +#: src/mainWindow.js:627 +msgid "A map application for GNOME" +msgstr "Aplikacija karata za GNOME" + +#: src/mainWindow.js:638 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autorsko pravo © 2011 – 2019 Red Hat, Inc. i autori GNOME karta" + +#: src/mainWindow.js:658 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke karte omogućili %s i doprinositelji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:674 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blokove karte je omogućio %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:703 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pretragu je omogućio %s koristeći %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Neuspjelo otvaranje sloja" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Neuspjelo otvaranje GeoURI-ja" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Uspjeh" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Neispravan zahtjev" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt nije pronađen" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, netko drugi je upravo promijenio objekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt je obrisan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Način ili veza povezana za nepostojeći objekt" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Službeni naziv. To se uobičajeno pojavljuje na znakovima." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Web stranica" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Službena web stranca. Pokušajte koristiti najosnovnije od URL-a npr. http://" +"primjer.com umjesto http://primjer.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format, započinjući s + znakom. Ne " +"zaboravite lokalne zakone, osobito za privatne telefonske linije." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišteni format trebao bi uključiti kôd jezika i naslov članka poput “hr:" +"Naslov članka”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Vrijeme otvaranja" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte poveznicu u naslovu za pomoć formata." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Uzvišenje (nadmorska visina) od točke u metrima." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup za invalidska kolica" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ograničeno" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Određeno" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežična mreža" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žična mreža" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaizam" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kršćanstvo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucijanizam" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Džainizam" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Više religija" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianizam" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scijentologija" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrizam" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Napomena" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacije koje se koriste za informiranje drugih kartografa o neočekivanim " +"informacijama o nekom elementu, o autorovoj namjeri prilikom izrade, ili " +"savjeti za buduće poboljšanje." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj u OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Odaberi vrstu" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Završeno" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Neimenovano mjesto" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populacija:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Visina:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Vrijeme otvaranja:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religija:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Toaleti:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Pristup za invalidska kolica:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Neuspješna obrada Geo URI-ja" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "određeno" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Mjesto nije pronađeno na OpenStreetMapama" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nije valjan" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate u URL-u nisu valjane" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nije podržan" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavanje bloka karte za ispis" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti ispisivanje ako traje predugo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini ispisivanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj pomoću lokacije" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ukloni pomoću lokacije" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni rutu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s u %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Neuspjelo otvaranje URI-ja" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Otvori sa %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neuspješno učitavanje datoteke" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Vrijeme dolaska: %s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Planove je omogućio %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Polazak u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Polazak" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Pješači %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazak u %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Dolazak" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Prikaži upute pješačenja" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sakrij upute pješačenja" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj kasnije alternative" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nema pronađenih ranijih alternativa." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nema pronađenih kasnijih alternativa." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Nema pronađenih podataka rasporeda za ovu rutu." + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "Nema pronađenih pružatelja usluge za ovu rutu." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minute" +msgstr[2] "%s minuta" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s sat" +msgstr[1] "%s sata" +msgstr[2] "%s sati" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s sat" +msgstr[1] "%s:%s sata" +msgstr[2] "%s:%s sati" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "oko sata" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od sumraka do zore" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "žični priključak" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Točnost: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Napoznato" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Točno" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "% sat(a)" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s sat(a) %s min" +msgstr[1] "%s sat(a) %s min" +msgstr[2] "%s sat(a) %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Priključak ne podržava posljednji dolazak" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Nastavi u %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Nastavi" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skrenite lijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skrenite blago ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Skrenite blago ulijevo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skrenite oštro ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Skrenite oštro ulijevo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skrenite desno na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Skrenite desno" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skrenite blago udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Skrenite blago udesno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skrenite oštro udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Skrenite oštro udesno" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "U kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "U kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Idite na kružni tok" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Idite u dizalo i izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Idite u dizalo" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Skrenite lijevo u %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Skrenite desno u %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Skrenite desno" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemate račun?" + +#~ msgid "%f h" +#~ msgstr "%f sat" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta se traži pomoću OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj odredište" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Otvori s drugom aplikacijom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite Enter za pretragu" + +#~ msgid "Quit" +#~ msgstr "Zatvori" + +#~ msgid "OK" +#~ msgstr "U REDU" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvori sloj karte…" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..7b5dd0c2 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1994 @@ +# Hungarian translation for gnome-maps. +# Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Balázs Úr , 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021. +# Gabor Kelemen , 2013, 2015, 2016, 2017. +# Balázs Meskó , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-13 23:31+0100\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Térképek" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Helyek keresése a világ minden pontján" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"A Térképek gyors hozzáférést ad térképekhez az egész világról. Lehetővé " +"teszi egy keresett hely gyors megtalálását település vagy utca keresésével, " +"vagy találni egy helyet, ahol ismerőseivel találkozhat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A Térképek az együttműködésen alapuló OpenStreetMap adatbázist használja, " +"amelyet több százezer ember készít a világ minden részén." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Adott típusú helyeket is kereshet, úgymint „Kocsmák a bostoni sétálóutca " +"közelében” vagy „Szállodák a berlini Alexanderplatz közelében”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "A GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Térképek" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Egyszerű térképalkalmazás" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Térképek;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lehetővé teszi a földrajzi helyének megjelenítését a térképen." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "legutóbbi megtekintett hely" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Az utolsó megtekintett hely koordinátái." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "nagyítás" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nagyítási szint" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Térképtípus" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "A megjelenítendő térkép típusa (utca, légi, stb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ablakméret" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ablak mérete (szélesség és magasság)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ablakpozíció" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ablakpozíció (X és Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ablak teljes méretű" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Az ablak maximalizált állapota" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "A keresési találatok maximális száma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "A keresési találatok maximális száma a geokód keresésből." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "A tárolandó legutóbbi helyek száma" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "A tárolandó legutóbb látogatott helyek száma." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "A tárolandó legutóbbi útvonalak száma" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "A tárolandó legutóbb látogatott útvonalak száma." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook bejelentkezés adatvédelmi beállításai" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Legutóbb használt Facebook bejelentkezés adatvédelmi beállításai. Lehetséges " +"értékek: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vagy SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare bejelentkezés adatvédelmi beállításai" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Legutóbb használt Foursquare bejelentkezés adatvédelmi beállításai. " +"Lehetséges értékek: public, followers, vagy private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare bejelentkezés Facebook üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare hozzászólásként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Facebook fiókban." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare bejelentkezés Twitter üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare üzenetként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Twitter fiókban." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap felhasználónév vagy e-mail cím" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Jelzi, hogy a felhasználó bejelentkezett-e az OpenStreetMap adatok " +"szerkesztéséhez." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Legutóbb útvonaltervezéshez használt közlekedéstípus" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Éjszakai mód" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Az alkalmazás éjszakai módban van-e." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hibrid légi csempék használata" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "A légi csempék a hibrid stílust használják-e (címkékkel)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Láthatóság" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Közzététel a Facebookon" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Közzététel a Twitteren" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Mégse" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Bejelentkezés" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mindenki" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Ismerősök ismerősei" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Csak ismerősök" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Csak én" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Nyilvános" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Követők" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Személyes" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Útvonal innen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Közbenső megálló hozzáadása" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Útvonal ide" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mi van itt?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Hely másolása" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMap-hez" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportálási nézet" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportálás" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Útvonalak és jelölők megtartása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Térképtípus kiválasztása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Kicsinyítés" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Nagyítás" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Kedvencek ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Általános" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Gyorsbillentyűk megjelenítése" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Keresés" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Kilépés" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Térkép nézet" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Nagyítás" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Kicsinyítés" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Váltás utcanézetre" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Váltás légifelvételre" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Címkék megjelenítése" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Alak réteg megnyitása…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Helymeghatározó szolgáltatások bekapcsolása a helyzetének megkereséséhez" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Mégse" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Helybeállítások" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Éjszakai mód" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap fiók beállítása" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportálás képként" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Gyorsbillentyűk" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A Térképek névjegye" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "A Térképek kapcsolat nélküli!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"A Térképeknek aktív internet-kapcsolat szükséges a megfelelő működéshez, de " +"az nem található." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Ellenőrizze a kapcsolat és a proxy beállításait." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap fiók" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jelentkezzen be a térképek " +"szerkesztéséhez" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Segítsen a térkép javításában, egy\n" +"OpenStreetMap fiók használatával." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Jelszó" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regisztráció" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Bejelentkezés" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Elnézést, ez nem sikerült. Próbálja újra, vagy látogassa meg az\n" +"OpenStreetMap\n" +"oldalt a jelszava helyreállításához." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Az ellenőrző kód nem egyezik, próbálja újra." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Írja be a fent megjelenített ellenőrző kódot" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ellenőrzés" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Bejelentkezve" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Az OpenStreetMap fiókja aktív." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kijelentkezés" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Utca" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Házszám" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Irányítószám" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Város" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Típus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nincs" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Mező hozzáadása" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Megjegyzés" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"A térképváltozások mindenhol láthatóvá válnak,\n" +"ahol OpenStreetMap adatokat használnak." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nemrég használt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Következő" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nincs találat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Hiba történt" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Húzza az útvonal sorrendjének módosításához" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Másolás" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Küldés neki…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Bejelentkezés…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Megnyitás" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Útvonalkeresés a GraphHopperrel" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"A közlekedési útvonalak harmadik féltől származó szolgáltatásból\n" +"származnak.\n" +"A GNOME nem garantálhatja a megjelenített útvonalak és menetrendek " +"helyességét.\n" +"Ne feledje, hogy egyes szolgáltatók lehet hogy nem tartalmazzák az összes " +"elérhető\n" +"közlekedési módokat, például egy nemzeti szolgáltató lehet, hogy nem " +"tartalmazza\n" +"a légitársaságokat, egy helyi szolgáltató pedig nem tartalmazza a " +"regionális\n" +"vonatokat.\n" +"A megjelenített nevek és márkák adott esetben bejegyzett védjegyeknek " +"tekintendők." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "További találatok megjelenítése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Közbenső megállók és információk elrejtése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Közbenső megállók és információk megjelenítése" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Indulás most" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Indulás ekkor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Érkezés ekkor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Megjelenítés" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buszok" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Villamosok" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vonatok" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metró" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Kompok" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Repülőgépek" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Hely megosztása" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Hozzáadás új útvonalhoz" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Útvonal" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Megjelölés kedvencként" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Nagyítson a hely hozzáadásához!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Nagyítás" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nem sikerült csempeszerkezetet találni a könyvtárban" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Az XML dokumentum feldolgozása sikertelen" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Szükséges attribútumok hiányoznak" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nem sikerült megtalálni az OSM elemet" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Egy útvonal a helyi csempék könyvtárszerkezetéhez" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "A csempék mérete a helyi csempék könyvtárához" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "A program verziószámának megjelenítése" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Hálózat elérhetőségének figyelmen kívül hagyása" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FÁJL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Válasszon egy fiókot" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Betöltés" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Válasszon egy helyet" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Facebook " +"használatával. Válasszon egyet erről a listáról." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Foursquare " +"használatával. Válasszon egyet erről a listáról." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Bejelentkezés ide: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Opcionális üzenet írása a következőbe való bejelentkezéshez: %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nem található „%s” a közösségi szolgáltatásban" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nem található megfelelő hely a bejelentkezéshez ezen a helyen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"A hitelesítési adatok lejártak, nyissa meg az Online fiókokat a " +"bejelentkezéshez, és engedélyezze ezt a fiókot" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Itt nincs semmi!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A hely hozzáadva a térképhez, de eltarthat egy ideig, amíg megjelenik a " +"térképen és a keresési találatokban." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Térképek itt: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "A fájlrendszer csak olvasható" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nincs jogosultsága oda menteni" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "A könyvtár nem létezik" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nincs megadva fájlnév" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "A nézet exportálása sikertelen" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Jelenlegi hely" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "érvénytelen koordináta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "feldolgozási hiba" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ismeretlen geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Az útvonalkérés nem sikerült." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nem található útvonal." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Indulás!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Minden rétegfájl" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Nem sikerült kapcsolódni a helymeghatározó szolgáltatáshoz" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Meskó Balázs \n" +"Úr Balázs " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Térképalkalmazás a GNOME-hoz" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. és a GNOME Térképek szerzői" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Térképadatok: %s és közreműködők" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "A térképcsempéket a(z) %s szolgáltatja" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "A keresést a(z) %s biztosította %s használatával" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "A réteg megnyitása nem sikerült" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Szeretné folytatni?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Arra készül, hogy %s MB-nyi összméretű fájlokat nyit meg. A betöltése több " +"időt vehet igénybe." + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "A fájltípus nem támogatott" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "A GeoURI megnyitása nem sikerült" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Helytelen felhasználónév vagy jelszó" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sikerült" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Rossz kérés" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nem található objektum" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktus, valaki épp most módosította az objektumot" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Az objektum törlésre került" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Út vagy kapcsolat nem létező gyermekekre hivatkozik" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Név" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "A hivatalos név. Jellemzően ez jelenik meg a jelzéseken." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Cím" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Weboldal" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ez nem érvényes URL. Győződjön meg róla, hogy tartalmazza a http:// vagy " +"https:// protokollt." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A hivatalos honlap. Próbálja meg az URL alapvető formáját használni, pl. " +"http://pelda.hu a http://pelda.hu/index.html helyett." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonszám. Használja a nemzetközi formátumot a + jellel. Figyeljen a helyi " +"adatvédelmi törvényekre, különösen a magántelefonszámokra." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"A használt formátumban legyen benne a nyelvi kód és a cikk címe, mint " +"például „hu:Cikk címe”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Nyitva tartás" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Kövesse a címke hivatkozását formázási segítségért." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Népesség" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Magasság" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Egy pont tengerszint feletti magassága méterben." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Kerekesszékes elérés" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Igen" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nem" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Korlátozott" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Kijelölt" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internet-hozzáférés" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Vezetékes" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Szolgáltatás" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Vallás" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhizmus" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kereszténység" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Dzsainizmus" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Iszlám" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Több vallás" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Pogányság" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pasztafarizmus" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Szcientológia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Sintoizmus" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Szikhizmus" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitárius univerzalizmus" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jezidizmus" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroasztrizmus" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toalett" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Megjegyzés" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Más térképezőknek szánt információ, egy elem nem egyértelmű " +"tulajdonságairól, a szerző szándékáról, vagy tippek a további finomításokhoz." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMaphez" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Válasszon egy típust" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Kész" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Névtelen hely" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "A Geo URI feldolgozása nem sikerült" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Koordináták" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Pontosság" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Pontosság: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +#| msgid "House number" +msgid "Phone number" +msgstr "Telefonszám" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Nyilvános internet-hozzáférés" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +#| msgid "Internet access" +msgid "No internet access" +msgstr "Nincs internet-hozzáférés" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Nyilvános Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Vezetékes internet-hozzáférés" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Használható számítógépek" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internetes segítség érhető el" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Toalett nem érhető el" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toalett elérhető" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Kerekesszékkel elérhető" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Kerekesszékkel korlátozottan érhető el" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Kerekesszékkel nem érhető el" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Kerekesszéket használóknak kijelölt" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Vallás:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "A hely nem található az OpenStreetMapen" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Az URL-ben lévő koordináták nem érvényesek" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Az URL nem támogatott" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Ettől: %s, eddig: %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Térképszelvények betöltése nyomtatáshoz" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Megszakíthatja a nyomtatást, ha ez túl sokáig tart" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Nyomtatás megszakítása" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Hozzáadás hely szerint" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Eltávolítás hely szerint" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Fordított útvonal" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s hozzáadása ehhez: %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Az URI megnyitása nem sikerült" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Megnyitás %s használatával" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nem sikerült betölteni a fájlt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Becsült idő: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Az útvonalakat a(z) %s szolgáltatja" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Indulás innen: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Indulás" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gyaloglás: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Érkezés ide: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Érkezés" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Gyaloglási utasítások megjelenítése" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Gyaloglási utasítások elrejtése" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Korábbi lehetőségek betöltése" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Későbbi lehetőségek betöltése" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nem található korábbi lehetőség." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nem található későbbi lehetőség." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b. %e." + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nem található menetrend ehhez az útvonalhoz." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nem található szolgáltató ehhez az útvonalhoz." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s óra" +msgstr[1] "%s óra" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s óra" +msgstr[1] "%s:%s óra" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Éjjel-nappal" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "Napkeltétől napnyugtáig" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +#| msgid "every day" +msgid "Every day" +msgstr "Minden nap" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Munkaszüneti napok" + +#: src/translations.js:174 +#| msgid "school holidays" +msgid "School holidays" +msgstr "Tanszüneti napok" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "nincs nyitva" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ismeretlen" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Pontos" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ó" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ó %s perc" +msgstr[1] "%s ó %s perc" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s mp" +msgstr[1] "%s mp" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "A bővítmény nem támogatja a legkésőbbi érkezést" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Haladjon tovább ezen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Haladjon tovább" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Forduljon balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Forduljon balra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Forduljon enyhén balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Forduljon enyhén balra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Forduljon élesen balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Forduljon élesen balra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Forduljon jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Forduljon jobbra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Forduljon enyhén jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Forduljon enyhén jobbra" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Forduljon élesen jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Forduljon élesen jobbra" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "A körforgalomban válassza a(z) %s. kijáratot" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "A körforgalomban válassza a(z) %s felé tartó kijáratot" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Menjen a körforgalomba" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Menjen a lifthez, és szálljon ki itt: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Menjen a lifthez" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Forduljon vissza balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Forduljon vissza balra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Forduljon vissza jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Forduljon vissza jobbra" + +#~ msgid "Check in here" +#~ msgstr "Bejelentkezés itt" + +#~ msgid "Show more information" +#~ msgstr "További információk megjelenítése" + +#~ msgid "Population:" +#~ msgstr "Népesség:" + +#~ msgid "Altitude:" +#~ msgstr "Magasság:" + +#~ msgid "Opening hours:" +#~ msgstr "Nyitva tartás:" + +#~ msgid "Internet access:" +#~ msgstr "Internet-hozzáférés:" + +#~ msgid "Toilets:" +#~ msgstr "Toalett:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Kerekesszékes elérés:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "igen" + +#~ msgid "limited" +#~ msgstr "korlátozott" + +#~ msgid "no" +#~ msgstr "nem" + +#~ msgid "designated" +#~ msgstr "kijelölt" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Az OpenStreetMap URL nem érvényes" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s, %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s, %s, %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "vezetékes" + +#~ msgid "terminal" +#~ msgstr "terminál" + +#~ msgid "service" +#~ msgstr "szolgáltatás" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nincs fiókja?" + +#~ msgid "%f h" +#~ msgstr "%f óra" + +#~ msgid "%f min" +#~ msgstr "%f perc" + +#~ msgid "%f s" +#~ msgstr "%f mp" diff --git a/po/id.po b/po/id.po new file mode 100644 index 00000000..1f33cf0b --- /dev/null +++ b/po/id.po @@ -0,0 +1,1981 @@ +# Indonesian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Andika Triwidada , 2013, 2014, 2015, 2018. +# Kukuh Syafaat , 2017-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-28\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-16 18:26+0700\n" +"Last-Translator: Kukuh Syafaat \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Peta" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Temukan tempat di seluruh dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memberi Anda akses cepat ke peta di seluruh penjuru dunia. Ini " +"memungkinkan Anda secara cepat menemukan tempat yang Anda cari dengan " +"mencari suatu kota atau jalan, atau menemukan tempat untuk bertemu dengan " +"teman." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta memakai basis data kolaboratif OpenStreetMap, yang dibuat oleh ratusan " +"ribu orang di seluruh dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda bahkan dapat mencari lokasi dengan jenis tertentu, seperti misalnya " +"\"Pub dekat Main Street, Boston\" atau \"Hotel dekat Alexanderplatz, Berlin" +"\"." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Proyek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Aplikasi peta sederhana" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Memungkinkan ditunjukkannya lokasi Anda pada peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi yang terakhir dilihat" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat dari lokasi yang terakhir dilihat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "perbesar" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Tingkat perbesaran" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis Peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta untuk ditampilkan (jalan, udara, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ukuran jendela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ukuran jendela (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posisi jendela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posisi jendela (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Jendela dimaksimalkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan termaksimalkan jendela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Banyaknya hasil pencarian maksimum" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Banyanyak hasil pencarian maksimum dari pencarian geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Cacah lokasi baru-baru ini yang disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Banyaknya lokasi baru-baru ini dikunjungi yang disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Cacah rute baru-baru ini yang akan disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Banyaknya rute baru-baru ini dikunjungi yang akan disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Pengaturan privasi check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pengaturan privasi check in Facebook yang terakhir dipakai. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Pengaturan privasi check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pengaturan privasi check in Foursquare yang terakhir dipakai. Nilai yang " +"mungkin adalah: public (umum), followers (para pengikut), atau private " +"(pribadi)" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Penyiaran Facebook untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah " +"kiriman dalam akun Facebook yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Penyiaran Twitter untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah twit " +"dalam akun Twitter yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat surel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menandakan apakah pengguna telah masuk untuk menyunting data OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis transportasi terakhir yang digunakan untuk rute" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mode malam" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Apakah aplikasi sedang dalam mode malam." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Gunakan ubin udara hybrid" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Apakah ubin udara harus menggunakan gaya hybrid (dengan label)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Kenampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Kirim pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Kirim pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Semua orang" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Teman dari teman" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Teman saja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Hanya saya" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Umum" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Pribadi" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute dari sini" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tambahkan tujuan antara" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute ke sini" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ada apa di sini?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ekspor tilikan" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Ekspor" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan rute dan penanda" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Perkecil" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Perbesar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Jungkitkan favorit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Cetak Rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Umum" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tampilkan Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cari" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Tilikan Peta" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Perbesar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Perkecil" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Jungkitkan skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke tampilan jalan" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke tampilan udara" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka layer shape" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Tampilkan Label" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Buka Layer Shape…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Nyalakan layanan lokasi untuk menemukan lokasi Anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Pengaturan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode Malam" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Menyiapkan Akun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Ekspor sebagai Citra" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tombol Pintas" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tentang Peta" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Peta luring!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlu suatu koneksi internet aktif untuk berfungsi dengan benar, tapi " +"tidak ditemukan satupun." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Periksalah pengaturan proksi dan koneksi Anda." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Masuklah untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantulah memperbaiki peta, memakai\n" +"akun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Surel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata Sandi" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Daftar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Masuk" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, itu tidak bisa. Harap coba lagi, atau kunjungi\n" +"OpenStreetMap untuk mereset sandi Anda." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kode verifikasi tidak cocok, silakan coba lagi." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Masukkan kode verifikasi yang ditunjukkan di atas" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifikasi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Masuk" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Akun OpenStreetMap Anda aktif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nomor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kode pos" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kota" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nihil" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Ruas" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan tampak pada semua peta yang memakai\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Baru-baru Ini Dipakai" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Selanjutnya" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hasil tak ditemukan" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Terjadi suatu kesalahan" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah urutan rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Kirim Ke…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Buka Layer Shape" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Jungkitkan kenampakan" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pencarian rute oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rute perjalanan untuk angkutan umum disediakan oleh layanan pihak ketiga.\n" +"GNOME tidak dapat menjamin kebenaran dari perjalanan dan jadwal yang " +"ditampilkan.\n" +"Perhatikan bawa beberapa penyedia mungkin tidak menyertakan semua mode " +"transportasi\n" +"yang tersedia, mis. sebuah penyedia nasional mungkin tidak menyertakan " +"penerbangan,\n" +"dan suatu penyedia lokal mungkin tidak punya jadwal kereta regional.\n" +"Nama dan merek yang ditampilkan dianggap sebagai merek dagang terdaftar " +"ketika berlaku." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tampilkan lebih banyak hasil" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyikan informasi dan perhentian antara" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tampilkan berhenti menengah dan informasi" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tampilkan" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bis" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trem" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Kereta api" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Kereta bawah tanah" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Penerbangan" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Bagikan lokasi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Tambah ke rute baru" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Petunjuk Arah" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Tandai sebagai favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Perbesar untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Perbesar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal menemukan struktur ubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal mengurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut yang diperlukan kurang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tak bisa temukan elemen OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Suatu path ke sebuah struktur direktori ubin lokal" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Ukuran ubin untuk direktori ubin lokal" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Tampilkan versi program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Abaikan ketersediaan jaringan" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih sebuah akun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuat" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih suatu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Facebook. Harap pilih " +"satu dari daftar ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Foursquare. Harap pilih " +"satu dari daftar ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in ke %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis suatu pesan tambahan untuk check in ke %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tak dapat menemukan \"%s\" dalam layanan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tak dapat temukan suatu tempat yang cocok untuk check in dalam lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kredensial telah kedaluarsa, harap buka Akun Daring untuk masuk dan " +"memfungsikan akun ini" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tak ada yang ditemukan di sini!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi ditambahkan ke peta, perhatikan bahwa mungkin perlu waktu sebelum itu " +"muncul pada peta dan dalam hasil pencarian." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem berkas hanya baca" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tak punya ijin untuk menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak ada" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tak ada nama berkas yang dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tak bisa mengekspor tilikan" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Lokasi Sekarang" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tak valid" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "galat penguraian" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tak dikenal" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Permintaan rute gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Rute tak ditemukan." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Mulai!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Semua Berkas Lapisan" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung ke layanan lokasi" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Andika Triwidada , 2013-2016, 2018, 2019.\n" +"Kukuh Syafaat , 2017-2021." + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Aplikasi peta bagi GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak Cipta © 2011 – 2021 Red Hat, Inc. dan Penulis GNOME Peta" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan kontributor" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Ubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pencarian disediakan oleh %s menggunakan %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Gagal membuka layer" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Apakah Anda ingin melanjutkan?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Anda berencana membuka berkas dengan ukuran total %s MB. Ini bisa memakan " +"waktu untuk memuat" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Jenis berkas tak didukung" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau sandi salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berhasil" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan yang buruk" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tak ditemukan" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, seseorang baru saja mengubah objek itu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dihapus" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cara atau hubungan mengacu ke anak yang tak ada" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama resmi. Ini biasanya apa yang tertulis pada rambu." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Situs web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ini bukan URL yang valid. Pastikan untuk menyertakan http:// atau https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Situs web resmi. Cobalah memakai bentuk URL paling dasar yaitu http://" +"example.com/ bukan http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telepon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nomor telepon. Gunakan format internasional, diawali dengan tanda +. Hati-" +"hati dengan perundangan privasi lokal, khususnya untuk nomor telepon pribadi." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang dipakai mesti menyertakan kode bahasa dan judul artikel seperti " +"\"id:Judul artikel\"." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Lihat taut dalam label untuk bantuan tentang format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Ketinggian" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevasi (ketinggian di atas muka laut) dari suatu titik dalam meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Akses kursi roda" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Terbatas" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Ditugaskan" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Akses internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Ethernet" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Layanan" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kekristenan" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Multi Agama" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Pagan" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Saintologi" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Universalisme Unitarian" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toilet" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Catatan" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informasi yang digunakan untuk menginformasikan pemeta lain mengenai " +"informasi yang tidak jelas tentang suatu elemen, maksud penulis saat " +"membuatnya, atau petunjuk untuk perbaikan lebih lanjut." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gagal mengurai URI Geo" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinat" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Akurasi" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Akurasi: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Nomor telepon" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Akses internet publik" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Tidak ada akses internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi Publik" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Akses internet berkabel" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Komputer tersedia untuk digunakan" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Bantuan Internet tersedia" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Tidak ada toilet yang tersedia" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toilet tersedia" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Dapat diakses kursi roda" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Aksesibilitas kursi roda terbatas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Tidak dapat diakses kursi roda" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Ditunjuk untuk pengguna kursi roda" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Agama:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemukan pada OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tak valid" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL tak didukung" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s ke %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuat ubin peta untuk pencetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Anda dapat menggugurkan pencetakan bila ini makan waktu terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Gugurkan pencetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah lewat lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Hapus lewat lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rute sebaliknya" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambahkan %s ke %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "gagal memuat berkas" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Perkiraan waktu: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Jadwal disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mulai dari %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mulai" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba di %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tampilkan petunjuk berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyikan petunjuk berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Memuat alternatif sebelumnya" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Memuat alternatif kemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tidak ditemukan alternatif sebelumnya." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tidak ada alternatif lain yang ditemukan." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Tidak ada data jadwal yang ditemukan untuk rute ini." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Tidak ada penyedia yang ditemukan untuk rute ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s menit" +msgstr[1] "%s menit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s jam" +msgstr[1] "%s jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s jam" +msgstr[1] "%s:%s jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Sepanjang waktu" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Dari matahari terbit sampai terbenam" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Hari libur publik" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Hari libur sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Tak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Eksak" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s j" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s j %s mnt" +msgstr[1] "%s j %s mnt" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s mnt" +msgstr[1] "%s mnt" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s dtk" +msgstr[1] "%s dtk" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mil" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Pengaya ini tidak mendukung kedatangan terbaru" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Lanjutkan pada %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Lanjutkan" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri di %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit ke kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Belok sedikit ke kiri" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok kiri tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Belok kiri tajam" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit ke kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Belok sedikit ke kanan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok kanan tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Belok kanan tajam" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Di bundaran, ambil jalur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Di bundaran, ambil jalur ke %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Ambil bundaran" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Naik lift dan turun di %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Naik lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Putar balik kiri ke %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Putar balik kiri" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Putar balik kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Putar balik kanan" + +#~ msgid "Find a Route" +#~ msgstr "Temukan Rute" + +#~ msgid "Check in here" +#~ msgstr "Check in di sini" + +#~ msgid "Show more information" +#~ msgstr "Tampilkan lebih banyak informasi" + +#~ msgid "Population:" +#~ msgstr "Populasi:" + +#~ msgid "Altitude:" +#~ msgstr "Ketinggian:" + +#~ msgid "Opening hours:" +#~ msgstr "Jam buka:" + +#~ msgid "Internet access:" +#~ msgstr "Akses internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toilet:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Akses kursi roda:" + +#~ msgid "Phone:" +#~ msgstr "Telepon:" + +#~ msgid "yes" +#~ msgstr "ya" + +#~ msgid "limited" +#~ msgstr "terbatas" + +#~ msgid "no" +#~ msgstr "tidak" + +#~ msgid "designated" +#~ msgstr "ditugaskan" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL OpenStreetMap tak valid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ethernet" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "pelayanan" + +#~ msgid "Primary menu" +#~ msgstr "Menu utama" + +#~ msgid "Don’t have an account?" +#~ msgstr "Tidak punya akun?" + +#~ msgid "%f h" +#~ msgstr "%f j" + +#~ msgid "%f min" +#~ msgstr "%f men" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Tambahkan tujuan" diff --git a/po/is.po b/po/is.po new file mode 100644 index 00000000..bacb714d --- /dev/null +++ b/po/is.po @@ -0,0 +1,1665 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2015, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-03-26 17:04+0000\n" +"PO-Revision-Date: 2019-07-06 07:57+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME-landakort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Finndu staði út um allan heim" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Landakortaforritið gefur aðgang að landakortum hvaðanæva úr heiminum. Það " +"hjálpar þér að finna staði, til dæmis með því að leita að götu eða bæ, nú " +"eða með því að skoða kort til að finna góðan stað til að hitta vinina." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Landakortaforritið notar OpenStreetMap gagnagrunninn, sem er " +"samvinnuverkefni hundruða þúsunda manna víðsvegar um heiminn." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Þú getur líka leitað að sérstökum tegundum staðsetninga, eins og “Pöbbar " +"nálægt Main Street, Boston”, \"Myndbandaleigur á Selfossi\" eða “Hótel " +"nálægt Alexanderplatz, Berlín”." + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "Landakort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Einfalt landakortaforrit" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Landakort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leyfir að staðsetning þín sé birt á kortinu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "síðasta skoðuð staðsetning" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Hnit síðast skoðuðu staðsetningar." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Gluggastærð" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Gluggastærð (breidd og hæð)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Staðsetning glugga" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Staðsetning glugga (x og y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Gluggi hámarkaður" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Staða hámörkunar glugga" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Hámarksfjöldi leitarniðurstaðna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Hámarksfjöldi niðurstaðna úr leit með geocode." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Fjöldi nýlegra staða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Fjöldi nýlega heimsóttra staða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Fjöldi nýlegra leiða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Fjöldi nýlega notaðra leiða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Facebook. Möguleg " +"gildi eru: ALLIR, VINIR_VINA, ALLIR_VINIR eða SJÁLF(UR)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Foursquare. " +"Möguleg gildi eru: opinbert, fylgjendur eða einka." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Tilkynning á Facebook við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tilkynningu um innskráningu " +"inn á Facebook-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Tilkynning á Twitter við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tíst um innskráningu inn á " +"Twitter-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Notandanafn eða netfang á OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Gefur til kynna hvort notandinn hafi skráð sig inn til að breyta gögnum í " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Síðast notaða gerð samgangna fyrir leiðaval" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sýnileiki" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Senda á Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Senda á Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Hætta við" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "S_krá inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Allir" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vinir vina" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vinir" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara ég" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Opið (public)" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Fylgjendur" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Einka" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Hvað er hér?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Afrita staðsetningu" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Flytja út sem mynd" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Flytja út sýn" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Flytja út" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Hafa með leið og merkingar" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Almennt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Birta flýtilykla" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Leita" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Prenta leið" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Hætta" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortasýn" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Renna að" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Renna frá" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Víxla á milli kvarða" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skipta yfir í götusýn" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skipta yfir í loftmyndasýn" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Opna lag með lögunum" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Opna lag með lögunum…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Kveikja á staðsetningarþjónustum til að finna staðsetningu þína" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Hætta við" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Staðsetningarstillingar" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Setja upp OpenStreetMap aðgang" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: data/ui/main-window.ui:18 +#| msgid "About" +msgid "About Maps" +msgstr "Um hugbúnaðinn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Veldu tegund landakorts" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Renna frá" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Renna að" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Víxla Eftirlætum af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Prenta leið" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Kortin eru án nettengingar!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Landakortaforritið þarf virka internet-tengingu til að virka almennilega, en " +"ekki hefur gengið að finna neina slíka." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Athugaðu tengi- og milliþjónastillingarnar þínar." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Bæta við nýja leið" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Opna með öðru forriti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merkja sem Eftirlæti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Skrá inn hér" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap aðgangur" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Skrá inn til að breyta kortum" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjálpa til við að bæta kortið, með því\n" +"að nota OpenStreetMap-aðgang." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Tölvupóstur" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lykilorð" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Skrá inn" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ertu ekki með aðgang?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Æ, þetta virkaði ekki. Endilega reyndu aftur, eða farðu á\n" +"OpenStreetMap til að endurstilla lykilorðið þitt." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Sannvottunarkóðinn stemmdi ekki, prófaðu aftur." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Settu inn sannvottunarkóðann hér fyrir ofan" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sannreyna" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Skráð inn" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap aðgangurinn þinn er virkur." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Skrá út" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Húsnúmer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Póstnúmer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Borg" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tegund" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ekkert" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Bæta við reit" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Athugasemd" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Breytingar á korti verða sýnilegar á öllum kortum sem nota\n" +"OpenStreetMap gögn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nýlega notað" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næsta" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Birta nánari upplýsingar" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Ýttu á Enter til að leita" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Engar niðurstöður fundust" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dragðu til að breyta röð leiðarinnar" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Opna staðsetningu" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Opna" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Opna lag með lögunum" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Víxla sýnilegu" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Leita að leiðum með GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Leita að leiðum með OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Leiðatöflur almenningssamgangna koma frá GNOME\n" +"í gegnum tímatöflugögn frá rekstraraðilum eða ferðaskrifstofum.\n" +"Þeir aðilar eru ekki ábyrgir fyrir niðurstöðum sem birtar eru hér.\n" +"GNOME getur ekki ábyrgst áreiðanleika þessara leiða og áætlana.\n" +"Nöfn og vörumerki ber að líta á sem eign viðkomandi fyrirtækja þegar slíkt á " +"við." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Birta fleiri niðurstöður" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Fela biðstöðvar á leiðinni og upplýsingar" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Sýna biðstöðvar á leiðinni og upplýsingar" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Fara núna" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Fara um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Koma um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Birta" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Strætisvagna" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Lestir" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Neðanjarðarlestir" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjur" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Núverandi staðsetning" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Nákvæmni: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Renndu að til að bæta við staðsetningu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Renna að" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Mistókst að finna tíglaskipan í möppu" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gat ekki þáttað XML-skjal" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nauðsynleg eigindi vantar" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Gat ekki fundið OSM-stak" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Slóð á möppuuppbyggingu fyrir kortaflísar á tölvunni" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "Sýna útgáfu forrits" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Veldu aðgang" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Hleð inn" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Veldu stað" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Facebook. Veldu einn af þessum " +"lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Foursquare. Veldu einn af þessum " +"lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Skrá inn í %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Þú getur skrifað skilaboð með innskráningunni í %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Villa hefur átt sér stað" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finn ekki \"%s\" á samfélagsmiðilsþjónustunni" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Get ekki fundið hentugan stað til að skrá inn á þessari staðsetningu" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Auðkennin eru útrunnin, opnaðu \"Aðgangar á neti\" til að skrá þig inn og " +"virkja þennan aðgang" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Leið héðan" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Bæta við áfangastað" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Leið hingað" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Ekkert fannst hér!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Staðsetningunni var bætt á kortið, athugaðu að nokkur tími getur liðið " +"þangað til hún fer að sjást á kortinu eða koma upp í leitarniðurstöðum." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Landakort á %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Skráakerfi er aðeins til lestrar" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Þú hefur ekki nægar aðgangsheimildir til að vista þarna" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappan er ekki til" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ekkert skráarheiti tilgreint" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tókst ekki að flytja út sýnina" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ógild hnit" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "þáttunarvilla" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "óþekkt gerð rúmfræði" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Leiðarbeiðni mistókst." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Engin leið fannst." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Byrja!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Allar lagaskrár" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "Tókst ekki að tengjast staðsetningarþjónustu" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "Sveinn í Felli, sv1@fellsnet.is" + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "Landakortaforrit fyrir GNOME" + +#: src/mainWindow.js:520 +#| msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Höfundarréttur © 2011 – 2019 Red Hat, Inc. og höfundar GNOME Maps" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortagögn frá %s og meðhöfundum" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortatíglar gefnir út af %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Það er enginn stuðningur við skráategundina" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Mistókst að opna lag" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Mistókst að opna Geo URI-slóð" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Engin tímatöflugögn fundust fyrir þessa leið." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Rangt notandanafn eða lykilorð" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Tókst" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Óleyfileg beiðni" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Hluturinn fannst ekki" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Árekstur, einhver annar er nýbúinn að breyta atriðinu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Hlutnum hefur verið eytt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Leið eða vensl vísa í afleiður sem ekki eru til" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nafn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Opinbera heitið. Venjulega það sem birt væri á skiltum og þess háttar" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Heimilisfang" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Vefsvæði" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Opinbera vefsvæðið. Reyndu að nota grunnform slóðarinnar, t.d. http://vefur." +"is í stað http://dæmi.is/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Símanúmer" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Símanúmer. Notaðu alþjóðlega framsetningu, sem byrjar á + merki. Vertu " +"meðvitaður um reglur þær sem í gildi eru á svæðinu, sérstaklega varðandi " +"persónulega friðhelgi." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Sniðið ætti að innihalda tungumálskóða og titil greinar, til dæmis \"is:" +"Heiti greinar\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Opnunartímar" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" +"Skoðaðu tengilinn í skýringum um hvar hægt sé að fá hjálp varðandi snið." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Fólksfjöldi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Hæð" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Hæð yfir sjávarmáli í metrum." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Hjólastólaaðgangur" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Já" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "takmarkað" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "uppgefið" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetaðgangur" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Þráðlaust net" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Um kapal" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Útstöð" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Þjónusta" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Trúarbrögð" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Andatrú" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Búddismi" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kao-Daí" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristindómur" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfúsíusismi" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindúismi" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jaínismi" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Gyðingdómur" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Íslam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Margra trúarbragða" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heiðni" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafaríanismi" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Vísindakirkjan" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismi" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spírítismi" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taóismi" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Alþjóðlegur únítarismi" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jasismi" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Sóróismi" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Snyrtingar" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Athugasemd" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Upplýsingar sem notaðar eru til að gefa öðrum kortahönnuðum ekki-augljósar " +"ábendingar um tiltekið atriði, markmið höfundar þegar hann útbjó atriði, eða " +"ábendingar um hvernig hægt yrði að þróa/bæta það." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Veldu tegund" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Lokið" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Fólksfjöldi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Hæð:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Opnunartímar:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetaðgangur:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Trúarbrögð:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Snyrtingar:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Hjólastólaaðgangur:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Sími:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Gat ekki þáttað Geo URI-slóð" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "já" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "takmarkað" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "uppgefið" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Frá %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Hleð inn kortaflísum fyrir prentun" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Þú getur hætt við prentun ef þetta tekur of langan tíma" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hætta við prentun" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Bæta við í gegnum staðsetningu" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjarlægja í gegnum staðsetningu" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Snúa við leið" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Gat ekki opnað URI-slóð" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "mistókst að hlaða inn skrá" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Áætlaður tími: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Koma til %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Koma" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Byrja í %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Upphaf" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Birta gönguleiðbeiningar" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Fela gönguleiðbeiningar" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Ganga %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Hlaða inn fyrri valkostum" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Hlaða inn síðari valkostum" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Engir fyrri möguleikar fundust." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Engir síðari möguleikar fundust." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mínúta" +msgstr[1] "%d mínútur" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d klukkustund" +msgstr[1] "%d klukkustundir" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d klukkustund" +msgstr[1] "%d:%02d klukkustundir" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "allan sólarhringinn" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "frá sólarupprás til sólarlags" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "alla daga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "almennir frídagar" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skólafrídagar" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ekki opið" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "um kapal" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "útstöð" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "þjónusta" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Óþekkt" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Nákvæmt" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f klst" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f mín" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f sek" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s míl" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s fet" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Hætta" + +#~ msgid "OK" +#~ msgstr "Í lagi" + +#~ msgid "Load Map Layer" +#~ msgstr "Hlaða inn kortalagi" + +#~ msgid "Open Layer" +#~ msgstr "Opna lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f fet" + +#~ msgid "Country code: %s" +#~ msgstr "Landskóði: %s" diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..f1259873 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1896 @@ +# Italian translation for gnome-maps. +# Copyright (C) 2013 - 2019, 2021 Red Hat & gnome-maps authors +# This file is distributed under the same license as the gnome-maps package. +# Claudio Arseni , 2013, 2014, 2015. +# Gianvito Cavasoli , 2016-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-14 17:10+0000\n" +"PO-Revision-Date: 2021-03-17 09:25+0100\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mappe GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trova luoghi in giro per il mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mappe fornisce un rapido accesso alla cartografia mondiale. Consente di " +"trovare velocemente i luoghi utilizzando la ricerca per città o per " +"indirizzo e di trovare i luoghi in cui incontrare i propri amici." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mappe usa il database OpenStreetMap creato dalla collaborazione di centinaia " +"di migliaia di persone da ogni parte del mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"È possibile cercare posti specifici, tipo «Pub vicino a Via del Corso, Roma» " +"o «Hotel vicino a Piazza del Duomo, Milano»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Il progetto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mappe" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una semplice applicazione per le mappe" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mappe;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Consente alla vostra posizione di essere mostrata sulla mappa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultima posizione visualizzata" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinate dell'ultima posizione visualizzata." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Livello d'ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo di mappa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il tipo di mappa da mostrare (stradale, aerea, ecc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensione finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensione della finestra (larghezza e altezza)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizione finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizione della finestra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra massimizzata" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stato massimizzazione della finestra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numero massimo di risultati per la ricerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Numero massimo di risultati per la ricerca da codifica geografica." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numero di luoghi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numero di luoghi visitati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numero di percorsi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numero di percorsi effettuati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Facebook usate. I valori " +"possibili sono: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Foursquare usate. I " +"valori possibili sono: public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmissione a Facebook dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come post all'account Facebook " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmissione a Twitter dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come tweet all'account Twitter " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome utente o indirizzo e-mail di OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utente ha effettuato l'accesso per modificare i dati " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultimo tipo di trasporto usato per il percorso" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modalità notturna" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indica se l'applicazione è nella modalità notturna." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usa mappe aeree ibride" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Indica se le mappe aeree devono usare lo stile ibrido (con etichette)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilità" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Invia su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Invia su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "A_nnulla" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Chiunque" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Gli amici dei propri amici" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo gli amici" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo a me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Pubblico" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Follower" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privato" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Percorso da qui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Aggiungi destinazione intermedia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Percorso fino a qui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Cosa c'è qui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia posizione" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esporta visualizzazione" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includere percorsi e marcatori" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai alla posizione attuale" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Scegli il tipo di mappa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Attiva/Disattiva i preferiti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Stampa percorso" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra scorciatoie" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ricerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampa il percorso" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Esci" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Apre il menù principale" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualizzazione mappa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Attiva/Disattiva scala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va a alla posizione attuale" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passa alla visualizzazione stradale" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passa alla visualizzazione aerea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Apre livello di forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra etichette" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Apri livello di forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Attivare i servizi di localizzazione per rilevare la posizione" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annulla" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazioni di localizzazione" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalità notturna" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Impostazione account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esporta come immagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazioni su Mappe" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Apri menù principale" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mappe è fuori rete." + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mappe ha bisogno di una connessione a Internet attiva per funzionare " +"correttamente, ma al momento è impossibile trovarne una." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificare la propria connessione e le impostazioni del proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Accedi per modificare le mappe" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aiuta a migliorare la mappa, usando un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Iscriviti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Accedi" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Non ha funzionato. Riprovare, o visitare\n" +"OpenStreetMap per ripristinare la password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codice di verifica non corrisponde, riprovare." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Inserire il codice di verifica mostrato sopra" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Accesso effettuato" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "L'account OpenStreetMap è attivo." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Disconnetti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numero civico" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codice postale" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Città" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nessuno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aggiungi campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Le modifiche alla mappa saranno visibili su tutte le mappe che usano\n" +"dati di OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usate recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Successiva" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nessun risultato trovato" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Si è verificato un errore" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trascinare per modificare l'ordine del percorso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Apri posizione" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Invia a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Verifica…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Apri livello di forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Apri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Attiva/Disattiva visibilità" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricerca del percorso con GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I percorsi itineranti per il trasporto pubblico sono forniti da servizi\n" +"di terze parti.\n" +"GNOME non può garantire la correttezza degli itinerari e degli orari " +"indicati.\n" +"Notare che alcuni fornitori potrebbero non includere tutte le modalità di " +"trasporto disponibili,\n" +"per esempio un fornitore nazionale potrebbe non includere le linee aeree, e " +"un fornitore locale\n" +"potrebbe non includere treni regionali.\n" +"Nomi e marchi riportati sono da considerarsi, quando applicabile, come " +"marchi registrati." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra più risultati" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Nasconde le fermate intermedie e informazioni" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra le fermate intermedie e informazioni" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partire ora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partire alle" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivare alle" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghetti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplani" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Condivide la posizione" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Aggiungi a nuovo percorso" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direzioni" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Contrassegna come preferito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ingrandire per aggiungere la posizione." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Aumenta ingrandimento" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossibile trovare sezioni delle mappe nella directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Analisi del documento XML non riuscita" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributi richiesti mancanti" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossibile trovare l'elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un percorso di una directory locale contenente sezioni delle mappe" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Dimensione mappa per la directory locale delle mappe" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra la versione del programma" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora disponibilità rete" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezionare un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Caricamento" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezionare un posto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Facebook. Selezionarne " +"uno da questo elenco." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Foursquare. Selezionarne " +"uno da questo elenco." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in presso %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivere un commento opzionale per il check-in presso %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossibile trovare «%s» nel servizio social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impossibile trovare un posto adatto per il check-in in questo luogo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credenziali scadute. Aprire «Account online» per accedere e abilitare questo " +"account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non c'è niente qui." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La posizione è stata aggiunta alla mappa, notare che ci potrebbe volere un " +"po' prima che venga mostrata sulla mappa e nei risultati di ricerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mappe di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il filesystem è in sola lettura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non si hanno i permessi per salvarle" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La directory non esiste" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nessun nome file specificato" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossibile esportare la visualizzazione" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Posizione attuale" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinate non valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "errore di analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria sconosciuta" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Richiesta del percorso non riuscita." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Percorso non trovato." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Avvia." + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tutti i file livello" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Impossibile connettersi al servizio di localizzazione" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Claudio Arseni \n" +"Gianvito Cavasoli " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una applicazione di GNOME per le mappe" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e gli autori di GNOME Maps" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "I dati delle mappe sono di %s e collaboratori" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Le sezioni delle mappe sono fornite da %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricerca fornita da «%s» usando «%s»" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Apertura del livello non riuscita" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Continuare?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Si stanno per aprire dei file con una dimensione totale di %s MB. Il " +"caricamento potrebbe richiedere del tempo" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Il tipo di file non è supportato" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Apertura di GeoURI non riuscita" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome utente o password non corretti" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Successo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richiesta errata" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Oggetto non trovato" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflitto, qualcun altro ha già modificato l'oggetto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'oggetto è stato eliminato" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Percorso o relazione in riferimento a un nodo figlio non esistente" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Il nome ufficiale. Questo è tipicamente quello che appare all'accesso." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Indirizzo" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Sito web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Questo URL non è valido. Assicurarsi di includere http:// o https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sito web ufficiale. Provare a usare la forma più basica di un URL, " +"esempio http://example.com invece di http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Il numero di telefono. Usare il formato internazionale, a partire dal " +"simbolo +. Fare attenzione alle leggi locali sulla privacy, specialmente per " +"i numeri di telefono privati." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formato usato deve includere il codice della lingua e il titolo " +"dell'articolo tipo «it:Titolo dell'articolo»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Orari di apertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Vedere il collegamento nell'etichetta per un aiuto sul formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Popolazione" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Altitudine (altezza sopra il livello del mare) di un punto in metri." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accesso per disabili" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitata" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designata" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accesso Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Con cavo" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminale" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servizio" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religione" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhismo" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianesimo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianesimo" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Induismo" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Giainismo" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Ebraismo" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religioni multiple" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganesimo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianesimo" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoismo" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismo" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismo" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitariani universalisti" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Servizi igienici" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Indicazioni usate per comunicare altri mappatori le informazioni non " +"evidenti su un elemento, l'intento dell'autore quando lo crea, o suggerire " +"futuri miglioramenti." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleziona tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fatto" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Luogo senza nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Analisi dell'URI geografico non riuscita" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordinate" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precisione" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisione: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numero di telefono" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accesso pubblico a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Nessun accesso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi pubblica" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accesso a Internet con cavo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computer disponibili all'uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistente Internet disponibile" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Nessun bagno disponibile" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Bagno disponibile" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accessibile per sedie a rotelle" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accesso limitato per sedie a rotelle" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Non accessibile per sedie a rotelle" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Progettato per gli utenti con sedia a rotelle" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religione:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Luogo non trovato su OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "L'URL delle coordinate non è valido" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L'URL non è supportato" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Da %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Caricamento sezioni della mappa per la stampa" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Si può interrompere la stampa se questa prende troppo tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompi stampa" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aggiunge tramite posizione" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Rimuove tramite posizione" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percorso inverso" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aggiungi «%s» in «%s»" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Apertura dell'URI non riuscita" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Apri con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "caricamento file non riuscito" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo stimato: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari forniti da %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partenza da %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partenza" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camminare per %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arriva in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrivo" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra il percorso a piedi" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Nasconde il percorso a piedi" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Caricare alternative precedenti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Caricare alternative successive" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non è stata trovata alcuna alternativa precedente." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non è stata trovata alcuna alternativa successiva." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nessun dato trovato sugli orari di questo percorso." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nessun fornitore trovato per questo percorso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minuti" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Tutto il giorno" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Dal tramonto all'alba" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Ogni giorno" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Giorni festivi" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacanze scolastiche" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "chiuso" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Sconosciuta" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Esatta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ora" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ora %s min" +msgstr[1] "%s ore %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sec" +msgstr[1] "%s sec" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Questo plugin non supporta l'ultimo arrivo" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continua su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continua" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolta a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Svolta a sinistra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolta leggermente a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Svolta leggermente a sinistra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolta brusca a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Svolta brusca a sinistra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolta a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Svolta a destra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolta leggermente a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Svolta leggermente a destra" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolta brusca a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Svolta brusca a destra" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Alla rotonda, prendere l'uscita %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Alla rotonda, prendere l'uscita verso %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Prendere la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendere l'ascensore e scendere a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Prendere l'ascensore" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fare un'inversione a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Fare un'inversione a sinistra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fare un'inversione a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Fare un'inversione a destra" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..a974b3e4 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1477 @@ +# Japanese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# victory , 2013. +# Jiro Matsuzawa , 2013. +# Ikuya Awashiro , 2014. +# Hajime Taira , 2014-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-03-16 20:35+0000\n" +"PO-Revision-Date: 2016-04-06 07:08+0900\n" +"Last-Translator: sujiniku \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"世界中あらゆる場所の地図に簡単にアクセスできます。都市や住所を検索して、お探" +"しの場所をさっと見つけられ、待ち合わせ場所もすぐに特定できます。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"この地図アプリは、OpenStreetMap データベースを利用しています。このデータベー" +"スは、世界中の膨大な人々が協力して作成しています。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"特定のタイプにより検索することができます。場所の特定の種類による検索。" +"例:“Pubs near Main Street, Boston“ あるいは “Hotel near Alexanderplatz, " +"Berlin“" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:441 +msgid "Maps" +msgstr "地図" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "シンプルな地図アプリケーション" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;地図;マップ;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +#| msgid "User set last known location" +msgid "last viewed location" +msgstr "直近の既知の位置がユーザー設定によるものかどうか" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +#, fuzzy +#| msgid "Description of last known location" +msgid "Coordinates of last viewed location." +msgstr "直近の既知の位置の詳細" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "ウィンドウサイズ" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "ウィンドウサイズ (幅と高さ) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "ウィンドウの位置" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "ウィンドウの位置 (横位置と縦位置) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "ウィンドウ最大化" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "ウィンドウを最大化しているかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "検索結果の最大数" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "geocode 検索の検索結果として表示する最大数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "記録する最近の場所の数" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "最近訪れた場所を記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "記録する最近のルートの数" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "最近訪れたルートを記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebookへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最新のFacebookのチェックイン時のプライバシー設定で指定可能な値: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquareへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最新のFoursquareのチェックイン時のプライバシー設定で指定可能な値: public, " +"followers, private" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "FoursquareのチェックインをFacebookにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"FacebookアカウントがFoursquareアカウントに関連付けられている場合、Foursquare" +"のチェックインをFacebookにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "FoursquareのチェックインをTwitterにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"TwitterアカウントがFoursquareアカウントに関連付けられている場合、Foursquareの" +"チェックインをTwitterにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap アカウントの設定" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "キーボードショートカット(_K)" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "このアプリケーションについて" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "終了" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "公開範囲" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Facebookに投稿" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Twitterに投稿" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "チェックイン(_H)" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "誰でも" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "友達の友達まで" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "友達のみ" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "自分のみ" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "公開" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "フォロワー" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "プライベート" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ここはどこ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "場所をコピー" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "画像としてエクスポート" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "ビューのエクスポート" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ルートとマーカーを含む" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ショートカットを表示する" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "検索する" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ルート案内の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ルートを印刷する" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "終了する" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地図の表示" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拡大する" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "縮小する" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "縮尺の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "現在の位置へ移動する" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "現在位置を特定するには位置情報サービスをオンにしてください" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "場所の設定" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "現在の位置へ移動します" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "地図の種類を選択" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "ルート案内" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "お気に入り" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "ルートの印刷" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "地図はオフラインです。" + +#: ../data/ui/main-window.ui.h:8 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"インターネット接続がありません。このアプリケーションが適切に機能するためにイ" +"ンターネット接続が必要です。" + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "インターネット接続とプロキシの設定を確認してください。" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "新しいルートを追加" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "別のアプリケーションで開く" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "お気に入りに追加" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "ここにチェックイン" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap アカウント" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"地図編集のためのサインイン" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "メールアドレス" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "パスワード" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "サインイン" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "アカウントをお持ちでありませんか?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +#, fuzzy +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "認証コードが一致しません、やりなおしてください。" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "上記の認証コードを入力" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "検証" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "サインイン済み" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "あなたの OpenStreetMap account アカウントはアクティブです。" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "サインアウト" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "道路地図" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "" + +#: ../data/ui/osm-edit-address.ui.h:3 +#, fuzzy +#| msgid "Postal code: %s" +msgid "Postal code" +msgstr "郵便番号: %s" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +#, fuzzy +#| msgid "_Cancel" +msgid "Cancel" +msgstr "キャンセル(_C)" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:472 +msgid "Next" +msgstr "" + +#: ../data/ui/place-bubble.ui.h:1 +#, fuzzy +#| msgid "Show more results" +msgid "Show more information" +msgstr "さらに結果を表示" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Enterキーを押すと検索します" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "ルートの順序をドラッグで変更" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "場所を開く" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "開く(_O)" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "" + +#: ../data/ui/shape-layer-row.ui.h:1 +#, fuzzy +#| msgid "Toggle favorites" +msgid "Toggle visible" +msgstr "お気に入り" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "さらに結果を表示" + +#: ../data/ui/transit-leg-row.ui.h:1 +msgid "Hide intermediate stops and information" +msgstr "" + +#: ../data/ui/transit-leg-row.ui.h:2 +#, fuzzy +#| msgid "Show more results" +msgid "Show intermediate stops and information" +msgstr "さらに結果を表示" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "現在の位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "位置精度: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to parse XML document" +msgstr "Geo URIの解析に失敗しました" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "" + +#: ../src/application.js:103 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "アカウントの選択" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "読み込み中" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "場所の選択" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Facebookでチェックインする場所を見つけることができませんでした。次のリストか" +"ら1つ選択してください。" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Foursquareでチェックインする場所を見つけることができませんでした。次のリスト" +"から1つ選択してください。" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "%sへチェックイン" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%sへチェックイン時に添えるコメントを書きます。" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:509 +msgid "An error has occurred" +msgstr "エラーが発生しました" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ソーシャルサービスにて \"%s\" を見つけることができません" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "この場所にチェックインするために適切な場所を見つけることができません" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"認証情報が失効しました。オンラインアカウント設定を開き、再度アカウントを認証" +"してください" + +#: ../src/contextMenu.js:96 +msgid "Route from here" +msgstr "ここからのルート" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "行き先を追加" + +#: ../src/contextMenu.js:100 +msgid "Route to here" +msgstr "ここまでのルート" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:630 +msgid "Route request failed." +msgstr "ルート要求は失敗しました。" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:614 +#: ../src/openTripPlanner.js:728 +msgid "No route found." +msgstr "ルートが見つかりません。" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "開始!" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "" + +#: ../src/mainWindow.js:387 +msgid "Failed to connect to location service" +msgstr "位置情報サービスに接続できません" + +#: ../src/mainWindow.js:439 +msgid "translator-credits" +msgstr "" +"松澤 二郎 \n" +"victory \n" +"Ikuya Awashiro \n" +"Hajime Taira \n" +"日本GNOMEユーザー会 " + +#: ../src/mainWindow.js:442 +msgid "A map application for GNOME" +msgstr "GNOME 向け地図アプリケーション" + +#: ../src/mapView.js:354 +msgid "File type is not supported" +msgstr "" + +#: ../src/mapView.js:361 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open layer" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/mapView.js:397 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open GeoURI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/openTripPlanner.js:626 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "" + +#: ../src/osmConnection.js:448 +#, fuzzy +#| msgid "Position not found" +msgid "Object not found" +msgstr "位置が見つかりません" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:159 +msgid "Website" +msgstr "" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:165 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours" +msgstr "営業時間: %s" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +#, fuzzy +#| msgid "Population: %s" +msgid "Population" +msgstr "人口: %s" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access" +msgstr "車いすでのアクセス: %s" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "可能" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "" + +#: ../src/osmEditDialog.js:167 +#, fuzzy +#| msgid "limited" +msgid "Limited" +msgstr "制限あり" + +#: ../src/osmEditDialog.js:168 +#, fuzzy +#| msgid "designated" +msgid "Designated" +msgstr "車いす専用" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../src/osmEditDialog.js:340 +#, fuzzy +#| msgid "Select a place" +msgid "Select Type" +msgstr "場所の選択" + +#: ../src/osmEditDialog.js:458 +msgid "Done" +msgstr "" + +#: ../src/placeBubble.js:122 +#, fuzzy +#| msgid "Population: %s" +msgid "Population:" +msgstr "人口: %s" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "" + +#: ../src/placeBubble.js:133 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours:" +msgstr "営業時間: %s" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "" + +#: ../src/placeBubble.js:143 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access:" +msgstr "車いすでのアクセス: %s" + +#: ../src/placeBubble.js:149 ../src/placeBubble.js:153 +msgid "Phone:" +msgstr "" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Geo URIの解析に失敗しました" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:329 +msgid "yes" +msgstr "可能" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "制限あり" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:335 +msgid "no" +msgstr "困難" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "車いす専用" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "" + +#: ../src/sendToDialog.js:179 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open URI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:285 +#, javascript-format +msgid "Estimated time: %s" +msgstr "所要時間: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:74 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:80 +#, fuzzy +#| msgid "Start!" +msgid "Start" +msgstr "開始!" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:248 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:275 +#, fuzzy, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%f 分" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:286 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:292 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:611 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24時間体制" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "日の出から日没まで" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "毎日" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "祝日" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "学校休日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "休業" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "正確" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f 時間" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f 分" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f マイル" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f フィート" + +#~ msgid "Country code: %s" +#~ msgstr "国コード: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "直近の既知の位置と精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "直近の既知の位置 (緯度と経度を度単位で) と精度 (メートル単位) です。" + +#~ msgid "Description of last known location of user." +#~ msgstr "ユーザーの直近の既知の位置の詳細です。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "直近の既知の位置が、ユーザーが手動で設定したものかどうかの設定です。" + +#~ msgid "I’m here!" +#~ msgstr "私はここにいます!" + +#~ msgid "To" +#~ msgstr "目的地" + +#~ msgid "From" +#~ msgstr "出発地点" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星写真" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 00000000..f769dd96 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,2045 @@ +# Kazakh translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Baurzhan Muftakhidinov , 2014-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-01 19:20+0500\n" +"Last-Translator: Baurzhan Muftakhidinov \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME карталары" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Дүниежүзілік орындарды табу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карталар қолданбасы сізге дүниежүзі карталарына жылдам қатынауды мүмкін " +"қылады. Оның көмегімен керек болған орынды оның орналасқан қаласын не " +"көшесін енгізу арқылы табуға, немесе доспен кездесу үшін орынды табуға " +"болады." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карталар қолданбасы қауымдастық ұсынатын OpenStreetMap дерекқорын қолданады, " +"оны дүниежүзінің әр жеріндегі мыңдаған адамдар жасайды." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Сонымен қатар, орналасулардың нақты түрлерін де іздеуге болады, мысалы " +"\"Гостиницы Астаны возле Байтерека\" немесе \"Hotels near Gorky Park, Almaty" +"\" (қазақша іздеу әлі мүмкін емес)." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME жобасы" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Карталар" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Қарапайым карталар қолданбасы" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Карталар;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Картада сіздің орналасуыңызды көрсете алады." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "соңғы қаралған орналасу" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Соңғы қаралған орналасудың координаттары." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштабтау" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабтау деңгейі" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Карта түрі" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Көрсетілетін карта түрі (көше, әуе және т.б.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Терезе өлшемі" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Терезе өлшемі (ені мен биіктігі)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Терезе орны" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Терезе орны (x және y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Терезе максималды етілген" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Терезенің максималды күйі" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Іздеу нәтижелерінің максималды саны" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Геокодын іздеуі қайтаратын нәтижелерінің максималды саны." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Соңғы орындардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Соңғы болған орындардың қаншауын сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Соңғы бағыттардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Соңғы бағыттардың нешеуін сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook көмегімен белгіленудің жекелік баптауы" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Facebook көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS және SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare көмегімен белгіленудің жекелік баптауы" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Foursquare көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері: public, followers не private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare көмегімен белгіленудің Facebook ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Facebook тіркелгісіне жазба ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare көмегімен белгіленудің Twitter ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Twitter тіркелгісіне твит ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap пайдаланушы аты немесе эл. пошта адресі" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Пайдаланушы OpenStreetMap деректерін түзету үшін кірген ба, соны анықтайды." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Бағдарды құрастыру кезінде соңғы қолданылған көлік түрі" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Түнгі режимі" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Қолданба түнгі режимінде ме, соны көрсетеді." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Гибридті әуе мозаикасын пайдалану" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Әуе мозаикасы гибридтік стильді (белгілермен) пайдалануы керек пе." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Көрінуі" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook-те жариялау" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter-де жариялау" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ба_с тарту" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Б_елгілену" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Әркім" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Достардың достары" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Тек достар" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Тек мен" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Публикалық" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Сонымнан ерушілер" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Жеке" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Осыдан бағдар" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Аралық мақсатты қосу" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Осыған дейін бағдар" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Осында не бар?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Орналасуды көшіріп алу" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Көріністі экспорттау" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Э_кспорт" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Бағдар және маркерлерді қоса" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Карта түрін таңдаңыз" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Кішірейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Үлкейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Таңдамалыларды көрсету/жасыру" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Жалпы" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Пернетақта жарлықтарын көрсету" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Іздеу" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Шығу" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Карта көрінісі" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Үлкейту" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Кішірейту" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Масштабты іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Көше көрінісіне ауысу" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Ауадан көрінісіне ауысу" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Белгілерді көрсету" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Қабатты (shape) ашу…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Орнасуыңызды анықтау үшін орналасулар қызметін іске қосыңыз" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Бас тарту" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Орналасу баптаулары" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Түнгі режимі" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісін баптау" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Сурет ретінде экспорттау" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "П_ернетақта жарлықтары" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Карталар қолданбасы туралы" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Карталар желіге қосылмаған!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карталар дұрыс жұмысы үшін интернетпен байланыс керек, бірақ ондай байланыс " +"табылмады." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Байланысу және прокси баптауларын тексеріңіз." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісі" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Карталарды түзету үшін кіріңіз" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap тіркелгісі көмегімен\n" +"карталарды жақсартуға көмектесіңіз." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Эл. пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Тіркелу" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Кіру" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Кешіріңіз, бұл жасамады. Қайталап көріңіз, немесе\n" +"пароліңізді тастау үшін, OpenStreetMap сайтын шолыңыз." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Растау коды сәйкес болмады, қайталап көріңіз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Жоғарыда көрсетілген растау кодын енгізіңіз" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Растау" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Кіру орындалды" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Сіздің OpenStreetMap тіркелгіңіз белсенді." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Шығу" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Көше" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Үй нөмірі" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Пошталық индексі" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Қала" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Түрі" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Жоқ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Өрісті қосу" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Пікір" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Карта өзгерістері OpenStreetMap деректерін қолданатын\n" +"барлық карталарда көрінетін болады." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Жақында қолданылған" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Келесі" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нәтижелер табылмады" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Қате орын алды" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Бағдар ретін ауыстыру үшін тартып апарыңыз" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Орналасуды ашу" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Көшіру" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Қайда жіберу…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Белгілену…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ашу" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Көрінуін іске қосу/сөндіру" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Бағдарды іздеу GraphHopper ұсынады" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Қоғамдық көліктің маршруттары үшінші жақты қызметтермен\n" +"ұсынылған.\n" +"GNOME көрсетілген бағдарлар және уақыттар үшін жауапты емес.\n" +"Кейбір провайдерлер тасымалдаудың барлық қолжетімді түрлерін қамтымауы " +"мүмкін\n" +"екенін ескеріңіз, мысалы, ұлттық провайдер авиакомпанияларды қамтымауы " +"мүмкін және\n" +"жергілікті провайдер аймақтық поездарды қамтымауы мүмкін\n" +"Көрсетілген атаулар және брендтер тіркелген сауда белгілері ретінде " +"қарастырылуы тиіс." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Көбірек нәтижелерді көрсету" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты жасыру" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты көрсету" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Қазір кету" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Кету, " + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Жету, " + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Көрсету" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобустар" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамвайлар" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Пойыздар" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Паромдар" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Ұшақтар" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Орналасумен бөлісу" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Жаңа бағдарға қосу" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Бағыттар" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Таңдамалы ретінде белгілеу" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Орналасуды қосу үшін масштабты үлкейтіңіз!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Үлкейту" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Бумадан мозаикалық құрылымды табу сәтсіз аяқталды" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML құжатын талдау қатемен аяқталды" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Керек атрибуттар жетіспейді" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM элементін табу мүмкін емес" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Жергілікті плиткалық бумалар құрылымына дейінгі жол" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Жергілікті мозаика бумасының өлшемі" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Бағдарлама нұсқасын көрсету" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Желінің қолжетімділігін елемеу" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Тіркелгіні таңдаңыз" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Жүктелуде" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Орынды таңдаңыз" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Карталар Facebook көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Карталар Foursquare көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s жерінде белгілену" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s жерінде белгіленудің міндетті емес хабарламасын жазыңыз." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "\"%s\" орнын әлеуметтік қызметтен табу мүмкін емес" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Бұл орналасуда белгілену үшін жарамды орынды табу мүмкін емес" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Тіркелу деректерінің мерзімі аяқталған, бұл тіркелгіге кіру және оны іске " +"қосу үшін желілік тіркелгілерді ашыңыз" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Осында ешнәрсе табылмады!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Орналасу картаға қосылды. Бірақ, ол картада және іздеу нәтижелерінде " +"көрінуіне дейін біршама уақыт өту керек болуын ескертіңіз." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта, %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлдық жүйе тек оқу үшін қолжетерлік" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Осында сақтау үшін керек рұқсаттарыңыз жоқ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Бума жоқ болып тұр" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Файл аты көрсетілмеген" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Көріністі экспорттау мүмкін емес" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ағымдағы орналасу" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "координаттар жарамсыз" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "талдау қатесі" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "геометрия белгісіз" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Бағдар сұранымы сәтсіз." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Бағдар табылмады." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Бастау!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Барлық қабаттар файлдары" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Орналасулар қызметіне байланысу сәтсіз аяқталды" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Baurzhan Muftakhidinov " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "GNOME үшін карталар қолданбасы" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. және GNOME Maps авторлары" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Карта деректерін ұсынған %s және үлес қосушылар" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Карта мозаикасын ұсынған %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Іздеуді %s ұсынған, %s негізінде" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Қабатты ашу сәтсіз аяқталды" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Жалғастыруды қалайсыз ба?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Жалпы өлшемі %s МБ болатын файлдарды ашуға дайынсыз. Бұл жүктелуге біраз " +"уақытты алуы мүмкін" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Файл түріне қолдау жоқ" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI ашу сәтсіз аяқталды" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Пайдаланушы аты не паролі қате" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Сәтті" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Қате сұраным" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Объект табылмады" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Ерегесу, біреу бұл объектті жаңа ғана түзеткен" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Объект өшірілген" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Жол немесе байланыс жоқ ұрпақтарға сілтеп тұр" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Аты" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Ресми аты. Әдетте бұл белгілерде көрсетіледі." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Адресі" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Веб сайт" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Бұл дұрыс URL емес. http:// немесе https:// қосылғанын тексеріңіз." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ресми веб сайты. Оңайлатылған түрін қолдануға тырысыңыз, мысалы, http://" +"example.com (http://example.com/index.html емес)." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Телефон нөмірі. +таңбасынан басталатын халықаралық пішімді қолданыңыз. " +"Жергілікті жекелік заңдарды ескертіңіз, әсіресе, жеке нөмірлер үшін." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Қолданылатын пішімі тіл коды және мақала атауынан тұруы керек (мыс, ”kk:" +"Мақала атауы”)." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Жұмыс істеу уақыты" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Пішім көмегін алу үшін белгі сілтемесін қараңыз." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Халық саны" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Теңіз деңгейінен биіктігі" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Нүктенің биіктігі (теңіз деңгейінен), метр есебімен." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Мүгедектер арбасымен қатынау" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Иә" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Жоқ" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Шектелген" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Арнайы" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Интернетпен байланыс" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Сымды" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Қызмет" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Дін" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Христиан" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Конфуциандық" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Бірнеше дін" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Паганизм" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Пастафариандық" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Сайентология" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Шинто" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Спиритуализм" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Таоизм" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Унитариандық универсализм" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Әжетханалар" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Естелік" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Басқа карталар жасаушыларға элемент туралы айқын емес ақпаратты жеткізуге " +"қолданатын ақпарат, немесе оны жасау кезіндегі автордың пікірі, немесе " +"болашақ жақсартулар туралы кеңестер." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Түрін таңдаңыз" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Дайын" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Аталмаған орын" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI талдау сәтсіз аяқталды" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Координаттар" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Дәлдік" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Дәлдігі: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Телефон нөмірі" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Интернетпен публикалық байланыс" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Интернетпен байланыс жоқ" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Публикалық Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Интернетпен сымды байланыс" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Пайдалану үшін қолжетімді компьютерлер" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Интернетпен көмек көрсетуі бар" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Дәретханалар жоқ" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Қолжетімді дәретханалар" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Мүгедектер арбасымен қатынау" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Мүгедектер арбасымен шектелген қатынау" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Мүгедектер арбасымен қатынау жоқ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Мүгедектер арбасын қолданушыларына арналған" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Дін:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Орын OpenStreetMap ішінен табылмады" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URL ішіндегі координаталар жарамсыз" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL түріне қолдау жоқ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s және %s арасында" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Баспаға шығару үшін картаны жүктеп алу" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Баспаға шығару тым көп уақыт алса, оны үзе аласыз" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Баспаға шығару туралы" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Орналасуы бойынша қосу" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Орналасуы бойынша өшіру" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Кері бағыт" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s %s ішіне қосу" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI ашу сәтсіз аяқталды" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s көмегімен ашу" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "файлды жүктеу сәтсіз" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Шамамен уақыты: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруттарды ұсынған %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s адресінен бастау" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Бастау" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Жүріс %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s адресіне жету" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Жету" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Жүріс ақпаратын көрсету" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Жүріс ақпаратын жасыру" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ертерек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Кейінірек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ертерек балама нұсқалары табылмады." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Кейінірек балама нұсқалары табылмады." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Бұл бағдар үшін кесте жоспары табылмады." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Бұл маршрут үшін ұсынушы табылмады." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сағат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сағат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Тәулік бойы" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Күн шыққаннан бастап күн батқанға дейін" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Күнде" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Мемлекеттік мерекелер" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Мектеп демалыстары" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ашық емес" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Белгісіз" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Дәл" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s сағ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s сағ %s мин" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s миля" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s фут" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Бұл плагині соңғы келуді қолдамайды" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s көмегімен жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s жерінде солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s жерінде сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s жерінде сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s жерінде оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s жерінде оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s жерінде оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Сақиналы қиылыстан %s шығысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Сақиналы қиылыстан %s үшін шығысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Сақиналы қиылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Лифтті қолданып, %s жерінен шығу" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Лифтті қолдану" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s үшін сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s үшін оң жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Оң жақ кері бұрылысын қолдану" + +#~ msgid "Find a Route" +#~ msgstr "Бағдарды табу" + +#~ msgid "Check in here" +#~ msgstr "Осында белгілену" + +#~ msgid "Show more information" +#~ msgstr "Көбірек ақпарат шығару" + +#~ msgid "Population:" +#~ msgstr "Халық саны:" + +#~ msgid "Altitude:" +#~ msgstr "Теңіз деңгейінен биіктігі:" + +#~ msgid "Opening hours:" +#~ msgstr "Жұмыс істеу уақыты:" + +#~ msgid "Internet access:" +#~ msgstr "Интернетпен байланыс:" + +#~ msgid "Toilets:" +#~ msgstr "Әжетханалар:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Мүгедектер арбасымен қатынау:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "иә" + +#~ msgid "limited" +#~ msgstr "шектелген" + +#~ msgid "no" +#~ msgstr "жоқ" + +#~ msgid "designated" +#~ msgstr "арнайы" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL жарамсыз" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "сымды" + +#~ msgid "terminal" +#~ msgstr "терминал" + +#~ msgid "service" +#~ msgstr "қызмет" + +#~ msgid "Primary menu" +#~ msgstr "Басты мәзір" + +#~ msgid "Don’t have an account?" +#~ msgstr "Тіркелгіңіз жоқ па?" + +#~ msgid "%f h" +#~ msgstr "%f сағ" + +#~ msgid "%f min" +#~ msgstr "%f мин" + +#~ msgid "%f s" +#~ msgstr "%f с" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Басқа қолданбамен ашу" + +#~ msgid "Press enter to search" +#~ msgstr "Іздеу үшін enter басыңыз" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Бағдарды іздеу OpenTripPlanner ұсынады" + +#~ msgid "Add destination" +#~ msgstr "Мақсатты қосу" + +#~ msgid "Quit" +#~ msgstr "Шығу" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Қабатты (shape) ашу…" + +#~ msgid "OK" +#~ msgstr "ОК" + +#~ msgid "Load Map Layer" +#~ msgstr "Карта қабатын жүктеу" + +#~ msgid "Open Layer" +#~ msgstr "Қабатты ашу" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миля" + +#~ msgid "%f ft" +#~ msgstr "%f фут" + +#~ msgid "Position not found" +#~ msgstr "Орны табылмады" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON файлын талдау қатемен аяқталды" + +#~ msgid "Country code: %s" +#~ msgstr "Ел коды: %s" + +#~ msgid "Population: %s" +#~ msgstr "Халық саны: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Мүгедектер арбасымен қатынау: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Соңғы белгілі орналасу және дәлдігі" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Соңғы белгілі орналасу (ендігі және бойлығы, градуспен) және дәлдігі " +#~ "(метрмен)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Пайдаланушының соңғы белгілі орналасудың сипаттамасы." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Соңғы белгілі орналасуды пайдаланушы қолмен көрсеткен ба, соны анықтайды." + +#~ msgid "I’m here!" +#~ msgstr "Мен осындамын!" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 00000000..513961bb --- /dev/null +++ b/po/kn.po @@ -0,0 +1,172 @@ +# Kannada translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# prabodhcp , 2013 +# Shankar Prasad , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-18 20:54+0000\n" +"PO-Revision-Date: 2013-12-30 17:35+0630\n" +"Last-Translator: Shankar Prasad \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "ಮ್ಯಾಪ್ಸ್" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ಒಂದು ಸರಳ ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "ನಕ್ಷೆಗಳು;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "ಕಿಟಕಿ ಗಾತ್ರ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "ಕಿಟಕಿಯ ಗಾತ್ರ (ಉದ್ದ ಮತ್ತು ಅಗಲ)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (x and y)." +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ (x ಮತ್ತು y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximized state" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Last known location was set manually by user." +msgstr "" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "ಕುರಿತು" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "ನಿರ್ಗಮಿಸು" + +#: ../src/context-menu.ui.h:1 +msgid "What's here?" +msgstr "ಇಲ್ಲೇನಿದೆ?" + +#: ../src/context-menu.ui.h:2 +msgid "I'm here!" +msgstr "ನಾನಿಲ್ಲಿದ್ದೇನೆ!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "prabodhcp , ಶಂಕರ್ ಪ್ರಸಾದ್ " + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME ಗಾಗಿ ಒಂದು ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "ರಸ್ತೆ" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ಉಪಗ್ರಹ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "ಗೊತ್ತಿರದ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "ನಿಖರ" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#: ../src/userLocation.js:62 +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"ಸ್ಥಾನ ನಿಖರತೆ: %s" + diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..ba62e953 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,1998 @@ +# Korean translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Seong-ho Cho , 2013-2019. +# Kwangseob Jeong , 2018. +# Jeeyong Um , 2019-2020. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-12 21:40+0900\n" +"Last-Translator: Jeeyong Um \n" +"Language-Team: GNOME Korea \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "그놈 지도" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "전세계의 장소를 찾아봅니다" + +# NOTE: false alarm +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"지도로 전 세계 모든 지도에 빠르게 접근할 수 있습니다. 도시, 거리, 친구를 만" +"날 여러분이 찾는 장소를 빠르게 찾을 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"지도는 전세계 수많은 사람이 함께 만든 OpenStreenMap 데이터베이스를 사용합니" +"다." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"“보스턴 번화가 근처의 술집” 또는 “베를린 알렉산더플라츠 근처의 호텔”과 같은 " +"지정된 형식의 위치도 검색할 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "그놈 프로젝트" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "지도" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "간단한 지도 프로그램" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;지도;맵;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "사용자 위치를 지도에 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "최근 본 위치" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "최근 살펴본 위치의 좌표." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "확대" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "확대 수준" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "지도 형식" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "지도 표시 형식(거리, 항공 등)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "창 크기" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "창 크기(너비 및 높이)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "창 위치" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "창 위치(가로 및 세로)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "창 최대화" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "창 최대화 상태" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "최대 검색 결과 수" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "지오코드 검색 결과의 최대 결과 갯수." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "최근 위치를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "최근 방문할 위치를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "최근 경로를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "최근 방문 경로를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "페이스북 체크인 개인 정보 설정" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"최근 사용한 페이스북 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "포스퀘어 체크인 개인 정보 설정" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"최근에 사용한 포스퀘어 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: 공개, 팔로워, 비공개." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "페이스북에 포스퀘어 체크인 게시글 보내기" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 페이스북 계정으로 체크인 게시글을 올릴 경우 표시합니" +"다." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "트위터 포스퀘어 체크인 트윗 보내기" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 트위터 계정으로 체크인 트윗을 올릴 경우 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 사용자 이름 및 전자메일 주소" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"사용자가 OpenStreetMap 데이터를 편집하려고 접속했는지 여부를 나타냅니다." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "최근 확인한 경로 안내 대중교통" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "야간 모드" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "프로그램이 야간 모드 상태인지 여부." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "하이브리드 항공 타일 사용" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "항공 타일에서 (레이블이 포함된) 하이브리드 스타일 사용 여부." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "공개 범위" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "페이스북에 게시" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "트위터에 게시" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "취소(_C)" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "체크인(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "전체 공개" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "친구의 친구" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "친구만 보기" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "나만 보기" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "공개" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "팔로워" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "비공개" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "여기서부터 경로 표시" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "경유지 추가" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "여기까지 경로 표시" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "여기가 어딘가요?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "위치 복사" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "내보내기 보기" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "내보내기(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "경로 및 표시 포함" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "지도 형식을 선택하세요" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "축소" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "확대" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "경로 계획 도우미 토글" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "즐겨찾기 토글" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "일반" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "바로 가기 표시" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "검색" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "경로 계획 도우미 전환" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "끝내기" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "지도 보기" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "확대" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "축소" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "축척 바꾸기" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "거리 보기로 전환" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "공중 보기로 전환" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "도형 레이어 열기" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "레이블 보기" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "도형 레이어 열기…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "위치 정보 서비스에서 현재 위치 정보를 찾도록 켜기" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "취소" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "위치 정보 설정" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "야간 모드" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap 계정 설정" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "이미지로 내보내기" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "키보드 바로 가기 키(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "지도 정보" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "맵은 오프라인 상태입니다!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"지도가 제대로 동작하려면 인터넷에 연결해야하지만, 연결을 찾을 수 없습니다." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "연결 및 프록시 설정을 확인하십시오." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 계정" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"지도를 편집하려면 접속하십시오" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap 계정으로\n" +"지도 개선을 도와주십시오." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "전자메일" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "암호" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "가입" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "접속" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"죄송하지만 동작하지 않습니다. 다시 시도하시거나\n" +"OpenStreetMap을 방문하여 암호를 다시 설정하십시오." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "인증 코드가 일치하지 않습니다. 다시 시도하십시오." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "아래에 나타난 인증 코드를 입력하십시오" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "검증" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "접속함" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap 계정을 활성화했습니다." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "나가기" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "거리" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "지번" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "우편 번호" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "도시" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "형식" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "없음" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "필드 추가" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "설명" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"OpenStreetMap 데이터를 활용하는 모든 지도에\n" +"바뀐 지도가 나타납니다." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "최근 사용" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "다음" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "결과가 없습니다" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "오류가 발생했습니다" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "경로를 바꾸려면 끌어다놓으십시오" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "위치 열기" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "복사" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "보내기…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "체크인…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "도형 레이어 열기" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "열기(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "보기 상태 전환" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "그래프 하퍼 경로 검색" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"제 3자 서비스에서 제공하는 대중 교통 운행 일정입니다.\n" +"그놈에서는 운행 경로와 일정의 정확성을 보증할 수 없습니다.\n" +"서비스 제공자에 따라 이용 가능한 모든 교통 수단을 제공하는 것은 아님에\n" +"주의해주세요. 예를 들어 전국 단위 제공자는 항공편을 제공하지 않는다거나\n" +"지역 제공자가 지방 열차편 정보를 제공하지 않을 수 있습니다.\n" +"명칭과 브랜드는 상표법 적용이 가능할 경우 등록 상표로 간주합니다." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "더 많은 결과 보기" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "중간 정류장 및 정보 숨김" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "중간 정류장 및 정보 표시" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "지금 출발" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "출발 수단" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "도착 수단" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "보이기" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "버스" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "트램" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "열차" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "지하철" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "선박" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "비행기" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "위치 공유" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "새 경로에 추가" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "방향" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "즐겨찾기 표시" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "추가할 위치를 확대합니다!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "확대" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "디렉터리에서 타일 구조 찾기에 실패했습니다" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML 문서 해석에 실패했습니다" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "필요한 속성이 빠졌습니다" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM 구성 요소를 찾을 수 없습니다" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "로컬 타일 디렉터리 구조 경로" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "로컬 타일 디렉터리의 타일 크기" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "프로그램 버전 보기" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "네트워크 사용 가능 여부 무시" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[<파일>…|]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "계정을 선택하십시오" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "불러오는 중" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "장소를 선택하십시오" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"페이스북에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"포스퀘어에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s에 체크인" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s에 체크인할 추가 메시지를 작성합니다." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "소셜 서비스에서 “%s”을(를) 찾을 수 없습니다" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "이 위치를 체크인할 적당한 장소를 찾을 수 없습니다" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"인증 기한이 지났습니다. 온라인 계정을 열어 접속한 후 이 계정을 활성화하십시오" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "여기에 아무것도 없습니다!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"지도에 위치를 추가했습니다. 지도와 검색 결과에 나타나기까지 시간이 조금 걸릴 " +"수 있는 점을 참고하십시오." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f의 지도.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "읽기 전용 파일 시스템입니다" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "해당 위치를 저장할 권한이 없습니다" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "디렉터리가 없습니다" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "파일 이름을 지정하지 않았습니다" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "보기 화면을 내보낼 수 없습니다" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "현재 위치" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "잘못된 좌표" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "해석 오류" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "알 수 없는 지형 정보" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "경로 요청에 실패했습니다." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "경로가 없습니다." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "시작!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "모든 레이어 파일" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "위치 서비스 연결에 실패했습니다" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"조성호 \n" +"정광섭 \n" +"엄지용 " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "그놈용 지도 프로그램" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s와(과) 기여자의 지도 데이터" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "%s에서 제공한 지도 타일" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s에서 %s을(를) 활용한 검색 기능 제공함" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "레이어 열기에 실패했습니다" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "계속 하시겠습니까?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "%s MB 크기의 파일 열기를 시도하였습니다. 이 작업은 시간이 걸립니다" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "파일 형식을 지원하지 않습니다" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI 열기에 실패했습니다" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "사용자 이름 또는 암호가 올바르지 않습니다" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "성공" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "잘못된 요청" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "객체가 없습니다" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "누군가가 객체를 수정하여 바꾼 동작이 중복됐습니다" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "객체를 삭제했습니다" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "길 또는 관계는 '없는 하위 구성 요소'를 참조합니다" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "이름" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "공식 이름입니다. 보통 이정표에 나타납니다." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "주소" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "웹사이트" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"올바른 URL이 아닙니다. http:// 또는 https:// 를 포함하고 있는지 확인해주세요." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"공식 웹사이트입니다. http://example.com/index.html 대신 http://example.com과 " +"같은 식의 기본 URL 형식을 활용하십시오." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "전화번호" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"전화번호입니다. + 기호로 시작하는 국제 전화번호 형식을 사용하십시오. 개인 전" +"화번호를 입력할 때 해당 국가의 개인 정보 보호법을 따르십시오." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "위키피디아" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"사용하는 형식에는 “ko:게시글 제목”처럼 언어 코드 및 게시글 제목을 넣어야합니" +"다." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "개장 시간" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "형식 도움말을 보려면 레이블의 링크를 살펴보십시오." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "인구" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "고도" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "미터 단위의 높이(해발고도)입니다." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "휠체어 접근" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "예" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "아니요" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "제한" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "지정됨" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "인터넷 접속" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "무선 네트워크" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "유선" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "터미널" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "서비스" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "종교" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "애니미즘" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "바하이교" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "불교" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "까오다이교" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "크리스트교" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "유교" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "힌두교" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "자이나교" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "유대교" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "이슬람교" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "다신교" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "켈트 파가니즘" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "FSM교" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "사이언톨로지" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "신토(しんとう)" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "시크교" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "심령술" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "도교" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "유니테리안 유니버설리즘" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "부두교" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "야지디교" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "조로아스터교" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "화장실" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "참고" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"요소, 작성자의 작성 의도, 사후 개선을 위한 힌트에 대해 명확하지 않은 정보를 " +"알리려는 용도로 사용하는 정보입니다." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "형식 선택" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "완료" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "이름 없는 장소" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "지리 URL 해석에 실패했습니다" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "좌표" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "위치 정확도" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "위치 정확도: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "전화번호" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "공공 인터넷 접속" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "인터넷 접속 불가" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "공개 와이파이" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "유선 인터넷 접속" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "컴퓨터 사용 가능" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "인터넷 지원 가능" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "화장실 사용 불가" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "화장실 사용 가능" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "휠체어 접근 가능" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "제한적 휠체어 접근성" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "휠체어 접근 불가" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "휠체어 사용자용" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "종교시설:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap에 해당 위치가 없습니다" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URL 좌표가 올바르지 않습니다" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL을 지원하지 않습니다" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s에서 %s까지" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "인쇄할 바둑판 배치 지도 불러오는 중" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "인쇄 시간이 오래걸린다면 취소할 수 있습니다" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "인쇄 취소" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "현재 위치 추가" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "현재 위치 제거" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "역경로" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s을(를) %s에 추가" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI 열기에 실패했습니다" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s 프로그램으로 열기" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "파일 불러오기에 실패했습니다" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "예상 시간: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s에서 제공한 일정" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s에 시작" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "시작" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s 걷기" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s에 도착" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "도" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "도보 안내 표시" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "도보 안내 숨김" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "이른 대안 수단 불러오기" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "다음 대안 수단 불러오기" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "이른 대안 수단이 없습니다." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "다음 대안 수단이 없습니다." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e일" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "이 경로의 시각표 데이터가 없습니다." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "이 경로의 제공자가 없습니다." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s분" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s시간" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s시간" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "하루 종일" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "일출부터 일몰까지" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "매일" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "공휴일" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "방학" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "열지 않음" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s~%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "알 수 없음" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "정확함" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s시간" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s시간 %s분" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s분" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s초" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s 킬로미터" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s 미터" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s 마일" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s 피트" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "이 플러그인은 최근 도착 시간을 지원하지 않습니다" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s에서 계속 진행" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "계속 진행" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s에서 좌회전" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "좌회전" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s에서 살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s에서 크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s에서 우회전" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "우회전" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s에서 살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s에서 크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "로터리에서 %s 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "로터리에서 %s 쪽 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "로터리로 진입" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "엘리베이터 탑승 후 %s에서 내림" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "엘리베이터 탑승" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 쪽으로 왼쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "왼쪽으로 유턴" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 쪽으로 오른쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "오른쪽으로 유턴" + +#~ msgid "Check in here" +#~ msgstr "이곳을 체크인" + +#~ msgid "Show more information" +#~ msgstr "더 많은 정보 표시" + +#~ msgid "Population:" +#~ msgstr "인구수:" + +#~ msgid "Altitude:" +#~ msgstr "고도:" + +#~ msgid "Opening hours:" +#~ msgstr "영업 시간:" + +#~ msgid "Internet access:" +#~ msgstr "인터넷 접속:" + +#~ msgid "Toilets:" +#~ msgstr "화장실:" + +#~ msgid "Wheelchair access:" +#~ msgstr "휠체어 접근:" + +#~ msgid "Phone:" +#~ msgstr "전화번호:" + +#~ msgid "yes" +#~ msgstr "예" + +#~ msgid "limited" +#~ msgstr "제한함" + +#~ msgid "no" +#~ msgstr "아니요" + +#~ msgid "designated" +#~ msgstr "지정됨" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL이 올바르지 않습니다" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "유선" + +#~ msgid "terminal" +#~ msgstr "터미널" + +#~ msgid "service" +#~ msgstr "서비스" + +#~ msgid "Don’t have an account?" +#~ msgstr "계정이 없습니까?" + +#~ msgid "%f h" +#~ msgstr "%f시간" + +#~ msgid "%f min" +#~ msgstr "%f분" + +#~ msgid "%f s" +#~ msgstr "%f초" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner 경로 검색" + +#~ msgid "Add destination" +#~ msgstr "목적지 추가" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "다른 프로그램으로 열기" + +#~ msgid "Press enter to search" +#~ msgstr "검색할 단어를 입력하십시오" + +#~ msgid "Quit" +#~ msgstr "끝내기" + +#~ msgid "Open Shape Layer…" +#~ msgstr "도형 레이어 열기…" + +#~ msgid "OK" +#~ msgstr "확인" + +#~ msgid "Load Map Layer" +#~ msgstr "맵 레이어 불러오기" + +#~ msgid "Open Layer" +#~ msgstr "레이어 열기" + +#~ msgid "%f km" +#~ msgstr "%f킬로미터" + +#~ msgid "%f m" +#~ msgstr "%f미터" + +#~ msgid "%f mi" +#~ msgstr "%f마일" + +#~ msgid "%f ft" +#~ msgstr "%f피트" + +#~ msgid "Country code: %s" +#~ msgstr "국가 기호: %s" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 00000000..7a02ff29 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,2048 @@ +# Lithuanian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Aurimas Černius , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-27 14:17+0200\n" +"Last-Translator: Aurimas Černius \n" +"Language-Team: Lietuvių \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME žemėlapiai" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Rasti vietas aplink pasaulį" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Žemėlapiai leidžia jums lengvai pasiekti pasaulio žemėlapius. Ši programa " +"leidžia greitai rasti ieškomą vietą naudojant paiešką pagal miestą ar gatvę " +"bei rasti vietą susitikimui su draugu." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Žemėlapiai naudoja OpenStreetMap duomenų bazę, kurią sukūrė tūkstančiai " +"žmonių iš viso pasaulio." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Taip pat galite ieškoti specifinių vietų, tokių kaip „Barai šalia Gedimino " +"prospekto, Vilnius“ arba „Viešbučiai šalia Basanavičiaus gatvės, Palanga“." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME projektas" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Žemėlapiai" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Paprasta žemėlapių programa" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Žemėlapiai;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leidžia parodyti žemėlapyje jūsų vietą." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "paskutinė žiūrėta vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Paskutinės žiūrėtos vietos koordinatės." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mastelis" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mastelis" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Žemėlapio tipas" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Rodomas žemėlapio tipas (gatvių, oro, ir t. t.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Lango dydis" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Lango dydis (plotis ir aukštis)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Lango padėtis" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Lango padėtis (X ir Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Langas išdidintas" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Lango išdidinimo būsena" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Didžiausias paieškos rezultatų skaičius" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Didžiausias paieškos rezultatų skaičius iš geocode paieškos." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Įrašomas paskutinių vietų skaičius" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Įrašomas paskutinių aplankytų vietų skaičius." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Paskutinių įrašomų maršrutų skaičius" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Įrašomas paskutinių aplankytų maršrutų skaičius." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Siuntimo į Facebook privatumo nustatymas" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paskutinis naudotas siuntimo į Facebook privatumo nustatymas. Galimos vertės " +"yra EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS arba SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Siuntimo į Foursquare privatumo nustatymas" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paskutinis naudotas siuntimo į Foursquare nustatymas. Galimo vertės yra " +"public, followers arba private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siuntimo į Foursquare pranešimas į Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Facebook paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Twitter paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap naudotojo vardas arba el. pašto adresas" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Nurodo ar naudotojas prisijungė OpenStreetMap duomenų redagavimui." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Paskutinis transporto tipas, naudotas keliui" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nakties veiksena" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Ar programa yra naktinėje veiksenoje." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Naudoti hibridines oro plyteles" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Ar oro plytelės turėtų naudoti hibridinį stilių (su užrašais)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Matomumas" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Pranešti Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Pranešti Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Atsisakyti" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Nusiųsti" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Visiems" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugų draugams" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tik draugams" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tik man" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Viešas" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekėjams" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privatus" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršrutas iš čia" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridėti tarpinę stotelę" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršrutas į čia" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ten?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopijuoti vietą" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridėti prie OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportuoti rodinį" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportuoti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Įtraukti maršrutą ir žymes" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Pasirinkite žemėlapio tipą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Mažinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Didinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Perjungti mėgiamiausius" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Bendra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rodyti trumpinius" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ieškoti" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Išeiti" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Žemėlapio rodinys" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Didinti" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Mažinti" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Perjungti skalę" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Perjungti į gatvės vaizdą" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Perjungti į vaizdą iš oro" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rodyti užrašus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atverti formos sluoksnį…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Savo vietai surasti įjunkite vietos tarnybas" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atsisakyti" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Vietos nustatymai" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakties veiksena" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nusistatyti OpenStreetMap paskyrą" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportuoti kaip paveikslėlį" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klaviatūros trumpiniai" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Apie žemėlapius" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Žemėlapiai atsijungę nuo interneto!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Žemėlapių tvarkingam veikimui reikia aktyvaus interneto ryšio, bet tokio " +"nėra." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Patikrinkite savo prisijungimo ir tarpinio serverio nustatymus." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap paskyra" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prisijunkite, kad redaguotumėte " +"žemėlapius" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Padėkite tobulinti žemėlapį, naudodami\n" +"OpenStreetMap paskyrą." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "El. paštas" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Slaptažodis" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prisiregistruoti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prisijungti" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Atleiskite, tai nesuveikė. Prašome bandyti dar kartą arba apsilankyti\n" +"OpenStreetMap, kad atstatytumėte savo slaptažodį." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Patvirtinimo kodas neatitiko, prašome bandyti dar kartą." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Įveskite aukščiau parodytą patvirtinimo kodą" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Patvirtinti" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prisijungę" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsų OpenStreetMap paskyra yra aktyvi." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Atsijungti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gatvė" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Namo numeris" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pašto kodas" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miestas" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipas" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nėra" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridėti lauką" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentaras" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Žemėlapio pakeitimai bus matomi visuose žemėlapiuose,\n" +"kuriuose naudojami OpenStreetMap duomenys." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Neseniai naudoti" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Kitas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nerasta rezultatų" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Kilo klaida" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Tempkite kelio eilės tvarkai keisti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atverti vietą" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopijuoti" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Siųsti…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Prisiregistruoti…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atverti" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Perjungti matomus" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Maršruto paieška naudojant GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Viešojo transporto maršrutai yra pateikiami trečiųjų šalių tarnybų.\n" +"GNOME negali garantuoti rodomų tvarkaraščių teisingumo.\n" +"Pastebėtinas, kad kai kurie teikėjai gali neteikti visų transporto rūšių,\n" +"pvz. nacionalinis teikėjas gali neteikti oro linijų, o vietiniam gali " +"trūkti\n" +"regioninių traukinių.\n" +"Pavadinimai ir prekės ženklai yra laikomi registruotais prekyženkliais, kai " +"taikoma." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rodyti daugiau rezultatų" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slėpti tarpines stoteles ir informaciją" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rodyti tarpines stoteles ir informaciją" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Išvykti dabar" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Išvykti" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atvykti" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rodyti" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusai" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvajai" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Traukiniai" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Keltai" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lėktuvai" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Dalintis vieta" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pridėti naują maršrutą" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Nurodymai" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Pažymėti kaip mėgiamą" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Pritraukti vietos pridėjimui!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Padidinti" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nepavyko kataloge rasti koklių struktūros" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nepavyko perskaityti XML dokumento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkta reikiamų požymių" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepavyko rasti OSM elemento" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Kelias iki vietinės koklių katalogo struktūros" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Plytelės dydis vietiniam plytelių aplankui" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Rodyti programos versiją" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Nepaisyti tinklo prieinamumo" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FAILAS…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pasirinkite paskyrą" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Įkeliama" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pasirinkite vietą" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Facebook. Pasirinkitę ją iš " +"sąrašo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Foursquare. Pasirinkite ją iš " +"sąrašo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Nusiųsti į %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Parašykite pranešimą nusiuntimui į %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nepavyko rasti „%s“ socialinėje tarnyboje" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nepavyko rasti tinkamos vietos šios vietos nusiuntimui" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Įgaliojimai pasibaigė, atverkite internetines paskyra prisijungimui ir " +"paskyros atnaujinimui" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Čia nieko nerasta!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vieta pridėta prie žemėlapio, pastebėsime, kad gali užtrukti, kol ji taps " +"matoma žemėlapyje bei paieškoje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Žemėlapiai ties %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Failų sistema yra tik skaitymui" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jūs neturite leidimo ten įrašyti" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogo nėra" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenurodytas failo pavadinimas" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nepavyko eksportuoti rodinio" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Dabartinė vieta" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neteisinga koordinatė" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "perskaitymo klaida" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nežinoma geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Nepavyko užklausti maršruto." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Maršrutas nerastas." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Pradėti!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Visi sluoksnių failai" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Nepavyko prisijungti prie vietos tarnybos" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Išvertė:\n" +"Aurimas Černius " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Žemėlapių programa GNOME aplinkai" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorių teisės priklauso © 2011 – 2021 Red Hat, Inc. ir GNOME Žemėlapių " +"autoriams" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Žemėlapio duomenys pagal %s ir talkininkus" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Žemėlapio išklotinę pateikė %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Paiešką teikia %s naudojant %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Nepavyko atverti sluoksnio" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Ar norite tęsti?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Ketinate atverti failus, kurų bendras dydis %s MB. Tai gali užtrukti" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Failo tipas yra nepalaikomas" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Nepavyko atverti GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Pavyko" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bloga užklausa" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objektas nerastas" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktas, kažkas ką tik modifikavo objektą" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektas buvo ištrintas" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Kelias ar santykis nurodo į nesantį kūrinį" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Pavadinimas" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficialus pavadinimas. Jis dažniausiai matomas ženkluose." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresas" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Tinklalapis" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Tai nėra tinkamas URL. Įsitikinkite, kad pateikėte http:// arba https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficialus tinklalapis. Bandykite paprasčiausią URL formą, pvz. http://" +"pavyzdys.lt vietoj http://pavyzdys.lt/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefonas" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefono numeris. Naudokite tarptautinį formatą, prasidedantį + simboliu. " +"Atsižvelkite į vietinius privatumo įstatymus, ypač dės asmeninių telefono " +"numerių." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Naudojamas formatas turi įtraukti kalbos kodą bei straipsnio pavadinimą, " +"pvz. „lt:Straipsnio pavadinimas“." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Darbo laikas" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Informaciją apie formatą gausite paspaudę saitą apačioje." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Gyventojų skaičius" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Aukštis" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Absoliutus aukšti (virš jūros lygio) metrais." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Taip" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Ribota" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Su paskirtimi" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Interneto prieiga" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Laidinis" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminalas" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Tarnyba" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animizmas" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budizmas" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Kaodaizmas" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Krikščionybė" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfucionizmas" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Induizmas" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainizmas" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judėjizmas" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islamas" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Daug religijų" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Pagonybė" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianizmas" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Sientologija" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Šinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sichizmas" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualizmas" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoizmas" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarinis universalizmas" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jazidizmas" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmas" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Tualetai" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Pastaba" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacija, naudojama kitiems žemėlapių naudotojams informuoti apie " +"neakivaizdžią informaciją, susijusią su elementu, autoriaus tikslą jį " +"kuriant arba patarimus tolimesniam patobulinimui." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridėti į OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Pasirinkite tipą" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Atlikta" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Nepavadinta vieta" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Nepavyko perskaityti Geo URI" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Koordinatės" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Tikslumas" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tikslumas: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefono numeris" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Vieša interneto prieiga" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Nėra interneto prieigos" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Viešas Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Laidinė interneto prieiga" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Prieinami kompiuteriai naudojimui" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Yra interneto asistentas" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Nėra tualetų" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Yra tualetai" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Prieiga neįgaliųjų vežimėliais" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Ribota prieiga neįgaliųjų vežimėliais" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Nėra prieigos neįgaliųjų vežimėliais" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Sukurta neįgaliųjų vežimėlių naudotojams" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nerasta OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatės URL yra netinkamos" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL yra nepalaikomas" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Nuo %s iki %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Įkeliami žemėlapio kokliai spausdinimui" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Galite atšaukti spausdinimą, jei tai per ilgai užtrunka" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Atšaukti spausdinimą" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridėti per vietą" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Šalinti per vietą" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Atgalinis maršrutas" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridėti %s į %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Nepavyko atverti URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Atverti su %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nepavyko įkelti failo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Įvertintas laikas: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Teikėjus pateikė %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Pradėkite ties %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pradėkite" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Nueikite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Atvykti ties %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Atvykti" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rodyti ėjimo nurodymus" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slėpti ėjimo nurodymus" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Įkelti ankstesnes alternatyvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Įkelti vėlesnes alternatyvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nerasta ankstesnių alternatyvų." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nerasta vėlesnių alternatyvų." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Šiam maršrutui nerasta tvarkaraščio duomenų." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Šiam maršrutui nerasta teikėjo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutė" +msgstr[1] "%s minutės" +msgstr[2] "%s minučių" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s valanda" +msgstr[1] "%s valandos" +msgstr[2] "%s valandų" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s valanda" +msgstr[1] "%s:%s valandos" +msgstr[2] "%s:%s valandų" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Visą parą" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "Nuo saulėtekio iki saulėlydžio" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +#| msgid "every day" +msgid "Every day" +msgstr "Kasdien" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Nedarbo dienomis" + +#: src/translations.js:174 +#| msgid "school holidays" +msgid "School holidays" +msgstr "Mokslo dienomis" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "uždaryta" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nežinomas" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tikslus" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mylios" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s pėdos" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis įskiepis nepalaiko vėliausio atvykimo laiko" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Tęsti %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Tęsti" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sukti kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sukti kairėn" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sukti kairiau ties %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sukti kairiau" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Staigiai sukti į kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Staigiai sukti į kairėn" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sukti dešiniau ties %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sukti dešiniau" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Staigiai sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Staigiai sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Žiede pasirinkite %s išvažiavimą" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Žiede pasirinkite išvažiavimą į %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Įvažiuokite į žiedą" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Liftu pasikelkite į %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Kilkite liftu" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Apsisukite į %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Apsisukite" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Apsisukite į dešinę į %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Apsisukite į dešinę" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Rasti kelią" + +#~ msgid "Check in here" +#~ msgstr "Patikrinkite čia" + +#~ msgid "Show more information" +#~ msgstr "Rodyti daugiau informacijos" + +#~ msgid "Population:" +#~ msgstr "Gyventojų skaičius:" + +#~ msgid "Altitude:" +#~ msgstr "Aukštis:" + +#~ msgid "Opening hours:" +#~ msgstr "Darbo laikas:" + +#~ msgid "Internet access:" +#~ msgstr "Interneto prieiga:" + +#~ msgid "Toilets:" +#~ msgstr "Tualetai:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Prieiga neįgaliųjų vežimėliais:" + +#~ msgid "Phone:" +#~ msgstr "Telefonas:" + +#~ msgid "yes" +#~ msgstr "taip" + +#~ msgid "limited" +#~ msgstr "ribota" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "su paskirtimi" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL yra netinkamas" + +#~ msgid "wired" +#~ msgstr "laidinis" + +#~ msgid "terminal" +#~ msgstr "terminalas" + +#~ msgid "service" +#~ msgstr "tarnyba" + +#~ msgid "Primary menu" +#~ msgstr "Pirminis meniu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Neturite paskyros?" + +#~ msgid "%f h" +#~ msgstr "%f val" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Maršruto paieška naudojant OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Pridėti paskirties vietą" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atverti su kita programa" + +#~ msgid "Press enter to search" +#~ msgstr "Spauskite enter paieškai" + +#~ msgid "Quit" +#~ msgstr "Išeiti" + +#~ msgid "OK" +#~ msgstr "Gerai" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Atverti formos sluoksnį…" + +#~ msgid "Load Map Layer" +#~ msgstr "Įkelti žemėlapio sluoksnį" + +#~ msgid "Open Layer" +#~ msgstr "Atverti sluoksnį" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pėdos" + +#~ msgid "Position not found" +#~ msgstr "Nerasta padėtis" + +#~ msgid "Country code: %s" +#~ msgstr "Šalies kodas: %s" + +#~ msgid "Population: %s" +#~ msgstr "Gyventojų skaičius: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nepavyko perskaityti GeoJSON failo" + +#~ msgid "_Share" +#~ msgstr "_Viešinti" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 00000000..9feeb122 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,1985 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Rūdolfs Mazurs , 2013, 2014, 2016, 2017, 2018, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-12 22:46+0300\n" +"Last-Translator: Rūdolfs Mazurs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :" +" 2);\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kartes" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Atrodi vietas visā pasaulē" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartes dod iespēju ātri piekļūt kartēm visā pasaulē. Tās ļauj ātri atrast " +"kādu vietu, meklējot pilsētu vai ielu, vai atrast vietu, kur sastapt draugus." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartes izmanto kolektīvi veidoto OpenStreetMap datubāzi, ko veidojuši " +"tūkstošiem cilvēku visā pasaulē." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Varat pat meklēt noteikta veida vietas, piemēram “Krogi pie gaismas ielas”, " +"vai “Autostāvvieta Ādaži”" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME projekts" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Kartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Vienkārša karšu lietotnes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ļauj uz kartes parādīt jūsu atrašanās vietu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "pēdējā skatītā vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Pēdējās apskatītās vietas koordinātas" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mērogs" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mērogs" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartes veids" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Kartes veids, ko attēlot (ielu, aerofoto utt.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Loga izmērs" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Loga izmērs (platums un augstums)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Loga novietojums" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Loga novietojums (X un Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Logs maksimizēts" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Loga maksimizācijas stāvoklis" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimālais meklēšanas rezultātu skaits" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimālais meklēšanas rezultātu skaits no geocode meklējuma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saglabājamo neseno vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saglabājamo nesen apmeklēto vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saglabājamo neseno maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saglabājamo nesen apmeklēto maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook vietas reģistrēšanas privātuma iestatījumi" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pēdējie izmantotie Facebook vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare vietas reģistrēšanas privātuma iestatījumi" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pēdējie izmantotie Foursquare vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: public, followers vai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare vietas reģistrēšanas Facebook apziņošana" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Facebook kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare vietas reģistrēšanas Twitter apziņošana" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Twitter kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap lietotājvārds vai e-pasta adrese" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Norāda, vai lietotājs ir ierakstījies, lai rediģētu OpenStreetMap datus." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Pēdējais izmantotais transportēšanas tips maršrutēšanai" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nakts režīms" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Vai lietotne ir nakts režīmā." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Izmantot hibrīda aerofoto flīzes" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Vai aerofoto flīzēm jāizmanto hibrīda stils (ar apzīmējumiem)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Redzamība" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Veidot Facebook ziņojumu" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Veidot Twitter ziņojumu" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "At_celt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Reģistrēt vietu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ikviens" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugu draugi" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tikai draugi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tikai es" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publisks" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekotāji" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privāts" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršruts no šejienes" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Pievienot starp-galamērķi" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršruts uz šejieni" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ir šeit?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopēt atrašanās vietu" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportēt skatu" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportēt" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Iekļaut maršrutu un marķierus" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Izvēlieties kartes veidu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Tālināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Tuvināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Pārslēgt izlasi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Vispārīgi" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rādīt saīsnes" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Meklēt" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Iziet" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartes skats" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Tuvināt" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Tālināt" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Pārslēgt mērogu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Pārslēgties uz ielas skatu" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Pārslēgties uz aerofoto skatu" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atvērt formu slāni" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rādīt apzīmējumus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atvērt formu slāni…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Ieslēgt vietas noteikšanas pakalpojumu, lai atrastu savu atrašanās vietu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atcelt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Atrašanās vietas iestatījumi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakts režīms" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Izveidot OpenStreetMap kontu" + +#: data/ui/main-window.ui:16 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Eksportēt kā attēlu" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatūras īsinājumtaustiņi" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "P_ar kartēm" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartes ir nesaistē!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Lai varētu strādāt, Kartēm vajag aktīvu savienojumu ar internetu, bet tādu " +"nevar atrast." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Pārbaudiet savu savienojumu un starpnieka iestatījumus." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pievienot jaunu maršrutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Koplietot vietu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Pievienot izlasei" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Reģistrēt šo vietu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap konts" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ierakstieties, lai rediģētu kartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Palīdziet uzlabot karti, izmantojot\n" +"OpenStreetMap kontu." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pasts" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parole" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Ierakstīties" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Ierakstīties" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz vai apmeklējiet\n" +"OpenStreetMap, lai pārstatītu savu paroli." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifikācijas kodi nesakrīt. Lūdzu, mēģiniet vēlreiz." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Ievadiet verifikācijas kodu, kas redzams augšā" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificēt" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ierakstījies" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsu OpenStreetMap konts ir aktīvs." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Izrakstīties" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Iela" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Mājas numurs" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pasta indekss" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Pilsēta" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tips" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nav" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pievienot lauku" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentārs" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmaiņas kartē būs redzmas visās kartēs, kas izmanto\n" +"OpenStreetMap datus." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nesen lietotie" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Nākamais" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Rādīt vairāk informācijas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nav atrastu rezultātu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Velciet, lai mainītu maršruta secību" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atvērt vietu" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopēt" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sūtīt uz…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Atvērt formu slāni" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atvērt" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Pārslēgt redzamību" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper maršruta meklēšana" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Sabiedriskā transporta maršrutus nodrošina trešo pušu pakalpojumus.\n" +"GNOME nevar garantēt attēloto maršrutu un sarakstu pareizību.\n" +"Ņemiet vērā, ka daži pakalpojumu sniedzēji neiekļauj visus pieejamos" +" transporta veidus, piemēram, nacionālais pakalpojumu sniedzējs neiekļauj" +" avio satiksmi un lokālais pakalpojumu sniedzējs varētu neiekļaut reģionālos" +" vilcienus.\n" +"Attēlotie nosaukumi un zīmoli tiek uzskatīti par preču zīmēm, ja attiecināms." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rādīt vairāk rezultātu" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slēpt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rādīt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Doties tagad" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Doties līdz" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atbraukt līdz" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rādīt" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vilcieni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Prāmji" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lidmašīnas" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Pašreizējā atrašanās vieta" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Tuviniet, lai pievienotu atrašanās vietu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Tuvināt" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Direktorijā nevarēja atrast flīžu struktūru" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neizdevās parsēt XML dokumentu" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkst nepieciešamo atribūtu" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nevarēja atrast OSM elementu" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Ceļš uz lokālo flīžu direktorijas struktūru" + +#: src/application.js:101 +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Flīzes izmērs lokālo flīžu direktorijai" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Rādīt programmas versiju" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignorēt tīkla pieejamību" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[DATNE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izvēlēties kontu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ielādē" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izvēlieties vietu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Facebook. Lūdzu, izvēlieties " +"vienu no saraksta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Foursquare. Lūdzu, izvēlieties " +"vienu no saraksta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Reģistrēties %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ja vēlaties, reģistrējoties %s, ierakstiet ziņojumu." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Gadījās kļūda" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nevar atrast “%s” sociālajā pakalpojumā" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nevar atrast piemērotu vietu, kur ierakstīties šajā apkārtnē" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Pilnvaras termiņš ir beidzies, atveriet tiešsaistes kontus, lai ierakstītos " +"un ieslēgtu šo kontu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Šeit nekas nav atrasts!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Atrašanās vieta tika pievienota kartei. Ņemiet vērā, ka varētu paiet kāds " +"laiks, pirms izmaiņas parādās kartē un meklēšanas rezultātos." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartes pie %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datņu sistēma ir tikai lasāma" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jums nav tiesību tur saglabāt" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorija nepastāv" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nav norādīts datnes nosaukums" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nevar eksportēt skatu" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nederīga koordināta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parsēšanas kļūda" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nezināma ģeometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Maršruta pieprasījums neizdevās." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nav atrastu maršrutu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Sākt!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Visu slāņu datnes" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Neizdevās savienoties ar pozīcijas noteikšanas pakalpojumu" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "Rūdolfs Mazurs " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "GNOME karšu lietotne" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autortiesības © 2011 – 2019 Red Hat, Inc. un GNOME “Kartes” autori" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartes datus nodrošina %s un atbalstītāji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karšu fragmentus nodrošina %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Meklēšanu nodrošina %s izmanto %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Datnes tips nav atbalstīts" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Neizdevās atvērt slāni" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Neizdevās atvērt GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Veiksmīgi" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nederīgs pieprasījums" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekts nav atrasts" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikts, kāds cits tikko modificēja objektu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekts tika izdzēsts" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ceļš vai relācija norāda uz neeksistējošu bērnu" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Nosaukums" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiālais nosaukums. Tas parasti ir redzams uz zīmēm." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Adrese" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Tīmekļa vietne" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiālā tīmekļa vietne. Mēģiniet izmantot pamata URL, tas ir, http://" +"example.com, nevis http://example.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Tālrunis" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Tālruņa numurs. Izmantojiet starptautisko formātu, sākot ar + zīmi. Ņemiet " +"vērā lokālos privātuma likumus, sevišķi privātiem tālruņu numuriem." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formātam vajadzētu iekļaut valodas kodu un raksta virsrakstu, piemēram “lv:" +"Raksta virsraksts”" + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Darba laiks" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Skatiet saiti apzīmējumā, lai saņemtu palīdzību par formātu." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Iedzīvotāju skaits" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Augstums" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Punkta augstums (virs jūras līmeņa) metros." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Piekļuve ar ratiņkrēsliem" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Jā" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Nē" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Ierobežots" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Nozīmēts" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Pieeja internetam" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Vadu" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminālis" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Serviss" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Reliģija" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animisms" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahāisms" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisms" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaisms" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Kristietība" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfūcisms" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisms" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Džainisms" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Jūdaisms" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islāms" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Vairākas reliģijas" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Pagānisms" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisms" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Scientoloģija" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoisms" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisms" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spirituālisms" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Daoisms" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitārais universālisms" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Jadīdisms" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisms" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Tualetes" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Piezīme" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informācija, ko izmantot citiem kartētajiem par ne acīmredzamu informāciju " +"par elementu, autora nodomu to veidojot vai norādēm turpmākai uzlabošanai." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Izvēlēties tipu" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Pabeigts" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nenosaukta vieta" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Iedzīvotāju skaits:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Augstums:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Darba laiks:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Pieeja internetam:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Reliģija:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Tualetes:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Piekļuve ar ratiņkrēsliem:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Tālrunis:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Neizdevās parsēt Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jā" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ierobežots" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nē" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "nozīmēts" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nav atrasta OpenStreetMap kartē" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nav derīga" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL koordinātas nav derīgas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nav atbalstīts" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "No %s līdz %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ielādē kartes flīzes drukāšanai" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Jūs varat pārtraukt drukāšanu, ja tas aizņem pārāk daudz laika" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Par drukāšanu" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pievienot “caur vietu”" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Izņemt “caur vietu”" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Apgriezt maršrutu pretēji" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pievienot %s pie %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Neizdevās atvērt URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Atvērt ar %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neizdevās ielādēt datni" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Novērtētais laiks — %s" + +#: src/sidebar.js:414 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Maršrutu nodrošina %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Sākt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Sākums" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Iet %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Pienāk %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Pienāk" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rādīt iešanas norādes" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slēpt iešanas norādes" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ielādēt agrākas alternatīvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ielādēt vēlākas alternatīvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nav atrastu vecāku alternatīvu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nav atrastu jaunāku alternatīvu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Šim maršrutam nav atrastu transporta sarakstu." + +#: src/transitPlan.js:205 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Šim maršrutam nav atrastu nodrošinātāju." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minūte" +msgstr[1] "%s minūtes" +msgstr[2] "%s minūšu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +#| msgid "%d hour" +#| msgid_plural "%d hours" +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s stunda" +msgstr[1] "%s stundas" +msgstr[2] "%s stundu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s stunda" +msgstr[1] "%s:%s stundas" +msgstr[2] "%s:%s stundu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "diennakti" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "no saullēkta līdz saulrietam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "katru dienu" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "brīvdienas" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skolas brīvdienas" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nav atvērts" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "vadu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminālis" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviss" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precizitāte — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nezināms" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Precīzi" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s jūdzes" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s pēdas" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis spraudnis neatbalsta vēlāko ierašanos" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Turpināt uz %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Turpināt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Pagriezt nedaudz pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Pagriezt nedaudz pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Strauji pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Strauji pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Pagriezt pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Pagriezt pa labi" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Pagriezt nedaudz pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Pagriezt nedaudz pa labi" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Asi pagriezti pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Asi pagriezti pa labi" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "No apļa izbrauciet izejā %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "No apļa izbrauciet caur izeju uz %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Iebrauciet aplī" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ņemiet liftu un izbrauciet %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Ņemiet liftu" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nav sava konta?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner maršruta meklēšana" + +#~ msgid "Add destination" +#~ msgstr "Pievienot galamērķi" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atvērt ar citu lietotni" + +#~ msgid "Press enter to search" +#~ msgstr "Spiediet “Enter”, lai meklētu" + +#~ msgid "Quit" +#~ msgstr "Iziet" + +#~ msgid "OK" +#~ msgstr "Labi" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Atvērt formu slāni…" + +#~ msgid "Load Map Layer" +#~ msgstr "Ielādēt kartes slāni" + +#~ msgid "Open Layer" +#~ msgstr "Atvērt slāni" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f jūdzes" + +#~ msgid "%f ft" +#~ msgstr "%f pēdas" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..63ad5f4e --- /dev/null +++ b/po/meson.build @@ -0,0 +1,2 @@ +i18n.gettext(name, preset: 'glib', + args: [ '--keyword=X-Geoclue-Reason' ]) diff --git a/po/mjw.po b/po/mjw.po new file mode 100644 index 00000000..eb6e5569 --- /dev/null +++ b/po/mjw.po @@ -0,0 +1,1653 @@ +# Karbi translation for gnome-maps. +# Copyright (C) 2019 gnome-maps's Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Jor Teron , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-03 19:54+0000\n" +"PO-Revision-Date: 2019-08-04 23:24+0530\n" +"Last-Translator: Jor Teron \n" +"Language-Team: Karbi \n" +"Language: mjw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2 ; plural=( n != 1 );\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "pathe-bi" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X pen Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username mate e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook long Post" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter long Post" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kadokawe" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Jirpo a jirpo" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Jirpo chot" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Ne anchot" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Monit an" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ladak kopi lo do?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Kiri" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Pathe" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pabi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Account selam" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Maps Aputhak" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Pabi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Pathe" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Maps ke offline!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Sign In" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Nangli OpenStreetMap account dambom lo." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ale" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hem phai" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PIN Code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Rongsopi" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dunthu" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kelo dim…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Non kedam lo" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Kedam apor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Kele apor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Paklang" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Hemkonglong" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Telong" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Pathe" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Account chongvai" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Dim chongvai" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Dak ajat ta longle!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "" + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "" + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "" +"Jor Teron \n" +"Biju Rongpi " + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Chunlo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Men" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Kangpu apor" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Armu" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Dhorom" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Barso-barpi-hem" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Amen tokte adim" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Armu:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Kangpu apor:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet do:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Dhorom:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Barso-barpi-hem:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "" + +#: src/placeEntry.js:194 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "%s pen ingpu" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s pen pangcheng" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pangcheng" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Keng-kedam %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kele dim %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Nangkele" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "Porphai %d" +msgstr[1] "Porphai %d" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "Porphai %d:%02d" +msgstr[1] "Porphai %d:%02d" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "arni ketet pen arni chelut an" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "arnivang" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "rat kangkir" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "locharli-hem kangkir" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ingpu pe" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Puthekthe" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 00000000..8dc9906b --- /dev/null +++ b/po/ml.po @@ -0,0 +1,1600 @@ +# Malayalam translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# syamlalpullamballi , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-10-25 19:38+0000\n" +"PO-Revision-Date: 2018-10-26 22:15+0800\n" +"Last-Translator: Anish Sheela \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ഗ്നോം ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ലോകമെമ്പാടുമുള്ള സ്ഥലങ്ങൾ കണ്ടെത്തുക" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to quickly find the place " +"you’re looking for by searching for a city or street, or locate a place to meet a friend." +msgstr "" +"ഭൂപടങ്ങള്‍ താങ്കള്‍ക്കു ലോകത്തിലെ എല്ലായിടത്തെയും ഭൂപടങ്ങളിലേക്കു പ്രവേശനം നല്‍കുന്നു. ഇത് താങ്കള്‍ അന്വേഷിക്കുന്ന സ്ഥലം നഗരമോ " +"തെരുവൊ തിരയുന്നതിലൂടെ പെട്ടന്നു തന്നെ കണ്ടുപിടിക്കാന്‍ അല്ലെങ്കില്‍ സുഹൃത്തിനെ കാണുവാന്‍ ഒരു സ്ഥലം കണ്ടുപിടിക്കാന്‍ സഹായിക്കുന്നു." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands of people across " +"the globe." +msgstr "" +"ഭൂപടങ്ങള്‍ സഹകരണപരമായ OpenStreetMap ന്റെ ശേഖരിച്ചു് വചിട്ടുള്ള വിവരങ്ങളും വസ്തുതകളും ഉപയോഗിക്കുന്നുണ്ട്, ലോകത്തിലെ " +"എല്ലായിടത്തിലേയും നൂറുകണക്കിനു ആളുകള്‍ ചേര്‍ന്നുണ്ടക്കിയതാണത്." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main Street, Boston” or " +"“Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 src/mainWindow.js:503 +msgid "Maps" +msgstr "ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ലളിതമായ ഒരു ഭൂപട പ്രയോഗം" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "നിങ്ങളുടെ ലൊക്കേഷനെ മാപ്പിൽ കാണിക്കുന്നതിന് അനുവദിക്കുന്നു" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "അവസാനം കണ്ട സ്ഥലം" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "അവസാനം കണ്ട സ്ഥലത്തിന്റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം (വീതിയും ഉയരവും)" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം (X ഉം Y ഉം)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "വലുതാക്കിയ ജാലകം" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "ജാലകം വലുതാക്കുന്ന അവസ്ഥ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "തിരച്ചില്‍ ഫലങ്ങളുടെ പരമാവധി എണ്ണം" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "geocode ഇല്‍ നിന്നും പരിശോധന ഫലത്തിന്റെ പരമാവധി എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS or SELF." +msgstr "" +"ഏറ്റവും പുതിയ ഉപയോഗത്തിലുള്ള Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം. സാധ്യമായ മൂല്യങ്ങൾ: എല്ലാവരേയും, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS അല്ലെങ്കിൽ SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "ഫോർസ്ക്വെയർ ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം." + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private." +msgstr "" +"ഏറ്റവുമധികം ഉപയോഗിച്ചത് Foursquare ചെക്ക്-ഇൻ സ്വകാര്യതാ ക്രമീകരണം. സാധ്യമായ വിലകൾ: പൊതുജനം, പിന്തുടരുന്നവർ " +"അല്ലെങ്കിൽ സ്വകാര്യം." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated " +"with the Foursquare account." +msgstr "" +"ഫോർസ്ക്വെയർ അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഫേസ്സ്കാർ ഫേസ്ബുക്കിൽ അക്കൗണ്ട് പോസ്റ്റുചെയ്ത് ഒരു ഫോൾഡർ ആയി പ്രക്ഷേപണം ചെയ്യേണ്ടതുണ്ടോ " +"എന്ന് സൂചിപ്പിക്കുന്നു." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated " +"with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ദൃശ്യപരത" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ഫേസ്ബുക്കിൽ പോസ്റ്റുചെയ്യുക" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 data/ui/send-to-dialog.ui:21 +#: data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "റദ്ദാക്കുക" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "എല്ലാവർക്കും" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "കൂട്ടുകാരുടെ കൂട്ടുകാര്" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "സുഹൃത്തുക്കൾ മാത്രം" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ഞാൻ മാത്രം" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "പൊതുവായത്" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "അനുയായികൾ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "സ്വകാര്യം" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "എന്താണ് ഇവിടെ ഉള്ളത്?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "സ്ഥാനം പകർത്തുക" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +#, fuzzy +#| msgid "Quit" +msgctxt "shortcut window" +msgid "Quit" +msgstr "അവസാനിപ്പിക്കുക" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ലൊക്കേഷൻ ക്രമീകരണങ്ങൾ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാക്കുക" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "കീബോർഡ് കുറുക്കുവഴികൾ" + +#: data/ui/main-window.ui:18 +#, fuzzy +#| msgid "About" +msgid "About Maps" +msgstr "കുറിപ്പ്" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "നിലവിലെ ലൊക്കേഷനിൽ പോകുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "മാപ്പ് തരം തിരഞ്ഞെടുക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "ചെറുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "വലുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "" + +#: data/ui/main-window.ui:256 +msgid "Maps need an active internet connection to function properly, but one can’t be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ഇമെയിൽ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "രഹസ്യവാക്ക് " + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "പ്രവേശിക്കുക" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "ഒരു അക്കൗണ്ട് ഇല്ലേ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your " +"password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് പൊരുത്തപ്പെടുന്നില്ല, വീണ്ടും ശ്രമിക്കുക." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "മുകളിൽ കാണിച്ചിരിക്കുന്ന പരിശോധനാ കോഡ് നൽകുക" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "പരിശോധിക്കുക" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാണ്." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "പുറത്തിറങ്ങുക" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "തെരുവ്" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "വീട്ട് നമ്പര്‍" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "തപാൽ കോഡ്" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "നഗരം" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "തരം" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ഒന്നുമില്ല" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ഫീള്‍ഡ് ചേര്‍ക്കുക" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "അഭിപ്രായം" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "സമീപകാലത്ത് ഉപയോഗിച്ചവ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "അടുത്തത്" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ല്‍ തിരുത്തുക" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "തെരയാന്‍ എന്റെര്‍ അമര്‍ത്തു" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "ഒരു ഫലവും കണ്ടെത്താനായില്ല" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "വഴിയുടെ ക്രമം മാറ്റാന്‍ നീക്കുക" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "സ്ഥലം തുറക്കുക" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "തുറക്കുക (_O)" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ഇപ്പോൾ വിടുക" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "പുറപ്പെടേണ്ടത്" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "കാണിക്കുക" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ബസ്സുകൾ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ട്രാമുകള്‍" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ട്രെയിനുകൾ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "സബ്‍വേ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ഫെറികള്‍" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ഇപ്പോഴത്തെ സ്ഥാനം" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "കൃത്യത: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "സ്ഥാനം ചേര്‍ക്കാന്‍ വലുതാക്കുക" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "വലുതാക്കുക" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "പ്രോഗ്രാമിന്റെ പതിപ്പു് കാണിക്കുക" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ലോഡ് ചെയ്യുന്നു" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:201 +msgid "Maps cannot find the place to check in to with Facebook. Please select one from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "Maps cannot find the place to check in to with Foursquare. Please select one from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യുക" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യാനുള്ള സന്ദേശം എഴുതുക (താല്‍പര്യമുണ്ടെങ്കില്‍)" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ഒരു പിശക് സംഭവിച്ചു" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "Credentials have expired, please open Online Accounts to sign in and enable this account" +msgstr "" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "ഇവിടെ നിന്ന് പാത" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "ലക്ഷ്യസ്ഥാനം ചേർക്കുക" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "ഇങ്ങോട്ട് റൂട്ട് ചെയ്യുക" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "ഇവിടെ ഒന്നും കണ്ടെത്തിയില്ല" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows on the map and in " +"search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ഡയറക്ടറി നിലവിലില്ല" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ഫയൽ പേരൊന്നും തന്നില്ല" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "റൂട്ട് അഭ്യർത്ഥന പരാജയപ്പെട്ടു." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "ഒരു വഴിയും കണ്ടെത്തിയില്ല." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "ആരംഭിക്കുക!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:436 +msgid "Failed to connect to location service" +msgstr "ലൊക്കേഷൻ സേവനവുമായി ബന്ധിപ്പിക്കുന്നത് പരാജയപ്പെട്ടു" + +#: src/mainWindow.js:501 +msgid "translator-credits" +msgstr "" +"Syamlal Pullamballi \n" +"Anish Sheela \n" +"Suneesh T R " + +#: src/mainWindow.js:504 +msgid "A map application for GNOME" +msgstr "ഗ്നോമിനു വേണ്ടിയുള്ള ഒരു ഭൂപട പ്രയോഗം" + +#: src/mainWindow.js:515 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" + +#: src/mainWindow.js:534 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:550 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "ഫയൽ തരം പിന്തുണയ്ക്കുന്നില്ല" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "ലെയർ തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "തെറ്റായ ഉപയോക്തൃ നാമം അല്ലെങ്കിൽ പാസ്വേഡ്" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "കിട്ടി" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "മോശം അഭ്യർത്ഥന" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "പേര്" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "വിലാസം" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "വെബ്സൈറ്റ്" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example.com instead of " +"http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ഫോൺ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of local privacy laws, " +"especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "വിക്കിപീഡിയ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "തുറക്കുന്ന സമയം" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ജനസംഖ്യ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ഉയരം" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "അതെ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ഇല്ല" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "നിയുക്തനായി" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "വൈ-ഫൈ " + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "വയര്‍" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ടെര്‍മിനല്‍" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "സേവനം" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "മതം" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "അനീമിസം" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ബഹാ ഇ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ബുദ്ധമതം" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "കാവോഡായിസം" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ക്രിസ്തുമതം" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ഹിന്ദുമതം" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ജൈനമതം" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ഇസ്ലാം" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "പല മതങ്ങള്‍" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "പാസ്തഫാരിയന്‍ മതം" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "സൈന്റോളജി" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ഷിന്റോ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "സിഖ് മതം" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "താവോയിസം" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "വൂഡു" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "കക്കുസ്" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "കുറിപ്പ്" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an element, the " +"author’s intent when creating it, or hints for further improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ല്‍ ചേര്‍ക്കുക" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "തരം തെരഞ്ഞെടുക്കുക" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ചെയ്തു" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ജനസംഖ്യ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ഉയരം:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "തുറക്കുന്ന സമയം:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "മതം:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "കക്കുസ്:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ഫോൺ:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "അതെ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ഇല്ല" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "പ്രത്യേക" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "%s-ല്‍ നിന്നും %s-ലേക്ക്" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "റൂട്ട് മറിക്കുക" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "പുറപ്പെടുക" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "നടക്കാനുള്ള വഴി കാണിക്കുക" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "നടക്കാനുള്ള വഴി മറയ്ക്കുക" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "%s നടക്കുക" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" +msgstr[1] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "സൂര്യോദയം മുതൽ സൂര്യാസ്തമനം വരെ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "" + +#: src/translations.js:185 +msgid "every day" +msgstr "എല്ലാ ദിവസവും" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "പൊതു അവധികൾ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "സ്കൂള്‍ അവധിക്കാലം" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "" + +#: src/translations.js:264 +msgid "not open" +msgstr "തുറന്നിട്ടില്ല" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "വയര്‍" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ടെര്‍മിനല്‍" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "സേവനം" + +#. Translators: Accuracy of user location information +#: src/utils.js:226 +msgid "Unknown" +msgstr "അപരിചിതം" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Exact" +msgstr "അനുയോജ്യമായ" + +#: src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "" + +#: src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "" + +#: src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "" + +#. Translators: This is a distance measured in meters +#: src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "" + +#. Translators: This is a distance measured in miles +#: src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "" + +#. Translators: This is a distance measured in feet +#: src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "" + +#~ msgid "Last known location and accuracy" +#~ msgstr "അവസാനത്തെ സ്ഥാനവും കൃത്യതയും" + +#~ msgid "Last known location (latitude and longitude in degrees) and accuracy (in meters)." +#~ msgstr "അവസാന അറിയുന്ന സ്ഥലവും (അക്ഷാംശവും രേഖാംശവും ഡിഗ്രിയില്‍) കൃത്യതയും (മീറ്ററില്‍)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ഉപയോക്താവിന്‍റെ അവസാന സ്ഥാനത്തിന്റെ വിവരണം." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ഉപയോക്താവിന്റെ സ്ഥാനം ഉപയോക്താവ് നേരിട്ട് ചെയ്തതാണോ എന്ന്." + +#~ msgid "I’m here!" +#~ msgstr "എന്റെ സ്ഥാനം" + +#~ msgid "Satellite" +#~ msgstr "ഉപഗ്രഹം" + +#~ msgid " km²" +#~ msgstr "കിമീ²" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 00000000..f59530e7 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,1838 @@ +# Malay translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# abuyop , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-27 07:57+0000\n" +"PO-Revision-Date: 2020-01-27 17:51+0800\n" +"Language-Team: Pasukan Terjemahan GNOME Malaysia\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Last-Translator: abuyop \n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Peta GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cari tempat-tempat di sekitar dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memudahkan capaian pada peta di serata dunia. Ia membolehkan anda cari " +"tempat yang dikehendaki dengan pantas iaitu menggelintar sebuah bandar atau " +"jalan, atau ketahui lokasi untuk bertemu dengan rakan." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta menggunakan pangkalan data OpenStreetMap yang terhasil secara " +"kolaboratif oleh beratus-ratus individu di serata dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda boleh menggelintar jenis-jenis lokasi secara khusus, seperti \"Pubs " +"near Main Street, Boston” atau “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Sebuah aplikasi peta yang ringkas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Membolehkan lokasi anda ditunjukkan di dalam peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi dilihat terakhir" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat lokasi dilihat kali terakhir." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zum" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Aras zum" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta yang dipaparkan (jalan, aerial, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Saiz tetingkap" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Saiz tetingkap (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Kedudukan tetingkap" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Kedudukan tetingkap (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilangan maksimum keputusan gelintar" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilangan maksimum keputusan gelintar melalui geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Bilang tempat baru-baru ini disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Bilangan tempat baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Bilangan laluan baru-baru ini untuk disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Bilangan laluan baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Facebook terakhir digunakan. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Foursquare terakhir digunakan. Nilai yang " +"mungkin adalah: public, followers atau private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siaran Facebook daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Facebook yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Siaran Twitter daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Twitter yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat e-mel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menunjukkan jika pengguna telah berdaftar masuk untuk menyunting data " +"OpenstreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis pengangkutan terakhir digunakan untuk perjalanan" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ketampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Hantaran pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Hantaran pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Daftar masuk" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Sesiapa Sahaja" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Rakan rakan" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Rakan sahaja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Saya sahaja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Awam" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Persendirian" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Apa ada di sini?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pandangan eksport" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksport" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan laluan dan penanda" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Am" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tunjuk Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Gelintar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak laluan" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pandangan Peta" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zum masuk" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zum keluar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Togol skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke pandangan jalan" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke pandangan aerial" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka lapisan bentuk" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Buka Lapisan Bentuk…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Hidupkan perkhidmatan lokasi untuk mencari lokasi anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Tetapan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Pasang Akaun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksport sebagai Imej" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Pintasan Papan _Kekunci" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Perihal Peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zum keluar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zum masuk" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Togol kegemaran" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Cetak Laluan" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Peta di luar talian!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlukan satu sambungan internet aktif supaya dapat berfungsi dengan " +"baik, tetapi tidak ditemui." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Periksa sambungan dan tetapan proksi anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke laluan baharu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kongsi lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tanda sebagai kegemaran" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Daftar-masuk di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akaun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Daftar masuk untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantu menambah baik peta, menggunakan\n" +"akaun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata laluan" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Daftar Masuk" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Belum ada akaun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, tidak berjaya. Cuba sekali lagi, atau lawati\n" +"OpenStreetMap untuk menetap semula kata laluan anda." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kod pengesahan tidak sepadan, cuba sekali lagi." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Masukkan kod pengesahan yang ditunjukkan di bawah" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sahkan" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Berdaftar Masuk" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Akaun OpenStreetMap anda masih aktif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Daftar Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nombor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poskod" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Bandar" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Tiada" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Medan" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Ulasan" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan kelihatan pada semua peta yang\n" +"menggunakan data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Digunakan Baru-Baru Ini" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Berikutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tunjuk lagi maklumat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tiad keputusan ditemui" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah tertib laluan" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Hantar Kepada…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Buka Lapisan Bentuk" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Togol tampak" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Gelintar laluan oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerari laluan untuk pengangkutan awam disediakan oleh\n" +"perkhidmatan pihak-ketiga.\n" +"GNOME tidak memberi apa-apa jaminan ketepatan itinerari dan jadual yang " +"ditunjukkan.\n" +"Perhatian, sesetengah penyedia tidak menyertakan semua mod pengangkutan yang " +"ada,\n" +"iaitu penyedia kebangsaan mungkin tidak melibatkan kapal terbang, dan " +"penyedia tempatan\n" +"mungkin tidak melibatkan keretapi wilayah.\n" +"Nama dan jenama yang ditunjukkan dianggap sebagai tanda dagangan berdaftar " +"bila perlu." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tunjuk lagi keputusan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyi hentian dan maklumat pertengahan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tunjuk hentian dan maklumat pertengahan" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tunjuk" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bas" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Keretapi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Kapal Terbang" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi semasa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zum masuk untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom Masuk" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal mencari struktur jubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal menghurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut diperlukan hilang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tidak dapat mencari unsur OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Satu laluan ke struktur direktori jubin setempat" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Tunjuk versi program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Abai ketersediaan rangkaian" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih satu akaun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuatkan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih satu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Facebook. Sila " +"pilih salah satu menerusi senarai ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Foursquare. " +"Sila pilih salah satu menerusi senarai ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Daftar masuk pada %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis satu mesej pilihan untuk mendaftar masuk pada %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Satu ralat telah berlaku" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tidak dapat mencari \"%s\" dalam perkhidmatan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tidak dapat mencari satu tempat yang sesuai untuk mendaftar masuk dalam " +"lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kelayakan telah luput, sila buka Akaun Dalam Talian untuk mendaftar masuk " +"dan membenarkan akaun ini" + +#: src/contextMenu.js:94 +msgid "Route from here" +msgstr "Laluan dari sini" + +#: src/contextMenu.js:96 +msgid "Add destination" +msgstr "Tambah destinasi" + +#: src/contextMenu.js:98 +msgid "Route to here" +msgstr "Laluan ke sini" + +#: src/contextMenu.js:124 +msgid "Nothing found here!" +msgstr "Tiada apa-apa ditemui di sini!" + +#: src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi telah ditambah ke dalam peta, perhatian ia mungkin mengambil masa " +"sebelum dapat ditunjukkan pada peta dan dalam keputusan gelintar." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta pada %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem fail adalah baca sahaja" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tidak mempunyai keizinan menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak wujud" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiada nama fail dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tidak boleh mengeksport pandangan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tidak sah" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ralat hurai" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tidak diketahui" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Permintaan laluan gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Tiada laluan ditemui." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Mula!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Semua Fail Lapisan" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung dengan perkhidmatan lokasi" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"abuyop\n" +"CL TAN https://launchpad.net/~tcl111985\n" +"Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris\n" +"Launchpad Translations Administrators https://launchpad.net/~rosetta\n" +"ahmad akmal bin mohd idris https://launchpad.net/~mamahopsk87\n" +"dequan https://launchpad.net/~dequan" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Sebuah aplikasi peta untuk GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak cipta © 2011 – 2019 Red Hat, Inc. dan para pengarang Peta GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan para penyumbang" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Gelintar disediakan oleh %s menggunakan %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Jenis fail tidak disokong" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Gagal membuka lapisan" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau kata laluan salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berjaya" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan tidak elok" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tidak ditemui" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, ada orang lain baru sahaja mengubah suai objek" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dipadamkan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama rasmi. Ia biasanya muncul ketika daftar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tapak Sesawang" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Tapak sesawang rasmi. Cuba guna bentuk URL paling asas iaitu http://example." +"com selain dari http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nombor telefon. Guna format antarabangsa, bermula dengan tanda +. Hati-hati " +"dengan undang-undang kerahsiaan setempat, terutamanya nombor telefon " +"persendirian." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang digunakan patut sertakan kod bahasa dan tajuk artikel seperti " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat pautan dalam label untuk bantuan berkenaan format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Ketinggian (tinggi di atas aras laut) sesuatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Capaian kerusi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terhad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Dikhususkan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Capaian internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Berwayar" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Perkhidmatan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budha" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Taodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristian" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindu" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Agama Berbilang" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tandas" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Maklumat yang digunakan untuk maklumkan pemeta lain berkenaan maklumat tidak " +"jelas berkenaan sesebuah unsur, niat pengarang ketika menciptanya, atau " +"pembayang untuk penambahbaikan lanjutan." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Capaian internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tandas:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Capaian kerusi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Gagal menghurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terhad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "dikhususkan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemui dalam OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tidak sah" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tidak sah" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tidak disokong" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s hingga %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuatkan jubin-jubin peta untuk percetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" +"Anda boleh menghenti paksi percetakan jika ia mengambil masa terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Henti paksa percetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah melalui lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Buang melalui lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Songsangkan laluan" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambah %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuatkan fail" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Masa anggaran: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mula pada %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mula" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba pada %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tunjuk arahan berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyi arahan berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Muat alternatif lebih awal" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Muat alternatif terkemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tiada alternatif lebih awal ditemui." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tiada alternatif terkemudian ditemui." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tiada data jadual waktu ditemui untuk laluan ini." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tiada penyedia ditemui untuk laluan ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minit" +msgstr[1] "%d minit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d jam" +msgstr[1] "%d jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d jam" +msgstr[1] "%d:%02d jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dalam tempoh" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit hingga matahari terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "cuti umum" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "cuti sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "berwayar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "perkhidmatan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ketepatan: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tidak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tepat" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f j" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Teruskan pada %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Teruskan" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Belok sedikit kiri" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok tajam kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Belok tajam kiri" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Belok sedikit kanan" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok tajam kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Belok tajam kanan" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dalam bulatan, ambil susur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dalam bulatan, ambil susur keluar ke %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Masuk bulatan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Masuk lif dan keluar pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Masuk lif" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Buat satu pusingan-u ke %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Buat satu pusingan-u" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Buat satu pusingan-u kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Buat satu pusingan-u kanan" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 00000000..4d22a2b0 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1885 @@ +# Norwegian bokmål translation of gnome-maps. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kjartan Maraas , 2013-2021. +# Åka Sikrom , 2014. +# haarek , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.40.x\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-13 18:58+0100\n" +"Last-Translator: Kjartan Maraas \n" +"Language-Team: Norwegian bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kart" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Se på steder over hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kart gir deg rask tilgang til kart for hele verden. Det lar deg raskt finne " +"stedet du leter etter ved å søke etter en by eller en gate, eller finne et " +"sted å møte en venn." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kart bruker OpenStreetMap-databasen som er laget av hundretusener av " +"mennesker fra hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan også søke etter en bestemt type sted, som f.eks. «Pub nær Main " +"Street, Boston» eller «Hoteller nær Alexanderplatz, Berlin»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME prosjektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Kart" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kart;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lar lokasjonen din vises på kartet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sist viste posisjon" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sist viste posisjon." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom-nivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type kart" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Type kart som skal vises (gate, fly osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vindustørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vindustørrelse (bredde og høyde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduposisjon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduposisjon (x og y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindu maksimert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tilstand for maksimering av vindu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimalt antall søkeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalt antall søkeresultater fra geokode-søk." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antall nylige steder å lagre" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antall nylig besøkte steder som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antall nylige ruter å lagre" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antall nylig besøkte ruter som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Personvern-innstilling for Facebook-innsjekk" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sist brukt personvern-innstilling for Facebook-innsjekk. Følgende verdier er " +"gyldige: «EVERYONE» (alle), «FRIENDS_OF_FRIENDS» (venners venner), " +"«ALL_FRIENDS» (alle venner) og «SELF» (bare meg)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Personvern-innstilling for Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sist brukt personvern-innstilling for Foursquare-innsjekk. Følgende verdier " +"er gyldige: «public», «followers» og «private»." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Facebook-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Twitter-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brukernavn eller e-postadresse for OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indikerer om bruker har logget inn for å redigere OpenStreeMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sist brukte transporttype for ruting" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet vises i nattmodus." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "S_jekk inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venner av venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bare venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bare meg" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute fra denne lokasjonen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Legg til mellomstopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute til denne lokasjonen" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hva finnes her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopier posisjon" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksporter visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Ta med rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Velg karttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom inn" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå av/på favoritter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis snarveier" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søk" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avslutt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åpne hovedmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom inn" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå av/på skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Bytt til gatevisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Bytt til flyvisning" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åpne formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åpne formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Skru på posisjonstjenester for å se hvor du er" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Posisjonsinnstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Sett opp konto på OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksporter som bilde" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatursnarveier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kart" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Åpne hovedmeny" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kart er frakoblet!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kart trenger en aktiv internettforbindelse for å fungere, men ingen ble " +"funnet." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Sjekk tilkobling og innstillinger for proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto for OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logg inn for å redigere kart" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjelp til å forbedre kartet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrer deg" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logg inn" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager, det virket ikke. Vennligst prøv igjen eller besøk\n" +"OpenStreetMap for å nullstille passordet ditt." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifiseringskoden var ikke riktig. Vennligst prøv igjen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Oppgi verifikasjonskoden som vises over" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiser" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget inn" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logg ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gate" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Legg til felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Endringer på kartet vil vises på alle kart som bruker\n" +"data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nylig brukt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Neste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater funnet" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Det har oppstått en feil" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra for å endre rekkefølgen på ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åpne posisjon" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopier" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Sjekk inn …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åpne formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åpne" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå av/på synlige" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøk av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutetabeller for offentlig transport tilbys av tredjepartstjenester\n" +"\n" +"GNOME kan ikke garantere riktighet for rutetabellene og tidsplanene.\n" +"Merk at enkelte tilbydere ikke alltid inkluderer alle mulige typer " +"transport. F.eks. vil noen aktører ikke ta med flyselskaper, mens en lokal " +"tilbyder kanskje utelater regionstog.\n" +"Navn og merker som vises skal anses som registrerte varemerker når det er " +"relevant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul stopp og informasjon langs ruten" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis stopp og informasjon på veien" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Dra nå" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Dra før" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankom før" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trikker" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "T-bane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjer" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Del posisjon" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Legg til i ny rute" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Retningsanvisninger" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merk som favoritt" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom inn for å legge til en lokasjon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom inn" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Klarte ikke å finne flisstruktur i katalogen" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Klarte ikke å tolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Fant ikke OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal katalogstruktur med fliser" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Størrelse på fliser i lokal katalogstruktur med fliser" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Vis programmets versjon" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Overse nettverkstilgjengelighet" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Velg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Laster" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Velg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Facebook. Velg et sted " +"her." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Foursquare. Velg et sted " +"her." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Sjekk inn på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv en valgfri melding for å sjekke inn ved %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finner ikke «%s» i sosial tjeneste" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Fant ingen passende steder å sjekke inn på denne posisjonen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiver er utgått. Åpne Nettkontoer for å logge inn og bruke denne " +"kontoen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasjonen ble lagt til på kartet. Merk at det kan ta litt tid før den vises " +"på kartet og dukker opp i søkeresultater." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kart fra %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke rettigheter til å lagre der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen eksisterer ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Filnavn ikke oppgitt" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Gjeldende posisjon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lesefeil" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukjent geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Forespørsel om rute feilet." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ingen rute funnet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Klarte ikke å koble til posisjonstjeneste" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"haarek , Kjartan Maraas , Åka " +"Sikrom " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Et kartprogram for GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Opphavsrett © 2011 - 2021 Red Hat, Inc. og GNOME kart utviklerene" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata av %s og bidragsytere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartfliser av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søk tilbys av %s ved bruk av %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Klarte ikke å åpne lag" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Vil du fortsette?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Du er i ferd med å åpne filer med en total størrelse på %s MB. Dette kan ta litt tid" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Filtypen er ikke støttet" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Klarte ikke å åpne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Feil brukernavn eller passord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Suksess" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Fant ikke objektet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt. Noen andre har akkurat endret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er slettet" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vei eller relasjon refererer til ikke-eksisterende barn" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Det offisielle navnet. Dette er typisk det som vises på skilt." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Nettsted" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Dette er ikke en gyldig URL. Sjekk at http:// eller https:// er inkludert." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Det offisielle nettstedet. Prøv å bruke den mest grunnleggende formen av en " +"URL. F.eks. http://eksempel.no i stedet for http://eksempel.no/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Bruk det internasjonale formatet som starter med et +-tegn. " +"Vær observant på lokale lover om personvern, spesielt for private " +"telefonnummer." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Formatet som brukes skal inkludere språkkode og tittel på artikkelen slik: «en:Tittel på artikkel»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Åpningstider" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Se lenken i etiketten for hjelp om format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Folketall" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Høyde" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Høyde over have for et punkt i meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Rullestolvennlig" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Begrenset" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Spesialtilpasset" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internett-tilgang" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Trådløst" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddisme" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikdom" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarisk universalisme" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jesidisme" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Merknad" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Informasjon som brukes til å informere andre kartbrukere om ting som ikke er innlysende om et element. Forfatterens formål når noe ble laget, eller hint for videre forbedring." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Velg type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Ferdig" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Sted uten navn" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Klarte ikke å tolke Geo-URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Nøyaktighet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøyaktighet: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Offentlig internett-tilgang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ingen internett-tilgang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Offentlig Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Kablet internett-tilgang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Datamaskiner tilgjengelig for bruk" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internetthjelp tilgjengelig" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Ingen toaletter tilgjengelig" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toaletter tilgjengelig" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Rullestol tilgjengelig" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Begrenset tilgang for rullestol" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Ikke tilgjengelig med rullestol" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Utformet for rullestolbrukere" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Stedet ble ikke funnet i OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatene i URLen er ikke gyldige" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URLen støttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Laster kartruter for utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryte utskriften hvis dette tar for lang tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Legg til mellomlokasjon" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern mellomlokasjon" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Omvendt rute" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Legg til %s til %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Klarte ikke å åpne URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Åpne med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "klarte ikke å laste fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimert tid: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ruteplaner tilbys av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start ved %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankom ved %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankom" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis instruksjoner for fotgjengere" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul instruksjoner for fotgjengere" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Last tidligere alternativer" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Last senere alternativer" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer funnet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer funnet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ingen ruteinformasjon funnet for denne ruten." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen tilbyder funnet for denne ruten." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutt" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Hele døgnet" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Fra soloppgang til solnedgang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Offentlige fridager" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Skoleferie" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ikke åpen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ukjent" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Nøyaktig" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s t" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s t %s min" +msgstr[1] "%s t %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette tillegget støtter ikke siste ankomst" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsett på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsett" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sving til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sving svakt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sving svakt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sving hardt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sving hardt til venstre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sving til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sving til høyre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sving svakt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sving svakt til høyre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sving hardt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sving hardt til høyre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avkjørsel %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avkjørsel til %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Kjør gjennom rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta heisen og gå av i %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ta heisen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Ta en u-sving til venstre inn på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Ta en u-sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Ta en u-sving til høyre inn på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Ta en u-sving til høyre" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 00000000..05303199 --- /dev/null +++ b/po/ne.po @@ -0,0 +1,1617 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Gnome Nepali Translation Project\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-07-24 21:57+0000\n" +"PO-Revision-Date: 2017-08-13 14:57+0545\n" +"Last-Translator: Pawan Chitrakar \n" +"Language-Team: Nepali Translation Team \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "जिनोम मानचित्र" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:476 +msgid "Maps" +msgstr "मानचित्र" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "सहज मानचित्र अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "मानचित्र;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +msgid "last viewed location" +msgstr "हालै हेरिसकेको" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "सञ्झ्याल साइज" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "सञ्झ्यालको नाप( उचाइ र चौडाई )" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "संझ्यालको स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "सञ्झ्यालको स्थान(X र Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "सञ्झ्यालको अधिकतम स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +#, fuzzy +msgid "Window maximization state" +msgstr "बढाइएको स्थितिलाई टगल गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "अत्याधिक खोजी परिणाम प्राप्त गर्दै..." + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +#, fuzzy +msgid "Number of recent places to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +#, fuzzy +msgid "Number of recent routes to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +#, fuzzy +msgid "Number of recently visited routes to store." +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +#, fuzzy +msgid "OpenStreetMap username or e-mail address" +msgstr "इमेल ठेगाना प्रतिलिपि गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +#, fuzzy +msgid "Set up OpenStreetMap Account" +msgstr "सिर्जना र सेटअप गर्नुहोस्" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "कुञ्जीपाटी सटकर्ट" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "बारेमा" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "अन्त्य गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "दृश्यात्मक" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "फेसबुकमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "ट्विट्टरमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_रद्द गर्नुहोस्" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +#, fuzzy +msgid "C_heck in" +msgstr "जाँच गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "सबैजना" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "साथीको साथी" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "साथीमात्र" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "म मात्रै" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "सार्वजनिक" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "अनुयायीहरू" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "व्यक्तिगत" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहा के छ ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "स्थान प्रतिलिपि गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "छवि को रुपमा निर्यात गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:4 +#, fuzzy +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "निर्यात दृष्य" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "निर्यात" + +#: ../data/ui/export-view-dialog.ui.h:4 +#, fuzzy +msgid "Include route and markers" +msgstr "लाइन चिन्हकलाई देखाउनुहोस्" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "सामान्य" + +#: ../data/ui/help-overlay.ui.h:2 +#, fuzzy +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "सर्टकटहरू" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "खोजी" + +#: ../data/ui/help-overlay.ui.h:4 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "उल्टनू" + +#: ../data/ui/help-overlay.ui.h:5 +#, fuzzy +msgctxt "shortcut window" +msgid "Print route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "_बन्द गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:7 +#, fuzzy +msgctxt "shortcut window" +msgid "Map View" +msgstr "...मा मानचित्र्शा" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "यसमा जुम गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "जुम घटाउनुहोस््" + +#: ../data/ui/help-overlay.ui.h:10 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "मापन" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#: ../data/ui/help-overlay.ui.h:12 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:13 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "आकार:वितरणको आकार परामिति" + +#: ../data/ui/layers-popover.ui.h:1 +#, fuzzy +msgid "Load Map Layer" +msgstr "छवि मानचित्र लोड गर्नुहोस्" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +#, fuzzy +msgid "Location Settings" +msgstr "सेटिङ्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "मानचित्र प्रकार रोज्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#, fuzzy +msgid "Toggle route planner" +msgstr "उल्टनू" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#, fuzzy +msgid "Toggle favorites" +msgstr "मनपर्ने" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +#, fuzzy +msgid "Print Route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/main-window.ui.h:12 +#, fuzzy +msgid "Maps is offline!" +msgstr "अफलाइन" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +#, fuzzy +msgid "Add to new route" +msgstr "नयाँ पात्रो जोड्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +#, fuzzy +msgid "Mark as favorite" +msgstr "मनपर्ने " + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +#, fuzzy +msgid "Check in here" +msgstr "यहाँ ल्याउनुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:1 +#, fuzzy +msgid "OpenStreetMap Account" +msgstr "खाता:" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "इमेल" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "पासवर्ड" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "लगइन गर्दै" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +msgid "Don’t have an account?" +msgstr "यो प्रदर्शन प्रयोग नगर्नु" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "रूजु गर्नुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:16 +#, fuzzy +msgid "Your OpenStreetMap account is active." +msgstr "तपाईँको सिप खाताको पासवर्ड के हो ?" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "साइन आउट" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "सडक" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "घर नम्बर" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "जिप/हुलाकी सङ्केत" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "सहर" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "वर्ग" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "कुनै पनि होइन" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "फाँट थप्नुहोस्" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "टिप्पणी" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "हालै प्रयोग गरिएको" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#, fuzzy +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "रद्द गर्ने" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "पछिल्लो" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +#, fuzzy +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "बढी सूचना" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "खोजको लागि इन्टर थिच्नुहोस्" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "नतिजा भेटिएन" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +#, fuzzy +msgid "Drag to change order of the route" +msgstr "वक्ररेखाको आकार परिवर्तन गर्न तान्नुहोस् क्लिक गर्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "स्थान खोल्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "खोल्नुहोस्" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "तह खोल्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +#, fuzzy +msgid "Toggle visible" +msgstr "दृष्य" + +#: ../data/ui/sidebar.ui.h:1 +#, fuzzy +msgid "Route search by GraphHopper" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +msgid "Route search by OpenTripPlanner" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "अरू धेरै नतिजा देखाउनुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#, fuzzy +msgid "Show intermediate stops and information" +msgstr "संस्करण सूचना देखाउनुहोस् र निस्कनुहोस्" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +#, fuzzy +msgid "Leave Now" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +#, fuzzy +msgid "Leave By" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "देखाउने" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "बस" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ट्राम" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "ट्रेन" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "सबवे" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "फेर्री" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "हालको स्थन" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "शुद्धता: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +#, fuzzy +#| msgid "Go to current location" +msgid "Zoom in to add location!" +msgstr "स्थान" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "OK" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +msgid "Failed to parse XML document" +msgstr "XML कागजात राम्रोसँग ढाँचा भएन !" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "आवश्यक मान हराइरहेछ" + +#: ../lib/maps-osm.c:453 +#, fuzzy +msgid "Could not find OSM element" +msgstr "मद्दत डाइरेक्टरी फेला पार्न सकेन" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "खाता चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "लोड गर्दै" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "स्थान चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, fuzzy, javascript-format +msgid "Check in to %s" +msgstr "%s पत्र फाइल जाँच गर्न सकेन: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, fuzzy, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s लाई लेख्न असफल भयो (अनुमतिहरू जाँच गर्नुहुन्छ ?)" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "एउटा त्रुटि देखापर्यो ।" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "डाइरेक्टरी फेला पार्न सक्दैन %s" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/contextMenu.js:96 +#, fuzzy +msgid "Route from here" +msgstr "बाटो भेटिएन" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "गन्तव्य थप्नुहोस्" + +#: ../src/contextMenu.js:100 +#, fuzzy +msgid "Route to here" +msgstr "पूर्वनिर्धारित पथ" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "केही पनि भेटिएन" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +#, fuzzy +msgid "Filesystem is read only" +msgstr "फाइल प्रणाली" + +#: ../src/exportViewDialog.js:158 +#, fuzzy +msgid "You do not have permission to save there" +msgstr "यो फाइल संचय गर्न तपाईँसँग आवश्यक अनुमतिहरू छैनन् ।" + +#: ../src/exportViewDialog.js:160 +#, fuzzy +msgid "The directory does not exist" +msgstr "त्यहा अवस्थित छैन" + +#: ../src/exportViewDialog.js:162 +#, fuzzy +msgid "No filename specified" +msgstr "फाइलनाम:" + +#: ../src/exportViewDialog.js:170 +#, fuzzy +msgid "Unable to export view" +msgstr "निर्यात गर्नुहोस्" + +#: ../src/geoJSONSource.js:98 +#, fuzzy +msgid "invalid coordinate" +msgstr "समन्वय गर्नुहोस्" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "पदवर्णन त्रुटि" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "अज्ञात ज्यामिति" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +#, fuzzy +msgid "Route request failed." +msgstr "अनुरोध असफल" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "बाटो भेटिएन" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "सुरु!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "सबै तह फाइलहरू" + +#: ../src/mainWindow.js:418 +msgid "Failed to connect to location service" +msgstr "स्थान सेवा जडान असफल" + +#: ../src/mainWindow.js:474 +msgid "translator-credits" +msgstr "Pawan Chitrakar " + +#: ../src/mainWindow.js:477 +msgid "A map application for GNOME" +msgstr "जिनोमको मानचित्र अनुप्रयोग" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "फाइल प्रकार समर्थित छैन" + +#: ../src/mapView.js:363 +#, fuzzy +msgid "Failed to open layer" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/mapView.js:399 +#, fuzzy +msgid "Failed to open GeoURI" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/openTripPlanner.js:622 +#, fuzzy +msgid "No earlier alternatives found." +msgstr "%s भन्दा छिटो होइन" + +#: ../src/openTripPlanner.js:623 +#, fuzzy +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "पछि" + +#: ../src/openTripPlanner.js:661 +#, fuzzy +msgid "No timetable data found for this route." +msgstr "बाटो भेटिएन" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +#, fuzzy +msgid "Incorrect user name or password" +msgstr "" +"सर्भरमा जडान गर्दा त्यहाँ एउटा त्रुटि थियो । यो एउटा गलत प्रयोग कर्ता नाम र/वा " +"पासवर्ड प्रयोग गरेको कारणले हुन सक्दछ ।" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "सफलता" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "खराब अनुरोध" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "वस्तु फेला परेन" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +#, fuzzy +msgid "Object has been deleted" +msgstr "मुद्रणयन्त्र “%s” मेटियो" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "नाम" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "ठेगाना" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "वेबसाइट" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "फोन" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "विकिपेडिया" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +msgid "Opening hours" +msgstr "खुल्दैछ" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "जनसङ्ख्या" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "ऊचाई" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +msgid "Wheelchair access" +msgstr "पहुँच:" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "ठिक छ" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "होइन" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "सिमित" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "" + +#: ../src/osmEditDialog.js:171 +#, fuzzy +msgid "Internet access" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "वाई-फाई" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "तारजडिट" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "टर्मिनल" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "सेवा" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "धर्म" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "बहाई धर्म" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "बौद्ध धर्म" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "ईसाई धर्म" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "कन्फुशियस धर्म" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "हिन्दु धर्म" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "जैन धर्म" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "यहूदी धर्म" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "इस्लाम धर्म" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "धेरैवटा क्षेत्र" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "पगानि धर्म" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "वैज्ञानिक विज्ञान" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "शिन्टो धर्म" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "सिख धर्म" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "आध्यात्मिकता" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "टाओ धर्म" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "यूनिटेरिया यूनिवर्सलवाद" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "शौचालय" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "द्रष्टव्य" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +#, fuzzy +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "प्रकार चयन गर्नुहोस्" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "सम्पन्न भयो" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "जनसङ्ख्या :" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "ऊचाई:" + +#: ../src/placeBubble.js:133 +#, fuzzy +msgid "Opening hours:" +msgstr "खुल्दैछ" + +#: ../src/placeBubble.js:138 +#, fuzzy +msgid "Internet access:" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "धर्म:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "शौचालय:" + +#: ../src/placeBubble.js:153 +#, fuzzy +msgid "Wheelchair access:" +msgstr "पहुँच:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "फोन:" + +#: ../src/placeEntry.js:190 +#, fuzzy +msgid "Failed to parse Geo URI" +msgstr "जिपिजि प्रयोगकर्ता आइडी संकेत पद वर्णन गर्न असफल भयो ।" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "ठिक छ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "सिमित" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "होइन" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "%s बाट %s " + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "परित्याग गर्नुहोस्" + +#: ../src/sendToDialog.js:179 +#, fuzzy +msgid "Failed to open URI" +msgstr "URI खोल्न असक्षम" + +#: ../src/shapeLayer.js:92 +#, fuzzy +msgid "failed to load file" +msgstr "फाइल लोड गर्न असफल" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अन्दजि समय: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "आइपुग्छन्" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "सुरु" + +#: ../src/transitLegRow.js:107 +#, fuzzy +msgid "Show walking instructions" +msgstr "यसका लागि देखाउनुहोस्" + +#: ../src/transitLegRow.js:108 +#, fuzzy +msgid "Hide walking instructions" +msgstr "सञ्झ्याल लुकाउनुहोस्" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, fuzzy, javascript-format +msgid "Walk %s" +msgstr "%s: का लागि" + +#: ../src/transitMoreRow.js:41 +#, fuzzy +msgid "Load earlier alternatives" +msgstr "%s भन्दा छिटो होइन" + +#: ../src/transitMoreRow.js:43 +#, fuzzy +msgid "Load later alternatives" +msgstr "पछि" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d मिनेट" +msgstr[1] "%d मिनेट" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d घण्टा" +msgstr[1] "%d घण्टा" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d घण्टा" +msgstr[1] "%d:%02d घण्टा" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +#, fuzzy +msgid "around the clock" +msgstr "घडी" + +#: ../src/translations.js:58 +#, fuzzy +msgid "from sunrise to sunset" +msgstr "सूर्यास्ट देखि सूर्योदय" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "प्रत्येक दिन" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "सार्वजनिक विदा" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "स्कुल विदा" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +#, fuzzy +msgid "not open" +msgstr "यससँग खोल्नुहोस्:" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "तारजडिट" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "टर्मिनल" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "सेवा" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "दुरुस्त" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s किलोमिटर" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s मिटर" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s माइल" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%sफिट" + +#~ msgid "I’m here!" +#~ msgstr "म यहा छु" + +#~ msgid "Country code: %s" +#~ msgstr "देश मानक:%s" + +#~ msgid "%f km²" +#~ msgstr "%f वर्गकिलोमिटर" + +#~ msgid "%f km" +#~ msgstr "%f किलोमिटर" + +#~ msgid "%f m" +#~ msgstr "%f m" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 00000000..c8a00d88 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,2034 @@ +# Dutch translation for gnome-maps +# Copyright (C) 2013, 2014 +# This file is distributed under the same license as the GNOME Maps package. +# Check-in: voorlopig even onvertaald gelaten - Hannie +# Erwin Poeze , 2013, 2014. +# Reinout van Schouwen , 2013. +# Hannie Dumoleyn , 2015. +# Nathan Follens , 2015-2021. +# Justin van Steijn , 2015-2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.16\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-20 09:01+0000\n" +"PO-Revision-Date: 2021-04-01 22:49+0200\n" +"Last-Translator: Nathan Follens \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnome Kaarten" + +# rond de wereld +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vind plaatsen de wereld rond" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaarten geeft u snelle toegang tot kaarten over de hele wereld. U kunt snel " +"de plaats waarnaar u op zoek bent vinden door te zoeken naar een stad of de " +"straat, of de plek opzoeken om een vriend te ontmoeten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaarten gebruikt de gemeenschappelijk opgebouwde OpenStreetMap-database, " +"gemaakt door honderdduizenden mensen over de hele wereld." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"U kunt zelfs naar specifieke soorten locaties zoeken, zoals ‘Pubs in de " +"buurt van Main Street, Boston’ of ‘WiFi-toegang in de buurt van " +"Alexanderplatz, Berlijn’." + +#: data/org.gnome.Maps.appdata.xml.in:197 +msgid "The GNOME Project" +msgstr "Het Gnome-project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Kaarten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Een eenvoudige kaartentoepassing" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kaart;Kaarten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Geeft uw locatie weer op de kaart." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laatst bekeken locatie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coördinaten van de laatst bekeken locatie." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoomen" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kaarttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Het type kaart om weer te geven (straten, lucht, enz.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Venstergrootte" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Venstergrootte (breedte en hoogte)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vensterpositie" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vensterpositie (X en Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Venstergrootte gemaximaliseerd" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Venstermaximalisatiestaat" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum aantal zoekresultaten" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum aantal resultaten van zoeken op geografische positie." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Aantal recente locaties om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Aantal recent bezochte locaties om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Aantal recente routes om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Aantal recent afgelegde routes om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook-inchecken privacyinstellingen" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Voor het laatst gebruikte privacyinstellingen Facebook-incheck. Mogelijke " +"waarden zijn: IEDEREEN, VRIENDEN VAN VRIENDEN, ALLE VRIENDEN of ZICHZELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-inchecken privacyinstellingen" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"De laatst gebruikte privacyinstellingen Foursquare-incheck. Mogelijke " +"waarden zijn: openbaar, volgers of privé." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de incheck in een bericht moet bekend maken in het " +"Facebook-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de controle in een bericht moet bekend maken in het " +"Twitter-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-gebruikersnaam of -e-mailadres" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Geeft aan of de gebruiker ingelogd is om OpenStreetMap-gegevens te bewerken." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Laatst gebruikte transporttype voor routering" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Of het programma in nachtmodus staat." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hybride luchtfototegels gebruiken" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Of luchtfototegels een hybride stijl moeten gebruiken (met labels)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Posten op Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Posten op Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuleren" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Inc_hecken" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Iedereen" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vrienden van vrienden" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Alleen vrienden" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Alleen ik" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Openbaar" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Volgers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route vanaf hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tussenstop toevoegen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route naar hier" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Wat bevindt zich hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Locatie kopiëren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Weergave exporteren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporteren" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Route en markeringen opnemen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Kies kaartsoort" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Uitzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Inzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Bladwijzers in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Algemeen" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Sneltoetsen tonen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Zoeken" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afsluiten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kaartweergave" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Inzoomen" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uitzoomen" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Schaal in/uitschakelen" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Overschakelen naar straatbeeld" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Overschakelen naar luchtbeeld" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vormlaag openen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Labels tonen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vormlaag openen…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Locatiedienst inschakelen om uw locatie te bepalen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuleren" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Locatie-instellingen" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-account instellen" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporteren als afbeelding" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "S_neltoetsen" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Over Kaarten" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kaarten is offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kaarten heeft een actieve internetverbinding nodig om te functioneren, maar " +"die is niet gevonden." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Controleer uw verbinding en proxy-instellingen." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Meld u aan om kaarten te bewerken" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help om de kaart te verbeteren, door gebruik te maken van een\n" +"OpenStreetMap-account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Wachtwoord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inloggen" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, dat werkte niet. Probeer het opnieuw of bezoek\n" +"OpenStreetMap om uw wachtwoord te herstellen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "De verificatiecode kwam niet overeen, probeer het opnieuw." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Voer de verificatiecode hierboven in" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiëren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingelogd" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Uw OpenStreetMap-account is actief." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Uitloggen" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straat" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Huisnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postcode" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Plaats" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Soort" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Geen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Wijzigingen aan de kaart zijn zichtbaar op alle kaarten\n" +"die OpenStreetMap-gegevens gebruiken." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recent gebruikt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Volgende" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Geen resultaten gevonden" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Er is een fout opgetreden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Verslepen om de volgorde van de route te wijzigen" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Locatie openen" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiëren" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Versturen naar…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Inchecken…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vormlaag openen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Openen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Zichtbaar/onzichtbaar maken" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routezoeken door GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routering voor openbaar vervoer wordt aangeboden door diensten van derde " +"partijen.\n" +"Gnome kan de juistheid van de hier weergegeven routes en dienstregelingen " +"niet garanderen.\n" +"Merk op dat sommige leveranciers mogelijk niet alle beschikbare " +"transportmodi weergeven,\n" +"bv. een nationale leverancier geeft mogelijk geen vliegroutes weer, en een " +"lokale leverancier\n" +"geeft mogelijk niet alle regionale treinen weer.\n" +"De hier weergegeven namen en merknamen worden, waar toepasbaar, beschouwd " +"als\n" +"geregistreerde handelsmerken." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Meer resultaten tonen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Tussenstops en informatie verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tussenstops en informatie tonen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Nu vertrekken" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Vertrekken tegen" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Aankomen tegen" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tonen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussen" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treinen" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Veerboten" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Vliegtuigen" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Locatie delen" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Aan nieuwe route toevoegen" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Routebeschrijving" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markeren als bladwijzer" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in om locatie toe te voegen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Inzoomen" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kon de tegelstructuur in de map niet vinden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kon XML-document niet ontleden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Benodigde eigenschappen ontbreken" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kon OSM-element niet vinden" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Een pad naar een mappenstructuur met lokale tegels" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tegelgrootte voor lokale tegelmap" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "De versie van het programma tonen" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Beschikbaarheid netwerk negeren" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[BESTAND…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Een account kiezen" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Bezig met laden" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Een plaats kiezen" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Facebook niet vinden. Gelieve er " +"een uit de lijst te kiezen." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Foursquare niet vinden. Gelieve " +"er een uit de lijst te kiezen." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Inchecken bij %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Voeg eventueel een bericht toe bij het inchecken bij %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "‘%s’ werd niet aangetroffen in de sociale dienst" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Er is geen geschikte plaats gevonden om in te checken op deze locatie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"De aanmeldgegevens zijn verlopen, gelieve Online-accounts te openen om u aan " +"te melden en dit account in te schakelen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Niets gevonden hier!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locatie is toegevoegd aan de kaart, het kan even duren voor deze op de kaart " +"en in zoekresultaten wordt weergegeven." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kaart op %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Bestandssysteem is alleen-lezen" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "U heeft geen toestemming om hier op te slaan" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "De map bestaat niet" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Geen bestandsnaam opgegeven" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kon weergave niet exporteren" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Huidige locatie" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ongeldig coördinaat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ontleedfout" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "onbekende afmetingen" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Routeaanvraag is mislukt." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Geen route gevonden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle laagbestanden" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Verbinden met locatiedienst is mislukt" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Erwin Poeze \n" +"Reinout van Schouwen \n" +"Hannie Dumoleyn \n" +"Nathan Follens \n" +"Justin van Steijn \n" +"\n" +"Meer info over Gnome-NL http://nl.gnome.org" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Een kaartentoepassing voor Gnome" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. en de auteurs van Gnome Kaarten" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kaartgegevens door %s en bijdragers" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kaarttegels geleverd door %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Zoekfunctionaliteit aangeboden door %s met %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Laag openen mislukt" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Wilt u doorgaan?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"U staat op het punt bestanden met een totale grootte van %s MB te openen. " +"Het kan even duren om deze in te laden" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Bestandstype wordt niet ondersteund" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI openen mislukt" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Onjuiste aanvraag" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object niet gevonden" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, iemand anders heeft net het object gewijzigd" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object is verwijderd" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Manier of relatie verwijst naar niet-bestaande dochter" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Naam" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "De officiële naam. Dit is wat normaal gezien op borden verschijnt." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Dit is geen geldige URL. Zorg dat het deel met http:// of https:// ook " +"toegevoegd wordt." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"De officiële website. Probeer de meest beperkte vorm van een URL te " +"gebruiken, i.e., https://voorbeeld.be in plaats van https://voorbeeld.be/" +"index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefoon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefoonnummer. Gebruik het internationale formaat, beginnend met een " +"plusteken (+). Wees bewust van lokale privacywetten, zeker wanneer het gaat " +"om privételefoonnummers." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Het gebruikte formaat hoort de taalcode en de titel van het artikel te " +"bevatten, zoals ‘nl:Titel van artikel’." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Openingstijden" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Zie de koppeling in het label voor hulp bij het formaat." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populatie" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Hoogte" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "De hoogte boven de zeespiegel van een punt in meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Rolstoeltoegankelijk" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nee" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Beperkt toegankelijk" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Aangewezen" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internettoegang" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Bedraad" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Boeddisme" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Christendom" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindoeïsme" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Jodendom" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Meerdere religies" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Heidendom" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaristisch Universalisme" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yezidisme" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Mazdeïsme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Wc's" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Opmerking" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Deze informatie wordt gebruikt om andere ‘mappers’ te informeren over niet-" +"evidente informatie over een element, de bedoeling van de auteur bij het " +"aanmaken ervan, of tips voor verbetering." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Een type kiezen" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Klaar" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Naamloze plaats" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Kon GeoURI niet ontleden" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coördinaten" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Nauwkeurigheid" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Positienauwkeurigheid: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefoonnummer" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Openbare internettoegang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Geen internettoegang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Openbare wifi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Bekabelde internettoegang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computers beschikbaar voor gebruik" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internethulp beschikbaar" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Geen wc’s beschikbaar" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Wc’s beschikbaar" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Rolstoeltoegankelijk" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Beperkt rolstoeltoegankelijk" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Niet rolstoeltoegankelijk" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Geschikt voor rolstoelgebruikers" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religie:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Plaats niet gevonden op OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Coördinaten in URL zijn ongeldig" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL wordt niet ondersteund" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Van %s naar %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Bezig met laden van kaarttegels voor afdrukken" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "U kan het afdrukken afbreken indien het te lang duurt" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afdrukken afbreken" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "‘Via’ toevoegen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "‘Via’ verwijderen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route omkeren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s toevoegen aan %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI openen mislukt" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Openen met %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "bestand laden mislukt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschatte tijdsduur: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Routeberekening geleverd door %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Vertrek om %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Wandel %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kom aan tegen %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Kom aan" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wandelinstructies tonen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Wandelinstructies verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Vroegere alternatieven laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Latere alternatieven laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Geen vroegere alternatieven gevonden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Geen latere alternatieven gevonden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Geen gegevens betreffende dienstregeling gevonden voor deze route." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Geen leverancier gevonden voor deze route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuut" +msgstr[1] "%s minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s uur" +msgstr[1] "%s uur" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s uur" +msgstr[1] "%s:%s uur" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "De hele dag" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Van zonsopkomst tot zonsondergang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Dagelijks" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Officiële feestdagen" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Schoolvakanties" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "niet open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%su" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%su %sm" +msgstr[1] "%su %sm" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%sm" +msgstr[1] "%sm" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%ss" +msgstr[1] "%ss" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Deze plug-in biedt geen ondersteuning voor laatste aankomst" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Ga door op %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Ga door" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sla linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sla linksaf" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sla iets linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sla iets linksaf" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sla scherp linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sla scherp linksaf" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sla rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sla rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sla iets rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sla iets rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sla scherp rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sla scherp rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Neem op de rotonde afslag %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Neem op de rotonde de afslag naar %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Rijd de rotonde op" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Neem de lift en stap af op %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Neem de lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Draai 180 graden linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Draai 180 graden linksaf" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Draai 180 graden rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Draai 180 graden rechtsaf" + +#~ msgid "Find a Route" +#~ msgstr "Route zoeken" + +#~ msgid "Check in here" +#~ msgstr "Hier inchecken" + +#~ msgid "Show more information" +#~ msgstr "Meer informatie tonen" + +#~ msgid "Population:" +#~ msgstr "Populatie:" + +#~ msgid "Altitude:" +#~ msgstr "Hoogte:" + +#~ msgid "Opening hours:" +#~ msgstr "Openingstijden:" + +#~ msgid "Internet access:" +#~ msgstr "Internettoegang:" + +#~ msgid "Toilets:" +#~ msgstr "Wc's:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Rolstoeltoegankelijk:" + +#~ msgid "Phone:" +#~ msgstr "Telefoon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "beperkt toegankelijk" + +#~ msgid "no" +#~ msgstr "nee" + +#~ msgid "designated" +#~ msgstr "aangewezen" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL is ongeldig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "bedraad" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "dienst" + +#~ msgid "Don’t have an account?" +#~ msgstr "Heeft u geen account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routezoeken door OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Bestemming toevoegen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Openen met een andere toepassing" + +#~ msgid "Press enter to search" +#~ msgstr "Druk op enter om te zoeken" + +#~ msgid "Quit" +#~ msgstr "Afsluiten" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vormlaag openen…" + +#~ msgid "Load Map Layer" +#~ msgstr "Maplaag laden" + +#~ msgid "Open Layer" +#~ msgstr "Laag openen" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mijl" + +#~ msgid "%f ft" +#~ msgstr "%f voet" + +#~ msgid "Position not found" +#~ msgstr "Positie niet gevonden" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 00000000..1fa41d09 --- /dev/null +++ b/po/oc.po @@ -0,0 +1,2037 @@ +# Occitan Translation of GNOME Maps. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Cédric Valmary (Tot en Òc) , 2015. +# Cédric Valmary (Tot en òc) , 2015. +# Cédric Valmary (totenoc.eu) , 2016, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-20 09:01+0000\n" +"PO-Revision-Date: 2021-06-12 23:16+0200\n" +"Last-Translator: Cédric Valmary (totenoc.eu) \n" +"Language-Team: Tot En Òc\n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recèrca d'emplaçaments a l'entorn del monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L'aplicacion Mapas vos dona un accès rapid a de mapas del monde entièr. " +"Permet de trobar rapidament un emplaçament en recercant per vila o per " +"carrièra, o de situar un endreit de recontre amb un amic." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Las mapas utilizan la basa de donadas collaborativa OpenStreetMap, a la " +"quala contribuisson de centenats de milierats de personas dins lo monde " +"entièr." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Podètz quitament cercar de luòcs especifics, coma « Restaurants al costat de " +"la Catedrala d'Estrasborg » o « Ostalariás al costat d'Alexanderplatz a " +"Berlin »." + +#: data/org.gnome.Maps.appdata.xml.in:197 +msgid "The GNOME Project" +msgstr "Lo projècte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicacion cartografica simpla" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d'afichar vòstre emplaçament sus la mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "darrièr emplaçament vist" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas del darrièr emplaçament afichat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivèl de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipe de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Talha de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Talha de la fenèstra (nautor e largor)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posicion de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posicion de la fenèstra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenèstra agrandida" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat d'agrandiment de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de resultats de recèrca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de resultats d'una recèrca per geocòdi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidencialitat d'anonci de la localizacion sus Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion sus Facebook. Las valors possiblas son : EVERYONE (tot lo " +"monde), FRIENDS_OF_FRIENDS (amics dels amics), ALL_FRIENDS (totes los amics) " +"o SELF (siá)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidencialitat d'anonci de la localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion Foursquare. Las valors possiblas son : public (publicas), " +"followers (personas que me seguisson) o private (privat)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusion sus Facebook dels anoncis de localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Facebook associat al compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusion sus Twitter dels anoncis de localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Twitter associat al compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'utilizaire o adreça electronica OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utilizaire s'es identificat per modificar de donadas " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Tipe de transpòrt utilizat al moment del darrièr itinerari" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mòde nuèch" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar sus Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar sus Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anullar" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "A_nonciar sa localizacion" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tot lo monde" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amics dels amics" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Sonque los amics" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Sonque ieu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personas que me seguisson" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinerari dempuèi aicí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Apondre una destinacion intermediària" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinerari fins a aqueste punt" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "De qué i a aicí ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar l'emplaçament" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportacion de l'afichatge" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclure l'itinerari e los marcadors" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Causir lo tipe de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom arrièr" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Bascular los favorits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir l'itinerari" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afichar los acorchis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Recercar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir l'itinerari" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afichar la mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bascular los favorits" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passar en vista cartografica" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passar en vista aeriana" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Dobrir un jaç de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afichar los labèls" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Dobrir un jaç de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicis de localizacion per trobar vòstra posicion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anullar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localizacion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mòde nuèch" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar coma imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Acorchis de clavièr" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A prepaus de Maps" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas es fòra linha !" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas a besonh d’una connexion Internet activa e foncionala, mas n'a pas " +"trobat cap." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificatz vòstra connexion e vòstres paramètres de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S'identificar per modificar de mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudar al melhorament de las mapas amb\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adreça de corrièr electronic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senhal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscriure" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Connexion" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"O planhèm, aquò a pas foncionat. Reensajatz o visitatz\n" +"OpenStreetMap per reïnicializar vòstre senhal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Lo còdi de verificacion correspond pas, ensajatz encara un còp." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sasissètz lo còdi de verificacion afichat çaisús" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sètz inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vòstre compte OpenStreetMap es actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Desconnexion" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrièra" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numèro d'ostal" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Còdi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Vila" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipe" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Pas cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Apondre un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Las modificacions de la mapa seràn visiblas sus totas\n" +"las mapas qu'utilizan de donadas OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Darrièrament utilizat" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Seguent" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Cap de resultat pas trobat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Una error s'es produita" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Fasètz lisar per modificar l'òrdre de l'itinerari" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Dobrir l'emplaçament" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +#, fuzzy +#| msgid "C_heck in" +msgid "Check In…" +msgstr "A_nonciar sa localizacion" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Dobrir un jaç de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Dobrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inversar la visibilitat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recèrca d'itinerari amb GraphHopper" + +#: data/ui/sidebar.ui:364 +#, fuzzy +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itineraris per transpòrt public prepausats per GNOME utilizan\n" +"de tablèus oraris obtenguts de las companhias de transpòrt.\n" +"Aquelas companhias pòdon pas èsser tengudas responsablas dels resultats " +"afichats.\n" +"GNOME pòt pas garantir l’exactitud dels itineraris e oraris presentats.\n" +"Los noms e marcas afichats devon èsser considerats coma de marcas " +"depausadas, se fa mestièr." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Far veire mai de resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Amagar los arrèsts e informacions intermediàrias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afichar los arrèsts e informacions intermediàrias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Despart" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afichar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Mètros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Vaissèls" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partejar l'emplaçament" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Apondre a un novèl itinerari" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direccions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar coma favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomatz per apondre un emplaçament !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trobar una estructura de teulas dins lo repertòri" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Fracàs d'analisi d'un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributs obligatòris mancants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trobar l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: src/application.js:114 +#, fuzzy +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Afichar la version del logicial" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignòra la disponibilité de la ret" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHIÈR|URI...]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargament" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un luòc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Facebook. " +"Seleccionatz-ne un dins aquesta lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Foursquare. " +"Seleccionatz-ne un dins aquesta lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Anonciar sa localizacion a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriure un messatge opcional per vòstre anonci de localizacion a %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trobar « %s » sus la ret sociala" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trobar un endreit correspondent per anonciar sa localizacion" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las informacions d'autenficacion an expirat, dobrissètz Comptes en linha per " +"vos connectar e activar aqueste compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Res es pas estat trobat a aqueste endreit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L'emplaçament es estat apondut a la mapa, notatz qu'aquò pòt prene un moment " +"abans qu'aparesca sus la mapa e dins los resultats de recèrca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas situadas a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Lo sistèma de fichièrs es en lectura sola" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Avètz pas la permission d'enregistrar a aqueste endreit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Lo dorsièr existís pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Cap de nom de fichièr pas indicat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d'exportar l'afichatge" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Luòc actual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada pas valabla" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error d'analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Fracàs de la recèrca d'itinerari." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Cap d'itinerari pas trobat." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Es partit !" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Totes los fichièrs de jaces" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Fracàs a la connexion al servici de localizacion" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Cédric Valmary (totenoc.eu) " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una aplicacion cartografica per GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e los autors de Mapas de GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Donadas cartograficas de %s e contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Fracàs de dobertura del jaç" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Volètz contunhar ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Lo tipe de fichièr es pas pris en charge" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Fracàs de dobertura de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'utilizaire o senhal incorrècte" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Marrida requèsta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objècte pas trobat" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, qualqu'un mai ven de modificar l'objècte" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objècte es estat suprimit" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lo camin o la relacion se referís a d'enfants qu'existisson pas" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Lo nom oficial. Es en general çò qu'es escrit sus l'ensenha." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Site internet" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Lo site officiel. Ensajatz d'utilizar la forma la plus simple per l'URL, es " +"a dire http://example.com al luòc de http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefòn" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numèro de telefòn. Utilizatz lo format internacional, en començant per un " +"signe +. Atencion a las leis localas sus la vida privada, sustot pels " +"numéros de telefòn dels particulars." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipèdia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Lo format utilizat deuriá comprene lo còdi lenga e lo títol de l’article, " +"coma « oc:Títol de l’article »." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Oras de dobertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Veire lo ligam dins l'etiqueta per de l'ajuda sul format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populacion" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevacion (nautor en dessús del nivèl de la mar) d'un punt en mètres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accès als fautuèlhs rotlants" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Òc " + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Reservat" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accès internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Fialar" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servici" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Baaïsme" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Bodisme" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Indoïsme" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Mantuna religion" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodó" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Iezidisme" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Comuns" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nòta" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacions utilizadas per informar d’autres cartografes sus las " +"informacions non evidentas sus un element, l’intencion de l’autor al moment " +"de sa creacion, o de las indicacions per de possibles melhoraments." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleccionar un tipe" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fait" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Luòc sens nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Fracàs a l'analisi de la Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precision" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de la posicion : %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numèro de telefòn" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accès internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Cap d'accès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accès internet per cable" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accès als fautuèlhs rotlants" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accès als fautuèlhs rotlants limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Cap d'accès als fautuèlhs rotlants" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion :" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Luòc pas trobat dins OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L'URL donat es pas pres en carga" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargament de las teulas de mapa per l'impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podètz interrompre l'impression se cela pren tròp de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l'impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Apondre un emplaçament intermediari" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimir l’emplaçament intermediari" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Camin invèrse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, fuzzy, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "De %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Fracàs de dobertura de l'URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Dobrir amb %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impossible de cargar lo fichièr" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat : %s" + +#: src/sidebar.js:415 +#, fuzzy, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Despart de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Despart" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribada a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arribada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Afichar las instruccions de caminada a pè" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Amagar las instruccions de caminada a pè" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar las alternativas precedentas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar las alternativas seguentas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Cap d'alternativa precedenta pas trobada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Cap d'alternativa seguenta pas trobada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#: src/transitPlan.js:185 +#, fuzzy +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minutas" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s oras" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s oras" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24h/24" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "del sortir al colcar del solelh" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +#, fuzzy +#| msgid "every day" +msgid "Every day" +msgstr "cada jorn" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:177 +#, fuzzy +#| msgid "public holidays" +msgid "Public holidays" +msgstr "comjats" + +#: src/translations.js:179 +#, fuzzy +#| msgid "school holidays" +msgid "School holidays" +msgstr "comjats escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "tampat" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s pès" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Contunhar" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "" + +#~ msgid "Quit" +#~ msgstr "Quitar" + +#~ msgid "Open with another application" +#~ msgstr "Dobrir amb una autra aplicacion" + +#~ msgid "Check in here" +#~ msgstr "Anonciar aqueste emplaçament coma localizacion" + +#~| msgid "Don't have an account?" +#~ msgid "Don’t have an account?" +#~ msgstr "Avètz pas de compte ?" + +#~ msgid "Show more information" +#~ msgstr "Far veire mai d'informacion" + +#~ msgid "Press enter to search" +#~ msgstr "Quichatz sus entrada per recercar" + +#~| msgid "Route search by GraphHopper" +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Recèrca d’itinerari amb OpenTripPlanner" + +#~ msgid "OK" +#~ msgstr "Validar" + +#~ msgid "Add destination" +#~ msgstr "Apondre una destinacion" + +#~ msgid "Population:" +#~ msgstr "Populacion :" + +#~ msgid "Altitude:" +#~ msgstr "Altitud :" + +#~ msgid "Opening hours:" +#~ msgstr "Oras de dobertura :" + +#~ msgid "Internet access:" +#~ msgstr "Accès internet :" + +#~ msgid "Toilets:" +#~ msgstr "Comuns :" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accès als fautuèlhs rotlants :" + +#~ msgid "Phone:" +#~ msgstr "Telefòn :" + +#~ msgid "yes" +#~ msgstr "òc" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "reservat" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "filar" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servici" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar lo jaç cartografic" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posicion pas trobada" + +#~ msgid "Country code: %s" +#~ msgstr "Còdi del país : %s" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Dobrir un jaç de formas…" + +#~ msgid "Open Layer" +#~ msgstr "Dobrir la couche" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 00000000..2c1a2a20 --- /dev/null +++ b/po/pa.po @@ -0,0 +1,2032 @@ +# Punjabi translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# A S Alam , 2013, 2014, 2015, 2016, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-14 20:40+0000\n" +"PO-Revision-Date: 2021-02-14 12:44-0800\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.1\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ਗਨੋਮ ਨਕਸ਼ੇ" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ਸੰਸਾਰ ਭਰ ਵਿੱਚ ਥਾਵਾਂ ਨੂੰ ਲੱਭੋ" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਤੁਹਾਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ ਨਕਸ਼ੇ ਉਪਲੱਬਧ ਕਰਵਾਉਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਤੁਰੰਤ" +" ਸ਼ਹਿਰ ਜਾਂ ਸੜਕਾਂ ਦੇ ਨਾਂ " +"ਰਾਹੀਂ ਥਾਂ ਲੱਭਣ ਲਈ ਜਾਂ ਮਿੱਤਰ ਨੂੰ ਮਿਲਣ ਲਈ ਥਾਂ ਪੱਕਾ ਕਰਨ ਲਈ ਮੱਦਦ ਕਰਦੀ ਹੈ।" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਸਾਂਝਾ OpenStreetMap ਡਾਟਾਬੇਸ ਵਰਤਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ" +" ਲੱਖਾਂ-ਕਰੋੜਾਂ ਲੋਕਾਂ " +"ਵਲੋਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ਤੁਸੀਂ ਟਿਕਾਣਿਆਂ ਦੀ ਖਾਸ ਕਿਸਮ ਲਈ ਵੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ \"ਮੇਨ ਸਟਰੀਟ, ਬੋਸਟਨ" +" ਨੇੜੇ ਪੱਬ\" " +"ਜਾਂ \"ਅਲੈਗਜੈਂਡਰਪਲੇਟਜ਼, ਬਰਲਿਨ ਨੇੜੇ ਹੋਟਲ\"।" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "ਨਕਸ਼ਾ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ਸੌਖੀ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "ਨਕਸ਼ਾ;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਦਿਖਾਉਣ ਲਈ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ਪਿਛਲਾ ਵੇਖਿਆ ਟਿਕਾਣਾ" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ਪਿਛਲੇ ਵੇਖੇ ਗਏ ਟਿਕਾਣੇ ਦੇ ਧੁਰੇ।" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ਜ਼ੂਮ" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "ਜ਼ੂਮ ਪੱਧਰ" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "ਵਿਖਾਉਣ ਲਈ ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ (ਸੜਕ, ਹਵਾਈ ਆਦਿ)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "ਵਿੰਡੋ ਆਕਾਰ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (X ਅਤੇ Y)।" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "ਜੀਓਕੋਡ ਖੋਜ ਤੋਂ ਵੱਧ ਤੋਂ ਵੱਧ ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਟਿਕਾਣਿਆਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਸਥਾਨਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਹਰੇਕ," +" ਦੋਸਤਾਂ_ਦੇ_ਦੋਸਤ, ਸਭ_ਦੋਸਤ, ਜਾਂ " +"ਖੁਦ" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "ਫੋਰਸਿਕਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਪਬਲਿਕ, ਫ਼ੋਲਅਰ ਜਾਂ" +" ਪ੍ਰਾਈਵੇਟ।" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਫੇਸਬੁੱਕ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ" +" ਫੇਸਬੁੱਕ ਖਾਤੇ ਵਿੱਚ ਪੋਸਟ ਵਜੋਂ " +"ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਟਵਿੱਟਰ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਟਵਿੱਟਰ" +" ਖਾਤੇ ਵਿੱਚ ਟਵਿੱਟ " +"ਵਜੋਂ ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਈਮੇਲ ਪਤਾ" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਵਰਤੋਂਕਾਰ ਨੇ OpenStreetMap ਡਾਟੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਈਨ ਇਨ ਕੀਤਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "ਰੂਟ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਪਿਛਲੀ ਟਰਾਂਸਪੋਰਟ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:86 +#| msgid "Night Mode" +msgid "Night mode" +msgstr "ਗੂੜ੍ਹਾ ਢੰਗ" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਰਾਤ ਵਾਲੇ ਢੰਗ ਵਿੱਚ ਵਰਤਣਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "ਹਾਈਬਰਿੱਡ ਹਵਾਈ ਟਾਈਲਾਂ ਵਰਤੋਂ" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "ਕੀ ਹਵਾਈ ਟਾਈਲਾਂ ਨੂੰ ਹਾਈਬਰਿੱਡ ਸਟਾਈਲ (ਲੇਬਲਾਂ ਨਾਲ) ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ।" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ਵੇਖਣਯੋਗਤਾ" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ਫੇਸਬੁੱਕ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "ਟਵਿੱਟਰ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "ਚੈਕ ਇਨ(_h)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "ਹਰੇਕ" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "ਦੋਸਤਾਂ ਦੇ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "ਕੇਵਲ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ਕੇਵਲ ਮੈਂ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "ਪਬਲਿਕ" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "ਫ਼ੌਲਅਰ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "ਇੱਥੇ ਤੋਂ ਰੂਟ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "ਵਿਚਕਾਰਲੀ ਮੰਜ਼ਲ ਜੋੜੋ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "ਇੱਥੇ ਤੱਕ ਰੂਟ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "ਇੱਥੇ ਕੀ ਹੈ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਕਾਪੀ ਕਰੋ" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "ਐਕਸਪੋਰਟ(_I)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "ਰੂਟਾਂ ਅਤੇ ਚਿੰਨ੍ਹਾਂ ਸਮੇਤ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "ਨਕਸ਼ਾ ਕਿਸਮ ਚੁਣੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "ਪਸੰਦਾਂ ਨੂੰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "ਆਮ" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਵੇਖੋ" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "ਖੋਜੋ" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "ਬਾਹਰ" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "ਮੁੱਖ ਮੀਨੂ ਖੋਲ੍ਹੋ" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "ਨਕਸ਼ੇ ਦੀ ਝਲਕ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "ਸਕੇਲ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "ਸੜਕੀ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "ਹਵਾਈ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "ਲੇਬਲ ਵੇਖਾਓ" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "ਆਪਣੇ ਟਿਕਾਣੇ ਨੂੰ ਲੱਭਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "ਗੂੜ੍ਹਾ ਢੰਗ" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤੇ ਨੂੰ ਸੈਟਅੱਪ ਕਰੋ" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "ਚਿੱਤਰ ਵਜੋਂ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "ਨਕਸ਼ੇ ਬਾਰੇ" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "ਮੁੱਖ ਮੀਨੂ ਖੋਲ੍ਹੋ" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "ਨਕਸ਼ੇ ਆਫਲਾਈਨ ਹਨ!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਸਰਗਰਮ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਇਹ ਮਿਲਿਆ" +" ਨਹੀਂ।" + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਤੇ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਦੀ ਜਾਂਚ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤਾ" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap ਖਾਤੇ ਨਾਲ ਨਕਸ਼ੇ ਨੂੰ\n" +" ਸੁਧਾਰਨ ਲਈ ਮਦਦ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ਈਮੇਲ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ਪਾਸਵਰਡ" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ਸਾਇਨ ਅੱਪ" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ਸਾਇਨ ਇਨ" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"ਅਫਸੋਸ, ਇਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਬਾਅਦ 'ਚ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਮੁੜ-ਸੈੱਟ" +" ਕਰਨ ਲਈ \n" +"OpenStreetMap ਨੂੰ ਖੋਲ੍ਹੋ।" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "ਤਸਦੀਕ ਕਰਨ ਵਾਲਾ ਕੋਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਤਸਦੀਕੀ ਕੋਡ ਦਿਓ" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "ਤਸਦੀਕ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "ਤੁਹਾਡਾ OpenStreetMap ਖਾਤਾ ਹੁਣ ਸਰਗਰਮ ਹੈ।" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "ਸਾਇਨ ਆਉਟ" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "ਗਲੀ" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "ਘਰ ਨੰਬਰ" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "ਡਾਕ ਕੋਡ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "ਸ਼ਹਿਰ" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "ਕਿਸਮ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ਖੇਤਰ ਨੂੰ ਜੋੜੋ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "ਟਿੱਪਣੀ" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ਨਕਸ਼ੇ ਸੰਬੰਧੀ ਤਬਦੀਲੀਆਂ ਸਾਰੇ ਨਕਸ਼ਿਆਂ ਉੱਤੇ ਦਿਖਾਈ ਦੇਣਗੀਆਂ, ਜੋ ਕਿ\n" +"OpenStreetMap ਡਾਟੇ ਨੂੰ ਵਰਤਦੇ ਹਨ।" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "ਤਾਜ਼ਾ ਵਰਤੇ ਗਏ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "ਅੱਗੇ" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "ਗਲਤੀ ਆਈ" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "ਰੂਟ ਦਾ ਕ੍ਰਮ ਬਦਲਣ ਲਈ ਖਿੱਚੋ" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਖੋਲ੍ਹੋ" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "…ਨੂੰ ਭੇਜੋ" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "ਚੈਕ ਇਨ…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "ਖੋਲ੍ਹੋ(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "ਦਿੱਖ ਨੂੰ ਬਦਲੋ" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ਗਰਾਫਹੋਪਰ ਵਲੋਂ ਰੂਟ ਖੋਜ" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"ਪਬਲਿਕ ਆਵਾਜਾਈ ਲਈ ਰੂਟ ਸਫ਼ਰਨਾਮੇ ਸੁਤੰਤਰ ਧਿਰਾਂ ਵਲੋਂ ਦਿੱਤੀਆਂ ਜਾ ਰਹੀਆਂ\n" +"ਹਨ।\n" +"ਗਨੋਮ ਇਹਨਾਂ ਸਫ਼ਰਨਾਮਿਆਂ ਤੇ ਵੇਖੀਆਂ ਸਮਾਂ ਸਾਰਣੀਆਂ ਦੇ ਦਰੁਸਤ ਹੋਣ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ" +" ਸਕਦਾ ਹੈ।\n" +"ਯਾਦ ਰੱਖੋ ਕਿ ਕੁਝ ਪੂਰਕ ਕੋਲ ਆਵਾਜਾਈ ਦੇ ਸਾਰੇ ਮੌਜੂਦ ਢੰਗ ਨਹੀਂ ਦੇ ਸਕਦੇ ਹਨ।\n" +"ਜਿਵੇਂ ਕਿ ਕੌਮੀ ਪੂਰਕਾਂ ਵਿੱਚ ਹਵਾਈ ਜਹਾਜ਼ ਮੌਜੂਦ ਨਹੀਂ ਹੋ ਸਕਦੇ ਅਤੇ ਲੋਕਲ ਪੂਰਕਾਂ\n" +"ਕੋਲ ਖੇਤਰੀ ਰੇਲ ਗੱਡੀਆਂ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ।\n" +"ਵੇਖਾਏ ਗਏ ਨਾਂ ਅਤੇ ਮਾਰਕਿਆਂ ਨੂੰ ਜਿੱਥੇ ਵੀ ਲਾਗੂ ਹੋਵੇ ਰਜਿਸਟਰ ਹੋਏ ਟਰੇਡ-ਮਾਰਕ ਮੰਨਿਆ" +" ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "ਹੋਰ ਨਤੀਜੇ ਵੇਖੋ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਲੁਕਾਓ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ਹੁਣੇ ਚੱਲੋ" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "ਤੱਕ ਚੱਲੋ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "ਤੱਕ ਪਹੁੰਚ" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "ਸ਼ੋਅ" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ਬੱਸਾਂ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ਟਰਾਮਾਂ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ਟਰੇਨਾਂ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "ਸਬ-ਵੇਅ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ਫੈਰੀ" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "ਹਵਾਈ-ਜਹਾਜ਼" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰੋ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "ਨਵੇਂ ਰੂਟ ਵਿੱਚ ਜੋੜੋ" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "ਦਿਸ਼ਾਵਾਂ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "ਪਸੰਦ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਗਾਓ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਜੋੜਨ ਲਈ ਜ਼ੂਮ ਇਨ ਕਰੋ!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਟਾਈਲ ਢਾਂਚੇ ਨੂੰ ਲੱਭਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML ਡੌਕੂਮੈਂਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ਲੋੜੀਂਦੇ ਗੁਣ ਗੁੰਮ ਹਨ" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ਐਲੀਮੈਂਟ ਨੂੰ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "ਲੋਕਲ ਟਾਈਲ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚੇ ਲਈ ਮਾਰਗ" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "ਲੋਕਲ ਟਾਈਟਲ ਡਾਇਰੈਕਟਰੀ ਲਈ ਟਾਈਲ ਆਕਾਰ" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜ਼ਨ ਵੇਖੋ" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "ਨੈੱਟਵਰਕ ਉਪਲਬਟਾ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ਖਾਤੇ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ਸਥਾਨ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੇਸਬੁੱਕ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੋਰਸਕਿਉਰ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ਲਈ ਚੈਕ ਇਨ" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ਵਿੱਚ ਚੈਕ ਇਨ ਕਰਨ ਲਈ ਚੋਣਵਾਂ ਸੁਨੇਹਾ ਲਿਖੋ।" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "ਸਮਾਜਿਕ ਸੇਵਾ ਵਿੱਚ “%s“ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "ਇਹ ਟਿਕਾਣੇ ਵਿੱਚ ਚੈਕ-ਇਨ ਕਰਨ ਲਈ ਢੁੱਕਵਾਂ ਸਥਾਨ ਲੱਭਿਆ ਨੀਹਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"ਸਨਦ ਦੀ ਮਿਆਦ ਪੁੱਗੀ, ਕਿਰਪਾ ਕਰਕੇ ਸਾਇਨ ਇਨ ਕਰਨ ਤੇ ਇਹ ਖਾਤੇ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਆਨਲਾਈਨ" +" ਖਾਤਿਆਂ ਨੂੰ " +"ਖੋਲ੍ਹੋ।" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "ਕੁਝ ਵੀ ਨਹੀਂ ਲੱਭਿਆ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਜੋੜਿਆ ਗਿਆ, ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਅਤੇ ਖੋਜ ਨਤੀਜਿਆਂ" +" ਵਿੱਚ ਆਉਣ ਲਈ ਕੁਝ " +"ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "ਨਕਸ਼ਾ %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "ਫਾਇਲ-ਸਿਸਟਮ ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ ਹੈ" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "ਤੁਹਾਡੇ ਕੋਲ ਉੱਥੇ ਸੰਭਾਲਣ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ਡਾਇਰੈਕਟਰੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ਕੋਈ ਫਾਇਲ-ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣਾ" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ਗਲਤ ਧੁਰੇ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ਪਾਰਸ ਕਰਨ ਦੀ ਗਲਤੀ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ਅਣਜਾਣ ਜੁਮੈਟਰੀ" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "ਰੂਟ ਬੇਨਤੀ ਫੇਲ੍ਹ ਹੋਈ।" + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "ਕੋਈ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "ਸ਼ੁਰੂ!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "ਸਾਰੀਆਂ ਪਰਤਾਂ ਫਾਈਲਾਂ" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "ਟਿਕਾਣਾ ਸੇਵਾ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" +"ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "ਗਨੋਮ ਲਈ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "ਕਾਪੀਰਾਈਟ © 2011 – 2021 Red Hat, Inc. ਅਤੇ ਗਨੋਮ ਨਕਸ਼ਾ ਡਿਵੈਲਪਰ" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "ਨਕਸ਼ੇ ਦਾ ਡਾਟਾ %s ਅਤੇ ਯੋਗਦਾਨੀਆਂ ਵਲੋਂ" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "ਨਕਸ਼ੇ ਲਈ ਨਾਂ %s ਵਲੋਂ ਦਿੱਤੇ" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "ਖੋਜ %s ਰਾਹੀਂ %s ਵਰਤ ਕੇ ਦਿੱਤੀ ਗਈ ਹੈ" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "ਪਰਤ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"ਤੁਸੀਂ %s MB ਆਕਾਰ ਦੀਆਂ ਫਾਇਲਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਵਾਲੇ ਹੋ। ਇਹਨਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਕੁਝ" +" ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "ਫਾਇਲ ਦੀ ਕਿਸਮ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "ਗਲਤ ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "ਕਾਮਯਾਬ" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "ਗਲਤ ਬੇਨਤੀ" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "ਆਬਜੈਕਟ ਨਹੀਂ ਲੱਭਿਆ" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "ਟਕਰਾ, ਕਿਸੇ ਨੇ ਹੁਣੇ ਹੀ ਆਬਜੈਕਟ ਨੂੰ ਸੋਧਿਆ ਹੈ" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "ਆਬਜੈਕਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "ਨਾ-ਮੌਜੂਦ ਬੱਚਿਆਂ ਲਈ ਢੰਗ ਜਾਂ ਸੰਬੰਧ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "ਅਧਿਕਾਰਿਤ ਨਾਂ। ਇਹ ਅਕਸਰ ਪ੍ਰਤੀਕਾਂ ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।" + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "ਪਤਾ" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "ਵੈੱਬਸਾਈਟ" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "ਇਹ ਵਾਜਬ URL ਨਹੀਂ ਹੈ। http:// ਜਾਂ https:// ਨੂੰ ਜੋੜਨਾ ਯਕੀਨੀ ਬਣਾਓ।" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"ਅਧਿਕਾਰਿਤ ਵੈੱਬਸਾਈਟ ਹੈ। URL ਦੇ ਸਭ ਤੋਂ ਮੁੱਢਲੇ ਰੂਪ ਨੂੰ ਵਰਤ ਕੇ ਵੇਖੋ ਜਿਵੇਂ" +" http://example.com/index." +"html ਦੀ ਬਜਾਏ http://example.com" + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "ਫ਼ੋਨ" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"ਫ਼ੋਨ ਨੰਬਰ। ਕੌਮਾਂਤਰੀ ਫਾਰਮੈਟ ਵਰਤੋਂ, ਜੋ ਕਿ + ਚਿੰਨ੍ਹ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਲੋਕਲ" +" ਪਰਦੇਦਾਰੀ ਕਨੂੰਨਾਂ ਬਾਰੇ " +"ਖਿਆਲ ਰੱਖੋ, ਖਾਸ ਕਰਕੇ ਪ੍ਰਾਈਵੇਟ ਫ਼ੋਨ ਨੰਬਰਾਂ ਬਾਰੇ।" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "ਵਿਕਿਪੀਡਿਆ" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"ਵਰਤੇ ਫਾਰਮੈਟ ਵਿੱਚ ਭਾਸ਼ਾ ਕੋਡ ਤੇ ਲੇਖ ਸਿਰਲੇਖ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਵੇਂ ਕਿ “en:Article" +" title”।" + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "ਫਾਰਮ ਉੱਤੇ ਮਦਦ ਲਈ ਲੇਬਲ ਵਿੱਚ ਲਿੰਕ ਵੇਖੋ।" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "ਆਬਾਦੀ" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "ਉਚਾਈ" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ਸਮੁੰਦਰੀ ਤਲ ਤੋਂ ਉੱਤੇ ਉਚਾਈ ਦਾ ਬਿੰਦੂ ਮੀਟਰਾਂ ਵਿੱਚ ਹੈ।" + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "ਸੀਮਿਤ" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "ਨਿਯਤ ਕੀਤਾ" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "ਟਰਮੀਨਲ" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "ਸੇਵਾ" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "ਧਰਮ" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "ਅਨੀਮੀਸਮ" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "ਬਾਹਾਈ" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "ਬੁੱਧ" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "ਕਾਓ ਦਾਈ" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "ਇਸਾਈ" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "ਕਨਫਿਊਸ਼ੀਵਾਦ" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "ਹਿੰਦੂ" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "ਜੈਨ" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "ਯਹੂਦੀ" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "ਇਸਲਾਮ" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "ਕਈ ਧਰਮ" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "ਪਾਗਾਨੀਸਮ" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "ਪਾਸਟਾਫਾਰਿਨੇਮ" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "ਸਾਇੰਸਟੋਲੋਜੀ" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "ਸ਼ਿਨਟੋ" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "ਸਿੱਖੀ" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "ਅਧਿਆਤਮਵਾਦ" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "ਤਾਓਵਾਦ" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "ਯੂਨਿਟਾਰਿਅਨ ਯੂਨੀਵਰਸਲਿਮ" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "ਵੂਡੂ" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "ਯਾਜ਼ਿਡੀਸਮ" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "ਪਾਰਸੀ" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "ਗੁਸਲਖਾਨੇ" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "ਨੋਟ" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"ਜਾਣਕਾਰੀ ਹੋਰ ਨਕਸ਼ੇ ਵਾਲਿਆਂ ਨੂੰ ਭਾਗਾਂ, ਲੇਖਕ ਦੇ ਮੌਕੇ ਜਦੋਂ ਇਹ ਬਣਾਈ ਸੀ ਜਾਂ ਹੋਰ" +" ਸੁਧਾਰ ਬਾਰੇ ਇਸ਼ਾਰਿਆਂ " +"ਬਾਰੇ ਅਸਪਸ਼ਟ ਜਾਣਕਾਰੀ ਦੇਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ।" + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "ਕਿਸਮ ਨੂੰ ਚੁਣੋ" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "ਮੁਕੰਮਲ" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "ਬੇਨਾਮ ਥਾਂ" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "ਜੀਓ URI ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "ਧੁਰੇ" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "ਦਰੁਸਤੀ" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "ਦਰੁਸਤੀ: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "ਫ਼ੋਨ ਨੰਬਰ" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "ਪਬਲਿਕ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "ਪਬਲਿਕ Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "ਤਾਰਾ ਰਾਹੀ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "ਵਰਤਣ ਲਈ ਕੰਪਿਊਟਰ ਉਪਲੱਬਧ ਹਨ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "ਇੰਟਰਨੈੱਟ ਸਹਾਇਕ ਉਪਲੱਬਧ ਹੈ" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "ਗੁਸਲਖ਼ਾਨੇ ਨਹੀਂ ਹਨ" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "ਗੁਸਲਖ਼ਾਨੇ ਮੌਜੂਦ ਹਨ" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚ ਸੀਮਿਤ ਹੈ" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚ ਨਹੀਂ ਹੈ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "ਵੀਲ੍ਹ-ਚੇਅਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਨਿਯਤ ਹੈ" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "ਧਰਮ:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਥਾਂ ਨਹੀਂ ਲੱਭੀ" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URL ਵਿੱਚ ਦਿੱਤੇ ਧੁਰੇ ਵਾਜਬ ਨਹੀਂ ਹਨ" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s ਤੋਂ %s ਤੱਕ" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਲਈ ਨਕਸ਼ਿਆਂ ਦੇ ਨਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "ਜੇ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲੰਮਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ ਤਾਂ ਤੁਸੀਂ ਪਰਿੰਟ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹੋ" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਨੂੰ ਵਿਚੇ ਛੱਡੋ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਜੋੜੋ" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਹਟਾਓ" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "ਉਲਟ ਰਾਹ" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s ਤੋਂ %s ਜੋੜੋ" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URL ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "ਅੰਦਾਜ਼ਨ ਸਮਾਂ: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s ਵਲੋਂ ਸਫ਼ਰਨਾਮਾ ਦਿੱਤਾ" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s ਵਜੇ ਸ਼ੁਰੂ ਕਰੋ" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "ਸ਼ੁਰੂ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s ਤੁਰੋ" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s ਵਜੇ ਪਹੁੰਚੋ" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "ਪਹੁੰਚ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਦਿਖਾਓ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਲੁਕਾਓ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "ਸਵਖਤੇ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "ਬਾਦ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "ਕੋਈ ਸਵਖਤੇ ਦਾ ਬਦਲ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "ਕੋਈ ਬਦਲਵਾਂ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਸਮਾਂ-ਸਾਰਣੀ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਪੂਰਕ ਨਹੀਂ ਲੱਭਿਆ।" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s ਮਿੰਟ" +msgstr[1] "%s ਮਿੰਟ" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ਘੰਟਾ" +msgstr[1] "%s ਘੰਟੇ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ਘੰਟਾ" +msgstr[1] "%s:%s ਘੰਟੇ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "ਚੌਵੀਂ ਘੰਟੇ" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "ਸੂਰਜ ਚੜ੍ਹਨ ਤੋਂ ਸੂਰਜ ਡੁੱਬਣ ਤੱਕ" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "ਹਰ ਰੋਜ਼" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "ਪਬਲਿਕ ਛੁੱਟੀਆਂ" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "ਸਕੂਲੀ ਛੁੱਟੀਆਂ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ਖੁੱਲ੍ਹਾ ਨਹੀਂ" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "ਠੀਕ-ਠੀਕ" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ਘੰ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ਘੰ %s ਮਿੰਟ" +msgstr[1] "%s ਘੰ %s ਮਿੰਟ" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s ਮਿੰਟ" +msgstr[1] "%s ਮਿੰਟ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s ਕਿਮੀ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s ਮੀ" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s ਮੀਲ" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ਫੁੱਟ" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "ਇਹ ਪਲੱਗਇਨ ਨਵੀਂ ਪਹੁੰਚ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s ਉੱਤੇ ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr " %s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "ਸੱਜ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "ਥੋੜ੍ਹਾ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "ਗੋਲ ਚੱਕਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ ਅਤੇ %s ਉੱਤੇ ਉਤਰ ਜਾਓ" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "ਖੱਬੀ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#~ msgid "Check in here" +#~ msgstr "ਇੱਥੇ ਚੈਕ ਇਨ ਕਰੋ" + +#~| msgid "Don't have an account?" +#~ msgid "Don’t have an account?" +#~ msgstr "ਖਾਤਾ ਨਹੀਂ ਹੈ?" + +#~ msgid "Show more information" +#~ msgstr "ਹੋਰ ਜਾਣਕਾਰੀ ਵੇਖੋ" + +#~ msgid "Population:" +#~ msgstr "ਆਬਾਦੀ:" + +#~ msgid "Altitude:" +#~ msgstr "ਉਚਾਈ:" + +#~ msgid "Opening hours:" +#~ msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ:" + +#~ msgid "Internet access:" +#~ msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ:" + +#~ msgid "Toilets:" +#~ msgstr "ਗੁਸਲਖਾਨੇ:" + +#~ msgid "Wheelchair access:" +#~ msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ:" + +#~ msgid "Phone:" +#~ msgstr "ਫ਼ੋਨ:" + +#~ msgid "yes" +#~ msgstr "ਹਾਂ" + +#~ msgid "limited" +#~ msgstr "ਸੀਮਿਤ" + +#~ msgid "no" +#~ msgstr "ਨਹੀਂ" + +#~ msgid "designated" +#~ msgstr "ਮਕਸਦ" + +#~| msgid "OpenStreetMap Account" +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL ਵਾਜਬ ਨਹੀਂ ਹੈ" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ਤਾਰ ਵਾਲਾ" + +#~ msgid "terminal" +#~ msgstr "ਟਰਮੀਨਲ" + +#~ msgid "service" +#~ msgstr "ਸੇਵਾ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f ਮਿੰਟ" + +#~ msgid "%f s" +#~ msgstr "%f ਸ" + +#~ msgid "Quit" +#~ msgstr "ਬਾਹਰ" + +#~ msgid "Load Map Layer" +#~ msgstr "ਨਕਸ਼ੇ ਦੀ ਪਰਤ ਨੂੰ ਲੋਡ ਕਰੋ" + +#~ msgid "Open with another application" +#~ msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਖੋਲ੍ਹੋ" + +#~ msgid "Press enter to search" +#~ msgstr "ਖੋਜ ਕਰਨ ਲਈ ਐਂਟਰ ਦਬਾਉ" + +#~ msgid "OK" +#~ msgstr "ਠੀਕ ਹੈ" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f ਮੀਲ" + +#~ msgid "%f ft" +#~ msgstr "%f ਫੁੱਟ" + +#~ msgid "Country code: %s" +#~ msgstr "ਦੇਸ਼ ਕੋਡ: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਤੇ ਸ਼ੁੱਧਤਾ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ (ਲੰਬਕਾਰ ਤੇ ਵਿਸਥਾਰ ਡਿਗਰੀਆਂ ਵਿੱਚ) ਤੇ ਸ਼ੁੱਧਤਾ (ਮੀਟਰਾਂ ਵਿੱਚ)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ਯੂਜ਼ਰ ਦੇ ਆਖਰੀ ਜਾਣੇ ਟਿਕਾਣੇ ਦਾ ਵੇਰਵਾ" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ਕੀ ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਯੂਜ਼ਰ ਵਲੋਂ ਖੁਦ ਤਹਿ ਕੀਤਾ ਸੀ।" + +#~ msgid "I’m here!" +#~ msgstr "ਮੈਂ ਇੱਥੇ ਹਾਂ!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "ਸੈਟੇਲਾਈਟ" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..a3f9a97d --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1907 @@ +# Polish translation for gnome-maps. +# Copyright © 2013-2021 the gnome-maps authors. +# This file is distributed under the same license as the gnome-maps package. +# Piotr Drąg , 2013-2021. +# Paweł Żołnowski , 2014-2015. +# Aviary.pl , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-14 18:05+0100\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Wyszukiwanie miejsc na świecie" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapy zapewniają szybki dostęp do map całego świata oraz umożliwiają szybkie " +"wyszukiwanie miejsc według miast i ulic. Pomogą również ustalić miejsce " +"spotkania z przyjaciółmi." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy udostępniane są przez projekt OpenStreetMap, który jest tworzony przez " +"setki tysięcy ludzi z całego świata." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Można nawet wyszukiwać konkretne rodzaje miejsc, takie jak „Puby w pobliżu " +"ulicy Marszałkowskiej, Warszawa” lub „Hotspot Wi-Fi na Rynku, Wrocław”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Prosty program do wyświetlania map" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "" +"Mapy;Mapa;Satelita;Satelitarna;Położenie;Lokalizacja;Współrzędne;Geografia;" +"Geograficzne;GPS;Ulica;Miasto;Województwo;Kraj;Państwo;Dojazd;Gdzie jestem;" +"Jak dojechać;Jak dojadę;Trasa;Trasy;Wycieczka;Wycieczki;Planowanie;Autobusy;" +"Tramwaje;Pociągi;Metro;Promy;OpenStreetMap;OpenTripPlanner;Foursquare;" +"Meldowanie;Zamelduj się;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umożliwia wyświetlenie położenia użytkownika na mapie." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ostatnio wyświetlane położenie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Współrzędne ostatnio wyświetlanego położenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "powiększenie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Poziom powiększenia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ wyświetlanej mapy (zwykła, satelitarna itp.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Rozmiar okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Rozmiar okna (szerokość i wysokość)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Położenie okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Położenie okna (na osi X i Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maksymalizacja okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stan maksymalizacji okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksymalna liczba wyników wyszukiwania" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksymalna liczba wyników wyszukiwania geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Liczba ostatnich miejsc do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Liczba ostatnio odwiedzonych miejsc do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Liczba ostatnich tras do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Liczba ostatnio odwiedzonych tras do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Facebook dotyczące meldowania" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Facebook dotyczące meldowania. " +"Możliwe wartości: „EVERYONE” (wszyscy), „FRIENDS_OF_FRIENDS” (znajomi " +"znajomych), „ALL_FRIENDS” (wszyscy znajomi) lub „SELF” (tylko ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Foursquare dotyczące meldowania" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Foursquare dotyczące " +"meldowania. Możliwe wartości to: „public” (publiczne), " +"„followers” (obserwujący) lub „private” (prywatne)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako post na koncie " +"w serwisie Facebook powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako tweet na koncie " +"w serwisie Twitter powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nazwa użytkownika lub adres e-mail w serwisie OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Czy użytkownik jest zalogowany, aby modyfikować dane OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Ostatnio używany typ transportu dla tras" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Tryb nocny" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Czy program jest w trybie nocnym." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hybrydowe kafle satelitarne" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Czy kafle satelitarne mają używać stylu hybrydowego (z etykietami)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Widoczność" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Udostępnij w serwisie Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Udostępnij w serwisie Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anuluj" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Za_melduj się" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Wszyscy" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Znajomi znajomych" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tylko znajomi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tylko ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publiczne" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Obserwujący" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Prywatne" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa stąd" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj cel pośredni" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa dotąd" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co tutaj jest?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopiuj położenie" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj do serwisu OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksport widoku" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Wy_eksportuj" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Dołączenie tras i znaczników" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Przechodzi do obecnego położenia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Wybiera rodzaj mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Pomniejsza" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Powiększa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Włącza planowanie trasy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Włącza ulubione" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Drukuje trasę" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ogólne" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Wyświetlenie skrótów" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Wyszukiwanie" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Przełączenie planowania trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Wydrukowanie trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zakończenie działania" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otwarcie menu głównego" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Widok mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Powiększenie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pomniejszenie" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Przełączenie skali" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Przejście do obecnego położenia" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Przełączenie na widok mapy" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Przełączenie na widok satelitarny" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etykiety" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otwórz warstwę figur…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Włączenie usług położenia umożliwia odnalezienie bieżącego położenia" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anuluj" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ustawienia położenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Tryb nocny" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ustaw konto serwisu OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Wyeksportuj jako obraz" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programie" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otwórz menu główne" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapy są w trybie offline." + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Nie wykryto połączenia z Internetem, które jest potrzebne do prawidłowego " +"działania Map." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Proszę sprawdzić ustawienia połączenia oraz pośrednika." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto serwisu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Zalogowanie umożliwia modyfikowanie " +"map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Można pomóc ulepszyć mapę za pomocą\n" +"konta serwisu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Hasło" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zarejestruj się" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Zaloguj się" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"To nie zadziałało. Proszę spróbować ponownie lub przejść do serwisu\n" +"OpenStreetMap, aby przywrócić hasło." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kod weryfikacyjny się nie zgadza. Proszę spróbować ponownie." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Proszę podać kod weryfikacji widoczny powyżej" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Weryfikuj" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Zalogowano" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Konto serwisu OpenStreetMap jest aktywne." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Wyloguj się" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numer domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kod pocztowy" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miasto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brak" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentarz" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmiany mapy będą widoczne na wszystkich mapach\n" +"używających danych serwisu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Ostatnio używane" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modyfikacja w serwisie OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Dalej" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Brak wyników" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Wystąpił błąd" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Przeciągnięcie zmienia kolejność trasy" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otwarcie położenia" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Skopiuj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Wyślij do…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Zamelduj się…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otwórz" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Przełącza widoczne" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Wyszukiwanie trasy za pomocą oprogramowania GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Trasy transportu publicznego są dostarczane przez zewnętrzne serwisy.\n" +"Projekt GNOME nie gwarantuje prawidłowości wyświetlanych rozkładów.\n" +"Proszę zauważyć, że część dostawców może nie podawać wszystkich dostępnych\n" +"środków transportu, np. krajowy dostawca może nie podawać lotów, a lokalny\n" +"może nie podawać pociągów regionalnych.\n" +"Widoczne nazwy i marki są zastrzeżonymi znakami towarowymi ich właścicieli." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Wyświetl więcej wyników" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ukrywa przystanki pośrednie i informacje" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Wyświetla przystanki pośrednie i informacje" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Wyjście teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Wyjście przed" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Przybycie przed" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Wyświetlanie" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramwaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Pociągi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Promy" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Loty" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Udostępnia położenie" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaje do nowej trasy" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Wskazówki dojazdu" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Oznacza jako ulubione" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modyfikuje w serwisie OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Należy powiększyć, aby dodać położenie." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Powiększ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Odnalezienie struktury kafli w katalogu się nie powiodło" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Przetworzenie dokumentu XML się nie powiodło" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Brak wymaganych atrybutów" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nie można odnaleźć elementu OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Ścieżka do lokalnej struktury katalogów kafli" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Rozmiar kafli dla katalogu lokalnych kafli" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Wyświetla wersję programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignoruje dostępność sieci" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[PLIK…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Wybór konta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Wczytywanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Wybór miejsca" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Facebook. Proszę " +"wybrać miejsce z listy." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Foursquare. Proszę " +"wybrać miejsce z listy." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Zameldowanie w „%s”" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Można napisać wiadomość związaną z zameldowaniem się w „%s”." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nie odnaleziono „%s” w serwisie społecznościowym" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "W tym położeniu nie odnaleziono odpowiedniego miejsca do zameldowania" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uwierzytelnienie wygasło. Proszę otworzyć Konta online, aby zalogować się " +"lub włączyć to konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nic tu nie odnaleziono." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Dodano położenie do mapy. Proszę zauważyć, że może minąć trochę czasu, zanim " +"pojawi się ono na mapie i w wynikach wyszukiwania." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa dla %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "System plików jest tylko do odczytu" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Brak uprawnień do zapisywania w tym miejscu" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalog nie istnieje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie podano nazwy pliku" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie można wyeksportować widoku" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Obecne położenie" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nieprawidłowe współrzędne" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "błąd przetwarzania" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nieznana geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Żądanie trasy się nie powiodło." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nie odnaleziono żadnej trasy." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Wszystkie pliki warstw" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Połączenie z usługą położenia się nie powiodło" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Piotr Drąg , 2013-2021\n" +"Paweł Żołnowski , 2014-2015\n" +"Aviary.pl , 2013-2021" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Mapy dla środowiska GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011-2021 Red Hat, Inc. i autorzy Map GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dane mapy autorstwa %s i współtwórców" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa dostarczana przez %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Funkcja wyszukiwania dostarczana przez %s za pomocą %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Otwarcie warstwy się nie powiodło" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Kontynuować?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Zostaną otwarte pliki o całkowitym rozmiarze %s MB. Wczytanie ich może " +"potrwać trochę czasu." + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Typ pliku jest nieobsługiwany" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Otwarcie adresu GeoURI się nie powiodło" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Niepoprawna nazwa użytkownika lub hasło" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Powodzenie" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Błędne żądanie" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nie odnaleziono obiektu" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, ktoś inny właśnie zmodyfikował obiekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Usunięto obiekt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Droga lub związek odnosi się do nieistniejących elementów potomnych" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nazwa" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficjalna nazwa. Zwykle pojawia się na znakach." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Strona WWW" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"To nie jest prawidłowy adres URL. Proszę się upewnić, że zawiera on http:// " +"lub https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficjalna strona WWW. Proszę używać najbardziej podstawowej formy adresu " +"URL, tzn. „http://example.com” zamiast „http://example.com/index.html”." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numer telefonu. Proszę używać formatu międzynarodowego, zaczynając znakiem " +"„+”. Proszę przestrzegać lokalnych praw do prywatności, zwłaszcza w stosunku " +"do prywatnych numerów telefonów." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Używany format powinien zawierać kod języka i tytuł artykułu, np. „pl:Tytuł " +"artykułu”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Godziny otwarcia" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "" +"Więcej informacji o formacie znajduje się pod odnośnikiem na etykiecie." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Liczba mieszkańców" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Wysokość" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Wyniesienie (wysokość ponad poziomem morza) miejsca w metrach." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Dostęp dla osób na wózku" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Tak" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Ograniczony" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Wyznaczony" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Dostęp do Internetu" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Przewodowy" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Na miejscu" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Obsługa" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religia" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahaizm" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddyzm" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Chrześcijaństwo" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfucjanizm" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Dźinizm" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaizm" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Wiele religii" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Pogaństwo" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianizm" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scjentologia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shintō" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhizm" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spirytualizm" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoizm" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Uniwersalizm unitariański" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jazydyzm" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zaratusztrianizm" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Uwaga" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Używane do informowania innych twórców map o nieoczywistych informacjach " +"o elemencie, intencjach autora przy jego tworzeniu lub wskazówkach na dalsze " +"ulepszenia." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodanie do serwisu OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Wybór typu" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Gotowe" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Miejsce bez nazwy" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Przetworzenie adresu URI Geo się nie powiodło" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Współrzędne" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Dokładność" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Dokładność: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numer telefonu" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Publiczny dostęp do Internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Brak dostępu do Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Publiczna sieć Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Przewodowy dostęp do Internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Dostępne komputery do użytku" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Dostępne wsparcie przy korzystaniu z Internetu" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Brak dostępnych toalet" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Dostępne toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Dostępne dla osób na wózku" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Ograniczony dostęp dla osób na wózku" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Brak dostępu dla osób na wózku" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Wyznaczone dla osób na wózku" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religia:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Nie odnaleziono tego miejsca w serwisie OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Współrzędne w adresie URL są nieprawidłowe" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Nieobsługiwany adres URL" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Z %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Wczytywanie mapy do wydrukowania" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Można przerwać drukowanie, jeśli trwa to za długo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Przerwij drukowanie" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaje położenie pośrednie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Usuwa położenie pośrednie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Odwraca trasę" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s do programu %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Otwarcie adresu URI się nie powiodło" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otwórz za pomocą „%s”" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "wczytanie pliku się nie powiodło" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Przybliżony czas: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Trasy dostarczane przez %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Początek w: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Początek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Przejście %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Przybycie do: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Przybycie" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wyświetla wskazówki" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ukrywa wskazówki" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Wczytaj wcześniejsze możliwości" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Wczytaj późniejsze możliwości" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nie odnaleziono wcześniejszych możliwości." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nie odnaleziono późniejszych możliwości." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nie odnaleziono rozkładu jazdy dla tej trasy." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nie odnaleziono dostawcy dla tej trasy." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s-%s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s godzina" +msgstr[1] "%s godziny" +msgstr[2] "%s godzin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s godzina" +msgstr[1] "%s∶%s godziny" +msgstr[2] "%s∶%s godzin" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Całą dobę" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od świtu do zmierzchu" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Codziennie" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Dni ustawowo wolne od pracy" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Wakacje/ferie szkolne" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "zamknięte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nieznana" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Dokładna" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s godz." + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s godz. %s min" +msgstr[1] "%s godz. %s min" +msgstr[2] "%s godz. %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta wtyczka nie obsługuje najpóźniejszego przybycia" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Kontynuuj na: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Kontynuuj" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skręć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Skręć w lewo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skręć lekko w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Skręć lekko w lewo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skręć gwałtownie w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Skręć gwałtownie w lewo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skręć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Skręć w prawo" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skręć lekko w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Skręć lekko w prawo" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skręć gwałtownie w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Skręć gwałtownie w prawo" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rondzie zjedź w: %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rondzie zjedź do: %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Wjedź na rondo" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Wejdź do windy i wysiądź na: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Wejdź do windy" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Zawróć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Zawróć w lewo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Zawróć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Zawróć w prawo" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..1f88796a --- /dev/null +++ b/po/pt.po @@ -0,0 +1,2046 @@ +# Portuguese translation for gnome-maps. +# Copyright © 2013, 2014 gnome-maps +# This file is distributed under the same license as the gnome-maps package. +# António Lima , 2013. +# Duarte Loreto , 2014. +# Tiago Santos , 2014 - 2016. +# Pedro Albuquerque , 2015. +# Bruno Ramalhete , 2016. +# Juliano Camargo , 2020. +# Juliano de Souza Camargo , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-24 19:11+0000\n" +"Last-Translator: Hugo Carvalho \n" +"Language-Team: Portuguese <>\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" +"X-Language: pt_PT\n" +"X-Source-Language: C\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas do GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontre lugares em todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"O Mapas dá-lhe acesso a mapas de todo o mundo. Permite que encontre " +"rapidamente o local que procura, procurando por uma cidade ou rua, ou " +"localizando um sítio para um encontro com um amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A aplicação Mapas utiliza a base de dados colaborativa OpenStreetMap, " +"construída por centenas de milhares de pessoas por todo o globo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Procure por tipos de localizações específicas, tais como “Bares perto da Rua " +"Augusta, Lisboa” ou “Hotéis perto de Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Uma aplicação simples para visualização de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;Rotas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que a sua localização seja colocada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a visualizar (ruas, satélite etc)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximização da janela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de procura" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de procura da busca geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de locais recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de locais recentemente visitados a armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas recentemente visitadas a armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Definição de privacidade para o Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Última definição de privacidade usada para o Facebook. Valores possíveis são " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Definição de privacidade para o Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última definição de privacidade usada para o Foursquare. Valores possíveis " +"são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Emissão do Foursquare para o Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como publicação na conta do Facebook " +"associada à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Emissão do Foursquare para o Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como tweet na conta do Twitter associada " +"à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de utilizador OpenStreetMap ou correio eletrónico" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se o utilizador iniciou sessão para editar dados no OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte utilizado para roteamento" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Se a aplicação está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utilizar vista aérea híbrida" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se a vista aérea deve utilizar estilo híbrido (com rótulos)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar no Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar no Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Inscrever" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Só amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Só eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar um destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que há aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar a localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar a vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir a rota e os marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ver a sua localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Escolher o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Reduzir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Ver os favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Procurar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ver escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir para a localização atual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Mudar para a vista de mapas" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Mudar para a vista de satélite" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Ver os rótulos" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camadas de mapa…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ligue os serviços de localização para saber onde está" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Definições de local" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar a conta OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atalhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca do Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "O Mapas está desligado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"O Mapas precisa de uma ligação à Internet ativa para funcionar corretamente, " +"mas não encontrou nenhuma." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verifique a sua ligação e definições de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie uma sessão para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa usando\n" +"uma conta OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correio eletrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Palavra-passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Inscrever-se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sessão" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, não resultou. Por favor, tente novamente ou visite\n" +"OpenStreetMap para repor a sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não correspondeu, por favor, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Insira o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessão iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A sua conta OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Terminar sessão" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Estrada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações ao mapa serão visíveis em todos os mapas\n" +"que utilizar dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recentemente utilizado" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Seguinte" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Sem resultados encontrados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Ocorreu um erro" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste-o para alterar a ordem em que aparece na rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "_Inscrever…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Mudar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Procura de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rotas de itinerários de transporte público são providas por serviços\n" +"de terceiros.\n" +"O GNOME não garante a idoneidade dos itinerários e programações expostas.\n" +"Note que alguns provedores podem não incluir todos os tipos de transportes,\n" +"ou seja, um provedor nacional pode não incluir linhas aéreas, e um provedor\n" +"local pode ignorar comboios regionais.\n" +"Nomes e marcas mostradas devem ser consideradas como registadas quando " +"aplicável." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Ver mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermediária e informação" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ver paradas intermediárias e informação" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir já" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partir às" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar às" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Ver" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ónibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Eléctricos" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Comboios" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Barcos" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Partilhar a localização" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direções" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para adicionar a localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falhou ao localizar estrutura de mosaico na pasta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falhou ao processar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributos requeridos em falta" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossível localizar o elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para a estrutura de pasta local de telas" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamanho da tela para o diretório local de telas" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Ver a versão da aplicação" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar a disponibilidade de rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO...|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "A carregar" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selecione um local" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Facebook. Por favor, " +"selecione outro na lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Foursquare. Por " +"favor, selecione outro na lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Inscrever-se em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para se inscrever em %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossível encontrar “%s” no serviço social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossível encontrar um local adequado para inscrição nesta localização" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor, abra as Contas online para iniciar " +"sessão e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Localização foi adicionada ao mapa, note que pode demorar um pouco antes de " +"mostrar no mapa e nos resultados pesquisados." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é só de leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Não tem permissão para gravar aí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Sem nome de ficheiro" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossível exportar a vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localização atual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenadas inválidas" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro de processamento" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Pedido de rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Rota não encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Iniciar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de camada" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Falha ao ligar-se ao serviço de localização" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"António Lima \n" +"Bruno Ramalhete \n" +"Pedro Albuquerque \n" +"Tiago Santos \n" +"Juliano de Souza Camargo \n" +"Hugo Carvalho " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Uma aplicação de mapas para o GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Direitos de autor © 2011 – 2021 Red Hat, Inc. e autores do Mapas do GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados cartográficos de %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Telas de mapas fornecida por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Procura fornecida por %s utilizando %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Deseja continuar?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Está prestes a abrir ficheiros com um tamanho total de %s MB. Isto pode " +"demorar algum tempo a carregar" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Tipo de ficheiro não suportado" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Falha ao abrir GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Utilizador ou palavra-passe incorretos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Mau pedido" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O objeto foi eliminado" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relação referem-se a filho não existente" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece nos sinais." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Página Web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Isto não é um URL válido. Certifique-se de incluir http:// ou https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A página Web oficial. Tente utilizar a forma mais básica do URL p.ex. http://" +"exemplo.com em vez de http://exemplo.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Utilize o formato internacional, começando com o sinal " +"+. Tenha atenção às leis locais de privacidade, sobretudo para números de " +"telefone privados." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir um código de linguagem e um título de " +"artigo tal como \"pt:Título do artigo\"." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Veja a ligação na etiqueta para ajuda no formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Acesso para cadeiras de rodas" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Acesso à Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Ligado" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confusionismo" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jinismo" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taioísmo" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Universalismo Unitário" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Casas de banho" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Notas" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação utilizada para informar outros contribuidores acerca de " +"informações não tão óbvias de elementos, a intenção do autor ao criá-los, ou " +"dicas para aperfeiçoamentos." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Selecione o tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Sítio não nomeado" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falha ao processar URI Geo" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precisão" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Número da telefone" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Acesso público à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Sem acesso à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Acesso à Internet por cabo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computadores disponíveis para utilização" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistência na Internet disponível" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Sem casas de banho disponíveis" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Casas de banho disponíveis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Acessível a cadeiras de rodas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Acesso limitado a cadeiras de rodas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Não acessível a cadeira de rodas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Designado para utilizadores de cadeiras de rodas" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religião:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Sítio não encontrado no OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Coordenadas no URL não são válidas" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL não suportado" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s para %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "A carregar telas de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impressão se isto demorar demasiado" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adicionar um destino intermediário" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remover o destino intermediário" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverter a rota" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s com %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falha ao abrir URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falha ao carregar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerário fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partir de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partir" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegar à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Ver as instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar as instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar as alternativas antecedentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar as alternativas subsequentes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Sem alternativas antecedentes." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Sem alternativas subsequentes." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário encontrado nesta rota." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nenhum fornecedor encontrado nesta rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 horas" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Do nascer ao pôr do Sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Todos os dias" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Feriados públicos" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "fechado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconhecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exata" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Esta extensão não suporta a última chegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire curva ligeira à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Vire curva ligeira à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire curva apertada à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Vire curva apertada à esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire curva ligeira à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Vire curva ligeira à direita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire curva apertada à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Vire curva apertada à direita" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotunda, pegue a saída %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotunda, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Tome a rotunda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tome o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Tome o elevador" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça uma curva em u à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faça uma curva em u à esquerda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça uma curva em u à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faça uma curva em u à direita em %s" + +#~ msgid "Check in here" +#~ msgstr "Inscrever aqui" + +#~ msgid "Show more information" +#~ msgstr "Mostrar mais informação" + +#~ msgid "Population:" +#~ msgstr "População:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horário de funcionamento:" + +#~ msgid "Internet access:" +#~ msgstr "Acesso à Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Casas de banho:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acesso para cadeiras de rodas:" + +#~ msgid "Phone:" +#~ msgstr "Telefone:" + +#~ msgid "yes" +#~ msgstr "sim" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "não" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "O URL OpenStreetMap não é válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s - %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s - %s - %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s - %s" + +#~ msgid "wired" +#~ msgstr "ligado" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviço" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Encontrar uma Rota" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada de mapa" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outra aplicação" + +#~ msgid "Don't have an account?" +#~ msgstr "Não tem uma conta?" + +#~ msgid "Press enter to search" +#~ msgstr "Prima Enter para procurar" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f s" +#~ msgstr "%f seg" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso para deficientes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao processar ficheiro GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última localização conhecida e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última localização conhecida (latitude e longitude em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição da última localização conhecida do utilizador." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Se a última localização conhecida foi definida manualmente pelo " +#~ "utilizador ou não." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..bf808f5f --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,2111 @@ +# Brazilian Portuguese translation for gnome-maps. +# Copyright (C) 2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Georges Basile Stavracas Neto , 2013. +# Fábio Nogueira , 2016. +# Artur de Aquino Morais , 2016. +# Antonio Fernandes C. Neto , 2016. +# Gustavo Marques , 2016. +# Enrico Nicoletto , 2013-2016, 2018. +# Jamerson Tiossi , 2017. +# Henrique Roberto Gattermann Mittelstaedt , 2020. +# Bruno Lopes , 2018, 2020. +# Rafael Fontenelle , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-17 23:36-0300\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" +"X-Generator: Gtranslator 3.38.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapas" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontrar lugares ao redor do mundo" + +# O último 'ou' dá sentido de inclusão, pois ambos são opções válidas.--Enrico +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas oferece a você acesso rápido a mapas ao redor de todo o mundo. Permite " +"que você localize rapidamente o local que deseja encontrar através da " +"pesquisa por uma cidade ou rua e a encontrar um local para encontrar um " +"amigo(a)." + +# Contribuições pois os usuários inserem os dados no banco de dados e não criam as tabelas deste --Enrico. +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa o banco de dados colaborativo do OpenStreetMap, com contribuições " +"de centenas de milhares de pessoas ao redor do planeta." + +# Para assegurar a fidelidade do comando, a alternativa brasileira (Fernando de Noronha) foi pesquisada no serviço e por resultado satisfatório, acrescentada por mim neste aplicativo --Enrico +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Você também pode pesquisar por tipos específicos de localizações, como " +"“Praias perto de Fernando de Noronha” ou “Universidade perto de " +"Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Um simples aplicativo de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que sua localização seja mostrada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas do última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo do mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo do mapa para exibir (rua, aérea etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "A posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "O estado de janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de pesquisa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados da pesquisa por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas visitadas recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configurações de privacidade de check-in do Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultima configuração de privacidade de check-in usada no Facebook. Valores " +"possíveis são: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configurações de privacidade de check-in do quadrante" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultima configuração de privacidade de check-in do quadrante usada. Valores " +"possíveis são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Publicação no Facebook de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um postagem na conta " +"Facebook associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Publicação no Twitter de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um tweet na conta " +"Twitter associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuário do OpenStreetMap ou endereço de e-mail" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuário ingressou para editar dados do OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para rotas" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Se o aplicativo está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usar blocos aéreos híbridos" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se blocos aéreos devem usar estilo híbrido (com etiquetas)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Postar no Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Postar no Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Fazer c_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Todos" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amigos de amigos" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Somente amigos" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Somente eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota a partir daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que está aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar visão" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Incluir rota e marcações" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Escolhe o tipo do mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Reduz" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Ativa favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir rota" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pesquisa" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abre o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visão de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Alterna a escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Muda para a visão de rua" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Muda para a visão aérea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abre a camada" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camada…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Habilite o serviço de localização para encontrar sua localização" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurações de localização" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar conta do OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "A_talhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre o Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necessita de uma conexão de internet ativa para funcionar " +"propriamente, mas nenhuma pode ser encontrada." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verifique sua conexão e as configurações de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ingresse para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa, usando uma\n" +"conta do OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senha" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Cadastrar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Entrar" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, mas isto não funcionou. Tente novamente ou visite\n" +"o OpenStreetMap para reiniciar sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não combina, por gentileza, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Digite o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingressado" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Sua conta do OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sair" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rua" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da residência" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações no aplicativo Mapas serão visíveis em\n" +"todos os mapas que usarem dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Próximo" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Um erro foi encontrado" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste para alterar a ordem da rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camada" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Tornar visível" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pesquisa de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerários de rotas para trânsito público é fornecido por serviços\n" +"de terceiros.\n" +"GNOME não pode garantir que os itinerários e agendamentos mostrados estejam\n" +"corretos. Observe que alguns fornecedores podem não incluir todos os modos\n" +"de transporte disponíveis, por exemplo, um fornecedor nacional pode não\n" +"incluir companhias aéreas e um fornecedor local pode perder trens regionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar informações e paradas intermediárias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar informações e paradas intermediárias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sair agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sair por" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ônibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Bondes" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrô" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Balsas" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Compartilhar localização" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Instruções" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplie para adicionar uma localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falha ao pesquisar estrutura de blocos no diretório" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falha ao analisar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltando atributos necessários" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Não foi possível localizar elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para um diretório local de estrutura de blocos" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamanho de bloco para o diretório local de blocos" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra a versão do programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora a disponibilidade de rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ARQUIVO…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Carregando" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Escolha um local" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas não conseguiu sua localização para dar check-in no Facebook. Por favor " +"selecione um local da lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas não consegue encontrar o local para dar check-in no Foursquare. Por " +"favor selecione um local da lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Fazer check-in em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para fazer check-in em %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Não foi possível localizar “%s” no serviço social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Não foi possível encontrar um local apropriado para fazer check-in nessa " +"localização" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor abra o Contas Online, para autenticar-se " +"e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada foi encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A localização foi adicionada ao mapa; note que pode levar um tempo antes " +"dela ser mostrada no mapa e em resultados de pesquisa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de arquivos é somente leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Você não possui permissão para salvar lá" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenhum nome de arquivo foi especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Não foi possível exportar a visão" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localização Atual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada inválida" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "erro de análise" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Solicitação da rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenhuma rota encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Começar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todas os arquivos de camadas" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Falha ao conectar ao serviço de localização" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Enrico Nicoletto \n" +"Fábio Nogueira \n" +"Rafael Fontenelle \n" +"Henrique Roberto Gattermann Mittelstaedt \n" +"Bruno Lopes " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Um aplicativo de mapas para o GNOME" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e os autores do GNOME Mapas" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados de mapas por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blocos de mapas fornecidos por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pesquisa fornecida por %s usando %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Você deseja continuar?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Você está prestes a abrir arquivos com um tamanho total de %s MB. Isso pode " +"levar um bom tempo para carregar" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Não há suporte ao tipo de arquivo" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Falha ao analisar o URI geo" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome de usuário ou senha incorretos" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Solicitação inválida" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "O objeto foi excluído" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relacionamento faz referência a filho não existente" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece em sinais." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Site" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Este não é um URL válido. Certifique-se de incluir http:// ou https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O site oficial. Tente usar o formulário mais básico de um URL i.e. http://" +"exemplo.com.br em vez de http://exemplo.com.br/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Use o formato internacional, começando com um sinal de " +"+. Cuidado com as leis de privacidade locais, especialmente para números de " +"telefone privado." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir o código do idioma e o título do artigo " +"como “pt:Título do artigo”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Veja o link na etiqueta para obter ajuda sobre o formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Acesso a cadeirantes" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Acesso à Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Cabeada" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islã" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Espiritismo" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitário Universalismo" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Vodu" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Banheiros" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação usada para informar outros mapeadores sobre informações não " +"óbvias sobre um elemento, a intenção do autor ao criá-la ou dicas para " +"melhorias posteriores." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Selecione um tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Concluído" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Lugar sem nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falha ao analisar o URI geo" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Precisão" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Número do telefone" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Acesso Público à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Sem acesso à internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi Público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Acesso à internet cabeada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computadores disponíveis para uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistência de internet disponível" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Sem banheiros disponíveis" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Banheiros disponíveis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Acessível a cadeirantes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Acesso limitado a cadeirantes" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Não acessível a cadeirantes" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Designado para cadeirantes" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religião:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar não encontrado no OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL não são válidas" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Não há suporte à URL" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s até %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Carregando mosaicos de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Você pode abortar a impressão se isso leva muito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adiciona via localização" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via localização" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rota reversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s para %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falha ao abrir a URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falha ao carregar arquivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerários fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Início em %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Início" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegada em %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenhuma alternativa anterior encontrada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenhuma alternativa posterior encontrada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário localizado para essa rota." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nenhum provedor localizado para essa rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Em volta do relógio" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Do nascer até o pôr do sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Todo dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Feriados públicos" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "não abrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconhecido" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exato" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este plugin não tem suporte a chegada mais recente" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire ligeiramente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Vire ligeiramente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire acentuadamente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Vire acentuadamente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire ligeiramente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Vire ligeiramente à direita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire acentuadamente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Vire acentuadamente à direita" + +# %s aqui é um número -- Rafael +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na rotatória, pegue a %sª saída" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na rotatória, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Pegue a rotatória" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Pegue o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Pegue o elevador" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça um retorno em U à esquerda para %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faça um retorno em U à esquerda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça um retorno em U à direita para %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faça um retorno em U à direita" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "A URL do OpenStreetMap não é válida" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Encontrar uma rota" + +#~ msgid "Check in here" +#~ msgstr "Fazer check-in aqui" + +#~ msgid "Show more information" +#~ msgstr "Mostrar mais informação" + +#~ msgid "Population:" +#~ msgstr "População:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horário de funcionamento:" + +#~ msgid "Internet access:" +#~ msgstr "Acesso à Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Banheiros:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acesso a cadeirantes:" + +#~ msgid "Phone:" +#~ msgstr "Telefone:" + +#~ msgid "yes" +#~ msgstr "sim" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "não" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "wired" +#~ msgstr "cabeada" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviço" + +#~ msgid "Primary menu" +#~ msgstr "Menu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Você não tem uma conta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Adicionar destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Pesquisa de rota por OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outro programa" + +#~ msgid "Press enter to search" +#~ msgstr "Pressione enter para pesquisar" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "OK" +#~ msgstr "OK" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abre a camada…" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada do mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir camada" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mil" + +#~ msgid "%f ft" +#~ msgstr "%f pés" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Wlan" +#~ msgstr "WLAN" + +#~ msgid "wlan" +#~ msgstr "wlan" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao analisar arquivo GeoJSON" + +#~ msgid "Country code: %s" +#~ msgstr "Código do país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso a cadeirantes: %s" + +#~ msgid "_Share" +#~ msgstr "_Compartilhar" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Último localização conhecido e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Último localização conhecido (latitude e longitude, em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição do último localização conhecido do usuário." + +#~ msgid "User set last known location" +#~ msgstr "O usuário definiu o último local conhecido" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "O último local conhecido foi definido manualmente pelo usuário." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Para" + +#~ msgid "From" +#~ msgstr "De" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastreia a localização do usuário." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Ciclismo" + +#~ msgid "Transit" +#~ msgstr "Trânsito" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 00000000..6d2a653b --- /dev/null +++ b/po/ro.po @@ -0,0 +1,2008 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mada-Gabriela , 2018. +# Daniel Șerbănescu , 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-16 13:59+0100\n" +"Last-Translator: Florentina Mușat \n" +"Language-Team: Gnome Romanian Translation Team\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2);\n" +"X-Generator: Poedit 2.4.2\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Hărți GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Găsește locații din întreaga lume" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Hărți vă oferă acces rapid la hărți din întreaga lume. Vă permite să găsiți " +"rapid locul pe care îl căutați, să căutați un oraș sau o stradă sau să " +"localizați un loc unde să întâlniți un prieten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Hărți colaborează cu OpenStreetMap folosind o întreagă bază de date, " +"realizată de sute de mii de oameni de pe întregul pământ." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Puteți de asemenea să căutați anumite tipuri de locații, precum „Gara " +"Lipscani, București” sau „Acces Wi-Fi lângă Dumbrava, Sibiu”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Proiectul GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Hărți" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "O aplicație simplă cu hărți" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Hărți;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite ca locația curentă să fie arătată pe hartă." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "locația vizualizată ultima dată" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonatele locației vizualizate ultima dată." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tip de hartă" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipul de hartă de afișat (stradală, aeriană, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensiunea ferestrei" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensiunea ferestrei (lățime și înălțime)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poziția ferestrei" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poziția ferestrei (X si Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fereastră maximizată" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Starea de maximizare a ferestrei" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numărul maxim de rezultate pentru căutare" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Număr maxim de rezultate din căutarea după coordonate geografice." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Număr de locuri recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Număr de locuri vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Număr de rute recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Număr de rute vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Facebook utilizată cel " +"mai recent. Valorile posibile sunt: TOATĂ_LUMEA, PRIETENII_PRIETENILOR, " +"TOȚI_PRIETENII sau DE_SINE." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Foursquare utilizată " +"cel mai recent. Valorile posibile sunt: public, cei care urmăresc sau privat." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difuzarea pe Facebook a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un mesaj pe " +"contul Facebook asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difuzarea pe Twitter a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un tweet pe " +"contul Twitter asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nume de utilizator OpenStreetMap sau adresă de e-mail" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indică dacă utilizatorul s-a conectat pentru editarea datelor OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Ultimul tip de transport utilizat pentru drum" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mod nocturn" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Dacă aplicația este în modul nocturn." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Utilizează dalele aeriene hibride" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Dacă dalele aeriene ar trebui să utilizeze stilul hibrid (cu etichete)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vizibilitate" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Postează pe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Postează pe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anulează" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Înr_egistrează" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Toată lumea" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prietenii prietenilor" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Doar prietenii" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Doar eu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Urmăritori" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rută de aici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adaugă destinațiile intermediare" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rută până aici" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce este aici?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiază locația" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportă vizualizarea" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportă" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includeți ruta și marcajele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Alegeți tipul hărții" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Micșorează" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Mărește" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Comută preferatele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Arată scurtăturile" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Caută" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ieșire" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vizualizarea hărții" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Mărește" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Micșorează" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Comută scara" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Schimbă la vizualizarea stradală" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Schimbă la vederea aeriană" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Deschide stratul formei" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Arată etichetele" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Deschide stratul formei…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Pornește serviciile de localizare pentru a vă găsi locația" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anulează" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurări de locație" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mod nocturn" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurează contul OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportă ca imagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtături de tastatură" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Despre Hărți" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Hărți este offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Hărți necesită o conexiune la internet pentru a funcționa în mod " +"corespunzător, dar nicio conexiune nu a fost găsită." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificați conexiunile și configurările proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cont OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Autentificați-vă pentru a edita " +"hărți" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajutați la îmbunătățirea hărții, utilizând un\n" +"cont OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parolă" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Înregistrare" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Autentificare" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nu a funcționat. Încercați din nou, sau vizitați\n" +"OpenStreetMap pentru a restabili parola." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Codul de verificare nu se potrivește, încercați din nou." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduceți codul de verificare arătat mai sus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifică" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Autentificat" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Contul dumneavoastră OpenStreetMap este activ." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Deautentificare" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Stradă" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Număr casă" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Cod poștal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Oraș" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tip" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Niciunul" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adaugă un câmp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentariu" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Schimbările de hartă vor fi vizibile pe toate hărțile\n" +"care utilizează date OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Folosite recent" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editare pe OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Următorul" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Niciun rezultat găsit" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "A apărut o eroare" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trageți pentru a schimba ordinea rutei" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Deschide locația" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiază" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Trimite la…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Verificare de intrare…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Deschide stratul formei" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Deschide" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Comută vizibilitatea" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Caută rute prin GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutarea itinerariilor pentru transportul public este furnizată de servicii\n" +"părți terțe.\n" +"GNOME nu poate garanta corectitudinea itinerariilor și orarelor arătate.\n" +"Observați că unii furnizori pot să nu includă toate modurile de transport " +"disponibile,\n" +"de ex. un furnizor național ar putea să nu includă liniile aeriene, și un " +"furnizor local ar putea\n" +"să lipsească trenurile regionale.\n" +"Numele și mărcile arătate trebuie să fie considerate mărci înregistrate " +"atunci când este cazul." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Arată mai multe rezultate" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ascunde informațiile și opririle intermediare" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Arată informațiile și opririle intermediare" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pleacă acum" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pleacă până la" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Sosește până la" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Arată" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuze" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaie" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenuri" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrouri" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feriboturi" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avioane" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Partajează locația" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adaugă la ruta nouă" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direcții" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marchează ca favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editează pe OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Măriți pentru a adăuga locația!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Mărește" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nu s-a putut găsi structura de fragmente în director" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nu s-a putut analiza documentul XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Lipsesc atributele necesare" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nu s-a putut găsi elementul OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "O cale către o structură locală de directoare pentru fragmente" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Dimensiunea unei dale pentru directorul de dale local" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Arată versiunea programului" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignoră disponibilitatea rețelei" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIȘIER…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selectați un cont" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Se încarcă" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selectați un loc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsi locul pentru înregistrarea cu Facebook. Selectați unul " +"din această listă." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsit locul pentru înregistrarea cu Foursquare. Selectați " +"unul din această listă." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Înregistează la %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrieți un mesaj opțional pentru înregistrare la %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nu s-a putut găsi „%s” la serviciul social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Nu s-a putut găsit un loc potrivit pentru înregistrare la această locație" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Certificările au expirat, deschideți conturi online pentru a vă autentifica " +"și activa contul acesta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nimic nu a fost găsit aici!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locația a fost adăugată pe hartă, rețineți că poate dura ceva timp înainte " +"de a fi arătată pe hartă și în rezultatele căutării." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Hărți la %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistemul de fișiere este numai pentru citire" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nu aveți permisiunea de a salva acolo" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Directorul nu există" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nu este specificat nici un nume de fișier" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nu se poate exporta vizualizarea" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Locație curentă" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordonate nevalide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "eroare de parsare" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometrie necunoscută" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Cererea rutei a eșuat." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nu s-au găsit rute." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Pornește!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Toate fișierele strat" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Nu s-a reușit conectarea la serviciul de localizare" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Mădălin Șerbănescu , 2018\n" +"Florentina Mușat , " +"2018-2020" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "O aplicație cu hărți pentru GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Drepturi de autor © 2011 – 2021 Red Hat, Inc. și autorii GNOME Hărți" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datele hărții ale %s și contribuitorii" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Fragmente de hărți furnizate de %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Căutare furnizată de %s utilizând %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Nu s-a putut deschide stratul" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Doriți să continuați?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sunteți pe cale să deschideți fișiere cu o dimensiune totală de %s MB. Acest " +"lucru ar putea dura ceva timp să se încarce" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Tipul de fișier nu este suportat" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Nu s-a putut deschide GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Cerere greșită" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Obiectul nu a fost găsit" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, altcineva tocmai a modificat obiectul" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Obiectul a fost șters" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Calea sau relația se referă la copii care nu există" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nume" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Numele oficial. Acesta este, de obicei, numele real." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresă" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Acesta nu este un URL valid. Asigurați-vă că includeți http:// sau https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Pagina web oficială. Încercați să utilizați forma cea mai de bază a unui URL " +"de ex: http://example.com în loc de http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Număr de telefon. Utilizați formatul internațional, care începe cu un semn " +"+. Aveți grijă la legile de confidențialitate locale, în special pentru " +"numerele de telefon private." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatul utilizat trebuie să includă codul de limbă și titlul articolului ca " +"„en:titlu de articol”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Ore de deschidere" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Consultați legătura din etichetă pentru ajutor cu formatul." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populație" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevația (înălțimea deasupra nivelului mării) unui punct în metri." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Acces pentru scaun cu rotile" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nu" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Desemnat" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Acces la internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Cu fir" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Serviciu" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budism" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Creștinism" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Iudaism" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Religii multiple" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Păgânism" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Universalism unitarian" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toalete" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Notiță" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informații utilizate pentru a informa alți utilizatori de hărți despre " +"informațiile care nu sunt evidente despre un element, intenția autorului în " +"timpul creării acestuia, sau indicii pentru îmbunătățiri ulterioare." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Selectați tipul" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Gata" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Loc nedenumit" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Nu s-a putut parsa URI-ul Geo" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordonate" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Acuratețe" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Acuratețe: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Număr de telefon" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Acces la internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Nu există acces la internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Acces la internet prin cablu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Calculatoare disponibile pentru utilizare" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Asistență pe internet disponibilă" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Nu există toalete disponibile" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toaletele sunt disponibile" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accesibil pentru scaun cu rotile" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accesibilitate pentru scaun cu rotile limitată" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Nu este accesibil pentru scaun cu rotile" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Desemnat pentru utilizatorii în scaun cu rotile" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religie:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Locul nu a fost găsit în OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Coordonatele din URL nu sunt valide" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL-ul nu este suportat" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De la %s la %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Se încarcă fragmentele de hartă pentru tipărire" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puteți să anulați tipărirea dacă durează prea mult" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Despre tipărire" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adaugă via locație" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Elimină via locație" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inversează ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adaugă %s la %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Nu s-a putut deschide URI-ul" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Deschide cu %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nu s-a putut încărca fișierul" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp estimat: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarii furnizate de %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Începe la %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Începe" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Plimbare pe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Sosește la %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Sosește" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Arată instrucțiunile de plimbare" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ascunde instrucțiunile de plimbare" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Încarcă alternativele de dinainte" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Încarcă alternativele de mai târziu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nu s-au găsit alternative anterioare." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nu s-au găsit alternative de mai târziu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nu s-au găsit date în orar pentru această rută." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nu s-a găsit furnizor pentru această rută." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minute" +msgstr[2] "%s de minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s oră" +msgstr[1] "%s ore" +msgstr[2] "%s de ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s oră" +msgstr[1] "%s:%s ore" +msgstr[2] "%s:%s de ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Non-stop" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "De la răsărit la apus" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "În fiecare zi" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Vacanțe publice" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Vacanțe școlare" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "nu este deschis" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Necunoscut" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s o" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s o %s min" +msgstr[1] "%s o %s min" +msgstr[2] "%s o %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Acest modul nu suportă ultima sosire" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuă pe %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuă" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Virează la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Virează la stânga" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Virează ușor la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Virează ușor la stânga" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Virează ascuțit la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Virează ascuțit la stânga" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Virează la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Virează la dreapta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Virează ușor la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Virează ușor la dreapta" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Virează ascuțit la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Virează ascuțit la dreapta" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "În sensul giratoriu, luați ieșirea %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "În sensul giratoriu, luați ieșirea la %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Luați sensul giratoriu" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Luați liftul și ieșiți la %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Luați liftul" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faceți un viraj spre stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faceți un viraj spre stânga" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faceți un viraj spre dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faceți un viraj spre dreapta" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Găsește o rută" + +#~ msgid "Check in here" +#~ msgstr "Înregistrați-vă aici" + +#~ msgid "Show more information" +#~ msgstr "Arată mai multe informații" + +#~ msgid "Population:" +#~ msgstr "Populație:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudine:" + +#~ msgid "Opening hours:" +#~ msgstr "Ore de deschidere:" + +#~ msgid "Internet access:" +#~ msgstr "Acces la internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toalete:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acces pentru scaun cu rotile:" + +#~ msgid "Phone:" +#~ msgstr "Număr de telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "nu" + +#~ msgid "designated" +#~ msgstr "desemnat" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL-ul de OpenStreetMap nu este valid" + +#~ msgid "wired" +#~ msgstr "cu fir" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviciu" + +#~ msgid "Primary menu" +#~ msgstr "Meniu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nu aveți un cont?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Căută rute prin OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Adaugă o destinație" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Deschide cu o altă aplicație" + +#~ msgid "Press enter to search" +#~ msgstr "Apasă Enter pentru a căuta" + +#~ msgid "Quit" +#~ msgstr "Ieșire" + +#~ msgid "OK" +#~ msgstr "OK" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..1a0f0532 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1685 @@ +# Russian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mihail Gurin , 2014, 2015. +# Ivan Komaritsyn , 2015. +# Yuri Myasoedov , 2013, 2014, 2015. +# Stas Solovey , 2014, 2015, 2016. +# Роман Верменко , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-01-14 19:43+0000\n" +"PO-Revision-Date: 2019-02-27 22:10+0300\n" +"Last-Translator: Stas Solovey \n" +"Language-Team: русский \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 2.2.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карты GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Поиск местоположений по всему миру" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Приложение «Карты» позволяет получить быстрый доступ к картам по всему миру, " +"находить места в городах, на улицах или указывать места для встречи с " +"друзьями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карты используют базу данных OpenStreetMap, созданную сотнями тысяч людей по " +"всеми миру." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Вы также можете искать определённые места, например «Паб, Невский проспект» " +"или «Гостиницы около Александерплац, Берлин»." + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/mainWindow.js:500 +msgid "Maps" +msgstr "Карты" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Простое картографическое приложение" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карты;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Позволяет показывать на карте ваше местоположение." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последнее просмотренное местоположение" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координаты последнего просмотренного местоположения." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Размер окна" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Размер окна (ширина и высота)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Положение окна" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Положение окна (X, Y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Окно развёрнуто" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Режим развёрнутого окна" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Максимальное количество результатов поиска" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальное количество результатов поиска по поиску геокода." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Количество последних сохранённых мест" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Количество сохранённых недавно посещённых мест." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Количество последних сохранённых маршрутов" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Количество сохранённых недавно использовавшихся маршрутов." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Кто может видеть публикацию в Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последняя использованная настройка. Возможные значения: EVERYONE (все), " +"FRIEND_OF_FRIENDS (друзья друзей), ALL_FRIENDS (друзья) и SELF (только я)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Кто может видеть публикацию в Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последняя использованная настройка. Возможные значения: public, followers " +"или private." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Трансляция из Foursquare в Facebook" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Facebook." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Трансляция из Foursquare в Twitter" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Twitter." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Имя или адрес эл. почты пользователя OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Указывает, выполнил ли пользователь вход для редактирования данных " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Последний тип транспорта, использовавшийся для маршрута" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видимость" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Опубликовать в Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Опубликовать в Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Отменить" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "О_тметиться" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Друзья друзей" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Только друзья" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Только я" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Подписчики" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Те, кто в этом месте" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Что здесь?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Копировать местоположение" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Экспортировать как изображение" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Экспортировать просматриваемую область" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Экспортировать" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Включить маршрут и маркеры" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Основные" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показать комбинации клавиш" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Поиск" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Печать маршрута" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Завершить" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Просмотр карты" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приблизить" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалить" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Включить или выключить масштаб" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Переключиться на просмотр улиц" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Переключиться на вид сверху" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Открыть слой" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "Открыть слой фигур…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Включите сервисы местоположения для определения вашей позиции" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Отменить" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметры местоположения" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Настроить учётную запись OpenStreetMap" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "О приложении" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Выберите тип карты" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Отдалить" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Приблизить" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Включить или выключить избранные места" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Печать маршрута" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Приложение работает в автономном режиме!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Приложению требуется соединение с Интернетом, но оно отсутствует." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Проверьте настройки прокси и соединения." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Добавить к новому маршруту" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Открыть в другом приложении" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Добавить в избранное" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Отметиться здесь" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Учётная запись OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Войдите, чтобы редактировать карты" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогите улучшить карту, используя\n" +"учётную запись OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Электронная почта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Войти" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Нет учётной записи?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Неверное имя пользователя или пароль. Попробуйте снова или посетите\n" +"OpenStreetMap для сброса пароля." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Проверочный код не совпадает, попробуйте снова." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Введите показанный выше проверочный код" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Проверить" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Авторизован" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Ваша учётная запись OpenStreetMap активна." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Выйти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер дома" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Почтовый индекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Город" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Отсутствует" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Добавить поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Комментарий" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Изменения, сделанных в картах, будут доступны на всех картах,\n" +"использующие данные OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно использованные" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Далее" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Показать подробную информацию" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Нажмите Enter для поиска" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Результатов не найдено" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перетащите, чтобы изменить порядок маршрута" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Открыть местоположение" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Открыть" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Открыть слой фигур" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Включить или выключить видимый" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Поиск маршрута с помощью GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Поиск маршрута с помощью OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Схемы маршрутов общественного транспорта, предоставленные GNOME,\n" +"получены на основе расписаний транспортных компаний и агентств.\n" +"Компании и агентства не несут ответственности за показанные результаты.\n" +"GNOME не может гарантировать правильность показанных маршрутов и " +"расписаний.\n" +"Имена и бренды считаются зарегистрированными торговыми знаками, когда это " +"применимо." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Показать больше результатов" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Скрывать промежуточные остановки и информацию" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показывать промежуточные остановки и информацию" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Отправляются сейчас" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Отправляются" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибывают" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показывать" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобусы" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваи" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Поезда" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Переправы" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Текущее местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Точность: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Приблизить, чтобы добавить местоположение!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Приблизить" + +# сомнительно, требует проверки +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не удалось найти плиточную структуру в каталоге" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не удалось разобрать документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Пропущены обязательные атрибуты" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Не удалось найти элемент OSM" + +# сомнительно, требует проверки +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Путь к локальному каталогу плиточной структуры" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "Показать версию программы" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Выберите учётную запись" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Загрузка" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Выберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Facebook. Выберите одно из списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Foursquare. Выберите одно из " +"списка." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Отметиться в %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите необязательное сообщение для отметки в %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Произошла ошибка" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не удалось найти «%s» в социальной сети" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не удалось найти подходящее место, чтобы отметиться здесь" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Истекли полномочия, откройте Сетевые учётные записи, чтобы войти и " +"активировать эту учётную запись" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Маршрут отсюда" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Добавить пункт назначения" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Маршрут сюда" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Здесь ничего не найдено!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположение добавлено на карту. Скоро оно появится на карте и будет " +"выводиться в результатах поиска." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карты на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файловая система доступна только для чтения" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Отсутствуют права на запись в данную директорию" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не существует" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не указано имя файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не удалось экспортировать просматриваемую область" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неверные координаты" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ошибка разбора" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "неизвестная геометрия" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Сбой при запросе маршрута." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Маршрут не найден." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Старт!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Все файлы слоёв" + +#: src/mainWindow.js:433 +msgid "Failed to connect to location service" +msgstr "Не удалось подключиться к службе местоположения" + +#: src/mainWindow.js:498 +msgid "translator-credits" +msgstr "" +"Yuri Myasoedov , 2013, 2014.\n" +"Stas Solovey , 2014-2019." + +#: src/mainWindow.js:501 +msgid "A map application for GNOME" +msgstr "Приложение карт для GNOME" + +#: src/mainWindow.js:512 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Авторское право © 2011 – 2019 Red Hat, Inc. и авторы GNOME Maps" + +#: src/mainWindow.js:531 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Картографические данные %s и участников" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:547 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Картографические слои предоставлены %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Тип файла не поддерживается" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Не удалось открыть слой" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Не удалось открыть геолокационный URI" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Для этого маршрута не найдено расписаний." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неверное имя пользователя или пароль" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успешно" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Неверный запрос" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Объект не найден" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфликт: кто-то ещё только что изменил объект" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Объект был удалён" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Путь или связь ссылается на несуществующего потомка" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Имя" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Официальное название. Обычно то, что написано на знаках." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Адрес" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Веб-сайт" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Официальный веб-сайт. Рекомендуется использовать URL в наиболее общей форме, " +"например «http://example.com» вместо «http://example.com/index.html»." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефона. Используйте международный формат, начинающийся со знака «+»." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Википедия" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Используемый формат должен содержать код языка и заголовок статьи, например " +"«ru:Заголовок статьи»." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Часы работы" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Для получения справки по формату см. ссылку в метке." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Население" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Высота" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Высота над уровнем моря в метрах." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Доступ для инвалидных колясок" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Нет" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Ограниченный" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Специализированный" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Доступ к Интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Проводной" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Служебный" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Религия" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Каодаизм" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Христианство" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Конфуцианство" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Несколько религий" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Язычество" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Пастафарианство" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Саентология" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Синто" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Спиритизм" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Унитарный универсализм" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Шаманство" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Туалеты" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Заметка" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Информация, используемая для информирования других картографов о неочевидной " +"информации об элементе, намерении автора при его создании или о намеках на " +"дальнейшее совершенствование." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Выберите тип" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Готово" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Население:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Высота:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Часы работы:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Доступ к Интернету:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Религия:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Туалеты:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Доступ для инвалидных колясок:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Телефон:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Не удалось разобрать геолокационный URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "есть" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "ограниченный" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "нет" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "специализированный" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Из %s в %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Загрузка областей карты для печати" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Печать можно прервать, если она выполняется слишком долго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прервать печать" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Добавить через местоположение" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Удалить через местоположение" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обратный маршрут" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Не удалось открыть URI" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "не удалось загрузить файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Расчётное время: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибытие в %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Прибытие" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Отправление в %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Отправление" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Показывать информацию для пешего маршрута" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Скрывать информацию для пешего маршрута" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Пешком %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Загрузить предыдущие варианты" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Загрузить следующие варианты" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Не найдено более ранних вариантов." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Не найдено более поздних вариантов." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d минута" +msgstr[1] "%d минуты" +msgstr[2] "%d минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d час" +msgstr[1] "%d часа" +msgstr[2] "%d часов" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d час" +msgstr[1] "%d:%02d часа" +msgstr[2] "%d:%02d часов" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "круглосуточно" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "с утра до вечера" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ежедневно" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "праздничные дни" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "школьные каникулы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# нужно проверить можно ли переводить как "закрыто", так как странно почему так, а не "closed" +#: src/translations.js:264 +msgid "not open" +msgstr "не открыто" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "проводной" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "терминал" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "служебный" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Неизвестная" + +# Точность: Максимальная +# точная не подходит, т. к. получается "точность: точная" +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Максимальная" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f ч" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f мин" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s миль" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s футов" + +#~ msgid "Quit" +#~ msgstr "Завершить" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Открыть слой фигур…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Загрузить слой карты" + +#~ msgid "Open Layer" +#~ msgstr "Открыть слой" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миль" + +#~ msgid "%f ft" +#~ msgstr "%f футов" + +#~ msgid "Position not found" +#~ msgstr "Местоположение не найдено" + +#~ msgid "Country code: %s" +#~ msgstr "Код страны: %s" + +#~ msgid "Population: %s" +#~ msgstr "Население: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Доступ для инвалидных колясок: %s" + +#~| msgid "Failed to parse Geo URI" +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Не удалось разобрать файл GeoJSON" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 00000000..a2009fff --- /dev/null +++ b/po/sk.po @@ -0,0 +1,2130 @@ +# Slovak translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Dušan Kazik , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-06-13 20:00+0000\n" +"PO-Revision-Date: 2021-06-15 08:31+0200\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy prostredia GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhľadáva miesta po celom svete" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikácia Mapy vám poskytuje rýchly prístup k mapám celého sveta. Umožňuje " +"vám rýchlo nájsť miesto, ktoré hľadáte zadaním vyhľadávanej obce alebo " +"ulice, prípadne zistiť polohu, kde sa máte stretnúť s priateľom." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Aplikácia Mapy používa databázu projektu OpenStreetMap, na ktorej " +"spolupracujú stovky tisícov ľudí z celého sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Môžete vyhľadať špecifické typy umiestnení, napríklad „Hostince neďaleko " +"Hlavnej ulice, Boston“ alebo „Ubytovňa neďaleko Alexanderplatzu, Berlin“." + +#: data/org.gnome.Maps.appdata.xml.in:210 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +# desktop entry name +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:589 +msgid "Maps" +msgstr "Mapy" + +# desktop entry comment +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá aplikácia na prezeranie máp" + +# desktop enty keywords +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožní zobrazenie vášho umiestnenia na mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "naposledy zobrazené umiestnenie" + +# summary +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Súradnice naposledy zobrazeného umiestnenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "priblíženie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň priblíženia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, ktorý sa má zobraziť (pohľad ulíc, letecký pohľad, atď.)" + +# summary +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veľkosť okna" + +# description +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veľkosť okna (šírka a výška)" + +# summary +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pozícia okna" + +# description +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozícia okna (X a Y)." + +# summary +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizované okno" + +# description +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximalizovaný stav okna" + +# summary +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximálny počet výsledkov hľadania" + +# description +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximálny počet výsledkov hľadania z vyhľadávača geokódov." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávnych miest na uloženie" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených miest, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávnych trás na uloženie" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených trás, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v sieti Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v sieti Facebook. " +"Možné hodnoty sú: EVERYONE(ktokoľvek), FRIENDS_OF_FRIENDS(priatelia mojich " +"priateľov), ALL_FRIENDS(iba moji priatelia) or SELF(iba ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v službe Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v službe " +"Foursquare. Možné hodnoty sú: public(verejné), followers(nasledovatelia) " +"alebo private(súkromné)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Facebook priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Twitter priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Používateľské meno alebo e-mailová adresa projektu OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikuje, či sa používateľ prihlásil na úpravu údajov projektu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Naposledy použitý typ dopravy pre plánovanie trasy" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nočný režim" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Či je aplikácia v nočnom režime." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Použiť hybridné dlaždice leteckého pohľadu" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Či majú použiť dlaždice s leteckým pohľadom hybridný štýl (s menovkami)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditeľnosť" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Uverejniť na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Uverejniť na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušiť" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Oznámiť _polohu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ktokoľvek" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Priatelia mojich priateľov" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Iba moji priatelia" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Iba ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Verejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Nasledovatelia" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Súkromné" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtiaľto" + +# tooltip +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridať prechodný cieľ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Čo sa nachádza tu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopírovať umiestnenie" + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridať do projektu OpenStreetMap" + +# dialog title +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazenia" + +# button label +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovať" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Zahrnúť trasy a značky" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Prejde na aktuálne umiestnenie" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Vyberie typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddiali" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Priblíži" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Prepne plánovač trasy" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Prepne obľúbené" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Vytlačí trasu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Všeobecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazenie klávesových skratiek" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Vyhľadanie" + +# DK:tooltip +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Prepnutie plánovača trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tlač trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončenie" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvorenie hlavnej ponuky" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazenie mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Priblíženie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddialenie" + +# tooltip +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Prepnutie obľúbených" + +# DK:tooltip +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Prejdenie na aktuálne umiestnenie" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prepnutie na pohľad ulíc" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prepnutie na letecký pohľad" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobraziť menovky" + +# dialo title +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvoriť vrstvu s tvarmi…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnite lokalizačné služby, aby mohlo byť nájdené vaše umiestnenie" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušiť" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavenia umiestnenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočný režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastaviť účet projektu OpenStreetMap" + +# menu item +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovať ako obrázok" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové skratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikácii Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otvoriť hlavnú ponuku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Aplikácia Mapy je bez pripojenia!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby mohla aplikácia Mapy pracovať správne, vyžaduje sa aktívne internetové " +"pripojenie, ale žiadne nie je dostupné." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Skontrolujte vaše nastavenia pripojenia a sprostredkovateľa proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet projektu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prihláste sa na úpravu máp" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomôžte zlepšiť mapu pomocou\n" +"účtu projektu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +# button label +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prihlásiť sa" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prihlásiť sa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Prepáčte, ale toto nefungovalo. Prosím, skúste to znovu, alebo navštívte " +"webovú adresu\n" +"OpenStreetMap na obnovenie vášho hesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overovací kód sa nezhoduje. Prosím, skúste to znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadajte overovací kód zobrazený vyššie" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overiť" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prihlásený" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet projektu OpenStreetMap je aktívny." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásiť sa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Smerovacie číslo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Obec" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nič" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridanie poľa" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentár" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmeny mapy budú viditeľné na všetkých mapách, ktoré\n" +"využívajú údaje z projektu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Ďalej" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenašli sa žiadne výsledky" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Vyskytla sa chyba" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potiahnutím zmeníte poradie trasy" + +# dialog title +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvorenie umiestnenia" + +# gtkbutton +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopírovať" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Odoslať do…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Oznámiť polohu…" + +# dialo title +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvoriť" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Prepne viditeľné" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Trasa poskytovaná službou GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerár trasy verejnej dopravy je poskytovaný službami tretích strán\n" +"Projekt GNOME nemôže zaručiť správnosť zobrazeného itineráru a plánu.\n" +"Berte na vedomie, že niektorí poskytovatelia nemusia zahŕňať všetky spôsoby " +"prepravy,\n" +"napr. národný poskytovateľ nemusí zahrnúť letecké linky a miestnemu " +"poskytovateľovi\n" +"môžu chýbať regionálne vlaky.\n" +"Zobrazené názvy a značky sú považované za registrované obchodné známky, ak " +"je to nevyhnutné." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobraziť viac výsledkov" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skryje prechodné zastávky a informácie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazí prechodné zastávky a informácie" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odchod teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odchod o" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Príchod o" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobraziť" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Električky" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lietadlá" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Sprístupní umiestnenie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pridá do novej trasy" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Pokyny" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označí ako obľúbené" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Priblížením pridajte umiestnenie!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Priblížiť" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Zlyhalo nájdenie štruktúry dlaždíc v adresári" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Zlyhala analýza dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Chýbajú potrebné atribúty" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepodarilo sa nájsť prvok služby OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k štruktúre adresárov miestnych dlaždíc" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Veľkosť dlaždice pre adresár miestnych dlaždíc" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Zobrazí verziu programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorovať dostupnosť siete" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SÚBOR…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výber účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítavanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výber miesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v sieti Facebook. Prosím, " +"vyberte nejaké zo zoznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v službe Foursquare. Prosím, " +"vyberte nejaké zo zoznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámiť polohu %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napíšte voliteľnú správu k oznámeniu polohy %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nedá sa nájsť miesto „%s“ v sociálnej službe" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "V tejto lokalite sa nedá nájsť vhodné miesto na oznámenie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Platnosť poverení vypršala. Prosím, otvorte Účty služieb na prihlásenie a " +"povolenie tohto účtu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu sa nič nenašlo!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Umiestnenie bolo pridané do mapy. Berte na vedomie, že jeho zobrazenie na " +"mape a vo výsledkoch vyhľadávania môže trvať nejakú dobu." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapy na mieste %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Systém súborov je iba na čítanie" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Do tohto umiestnenia nemáte oprávnenia na zápis" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Adresár neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie je určený názov súboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie je možné exportovať zobrazenie" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktuálne umiestnenie" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatná súradnica" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba analýzy" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznáma geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Požiadavka na trasu zlyhala." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenašla sa žiadna trasa." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Začiatok!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všetky súbory vrstiev" + +#: src/mainWindow.js:492 +msgid "Failed to connect to location service" +msgstr "Zlyhalo pripojenie k lokalizačnej službe" + +#: src/mainWindow.js:587 +msgid "translator-credits" +msgstr "Dušan Kazik " + +#: src/mainWindow.js:590 +msgid "A map application for GNOME" +msgstr "Aplikácia na prezeranie máp pre GNOME" + +#: src/mainWindow.js:601 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorské práva © 2011 – 2021 Red Hat, Inc. a autori aplikácie Mapy " +"prostredia GNOME" + +#: src/mainWindow.js:621 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Údaje mapy zo služby %s a jej prispievateľov" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:637 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Dlaždice mapy poskytnuté zo služby %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:666 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Vyhľadávanie poskytnuté službou %s použitím %s" + +#: src/mapView.js:492 src/mapView.js:550 +msgid "Failed to open layer" +msgstr "Zlyhalo otvorenie vrstvy" + +#: src/mapView.js:513 +msgid "Do you want to continue?" +msgstr "Chcete pokračovať?" + +#: src/mapView.js:514 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Chystáte sa otvoriť súbory s celkovou veľkosťou %s MB. Načítanie môže trvať " +"dlhšiu dobu" + +#: src/mapView.js:544 +msgid "File type is not supported" +msgstr "Typ súboru nie je podporovaný" + +#: src/mapView.js:582 +msgid "Failed to open GeoURI" +msgstr "Zlyhalo otvorenie GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávne používateľské meno alebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspech" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nesprávna požiadavka" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt sa nenašiel" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Nastal konflikt. Niekto iný práve upravil objekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt bol odstránený" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta alebo relácia odkazuje na neexistujúceho potomka" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Názov" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiálny názov. Toto obvykle býva napísané na tabuliach." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:126 src/placeView.js:279 +msgid "Website" +msgstr "Webová stránka" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Toto nie je platná URL. Uistite sa, že je zahrnutá predpona http:// alebo " +"https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiálna webová stránka. Skúste použiť čo najjednoduchší tvar URL napr. " +"http://priklad.sk namiesto of http://priklad.sk/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefón" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefónne číslo. Použite medzinárodný formát, začínajúci so znakom +. Dbajte " +"na miestne zákony o ochrane súkromia, obzvlášť pri súkromných telefónnych " +"číslach." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:587 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by mal zahŕňať kód jazyka a názov článku ako „sk:Názov " +"článku“." + +#: src/osmEditDialog.js:153 src/placeView.js:307 +msgid "Opening hours" +msgstr "Otváracia doba" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Pre pomoc k formátu si prezrite odkaz v menovke." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:417 +msgid "Population" +msgstr "Obyvateľstvo" + +#: src/osmEditDialog.js:166 src/placeView.js:426 +msgid "Altitude" +msgstr "Nadmorská výška" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Stúpanie (výška nad morskou hladinou) bodu v metroch." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Bezbariérový prístup" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Áno" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Obmedzený" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Vyhradený" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Prístup na internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Drôtový" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Obsluha" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Náboženstvo" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Baháizmus" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Budhizmus" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Kresťanstvo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizmus" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Viacero náboženstiev" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganizmus" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizmus" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientológia" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizmus" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizmus" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Centralistický univerzalizmus" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidizmus" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmus" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informácie slúžiace ostatným mapovačom na informovanie o neobvyklých " +"informáciách o súčasti, účeli autora počas tvorby, alebo radách pre " +"neskoršie vylepšenia." + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridanie do projektu OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Výber typu" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:105 +msgid "Unnamed place" +msgstr "Nepomenované miesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Zlyhala analýza URI geografickej polohy" + +#: src/placeView.js:267 +msgid "Coordinates" +msgstr "Súradnice" + +#: src/placeView.js:271 +msgid "Accuracy" +msgstr "Presnosť" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:274 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Presnosť: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:293 +msgid "Phone number" +msgstr "Telefónne číslo" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:317 +msgid "Public internet access" +msgstr "Verejný prístup na internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:326 +msgid "No internet access" +msgstr "Bez prístupu na internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:334 +msgid "Public Wi-Fi" +msgstr "Verejná Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:342 +msgid "Wired internet access" +msgstr "Drôtový prístup na internet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:350 +msgid "Computers available for use" +msgstr "Dostupné počítače na použitie" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:358 +msgid "Internet assistance available" +msgstr "Dostupná pomoc s internetom" + +#: src/placeView.js:364 +msgid "No toilets available" +msgstr "Nedostupné toalety" + +#: src/placeView.js:367 +msgid "Toilets available" +msgstr "Dostupné toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:376 +msgid "Wheelchair accessible" +msgstr "Bezbariérový prístup" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:386 +msgid "Limited wheelchair accessibility" +msgstr "Obmedzený bezbariérový prístup" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:395 +msgid "Not wheelchair accessible" +msgstr "Bez bezbariérového prístupu" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:405 +msgid "Designated for wheelchair users" +msgstr "Navrhnuté pre vozíčkarov" + +#: src/placeView.js:432 +msgid "Religion:" +msgstr "Náboženstvo:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Miesto sa nenašlo v projekte OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Súradnice v URL nie sú platné" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL nie je podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s po %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítavajú sa dlaždice mapy na vytlačenie" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tlač môžete prerušiť, ak toto trvá príliš dlho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prerušiť tlač" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridá cez umiestnenie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstráni cez umiestnenie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obráti trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridať obec %s do aplikácie %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Zlyhalo otvorenie URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otvoriť pomocou %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "zlyhalo načítanie súboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerár poskytnutý zo služby %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začiatok z adresy %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začiatok" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chôdza %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Príchod na adresu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Príchod" + +# tooltip +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazí pokyny pre chôdzu" + +# tooltip +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skryje pokyny pre chôdzu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načítať skoršie alternatívy" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načítať neskoršie alternatívy" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenašli sa žiadne skoršie alternatívy." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenašli sa žiadne neskoršie alternatívy." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Pre túto trasu sa nenašli žiadne údaje cestovného poriadku." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Pre túto trasu sa nenašiel žiadny poskytovateľ." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodín" +msgstr[1] "%s hodina" +msgstr[2] "%s hodiny" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hodín" +msgstr[1] "%s:%s hodina" +msgstr[2] "%s:%s hodiny" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Nonstop" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od východu slnka po západ slnka" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Každý deň" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Štátne sviatky" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Školské prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zatvorené" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Neznáma" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Presná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje posledný príchod" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Odbočte doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Odbočte doľava" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Odbočte mierne doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Odbočte mierne doľava" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Odbočte ostro doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Odbočte ostro doľava" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Odbočte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Odbočte doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Odbočte mierne doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Odbočte mierne doprava" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Odbočte ostro doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Odbočte ostro doprava" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovom objazde použite %s. výjazd" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovom objazde použite výjazd na %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Vojdite do kruhového objazdu" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použite výťah a vstúpte na %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Použite výťah" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Otočte sa doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Otočte sa doľava" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Otočte sa doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Otočte sa doprava" + +# tooltip +#~ msgid "Check in here" +#~ msgstr "Oznámi túto polohu" + +# tooltip +#~ msgid "Show more information" +#~ msgstr "Zobrazí viac informácií" + +#~ msgid "Population:" +#~ msgstr "Obyvateľstvo:" + +#~ msgid "Altitude:" +#~ msgstr "Nadmorská výška:" + +#~ msgid "Opening hours:" +#~ msgstr "Otváracia doba:" + +#~ msgid "Internet access:" +#~ msgstr "Prístup na internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toalety:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Bezbariérový prístup:" + +#~ msgid "Phone:" +#~ msgstr "Telefón:" + +#~ msgid "yes" +#~ msgstr "áno" + +#~ msgid "limited" +#~ msgstr "obmedzený" + +#~ msgid "no" +#~ msgstr "nie" + +#~ msgid "designated" +#~ msgstr "vyhradený" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL projektu OpenStreetMap nie je platná" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "drôtový" + +#~ msgid "terminal" +#~ msgstr "terminál" + +#~ msgid "service" +#~ msgstr "obsluha" + +# tooltip +#~ msgid "Find a Route" +#~ msgstr "Nájsť trasu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemáte účet?" + +#~ msgid "Add destination" +#~ msgstr "Pridať cieľ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Trasa poskytovaná službou OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Ukončiť" + +# tooltip +#~ msgid "Open with another application" +#~ msgstr "Otvorí pomocou inej aplikácie" + +#~ msgid "Press enter to search" +#~ msgstr "Stlačte enter na vyhľadanie" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvoriť vrstvu s tvarmi…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Načítať mapovú vrstvu" + +#~ msgid "Open Layer" +#~ msgstr "Otvorenie vrstvy" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Pozícia sa nenašla" + +#~ msgid "Wlan" +#~ msgstr "WiFi" + +#~ msgid "wlan" +#~ msgstr "wifi" + +#~ msgid "Country code: %s" +#~ msgstr "Kód krajiny: %s" + +#~ msgid "Population: %s" +#~ msgstr "Obyvateľstvo: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Bezbariérový prístup: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Zlyhala analýza súboru GeoJSON" + +#~ msgid "Copy Geo URI" +#~ msgstr "Skopírovať URI geografickej polohy" + +#~ msgid "_Share" +#~ msgstr "_Sprístupniť" + +# summary +#~ msgid "Last known location and accuracy" +#~ msgstr "Posledná známa poloha a presnosť" + +# description +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Posledné známa poloha (zemepisná šírka a zemepisná dĺžka v stupňoch) a " +#~ "presnosť (v metroch)." + +# description +#~ msgid "Description of last known location of user." +#~ msgstr "Popis poslednej známej polohy používateľa." + +# summary +#~ msgid "User set last known location" +#~ msgstr "Používateľ nastavil poslednú známu polohu" + +# description +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Určuje, či bola posledná známa poloha ručne nastavená používateľom." + +#~ msgid "I’m here!" +#~ msgstr "Tu sa nachádzam!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 00000000..01b509b6 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,2111 @@ +# Slovenian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Martin Srebotnjak , 2013–2015. +# Matej Urbančič , 2015–2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-16 21:32+0000\n" +"PO-Revision-Date: 2021-02-17 18:55+0100\n" +"Last-Translator: Matej Urbančič \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 2.4.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Zemljevidi GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Najdi mesta po svetu" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Program omogoča hiter dostop do zemljevidov sveta. Omogoča hitro iskanje " +"mest in ulic, različnih javnih prostorov, ki jih je nujno treba obiskati, " +"ali mesta zmenka s prijatelji." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Program uporablja podatkovno zbirko OpenStreetMap, ki jo ustvarja več sto " +"tisoč posameznikov na vseh koncih sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Iskati je mogoče tudi posebna mesta, kot so »bari v središču Kranja« ali " +"»Hotel blizu avtobusne postaje v Mariboru«." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Zemljevidi" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Enostaven program za pregled zemljevidov" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Zemljevidi;karta;karte;maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Dovoli prikazovanje trenutnega mesta na zemljevidu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "zadnje gledano mesto" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate nazadnje gledanega mesta." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "približanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Raven približanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta zemljevida" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta zemljevida za prikaz (ulični, zračni ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (širina in višina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj okna (osi x in y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Povečano okno" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje razpetosti okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Največje število zadetkov iskanja" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Največje število zadetkov iskanja pri uporabi iskalnika krajev." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Število nedavnih mest za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Število nedavno obiskanih mest za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Število poti za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Število nedavno obiskanih poti za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavitve zasebnosti objav na Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Facebook. Dovoljene " +"vrednosti so: vsi, prijatelji prijateljev, prijatelji ali zame." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavitve zasebnosti objav Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Foursquare. Dovoljene " +"vrednosti so: javno, spremljevalci, zasebno." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Povezovanje objav Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Facebook." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Povezovanje objav Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave na Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Twitter." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Elektronski naslov oziroma uporabniško ime OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Kaže, ali je uporabnik prijavljen za urejanje podatkov OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Nazadnje uporabljena vrsta transporta za vodenje" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nočni način" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Ali naj bo vmesnik programa zagnan v nočnem načinu" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Uporabi hibridne zračne sličice" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Ali naj bo pri prikazu zračnega pogleda uporabljen hibridni slog (z " +"oznakami)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Vidnost" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Objavi na Twitterju" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Prekliči" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Vstopi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Vsi" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Prijatelji prijateljev" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Le prijatelji" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Le jaz" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Spremljevalci" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Zasebno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Pot od tu" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj vmesni cilj" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Pot do tu" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kaj je to?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj mesto" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Objavi na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pogled izvoza" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvozi" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Vključi pot in oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Trenutna vrsta zemljevida" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Približaj" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Načrtovanje poti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Priljubljene poti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Natisni pot" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Splošno" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Pokaže tipkovne bližnjice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Omogoči iskanje" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Preklopi načrtovalnik poti" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Natisne pot" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Konča program" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Odpre glavni meni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pokaže pogled zemljevida" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približa pogled" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddalji pogled" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Preklopi merilo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Preklopi na ulični pogled" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Preklopi na pogled iz zraka" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Odpre plast oblike" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Odpri plast oblike …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Priklop storitev določanja trenutnega mesta za uporabo v programu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Prekliči" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavitve mesta" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočni način" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavi račun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvozi kot sliko" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programu" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Odpri glavni meni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Zemljevid ni povezan v omrežje!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Program Zemljevidi zahtevajo za pravilno delovanje dejavno internetno " +"povezavo, ki pa trenutno ni na voljo." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Preverite povezavo in nastavitve posredniškega strežnika." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Račun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijava za urejanje zemljevida" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Sodelujte pri izdelavi zemljevida\n" +"prek OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Elektronski naslov" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Geslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Vpis" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Povezovanje je spodletelo. Poskusite znova kasneje, ali pa \n" +"obiščite spletišče OpenStreetMap za ponastavitev gesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overitvena koda ni skladna. Poskusite znova." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Vpišite overitveno kodo, prikazano zgoraj:" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeno" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Račun OpenStreetMap je dejaven." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjavi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hišna številka" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštna koda" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Mesto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Opomba" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Spremembe bodo vidne na vseh zemljevidih,\n" +" ki uporabljajo podatke OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno uporabljeno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Naslednji" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ni najdenih zadetkov" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Prišlo je do napake!" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potegnite točko za spreminjanje poti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Odpri mesto" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Pošlji …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Prijava …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Odpri plast oblike" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Odpri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Preklopi vidno" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Iskanje poti s podporo GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Načrt potovanja z javnim prevozom zagotavljajo različne storitve.\n" +"Teh podatkov ni mogoče preverjati in zagotavljati pravilnosti voznih\n" +"poti in časov. Nekateri ponudniki morda ne vključujejo vseh načinov\n" +"potovanja, na primer državni ponudniki morda ne vključujejo letalskih\n" +"povezav in krajevni morda nimajo podatkov o vlakih.\n" +"Prikazana imena in blagovne znamke je treba obravnavati kot registrirane " +"znamke." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Pokaži več zadetkov" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrij vmesne postanke in podrobnosti" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Pokaži vmesne postaje in podrobnosti mest" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odhod takoj" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odhod do" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Prihod do" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Pokaži" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Avtobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaki" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna železnica" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Letala" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Objavi mesto" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaj novo pot" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Načrt poti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označi kot priljubljeno" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Približaj za dodajanje mesta!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približaj" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Določanje pravilne zgradbe v mapi je spodletelo." + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Razčlenjevanje dokumenta XML je spodletelo" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Manjkajo zahtevani atributi" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ni mogoče najti predmeta OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Pot do krajevne mape s sličicami" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Velikost sličic za krajevno mapo s sličicami" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Pokaži različico programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Prezri razpoložljivost omrežja" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA …|NASLOV URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izbor računa" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Nalaganje" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izbor mesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Facebook. Izberite ustrezno mesto iz " +"seznama." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Foursquare. Izberite ustrezno mesto iz " +"seznama." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se v %s." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Vpišite sporočilo za objavo v %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ni mogoče najti »%s« med razpoložljivimi storitvami" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ni mogoče najti ustreznega mesta za objavo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Poverila so potekla. Ponovna vzpostavitev računa je mogoče med nastavitvami." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu ni ničesar!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Na zemljevid je dodano mesto. Upoštevajte, da lahko traja, preden se pokaže " +"na zemljevidu in med rezultati iskanja." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "zemljevid na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sistem je le za branje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ni ustreznih dovoljenj za shranjevanje na to mesto" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mapa ne obstaja" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ime datoteke ni določeno" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ni mogoče izvoziti pogleda" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Trenutno mesto" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neveljavna koordinata" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "napaka med razčlenjevanjem" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznana geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Zahteva za pridobivanje poti je spodletela." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ni najdene poti" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Začetna točka!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Vse datoteke plasti" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Napaka med povezovanjem s storitvijo določevanja točke GPS" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Matej Urbančič \n" +"Martin Srebotnjak" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Program za prikaz zemljevidov za GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Avtorske pravice © 2011–2021 Red Hat, Inc. in avtorji programa Zemljevidi " +"GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke zemljevida objavljajo %s in drugi sodelujoči" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Podatke zemljevida objavlja %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Iskalnik omogoča %s z uporabo %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Odpiranje plasti je spodletelo" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Ali želite nadaljevati?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Odpreti nameravate datoteke s skupno velikostjo %s MB. Opravilo je lahko " +"dolgotrajno." + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Vrsta datoteke ni podprta" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Odpiranje naslova GeoURI je spodletelo." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Uspešno zaključeno" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Slaba zahteva" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Predmeta ni mogoče najti" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Spor urejanja; ravnokar je nekdo drug spremenil isti predmet." + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Predmet je izbrisan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Pot oziroma zveza je sklicana na neobstoječ podrejen predmet" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Ime" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Uradno ime ali naziv se običajno pojavlja na tablah." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Naslov" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Spletišče" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Naslov ni veljaven naslov URL. Preverite, ali je na začetku naslova vpisan " +"tudi http:// oziroma https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Uradna spletna stran mora biti zapisana kot osnovni naslov URL, na primer " +"http://www.primer.si in ne http://www.primer.si/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonska številka mora biti zapisana v mednarodnem zapisu (začne se s " +"+ ...) Upoštevajte tudi krajevna določila zasebnosti, še posebej za zasebne " +"telefonske številke." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedija" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Uporabljen zapis mora vključevati kodo jezika in naslov prispevka, na primer " +"»sl:Naslov prispevka«." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Odpiralni čas" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Pomoč o zapisu je na voljo na spletni povezavi." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Prebivalci" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Nadmorska višina" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska višina točke v metrih" + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Invalidom prijazno" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Omejeno" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Označeno" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internetni dostop" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Žično" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Storitev" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animizem" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahaizem" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizem" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizem" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Krščanstvo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucionizem" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizem" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizem" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judovstvo" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Izberi več" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Poganstvo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizem" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologija" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizem" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizem" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizem" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizem" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Univerzalni unitarizem" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazidizem" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizem" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Stranišča" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Opomba" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podrobnosti, s katerimi lahko obvestimo druge uporabnike o neobičajnih " +"spremembah predmetov, pomembnih podatkih ali namenih za nadaljne izboljšave." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodajanje točke na OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Izbor vrste" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Končano" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Neimenovano mesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Razčlenjevanje naslova URI Geo je spodletelo" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinate" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Natančnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Natančnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonska številka" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Javni dostop do interneta" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ni dostopa do interneta" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Javno omrežje Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Žični dostop do interneta" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Možnost uporabe računalnika" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Možnost dostopa do Interneta" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Uporaba stranišč ni mogoča" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Možnost uporabe stranišč" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Invalidom na vozičkih prijazno" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Omejen dostop za invalidske vozičke" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Ni dostopa za invalidske vozička" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Prijazno uporabnikom invalidskih vozičkov" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Mesta na OpenStreetMap ni mogoče najti" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate v naslovu URL niso veljavne" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Podan naslov URL ni podprt" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Poteka nalaganje zemljevida za tiskanje" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tiskanje je mogoče prekiniti, če je postopek predolg" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekliči tiskanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj prek mesta" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstrani prek mesta" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni pot" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s v %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Odpiranje naslova URI je spodletelo" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Odpri s programom %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nalaganje datoteke je spodletelo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Predviden čas: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Načrt potovanja objavlja %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začnite na %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začetna točka" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Hodite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Prihod k %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Prihod" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Pokaži navodila za hojo" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrij navodila za hojo" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Naloži predhodne možnosti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Naloži kasnejše možnosti" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ni predhodnih možnosti." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ni kasnejših možnosti." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Za to pot podatki o času niso na voljo." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Za to pot podatki o ponudnikih niso na voljo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuta" +msgstr[2] "%s minuti" +msgstr[3] "%s minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ur" +msgstr[1] "%s ura" +msgstr[2] "%s uri" +msgstr[3] "%s ure" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ur" +msgstr[1] "%s:%s ura" +msgstr[2] "%s:%s uri" +msgstr[3] "%s:%s ure" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "neprestano" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "od zore do mraka" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "vsak dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "javni prazniki" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "šolske počitnice" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ni odprto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Neznan položaj" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Natančen položaj" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" +msgstr[3] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" +msgstr[3] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" +msgstr[3] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta vstavek ne podpira najnovejšega prihod" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Nadaljujte po: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Nadaljujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zavijte levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Zavijte levo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Držite se leve na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Držite se leve" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zavijte ostro levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Zavijte ostro levo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zavijte desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Zavijte desno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Držite se desne na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Držite se desne" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zavijte ostro desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Zavijte ostro desno" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iz krožišča zapeljite na izvoz %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iz krožišča zapeljite na izvoz za: %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Zapeljite v krožišče" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Vstopite v dvigalo in izstopite v %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Vstopite v dvigalo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Naredite polkrožni zavoj v levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Naredite polkrožni zavoj v levo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Naredite polkrožni zavoj v desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Naredite polkrožni zavoj v desno" + +#~ msgid "Find a Route" +#~ msgstr "Najdi pot" + +#~ msgid "Check in here" +#~ msgstr "Prijavi se tu." + +#~ msgid "Show more information" +#~ msgstr "Pokaži več podrobnosti" + +#~ msgid "Population:" +#~ msgstr "Populacija:" + +#~ msgid "Altitude:" +#~ msgstr "Nadmorska višina:" + +#~ msgid "Opening hours:" +#~ msgstr "Odpiralne ure:" + +#~ msgid "Internet access:" +#~ msgstr "Internetni dostop:" + +#~ msgid "Toilets:" +#~ msgstr "Stranišča:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Invalidom prijazno:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "omejeno" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "podpora invalidom" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Podan naslov URL OpenStreetMap ni veljaven" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "žično" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "storitev" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ali še nimate svojega računa?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Iskanje poti s OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj cilj" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Odpri z drugim programom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite vnosno tipko za iskanje" + +#~ msgid "Quit" +#~ msgstr "Izhod" + +#~ msgid "OK" +#~ msgstr "V redu" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Odpri plast oblike…" + +#~ msgid "Load Map Layer" +#~ msgstr "Naloži plast zemljevida" + +#~ msgid "Open Layer" +#~ msgstr "Odpri plast" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "" +#~ "Maps need an active internet connection to function properly, but one " +#~ "can't be found." +#~ msgstr "" +#~ "Zemljevidi potrebujejo za pravilno delovanje dejavno internetno povezavo, " +#~ "ki pa ni na voljo." + +#~ msgid "Don't have an account?" +#~ msgstr "Še nimate računa za dostop?" + +#~ msgid "The verification code didn't match, please try again." +#~ msgstr "Neveljavna koda za pooblastitev. Poskusite znova." + +#~ msgid "Cannot find \"%s\" in the social service" +#~ msgstr "Ni mogoče najti \"%s\" med razpoložljivimi storitvami" + +#~ msgid "The directory does not exists" +#~ msgstr "Ciljna mapa ne obstaja" + +#~ msgid "Setup OpenStreetMap Account" +#~ msgstr "Nastavitev računa OpenStreetMap" + +#~ msgid "Position not found" +#~ msgstr "Položaja ni mogoče določiti" + +#~ msgid "Postal code: %s" +#~ msgstr "Poštna številka: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Koda države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Populacija: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Dostop v vozičku: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zadnje znano mesto in natančnost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zadnje znano mesto (geografska širina in dolžina v stopinjah) in " +#~ "natančnost (v metrih)." + +#~ msgid "Description of last known location" +#~ msgstr "Opis zadnjega znanega mesta" + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis zadnjega znanega mesta uporabnika." + +#~ msgid "User set last known location" +#~ msgstr "Ročno nastavljeno zadnje mesto nahajanja" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ali je bilo zadnje znano mesto nastavljeno ročno." + +#~ msgid "I’m here!" +#~ msgstr "Jaz sem tu!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid "Track user location." +#~ msgstr "Sledenje gibanja uporabnika." + +#~ msgid "Map Type" +#~ msgstr "Vrsta zemljevida" + +#~ msgid "Cycling" +#~ msgstr "Kolesarjenje" + +#~ msgid "Transit" +#~ msgstr "Javni promet" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 00000000..0e68304c --- /dev/null +++ b/po/sr.po @@ -0,0 +1,2095 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2021. +# Copyright © 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Мирослав Николић , 2013—2021. +# Борисав Живановић , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-02 22:30+0200\n" +"Last-Translator: Мирослав Николић \n" +"Language-Team: српски \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Гномове карте" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Нађите места широм света" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Гномове Карте вам дају брз приступ картама широм света. Омогућава вам да " +"брзо и лако пронађете место које тражите тражећи град или улицу, или да " +"одредите место за сусрет са пријатељима." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Овај програм користи заједничку базу података „OpenStreetMap“, коју стварају " +"стотине хиљада људи широм света." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете чак и да потражите нека посебна места, као што су „Градски паркови у " +"Јагодини“ или „Хотели у центру Пирота“." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Гномов пројекат" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Карте" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Једноставан програм за карте" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;карте;мапе;карта;мапа;karte;mape;karta;mapa;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозвољава да се ваша локација приказује на карти." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последње погледано место" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координате последње погледаног места." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увећање" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Ниво увећања" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Врста карте" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Врста карте за приказ (улица, авионски и сл.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Величина прозора" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Величина прозора (ширина и висина)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положај прозора" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положај прозора (положено и усправно)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Увећавање прозора" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стање увећања прозора" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Највећи број резултата претраге" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Највећи број резултата претраге за претрагу геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Број скорашњих места за чување" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Број недавно посећених места за чување." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Број скорашњих путева које треба сачувати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Број скоро посећених путева које треба сачувати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Подешавање провере приватности Фејсбука" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последње подешавање провере приватности Фејсбука. Могуће вредности су: " +"„EVERYONE“ (свако), „FRIENDS_OF_FRIENDS“ (пријатељи пријатеља), " +"„ALL_FRIENDS“ (сви пријатељи) или „SELF“ (сами)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Подешавање провере приватности Форсквера" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последње подешавање провере приватности Форсквера. Могуће вредности су: " +"„public“ (јавно), „followers“ (пратиоци) или „private“ (приватно)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Форскверова провера Фејсбуковог емитовања" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као објаву у налогу Фејсбука " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Форскверова провера Твитеровог емитовања" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као цвркут у налогу Твитера " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap корисничко име или е-адреса" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показује да ли је корисник пријављен да би могао да уређује OpenStreetMap " +"податке." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Последња врста превоза коришћена за проналажење пута" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Ноћни режим" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Да ли је програм у ноћном режиму." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Користи хибридне ваздушне плоче" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Да ли треба користити ваздушне плоче са хибридним стилом (са етикетама)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видљивост" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Објави на Фејсбуку" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Објави на Твитеру" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Откажи" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Провери" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Свако" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Пријатељи пријатеља" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Само пријатељи" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Само ја" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Јавно" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Пратиоци" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Приватно" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Пут одавде" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додај међу-одредиште" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Пут довде" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Шта је то овде?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Умножите место" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap налог" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Извези преглед" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "И_звези" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Укључи путеве и маркере" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Идите на текуће место" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Изаберите врсту карте" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Умањи" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Увећај" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Пребаците на планирање пута" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Пребаците на омиљене" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Опште" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Приказ пречица" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Претрага" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Покретање планирања пута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Излаз" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Отвара главни изборник" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Преглед карте" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Увећавање" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Умањивање" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Подешавање увећања" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Одлазак на тренутно место" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Пребаци на поглед са улице" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Пребаци на поглед из ваздуха" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Отвори слој облика" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Прикажи етикете" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Отвори слој облика…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Укључите услуге положаја да нађете ваш положај" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Откажи" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Подешавања положаја" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Ноћни режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Подеси OpenStreetMap налог" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Извези као слику" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Пречице на _тастатури" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "О Картама" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Отвори главни изборник" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Програм је ван мреже!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Потребна је радна интернет веза да би програм исправно радио, али није " +"доступна." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Проверите вашу везу и подешавања посредника." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap налог" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Пријавите се да бисте мењали карте" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Побољшајте карту користећи\n" +"OpenStreetMap налог." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Е-адреса" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Лозинка" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Регистрација" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Пријави ме" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Нажалост, то није прорадило. Пробајте поново или посетите\n" +"OpenStreetMap да бисте опоравили вашу лозинку." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Потврдни код се не подудара, пробајте поново." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Унесите потврдни код приказан изнад" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Потврди" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Пријављен" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш OpenStreetMap налог је сада активан." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Одјави ме" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Кућни број" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштански број" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Град" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Врста" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ништа" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додај поље" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Измене на карти ће бити видљиве на свим картама\n" +"које користе податке са OpenStreetMap пројекта." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно коришћено" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Следеће" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нема резултата" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Дошло је до грешке" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Превуци да би променио редослед пута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Отвори место" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копирај" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Пошаљи у…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Провери…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Отвори слој облика" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Отвори" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Подеси видљивост" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Претрага руте Граф Хопером" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршруте јавног превоза омогућује услуга треће стране.\n" +"Гном не може јемчити за тачност приказаних маршрута и заказаних полазака.\n" +"Знајте да неки достављачи неће укључити све могуће режиме превоза,\n" +"нпр.: национални достављач података неће приказати све авио превознике а\n" +"локални достављач неће приказати регионалне возне линије.\n" +"Приказани називи и робне марке се требају сматрати регистрованим робним " +"маркама\n" +"где је то могуће." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Прикажите још резултата" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сакриј станице и податке на маршрути" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Прикажи станице и податке на маршрути" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Полази сада" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Полази у" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Долази у" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Прикажи" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Аутобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваји" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Возови" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Подземна" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Трајекти" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Авиони" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Подели место" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Додајте у нови пут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Правци" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Означите омиљеним" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Увећај за додавање локације!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Увећај" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Неуспех при тражењу структуре плочица у фасцикли" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Нисам успео да обрадим ИксМЛ документ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Недостају потребне особине" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Нисам могао да нађем ОСМ елемент" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Путања до локалне фасцикле са структуром плочица" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Величина плочица за локални директоријум плочица" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Прикажи издање програма" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Занемари доступност мреже" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Изаберите налог" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Учитавам" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Изаберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Фејсбуком. Изаберите једно са списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Форсквером. Изаберите једно са списка." + +# Мисли се на рецепцију, хотеле. +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Пријави се у „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите изборну поруку за рецепцију „%s“." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не могу да нађем „%s“ у друштвеним услугама" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не могу да нађем одговарајуће место за пријаву на овом месту" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Уверења су истекла, отворите налоге на мрежи да се пријавите и укључите овај " +"налог" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ништа није нађено овде!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Локација је додата на карту. Знајте да ће требати мало времена пре него што " +"се појави на карти и у резултатима претраге." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Систем датотека је само за читање" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немате овлашћење да сачувате ту" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Директоријум не постоји" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Није наведено име датотеке" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не могу да извезем преглед" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Тренутни положај" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неисправна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "грешка у обрађивању" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "непозната геометрија" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Захтев пута није успео." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Нисам пронашао пут." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Крени!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Све датотеке слоја" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Нисам успео да се повежем на услугу положаја" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Мирослав Николић \n" +"Марко М. Костић \n" +"Борисав Живановић \n" +"\n" +"https://гном.срб — превод Гнома на српски језик" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Гномов програм за карте" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ауторска права © 2011 – 2021 Red Hat, Inc. и творци Гномових Карти" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Подаци о картама са платформе %s и од доприносилаца" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Плочице за карту су преузете са %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Претрагу омогућава %s помоћу %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Нисам успео да отворим слој" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Да ли желите да наставите?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Отварате датотеке сса укупном величином од %s MB. Биће потребно неко време " +"за учитавање" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Врста датотеке није подржана" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Нисам успео да отворим Гео-УРИ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неисправно корисничко име или лозинка" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успех" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Лош захтев" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Објекат није нађен" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Сукоб, неко други је управо изменио објекат" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Објекат је обрисан" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Пут или релација се односи на непостојеће дете" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Назив" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Званични назив. Обично назив који се налази на саобраћајним знаковима." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Веб страница" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ово није исправна адреса. Уверите се да сте укључили „http://“ или " +"„https://“." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Званична веб страница. Пробајте да унесете најосновнији облик адресе. На " +"пример: „http://primer.rs“ уместо „http://primer.rs/pocetna.html“." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Број телефона. Користите међународни формат где број почиње са плус знаком. " +"Обратите пажњу на локалне законе о заштити приватности, нарочито ако су у " +"питању приватни бројеви телефона." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Википедија" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Коришћени формат треба да садржи ознаку језика и наслов чланка. На пример: " +"„sr:Наслов чланка“." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Радно време" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Погледајте везу у етикети за више података о формату." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Становништво" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Висина" + +# Ми не морамо да пишемо "(height above sea lever)" јер сама реч „надморска висина“ описује да је у питању висина изнад мора. :) +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Надморска висина тачке у метрима." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Приступ инвалидима" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Не" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Ограничен" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Намењено" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Приступ интернету" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Бежични" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Жичани" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Интернет кафе" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Услуга" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Вероисповест" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Анимизам" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Бахаизам" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Будизам" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Каодаизам" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Хришћанство" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Конфучијанство" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Хиндуизам" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Ђаинизам" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Јудаизам" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Вишеструке вероисповести" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Паганизам" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Пастафаријанизам" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Сајентологија" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Шинтоизам" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Сикизам" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Спиритуализам" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Таоизам" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Унитарни универзализам" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Језидизам" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Зороастизам" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Тоалети" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Белешка" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Подаци за обавештавање других картографа о мање очигледним подацима о " +"елементу, намери аутора приликом стварања или о саветима за будућа побољшања." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Изабери врсту" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Неименовано место" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Неуспех при обради Гео путање" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Координате" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Тачност" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Тачност: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +#| msgid "House number" +msgid "Phone number" +msgstr "Број телефона" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Јавни приступ интернету" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +#| msgid "Internet access" +msgid "No internet access" +msgstr "Нема приступа интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Јавна бежична" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Жичани приступ интернету" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Рачунари доступни за коришћење" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Интернет испомоћ је доступна" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Нема доступних тоалета" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Тоалети су доступни" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Приступно инвалидима" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Ограничен приступ инвалидима" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Без приступа инвалидима" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Осмишљено за кориснике инвалиде" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Вероисповест:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Место није нађено на OpenStreetMap-у" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Неисправне координате у адреси" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Адреса није подржана" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Од %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Учитавам плочице карте за штампање" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете прекинути штампање ако ово потраје" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прекини штампање" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додај преко места" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Уклони преко места" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обрни пут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додај %s на %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Нисам успео да отворим путању" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Отвори програмом %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "нисам успео да учитам датотеку" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Процењено време: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруте су преузете са %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Креће у %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Крени" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешачите %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Долази у %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Долази" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Прикажи упутства за пешачење" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сакриј упутства за пешачење" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Учитај раније алтернативе" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Учитај старије алтернативе" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Нисам успео да нађем раније алтернативе." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Нисам успео да нађем старије алтернативе." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Нема редова вожњи за ову руту." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ниједан достављач није нађен за ову руту." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" +msgstr[1] "%s минута" +msgstr[2] "%s минута" +msgstr[3] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сат" +msgstr[1] "%s сата" +msgstr[2] "%s сати" +msgstr[3] "%s сат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сат" +msgstr[1] "%s:%s сата" +msgstr[2] "%s:%s сати" +msgstr[3] "%s:%s сат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "У времену" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "Од јутра до вечери" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +#| msgid "every day" +msgid "Every day" +msgstr "Сваког дана" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: src/translations.js:172 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Јавни празници" + +#: src/translations.js:174 +#| msgid "school holidays" +msgid "School holidays" +msgstr "Школски празници" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "није отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Непознато" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Тачно" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ч" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч %s м" +msgstr[1] "%s ч %s м" +msgstr[2] "%s ч %s м" +msgstr[3] "%s ч %s м" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин." +msgstr[1] "%s мин." +msgstr[2] "%s мин." +msgstr[3] "%s мин." + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s километара" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s метара" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s миља" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s стопа" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Овај прикључак не подржава последњи долазак" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Настави ка %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Настави" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Скрени лево код %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Скрени лево" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Скрени благо лево код %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Скрени благо лево" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Скрени оштро лево код %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Скрени оштро лево" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Скрени десно код %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Скрени десно" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Скрени благо десно код %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Скрени благо десно" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Скрени оштро десно код %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Скрени оштро десно" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "У кружном току, изађите %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "У кружном току, изађите код %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Идите на кружни ток" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Уђите у лифт и изађите на спрат %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Уђите у лифт" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Направите заокрет налево ка %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Направите заокрет налево" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Направите заокрет надесно ка %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Направите заокрет надесно" + +#~ msgid "Find a Route" +#~ msgstr "Нађи пут" + +#~ msgid "Check in here" +#~ msgstr "Проверите овде" + +#~ msgid "Show more information" +#~ msgstr "Прикажи још података" + +#~ msgid "Population:" +#~ msgstr "Број становника:" + +#~ msgid "Altitude:" +#~ msgstr "Висина:" + +#~ msgid "Opening hours:" +#~ msgstr "Радно време:" + +#~ msgid "Internet access:" +#~ msgstr "Приступ интернету:" + +#~ msgid "Toilets:" +#~ msgstr "Тоалети:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Приступ инвалидима:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "да" + +#~ msgid "limited" +#~ msgstr "ограничено" + +#~ msgid "no" +#~ msgstr "не" + +#~ msgid "designated" +#~ msgstr "намењено" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Неисправна OpenStreetMap адреса" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "жичани" + +#~ msgid "terminal" +#~ msgstr "интернет кафе" + +#~ msgid "service" +#~ msgstr "услуга" + +#~ msgid "Don’t have an account?" +#~ msgstr "Немате налог?" + +#~ msgid "%f h" +#~ msgstr "%f ч" + +#~ msgid "%f min" +#~ msgstr "%f мин." + +#~ msgid "%f s" +#~ msgstr "%f сек." + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Претрага руте преко Опен-Трип-Планера" + +#~ msgid "Add destination" +#~ msgstr "Додај одредиште" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Отворите другим програмом" + +#~ msgid "Press enter to search" +#~ msgstr "Притисните „унеси“ да претражите" + +#~ msgid "Quit" +#~ msgstr "Изађи" + +#~ msgid "OK" +#~ msgstr "У реду" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Отвори слој облика…" + +#~ msgid "Load Map Layer" +#~ msgstr "Учитај слој карте" + +#~ msgid "Open Layer" +#~ msgstr "Отвори слој" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f миља" + +#~ msgid "%f ft" +#~ msgstr "%f стопа" + +#~ msgid "Position not found" +#~ msgstr "Нисам пронашао положај" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Нисам успео да обрадим Гео-ЈСОН датотеку" + +#~ msgid "Country code: %s" +#~ msgstr "Шифра државе: %s" + +#~ msgid "Population: %s" +#~ msgstr "Становника: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Приступна рампа: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Последње познато место и прецизност" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Последње познато место корисника (географска ширина и дужина у степенима) " +#~ "и прецизност (у метрима)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Опис последњег познатог места корисника." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Да ли је корисник ручно подесио последње познато место." + +#~ msgid "I’m here!" +#~ msgstr "Ја сам овде!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Сателит" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 00000000..94102f39 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1712 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Miroslav Nikolić , 2013—2017. +# Borisav Živanović , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2018-02-22 22:22+0000\n" +"PO-Revision-Date: 2018-02-16 09:25+0100\n" +"Last-Translator: Marko M. Kostić \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.0.3\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Gnomove karte" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Nađite mesta širom sveta" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Gnomove Karte vam daju brz pristup kartama širom sveta. Omogućava vam da " +"brzo i lako pronađete mesto koje tražite tražeći grad ili ulicu, ili da " +"odredite mesto za susret sa prijateljima." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Ovaj program koristi zajedničku bazu podataka „OpenStreetMap“, koju stvaraju " +"stotine hiljada ljudi širom sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak i da potražite neka posebna mesta, kao što su „Gradski parkovi u " +"Jagodini“ ili „Hoteli u centru Pirota“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program za karte" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;karte;mape;karta;mapa;karte;mape;karta;mapa;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Dozvoljava da se vaša lokacija prikazuje na karti." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "poslednje pogledano mesto" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Koordinate poslednje pogledanog mesta." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Položaj prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (položeno i uspravno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Uvećavanje prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage za pretragu geokoda." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Broj skorašnjih mesta za čuvanje" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posećenih mesta za čuvanje." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Broj skorašnjih puteva koje treba sačuvati" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Broj skoro posećenih puteva koje treba sačuvati." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Podešavanje provere privatnosti Fejsbuka" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslednje podešavanje provere privatnosti Fejsbuka. Moguće vrednosti su: " +"„EVERYONE“ (svako), „FRIENDS_OF_FRIENDS“ (prijatelji prijatelja), " +"„ALL_FRIENDS“ (svi prijatelji) ili „SELF“ (sami)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Podešavanje provere privatnosti Forskvera" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslednje podešavanje provere privatnosti Forskvera. Moguće vrednosti su: " +"„public“ (javno), „followers“ (pratioci) ili „private“ (privatno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Forskverova provera Fejsbukovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao objavu u nalogu Fejsbuka " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Forskverova provera Tviterovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao cvrkut u nalogu Tvitera " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili e-adresa" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Pokazuje da li je korisnik prijavljen da bi mogao da uređuje OpenStreetMap " +"podatke." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Poslednja vrsta prevoza korišćena za pronalaženje puta" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Podesi OpenStreetMap nalog" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Prečice na _tastaturi" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Izađi" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Fejsbuku" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Tviteru" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Proveri" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svako" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo ja" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je to ovde?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Umnožite mesto" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Izvezi kao sliku" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap nalog" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Izvezi pregled" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "I_zvezi" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Uključi puteve i markere" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Opšte" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaz prečica" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pokretanje planiranja puta" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Štampaj put" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Izlaz" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pregled karte" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Uvećavanje" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Umanjivanje" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Podešavanje uvećanja" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Odlazak na trenutno mesto" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na pogled sa ulice" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na pogled iz vazduha" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj oblika" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +msgid "Open Shape Layer…" +msgstr "Otvori sloj oblika…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite usluge položaja da nađete vaš položaj" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Podešavanja položaja" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Idite na tekuće mesto" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Izaberite vrstu karte" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Zoom out" +msgstr "Umanji" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Zoom in" +msgstr "Uvećaj" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Prebacite na planiranje puta" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Prebacite na omiljene" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Štampaj put" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Program je van mreže!" + +#: ../data/ui/main-window.ui.h:17 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Potrebna je radna internet veza da bi program ispravno radio, ali nije " +"dostupna." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Proverite vašu vezu i podešavanja posrednika." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Dodajte u novi put" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Otvorite drugim programom" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Označite omiljenim" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Proverite ovde" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap nalog" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Prijavite se da biste menjali karte" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Poboljšajte kartu koristeći\n" +"OpenStreetMap nalog." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "E-adresa" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Lozinka" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Prijavi me" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "Nemate nalog?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije proradilo. Probajte ponovo ili posetite\n" +"OpenStreetMap da biste oporavili vašu lozinku." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "Potvrdni kod se ne podudara, probajte ponovo." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Unesite potvrdni kod prikazan iznad" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Potvrdi" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Prijavljen" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap nalog je sada aktivan." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Odjavi me" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Ulica" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Kućni broj" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Grad" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Vrsta" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Ništa" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Dodaj polje" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Komentar" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmene na karti će biti vidljive na svim kartama\n" +"koje koriste podatke sa OpenStreetMap projekta." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Nedavno korišćeno" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Otkaži" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sledeće" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Prikaži još podataka" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Pritisnite „unesi“ da pretražite" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "Nema rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Prevuci da bi promenio redosled puta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvorite mesto" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Otvori" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Otvori sloj oblika" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Podesi vidljivost" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Pretraga rute Graf Hoperom" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Pretraga rute preko Open-Trip-Planera" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Maršrute javnog prevoza omogućuje Gnom korišćenjem\n" +"redova vožnji nabavljenih od prevoznika ili agencija.\n" +"Ove firme i agencije se ne mogu smatrati odgovornim za prikazane rezultate.\n" +"Gnom ne može jemčiti za tačnost prikazanih maršruta i zakazanih polazaka.\n" +"Prikazani nazivi i robne marke se trebaju smatrati registrovanim robnim " +"markama\n" +"gde je to moguće." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikažite još rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Sakrij stanice i podatke na maršruti" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Prikaži stanice i podatke na maršruti" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Polazi sada" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Polazi u" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Dolazi u" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Prikaži" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Autobusi" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Tramvaji" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Vozovi" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Podzemna" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Trajekti" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutni položaj" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "U redu" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspeh pri traženju strukture pločica u fascikli" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nisam uspeo da obradim IksML dokument" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Nedostaju potrebne osobine" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Nisam mogao da nađem OSM element" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne fascikle sa strukturom pločica" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Prikaži izdanje programa" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izaberite nalog" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavam" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izaberite mesto" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Fejsbukom. Izaberite jedno sa spiska." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Forskverom. Izaberite jedno sa spiska." + +# Misli se na recepciju, hotele. +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se u „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napišite izbornu poruku za recepciju „%s“." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Došlo je do greške" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne mogu da nađem „%s“ u društvenim uslugama" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu da nađem odgovarajuće mesto za prijavu na ovom mestu" + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uverenja su istekla, otvorite naloge na mreži da se prijavite i uključite ovaj " +"nalog" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Put odavde" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Dodaj odredište" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Put dovde" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Ništa nije nađeno ovde!" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodata na kartu. Znajte da će trebati malo vremena pre nego što " +"se pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem datoteka je samo za čitanje" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate ovlašćenje da sačuvate tu" + +#: ../src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorijum ne postoji" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nije navedeno ime datoteke" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne mogu da izvezem pregled" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neispravna koordinata" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška u obrađivanju" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Zahtev puta nije uspeo." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Nisam pronašao put." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Nisam uspeo da se povežem na uslugu položaja" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "" +"Miroslav Nikolić \n" +"Marko M. Kostić \n" +"Borisav Živanović \n" +"\n" +"http://prevod.org — prevod na srpski jezik" + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Gnomov program za karte" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Pravo na kopiranje © 2011 – 2017 Red Hat, Inc. i tvorci Gnomovih Karti" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podaci o kartama sa platforme %s i od doprinosilaca" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Pločice za kartu su preuzete sa %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Nisam uspeo da otvorim sloj" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Nisam uspeo da otvorim Geo-URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Nisam uspeo da nađem ranije alternative." + +#: ../src/openTripPlanner.js:614 +msgid "No later alternatives found." +msgstr "Nisam uspeo da nađem starije alternative." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Nema redova vožnji za ovu rutu." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Uspeh" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Loš zahtev" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekat nije nađen" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, neko drugi je upravo izmenio objekat" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekat je obrisan" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Put ili relacija se odnosi na nepostojeće dete" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Zvanični naziv. Obično naziv koji se nalazi na saobraćajnim znakovima." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Veb stranica" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Zvanična veb stranica. Probajte da unesete najosnovniji oblik adrese. Na " +"primer: „http://primer.rs“ umesto „http://primer.rs/pocetna.html“." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format gde broj počinje sa plus znakom. " +"Obratite pažnju na lokalne zakone o zaštiti privatnosti, naročito ako su u " +"pitanju privatni brojevi telefona." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Vikipedija" + +#: ../src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišćeni format treba da sadrži oznaku jezika i naslov članka. Na primer: " +"„sr:Naslov članka“." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Radno vreme" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte vezu u etiketi za više podataka o formatu." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Stanovništvo" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +# Mi ne moramo da pišemo "(height above sea lever)" jer sama reč „nadmorska visina“ opisuje da je u pitanju visina iznad mora. :) +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska visina tačke u metrima." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup invalidima" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "da" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ograničen" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "namenjeno" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežični" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žičani" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Internet kafe" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Veroispovest" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizam" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Hrišćanstvo" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Konfučijanstvo" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Đainizam" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Višestruke veroispovesti" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarijanizam" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Sajentologija" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastizam" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Beleška" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podaci za obaveštavanje drugih kartografa o manje očiglednim podacima o " +"elementu, nameri autora prilikom stvaranja ili o savetima za buduća poboljšanja." + +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izaberi vrstu" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotovo" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Broj stanovnika:" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Visina:" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Radno vreme:" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Veroispovest:" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Toaleti:" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Pristup invalidima:" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefon:" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Neuspeh pri obradi Geo putanje" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "namenjeno" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavam pločice karte za štampanje" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti štampanje ako ovo potraje" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini štampanje" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +msgid "Add via location" +msgstr "Dodaj preko mesta" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +msgid "Remove via location" +msgstr "Ukloni preko mesta" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Obrni put" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Nisam uspeo da otvorim putanju" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nisam uspeo da učitam datoteku" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Procenjeno vreme: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazi u %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Dolazi" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Kreće u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +msgid "Start" +msgstr "Kreni" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Prikaži uputstva za pešačenje" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Sakrij uputstva za pešačenje" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Pešačite %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj starije alternative" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuta" +msgstr[2] "%d minuta" +msgstr[3] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sata" +msgstr[2] "%d sati" +msgstr[3] "%d sat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d sat" +msgstr[1] "%d:%02d sata" +msgstr[2] "%d:%02d sati" +msgstr[3] "%d:%02d sat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "u vremenu" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od jutra do večeri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "svakog dana" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "žičani" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "internet kafe" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f č" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min." + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f sek." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s kilometara" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s metara" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s milja" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s stopa" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milja" + +#~ msgid "%f ft" +#~ msgstr "%f stopa" + +#~ msgid "Position not found" +#~ msgstr "Nisam pronašao položaj" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nisam uspeo da obradim Geo-JSON datoteku" + +#~ msgid "Country code: %s" +#~ msgstr "Šifra države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Stanovnika: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pristupna rampa: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Poslednje poznato mesto i preciznost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Poslednje poznato mesto korisnika (geografska širina i dužina u stepenima) " +#~ "i preciznost (u metrima)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis poslednjeg poznatog mesta korisnika." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Da li je korisnik ručno podesio poslednje poznato mesto." + +#~ msgid "I’m here!" +#~ msgstr "Ja sam ovde!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..81cbe4f5 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,2082 @@ +# Swedish translations for gnome-maps package +# Svenska översättningar för paketet gnome-maps. +# Copyright © 2013-2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marcus Lundblad , 2013. +# Sebastian Rasmussen , 2015, 2016. +# Anders Jonsson , 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# Luna Jernberg , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-13 20:37+0100\n" +"Last-Translator: Anders Jonsson \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kartor" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Hitta platser i världen" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartor ger dig snabb tillgång till kartor över hela världen. Det låter dig " +"hitta platsen du letar efter genom att söka efter en stad eller gata eller " +"finna ett ställe att möta en vän på." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartor använder kartdatabasen OpenStreetMap, skapad genom samarbete av flera " +"hundratusentals personer över hela världen." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan till och med söka efter specifika platser såsom ”Pub nära " +"Drottninggatan, Stockholm” eller ”Hotell vid Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Kartor" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ett enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartor;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillåter att din plats visas på kartan." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "senaste visade plats" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater för senast visade plats." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomnivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Karttyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen av karta att visa (vägkarta, flygfoto o.s.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fönsterstorlek" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fönsterstorlek (bredd och höjd)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fönsterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fönsterposition (X och Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fönster maximerat" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tillstånd för maximerat fönster" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximalt antal sökresultat" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximalt antal sökresultat från geocode-sökning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal senaste platser att lagra" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senast besökta platser att lagra." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal senaste rutter att lagra" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senast besökta rutter att lagra." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Sekretessinställning för Facebook-incheckning" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Senaste använda sekretessinställning för Facebook-incheckning. Möjliga " +"värden är: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS eller SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Sekretessinställning för Foursquare-incheckning" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Senast använda sekretessinställning för Foursquare-incheckning. Möjliga " +"värden är: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Facebook-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Twitter-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Användarnamn hos OpenStreetMap eller e-postadress" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikerar om användaren har loggat in för att redigera OpenStreetMap-data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Senaste transporttyp för rutter" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattläge" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Huruvida programmet är i nattläge." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Använd hybridflygfotorutor" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Huruvida flygfotorutor ska använda hybridstil (med etiketter)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Posta på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Posta på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Checka in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alla" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vänners vänner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vänner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara jag" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publikt" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Följare" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rutt härifrån" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lägg till mellanliggande stopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rutt hit" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Vad finns här?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiera plats" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportera vy" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportera" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkludera rutt och markörer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Välj karttyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zooma ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zooma in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå på/av favoriter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allmänt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Visa genvägar" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Sök" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avsluta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zooma in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zooma ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Visa/dölj skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Växla till gatuvy" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Växla till flygfotovy" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Öppna formlager" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Visa etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Öppna formlager…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå på platstjänster för att hitta din plats" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Platsinställningar" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattläge" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfigurera OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportera som bild" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tangentbordsgenvägar" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kartor" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartor är frånkopplad!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartor behöver en aktiv internetanslutning för att fungera korrekt, men en " +"sådan kan ej hittas." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kontrollera din anslutning och proxyinställningar." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logga in för att redigera kartor" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjälp till att förbättra kartan via ett\n" +"OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lösenord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrera dig" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logga in" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Det fungerade tyvärr inte. Prova igen eller besök\n" +"OpenStreetMap för att återställa ditt lösenord." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifieringskoden stämde inte, prova igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Mata in verifieringskoden som visas ovan" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiera" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Inloggad" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ditt OpenStreetMap-konto är aktivt." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logga ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Postort" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lägg till fält" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartändringar kommer synas på alla kartor som använder\n" +"OpenStreetMap-data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senast använda" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Nästa" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Inga resultat hittades" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Ett fel har inträffat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra för att ändra ruttens ordning" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Öppna plats" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiera" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Skicka till…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Checka in…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Öppna formlager" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Öppna" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå på/av favoriter" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruttsökning utförd av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Resväg för kollektivtrafik tillhandahålls av tredjepartstjänster.\n" +"GNOME kan inte garantera korrektheten hos resvägarna och tabellerna som " +"visas.\n" +"Observera att vissa operatörer kanske inte inkluderar alla möjliga " +"färdsätt,\n" +"t.ex. visar en nationell operatör kanske inte flyglinjer, och en lokal\n" +"operatör saknar kanske regionala tåg.\n" +"Namn och varumärken som visas anses vara registrerade varumärken då " +"tillämpligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Visa fler resultat" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Dölj mellanliggande stopp och information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Visa mellanliggande stopp och information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Åk nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Åk tidigast" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Anländ senast" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Visa" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussar" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Spårvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tåg" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Tunnelbana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Färjor" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flygplan" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Dela plats" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Lägg till ny rutt" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Vägbeskrivning" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markera som favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zooma in för att lägga till plats!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zooma in" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Misslyckades med att hitta rutstruktur i katalog" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Misslyckades med att tolka XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Saknar nödvändiga attribut" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunde inte hitta OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sökväg till en lokal katalogstruktur med kartrutor" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Rutstorlek för lokal katalog med kartrutor" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Visa programmets version" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorera nätverkets tillgänglighet" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Välj ett konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Läser in" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Välj en plats" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Facebook. Välj en från " +"denna lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Foursquare. Välj en från " +"denna lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Checka in på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv ett valfritt meddelande för att checka in på %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan inte hitta ”%s” i den sociala tjänsten" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan inte hitta en lämplig plats att checka in på denna plats" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Inloggningsuppgifterna har gått ut, öppna Nätkonton för att logga in och " +"aktivera detta konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting hittades här!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Plats lades till på kartan, observera att det kan ta ett tag innan det syns " +"på kartan och bland sökresultaten." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartor vid %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet är skrivskyddat" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har inte rättigheter att spara där" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen existerar inte" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Inget filnamn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ej exportera vy" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktuell plats" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ogiltig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "tolkningsfel" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "okänd geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ruttbegäran misslyckades." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Hittade ingen rutt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Starta!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alla lagerfiler" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Misslyckades att ansluta till platstjänst" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Marcus Lundblad \n" +"Anders Jonsson \n" +"Luna Jernberg \n" +"Skicka synpunkter på översättningen till\n" +"." + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Ett kartprogram för GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. och upphovsmännen för GNOME Maps" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata från %s och bidragsgivare" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartrutor tillhandahållna av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Sökning tillhandahålls av %s med %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Misslyckades med att öppna lager" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Vill du fortsätta?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Du håller på att öppna filer med en total storlek på %s MB. Dessa kan ta " +"lite tid att läsa in" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Filtypen stöds inte" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Misslyckades med att öppna GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Framgång" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Felaktig begäran" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt hittades ej" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, någon annan har precis modifierat objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet har tagits bort" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Väg eller relation refererar till obefintliga barn" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Namn" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officiella namnet. Detta är typiskt vad som visas på skyltar." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adress" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Webbplats" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Det här är inte en giltig URL. Se till att inkludera http:// eller https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officiella webbplatsen. Försök att använda den mest grundläggande formen " +"för en URL, d.v.s. http://example.com istället för http://example.com/index." +"html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Använd det internationella formatet som börjar med ett " +"plustecken. Var uppmärksam på lokala sekretesslagar, speciellt för privata " +"telefonnummer." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet som används bör inkludera språkkoden och artikeltiteln, t.ex. ”sv:" +"Artikelns titel”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Öppettider" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Se länken i etiketten för hjälp om formatet." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Folkmängd" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Höjd över havet" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höjd (höjd över havet) för en plats i meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Åtkomst för rullstol" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Begränsad" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Avsett för" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internetåtkomst" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Trådlöst" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Tjänst" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Cao đai" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfucianism" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judendom" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Flera religioner" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitaristisk universalism" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Anteckning" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information som används för att informera andra karterare om icke uppenbar " +"information om ett element, personens avsikt då det skapades, eller tips på " +"hur det kan förbättras ytterligare." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Välj typ" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Klar" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Namnlös plats" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Misslyckades med att tolka geo-URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Noggrannhet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Noggrannhet: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Öppen internetåtkomst" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ingen internetåtkomst" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Öppet Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Trådbunden internetåtkomst" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Datorer tillgängliga för användning" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internethjälp tillgänglig" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Inga toaletter tillgängliga" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toaletter tillgängliga" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Rullstolsanpassat" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Begränsad rullstolsanpassning" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Inte rullstolsanpassat" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Designat för rullstolsburna" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Platsen hittades inte i OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaterna i URL:en är felaktiga" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL:en stöds inte" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Från %s till %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Läser in kartrutor för utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryta utskriften om detta tar för lång tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lägg till position att passera" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ta bort position att passera" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vänd rutt" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lägg till %s till %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Misslyckades med att öppna URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Öppna med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "misslyckades med att läsa in fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Uppskattad tid: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Resvägar tillhandahållna av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starta från %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Starta" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Anländ vid %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Anländ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Visa gånginstruktioner" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Dölj gånginstruktioner" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Läs in tidigare alternativ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Läs in senare alternativ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Inga tidigare alternativ hittades." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Inga senare alternativ hittades." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Inga tidtabellsdata hittades för denna rutt." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen operatör hittades för denna rutt." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s timme" +msgstr[1] "%s timmar" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s timme" +msgstr[1] "%s:%s timmar" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Dygnet runt" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Från soluppgång till solnedgång" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Varje dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Allmänna helgdagar" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Skollov" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "inte öppen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Okänd" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exakt" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s fot" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Denna insticksmodul stöder inte senaste ankomsttid" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsätt på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsätt" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sväng vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sväng vänster" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sväng svagt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sväng svagt vänster" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sväng kraftigt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sväng kraftigt vänster" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sväng höger på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sväng höger" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sväng svagt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sväng svagt höger" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sväng kraftigt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sväng kraftigt höger" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avfart %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avfart till %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Ta rondellen" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta hissen och stig av på %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ta hissen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Gör en u-sväng åt vänster in på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Gör en u-sväng åt vänster" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Gör en u-sväng åt höger in på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Gör en u-sväng åt höger" + +#~ msgid "Find a Route" +#~ msgstr "Hitta en rutt" + +#~ msgid "Check in here" +#~ msgstr "Checka in här" + +#~ msgid "Show more information" +#~ msgstr "Visa fler resultat" + +#~ msgid "Population:" +#~ msgstr "Folkmängd:" + +#~ msgid "Altitude:" +#~ msgstr "Höjd över havet:" + +#~ msgid "Opening hours:" +#~ msgstr "Öppettider:" + +#~ msgid "Internet access:" +#~ msgstr "Internetåtkomst:" + +#~ msgid "Toilets:" +#~ msgstr "Toaletter:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Åtkomst för rullstol:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begränsad" + +#~ msgid "no" +#~ msgstr "nej" + +#~ msgid "designated" +#~ msgstr "avsett för" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL:en är felaktig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "trådbunden" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "tjänst" + +#~ msgid "Primary menu" +#~ msgstr "Primär meny" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du inte ett konto?" + +#~ msgid "%f h" +#~ msgstr "%f tim" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lägg till destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruttsökning utförd av OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Öppna med annat program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryck på retur för att söka" + +#~ msgid "Quit" +#~ msgstr "Avsluta" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Öppna formlager…" + +#~ msgid "Load Map Layer" +#~ msgstr "Läs in kartlager" + +#~ msgid "Open Layer" +#~ msgstr "Öppna lager" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f engelska mil" + +#~ msgid "%f ft" +#~ msgstr "%f fot" + +#~ msgid "Position not found" +#~ msgstr "Plats hittades ej" + +#~ msgid "Country code: %s" +#~ msgstr "Landskod: %s" + +#~ msgid "Population: %s" +#~ msgstr "Folkmängd: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Åtkomst för rullstol: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Misslyckades med att tolka GeoJSON-fil" + +#~ msgid "Export to PNG" +#~ msgstr "Exportera till PNG" + +#~ msgid "_Share" +#~ msgstr "_Dela" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Senast kända plats och noggrannhet" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Senast kända plats (latitud och longitud i grader) och noggrannhet (i " +#~ "meter)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Beskrivning av senast kända plats för användaren." + +#~ msgid "User set last known location" +#~ msgstr "Användaren angav senast kända plats." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Huruvida senast kända plats angavs manuellt av användaren." + +#~ msgid "I’m here!" +#~ msgstr "Jag är här!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Till" + +#~ msgid "From" +#~ msgstr "Från" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satellit" diff --git a/po/ta.po b/po/ta.po new file mode 100644 index 00000000..67a3716c --- /dev/null +++ b/po/ta.po @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# அருள்ராஜன் அ லை , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-26 10:29+0000\n" +"PO-Revision-Date: 2013-10-27 09:31+0530\n" +"Last-Translator: அருள்ராஜன் அ லை \n" +"Language-Team: தமிழ் <>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "வரைபடங்கள்" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ஓர் எளிய வரைபட பயன்பாடு" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "வரைபடங்கள்;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "சாளர அளவு" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "சாளர அளவு (அகலம் மற்றும் உயரம்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "சாளர அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "சாளர அமைவிடம் (X மற்றும் Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "சாளரம் பெரிதாக்கப்பட்டது" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "சாளரம் பெரிதாக்கப்பட்ட நிலை." + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் மற்றும் துல்லியம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"கடைசியாகத் தெரிந்த அமைவிடம்(அட்சரேகை மற்றும் தீர்க்கரேகை பாகைகளில்) மற்றும் துல்லியம்" +"(மீட்டரில்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "கடைசியாகத் தெரிந்த அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "கடைசியாகத் தெரிந்த பயனரின் அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "புவிக்குறீயீடு மூலமான தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "கடைசியாக அமைக்கப்பட்ட பயனர் அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் பயனரால் அமைக்கப்பட்டதா?" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "இதைப் பற்றி" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "வெளியேறு" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "இங்கு உள்ளதென்ன?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "நான் இங்குள்ளேன்!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "translator-credits" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME-க்கான வரைபட பயன்பாடு" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "தெரு" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "செயற்கைக்கோள்" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "தெரியாதது" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "மிகச்சரியான" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " கிமீ²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"அமைவிடத்தின் துல்லியம்: %s" diff --git a/po/te.po b/po/te.po new file mode 100644 index 00000000..57f7f07f --- /dev/null +++ b/po/te.po @@ -0,0 +1,188 @@ +# Telugu translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Praveen Illa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-03-21 07:58+0000\n" +"PO-Revision-Date: 2014-03-21 22:26+0530\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"పటాలు మీకు ప్రపంచవ్యాప్తంగా ఉన్న పటాలకు శీఘ్రంగా ప్రాప్యతను కల్పిస్తుంది. ఒక నగరం లేదా వీధి, లేదా ఒక " +"స్నేహితుడు కలుసుకునే ప్రదేశాన్ని ప్రవేశపెట్టి వెదకడం ద్వారా మీరు వెతుకుతున్న ప్రదేశాన్ని త్వరగా కనుగొనడంలో " +"సహకరిస్తుంది." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • దేశము, ప్రాంతము, పట్టణం లేదా వీధి కోసం వెతకండి.
  • నిర్దిష్ట స్థానముల కోసం వెతకండి, " +"“Theatres near RTC X Roads, Hyderabad” లేదా “Wi-Fi Access near Ameerpet, " +"Hyderabad” వంటివి.
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"పటాలు ప్రపంచవ్యాప్తంగా వేలమంది వ్యక్తుల సహకారంతో తయారుచేయబడిన ఓపెన్‌స్ట్రీట్‌మ్యాప్ డేటాబేసును వినియోగిస్తుంది." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:55 +#: ../src/mainWindow.js:300 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "పటాలు" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ఒక సరళ పటముల అనువర్తనం" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "పటాలు;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "కిటికీ పరిమాణం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "కిటికీ పరిమాణం (వెడల్పు మరియు ఎత్తు)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "కిటికీ స్థానము" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "కిటికీ స్థానము (X మరియు Y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "కిటికీ పెద్దగా చేయబడింది" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "కిటికీ పెద్దగా చేయబడిన స్థితి" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "చివరిగా తెలిసిన స్థానము మరియు ఖచ్ఛితత్వం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "చివరిగా తెలిసిన స్థానము (అక్షాంశము, రేఖాంశము డిగ్రీలలో) మరియు ఖచ్ఛితత్వం (మీటర్లలో)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "చివరిగా తెలిసిన స్థానము యొక్క వివరణ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "చివరిగా తెలిసిన స్థాన వాడుకరి యొక్క వివరణ." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "జియోకోడ్ శోధన నుండి గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "చివరిగా తెలిసిన స్థానమును వాడుకరి అమర్చు" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "చివరిగా తెలిసిన స్థానమును మానవీయంగా వాడుకరి అమర్చాలా వద్దా." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "భద్రపరుచాల్సిన ఇటీవలి ప్రదేశాల సంఖ్య." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "భద్రపరుచాల్సిన ఇటీవలి సందర్శించిన ప్రదేశాల సంఖ్య." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "గురించి" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "నిష్క్రమించు" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ఇక్కడ ఏమి ఉంది?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "ఇక్కడ ఉన్నాను!" + +#: ../src/mainWindow.js:298 +msgid "translator-credits" +msgstr "Praveen Illa , 2013, 2014." + +#: ../src/mainWindow.js:301 +msgid "A map application for GNOME" +msgstr "గ్నోమ్ కొరకు రూపొందించిన పటము అనువర్తనం" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "వీధి" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ఉపగ్రహం" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:164 +msgid "Unknown" +msgstr "తెలియదు" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:167 +msgid "Exact" +msgstr "ఖచ్ఛితం" + +#: ../src/mapLocation.js:177 +msgid " km2" +msgstr " కిమీ2" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +#, javascript-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"స్థానము ఖచ్ఛితత్వం: %s" + +#~ msgid " km²" +#~ msgstr "కిమీ²" diff --git a/po/tg.po b/po/tg.po new file mode 100644 index 00000000..b11d4eee --- /dev/null +++ b/po/tg.po @@ -0,0 +1,678 @@ +# Tajik translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Victor Ibragimov , 2013, 2014, 2015 +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-03-16 19:54+0000\n" +"PO-Revision-Date: 2015-03-17 09:59+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Харитаҳо барои шумо ба тамоми ҳаритаҳои ҷаҳон имкони дастраси зуд медиҳад. " +"Ин барнома ба шумо инчунин имкон медиҳад, ки тавонед шаҳр ё кӯчаи " +"мехостагиро ёфт кунед ё барои бо дӯстон фохӯрдан маконро муайян кунед." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Харитаҳо пойгоҳи иттилоотии OpenStreetMap-ро, ки бо миллионҳо одам аз тамоми " +"ҷаҳон ташкил шудааст, истифода мебарад." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Шумо ҳатто метавонед навъи маконҳои махсусро, монанди “Қаҳвахонаҳо дар назди " +"хиёбони Рудакӣ” ё “Меҳмонхонаҳо дар назди хиёбони Рудакӣ, Душанбе” ҷустуҷӯ " +"кунед." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:367 +msgid "Maps" +msgstr "Харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Барномаи оддии харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Харитаҳо;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Андозаи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Андозаи равзана (бар ва баландӣ)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Мавқеи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Мавқеи равзана (X ва Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Равзана дар ҳадди аксар" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Вазъияти ҳадди акcаpёбии равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ аз ҷустуҷӯи рамзи ҷуғрофӣ." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Миқдори маконҳои охирин барои нигоҳ доштан" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Миқдори маконҳои кушодашудаи охирин барои нигоҳ доштан." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Facebook. Қиматҳои " +"имконпазир: ҲАР ЯК КАС, ДӮСТОНИ_ДӮСТОН, ҲАМАИ_ДӮСТОН ё ХУД." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Foursquare. Қиматҳои " +"имконпазир: иҷтимоӣ, пайравон ё махфият." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Пахшкунии бақайдгирии Facebook дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Facebook-и марбут ба ҳисоби Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Пахшкунии бақайдгирии Twitter дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Twitter-и марбут ба ҳисоби Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Дар бораи барнома" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Хуруҷ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Қобили намоиш" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Интишор дар Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Интишор дар Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Бақайдгирӣ" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Ҳар як кас" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Дӯстони дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Танҳо дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Танҳо ман" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Ҷамъиятӣ" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Пайравон" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Махфӣ" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Дар он ҷо чист?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Барои ёфтани ҷойгиршавии худ, хидматҳои ҷойгиршавиро фаъол кунед" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Танзимоти ҷойгиршавӣ" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Гузариш ба ҷойгиршавии ҷорӣ" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Интихоби намуди харита" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Фаъолсозии нақшакаши масирҳо" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Фаъолсозии баргузидаҳо" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Харитаҳо дар офлайн мебошанд!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Барои кори комил ба Харитаҳо пайвасти интернети фаъол лозим аст, вале " +"пайваст ёфт нашуд." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Танзимоти прокси ва пайвасти худро санҷед." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Илова кардан ба масири нав" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Кушодан бо барномаи дигар" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Қайд кардан ҳамчун баргузида" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Инҷо ба қайд гиред" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Барои ҷустуҷӯ Enter-ро пахш кунед" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Кушодани ҷойгиршавӣ" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Кушодан" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Ҷустуҷӯи масир тавассути GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намоиш додани натиҷаҳи дигар" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Ҷойгиршавии ҷорӣ" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Саҳеҳӣ: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:136 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "\"%s\" дар хидмати иҷтимоӣ ёфт нашуд" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Барои бақайдгирии ин макон, ҷои мувофиқ ёфт нашуд" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Муҳлати маълумоти корбар ба анҷом расид, лутфан барои ворид шудан ва фаъол " +"кардани ин ҳисоб, ба Ҳисобҳои онлайн ворид шавед" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Хато ба амал омад" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Ҳисоберо интихоб кунед" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Дар ҳоли боргирӣ" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Маконеро интихоб кунед" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Facebook ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Foursquare ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Check in to %s" +msgstr "Бақайдгирӣ ба %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Барои бақайдгирӣ ба %s, паёми интихобиро нависед." + +#: ../src/mainWindow.js:315 +msgid "Failed to connect to location service" +msgstr "Пайваст ба хидмати ҷойгиршавӣ иҷро нашуд" + +#: ../src/mainWindow.js:320 +msgid "Position not found" +msgstr "Мавқеъ ёфт нашуд" + +#: ../src/mainWindow.js:365 +msgid "translator-credits" +msgstr "Victor Ibragimov, victor.ibragimov@gmail.com" + +#: ../src/mainWindow.js:368 +msgid "A map application for GNOME" +msgstr "Барномаи харитаҳо барои GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "ҳа" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "маҳдуд" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "муайяншуда" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Ягон масир ёфт нашуд" + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Дархости масир қатъ шуд." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Оғоз!" + +#: ../src/placeBubble.js:102 +#, javascript-format +msgid "Postal code: %s" +msgstr "Рамзи почта: %s" + +#: ../src/placeBubble.js:104 +#, javascript-format +msgid "Country code: %s" +msgstr "Рамзи кишвар: %s" + +#: ../src/placeBubble.js:113 +#, javascript-format +msgid "Population: %s" +msgstr "Аҳолӣ: %s" + +#: ../src/placeBubble.js:116 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Соатҳои кушоиш: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Дастрасӣ бо аробаи маъюбӣ: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Вақти тахминӣ: %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "дар гирди соат" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "аз тулӯъ то шафақ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "ҳар рӯз" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "идҳои ҷамъиятӣ" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "идҳои мактабӣ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "кушода нест" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Номаълум" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Дақиқ" + +#: ../src/utils.js:355 +#, javascript-format +msgid "%f h" +msgstr "%f соат" + +#: ../src/utils.js:357 +#, javascript-format +msgid "%f min" +msgstr "%f дақиқа" + +#: ../src/utils.js:359 +#, javascript-format +msgid "%f s" +msgstr "%f сония" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +#, javascript-format +msgid "%f km" +msgstr "%f км" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +#, javascript-format +msgid "%f m" +msgstr "%f м" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +#, javascript-format +msgid "%f mi" +msgstr "%f мил" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +#, javascript-format +msgid "%f ft" +msgstr "%f фут" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Ҷойгиршавии охирин ва дақиқӣ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Ҷойгиршавии охирин (арз ва тӯл дар дараҷаҳо) ва дақиқӣ (дар метрҳо)." + +#~ msgid "Description of last known location" +#~ msgstr "Тавсифи ҷойгиршавии охирин" + +#~ msgid "Description of last known location of user." +#~ msgstr "Тавсифи ҷойгиршавии охирини корбар." + +#~ msgid "User set last known location" +#~ msgstr "Ҷойгиршавии охирини таъиншудаи корбар" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Интихоби ҷойгиршавии охирини муайяншуда ба таври дастӣ аз ҷониби корбар." + +#~ msgid "I’m here!" +#~ msgstr "Ман дар ҳамон ҷоям!" + +#~ msgid "Street" +#~ msgstr "Кӯча" + +#~ msgid "Satellite" +#~ msgstr "Радиф" + +#~ msgid " km2" +#~ msgstr " км2" + +#~ msgid " km²" +#~ msgstr " км²" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 00000000..24aa30fb --- /dev/null +++ b/po/tr.po @@ -0,0 +1,2038 @@ +# Turkish translation for gnome-maps. +# Copyright (C) 2013-20212021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Gökhan Gurbetoğlu , 2014, 2015. +# Osman Karagöz , 2017. +# Çağatay Yiğit Şahin , 2017. +# Furkan Ahmet Kara , 2018. +# Muhammet Kara , 2013, 2014, 2015, 2016, 2018. +# Ahmet Elgun , 2019. +# Sabri Ünal , 2013, 2017, 2018, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-06 22:27+0300\n" +"Last-Translator: Emin Tufan Çetin \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.1\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Haritalar" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Dünya genelindeki yerleri bul" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Haritalar, dünya çapındaki haritalara hızla erişmenizi sağlar. Şehir ya da " +"sokak araması yoluyla aramakta olduğunuz yeri hızla bulmanızı veya " +"arkadaşınızla buluşacağınız yeri belirlemenizi sağlar." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Haritalar, küresel çapta yüzbinlerce insanca hazırlanan OpenStreetMap ile " +"ortak veri tabanını kullanır." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Üstelik “Kızılay, Ankara yakınındaki Lokantalar” ya da “Ulus, Ankara " +"yakınındaki Oteller” gibi belirli türde yerleri bile arayabilirsiniz." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME Projesi" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Haritalar" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Basit harita uygulaması" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Haritalar;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Konumunuzun haritada gösterilmesini sağlar." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "son görüntülenen konum" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Son görüntülenen konumun koordinatları." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "yakınlaştırma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Yakınlaştırma düzeyi" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Harita türü" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Görüntülenecek haritanın türü (sokak, uydu, vb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Pencere boyutu" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Pencere boyutu (genişlik ve yükseklik)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pencere konumu" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pencere konumu (X ve Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Pencere büyültüldüğünde" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Pencerenin büyütülme durumu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Azami arama sonucu sayısı" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode aramasından azami arama sonucu sayısı." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saklanacak son konumların sayısı" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen yerlerin sayısı." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saklanacak son rotaların sayısı" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen rotaların sayısı." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook yer bildirimi gizlilik ayarı" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Son kullanılan Facebook yer bildirimi gizlilik ayarı. Olası değerler: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare yer bildirimi gizlilik ayarı" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Son kullanılan Foursquare yer bildirimi ayarı. Olası değerler: herkese açık, " +"takipçiler veya gizli." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare yer bildirimi için Facebook yayını" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Facebook " +"hesabında gönderi olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare yer bildirimi için Twitter yayını" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Twitter " +"hesabında tweet olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap kullanıcı adı ya da e-posta adresi" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Kullanıcının OpenStreetMap verilerini düzenlemek için oturup açıp açmamış " +"olduğunu belirtir." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Yönlendirme için son kullanılan ulaşım şekli" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Gece kipi" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Uygulamanın gece kipinde olup olmadığı." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hibrit uydu döşemelerini kullan" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Uydu döşemelerinin hibrit biçim (etiketli) kullanıp kullanmayacağı." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Görünürlük" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook’a Gönder" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter’a Gönder" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_İptal" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Yer bildirimi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Herkes" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Arkadaşların arkadaşları" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Yalnızca arkadaşlar" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Yalnızca ben" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Herkese açık" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Takipçiler" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Gizli" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Buradan rota" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ara durak ekle" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Buraya rota" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Burada ne var?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Konumu Kopyala" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Görünümü dışa aktar" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Dışa _Aktar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Rota ve imleçleri içer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Harita türü seç" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Uzaklaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Yakınlaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Gözdeleri aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Rotayı Yazdır" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Genel" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Kısayolları göster" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ara" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Rotayı yazdır" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Çıkış" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Harita Görünümü" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Yakınlaş" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uzaklaş" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ölçeği değiştir" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Sokak görünümüne geç" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Kuş bakışı görünüme geç" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Biçim katmanını aç" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etiketleri Göster" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Biçim Katmanını Aç…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Konumunuzu bulmak için konum hizmetlerini etkinleştirin" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "İptal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Konum Ayarları" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gece Kipi" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Hesabını Ayarla" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Resim Olarak Dışarıya Aktar" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Haritalar Hakkında" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Haritalar çevrim dışı!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Haritaların çalışması için kullanılabilir internet bağlantısı gerekli, ancak " +"bağlantı yok." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Bağlantı ve vekil sunucu ayarlarınızı denetleyin." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Hesabı" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Haritaları düzenlemek için oturum " +"açın" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap hesabı kullanarak\n" +"haritayı iyileştirmeye yardım edin." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-posta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parola" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Kaydol" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Oturum Aç" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Üzgünüm, işe yaramadı. Lütfen yeniden deneyin ya da parolanızı sıfırlamak " +"için\n" +"OpenStreetMap’i ziyaret edin." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Doğrulama kodu eşleşmedi, lütfen yeniden deneyin." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Yukarıda gösterilen doğrulama kodunu girin" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Doğrula" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Oturum Açıldı" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap hesabınız etkin." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Oturumu Kapat" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Cadde/Sokak" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Bina numarası" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta kodu" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Şehir" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tür" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Yok" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Alan Ekle" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Yorum" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Harita değişiklikleri, OpenStreetMap verilerini\n" +"kullanan tüm haritalarda görünür olacaktır." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Sok Kullanılan" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "İleri" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hiçbir sonuç bulunamadı" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Hata oluştu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Rota sıralamasını değiştirmek için sürükle" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Konum Aç" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopyala" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Gönder…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Yer Bildirimi…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Biçim Katmanını Aç" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Aç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Görünürlüğü aç/kapat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper ile rota arama" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Toplu taşımada rota yönergeleri üçüncü taraf hizmetleri tarafından " +"sağlanır.\n" +"GNOME gösterilen rota yönergelerinin ve çizelgelerin doğruluğunu garanti " +"edemez.\n" +"Bazı sağlayıcıların var olan tüm taşıma kiplerini içermeyebileceğini " +"unutmayın; \n" +"ör. ulusal bir sağlayıcı havayollarını içermeyebilir ve yerel bir sağlayıcı " +"bölgesel trenleri kaçırabilir.\n" +"Adlar ve markalar uygulanabilir olduğunda tescilli marka olarak " +"değerlendirilmelidir." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Daha çok sonuç göster" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ara durakları ve bilgiyi gizle" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ara durakları ve bilgiyi göster" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Şimdi Çık" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "İtibaren Çık" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Öncesinde Var" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Göster" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Otobüsler" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaylar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenler" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrolar" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feribotlar" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Uçaklar" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Konum paylaş" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Yeni rotaya ekle" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Yönergeler" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Gözde olarak imle" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Konum eklemek için yakınlaştırın!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Yakınlaştır" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Dizinde döşeme yapısı bulunamadı" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML belgesini ayrıştırma başarısız" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Gerekli öznitelikler eksik" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ögesi bulunamadı" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Yerel döşeme dizini yapısını barındıran yol" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Yerel döşeme dizini için döşeme boyutu" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Programın sürümünü göster" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ağ uygunluğunu göz ardı et" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DOSYA…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Hesap seç" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Yükleniyor" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Yer seç" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Haritalar Facebook ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Haritalar Foursquare ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s için yer bildiriminde bulun" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s’den yer bildiriminde bulunmak için isteğe bağlı ileti girin." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Sosyal hizmette “%s” bulunamıyor" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Bu konumda yer bildirimi yapılabilecek uygun yer bulunamıyor" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Oturumun süresi doldu, giriş yapıp bu hesabı etkinleştirmek için lütfen " +"Çevrim İçi Hesapları açın" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Burada bir şey bulunamadı!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Konum haritaya eklendi, arama sonuçlarında haritada gösterilmesi biraz zaman " +"alabilir." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f konumunda haritalar.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosya sistemi salt okunur" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oraya kaydetmek için gerekli izniniz yok" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Dizin yok" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Dosya adı belirtilmedi" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Görüntü aktarılamıyor" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Geçerli Konum" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "geçersiz koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ayrıştırma hatası" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "bilinmeyen geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Rota isteği başarısız oldu." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Hiçbir rota bulunamadı." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Başla!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tüm Katman Dosyaları" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Konum hizmetine bağlanma başarısız oldu" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Muhammet Kara \n" +"Emin Tufan Çetin \n" +"Gökhan Gurbetoğlu \n" +"Osman Karagöz \n" +"Çağatay Yiğit Şahin \n" +"Furkan Ahmet Kara \n" +"Ahmet Elgun \n" +"Sabri Ünal " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "GNOME için harita uygulaması" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Telif Hakkı © 2011 – 2021 Red Hat, Inc. ve GNOME Haritalar yazarları" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s ve katkıcılar tarafından harita verisi" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Harita döşemeleri %s tarafından sağlanmıştır" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Arama %s tarafından %s kullanılarak sağlanmıştır" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Katman açma başarısız oldu" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Sürdürmek ister misiniz?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Toplam boyutu %s MB olan dosyaları açmak üzeresiniz. Bunun yüklenmesi biraz " +"sürebilir" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Dosya türü desteklenmiyor" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI açma başarısız" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Hatalı kullanıcı adı veya parola" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Başarılı" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Geçersiz istek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nesne bulunamadı" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Çakışma; nesneyi az önce başkası değiştirdi" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Nesne silindi" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Yol ya da ilişki, var olmayan alt nesneye başvuruyor" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Ad" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Resmi ad. Genellikle tabelalarda yer alan addır." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Web sitesi" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Bu geçerli bir URL değil. http:// veya https:// içerdiğinden emin olun." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Resmi web sitesi. URL adresinin en temel halini kullanmaya çalışın. Örn. " +"http://ornek.com/index.html yerine http://ornek.com." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefon numarası. + imiyle başlayan uluslararası biçimi kullanın. Özellikle " +"kişisel telefon numaraları konusunda, yerel kişisel gizlilik yasalarına " +"dikkat edin." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Vikipedi" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Kullanılan biçim, dil kodu ve makale başlığı içermeli “tr:Makale başlığı” " +"gibi." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Açılış saatleri" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Biçimdeki yardım için etiketteki bağlantıyı gör." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Nüfus" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Yükseklik" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Bir noktanın metre türünden yükseltisi (deniz seviyesinden yüksekliği)." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Tekerlekli sandalye erişimi" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Evet" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Hayır" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Sınırlı" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Belirlenmiş" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "İnternet erişimi" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Kablosuz" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Kablolu" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Hizmet" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Din" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahâîlik" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budizm" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Hristiyanlık" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfüçyüsçülük" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Caynizm" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Musevilik" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "İslam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Çoklu Dinler" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganizm" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafaryanizm" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Şinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sihizm" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Ruhiyatçılık" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoculuk" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Üniteryen Üniversalizm" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yezidilik" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianizm" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Tuvaletler" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Not" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Bir ögeyle ilgili bariz olmayan bilgiler, yazarın onu yaratırkenki niyeti " +"veya ileriki geliştirmeler için ipuçlarıyla ilgili diğer haritacıları " +"bilgilendirmek için kullanılan bilgiler." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Tür Seç" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Bitti" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Adsız yer" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI ayrıştırma başarısız" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinatlar" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Doğruluk" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Doğruluk: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefon numarası" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Halka açık internet erişimi" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "İnternet erişimi yok" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Halka açık Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Kablolu internet erişimi" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Kullanıma hazır bilgisayar var" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "İnternet desteği var" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Tuvalet yok" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Tuvalet var" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Tekerlekli sandalye erişimli" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Kısıtlı tekerlekli sandalye erişimi" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Tekerlekli sandalye erişimi yok" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Tekerlekli sandalye kullanıcılarına göre tasarlanmış" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Din:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Yer OpenStreetMap’te bulunamadı" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URLdeki koordinatlar geçersiz" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL desteklenmiyor" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s’ten %s’e" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Harita parçası yazmak için yükleniyor" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Eğer bu uzun zaman alırsa yazdırmaktan vazgeçebilirsiniz" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Yazdırmayı iptal et" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ara konum ekle" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ara konumu kaldır" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rotayı tersine çevir" + +# ilk s şehir, ikinci s uygulama +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s şehrini %s uygulamasına ekle" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI açma başarısız oldu" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s ile aç" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "dosya yükleme başarısız" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tahmini süre: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rota yönergelerini %s sağlamıştır" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s’te başla" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Başla" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s yürü" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s’te var" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Var" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Yürüme yönergelerini göster" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Yürüme yönergelerini gizle" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Daha erken alternatifleri yükle" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Daha geç alternatifleri yükle" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Daha erken alternatif bulunamadı." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Daha geç alternatif bulunamadı." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Bu rota için tarife verisi bulunamadı." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Bu rota için sağlayıcı bulunamadı." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s dakika" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s saat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s saat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Gün boyu" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Gün doğumundan gün batımına" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Her gün" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Resmi tatiller" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Okul tatilleri" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "açık değil" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Bilinmiyor" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tam" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s s" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s s %s dak" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s dak" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sn" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Bu uzantı son varışı desteklemiyor" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s üstünde devam et" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Devam et" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s üstünde sola dön" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sola dön" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s üstünde hafifçe sola dön" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sola hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s üstünde sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s üstünde sağa dön" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sağa dön" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s üstünde hafifçe sağa dön" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sağa hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s üstünde sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dönel kavşakta %s. çıkışa gidin" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dönel kavşakta %s. çıkıştan çıkın" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Dönel kavşağı kullanın" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Asansörü kullanın ve %s. katta inin" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Asansörü kullanın" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s üstünde sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s üstünde sağa u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Sağa u dönüşü yapın" + +#~ msgid "Find a Route" +#~ msgstr "Rota Bul" + +#~ msgid "Check in here" +#~ msgstr "Buradan yer bildirimi yap" + +#~ msgid "Show more information" +#~ msgstr "Daha çok bilgi göster" + +#~ msgid "Population:" +#~ msgstr "Nüfus:" + +#~ msgid "Altitude:" +#~ msgstr "Rakım:" + +#~ msgid "Opening hours:" +#~ msgstr "Açılış saatleri:" + +#~ msgid "Internet access:" +#~ msgstr "İnternet erişimi:" + +#~ msgid "Toilets:" +#~ msgstr "Tuvaletler:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Tekerlekli sandalye erişimi:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "evet" + +#~ msgid "limited" +#~ msgstr "sınırlı" + +#~ msgid "no" +#~ msgstr "hayır" + +#~ msgid "designated" +#~ msgstr "özel olarak belirlenmiş" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URLsi geçersiz" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kablolu" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "hizmet" + +#~ msgid "Primary menu" +#~ msgstr "Ana menü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Hesabınız yok mu?" + +#~ msgid "%f h" +#~ msgstr "%f sa" + +#~ msgid "%f min" +#~ msgstr "%f dk" + +#~ msgid "%f s" +#~ msgstr "%f sn" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner ile rota arama" + +#~ msgid "Add destination" +#~ msgstr "Hedef ekle" + +#~ msgid "Open with another application" +#~ msgstr "Başka bir uygulamayla birlikte aç" + +#~ msgid "Press enter to search" +#~ msgstr "Aramak için Enter’a basın" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Çıkış" + +#~ msgid "OK" +#~ msgstr "Tamam" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Şekil Katmanını Aç…" + +#~ msgid "Load Map Layer" +#~ msgstr "Harita Katmanı Yükle" + +#~ msgid "Open Layer" +#~ msgstr "Katman Aç" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON dosya ayrıştırması başarısız" + +#~ msgid "Country code: %s" +#~ msgstr "Ülke kodu: %s" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 00000000..100b3277 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,1971 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Daniel Korostil , 2013, 2014, 2015, 2016, 2017. +# Yuri Chornoivan , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-13 20:14+0200\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 20.11.70\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карти GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Знаходити місця по світу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карти надають швидкий доступ до карт по всьому світу. Вони дозволяють швидко " +"знайти місце, яке ви шукаєте, через пошук міста, вулиці, ба визначити місце " +"для зустрічі з друзями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карти використовують колективну базу даних OpenStreetMap, яку роблять тисячі " +"осіб по всій планеті." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете навіть шукати спеціальні місця, як-от «Паби біля головної вулиці, " +"Бостон» або «Готелі біля Александерплац, Берлін»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Проєкт GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Проста програма для роботи з картами" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карти;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозволити вашому перебуванню показуватись на карті." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "останнє переглянуте місце" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координати останнього переглянутого місця." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштаб" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабування" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Тип карти" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карти, яку слід показати (вулиці, супутникова тощо)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Розмір вікна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Розмір вікна (ширина і висота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положення вікна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положення вікна (X і Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Вікно розгорнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стан розгорнутого вікна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальна кількість пошукових результатів" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальна кількість пошукових результатів з пошуку geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Кількість недавно відвіданих місць, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Кількість недавно відвіданих місць, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Кількість недавніх маршрутів, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Кількість недавно відвіданих маршрутів, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Параметри конфіденційності Facebook щодо відзначення" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Останній використаний параметр конфіденційності Facebook щодо відзначення. " +"Допустимі значення: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS або SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Параметри конфіденційності Foursquare щодо відзначення" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Останній використаний параметр конфіденційності Foursquare щодо відзначення. " +"Допустимі значення: public, followers або private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Транслювання відзначення Foursquare через Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Facebook, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Транслювання відзначення Foursquare через Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Twitter, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Користувач або поштова скринька у OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показує, чи користувач увійшов у систему OpenStreetMap для редагування даних." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Останній використаний тип транспорту для побудови маршрутів" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Нічний режим" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Чи програма в нічному режимі." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Використовувати гібридні супутникові плитки" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Чи слід використовувати гібридний стиль (із мітками) для супутникових плиток." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видимість" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Допис на Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Допис на Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Скасувати" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Від_значитись" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Усім" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Друзям друзів" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Тільки друзям" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Лише собі" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Відкрито" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Послідовники" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Особисто" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут звідси" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додати проміжний пункт маршруту" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюди" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Що тут?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копіювати місцевість" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Експортувати перегляд" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Експортувати" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Врахувати маршрут і помітки" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Вибрати тип карти" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Зменшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Збільшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Змінити улюблені" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Загальне" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показати клавіатурні скорочення" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Пошук" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Вийти" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Перегляд карти" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Наблизити" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Віддалити" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Перемкнути шкалу" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Перемкнутися на перегляд вулиць" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Перемкнутися на супутниковий перегляд" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Відкрити шар форм" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Показувати мітки" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Відкрити шар форм…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Увімкнути службу розташування для знаходження місцевості" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Скасувати" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметри розташування" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Нічний режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Відкрити обліковий запис у OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Експортувати як зображення" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Клавіатурні скорочення" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Про «Карти»" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Карти поза мережею!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карти потребують з'єднання з інтернетом, щоб повноцінно працювати, але його " +"немає." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Перевірте зв'язок і параметри проксі." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Обліковий запис OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Увійти, щоб редагувати карту" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Допоможіть покращити карту через\n" +"обліковий запис OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Зареєструватися" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Увійти" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Вибачте, не виконалось. Спробуйте ще раз, або відвідайте\n" +"OpenStreetMap, щоб оновити пароль." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Код звіряння не збігається, спробуйте ще раз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Введіть код звіряння, що показано вище" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Перевірити" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Увійшли" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш обліковий запис OpenStreetMap активовано." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Вийти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Вулиця" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер будинку" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштовий індекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Місто" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Немає" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додати поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Зміни в карті будуть видимі для карт, що використовують\n" +"дані з OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно вжите" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Далі" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нічого не знайдено" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Трапилась помилка" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перенесіть, щоб змінити порядок маршруту" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Відкрити місце" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копіювати" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Надіслати…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Відзначитися…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Відкрити шар форм" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Відкрити" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Перемкнути видимість" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Пошук маршрутів через GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Дані путівника для громадського транспорту надано сторонніми службами.\n" +"GNOME не може гарантувати правильність показаних маршрутів і розкладів.\n" +"Зауважте, що деякі надавачі даних можуть не включати усі можливі варіанти\n" +"пересування. Наприклад, національний оператор громадського транспорту може\n" +"не включати дані перельотів літаком, а надавач даних громадського " +"транспорту\n" +"у місті — даних регіональної залізниці.\n" +"Показані назви і торгові марки є зареєстрованими знаками, якщо це може їх " +"стосуватися." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "показати більше результатів" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сховати проміжні зупинки та відомості" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показати проміжні зупинки та відомості" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Уже їде" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Їде через" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибуває за" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показувати" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваї" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Потяги" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Пороми" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Літаки" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Оприлюднити місце" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Додати новий маршрут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Напрямки" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Зазначити як улюблене" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Наблизьтесь, щоб додати місцевість!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Збільшити" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не вдалося знайти плиткову структуру в каталозі" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не вдалося розібрати документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Бракує потрібних атрибутів" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Неможливо знайти елемент OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Шлях до локального каталогу зі структурою плиток " + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Розмір плитки для каталогу локальних плиток" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Показати версію програми" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ігнорувати доступність мережі" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|АДРЕСА]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Виберіть обліковий запис" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Завантаження" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Виберіть місце" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Facebook. Виберіть " +"щось зі списку." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Foursquare. Виберіть " +"щось зі списку." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Відзначитись на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишіть довільне повідомлення, щоб відзначитись на %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Неможливо знайти «%s» в соціальних службах" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Неможливо знайти зручне місце, щоб відзначити цю місцевість" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Реєстраційні дані застаріли, відкрийте Мережеві облікові записи, щоб увійти " +"та ввімкнути цей обліковий запис" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Тут нічого немає!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Місцевість додано на карту, майте на увазі, що це може забрати трохи часу " +"перед тим, як воно буде показано на карті й у результатах пошуку." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта для %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлова система тільки для читання" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немає прав, щоб зберігати там" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не існує" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не вказано назви файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Неможливо експортувати перегляд" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Поточне місце" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неправильна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "помилка розбирання" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "невідома геометрія" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Невдалий запит маршруту." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Не знайдено жодного маршруту." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Нумо!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Усі файли шарів" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Не вдалося з'єднатись зі службою розташування" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Daniel Korostil " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Карти для GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "© Red Hat, Inc. та розробники «Карт» GNOME, 2011–2021" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Дані карт надано %s та учасниками проєкту" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Блоки карти надано %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Послуги з пошуку надано %s, використовуємо %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Не вдалося відкрити шар" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Продовжити?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Ви маєте намір відкрити файли, загальний розмір яких дорівнює %s МБ. Процес " +"завантаження цих файлів може бути досить тривалим." + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Тип файла не підтримується" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Не вдалося відкрити GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Хибний користувач або пароль" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успіх" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Поганий запит" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Об'єкт не знайдено" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфлікт, хтось інший щойно змінив об'єкт" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Об'єкт вилучено" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Спосіб або відношення не стосується чогось явного" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Назва" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Офіційна назва. Це зазвичай перше, що потрапляє на очі." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Сайт" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ця адреса є некоректною. Переконайтеся, що адреса починається з http:// або " +"https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Офіційний сайт. Намагайтесь використовувати найосновнішу форму посилання, " +"наприклад, http://example.com замість http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефону. Використовуйте міжнародний формат, який починається з знаку " +"плюса (+). Будь обачні з місцевим законами щодо конфіденційності, особливо " +"особистими номерами." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Формат слід містити код мови і назву статті, як-от «uk:Назва статті»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Робочий час" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Довідку щодо формату можна знати за посилання у мітці." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Населення" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Висота" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Висота (над рівнем моря) у метрах." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Доступ для возиків" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Так" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Ні" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Обмежено" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Вказано" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Доступ до інтернету" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Дріт" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Термінал" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Служба" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Релігія" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Анімізм" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Бахаїзм" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Християнство" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Конфуціанство" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Індуїзм" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Джайнізм" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Юдаїзм" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Іслам" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Мультиконфесійність" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Язичництво" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Пастафаріанство" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Сайнтологія" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Сінтоїзм" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Сикхізм" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Спіритуалізм" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Унітарний універсалізм" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Єзидизм" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Туалети" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Примітка" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Запис інформації використовується для надання іншим творцям карти " +"неочевидних відомостей щодо елемента карти, мети його створення або підказок " +"щодо подальшого поліпшення." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Виберіть тип" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Зроблено" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Місце без назви" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Не вдалося розібрати геопосилання" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Координати" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Точність" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точність: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Номер телефону" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Громадський доступ до інтернету" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Немає доступу до інтернету" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Громадський Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Дротовий доступ до інтернету" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Є доступ до комп'ютерів" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Доступна інтернет-допомога" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Немає туалетів" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Є туалети" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Доступне для візків" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Обмежена доступність для візків" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Недоступне для візків" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Позначено для користувачів візків" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Релігія:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Місце не знайдено на OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Координати у адресі є некоректними" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Підтримки адреси не передбачено" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "З %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Завантаження плиток карти для друкування" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете скасувати друкування, якщо це надто довго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Скасувати друкування" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додати проміжне місце" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Влучити проміжне місце" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Зворотній маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додати %s до %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Не вдалося відкрити посилання" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Відкрити через %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "не вдалося завантажити файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Розрахунковий час: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршрути надано %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Відправляється з %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Нумо" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Прогулянка %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибуває до %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Прибуває" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показати піші варіанти" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сховати піші варіанти" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Завантажити попередні альтернативи" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Завантажити подальші альтернативи" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Раніших альтернатив не знайдено." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Пізніших альтернатив не знайдено." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Немає даних про цей маршрут." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Для цього маршруту не знайдено надавачів даних." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s хвилина" +msgstr[1] "%s хвилини" +msgstr[2] "%s хвилин" +msgstr[3] "%s хвилина" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s година" +msgstr[1] "%s години" +msgstr[2] "%s годин" +msgstr[3] "%s година" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s година" +msgstr[1] "%s:%s години" +msgstr[2] "%s:%s годин" +msgstr[3] "%s:%s година" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Цілодобово" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Від світанку до заходу" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Щодня" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Святкові дні" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Шкільні канікули" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "не відкрито" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Невідомо" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Уточнити" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s год" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s год %s хв" +msgstr[1] "%s год %s хв" +msgstr[2] "%s год %s хв" +msgstr[3] "%s год %s хв" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s хв" +msgstr[1] "%s хв" +msgstr[2] "%s хв" +msgstr[3] "%s хв" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s ми" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s фт" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" +"У цьому додатку не передбачено підтримки визначення найпізнішого прибуття" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Продовжуйте на %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Продовжуйте" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверніть ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверніть трохи ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Поверніть трохи ліворуч" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверніть строго ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Різко поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверніть трохи праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Поверніть трохи праворуч" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Різко поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Різко поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "На розвороті виберіть виїзд %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "На розвороті виберіть виїзд до %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "В'їжджайте на розворот" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Увійдіть до ліфта і вийдіть на %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Увійдіть до ліфта" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Виконайте лівий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Виконайте лівий розворот" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Виконайте правий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Виконайте правий розворот" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Адреса OpenStreetMap є некоректною" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Знайти маршрут" + +#~ msgid "Check in here" +#~ msgstr "Відзначитись тут" + +#~ msgid "Show more information" +#~ msgstr "Докладніше" + +#~ msgid "Population:" +#~ msgstr "Населення:" + +#~ msgid "Altitude:" +#~ msgstr "Висота:" + +#~ msgid "Opening hours:" +#~ msgstr "Робочий час:" + +#~ msgid "Internet access:" +#~ msgstr "Доступ до інтернету:" + +#~ msgid "Toilets:" +#~ msgstr "Туалети:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Доступ для возиків:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "так" + +#~ msgid "limited" +#~ msgstr "обмежено" + +#~ msgid "no" +#~ msgstr "ні" + +#~ msgid "designated" +#~ msgstr "визначено" + +#~ msgid "wired" +#~ msgstr "дріт" + +#~ msgid "terminal" +#~ msgstr "термінал" + +#~ msgid "service" +#~ msgstr "служба" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 00000000..eae9be99 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,1996 @@ +# Vietnamese translations for Maps package +# Bản dịch Tiếng Việt dành cho gói Maps. +# This file is distributed under the same license as the Maps package. +# Trần Ngọc Quân , 2016, 2017, 2018, 2019, 2021. +# Antoine Đỗ , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-10 21:07+0000\n" +"PO-Revision-Date: 2021-03-12 15:20+0700\n" +"Last-Translator: Trần Ngọc Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Bản đồ GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Tìm các địa điểm trên khắp thế giới" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps giúp bạn truy cập bản đồ trên toàn thế giới. Nó cho phép bạn nhanh " +"chóng tìm đến chỗ mà bạn đang tìm bằng cách tìm thành phố hay đường, hoặc vị " +"trí địa điểm để gặp mặt bạn bè." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps dùng cơ sở dữ liệu OpenStreetMap cộng tác, được tạo bởi hàng trăm ngàn " +"người trên toàn cầu." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Bạn thậm chí còn có thể chỉ định kiểu của địa điểm như là “Pubs near Main " +"Street, Boston” hay “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Dự án GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Bản đồ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ứng dụng bản đồ đơn giản" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Bản đồ;Ban do;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Cho phép vị trí của bạn được hiển thị trên bản đồ." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "vị trí xem cuối cùng" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Tọa độ của vị trí xem cuối cùng." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "thu phóng" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mức độ phóng to" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Loại bản đồ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Loại bản đồ để hiển thị (đường phố, trên không, v.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Kích thước cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Kích thước cửa sổ (rộng và cao)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vị trí cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vị trí cửa sổ (X và Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Cửa sổ phóng to" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Cửa sổ ở trạng thái phóng to hết cỡ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Số kết quả tìm kiếm tối đa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Số kết quả tìm kiếm tối đa từ việc tìm kiếm geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Số lượng nơi chốn mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Số lượng nơi chốn mới thăm được lưu." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Số lượng đường đi mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Số lượng đường đi mới đi được lưu." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Cài đặt riêng tư check-in Facebook lần cuối. Giá trị có thể là: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS hay SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Cài đặt riêng tư check-in Foursquare lần cuối. Giá trị có thể là: public, " +"followers hay private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in quảng bá Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một bài viết trên tài " +"khoản Facebook tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in quảng bá Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một tweet trên tài khoản " +"Twitter tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Tên tài khoản OpenStreetMap hay địa chỉ thư điện tử" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Biểu thị nếu người dùng đã đăng nhập vào sửa dữ liệu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Kiểu phương tiện vận tải dùng cuối cùng để tìm đường" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Chế độ ban đêm" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Cho dù ứng dụng đang ở chế độ ban đêm." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Sử dụng gạch trên không kết hợp" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Cho dù gạch trên không nên sử dụng kiểu lai (có nhãn)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Thấy" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Gửi lên Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Gửi lên Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "T_hôi" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Ghi danh" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mọi người" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Bạn của bạn" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Chỉ bạn" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Chỉ tôi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Công khai" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Theo dõi" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Riêng tư" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Đường đi từ đây" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Thêm điểm đến trung gian" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Đường đi đến đây" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Đây là đâu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Chép vị trí" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Xuất phần hiển thị" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Xuất" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Bao gồm đường đi và người tạo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Chọn kiểu bản đồ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Thu nhỏ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Phóng to" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Chuyển đến chỗ đánh dấu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Chung" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Hiện phím tắt" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Tìm kiếm" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Thoát" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Mở trình đơn chính" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Xem bản đồ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Phóng to" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Thu nhỏ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bật/tắt thước đo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Chuyển sang xem đường phố" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Chuyển sang xem từ trên trời" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Mở lớp hình dạng" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Hiển thị Nhãn" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Mở lớp hình dạng…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Bật dịch vụ vị trí để tìm vị trí của bạn" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Thôi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Cài đặt vị trí" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Chế độ Ban đêm" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Cài đặt tài khoản OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Xuất ra Ảnh" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Phím tắt" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Giới thiệu Bản đồ" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Mở menu chính" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Bản đồ đang ngoại tuyến!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Bản đồ cần được kết nối mạng internet để các chức năng một cách đúng đắn, " +"nhưng không tìm thấy kết nối mạng nào." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kiểm tra lại kết nối và cài đặt ủy nhiệm của bạn." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Tài khoản OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Đăng nhập để chỉnh sửa bản đồ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Giúp đỡ cải tiến bản đồ bằng cách dùng\n" +"một tài khoản OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Thư điện tử" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mật khẩu" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Đăng ký" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Đăng nhập" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Rất tiếc, nó không làm việc. Vui lòng thử lại, hoặc truy cập\n" +"OpenStreetMap để đặt lại tài khoản của bạn." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Mã xác nhận không khớp, vui lòng thử lại." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Nhập vào mã xác nhận hiện ở trên" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Xác nhận" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Đã đăng nhập" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Tài khoản OpenStreetMap của bạn đang hoạt động." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Đăng xuất" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Đường" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Số nhà" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Mã vùng" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Thành phố" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Kiểu" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Không" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Thêm trường" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Chú thích" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Các thay đổi bản đồ sẽ nhìn thấy trên mọi bản đồ mà\n" +"nó dùng dữ liệu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Vừa dùng" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Tiếp theo" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Không tìm thấy kết quả nào" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Đã có lỗi xảy ra" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Kéo thả để thay đổi thứ tự của đường đi" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Mở Vị trí" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Sao chép" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Gửi Đến…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Mở lớp hình dạng" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Mở" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Bật/tắt nhìn thấy" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Tìm kiếm đường đi bằng GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Hành trình định tuyến đường cho phương tiện công cộng do bên thứ ba cung " +"cấp\n" +"các dịch vụ.\n" +"GNOME không thể đảm bảo tính chính xác của các hành trình và lịch trình được " +"hiển thị.\n" +"Lưu ý rằng một số nhà cung cấp có thể không bao gồm tất cả các phương thức " +"vận chuyển hiện có,\n" +"ví dụ, nhà cung cấp nội địa có thể không bao gồm các hãng hàng không, và nhà " +"cung cấp địa phương có thể\n" +"thiếu các chuyến tàu trong khu vực.\n" +"Tên và nhãn hiệu hiển thị sẽ được coi là nhãn hiệu đã đăng ký khi áp dụng." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Hiện thêm các kết quả" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ẩn các điểm dừng và thông tin trung gian" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Hiển thị các điểm dừng và thông tin trung gian" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Khởi hành ngay" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Khởi hành bằng" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tới bằng" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Hiện" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Xe buýt" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Xe điện" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Xe lửa" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Xe điện ngầm" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Phà" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Máy bay" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Chia sẻ vị trí" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Thêm đường đi mới" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Hướng" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Đánh dấu là hay dùng" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Phóng to vào vị trí thêm!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Phóng to" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gặp lỗi khi tìm cấu trúc lát gạch trong thư mục" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gặp lỗi khi phân tích cú pháp XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Thiếu các thuộc tính cần thiết" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Không thể tìm thấy phần tử OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Một đường dẫn đến cấu trúc thư mục lát gạch" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Kích thước ô cho thư mục ô cục bộ" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Hiển thị phiên bản của chương trình" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Bỏ qua tính khả dụng của mạng" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[TẬP TIN… | URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Chọn tài khoản" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Đang tải" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Chọn một địa điểm" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Facebook. Vui lòng chọn một " +"cái từ danh sách này." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Foursquare. Vui lòng chọn " +"một cái từ danh sách này." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in vào %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ghi một lời nhắn tùy chọn để check in vào %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Không thể tìm thấy “%s” trong dịch vụ xã hội" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Không thể tìm thấy chỗ phù hợp để check-in vào vị trí này" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Giấy ủy nhiệm đã hết hạn, vui lòng mở Tài khoản trực tuyến để đang nhập và " +"bật tài khoản này" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Không thấy gì ở đây!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vị trí đã được thêm vào bản đồ, chú ý rằng cần chờ một thời gian trước khi " +"nó được hiển thị trên bản đồ và khi tìm kiếm sẽ có kết quả." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Bản đồ tại %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Hệ thống tập tin chỉ cho đọc" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Bạn không có đủ quyền hạn để lưu vào đây" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Thư mục không tồn tại" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Chưa xác định tên tập tin" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Không thể xuất hình vẽ" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Vị trí Hiện tại" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "tọa độ không hợp lệ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lỗi phân tích" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "không hiểu dạng hình" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Yêu cầu đường đi gặp lỗi." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Không tìm thấy lộ trình nào." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Bắt đầu!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Mọi tập tin lớp" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Gặp lỗi khi kết nối đến dịch vụ vị trí" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Nhóm Việt hóa GNOME " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Ứng dụng bản đồ dành cho GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Bản quyền © 2011 – 2021 Red Hat, Inc. và các tác giả Bản đồ GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dữ liệu bản đồ của %s và những người đóng góp" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Tiêu đề bản đồ cung cấp bởi %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Tìm kiếm do %s cung cấp sử dụng %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Gặp lỗi khi mở lớp" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Bạn có muốn tiếp tục?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Bạn sắp mở các tập tin có tổng kích thước là %s MB. Quá trình này có thể tốn " +"thời gian để tải" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Kiểu tập tin không được hỗ trợ" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Gặp lỗi khi mở GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Tên người dùng hay mật khẩu sai" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Thành công" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Yêu cầu sai" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Không thể tìm thấy đối tượng" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Xung đột, đã có ai đó vừa sửa đối tượng" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Đối tượng đã bị xóa" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lối hoặc quan hệ chỉ đến một con mà nó không tồn tại" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Tên" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Tên chính thức. Đây là cái thường xuất hiện trên chữ ký." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Địa chỉ" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Trang thông tin điện tử" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Đây không phải là một URL hợp lệ. Hãy chắc chắn nó bao gồm http:// hoặc " +"https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Trang thông tin điện tử chính thức. Dùng dạng thức URL cơ bản nhất ví dụ " +"http://example.com thay cho http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Điện thoại" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Số điện thoại. Dùng định dạng quốc tế, bắt đầu bằng dấu +. Hãy cẩn thận với " +"luật riêng tư địa phương, đặc biệt là các số điện thoại riêng." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Nên dùng dạng thức có bao gồm mã ngôn ngữ và tiêu đề bài viết như là ”vi:" +"Tiêu đề bài viết”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Giờ mở cửa" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Xem liên kết trong nhãn để nhận được hỗ trợ về định dạng." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Dân số" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Cao độ" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Cao độ (độ cao trên mực nước biển) của một điểm tính bằng mét." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Lối vào xe lăn" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Đồng ý" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Không" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Bị giới hạn" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Đã được thiết kế" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Truy cập mạng Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Có dây" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Thiết bị cuối" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Dịch vụ" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Tôn giáo" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Thuyết vật linh" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Phật giáo" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Đạo cao đài" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cơ đốc giáo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Khổng giáo" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Ấn Độ giáo" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Đạo Giai-na" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Đạo Do Thái" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Hồi giáo" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Đa tôn giáo" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Tà giáo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Khoa học học" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Đạo thần Nhật bản" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Đạo Sikh" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Thuyết duy linh" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Đạo Lão" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Thuyết phổ độ nhất thể" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Thầy mo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Đạo thờ lửa" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Nhà vệ sinh" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Ghi chú" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Thông tin được sử dụng để cung cấp thông tin các bản đồ khác về các thông " +"tin không-rõ-ràng về một phần tử, mục đích của tác giả khi tạo nó, hoặc gợi " +"ý cải tiến hơn nữa." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Chọn kiểu" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Xong" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Địa điểm không tên" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gặp lỗi khi phân tích Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Hệ tọa độ" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Độ chính xác" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Độ chính xác: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Số điện thoại" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Kết nối mạng internet công cộng" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Không có kết nối mạng" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi công cộng" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Truy cập internet có dây" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Máy tính có sẵn để sử dụng" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Có hỗ trợ Internet" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Không có nhà vệ sinh" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Có nhà vệ sinh" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Lối vào xe lăn" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Lối vào cho xe lăn hạn chế" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Không dành cho xe lăn" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Được thiết kế cho người dùng xe lăn" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Tôn giáo:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Không tìm thấy địa điểm trong OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Tọa độ trong URL không hợp lệ" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL không được hỗ trợ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Từ %s đến %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Đang tải tựa đề bản đồ để in ấn" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Bạn có thể bãi bỏ việc in ấn nếu việc đó diễn ra quá lâu" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hủy bỏ việc in" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Thêm thông qua vị trí" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gỡ bỏ thông qua vị trí" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Đảo ngược lộ trình" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Thêm %s vào %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gặp lỗi khi mở URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Mở bằng %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "gặp lỗi khi tải tập tin" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Thời gian ước tính: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Hành trình do %s cung cấp" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Bắt đầu ở %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Bắt đầu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Đi bộ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tới lúc %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Tới" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Hiển thị chỉ dẫn đi bộ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ẩn chỉ dẫn đi bộ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Tải các lựa chọn trước" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Tải các lựa chọn sau" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Không tìm thấy lựa chọn trước nào." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Không tìm thấy lựa chọn thay thế sau nào." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Không tìm thấy dữ liệu bảng thời gian cho lộ trình này." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Không tìm thấy nhà cung cấp nào cho tuyến đường này." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s phút" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s giờ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s giờ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Suốt ngày đêm" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Từ bình minh đến khi hoàng hôn" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Hàng ngày" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Các ngày lễ" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Ngày học sinh nghỉ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "chưa mở" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Chưa biết" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Trích" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s phút" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s phút" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s dặm" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Phần bổ sung này không hỗ trợ nơi đến mới nhất" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Tiếp tục trên %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Tiếp tục" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Rẽ trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Rẽ trái" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Hơi rẽ sang trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Hơi rẽ sang trái" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Rẽ ngoặt sang trái vảo %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Rẽ ngoặt sang trái" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rẽ phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Rẽ phải" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Hơi rẽ sang phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Hơi rẽ sang phải" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Rẽ ngoặt sang phải vảo %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Rẽ ngoặt sang phải" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ở vòng xoay, đi ngã rẽ %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ở vòng xoay, đi ngã rẽ thứ %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Vào vòng xoay" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Đi thang máy và xuống ở %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Đi thang máy" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Rẽ trái để quay đầu về %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Rẽ trái để quay đầu" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Rẽ phải để quay đầu về %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Rẽ phải để quay đầu" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mở bằng ứng dụng khác" + +#~ msgid "Check in here" +#~ msgstr "Check in vào đây" + +#~ msgid "Don’t have an account?" +#~ msgstr "Không có tài khoản?" + +#~ msgid "Show more information" +#~ msgstr "Cung cấp thêm thông tin" + +#~ msgid "Press enter to search" +#~ msgstr "Bấm phím Enter để tìm kiếm" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Tìm kiếm đường đi bằng OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Thêm đích" + +#~ msgid "Population:" +#~ msgstr "Dân số:" + +#~ msgid "Altitude:" +#~ msgstr "Cao độ:" + +#~ msgid "Opening hours:" +#~ msgstr "Giờ mở cửa:" + +#~ msgid "Internet access:" +#~ msgstr "Truy cập Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Nhà vệ sinh:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Lối vào xe lăn:" + +#~ msgid "Phone:" +#~ msgstr "Điện thoại:" + +#~ msgid "yes" +#~ msgstr "có" + +#~ msgid "limited" +#~ msgstr "bị giới hạn" + +#~ msgid "no" +#~ msgstr "không" + +#~ msgid "designated" +#~ msgstr "được thiết kế" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "có dây" + +#~ msgid "terminal" +#~ msgstr "thiết bị cuối" + +#~ msgid "service" +#~ msgstr "dịch vụ" + +#~ msgid "%f h" +#~ msgstr "%f giờ" + +#~ msgid "%f min" +#~ msgstr "%f phút" + +#~ msgid "%f s" +#~ msgstr "%f giây" + +#~ msgid "Quit" +#~ msgstr "Thoát" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Mở lớp hình dạng…" + +#~ msgid "OK" +#~ msgstr "Được" + +#~ msgid "Load Map Layer" +#~ msgstr "Tải lớp bản đồ" + +#~ msgid "Open Layer" +#~ msgstr "Mở lớp" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f dặm" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..928f6450 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,2034 @@ +# Chinese (China) translation for gnome-maps. +# Copyright (C) 2013-2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# tuhaihe <1132321739qq@gmail.com>, 2013. +# Tong Hui , 2014. +# YunQiang Su , 2015, 2016. +# Mingcong Bai , 2015, 2016, 2017, 2018. +# 王滋涵 Zephyr Wang , 2020. +# Dingzhong Chen , 2015-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 40\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-06-04 07:11+0000\n" +"PO-Revision-Date: 2021-06-29 16:30-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese - China \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.2\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地图" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "寻找世界各地的地点" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"地图应用帮您快速访问世界各地的地图。允许您快速定位到城市、街道或约会地点。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"地图应用使用了 OpenStreetMap 数据库,该数据库由全球成千上万的人们协同制作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"你甚至可以搜索特定类型的位置,比如“Pubs near Main Street, Boston”或“Hotels " +"near Alexanderplatz, Berlin”。" + +#: data/org.gnome.Maps.appdata.xml.in:210 +msgid "The GNOME Project" +msgstr "GNOME 项目" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:589 +msgid "Maps" +msgstr "地图" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "一款简单的地图应用程序" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地图;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允许你的位置显示在地图上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最近查看的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最近查看的位置的座标。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "缩放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "缩放级别" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地图类型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要显示的地图类型(街道、航拍等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "窗口大小" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "窗口大小(宽度和高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "窗口位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "窗口位置(水平和垂直)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "窗口最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "窗口最大化状态" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜索结果的最大数量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "来自 geocode 搜索结果的最大数量。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "存储最近地点的数量" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "存储最近拜访过地点的数量。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "存储最近路线的数量" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "存储最近使用过路线的数量。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 签到隐私设置" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 签到隐私设置。可能的值有:EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 签到隐私设置" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 签到隐私设置。可能的值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 签到同步到 Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成消息发布到 Foursquare 已经关联的 Facebook 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 签到同步到 Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成推文发布到 Foursquare 已经关联的 Twitter 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 用户名或电子邮件地址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示用户是否已经登录以编辑 OpenStreetMap 数据。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "载入用过的交通类型来规划路线" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "使用混合航拍区块" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "航拍区块是否使用混合样式(带标签)。" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可见性" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "发到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "发到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "签到(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每个人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "仅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "仅限自己" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公开" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "关注者" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "从此处出发的路径" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "添加途经目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "前往此处的路径" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "这是哪里?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "复制位置信息" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "导出视图" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "导出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包括路线和标记" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "转到当前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "选择地图类型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "缩小" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "放大" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "切换喜爱" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "常规" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "显示快捷操作" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜索" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "退出" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地图视图" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "放大" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "缩小" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切换比例尺" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "转到当前位置" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切换到街景视图" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切换到空中视图" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "打开形状图层" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "显示标签" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "打开形状图层…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "开启定位服务来获取您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "地点设置" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "建立 OpenStreetMap 帐号" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "导出为图像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "快捷键(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "关于地图" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "地图应用处于离线状态!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "地图应用需要有效的网络连接才能正常运行,但是未发现有效连接。" + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "请检查您的网络连接和代理设置。" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帐号" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登录以编辑地图" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"使用 OpenStreetMap 帐号\n" +"帮助完善地图。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "电子邮件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密码" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "注册" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登录" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"对不起,密码无效。请重试,或访问\n" +"OpenStreetMap 以重置密码。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "验证码不匹配,请重试。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "输入在上面显示的验证码" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "验证" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登录" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帐号已激活。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "退出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "门牌号码" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "邮政编码" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "类型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "无" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "添加字段" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "备注" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地图更改将会呈现在所有使用\n" +"OpenStreetMap 数据的地图上。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "下一步" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "未找到结果" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "发生了一个错误" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖动以改变路线的顺序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "打开位置" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "复制" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "发送至…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "签到…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "打开图形图层" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "打开(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切换可见" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "通过 GraphHopper 搜索路线" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"公共交通行程路线由第三方服务提供。\n" +"GNOME 无法保证所显示的行程和时间表的准确性。\n" +"一些提供者可能不会包含所有可用的交通方式,\n" +"例如,国家级提供者可能不包括航空公司,\n" +"地方提供者也可能会缺少地区列车信息。\n" +"所示名称和品牌在适用时应视为注册商标。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "显示更多结果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隐藏途径停站及沿路信息" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "显示途径停站及沿路信息" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "现在动身" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "出发时间" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "到达时间" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "显示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公交车" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "有轨电车" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "列车" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "地铁" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡轮" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飞机" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "添加到新路线" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "方向" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "标记为喜爱" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "放大以添加地点!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "放大" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "未在目录中找到地图区块结构" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "解析 XML 文档失败" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺失需要的属性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "指向本地区块目录结构的路径" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "本地区块目录的区块大小" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "显示该程序的版本" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "忽略网络可用性" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[文件…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "选择帐号" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "正在载入" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "选择地点" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "地图应用无法在 Facebook 中找到签到地点。请在列表中选择。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "地图应用无法在 Foursquare 中找到签到地点。请在列表中选择。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "签到于 %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "编写附加信息来签到 %s 。" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社交服务中找不到“%s”" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "在此地无法找到符合的签到地点" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "证书已过期,请打开“在线帐号”登录并启用此帐号" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "这里什么都没有找到!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "地点已添加到地图,注意它可能需要一段时间才能显示在地图上和搜索结果里。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f 处的地图.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "文件系统为只读" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您没有保存到那里的权限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "该目录不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "未指定文件名" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "无法导出视图" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "当前位置" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "无效坐标" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析错误" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "未知几何方位" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "路线请求失败。" + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "没有找到路线。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "开始!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "全部图层文件" + +#: src/mainWindow.js:492 +msgid "Failed to connect to location service" +msgstr "无法连接到定位服务" + +#: src/mainWindow.js:587 +msgid "translator-credits" +msgstr "" +"tuhaihe <1132321739qq@gmail.com>, 2013, 2020\n" +"Tong Hui , 2014\n" +"Mingcong Bai , 2015, 2016, 2017, 2018\n" +"Dingzhong Chen , 2015-2018\n" +"王滋涵 , 2020" + +#: src/mainWindow.js:590 +msgid "A map application for GNOME" +msgstr "一款 GNOME 地图应用程序" + +#: src/mainWindow.js:601 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "版权所有 © 2011 – 2021 红帽公司和 GNOME 地图作者" + +#: src/mainWindow.js:621 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "地图数据来自 %s 和贡献者" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:637 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "地图图块由 %s 提供" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:666 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "使用 %s 提供的服务搜索 %s" + +#: src/mapView.js:492 src/mapView.js:550 +msgid "Failed to open layer" +msgstr "打开图层失败" + +#: src/mapView.js:513 +msgid "Do you want to continue?" +msgstr "请问是否继续?" + +#: src/mapView.js:514 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "即将打开 %s MB 的文件,这可能需要一定时间" + +#: src/mapView.js:544 +msgid "File type is not supported" +msgstr "文件类型未支持" + +#: src/mapView.js:582 +msgid "Failed to open GeoURI" +msgstr "打开 GeoURI 失败" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正确的用户名或密码" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "错误的请求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到对象" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "冲突,别人刚修改了对象" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "对象已被删除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "道路或关系指向了不存在的子项" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "名称" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "官方名称。这通常就是标记上显示的东西。" + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:126 src/placeView.js:279 +msgid "Website" +msgstr "网站" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "URL 不合法。请确保其包含 http:// 或 https://。" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方网站。尝试使用 URL 的最基本形式,例如 http://example.com 而不是 http://" +"example.com/index.html。" + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "电话" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"电话号码。使用国际格式,以 + 加号开头。留心当地的隐私法律,特别是对于私人电话" +"号码。" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:587 +msgid "Wikipedia" +msgstr "维基百科" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式应该包含语言代码和文章标题如“zh_CN:文章标题”。" + +#: src/osmEditDialog.js:153 src/placeView.js:307 +msgid "Opening hours" +msgstr "开放时间" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "请参阅标签中的链接来获得关于格式的帮助。" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:417 +msgid "Population" +msgstr "人口总数" + +#: src/osmEditDialog.js:166 src/placeView.js:426 +msgid "Altitude" +msgstr "海拔" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一点的海拔(海平面之上的高度),以米计。" + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "轮椅通行" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "有" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "无" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "受限" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "指定" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "网络接入" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "有线" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "终端" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "服务" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "泛灵论" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "儒学" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "犹太教" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "伊斯兰教" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "多宗教信仰" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "异教" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "飞天面条神教" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "山达基" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "神道" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "锡克教" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "唯灵论" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "一神普救派" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "伏都教" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "琐罗亚斯德教" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "洗手间" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "备注" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用于提醒其他制图人的信息,比如关于元素的隐蔽信息、作者创建的意图,亦或进一步" +"完善的提示。" + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "选择类型" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:105 +msgid "Unnamed place" +msgstr "未命名地点" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "解析 Geo URI 失败" + +#: src/placeView.js:267 +msgid "Coordinates" +msgstr "坐标" + +#: src/placeView.js:271 +msgid "Accuracy" +msgstr "精度" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:274 +#, javascript-format +msgid "Accuracy: %s" +msgstr "位置精度:%s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:293 +msgid "Phone number" +msgstr "电话号码" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:317 +msgid "Public internet access" +msgstr "公共网络接入" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:326 +msgid "No internet access" +msgstr "无网络接入" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:334 +msgid "Public Wi-Fi" +msgstr "公共 Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:342 +msgid "Wired internet access" +msgstr "有线网络接入" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:350 +msgid "Computers available for use" +msgstr "有计算机可供使用" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:358 +msgid "Internet assistance available" +msgstr "提供网络援助" + +#: src/placeView.js:364 +msgid "No toilets available" +msgstr "无提供洗手间" + +#: src/placeView.js:367 +msgid "Toilets available" +msgstr "有提供洗手间" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:376 +msgid "Wheelchair accessible" +msgstr "轮椅可通行" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:386 +msgid "Limited wheelchair accessibility" +msgstr "有限轮椅通行" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:395 +msgid "Not wheelchair accessible" +msgstr "轮椅不可通行" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:405 +msgid "Designated for wheelchair users" +msgstr "轮椅用户专用" + +#: src/placeView.js:432 +msgid "Religion:" +msgstr "宗教:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "地点在 OpenStreetMap 上找不到" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URL 中的坐标无效" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL 不支持" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "从 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "正在加载地图图块以便打印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果打印时间太长你可以中止它" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止打印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "通过位置添加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "通过位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路线" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "添加 %s 到 %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "打开 URI 失败" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "用 %s 打开" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "载入文件失败" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "估计时间:%s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "路线由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "出发时间为 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "出发" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "到达时间为 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "到达" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "显示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隐藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "载入上一个替代方案" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "载入下一个替代方案" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到上一个替代方案。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到下一个替代方案。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-m月%-d日" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "找不到该路线的时间表信息。" + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "找不到该路线的提供商。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s - %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分钟" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小时" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小时" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "全天" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "白天" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "公众假期" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "学校假期" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "未开放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "未知" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "准确" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s 小时" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 小时 %s 分钟" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分钟" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s 千米" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s 米" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s 英里" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s 英尺" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "该插件不支持最近到达信息" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "继续沿 %s 前进" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "继续" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s 处左转" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "左转" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s 处稍向左转" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "稍向左转" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s 处向左急转" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "向左急转" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s 处右转" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "右转" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s 处稍向右转" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "稍向右转" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s 处向右急转" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "向右急转" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在 %s 出环岛" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "退出环岛往 %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "环岛绕行" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "乘坐电梯并在 %s 层离开" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "乘坐电梯" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "向走掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "向走掉头" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "向右掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "向右掉头" + +#~ msgid "Find a Route" +#~ msgstr "寻找路线" + +#~ msgid "Check in here" +#~ msgstr "在这里签到" + +#~ msgid "Show more information" +#~ msgstr "显示更多信息" + +#~ msgid "Population:" +#~ msgstr "人口总数:" + +#~ msgid "Altitude:" +#~ msgstr "海拔:" + +#~ msgid "Opening hours:" +#~ msgstr "开放时间:" + +#~ msgid "Internet access:" +#~ msgstr "网络接入:" + +#~ msgid "Toilets:" +#~ msgstr "洗手间:" + +#~ msgid "Wheelchair access:" +#~ msgstr "轮椅通行:" + +#~ msgid "Phone:" +#~ msgstr "电话:" + +#~ msgid "yes" +#~ msgstr "有" + +#~ msgid "limited" +#~ msgstr "有限制" + +#~ msgid "no" +#~ msgstr "无" + +#~ msgid "designated" +#~ msgstr "专用设施" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL 无效" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "有线" + +#~ msgid "terminal" +#~ msgstr "终端" + +#~ msgid "service" +#~ msgstr "服务" + +#~ msgid "Primary menu" +#~ msgstr "主菜单" + +#~ msgid "Don’t have an account?" +#~ msgstr "没有帐号?" + +#~ msgid "Open with another application" +#~ msgstr "以其他程序打开" + +#~ msgid "Press enter to search" +#~ msgstr "按下回车键开始搜索" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "通过 OpenTripPlanner 搜索路线" + +#~ msgid "Add destination" +#~ msgstr "添加目的地" + +#~ msgid "%f h" +#~ msgstr "%f 小时" + +#~ msgid "%f min" +#~ msgstr "%f 分钟" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "退出" + +#~ msgid "OK" +#~ msgstr "确定" + +#~ msgid "Open Shape Layer…" +#~ msgstr "打开图形图层…" + +#~ msgid "Load Map Layer" +#~ msgstr "加载地图图层" + +#~ msgid "Open Layer" +#~ msgstr "打开图层" + +#~ msgid "%f km" +#~ msgstr "%f 千米" + +#~ msgid "%f m" +#~ msgstr "%f 米" + +#~ msgid "%f mi" +#~ msgstr "%f 英里" + +#~ msgid "%f ft" +#~ msgstr "%f 英尺" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "解析 GeoJSON 文件失败" + +#~ msgid "Country code: %s" +#~ msgstr "国家代码:%s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "最近已知的位置和精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "最近已知的位置(经纬度)和精度(米)。" + +#~ msgid "Description of last known location of user." +#~ msgstr "对最近已知的用户位置的描述。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "最近已知的位置 是否是用户手动设置的。" + +#~ msgid "I’m here!" +#~ msgstr "我在这!" + +#~ msgid "%f km²" +#~ msgstr "%f平方千米" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "From" +#~ msgstr "从" + +#~ msgid "Satellite" +#~ msgstr "卫星" + +#~ msgid "Track user location." +#~ msgstr "跟踪用户位置。" diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 00000000..0911015d --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,213 @@ +# Chinese (Hong Kong) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-08-30 18:59+0000\n" +"PO-Revision-Date: 2014-08-31 15:54+0800\n" +"Last-Translator: Chao-Hsiung Liao \n" +"Language-Team: Chinese (Hong Kong) \n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.3\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Maps 讓你可以快速存取世界上的地圖。它讓你快速的找到想找的位置,只要搜尋城市或街道,也可以定位要與朋友見面的場所。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Maps 使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "你甚至能搜尋指定的位置類型,像是“Pubs near Main Street, Boston“或是“Hotels near Alexanderplatz, Berlin“" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:303 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "地圖" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "視窗尺寸" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "視窗大小 (闊度與高度)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "視窗位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "上次知道的位置與準確度" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "上次知道的位置 (緯度與經度) 與準確度 (以米計)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "上次知道的位置描述" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "上次知道的使用者位置描述。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "使用者設定上次知道的位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "上次知道的位置是否是由使用者手動設定。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "關於" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "結束" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "這裏有什麼?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "我在這裏!" + +#: ../src/mainWindow.js:301 +msgid "translator-credits" +msgstr "Chao-Hsiung Liao , 2013" + +#: ../src/mainWindow.js:304 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: ../src/routeService.js:76 +msgid "No route found." +msgstr "找不到路線。" + +#: ../src/routeService.js:82 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: ../src/routeService.js:153 +msgid "Start!" +msgstr "開始!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "國家代碼:%s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "郵遞區號:%s" + +#: ../src/sidebar.ui.h:1 +msgid "To" +msgstr "終點" + +#: ../src/sidebar.ui.h:2 +msgid "From" +msgstr "起點" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "目前位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "準確" + +#: ../src/utils.js:179 +#, javascript-format +#| msgid " km²" +msgid "%f km²" +msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Street" +#~ msgstr "街道" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 00000000..e8c16084 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1986 @@ +# Chinese (Taiwan) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-16 21:00+0000\n" +"PO-Revision-Date: 2020-10-12 21:58+0800\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地圖" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "尋找世界上各個地方" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"《地圖》讓您可以快速存取世界上的地圖。它讓您快速的找到想找的位置,只要搜尋城" +"市或街道,也可以定位要與朋友見面的場所。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"《地圖》使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製" +"作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"您甚至能搜尋指定的位置類型,像是「Pubs near Main Street, Boston」或是" +"「Hotels near Alexanderplatz, Berlin」等。" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME 專案" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "地圖" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允許您的位置顯示在地圖上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最後檢視的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最後檢視位置的坐標。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "縮放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "縮放等級" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地圖類型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要顯示的地圖類型(街道、航空圖等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "視窗尺寸" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "視窗大小 (寬度與高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "視窗位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "要儲存的最近路線數" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "要儲存的最近到訪路線數。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 打卡隱私權設定值" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 打卡隱私權設定值。可能的數值有:EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 打卡隱私權設定值" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 打卡隱私權設定值。可能的數值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 打卡 Facebook 廣播" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Facebook 帳號連結的 Foursquare 帳號以貼文方式廣" +"播此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 打卡 Twitter 廣播" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Twitter 帳號連結的 Foursquare 帳號以推文方式廣播" +"此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 的使用者名稱或電子郵件位址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示使用者是否已登入可編輯 OpenStreetMap 資料。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "上次路線規劃時使用的交通類型" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "應用程式是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "使用混合式航照圖磚" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "是否應該使用混合風格(附帶文字標籤)的航照圖磚。" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可見狀態" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "張貼到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "張貼到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "打卡(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每個人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "僅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "僅限本人" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公開" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "跟隨" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "從這裡開始的路線" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "加入中間目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "到這裡的路線" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "這裡有什麼?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "複製位置" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "匯出檢視" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "匯出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包含路線和標記" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "前往目前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "選擇地圖類型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "拉遠" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "拉近" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "切換喜好" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "顯示快捷鍵" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜尋" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "結束" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "開啟主選單" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地圖檢視" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拉近" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "拉遠" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切換縮放" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "前往目前位置" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切換為街道檢視" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切換為鳥瞰圖" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "開啟形狀圖層" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "顯示文字標籤" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "開啟形狀圖層…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "開啟位置服務以尋找您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "位置設定值" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "設定 OpenStreetMap 帳號" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "匯出為影像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "鍵盤快捷鍵(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "關於《地圖》" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "開啟主選單" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Maps 已離線!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Maps 需要使用網際網路連線才能正常運作,但找不到網際網路。" + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "請檢查您的連線與代理伺服器設定值。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "加入新的路線" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "標記為喜好" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在這裡檢查" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帳號" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登入以編輯地圖" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"協助改善地圖,使用\n" +"OpenStreetMap 帳號。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "電子郵件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密碼" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "註冊" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登入" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"抱歉,那沒有作用。請再試一次,或者參訪\n" +"OpenStreetMap以重置您的密碼。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "驗證碼不符合,請再試一次。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "輸入上面顯示的驗證碼" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "驗證" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登入" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帳號已啟用。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "登出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "門牌號碼" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "郵遞區號" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "類型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "沒有" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "加入欄位" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "評註" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地圖更動資訊會在所有利用 OpenStreetMap\n" +" 資料的地圖中出現。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "下一個" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "顯示更多資訊" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "找不到結果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖曳以修改路徑順序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "開啟位置" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "複製" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "傳送至…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "開啟形狀圖層" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "開啟(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切換可見性" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "透過 GraphHopper 搜尋路線" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"大眾運輸的路線規劃是由第三方服務提供。\n" +"GNOME 無法保證所顯示的規劃與行程的正確性。\n" +"注意,有些服務供應商也許無法囊括所有可能的轉運方式,\n" +"例:國營供應商或許沒列入航班,而地方供應商可能缺少\n" +"區域性的車班資訊。\n" +"此處所顯示的名稱或商標為其註冊商標所有人所有。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "顯示更多結果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隱藏中間站與資訊" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "顯示中間站與資訊" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "正在離開" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "離開於" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "抵達於" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "顯示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公車" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "輕軌" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "火車" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "捷運" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡輪" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飛機" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "目前位置" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "拉近以加入位置!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "拉近" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "無法在目錄中找到圖磚結構" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "無法解析 XML 文件" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺少了必要的屬性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "本地端圖磚目錄結構的路徑" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "本地端圖磚目錄的圖磚大小" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "顯示程式版本" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "忽略網路可用性" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "選擇一個帳號" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "載入中" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "選擇一個地點" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Facebook 中打卡的地點。請從清單中選擇一個。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Foursquare 中打卡的地點。請從清單中選擇一個。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "打卡於:%s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "寫些關於在 %s 打卡的訊息。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "發生錯誤" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社群服務中找不到「%s」" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "找不到適合的地點來打卡" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "憑證已過期,請開啟線上帳號再次登入並啟用這個帳號" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "這裡找不到東西!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"位置已加到地圖上,請注意在顯示在地圖上與搜尋結果中之前可能需要一段時間。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "於 %f 的地圖, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "檔案系統是唯讀的" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您沒有在該處儲存檔案的權限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "目錄不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "沒有指定檔案名稱" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "無法匯出檢視" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "無效的坐標" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析錯誤" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "不明的位置大小" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "找不到路線。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "開始!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "所有圖層檔案" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "無法連接位置服務" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Chao-Hsiung Liao , 2013\n" +"Yi-Jyun Pan , 2020\n" +"Cheng-Chia Tseng , 2020" + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "著作權所有 © 2011 – 2019 Red Hat, Inc. 和 GNOME 地圖作者群" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "來自 %s 與貢獻者的地圖資料" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "由 %s 提供的圖磚" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "搜尋使用 %2$s 並由 %1$s 提供" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "檔案類型不支援" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "無法開啟圖層" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "無法開啟 GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正確的使用者名稱或密碼" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "錯誤的要求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到物件" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "衝突,有其他人剛剛修改了這個物件" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "物件已刪除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "路徑或關係參照到不存在的子項" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "名稱" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "正式的名稱。這通常會出現在招牌上。" + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "網站" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方網站。嘗試使用最基本形式的 URL ,例如 HTTP://example.com ,而不是 HTTP://" +"example.com/index.html。" + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "電話" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"電話號碼。使用國際格式,以 + 號開頭。提防當地的隱私權法律,特別是私人電話號" +"碼。" + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "維基百科" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式應該包括語言代碼和文章標題,例如「en:Article title」。" + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "開放時間" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "請參閱標籤的連結以取得格式的求助訊息。" + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "資料母體" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "海拔高度" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一點的高度,以公尺計 (自海平面以上的高度)。" + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "使用輪椅" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "是" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "否" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "有限制" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "特定" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "網際網路存取" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "有線網路" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "網路終端" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "服務" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "萬物有靈論" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "儒教" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "猶太教" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "伊斯蘭教" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多種宗教" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "異教" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飛天義大利麵神教" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "科學神教" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "神道教" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "錫克教" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "精神主義" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神論的普遍主義" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "巫毒教" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "拜火教" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "廁所" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "備註" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用來通知其他製圖者關於元件、建立時作者的目的、與更多資訊提示的不明顯資訊。" + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "選擇類型" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "未命名位置" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "人口:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "海拔高度:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "開放時間:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "網際網路存取:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "廁所:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "使用輪椅:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "電話:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "無法分析 Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "是" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "否" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "特定" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "在 OpenStreetMap 找不到位置" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap 網址無效" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "網址中的座標無效" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "網址不支援" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "從 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "載入列印用的圖磚" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果這花費時間太長,您可以放棄列印" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止列印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "透過位置增加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "透過位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路線" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "加入 %s 至 %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "無法開啟 URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "使用 %s 開啟" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "無法載入檔案" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "預估時間:%s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "行程表由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "開始於 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "開始" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "抵達於 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "抵達" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "顯示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隱藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "載入較早的替代路線" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "載入較晚的替代路線" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到較早的替代路線。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到較晚的替代路線。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b%e日" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "找不到這條路線的時刻表資料。" + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "找不到這個路線的提供者。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分鐘" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小時" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小時" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "在時鐘周圍" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "從日出到日落" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "共通假日" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "學校假日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "不開放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有線網路" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "網路終端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服務" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "準確" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s 時" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 時 %s 分" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s 公里" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s 公尺" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s 英哩" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s 英呎" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "這個外掛插件不支援最近到站的功能" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "在 %s 繼續走" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "繼續走" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "在 %s 左轉" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "左轉" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "在 %s 稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "在 %s 急左轉" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "急左轉" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "在 %s 右轉" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "右轉" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "在 %s 稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "在 %s 急右轉" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "急右轉" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在圓環中,從 %s 離開" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "在圓環中,離開往 %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "走圓環" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "搭乘電梯到 %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "搭乘電梯" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 進行右迴轉" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "進行右迴轉" + +#~ msgid "Don’t have an account?" +#~ msgstr "還沒有會員帳號嗎?" + +#~ msgid "%f h" +#~ msgstr "%f 小時" + +#~ msgid "%f min" +#~ msgstr "%f 分鐘" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "Add destination" +#~ msgstr "加入目的地" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "以其他應用程式開啟" + +#~ msgid "Press enter to search" +#~ msgstr "按下 Enter 開始搜尋" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "透過 OpenTripPlanner 搜尋路徑" + +#~ msgid "Quit" +#~ msgstr "結束" + +#~ msgid "OK" +#~ msgstr "確定" + +#~ msgid "Load Map Layer" +#~ msgstr "載入地圖圖層" + +#~ msgid "Open Layer" +#~ msgstr "開啟圖層" + +#~ msgid "%f km" +#~ msgstr "%f 公里" + +#~ msgid "%f m" +#~ msgstr "%f 公尺" + +#~ msgid "%f mi" +#~ msgstr "%f 哩" + +#~ msgid "%f ft" +#~ msgstr "%f 呎" + +#~ msgid "Position not found" +#~ msgstr "找不到地點" + +#~ msgid "General" +#~ msgstr "一般" + +#~ msgid "Search" +#~ msgstr "搜尋" + +#~ msgid "Country code: %s" +#~ msgstr "國家代碼:%s" + +#~ msgid "Population: %s" +#~ msgstr "資料母體:%s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "使用輪椅:%s" + +#~ msgid "_Share" +#~ msgstr "分享(_S)" + +#~ msgid "Last known location and accuracy" +#~ msgstr "上次知道的位置與準確度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "上次知道的位置 (緯度與經度) 與準確度 (以公尺計)" + +#~ msgid "Description of last known location of user." +#~ msgstr "上次知道的使用者位置描述。" + +#~ msgid "User set last known location" +#~ msgstr "使用者設定上次知道的位置" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "上次知道的位置是否是由使用者手動設定。" + +#~ msgid "I’m here!" +#~ msgstr "我在這裡!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "終點" + +#~ msgid "From" +#~ msgstr "起點" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/scripts/README b/scripts/README new file mode 100644 index 00000000..de52149a --- /dev/null +++ b/scripts/README @@ -0,0 +1,19 @@ +SCRIPTS +======= + +extractPoiTypesFromID.js +------------------------ + +Extracts the POI types (presets) that the iD editor uses to JSON for us to consume. + +Run the extractPoiTypesFromID.js script against a checkout of the +iD Tagging Schema project (https://github.com/openstreetmap/id-tagging-schema) + +$ ./extractPoiTypesFromID.js > osm-types.json + +This script would be run by upstream before making a release of gnome-maps if an updated version +of the iD editor is available with updated OSM types preset and/or new or updated translations +of those. +Check the resulting .json file (i.e. check size and possibly diff against the current version). +Copy the result to data/osm-types.json + diff --git a/scripts/extractPoiTypesFromID.js b/scripts/extractPoiTypesFromID.js new file mode 100755 index 00000000..031e9aed --- /dev/null +++ b/scripts/extractPoiTypesFromID.js @@ -0,0 +1,142 @@ +#!/usr/bin/env gjs + +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Script to generate a simplified JSON mapping file for POI types from the + * presets definitions from the iD Web-based OpenStreetMap editor + * + * Usage: ./extractPoiTypesFromID.js > osm-types.json + * + */ + +const Gio = imports.gi.Gio; + +const ByteArray = imports.byteArray; + +const PRESETS_PATH = 'data/presets'; +const LOCALES_PATH = 'dist/translations'; +const PRESET_TYPES = [ 'aeroway', + 'amenity', + 'leisure', + 'office', + 'place', + 'shop', + 'tourism' ]; + +const OUTPUT = {}; + +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function parseJson(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let {tags, name} = JSON.parse(getBufferText(buffer)); + + for (let key in tags) { + let value = tags[key]; + + OUTPUT[key + '/' + value] = {'title': {'C': name}}; + } +} + +function processType(type, basePath) { + let dirPath = [basePath, PRESETS_PATH, type].join('/'); + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + parseJson(dirPath, file.get_name()); + } +} + +function processTypes(basePath) { + PRESET_TYPES.forEach(function(type) { + processType(type, basePath); + }); +} + +function processLocale(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let object = JSON.parse(getBufferText(buffer)); + let lang = fileName.substring(0, fileName.indexOf('.json')); + + for (let type in OUTPUT) { + let name; + + try { + name = object[lang].presets.presets[type].name; + } catch (ex) { + continue; + } + + OUTPUT[type].title[lang] = name; + } +} + +function processLocales(basePath) { + let dirPath = basePath + '/' + LOCALES_PATH; + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*.json', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + processLocale(dirPath, file.get_name()); + } +} + +function outputJson() { + print(JSON.stringify(OUTPUT, null, 2)); +} + +function main(args) { + let path = args[0]; + + processTypes(path); + processLocales(path); + + outputJson(); +} + +main(ARGV); diff --git a/src/accountListBox.js b/src/accountListBox.js new file mode 100644 index 00000000..924a8a96 --- /dev/null +++ b/src/accountListBox.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const Goa = imports.gi.Goa; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var AccountRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/account-row.ui', + InternalChildren: [ 'providerLabel', + 'identityLabel', + 'providerImage', + 'attentionNeededImage' ], +}, class AccountRow extends Gtk.ListBoxRow { + _init(params) { + this.account = params.account; + delete params.account; + + super._init(params); + + let account = this.account.get_account(); + + this._providerLabel.label = account.provider_name; + this._identityLabel.label = account.presentation_identity; + this._providerImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + this._attentionNeededImage.visible = account.attention_needed; + } +}); + +var AccountListBox = GObject.registerClass({ + Signals: { + 'account-selected': { param_types: [Goa.Object] } + }, +}, class AccountListBox extends Gtk.ListBox { + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + Application.checkInManager.connect('accounts-refreshed', () => this.refresh()); + + this.connect('row-activated', + (list, row) => this.emit('account-selected', row.account)); + + this.refresh(); + } + + refresh() { + let accounts = Application.checkInManager.accounts; + + this.forall(function(row) { + row.destroy(); + }); + + accounts.forEach((account) => this.add(new AccountRow({ account: account }))); + } +}); diff --git a/src/address.js b/src/address.js new file mode 100644 index 00000000..0d171840 --- /dev/null +++ b/src/address.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for address formatting. + */ + +const Format = imports.format; + +/** + * Translation lookup table for street name and house number. + * First argument is the street name and the second the housenumber. + * Based on examples from https://en.wikipedia.org/wiki/Address#Address_format + * Currently don't include address formats for i.e. China and Japan as those + * formats differ from the Western ones and would need additional handling + * when printing place addresses (currently we assume there is a street name + * and house number). + */ +const FORMAT_MAP = { + 'AI': '%2$s %1$s', + 'AL': '%1$s %2$s̈́', + 'AR': '%1$s %2$s', + 'AS': '%1$s %2$s', + 'AU': '%2$s %1$s', + 'AX': '%1$s %2$s', + 'BA': '%1$s %2$s', + 'BD': '%1$s. %2$s', + 'BE': '%1$s %2$s', + 'BM': '%2$s %1$s', + 'BR': '%1$s, %2$s', + 'BY': '%1$s, д. %2$s', + /* if we had access to state codes, we could add a special case for + * Quebec format + */ + 'CA': '%2$s %1$s', + 'CH': '%1$s %2$s', + 'CL': '%1$s No° %2$s', + 'CZ': '%1$s %2$s', + 'CY': '%1$s %2$s', + 'DE': '%1$s %2$s', + 'DK': '%1$s %2$s', + 'EE': '%1$s %2$s', + 'ES': '%1$s, %2$s', + 'FI': '%1$s %2$s', + 'FK': '%2$s %1$s', + 'FO': '%1$s %2$s', + 'FR': '%2$s, %1$s', + 'GB': '%2$s %1$s', + 'GG': '%2$s %1$s', + 'GL': '%1$s %2$s', + 'GR': '%1$s %2$s', + 'HK': '%2$s %1$s', + 'HR': '%1$s %2$s', + 'HU': '%1$s %2$s', + 'IE': '%2$s %1$s', + 'IL': '%2$s %1$s', + 'IS': '%1$s %2$s', + 'IM': '%2$s %1$s', + 'IN': '%2$s %1$s', + 'ID': '%1$s No. %2$s', + 'IR': '%1$s %2$s', + 'IT': '%1$s %2$s', + 'IQ': '%1$s %2$s', + 'JE': '%2$s %1$s', + 'KR': '%1$s %2$s', + 'KY': '%2$s %1$s', + 'LI': '%1$s %2$s', + 'LK': '%2$s %1$s', + 'LU': '%1$s %2$s', + 'LV': '%1$s %2$s', + 'ME': '%1$s %2$s', + 'MO': '%1$s%2$s', + 'MS': '%2$s %1$s', + 'MY': '%2$s $1%s', + 'MX': '%1$s No. %2$s', + 'NL': '%1$s %2$s', + 'NO': '%1$s %2$s', + 'NZ': '%2$s %1$s', + 'OM': '%1$s, %2$s', + 'PE': '%1$s %2$s', + 'PH': '%2$s %1$s', + 'PN': '%2$s %1$s', + 'PK': '%2$s, %1$s', + 'PL': '%1$s %2$s', + 'PT': '%1$s %2$s', + 'RO': '%1$s, nr. %2$s', + 'RS': '%1$s %2$s', + 'RU': '%1$s, д. %2$s', + 'SA': '%2$s %1$s', + 'SE': '%1$s %2$s', + 'SG': '%2$s %1$s', + 'SH': '%2$s %1$s', + 'SJ': '%1$s %2$s', + 'SK': '%1$s %2$s', + 'SL': '%1$s %2$s', + 'TC': '%2$s %1$s', + 'TR': '%1$s %2$s', + 'TW': '%1$s, %2$s̈́', + 'UK': 'вул. %1$s, буд. %2$s', + 'US': '%2$s %1$s', + 'VG': '%2$s %1$s', + 'VI': '%2$s %1$s', + 'VN': 'số %2$s %1$s' +} + +function streetAddressForCountryCode(streetName, housenumber, countryCode) { + let format = FORMAT_MAP[countryCode]; + + if (format) + return Format.vprintf(format, [streetName, housenumber]); + else + return Format.vprintf('%s %s', [housenumber, streetName]); +} diff --git a/src/application.js b/src/application.js new file mode 100644 index 00000000..573bceef --- /dev/null +++ b/src/application.js @@ -0,0 +1,397 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const Hdy = imports.gi.Handy; +const WebKit2 = imports.gi.WebKit2; + +const CheckIn = imports.checkIn; +const ContactPlace = imports.contactPlace; +const Format = imports.format; +const Geoclue = imports.geoclue; +const MainWindow = imports.mainWindow; +const Maps = imports.gi.GnomeMaps; +const OSMEdit = imports.osmEdit; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const PlaceStore = imports.placeStore; +const RoutingDelegator = imports.routingDelegator; +const RouteQuery = imports.routeQuery; +const Settings = imports.settings; +const Utils = imports.utils; + +// used globally +var application = null; +var settings = null; +var placeStore = null; +var routingDelegator = null; +var geoclue = null; +var networkMonitor = null; +var checkInManager = null; +var contactStore = null; +var osmEdit = null; +var normalStartup = true; +var routeQuery = null; + +const _ensuredTypes = [WebKit2.WebView, + OSMTypeSearchEntry.OSMTypeSearchEntry]; + +var Application = GObject.registerClass({ + Properties: { + 'connected': GObject.ParamSpec.boolean('connected', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE), + 'selected-place': GObject.ParamSpec.object('selected-place', + 'Selected Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place), + 'adaptive-mode': GObject.ParamSpec.boolean('adaptive-mode', + 'Adaptive Move', + 'Whether the main window is in adaptive (narrow) mode', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE), + }, +}, class Application extends Gtk.Application { + + set connected(p) { + this._connected = p; + this.notify('connected'); + } + + get connected() { + return this._connected; + } + + _init() { + /* Translators: This is the program name. */ + GLib.set_application_name(_("Maps")); + + /* Needed to be able to use in UI files */ + _ensuredTypes.forEach((type) => GObject.type_ensure(type)); + + super._init({ application_id: 'org.gnome.Maps', + flags: Gio.ApplicationFlags.HANDLES_OPEN | + Gio.ApplicationFlags.HANDLES_COMMAND_LINE }); + this._connected = false; + + this.add_main_option('local', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.FILENAME, + _("A path to a local tiles directory structure"), + null); + this.add_main_option('local-tile-size', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.INT, + _("Tile size for local tiles directory"), + null); + + this.add_main_option('version', 'v'.charCodeAt(0), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, + _("Show the version of the program"), null); + + this.add_main_option('force-online', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + _("Ignore network availability"), + null); + /* due to https://gitlab.gnome.org/GNOME/gjs/-/issues/330 the + * description for the remaining args needs to be passed as both + * description and arg_description + */ + this.add_main_option(GLib.OPTION_REMAINING, + 0, + 0, + GLib.OptionArg.STRING_ARRAY, + _("[FILE…|URI]"), + _("[FILE…|URI]")); + } + + _checkNetwork() { + this.connected = + this._forceOnline || + networkMonitor.connectivity === Gio.NetworkConnectivity.FULL; + } + + _showContact(id) { + contactStore.lookup(id, (contact) => { + this.mark_busy(); + if (!contact) { + this.unmark_busy(); + return; + } + contact.geocode(() => { + this.unmark_busy(); + this._mainWindow.mapView.showContact(contact); + }); + }); + } + + _onShowContactActivate(action, parameter) { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + + let id = parameter.deep_unpack(); + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this. _showContact(id); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._showContact(id); + }); + } + } + + _onOsmAccountSetupActivate() { + let dialog = osmEdit.createAccountDialog(this._mainWindow, false); + + dialog.show(); + dialog.connect('response', () => dialog.destroy()); + } + + _addContacts() { + let contacts = contactStore.get_contacts(); + + this._addContactsRecursive(contacts, 0); + } + + _addContactsRecursive(contacts, index) { + if (index < contacts.length) { + let contact = contacts[index]; + + contact.geocode(() => { + contact.get_places().forEach((p) => { + if (!p.location) + return + + Utils.debug('Adding contact address: ' + p.name); + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + placeStore.addPlace(place, PlaceStore.PlaceType.CONTACT); + }); + + this._addContactsRecursive(contacts, index + 1); + }); + } + } + + _initPlaceStore() { + placeStore = new PlaceStore.PlaceStore({ + recentPlacesLimit: settings.get('recent-places-limit'), + recentRoutesLimit: settings.get('recent-routes-limit') + }); + try { + placeStore.load(); + } catch (e) { + log('Failed to parse Maps places file, ' + + 'subsequent writes will overwrite the file!'); + } + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this._addContacts(); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._addContacts(); + }); + } + } + + _onNightModeChange(action) { + let state = action.get_state(); + let gtkSettings = Gtk.Settings.get_default(); + gtkSettings.gtk_application_prefer_dark_theme = state.get_boolean(); + } + + vfunc_startup() { + super.vfunc_startup(); + + GtkClutter.init(null); + Hdy.init(); + + Utils.loadStyleSheet(Gio.file_new_for_uri('resource:///org/gnome/Maps/application.css')); + + application = this; + this._initServices(); + + Utils.addActions(this, { + 'show-contact': { + paramType: 's', + onActivate: this._onShowContactActivate.bind(this) + }, + 'osm-account-setup': { + onActivate: this._onOsmAccountSetupActivate.bind(this) + }, + 'night-mode': { + paramType: 'b', + onChangeState: this._onNightModeChange.bind(this), + setting: 'night-mode' + }, + 'quit': { + onActivate: () => this.quit(), + accels: ['Q'] + } + }, settings); + + // set dark theme when night-mode is enabled + let gtkSettings = Gtk.Settings.get_default(); + + gtkSettings.gtk_application_prefer_dark_theme = + settings.get('night-mode'); + + Gtk.IconTheme.get_default().append_search_path(GLib.build_filenamev([pkg.pkgdatadir, + 'icons'])); + this._initPlaceStore(); + } + + _initServices() { + settings = Settings.getSettings('org.gnome.Maps'); + routeQuery = new RouteQuery.RouteQuery(); + routingDelegator = new RoutingDelegator.RoutingDelegator({ query: routeQuery }); + geoclue = new Geoclue.Geoclue(); + networkMonitor = Gio.NetworkMonitor.get_default(); + networkMonitor.connect('network-changed', + this._checkNetwork.bind(this)); + checkInManager = new CheckIn.CheckInManager(); + contactStore = new Maps.ContactStore(); + contactStore.load(); + osmEdit = new OSMEdit.OSMEdit(); + } + + _createWindow() { + if (this._mainWindow) + return; + + this._mainWindow = new MainWindow.MainWindow({ application: this }); + this._mainWindow.connect('destroy', () => this._onWindowDestroy()); + if (GLib.getenv('MAPS_DEBUG') === 'focus') { + this._mainWindow.connect('set-focus', (window, widget) => { + log('* focus widget: %s'.format(widget)); + }); + } + } + + vfunc_dbus_register(connection, path) { + super.vfunc_dbus_register(connection, path); + return true; + } + + vfunc_dbus_unregister(connection, path) { + super.vfunc_dbus_unregister(connection, path); + } + + vfunc_activate() { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + } + + _openInternal(files) { + if (!this._mainWindow || !this._mainWindow.mapView.view.realized) + return; + + let uri = files[0].get_uri(); + let scheme = GLib.uri_parse_scheme(uri); + + if (scheme === 'geo') { + /* we get an uri that looks like geo:///lat,lon, remove slashes */ + let geoURI = uri.replace(/\//g, ''); + this._mainWindow.mapView.goToGeoURI(geoURI); + } else if (scheme === 'http' || scheme === 'https') { + this._mainWindow.mapView.goToHttpURL(uri); + } else { + this._mainWindow.mapView.openShapeLayers(files); + } + } + + vfunc_open(files) { + normalStartup = false; + this.activate(); + + let mapView = this._mainWindow.mapView; + if (mapView.view.realized) + this._openInternal(files); + else + mapView.view.connect('notify::realized', + this._openInternal.bind(this, files)); + } + + vfunc_command_line(cmdline) { + let options = cmdline.get_options_dict(); + + if (options.contains('local')) { + let variant = options.lookup_value('local', null); + this.local_tile_path = variant.deep_unpack(); + normalStartup = false; + if (options.contains('local-tile-size')) { + variant = options.lookup_value('local-tile-size', null); + this.local_tile_size = variant.deep_unpack(); + } + } else if (options.contains('version')) { + print(pkg.version); + /* quit the invoked process after printing the version number + * leaving the running instance unaffected + */ + return 0; + } else if (options.contains('force-online')) { + this._forceOnline = true; + } + + let remaining = options.lookup(GLib.OPTION_REMAINING, null); + + if (remaining) { + let files = []; + + remaining.forEach((r) => { + let path = r.get_string()[0]; + + if (path.startsWith('geo:') || path.startsWith('http://') || + path.startsWith('https://')) { + files.push(Gio.File.new_for_uri(path)); + } else { + files.push(Gio.File.new_for_path(path)); + } + }); + + this.open(files, ''); + } else { + this.activate(); + } + + return 0; + } + + _onWindowDestroy(window) { + this._mainWindow = null; + } +}); diff --git a/src/checkIn.js b/src/checkIn.js new file mode 100644 index 00000000..e314da7a --- /dev/null +++ b/src/checkIn.js @@ -0,0 +1,178 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Goa = imports.gi.Goa; +const Gtk = imports.gi.Gtk; + +const CheckInDialog = imports.checkInDialog; +const FacebookBackend = imports.facebookBackend; +const FoursquareBackend = imports.foursquareBackend; + +var CheckInManager = GObject.registerClass({ + Signals: { + 'accounts-refreshed': { } + }, + Properties: { + 'hasCheckIn': GObject.ParamSpec.boolean('hasCheckIn', + '', + '', + GObject.ParamFlags.READABLE) + } +}, class CheckInManager extends GObject.Object { + _init() { + super._init(); + + try { + this._goaClient = Goa.Client.new_sync(null); + } catch (e) { + log('Error creating GOA client: %s'.format(e.message)); + } + + this._accounts = []; + this._authorizers = {}; + this._backends = {}; + + this._initBackends(); + + if (this._goaClient) { + this._goaClient.connect('account-added', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-changed', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-removed', + this._refreshGoaAccounts.bind(this)); + } + + this._refreshGoaAccounts(); + } + + _initBackends() { + let facebookBackend = new FacebookBackend.FacebookBackend(); + this._backends[facebookBackend.name] = facebookBackend; + + let foursquareBackend = new FoursquareBackend.FoursquareBackend(); + this._backends[foursquareBackend.name] = foursquareBackend; + } + + _refreshGoaAccounts() { + if (!this._goaClient) + return; + let accounts = this._goaClient.get_accounts(); + this._accounts = []; + this._accountsCount = 0; + this._authorizers = {}; + + accounts.forEach((object) => { + if (!object.get_account()) + return; + + if (!object.get_maps()) + return; + + let accountId = object.get_account().id; + this._accounts.push(object); + + this._authorizers[accountId] = this._getBackend(object).createAuthorizer(object); + }); + + this.emit('accounts-refreshed'); + this.notify('hasCheckIn'); + } + + get client() { + return this._goaClient; + } + + get accounts() { + return this._accounts; + } + + get hasCheckIn() { + return this._accounts.length > 0; + } + + _getAuthorizer(account) { + return this._authorizers[account.get_account().id]; + } + + _getBackend(account) { + return this._backends[account.get_account().provider_type]; + } + + performCheckIn(account, checkIn, callback, cancellable) { + this._getBackend(account) + .performCheckIn(this._getAuthorizer(account), checkIn, callback, cancellable); + } + + findPlaces(account, latitude, longitude, distance, callback, cancellable) { + this._getBackend(account) + .findPlaces(this._getAuthorizer(account), latitude, longitude, distance, callback, cancellable); + } + + showCheckInDialog(parentWindow, place, matchPlace) { + let dialog = new CheckInDialog.CheckInDialog({ transient_for: parentWindow, + matchPlace: matchPlace, + place: place }); + let response = dialog.run(); + dialog.destroy(); + + let message = null; + + switch (response) { + case CheckInDialog.Response.FAILURE_NO_PLACES: + if (matchPlace) + /* Translators: %s is the place name that user wanted to check-in */ + message = _("Cannot find “%s” in the social service").format(place.name); + else + message = _("Cannot find a suitable place to check-in in this location"); + break; + case CheckInDialog.Response.FAILURE_GET_PLACES: + if (dialog.error.code === 401) + message = _("Credentials have expired, please open Online Accounts to sign in and enable this account"); + else + message = dialog.error.message; + break; + } + + if (message) { + let messageDialog = new Gtk.MessageDialog({ transient_for: parentWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: message }); + messageDialog.run(); + messageDialog.destroy(); + } + } +}); + +var CheckIn = class { + _init() { + this.message = null; + this.place = null; + this.privacy = null; + this.broadcastFacebook = false; + this.broadcastTwitter = false; + } +}; diff --git a/src/checkInDialog.js b/src/checkInDialog.js new file mode 100644 index 00000000..7b65cf27 --- /dev/null +++ b/src/checkInDialog.js @@ -0,0 +1,288 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const AccountListBox = imports.accountListBox; +const Application = imports.application; +const CheckIn = imports.checkIn; +const SocialPlaceListBox = imports.socialPlaceListBox; +const SocialPlaceMatcher = imports.socialPlaceMatcher; + +var Response = { + SUCCESS: 0, + CANCELLED: 1, + FAILURE_NO_PLACES: 2, + FAILURE_GET_PLACES: 3, + FAILURE_ACCOUNT_DISABLED: 4, + FAILURE_CHECKIN_DISABLED: 5 +}; + +var CheckInDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/check-in-dialog.ui', + InternalChildren: [ 'cancelButton', + 'okButton', + 'stack', + 'accountFrame', + 'placeScrolledWindow', + 'placeNotFoundInfoBar', + 'placeNotFoundLabel', + 'messageInfoLabel', + 'messageInfoAccountImage', + 'messageTextView', + 'facebookOptionsGrid', + 'facebookOptionsPrivacyComboBox', + 'foursquareOptionsGrid', + 'foursquareOptionsPrivacyComboBox', + 'foursquareOptionsBroadcastFacebookCheckButton', + 'foursquareOptionsBroadcastTwitterCheckButton' ], +}, class CheckInDialog extends Gtk.Dialog { + _init(params) { + this._place = params.place; + delete params.place; + + this._matchPlace = params.matchPlace; + delete params.matchPlace; + + // This is a construct-only property and cannot be set by GtkBuilder + params.use_header_bar = true; + + super._init(params); + + this._account = null; + this._checkIn = new CheckIn.CheckIn(); + this.error = null; + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + Application.checkInManager.connect('accounts-refreshed', + () => this._onAccountRefreshed()); + + this._initHeaderBar(); + this._initWidgets(); + } + + _initHeaderBar() { + this._cancelButton.connect('clicked', + () => this._cancellable.cancel()); + + this._okButton.connect('clicked', () => this._startCheckInStep()); + } + + _initWidgets() { + // Limitations in Gjs means we can't do this in UI files yet + this._accountListBox = new AccountListBox.AccountListBox({ visible: true }); + this._accountFrame.add(this._accountListBox); + + this._placeListBox = new SocialPlaceListBox.SocialPlaceListBox({ visible: true }); + this._placeScrolledWindow.add(this._placeListBox); + + Application.settings.bind('checkin-facebook-privacy', + this._facebookOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-privacy', + this._foursquareOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-facebook', + this._foursquareOptionsBroadcastFacebookCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-twitter', + this._foursquareOptionsBroadcastTwitterCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + this._accountListBox.connect('account-selected', (list, account) => { + this._account = account; + this._startPlaceStep(); + }); + + this._placeListBox.connect('place-selected', (list, place) => { + this._checkIn.place = place; + this._startMessageStep(); + }); + } + + vfunc_show() { + this._startup(); + super.vfunc_show(); + } + + _startup() { + let accounts = Application.checkInManager.accounts; + + if (accounts.length > 1) + this._startAccountStep(); + else if (accounts.length === 1) { + this._account = Application.checkInManager.accounts[0]; + this._startPlaceStep(); + } else { + Mainloop.idle_add(() => { + this.response(Response.FAILURE_CHECKIN_DISABLED); + }); + } + } + + _onAccountRefreshed() { + let accounts = Application.checkInManager.accounts; + + if (!Application.checkInManager.hasCheckIn) + this.response(Response.FAILURE_CHECKIN_DISABLED); + else if (this._account) { + for (let account of accounts) { + if (this._account.get_account().id === account.get_account().id) + return; + } + + this.response(Response.FAILURE_ACCOUNT_DISABLED); + } + } + + _startAccountStep() { + this.set_title(_("Select an account")); + this._stack.set_visible_child_name('account'); + } + + _startPlaceStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + Application.checkInManager.findPlaces(this._account, + this._place.location.latitude, + this._place.location.longitude, + 100, + this._onFindPlacesFinished.bind(this), + this._cancellable); + } + + _onFindPlacesFinished(account, places, error) { + if (!error) { + if (places.length === 0) { + this.response(Response.FAILURE_NO_PLACES); + return; + } + + let matches = SocialPlaceMatcher.match(this._place, places); + + if (matches.exactMatches.length === 1 && this._matchPlace) { + this._checkIn.place = matches.exactMatches[0]; + this._startMessageStep(); + } else { + this.set_title(_("Select a place")); + this._placeListBox.matches = matches; + + if (this._matchPlace) { + if (this._account.get_account().provider_type === 'facebook') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Facebook. Please select one from this list."); + else if (this._account.get_account().provider_type === 'foursquare') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Foursquare. Please select one from this list."); + } else + this._placeNotFoundInfoBar.hide(); + + this._stack.set_visible_child_name('place'); + } + } else { + this.error = error; + this.response(Response.FAILURE_GET_PLACES); + } + } + + _startMessageStep() { + /* Translators: %s is the name of the place to check in. + */ + this.set_title(_("Check in to %s").format(this._checkIn.place.name)); + this._stack.set_visible_child_name('message'); + + this._messageTextView.grab_focus(); + this._okButton.show(); + + let account = this._account.get_account(); + + /* Translators: %s is the name of the place to check in. + */ + let labelMessageInfo = _("Write an optional message to check in to %s."); + this._messageInfoLabel.label = labelMessageInfo.format('%s'.format(this._checkIn.place.link, + this._checkIn.place.name)); + this._messageInfoAccountImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + + let optionsGrids = { 'facebook': this._facebookOptionsGrid, + 'foursquare': this._foursquareOptionsGrid }; + + for (let provider in optionsGrids) + if (provider === account.provider_type) + optionsGrids[provider].show(); + else + optionsGrids[provider].hide(); + } + + _startCheckInStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + this._okButton.hide(); + + let message = this._messageTextView.buffer.text; + let privacy; + + if (this._account.get_account().provider_type === 'facebook') + privacy = this._facebookOptionsPrivacyComboBox.active_id; + else if (this._account.get_account().provider_type === 'foursquare') + privacy = this._foursquareOptionsPrivacyComboBox.active_id; + + let broadcastFacebook = this._foursquareOptionsBroadcastFacebookCheckButton.active; + let broadcastTwitter = this._foursquareOptionsBroadcastTwitterCheckButton.active; + + this._checkIn.message = message; + this._checkIn.privacy = privacy; + this._checkIn.broadcastFacebook = broadcastFacebook; + this._checkIn.broadcastTwitter = broadcastTwitter; + + Application.checkInManager.performCheckIn(this._account, + this._checkIn, + this._onPerformCheckInFinished.bind(this), + this._cancellable); + } + + _onPerformCheckInFinished(account, data, error) { + if (!error) + this.response(Response.SUCCESS); + else { + let messageDialog = new Gtk.MessageDialog({ transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: error.message }); + messageDialog.run(); + messageDialog.destroy(); + + this._startMessageStep(); + } + } +}); diff --git a/src/color.js b/src/color.js new file mode 100644 index 00000000..36f21f24 --- /dev/null +++ b/src/color.js @@ -0,0 +1,94 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* Minimum contrast ratio for foreground/background color for i.e. route labels */ +const MIN_CONTRAST_RATIO = 2.0; + +/** + * Parses a given color component index (0: red, 1: green, 2: blue) + * from a hex-encoded color string. Optionally, if defaultValue is supplied, + * fallback to that if color is undefined. + */ +function parseColor(color, component, defaultValue) { + if (color) { + let index = component * 2; + return parseInt(color.substring(index, index + 2), 16) / 255; + } else { + return defaultValue; + } +} + +/** + * Returns the relative luminance (0.0 - 1.0) of a color, expressed in HTML + * notation (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Relative_luminance + */ +function relativeLuminance(color) { + let rsRGB = parseColor(color, 0); + let gsRGB = parseColor(color, 1); + let bsRGB = parseColor(color, 2); + let r = rsRGB <= 0.03928 ? + rsRGB / 12.92 : Math.pow(((rsRGB + 0.055) / 1.055), 2.4); + let g = gsRGB <= 0.03928 ? + gsRGB / 12.92 : Math.pow(((gsRGB + 0.055) / 1.055), 2.4); + let b = bsRGB <= 0.03928 ? + bsRGB / 12.92 : Math.pow(((bsRGB + 0.055) / 1.055), 2.4); + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +/** + * Returns the contrast ratio between two colors, expressed in HTML notation + * (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Contrast_ratio + */ +function contrastRatio(color1, color2) { + let lc1 = relativeLuminance(color1); + let lc2 = relativeLuminance(color2); + /* order by luminance, lighter before darker */ + let l1 = Math.max(lc1, lc2); + let l2 = Math.min(lc1, lc2); + + return (l1 + 0.05) / (l2 + 0.05); +} + +/** + * Finds a suitable foreground (text) color for a given background color. + * If the desiredForegroundColor argument is defined, return this color if it + * has enough contrast against the background, otherwise (or if that argument + * is undefined), return the one of black or white giving the highest contrast + */ +function getContrastingForegroundColor(backgroundColor, + desiredForegroundColor) { + if (!desiredForegroundColor || + (contrastRatio(backgroundColor, desiredForegroundColor) < + MIN_CONTRAST_RATIO)) { + let contrastAgainstWhite = contrastRatio(backgroundColor, 'ffffff'); + let contrastAgainstBlack = contrastRatio(backgroundColor, '000000'); + + if (contrastAgainstWhite > contrastAgainstBlack) + return 'ffffff'; + else + return '000000'; + } else { + return desiredForegroundColor; + } +} diff --git a/src/contactPlace.js b/src/contactPlace.js new file mode 100644 index 00000000..6c036c22 --- /dev/null +++ b/src/contactPlace.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; + +const Place = imports.place; + +var ContactPlace = GObject.registerClass( +class ContactPlace extends Place.Place { + _init(params) { + this._contact = params.contact; + delete params.contact; + + params.store = false; + super._init(params); + } + + get icon() { + return this._contact.icon; + } + + get uniqueID() { + return [this.name, + this.osm_type, + this.osm_id].join('-'); + } +}); diff --git a/src/contextMenu.js b/src/contextMenu.js new file mode 100644 index 00000000..5575e2d0 --- /dev/null +++ b/src/contextMenu.js @@ -0,0 +1,201 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEdit = imports.osmEdit; +const OSMEditDialog = imports.osmEditDialog; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; +const ZoomInDialog = imports.zoomInDialog; + +var ContextMenu = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/context-menu.ui', + InternalChildren: [ 'whatsHereItem', + 'geoURIItem', + 'addOSMLocationItem', + 'routeFromHereItem', + 'addIntermediateDestinationItem', + 'routeToHereItem' ], +}, class ContextMenu extends Gtk.Menu { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + super._init(params); + + this._mapView.connect('button-release-event', + this._onButtonReleaseEvent.bind(this)); + + this._whatsHereItem.connect('activate', + this._onWhatsHereActivated.bind(this)); + this._geoURIItem.connect('activate', + this._onGeoURIActivated.bind(this)); + this._addOSMLocationItem.connect('activate', + this._onAddOSMLocationActivated.bind(this)); + this._routeFromHereItem.connect('activate', + this._onRouteFromHereActivated.bind(this)); + this._addIntermediateDestinationItem.connect('activate', + this._onAddIntermediateDestinationActivated.bind(this)); + this._routeToHereItem.connect('activate', + this._onRouteToHereActivated.bind(this)); + Application.routeQuery.connect('notify::points', + this._routingUpdate.bind(this)); + this._routingUpdate(); + } + + _onButtonReleaseEvent(widget, event) { + let [, button] = event.get_button(); + let [, x, y] = event.get_coords(); + this._longitude = this._mapView.view.x_to_longitude(x); + this._latitude = this._mapView.view.y_to_latitude(y); + + if (button === Gdk.BUTTON_SECONDARY) { + // Need idle to avoid Clutter dead-lock on re-entrance + Mainloop.idle_add(() => this.popup_at_pointer(event)); + } + } + + _routingUpdate() { + let query = Application.routeQuery; + let numPoints = query.points.length; + + this._routeFromHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._routeToHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._addIntermediateDestinationItem.sensitive = + query.filledPoints.length >= 2 && numPoints < RouteQuery.MAX_QUERY_POINTS; + } + + _onRouteFromHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.points[0].place = place; + } + + _onRouteToHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.points.last().place = place; + } + + _onAddIntermediateDestinationActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.addPoint(-1).place = place; + } + + _onWhatsHereActivated() { + GeocodeFactory.getGeocoder().reverse(this._latitude, this._longitude, + (place) => { + if (place) { + this._mapView.showPlace(place, false); + } else { + let msg = _("Nothing found here!"); + + Utils.showDialog(msg, Gtk.MessageType.INFO, this._mainWindow); + } + }); + } + + _onGeoURIActivated() { + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + let uri = location.to_uri(Geocode.LocationURIScheme.GEO); + + clipboard.set_text(uri, uri.length); + } + + _onAddOSMLocationActivated() { + let osmEdit = Application.osmEdit; + /* if the user is not already signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this._mainWindow, true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._addOSMLocation(); + }); + + return; + } + + this._addOSMLocation(); + } + + _addOSMLocation() { + let osmEdit = Application.osmEdit; + + if (this._mapView.view.get_zoom_level() < OSMEdit.MIN_ADD_LOCATION_ZOOM_LEVEL) { + let zoomInDialog = + new ZoomInDialog.ZoomInDialog({ longitude: this._longitude, + latitude: this._latitude, + view: this._mapView.view, + transient_for: this._mainWindow, + modal: true }); + + zoomInDialog.connect('response', () => zoomInDialog.destroy()); + zoomInDialog.show_all(); + return; + } + + let dialog = + osmEdit.createEditNewDialog(this._mainWindow, + this._latitude, this._longitude); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMEditDialog.Response.UPLOADED) { + Utils.showDialog(_("Location was added to the map, note that it may take a while before it shows on the map and in search results."), + Gtk.MessageType.INFO, this._mainWindow); + } + }); + } +}); diff --git a/src/epaf.js b/src/epaf.js new file mode 100644 index 00000000..4465a730 --- /dev/null +++ b/src/epaf.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jussi Kukkonen + * Mattias Bengtsson + */ + +// Google encoded polyline decoder +// https://developers.google.com/maps/documentation/utilities/polylinealgorithm + +const Champlain = imports.gi.Champlain; + +function _decodeValue(data, index) { + let b; + let shift = 0; + let value = 0; + + do { + // 63 added to keep string printable + b = data.charCodeAt(index++) - 63; + + // Get 5 bits at a time until hit the end of value + // (which is not OR'd with 0x20) + value |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + + // negative values are encoded as two's complement + let ret_val = ((value & 1) ? ~(value >> 1) : (value >> 1)); + return [ret_val, index]; +} + +function decode(data) { + let length = data.length; + let polyline = []; + let index = 0; + let lat = 0; + let lon = 0; + + while (index < length) { + let latdelta, londelta; + + [latdelta, index] = _decodeValue(data, index); + [londelta, index] = _decodeValue(data, index); + + // first value is absolute, rest are relative to previous value + lat += latdelta; + lon += londelta; + polyline.push(new Champlain.Coordinate({ + latitude: lat * 1e-5, + longitude: lon * 1e-5 + })); + } + return polyline; +} diff --git a/src/exportViewDialog.js b/src/exportViewDialog.js new file mode 100644 index 00000000..42b7996d --- /dev/null +++ b/src/exportViewDialog.js @@ -0,0 +1,183 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _PREVIEW_WIDTH = 150; + +var ExportViewDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/export-view-dialog.ui', + InternalChildren: [ 'exportButton', + 'cancelButton', + 'filenameEntry', + 'fileChooserButton', + 'previewArea', + 'layersCheckButton' ], +}, class ExportViewDialog extends Gtk.Dialog { + _init(params) { + this._surface = params.surface; + delete params.surface; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._cancelButton.connect('clicked', () => this.response(Response.CANCEL)); + this._exportButton.connect('clicked', () => this._exportView()); + this._filenameEntry.connect('changed', () => this._onFileNameChanged()); + this._fileChooserButton.connect('file-set', () => this._onFolderChanged()); + this._layersCheckButton.connect('toggled', () => this._includeLayersChanged()); + + + this._folder = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES); + if (!this._folder) + this._folder = GLib.get_user_data_dir(); + + this._filenameEntry.text = this._fileName = this._getName(); + this._fileChooserButton.set_current_folder(this._folder); + this._setupPreviewArea(); + } + + _getName() { + /* Translators: This is a format string for a PNG filename for an + * exported image with coordinates. The .png extension should be kept + * intact in the translated string. + */ + return _("Maps at %f, %f.png").format(this._latitude.toFixed(2), + this._longitude.toFixed(2)); + } + + _setupPreviewArea() { + let [surfaceWidth, surfaceHeight] = this._mapView.view.get_size(); + + let width = _PREVIEW_WIDTH; + this._scaleFactor = width / surfaceWidth; + let height = surfaceHeight * this._scaleFactor; + + this._previewArea.set_size_request(width, height); + this._previewArea.connect('draw', + (w, cr) => this._drawPreview(w, cr)); + } + + _drawPreview(widget, cr) { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.scale(this._scaleFactor, this._scaleFactor); + cr.setSourceSurface(this._surface, 0, 0); + cr.paint(); + } + + _onFileNameChanged() { + let name = GLib.filename_from_utf8(this._filenameEntry.text, -1)[0]; + name = name.toString(); + if (!name) { + this._exportButton.sensitive= false; + return; + } + + try { + GLib.build_filenamev([this._folder, name]); + this._exportButton.sensitive = true; + this._fileName = name; + } catch(e) { + this._exportButton.sensitive = false; + } + } + + _onFolderChanged() { + let folder = this._fileChooserButton.get_filename(); + + if (!GLib.file_test(folder, GLib.FileTest.IS_DIR)) { + this._exportButton.sensitive= false; + return; + } + if (!GLib.file_test(folder, GLib.FileTest.EXISTS)) { + this._exportButton.sensitive = false; + return; + } + + this._exportButton.sensitive = true; + this._folder = folder; + } + + _exportView() { + let [width, height] = this._mapView.view.get_size(); + let pixbuf = Gdk.pixbuf_get_from_surface(this._surface, 0, 0, width, height); + let path = GLib.build_filenamev([this._folder, this._fileName]); + + try { + pixbuf.savev(path, "png", [], []); + this.response(Response.SUCCESS); + } catch(e) { + Utils.debug('failed to export view: ' + e.message); + let details = null; + + if (e.matches(GLib.FileError, GLib.FileError.ROFS)) + details = _("Filesystem is read only"); + else if (e.matches(GLib.FileError, GLib.FileError.ACCES)) + details = _("You do not have permission to save there"); + else if (e.matches(GLib.FileError, GLib.FileError.NOENT)) + details = _("The directory does not exist"); + else if (e.matches(GLib.FileError, GLib.FileError.ISDIR)) + details = _("No filename specified"); + + let dialog = new Gtk.MessageDialog({ + transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("Unable to export view"), + secondary_text: details + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + } + + _includeLayersChanged() { + let includeLayers = this._layersCheckButton.get_active(); + + this._surface = this._mapView.view.to_surface(includeLayers); + this._previewArea.queue_draw(); + } +}); diff --git a/src/facebookBackend.js b/src/facebookBackend.js new file mode 100644 index 00000000..3df30adc --- /dev/null +++ b/src/facebookBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GFBGraph = imports.gi.GFBGraph; +const GObject = imports.gi.GObject; + +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://www.facebook.com/%s'; + +var FacebookBackend = GObject.registerClass( +class FacebookBackend extends ServiceBackend.ServiceBackend { + get name() { + return 'facebook'; + } + + createRestCall(authorizer) { + return GFBGraph.new_rest_call(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refresh_authorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goa_object; + } + + createAuthorizer(account) { + return new GFBGraph.GoaAuthorizer({ goa_object: account }); + } + + isTokenInvalid(restCall, data) { + return data.error && + (data.error.code === 2500 || data.error.code === 104 || data.error.code === 190); + } + + isInvalidCall(restCall, data) { + if (!data) { + return true; + } else if (data.error) { + return true; + } else { + return false; + } + } + + getCallResultCode(restCall, data) { + return data ? + (data.error ? data.error.code : null) : + restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? + (data.error ? data.error.message : null) : + restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + this.callAsync(authorizer, + 'POST', + 'me/feed', + { + 'message': checkIn.message, + 'place': checkIn.place.id, + 'privacy_value': checkIn.privacy + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'search', + { + 'type': 'place', + 'center': latitude + ',' + longitude, + 'distance': distance + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.data.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.latitude, + longitude: place.location.longitude, + category: place.category, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/favoritesPopover.js b/src/favoritesPopover.js new file mode 100644 index 00000000..097864ba --- /dev/null +++ b/src/favoritesPopover.js @@ -0,0 +1,120 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; + +const _N_VISIBLE = 6; + +var FavoritesPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/favorites-popover.ui', + InternalChildren: [ 'mainGrid', + 'entry', + 'scrolledWindow', + 'list' ], + Properties: { + 'rows': GObject.ParamSpec.int('rows', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, GLib.MAXINT32, 0) + } +}, class FavoritesPopover extends Gtk.Popover { + + _init(params) { + params = params || { }; + + this._mapView = params.mapView; + delete params.mapView; + + params.transitions_enabled = false; + super._init(params); + + this._rows = 0; + + let placeType = PlaceStore.PlaceType.FAVORITE; + this._model = Application.placeStore.getModelForPlaceType(placeType); + + this._model.connect('row-deleted', + this._updateList.bind(this)); + this._model.connect('row-inserted', + this._updateList.bind(this)); + + this._list.set_header_func(function(row, before) { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this.connect('notify::rows', () => { + let visible = Math.min(this._rows, _N_VISIBLE); + let separators = visible - 1; // separators are 1px + let height = PlaceListRow.ROW_HEIGHT * visible + separators; + + this._scrolledWindow.min_content_height = height; + this._entry.visible = this._rows > _N_VISIBLE; + }); + + this._entry.connect('changed', + () => this._list.invalidate_filter(this._list)); + + this._list.connect('row-activated', (list, row) => { + this.hide(); + this._mapView.showPlace(row.place, true); + }); + + this._list.set_filter_func((row) => { + return row.place.match(this._entry.text); + }); + + this._updateList(); + } + + set rows(rows) { + if (rows !== this._rows) { + this._rows = rows; + this.notify('rows'); + } + } + + get rows() { + return this._rows; + } + + _updateList() { + this._list.forall((row) => row.destroy()); + + let rows = 0; + this._model.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + + let row = new PlaceListRow.PlaceListRow({ place: place, + can_focus: true }); + this._list.add(row); + rows++; + }); + + this.rows = rows; + } +}); diff --git a/src/foursquareBackend.js b/src/foursquareBackend.js new file mode 100644 index 00000000..164ddfb6 --- /dev/null +++ b/src/foursquareBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const FoursquareGoaAuthorizer = imports.foursquareGoaAuthorizer; +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://foursquare.com/v/foursquare-hq/%s'; + +var FoursquareBackend = GObject.registerClass( +class SocialServiceFoursquareBackend extends ServiceBackend.ServiceBackend { + + get name() { + return 'foursquare'; + } + + createRestCall(authorizer) { + return FoursquareGoaAuthorizer.newRestCall(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refreshAuthorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goaObject; + } + + createAuthorizer(account) { + return new FoursquareGoaAuthorizer.FoursquareGoaAuthorizer({ goaObject: account }); + } + + isTokenInvalid(restCall, data) { + return data.meta.code === 401 || data.meta.code === 403; + } + + isInvalidCall(restCall, data) { + return !data || data.meta.code !== 200; + } + + getCallResultCode(restCall, data) { + return data ? data.meta.code : restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? data.meta.errorDetail : restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + let broadcast = checkIn.privacy; + + if (checkIn.broadcastFacebook) + broadcast += ',facebook'; + + if (checkIn.broadcastTwitter) + broadcast += ',twitter'; + + this.callAsync(authorizer, + 'POST', + 'checkins/add', + { + 'shout': checkIn.message, + 'venueId': checkIn.place.id, + 'broadcast': broadcast + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'venues/search', + { + 'll': latitude + ',' + longitude, + 'radius': distance, + 'intent': 'checkin' + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.response.venues.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.lat, + longitude: place.location.lng, + category: place.categories.length > 0 ? + place.categories[0].name : + null, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/foursquareGoaAuthorizer.js b/src/foursquareGoaAuthorizer.js new file mode 100644 index 00000000..d51ba968 --- /dev/null +++ b/src/foursquareGoaAuthorizer.js @@ -0,0 +1,91 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Rest = imports.gi.Rest; + +const _FOURSQUARE_API_VERSION = '20140226'; + +var FoursquareGoaAuthorizer = class FoursquareGoaAuthorizer { + constructor(params) { + if (!params.goaObject) { + logError('FoursquareGoaAuthorizer requires goaObject parameter'); + return; + } + + this.goaObject = params.goaObject; + } + + get goaObject() { + return this._goaObject; + } + + set goaObject(object) { + this._goaObject = object; + this._accessToken = null; + } + + _refreshAccessToken(cancellable) { + if (this._accessToken) + return true; + + let getAccessTokenResult = this.goaObject.get_oauth2_based().call_get_access_token_sync(cancellable); + + if (getAccessTokenResult[0]) { + this._accessToken = getAccessTokenResult[1]; + return true; + } + + return false; + } + + processCall(restCall) { + this._refreshAccessToken(null); + restCall.add_param('oauth_token', this._accessToken); + restCall.add_param('v', _FOURSQUARE_API_VERSION); + } + + processMessage(soupMessage) { + this._refreshAccessToken(null); + let uri = soupMessage.get_uri(); + uri.set_query(uri, 'oauth_token' + this._accessToken + '&v=' + _FOURSQUARE_API_VERSION); + } + + refreshAuthorization(cancellable) { + let ensureCredentialsResult = this.goaObject.get_account().call_ensure_credentials_sync(cancellable); + if (ensureCredentialsResult[0]) { + this._accessToken = null; + return this._refreshAccessToken(cancellable); + } + + return false; + } +}; + +function newRestCall(authorizer) +{ + let proxy = new Rest.Proxy({ url_format: 'https://api.foursquare.com/v2', + binding_required: false }); + let restCall = proxy.new_call(); + + authorizer.processCall(restCall); + + return restCall; +} diff --git a/src/geoJSONShapeLayer.js b/src/geoJSONShapeLayer.js new file mode 100644 index 00000000..5b9b1b1b --- /dev/null +++ b/src/geoJSONShapeLayer.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +var GeoJSONShapeLayer = GObject.registerClass( +class GeoJSONShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + getName() { + /* Special Case since this file extension contains 2 periods */ + let suffix = '.geo.json'; + if (this.filename.endsWith(suffix)) + return this.filename.replace(new RegExp(suffix + '$'), ''); + else + return super.getName(); + } + + _parseContent() { + this._mapSource.parse(JSON.parse(Utils.getBufferText(this._fileContents))); + } +}); + +GeoJSONShapeLayer.mimeTypes = ['application/vnd.geo+json', + 'application/geo+json', + 'application/json']; +GeoJSONShapeLayer.displayName = 'GeoJSON'; +GeoJSONShapeLayer.createInstance = function(params) { + return new GeoJSONShapeLayer(params); +}; diff --git a/src/geoJSONSource.js b/src/geoJSONSource.js new file mode 100644 index 00000000..48fe9e2a --- /dev/null +++ b/src/geoJSONSource.js @@ -0,0 +1,280 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Geojsonvt = imports.geojsonvt.geojsonvt; +const Location = imports.location; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const Service = imports.service; +const Utils = imports.utils; +const GeoJSONStyle = imports.geoJSONStyle; +const MapView = imports.mapView; + +const TileFeature = { POINT: 1, + LINESTRING: 2, + POLYGON: 3 }; + +var GeoJSONSource = GObject.registerClass( +class GeoJSONSource extends Champlain.TileSource { + + _init(params) { + super._init(); + + this._mapView = params.mapView; + this._markerLayer = params.markerLayer; + this._bbox = new Champlain.BoundingBox(); + this._tileSize = Service.getService().tiles.street.tile_size; + } + + get bbox() { + return this._bbox; + } + + vfunc_get_tile_size() { + return this._tileSize; + } + + vfunc_get_max_zoom_level() { + return 20; + } + + vfunc_get_min_zoom_level() { + return 0; + } + + vfunc_get_id() { + return 'GeoJSONSource'; + } + + vfunc_get_name() { + return 'GeoJSONSource'; + } + + vfunc_fill_tile(tile) { + if (tile.get_state() === Champlain.State.DONE) + return; + + tile.connect('render-complete', (tile, data, size, error) => { + if(!error) { + tile.set_state(Champlain.State.DONE); + tile.display_content(); + } else if(this.next_source) + this.next_source.fill_tile(tile); + }); + + Mainloop.idle_add(() => this._renderTile(tile), tile); + } + + _validate([lon, lat]) { + if ((-180 <= lon && lon <= 180) && + (-90 <= lat && lat <= 90)) { + return; + } + + throw new Error(_("invalid coordinate")); + } + + _compose(coordinates) { + coordinates.forEach((coordinate) => { + this._validate(coordinate); + this._bbox.extend(coordinate[1], coordinate[0]); + }); + } + + _clampBBox() { + this._bbox.top = Math.min(this._bbox.top, MapView.MAX_LATITUDE); + this._bbox.left = Math.max(this._bbox.left, MapView.MIN_LONGITUDE); + this._bbox.bottom = Math.max(this._bbox.bottom, MapView.MIN_LATITUDE); + this._bbox.right = Math.min(this._bbox.right, MapView.MAX_LONGITUDE); + } + + _parseLineString(coordinates) { + this._compose(coordinates); + } + + _parsePolygon(coordinates) { + coordinates.forEach((coordinate) => this._compose(coordinate)); + } + + _parsePoint(coordinates, properties) { + let name = null; + if (properties) + name = properties.name; + + this._validate(coordinates); + this._bbox.extend(coordinates[1], + coordinates[0]); + + let location = new Location.Location({ + latitude: coordinates[1], + longitude: coordinates[0] + }); + + let place = new Place.Place({ name: name, + store: false, + location: location }); + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this._mapView }); + this._markerLayer.add_marker(placeMarker); + } + + _parseGeometry(geometry, properties) { + if(!geometry) + throw new Error(_("parse error")); + + switch(geometry.type) { + case 'LineString': + this._parseLineString(geometry.coordinates); + break; + + case 'MultiLineString': + geometry.coordinates.forEach((coordinate) => { + this._parseLineString(coordinate); + }); + break; + + case 'Polygon': + this._parsePolygon(geometry.coordinates); + break; + + case 'MultiPolygon': + geometry.coordinates.forEach((coordinate) => { + this._parsePolygon(coordinate); + }); + break; + + case 'Point': + this._parsePoint(geometry.coordinates, properties); + break; + + case 'MultiPoint': + geometry.coordinates.forEach((coordinate, properties) => { + this._parsePoint(coordinate,properties); + }); + break; + + default: + throw new Error(_("unknown geometry")); + } + } + + _parseInternal(root) { + if (!root || !root.type) + throw new Error(_("parse error")); + + switch(root.type) { + case 'FeatureCollection': + root.features.forEach((feature) => { + this._parseGeometry(feature.geometry, feature.properties); + }); + break; + + case 'Feature': + this._parseGeometry(root.geometry, root.properties); + break; + + case 'GeometryCollection': + if (!root.geometries) + throw new Error(_("parse error")); + + root.geometries.forEach((g) => this._parseGeometry(g)); + break; + + default: + this._parseGeometry(root); + } + } + + parse(json) { + this._parseInternal(json); + this._tileIndex = Geojsonvt.geojsonvt(json, { extent: this._tileSize, + maxZoom: 20 }); + this._clampBBox(); + } + + _renderTile(tile) { + let tileJSON = this._tileIndex.getTile(tile.zoom_level, tile.x, tile.y); + let content = new Clutter.Canvas({ width: this._tileSize, + height: this._tileSize }); + tile.content = new Clutter.Actor({ width: this._tileSize, + height: this._tileSize, + content: content }); + + content.connect('draw', (canvas, cr) => { + tile.set_surface(cr.getTarget()); + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + cr.setFillRule(Cairo.FillRule.EVEN_ODD); + + if (!tileJSON) { + tile.emit('render-complete', null, 0, false); + return; + } + + tileJSON.features.forEach((feature) => { + if (feature.type === TileFeature.POINT) + return; + + let geoJSONStyleObj = GeoJSONStyle.GeoJSONStyle.parseSimpleStyle(feature.tags); + + feature.geometry.forEach((geometry) => { + let first = true; + cr.moveTo(0, 0); + cr.setLineWidth(geoJSONStyleObj.lineWidth); + cr.setSourceRGBA(geoJSONStyleObj.color.red, + geoJSONStyleObj.color.green, + geoJSONStyleObj.color.blue, + geoJSONStyleObj.alpha); + + geometry.forEach(function(coord) { + if (first) { + cr.moveTo(coord[0], coord[1]); + first = false; + } else { + cr.lineTo(coord[0], coord[1]); + } + }); + }); + if (feature.type === TileFeature.POLYGON) { + cr.closePath(); + cr.strokePreserve(); + cr.setSourceRGBA(geoJSONStyleObj.fillColor.red, + geoJSONStyleObj.fillColor.green, + geoJSONStyleObj.fillColor.blue, + geoJSONStyleObj.fillAlpha); + cr.fill(); + } else { + cr.stroke(); + } + }); + + tile.emit('render-complete', null, 0, false); + }); + + content.invalidate(); + } +}); diff --git a/src/geoJSONStyle.js b/src/geoJSONStyle.js new file mode 100644 index 00000000..2cfd7162 --- /dev/null +++ b/src/geoJSONStyle.js @@ -0,0 +1,87 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Alaf Azam + */ + +const DEFAULT_LINE_WIDTH = 5; +const DEFAULT_COLOR = '69B1FF'; + +var GeoJSONStyle = class GeoJSONStyle { + constructor(params) { + if (params.lineWidth || params.lineWidth === 0) + this.lineWidth = params.lineWidth; + else + this.lineWidth = DEFAULT_LINE_WIDTH; + + if (params.alpha || params.alpha === 0) + this.alpha = params.alpha; + else + this.alpha = 1; + + if (params.fillAlpha || params.fillAlpha === 0) + this.fillAlpha = params.fillAlpha; + else + this.fillAlpha = 0.25; + + this.color = this._hexToColor(params.color || DEFAULT_COLOR); + this.fillColor = this._hexToColor(params.fillColor) || { red: 0.37, + green: 0.62, + blue: 0.87 }; + } + + _hexToColor(colorString) { + let color = null; + + if (!colorString) + return null; + + if (colorString.startsWith('#')) { + colorString = colorString.slice(1); + } + + if (colorString.length === 3) { + colorString = colorString.match(/([0-9a-f]{3})$/i); + if (colorString) { + color = { + red: (parseInt(colorString[0].chatAt(0), 16) * 0x11)/255, + green: (parseInt(colorString[0].chatAt(1), 16) * 0x11)/255, + blue: (parseInt(colorString[0].chatAt(2), 16) * 0x11)/255 + }; + } + } else { + colorString = colorString.match(/([0-9a-f]{6})$/i); + if (colorString) { + color = { + red: parseInt(colorString[0].substr(0, 2), 16)/255, + green: parseInt(colorString[0].substr(2, 2), 16)/255, + blue: parseInt(colorString[0].substr(4, 2), 16)/255 + }; + } + } + + return color; + } +}; + +GeoJSONStyle.parseSimpleStyle = function(tags) { + return new GeoJSONStyle({ alpha: tags['stroke-opacity'], + fillAlpha: tags['fill-opacity'], + color: tags['stroke'], + fillColor: tags['fill'], + lineWidth: tags['stroke-width'] }); +} diff --git a/src/geoclue.js b/src/geoclue.js new file mode 100644 index 00000000..14f60ecb --- /dev/null +++ b/src/geoclue.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const GClue = imports.gi.Geoclue; +const Gio = imports.gi.Gio; +const Mainloop = imports.mainloop; + +const Place = imports.place; +const Location = imports.location; +const Settings = imports.settings; +const Utils = imports.utils; + +var State = { + INITIAL: 0, + ON: 1, + DENIED: 2, + FAILED: 3 +}; + +var Geoclue = GObject.registerClass({ + Signals: { + 'location-changed': { } + }, + Properties: { + 'state': GObject.ParamSpec.int('state', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + State.INITIAL, + State.FAILED, + State.INITIAL) + }, +}, class Geoclue extends GObject.Object { + + set state(s) { + this._state = s; + this.notify('state'); + } + + get state() { + return this._state; + } + + _init() { + super._init(); + this.place = null; + this._state = State.INITIAL; + + this.start(null); + } + + start(callback) { + let id = 'org.gnome.Maps'; + let level = GClue.AccuracyLevel.EXACT; + + GClue.Simple.new(id, level, null, (object, result) => { + try { + this._simple = GClue.Simple.new_finish(result); + } + catch (e) { + Utils.debug("GeoClue2 service: " + e.message); + if (e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED)) + this.state = State.DENIED; + else + this.state = State.FAILED; + if (callback) + callback(false); + return; + } + + this._simple.connect('notify::location', + () => this._onLocationNotify(this._simple)); + this._simple.client.connect('notify::active', () => { + this.state = this._simple.client.active ? State.ON : State.DENIED; + }); + + this.state = State.ON; + this._onLocationNotify(this._simple); + if (callback) + callback(true); + }); + } + + _onLocationNotify(simple) { + let geoclueLocation = simple.get_location(); + let location = new Location.Location({ + latitude: geoclueLocation.latitude, + longitude: geoclueLocation.longitude, + accuracy: geoclueLocation.accuracy, + heading: geoclueLocation.heading, + description: geoclueLocation.description + }); + this._updateLocation(location); + } + + _updateLocation(location) { + if (!this.place) + this.place = new Place.Place({ name: _("Current Location"), + isCurrentLocation: true }); + + this.place.location = location; + this.emit('location-changed'); + Utils.debug("Updated location: " + location.description + + " (" + location.latitude + ", " + location.longitude + + ", accuracy = " + location.accuracy + " m)"); + } +}); diff --git a/src/geocode.js b/src/geocode.js new file mode 100644 index 00000000..7623684a --- /dev/null +++ b/src/geocode.js @@ -0,0 +1,39 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Service = imports.service; +const GraphHopperGeocode = imports.graphHopperGeocode; +const PhotonGeocode = imports.photonGeocode; + +var _geocoder = null; + +function getGeocoder() { + if (!_geocoder) { + if (Service.getService().photonGeocode) + _geocoder = new PhotonGeocode.PhotonGeocode(); + else + _geocoder = new GraphHopperGeocode.GraphHopperGeocode(); + } + + return _geocoder; +} + + diff --git a/src/geojson-vt/LICENSE b/src/geojson-vt/LICENSE new file mode 100644 index 00000000..00e99140 --- /dev/null +++ b/src/geojson-vt/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/src/geojson-vt/clip.js b/src/geojson-vt/clip.js new file mode 100644 index 00000000..cad7a21e --- /dev/null +++ b/src/geojson-vt/clip.js @@ -0,0 +1,149 @@ +'use strict'; + +/* clip features between two axis-parallel lines: + * | | + * ___|___ | / + * / | \____|____/ + * | | + */ + +function clip(features, scale, k1, k2, axis, intersect, minAll, maxAll) { + + k1 /= scale; + k2 /= scale; + + if (minAll >= k1 && maxAll <= k2) return features; // trivial accept + else if (minAll > k2 || maxAll < k1) return null; // trivial reject + + var clipped = []; + + for (var i = 0; i < features.length; i++) { + + var feature = features[i], + geometry = feature.geometry, + type = feature.type, + min, max; + + min = feature.min[axis]; + max = feature.max[axis]; + + if (min >= k1 && max <= k2) { // trivial accept + clipped.push(feature); + continue; + } else if (min > k2 || max < k1) continue; // trivial reject + + var slices = type === 1 ? + clipPoints(geometry, k1, k2, axis) : + clipGeometry(geometry, k1, k2, axis, intersect, type === 3); + + if (slices.length) { + // if a feature got clipped, it will likely get clipped on the next zoom level as well, + // so there's no need to recalculate bboxes + clipped.push({ + geometry: slices, + type: type, + tags: features[i].tags || null, + min: feature.min, + max: feature.max + }); + } + } + + return clipped.length ? clipped : null; +} + +function clipPoints(geometry, k1, k2, axis) { + var slice = []; + + for (var i = 0; i < geometry.length; i++) { + var a = geometry[i], + ak = a[axis]; + + if (ak >= k1 && ak <= k2) slice.push(a); + } + return slice; +} + +function clipGeometry(geometry, k1, k2, axis, intersect, closed) { + + var slices = []; + + for (var i = 0; i < geometry.length; i++) { + + var ak = 0, + bk = 0, + b = null, + points = geometry[i], + area = points.area, + dist = points.dist, + len = points.length, + a, j, last; + + var slice = []; + + for (j = 0; j < len - 1; j++) { + a = b || points[j]; + b = points[j + 1]; + ak = bk || a[axis]; + bk = b[axis]; + + if (ak < k1) { + + if ((bk > k2)) { // ---|-----|--> + slice.push(intersect(a, b, k1), intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk >= k1) slice.push(intersect(a, b, k1)); // ---|--> | + + } else if (ak > k2) { + + if ((bk < k1)) { // <--|-----|--- + slice.push(intersect(a, b, k2), intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk <= k2) slice.push(intersect(a, b, k2)); // | <--|--- + + } else { + + slice.push(a); + + if (bk < k1) { // <--|--- | + slice.push(intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk > k2) { // | ---|--> + slice.push(intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + } + // | --> | + } + } + + // add the last point + a = points[len - 1]; + ak = a[axis]; + if (ak >= k1 && ak <= k2) slice.push(a); + + // close the polygon if its endpoints are not the same after clipping + + last = slice[slice.length - 1]; + if (closed && last && (slice[0][0] !== last[0] || slice[0][1] !== last[1])) slice.push(slice[0]); + + // add the final slice + newSlice(slices, slice, area, dist); + } + + return slices; +} + +function newSlice(slices, slice, area, dist) { + if (slice.length) { + // we don't recalculate the area/length of the unclipped geometry because the case where it goes + // below the visibility threshold as a result of clipping is rare, so we avoid doing unnecessary work + slice.area = area; + slice.dist = dist; + + slices.push(slice); + } + return []; +} diff --git a/src/geojson-vt/convert.js b/src/geojson-vt/convert.js new file mode 100644 index 00000000..eda26c7d --- /dev/null +++ b/src/geojson-vt/convert.js @@ -0,0 +1,147 @@ +'use strict'; + +const simplify = imports.geojsonvt.simplify.simplify; + +// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data + +function convert(data, tolerance) { + var features = []; + + if (data.type === 'FeatureCollection') { + for (var i = 0; i < data.features.length; i++) { + convertFeature(features, data.features[i], tolerance); + } + } else if (data.type === 'Feature') { + convertFeature(features, data, tolerance); + + } else { + // single geometry or a geometry collection + convertFeature(features, {geometry: data}, tolerance); + } + return features; +} + +function convertFeature(features, feature, tolerance) { + if (feature.geometry === null) { + // ignore features with null geometry + return; + } + + var geom = feature.geometry, + type = geom.type, + coords = geom.coordinates, + tags = feature.properties, + i, j, rings; + + if (type === 'Point') { + features.push(create(tags, 1, [projectPoint(coords)])); + + } else if (type === 'MultiPoint') { + features.push(create(tags, 1, project(coords))); + + } else if (type === 'LineString') { + features.push(create(tags, 2, [project(coords, tolerance)])); + + } else if (type === 'MultiLineString' || type === 'Polygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + rings.push(project(coords[i], tolerance)); + } + features.push(create(tags, type === 'Polygon' ? 3 : 2, rings)); + + } else if (type === 'MultiPolygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + for (j = 0; j < coords[i].length; j++) { + rings.push(project(coords[i][j], tolerance)); + } + } + features.push(create(tags, 3, rings)); + + } else if (type === 'GeometryCollection') { + for (i = 0; i < geom.geometries.length; i++) { + convertFeature(features, { + geometry: geom.geometries[i], + properties: tags + }, tolerance); + } + + } else { + throw new Error('Input data is not a valid GeoJSON object.'); + } +} + +function create(tags, type, geometry) { + var feature = { + geometry: geometry, + type: type, + tags: tags || null, + min: [2, 1], // initial bbox values; + max: [-1, 0] // note that coords are usually in [0..1] range + }; + calcBBox(feature); + return feature; +} + +function project(lonlats, tolerance) { + var projected = []; + for (var i = 0; i < lonlats.length; i++) { + projected.push(projectPoint(lonlats[i])); + } + if (tolerance) { + simplify(projected, tolerance); + calcSize(projected); + } + return projected; +} + +function projectPoint(p) { + var sin = Math.sin(p[1] * Math.PI / 180), + x = (p[0] / 360 + 0.5), + y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); + + y = y < 0 ? 0 : + y > 1 ? 1 : y; + + return [x, y, 0]; +} + +// calculate area and length of the poly +function calcSize(points) { + var area = 0, + dist = 0; + + for (var i = 0, a, b; i < points.length - 1; i++) { + a = b || points[i]; + b = points[i + 1]; + + area += a[0] * b[1] - b[0] * a[1]; + + // use Manhattan distance instead of Euclidian one to avoid expensive square root computation + dist += Math.abs(b[0] - a[0]) + Math.abs(b[1] - a[1]); + } + points.area = Math.abs(area / 2); + points.dist = dist; +} + +// calculate the feature bounding box for faster clipping later +function calcBBox(feature) { + var geometry = feature.geometry, + min = feature.min, + max = feature.max; + + if (feature.type === 1) calcRingBBox(min, max, geometry); + else for (var i = 0; i < geometry.length; i++) calcRingBBox(min, max, geometry[i]); + + return feature; +} + +function calcRingBBox(min, max, points) { + for (var i = 0, p; i < points.length; i++) { + p = points[i]; + min[0] = Math.min(p[0], min[0]); + max[0] = Math.max(p[0], max[0]); + min[1] = Math.min(p[1], min[1]); + max[1] = Math.max(p[1], max[1]); + } +} diff --git a/src/geojson-vt/index.js b/src/geojson-vt/index.js new file mode 100644 index 00000000..bd0c6e59 --- /dev/null +++ b/src/geojson-vt/index.js @@ -0,0 +1,238 @@ +'use strict'; + +const convert = imports.geojsonvt.convert.convert; +const transform = { tile: imports.geojsonvt.transform.transformTile, + point: imports.geojsonvt.transform.transformPoint }; +const clip = imports.geojsonvt.clip.clip; +const createTile = imports.geojsonvt.tile.createTile; +const wrap = imports.geojsonvt.wrap.wrap; + +function geojsonvt(data, options) { + return new GeoJSONVT(data, options); +} + +function GeoJSONVT(data, options) { + options = this.options = extend(Object.create(this.options), options); + + var debug = options.debug; + + if (debug) console.time('preprocess data'); + + var z2 = 1 << options.maxZoom, // 2^z + features = convert(data, options.tolerance / (z2 * options.extent)); + + this.tiles = {}; + this.tileCoords = []; + + if (debug) { + console.timeEnd('preprocess data'); + console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); + console.time('generate tiles'); + this.stats = {}; + this.total = 0; + } + + features = wrap(features, options.buffer / options.extent, intersectX); + + // start slicing from the top tile down + if (features.length) this.splitTile(features, 0, 0, 0); + + if (debug) { + if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); + console.timeEnd('generate tiles'); + console.log('tiles generated:', this.total, JSON.stringify(this.stats)); + } +} + +GeoJSONVT.prototype.options = { + maxZoom: 14, // max zoom to preserve detail on + indexMaxZoom: 5, // max zoom in the tile index + indexMaxPoints: 100000, // max number of points per tile in the tile index + solidChildren: false, // whether to tile solid square tiles further + tolerance: 3, // simplification tolerance (higher means simpler) + extent: 4096, // tile extent + buffer: 64, // tile buffer on each side + debug: 0 // logging level (0, 1 or 2) +}; + +GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { + + var stack = [features, z, x, y], + options = this.options, + debug = options.debug, + solid = null; + + // avoid recursion by using a processing queue + while (stack.length) { + y = stack.pop(); + x = stack.pop(); + z = stack.pop(); + features = stack.pop(); + + var z2 = 1 << z, + id = toID(z, x, y), + tile = this.tiles[id], + tileTolerance = z === options.maxZoom ? 0 : options.tolerance / (z2 * options.extent); + + if (!tile) { + if (debug > 1) console.time('creation'); + + tile = this.tiles[id] = createTile(features, z2, x, y, tileTolerance, z === options.maxZoom); + this.tileCoords.push({z: z, x: x, y: y}); + + if (debug) { + if (debug > 1) { + console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', + z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); + console.timeEnd('creation'); + } + var key = 'z' + z; + this.stats[key] = (this.stats[key] || 0) + 1; + this.total++; + } + } + + // save reference to original geometry in tile so that we can drill down later if we stop now + tile.source = features; + + // if it's the first-pass tiling + if (!cz) { + // stop tiling if we reached max zoom, or if the tile is too simple + if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; + + // if a drilldown to a specific tile + } else { + // stop tiling if we reached base zoom or our target tile zoom + if (z === options.maxZoom || z === cz) continue; + + // stop tiling if it's not an ancestor of the target tile + var m = 1 << (cz - z); + if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; + } + + // stop tiling if the tile is solid clipped square + if (!options.solidChildren && isClippedSquare(tile, options.extent, options.buffer)) { + if (cz) solid = z; // and remember the zoom if we're drilling down + continue; + } + + // if we slice further down, no need to keep source geometry + tile.source = null; + + if (debug > 1) console.time('clipping'); + + // values we'll use for clipping + var k1 = 0.5 * options.buffer / options.extent, + k2 = 0.5 - k1, + k3 = 0.5 + k1, + k4 = 1 + k1, + tl, bl, tr, br, left, right; + + tl = bl = tr = br = null; + + left = clip(features, z2, x - k1, x + k3, 0, intersectX, tile.min[0], tile.max[0]); + right = clip(features, z2, x + k2, x + k4, 0, intersectX, tile.min[0], tile.max[0]); + + if (left) { + tl = clip(left, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + bl = clip(left, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (right) { + tr = clip(right, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + br = clip(right, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (debug > 1) console.timeEnd('clipping'); + + if (tl) stack.push(tl, z + 1, x * 2, y * 2); + if (bl) stack.push(bl, z + 1, x * 2, y * 2 + 1); + if (tr) stack.push(tr, z + 1, x * 2 + 1, y * 2); + if (br) stack.push(br, z + 1, x * 2 + 1, y * 2 + 1); + } + + return solid; +}; + +GeoJSONVT.prototype.getTile = function (z, x, y) { + var options = this.options, + extent = options.extent, + debug = options.debug; + + var z2 = 1 << z; + x = ((x % z2) + z2) % z2; // wrap tile x coordinate + + var id = toID(z, x, y); + if (this.tiles[id]) return transform.tile(this.tiles[id], extent); + + if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); + + var z0 = z, + x0 = x, + y0 = y, + parent; + + while (!parent && z0 > 0) { + z0--; + x0 = Math.floor(x0 / 2); + y0 = Math.floor(y0 / 2); + parent = this.tiles[toID(z0, x0, y0)]; + } + + if (!parent || !parent.source) return null; + + // if we found a parent tile containing the original geometry, we can drill down from it + if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); + + // it parent tile is a solid clipped square, return it instead since it's identical + if (isClippedSquare(parent, extent, options.buffer)) return transform.tile(parent, extent); + + if (debug > 1) console.time('drilling down'); + var solid = this.splitTile(parent.source, z0, x0, y0, z, x, y); + if (debug > 1) console.timeEnd('drilling down'); + + // one of the parent tiles was a solid clipped square + if (solid !== null) { + var m = 1 << (z - solid); + id = toID(solid, Math.floor(x / m), Math.floor(y / m)); + } + + return this.tiles[id] ? transform.tile(this.tiles[id], extent) : null; +}; + +function toID(z, x, y) { + return (((1 << z) * y + x) * 32) + z; +} + +function intersectX(a, b, x) { + return [x, (x - a[0]) * (b[1] - a[1]) / (b[0] - a[0]) + a[1], 1]; +} +function intersectY(a, b, y) { + return [(y - a[1]) * (b[0] - a[0]) / (b[1] - a[1]) + a[0], y, 1]; +} + +function extend(dest, src) { + for (var i in src) dest[i] = src[i]; + return dest; +} + +// checks whether a tile is a whole-area fill after clipping; if it is, there's no sense slicing it further +function isClippedSquare(tile, extent, buffer) { + + var features = tile.source; + if (features.length !== 1) return false; + + var feature = features[0]; + if (feature.type !== 3 || feature.geometry.length > 1) return false; + + var len = feature.geometry[0].length; + if (len !== 5) return false; + + for (var i = 0; i < len; i++) { + var p = transform.point(feature.geometry[0][i], extent, tile.z2, tile.x, tile.y); + if ((p[0] !== -buffer && p[0] !== extent + buffer) || + (p[1] !== -buffer && p[1] !== extent + buffer)) return false; + } + + return true; +} diff --git a/src/geojson-vt/simplify.js b/src/geojson-vt/simplify.js new file mode 100644 index 00000000..2e55972e --- /dev/null +++ b/src/geojson-vt/simplify.js @@ -0,0 +1,72 @@ +'use strict'; + +// calculate simplification data using optimized Douglas-Peucker algorithm + +function simplify(points, tolerance) { + + var sqTolerance = tolerance * tolerance, + len = points.length, + first = 0, + last = len - 1, + stack = [], + i, maxSqDist, sqDist, index; + + // always retain the endpoints (1 is the max value) + points[first][2] = 1; + points[last][2] = 1; + + // avoid recursion by using a stack + while (last) { + + maxSqDist = 0; + + for (i = first + 1; i < last; i++) { + sqDist = getSqSegDist(points[i], points[first], points[last]); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + points[index][2] = maxSqDist; // save the point importance in squared pixels as a z coordinate + stack.push(first); + stack.push(index); + first = index; + + } else { + last = stack.pop(); + first = stack.pop(); + } + } +} + +// square distance from a point to a segment +function getSqSegDist(p, a, b) { + + var x = a[0], y = a[1], + bx = b[0], by = b[1], + px = p[0], py = p[1], + dx = bx - x, + dy = by - y; + + if (dx !== 0 || dy !== 0) { + + var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); + + if (t > 1) { + x = bx; + y = by; + + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = px - x; + dy = py - y; + + return dx * dx + dy * dy; +} diff --git a/src/geojson-vt/tile.js b/src/geojson-vt/tile.js new file mode 100644 index 00000000..764d5385 --- /dev/null +++ b/src/geojson-vt/tile.js @@ -0,0 +1,83 @@ +'use strict'; + +function createTile(features, z2, tx, ty, tolerance, noSimplify) { + var tile = { + features: [], + numPoints: 0, + numSimplified: 0, + numFeatures: 0, + source: null, + x: tx, + y: ty, + z2: z2, + transformed: false, + min: [2, 1], + max: [-1, 0] + }; + for (var i = 0; i < features.length; i++) { + tile.numFeatures++; + addFeature(tile, features[i], tolerance, noSimplify); + + var min = features[i].min, + max = features[i].max; + + if (min[0] < tile.min[0]) tile.min[0] = min[0]; + if (min[1] < tile.min[1]) tile.min[1] = min[1]; + if (max[0] > tile.max[0]) tile.max[0] = max[0]; + if (max[1] > tile.max[1]) tile.max[1] = max[1]; + } + return tile; +} + +function addFeature(tile, feature, tolerance, noSimplify) { + + var geom = feature.geometry, + type = feature.type, + simplified = [], + sqTolerance = tolerance * tolerance, + i, j, ring, p; + + if (type === 1) { + for (i = 0; i < geom.length; i++) { + simplified.push(geom[i]); + tile.numPoints++; + tile.numSimplified++; + } + + } else { + + // simplify and transform projected coordinates for tile geometry + for (i = 0; i < geom.length; i++) { + ring = geom[i]; + + // filter out tiny polylines & polygons + if (!noSimplify && ((type === 2 && ring.dist < tolerance) || + (type === 3 && ring.area < sqTolerance))) { + tile.numPoints += ring.length; + continue; + } + + var simplifiedRing = []; + + for (j = 0; j < ring.length; j++) { + p = ring[j]; + // keep points with importance > tolerance + if (noSimplify || p[2] > sqTolerance) { + simplifiedRing.push(p); + tile.numSimplified++; + } + tile.numPoints++; + } + + simplified.push(simplifiedRing); + } + } + + if (simplified.length) { + tile.features.push({ + geometry: simplified, + type: type, + tags: feature.tags || null + }); + } +} diff --git a/src/geojson-vt/transform.js b/src/geojson-vt/transform.js new file mode 100644 index 00000000..fe93e947 --- /dev/null +++ b/src/geojson-vt/transform.js @@ -0,0 +1,38 @@ +'use strict'; + +// Transforms the coordinates of each feature in the given tile from +// mercator-projected space into (extent x extent) tile space. +function transformTile(tile, extent) { + if (tile.transformed) return tile; + + var z2 = tile.z2, + tx = tile.x, + ty = tile.y, + i, j, k; + + for (i = 0; i < tile.features.length; i++) { + var feature = tile.features[i], + geom = feature.geometry, + type = feature.type; + + if (type === 1) { + for (j = 0; j < geom.length; j++) geom[j] = transformPoint(geom[j], extent, z2, tx, ty); + + } else { + for (j = 0; j < geom.length; j++) { + var ring = geom[j]; + for (k = 0; k < ring.length; k++) ring[k] = transformPoint(ring[k], extent, z2, tx, ty); + } + } + } + + tile.transformed = true; + + return tile; +} + +function transformPoint(p, extent, z2, tx, ty) { + var x = Math.round(extent * (p[0] * z2 - tx)), + y = Math.round(extent * (p[1] * z2 - ty)); + return [x, y]; +} diff --git a/src/geojson-vt/wrap.js b/src/geojson-vt/wrap.js new file mode 100644 index 00000000..7d9b243a --- /dev/null +++ b/src/geojson-vt/wrap.js @@ -0,0 +1,59 @@ +'use strict'; + +const clip = imports.geojsonvt.clip.clip; + +function wrap(features, buffer, intersectX) { + var merged = features, + left = clip(features, 1, -1 - buffer, buffer, 0, intersectX, -1, 2), // left world copy + right = clip(features, 1, 1 - buffer, 2 + buffer, 0, intersectX, -1, 2); // right world copy + + if (left || right) { + merged = clip(features, 1, -buffer, 1 + buffer, 0, intersectX, -1, 2); // center world copy + + if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center + if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center + } + + return merged; +} + +function shiftFeatureCoords(features, offset) { + var newFeatures = []; + + for (var i = 0; i < features.length; i++) { + var feature = features[i], + type = feature.type; + + var newGeometry; + + if (type === 1) { + newGeometry = shiftCoords(feature.geometry, offset); + } else { + newGeometry = []; + for (var j = 0; j < feature.geometry.length; j++) { + newGeometry.push(shiftCoords(feature.geometry[j], offset)); + } + } + + newFeatures.push({ + geometry: newGeometry, + type: type, + tags: feature.tags, + min: [feature.min[0] + offset, feature.min[1]], + max: [feature.max[0] + offset, feature.max[1]] + }); + } + + return newFeatures; +} + +function shiftCoords(points, offset) { + var newPoints = []; + newPoints.area = points.area; + newPoints.dist = points.dist; + + for (var i = 0; i < points.length; i++) { + newPoints.push([points[i][0] + offset, points[i][1], points[i][2]]); + } + return newPoints; +} diff --git a/src/gfx.js b/src/gfx.js new file mode 100644 index 00000000..8f6ce6a4 --- /dev/null +++ b/src/gfx.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Color = imports.color; + +/** + * Draws a colored badged with rounded corners and an optional outline. + * + * cr: A Cairo context to draw into + * bgColor: The fill color to draw the background with, represented as + * a string with 8-bit HEX-encoded RGB values + * outlineColor: The color to use for the outline, or null if no outline + * x: pixel offset for x-coord of top-left corner of bounding box + * y: pixel offset for y-coord of top-left corner of bounding box + * width: The width to draw the badge + * height: The height to draw the badge + */ +function drawColoredBagde(cr, bgColor, outlineColor, x, y, width, height) { + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let radius = outlineColor ? 5 : 3; + + cr.newSubPath(); + cr.arc(width - radius + x, radius + y, radius, -Math.PI / 2, 0); + cr.arc(width - radius + x, height - radius + y, radius, 0 , Math.PI / 2); + cr.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI); + cr.arc(radius + x, radius + y, radius, Math.PI, 3 * Math.PI / 2); + cr.closePath(); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.fillPreserve(); + + if (outlineColor) { + let outlineRed = Color.parseColor(outlineColor, 0); + let outlineGreen = Color.parseColor(outlineColor, 1); + let outlineBlue = Color.parseColor(outlineColor, 2); + + cr.setSourceRGB(outlineRed, outlineGreen, outlineBlue); + cr.setLineWidth(1); + cr.stroke(); + } +} diff --git a/src/gpxShapeLayer.js b/src/gpxShapeLayer.js new file mode 100644 index 00000000..e3a23b99 --- /dev/null +++ b/src/gpxShapeLayer.js @@ -0,0 +1,52 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var GpxShapeLayer = GObject.registerClass( +class GpxShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.gpx(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +GpxShapeLayer.mimeTypes = ['application/gpx+xml' ]; +GpxShapeLayer.displayName = 'GPX'; +GpxShapeLayer.createInstance = function(params) { + return new GpxShapeLayer(params); +}; diff --git a/src/graphHopper.js b/src/graphHopper.js new file mode 100644 index 00000000..41d6bc43 --- /dev/null +++ b/src/graphHopper.js @@ -0,0 +1,269 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Mainloop = imports.mainloop; +const Soup = imports.gi.Soup; + +const EPAF = imports.epaf; +const HTTP = imports.http; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; + +/** + * Directional sign from the GraphHopper API. + * https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md + */ +var Sign = { + KEEP_LEFT: -7, + TURN_SHARP_LEFT: -3, + TURN_LEFT: -2, + TURN_SLIGHT_LEFT: -1, + CONTINUE_ON_STREET: 0, + TURN_SLIGHT_RIGHT: 1, + TURN_RIGHT: 2, + TURN_SHARP_RIGHT: 3, + FINISH: 4, + REACHED_VIA: 5, + USE_ROUNDABOUT: 6, + KEEP_RIGHT: 7 +} + +var GraphHopper = class GraphHopper { + + get route() { + return this._route; + } + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._key = "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP"; + this._baseURL = "https://graphhopper.com/api/1/route?"; + this._locale = GLib.get_language_names()[0]; + this._route = new Route.Route(); + this.storedRoute = null; + this._query = params.query; + } + + _updateFromStored() { + Mainloop.idle_add(() => { + if (!this.storedRoute) + return; + + this.route.update({ path: this.storedRoute.path, + turnPoints: this.storedRoute.turnPoints, + distance: this.storedRoute.distance, + time: this.storedRoute.time, + bbox: this.storedRoute.bbox }); + this.storedRoute = null; + }); + } + + _queryGraphHopper(points, transportationType, callback) { + let url = this._buildURL(points, transportationType); + let msg = Soup.Message.new('GET', url); + this._session.queue_message(msg, (session, message) => { + try { + let result = this._parseMessage(message); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + callback(null, e); + } + }); + } + + fetchRoute(points, transportationType) { + if (this.storedRoute) { + this._updateFromStored(); + return; + } + + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (exception) { + Utils.debug(exception); + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("Route request failed.")); + } else { + if (!result) { + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("No route found.")); + } else { + let route = this._createRoute(result.paths[0]); + this.route.update(route); + } + } + }); + } + + fetchRouteAsync(points, transportationType, callback) { + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (result) { + let route = this._createRoute(result.paths[0]); + callback(route, exception); + } else { + callback(null, exception); + } + }); + } + + _buildURL(points, transportation) { + let locations = points.map(function(point) { + return [point.place.location.latitude, point.place.location.longitude].join(','); + }); + let vehicle = RouteQuery.Transportation.toString(transportation); + let query = new HTTP.Query({ type: 'json', + key: this._key, + vehicle: vehicle, + locale: this._locale, + point: locations, + debug: Utils.debugEnabled + }); + let url = this._baseURL + query.toString(); + Utils.debug("Sending route request to: " + url); + return url; + } + + _parseMessage({ status_code, response_body, uri }) { + if (status_code === 500) { + log("Internal server error.\n" + + "This is most likely a bug in GraphHopper"); + log("Please file a bug at " + + "https://github.com/graphhopper/graphhopper/issues\n" + + "with the the following Graphopper request URL included:\n"); + log(uri.to_string(false)); + } + if (status_code !== 200) + return null; + + let result = JSON.parse(response_body.data); + + if (!Array.isArray(result.paths)) { + Utils.debug("No route found"); + if (result.info && Array.isArray(result.info.errors)) { + result.info.errors.forEach(({ message, details }) => { + Utils.debug("Message: " + message); + Utils.debug("Details: " + details); + }); + } + return null; + } + + return result; + } + + _createRoute(route) { + let path = EPAF.decode(route.points); + let turnPoints = this._createTurnPoints(path, route.instructions); + let bbox = new Champlain.BoundingBox(); + + // GH does lonlat-order and Champlain latlon-order + bbox.extend(route.bbox[1], route.bbox[0]); + bbox.extend(route.bbox[3], route.bbox[2]); + + return { path: path, + turnPoints: turnPoints, + distance: route.distance, + time: route.time, + bbox: bbox }; + } + + _createTurnPoints(path, instructions) { + let via = 0; + let startPoint = new Route.TurnPoint({ + coordinate: path[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let rest = this._foldInstructions(instructions).map((instr) => { + let type = this._createTurnPointType(instr.sign); + let text = instr.text; + if (type === Route.TurnPointType.VIA) { + via++; + let viaPlace = this._query.filledPoints[via].place; + text = viaPlace.name || instr.text; + } + return new Route.TurnPoint({ + coordinate: path[instr.interval[0]], + type: type, + distance: instr.distance, + instruction: text, + time: instr.time, + turnAngle: instr.turn_angle + }); + }); + return [startPoint].concat(rest); + } + + _foldInstructions(instructions) { + let currInstruction = instructions[0]; + let res = []; + + for (let i = 1; i < instructions.length; i++) { + let newInstruction = instructions[i]; + let newSign = newInstruction.sign; + let newStreetname = newInstruction.street_name; + + /* if the direction is to continue straight, or keep left or keep + * right on the same street/road number, fold the instruction into + * the previous one + */ + if (newSign === Sign.CONTINUE_ON_STREET || + ((newSign === Sign.KEEP_LEFT || newSign === Sign.KEEP_RIGHT) && + newStreetname === currInstruction.street_name)) { + currInstruction.distance += newInstruction.distance; + } else { + res.push(currInstruction); + currInstruction = instructions[i]; + } + } + + // push finish instruction + res.push(instructions[instructions.length - 1]); + + return res; + } + + _createTurnPointType(sign) { + let type = sign + 3; + let min = Route.TurnPointType.SHARP_LEFT; + let max = Route.TurnPointType.ROUNDABOUT; + if (min <= type && type <= max) + return type; + else + return undefined; + } +}; diff --git a/src/graphHopperGeocode.js b/src/graphHopperGeocode.js new file mode 100644 index 00000000..e63877e4 --- /dev/null +++ b/src/graphHopperGeocode.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var GraphHopperGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().graphHopperGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().graphHopperGeocode.attributionUrl; + } + + get name() { + return 'GraphHopper Geocode'; + } + + get url() { + return 'https://docs.graphhopper.com/#tag/Geocoding-API'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let hits = json.hits; + + if (!hits || hits.length === 0) { + Utils.debug('No hits in response'); + return null; + } + + hits.forEach(hit => { + let place = this._parseHit(hit); + + if (place) + result.push(place); + }); + + return result; + } + + _parseHit(hit) { + let lat = hit.point.lat; + let lon = hit.point.lng; + + return PhotonParser.parsePlace(lat, lon, hit); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ point: latitude + ',' + longitude, + limit: string ? this._limit : 1, + locale: this._language, + key: this._apiKey + }); + if (string) + query.add('q', string); + else + query.add('reverse', 'true'); + + return Format.vprintf('%s/api/1/geocode?%s', [this._baseUrl, + query.toString()]); + } + + _readService() { + let graphHopperGeocode = Service.getService().graphHopperGeocode; + this._language = Utils.getLanguage(); + + if (graphHopperGeocode) { + this._baseUrl = graphHopperGeocode.baseUrl; + this._apiKey = graphHopperGeocode.apiKey; + } + } +} diff --git a/src/graphHopperTransit.js b/src/graphHopperTransit.js new file mode 100644 index 00000000..7fa927e9 --- /dev/null +++ b/src/graphHopperTransit.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utilities to use GraphHopper to perform walking routes for use in + * transit itineraries, for plugins not natively supporting turn-by-turn + * routing for walking legs + */ + +const Champlain = imports.gi.Champlain; + +const Application = imports.application; +const Location = imports.location; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const TransitPlan = imports.transitPlan; + +/* Creates a new walking leg given start and end places, and a route + * obtained from GraphHopper. If the route is undefined (which happens if + * GraphHopper failed to obtain a walking route, approximate it with a + * straight line. */ +function createWalkingLeg(from, to, fromName, toName, route) { + let fromLocation = from.place.location; + let toLocation = to.place.location; + let fromCoordinate = [fromLocation.latitude, fromLocation.longitude]; + let toCoordinate = [toLocation.latitude, toLocation.longitude]; + let polyline = route ? route.path : + createStraightPolyline(fromLocation, toLocation); + let distance = route ? route.distance : + fromLocation.get_distance_from(toLocation) * 1000; + /* as an estimate for approximated straight-line walking legs, + * assume a speed of 1 m/s to allow some extra time */ + let duration = route ? route.time / 1000 : distance; + let walkingInstructions = route ? route.turnPoints : null; + + return new TransitPlan.Leg({ fromCoordinate: fromCoordinate, + toCoordinate: toCoordinate, + from: fromName, + to: toName, + isTransit: false, + polyline: polyline, + duration: duration, + distance: distance, + walkingInstructions: walkingInstructions }); +} + +// create a straight-line "as the crow flies" polyline between two places +function createStraightPolyline(fromLoc, toLoc) { + return [new Champlain.Coordinate({ latitude: fromLoc.latitude, + longitude: fromLoc.longitude }), + new Champlain.Coordinate({ latitude: toLoc.latitude, + longitude: toLoc.longitude })]; +} + +var _walkingRoutes = []; + +/* fetches walking route and stores the route for the given coordinate + * pair to avoid requesting the same route over and over from GraphHopper + */ +function fetchWalkingRoute(points, callback) { + let index = points[0].place.location.latitude + ',' + + points[0].place.location.longitude + ';' + + points[1].place.location.latitude + ',' + + points[1].place.location.longitude; + let route = _walkingRoutes[index]; + + if (!route) { + Application.routingDelegator.graphHopper.fetchRouteAsync(points, + RouteQuery.Transportation.PEDESTRIAN, + (newRoute) => { + _walkingRoutes[index] = newRoute; + callback(newRoute); + }); + } else { + callback(route); + } +} + +// create a query point from a bare coordinate (lat, lon pair) +function createQueryPointForCoord(coord) { + let location = new Location.Location({ latitude: coord[0], + longitude: coord[1], + accuracy: 0 }); + let place = new Place.Place({ location: location }); + let point = new RouteQuery.QueryPoint(); + + point.place = place; + return point; +} + +/** + * Refine itineraries with walking legs retrieved from GraphHopper. + * Intended for use by transit plugins where the source API doesn't give + * full walking turn-by-turn routing + */ +function addWalkingToItineraries(itineraries, callback) { + _addWalkingToItinerariesRecursive(itineraries, 0, callback); +} + +function _addWalkingToItinerariesRecursive(itineraries, index, callback) { + if (index === itineraries.length) { + callback(); + } else { + let itinerary = itineraries[index]; + + _addWalkingToLegsRecursive(itinerary.legs, 0, () => { + _addWalkingToItinerariesRecursive(itineraries, index + 1, callback); + }); + } +} + +function _addWalkingToLegsRecursive(legs, index, callback) { + if (index === legs.length) { + callback(); + } else { + let leg = legs[index]; + + if (!leg.transit) { + let from = createQueryPointForCoord(leg.fromCoordinate); + let to = createQueryPointForCoord(leg.toCoordinate); + + fetchWalkingRoute([from, to], (route) => { + if (route) { + let duration = route.time / 1000; + + /* for walking legs not in the start or end + * only replace with the retrieved one if it's not + * longer in duration that the previous (straight-line) + * one. + */ + if (index === 0 || index === legs.length - 1 || + duration <= leg.duration) { + leg.distance = route.distance; + leg.walkingInstructions = route.turnPoints; + leg.polyline = route.path; + } + } + + _addWalkingToLegsRecursive(legs, index + 1, callback); + }); + } else { + _addWalkingToLegsRecursive(legs, index + 1, callback); + } + } +} diff --git a/src/headerBar.js b/src/headerBar.js new file mode 100644 index 00000000..fed6569c --- /dev/null +++ b/src/headerBar.js @@ -0,0 +1,95 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const FavoritesPopover = imports.favoritesPopover; +const LayersPopover = imports.layersPopover; +const MapView = imports.mapView; + +var HeaderBarLeft = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-left.ui', + InternalChildren: [ 'layersButton' ] +}, class HeaderBarLeft extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._layersPopover = new LayersPopover.LayersPopover({ + mapView: this._mapView + }); + this._layersButton.popover = this._layersPopover; + + this._application.connect('notify::connected', () => { + let app = this._application; + this._layersButton.sensitive = app.connected; + }); + } + + popdownLayersPopover() { + this._layersPopover.popdown(); + } +}); + +var HeaderBarRight = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-right.ui', + InternalChildren: [ 'toggleSidebarButton', + 'favoritesButton', + 'printRouteButton' ] +}, class HeaderBarRight extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._favoritesButton.popover = new FavoritesPopover.FavoritesPopover({ + mapView: this._mapView + }); + let favoritesPopover = this._favoritesButton.popover; + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + favoritesPopover.connect('notify::rows', () => { + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + }); + + this._mapView.bind_property('routeShowing', this._printRouteButton, + 'visible', GObject.BindingFlags.DEFAULT); + + this._application.connect('notify::connected', () => { + let app = this._application; + + this._toggleSidebarButton.sensitive = app.connected; + this._favoritesButton.sensitive = (app.connected && + favoritesPopover.rows > 0); + this._printRouteButton.sensitive = app.connected; + }); + } +}); diff --git a/src/http.js b/src/http.js new file mode 100644 index 00000000..8d853fee --- /dev/null +++ b/src/http.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Soup = imports.gi.Soup; + +function encode(data) { + if(data === null) + return null; + + return Soup.URI.encode(data.toString(), '&'); +} + +var Query = class Query { + + constructor(obj) { + this._query = {}; + for(let key in obj) { + this.add(key, obj[key]); + } + } + + // a value === null represents an empty value + add(key, value) { + // Initialize query field if it isn't already + let queryValue = this._query[key]; + if(!Array.isArray(queryValue)) + this._query[key] = []; + + if(Array.isArray(value)) + this._query[key] = this._query[key].concat(value); + else + this._query[key].push(value); + } + + /** + * Get the query parameters in string form. + * If useArrayNotation is given, and true, use array notation adding [] + * after key if there's multiple values for that key. + */ + toString(useArrayNotation = false) { + let vars = []; + for(let key in this._query) { + let values = this._query[key]; + let multipleValues = values.length > 1; + let encKey = encode(key) + (multipleValues && useArrayNotation ? + '[]' : ''); + + values.forEach(function(value) { + let encValue = encode(value); + if(encValue !== null) + vars.push([encKey, encValue].join('=')); + else + vars.push(encKey); + }); + } + return vars.join('&'); + } +}; diff --git a/src/hvt.js b/src/hvt.js new file mode 100644 index 00000000..810b1ad4 --- /dev/null +++ b/src/hvt.js @@ -0,0 +1,249 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Extended route types using HVT (Hierarchical Vehicle Type) codes from + * the European TPEG standard. + * https://support.google.com/transitpartners/answer/3520902 + */ + +/* when adding an additional constant here, make sure to edit the LAST_ + * constant for the corresponding block + */ + +// rail services +var RAILWAY_SERVICE = 100; +var HIGH_SPEED_RAIL_SERVICE = 101; +var LONG_DISTANCE_TRAINS = 102; +var INTER_REGIONAL_RAIL_SERVICE = 103; +var CAR_TRANSPORT_RAIL_SERVICE = 104; +var SLEEPER_RAIL_SERVICE = 105; +var REGIONAL_RAIL_SERVICE = 106; +var TOURIST_RAILWAY_SERVICE = 107; +var RAIL_SHUTTLE = 108; +var SUBURBAN_RAILWAY = 109; +var REPLACEMENT_RAIL_SERVICE = 110; +var SPECIAL_RAIL_SERVICE = 111; +var LORRY_TRANSPORT_RAIL_SERVICE = 112; +var ALL_RAIL_SERVICES = 113; +var CROSS_COUNTRY_RAIL_SERVICE = 114; +var VEHICLE_TRANSPORT_RAIL_SERVICE = 115; +var RACK_AND_PINION_RAILWAY = 116; +var ADDITIONAL_RAIL_SERVICE = 117; +var LAST_RAIL_SERVICE = ADDITIONAL_RAIL_SERVICE; + +// coach services +var COACH_SERVICE = 200; +var INTERNATIONAL_COACH_SERVICE = 201; +var NATIONAL_COACH_SERVICE = 202; +var SHUTTLE_COACH_SERVICE = 203; +var REGIONAL_COACH_SERVICE = 204; +var SPECIAL_COACH_SERVICE = 205; +var SIGHTSEEING_COACH_SERVICE = 206; +var TOURIST_COACH_SERVICE = 207; +var COMMUTER_COACH_SERVICE = 208; +var ALL_COACH_SERVICES = 209; +var LAST_COACH_SERVICE = ALL_COACH_SERVICES; + +/// suburban railway services +var SUBURBAN_RAILWAY_SERVICE = 300; + +// urban railway services +var URBAN_RAILWAY_SERVICE = 400; +var URBAN_METRO_SERVICE = 401; +var URBAN_UNDERGROUND_SERVICE = 402; +// this constant has the same name as 400 in the specification +var URBAN_RAILWAY_SERVICE_2 = 403; +var ALL_URBAN_RAILWAY_SERVICES = 404; +var MONORAIL = 405; +var LAST_URBAN_RAILWAY_SERVICE = MONORAIL; + +// metro services +var METRO_SERVICE = 500; + +// underground services +var UNDERGROUND_SERVICE = 600; + +// bus services +var BUS_SERVICE = 700; +var REGIONAL_BUS_SERVICE = 701; +var EXPRESS_BUS_SERVICE = 702; +var STOPPING_BUS_SERVICE = 703; +var LOCAL_BUS_SERVICE = 704; +var NIGHT_BUS_SERVICE = 705; +var POST_BUS_SERVICE = 706; +var SPECIAL_NEEDS_BUS_SERVICE = 707; +var MOBILITY_BUS_SERVICE = 708; +var MOBILITY_BUS_SERVICE_FOR_REGISTERED_DISABLED = 709; +var SIGHTSEEING_BUS = 710; +var SHUTTLE_BUS = 711; +var SCHOOL_BUS = 712; +var SCHOOL_AND_PUBLIC_SERVICE_BUS_SERVICE = 713; +var RAIL_REPLACEMENT_BUS_SERVICE = 714; +var DEMAND_AND_RESPONSE_BUS_SERVICE = 715; +var ALL_BUS_SERVICES = 716; +var LAST_BUS_SERVICE = ALL_BUS_SERVICES; + +// trolleybus services +var TROLLEYBUS_SERVICE = 800; + +// tram services +var TRAM_SERVICE = 900; +var CITY_TRAM_SERVICE = 901; +var LOCAL_TRAM_SERVICE = 902; +var REGIONAL_TRAM_SERVICE = 903; +var SIGHTSEEING_TRAM_SERVICE = 904; +var SHUTTLE_TRAM_SERVICE = 905; +var ALL_TRAM_SERVICES = 906; +var LAST_TRAM_SERVICE = ALL_TRAM_SERVICES; + +// water transport services +var WATER_TRANSPORT_SERVICE = 1000; +var INTERNATIONAL_CAR_FERRY_SERVICE = 1001; +var NATIONAL_CAR_FERRY_SERVICE = 1002; +var REGIONAL_CAR_FERRY_SERVICE = 1003; +var LOCAL_CAR_FERRY_SERVICE = 1004; +var INTERNATIONAL_PASSENGER_FERRY_SERVICE = 1005; +var NATIONAL_PASSENGER_FERRY_SERVICE = 1006; +var REGIONAL_PASSENGER_FERRY_SERVICE = 1007; +var LOCAL_PASSENGER_FERRY_SERVICE = 1008; +var POST_BOAT_SERVICE = 1009; +var TRAIN_FERRY_SERVICE = 1010; +var ROAD_LINK_FERRY_SERVICE = 1011; +var AIRPORT_LINK_FERRY_SERVICE = 1012; +var CAR_HIGH_SPEED_FERRY_SERVICE = 1013; +var PASSENGER_HIGH_SPEED_FERRY_SERVICE = 1014; +var SIGHTSEEING_BOAT_SERVICE = 1015; +var SCHOOL_BOAT = 1016; +var CABLE_DRAWN_BOAT_SERVICE = 1017; +var RIVER_BUS_SERVICE = 1018; +var SCHEDULED_FERRY_SERVICE = 1019; +var SHUTTLE_FERRY_SERVICE = 1020; +var ALL_WATER_TRANSPORT_SERVICE = 1021; +var LAST_WATER_TRANSPORT_SERVICE = ALL_WATER_TRANSPORT_SERVICE; + +// air service +var AIR_SERVICE = 1100; +var INTERNATIONAL_AIR_SERVICE = 1101; +var DOMESTIC_AIR_SERVICE = 1102; +var INTERCONTINENTAL_AIR_SERVICE = 1103; +var DOMESTIC_SCHEDULED_AIR_SERVICE = 1104; +var SHUTTLE_AIR_SERVICE = 1105; +var INTERCONTINENTAL_CHARTER_AIR_SERVICE = 1106; +var INTERNATIONAL_CHARTER_AIR_SERVICE = 1107; +var ROUND_TRIP_CHARTER_AIR_SERVICE = 1108; +var SIGHTSEEING_AIR_SERVICE = 1109; +var HELICOPTER_AIR_SERVICE = 1110; +var DOMESTIC_CHARTER_AIR_SERVICE = 1111; +var SCHENGEN_AREA_AIR_SERVICE = 1112; +var AIRSHIP_SERVICE = 1113; +var ALL_AIR_SERVICES = 1114; +var LAST_AIR_SERVICE = ALL_AIR_SERVICES; + +// ferry services +var FERRY_SERVICE = 1200; + +// telecabin services +var TELECABIN_SERVICE = 1300; +var TELECABIN_SERVICES = 1301; +// renamed this to not be confused with the tram-like street level cable cars +var TELECABIN_CABLE_CAR_SERVICE = 1302; +var ELEVATOR_SERVICE = 1303; +var CHAIR_LIFT_SERVICE = 1304; +var DRAG_LIFT_SERVICE = 1305; +var SMALL_TELECABIN_SERVICE = 1306; +var ALL_TELECABIN_SERVICES = 1307; +var LAST_TELECABIN_SERVICE = ALL_TELECABIN_SERVICES; + +// funicular services +var FUNICULAR_SERVICE = 1400; +var FUNICULAR_SERVICE_2 = 1401; +var ALL_FUNICULAR_SERVICES = 1402; +var LAST_FUNICULAR_SERVICE = ALL_FUNICULAR_SERVICES; + +// taxi services +var TAXI_SERVICE = 1500; +var COMMUNAL_TAXI_SERVICE = 1501; +var WATER_TAXI_SERVICE = 1502; +var RAIL_TAXI_SERVICE = 1503; +var BIKE_TAXI_SERVICE = 1504; +var LICENSED_TAXI_SERVICE = 1505; +var PRIVATE_HIRE_SERVICE_VEHICLE = 1506; +var ALL_TAXI_SERVICES = 1507; +var LAST_TAXI_SERVICE = ALL_TAXI_SERVICES; + +// self drive +var SELF_DRIVE = 1600; +var HIRE_CAR = 1601; +var HIRE_VAN = 1602; +var HIRE_MOTORBIKE = 1603; +var HIRE_CYCLE = 1604; +var LAST_SELF_DRIVE = HIRE_CYCLE; + +// misc. service +var MISCELLANEOUS_SERVICE = 1700; +var CABLE_CAR = 1701; +var HORSE_DRAWN_CARRIAGE = 1702; +var LAST_MISCELLANEOUS_SERVCE = HORSE_DRAWN_CARRIAGE; + +/** + * returns the super type of a given HVT type code, or -1 if the supplied code + * is not among the defined codes + */ +function supertypeOf(type) { + if (type >= RAILWAY_SERVICE && type <= LAST_RAIL_SERVICE) + return RAILWAY_SERVICE; + else if (type >= COACH_SERVICE && type <= LAST_COACH_SERVICE) + return COACH_SERVICE; + else if (type == SUBURBAN_RAILWAY_SERVICE) + return SUBURBAN_RAILWAY_SERVICE; + else if (type >= URBAN_RAILWAY_SERVICE && type <= LAST_URBAN_RAILWAY_SERVICE) + return URBAN_RAILWAY_SERVICE; + else if (type == METRO_SERVICE) + return METRO_SERVICE; + else if (type == UNDERGROUND_SERVICE) + return UNDERGROUND_SERVICE; + else if (type >= BUS_SERVICE && type <= LAST_BUS_SERVICE) + return BUS_SERVICE; + else if (type == TROLLEYBUS_SERVICE) + return TROLLEYBUS_SERVICE; + else if (type >= TRAM_SERVICE && type <= LAST_TRAM_SERVICE) + return TRAM_SERVICE; + else if (type >= WATER_TRANSPORT_SERVICE && + type <= LAST_WATER_TRANSPORT_SERVICE) + return WATER_TRANSPORT_SERVICE; + else if (type >= AIR_SERVICE && type <= LAST_AIR_SERVICE) + return AIR_SERVICE; + else if (type == FERRY_SERVICE) + return FERRY_SERVICE; + else if (type >= TELECABIN_SERVICE && type <= LAST_TELECABIN_SERVICE) + return TELECABIN_SERVICE; + else if (type >= FUNICULAR_SERVICE && type <= LAST_FUNICULAR_SERVICE) + return FUNICULAR_SERVICE; + else if (type >= TAXI_SERVICE && type <= LAST_TAXI_SERVICE) + return TAXI_SERVICE; + else if (type >= SELF_DRIVE && type <= LAST_SELF_DRIVE) + return SELF_DRIVE; + else if (type >= MISCELLANEOUS_SERVICE && type <= LAST_MISCELLANEOUS_SERVCE) + return MISCELLANEOUS_SERVICE; + else + return -1; +} diff --git a/src/instructionRow.js b/src/instructionRow.js new file mode 100644 index 00000000..f8f4cdc9 --- /dev/null +++ b/src/instructionRow.js @@ -0,0 +1,68 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Utils = imports.utils; + +var InstructionRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/instruction-row.ui', + InternalChildren: [ 'directionImage', + 'instructionLabel', + 'distanceLabel' ] +}, class InstructionRow extends Gtk.ListBoxRow { + + _init(params) { + this.turnPoint = params.turnPoint; + delete params.turnPoint; + + this._hasColor = params.hasColor; + delete params.hasColor; + + let lines = params.lines; + delete params.lines; + + super._init(params); + + if (lines) + this._instructionLabel.lines = lines; + + this._instructionLabel.label = this.turnPoint.instruction; + + /* + * The SVG icons for turn point stops has the color red, but has + * the suffix '-symbolic'. So when loading through GtkImage it will have + * the proper GtkIconLookupflags to re-color the icon as symbolic. + * When we load the PixBuf from the SVG ourself, we get the color. + */ + if (this._hasColor) { + let theme = Gtk.IconTheme.get_default(); + let iconName = this.turnPoint.iconName; + this._directionImage.pixbuf = theme.load_icon(iconName, 0, 0); + } else { + this._directionImage.icon_name = this.turnPoint.iconName; + } + + if (this.turnPoint.distance > 0) + this._distanceLabel.label = Utils.prettyDistance(this.turnPoint.distance); + } +}); diff --git a/src/kmlShapeLayer.js b/src/kmlShapeLayer.js new file mode 100644 index 00000000..c7ef0a1f --- /dev/null +++ b/src/kmlShapeLayer.js @@ -0,0 +1,51 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var KmlShapeLayer = GObject.registerClass( +class KmlShapeLayer extends ShapeLayer.ShapeLayer { + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.kml(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +KmlShapeLayer.mimeTypes = ['application/vnd.google-earth.kml+xml']; +KmlShapeLayer.displayName = 'KML'; +KmlShapeLayer.createInstance = function(params) { + return new KmlShapeLayer(params); +}; diff --git a/src/layersPopover.js b/src/layersPopover.js new file mode 100644 index 00000000..70f25657 --- /dev/null +++ b/src/layersPopover.js @@ -0,0 +1,266 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Gdk = imports.gi.Gdk; + +const Application = imports.application; +const MapSource = imports.mapSource; +const MapView = imports.mapView; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +const PREVIEW_WIDTH = 230; +const PREVIEW_HEIGHT = 80; + +var ShapeLayerRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-row.ui', + Children: ['closeButton'], + InternalChildren: ['layerLabel', 'visibleButton'] +}, class ShapeLayerRow extends Gtk.ListBoxRow { + + _init(params) { + this.shapeLayer = params.shapeLayer; + delete params.shapeLayer; + + super._init(params); + + this._layerLabel.label = this.shapeLayer.getName(); + this._layerLabel.tooltip_text = this.shapeLayer.file.get_parse_name(); + this._visibleButton.connect('clicked', () => { + let image = this._visibleButton.get_child(); + + this.shapeLayer.visible = !this.shapeLayer.visible; + this.activatable = this.shapeLayer.visible; + if (this.shapeLayer.visible) + image.icon_name = 'layer-visible-symbolic'; + else + image.icon_name = 'layer-not-visible-symbolic'; + }); + } +}); + +var LayersPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/layers-popover.ui', + InternalChildren: [ 'streetLayerButton', + 'aerialLayerButton', + 'streetLayerImage', + 'aerialLayerImage', + 'hybridAerialRevealer', + 'layersListBox', + 'loadLayerButton' ] +}, class LayersPopover extends Gtk.Popover { + + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init({ width_request: 200, + no_show_all: true, + transitions_enabled: false, + visible: false }); + + this._aerialLayerButton.join_group(this._streetLayerButton); + + this.get_style_context().add_class('maps-popover'); + + this._layersListBox.bind_model(this._mapView.shapeLayerStore, + this._listBoxCreateWidget.bind(this)); + this._layersListBox.connect('row-activated', (lb, row) => { + this._mapView.gotoBBox(row.shapeLayer.bbox); + }); + + this._layersListBox.set_header_func((row, before) => { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this._layerPreviews = { + street: { + source: MapSource.createStreetSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + } + }; + + if (Service.getService().tiles.streetDark) { + this._layerPreviews.streetDark = { + source: MapSource.createStreetDarkSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.aerial) { + this._layerPreviews.aerial = { + source: MapSource.createAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.hybridAerial) { + this._layerPreviews.hybridAerial = { + source: MapSource.createHybridAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + + // disable the map type switch buttons if aerial is unavailable + if (Service.getService().tiles.aerial) { + this._streetLayerButton.connect('clicked', () => { + if (this._streetLayerButton.active) { + this._mapView.setMapType(MapView.MapType.STREET); + } + }); + + this._aerialLayerButton.connect('clicked', () => { + if (this._aerialLayerButton.active) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + }); + + this._mapView.view.connect("notify::zoom-level", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::latitude", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::longitude", + this._setLayerPreviews.bind(this)); + Application.settings.connect("changed::night-mode", + this._onNightModeChanged.bind(this)); + Application.settings.connect("changed::hybrid-aerial", + this._onHybridAerialChanged.bind(this)); + + } else { + this._streetLayerButton.visible = false; + this._aerialLayerButton.visible = false; + } + + this.setMapType(this._mapView.getMapType()); + this._mapView.connect("map-type-changed", (_mapView, type) => { + this.setMapType(type); + }); + } + + _onNightModeChanged() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark', true); + } else { + this._setLayerPreviewImage('street', true); + } + } + + _onHybridAerialChanged() { + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial', true); + } else { + this._setLayerPreviewImage('aerial', true); + } + } + + _setLayerPreviews() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark'); + } else { + this._setLayerPreviewImage('street'); + } + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial'); + } else { + this._setLayerPreviewImage('aerial'); + } + } + + _setLayerPreviewImage(layer, forceUpdate = false) { + let previewInfo = this._layerPreviews[layer]; + let source = previewInfo.source; + let widget = previewInfo.widget; + + let z = this._mapView.view.zoom_level - 1; + if (z < 0) + z = 0; + let size = source.get_tile_size(); + let x = Math.floor(source.get_x(z, this._mapView.view.longitude) / size); + let y = Math.floor(source.get_y(z, this._mapView.view.latitude) / size); + + // If the view hasn't moved enough that the tile is different, + // then don't bother changing anything + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z && !forceUpdate) { + + return; + } + previewInfo.lastLocation = {x, y, z}; + + let tile = Champlain.Tile.new_full(x, y, size, z); + + tile.connect("render-complete", (a, b, c, error) => { + if (error) + return; // oh well + + // Make sure we're still at the same location + // This is especially important on slow connections + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z) { + + let pixbuf = Gdk.pixbuf_get_from_surface(tile.surface, + (size - PREVIEW_WIDTH) / 2, + (size - PREVIEW_HEIGHT) / 2, + PREVIEW_WIDTH, + PREVIEW_HEIGHT); + widget.set_from_pixbuf(pixbuf); + } + }); + + source.fill_tile(tile); + } + + setMapType(mapType) { + if (mapType === MapView.MapType.STREET) { + this._streetLayerButton.active = true; + this._hybridAerialRevealer.reveal_child = false; + } else if (mapType === MapView.MapType.AERIAL) { + this._aerialLayerButton.active = true; + if (Service.getService().tiles.hybridAerial) + this._hybridAerialRevealer.reveal_child = true; + } + } + + _onRemoveClicked(row) { + this._mapView.removeShapeLayer(row.shapeLayer); + if (this._layersListBox.get_children().length <= 0) + this._layersListBox.hide(); + } + + _listBoxCreateWidget(shapeLayer) { + let row = new ShapeLayerRow({ shapeLayer: shapeLayer }); + row.closeButton.connect('clicked', + () => this._onRemoveClicked(row)); + this._layersListBox.show(); + return row; + } +}); diff --git a/src/location.js b/src/location.js new file mode 100644 index 00000000..88427abc --- /dev/null +++ b/src/location.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Red Hat Inc. + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Authors: Zeeshan Ali (Khattak) + * Jonas Danielsson + */ + +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +/* Adds heading to Geocode.Location */ +var Location = GObject.registerClass( +class Location extends Geocode.Location { + + _init(params) { + this._heading = params.heading; + delete params.heading; + + super._init(params); + } + + get heading() { + return this._heading; + } + + set heading(v) { + this._heading = v; + } +}); diff --git a/src/locationServiceDialog.js b/src/locationServiceDialog.js new file mode 100644 index 00000000..4e459556 --- /dev/null +++ b/src/locationServiceDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2018 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +const _PRIVACY_PANEL = 'gnome-privacy-panel.desktop'; + +var LocationServiceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/location-service-dialog.ui', + InternalChildren: [ 'cancelButton', + 'settingsButton'], +}, class LocationServiceDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + this._settingsButton.connect('clicked', () => this._onSettings()); + this._cancelButton.connect('clicked', () => this._onCancel()); + } + + _onSettings() { + let privacyInfo = Gio.DesktopAppInfo.new(_PRIVACY_PANEL); + + try { + let display = Gdk.Display.get_default(); + + privacyInfo.launch([], display.get_app_launch_context()); + } catch(e) { + Utils.debug('launching privacy panel failed: ' + e); + } + + this.response(Gtk.ResponseType.OK); + } + + _onCancel() { + this.response(Gtk.ResponseType.CANCEL); + } +}); \ No newline at end of file diff --git a/src/longPrintLayout.js b/src/longPrintLayout.js new file mode 100644 index 00000000..3882f4e9 --- /dev/null +++ b/src/longPrintLayout.js @@ -0,0 +1,140 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; +const Route = imports.route; + +const _NUM_MINIMAPS = 5; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 0.57, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; +const _MiniMapView = { + SCALE_X: 0.4, + SCALE_Y: 0.20, + SCALE_MARGIN: 0.03, + ZOOM_LEVEL: 18 +}; + +var LongPrintLayout = GObject.registerClass( +class LongPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + 3 maps) + instructions */ + let totalSurfaces = 4 + this._route.turnPoints.length; + + /* Plus via points */ + this._route.turnPoints.forEach((turnPoint) => { + if (turnPoint.type === Route.TurnPointType.VIA) + totalSurfaces++; + }); + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let miniMapViewWidth = _MiniMapView.SCALE_X * this._pageWidth; + let miniMapViewHeight = _MiniMapView.SCALE_Y * this._pageHeight; + let miniMapViewMargin = _MiniMapView.SCALE_MARGIN * this._pageHeight; + let miniMapViewZoomLevel = _MiniMapView.ZOOM_LEVEL; + + let dy = 0; + let pointsLength = this._route.turnPoints.length; + + /* Fixed number of locations are plotted on minimaps which requires a + * check on instructions bound. Later on this can be made dynamic + * depending upon factors like total number of instructions, complexity + * of neighbourhood areas, etc. + * + * We currently have maps besides the instructions for: + * - the start location + * - via points in the route + * - the end location + * + * We include _NUM_MINIMAPS instructions per map, and have the map + * ensure the bounding box of those instructions. + * + * For the start location we include _NUM_MINIMAPS number of + * instruction, if available, from start. + * + * For via points we include _NUM_MINIMAPS / 2 number of instructions + * before and _NUM_MINIMAPS / 2 number of instructions after the + * via point. + * + * For the end location we include _NUM_MINIMAPS number of instructions + * leading up to the end location. + * + */ + let first = 0; + let last = Math.min(_NUM_MINIMAPS, pointsLength); + let points = this._createTurnPointArray(first, last); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + + /* x-cursor is increased temporarily for rendering instructions */ + let tmpX = this._cursorX; + for (let i = 0; i < this._route.turnPoints.length; i++) { + let turnPoint = this._route.turnPoints[i]; + + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._cursorX = tmpX + miniMapViewWidth + miniMapViewMargin; + this._drawInstruction(instructionWidth, instructionHeight, + turnPoint); + this._cursorY += dy; + + if (turnPoint.type === Route.TurnPointType.VIA) { + let tmpY = this._cursorY; + + first = Math.max(0, (i + 1) - (_NUM_MINIMAPS / 2)); + last = Math.min((i + 1) + (_NUM_MINIMAPS / 2), pointsLength); + points = this._createTurnPointArray(Math.floor(first), + Math.floor(last)); + this._cursorX = tmpX; + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + this._cursorY = tmpY; + } + } + this._cursorX = tmpX; + + first = Math.max(0, pointsLength - _NUM_MINIMAPS); + last = pointsLength; + points = this._createTurnPointArray(first, last); + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + } +}); diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..eac48f59 --- /dev/null +++ b/src/main.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +pkg.initGettext(); +pkg.initFormat(); +pkg.require({ 'cairo': '1.0', + 'Champlain': '0.12', + 'Clutter': '1.0', + 'Cogl': '1.0', + 'GeocodeGlib': '1.0', + 'Gdk': '3.0', + 'GdkPixbuf': '2.0', + 'GFBGraph': '0.2', + 'Gio': '2.0', + 'GLib': '2.0', + 'Goa': '1.0', + 'GObject': '2.0', + 'Gtk': '3.0', + 'GtkChamplain': '0.12', + 'GtkClutter': '1.0', + 'Handy': '1', + 'Rest': '0.7', + 'Soup': '2.4' }); + +const Application = imports.application; + +function main(args) { + /* Add prototype to get last element of an array. + * TODO: if we get more of these, might move initing + * to a decicated Prototypes modules. + */ + if (!Array.prototype.last) { + Array.prototype.last = function() { + return this[this.length - 1]; + } + } + + let application = new Application.Application(); + return application.run(args); +} diff --git a/src/mainWindow.js b/src/mainWindow.js new file mode 100644 index 00000000..560d40a1 --- /dev/null +++ b/src/mainWindow.js @@ -0,0 +1,687 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContextMenu = imports.contextMenu; +const ExportViewDialog = imports.exportViewDialog; +const FavoritesPopover = imports.favoritesPopover; +const Geoclue = imports.geoclue; +const GeocodeFactory = imports.geocode; +const HeaderBar = imports.headerBar; +const LocationServiceDialog = imports.locationServiceDialog; +const MapView = imports.mapView; +const PlaceBar = imports.placeBar; +const PlaceEntry = imports.placeEntry; +const PlaceStore = imports.placeStore; +const PrintOperation = imports.printOperation; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Sidebar = imports.sidebar; +const Utils = imports.utils; + +const _CONFIGURE_ID_TIMEOUT = 100; // msecs +const _ADAPTIVE_VIEW_WIDTH = 700; +const _PLACE_ENTRY_MARGIN = 35; + +var ShapeLayerFileChooser = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-file-chooser.ui' +}, class ShapeLayerFileChooser extends Gtk.FileChooserNative { + + _init(params) { + super._init(params); + let allFilter = new Gtk.FileFilter(); + allFilter.set_name(_("All Layer Files")); + this.add_filter(allFilter); + this.set_filter(allFilter); + this.title = _("Open Shape Layer"); + + ShapeLayer.SUPPORTED_TYPES.forEach((layerClass) => { + let filter = new Gtk.FileFilter(); + [filter, allFilter].forEach((f) => { + layerClass.mimeTypes.forEach((type) => { + f.add_mime_type(type); + }); + }); + filter.set_name(layerClass.displayName); + this.add_filter(filter); + }); + } +}); + +var MainWindow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/main-window.ui', + InternalChildren: [ 'headerBar', + 'grid', + 'mainStack', + 'mainGrid', + 'noNetworkView', + 'actionBar', + 'actionBarRevealer', + 'placeBarContainer' ] +}, class MainWindow extends Gtk.ApplicationWindow { + + get mapView() { + return this._mapView; + } + + _init(params) { + super._init(params); + + this._configureId = 0; + + this._mapView = new MapView.MapView({ + mapType: this.application.local_tile_path ? + MapView.MapType.LOCAL : undefined, + mainWindow: this }); + + this._mainGrid.add(this._mapView); + + this._mapView.gotoUserLocation(false); + + this._sidebar = this._createSidebar(); + + this._contextMenu = new ContextMenu.ContextMenu({ mapView: this._mapView, + mainWindow: this }); + + this._initActions(); + this._initHeaderbar(); + this._initSignals(); + this._restoreWindowGeometry(); + this._initDND(); + this._initPlaceBar(); + + this._grid.attach(this._sidebar, 1, 0, 1, 2); + + this._grid.show_all(); + + /* for some reason, setting the title of the window through the .ui + * template does not work anymore (maybe has something to do with + * setting a custom title on the headerbar). Setting it programmatically + * here works though. And yields a proper label in the gnome-shell + * overview. + */ + this.title = _("Maps"); + } + + _createPlaceEntry() { + let placeEntry = new PlaceEntry.PlaceEntry({ mapView: this._mapView, + visible: true, + margin_start: _PLACE_ENTRY_MARGIN, + margin_end: _PLACE_ENTRY_MARGIN, + max_width_chars: 50, + loupe: true, + matchRoute: true + }); + placeEntry.connect('notify::place', () => { + if (placeEntry.place) { + this._mapView.showPlace(placeEntry.place, true); + } + }); + + let popover = placeEntry.popover; + popover.connect('selected', () => this._mapView.grab_focus()); + this._mapView.view.connect('button-press-event', () => popover.hide()); + return placeEntry; + } + + _createSidebar() { + let sidebar = new Sidebar.Sidebar(this._mapView); + + Application.routeQuery.connect('notify', () => this._setRevealSidebar(true)); + this.application.bind_property('connected', + sidebar, 'visible', + GObject.BindingFlags.DEFAULT); + return sidebar; + } + + _initPlaceBar() { + this._placeBar = new PlaceBar.PlaceBar({ mapView: this._mapView, + visible: true }); + this._placeBarContainer.add(this._placeBar); + + this.application.bind_property('selected-place', + this._placeBar, 'place', + GObject.BindingFlags.DEFAULT); + } + + _initDND() { + this.drag_dest_set(Gtk.DestDefaults.DROP, null, 0); + this.drag_dest_add_uri_targets(); + + this.connect('drag-motion', (widget, ctx, x, y, time) => { + Gdk.drag_status(ctx, Gdk.DragAction.COPY, time); + return true; + }); + + this.connect('drag-data-received', (widget, ctx, x, y, data, info, time) => { + let files = data.get_uris().map(Gio.file_new_for_uri); + if (this._mapView.openShapeLayers(files)) + Gtk.drag_finish(ctx, true, false, time); + else + Gtk.drag_finish(ctx, false, false, time); + }); + } + + _initActions() { + let actions = { + 'about': { + onActivate: () => this._onAboutActivate() + }, + 'map-type-menu': { + state: ['b', false], + onActivate: () => this._onMapTypeMenuActivate() + }, + 'hybrid-aerial': { + paramType: 'b', + setting: 'hybrid-aerial' + }, + 'goto-user-location': { + accels: ['L'], + onActivate: () => this._onGotoUserLocationActivate() + }, + 'goto-antipode-location': { + accels: ['A'], + onActivate: () => this._mapView.gotoAntipode() + }, + 'toggle-sidebar': { + accels: ['D'], + state: ['b', false], + onChangeState: (a, v) => this._onToggleSidebarChangeState(a, v) + }, + 'zoom-in': { + accels: ['plus', 'plus', 'KP_Add', 'KP_Add', 'equal', 'equal'], + onActivate: () => this._mapView.view.zoom_in() + }, + 'zoom-out': { + accels: ['minus', 'minus', 'KP_Subtract', 'KP_Subtract'], + onActivate: () => this._mapView.view.zoom_out() + }, + 'toggle-scale': { + accels: ['S'], + onActivate: () => this._mapView.toggleScale() + }, + 'find': { + accels: ['F'], + onActivate: () => this._placeEntry.grab_focus() + }, + 'print-route': { + accels: ['P'], + onActivate: () => this._printRouteActivate() + }, + 'open-shape-layer': { + accels: ['O'], + onActivate: () => this._onOpenShapeLayer() + }, + 'export-as-image': { + onActivate: () => this._onExportActivated() + } + }; + + // when aerial tiles are available, add shortcuts to switch + if (Service.getService().tiles.aerial) { + actions['switch-to-street-view'] = { + accels: ['1', 'KP_1'], + onActivate: () => this._onStreetViewActivate() + }; + + actions['switch-to-aearial-view'] = { + accels: ['2', 'KP_2'], + onActivate: () => this._onAerialViewActivate() + }; + } + + Utils.addActions(this, actions, Application.settings); + } + + _initSignals() { + this.connect('delete-event', this._quit.bind(this)); + this.connect('configure-event', + this._onConfigureEvent.bind(this)); + + this.connect('window-state-event', + this._onWindowStateEvent.bind(this)); + this._mapView.view.connect('button-press-event', () => { + // Can not call something that will generate clutter events + // from a clutter event-handler. So use an idle. + Mainloop.idle_add(() => this._mapView.grab_focus()); + }); + + this.application.connect('notify::connected', () => { + if (this.application.connected || this.application.local_tile_path) + this._mainStack.visible_child = this._mainGrid; + else + this._mainStack.visible_child = this._noNetworkView; + }); + + /* + * If the currently focused widget is an entry then we will + * hijack the key-press to the main window and make sure that + * they reach the entry before they can be swallowed as accelerator. + */ + this.connect('key-press-event', (window, event) => { + let focusWidget = window.get_focus(); + let keyval = event.get_keyval()[1]; + let keys = [Gdk.KEY_plus, Gdk.KEY_KP_Add, + Gdk.KEY_minus, Gdk.KEY_KP_Subtract, + Gdk.KEY_equal]; + let isPassThroughKey = keys.indexOf(keyval) !== -1; + + /* if no entry is focused, and the key is not one we should treat + * as a zoom accelerator when no entry is focused, focus the + * main search entry in the headebar to propaget the keypress there + */ + if (!(focusWidget instanceof Gtk.Entry) && !isPassThroughKey) { + /* if the search entry does not handle the event, pass it on + * instead of activating the entry + */ + if (this._placeEntry.handle_event(event) === Gdk.EVENT_PROPAGATE) + return false; + + this._placeEntry.has_focus = true; + focusWidget = this._placeEntry; + } + + if (focusWidget instanceof Gtk.Entry) + return focusWidget.event(event); + + return false; + }); + + this._mapView.view.connect('notify::zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::max-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::min-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + } + + _updateZoomButtonsSensitivity() { + let zoomLevel = this._mapView.view.zoom_level; + let maxZoomLevel = this._mapView.view.max_zoom_level; + let minZoomLevel = this._mapView.view.min_zoom_level; + let zoomInAction = this.lookup_action("zoom-in"); + let zoomOutAction = this.lookup_action("zoom-out"); + + if (zoomLevel >= maxZoomLevel) + zoomInAction.set_enabled(false); + else + zoomInAction.set_enabled(true); + + if (zoomLevel <= minZoomLevel) + zoomOutAction.set_enabled(false); + else + zoomOutAction.set_enabled(true); + } + + _updateLocationSensitivity() { + let sensitive = (Application.geoclue.state !== Geoclue.State.INITIAL && + (this.application.connected || + this.application.local_tile_path)); + + this.lookup_action("goto-user-location").set_enabled(sensitive); + } + + _initHeaderbar() { + this._headerBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_start(this._headerBarLeft); + + this._headerBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_end(this._headerBarRight); + + this._placeEntry = this._createPlaceEntry(); + this._headerBar.custom_title = this._placeEntry; + + Application.geoclue.connect('notify::state', + this._updateLocationSensitivity.bind(this)); + this.application.connect('notify::connected', () => { + let app = this.application; + + this._updateLocationSensitivity(); + this._placeEntry.sensitive = app.connected; + }); + + // action bar, for when the window is too narrow for the full headerbar + this._actionBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_start(this._actionBarLeft); + + this._actionBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_end(this._actionBarRight); + + this.connect('size-allocate', () => { + let [width, height] = this.get_size(); + if (width < _ADAPTIVE_VIEW_WIDTH) { + this.application.adaptive_mode = true; + this._headerBarLeft.hide(); + this._headerBarRight.hide(); + this._actionBarRevealer.set_reveal_child(true); + this._placeEntry.set_margin_start(0); + this._placeEntry.set_margin_end(0); + } else { + this.application.adaptive_mode = false; + this._headerBarLeft.show(); + this._headerBarRight.show(); + this._actionBarRevealer.set_reveal_child(false); + this._placeEntry.set_margin_start(_PLACE_ENTRY_MARGIN); + this._placeEntry.set_margin_end(_PLACE_ENTRY_MARGIN); + } + }); + } + + _saveWindowGeometry() { + let window = this.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.MAXIMIZED) + return; + + // GLib.Variant.new() can handle arrays just fine + let size = this.get_size(); + Application.settings.set('window-size', size); + + let position = this.get_position(); + Application.settings.set('window-position', position); + } + + _restoreWindowGeometry() { + let size = Application.settings.get('window-size'); + if (size.length === 2) { + let [width, height] = size; + this.set_default_size(width, height); + } + + let position = Application.settings.get('window-position'); + if (position.length === 2) { + let [x, y] = position; + + this.move(x, y); + } + + if (Application.settings.get('window-maximized')) + this.maximize(); + } + + _onConfigureEvent(widget, event) { + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + this._configureId = Mainloop.timeout_add(_CONFIGURE_ID_TIMEOUT, () => { + this._saveWindowGeometry(); + this._configureId = 0; + return false; + }); + } + + _onWindowStateEvent(widget, event) { + let window = widget.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.FULLSCREEN) + return; + + let maximized = (state & Gdk.WindowState.MAXIMIZED); + Application.settings.set('window-maximized', maximized); + } + + _quit() { + // remove configure event handler if still there + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + // always save geometry before quitting + this._saveWindowGeometry(); + + return false; + } + + _onGotoUserLocationActivate() { + let message; + + if (Application.geoclue.state === Geoclue.State.ON) { + this._mapView.gotoUserLocation(true); + return; + } + + Application.geoclue.start(() => { + switch(Application.geoclue.state) { + case Geoclue.State.FAILED: + message = _("Failed to connect to location service"); + Utils.showDialog(message, Gtk.MessageType.ERROR, this); + break; + + case Geoclue.State.DENIED: + let dialog = new LocationServiceDialog.LocationServiceDialog({ + visible: true, + transient_for: this, + modal: true }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + break; + + default: + this._mapView.gotoUserLocation(true); + break; + } + }); + } + + _activateExport() { + let view = this._mapView.view; + let surface = view.to_surface(true); + let bbox = view.get_bounding_box(); + let [latitude, longitude] = bbox.get_center(); + + let dialog = new ExportViewDialog.ExportViewDialog({ + transient_for: this, + modal: true, + surface: surface, + latitude: latitude, + longitude: longitude, + mapView: this._mapView + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + + _onExportActivated() { + if (this._mapView.view.state === Champlain.State.DONE) { + this._activateExport(); + } else { + let notifyId = this._mapView.view.connect('notify::state', () => { + if (this._mapView.view.state === Champlain.State.DONE) { + this._mapView.view.disconnect(notifyId); + this._activateExport(); + } + }); + } + } + + _printRouteActivate() { + if (this._mapView.routeShowing) { + let operation = new PrintOperation.PrintOperation({ mainWindow: this }); + } + } + + _onMapTypeMenuActivate(action) { + let state = action.get_state().get_boolean(); + action.set_state(GLib.Variant.new('b', !state)); + } + + _onStreetViewActivate() { + this._mapView.setMapType(MapView.MapType.STREET); + } + + _onAerialViewActivate() { + // don't attempt to switch to aerial if we don't have tiles for it + if (Service.getService().tiles.aerial) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + } + + _onToggleSidebarChangeState(action, variant) { + action.set_state(variant); + + let reveal = variant.get_boolean(); + this._sidebar.set_reveal_child(reveal); + } + + _setRevealSidebar(value) { + let action = this.lookup_action('toggle-sidebar'); + action.change_state(GLib.Variant.new_boolean(value)); + } + + _onAboutActivate() { + let aboutDialog = new Gtk.AboutDialog({ + artists: [ 'Jakub Steiner ', + 'Andreas Nilsson ' ], + authors: [ 'Zeeshan Ali (Khattak) ', + 'Mattias Bengtsson ', + 'Jonas Danielsson ', + 'Marcus Lundblad '], + translator_credits: _("translator-credits"), + /* Translators: This is the program name. */ + program_name: _("Maps"), + comments: _("A map application for GNOME"), + license_type: Gtk.License.GPL_2_0, + logo_icon_name: 'org.gnome.Maps', + version: pkg.version, + website: 'https://live.gnome.org/Apps/Maps', + wrap_license: true, + + modal: true, + transient_for: this + }); + + let copyright = _("Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors"); + let attribution = this._getAttribution(); + + copyright += '\n' + attribution; + + /* HACK: we need to poke into gtkaboutdialog internals + * to set the copyright with markup like attribution requires + */ + + let copyrightLabel = aboutDialog.get_template_child(Gtk.AboutDialog, 'copyright_label'); + copyrightLabel.set_markup('' + copyright + ''); + copyrightLabel.show(); + + aboutDialog.show(); + aboutDialog.connect('response', () => aboutDialog.destroy()); + } + + _getAttribution() { + let tileProviderInfo = Service.getService().tileProviderInfo; + let photonGeocode = Service.getService().photonGeocode; + let attribution = _("Map data by %s and contributors").format('OpenStreetMap'); + + if (tileProviderInfo) { + let tileProviderString; + if (tileProviderInfo.url) { + tileProviderString = '' + + tileProviderInfo.name + ''; + } else { + tileProviderString = tileProviderInfo.name; + } + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * tile provider where the %s placeholder is replaced by either + * the bare name of the tile provider, or a linkified URL if one + * is available + */ + attribution += _("Map tiles provided by %s").format(tileProviderString); + } + + let provider = GeocodeFactory.getGeocoder().attribution; + let providerUrl = GeocodeFactory.getGeocoder().attributionUrl; + let geocoderName = GeocodeFactory.getGeocoder().name; + let geocoderUrl = GeocodeFactory.getGeocoder().url; + + let providerString; + if (providerUrl) { + providerString = + '' + provider + ''; + } else { + providerString = provider; + } + + let geocoderLink = + '%s'.format(geocoderUrl, geocoderName); + + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * search provider where the first %s placeholder is replaced by either + * the bare name of the geocoder provider, or a linkified URL if one + * is available, and the second %s placeholder is replaced by the + * URL to the geocoder project page. These placeholders + * can be swapped, if needed using the %n$s positional syntax + * (i.e. "%2$s ... %1$s ..." for positioning the project URL + * before the provider). + */ + attribution += _("Search provided by %s using %s"). + format(providerString, geocoderLink); + + return attribution; + } + + _onOpenShapeLayer() { + this._fileChooser = new ShapeLayerFileChooser({ + transient_for: this, + }); + + this._fileChooser.connect('response', (widget, response) => { + if (response === Gtk.ResponseType.ACCEPT) { + this._mapView.openShapeLayers(this._fileChooser.get_files()); + this._headerBarLeft.popdownLayersPopover(); + this._actionBarLeft.popdownLayersPopover(); + } + this._fileChooser.destroy(); + }); + this._fileChooser.show(); + } +}); diff --git a/src/mapBubble.js b/src/mapBubble.js new file mode 100644 index 00000000..1d92c9ee --- /dev/null +++ b/src/mapBubble.js @@ -0,0 +1,113 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const GeocodeFactory = imports.geocode; +const Place = imports.place; +const PlaceView = imports.placeView; +const PlaceButtons = imports.placeButtons; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +/* Maximum width of the popover content before it's forced to wrap */ +const MAX_CONTENT_WIDTH = 350; +/* Margin between the height of the main window and the height of the popover + contents */ +const HEIGHT_MARGIN = 100; + +var MapBubble = GObject.registerClass( +class MapBubble extends Gtk.Popover { + + _init(params) { + let place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + params.relative_to = mapView; + params.transitions_enabled = false; + params.modal = false; + + super._init(params); + + let content = new PlaceView.PlaceView({ place, mapView, visible: true }); + + let scrolledWindow = new MapBubbleScrolledWindow({ visible: true, + propagateNaturalWidth: true, + propagateNaturalHeight: true, + hscrollbarPolicy: Gtk.PolicyType.NEVER }); + scrolledWindow.add(content); + this.add(scrolledWindow); + + this.get_style_context().add_class("map-bubble"); + } +}); + +var MapBubbleScrolledWindow = GObject.registerClass( +class MapBubbleScrolledWindow extends Gtk.ScrolledWindow { + vfunc_get_preferred_width() { + let [min, nat] = this.get_child().get_preferred_width(); + min = Math.min(min, MAX_CONTENT_WIDTH); + nat = Math.min(nat, MAX_CONTENT_WIDTH); + return [min, nat]; + } + + vfunc_get_preferred_height_for_width(width) { + let windowHeight = this.get_toplevel().get_allocated_height() - HEIGHT_MARGIN; + let [min, nat] = this.get_child().get_preferred_height_for_width(width); + min = Math.min(min, windowHeight); + nat = Math.min(nat, windowHeight); + return [min, nat]; + } + + vfunc_draw(cr) { + let popover = this.get_ancestor(Gtk.Popover); + if (popover) { + let [{x, y, width, height}, baseline] = this.get_allocated_size(); + + // clip the top corners to the rounded corner + let radius = popover.get_style_context() + .get_property(Gtk.STYLE_PROPERTY_BORDER_RADIUS, popover.get_state_flags()) + * this.scale_factor; + + // bottom left + cr.moveTo(0, height); + cr.lineTo(0, radius); + cr.arc(radius, radius, radius, Math.PI, -Math.PI / 2.0); + cr.arc(width - radius, radius, radius, -Math.PI / 2.0, 0); + cr.lineTo(width, height); + + cr.clip(); + } + + return super.vfunc_draw(cr); + } +}); + diff --git a/src/mapMarker.js b/src/mapMarker.js new file mode 100644 index 00000000..b5a0e7fa --- /dev/null +++ b/src/mapMarker.js @@ -0,0 +1,415 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const MapBubble = imports.mapBubble; +const MapWalker = imports.mapWalker; +const Utils = imports.utils; + +var MapMarker = GObject.registerClass({ + Implements: [Champlain.Exportable], + Abstract: true, + Signals: { + 'gone-to': { } + }, + Properties: { + 'surface': GObject.ParamSpec.override('surface', + Champlain.Exportable), + 'view-latitude': GObject.ParamSpec.double('view-latitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -90, 90, 0), + 'view-longitude': GObject.ParamSpec.double('view-longitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -180, 180, 0), + 'view-zoom-level': GObject.ParamSpec.int('view-zoom-level', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, 20, 3) + } +}, class MapMarker extends Champlain.Marker { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.selectable = true; + + super._init(params); + + this.connect('notify::size', this._translateMarkerPosition.bind(this)); + if (this._mapView) { + this._view = this._mapView.view; + this.connect('notify::selected', this._onMarkerSelected.bind(this)); + this.connect('button-press', this._onButtonPress.bind(this)); + this.connect('touch-event', this._onTouchEvent.bind(this)); + + // Some markers are draggable, we want to sync the marker location and + // the location saved in the GeocodePlace + // These are not bindings because the place may have a different + // location later + this.connect('notify::latitude', () => { + this.place.location.latitude = this.latitude; + }); + this.connect('notify::longitude', () => { + this.place.location.longitude = this.longitude; + }); + + this.place.connect('notify::location', this._onLocationChanged.bind(this)); + + this._view.bind_property('latitude', this, 'view-latitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('longitude', this, 'view-longitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('zoom-level', this, 'view-zoom-level', + GObject.BindingFlags.DEFAULT); + this.connect('notify::view-latitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-longitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-zoom-level', this._onViewUpdated.bind(this)); + } + + Application.application.connect('notify::adaptive-mode', this._onAdaptiveModeChanged.bind(this)); + } + + get surface() { + return this._surface; + } + + set surface(v) { + this._surface = v; + } + + vfunc_get_surface() { + return this._surface; + } + + vfunc_set_surface(surface) { + this._surface = surface; + } + + _actorFromIconName(name, size, color) { + try { + let theme = Gtk.IconTheme.get_default(); + let pixbuf; + + if (color) { + let info = theme.lookup_icon(name, size, 0); + pixbuf = info.load_symbolic(color, null, null, null)[0]; + } else { + pixbuf = theme.load_icon(name, size, 0); + } + + let canvas = new Clutter.Canvas({ width: pixbuf.get_width(), + height: pixbuf.get_height() }); + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0); + cr.paint(); + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + actor.set_content(canvas); + actor.set_size(pixbuf.get_width(), pixbuf.get_height()); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + _onButtonPress(marker, event) { + // Zoom in on marker on double-click + if (event.get_click_count() > 1) { + if (this._view.zoom_level < this._view.max_zoom_level) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.center_on(this.latitude, this.longitude); + } + } + } + + _onTouchEvent(marker, event) { + if (event.type() == Clutter.EventType.TOUCH_BEGIN) + this.selected = true; + + return Clutter.EVENT_STOP; + } + + _translateMarkerPosition() { + this.set_translation(-this.anchor.x, -this.anchor.y, 0); + } + + _onLocationChanged() { + this.set_location(this.place.location.latitude, this.place.location.longitude); + + if (this._bubble) { + if (this._isInsideView()) + this._positionBubble(this._bubble); + else + this.hideBubble(); + } + } + + /** + * Returns: The anchor point for the marker icon, relative to the + * top left corner. + */ + get anchor() { + return { x: 0, y: 0 }; + } + + get bubbleSpacing() { + return 0; + } + + get place() { + return this._place; + } + + get bubble() { + if (this._bubble === undefined && this._hasBubble()) { + if (this._place.name) { + this._bubble = new MapBubble.MapBubble({ place: this._place, + mapView: this._mapView }); + } + } + + return this._bubble; + } + + _hasBubble() { + // Markers has no associated bubble by default + return false; + } + + _positionBubble(bubble) { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + let pos = new Gdk.Rectangle({ x: x + tx - this.bubbleSpacing, + y: y + ty - this.bubbleSpacing, + width: this.width + this.bubbleSpacing * 2, + height: this.height + this.bubbleSpacing * 2 }); + bubble.pointing_to = pos; + bubble.position = Gtk.PositionType.TOP; + + // Gtk+ doesn't provide a widget allocation by calling get_allocation + // if it's not visible, the bubble positioning occurs when bubble + // is not visible yet + let bubbleSize = bubble.get_preferred_size()[1]; + + // Set bubble position left/right if it's close to a vertical map edge + if (pos.x + pos.width / 2 + bubbleSize.width / 2 >= mapSize.width) + bubble.position = Gtk.PositionType.LEFT; + else if (pos.x + pos.width / 2 - bubbleSize.width / 2 <= 0) + bubble.position = Gtk.PositionType.RIGHT; + // Avoid bubble to cover header bar if the marker is close to the top map edge + else if (pos.y - bubbleSize.height <= 0) + bubble.position = Gtk.PositionType.BOTTOM; + } + + _hideBubbleOn(signal, duration) { + let sourceId = null; + let signalId = this._view.connect(signal, () => { + if (sourceId) + Mainloop.source_remove(sourceId); + else + this.hideBubble(); + + let callback = (function() { + sourceId = null; + this.showBubble(); + }).bind(this); + + if (duration) + sourceId = Mainloop.timeout_add(duration, callback); + else + sourceId = Mainloop.idle_add(callback); + }); + + Utils.once(this.bubble, 'closed', () => { + // We still listening for the signal to refresh + // the existent timeout + if (!sourceId) + this._view.disconnect(signalId); + }); + + Utils.once(this, 'notify::selected', () => { + // When the marker gets deselected, we need to ensure + // that the timeout callback is not called anymore. + if (sourceId) { + Mainloop.source_remove(sourceId); + this._view.disconnect(signalId); + } + }); + } + + _initBubbleSignals() { + this._hideBubbleOn('notify::zoom-level', 500); + this._hideBubbleOn('notify::size'); + + // This is done to get just one marker selected at any time regardless + // of the layer to which it belongs so we can get only one visible bubble + // at any time. We do this for markers in different layers because for + // markers in the same layer, ChamplainMarkerLayer single selection mode + // does the job. + this._mapView.onSetMarkerSelected(this); + + let markerSelectedSignalId = this._mapView.connect('marker-selected', (mapView, selectedMarker) => { + if (this.get_parent() !== selectedMarker.get_parent()) + this.selected = false; + }); + + let viewTouchEventSignalId = + this._view.connect('touch-event', () => this.set_selected(false)); + + let goingToSignalId = this._mapView.connect('going-to', () => { + this.set_selected(false); + }); + let buttonPressSignalId = + this._view.connect('button-press-event', () => { + this.set_selected(false); + }); + // Destroy the bubble when the marker is destroyed o removed from a layer + let parentSetSignalId = this.connect('parent-set', () => { + this.set_selected(false); + }); + let dragMotionSignalId = this.connect('drag-motion', () => { + this.set_selected(false); + }); + let markerHiddenSignalId = this.connect('notify::visible', () => { + if (!this.visible) { + this.set_selected(false); + } + }); + + Utils.once(this.bubble, 'closed', () => { + this._mapView.disconnect(markerSelectedSignalId); + this._mapView.disconnect(goingToSignalId); + this._view.disconnect(buttonPressSignalId); + this._view.disconnect(viewTouchEventSignalId); + this.disconnect(parentSetSignalId); + this.disconnect(dragMotionSignalId); + + this._bubble.destroy(); + delete this._bubble; + }); + } + + _isInsideView() { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + return x + tx + this.width > 0 && x + tx < mapSize.width && + y + ty + this.height > 0 && y + ty < mapSize.height; + } + + _onViewUpdated() { + if (this.bubble) { + if (this._isInsideView()) + this._positionBubble(this.bubble); + else + this.bubble.hide(); + } + } + + showBubble() { + if (this.bubble && !this.bubble.visible && this._isInsideView() && !Application.application.adaptive_mode) { + this._initBubbleSignals(); + this.bubble.show(); + this._positionBubble(this.bubble); + } + } + + hideBubble() { + if (this._bubble) + this._bubble.hide(); + } + + get walker() { + if (this._walker === undefined) + this._walker = new MapWalker.MapWalker(this.place, this._mapView); + + return this._walker; + } + + zoomToFit() { + this.walker.zoomToFit(); + } + + goTo(animate) { + Utils.once(this.walker, 'gone-to', () => this.emit('gone-to')); + this.walker.goTo(animate); + } + + goToAndSelect(animate) { + Utils.once(this, 'gone-to', () => this.selected = true); + + this.goTo(animate); + } + + _onMarkerSelected() { + if (this.selected) { + if (this.bubble) { + this.showBubble(); + Application.application.selected_place = this._place; + } + } else { + this.hideBubble(); + Application.application.selected_place = null; + } + } + + _onAdaptiveModeChanged() { + if (this.selected) { + if (!Application.application.adaptive_mode) { + this.showBubble(); + } else { + this.hideBubble(); + } + } + } +}); diff --git a/src/mapSource.js b/src/mapSource.js new file mode 100644 index 00000000..5feb6298 --- /dev/null +++ b/src/mapSource.js @@ -0,0 +1,174 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const System = imports.system; + +const Service = imports.service; +const Utils = imports.utils; + +let _attributionImages = []; + +const _FILE_CACHE_SIZE_LIMIT = (10 * 1024 * 1024); /* 10Mb */ +const _MEMORY_CACHE_SIZE_LIMIT = 100; /* number of tiles */ + +const _LOGO_PADDING_X = 10; +const _LOGO_PADDING_Y = 25; +// extra padding below logo in RTL, where scale will be on the right side +const _LOGO_PADDING_Y_RTL = 35; + +var AttributionLogo = GObject.registerClass({}, +class AttributionLogo extends GtkClutter.Actor { + + _init(view) { + super._init(); + + this._view = view; + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + view.connect('notify::width', () => this._updatePosition()); + view.connect('notify::height', () => this._updatePosition()); + + this._updatePosition(view); + } + + setSource(source) { + this._id = source.get_id(); + + let bin = this.get_widget(); + + if (bin.get_child()) + bin.remove(bin.get_child()); + + if (_attributionImages[source.get_id()]) { + bin.add(_attributionImages[source.get_id()]); + bin.visible = true; + } else { + bin.visible = false; + } + + this._updatePosition(); + } + + _updatePosition() { + let image = _attributionImages[this._id]; + + if (image) { + let width = image.pixbuf.width; + let height = image.pixbuf.height; + let x = this._view.width - width - _LOGO_PADDING_X; + /* TODO: ideally the attribution logo should be aligned to the left + * side in RTL locales, but I couldn't get that working with Clutter + * actor positioning, so adjust the padding to fit above the scale + * for now + */ + let y = this._view.height - height - + (this._rtl ? _LOGO_PADDING_Y_RTL : _LOGO_PADDING_Y); + + this.set_position(x, y); + } + } +}); + +function _updateAttributionImage(source) { + if (!source.attribution_logo || source.attribution_logo === "") + return; + + if (!_attributionImages[source.id]) + _attributionImages[source.id] = new Gtk.Image({ visible: true }); + + let data = GLib.base64_decode(source.attribution_logo); + let stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(data)); + _attributionImages[source.id].pixbuf = + GdkPixbuf.Pixbuf.new_from_stream(stream, null); +} + +function _createTileSource(source) { + let tileSource = new Champlain.NetworkTileSource({ + id: source.id, + name: source.name, + license: source.license, + license_uri: source.license_uri, + min_zoom_level: source.min_zoom_level, + max_zoom_level: source.max_zoom_level, + tile_size: source.tile_size, + renderer: new Champlain.ImageRenderer(), + uri_format: source.uri_format + }); + tileSource.max_conns = source.max_connections; + return tileSource; +} + +function _createCachedSource(source) { + let tileSource = _createTileSource(source); + _updateAttributionImage(source); + + let fileCache = new Champlain.FileCache({ + size_limit: _FILE_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let memoryCache = new Champlain.MemoryCache({ + size_limit: _MEMORY_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let errorSource = new Champlain.NullTileSource({ + renderer: new Champlain.ImageRenderer() + }); + + /* + * When the a source in the chain fails to load a given tile + * the next one in the chain tries instead. Until we get to the error + * source. + */ + let sourceChain = new Champlain.MapSourceChain(); + sourceChain.push(errorSource); + sourceChain.push(tileSource); + sourceChain.push(fileCache); + sourceChain.push(memoryCache); + + return sourceChain; +} + +function createAerialSource() { + return _createCachedSource(Service.getService().tiles.aerial); +} + +function createHybridAerialSource() { + return _createCachedSource(Service.getService().tiles.hybridAerial); +} + +function createStreetSource() { + return _createCachedSource(Service.getService().tiles.street); +} + +function createStreetDarkSource() { + return _createCachedSource(Service.getService().tiles.streetDark) +} + +function createPrintSource() { + return _createCachedSource(Service.getService().tiles.print); +} diff --git a/src/mapView.js b/src/mapView.js new file mode 100644 index 00000000..5a6599df --- /dev/null +++ b/src/mapView.js @@ -0,0 +1,939 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkChamplain = imports.gi.GtkChamplain; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const Color = imports.color; +const Geoclue = imports.geoclue; +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const KmlShapeLayer = imports.kmlShapeLayer; +const GpxShapeLayer = imports.gpxShapeLayer; +const Location = imports.location; +const Maps = imports.gi.GnomeMaps; +const MapSource = imports.mapSource; +const MapWalker = imports.mapWalker; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const StoredRoute = imports.storedRoute; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; +const TurnPointMarker = imports.turnPointMarker; +const UserLocationMarker = imports.userLocationMarker; +const Utils = imports.utils; + +var MapType = { + LOCAL: 'MapsLocalSource', + STREET: 'MapsStreetSource', + AERIAL: 'MapsAerialSource' +}; +const _LOCATION_STORE_TIMEOUT = 500; +const MapMinZoom = 2; + +/* + * Due to the mathematics of spherical mericator projection, + * the map must be truncated at a latitude less than 90 degrees. + */ +var MAX_LATITUDE = 85.05112; +var MIN_LATITUDE = -85.05112; +var MAX_LONGITUDE = 180; +var MIN_LONGITUDE = -180; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline on the path */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +// color used for turn-by-turn-based routes (non-transit) +const TURN_BY_TURN_ROUTE_COLOR = '0000FF'; + +// line width for route lines +const ROUTE_LINE_WIDTH = 5; + +/* length of filled parts of dashed lines used for walking legs of transit + * itineraries + */ +const DASHED_ROUTE_LINE_FILLED_LENGTH = 5; + +// length of gaps of dashed lines used for walking legs of transit itineraries +const DASHED_ROUTE_LINE_GAP_LENGTH = 5; + +// Maximum limit of file size (20 MB) that can be loaded without user confirmation +const FILE_SIZE_LIMIT_MB = 20; + +var MapView = GObject.registerClass({ + Properties: { + // this property is true when the routing sidebar is active + 'routingOpen': GObject.ParamSpec.boolean('routingOpen', + 'Routing open', + 'Routing sidebar open', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false), + /* this property is true when a route is being shown on the map */ + 'routeShowing': GObject.ParamSpec.boolean('routeShowing', + 'Route showing', + 'Showing a route on the map', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false) + }, + Signals: { + 'user-location-changed': {}, + 'going-to': {}, + 'going-to-user-location': {}, + 'gone-to-user-location': {}, + 'view-moved': {}, + 'marker-selected': { param_types: [Champlain.Marker] }, + 'map-type-changed': { param_types: [GObject.TYPE_STRING] } + }, +}, class MapView extends GtkChamplain.Embed { + + get routingOpen() { + return this._routingOpen || this._instructionMarkerLayer.visible; + } + + set routingOpen(value) { + let isValid = Application.routeQuery.isValid(); + + this._routingOpen = value && isValid; + this._routeLayers.forEach((routeLayer) => routeLayer.visible = value && isValid); + this._instructionMarkerLayer.visible = value && isValid; + if (!value) + this.routeShowing = false; + this.notify('routingOpen'); + } + + get routeShowing() { + return this._routeShowing; + } + + set routeShowing(value) { + this._routeShowing = value; + this.notify('routeShowing'); + } + + _init(params) { + super._init(); + + let mapType = params.mapType || this._getStoredMapType(); + delete params.mapType; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._storeId = 0; + this.view = this._initView(); + this._initLayers(); + + this.setMapType(mapType); + + if (Application.normalStartup) + this._goToStoredLocation(); + + this.shapeLayerStore = new Gio.ListStore(GObject.TYPE_OBJECT); + + Application.geoclue.connect('location-changed', + this._updateUserLocation.bind(this)); + Application.geoclue.connect('notify::state', + this._updateUserLocation.bind(this)); + this._connectRouteSignals(); + + // set dark background if we start up in dark theme + this._setBackgroundPatternIfNeeded(); + } + + _initScale(view) { + this._scale = new Champlain.Scale({ visible: true }); + this._scale.connect_view(view); + + if (Utils.getMeasurementSystem() === Utils.METRIC_SYSTEM) + this._scale.unit = Champlain.Unit.KM; + else + this._scale.unit = Champlain.Unit.MILES; + + this._scale.set_x_expand(true); + this._scale.set_y_expand(true); + this._scale.set_x_align(Clutter.ActorAlign.START); + this._scale.set_y_align(Clutter.ActorAlign.END); + view.add_child(this._scale); + } + + _initView() { + let view = this.get_view(); + + view.min_zoom_level = MapMinZoom; + view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + view.reactive = true; + view.kinetic_mode = true; + view.horizontal_wrap = true; + + view.connect('notify::latitude', this._onViewMoved.bind(this)); + view.connect('notify::longitude', + () => this._setBackgroundPatternIfNeeded()); + // switching map type will set view min-zoom-level from map source + view.connect('notify::min-zoom-level', () => { + if (view.min_zoom_level < MapMinZoom) { + view.min_zoom_level = MapMinZoom; + } + }); + + // if dark tiles is available, setup handler to switch style + if (Service.getService().tiles.streetDark) { + Application.settings.connect('changed::night-mode', + this._onNightModeChanged.bind(this)); + } + + // if hybrid aerial tiles are available, setup handler to toggle + if (Service.getService().tiles.hybridAerial) { + Application.settings.connect('changed::hybrid-aerial', + this._onHybridAerialChanged.bind(this)); + } + + this._gtkSettings = Gtk.Settings.get_default(); + this._gtkSettings.connect('notify::gtk-application-prefer-dark-theme', + this._onPreferDarkThemeChanged.bind(this)); + + this._initScale(view); + return view; + } + + /* handler to draw background for dark theme, + * these three functions should not be needed later with a native GTK + * widget (Shumate) + */ + _drawDarkBackground(canvas, cr, width, height) { + // set this arbitrarily to try to match the typical dark tile set + cr.setSourceRGB(0.2, 0.2, 0.2); + cr.rectangle(0, 0, width, height); + cr.fillPreserve(); + + return true; + } + + _createDarkBackground() { + this._darkBackground = new Clutter.Canvas(); + this._darkBackground.set_size(512, 512); + this._darkBackground.connect('draw', + this._drawDarkBackground.bind(this)); + this._darkBackground.invalidate(); + } + + _isWrappingAround() { + let bbox = this.view.get_bounding_box(); + + return bbox.left > bbox.right; + } + + _setBackgroundPatternIfNeeded() { + if (this._gtkSettings.gtk_application_prefer_dark_theme && + !this._isWrappingAround()) { + if (!this._darkBackgroud) + this._createDarkBackground(); + this.view.set_background_pattern(this._darkBackground); + this._customBackgroundSet = true; + } else if (this._customBackgroundSet) { + this.view.background_pattern = null; + this._customBackgroundSet = false; + } + } + + _onPreferDarkThemeChanged() { + this._setBackgroundPatternIfNeeded(); + } + + _onNightModeChanged() { + if (this._mapType === MapType.STREET) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('night-mode')) + this.view.map_source = MapSource.createStreetDarkSource(); + else + this.view.map_source = MapSource.createStreetSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + _onHybridAerialChanged() { + if (this._mapType === MapType.AERIAL) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('hybrid-aerial')) + this.view.map_source = MapSource.createHybridAerialSource(); + else + this.view.map_source = MapSource.createAerialSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + /* create and store a route layer, pass true to get a dashed line */ + _createRouteLayer(dashed, lineColor, width) { + let red = Color.parseColor(lineColor, 0); + let green = Color.parseColor(lineColor, 1); + let blue = Color.parseColor(lineColor, 2); + // Clutter uses a 0-255 range for color components + let strokeColor = new Clutter.Color({ red: red * 255, + blue: blue * 255, + green: green * 255, + alpha: 255 }); + let routeLayer = new Champlain.PathLayer({ stroke_width: width, + stroke_color: strokeColor }); + if (dashed) + routeLayer.set_dash([DASHED_ROUTE_LINE_FILLED_LENGTH, + DASHED_ROUTE_LINE_GAP_LENGTH]); + + this._routeLayers.push(routeLayer); + this.view.add_layer(routeLayer); + + return routeLayer; + } + + _clearRouteLayers() { + this._routeLayers.forEach((routeLayer) => { + routeLayer.remove_all(); + routeLayer.visible = false; + this.view.remove_layer(routeLayer); + }); + + this._routeLayers = []; + } + + _initLayers() { + let mode = Champlain.SelectionMode.SINGLE; + + this._userLocationLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._userLocationLayer); + + this._placeLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._placeLayer); + + this._instructionMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._instructionMarkerLayer); + + this._annotationMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._annotationMarkerLayer); + + ShapeLayer.SUPPORTED_TYPES.push(GeoJSONShapeLayer.GeoJSONShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(KmlShapeLayer.KmlShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(GpxShapeLayer.GpxShapeLayer); + + this._routeLayers = []; + } + + _ensureInstructionLayerAboveRouteLayers() { + this.view.remove_layer(this._instructionMarkerLayer); + this.view.add_layer(this._instructionMarkerLayer); + } + + _connectRouteSignals() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + let query = Application.routeQuery; + + route.connect('update', () => { + this.showRoute(route); + this.routeShowing = true; + }); + route.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('update', () => this._showTransitPlan(transitPlan)); + transitPlan.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('itinerary-selected', (obj, itinerary) => { + this._showTransitItinerary(itinerary); + this.routeShowing = true; + }); + transitPlan.connect('itinerary-deselected', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + + query.connect('notify', () => this.routingOpen = query.isValid()); + } + + _getStoredMapType() { + let mapType = Application.settings.get('map-type'); + + // make sure it's a valid map type + for (let type in MapType) { + if (mapType === MapType[type]) { + return mapType; + } + } + + return MapType.STREET; + } + + getMapType() { + return this._mapType; + } + + setMapType(mapType) { + if (this._mapType && this._mapType === mapType) + return; + + let overlay_sources = this.view.get_overlay_sources(); + + this._mapType = mapType; + + if (mapType !== MapType.LOCAL) { + let tiles = Service.getService().tiles; + + if (mapType === MapType.AERIAL && tiles.aerial) { + if (tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this.view.map_source = MapSource.createHybridAerialSource(); + } else { + this.view.map_source = MapSource.createAerialSource(); + } + } else { + if (tiles.streetDark && + Application.settings.get('night-mode')) { + this.view.map_source = MapSource.createStreetDarkSource(); + } else { + this.view.map_source = MapSource.createStreetSource(); + } + } + if (!this._attribution) { + this._attribution = new MapSource.AttributionLogo(this.view); + this.view.add_child(this._attribution); + } + + this._attribution.setSource(this.view.map_source); + + Application.settings.set('map-type', mapType); + } else { + let renderer = new Champlain.ImageRenderer(); + let source = new Maps.FileTileSource({ + path: Utils.getBufferText(Application.application.local_tile_path), + renderer: renderer, + tile_size: Application.application.local_tile_size || 512 + }); + try { + source.prepare(); + + this.view.map_source = source; + this.view.world = source.world; + let [lat, lon] = this.view.world.get_center(); + this.view.center_on(lat, lon); + } catch(e) { + this.setMapType(MapType.STREET); + Application.application.local_tile_path = false; + Application.application.notify('connected'); + Utils.showDialog(e.message, Gtk.MessageType.ERROR, this._mainWindow); + } + } + + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + + this.emit("map-type-changed", mapType); + } + + toggleScale() { + this._scale.visible = !this._scale.visible; + } + + _checkIfFileSizeNeedsConfirmation(files) { + let confirmLoad = false; + let totalFileSizeMB = 0; + files.forEach((file) => { + totalFileSizeMB += file.query_info(Gio.FILE_ATTRIBUTE_STANDARD_SIZE, + 0, null).get_size(); + }); + totalFileSizeMB = totalFileSizeMB / (1024 * 1024); + if (totalFileSizeMB > FILE_SIZE_LIMIT_MB) { + confirmLoad = true; + } + + return {'confirmLoad': confirmLoad, 'totalFileSizeMB': totalFileSizeMB}; + } + + _onShapeLoad(error, bbox, layer) { + if (error) { + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + } else { + bbox.compose(layer.bbox); + } + + this._remainingFilesToLoad--; + if (this._remainingFilesToLoad === 0) { + this.gotoBBox(bbox); + } + } + + openShapeLayers(files) { + let result = this._checkIfFileSizeNeedsConfirmation(files); + if (result.confirmLoad) { + let totalFileSizeMB = result.totalFileSizeMB; + + let dialog = new Gtk.MessageDialog ({ + transient_for: this._mainWindow, + modal: true, + buttons: Gtk.ButtonsType.OK_CANCEL, + text: _("Do you want to continue?"), + secondary_text: _("You are about to open files with a total " + + "size of %s MB. This could take some time to" + + " load").format(totalFileSizeMB.toLocaleString(undefined, + { maximumFractionDigits: 1 })) + }); + + dialog.connect('response', (widget, responseId) => { + if (responseId === Gtk.ResponseType.OK) { + this._loadShapeLayers(files); + } + dialog.destroy(); + }); + dialog.show_all(); + } else { + this._loadShapeLayers(files); + } + return true; + } + + _loadShapeLayers(files) { + let bbox = new Champlain.BoundingBox(); + this._remainingFilesToLoad = files.length; + + files.forEach((file) => { + try { + let i = this._findShapeLayerIndex(file); + let layer = (i > -1) ? this.shapeLayerStore.get_item(i) : null; + if (!layer) { + layer = ShapeLayer.newFromFile(file, this); + if (!layer) + throw new Error(_("File type is not supported")); + layer.load(this._onShapeLoad.bind(this), bbox); + this.shapeLayerStore.append(layer); + } + } catch (e) { + Utils.debug(e); + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + removeShapeLayer(shapeLayer) { + shapeLayer.unload(); + let i = this._findShapeLayerIndex(shapeLayer.file); + this.shapeLayerStore.remove(i); + } + + _findShapeLayerIndex(file) { + for (let i = 0; i < this.shapeLayerStore.get_n_items(); i++) + if (this.shapeLayerStore.get_item(i).file.equal(file)) + return i; + return -1; + } + + goToGeoURI(uri) { + try { + let location = new Location.Location({ heading: -1 }); + location.set_from_uri(uri); + + let place = new Place.Place({ location: location, + name: location.description, + store: false }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } catch(e) { + let msg = _("Failed to open GeoURI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + Utils.debug("failed to open GeoURI: %s".format(e.message)); + } + } + + goToHttpURL(url) { + Place.parseHttpURL(url, (place, error) => { + if (place) { + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } else { + Utils.showDialog(error, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + gotoUserLocation(animate) { + if (!this._userLocation) + return; + + this.emit('going-to-user-location'); + Utils.once(this._userLocation, "gone-to", + () => this.emit('gone-to-user-location')); + this._userLocation.goTo(animate); + } + + gotoAntipode() { + let lat = -this.view.latitude; + let lon = this.view.longitude > 0 ? + this.view.longitude - 180 : this.view.longitude + 180; + let place = + new Place.Place({ location: new Location.Location({ latitude: lat, + longitude: lon }), + initialZoom: this.view.zoom_level }); + + new MapWalker.MapWalker(place, this).goTo(true); + } + + userLocationVisible() { + let box = this.view.get_bounding_box(); + + return box.covers(this._userLocation.latitude, this._userLocation.longitude); + } + + _updateUserLocation() { + if (!Application.geoclue.place) + return; + + if (Application.geoclue.state !== Geoclue.State.ON) { + if (this._userLocation) + this._userLocation.visible = false; + return; + } + + if (!this._userLocation) { + let place = Application.geoclue.place; + this._userLocation = new UserLocationMarker.UserLocationMarker({ place: place, + mapView: this }); + this._userLocationLayer.remove_all(); + this._userLocation.addToLayer(this._userLocationLayer); + } + + this._userLocation.visible = true; + + this.emit('user-location-changed'); + } + + _storeLocation() { + let zoom = this.view.zoom_level; + let location = [this.view.latitude, this.view.longitude]; + + /* protect agains situations where the Champlain view was already + * disposed, in this case zoom will be set to the GObject property + * getter + */ + if (!isNaN(zoom)) { + Application.settings.set('zoom-level', zoom); + Application.settings.set('last-viewed-location', location); + } else { + Utils.debug('Failed to extract location to store'); + } + } + + _goToStoredLocation() { + let location = Application.settings.get('last-viewed-location'); + + if (location.length === 2) { + let [lat, lon] = location; + let zoom = Application.settings.get('zoom-level'); + + if (zoom >= this.view.min_zoom_level && + zoom <= this.view.max_zoom_level) + this.view.zoom_level = Application.settings.get('zoom-level'); + else + Utils.debug('Invalid initial zoom level: ' + zoom); + + if (lat >= MIN_LATITUDE && lat <= MAX_LATITUDE && + lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE) + this.view.center_on(location[0], location[1]); + else + Utils.debug('Invalid initial coordinates: ' + lat + ', ' + lon); + } else { + /* bounding box. for backwards compatibility, not used anymore */ + let bbox = new Champlain.BoundingBox({ top: location[0], + bottom: location[1], + left: location[2], + right: location[3] }); + this.view.connect("notify::realized", () => { + if (this.view.realized) + this.gotoBBox(bbox, true); + }); + } + } + + gotoBBox(bbox, linear) { + if (!bbox.is_valid()) { + Utils.debug('Bounding box is invalid'); + return; + } + + let [lat, lon] = bbox.get_center(); + let place = new Place.Place({ + location: new Location.Location({ latitude : lat, + longitude : lon }), + bounding_box: new Geocode.BoundingBox({ top : bbox.top, + bottom : bbox.bottom, + left : bbox.left, + right : bbox.right }) + }); + new MapWalker.MapWalker(place, this).goTo(true, linear); + } + + showTurnPoint(turnPoint) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = null; + if (turnPoint.isStop()) + return; + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showTransitStop(transitStop, transitLeg) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ transitStop: transitStop, + transitLeg: transitLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showContact(contact) { + let places = contact.get_places(); + if (places.length === 0) + return; + + this._placeLayer.remove_all(); + places.forEach((p) => { + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + }); + + if (places.length > 1) + this.gotoBBox(contact.bounding_box); + else + new MapWalker.MapWalker(places[0], this).goTo(true); + } + + _showStoredRoute(stored) { + let query = Application.routeQuery; + let route = Application.routingDelegator.graphHopper.route; + + Application.routingDelegator.graphHopper.storedRoute = stored.route; + + let resetId = route.connect('reset', function() { + route.disconnect(resetId); + query.freeze_notify(); + + let storedLast = stored.places.length - 1; + query.points[0].place = stored.places[0]; + query.points[1].place = stored.places[storedLast]; + query.transportation = stored.transportation; + + for (let i = 1; i < storedLast; i++) { + let point = query.addPoint(i); + point.place = stored.places[i]; + } + + query.thaw_notify(); + }); + route.reset(); + } + + showPlace(place, animation) { + this._placeLayer.remove_all(); + + if (place instanceof StoredRoute.StoredRoute) { + this._showStoredRoute(place); + return; + } + + this.routingOpen = false; + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(placeMarker); + placeMarker.goToAndSelect(animation); + } + + showRoute(route) { + let routeLayer; + + this._clearRouteLayers(); + this._placeLayer.remove_all(); + + routeLayer = this._createRouteLayer(false, TURN_BY_TURN_ROUTE_COLOR, + ROUTE_LINE_WIDTH); + route.path.forEach((polyline) => routeLayer.add_node(polyline)); + this.routingOpen = true; + + this._ensureInstructionLayerAboveRouteLayers(); + + this._showDestinationTurnpoints(); + this.gotoBBox(route.bbox); + } + + _showDestinationTurnpoints() { + let route = Application.routingDelegator.graphHopper.route; + let query = Application.routeQuery; + let pointIndex = 0; + + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + route.turnPoints.forEach((turnPoint) => { + if (turnPoint.isStop()) { + let queryPoint = query.filledPoints[pointIndex]; + let destinationMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + queryPoint: queryPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(destinationMarker); + pointIndex++; + } + }, this); + } + + _showTransitItinerary(itinerary) { + this.gotoBBox(itinerary.bbox); + this._clearRouteLayers(); + this._placeLayer.remove_all(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + + itinerary.legs.forEach((leg, index) => { + let dashed = !leg.transit; + let color = leg.color; + let outlineColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > + OUTLINE_LUMINANCE_THREASHHOLD; + let routeLayer; + let outlineRouteLayer; + + /* draw an outline by drawing a background path layer if needed + * TODO: maybe we should add support for outlined path layers in + * libchamplain */ + if (hasOutline) + outlineRouteLayer = this._createRouteLayer(dashed, outlineColor, + ROUTE_LINE_WIDTH + 2); + routeLayer = this._createRouteLayer(dashed, color, ROUTE_LINE_WIDTH); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way */ + if (index > 0 && !leg.transit) { + let previousLeg = itinerary.legs[index - 1]; + let lastPoint = previousLeg.polyline.last(); + + routeLayer.add_node(lastPoint); + } + + if (hasOutline) { + leg.polyline.forEach((function (polyline) { + outlineRouteLayer.add_node(polyline); + })); + } + leg.polyline.forEach((function (polyline) { + routeLayer.add_node(polyline); + })); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one */ + if (index < itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + }); + + this._ensureInstructionLayerAboveRouteLayers(); + + itinerary.legs.forEach((leg, index) => { + let previousLeg = index === 0 ? null : itinerary.legs[index - 1]; + + /* add start marker */ + let start; + if (!leg.transit) { + start = new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg, + mapView: this }); + } else { + start = new TransitBoardMarker.TransitBoardMarker({ leg: leg, + mapView: this }); + } + + this._instructionMarkerLayer.add_marker(start); + }); + + /* add arrival marker */ + let lastLeg = itinerary.legs.last(); + let arrival = new TransitArrivalMarker.TransitArrivalMarker({ leg: lastLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(arrival); + + this.routingOpen = true; + } + + _showTransitPlan(plan) { + this.gotoBBox(plan.bbox); + } + + _onViewMoved() { + this.emit('view-moved'); + if (this._storeId !== 0) + return; + + this._storeId = Mainloop.timeout_add(_LOCATION_STORE_TIMEOUT, () => { + this._storeId = 0; + this._storeLocation(); + }); + } + + onSetMarkerSelected(selectedMarker) { + this.emit('marker-selected', selectedMarker); + } +}); diff --git a/src/mapWalker.js b/src/mapWalker.js new file mode 100644 index 00000000..aad724ba --- /dev/null +++ b/src/mapWalker.js @@ -0,0 +1,197 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Utils = imports.utils; + +const _MAX_DISTANCE = 19850; // half of Earth's circumference (km) +const _MIN_ANIMATION_DURATION = 2000; // msec +const _MAX_ANIMATION_DURATION = 5000; // msec + +var MapWalker = GObject.registerClass({ + Signals: { + 'gone-to': { } + } +}, class MapWalker extends GObject.Object { + + _init(place, mapView) { + this.place = place; + this._mapView = mapView; + this._view = mapView.view; + this._boundingBox = this._createBoundingBox(this.place); + super._init(); + } + + _createBoundingBox(place) { + if (place.bounding_box !== null) { + return new Champlain.BoundingBox({ top: place.bounding_box.top, + bottom: place.bounding_box.bottom, + left: place.bounding_box.left, + right: place.bounding_box.right }); + } else + return null; + } + + // Zoom to the maximal zoom-level that fits the place type + zoomToFit() { + if (this._boundingBox !== null && this._boundingBox.is_valid()) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.ensure_visible(this._boundingBox, false); + } else { + let zoom; + + if (this.place.initialZoom) { + zoom = this.place.initialZoom; + } else { + switch (this.place.place_type) { + case Geocode.PlaceType.STREET: + zoom = 16; + break; + case Geocode.PlaceType.TOWN: + zoom = 11; + break; + case Geocode.PlaceType.COUNTRY: + zoom = 6; + break; + default: + zoom = this._view.max_zoom_level; + break; + } + } + this._view.zoom_level = zoom; + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + } + } + + goTo(animate, linear) { + Utils.debug('Going to ' + [this.place.name, + this.place.location.latitude, + this.place.location.longitude].join(' ')); + this._mapView.emit('going-to'); + + if (!animate) { + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + this.emit('gone-to'); + return; + } + + let fromLocation = new Location.Location({ latitude: this._view.get_center_latitude(), + longitude: this._view.get_center_longitude() }); + this._updateGoToDuration(fromLocation); + + if (linear) { + this._view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + Utils.once(this._view, 'animation-completed', + this.zoomToFit.bind(this)); + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + } else { + /* Lets first ensure that both current and destination location are visible + * before we start the animated journey towards destination itself. We do this + * to create the zoom-out-then-zoom-in effect that many map implementations + * do. This not only makes the go-to animation look a lot better visually but + * also give user a good idea of where the destination is compared to current + * location. + */ + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_CUBIC; + this._ensureVisible(fromLocation); + + Utils.once(this._view, 'animation-completed', () => { + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_OUT_CUBIC; + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + + Utils.once(this._view, 'animation-completed::go-to', () => { + this.zoomToFit(); + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + this.emit('gone-to'); + }); + }); + } + } + + _ensureVisible(fromLocation) { + let visibleBox = null; + + if (this._boundingBox !== null && this._boundingBox.is_valid()) { + visibleBox = this._boundingBox.copy(); + + visibleBox.extend(fromLocation.latitude, fromLocation.longitude); + } else { + visibleBox = new Champlain.BoundingBox({ left: 180, + right: -180, + bottom: 90, + top: -90 }); + + [fromLocation, this.place.location].forEach((location) => { + visibleBox.left = Math.min(visibleBox.left, location.longitude); + visibleBox.right = Math.max(visibleBox.right, location.longitude); + visibleBox.bottom = Math.min(visibleBox.bottom, location.latitude); + visibleBox.top = Math.max(visibleBox.top, location.latitude); + }); + } + + this._view.ensure_visible(visibleBox, true); + } + + _boxCovers(coverBox) { + if (this._boundingBox === null) + return false; + + if (coverBox.left > this._boundingBox.left) + return false; + + if (coverBox.right < this._boundingBox.right) + return false; + + if (coverBox.top < this._boundingBox.top) + return false; + + if (coverBox.bottom > this._boundingBox.bottom) + return false; + + return true; + } + + _updateGoToDuration(fromLocation) { + let toLocation = this.place.location; + + let distance = fromLocation.get_distance_from(toLocation); + let duration = (distance / _MAX_DISTANCE) * _MAX_ANIMATION_DURATION; + + // Clamp duration + duration = Math.max(_MIN_ANIMATION_DURATION, + Math.min(duration, _MAX_ANIMATION_DURATION)); + + // We divide by two because Champlain treats both go_to and + // ensure_visible as 'goto' journeys with its own duration. + this._view.goto_animation_duration = duration / 2; + } +}); diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..5cc7e5e3 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,22 @@ +script_conf = configuration_data() +script_conf.set('GJS', find_program('gjs').path()) +script_conf.set('PACKAGE_VERSION', version) +script_conf.set('libdir', libdir) +script_conf.set('prefix', prefix) + +configure_file( + input: app_id + '.in', + output: app_id, + configuration: script_conf, + install: true, + install_dir: pkgdatadir +) + +gnome.compile_resources( + app_id + '.src', + app_id + '.src.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + source_dir: 'geojson-vt' +) diff --git a/src/org.gnome.Maps.in b/src/org.gnome.Maps.in new file mode 100755 index 00000000..1cd74738 --- /dev/null +++ b/src/org.gnome.Maps.in @@ -0,0 +1,5 @@ +#!@GJS@ +imports.package.start({ name: "gnome-maps", + version: "@PACKAGE_VERSION@", + prefix: "@prefix@", + libdir: "@libdir@" }); diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml new file mode 100644 index 00000000..af1f606b --- /dev/null +++ b/src/org.gnome.Maps.src.gresource.xml @@ -0,0 +1,126 @@ + + + + accountListBox.js + address.js + application.js + checkIn.js + checkInDialog.js + color.js + contactPlace.js + contextMenu.js + epaf.js + exportViewDialog.js + facebookBackend.js + favoritesPopover.js + foursquareBackend.js + foursquareGoaAuthorizer.js + geoclue.js + geocode.js + geoJSONShapeLayer.js + geoJSONSource.js + geoJSONStyle.js + gfx.js + gpxShapeLayer.js + graphHopper.js + graphHopperGeocode.js + graphHopperTransit.js + headerBar.js + hvt.js + http.js + instructionRow.js + kmlShapeLayer.js + layersPopover.js + location.js + locationServiceDialog.js + longPrintLayout.js + main.js + mainWindow.js + mapBubble.js + mapMarker.js + mapSource.js + mapView.js + mapWalker.js + osmAccountDialog.js + osmConnection.js + osmEdit.js + osmEditDialog.js + osmNames.js + osmTypeSearchEntry.js + osmTypeListRow.js + osmTypePopover.js + osmTypes.js + osmUtils.js + overpass.js + photonGeocode.js + photonParser.js + place.js + placeBar.js + placeButtons.js + placeDialog.js + placeEntry.js + placeFormatter.js + placeListRow.js + placeMarker.js + placePopover.js + placeStore.js + placeView.js + placeViewImage.js + printLayout.js + printOperation.js + route.js + routeEntry.js + routeQuery.js + routingDelegator.js + searchPopover.js + serviceBackend.js + settings.js + sendToDialog.js + service.js + shapeLayer.js + shortPrintLayout.js + sidebar.js + socialPlace.js + socialPlaceListBox.js + socialPlaceMatcher.js + storedRoute.js + time.js + togeojson/togeojson.js + transit.js + transitArrivalMarker.js + transitArrivalRow.js + transitBoardMarker.js + transitItineraryRow.js + transitLegRow.js + transitMoreRow.js + transitOptions.js + transitOptionsPanel.js + transitPlan.js + transitPrintLayout.js + transitRouter.js + transitRouteLabel.js + transitStopRow.js + transitWalkMarker.js + translations.js + turnPointMarker.js + userLocationMarker.js + utils.js + urls.js + wikipedia.js + xmldom/dom.js + xmldom/domparser.js + xmldom/sax.js + zoomInDialog.js + clip.js + convert.js + index.js + simplify.js + tile.js + transform.js + wrap.js + transitplugins/goMetro.js + transitplugins/opendataCH.js + transitplugins/openTripPlanner.js + transitplugins/resrobot.js + + diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js new file mode 100644 index 00000000..c93cad27 --- /dev/null +++ b/src/osmAccountDialog.js @@ -0,0 +1,216 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const WebKit2 = imports.gi.WebKit2; + +const Application = imports.application; + +var Response = { + SIGNED_IN: 0 +}; + +var OSMAccountDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-account-dialog.ui', + InternalChildren: ['stack', + 'emailEntry', + 'passwordEntry', + 'signInButton', + 'signInSpinner', + 'signUpLinkButton', + 'resetPasswordLabel', + 'verifyGrid', + 'verificationEntry', + 'verifyButton', + 'verificationFailedLabel', + 'signedInUserLabel', + 'signOutButton'], +}, class OSMAccountDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + this._closeOnSignIn = params.closeOnSignIn; + delete params.closeOnSignIn; + + super._init(params); + + this._emailEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('activate', + this._onPasswordActivated.bind(this)); + this._signInButton.connect('clicked', + this._onSignInButtonClicked.bind(this)); + this._verifyButton.connect('clicked', + this._onVerifyButtonClicked.bind(this)); + this._verificationEntry.connect('changed', + this._onVerificationEntryChanged.bind(this)); + this._verificationEntry.connect('activate', + this._onVerificationEntryActivated.bind(this)); + this._signOutButton.connect('clicked', + this._onSignOutButtonClicked.bind(this)); + + /* if the user is logged in, show the logged-in view */ + if (Application.osmEdit.isSignedIn) { + this._signedInUserLabel.label = Application.osmEdit.username; + this._stack.visible_child_name = 'logged-in'; + } + + /* initialize verification web view, we do it programmatically rather + * declare it in the .ui file to be able to enable WebKit sandboxing + */ + let webContext = WebKit2.WebContext.get_default(); + + webContext.set_sandbox_enabled(true); + this._verifyView = WebKit2.WebView.new_with_context(webContext); + this._verifyView.visible = true; + this._verifyView.halign = Gtk.Align.FILL; + this._verifyView.height_request = 150; + this._verifyGrid.attach(this._verifyView, 0, 0, 1, 1); + } + + _onCredentialsChanged() { + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + // make sign in button sensitive if credential have been entered + this._signInButton.sensitive = + email && email.length > 0 && password && password.length > 0; + } + + _onSignInButtonClicked() { + this._performSignIn(); + } + + _onPasswordActivated() { + /* if username and password was entered, proceed with sign-in */ + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + if (email && email.length > 0 && password && password.length > 0) + this._performSignIn(); + } + + _performSignIn() { + /* turn on signing in spinner and desensisize credential entries */ + this._signInSpinner.visible = true; + this._signInButton.sensitive = false; + this._emailEntry.sensitive = false; + this._passwordEntry.sensitive = false; + this._signUpLinkButton.visible = false; + + Application.osmEdit.performOAuthSignIn(this._emailEntry.text, + this._passwordEntry.text, + this._onOAuthSignInPerformed.bind(this)); + } + + _onOAuthSignInPerformed(success, verificationPage) { + if (success) { + /* switch to the verification view and show the verification + page */ + this._verifyView.load_html(verificationPage, + 'https://www.openstreetmap.org/'); + this._stack.visible_child_name = 'verify'; + } else { + /* clear password entry */ + this._passwordEntry.text = ''; + /* show the password reset link */ + this._resetPasswordLabel.visible = true; + } + + this._signInSpinner.visible = false; + /* re-sensisize credential entries */ + this._emailEntry.sensitive = true; + this._passwordEntry.sensitive = true; + } + + _onVerifyButtonClicked() { + this._performVerification(); + } + + _performVerification() { + /* allow copying the leading space between the "The verification is" + label and the code */ + let verificationCode = this._verificationEntry.text.trim(); + + /* Since the text shown on OSM's OAuth authorization verification form + is a bit unclear with a trailing period after the verification code, + let's strip that off if the user copied that over. */ + if (verificationCode.charAt(verificationCode.length - 1) === '.') { + verificationCode = verificationCode.slice(0, -1); + } + + Application.osmEdit.requestOAuthAccessToken(verificationCode, + this._onOAuthAccessTokenRequested.bind(this)); + } + + _onVerificationEntryChanged() { + this._verifyButton.sensitive = + this._verificationEntry.text && + this._verificationEntry.text.length > 0; + } + + _onVerificationEntryActivated() { + /* proceed with verification if a code has been entered */ + let verificationCode = this._verificationEntry.text; + + if (verificationCode && verificationCode.length > 0) + this._performVerification(); + } + + _onOAuthAccessTokenRequested(success) { + if (success) { + /* update the username label */ + this._signedInUserLabel.label = Application.osmEdit.username; + + if (this._closeOnSignIn) { + this.response(Response.SIGNED_IN); + } else { + /* switch to the logged in view and reset the state in case + the user signs out and start over again */ + this._resetPasswordLabel.visible = false; + this._verificationFailedLabel = false; + this._signUpLinkButton.visible = true; + this._stack.visible_child_name = 'logged-in'; + } + } else { + /* switch back to the sign-in view, and show a label indicating + that verification failed */ + this._resetPasswordLabel.visible = false; + this._signUpLinkButton.visible = false; + this._verificationFailedLabel.visible = true; + this._signInButton.sensitive = true; + this._stack.visible_child_name = 'sign-in'; + } + /* reset verification code entry */ + this._verificationEntry.text = ''; + } + + _onSignOutButtonClicked() { + Application.osmEdit.signOut(); + this._stack.visible_child_name = 'sign-in'; + } +}); diff --git a/src/osmConnection.js b/src/osmConnection.js new file mode 100644 index 00000000..e0d5f72d --- /dev/null +++ b/src/osmConnection.js @@ -0,0 +1,452 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Maps = imports.gi.GnomeMaps; +const Rest = imports.gi.Rest; +const Secret = imports.gi.Secret; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://api.openstreetmap.org/api'; +const API_VERSION = '0.6'; + +/* OAuth constants */ +const CONSUMER_KEY = '2lbpDoED0ZspGssTBAJ8zOCtrtmUoX4KnmZUIWIK'; +const CONSUMER_SECRET = 'AO9BhDl9sJ33DjaZgQmYcNIuM3ZSml4xtugai6gE'; +const OAUTH_ENDPOINT_URL = 'https://www.openstreetmap.org/oauth'; +const LOGIN_URL = 'https://www.openstreetmap.org/login'; + +const SECRET_SCHEMA = new Secret.Schema("org.gnome.Maps", + Secret.SchemaFlags.NONE, + { + } +); + +var OSMConnection = class OSMConnection { + + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + + /* OAuth proxy used for making OSM uploads */ + this._callProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + BASE_URL + '/' + API_VERSION, + false); + Maps.osm_init(); + } + + getOSMObject(type, id, callback, cancellable) { + let url = this._getQueryUrl(type, id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + cancellable.connect(() => { + this._session.cancel_message(request, Soup.STATUS_CANCELLED); + }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + callback(false, message.status_code, null, type, null); + return; + } + + try { + let object = Maps.osm_parse (message.response_body.data, + message.response_body.length); + callback(true, message.status_code, object, type, null); + } catch (e) { + Utils.debug(e); + callback(false, message.status_code, null, type, e); + } + }); + } + + _getQueryUrl(type, id) { + return BASE_URL + '/' + API_VERSION + '/' + type + '/' + id; + } + + openChangeset(comment, callback) { + /* we assume that this would only be called if there's already been an + OAuth access token enrolled, so, if the currently instantiated + proxy instance doesn't have a token set, we could safely count on + it being present in the keyring */ + if (this._callProxy.get_token() === null) { + Secret.password_lookup(SECRET_SCHEMA, {}, null, (s, res) => { + this._onPasswordLookedUp(res, + comment, + callback); + }); + } else { + this._doOpenChangeset(comment, callback); + } + } + + _onPasswordLookedUp(result, comment, callback) { + let password = Secret.password_lookup_finish(result); + + if (password) { + let token = password.split(':')[0]; + let secret = password.split(':')[1]; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + this._doOpenChangeset(comment, callback); + } else { + callback(false, null, null); + } + } + + _doOpenChangeset(comment, callback) { + let changeset = + Maps.OSMChangeset.new(comment, 'gnome-maps ' + pkg.version); + let xml = changeset.serialize(); + + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + call.set_method('PUT'); + call.set_function('/changeset/create'); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetOpened(call, callback); }); + } + + _onChangesetOpened(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + let changesetId = parseInt(call.get_payload()); + callback(true, call.get_status_code(), changesetId); + } + + uploadObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('PUT'); + call.set_function(this._getCreateOrUpdateFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectUploaded(call, callback); }); + } + + _onObjectUploaded(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + deleteObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('DELETE'); + call.set_function(this._getDeleteFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectDeleted(call, callback); }); + } + + _onObjectDeleted(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + closeChangeset(changesetId, callback) { + let call = this._callProxy.new_call(); + call.set_method('PUT'); + call.set_function(this._getCloseChangesetFunction(changesetId)); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetClosed(call, callback); }); + } + + _onChangesetClosed(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + _getCloseChangesetFunction(changesetId) { + return '/changeset/' + changesetId + '/close'; + } + + _getCreateOrUpdateFunction(object, type) { + if (object.id) + return type + '/' + object.id; + else + return type + '/create'; + } + + _getDeleteFunction(object, type) { + return type + '/' + id; + } + + requestOAuthToken(callback) { + /* OAuth proxy used for enrolling access tokens */ + this._oauthProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + OAUTH_ENDPOINT_URL, false); + this._oauthProxy.request_token_async('request_token', 'oob', (p, error, w, u) => { + this._onRequestOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onRequestOAuthToken(error, callback) { + if (error) { + Utils.debug(error); + callback(false); + return; + } + + this._oauthToken = this._oauthProxy.get_token(); + this._oauthTokenSecret = this._oauthProxy.get_token_secret(); + callback(true); + } + + authorizeOAuthToken(username, password, callback) { + /* get login session ID */ + let loginUrl = LOGIN_URL + '?cookie_test=true'; + let uri = new Soup.URI(loginUrl); + let msg = new Soup.Message({method: 'GET', uri: uri}); + + this._session.queue_message(msg, (obj, message) => { + this._onLoginFormReceived(message, username, password, callback); + }); + } + + _onLoginFormReceived(message, username, password, callback) { + if (message.status_code !== Soup.Status.OK) { + callback(false); + return; + } + + let osmSessionID = + this._extractOSMSessionID(message.response_headers); + let osmSessionToken = + this._extractToken(message.response_body.data); + + if (osmSessionID === null || osmSessionToken === null) { + callback(false, null); + return; + } + + this._login(username, password, osmSessionID, osmSessionToken, callback); + } + + _login(username, password, sessionId, token, callback) { + /* post login form */ + let msg = Soup.form_request_new_from_hash('POST', LOGIN_URL, + {username: username, + password: password, + referer: '/', + commit: 'Login', + authenticity_token: token}); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', '_osm_session=' + sessionId); + msg.flags |= Soup.MessageFlags.NO_REDIRECT; + + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.MOVED_TEMPORARILY) + this._fetchAuthorizeForm(username, sessionId, callback); + else + callback(false, null); + }); + + } + + _fetchAuthorizeForm(username, sessionId, callback) { + let auth = '/authorize?oauth_token='; + let authorizeUrl = OAUTH_ENDPOINT_URL + auth + this._oauthToken; + let uri = new Soup.URI(authorizeUrl); + let msg = new Soup.Message({uri: uri, method: 'GET'}); + + msg.request_headers.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.OK) { + let token = this._extractToken(message.response_body.data); + this._postAuthorizeForm(username, sessionId, token, callback); + } else { + callback(false, null); + } + }); + } + + _postAuthorizeForm(username, sessionId, token, callback) { + let authorizeUrl = OAUTH_ENDPOINT_URL + '/authorize'; + let msg = Soup.form_request_new_from_hash('POST', authorizeUrl, { + oauth_token: this._oauthToken, + oauth_callback: '', + authenticity_token: token, + allow_write_api: '1', + commit: 'Save changes' + }); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + + this._session.queue_message(msg, (obj, message) => { + if (msg.status_code === Soup.Status.OK) { + callback(true, message.response_body.data); + } else + callback(false, null); + }); + } + + requestOAuthAccessToken(code, callback) { + this._oauthProxy.access_token_async('access_token', code, (p, error, w, data) => { + this._onAccessOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onAccessOAuthToken(error, callback) { + if (error) { + callback(false); + return; + } + + let token = this._oauthProxy.token; + let secret = this._oauthProxy.token_secret; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + Secret.password_store(SECRET_SCHEMA, {}, Secret.COLLECTION_DEFAULT, + "OSM OAuth access token and secret", + this._oauthProxy.token + ":" + + this._oauthProxy.token_secret, null, + (source, result, userData) => { + this._onPasswordStored(result, callback); + }); + } + + _onPasswordStored(result, callback) { + let res = false; + if (result) + res = Secret.password_store_finish(result); + callback(res); + } + + signOut() { + /* clear token on call proxy, so it will use a new token if the user + signs in again (with a new access token) during this running + session */ + this._callProxy.token = null; + this._callProxy.token_secret = null; + + Secret.password_clear(SECRET_SCHEMA, {}, null, + this._onPasswordCleared.bind(this)); + } + + _onPasswordCleared(source, result) { + Secret.password_clear_finish(result); + } + + /* extract the session ID from the login form response headers */ + _extractOSMSessionID(responseHeaders) { + let cookie = responseHeaders.get('Set-Cookie'); + + if (cookie === null) + return null; + + let cookieParts = cookie.split(';'); + for (let cookiePart of cookieParts) { + let kvPair = cookiePart.trim().split('='); + let kv = kvPair; + + if (kv.length !== 2) { + continue; + } else if (kv[0] === '_osm_session') { + return kv[1]; + } + } + + return null; + } + + /* extract the authenticity token from the hidden input field of the login + form */ + _extractToken(messageBody) { + let regex = /.*authenticity_token.*value=\"([^\"]+)\".*/; + let lines = messageBody.split('\n'); + + for (let line of lines) { + let match = line.match(regex); + + if (match && match.length === 2) + return match[1]; + } + + return null; + } +}; + +/* + * Gets a status message (usually for an error case) + * to show for a given OSM server response. + */ +function getStatusMessage(statusCode) { + switch (statusCode) { + case Soup.Status.IO_ERROR: + case Soup.Status.UNAUTHORIZED: + /* setting the status in session.cancel_message still seems + to always give status IO_ERROR */ + return _("Incorrect user name or password"); + case Soup.Status.OK: + return _("Success"); + case Soup.Status.BAD_REQUEST: + return _("Bad request"); + case Soup.Status.NOT_FOUND: + return _("Object not found"); + case Soup.Status.CONFLICT: + return _("Conflict, someone else has just modified the object"); + case Soup.Status.GONE: + return _("Object has been deleted"); + case Soup.Status.PRECONDITION_FAILED: + return _("Way or relation refers to non-existing children"); + default: + return null; + } +} diff --git a/src/osmEdit.js b/src/osmEdit.js new file mode 100644 index 00000000..fa1a7e5d --- /dev/null +++ b/src/osmEdit.js @@ -0,0 +1,193 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Application = imports.application; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMConnection = imports.osmConnection; +const Utils = imports.utils; + +/* minimum zoom level at which to offer adding a location */ +var MIN_ADD_LOCATION_ZOOM_LEVEL = 16; + +var OSMEdit = class OSMEdit { + + constructor() { + this._osmConnection = new OSMConnection.OSMConnection(); + this._osmObject = null; // currently edited object + this._username = Application.settings.get('osm-username'); + this._isSignedIn = this._username !== null && this._username.length > 0; + } + + get object() { + return this._osmObject; + } + + createEditDialog(parentWindow, place) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + place: place + }); + + return dialog; + } + + createEditNewDialog(parentWindow, latitude, longitude) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + addLocation: true, + latitude: latitude, + longitude: longitude + }); + + return dialog; + } + + createAccountDialog(parentWindow, closeOnSignIn) { + let dialog = new OSMAccountDialog.OSMAccountDialog({ + transient_for: parentWindow, + modal: true, + closeOnSignIn: closeOnSignIn + }); + + return dialog; + } + + fetchObject(place, callback, cancellable) { + let osmType = Utils.osmTypeToString(place.osmType); + + /* reset currently edited object */ + this._osmObject = null; + this._osmConnection.getOSMObject(osmType, place.osm_id, + (function(success, status, osmObject, osmType) { + callback(success, status, osmObject, osmType); + }), cancellable); + } + + uploadObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._uploadObject.bind(this), callback); + } + + _onChangesetOpened(success, status, changesetId, object, type, action, callback) { + if (success) { + let osmType = Utils.osmTypeToString(type); + action(object, osmType, changesetId, callback); + } else { + callback(false, status); + } + } + + _openChangeset(object, type, comment, action, callback) { + this._osmConnection.openChangeset(comment, (success, status, changesetId) => { + this._onChangesetOpened(success, status, changesetId, object, type, action, callback); + }); + } + + _onObjectUploaded(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _uploadObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.uploadObject(object, type, changesetId, (success, status, response) => { + this._onObjectUploaded(success, status, response, changesetId, callback); + }); + } + + deleteObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._deleteObject.bind(this), callback); + } + + _onObjectDeleted(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _deleteObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.deleteObject(object, type, changesetId, (success, status, response) => { + this._onObjectDeleted(success, status, response, changesetId, callback); + }); + } + + _closeChangeset(changesetId, callback) { + this._osmConnection.closeChangeset(changesetId, callback); + } + + performOAuthSignIn(username, password, callback) { + this._osmConnection.requestOAuthToken((success) => { + if (success) + this._onOAuthTokenRequested(username, password, callback); + else + callback(false, null); + }); + } + + _onOAuthTokenRequested(username, password, callback) { + /* keep track of authorizing username */ + this._username = username; + this._osmConnection.authorizeOAuthToken(username, password, callback); + } + + requestOAuthAccessToken(code, callback) { + this._osmConnection.requestOAuthAccessToken(code, (success, token) => { + this._onOAuthAccessTokenRequested(success, callback); + }); + } + + _onOAuthAccessTokenRequested(success, callback) { + if (success) { + this._isSignedIn = true; + Application.settings.set('osm-username', this._username); + } else { + /* clear out username if verification was unsuccessful */ + this._username = null; + } + + callback(success); + } + + signOut() { + this._username = null; + this._isSignedIn = false; + + Application.settings.set('osm-username', ''); + this._osmConnection.signOut(); + } + + get isSignedIn() { + return this._isSignedIn; + } + + get username() { + return this._username; + } +}; diff --git a/src/osmEditDialog.js b/src/osmEditDialog.js new file mode 100644 index 00000000..d5647267 --- /dev/null +++ b/src/osmEditDialog.js @@ -0,0 +1,871 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const Maps = imports.gi.GnomeMaps; +const OSMConnection = imports.osmConnection; +const OSMTypes = imports.osmTypes; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const OSMUtils = imports.osmUtils; +const Utils = imports.utils; + +var Response = { + UPLOADED: 0, + DELETED: 1, + CANCELLED: 2, + ERROR: 3 +}; + +/* + * enumeration representing + * the different OSM editing + * field types + */ +const EditFieldType = { + TEXT: 0, + INTEGER: 1, + UNSIGNED_INTEGER: 2, + COMBO: 3, + ADDRESS: 4 +}; + +const _WIKI_BASE = 'https://wiki.openstreetmap.org/wiki/Key:'; + +var _osmWikipediaRewriteFunc = function(text) { + let wikipediaArticleFormatted = OSMUtils.getWikipediaOSMArticleFormatFromUrl(text); + + /* if the entered text is a Wikipedia link, + * substitute it with the OSM-formatted Wikipedia article tag */ + if (wikipediaArticleFormatted) + return wikipediaArticleFormatted; + else + return text; +}; + +/* Reformat a phone number string if it looks like a tel: URI + * strip off the leading tel: protocol string and trailing parameters, + * following a ; + * otherwise return the string unmodified */ +var _osmPhoneRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'tel') { + let afterTel = text.replace('tel:', ''); + + return Soup.uri_decode(afterTel.split(';')[0]); + } else { + return text; + } +}; + +/* Make sure a website field is either empty or contains a valid HTTP or HTTPS + * URL. */ +var _osmWebsiteValidateFunc = function(text) { + return text === "" || Utils.isValidWebsite(text); +} + +/* + * specification of OSM edit fields + * name: the label for the edit field (translatable) + * tag: the OSM tag key value + * type: the field type (determines editing field type) + * rewriteFunc: a rewrite function taking a string argument + * (only used for TEXT fields) + * placeHolder: set a text place holder to act as example input + * (only used for TEXT fields) + * includeHelp: when true turn the name label to a link to the + * OSM wiki for tags. + * options: The options for the combo box (only used for COMBO fields) + * hint: a hint text to show in a popover displayed by a hint button + * (for TEXT and INTEGER fields) + * subtags: Used by a complex composite OSM tag. + * rows: Number of rows needed if != 1 (Currently only for ADDRESS). + */ +const OSM_FIELDS = [ + { + name: _("Name"), + tag: 'name', + type: EditFieldType.TEXT, + hint: _("The official name. This is typically what appears on signs.") + }, + { + name: _("Address"), + tag: 'addr', + subtags: ['addr:street', 'addr:housenumber', + 'addr:postcode', 'addr:city'], + type: EditFieldType.ADDRESS, + rows: 2 + }, + { + name: _("Website"), + tag: 'website', + type: EditFieldType.TEXT, + validate: this._osmWebsiteValidateFunc, + validateError: _("This is not a valid URL. Make sure to include http:// or https://."), + hint: _("The official website. Try to use the most basic form " + + "of a URL i.e. http://example.com instead of " + + "http://example.com/index.html.") + }, + { + name: _("Phone"), + tag: 'phone', + type: EditFieldType.TEXT, + rewriteFunc: this._osmPhoneRewriteFunc, + hint: _("Phone number. Use the international format, " + + "starting with a + sign. Beware of local privacy " + + "laws, especially for private phone numbers.") + }, + { + name: _("Wikipedia"), + tag: 'wikipedia', + type: EditFieldType.TEXT, + rewriteFunc: this._osmWikipediaRewriteFunc, + hint: _("The format used should include the language code " + + "and the article title like “en:Article title”.") + }, + { + name: _("Opening hours"), + tag: 'opening_hours', + type: EditFieldType.TEXT, + placeHolder: 'Mo-Fr 08:00-20:00; Sa-Su 10:00-14:00', + includeHelp: true, + hint: _("See the link in the label for help on format.") + }, + { + name: _("Population"), + tag: 'population', + type: EditFieldType.UNSIGNED_INTEGER + }, + { + name: _("Altitude"), + tag: 'ele', + type: EditFieldType.INTEGER, + hint: _("Elevation (height above sea level) of a point in metres.") + }, + { + name: _("Wheelchair access"), + tag: 'wheelchair', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['limited', _("Limited")], + ['designated', _("Designated")]] + }, + { + name: _("Internet access"), + tag: 'internet_access', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['wlan', _("Wi-Fi")], + ['wired', _("Wired")], + ['terminal', _("Terminal")], + ['service', _("Service")]] + }, + { + name: _("Religion"), + tag: 'religion', + type: EditFieldType.COMBO, + options: [['animist', _("Animism")], + ['bahai', _("Bahá’í")], + ['buddhist', _("Buddhism")], + ['caodaism', _("Caodaism")], + ['christian', _("Christianity")], + ['confucian', _("Confucianism")], + ['hindu', _("Hinduism")], + ['jain', _("Jainism")], + ['jewish', _("Judaism")], + ['muslim', _("Islam")], + ['multifaith', _("Multiple Religions")], + ['pagan', _("Paganism")], + ['pastafarian', _("Pastafarianism")], + ['scientologist', _("Scientology")], + ['shinto', _("Shinto")], + ['sikh', _("Sikhism")], + ['spiritualist', _("Spiritualism")], + ['taoist', _("Taoism")], + ['unitarian_universalist', _("Unitarian Universalism")], + ['voodoo', _("Voodoo")], + ['yazidi', _("Yazidism")], + ['zoroastrian', _("Zoroastrianism")]] + }, + { + name: _("Toilets"), + tag: 'toilets', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")]] + }, + { + name: _("Note"), + tag: 'note', + type: EditFieldType.TEXT, + hint: _("Information used to inform other mappers about non-obvious information about an element, the author’s intent when creating it, or hints for further improvement.") + }]; + +const OSMEditAddress = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-address.ui', + Children: [ 'street', + 'number', + 'post', + 'city' ], +}, class OSMEditAddress extends Gtk.Grid { + + _init(params) { + let street = params.street; + delete params.street; + + let number = params.number; + delete params.number; + + let postCode = params.postCode; + delete params.postCode; + + let city = params.city; + delete params.city; + + super._init(params); + + if (street) + this.street.text = street; + + if (number) + this.number.text = number; + + if (postCode) + this.post.text = postCode; + + if (city) + this.city.text = city; + } +}); + + +var OSMEditDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-dialog.ui', + InternalChildren: [ 'cancelButton', + 'backButton', + 'nextButton', + 'stack', + 'editorGrid', + 'commentTextView', + 'addFieldPopoverGrid', + 'addFieldButton', + 'typeSearchGrid', + 'typeLabel', + 'typeButton', + 'typeValueLabel', + 'recentTypesLabel', + 'recentTypesListBox', + 'hintPopover', + 'hintLabel', + 'headerBar'], +}, class OSMEditDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + delete params.place; + + this._addLocation = params.addLocation; + delete params.addLocation; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + /* I could not get this widget working from within the widget template + * this results in a segfault. The widget definition is left in-place, + * but commented-out in the template file */ + this._typeSearch = new OSMTypeSearchEntry.OSMTypeSearchEntry(); + this._typeSearchGrid.attach(this._typeSearch, 0, 0, 1, 1); + this._typeSearch.visible = true; + this._typeSearch.can_focus = true; + + let typeSearchPopover = this._typeSearch.popover; + typeSearchPopover.connect('selected', (o, k, v, t) => { + this._onTypeSelected(o, k, v, t); + }); + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + this._isEditing = false; + this._nextButton.connect('clicked', () => this._onNextClicked()); + this._cancelButton.connect('clicked', () => this._onCancelClicked()); + this._backButton.connect('clicked', () => this._onBackClicked()); + this._typeButton.connect('clicked', () => this._onTypeClicked()); + + if (this._addLocation) { + this._headerBar.title = C_("dialog title", "Add to OpenStreetMap"); + this._typeLabel.visible = true; + this._typeButton.visible = true; + + /* the OSMObject ID, version, and changeset ID is unknown for now */ + let newNode = + Maps.OSMNode.new(0, 0, 0, this._longitude, this._latitude); + /* set a placeholder name tag to always get a name entry for new + * locations */ + newNode.set_tag('name', ''); + this._loadOSMData(newNode); + this._isEditing = true; + this._osmType = Geocode.PlaceOsmType.NODE; + } else { + this._osmType = this._place.osmType; + Application.osmEdit.fetchObject(this._place, + this._onObjectFetched.bind(this), + this._cancellable); + } + + /* store original title of the dialog to be able to restore it when + * coming back from type selection */ + this._originalTitle = this._headerBar.title; + this._updateRecentTypesList(); + + this._recentTypesListBox.set_header_func((row, previous) => { + if (previous) + row.set_header(new Gtk.Separator()); + }); + + this._recentTypesListBox.connect('row-activated', (listbox, row) => { + this._onTypeSelected(null, row._key, row._value, row._title); + }); + } + + _onNextClicked() { + if (this._isEditing) { + this._switchToUpload(); + } else { + this._stack.visible_child_name = 'loading'; + this._nextButton.sensitive = false; + this._backButton.sensitive = false; + + let comment = this._commentTextView.buffer.text; + Application.osmEdit.uploadObject(this._osmObject, + this._osmType, comment, + this._onObjectUploaded.bind(this)); + } + } + + _onTypeClicked() { + this._cancelButton.visible = false; + this._backButton.visible = true; + this._nextButton.visible = false; + this._headerBar.title = _("Select Type"); + this._stack.visible_child_name = 'select-type'; + } + + _onTypeSelected(popover, key, value, title) { + this._typeValueLabel.label = title; + this._updateType(key, value); + + if (popover) + popover.hide(); + + /* clear out type search entry */ + this._typeSearch.text = ''; + + /* go back to the editing stack page */ + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._stack.visible_child_name = 'editor'; + this._headerBar.title = this._originalTitle; + + /* update recent types store */ + OSMTypes.recentTypesStore.pushType(key, value); + + /* enable the Next button, so that it's possible to just change the type + * of an object without changing anything else */ + this._nextButton.sensitive = true; + + this._updateRecentTypesList(); + } + + _updateType(key, value) { + /* clear out any previous type-related OSM tags */ + OSMTypes.OSM_TYPE_TAGS.forEach((tag) => this._osmObject.delete_tag(tag)); + + this._osmObject.set_tag(key, value); + } + + /* update visibility and enable the type selection button if the object has + * a well-known type (based on a known set of tags) */ + _updateTypeButton() { + let numTypeTags = 0; + let lastTypeTag = null; + + for (let i = 0; i < OSMTypes.OSM_TYPE_TAGS.length; i++) { + let key = OSMTypes.OSM_TYPE_TAGS[i]; + let value = this._osmObject.get_tag(key); + + if (value != null) { + numTypeTags++; + lastTypeTag = key; + } + } + + /* if the object has none of tags set, enable the button and keep the + * pre-set "None" label */ + if (numTypeTags === 0) { + this._typeLabel.visible = true; + this._typeButton.visible = true; + } else if (numTypeTags === 1) { + let value = this._osmObject.get_tag(lastTypeTag); + let typeTitle = OSMTypes.lookupType(lastTypeTag, value); + + /* if the type tag has a value we know of, and possible has + * translations for */ + if (typeTitle != null) { + this._typeValueLabel.label = typeTitle; + this._typeLabel.visible = true; + this._typeButton.visible = true; + } + } + } + + _updateRecentTypesList() { + let recentTypes = OSMTypes.recentTypesStore.recentTypes; + + if (recentTypes.length > 0) { + let children = this._recentTypesListBox.get_children(); + + for (let i = 0; i < children.length; i++) { + children[i].destroy(); + } + + this._recentTypesLabel.visible = true; + this._recentTypesListBox.visible = true; + + for (let i = 0; i < recentTypes.length; i++) { + let key = recentTypes[i].key; + let value = recentTypes[i].value; + let title = OSMTypes.lookupType(key, value); + + let row = new Gtk.ListBoxRow({visible: true, hexpand: true}); + let grid = new Gtk.Grid({visible: true, + margin_top: 6, margin_bottom: 6, + margin_start: 12, margin_end: 12}); + let label = new Gtk.Label({visible: true, halign: Gtk.Align.START, + label: title}); + + label.get_style_context().add_class('dim-label'); + + row._title = title; + row._key = key; + row._value = value; + + row.add(grid); + grid.add(label); + + this._recentTypesListBox.add(row); + } + } else { + this._recentTypesLabel.visible = false; + this._recentTypesListBox.visible = false; + } + } + + _switchToUpload() { + this._stack.set_visible_child_name('upload'); + this._nextButton.label = _("Done"); + this._cancelButton.visible = false; + this._backButton.visible = true; + this._cancelButton.visible = false; + this._isEditing = false; + this._commentTextView.grab_focus(); + } + + _onCancelClicked() { + this.response(Response.CANCELLED); + } + + _onBackClicked() { + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._nextButton.label = _("Next"); + this._stack.set_visible_child_name('editor'); + this._isEditing = true; + this._commentTextView.buffer.text = ''; + this._typeSearch.text = ''; + this._headerBar.title = this._originalTitle; + } + + _onObjectFetched(success, status, osmObject, osmType, error) { + if (success) { + this._isEditing = true; + this._loadOSMData(osmObject); + } else { + this._showError(status, error); + } + } + + _onObjectUploaded(success, status) { + if (success) { + this.response(Response.UPLOADED); + } else { + this._showError(status); + this.response(Response.ERROR); + } + } + + _showError(status, error) { + /* set error message from specific error if available, otherwise use + * a generic error message for the HTTP status code */ + let statusMessage = + error ? error.message : OSMConnection.getStatusMessage(status); + let messageDialog = + new Gtk.MessageDialog({ transient_for: this.get_toplevel(), + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: statusMessage }); + + messageDialog.run(); + messageDialog.destroy(); + this.response(Response.ERROR); + } + + /* GtkContainer.child_get_property doesn't seem to be usable from GJS */ + _getRowOfDeleteButton(button) { + for (let row = 1; row < this._currentRow; row++) { + let label = this._editorGrid.get_child_at(0, row); + let deleteButton = this._editorGrid.get_child_at(2, row); + + if (deleteButton === button) + return row; + } + + return -1; + } + + _addOSMEditDeleteButton(fieldSpec) { + let deleteButton = Gtk.Button.new_from_icon_name('user-trash-symbolic', + Gtk.IconSize.BUTTON); + let styleContext = deleteButton.get_style_context(); + let rows = fieldSpec.rows || 1; + + styleContext.add_class('flat'); + this._editorGrid.attach(deleteButton, 2, this._currentRow, 1, 1); + + deleteButton.connect('clicked', () => { + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((key) => this._osmObject.delete_tag(key)); + } else { + this._osmObject.delete_tag(fieldSpec.tag); + } + + let row = this._getRowOfDeleteButton(deleteButton); + for (let i = 0; i < rows; i++) { + this._editorGrid.remove_row(row); + this._currentRow--; + } + this._nextButton.sensitive = true; + this._updateAddFieldMenu(); + }); + + deleteButton.show(); + } + + _addOSMEditLabel(fieldSpec) { + let text = fieldSpec.name; + if (fieldSpec.includeHelp) { + let link = _WIKI_BASE + fieldSpec.tag; + text = '%s'.format(link, link, text); + } + let label = new Gtk.Label({ label: text, + use_markup: true }); + label.halign = Gtk.Align.END; + label.get_style_context().add_class('dim-label'); + this._editorGrid.attach(label, 0, this._currentRow, 1, 1); + label.show(); + } + + _showHintPopover(entry, hint) { + if (this._hintPopover.visible) { + this._hintPopover.popdown(); + } else { + this._hintPopover.relative_to = entry; + this._hintLabel.label = hint; + this._hintPopover.popup(); + } + } + + _validateTextEntry(fieldSpec, entry) { + if (fieldSpec.validate) { + if (!fieldSpec.validate(entry.text)) { + entry.get_style_context().add_class("warning"); + } else { + entry.get_style_context().remove_class("warning"); + } + } + } + + _addOSMEditTextEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let entry = new Gtk.Entry(); + entry.text = value; + entry.hexpand = true; + if (fieldSpec.placeHolder) + entry.placeholder_text = fieldSpec.placeHolder; + + entry.connect('changed', () => { + if (fieldSpec.rewriteFunc) + entry.text = fieldSpec.rewriteFunc(entry.text); + this._osmObject.set_tag(fieldSpec.tag, entry.text); + + this._validateTextEntry(fieldSpec, entry); + + this._nextButton.sensitive = true; + }); + + this._validateTextEntry(fieldSpec, entry); + + if (fieldSpec.hint) { + entry.secondary_icon_name = 'dialog-information-symbolic'; + entry.connect('icon-press', (entry, iconPos, event) => { + if (fieldSpec.validate && !fieldSpec.validate(entry.text)) { + this._showHintPopover(entry, fieldSpec.validateError); + } else { + this._showHintPopover(entry, fieldSpec.hint); + } + }); + } + + this._editorGrid.attach(entry, 1, this._currentRow, 1, 1); + entry.show(); + entry.grab_focus(); + + /* TODO: should we allow deleting the name field? */ + this._addOSMEditDeleteButton(fieldSpec); + + this._currentRow++; + } + + _addOSMEditIntegerEntry(fieldSpec, value, min, max) { + this._addOSMEditLabel(fieldSpec); + + let spinbutton = Gtk.SpinButton.new_with_range(min, max, 1); + spinbutton.value = value; + spinbutton.numeric = true; + spinbutton.hexpand = true; + spinbutton.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, spinbutton.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + spinbutton.secondary_icon_name = 'dialog-information-symbolic'; + spinbutton.connect('icon-press', (iconPos, event) => { + this._showHintPopover(spinbutton, fieldSpec.hint); + }); + } + + this._editorGrid.attach(spinbutton, 1, this._currentRow, 1, 1); + spinbutton.show(); + spinbutton.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditComboEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let combobox = new Gtk.ComboBoxText(); + + fieldSpec.options.forEach(function(option) { + combobox.append(option[0], option[1]); + }); + combobox.active_id = value; + combobox.hexpand = true; + combobox.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, combobox.active_id); + this._nextButton.sensitive = true; + }); + + this._editorGrid.attach(combobox, 1, this._currentRow, 1, 1); + combobox.show(); + combobox.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditAddressEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let addr = new OSMEditAddress({ street: value[0], + number: value[1], + postCode: value[2], + city: value[3] }); + let changedFunc = (function(entry, index) { + this._osmObject.set_tag(fieldSpec.subtags[index], entry.text); + this._nextButton.sensitive = true; + }).bind(this); + + addr.street.connect('changed', changedFunc.bind(this, addr.street, 0)); + addr.number.connect('changed', changedFunc.bind(this, addr.number, 1)); + addr.post.connect('changed', changedFunc.bind(this, addr.post, 2)); + addr.city.connect('changed', changedFunc.bind(this, addr.city, 3)); + + let rows = fieldSpec.rows || 1; + this._editorGrid.attach(addr, 1, this._currentRow, 1, rows); + addr.street.grab_focus(); + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow += rows; + } + + /* update visible items in the "Add Field" popover */ + _updateAddFieldMenu() { + /* clear old items */ + let children = this._addFieldPopoverGrid.get_children(); + let hasAllFields = true; + + for (let i = 0; i < children.length; i++) { + let button = children[i]; + button.destroy(); + } + + /* add selectable items */ + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let hasValue = false; + + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + if (this._osmObject.get_tag(tag) !== null) + hasValue = true; + }); + } else { + hasValue = this._osmObject.get_tag(fieldSpec.tag) !== null; + } + + if (!hasValue) { + let button = new Gtk.Button({ + visible: true, sensitive: true, + label: fieldSpec.name + }); + button.get_style_context().add_class('menuitem'); + button.get_style_context().add_class('button'); + button.get_style_context().add_class('flat'); + button.get_child().halign = Gtk.Align.START; + + button.connect('clicked', () => { + this._addFieldButton.active = false; + this._addOSMField(fieldSpec); + /* add a "placeholder" empty OSM tag to keep the add field + * menu updated, these tags will be filtered out if nothing + * is entered */ + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + this._osmObject.set_tag(tag, ''); + }); + } else { + this._osmObject.set_tag(fieldSpec.tag, ''); + } + this._updateAddFieldMenu(); + }); + + hasAllFields = false; + this._addFieldPopoverGrid.add(button); + } + } + + this._addFieldButton.sensitive = !hasAllFields; + } + + _addOSMField(fieldSpec, value) { + switch (fieldSpec.type) { + case EditFieldType.TEXT: + this._addOSMEditTextEntry(fieldSpec, value || ''); + break; + case EditFieldType.INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, -1e9, 1e9); + break; + case EditFieldType.UNSIGNED_INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, 0, 1e9); + break; + case EditFieldType.COMBO: + this._addOSMEditComboEntry(fieldSpec, value || ''); + break; + case EditFieldType.ADDRESS: + this._addOSMEditAddressEntry(fieldSpec, value || ''); + break; + } + } + + _loadOSMData(osmObject) { + this._osmObject = osmObject; + + /* keeps track of the current insertion row in the grid for editing + * widgets */ + this._currentRow = 1; + + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let value; + + if (fieldSpec.subtags) { + let hasAny = false; + fieldSpec.subtags.forEach(function(tag) { + if (osmObject.get_tag(tag) != null) + hasAny = true; + }); + + if (hasAny) { + value = fieldSpec.subtags.map(function(tag) { + return osmObject.get_tag(tag); + }); + this._addOSMField(fieldSpec, value); + } + } else { + value = osmObject.get_tag(fieldSpec.tag); + if (value != null) + this._addOSMField(fieldSpec, value); + } + } + + this._updateAddFieldMenu(); + this._updateTypeButton(); + this._stack.visible_child_name = 'editor'; + } +}); diff --git a/src/osmNames.js b/src/osmNames.js new file mode 100644 index 00000000..97ac4613 --- /dev/null +++ b/src/osmNames.js @@ -0,0 +1,235 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for getting localized names of OSM objects. + * See https://wiki.openstreetmap.org/wiki/Multilingual_names + */ + +const Utils = imports.utils + +/** + * Mapping writing systems (scripts) to languages (most commonly + * used scripts) and countries where given writing system is the predominant + * one used. + * + * See: + * https://en.wikipedia.org/wiki/List_of_writing_systems + */ +const WRITING_SYSTEMS = [ + // ARABIC + { + languages: new Set(['ar', 'bal', 'bft', 'bhd', 'brh', 'bsk', 'fa', + 'khv', 'ks', 'ur', 'pa', 'ps', 'sd', 'skr', 'ug', + 'ckb']), + countries: new Set(['AE', 'AF', 'BH', 'DZ', 'EG', 'IQ', 'IR', 'JO', 'KW', + 'LB', 'LY', 'MA', 'OM', 'PK', 'PS', 'QA', 'SA', 'SD', + 'SY', 'TN', 'YE']) + }, + // ARMENIAN + { + languages: new Set(['am']), + countries: new Set(['AM']) + }, + // BENGALI + { + languages: new Set(['as', 'bn', 'bpy', 'ctg', 'mni', 'rkt', 'syl']), + countries: new Set(['BD']) + }, + // BURMESE + { + languages: new Set(['mnv', 'my', 'rki', 'rmz', 'shn']), + countries: new Set(['MM']) + }, + // CHINESE + { + languages: new Set(['zh', 'yue']), + countries: new Set(['CN', 'TW']) + }, + // CYRILLIC + { + languages: new Set(['ab', 'abq', 'ady', 'alt', 'alr', 'aqc', 'av', 'ba', + 'be', 'bg', 'bgx', 'ce', 'chm', 'ckt', 'cnr', 'crh', + 'cv', 'dar', 'dlg', 'dng', 'eve', 'evn', 'gld', + 'inh', 'itl', 'jdt', 'kbd', 'kjh', 'koi', 'kpy', + 'krc', 'kum', 'ky', 'lbe', 'lez', 'mn', 'mk', 'nog', + 'oaa', 'os', 'ru', 'rue', 'sah', 'sgh', 'sjd', 'sr', + 'sty', 'tab', 'tg', 'tt', 'ttt', 'tyv', 'uby', 'uk', + 'ulc', 'uum', 'yah', 'yai']), + countries: new Set(['BY', 'KG', 'MN', 'TJ', 'RS', 'RU', 'UA']) + }, + // DEVANAGARI + { + languages: new Set(['awa', 'anp', 'bgc', 'bhb', 'bho', 'brx', 'doi', + 'hi', 'hne', 'kok', 'mag', 'mai', 'mr', 'ne', 'new', + 'raj', 'sa', 'sgj']) + }, + // GEORIGIAN + { + languages: new Set(['ka']), + countries: new Set(['GE']) + }, + // GEEZ + { + languages: new Set(['am', 'gez', 'har', 'ti', 'tig']), + countries: new Set(['ET', 'ER']) + }, + // GREEK + { + languages: new Set(['gr']), + countries: new Set(['GR']) + }, + // GUJARATI + { + languages: new Set(['gbl', 'gu', 'kfr', 'vas', 'vav']) + }, + // HEBREW + { + languages: new Set(['he', 'yi']), + countries: new Set(['IL']) + }, + // JAPANESE + { + languages: new Set(['ja']), + countries: new Set(['JP']) + }, + // KHMER + { + languages: new Set(['km']), + countries: new Set(['KH']) + }, + // KOREAN + { + languages: new Set(['ko']), + countries: new Set(['KR', 'NK']) + }, + // LAO + { + languages: new Set(['lo']), + countries: new Set(['LA']) + }, + // THAANA + { + languages: new Set(['dv']), + countries: new Set(['MV']) + }, + // THAI + { + languages: new Set(['nod', 'sou', 'th', 'tts']), + countries: new Set(['TH']) + } +]; + +function getNameForLanguageAndCountry(tags, language, country) { + let localizedName = _getNameInLanguage(tags, language); + + /* for names in Norwegian, the best practice in OSM is to use the + * general code 'no' for translated names, unless the translation + * differs between Bokmål (nb) and Nynorsk (nn), in which case the standard + * ISO 639-2 codes are used, e.g. the default case from above will be used + */ + if (!localizedName && (language === 'nb' || language === 'nn')) + localizedName = _getNameInLanguage(tags, 'no'); + + return localizedName ? localizedName : + _getFallbackNameForLanguageAndCountry(tags, language, + country); +} + +function _getFallbackNameForLanguageAndCountry(tags, language, country) { + let intName; + + if (_predominantWritingSystemMatchesLanguage(country, language) && tags.name) + return tags.name; + + let nameInSameScript = _getNameMatchingWritingSystem(language, tags); + + if (nameInSameScript) + return nameInSameScript; + + switch (country) { + case 'CN': + intName = _getNameInLanguage(tags, 'zh_pinyin'); + break; + case 'JP': + intName = _getNameInLanguage(tags, 'ja-Latn'); + if (!intName) + intName = _getNameInLanguage(tags, 'ja_rm'); + break; + case 'KO': + case 'NK': + intName = _getNameInLanguage(tags, 'ko-Latn'); + break; + case 'RS': + intName = _getNameInLanguage(tags, 'sr-Latn'); + break; + + } + + let enName = _getNameInLanguage(tags, 'en'); + + if (intName) + return intName; + else if (tags.int_name) + return tags.int_name; + else if (enName) + return enName; + else + return tags.name; +} + +function _getNameInLanguage(tags, language) { + return language === 'C' ? tags.name : tags['name:' + language]; +} + +function _predominantWritingSystemMatchesLanguage(country, language) { + let writingSystemOfCountry; + let writingSystemOfLanguage; + + WRITING_SYSTEMS.forEach(w => { + if (w.languages.has(language)) + writingSystemOfLanguage = w; + + if (w.countries && w.countries.has(country)) + writingSystemOfCountry = w; + }); + + return writingSystemOfCountry === writingSystemOfLanguage; +} + +function _getNameMatchingWritingSystem(language, tags) { + let writingSystem; + let name; + + WRITING_SYSTEMS.forEach(w => { + if (w.languages.has(language)) + writingSystem = w; + }); + + if (writingSystem) { + writingSystem.languages.forEach(lang => { + if (tags['name:' + lang]) + name = tags['name:' + lang]; + }); + } + + return name; +} diff --git a/src/osmTypeListRow.js b/src/osmTypeListRow.js new file mode 100644 index 00000000..795d203c --- /dev/null +++ b/src/osmTypeListRow.js @@ -0,0 +1,50 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var OSMTypeListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-list-row.ui', + InternalChildren: [ 'name' ] +}, class OSMTypeListRow extends Gtk.ListBoxRow { + + _init(props) { + this._type = props.type; + delete props.type; + + super._init(props); + + this._name.label = this._type.title; + } + + get key() { + return this._type.key; + } + + get value() { + return this._type.value; + } + + get title() { + return this._type.title; + } +}); diff --git a/src/osmTypePopover.js b/src/osmTypePopover.js new file mode 100644 index 00000000..5355ca5d --- /dev/null +++ b/src/osmTypePopover.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypeListRow = imports.osmTypeListRow; +const SearchPopover = imports.searchPopover; + +var OSMTypePopover = GObject.registerClass({ + InternalChildren: ['list'], + Template: 'resource:///org/gnome/Maps/ui/osm-type-popover.ui', + Signals : { + /* signal emitted when selecting a type, indicates OSM key and value + * and display title */ + 'selected' : { param_types: [ GObject.TYPE_STRING, + GObject.TYPE_STRING, + GObject.TYPE_STRING ] } + } +}, class OSMTypePopover extends SearchPopover.SearchPopover { + + _init(props) { + super._init(props); + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.key, row.value, row.title); + }); + } + + showMatches(matches) { + this._list.forall((row) => row.destroy()); + + matches.forEach((type) => this._addRow(type)); + this.show(); + } + + _addRow(type) { + let row = new OSMTypeListRow.OSMTypeListRow({ type: type, + can_focus: true }); + this._list.add(row); + } +}); diff --git a/src/osmTypeSearchEntry.js b/src/osmTypeSearchEntry.js new file mode 100644 index 00000000..eae92355 --- /dev/null +++ b/src/osmTypeSearchEntry.js @@ -0,0 +1,75 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypePopover = imports.osmTypePopover; +const OSMTypes = imports.osmTypes; +const Utils = imports.utils; + +const MAX_MATCHES = 10; + +var OSMTypeSearchEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-search-entry.ui' +}, class OSMTypeSearchEntry extends Gtk.SearchEntry { + + _init(props) { + super._init(props); + + this._popover = + new OSMTypePopover.OSMTypePopover({relative_to: this}); + + this.connect('size-allocate', (widget, allocation) => { + /* Magic number to make the alignment pixel perfect. */ + let width_request = allocation.width + 20; + this._popover.width_request = width_request; + }); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + this.connect('activate', this._onSearchChanged.bind(this)); + } + + get popover() { + return this._popover; + } + + _onSearchChanged() { + if (this.text.length === 0) { + this._popover.hide(); + return; + } + + /* Note: Not sure if searching already on one character might be a bit + * too much, but unsure about languages such as Chinese and Japanese + * using ideographs. */ + if (this.text.length >= 1) { + let matches = OSMTypes.findMatches(this.text, MAX_MATCHES); + + if (matches.length > 0) { + /* show search results */ + this._popover.showMatches(matches); + } else { + this._popover.hide(); + } + } + } +}); diff --git a/src/osmTypes.js b/src/osmTypes.js new file mode 100644 index 00000000..aa7d7c68 --- /dev/null +++ b/src/osmTypes.js @@ -0,0 +1,165 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +const Utils = imports.utils; + +const _RECENT_TYPES_STORE_FILE = 'maps-recent-types.json'; +const _NUM_RECENT_TYPES = 10; + +const _file = Gio.file_new_for_uri('resource://org/gnome/Maps/osm-types.json'); +const [_status, _buffer] = _file.load_contents(null); +const OSM_TYPE_MAP = JSON.parse(Utils.getBufferText(_buffer)); + +/* Lists the OSM tags we base our notion of location types on */ +var OSM_TYPE_TAGS = ['aeroway', 'amenity', 'leisure', 'office', 'place', 'shop', 'tourism' ]; + +/* Sort function comparing two type values according to the locale-specific + * comparison of the type title */ +function _sortType(t1, t2) { + return t1.title.toLocaleLowerCase().localeCompare(t2.title.toLocaleLowerCase()); +} + +/* find the localized display title and a normalized locale-specific lower case + * value for search purposes, given a type mapping value, + * also cache the title to avoid re-iterating the language map every time, + * and store the lower-case normalized title in the current locale */ +function _lookupTitle(item) { + let langs = GLib.get_language_names(); + let title = item.cachedTitle; + + if (title) + return [title, item.normalizedTitle]; + + for (let i = 0; i < langs.length; i++) { + title = item.title[langs[i].replace('_', '-')]; + + if (title) { + let normalizedTitle = title.toLocaleLowerCase(); + + item.cachedTitle = title; + item.normalizedTitle = normalizedTitle; + return [title, normalizedTitle]; + } + } + + return null; +} + +function findMatches(prefix, maxMatches) { + let numMatches = 0; + let prefixLength = prefix.length; + let normalized = prefix.toLocaleLowerCase(); + let matches = []; + + for (let type in OSM_TYPE_MAP) { + let item = OSM_TYPE_MAP[type]; + let [title, normalizedTitle] = _lookupTitle(item); + let parts = type.split('/'); + + /* if the (locale-case-normalized) title matches parts of the search + * string, or as a convenience for expert mappers, if the search string + * is prefix of the raw OSM tag value */ + if (normalizedTitle.indexOf(normalized) != -1 + || (prefixLength >= 3 && parts[1].startsWith(prefix))) { + numMatches++; + matches.push({key: parts[0], value: parts[1], title: title}); + } + + if (numMatches === maxMatches) + break; + } + + return matches.sort(_sortType); +} + +/* return the title of a type with a given key/value if it is known by us */ +function lookupType(key, value) { + let item = OSM_TYPE_MAP[key + '/' + value]; + + if (item) { + let [title, _] = _lookupTitle(item); + return title; + } else + return null; +} + +var RecentTypesStore = class RecentTypesStore { + + constructor() { + this._filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _RECENT_TYPES_STORE_FILE]); + this._load(); + } + + get recentTypes() { + return this._recentTypes; + } + + _load() { + if (!GLib.file_test(this._filename, GLib.FileTest.EXISTS)) { + this._recentTypes = []; + return; + } + + let buffer = Utils.readFile(this._filename); + if (buffer === null) { + this._recentTypes = []; + return; + } + + this._recentTypes = JSON.parse(Utils.getBufferText(buffer)); + } + + _save() { + let buffer = JSON.stringify(this._recentTypes); + if (!Utils.writeFile(this._filename, buffer)) + log('Failed to write recent types file!'); + } + + /* push a type key/value as the most recently used type */ + pushType(key, value) { + /* find out if the type is already stored */ + let pos = -1; + for (let i = 0; i < this._recentTypes.length; i++) { + if (this._recentTypes[i].key === key && + this._recentTypes[i].value === value) { + pos = i; + break; + } + } + + /* remove the type if it was already found in the list */ + if (pos != -1) + this._recentTypes.splice(pos, 1); + + this._recentTypes.unshift({key: key, value: value}); + + /* prune the list */ + this._recentTypes.splice(_NUM_RECENT_TYPES); + + this._save(); + } +}; + +var recentTypesStore = new RecentTypesStore(); diff --git a/src/osmUtils.js b/src/osmUtils.js new file mode 100644 index 00000000..847c975c --- /dev/null +++ b/src/osmUtils.js @@ -0,0 +1,81 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Soup = imports.gi.Soup; + +const Application = imports.application; + +/* + * Gets a Wikipedia article in OSM tag format (i.e. lang:Article title) + * given a URL or null if input doesn't match a Wikipedia URL + */ +function getWikipediaOSMArticleFormatFromUrl(url) { + let regex = /https?:\/\/(..)\.wikipedia\.org\/wiki\/(.+)/; + let match = url.match(regex); + + if (match && match.length == 3) { + let lang = match[1]; + let article = match[2]; + + return lang + ':' + Soup.uri_decode(article).replace(/_/g, ' '); + } else { + return null; + } +} + +/** + * Updates a Place object according to an OSMObject. + * Will also update place in the place store. + */ +function updatePlaceFromOSMObject(place, object) { + let name = object.get_tag('name'); + + if (name) { + /* only update the place's name from the OSM object if the OSM object + * actually has a name set. + * https://bugzilla.gnome.org/show_bug.cgi?id=762569 + * + * also update the displayed localized name, if it was equal + * to the translated name to avoid the old name showing up as the + * native name in when editing places where they equal + */ + if (place.name === place.nativeName) + place.name = name; + place.nativeName = name; + } + place.population = object.get_tag('population'); + place.website = object.get_tag('website'); + place.phone = object.get_tag('phone'); + place.wiki = object.get_tag('wikipedia'); + place.openingHours = object.get_tag('opening_hours'); + place.wheelchair = object.get_tag('wheelchair'); + place.toilets = object.get_tag('toilets'); + place.internetAccess = object.get_tag('internet_access'); + place.religion = object.get_tag('religion'); + + let altitude = object.get_tag('ele'); + + if (altitude) + place.location.altitude = altitude; + + Application.placeStore.updatePlace(place); +} diff --git a/src/overpass.js b/src/overpass.js new file mode 100644 index 00000000..ee69bf80 --- /dev/null +++ b/src/overpass.js @@ -0,0 +1,276 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Rishi Raj Singh Jhelumi + */ + +const Format = imports.format; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Soup = imports.gi.Soup; + +const OSMNames = imports.osmNames; +const PhotonParser = imports.photonParser; +const Place = imports.place; +const Utils = imports.utils; + +const _DEFAULT_TIMEOUT = 180; +const _DEFAULT_MAXSIZE = 536870912; +const _DEFAULT_OUTPUT_FORMAT = 'json'; +const _DEFAULT_OUTPUT_COUNT = 1e6; +const _DEFAULT_OUTPUT_INFO = 'body'; +const _DEFAULT_OUTPUT_SORT_ORDER = 'qt'; + +const BASE_URL = 'https://overpass-api.de/api/interpreter'; + +var Overpass = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'Place with added information', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class Overpass extends GObject.Object { + + _init(params) { + params = params || { }; + + super._init(); + + // maximum allowed runtime for the query in seconds + this.timeout = params.timeout || _DEFAULT_TIMEOUT; + + // maximum allowed memory for the query in bytes RAM on the server + this.maxsize = params.maxsize || _DEFAULT_MAXSIZE; + + // output format : json or xml + this.outputFormat = params.outputFormat || _DEFAULT_OUTPUT_FORMAT; + + // maximum number of results the output must contain + this.outputCount = params.outputCount || _DEFAULT_OUTPUT_COUNT; + + // data output info must contain : ids, skel, body, meta + this.outputInfo = params.outputInfo || _DEFAULT_OUTPUT_INFO; + + // data sort order : qt(fastest based on geography), ids, asc + this.outputSortOrder = params.outputSortOrder || _DEFAULT_OUTPUT_SORT_ORDER; + + // HTTP Session Variables + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + addInfo(place) { + let url = this._getQueryUrl(Utils.osmTypeToString(place.osm_type), + place.osm_id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + return; + } + try { + let jsonObj = JSON.parse(message.response_body.data); + this._populatePlace(place, jsonObj); + this.place = place; + this.notify('place'); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + } + }); + } + + fetchPlace(osmType, osmId, callback) { + let url = this._getQueryUrl(osmType, osmId); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + callback(null); + } + try { + let jsonObj = JSON.parse(message.response_body.data); + let place = this._createPlace(jsonObj, osmType, osmId); + callback(place); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + callback(null); + } + }) + } + + _createPlace(overpassData, osmType, osmId) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return null; + + let [lat, lon] = this._getCoordsFromElement(element); + let photonProperties = + this._getPhotonProperties(element.tags, osmType, osmId); + let place = PhotonParser.parsePlace(lat, lon, photonProperties); + + this._populatePlace(place, overpassData); + place.prefilled = true; + + return place; + } + + _getCoordsFromElement(element) { + if (element.type === 'node') + return [element.lat, element.lon]; + else + return [element.center.lat, element.center.lon]; + } + + _getPhotonProperties(tags, osmType, osmId) { + let properties = {}; + + properties.osm_type = this._getPhotonOsmType(osmType); + properties.osm_id = osmId; + + if (tags.name) + properties.name = tags.name; + + if (tags['addr:street']) + properties.street = tags['addr:street']; + if (tags['addr:housenumber']) + properties.housenumber = tags['addr:housenumber']; + if (tags['addr:postcode']) + properties.postcode = tags['addr:postcode']; + if (tags['addr:city']) + properties.city = tags['addr:city']; + if (tags['addr:country']) + properties.countrycode = tags['addr:country']; + + if (tags.place) + this._setOsmKeyAndValue(properties, tags, 'place'); + else if (tags.amenity) + this._setOsmKeyAndValue(properties, tags, 'amenity'); + else if (tags.leisure) + this._setOsmKeyAndValue(properties, tags, 'leisure'); + else if (tags.shop) + this._setOsmKeyAndValue(properties, tags, 'shop'); + else if (tags.highway) + this._setOsmKeyAndValue(properties, tags, 'highway'); + else if (tags.railway) + this._setOsmKeyAndValue(properties, tags, 'railway'); + else if (tags.aeroway) + this._setOsmKeyAndValue(properties, tags, 'aeroway'); + else if (tags.building) + this._setOsmKeyAndValue(properties, tags, 'building'); + + return properties; + } + + _getPhotonOsmType(osmType) { + switch (osmType) { + case 'node': return 'N'; + case 'way': return 'W'; + case 'relation': return 'R'; + default: return null; + } + } + + _setOsmKeyAndValue(properties, tags, tag) { + properties.osm_key = tag; + properties.osm_value = tags[tag]; + } + + _populatePlace(place, overpassData) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return; + + let name = this._getLocalizedName(element.tags, place); + if (name) + place.name = name; + + if (element.tags.name) + place.nativeName = element.tags.name; + if (element.tags.population) + place.population = element.tags.population; + if (element.tags['contact:website']) + place.website = element.tags['contact:website']; + if (element.tags.website) + place.website = element.tags.website; + if (element.tags['contact:phone']) + place.phone = element.tags['contact:phone']; + if (element.tags.phone) + place.phone = element.tags.phone; + if (element.tags.wikipedia) + place.wiki = element.tags.wikipedia; + if (element.tags.wheelchair) + place.wheelchair = element.tags.wheelchair; + if (element.tags.opening_hours) + place.openingHours = element.tags.opening_hours; + if (element.tags.internet_access) + place.internetAccess = element.tags.internet_access; + if (element.tags.ele && place.location) + place.location.altitude = parseFloat(element.tags.ele); + if (element.tags.religion) + place.religion = element.tags.religion + if (element.tags.toilets) + place.toilets = element.tags.toilets; + if (element.tags.note) + place.note = element.tags.note; + } + + _getLocalizedName(tags, place) { + let language = Utils.getLanguage(); + + return OSMNames.getNameForLanguageAndCountry(tags, language, + place.country_code); + } + + _getQueryUrl(osmType, osmId) { + return Format.vprintf('%s?data=%s', [BASE_URL, + this._generateOverpassQuery(osmType, + osmId)]); + } + + _generateOverpassQuery(osmType, osmId) { + return Format.vprintf('%s%s%s;%s;%s;', + [ this._getKeyValue('timeout', this.timeout), + this._getKeyValue('out', this.outputFormat), + this._getKeyValue('maxsize', this.maxsize), + this._getData(osmType, osmId), + this._getOutput() ]); + } + + _getKeyValue(key, value) { + return Format.vprintf('[%s:%s]', [ key, + value ]); + } + + _getData(osmType, osmId) { + return Format.vprintf('%s(%s)', [osmType, osmId]); + } + + _getOutput() { + return Format.vprintf('out center %s %s %s', [ this.outputInfo, + this.outputSortOrder, + this.outputCount ]); + } +}); diff --git a/src/photonGeocode.js b/src/photonGeocode.js new file mode 100644 index 00000000..0de55dd2 --- /dev/null +++ b/src/photonGeocode.js @@ -0,0 +1,177 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var PhotonGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().photonGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().photonGeocode.attributionUrl; + } + + get name() { + return 'Photon'; + } + + get url() { + return 'https://github.com/Komoot/photon'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let features = json.features; + + if (!features || features.length === 0) { + Utils.debug('No features in response'); + return null; + } + + features.forEach(feature => { + let place = this._parseFeature(feature); + + if (place) + result.push(place); + }); + + return result; + } + + _parseFeature(feature) { + let [lon, lat] = feature.geometry.coordinates; + + return PhotonParser.parsePlace(lat, lon, feature.properties); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ lat: latitude, + lon: longitude, + limit: string ? this._limit : 1 + }); + + if (string) + query.add('q', string); + else + query.add('distance_sort', 'true'); + + if (this._language) + query.add('lang', this._language); + + if (this._additionalParams) + this._additionalParams.forEach((p) => query.add(p.key, p.value)); + + return Format.vprintf('%s/%s/?%s', [this._baseUrl, + string ? 'api' : 'reverse', + query.toString()]); + } + + _readService() { + let photon = Service.getService().photonGeocode; + let language = Utils.getLanguage(); + let supportedLanguages; + + if (photon) { + this._baseUrl = photon.baseUrl; + supportedLanguages = photon.supportedLanguages; + + if (photon.additionalParams) + this._additionalParams = photon.additionalParams; + } + + if (supportedLanguages.includes(language)) + this._language = language; + else + this._language = null; + } +} diff --git a/src/photonParser.js b/src/photonParser.js new file mode 100644 index 00000000..5ae7a9a5 --- /dev/null +++ b/src/photonParser.js @@ -0,0 +1,241 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GWeather = imports.gi.GWeather; + +const Address = imports.address; +const OSMTypes = imports.osmTypes; +const Place = imports.place; +const Utils = imports.utils; + +function parsePlace(latitude, longitude, properties) { + let location = new Geocode.Location({ latitude: latitude, + longitude: longitude, + accuracy: 0.0 }); + let type = _parsePlaceType(properties); + let name = _parseName(properties); + + if (!name) + return null; + + let street = properties.street; + let housenumber = properties.housenumber; + let countryCode = properties.countrycode ?? + Utils.getCountryCodeForCoordinates(latitude, longitude); + let streetAddress; + + if (housenumber && street) { + streetAddress = Address.streetAddressForCountryCode(street, housenumber, + countryCode); + + /* in some cases Photon seems to give housenumber or street as name, + * in that case set the name as the formatted street address + */ + if (name === housenumber || name === street) + name = streetAddress; + } + + let params = { name: name, place_type: type, location: location }; + + if (streetAddress) + params.street_address = streetAddress; + + if (properties.osm_id && properties.osm_type) { + params.osm_id = properties.osm_id + ''; // Geocode-glib needs this as a string + params.osm_type = _parseOsmType(properties.osm_type); + } + + if (properties.street) + params.street = properties.street; + + if (properties.city) + params.town = properties.city; + + if (properties.postcode) + params.postal_code = properties.postcode; + + if (properties.state) + params.state = properties.state; + + if (countryCode) + params.country_code = countryCode; + + if (!countryCode && properties.country) + params.country = properties.country; + + if (properties.extent) + params.bounding_box = _parseBoundingBox(properties.extent); + + return new Place.Place(params); +} + +function _parseName(properties) { + if (!properties) + return ''; + + if (properties.name) { + return properties.name; + } else if (properties.housenumber) { + return properties.housenumber; + } else { + let typeTitle = + OSMTypes.lookupType(properties.osm_key, properties.osm_value); + + return typeTitle || _("Unnamed place"); + } +} + +function _parseOsmType(osmType) { + switch (osmType) { + case 'N': + return Geocode.PlaceOsmType.NODE; + case 'W': + return Geocode.PlaceOsmType.WAY; + case 'R': + return Geocode.PlaceOsmType.RELATION; + default: + return Geocode.PlaceOsmType.UNKNOWN; + } +} + +function _parsePlaceType(properties) { + if (!properties) + return Geocode.PlaceType.UNKNOWN; + + let key = properties.osm_key; + let value = properties.osm_value; + + switch (key) { + case 'place': + switch (value) { + case 'continent': + return Geocode.PlaceType.CONTINENT; + case 'country': + return Geocode.PlaceType.COUNTRY; + case 'city': + case 'town': + case 'village': + case 'hamlet': + return Geocode.PlaceType.TOWN; + case 'suburb': + return Geocode.PlaceType.SUBURB; + case 'house': + return Geocode.PlaceType.BUILDING; + case 'island': + return Geocode.PlaceType.ISLAND; + case 'municipality': + return Geocode.PlaceType.COUNTY; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'amenity': + switch (value) { + case 'bar': + case 'pub': + case 'nightclub': + return Geocode.PlaceType.BAR; + case 'restaurant': + case 'fast_food': + return Geocode.PlaceType.RESTAURANT; + case 'school': + case 'kindergarten': + return Geocode.PlaceType.SCHOOL; + case 'place_of_worship': + return Geocode.PlaceType.PLACE_OF_WORSHIP; + case 'bus_station': + return Geocode.PlaceType.BUS_STOP; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'highway': + switch (value) { + case 'bus_stop': + return Geocode.PlaceType.BUS_STOP; + case 'motorway': + return Geocode.PlaceType.MOTORWAY; + default: + return Geocode.PlaceType.STREET; + } + case 'railway': + switch (value) { + case 'station': + case 'stop': + case 'halt': + return Geocode.PlaceType.RAILWAY_STATION; + case 'tram_stop': + return Geocode.PlaceType.LIGHT_RAIL_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'aeroway': + switch (value) { + case 'aerodrome': + return Geocode.PlaceType.AIRPORT; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'building': + switch (value) { + case 'yes': + return Geocode.PlaceType.BUILDING; + case 'railway_station': + return Geocode.PlaceType.RAILWAY_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + default: + return Geocode.PlaceType.MISCELLANEOUS; + } +} + +function _parseBoundingBox(extent) { + if (!Array.isArray(extent) || extent.length !== 4 || + !_isValidLongitude(extent[0]) || !_isValidLatitude(extent[1]) || + !_isValidLongitude(extent[2]) || !_isValidLatitude(extent[3])) { + Utils.debug('invalid extents in response: ' + + JSON.stringify(extent, null, 2)); + return null; + } + + /* it seems GraphHopper geocode swaps order of bottom and top compared + * to stock Photon, so just in case "clamp" both pairs + */ + return new Geocode.BoundingBox({ left: Math.min(extent[0], extent[2]), + bottom: Math.min(extent[1], extent[3]), + right: Math.max(extent[0], extent[2]), + top: Math.max(extent[1], extent[3]) }); +} + +/* check if an extent value is a valid latitude (clamp to the maximum latitude + * supported by the map view + */ +function _isValidLatitude(number) { + return Number.isFinite(number) && number >= -85.0511287798 && + number <= 85.0511287798; +} + +// check if an extent value is a valid longitude +function _isValidLongitude(number) { + return Number.isFinite(number) && number >= -180 && number <= 180; +} diff --git a/src/place.js b/src/place.js new file mode 100644 index 00000000..39d2caad --- /dev/null +++ b/src/place.js @@ -0,0 +1,449 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Overpass = imports.overpass; +const URLS = imports.urls; +const Utils = imports.utils; + +// Matches coordinates string in 'Decimal Degrees' format +const DECIMAL_COORDINATES_REGEX = ( + /^\s*(\-?\d+(?:\.\d+)?)°?\s*,\s*(\-?\d+(?:\.\d+)?)°?\s*$/ +); + +// Matches coordinates string in 'Degrees, Minutes, Seconds' format +const DMS_COORDINATES_REGEX = new RegExp( + /^\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(N|S)\s*,?/.source + + /\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(W|E)\s*$/.source, + "i" +); + +var Place = GObject.registerClass( +class Place extends Geocode.Place { + + _init(params) { + this._isCurrentLocation = params.isCurrentLocation; + delete params.isCurrentLocation; + + this._population = params.population; + delete params.population; + + this._website = params.website; + delete params.website; + + this._phone = params.phone; + delete params.phone; + + this._wiki = params.wiki; + delete params.wiki; + + this._openingHours = params.openingHours; + delete params.openingHours; + + this._internetAccess = params.internetAccess; + delete params.internetAccess; + + this._religion = params.religion; + delete params.religion; + + this._toilets = params.toilets; + delete params.toilets; + + this._note = params.note; + delete params.note; + + this._initialZoom = params.initialZoom; + delete params.initialZoom; + + /* set to true if the instance is pre-filled with Overpass data, + * at the time of creation, as will be the case when loading a place + * from an OSM object URL + */ + this._prefilled = params.prefilled; + delete params.prefilled; + + /* Determines if the place should be added to the place store */ + if (typeof(params.store) === 'undefined') { + this._store = true; + } else { + this._store = params.store; + delete params.store; + } + + this._wheelchair = params.wheelchair; + delete params.wheelchair; + + this._nativeName = params.nativeName; + delete params.nativeName; + + if (params.place) { + params = { osm_id: params.place.osm_id, + osm_type: params.place.osm_type, + name: params.place.name, + location: params.place.location, + bounding_box: params.place.bounding_box, + place_type: params.place.place_type, + street_address: params.place.street_address, + street: params.place.street, + building: params.place.building, + postal_code: params.place.postal_code, + area: params.place.area, + town: params.place.town, + state: params.place.state, + county: params.place.county, + country: params.place.country, + country_code: params.place.country_code, + continent: params.place.continent }; + } + + for (let prop in params) + if (!params[prop]) + delete params[prop]; + + super._init(params); + } + + set store(v) { + this._store = v; + } + + get store() { + return this._store; + } + + get uniqueID() { + return this.osm_type + '-' + this.osm_id; + } + + get isCurrentLocation() { + return this._isCurrentLocation; + } + + set population(v) { + this._population = v; + } + + get population() { + return this._population; + } + + set website(v) { + this._website = v; + } + + get website() { + return this._website; + } + + set phone(v) { + this._phone = v; + } + + get phone() { + return this._phone; + } + + set wiki(v) { + this._wiki = v; + } + + get wiki() { + return this._wiki; + } + + set openingHours(v) { + this._openingHours = v; + } + + get openingHours() { + return this._openingHours; + } + + set internetAccess(v) { + this._internetAccess = v; + } + + get internetAccess() { + return this._internetAccess; + } + + set religion(v) { + this._religion = v; + } + + get religion() { + return this._religion; + } + + set toilets(v) { + this._toilets = v; + } + + get toilets() { + return this._toilets; + } + + set note(v) { + this._note = v; + } + + get note() { + return this._note; + } + + set wheelchair(v) { + this._wheelchair = v; + } + + get wheelchair() { + return this._wheelchair; + } + + get initialZoom() { + return this._initialZoom; + } + + get prefilled() { + return this._prefilled; + } + + set prefilled(prefilled) { + this._prefilled = prefilled; + } + + get nativeName() { + return this._nativeName; + } + + set nativeName(nativeName) { + this._nativeName = nativeName; + } + + toJSON() { + let bounding_box = null; + + if (this.bounding_box) { + bounding_box = { top: this.bounding_box.top, + bottom: this.bounding_box.bottom, + left: this.bounding_box.left, + right: this.bounding_box.right }; + } + + let location = { latitude: this.location.latitude, + longitude: this.location.longitude, + altitude: this.location.altitude, + accuracy: this.location.accuracy }; + + return { id: this.osm_id, + osm_type: this.osm_type, + place_type: this.place_type, + name: this.name, + nativeName: this.nativeName, + bounding_box: bounding_box, + this_type: this.this_type, + location: location, + street_address: this.street_address, + street: this.street, + building: this.building, + postal_code: this.postal_code, + area: this.area, + town: this.town, + state: this.state, + county: this.county, + country: this.country, + country_code: this.country_code, + continent: this.continent, + population: this.population, + website: this.website, + phone: this.phone, + wiki: this.wiki, + wheelchair: this.wheelchair, + openingHours: this.openingHours, + internetAccess: this.internetAccess, + religion: this.religion, + toilets: this.toilets, + note: this.note }; + } + + match(searchString) { + let name = this.name; + if (!name) + return false; + + searchString = Utils.normalizeString(searchString); + if (searchString === null) + return false; + + if (searchString.length === 0) + return true; + + name = Utils.normalizeString(name); + if (name === null) + return false; + + /* the search method takes a regex, make sure we have a valid one */ + try { + return name.toLowerCase().search(searchString.toLowerCase()) !== -1; + } catch(e) { + /* not valid regex */ + return false; + } + } +}); + +Place.fromJSON = function(obj) { + let props = { }; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'id': + props.osm_id = prop; + break; + + case 'location': + props.location = new Location.Location(prop); + break; + + case 'bounding_box': + if (prop) + props.bounding_box = new Geocode.BoundingBox(prop); + break; + + default: + if (prop !== null && prop !== undefined) + props[key] = prop; + break; + } + } + return new Place(props); +}; + +Place.validateCoordinates = function(lat, lon) { + return lat <= 90 && lat >= -90 && lon <= 180 && lon >= -180; +}; + +Place.parseDecimalCoordinates = function(text) { + let match = text.match(DECIMAL_COORDINATES_REGEX); + + if (match) { + let latitude = parseFloat(match[1]); + let longitude = parseFloat(match[2]); + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseDmsCoordinates = function(text) { + let match = text.match(DMS_COORDINATES_REGEX); + + if (match) { + let degrees = parseFloat(match[1]); + let minutes = parseFloat(match[2]); + let seconds = parseFloat(match[3]); + let latitude = degrees + minutes / 60 + seconds / 3600; + + if (match[4].toUpperCase() === "S") + latitude *= -1; + + degrees = parseFloat(match[5]); + minutes = parseFloat(match[6]); + seconds = parseFloat(match[7]); + let longitude = degrees + minutes / 60 + seconds / 3600; + + if (match[8].toUpperCase() === "W") + longitude *= -1; + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseCoordinates = function(text) { + let coords = Place.parseDecimalCoordinates(text) || + Place.parseDmsCoordinates(text); + + if (coords && Place.validateCoordinates(coords[0], coords[1])) { + return new Location.Location({ latitude: coords[0], + longitude: coords[1] }); + } else { + return null; + } +}; + +let overpass = null; + +/* we can't import Application before the Place class has been defined + * since it's used via PlaceStore + */ +const Application = imports.application; + +function parseHttpURL(text, callback) { + let [type, id] = URLS.parseAsObjectURL(text); + + if (type && id) { + let storedPlace = Application.placeStore.existsWithOsmTypeAndId(type, id); + + if (storedPlace) { + callback(storedPlace, null); + return; + } + + if (overpass === null) + overpass = new Overpass.Overpass(); + + Application.application.mark_busy(); + overpass.fetchPlace(type, id, (place) => { + Application.application.unmark_busy(); + if (place) + callback(place, null); + else + callback(null, _("Place not found in OpenStreetMap")); + }); + } else { + let [lat, lon, zoom] = URLS.parseAsCoordinateURL(text); + + if (lat && lon) { + if (!Place.validateCoordinates(lat, lon)) { + callback(null, _("Coordinates in URL are not valid")); + } else { + let location = new Location.Location({ latitude: lat, longitude: lon }); + let place = zoom ? new Place({ location: location, initialZoom: zoom }) : + new Place({ location: location }); + + callback(place, null); + } + } else { + callback(null, _("URL is not supported")); + } + } +} + diff --git a/src/placeBar.js b/src/placeBar.js new file mode 100644 index 00000000..0cb66da1 --- /dev/null +++ b/src/placeBar.js @@ -0,0 +1,160 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const PlaceButtons = imports.placeButtons; +const PlaceDialog = imports.placeDialog; +const PlaceFormatter = imports.placeFormatter; +const PlaceView = imports.placeView; +const Utils = imports.utils; + +var PlaceBar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-bar.ui', + InternalChildren: [ 'actionbar', + 'altSendToButton', + 'box', + 'eventbox', + 'contactAvatar', + 'title' ], + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The place to show information about', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + }, +}, class PlaceBar extends Gtk.Revealer { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._buttons = new PlaceButtons.PlaceButtons({ mapView: this._mapView }); + this._buttons.initSendToButton(this._altSendToButton); + this._buttons.connect('place-edited', this._onPlaceEdited.bind(this)); + this._box.add(this._buttons); + + this._multipress = new Gtk.GestureMultiPress({ widget: this._eventbox }); + this._multipress.connect('released', this._onEventBoxClicked.bind(this)); + + Application.application.connect('notify::adaptive-mode', this._updateVisibility.bind(this)); + this.connect('notify::place', this._updatePlace.bind(this)); + + this._mapView.view.connect('touch-event', this._onMapClickEvent.bind(this)); + } + + _updatePlace() { + this._updateVisibility(); + + if (this._dialog) { + this._dialog.destroy(); + delete this._dialog; + } + + if (!this.place) { + return; + } + + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this._title.label = formatter.title; + + if (this.place instanceof ContactPlace.ContactPlace) { + this._contactAvatar.visible = true; + this._contactAvatar.text = formatter.title; + + this._contactAvatar.set_image_load_func(null); + Utils.load_icon(this.place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } else { + this._contactAvatar.visible = false; + } + + this._buttons.place = this.place; + + this._altSendToButton.visible = this.place.isCurrentLocation; + this._buttons.visible = !this.place.isCurrentLocation; + } + + _updateVisibility() { + if (Application.application.adaptive_mode) { + this.reveal_child = (this.place != null); + } else { + this.reveal_child = false; + } + } + + _onEventBoxClicked() { + if (this.place.isCurrentLocation) { + if (this._currentLocationView) { + this._box.remove(this._currentLocationView); + delete this._currentLocationView; + } else { + this._currentLocationView = new PlaceView.PlaceView({ place: this.place, + mapView: this._mapView, + inlineMode: true, + visible: true }); + this._box.add(this._currentLocationView); + } + } else { + this._dialog = new PlaceDialog.PlaceDialog ({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this.place }); + this._dialog.connect('response', () => { + this._dialog.destroy(); + delete this._dialog; + }); + this._dialog.show(); + } + } + + _onPlaceEdited() { + _updatePlace(); + } + + _onMapClickEvent(view, event) { + switch (event.type()) { + case Clutter.EventType.TOUCH_BEGIN: + this._tapped = true; + break; + case Clutter.EventType.TOUCH_UPDATE: + this._tapped = false; + case Clutter.EventType.TOUCH_END: + case Clutter.EventType.TOUCH_CANCEL: + if (this._tapped) { + Application.application.selected_place = null; + } + break; + } + + return Clutter.EVENT_PROPAGATE; + } +}); diff --git a/src/placeButtons.js b/src/placeButtons.js new file mode 100644 index 00000000..e8147bd4 --- /dev/null +++ b/src/placeButtons.js @@ -0,0 +1,190 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMUtils = imports.osmUtils; +const PlaceStore = imports.placeStore; +const SendToDialog = imports.sendToDialog; + +var PlaceButtons = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-buttons.ui', + InternalChildren: [ 'routeButton', + 'sendToButton', + 'favoriteButton', + 'editButton', + 'favoriteButtonImage' ], + Signals: { + /* Emitted when the Edit dialog is closed, because the place details + might have changed and the parent PlaceBar/PlaceView needs + refreshing */ + 'place-edited': {} + } +}, class PlaceButtons extends Gtk.Box { + _init(params) { + let place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._initSignals(); + + if (place) { + this.place = place; + } + } + + get place() { + return this._place; + } + + set place(newPlace) { + this._place = newPlace; + /* Use the PlaceStore's version of a place, if available. */ + if (Application.placeStore.exists(newPlace, null)) { + this._place = Application.placeStore.get(newPlace); + } else { + this._place = newPlace; + } + + this._updateFavoriteButton(!!this._place.store); + + this._editButton.visible = (!(this._place instanceof ContactPlace.ContactPlace) && + this._place.osm_id); + + this._routeButton.visible = !this._place.isCurrentLocation; + + this._showCheckIn = !!this._place.isCurrentLocation; + } + + initSendToButton(button) { + button.connect('clicked', () => { + let dialog = new SendToDialog.SendToDialog({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this._place, + showCheckIn: this._showCheckIn }); + dialog.connect('response', () => dialog.destroy()); + dialog.show(); + }); + } + + _initSignals() { + let placeStore = Application.placeStore; + let query = Application.routeQuery; + + this._favoriteButton.connect('clicked', () => { + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + this._favoriteButtonImage.icon_name = 'non-starred-symbolic'; + placeStore.removePlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } else { + this._favoriteButtonImage.icon_name = 'starred-symbolic'; + placeStore.addPlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } + }); + + this._routeButton.connect('clicked', () => { + let from = query.points[0]; + let to = query.points[query.points.length - 1]; + + query.freeze_notify(); + query.reset(); + Application.routingDelegator.reset(); + + if (Application.geoclue.place) + from.place = Application.geoclue.place; + to.place = this._place; + + Application.application.selected_place = null; + + query.thaw_notify(); + }); + + this._editButton.connect('clicked', this._onEditClicked.bind(this)); + + this.initSendToButton(this._sendToButton); + } + + _updateFavoriteButton(visible) { + let placeStore = Application.placeStore; + this._favoriteButton.visible = visible; + + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + this._favoriteButtonImage.icon_name = 'starred-symbolic'; + } else { + this._favoriteButtonImage.icon_name = 'non-starred-symbolic'; + } + } + + _onEditClicked() { + let osmEdit = Application.osmEdit; + /* if the user is not already signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this.get_toplevel(), true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._edit(); + }); + + return; + } + + this._edit(); + } + + _edit() { + let osmEdit = Application.osmEdit; + let dialog = osmEdit.createEditDialog(this.get_toplevel(), this._place); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + + switch (response) { + case OSMEditDialog.Response.UPLOADED: + // update place + let object = osmEdit.object; + OSMUtils.updatePlaceFromOSMObject(this._place, object); + // refresh place view + this.emit('place-edited'); + break; + default: + break; + } + }); + } +}); diff --git a/src/placeDialog.js b/src/placeDialog.js new file mode 100644 index 00000000..81cf6677 --- /dev/null +++ b/src/placeDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const PlaceFormatter = imports.placeFormatter; +const PlaceView = imports.placeView; + +var PlaceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-dialog.ui', + InternalChildren: [ 'scroll' ] +}, class PlaceDialog extends Gtk.Dialog { + _init(params) { + let place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + if (this.transient_for.is_maximized) { + this.maximize(); + } else { + let [width, height] = this.transient_for.get_size(); + + // Don't let the dialog get too wide + if (width > 400) { + width = 400 - 36; + height -= 36; + } + + this.set_default_size(width, height); + } + + this._placeView = new PlaceView.PlaceView({ place, + mapView, + valign: Gtk.Align.START, + visible: true }); + this._scroll.add(this._placeView); + + let formatter = new PlaceFormatter.PlaceFormatter(place); + this.title = formatter.title; + } +}); diff --git a/src/placeEntry.js b/src/placeEntry.js new file mode 100644 index 00000000..732d3f0f --- /dev/null +++ b/src/placeEntry.js @@ -0,0 +1,330 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013,2014 Jonas Danielsson, Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + * Mattias Bengtsson + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const PlacePopover = imports.placePopover; +const Utils = imports.utils; + +// minimum number of characters to start completion +const MIN_CHARS_COMPLETION = 3; + +// pattern matching CJK ideographic characters +const IDEOGRAPH_PATTERN = /[\u3300-\u9fff]/ + +var PlaceEntry = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceEntry extends Gtk.SearchEntry { + + set place(p) { + if (!this._place && !p) + return; + + /* if this entry belongs to a routing query entry, don't notify when + * setting the same place, otherwise it will trigger twice when + * initiating from the context menu + */ + if (!this._matchRoute && this._place && p && this._locEquals(this._place, p)) + return; + + if (p) { + if (p.name) + this._placeText = p.name; + else + this._placeText = '%.5f, %.5f'.format(p.location.latitude, + p.location.longitude); + } else { + this._placeText = ''; + } + + this.text = this._placeText; + + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } + + get popover() { + return this._popover; + } + + _init(props) { + let numVisible = props.num_visible || 6; + delete props.num_visible; + this._mapView = props.mapView; + delete props.mapView; + + if (!props.loupe) + props.primary_icon_name = null; + delete props.loupe; + + let maxChars = props.maxChars; + delete props.maxChars; + + this._matchRoute = props.matchRoute || false; + delete props.matchRoute; + + super._init(props); + + this._filter = new Gtk.TreeModelFilter({ child_model: Application.placeStore }); + this._filter.set_visible_func(this._completionVisibleFunc.bind(this)); + + this._popover = this._createPopover(numVisible, maxChars); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + + this._cache = {}; + + // clear cache when view moves, as result are location-dependent + this._mapView.view.connect('notify::latitude', () => this._cache = {}); + } + + _onSearchChanged() { + if (this._parse()) + return; + + // wait for an ongoing search + if (this._cancellable) + return; + + /* start search if more than the threshold number of characters have + * been entered, or if the first character is in the ideographic CJK + * block, as for these, shorter strings could be meaningful + */ + if ((this.text.length >= MIN_CHARS_COMPLETION || + (this.text.length > 0 && this.text[0].match(IDEOGRAPH_PATTERN))) && + this.text !== this._placeText) { + let cachedResults = this._cache[this.text]; + + if (cachedResults) { + this._updateResults(cachedResults); + } else { + // if no previous search has been performed, show spinner + if (!this._previousSearch || + this._previousSearch.length < MIN_CHARS_COMPLETION || + this._placeText) { + this._popover.showSpinner(); + } + this._placeText = ''; + this._doSearch(); + } + } else { + this._popover.hide(); + if (this.text.length === 0) + this.place = null; + this._previousSearch = null; + } + } + + _locEquals(placeA, placeB) { + if (!placeA.location || !placeB.location) + return false; + + return (placeA.location.latitude === placeB.location.latitude && + placeA.location.longitude === placeB.location.longitude); + } + + _createPopover(numVisible, maxChars) { + let popover = new PlacePopover.PlacePopover({ num_visible: numVisible, + relative_to: this, + maxChars: maxChars}); + + this.connect('size-allocate', (widget, allocation) => { + // Magic number to make the alignment pixel perfect. + let width_request = allocation.width + 20; + // set at least 320 px width to avoid too narrow in the sidebar + popover.width_request = Math.max(width_request, 320); + }); + + popover.connect('selected', (widget, place) => { + this.place = place; + popover.hide(); + }); + + return popover; + } + + _completionVisibleFunc(model, iter) { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + if (type !== PlaceStore.PlaceType.CONTACT && + type !== PlaceStore.PlaceType.RECENT_ROUTE || + (!this._matchRoute && type === PlaceStore.PlaceType.RECENT_ROUTE)) + return false; + + if (place !== null) + return place.match(this.text); + else + return false; + } + + /** + * Returns true if two locations are equal when rounded to displayes + * coordinate precision + */ + _roundedLocEquals(locA, locB) { + return '%.5f, %.5f'.format(locA.latitude, locA.longitude) === + '%.5f, %.5f'.format(locB.latitude, locB.longitude) + } + + _parse() { + let parsed = false; + + if (this.text.startsWith('geo:')) { + let location = new Geocode.Location(); + + try { + location.set_from_uri(this.text); + this.place = new Place.Place({ location: location }); + } catch(e) { + let msg = _("Failed to parse Geo URI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + } + + parsed = true; + } + + let parsedLocation = Place.Place.parseCoordinates(this.text); + if (parsedLocation) { + /* if the place was a parsed OSM coordinate URL, it will have + * gotten re-written as bare coordinates and trigger a search-changed, + * in this case don't re-set the place, as it will loose the zoom + * level from the URL if set + */ + if (!this.place || + !this._roundedLocEquals(parsedLocation, this.place.location)) + this.place = new Place.Place({ location: parsedLocation }); + parsed = true; + } + + if (this.text.startsWith('http://') || + this.text.startsWith('https://')) { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = null; + Place.parseHttpURL(this.text, (place, error) => { + if (place) + this.place = place; + else + Utils.showDialog(error, + Gtk.MessageType.ERROR, this.get_toplevel()); + }); + + /* don't cancel ongoing search, as we have started an async + * operation looking up the OSM object + */ + return true; + } + + if (parsed && this._cancellable) + this._cancellable.cancel(); + + return parsed; + } + + _doSearch() { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = new Gio.Cancellable(); + this._previousSearch = this.text; + GeocodeFactory.getGeocoder().search(this.text, + this._mapView.view.latitude, + this._mapView.view.longitude, + this._cancellable, + (places, error) => { + this._cancellable = null; + + if (error) { + this.place = null; + this._popover.showError(); + } else { + this._updateResults(places); + + // cache results for later + this._cache[this._previousSearch] = places; + } + + // if search input has been updated, trigger a refresh + if (this.text !== this._previousSearch) + this._onSearchChanged(); + }); + } + + _updateResults(places) { + if (!places) { + this.place = null; + this._popover.showNoResult(); + return; + } + + let completedPlaces = []; + + + this._filter.refilter(); + this._filter.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + completedPlaces.push({ place: place, type: type }); + }); + + let placeStore = Application.placeStore; + + places.forEach((place) => { + let type; + + if (placeStore.exists(place, PlaceStore.PlaceType.RECENT)) + type = PlaceStore.PlaceType.RECENT; + else if (placeStore.exists(place, PlaceStore.PlaceType.FAVORITE)) + type = PlaceStore.PlaceType.FAVORITE; + else + type = PlaceStore.PlaceType.ANY; + + completedPlaces.push({ place: place, type: type }); + }); + + this._popover.updateResult(completedPlaces, this.text); + this._popover.showResult(); + } +}); diff --git a/src/placeFormatter.js b/src/placeFormatter.js new file mode 100644 index 00000000..58dff6d1 --- /dev/null +++ b/src/placeFormatter.js @@ -0,0 +1,114 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; + +const StoredRoute = imports.storedRoute; + +var PlaceFormatter = class PlaceFormatter { + + constructor(place) { + this._place = place; + this._rows = []; + this._titleProperty = 'name'; + + this._update(); + } + + get place() { + return this._place; + } + + get title() { + let title; + // For the 'name' property we split after comma to avoid + // duplicating information in the title from the Geocode + // display name. + if (this._titleProperty === 'name') + title = this._place[this._titleProperty].split(',')[0]; + else + title = this.place[this._titleProperty]; + + return title; + } + + get rows() { + return this._rows; + } + + getDetailsString() { + if (this._place instanceof StoredRoute.StoredRoute) + return this._place.viaString; + + return this.rows.map((row) => { + return row.map((prop) => { + return this._place[prop]; + }).join(', '); + }).join(', '); + } + + _update() { + switch (this._place.place_type) { + case Geocode.PlaceType.COUNTRY: + if (this._place.country) + this._titleProperty = 'country'; + + this._addRow(['country_code']); + break; + + case Geocode.PlaceType.STATE: + if (this._place.state) + this._titleProperty = 'state'; + break; + + case Geocode.PlaceType.COUNTY: + if (this._place.county) + this._titleProperty = 'county'; + break; + + case Geocode.PlaceType.TOWN: + if (this._place.county) + this._addRow(['county']); + else if (this._place.state) + this._addRow(['state']); + else if (this._place.area) + this._addRow(['area']); + break; + + default: + if (this._place.street_address) + this._addRow(['street_address']); + else if (this._place.street) + this._addRow(['street']); + + if (this._place.town !== this._place[this._titleProperty]) + this._addRow(['postal_code', 'town']); + break; + } + } + + _addRow(properties) { + properties = properties.filter((prop) => this._place[prop] ? true : false); + + if (properties.length > 0) + this._rows.push(properties); + } +}; diff --git a/src/placeListRow.js b/src/placeListRow.js new file mode 100644 index 00000000..abb40b7d --- /dev/null +++ b/src/placeListRow.js @@ -0,0 +1,105 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +var ROW_HEIGHT = 55; + +var PlaceListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-list-row.ui', + InternalChildren: [ 'icon', + 'iconStack', + 'contactAvatar', + 'name', + 'details', + 'typeIcon' ], +}, class PlaceListRow extends Gtk.ListBoxRow { + + _init(params) { + let place = params.place; + delete params.place; + + let searchString = params.searchString || ''; + delete params.searchString; + + let type = params.type; + delete params.type; + + params.height_request = ROW_HEIGHT; + super._init(params); + this.update(place, type, searchString); + } + + update(place, type, searchString) { + this.place = place; + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this.title = formatter.title; + let markup = GLib.markup_escape_text(formatter.title, -1); + + this._name.label = this._boldMatch(markup, searchString); + this._details.label = GLib.markup_escape_text(formatter.getDetailsString(),-1); + + if (place instanceof ContactPlace.ContactPlace) { + this._iconStack.set_visible_child(this._contactAvatar); + + this._contactAvatar.text = formatter.title; + + if (place.icon) { + Utils.load_icon(place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } else { + this._contactAvatar.set_image_load_func(null); + } + } else if (place.icon) { + this._iconStack.set_visible_child(this._icon); + this._icon.gicon = place.icon; + } + + if (type === PlaceStore.PlaceType.RECENT || + type === PlaceStore.PlaceType.RECENT_ROUTE) + this._typeIcon.icon_name = 'document-open-recent-symbolic'; + else if (type === PlaceStore.PlaceType.FAVORITE) + this._typeIcon.icon_name = 'starred-symbolic'; + else if (type === PlaceStore.PlaceType.CONTACT) + this._typeIcon.icon_name = 'avatar-default-symbolic'; + else + this._typeIcon.icon_name = null; + } + + _boldMatch(title, string) { + let canonicalString = Utils.normalizeString(string).toLowerCase(); + let canonicalTitle = Utils.normalizeString(title).toLowerCase(); + + let index = canonicalTitle.indexOf(canonicalString); + + if (index !== -1) { + let substring = title.substring(index, index + string.length); + title = title.replace(substring, substring.bold()); + } + return title; + } +}); diff --git a/src/placeMarker.js b/src/placeMarker.js new file mode 100644 index 00000000..3aba8c8b --- /dev/null +++ b/src/placeMarker.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; + +var PlaceMarker = GObject.registerClass( +class PlaceMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this.add_actor(this._actorFromIconName('mark-location', 32)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: this.height - 3 }; + } + + _hasBubble() { + return true; + } +}); diff --git a/src/placePopover.js b/src/placePopover.js new file mode 100644 index 00000000..72917423 --- /dev/null +++ b/src/placePopover.js @@ -0,0 +1,143 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; +const SearchPopover = imports.searchPopover; + +const _PLACE_ICON_SIZE = 20; + +var PlacePopover = GObject.registerClass({ + Signals : { + 'selected' : { param_types: [ GObject.TYPE_OBJECT ] } + }, + Template: 'resource:///org/gnome/Maps/ui/place-popover.ui', + InternalChildren: [ 'scrolledWindow', + 'stack', + 'spinner', + 'list', + 'noResultsLabel', + 'errorLabel' ], +}, class PlacePopover extends SearchPopover.SearchPopover { + + _init(props) { + let numVisible = props.num_visible; + delete props.num_visible; + + this._maxChars = props.maxChars; + delete props.maxChars; + + props.transitions_enabled = false; + super._init(props); + + this._entry = this.relative_to; + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.place); + }); + + this._list.set_header_func((row, before) => { + let header = new Gtk.Separator(); + if (before) + row.set_header(header); + else + row.set_header(null); + }); + + let rowHeight = PlaceListRow.ROW_HEIGHT; + this._scrolledWindow.min_content_height = numVisible * rowHeight + 6; + + // This silents warning at Maps exit about this widget being + // visible but not mapped. + this.connect('unmap', (popover) => popover.hide()); + } + + showSpinner() { + this._spinner.start(); + this._stack.visible_child = this._spinner; + + if (!this.visible) + this.show(); + } + + showResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._scrolledWindow; + + let row = this._list.get_row_at_index(0); + if (row) + this._list.select_row(row); + + if (!this.visible) + this.show(); + } + + showNoResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._noResultsLabel; + } + + showError() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._errorLabel; + } + + updateResult(places, searchString) { + let i = 0; + + places.forEach((p) => { + let row = this._list.get_row_at_index(i); + + // update existing row, if there is one, otherwise create new + if (row) + row.update(p.place, p.type, searchString); + else + this._addRow(p.place, p.type, searchString); + + i++; + }); + + // remove remaining rows + let row = this._list.get_row_at_index(i); + + while (row) { + row.destroy(); + row = this._list.get_row_at_index(i); + } + } + + _addRow(place, type, searchString) { + let row = new PlaceListRow.PlaceListRow({ place: place, + searchString: searchString, + type: type, + can_focus: true }); + this._list.add(row); + } +}); diff --git a/src/placeStore.js b/src/placeStore.js new file mode 100644 index 00000000..8dd8ed4a --- /dev/null +++ b/src/placeStore.js @@ -0,0 +1,359 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const Place = imports.place; +const StoredRoute = imports.storedRoute; +const Utils = imports.utils; + +const _PLACES_STORE_FILE = 'maps-places.json'; +const _ICON_SIZE = 20; +const _ONE_DAY = 1000 * 60 * 60 * 24; // one day in ms +const _STALE_THRESHOLD = 7; // mark the osm information as stale after a week + +var PlaceType = { + ANY: -1, + RECENT: 0, + FAVORITE: 1, + CONTACT: 2, + RECENT_ROUTE: 3 +}; + +var Columns = { + PLACE_ICON: 0, + PLACE: 1, + NAME: 2, + TYPE: 3, + ADDED: 4, + LANGUAGE: 5 +}; + +var PlaceStore = GObject.registerClass( +class PlaceStore extends Gtk.ListStore { + + _init(params) { + this._recentPlacesLimit = params.recentPlacesLimit; + delete params.recentPlacesLimit; + + this._recentRoutesLimit = params.recentRoutesLimit; + delete params.recentRoutesLimit; + + this._numRecentPlaces = 0; + this._numRecentRoutes = 0; + this.filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _PLACES_STORE_FILE]); + this._typeTable = {}; + this._language = Utils.getLanguage(); + + super._init(params); + this.set_column_types([GdkPixbuf.Pixbuf, + GObject.TYPE_OBJECT, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_DOUBLE, + GObject.TYPE_STRING]); + + this.set_sort_column_id(Columns.ADDED, Gtk.SortType.ASCENDING); + } + + _addPlace(place, type) { + this._setPlace(this.append(), place, type, new Date().getTime(), + this._language); + this._store(); + } + + _addContact(place) { + if (this.exists(place, PlaceType.CONTACT)) { + return; + } + + this._addPlace(place, PlaceType.CONTACT); + } + + _addFavorite(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.FAVORITE)) { + return; + } + + if (this.exists(place, PlaceType.RECENT)) { + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + return p.uniqueID === place.uniqueID; + }, true); + } + this._addPlace(place, PlaceType.FAVORITE); + } + + _addRecent(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.RECENT)) { + this.updatePlace(place); + return; + } + + if (this._numRecentPlaces === this._recentPlacesLimit) { + // Since we sort by added, the oldest recent will be + // the first one we encounter. + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentPlaces--; + return true; + } + return false; + }, true); + } + this._addPlace(place, PlaceType.RECENT); + this._numRecentPlaces++; + } + + _addRecentRoute(stored) { + if (this.exists(stored, PlaceType.RECENT_ROUTE)) + return; + + if (stored.containsCurrentLocation) + return; + + if (this._numRecentRoutes >= this._recentRoutesLimit) { + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT_ROUTE) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentRoutes--; + return true; + } + return false; + }, true); + } + this._addPlace(stored, PlaceType.RECENT_ROUTE); + this._numRecentRoutes++; + } + + load() { + if (!GLib.file_test(this.filename, GLib.FileTest.EXISTS)) + return; + + let buffer = Utils.readFile(this.filename); + if (buffer === null) + return; + try { + let jsonArray = JSON.parse(Utils.getBufferText(buffer)); + jsonArray.forEach(({ place, type, added, language }) => { + // We expect exception to be thrown in this line when parsing + // gnome-maps 3.14 or below place stores since the "place" + // key is not present. + if (!place.id) + return; + + // GtkListStore doesn't seem to handle null/undefined for strings + if (!language) + language = ''; + + let p; + if (type === PlaceType.RECENT_ROUTE) { + if (this._numRecentRoutes >= this._recentRoutesLimit) + return; + p = StoredRoute.StoredRoute.fromJSON(place); + this._numRecentRoutes++; + } else { + p = Place.Place.fromJSON(place); + if (type === PlaceType.RECENT) + this._numRecentPlaces++; + } + this._setPlace(this.append(), p, type, added, language); + }); + } catch (e) { + throw new Error('failed to parse places file'); + } + } + + addPlace(place, type) { + if (type === PlaceType.FAVORITE) + this._addFavorite(place, type); + else if (type === PlaceType.RECENT) + this._addRecent(place, type); + else if (type === PlaceType.CONTACT) + this._addContact(place, type); + else if (type === PlaceType.RECENT_ROUTE) + this._addRecentRoute(place); + } + + removePlace(place, placeType) { + if (!this.exists(place, placeType)) + return; + + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + this._typeTable[place.uniqueID] = null; + return true; + } + return false; + }, true); + this._store(); + } + + getModelForPlaceType(placeType) { + let filter = new Gtk.TreeModelFilter({ child_model: this }); + + filter.set_visible_func((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + return (type === placeType); + }); + + return filter; + } + + _store() { + let jsonArray = []; + this.foreach((model, path, iter) => { + let place = model.get_value(iter, Columns.PLACE); + let type = model.get_value(iter, Columns.TYPE); + let added = model.get_value(iter, Columns.ADDED); + let language = model.get_value(iter, Columns.LANGUAGE); + + if (!place || !place.store) + return; + jsonArray.push({ + place: place.toJSON(), + type: type, + added: added, + language: language + }); + }); + + let buffer = JSON.stringify(jsonArray); + if (!Utils.writeFile(this.filename, buffer)) + log('Failed to write places file!'); + } + + _setPlace(iter, place, type, added, language) { + this.set(iter, + [Columns.PLACE, + Columns.NAME, + Columns.TYPE, + Columns.ADDED, + Columns.LANGUAGE], + [place, + place.name, + type, + added, + language]); + + if (place.icon !== null) { + Utils.load_icon(place.icon, _ICON_SIZE, (pixbuf) => { + this.set(iter, [Columns.ICON], [pixbuf]); + }); + } + this._typeTable[place.uniqueID] = type; + } + + get(place) { + let storedPlace = null; + + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + storedPlace = p; + return true; + } + return false; + }); + return storedPlace; + } + + isStale(place) { + if (!this.exists(place, null)) + return false; + + let added = null; + let language = null; + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let p_type = model.get_value(iter, Columns.TYPE); + added = model.get_value(iter, Columns.ADDED); + language = model.get_value(iter, Columns.LANGUAGE); + } + }); + + let now = new Date().getTime(); + let days = Math.abs(now - added) / _ONE_DAY; + + return language !== this._language || days >= _STALE_THRESHOLD; + } + + exists(place, type) { + if (type !== undefined && type !== null && this._typeTable[place.uniqueID] !== undefined) + return this._typeTable[place.uniqueID] === type; + else + return this._typeTable[place.uniqueID] !== undefined && + this._typeTable[place.uniqueID] !== null; + } + + existsWithOsmTypeAndId(osmType, osmId) { + let id = osmType + '-' + osmId; + if (this._typeTable[id]) + return this._typeTable[id]; + else + return null; + } + + _removeIf(evalFunc, stop) { + this.foreach((model, path, iter) => { + if (evalFunc(model, iter)) { + this.remove(iter); + if (stop) + return true; + } + return false; + }); + } + + updatePlace(place) { + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let type = model.get_value(iter, Columns.TYPE); + this._setPlace(iter, place, type, new Date().getTime(), + this._language); + this._store(); + return; + } + }); + } +}); diff --git a/src/placeView.js b/src/placeView.js new file mode 100644 index 00000000..1b4fed94 --- /dev/null +++ b/src/placeView.js @@ -0,0 +1,605 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const Format = imports.format; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const Overpass = imports.overpass; +const Place = imports.place; +const PlaceViewImage = imports.placeViewImage; +const PlaceButtons = imports.placeButtons; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Translations = imports.translations; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +// maximum dimension of thumbnails to fetch from Wikipedia +const THUMBNAIL_FETCH_SIZE = 360; + +// Unicode left-to-right marker +const LRM = '\u200E'; + +var PlaceView = GObject.registerClass({ + Properties: { + 'overpass-place': GObject.ParamSpec.object('overpass-place', + 'Overpass Place', + 'The place as filled in by Overpass', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceView extends Gtk.Box { + + _init(params) { + this._place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + /* This mode is used in PlaceBar for inline current location details. + It hides the title box and decreases the start margin on the rows. */ + this._inlineMode = !!params.inlineMode; + delete params.inlineMode; + + super._init(params); + + let ui = Utils.getUIObject('place-view', [ 'bubble-main-box', + 'bubble-spinner', + 'bubble-thumbnail', + 'thumbnail-separator', + 'label-title', + 'native-name', + 'contact-avatar', + 'address-label', + 'bubble-main-stack', + 'bubble-content-area', + 'place-buttons', + 'send-to-button-alt', + 'title-box' ]); + this._title = ui.labelTitle; + this._nativeName = ui.nativeName; + this._thumbnail = ui.bubbleThumbnail; + this._thumbnailSeparator = ui.thumbnailSeparator; + this._content = ui.bubbleContentArea; + this._mainStack = ui.bubbleMainStack; + this._spinner = ui.bubbleSpinner; + this._mainBox = ui.bubbleMainBox; + this._contactAvatar = ui.contactAvatar; + this._addressLabel = ui.addressLabel; + + this.add(this._mainStack); + + let placeButtons = new PlaceButtons.PlaceButtons({ place: this._place, + mapView: mapView }); + placeButtons.connect('place-edited', this._onPlaceEdited.bind(this)); + ui.placeButtons.add(placeButtons); + + if (this.place.isCurrentLocation) { + /* Current Location bubbles have a slightly different layout, to + avoid awkward whitespace */ + + /* hide the normal button area */ + ui.placeButtons.visible = false; + + /* show the top-end-corner share button instead */ + ui.sendToButtonAlt.visible = true; + placeButtons.initSendToButton(ui.sendToButtonAlt); + + /* adjust some margins */ + ui.titleBox.margin = 12; + ui.titleBox.marginStart = 18; + ui.titleBox.spacing = 18; + } + + /* Set up contact avatar */ + if (this.place instanceof ContactPlace.ContactPlace) { + this._contactAvatar.visible = true; + Utils.load_icon(this.place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } + + this.loading = true; + + this._placeDetails = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, + visible: true, + hexpand: true }); + this.content.add(this._placeDetails); + + if (this.place.isCurrentLocation) { + this._populate(this.place); + } else { + let overpass = new Overpass.Overpass(); + + /* use a property binding from the Overpass instance to avoid + * accessing this object after the underlying GObject has + * been finalized */ + overpass.bind_property('place', this, 'overpass-place', + GObject.BindingFlags.DEFAULT); + this.connect('notify::overpass-place', () => this._onInfoAdded()); + + if (Application.placeStore.exists(this.place, null)) { + + // If the place is stale, update from Overpass. + if (Application.placeStore.isStale(this.place)) { + overpass.addInfo(this.place); + } else { + this._place = Application.placeStore.get(this.place); + this._populate(this.place); + } + } else if (this.place.store && !this.place.prefilled) { + overpass.addInfo(this.place); + } else { + this._populate(this.place); + } + } + + if (this._inlineMode) { + ui.titleBox.hide(); + } + + this.updatePlaceDetails(); + + this._place.connect('notify::location', () => this._updateLocation()); + } + + get place() { + return this._place; + } + + get content() { + return this._content; + } + + get thumbnail() { + return this._thumbnail.pixbuf; + } + + set thumbnail(val) { + if (val) { + this._thumbnail.pixbuf = val; + this._thumbnail.visible = true; + this._thumbnailSeparator.visible = true; + } + } + + get loading() { + return this._spinner.active; + } + set loading(val) { + this._mainStack.set_visible_child(val ? this._spinner : this._mainBox); + this._spinner.active = val; + } + + updatePlaceDetails() { + let place = this.place; + let formatter = new PlaceFormatter.PlaceFormatter(place); + + let address = formatter.rows.map((row) => { + row = row.map(function(prop) { + return GLib.markup_escape_text(place[prop], -1); + }); + return row.join(', '); + }); + if (address.length > 0) { + this._addressLabel.label = address.join('\n'); + this._addressLabel.show(); + } else { + this._addressLabel.hide(); + } + + this._title.label = formatter.title; + this._contactAvatar.text = formatter.title; + + /* hide native name by default, so that it is only shown when it + * should, in case it changed when re-applying changes from Overpass. + * This could happen if the locale changed since last run. + */ + this._nativeName.visible = false; + + /* show native name unless it's equal to the localized name, or + * if the localized name is a substring of the native name, as can + * be the case in e.g. duo-lingual native names, such as is used in + * Brussels of the form "French name - Dutch name" + */ + if (place.nativeName && !place.nativeName.includes(place.name)) { + this._nativeName.label = place.nativeName; + + /* only show native name if there's installed fonts capable of + * showing it + */ + if (this._nativeName.get_layout().get_unknown_glyphs_count() === 0) + this._nativeName.visible = true; + } + } + + _onInfoAdded() { + this._populate(this.place); + if (Application.placeStore.exists(this.place, null)) + Application.placeStore.updatePlace(this.place); + else + Application.placeStore.addPlace(this.place, PlaceStore.PlaceType.RECENT); + } + + _formatWikiLink(wiki) { + let lang = Wikipedia.getLanguage(wiki); + let article = Wikipedia.getArticle(wiki); + + return Format.vprintf('https://%s.wikipedia.org/wiki/%s', [ lang, article ]); + } + + _createContent(place) { + let content = []; + + if (place.isCurrentLocation) { + let coordinates = place.location.latitude.toFixed(5) + + ', ' + + place.location.longitude.toFixed(5); + let accuracyDescription = Utils.getAccuracyDescription(this.place.location.accuracy); + + content.push({ label: _("Coordinates"), + icon: 'map-marker-symbolic', + info: coordinates }); + + content.push({ label: _("Accuracy"), + icon: 'find-location-symbolic', + /* Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) */ + info: _("Accuracy: %s").format(accuracyDescription) }); + } + + if (place.website) { + if (Utils.isValidWebsite(place.website)) { + content.push({ label: _("Website"), + icon: 'web-browser-symbolic', + info: GLib.markup_escape_text(place.website, -1), + linkUrl: place.website }); + } + } + + if (place.phone) { + /* since the phone numbers are typically always rendered + * left-to-right, insert an explicit LRM char to avoid issues + * with phone numbers in international format starting with a + + * which is considered a "weak" character to determine Unicode + * text direction + */ + let phone = { label: _("Phone number"), + icon: 'phone-oldschool-symbolic', + info: LRM + GLib.markup_escape_text(place.phone, -1) }; + + if (Utils.uriSchemeSupported('tel')) { + /* RFC3966 only allows "-", '.", "(", and ")" as visual + * separator characters in a global phone number, no space */ + phone.linkUrl = 'tel:%s'.format(place.phone.replace(/\s+/g, '')); + } + + content.push(phone); + } + + if (place.openingHours) { + content.push({ label: _("Opening hours"), + icon: 'emoji-recent-symbolic', + grid: Translations.translateOpeningHours(place.openingHours) }); + } + + switch(place.internetAccess) { + case 'yes': + /* Translators: + * There is public internet access but the particular kind is unknown. + */ + content.push({ info: _("Public internet access"), + icon: 'network-wireless-signal-excellent-symbolic' }); + break; + + case 'no': + /* Translators: + * no internet access is offered in a place where + * someone might expect it. + */ + content.push({ info: _("No internet access"), + icon: 'network-wireless-offline-symbolic' }); + break; + + case 'wlan': + /* Translators: + * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. + */ + content.push({ info: _("Public Wi-Fi"), + icon: 'network-wireless-signal-excellent-symbolic' }); + break; + + case 'wired': + /* Translators: + * This means a a place where you can plug in your laptop with ethernet. + */ + content.push({ info: _("Wired internet access"), + icon: 'network-wired-symbolic' }); + break; + + case 'terminal': + /* Translators: + * Like internet cafe or library where the computer is given. + */ + content.push({ info: _("Computers available for use"), + icon: 'computer-symbolic' }); + break; + + case 'service': + /* Translators: + * This means there is personnel which helps you in case of problems. + */ + content.push({ info: _("Internet assistance available"), + icon: 'computer-symbolic' }); + break; + } + + if (place.toilets === 'no') { + content.push({ info: _("No toilets available"), + icon: 'no-toilets-symbolic' }); + } else if (place.toilets === 'yes') { + content.push({ info: _("Toilets available"), + icon: 'toilets-symbolic' }); + } + + switch(place.wheelchair) { + case 'yes': + /* Translators: + * This means wheelchairs have full unrestricted access. + */ + content.push({ info: _("Wheelchair accessible"), + icon: 'wheelchair-symbolic' }); + break; + + case 'limited': + /* Translators: + * This means wheelchairs have partial access (e.g some areas + * can be accessed and others not, areas requiring assistance + * by someone pushing up a steep gradient). + */ + content.push({ info: _("Limited wheelchair accessibility"), + icon: 'wheelchair-limited-symbolic' }); + break; + + case 'no': + /* Translators: + * This means wheelchairs have no unrestricted access + * (e.g. stair only access). + */ + content.push({ info: _("Not wheelchair accessible"), + icon: 'no-wheelchair-symbolic' }); + break; + + case 'designated': + /* Translators: + * This means that the way or area is designated or purpose built + * for wheelchairs (e.g. elevators designed for wheelchair access + * only). This is rarely used. + */ + content.push({ info: _("Designated for wheelchair users"), + icon: 'wheelchair-symbolic' }); + break; + } + + if (place.population) { + /* TODO: this is a bit of a work-around to re-interpret the population, + * stored as a string into an integer to convert back to a locale- + * formatted string. Ideally it should be kept as an integer value + * in the Place class. But this will also need to be handled by the + * PlaceStore, possible in a backwards-compatible way + */ + content.push({ label: _("Population"), + icon: 'system-users-symbolic', + info: parseInt(place.population).toLocaleString() }); + } + + /* The default value for a place's altitude is -G_MAXDOUBLE, so we can + * compare to an impossibly low altitude to see if one is set */ + if (place.location.altitude > -1000000000.0) { + let alt = place.location.altitude; + content.push({ label: _("Altitude"), + icon: 'mountain-symbolic', + info: Utils.prettyDistance(alt, true) }); + } + + if (place.religion) { + content.push({ label: _("Religion:"), + info: Translations.translateReligion(place.religion) }); + } + + if (place.wiki) { + content.push({ type: 'wikipedia', info: '' }); + } + + return content; + } + + _attachContent(content) { + content.forEach(({ type, label, icon, linkUrl, info, grid }) => { + let separator = new Gtk.Separator({ visible: true }); + separator.get_style_context().add_class('no-margin-separator'); + this._placeDetails.add(separator); + + let box = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, + visible: true, + marginStart: 18, + marginEnd: 18, + marginTop: 6, + marginBottom: 6, + spacing: 12 }); + + if (this._inlineMode) { + box.marginStart = 6; + } + + if (icon) { + let widget = new Gtk.Image({ icon_name: icon, + visible: true, + xalign: 1, + valign: Gtk.Align.START, + halign: Gtk.Align.END }); + + if (label) { + widget.tooltip_markup = label; + } + + box.add(widget); + } else if (label) { + let widget = new Gtk.Label({ label: label.italics(), + visible: true, + use_markup: true, + yalign: 0, + halign: Gtk.Align.END }); + box.add(widget); + } + + if (linkUrl) { + let uri = GLib.markup_escape_text(linkUrl, -1); + /* double-escape the tooltip text, as GTK treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + info = '%s'.format(uri, + tooltipText, + info); + } + + let widget; + + if (grid) { + widget = new Gtk.Grid({ visible: true, + column_spacing: 8 }); + + for (let i = 0; i < grid.length; i++) { + let row = grid[i]; + + for (let j = 0; j < row.length; j++) { + let label = new Gtk.Label({ label: row[j], + visible: true, + xalign: 0, + hexpand: false, + wrap: true, + halign: Gtk.Align.FILL }); + + if (j === 1) { + /* set tabular digits for the second column to get + * aligned times + */ + let attrList = Pango.AttrList.new(); + let tnum = Pango.AttrFontFeatures.new('tnum'); + + attrList.insert(tnum); + label.set_attributes(attrList); + } + + widget.attach(label, j, i, 1, 1); + } + } + } else { + widget = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + max_width_chars: 30, + wrap: true, + xalign: 0, + hexpand: true, + halign: Gtk.Align.FILL }); + + if (type === 'wikipedia') { + box.marginTop = 14; + box.marginBottom = 18; + this._wikipediaLabel = widget; + } + } + + box.add(widget); + this._placeDetails.add(box); + }); + } + + _populate(place) { + // refresh place view + this._clearView(); + + let content = this._createContent(place); + this._attachContent(content); + + if (place.wiki) { + this._requestWikipedia(place.wiki); + } + + this.updatePlaceDetails(); + this.loading = false; + } + + _requestWikipedia(wiki) { + Wikipedia.fetchArticleInfo(wiki, + THUMBNAIL_FETCH_SIZE, + this._onWikiMetadataComplete.bind(this), + this._onThumbnailComplete.bind(this)); + } + + _onThumbnailComplete(thumbnail) { + this.thumbnail = thumbnail; + } + + _onWikiMetadataComplete(wiki, metadata) { + if (metadata.extract) { + let text = GLib.markup_escape_text(metadata.extract, -1); + let link = this._formatWikiLink(wiki); + + /* If the text goes past some number of characters (see + * wikipedia.js), it is ellipsized with '...' + * GNOME HIG says to use U+2026 HORIZONTAL ELLIPSIS instead. + * Also, trim whitespace. */ + text = text.replace(/\s*\.\.\.\s*$/, '…'); + + let uri = GLib.markup_escape_text(link, -1); + /* double-escape the tooltip text, as GTK treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + + /* Translators: This is the text for the "Wikipedia" link at the end + of summaries */ + this._wikipediaLabel.label = `${text} ${ _("Wikipedia") }`; + } + } + + // clear the view widgets to be able to re-populate an updated place + _clearView() { + this._placeDetails.get_children().forEach((child) => child.destroy()); + } + + // called when the place's location changes (e.g. for the current location) + _updateLocation() { + this._populate(this.place); + } + + /* called when the place is edited via the OSM edit dialog */ + _onPlaceEdited() { + this._populate(this._place); + } +}); diff --git a/src/placeViewImage.js b/src/placeViewImage.js new file mode 100644 index 00000000..56d0c2cb --- /dev/null +++ b/src/placeViewImage.js @@ -0,0 +1,101 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* The maximum aspect ratio, after which the image will be cropped vertically */ +const MAX_ASPECT_RATIO = 1; + +var PlaceViewImage = GObject.registerClass( +class PlaceViewImage extends Gtk.DrawingArea { + _init(params) { + super._init(params); + + this._pixbuf = null; + this._cached = null; + } + + get pixbuf() { + return this._pixbuf; + } + + set pixbuf(val) { + /* crop the pixbuf to the max aspect ratio, if necessary */ + if (val.height / val.width > MAX_ASPECT_RATIO) { + let y = (val.height - val.width * MAX_ASPECT_RATIO) / 2; + val = val.new_subpixbuf(0, y, val.width, val.width * MAX_ASPECT_RATIO); + } + + this._pixbuf = val; + this.queue_resize(); + } + + vfunc_draw(cr) { + let [{x, y, width, height}, baseline] = this.get_allocated_size(); + + if (this._pixbuf === null || width === 0 || height === 0) { + return; + } + + width *= this.scale_factor; + height *= this.scale_factor; + + /* Cache surfaces so we don't have to do as much scaling */ + if (this._cached === null || width !== this._cached.getWidth() || height !== this._cached.getHeight()) { + // create a new, scaled image + this._cached = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + + let cr_scaled = new Cairo.Context(this._cached); + cr_scaled.scale(width / this._pixbuf.width, height / this._pixbuf.height); + Gdk.cairo_set_source_pixbuf(cr_scaled, this._pixbuf, 0, 0); + cr_scaled.paint(); + } + + cr.save(); + + if (this.scale_factor !== 1) { + cr.scale(1 / this.scale_factor, 1 / this.scale_factor); + } + + cr.setSourceSurface(this._cached, 0, 0); + + cr.paint(); + cr.restore(); + + return false; + } + + vfunc_get_request_mode() { + return Gtk.SizeRequestMode.HEIGHT_FOR_WIDTH; + } + + vfunc_get_preferred_height_for_width(width) { + if (this._pixbuf) { + let height = (this._pixbuf.height / this._pixbuf.width) * width; + return [height, height]; + } else { + return [0, 0]; + } + } +}); diff --git a/src/printLayout.js b/src/printLayout.js new file mode 100644 index 00000000..5602612b --- /dev/null +++ b/src/printLayout.js @@ -0,0 +1,364 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; +const PangoCairo = imports.gi.PangoCairo; + +const Application = imports.application; +const Color = imports.color; +const MapView = imports.mapView; +const MapSource = imports.mapSource; +const TurnPointMarker = imports.turnPointMarker; +const Utils = imports.utils; + +/* Following constant has unit as meters */ +const _SHORT_LAYOUT_MAX_DISTANCE = 3000; + +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +/* All following constants are ratios of surface size to page size */ +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; + +function newFromRoute(route, pageWidth, pageHeight) { + /* + * To avoid the circular dependencies, imports has + * been carried out in this method + */ + if (route.distance > _SHORT_LAYOUT_MAX_DISTANCE) { + return new imports.longPrintLayout.LongPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } else { + return new imports.shortPrintLayout.ShortPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } +} + +var PrintLayout = GObject.registerClass({ + Abstract: true, + Signals: { + 'render-complete': { } + } +}, class PrintLayout extends GObject.Object { + + _init(params) { + this._pageWidth = params.pageWidth; + delete params.pageWidth; + + this._pageHeight = params.pageHeight; + delete params.pageHeight; + + this._totalSurfaces = params.totalSurfaces; + delete params.totalSurfaces; + + super._init(params); + + this.numPages = 0; + this.surfaceObjects = []; + this._surfacesRendered = 0; + this.renderFinished = false; + this._initSignals(); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + // directional override character to force alignment of labels + this._dirChar = this._rtl ? '\u200F' : '\u200E'; + this._fontDescription = Pango.FontDescription.from_string("sans"); + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + this._createNewPage(); + let dy = 0; + + /* + * Before rendering each surface, page adjustment is done. It is checked if it + * can be adjusted in current page, otherwise a new page is created + */ + dy = headerHeight + headerMargin; + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + dy = mapViewHeight + mapViewMargin; + this._adjustPage(dy); + let turnPointsLength = this._route.turnPoints.length; + let allTurnPoints = this._createTurnPointArray(0, turnPointsLength); + this._drawMapView(mapViewWidth, mapViewHeight, + mapViewZoomLevel, allTurnPoints); + this._cursorY += dy; + } + + _initSignals() { + this.connect('render-complete', () => this.renderFinished = true); + } + + _createMarker(turnPoint) { + return new TurnPointMarker.TurnPointMarker({ + turnPoint: turnPoint, + queryPoint: {} + }); + } + + _drawMapView(width, height, zoomLevel, turnPoints) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let locations = []; + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + view.set_map_source(mapSource); + view.add_layer(markerLayer); + + this._addRouteLayer(view); + + turnPoints.forEach((turnPoint) => { + locations.push(turnPoint.coordinate); + if (turnPoint.isStop()) { + markerLayer.add_marker(this._createMarker(turnPoint)); + } + }); + + view.ensure_visible(this._route.createBBox(locations), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createTurnPointArray(startIndex, endIndex) { + let turnPointArray = []; + for (let i = startIndex; i < endIndex; i++) { + turnPointArray.push(this._route.turnPoints[i]); + } + return turnPointArray; + } + + _addRouteLayer(view) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + view.add_layer(routeLayer); + this._route.path.forEach((node) => routeLayer.add_node(node)); + } + + _drawIcon(cr, iconName, width, height) { + let theme = Gtk.IconTheme.get_default(); + let pixbuf = theme.load_icon(iconName, height, 0); + let iconWidth = pixbuf.width; + let iconHeight = pixbuf.height; + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + this._rtl ? + width - height + (height - iconWidth) / 2 : + (height - iconWidth) / 2, + (height - iconWidth) / 2); + cr.paint(); + } + + _createTextLayout(cr, text, width, height, alignment) { + let layout = PangoCairo.create_layout(cr); + + layout.set_text(this._dirChar + text, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(this._fontDescription); + layout.set_alignment(alignment); + layout.set_ellipsize(Pango.EllipsizeMode.END); + + return layout; + } + + _drawText(cr, text, x, y, width, height, alignment) { + this._drawTextWithColor(cr, text, x, y, width, height, '000000', alignment); + } + + _drawTextWithColor(cr, text, x, y, width, height, color, alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + + this._drawTextLayoutWithColor(cr, layout, x, y, width, height, color, + alignment); + } + + _drawTextLayoutWithColor(cr, layout, x, y, width, height, color, alignment) { + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + cr.moveTo(x, y); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawTextVerticallyCentered(cr, text, width, height, x, alignment) { + this._drawTextVerticallyCenteredWithColor(cr, text, width, height, x, + '000000', alignment); + } + + _drawTextVerticallyCenteredWithColor(cr, text, width, height, x, color, + alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + let [pWidth, pHeight] = layout.get_pixel_size(); + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + // place text centered + cr.moveTo(x, (height - pHeight) / 2); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawInstruction(width, height, turnPoint) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let iconName = turnPoint.iconName; + + if (iconName) { + this._drawIcon(cr, iconName, width, height); + } + + // draw the instruction text + this._drawTextVerticallyCentered(cr, turnPoint.instruction, + width - height * 3, height, + this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + + // draw the distance text + if (turnPoint.distance > 0) { + this._drawTextVerticallyCentered(cr, + Utils.prettyDistance(turnPoint.distance), + height * 2, + height, + this._rtl ? 0 : width - height * 2, + Pango.Alignment.RIGHT); + } + + this._addSurface(surface, x, y, pageNum); + } + + _drawHeader(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let layout = PangoCairo.create_layout(cr); + let from = this._formatQueryPlaceName(0); + let to = this._formatQueryPlaceName(-1); + let header = _("From %s to %s").format(from, to); + let desc = Pango.FontDescription.from_string("sans"); + + layout.set_text(header, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(desc); + layout.set_alignment(Pango.Alignment.CENTER); + PangoCairo.layout_path(cr, layout); + cr.setSourceRGB(0.0,0.0,0.0); + cr.fill(); + + this._addSurface(surface, x, y, pageNum); + } + + _addSurface(surface, x, y, pageNum) { + this.surfaceObjects[pageNum].push({ surface: surface, x: x, y: y }); + this._surfacesRendered++; + if (this._surfacesRendered === this._totalSurfaces) + this.emit('render-complete'); + } + + _adjustPage(dy) { + if (this._cursorY + dy > this._pageHeight) + this._createNewPage(); + } + + _createNewPage() { + this.numPages++; + this.surfaceObjects[this.numPages - 1] = []; + this._cursorX = 0; + this._cursorY = 0; + } + + _formatQueryPlaceName(index) { + let query = Application.routeQuery; + if (index === -1) + index = query.filledPoints.length - 1; + let name; + let place = query.filledPoints[index].place; + if (place.name) { + name = place.name; + if (name.length > 25) + name = name.substr(0, 22) + '\u2026'; + } else { + let lat = place.location.latitude.toFixed(5); + let lon = place.location.latitude.toFixed(5); + name = '%s, %s'.format(lat, lon); + } + + return name; + } +}); diff --git a/src/printOperation.js b/src/printOperation.js new file mode 100644 index 00000000..b3307c0a --- /dev/null +++ b/src/printOperation.js @@ -0,0 +1,119 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const PrintLayout = imports.printLayout; +const TransitPrintLayout = imports.transitPrintLayout; +const Utils = imports.utils; + +const _MIN_TIME_TO_ABORT = 3000; + +var PrintOperation = class PrintOperation { + + constructor(params) { + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._operation = new Gtk.PrintOperation({ embed_page_setup: true }); + this._operation.connect('begin-print', this._beginPrint.bind(this)); + this._operation.connect('paginate', this._paginate.bind(this)); + this._operation.connect('draw-page', this._drawPage.bind(this)); + + this._abortDialog = new Gtk.MessageDialog({ + transient_for: this._mainWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.OTHER, + modal: true, + text: _("Loading map tiles for printing"), + secondary_text: _("You can abort printing if this takes too long") + }); + this._abortDialog.add_button(_("Abort printing"), + Gtk.ResponseType.CANCEL); + this._responseId = this._abortDialog.connect('response', + this.onAbortDialogResponse.bind(this)); + + this._runPrintOperation(); + } + + _beginPrint(operation, context, data) { + let route = Application.routingDelegator.graphHopper.route; + let selectedTransitItinerary = + Application.routingDelegator.transitRouter.plan.selectedItinerary; + let width = context.get_width(); + let height = context.get_height(); + + Mainloop.timeout_add(_MIN_TIME_TO_ABORT, () => { + if (!this._layout.renderFinished) { + this._abortDialog.show(); + } + return false; + }, null); + + if (selectedTransitItinerary) { + this._layout = + new TransitPrintLayout.TransitPrintLayout({ itinerary: selectedTransitItinerary, + pageWidth: width, + pageHeight: height }); + } else { + this._layout = PrintLayout.newFromRoute(route, width, height); + } + this._layout.render(); + } + + onAbortDialogResponse(dialog, response) { + if (response === Gtk.ResponseType.DELETE_EVENT || + response === Gtk.ResponseType.CANCEL) { + this._abortDialog.disconnect(this._responseId); + this._operation.cancel(); + this._abortDialog.close(); + } + } + + _paginate(operation, context) { + if (this._layout.renderFinished) { + operation.set_n_pages(this._layout.numPages); + this._abortDialog.close(); + } + return this._layout.renderFinished; + } + + _drawPage(operation, context, page_num, data) { + let cr = context.get_cairo_context(); + this._layout.surfaceObjects[page_num].forEach((so) => { + cr.setSourceSurface(so.surface, so.x, so.y); + cr.paint(); + }); + } + + _runPrintOperation() { + try { + let result = this._operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, + this._mainWindow); + if (result === Gtk.PrintOperationResult.ERROR) { + let error = this._operation.get_error(); + Utils.debug('Failed to print: %s'.format(error)); + } + } catch(e) { + Utils.debug('Failed to print: %s'.format(e.message)); + } + } +}; diff --git a/src/route.js b/src/route.js new file mode 100644 index 00000000..1c30dfa4 --- /dev/null +++ b/src/route.js @@ -0,0 +1,180 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var TurnPointType = { + SHARP_LEFT: 0, + LEFT: 1, + SLIGHT_LEFT: 2, + CONTINUE: 3, + SLIGHT_RIGHT: 4, + RIGHT: 5, + SHARP_RIGHT: 6, + END: 7, + VIA: 8, + ROUNDABOUT: 9, + + // This one is not in GraphHopper, so choose + // a reasonably unlikely number for this + START: 10000, + ELEVATOR: 10001, + UTURN_LEFT: 10002, + UTURN_RIGHT: 10003 +}; + +/* countries/terrotories driving on the left + * source: https://en.wikipedia.org/wiki/Left-_and_right-hand_traffic + */ +const LHT_COUNTRIES = new Set(['AG', 'AI', 'AU', 'BB', 'BD', 'BM', 'BN', 'BS', + 'BT', 'BW', 'CY', 'DM', 'FJ', 'FK', 'GB', 'GB', + 'GD', 'GY', 'HK', 'ID', 'IE', 'IM', 'IN', 'JE', + 'JM', 'JP', 'KE', 'KI', 'KN', 'KY', 'LC', 'LK', + 'LS', 'MO', 'MS', 'MT', 'MU', 'MV', 'MW', 'MY', + 'MZ', 'NA', 'NP', 'NR', 'NZ', 'PG', 'PN', 'PK', + 'SB', 'SC', 'SG', 'SH', 'SR', 'SZ', 'TC', 'TH', + 'TL', 'TO', 'TT', 'TV', 'TZ', 'UG', 'VC', 'VG', + 'VI', 'WS', 'ZA', 'ZM', 'ZW']); + +var Route = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Route extends GObject.Object { + + _init() { + super._init(); + this.reset(); + } + + update({ path, turnPoints, distance, time, bbox }) { + this.path = path; + this.turnPoints = turnPoints; + this.distance = distance; + this.time = time; + this.bbox = bbox || this.createBBox(path); + + this.emit('update'); + } + + reset() { + this.path = []; + this.turnPoints = []; + this.distance = 0; + this.time = 0; + this.bbox = null; + this.emit('reset'); + } + + error(msg) { + this.emit('error', msg); + } + + createBBox(coordinates) { + let bbox = new Champlain.BoundingBox(); + coordinates.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }, this); + return bbox; + } +}); + +var TurnPoint = class TurnPoint { + + constructor({ coordinate, type, distance, instruction, turnAngle }) { + this.coordinate = coordinate; + this._type = type; + this.distance = distance; + this.instruction = instruction; + this.iconName = this._getIconName(turnAngle); + } + + get type() { + return this._type; + } + + isStop() { + return this._type === TurnPointType.START + || this._type === TurnPointType.VIA + || this._type === TurnPointType.END; + } + + _getIconName(turnAngle) { + switch(this._type) { + case TurnPointType.SHARP_LEFT: return 'maps-direction-sharpleft-symbolic'; + case TurnPointType.LEFT: return 'maps-direction-left-symbolic'; + case TurnPointType.SLIGHT_LEFT: return 'maps-direction-slightleft-symbolic'; + case TurnPointType.CONTINUE: return 'maps-direction-continue-symbolic'; + case TurnPointType.SLIGHT_RIGHT: return 'maps-direction-slightright-symbolic'; + case TurnPointType.RIGHT: return 'maps-direction-right-symbolic'; + case TurnPointType.SHARP_RIGHT: return 'maps-direction-sharpright-symbolic'; + case TurnPointType.START: return 'maps-point-start-symbolic'; + case TurnPointType.VIA: return 'maps-point-end-symbolic'; + case TurnPointType.END: return 'maps-point-end-symbolic'; + case TurnPointType.ROUNDABOUT: return this._getRoundaboutIconName(turnAngle); + case TurnPointType.ELEVATOR: return 'maps-direction-elevator-symbolic'; + case TurnPointType.UTURN_LEFT: return 'maps-direction-u-turn-left-symbolic'; + case TurnPointType.UTURN_RIGHT: return 'maps-direction-u-turn-right-symbolic'; + default: return ''; + } + } + + _getRoundaboutIconName(turnAngle) { + /* + * To map turnAngle with closest roundabout + * turning angle symbol available. The Algorithm + * calculates the minimum of absolute difference + * between turnAngle and the angle of which map + * has turning symbols. + */ + let minDiff = 2 * Math.PI; + let angle = 0; + if (turnAngle === null) + return 'maps-direction-roundabout-symbolic'; + + if (turnAngle < 0) + turnAngle += 2 * Math.PI; + + for (let x = 0; x < 360; x += 45) { + if (Math.abs(turnAngle - (x / 180) * Math.PI) < minDiff) { + minDiff = Math.abs(turnAngle - (x / 180) * Math.PI); + angle = x; + } + } + // use mirrored icon for left-hand traffic when angle is not zero + return 'maps-direction-roundabout-' + angle + + (angle !== 0 && this._isLefthandTraffic() ? '-lht' : '') + + '-symbolic'; + } + + _isLefthandTraffic() { + let country = + Utils.getCountryCodeForCoordinates(this.coordinate.latitude, + this.coordinate.longitude); + + return LHT_COUNTRIES.has(country); + } +}; diff --git a/src/routeEntry.js b/src/routeEntry.js new file mode 100644 index 00000000..ac2e2783 --- /dev/null +++ b/src/routeEntry.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceEntry = imports.placeEntry; +const RouteQuery = imports.routeQuery; + +var Type = { + FROM: 0, + TO: 1, + VIA: 2 +}; + +var RouteEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/route-entry.ui', + Children: [ 'iconEventBox' ], + InternalChildren: [ 'entryGrid', + 'icon', + 'button', + 'buttonImage' ] +}, class RouteEntry extends Gtk.Grid { + + _init(params) { + this._type = params.type; + delete params.type; + + this._point = params.point || null; + delete params.point; + + this._mapView = params.mapView || null; + delete params.mapView; + + super._init(params); + + this.entry = this._createEntry(); + this._entryGrid.add(this.entry); + + // There is no GdkWindow on the widget until it is realized + this._icon.connect('realize', function(icon) { + if (icon.window && icon.window.get_cursor()) + return; + + icon.window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1)); + }); + + switch (this._type) { + case Type.FROM: + let query = Application.routeQuery; + this._buttonImage.icon_name = 'list-add-symbolic'; + this._icon.icon_name = 'maps-point-start-symbolic'; + /* Translators: this is add via location tooltip */ + this._button.tooltip_text = _("Add via location"); + query.connect('notify::points', () => { + this._button.sensitive = query.points.length < RouteQuery.MAX_QUERY_POINTS; + }); + + break; + case Type.VIA: + this._buttonImage.icon_name = 'list-remove-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is remove via location tooltip */ + this._button.tooltip_text = _("Remove via location"); + break; + case Type.TO: + this._buttonImage.icon_name = 'route-reverse-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is reverse route tooltip */ + this._button.tooltip_text = _("Reverse route"); + break; + } + } + + get button() { + return this._button; + } + + get point() { + return this._point; + } + + _createEntry() { + let entry = new PlaceEntry.PlaceEntry({ visible: true, + can_focus: true, + hexpand: true, + receives_default: true, + mapView: this._mapView, + maxChars: 15 }); + if (this._point) { + entry.bind_property('place', + this._point, 'place', + GObject.BindingFlags.BIDIRECTIONAL); + } + + return entry; + } +}); diff --git a/src/routeQuery.js b/src/routeQuery.js new file mode 100644 index 00000000..3b424ec3 --- /dev/null +++ b/src/routeQuery.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; + +const Application = imports.application; +const PlaceStore = imports.placeStore; +const TransitOptions = imports.transitOptions; + +var MAX_QUERY_POINTS = 10; + +var Transportation = { + CAR: 0, + BIKE: 1, + PEDESTRIAN: 2, + TRANSIT: 3, + + toString: function (transportation) { + switch(transportation) { + case Transportation.CAR: return 'car'; + case Transportation.BIKE: return 'bike'; + case Transportation.PEDESTRIAN: return 'foot'; + case Transportation.TRANSIT: return 'transit'; + default: return null; + } + } +}; + +var QueryPoint = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class QueryPoint extends GObject.Object { + + _init() { + this._place = null; + super._init(); + } + + set place(p) { + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } +}); + +var RouteQuery = GObject.registerClass({ + Signals: { + 'reset': { }, + 'point-added': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'point-removed': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'run': { } + }, + Properties: { + 'points': GObject.ParamSpec.object('points', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + GObject.Object), + 'transportation': GObject.ParamSpec.int('transportation', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Transportation.CAR, + Transportation.PEDESTRIAN, + Transportation.CAR, + Transportation.TRANSIT) + } +}, class RouteQuery extends GObject.Object { + + get points() { + return this._points; + } + + set points(points) { + if (points.length > MAX_QUERY_POINTS) + throw new Error('Too many query points'); + this._points = points; + this.notify('points'); + } + + get filledPoints() { + return this.points.filter(function(point) { + return point.place; + }); + } + + get latest() { + return this._latest; + } + + get time() { + return this._time; + } + + /* time to leave or arrive, null implies "Leave now" */ + set time(time) { + this._time = time; + this.notify('points'); + } + + get date() { + return this._date; + } + + /* date to leave or arrive */ + set date(date) { + this._date = date; + /* only notify change when an actual date was set, when resetting time + * time and date (to use "Leave Now" routing) time would be set to null + * triggering an update */ + if (date) + this.notify('points'); + } + + get arriveBy() { + return this._arriveBy; + } + + /* when set to true, the set time and date means arrive by the specified + * time */ + set arriveBy(arriveBy) { + this._arriveBy = arriveBy; + if (this._time) + this.notify('points'); + } + + get transitOptions() { + return this._transitOptions; + } + + set transitOptions(options) { + this._transitOptions = options; + this.notify('points'); + } + + _init(args) { + super._init(args); + this._points = []; + this._time = null; + this._date = null; + this._arriveBy = false; + this._transitOptions = new TransitOptions.TransitOptions(); + this._initTransportation(); + this.reset(); + } + + _initTransportation() { + let transportationType = Application.settings.get_enum('transportation-type'); + + this.transportation = transportationType; + } + + addPoint(index) { + if (this._points.length >= MAX_QUERY_POINTS) + throw new Error('Too many query points'); + let point = new QueryPoint(); + + if (index === -1) + index = this.points.length - 1; + + this._points.splice(index, 0, point); + point.connect('notify::place', () => { + let placeStore = Application.placeStore; + if (point.place) { + if (!placeStore.exists(point.place, null)) { + placeStore.addPlace(point.place, + PlaceStore.PlaceType.RECENT); + } + } + this.notify('points'); + this._latest = point; + }); + this._latest = point; + this.notify('points'); + this.emit('point-added', point, index); + return point; + } + + removePoint(index) { + let removedPoints = this._points.splice(index, 1); + let point = removedPoints ? removedPoints[0] : null; + if (point === this._latest) + this._latest = null; + + if (point) { + this.notify('points'); + this.emit('point-removed', point, index); + } + } + + set transportation(transportation) { + Application.settings.set_enum('transportation-type', transportation); + this._transportation = transportation; + this.notify('transportation'); + this.notify('points'); + } + + get transportation() { + return this._transportation; + } + + reset() { + this.freeze_notify(); + this._points.forEach(function(point) { + point.place = null; + }); + this._latest = null; + this.thaw_notify(); + this.emit('reset'); + } + + isValid() { + if (this.filledPoints.length >= 2 && + this.filledPoints.length === this.points.length) + return true; + else + return false; + } + + toString() { + return "\nPoints: " + this.points + + "\nTransportation: " + this.transportation; + } +}); diff --git a/src/routingDelegator.js b/src/routingDelegator.js new file mode 100644 index 00000000..a3f71101 --- /dev/null +++ b/src/routingDelegator.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GraphHopper = imports.graphHopper; +const TransitRouter = imports.transitRouter; +const RouteQuery = imports.routeQuery; + +const _FALLBACK_TRANSPORTATION = RouteQuery.Transportation.PEDESTRIAN; + +var RoutingDelegator = class RoutingDelegator { + + constructor(params) { + this._query = params.query; + + this._transitRouting = false; + this._graphHopper = new GraphHopper.GraphHopper({ query: this._query }); + this._transitRouter = new TransitRouter.TransitRouter({ query: this._query }); + this._query.connect('notify::points', this._onQueryChanged.bind(this)); + + /* if the query is set to transit mode when it's not available, revert + * to a fallback mode + */ + if (this._query.transportation === RouteQuery.Transportation.TRANSIT && + !this._transitRouter.enabled) { + this._query.transportation = _FALLBACK_TRANSPORTATION; + } + } + + get graphHopper() { + return this._graphHopper; + } + + get transitRouter() { + return this._transitRouter; + } + + set useTransit(useTransit) { + this._transitRouting = useTransit; + } + + reset() { + if (this._transitRouting) + this._transitRouter.plan.reset(); + else + this._graphHopper.route.reset(); + } + + _onQueryChanged() { + if (this._query.isValid()) { + this._query.emit('run'); + if (this._transitRouting) { + this._transitRouter.fetchFirstResults(); + } else { + this._graphHopper.fetchRoute(this._query.filledPoints, + this._query.transportation); + } + } + } +}; diff --git a/src/searchPopover.js b/src/searchPopover.js new file mode 100644 index 00000000..f848c5b5 --- /dev/null +++ b/src/searchPopover.js @@ -0,0 +1,111 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* Abstract search result popover that progagates keypress events from a + focus-taking internal widget to the spawning search entry widget */ +var SearchPopover = GObject.registerClass({ + Abstract: true +}, class SearchPopover extends Gtk.Popover { + + _init(props) { + super._init(props); + + this._entry = this.relative_to; + + // We need to propagate events to the listbox so that we can + // keep typing while selecting a place. But we do not want to + // propagate the 'enter' key press if there is a selection. + this._entry.connect('key-press-event', + this._propagateKeys.bind(this)); + this._entry.connect('button-press-event', () => this._list.unselect_all()); + } + + _propagateKeys(entry, event) { + let keyval = event.get_keyval()[1]; + + if (keyval === Gdk.KEY_Escape) { + this.hide(); + this._list.unselect_all(); + return Gdk.EVENT_STOP; + } + + if (keyval === Gdk.KEY_Return || + keyval === Gdk.KEY_KP_ENTER || + keyval === Gdk.KEY_ISO_Enter) { + + // If we get an 'enter' keypress and we have a selected + // row, we do not want to propagate the event. + let row = this._list.get_selected_row(); + if (this.visible && row) { + row.activate(); + return Gdk.EVENT_STOP; + } else { + return Gdk.EVENT_PROPAGATE; + } + } + + if (keyval === Gdk.KEY_KP_Up || + keyval === Gdk.KEY_Up || + keyval === Gdk.KEY_KP_Down || + keyval === Gdk.KEY_Down) { + + let length = this._list.get_children().length; + if (length === 0) { + return Gdk.EVENT_PROPAGATE; + } + + let direction = (keyval === Gdk.KEY_KP_Up || keyval === Gdk.KEY_Up) ? -1 : 1; + let row = this._list.get_selected_row(); + let idx; + if (!row) { + idx = (direction === 1) ? 0 : length - 1; + } else { + idx = row.get_index() + direction; + } + let inBounds = 0 <= idx && idx < length; + if (inBounds) { + this.show(); + this._selectRow(this._list.get_row_at_index(idx)); + } else { + this._list.unselect_all(); + } + return Gdk.EVENT_STOP; + } + + return Gdk.EVENT_PROPAGATE; + } + + /* Selects given row and ensures that it is visible. */ + _selectRow(row) { + this._list.select_row(row); + let adjustment = this._list.get_adjustment(); + if (adjustment) { + let allocation = row.get_allocation(); + adjustment.clamp_page(allocation.y, allocation.y + allocation.height); + } + } +}); + diff --git a/src/sendToDialog.js b/src/sendToDialog.js new file mode 100644 index 00000000..d7e278c8 --- /dev/null +++ b/src/sendToDialog.js @@ -0,0 +1,279 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const PlaceFormatter = imports.placeFormatter; +const Utils = imports.utils; + +const _WEATHER_APPID = 'org.gnome.Weather'; +const _CLOCKS_APPID = 'org.gnome.clocks'; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _NUM_VISIBLE = 4; + +var SendToDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/send-to-dialog.ui', + InternalChildren: [ 'list', + 'weatherRow', + 'weatherLabel', + 'weatherIcon', + 'clocksRow', + 'clocksLabel', + 'clocksIcon', + 'cancelButton', + 'summaryLabel', + 'summaryUrl', + 'copyButton', + 'emailButton', + 'checkInButton', + 'scrolledWindow' ] +}, class SendToDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + this._location = this._place.location; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + let showCheckIn = params.showCheckIn || false; + delete params.showCheckIn; + + params.use_header_bar = true; + super._init(params); + + this._scrolledWindow.min_content_height = 40 * _NUM_VISIBLE; + this.get_header_bar().subtitle = this._place.name; + + this._cancelButton.connect('clicked', + () => this.response(Response.CANCEL)); + + this._list.connect('row-activated', (list, row) => this._activateRow(row)); + + this._list.set_header_func((row, before) => { + let horizontal = Gtk.Orientation.HORIZONTAL; + + if (before) + row.set_header(new Gtk.Separator({ orientation: horizontal })); + else + row.set_header(null); + }); + + if (showCheckIn) { + Application.checkInManager.bind_property('hasCheckIn', + this._checkInButton, 'visible', + GObject.BindingFlags.DEFAULT | + GObject.BindingFlags.SYNC_CREATE); + + this._checkInButton.connect('clicked', () => { + Application.checkInManager.showCheckInDialog(this.get_toplevel(), + this._place, + false); + }); + } + + this.connect('show', () => { + this._summaryLabel.label = this._getSummary(); + let osmuri = GLib.markup_escape_text(this._getOSMURI(), -1); + this._summaryUrl.label = '%s'.format(osmuri, osmuri); + + this._copyButton.connect('clicked', () => this._copySummary()); + this._emailButton.connect('clicked', () => this._emailSummary()); + }); + + if (GWeather) { + let world = GWeather.Location.get_world(); + let location = this._location; + this._city = world.find_nearest_city(location.latitude, + location.longitude); + /* Translators: The first string is the name of the city, the + second string is the name of the app to add it to */ + let label = _("Add %s to %s"); + + let weatherInfo = Gio.DesktopAppInfo.new(_WEATHER_APPID + '.desktop'); + if (!weatherInfo) { + this._list.remove(this._weatherRow); + } else { + this._weatherLabel.label = label.format(this._city.get_name(), + weatherInfo.get_name()); + this._weatherIcon.icon_name = weatherInfo.get_icon().to_string(); + } + + let clocksInfo = Gio.DesktopAppInfo.new(_CLOCKS_APPID + '.desktop'); + if (!clocksInfo) { + this._list.remove(this._clocksRow); + } else { + this._clocksLabel.label = label.format(this._city.get_name(), + clocksInfo.get_name()); + this._clocksIcon.icon_name = clocksInfo.get_icon().to_string(); + } + } + + /* Other apps that can launch geo: URIs */ + let contentType = Gio.content_type_from_mime_type('x-scheme-handler/geo'); + let thisId = Application.application.application_id + '.desktop'; + let apps = Gio.app_info_get_all_for_type(contentType); + apps.forEach((app) => { + if (app.get_id() == thisId) + return; + if (!app.should_show()) + return; + + this._list.add(new OpenWithRow({ appinfo: app })); + }); + + /* Hide the list box if it is empty */ + if (this._list.get_children().length == 0) { + this._scrolledWindow.hide(); + } + } + + _getSummary(markup) { + /* Gets a summary of the place (usually name, address, and coordinates, + whichever are available). Does not include OSM URL. */ + + let place = this._place; + let lines = []; + + let formatter = new PlaceFormatter.PlaceFormatter(place); + + if (!place.isCurrentLocation) + lines.push(formatter.title); + + let details = formatter.getDetailsString(); + if (details) { + lines.push(details); + } + + lines.push('%f, %f'.format(this._location.latitude.toFixed(5), + this._location.longitude.toFixed(5))); + + return lines.join('\n'); + } + + _getOSMURI() { + let view = this._mapView.view; + let place = this._place; + + let base = 'https://openstreetmap.org'; + if (this._place.osm_id && this._place.osm_type) { + return '%s/%s/%s'.format(base, + Utils.osmTypeToString(place.osm_type), + place.osm_id); + } else { + return '%s?mlat=%f&mlon=%f&zoom=%d'.format(base, + this._location.latitude, + this._location.longitude, + view.zoom_level); + } + } + + _copySummary() { + let summary = '%s\n%s'.format(this._getSummary(), this._getOSMURI()); + + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + clipboard.set_text(summary, -1); + this.response(Response.SUCCESS); + } + + _emailSummary() { + let title = new PlaceFormatter.PlaceFormatter(this._place).title; + let summary = "%s\n%s".format(this._getSummary(), this._getOSMURI()); + let uri = 'mailto:?subject=%s&body=%s'.format(Soup.URI.encode(title, null), + Soup.URI.encode(summary, null)); + + try { + Gio.app_info_launch_default_for_uri(uri, this._getAppLaunchContext()); + } catch(e) { + Utils.showDialog(_("Failed to open URI"), Gtk.MessageType.ERROR, + this.get_toplevel()); + Utils.debug('failed to open URI: %s'.format(e.message)); + } + + this.response(Response.SUCCESS); + } + + _getAppLaunchContext() { + let timestamp = Gtk.get_current_event_time(); + let display = Gdk.Display.get_default(); + let ctx = Gdk.Display.get_default().get_app_launch_context(); + let screen = display.get_default_screen(); + + ctx.set_timestamp(timestamp); + ctx.set_screen(screen); + + return ctx; + } + + _activateRow(row) { + if (row === this._weatherRow || row === this._clocksRow) { + let timestamp = Gtk.get_current_event_time(); + + let action; + let appId; + if (row === this._weatherRow) { + action = 'show-location'; + appId = _WEATHER_APPID; + } else { + action = 'add-location'; + appId = _CLOCKS_APPID; + } + + Utils.activateAction(appId, + action, + new GLib.Variant('v', this._city.serialize()), + timestamp); + } else if (row instanceof OpenWithRow) { + let uri = this._location.to_uri(Geocode.LocationURIScheme.GEO); + row.appinfo.launch_uris([ uri ], this._getAppLaunchContext()); + } + this.response(Response.SUCCESS); + } +}); + +var OpenWithRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/open-with-row.ui', + InternalChildren: [ 'label', + 'icon' ], +}, class OpenWithRow extends Gtk.ListBoxRow { + _init(params) { + this.appinfo = params.appinfo; + delete params.appinfo; + + super._init(params); + + this._label.label = _("Open with %s").format(this.appinfo.get_name()); + this._icon.gicon = this.appinfo.get_icon(); + } +}); diff --git a/src/service.js b/src/service.js new file mode 100644 index 00000000..e0e2e799 --- /dev/null +++ b/src/service.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +let _service = null; + +const _SERVICE_URL = 'https://gis.gnome.org/services/v1/service.json'; +const _DEFAULT_SERVICE_FILE = 'maps-service.json'; + +function _getServiceFromFile(filename) { + let data = Utils.readFile(filename); + if (!data) { + log('Failed to open service file: ' + filename); + System.exit(1); + } + _service = JSON.parse(Utils.getBufferText(data)); + return _service; +} + +function _createDefaultService() { + let filename = GLib.build_filenamev([pkg.pkgdatadir, + _DEFAULT_SERVICE_FILE]); + return _getServiceFromFile(filename); +} + +function getService() { + if (_service) + return _service; + + if (GLib.getenv('MAPS_DEFAULT_SERVICE')) + return _createDefaultService(); + + let serviceOverride = GLib.getenv('MAPS_SERVICE'); + if (serviceOverride) + return _getServiceFromFile(serviceOverride); + + let user_agent = 'gnome-maps/' + pkg.version; + let session = new Soup.Session({ user_agent : user_agent }); + let msg = Soup.Message.new('GET', _SERVICE_URL); + try { + let stream = Gio.DataInputStream.new(session.send(msg, null)); + + let lines = ""; + while(true) { + let [line, _] = stream.read_line_utf8(null); + if (line === null) + break; + lines += line; + } + _service = JSON.parse(lines); + return _service; + } catch(e) { + Utils.debug(e); + return _createDefaultService(); + } +} diff --git a/src/serviceBackend.js b/src/serviceBackend.js new file mode 100644 index 00000000..edcfdebe --- /dev/null +++ b/src/serviceBackend.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var ServiceBackend = GObject.registerClass({ + Abstract: true +}, class ServiceBackend extends GObject.Object { + + //Abstract + get name() { } + + //Abstract + createRestCall(authorizer) { } + + //Abstract + refreshAuthorization(authorizer, cancellable) { } + + //Abstract + getAuthorizerAccount(authorizer) { } + + //Abstract + createAuthorizer(account) { } + + //Abstract + isTokenInvalid(restCall, parsedPayload) { } + + //Abstract + isInvalidCall(restCall, parsedPayload) { } + + //Abstract + getCallResultCode(restCall, parsedPayload) { } + + //Abstract + getCallResultMessage(restCall, parsedPayload) { } + + callAsync(authorizer, method, func, params, callback, cancellable, mustRefreshToken) { + mustRefreshToken = mustRefreshToken || true; + cancellable = cancellable || null; + + let restCall = this.createRestCall(authorizer); + + method = method.toUpperCase(); + restCall.set_method(method); + + for (let key in params) + restCall.add_param(key, params[key].toString()); + + restCall.set_function(func); + + Utils.debug(this.name + ': ' + func); + + restCall.invoke_async(cancellable, (call, result) => { + let data = JSON.parse(call.get_payload()); + let account = this.getAuthorizerAccount(authorizer); + + if (data && this.isTokenInvalid(call, data)) + if (mustRefreshToken) { + //Unauthorized token error, we need to refresh the token + Utils.debug(this.name + ': The token is not authorized, refreshing token'); + try { + this.refreshAuthorization(authorizer, cancellable); + this.callAsync(authorizer, method, func, params, callback, cancellable, false); + } catch(error) { + callback(account, data, { code: 401, + message: null }); + } + } else + callback(account, data, { code: 401, + message: null }); + else if (this.isInvalidCall(call, data)) + callback(account, data, { code: this.getCallResultCode(call, data), + message: this.getCallResultMessage(call, data) }); + else + callback(account, data, null); + }); + } + + performCheckIn(authorizer, checkIn, callback, cancellable) { + callback = callback || function() {}; + this._realPerformCheckIn(authorizer, checkIn, callback, cancellable); + } + + //Abstract + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { } + + findPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + callback = callback || function() {}; + this._realFindPlaces(authorizer, + latitude, + longitude, + distance, + (account, data, error) => { + if (!error) + callback(account, this.createPlaces(data), error); + else + callback(account, [], error); + }, + cancellable); + } + + //Abstract + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { } + + //Abstract + createPlaces(rawData) { } +}); diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..fa2478ab --- /dev/null +++ b/src/settings.js @@ -0,0 +1,74 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const System = imports.system; + +var Settings = GObject.registerClass( +class Settings extends Gio.Settings { + + _init(params) { + super._init(params); + // The GVariant types of the settings + this._keyTypes = {}; + this.list_keys().forEach((key) => { + this._keyTypes[key] = this.get_value(key) + .get_type() + .dup_string(); + }); + } + + get(name) { + return this.get_value(name).deep_unpack(); + } + + set(name, value) { + this.set_value(name, GLib.Variant.new (this._keyTypes[name], value)); + } +}); + +function getSettings(schemaId, path) { + const GioSSS = Gio.SettingsSchemaSource; + let schemaSource; + + if (!pkg.moduledir.startsWith('resource://')) { + // Running from the source tree + schemaSource = GioSSS.new_from_directory(pkg.pkgdatadir, + GioSSS.get_default(), + false); + } else { + schemaSource = GioSSS.get_default(); + } + + let schemaObj = schemaSource.lookup(schemaId, true); + if (!schemaObj) { + log('Missing GSettings schema ' + schemaId); + System.exit(1); + } + + if (path === undefined) + return new Settings({ settings_schema: schemaObj }); + else + return new Settings({ settings_schema: schemaObj, + path: path }); +} diff --git a/src/shapeLayer.js b/src/shapeLayer.js new file mode 100644 index 00000000..7d42c9b4 --- /dev/null +++ b/src/shapeLayer.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; + +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const Utils = imports.utils; + +var SUPPORTED_TYPES = []; + +function newFromFile(file, mapView) { + let contentType = Gio.content_type_guess(file.get_uri(), null)[0]; + for (let layerClass of SUPPORTED_TYPES) { + if (layerClass.mimeTypes.indexOf(contentType) > -1) { + return layerClass.createInstance({ file: file, mapView: mapView }); + } + } + return null; +} + +var ShapeLayer = GObject.registerClass({ + Abstract: true +}, class ShapeLayer extends GObject.Object { + + _init(params) { + super._init(); + this._visible = true; + this._mapView = params.mapView; + this.file = params.file; + + this.filename = this.file.query_info( + Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, + Gio.FileQueryInfoFlags.NONE, + null + ).get_attribute_string(Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); + + this._markerLayer = new Champlain.MarkerLayer({ + selection_mode: Champlain.SelectionMode.SINGLE + }); + this._mapSource = null; + } + + get bbox() { + return this._mapSource.bbox; + } + + get visible() { + return this._visible; + } + + set visible(v) { + if (v && !this._visible) { + this._mapView.view.add_overlay_source(this._mapSource, 255); + this._markerLayer.show_all_markers(); + } else if (!v && this._visible) { + this._mapView.view.remove_overlay_source(this._mapSource); + this._markerLayer.hide_all_markers(); + } + this._visible = v; + } + + getName() { + /* + * Remove file extension and use that in lieu of a fileformat-specific + * display name. + */ + return this.filename.replace(/\.[^\.]+$/, ''); + } + + load(callback, bbox) { + this.file.load_contents_async(null, (sourceObject, result) => { + let error = false; + try { + let [status, buffer] = this.file.load_contents_finish(result); + this._fileContents = buffer; + if (!status) + throw new Error(_("failed to load file")); + this._parseContent(); + this._mapView.view.add_layer(this._markerLayer); + this._mapView.view.add_overlay_source(this._mapSource, 255); + } catch (e) { + Utils.debug(e); + error = true; + } + callback(error, bbox, this); + }); + } + + _parseContent() { + /* Unimplemented */ + } + + unload() { + this._mapView.view.remove_layer(this._markerLayer); + this._mapView.view.remove_overlay_source(this._mapSource); + } +}); + +ShapeLayer.mimeTypes = []; +ShapeLayer.displayName = ''; diff --git a/src/shortPrintLayout.js b/src/shortPrintLayout.js new file mode 100644 index 00000000..a926afdb --- /dev/null +++ b/src/shortPrintLayout.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 1.0, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; + +var ShortPrintLayout = GObject.registerClass( +class ShortPrintLayout extends PrintLayout.PrintLayout { + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + map) + instructions */ + let totalSurfaces = 2 + this._route.turnPoints.length; + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + let dy = 0; + + this._route.turnPoints.forEach((turnPoint) => { + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, turnPoint); + this._cursorY += dy; + }); + } +}); diff --git a/src/sidebar.js b/src/sidebar.js new file mode 100644 index 00000000..b811c11c --- /dev/null +++ b/src/sidebar.js @@ -0,0 +1,632 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const InstructionRow = imports.instructionRow; +const PlaceStore = imports.placeStore; +const RouteEntry = imports.routeEntry; +const RouteQuery = imports.routeQuery; +const StoredRoute = imports.storedRoute; +const TransitArrivalRow = imports.transitArrivalRow; +const TransitItineraryRow = imports.transitItineraryRow; +const TransitLegRow = imports.transitLegRow; +const TransitMoreRow = imports.transitMoreRow; +const TransitOptionsPanel = imports.transitOptionsPanel; +const Utils = imports.utils; + +var Sidebar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/sidebar.ui', + InternalChildren: [ 'distanceInfo', + 'entryList', + 'instructionList', + 'instructionWindow', + 'instructionSpinner', + 'instructionStack', + 'errorLabel', + 'modeBikeToggle', + 'modeCarToggle', + 'modePedestrianToggle', + 'modeTransitToggle', + 'timeInfo', + 'linkButtonStack', + 'transitWindow', + 'transitRevealer', + //'transitOptionsPanel', + 'transitHeader', + 'transitListStack', + 'transitOverviewListBox', + 'transitItineraryHeader', + 'transitItineraryListBox', + 'transitItineraryBackButton', + 'transitItineraryTimeLabel', + 'transitItineraryDurationLabel', + 'transitAttributionLabel'] +}, class Sidebar extends Gtk.Revealer { + + _init(mapView) { + super._init({ transition_type: Gtk.RevealerTransitionType.SLIDE_LEFT }); + + this._mapView = mapView; + + this._query = Application.routeQuery; + this._initInstructionList(); + + /* I could not get the custom GTK+ template widget to init properly + * from the UI file, we also need to manually insert the transit + * itinerary header widget into the GtkStack to get the correct + * animation direction. + */ + this._transitOptionsPanel = + new TransitOptionsPanel.TransitOptionsPanel({ visible: true }); + this._transitHeader.add_named(this._transitOptionsPanel, 'options'); + this._transitHeader.add_named(this._transitItineraryHeader, + 'itinerary-header'); + this._initTransportationToggles(this._modePedestrianToggle, + this._modeBikeToggle, + this._modeCarToggle, + this._modeTransitToggle); + + this._initQuerySignals(); + this._query.addPoint(0); + this._query.addPoint(1); + this._switchRoutingMode(Application.routeQuery.transportation); + /* Enable/disable transit mode switch based on the presence of + * public transit providers. + * For some reason, setting visible to false in the UI file and + * dynamically setting visible false here doesn't work, maybe because + * it's part of a radio group? As a workaround, just remove the button + * instead. + */ + if (!Application.routingDelegator.transitRouter.enabled) + this._modeTransitToggle.destroy(); + } + + _initTransportationToggles(pedestrian, bike, car, transit) { + let transport = RouteQuery.Transportation; + + let onToggle = function(mode, button) { + let previousMode = this._query.transportation; + + if (button.active && previousMode !== mode) { + this._switchRoutingMode(mode); + this._query.transportation = mode; + } + }; + pedestrian.connect('toggled', onToggle.bind(this, transport.PEDESTRIAN)); + car.connect('toggled', onToggle.bind(this, transport.CAR)); + bike.connect('toggled', onToggle.bind(this, transport.BIKE)); + transit.connect('toggled', onToggle.bind(this, transport.TRANSIT)) + + let setToggles = function() { + switch(Application.routeQuery.transportation) { + case transport.PEDESTRIAN: + pedestrian.active = true; + break; + case transport.CAR: + car.active = true; + break; + case transport.BIKE: + bike.active = true; + break; + case transport.TRANSIT: + transit.active = true; + break; + } + + this._switchRoutingMode(Application.routeQuery.transportation); + }; + + setToggles.bind(this)(); + this._query.connect('notify::transportation', setToggles.bind(this)); + } + + _switchRoutingMode(mode) { + if (mode === RouteQuery.Transportation.TRANSIT) { + Application.routingDelegator.useTransit = true; + this._linkButtonStack.visible_child_name = 'transit'; + this._transitOptionsPanel.reset(); + this._transitRevealer.reveal_child = true; + } else { + Application.routingDelegator.useTransit = false; + this._linkButtonStack.visible_child_name = 'turnByTurn'; + this._transitRevealer.reveal_child = false; + Application.routingDelegator.transitRouter.plan.deselectItinerary(); + } + this._clearInstructions(); + } + + _initQuerySignals() { + this._query.connect('point-added', (obj, point, index) => { + this._createRouteEntry(index, point); + }); + + this._query.connect('point-removed', (obj, point, index) => { + let row = this._entryList.get_row_at_index(index); + row.destroy(); + }); + } + + _cancelStore() { + Mainloop.source_remove(this._storeRouteTimeoutId); + this._storeRouteTimeoutId = 0; + } + + _createRouteEntry(index, point) { + let type; + if (index === 0) + type = RouteEntry.Type.FROM; + else if (index === this._entryList.get_children().length) + type = RouteEntry.Type.TO; + else + type = RouteEntry.Type.VIA; + + let routeEntry = new RouteEntry.RouteEntry({ type: type, + point: point, + mapView: this._mapView }); + + // add handler overriding tab focus behavior on route entries + routeEntry.entry.connect('focus', this._onRouteEntryFocus.bind(this)); + // add handler for + routeEntry.entry.connect('notify::place', () => { + this._onRouteEntrySelectedPlace(routeEntry.entry); + }); + this._entryList.insert(routeEntry, index); + + if (type === RouteEntry.Type.FROM) { + routeEntry.button.connect('clicked', () => { + let lastIndex = this._entryList.get_children().length; + this._query.addPoint(lastIndex - 1); + // focus on the newly added point's entry + this._entryList.get_row_at_index(lastIndex - 1).get_child().entry.grab_focus(); + }); + + this.connect('notify::child-revealed', () => { + if (this.child_revealed) + routeEntry.entry.grab_focus_without_selecting(); + }); + } else if (type === RouteEntry.Type.VIA) { + routeEntry.button.connect('clicked', () => { + let row = routeEntry.get_parent(); + this._query.removePoint(row.get_index()); + }); + } else if (type === RouteEntry.Type.TO) { + routeEntry.button.connect('clicked', + this._reverseRoutePoints.bind(this)); + } + + this._initRouteDragAndDrop(routeEntry); + } + + _onRouteEntryFocus(entry, direction) { + let index = this._getIndexForRouteEntry(entry); + + /* if tabbing forward from the last entry or backward from the first, + * let the default handler handle it + */ + if ((direction === Gtk.DirectionType.TAB_FORWARD && + index === this._entryList.get_children().length - 1) || + (direction === Gtk.DirectionType.TAB_BACKWARD && index === 0)) { + return false; + } + + if (direction === Gtk.DirectionType.TAB_FORWARD) { + index++; + } else if (direction === Gtk.DirectionType.TAB_BACKWARD) { + index--; + } else { + // don't handle other directions + return false; + } + + this._entryList.get_row_at_index(index).get_child().entry.grab_focus(); + return true; + } + + _onRouteEntrySelectedPlace(entry) { + let index = this._getIndexForRouteEntry(entry); + + /* if a new place is selected and it's not the last entry, focus next + * entry + */ + if (entry.place && index < this._entryList.get_children().length - 1) { + let nextPlaceEntry = + this._entryList.get_row_at_index(index + 1).get_child().entry; + + if (!nextPlaceEntry.place) + nextPlaceEntry.grab_focus(); + } + } + + _getIndexForRouteEntry(entry) { + for (let i = 0; i < this._entryList.get_children().length; i++) { + let routeEntry = this._entryList.get_row_at_index(i).get_child(); + + if (routeEntry.entry === entry) + return i; + } + + return -1; + } + + _initInstructionList() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + + route.connect('reset', () => { + this._clearInstructions(); + + let length = this._entryList.get_children().length; + for (let index = 1; index < (length - 1); index++) { + this._query.removePoint(index); + } + }); + + transitPlan.connect('reset', () => { + this._clearTransitOverview(); + this._showTransitOverview(); + this._instructionStack.visible_child = this._transitWindow; + /* don't remove query points as with the turn-based routing, + * since we might get "no route" because of the time selected + * and so on */ + this._transitAttributionLabel.label = ''; + }); + + transitPlan.connect('no-more-results', () => { + // set the "load more" row to indicate no more results + let numRows = this._transitOverviewListBox.get_children().length; + let loadMoreRow = this._transitOverviewListBox.get_row_at_index(numRows - 2); + loadMoreRow.showNoMore(); + }); + + this._query.connect('run', () => { + this._instructionStack.visible_child = this._instructionSpinner; + }); + + this._query.connect('notify', () => { + if (this._instructionStack.visible_child !== this._instructionSpinner && + this._instructionStack.visible_child !== this._errorLabel) { + if (this._query.transportation === RouteQuery.Transportation.TRANSIT) { + this._clearTransitOverview(); + this._showTransitOverview(); + this._transitAttributionLabel.label = ''; + } else { + this._clearInstructions(); + } + } + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + }); + + route.connect('update', () => { + this._clearInstructions(); + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + this._storeRouteTimeoutId = Mainloop.timeout_add(5000, () => { + let placeStore = Application.placeStore; + let places = this._query.filledPoints.map(function(point) { + return point.place; + }); + let storedRoute = new StoredRoute.StoredRoute({ + transportation: this._query.transportation, + route: route, + places: places, + geoclue: Application.geoclue + }); + + if (!storedRoute.containsNull) { + placeStore.addPlace(storedRoute, + PlaceStore.PlaceType.RECENT_ROUTE); + } + this._storeRouteTimeoutId = 0; + }); + + route.turnPoints.forEach((turnPoint) => { + let row = new InstructionRow.InstructionRow({ visible: true, + turnPoint: turnPoint }); + this._instructionList.add(row); + }); + + /* Translators: %s is a time expression with the format "%f h" or "%f min" */ + this._timeInfo.label = _("Estimated time: %s").format(Utils.prettyTime(route.time)); + this._distanceInfo.label = Utils.prettyDistance(route.distance); + }); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) + this._mapView.showTurnPoint(row.turnPoint); + }); + + transitPlan.connect('update', () => { + this._updateTransitAttribution(); + this._clearTransitOverview(); + this._showTransitOverview(); + this._populateTransitItineraryOverview(); + }); + + /* use list separators for the transit itinerary overview list */ + this._transitOverviewListBox.set_header_func((row, prev) => { + if (prev) + row.set_header(new Gtk.Separator()); + }); + + this._transitOverviewListBox.connect('row-activated', + this._onItineraryOverviewRowActivated.bind(this)); + this._transitItineraryBackButton.connect('clicked', + this._showTransitOverview.bind(this)); + + // connect error handlers + route.connect('error', (route, msg) => this._showError(msg)); + transitPlan.connect('error', (plan, msg) => this._showError(msg)); + } + + _showError(msg) { + this._instructionStack.visible_child = this._errorLabel; + this._errorLabel.label = msg; + } + + _clearTransitOverview() { + let listBox = this._transitOverviewListBox; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._transitWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + _clearTransitItinerary() { + let listBox = this._transitItineraryListBox; + listBox.forall(listBox.remove.bind(listBox)); + } + + _updateTransitAttribution() { + let plan = Application.routingDelegator.transitRouter.plan; + + if (plan.attribution) { + let attributionLabel = + _("Itineraries provided by %s").format(plan.attribution); + if (plan.attributionUrl) { + this._transitAttributionLabel.label = + '%s'.format([plan.attributionUrl], + attributionLabel); + } else { + this._transitAttributionLabel.label = attributionLabel; + } + } else { + this._transitAttributionLabel.label = ''; + } + } + + _showTransitOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + this._transitListStack.visible_child_name = 'overview'; + this._transitHeader.visible_child_name = 'options'; + plan.deselectItinerary(); + } + + _showTransitItineraryView() { + this._transitListStack.visible_child_name = 'itinerary'; + this._transitHeader.visible_child_name = 'itinerary-header'; + } + + _populateTransitItineraryOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + plan.itineraries.forEach((itinerary) => { + let row = + new TransitItineraryRow.TransitItineraryRow({ visible: true, + itinerary: itinerary }); + this._transitOverviewListBox.add(row); + }); + /* add the "load more" row */ + this._transitOverviewListBox.add( + new TransitMoreRow.TransitMoreRow({ visible: true })); + + /* add an empty list row to get a final separator */ + this._transitOverviewListBox.add(new Gtk.ListBoxRow({ visible: true })); + } + + _onItineraryActivated(itinerary) { + let plan = Application.routingDelegator.transitRouter.plan; + + this._populateTransitItinerary(itinerary); + this._showTransitItineraryView(); + plan.selectItinerary(itinerary); + } + + _onMoreActivated(row) { + row.startLoading(); + Application.routingDelegator.transitRouter.fetchMoreResults(); + } + + _onItineraryOverviewRowActivated(listBox, row) { + this._transitOverviewListBox.unselect_all(); + + if (row.itinerary) + this._onItineraryActivated(row.itinerary); + else + this._onMoreActivated(row); + } + + _populateTransitItinerary(itinerary) { + this._transitItineraryTimeLabel.label = + itinerary.prettyPrintTimeInterval(); + this._transitItineraryDurationLabel.label = + itinerary.prettyPrintDuration(); + + this._clearTransitItinerary(); + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + let row = new TransitLegRow.TransitLegRow({ leg: leg, + start: i === 0, + mapView: this._mapView }); + this._transitItineraryListBox.add(row); + } + + /* insert the additional arrival row, showing the arrival place and time */ + this._transitItineraryListBox.add( + new TransitArrivalRow.TransitArrivalRow({ itinerary: itinerary, + mapView: this._mapView })); + } + + + _clearInstructions() { + let listBox = this._instructionList; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._instructionWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + // Iterate over points and establish the new order of places + _reorderRoutePoints(srcIndex, destIndex) { + let points = this._query.points; + let srcPlace = this._draggedPoint.place; + + // Determine if we are swapping from "above" or "below" + let step = (srcIndex < destIndex) ? -1 : 1; + + // Hold off on notifying the changes to query.points until + // we have re-arranged the places. + this._query.freeze_notify(); + + for (let i = destIndex; i !== (srcIndex + step); i += step) { + // swap + [points[i].place, srcPlace] = [srcPlace, points[i].place]; + } + + this._query.thaw_notify(); + } + + /* The reason we don't just use the array .reverse() function is that we + * need to update the place parameters on the actual point objects in the + * array to fire the query notify signal that will initiate an update. + */ + _reverseRoutePoints() { + let points = this._query.points; + let length = points.length; + + this._query.freeze_notify(); + for (let i = 0; i < length / 2; i++) { + let p1 = points[i].place; + let p2 = points[length - i - 1].place; + + points[i].place = p2; + points[length - i - 1].place = p1; + } + this._query.thaw_notify(); + } + + _onDragDrop(row, context, x, y, time) { + let srcIndex = this._query.points.indexOf(this._draggedPoint); + let destIndex = row.get_index(); + + this._reorderRoutePoints(srcIndex, destIndex); + Gtk.drag_finish(context, true, false, time); + return true; + } + + _dragHighlightRow(row) { + row.opacity = 0.6; + } + + _dragUnhighlightRow(row) { + row.opacity = 1.0; + } + + // Set the opacity of the row we are currently dragging above + // to semi transparent. + _onDragMotion(row, context, x, y, time) { + let routeEntry = row.get_child(); + + if (this._draggedPoint && this._draggedPoint !== routeEntry.point) { + this._dragHighlightRow(row); + Gdk.drag_status(context, Gdk.DragAction.MOVE, time); + } else + Gdk.drag_status(context, 0, time); + return true; + } + + // Drag ends, show the dragged row again. + _onDragEnd(context, row) { + this._draggedPoint = null; + + // Restore to natural height + row.height_request = -1; + row.get_child().show(); + } + + // Drag begins, set the correct drag icon and hide the dragged row. + _onDragBegin(context, row) { + let routeEntry = row.get_child(); + let width = row.get_allocated_width(); + let height = row.get_allocated_height(); + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface) + + row.draw(cr); + this._draggedPoint = routeEntry.point; + + // Set a fixed height on the row to prevent the sidebar height + // to shrink while dragging a row. + row.height_request = height; + row.get_child().hide(); + + Gtk.drag_set_icon_surface(context, surface); + } + + // Set up drag and drop between RouteEntrys. The drag source is from a + // GtkEventBox that contains the start/end icon next in the entry. And + // the drag destination is the ListBox row. + _initRouteDragAndDrop(routeEntry) { + let dragIcon = routeEntry.iconEventBox; + let row = routeEntry.get_parent(); + + dragIcon.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, + null, + Gdk.DragAction.MOVE); + dragIcon.drag_source_add_image_targets(); + + row.drag_dest_set(Gtk.DestDefaults.MOTION, + null, + Gdk.DragAction.MOVE); + row.drag_dest_add_image_targets(); + + dragIcon.connect('drag-begin', (icon, context) => this._onDragBegin(context, row)); + dragIcon.connect('drag-end', (icon, context) => this._onDragEnd(context, row)); + + row.connect('drag-leave', this._dragUnhighlightRow.bind(this, row)); + row.connect('drag-motion', this._onDragMotion.bind(this)); + row.connect('drag-drop', this._onDragDrop.bind(this)); + } +}); diff --git a/src/socialPlace.js b/src/socialPlace.js new file mode 100644 index 00000000..8ee1e8d3 --- /dev/null +++ b/src/socialPlace.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Location = imports.location; + +var SocialPlace = GObject.registerClass( +class SocialPlace extends GObject.Object { + _init(params) { + super._init(); + + this.id = params.id; + this.name = params.name; + this.latitude = params.latitude; + this.longitude = params.longitude; + this.category = params.category; + this.link = params.link; + this.originalData = params.originalData; + } + + get location() { + return new Location.Location({ latitude: parseFloat(this.latitude), + longitude: parseFloat(this.longitude) }); + } +}); diff --git a/src/socialPlaceListBox.js b/src/socialPlaceListBox.js new file mode 100644 index 00000000..cb70fec7 --- /dev/null +++ b/src/socialPlaceListBox.js @@ -0,0 +1,103 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var SocialPlaceRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-row.ui', + InternalChildren: [ 'nameLabel', + 'categoryLabel' ] +}, class SocialPlaceRow extends Gtk.ListBoxRow { + + _init(params) { + this.place = params.place; + delete params.place; + + super._init(params); + + this._nameLabel.label = this.place.name; + if (this.place.category) + this._categoryLabel.label = this.place.category; + else + this._categoryLabel.visible = false; + } +}); + +var SocialPlaceMoreResultsRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-more-results-row.ui' +}, class SocialPlaceMoreResultsRow extends Gtk.ListBoxRow {}); + +var SocialPlaceListBox = GObject.registerClass({ + Signals: { + 'place-selected': { param_types: [GObject.TYPE_OBJECT] } + } +}, class SocialPlaceListBox extends Gtk.ListBox { + + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + this.connect('row-activated', (list, row) => { + if (!row.place) { + // "Show more results" row activated + row.destroy(); + this._showBadMatches(); + } else + this.emit('place-selected', row.place); + }); + } + + get matches() { + return this._matches; + } + + set matches(matches) { + this.forall(function(row) { + row.destroy(); + }); + + this._matches = matches; + + if (this._matches.exactMatches.length + + this._matches.goodMatches.length === 0) { + this._showBadMatches(); + } else { + this._matches.exactMatches.forEach(this._addPlace.bind(this)); + this._matches.goodMatches.forEach(this._addPlace.bind(this)); + + if (this._matches.badMatches.length > 0) + this._addMoreResults(); + } + } + + _showBadMatches() { + this._matches.badMatches.forEach(this._addPlace.bind(this)); + } + + _addPlace(place) { + this.add(new SocialPlaceRow({ place: place })); + } + + _addMoreResults() { + this.add(new SocialPlaceMoreResultsRow({})); + } +}); diff --git a/src/socialPlaceMatcher.js b/src/socialPlaceMatcher.js new file mode 100644 index 00000000..2c8c4e9d --- /dev/null +++ b/src/socialPlaceMatcher.js @@ -0,0 +1,125 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +/** + * The Levenshtein distance is a string comparison algorithm defined + * as the minimal number of characters you have to replace, insert or + * delete to transform string a into string b. + * We use it to compare the similarities of two place names. + * + * http://en.wikipedia.org/wiki/Levenshtein_distance + */ +function _getLevenshteinDistance(a, b) { + let i; + let j; + let d = []; + + for (i = 0; i <= a.length; i++) { + d[i] = []; + for (j = 0; j <= b.length; j++) + d[i][j] = 0; + } + + for (i = 1; i <= a.length; i++) + d[i][0] = i; + + for (j = 1; j <= b.length; j++) + d[0][j] = j; + + for (j = 1; j <= b.length; j++) + for (i = 1; i <= a.length; i++) + if (a[i - 1] === b[j - 1]) + d[i][j] = d[i-1][j-1]; + else + d[i][j] = Math.min(d[i-1][j] + 1, + d[i][j-1] + 1, + d[i-1][j-1] + 1); + + return d[a.length][b.length]; +} + +function _normalize(name) { + return name.toLowerCase().trim().replace(/ +(?= )/g,''); +} + +function _getPlacesLevenshteinDistance(geoPlace, socialPlace) { + let a = geoPlace.name; + let b = socialPlace.name; + + return _getLevenshteinDistance(_normalize(a), _normalize(b)); +} + +/** + * Returns: 0 for bad match, 1 for good match and 2 + * exact match. + */ +function _getKindOfMatch(geoPlace, socialPlace) { + let distance = geoPlace.location.get_distance_from(socialPlace.location); + let levenshtein = _getPlacesLevenshteinDistance(geoPlace, socialPlace); + + if (distance < 0.01 && levenshtein <= 2) + return 2; + else if (distance < 0.03 && levenshtein <= 5) + return 1; + else + return 0; +} + +function match(geoPlace, socialPlaces) { + let result = { + exactMatches: [], + goodMatches: [], + badMatches: [] + }; + + socialPlaces.sort(function(a, b) { + let da = geoPlace.location.get_distance_from(a.location); + let db = geoPlace.location.get_distance_from(b.location); + + if (da > db) + return 1; + else if (da < db) + return -1; + + return 0; + }); + + socialPlaces.forEach(function(place) { + let match = _getKindOfMatch(geoPlace, place); + + switch (match) + { + case 0: + result.badMatches.push(place); + break; + + case 1: + result.goodMatches.push(place); + break; + + case 2: + result.exactMatches.push(place); + break; + } + }); + + return result; +} diff --git a/src/storedRoute.js b/src/storedRoute.js new file mode 100644 index 00000000..784c6693 --- /dev/null +++ b/src/storedRoute.js @@ -0,0 +1,215 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; + +// directional override markers +const _RLM = '\u200F'; +const _LRM = '\u200E'; + +var StoredRoute = GObject.registerClass( +class StoredRoute extends Place.Place { + + _init(params) { + let route = params.route; + delete params.route; + + this._transportation = params.transportation; + delete params.transportation; + + this.route = new Route.Route(); + this.route.update({ path: route.path, + turnPoints: route.turnPoints, + distance: route.distance, + time: route.time, + bbox: route.bbox }); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + + this.places = params.places; + delete params.places; + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + params.name = directionMarker + this.places[0].name + directionMarker + + arrow + directionMarker + this.places.last().name; + + + let geoclue = params.geoclue; + delete params.geoclue; + + this._containsCurrentLocation = false; + + let currentLocation = null; + if (geoclue) + currentLocation = geoclue.place; + + this.places.forEach((place) => { + if (currentLocation && place === currentLocation) + this._containsCurrentLocation = true; + }); + + super._init(params); + } + + get viaString() { + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + return this.places.map(function(place) { + return directionMarker + place.name; + }).join(directionMarker + arrow); + } + + get transportation() { + return this._transportation; + } + + get icon() { + let transport = RouteQuery.Transportation; + let icon = Gio.Icon.new_for_string('route-button-symbolic'); + + switch(this._transportation) { + case transport.PEDESTRIAN: + icon = Gio.Icon.new_for_string('route-pedestrian-symbolic'); + break; + case transport.CAR: + icon = Gio.Icon.new_for_string('route-car-symbolic'); + break; + case transport.BIKE: + icon = Gio.Icon.new_for_string('route-bike-symbolic'); + break; + } + + return icon; + } + + get uniqueID() { + return this._transportation + '-' + this.places.map(function(place) { + return [place.osm_type, place.osm_id].join('-'); + }).join('-'); + } + + get containsCurrentLocation() { + return this._containsCurrentLocation; + } + + get containsNull() { + let hasNull = false; + + for (let p = 0; p < this.places.length; p++) { + if (!this.places[p].name) { + hasNull = true; + break; + } + } + return hasNull; + } + + toJSON() { + let turnPoints = this.route.turnPoints.map(function(turnPoint) { + let coordinate = { latitude: turnPoint.coordinate.latitude, + longitude: turnPoint.coordinate.longitude }; + return { coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction }; + }); + let bounding_box = { top: this.route.bbox.top, + bottom: this.route.bbox.bottom, + left: this.route.bbox.left, + right: this.route.bbox.right }; + + let path = this.route.path.map(function(coordinate) { + return { latitude: coordinate.latitude, + longitude: coordinate.longitude }; + }); + + let route = { path: path, + turnPoints: turnPoints, + distance: this.route.distance, + time: this.route.time }; + + let places = this.places.map(function(place) { + return place.toJSON(); + }); + + return { id: -1, + transportation: this._transportation, + route: route, + places: places }; + } +}); + +StoredRoute.fromJSON = function(obj) { + let props; + let places = []; + let route; + let transportation = null; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'transportation': + transportation = prop; + break; + + case 'route': + route = new Route.Route(); + prop.path = prop.path.map((coordinate) => { + let lat = coordinate.latitude; + let lon = coordinate.longitude; + return new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + }); + prop.turnPoints = prop.turnPoints.map((turnPoint) => { + let lat = turnPoint.coordinate.latitude; + let lon = turnPoint.coordinate.longitude; + + let coordinate = new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + + return new Route.TurnPoint({ + coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction + }); + }); + route.update(prop); + break; + + case 'places': + prop.forEach((p) => places.push(Place.Place.fromJSON(p))); + break; + } + } + return new StoredRoute({ transportation: transportation, + route: route, + places: places }); +}; diff --git a/src/time.js b/src/time.js new file mode 100644 index 00000000..0c19400b --- /dev/null +++ b/src/time.js @@ -0,0 +1,212 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; + +// allow using :, ., and the ratio symbol to separate hours:mins +const _DELIMITERS = [':', '.', '\u2236']; + +// digits variants +const _DIGIT_RANGE_BASES = [ + // Arabic + 0x0660, + // Persian + 0x06f0, + // Nko + 0x07c0, + // Devanagari + 0x0966, + // Bengali + 0x09e6, + // Gurmukhi + 0x0a66, + // Gujarati + 0x0ae6, + // Oriya + 0x0b66, + // Tamil + 0x0be6, + // Telugu + 0x0c66, + // Kannada + 0x0c80, + // Malayalam + 0x0d66, + // Sinhala + 0x0de6, + // Thai + 0x0e50, + // Lao + 0x0ed0, + // Tibetan + 0x0f20, + // Myanmar + 0x1090, + // Khmer + 0x17e0, + // Mongolian + 0x1810, + // Limbu + 0x1946, + // Tai lue + 0x19d0, + // Tai Tham + 0x1a90, + // Balinese + 0x1b50, + // Sundanese + 0x1bb0, + // Lepcha + 0x1c40 +]; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let _clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat24 = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: false, + timeZone: 'UTC'}); +const _timeFormat12 = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: true, + timeZone: 'UTC'}); + +/* parse a time from a fixed set of free-formats into a string representation: + * hour:min + * + * Examples: + * "10:00" → "10:00" + * "1:00pm" → "13:00" + * "0800" → "08:00" + * "10.30" → "10:30" + * "12" → "12:00" + * + * TODO: maybe try to use some library to get better locale handling, + * or push for something in GLib */ +function parseTimeString(timeString) { + let pmSet = false; + let hours; + let mins; + /* remove extra whitespaces */ + timeString = timeString.replace(/\s+/g, ''); + + if (timeString.endsWith('am')) { + timeString = timeString.substring(0, timeString.length - 2); + } else if (timeString.endsWith('pm')) { + timeString = timeString.substring(0, timeString.length - 2); + pmSet = true; + } + + /* remove delimiting characters if they occur at position 3 (hh:mm) + * or position 2 (h:mm) + */ + if (_DELIMITERS.includes(timeString.charAt(2))) + timeString = timeString.substring(0, 2) + timeString.substring(3); + else if (_DELIMITERS.includes(timeString.charAt(1))) + timeString = timeString.substring(0, 1) + timeString.substring(2); + + // translate localized digits to corresponding Latin digits + let translatedTimeString = ''; + + for (let i = 0; i < timeString.length; i++) { + let c = timeString.charCodeAt(i); + + _DIGIT_RANGE_BASES.forEach((base) => { + if (c >= base && c < base + 10) + c = (c - base) + 0x30; + }); + translatedTimeString += String.fromCharCode(c); + } + + if (translatedTimeString.length === 4) { + /* expect a full time specification (hours, minutes) */ + hours = translatedTimeString.substring(0, 2); + mins = translatedTimeString.substring(2, 4); + } else if (timeString.length === 3) { + /* interpret a 3 digit string as h:mm */ + hours = '0' + translatedTimeString.substring(0, 1); + mins = translatedTimeString.substring(1, 3); + } else if (translatedTimeString.length === 2) { + /* expect just the hour part */ + hours = translatedTimeString.substring(0, 2); + mins = '00'; + } else if (translatedTimeString.length === 1) { + /* expect just the hour part, one digit */ + hours = '0' + translatedTimeString; + mins = '00'; + } else { + /* this makes no sense, just bail out */ + return null; + } + + /* check if the parts can be interpreted as numbers */ + if (hours % 1 === 0 && mins % 1 === 0) { + if (pmSet) + hours = parseInt(hours) + 12; + + /* if the hours or minutes is out-of-range, bail out */ + if (hours < 0 || hours > 24 || mins < 0 || mins > 59) + return null; + + return hours + ':' + mins; + } else { + return null; + } +} + +function _is12Hour() { + return _clockFormat === '12h'; +} + +/** + * Format a time as HH:mm in either 12 or 24 h + * format depending on system settings + * given time in ms since Epoch with an offset in + * ms relative UTC. + */ +function formatTimeWithTZOffset(time, offset) { + let utcTimeWithOffset = time + offset; + let date = new Date(); + let timeFormat = _is12Hour() ? _timeFormat12 : _timeFormat24; + + date.setTime(utcTimeWithOffset); + + return timeFormat.format(date); +} + +/** + * Format a time as HH:mm in either 12 or 24 h + * format depending on system settings + * given hours and minutes values. + */ +function formatTimeFromHoursAndMins(hours, mins) { + let date = new Date(); + let timeFormat = _is12Hour() ? _timeFormat12 : _timeFormat24; + + date.setUTCHours(hours); + date.setUTCMinutes(mins); + + return timeFormat.format(date); +} diff --git a/src/togeojson/LICENSE b/src/togeojson/LICENSE new file mode 100644 index 00000000..bc7706e0 --- /dev/null +++ b/src/togeojson/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2012 Tom MacWright + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/src/togeojson/togeojson.js b/src/togeojson/togeojson.js new file mode 100644 index 00000000..ee99627f --- /dev/null +++ b/src/togeojson/togeojson.js @@ -0,0 +1,357 @@ +const Dom = imports.xmldom.dom; + +var toGeoJSON = (function() { + 'use strict'; + + var removeSpace = /\s*/g, + trimSpace = /^\s*|\s*$/g, + splitSpace = /\s+/; + // generate a short, numeric hash of a string + function okhash(x) { + if (!x || !x.length) return 0; + for (var i = 0, h = 0; i < x.length; i++) { + h = ((h << 5) - h) + x.charCodeAt(i) | 0; + } return h; + } + // all Y children of X + function get(x, y) { return x.getElementsByTagName(y); } + function attr(x, y) { return x.getAttribute(y); } + function attrf(x, y) { return parseFloat(attr(x, y)); } + // one Y child of X, if any, otherwise null + function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; } + // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize + function norm(el) { if (el.normalize) { el.normalize(); } return el; } + // cast array x into numbers + function numarray(x) { + for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); } + return o; + } + function clean(x) { + var o = {}; + for (var i in x) { if (x[i]) { o[i] = x[i]; } } + return o; + } + // get the content of a text node, if any + function nodeVal(x) { + if (x) { norm(x); } + return (x && x.textContent) || ''; + } + // get one coordinate from a coordinate array, if any + function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); } + // get all coordinates from a coordinate array as [[],[]] + function coord(v) { + var coords = v.replace(trimSpace, '').split(splitSpace), + o = []; + for (var i = 0; i < coords.length; i++) { + o.push(coord1(coords[i])); + } + return o; + } + function coordPair(x) { + var ll = [attrf(x, 'lon'), attrf(x, 'lat')], + ele = get1(x, 'ele'), + // handle namespaced attribute in browser + heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'), + time = get1(x, 'time'), + e; + if (ele) { + e = parseFloat(nodeVal(ele)); + if (!isNaN(e)) { + ll.push(e); + } + } + return { + coordinates: ll, + time: time ? nodeVal(time) : null, + heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null + }; + } + + // create a new feature collection parent object + function fc() { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var serializer = new Dom.XMLSerializer(); + function xml2str(str) { + // IE9 will create a new XMLSerializer but it'll crash immediately. + // This line is ignored because we don't run coverage tests in IE9 + /* istanbul ignore next */ + if (str.xml !== undefined) return str.xml; + return serializer.serializeToString(str); + } + + var t = { + kml: function(doc) { + + var gj = fc(), + // styleindex keeps track of hashed styles in order to match features + styleIndex = {}, + // atomic geospatial types supported by KML - MultiGeometry is + // handled separately + geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'], + // all root placemarks in the file + placemarks = get(doc, 'Placemark'), + styles = get(doc, 'Style'), + styleMaps = get(doc, 'StyleMap'); + + for (var k = 0; k < styles.length; k++) { + styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16); + } + for (var l = 0; l < styleMaps.length; l++) { + styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16); + } + for (var j = 0; j < placemarks.length; j++) { + gj.features = gj.features.concat(getPlacemark(placemarks[j])); + } + function kmlColor(v) { + var color, opacity; + v = v || ''; + if (v.substr(0, 1) === '#') { v = v.substr(1); } + if (v.length === 6 || v.length === 3) { color = v; } + if (v.length === 8) { + opacity = parseInt(v.substr(0, 2), 16) / 255; + color = '#'+v.substr(2); + } + return [color, isNaN(opacity) ? undefined : opacity]; + } + function gxCoord(v) { return numarray(v.split(' ')); } + function gxCoords(root) { + var elems = get(root, 'coord', 'gx'), coords = [], times = []; + if (elems.length === 0) elems = get(root, 'gx:coord'); + for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i]))); + var timeElems = get(root, 'when'); + for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j])); + return { + coords: coords, + times: times + }; + } + function getGeometry(root) { + var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = []; + if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); } + if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); } + if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); } + for (i = 0; i < geotypes.length; i++) { + geomNodes = get(root, geotypes[i]); + if (geomNodes) { + for (j = 0; j < geomNodes.length; j++) { + geomNode = geomNodes[j]; + if (geotypes[i] === 'Point') { + geoms.push({ + type: 'Point', + coordinates: coord1(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'LineString') { + geoms.push({ + type: 'LineString', + coordinates: coord(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'Polygon') { + var rings = get(geomNode, 'LinearRing'), + coords = []; + for (k = 0; k < rings.length; k++) { + coords.push(coord(nodeVal(get1(rings[k], 'coordinates')))); + } + geoms.push({ + type: 'Polygon', + coordinates: coords + }); + } else if (geotypes[i] === 'Track' || + geotypes[i] === 'gx:Track') { + var track = gxCoords(geomNode); + geoms.push({ + type: 'LineString', + coordinates: track.coords + }); + if (track.times.length) coordTimes.push(track.times); + } + } + } + } + return { + geoms: geoms, + coordTimes: coordTimes + }; + } + function getPlacemark(root) { + var geomsAndTimes = getGeometry(root), i, properties = {}, + name = nodeVal(get1(root, 'name')), + styleUrl = nodeVal(get1(root, 'styleUrl')), + description = nodeVal(get1(root, 'description')), + timeSpan = get1(root, 'TimeSpan'), + extendedData = get1(root, 'ExtendedData'), + lineStyle = get1(root, 'LineStyle'), + polyStyle = get1(root, 'PolyStyle'); + + if (!geomsAndTimes.geoms.length) return []; + if (name) properties.name = name; + if (styleUrl[0] !== '#') { + styleUrl = '#' + styleUrl; + } + if (styleUrl && styleIndex[styleUrl]) { + properties.styleUrl = styleUrl; + properties.styleHash = styleIndex[styleUrl]; + } + if (description) properties.description = description; + if (timeSpan) { + var begin = nodeVal(get1(timeSpan, 'begin')); + var end = nodeVal(get1(timeSpan, 'end')); + properties.timespan = { begin: begin, end: end }; + } + if (lineStyle) { + var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))), + color = linestyles[0], + opacity = linestyles[1], + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) properties.stroke = color; + if (!isNaN(opacity)) properties['stroke-opacity'] = opacity; + if (!isNaN(width)) properties['stroke-width'] = width; + } + if (polyStyle) { + var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))), + pcolor = polystyles[0], + popacity = polystyles[1], + fill = nodeVal(get1(polyStyle, 'fill')), + outline = nodeVal(get1(polyStyle, 'outline')); + if (pcolor) properties.fill = pcolor; + if (!isNaN(popacity)) properties['fill-opacity'] = popacity; + if (fill) properties['fill-opacity'] = fill === '1' ? 1 : 0; + if (outline) properties['stroke-opacity'] = outline === '1' ? 1 : 0; + } + if (extendedData) { + var datas = get(extendedData, 'Data'), + simpleDatas = get(extendedData, 'SimpleData'); + + for (i = 0; i < datas.length; i++) { + properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value')); + } + for (i = 0; i < simpleDatas.length; i++) { + properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]); + } + } + if (geomsAndTimes.coordTimes.length) { + properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ? + geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes; + } + var feature = { + type: 'Feature', + geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : { + type: 'GeometryCollection', + geometries: geomsAndTimes.geoms + }, + properties: properties + }; + if (attr(root, 'id')) feature.id = attr(root, 'id'); + return [feature]; + } + return gj; + }, + gpx: function(doc) { + var i, + tracks = get(doc, 'trk'), + routes = get(doc, 'rte'), + waypoints = get(doc, 'wpt'), + // a feature collection + gj = fc(), + feature; + for (i = 0; i < tracks.length; i++) { + feature = getTrack(tracks[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < routes.length; i++) { + feature = getRoute(routes[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < waypoints.length; i++) { + gj.features.push(getPoint(waypoints[i])); + } + function getPoints(node, pointname) { + var pts = get(node, pointname), + line = [], + times = [], + heartRates = [], + l = pts.length; + if (l < 2) return {}; // Invalid line in GeoJSON + for (var i = 0; i < l; i++) { + var c = coordPair(pts[i]); + line.push(c.coordinates); + if (c.time) times.push(c.time); + if (c.heartRate) heartRates.push(c.heartRate); + } + return { + line: line, + times: times, + heartRates: heartRates + }; + } + function getTrack(node) { + var segments = get(node, 'trkseg'), + track = [], + times = [], + heartRates = [], + line; + for (var i = 0; i < segments.length; i++) { + line = getPoints(segments[i], 'trkpt'); + if (line.line) track.push(line.line); + if (line.times && line.times.length) times.push(line.times); + if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates); + } + if (track.length === 0) return null; + var properties = getProperties(node); + if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times; + if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates; + return { + type: 'Feature', + properties: properties, + geometry: { + type: track.length === 1 ? 'LineString' : 'MultiLineString', + coordinates: track.length === 1 ? track[0] : track + } + }; + } + function getRoute(node) { + var line = getPoints(node, 'rtept'); + if (!line.line) return null; + var routeObj = { + type: 'Feature', + properties: getProperties(node), + geometry: { + type: 'LineString', + coordinates: line.line + } + }; + return routeObj; + } + function getPoint(node) { + var prop = getProperties(node); + prop.sym = nodeVal(get1(node, 'sym')); + return { + type: 'Feature', + properties: prop, + geometry: { + type: 'Point', + coordinates: coordPair(node).coordinates + } + }; + } + function getProperties(node) { + var meta = ['name', 'desc', 'author', 'copyright', 'link', + 'time', 'keywords'], + prop = {}, + k; + for (k = 0; k < meta.length; k++) { + prop[meta[k]] = nodeVal(get1(node, meta[k])); + } + return clean(prop); + } + return gj; + } + }; + return t; +})(); + +if (typeof module !== 'undefined') module.exports = toGeoJSON; diff --git a/src/transit.js b/src/transit.js new file mode 100644 index 00000000..936847e5 --- /dev/null +++ b/src/transit.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Utils = imports.utils; + +/** + * Get the label to display for the starting point of an itinerary leg. + * leg: the itinerary leg + * isFirstLeg: true if this is the first leg of the itinerary. + */ +function getFromLabel(leg, isFirstLeg) { + if (isFirstLeg) { + if (leg.from) { + /* Translators: this is a format string indicating instructions + * starting a journey at the address given as the parameter + */ + return _("Start at %s").format(leg.from); + } else { + /* Translators: this indicates starting a journey at a location + * with no set name (such as when the user started routing from + * an arbitrary point on the map) + */ + return _("Start"); + } + } else { + return leg.from; + } +} + +/** + * Get the label to display for the destination headsign. + * leg: the itinerary leg + */ +function getHeadsignLabel(leg) { + if (leg.transit && leg.headsign) { + return leg.headsign; + } else if (!leg.transit) { + /* Translators: this is a format string indicating walking a certain + * distance, with the distance expression being the %s placeholder + */ + return _("Walk %s").format(Utils.prettyDistance(leg.distance)); + } else { + return null; + } +} + +/** + * Get the label to display for arrival of the final leg of an itinerary. + */ +function getArrivalLabel(lastLeg) { + if (lastLeg.to) { + /* Translators: this a format string indicating arriving at the + * destination of journey with the arrival address and transit + * stop as the format parameter */ + return _("Arrive at %s").format(lastLeg.to); + } else { + return _("Arrive"); + } +} diff --git a/src/transitArrivalMarker.js b/src/transitArrivalMarker.js new file mode 100644 index 00000000..62547400 --- /dev/null +++ b/src/transitArrivalMarker.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitArrivalMarker = GObject.registerClass( +class TransitArrivalMarker extends MapMarker.MapMarker { + + _init(params) { + let lastPoint = params.leg.polyline[params.leg.polyline.length - 1]; + let location = + new Location.Location({ latitude: lastPoint.latitude, + longitude: lastPoint.longitude + }); + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-end-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitArrivalRow.js b/src/transitArrivalRow.js new file mode 100644 index 00000000..bb5333db --- /dev/null +++ b/src/transitArrivalRow.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Transit = imports.transit; + +var TransitArrivalRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-arrival-row.ui', + InternalChildren: ['arrivalLabel', + 'timeLabel', + 'eventBox', + 'separator'] +}, class TransitArrivalRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._arrivalLabel.label = Transit.getArrivalLabel(lastLeg); + this._timeLabel.label = lastLeg.prettyPrintArrivalTime(); + + this._eventBox.connect('event', (widget, event) => { + this._onEvent(event, lastLeg.toCoordinate); + return true; + }); + } + + _onEvent(event, coord) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(coord[0], coord[1]); + } + } +}); diff --git a/src/transitBoardMarker.js b/src/transitBoardMarker.js new file mode 100644 index 00000000..2409614e --- /dev/null +++ b/src/transitBoardMarker.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const ICON_SIZE = 12; +const ACTOR_SIZE = 20; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitBoardMarker = GObject.registerClass( +class TransitBoardMarker extends MapMarker.MapMarker { + + _init(params) { + let firstPoint = params.leg.polyline[0]; + let location = new Location.Location({ latitude: firstPoint.latitude, + longitude: firstPoint.longitude + }); + let leg = params.leg; + + delete params.leg; + params.place = new Place.Place({ location: location }); + super._init(params); + + this.add_actor(this._createActor(leg)); + } + + /* Creates a Clutter actor for the given transit leg, showing the + * corresponding transit type icon and rendered inside a circle using the + * foreground color of the icon taken from the transit legs text color + * attribute and background color taken from the transit legs color + * attribute. + * Also draw an outline in the same color as the icon in case the + * background color above a threshold to improve readability against the + * map background. + */ + _createActor(leg) { + try { + let bgColor = leg.color ? leg.color : TransitPlan.DEFAULT_ROUTE_COLOR; + let fgColor = + Color.getContrastingForegroundColor(bgColor, leg.textColor ? + leg.textColor : + TransitPlan.DEFAULT_ROUTE_TEXT_COLOR); + let hasOutline = + Color.relativeLuminance(bgColor) > OUTLINE_LUMINANCE_THREASHHOLD; + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let fgRed = Color.parseColor(fgColor, 0); + let fgGreen = Color.parseColor(fgColor, 1); + let fgBlue = Color.parseColor(fgColor, 2); + let fgRGBA = new Gdk.RGBA({ red: fgRed, + green: fgGreen, + blue: fgBlue, + alpha: 1.0 + }); + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_icon(leg.iconName, ICON_SIZE, + Gtk.IconLookupFlags.FORCE_SIZE); + let pixbuf = info.load_symbolic(fgRGBA, null, null, null)[0]; + let canvas = new Clutter.Canvas({ width: ACTOR_SIZE, + height: ACTOR_SIZE }); + + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.arc(ACTOR_SIZE / 2, ACTOR_SIZE / 2, ACTOR_SIZE / 2, + 0, Math.PI * 2); + cr.fillPreserve(); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + (ACTOR_SIZE - pixbuf.get_width()) / 2, + (ACTOR_SIZE - pixbuf.get_height()) / 2); + cr.paint(); + + if (hasOutline) { + cr.setSourceRGB(fgRed, fgGreen, fgBlue); + cr.setLineWidth(1); + cr.stroke(); + } + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + + actor.set_content(canvas); + actor.set_size(ACTOR_SIZE, ACTOR_SIZE); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitItineraryRow.js b/src/transitItineraryRow.js new file mode 100644 index 00000000..8d97e8cf --- /dev/null +++ b/src/transitItineraryRow.js @@ -0,0 +1,136 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const TransitRouteLabel = imports.transitRouteLabel; + +// maximum number of legs to show before abbreviating with a … in the middle +const MAX_LEGS_SHOWN = 8; + +var TransitItineraryRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-itinerary-row.ui', + InternalChildren: ['timeLabel', + 'durationLabel', + 'summaryGrid'] +}, class TransitItineraryRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + super._init(params); + + this._timeLabel.label = this._itinerary.prettyPrintTimeInterval(); + this._durationLabel.label = this._itinerary.prettyPrintDuration(); + + this._populateSummary(); + } + + get itinerary() { + return this._itinerary; + } + + _populateSummary() { + let length = this._itinerary.legs.length; + /* use compacted route labels when more than 2 legs, to avoid + * overflowing the sidebar width + */ + let useCompact = length > 2; + /* don't show the route labels if too much space is consumed, + * the constant 26 here was empiracally tested out... + */ + let estimatedSpace = this._calculateEstimatedSpace(); + let useContractedLabels = estimatedSpace > 26; + + if (length > MAX_LEGS_SHOWN) { + /* ellipsize list with horizontal dots to avoid overflowing and + * expanding the sidebar + */ + this._renderLegs(this._itinerary.legs.slice(0, MAX_LEGS_SHOWN / 2), + true, true); + this._summaryGrid.add(new Gtk.Label({ visible: true, + label: '\u22ef' } )); + this._renderLegs(this._itinerary.legs.slice(-MAX_LEGS_SHOWN / 2), + true, true); + } else { + this._renderLegs(this._itinerary.legs, useCompact, + useContractedLabels); + } + } + + _renderLegs(legs, useCompact, useContractedLabels) { + let length = legs.length; + + legs.forEach((leg, i) => { + this._summaryGrid.add(this._createLeg(leg, useCompact, + useContractedLabels)); + if (i !== length - 1) + this._summaryGrid.add(new Gtk.Label({ visible: true, + label: '-' })); + }); + } + + /* calculate an estimated relative space-consumption for rendering, + * this is done based on route label character lengths and a fixed + * "placeholder" amount for mode icons and separators, since doing an + * exact pixel-correct calculation would be hard depending on fonts and + * themes + */ + _calculateEstimatedSpace() { + let length = this._itinerary.legs.length; + /* assume mode icons and the separators consume about twice the space of + * characters + */ + let space = 4 * length - 2; + + this._itinerary.legs.forEach(function(leg) { + if (leg.transit) + space += leg.compactRoute.length; + }); + + return space; + } + + _createLeg(leg, useCompact, useContractedLabels) { + let icon = new Gtk.Image({ icon_name: leg.iconName, visible: true }); + + icon.get_style_context().add_class('sidebar-icon'); + + if (!leg.transit || useContractedLabels) { + /* if this is a non-transit leg (walking), or in case we should + * display only a mode icon (to save space), insert a sole icon */ + return icon; + } else { + /* for transit legs put besides a short route label */ + let grid = new Gtk.Grid({ visible: true, column_spacing: 2 }); + + grid.attach(icon, 0, 0, 1, 1); + grid.attach(new TransitRouteLabel.TransitRouteLabel({ leg: leg, + compact: useCompact, + visible: true }), + 1, 0, 1, 1); + + return grid; + } + } +}); diff --git a/src/transitLegRow.js b/src/transitLegRow.js new file mode 100644 index 00000000..c4db72aa --- /dev/null +++ b/src/transitLegRow.js @@ -0,0 +1,208 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const InstructionRow = imports.instructionRow; +const Transit = imports.transit; +const TransitRouteLabel = imports.transitRouteLabel; +const TransitStopRow = imports.transitStopRow; +const Utils = imports.utils; + +var TransitLegRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-leg-row.ui', + InternalChildren: ['modeImage', + 'fromLabel', + 'routeGrid', + 'timeLabel', + 'footerStack', + 'expandButton', + 'detailsRevealer', + 'agencyLabel', + 'collapsButton', + 'instructionList', + 'eventBox'] +}, class TransitLegRow extends Gtk.ListBoxRow { + + _init(params) { + this._leg = params.leg; + delete params.leg; + + this._start = params.start; + delete params.start; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._modeImage.icon_name = this._leg.iconName; + this._fromLabel.label = Transit.getFromLabel(this._leg, this._start); + + if (this._leg.transit) { + let routeLabel = new TransitRouteLabel.TransitRouteLabel({ + leg: this._leg, + }); + + this._routeGrid.add(routeLabel); + + this._agencyLabel.visible = true; + + if (this._leg.agencyUrl) { + let url = GLib.markup_escape_text(this._leg.agencyUrl, -1); + /* we need to double-escape the tooltip text, as GTK+ treats it as + * markup + */ + let tooltip = GLib.markup_escape_text(url, -1); + this._agencyLabel.label = + '%s'.format(url, tooltip, + this._leg.agencyName); + } else { + this._agencyLabel.label = this._leg.agencyName; + } + } else { + this._expandButton.tooltip_text = _("Show walking instructions"); + this._collapsButton.tooltip_text = _("Hide walking instructions"); + } + + if (!this._leg.transit || this._leg.headsign) { + /* Restrict headsign label to 20 characters to avoid horizontally + * overflowing the sidebar. + */ + let headsignLabel = new Gtk.Label({ visible: true, + can_focus: false, + use_markup: true, + hexpand: true, + margin_start: 3, + max_width_chars: 20, + ellipsize: Pango.EllipsizeMode.END, + halign: Gtk.Align.START }); + let label = + GLib.markup_escape_text(Transit.getHeadsignLabel(this._leg), -1); + + headsignLabel.label = '%s'.format(label); + headsignLabel.get_style_context().add_class('dim-label'); + this._routeGrid.add(headsignLabel); + } + + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + + if (this._hasIntructions()) + this._populateInstructions(); + else + this._footerStack.visible_child_name = 'separator'; + + this._expandButton.connect('clicked', this._expand.bind(this)); + this._collapsButton.connect('clicked', this._collaps.bind(this)); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) { + if (row.turnPoint) + this._mapView.showTurnPoint(row.turnPoint); + else + this._mapView.showTransitStop(row.stop, this._leg); + } + }); + + this._eventBox.connect('event', (widget, event) => { + this._handleEventBox(event); + return true; + }); + + this._isExpanded = false; + } + + // Handle events received on the EventBox for expanding when clicking + _handleEventBox(event) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + if (this._isExpanded) { + this._collaps(); + } else { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(this._leg.fromCoordinate[0], + this._leg.fromCoordinate[1]); + if (this._hasIntructions()) + this._expand(); + } + } + } + + _expand() { + this._footerStack.visible_child_name = 'separator'; + this._detailsRevealer.reveal_child = true; + /* collaps the time label down to just show the start time when + * revealing intermediate stop times, as the arrival time is displayed + * at the last stop + */ + this._timeLabel.label = this._leg.prettyPrintDepartureTime(); + this._isExpanded = true; + } + + _collaps() { + this._footerStack.visible_child_name = 'expander'; + this._detailsRevealer.reveal_child = false; + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + this._isExpanded = false; + } + + _hasIntructions() { + return this._leg.transit || this._leg.walkingInstructions; + } + + _populateInstructions() { + if (this._leg.transit) { + if (this._leg.intermediateStops) { + let stops = this._leg.intermediateStops; + for (let index = 0; index < stops.length; index++) { + let stop = stops[index]; + let row = + new TransitStopRow.TransitStopRow({ visible: true, + stop: stop, + final: index === stops.length - 1 }); + this._instructionList.add(row); + } + } + } else { + /* don't output the starting and ending instructions from the walk + * route, since these are explicitly added by the itinerary + */ + for (let index = 1; + index < this._leg.walkingInstructions.length - 1; + index++) { + let instruction = this._leg.walkingInstructions[index]; + let row = + new InstructionRow.InstructionRow({ visible: true, + turnPoint: instruction }); + + this._instructionList.add(row); + } + } + } +}); diff --git a/src/transitMoreRow.js b/src/transitMoreRow.js new file mode 100644 index 00000000..64228b19 --- /dev/null +++ b/src/transitMoreRow.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var TransitMoreRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-more-row.ui', + InternalChildren: ['stack', + 'label'] +}, class TransitMoreRow extends Gtk.ListBoxRow { + + _init(params) { + super._init(params); + + if (Application.routeQuery.arriveBy) + this._label.label = _("Load earlier alternatives"); + else + this._label.label = _("Load later alternatives"); + } + + startLoading() { + this._stack.visible_child_name = 'spinner'; + } + + showNoMore() { + this.activatable = false; + this._label.get_style_context().add_class('dim-label'); + this._stack.visible_child_name = 'label'; + + if (Application.routeQuery.arriveBy) + this._label.label = _("No earlier alternatives found."); + else + this._label.label = _("No later alternatives found."); + } +}); diff --git a/src/transitOptions.js b/src/transitOptions.js new file mode 100644 index 00000000..0a964eef --- /dev/null +++ b/src/transitOptions.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +var TransitOptions = class TransitOptions { + + constructor() { + this._showAllTransitTypes = true; + this._transitTypes = []; + } + + get showAllTransitTypes() { + return this._showAllTransitTypes; + } + + /* When set to true, show any mode of transportation, else only show modes + * added with addTransitType() + */ + set showAllTransitTypes(showAllTransitTypes) { + this._showAllTransitTypes = showAllTransitTypes; + this._transitTypes = []; + } + + /* Add an explicit transport mode to show + */ + addTransitType(transitType) { + this._showAllTransitTypes = false; + this._transitTypes.push(transitType); + } + + get transitTypes() { + return this._transitTypes; + } +}; + +/* return true if the passed in options objects are equal, either both + * accept any transit type, or both contains the same set of types, otherwise + * return false + */ +function equals(first, second) { + if (first.showAllTransitTypes && second.showAllTransitTypes) { + return true; + } else if (first.transitTypes.length !== second.transitTypes.length) { + return false; + } else { + for (let type of first.transitTypes) { + if (second.transitTypes.indexOf(type) === -1) + return false; + } + + return true; + } +} diff --git a/src/transitOptionsPanel.js b/src/transitOptionsPanel.js new file mode 100644 index 00000000..6c23a3ee --- /dev/null +++ b/src/transitOptionsPanel.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const HVT = imports.hvt; +const Time = imports.time; +const TransitOptions = imports.transitOptions; +const TransitPlan = imports.transitPlan; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: clockFormat === '12h' }); + +var TransitOptionsPanel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-options-panel.ui', + InternalChildren: ['transitTimeOptionsComboBox', + 'transitTimeEntry', + 'transitDateButton', + 'transitDateCalendar', + 'transitParametersMenuButton', + 'busCheckButton', + 'tramCheckButton', + 'trainCheckButton', + 'subwayCheckButton', + 'ferryCheckButton', + 'airplaneCheckButton'] +}, class TransitOptionsPanel extends Gtk.Grid { + + _init(params) { + this._query = Application.routeQuery; + super._init(params); + this._initTransitOptions(); + } + + reset() { + /* reset to indicate departure now and forget any previous manually + * set time and date + */ + this._transitTimeOptionsComboBox.active_id = 'leaveNow'; + this._timeSelected = false; + this._dateSelected = false; + this._lastOptions = new TransitOptions.TransitOptions(); + } + + _initTransitOptions() { + this._transitTimeOptionsComboBox.connect('changed', + this._onTransitTimeOptionsComboboxChanged.bind(this)); + this._transitTimeEntry.connect('activate', + this._onTransitTimeEntryActivated.bind(this)); + /* trigger an update of the query time as soon as focus leave the time + * entry, to allow the user to enter a time before selecting start + * and destination without having to press enter */ + this._transitTimeEntry.connect('focus-out-event', + this._onTransitTimeEntryActivated.bind(this)); + this._transitDateButton.popover.get_child().connect('day-selected-double-click', + this._onTransitDateCalenderDaySelected.bind(this)); + this._transitDateButton.connect('toggled', + this._onTransitDateButtonToogled.bind(this)); + this._transitParametersMenuButton.connect('toggled', + this._onTransitParametersToggled.bind(this)) + } + + _onTransitTimeOptionsComboboxChanged() { + if (this._transitTimeOptionsComboBox.active_id === 'leaveNow') { + this._transitTimeEntry.visible = false; + this._transitDateButton.visible = false; + this._query.arriveBy = false; + this._query.date = null; + this._query.time = null; + this._timeSelected = null; + this._dateSelected = null; + } else { + this._transitTimeEntry.visible = true; + this._transitDateButton.visible = true; + + if (!this._timeSelected) + this._transitTimeEntry.text = _timeFormat.format(new Date()); + + if (!this._dateSelected) + this._updateTransitDateButton(GLib.DateTime.new_now_local()); + + if (this._transitTimeOptionsComboBox.active_id === 'arriveBy') { + this._query.arriveBy = true; + } else { + this._query.arriveBy = false; + } + } + } + + _onTransitTimeEntryActivated() { + let timeString = this._transitTimeEntry.text; + + if (timeString && timeString.length > 0) { + timeString = Time.parseTimeString(timeString); + + /* only trigger an update if a different time was entered */ + if (timeString && timeString !== this._timeSelected) { + this._query.time = timeString; + /* remember that the user has selected a time */ + this._timeSelected = timeString; + } + } + } + + _updateTransitDateButton(date) { + this._transitDateButton.label = + /* + * Translators: this is a format string giving the equivalent to + * "may 29" according to the current locale's convensions. + */ + date.format(C_("month-day-date", "%b %e")); + } + + _onTransitDateCalenderDaySelected() { + let calendar = this._transitDateButton.popover.get_child(); + let year = calendar.year; + let month = calendar.month + 1; + let day = calendar.day; + let date = '%04d-%02d-%02d'.format(year, month, day); + + /* only trigger an update if a different date was selected */ + if (date !== this._dateSelected) { + this._query.date = date; + this._transitDateButton.active = false; + this._updateTransitDateButton(GLib.DateTime.new_local(year, month, day, + 0, 0, 0)); + /* remember that the user has already selected a date */ + this._dateSelected = date; + } + } + + _onTransitDateButtonToogled() { + if (!this._transitDateButton.active) + this._onTransitDateCalenderDaySelected(); + } + + _createTransitOptions() { + let options = new TransitOptions.TransitOptions(); + let busSelected = this._busCheckButton.active; + let tramSelected = this._tramCheckButton.active; + let trainSelected = this._trainCheckButton.active; + let subwaySelected = this._subwayCheckButton.active; + let ferrySelected = this._ferryCheckButton.active; + let airplaneSelected = this._airplaneCheckButton.active; + + if (busSelected && tramSelected && trainSelected && subwaySelected && + ferrySelected && airplaneSelected) { + options.showAllTransitTypes = true; + } else { + if (busSelected) + options.addTransitType(TransitPlan.RouteType.BUS); + if (tramSelected) + options.addTransitType(TransitPlan.RouteType.TRAM); + if (trainSelected) + options.addTransitType(TransitPlan.RouteType.TRAIN); + if (subwaySelected) + options.addTransitType(TransitPlan.RouteType.SUBWAY); + if (ferrySelected) + options.addTransitType(TransitPlan.RouteType.FERRY); + if (airplaneSelected) + options.addTransitType(HVT.AIR_SERVICE); + } + + return options; + } + + _onTransitParametersToggled() { + if (!this._transitParametersMenuButton.active) { + let options = this._createTransitOptions(); + + if (!TransitOptions.equals(options, this._lastOptions)) { + this._query.transitOptions = options; + this._lastOptions = options; + } + } + } + }); diff --git a/src/transitPlan.js b/src/transitPlan.js new file mode 100644 index 00000000..c6d96ddb --- /dev/null +++ b/src/transitPlan.js @@ -0,0 +1,832 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const HVT = imports.hvt; +const Time = imports.time; +const Utils = imports.utils; + +/* + * These constants corresponds to the routeType attribute of transit legs + * in original GTFS specification. + */ +var RouteType = { + NON_TRANSIT: -1, + TRAM: 0, + SUBWAY: 1, + TRAIN: 2, + BUS: 3, + FERRY: 4, + /* Cable car refers to street-level cabel cars, where the propulsive + * cable runs in a slot between the tracks beneath the car + * https://en.wikipedia.org/wiki/Cable_car_%28railway%29 + * For example the cable cars in San Francisco + * https://en.wikipedia.org/wiki/San_Francisco_cable_car_system + */ + CABLE_CAR: 5, + /* Gondola refers to a suspended cable car, typically aerial cable cars + * where the car is suspended from the cable + * https://en.wikipedia.org/wiki/Gondola_lift + * For example the "Emirates Air Line" in London + * https://en.wikipedia.org/wiki/Emirates_Air_Line_%28cable_car%29 + */ + GONDOLA: 6, + /* Funicular refers to a railway system designed for steep inclines, + * https://en.wikipedia.org/wiki/Funicular + */ + FUNICULAR: 7, + /* Electric buses that draw power from overhead wires using poles. */ + TROLLEYBUS: 11, + /* Railway in which the track consists of a single rail or a beam. */ + MONORAIL: 12 +}; + +/* extra time to add to the first itinerary leg when it's a walking leg */ +const WALK_SLACK = 120; + +var DEFAULT_ROUTE_COLOR = '4c4c4c'; +var DEFAULT_ROUTE_TEXT_COLOR = 'ffffff'; + +var Plan = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'no-more-results': {}, + 'itinerary-selected': { param_types: [GObject.TYPE_OBJECT] }, + 'itinerary-deselected': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Plan extends GObject.Object { + + _init(params) { + super._init(params); + this.reset(); + this._attribution = null; + this._attributionUrl = null; + } + + get itineraries() { + return this._itineraries; + } + + get selectedItinerary() { + return this._selectedItinerary; + } + + get attribution() { + return this._attribution; + } + + set attribution(attribution) { + this._attribution = attribution; + } + + get attributionUrl() { + return this._attributionUrl; + } + + set attributionUrl(attributionUrl) { + this._attributionUrl = attributionUrl; + } + + update(itineraries) { + this._itineraries = itineraries; + this.bbox = this._createBBox(); + this.emit('update'); + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + updateWithNewItineraries(itineraries, arriveBy, extendPrevious) { + /* sort itineraries, by departure time ascending if querying + * by leaving time, by arrival time descending when querying + * by arriving time + */ + if (arriveBy) + itineraries.sort(sortItinerariesByArrivalDesc); + else + itineraries.sort(sortItinerariesByDepartureAsc); + + let newItineraries = + extendPrevious ? this.itineraries.concat(itineraries) : itineraries; + + this.update(newItineraries); + } + + + + reset() { + this._itineraries = []; + this.bbox = null; + this._selectedItinerary = null; + this._attribution = null; + this._attributionUrl = null; + this.emit('reset'); + } + + noMoreResults() { + this.emit('no-more-results'); + } + + selectItinerary(itinerary) { + this._selectedItinerary = itinerary; + this.emit('itinerary-selected', itinerary); + } + + deselectItinerary() { + this._selectedItinerary = null; + this.emit('itinerary-deselected'); + } + + error(msg) { + this.emit('error', msg); + } + + noRouteFound() { + this.emit('error', _("No route found.")); + } + + noTimetable() { + this.emit('error', _("No timetable data found for this route.")); + } + + requestFailed() { + this.emit('error', _("Route request failed.")); + } + + noProvider() { + this.emit('error', _("No provider found for this route.")); + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + this._itineraries.forEach(function(itinerary) { + bbox.compose(itinerary.bbox); + }); + return bbox; + } +}); + +var Itinerary = GObject.registerClass( +class Itinerary extends GObject.Object { + + _init(params) { + this._duration = params.duration; + delete params.duration; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._transfers = params.transfers; + delete params.transfers; + + this._legs = params.legs; + delete params.legs; + + super._init(params); + + this.bbox = this._createBBox(); + } + + get duration() { + return this._duration; + } + + get departure() { + return this._departure; + } + + get arrival() { + return this._arrival; + } + + get transfers() { + return this._transfers; + } + + get legs() { + return this._legs; + } + + /* adjust timings of the legs of the itinerary, using the real duration of + * walking legs, also sets the timezone offsets according to adjacent + * transit legs + */ + _adjustLegTimings() { + if (this.legs.length === 1 && !this.legs[0].transit) { + /* if there is only one leg, and it's a walking one, just need to + * adjust the arrival time + */ + let leg = this.legs[0]; + leg.arrival = leg.departure + leg.duration * 1000; + + return; + } + + for (let i = 0; i < this.legs.length; i++) { + let leg = this.legs[i]; + + if (!leg.transit) { + if (i === 0) { + /* for the first leg subtract the walking time plus a + * safety slack from the departure time of the following + * leg + */ + let nextLeg = this.legs[i + 1]; + leg.departure = + nextLeg.departure - leg.duration * 1000 - WALK_SLACK; + leg.arrival = leg.departure + leg.duration * 1000; + // use the timezone offset from the first transit leg + leg.agencyTimezoneOffset = nextLeg.agencyTimezoneOffset; + } else { + /* for walking legs in the middle or at the end, just add + * the actual walking walk duration to the arrival time of + * the previous leg + */ + let previousLeg = this.legs[i - 1]; + leg.departure = previousLeg.arrival; + leg.arrival = previousLeg.arrival + leg.duration * 1000; + // use the timezone offset of the previous (transit) leg + leg.agencyTimezoneOffset = previousLeg.agencyTimezoneOffset; + } + } + } + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + + this._legs.forEach(function(leg) { + bbox.compose(leg.bbox); + }); + + return bbox; + } + + prettyPrintTimeInterval() { + /* Translators: this is a format string for showing a departure and + * arrival time, like: + * "12:00 – 13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s \u2013 %s").format(this._getDepartureTime(), + this._getArrivalTime()); + } + + _getDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg */ + return Time.formatTimeWithTZOffset(this.departure, + this.legs[0].agencyTimezoneOffset); + } + + _getArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg */ + let lastLeg = this.legs[this.legs.length - 1]; + return Time.formatTimeWithTZOffset(this.arrival, + lastLeg.agencyTimezoneOffset); + } + + prettyPrintDuration() { + let mins = this.duration / 60; + + if (mins < 60) { + let minStr = Utils.formatLocaleInteger(mins); + + /* translators: this is an indication for a trip duration of + * less than an hour, with only the minutes part, using plural forms + * as appropriate + */ + return ngettext("%s minute", "%s minutes", mins).format(minStr); + } else { + let hours = Math.floor(mins / 60); + let hourStr = Utils.formatLocaleInteger(hours); + + mins = mins % 60; + + if (mins === 0) { + /* translators: this is an indication for a trip duration, + * where the duration is an exact number of hours (i.e. no + * minutes part), using plural forms as appropriate + */ + return ngettext("%s hour", "%s hours", hours).format(hourStr); + } else { + let minStr = Utils.formatLocaleIntegerMinimumTwoDigits(mins); + + /* translators: this is an indication for a trip duration + * where the duration contains an hour and minute part, it's + * pluralized on the hours part + */ + return ngettext("%s:%s hour", "%s:%s hours", hours).format(hourStr, minStr); + } + } + } + + adjustTimings() { + this._adjustLegTimings(); + this._departure = this._legs[0].departure; + this._arrival = this._legs[this._legs.length - 1].arrival; + this._duration = (this._arrival - this._departure) / 1000; + } + + _getTransitDepartureLeg() { + for (let i = 0; i < this._legs.length; i++) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + _getTransitArrivalLeg() { + for (let i = this._legs.length - 1; i >= 0; i--) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + /* gets the departure time of the first transit leg */ + get transitDepartureTime() { + return this._getTransitDepartureLeg().departure; + } + + /* gets the timezone offset of the first transit leg */ + get transitDepartureTimezoneOffset() { + return this._getTransitDepartureLeg().timezoneOffset; + } + + /* gets the arrival time of the final transit leg */ + get transitArrivalTime() { + return this._getTransitArrivalLeg().arrival; + } + + /* gets the timezone offset of the final transit leg */ + get transitArrivalTimezoneOffset() { + return this._getTransitArrivalLeg().timezoneOffset; + } + + get isWalkingOnly() { + return this.legs.length === 1 && !this.legs[0].isTransit; + } +}); + +var Leg = class Leg { + + constructor(params) { + this._route = params.route; + delete params.route; + + this._routeType = params.routeType; + delete params.routeType; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._polyline = params.polyline; + delete params.polyline; + + this._fromCoordinate = params.fromCoordinate; + delete params.fromCoordinate; + + this._toCoordinate = params.toCoordinate; + delete params.toCoordinate; + + this._from = params.from; + delete params.from; + + this._to = params.to; + delete params.to; + + this._intermediateStops = params.intermediateStops; + delete params.intermediateStops; + + this._headsign = params.headsign; + delete params.headsign; + + this._isTransit = params.isTransit; + delete params.isTransit; + + this._walkingInstructions = params.walkingInstructions; + delete params.walkingInstructions; + + this._distance = params.distance; + delete params.distance; + + this._duration = params.duration; + delete params.duration; + + this._agencyName = params.agencyName; + delete params.agencyName; + + this._agencyUrl = params.agencyUrl; + delete params.agencyUrl; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._color = params.color; + delete params.color; + + this._textColor = params.textColor; + delete params.textColor; + + this._tripShortName = params.tripShortName; + delete params.tripShortName; + + this.bbox = this._createBBox(); + + this._compactRoute = null; + } + + get route() { + return this._route; + } + + set route(route) { + this._route = route; + } + + // try to get a shortened route name, suitable for overview rendering + get compactRoute() { + if (this._compactRoute) + return this._compactRoute; + + if (this._route.startsWith(this._agencyName)) { + /* if the agency name is a prefix of the route name, display the + * agency name in the overview, this way we get a nice "transition" + * into the expanded route showing the full route name + */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && + (this._agencyName.length < this._tripShortName.length)) { + /* if the agency name is shorter than the trip short name, + * which can sometimes be a more "internal" number, like a + * "train number", which is less known by the general public, + * prefer the agency name */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && this._tripShortName.length <= 6) { + /* if the above conditions are unmet, use the trip short name + * as a fallback if it was shorter than the original route name */ + this._compactRoute = this._tripShortName; + } else if (this._color) { + /* as a fallback when the route has a defined color, + * use an empty compact label to get a colored badge */ + this._compactRoute = ''; + } else { + /* if none of the above is true, use the original route name, + * and rely on label ellipsization */ + this._compactRoute = this._route; + } + + return this._compactRoute; + } + + get routeType() { + return this._routeType; + } + + set routeType(routeType) { + this._routeType = routeType; + } + + get departure() { + return this._departure; + } + + set departure(departure) { + this._departure = departure; + } + + get arrival() { + return this._arrival; + } + + get timezoneOffset() { + return this._agencyTimezoneOffset; + } + + set arrival(arrival) { + this._arrival = arrival; + } + + get polyline() { + return this._polyline; + } + + set polyline(polyline) { + this._polyline = polyline; + } + + get fromCoordinate() { + return this._fromCoordinate; + } + + get toCoordinate() { + return this._toCoordinate; + } + + get from() { + return this._from; + } + + get to() { + return this._to; + } + + get intermediateStops() { + return this._intermediateStops; + } + + set intermediateStops(intermediateStops) { + this._intermediateStops = intermediateStops; + } + + get headsign() { + return this._headsign; + } + + get transit() { + return this._isTransit; + } + + get distance() { + return this._distance; + } + + set distance(distance) { + this._distance = distance; + } + + get duration() { + return this._duration; + } + + get agencyName() { + return this._agencyName; + } + + get agencyUrl() { + return this._agencyUrl; + } + + get agencyTimezoneOffset() { + return this._agencyTimezoneOffset; + } + + set agencyTimezoneOffset(tzOffset) { + this._agencyTimezoneOffset = tzOffset; + } + + get color() { + return this._color || DEFAULT_ROUTE_COLOR; + } + + set color(color) { + this._color = color; + } + + get textColor() { + return this._textColor || DEFAULT_ROUTE_TEXT_COLOR; + } + + set textColor(textColor) { + this._textColor = textColor; + } + + get tripShortName() { + return this._tripShortName; + } + + _createBBox() { + let bbox = new Champlain.BoundingBox(); + + this.polyline.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }); + + return bbox; + } + + get iconName() { + if (this._isTransit) { + let type = this._routeType; + switch (type) { + /* special case HVT codes */ + case HVT.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + default: + let hvtSupertype = HVT.supertypeOf(type); + + if (hvtSupertype !== -1) + type = hvtSupertype; + + switch (type) { + case RouteType.TRAM: + case HVT.TRAM_SERVICE: + return 'route-transit-tram-symbolic'; + + case RouteType.SUBWAY: + case HVT.METRO_SERVICE: + case HVT.URBAN_RAILWAY_SERVICE: + case HVT.UNDERGROUND_SERVICE: + return 'route-transit-subway-symbolic'; + + case RouteType.TRAIN: + case HVT.RAILWAY_SERVICE: + case HVT.SUBURBAN_RAILWAY_SERVICE: + return 'route-transit-train-symbolic'; + + case RouteType.BUS: + case HVT.BUS_SERVICE: + case HVT.COACH_SERVICE: + case HVT.TROLLEYBUS_SERVICE: + /* TODO: handle a special case icon for trolleybus */ + return 'route-transit-bus-symbolic'; + + case RouteType.FERRY: + case HVT.WATER_TRANSPORT_SERVICE: + case HVT.FERRY_SERVICE: + return 'route-transit-ferry-symbolic'; + + case RouteType.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + + case RouteType.GONDOLA: + case HVT.TELECABIN_SERVICE: + return 'route-transit-gondolalift-symbolic'; + + case RouteType.FUNICULAR: + case HVT.FUNICULAR_SERVICE: + return 'route-transit-funicular-symbolic'; + + case HVT.TAXI_SERVICE: + /* TODO: should we have a dedicated taxi icon? */ + return 'route-car-symbolic'; + + case HVT.AIR_SERVICE: + return 'route-transit-airplane-symbolic'; + + default: + /* use a fallback question mark icon in case of some future, + * for now unknown mode appears */ + return 'dialog-question-symbolic'; + } + } + } else { + return 'route-pedestrian-symbolic'; + } + } + + get walkingInstructions() { + return this._walkingInstructions; + } + + set walkingInstructions(walkingInstructions) { + this._walkingInstructions = walkingInstructions; + } + + /* Pretty print timing for a transit leg, set params.isStart: true when + * printing for the starting leg of an itinerary. + * For starting walking legs, only the departure time will be printed, + * otherwise the departure and arrival time of the leg (i.e. transit ride + * or an in-between walking section) will be printed. + */ + prettyPrintTime(params) { + if (!this.transit && params.isStart) { + return this.prettyPrintDepartureTime(); + } else { + /* Translators: this is a format string for showing a departure and + * arrival time in a more compact manner to show in the instruction + * list for an itinerary, like: + * "12:00–13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s\u2013%s").format(this.prettyPrintDepartureTime(), + this.prettyPrintArrivalTime()); + } + } + + prettyPrintDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg + */ + return Time.formatTimeWithTZOffset(this.departure, + this.agencyTimezoneOffset); + } + + prettyPrintArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg + */ + return Time.formatTimeWithTZOffset(this.arrival, + this.agencyTimezoneOffset); + } +}; + +var Stop = class Stop { + + constructor(params) { + this._name = params.name; + delete params.name; + + this._arrival = params.arrival; + delete params.arrival; + + this._departure = params.departure; + delete params.departure; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._coordinate = params.coordinate; + delete params.coordinate; + } + + get name() { + return this._name; + } + + get coordinate() { + return this._coordinate; + } + + prettyPrint(params) { + if (params.isFinal) { + /* take the stop arrival time and offset using the timezone + * offset of the last leg + */ + return Time.formatTimeWithTZOffset(this._arrival, + this._agencyTimezoneOffset); + } else { + /* take the stop departure time and offset using the timezone + * offset of the first leg + */ + return Time.formatTimeWithTZOffset(this._departure, + this._agencyTimezoneOffset); + } + } +}; + +function sortItinerariesByDepartureAsc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * starting at the earliest possible departure time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.departure > second.departure; +} + +function sortItinerariesByArrivalDesc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * ending at the latest possible arrival time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.arrival < second.arrival; +} diff --git a/src/transitPrintLayout.js b/src/transitPrintLayout.js new file mode 100644 index 00000000..323ed1e7 --- /dev/null +++ b/src/transitPrintLayout.js @@ -0,0 +1,331 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Pango = imports.gi.Pango; + +const Color = imports.color; +const Gfx = imports.gfx; +const MapSource = imports.mapSource; +const PrintLayout = imports.printLayout; +const Transit = imports.transit; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; + +// stroke color for walking paths +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 0, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +// All following constants are ratios of surface size to page size +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; +const _Instruction = { + SCALE_X: 0.9, + SCALE_Y: 0.1, + SCALE_MARGIN: 0.01 +}; + +// luminance threashhold for drawing outline around route label badges +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitPrintLayout = GObject.registerClass( +class TransitPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + params.totalSurfaces = this._getNumberOfSurfaces(); + + super._init(params); + } + + _getNumberOfSurfaces() { + // always one fixed surface for the title label + let numSurfaces = 1; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + numSurfaces++; + // add a surface when a leg of the itinerary should have a map view + if (this._legHasMiniMap(i)) + numSurfaces++; + } + + // always include the arrival row + numSurfaces++; + + return numSurfaces; + } + + _drawMapView(width, height, zoomLevel, index) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + let leg = this._itinerary.legs[index]; + let nextLeg = this._itinerary.legs[index + 1]; + let previousLeg = index === 0 ? null : this._itinerary.legs[index - 1]; + + view.set_map_source(mapSource); + /* we want to add the path layer before the marker layer, so that + * boarding marker are drawn about the walk dash lines + */ + this._addRouteLayer(view, index); + view.add_layer(markerLayer); + + markerLayer.add_marker(this._createStartMarker(leg, previousLeg)); + if (nextLeg) + markerLayer.add_marker(this._createBoardMarker(nextLeg)); + else + markerLayer.add_marker(this._createArrivalMarker(leg)); + + /* in some cases, we seem to get get zero distance walking instructions + * within station complexes, don't try to show a bounding box for low + * distances, instead center on the spot + */ + if (leg.distance < 10) + view.center_on(leg.fromCoordinate[0], leg.fromCoordinate[1]); + else + view.ensure_visible(leg.bbox, false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createStartMarker(leg, previousLeg) { + return new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg }); + } + + _createBoardMarker(leg) { + return new TransitBoardMarker.TransitBoardMarker({ leg: leg }); + } + + _createArrivalMarker(leg) { + return new TransitArrivalMarker.TransitArrivalMarker({ leg: leg }); + } + + _addRouteLayer(view, index) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + let leg = this._itinerary.legs[index]; + + routeLayer.set_dash([5, 5]); + view.add_layer(routeLayer); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way + */ + if (index > 0 && !leg.transit) { + let previousLeg = this._itinerary.legs[index - 1]; + let lastPoint = + previousLeg.polyline[previousLeg.polyline.length - 1]; + + routeLayer.add_node(lastPoint); + } + + leg.polyline.forEach((node) => routeLayer.add_node(node)); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one + */ + if (index < this._itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = this._itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + } + + _drawInstruction(width, height, leg, start) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let timeWidth = !leg.transit && start ? height : height * 2; + let fromText = Transit.getFromLabel(leg, start); + let routeWidth = 0; + + this._drawIcon(cr, leg.iconName, width, height); + this._drawText(cr, fromText, this._rtl ? timeWidth : height, 0, + width - height - timeWidth, height / 2, Pango.Alignment.LEFT); + + if (leg.transit) { + let color = leg.color; + let textColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD; + let routeText = + this._createTextLayout(cr, leg.route, width - height - timeWidth, + height / 2, + this._rtl ? Pango.Alignment.RIGHT : + Pango.Alignment.LEFT); + let [pWidth, pHeight] = routeText.get_pixel_size(); + let routePadding = 3; + let routeHeight = pHeight + routePadding * 2; + routeWidth = Math.max(pWidth, pHeight) + routePadding * 2; + let routeX = this._rtl ? width - height - routeWidth - 1 : height; + let routeY = height / 2 + ((height / 2) - routeHeight) / 2; + + + textColor = Color.getContrastingForegroundColor(color, textColor); + Gfx.drawColoredBagde(cr, color, hasOutline ? textColor : null, + routeX, routeY, routeWidth, routeHeight); + this._drawTextLayoutWithColor(cr, routeText, + routeX + routePadding + + (routeWidth - pWidth - + routePadding * 2) / 2, + routeY + routePadding, + routeWidth - routePadding * 2, + routeHeight - routePadding * 2, + textColor, Pango.Alignment.LEFT); + + // introduce some additional padding before the headsign label + routeWidth += routePadding; + } + + let headsign = Transit.getHeadsignLabel(leg); + + if (headsign) { + let headsignLayout = this._createTextLayout(cr, headsign, + width - height - timeWidth - routeWidth, + height / 2, + Pango.Alignment.LEFT); + let [pWidth, pHeight] = headsignLayout.get_pixel_size(); + this._drawTextLayoutWithColor(cr, headsignLayout, + this._rtl ? timeWidth : height + routeWidth, + height / 2 + (height / 2 - pHeight) / 2, + width - height - timeWidth - routeWidth, + height / 2, '888888', + Pango.Alignment.LEFT); + } + this._drawTextVerticallyCentered(cr, leg.prettyPrintTime({ isStart: start }), + timeWidth, height, + this._rtl ? 0 : width - timeWidth - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _drawArrival(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._drawIcon(cr, 'maps-point-end-symbolic', width, height); + // draw the arrival text + this._drawTextVerticallyCentered(cr, Transit.getArrivalLabel(lastLeg), + width - height * 3, + height, this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + // draw arrival time + this._drawTextVerticallyCentered(cr, lastLeg.prettyPrintArrivalTime(), + height, height, + this._rtl ? 0 : width - height - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _legHasMiniMap(index) { + let leg = this._itinerary.legs[index]; + return !leg.transit; + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let dy = headerHeight + headerMargin; + + this._createNewPage(); + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + let leg = this._itinerary.legs[i]; + let hasMap = this._legHasMiniMap(i); + let instructionDy = instructionHeight + instructionMargin; + let mapDy = hasMap ? mapViewHeight + mapViewMargin : 0; + + dy = instructionDy + mapDy; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, leg, + i === 0); + this._cursorY += instructionDy; + + if (hasMap) { + let nextLeg = i < this._itinerary.legs.length - 1 ? + this._itinerary.legs[i + 1] : null; + this._drawMapView(mapViewWidth, mapViewHeight, mapViewZoomLevel, i); + this._cursorY += mapDy; + } + } + + this._drawArrival(instructionWidth, instructionHeight); + } +}); diff --git a/src/transitRouteLabel.js b/src/transitRouteLabel.js new file mode 100644 index 00000000..8e1f0388 --- /dev/null +++ b/src/transitRouteLabel.js @@ -0,0 +1,124 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Gfx = imports.gfx; +const Utils = imports.utils; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; +/* the threashhold when using a dark theme, when the color is darker draw an + * outline around the label + */ +const DARK_OUTLINE_LUMINANCE_THREASHHOLD = 0.1; + +// fallback high contrast colors +const HIGH_CONTRAST_COLOR = '000000'; +const HIGH_CONTRAST_TEXT_COLOR = 'ffffff'; + +var TransitRouteLabel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-route-label.ui', +}, class TransitRouteLabel extends Gtk.Label { + + _init(params) { + let leg = params.leg; + let compact = params.compact; + + delete params.leg; + delete params.compact; + super._init(params); + + this._setLabel(leg, compact); + this.connect('draw', this._onDraw.bind(this)); + } + + _setLabel(leg, compact) { + let color = leg.color; + let textColor = leg.textColor; + let label = leg.route; + let usingDarkTheme = Utils.isUsingDarkThemeVariant(); + let usingHighContrastTheme = Utils.isUsingHighContrastTheme(); + + textColor = Color.getContrastingForegroundColor(color, textColor); + + /* if using the high contrast theme and a label is set, fallback to + * hight-contrasting colors, if no label, assume the route color is + * more relevant and keep it also for high contrast + */ + if (usingHighContrastTheme && ((compact && leg.compactRoute) || + (!compact && label))) { + color = HIGH_CONTRAST_COLOR; + textColor = HIGH_CONTRAST_TEXT_COLOR; + } + + this._color = color; + this._textColor = textColor; + + if ((!usingDarkTheme && + Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD) || + (usingDarkTheme && + Color.relativeLuminance(color) < DARK_OUTLINE_LUMINANCE_THREASHHOLD)) { + this._hasOutline = true; + } + + /* for compact (overview) mode, try to shorten the label if the route + * name was more than 6 characters + */ + if (compact && label.length > 6) + label = leg.compactRoute; + + if (compact) { + /* restrict number of characters shown in the label when compact mode + * is requested + */ + this.max_width_chars = 6; + } else if (leg && !leg.headsign) { + // if there is no trip headsign to display, allow more space + this.max_width_chars = 25; + } + + this.label = '%s'.format( + textColor, + GLib.markup_escape_text(label, -1)); + } + + /* I didn't find any easy/obvious way to override widget background color + * and getting rounded corner just using CSS styles, so doing a custom + * Cairo drawing of a "roundrect" + */ + _onDraw(widget, cr) { + let width = widget.get_allocated_width(); + let height = widget.get_allocated_height(); + + Gfx.drawColoredBagde(cr, this._color, + this._hasOutline ? this._textColor : null, + 0, 0, width, height); + + return false; + } +}); diff --git a/src/transitRouter.js b/src/transitRouter.js new file mode 100644 index 00000000..abfb9dec --- /dev/null +++ b/src/transitRouter.js @@ -0,0 +1,277 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GLib = imports.gi.GLib; +const Champlain = imports.gi.Champlain; + +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * Class responsible for delegating requests to perform routing in transit + * mode. + * Holds the the shared plan instance (filled with journeys on successful + * requests). + */ +var TransitRouter = class TransitRoute { + constructor(params) { + this._plan = new TransitPlan.Plan(); + this._query = params.query; + this._providers = Service.getService().transitProviders; + this._providerCache = []; + this._language = Utils.getLanguage(); + this._probePlugins(); + } + + get enabled() { + return this._providers !== undefined; + } + + get plan() { + return this._plan; + } + + /** + * Called when the query has been updated to trigger the first set + * of results- + */ + fetchFirstResults() { + let pluginOverride = GLib.getenv('TRANSIT_PLUGIN'); + + if (pluginOverride) { + // override plugin was specified, try instanciating if not done yet + if (!this._currPluginInstance) { + let module = this._availablePlugins[pluginOverride]; + + if (module) { + this._currPluginInstance = + new imports.transitplugins[module][pluginOverride](); + } else { + throw new Error('Specified override plugin not found'); + } + } + } else { + let bestProvider = this._getBestProviderForQuery(); + + this._currPluginInstance = null; + + if (bestProvider) { + let provider = bestProvider[0]; + + this._currPluginInstance = bestProvider[1]; + this._plan.attribution = this._getAttributionForProvider(provider); + if (provider.attributionUrl) + this._plan.attributionUrl = provider.attributionUrl; + } + } + + if (this._currPluginInstance) { + this._currPluginInstance.fetchFirstResults(); + } else { + this._plan.reset(); + this._plan.noProvider(); + } + } + + /** + * Called to fetch additional (later or earlier) results depending on the + * query settings. + */ + fetchMoreResults() { + if (this._currPluginInstance) + this._currPluginInstance.fetchMoreResults(); + else + throw new Error('No previous provider'); + } + + _probePlugins() { + this._availablePlugins = []; + + for (let module in imports.transitplugins) { + for (let pluginClass in imports.transitplugins[module]) { + this._availablePlugins[pluginClass] = module; + } + } + } + + /** + * Get attribution for a provider. Returns a language-specific + * 'attribution:' tag if available, otherwise 'attribution' + */ + _getAttributionForProvider(provider) { + if (provider['attribution:' + this._language]) + return provider['attribution:' + this._language]; + else if (provider.attribution) + return provider.attribution; + else + return null; + } + + _getMatchingProvidersForPlace(place) { + let location = place.location; + let country = place.country_code ?? + Utils.getCountryCodeForCoordinates(location.latitude, + location.longitude); + + let matchingProviders = []; + + this._providers.forEach((p) => { + let provider = p.provider; + let areas = provider.areas; + + if (!areas) { + Utils.debug('No coverage info for provider ' + provider.name); + return; + } + + areas.forEach((area) => { + /* if the area has a specified priority, override the + * overall area priority, this allows sub-areas of of + * coverage for a provider to have higher or lowe priorities + * than other providers (e.g. one "native" to that area + */ + if (area.priority) + provider.priority = area.priority; + + let countries = area.countries; + + if (countries) { + if (countries.includes(country)) { + matchingProviders[provider.name] = provider; + return; + } + } + + let bbox = area.bbox; + + if (bbox) { + if (bbox.length !== 4) { + Utils.debug('malformed bounding box for provider ' + provider.name); + return; + } + + let [x1, y1, x2, y2] = bbox; + let cbbox = new Champlain.BoundingBox({ bottom: x1, + left: y1, + top: x2, + right: y2 }); + + if (cbbox.covers(location.latitude, + location.longitude)) { + matchingProviders[provider.name] = provider; + return; + } + } + }); + }); + + return matchingProviders; + } + + /** + * Get the most preferred provider for a given query. + * Return: an array with the provider definition and the plugin instance, + * or null if no matching provider was found. + */ + _getBestProviderForQuery() { + let startPlace = this._query.filledPoints[0].place; + let endPlace = this._query.filledPoints.last().place; + + let matchingProvidersForStart = + this._getMatchingProvidersForPlace(startPlace); + let matchingProvidersForEnd = + this._getMatchingProvidersForPlace(endPlace); + + let matchingProviders = []; + + // check all candidate providers matching on the start location + for (let name in matchingProvidersForStart) { + let providerAtStart = matchingProvidersForStart[name]; + let providerAtEnd = matchingProvidersForEnd[name]; + + /* if the provider also matches on the end location, consider it + * as a potential candidate + */ + if (providerAtEnd) { + let order = this._sortProviders(providerAtStart, providerAtEnd); + + /* add the provider at it lowest priority to favor higher + * priority providers in "fringe cases" + */ + if (order < 0) + matchingProviders.push(providerAtStart); + else + matchingProviders.push(providerAtEnd); + } + } + + matchingProviders.sort(this._sortProviders); + + for (let i = 0; i < matchingProviders.length; i++) { + let provider = matchingProviders[i]; + let plugin = provider.plugin; + + if (this._providerCache[provider.name]) + return [provider, this._providerCache[provider.name]]; + + let module = this._availablePlugins[plugin]; + + if (module) { + try { + let params = provider.params; + let instance = + params ? new imports.transitplugins[module][plugin](params) : + new imports.transitplugins[module][plugin](); + + this._providerCache[provider.name] = instance; + + return [provider, instance]; + } catch (e) { + Utils.debug('Failed to instantiate transit plugin: ' + + plugin + ": " + e); + } + } else { + Utils.debug('Transit provider plugin not available: ' + plugin); + } + } + + Utils.debug('No suitable transit provider found'); + return null; + } + + /** + * Sort function to sort providers in by preference. + * If both providers have a priority set, prefers the one with a lower + * value (higher prio), otherwise the one that has a priority set (if any), + * else no specific order. + */ + _sortProviders(p1, p2) { + if (p1.priority && p2.priority) + return p1.priority - p2.priority; + else if (p1.priority) + return -1; + else if (p2.priority) + return 1; + else + return 0; + } +}; diff --git a/src/transitStopRow.js b/src/transitStopRow.js new file mode 100644 index 00000000..f3cbe790 --- /dev/null +++ b/src/transitStopRow.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var TransitStopRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-stop-row.ui', + InternalChildren: [ 'nameLabel', + 'timeLabel' ] +}, class TransitStopRow extends Gtk.ListBoxRow { + + _init(params) { + this.stop = params.stop; + delete params.stop; + + this._final = params.final; + delete params.final; + + super._init(params); + + this._nameLabel.label = this.stop.name; + this._timeLabel.label = this.stop.prettyPrint({ isFinal: this._final }); + } +}); diff --git a/src/transitWalkMarker.js b/src/transitWalkMarker.js new file mode 100644 index 00000000..60f72f57 --- /dev/null +++ b/src/transitWalkMarker.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitWalkMarker = GObject.registerClass( +class TransitWalkMarker extends MapMarker.MapMarker { + + _init(params) { + /* if there is a preceding leg, put the marker at the end of that leg + * to avoid gaps, since we will "fill out" the walking leg path line + * since sometimes the walking route might not reach exactly to the + * transit stop's position + */ + let point; + if (params.previousLeg) + point = params.previousLeg.polyline[params.previousLeg.polyline.length - 1]; + else + point = params.leg.polyline[0]; + + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + delete params.previousLeg; + + let location = new Location.Location({ latitude: point.latitude, + longitude: point.longitude + }); + + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-start-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitplugins/README b/src/transitplugins/README new file mode 100644 index 00000000..890401cd --- /dev/null +++ b/src/transitplugins/README @@ -0,0 +1,67 @@ +This directory contains implementations of transit routing provider plugins. +Each plugin should contain an ES6 class implementing the plugin. + +Each implementation implements two methods: + +fetchFirstResults(): + +This is invoked when the singleton routing query has been updated and would +query itineraries from it's source, and on success populate the TransitPlan +singleton with an itinerary list and call plan.update(), or on error call +one of the pre-defined error methods on the plan, or trigger a custom error +with plan.error(). + +fetchMoreResults(): + +This is invoked when to fetch additional (later or earlier) results. +Would on success add additional itineraries and call plan.update(), or on +error call plan.noMoreResults(). + +Providers are configured via the downloaded service file using a JSON element +like: + +"transitProviders": [ + { + "provider": { + "name": "Description of provider 1", + "plugin": "OpenTripPlanner", + "attribution": "Provider 1", + "attributionUrl": "http://provider1.example.com", + "priority": 10, + "areas": [ + { + "priority": 10, + "countries": [ "UT" ] + } + ], + "params": { + "baseUrl": "http://otp.provider1.example.com/otp" + } + } + }, + { + "provider": { + "name": "Provider 2", + "plugin": "OpenTripPlanner", + "attribution": "Provider 2", + "attributionUrl": "https://provider2.example.com", + "areas": [ + { + "bbox": [48.28,0.81,49.73,4.11] + } + ], + "params": { + "baseUrl": "https://provider2.example.com/otp" + } + } + } + ] + + Each provider can have an optional priority, to allow more specific provider + (e.g. one serving a single city) within the area of a more general one. + Single sub-areas of a provider can also override the general provider priority. + This can be used to allow areas of provider to "shadow" neighboring providers + while keeping the the neighboring provider as the preferred one when used + exclusively for its region. + Custom parameters, if specified, will be passed as the "params" object the + constructor() of the plugin implementation. \ No newline at end of file diff --git a/src/transitplugins/goMetro.js b/src/transitplugins/goMetro.js new file mode 100644 index 00000000..e68cd1c2 --- /dev/null +++ b/src/transitplugins/goMetro.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the South African + * GoMetro API. + * https://proserver.gometro.co.za/api/v1/docs/#multimodal-routing + */ + +const BASE_URL = 'https://proserver.gometro.co.za/api'; +const API_VERSION = 'v1'; + +const NATIVE_TIMEZONE = 'Africa/Cape_Town'; + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +const Application = imports.application; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const OpenTripPlanner = imports.transitplugins.openTripPlanner; + +var GoMetro = class GoMetro extends OpenTripPlanner.OpenTripPlanner { + constructor() { + super({ baseUrl: BASE_URL }); + + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + } + + // the GoMetro API only supports start and destination points + fetchFirstResults() { + if (this._query.filledPoints.length > 2) { + Utils.debug('This plugin does not support via locations'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (this._query.arriveBy) { + this._reset(); + this._plan.error(_("This plugin doesn't support latest arrival")); + } else { + super.fetchFirstResults(); + } + } + + _getPlanUrlWithLocations() { + let fromLocation = this._query.filledPoints[0].place.location; + let toLocation = this._query.filledPoints.last().place.location; + + return '%s/%s/trips/%s,%s/%s,%s/%s/%s'.format(BASE_URL, + API_VERSION, + fromLocation.latitude, + fromLocation.longitude, + toLocation.latitude, + toLocation.longitude, + this._getDateAndTimeParams(), + this._getModesParam()); + } + + _getDateAndTimeParams() { + if (this._query.time || this._extendPrevious) { + let params = {}; + + this._addCommonParams(params); + let time = params.time; + let date = params.date; + + return '%s/%s%s'.format(date, this._query.arriveBy ? '-' : '', time); + } else { + let dateTime = GLib.DateTime.new_now(this._tz); + + return '%04d-%02d-%02d/%02d:%02d'.format(dateTime.get_year(), + dateTime.get_month(), + dateTime.get_day_of_month(), + dateTime.get_hour(), + dateTime.get_minute()); + } + } + + // GoMetro seems to (ab)use routeType ferry for communal taxi + _createLeg(leg, index, legs) { + let result = super._createLeg(leg, index, legs); + + if (result.routeType === TransitPlan.RouteType.FERRY) + result.routeType = HVT.TAXI_SERVICE; + + return result; + } + + _getModesParam() { + let params = ''; + let transitOptions = this._query.transitOptions; + + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAIN)) + params += 'RAIL,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.BUS)) + params += 'BUS,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.FERRY)) + params += 'FERRY,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAM)) + params += 'TRAM,'; + if (transitOptions.showAllTransitTypes) + params += 'GONDOLA,'; + + return params + 'WALK'; + } +} diff --git a/src/transitplugins/openTripPlanner.js b/src/transitplugins/openTripPlanner.js new file mode 100644 index 00000000..7326225f --- /dev/null +++ b/src/transitplugins/openTripPlanner.js @@ -0,0 +1,1254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const EPAF = imports.epaf; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const Location = imports.location; +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * This module implements the interface for communicating with an OpenTripPlanner + * server instance. + * The code is somewhat intricate since it supports instances of OpenTripPlanner + * running both with and without OSM data to complement the transit timetable + * data with turn-by-turn (walking) routing. + * + * There is two entry points for obtaining routes, one which is called by the + * routing delegator when the query is being modified (fetchFirstResults()), + * and the other being called when requesting additional results (later or + * earlier alternatives depending on search criteria) (fetchMoreResults()) + * These call into an entry point function "_fatchRoute()". + * "_fetchRoutes()" is called. + * In the case where there is no OSM data (onlyTransitData is true), it + * asynchronously calls "_fetchTransitStops()" to get closest transit stop for + * each of the query point, this function will involve OpenTripPlanner calls to + * find stops within a search circle around the coordinate and then calls out + * to GraphHopper to find the actual walking distance and selects the closest + * stop. + * In the callback for the results of _fetchTransitStops() the actual call to + * OpenTripPlanner is made. + * The callback for "_fetchRoutes()" will in turn reformat the resulting + * itineraries obtained from OpenTripPlanner into our internal format specified + * in the TransitPlan module and calls "_recalculateItineraries()" which will + * traverse these and do yet another recursive asyncrous pass over these results + * to refine the results with actual walking routes obtained from GraphHopper, + * since the results from our OpenTripPlanner instance with only transit data + * will result in walking legs which use "as the crow flies" routes for walking. + * It will also clean up the results by pruning out pointless transit legs, such + * as taking transit very short distances when almost reaching the target. + * + * API docs for OpenTripPlanner can be found at: http://dev.opentripplanner.org/apidoc/1.0.0/ + */ + +/* minimum distance when an explicit walk route will be requested to supplement + * the transit route + */ +const MIN_WALK_ROUTING_DISTANCE = 100; + +/* minimum distance of a transit leg, below which we would replace the leg with + * walking if the leg is the first or last + */ +const MIN_TRANSIT_LEG_DISTANCE = 300; + +/* maximum walking distance for a potential replacement of a beginning or ending + * transit leg */ +const MAX_WALK_OPTIMIZATION_DISTANCE = 1000; + +/* maximum distance difference for performing a replacement of a beginning or + * ending transit leg with a walking leg + */ +const MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE = 500; + +/* minimum acceptable time margin when recalculating walking legs in the middle + * of an itinerary + */ +const MIN_INTERMEDIATE_WALKING_SLACK = 60; + +/* maximum walking distance, filter out itineraries containing walking legs + * with longer walking after being refined by GraphHopper + */ +const MAX_WALKING_DISTANCE = 2000; + +// maximum radius to search for stops +const STOP_SEARCH_RADIUS = 2000; + +// maximum number of transit stops to consider as candidates for start/end points +const NUM_STOPS_TO_TRY = 5; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpenTripPlanner = class OpenTripPlanner { + + constructor(params) { + let onlyTransitDataEnv = GLib.getenv('OTP_ONLY_TRANSIT_DATA'); + let onlyTransitData = + onlyTransitDataEnv ? onlyTransitDataEnv === 'true' : + params?.onlyTransitData ?? false; + + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._baseUrl = GLib.getenv('OTP_BASE_URL') ?? params.baseUrl; + this._router = params?.router ?? 'default'; + this._routerUrl = params?.routerUrl; + this._onlyTransitData = onlyTransitData; + this._extendPrevious = false; + this._language = Utils.getLanguage(); + + if (!this._baseUrl && !this._routerUrl) + throw new Error('must specify either baseUrl or routerUrl as an argument'); + + if (this._baseUrl && this._routerUrl) + throw new Error('can not specify both baseUrl and routerUrl as arguments'); + } + + get plan() { + return this._plan; + } + + get enabled() { + return this._baseUrl !== null; + } + + fetchFirstResults() { + this._extendPrevious = false; + this._fetchRoute(); + } + + fetchMoreResults() { + this._extendPrevious = true; + this._fetchRoute(); + } + + _getRouterUrl() { + return this._routerUrl ? this._routerUrl : + this._baseUrl + '/routers/' + this._router; + } + + _getMode(routeType) { + switch (routeType) { + case TransitPlan.RouteType.TRAM: + return 'TRAM'; + case TransitPlan.RouteType.TRAIN: + return 'RAIL'; + case TransitPlan.RouteType.SUBWAY: + return 'SUBWAY'; + case TransitPlan.RouteType.BUS: + return 'BUS'; + case TransitPlan.RouteType.FERRY: + return 'FERRY'; + case HVT.AIR_SERVICE: + return 'AIRPLANE'; + default: + throw new Error('unhandled route type'); + } + } + + _getModes(options) { + let modes = options.transitTypes.map((transitType) => { + return this._getMode(transitType); + }); + + /* should always include walk when setting explicit modes, + * otherwise only routes ending close to a stop would work + */ + modes.push('WALK'); + + return modes.join(','); + } + + _selectBestStopRecursive(stops, index, stopIndex, callback) { + if (index < stops.length) { + let points = this._query.filledPoints; + let stop = stops[index]; + let stopPoint = + GraphHopperTransit.createQueryPointForCoord([stop.lat, stop.lon]); + + if (stops[0].dist < 100) { + /* if the stop is close enough to the intended point, just + * return the top most from the the original query */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } else if (stopIndex === 0) { + GraphHopperTransit.fetchWalkingRoute([points[0], stopPoint], + (route) => { + /* if we couldn't find an exact walking route, go with the + * "as the crow flies" distance */ + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else if (stopIndex === points.length - 1) { + GraphHopperTransit.fetchWalkingRoute([stopPoint, points.last()], + (route) => { + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else { + /* for intermediate stops just return the one geographically + * closest */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } + } else { + /* re-sort stops by distance and select the closest after refining + * distances */ + stops.sort(this._sortTransitStops); + Utils.debug('refined stops: '); + stops.forEach((stop) => Utils.debug(JSON.stringify(stop, '', 2))); + callback(stops[0]); + } + } + + /* stopIndex here is the index of stop (i.e. starting point, intermediate + * stop, final stop + */ + _selectBestStop(stops, stopIndex, callback) { + this._selectBestStopRecursive(stops, 0, stopIndex, callback); + } + + _sortTransitStops(s1, s2) { + return s1.dist > s2.dist; + } + + _fetchRoutesForStop(stop, callback) { + let query = new HTTP.Query(); + let uri = new Soup.URI(this._getRouterUrl() + '/index/stops/' + + stop.id + '/routes'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get routes for stop'); + this._reset(); + } else { + let routes = JSON.parse(message.response_body.data); + + Utils.debug('Routes for stop: ' + stop + ': ' + JSON.stringify(routes)); + callback(routes); + } + }); + } + + _routeMatchesSelectedModes(route) { + let desiredTransitTypes = this._query.transitOptions.transitTypes; + + for (let i = 0; i < desiredTransitTypes.length; i++) { + let type = desiredTransitTypes[i]; + + if (type === TransitPlan.RouteType.TRAM && route.mode === 'TRAM') + return true; + else if (type === TransitPlan.RouteType.SUBWAY && route.mode === 'SUBWAY') + return true; + else if (type === TransitPlan.RouteType.TRAIN && route.mode === 'RAIL') + return true; + else if (type === TransitPlan.RouteType.BUS && + (route.mode === 'BUS' || route.mode === 'TAXI')) + return true; + else if (type === TransitPlan.RouteType.FERRY && route.mode === 'FERRY') + return true; + } + + return false; + } + + _filterStopsRecursive(stops, index, filteredStops, callback) { + if (index < stops.length) { + let stop = stops[index]; + + this._fetchRoutesForStop(stop, (routes) => { + for (let i = 0; i < routes.length; i++) { + let route = routes[i]; + + if (this._routeMatchesSelectedModes(route)) { + filteredStops.push(stop); + break; + } + } + this._filterStopsRecursive(stops, index + 1, filteredStops, + callback); + }); + } else { + callback(filteredStops); + } + } + + _filterStops(stops, callback) { + this._filterStopsRecursive(stops, 0, [], callback); + } + + _fetchTransitStopsRecursive(index, result, callback) { + let points = this._query.filledPoints; + + if (index < points.length) { + let point = points[index]; + let params = { lat: point.place.location.latitude, + lon: point.place.location.longitude, + radius: STOP_SEARCH_RADIUS }; + let query = new HTTP.Query(params); + let uri = new Soup.URI(this._getRouterUrl() + + '/index/stops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get stop for search point ' + point); + this._reset(); + } else { + let stops = JSON.parse(message.response_body.data); + + if (stops.length === 0) { + Utils.debug('No suitable stop found from router'); + callback(null); + return; + } + + if (this._query.transitOptions.showAllTransitTypes) { + stops.sort(this._sortTransitStops); + stops = stops.splice(0, NUM_STOPS_TO_TRY); + + Utils.debug('stops: ' + JSON.stringify(stops, '', 2)); + this._selectBestStop(stops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, result, + callback); + }); + } else { + this._filterStops(stops, (filteredStops) => { + filteredStops.sort(this._sortTransitStops); + filteredStops = filteredStops.splice(0, NUM_STOPS_TO_TRY); + + if (filteredStops.length === 0) { + Utils.debug('No suitable stop found using selected transit modes'); + callback(null); + return; + } + + this._selectBestStop(filteredStops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, + result, callback); + }); + }); + } + } + }); + } else { + callback(result); + } + } + + _fetchTransitStops(callback) { + this._fetchTransitStopsRecursive(0, [], callback); + } + + // get a time suitably formatted for the OpenTripPlanner query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the OpenTripPlanner query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParamFromLocation(location) { + return location.latitude + ',' + location.longitude; + } + + _addCommonParams(params) { + params.numItineraries = 5; + params.showIntermediateStops = true; + params.locale = this._language; + + let time = this._query.time; + let date = this._query.date; + + if (this._extendPrevious) { + let itineraries = this.plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (time) { + params.time = time; + /* it seems OTP doesn't like just setting a time, so if the query + * doesn't specify a date, go with today's date + */ + if (!date) { + let dateTime = GLib.DateTime.new_now_local(); + + params.date = dateTime.format('%F'); + } + } + + if (date) + params.date = date; + } + + if (this._query.arriveBy) + params.arriveBy = true; + + let options = this._query.transitOptions; + if (options && !options.showAllTransitTypes) + params.mode = this._getModes(options); + } + + _createParamsWithLocations() { + let points = this._query.filledPoints; + let params = { + fromPlace: this._getPlaceParamFromLocation(points[0].place.location), + toPlace: this._getPlaceParamFromLocation(points[points.length - 1].place.location) }; + let intermediatePlaces = []; + + for (let i = 1; i < points.length - 1; i++) { + let location = points[i].place.location; + intermediatePlaces.push(this._getPlaceParamFromLocation(location)); + } + if (intermediatePlaces) + params.intermediatePlaces = intermediatePlaces; + + params.maxWalkDistance = 2500; + this._addCommonParams(params); + + return params; + } + + // create parameter map for the request, given query and options + _createParamsWithStops(stops) { + let params = { fromPlace: stops[0].id, + toPlace: stops.last().id }; + let intermediatePlaces = []; + + for (let i = 1; i < stops.length - 1; i++) { + intermediatePlaces.push(stops[i].id); + } + if (intermediatePlaces.length > 0) + params.intermediatePlaces = intermediatePlaces; + + /* set walking speed for transfers to a slightly lower value to + * compensate for running OTP with only transit data, giving straight- + * line walking paths + */ + params.walkSpeed = 1.0; + + this._addCommonParams(params); + + return params; + } + + _fetchPlan(url, callback) { + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get route plan from router ' + + this._router + ' ' + message.reason_phrase); + callback(null); + } else { + try { + let result = JSON.parse(message.response_body.data); + + callback(result); + } catch (e) { + Utils.debug('Error parsing result: ' + e); + callback(null); + } + } + }); + } + + _getPlanUrlFromParams(params) { + let query = new HTTP.Query(params); + + return this._getRouterUrl() + '/plan?' + query.toString(); + } + + _getPlanUrlWithStops(stops) { + return this._getPlanUrlFromParams(this._createParamsWithStops(stops)); + } + + _getPlanUrlWithLocations() { + return this._getPlanUrlFromParams(this._createParamsWithLocations()); + } + + _fetchRoutes(callback) { + if (this._onlyTransitData) { + this._fetchTransitStops((stops) => { + let points = this._query.filledPoints; + + if (!stops) { + callback(null); + return; + } + + /* if there's only a start and end stop (no intermediate stops) + * and those stops are identical, reject the routing, since this + * means there would be no point in transit, and OTP would give + * some bizarre option like boarding transit, go one stop and then + * transfer to go back the same route + */ + if (stops.length === 2 && stops[0].id === stops[1].id) { + callback(null); + return; + } + + this._fetchPlan(this._getPlanUrlWithStops(stops), callback); + }); + } else { + this._fetchPlan(this._getPlanUrlWithLocations(), callback); + } + } + + _reset() { + this._extendPrevious = false; + if (this._query.latest) + this._query.latest.place = null; + else + this.plan.reset(); + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionality as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._extendPrevious = false; + this.plan.noMoreResults(); + } else { + this.plan.noRouteFound(); + } + } + + _fetchRoute() { + let points = this._query.filledPoints; + + this._fetchRoutes((route) => { + if (route) { + let itineraries = []; + let plan = route.plan; + + Utils.debug('route: ' + JSON.stringify(route, null, 2)); + + if (plan && plan.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(plan.itineraries)); + } else if (route.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(route.itineraries)); + } + + if (itineraries.length === 0) { + /* don't reset query points, unlike for turn-based + * routing, since options and timing might influence + * results */ + this._noRouteFound(); + } else { + if (this._onlyTransitData) + this._recalculateItineraries(itineraries); + else + this._updateWithNewItineraries(itineraries); + } + } else { + this._noRouteFound(); + } + }); + } + + _isOnlyWalkingItinerary(itinerary) { + return itinerary.legs.length === 1 && !itinerary.legs[0].transit; + } + + _recalculateItineraries(itineraries) { + // filter out itineraries with only walking + let newItineraries = []; + + itineraries.forEach((itinerary) => { + if (!this._isOnlyWalkingItinerary(itinerary)) + newItineraries.push(itinerary); + }); + + /* TODO: should we always calculate a walking itinerary to put at the + * top if the total distance is below some threashhold? + */ + this._recalculateItinerariesRecursive(newItineraries, 0); + } + + _isItineraryRealistic(itinerary) { + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + + if (!leg.transit) { + /* if a walking leg exceeds the maximum desired walking + * distance, or for a leg "in-between" two transit legs, if + * there's insufficient switch time + */ + if (leg.distance > MAX_WALKING_DISTANCE) { + return false; + } else if (i >= 1 && i < itinerary.legs.length - 1) { + let previousLeg = itinerary.legs[i - 1]; + let nextLeg = itinerary.legs[i + 1]; + + let availableTime = + (nextLeg.departure - previousLeg.arrival) / 1000; + + if (availableTime < + leg.duration + MIN_INTERMEDIATE_WALKING_SLACK) + return false; + } + } + } + + return true; + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + _updateWithNewItineraries(itineraries) { + this.plan.updateWithNewItineraries(itineraries, this._query.arriveBy, + this._extendPrevious); + this._extendPrevious = false; + } + + _recalculateItinerariesRecursive(itineraries, index) { + if (index < itineraries.length) { + this._recalculateItinerary(itineraries[index], (itinerary) => { + itineraries[index] = itinerary; + this._recalculateItinerariesRecursive(itineraries, index + 1); + }); + } else { + /* filter out itineraries where there are intermediate walking legs + * that are too narrow time-wise, this is necessary since running + * OTP with only transit data can result in some over-optimistic + * walking itinerary legs, since it will use "line-of-sight" + * distances. + * also filter out itineraries where recalculation process ended + * up with just walking + */ + let filteredItineraries = []; + + itineraries.forEach((itinerary) => { + if (this._isItineraryRealistic(itinerary) && + !this._isOnlyWalkingItinerary(itinerary)) + filteredItineraries.push(itinerary); + }); + + if (filteredItineraries.length > 0) { + filteredItineraries.forEach((itinerary) => itinerary.adjustTimings()); + this._updateWithNewItineraries(filteredItineraries); + } else { + this._noRouteFound(); + } + } + } + + _recalculateItinerary(itinerary, callback) { + let from = this._query.filledPoints[0]; + let to = this._query.filledPoints.last(); + + if (itinerary.legs.length === 1 && !itinerary.legs[0].transit) { + /* special case, if there's just one leg of an itinerary, and that leg + * leg is a non-transit (walking), recalculate the route in its entire + * using walking + */ + GraphHopperTransit.fetchWalkingRoute(this._query.filledPoints, + (route) => { + let leg = GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + to.place.name, + route); + let newItinerary = + new TransitPlan.Itinerary({departure: itinerary.departure, + duration: route.time / 1000, + legs: [leg]}); + callback(newItinerary); + }); + } else if (itinerary.legs.length === 1 && itinerary.legs[0].transit) { + // special case if there is exactly one transit leg + let leg = itinerary.legs[0]; + let startLeg = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLoc = startLeg.place.location; + let endLoc = endLeg.place.location; + let toLoc = to.place.location; + let startWalkDistance = fromLoc.get_distance_from(startLoc) * 1000; + let endWalkDistance = endLoc.get_distance_from(toLoc) * 1000; + + if (startWalkDistance >= MIN_WALK_ROUTING_DISTANCE && + endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + /* add an extra walking leg to both the beginning and end of the + * itinerary + */ + GraphHopperTransit.fetchWalkingRoute([from, startLeg], + (firstRoute) => { + let firstLeg = + GraphHopperTransit.createWalkingLeg(from, startLeg, + from.place.name, + leg.from, firstRoute); + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, + leg.to, + to.place.name, + lastRoute); + itinerary.legs.unshift(firstLeg); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + }); + } else if (endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + // add an extra walking leg to the end of the itinerary + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, leg.to, + to.place.name, + lastRoute); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + } else { + /* if only there's only a walking leg to be added to the start + * let the recursive routine dealing with multi-leg itineraries + * handle it + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } else { + /* replace walk legs with GraphHopper-generated paths (hence the + * callback nature of this. Filter out unrealistic itineraries (having + * walking segments not possible in reasonable time, due to our running + * of OTP with only transit data). + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } + + _recalculateItineraryRecursive(itinerary, index, callback) { + if (index < itinerary.legs.length) { + let leg = itinerary.legs[index]; + if (index === 0) { + let from = this._query.filledPoints[0]; + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceToEndLeg = + fromLoc.get_distance_from(endLegLoc) * 1000; + let distanceToStartLeg = + fromLoc.get_distance_from(startLegLoc) * 1000; + let nextLeg = itinerary.legs[index + 1]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceToEndLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceToEndLeg - distanceToStartLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the first leg of the intinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * starting coordinate from the input query, + * also replace a transit leg at the start with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the next step in the itinerary due to + * similar reasons + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toName = leg.to; + + /* if the next leg is a walking one, "fold" it into the one + * we create here */ + if (nextLeg && !nextLeg.transit) { + to = GraphHopperTransit.createQueryPointForCoord(nextLeg.toCoordinate); + toName = nextLeg.to; + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + toName, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated + * by GH in case the OTP starting point as far enough from + * the original starting point + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + leg.from, + route); + itinerary.legs.unshift(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else if (index === itinerary.legs.length - 1) { + let to = this._query.filledPoints.last(); + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toLoc = to.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceFromEndLeg = + toLoc.get_distance_from(endLegLoc) * 1000; + let distanceFromStartLeg = + toLoc.get_distance_from(startLegLoc) * 1000; + let previousLeg = itinerary.legs[itinerary.legs.length - 2]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceFromStartLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceFromStartLeg - distanceFromEndLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the final leg of the itinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * ending coordinate from the input query + * also replace a transit leg at the end with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the previous step in the itinerary + * due to similar reasons + */ + let finalTransitLeg; + let insertIndex; + if (leg.transit && previousLeg && !previousLeg.transit) { + /* if we optimize away the final transit leg, and the + * previous leg is a walking one, "fold" both into a + * single walking leg */ + finalTransitLeg = previousLeg; + insertIndex = index -1; + itinerary.legs.pop(); + } else { + finalTransitLeg = leg; + insertIndex = index; + } + let from = + GraphHopperTransit.createQueryPointForCoord(finalTransitLeg.fromCoordinate); + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + finalTransitLeg.from, + to.place.name, route); + itinerary.legs[insertIndex] = newLeg; + this._recalculateItineraryRecursive(itinerary, + insertIndex + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated by GH in + * case the OTP end point as far enough from the original + * end point + */ + let from = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + leg.to, to.place.name, route); + itinerary.legs.push(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + /* if an intermediate leg is a walking one, and it's distance is + * above the threashhold distance, calculate an exact route + */ + if (!leg.transit && leg.distance >= MIN_WALK_ROUTING_DISTANCE) { + let from = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + + /* if the next leg is the final one of the itinerary, + * and it's shorter than the "optimize away" distance, + * create a walking leg all the way to the final destination + */ + let nextLeg = itinerary.legs[index + 1]; + if (index === itinerary.legs.length - 2 && + nextLeg.distance <= MIN_TRANSIT_LEG_DISTANCE) { + to = this._query.filledPoints.last(); + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, leg.from, + leg.to, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, + index + 1, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + callback(itinerary); + } + } + + _createItineraries(itineraries) { + return itineraries.map((itinerary) => this._createItinerary(itinerary)); + } + + _createItinerary(itinerary) { + let legs = this._createLegs(itinerary.legs); + return new TransitPlan.Itinerary({ duration: itinerary.duration, + transfers: itinerary.transfers, + departure: itinerary.startTime, + arrival: itinerary.endTime, + legs: legs}); + } + + _createLegs(legs) { + return legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + } + + /* check if a string is a valid hex RGB string */ + _isValidHexColor(string) { + if (string && string.length === 6) { + let regex = /^[A-Fa-f0-9]/; + + return string.match(regex); + } + + return false; + } + + _createLeg(leg, index, legs) { + let polyline = EPAF.decode(leg.legGeometry.points); + let color = leg.routeColor && this._isValidHexColor(leg.routeColor) ? + leg.routeColor : null; + let textColor = leg.routeTextColor && this._isValidHexColor(leg.routeTextColor) ? + leg.routeTextColor : null; + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !leg.transitLeg ? this._query.filledPoints[0].place.name : + leg.from.name; + let to = + last && !leg.transitLeg ? this._query.filledPoints.last().place.name : + leg.to.name; + + let result = new TransitPlan.Leg({ departure: leg.from.departure, + arrival: leg.to.arrival, + from: from, + to: to, + headsign: leg.headsign, + fromCoordinate: [leg.from.lat, + leg.from.lon], + toCoordinate: [leg.to.lat, + leg.to.lon], + route: leg.route, + routeType: leg.routeType, + polyline: polyline, + isTransit: leg.transitLeg, + distance: leg.distance, + duration: leg.duration, + agencyName: leg.agencyName, + agencyUrl: leg.agencyUrl, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + color: color, + textColor: textColor, + tripShortName: leg.tripShortName }); + + if (leg.transitLeg && leg.intermediateStops) + result.intermediateStops = this._createIntermediateStops(leg); + else if (!this._onlyTransitData) + result.walkingInstructions = this._createTurnpoints(leg, polyline); + + return result; + } + + _createIntermediateStops(leg) { + let stops = leg.intermediateStops; + let intermediateStops = + stops.map((stop) => this._createIntermediateStop(stop, leg)); + + /* instroduce an extra stop at the end (in additional to the + * intermediate stops we get from OTP + */ + intermediateStops.push(new TransitPlan.Stop({ name: leg.to.name, + arrival: leg.to.arrival, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [leg.to.lat, + leg.to.lon] })); + return intermediateStops; + } + + _createIntermediateStop(stop, leg) { + return new TransitPlan.Stop({ name: stop.name, + arrival: stop.arrival, + departure: stop.departure, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [stop.lat, stop.lon] }); + } + + /** + * Create a turnpoints list on the same format we use with GraphHopper + * from OpenTripPlanner walking steps + */ + _createTurnpoints(leg, polyline) { + if (leg.steps) { + let steps = leg.steps; + let startPoint = new Route.TurnPoint({ + coordinate: polyline[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let turnpoints = [startPoint]; + steps.forEach((step) => { + turnpoints.push(this._createTurnpoint(step)); + }); + + let endPoint = new Route.TurnPoint({ + coordinate: polyline.last(), + type: Route.TurnPoint.END, + distance: 0, + instruction:_("Arrive") + }); + + turnpoints.push(endPoint); + + return turnpoints; + } else { + return null; + } + } + + _createTurnpoint(step) { + let coordinate = new Champlain.Coordinate({ latitude: step.lat, + longitude: step.lon }); + let turnpoint = new Route.TurnPoint({ + coordinate: coordinate, + type: this._getTurnpointType(step), + distance: step.distance, + instruction: this._getTurnpointInstruction(step) + }); + + return turnpoint; + } + + _getTurnpointType(step) { + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + return Route.TurnPointType.CONTINUE; + case 'LEFT': + return Route.TurnPointType.LEFT; + case 'SLIGHTLY_LEFT': + return Route.TurnPointType.SLIGHT_LEFT; + case 'HARD_LEFT': + return Route.TurnPointType.SHARP_LEFT; + case 'RIGHT': + return Route.TurnPointType.RIGHT; + case 'SLIGHTLY_RIGHT': + return Route.TurnPointType.SLIGHT_RIGHT; + case 'HARD_RIGHT': + return Route.TurnPointType.SHARP_RIGHT; + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': + return Route.TurnPointType.ROUNDABOUT; + case 'ELEVATOR': + return Route.TurnPointType.ELEVATOR; + case 'UTURN_LEFT': + return Route.TurnPointType.UTURN_LEFT; + case 'UTURN_RIGHT': + return Route.TurnPointType.UTURN_RIGHT; + default: + return null; + } + } + + _getTurnpointInstruction(step) { + let street = !step.bogusName ? step.streetName : null; + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + if (street) + return _("Continue on %s").format(street); + else + return _("Continue"); + case 'LEFT': + if (street) + return _("Turn left on %s").format(street); + else + return _("Turn left"); + case 'SLIGHTLY_LEFT': + if (street) + return _("Turn slightly left on %s").format(street); + else + return _("Turn slightly left"); + case 'HARD_LEFT': + if (street) + return _("Turn sharp left on %s").format(street); + else + return _("Turn sharp left"); + case 'RIGHT': + if (street) + return _("Turn right on %s").format(street); + else + return _("Turn right"); + case 'SLIGHTLY_RIGHT': + if (street) + return _("Turn slightly right on %s").format(street); + else + return _("Turn slightly right"); + case 'HARD_RIGHT': + if (street) + return _("Turn sharp right on %s").format(street); + else + return _("Turn sharp right"); + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': { + let exit = step.exit; + + if (exit) + return _("In the roundabout, take exit %s").format(exit); + else if (street) + return _("In the roundabout, take exit to %s").format(street); + else + return _("Take the roundabout"); + } + case 'ELEVATOR': { + if (street) + return _("Take the elevator and get off at %s").format(street); + else + return _("Take the elevator"); + } + case 'UTURN_LEFT': + if (street) + return _("Make a left u-turn onto %s").format(street); + else + return _("Make a left u-turn"); + case 'UTURN_RIGHT': + if (street) + return _("Make a right u-turn onto %s").format(street); + else + return _("Make a right u-turn"); + default: + return ''; + } + } +}; diff --git a/src/transitplugins/opendataCH.js b/src/transitplugins/opendataCH.js new file mode 100644 index 00000000..62fb972f --- /dev/null +++ b/src/transitplugins/opendataCH.js @@ -0,0 +1,544 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swiss national + * opendata.ch transit journey planning API. + * + * API docs for opendata.ch journey planning can be found at: + * https://transport.opendata.ch/docs.html + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HVT = imports.hvt; +const HTTP = imports.http; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://transport.opendata.ch'; +const API_VERSION = 'v1'; + +const Transportations = { + TRAIN: 'train', + TRAM: 'tram', + SHIP: 'ship', + BUS: 'bus', + CABLEWAY: 'cableway' +}; + +/** + * These are not documented in the API documentation, so had to + * reverse-engineer by trial-and-error. + */ +const Category = { + // bus + B: 'B', + NFB: 'NFB', + NFO: 'NFO', + BUS: 'BUS', + + // tram + NFT: 'NFT', + TRAM: 'TRAM', + T: 'T', + + // metro + M: 'M', + + // urban rail + R: 'R', + S: 'S', + + // regional rail + RE: 'RE', + + // interregional rail + IR: 'IR', + + // intercity rail + IC: 'IC', + ICE: 'ICE', + + // night trains + N: 'N', + SN: 'SN', + + // funicular + FUN: 'FUN', + + // water transport + BAT: 'BAT' +}; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpendataCH = class OpendataCH { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaLocations = []; + + if (filledPoints.length > 7) { + Utils.debug('This plugin supports at most five via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else { + if (filledPoints.length > 2) + this._fetchNearbyLocations(filledPoints.slice(1, -1)); + else + this._fetchResults(); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + // if there's only a walking-only itinerary, don't try to fetch more + if (this._plan.itineraries.length === 1 && + this._plan.itineraries[0].legs.length === 1 && + !this._plan.itineraries[0].legs[0].transit) { + this._plan.noMoreResults(); + } else { + this._fetchResults(); + } + } + + _fetchNearbyLocations(points) { + this._fetchNearbyLocationsRecursive(points, 0); + } + + _fetchNearbyLocationsRecursive(points, index) { + if (index === points.length) { + this._fetchResults(); + } else { + let location = points[index].place.location; + let query = new HTTP.Query({ x: location.latitude, + y: location.longitude }); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/locations?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get location: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + + Utils.debug('locations: ' + JSON.stringify(result, null, 2)); + + if (result.stations && result.stations.length > 0) { + let station = this._getBestStation(result.stations); + + if (station) { + this._viaLocations.push(station); + this._fetchNearbyLocationsRecursive(points, index + 1); + } else { + Utils.debug('No suitable via location found'); + this._plan.noRouteFound(); + } + } else { + Utils.debug('No via location found'); + this._plan.noRouteFound(); + } + } + }); + } + } + + _getBestStation(stations) { + let name = null; + + for (let i = 0; i < stations.length; i++) { + if (stations[i].icon) + name = stations[i].name; + } + + return name; + } + + _fetchResults() { + let query = this._getQuery(); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/connections?' + + query.toString(true)); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + Utils.debug('uri: ' + uri.to_string(true)); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + + if (result.connections && result.connections.length > 0) { + let itineraries = this._createItineraries(result.connections); + + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } else { + this._plan.noRouteFound(); + } + } + }); + } + + _createItineraries(connections) { + return connections.map((connection) => this._createItinerary(connection)); + } + + _createItinerary(connection) { + let legs = this._createLegs(connection.sections); + let duration = + connection.to.arrivalTimestamp - connection.from.departureTimestamp; + let from = connection.from; + let to = connection.to; + let [startTime,] = this._parseTime(from.departure); + let [endTime,] = this._parseTime(to.arrival); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time string into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(timeString) { + let dateTime = GLib.DateTime.new_from_iso8601(timeString, null); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + _createLegs(sections) { + let result = sections.map((section, index, sections) => + this._createLeg(section, index, sections)); + + return result; + } + + _createLeg(section, index, sections) { + let isTransit = section.journey; + + let departure = section.departure; + let arrival = section.arrival; + let journey = section.journey; + + if (!departure) + throw new Error('Missing departure element'); + if (!arrival) + throw new Error('Missing arrival element'); + + let first = index === 0; + let last = index === sections.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !journey ? this._query.filledPoints[0].place.name : + departure.station.name; + let to = + last && !journey ? this._query.filledPoints.last().place.name : + arrival.station.nam; + let [departureTime, tzOffset] = this._parseTime(departure.departure); + let [arrivalTime,] = this._parseTime(arrival.arrival); + let route = journey ? journey.number : null; + let routeType = + journey ? this._getHVTCodeFromCategory(journey.category) : null; + let agencyName = journey ? journey.operator : null; + let polyline = this._createPolylineForSection(section, index, sections); + let duration = arrival.arrivalTimestamp - departure.departureTimestamp; + let headsign = journey ? journey.to : null; + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + let result = new TransitPlan.Leg({ departure: departureTime, + arrival: arrivalTime, + from: from, + to: to, + headsign: headsign, + fromCoordinate: [departureX, + departureY], + toCoordinate: [arrivalX, + arrivalY], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + duration: duration, + agencyName: agencyName, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (journey) + result.intermediateStops = this._createIntermediateStops(journey); + + return result; + } + + _getHVTCodeFromCategory(category) { + switch (category) { + case Category.B: + case Category.BUS: + case Category.NFB: + case Category.NFO: + return HVT.BUS_SERVICE; + case Category.TRAM: + case Category.NFT: + case Category.T: + return HVT.TRAM_SERVICE; + case Category.M: + return HVT.METRO_SERVICE; + case Category.R: + case Category.S: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case Category.RE: + return HVT.REGIONAL_RAIL_SERVICE; + case Category.IR: + return HVT.INTER_REGIONAL_RAIL_SERVICE; + case Category.IC: + case Category.ICE: + return HVT.LONG_DISTANCE_TRAINS; + case Category.N: + case Category.SN: + return HVT.SLEEPER_RAIL_SERVICE; + case Category.FUN: + return HVT.FUNICULAR_SERVICE; + case Category.BAT: + return HVT.WATER_TRANSPORT_SERVICE; + default: + return null; + } + } + + _getCoordsForSection(section, index, sections) { + let departureX = section.departure.location.coordinate.x; + let departureY = section.departure.location.coordinate.y; + let arrivalX = section.arrival.location.coordinate.x; + let arrivalY = section.arrival.location.coordinate.y; + + if (sections.length === 1) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } else if (index === 0) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + } else if (index === sections.length - 1) { + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } + + return [departureX, departureY, arrivalX, arrivalY]; + } + + _createPolylineForSection(section, index, sections) { + let polyline; + + if (section.journey) { + polyline = []; + + section.journey.passList.forEach((pass) => { + let coordinate = pass.location.coordinate; + polyline.push(new Champlain.Coordinate({ latitude: coordinate.x, + longitude: coordinate.y })); + }); + } else { + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + polyline = + [new Champlain.Coordinate({ latitude: departureX, + longitude: departureY }), + new Champlain.Coordinate({ latitude: arrivalX, + longitude: arrivalY })]; + } + + return polyline; + } + + _createIntermediateStops(journey) { + let result = []; + + journey.passList.forEach((pass, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(pass)); + }); + + return result; + } + + _createIntermediateStop(pass) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (pass.departure) + [departure, departureTzOffset] = this._parseTime(pass.departure) + if (pass.arrival) + [arrival, arrivalTzOffset] = this._parseTime(pass.arrival); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: pass.station.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [pass.location.coordinate.x, + pass.location.coordinate.y] }); + } + + // get a time suitably formatted for the the query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParam(point) { + let location = point.place.location; + + return location.latitude + ',' + location.longitude; + } + + _getQuery(vias) { + let points = this._query.filledPoints; + let transitOptions = this._query.transitOptions; + let params = { from: this._getPlaceParam(points[0]), + to: this._getPlaceParam(points.last()) }; + + if (!transitOptions.showAllTransitTypes) + params.transportations = this._getTransportations(transitOptions); + + if (this._query.arriveBy) + params.isArrivalTime = 1; + + /* the "page" parameter of the API seems broken for "arrive by" + * searches, so instead search by updated time + */ + if (this._extendPrevious) { + let itineraries = this._plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + let query = new HTTP.Query(params); + + if (this._viaLocations.length > 0) { + this._viaLocations.forEach((p) => { query.add('via', p); }); + } + + return query; + } + + _getTransportations(transitOptions) { + let transportations = []; + + this._query.transitOptions.transitTypes.forEach((type) => { + let transportation = this._transportationForTransitType(type); + + if (transportation) + transportations.push(transportation); + }); + + return transportations; + } + + _transportationForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Transportations.BUS; + case TransitPlan.RouteType.TRAM: + return Transportations.TRAM; + case TransitPlan.RouteType.TRAIN: + return Transportations.TRAIN; + case TransitPlan.RouteType.FERRY: + return Transportations.SHIP; + default: + return null; + } + } +} diff --git a/src/transitplugins/resrobot.js b/src/transitplugins/resrobot.js new file mode 100644 index 00000000..aada8d5f --- /dev/null +++ b/src/transitplugins/resrobot.js @@ -0,0 +1,627 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swedish national + * Resrobot transit journey planning API. + * + * API docs for Resrobot can be found at: + * https://www.trafiklab.se/api/resrobot-reseplanerare/dokumentation/sokresa + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://api.resrobot.se'; +const API_VERSION = 'v2'; + +// Timezone for timestamps returned by this provider +const NATIVE_TIMEZONE = 'Europe/Stockholm'; + +const ISO_8601_DURATION_REGEXP = new RegExp(/P((\d+)D)?T((\d+)H)?((\d+)M)?/); + +const Products = { + EXPRESS_TRAIN: 2, + REGIONAL_TRAIN: 4, + EXPRESS_BUS: 8, + LOCAL_TRAIN: 16, + SUBWAY: 32, + TRAM: 64, + BUS: 128, + FERRY: 256, + TAXI: 512 +}; + +const LegType = { + WALK: 'WALK', + TRANSIT: 'JNY', + TRANSFER: 'TRSF' +}; + +const CatCode = { + EXPRESS_TRAIN: 1, + REGIONAL_TRAIN: 2, + EXPRESS_BUS: 3, + LOCAL_TRAIN: 4, + SUBWAY: 5, + TRAM: 6, + BUS: 7, + FERRY: 8, + TAXI: 9 +}; + +const MAX_NUM_NEARBY_STOPS = 5; +const NEARBY_STOPS_SEARCH_RADIUS = 500; + +// ignore walking legs at the beginning/end when below this distance +const DISTANCE_THREASHOLD_TO_IGNORE = 50; + +// search radius to search for walk-only journeys +const WALK_SEARCH_RADIUS = 2000; + +// maximum distance for walk-only journey +const MAX_WALK_ONLY_DISTANCE = 2500; + +var Resrobot = class Resrobot { + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._key = params.key; + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + + if (!this._key) + throw new Error('missing key'); + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaId = null; + + if (filledPoints.length > 3) { + Utils.debug('This plugin supports at most one via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (filledPoints.length === 2) { + this._fetchResults(); + } else { + let lat = filledPoints[1].place.location.latitude; + let lon = filledPoints[1].place.location.longitude; + + this._fetchNearbyStops(lat, lon, MAX_NUM_NEARBY_STOPS, + NEARBY_STOPS_SEARCH_RADIUS, + () => this._fetchResults()); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + + if ((!this._scrF && !this._query.arriveBy) || + (!this._scrB && this._query.arriveBy)) + this._noRouteFound(); + else + this._fetchResults(); + } + + _fetchNearbyStops(lat, lon, num, radius, callback) { + let query = new HTTP.Query(this._getNearbyStopsQueryParams(lat, lon, + num, radius)); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + + '/location.nearbystops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get nearby stops: ' + message.status_code); + this._noRouteFound(); + } else { + try { + let result = JSON.parse(message.response_body.data); + let stopLocations = result.StopLocation; + + Utils.debug('nearby stops: ' + JSON.stringify(result, null, 2)); + + if (stopLocations && stopLocations.length > 0) { + let stopLocation = stopLocations[0]; + + this._viaId = stopLocation.id; + callback(); + } else { + Utils.debug('No nearby stops found'); + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + _fetchResults() { + let query = new HTTP.Query(this._getQueryParams()); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/trip?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + /* No routes found. If this is the first search + * (not "load more") and the distance is short + * enough, generate a walk-only itinerary + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && + distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, + end, + route); + this._plan.updateWithNewItineraries([walkingItinerary]); + } else { + this._noRouteFound(); + } + }); + } else { + this._noRouteFound(); + } + } else { + try { + let result = JSON.parse(message.response_body.data); + + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + if (result.Trip) { + let itineraries = this._createItineraries(result.Trip); + + // store the back and forward references from the result + this._scrB = result.scrB; + this._scrF = result.scrF; + this._processItineraries(itineraries); + } else { + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + /* get total "as the crow flies" start, and end points, and distance for + * the query + */ + _getAsTheCrowFliesPointsAndDistanceForQuery() { + let start = this._query.filledPoints[0]; + let end = this._query.filledPoints.last(); + let startLoc = start.place.location; + let endLoc = end.place.location; + + return [start, end, endLoc.get_distance_from(startLoc) * 1000]; + } + + _processItineraries(itineraries) { + /* if this is the first request, and the distance is short enough, + * add an additional walking-only itinerary at the beginning + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, end, route); + + itineraries.unshift(walkingItinerary); + } + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + }); + } else { + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } + } + + _createWalkingOnlyItinerary(start, end, route) { + let walkingLeg = GraphHopperTransit.createWalkingLeg(start, end, + start.place.name, + end.place.name, + route); + let duration = route.duration; + /* if the query has no date, just use a fake, since only the time + * is relevant for displaying in this case + */ + let date = this._query.date || '2019-01-01'; + let time = this._query.time + ':00'; + + let [timestamp, tzOffset] = + this._query.time ? this._parseTime(time, date) : + this._getTimestampAndTzOffsetNow(); + + if (this._query.arriveBy) { + walkingLeg.arrival = timestamp; + walkingLeg.departure = timestamp - route.time; + } else { + walkingLeg.departure = timestamp; + walkingLeg.arrival = timestamp + route.time; + } + + walkingLeg.agencyTimezoneOffset = tzOffset; + + let walkingItinerary = + new TransitPlan.Itinerary({ legs: [walkingLeg]} ); + + walkingItinerary.adjustTimings(); + + return walkingItinerary; + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionality as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._plan.noMoreResults(); + } else { + this._plan.noRouteFound(); + } + } + + _createItineraries(trips) { + return trips.map((trip) => this._createItinerary(trip)); + } + + _createItinerary(trip) { + let legs = this._createLegs(trip.LegList.Leg); + let duration = this._parseDuration(trip.duration); + let origin = trip.LegList.Leg[0].Origin; + let destination = trip.LegList.Leg.last().Destination; + let [startTime,] = this._parseTime(origin.time, origin.date); + let [endTime,] = this._parseTime(destination.time, destination.date); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time and date string into a timestamp into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(time, date) { + let timeText = '%sT%s'.format(date, time); + let dateTime = GLib.DateTime.new_from_iso8601(timeText, this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Get absolute timestamp for "now" in ms and timezone offset in the + * native timezone of the provider's native timezone @ "now" + */ + _getTimestampAndTzOffsetNow() { + let dateTime = GLib.DateTime.new_now(this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Parse a subset of ISO 8601 duration expressions. + * Handle hour and minute parts + */ + _parseDuration(duration) { + let match = duration.match(ISO_8601_DURATION_REGEXP); + + if (match) { + let [,,d,,h,,min] = match; + + return (d || 0) * 86400 + (h || 0) * 3600 + (min || 0) * 60; + } else { + Utils.debug('Unknown duration: ' + duration); + + return -1; + } + } + + _createLegs(legs) { + let result = legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + + if (this._canLegBeIgnored(result[0])) + result.shift(); + + if (this._canLegBeIgnored(result.last())) + result.splice(-1); + + return result; + } + + /* determines if a leg can ignored at the start or end, to catch the + * case when the user probably meant to search for a trip from a transit + * stop anyway + */ + _canLegBeIgnored(leg) { + if (!leg.isTransit) { + /* check that the distance is below the threshold and also that + * the duration is below 1 min, since the API in some occasions + * apparently gives distance 0, even though a walking leg has + * longer duration, and spans a distance in coordinates. + */ + return leg.distance <= DISTANCE_THREASHOLD_TO_IGNORE && + leg.duration <= 60; + } else { + return false; + } + } + + _createLeg(leg, index, legs) { + let isTransit; + + if (leg.type === LegType.TRANSIT) + isTransit = true; + else if (leg.type === LegType.WALK || leg.type === LegType.TRANSFER) + isTransit = false; + else + throw new Error('Unknown leg type: ' + leg.type); + + let origin = leg.Origin; + let destination = leg.Destination; + let product = leg.Product; + + if (!origin) + throw new Error('Missing Origin element'); + if (!destination) + throw new Error('Missing Destination element'); + if (!product && isTransit) + throw new Error('Missing Product element for transit leg'); + + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !isTransit ? this._query.filledPoints[0].place.name : + origin.name; + let to = + last && !isTransit ? this._query.filledPoints.last().place.name : + destination.name; + let [departure, tzOffset] = this._parseTime(origin.time, origin.date); + let [arrival,] = this._parseTime(destination.time, destination.date); + let route = isTransit ? product.num : null; + let routeType = + isTransit ? this._getHVTCodeFromCatCode(product.catCode) : null; + let agencyName = isTransit ? product.operator : null; + let agencyUrl = isTransit ? product.operatorUrl : null; + let polyline = this._createPolylineForLeg(leg); + let duration = leg.duration ? this._parseDuration(leg.duration) : null; + + let result = new TransitPlan.Leg({ departure: departure, + arrival: arrival, + from: from, + to: to, + headsign: leg.direction, + fromCoordinate: [origin.lat, + origin.lon], + toCoordinate: [destination.lat, + destination.lon], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + distance: leg.dist, + duration: duration, + agencyName: agencyName, + agencyUrl: agencyUrl, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (isTransit) + result.intermediateStops = this._createIntermediateStops(leg); + + return result; + } + + _createPolylineForLeg(leg) { + let polyline; + + if (leg.Stops && leg.Stops.Stop) { + polyline = []; + + leg.Stops.Stop.forEach((stop) => { + polyline.push(new Champlain.Coordinate({ latitude: stop.lat, + longitude: stop.lon })); + }); + } else { + polyline = + [new Champlain.Coordinate({ latitude: leg.Origin.lat, + longitude: leg.Origin.lon }), + new Champlain.Coordinate({ latitude: leg.Destination.lat, + longitude: leg.Destination.lon })]; + } + + return polyline; + } + + _createIntermediateStops(leg) { + let result = []; + + if (!leg.Stops && !leg.Stops.Stop) + throw new Error('Missing Stops element'); + + leg.Stops.Stop.forEach((stop, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(stop)); + }); + + return result; + } + + _createIntermediateStop(stop) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (stop.depTime && stop.depDate) + [departure, departureTzOffset] = this._parseTime(stop.depTime, stop.depDate); + if (stop.arrTime && stop.arrDate) + [arrival, arrivalTzOffset] = this._parseTime(stop.arrTime, stop.arrDate); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: stop.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [stop.lat, stop.lon] }); + } + + _getHVTCodeFromCatCode(code) { + switch (parseInt(code)) { + case CatCode.EXPRESS_TRAIN: + return HVT.HIGH_SPEED_RAIL_SERVICE; + case CatCode.REGIONAL_TRAIN: + return HVT.REGIONAL_RAIL_SERVICE; + case CatCode.EXPRESS_BUS: + return HVT.EXPRESS_BUS_SERVICE; + case CatCode.LOCAL_TRAIN: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case CatCode.SUBWAY: + return HVT.METRO_SERVICE; + case CatCode.TRAM: + return HVT.TRAM_SERVICE; + case CatCode.BUS: + return HVT.BUS_SERVICE; + case CatCode.FERRY: + return HVT.WATER_TRANSPORT_SERVICE; + case CatCode.TAXI: + return HVT.COMMUNAL_TAXI_SERVICE; + default: + Utils.debug('Unknown catCode: ' + code); + return HVT.MISCELLANEOUS_SERVICE; + } + } + + _getQueryParams() { + let points = this._query.filledPoints; + let originLocation = points[0].place.location; + let destLocation = points.last().place.location; + let transitOptions = this._query.transitOptions; + let params = { key: this._key, + originCoordLat: originLocation.latitude, + originCoordLong: originLocation.longitude, + destCoordLat: destLocation.latitude, + destCoordLong: destLocation.longitude, + format: 'json' }; + + if (!transitOptions.showAllTransitTypes) + params.products = this._getAllowedProductsForQuery(); + + if (this._viaId) + params.viaId = this._viaId; + + if (this._extendPrevious) { + params.context = this._query.arriveBy ? this._scrB : this._scrF; + } else { + if (this._query.arriveBy) + params.searchForArrival = 1; + + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + return params; + } + + _getNearbyStopsQueryParams(lat, lon, num, radius) { + let params = { key: this._key, + originCoordLat: lat, + originCoordLong: lon, + maxNo: num, + r: radius, + format: 'json' }; + + return params; + } + + _getAllowedProductsForQuery() { + let products = 0; + + this._query.transitOptions.transitTypes.forEach((type) => { + products += this._productCodeForTransitType(type); + }); + + return products; + } + + _productCodeForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Products.BUS + Products.EXPRESS_BUS + Products.TAXI; + case TransitPlan.RouteType.TRAM: + return Products.TRAM; + case TransitPlan.RouteType.TRAIN: + return Products.EXPRESS_TRAIN + Products.LOCAL_TRAIN; + case TransitPlan.RouteType.SUBWAY: + return Products.SUBWAY; + case TransitPlan.RouteType.FERRY: + return Products.FERRY; + default: + return 0; + } + } +} diff --git a/src/translations.js b/src/translations.js new file mode 100644 index 00000000..417811e4 --- /dev/null +++ b/src/translations.js @@ -0,0 +1,308 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const C_ = imports.gettext.dgettext; + +const GLib = imports.gi.GLib; + +const Time = imports.time; +const Utils = imports.utils; + +/* Translate an opening time specification tag value. + * from OSM into a "two-dimensional" (array-of-arrays) grid of human-readable + * strings (marked for translation) suitable for laying out in aligned rows + * and columns in a GtkGrid in the place bubbles. + * + * Some limitations are imposed to keep the translations manageable: + * A maximum of three components (separated by ; in the tag) are considered. + * For each component a maximum of three day intervals are considered. + * Each day interval can have one or two time intervals specified. + * For each of these limitations, the input string is passed on unmodified + * if the format is outside the supported cases, so no data should be dropped. + * Currently only specifying weekdays and public and school holidays are + * supported. + * Other variants, such as month-specific opening hours and other interval + * variants are not currently supported. In these cases, the data is + * returned as-is. + * + * The definition for the opening_hours tag can be found at: + * http://wiki.openstreetmap.org/wiki/Key:opening_hours + */ +function translateOpeningHours(string) { + if (string === '24/7' || string === 'Mo-Su 00:00-24:00' || + string === '00:00-24:00') + return [[_("Around the clock")]]; + else if (string === 'sunrise-sunset') + return [[_("From sunrise to sunset")]]; + else { + /* split "components" */ + let splitParts = string.split(';'); + + return splitParts.map(p => _translateOpeningHoursPart(p.trim())); + } + +} + +/* + * Parse a time range component, comprised of either a single time range, or + * day and time ranges, such as: + * 10:00-18:00 + * 09:00-12:00,13:00-19:00 + * Mo-Fr 10:00-19:00 + * Mo-We,Fr 10:00-12:00,13:00-17:00 + * Mo-We,Fr 10:00-12:00, 13:00-17:00 + */ +function _translateOpeningHoursPart(string) { + let splitString = string.split(/\s+/); + let len = splitString.length; + + if (len === 1) { + return [_translateOpeningHoursTimeIntervalList(string.trim())]; + } else if (len === 2 || len === 3) { + let dayIntervalSpec = + _translateOpeningHoursDayIntervalList(splitString[0].trim()); + let intervalString = + len === 2 ? splitString[1].trim() : + splitString[1].trim() + splitString[2].trim(); + let timeIntervalSpec = + _translateOpeningHoursTimeIntervalList(intervalString); + + return [Utils.firstToLocaleUpperCase(dayIntervalSpec), + timeIntervalSpec]; + } else { + // for an unknown format, just output the raw value + return [string]; + } +} + +/* + * Parse a day interval, such as: + * Mo-Fr + * Mo,We,Th-Fr + */ +function _translateOpeningHoursDayIntervalList(string) { + let splitParts = string.split(','); + let interval1, interval2, interval3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursDayInterval(splitParts[0].trim()); + case 2: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + /* Translators: + * This represents a format string consisting of two day interval + * specifications. + * For example: + * Mo-Fr,Sa + * where the "Mo-Fr" and "Sa" parts are replaced by the %s + * place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s").format(interval1, interval2); + case 3: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + interval3 = _translateOpeningHoursDayInterval(splitParts[2].trim()); + /* Translators: + * This represents a format string consisting of three day interval + * specifications. + * For example: + * Mo-We,Fr,Su + * where the "Mo-We", "Fr", and "Su" parts are replaced by the + * %s place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s,%s"). + format(interval1, interval2, interval3); + default: + // for other formats, just return the raw string + return string; + } +} + +/* + * Parse a day interval consisting of either a single day + * or a range, such as: + * Mo-Fr + * Tu + */ +function _translateOpeningHoursDayInterval(string) { + let splitString = string.split('-'); + + // special case: Mo-Su treated as "every day" + if (string === 'Mo-Su') + return _("Every day"); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursDay(splitString[0].trim()); + case 2: + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This represents a range of days with a starting and ending day. + */ + return C_("day range", "%s-%s").format( + _translateOpeningHoursDay(from), + _translateOpeningHoursDay(to)); + default: + // unknown format, just return the input + return string; + } +} + +function _translateOpeningHoursDay(string) { + if (string === 'PH') + return _("Public holidays"); + if (string === 'SH') + return _("School holidays"); + + // create a dummy DateTime instance which is guaranteed to be a Monday + let time = GLib.DateTime.new_local(1, 1, 1, 0, 0, 0.0); + let days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + for (let i = 0; i < days.length; i++) { + if (string === days[i]) { + time = time.add_days(i); + return time.format('%a'); + } + } + + // unknown value, just return the input + return string; +} + +/* + * Parse a time interval list, such as: + * 10:00-20:00 + * 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursTimeIntervalList(string) { + let splitString = string.split(','); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursTimeInterval(splitString[0].trim()); + case 2: + let interval1 = splitString[0].trim(); + let interval2 = splitString[1].trim(); + + /* Translators: + * This is a list with two time intervals, such as: + * 09:00-12:00, 13:00-14:00 + * The intervals are represented by the %s place holders and + * appropriate white space or connected phrase could be modified by + * the translation. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval list", "%s, %s").format( + _translateOpeningHoursTimeInterval(interval1), + _translateOpeningHoursTimeInterval(interval2)); + default: + // for other number of components, just return the input + return string; + } +} + +/* + * Parse a time interval + */ +function _translateOpeningHoursTimeInterval(string) { + if (string === 'off') + return _("not open"); + + let splitString = string.split('-'); + + if (splitString.length == 2) { + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This is a time interval with a starting and an ending time. + * The time values are represented by the %s place holders and + * appropriate white spacing or connecting phrases can be set by the + * translation as needed. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval", "%s-%s").format( + _translateOpeningHoursTime(from), + _translateOpeningHoursTime(to)); + } else { + // unknown time interval format, just return the input + return string; + } +} + +/* + * Parse a time. + */ +function _translateOpeningHoursTime(string) { + let splitString = string.split(':'); + + if (splitString.length == 2) { + let h = splitString[0]; + let min = splitString[1]; + + // if the parts aren't numbers + if (h % 1 !== 0 || min % 1 !== 0) + return string; + + // if the hours or minute components are out of range + if (h > 24 || h < 0 || min > 59 || min < 0) + return string; + + return Time.formatTimeFromHoursAndMins(h, min); + } else { + // unknown format, just return input + return string; + } +} + +function translateReligion(string) { + switch(string) { + case 'animist': return _("Animism"); + case 'bahai': return_("Bahá'í"); + case 'buddhist': return _("Buddhism"); + case 'caodaism': return _("Caodaism"); + case 'christian': return _("Christianity"); + case 'confucian': return _("Confucianism"); + case 'hindu': return _("Hinduism"); + case 'jain': return _("Jainism"); + case 'jewish': return _("Judaism"); + case 'muslim': return _("Islam"); + case 'multifaith': return _("Multiple Religions"); + case 'pagan': return _("Paganism"); + case 'pastafarian': return _("Pastafarianism"); + case 'scientologist': return _("Scientology"); + case 'shinto': return _("Shinto"); + case 'sikh': return _("Sikhism"); + case 'spiritualist': return _("Spiritualism"); + case 'taoist': return _("Taoism"); + case 'unitarian_universalist': return _("Unitarian Universalism"); + case 'voodoo': return _("Voodoo"); + case 'yazidi': return _("Yazidism"); + case 'zoroastrian': return _("Zoroastrianism"); + default: return null; + } +} diff --git a/src/turnPointMarker.js b/src/turnPointMarker.js new file mode 100644 index 00000000..c5e872ee --- /dev/null +++ b/src/turnPointMarker.js @@ -0,0 +1,123 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Dario Di Nucci + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const Utils = imports.utils; + +var TurnPointMarker = GObject.registerClass( +class TurnPointMarker extends MapMarker.MapMarker { + + _init(params) { + this._queryPoint = params.queryPoint; + delete params.queryPoint; + + this._turnPoint = params.turnPoint; + delete params.turnPoint; + + this._transitStop = params.transitStop; + delete params.transitStop; + + this._transitLeg = params.transitLeg; + delete params.transitLeg; + + let latitude; + let longitude; + + if (this._turnPoint) { + latitude = this._turnPoint.coordinate.get_latitude(); + longitude = this._turnPoint.coordinate.get_longitude(); + } else { + latitude = this._transitStop.coordinate[0]; + longitude = this._transitStop.coordinate[1]; + } + + params.place = new Place.Place({ + location: new Location.Location({ latitude: latitude, + longitude: longitude }) }); + super._init(params); + + let actor; + if (this._queryPoint) { + this.draggable = true; + this.connect('drag-finish', () => this._onMarkerDrag()); + actor = this._actorFromIconName(this._turnPoint.iconName, 0); + } else { + let color = this._getColor(); + actor = this._actorFromIconName('maps-point-end-symbolic', + 0, + color); + } + this.add_actor(actor); + } + + _getColor() { + /* Use the route color from the transit leg when representing part of + * a transit trip, otherwise let the fallback functionality of the + * utility function use a GNOMEish blue color for turn-by-turn routing. + */ + let color = this._transitLeg ? this._transitLeg.color : null; + + return new Gdk.RGBA({ red: Color.parseColor(color, 0, 33 / 255), + green: Color.parseColor(color, 1, 93 / 255), + blue: Color.parseColor(color, 2, 155 / 255), + alpha: 255 }); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } + + goTo() { + let view = this._mapView.view; + let turnPointZoomLevel = 15; + let latitude = this.latitude; + let longitude = this.longitude; + + view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + view.goto_duration = 0; + + Utils.once(view, 'animation-completed', () => { + view.zoom_level = turnPointZoomLevel; + view.center_on(latitude, longitude); + }); + + view.go_to(this.latitude, this.longitude); + } + + _onMarkerDrag() { + let query = Application.routeQuery; + let place = new Place.Place({ + location: new Location.Location({ latitude: this.latitude.toFixed(5), + longitude: this.longitude.toFixed(5) }) }); + + this._queryPoint.place = place; + } +}); diff --git a/src/urls.js b/src/urls.js new file mode 100644 index 00000000..96b698f2 --- /dev/null +++ b/src/urls.js @@ -0,0 +1,104 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +// Matches URLs for OpenStreetMap (for addressing objects or coordinates) +const OSM_URL_REGEX = new RegExp(/https?:\/\/(www\.)?openstreetmap\.org./); + +/** + * For URLs identifiable as pointing to a coordinate + * e.g. an openstreetmap.org URL with lat and lon query parameters, + * returns [lat, lon, optional zoom], otherwise []. + */ +function parseAsCoordinateURL(url) { + if (url.match(OSM_URL_REGEX)) { + /* it seems #map= is not handle well by parse_params(), so just remove + * the # as a work-around + */ + let uri = GLib.Uri.parse(url.replace('#map=', 'map='), GLib.UriFlags.NONE); + let params = GLib.Uri.parse_params(uri.get_query(), -1, '&', + GLib.UriParamsFlags.NONE); + + let lat = params.lat; + let lon = params.lon; + let mlat = params.mlat; + let mlon = params.mlon; + let zoom; + let map = params.map; + + if (map) { + let parts = map.split('/'); + + if (parts.length !== 3) { + return []; + } else { + zoom = parseInt(parts[0]); + lat = parseFloat(parts[1]); + lon = parseFloat(parts[2]); + } + } else if (mlat && mlon) { + lat = parseFloat(mlat); + lon = parseFloat(mlon); + + if (params.zoom) + zoom = parseInt(params.zoom); + } else if (lat && lon) { + lat = parseFloat(lat); + lon = parseFloat(lon); + + if (params.zoom) + zoom = parseInt(params.zoom); + } else { + return []; + } + + return [lat, lon, zoom]; + } else { + return []; + } +} + +/** + * For URLs addressing a specific OSM object (node, way, or relation), + * returns [type,id], otherwise []. + */ +function parseAsObjectURL(url) { + if (url.match(OSM_URL_REGEX)) { + let uri = GLib.Uri.parse(url, GLib.UriFlags.NONE); + let path = uri.get_path(); + let parts = path.split('/'); + + if (parts.length === 3 && parts[0] === '' && + (parts[1] === 'node' || + parts[1] === 'way' || + parts[1] === 'relation')) { + let id = parseInt(parts[2]); + + if (id > 0) + return [parts[1], id]; + } + } + + return []; +} diff --git a/src/userLocationMarker.js b/src/userLocationMarker.js new file mode 100644 index 00000000..6181d238 --- /dev/null +++ b/src/userLocationMarker.js @@ -0,0 +1,126 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; + +var AccuracyCircleMarker = GObject.registerClass( +class AccuracyCirleMarker extends Champlain.Point { + + _init(params) { + this.place = params.place; + delete params.place; + + params.color = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 25 }); + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.reactive = false; + + super._init(params); + } + + refreshGeometry(view) { + this.latitude = this.place.location.latitude; + this.longitude = this.place.location.longitude; + + let zoom = view.zoom_level; + let source = view.map_source; + let metersPerPixel = source.get_meters_per_pixel(zoom, + this.latitude, + this.longitude); + let size = this.place.location.accuracy * 2 / metersPerPixel; + + if (size > view.width || size > view.height) + this.hide(); + else { + this.size = size; + this.show(); + } + } +}); + +var UserLocationMarker = GObject.registerClass( +class UserLocationMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this._accuracyMarker = new AccuracyCircleMarker({ place: this.place }); + this.connect('notify::view-zoom-level', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::width', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::height', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._accuracyMarker.refreshGeometry(this._view); + + this.place.connect('notify::location', () => this._updateLocation()); + this._updateLocation(); + + this.connect('notify::visible', this._updateAccuracyCircle.bind(this)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: Math.floor(this.height / 2) }; + } + + _hasBubble() { + return true; + } + + addToLayer(layer) { + layer.add_marker(this._accuracyMarker); + layer.add_marker(this); + } + + _updateLocation() { + if (this._actor) { + this._actor.destroy(); + delete this._actor; + } + + if (this.place.location.heading > -1) { + this._actor = this._actorFromIconName('user-location-compass', 0); + this._actor.set_pivot_point(0.5, 0.5); + this._actor.set_rotation_angle(Clutter.RotateAxis.Z_AXIS, this.place.location.heading); + } else { + this._actor = this._actorFromIconName('user-location', 0); + } + this.add_actor(this._actor); + + this._updateAccuracyCircle(); + } + + _updateAccuracyCircle() { + if (this.visible && this.place.location.accuracy > 0) { + this._accuracyMarker.refreshGeometry(this._view); + } else { + this._accuracyMarker.visible = false; + } + } +}); diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 00000000..1f40746a --- /dev/null +++ b/src/utils.js @@ -0,0 +1,476 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const GLib = imports.gi.GLib; +const Gdk = imports.gi.Gdk; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; +const ByteArray = imports.byteArray; + +var METRIC_SYSTEM = 1; +var IMPERIAL_SYSTEM = 2; + +//List of locales using imperial system according to glibc locale database +const IMPERIAL_LOCALES = ['unm_US', 'es_US', 'es_PR', 'en_US', 'yi_US']; + +// Matches all unicode stand-alone accent characters +const ACCENTS_REGEX = /[\u0300-\u036F]/g; + +const _integerFormat = new Intl.NumberFormat([], { maximumFractionDigits: 0 }); +const _integerTwoDigitFormat = + new Intl.NumberFormat([], { minimumIntegerDigits: 2, + maximumFractionDigits: 0 }); + +let debugInit = false; +let measurementSystem = null; + +var debugEnabled = false; + +function debug(msg) { + if (!debugInit) { + let env = GLib.getenv('MAPS_DEBUG'); + if (env) + debugEnabled = true; + + debugInit = true; + } + + if (debugEnabled) { + log('DEBUG: ' + msg); + if (msg instanceof Error) + log(msg.stack); + } +} + +// Connect to a signal on an object and disconnect on its first emission. +function once(obj, signal, callback) { + let id = obj.connect(signal, function() { + obj.disconnect(id); + callback(); + }); +} + +function loadStyleSheet(file) { + let provider = new Gtk.CssProvider(); + provider.load_from_file(file); + Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), + provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +function addActions(actionMap, entries, settings = null) { + for(let name in entries) { + let entry = entries[name]; + let action = createAction(name, entry, settings); + + actionMap.add_action(action); + + if(entry.accels) + setAccelsForActionMap(actionMap, name, entry.accels); + } +} + +function setAccelsForActionMap(actionMap, actionName, accels) { + let app; + let prefix; + + if(actionMap instanceof Gtk.Application) { + app = actionMap; + prefix = "app"; + } else if(actionMap instanceof Gtk.Window) { + app = actionMap.application; + prefix = "win"; + } + app.set_accels_for_action(prefix + '.' + actionName, accels); +} + +function createAction(name, + { state, paramType, onActivate, onChangeState, setting }, + settings = null) { + let action; + + if (setting && settings) { + action = settings.create_action(setting); + + if (onChangeState) + action.connect('notify::state', onChangeState); + } else { + let entry = { name: name }; + + if (Array.isArray(state)) { + let [type, value] = state; + entry.state = new GLib.Variant.new(type, value); + } + + if (paramType !== undefined) + entry.parameter_type = GLib.VariantType.new(paramType); + + action = new Gio.SimpleAction(entry); + + if (onActivate) + action.connect('activate', onActivate); + if (onChangeState) + action.connect('change-state', onChangeState); + } + + return action; +} + +function _getPlatformData(appId, timestamp) { + let context = Gdk.Display.get_default().get_app_launch_context(); + context.set_timestamp(timestamp); + let info = Gio.DesktopAppInfo.new(appId + '.desktop'); + let id = new GLib.Variant('s', context.get_startup_notify_id(info, [])); + + return { 'desktop-startup-id': id }; +} + +function activateAction(appId, action, parameter, timestamp) { + let objectPath = '/' + appId.replace(/\./g, '/'); + let platformData = _getPlatformData(appId, timestamp); + let wrappedParam = parameter ? [parameter] : []; + + Gio.DBus.session.call(appId, + objectPath, + 'org.freedesktop.Application', + 'ActivateAction', + new GLib.Variant('(sava{sv})', [action, + wrappedParam, + platformData]), + null, + Gio.DBusCallFlags.NONE, -1, null, function(c, res) { + try { + c.call_finish(res); + } catch(e) { + debug('ActivateApplication: ' + e); + } + }); +} + +function dashedToCamelCase(name) { + return name.replace(/(-.)/g, function(x) { + return x[1].toUpperCase(); + }); +} + +function getUIObject(res, ids) { + let builder = new Gtk.Builder(); + builder.add_from_resource('/org/gnome/Maps/ui/' + res + '.ui'); + let ret = {}; + ids.forEach(function(id) { + ret[dashedToCamelCase(id)] = builder.get_object(id); + }); + return ret; +} + +function readFile(filename) { + let status, buffer; + let file = Gio.File.new_for_path(filename); + try { + [status, buffer] = file.load_contents(null); + } catch (e) { + return null; + } + if (status) + return buffer; + else + return null; +} + +function writeFile(filename, buffer) { + let file = Gio.File.new_for_path(filename); + let status; + try { + status = file.replace_contents(buffer, null, false, 0, null)[0]; + return status; + } catch (e) { + return false; + } +} + +function getMeasurementSystem() { + if (measurementSystem) + return measurementSystem; + + let locale = GLib.getenv('LC_MEASUREMENT') || GLib.get_language_names()[0]; + + // Strip charset + if (locale.indexOf('.') !== -1) + locale = locale.substring(0, locale.indexOf('.')); + + if (IMPERIAL_LOCALES.indexOf(locale) === -1) + measurementSystem = METRIC_SYSTEM; + else + measurementSystem = IMPERIAL_SYSTEM; + + return measurementSystem; +} + +/** + * Get the highest priority bare lange currently in use. + */ +function getLanguage() { + let locale = GLib.get_language_names()[0]; + // the last item returned is the "bare" language + return GLib.get_locale_variants(locale).slice(-1)[0]; +} + +function getAccuracyDescription(accuracy) { + switch(accuracy) { + case Geocode.LOCATION_ACCURACY_UNKNOWN: + /* Translators: Accuracy of user location information */ + return _("Unknown"); + case 0: + /* Translators: Accuracy of user location information */ + return _("Exact"); + default: + return prettyDistance(accuracy); + } +} + +function loadAvatar(pixbuf, size) { + let width = pixbuf.get_width(); + let height = pixbuf.get_height(); + let croppedThumbnail; + + if (width > height) { + let x = (width - height) / 2; + croppedThumbnail = pixbuf.new_subpixbuf(x, 0, height, height); + } else { + let y = (height - width) / 2; + croppedThumbnail = pixbuf.new_subpixbuf(0, y, width, width); + } + + return croppedThumbnail.scale_simple(size, size, GdkPixbuf.InterpType.BILINEAR); +} + +function load_icon(icon, size, loadCompleteCallback) { + if (icon instanceof Gio.FileIcon || icon instanceof Gio.BytesIcon) { + _load_icon(icon, loadCompleteCallback); + } else if (icon instanceof Gio.ThemedIcon) { + _load_themed_icon(icon, size, loadCompleteCallback); + } +} + +function _load_icon(icon, loadCompleteCallback) { + icon.load_async(-1, null, function(icon, res) { + try { + let stream = icon.load_finish(res)[0]; + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + loadCompleteCallback(null); + } + }); +} + +function _load_themed_icon(icon, size, loadCompleteCallback) { + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_by_gicon(icon, size, 0); + + try { + let pixbuf = info.load_icon(); + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + } +} + +function osmTypeToString(osmType) { + switch(osmType) { + case Geocode.PlaceOsmType.NODE: return 'node'; + case Geocode.PlaceOsmType.RELATION: return 'relation'; + case Geocode.PlaceOsmType.WAY: return 'way'; + default: return 'node'; + } +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals + */ +function formatLocaleInteger(n) { + return _integerFormat.format(n); +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals using at least two digits + * with possible leading 0, suitable for time rendering. + */ +function formatLocaleIntegerMinimumTwoDigits(n) { + return _integerTwoDigitFormat.format(n); +} + +function prettyTime(time) { + let seconds = Math.floor(time / 1000); + let minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + + let secondsStr = formatLocaleInteger(seconds); + let minutesStr = formatLocaleInteger(minutes); + let hoursStr = formatLocaleInteger(hours); + + if (hours > 0 && minutes === 0) { + /* Translators: this is a duration with only hours, using + * an abbreviation for hours, corresponding to 'h' in English + */ + return _("%s h").format(hoursStr); + } else if (hours > 0) { + /* Translators: this is a duration with hours and minutes parts + * using abbreviations for hours and minutes, corresponding to 'h' + * and 'min' in English. The minutes has appropriate plural variations + */ + return ngettext("%s h %s min", "%s h %s min", + minutes).format(hoursStr, minutesStr); + } else if (minutes > 0) { + /* Translators: this is a duration with minutes part + * using abbreviation for minutes, corresponding to 'min' in English + * with appropriate plural variations + */ + return ngettext("%s min", "%s min", minutes).format(minutesStr); + } else { + /* Translators: this is a duration of less than one minute + * with seconds using an abbreviation for seconds, corresponding to + * 's' in English with appropriate plural forms + */ + return ngettext("%s s", "%s s", seconds).format(secondsStr); + } +} + +function prettyDistance(distance, noRound) { + if (getMeasurementSystem() === METRIC_SYSTEM) { + // round to whole meters + distance = Math.round(distance); + if (distance >= 1000 && !noRound) { + distance = Math.round(distance / 1000 * 10) / 10; + /* Translators: This is a distance measured in kilometers */ + return _("%s km").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in meters */ + return _("%s m").format(distance.toLocaleString()); + } else { + // Convert to feet + distance = Math.round(distance * 3.2808399); + if (distance >= 1056 && !noRound) { + // Convert to miles when distance is more than 0.2 mi + distance = Math.round(distance / 5280 * 10) / 10; + /* Translators: This is a distance measured in miles */ + return _("%s mi").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in feet */ + return _("%s ft").format(distance.toLocaleString()); + } +} + +function uriSchemeSupported(scheme) { + let apps = Gio.AppInfo.get_all(); + let prefix = 'x-scheme-handler/'; + + for (let app of apps) { + let types = app.get_supported_types(); + if (!types) + continue; + + for (let type of types) { + if (type.replace(prefix, '') === scheme) + return true; + } + } + return false; +} + +function normalizeString(string) { + let normalized = GLib.utf8_normalize(string, -1, GLib.NormalizeMode.ALL); + return normalized.replace(ACCENTS_REGEX, ''); +} + +function isUsingDarkThemeVariant() { + let gtkSettings = Gtk.Settings.get_default(); + + return gtkSettings.gtk_application_prefer_dark_theme; +} + +function isUsingHighContrastTheme() { + let gtkSettings = Gtk.Settings.get_default(); + let themeName = gtkSettings.gtk_theme_name; + + return themeName === 'HighContrast' || themeName === 'HighContrastInverse'; +} + +function showDialog(msg, type, transientFor) { + let messageDialog = + new Gtk.MessageDialog({ transient_for: transientFor, + destroy_with_parent: true, + message_type: type, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: msg }); + + messageDialog.connect('response', () => messageDialog.destroy()); + messageDialog.show_all(); +} + +/* Gets a string from either a ByteArray or Uint8Array. This is for +compatibility between two different Gjs versions, see discussion at +https://gitlab.gnome.org/GNOME/gnome-maps/merge_requests/19 */ +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function getCountryCodeForCoordinates(lat, lon) { + let location = GWeather.Location.new_detached('', null, lat, lon); + + return location.get_country(); +} + +/* Determines whether a URI is valid and its scheme is HTTP or HTTPS. */ +function isValidWebsite(website) { + try { + GLib.Uri.is_valid(website, GLib.UriFlags.NONE); + } catch(e) { + return false; + } + return website.startsWith("http://") || website.startsWith("https://"); +} + +/* Return string with first character in upper case according the rules + * determined by the current locale + */ +function firstToLocaleUpperCase(str) { + return str[0].toLocaleUpperCase() + str.substring(1); +} diff --git a/src/wikipedia.js b/src/wikipedia.js new file mode 100644 index 00000000..ebe3fa20 --- /dev/null +++ b/src/wikipedia.js @@ -0,0 +1,213 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Format = imports.format; +const Utils = imports.utils; + +let _soupSession = null; +function _getSoupSession() { + if (_soupSession === null) { + _soupSession = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + return _soupSession; +} + +let _thumbnailCache = {}; +let _metadataCache = {}; + +function getLanguage(wiki) { + return wiki.split(':')[0]; +} + +function getArticle(wiki) { + return Soup.uri_encode(wiki.replace(/ /g, '_').split(':').splice(1).join(':'), + '\''); +} + +function getHtmlEntityEncodedArticle(wiki) { + return GLib.markup_escape_text(wiki.split(':').splice(1).join(':'), -1); +} + +/* + * Fetch various metadata about a Wikipedia article, given the wiki language + * and article title. + * + * @size is the maximum width of the thumbnail. + * + * Calls @metadataCb with the lang:title pair for the article and an object + * containing information about the article. For the keys/values of this + * object, see the relevant MediaWiki API documentation. + * + * Calls @thumbnailCb with the Gdk.Pixbuf of the icon when successful, otherwise + * null. + */ +function fetchArticleInfo(wiki, size, metadataCb, thumbnailCb) { + let lang = getLanguage(wiki); + let title = getHtmlEntityEncodedArticle(wiki); + let uri = Format.vprintf('https://%s.wikipedia.org/w/api.php', [ lang ]); + let msg = Soup.form_request_new_from_hash('GET', uri, { action: 'query', + titles: title, + prop: 'extracts|pageimages|langlinks', + format: 'json', + + /* Allow redirects, for example if an + article is renamed. */ + redirects: '1', + + /* Make sure we get all lang links */ + lllimit: 'max', + + /* don't go past first section header */ + exintro: 'yes', + /* limit the length */ + exchars: '200', + /* for plain text rather than HTML */ + explaintext: 'yes', + + pithumbsize: size + ''}); + let session = _getSoupSession(); + let cachedMetadata = _metadataCache[wiki]; + + if (cachedMetadata) { + _onMetadataFetched(wiki, cachedMetadata, size, metadataCb, thumbnailCb); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to request Wikipedia metadata: " + msg.reason_phrase); + metadataCb(null, {}); + if (thumbnailCb) { + thumbnailCb(null); + } + return; + } + + let response = JSON.parse(msg.response_body.data); + let pages = response.query.pages; + + if (pages) { + /* we know there should be only one object instance in the "pages" + * object, but the API specifies the sub-object as the page ID, + * so we'll have to use this iteration approach here + */ + for (let pageId in pages) { + let page = pages[pageId]; + + _metadataCache[wiki] = page; + _onMetadataFetched(wiki, page, size, metadataCb, thumbnailCb); + return; + } + } else { + metadataCb(null, {}); + if (thumbnailCb) { + thumbnailCb(null); + } + } + }); +} + +function _onMetadataFetched(wiki, page, size, metadataCb, thumbnailCb) { + /* Try to get a thumbnail *before* following language links--the primary + article probably has the best thumbnail image */ + if (thumbnailCb && page.thumbnail) { + let source = page.thumbnail.source; + + _fetchThumbnailImage(wiki, size, source, thumbnailCb); + thumbnailCb = null; + } + + /* Follow language links if necessary */ + let langlink = _findLanguageLink(wiki, page); + if (langlink) { + fetchArticleInfo(langlink, size, metadataCb, thumbnailCb); + } else { + metadataCb(wiki, page); + + if (thumbnailCb) { + thumbnailCb(null); + } + } +} + +function _fetchThumbnailImage(wiki, size, source, callback) { + let uri = new Soup.URI(source); + let msg = new Soup.Message({ method: 'GET', uri: uri }); + let session = _getSoupSession(); + + let cachedThumbnail = _thumbnailCache[wiki + '/' + size]; + if (cachedThumbnail) { + callback(cachedThumbnail); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to download thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let contents = msg.response_body_data; + let stream = Gio.MemoryInputStream.new_from_bytes(contents); + + try { + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + _thumbnailCache[wiki + '/' + size] = pixbuf; + callback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + callback(null); + } + + stream.close(null); + }); +} + +/* Finds the best language to use, based on the language of the original + article and the langlinks data from the Wikipedia API. + + Returns a lang:title string if that article should be used, or undefined if + the original article should be used. */ +function _findLanguageLink(wiki, page) { + let originalLang = getLanguage(wiki); + let languages = GLib.get_language_names().map((lang) => lang.split(/[\._\-]/)[0]); + + if (!languages.includes(originalLang)) { + let langlinks = {}; + for (let langlink of (page.langlinks || [])) { + langlinks[langlink.lang] = langlink["*"]; + } + + for (let language of languages) { + if (language in langlinks) { + return language + ":" + langlinks[language]; + } + } + } +} diff --git a/src/xmldom/LICENSE b/src/xmldom/LICENSE new file mode 100644 index 00000000..68a9b5e1 --- /dev/null +++ b/src/xmldom/LICENSE @@ -0,0 +1,8 @@ +You can choose any one of those: + +The MIT License (MIT): + +link:http://opensource.org/licenses/MIT + +LGPL: +http://www.gnu.org/licenses/lgpl.html diff --git a/src/xmldom/dom.js b/src/xmldom/dom.js new file mode 100644 index 00000000..0ec86d14 --- /dev/null +++ b/src/xmldom/dom.js @@ -0,0 +1,1142 @@ +/* + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + */ + +function copy(src,dest){ + for(var p in src){ + dest[p] = src[p]; + } +} +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(!(pt instanceof Super)){ + let t = function (){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknow Class:"+Class) + } + pt.constructor = Class + } +} +var htmlns = 'http://www.w3.org/1999/xhtml' ; +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; + +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); + + +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; +}; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return this[index] || null; + }, + toString:function(){ + for(var buf = [], i = 0;i=0){ + var lastIndex = list.length-1 + while(i0 || key == 'xmlns'){ +// return null; +// } + var i = this.length; + while(i--){ + var attr = this[i]; + if(attr.nodeName == key){ + return attr; + } + } + return null; + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + + + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } +}; +/** + * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 + */ +function DOMImplementation(/* Object */ features) { + this._features = {}; + if (features) { + for (var feature in features) { + this._features = features[feature]; + } + } +}; + +DOMImplementation.prototype = { + hasFeature: function(/* string */ feature, /* string */ version) { + var versions = this._features[feature.toLowerCase()]; + if (versions && (!version || version in versions)) { + return true; + } else { + return false; + } + }, + // Introduced in DOM Level 2: + createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype; + if(doctype){ + doc.appendChild(doctype); + } + if(qualifiedName){ + var root = doc.createElementNS(namespaceURI,qualifiedName); + doc.appendChild(root); + } + return doc; + }, + // Introduced in DOM Level 2: + createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId; + node.systemId = systemId; + // Introduced in DOM Level 2: + //readonly attribute DOMString internalSubset; + + //TODO:.. + // readonly attribute NamedNodeMap entities; + // readonly attribute NamedNodeMap notations; + return node; + } +}; + + +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ + +function Node() { +}; + +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + this.insertBefore(newChild,oldChild); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } +}; + + +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' +} + + +copy(NodeType,Node); +copy(NodeType,Node.prototype); + +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if((node = node.firstChild)){ + do{ + if(_visitNode(node,callback)){return true} + }while((node=node.nextSibling)) + } + return false; +} + + + +function Document(){ +} +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } +} +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } +} +function _onUpdateChild(doc,el,newChild){ + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if(newChild){ + cs[cs.length++] = newChild; + }else{ + //console.log(1) + var child = el.firstChild; + var i = 0; + while(child){ + cs[i++] = child; + child =child.nextSibling; + } + cs.length = i; + } + } +} + +/** + * attributes; + * children; + * + * writeable properties: + * nodeValue,Attr:value,CharacterData:data + * prefix + */ +function _removeChild(parentNode,child){ + var previous = child.previousSibling; + var next = child.nextSibling; + if(previous){ + previous.nextSibling = next; + }else{ + parentNode.firstChild = next + } + if(next){ + next.previousSibling = previous; + }else{ + parentNode.lastChild = previous; + } + _onUpdateChild(parentNode.ownerDocument,parentNode); + return child; +} +/** + * preformance key(refChild == null) + */ +function _insertBefore(parentNode,newChild,nextChild){ + var cp = newChild.parentNode; + if(cp){ + cp.removeChild(newChild);//remove and update + } + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = newChild.firstChild; + if (newFirst == null) { + return newChild; + } + var newLast = newChild.lastChild; + }else{ + newFirst = newLast = newChild; + } + var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; + + newFirst.previousSibling = pre; + newLast.nextSibling = nextChild; + + + if(pre){ + pre.nextSibling = newFirst; + }else{ + parentNode.firstChild = newFirst; + } + if(nextChild == null){ + parentNode.lastChild = newLast; + }else{ + nextChild.previousSibling = newLast; + } + do{ + newFirst.parentNode = parentNode; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + //console.log(parentNode.lastChild.nextSibling == null) + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { + newChild.firstChild = newChild.lastChild = null; + } + return newChild; +} +function _appendSingleChild(parentNode,newChild){ + var cp = newChild.parentNode; + if(cp){ + var pre = parentNode.lastChild; + cp.removeChild(newChild);//remove and update + var pre = parentNode.lastChild; + } + var pre = parentNode.lastChild; + newChild.parentNode = parentNode; + newChild.previousSibling = pre; + newChild.nextSibling = null; + if(pre){ + pre.nextSibling = newChild; + }else{ + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + return newChild; + //console.log("__aa",parentNode.lastChild.nextSibling == null) +} +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + doctype : null, + documentElement : null, + _inc : 1, + + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + if(this.documentElement == null && newChild.nodeType == 1){ + this.documentElement = newChild; + } + + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == 1){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + return false; + }) + return rtv; + }, + + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.target = target; + node.nodeValue= node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); + + +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, + + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, + + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, + + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; + + +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); + + +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); + + }, + appendChild:function(newChild){ + //if(!(newChild instanceof CharacterData)){ + throw new Error(ExceptionMessage[3]) + //} + return Node.prototype.appendChild.apply(this,arguments) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } +} +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } +} +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE +} +_extends(Comment,CharacterData); + +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE +} +_extends(CDATASection,CharacterData); + + +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); + +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); + +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); + +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); + +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); + + +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node,attributeSorter){ + return node.toString(attributeSorter); +} +Node.prototype.toString =function(attributeSorter){ + var buf = []; + serializeToString(this,buf,attributeSorter); + return buf.join(''); +} +function serializeToString(node,buf,attributeSorter,isHTML){ + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; + isHTML = (htmlns === node.namespaceURI) ||isHTML + buf.push('<',nodeName); + if(attributeSorter){ + buf.sort.apply(attrs, attributeSorter); + } + for(var i=0;i'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + if(child){ + buf.push(child.data); + } + }else{ + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + } + buf.push(''); + }else{ + buf.push('/>'); + } + return null; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + return null; + case ATTRIBUTE_NODE: + return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push( ''); + case COMMENT_NODE: + return buf.push( ""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM "',sysid,'">'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return null; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( ""); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + return buf.push('??',node.nodeName); + } +} +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i','amp':'&','quot':'"','apos':"'"} + if(locator){ + domBuilder.setDocumentLocator(locator) + } + + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(/\/x?html?$/.test(mimeType)){ + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if(source){ + sax.parse(source,defaultNSMap,entityMap); + }else{ + sax.errorHandler.error("invalid document source"); + } + return domBuilder.document; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + } + errorHandler[key] = fn && function(msg){ + fn('[xmldom '+key+']\t'+msg+_locator(locator)); + }||function(){}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.document = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.document.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.document; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + if( attr.getOffset){ + position(attr.getOffset(1),attr) + } + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.document.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(this.currentElement && chars){ + if (this.cdata) { + var charNode = this.document.createCDATASection(chars); + this.currentElement.appendChild(charNode); + } else { + var charNode = this.document.createTextNode(chars); + this.currentElement.appendChild(charNode); + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.document.normalize(); + }, + setDocumentLocator:function (locator) { + if((this.locator = locator)){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.document.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, + + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, + + startDTD:function(name, publicId, systemId) { + var impl = this.document.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + log('[xmldom warning]\t'+error); + }, + error:function(error) { + log('[xmldom error]\t'+error); + throw error; + }, + fatalError:function(error) { + log('[xmldom fatalError]\t'+error); + throw error; + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } + return null; +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} + +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.document.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +}//appendChild and setAttributeNS are preformance key diff --git a/src/xmldom/sax.js b/src/xmldom/sax.js new file mode 100644 index 00000000..9be75bfa --- /dev/null +++ b/src/xmldom/sax.js @@ -0,0 +1,582 @@ +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\u203F-\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_S=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_V = 4;//attr value(no quot value only) +var S_E = 5;//attr value end and no space(quot end) +var S_S = 6;//(attr value end || tag end ) && (space offer) +var S_C = 7;//closed el + +function XMLReader(){ + +} + +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if(k in entityMap){ + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + if(end>start){ + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + } + function position(p,m){ + while(p>=lineEnd && (m = linePattern.exec(source))){ + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p-lineStart+1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.+(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; + + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + try{ + var tagStart = source.indexOf('<',start); + if(tagStart<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.document; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(tagStart>start){ + appendText(tagStart); + } + switch(source.charAt(tagStart+1)){ + case '/': + var end = source.indexOf('>',tagStart+3); + var tagName = source.substring(tagStart+2,end); + var config = parseStack.pop(); + var localNSMap = config.localNSMap; + if(config.tagName != tagName){ + errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); + } + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + end++; + break; + // end elment + case '?':// + locator&&position(tagStart); + end = parseInstruction(source,tagStart,domBuilder); + break; + case '!':// start){ + start = end; + }else{ + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart,start)+1); + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} + +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_S){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if(s === S_EQ){//equal + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + el.add(attrName,value,start-1); + s = S_E; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_V){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName,value,start); + //console.dir(el) + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_E + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + s = S_C; + el.closed = true; + case S_V: + case S_ATTR: + case S_ATTR_S: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") + } + break; + case ''://end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + break;//normal + case S_V://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_S: + if(s === S_ATTR_S){ + value = attrName; + } + if(s == S_V){ + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) + }else{ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + el.add(value,value,start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_S; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_S; + break; + case S_V: + var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value,start) + case S_E: + s = S_S; + break; + //case S_S: + //case S_EQ: + //case S_ATTR_S: + // void();break; + //case S_C: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_V:void();break; + case S_ATTR_S: + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + el.add(attrName,attrName,start); + start = p; + s = S_ATTR; + break; + case S_E: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_S: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_V; + start = p; + break; + case S_C: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } + p++; + } +} +/** + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function appendElement(el,domBuilder,parseStack){ + var tagName = el.tagName; + var localNSMap = null; + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/' + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix] + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for(prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + parseStack.push(el); + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} + + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = closeMap[tagName] = source.lastIndexOf('') + } + return pos',start+4); + //append comment source.substring(4,end)// + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/building-symbolic.svg b/data/icons/private/hicolor/16x16/apps/building-symbolic.svg new file mode 100644 index 00000000..0f25dfdd --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/building-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/cafe-symbolic.svg b/data/icons/private/hicolor/16x16/apps/cafe-symbolic.svg new file mode 100644 index 00000000..2e184f73 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/cafe-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/city-symbolic.svg b/data/icons/private/hicolor/16x16/apps/city-symbolic.svg new file mode 100644 index 00000000..049767e5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/city-symbolic.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/electric-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/electric-car-symbolic.svg new file mode 100644 index 00000000..9595a0ba --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/electric-car-symbolic.svg @@ -0,0 +1,390 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/explore-symbolic.svg b/data/icons/private/hicolor/16x16/apps/explore-symbolic.svg new file mode 100644 index 00000000..1336fa29 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/explore-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/fuel-symbolic.svg b/data/icons/private/hicolor/16x16/apps/fuel-symbolic.svg new file mode 100644 index 00000000..8f8f69ac --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/fuel-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/hospital-sign-symbolic.svg b/data/icons/private/hicolor/16x16/apps/hospital-sign-symbolic.svg new file mode 100644 index 00000000..6c862577 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/hospital-sign-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/hospital-symbolic.svg b/data/icons/private/hicolor/16x16/apps/hospital-symbolic.svg new file mode 100644 index 00000000..1a1055f0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/hospital-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg new file mode 100644 index 00000000..9779f9ad --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg new file mode 100644 index 00000000..135278f5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg new file mode 100644 index 00000000..a50bbc43 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg new file mode 100644 index 00000000..4d5a6b17 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg new file mode 100644 index 00000000..b51794c4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg new file mode 100644 index 00000000..f476455f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg new file mode 100644 index 00000000..ab3daf84 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/museum-symbolic.svg b/data/icons/private/hicolor/16x16/apps/museum-symbolic.svg new file mode 100644 index 00000000..6b975521 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/museum-symbolic.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg new file mode 100644 index 00000000..de9a2668 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg new file mode 100644 index 00000000..46f6ddd1 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg @@ -0,0 +1,43 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/parking-sign-symbolic.svg b/data/icons/private/hicolor/16x16/apps/parking-sign-symbolic.svg new file mode 100644 index 00000000..64b8a9f9 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/parking-sign-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/penguin-symbolic.svg b/data/icons/private/hicolor/16x16/apps/penguin-symbolic.svg new file mode 100644 index 00000000..f1a835f0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/penguin-symbolic.svg @@ -0,0 +1,394 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg new file mode 100644 index 00000000..dcc3f2da --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/photo-camera-symbolic.svg b/data/icons/private/hicolor/16x16/apps/photo-camera-symbolic.svg new file mode 100644 index 00000000..26a86f90 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/photo-camera-symbolic.svg @@ -0,0 +1,390 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/post-box-symbolic.svg b/data/icons/private/hicolor/16x16/apps/post-box-symbolic.svg new file mode 100644 index 00000000..8a1907ca --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/post-box-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/pub-symbolic.svg b/data/icons/private/hicolor/16x16/apps/pub-symbolic.svg new file mode 100644 index 00000000..137c0b5f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/pub-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/restaurant-symbolic.svg b/data/icons/private/hicolor/16x16/apps/restaurant-symbolic.svg new file mode 100644 index 00000000..f66dd1e6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/restaurant-symbolic.svg @@ -0,0 +1,404 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg new file mode 100644 index 00000000..0223d5f8 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg new file mode 100644 index 00000000..d9547d66 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg new file mode 100644 index 00000000..c511fe1c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg new file mode 100644 index 00000000..7317b867 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg new file mode 100644 index 00000000..961c35e0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg @@ -0,0 +1,30 @@ + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg new file mode 100644 index 00000000..ae2d69a6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg new file mode 100644 index 00000000..279639a4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg new file mode 100644 index 00000000..6984bd05 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg new file mode 100644 index 00000000..61184b56 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg new file mode 100644 index 00000000..a9c653c2 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg new file mode 100644 index 00000000..c39a3397 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg new file mode 100644 index 00000000..11b5cf0b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg new file mode 100644 index 00000000..05a49d52 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg new file mode 100644 index 00000000..76b863b3 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg new file mode 100644 index 00000000..ee275b5a --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/school-symbolic.svg b/data/icons/private/hicolor/16x16/apps/school-symbolic.svg new file mode 100644 index 00000000..1a3f92f6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/school-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/shopping-cart-symbolic.svg b/data/icons/private/hicolor/16x16/apps/shopping-cart-symbolic.svg new file mode 100644 index 00000000..489c4bea --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/shopping-cart-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg new file mode 100644 index 00000000..06abf130 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg @@ -0,0 +1,47 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/town-symbolic.svg b/data/icons/private/hicolor/16x16/apps/town-symbolic.svg new file mode 100644 index 00000000..1acd029b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/town-symbolic.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/tree-symbolic.svg b/data/icons/private/hicolor/16x16/apps/tree-symbolic.svg new file mode 100644 index 00000000..3c6e93e9 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/tree-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/video-camera-symbolic.svg b/data/icons/private/hicolor/16x16/apps/video-camera-symbolic.svg new file mode 100644 index 00000000..f1bc0fc7 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/video-camera-symbolic.svg @@ -0,0 +1,390 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg new file mode 100644 index 00000000..ae2fdd03 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg new file mode 100644 index 00000000..be789b79 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/data/icons/private/hicolor/24x24/apps/user-location-compass.png b/data/icons/private/hicolor/24x24/apps/user-location-compass.png new file mode 100644 index 00000000..d2f3c7d7 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location-compass.png differ diff --git a/data/icons/private/hicolor/24x24/apps/user-location.png b/data/icons/private/hicolor/24x24/apps/user-location.png new file mode 100644 index 00000000..833fd907 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location.png differ diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg new file mode 100644 index 00000000..3eecf0fe --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg new file mode 100644 index 00000000..e6ec05fd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg new file mode 100644 index 00000000..110fda85 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg new file mode 100644 index 00000000..c955b77d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg new file mode 100644 index 00000000..1c429d12 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg new file mode 100644 index 00000000..a1950490 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg new file mode 100644 index 00000000..3f4f0ea1 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg new file mode 100644 index 00000000..e78482f8 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg new file mode 100644 index 00000000..03c5744c --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg new file mode 100644 index 00000000..bb0886ba --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg new file mode 100644 index 00000000..3cfcbaae --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg new file mode 100644 index 00000000..ebbe0172 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg new file mode 100644 index 00000000..c5bcbf6a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg new file mode 100644 index 00000000..520dd2ab --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg new file mode 100644 index 00000000..73fa4e1a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg new file mode 100644 index 00000000..19f98821 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg new file mode 100644 index 00000000..b92d3e69 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg new file mode 100644 index 00000000..283cdfbc --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg new file mode 100644 index 00000000..eb93b7bd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg new file mode 100644 index 00000000..1178640b --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg new file mode 100644 index 00000000..37d46da9 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg new file mode 100644 index 00000000..deaa22df --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg new file mode 100644 index 00000000..0fc527c2 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg new file mode 100644 index 00000000..17893292 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg new file mode 100644 index 00000000..72d3cef4 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg new file mode 100644 index 00000000..da099f9d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/mark-location.png b/data/icons/private/hicolor/32x32/apps/mark-location.png new file mode 100644 index 00000000..1a34a63c Binary files /dev/null and b/data/icons/private/hicolor/32x32/apps/mark-location.png differ diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg new file mode 100644 index 00000000..3ecd81a5 --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg new file mode 100644 index 00000000..1986990c --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg @@ -0,0 +1,202 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg new file mode 100644 index 00000000..32ac0b74 --- /dev/null +++ b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg @@ -0,0 +1,28 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + diff --git a/data/maps-service.json b/data/maps-service.json new file mode 100644 index 00000000..01c654c7 --- /dev/null +++ b/data/maps-service.json @@ -0,0 +1,37 @@ +{ + "tileProviderInfo": { + "name": "Mapbox", + "url": "https://www.mapbox.com" + }, + "tiles": { + "street": { + "id": "osm.streets", + "name": "OpenStreetMap street tiles", + "license": "Map Data ODBL OpenStreetMap Contributors, Map Imagery CC-BY-SA 2.0 OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 256, + "uri_format": "https://tile.openstreetmap.org/#Z#/#X#/#Y#.png", + "max_connections": 2 + }, + + "print": { + "id": "osm.print", + "name": "OpenStreetMap street tiles for print", + "license": "Map Data ODBL OpenStreetMap Contributors, Map Imagery CC-BY-SA 2.0 OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 256, + "uri_format": "https://tile.openstreetmap.org/#Z#/#X#/#Y#.png", + "max_connections": 2 + } + }, + "graphHopperGeocode": { + "baseUrl": "https://graphhopper.com", + "attribution": "GraphHopper", + "attributionUrl": "https://graphhopper.com/", + "apiKey": "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP" + } +} diff --git a/data/media/maps-point-end-symbolic.svg b/data/media/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/media/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/media/maps-point-start-symbolic.svg b/data/media/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/media/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 00000000..2be4ee73 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,80 @@ +gnome.compile_resources( + app_id + '.data', + app_id + '.data.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir +) + +install_data( + 'maps-service.json', + install_dir: pkgdatadir +) + +desktop = app_id + '.desktop' + +desktop_file = custom_target('desktop-file', + input: desktop + '.in', + output: desktop, + install: true, + install_dir: join_paths(datadir, 'applications'), + command: [msgfmt, '--desktop', + '--template', '@INPUT@', '-d', po_dir, '-o', '@OUTPUT@', + '--keyword=X-Geoclue-Reason', '--keyword=Name', '--keyword=Comment', + '--keyword=Keywords' + ] +) + +install_data( + app_id + '.gschema.xml', + install_dir: join_paths(datadir, 'glib-2.0', 'schemas') +) + +appdata = app_id + '.appdata.xml' + +appdata_file = i18n.merge_file( + appdata, + input: appdata + '.in', + output: appdata, + po_dir: po_dir, + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +service_conf = configuration_data() +service_conf.set('PACKAGE_NAME', meson.project_name()) +service_conf.set('pkgdatadir', pkgdatadir) + +configure_file( + input: app_id + '.service.in', + output: app_id + '.service', + configuration: service_conf, + install: true, + install_dir: join_paths(datadir, 'dbus-1', 'services') +) + +desktop_file_validate = find_program('desktop-file-validate', required: false) +if desktop_file_validate.found() + test( + 'validate-desktop', + desktop_file_validate, + args: [ + desktop_file.full_path() + ] + ) +endif + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test( + 'validate-appdata', + appstream_util, + args: [ + 'validate-relax', + '--nonet', + appdata_file.full_path() + ] + ) +endif + +subdir('icons') \ No newline at end of file diff --git a/data/org.gnome.Maps.appdata.xml.in b/data/org.gnome.Maps.appdata.xml.in new file mode 100644 index 00000000..73a67b70 --- /dev/null +++ b/data/org.gnome.Maps.appdata.xml.in @@ -0,0 +1,270 @@ + + + org.gnome.Maps.desktop + CC0-1.0 + GPL-2.0-or-later + GNOME Maps + Find places around the world + +

    + Maps gives you quick access to maps all across the world. It allows you + to quickly find the place you’re looking for by searching for a city or + street, or locate a place to meet a friend. +

    +

    + Maps uses the collaborative OpenStreetMap database, made by hundreds of + thousands of people across the globe. +

    +
    + + org.gnome.Maps.desktop + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-main.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-route.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-pinpoint.png + + + + + +
      +
    • Use new GNOME style icons for search results
    • +
    • Show e-mail addresse for places when available
    • +
    • Show take-away availability for restaurants and similar places
    • +
    • Remove Facebook check-in support, as it's not supported by libgfbgraph anymore
    • +
    +
    + +
      +
    • Update donation and wiki web links in appdata
    • +
    +
    + +
      +
    • Fix regression when signing in for OSM editing
    • +
    +
    + +
      +
    • Fix crashes when no aerial tile definition is available
    • +
    • Fix cut-off text in place bubble in some translations
    • +
    +
    + +
      +
    • Fix a bug where unfavoring a place made it unselectable until after a restart
    • +
    • Use country code attribute from GraphHopper/Photon geocode results to improve +accuracy of address formatting among others
    • +
    +
    + +
      +
    • Redesigned place bubbles
    • +
    • Adaptive UI for the place bubbles on small screens
    • +
    • Show translated place names in user's language when available
    • +
    +
    + +
      +
    • Fix a bug resulting in writing a broken last view position on exit in some circumstances
    • +
    • Fix a bug preventing wrapping around at the date line with dark tiles
    • +
    • Fix a bug causing hanging in cases when dragging around route markers
    • +
    +
    + +
      +
    • Fix a bug where place details gets lost after searching again for the same place
    • +
    +
    + +
      Translation updates
    +
    + +
      +
    • Fix a race-condition bug in search-as-you-type resulting in out-of-sync search results in some circumstances
    • +
    • Fix updating missing details after editing a POI in OpenStreetMap
    • +
    +
    + + +
      +
    • Show error message in popover when a search request has failed
    • +
    • Fix exception on shutdown when unregistering DBus
    • +
    • Fix "no network" display to fit on smaller screens
    • +
    +
    +
    + + + +
      +
    • Initial adpative UI
    • +
    • Added night mode
    • +
    • Added support for hybrid aerial layer
    • +
    • Public transit plugin for South Africa (GoMetro)
    • +
    • Improved keyboard navigation in routing sidebar
    • +
    • Make more use of localized number formatting
    • +
    +
    +
    + + +
      +
    • Fix an issue where some search result gets the wrong level of name
    • +
    +
    +
    + + +
      +
    • Don't reset query points when routing fails (e.g. no public transit provider is available) to allow switching mode with the same query
    • +
    • Fix a bug not displaying tiles south of the equator when using --local command line option
    • +
    • Allow entering DMS coordinates without comma between latitude and logitude parts
    • +
    +
    +
    + + +
      +
    • Updated POI defintions for OpenStreetMap editing
    • +
    • Fix link to sign up for an OpenStreetMap account
    • +
    +
    +
    + + + +
      +
    • Initial support for public transit routing
    • +
    • Re-arrange context menu. Move "export as image" to hamburger menu
    • +
    • Avoid flickering the current location marker when changes
    • +
    +
    +
    + + +
      +
    • Added Malay translation
    • +
    +
    +
    + + +
      +
    • Fix generating Wikipedia URLs in some cases
    • +
    +
    +
    + + +
      +
    • Update tile size to 512 px when using --local option
    • +
    +
    +
    + + +
      +
    • Auto-complete "search-as-you-type"
    • +
    • Revamped sharing dialog
    • +
    • Support opening OpenStreetMap URLs
    • +
    • Faster startup
    • +
    • Remember map style last used when starting (street or aerial view)
    • +
    +
    +
    + + +
      +
    • Fix misaligned rendering of shape layers with the new map tiles
    • +
    +
    +
    + + +
      +
    • Remove some unnessesary instructions in turn-by-turn route searches
    • +
    +
    +
    + + +
      +
    • Updated Croatian translations
    • +
    +
    +
    + + + +
      +
    • Show live-updated thumbnails for the street/aerial layer switcher, instead of (outdated) hard-code thumbnails
    • +
    • Move app menu to the headerbar
    • +
    • Updated application icon
    • +
    +
    +
    +
    + + keyboard + pointing + touch + + + 360 + + + gnome-maps.desktop + + GNOME + The GNOME Project + https://wiki.gnome.org/Apps/Maps + https://gitlab.gnome.org/GNOME/gnome-maps/ + https://www.gnome.org/donate/ + gnome-maps-list@gnome.org + gnome-maps + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + + + workstation + mobile + +
    + + + diff --git a/data/org.gnome.Maps.data.gresource.xml b/data/org.gnome.Maps.data.gresource.xml new file mode 100644 index 00000000..5ad801fa --- /dev/null +++ b/data/org.gnome.Maps.data.gresource.xml @@ -0,0 +1,50 @@ + + + + ui/account-row.ui + ui/check-in-dialog.ui + ui/context-menu.ui + ui/export-view-dialog.ui + ui/favorites-popover.ui + ui/headerbar-left.ui + ui/headerbar-right.ui + ui/instruction-row.ui + ui/layers-popover.ui + ui/shape-layer-row.ui + ui/shape-layer-file-chooser.ui + ui/location-service-dialog.ui + ui/main-window.ui + ui/open-with-row.ui + ui/osm-account-dialog.ui + ui/osm-edit-address.ui + ui/osm-edit-dialog.ui + ui/osm-type-list-row.ui + ui/osm-type-search-entry.ui + ui/osm-type-popover.ui + ui/place-bar.ui + ui/place-buttons.ui + ui/place-dialog.ui + ui/place-entry.ui + ui/place-list-row.ui + ui/place-popover.ui + ui/place-view.ui + ui/route-entry.ui + ui/send-to-dialog.ui + ui/sidebar.ui + ui/social-place-more-results-row.ui + ui/social-place-row.ui + ui/transit-arrival-row.ui + ui/transit-itinerary-row.ui + ui/transit-leg-row.ui + ui/transit-more-row.ui + ui/transit-options-panel.ui + ui/transit-route-label.ui + ui/transit-stop-row.ui + ui/zoom-in-dialog.ui + gnome-maps.css + osm-types.json + + + ui/help-overlay.ui + + diff --git a/data/org.gnome.Maps.desktop.in b/data/org.gnome.Maps.desktop.in new file mode 100644 index 00000000..85a58a9b --- /dev/null +++ b/data/org.gnome.Maps.desktop.in @@ -0,0 +1,18 @@ +[Desktop Entry] +Version=1.0 +Name=Maps +Comment=A simple maps application +Exec=gapplication launch org.gnome.Maps %U +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=org.gnome.Maps +Terminal=false +Type=Application +StartupNotify=true +Categories=GNOME;GTK;Utility; +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Maps; +DBusActivatable=true +MimeType=application/vnd.geo+json;x-scheme-handler/geo;application/vnd.google-earth.kml+xml;application/gpx+xml; +X-Geoclue-Reason=Allows your location to be shown on the map. +# Translators: Do NOT translate or transliterate this text (these are enum types)! +X-Purism-FormFactor=Workstation;Mobile; diff --git a/data/org.gnome.Maps.gschema.xml b/data/org.gnome.Maps.gschema.xml new file mode 100644 index 00000000..cc32f780 --- /dev/null +++ b/data/org.gnome.Maps.gschema.xml @@ -0,0 +1,89 @@ + + + + + + + + + + [0.0,0.0] + last viewed location + Coordinates of last viewed location. + + + 0 + zoom + Zoom level + + + "MapsStreetSource" + Map type + The type of map to display (street, aerial, etc.) + + + [768, 600] + Window size + Window size (width and height). + + + [] + Window position + Window position (X and Y). + + + true + Window maximized + Window maximization state + + + 20 + Maximum number of search results + Maximum number of search results from geocode search. + + + 50 + Number of recent places to store + Number of recently visited places to store. + + + 5 + Number of recent routes to store + Number of recently visited routes to store. + + + "public" + Foursquare check-in privacy setting + Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private. + + + false + Foursquare check-in Facebook broadcasting + Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated with the Foursquare account. + + + false + Foursquare check-in Twitter broadcasting + Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated with the Foursquare account. + + + "" + OpenStreetMap username or e-mail address + Indicates if the user has signed in to edit OpenStreetMap data. + + + 'pedestrian' + Last used transportation type for routing + + + false + Night mode + Whether the application is in night mode. + + + false + Use hybrid aerial tiles + Whether aerial tiles should use hybrid style (with labels). + + + diff --git a/data/org.gnome.Maps.service.in b/data/org.gnome.Maps.service.in new file mode 100644 index 00000000..f8a854f6 --- /dev/null +++ b/data/org.gnome.Maps.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.Maps +Exec=@pkgdatadir@/org.gnome.Maps --gapplication-service diff --git a/data/osm-types.json b/data/osm-types.json new file mode 100644 index 00000000..f789d053 --- /dev/null +++ b/data/osm-types.json @@ -0,0 +1,19542 @@ +{ + "aeroway/aerodrome": { + "title": { + "C": "Airport", + "af": "Lughawe", + "am": "አየር ማረፊያ", + "ar": "مطار", + "ast": "Aeropuertu", + "bg": "Летище", + "bn": "বিমানবন্দর", + "bs": "Aerodrom", + "ca": "Aeroport", + "ckb": "فڕۆکەخانە", + "cs": "Letiště", + "da": "Lufthavn", + "de": "Flughafen", + "el": "Αεροδρόμιο", + "en-GB": "Airport", + "en": "Airport", + "eo": "Aerodromo", + "es": "Aeropuerto", + "et": "Lennujaam", + "eu": "Aireportu", + "fa": "فرودگاه", + "fi": "Lentokenttä", + "fr": "Aéroport", + "gl": "Aeroporto", + "he": "נמל תעופה", + "hr": "Zračna luka", + "hu": "Repülőtér", + "hy": "Օդանավակայան", + "id": "Bandar udara", + "is": "Flugvöllur", + "it": "Aeroporto", + "ja": "空港", + "kn": "ವಿಮಾನ ನಿಲ್ದಾಣ", + "ko": "공항", + "lt": "Oro uostas", + "lv": "Lidosta", + "mk": "Аеродром", + "nl": "Luchthaven", + "no": "Flyplass", + "pl": "Lotnisko", + "pt-BR": "Aeroporto ou aeródromo", + "pt": "Aeroporto", + "ro": "Aeroport", + "ru": "Аэропорт", + "sk": "Letisko", + "sl": "Letališče", + "sr": "Аеродром", + "sv": "Flygplats", + "ta": "விமானநிலையம்", + "te": "విమానాశ్రయం", + "tr": "Havaalanı", + "uk": "Аеропорт", + "vi": "Sân bay", + "yue": "飛機場", + "zh-CN": "机场", + "zh-HK": "機場", + "zh-TW": "機場", + "zh": "机场" + } + }, + "aeroway/apron": { + "title": { + "C": "Airport Apron", + "ar": "مواقف الطائرات", + "cs": "Odbavovací plocha", + "de": "Vorfeld", + "en": "Airport Apron", + "eo": "Aviadil-parkumejo", + "es": "Plataforma de estacionamiento de aeronaves", + "fa": "صحن فرودگاه", + "fi": "Lentokentän asemataso", + "fr": "Aire de stationnement d'aéroport", + "gl": "Estacionamento aéreo", + "he": "רחבת חניית מטוסים", + "hu": "Forgalmi előtér", + "it": "Parcheggio Aeromobili", + "ja": "駐機場", + "ko": "공항 에이프런", + "mk": "Авионска постојка", + "nl": "Platform (vliegveld)", + "pl": "Płyta postojowa samolotów", + "pt-BR": "Plataforma de estacionamento", + "pt": "Plataforma de estacionamento", + "sk": "Odbavovacia plocha", + "sr": "Авио-прилаз", + "sv": "Parkering för flygplan (Apron)", + "tr": "Havaalanı Apronu", + "uk": "Перон", + "vi": "Thềm đế Máy bay", + "zh-CN": "机场停机坪", + "zh-TW": "機場停機坪" + } + }, + "aeroway/gate": { + "title": { + "C": "Airport Gate", + "ar": "بوابة مطار", + "ast": "Puerta de terminal", + "ca": "Porta d'aeroport", + "cs": "Letištní gate", + "da": "Lufthavnsgate", + "de": "Flugsteig", + "el": "Πύλη Αεροδρομίου", + "en-GB": "Airport Gate", + "en": "Airport Gate", + "eo": "Aerodroma enirejo", + "es": "Puerta de embarque", + "eu": "Aireportuko ate", + "fa": "دروازه فرودگاه", + "fi": "Lähtöportti", + "fr": "Porte d'embarquement", + "gl": "Porta de embarque", + "he": "שער נמל תעופה", + "hu": "Repülőtéri kapu", + "id": "Gerbang Bandara", + "is": "Flugvallarhlið", + "it": "Gate aeroportuale", + "ja": "空港ゲート", + "ko": "공항 게이트", + "lv": "Lidostas vārti", + "mk": "Аеродромска порта", + "nl": "Luchthaven-gate", + "no": "Flyplassgate", + "pl": "Bramka na lotnisku", + "pt-BR": "Portão de embarque", + "pt": "Porta de embarque / desembarque", + "ru": "Выход на посадку", + "sk": "Letisková brána", + "sl": "Letališka vrata", + "sr": "Излаз за укрцавање", + "sv": "Gate", + "ta": "விமான நிலைய நுழைவாயில்", + "tr": "Kapı", + "uk": "Вихід на посадку", + "vi": "Cổng Sân bay", + "zh-CN": "登机口", + "zh-HK": "登機閘", + "zh-TW": "登機閘門" + } + }, + "aeroway/hangar": { + "title": { + "C": "Hangar", + "af": "Loods", + "ar": "حظيرة طائرات", + "ast": "Hangar", + "bg": "Хангар", + "bs": "Hangar", + "ca": "Hàngar", + "cs": "Hangár", + "da": "Hangar", + "de": "Hangar", + "el": "Υπόστεγο Αεροσκαφών", + "en-GB": "Hangar", + "en": "Hangar", + "eo": "Hangaro", + "es": "Hangar", + "et": "Angaar", + "fa": "آشیانه هواپیما (بزرگ / فرودگاه)", + "fi": "Lentokonehalli", + "fr": "Hangar", + "gl": "Hangar", + "he": "הנגר", + "hr": "Hangar", + "hu": "Hangár", + "id": "Hanggar", + "is": "Flugskýli", + "it": "Hangar", + "ja": "航空機格納庫", + "ko": "격납고", + "lt": "Angaras", + "lv": "Angārs", + "mk": "Хангар", + "nl": "Hangar", + "no": "Hangar", + "pl": "Hangar", + "pt-BR": "Hangar", + "pt": "Hangar", + "ru": "Ангар", + "sk": "Hangár", + "sl": "Hangar", + "sr": "Хангар", + "sv": "Hangar", + "ta": "விமானங்கள் நிறுத்துமிடம்", + "tr": "Hangar", + "uk": "Ангар", + "vi": "Nhà Máy bay", + "yue": "飛機庫", + "zh-CN": "飞机库", + "zh-HK": "飛機庫", + "zh-TW": "機庫", + "zh": "机库" + } + }, + "aeroway/helipad": { + "title": { + "C": "Helipad", + "af": "Helipad", + "ar": "مهبط الهليكوبتر", + "ast": "Helipuertu", + "bg": "Хеликоптерна площадка", + "bn": "হেলিপ্যাড", + "bs": "Heliodrom", + "ca": "Heliport", + "cs": "Heliport", + "da": "Helikopterlandingsplads", + "de": "Hubschrauberlandeplatz", + "el": "Ελικοδρόμιο", + "en-GB": "Helipad", + "en": "Helipad", + "eo": "Surteriĝejo helikoptera", + "es": "Helipuerto", + "et": "Kopteriväljak", + "fa": "محل فرود هلی کوپتر", + "fi": "Helikopterikenttä", + "fr": "Héliport", + "gl": "Heliporto", + "he": "מנחת מסוקים", + "hr": "Heliodrom", + "hu": "Helikopter-leszállóhely", + "hy": "Ուղաթիռային հրապարակ", + "id": "Helipad", + "is": "Þyrlupallur", + "it": "Elisuperficie", + "ja": "ヘリパッド", + "ko": "헬기 착륙장", + "lt": "Sraigtasparnių aikštelė", + "lv": "Helikopteru nosēšanās laukums", + "mk": "Хеликоптерско слетувалиште", + "nl": "Helipad", + "no": "Helikopterlandingsplass", + "pl": "Lądowisko dla helikopterów", + "pt-BR": "Heliponto", + "pt": "Heliponto", + "ru": "Вертолётная площадка", + "sk": "Heliport", + "sl": "Heliodrom", + "sr": "Хелиодром", + "sv": "Helikopterplatta", + "ta": "சிறு விமானம் இறங்கும் தளம்", + "tr": "Helikopter Pisti", + "uk": "Вертолітний майданчик", + "vi": "Sân bay Trực thăng", + "yue": "直升機坪", + "zh-CN": "直升机场", + "zh-HK": "直升機坪", + "zh-TW": "直昇機坪", + "zh": "直升机场" + } + }, + "aeroway/holding_position": { + "title": { + "C": "Aircraft Holding Position", + "ar": "مواضع انتظار طائرات", + "cs": "vyčkávací místo letadla", + "de": "Rollhalteort", + "en": "Aircraft Holding Position", + "eo": "Aviadila atendejo", + "es": "Posición de espera de aviones", + "fa": "موقعیت توقف و انتظار هواپیما", + "fi": "Lentokoneen pysähtymiskohta", + "fr": "Point d’attente avion", + "gl": "Punto de espera de avións", + "he": "תבנית ריתוק כלי טיס", + "hu": "Légi jármű várakozási pozíciója", + "it": "Circuito di attesa per aeromobili", + "ja": "航空機の停止位置", + "mk": "Чекална положба на леталото", + "nl": "Vliegtuigwachtplaats", + "pl": "Punkt oczekiwania dla samolotu", + "pt-BR": "Posição de retenção de aeronaves", + "pt": "Ponto de espera de avião", + "sv": "Väntplats för flygplan", + "tr": "Hava aracı tutma pozisyonu", + "uk": "Стоп-лінія", + "vi": "Vị trí Chờ đợi dành cho Máy bay", + "zh-CN": "跑道等待位置", + "zh-TW": "飛機停靠點" + } + }, + "aeroway/jet_bridge": { + "title": { + "C": "Jetway", + "ar": "جسر إركاب", + "cs": "Nástupní most", + "de": "Fluggastbrücke", + "en": "Jetway", + "eo": "Ponto flugstacio - aviadilo", + "es": "Pasarela de acceso a aeronaves", + "fa": "راه هوایی", + "fi": "Matkustajasilta", + "fr": "Passerelle aéroportuaire", + "gl": "Ponte de embarque", + "he": "גשר עלייה למטוס", + "hu": "Utashíd", + "it": "Manicotto d’imbarco", + "ja": "ボーディング・ブリッジ", + "ko": "탑승교", + "mk": "Авионски мост", + "nl": "Vliegtuigslurf", + "pl": "Rękaw lotniczy", + "pt-BR": "Jetway", + "pt": "Ponte de embarque", + "sk": "Nástupný tunel", + "sv": "Ombordstigningsbrygga", + "tr": "Jet yolu", + "uk": "Посадковий рукав", + "vi": "Cầu Hành khách", + "zh-CN": "登机廊桥", + "zh-TW": "空橋" + } + }, + "aeroway/parking_position": { + "title": { + "C": "Aircraft Parking Position", + "ar": "موضع وقوف الطائرات", + "cs": "parkovací místo letadla", + "de": "Flugzeugparkposition", + "el": "Θέση Στάθμευσης Αεροσκάφους", + "en": "Aircraft Parking Position", + "eo": "Aviadil-parkumejo (detala pozicio)", + "es": "Posición de estacionamiento de aviones", + "fa": "محل قرارگیری پارکینگ هواپیما", + "fi": "Lentokoneen pysäköintikohta", + "fr": "Voie de garage pour avion", + "gl": "Estacionamento de transportes aéreos", + "he": "מיקום חניית כלי טיס", + "hu": "Légi jármű parkolási pozíciója", + "it": "Posizione di parcheggio per aeromobili", + "ja": "駐機ポイント(空港)", + "mk": "Паркирна положба на леталото", + "nl": "Vliegtuigparkeerplaats", + "no": "Luftfartøy Parkering Posisjon", + "pl": "Miejsce postoju samolotu", + "pt-BR": "Posição de estacionamento de aeronaves", + "pt": "Área de estacionamento de avião", + "sv": "Parkeringsplats för flygplan", + "tr": "Havaaracı Park Pozisyonu", + "uk": "Місце стоянки літака", + "vi": "Chỗ Đậu Máy bay", + "zh-CN": "停机位", + "zh-TW": "停機坪" + } + }, + "aeroway/runway": { + "title": { + "C": "Runway", + "af": "Aanloopbaan", + "ar": "مدرج المطار", + "ast": "Pista", + "bg": "Летателна писта", + "bs": "Pista", + "ca": "Pista d'enlairament/aterratge", + "cs": "Vzletová a přistávací dráha", + "da": "Landingsbane", + "de": "Start- und Landebahn", + "dv": "އެއާރޕޯޓް ރަންވޭ", + "el": "Διάδρομος Αεροδρομίου", + "en-GB": "Runway", + "en": "Runway", + "eo": "Aviokurejo", + "es": "Pista de aterrizaje", + "et": "Lennurada", + "fa": "باند فرودگاه", + "fi": "Kiitorata", + "fr": "Piste d’atterrissage", + "gl": "Pista de aeroporto", + "he": "מסלול המראה", + "hr": "Uzletno-sletna staza", + "hu": "Kifutópálya", + "id": "Landas pacu", + "is": "Flugbraut", + "it": "Pista di decollo/atterraggio", + "ja": "滑走路", + "kn": "ಓಡುದಾರಿ", + "ko": "활주로", + "lt": "Pakilimo takas", + "lv": "Skrejceļš", + "mk": "Писта", + "nl": "Startbaan", + "no": "Rullebane", + "pl": "Pas startowy", + "pt-BR": "Pista de pouso e decolagem", + "pt": "Pista de aterragem e descolagem", + "ru": "Взлётная полоса", + "sk": "Vzletová dráha", + "sl": "Vzletno-pristajalna steza", + "so": "Gegada diyaaradaha", + "sr": "Узлетиште", + "sv": "Start- och landningsbana", + "ta": "ஓடுதளம்", + "tr": "Uçak Pisti", + "uk": "Злітно-посадкова смуга", + "vi": "Đường băng", + "yue": "跑道", + "zh-CN": "机场跑道", + "zh-HK": "跑道", + "zh-TW": "機場跑道", + "zh": "跑道" + } + }, + "aeroway/spaceport": { + "title": { + "C": "Spaceport", + "ar": "ميناء فضائي", + "cs": "kosmodrom", + "da": "Rumhavn", + "de": "Weltraumbahnhof", + "el": "Διαστημοδρόμιο", + "en": "Spaceport", + "eo": "Kosmodromo", + "es": "Puerto espacial", + "et": "Kosmodroom", + "fa": "پایگاه فضایی", + "fi": "Laukaisukeskus", + "fr": "Centre spatial", + "gl": "Cosmódromo", + "he": "מתקן שיגור", + "hu": "Űrrepülőtér", + "it": "Spazioporto", + "ja": "宇宙船基地", + "ko": "우주 공항", + "mk": "Космодром", + "nl": "Ruimtehaven", + "no": "Rakettbase", + "pl": "Port kosmiczny", + "pt-BR": "Base de lançamento espacial", + "pt": "Cosmódromo", + "ru": "Космодром", + "sr": "Свемирска лука", + "sv": "Rymdbas", + "tr": "Uzay İstasyonu", + "uk": "Космопорт", + "vi": "Sân bay Vũ trụ", + "zh-CN": "航天港", + "zh-TW": "太空發射中心" + } + }, + "aeroway/taxiway": { + "title": { + "C": "Taxiway", + "af": "Rolbaan", + "ar": "طريق للمدرج", + "ast": "Cai de rodaxe", + "bg": "Рольожка", + "bs": "Staza za vožnju", + "ca": "Plataforma de rodada", + "cs": "Pojezdová dráha", + "da": "Taxiway", + "de": "Rollbahn", + "el": "Τροχιόδρομος", + "en-GB": "Taxiway", + "en": "Taxiway", + "eo": "Aŭtokur-strato", + "es": "Calle de rodaje", + "et": "Ruleerimistee", + "fa": "خزشراه", + "fi": "Rullaustie", + "fr": "Taxiway", + "gl": "Pista de rodaxe", + "he": "מסלול הסעה", + "hr": "Rulnica", + "hu": "Gurulóút", + "id": "Landas hubung", + "is": "Akbraut flugvéla", + "it": "Pista di rullaggio", + "ja": "航空機誘導路", + "ko": "유도로", + "lv": "Manevrēšanas ceļš", + "mk": "Воздухопловен приод", + "nl": "Taxibaan", + "no": "Taxibane", + "pl": "Droga kołowania", + "pt-BR": "Pista de taxiamento", + "pt": "Via de circulação", + "ru": "Рулёжная дорожка", + "sk": "Rolovacia dráha", + "sl": "Vozna steza", + "sr": "Полетно-слетна стаза", + "sv": "Taxibana", + "tr": "Taksi Yolu", + "uk": "Руліжна доріжка", + "vi": "Đường lăn", + "yue": "滑行道", + "zh-CN": "滑行道", + "zh-HK": "滑行道", + "zh-TW": "滑行道", + "zh": "滑行道" + } + }, + "aeroway/terminal": { + "title": { + "C": "Airport Terminal", + "ar": "صالة مطار", + "ast": "Terminal d'aeropuertu", + "ca": "Terminal d'aeroport", + "cs": "Letištní terminál", + "da": "Lufthavnsterminal", + "de": "Flughafenterminal", + "dv": "އެއާރޕޯޓް ގިމަތަ", + "el": "Σταθμός Αεροναυτιλίας", + "en-GB": "Airport Terminal", + "en": "Airport Terminal", + "eo": "Flugstacio", + "es": "Terminal de aeropuerto", + "et": "Lennuterminal", + "eu": "Aireportuko Terminal", + "fa": "پایانه فرودگاه", + "fi": "Lentokenttäterminaali", + "fr": "Terminal d'aéroport", + "gl": "Terminal de aeroporto", + "he": "טרמינל שדה תעופה", + "hu": "Repülőtéri terminál", + "is": "Flugstöð", + "it": "Terminal aeroportuale", + "ja": "空港ターミナル", + "ko": "공항 터미널", + "lv": "Lidostas Terminālis", + "mk": "Аеродромски терминал", + "nl": "Luchthaventerminal", + "no": "Flyplassterminal", + "pl": "Terminal pasażerski", + "pt-BR": "Terminal de aeroporto", + "pt": "Terminal de aeroporto", + "ru": "Терминал аэропорта", + "sk": "Letiskový termnál", + "sl": "Letališki terminal", + "so": "Gagida Dayaaradeed", + "sr": "Аеродромски терминал", + "sv": "Flygterminal", + "tr": "Terminal", + "uk": "Термінал", + "vi": "Ga Sân bay", + "yue": "機場大樓", + "zh-CN": "航站楼", + "zh-HK": "機場客運大樓", + "zh-TW": "機場航廈" + } + }, + "aeroway/windsock": { + "title": { + "C": "Windsock", + "ar": "كم الريح", + "cs": "větrný rukáv", + "de": "Windsack", + "en": "Windsock", + "eo": "Ventmaniko", + "es": "Manga de viento", + "et": "Tuulekott", + "fa": "بادنمای کیسه‌ای", + "fi": "Tuulisukka", + "fr": "Manche à air", + "gl": "Manga de vento", + "he": "שרוול רוח", + "hu": "Szélzsák", + "it": "Manica a vento", + "ja": "吹流し", + "mk": "Ветроказен ракав", + "nl": "Windzak", + "no": "Vindpølse", + "pl": "Rękaw (wiatrowskaz)", + "pt-BR": "Biruta", + "pt": "Manga de vento", + "sk": "Veterný rukáv", + "sr": "Ветроказ", + "sv": "Vindstrut", + "tr": "Rüzgâr hortumu", + "uk": "Вітровказ", + "vi": "Ống gió", + "zh-CN": "风向袋", + "zh-TW": "風向袋" + } + }, + "amenity/bus_station": { + "title": { + "C": "Bus Station / Terminal", + "am": "አውቶቡስ መናኃሪያ", + "ar": "محطة حافلات", + "ast": "Estación d'autobuses / Terminal", + "ca": "Estació d'autobusos", + "cs": "Autobusové nádraží / terminál", + "da": "Busstation/rutebilstation", + "de": "Busbahnhof / Busterminal", + "el": "Τερματικός Σταθμός Λεωφορείου", + "en-GB": "Bus Station / Terminal", + "en": "Bus Station / Terminal", + "eo": "Aŭtobus-stacio", + "es": "Estación / Terminal de bus", + "eu": "Autobus geltoki / Terminal", + "fa": "پایانه اتوبوس / ترمینال", + "fi": "Linja-autoasema/-terminaali", + "fr": "Gare routière", + "gl": "Estación de autobuses", + "he": "תחנת אוטובוס", + "hr": "Autobusni kolodvor", + "hu": "Buszpályaudvar", + "id": "Stasiun Bus / Terminal", + "is": "Strætisvagnastöð / Umferðarmiðstöð", + "it": "Stazione /Terminal degli autobus", + "ja": "バスターミナル(旧:単独)", + "ko": "버스 터미널", + "lv": "Autobusu pietura / Terminālis", + "mk": "Автобуска станица / терминал", + "nl": "Busstation", + "no": "Busstasjon/-terminal", + "pl": "Dworzec autobusowy", + "pt-BR": "Terminal / Estação de ônibus", + "pt": "Estação / Terminal de autocarros", + "ru": "Автобусная станция/терминал", + "sk": "Autobusová zastávka / Terminál", + "sl": "Avtobusna postaja / Terminal", + "sq": "Stacioni i Autobusave", + "sv": "Busstation / Bussterminal", + "ta": "பேருந்து நிலையம் / முனையம்", + "tr": "Otobüs Durağı / Terminali", + "uk": "Автостанція/Термінал", + "vi": "Ga Xe buýt", + "yue": "巴士總站", + "zh-CN": "公交车站 / 枢纽站", + "zh-HK": "巴士總站", + "zh-TW": "客運站" + } + }, + "amenity/coworking_space": { + "title": { + "C": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Sdílený pracovní prostor", + "da": "Kontorfællesskab", + "de": "Coworking-Räumlichkeiten", + "el": "Χώρος Συνεργατών", + "en-GB": "Coworking Space", + "en": "Coworking Space", + "eo": "Loko por samloka laborado (ang. coworking)", + "es": "Espacio de trabajo compartido", + "et": "Ühiskasutatavad tööruumid", + "eu": "Coworking espazioa", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de bureaux partagés, coworking", + "gl": "Espacio de cotraballo", + "he": "מתחם עבודה שיתופי", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Spazio di Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "mk": "Споделен работен простор", + "nl": "Coworking-kantoor", + "no": "Medarbeider Rom", + "pl": "Coworking", + "pt-BR": "Espaço de Coworking", + "pt": "Espaço de trabalho partilhado", + "ru": "Коворкинг", + "sk": "Priestory pre coworking", + "sl": "Prostor za sodelanje", + "sr": "Заједнички радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間" + } + }, + "amenity/embassy": { + "title": { + "C": "Embassy", + "af": "Ambassade", + "am": "ኤምባሲ", + "ar": "سفارة", + "ast": "Embaxada", + "bg": "Посолство", + "bn": "দুতাবাস", + "bs": "Ambasada", + "ca": "Ambaixada", + "cs": "Velvyslanectví", + "da": "Ambassade", + "de": "Botschaft", + "el": "Πρεσβεία", + "en-GB": "Embassy", + "en": "Embassy", + "eo": "Ambasadejo", + "es": "Embajada", + "et": "Saatkond", + "eu": "Enbaxada", + "fa": "سفارت خانه", + "fi": "Suurlähetystö", + "fr": "Ambassade", + "gl": "Embaixada", + "he": "שגרירות", + "hr": "Ambasada", + "hu": "Külképviselet", + "id": "Kedutaan besar", + "is": "Sendiráð", + "it": "Ambasciata", + "ja": "大使館", + "kn": "ರಾಯಭಾರ", + "ko": "대사관", + "lt": "Ambasada", + "lv": "Vēstniecība", + "mk": "Амбасада", + "ms": "Kedutaan", + "nl": "Ambassade", + "no": "Ambassade", + "pl": "Ambasada/konsulat", + "pt-BR": "Embaixada", + "pt": "Embaixada", + "ro": "Ambasadă", + "ru": "Посольство", + "sk": "Veľvyslanectvo", + "sl": "Veleposlaništvo", + "sr": "Амбасада", + "sv": "Ambassad", + "ta": "தூதரகம்", + "tr": "Büyükelçilik", + "uk": "Амбасада", + "vi": "Tòa đại sứ", + "yue": "大使館", + "zh-CN": "使馆", + "zh-HK": "大使館", + "zh-TW": "使館", + "zh": "使馆" + } + }, + "amenity/ferry_terminal": { + "title": { + "C": "Ferry Terminal", + "ar": "محطة الركاب", + "cs": "Terminál přívozu/trajektu", + "da": "Færgeterminal", + "de": "Schiffsanleger", + "el": "Σταθμός Επιβατών Προθμείου", + "en": "Ferry Terminal", + "eo": "Pramstacio", + "es": "Terminal de ferry", + "fa": "ترمینال کشتی", + "fi": "Laivaterminaali", + "fr": "Terminal de ferry", + "gl": "Terminal de transbordadores", + "he": "מסוף מעבורת", + "hu": "Kompkikötő", + "id": "Pelabuhan Feri", + "it": "Terminal Traghetti", + "ja": "フェリー乗り場", + "ko": "페리 터미널", + "mk": "Траектен терминал", + "nl": "Veerbootterminal", + "pl": "Terminal promowy", + "pt-BR": "Terminal da balsa", + "pt": "Terminal de ferry", + "ru": "Причал для паромов", + "sk": "Trajektový terminál", + "sr": "Терминал за трајект", + "sv": "Färjeterminal", + "tr": "Feribot Terminali", + "uk": "Поромний термінал", + "vi": "Nhà ga Phà", + "zh-CN": "轮渡码头", + "zh-TW": "渡輪碼頭" + } + }, + "amenity/nursing_home": { + "title": { + "C": "Nursing Home", + "ar": "دار التمريض", + "ca": "Llar d'avis", + "cs": "Domov pro seniory/pečovatelský ústav", + "da": "Plejehjem", + "de": "Pflegeheim", + "el": "Κλινική", + "en-GB": "Nursing Home", + "en": "Nursing Home", + "eo": "Domo de permanenta zorgado", + "es": "Residencia de ancianos", + "et": "Hoolduskodu", + "fa": "آسایشگاه", + "fi": "Hoitokoti", + "fr": "Maison de repos", + "gl": "Residencia de anciáns", + "he": "בית אבות", + "hu": "Ápolóotthon", + "is": "Hjúkrunarheimili", + "it": "Residenza Sanitaria Assistenziale (RSA)", + "ja": "介護施設", + "ko": "요양원", + "mk": "Старечки дом", + "nl": "Verpleeghuis", + "no": "Gamlehjem", + "pl": "Dom spokojnej starości", + "pt-BR": "Casa de Repouso", + "pt": "Centro Geriátrico", + "ru": "Дом престарелых/Дом инвалидов (устаревший тег)", + "sk": "Ošetrovateľské centum", + "sl": "Dom za bolniško nego", + "sr": "Старачки дом", + "sv": "Vårdhem", + "tr": "Bakım Evi", + "uk": "Будинок престарілих", + "vi": "Viện Dưỡng lão", + "zh-CN": "疗养院", + "zh-HK": "護養院", + "zh-TW": "養老院" + } + }, + "amenity/recycling": { + "title": { + "C": "Recycling Container", + "ar": "إعادة التدوير", + "ca": "Reciclatge", + "cs": "Recyklace", + "de": "Recycling", + "el": "Ανακύκλωση", + "en": "Recycling", + "eo": "Recikligejo", + "es": "Reciclaje", + "eu": "Birziklatze", + "fa": "بازیافت", + "fi": "Kierrätys", + "fr": "Point de recyclage", + "gl": "Reciclaxe", + "he": "מיחזור", + "hr": "Recikliranje", + "hu": "Szelektív hulladékgyűjtő", + "is": "Endurvinnsla", + "it": "Riciclaggio", + "ja": "リサイクル施設", + "ko": "재활용", + "mk": "Рециклажа", + "nl": "Recycling", + "no": "Resirkulering", + "pl": "Przetwarzanie odpadów", + "pt-BR": "Reciclagem", + "pt": "Reciclagem", + "ru": "Вторичное сырьё", + "sk": "Recyklovanie", + "sl": "Recikliranje", + "sr": "Рециклирање", + "sv": "Återvinning", + "tr": "Geri Dönüşüm", + "uk": "Переробка вторсировини", + "vi": "Tái chế", + "zh-CN": "资源回收设施", + "zh-HK": "回收設施", + "zh-TW": "回收" + } + }, + "amenity/animal_boarding": { + "title": { + "C": "Animal Boarding Facility", + "ar": "منشأة رعاية حيوانات", + "ast": "Instalación d'embarque d'animales", + "ca": "Instal·lació d'embarcament d'animals", + "cs": "Hotel pro zvířata", + "da": "Dyrepension", + "de": "Tierpension", + "el": "Επιθεώρηση Ζώων", + "en-GB": "Animal Boarding Facility", + "en": "Animal Boarding Facility", + "eo": "Hotelo (prizorgejo) por hejmbestoj", + "es": "Alojamiento de animales", + "fa": "امکانات پانسیون حیوانات", + "fi": "Lemmikkihoitola", + "fr": "Plateforme de chargement d'animaux", + "gl": "Aloxamento de animais", + "he": "פנסיון", + "hu": "Állatpanzió", + "is": "Dýrahótel", + "it": "Pensione per animali", + "ja": "ペットホテル", + "ko": "동물 기숙 시설", + "mk": "Престојувалиште за животни", + "nl": "Dierenpension", + "pl": "Hotel dla zwierząt", + "pt-BR": "Hotel para animais", + "pt": "Hotel para animais", + "ru": "Передержка животных", + "sk": "Opatrovanie zvierat", + "sl": "Živalski hotel", + "sv": "Djurhotell", + "tr": "Yatılı Hayvan Bakım Yeri", + "uk": "Готель для тварин", + "vi": "Khách sạn Thú cưng", + "zh-CN": "动物寄养机构", + "zh-HK": "寵物酒店", + "zh-TW": "寵物度假村" + } + }, + "amenity/animal_breeding": { + "title": { + "C": "Animal Breeding Facility", + "ar": "منشأة تربية وبيع حيوانات", + "ast": "Instalación d'alimentación d'animales", + "ca": "Instal·lació de reproducció d'animals", + "cs": "Chovná stanice", + "da": "Dyreforsøgsklinik", + "de": "Tierzucht", + "el": "Εκτροφείο", + "en-GB": "Animal Breeding Facility", + "en": "Animal Breeding Facility", + "eo": "Bredejo", + "es": "Criadero de animales", + "fa": "امکانات پرورش حیوانات", + "fi": "Eläinten ruokintapaikka", + "fr": "Installation d'élevage d'animaux", + "gl": "Granxa de animais", + "he": "מתקן לגידול לבעלי חיים", + "hu": "Állattenyésztő", + "is": "Dýraræktun", + "it": "Allevamento", + "ja": "動物繁殖施設", + "ko": "동물 사육 시설", + "mk": "Размножувалиште на животни", + "nl": "Fokkerij", + "pl": "Hodowla zwierząt", + "pt-BR": "Estabelecimento para reprodução de animais", + "pt": "Instalação para reprodução de animais", + "ru": "Питомник", + "sk": "Chovateľská stanica", + "sl": "Središče za vzrejo živali", + "sv": "Djuruppfödning", + "tr": "Hayvan Islah Yeri", + "uk": "Розплідник тварин", + "vi": "Trại Nuôi Thú", + "zh-CN": "动物饲养繁育机构", + "zh-HK": "動物繁殖場", + "zh-TW": "動物繁殖場" + } + }, + "amenity/animal_shelter": { + "title": { + "C": "Animal Shelter", + "ar": "مأوى حيوانات", + "ast": "Refuxu d'animales", + "ca": "Refugi d'animals", + "cs": "Zvířecí útulek", + "da": "Dyrehjem", + "de": "Tierheim", + "el": "Καταφύγιο Ζώων", + "en-GB": "Animal Shelter", + "en": "Animal Shelter", + "eo": "Azilo por bestoj", + "es": "Refugio de animales", + "fa": "پناهگاه حیوانات", + "fi": "Eläinhoitola", + "fr": "Refuge animalier", + "gl": "Abeiro de animais", + "he": "בית מחסה לחיות מחמד", + "hu": "Állatmenhely", + "is": "Dýraathvarf", + "it": "Rifugio per animali", + "ja": "動物保護施設", + "ko": "동물 보호소", + "lt": "Gyvūnų prieglauda", + "lv": "Dzīvnieku patversme", + "mk": "Засолниште за животни", + "nl": "Dierenasiel", + "no": "Dyrehjem", + "pl": "Schronisko dla zwierząt", + "pt-BR": "Abrigo de animais", + "pt": "Abrigo para animais", + "ru": "Приют для животных", + "sk": "Útulok pre zvieratá", + "sl": "Zavetišče za živali", + "sr": "Азил за животиње", + "sv": "Djurhem", + "tr": "Hayvan Barinağı", + "uk": "Притулок для тварин", + "vi": "Trạm Cứu hộ Thú cưng", + "zh-CN": "动物收容救助所", + "zh-HK": "動物收容中心", + "zh-TW": "動物收容中心" + } + }, + "amenity/arts_centre": { + "title": { + "C": "Arts Center", + "ar": "مركز فنون", + "ast": "Centru d'arte", + "bn": "শিল্প কেন্দ্র", + "bs": "Centar za umjetnost", + "ca": "Centre artístic", + "cs": "Umělecké centrum", + "da": "Kunstcenter", + "de": "Kunstzentrum", + "el": "Κέντρο Καλών Τεχνών", + "en-AU": "Arts Centre", + "en-GB": "Arts Centre", + "en": "Arts Center", + "eo": "Belart-centro", + "es": "Centro de Arte", + "et": "Kunstide keskus", + "eu": "Arte Zentro", + "fa": "مرکز هنری", + "fi": "Taidekeskus", + "fr": "Centre artistique et culturel", + "gl": "Centro de arte", + "he": "מרכז אומנויות", + "hr": "Umjetnički paviljon", + "hu": "Művészeti központ", + "id": "Pusat Kesenian", + "is": "Listamiðstöð", + "it": "Centro Culturale", + "ja": "アートセンター", + "ko": "아트 센터", + "lt": "Menų centras", + "lv": "Mākslas Centrs", + "mk": "Дом на уметноста", + "nl": "Cultureel centrum", + "no": "Kunst Senter", + "pl": "Centrum artystyczne", + "pt-BR": "Centro cultural", + "pt": "Centro de artes", + "ro": "Centru de Artă", + "ru": "Центр Искусств", + "sk": "Galéria umenia", + "sl": "Umetniško središče", + "sr": "Уметнички центар", + "sv": "Konstcenter", + "ta": "கலையரங்கம்", + "tr": "Sanat Merkezi", + "uk": "Мистецький центр", + "vi": "Trung tâm Nghệ thuật", + "yue": "美術館", + "zh-CN": "艺术中心", + "zh-HK": "美術館", + "zh-TW": "藝文中心" + } + }, + "amenity/atm": { + "title": { + "C": "ATM", + "af": "ATM", + "ar": "صراف آلي", + "ast": "Caxeru automáticu", + "bg": "Банкомат", + "bn": "এটিএম", + "bs": "Bankomat", + "ca": "Caixer automàtic", + "cs": "Bankomat", + "da": "Pengeautomat", + "de": "Geldautomat", + "el": "ATM", + "en-GB": "Cash Machine", + "en": "ATM", + "eo": "Bankaŭtomato", + "es": "Cajero automático", + "et": "Pangaautomaat", + "eu": "ATM", + "fa": "دستگاه خودپرداز", + "fi": "Pankkiautomaatti", + "fr": "Distributeur de billets", + "gl": "Caixeiro automático", + "he": "כספומט", + "hr": "Bankomat", + "hu": "Bankautomata", + "id": "ATM", + "is": "Hraðbanki", + "it": "Bancomat", + "ja": "ATM", + "kn": "ಎಟಿಎಮ್", + "ko": "ATM", + "lt": "Bankomatas", + "lv": "Bankomāts", + "mk": "Банкомат", + "nl": "Bankautomaat", + "nn": "Minibank", + "no": "Minibank", + "pl": "Bankomat", + "pt-BR": "Caixa eletrônico", + "pt": "Multibanco", + "ro": "Bancomat", + "ru": "Банкомат", + "sk": "Bankomat", + "sl": "Bankomat", + "sr": "Банкомат", + "sv": "Uttagsautomat", + "ta": "ஏ.டி.எம்", + "tr": "ATM", + "uk": "Банкомат", + "vi": "Máy Rút tiền", + "yue": "提款機", + "zh-CN": "ATM机", + "zh-HK": "提款機", + "zh-TW": "自動櫃員機", + "zh": "自动柜员机(ATM)。" + } + }, + "amenity/bank": { + "title": { + "C": "Bank", + "af": "Bank", + "am": "ባንክ", + "ar": "بنك", + "ast": "Bancu", + "bg": "Банка", + "bn": "ব্যাংক", + "bs": "Banka", + "ca": "Banc", + "ckb": "بانک", + "cs": "Banka", + "da": "Bank", + "de": "Bank-Filiale", + "dv": "ބޭންކު", + "el": "Τράπεζα", + "en-GB": "Bank", + "en": "Bank", + "eo": "Bankejo", + "es": "Banco", + "et": "Pank", + "eu": "Banku", + "fa": "بانک", + "fi": "Pankki", + "fr": "Banque", + "gl": "Banco", + "he": "בנק", + "hr": "Banka", + "hu": "Bank", + "hy": "Բանկ", + "id": "Bank", + "is": "Banki", + "it": "Banca", + "ja": "銀行", + "kn": "ಬ್ಯಾಂಕ್", + "ko": "은행", + "lt": "Bankas", + "lv": "Banka", + "mk": "Банка", + "ne": "बैंक", + "nl": "Bank (financieel)", + "no": "Bank", + "pl": "Bank", + "pt-BR": "Banco", + "pt": "Banco", + "ro": "Banca", + "ru": "Банк", + "sk": "Banka", + "sl": "Banka", + "so": "Bangi", + "sr": "Банка", + "sv": "Bank", + "ta": "வங்கி", + "te": "బ్యాంకు", + "tr": "Banka", + "uk": "Банк", + "vi": "Ngân hàng", + "yue": "銀行", + "zh-CN": "银行", + "zh-HK": "銀行", + "zh-TW": "銀行", + "zh": "银行" + } + }, + "amenity/bar": { + "title": { + "C": "Bar", + "af": "Kroeg", + "am": "ቡና ቤት", + "ar": "حانة", + "ast": "Bar", + "bg": "Бар", + "bn": "পানশালা", + "bs": "Bar", + "ca": "Bar de copes", + "ckb": "مەیخانە", + "cs": "Bar", + "da": "Bar", + "de": "Bar", + "dv": "ބާރ", + "el": "Μπαρ", + "en-GB": "Bar", + "en": "Bar", + "eo": "Drinkejo", + "es": "Bar (latam) / Bar de copas (es)", + "et": "Baar", + "eu": "Taberna", + "fa": "بار", + "fi": "Baari", + "fr": "Bar", + "gl": "Bar de copas", + "he": "בר", + "hr": "Bar", + "hu": "Bár", + "hy": "Բար", + "id": "Bar", + "is": "Knæpa", + "it": "Bar", + "ja": "バー", + "ko": "바", + "lt": "Baras", + "lv": "Bārs", + "mk": "Бар", + "ne": "बार", + "nl": "Bar", + "no": "Bar", + "pl": "Bar alkoholowy", + "pt-BR": "Bar requintado ou drinqueria", + "pt": "Bar", + "ro": "Bar", + "ru": "Бар", + "sk": "Bar", + "sl": "Bar", + "so": "Makhaayad", + "sr": "Бар", + "sv": "Bar", + "ta": "மதுபானக் கடை", + "tr": "Bar", + "uk": "Бар", + "vi": "Quán rượu", + "yue": "酒吧", + "zh-CN": "酒吧", + "zh-HK": "酒吧", + "zh-TW": "酒吧", + "zh": "酒吧" + } + }, + "amenity/bbq": { + "title": { + "C": "Barbecue/Grill", + "ar": "مكان مخصص للشواء", + "ast": "Barbacoa/Asador", + "ca": "Barbacoa/graella", + "cs": "Gril", + "da": "Barbecue/Grill", + "de": "Grillplatz", + "el": "Ψησταριά/Σκάρα", + "en-AU": "Barbeque", + "en-GB": "Barbecue/Grill", + "en": "Barbecue/Grill", + "eo": "Rostilo", + "es": "Parrilla", + "et": "Väligrill", + "eu": "Barbakoa/Parrila", + "fa": "باربیکیو / گریل", + "fi": "Grilli", + "fr": "Barbecue, grill", + "gl": "Barbacoa/Grella", + "he": "מנגל", + "hr": "Roštilj", + "hu": "Grillezőhely", + "id": "Barbekyu/Pemanggang", + "is": "Grill", + "it": "Barbecue/Griglia", + "ja": "バーベキュー場/グリル", + "ko": "바비큐/그릴", + "lt": "Barbekiu/Grilis", + "lv": "Barbekjū/Grills", + "mk": "Скара", + "nl": "Barbecue/Grill", + "no": "Grill", + "pl": "Grill", + "pt-BR": "Churrasqueira", + "pt": "Grelhador", + "ru": "Барбекю/Гриль", + "sk": "Stanovište pre gril", + "sl": "Okrepčevalnica", + "sr": "Роштиљ/печењара", + "sv": "Grillplats/Grill", + "tr": "Mangal Restoranı", + "uk": "Барбекю/мангал", + "vi": "Vỉ nướng", + "zh-CN": "烧烤设施", + "zh-HK": "燒烤", + "zh-TW": "燒烤" + } + }, + "amenity/bench": { + "title": { + "C": "Bench", + "af": "Bankie", + "ar": "مقعد", + "ast": "Asientu", + "bg": "Пейка", + "bn": "বেঞ্চ", + "bs": "Klupa", + "ca": "Banc", + "cs": "Lavička", + "da": "Bænk", + "de": "Sitzbank", + "el": "Παγκάκι", + "en-GB": "Bench", + "en": "Bench", + "eo": "Benko", + "es": "Banco / Asiento", + "et": "Pink", + "eu": "Banku", + "fa": "نیمکت", + "fi": "Penkki", + "fr": "Banc", + "gl": "Banco", + "he": "ספסל", + "hr": "Klupa", + "hu": "Pad", + "id": "Bangku", + "is": "Bekkur", + "it": "Panchina", + "ja": "ベンチ", + "kn": "ನ್ಯಾಯಪೀಠ", + "ko": "벤치", + "lt": "Suolas", + "lv": "Sols", + "mk": "Клупа", + "nl": "Zitbank", + "no": "Benk", + "pl": "Ławka", + "pt-BR": "Assento", + "pt": "Banco", + "ro": "Bancă", + "ru": "Скамейка", + "sk": "Lavička", + "sl": "Klop", + "sr": "Клупа", + "sv": "Bänk", + "ta": "விசுப்பலகை", + "tr": "Bank", + "uk": "Лавка", + "vi": "Băng ghế", + "yue": "長椅", + "zh-CN": "长椅", + "zh-HK": "長椅", + "zh-TW": "長椅", + "zh": "长凳" + } + }, + "amenity/bicycle_parking": { + "title": { + "C": "Bicycle Parking", + "af": "Fietsparkering", + "ar": "موقف دراجات هوائية", + "ast": "Aparcaderu de bicicletes", + "bg": "Паркинг за велосипеди", + "bn": "সাইকেল পার্ক করার জায়গা", + "bs": "Parking bicikala", + "ca": "Aparcament per a bicicletes", + "ckb": "گەراجی پاسکیل", + "cs": "Parkování kol", + "da": "Cykelparkering", + "de": "Fahrradparkplatz", + "el": "Στάθμευση Ποδηλάτων", + "en-GB": "Bicycle Parking", + "en": "Bicycle Parking", + "eo": "Bicikla parkumejo", + "es": "Estacionamiento de bicicletas", + "et": "Rattaparkla", + "eu": "Bizikletentzako Aparkalekua", + "fa": "پارکینگ دوچرخه", + "fi": "Pyöräpysäköinti", + "fr": "Parking à vélos", + "gl": "Aparcadoiro de bicicletas", + "he": "חניית אופניים", + "hr": "Parkiralište za bicikle", + "hu": "Kerékpártároló", + "hy": "Հեծանվային կայանատեղի", + "id": "Parkir Sepeda", + "is": "Hjólastæði", + "it": "Parcheggio biciclette", + "ja": "駐輪場", + "ko": "자전거 주차장", + "lt": "Dviračių stovėjimo aikštelė", + "lv": "Velo stāvvieta", + "mk": "Велосипедско паркиралиште", + "nl": "Fietsenstalling", + "no": "Sykkelparkering", + "pl": "Parking dla rowerów", + "pt-BR": "Bicicletário", + "pt": "Parque de bicicletas", + "ro": "Parcare biciclete", + "ru": "Велопарковка", + "sk": "Stojan pre bicykle", + "sl": "Parkirišče za kolesa", + "sr": "Бициклистички паркинг", + "sv": "Cykelparkering", + "ta": "ஈருருளை நிறுத்தகம்", + "tr": "Bisiklet Parkı", + "uk": "Велостоянка", + "vi": "Chỗ Đậu Xe đạp", + "yue": "泊單車處", + "zh-CN": "自行车停车处", + "zh-HK": "單車停放處", + "zh-TW": "單車停車場", + "zh": "自行车停放处" + } + }, + "amenity/bicycle_rental": { + "title": { + "C": "Bicycle Rental", + "af": "Fietshuur", + "ar": "تأجير دراجات", + "ast": "Alquiler de bicicletes", + "bg": "Наем на велосипеди", + "bn": "সাইকেল ভাড়া নেয়া", + "bs": "Iznajmljivanje bicikala", + "ca": "Lloguer de bicicletes", + "cs": "Půjčovna kol", + "da": "Cykeludlejning", + "de": "Fahrradverleih", + "el": "Ενοικιαζόμενα Ποδηλάτα", + "en-GB": "Bicycle Rental", + "en": "Bicycle Rental", + "eo": "Bicikl-pruntejo", + "es": "Alquiler de bicicletas", + "et": "Rattarent", + "eu": "Bizikleten Alokairua", + "fa": "اجاره دوچرخه", + "fi": "Kaupunkipyöräasema", + "fr": "Location de vélos", + "gl": "Alugueiro de bicicletas", + "he": "השכרת אופניים", + "hr": "Najam bicikla", + "hu": "Kerékpárkölcsönző", + "hy": "Հեծանիվի վարձակալություն", + "id": "Penyewaan Sepeda", + "is": "Hjólaleiga", + "it": "Stazione del Bike Sharing", + "ja": "レンタサイクル", + "ko": "자전거 대여소", + "lt": "Dviračių nuoma", + "lv": "Velonoma", + "mk": "Изнајмување велосипеди", + "nl": "Fietsverhuur", + "no": "Sykkelutleie", + "pl": "Wypożyczalnia rowerów", + "pt-BR": "Estação de bicicletas públicas", + "pt": "Aluguer de bicicletas", + "ro": "Închiriere biciclete", + "ru": "Велопрокат", + "sk": "Prenájom bicyklov", + "sl": "Izposoja koles", + "sr": "Изнајмљивање бицикла", + "sv": "Cykeluthyrning", + "ta": "சைக்கிள் வாடகை", + "tr": "Bisiklet Kiralama", + "uk": "Прокат велосипедів", + "vi": "Cho thuê Xe đạp", + "yue": "租單車舖", + "zh-CN": "自行车出租点", + "zh-HK": "單車出租", + "zh-TW": "單車出租", + "zh": "自行车租赁处" + } + }, + "amenity/bicycle_repair_station": { + "title": { + "C": "Bicycle Repair Tool Stand", + "am": "ቢስክሌት ጠጋኝ", + "ar": "ورشة إصلاح دراجات هوائية", + "ast": "Caballete pa reparar bicicletes", + "ca": "Lloc de reparació de Bicicletes", + "cs": "Montážní stojan na kola", + "da": "Cykelreparationsværktøj", + "de": "Fahrradreparatur-Werkzeugkasten", + "el": "Πάγκος Επισκευής Ποδηλάτων", + "en-GB": "Bicycle Repair Tool Stand", + "en": "Bicycle Repair Tool Stand", + "eo": "Bicikla mem-riparejo", + "es": "Puesto de reparación de bicicletas", + "et": "Jalgrattaremondi pukk", + "eu": "Bizikleta konpontzeko tresneriaren postua", + "fa": "ایستگاه تعمیر دوچرخه", + "fi": "Polkupyörän huoltoteline", + "fr": "Stand d'outils de réparation de vélos", + "gl": "Lugar para ferramentas de reparación de bicicletas", + "he": "עמדת תיקון אופניים", + "hr": "Stalak sa alatima za bicikle", + "hu": "Önálló kerékpárszerelő pont", + "is": "Hjólaviðgerðastandur", + "it": "Stazione di riparazione biciclette", + "ja": "自転車修理店", + "ko": "자전거 수리 도구", + "lv": "Velosipēdu Remonta Darbarīku Stends", + "mk": "Држач за поправка на велосипеди", + "nl": "Openbaar fietsgereedschap", + "no": "Sykkel Mekkestativ", + "pl": "Samoobsługowa stacja naprawy rowerów", + "pt-BR": "Estação de reparo de bicicletas", + "pt": "Ponto de reparação de bicicletas", + "ru": "Стойка для ремонта велосипедов", + "sk": "Stojan s náradím na opravu bicyklov", + "sl": "Stojalo za popravilo koles", + "sv": "Station för cykelreparation", + "tr": "Bisiklet Tamircisi", + "uk": "Станція ремонту велосипедів", + "vi": "Quầy Sửa Xe đạp", + "zh-CN": "自行车维修工具站", + "zh-HK": "單車維修站", + "zh-TW": "自行車維修工具站" + } + }, + "amenity/biergarten": { + "title": { + "C": "Biergarten", + "cs": "Pivní zahrada", + "de": "Biergarten", + "en": "Biergarten", + "eo": "Bierĝardeno", + "es": "Biergarten (Bar al aire libre)", + "eu": "Biergarten", + "fa": "بیرگارتن (حیاط با سرو آبجو - ریشه در مونیخ آلمان)", + "fr": "Biergarten", + "gl": "Biergarten (xardín da cervexa alemán)", + "he": "ביר גרדן", + "hu": "Sörkert", + "is": "Bjórgarður", + "it": "Biergarten", + "ja": "ビアガーデン", + "ko": "옥외 식탁", + "mk": "Пивска градина", + "nl": "Biergarten", + "no": "Ølhage", + "pl": "Ogródek piwny", + "pt-BR": "Biergarten", + "pt": "Jardim de cerveja", + "ru": "Пивной сад", + "sk": "Letná záhrada", + "sv": "Ölträdgård", + "tr": "Bira bahçesi", + "uk": "Пивний садок", + "vi": "Vườn Bia", + "zh-CN": "啤酒花园", + "zh-HK": "露天啤酒店", + "zh-TW": "啤酒花園" + } + }, + "amenity/binoculars": { + "title": { + "C": "Mounted Binoculars", + "ar": "مناظير مثبتة", + "cs": "Namontovaný dalekohled", + "da": "Fastmonteret kikkert", + "de": "Stationäres Aussichtsfernrohr", + "en": "Mounted Binoculars", + "eo": "Lorno", + "es": "Binoculares montados", + "fa": "دوربین شکاری سوار شده", + "gl": "Binoculares panorámicos", + "he": "משקפת מקובעת", + "hu": "Rögzített távcső", + "it": "Binocolo Montato", + "ja": "双眼鏡", + "ko": "고정식 쌍안경", + "mk": "Прицврстен двоглед", + "nl": "Vaste verrekijkers", + "pl": "Lornetka", + "pt-BR": "Binóculos montados", + "pt": "Binóculo panorâmico", + "sk": "Namontovaný ďalekohľad", + "sv": "Fast monterad kikare", + "tr": "Monte Dürbün", + "uk": "Стаціонарний бінокль", + "zh-CN": "双筒望远镜", + "zh-TW": "固定式雙筒望遠鏡" + } + }, + "amenity/boat_rental": { + "title": { + "C": "Boat Rental", + "ar": "محل استئجار قوارب", + "ast": "Alquiler de barcos", + "bs": "Iznajmljivanje plovila", + "ca": "Lloguer d'embarcacions", + "cs": "Půjčovna lodí", + "da": "Bådudlejning", + "de": "Bootsvermietung", + "el": "Ενοικίαση Σκαφών", + "en-GB": "Boat Rental", + "en": "Boat Rental", + "eo": "Boat-pruntejo", + "es": "Alquiler de barcos", + "et": "Paadi laenutus", + "eu": "Ontzi alokairu", + "fa": "کرایه قایق", + "fi": "Venevuokraamo", + "fr": "Location de bateau", + "gl": "Alugueiro de embarcacións", + "he": "השכרת סירה", + "hr": "Najam brodova", + "hu": "Hajókölcsönző", + "id": "Penyewaan Perahu Boat", + "is": "Bátaleiga", + "it": "Noleggio barche", + "ja": "貸しボート", + "ko": "보트 대여소", + "lt": "Laivų nuoma", + "lv": "Laivu īre", + "mk": "Изнајмување чамци", + "nl": "Bootverhuur", + "no": "Båuttleie", + "pl": "Wypożyczalnia łodzi", + "pt-BR": "Aluguel de barcos", + "pt": "Aluguer de barcos", + "ro": "Închiriere Barcă", + "ru": "Аренда Лодок", + "sk": "Prenájom lodí", + "sl": "Izposoja plovil", + "sr": "Изнајмљивање чамаца", + "sv": "Båtuthyrning", + "tr": "Bot Kiralama", + "uk": "Прокат човнів", + "vi": "Cho thuê Tàu", + "yue": "租艇", + "zh-CN": "船舶租赁处", + "zh-HK": "租艇", + "zh-TW": "小艇出租" + } + }, + "amenity/boat_storage": { + "title": { + "C": "Boat Storage", + "ar": "مخزن القوارب", + "cs": "Místo pro uložení lodí", + "da": "Bådlager", + "de": "Bootslagerplatz", + "en": "Boat Storage", + "eo": "Boat-garaĝo seka", + "es": "Almacenamiento de barcos", + "fa": "انبار قایق", + "gl": "Tenda de embarcacións", + "he": "אחסון סירות", + "hu": "Hajótároló", + "it": "Rimessaggio Barche", + "ja": "ボート店", + "mk": "Склад за чамци", + "nl": "Botenopslag", + "pl": "Przechowalnia łodzi", + "pt-BR": "Armazenamento de barco", + "pt": "Depósito de barcos", + "sk": "Sklad lodí", + "sv": "Båtförvaring", + "tr": "Tekne Depolaması", + "uk": "Зберігання човнів", + "zh-CN": "存船处", + "zh-TW": "般隻停放處" + } + }, + "amenity/bureau_de_change": { + "title": { + "C": "Currency Exchange", + "am": "የውጭ ምንዛሬ ቢሮ", + "ar": "تحويل أموال", + "ast": "Cambiu de moneda", + "ca": "Canvi de divisa", + "ckb": "گۆڕینەوەی دراو", + "cs": "Směnárna", + "da": "Valutaveksling", + "de": "Geldwechselstube", + "el": "Ανταλλακτήριο Συναλλάγματος", + "en-GB": "Currency Exchange", + "en": "Currency Exchange", + "eo": "Monŝanĝejo", + "es": "Cambio de moneda", + "et": "Valuutavahetus", + "eu": "Moneta trukea", + "fa": "تبدیل ارز / صرافی", + "fi": "Valuutanvaihtopiste", + "fr": "Bureau de change", + "gl": "Troco de divisas", + "he": "המרת מט״ח", + "hr": "Mjenjačnica", + "hu": "Pénzváltó", + "id": "Penukaran Mata Uang", + "is": "Gjaldmiðlaskipti", + "it": "Cambiavalute", + "ja": "両替所", + "ko": "환전소", + "lt": "Valiutos keitykla", + "lv": "Valūtas Maiņa", + "mk": "Менувачница", + "nl": "Wisselkantoor", + "no": "Valutaveksling", + "pl": "Kantor", + "pt-BR": "Casa de câmbio", + "pt": "Agência de câmbio", + "ro": "Schimbare Valută", + "ru": "Пункт обмена валюты", + "sk": "Zmenáreň", + "sl": "Menjalnica", + "sr": "Мењачница", + "sv": "Växlingskontor", + "ta": "பணப் பரிமாற்றம்", + "tr": "Döviz Bürosu", + "uk": "Обмін валют", + "vi": "Đổi tiền", + "zh-CN": "货币兑换", + "zh-HK": "外幣兌換", + "zh-TW": "外幣兌換" + } + }, + "amenity/cafe": { + "title": { + "C": "Cafe", + "af": "Kafee", + "am": "ሻይ ቤት", + "ar": "مقهى", + "ast": "Café", + "bg": "Кафене", + "bn": "ক্যাফে", + "bs": "Kafe", + "ca": "Cafè", + "cs": "Kavárna", + "da": "Cafe", + "de": "Café", + "dv": "ކެފޭ", + "el": "Καφετέρια", + "en-GB": "Cafe", + "en": "Cafe", + "eo": "Kafejo", + "es": "Cafetería", + "et": "Kohvik", + "eu": "Kafetegi", + "fa": "کافه", + "fi": "Kahvila", + "fr": "Café", + "gl": "Cafetaría", + "he": "בית קפה", + "hr": "Kafić", + "hu": "Kávézó", + "hy": "Սրճարան", + "id": "Kafe", + "is": "Kaffihús", + "it": "Caffè", + "ja": "喫茶店", + "ko": "카페", + "lt": "Kavinė", + "lv": "Kafejnīca", + "mk": "Кафетерија", + "ms": "Kafe", + "ne": "क्याफे", + "nl": "Brasserie", + "no": "Kafé", + "pl": "Kawiarnia", + "pt-BR": "Cafeteria", + "pt": "Café", + "ro": "Cafenea", + "ru": "Кафе", + "sk": "Kaviareň", + "sl": "Kavarna", + "so": "Kafateeriya", + "sr": "Кафе", + "sv": "Café", + "ta": "டீக்கடை", + "tr": "Kafe", + "uk": "Кафе", + "vi": "Quán Cà phê/Trà/Chè", + "yue": "茶座", + "zh-CN": "咖啡馆", + "zh-HK": "茶座", + "zh-TW": "咖啡廳", + "zh": "咖啡" + } + }, + "amenity/car_pooling": { + "title": { + "C": "Car Pooling Station", + "ar": "محطة تجميع السيارات", + "cs": "stanice spolujízdy", + "da": "Samkørselsstation", + "de": "Car-Pooling-Station", + "el": "Σταθμός Συγκέντρωσης Αυτοκινήτων", + "en": "Car Pooling Station", + "eo": "Haltejo aŭtomobila (carpooling)", + "es": "Estación de vehículo compartido (Carpooling)", + "fa": "ایستگاه هم‌سفری (نوعی اشتراک خودرو)", + "fi": "Kimppakyytiasema", + "fr": "Aire de covoiturage", + "gl": "Estación de automóbil compartido (Carpooling)", + "he": "תחנת שיתוף נסיעות", + "hu": "Telekocsihely", + "it": "Stazione per il Car Pooling", + "ja": "カープール", + "mk": "Станица за заедничко автомобилско возење", + "nl": "Carpoolparking", + "pl": "Carpooling", + "pt-BR": "Estação de carona solidária", + "pt": "Posto de boleia partilhada", + "sv": "Bilpoolstation", + "tr": "Araç Havuzlama İstasyonu", + "uk": "Місце посадки/висадки пасажирів", + "vi": "Chỗ Đón để Đi Cùng Xe", + "zh-CN": "拼车站", + "zh-TW": "汽車共乘站" + } + }, + "amenity/car_rental": { + "title": { + "C": "Car Rental", + "af": "Kar huur", + "am": "የመኪና ማከራያ", + "ar": "محل إيجار سيارات", + "ast": "Alquiler d'automóviles", + "bg": "Коли под наем", + "bn": "গাড়ি ভাড়া", + "bs": "Rent-a-car", + "ca": "Lloguer de cotxes", + "cs": "Půjčovna aut", + "da": "Biludlejning", + "de": "Autovermietung", + "el": "Ενοικίαση Αυτοκινήτων", + "en-GB": "Car Rental", + "en": "Car Rental", + "eo": "Aŭtomobil-pruntejo", + "es": "Alquiler de automóviles", + "et": "Autorent", + "eu": "Auto Alokairua", + "fa": "کرایه ماشین", + "fi": "Autonvuokraus", + "fr": "Location de voiture", + "gl": "Alugueiro de automóbiles", + "he": "השכרת רכב", + "hr": "Najam automobila", + "hu": "Autókölcsönző", + "id": "Penyewaan Mobil", + "is": "Bílaleiga", + "it": "Noleggio auto", + "ja": "レンタカー", + "ko": "자동차 대여점", + "lt": "Automobilių nuoma", + "lv": "Autonoma", + "mk": "Изнајмување автомобили", + "nl": "Autoverhuur", + "no": "Bilutleie", + "pl": "Wypożyczalnia samochodów", + "pt-BR": "Locadora de veículos", + "pt": "Aluguer de automóveis", + "ro": "Închiriere Mașini", + "ru": "Аренда автомобилей", + "sk": "Autopožičovňa", + "sl": "Izposoja avtomobilov", + "sr": "Изнајмљивање возила", + "sv": "Biluthyrning", + "tr": "Araç Kiralama", + "uk": "Прокат автомобілів", + "vi": "Cho thuê Xe", + "yue": "租車舖", + "zh-CN": "汽车租赁", + "zh-HK": "汽車租賃", + "zh-TW": "汽車租車店" + } + }, + "amenity/car_sharing": { + "title": { + "C": "Car Sharing Station", + "am": "የመኪና ዕቃ መለዋወጫ መሸጫ", + "ar": "محطة مشاركة السيارات", + "cs": "stanice sdílení aut", + "da": "Delebilsstation", + "de": "Car Sharing Station", + "en": "Car Sharing Station", + "eo": "Aŭtomobil-pruntejo komunuma (organizita kunveturado)", + "es": "Estación de uso temporal de vehículos (Carsharing)", + "fa": "ایستگاه اشتراک‌گذاری خودرو", + "fr": "Station d'auto-partage", + "gl": "Estación de vehículos compartidos (Carsharing)", + "he": "תחנת שיתוף מכוניות", + "hu": "Autómegosztó állomás", + "it": "Stazione per il Car Sharing", + "ja": "カーシェアリング", + "ko": "카셰어링 센터", + "mk": "Станица за споделување автомобили", + "nl": "Autodelen", + "pl": "Stacja miejskiej wypożyczalni samochodów", + "pt-BR": "Estação de compartilhamento de carros", + "pt": "Posto de partilha de automóvel", + "sk": "Stanica zdieľania áut", + "sv": "Bildelningsstation", + "tr": "Araç Paylaşma İstasyonu", + "uk": "Каршерінг станція", + "vi": "Trạm Chia sẻ Xe", + "zh-CN": "共享汽车站点", + "zh-TW": "共享汽車站" + } + }, + "amenity/car_wash": { + "title": { + "C": "Car Wash", + "af": "Karwas", + "ar": "غسيل سيارات", + "ast": "Llaváu de coches", + "bg": "Автомивка", + "bs": "Autopraonica", + "ca": "Rentat de cotxes", + "ckb": "شووشتنگەی ئۆتۆمبێل", + "cs": "Automyčka", + "da": "Bilvask", + "de": "Autowäsche", + "el": "Πλυντήριο Αυτοκινήτων", + "en-GB": "Car Wash", + "en": "Car Wash", + "eo": "Aŭtomobil-purigejo", + "es": "Lavado de automóviles", + "et": "Autopesula", + "eu": "Auto garbiketa", + "fa": "کارواش", + "fi": "Autopesula", + "fr": "Station de lavage de voiture", + "gl": "Lavado de automóbiles", + "he": "שטיפת רכב", + "hr": "Autopraonica", + "hu": "Autómosó", + "id": "Pencucian Mobil", + "is": "Bílaþvottur", + "it": "Autolavaggio", + "ja": "洗車場", + "ko": "세차장", + "lt": "Automobilių plovykla", + "lv": "Automazgātuve", + "mk": "Автоперална", + "nl": "Autowasstraat", + "no": "Bilvask", + "pl": "Myjnia samochodowa", + "pt-BR": "Lava a jato", + "pt": "Lavagem de veículos", + "ro": "Spălătorie Auto", + "ru": "Автомойка", + "sk": "Autoumyváreň", + "sl": "Avtopralnica", + "sr": "Ауто-перионица", + "sv": "Biltvätt", + "tr": "Araç Yıkama", + "uk": "Автомийка", + "vi": "Rửa xe", + "yue": "洗車舖", + "zh-CN": "洗车", + "zh-HK": "洗車店", + "zh-TW": "洗車店", + "zh": "洗车" + } + }, + "amenity/casino": { + "title": { + "C": "Casino", + "ar": "كازينو", + "ast": "Casino", + "ca": "Casino", + "ckb": "گازینۆ", + "cs": "Kasino", + "da": "Kasino", + "de": "Kasino", + "el": "Καζίνο", + "en-GB": "Casino", + "en": "Casino", + "eo": "Monludejo", + "es": "Casino", + "et": "Kasiino", + "eu": "Kasino", + "fa": "کازینو", + "fi": "Kasino", + "fr": "Casino", + "gl": "Casino", + "he": "קזינו", + "hr": "Kasino", + "hu": "Kaszinó", + "id": "Kasino", + "is": "Spilavíti", + "it": "Casinò", + "ja": "カジノ", + "ko": "카지노", + "lt": "Kazino", + "lv": "Kazino", + "mk": "Коцкарница", + "nl": "Casino", + "no": "Kasino", + "pl": "Kasyno", + "pt-BR": "Cassino", + "pt": "Casino", + "ro": "Cazino", + "ru": "Казино", + "sk": "Kasíno", + "sl": "Igralnica", + "sr": "Казино", + "sv": "Kasino", + "tr": "Kumarhane", + "uk": "Казино", + "vi": "Sòng bạc", + "zh-CN": "赌场", + "zh-HK": "賭場", + "zh-TW": "賭場" + } + }, + "amenity/charging_station": { + "title": { + "C": "Charging Station", + "ar": "محطة شحن", + "ast": "Estación de recarga", + "ca": "Estació de càrrega", + "cs": "Nabíjecí stanice", + "da": "Opladerstation", + "de": "Ladestation für Elektrofahrzeuge", + "el": "Σταθμός Φόρτισης", + "en-GB": "Charging Station", + "en": "Charging Station", + "eo": "Ŝargostacio", + "es": "Estación de carga para vehículos eléctricos", + "et": "Laadimisjaam", + "eu": "Kargatzeko geltokia", + "fa": "ایستگاه شارژ", + "fi": "Latauspiste", + "fr": "Borne de recharge", + "gl": "Estación de carga", + "he": "תחנת טעינה", + "hr": "Punionica za električna vozila", + "hu": "Elektromos töltőállomás", + "is": "Hleðslustöð", + "it": "Stazione di ricarica", + "ja": "充電スタンド", + "ko": "충전소", + "lt": "Įkrovimo stotelė", + "lv": "Uzlādes stacija", + "mk": "Напојна станица", + "nl": "Oplaadstation", + "no": "Ladestasjon", + "pl": "Stacja ładowania pojazdów", + "pt-BR": "Estação de carregamento", + "pt": "Posto de carregamento", + "ro": "Benzinărie", + "ru": "Станция зарядки", + "sk": "Nabíjacia stanica", + "sl": "Polnilna postaja", + "sv": "Laddstation", + "tr": "Şarj İstasyonu", + "uk": "Зарядна станція", + "vi": "Trạm Sạc Pin", + "zh-CN": "充电站", + "zh-HK": "充電站", + "zh-TW": "充電站" + } + }, + "amenity/childcare": { + "title": { + "C": "Nursery/Childcare", + "ar": "رعاية الأطفال", + "ast": "Preescolar/Guardería", + "ca": "Llar d'Infants", + "cs": "Předškolní a mimoškolní péče", + "da": "Dagpleje/Vuggestue", + "de": "Kinderkrippenbetreuung, Kindertagesstätte", + "el": "Παιδιατρική", + "en-GB": "Nursery/Childcare", + "en": "Nursery/Childcare", + "eo": "Bebovartejo", + "es": "Guardería/Cuidado de niños", + "et": "Lastehoid", + "eu": "Haurtzendegi/ Ume zaintza", + "fa": "مهدکودک/مراقبت از کودکان", + "fi": "Päiväkoti", + "fr": "Nursery/Childcare", + "gl": "Gardaría", + "he": "גנון", + "hr": "Jaslice", + "hu": "Bölcsőde", + "id": "Tempat Penitipan Anak", + "is": "Barnagæsla/dagvistun", + "it": "Asilo nido", + "ja": "保育所", + "ko": "보육/육아", + "lv": "Bērnistaba / Bērnu aprūpe", + "mk": "Детска градинка", + "nl": "Kinderdagverblijf", + "pl": "Żłobek", + "pt-BR": "Berçário ou creche", + "pt": "Berçário / Creche", + "ro": "Grădiniță", + "ru": "Детская комната", + "sk": "Detská starostlivosť", + "sl": "Jasli / Vrtec", + "sr": "Обданиште", + "sv": "Barnomsorg", + "tr": "Çocuk Bakımı", + "uk": "Дитяча кімната", + "vi": "Giữ trẻ", + "zh-CN": "托儿所/保育园", + "zh-HK": "託兒所/幼兒護理", + "zh-TW": "托兒所/托嬰處" + } + }, + "amenity/cinema": { + "title": { + "C": "Cinema", + "af": "Fliek", + "am": "ሲኒማ ቤት", + "ar": "سينما", + "ast": "Cine", + "bg": "Кино", + "bn": "সিনেমা", + "bs": "Kino", + "ca": "Cinema", + "ckb": "سینەما", + "cs": "Kino", + "da": "Biograf", + "de": "Kino", + "dv": "ސިނަމާ", + "el": "Κινηματογράφος", + "en-GB": "Cinema", + "en": "Cinema", + "eo": "Kinejo", + "es": "Cine", + "et": "Kino", + "eu": "Zinema", + "fa": "سینما", + "fi": "Elokuvateatteri", + "fr": "Cinéma", + "gl": "Cine", + "he": "קולנוע", + "hr": "Kino", + "hu": "Mozi", + "hy": "Կինոթատրոն", + "id": "Bioskop", + "is": "Kvikmyndahús", + "it": "Cinema", + "ja": "映画館", + "kn": "ಸಿನಿಮಾ", + "ko": "영화관", + "lt": "Kino teatras", + "lv": "Kino", + "mk": "Кино", + "nl": "Bioscoop", + "no": "Kino", + "pl": "Kino", + "pt-BR": "Cinema", + "pt": "Cinema", + "ro": "Cinema", + "ru": "Кинотеатр", + "sk": "Kino", + "sl": "Kino", + "so": "Shaneemo", + "sr": "Биоскоп", + "sv": "Biograf", + "ta": "சினிமா", + "te": "సినిమా హాలు", + "tr": "Sinema", + "uk": "Кінотеатр", + "vi": "Rạp phim", + "yue": "電影戲院", + "zh-CN": "电影院", + "zh-HK": "戲院", + "zh-TW": "電影院", + "zh": "电影院" + } + }, + "amenity/clinic": { + "title": { + "C": "Clinic", + "am": "ክሊኒክ", + "ar": "عيادة", + "ast": "Clínica", + "bs": "Klinika", + "ca": "Clínica", + "ckb": "نۆڕینگە", + "cs": "Poliklinika", + "da": "Klinik", + "de": "Ärztezentrum", + "el": "Κλινική", + "en-GB": "Clinic", + "en": "Clinic", + "eo": "Kuracistejo (centro de komunuma sano)", + "es": "Clínica", + "et": "Kliinik", + "eu": "Erietxe", + "fa": "کلینیک", + "fi": "Terveyskeskus", + "fr": "Centre médical de taille moyenne, soins en ambulatoire", + "gl": "Clínica ou centro de saúde", + "he": "מרפאה", + "hr": "Klinika", + "hu": "Rendelőintézet", + "id": "Klinik", + "is": "Læknastofa", + "it": "Clinica medica", + "ja": "クリニック(中規模病院)", + "kn": "ಚಿಕಿತ್ಸಾಲಯ", + "ko": "클리닉", + "lt": "Klinika", + "lv": "Klīnika", + "mk": "Клиника", + "nl": "Dagkliniek", + "no": "Klinikk", + "pl": "Klinika/oddział", + "pt-BR": "Clínica ou posto de saúde", + "pt": "Centro de saúde / Clínica", + "ro": "Clinică", + "ru": "Клиника", + "sk": "Klinika", + "sl": "Klinika", + "sr": "Клиника", + "sv": "Vårdcentral", + "tr": "Klinik", + "uk": "Клініка", + "vi": "Trạm Y tế", + "zh-CN": "诊所", + "zh-HK": "診所", + "zh-TW": "診所" + } + }, + "amenity/clock": { + "title": { + "C": "Clock", + "ar": "ساعة", + "ast": "Reló", + "ca": "Rellotge", + "ckb": "کاتژمێر", + "cs": "Hodiny", + "da": "Ur", + "de": "Uhr", + "el": "Ρολόι", + "en-GB": "Clock", + "en": "Clock", + "eo": "Horloĝo", + "es": "Reloj", + "et": "Kell", + "eu": "Ordulari", + "fa": "ساعت", + "fi": "Kello", + "fr": "Horloge", + "gl": "Reloxo", + "he": "שעון", + "hi": "घडी", + "hr": "Sat", + "hu": "Óra", + "id": "Jam", + "is": "Klukka", + "it": "Orologio", + "ja": "時計", + "kn": "ಗಡಿಯಾರ", + "ko": "시계", + "lt": "Laikrodis", + "lv": "Pulkstenis", + "mk": "Часовник", + "nl": "Klok", + "no": "Klokke", + "pl": "Zegar", + "pt-BR": "Relógio", + "pt": "Relógio", + "ro": "Ceas", + "ru": "Часы", + "sk": "Hodiny", + "sl": "Ura", + "sr": "Сат", + "sv": "Klocka", + "ta": "கடிகாரம்", + "tr": "Saat", + "uk": "Годинник", + "vi": "Đồng hồ", + "zh-CN": "时钟", + "zh-HK": "時鐘", + "zh-TW": "時鐘" + } + }, + "amenity/college": { + "title": { + "C": "College Grounds", + "am": "ኮሌጅ", + "ar": "أرض كلية", + "ast": "Terrén de colexu universitariu", + "ca": "Escola professional", + "cs": "Prostor vyšší odborné školy/college", + "da": "Universitetsområder", + "de": "Hochschulgelände", + "el": "Χώρος Κολλεγίου", + "en-GB": "College Grounds", + "en": "College Grounds", + "eo": "Postmezgrada lernejo (ISCED 4)", + "es": "Terreno de centro educativo superior no universitario", + "et": "Kolledžiala", + "eu": "Unibertsitate Eremu", + "fa": "محیط کالج", + "fi": "Korkeakoulualue (college)", + "fr": "Enseignement supérieur (non universitaire) - institution ou campus (terrain)", + "gl": "Área de educación superior", + "he": "גן המכללה", + "hr": "Fakultetsko zemljište", + "hu": "Főiskola területe", + "id": "Lapangan Kampus", + "is": "Framhaldskólalóð", + "it": "Area di un’accademia", + "ja": "短大・高専・専門学校(代表点または敷地)", + "ko": "전문대학 부지", + "lt": "Kolegijos kiemas", + "mk": "Средношколски двор", + "nl": "Campus van beroepsschool", + "pl": "Teren koledżu / szkoły policealnej", + "pt-BR": "Escola técnica", + "ru": "Территория колледжа", + "sk": "Vysoká škola", + "sl": "Šolsko središče", + "sv": "Collegeområde", + "tr": "Üniversite Kampüsü", + "uk": "Територія коледжу", + "vi": "Sân trường Cao đẳng", + "zh-CN": "学院", + "zh-HK": "學院範圍", + "zh-TW": "學院範圍" + } + }, + "amenity/community_centre": { + "title": { + "C": "Community Center", + "am": "የማህበረሰብ ማዕከል", + "ar": "مركز اجتماعي", + "ast": "Centru comunitariu", + "ca": "Centre Comunitari", + "cs": "Komunitní centrum", + "da": "Medborgerhus", + "de": "Gemeindezentrum", + "el": "Κέντρο της Κοινότητας", + "en-AU": "Community Centre", + "en-GB": "Community Centre", + "en": "Community Center", + "eo": "Komunuma centro", + "es": "Centro Comunitario", + "et": "Kogukonna keskus", + "eu": "Gizarte Etxe", + "fa": "مرکز اجتماع", + "fi": "Yhteisökeskus", + "fr": "Salle polyvalente", + "gl": "Centro comunitario", + "he": "מרכז קהילתי", + "hr": "Društveni centar", + "hu": "Közösségi ház", + "is": "Samfélagsmiðstöð", + "it": "Centro sociale (pubblico)", + "ja": "コミュニティセンター", + "ko": "커뮤니티 센터", + "lt": "Bendruomenės centras", + "lv": "Kopienas centrs", + "mk": "Месна заедница", + "nl": "Buurthuis", + "no": "Samfunnshus", + "pl": "Centrum społeczności", + "pt-BR": "Centro comunitário", + "pt": "Centro comunitário", + "ro": "Centru Comunitar", + "ru": "Культурный центр", + "sk": "Komunitné centrum", + "sl": "Središče skupnosti", + "sr": "Дом културе", + "sv": "Samlingslokal", + "tr": "Toplum Merkezi", + "uk": "Суспільний центр", + "vi": "Trung tâm Cộng đồng", + "zh-CN": "社区活动中心", + "zh-HK": "社區中心", + "zh-TW": "社區中心" + } + }, + "amenity/compressed_air": { + "title": { + "C": "Compressed Air", + "ar": "منفاخ إطارات دراجات", + "ast": "Aire comprimíu", + "ca": "Aire comprimit", + "cs": "Stlačený vzduch", + "da": "Luftpumpe", + "de": "Druckluft", + "el": "Πεπιεσμένος Αέρας", + "en-GB": "Compressed Air", + "en": "Compressed Air", + "eo": "Gaskunpremilo", + "es": "Aire comprimido", + "et": "Suruõhk", + "eu": "Aire konpromitua", + "fa": "هوای فشرده", + "fi": "Ilmanpainepiste", + "fr": "Air comprimé", + "gl": "Aire comprimido", + "he": "אוויר דחוס", + "hr": "Komprimirani zrak", + "hu": "Sűrített levegő", + "id": "Pompa Ban", + "is": "Loftdæla", + "it": "Aria Compressa", + "ja": "空気入れ", + "ko": "압축된 공기", + "lt": "Suspaustas oras", + "lv": "Saspiests Gaiss", + "mk": "Компресор", + "nl": "Perslucht", + "no": "Komprimert Luft", + "pl": "Kompresor", + "pt-BR": "Bomba de ar comprimido", + "pt": "Ar comprimido", + "ro": "Aer Comprimat", + "ru": "Сжатый воздух", + "sk": "Stlačený vzduch", + "sl": "Zračni kompresor", + "sr": "Компримовани ваздух", + "sv": "Tryckluft", + "tr": "Hava Basma İstasyonu", + "uk": "Стиснене повітря", + "vi": "Khí Nén", + "zh-CN": "压缩空气", + "zh-HK": "打氣服務", + "zh-TW": "壓縮空氣" + } + }, + "amenity/conference_centre": { + "title": { + "C": "Convention Center", + "cs": "konferenční centrum", + "de": "Kongresszentrum", + "en-AU": "Convention Centre", + "en": "Convention Center", + "eo": "Konferenca centro", + "es": "Centro de convenciones", + "et": "Konverentsikeskus", + "fa": "مرکز همایش", + "fi": "Kongressikeskus", + "fr": "Centre de congrés", + "gl": "Centro de convencións", + "he": "מרכז כנסים", + "hu": "Konferenciaközpont", + "it": "Centro conferenze", + "ja": "コンベンションセンター", + "ko": "컨벤션 센터", + "mk": "Центар за собири", + "nl": "Congrescentrum", + "no": "Konferansesenter", + "pl": "Centrum konferencyjne", + "pt-BR": "Centro de convenções", + "pt": "Centro de convenções", + "sk": "Konferenčné centrum", + "sr": "Конгресни центар", + "sv": "Kongresscenter", + "tr": "Kongre Merkezi", + "uk": "Конференц-центр", + "vi": "Trung tâm Hội nghị", + "zh-CN": "会议中心", + "zh-TW": "會議中心" + } + }, + "amenity/courthouse": { + "title": { + "C": "Courthouse", + "af": "Hof", + "am": "ፍርድ ቤት", + "ar": "محكمة", + "ast": "Xulgáu", + "bg": "Съд", + "bs": "Sudnica", + "ca": "Jutjat", + "cs": "Soud", + "da": "Domstolsbygning", + "de": "Gericht", + "el": "Δικαστήριο", + "en-GB": "Courthouse", + "en": "Courthouse", + "eo": "Juĝdomo", + "es": "Juzgado", + "et": "Kohtumaja", + "eu": "Epaitegi", + "fa": "دادگاه", + "fi": "Tuomioistuin", + "fr": "Tribunal", + "gl": "Xulgado", + "he": "בית משפט", + "hr": "Zgrada suda", + "hu": "Bíróság", + "id": "Pengadilan", + "is": "Dómhús", + "it": "Tribunale", + "ja": "裁判所", + "ko": "법원", + "lt": "Teismo rūmai", + "lv": "Tiesas nams", + "mk": "Суд", + "nl": "Gerechtsgebouw", + "no": "Tinghus", + "pl": "Sąd", + "pt-BR": "Tribunal", + "pt": "Tribunal", + "ro": "Tribunal", + "ru": "Суд", + "sk": "Súd", + "sl": "Sodišče", + "sr": "Судница", + "sv": "Domstol", + "tr": "Mahkeme", + "uk": "Суд", + "vi": "Tòa", + "yue": "法庭", + "zh-CN": "法院", + "zh-HK": "法庭", + "zh-TW": "法院", + "zh": "法院" + } + }, + "amenity/crematorium": { + "title": { + "C": "Crematorium", + "ar": "محرقة موتى", + "ast": "Crematoriu", + "ca": "Crematori", + "cs": "Krematorium", + "da": "Krematorium", + "de": "Krematorium", + "el": "Κρεματόριο", + "en-GB": "Crematorium", + "en": "Crematorium", + "eo": "Kadavrobruligejo", + "es": "Crematorio", + "et": "Krematoorium", + "eu": "Errausketa-labe", + "fa": "مٌرده سوز", + "fi": "Krematorio", + "fr": "Crématorium", + "gl": "Crematorio", + "he": "משרפה", + "hu": "Krematórium", + "is": "Líkbrennsla", + "it": "Forno crematorio", + "ja": "火葬場", + "ko": "화장장", + "lt": "Krematoriumas", + "lv": "Krematorija", + "mk": "Крематориум", + "nl": "Crematorium", + "no": "Krematorium", + "pl": "Krematorium", + "pt-BR": "Crematório", + "pt": "Crematório", + "ro": "Crematoriu", + "ru": "Крематорий", + "sk": "Krematórium", + "sl": "Krematorij", + "sr": "Крематоријум", + "sv": "Krematorium", + "ta": "சுடுகாடு", + "tr": "Cesed Yakma Yeri", + "uk": "Крематорій", + "vi": "Lò Thiêu", + "zh-CN": "火葬场", + "zh-HK": "火葬場", + "zh-TW": "火葬場" + } + }, + "amenity/dentist": { + "title": { + "C": "Dentist", + "am": "የጥርስ ሃኪም", + "ar": "طبيب أسنان", + "ast": "Dentista", + "bs": "Zubar", + "ca": "Dentista", + "ckb": "ددانساز", + "cs": "Zubař", + "da": "Tandlæge", + "de": "Zahnarzt, Zahnärztin", + "el": "Οδοντιατρείο", + "en-GB": "Dentist", + "en": "Dentist", + "eo": "Dentistejo", + "es": "Dentista", + "et": "Hambaarst", + "eu": "Dentista", + "fa": "دندانپزشکی", + "fi": "Hammaslääkäriasema", + "fr": "Dentiste", + "gl": "Dentista", + "he": "מרפאת שיניים", + "hr": "Zubar", + "hu": "Fogorvos", + "id": "Dokter Gigi", + "is": "Tannlæknir", + "it": "Dentista", + "ja": "歯医者", + "kn": "ದಂತವೈದ್ಯ", + "ko": "치과 의원", + "lt": "Dantistas", + "lv": "Zobārsts", + "mk": "Забар", + "nl": "Tandarts", + "nn": "Tannlege", + "no": "Tannlege", + "pl": "Dentysta", + "pt-BR": "Dentista", + "pt": "Dentista", + "ro": "Dentist", + "ru": "Стоматология", + "sk": "Zubár", + "sl": "Zobozdravnik", + "sr": "Зубар", + "sv": "Tandläkare", + "ta": "பல் மருத்துவர்", + "tr": "Dişçi", + "uk": "Стоматолог", + "vi": "Nha sĩ", + "yue": "牙醫", + "zh-CN": "牙科医院", + "zh-HK": "牙醫", + "zh-TW": "牙醫" + } + }, + "amenity/dive_centre": { + "title": { + "C": "Dive Center", + "ar": "مركز للغوص", + "cs": "Centrum potápění", + "de": "Tauchschule", + "el": "Κέντρο Καταδύσεων", + "en-AU": "Dive Centre", + "en-GB": "Dive Centre", + "en": "Dive Center", + "eo": "Centro de subakva naĝado", + "es": "Centro de buceo", + "fa": "مرکز غواصی", + "fi": "Sukelluskeskus", + "fr": "Centre de plongée", + "gl": "Centro de mergullo", + "he": "מרכז צלילה", + "hu": "Búvárközpont", + "is": "Köfunarmiðstöð", + "it": "Centro subacqueo", + "ja": "ダイブセンター", + "ko": "다이브 센터", + "mk": "Нуркачки центар", + "nl": "Duikcentrum", + "no": "Dykkesenter", + "pl": "Centrum nurkowe", + "pt-BR": "Centro de mergulho", + "pt": "Centro de mergulho", + "sk": "Centrum potápania", + "sr": "Ронилачки центар", + "sv": "Dykcenter", + "tr": "Dalış Merkezi", + "uk": "Центр навчання підводного плавання", + "vi": "Trung tâm Lặn biển", + "zh-CN": "潜水中心", + "zh-HK": "潛水中心", + "zh-TW": "潛水中心" + } + }, + "amenity/doctors": { + "title": { + "C": "Doctor", + "am": "ክሊኒክ", + "ar": "طبيب", + "ast": "Doctor", + "ca": "Doctor", + "ckb": "پزیشک", + "cs": "Lékař", + "da": "Læge", + "de": "Arzt, Ärztin", + "el": "Ιατρός", + "en-GB": "Doctor", + "en": "Doctor", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "et": "Arst", + "eu": "Mediku", + "fa": "مطب دکتر", + "fi": "Yksityinen lääkäri", + "fr": "Médecin", + "gl": "Doutor", + "he": "רופא", + "hr": "Doktor", + "hu": "Orvosi rendelő", + "is": "Læknir", + "it": "Medico di base", + "ja": "医院(小規模病院)", + "kn": "ವೈದ್ಯರು", + "ko": "의원", + "lt": "Daktaras", + "lv": "Dakteris", + "mk": "Лекар", + "nl": "Dokter", + "no": "Lege", + "pl": "Gabinet lekarski lub przychodnia", + "pt-BR": "Consultório médico", + "pt": "Consultório médico", + "ro": "Doctor", + "ru": "Кабинет врача", + "sk": "Doktor", + "sl": "Zdravnik", + "sr": "Доктор", + "sv": "Doktor", + "ta": "மருத்துவர்", + "tr": "Doktor", + "uk": "Лікар", + "vi": "Bác sĩ", + "yue": "醫生", + "zh-CN": "医师", + "zh-HK": "醫生", + "zh-TW": "醫生" + } + }, + "amenity/dojo": { + "title": { + "C": "Dojo / Martial Arts Academy", + "ar": "دوجو / أكاديمية الفنون القتالية", + "ast": "Dojo / Academia d'artes marciales", + "ca": "Dojo / Acadèmia d'arts marcials", + "cs": "Škola bojových umění", + "da": "Dojo/Kampsportsakademi", + "de": "Kampfsportstudio", + "el": "Ντότζο/ Σχολή Πολεμικών Τεχνών", + "en-GB": "Dojo / Martial Arts Academy", + "en": "Dojo / Martial Arts Academy", + "eo": "Doĵo / batalart-lernejo", + "es": "Academia de artes marciales", + "fa": "باشگاه / آموزشگاه هنرهای رزمی", + "fi": "Japanilaisten itsepuolustuslajien harjoittelupaikka", + "fr": "Dojo", + "gl": "Dojo/academia de artes marciais", + "he": "דוג׳ו / מרכז לאומנויות לחימה", + "hr": "Škola borilačkih vještina", + "hu": "Harcművészeti edzőterem / dodzso", + "id": "Sasana Bela Diri", + "is": "Dojo / Bardagaíþróttir", + "it": "Dojo/Accademia di arti marziali", + "ja": "道場", + "ko": "도장 / 무술 학원", + "lv": "Dojo / Karatē apmācība", + "mk": "Училиште за боречки вештини", + "nl": "Dojo / School voor Japanse krijgskunsten", + "pl": "Dojo / szkoła sztuk walki", + "pt-BR": "Academia de Artes Marciais", + "pt": "Centro de artes marciais", + "ru": "Додзё / Школа боевых искусств", + "sk": "Škola bojových umení", + "sl": "Dojo in šola borilnih veščin", + "sr": "Школа борилачких вештина", + "sv": "Dojo / Akademi för kampsport", + "tr": "Dövüş Sanatları Akademisi", + "uk": "Додзьо / Школа бойових мистецтв", + "vi": "Võ đường", + "zh-CN": "道场/武术学院", + "zh-HK": "道場/武術學院", + "zh-TW": "道場/武術研習班" + } + }, + "amenity/dressing_room": { + "title": { + "C": "Changing Room", + "ar": "غرفة التبديل", + "cs": "kabinka pro převlečení", + "de": "Umkleideraum", + "el": "Αποδυτήρια", + "en": "Changing Room", + "eo": "Vestejo", + "es": "Vestuario", + "fa": "اتاق تعویض لباس", + "fi": "Pukuhuone", + "fr": "Vestiaire", + "gl": "Vestiario", + "he": "חדר הלבשה", + "hu": "Öltöző", + "it": "Camerino", + "ja": "更衣室", + "ko": "탈의실", + "mk": "Соблекувална", + "nl": "Kleedkamer", + "no": "Garderobe", + "pl": "Przebieralnia", + "pt-BR": "Vestiário", + "pt": "Cabine de provas", + "sk": "Šatňa", + "sr": "Свлачионица", + "sv": "Omklädningsrum", + "tr": "Giyinme Odası", + "uk": "Роздягальня", + "vi": "Phòng Thay đồ", + "zh-CN": "更衣室", + "zh-TW": "更衣室" + } + }, + "amenity/drinking_water": { + "title": { + "C": "Drinking Water", + "af": "Drinkwater", + "ar": "مياه شرب", + "ast": "Agua potable", + "bg": "Чешма", + "bn": "পানীয় জল", + "bs": "Voda za piće", + "ca": "Aigua apta per al consum", + "ckb": "ئاوی خواردنەوە", + "cs": "Pitná voda", + "da": "Drikkevand", + "de": "Trinkwasser", + "el": "Πόσιμο Νερό", + "en-GB": "Drinking Water", + "en": "Drinking Water", + "eo": "Trinkakvejo", + "es": "Agua potable", + "et": "Joogivesi", + "eu": "Ur edangarria", + "fa": "آب آشامیدنی", + "fi": "Juomavesipiste", + "fr": "Eau potable", + "gl": "Fonte de auga potábel", + "he": "מי שתייה", + "hi": "पीने का पानी", + "hr": "Pitka voda", + "hu": "Ivóvíz", + "id": "Air Minum", + "is": "Drykkjarvatn", + "it": "Fontanella", + "ja": "水飲み場", + "ko": "식수대", + "lt": "Geriamas vanduo", + "lv": "Dzeramūdens", + "mk": "Пивка вода", + "nl": "Drinkwaterkraantje", + "no": "Drikkevann", + "pl": "Woda pitna", + "pt-BR": "Bebedouro", + "pt": "Água potável", + "ro": "Apă de Băut", + "ru": "Питьевая вода", + "si": "බොනවතුර", + "sk": "Pitná voda", + "sl": "Pitna voda", + "sr": "Пијаћа вода", + "sv": "Dricksvatten", + "ta": "குடிநீர்", + "te": "తాగే నీరు", + "tr": "İçme Suyu", + "uk": "Питна вода", + "vi": "Nước Uống", + "yue": "飲水處", + "zh-CN": "饮水处", + "zh-HK": "飲用水", + "zh-TW": "飲水機" + } + }, + "amenity/driving_school": { + "title": { + "C": "Driving School", + "am": "የመኪና ትምህርት ቤት", + "ar": "مدرسة تعليم القيادة", + "ast": "Autoescuela", + "ca": "Autoescola", + "cs": "Autoškola", + "da": "Køreskole", + "de": "Fahrschule", + "el": "Σχολή Οδήγησης", + "en-GB": "Driving School", + "en": "Driving School", + "eo": "Stirlernejo", + "es": "Escuela de conducción", + "et": "Sõidukool", + "eu": "Auto-eskola", + "fa": "آموزشگاه رانندگی", + "fi": "Autokoulu", + "fr": "Auto-école", + "gl": "Autoescola", + "he": "בית ספר לנהיגה", + "hu": "Autósiskola", + "is": "Ökuskóli", + "it": "Scuola guida", + "ja": "自動車教習所", + "ko": "운전학원", + "lt": "Vairavimo mokykla", + "lv": "Autoskola", + "mk": "Автоучилиште", + "ms": "Sekolah Memandu", + "nl": "Rijschool", + "no": "Trafikkskole", + "pl": "Szkoła nauki jazdy", + "pt-BR": "Auto escola", + "pt": "Escola de condução", + "ro": "Școală de Șoferi", + "ru": "Автошкола", + "sk": "Autoškola", + "sl": "Avtošola", + "sr": "Ауто школа", + "sv": "Trafikskola", + "ta": "ஓட்டுநர் பள்ளி", + "tr": "Sürücü Kursu", + "uk": "Автошкола", + "vi": "Trường Dạy Lái Xe", + "zh-CN": "驾校", + "zh-HK": "駕駛學校", + "zh-TW": "駕訓班" + } + }, + "amenity/events_venue": { + "title": { + "C": "Events Venue", + "ar": "مكان الأحداث", + "cs": "kulturní sál", + "da": "Begivenhedsarena", + "de": "Veranstaltungszentrum", + "en": "Events Venue", + "eo": "Domo de ceremonioj", + "es": "Lugar de eventos", + "et": "Ürituste toimumiskoht", + "fa": "تالار", + "fi": "Tapahtumahalli", + "fr": "Établissement accueillant des événements", + "gl": "Lugar de eventos", + "he": "מתחם אירועים", + "hu": "Rendezvényhelyszín", + "it": "Sala eventi", + "ja": "イベント施設", + "ko": "행사장", + "mk": "Одржувалиште на настани", + "nl": "Evenementenlocatie", + "no": "Arrangementsted", + "pl": "Sala bankietowa", + "pt-BR": "Local de eventos", + "pt": "Espaço para eventos", + "sv": "Evenemangsplats/festlokal", + "tr": "Etkinlikler Meydanı", + "uk": "Банкетна зала", + "vi": "Trung tâm Sự kiện", + "zh-CN": "宴会厅", + "zh-TW": "活動場館" + } + }, + "amenity/exhibition_centre": { + "title": { + "C": "Exposition Center", + "cs": "veletržní palác", + "de": "Messezentrum", + "en": "Exposition Center", + "eo": "Centro de ekspozicioj kaj foiroj", + "es": "Centro de exposiciones", + "fa": "مرکز نمایشگاهی ، عرضه", + "fi": "Messukeskus", + "fr": "Centre d'expositions", + "gl": "Centro de exposicións", + "he": "מרכז כנסים", + "hu": "Kiállítási központ", + "it": "Centro Espositivo", + "ja": "展示場", + "ko": "전시회장", + "mk": "Изложбен центар", + "nl": "Expo center", + "pl": "Centrum targowo-wystawiennicze", + "pt-BR": "Centro de exposições", + "pt": "Centro de exposições", + "sk": "Výstavné centrum", + "sr": "Изложбени центар", + "sv": "Utställningscenter/Mässa", + "tr": "Fuar Merkezi", + "uk": "Виставковий центр", + "vi": "Trung tâm Triển lãm", + "zh-CN": "展览中心", + "zh-TW": "展覽中心" + } + }, + "amenity/fast_food": { + "title": { + "C": "Fast Food", + "af": "Kitskos", + "am": "ፈጣን ምግብ", + "ar": "وجبات سريعة", + "ast": "Comida rápida", + "bg": "Бърза закуска", + "bn": "ফাস্টফুড", + "bs": "Fast Food", + "ca": "Local de menjar ràpid", + "ckb": "خواردنی خێرا", + "cs": "Rychlé občerstvení", + "da": "Fast food", + "de": "Schnellimbiss", + "dv": "ފާސްޓް ފުޑް", + "el": "Ταχυφαγείο", + "en-GB": "Fast Food", + "en": "Fast Food", + "eo": "Rapidmanĝejo", + "es": "Comida rápida", + "et": "Kiirtoitlustus", + "eu": "Janari azkarra", + "fa": "فست فود", + "fi": "Pikaruokaravintola", + "fr": "Restauration rapide", + "gl": "Comida rápida", + "he": "מזון מהיר", + "hr": "Brza hrana", + "hu": "Gyorsétterem", + "hy": "Արագ սնունդ", + "id": "Makanan Cepat Saji", + "is": "Skyndibiti", + "it": "Fast Food", + "ja": "ファストフード全般", + "ko": "패스트푸드", + "lt": "Greitas maistas", + "lv": "Ātrās ēdināšanas iestāde", + "mk": "Брза храна", + "ms": "Makanan Segera", + "ne": "फास्ट फूड", + "nl": "Fastfoodrestaurant", + "no": "Hurtigmat", + "pl": "Bar / fast food", + "pt-BR": "Lanchonete", + "pt": "Comida rápida", + "ro": "Fast Food", + "ru": "Фаст-фуд", + "sk": "Rýchle občerstvenie", + "sl": "Hitra prehrana", + "so": "Cuntooyinka Fudud", + "sr": "Брза храна", + "sv": "Snabbmat", + "ta": "துரித உணவு", + "tr": "Fast Food", + "uk": "Фаст-Фуд", + "vi": "Nhà hàng Ăn nhanh", + "yue": "快餐店", + "zh-CN": "快餐店", + "zh-HK": "快餐店", + "zh-TW": "速食餐廳", + "zh": "快餐" + } + }, + "amenity/fire_station": { + "title": { + "C": "Fire Station", + "af": "Brandweerstasie", + "am": "እሳትና ድንገተኛ አደጋዎች መከላከያ", + "ar": "محطة إطفاء حريق", + "ast": "Parque de bomberos", + "bg": "Пожарна", + "bn": "দমকল", + "bs": "Vatrogasna stanica", + "ca": "Parc de bombers", + "cs": "Hasiči", + "da": "Brandstation", + "de": "Feuerwehrhaus", + "el": "Πυροσβεστικός Σταθμός", + "en-GB": "Fire Station", + "en": "Fire Station", + "eo": "Fajrobrigadejo", + "es": "Estación de bomberos", + "et": "Päästedepoo", + "eu": "Suhiltzaile-etxe", + "fa": "ایستگاه آتش نشانی", + "fi": "Paloasema", + "fr": "Caserne de pompiers", + "gl": "Parque de bombeiros", + "he": "תחנת כיבוי אש", + "hr": "Vatrogasna postaja", + "hu": "Tűzoltóság", + "id": "Kantor Pemadam Kebakaran", + "is": "Slökkvistöð", + "it": "Caserma dei vigili del fuoco", + "ja": "消防署", + "kn": "ಅಗ್ನಿಶಾಮಕ ಕೇಂದ್ರ", + "ko": "소방서", + "lt": "Gaisrinė", + "lv": "Ugunsdzēsēju stacija", + "mk": "Противпожарна станица", + "ms": "Balai Bomba", + "nl": "Brandweerkazerne", + "no": "Brannstasjon", + "pl": "Remiza strażacka", + "pt-BR": "Posto de bombeiros", + "pt": "Quartel de bombeiros", + "ro": "Pompieri", + "ru": "Пожарная часть", + "sk": "Požiarna stanica", + "sl": "Gasilska postaja", + "sr": "Ватрогасна станица", + "sv": "Brandstation", + "ta": "தீயணைப்பு நிலையம்", + "tr": "İtfaiye", + "uk": "Пожежна станція", + "vi": "Trạm Cứu hỏa", + "yue": "滅火局", + "zh-CN": "消防站", + "zh-HK": "消防局", + "zh-TW": "消防局", + "zh": "消防站" + } + }, + "amenity/food_court": { + "title": { + "C": "Food Court", + "ar": "قاعة طعام", + "cs": "Společná jídelní plocha více restaurací", + "da": "Torvehaller", + "de": "Gemeinschaftlicher Gastronomiebereich", + "el": "Χώρος Εστίασης", + "en-GB": "Food Court", + "en": "Food Court", + "eo": "Manĝ-bazaro", + "es": "Plaza de comida", + "et": "Toiduväljak", + "eu": "Bazkaltzeko eremua", + "fa": "فودکورت", + "fi": "Ravintolamaailma", + "fr": "Aire de restauration, food-court", + "gl": "Zona de comidas", + "he": "מתחם מזון", + "hu": "Étkezőtér", + "is": "Matarmarkaður", + "it": "Zona ristorazione", + "ja": "フードコート", + "ko": "푸드코트", + "lv": "Ēdnīca", + "mk": "Сала за брза храна", + "ms": "Medan Selera", + "nl": "Foodcourt", + "no": "Mathall", + "pl": "Strefa gastronomiczna – (w centrum handlowym)", + "pt-BR": "Praça de alimentação", + "pt": "Praça de alimentação", + "ru": "Ресторанный дворик", + "sk": "Stravovacia zóna", + "sl": "Skupni jedilni prostor", + "sv": "Restaurangtorg", + "tr": "Yemek Yeri", + "uk": "Фуд-корт", + "vi": "Trung tâm Ẩm thực", + "zh-CN": "美食广场", + "zh-HK": "美食廣場", + "zh-TW": "美食街" + } + }, + "amenity/fountain": { + "title": { + "C": "Fountain", + "af": "Fontein", + "ar": "نافورة", + "ast": "Fonte d'adornu", + "bg": "Фонтан", + "bn": "ঝর্না", + "bs": "Fontana", + "ca": "Font", + "ckb": "نافورە", + "cs": "Fontána, vodotrysk", + "da": "Springvand", + "de": "Springbrunnen", + "el": "Σιντριβάνι", + "en-GB": "Fountain", + "en": "Fountain", + "eo": "Fontano", + "es": "Fuente ornamental", + "et": "Purskkaev", + "eu": "Iturri", + "fa": "فواره", + "fi": "Suihkulähde", + "fr": "Fontaine", + "gl": "Fonte ornamental", + "he": "מזרקה", + "hr": "Fontana", + "hu": "Szökőkút", + "id": "Air Mancur", + "is": "Gosbrunnur", + "it": "Fontana (decorativa)", + "ja": "噴水", + "kn": "ಬುಗ್ಗೆ", + "ko": "분수대", + "lt": "Fontanas", + "lv": "Strūklaka", + "mk": "Фонтана", + "nl": "Fontein", + "no": "Fontene", + "pl": "Fontanna", + "pt-BR": "Fonte", + "pt": "Fonte", + "ro": "Fântână", + "ru": "Фонтан", + "sk": "Fontána", + "sl": "Vodomet", + "sr": "Фонтана", + "sv": "Fontän", + "tr": "Su Fıskiyesi", + "uk": "Фонтан", + "vi": "Vòi nước", + "yue": "噴水池", + "zh-CN": "喷泉", + "zh-HK": "噴水池", + "zh-TW": "噴水池", + "zh": "喷泉" + } + }, + "amenity/fuel": { + "title": { + "C": "Gas Station", + "af": "Petrolstasie", + "ar": "محطة وقود", + "ast": "Gasolinera", + "bg": "Бензиностанция", + "bn": "গ্যাস স্টেশন", + "bs": "Benzinska pumpa", + "ca": "Benzinera", + "cs": "Čerpací stanice", + "da": "Tankstation", + "de": "Tankstelle", + "el": "Βενζινάδικο", + "en-AU": "Service Station", + "en-GB": "Petrol Station", + "en": "Gas Station", + "eo": "Benzinejo", + "es": "Estación de servicio / Gasolinera", + "et": "Tankla", + "eu": "Gasolindegi", + "fa": "جایگاه سوخت", + "fi": "Huoltoasema", + "fr": "Station-service", + "gl": "Gasolineira", + "he": "תחנת דלק", + "hr": "Benzinska postaja", + "hu": "Benzinkút", + "id": "Pom Bensin", + "is": "Bensínstöð", + "it": "Stazione di servizio", + "ja": "ガソリンスタンド", + "ko": "주유소", + "lt": "Degalinė", + "lv": "Degvielas uzpildes stacija", + "mk": "Бензинска станица", + "ms": "Stesen Minyak", + "nl": "Tankstation", + "no": "Bensinstasjon", + "pl": "Stacja paliw", + "pt-BR": "Posto de combustível", + "pt": "Posto de combustível", + "ro": "Benzinărie", + "ru": "АЗС", + "sk": "Čerpacia stanica", + "sl": "Bencinska črpalka", + "sr": "Бензинска пумпа", + "sv": "Bensinstation", + "tr": "Benzinci", + "uk": "Заправка", + "vi": "Cây xăng", + "yue": "油站", + "zh-CN": "加油站", + "zh-HK": "油站", + "zh-TW": "加油站", + "zh": "加油站" + } + }, + "amenity/gambling": { + "title": { + "C": "Gambling Hall", + "cs": "místo pro hazard", + "de": "Spielhalle", + "el": "Αίθουσα Τυχερών Παιγνίων για Διασκέδαση", + "en": "Gambling Hall", + "eo": "Hazardludejo", + "es": "Salón de juegos de azar", + "fa": "سالن قمار", + "fi": "Uhkapelisali", + "fr": "Salle de jeux d'argent", + "he": "היכל הימורים", + "hu": "Szerencsejáték-helyszín", + "it": "Sala da Gioco", + "ja": "ギャンブル場", + "ko": "도박장", + "mk": "Сала за коцкање", + "nl": "Gokhal", + "pl": "Salon pachinko/bingo", + "pt-BR": "Sala de jogos", + "pt": "Sala de bingo", + "sk": "Herňa", + "sr": "Коцкарска дворана", + "sv": "Spelhall", + "tr": "Kumar Salonu", + "uk": "Ігорна зала", + "vi": "Phòng Chơi bài", + "zh-CN": "赌场厅", + "zh-TW": "賭博場所" + } + }, + "amenity/give_box": { + "title": { + "C": "Free Box", + "ar": "صندوق مشاركة الأشياء المجانية", + "cs": "Darovací box", + "de": "Schenkschrank/Tauschschrank", + "en": "Free Box", + "eo": "Kesto de senpaga interŝanĝo", + "es": "Caja libre", + "fa": "صندوق آزاد", + "gl": "Caixa libre", + "he": "תיבת הענקה", + "hu": "Adománygyűjtő doboz", + "it": "Scatola generica", + "ja": "ギブボックス", + "mk": "Даровница", + "nl": "Ruilkast", + "pl": "Wystawka (wymiana używanych rzeczy)", + "pt-BR": "Caixa grátis", + "pt": "Caixa livre", + "sk": "Voľná kabína", + "sv": "Bortskänkningslåda", + "tr": "Ücretsiz Kutu", + "uk": "Безкоштовні речі", + "vi": "Thùng Tặng/Lấy", + "zh-CN": "闲置物品交换屋", + "zh-TW": "禮物盒" + } + }, + "amenity/grave_yard": { + "title": { + "C": "Graveyard", + "af": "Begrafplaas", + "am": "የቀብር ቦታ", + "ar": "مقبرة", + "ast": "Enterramientos", + "bg": "Гробище", + "bn": "কবরখানা", + "bs": "Groblje", + "ca": "Cementiri", + "ckb": "گۆڕستان", + "cs": "Pohřebiště", + "da": "Gravplads", + "de": "Gräberfeld", + "el": "Κοιμητήριο", + "en-GB": "Graveyard", + "en": "Graveyard", + "eo": "Tombejo (ĉirkaŭpreĝeja)", + "es": "Camposanto", + "et": "Surnuaed", + "eu": "Hilerri", + "fa": "قبرستان محوطه امام‌زاده یا مکان متبرکه", + "fi": "Kirkkomaa", + "fr": "Lieu de sépulture attenant à un lieu de culte, cimetière paroissial", + "gl": "Camposanto", + "he": "בית עלמין", + "hr": "Groblje uz crkvu", + "hu": "Templom körüli temető", + "id": "Kuburan", + "is": "Grafreitur", + "it": "Cimitero", + "ja": "墓地(宗教施設内など、小)", + "kn": "ಶ್ಮಶಾನ", + "ko": "묘지", + "lt": "Kapinės prie bažnyčios", + "lv": "Kapi", + "mk": "Гробишта", + "nl": "Begraafplaats (nabij kerk)", + "no": "Kirkegård", + "pl": "Cmentarz przykościelny", + "pt-BR": "Cemitério paroquial", + "pt": "Sepultura (fora de cemitérios)", + "ro": "Cimitir", + "ru": "Небольшие захоронения при местах служения (церквях и т.п.)", + "sk": "Pohrebisko", + "sl": "Pokopališče", + "sr": "Гробље", + "sv": "Kyrkogård", + "ta": "இடுகாடு", + "te": "స్మశానం", + "tr": "Mezarlık", + "uk": "Цвинтар", + "vi": "Nghĩa địa tại Nhà thờ", + "yue": "墳地", + "zh-CN": "墓地", + "zh-HK": "墓地", + "zh-TW": "墓地", + "zh": "墓地" + } + }, + "amenity/grit_bin": { + "title": { + "C": "Grit Bin", + "ar": "صندوق حصى وملح", + "ast": "Caxón de sal", + "ca": "Contenidor de sorra", + "cs": "Zásobník na posypový materiál", + "da": "Vejsaltkasse", + "de": "Streugutkiste", + "en-GB": "Grit Bin", + "en": "Grit Bin", + "eo": "Ujo kun sablo kaj salo", + "es": "Contenedor de gravilla", + "et": "Libedustõrje kast", + "eu": "Hare-ontzi", + "fa": "سطل شن", + "fi": "Hiekoitushiekkalaatikko", + "fr": "Bac à sel", + "gl": "Contedor de grava", + "he": "סל חצץ", + "hr": "Kanta sa šljunkom za poledicu", + "hu": "Útszóróanyagos láda", + "is": "Sandkista", + "it": "Cestino del sale", + "ja": "砂箱(降雪対策)", + "ko": "염화칼슘 보관소", + "lt": "Smėlio dėžė", + "lv": "Smilšu tvertne", + "mk": "Кутија за попескување", + "nl": "Bak met Mengeling van Strooizout en Grind", + "no": "Strøkasse", + "pl": "Pojemnik z piaskiem lub żwirem", + "pt-BR": "Caixa de Sal-Gema", + "pt": "Caixa de sal para estrada", + "ru": "Ящик с песком и солью (зимой)", + "sk": "Nádoba s posypom", + "sl": "Zabojnik za sol in pesek", + "sv": "Sandkista", + "tr": "Çakıl Kutusu", + "uk": "Контейнер з піском", + "vi": "Thùng Muối để Làm Tan Tuyết", + "zh-CN": "砂箱", + "zh-HK": "砂礫桶", + "zh-TW": "沙盒" + } + }, + "amenity/hospital": { + "title": { + "C": "Hospital Grounds", + "am": "ሆስፒታል", + "ar": "أرض مستشفى", + "ast": "Antoxana d'hospital", + "ca": "Hospital", + "cs": "Prostor nemocnice", + "da": "Hospitalsområde", + "de": "Krankenhaus", + "dv": "ހޮސްޕިޓަލް", + "el": "Χώροι Νοσοκομείου", + "en-GB": "Hospital Grounds", + "en": "Hospital Grounds", + "eo": "Malsanuleja tereno", + "es": "Terreno del hospital", + "et": "Haigla territoorium", + "eu": "Ospitalearen Eremua", + "fa": "محیط بیمارستان", + "fi": "Sairaala-alue", + "fr": "Terrains hospitaliers", + "gl": "Área hospitalaria", + "he": "גן בית חולים", + "hr": "Bolničko zemljište", + "hu": "Kórház területe", + "id": "Lingkungan Rumah Sakit", + "is": "Spítalalóð", + "it": "Area ospedaliera", + "ja": "大規模病院(代表点または敷地)", + "ko": "병원 부지", + "lt": "Ligoninės kiemas", + "mk": "Болнички двор", + "ne": "अस्पताल मैदान", + "nl": "Ziekenhuisgebied", + "no": "Sykehusområde", + "pl": "Teren szpitala", + "pt-BR": "Hospital", + "pt": "Hospital", + "ro": "Spital", + "ru": "Больница", + "sk": "Nemocničný areál", + "sl": "Klinično središče", + "so": "Goob Isbitaal", + "sr": "Болнички круг", + "sv": "Sjukhusområde", + "ta": "மருத்துவமனை", + "tr": "Hastane", + "uk": "Територія лікарні", + "vi": "Sân Bệnh viện", + "yue": "醫院地", + "zh-CN": "医院", + "zh-HK": "醫院範圍", + "zh-TW": "醫院" + } + }, + "amenity/hunting_stand": { + "title": { + "C": "Hunting Stand", + "ar": "منصة صيد", + "ast": "Puestu de caza", + "ca": "Punt de caça", + "cs": "Posed", + "da": "Jagttårn", + "de": "Jägerstand", + "el": "Καραούλι", + "en-GB": "Hunting Stand", + "en": "Hunting Stand", + "eo": "Altembusko ĉasada", + "es": "Puesto de caza", + "et": "Jahitorn", + "eu": "Ehiza postua", + "fa": "ایستگاه شکار", + "fi": "Metsästyspaikka", + "fr": "Mirador de chasse", + "gl": "Posto de caza", + "he": "עמדת ציד", + "hr": "Lovačka čeka", + "hu": "Magasles", + "is": "Skotvöllur", + "it": "Postazione da caccia", + "ja": "狩猟スタンド", + "ko": "사냥 스탠드", + "lt": "Medžioklės bokštelis", + "lv": "Medību stends", + "mk": "Ловен видиковец", + "nl": "Jachthut", + "no": "Jakttårn", + "pl": "Ambona strzelnicza", + "pt-BR": "Cabana de Caça", + "pt": "Torre de caça", + "ro": "Stand de Vânătoare", + "ru": "Охотничья вышка", + "sk": "Poľovnícka postriežka", + "sl": "Lovska preža", + "sr": "Чека", + "sv": "Jakttorn", + "tr": "Av Platformu", + "uk": "Мисливська вежа", + "vi": "Chỗ Săn Cao", + "zh-CN": "狩猎站", + "zh-HK": "狩獵台", + "zh-TW": "獵寮" + } + }, + "amenity/ice_cream": { + "title": { + "C": "Ice Cream Shop", + "am": "አይስ ክሬም", + "ar": "محل بيع المثلجات", + "ast": "Xeladería", + "ca": "Gelateria", + "ckb": "فرۆشگای ساردەمەنی", + "cs": "Zmrzlina", + "da": "Ishus", + "de": "Eisgeschäft", + "el": "Παγωτατζίδικο", + "en-GB": "Ice Cream Shop", + "en": "Ice Cream Shop", + "eo": "Glaciaĵejo", + "es": "Heladería", + "et": "Jäätisekohvik", + "eu": "Izozki denda", + "fa": "بستنی فروشی", + "fi": "Jäätelön myyntipiste", + "fr": "Magasin de crèmes glacées", + "gl": "Xeadaría", + "he": "חנות גלידה", + "hu": "Fagylaltozó", + "is": "Ísbúð", + "it": "Gelateria", + "ja": "アイスクリーム店", + "kn": "ಐಸ್ ಕ್ರೀಮ್ ಅಂಗ", + "ko": "아이스크림 가게", + "lt": "Ledų parduotuvė", + "lv": "Saldējuma Veikals", + "mk": "Сладоледџилница", + "ms": "Kedai Ais Krim", + "nl": "IJskraam", + "no": "Iskrem Butikk", + "pl": "Lodziarnia", + "pt-BR": "Sorveteria", + "pt": "Geladaria", + "ro": "Magazin de Înghețată", + "ru": "Прилавок с мороженным", + "sk": "Obchod so zmrzlinou", + "sl": "Sladoledarna", + "sr": "Сладоледџиница", + "sv": "Glassaffär", + "tr": "Dondurmacı", + "uk": "Морозиво", + "vi": "Tiệm Kem", + "zh-CN": "冰淇淋店", + "zh-HK": "雪榚店", + "zh-TW": "冰淇淋店" + } + }, + "amenity/internet_cafe": { + "title": { + "C": "Internet Cafe", + "ar": "مقهى إنترنت", + "ca": "Cifercafè", + "cs": "Internetová kavárna", + "da": "Internetcafe", + "de": "Internetcafé", + "el": "Internet Cafe", + "en-GB": "Internet Cafe", + "en": "Internet Cafe", + "eo": "Retkafejo", + "es": "Cibercafé", + "et": "Internetikohvik", + "eu": "Internet kafetegi", + "fa": "کافی‌نت", + "fi": "Internetkahvila", + "fr": "Cybercafé", + "gl": "Internet café", + "he": "קפה אינטרנט", + "hu": "Internetkávézó", + "is": "Netkaffihús", + "it": "Internet Cafe", + "ja": "インターネットカフェ", + "ko": "PC방", + "lt": "Interneto kavinė", + "lv": "Interneta Kafejnīca", + "mk": "Интернет-кафуле", + "ms": "Kafe Internet", + "nl": "Internetcafé", + "no": "Internettkafé", + "pl": "Kafejka internetowa", + "pt-BR": "Internet Café", + "pt": "Cibercafé", + "ro": "Internet Cafe", + "ru": "Интернет-кафе", + "sk": "Internetová kaviareň", + "sl": "Internet Cafe", + "sr": "Интернет кафе", + "sv": "Internetkafé", + "tr": "İnternet Kafe", + "uk": "Інтернет кафе", + "vi": "Quán Internet", + "zh-CN": "网吧", + "zh-HK": "網吧", + "zh-TW": "網咖" + } + }, + "amenity/karaoke_box": { + "title": { + "C": "Karaoke Box", + "cs": "karaoke kabinka", + "de": "Karaoke-Box", + "en": "Karaoke Box", + "eo": "Karaokeejo", + "es": "Karaoke Box", + "fa": "جعبه کارائوکه (ابزار سرگرمی آوازخوانی)", + "fi": "Karaokekoppi", + "fr": "Karaoke", + "he": "תיבת קריוקי", + "hu": "Karaoke-bár", + "it": "Karaoke", + "ja": "カラオケボックス", + "ko": "노래방", + "mk": "Просторија за караоке", + "nl": "Karaokehokje", + "pl": "Budka karaoke", + "pt-BR": "Caixa de Karaokê", + "pt": "Caixa de karaoke", + "sk": "Karaoke kabínka", + "sr": "Караоке кабина", + "sv": "Karaoke Box", + "tr": "Karaoke Kutusu", + "uk": "Кабінка караоке", + "vi": "Dàn Karaoke", + "zh-CN": "KTV亭", + "zh-TW": "卡拉 OK 包廂" + } + }, + "amenity/kindergarten": { + "title": { + "C": "Preschool / Kindergarten Grounds", + "am": "ሕፃናት መዋያ", + "ar": "مرحلة ما قبل المدرسة / رياض الأطفال", + "cs": "Prostor školky / předškolního zařízení", + "da": "Børnehave/vuggestue-grund", + "de": "Kindergarten, Kindergartengelände", + "el": "Αυλή Νηπιαγωγείου", + "en": "Preschool / Kindergarten Grounds", + "eo": "Infanvartejo (ISCED 0)", + "es": "Terreno de preescolar / jardín de infantes", + "fa": "محوطه پیش‌دبستانی / مهدکودک", + "fi": "Esikoulu", + "fr": "Crèche, garderie", + "gl": "Área escolar infantil", + "he": "מתחם גן/גן חובה", + "hr": "Zemljište dječjeg vrtića", + "hu": "Óvoda területe", + "id": "Prasekolah / Taman Kanak-Kanak", + "it": "Area dell'asilo/scuola d'infanzia", + "ja": "幼稚園/保育園(代表点または敷地)", + "ko": "유치원 부지", + "mk": "Двор на детска градинка", + "nl": "Gebied van Crèche/Kleuterschool", + "no": "Førskole- / Barnehageområde", + "pl": "Teren przedszkola/żłobka", + "pt-BR": "Escola de educação infantil", + "pt": "Infantário / pré-escola", + "ru": "Подготовительная школа / Детский сад", + "sk": "Materská škôlka", + "sr": "Предшколско двориште", + "sv": "Förskoleområde", + "tr": "Anaokulu Sahası", + "uk": "Територія дитячого садочка", + "vi": "Sân Nhà trẻ", + "zh-CN": "幼儿园场地", + "zh-TW": "幼兒園範圍" + } + }, + "amenity/kneipp_water_cure": { + "title": { + "C": "Kneipp Water Cure", + "ar": "بركة علاج القدم بالماء", + "cs": "Kneippova lázeň", + "de": "Kneippanlage", + "en": "Kneipp Water Cure", + "eo": "Naĝejeto", + "es": "Cura de agua Kneipp", + "fa": "تصفیه آب سباستین کنیپ / آب درمانی Kneipp", + "fr": "Cure par l'eau Kneipp", + "gl": "Augas termais Kneipp", + "he": "טיפול מים קנאיפ", + "hu": "Kneipp-medence", + "it": "Cura Acquatica Kneipp", + "ja": "足浴場(ヨーロッパ)", + "ko": "크나이프 물 치료", + "mk": "Водотерапија Кнајп", + "nl": "Kneipp Waterbad", + "pl": "Basen Kneippa", + "pt-BR": "Cura da água do Kneipp", + "pt": "Balneário Kneippiano", + "sv": "Kneipp vattenterapi", + "tr": "Kneipp Hidroterapisi", + "uk": "Водолікарня", + "vi": "Bồn tắm Trị liệu Kneipp", + "zh-CN": "克奈圃水疗", + "zh-TW": "Kneipp 水療" + } + }, + "amenity/language_school": { + "title": { + "C": "Language School", + "ar": "مدرسة لغات", + "ca": "Escola d'idiomes", + "ckb": "قوتابخانەی زمان", + "cs": "Jazyková škola", + "da": "Sprogskole", + "de": "Sprachschule", + "el": "Φροντιστήριο Ξένων Γλωσσών", + "en": "Language School", + "eo": "Lingva lernejo", + "es": "Escuela de idiomas", + "eu": "Hizkuntz eskola", + "fa": "آموزشگاه زبان", + "fi": "Kielikoulu", + "fr": "École de langues", + "gl": "Escola de idiomas", + "he": "בית ספר לשפות", + "hu": "Nyelviskola", + "is": "Tungumálaskóli", + "it": "Scuola di lingue straniere", + "ja": "外国語教室", + "ko": "언어 학원", + "lt": "Kalbų mokykla", + "mk": "Училиште за јазици", + "nl": "Taalschool", + "no": "Språkskole", + "pl": "Szkoła językowa", + "pt-BR": "Escola de idiomas", + "pt": "Escola de línguas", + "ru": "Языковая школа", + "sk": "Jazyková škola", + "sr": "Језичка школа", + "sv": "Språkskola", + "ta": "மொழிப் பள்ளி", + "tr": "Dil Okulu", + "uk": "Мовна школа", + "vi": "Trường học Ngoại ngữ", + "zh-CN": "语言学校", + "zh-HK": "語言學校", + "zh-TW": "語言學校" + } + }, + "amenity/lavoir": { + "title": { + "C": "Lavoir", + "ar": "مكان غسيل الملابس يدوياً", + "cs": "Lavor", + "de": "Waschhaus", + "en": "Lavoir", + "eo": "Vestaĵ-lavejo (ĉe rivero)", + "es": "Lavadero", + "fa": "محل شست‌وشوی لباس", + "fi": "Pyykinpesupaikka", + "fr": "Lavoir", + "gl": "Lavadoiro", + "he": "מקום מרחץ בגדים", + "hu": "Ruhamosó hely", + "it": "Lavatoio", + "ja": "共同洗い場", + "mk": "Пералница", + "nl": "Openbare wasplaats", + "no": "Vaskehus", + "pl": "Pralnia (przy rzece)", + "pt-BR": "Lavanderia pública", + "pt": "Lavadouro", + "sv": "Tvättbrygga", + "tr": "Yıkama Evi", + "uk": "Місце для прання", + "zh-CN": "公共洗衣池", + "zh-TW": "洗手台" + } + }, + "amenity/letter_box": { + "title": { + "C": "Letter Box", + "ar": "صندوق البريد", + "cs": "domovní poštovní schránka", + "de": "Hausbriefkasten", + "el": "Γραμματοκιβώτιο", + "en": "Letter Box", + "eo": "Leterkesto (riceva)", + "es": "Buzón", + "fa": "صندوق پستی", + "fi": "Asunnon postilaatikko", + "fr": "Boîte aux lettres privée", + "gl": "Caixa do correo", + "he": "תיבת מכתבים", + "hu": "Személyes levélszekrény", + "it": "Cassetta delle lettere", + "ja": "郵便受け", + "ko": "우편함", + "mk": "Поштенско сандаче", + "nl": "Brievenbus", + "no": "Postkasse", + "pl": "Prywatna skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Caixa de correio", + "sk": "Poštová schránka", + "sr": "Поштанско сандуче", + "sv": "Postlåda", + "tr": "Mektup Kutusu", + "uk": "Поштова скринька", + "vi": "Hòm thư Cá nhân", + "zh-CN": "信箱", + "zh-TW": "信箱" + } + }, + "amenity/library": { + "title": { + "C": "Library", + "af": "Biblioteek", + "am": "ቤተ-መፃሕፍት", + "ar": "مكتبة عامة", + "ast": "Biblioteca", + "bg": "Библиотека", + "bn": "পাঠাগার", + "bs": "Biblioteka", + "ca": "Biblioteca", + "ckb": "پەڕتووکخانە", + "cs": "Knihovna", + "da": "Bibliotek", + "de": "Bibliothek", + "dv": "ލައިބްރަރީ", + "el": "Βιβλιοθήκη", + "en-GB": "Library", + "en": "Library", + "eo": "Biblioteko", + "es": "Biblioteca", + "et": "Raamatukogu", + "eu": "Liburutegi", + "fa": "کتابخانه", + "fi": "Kirjasto", + "fr": "Bibliothèque", + "gl": "Biblioteca", + "he": "ספריה", + "hr": "Knjižnica", + "hu": "Könyvtár", + "id": "Perpustakaan", + "is": "Bókasafn", + "it": "Biblioteca", + "ja": "図書館", + "kn": "ಗ್ರಂಥಾಲಯ", + "ko": "도서관", + "lt": "Biblioteka", + "lv": "Bibliotēka", + "mk": "Библиотека", + "ms": "Perpustakaan", + "nl": "Bibliotheek", + "no": "Bibliotek", + "pl": "Biblioteka", + "pt-BR": "Biblioteca", + "pt": "Biblioteca", + "ro": "Librărie", + "ru": "Библиотека", + "sk": "Knižnica", + "sl": "Knjižnica", + "so": "Maktabad", + "sr": "Библиотека", + "sv": "Bibliotek", + "ta": "புத்தகச்சாலை", + "te": "గ్రంథాలయం", + "tr": "Kütüphane", + "uk": "Бібліотека", + "vi": "Thư viện", + "yue": "圖書館", + "zh-CN": "图书馆", + "zh-HK": "圖書館", + "zh-TW": "圖書館", + "zh": "图书馆" + } + }, + "amenity/loading_dock": { + "title": { + "C": "Loading Dock", + "ar": "رصيف التحميل", + "cs": "nakládací rampa", + "de": "Laderampe", + "el": "Αποβάθρα Φόρτωσης", + "en": "Loading Dock", + "eo": "Ŝarĝ-kajo", + "es": "Muelle de carga", + "fa": "اسکله بارگیری", + "fi": "Lastauslaituri", + "fr": "Quai de chargement", + "gl": "Peirao de carga", + "he": "מתחם העמסה", + "hu": "Teherautórakodó-rámpa", + "it": "Zona di carico", + "ja": "出入口(貨物)", + "mk": "Товарна рампа", + "nl": "Laadkaai", + "no": "Lastebrygge", + "pl": "Dok załadunkowy", + "pt-BR": "Doca de carregamento", + "pt": "Cais de carga", + "sk": "Nakladací prístav", + "sv": "Lastkaj", + "tr": "Yükleme Rıhtımı", + "uk": "Вантажна рампа", + "vi": "Khu Bốc dỡ Hàng hóa", + "zh-CN": "装卸码头", + "zh-TW": "裝卸碼頭" + } + }, + "amenity/lounger": { + "title": { + "C": "Lounger", + "cs": "Lehátka", + "de": "Liege", + "el": "Ξαπλώστρα", + "en": "Lounger", + "eo": "Kuŝseĝo", + "es": "Sillón de jardín / Tumbona", + "fa": "صندلی راحتی", + "fr": "Chaise longue", + "he": "מיטת שיזוף", + "hu": "Nyugágy", + "it": "Sdraio", + "ja": "サマーベッド", + "ko": "일광욕용 의자", + "mk": "Лежалка", + "nl": "Ligstoel", + "pl": "Leżak", + "pt-BR": "Espreguiçadeira", + "pt": "Espreguiçadeira", + "sk": "Ležadlo", + "sv": "Solstol(ar)", + "tr": "Şezlong", + "uk": "Лежак", + "vi": "Ghế Tắm nắng", + "zh-CN": "躺椅", + "zh-TW": "躺椅區" + } + }, + "amenity/love_hotel": { + "title": { + "C": "Love Hotel", + "cs": "Hodinový hotel", + "da": "Kærlighedshotel", + "de": "Stundenhotel", + "el": "Ξενοδοχείο Ημιδιαμονής", + "en-GB": "Love Hotel", + "en": "Love Hotel", + "eo": "Amor-hotelo", + "es": "Hotel para parejas", + "fa": "هتل عشق", + "fi": "Tuntihotelli", + "fr": "Love hôtel", + "gl": "Hotel para parellas", + "he": "מלון לפי שעות", + "hu": "Love hotel", + "is": "Ástarhótel", + "it": "Love Hotel", + "ja": "ラブホテル", + "ko": "러브 호텔", + "mk": "Љубовен хотел", + "nl": "Love hotel", + "no": "Kjærlighetshotell", + "pl": "Love hotel", + "pt-BR": "Motel", + "pt": "Motel para casais", + "ru": "Отель любви", + "sk": "Hodinový hotel", + "sr": "Љубавни хотел", + "sv": "Kärlekshotell", + "tr": "Aşk Oteli", + "uk": "Готель кохання", + "vi": "Khách sạn Tình yêu", + "zh-CN": "爱情宾馆", + "zh-HK": "愛情酒店", + "zh-TW": "情趣旅館" + } + }, + "amenity/marketplace": { + "title": { + "C": "Marketplace", + "af": "Markplein", + "am": "የገበያ ቦታ", + "ar": "محل تسوق", + "ast": "Mercáu", + "bg": "Пазар", + "bn": "বাজার", + "bs": "Tržnica", + "ca": "Mercat", + "cs": "Tržiště", + "da": "Markedsplads", + "de": "Marktplatz", + "el": "Αγορά", + "en-GB": "Marketplace", + "en": "Marketplace", + "eo": "Bazaro", + "es": "Mercado", + "et": "Turg", + "eu": "Merkatu", + "fa": "بازار", + "fi": "Tori", + "fr": "Marché", + "gl": "Mercado", + "he": "שוק", + "hr": "Tržnica", + "hu": "Piactér", + "id": "Pasar", + "is": "Markaður", + "it": "Mercato", + "ja": "市場", + "ko": "시장", + "lt": "Prekyvietė", + "lv": "Tirgus", + "mk": "Пазар", + "nl": "Marktplaats", + "no": "Markedsplass", + "pl": "Targowisko / Hala targowa", + "pt-BR": "Feira ou mercado público", + "pt": "Mercado", + "ro": "Piață", + "ru": "Рынок", + "sk": "Tržnica", + "sl": "Tržnica", + "sr": "Тржница", + "sv": "Marknadsplats", + "ta": "பஜார்", + "tr": "Çarşı", + "uk": "Ринок", + "vi": "Chợ phiên", + "yue": "街市", + "zh-CN": "市场", + "zh-HK": "街市", + "zh-TW": "市場", + "zh": "市场" + } + }, + "amenity/monastery": { + "title": { + "C": "Monastery Grounds", + "cs": "Klášterní pozemky", + "da": "Kloster-område", + "de": "Klostergelände", + "el": "Ιερά Μονή", + "en-GB": "Monastery Grounds", + "en": "Monastery Grounds", + "eo": "Monaĥeja tereno", + "es": "Terreno del monasterio", + "et": "Kloostriala", + "eu": "Monastegiaren eremu", + "fa": "زمین های صومعه", + "fi": "Luostari", + "fr": "Terrain de monastère", + "gl": "Área de mosteiro", + "he": "מתחם מנזר", + "hu": "Kolostor területe", + "is": "Klausturlóð", + "it": "Monastero", + "ja": "修道院", + "ko": "수도원 부지", + "mk": "Манастир", + "nl": "Kloostergebied", + "no": "Klosterområde", + "pl": "Teren klasztoru", + "pt-BR": "Jardins do mosteiro", + "pt": "Mosteiro", + "ru": "Монастырь", + "sk": "Pozemky kláštora", + "sr": "Манастирско земљиште", + "sv": "Klosterområde", + "tr": "Manastır Alanı", + "uk": "Територія монастиря", + "vi": "Sân Tu viện", + "zh-CN": "修道院", + "zh-HK": "寺院範圍", + "zh-TW": "修道院" + } + }, + "amenity/money_transfer": { + "title": { + "C": "Money Transfer Station", + "ar": "محل لتحويل الأموال", + "cs": "místo pro peněžní převody", + "de": "Geldtransferstation", + "el": "Υπηρεσία Μεταφοράς Χρημάτων", + "en": "Money Transfer Station", + "eo": "Centro de mon-transigo", + "es": "Estación de transferencia de dinero", + "fa": "ایستگاه انتقال پول", + "fi": "Rahansiirtopiste", + "fr": "Transfert d'argent", + "gl": "Estación de transferencia de diñeiro", + "he": "תחנת העברת כספים", + "hu": "Pénzátutaló", + "it": "Agenzia di Money Transfer", + "ja": "海外送金所", + "ko": "환전소", + "mk": "Испраќање на пари", + "nl": "Wisselkantoor", + "no": "Pengeoverføringsstasjon", + "pl": "Placówka przekazów pieniężnych", + "pt-BR": "Estação de transferência de dinheiro", + "pt": "Serviço de transferência de dinheiro", + "ru": "Денежные переводы", + "sk": "Stanica prevodi peňazí", + "sv": "Pengaöverföring", + "tr": "Para Transfer İstasyonu", + "uk": "Грошові перекази", + "vi": "Gửi Tiền", + "zh-CN": "货币交换处", + "zh-HK": "滙款中心", + "zh-TW": "匯款站" + } + }, + "amenity/mortuary": { + "title": { + "C": "Morgue", + "ar": "المشرحة", + "cs": "Márnice", + "da": "Lighus", + "de": "Leichenhaus", + "el": "Νεκροτομείο", + "en": "Morgue", + "eo": "Kadavrejo", + "es": "Morgue", + "fa": "سردخانه", + "fi": "Ruumishuone", + "fr": "Morgue", + "gl": "Velorio / tanatorio", + "he": "חדר מתים", + "hu": "Ravatalozó", + "it": "Obitorio", + "ja": "死体安置所", + "ko": "영안실", + "mk": "Мртовечница", + "nl": "Lijkenhuis", + "pl": "Kostnica", + "pt-BR": "Necrotério", + "pt": "Morgue", + "sk": "Márnica", + "sv": "Bårhus", + "tr": "Morg", + "uk": "Морг", + "vi": "Nhà xác", + "zh-CN": "太平间/停尸房", + "zh-TW": "太平間" + } + }, + "amenity/motorcycle_parking": { + "title": { + "C": "Motorcycle Parking", + "ar": "موقف دراجات نارية", + "ast": "Aparcaderu de motos", + "ca": "Aparcament per a motocicletes", + "cs": "Parkování pro motorky", + "da": "Motorcykelparkering", + "de": "Motorradparkplatz", + "el": "Στάθμευση μοτοσυκλετών", + "en-GB": "Motorcycle Parking", + "en": "Motorcycle Parking", + "eo": "Motorcikla parkumejo", + "es": "Estacionamiento de motos", + "et": "Mootorratta parkla", + "eu": "Motorren aparkalekua", + "fa": "پارکینگ موتور سیکلت", + "fi": "Moottoripyöräpysäköinti", + "fr": "Parking pour motocyclettes", + "gl": "Aparcadoiro de motos", + "he": "חניית אופנועים", + "hr": "Parkiralište za motocikle", + "hu": "Motorkerékpár-parkoló", + "id": "Parkir Motor", + "is": "Mótorhjólastæði", + "it": "Parcheggio moto", + "ja": "オートバイの駐車場", + "ko": "오토바이 주차장", + "lt": "Motociklų stovėjimo aikštelė", + "lv": "Motociklu stāvvieta", + "mk": "Паркиралиште за мотоцикли", + "ms": "Tempat Letak Motosikal", + "nl": "Motorfietsparking", + "no": "Motorsykkelparkering", + "pl": "Parking dla motocykli", + "pt-BR": "Estacionamento de motos", + "pt": "Parque de motas", + "ro": "Parcare de Motociclete", + "ru": "Парковка для мотоциклов", + "sk": "Parkovanie pre motocykle", + "sl": "Parkirišče za motorje", + "sr": "Паркинг за мотоцикле", + "sv": "Motorcykelparkering", + "ta": "ஈருருளை நிறுத்துமிடம்", + "tr": "Motosiklet Parkı", + "uk": "Стоянка для мотоциклів", + "vi": "Chỗ Đậu Xe máy", + "zh-CN": "摩托车停车场", + "zh-HK": "電單車停車位", + "zh-TW": "機車停車場" + } + }, + "amenity/motorcycle_rental": { + "title": { + "C": "Motorcycle Rental", + "ar": "إيجار دراجات نارية", + "cs": "Půjčovna motocyklů", + "de": "Motorradverleih", + "el": "Ενοικίαση Μοτοσικλετών", + "en": "Motorcycle Rental", + "eo": "Motorcikl-pruntejo", + "es": "Alquiler de motos", + "fa": "اجاره موتور سیکلت", + "fi": "Moottoripyörävuokraamo", + "fr": "Location de motos", + "he": "השכרת אופנועים", + "hu": "Motorkerékpár-kölcsönző", + "it": "Noleggio Motocicli", + "ja": "レンタルバイク", + "ko": "오토바이 대여소", + "mk": "Изнајмување мотоцикли", + "nl": "Motorfietsverhuur", + "pl": "Wypożyczalnia motocykli", + "pt-BR": "Aluguel de motocicleta", + "pt": "Aluguer de motas", + "sk": "Požičovňa motocyklov", + "sv": "Motorcykeluthyrning", + "tr": "Motosiklet Kiralama", + "uk": "Прокат мотоциклів", + "vi": "Cho thuê Xe máy", + "zh-CN": "摩托车租赁处", + "zh-TW": "摩托車租賃" + } + }, + "amenity/music_school": { + "title": { + "C": "Music School", + "am": "የሙዚቃ ትምህርት ቤት", + "ar": "مدرسة موسيقى", + "ast": "Academia de música", + "ca": "Escola de música", + "ckb": "قوتابخانەی مۆسیقی", + "cs": "Hudební škola", + "da": "Musikskole", + "de": "Musikschule", + "el": "Μουσικό Σχολείο", + "en-GB": "Music School", + "en": "Music School", + "eo": "Muzika lernejo", + "es": "Escuela de música", + "eu": "Musika eskola", + "fa": "آموزشگاه موسیقی", + "fi": "Musiikkikoulu", + "fr": "École de musique", + "gl": "Escola de música", + "he": "בית ספר למוזיקה", + "hu": "Zeneiskola", + "is": "Tónlistarskóli", + "it": "Scuola di musica", + "ja": "音楽学校", + "ko": "음악 학교", + "lt": "Muzikos mokykla", + "lv": "Mūzikas skola", + "mk": "Музичко училиште", + "ms": "Sekolah Muzik", + "nl": "Muziekschool", + "no": "Musikkskole", + "pl": "Szkoła muzyczna niepodlegająca MEN", + "pt-BR": "Escola de Música", + "pt": "Escola de música", + "ru": "Музыкальная школа", + "sk": "Hudobná škola", + "sl": "Glasbena šola", + "sr": "Музичка школа", + "sv": "Musikskola", + "ta": "இசைப் பள்ளி", + "tr": "Müzik Okulu", + "uk": "Музична школа", + "vi": "Trường Âm nhạc", + "zh-CN": "音乐学校", + "zh-HK": "音樂學校", + "zh-TW": "音樂學校" + } + }, + "amenity/nightclub": { + "title": { + "C": "Nightclub", + "am": "የምሽት ክለብ", + "ar": "ملهى ليلي", + "ast": "Discoteca", + "ca": "Club nocturn", + "ckb": "یانەی شەوانە", + "cs": "Diskotéka", + "da": "Natklub", + "de": "Diskothek", + "el": "Νυχτερινό Κέντρο", + "en-GB": "Nightclub", + "en": "Nightclub", + "eo": "Noktoklubejo", + "es": "Discoteca", + "et": "Ööklubi", + "eu": "Klub", + "fa": "کلوپ شبانه", + "fi": "Yökerho", + "fr": "Boîte de nuit", + "gl": "Clube nocturno ou discoteca", + "he": "מועדון לילה", + "hr": "Noćni klub", + "hu": "Diszkó", + "id": "Kelab Malam", + "is": "Næturklúbbur", + "it": "Discoteca", + "ja": "ナイトクラブ", + "ko": "나이트클럽", + "lt": "Naktinis klubas", + "lv": "Naktsklubs", + "mk": "Ноќен клуб", + "ms": "Kelab Malam", + "nl": "Nachtclub", + "no": "Nattklubb", + "pl": "Klub nocny / dyskoteka", + "pt-BR": "Boate", + "pt": "Discoteca", + "ro": "Club de Noapte", + "ru": "Ночной клуб", + "sk": "Nočný klub", + "sl": "Nočni klub", + "sr": "Ноћни клуб", + "sv": "Nattklubb", + "ta": "இரவு விடுதி", + "tr": "Gece Kulübü", + "uk": "Нічний клуб", + "vi": "Câu lạc bộ Giải trí", + "zh-CN": "夜总会", + "zh-HK": "夜總會", + "zh-TW": "夜總會" + } + }, + "amenity/parking": { + "title": { + "C": "Parking Lot", + "ar": "مكان انتظار سيارات", + "cs": "Parkoviště", + "da": "Bilparkering", + "de": "Parkplatz", + "el": "Θέσεις Στάθμευσης", + "en-GB": "Car Park", + "en": "Parking Lot", + "eo": "Parkumejo", + "es": "Estacionamiento / Aparcamiento", + "et": "Autoparkla", + "fa": "پارکینگ", + "fi": "Pysäköintialue", + "fr": "Parking", + "gl": "Aparcadoiro de automóbiles", + "he": "מגרש חנייה", + "hr": "Parkiralište za automobile", + "hu": "Parkoló", + "id": "Parkiran", + "is": "Bílastæðasvæði", + "it": "Area di parcheggio", + "ja": "駐車場", + "ko": "주차장", + "lt": "Automobilių stovėjimo aikštelė", + "lv": "Stāvvieta", + "mk": "Паркиралиште", + "nl": "Parkeerplaats", + "no": "Parkeringsplass", + "pl": "Parking samochodowy", + "pt-BR": "Estacionamento", + "pt": "Parque de estacionamento", + "ru": "Парковка", + "sk": "Parkovisko", + "sl": "Parkirno mesto", + "sr": "Паркинг место", + "sv": "Parkeringsplats", + "tr": "Otopark", + "uk": "Автостоянка", + "vi": "Bãi Đậu xe", + "zh-CN": "停车场", + "zh-HK": "停車場", + "zh-TW": "停車場" + } + }, + "amenity/parking_entrance": { + "title": { + "C": "Parking Garage Entrance / Exit", + "ar": "مدخل / مخرج مرآب السيارات", + "cs": "Vjezd / Výjezd krytého parkoviště", + "da": "Ind/udgang til parkeringsgarage", + "de": "Garageneinfahrt/-ausfahrt", + "el": "Είσοδος / Έξοδος Γκαράζ", + "en": "Parking Garage Entrance / Exit", + "eo": "Parkumeja en-/el-veturejo", + "es": "Entrada / salida del garaje de estacionamiento", + "fa": "ورودی / خروجی پارکینگ", + "fi": "Pysäköintihallin ajoramppi", + "fr": "Entrée / sortie de garage ou parking", + "gl": "Porta de entrada de aparcadoiro", + "he": "יציאה לחניון", + "hr": "Ulaz/izlaz iz garaže za automobile", + "hu": "Parkolóház-bejárat", + "it": "Ingresso/uscita parcheggio sotterraneo", + "ja": "出入口(駐車場)", + "ko": "주차장 입구/출구", + "mk": "Влез/излез на покриено паркиралиште", + "nl": "Ingang/uitgang van parkeergarage", + "no": "Parkeringshus Inngang / utgang", + "pl": "Wjazd/wyjazd z parkingu/garażu", + "pt-BR": "Entrada / Saída da garagem", + "pt": "Entrada / Saída de estacionamento", + "ru": "Въезд в крытую парковку", + "sk": "Vchod / východ do garáže", + "sr": "Улаз/излаз за паркинг", + "sv": "In- och utfart parkeringsgarage", + "tr": "Kapalı Otopark Giriş / Çıkış", + "uk": "В’їзд/виїзд на криту стоянку", + "vi": "Lối Ra vào Bãi Đậu xe Cao tầng", + "zh-CN": "车库入口 / 出口", + "zh-TW": "停車場入口/出口" + } + }, + "amenity/parking_space": { + "title": { + "C": "Parking Space", + "ar": "موقف سيارات", + "ast": "Espaciu d'aparcamientu", + "ca": "Espai d'aparcament", + "cs": "Parkovací místo", + "da": "Parkeringsbås", + "de": "Stellplatz", + "el": "Χώρος Στάθμευσης", + "en-GB": "Parking Space", + "en": "Parking Space", + "eo": "Parkumeja loko (detala)", + "es": "Plaza de estacionamiento", + "et": "Parkimiskoht", + "eu": "Aparkatzeko lekua", + "fa": "جای پارک منفرد", + "fi": "Pysäköintiruutu", + "fr": "Place de parking", + "gl": "Praza de aparcadoiro", + "he": "אזור חניה", + "hr": "Parkirališno mjesto", + "hu": "Parkolóhely", + "is": "Bílastæðarými", + "it": "Stallo", + "ja": "駐車区画(1台ごとの)", + "ko": "주차 공간", + "lt": "Stovėjimo vieta", + "mk": "Паркинг-место", + "ms": "Ruang Letak Kenderaan", + "nl": "Parkeerplaats binnen parkeergelegenheid", + "no": "Parkeringsplass", + "pl": "Miejsce/miejsca parkingowe (pojedyncze lub ich zwarty blok)", + "pt-BR": "Vaga de estacionamento", + "pt": "Lugar de estacionamento", + "ro": "Loc de Parcare", + "ru": "Отдельное парковочное место на парковке", + "sk": "Parkovacie miesto", + "sl": "Parkirni prostor", + "sr": "Паркинг простор", + "sv": "Parkeringsruta", + "tr": "Park Yeri", + "uk": "Місце на стоянці", + "vi": "Chỗ Đậu xe", + "zh-CN": "停车位", + "zh-HK": "泊車位", + "zh-TW": "停車位" + } + }, + "amenity/payment_centre": { + "title": { + "C": "Payment Center", + "ar": "مركز دفع نقود", + "cs": "platební centrum", + "de": "Zahlstelle", + "el": "Κέντρο Πληρωμών", + "en-AU": "Payment Centre", + "en-GB": "Payment Centre", + "en": "Payment Center", + "eo": "Centro de pago", + "es": "Centro de pago", + "fa": "مرکز پرداخت", + "fi": "Maksupalvelu", + "fr": "Centre de paiement", + "gl": "Centro de pagamento", + "he": "מרכז תשלום", + "hu": "Befizetőpont", + "it": "Centro per i pagamenti", + "ja": "納入窓口", + "mk": "Платежно место", + "nl": "Betalingscentrum", + "no": "Betalingssenter", + "pl": "Centrum płatnicze", + "pt-BR": "Centro de pagamento", + "pt": "Balcão de pagamento", + "sk": "Platobné centrum", + "sl": "Plačilni center", + "sv": "Betalningscenter", + "tr": "Ödeme Merkezi", + "uk": "Приймання платежів", + "vi": "Trung tâm Thanh toán", + "zh-CN": "收银台", + "zh-HK": "繳費處", + "zh-TW": "繳費中心" + } + }, + "amenity/payment_terminal": { + "title": { + "C": "Payment Terminal", + "ar": "محطة دفع نقود", + "cs": "Platební terminál", + "de": "Zahlungsterminal", + "el": "Τερματικό Πληρωμών", + "en": "Payment Terminal", + "eo": "Pag-aŭtomato", + "es": "Terminal de pago", + "fa": "ترمینال پرداخت ، POS", + "fi": "Maksupääte", + "fr": "Terminal de paiement", + "gl": "Terminal de pagamento", + "he": "מסוף תשלום", + "hu": "Befizetőautomata", + "it": "Terminale pagamenti", + "ja": "支払端末", + "mk": "Платежен терминал", + "nl": "Betalingsterminal", + "no": "Betalingsterminal", + "pl": "Terminal płatniczy", + "pt-BR": "Terminal de pagamento", + "pt": "Terminal de pagamento", + "ru": "Платёжный терминал", + "sk": "Platobný terminál", + "sl": "Plačilni terminal", + "sv": "Betalningsterminal", + "tr": "Ödeme Terminali", + "uk": "Платіжний термінал", + "zh-CN": "支付终端", + "zh-HK": "繳費終端機", + "zh-TW": "繳費窗口" + } + }, + "amenity/pharmacy": { + "title": { + "C": "Pharmacy Counter", + "am": "መድሃኒት ቤት", + "ar": "صيدلية", + "ca": "Farmàcia", + "cs": "Okénko/přepážka lékárny", + "de": "Apotheke", + "el": "Κατάστημα Φαρμακείου", + "en-AU": "Pharmacy", + "en": "Pharmacy Counter", + "eo": "Apoteko", + "es": "Farmacia", + "fa": "داروخانه", + "fi": "Apteekki", + "fr": "Pharmacie", + "gl": "Farmacia", + "he": "דלפק בית מרקחת", + "hu": "Gyógyszertár", + "id": "Apotek", + "it": "Farmacia", + "ja": "薬局・ドラッグストア(薬剤師が居る店)", + "ko": "약국", + "mk": "Аптека", + "nl": "Apotheek", + "no": "Apotek Disk", + "pl": "Apteka", + "pt-BR": "Farmácia", + "pt": "Farmácia", + "ru": "Аптека", + "sl": "Lekarna", + "sr": "Апотекарски шалтер", + "sv": "Läkemedel", + "tr": "Eczane", + "uk": "Аптека", + "vi": "Quầy thuốc", + "zh-CN": "药房", + "zh-TW": "藥局" + } + }, + "amenity/photo_booth": { + "title": { + "C": "Photo Booth", + "cs": "Foto budka", + "da": "Pasfotoautomat", + "de": "Fotoautomat", + "el": "Φωτογραφικός Θάλαμος", + "en": "Photo Booth", + "eo": "fot-aŭtomato", + "es": "Cabina de fotos", + "et": "Fotokabiin", + "fa": "غرفه عکس", + "fi": "Valokuvauskoppi", + "fr": "Photomaton", + "gl": "Cabina de fotos", + "he": "תא צילום", + "hu": "Fényképezőfülke", + "it": "Cabina per fototessere", + "ja": "証明写真機", + "ko": "사진 부스", + "mk": "Фотокабина", + "nl": "Pasfotohokje", + "no": "Fotokiosk", + "pl": "Fotobudka", + "pt-BR": "Cabine de foto", + "pt": "Cabine Fotográfica", + "ru": "Фотокабина", + "sk": "Fotobúdka", + "sv": "Fotoautomat", + "tr": "Fotoğraf Kabini", + "uk": "Фото-кабінка", + "vi": "Buồng Chụp hình", + "zh-CN": "自助拍照机", + "zh-TW": "照相站" + } + }, + "amenity/place_of_worship": { + "title": { + "C": "Place of Worship", + "af": "Plek van aanbidding", + "am": "የእምነት ቦታ", + "ar": "مكان عبادة", + "ast": "Llugar de cultu", + "bg": "Религиозен храм", + "bn": "প্রার্থনাস্থল", + "bs": "Bogomolja", + "ca": "Lloc de culte", + "ckb": "پەرستگا", + "cs": "Chrám", + "da": "Tilbedelsessted", + "de": "Andachtsstätte", + "dv": "އަޅުކަންކުރާ ތަންތަން", + "el": "Χώρος Λατρείας", + "en-GB": "Place of Worship", + "en": "Place of Worship", + "eo": "Preĝejo", + "es": "Lugar de adoración", + "et": "Pühakoda", + "eu": "Gurtza gune", + "fa": "پرستشگاه", + "fi": "Rukoilupaikka", + "fr": "Lieu de culte", + "gl": "Lugar de culto", + "he": "בית תפילה", + "hr": "Vjerski objekt", + "hu": "Istentiszteleti hely", + "id": "Tempat Beribadah", + "is": "Tilbeiðsluhús", + "it": "Luogo di culto", + "ja": "宗教施設全般", + "ko": "종교 시설", + "lt": "Maldos namai", + "lv": "Dievnams", + "mk": "Верско здание", + "ms": "Tempat Ibadat", + "ne": "पूजा गर्ने ठाउँ", + "nl": "Gebedshuis", + "no": "Bedested", + "pl": "Miejsce odbywania się praktyk religijnych", + "pt-BR": "Local de prática religiosa", + "pt": "Local de oração", + "ro": "Loc de Rugăciune", + "ru": "Место поклонения", + "sk": "Náboženské miesto", + "sl": "Verski objekt", + "so": "Goobta Cibaadada", + "sr": "Место богослужења", + "sv": "Plats för tillbedjan", + "ta": "வழிபாட்டு இடம்", + "tr": "İbadethane", + "uk": "Культове місце", + "vi": "Nơi Thờ phụng", + "yue": "拜神之所", + "zh-CN": "礼拜场所", + "zh-HK": "祟拜場所", + "zh-TW": "宗教祟拜場所", + "zh": "礼拜场所" + } + }, + "amenity/planetarium": { + "title": { + "C": "Planetarium", + "ar": "قبة فلكية", + "ast": "Planetariu", + "ca": "Planetari", + "cs": "Planetárium", + "da": "Planetarium", + "de": "Planetarium", + "el": "Πλανητάριο", + "en-GB": "Planetarium", + "en": "Planetarium", + "eo": "Planetario (astrokinejo)", + "es": "Planetario", + "et": "Planetaarium", + "eu": "Planetario", + "fa": "آسمان نما", + "fi": "Planetaario", + "fr": "Planétarium", + "gl": "Planetario", + "he": "מצפה כוכבים", + "hr": "Planetarij", + "hu": "Planetárium", + "is": "Stjörnuver", + "it": "Planetario", + "ja": "プラネタリウム", + "kn": "ತಾರಾಲಯ", + "ko": "천체투영관", + "lt": "Planetariumas", + "lv": "Planetārijs", + "mk": "Планетариум", + "ms": "Planetarium", + "nl": "Planetarium", + "no": "Planetarium", + "pl": "Planetarium", + "pt-BR": "Planetário", + "pt": "Planetário", + "ro": "Planetariu", + "ru": "Планетарий", + "sk": "Planetárium", + "sl": "Planetarij", + "sr": "Планетаријум", + "sv": "Planetarium", + "ta": "கோளரங்கம்", + "tr": "Gökevi", + "uk": "Планетарій", + "vi": "Cung Thiên văn", + "zh-CN": "天文馆", + "zh-HK": "天象廳", + "zh-TW": "天文臺" + } + }, + "amenity/police": { + "title": { + "C": "Police", + "af": "Polisie", + "am": "ፖሊስ ጣቢያ", + "ar": "شرطة", + "ast": "Policía", + "bg": "Полиция", + "bn": "পুলিশ", + "bs": "Policija", + "ca": "Comissaria de Policia", + "ckb": "پۆلیس", + "cs": "Policie", + "da": "Politi", + "de": "Polizei", + "el": "Αστυνομικό Τμήμα", + "en-GB": "Police", + "en": "Police", + "eo": "Policejo", + "es": "Policía", + "et": "Politsei", + "eu": "Polizia", + "fa": "پليس", + "fi": "Poliisiasema", + "fr": "Poste de police", + "gl": "Policía", + "he": "משטרה", + "hr": "Policija", + "hu": "Rendőrség", + "id": "Polisi", + "is": "Lögregla", + "it": "Forze di polizia", + "ja": "警察", + "kn": "ಪೊಲೀಸು", + "ko": "경찰서", + "lt": "Policija", + "lv": "Policija", + "mk": "Полиција", + "ms": "Polis", + "nl": "Politiekantoor", + "no": "Politi", + "pl": "Policja/straż miejsca lub gminna", + "pt-BR": "Polícia", + "pt": "Esquadra da polícia", + "ro": "Poliție", + "ru": "Полиция", + "sk": "Polícia", + "sl": "Policija", + "sr": "Полиција", + "sv": "Polis", + "ta": "காவல்", + "te": "పోలీసు", + "tr": "Emniyet Müdürlüğü", + "uk": "Поліція", + "vi": "Đồn Cảnh sát", + "yue": "差館", + "zh-CN": "警察局", + "zh-HK": "警署", + "zh-TW": "警察局", + "zh": "警察局" + } + }, + "amenity/polling_station": { + "title": { + "C": "Permanent Polling Place", + "cs": "stálé volební místo", + "de": "Permanentes Wahllokal", + "en": "Permanent Polling Place", + "eo": "Balotejo (neŝanĝanta loko)", + "es": "Lugar de votación permanente", + "fa": "محل دائمی رأی‌گیری", + "fi": "Pysyvä äänestyspaikka", + "fr": "Bureau de vote permanent", + "gl": "Lugar de votación permanente", + "he": "קלפי קבוע", + "hu": "Állandó szavazóhely", + "it": "Sezione Elettorale permanente", + "ja": "投票所(常設)", + "ko": "상설 투표소", + "mk": "Трајно гласачко место", + "nl": "Permanent stembureau", + "no": "Fast Stemmeplass", + "pl": "Stały lokal wyborczy", + "pt-BR": "Local de votação permanente", + "pt": "Local de voto permanente", + "sk": "Permanentná volebná miestnosť", + "sv": "Permanent vallokal", + "tr": "Daimi Oylama Yeri", + "uk": "Виборча дільниця", + "vi": "Địa điểm Đi bầu Cố định", + "zh-CN": "选举投票站", + "zh-TW": "永久投票處" + } + }, + "amenity/post_box": { + "title": { + "C": "Mail Drop Box", + "ar": "صندوق بريد عام", + "cs": "Poštovní schránka", + "de": "Briefkasten", + "el": "Γραμματοκιβώτιο Αλληλογραφίας", + "en-GB": "Post Box", + "en": "Mail Drop Box", + "eo": "Poŝtkesto (senda)", + "es": "Buzón de correo", + "et": "Kirjakast", + "fa": "جعبه انداختن پست", + "fi": "Postilaatikko", + "fr": "Boîte aux lettres (envoi)", + "gl": "Caixa do correo", + "he": "תיבת איסוף דואר", + "hu": "Postaláda", + "id": "Kotak Surat", + "it": "Buca delle lettere", + "ja": "郵便ポスト", + "ko": "우체통", + "mk": "Поштенска преграда", + "nl": "Brievenbus", + "no": "Post innleveringspostkasse", + "pl": "Skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Marco de correio", + "ru": "Почтовый ящик", + "sk": "Poštová schránka", + "sv": "Brevlåda", + "tr": "Posta Bırakma Kutusu", + "uk": "Поштова скриня", + "vi": "Thùng thư", + "zh-CN": "邮件投递箱", + "zh-TW": "郵筒" + } + }, + "amenity/post_depot": { + "title": { + "C": "Post Sorting Office", + "ar": "مكتب الفرز البريدي", + "cs": "poštovní depo", + "da": "Postsorteringsfacilitet", + "de": "Postverteilzentrum", + "el": "Γραφείο Ταξινόμησης Αλληλογραφίας", + "en": "Post Sorting Office", + "eo": "Poŝta disspecigejo", + "es": "Oficina de clasificación de correos", + "fa": "اداره پست", + "fi": "Postinlajittelukeskus", + "fr": "Bureau de tri de courrier", + "gl": "Oficina de clasificación de correos", + "he": "משרד מיון דואר", + "hu": "Postai logisztikai központ", + "it": "Ufficio di smistamento postale", + "ja": "郵便集配所", + "ko": "우편집중국", + "mk": "Служба за поштенска отпрема", + "nl": "Postsorteerkantoor", + "no": "Post Sorteringskontor", + "pl": "Sortownia listów lub paczek", + "pt-BR": "Escritório de classificação de correspondência", + "pt": "Centro de distribuição de correio", + "sk": "Kancelária triedenia pošty", + "sr": "Поштански сортажни центар", + "sv": "Postsorteringskontor", + "tr": "Posta Sıralama Ofisi", + "uk": "Поштова сортувальна станція", + "zh-CN": "包裹分拣中心", + "zh-TW": "郵件處理中心" + } + }, + "amenity/post_office": { + "title": { + "C": "Post Office", + "af": "Poskantoor", + "am": "ፖስታ ቤት", + "ar": "مكتب البريد", + "ast": "Oficina de correos", + "bg": "Поща", + "bn": "ডাকঘর", + "bs": "Pošta", + "ca": "Oficina de correus", + "ckb": "نووسینگەی پۆستە", + "cs": "Pošta", + "da": "Postkontor", + "de": "Postfiliale", + "el": "Ταχυδρομείο", + "en-GB": "Post Office", + "en": "Post Office", + "eo": "Poŝtoficejo", + "es": "Oficina postal", + "et": "Postkontor", + "eu": "Postetxe", + "fa": "اداره پست", + "fi": "Postitoimisto", + "fr": "Bureau de poste", + "gl": "Oficina de correos", + "he": "סניף דואר", + "hr": "Pošta", + "hu": "Posta", + "id": "Kantor Pos", + "is": "Pósthús", + "it": "Ufficio Postale", + "ja": "郵便局", + "kn": "ಅಂಚೆ ಕಚೇರಿ", + "ko": "우체국", + "lt": "Paštas", + "lv": "Pasta nodaļa", + "mk": "Пошта", + "ms": "Pejabat Pos", + "nl": "Postkantoor", + "no": "Postkontor", + "pl": "Poczta/agencja pocztowa", + "pt-BR": "Agência de correios", + "pt": "Estação de correios", + "ro": "Oficiul Poștal", + "ru": "Почтовое отделение", + "sk": "Pošta", + "sl": "Pošta", + "sr": "Пошта", + "sv": "Postkontor", + "ta": "அஞ்சலகம்", + "te": "తపాలా కార్యాలయం", + "tr": "Postane", + "uk": "Пошта", + "vi": "Bưu điện", + "yue": "郵政局", + "zh-CN": "邮局", + "zh-HK": "郵政局", + "zh-TW": "郵局", + "zh": "邮局" + } + }, + "amenity/prep_school": { + "title": { + "C": "Test Prep / Tutoring School", + "ar": "مدرسة إعداد للاختبارات/دروس خصوصية", + "cs": "doučovací škola", + "de": "Nachhilfeanbieter", + "el": "Σχολείο Προπαρασκευής", + "en": "Test Prep / Tutoring School", + "eo": "Lernejo pretiganta (al ekzameno/universitato)", + "es": "Preparación para exámenes / Escuela de tutoría", + "fa": "آزمون آزمایشی / مؤسسه آموزش", + "fi": "Valmennuskoulu", + "fr": "École préparatoire", + "gl": "Preparación para exames / Escola de titoría", + "he": "לימודי נהיגה", + "hu": "Tesztpálya, tanulópálya", + "it": "Scuola di preparazione / tutoraggio ai test", + "ja": "進学予備校", + "ko": "학원", + "mk": "Подготвително училиште", + "nl": "Studiebegeleiding", + "pl": "Szkoła korepetycji", + "pt-BR": "Escola de preparação para exames", + "pt": "Centro de explicações", + "sv": "Pluggskola", + "tr": "Sınava Hazırlık / Özel Ders Okulu", + "uk": "Підготовчий центр/Репетитор", + "vi": "Trường Luyện thi / Dạy Kèm", + "zh-CN": "补习班/培训班/辅导班", + "zh-TW": "補習班" + } + }, + "amenity/prison": { + "title": { + "C": "Prison Grounds", + "am": "እስር ቤት", + "ar": "مرافق/أراضي سجن", + "ast": "Terrén de cárcel", + "ca": "Terrenys de presó", + "cs": "Prostor věznice", + "da": "Fængselsgrund", + "de": "Gefängnisanlage", + "el": "Χώρος Φυλακής", + "en-GB": "Prison Grounds", + "en": "Prison Grounds", + "eo": "Mallibereja tereno", + "es": "Terreno de prisión / cárcel", + "et": "Vangla", + "eu": "Espetxe", + "fa": "محوطه زندان", + "fi": "Vankila-alue", + "fr": "Prison (terrain)", + "gl": "Área penitenciaria", + "he": "מגרש כלא", + "hr": "Zatvorsko zemljište", + "hu": "Börtön területe", + "is": "Fangelsislóð", + "it": "Area carceraria", + "ja": "刑務所(代表点または敷地)", + "kn": "ಬಂದೀಖಾನೆ ಮೈದಾನ", + "ko": "교도소 부지", + "mk": "Затворски двор", + "ms": "Kawasan Penjara", + "nl": "Gevangenisgebied", + "no": "Fengselsområde", + "pl": "Teren więzienia", + "pt-BR": "Presídio", + "pt": "Prisão", + "ro": "Închisoare", + "ru": "Тюрьма", + "sk": "Areál väznice", + "sl": "Območje zapora", + "sr": "Затворско двориште", + "sv": "Fängelseområde", + "tr": "Cezaevi", + "uk": "Вʼязниця", + "vi": "Sân Nhà tù", + "zh-CN": "监狱/看守所", + "zh-HK": "監獄範圍", + "zh-TW": "監獄範圍" + } + }, + "amenity/pub": { + "title": { + "C": "Pub", + "af": "Kroeg", + "am": "ፐብ", + "ar": "حانة", + "ast": "Pub", + "bg": "Пъб", + "bn": "সরাইখানা", + "bs": "Pub", + "ca": "Bar", + "cs": "Hospoda", + "da": "Værtshus", + "de": "Kneipe", + "el": "Καπηλειό", + "en-GB": "Pub", + "en": "Pub", + "eo": "Taverno", + "es": "Pub (latam) / Bar (es)", + "et": "Kõrts", + "eu": "Pub", + "fa": "میخانه", + "fi": "Pubi", + "fr": "Pub", + "gl": "Bar", + "he": "פאב", + "hr": "Pivnica", + "hu": "Kocsma", + "id": "Pub", + "is": "Krá", + "it": "Pub", + "ja": "居酒屋", + "ko": "주점", + "lt": "Aludė", + "lv": "Krogs", + "mk": "Паб", + "ms": "Pub", + "nl": "Café", + "no": "Pub", + "pl": "Pub", + "pt-BR": "Bar / Boteco", + "pt": "Taberna", + "ro": "Pub", + "ru": "Паб", + "sk": "Krčma", + "sl": "Pivnica", + "sr": "Паб", + "sv": "Pub", + "ta": "பப்", + "te": "పబ్", + "tr": "Bar", + "uk": "Паб", + "vi": "Quán rượu Pub", + "yue": "酒館", + "zh-CN": "英式酒吧", + "zh-HK": "酒館", + "zh-TW": "Pub", + "zh": "酒馆" + } + }, + "amenity/public_bath": { + "title": { + "C": "Public Bath", + "ar": "دورة مياة عمومية", + "ast": "Baños públicos", + "ca": "Banys públic", + "cs": "Veřejné lázně", + "da": "Offentligt bad", + "de": "Öffentliches Bad", + "el": "Δημόσιο Λουτρό", + "en-GB": "Public Bath", + "en": "Public Bath", + "eo": "Banejo (distro)", + "es": "Baño público", + "eu": "Komun publikoak", + "fa": "حمام عمومی", + "fi": "Kylpylaitos", + "fr": "Bain public", + "gl": "Baño público", + "he": "מרחצאות ציבוריות", + "hr": "Javno kupalište", + "hu": "Közfürdő", + "is": "Almenningsböð", + "it": "Bagni pubblici", + "ja": "公衆浴場", + "ko": "대중 목욕탕", + "lt": "Vieša vonia", + "mk": "Јавна бања", + "nl": "Publiek bad", + "no": "Offentlig bad", + "pl": "Łaźnia publiczna", + "pt-BR": "Banho público", + "pt": "Banhos públicos", + "ro": "Baie Publică", + "ru": "Общественная баня", + "sk": "Verejné sprchy", + "sl": "Javno kopališče", + "sr": "Јавно купатило", + "sv": "Publikt bad", + "tr": "Hamam", + "uk": "Громадська лазня", + "vi": "Nơi Tắm Công cộng", + "zh-CN": "公共浴室", + "zh-HK": "公共浴室", + "zh-TW": "公共澡堂" + } + }, + "amenity/public_bookcase": { + "title": { + "C": "Public Bookcase", + "ar": "خزانة كتب عامة", + "ast": "Biblioteca llibre", + "ca": "Biblioteca pública", + "cs": "Veřejná knihovnička", + "da": "Bogkasse", + "de": "Öffentlicher Bücherschrank", + "el": "Δημόσια Ανταλλακτική Βιβλιοθήκη", + "en-GB": "Public Bookcase", + "en": "Public Bookcase", + "eo": "Publika libroŝranko", + "es": "Biblioteca libre", + "et": "Avalik raamaturiiul", + "eu": "Apalategi publikoa", + "fa": "قفسه کتاب عمومی", + "fi": "Julkinen kirjahylly", + "fr": "Microbibliothèque", + "gl": "Estante pública", + "he": "ספריה", + "hr": "Javna knjižnica", + "hu": "Közösségi könyvespolc", + "is": "Almenningsbókakassi", + "it": "Libreria pubblica", + "ja": "公共の本棚", + "ko": "공공 책장", + "lv": "Publisks Grāmatplaukts", + "mk": "Јавен шкаф за книги", + "nl": "Openbare boekenkast", + "no": "Bokkiosk", + "pl": "Publiczna wymiana książek", + "pt-BR": "Biblioteca ao ar livre", + "pt": "Biblioteca de rua", + "ru": "Общественный книжный шкаф", + "sk": "Verejná knihovnička", + "sl": "Ulična knjižnica", + "sr": "Јавна библиотека", + "sv": "Offentlig bokhylla", + "tr": "Sokak Kütüphanesi", + "uk": "Книжкова шафа", + "vi": "Tủ sách Công cộng", + "zh-CN": "公共书架", + "zh-HK": "公眾書架", + "zh-TW": "漂書站" + } + }, + "amenity/ranger_station": { + "title": { + "C": "Ranger Station", + "ar": "محطة الحراسة", + "ast": "Guardes forestales", + "bs": "Stanica rendžerske službe", + "ca": "Base d'Agents Rurals", + "cs": "Návštěvnické centrum", + "da": "Rangerstation", + "de": "Ranger-Station", + "el": "Σταθμός Δασοφυλάκων", + "en-GB": "Warden Station", + "en": "Ranger Station", + "eo": "Naturrezerveja oficejo/impostbudo", + "es": "Estación de guardaparques", + "et": "Looduskeskus", + "eu": "Basozain geltokia", + "fa": "ایستگاه جنگلبانی", + "fi": "Metsävartiosto", + "fr": "Services publics des parcs nationaux", + "gl": "Estación de garda de bosques", + "he": "תחנת פקחים", + "hr": "Rendžerska postaja", + "hu": "Nemzeti park látogatóközpontja", + "is": "Landvarðastöð", + "it": "Guardiaparco", + "ja": "レンジャーの詰所", + "ko": "관리소", + "lt": "Girininkų stotis", + "mk": "Шумарска куќарка", + "ms": "Stesen Renjer", + "nl": "Boswachtershut", + "pl": "Baza strażników rezerwatu/parku", + "pt-BR": "Estação de patrulha", + "pt": "Posto de guarda florestal", + "ru": "Лесничество", + "sk": "Stanica horskej služby", + "sl": "Čuvaj parka", + "sr": "Шумарска станица", + "sv": "Friluftsanläggningen", + "tr": "Korucu İstasyonu", + "uk": "Контора лісництва", + "vi": "Trạm Kiểm lâm", + "yue": "郊野訪客處", + "zh-CN": "野郊访客处", + "zh-HK": "郊野公園遊客中心", + "zh-TW": "國家公園管理站" + } + }, + "recycling_type/centre": { + "title": { + "C": "Recycling Center" + } + }, + "recycling_type/container": { + "title": { + "C": "Recycling Container" + } + }, + "amenity/refugee_site": { + "title": { + "C": "Refugee Camp", + "ar": "مخيم لاجئين", + "cs": "Uprchlický tábor", + "de": "Flüchtlingslager", + "el": "Δομή Προσφύγων", + "en": "Refugee Camp", + "eo": "Kampadejo por rifuĝantoj", + "es": "Campamento de refugiados", + "fa": "اردوگاه پناهندگان", + "fi": "Pakolaisleiri", + "fr": "Camp de réfugiés", + "gl": "Campo de refuxiados", + "he": "מחנה פליטים", + "hu": "Menekülttábor", + "it": "Campo profughi", + "ja": "難民キャンプ", + "ko": "난민촌", + "mk": "Бегалски камп", + "nl": "Vluchtelingenkamp", + "pl": "Obóz uchodźców", + "pt-BR": "Campo de refugiados", + "pt": "Campo de refugiados", + "sk": "Utečenecký tábor", + "sr": "Избеглички камп", + "sv": "Flyktingläger", + "tr": "Mülteci Kampı", + "uk": "Табір біженців", + "vi": "Trại Tị nạn", + "yue": "難民營", + "zh-CN": "难民营", + "zh-TW": "難民營" + } + }, + "amenity/research_institute": { + "title": { + "C": "Research Institute Grounds", + "ar": "أراضي معهد بحوث", + "cs": "prostor výzkumného ústavu", + "da": "Forskningsinstitutsområde", + "de": "Forschungseinrichtung", + "en": "Research Institute Grounds", + "eo": "Esplorada instituto", + "es": "Terreno del Instituto de Investigación", + "fa": "محدوده مؤسسه تحقیقاتی / پژوهشکده زمین‌شناسی", + "fi": "Tutkimuslaitos", + "gl": "Área de Instituto de Investigación", + "he": "מתחם מכון מחקר", + "hu": "Kutatóintézet területe", + "it": "Istituto di ricerca", + "ja": "研究所", + "ko": "연구 기관 부지", + "mk": "Истражувачки институт", + "nl": "Gebied van een onderzoekscentrum", + "no": "Forskningsinstitutt Grunn", + "pl": "Instytut badawczy", + "pt-BR": "Área do instituto de pesquisa", + "pt": "Instituto de pesquisa", + "sk": "Výskumný ústav", + "sv": "Forskningsinstitutsområde", + "tr": "Araştırma Enstitüsü Alanı", + "uk": "Територія науково-дослідного інституту", + "vi": "Sân Viện nghiên cứu", + "zh-CN": "研究所场地", + "zh-TW": "研究機構場地" + } + }, + "amenity/restaurant": { + "title": { + "C": "Restaurant", + "af": "Restaurant", + "am": "ምግብ ቤት", + "ar": "مطعم", + "ast": "Restaurante", + "bg": "Ресторант", + "bn": "রেস্তোরাঁ", + "bs": "Restoran", + "ca": "Restaurant", + "ckb": "خواردنگە", + "cs": "Restaurace", + "da": "Restaurant", + "de": "Restaurant", + "dv": "ރެސްޓޯރަންޓް", + "el": "Εστιατόριο / Ταβέρνα", + "en-GB": "Restaurant", + "en": "Restaurant", + "eo": "Restoracio", + "es": "Restaurante", + "et": "Restoran", + "eu": "Jatetxe", + "fa": "رستوران", + "fi": "Ravintola", + "fr": "Restaurant", + "gl": "Restaurante", + "he": "מסעדה", + "hr": "Restoran", + "hu": "Étterem", + "id": "Restoran", + "is": "Veitingahús", + "it": "Ristorante", + "ja": "レストラン全般", + "kn": "ಉಪಾಹಾರ ಗೃಹ", + "ko": "음식점", + "lt": "Restoranas", + "lv": "Restorāns", + "mk": "Ресторан", + "ms": "Restoran", + "ne": "रेस्टुरेन्ट", + "nl": "Restaurant", + "no": "Restaurant", + "pl": "Restauracja", + "pt-BR": "Restaurante", + "pt": "Restaurante", + "ro": "Restaurant", + "ru": "Ресторан", + "sk": "Reštaurácia", + "sl": "Restavracija", + "so": "Maqaayad", + "sr": "Ресторан", + "sv": "Restaurang", + "ta": "உணவகம்", + "te": "రెస్టారెంట్", + "tr": "Lokanta", + "uk": "Ресторан", + "vi": "Nhà hàng", + "yue": "餐廳", + "zh-CN": "餐馆", + "zh-HK": "餐廳", + "zh-TW": "餐廳", + "zh": "餐馆" + } + }, + "amenity/sanitary_dump_station": { + "title": { + "C": "RV Toilet Disposal", + "ar": "مكب صرف صحي للكرفانات", + "ast": "Vertíu de depósitos d'autocaravanes", + "ca": "Estació de buidatge de lavabos", + "cs": "Výlevka pro karavany", + "da": "Bortskaffelse af sanitært affald", + "de": "Campingtoiletten-Entsorgungsanlage", + "en-GB": "RV Toilet Disposal", + "en": "RV Toilet Disposal", + "eo": "Stacio de forigo de fekaĵoj (kampado)", + "es": "Desecho de inodoro de casa rodante", + "fa": "دفع توالت RV", + "fi": "Asuntoautojen jäteveden tyhjennyspiste", + "fr": "Station de vidange sanitaire", + "gl": "Depósito sanitario para autocaravanas", + "he": "תחנת סילוק שפכים מקרוונים", + "hr": "Pražnjenje toaleta za kamp kućice", + "hu": "Szaniterürítő hely (lakóautóknak)", + "is": "Salernishreinsun fyrir bíla", + "it": "Smaltimento reflui camper", + "ja": "キャンピングカー用汚物廃棄所", + "ko": "RV 화장실 처리장", + "mk": "Исфрлање трајлерски фекалии", + "nl": "Kampeerauto-toilet-afvoer", + "no": "Bobil-tømmestasjon", + "pl": "Miejsce opróżniania toalety (dla kamperów)", + "pt-BR": "Ponto de descarga de dejetos (para trailers)", + "pt": "Escoamento sanitário para autocaravanas", + "ru": "Слив для туалета трейлеров", + "sk": "Vyprázdňovanie karavánových toaliet", + "sl": "Odlaganje fekalij za avtodome", + "sv": "Latrintömning för campingfordon", + "tr": "Tuvalet Atık Yeri", + "uk": "Місце зливу каналізації", + "vi": "Trạm Đổ Chất thải dành cho Nhà lưu động", + "zh-CN": "厕所卸污处", + "zh-HK": "露營車廁所廢物收集", + "zh-TW": "RV移動廁所" + } + }, + "amenity/school": { + "title": { + "C": "School Grounds", + "am": "ትምህርት ቤት", + "ar": "أرض مدرسة", + "ast": "Antoxana d'escuela", + "ca": "Escola", + "cs": "Prostor školy", + "da": "Skolegrund", + "de": "Schule, Schulgelände", + "dv": "ސްކޫލު ބިން", + "el": "Σχολείο", + "en-GB": "School Grounds", + "en": "School Grounds", + "eo": "Lernejo (ISCED 1-3)", + "es": "Terreno de escuela / colegio", + "et": "Kool", + "eu": "Eskola eremu", + "fa": "محیط مدرسه", + "fi": "Koulualue (peruskoulu/lukio/ammattikoulu)", + "fr": "École élémentaire ou secondaire (terrain)", + "gl": "Área escolar", + "he": "מגרש בית ספר", + "hr": "Škola i teren oko škole", + "hu": "Iskola területe", + "id": "Lingkungan Sekolah", + "is": "Skólalóð", + "it": "Area scolastica", + "ja": "学校(代表点または敷地)", + "ko": "학교 부지", + "lt": "Mokyklos kiemas", + "lv": "Skolas Zeme", + "mk": "Училиштен двор", + "ms": "Kawasan Sekolah", + "nl": "Schoolgebied", + "no": "Skoleområde", + "pl": "Szkoła podstawowa/średnia – teren (nie stosować na budynku!)", + "pt-BR": "Escola", + "pt": "Escola", + "ro": "Școală", + "ru": "Школа", + "sk": "Školský areál", + "sl": "Izobraževalno središče", + "so": "Goobaha Dugsiyada", + "sr": "Школско двориште", + "sv": "Skolområde", + "ta": "பள்ளி மைதானம்", + "tr": "Okul", + "uk": "Територія школи", + "vi": "Sân Trường", + "zh-CN": "学校", + "zh-HK": "學校範圍", + "zh-TW": "中小學範圍" + } + }, + "amenity/shelter": { + "title": { + "C": "Shelter", + "ar": "مأوى/عشة", + "ast": "Abellugu", + "bs": "Sklonište", + "ca": "Refugi", + "cs": "Přístřešek", + "da": "Læsted", + "de": "Wetterschutz", + "el": "Στέγαστρο", + "en-GB": "Shelter", + "en": "Shelter", + "eo": "Ŝirmejo", + "es": "Refugio", + "et": "Varjualune", + "eu": "Aterpetxe", + "fa": "پناهگاه", + "fi": "Katos", + "fr": "Abri", + "gl": "Abeiro", + "he": "מקלט", + "hr": "Sklonište", + "hu": "Esőbeálló", + "is": "Skýli", + "it": "Riparo", + "ja": "シェルター全般(休憩所、避難所)", + "kn": "ಅಡೆ", + "ko": "대피소", + "lt": "Pastogė", + "lv": "Pajumte", + "mk": "Засолниште", + "nl": "Beschutting", + "no": "Skur", + "pl": "Schronienie", + "pt-BR": "Abrigo contra intempéries", + "pt": "Abrigo", + "ru": "Укрытие от непогоды", + "sk": "Prístrešok", + "sl": "Zavetišče", + "sr": "Склониште", + "sv": "Väderskydd", + "tr": "Barınak", + "uk": "Притулок", + "vi": "Nhà trú", + "yue": "天遮或亭", + "zh-CN": "亭", + "zh-HK": "涼亭", + "zh-TW": "涼亭" + } + }, + "amenity/shower": { + "title": { + "C": "Shower", + "ar": "دش استحمام", + "ast": "Ducha", + "ca": "Dutxa", + "cs": "Sprchy", + "da": "Brusebad", + "de": "Dusche", + "el": "Ντουζιέρα", + "en-GB": "Shower", + "en": "Shower", + "eo": "Duŝejo", + "es": "Ducha", + "et": "Dušš", + "eu": "Dutxa", + "fa": "دوش", + "fi": "Suihku", + "fr": "Douche", + "gl": "Ducha", + "he": "מקלחת", + "hr": "Tuš", + "hu": "Zuhany", + "is": "Steypibað", + "it": "Doccia", + "ja": "シャワー室", + "ko": "샤워실", + "lt": "Dušas", + "lv": "Duša", + "mk": "Туш", + "nl": "Douche", + "no": "Dusj", + "pl": "Prysznic", + "pt-BR": "Ducha", + "pt": "Chuveiro", + "ru": "Душ", + "sk": "Sprcha", + "sl": "Tuš", + "sr": "Туш", + "sv": "Dusch", + "tr": "Banyo", + "uk": "Душ", + "vi": "Tắm đứng", + "zh-CN": "淋浴间", + "zh-HK": "淋浴處", + "zh-TW": "淋浴間" + } + }, + "amenity/smoking_area": { + "title": { + "C": "Smoking Area", + "ar": "منطقة مخصصة للتدخين", + "ca": "Àrea per a fumadors", + "ckb": "ناوچەی جگەرەکێشان", + "cs": "Kuřárna", + "da": "Rygeområde", + "de": "Raucherbereich", + "el": "Χώρος Καπνιστών", + "en-GB": "Smoking Area", + "en": "Smoking Area", + "eo": "Fumejo", + "es": "Área de fumadores", + "et": "Suitsetamise koht", + "eu": "Erretzeko gune", + "fa": "منطقه سیگار کشیدن", + "fi": "Tupakointialue", + "fr": "Zone fumeur", + "gl": "Zona de fumadores", + "he": "אזור עישון", + "hu": "Dohányzásra kijelölt terület", + "is": "Reykingasvæði", + "it": "Area fumatori", + "ja": "喫煙所", + "ko": "흡연 구역", + "lt": "Rūkymo vieta", + "lv": "Smēķēšanas vieta", + "mk": "Пушилница", + "nl": "Rookgebied", + "no": "Røykeområde", + "pl": "Palarnia", + "pt-BR": "Área de fumantes", + "pt": "Área para fumadores", + "ru": "Место для курения", + "sk": "Fajčiarska zóna", + "sr": "Област за пушаче", + "sv": "Rökområde", + "tr": "Sigara İçme Alanı", + "uk": "Місце для куріння", + "vi": "Khu vực Hút thuốc", + "zh-CN": "吸烟区域", + "zh-HK": "吸煙區", + "zh-TW": "吸煙區" + } + }, + "amenity/social_centre": { + "title": { + "C": "Social Center", + "ar": "مركز اجتماعي", + "cs": "Sociální středisko", + "de": "Sozialzentrum", + "el": "Κοινωνικό Κέντρο", + "en-AU": "Social Centre", + "en": "Social Center", + "eo": "Centro de socio", + "es": "Centro social", + "et": "Sotsiaalkeskus", + "fa": "مرکز اجتماعی", + "fi": "Sosiaalikeskus", + "fr": "Centre social", + "gl": "Centro social", + "he": "מרכז חברתי", + "hu": "Szociális központ", + "it": "Centro attività sociali", + "ja": "社交センター", + "mk": "Друштвен дом", + "nl": "Buurthuis", + "pl": "Centrum społecznościowe", + "pt-BR": "Centro social", + "pt": "Centro social", + "sk": "Spoločenské centrum", + "sr": "Дружтвени центар", + "sv": "Medborgarhus", + "tr": "Sosyal Merkez", + "uk": "Громадський центр", + "vi": "Hội trường", + "zh-CN": "社区交流中心", + "zh-TW": "社交中心" + } + }, + "amenity/social_facility": { + "title": { + "C": "Social Facility", + "ar": "مرفق اجتماعي", + "ast": "Serviciu social", + "ca": "Equipament social", + "cs": "Zařízení sociálních služeb", + "da": "Sociale faciliteter", + "de": "Sozialeinrichtung", + "el": "Μονάδα Κοινωνικών Υπηρεσιών", + "en-GB": "Social Facility", + "en": "Social Facility", + "eo": "Socia servejo", + "es": "Instalación social", + "et": "Sotsiaalkeskus", + "eu": "Gizarte-instalazio", + "fa": "خدمات اجتماعی", + "fi": "Sosiaalipalvelu", + "fr": "Établissement de services sociaux", + "gl": "Axuda Social", + "he": "מתקן שירותי רווחה", + "hr": "Socijalna ustanova", + "hu": "Szociális létesítmény", + "id": "Fasilitas Sosial", + "is": "Félagsþjónusta", + "it": "Centro socio-assistenziale", + "ja": "福祉施設", + "ko": "사회 복지 시설", + "mk": "Социјална служба", + "nl": "Sociale Faciliteit", + "pl": "Placówka pomocy społecznej", + "pt-BR": "Unidade de assistência social", + "pt": "Serviços sociais", + "ro": "Facilitate Socială", + "ru": "Социальное учреждение", + "sk": "Sociálne zariadenie", + "sl": "Socialnovarstvena ustanova", + "sr": "Социјална установа", + "sv": "Social inrättning", + "tr": "Okul Tesisleri", + "uk": "Соціальний центр", + "vi": "Dịch vụ Xã hội", + "zh-CN": "社会服务设施", + "zh-HK": "社會服務設施", + "zh-TW": "社福機構" + } + }, + "amenity/studio": { + "title": { + "C": "Studio", + "am": "ስቱዲዮ", + "ar": "أستوديو", + "ast": "Estudiu", + "bs": "Studio", + "ca": "Estudi", + "ckb": "ستۆدیۆ", + "cs": "Studio", + "da": "Studie", + "de": "Ton-/Fernsehstudio", + "el": "Στούντιο", + "en-GB": "Studio", + "en": "Studio", + "eo": "Studio", + "es": "Estudio de grabación", + "et": "Stuudio", + "eu": "Estudio", + "fa": "استدیو", + "fi": "Studio", + "fr": "Studio", + "gl": "Estudio", + "he": "סטודיו", + "hr": "Studio", + "hu": "Stúdió", + "id": "Studio", + "is": "Upptökustúdíó", + "it": "Studio radiotelevisivo", + "ja": "スタジオ", + "ko": "스튜디오", + "lt": "Studija", + "lv": "Studija", + "mk": "Студио", + "ms": "Studio", + "nl": "Studio", + "no": "Studio", + "pl": "Studio", + "pt-BR": "Estúdio de rádio/TV ou de gravação", + "pt": "Estúdio", + "ro": "Studio", + "ru": "Студия", + "sk": "Štúdio", + "sl": "Studio", + "sr": "Студио", + "sv": "Studio", + "tr": "Stüdyo", + "uk": "Студія", + "vi": "Studio", + "zh-CN": "工作室", + "zh-HK": "工作室", + "zh-TW": "工作室" + } + }, + "amenity/taxi": { + "title": { + "C": "Taxi Stand", + "af": "Taxi staanplek", + "am": "ታክሲ", + "ar": "موقف تاكسي", + "ast": "Parada de taxis", + "bg": "Такси стоянка", + "bs": "Taxi stajalište", + "ca": "Parada de Taxi", + "cs": "Stanoviště taxi", + "da": "Taxiholdeplads", + "de": "Taxistand", + "el": "Πιάτσα Ταξί", + "en-GB": "Taxi Stand", + "en": "Taxi Stand", + "eo": "Taksistacio", + "es": "Parada de taxi", + "et": "Taksopeatus", + "eu": "Taxi postu", + "fa": "تاکسی", + "fi": "Taksitolppa", + "fr": "Station de taxi", + "gl": "Parada de taxi", + "he": "עמדת מוניות", + "hr": "Taksi stajalište", + "hu": "Taxiállomás", + "id": "Tempat Tunggu Taksi", + "is": "Leigubílastæði", + "it": "Posteggio Taxi", + "ja": "タクシー乗り場", + "kn": "‍ಕಾರು ನಿಲ್ಡಾಣ", + "ko": "택시 승차장", + "lt": "Taksi stendas", + "mk": "Такси-постојка", + "ms": "Tempat Menunggu Teksi", + "nl": "Taxistandplaats", + "no": "Taxiholdeplass", + "pl": "Postój taksówek", + "pt-BR": "Ponto de Táxi", + "pt": "Praça de táxis", + "ro": "Stand de Taxi", + "ru": "Стоянка такси", + "sk": "Stanovisko taxíkov", + "sl": "Postajališče za taksi", + "sr": "Такси стајалиште", + "sv": "Taxihållplats", + "tr": "Taksi Durağı", + "uk": "Стоянка таксі", + "vi": "Bến Tắc xi", + "yue": "的士站", + "zh-CN": "出租车停车处", + "zh-HK": "的士站", + "zh-TW": "計程車招呼站" + } + }, + "amenity/telephone": { + "title": { + "C": "Telephone", + "af": "Telefoon", + "am": "የህዝብ ስልክ", + "ar": "هاتف", + "ast": "Teléfonu", + "bg": "Телефон", + "bn": "টেলিফোন", + "bs": "Telefon", + "ca": "Telèfon", + "ckb": "تەلەفۆن", + "cs": "Telefon", + "da": "Telefon", + "de": "Telefon", + "el": "Τηλέφωνο", + "en-GB": "Telephone", + "en": "Telephone", + "eo": "Telefono", + "es": "Teléfono", + "et": "Taksofon", + "eu": "Telefono", + "fa": "تلفن عمومی", + "fi": "Yleinen puhelin", + "fr": "Téléphone", + "gl": "Teléfono", + "he": "טלפון", + "hr": "Telefon", + "hu": "Telefon", + "id": "Telepon", + "is": "Sími", + "it": "Telefono", + "ja": "公衆電話", + "kn": "ದುರವಾಣಿ", + "ko": "전화", + "lt": "Telefonas", + "lv": "Telefons", + "mk": "Телефон", + "ms": "Telefon", + "nl": "Telefoon", + "no": "Telefon", + "pl": "Telefon", + "pt-BR": "Telefone público", + "pt": "Telefone", + "ro": "Telefon", + "ru": "Телефон", + "sk": "Telefón", + "sl": "Telefon", + "sr": "Телефонска говорница", + "sv": "Telefon", + "ta": "தொலைபேசி", + "tr": "Telefon", + "uk": "Телефон", + "vi": "Điện thoại", + "yue": "電話", + "zh-CN": "电话", + "zh-HK": "電話", + "zh-TW": "公用電話", + "zh": "电话" + } + }, + "amenity/theatre": { + "title": { + "C": "Theater", + "af": "Teater", + "am": "ቲያትር ቤት", + "ar": "مسرح", + "ast": "Teatru", + "bg": "Театър", + "bn": "থিয়েটার", + "bs": "Pozorište", + "ca": "Teatre", + "ckb": "شانۆ", + "cs": "Divadlo", + "da": "Teater", + "de": "The­a­ter", + "el": "Θέατρο", + "en-GB": "Theatre", + "en": "Theater", + "eo": "Teatrejo", + "es": "Teatro", + "et": "Teater", + "eu": "Antzoki", + "fa": "تئاتر", + "fi": "Teatteri", + "fr": "Théâtre", + "gl": "Teatro", + "he": "תאטרון", + "hr": "Kazalište", + "hu": "Színház", + "id": "Teater", + "is": "Leikhús", + "it": "Teatro", + "ja": "劇場", + "kn": "ಚಿತ್ರಮಂದಿರ", + "ko": "극장", + "lt": "Teatras", + "lv": "Teātris", + "mk": "Театар", + "ms": "Teater", + "nl": "Theater", + "no": "Teater", + "pl": "Teatr", + "pt-BR": "Teatro", + "pt": "Teatro", + "ro": "Teatru", + "ru": "Театр", + "sk": "Divadlo", + "sl": "Gledališče", + "sr": "Позориште", + "sv": "Teater", + "ta": "திரையரங்கம்", + "tr": "Tiyatro", + "uk": "Театр", + "vi": "Nhà hát", + "yue": "舞臺戲院", + "zh-CN": "剧院", + "zh-HK": "劇院", + "zh-TW": "戲劇院", + "zh": "剧院" + } + }, + "amenity/toilets": { + "title": { + "C": "Toilets", + "af": "Toilette", + "am": "መፀዳጃ ቤት", + "ar": "دورات مياه", + "ast": "Aseos", + "bg": "Тоалетна", + "bn": "শৌচাগার", + "bs": "Toaleti", + "ca": "Lavabos", + "ckb": "ئاودەست", + "cs": "Toalety", + "da": "Toiletter", + "de": "Toilette", + "dv": "ފާޚާނާ", + "el": "Τουαλέτες", + "en-GB": "Toilets", + "en": "Toilets", + "eo": "Necesejo", + "es": "Baños", + "et": "Tualett", + "eu": "Komun", + "fa": "سرویس بهداشتی", + "fi": "WC", + "fr": "Toilettes publiques", + "gl": "Aseos", + "he": "בתי שימוש", + "hr": "Toalet", + "hu": "WC", + "id": "Toilet", + "is": "Salerni", + "it": "Bagni", + "ja": "トイレ", + "kn": "ಶೌಚಾಲಯ", + "ko": "화장실", + "lt": "Tualetas", + "lv": "Tualete", + "mk": "Тоалет", + "ms": "Tandas", + "nl": "Toiletten", + "no": "Toaletter", + "pl": "Toalety publiczne", + "pt-BR": "Banheiros públicos", + "pt": "Casas de banho", + "ro": "Toaletă", + "ru": "Туалет", + "sk": "Toalety", + "sl": "Stranišča", + "so": "Musqulo", + "sr": "Тоалети", + "sv": "Toaletter", + "ta": "கழிவறைகள்", + "te": "మరుగుదొడ్లు", + "tr": "Tuvalet", + "uk": "Туалет", + "vi": "Phòng Vệ sinh", + "yue": "廁所", + "zh-CN": "厕所", + "zh-HK": "廁所", + "zh-TW": "廁所", + "zh": "厕所" + } + }, + "amenity/townhall": { + "title": { + "C": "Town Hall", + "af": "Stadsaal", + "ar": "مبنى البلدية/المركز الإداري", + "ast": "Edificiu municipal", + "bg": "Кметство", + "bn": "টাউন হল", + "bs": "Gradska vijećnica", + "ca": "Ajuntament", + "cs": "Radnice", + "da": "Rådhus", + "de": "Rathaus", + "el": "Δημαρχείο", + "en-GB": "Town Hall", + "en": "Town Hall", + "eo": "Urbodomo", + "es": "Ayuntamiento / Municipalidad", + "et": "Linnahall", + "eu": "Udaletxe", + "fa": "شهرداری", + "fi": "Kunnantalo", + "fr": "Mairie, hôtel de ville", + "gl": "Casa do Concello", + "he": "בניין עירייה", + "hr": "Gradska vijećnica", + "hu": "Városháza", + "id": "Balai Kota", + "is": "Ráðhús", + "it": "Municipio", + "ja": "役場", + "ko": "마을 회관", + "lt": "Rotušė", + "lv": "Pilsētas dome", + "mk": "Градски дом", + "ms": "Dewan Perbandaran", + "nl": "Gemeentehuis", + "no": "Rådhus", + "pl": "Ratusz", + "pt-BR": "Paço municipal ou prefeitura", + "pt": "Câmara municipal / Junta de freguesia", + "ro": "Primărie", + "ru": "Администрация", + "sk": "Mestský úrad", + "sl": "Mestna hiša", + "sr": "Градска кућа", + "sv": "Kommunhus", + "ta": "நகராட்சிமன்றம்", + "tr": "Belediye Binası", + "uk": "Міська державна адміністрація", + "vi": "Tòa thị chính Thị xã", + "yue": "大會堂", + "zh-CN": "市政府", + "zh-HK": "大會堂", + "zh-TW": "鄉鎮市區公所", + "zh": "市政府" + } + }, + "amenity/toy_library": { + "title": { + "C": "Toy Library", + "cs": "půjčovna hraček", + "de": "Spielzeugbibliothek", + "el": "Βιβλιοθήκη Παιγνίων", + "en": "Toy Library", + "eo": "Ludil‑biblioteko", + "es": "Biblioteca de juguetes", + "fa": "قفسه اسباب‌بازی", + "fi": "Lelukirjasto", + "fr": "Ludothèque", + "gl": "Biblioteca de xoguetes", + "he": "ספריית צעצועים", + "hu": "Játékkölcsönző", + "it": "Ludoteca", + "ja": "おもちゃ資料館", + "mk": "Зајмување играчки", + "nl": "Spelotheek", + "no": "Lekebibliotek", + "pl": "Wypożyczalnia gier i zabawek", + "pt-BR": "Brinquedoteca ou ludoteca", + "pt": "Brinquedoteca", + "sk": "Knižnica hračiek", + "sv": "Leksaksbibliotek", + "tr": "Oyuncak Kütüphanesi", + "uk": "Прокат іграшок", + "vi": "Thư viện Đồ chơi", + "zh-CN": "玩具游乐/租赁店", + "zh-TW": "玩具圖書館" + } + }, + "amenity/university": { + "title": { + "C": "University Grounds", + "am": "ዩኒቨርሲቲ", + "ar": "أرض الجامعة", + "ast": "Campus universitariu", + "ca": "Campus universitari", + "cs": "Prostor vysoké školy", + "da": "Universitetsområde", + "de": "Universitätsgelände", + "el": "Χώρος Πανεπιστημίου", + "en-GB": "University Grounds", + "en": "University Grounds", + "eo": "Altgrada lernejo (ISCED 5-7)", + "es": "Terreno de universidad", + "et": "Ülikooliala", + "eu": "Unibertsitatearen eremua", + "fa": "محوطه دانشگاه", + "fi": "Yliopistokampus", + "fr": "Université, enseignement supérieur universitaire - institution ou campus (terrain)", + "gl": "Área universitaria", + "he": "מתחם אוניברסיטה", + "hr": "Sveučilišno zemljište", + "hu": "Egyetem területe", + "id": "Lingkungan Universitas", + "is": "Háskólalóð", + "it": "Area universitaria", + "ja": "大学(代表点または敷地)", + "ko": "대학 부지", + "lt": "Universiteto kiemas", + "mk": "Универзитетски двор", + "ms": "Kawasan Universiti", + "nl": "Campus van universiteit of hogeschool", + "no": "Universitetsområde", + "pl": "Teren uczelni", + "pt-BR": "Universidade ou faculdade", + "pt": "Universidade", + "ro": "Universitate", + "ru": "Университет / Институт", + "sk": "Univerzita", + "sl": "Univerzitetno območje", + "sr": "Универзитетски кампус", + "sv": "Universitetsområde", + "ta": "பல்கலைக்கழகத் திடல்", + "tr": "Üniversite Yerleşkesi", + "uk": "Територія університету", + "vi": "Sân trường Đại học", + "zh-CN": "大学", + "zh-HK": "大學範圍", + "zh-TW": "大學範圍" + } + }, + "amenity/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaning Station", + "ar": "محطة مكنسة سيارات", + "cs": "Vysavač", + "de": "Auto-Staubsauganlage", + "el": "Σταθμός Ηλεκτρικής Σκούπας", + "en": "Vacuum Cleaning Station", + "eo": "Polvosuĉilo", + "es": "Estación de limpieza con aspiradora", + "fa": "ایستگاه جاروبرقی", + "fr": "Station d'aspirateurs pour nettoyage automobile", + "he": "תחנת שאיבת אבק", + "hu": "Porszívó", + "it": "Stazione di Aspirapolvere per Interni", + "ja": "ゴミ吸取機", + "mk": "Постројка за правосмукање", + "nl": "Stofzuiger", + "pl": "Odkurzacz", + "pt-BR": "Estação de aspiração", + "pt": "Posto de aspiração", + "sk": "Stanica s vysávačom", + "sv": "Dammsugarstation", + "tr": "Elektrikli Süpürge İstasyonu", + "uk": "Стаціонарний пилотяг", + "vi": "Trạm Hút bụi", + "zh-CN": "真空清洁站", + "zh-TW": "吸塵器站" + } + }, + "amenity/vehicle_inspection": { + "title": { + "C": "Vehicle Inspection", + "ar": "الفحص الدوري", + "ca": "Inspecció de vehicles", + "cs": "Kontrola vozidel", + "de": "Fahrzeuginspektion", + "el": "Επιθεώρηση Οχήματος", + "en": "Vehicle Inspection", + "eo": "Aŭtomobil-kontrolejo", + "es": "Inspección vehicular", + "fa": "مرکز معاینه فنی خودرو", + "fi": "Katsastusasema", + "fr": "Centre de contrôle technique", + "gl": "Inspección de vehículo", + "he": "בדיקת כלי רכב", + "hr": "Tehnički pregled vozila", + "hu": "Műszaki vizsgáló állomás", + "is": "Skoðun farartækja", + "it": "Ispezione veicolo", + "ja": "車検場", + "ko": "차량 점검", + "mk": "Преглед на возила", + "nl": "Voertuigkeuring", + "pl": "Stacja kontroli pojazdów", + "pt-BR": "Inspeção veicular", + "pt": "Centro de inspeção de veículos", + "ru": "Станция техосмотра", + "sk": "Stanica technickej kontroly", + "sv": "Fordonsbesiktning", + "tr": "Araç denetleme", + "uk": "Техогляд траспортних засобів", + "vi": "Trạm Kiểm tra Xe", + "zh-CN": "车辆检查站", + "zh-TW": "車輛檢查" + } + }, + "amenity/vending_machine": { + "title": { + "C": "Vending Machine", + "ar": "ماكينة البيع الذاتي", + "ast": "Máquina de venta automática", + "bg": "Автомат за стоки", + "ca": "Màquina de vending", + "cs": "Prodejní automat", + "da": "Salgsautomat", + "de": "Verkaufsautomat", + "el": "Αυτόματος Πωλητής", + "en-GB": "Vending Machine", + "en": "Vending Machine", + "eo": "Vendilo", + "es": "Máquina expendedora", + "eu": "Makina saltzaile", + "fa": "دستگاه فروش خودکار", + "fi": "Myyntiautomaatti", + "fr": "Distributeur automatique", + "gl": "Máquina expendedora", + "he": "מכונת ממכר", + "hr": "Automat za prodaju", + "hu": "Árusító automata", + "is": "Sjálfsali", + "it": "Distributore automatico", + "ja": "自動販売機", + "ko": "자동판매기", + "lt": "Prekybos automatas", + "lv": "Tirdzniecības automāts", + "mk": "Продажен автомат", + "ms": "Mesin Layan Diri", + "nl": "Automaat", + "no": "Automat", + "pl": "Automat sprzedający", + "pt-BR": "Máquina de venda", + "pt": "Máquina de venda automática", + "ru": "Торговый автомат", + "sk": "Výdajný automat", + "sl": "Prodajni avtomat", + "sr": "Аутомат", + "sv": "Varuautomat", + "tr": "Otomatik Satış Makinası", + "uk": "Торговельний автомат", + "vi": "Máy Bán Hàng", + "zh-CN": "自动售货机", + "zh-HK": "售賣機", + "zh-TW": "自動販賣機" + } + }, + "amenity/veterinary": { + "title": { + "C": "Veterinary", + "am": "የእንስሳት መድሃኒት ቤት", + "ar": "عيادة بيطرية", + "ast": "Veterinariu", + "ca": "Veterinari", + "ckb": "ڤێتێرنەری", + "cs": "Veterina", + "da": "Dyrlæge", + "de": "Tierarztpraxis", + "el": "Κτηνιατρείο", + "en-GB": "Veterinary", + "en": "Veterinary", + "eo": "Bestokuracistejo", + "es": "Veterinario", + "et": "Loomaarst", + "eu": "Albaitari", + "fa": "دامپزشکی", + "fi": "Eläinlääkäri", + "fr": "Vétérinaire", + "gl": "Veterinario", + "he": "וטרינר", + "hr": "Veterinar", + "hu": "Állatorvos", + "id": "Dokter Hewan", + "is": "Dýralæknir", + "it": "Veterinario", + "ja": "獣医", + "kn": "ಪಶುವೈದ್ಯಕೀಯ", + "ko": "동물병원", + "lt": "Veterinarija", + "lv": "Veternārārsts", + "mk": "Ветеринар", + "ms": "Veterinar", + "nl": "Dierenarts", + "no": "Veterinær", + "pl": "Weterynarz", + "pt-BR": "Veterinário", + "pt": "Veterinário", + "ro": "Medic Veterinar", + "ru": "Ветеринар", + "sk": "Veterinár", + "sl": "Veterinar", + "sr": "Ветеринарница", + "sv": "Veterinär", + "tr": "Veteriner", + "uk": "Ветеринарна лікарня", + "vi": "Thú y", + "zh-CN": "动物医院", + "zh-HK": "獸醫", + "zh-TW": "獸醫院" + } + }, + "amenity/waste_basket": { + "title": { + "C": "Waste Basket", + "af": "Asblik", + "ar": "سلة مهملات", + "ast": "Papelera", + "bg": "Кош за боклук", + "bs": "Kanta za otpatke", + "ca": "Paperera", + "cs": "Odpadkový koš", + "da": "Skraldespand", + "de": "Mülleimer", + "el": "Καλάθι Απορριμμάτων", + "en-GB": "Rubbish Bin", + "en": "Waste Basket", + "eo": "Rubujo", + "es": "Papelera", + "et": "Prügikast", + "fa": "سطل زباله", + "fi": "Roskakori", + "fr": "Poubelle pour piétons", + "gl": "Papeleira", + "he": "סל אשפה", + "hr": "Kanta za smeće", + "hu": "Szemeteskosár", + "id": "Tong Sampah", + "is": "Ruslafata", + "it": "Cestino della spazzatura", + "ja": "ゴミ箱", + "ko": "쓰레기통", + "lt": "Šiukšliadėžė", + "lv": "Atkritumu grozs", + "mk": "Корпа за отпадоци", + "nl": "Vuilnisbak", + "no": "Søppel", + "pl": "Kosz na śmieci", + "pt-BR": "Lixeira", + "pt": "Caixote do lixo", + "ru": "Мусорная корзина", + "sk": "Odpadový kôš", + "sl": "Koš za odpadke", + "sr": "Корпа за отпатке", + "sv": "Soptunna (liten)", + "tr": "Çöp Kutusu", + "uk": "Бак для сміття", + "vi": "Thùng rác", + "yue": "垃圾桶", + "zh-CN": "垃圾桶", + "zh-HK": "垃圾桶", + "zh-TW": "垃圾筒", + "zh": "垃圾箱" + } + }, + "amenity/waste_disposal": { + "title": { + "C": "Garbage Dumpster", + "ar": "حاوية قمامة متحركة", + "ast": "Contenedor de basoria", + "ca": "Contenidor d'escombraries", + "cs": "Kontejner na směsný odpad", + "da": "Skraldespand", + "de": "Müllcontainer", + "el": "Κάδος απορριμμάτων", + "en-GB": "Garbage Dumpster", + "en": "Garbage Dumpster", + "eo": "Rubujego (miksita)", + "es": "Contenedor de residuos", + "et": "Prügikonteiner", + "fa": "زباله‌دان بزرگ", + "fi": "Jäteastia", + "fr": "Bac à déchets", + "gl": "Contedor de lixo", + "he": "פח אשפה", + "hr": "Kontejner za smeće", + "hu": "Szemeteskonténer", + "is": "Ruslagámur", + "it": "Cassonetto del pattume", + "ja": "ゴミ収集ボックス", + "ko": "쓰레기 수거함", + "lt": "Šiukšlių konteineris", + "lv": "Atkritumu konteiners", + "mk": "Контејнер", + "nl": "Kleine afvalcontainer", + "no": "Søppelkonteiner", + "pl": "Śmietnik", + "pt-BR": "Contêiner de lixo não reciclável", + "pt": "Contentor de lixo", + "ro": "Container de Gunoi", + "ru": "Мусорный бак", + "sk": "Odpadkový kontajner", + "sl": "Zabojnik za odpadke", + "sr": "Контејнер за смеће", + "sv": "Soptunna (hushålls- eller industrisopor)", + "tr": "Çöp Tenekesi", + "uk": "Контейнер для сміття", + "vi": "Thùng Rác Lớn", + "zh-CN": "大型垃圾箱", + "zh-HK": "大型垃圾箱", + "zh-TW": "垃圾場" + } + }, + "amenity/waste_transfer_station": { + "title": { + "C": "Waste Transfer Station", + "ar": "محطة نقل النفايات", + "ast": "Estación de tresferencia de basoria", + "ca": "Centre de tractament de residus", + "cs": "Překládací stanice odpadu", + "da": "Affaldsstation", + "de": "Müllumladestation", + "el": "Σταθμός Μεταφοράς Απορριμμάτων", + "en-GB": "Waste Transfer Station", + "en": "Waste Transfer Station", + "eo": "Stacio de rubmastrumado", + "es": "Estación de transferencia de residuos", + "fa": "ایستگاه انتقال زباله", + "fi": "Jätteiden putkikeräysasema", + "fr": "Installation de transit, regroupement ou tri de déchets", + "gl": "Estación de bombeo de augas residuais", + "he": "תחנת מעבר זבל", + "hu": "Hulladékátrakodó", + "is": "Sorpflokkunarstöð", + "it": "Centro Raccolta Rifiuti", + "ja": "ゴミ集積場", + "ko": "쓰레기 운반장", + "mk": "Претоварна отпадна станица", + "nl": "Afval-transfer-station", + "pl": "Stacja przeładunku odpadów", + "pt-BR": "Estação de transferência de resíduos", + "pt": "Estação de transferência de lixo", + "ru": "Канализационно-насосная станция", + "sk": "Stanica na prepravu odpadu", + "sl": "Zbirni center odpadkov", + "sr": "Станица за пренос отпада", + "sv": "Avfallscentral", + "tr": "Çöp Transfer İstasyonu", + "uk": "Сміттєперевантажувальна станція", + "vi": "Trạm Trung chuyển Chất thải", + "zh-CN": "垃圾中转站", + "zh-HK": "垃圾轉運站", + "zh-TW": "垃圾清運站" + } + }, + "amenity/water_point": { + "title": { + "C": "RV Drinking Water", + "ar": "مياه شرب لمقطورات السفر والتخييم", + "ast": "Agua potable pa caravanes", + "ca": "Aigua potable d'autocaravana", + "cs": "Pitná voda pro karavany", + "da": "Tankning af drikkevand", + "de": "Camping-Trinkwasser", + "el": "Πόσιμο Νερό Αυτοκινούμενου Τροχόσπιτου", + "en-GB": "RV Drinking Water", + "en": "RV Drinking Water", + "eo": "Trinkakvejo (kampado)", + "es": "Recarga de agua potable para autocaravanas", + "fa": "آب آشامیدنی", + "fi": "Asuntoauton vesipiste", + "fr": "Eau potable pour citerne de véhicule de loisirs", + "gl": "Auga potábel para autocaravanas", + "he": "מי שתייה לקרוואן", + "hr": "Pitka voda za kamp kućice", + "hu": "Ivóvíz-csatlakozás lakóautónak", + "is": "Drykkjarvatn fyrir bíla", + "it": "Acqua potabile per camper", + "ja": "キャンピングカー用の給水施設", + "ko": "RV 식수대", + "mk": "Пивка вода за трајлери", + "nl": "Waterpunt voor kampeerauto's", + "no": "Bobil Drikkevann", + "pl": "Woda pitna dla kamperów/łodzi", + "pt-BR": "Torneira de água potável", + "pt": "Água potável para autocaravanas", + "ru": "Питьевая вода для трейлера", + "sk": "Pitná voda pre karavany", + "sl": "Pitna voda za avtodome", + "sv": "Dricksvatten för campingfordon", + "tr": "İçme Suyu", + "uk": "Заправка питною водою", + "vi": "Vòi Nước uống dành cho Nhà lưu động", + "zh-CN": "直饮水", + "zh-HK": "露營車飲用水", + "zh-TW": "RV 飲用水" + } + }, + "amenity/watering_place": { + "title": { + "C": "Animal Watering Place", + "ar": "حوض تروية للحيوانات", + "ast": "Bebederu p'animales", + "ca": "Font d'aigua per animals", + "cs": "Napajedlo pro zvířata", + "da": "Dyrevandtrug", + "de": "Tränke", + "el": "Ποτίστρα Ζώων", + "en-GB": "Animal Watering Place", + "en": "Animal Watering Place", + "eo": "Akvotrinkejo por bestoj", + "es": "Abrevadero para animales", + "fa": "آبشخور حیوانات", + "fi": "Eläinten juomapaikka", + "fr": "Point d'eau pour animaux", + "gl": "Bebedoiro de animais", + "he": "מקור מים לחיות", + "hu": "Állatitató", + "is": "Brynning fyrir dýr", + "it": "Abbeveratoio", + "ja": "動物の水飲み場", + "ko": "동물 급수 장소", + "mk": "Поило за миленици", + "nl": "Drinkplaats voor dieren", + "no": "Dyrevanningssted", + "pl": "Poidło dla zwierząt", + "pt-BR": "Bebedouro para animais", + "pt": "Bebedouro para animais", + "ru": "Водопой для животных", + "sk": "Miesto na napájanie zvierat", + "sl": "Napajališče za živali", + "sr": "Појило", + "sv": "Dricksvatten för djur", + "tr": "Hayvan Yıkama Yeri", + "uk": "Водопій", + "vi": "Nước Uống dành cho Thú vật", + "zh-CN": "动物饮水地", + "zh-HK": "動物飲水處", + "zh-TW": "動物飲水區" + } + }, + "amenity/weighbridge": { + "title": { + "C": "Truck Scale", + "ar": "ميزان شاحانات", + "cs": "váha pro kamiony", + "da": "Brovægt", + "de": "Brückenwaage, LKW-Waage", + "en": "Truck Scale", + "eo": "Pesilo por aŭtomobiloj", + "es": "Báscula de camiones", + "fa": "باسکول کامیون", + "fi": "Rekkavaaka / rautatievaaka", + "fr": "pont bascule", + "gl": "Balanza de camións", + "he": "משקל משאיות", + "hu": "Hídmérleg", + "it": "Bilancia per camion", + "ja": "トラックスケール", + "ko": "트럭 저울", + "mk": "Мосна вага", + "nl": "Weegbrug", + "no": "Lastebilvekt", + "pl": "Waga dla pojazdów", + "pt-BR": "Balança de caminhão", + "pt": "Balança rodoviária", + "sk": "Váha pre nákladné vozidlá", + "sr": "Камионска вага", + "sv": "Lastbilsvåg", + "tr": "Kamyon Kantarı", + "uk": "Автомобільні ваги", + "vi": "Trạm Cân Xe tải", + "zh-CN": "汽车衡", + "zh-TW": "地磅" + } + }, + "leisure/adult_gaming_centre": { + "title": { + "C": "Adult Gaming Center", + "ast": "Centru de xuegos p'adultos", + "ca": "Centre d'oci adult", + "cs": "Herna (hrací automaty)", + "da": "Voksen spillecenter", + "de": "Spielothek für Erwachsene", + "el": "Κέντρο Παιχνιδιών Ενηλίκων", + "en-AU": "Adult Gaming Centre", + "en-GB": "Adult Gaming Centre", + "en": "Adult Gaming Center", + "eo": "Hazardludejo (enĵet-maŝinoj)", + "es": "Centro de juegos para adultos", + "fa": "مرکز بازی بزرگسالان", + "fi": "Uhkapelipelaamo", + "fr": "Jeux pour adultes", + "gl": "Centro recreativo para adultos", + "he": "מרכז בידור למבוגרים", + "hu": "Játékterem (csak felnőtteknek)", + "id": "Pusat permainan dewasa", + "is": "Fjárhættuspilasalur", + "it": "Sala da gioco", + "ja": "遊技場(成人向け)", + "ko": "성인용 게임방", + "lt": "Suaugusiųjų lošimų vieta", + "mk": "Игротека за возрасни", + "nl": "Speelzaal (met kansspelmachines)", + "no": "Spillekasino", + "pl": "Salon gier hazardowych", + "pt-BR": "Centro de Jogos para Adultos", + "pt": "Centro de jogos para adultos", + "ru": "Игровые автоматы (азартные, на деньги)", + "sk": "Výherné automaty", + "sl": "Igralnica za odrasle", + "sv": "Center för vuxenspel", + "tr": "Yetişkin Oyun Merkezi", + "uk": "Гральні автомати", + "vi": "Trung tâm Đánh bạc", + "zh-CN": "成人街机厅", + "zh-HK": "成人遊戲中心", + "zh-TW": "成人遊戲中心" + } + }, + "leisure/amusement_arcade": { + "title": { + "C": "Amusement Arcade", + "cs": "Herna", + "da": "Spillehal", + "de": "Spielhalle für Unterhaltungsspiele", + "el": "Αίθουσα Ψυχαγωγίας", + "en-GB": "Amusement Arcade", + "en": "Amusement Arcade", + "eo": "Salono de ludoj", + "es": "Sala recreativa de videojuegos", + "et": "Videomängumasin", + "fa": "بازی تفریحی / سالن سرگرمی", + "fi": "Pelihalli", + "fr": "Salle de jeux", + "gl": "Sala de xogos recreativos", + "he": "משחקי ארקייד", + "hu": "Játékterem (kiskorúaknak is)", + "is": "Spilasalur", + "it": "Sala giochi", + "ja": "ゲームセンター", + "ko": "오락실", + "mk": "Забавна аркада", + "nl": "Speelhal", + "pl": "Salon gier", + "pt-BR": "Fliperama", + "pt": "Salão de jogos", + "ru": "Игровые автоматы", + "sv": "Arkadhall", + "tr": "Oyun Salonu", + "uk": "Ігрові автомати", + "vi": "Khu Trò chơi Điện tử", + "zh-CN": "游戏厅/电玩城", + "zh-TW": "遊樂場" + } + }, + "leisure/bandstand": { + "title": { + "C": "Bandstand", + "cs": "Kryté pódium", + "da": "Orkesterpavillon", + "de": "Musikpavillon", + "el": "Εξέδρα Συναυλιών", + "en": "Bandstand", + "eo": "Orkestrejeto", + "es": "Quiosco de música", + "fa": "محل دسته موسیقی (در پارک یا فضای باز)", + "fi": "Pieni esiintymislava", + "fr": "Kiosque à musique", + "gl": "Palco de música", + "he": "בימת תזמורת", + "hu": "Zenepavilon", + "is": "Hljómsveitapallur", + "it": "Chiosco della musica", + "ja": "野外音楽堂", + "ko": "연주 무대", + "mk": "Оркестарска естрада", + "nl": "Podium", + "pl": "Muszla koncertowa / estrada", + "pt-BR": "Coreto", + "pt": "Coreto", + "ru": "Площадка для музыкантов", + "sk": "Hudobný pavilón", + "sv": "Musikestrad", + "tr": "Bando standı", + "uk": "Естрада", + "vi": "Bục Dàn nhạc", + "zh-CN": "小型演奏台", + "zh-TW": "演奏臺" + } + }, + "leisure/beach_resort": { + "title": { + "C": "Beach Resort", + "ar": "منتجع الشاطئ", + "cs": "spravovaná pláž", + "da": "Strandresort", + "de": "Strandresort", + "el": "Παραθαλάσσιο Θέρετρο", + "en-GB": "Beach Resort", + "en": "Beach Resort", + "eo": "Sablobordo administrata (kun oportunaĵoj)", + "es": "Balneario", + "et": "Rannakuurort", + "fa": "تفرجگاه ساحلی", + "fi": "Rantalomakohde", + "fr": "Station balnéaire", + "gl": "Estancia de praia", + "he": "אתר נופש על החוף", + "hr": "Kupalište", + "hu": "Fürdőhely, vízparti strand", + "is": "Strandbær", + "it": "Stabilimento balneare", + "ja": "ビーチリゾート", + "ko": "해변 리조트", + "mk": "Плажно летувалиште", + "nl": "Strandoord", + "no": "Strandhotell", + "pl": "Ośrodek plażowy", + "pt-BR": "Resort em Praia", + "pt": "Estância balnear", + "ru": "Пляжный курорт", + "sk": "Plážový rezort", + "sv": "Strandresort", + "tr": "Sahil Tatil Yeri", + "uk": "Пляжний курорт", + "vi": "Bãi biển Nghỉ dưỡng", + "zh-CN": "海滩度假区", + "zh-TW": "海灘渡假村" + } + }, + "leisure/bird_hide": { + "title": { + "C": "Bird Hide", + "ar": "مكان لمراقبة الطيور", + "ast": "Observatoriu d'aves", + "ca": "Observatori d'ocells", + "cs": "Pozorovatelna zvěře", + "da": "Fugletårn", + "de": "Vogelbeobachtungsstation", + "el": "Κρυψώνα Κυνηγών Πτηνών", + "en-GB": "Bird Hide", + "en": "Bird Hide", + "eo": "Bird-observejo", + "es": "Observatorio de aves", + "fa": "مکان تماشای پرندگان", + "fi": "Lintutorni", + "fr": "Observatoire ornithologique", + "gl": "Observatorio de aves", + "he": "מסתור צפרות", + "hu": "Madárles", + "is": "Fuglaskoðunarskýli", + "it": "Osservazione uccelli", + "ja": "野鳥観察舎", + "ko": "탐조대", + "mk": "Птицонабљудувачница", + "nl": "Vogelkijkscherm of -hut", + "pl": "Czatownia ornitologiczna", + "pt-BR": "Local de observação de pássaros", + "pt": "Posto de observação de aves", + "ru": "Пункт наблюдения за птицами", + "sk": "Pozorovateľňa vtáctva", + "sl": "Opazovalnica", + "sv": "Torn/gömsle för fågelskådning", + "tr": "Vahşi Yaşam Gözetleme Kulesi", + "uk": "Пункт спостереження", + "vi": "Căn nhà Quan sát Chim", + "zh-CN": "观鸟点", + "zh-HK": "觀鳥屋", + "zh-TW": "鳥類棲息處" + } + }, + "leisure/bleachers": { + "title": { + "C": "Bleachers", + "cs": "nekryté tribuny", + "da": "Lægtepladser", + "de": "Nicht überdachte Tribüne", + "el": "Εξέδρα Χωρίς Σκεπή", + "en": "Bleachers", + "eo": "Spektejo", + "es": "Gradas", + "fa": "نیمکت مسابقات ورزشی", + "fi": "Katsomo", + "fr": "Gradins", + "gl": "Bancadas", + "he": "טריבונות", + "hu": "Lelátó", + "it": "Gradinate", + "ja": "観覧席", + "ko": "관중석", + "mk": "Гледалиште на отворено", + "nl": "Niet-overdekte tribune", + "no": "Tribune", + "pl": "Trybuna (odkryta)", + "pt-BR": "Arquibancada simples", + "pt": "Bancadas", + "ru": "Трибуны", + "sk": "Tribúny", + "sv": "Läktare", + "tr": "Açık Tribün", + "uk": "Трибуни", + "vi": "Khán đài Ngoài trời", + "zh-CN": "看台", + "zh-TW": "看台" + } + }, + "leisure/bowling_alley": { + "title": { + "C": "Bowling Alley", + "ar": "بولينغ", + "ast": "Bolera americana", + "ca": "Bolera", + "cs": "Bowlingová dráha", + "da": "Bowlingbaner", + "de": "Bowlingbahn", + "el": "Διάδρομος Bowling", + "en-GB": "Bowling Alley", + "en": "Bowling Alley", + "eo": "Kegloludejo", + "es": "Pista de bolos", + "et": "Boolingusaal", + "fa": "سالن بولینگ", + "fi": "Keilahalli", + "fr": "Bowling", + "gl": "Birlos", + "he": "אולם כדורת", + "hr": "Kuglalište", + "hu": "Bowlingpálya", + "id": "Tempat Boling", + "is": "Keiluhöll", + "it": "Sala da Bowling", + "ja": "ボウリング場", + "ko": "볼링장", + "lv": "Boulinga Zāle", + "mk": "Кугларница", + "nl": "Bowlingbaan", + "no": "Bowlingsenter", + "pl": "Kręgielnia", + "pt-BR": "Pista de boliche", + "pt": "Pista de bólingue", + "ro": "Alee de Bowling", + "ru": "Боулинг центр", + "sk": "Bowlingová hala", + "sl": "Kegljišče", + "sv": "Bowlinghall", + "tr": "Bowling Salonu", + "uk": "Боулінг", + "vi": "Khu Bowling", + "zh-CN": "保龄球馆", + "zh-HK": "保齡球場", + "zh-TW": "保齡球館" + } + }, + "leisure/common": { + "title": { + "C": "Common", + "ar": "أرض مشترك", + "ast": "Terrén comunitariu", + "bs": "Uobičajeno", + "ca": "Àrea comuna", + "cs": "Volně přístupný prostor", + "da": "Fælled", + "de": "Öffentliche Fläche, Allmende", + "el": "Κοινό", + "en-GB": "Common", + "en": "Common", + "eo": "Publika ripoza tereno", + "es": "Tierras comunes -Reino Unido-", + "fa": "زمین عمومی (معمولا در انگلستان)", + "fi": "Yleinen", + "fr": "Terrain communal", + "gl": "Terreo comunal", + "he": "אזור משותף", + "hr": "Zelena površina po kojoj se može hodati - u UK", + "hu": "Szabadidős tevékenységre használható közös terület (Nagy-Britannia)", + "id": "Perintah", + "is": "Almenningur", + "it": "Luogo pubblico", + "ja": "共有地", + "ko": "일반", + "lt": "Bendros ganyklos", + "mk": "Јавно зеленило", + "nl": "Gemene weide", + "no": "Fellesområde", + "pl": "Teren rekreacyjny ogólnodostępny", + "pt-BR": "Área Comunitária", + "pt": "Terrenos comunitários", + "ro": "Comun", + "ru": "Общественные места для прогулок, без специфики", + "sk": "Verejné priestranstvo", + "sl": "Javni prostor", + "sr": "Јавно добро", + "sv": "Allmänning", + "ta": "பொதுவான", + "tr": "Piknik Alanı", + "uk": "Громада", + "vi": "Đất công", + "yue": "公地", + "zh-CN": "公共用地", + "zh-HK": "公共用地", + "zh-TW": "公共用地" + } + }, + "leisure/dance": { + "title": { + "C": "Dance School", + "ar": "قاعة الرقص", + "ast": "Salón de baille", + "ca": "Pista de ball", + "ckb": "هۆڵی سەماکردن", + "cs": "Tančírna", + "da": "Dansehal", + "de": "Tanzsaal", + "el": "Αίθουσα Xορού", + "en-GB": "Dance Hall", + "en": "Dance Hall", + "eo": "Dancejo", + "es": "Salón de baile", + "et": "Tantsusaal", + "fa": "سالن رقص", + "fi": "Tanssipaikka", + "fr": "Salle de danse", + "gl": "Sala de baile", + "he": "היכל ריקודים", + "hu": "Táncterem", + "is": "Danssalur", + "it": "Sala da ballo", + "ja": "ダンスホール", + "ko": "댄스 홀", + "lt": "Šokių salė", + "lv": "Deju zāle", + "mk": "Сала за игранки", + "nl": "Danszaal", + "pl": "Sala taneczna", + "pt-BR": "Danceteria", + "pt": "Salão de dança", + "ro": "Sală de Dans", + "ru": "Танцевальный зал", + "sk": "Tanečná hala", + "sl": "Plesna dvorana", + "sr": "Плесна сала", + "sv": "Dansbana", + "tr": "Dans Salonu", + "uk": "Зала для танців", + "vi": "Phòng Khiêu vũ", + "zh-CN": "舞厅", + "zh-HK": "舞廳", + "zh-TW": "舞廳" + } + }, + "dance:teaching/yes": { + "title": { + "C": "Dance School" + } + }, + "leisure/disc_golf_course": { + "title": { + "C": "Disc Golf Course", + "ar": "مكان للعب قرص الجولف", + "cs": "hřiště pro disc golf", + "de": "Discgolfanlage", + "en": "Disc Golf Course", + "eo": "Ludkampo por golfdisko", + "es": "Golf de disco", + "fa": "زمین گلف دیسک", + "fi": "Frisbeegolfkenttä", + "fr": "Parcours de disc golf", + "gl": "Golf de disco", + "he": "מגרש דיסק גולף", + "it": "Campo da golf del disco", + "ja": "ディスクゴルフコース", + "ko": "디스크 골프 코스", + "mk": "Терен за дикс-голф", + "nl": "Frisbeegolfparcours", + "no": "Disc Golf Bane", + "pl": "Pole do gry w disc golfa", + "pt-BR": "Percurso de golfe de disco", + "pt": "Campo de golfe de disco", + "sk": "Ihrisko na frisbee golf", + "sv": "Frisbeegolfbana", + "tr": "Disk Golf Sahası", + "uk": "Диско-гольф", + "zh-CN": "飞盘高尔夫场", + "zh-TW": "飛盤高爾夫球場" + } + }, + "leisure/dog_park": { + "title": { + "C": "Dog Park", + "af": "Hondepark", + "ar": "حديقة كلاب", + "ast": "Parque pa perros", + "bs": "Igralište za pse", + "ca": "Parc Caní", + "cs": "Psí park", + "da": "Hundepark", + "de": "Hundepark", + "el": "Πάρκο Σκύλων", + "en-GB": "Dog Park", + "en": "Dog Park", + "eo": "Hund-parko", + "es": "Parque canino", + "et": "Koerapark", + "fa": "پارک سگ", + "fi": "Koirapuisto", + "fr": "Parc canin", + "gl": "Parque para cans", + "he": "פארק כלבים", + "hr": "Park za pse", + "hu": "Kutyafuttató", + "id": "Taman Anjing", + "is": "Hundagarður", + "it": "Area per cani", + "ja": "ドッグパーク", + "ko": "개 공원", + "lt": "Šunų parkas", + "lv": "Suņu parks", + "mk": "Кучешки парк", + "nl": "Hondenpark", + "no": "Hundepark", + "pl": "Wybieg dla psów", + "pt-BR": "Cachorródromo", + "pt": "Parque para cães", + "ro": "Parc de Câini", + "ru": "Площадка для выгула собак", + "sk": "Psí park", + "sl": "Pasji park", + "sr": "Парк за псе", + "sv": "Hundpark", + "tr": "Köpek Parkı", + "uk": "Парк для собак", + "vi": "Công viên dành cho Chó", + "yue": "狗公園", + "zh-CN": "狗公园", + "zh-HK": "狗公園", + "zh-TW": "狗公園" + } + }, + "leisure/escape_game": { + "title": { + "C": "Escape Room", + "ar": "غرفة الهروب", + "cs": "úniková hra", + "de": "Escape Room", + "el": "Δωμάτιο Απόδρασης", + "en-GB": "Escape Room", + "en": "Escape Room", + "eo": "Ĉambro de enigmoj", + "es": "Sala de escape", + "fa": "اتاق فرار", + "fi": "Pakopeli", + "fr": "Escape game", + "gl": "Escape room", + "he": "חדר בריחה", + "hu": "Szabadulószoba", + "it": "Escape Room", + "ja": "脱出ゲーム場", + "ko": "방탈출", + "mk": "Соба за бегство", + "nl": "Escaperoom", + "pl": "Escape room", + "pt-BR": "Sala de fuga", + "pt": "Sala de fuga", + "ru": "Квест комната", + "sk": "Escape Room", + "sv": "Escape Room", + "tr": "Kaçış Odası", + "uk": "Квест-кімната", + "vi": "Trò chơi Thoát khỏi Phòng", + "zh-CN": "密室逃脱", + "zh-TW": "密室逃脫" + } + }, + "leisure/firepit": { + "title": { + "C": "Fire Pit", + "ar": "حفرة لإشعال نار", + "cs": "ohniště", + "da": "Bålsted", + "de": "Feuerstelle", + "el": "Πυρκαγιά", + "en-GB": "Fire Pit", + "en": "Fire Pit", + "eo": "Lignofajrejo", + "es": "Lugar para fogatas", + "fa": "گودال آتش", + "fi": "Tulentekopaikka", + "fr": "Emplacement pour feu", + "gl": "Fogueira", + "he": "שוחה למדורה", + "hu": "Tűzrakóhely", + "it": "Focolare", + "ja": "焚き火場", + "ko": "불구덩이", + "mk": "Огниште", + "nl": "Vuurplaats", + "pl": "Miejsce na ognisko", + "pt-BR": "Fogueira", + "pt": "Espaço para fogueira", + "ru": "Кострище", + "sk": "Ohnisko", + "sv": "Eldstad", + "tr": "Ateş Çukuru", + "uk": "Вогнище", + "zh-CN": "火坑", + "zh-TW": "篝火" + } + }, + "leisure/fishing": { + "title": { + "C": "Fishing Spot", + "ar": "منطقة صيد سمك", + "cs": "Místo pro rybolov", + "de": "Angelplatz", + "el": "Χώρος Αλιείας", + "en-GB": "Fishing Spot", + "en": "Fishing Spot", + "eo": "Loko por fiŝhokado", + "es": "Lugar de pesca", + "fa": "محل ماهیگیری", + "fi": "Kalastuspaikka", + "fr": "Lieu de pêche", + "gl": "Couto de pesca", + "he": "נקודת דיג", + "hr": "Mjesto za pecanje", + "hu": "Horgászhely", + "is": "Veiðistaður", + "it": "Punto per la pesca", + "ja": "釣りスポット", + "ko": "낚시터", + "mk": "Место за риболов", + "nl": "Visstek", + "no": "Fiske Plass", + "pl": "Łowisko", + "pt-BR": "Ponto de pesca", + "pt": "Local de pesca", + "ru": "Место для рыбалки", + "sk": "Rybárske miesto", + "sr": "Место за риболов", + "sv": "Fiskeplats", + "tr": "Balık Tutma Yeri", + "uk": "Місце для риболовлі", + "vi": "Chỗ Câu cá", + "zh-CN": "钓鱼地点", + "zh-TW": "釣魚點" + } + }, + "leisure/fitness_centre": { + "title": { + "C": "Gym / Fitness Center", + "ar": "مركز لياقة بدنية", + "ast": "Ximnasiu / Centru de fitness", + "ca": "Gimnàs / Centre de Fitness", + "cs": "Tělocvična / Fitness centrum", + "da": "Gym / Fitnesscenter", + "de": "Fitness-Studio", + "el": "Γυμναστήριο", + "en-AU": "Gym / Fitness Centre", + "en-GB": "Gym / Fitness Centre", + "en": "Gym / Fitness Center", + "eo": "Ripoz-gimnastika centro", + "es": "Gimnasio / Centro de fitness", + "fa": "باشگاه تناسب اندام", + "fi": "Kuntosali / fitness-keskus", + "fr": "Centre de fitness / gym", + "gl": "Ximnasio", + "he": "מכון כושר", + "hr": "Zatvoreni prostor za vježbanje", + "hu": "Edzőterem / Fitneszklub", + "is": "Líkamsræktarmiðstöð", + "it": "Palestra / Centro Fitness", + "ja": "ジム/フィットネスセンター", + "ko": "체육관 / 피트니스 센터", + "lv": "Sportazāle / Fitnesa centrs", + "mk": "Вежбалница", + "nl": "Fitnesscentrum", + "no": "Treningssenter", + "pl": "Siłownia / klub fitness", + "pt-BR": "Academia", + "pt": "Ginásio", + "ro": "Centru Fitness", + "ru": "Спортзал, фитнес-центр", + "sk": "Posilňovňa", + "sl": "Telovadnica / Fitness", + "sr": "Теретана / Фитнес центар", + "sv": "Gym / Fitnesscenter", + "tr": "Spor Salonu", + "uk": "Зал/Фітнес центр", + "vi": "Trung tâm Thể dục", + "zh-CN": "健身房/健身中心", + "zh-HK": "體育館 / 健體中心", + "zh-TW": "健身房/健身中心" + } + }, + "leisure/fitness_station": { + "title": { + "C": "Outdoor Fitness Station", + "ar": "مكان اللياقة البدنية خارج المباني", + "ast": "Centru de fitness albentestate", + "ca": "Instal·lació exterior de Fitness", + "cs": "Venkovní tělocvična", + "da": "Udendørs fitnessplads", + "de": "Freiluft-Fitness-Station", + "el": "Υπαίθριο Γυμναστήριο", + "en-GB": "Outdoor Fitness Station", + "en": "Outdoor Fitness Station", + "eo": "Ekzerc-parko (eksterdoma)", + "es": "Estación de gimnasia al aire libre", + "fa": "ایستگاه ورزشی در فضای باز", + "fi": "Ulkokuntoilulaitteet", + "fr": "Parcours de santé", + "gl": "Estación de ximnasia ao aire libre", + "he": "תחנת כושר", + "hr": "Vanjski prostor za vježbanje", + "hu": "Fitneszpark", + "is": "Líkamsþjálfunarstöð utandyra", + "it": "Palestra a cielo aperto", + "ja": "屋外トレーニング場", + "ko": "야외 신체단련소", + "lv": "Brīvdabas fitnesa vieta", + "mk": "Вежбалница на отворено", + "nl": "Buitenshuis fitness-station", + "pl": "Siłownia zewnętrzna", + "pt-BR": "Equipamento de exercícios ao ar Livre", + "pt": "Ginásio ao ar livre", + "ro": "Stație de Fitness în Aer Liber", + "ru": "Площадка для фитнеса", + "sl": "Telovadna orodja na prostem", + "sv": "Utomhusgym", + "tr": "Açıkhava Spor Yeri", + "uk": "Тренажери на вулиці", + "vi": "Trạm Thể dục", + "zh-CN": "户外健身站", + "zh-HK": "戶外健體站", + "zh-TW": "戶外健身站" + } + }, + "leisure/garden": { + "title": { + "C": "Garden", + "af": "Tuin", + "am": "መናፈሻ", + "ar": "حديقة", + "ast": "Xardín", + "bg": "Градина", + "bn": "বাগান", + "bs": "Vrt", + "ca": "Jardí", + "ckb": "باخچە", + "cs": "Zahrada", + "da": "Have", + "de": "Garten", + "el": "Κήπος", + "en-GB": "Garden", + "en": "Garden", + "eo": "Ĝardeno", + "es": "Jardín", + "et": "Aed", + "fa": "باغ", + "fi": "Puutarha", + "fr": "Jardin", + "gl": "Xardín", + "he": "גן", + "hr": "Vrt", + "hu": "Kert", + "id": "Kebun", + "is": "Garður", + "it": "Giardino", + "ja": "庭園", + "kn": "ಕೈತೋಟ", + "ko": "정원", + "lt": "Sodas", + "lv": "Dārzs", + "mk": "Градина", + "nl": "Tuin", + "no": "Hage", + "pl": "Ogród", + "pt-BR": "Jardim / Horta", + "pt": "Jardim", + "ro": "Grădină", + "ru": "Сад", + "sk": "Záhrada", + "sl": "Vrt", + "sr": "Башта", + "sv": "Trädgård", + "ta": "தோட்டம்", + "te": "తోట", + "tr": "Bahçe", + "uk": "Сад", + "vi": "Vườn", + "yue": "花園", + "zh-CN": "花园", + "zh-HK": "花園", + "zh-TW": "花園", + "zh": "花园" + } + }, + "leisure/golf_course": { + "title": { + "C": "Golf Course", + "af": "Golfbaan", + "am": "የጎልፍ መጫወቻ", + "ar": "معلب جولف", + "ast": "Campu de golf", + "bg": "Голф игрище", + "bn": "গল্ফ মাঠ", + "bs": "Golf teren", + "ca": "Camp de golf", + "cs": "Golfové hřiště", + "da": "Golfbane", + "de": "Golfplatz", + "el": "Γήπεδο Γκολφ", + "en-GB": "Golf Course", + "en": "Golf Course", + "eo": "Golfludejo", + "es": "Campo de golf", + "et": "Golfiväljak", + "fa": "زمین گلف", + "fi": "Golfkenttä", + "fr": "Parcours de golf", + "gl": "Campo de golf", + "he": "מגרש גולף", + "hr": "Igralište za golf", + "hu": "Golfpálya", + "id": "Lapangan Golf", + "is": "Golfvöllur", + "it": "Campo da Golf", + "ja": "ゴルフコース", + "ko": "골프장", + "lt": "Golfo aikštynas", + "lv": "Golfa laukums", + "mk": "Терен за голф", + "nl": "Golfbaan", + "no": "Golfbane", + "pl": "Pole golfowe", + "pt-BR": "Campo de Golfe", + "pt": "Campo de golfe", + "ro": "Curs de Golf", + "ru": "Площадка для гольфа", + "sk": "Golfové ihrisko", + "sl": "Golfišče", + "sr": "Голф терен", + "sv": "Golfbana", + "ta": "கோல்ஃப் கோர்ஸ்", + "tr": "Golf Sahası", + "uk": "Поле для гольфу", + "vi": "Sân Golf", + "yue": "哥夫球場", + "zh-CN": "高尔夫球场", + "zh-HK": "高爾夫球場", + "zh-TW": "高爾夫球場", + "zh": "高尔夫球场" + } + }, + "leisure/hackerspace": { + "title": { + "C": "Hackerspace", + "ar": "معمل هاكر", + "cs": "hackerspace", + "da": "Hackerspace", + "de": "Hackerspace", + "el": "Χώρος Συζήτησης Εργασιών", + "en-GB": "Hackerspace", + "en": "Hackerspace", + "eo": "Kodumulejo (hackerspace)", + "es": "Hacklab", + "fa": "هکراسپیس", + "fi": "Hacklab", + "fr": "Hackerspace", + "he": "משרד היי טק משותף", + "hu": "Hackerspace", + "is": "Hakkaraathvarf", + "it": "Spazio hacker", + "ja": "ハッカースペース", + "ko": "해커스페이스", + "mk": "Хакерски простор", + "nl": "Hackerspace", + "no": "Hackerspace", + "pl": "Hackerspace", + "pt-BR": "Hackerspace", + "pt": "Espaço de hackers", + "ru": "Хакерспейс", + "sk": "Hackerspace", + "sv": "Hackerspace", + "tr": "Bilgisayar Korsanı Alanı", + "uk": "Хакерспейс", + "vi": "Không gian Hacker", + "zh-CN": "创客空间", + "zh-TW": "駭客空間" + } + }, + "leisure/horse_riding": { + "title": { + "C": "Horseback Riding Facility", + "ar": "منشأة ركوب خيل", + "ast": "Instalación pa equitación", + "cs": "Jezdecký areál", + "da": "Ridningsfaciliteter", + "de": "Reitanlage", + "el": "Χώροι Ιπποστασίου", + "en-GB": "Horse Riding Facility", + "en": "Horseback Riding Facility", + "eo": "Ĉeval-rajdadejo", + "es": "Centro ecuestre", + "et": "Ratsakeskus", + "fa": "باشگاه اسب سواری", + "fi": "Ratsastusalue", + "fr": "Centre équestre", + "gl": "Centro de equitación", + "he": "מתקן רכיבה על סוסים", + "hu": "Lovasiskola", + "is": "Aðstaða fyrir reiðmennsku", + "it": "Centro equestre", + "ja": "乗馬施設", + "ko": "승마 시설", + "lv": "Zirgu jāšanas vieta", + "mk": "Јавачница за коњи", + "nl": "Manege", + "no": "Ridesenter", + "pl": "Ośrodek jeździecki", + "pt-BR": "Centro de Hipismo", + "pt": "Centro equestre", + "ro": "Facilitate de Călărie", + "ru": "Площадка для верховой езды", + "sk": "Zariadenie jazdy na koni", + "sl": "Jahalni klub", + "sv": "Ridskola", + "tr": "At Binicilik Spor Kulübü", + "uk": "Верхова їзда", + "vi": "Khu Cưỡi ngựa", + "zh-CN": "骑马场", + "zh-HK": "騎馬設施", + "zh-TW": "騎馬場" + } + }, + "leisure/ice_rink": { + "title": { + "C": "Ice Rink", + "ar": "حلبة تزلج", + "ast": "Pista de xelu", + "ca": "Pista de gel", + "cs": "Kluziště", + "da": "Skøjtebane", + "de": "Eislaufbahn", + "el": "Παγοδρόμιο", + "en-GB": "Ice Rink", + "en": "Ice Rink", + "eo": "Glitkurejo", + "es": "Pista de hielo", + "et": "Uisuväljak", + "fa": "بازی روی یخ", + "fi": "Luistelukenttä", + "fr": "Patinoire", + "gl": "Pista de xeo", + "he": "החלקרח", + "hr": "Klizalište", + "hu": "Jégpálya", + "id": "Arena Seluncur Es", + "is": "Skautasvell", + "it": "Pista di Ghiaccio", + "ja": "アイススケート場", + "ko": "아이스 링크", + "lt": "Čiuožykla", + "lv": "Ledus halle", + "mk": "Лизгалиште", + "nl": "Schaatsbaan", + "no": "Skøytebane", + "pl": "Lodowisko", + "pt-BR": "Pista de Patinação no Gelo", + "pt": "Rinque de gelo", + "ru": "Каток", + "sk": "Klzisko", + "sl": "Drsališče", + "sr": "Клизалиште", + "sv": "Skridskobana", + "tr": "Buz Pateni", + "uk": "Каток", + "vi": "Sân Băng", + "zh-CN": "滑冰场", + "zh-HK": "溜冰場", + "zh-TW": "溜冰場" + } + }, + "leisure/indoor_play": { + "title": { + "C": "Indoor Play Center", + "de": "Indoor-Spielbereich", + "en": "Indoor Play Center", + "eo": "Enkonstruaĵa infana ludejo (kun prizorgo)", + "es": "Centro de juegos de interior", + "fa": "مرکز بازی‌های داخل سالن", + "it": "Parco giochi interno", + "ja": "屋内キッズスペース", + "mk": "Игротека на покриено", + "nl": "Binnenspeeltuin", + "pl": "Sala zabaw", + "pt-BR": "Centro de jogos coberto", + "sk": "Indoor herňa", + "sv": "Inomhuslekland", + "uk": "Ігровий центр", + "vi": "Khu Vui chơi Trong nhà", + "zh-CN": "室内游乐中心", + "zh-TW": "室內遊樂中心" + } + }, + "leisure/marina": { + "title": { + "C": "Marina", + "af": "Vasmeerplek", + "ar": "مرسى لليخوت والقوارب الصغيرة", + "ast": "Puertu deportivu", + "bg": "Яхт клуб", + "bs": "Marina", + "ca": "Port esportiu", + "cs": "Přístaviště", + "da": "Lystbådehavn", + "de": "Yachthafen", + "dv": "ޔޮޓު މެރީނާ", + "el": "Μαρίνα", + "en-GB": "Marina", + "en": "Marina", + "eo": "Jaĥt-haveno", + "es": "Puerto deportivo", + "et": "Väikesadam", + "fa": "تفرجگاه ساحلی", + "fi": "Venesatama", + "fr": "Marina", + "gl": "Porto deportivo", + "he": "מרינה", + "hr": "Marina", + "hu": "Kishajókikötő", + "id": "Marina", + "is": "Bátahöfn", + "it": "Marina", + "ja": "マリーナ", + "ko": "마리나", + "lt": "Prieplauka", + "mk": "Сидриште", + "nl": "Jachthaven", + "no": "Marina", + "pl": "Przystań", + "pt-BR": "Marina", + "pt": "Marina", + "ru": "Стоянка для яхт", + "sk": "Lodenica", + "sl": "Marina", + "so": "Deked", + "sr": "Марина", + "sv": "Marina", + "ta": "மரினா", + "tr": "Yat Limanı", + "uk": "Пристань для яхт", + "vi": "Bến tàu", + "yue": "遊艇碼頭", + "zh-CN": "游艇码头", + "zh-HK": "遊艇碼頭", + "zh-TW": "遊艇碼頭", + "zh": "码头" + } + }, + "leisure/miniature_golf": { + "title": { + "C": "Miniature Golf", + "ar": "ملعب الجولف المصغرة", + "ast": "Minigolf", + "ca": "Golf en miniatura", + "cs": "Minigolf", + "da": "Minigolf", + "de": "Minigolfanlage", + "el": "Μίνι Γκολφ", + "en-GB": "Miniature Golf", + "en": "Miniature Golf", + "eo": "Minigolfludejo", + "es": "Mini golf", + "et": "Minatuurgolf", + "fa": "گلف مینیاتوری", + "fi": "Minigolf", + "fr": "Mini-golf", + "gl": "Minigolf", + "he": "מיני-גולף", + "hr": "Minigolf", + "hu": "Minigolf", + "is": "Mínígolf", + "it": "Minigolf", + "ja": "ミニゴルフ", + "ko": "미니 골프", + "lt": "Minigolfas", + "mk": "Миниголф", + "nl": "Minigolf", + "no": "Minigolf", + "pl": "Minigolf", + "pt-BR": "Campo de Minigolfe", + "pt": "Campo de minigolfe", + "ro": "Minigolf", + "ru": "Мини-гольф", + "sk": "Miniatúrny golf", + "sl": "Minigolf", + "sr": "Мини-голф", + "sv": "Minigolf", + "tr": "Mini Golf", + "uk": "Міні-гольф", + "vi": "Sân Golf Mini", + "zh-CN": "迷你高尔夫", + "zh-HK": "迷你哥爾夫", + "zh-TW": "迷你高爾夫" + } + }, + "leisure/nature_reserve": { + "title": { + "C": "Nature Reserve", + "ar": "محمية طبيعية", + "ast": "Reserva natural", + "ca": "Reserva Natural", + "cs": "Přírodní rezervace", + "da": "Naturreservat", + "de": "Naturschutzgebiet", + "el": "Προστατευόμενος Βιότοπος", + "en-GB": "Nature Reserve", + "en": "Nature Reserve", + "eo": "Natur-rezervejo", + "es": "Reserva natural", + "et": "Looduskaitseala", + "fa": "ذخیره‌گاه طبیعی", + "fi": "Luonnonsuojelualue", + "fr": "Réserve naturelle", + "gl": "Reserva natural", + "he": "שמורת טבע", + "hr": "Prirodni rezervat", + "hu": "Természetvédelmi terület", + "id": "Cagar Alam", + "is": "Friðland", + "it": "Riserva naturale", + "ja": "自然保護区", + "ko": "자연 보호 구역", + "lt": "Draustinis", + "mk": "Природен резерват", + "nl": "Natuurreservaat", + "no": "Naturreservat", + "pl": "Rezerwat przyrody", + "pt-BR": "Reserva natural", + "pt": "Reserva natural", + "ro": "Rezervat Natural", + "ru": "Заповедник", + "sk": "Prírodná rezervácia", + "sl": "Naravni rezervat", + "sr": "Резерват природе", + "sv": "Naturreservat", + "tr": "Doğal Koruma Alanı", + "uk": "Заповідник", + "vi": "Khu Bảo tồn Thiên nhiên", + "zh-CN": "自然保护区", + "zh-HK": "自然保護區", + "zh-TW": "自然保留區" + } + }, + "leisure/outdoor_seating": { + "title": { + "C": "Outdoor Seating Area", + "ar": "منطقة جلوس خارجية", + "cs": "Venkovní posezení", + "da": "Udendørs siddepladser", + "de": "Außengastronomie", + "el": "Υπαίθριο Καθιστικό", + "en-GB": "Outdoor Seating Area", + "en": "Outdoor Seating Area", + "eo": "Seĝoj eksterdome", + "es": "Área de asientos al exterior", + "fa": "محل استقرار در فضای باز", + "fi": "Ulkoterassi", + "fr": "Aire des places en terrasse", + "gl": "Área de asentos ó exterior", + "he": "אזור ישיבה בחוץ", + "hr": "Sjedenje vani", + "hu": "Kiülős helyek", + "is": "Svæði fyrir sæti utandyra", + "it": "Posti a sedere all’esterno", + "ja": "屋外食事席エリア", + "ko": "야외 좌석 구역", + "mk": "Маси на отворено", + "nl": "Terras", + "pl": "Ogródek", + "pt-BR": "Área de estar ao ar livre", + "pt": "Esplanada", + "ru": "Столики на улице (площадка)", + "sk": "Vonkajšie sedenie", + "sv": "Uteservering", + "tr": "Açık Oturma Alanı", + "uk": "Місця на свіжому повітрі", + "vi": "Khu Ăn uống Ngoài trời", + "zh-CN": "室外座位", + "zh-TW": "戶外座位區" + } + }, + "leisure/park": { + "title": { + "C": "Park", + "af": "Park", + "ar": "منتزه", + "ast": "Parque", + "bg": "Парк", + "bn": "উদ্যান", + "bs": "Park", + "ca": "Parc", + "cs": "Park", + "da": "Park", + "de": "Park", + "dv": "ޕާރކުތައް", + "el": "Πάρκο", + "en-GB": "Park", + "en": "Park", + "eo": "Parko", + "es": "Parque / Plaza verde", + "et": "Park", + "fa": "پارک", + "fi": "Puisto", + "fr": "Parc", + "gl": "Parque", + "he": "פארק", + "hr": "Park", + "hu": "Park", + "id": "Taman", + "is": "Garður", + "it": "Parco", + "ja": "公園", + "kn": "ಉದ್ಯಾನವನ", + "ko": "공원", + "lt": "Parkas", + "lv": "Parks", + "mk": "Парк", + "ne": "पार्क", + "nl": "Park", + "no": "Park", + "pl": "Park rekreacyjno-wypoczynkowy", + "pt-BR": "Parque ou praça", + "pt": "Parque público", + "ro": "Parc", + "ru": "Парк отдыха", + "sk": "Park", + "sl": "Park", + "so": "Jardiino", + "sr": "Парк", + "sv": "Park", + "ta": "பூங்கா", + "te": "పార్కు", + "tr": "Park", + "uk": "Парк", + "vi": "Công viên", + "yue": "園", + "zh-CN": "公园", + "zh-HK": "公園", + "zh-TW": "公園", + "zh": "公园" + } + }, + "leisure/picnic_table": { + "title": { + "C": "Picnic Table", + "ar": "طاولة نزهة", + "ast": "Mesa de merenderu", + "ca": "Taula de picnic", + "cs": "Stůl na piknik", + "da": "Madpakkebord", + "de": "Picknicktisch", + "el": "Τραπέζι Πικ Νικ", + "en-GB": "Picnic Table", + "en": "Picnic Table", + "eo": "Piknika tablo", + "es": "Mesa de picnic", + "et": "Piknikulaud", + "fa": "میز پیکنیک", + "fi": "Piknikpöytä", + "fr": "Table de pique-nique", + "gl": "Mesa de pícnic", + "he": "שולחן פיקניק", + "hr": "Stol za piknik", + "hu": "Piknikasztal", + "id": "Meja Piknik", + "is": "Nestisborð", + "it": "Tavolo da picnic", + "ja": "ピクニックテーブル", + "ko": "피크닉 테이블", + "lt": "Pikniko stalas", + "lv": "Piknika galds", + "mk": "Излетничка маса", + "nl": "Picknicktafel", + "no": "Piknikbord", + "pl": "Stół piknikowy", + "pt-BR": "Mesa de piquenique", + "pt": "Mesa de piquenique", + "ro": "Masă de Picnic", + "ru": "Стол для пикника", + "sk": "Piknikový stôl", + "sl": "Piknik miza", + "sr": "Сто за излет", + "sv": "Picknickbord", + "tr": "Piknik Masası", + "uk": "Місце для пікніка", + "vi": "Bàn ăn Ngoài trời", + "zh-CN": "野餐桌", + "zh-HK": "野餐桌", + "zh-TW": "野餐桌" + } + }, + "leisure/pitch": { + "title": { + "C": "Sport Pitch", + "af": "Sport Veld", + "ar": "ملعب رياضي", + "ast": "Campu deportivu", + "bg": "Спортно игрище", + "bs": "Sportsko igralište", + "ca": "Camp d'esports", + "cs": "Hřiště", + "da": "Sportsbane", + "de": "Sportplatz", + "el": "Αγωνιστικός Χώρος", + "en-GB": "Sport Pitch", + "en": "Sport Pitch", + "eo": "Ludkampo", + "es": "Cancha de juego", + "et": "Spordiväljak", + "fa": "زمین ورزشی", + "fi": "Urheilukenttä", + "fr": "Terrain de sport", + "gl": "Cancha deportiva", + "he": "מגרש ספורט", + "hr": "Sportski teren", + "hu": "Sportpálya", + "id": "Lapangan Olahraga", + "is": "Íþróttavöllur", + "it": "Campo da gioco", + "ja": "スポーツ競技場", + "ko": "운동장", + "lt": "Sporto aikštelė", + "lv": "Sporta laukums", + "mk": "Спортско игралиште", + "nl": "Sportveld", + "no": "Idrettsbane", + "pl": "Boisko", + "pt-BR": "Quadra ou campo esportivo", + "pt": "Campo de desporto", + "ro": "Teren de Sport", + "ru": "Спортивная площадка", + "sk": "Športový kurt", + "sl": "Športno igrišče", + "sr": "Спортско игралиште", + "sv": "Idrottsplats", + "tr": "Spor Sahası", + "uk": "Спортивний майданчик", + "vi": "Sân Thể thao", + "yue": "運動場", + "zh-CN": "运动场地", + "zh-HK": "運動場地", + "zh-TW": "運動場地", + "zh": "运动场所" + } + }, + "leisure/playground": { + "title": { + "C": "Playground", + "af": "Speelpark", + "ar": "ساحة ألعاب للأطفال", + "ast": "Xuegos infantiles", + "bg": "Детска площадка", + "bn": "খেলার মাঠ", + "bs": "Igralište", + "ca": "Zona de jocs infantils", + "cs": "Dětské hřiště", + "da": "Legeplads", + "de": "Spielplatz", + "el": "Παιδική Χαρά", + "en-GB": "Playground", + "en": "Playground", + "eo": "Infana ludejo", + "es": "Patio de juegos", + "et": "Mänguväljak", + "eu": "Jolastoki", + "fa": "زمین بازی", + "fi": "Leikkipuisto", + "fr": "Jeux pour enfants", + "gl": "Parque infantil", + "he": "גן שעשועים", + "hr": "Igralište", + "hu": "Játszótér", + "id": "Lapangan Bermain", + "is": "Leikvöllur", + "it": "Parco giochi", + "ja": "児童公園", + "ko": "놀이터", + "lt": "Žaidimų aikštelė", + "lv": "Spēļlaukums", + "mk": "Игралиште", + "nl": "Speeltuin", + "no": "Lekeplass", + "pl": "Plac zabaw", + "pt-BR": "Parquinho", + "pt": "Parque infantil", + "ro": "Loc de Joacă", + "ru": "Детская площадка", + "sk": "Ihrisko pre deti", + "sl": "Otroško igrišče", + "sr": "Игралиште", + "sv": "Lekplats", + "ta": "விளையாட்டுத் திடல்", + "te": "ఆటమైదానం", + "tr": "Çocuk Parkı", + "uk": "Ігровий майданчик", + "vi": "Sân chơi", + "yue": "遊樂場", + "zh-CN": "儿童游乐场", + "zh-HK": "遊樂場", + "zh-TW": "遊樂場", + "zh": "游乐场" + } + }, + "leisure/resort": { + "title": { + "C": "Resort", + "ar": "منتجع", + "cs": "Letovisko", + "da": "Turistresort", + "de": "Resort", + "el": "Θέρετρο", + "en-GB": "Resort", + "en": "Resort", + "eo": "Turisma centro", + "es": "Complejo turístico", + "et": "Puhkekeskus", + "eu": "opor-leku", + "fa": "مجتمع تفریحی", + "fi": "Lomakohde", + "fr": "Complexe touristique , Village de vacances", + "gl": "Complexo turístico", + "he": "אתר נופש", + "hu": "Üdülőhely", + "is": "Afþreyingarþorp", + "it": "Resort", + "ja": "リゾート地", + "ko": "리조트", + "mk": "Одморалиште", + "nl": "Resort", + "pl": "Ośrodek wczasowy", + "pt-BR": "Resort", + "pt": "Estância turística", + "ro": "Resort", + "ru": "База отдыха / санаторий / пасионат / детский лагерь", + "sk": "Rezort", + "sl": "Letovišče", + "sr": "Одмаралиште", + "sv": "Resort", + "tr": "Tatil Yeri", + "uk": "Курорт", + "vi": "Khu Nghỉ dưỡng", + "zh-CN": "度假区", + "zh-HK": "度假勝地", + "zh-TW": "度假勝地" + } + }, + "leisure/sauna": { + "title": { + "C": "Sauna", + "ar": "سونا", + "ast": "Sauna", + "cs": "Sauna", + "da": "Sauna", + "de": "Sauna", + "el": "Σάουνα", + "en-GB": "Sauna", + "en": "Sauna", + "eo": "Ŝvitbanejo", + "es": "Sauna", + "et": "Saun", + "eu": "Sauna", + "fa": "سونا", + "fi": "Sauna", + "fr": "Sauna", + "gl": "Sauna", + "he": "סאונה", + "hr": "Sauna", + "hu": "Szauna", + "is": "Gufubað", + "it": "Sauna", + "ja": "サウナ", + "ko": "사우나", + "lt": "Sauna", + "lv": "Sauna", + "mk": "Сауна", + "nl": "Sauna", + "no": "Badstu", + "pl": "Sauna", + "pt-BR": "Sauna", + "pt": "Sauna", + "ru": "Сауна", + "sk": "Sauna", + "sr": "Сауна", + "sv": "Bastu", + "tr": "Sauna", + "uk": "Сауна", + "vi": "Tắm hơi", + "zh-CN": "桑拿", + "zh-TW": "桑拿" + } + }, + "leisure/slipway": { + "title": { + "C": "Slipway", + "af": "Inglipbaan", + "ar": "مزلقة سفن", + "ast": "Rampla de botadura", + "bg": "Хелинг", + "bs": "Navoz", + "ca": "Pendent per a embarcacions", + "cs": "Vodní skluz", + "da": "Bådrampe", + "de": "Gleitbahn", + "el": "Γλίστρα", + "en-GB": "Slipway", + "en": "Slipway", + "eo": "Ŝipglitejo", + "es": "Rampa para botes", + "et": "Slipp", + "fa": "سرسره آب اندازی قایق", + "fi": "Veneramppi", + "fr": "Cale de mise à l'eau", + "gl": "Rampla para embarcacións", + "he": "ממשה", + "hr": "Navoz za brodove", + "hu": "Sólya", + "id": "Slipway", + "is": "Dráttarbraut", + "it": "Scivolo per barche", + "ja": "進水路", + "ko": "선가대", + "mk": "Испуст за пловила", + "nl": "Botenhelling", + "no": "Båtslipp", + "pl": "Pochylnia okrętowa", + "pt-BR": "Rampa náutica", + "pt": "Rampa para barcos", + "ru": "Стапель", + "sk": "Spúšťanie lodí", + "sl": "Rampa", + "sr": "Навоз", + "sv": "Stapelbädd", + "tr": "Gemi Kızağı", + "uk": "Стапель", + "vi": "Đường Trượt tàu", + "yue": "船排", + "zh-CN": "船台", + "zh-HK": "船台", + "zh-TW": "船架滑道", + "zh": "船架滑道" + } + }, + "leisure/sports_centre": { + "title": { + "C": "Sports Center / Complex", + "ar": "مركز/مجمع رياضي", + "ast": "Centru / Complexu deportivu", + "ca": "Complex esportiu", + "cs": "Sportovní centrum", + "da": "Sportcenter / Kompleks", + "de": "Sportzentrum / -komplex", + "dv": "ކުުޅިވަރު މަރުކަޒު", + "el": "Αθλητικό Κέντρο/ Συγκρότημα", + "en-AU": "Sports Centre / Complex", + "en-GB": "Sports Centre / Complex", + "en": "Sports Center / Complex", + "eo": "Sporta centro", + "es": "Complejo deportivo", + "et": "Spordikeskus", + "eu": "Kiroldegia/ gunea", + "fa": "مجتمع / مرکز ورزشی", + "fi": "Liikuntakeskus", + "fr": "Centre sportif", + "gl": "Complexo deportivo", + "he": "מרכז ספורט", + "hr": "Sportski centar", + "hu": "Sportközpont", + "is": "Íþróttamiðstöð", + "it": "Complesso / Centro Sportivo", + "ja": "スポーツセンター/複合施設", + "ko": "스포츠 센터 / 단지", + "lv": "Sporta Centrs / Komplekss", + "mk": "Спортски центар / комплекс", + "nl": "Sportcentrum of -complex", + "no": "Idrettssenter / kompleks", + "pl": "Centrum sportowe", + "pt-BR": "Centro Esportivo / Clube", + "pt": "Complexo desportivo", + "ro": "Centru / Complex de Sport", + "ru": "Спортивный центр/комплекс", + "sk": "Športové centrum / Komplex", + "sl": "Športni center / kompleks", + "so": "Xarunta Cayaaraha", + "sr": "Спортски центар / Комплекс", + "sv": "Sportcenter / -anläggning", + "tr": "Spor Merkezi", + "uk": "Спортивний центр/комплекс", + "vi": "Trung tâm Thể thao", + "zh-CN": "体育中心/综合体育场", + "zh-HK": "體育中心 / 體育館", + "zh-TW": "體育中心/設施" + } + }, + "leisure/sports_hall": { + "title": { + "C": "Gymnasium", + "ar": "قاعة رياضية", + "cs": "Tělocvična", + "da": "Fitness", + "de": "Sporthalle", + "el": "Γυμναστήριο", + "en": "Gymnasium", + "eo": "Sporthalo", + "es": "Gimnasio / Pabellón deportivo", + "et": "Spordihall", + "fa": "سالن ورزشی", + "fi": "Liikuntasali", + "fr": "Gymnase", + "gl": "Pavillón polideportivo", + "he": "חדר כושר", + "hr": "Sportska dvorana", + "hu": "Tornaterem", + "it": "Palestra", + "ja": "体育館", + "mk": "Фискултурна сала", + "nl": "Sporthal", + "pl": "Sala sportowa", + "pt-BR": "Ginásio", + "pt": "Pavilhão desportivo", + "sk": "Telocvičňa", + "sv": "Sporthall", + "tr": "Spor salonu", + "uk": "Спортзал", + "vi": "Nhà thi đấu Thể thao", + "zh-CN": "体育馆", + "zh-TW": "體育館" + } + }, + "leisure/stadium": { + "title": { + "C": "Stadium", + "af": "Stadium", + "am": "ስታዲዩም", + "ar": "استاد رياضي", + "ast": "Estadiu", + "bg": "Стадион", + "bn": "স্টেডিয়াম", + "bs": "Stadion", + "ca": "Estadi", + "cs": "Stadion", + "da": "Stadion", + "de": "Stadion", + "dv": "ސްޓޭޑިއަމް", + "el": "Στάδιο", + "en-GB": "Stadium", + "en": "Stadium", + "eo": "Stadiono", + "es": "Estadio", + "et": "Staadion", + "eu": "Estadio", + "fa": "ورزشگاه", + "fi": "Stadion", + "fr": "Stade", + "gl": "Estadio", + "he": "אצטדיון", + "hr": "Stadion", + "hu": "Stadion", + "id": "Stadion", + "is": "Leikvangur", + "it": "Stadio", + "ja": "スタジアム", + "kn": "ಕ್ರೀಡಾಂಗಣ", + "ko": "경기장", + "lt": "Stadionas", + "lv": "Stadions", + "mk": "Стадион", + "nl": "Stadion", + "no": "Stadion", + "pl": "Stadion", + "pt-BR": "Estádio", + "pt": "Estádio", + "ro": "Stadion", + "ru": "Стадион (территория)", + "sk": "Štadión", + "sl": "Stadion", + "so": "Garoon", + "sr": "Стадион", + "sv": "Stadium", + "ta": "விளையாட்டு அரங்கம்", + "tr": "Stadyum", + "uk": "Стадіон", + "vi": "Sân vận động", + "yue": "大體育館", + "zh-CN": "体育场", + "zh-HK": "體育館", + "zh-TW": "體育場", + "zh": "体育场" + } + }, + "leisure/swimming_area": { + "title": { + "C": "Natural Swimming Area", + "ar": "منطقة سباحة طبيعية", + "cs": "Přírodní koupaliště", + "da": "Åbentvandssvømningsområde", + "de": "Natürlicher Badebereich", + "el": "Φυσική Περιοχή Κολύμβησης", + "en": "Natural Swimming Area", + "eo": "Naĝejo natura", + "es": "Área de natación natural", + "et": "Looduslik ujumiskoht", + "fa": "منطقه طبیعی شنا", + "fi": "Uimaranta", + "fr": "Lieu de baignade", + "gl": "Área de natación natural", + "he": "שטח שחייה טבעי", + "hu": "Úszásra kijelölt terület", + "it": "Area riservata ai bagnanti", + "ja": "遊泳区域", + "mk": "Природно пливалиште", + "nl": "Natuurlijk zwemgebied", + "pl": "Kąpielisko", + "pt-BR": "Área de natação natural", + "pt": "Área balnear natural", + "sk": "Prírodný plavecký areál", + "sv": "Naturbadområde", + "tr": "Doğal Yüzme Alanı", + "uk": "Місце для плавання", + "vi": "Vũng Sâu để Bơi", + "zh-CN": "自然游泳区域", + "zh-TW": "自然游泳區" + } + }, + "leisure/swimming_pool": { + "title": { + "C": "Swimming Pool", + "af": "Swembad", + "ar": "حوض سباحة", + "ast": "Piscina", + "bg": "Плувен басейн", + "bn": "সুইমিং পুল", + "bs": "Bazen", + "ca": "Piscina", + "cs": "Plavecký bazén", + "da": "Svømmebassin", + "de": "Schwimmbecken", + "el": "Πισίνα", + "en-GB": "Swimming Pool", + "en": "Swimming Pool", + "eo": "Naĝejo (akvo)", + "es": "Piscina", + "et": "Ujumisbassein", + "eu": "Igerileku", + "fa": "استخر شنا", + "fi": "Uimahalli tai -allas", + "fr": "Piscine", + "gl": "Piscina", + "he": "בריכת שחייה", + "hr": "Bazen", + "hu": "Úszómedence", + "id": "Kolam Renang", + "is": "Sundlaug", + "it": "Piscina", + "ja": "遊泳プール(屋外)", + "kn": "ಈಜುಕೊಳ", + "ko": "수영장", + "lt": "Baseinas", + "lv": "Peldbaseins", + "mk": "Базен", + "nl": "Zwembad", + "no": "Svømmebasseng", + "pl": "Basen", + "pt-BR": "Piscina", + "pt": "Piscina", + "ro": "Piscină", + "ru": "Бассейн (его водная поверхность)", + "sk": "Plaváreň", + "sl": "Plavalni bazen", + "sr": "Базен", + "sv": "Simbassäng", + "ta": "நீச்சல் குளம்", + "te": "ఈత కొలను", + "tr": "Yüzme Havuzu", + "uk": "Басейн", + "vi": "Hồ Bơi", + "yue": "游水池", + "zh-CN": "游泳池", + "zh-HK": "游泳池", + "zh-TW": "游泳池", + "zh": "游泳池" + } + }, + "leisure/track": { + "title": { + "C": "Racetrack (Non-Motorsport)", + "ar": "مضمار السباق (غير رياضة السيارات)", + "ast": "Circuitu (Deportes sin motor)", + "cs": "Závodní dráha (ne pro motorsport)", + "da": "Løbsbane (Ej motorsport)", + "de": "Bahn (Nicht Motorsport)", + "el": "Αγωνιστικός Στίβος (Μη-Μηχανοκίνηση)", + "en-GB": "Racetrack (Non-Motorsport)", + "en": "Racetrack (Non-Motorsport)", + "eo": "Kurejo/biciklejo/konkursejo (nemotora)", + "es": "Pista de carrera (no motorizada)", + "et": "Staadion", + "fa": "میدان مسابقه (مسابقات غیرموتوری)", + "fi": "Kilparata (ei moottoriurheilu)", + "fr": "Piste de course (hors sports mécaniques)", + "gl": "Pista de competición (non motorizada)", + "he": "מסלול מרוצים (לבלתי ממונעים)", + "hr": "Staza za utrkivanje (nemotorizirane discipline)", + "hu": "Versenypálya (nem motorsport)", + "is": "Keppnisbraut (ekki mótorsport)", + "it": "Pista (sport non motoristici)", + "ja": "競技トラック(モータースポーツ以外)", + "ko": "경주로(비모터스포츠)", + "mk": "Тркалиште (немоторно)", + "nl": "Racepiste (niet-motorsport)", + "no": "Racerbane (Ikke motorsport)", + "pl": "Tor wyścigowy (niemotorowy)", + "pt-BR": "Pista para esportes não-motorizados", + "pt": "Pista de desportos não motorizados", + "ru": "Гоночный трек (не автоспорт)", + "sk": "Pretekárska dráha (nemotorové športy)", + "sl": "Tekmovalna steza (neasfaltirana)", + "sv": "Tävlingsbana (Icke motorsport)", + "tr": "Yarış Pisti (motor spor hariç)", + "uk": "Гоночний трек (не мотоспорт)", + "vi": "Đường Đua (Không phải Đua Xe)", + "zh-CN": "赛道(非机动竞速项目)", + "zh-HK": "賽道(非賽車)", + "zh-TW": "賽道(非賽車運動)" + } + }, + "leisure/trampoline_park": { + "title": { + "C": "Trampoline Park", + "ar": "منتزه النُطيطة (الترامبولين)", + "cs": "Trampolínová hala", + "da": "Trampolinpark", + "de": "Trampolinpark", + "el": "Πάρκο Τραμπολίνου", + "en": "Trampoline Park", + "eo": "Parko de saltadtukoj", + "es": "Parque de trampolín", + "et": "Batuudikeskus", + "fa": "پارک ترامپولین", + "fi": "Trampoliinipuisto", + "fr": "Parc à trampolines", + "gl": "Parque de trampolíns", + "he": "פארק טרמפולינות", + "hu": "Ugrálda", + "it": "Parco di trampolini", + "ja": "トランポリンパーク", + "mk": "Трамбулински парк", + "nl": "Trampolinepark", + "pl": "Park trampolin", + "pt-BR": "Parque de trampolim", + "pt": "Parque de trampolins", + "sk": "Tempolínovy park", + "sv": "Trampolinpark", + "tr": "Trambolin Parkı", + "uk": "Батутна арена", + "vi": "Khu Giàn nhún", + "zh-CN": "室内蹦床乐园", + "zh-TW": "彈簧床公園" + } + }, + "leisure/water_park": { + "title": { + "C": "Water Park", + "ar": "ملاهي مائية", + "ast": "Parque acuáticu", + "ca": "Parc Aquàtic", + "cs": "Akvapark", + "da": "Vandland", + "de": "Erlebnisbad", + "el": "Νεροτσουλήθρες", + "en-GB": "Water Park", + "en": "Water Park", + "eo": "Akvoparko", + "es": "Parque acuático", + "et": "Veepark", + "eu": "Ur-parkea", + "fa": "پارک آبی", + "fi": "Vesipuisto", + "fr": "Parc à thème aquatique", + "gl": "Parque acuático", + "he": "פארק מים", + "hr": "Vodeni park", + "hu": "Strand (épített)", + "is": "Vatnagarður", + "it": "Parco acquatico", + "ja": "ウォーターパーク", + "ko": "워터파크", + "lt": "Vandens parkas", + "lv": "Akvaparks", + "mk": "Воден парк", + "nl": "Waterpretpark", + "no": "Utendørs badeland", + "pl": "Park wodny", + "pt-BR": "Parque aquático", + "pt": "Parque aquático", + "ro": "Parc Acvatic", + "ru": "Аквапарк", + "sk": "Vodný park", + "sl": "Vodni park", + "sr": "Водени парк", + "sv": "Äventyrsbad / Vattenpark", + "ta": "தண்ணீர் பூங்கா", + "tr": "Su Parkı", + "uk": "Аквапарк", + "vi": "Công viên Nước", + "zh-CN": "水上乐园", + "zh-HK": "水上樂園", + "zh-TW": "水上樂園" + } + }, + "office/administrative": { + "title": { + "C": "Administrative Office", + "am": "አስተዳደር ቢሮ", + "ar": "مكتب إداري", + "ast": "Oficina alministrativa", + "bs": "Administrativni ured", + "ca": "Oficina de tràmits locals", + "cs": "Místní úřad", + "da": "Administrativt kontor", + "de": "Verwaltungsamt", + "el": "Διοικητική Υπηρεσία", + "en-GB": "Administrative Office", + "en": "Administrative Office", + "eo": "Administra oficejo", + "es": "Oficina administrativa", + "fa": "اداره حکومتی", + "fi": "Kunnallishallinnon toimisto", + "fr": "Bureau administratif", + "gl": "Oficina administrativa", + "he": "משרד אדמינסטרטיבי", + "hu": "Közigazgatási hivatal", + "id": "Kantor Administrasi", + "is": "Stjórnsýsluskrifstofa", + "it": "Autorità locale", + "ja": "地方行政事務所", + "ko": "관리 사무소", + "lt": "Administracinis biuras", + "mk": "Администрација", + "ms": "Pejabat Pentadbiran", + "nl": "Bestuurlijke instantie", + "pl": "Biuro samorządowe", + "pt-BR": "Escritório Administrativo", + "pt": "Escritório da administração local", + "ro": "Oficiu Administrativ", + "ru": "Местная администрация и надзирающие органы", + "sk": "Administratívny úrad", + "sl": "Upravna enota", + "sr": "Управна канцеларија", + "sv": "Lokal myndighet", + "ta": "நிருவாக அலுவலகம்", + "tr": "İdari Ofis", + "uk": "Канцелярія", + "vi": "Cơ quan Địa phương", + "yue": "行政樓", + "zh-CN": "行政楼", + "zh-HK": "行政樓", + "zh-TW": "政府機關" + } + }, + "office/physician": { + "title": { + "C": "Physician", + "ar": "طبيب", + "ast": "Médicu", + "bn": "চিকিত্সক", + "bs": "Ljekar", + "ca": "Metge", + "cs": "Praktický lékař", + "da": "Læge", + "de": "Arztpraxis", + "el": "Ιατρός", + "en-GB": "Physician", + "en": "Physician", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "fa": "پزشک", + "fi": "Lääkäri", + "fr": "Médecin", + "gl": "Médico", + "he": "רופא", + "hr": "Liječnička praksa", + "is": "Læknir", + "it": "Medico", + "ja": "医者", + "kn": "ವೈದ್ಯ", + "ko": "내과의원", + "lt": "Gydytojas", + "mk": "Лекар", + "ms": "Pakar Perubatan", + "nl": "Arts", + "no": "Lege", + "pl": "Lekarz", + "pt-BR": "Médico", + "pt": "Médico especialista", + "ro": "Fizician", + "ru": "Врач", + "sk": "Doktor", + "sl": "Ambulanta", + "sr": "Лекар", + "sv": "Läkare", + "ta": "மருத்துவர்", + "tr": "Hekim", + "uk": "Лікар", + "vi": "Văn phòng Bác sĩ", + "yue": "醫生", + "zh-CN": "医生", + "zh-HK": "醫生", + "zh-TW": "醫務所" + } + }, + "office/travel_agent": { + "title": { + "C": "Travel Agency", + "am": "የጉዞ ወኪል", + "ar": "وكالة السفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "en": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyage", + "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "mk": "Туристичка агенција", + "ms": "Agensi Pelancongan", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Турагентство (устаревший тег)", + "sk": "Cestovná agentúra", + "sl": "Potovalna agencija", + "so": "Wakaalad Socdaal", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Seyahat Acentesi", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社" + } + }, + "office/accountant": { + "title": { + "C": "Accountant Office", + "am": "ሒሳብ ሠራተኛ", + "ar": "مكتب محاسب", + "ast": "Contable", + "ca": "Oficina comptable", + "cs": "Účetnictví", + "da": "Revisor-kontor", + "de": "Buchhaltungsbüro", + "el": "Λογιστικό Γραφείο", + "en-GB": "Accountant Office", + "en": "Accountant Office", + "eo": "Oficejo de kontisto", + "es": "Oficina de contador", + "fa": "دفتر حسابدار", + "fi": "Tilintarkastustoimisto", + "fr": "Comptable", + "gl": "Oficina contábel", + "he": "משרד רואה חשבון", + "hu": "Könyvelőiroda", + "is": "Bókhaldsskrifstofa", + "it": "Commercialista", + "ja": "会計事務所(主に法人向け)", + "ko": "회계사 사무소", + "mk": "Сметководствено биро", + "ms": "Pejabat Akauntan", + "nl": "Boekhouder", + "no": "Revisorkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Contabilidade", + "pt": "Contabilista", + "ru": "Бухгалтер", + "sk": "Účtovnik", + "sr": "Рачуноводствена канцеларија", + "sv": "Bokhållare", + "tr": "Muhasebeci", + "uk": "Бухгалтер", + "vi": "Văn phòng Kế toán", + "zh-CN": "会计师事务所", + "zh-TW": "會計師事務所" + } + }, + "office/adoption_agency": { + "title": { + "C": "Adoption Agency", + "ca": "Agència d'adopció", + "cs": "Adopční agentura", + "da": "Adoptionsbureau", + "de": "Adoptionsagentur", + "el": "Οργανισμός Υιοθεσίας", + "en-GB": "Adoption Agency", + "en": "Adoption Agency", + "eo": "Oficejo de adopto", + "es": "Agencia de adopción", + "fa": "سازمان بهزیستی", + "fi": "Adoptiotoimisto", + "fr": "Agence d'adoption", + "gl": "Axencia de adopción", + "he": "סוכנות אימוץ", + "hr": "Agencija za posvajanje", + "hu": "Örökbefogadási ügynökség", + "is": "Ættleiðingaskrifstofa", + "it": "Agenzia per adozioni", + "ja": "養子縁組み機関", + "ko": "입양기관", + "lv": "Adopcijas Aģentūra", + "mk": "Агенција за посвојување", + "ms": "Agensi Pengambilan Anak Angkat", + "nl": "Adoptiebureau", + "no": "Adopsjonsbyrå", + "pl": "Ośrodek adopcyjny", + "pt-BR": "Agência de Adoção", + "pt": "Agência de adoção", + "ru": "Агенство по усыновлению", + "sk": "Agentúra pre adopcie", + "sr": "Агенција за усвајање", + "sv": "Adoptionsbyrå", + "tr": "Evlat Edinme Ajansı", + "uk": "Агенція з усиновлення", + "vi": "Cơ quan Nhận Con nuoi", + "zh-CN": "领养中介", + "zh-TW": "領養代理" + } + }, + "office/advertising_agency": { + "title": { + "C": "Advertising Agency", + "am": "የማስታወቂያ ድርጅት", + "ar": "وكالة إعلانية", + "ast": "Axencia de publicidá", + "ca": "Agència de publicitat", + "cs": "Reklamní agentura", + "da": "Reklamebureau", + "de": "Werbeagentur", + "el": "Διαφημιστική", + "en-GB": "Advertising Agency", + "en": "Advertising Agency", + "eo": "Oficejo de reklamo", + "es": "Agencia de publicidad", + "fa": "کانون تبلیغاتی", + "fi": "Mainostoimisto", + "fr": "Agence de publicité", + "gl": "Axencia de publicidade", + "he": "סוכנות פרסום", + "hr": "Reklamna agencija", + "hu": "Reklámügynökség", + "is": "Auglýsingastofa", + "it": "Agenzia pubblicitaria", + "ja": "広告代理店", + "ko": "광고 대행사", + "lt": "Reklamos agentūra", + "mk": "Рекламна агенција", + "ms": "Agensi Pengiklanan", + "nl": "Reclamebureau", + "no": "Reklamebyrå", + "pl": "Agencja reklamowa", + "pt-BR": "Agência de Publicidade", + "pt": "Agência de publicidade", + "ru": "Рекламное агенство", + "sk": "Reklamná agentúra", + "sr": "Рекламна агенција", + "sv": "Reklambyrå", + "ta": "விளம்பர முகவர்", + "tr": "Reklam Ajansı", + "uk": "Рекламна агенція", + "vi": "Cơ sở Quảng cáo", + "zh-CN": "广告中介", + "zh-TW": "廣告代理公司" + } + }, + "office/architect": { + "title": { + "C": "Architect Office", + "am": "አርኪቴክት", + "ar": "مكتب مهندس معماري", + "ca": "Oficina d'arquitectura", + "cs": "Kancelář architekta", + "da": "Arkitekt-kontor", + "de": "Architekturbüro", + "el": "Αρχιτεκτονικό Γραφείο", + "en-GB": "Architect Office", + "en": "Architect Office", + "eo": "Oficejo de arĥitekturisto", + "es": "Oficina de arquitecto", + "fa": "دفتر معماری", + "fi": "Arkkitehtitoimisto", + "fr": "Architecte", + "gl": "Oficina de arquitectura", + "he": "משרד אדריכלים", + "hr": "Arhitektonski ured", + "hu": "Építésziroda", + "is": "Arkitektastofa", + "it": "Studio di architettura", + "ja": "設計事務所", + "ko": "건축가 사무소", + "lt": "Architekto biuras", + "lv": "Arhitekta birojs", + "mk": "Архитектонско биро", + "ms": "Pejabat Arkitek", + "nl": "Architectenbureau", + "no": "Arkitektkontor", + "pl": "Architekt", + "pt-BR": "Escritório de Arquitetura", + "pt": "Arquiteto", + "ru": "Архитектурное бюро", + "sk": "Architekt", + "sr": "Архитектонска канцеларија", + "sv": "Arkitektbyrå", + "tr": "Mimarlık Ofisi", + "uk": "Архітектор", + "vi": "Văn phòng Kiến trúc sư", + "zh-CN": "建筑事务所", + "zh-TW": "建築師事務所" + } + }, + "office/association": { + "title": { + "C": "Nonprofit Organization Office", + "am": "ማኅበር", + "ar": "مكتب منظمة غير ربحية", + "ast": "Oficina d'ONG", + "ca": "Oficina d'organització no governamental", + "cs": "Kancelář neziskové organizace", + "da": "Almennyttigt kontor", + "de": "Büro einer Nonprofit-Organisation", + "el": "Μη Κερδοσκοπική Υπηρεσία", + "en-GB": "Nonprofit Organization Office", + "en": "Nonprofit Organization Office", + "eo": "Oficejo de ne-profit-cela organizaĵo", + "es": "Oficina de organización sin fines de lucro", + "fa": "دفتر سازمان غیر انتفاعی", + "fi": "Voittoa tavoittelematon järjestö", + "fr": "Bureau d'association", + "gl": "Oficina de asociación", + "he": "ארגון ללא מטרת רווח", + "hr": "Ured neprofitne udruge", + "hu": "Egyesület irodája", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Ufficio associazione senza scopo di lucro", + "ja": "非営利組織", + "ko": "비영리 단체 사무소", + "lt": "Ne pelno organizacijos biuras", + "mk": "Непрофитна организација", + "ms": "Pejabat Pertubuhan Bukan Untung", + "nl": "Kantoor van non-profitorganisatie", + "pl": "Biuro organizacji non profit", + "pt-BR": "Escritório de organização sem fins lucrativos", + "pt": "Organização sem fins lucrativos", + "ru": "Ассоциация (союз)", + "sk": "Nezisková organizácia", + "sr": "Непрофитна канцеларија", + "sv": "Frivilligorganisation", + "tr": "Yardım Kuruluşu", + "uk": "Неприбуткова організація", + "vi": "Tổ chức Phi lợi nhuận", + "zh-CN": "非营利机构办公室", + "zh-TW": "非營利組織辦公室" + } + }, + "office/bail_bond_agent": { + "title": { + "C": "Bail Bond Agent", + "ar": "مكتب وكيل سند الكفالة", + "cs": "zastavárna pro získání kauce", + "de": "Kautionsvermittler", + "en": "Bail Bond Agent", + "eo": "Oficejo de kaŭci-leĝisto", + "es": "Agente de fianzas", + "fr": "Agent de cautionnement", + "gl": "Axente de fianzas", + "he": "סוכן שחרור בערבות", + "hu": "Óvadékiroda", + "it": "Agente di cauzione", + "ja": "保釈保証業者", + "mk": "Кауционист", + "nl": "Borgtochtgeldschieter", + "pl": "Poręczyciel majątkowy", + "pt-BR": "Agente de fiança", + "pt": "Agente de fianças", + "sv": "Bail Bond-agent", + "tr": "Kefaletnameci", + "uk": "Застава за звільнення", + "vi": "Văn phòng Đóng tiền Thế chân Tại ngoại", + "zh-CN": "保释担保代理", + "zh-TW": "保釋債券代理人" + } + }, + "office/charity": { + "title": { + "C": "Charity Office", + "ar": "مكتب منظمة خيرية", + "cs": "Kancelář charity", + "da": "Velgørenhedskontor", + "de": "Wohlfahrtseinrichtung", + "el": "Φιλανθρωπική Υπηρεσία", + "en-GB": "Charity Office", + "en": "Charity Office", + "eo": "Oficejo de almoza organizaĵo", + "es": "Oficina de beneficencia", + "fa": "دفتر خیریه", + "fi": "Hyväntekeväisyysjärjestö", + "fr": "Organisation de bienfaisance/charité", + "gl": "Oficina da caridade", + "he": "משרד צדקה", + "hu": "Jótékonysági szervezet irodája", + "is": "Skrifstofa góðgerðasamtaka", + "it": "Organizzazione benefica", + "ja": "慈善団体", + "ko": "자선 단체 사무소", + "lt": "Labdaros biuras", + "mk": "Добротворна организација", + "ms": "Pejabat Kebajikan", + "nl": "Kantoor van liefdadigheidsinstelling", + "no": "Veldedighetskontor", + "pl": "Organizacja charytatywna", + "pt-BR": "Escritório de Caridade", + "pt": "Instituição de caridade", + "ru": "Благотворительная организация", + "sk": "Charita", + "sr": "Добротворна канцеларија", + "sv": "Välgörenhetsorganisation", + "tr": "Hayır Kurumu", + "uk": "Благодійна організація", + "vi": "Tổ chức Từ thiện", + "zh-CN": "慈善机构", + "zh-TW": "慈善機構" + } + }, + "office/company": { + "title": { + "C": "Corporate Office", + "am": "ኩባንያ", + "ar": "مكتب شركة / مؤسسة", + "ca": "Oficina corporativa", + "cs": "Kancelář korporace", + "da": "Virksomhedskontor", + "de": "Firmenbüro", + "el": "Εταιρικό Γραφείο", + "en-GB": "Corporate Office", + "en": "Corporate Office", + "eo": "Oficejo de firmao", + "es": "Oficina corporativa", + "et": "Ettevõtte kontor", + "fa": "دفتر شرکت خصوصی", + "fi": "Yritystoimisto", + "fr": "Bureau d'entreprise", + "gl": "Oficina corporativa", + "he": "משרד תאגידי", + "hr": "Ured firme", + "hu": "Vállalati iroda", + "is": "Skrifstofa fyrirtækis", + "it": "Ufficio aziendale", + "ja": "会社", + "ko": "기업 사무소", + "lt": "Korporacijos biuras", + "mk": "Деловни простории", + "nl": "Kantoor van bedrijf", + "pl": "Biuro firmy", + "pt-BR": "Escritório de Empresa", + "pt": "Empresa", + "ru": "Частная компания", + "sr": "Пословна канцеларија", + "sv": "Företagskontor", + "tr": "Şirket", + "uk": "Офіс компанії", + "vi": "Văn phòng Công ty", + "zh-CN": "企业公司", + "zh-TW": "公司辦公室" + } + }, + "office/consulting": { + "title": { + "C": "Consultancy Office", + "ar": "مكتب شركة استشارية", + "cs": "Poradenská kancelář", + "da": "Konsulentkontor", + "de": "Consulting/Beratungs-Büro", + "el": "Υπηρεσία Συμβούλων", + "en": "Consultancy Office", + "eo": "Oficejo de konsilado por firmaoj", + "es": "Oficina de consultora", + "fa": "دفتر مشاوره", + "fi": "Konsulttitoimisto", + "fr": "Bureau de consultant", + "gl": "Oficina de consultoría", + "he": "משרד ייעוץ", + "hu": "Tanácsadó cég irodája", + "it": "Studio di consulenza", + "ja": "コンサルティング事務所", + "ko": "컨설팅 사무소", + "mk": "Советодавно биро", + "nl": "Adviesbureau", + "pl": "Biuro konsultanta", + "pt-BR": "Gabinete de consultoria", + "pt": "Empresa de consultadoria", + "ru": "Консультационная компания", + "sr": "Консултантска канцеларија", + "sv": "Konsultkontor", + "tr": "Danışmanlık Ofisi", + "uk": "Консалтингова фірма", + "vi": "Văn phòng Tư vấn", + "zh-CN": "咨询公司办公室", + "zh-TW": "諮詢處" + } + }, + "office/coworking": { + "title": { + "C": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de cotreball", + "cs": "Místo pro spolupráci", + "da": "Kontorfællesskab", + "de": "Coworking-Büro", + "el": "Χώρος Συνεργασίας", + "en-GB": "Coworking Space", + "en": "Coworking Space", + "eo": "Oficejo por samloka laborado (coworking)", + "es": "Espacio de trabajo compartido", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de coworking", + "gl": "Espacio de cotraballo", + "he": "משרדים משותפים", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Ufficio in Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "mk": "Споделен работен простор", + "nl": "Coworking-kantoor", + "pl": "Centrum coworkingowe", + "pt-BR": "Espaço de Coworking", + "pt": "Coworking", + "ru": "Коворкинг", + "sl": "Prostor za sodelo", + "sr": "Дељени радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間" + } + }, + "office/diplomatic": { + "title": { + "C": "Diplomatic Office", + "ar": "مكتب دبلوماسي", + "ca": "Oficina diplomàtica", + "cs": "diplomatická kancelář", + "da": "Diplomatkontor", + "de": "Diplomatische und konsularische Vertretung", + "el": "Διπλωματική Υπηρεσία", + "en": "Diplomatic Office", + "eo": "Oficejo diplomatia", + "es": "Oficina diplomática", + "fa": "دفتر دیپلماتیک / امور خارجه", + "fi": "Diplomaattinen toimisto", + "fr": "Bâtiment diplomatique", + "gl": "Oficina diplomática", + "he": "משרד דיפלומטי", + "hu": "Diplomáciai iroda", + "it": "Ufficio diplomatico", + "ja": "外交施設", + "ko": "외교 사무소", + "mk": "Дипломатска служба", + "nl": "Diplomatisch kantoor", + "pl": "Placówka dyplomatyczna", + "pt-BR": "Escritório diplomático", + "pt": "Escritório diplomático", + "sk": "Diplomatický úrad", + "sr": "Дипломатска канцеларија", + "sv": "Diplomatkontor", + "tr": "Diplomatik Ofis", + "uk": "Дипломатична установа", + "vi": "Văn phòng Ngoại giao", + "zh-CN": "外交代表机构", + "zh-TW": "外交辦公室" + } + }, + "office/educational_institution": { + "title": { + "C": "Educational Institution", + "am": "የትምህርት ተቋም", + "ar": "مكتب مؤسسة تعليمية", + "ast": "Institución educativa", + "bs": "Obrazovna institucija", + "ca": "Institució Educativa", + "cs": "Vzdělávací instituce", + "da": "Uddannelsesinstitution", + "de": "Bildungseinrichtung", + "el": "Εκπαιδευτικό Ίδρυμα", + "en-GB": "Educational Institution", + "en": "Educational Institution", + "eo": "Oficejo de edukada institucio", + "es": "Oficina de institución educativa", + "fa": "مؤسسه آموزشی", + "fi": "Koulutushallinnon toimisto", + "fr": "Bureau de l'établissement d'enseignement", + "gl": "Institución educativa", + "he": "מוסד חינוכי", + "hr": "Obrazovna ustanova", + "hu": "Oktatási intézmény irodája", + "id": "Institusi Pendidikan", + "is": "Menntastofnun", + "it": "Istituto d'Istruzione", + "ja": "教育機関事務所", + "ko": "교육 기관", + "lt": "Edukacinis institutas", + "lv": "Izglītības Iestāde", + "mk": "Образовна установа", + "ms": "Institusi Pendidikan", + "nl": "Kantoor van onderwijsinstelling", + "no": "Utdanningsinstitusjon", + "pl": "Instytucja edukacyjna", + "pt-BR": "Escritório de instituição educacional", + "pt": "Instituição de ensino", + "ro": "Instituție Educațională", + "ru": "Администрация общеобразовательного учреждения", + "sk": "Vzdelávací inštitút", + "sl": "Izobraževalna ustanova", + "sr": "Образовна институција", + "sv": "Utbildningskontor", + "tr": "Eğitim Kurumu", + "uk": "Офіс освітнього закладу", + "vi": "Học viện", + "yue": "敎育機構", + "zh-CN": "教育机构", + "zh-HK": "敎育機構", + "zh-TW": "教育機構" + } + }, + "office/employment_agency": { + "title": { + "C": "Employment Agency", + "am": "የስራ ቅጥር ኤጀንሲ", + "ar": "مكتب وكالة توظيف", + "ast": "Axencia d'emplegu", + "bs": "Agencija za zapošljavanje", + "ca": "Oficina de treball", + "cs": "Úřad práce", + "da": "Arbejdsformidling", + "de": "Arbeitsvermittlung", + "el": "Γραφείο Ευρέσεως Εργασίας", + "en-GB": "Employment Agency", + "en": "Employment Agency", + "eo": "Dungoficejo", + "es": "Agencia de empleo", + "fa": "آژانس کاریابی", + "fi": "Työnvälitystoimisto", + "fr": "Agence pour l'emploi", + "gl": "Oficina de emprego", + "he": "סוכנות כוח אדם", + "hu": "Munkaügyi központ", + "id": "Agen Tenaga Kerja", + "is": "Atvinnumiðlun", + "it": "Agenzia per l'impiego", + "ja": "職業安定所", + "ko": "직업 소개소", + "lt": "Įdarbinimo agentūra", + "mk": "Агенција за вработување", + "ms": "Agensi Pekerjaan", + "nl": "Uitzendbureau", + "no": "Bemanningsbyrå", + "pl": "Agencja zatrudnienia", + "pt-BR": "Agência de Empregos", + "pt": "Agência de emprego", + "ro": "Agenție de Muncă", + "ru": "Кадровое агентство", + "sk": "Zamestnávateľská agentúra", + "sl": "Agencija za zaposlovanje", + "sr": "Служба за запошљавање", + "sv": "Arbetsförmedling", + "ta": "வேலைவாய்ப்பு முகவர்", + "tr": "İş ve İşçi Bulma Kurumu", + "uk": "Кадрова агенція", + "vi": "Cơ quan Giới thiệu Việc làm", + "yue": "薦人館", + "zh-CN": "就业机构", + "zh-HK": "職業介紹所", + "zh-TW": "就業服務站" + } + }, + "office/energy_supplier": { + "title": { + "C": "Energy Supplier Office", + "ar": "مكتب شركة مرافق الكهرباء", + "ast": "Oficina de distribuidora d'enerxía", + "cs": "Kancelář dodavatele elektřiny", + "da": "Energiforsyningskontor", + "de": "Energieversorgungsunternehmen", + "el": "Γραφείο Προμηθειών Ενέργειας", + "en-GB": "Energy Supplier Office", + "en": "Energy Supplier Office", + "eo": "Oficejo de elektr-provizanto", + "es": "Oficina de proveedor de energía", + "fa": "دفتر تأمین کننده انرژی", + "fi": "Energiayhtiö", + "fr": "Fournisseur d'énergie", + "gl": "Oficina de empresa enerxética", + "he": "משרד ספק חשמל", + "hr": "Uredi opskrbljivača energijom", + "hu": "Energiaszolgáltató irodája", + "is": "Orkusöluskrifstofa", + "it": "Ufficio azienda fornitrice di energia", + "ja": "エネルギー供給者", + "ko": "에너지 공급자 사무소", + "lv": "Elektrodevēja birojs", + "mk": "Енергостопанска служба", + "ms": "Pejabat Pembekal Tenaga", + "nl": "Kantoor van energiemaatschappij", + "pl": "Biuro dostawcy energii", + "pt-BR": "Escritório de Fornecedor de Energia", + "pt": "Distribuidor de energia", + "ru": "Офис поставщика электроэнергии", + "sr": "Електродистрибутивна канцеларија", + "sv": "Energibolag", + "tr": "Enerji Kurumu Şubesi", + "uk": "Електропостачальна компанія", + "vi": "Văn phòng Công ty Điện lực", + "zh-CN": "电力公司", + "zh-TW": "電力公司辦公室" + } + }, + "office/estate_agent": { + "title": { + "C": "Real Estate Office", + "am": "የሪል እስቴት ወኪል", + "ar": "مكتب عقاري", + "ast": "Axencia inmobiliaria", + "bs": "Agencija za nekretnine", + "ca": "Oficina d'agència immobiliària", + "cs": "Realitní kancelář", + "da": "Ejendomsmægler", + "de": "Immobilienmakler", + "el": "Κτηματομεσιτική Υπηρεσία", + "en-GB": "Estate Agent", + "en": "Real Estate Office", + "eo": "Oficejo de nemoveblaĵisto", + "es": "Inmobiliaria", + "fa": "دفتر املاک", + "fi": "Kiinteistönvälitystoimisto", + "fr": "Agence immobilière", + "gl": "Axencia inmobiliaria", + "he": "משרד נדל״ן", + "hu": "Ingatlaniroda", + "id": "Kantor Real Estate", + "is": "Fasteignasöluskrifstofa", + "it": "Agenzia immobiliare", + "ja": "不動産代理店", + "ko": "부동산 사무소", + "lt": "Nekilnojamo turto biuras", + "mk": "Агенција за недвижности", + "ms": "Pejabat Hartanah", + "nl": "Makelaarskantoor", + "no": "Eiendomsmegler", + "pl": "Biuro nieruchomości", + "pt-BR": "Imobiliária", + "pt": "Agência imobiliária", + "ro": "Oficiu de Proprietate Imobiliară", + "ru": "Агентство недвижимости", + "sk": "Realitná agentúra", + "sl": "Nepremičninska agencija", + "sr": "Канцеларија за некретнине", + "sv": "Mäklare/bostadsförmedling", + "tr": "Gayrimenkul Ofisi", + "uk": "Агенція з нерухомості", + "vi": "Văn phòng Bất động sản", + "yue": "管業處", + "zh-CN": "地产中介", + "zh-HK": "地產", + "zh-TW": "房地產仲介" + } + }, + "office/financial": { + "title": { + "C": "Financial Office", + "ar": "مكتب مالي", + "ast": "Oficina financiera", + "bs": "Finansijski ured", + "ca": "Oficina financera", + "cs": "Finanční úřad", + "da": "Finanskontor", + "de": "Finanzvermittlung", + "el": "Υπηρεσία Οικονομικών", + "en-GB": "Financial Office", + "en": "Financial Office", + "eo": "Financa oficejo", + "es": "Financiera", + "fa": "اداره مالی", + "fi": "Taloustoimisto", + "fr": "Bureau d'entreprise financière", + "gl": "Oficina financeira", + "he": "משרד פיננסי", + "hu": "Pénzügyi vállalat irodája", + "id": "Kantor Keuangan", + "is": "Fjármálafyrirtæki", + "it": "Ufficio finanziario", + "ja": "会計事務所(主に個人向け)", + "ko": "금융 사무소", + "lt": "Finansų biuras", + "mk": "Финансиска служба", + "ms": "Pejabat Kewangan", + "nl": "Kantoor van financiële instelling", + "pl": "Biuro finansowe", + "pt-BR": "Escritório Financeiro", + "pt": "Empresa financeira", + "ro": "Oficiu Financiar", + "ru": "Финансовая организация", + "sk": "Finančný úrad", + "sl": "Finančna agencija", + "sr": "Финансијска канцеларија", + "sv": "Bankkontor", + "tr": "Finans Ofisi", + "uk": "Фінансове управління", + "vi": "Văn phòng Tài chính", + "yue": "財務部寫字樓", + "zh-CN": "金融机构", + "zh-HK": "金融機構辦事處", + "zh-TW": "金融機構辦公室" + } + }, + "office/financial_advisor": { + "title": { + "C": "Financial Advisor", + "ar": "المستشار المالي", + "cs": "finanční poradce", + "de": "Finanzberatung", + "el": "Οικονομικός Σύμβουλος", + "en": "Financial Advisor", + "eo": "Oficejo de financa konsilisto", + "es": "Asesor financiero", + "fa": "مشاور مالی", + "fi": "Talousneuvonta", + "fr": "Conseiller financier", + "gl": "Asesor financeiro", + "he": "ייעוץ כלכלי", + "hu": "Pénzügyi Tanácsadó", + "it": "Consulente finanziario", + "ja": "ファイナンシャル・アドバイザー", + "mk": "Финансов советник", + "nl": "Financieel adviseur", + "pl": "Doradca finansowy", + "pt-BR": "Conselheiro financeiro", + "pt": "Conselheiro financeiro", + "sk": "Finančný poradca", + "sr": "Финансијски саветник", + "sv": "Finansiell rådgivare", + "tr": "Finans Danışmanı", + "uk": "Радник з фінансових питань", + "vi": "Cố vấn Tài chính", + "zh-CN": "经济办公室", + "zh-TW": "財務顧問" + } + }, + "office/forestry": { + "title": { + "C": "Forestry Office", + "ar": "مكتب إدارة الغابات", + "ca": "Oficina forestal", + "cs": "Kancelář lesní správy", + "da": "Skovbrugskontor", + "de": "Forstverwaltung", + "el": "Υπηρεσία Δασοκομίας", + "en-GB": "Forestry Office", + "en": "Forestry Office", + "eo": "Oficejo de arbar-mastrumo", + "es": "Oficina forestal", + "fa": "دفتر جنگلداری", + "fi": "Metsätalousvirasto", + "fr": "Administration forestière", + "gl": "Oficina forestal", + "he": "משרד יעור", + "hu": "Erdészeti iroda", + "is": "Skrifstofa skógarvarða", + "it": "Ufficio forestale", + "ja": "林業事務所", + "ko": "삼림 관리 사무소", + "lv": "Mežniecības birojs", + "mk": "Шумарска служба", + "ms": "Pejabat Perhutanan", + "nl": "Bosbeheerkantoor", + "no": "Skogbrukskontoret", + "pl": "Leśnictwo", + "pt-BR": "Escritório da Administração Florestal", + "pt": "Posto florestal", + "ru": "Лесоводство", + "sk": "Lesný správca", + "sr": "Шумарска канцеларија", + "sv": "Skogsbolag", + "tr": "Ormancılık Şubesi", + "uk": "Лісництво", + "vi": "Văn phòng Lâm nghiệp", + "zh-CN": "林务管理", + "zh-TW": "林業事業辦公室" + } + }, + "office/foundation": { + "title": { + "C": "Foundation Office", + "am": "ተቋም", + "ar": "مكتب مؤسسة", + "ast": "Oficina de fundación", + "ca": "Oficina d'una fundació", + "cs": "kancelář nadace", + "da": "Fondskontor", + "de": "Stiftung", + "el": "Υπηρεσία Ιδρύματος", + "en-GB": "Foundation Office", + "en": "Foundation Office", + "eo": "Oficejo de fondaĵo", + "es": "Oficina de fundación", + "fa": "دفتر بنیاد", + "fi": "Säätiö", + "fr": "Fondation", + "gl": "Oficina de fundación", + "he": "משרד קרן", + "hu": "Alapítvány irodája", + "is": "Skrifstofa sjálfseignarstofnunar", + "it": "Fondazione", + "ja": "財団", + "ko": "재단 사무소", + "mk": "Задолжбина", + "ms": "Pejabat Yayasan", + "nl": "Kantoor van stichting", + "pl": "Biuro fundacji", + "pt-BR": "Escritório de Fundação", + "pt": "Fundação", + "ru": "Фонд", + "sr": "Фондациона канцеларија", + "sv": "Stiftelse", + "tr": "Vakıf", + "uk": "Фундація", + "vi": "Quỹ Từ thiện", + "zh-CN": "基金办公室", + "zh-TW": "基金會辦公室" + } + }, + "office/government": { + "title": { + "C": "Government Office", + "am": "የመንግስት ድርጅት", + "ar": "مكتب/دائرة حكومية", + "ast": "Oficina gubernamental", + "bs": "Vladin ured", + "ca": "Oficina governamental", + "cs": "Státní úřad", + "da": "Statsligt kontor", + "de": "Behörde", + "dv": "ސަރުކާރު އޮފީސްތައް", + "el": "Κρατική Υπηρεσία", + "en-GB": "Government Office", + "en": "Government Office", + "eo": "Registara oficejo", + "es": "Oficina de gobierno", + "et": "Valitsuse kontor", + "fa": "دفتر دولتی", + "fi": "Julkishallinnon toimisto", + "fr": "Administration publique", + "gl": "Oficina gobernamental", + "he": "משרד ממשלתי", + "hr": "Državni ured", + "hu": "Kormányzati hivatal", + "id": "Kantor Pemerintah", + "is": "Opinber stofnun", + "it": "Ufficio governativo", + "ja": "行政機関事務所", + "ko": "관청", + "lt": "Vyriausybės biuras", + "lv": "Valdības birojs", + "mk": "Управна служба", + "ms": "Pejabat Kerajaan", + "nl": "Overheidskantoor", + "no": "Regjeringskontor", + "pl": "Biuro rządowe lub samorządowe", + "pt-BR": "Órgão governamental", + "pt": "Escritório governamental", + "ro": "Oficiu de Guvern", + "ru": "Государственное учреждение", + "sk": "Vládny úrad", + "sl": "Vladna agencija", + "so": "Xafiis Dowladeed", + "sr": "Владина канцеларија", + "sv": "Myndighet", + "ta": "அரசு அலுவலகம்", + "tr": "Devlet Dairesi", + "uk": "Уряд", + "vi": "Công sở", + "yue": "衙門", + "zh-CN": "政府办公点", + "zh-HK": "政府辦公室", + "zh-TW": "政府機關" + } + }, + "office/guide": { + "title": { + "C": "Tour Guide Office", + "ar": "مكتب الدليل السياحي", + "ca": "Oficina de guies turístics", + "cs": "Kancelář turistického průvodce", + "da": "Turguidekontor", + "de": "Fremdenführer", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Tour Guide Office", + "en": "Tour Guide Office", + "eo": "Oficejo de vojaĝ-gvido", + "es": "Oficina de turismo", + "fa": "دفتر راهنمای تور", + "fi": "Turistiopastoimisto", + "fr": "Bureau des guides", + "gl": "Oficina de guías turísticos", + "he": "משרד תיירות", + "hu": "Idegenvezetői iroda", + "is": "Skrifstofa leiðsögumanna", + "it": "Ufficio guide turistiche", + "ja": "ツアーガイド", + "ko": "여행 가이드 사무소", + "mk": "Туристички водич", + "ms": "Pejabat Pemandu Pelancong", + "nl": "Gidsenkantoor", + "pl": "Przewodnik turystyczny", + "pt-BR": "Escritório de guia turístico", + "pt": "Guia turístico", + "ru": "Туристические гиды", + "sr": "Туристичка канцеларија", + "sv": "Guidekontor", + "tr": "Tur Rehberi", + "uk": "Гід", + "vi": "Văn phòng Hướng dẫn Du lịch", + "zh-CN": "导游机构", + "zh-TW": "導遊辦公室" + } + }, + "office/insurance": { + "title": { + "C": "Insurance Office", + "am": "ኢንሹራንስ", + "ar": "مكتب تأمينات", + "ast": "Oficina de seguros", + "bs": "Ured za osiguranje", + "ca": "Oficina de companyia asseguradora", + "cs": "Pojišťovna", + "da": "Forsikringselskab", + "de": "Versicherungsbüro", + "el": "Ασφαλιστικό Γραφείο", + "en-GB": "Insurance Office", + "en": "Insurance Office", + "eo": "Oficejo de asekur-kompanio", + "es": "Aseguradora", + "fa": "دفتر بیمه", + "fi": "Vakuutustoimisto", + "fr": "Agence d'assurance", + "gl": "Oficina de seguros", + "he": "משרד ביטוח", + "hr": "Ured osiguravajućeg društva", + "hu": "Biztosító", + "id": "Kantor Asuransi", + "is": "Tryggingaskrifstofa", + "it": "Assicurazione", + "ja": "保険会社・代理店", + "ko": "보험 사무소", + "lt": "Draudimo įstaiga", + "lv": "Apdrošināšanas birojs", + "mk": "Осигурително друштво", + "ms": "Pejabat Insurans", + "nl": "Verzekeringskantoor", + "no": "Forsikringskontor", + "pl": "Biuro ubezpieczeń", + "pt-BR": "Seguradora", + "pt": "Agência de seguros", + "ro": "Oficiu de Asigurare", + "ru": "Страховая компания", + "sk": "Poistenie", + "sl": "Zavarovalnica", + "sr": "Осигуравајућа канцеларија", + "sv": "Försäkringskontor", + "tr": "Sigorta Acentesi", + "uk": "Страхова компанія", + "vi": "Văn phòng Bảo hiểm", + "yue": "保險公司寫字樓", + "zh-CN": "保险公司", + "zh-HK": "保險公司辦公室", + "zh-TW": "保險公司辦公室" + } + }, + "office/it": { + "title": { + "C": "Information Technology Office", + "am": "አይ.ቲ.", + "ar": "مكتب متخصصي تكنولوجيا المعلومات", + "ca": "Oficina de tecnologies de la informació", + "cs": "Kancelář informačních technologií", + "da": "Informationsteknologikontor", + "de": "IT-Unternehmen", + "el": "Υπηρεσία Πληροφοριών Τεχνολογίας", + "en-GB": "Information Technology Office", + "en": "Information Technology Office", + "eo": "Oficejo de inform-teĥnologia firmao", + "es": "Oficina de tecnología de la información", + "fa": "دفتر فناوری اطلاعات", + "fi": "Informaatioteknologian toimisto", + "fr": "Spécialiste en informatique", + "gl": "Oficina de tecnoloxías da información", + "he": "משרד שירותי מחשוב", + "hu": "Informatikai cég irodája", + "is": "Upplýsingatækniskrifstofa", + "it": "Ufficio società IT", + "ja": "IT企業", + "ko": "IT 사무소", + "mk": "Информатичка служба", + "ms": "Pejabat Teknologi Maklumat", + "nl": "IT-kantoor", + "pl": "Firma informatyczna", + "pt-BR": "Escritório de Empresa de Tecnologia da Informação", + "pt": "Escritório de Ti", + "ru": "Офис IT-компании", + "sr": "Информатичка канцеларија", + "sv": "IT-kontor", + "tr": "Bilişim Teknoloji Ofisi", + "uk": "ІТ компанія", + "vi": "Văn phòng Tin học", + "zh-CN": "IT公司", + "zh-TW": "資訊公司辦公室" + } + }, + "office/lawyer": { + "title": { + "C": "Law Office", + "am": "ጠበቃ", + "ar": "مكتب قانوني", + "ast": "Despachu d'abogaos", + "bs": "Pravni ured", + "ca": "Bufet d'advocats", + "cs": "Právní kancelář", + "da": "Advokatkontor", + "de": "Anwaltskanzlei", + "el": "Δικηγορικό Γραφείο", + "en-GB": "Law Office", + "en": "Law Office", + "eo": "Oficejo de leĝisto", + "es": "Despacho de abogados", + "fa": "دفتر حقوقی", + "fi": "Lakitoimisto", + "fr": "Cabinet d'avocats", + "gl": "Bufete", + "he": "משרד עורכי דין", + "hr": "Odvjetnički ured", + "hu": "Ügyvéd", + "id": "Kantor Hukum", + "is": "Lögmannaskrifstofa", + "it": "Studio legale", + "ja": "法律事務所", + "ko": "법률 사무소", + "lt": "Advokatų kontora", + "mk": "Правник", + "ms": "Pejabat Undang-undang", + "nl": "Advocatenkantoor", + "no": "Advokatkontor", + "pl": "Biuro prawnika", + "pt-BR": "Escritório de Advocacia", + "pt": "Escritório de advogados", + "ro": "Cabinet de Avocatură", + "ru": "Юридические услуги", + "sk": "Právna kancelária", + "sl": "Pravna pisarna", + "sr": "Адвокатска канцеларија", + "sv": "Advokatkontor", + "ta": "சட்ட அலுவலகம்", + "tr": "Hukuk Bürosu", + "uk": "Адвокатське бюро", + "vi": "Văn phòng Luật sư", + "yue": "律師事務所", + "zh-CN": "律师事务所", + "zh-HK": "律師事務所", + "zh-TW": "律師事務所" + } + }, + "office/moving_company": { + "title": { + "C": "Moving Company Office", + "ar": "مكتب شركة نقل", + "cs": "Kancelář stěhovací služby", + "da": "Flyttefirmakontor", + "de": "Umzugsfirma", + "el": "Υπηρεσία Μετακομίσεων", + "en-GB": "Moving Company Office", + "en": "Moving Company Office", + "eo": "Oficejo de transloĝiĝ-helpa firmao", + "es": "Oficina de mudanzas", + "fa": "دفتر خدمات باربری / حمل بار", + "fi": "Muuttoyhtiö", + "fr": "Entreprise de déménagement", + "gl": "Oficina de empresa de mudanzas", + "he": "משרד תובלה", + "hu": "Költöztetőcég irodája", + "is": "Skrifstofa flutningafyrirtækis", + "it": "Ufficio compagnia di traslochi", + "ja": "引っ越し業者", + "ko": "이삿짐센터", + "mk": "Преселувач", + "ms": "Pejabat Syarikat Pemindahan", + "nl": "Kantoor van verhuisbedrijf", + "pl": "Biuro firmy przeprowadzkowej", + "pt-BR": "Escritório de Companhia de Mudanças", + "pt": "Empresa de mudanças", + "ru": "Помощь при переезде", + "sv": "Flyttfirma", + "tr": "Taşıma Şirketi Ofisi", + "uk": "Перевезення речей", + "vi": "Văn phòng Công ty Chuyển nhà", + "zh-CN": "搬家公司", + "zh-TW": "搬家公司辦公室" + } + }, + "office/newspaper": { + "title": { + "C": "Newspaper Office", + "am": "ጋዜጣ", + "ar": "صحيفة", + "ast": "Redacción de periódicu", + "cs": "Novinářská redakce", + "da": "Aviskontor", + "de": "Zeitungsredaktion", + "el": "Γραφεία Εφημερίδας", + "en-GB": "Newspaper Office", + "en": "Newspaper Office", + "eo": "Oficejo de redakto", + "es": "Oficina de periódicos", + "fa": "دفتر روزنامه", + "fi": "Toimitus", + "fr": "Journal", + "gl": "Oficina de xornal", + "he": "משרד עיתונאות", + "hu": "Újságszerkesztőség", + "is": "Skrifstofur fréttablaðs", + "it": "Ufficio giornalistico", + "ja": "新聞社", + "ko": "신문사 사무소", + "mk": "Новинарска служба", + "ms": "Pejabat Akhbar", + "nl": "Krantredactie", + "no": "Avisredaksjon", + "pl": "Siedziba wydawcy gazety", + "pt-BR": "Escritório de Jornal", + "pt": "Jornal", + "ru": "Редакция газеты", + "sr": "Новинска канцеларија", + "sv": "Tidningsredaktion", + "ta": "செய்தித்தாள் அலுவலகம்", + "tr": "Gazete Şubesi", + "uk": "Редакція газети", + "vi": "Văn phòng Tờ báo", + "zh-CN": "报社", + "zh-TW": "報社辦公室" + } + }, + "office/ngo": { + "title": { + "C": "NGO Office", + "am": "መንግስታዊ ያልሆነ ድርጅት", + "ar": "مكتب المنظمات العامة الغير حكومية", + "ast": "Oficina d'ONG", + "bn": "এনজিও অফিস", + "bs": "Ured NVO", + "ca": "Oficina d'ONG", + "cs": "Nezisková organizace", + "da": "NGO-kontor", + "de": "NGO-Büro – Nichtregierungsorganisation", + "el": "Γραφείο ΜΚΟ", + "en-GB": "NGO Office", + "en": "NGO Office", + "eo": "Oficejo de neregistara organizaĵo", + "es": "Oficina de ONG", + "fa": "سازمان مردم نهاد", + "fi": "Kansalaisjärjestö", + "fr": "Organisation non gouvernementale", + "gl": "Oficina ONG", + "he": "משרד ארגון לא ממשלתי", + "hr": "Nevladina organizacija", + "hu": "Civil szervezet irodája", + "id": "Kantor LSM", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Organizzazione non governativa", + "ja": "NGO事務所", + "ko": "NGO 사무소", + "mk": "НВО", + "ms": "Pejabat Pertubuhan Bukan Kerajaan", + "nl": "Kantoor van NGO", + "pl": "Biuro organizacji pozarządowej", + "pt-BR": "Sede de ONG", + "pt": "ONG", + "ro": "Oficiu NGO", + "ru": "Общественная организация", + "sk": "Nezisková organizácia", + "sl": "Sedež nevladne organizacije", + "sr": "НВО канцеларија", + "sv": "Icke-statlig organisation", + "tr": "Sivil Toplum Örgütü", + "uk": "Недержавна громадська організація", + "vi": "Tổ chức Phi chính phủ", + "yue": "志顠機構寫字樓", + "zh-CN": "非政府组织", + "zh-HK": "非政府機構辦公室", + "zh-TW": "非政府機構辦公室" + } + }, + "office/notary": { + "title": { + "C": "Notary Office", + "ar": "مكتب كتابة عدل / موثق", + "ast": "Notaría", + "ca": "Notaria", + "cs": "Notářství", + "de": "Notariat", + "el": "Γραφείο Συμβολαιογράφων", + "en-GB": "Notary Office", + "en": "Notary Office", + "eo": "Oficejo de notario", + "es": "Escribanía / Notaría", + "fa": "دفتر اسناد رسمی", + "fi": "Notaari", + "fr": "Notaire", + "gl": "Notaría", + "he": "משרד נוטריון", + "hu": "Közjegyző", + "is": "Skrifstofa lögbókanda", + "it": "Ufficio notarile", + "ja": "公証役場", + "ko": "공증사무소", + "lv": "Notāru birojs", + "mk": "Нотар", + "ms": "Pejabat Penyaksi Awam", + "nl": "Notariskantoor", + "pl": "Notariusz", + "pt-BR": "Tabelionato", + "pt": "Notário", + "ru": "Нотариус", + "sk": "Notár", + "sr": "Нотарска канцеларија", + "sv": "Notarie", + "tr": "Noter", + "uk": "Нотаріус", + "vi": "Văn phòng Công chứng", + "zh-CN": "公证处", + "zh-TW": "公證機構" + } + }, + "office/political_party": { + "title": { + "C": "Political Party Office", + "ar": "مكتب الحزب السياسي", + "cs": "Kancelář politické strany", + "da": "Politisk partikontor", + "de": "Parteibüro", + "el": "Γραφείο Πολιτικού Κόμματος", + "en": "Political Party Office", + "eo": "Oficejo de partio politika", + "es": "Oficina del partido político", + "fa": "دفتر حزب سیاسی", + "fi": "Puoluetoimisto", + "fr": "Bureau de parti politique", + "gl": "Oficina de partido político", + "he": "משרד של מפלגה", + "hu": "Pártiroda", + "it": "Ufficio di un partito", + "ja": "政党事務所", + "ko": "정당 사무소", + "mk": "Партиски штаб", + "nl": "Kantoor van een politieke partij", + "no": "Politisk Parti Kontor", + "pl": "Biuro partii politycznej", + "pt-BR": "Escritório de partido político", + "pt": "Sede partidária", + "ru": "Офис политической партии", + "sk": "Kancelária politicjkej strany", + "sr": "Канцеларија политичке странке", + "sv": "Partikontor", + "tr": "Siyasi Parti Ofisi", + "uk": "Офіс політичної партії", + "vi": "Văn phòng Đảng phái Chính trị", + "zh-CN": "政党办公室", + "zh-TW": "政黨辦公室" + } + }, + "office/private_investigator": { + "title": { + "C": "Private Investigator Office", + "ar": "مكتب محقق خاص", + "ca": "Oficina d'investigador privat", + "cs": "Soukromá detektivní kancelář", + "da": "Privatdetektivkontor", + "de": "Privatdetektiv", + "el": "Γραφείο Ιδιωτικού Ερευνητή", + "en-GB": "Private Investigator Office", + "en": "Private Investigator Office", + "eo": "Oficejo de detektivo", + "es": "Oficina de investigador privado", + "fa": "دفتر تحقیقات خصوصی", + "fi": "Yksityisetsivä", + "fr": "Enquêteur privé/détective", + "gl": "Oficina de investigador privado", + "he": "משרד חוקר פרטי", + "hu": "Magánnyomozó-iroda", + "is": "Einkaspæjaraskrifstofa", + "it": "Ufficio agenzia investigativa privata", + "ja": "私立探偵社", + "ko": "사설탐정 사무소", + "lv": "Privātizmeklētēja birojs", + "mk": "Приватен иследувач", + "ms": "Pejabat Penyiasat Peribadi", + "nl": "Kantoor van privédetective", + "no": "Privat Etterforskning Kontor", + "pl": "Prywatny detektyw", + "pt-BR": "Escritório de detetive particular", + "pt": "Detetive privado", + "ru": "Частный сыщик", + "sr": "Детективска канцеларија", + "sv": "Privatdetektiv", + "ta": "தனியார் துப்பு துலக்கும் அலுவலகம்", + "tr": "Dedektif", + "uk": "Приватний детектив", + "vi": "Văn phòng Thám tử Tư", + "zh-CN": "私家侦探事务所", + "zh-TW": "私家偵探辦公室" + } + }, + "office/quango": { + "title": { + "C": "Quasi-NGO Office", + "ar": "مكتب منظمة غير حكومية شبه مستقلة", + "ca": "Oficina de quasi-ONG", + "cs": "kancelář kvaziautonomní nevládní organizace", + "de": "Mittlerorganisation", + "en-GB": "Quasi-NGO Office", + "en": "Quasi-NGO Office", + "eo": "Oficejo de duon-registara organizaĵo", + "es": "Oficina ONG cuasiautónoma", + "fi": "Kansalaisjärjestön toimisto", + "fr": "Autorité administrative indépendante", + "gl": "Oficina ONG cuasiautónoma", + "he": "משרד ארגון חצי לא ממשלתי", + "hu": "Kvázicivil szervezet irodája", + "is": "Félagasamtök í samstarfi við hið opinbera (quango)", + "it": "Ufficio di una simil ONG", + "ja": "準非政府機関", + "ko": "준정부조직 사무소", + "mk": "Квази-НВО", + "ms": "Pejabat Separa NGO", + "nl": "Kantoor van quango", + "pl": "Biuro organizacji prawie pozarządowej", + "pt-BR": "Escritório de Organização Não Governamental Quase Autônoma", + "pt": "ONG subsidiada", + "ru": "Полу-независимая некоммерческая организация", + "sr": "Квази-непрофитна канцеларија", + "sv": "Kvasiautonom icke-statlig organisation", + "tr": "Yarı Özel Sivil Toplum Örgütü", + "uk": "Квазі-НГО", + "vi": "Tổ chức Bán độc lập Phi chính phủ", + "zh-CN": "准非政府组织", + "zh-TW": "準非政府組織辦公室" + } + }, + "office/religion": { + "title": { + "C": "Religious Office", + "am": "ሃይማኖት", + "ar": "مكتب ديني", + "ca": "Oficina religiosa", + "cs": "Náboženská kancelář", + "da": "Religiøst kontor", + "de": "Büro einer Glaubensgemeinschaft", + "el": "Θρησκευτική Υπηρεσία", + "en": "Religious Office", + "eo": "Kancelario religia", + "es": "Oficina religiosa", + "fa": "دفاتر مذهبی", + "fi": "Uskonnollinen toimisto", + "fr": "Bureau religieux", + "gl": "Oficina relixiosa", + "he": "משרד לנושאי דת", + "hu": "Egyházi iroda", + "it": "Ufficio religioso", + "ja": "教団事務所", + "ko": "종교 사무소", + "mk": "Верска служба", + "nl": "Religieus kantoor", + "no": "Religiøst Kontor", + "pl": "Biuro organizacji religijnej", + "pt-BR": "Escritório religioso", + "pt": "Escritório religioso", + "ru": "Офис религиозной организации", + "sr": "Верска канцеларија", + "sv": "Religiöst kontor", + "tr": "Dini Ofis", + "uk": "Релігійна організація", + "vi": "Văn phòng Tôn giáo", + "zh-CN": "宗教团体办公室", + "zh-TW": "宗教辦公處所" + } + }, + "office/research": { + "title": { + "C": "Research Office", + "am": "ምርምር ቢሮ", + "ar": "مكتب بحوث", + "ast": "Despachu d'investigación", + "bs": "Ured za istraživanje", + "ca": "Oficines d'R+D", + "cs": "Výzkumný ústav", + "da": "Forskning", + "de": "Forschungseinrichtung", + "el": "Γραφείο Ερευνών", + "en-GB": "Research Office", + "en": "Research Office", + "eo": "Oficejo de scienca esplorado", + "es": "Oficina de investigación", + "fa": "سازمان تحقیقاتی و پژوهشی", + "fi": "Tutkimustoimisto", + "fr": "Organisme de recherche", + "gl": "Oficina de investigación", + "he": "משרד מחקר", + "hr": "Ured za istraživanje", + "hu": "Kutatóintézet", + "id": "Kantor Riset", + "is": "Rannsóknarstofa", + "it": "Istituto di Ricerca", + "ja": "研究所", + "kn": "ಸಂಶೋಧನಾ ಕಛೇರಿ", + "ko": "연구 사무소", + "lt": "Tyrimų tarnyba", + "mk": "Истражувачка служба", + "ms": "Pejabat Penyelidikan", + "nl": "Onderzoekskantoor", + "no": "Forskningskontor", + "pl": "Biuro badawcze", + "pt-BR": "Escritório de Pesquisa", + "pt": "Centro de investigação", + "ro": "Birou de Cercetare", + "ru": "Научно-исследовательская организация", + "sk": "Výskum", + "sl": "Raziskave", + "sr": "Истраживачка канцеларија", + "sv": "Forskning och utveckling", + "ta": "ஆராய்ச்சி அலுவலகம்", + "tr": "Araştırma Kurumu", + "uk": "Дослідницька лабораторія", + "vi": "Văn phòng Nghiên cứu", + "yue": "研究所", + "zh-CN": "研究所", + "zh-HK": "研究所", + "zh-TW": "研究機構" + } + }, + "office/security": { + "title": { + "C": "Security Office", + "ar": "مكتب مؤسسات الحراسات الأمنية", + "ca": "Oficina de seguretat", + "cs": "kancelář hlídače", + "de": "Sicherheitsdienstleister", + "el": "Υπηρεσία Ασφαλείας", + "en": "Security Office", + "eo": "Oficejo de garda firmao", + "es": "Oficina de seguridad", + "fr": "Bureau de la Sécurité", + "hu": "Biztonsági iroda", + "it": "Ufficio della Vigilanza", + "ja": "警備会社", + "ko": "보안 사무소", + "mk": "Обезбедување", + "nl": "Kantoor van de beveiliging", + "pl": "Biuro ochrony", + "pt-BR": "Escritório de segurança", + "pt": "Gabinete de segurança privado", + "sv": "Bevakningskontor", + "tr": "Emniyet Amirliği", + "uk": "Охоронна фірма", + "vi": "Văn phòng Dịch vụ Bảo vệ", + "zh-CN": "安保办公室", + "zh-TW": "保全辦公室" + } + }, + "office/surveyor": { + "title": { + "C": "Surveyor Office", + "ar": "مكتب مساح أرضي", + "cs": "Zeměměřický úřad", + "de": "Vermessungstechniker", + "el": "Γραφείο Επιθεωρητών", + "en-GB": "Surveyor Office", + "en": "Surveyor Office", + "eo": "Oficejo de analiza firmao", + "es": "Oficina de agrimensor", + "fa": "دفتر نظرسنجی", + "fi": "Maanmittaustoimisto", + "fr": "Géomètre", + "gl": "Oficina de agrimensor", + "he": "משרד מודד", + "hu": "Földmérő", + "is": "Landmælingaskrifstofa", + "it": "Ufficio di supervisione", + "ja": "測量会社", + "ko": "측량기사 사무소", + "mk": "Земјомерна служба", + "ms": "Pejabat Juruukur", + "nl": "Kantoor van landmeter/expert/risicoschatter/schademeter/opiniepeilers/statisticus", + "no": "Landmålerkontor", + "pl": "Biuro geodety", + "pt-BR": "Escritório de Pesquisas ou Inspeções", + "pt": "Empresa de peritagem", + "ru": "Организация оценки и статистики", + "sr": "Геодетска канцеларија", + "sv": "Undersökning/inspektion", + "ta": "நில அளவாய்வாளர் அலுவலகம்", + "tr": "Harita Mühendisliği", + "uk": "Експет-оцінщик", + "vi": "Văn phòng Khảo sát", + "yue": "量地官寫字樓", + "zh-CN": "调查评估办公室", + "zh-TW": "測繪公司辦公室" + } + }, + "office/tax_advisor": { + "title": { + "C": "Tax Advisor Office", + "ar": "مستشار الضرائب", + "cs": "Kancelář daňového poradce", + "da": "Skatterådgivningskontor", + "de": "Steuerberatungskanzlei", + "el": "Γραφείο Φορολογικού Συμβούλου", + "en-GB": "Tax Advisor Office", + "en": "Tax Advisor Office", + "eo": "Oficejo de impost-konsilo", + "es": "Oficina de asesor fiscal", + "fa": "دفتر مشاور مالیاتی", + "fi": "Veroneuvonta", + "fr": "Conseiller fiscal", + "gl": "Oficina de xestor fiscal", + "he": "משרד יועץ מס", + "hu": "Adótanácsadó", + "is": "Skattaráðgjafarskrifstofa", + "it": "Centro assistenza fiscale", + "ja": "税理士事務所", + "ko": "세무사 사무소", + "mk": "Даночен советник", + "ms": "Pejabat Penasihat Cukai", + "nl": "Kantoor van belastingsadviseur", + "no": "Skatterådgiverkontor", + "pl": "Doradca podatkowy", + "pt-BR": "Escritório de Assessoria Fiscal", + "pt": "Escritório de contabilidade", + "ru": "Офис консультанта по налогам", + "sk": "Daňový poradca", + "sr": "Канцеларија пореског саветника", + "sv": "Skatterådgivning", + "tr": "Vergi Danışmanlığı", + "uk": "Податкова консультація", + "vi": "Dich vụ Khai thuế", + "zh-CN": "税务顾问机构", + "zh-TW": "稅務顧問辦公室" + } + }, + "office/telecommunication": { + "title": { + "C": "Telecom Office", + "am": "ቴሌኮሙኒኬሽን", + "ar": "مكتب شركات اتصالات", + "ast": "Oficina de telecomunicaciones", + "bn": "টেলিকম অফিস", + "bs": "Ured telekoma", + "ca": "Oficina de telecomunicacions", + "cs": "Telekomunikační společnost", + "da": "Teleselskabskontor", + "de": "Telekommunikationsunternehmen", + "el": "Υπηρεσία Τηλεπικοινωνιών", + "en-GB": "Telecom Office", + "en": "Telecom Office", + "eo": "Oficejo de telekomunikada firmao", + "es": "Oficina de telecomunicaciones", + "fa": "دفتر مخابراتی", + "fi": "Tietoliikennetoimisto", + "fr": "Agence de télécommunications", + "gl": "Oficina de telecomunicacións", + "he": "משרד חברת תקשורת", + "hr": "Ured za telekomunikacije", + "hu": "Távközlési cég irodája", + "id": "Kantor Telekomunikasi", + "is": "Samskiptaskrifstofa", + "it": "Ufficio di telecomunicazioni", + "ja": "通信会社事務所", + "ko": "통신 사무소", + "lt": "Telekomunikacijų biuras", + "lv": "Telekomunikāciju birojs", + "mk": "Телекомуникациска служба", + "ms": "Pejabat Telekom", + "nl": "Telecomkantoor", + "no": "Telekontor", + "pl": "Biuro firmy telekomunikacyjnej", + "pt-BR": "Escritório de Telecomunicações", + "pt": "Empresa de telecomunicações", + "ro": "Oficiu Telecom", + "ru": "Офис телекоммуникационной компании", + "sk": "Telekomunikácie", + "sl": "Telekomunikacijska pisarna", + "sr": "Телекомуникациона канцеларија", + "sv": "Telekom", + "ta": "தொலைத்தொடர்பு அலுவலகம்", + "tr": "Haberleşme Bürosu", + "uk": "Телекомунікаційна компанія", + "vi": "Văn phòng Viễn thông", + "yue": "電話公司寫字樓", + "zh-CN": "电信办公室", + "zh-HK": "電訊公司辦公室", + "zh-TW": "電信公司辦事處" + } + }, + "office/therapist": { + "title": { + "C": "Therapist Office", + "ar": "المعالج", + "ca": "Oficina de terapeuta", + "cs": "Terapeutická kancelář", + "da": "Terapikontor", + "de": "Therapeut", + "el": "Υπηρεσία Θεραπευτών", + "en-GB": "Therapist Office", + "en": "Therapist Office", + "eo": "Kabineto de terapiisto", + "es": "Oficina de terapeuta", + "fa": "دفتر روان‌درمان", + "fi": "Terapia", + "fr": "Thérapeute", + "gl": "Oficina de terapeuta", + "he": "משרד מטפל", + "is": "Meðferðarstofa", + "it": "Studio psichiatrico", + "ja": "セラピスト(オフィス)", + "ko": "치료사 사무소", + "lv": "Terapieta birojs", + "mk": "Терапевт", + "ms": "Pejabat Ahli Terapi", + "nl": "Kantoor van therapeut", + "no": "Terapeutkontor", + "pl": "Terapeuta", + "pt-BR": "Escritório de Terapeuta", + "pt": "Terapeuta", + "ru": "Офис терапевта", + "sk": "Terapeut", + "sr": "Терапеутска канцеларија", + "sv": "Terapeut", + "tr": "Terapist", + "uk": "Фізіотерапевт", + "vi": "Văn phòng Trị liệu", + "zh-CN": "治疗师工作室", + "zh-HK": "治療師辦公室", + "zh-TW": "治療師辦公室" + } + }, + "office/water_utility": { + "title": { + "C": "Water Utility Office", + "ar": "مكتب شركة مياه", + "cs": "vodohospodářská kancelář", + "da": "Vandforsyningskontor", + "de": "Wasserversorgungsunternehmen", + "el": "Υπηρεσία Εκμετάλλευσης Νερού", + "en-GB": "Water Utility Office", + "en": "Water Utility Office", + "eo": "Oficejo de akv-provizanta firmao", + "es": "Oficina de servicios públicos de agua", + "fi": "Vesilaitostoimisto", + "fr": "Agence de l'eau", + "gl": "Oficina de servizos públicos de auga", + "he": "משרד לשירות ציבורי - מים", + "hu": "Vízműiroda", + "is": "Skrifstofa vatnsveitu", + "it": "Ufficio azienda di fornitura dell'acqua", + "ja": "水道工事店", + "ko": "수도사업소", + "mk": "Водоводна служба", + "ms": "Pejabat Pembekal Air", + "nl": "Kantoor van watermaatschappij", + "pl": "Biuro wodociągowe", + "pt-BR": "Escritório de Companhia de Água", + "pt": "Fornecedor de água", + "ru": "Офис водопроводной компании", + "sv": "Vattenleverantör", + "tr": "Su Müdürlüğü", + "uk": "Водоканал", + "vi": "Văn phòng Nhà cung cấp Nước uống", + "zh-CN": "水务设施机构", + "zh-HK": "水上設施辦公室", + "zh-TW": "自來水公司" + } + }, + "place/farm": { + "title": { + "C": "Farm", + "ar": "مزرعة", + "ast": "Granxa", + "ca": "Granja", + "cs": "Zemědělská usedlost", + "da": "Gård", + "de": "Bauernhof", + "el": "Φάρμα", + "en-GB": "Farm", + "en": "Farm", + "eo": "Farmejo (setlejo)", + "es": "Granja", + "et": "farm", + "fa": "مزرعه", + "fi": "Maatila", + "fr": "Ferme isolée", + "gl": "Granxa", + "he": "חווה", + "hu": "Tanya", + "id": "Peternakan", + "is": "Býli", + "it": "Fattoria o cascina", + "ja": "農場", + "kn": "ತೋಟ", + "ko": "농장", + "lt": "Ūkis", + "lv": "Zemnieku saimniecība", + "mk": "Фарма", + "ms": "Ladang", + "nl": "Boerderij", + "no": "Gård", + "pl": "Farma / gospodarstwo rolne", + "pt-BR": "Fazenda", + "pt": "Quinta", + "ro": "Fermă", + "ru": "Ферма", + "sk": "Farma", + "sl": "Kmetija", + "sr": "Фарма", + "sv": "Gård", + "ta": "பண்ணை", + "tr": "Çiftlik", + "uk": "Ферма", + "vi": "Trại", + "yue": "農場", + "zh-CN": "农场", + "zh-HK": "農場", + "zh-TW": "農場" + } + }, + "place/city": { + "title": { + "C": "City", + "af": "Stad", + "am": "ከተማ", + "ar": "مدينة كبيرة", + "ast": "Ciudá", + "bg": "Град над 100 000", + "bn": "শহর", + "bs": "Grad", + "ca": "Ciutat", + "cs": "Velkoměsto", + "da": "Storby", + "de": "Großstadt", + "dv": "ސިިޓީ", + "el": "Πόλη", + "en-GB": "City", + "en": "City", + "eo": "Urbego", + "es": "Ciudad", + "et": "Linn", + "fa": "شهر", + "fi": "Suuri kaupunki", + "fr": "Grande ville (plus de 100 000 habitants)", + "gl": "Cidade", + "he": "עיר", + "hr": "Grad s više od 100 000 stanovnika", + "hu": "Nagyváros", + "id": "Kota", + "is": "Borg", + "it": "Città", + "ja": "市制地方自治体", + "kn": "ನಗರ", + "ko": "시", + "lt": "Miestas", + "lv": "Lielpilsēta", + "mk": "Град", + "ms": "Bandar", + "nl": "Stad", + "no": "By", + "pl": "Miasto", + "pt-BR": "Cidade Maior", + "pt": "Cidade", + "ro": "Oraș", + "ru": "Большой город", + "sk": "Veľkomesto", + "sl": "Velemesto", + "so": "Magaalo", + "sq": "Qytet", + "sr": "Град", + "sv": "Större stad", + "ta": "மாநகரம்", + "te": "నగరం", + "tr": "Şehir", + "uk": "Місто", + "vi": "Thành phố", + "yue": "城", + "zh-CN": "城市", + "zh-HK": "城市", + "zh-TW": "城市", + "zh": "城市" + } + }, + "place/city_block": { + "title": { + "C": "City Block", + "ar": "مربع سكني", + "cs": "Městský blok", + "de": "Häuserblock", + "el": "Οικοδομικό Τετράγωνο", + "en": "City Block", + "eo": "Dombloko", + "es": "Manzana urbana", + "fa": "بلوک شهری", + "fi": "Kortteli", + "fr": "Îlot urbain", + "gl": "Mazá urbana", + "he": "מבנן עירוני", + "hu": "Háztömb", + "is": "Byggingareitur", + "it": "Isolato urbano", + "ja": "街区(日本では未定義)", + "ko": "도시 블록", + "mk": "Градски блок", + "nl": "Huizenblok", + "no": "Bykvartal", + "pl": "Kwartał", + "pt-BR": "Quarteirão", + "pt": "Quarteirão", + "sr": "Градска четврт", + "sv": "Kvarter", + "tr": "Şehir Bloğu", + "uk": "Квартал в місті", + "vi": "Ô phố", + "zh-CN": "城市街区", + "zh-TW": "城市街區" + } + }, + "place/hamlet": { + "title": { + "C": "Hamlet", + "af": "Dorpie", + "am": "ከተማ", + "ar": "قرية صغيرة / هجرة", + "ast": "Aldea", + "bg": "Махала", + "bs": "Zaselak", + "ca": "Llogaret", + "cs": "Osada", + "da": "Mindre beboet område", + "de": "Weiler", + "el": "Οικισμός", + "en-GB": "Hamlet", + "en": "Hamlet", + "eo": "Vilaĝeto", + "es": "Aldea", + "fa": "دهکده", + "fi": "Pikkukylä", + "fr": "Lieu-dit ou hameau", + "gl": "Aldea", + "he": "כפריר", + "hr": "Zaseok", + "hu": "Falucska", + "id": "Dusun", + "is": "Þéttbýliskjarni", + "it": "Piccolo borgo", + "ja": "Hamlet", + "ko": "반", + "lt": "Viensėdis", + "mk": "Заселок", + "ms": "Dukuh", + "nl": "Dorp/gehucht/buurtschap", + "no": "Bosetning", + "pl": "Przysiółek", + "pt-BR": "Lugarejo", + "pt": "Aldeia", + "ro": "Cătun", + "ru": "Деревня", + "sk": "Osada", + "sl": "Zaselek", + "sr": "Засеок", + "sv": "By", + "tr": "Mezra", + "uk": "Хутір", + "vi": "Thôn", + "yue": "村仔", + "zh-CN": "小村庄", + "zh-HK": "小村莊", + "zh-TW": "村莊", + "zh": "村庄" + } + }, + "place/island": { + "title": { + "C": "Island", + "af": "Eiland", + "ar": "جزيرة", + "ast": "Islla", + "bg": "Остров", + "bn": "দ্বীপ", + "bs": "Ostrvo", + "ca": "Illa", + "cs": "Ostrov", + "da": "Ø", + "de": "Insel", + "dv": "ރަށް", + "el": "Νησί", + "en-GB": "Island", + "en": "Island", + "eo": "Insulo", + "es": "Isla", + "et": "Saar", + "fa": "جزیره", + "fi": "Saari", + "fr": "Île", + "gl": "Illa", + "he": "אי", + "hr": "Otok", + "hu": "Sziget", + "id": "Pulau", + "is": "Eyja", + "it": "Isola", + "ja": "島", + "kn": "ದ್ವೀಪ", + "ko": "섬", + "lt": "Sala", + "lv": "Sala", + "mk": "Остров", + "ms": "Pulau", + "nl": "Eiland", + "no": "Øy", + "pl": "Wyspa", + "pt-BR": "Ilha", + "pt": "Ilha", + "ro": "Insulă", + "ru": "Остров", + "sk": "Ostrov", + "sl": "Otok", + "so": "Jasiirad", + "sr": "Острво", + "sv": "Ö", + "ta": "தீவு", + "tr": "Ada", + "uk": "Острів", + "vi": "Đảo", + "yue": "洲", + "zh-CN": "岛屿", + "zh-HK": "島嶼", + "zh-TW": "島嶼", + "zh": "岛屿" + } + }, + "place/islet": { + "title": { + "C": "Islet", + "ar": "جزيرة صغيرة", + "ca": "Illot", + "cs": "Ostrůvek", + "da": "Holm", + "de": "Kleine Insel", + "el": "Νησίδα", + "en-GB": "Islet", + "en": "Islet", + "eo": "Insuleto", + "es": "Islote", + "et": "Laid", + "fa": "جزیره کوچک", + "fi": "Luoto", + "fr": "Îlot", + "gl": "Illote", + "he": "איון", + "hu": "Kis sziget", + "is": "Hólmi", + "it": "Isoletta", + "ja": "小島", + "ko": "작은 섬", + "mk": "Островче", + "ms": "Anak Pulau", + "nl": "Eilandje < 1 km²", + "no": "Liten øy", + "pl": "Wysepka na wodzie", + "pt-BR": "Ilhota", + "pt": "Ilhéu", + "ru": "Островок", + "sr": "Острвце", + "sv": "Holme", + "tr": "Adacık", + "uk": "Острівець", + "vi": "Đảo Nhỏ", + "yue": "洲仔", + "zh-CN": "小岛", + "zh-TW": "小島" + } + }, + "place/isolated_dwelling": { + "title": { + "C": "Isolated Dwelling", + "af": "Afgeleë blyplek", + "ar": "مساكن متفرقة ومنعزلة", + "ast": "Vivienda aisllada", + "bg": "Изолирано жилище", + "bs": "Izolirano stanovanje", + "ca": "Vivenda aïllada", + "cs": "Samota", + "da": "Lille beboet område (1-2 hustande)", + "de": "Einzelsiedlung", + "el": "Απομονωμένες Κατοικίες", + "en-GB": "Isolated Dwelling", + "en": "Isolated Dwelling", + "eo": "Solstaranta domo", + "es": "Vivienda aislada", + "fa": "مسکن ایزوله", + "fi": "Yksittäinen asunto", + "fr": "Lieu-dit habité (1 ou 2 habitations)", + "gl": "Vivenda illada", + "he": "מבנה מבודד", + "hr": "Usamljena kućanstva", + "hu": "Magányos lakóhely", + "is": "Einöngruð búseta", + "it": "Abitazioni isolate", + "ja": "孤立した(2世帯以下の)居住区", + "ko": "독립 주택", + "lt": "Izoliuota gyvenvietė", + "mk": "Оддалечено живеалиште", + "ms": "Tempat Tinggal Terpencil", + "nl": "Afgelegen woning(en)", + "pl": "Pojedyncze odosobnione zabudowania", + "pt-BR": "Moradia Isolada", + "pt": "Povoado menor e isolado", + "ru": "Хутор", + "sk": "Samota", + "sl": "Osamljeno bivališče", + "sr": "Изоловано пребивалиште", + "sv": "Isolerad boplats", + "tr": "Mesken", + "uk": "Маєток", + "vi": "Chỗ ở Hẻo lánh", + "yue": "孤離居所", + "zh-CN": "孤立居所", + "zh-HK": "孤立民居", + "zh-TW": "獨立聚落", + "zh": "孤立的民房" + } + }, + "place/locality": { + "title": { + "C": "Locality", + "af": "Ligging", + "ar": "موضع لمكان غير مأهول", + "ast": "Llugar despobláu", + "bg": "Местност", + "bn": "অঞ্চল", + "bs": "Lokalitet", + "ca": "Indret", + "cs": "Neobydlené místo", + "da": "Lokalitet", + "de": "Örtlichkeit", + "dv": "ރަށްްފުށު", + "el": "Τοποθεσία", + "en-GB": "Locality", + "en": "Locality", + "eo": "Loko neloĝata", + "es": "Paraje", + "fa": "محل خالی از سکنه", + "fi": "Paikkakunta", + "fr": "Lieu-dit non habité", + "gl": "Lugar", + "he": "אזור בלתי מיושב", + "hr": "Lokalitet", + "hu": "Lakatlan hely", + "id": "Daerah Sekitar", + "is": "Staðfesti", + "it": "Località non popolata", + "ja": "地形名", + "kn": "ಸ್ಥಳ", + "ko": "소재지명", + "lt": "Vietovė", + "mk": "Месност", + "ms": "Lokaliti", + "nl": "Veldnaam", + "pl": "Miejsce nazwane", + "pt-BR": "Localidade", + "pt": "Local ermo e desabitado", + "ro": "Localitate", + "ru": "Урочище, местность", + "sk": "Lokalita", + "sl": "Kraj (OSM: ODSVETOVANO)", + "so": "Deegaanka", + "sr": "Локалитет", + "sv": "Plats", + "tr": "Mevkii", + "uk": "Місцевість", + "vi": "Địa phương", + "yue": "地方", + "zh-CN": "地方", + "zh-HK": "地區", + "zh-TW": "地點(無人定居)", + "zh": "地点(无人定居)" + } + }, + "place/neighbourhood": { + "title": { + "C": "Neighborhood", + "ar": "حي سكني", + "ast": "Barriu", + "ca": "Barri", + "cs": "Část obce", + "da": "Nabolag", + "de": "Wohngegend", + "el": "Γειτονιά", + "en-GB": "Neighborhood", + "en": "Neighborhood", + "eo": "Najbaraĵo", + "es": "Barrio pequeño / Vecindario", + "fa": "محله", + "fi": "Naapurusto", + "fr": "Voisinage", + "gl": "Veciñanza ou subarrio", + "he": "שכונה", + "hr": "Susjedstvo", + "hu": "Környék", + "id": "Tetangga", + "is": "Hverfi", + "it": "Quartiere", + "ja": "小字", + "ko": "동", + "lt": "Kaiminystė", + "mk": "Маало", + "ms": "Kejiranan", + "nl": "Buurt", + "no": "Nabolag", + "pl": "Sąsiedztwo", + "pt-BR": "Vizinhança", + "pt": "Bairro", + "ro": "Cartier", + "ru": "Исторический район со сложившимся именем", + "sk": "Susedstvo", + "sl": "Soseska", + "sr": "Суседство", + "sv": "Kvarter", + "ta": "நகர்ப்பகுதி", + "tr": "Mahalle", + "uk": "Житловий масив", + "vi": "Hàng xóm", + "zh-CN": "街坊社区 / 小区", + "zh-HK": "近鄰", + "zh-TW": "鄰里" + } + }, + "place/plot": { + "title": { + "C": "Plot", + "ar": "قطعة الأرض", + "ca": "Parcel·la", + "cs": "Parcela", + "da": "Matrikel", + "de": "Grundstück", + "el": "Οικόπεδο", + "en-GB": "Plot", + "en": "Plot", + "eo": "Parcelo", + "es": "Parcela", + "et": "Krunt", + "fa": "طرح / قطعه زمین", + "fi": "Tontti", + "fr": "Parcelle", + "gl": "Parcela", + "he": "חלקה", + "hu": "Telek", + "is": "Skiki", + "it": "Particella catastale", + "ja": "小区画", + "ko": "필지", + "mk": "Парцела", + "ms": "Plot", + "nl": "Perceel", + "no": "Tomt", + "pl": "Działka", + "pt-BR": "Lote", + "pt": "Lote de terreno", + "ru": "Земельный участок", + "sr": "Парцела", + "sv": "Tomt", + "tr": "Arsa", + "uk": "Ділянка", + "vi": "Miếng đất", + "zh-TW": "地籍" + } + }, + "place/quarter": { + "title": { + "C": "Sub-Borough / Quarter", + "ar": "منطقة فرعية / ربع", + "cs": "Městská čtvrť", + "da": "Nabolag / Kvarter", + "de": "Gegend / Quartier", + "el": "Συνοικία", + "en-GB": "Sub-Borough / Quarter", + "en": "Sub-Borough / Quarter", + "eo": "Kvartalo", + "es": "Sub-borough / Quarter", + "fa": "توابع منطقه / محله", + "fi": "Alakeskus", + "fr": "Quartier", + "gl": "Sub-municipio / Distrito", + "he": "רובע", + "hu": "Kis városrész", + "is": "Úthverfishluti / Hverfi", + "it": "Sotto-distretto / Quartiere", + "ja": "大字 / (市内の)町", + "ko": "하위 자치구 / 지구", + "mk": "Маало / Четврт", + "nl": "Wijk", + "pl": "Kwartał", + "pt-BR": "Sub-bairro", + "pt": "Zona de cidade", + "ro": "Cartier", + "ru": "Подрайон / квартал", + "sl": "Mestna četrt", + "sv": "Kvarter / Under-Borough", + "tr": "Semt", + "uk": "Мікро-район/Квартал", + "vi": "Khu", + "zh-CN": "街道办/片区", + "zh-HK": "自治市分區 / 小區", + "zh-TW": "自治市區" + } + }, + "place/square": { + "title": { + "C": "Square", + "ar": "ساحة", + "ast": "Plaza", + "ca": "Plaça", + "cs": "Náměstí", + "da": "Plads", + "de": "Platz", + "el": "Πλατεία", + "en-GB": "Square", + "en": "Square", + "eo": "Placo", + "es": "Plaza cívica", + "fa": "فضای عمومی باز (احاطه شده با ساختمان)", + "fi": "Aukio", + "fr": "Place", + "gl": "Praza", + "he": "כיכר", + "hu": "Tér", + "is": "Torg", + "it": "Piazza", + "ja": "広場(都心部)", + "ko": "광장", + "lv": "Skvērs", + "mk": "Плоштад", + "nl": "Plein", + "no": "Torg", + "pl": "Plac publiczny", + "pt-BR": "Praça Pavimentada", + "pt": "Praça ou largo", + "ro": "Piață", + "ru": "Площадь", + "sk": "Námestie", + "sl": "Trg", + "sr": "Трг", + "sv": "Torg", + "ta": "சதுக்கம்", + "tr": "Meydan", + "uk": "Майдан", + "vi": "Quảng trường", + "yue": "前地", + "zh-CN": "广场", + "zh-HK": "廣場", + "zh-TW": "廣場" + } + }, + "place/suburb": { + "title": { + "C": "Borough / Suburb", + "am": "አካባቢ", + "ar": "ضاحية", + "cs": "Čtvrť / předměstí", + "da": "Bydistrikt / Bydel", + "de": "Stadtteil / Vorort", + "el": "Προάστιο", + "en-GB": "Borough / Suburb", + "en": "Borough / Suburb", + "eo": "Suburbo", + "es": "Borough / Suburbio", + "et": "Eeslinn", + "fa": "منطقه ، ناحیه", + "fi": "Kaupunginosa / lähiö", + "fr": "Banlieue", + "gl": "Barrio ou suburbio", + "he": "פרוור", + "hu": "Városrész", + "is": "Jaðarbyggð / Úthverfi", + "it": "Sobborgo", + "ja": "区", + "ko": "자치구 / 근교", + "mk": "Населба", + "nl": "Stadsdeel", + "pl": "Dzielnica", + "pt-BR": "Bairro", + "pt": "Subúrbio", + "ro": "Suburbie", + "ru": "Район / Пригород", + "sk": "Predmestie", + "sl": "Predmestje", + "sv": "Förort / Borough", + "tr": "Mahalle", + "uk": "Район в місті/Передмістя", + "vi": "Quận", + "zh-CN": "市内区域", + "zh-HK": "自治市 / 郊區", + "zh-TW": "郊區" + } + }, + "place/town": { + "title": { + "C": "Town", + "af": "Dorp", + "ar": "مدينة", + "ast": "Villa", + "bg": "Град под 100 000", + "bn": "উপনগর", + "bs": "Gradić", + "ca": "Ciutat", + "cs": "Město", + "da": "By", + "de": "Kleinstadt", + "dv": "އަވަށް", + "el": "Κωμόπολη", + "en-GB": "Town", + "en": "Town", + "eo": "Urbo", + "es": "Pueblo / Ciudad pequeña", + "et": "Linn", + "fa": "شهر", + "fi": "Pieni kaupunki / taajama", + "fr": "Ville (de 10 000 à 100 000 habitants)", + "gl": "Cidade pequena", + "he": "עירייה", + "hr": "Gradić", + "hu": "Kisváros", + "id": "Kota", + "is": "Bær", + "it": "Cittadina", + "ja": "町制地方自治体", + "kn": "ಪಟ್ಟಣ", + "ko": "읍·면·동·로동자구", + "lt": "Miestelis", + "lv": "Pilsēta", + "mk": "Гратче", + "ms": "Bandar", + "nl": "Plaats", + "no": "Tettsted", + "pl": "Miasto", + "pt-BR": "Cidade Menor", + "pt": "Vila", + "ro": "Oraș", + "ru": "Город", + "sk": "Mesto", + "sl": "Mesto", + "so": "Magaalo", + "sr": "Варош", + "sv": "Mellanstor stad", + "ta": "நகரம்", + "te": "పట్టణం", + "tr": "Kasaba", + "uk": "Місто (невелике)", + "vi": "Thị xã", + "yue": "鎮", + "zh-CN": "城镇", + "zh-HK": "鎮", + "zh-TW": "鄉鎮市區", + "zh": "城镇" + } + }, + "place/village": { + "title": { + "C": "Village", + "af": "Dorpie", + "ar": "قرية", + "ast": "Pueblu", + "bg": "Село", + "bn": "গ্রাম", + "bs": "Selo", + "ca": "Poble", + "cs": "Vesnice", + "da": "Landsby", + "de": "Dorf", + "el": "Χωριό", + "en-GB": "Village", + "en": "Village", + "eo": "Vilaĝo", + "es": "Población / Aldea", + "et": "Küla", + "fa": "روستا", + "fi": "Kylä", + "fr": "Village (de 100 à 10 000 habitants)", + "gl": "Vila", + "he": "כפר", + "hr": "Selo", + "hu": "Falu", + "id": "Desa", + "is": "Þorp", + "it": "Paese", + "ja": "村制の地方自治体", + "kn": "ಹಳ್ಳಿ", + "ko": "리·통", + "lt": "Kaimas", + "lv": "Ciems", + "mk": "Село", + "ms": "Kampung", + "nl": "Dorp", + "no": "Tettsted", + "pl": "Wieś", + "pt-BR": "Povoado", + "pt": "Sede de Freguesia", + "ro": "Sat", + "ru": "Село (более 300 жителей)", + "sk": "Dedina", + "sl": "Vas", + "sr": "Село", + "sv": "Mindre samhälle", + "ta": "கிராமம்", + "te": "గ్రామం", + "tr": "Köy", + "uk": "Село", + "vi": "Làng", + "yue": "村", + "zh-CN": "村庄", + "zh-HK": "鄉村", + "zh-TW": "村里", + "zh": "村庄" + } + }, + "shop/boutique": { + "title": { + "C": "Boutique", + "af": "Boetiek", + "ar": "بوتيك", + "ast": "Boutique", + "bg": "Бутик", + "bn": "বুটিক", + "bs": "Butik", + "ca": "Boutique", + "cs": "Módní butik", + "da": "Boutique", + "de": "Boutique", + "el": "Μπουτίκ", + "en-GB": "Boutique", + "en": "Boutique", + "eo": "Mod-butiko (altprezaj vestaĵoj)", + "es": "Boutique", + "et": "Butiik", + "fa": "بوتیک", + "fi": "Muotiliike", + "fr": "Petit magasin de mode", + "gl": "Boutique", + "he": "בוטיק", + "hr": "Butik", + "hu": "Butik", + "id": "Butik", + "is": "Búð", + "it": "Boutique", + "ja": "ブティック", + "ko": "부티크", + "lt": "Parduotuvė", + "lv": "Veikals", + "mk": "Бутик", + "nl": "Boetiek", + "no": "Klesbutikk", + "pl": "Butik", + "pt-BR": "Loja de Alta Costura", + "pt": "Boutique", + "ro": "Boutique", + "ru": "Бутик", + "sk": "Butik", + "sl": "Butik", + "sr": "Бутик", + "sv": "Boutique (Dyra kläder och accessoarer)", + "tr": "Butik Mağaza", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "yue": "時裝店", + "zh-CN": "精品店", + "zh-HK": "時裝店", + "zh-TW": "服飾店", + "zh": "精品店" + } + }, + "shop/fashion": { + "title": { + "C": "Fashion Store", + "ar": "متجر موضة", + "ast": "Tienda de moda", + "ca": "Botiga de roba", + "cs": "Módní zboží", + "da": "Modebutik", + "de": "Modegeschäft", + "el": "Κατάστημα Μόδας", + "en-GB": "Fashion Shop", + "en": "Fashion Store", + "eo": "Mod-butiko", + "es": "Tienda de moda", + "et": "Moekauplus", + "fa": "فروشگاه مد", + "fi": "Muotiliike", + "fr": "Boutique de mode", + "gl": "Tenda de moda", + "he": "חנות אופנה", + "hr": "Modni dućan", + "hu": "Divatüzlet", + "id": "Toko Mode", + "is": "Tískuverslun", + "it": "Negozio di moda", + "ja": "ファッション店", + "ko": "패션 가게", + "lt": "Mados parduotuvė", + "lv": "Modes veikals", + "mk": "Модна продавница", + "nl": "Modewinkel", + "no": "Motebutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Moda", + "pt": "Loja de moda", + "ro": "Magazin de Modă", + "ru": "Магазин модной брендовой одежды", + "sk": "Obchod s módnymi doplnkami", + "sl": "Trgovina z modnimi oblačili", + "sr": "Бутик", + "sv": "Modebutik", + "tr": "Giyim Mağazası", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "zh-CN": "服装店", + "zh-HK": "時裝店", + "zh-TW": "時尚店" + } + }, + "shop/vacant": { + "title": { + "C": "Vacant Shop", + "af": "Leë winkel", + "ar": "محل شاغر", + "ast": "Tienda balera", + "bg": "Свободна търговска площ", + "bs": "Prodavnica za iznajmljivanje", + "ca": "Botiga per ocupar", + "cs": "Neobsazený obchod", + "da": "Ledig butik (ingen salg pt)", + "de": "Leerstehendes Geschäft", + "el": "Ξενοίκιαστο Κατάστημα", + "en-GB": "Vacant Shop", + "en": "Vacant Shop", + "eo": "Forlasita vendejo", + "es": "Local disponible", + "et": "Vaba kaubanduspind", + "fa": "فروشگاه خالی", + "fi": "Tyhjä liikehuoneisto", + "fr": "Commerce désaffecté", + "gl": "Local baleiro", + "he": "חנות ריקה", + "hr": "Prazan dućanski prostor", + "hu": "Kiadó üzlethelyiség", + "id": "Toko Kosong", + "is": "Tóm verslun", + "it": "Negozio vuoto", + "ja": "空き店舗, シャッター店舗", + "ko": "빈 가게", + "lt": "Tuščia parduotuvė", + "mk": "Празна продавница", + "nl": "Leegstaande winkel", + "pl": "Pusty lokal sklepowy", + "pt-BR": "Loja Desocupada", + "pt": "Loja desocupada", + "ro": "Magazin Vacant", + "ru": "Помещение под открытие магазина", + "sk": "Prázdny obchod", + "sl": "Nedelujoča trgovina", + "sr": "Упражњена продавница", + "sv": "Tom lokal", + "te": "ఖాళీ దుకాణం", + "tr": "Boş Dükkan", + "uk": "Здається в оренду", + "vi": "Tiệm Trống", + "yue": "吉舖", + "zh-CN": "空置铺位", + "zh-HK": "空置商舖", + "zh-TW": "閒置商店", + "zh": "空置铺位" + } + }, + "shop/agrarian": { + "title": { + "C": "Farm Supply Shop", + "ar": "متجر المنتجات والمستلزمات الزراعية", + "ca": "Agrobotiga", + "cs": "Farmářská prodejna", + "da": "Grovvareforretning", + "de": "Agrarmarkt", + "el": "Προμήθειες Φάρμας", + "en": "Farm Supply Shop", + "eo": "Terkultur-investaĵa vendejo", + "es": "Tienda de suministros agrícolas", + "et": "Põllumajandustarvete kauplus", + "fa": "فروشگاه لوازم کشاورزی", + "fi": "Maataloustarvikeliike", + "fr": "Magasin d'agriculture", + "gl": "Tenda de subministracións agrícolas", + "he": "חנות אביזרי חקלאות", + "hu": "Gazdabolt", + "is": "Landbúnaðarvöruverslun", + "it": "Negozio di attrezzatura agricola", + "ja": "農業用品店", + "ko": "농업 용품 가게", + "mk": "Земјоделска продавица", + "nl": "Landbouwbenodigdhedenwinkel", + "pl": "Sklep rolniczy", + "pt-BR": "Loja de Suprimentos Agrícolas", + "pt": "Loja de produtos agrícolas", + "ru": "Сельскохозяйственный магазин", + "sr": "Продавница пољопривредне опреме", + "sv": "Jordbruksaffär", + "tr": "Çiftlik Malzemeleri Dükkanı", + "uk": "Сільгосптовари", + "vi": "Tiệm Nông nghiệp", + "zh-CN": "农场供应店", + "zh-TW": "農業資材行" + } + }, + "shop/alcohol": { + "title": { + "C": "Liquor Store", + "af": "Drankwinkel", + "ar": "متجر خمور", + "ast": "Llicorería", + "bg": "Магазин за алкохол", + "bs": "Prodavnica alkoholnih pića", + "ca": "Botiga de licors", + "cs": "Prodejna alkoholu", + "da": "Vinforhandler", + "de": "Spirituosenladen", + "el": "Κάβα Ποτών", + "en-GB": "Off licence (Alcohol shop)", + "en": "Liquor Store", + "eo": "Alkohola vendejo", + "es": "Licorería", + "et": "Alkoholipood", + "fa": "مغازه مشروبات الکلی", + "fi": "Alkoholimyymälä", + "fr": "Magasin de vente d'alcool", + "gl": "Licoraría", + "he": "חנות משקאות חריפים", + "hr": "Prodavaonica alkoholnih pića", + "hu": "Alkoholüzlet", + "id": "Toko Minuman", + "is": "Vínbúð", + "it": "Negozio di liquori", + "ja": "酒店", + "kn": "ಸಾರಾಯಿ ಅಂಗಡಿ", + "ko": "주류상", + "lt": "Alkoholinių gėrimų parduotuvė", + "lv": "Alkoholisko dzērienu veikals", + "mk": "Продавница за алкохолни пијалаци", + "nl": "Slijterij", + "no": "Vinutsalg", + "pl": "Sklep monopolowy", + "pt-BR": "Loja de alcoólicos licenciada", + "pt": "Loja de bebidas alcoólicas", + "ro": "Magazin de Băuturi Alcoolice", + "ru": "Алкогольный магазин", + "sk": "Obchod s alkoholom", + "sl": "Trgovina z alkoholnimi pijačami", + "sr": "Продавница алкохолних пића", + "sv": "Vin-och-spritaffär", + "ta": "மதுபானக் கடை", + "tr": "İçki Dükkanı", + "uk": "Алкогольні напої", + "vi": "Tiệm Rượu", + "yue": "酒莊", + "zh-CN": "酒水店", + "zh-HK": "酒類專賣店", + "zh-TW": "酒類專賣店", + "zh": "酒品店" + } + }, + "shop/anime": { + "title": { + "C": "Anime / Manga Shop", + "ar": "متجر أنيمي / مانغا", + "cs": "obchod s Anime / Manga", + "de": "Anime- / Manga-Geschäft", + "el": "Κατάστημα Anime / Manga", + "en": "Anime / Manga Shop", + "eo": "Anime-/manga-vendejo", + "es": "Tienda de anime / manga", + "fa": "فروشگاه انیمه / مانگا (کمیک ژاپنی)", + "fi": "Anime-/mangaliike", + "fr": "Boutique de manga et anime", + "gl": "Tenda de anime / manga", + "he": "חנות אנימה/מנגה", + "hu": "Anime képregényekkel kapcsolatos bolt", + "it": "Negozio di Anime / Manga", + "ja": "アニメショップ", + "ko": "애니메이션/만화 가게", + "mk": "Продавница за аниме/манга", + "nl": "Anime-/Mangawinkel", + "pl": "Sklep z mangą i anime", + "pt-BR": "Loja de Anime / Manga", + "pt": "Loja de animé", + "ru": "Магазин аниме / манги", + "sr": "Продавница манга и аниме", + "sv": "Anime/Manga-affär", + "tr": "Anime / Manga Dükkanı", + "uk": "Аніме/манга магазин", + "vi": "Tiệm Anime/Manga", + "zh-CN": "动漫/漫画店", + "zh-TW": "動畫/漫畫店" + } + }, + "shop/antiques": { + "title": { + "C": "Antiques Shop", + "ar": "متجر تحف وأنتيكات", + "ast": "Anticuariu", + "ca": "Botiga d'antiguitats", + "cs": "Starožitnictví", + "da": "Antikvitetsforretning", + "de": "Antiquitätenhändler", + "el": "Παλαιοπωλείο", + "en-GB": "Antiques Shop", + "en": "Antiques Shop", + "eo": "Antikvaĵa vendejo", + "es": "Tienda de antigüedades", + "et": "Antikvariaat", + "fa": "فروشگاه عتیقه‌جات", + "fi": "Antiikkiliike", + "fr": "Antiquaire", + "gl": "Tenda de antigüidades", + "he": "חנות עתיקות", + "hr": "Antikvarijat", + "hu": "Régiségkereskedés", + "id": "Toko Barang Antik", + "is": "Antíkverslun", + "it": "Antiquario", + "ja": "古美術品店", + "ko": "골동품 가게", + "lt": "Atikvarų parduotuvė", + "lv": "Antikvariāts", + "mk": "Старинарница", + "nl": "Antiquair", + "no": "Antikvariat / antikvitetshandel", + "pl": "Antykwariat", + "pt-BR": "Loja de Antiguidades", + "pt": "Loja de antiguidades", + "ro": "Anticariat", + "ru": "Магазин антиквариата", + "sk": "Obchod so tarožitnosťami", + "sl": "Starinarnica", + "sr": "Антикварница", + "sv": "Antikaffär", + "ta": "பழம்பொருள் அங்காடி", + "tr": "Antika Dükkanı", + "uk": "Антикварний магазин", + "vi": "Tiệm Đồ Cổ", + "zh-CN": "古董店", + "zh-HK": "古董店", + "zh-TW": "古董店" + } + }, + "shop/appliance": { + "title": { + "C": "Appliance Store", + "ar": "متجر الأجهزة المنزلية", + "cs": "Prodejna spotřební elektroniky", + "da": "Hvidevareforretning", + "de": "Haushaltselektrogerätegeschäft", + "el": "Κατάστημα Συσκευών", + "en-GB": "Appliance Shop", + "en": "Appliance Store", + "eo": "Elektronikaĵega vendejo", + "es": "Tienda de electrodomésticos", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kodinkonemyymälä", + "fr": "Magasin d'électroménager", + "gl": "Tenda de electrodomésticos", + "he": "חנות כלים חשמלים", + "hu": "Háztartásigép-bolt", + "is": "Raftækjaverslun", + "it": "Negozio di elettrodomestici", + "ja": "白物家電販売店(大型製品)", + "ko": "가전 제품 가게", + "mk": "Продавница за апарати и уреди", + "nl": "Huishoudelijkeapparatuurwinkel", + "no": "Hvitevarebutikk", + "pl": "Sklep z AGD", + "pt-BR": "Loja de Eletrodomésticos", + "pt": "Loja de eletrodomésticos \"brancos\"", + "ro": "Magazin de Electrocasnice", + "ru": "Магазин бытовой техники", + "sl": "Splošna tehnična trgovina", + "sv": "Vitvaror", + "tr": "Beyaz Eşya Mağazası", + "uk": "Побутова техніка", + "vi": "Tiệm Gia dụng", + "zh-CN": "家用电器店", + "zh-HK": "電器店", + "zh-TW": "家用電器店" + } + }, + "shop/art": { + "title": { + "C": "Art Store", + "ar": "متجر الفنون", + "ast": "Galería d'arte", + "ca": "Botiga d'art", + "cs": "Obchod s uměním", + "da": "Kunstbutik", + "de": "Kunsthandlung", + "el": "Κατάστημα Τέχνης", + "en-GB": "Art Shop", + "en": "Art Store", + "eo": "Artaĵa vendejo", + "es": "Tienda de arte", + "et": "Kunstitarvete kauplus", + "fa": "فروشگاه آثار هنری", + "fi": "Taideliike", + "fr": "Marchand d'art", + "gl": "Tenda de arte", + "he": "חנות לחפצי אומנות", + "hr": "Trgovina umjetninama", + "hu": "Műalkotásbolt", + "is": "Listmunaverslun", + "it": "Negozio di opere d'arte", + "ja": "美術品販売店", + "ko": "미술품 가게", + "lt": "Meno parduotuvė", + "lv": "Mākslas veikals", + "mk": "Продавница за уметнички дела", + "nl": "Kunstwinkel", + "no": "Kunsthandel", + "pl": "Sklep z dziełami sztuki", + "pt-BR": "Loja de Arte", + "pt": "Loja de artigos de arte", + "ro": "Magazin de Artă", + "ru": "Магазин произведений искусства", + "sk": "Umelecký obchod", + "sl": "Trgovina z umetninami", + "sr": "Продавница уметнина", + "sv": "Konstaffär", + "ta": "கலை அங்காடி", + "tr": "Sanat Mağazası", + "uk": "Художній салон", + "vi": "Tiệm Nghệ phẩm", + "zh-CN": "艺术品店", + "zh-HK": "藝術商店", + "zh-TW": "藝術商店" + } + }, + "shop/baby_goods": { + "title": { + "C": "Baby Goods Store", + "ar": "متجر مستلزمات الأطفال", + "ca": "Botiga per a nadons", + "cs": "Potřeby pro děti", + "da": "Babyudstyrsbutik", + "de": "Babysachengeschäft", + "el": "Κατάστημα Βρεφικών Ειδών", + "en-GB": "Baby Goods Shop", + "en": "Baby Goods Store", + "eo": "Bebaĵa vendejo", + "es": "Tienda de productos para bebé", + "et": "Beebipood", + "fa": "فروشگاه کالای کودک", + "fi": "Vauvatarvikeliike", + "fr": "Magasin de produits pour bébés", + "gl": "Tenda de produtos para meniños", + "he": "חנות לדברי תינוקות", + "hr": "Trgovina za bebe", + "hu": "Bababolt", + "id": "Toko Perlengkapan Bayi", + "is": "Barnavöruverslun", + "it": "Negozio di prodotti per l'infanzia", + "ja": "赤ちゃん用品店", + "ko": "유아 용품 가게", + "lt": "Vaikų prekių parduotuvė", + "mk": "Продавница за бебешка опрема", + "nl": "Babyartikelenwinkel", + "no": "Babyutstyrsbutikk", + "pl": "Sklep z artykułami dla dzieci i niemowląt", + "pt-BR": "Loja de artigos para bebês", + "pt": "Loja de acessórios para bebés", + "ro": "Magazin de Produse pentru Bebeluși", + "ru": "Магазин детских товаров", + "sk": "Obchod s detskými potrebami", + "sl": "Trgovina za otroke", + "sr": "Продавница беби-опреме", + "sv": "Babyprodukter", + "tr": "Bebek Malzemeleri Mağazası", + "uk": "Товари для немовлят", + "vi": "Tiệm Đồ Sơ sinh", + "zh-CN": "婴儿用品店", + "zh-HK": "嬰兒用品店", + "zh-TW": "嬰兒用品店" + } + }, + "shop/bag": { + "title": { + "C": "Bag/Luggage Store", + "ar": "متجر حقائب وأمتعة", + "ca": "Botiga d'equipatges", + "cs": "Obchod se zavazadly", + "da": "Taske/Kuffertbutik", + "de": "Taschenladen", + "el": "Κατάστημα αποσκευών", + "en-GB": "Bag/Luggage Shop", + "en": "Bag/Luggage Store", + "eo": "Saka/valiza vendejo", + "es": "Tienda de bolsos / equipaje", + "et": "Kotipood", + "fa": "فروشگاه کیف/چمدان", + "fi": "Matkalaukkumyymälä", + "fr": "Bagagerie", + "gl": "Tenda de maletas", + "he": "חנות מזוודות", + "hr": "Trgovina sa torbama", + "hu": "Táska- és bőröndbolt", + "id": "Toko Tas/Koper", + "is": "Töskubúð", + "it": "Negozio di borse e valigie", + "ja": "バッグ/カバン店", + "ko": "가방/여행가방 가게", + "lt": "Kuprinių/lagaminų parduotuvė", + "lv": "Somu / Čemodānu veikals", + "mk": "Продавница за чанти, торби и куфери", + "nl": "Zak-/Reiskofferwinkel", + "no": "Veskebutikk", + "pl": "Sklep z torebkami/walizkami", + "pt-BR": "Loja de Bolsas/Malas", + "pt": "Loja de malas / bagagem", + "ro": "Magazin de Bagaje", + "ru": "Магазин сумок и саквояжа", + "sk": "Obchod s kuframi", + "sl": "Trgovina za prtljago", + "sv": "Väskaffär", + "tr": "Çanta/Valiz Mağazası", + "uk": "Магазин з продажу валіз", + "vi": "Tiệm Túi", + "zh-CN": "箱包店", + "zh-HK": "袋/行李箱店", + "zh-TW": "包包/行李店" + } + }, + "shop/bakery": { + "title": { + "C": "Bakery", + "af": "Bakkery", + "ar": "مخبز", + "ast": "Panadería", + "bg": "Пекарна", + "bn": "বেকারি", + "bs": "Pekara", + "ca": "Fleca", + "cs": "Pekařství", + "da": "Bager", + "de": "Bäckerei", + "el": "Αρτοποιείο", + "en-GB": "Bakery", + "en": "Bakery", + "eo": "Panejo", + "es": "Panadería", + "et": "Pagariäri", + "fa": "نانوایی", + "fi": "Leipomo", + "fr": "Boulangerie", + "gl": "Panadaría", + "he": "מאפייה", + "hr": "Pekara", + "hu": "Pékség", + "id": "Toko Roti", + "is": "Bakarí", + "it": "Panificio", + "ja": "パン屋", + "kn": "ಅಟ್ಟಂಗಡಿ", + "ko": "제과점", + "lt": "Kepykla", + "lv": "Konditoreja", + "mk": "Пекарница", + "nl": "Bakkerij", + "no": "Bakeri", + "pl": "Piekarnia", + "pt-BR": "Padaria", + "pt": "Padaria", + "ro": "Brutărie", + "ru": "Булочная", + "sk": "Pekáreň", + "sl": "Pekarna", + "sq": "Furrë buke", + "sr": "Пекара", + "sv": "Bageri", + "ta": "அடுமனை", + "tr": "Fırın", + "uk": "Булочна", + "vi": "Tiệm Bánh", + "yue": "麪飽舖同餅家", + "zh-CN": "烘焙店", + "zh-HK": "麵包西餅店", + "zh-TW": "麵包店", + "zh": "面包店" + } + }, + "shop/bathroom_furnishing": { + "title": { + "C": "Bathroom Furnishing Store", + "ar": "متجر أثاث واكسسوارات الحمامات", + "ca": "Botiga de mobles de bany", + "cs": "Vybavení koupelen", + "da": "Badeværelseindretningsbutik", + "de": "Badeinrichtungsgeschäft", + "el": "Κατάστημα εξοπλισμού μπάνιου", + "en-GB": "Bathroom Furnishing Shop", + "en": "Bathroom Furnishing Store", + "eo": "Lavĉambr-akcesoraĵa vendejo", + "es": "Tienda de muebles de baño", + "et": "Santehnika kauplus", + "fa": "فروشگاه لوازم حمام", + "fi": "Kylpyhuoneliike", + "fr": "Fournitures pour salles de bain", + "gl": "Tenda de mobles de baño", + "he": "חנות רהיטי שירותים/מקלחת", + "hr": "Prodavaonica kupaonske opreme", + "hu": "Fürdőszobafelszerelés-bolt", + "id": "Toko Perlengkapan Kamar Mandi", + "is": "Baðinnréttingaverslun", + "it": "Negozio di prodotti per il bagno", + "ja": "浴室用品店", + "ko": "화장실 기구 가게", + "lt": "Vonios baldų parduotuvė", + "mk": "Продавница за санитарии", + "nl": "Badkamermeubelwinkel", + "no": "Baderomsbutikk", + "pl": "Sklep z wyposażeniem łazienek", + "pt-BR": "Loja de Mobiliário de Banheiros", + "pt": "Loja de assessórios para casas de banho", + "ro": "Magazin de Mobilier pentru Băi", + "ru": "Магазин продающий мебель для ванных комнат", + "sk": "Obchod s kúpelňami", + "sl": "Trgovina s kopalniško opremo", + "sv": "Badrumsinredning", + "tr": "Züccaciye", + "uk": "Магазин сантехніки", + "vi": "Tiệm Bán đồ Phòng tắm", + "zh-CN": "浴室家具店", + "zh-HK": "浴室配件店", + "zh-TW": "衛浴用品店" + } + }, + "shop/beauty": { + "title": { + "C": "Beauty Shop", + "af": "Skoonheidswinkel", + "am": "ውበት / ስፓ", + "ar": "محل تجميل", + "ast": "Cosmética", + "bg": "Козметик", + "bs": "Salon ljepote", + "ca": "Botiga de cosmètics", + "cs": "Kosmetický salón", + "da": "Skønhedsforhandler", + "de": "Schönheitssalon", + "el": "Κατάστημα Ομορφιάς", + "en-GB": "Beauty Shop", + "en": "Beauty Shop", + "eo": "Salono de beligado", + "es": "Salón de belleza", + "et": "Ilusalong", + "fa": "سالن زیبایی", + "fi": "Kauneushoitola", + "fr": "Salon de beauté", + "gl": "Salón de beleza", + "he": "חנות מוצרי יופי/טיפוח", + "hr": "Kozmetički salon", + "hu": "Szépségszalon", + "id": "Salon Kecantikan", + "is": "Fegrunarstofa", + "it": "Salone di bellezza", + "ja": "美容サービス", + "ko": "뷰티 샵", + "lt": "Grožio salonas", + "lv": "Skaistumveikals", + "mk": "Салон за убавина", + "nl": "Schoonheidssalon", + "no": "Skjønnhetsbutikk", + "pl": "Salon urody", + "pt-BR": "Salão de Beleza", + "pt": "Centro de estética", + "ro": "Magazin Beauty", + "ru": "Салон красоты", + "sk": "Bižutéria", + "sl": "Lepotilni salon", + "sr": "Салон лепоте", + "sv": "Skönhetssalong", + "ta": "அழகுசாதனக் கடை", + "tr": "Güzellik Salonu", + "uk": "Cалон краси", + "vi": "Tiệm Mỹ phẩm", + "yue": "美容院", + "zh-CN": "美容店", + "zh-HK": "美容院", + "zh-TW": "美容店", + "zh": "美容店" + } + }, + "shop/bed": { + "title": { + "C": "Bedding/Mattress Store", + "ar": "متجر مراتب ولوازم الفراش", + "ca": "Botiga de matalassos", + "cs": "Prodejna postelí", + "da": "Sengetøj / Madras forhandler", + "de": "Betten/Matratzengeschäft", + "el": "Κατάστημα κρεβατιών/στρωμάτων", + "en-GB": "Bed Shop", + "en": "Bedding/Mattress Store", + "eo": "Lita/matraca vendejo", + "es": "Tienda de ropa de cama / Colchonería", + "et": "Magamistoa kauba pood", + "fa": "فروشگاه کالای خواب/ تشک", + "fi": "Vuodetarvikeliike", + "fr": "Magasin de literie", + "gl": "Tenda de colchóns/roupa de cama", + "he": "חנות מזרנים", + "hr": "Trgovina opreme za krevete", + "hu": "Ágy- és matracbolt", + "id": "Toko Selimut/Matras", + "is": "Rúm/Dýnuverslun", + "it": "Negozio di letti/materassi", + "ja": "寝具店", + "ko": "침구/매트리스 가게", + "lv": "Gultasveļas / Matraču veikals", + "mk": "Продавница за кревети и постелнина", + "nl": "Bed-/Matrassenwinkel", + "no": "Sengebutikk", + "pl": "Sklep z łóżkami/materacami", + "pt-BR": "Loja de Camas e Colchões", + "pt": "Loja de camas / colchões", + "ro": "Magazin de Saltele", + "ru": "Магазин матрасов и постельных принадлежностей", + "sk": "Obchod s posteľami/matracmi", + "sl": "Trgovina s posteljnino in žimnicami", + "sr": "Продавница душека", + "sv": "Sängaffär", + "tr": "Yatak Mağazası", + "uk": "Магазин постільних приналежностей", + "vi": "Tiệm Nệm", + "zh-CN": "床上用品店", + "zh-HK": "寢具/床褥店", + "zh-TW": "床具/寐具店" + } + }, + "shop/beverages": { + "title": { + "C": "Beverage Store", + "af": "Koeldrankwinkel", + "am": "የለስላሳ መጠጦች ማከፋፈያ", + "ar": "محل بيع مشروبات ومرطبات", + "ast": "Venta de bebíes", + "bg": "Магазин за алкохол и цигари", + "bs": "Prodavnica pića", + "ca": "Botiga de begudes", + "cs": "Prodejna nápojů", + "da": "Vinforhandler", + "de": "Getränkehandel", + "el": "Αναψυκτήριο", + "en-GB": "Beverages Shop", + "en": "Beverage Store", + "eo": "Trinkaĵa vendejo", + "es": "Tienda de bebidas", + "et": "Joogikauplus", + "fa": "فروشگاه آشامیدنی", + "fi": "Viinakauppa", + "fr": "Magasin de boissons", + "gl": "Tenda de bebidas", + "he": "חנות משקאות", + "hr": "Trgovina s pićima", + "hu": "Italbolt", + "id": "Toko Minuman", + "is": "Drykkjarbúð", + "it": "Negozio di bevande", + "ja": "飲料店", + "ko": "음료 가게", + "lt": "Gėrimų parduotuvė", + "lv": "Dzērienu veikals", + "mk": "Продавница за пијалаци", + "nl": "Drankenwinkel", + "no": "Øl- og vinutsalg", + "pl": "Sklep z napojami", + "pt-BR": "Loja de Bebidas", + "pt": "Loja de bebidas", + "ro": "Magazin de Băuturi", + "ru": "Магазин по продаже алкогольных и безалкогольных напитков", + "sk": "Obchod s nápojmi", + "sl": "Trgovina s pijačami", + "sr": "Продавница пића", + "sv": "Dryckaffär", + "tr": "İçecek Dükkanı", + "uk": "Напої", + "vi": "Tiệm Đồ uống", + "yue": "飲品舖", + "zh-CN": "饮料店", + "zh-HK": "飲品店", + "zh-TW": "飲品店", + "zh": "饮品店" + } + }, + "shop/bicycle": { + "title": { + "C": "Bicycle Shop", + "af": "Fietswinkel", + "ar": "متجر دراجات هوائية", + "ast": "Tienda de ciclismu", + "bg": "Магазин за велосипеди", + "bn": "সাইকেলের দোকান", + "bs": "Prodavnica bicikala", + "ca": "Botiga de bicicletes", + "cs": "Cykloprodejna", + "da": "Cykelbutik", + "de": "Fahrradladen", + "el": "Κατάστημα Ποδηλάτων", + "en-GB": "Bicycle Shop", + "en": "Bicycle Shop", + "eo": "Bicikla vendejo", + "es": "Tienda de bicicletas", + "et": "Rattapood", + "fa": "فروشگاه دوچرخه", + "fi": "Pyöräliike", + "fr": "Magasin de vélos", + "gl": "Tenda de bicicletas", + "he": "חנות אופניים", + "hr": "prodavaonica bicikala", + "hu": "Kerékpárbolt", + "id": "Toko Sepeda", + "is": "Hjólabúð", + "it": "Negozio di biciclette", + "ja": "自転車店", + "ko": "자전거 가게", + "lt": "Dviračių parduotuvė", + "lv": "Velo veikals", + "mk": "Продавница за велосипеди", + "ms": "Kedai Basikal", + "nl": "Fietswinkel", + "no": "Sykkelbutikk", + "pl": "Sklep rowerowy", + "pt-BR": "Loja de Bicicletas", + "pt": "Loja de bicicletas", + "ro": "Magazin de Biciclete", + "ru": "Веломагазин", + "sk": "Cykloobchod", + "sl": "Kolesarska trgovina", + "sr": "Продавница бицикала", + "sv": "Cykelaffär", + "ta": "மிதிவண்டிக் கடை", + "tr": "Bisiklet Mağazası", + "uk": "Веломагазин", + "vi": "Tiệm Xe đạp", + "yue": "單車舖", + "zh-CN": "自行车店", + "zh-HK": "單車店", + "zh-TW": "單車店", + "zh": "自行车店" + } + }, + "shop/boat": { + "title": { + "C": "Boat Store", + "ar": "متجر بيع قوارب ومستلزماتها", + "cs": "prodejna lodí", + "da": "Bådforhandler", + "de": "Bootsgeschäft", + "el": "Κατάστημα Σκαφών", + "en": "Boat Store", + "eo": "Boat‑vendejo", + "es": "Tienda de barcos", + "fa": "فروشگاه قایق", + "fi": "Venekauppa", + "fr": "Magasin de bateaux", + "gl": "Tenda de embarcacións", + "he": "חנות סירות", + "hu": "Hajóüzlet", + "it": "Negozio di barche", + "ja": "ボート店", + "ko": "보트 가게", + "mk": "Продавница за чамци", + "nl": "Bootwinkel", + "pl": "Sklep żeglarski", + "pt-BR": "Loja de Barcos", + "pt": "Loja de barcos", + "ru": "Магазин лодок", + "sk": "Obchod predávajúci lode", + "sr": "Продавница чамаца", + "sv": "Båtaffär", + "tr": "Tekne Mağazası", + "uk": "Магазин човнів", + "vi": "Tiệm Tàu thuyền", + "zh-CN": "船店", + "zh-TW": "船店" + } + }, + "shop/bookmaker": { + "title": { + "C": "Bookmaker", + "ar": "مكتب رهانات", + "ast": "Encuadernador", + "ca": "Cusidor de llibres", + "cs": "Sázková kancelář", + "da": "Bookmaker", + "de": "Wettbüro", + "el": "Πρακτορείο στοιχημάτων", + "en-GB": "Bookmaker", + "en": "Bookmaker", + "eo": "Vetperistejo", + "es": "Corredor de apuestas", + "et": "Trükkal", + "fa": "دلال شرط‌بندی", + "fi": "Kirjapaino", + "fr": "Bookmaker", + "gl": "Corredor de apostas", + "he": "כורך ספרים", + "hr": "Kladioničar", + "hu": "Fogadóiroda", + "id": "Juru Taruh", + "is": "Veðmangari", + "it": "Agenzia di scommesse", + "ja": "公営競技投票券売り場", + "ko": "마권업자", + "lt": "Knygrišys", + "mk": "Обложувалница", + "nl": "Bookmaker (gokkantoor)", + "no": "Bookmaker", + "pl": "Zakład bukmacherski", + "pt-BR": "Casa de Apostas", + "pt": "Casa de apostas", + "ro": "Atelier de Cărți", + "ru": "Букмекерская контора", + "sk": "Stávková kancelária", + "sl": "Stavnica", + "sr": "Кладионичар", + "sv": "Vadslagning", + "tr": "Bahis Merkezi", + "uk": "Букмекер", + "vi": "Phòng Đánh cá Ngựa", + "zh-CN": "书商", + "zh-HK": "投注站", + "zh-TW": "投注處" + } + }, + "shop/books": { + "title": { + "C": "Book Store", + "am": "መፃሕፍት መሸጫ", + "ar": "مكتبة - متجر كتب", + "ast": "Llibrería", + "ca": "Llibreria", + "cs": "Knihkupectví", + "da": "Boghandler", + "de": "Buchladen", + "el": "Βιβλιοπωλείο", + "en-GB": "Book Shop", + "en": "Book Store", + "eo": "Libra vendejo", + "es": "Librería (venta de libros)", + "et": "Raamatupood", + "fa": "کتاب‌فروشی", + "fi": "Kirjakauppa", + "fr": "Librairie", + "gl": "Libraría", + "he": "חנות ספרים", + "hi": "किताबों की दुकान", + "hr": "Knjižara", + "hu": "Könyvesbolt", + "id": "Toko Buku", + "is": "Bókabúð", + "it": "Libreria", + "ja": "本屋", + "ko": "서점", + "lt": "Knygynas", + "lv": "Grāmatu veikals", + "mk": "Книжарница", + "nl": "Boekwinkel", + "no": "Bokhandel", + "pl": "Księgarnia", + "pt-BR": "Livraria", + "pt": "Livraria", + "ro": "Magazin de Cărți", + "ru": "Книжный магазин", + "sk": "Kníhkupectvo", + "sl": "Knjigarna", + "sr": "Продавница књига", + "sv": "Bokhandel", + "ta": "புத்தகக் கடை", + "tr": "Kitapçı", + "uk": "Книжковий магазин", + "vi": "Hiệu Sách", + "zh-CN": "书店", + "zh-HK": "書店", + "zh-TW": "書店" + } + }, + "shop/brewing_supplies": { + "title": { + "C": "Brewing Supply Store", + "cs": "pivovarnický obchod", + "da": "Bryggeudstyrsbutik", + "de": "Brauzubehörgeschäft", + "el": "Κατάστημα Εξοπλισμού Ζυθοποιίας", + "en": "Brewing Supply Store", + "eo": "Bier-/vin-farendaĵa vendejo", + "es": "Tienda de suministros de cerveza", + "fa": "فروشگاه فرآورده‌های آبجو", + "fr": "Magasin de matériel de brasserie", + "gl": "Tenda de cervexaría artesanal", + "he": "חנות ציוד למבשלות", + "hu": "Borászati, sör- és párlafőzési felszereléseket árusító üzlet", + "it": "Negozio di forniture per la produzione di birra", + "ja": "醸造用品店", + "ko": "양조 용품 가게", + "mk": "Пивоварска продавница", + "nl": "Winkel voor brouwbenodigdheden", + "pl": "Sklep dla piwowarów domowych", + "pt-BR": "Loja de suprimentos para cerveja", + "pt": "Loja de material de fermentação", + "sv": "Affär för hembryggningstillbehör", + "tr": "Bira Malzemeleri Mağazası", + "uk": "Пивоварне та виноробне обладнання", + "zh-CN": "酿酒用品店", + "zh-TW": "釀酒用品店" + } + }, + "shop/butcher": { + "title": { + "C": "Butcher", + "af": "Slagter", + "am": "ሥጋ ቤት", + "ar": "جزار", + "ast": "Carnicería", + "bg": "Колбаси", + "bn": "কসাই", + "bs": "Mesar", + "ca": "Carnisseria", + "cs": "Řeznictví", + "da": "Slagter", + "de": "Metzgerei", + "el": "Κρεοπωλείο", + "en-GB": "Butcher", + "en": "Butcher", + "eo": "Vianda vendejo", + "es": "Carnicería", + "et": "Lihapood", + "fa": "قصابی", + "fi": "Lihakauppa", + "fr": "Boucher", + "gl": "Carnizaría", + "he": "קצב", + "hr": "Mesnica", + "hu": "Hentes", + "id": "Penjagalan", + "is": "Slátrari", + "it": "Macellaio", + "ja": "精肉店", + "ko": "정육점", + "lt": "Mėsinė", + "lv": "Miesnieks", + "mk": "Месарница", + "nl": "Slagerij", + "no": "Slakter", + "pl": "Sklep mięsny", + "pt-BR": "Açougue", + "pt": "Talho", + "ro": "Măcelărie", + "ru": "Мясной", + "sk": "Mäsiarstvo", + "sl": "Mesar", + "sr": "Месар", + "sv": "Slaktare", + "ta": "இறைச்சிக் கடை", + "tr": "Kasap", + "uk": "М’ясна лавка", + "vi": "Hàng Thịt", + "yue": "肉舖", + "zh-CN": "肉店", + "zh-HK": "肉舖", + "zh-TW": "肉販", + "zh": "肉贩" + } + }, + "shop/camera": { + "title": { + "C": "Camera Equipment Store", + "cs": "prodejna kamer", + "da": "Fotoforhandler", + "de": "Fotofachgeschäft", + "el": "Κατάστημα Εξοπλισμού Καμερών", + "en": "Camera Equipment Store", + "eo": "Vendejo kun fotiloj kaj lensoj", + "es": "Tienda de equipos de fotografía", + "fa": "فروشگاه لوازم عکاسی", + "fi": "Kameraliike", + "fr": "Boutique de matériel photographique", + "gl": "Tenda de fotografía", + "he": "חנות ציוד צילום", + "hu": "Fényképezőgép-üzlet", + "it": "Negozio di materiale fotografico", + "ja": "カメラ店", + "ko": "카메라 가게", + "mk": "Продавница за фотографска опрема", + "nl": "Winkel voor camerabenodigdheden", + "pl": "Sklep z kamerami i aparatami", + "pt-BR": "Loja de equipamentos para câmeras", + "pt": "Loja de equipamento fotográfico", + "sv": "Affär för kameratillbehör", + "tr": "Kamera Ekipman Mağazası", + "uk": "Фотообладнання", + "vi": "Tiệm Máy ảnh", + "zh-CN": "相机店", + "zh-TW": "相機配件店" + } + }, + "shop/candles": { + "title": { + "C": "Candle Shop", + "ar": "متجر الشموع", + "ca": "Botiga d'espelmes", + "cs": "Obchod se svíčkami", + "da": "Stearinlysforhandler", + "de": "Kerzengeschäft", + "el": "Κατάστημα Κεριών", + "en-GB": "Candle Shop", + "en": "Candle Shop", + "eo": "Kandela vendejo", + "es": "Tienda de velas", + "et": "Küünlapood", + "fa": "شمع فروشی", + "fi": "Kynttiläkauppa", + "fr": "Magasin de bougies", + "gl": "Tenda de velas", + "he": "חנות נרות", + "hr": "Prodavaonica svijeća", + "hu": "Gyertyabolt", + "id": "Toko Lilin", + "is": "Kertabúð", + "it": "Negozio di candele", + "ja": "キャンドル専門店", + "ko": "양초 가게", + "lt": "Žvakių parduotuvė", + "lv": "Sveču veikals", + "mk": "Свеќарница", + "nl": "Kaarsenwinkel", + "no": "Lysstøperi", + "pl": "Sklep ze świecami", + "pt-BR": "Loja de Velas", + "pt": "Loja de velas", + "ro": "Magazin de Lumânări", + "ru": "Свечной магазин", + "sk": "Obchod so svičkami", + "sl": "Svečarstvo", + "sr": "Свећарница", + "sv": "Ljusaffär", + "tr": "Mum Mağazası", + "uk": "Магазин свічок", + "vi": "Tiệm Cây nến", + "zh-CN": "蜡烛店", + "zh-HK": "蠟燭店", + "zh-TW": "燈具店" + } + }, + "shop/cannabis": { + "title": { + "C": "Cannabis Shop", + "cs": "Feťácká prodejna", + "de": "Cannabisgeschäft", + "el": "Κατάστημα Κάναβις", + "en": "Cannabis Shop", + "eo": "Mariĥuana vendejo", + "es": "Tienda de cannabis", + "fa": "فروشگاه شاهدانه / ورمی کمپوست", + "fi": "Kannabiskauppa", + "fr": "Magasin de canabis", + "gl": "Tenda de cannabis", + "he": "חנות קנביס", + "hu": "Marihuánabolt", + "it": "Negozio di cannabis", + "ja": "Cannabis Shop(illegal in Japan)", + "ko": "대마초 가게", + "mk": "Продавница за коноп", + "nl": "Cannabiswinkel", + "pl": "Sklep z produktami z konopi", + "pt-BR": "Loja de canábis", + "pt": "Loja de canábis", + "sr": "Продавница канабиса", + "sv": "Cannabisaffär", + "tr": "Esrar Dükkanı", + "uk": "Конопля", + "vi": "Tiệm Cần sa", + "zh-CN": "大麻店", + "zh-TW": "娛樂用大麻店" + } + }, + "shop/car": { + "title": { + "C": "Car Dealership", + "af": "Voertuighandelaar", + "am": "መኪና መሸጫ", + "ar": "وكالة/معرض سيارات", + "ast": "Venta d'automóviles", + "bg": "Автомобили", + "bn": "গাড়ির ডিলারশিপ", + "bs": "Salon automobila", + "ca": "Concessionari de cotxes", + "cs": "Prodejna aut", + "da": "Bilforhandler", + "de": "Autohändler", + "el": "Εμπορία Αυτοκινήτων", + "en-GB": "Car Dealership", + "en": "Car Dealership", + "eo": "Aŭtomobila vendejo", + "es": "Concesionario de automóviles", + "et": "Autopood", + "fa": "نمایندگی خودرو", + "fi": "Autokauppa", + "fr": "Concessionnaire automobile", + "gl": "Concesionario de automóbiles", + "he": "סוכנות רכב", + "hr": "Prodavaonica automobila", + "hu": "Autókereskedés", + "id": "Dealer Mobil", + "is": "Bílabúð", + "it": "Concessionario", + "ja": "カーディーラー", + "ko": "자동차 대리점", + "lt": "Automobilių prekybos atstovybė", + "lv": "Auto dīleris", + "mk": "Автосалон", + "nl": "Autoshowroom", + "no": "Bilforhandler", + "pl": "Sprzedaż samochodów", + "pt-BR": "Revenda de Automóveis", + "pt": "Loja de automóveis", + "ro": "Magazin de Mașini", + "ru": "Автодилер", + "sk": "Predajňa áut", + "sl": "Avtomobilski salon", + "sr": "Салон аутомобила", + "sv": "Bilhandlare", + "ta": "வாகன விற்பனையகம்", + "tr": "Oto Galeri", + "uk": "Автосалон", + "vi": "Tiệm Xe hơi", + "yue": "車行", + "zh-CN": "汽车店", + "zh-HK": "車行", + "zh-TW": "汽車行", + "zh": "车行" + } + }, + "shop/car_parts": { + "title": { + "C": "Car Parts Store", + "af": "Onderdelewinkel", + "ar": "محل قطع غيار السيارة", + "ast": "Repuestos d'automóviles", + "bg": "Авточасти", + "bn": "গাড়ির যন্ত্রাংশের দোকান", + "bs": "Prodavnica auto dijelova", + "ca": "Botiga de recanvis de cotxe", + "cs": "Náhradní díly pro auta", + "da": "Bilreservedelsforhandler", + "de": "Autoteilehandel", + "el": "Ανταλλακτικά Αυτοκινήτων", + "en-GB": "Car Parts Shop", + "en": "Car Parts Store", + "eo": "Aŭtomobil-parta vendejo", + "es": "Tienda de componentes de automóvil", + "et": "Autoosade pood", + "fa": "فروشگاه قطعات خودرو", + "fi": "Varaosamyymälä", + "fr": "Magasin de pièces automobiles", + "gl": "Tenda de recambios de automóbiles", + "he": "חנות חלקי מכוניות", + "hr": "Trgovina rezevnih dijelova za automobile", + "hu": "Autóalkatrész-üzlet", + "id": "Toko Peralatan Mobil", + "is": "Bílavarahlutaverslun", + "it": "Negozio di autoricambi", + "ja": "カー用品店", + "ko": "자동차 부품 가게", + "lt": "Auto dalių parduotuvė", + "lv": "Auto rezerves daļu veikals", + "mk": "Продавница за автоделови", + "nl": "Auto-onderdelenwinkel", + "no": "Bildelforhandler", + "pl": "Sklep z częściami do samochodów", + "pt-BR": "Loja de Peças Automotivas", + "pt": "Loja de peças para automóveis", + "ru": "Автозапчасти", + "sk": "Predajňa autodielov", + "sl": "Avtomobilski deli", + "sr": "Продавница ауто делова", + "sv": "Biltillbehör", + "tr": "Yedek Parça Dükkanı", + "uk": "Автозапчастини", + "vi": "Tiệm Phụ tùng Xe hơi", + "yue": "汽車零件舖", + "zh-CN": "汽车零部件商店", + "zh-HK": "汽車零件店", + "zh-TW": "汽車零件店", + "zh": "汽车配件店" + } + }, + "shop/car_repair": { + "title": { + "C": "Car Repair Shop", + "af": "Werkswinkel", + "ar": "ورشة إصلاح سيارات", + "ast": "Taller d'automóviles", + "bg": "Сервиз автомобили", + "bn": "গাড়ি মেরামতের দোকান", + "bs": "Auto servis", + "ca": "Taller d'automòbils", + "cs": "Autoopravna", + "da": "Bilværksted", + "de": "Autowerkstatt", + "dv": "ކާާރު ހަދައިދޭ ގަރާޖް", + "el": "Συνεργείο Αυτοκινήτων", + "en-GB": "Car Repair Shop", + "en": "Car Repair Shop", + "eo": "Aŭtomobil-riparejo", + "es": "Taller de reparación de automóviles", + "et": "Autoremont", + "fa": "تعمیرگاه خودرو", + "fi": "Autokorjaamo", + "fr": "Garage de réparation automobile", + "gl": "Taller de arranxo de automóbiles", + "he": "מוסך", + "hr": "Automehaničar", + "hu": "Autószerelő", + "id": "Bengkel Mobil", + "is": "Bílaverkstæði", + "it": "Autofficina", + "ja": "自動車修理工場", + "ko": "자동차 수리점", + "lt": "Auto taisykla", + "lv": "Auto remontdarbnīca", + "mk": "Автосервис", + "nl": "Autogarage (herstel)", + "no": "Bilverksted", + "pl": "Warsztat samochodowy", + "pt-BR": "Oficina Mecânica", + "pt": "Oficina de automóveis", + "ro": "Vulcanizare", + "ru": "Автомастерская", + "sk": "Autoservis", + "sl": "Avtoservis", + "so": "Garaash", + "sr": "Ауто-сервис", + "sv": "Bilverkstad", + "tr": "Tamirci", + "uk": "Автомайстерня", + "vi": "Tiệm Sửa Xe", + "yue": "車房", + "zh-CN": "汽车修理店", + "zh-HK": "車房", + "zh-TW": "汽車維修店", + "zh": "汽车修理店" + } + }, + "shop/caravan": { + "title": { + "C": "RV Dealership", + "ar": "متجر بيع كرفانات ومنازل متنقلة", + "cs": "prodejna karavanů", + "de": "Wohnwagengeschäft", + "en": "RV Dealership", + "eo": "Vendejo de kampad-veturiloj", + "es": "Concesionario de autocaravanas", + "et": "Haagissuvilate/autoelamute müügiplats", + "fi": "Asuntovaunukauppa", + "fr": "Concessionnaire de véhicules de tourisme", + "gl": "Concesionario de autocaravanas", + "he": "סוכנות קרוואנים", + "hu": "Lakókocsi kereskedés", + "it": "Concessionario caravan", + "ja": "キャラバンカー販売店", + "ko": "RV 대리점", + "mk": "Продавач на камп-возила", + "nl": "Caravan-dealer", + "pl": "Sklep z kamperami i przyczepami", + "pt-BR": "Concessionária de Motorhomes", + "pt": "Vendedor de caravanas", + "ru": "Продажа домов на колёсах", + "sv": "Husvagnsförsäljare", + "tr": "Karavan Galerisi", + "uk": "Салон автотрейлерів", + "vi": "Tiệm Nhà xe Lưu động", + "zh-CN": "房车售卖", + "zh-TW": "拖車經銷商" + } + }, + "shop/carpet": { + "title": { + "C": "Carpet Store", + "ar": "متجر سجاد ومفروشات", + "ast": "Alfombres", + "ca": "Botiga de catifes", + "cs": "Prodejna koberců", + "da": "Tæppeforhandler", + "de": "Teppichgeschäft", + "el": "Κατάστημα χαλιών", + "en-GB": "Carpet Shop", + "en": "Carpet Store", + "eo": "Tapiŝa vendejo", + "es": "Tienda de alfombras", + "et": "Vaibapood", + "fa": "فرش فروشی", + "fi": "Mattokauppa", + "fr": "Magasin de tapis", + "gl": "Tenda de alfombras", + "he": "חנות שטיחים", + "hr": "Prodavaonica tepiha", + "hu": "Szőnyegbolt", + "id": "Toko Karpet", + "is": "Gólfteppaverslun", + "it": "Negozio di tappeti", + "ja": "カーペット専門店", + "ko": "카펫 가게", + "lt": "Kilimų parduotuvė", + "lv": "Paklāju veikals", + "mk": "Продавница за теписи", + "nl": "Tapijtwinkel", + "no": "Teppehandler", + "pl": "Sklep z dywanami", + "pt-BR": "Tapeçaria", + "pt": "Loja de tapetes", + "ro": "Magazin de Covoare", + "ru": "Магазин ковров", + "sk": "Obchod s kobercami", + "sl": "Trgovina s preprogrami", + "sr": "Продавница тепиха", + "sv": "Mattaffär", + "tr": "Halı Mağazası", + "uk": "Магазин килимів", + "vi": "Tiệm Thảm", + "zh-CN": "地毯店", + "zh-HK": "地毯店", + "zh-TW": "地毯店" + } + }, + "shop/catalogue": { + "title": { + "C": "Catalog Shop", + "cs": "katalogový obchod", + "de": "Versandhandel", + "en-GB": "Catalogue Shop", + "en": "Catalog Shop", + "eo": "Ricevejo de aĉetaĵoj (per katalogo)", + "es": "Tienda de catálogo", + "fa": "فروشگاه کاتالوگ", + "fr": "Magasin à catalogue", + "gl": "Tenda de catálogo", + "he": "חנות קטלוגים", + "it": "Produzione di Cataloghi", + "ja": "カタログショップ", + "ko": "카탈로그 가게", + "mk": "Каталошка продавница", + "nl": "Cataloguswinkel", + "pl": "Catalog Shop", + "pt-BR": "Catálogo de loja", + "pt": "Loja de catálogo", + "sv": "Katalogaffär", + "tr": "Katalog Mağazası", + "uk": "Товари поштою", + "zh-TW": "目錄店" + } + }, + "shop/charity": { + "title": { + "C": "Charity Store", + "ar": "متجر خيري", + "ca": "Botiga de Caritat", + "cs": "Charitativní obchod", + "da": "Velgørenhedsbutik", + "de": "Sozialkaufhaus", + "el": "Κατάστημα Φιλανθρωπίας", + "en-GB": "Charity Shop", + "en": "Charity Store", + "eo": "Almoza vendejo", + "es": "Tienda de caridad", + "et": "Heategevuslik kauplus", + "fa": "فروشگاه خیریه", + "fi": "Hyväntekeväisyyskauppa", + "fr": "Magasin d'organisme caritatif", + "gl": "Tenda solidaria", + "he": "חנות צדקה", + "hu": "Adománybolt", + "is": "Góðgerðaverslun", + "it": "Mercatino dell'usato", + "ja": "チャリティーショップ", + "ko": "자선 쇼핑몰", + "mk": "Добротворна продавница", + "nl": "Winkel van goed doel", + "pl": "Sklep charytatywny", + "pt-BR": "Loja de Caridade", + "pt": "Loja solidária", + "ro": "Magazin de Caritate", + "ru": "Благотворительный магазин", + "sv": "Second hand-butik", + "tr": "Yardım Mağazası", + "uk": "Доброчинна крамниця", + "vi": "Tiệm Từ thiện", + "zh-CN": "慈善机构店", + "zh-HK": "慈善商店", + "zh-TW": "慈善商店" + } + }, + "shop/cheese": { + "title": { + "C": "Cheese Store", + "ar": "متجر أجبان", + "ast": "Quesería", + "ca": "Botiga de formatge", + "cs": "Prodejna sýrů", + "da": "Ostehandler", + "de": "Käseladen", + "el": "Τυροπωλείο", + "en-AU": "Cheese Shop", + "en-GB": "Cheese Shop", + "en": "Cheese Store", + "eo": "Fromaĝa vendejo", + "es": "Tienda de quesos", + "et": "Juustupood", + "fa": "پنیر فروشی", + "fi": "Juustopuoti", + "fr": "Fromager", + "gl": "Queixaría", + "he": "חנות גבינות", + "hr": "Prodavaonica sira", + "hu": "Sajtbolt", + "id": "Toko Keju", + "is": "Ostabúð", + "it": "Negozio di formaggi", + "ja": "チーズ店", + "ko": "치즈 가게", + "lt": "Sūrių parduotuvė", + "lv": "Siera veikals", + "mk": "Сирењарница", + "nl": "Kaaswinkel", + "no": "Ostebutikk", + "pl": "Sklep z serami", + "pt-BR": "Loja de Queijos", + "pt": "Loja de queijos", + "ro": "Magazin de Brânzeturi", + "ru": "Магазин сыров", + "sk": "Obchod so syrmi", + "sl": "Trgovina s siri", + "sr": "Продавница сирева", + "sv": "Ostaffär", + "tr": "Peynirci", + "uk": "Магазин сиру", + "vi": "Tiệm Pho mát", + "zh-CN": "奶酪店", + "zh-HK": "芝士店", + "zh-TW": "起士店" + } + }, + "shop/chemist": { + "title": { + "C": "Drugstore", + "ar": "متجر أدوات النظافة الشخصية والتجميل", + "ast": "Droguería", + "bg": "Дрогерия", + "ca": "Farmàcia", + "cs": "Drogerie", + "da": "Materialist", + "de": "Drogerie", + "el": "Φαρμακείο", + "en-AU": "Pharmacy", + "en-GB": "Chemist", + "en": "Drugstore", + "eo": "Kosmetikaĵa (ankaŭ purigaĵoj) vendejo", + "es": "Tienda de artículos de limpieza y cosméticos", + "et": "Kodukeemia kauplus", + "fa": "لوازم آرایشی بهداشتی", + "fi": "Apteekki-luontaistuotemyymälä", + "fr": "Parapharmacie", + "gl": "Drogaría", + "he": "בית מרקחת", + "hr": "Drogerija", + "hu": "Drogéria", + "is": "Hreinlætisvöruverslun", + "it": "Drogheria", + "ja": "ドラッグストア・化粧品・薬品店(薬剤師がいない店)", + "ko": "드러그스토어", + "lt": "Vaistinė", + "lv": "Aptieka", + "mk": "Аптека", + "nl": "Drogisterij", + "no": "Apotek", + "pl": "Drogeria", + "pt-BR": "Loja de Cosméticos e Higiene", + "pt": "Drogaria", + "ro": "Drogărie", + "ru": "Бытовая химия", + "sk": "Drogéria", + "sl": "Lekarna", + "sv": "Kemiaffär (hygien, kosmetika & städ)", + "ta": "மருந்தகம்", + "tr": "İlaç Dükkanı", + "uk": "Аптека", + "vi": "Tiệm Dược phẩm", + "zh-CN": "药妆店", + "zh-HK": "藥店", + "zh-TW": "藥妝店" + } + }, + "shop/chocolate": { + "title": { + "C": "Chocolate Store", + "ar": "متجر شوكولاتة", + "ast": "Chocolatería", + "ca": "Botiga de xocolata", + "cs": "Prodejna čokolády", + "da": "Chokoladeforretning", + "de": "Schokoladenladen", + "el": "Κατάστημα Ειδών Σοκολάτας", + "en-AU": "Chocolate Shop", + "en-GB": "Chocolate Shop", + "en": "Chocolate Store", + "eo": "Ĉokolada vendejo", + "es": "Chocolatería", + "et": "Šokolaadikauplus", + "fa": "فروشگاه شکلات", + "fi": "Suklaapuoti", + "fr": "Chocolatier", + "gl": "Chocolataría", + "he": "חנות שוקולד", + "hr": "Prodavaonica čokolade", + "hu": "Csokoládébolt", + "id": "Toko Cokelat", + "is": "Súkkulaðibúð", + "it": "Cioccolateria", + "ja": "チョコレート店", + "ko": "초콜릿 가게", + "lt": "Šokolado parduotuvė", + "lv": "Šokolādes veikals", + "mk": "Продавница за чоколади", + "ms": "Kedai Coklat", + "nl": "Chocoladewinkel", + "no": "Sjokoladebutikk", + "pl": "Sklep z czekoladą", + "pt-BR": "Loja de Chocolates", + "pt": "Loja de chocolates", + "ro": "Magazin de Ciocolată", + "ru": "Магазин шоколада", + "sk": "Obchod s čokoládou", + "sl": "Trgovina s čokolado", + "sr": "Продавница чоколаде", + "sv": "Chokladaffär", + "tr": "Çikolata Dükkanı", + "uk": "Магазин шоколаду", + "vi": "Tiệm Sô-cô-la", + "zh-CN": "巧克力店", + "zh-HK": "朱古力店", + "zh-TW": "巧克力店" + } + }, + "shop/clothes": { + "title": { + "C": "Clothing Store", + "af": "Klere Winkel", + "ar": "محل ملابس", + "ast": "Tienda de ropa", + "bg": "Магазин за дрехи", + "bn": "জামাকাপড়ের দোকান", + "bs": "Prodavnica odjeće", + "ca": "Botiga de roba", + "cs": "Oblečení", + "da": "Tøjbutik", + "de": "Bekleidungsgeschäft", + "el": "Κατάστημα Ένδυσης", + "en-GB": "Clothing Shop", + "en": "Clothing Store", + "eo": "Vesta vendejo", + "es": "Tienda de ropa", + "et": "Riidepood", + "fa": "فروشگاه لباس", + "fi": "Vaatekauppa", + "fr": "Magasin de vêtements", + "gl": "Tenda de roupa", + "he": "חנות בגדים", + "hr": "Prodavaonica odjeće", + "hu": "Ruházati bolt", + "id": "Toko Baju", + "is": "Fataverslun", + "it": "Negozio di abbigliamento", + "ja": "衣料品店", + "ko": "옷 가게", + "lt": "Drabužių parduotuvė", + "lv": "Apģērba veikals", + "mk": "Продавница за облека", + "ms": "Kedai Pakaian", + "nl": "Kledingzaak", + "no": "Klesbutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Roupas", + "pt": "Loja de roupa", + "ro": "Magazin de Haine", + "ru": "Магазин одежды", + "sk": "Obchod s odevami", + "sl": "Trgovina z oblekami", + "sq": "Dyqan Veshjesh", + "sr": "Продавница одеће", + "sv": "Klädaffär", + "ta": "ஜவுளிக் கடை", + "tr": "Giyim Mağazası", + "uk": "Одяг", + "vi": "Tiệm Quần áo", + "yue": "衫舖", + "zh-CN": "服装店", + "zh-HK": "服飾店", + "zh-TW": "服飾店", + "zh": "服装店" + } + }, + "shop/coffee": { + "title": { + "C": "Coffee Store", + "ar": "متجر القهوة", + "ast": "Venta de café", + "ca": "Botiga de cafè", + "cs": "Obchod kávou", + "da": "Kaffebutik", + "de": "Kaffeegeschäft", + "el": "Καφεκοπτείο", + "en-GB": "Coffee Shop (Retail)", + "en": "Coffee Store", + "eo": "Kafa vendejo", + "es": "Tienda de café", + "et": "Kohvipood", + "fa": "فروشگاه قهوه", + "fi": "Kahvikauppa", + "fr": "Boutique de vente de cafés", + "gl": "Tenda de café", + "he": "חנות קפה", + "hr": "Prodavaonica za kavu", + "hu": "Kávébolt", + "is": "Kaffibúð", + "it": "Negozio di caffè", + "ja": "コーヒー豆販売店", + "ko": "커피 가게", + "lt": "Kavos parduotuvė", + "lv": "Kafijas veikals", + "mk": "Продавница за кафе", + "nl": "Koffiewinkel", + "no": "Kaffebutikk", + "pl": "Sklep z kawą", + "pt-BR": "Loja de Cafés", + "pt": "Loja de café", + "ro": "Magazin de Cafea", + "ru": "Кофейный магазин", + "sk": "Kaviareň", + "sl": "Trgovina s kavo", + "sr": "Продавница кафе", + "sv": "Kaffeaffär", + "tr": "Kahveci", + "uk": "Крамниця кави", + "vi": "Tiệm Bột Cà phê", + "zh-CN": "咖啡豆/粉店", + "zh-HK": "咖啡店", + "zh-TW": "咖啡店" + } + }, + "shop/collector": { + "title": { + "C": "Collectibles Shop", + "ar": "متجر المقتنيات والتجميعات", + "cs": "Sběratel", + "de": "Sammlergeschäft", + "en": "Collectibles Shop", + "eo": "Kolektaĵa vendejo", + "es": "Tienda de coleccionables", + "gl": "Tenda de colecionismo", + "he": "חנות אספנים", + "hu": "Gyűjthető tárgyak boltja", + "it": "Negozio di articoli da collezione", + "ja": "コレクター店", + "ko": "수집품 가게", + "mk": "Колекционерска продавница", + "nl": "Winkel voor verzamelobjecten", + "pl": "Sklep kolekcjonerski", + "pt-BR": "Loja de artigos para colecionadores", + "pt": "Loja de colecionismo", + "sr": "Продавница колекционарства", + "sv": "Affär med samlarobjekt", + "tr": "Koleksiyon Mağazası", + "uk": "Магазин предметів колекціювання", + "vi": "Tiệm Đồ sưu tập", + "zh-CN": "收藏品店", + "zh-TW": "收藏品商店" + } + }, + "shop/computer": { + "title": { + "C": "Computer Store", + "af": "Rekenaarwinkel", + "am": "ኮምፒውተር", + "ar": "محل حاسب آلي", + "ast": "Informática", + "bg": "Компютърен магазин", + "bn": "কম্পিউটারের দোকান", + "bs": "Prodavnica računara", + "ca": "Botiga d'informàtica", + "cs": "Počítače", + "da": "Computerforhandler", + "de": "Computerfachhandel", + "el": "Κατάστημα Υπολογιστών", + "en-GB": "Computer Shop", + "en": "Computer Store", + "eo": "Komputila vendejo", + "es": "Tienda de informática", + "et": "Arvutipood", + "fa": "فروشگاه کامپیوتر", + "fi": "Tietokoneliike", + "fr": "Magasin d'informatique", + "gl": "Tenda de informática", + "he": "חנות מחשבים", + "hr": "Prodavaonica računala", + "hu": "Számítógépbolt", + "id": "Toko Komputer", + "is": "Tölvuverslun", + "it": "Negozio di informatica", + "ja": "コンピューター店", + "kn": "ಗಣಕಯಂತ್ರದ ಅಂಗಡಿ", + "ko": "컴퓨터 가게", + "lt": "Kompiuterių parduotuvė", + "lv": "Datorveikals", + "mk": "Продавница за сметачи", + "ms": "Kedai Komputer", + "nl": "Computerwinkel", + "no": "Databutikk", + "pl": "Sklep komputerowy", + "pt-BR": "Loja de Informática", + "pt": "Loja de informática", + "ro": "Magazin de Calculatoare", + "ru": "Компьютерный магазин", + "sk": "Obchod s výpočtovou technikou", + "sl": "Računalniška trgovina", + "sr": "Продавница рачунара", + "sv": "Datorbutik", + "ta": "கணினி விற்பனையகம்", + "tr": "Bilgisayar Mağazası", + "uk": "Комп’ютери", + "vi": "Tiệm Máy tính", + "yue": "電腦舖", + "zh-CN": "电脑店", + "zh-HK": "電腦店", + "zh-TW": "電腦店", + "zh": "电脑店" + } + }, + "shop/confectionery": { + "title": { + "C": "Candy Store", + "ar": "متجر حلويات", + "ast": "Venta de llambionaes", + "ca": "Botiga de llaminadures", + "cs": "Cukrovinky", + "da": "Slikbutik", + "de": "Süßwarenladen", + "el": "Ζαχαροπλαστείο", + "en-GB": "Sweet Shop", + "en": "Candy Store", + "eo": "Sukeraĵa vendejo", + "es": "Tienda de dulces", + "et": "Kommipood", + "fa": "فروشگاه آب‌نبات", + "fi": "Karkkipuoti", + "fr": "Confiserie", + "gl": "Tenda de larpeiradas", + "he": "חנות ממתקים", + "hr": "Prodavaonica slatkiša", + "hu": "Édességbolt", + "id": "Toko Permen", + "is": "Nammibúð", + "it": "Negozio di dolciumi", + "ja": "菓子屋(販売)", + "ko": "사탕 가게", + "lt": "Saldainių parduotuvė", + "lv": "Saldumu veikals", + "mk": "Бонбониера", + "nl": "Snoepwinkel", + "no": "Godtebutikk", + "pl": "Sklep ze słodyczami", + "pt-BR": "Doceria", + "pt": "Doçaria", + "ro": "Magazin de Dulciuri", + "ru": "Кондитерская", + "sk": "Obchod so sladkosťami", + "sl": "Trgovina s slaščicami", + "sr": "Бомбонџиница", + "sv": "Godisaffär", + "tr": "Şeker Mağazası", + "uk": "Кондитерська", + "vi": "Tiệm Kẹo", + "zh-CN": "糖果店", + "zh-HK": "糖果店", + "zh-TW": "糖果店" + } + }, + "shop/convenience": { + "title": { + "C": "Convenience Store", + "af": "Geriefswinkel", + "ar": "بقالة - متجر صغير", + "ast": "Tienda d'ultramarinos", + "bg": "Магазин за хранителни стоки", + "bs": "Bakalnica", + "ca": "Botiga d'ultramarins", + "cs": "Smíšené zboží", + "da": "Minimarked", + "de": "Minimarkt", + "el": "Παντοπωλείο", + "en-GB": "Convenience Store", + "en": "Convenience Store", + "eo": "Butiko oportuna", + "es": "Tienda multiservicio", + "et": "Toidupood", + "fa": "سوپرمارکت / فروشگاه کوچک", + "fi": "Lähikauppa", + "fr": "Épicerie / Supérette", + "gl": "Tenda de ultramarinos", + "he": "חנות נוחות", + "hr": "Trgovina mješovitom robom", + "hu": "Kis élelmiszerbolt", + "id": "Toko Kelontong", + "is": "Kjörbúð", + "it": "Minimarket", + "ja": "コンビニエンスストア", + "ko": "편의점", + "lt": "Savitarnos parduotuvė", + "lv": "Veikals", + "mk": "Бакалница", + "ms": "Kedai Kecil", + "nl": "Gemakswinkel", + "no": "Nærbutikk", + "pl": "Sklep ogólnospożywczy", + "pt-BR": "Loja de Conveniência", + "pt": "Minimercado / loja de conveniência", + "ro": "Magazin Universal", + "ru": "Магазин у дома", + "sk": "Samoobsluha", + "sl": "Minimarket", + "sr": "Бакалница", + "sv": "Närbutik", + "tr": "Market", + "uk": "Міні-маркет", + "vi": "Tiệm Tiện lợi", + "yue": "便利店", + "zh-CN": "便利店", + "zh-HK": "便利店", + "zh-TW": "便利商店", + "zh": "便利店" + } + }, + "shop/copyshop": { + "title": { + "C": "Copy Store", + "ar": "متجر نسخ وتصوير", + "ast": "Copistería", + "ca": "Copisteria", + "cs": "Kopírování", + "da": "Fotokopishop", + "de": "Kopierladen", + "el": "Κατάστημα Φωτοτυπιών", + "en-GB": "Copyshop", + "en": "Copy Store", + "eo": "Fotokopiilejo", + "es": "Centro de copiado", + "et": "Koopiateenuse kauplus", + "fa": "چاپ و تکثیر", + "fi": "Kopiointiliike", + "fr": "Photocopie et impression", + "gl": "Copistaría", + "he": "חנות העתקות", + "hr": "Fotokopiraona", + "hu": "Fénymásoló", + "id": "Tempat Fotokopi", + "is": "Ljósritunarstofa", + "it": "Copisteria", + "ja": "コピー店", + "ko": "복사집", + "lt": "Kopijavimo parduotuvė", + "lv": "Printēšanas veikals", + "mk": "Копирница", + "nl": "Copyshop", + "no": "Printsjappe", + "pl": "Punkt ksero i druku", + "pt-BR": "Copiadora", + "pt": "Loja de fotocópias", + "ro": "Atelier de Copiere", + "ru": "Магазин копирования, печати", + "sk": "Fotokopírovanie", + "sl": "Fotokopirnica", + "sq": "Fotokopje", + "sr": "Копирница", + "sv": "Tryckeri", + "tr": "Kırtasiye", + "uk": "Копіювальні послуги", + "vi": "Tiệm Sao chép", + "zh-CN": "打印店", + "zh-HK": "影印店", + "zh-TW": "影印店" + } + }, + "shop/cosmetics": { + "title": { + "C": "Cosmetics Store", + "ar": "متجر مستحضرات التجميل", + "ast": "Perfumería", + "ca": "Botiga de cosmètics", + "cs": "Obchod s kosmetikou", + "da": "Kosmetikbutik", + "de": "Kosmetikladen", + "el": "Κατάστημα καλλυντικών", + "en-GB": "Cosmetics Shop", + "en": "Cosmetics Store", + "eo": "Kosmetikaĵa (persona higieno) vendejo", + "es": "Tienda de cosméticos", + "et": "Kosmeetikapood", + "fa": "فروشگاه آرایشی و بهداشتی", + "fi": "Kosmetiikkamyymälä", + "fr": "Magasin de cosmétiques", + "gl": "Tenda de cosméticos", + "he": "חנות קוסמטיקה", + "hr": "Prodavaonica kozmetike", + "hu": "Kozmetikai bolt", + "id": "Toko Kosmetik", + "is": "Snyrtivöruverslun", + "it": "Negozio di cosmetici", + "ja": "化粧品店", + "ko": "화장품 가게", + "lt": "Kosmetikos parduotuvė", + "lv": "Kosmētikas veikals", + "mk": "Продавница за козметика", + "nl": "Cosmeticawinkel", + "no": "Parfymeri", + "pl": "Sklep z kosmetykami", + "pt-BR": "Loja de Cosméticos", + "pt": "Loja de cosmética", + "ro": "osmetic", + "ru": "Магазин косметики", + "sk": "Obchod s kozmetikou", + "sl": "Kozmetična trgovina", + "sr": "Продавница козметике", + "sv": "Sminkaffär", + "tr": "Kozmetik Mağazası", + "uk": "Магазин косметики", + "vi": "Tiệm Mỹ phẩm", + "zh-CN": "化妆品店", + "zh-HK": "化妝品店", + "zh-TW": "化妝品店" + } + }, + "shop/country_store": { + "title": { + "C": "Country Store", + "ar": "متجر بلدي عام", + "cs": "venkovský obchod", + "de": "Ländlicher Laden", + "el": "Είδη Εξοχής", + "en": "Country Store", + "eo": "Ĝenerala vendejo", + "es": "Tienda de campo", + "fr": "Magasin de campagne", + "gl": "Tenda do agro ou campo", + "he": "חנות למטיילים", + "it": "Negozio locale di articoli vari", + "ja": "よろずや", + "mk": "Селска продавница", + "nl": "Outdoorzaak", + "no": "Landhandel", + "pl": "Country Store", + "pt-BR": "Loja Country", + "pt": "Loja para proprietários rurais", + "sv": "Lanthandel", + "tr": "Köy Mağazası", + "uk": "Сільмаг", + "vi": "Tiệm Nông thôn", + "zh-TW": "鄉村商店" + } + }, + "shop/craft": { + "title": { + "C": "Arts & Crafts Store", + "ar": "متجر الفنون والحرف", + "ca": "Botiga d'art i artesania", + "cs": "Obchod s řemeslnými výrobky", + "da": "Kunst & hobbybutik", + "de": "Geschäft für Künstlerbedarf", + "en": "Arts & Crafts Store", + "eo": "Vendejo de materialoj por metio", + "es": "Tienda de artesanías", + "fa": "فروشگاه هنر و صنایع دستی", + "fi": "Käsityöliike", + "fr": "Magasin d'arts et loisirs créatifs", + "gl": "Tenda de artes e oficios", + "he": "חנות חפצי אומנות", + "hu": "Kézműveskellék-bolt", + "it": "Negozio di arti e mestieri", + "ja": "美術・工芸用品店", + "ko": "미술 & 공예 가게", + "mk": "Продавница за уметнички ракотворби", + "nl": "Winkel voor schilder- en tekengereedschap", + "no": "Kunst & Håndverksbutikk", + "pl": "Sklep z artykułami dla artystów", + "pt-BR": "Loja de artesanato", + "pt": "Loja de acessórios para artes manuais", + "sv": "Konst- & hantverksbutik", + "tr": "El Sanatları Mağazası", + "uk": "Мистецтво та ремесла", + "vi": "Tiệm Bán đồ Thủ công", + "zh-CN": "工艺美术用品店", + "zh-TW": "手工藝品店" + } + }, + "shop/curtain": { + "title": { + "C": "Curtain Store", + "ar": "محل بيع الستائر", + "ast": "Tienda de cortines", + "ca": "Botiga de cortines", + "cs": "Obchod se závěsy", + "da": "Gardinbutik", + "de": "Vorhanggeschäft", + "el": "Είδη Κουρτίνας", + "en-GB": "Curtain Shop", + "en": "Curtain Store", + "eo": "Kurtena vendejo", + "es": "Tienda de cortinas", + "et": "Kardinakauplus", + "fa": "پرده فروشی", + "fi": "Verhomyymälä", + "fr": "Magasin de rideaux", + "gl": "Tenda de cortinas", + "he": "חנות וילונות", + "hr": "Trgovina za zastore", + "hu": "Függönybolt", + "id": "Toko Gorden", + "is": "Gluggatjaldaverslun", + "it": "Negozio di tende", + "ja": "カーテン店", + "ko": "커튼 가게", + "lt": "Užuolaidų parduotuvė", + "lv": "Aizkaru veikals", + "mk": "Продавница за завеси", + "nl": "Gordijnenwinkel", + "no": "Gardinbutikk", + "pl": "Sklep z zasłonami", + "pt-BR": "Loja de Cortinas", + "pt": "Loja de cortinas", + "ro": "Magazin de Perdele", + "ru": "Магазин штор и драпировок", + "sk": "Obchod so záclonami", + "sl": "Trgovina z zavesami", + "sr": "Продавница завеса", + "sv": "Gardinaffär", + "tr": "Perde Mağazası", + "uk": "Магазин занавісок", + "vi": "Tiệm Màn cửa", + "zh-CN": "窗帘店", + "zh-HK": "窗簾店", + "zh-TW": "窗廉店" + } + }, + "shop/dairy": { + "title": { + "C": "Dairy Store", + "ar": "متجر الألبان", + "ast": "Llechería", + "ca": "Botiga de productes làctics", + "cs": "Mléčné výrobky", + "da": "Ismejeri", + "de": "Milchgeschäft", + "el": "Γαλακτοπωλείο", + "en-GB": "Dairy Shop", + "en": "Dairy Store", + "eo": "Laktaĵa vendejo", + "es": "Tienda de lácteos", + "et": "Piimapood", + "fa": "فروشگاه لبنی", + "fi": "Maitotuotemyymälä", + "fr": "Crèmerie", + "gl": "Tenda de produtos frescos", + "he": "חנות מוצרי חלב", + "hr": "Prodavaonica mliječnih proizvoda", + "hu": "Tejtermékbolt", + "id": "Toko Susu", + "is": "Mjólkurbúð", + "it": "Negozio di latticini", + "ja": "乳製品店", + "ko": "유제품 가게", + "lt": "Pieno produktų parduotuvė", + "lv": "Piena veikals", + "mk": "Бакалница", + "nl": "Zuivelhandel", + "no": "Ferskvarebutikk", + "pl": "Sklep z nabiałem", + "pt-BR": "Loja de Laticínios", + "pt": "Loja de laticínios", + "ro": "Magazin de Lactate", + "ru": "Магазин молочных продуктов", + "sk": "Obchod s mliečnymi výrobkami", + "sl": "Mlekarna", + "sr": "Продавница млечних производа", + "sv": "Mejeriaffär", + "tr": "Süt Mağazası", + "uk": "Молочний магазин", + "vi": "Tiệm Sữa", + "zh-CN": "牛奶店", + "zh-HK": "奶製品店", + "zh-TW": "奶製品店" + } + }, + "shop/deli": { + "title": { + "C": "Deli", + "af": "Deli", + "ar": "محل أطعمة لذيذة", + "ast": "Gourmet", + "bg": "Магазин за деликатеси", + "bs": "Delikatese", + "ca": "Botiga de comestibles", + "cs": "Lahůdkářství", + "da": "Deli", + "de": "Feinkostladen", + "el": "Ντελικατέσεν", + "en-GB": "Deli", + "en": "Deli", + "eo": "Delikataĵa vendejo", + "es": "Delicatessen", + "et": "Delikatessikauplus", + "fa": "حاضری فروشی", + "fi": "Deli", + "fr": "Épicerie de luxe", + "gl": "Delicatessen", + "he": "מעדניה", + "hr": "Prodavaonica delikatesa", + "hu": "Csemegebolt", + "id": "Delikatesen", + "is": "Deli", + "it": "Gastronomia", + "ja": "惣菜屋", + "ko": "델리", + "lt": "Gastronomas", + "lv": "Delikateses", + "mk": "Продавница за деликатеси", + "nl": "Delicatessenwinkel", + "no": "Delikatessebutikk", + "pl": "Ekskluzywne delikatesy", + "pt-BR": "Delicatessen", + "pt": "Loja gourmet", + "ru": "Магазин деликатесов", + "sk": "Delikatesy", + "sl": "Delikatesa", + "sr": "Деликатеси", + "sv": "Delikatessaffär", + "tr": "Şarküteri", + "uk": "Делікатеси/Вишукана їжа", + "vi": "Tiệm Deli", + "yue": "美食舖", + "zh-CN": "熟食店", + "zh-HK": "食肆", + "zh-TW": "美食店", + "zh": "熟食店" + } + }, + "shop/department_store": { + "title": { + "C": "Department Store", + "af": "Afdelingswinkel", + "am": "የተደራጀ ግዙፍ ማከፋፈያ", + "ar": "محل متعدد الأقسام", + "ast": "Grandes almacenes", + "bg": "Универсален магазин", + "bn": "ডিপার্টমেন্ট স্টোর", + "bs": "Robna kuća", + "ca": "Grans magatzems", + "cs": "Obchodní dům", + "da": "Stormagasin", + "de": "Kaufhaus", + "el": "Πολυκατάστημα", + "en-GB": "Department Store", + "en": "Department Store", + "eo": "Ĉiovendejo", + "es": "Grandes almacenes / Tienda departamental", + "et": "Kaubamaja", + "fa": "فروشگاه چندمنظوره", + "fi": "Tavaratalo", + "fr": "Grand magasin", + "gl": "Grandes almacéns", + "he": "חנות כלבו", + "hr": "Robna kuća", + "hu": "Nagyáruház", + "id": "Pasar Swalayan", + "is": "Stórverslun", + "it": "Grande magazzino", + "ja": "百貨店", + "kn": "ಕಿರಾಣಿ ಅಂಗಡಿ", + "ko": "백화점", + "lt": "Universalinė parduotuvė", + "lv": "Lielveikals", + "mk": "Стоковна куќа", + "nl": "Warenhuis", + "no": "Supermarked", + "pl": "Dom towarowy", + "pt-BR": "Loja de Departamentos", + "pt": "Grande armazém", + "ro": "Magazin Universal", + "ru": "Универсальный магазин (с отделами)", + "sk": "Obchodný dom", + "sl": "Veleblagovnica", + "sr": "Робна кућа", + "sv": "Varuhus", + "tr": "Mağaza", + "uk": "Універмаг", + "vi": "Tiệm Bách hóa", + "yue": "百貨公司", + "zh-CN": "百货商场", + "zh-HK": "百貨公司", + "zh-TW": "百貨公司", + "zh": "百货店" + } + }, + "shop/doityourself": { + "title": { + "C": "DIY Store", + "af": "Selfdoenwinkel", + "ar": "محل عدد وأدوات وأجهزة صيانة وتحسين المنزل", + "ast": "Bricolage", + "bg": "Магазин \"Направи си сам\"", + "bn": "নিজে করুন স্টোর", + "bs": "Sve za kuću", + "ca": "Botiga de bricolatge", + "cs": "Obchod pro kutily", + "da": "Byggemarked", + "de": "Heimwerkerladen", + "el": "Κατάστημα ιδιοκατασκευών", + "en-GB": "DIY Shop", + "en": "DIY Store", + "eo": "Memfaradila vendejo", + "es": "Tienda de bricolaje / Hágalo usted mismo", + "et": "Ehituskauplus", + "fa": "فروشگاه DIY", + "fi": "Askartelukauppa", + "fr": "Magasin de bricolage", + "gl": "Tenda de bricolaxe", + "he": "חנות עשה זאת בעצמך", + "hr": "Uradi sam", + "hu": "Barkácsáruház", + "id": "Toko Swakriya", + "is": "Handlaginna verslun", + "it": "Negozio di fai-da-te", + "ja": "ホームセンター", + "ko": "DIY 가게", + "lt": "Pasidaryk pats parduotuvė", + "mk": "Продавница за мајсторисување", + "ms": "Kedai DIY", + "nl": "Bouwmarkt, doe-het-zelfwinkel", + "no": "Byggevarehus", + "pl": "Market budowlany / sklep dla majsterkowiczów", + "pt-BR": "Loja de Ferragens/Bricolagem", + "pt": "Loja de bricolagem", + "ro": "Magazin DIY", + "ru": "Строительный магазин", + "sk": "Obchod pre kutilov", + "sl": "Orodjarna", + "sr": "Продавница све за кућу", + "sv": "Byggmarknad", + "tr": "Malzeme Mağazası", + "uk": "Зроби сам", + "vi": "Tiệm Vật liệu Xây dựng", + "yue": "自組舖", + "zh-CN": "DIY店", + "zh-HK": "DIY店", + "zh-TW": "DIY商店", + "zh": "DIY商店" + } + }, + "shop/doors": { + "title": { + "C": "Door Shop", + "ar": "متجر بيع أبواب", + "ca": "Botiga de portes", + "cs": "prodejna dveří", + "da": "Dørforhandler", + "de": "Türgeschäft", + "el": "Κατάστημα Πορτών", + "en": "Door Shop", + "eo": "Vendejo de pordoj", + "es": "Tienda de puertas (aberturas)", + "fa": "فروشگاه درب", + "fi": "Oviliike", + "fr": "Magasin de portes", + "gl": "Tenda de portas", + "he": "חנות דלתות", + "hu": "Ajtószaküzlet", + "it": "Negozio di porte", + "ja": "ドア販売店", + "ko": "문 가게", + "mk": "Продавница за врати", + "nl": "Deurenwinkel", + "no": "Dør Butikk", + "pl": "Sklep z drzwiami", + "pt-BR": "Loja de portas", + "pt": "Loja de portas", + "ru": "Магазин дверей", + "sr": "Продавница врата", + "sv": "Affär med dörrar", + "tr": "Kapı Dükkanı", + "uk": "Магазин дверей", + "vi": "Tiệm Cửa", + "zh-CN": "门业店", + "zh-TW": "門店" + } + }, + "shop/dry_cleaning": { + "title": { + "C": "Dry Cleaner", + "ar": "مغسلة ملابس بالبخار", + "ast": "Llimpieza en seco", + "ca": "Bugaderia", + "cs": "Čistírna", + "da": "Renseri", + "de": "Chemische Reinigung", + "el": "Στεγνοκαθαριστήριο", + "en-GB": "Dry Cleaner", + "en": "Dry Cleaner", + "eo": "Vest-lavejo (nepolara solvilo)", + "es": "Tintorería", + "et": "Keemiline puhastus", + "fa": "خشکشویی", + "fi": "Kuivapesula", + "fr": "Pressing", + "gl": "Tinturaría", + "he": "ניקוי יבש", + "hr": "Kemijska čistionica", + "hu": "Vegytisztitó", + "id": "Jasa Cuci Kering", + "is": "Þurrhreinsun", + "it": "Lavanderia", + "ja": "クリーニング店", + "ko": "드라이클리닝", + "lv": "Ķīmiskā tīrītava", + "mk": "Хемиско чистење", + "ms": "Kedai Cucian Kering", + "nl": "Stomerij", + "no": "Renseri", + "pl": "Pralnia chemiczna", + "pt-BR": "Lavanderia a seco", + "pt": "Limpeza a seco", + "ro": "Uscător", + "ru": "Химчистка", + "sk": "Čistiareň odevov", + "sl": "Čistilnica", + "sq": "Pastrim Kimik", + "sr": "Хемијско чишћење", + "sv": "Kemtvätt", + "tr": "Kuru Temizleme Mağazası", + "uk": "Хімчистка", + "vi": "Tiệm Giặt khô", + "zh-CN": "干洗店", + "zh-HK": "乾洗店", + "zh-TW": "乾洗店" + } + }, + "shop/e-cigarette": { + "title": { + "C": "E-Cigarette Shop", + "ar": "متجر سجائر إلكترونية", + "ca": "Botiga de cigars electrònics", + "cs": "Obchod s e-cigaretami", + "da": "E-cigaretbutik", + "de": "E-Zigarettengeschäft", + "el": "Κατάστημα Ηλεκτρονικού Τσιγάρου", + "en-GB": "E-Cigarette Shop", + "en": "E-Cigarette Shop", + "eo": "Elektronik-cigareda vendejo", + "es": "Tienda de cigarrillo electrónico", + "et": "E-sigaretipood", + "fa": "فروشگاه سیگار الکترونیکی", + "fi": "Sähkösavukemyymälä", + "fr": "Magasin de cigarettes électroniques", + "gl": "Tenda de cigarros electrónicos", + "he": "חנות מוצרי עישון", + "hu": "E-cigaretta bolt", + "is": "Rafrettubúð", + "it": "Negozio di sigarette elettroniche", + "ja": "電子タバコ店", + "ko": "전자 담배 가게", + "lt": "El. cigarečių parduotuvė", + "lv": "E-Cigarešu veikals", + "mk": "Продавница за е-цигари", + "ms": "Kedai Rokok Elektronik", + "nl": "E-sigarettenwinkel", + "pl": "Sklep z e-papierosami", + "pt-BR": "Loja de cigarro eletrônico", + "pt": "Loja de cigarros eletrónicos", + "ro": "Magazin de Țigarete Electrice", + "ru": "Магазин электронных сигарет", + "sk": "Obchod s elektronickými cigaretami", + "sr": "Продавница електронских цигарета", + "sv": "Affär för elektroniska cigaretter", + "tr": "Elektronik Sigara Mağazası", + "uk": "Магазин Е-цигарок", + "vi": "Tiệm Thuốc lá Điện tử", + "zh-CN": "电子烟店", + "zh-HK": "電子煙店", + "zh-TW": "電子菸商店" + } + }, + "shop/electrical": { + "title": { + "C": "Electrical Equipment Store", + "am": "የኤሌትሪክ ዕቃዎች መሸጫ", + "ar": "متجر المستلزمات الإلكترونية", + "cs": "prodejna elektoniky", + "de": "Elektrofachgeschaft", + "el": "Κατάστημα Ηλεκτρολογικού Εξοπλισμού", + "en": "Electrical Equipment Store", + "eo": "Elektraĵa vendejo", + "es": "Tienda de equipos eléctricos", + "et": "Elektrikauba pood", + "fa": "فروشگاه کالای برق", + "fi": "Sähkötarvikekauppa", + "fr": "Magasin d'équipements électriques", + "gl": "Tenda de material de electrónica", + "he": "חנות מוצרי חשמל", + "hu": "Villamossági szaküzlet", + "it": "Negozio di materiale elettrico", + "ja": "電気店", + "ko": "전기 기구 가게", + "mk": "Продавница за електрика", + "nl": "Winkel voor elektriciteitsbenodigdheden", + "no": "Elektrisk utstyrsbutikk", + "pl": "Sklep elektryczny", + "pt-BR": "Loja de equipamentos elétricos", + "pt": "Loja de material elétrico", + "ru": "Магазин электротоваров", + "sr": "Продавница беле технике", + "sv": "Affär med elutrustning", + "tr": "Elektrikli Ekipman Mağazası", + "uk": "Магазин електротехнічного обладнання", + "vi": "Tiệm Linh kiện Điện tử", + "zh-CN": "电气设备店", + "zh-TW": "電氣材料行" + } + }, + "shop/electronics": { + "title": { + "C": "Electronics Store", + "af": "Elektronikawinkel", + "am": "ኤሌክትሮኒክስ መሸጫ ሱቅ", + "ar": "محل إلكترونيات", + "ast": "Electrónica", + "bg": "Магазин за електроника", + "bn": "ইলেকট্রনিক্স-এর দোকান", + "bs": "Prodavnica elektronike", + "ca": "Botiga d'electrònica", + "cs": "Elektro", + "da": "Elektronikbutik", + "de": "Elektronikfachgeschäft", + "el": "Κατάστημα Ηλεκτρονικών", + "en-GB": "Electronics Shop", + "en": "Electronics Store", + "eo": "Elektronika vendejo", + "es": "Tienda de electrónica y electrodomésticos", + "et": "Elektroonikapood", + "fa": "فروشگاه لوازم برقی", + "fi": "Elektroniikkamyymälä", + "fr": "Magasin d'électronique et d'électroménager", + "gl": "Tenda de electrodomésticos", + "he": "חנות אלקטרוניקה", + "hr": "Prodavaonica elektronike", + "hu": "Szórakoztató elektronikai bolt", + "id": "Toko Elektronik", + "is": "Rafeindatækjaverslun", + "it": "Negozio di elettronica", + "ja": "家電販売店(小型製品)", + "ko": "전자 제품 가게", + "lt": "Elektronikos parduotuvė", + "lv": "Elektronikas veikals", + "mk": "Продавница за електронска роба", + "ms": "Kedai Elektronik", + "nl": "Huishoudtoestellen-/Witgoedwinkel", + "no": "Elektronikkbutikk", + "pl": "Sklep z elektroniką/RTV/AGD", + "pt-BR": "Loja de Eletrônicos", + "pt": "Loja de eletrodomésticos", + "ro": "Magazin de Electronice", + "ru": "Магазин бытовой электроники", + "sk": "Elektro obchod", + "sl": "Elektronska trgovina", + "sr": "Продавница електронике", + "sv": "Elektronikbutik", + "tr": "Elektronik Mağazası", + "uk": "Електроніка", + "vi": "Tiệm Điện tử", + "yue": "電器舖", + "zh-CN": "电器店", + "zh-HK": "電子舖", + "zh-TW": "電器店", + "zh": "电器店" + } + }, + "shop/erotic": { + "title": { + "C": "Erotic Store", + "ast": "Artículos eróticos", + "ca": "Botiga d'articles eròtics", + "cs": "Sex shop", + "da": "Erotikbutik", + "de": "Erotikgeschäft", + "el": "Μαγαζί ερωτικών ειδών", + "en-GB": "Erotic Shop", + "en": "Erotic Store", + "eo": "Seksumila vendejo", + "es": "Tienda erótica", + "et": "Erootikapood", + "fa": "فروشگاه لوازم بزرگسالان", + "fi": "Erotiikkamyymälä", + "fr": "Sex-shop", + "gl": "Tenda erótica", + "he": "חנות ארוטיקה", + "hr": "Prodavaonica erotskih pomagala", + "hu": "Szexbolt", + "is": "Hjálpartæki ástarlífsins", + "it": "Negozio erotico", + "ja": "アダルトショップ", + "ko": "성인용품 가게", + "lt": "Erotikos parduotuvė", + "lv": "Erotiskais veikals", + "mk": "Еротска продавница", + "nl": "Seksshop", + "no": "Erotikkbutikk", + "pl": "Sex shop", + "pt-BR": "Sex Shop", + "pt": "Sex shop", + "ro": "Magazin Erotic", + "ru": "Секс-шоп", + "sk": "Ochod s erotickými potrebami", + "sl": "Erotična trgovina", + "sr": "Продавница еротике", + "sv": "Sexshop", + "tr": "Erotik Ürünler Mağazası", + "uk": "Секс-шоп", + "vi": "Tiệm Bán đồ Khiêu dâm", + "zh-CN": "情趣用品店", + "zh-HK": "情趣用品店", + "zh-TW": "情趣用品店" + } + }, + "shop/fabric": { + "title": { + "C": "Fabric Store", + "ar": "محل بيع الأقمشة", + "ca": "Botiga de teles", + "cs": "Obchod s textilem", + "da": "Stofforretning", + "de": "Stoffgeschäft", + "el": "Πωλήσεις Υφασμάτων", + "en-GB": "Fabric Shop", + "en": "Fabric Store", + "eo": "Teksaĵa vendejo", + "es": "Tienda textil", + "et": "Kangakauplus", + "fa": "پارچه فروشی", + "fi": "Kangaskauppa", + "fr": "Magasin de tissus", + "gl": "Tenda de teas", + "he": "חנות אריגה", + "hr": "Trgovina za tkanine", + "hu": "Méteráru-bolt", + "id": "Toko Kain", + "is": "Álnavöruverslun", + "it": "Negozio di tessuti", + "ja": "生地屋", + "ko": "직물 가게", + "lt": "Audinių parduotuvė", + "lv": "Audumu veikals", + "mk": "Продавница за ткаенини", + "ms": "Kedai Fabrik", + "nl": "Stofwinkel", + "no": "Stoffbutikk", + "pl": "Sklep z tkaninami", + "pt-BR": "Loja de Tecidos", + "pt": "Loja de tecidos", + "ro": "Magazin de Materiale", + "ru": "Магазин тканей", + "sk": "Obchod s látkami", + "sl": "Trgovina z metrskim blagom", + "sr": "Продавница текстила", + "sv": "Tygaffär", + "tr": "Kumaş Mağazası", + "uk": "Магазин тканин", + "vi": "Tiệm Vải", + "zh-CN": "布店", + "zh-HK": "布料店", + "zh-TW": "帆布店" + } + }, + "shop/farm": { + "title": { + "C": "Produce Stand", + "af": "Padstal", + "ar": "متجر داخل مزرعة ويبيع منتجاتها", + "bg": "Щанд за плодове и зеленчуци", + "bs": "Štand proizvodnje", + "ca": "Estand productiu", + "cs": "Stánek s ovocem, zeleninou", + "da": "Gårdbutik", + "de": "Hofladen", + "el": "Πάγκος Παραγωγής", + "en-GB": "Farm Shop", + "en": "Produce Stand", + "eo": "Terfrukta vendotablo", + "es": "Tienda de productos agrícolas", + "et": "Talukaup", + "fa": "غرفه میوه و سبزی باغ", + "fi": "Maatilan suoramyynti", + "fr": "Magasin de producteurs", + "gl": "Tenda de produtos agrícolas", + "he": "דוכן ירקות", + "hr": "Prodavaonica proizvoda farme", + "hu": "Termelői bolt", + "is": "Vörubás", + "it": "Banchetto Alimentari Freschi", + "ja": "農産物直売所", + "ko": "산지 직매", + "lt": "Produktų stendas", + "mk": "Пилјарска тезга", + "nl": "Boerderijwinkel voor groente en fruit", + "no": "Gårdsutsalg", + "pl": "Stragan świeżych produktów", + "pt-BR": "Quitanda de Produção Local", + "pt": "Loja de produtos agrícolas locais", + "ru": "Магазин свежих продуктов", + "sk": "Voľný predaj ovocia", + "sl": "Prodaja domačih pridelkov", + "sr": "Производни штанд", + "sv": "Gårdsbutik", + "tr": "Manav", + "uk": "Стелаж з фермерськими товарами", + "vi": "Quầy Nông sản", + "yue": "檔", + "zh-CN": "农产直销店", + "zh-HK": "農產品檔攤", + "zh-TW": "產地直銷店" + } + }, + "shop/fashion_accessories": { + "title": { + "C": "Fashion Accessories Store", + "ar": "محل اكسسوارات الموضة", + "ca": "Botiga d'accessoris de moda", + "cs": "prodejna módních doplňků", + "de": "Geschäft für Modeaccessoires", + "el": "Κατάστημα για Αξεσουάρ Μόδας", + "en": "Fashion Accessories Store", + "eo": "Galanteria (vestaj akcesoraĵoj) vendejo", + "es": "Tienda de accesorios de moda", + "fa": "فروشگاه لوازم مد", + "fi": "Muotitarvikekauppa", + "fr": "Boutique d'accessoires de mode", + "gl": "Tenda de accesorios de moda", + "he": "חנות אביזרי אופנה", + "hu": "Divat kiegészítők boltja", + "it": "Negozio di accessori di moda", + "ja": "ファッション小物店", + "ko": "패션 액세서리 가게", + "mk": "Продавница за модни додатоци", + "nl": "Modeaccessoirewinkel", + "pl": "Sklep z galanterią", + "pt-BR": "Loja de acessórios de moda", + "pt": "Loja de acessórios de moda", + "ru": "Магазин модных аксессуаров", + "sv": "Affär för modeaccessoarer", + "tr": "Moda Aksesuarları Mağazası", + "uk": "Магазин модних аксесуарів", + "vi": "Tiệm Phụ kiện Thời trang", + "zh-CN": "饰品店", + "zh-TW": "服裝配飾商店" + } + }, + "shop/fireplace": { + "title": { + "C": "Fireplace Store", + "ar": "متجر بيع المواقد والدفايات", + "ca": "Botiga de llars de foc", + "cs": "prodej krbů a kamen", + "de": "Kachelofenladen", + "el": "Είδη Τζακιού", + "en": "Fireplace Store", + "eo": "Kamen-vendejo", + "es": "Tienda de chimeneas", + "et": "Küttekollete pood", + "fa": "فروشگاه شومینه ، بخاری", + "fi": "Takkamyymälä", + "fr": "Magasin de cheminées", + "gl": "Tenda de chemineas", + "he": "חנות חימום", + "hu": "Cserépkályha- és kandalló-szaküzlet", + "it": "Negozio di caminetti", + "ja": "暖房具店", + "ko": "벽난로 가게", + "mk": "Продавница за камини", + "nl": "Haardwinkel", + "no": "Peisbutikk", + "pl": "Sklep z kominkami", + "pt-BR": "Loja de Lareiras", + "pt": "Loja de lareiras", + "ru": "Продажа каминов", + "sv": "Kaminbutik", + "tr": "Şömine Mağazası", + "uk": "Печі, каміни", + "vi": "Tiệm Lò sưởi", + "zh-CN": "壁炉用品店", + "zh-TW": "壁爐商店" + } + }, + "shop/fishing": { + "title": { + "C": "Fishing Shop", + "ar": "محل معدات الصيد البحري", + "cs": "Rybářské potřeby", + "de": "Angelgeschäft", + "el": "Είδη Αλιείας", + "en": "Fishing Shop", + "eo": "Fiŝkaptil-vendejo", + "es": "Tienda de pesca", + "et": "Kalastustarvete pood", + "fa": "فروشگاه لوازم ماهی گیری", + "fi": "Kalastuskauppa", + "fr": "Magasin de pêche", + "gl": "Tenda de pesca", + "he": "חנות דיג", + "hr": "Prodavaonica ribolovne opreme", + "hu": "Horgászbolt", + "it": "Negozio di pesca", + "ja": "釣具店", + "ko": "낚시 가게", + "mk": "Риболовна продавница", + "nl": "Hengelsportwinkel", + "no": "Fiskebutikk", + "pl": "Sklep wędkarski", + "pt-BR": "Loja de pesca", + "pt": "Loja de artigos de pesca", + "ru": "Рыболовный магазин", + "sk": "Rybárske potreby", + "sr": "Продавница рибе", + "sv": "Fiskeaffär", + "tr": "Balıkçılık Mağazası", + "uk": "Рибальський магазин", + "vi": "Tiệm Cần câu", + "zh-CN": "钓鱼店", + "zh-TW": "釣魚用品店" + } + }, + "shop/flooring": { + "title": { + "C": "Flooring Supply Shop", + "ar": "محل بيع أرضيات", + "cs": "podlahové krytiny", + "de": "Fußbodengeschäft", + "en": "Flooring Supply Shop", + "eo": "Plank-vendejo", + "es": "Tienda de suministros para pisos", + "fa": "فروشگاه لوازم جانبی کفپوش", + "gl": "Tenda de chans", + "he": "חנות ריצוף", + "hu": "Parkettabolt", + "it": "Negozio di articoli per pavimentazioni", + "ja": "床用品店", + "ko": "바닥재 가게", + "mk": "Продавница за подови", + "nl": "Vloerwinkel", + "pl": "Sklep z posadzkami", + "pt-BR": "Loja de materiais para pisos", + "pt": "Loja de material de pavimentação", + "sv": "Affär för golv", + "tr": "Döşeme Malzemeleri Mağazası", + "uk": "Магазин напільних матеріалів", + "zh-CN": "地板店", + "zh-TW": "地板商店" + } + }, + "shop/florist": { + "title": { + "C": "Florist", + "af": "Bloemiste", + "am": "የአበባ መሸጫ", + "ar": "محل بيع الورود", + "ast": "Floristería", + "bg": "Магазин за цветя", + "bn": "ফুল ব্যবসায়ী", + "bs": "Cvjećar", + "ca": "Floristeria", + "cs": "Květinářství", + "da": "Blomsterbutik", + "de": "Blumenhändler", + "el": "Ανθοπωλείο", + "en-GB": "Florist", + "en": "Florist", + "eo": "Florvendejo", + "es": "Floristería", + "et": "Lillepood", + "fa": "گل فروشی", + "fi": "Kukkakauppa", + "fr": "Fleuriste", + "gl": "Floraría", + "he": "חנות פרחים", + "hr": "Cvjećarna", + "hu": "Virágbolt", + "id": "Toko Bunga", + "is": "Blómabúð", + "it": "Fioraio", + "ja": "生花店", + "kn": "ಹೂವಿನ ವ್ಯಾಪಾರಿ", + "ko": "꽃 가게", + "lt": "Gėlės", + "lv": "Florists", + "mk": "Цвеќарница", + "ms": "Kedai Bunga", + "nl": "Bloemenwinkel", + "no": "Blomsterbutikk", + "pl": "Kwiaciarnia", + "pt-BR": "Floricultura", + "pt": "Florista", + "ro": "Florărie", + "ru": "Цветочный магазин", + "sk": "Kvetinárstvo", + "sl": "Cvetličarna", + "sr": "Цвећар", + "sv": "Florist", + "ta": "பூக்கடை", + "tr": "Çiçekçi", + "uk": "Квіти", + "vi": "Tiệm Hoa", + "yue": "花舖", + "zh-CN": "花店", + "zh-HK": "花店", + "zh-TW": "花店", + "zh": "花店" + } + }, + "shop/frame": { + "title": { + "C": "Framing Shop", + "ar": "محل تأطير (بيع إطارات صور)", + "ast": "Marcos", + "ca": "Botiga de marcs", + "cs": "Rámařství", + "da": "Rammebutik", + "de": "Bilderrahmengeschäft", + "el": "Κατάστημα Πλαισίων", + "en-GB": "Framing Shop", + "en": "Framing Shop", + "eo": "Bild-kadra vendejo", + "es": "Tienda de enmarcación", + "et": "Raamikauplus", + "fa": "قاب سازی", + "fi": "Kehystämö", + "fr": "Magasin d'encadrements", + "gl": "Tenda de enmarcado", + "he": "חנות חקלאות", + "hr": "Trgovina za okvire", + "hu": "Képkeret-bolt", + "id": "Toko Bingkai", + "is": "Innrömmun", + "it": "Negozio di cornici", + "ja": "額縁店", + "ko": "액자 가게", + "lt": "Įrėminimo parduotuvė", + "mk": "Врамувачница", + "nl": "Kaderwinkel", + "no": "Innrammingsbutikk", + "pl": "Sklep z ramami", + "pt-BR": "Loja de Molduras", + "pt": "Loja de molduras", + "ru": "Магазин рамок для фотографий и картин", + "sk": "Obchod s rámami", + "sr": "Стаклар", + "sv": "Ramaffär", + "tr": "Çerçeve Mağazası", + "uk": "Багетна майстерня", + "vi": "Tiệm Khung Tranh", + "zh-CN": "相框店", + "zh-HK": "表框店", + "zh-TW": "表框店" + } + }, + "shop/frozen_food": { + "title": { + "C": "Frozen Food Store", + "ar": "متجر أغذية مجمدة", + "ca": "Botiga de menjars congelats", + "cs": "prodejna mražených potravin", + "de": "Geschäft für Tiefkühlprodukte", + "el": "Κατάστημα Κατεψυγμένων Τροφίμων", + "en": "Frozen Food Store", + "eo": "Frostigit-manĝaĵa vendejo", + "es": "Tienda de alimentos congelados", + "fa": "فروشگاه غذای منجمد", + "fr": "Magasin de produits surgelés", + "gl": "Tenda de conxelados", + "he": "חנות מזון קפוא", + "hu": "Fagyasztottélelmiszer-bolt", + "it": "Negozio di cibo surgelato", + "ja": "冷凍食品店", + "ko": "냉동식품 가게", + "mk": "Продавница за замрзната храна", + "nl": "Winkel voor bevroren voedsel", + "pl": "Sklep z mrożonkami", + "pt-BR": "Loja de alimentos congelados", + "pt": "Loja de comida congelada", + "ru": "Магазин замороженных продуктов", + "sk": "Obchod s mrazenými potravinami", + "sr": "Продавница смрзнуте хране", + "sv": "Affär för fryst mat", + "tr": "Donmuş Yiyecek Mağazası", + "uk": "Заморожені продукти", + "vi": "Tiệm Thực phẩm Đông lạnh", + "zh-CN": "冷冻食品店", + "zh-TW": "冷凍食品商店" + } + }, + "shop/fuel": { + "title": { + "C": "Fuel Shop", + "am": "ነዳጅ ማደያ", + "ar": "متجر بيع الوقود", + "cs": "Obchod s palivem", + "de": "Tankstelle", + "el": "Κατάστημα Καυσίμων", + "en": "Fuel Shop", + "eo": "Brulaĵ-vendejo", + "es": "Tienda de combustible", + "et": "Küttepood", + "fa": "فروشگاه سوخت", + "fi": "Polttoainemyymälä", + "fr": "Revendeur de carburant", + "gl": "Tenda de combustíbel", + "he": "חנות נוחות", + "hu": "Üzemanyag-szaküzlet", + "it": "Negozio di carburanti", + "ja": "燃料店", + "ko": "연료 가게", + "mk": "Продавница за гориво", + "nl": "Tankstation", + "no": "Drivstoffbuttikk", + "pl": "Sklep z paliwami", + "pt-BR": "Loja de Combustível", + "pt": "Loja de combustíveis", + "sv": "Bränsleaffär", + "tr": "Akaryakıt İstasyonu", + "uk": "Паливо", + "vi": "Tiệm Nhiên liệu", + "zh-CN": "燃料店", + "zh-TW": "燃料店" + } + }, + "shop/funeral_directors": { + "title": { + "C": "Funeral Home", + "ar": "محل بيع أكفان ومستلزمات الجنائز", + "ast": "Velatoriu", + "ca": "Tanatori", + "cs": "Pohřební služba", + "da": "Bedemandsforretning", + "de": "Beerdigungsinstitut", + "el": "Γραφείο Τελετών", + "en-GB": "Funeral Home", + "en": "Funeral Home", + "eo": "Tombistejo", + "es": "Funeraria", + "et": "Matusebüroo", + "fa": "غسالخانه", + "fi": "Hautaustoimisto", + "fr": "Funérarium", + "gl": "Funeraria", + "he": "קברן", + "hr": "Pogrebno poduzeće", + "hu": "Temetkezési iroda", + "id": "Rumah Pemakaman", + "is": "Útfararheimili", + "it": "Casa funeraria", + "ja": "葬儀社", + "kn": "ಶವಸಂಸ್ಕಾರದ ನೆಲೆ", + "ko": "장례식장", + "lt": "Laidojimo namai", + "lv": "Apbedīšanas birojs", + "mk": "Погребално друштво", + "nl": "Begrafenisondernemer", + "no": "Begravelsesagent", + "pl": "Zakład pogrzebowy", + "pt-BR": "Funerária", + "pt": "Agência funerária", + "ro": "Casă Funerală", + "ru": "Бюро похоронных услуг", + "sk": "Pohrebný ústav", + "sl": "Pogrebne storitve", + "sr": "Продавница загробне опреме", + "sv": "Begravningsbyrå", + "tr": "Cenaze Koordinatörü", + "uk": "Ритуальні послуги", + "vi": "Nhà quàn", + "yue": "殯儀館", + "zh-CN": "殡仪馆", + "zh-HK": "殯儀館", + "zh-TW": "生命禮儀公司" + } + }, + "shop/furniture": { + "title": { + "C": "Furniture Store", + "af": "Meubelwinkel", + "am": "የቤትና የቢሮ ዕቃዎች መሸጫ", + "ar": "محل بيع أثاث", + "ast": "Mueblería", + "bg": "Мебелен магазин", + "bn": "আসবাবপত্রের দোকান", + "bs": "Salon namještaja", + "ca": "Botiga de mobles", + "cs": "Nábytek", + "da": "Møbelforhandler", + "de": "Möbelhaus", + "el": "Κατάστημα Επίπλων", + "en-GB": "Furniture Shop", + "en": "Furniture Store", + "eo": "Mebla vendejo", + "es": "Mueblería", + "et": "Mööblipood", + "fa": "فروشگاه مبلمان", + "fi": "Huonekaluliike", + "fr": "Magasin de meubles", + "gl": "Moblaría", + "he": "חנות רהיטים", + "hr": "Salon namještaja", + "hu": "Bútorbolt", + "id": "Toko Furnitur", + "is": "Húsgagnaverslun", + "it": "Negozio di mobili", + "ja": "家具店", + "kn": "ಪಿಟೋಪಕರಣಗಳ ಅಂಗಡಿ", + "ko": "가구점", + "lt": "Baldų parduotuvė", + "lv": "Mēbeļu veikals", + "mk": "Салон за мебел", + "nl": "Meubelzaak", + "no": "Møbelforhandler", + "pl": "Sklep meblowy", + "pt-BR": "Loja de Móveis", + "pt": "Loja de mobiliário", + "ro": "Magazin de Mobilă", + "ru": "Мебельный магазин", + "sk": "Obchod s nábytkom", + "sl": "Trgovina s pohištvom", + "sr": "Продавница намештаја", + "sv": "Möbelaffär", + "tr": "Mobilya Mağazası", + "uk": "Меблі", + "vi": "Cửa hàng Nội thất", + "yue": "傢俬舖", + "zh-CN": "家具店", + "zh-HK": "傢俬店", + "zh-TW": "傢具店", + "zh": "家具店" + } + }, + "shop/games": { + "title": { + "C": "Tabletop Game Store", + "ar": "متجر ألعاب الطاولة", + "cs": "deskové hry", + "de": "Brettspielgeschäft", + "el": "Κατάστημα Επιταπέζιων Παιχνιδιών", + "en": "Tabletop Game Store", + "eo": "Tabullud‑vendejo", + "es": "Tienda de juegos de mesa", + "fi": "Lautapeliliike", + "fr": "Magasin de jeux de plateau", + "gl": "Tenda de xogos de mesa", + "he": "חנות משחקי קופסה", + "hu": "Társasjáték-bolt", + "it": "Negozio di giochi da tavolo", + "ja": "ボードゲーム販売店", + "ko": "보드게임 가게", + "mk": "Продавница за столни игри", + "nl": "Bordspellenwinkel", + "no": "Bordspill Butikk", + "pl": "Sklep z grami", + "pt-BR": "Loja de jogos de mesa", + "pt": "Loja de jogos de tabuleiro", + "ru": "Магазин настольных игр", + "sk": "Obchod so stolovými hrami", + "sr": "Продавница друштвених игара", + "sv": "Affär för brädspel", + "tr": "Masa Oyunları Mağazası", + "uk": "Настільні ігри", + "zh-CN": "桌游店", + "zh-TW": "桌遊店" + } + }, + "shop/garden_centre": { + "title": { + "C": "Garden Center", + "af": "Tuinsentrum", + "ar": "مشتل", + "ast": "Xardinería", + "bg": "Градински център", + "bs": "Centar za baštovanstvo", + "ca": "Centre de jardineria", + "cs": "Zahradnictví", + "da": "Havecenter", + "de": "Gartenzentrum", + "el": "Κέντρο Κήπου", + "en-AU": "Garden Centre", + "en-GB": "Garden Centre", + "en": "Garden Center", + "eo": "Ĝarden-vendejo", + "es": "Centro de jardinería / Vivero", + "et": "Aianduskeskus", + "fa": "مرکز خرید گل و گلدان", + "fi": "Puutarhamyymälä", + "fr": "Magasin spécialiste du jardin", + "gl": "Centro de xardinaría", + "he": "חנות גננות", + "hr": "Vrtni centar", + "hu": "Kertészet", + "id": "Toko Tanaman", + "is": "Garðaverslun", + "it": "Vivaio", + "ja": "園芸用品店", + "ko": "원예 용품점", + "lt": "Sodo centras", + "lv": "Dārzkopības veikals", + "mk": "Градинарски центар", + "nl": "Tuincentrum", + "no": "Gartneri", + "pl": "Centrum ogrodnicze", + "pt-BR": "Centro de Jardinagem", + "pt": "Loja de jardinagem", + "ro": "Magazin de Grădinărit", + "ru": "Садовые принадлежности", + "sk": "Záhradné centrum", + "sl": "Vrtni center", + "sr": "Баштенски центар", + "sv": "Trädgårdscenter", + "tr": "Bahçe Düzenleme Mağazası", + "uk": "Садово-парковий центр", + "vi": "Trung tâm Làm vườn", + "yue": "園藝舖", + "zh-CN": "园艺品店", + "zh-HK": "園藝中心", + "zh-TW": "園藝中心", + "zh": "花店" + } + }, + "shop/gas": { + "title": { + "C": "Bottled Gas Shop", + "ar": "محل بيع الغاز المعبأ", + "ast": "Gas embotelláu", + "cs": "Obchod s lahvovým plynem", + "da": "Gasflaskebutik", + "de": "Gasflaschenverkauf", + "el": "Κατάστημα Εμφιαλωμένων Αερίων", + "en-GB": "Bottled Gas Shop", + "en": "Bottled Gas Shop", + "eo": "Gasuja vendejo", + "es": "Tienda de gas embotellado", + "et": "Balloongaasi kauplus", + "fa": "فروشگاه کپسول گاز / پیکنیکی", + "fi": "Kaasupulloliike", + "fr": "Magasin de bouteilles de gaz", + "gl": "Tenda de bombonas de gas", + "he": "חנות גז", + "hu": "Palackozottgáz-bolt", + "is": "Verslun með flöskugas", + "it": "Bombolaio", + "ja": "ガスボンベ店", + "ko": "가스통 가게", + "lv": "Gāzes balonu veikals", + "mk": "Продавница за плински боци", + "nl": "Gasflessenwinkel", + "pl": "Sklep z butlami gazowymi", + "pt-BR": "Distribuidor de Gás", + "pt": "Loja de botijas de gás", + "ru": "Магазин газовых баллонов", + "sl": "Trgovina s plinskimi jeklenkami", + "sv": "Försäljning av gas", + "tr": "Tüpçü", + "uk": "Продаж зрідженого газу", + "vi": "Tiệm Ga", + "zh-CN": "瓶装燃气站", + "zh-HK": "瓶裝石油氣店", + "zh-TW": "瓦斯店" + } + }, + "shop/general": { + "title": { + "C": "General Store", + "ar": "متجر عام", + "cs": "smíšené zboží", + "de": "Gemischtwarenhandlung", + "el": "Κατάστημα", + "en": "General Store", + "eo": "Ĝenerala vendejo", + "es": "Tienda general", + "et": "Kauplus", + "fa": "فروشگاه عمومی", + "fi": "Sekatavarakauppa", + "fr": "Magasin général", + "gl": "Tenda xeral", + "he": "חנות כללית", + "hu": "Vegyesbolt", + "id": "Warung", + "it": "Emporio", + "ja": "よろず屋", + "mk": "Општа продавница", + "nl": "Algemene winkel", + "pl": "Sklep wielobranżowy", + "pt-BR": "Loja geral", + "pt": "Mercearia", + "sv": "Generell affär", + "tr": "Genel Mağaza", + "uk": "Крамниця", + "zh-CN": "杂货店", + "zh-TW": "一般商店" + } + }, + "shop/gift": { + "title": { + "C": "Gift Shop", + "af": "Geskenkwinkel", + "ar": "محل بيع هدايا", + "ast": "Regalos", + "bg": "Магазин за подаръци", + "bn": "উপহারের দোকান", + "bs": "Prodavnica suvenira", + "ca": "Botiga de regals", + "cs": "Dárky, suvenýry", + "da": "Gavebutik", + "de": "Geschenkeladen", + "el": "Κατάστημα Δώρων", + "en-GB": "Gift Shop", + "en": "Gift Shop", + "eo": "Suvenira vendejo", + "es": "Tienda de regalos", + "et": "Kingipood", + "fa": "فروشگاه لوازم کادویی", + "fi": "Lahjamyymälä", + "fr": "Boutique de cadeaux", + "gl": "Tenda de agasallos", + "he": "חנות מתנות", + "hr": "Suvenirnica", + "hu": "Ajándékbolt", + "id": "Toko Hadiah", + "is": "Gjafavörubúð", + "it": "Negozio souvenir", + "ja": "ギフト店", + "kn": "ಉಡುಗೊರೆಯ ಅಂಗಡಿ", + "ko": "선물 가게", + "lt": "Dovanų parduotuvė", + "lv": "Dāvanu veikals", + "mk": "Продавница за подароци", + "nl": "Cadeauwinkel", + "no": "Gavebutikk", + "pl": "Sklep z pamiątkami", + "pt-BR": "Loja de Presentes", + "pt": "Loja de lembranças", + "ro": "Magazin de Cadouri", + "ru": "Магазин сувениров", + "sk": "Darčekový obchod", + "sl": "Prodajalna daril", + "sr": "Продавница поклона", + "sv": "Presentbutik", + "tr": "Hediyelik Eşya Dükkanı", + "uk": "Подарунки", + "vi": "Tiệm Quà tặng", + "yue": "禮品舖", + "zh-CN": "礼品店", + "zh-HK": "禮品店", + "zh-TW": "禮品店", + "zh": "礼品店" + } + }, + "shop/greengrocer": { + "title": { + "C": "Greengrocer", + "af": "Groentewinkel", + "am": "አትክልት መሸጫ ሱቆች", + "ar": "متجر خضروات", + "ast": "Frutería", + "bg": "Плод-зеленчук", + "bs": "Zelenara", + "ca": "Fruiteria", + "cs": "Ovoce a zelenina", + "da": "Grønthandler", + "de": "Obst- und Gemüseladen", + "el": "Οπωροπωλείο", + "en-GB": "Greengrocer", + "en": "Greengrocer", + "eo": "Legom-butiko", + "es": "Verdulería / Frutería", + "et": "Aedviljapood", + "fa": "سبزی و میوه فروشی", + "fi": "Kasviskauppa", + "fr": "Marchand de fruits et légumes", + "gl": "Froitaría", + "he": "ירקן", + "hr": "Voćarna", + "hu": "Zöldséges", + "id": "Toko Buah dan Sayuran", + "is": "Grænmetissali", + "it": "Fruttivendolo", + "ja": "八百屋・果物屋", + "ko": "청과상", + "lt": "Daržovių ir vaisių pardavėjas", + "mk": "Пилјарница", + "ms": "Kedai Menjual Sayur", + "nl": "Groenteboer", + "no": "Grønnsakshandler", + "pl": "Warzywniak", + "pt-BR": "Verdureira ou quitanda", + "pt": "Loja de frutas e verduras", + "ru": "Магазин овощей и фруктов", + "sk": "Predajňa zeleniny", + "sl": "Sadje in zelenjava", + "sr": "Пиљар", + "sv": "Grönsakshandlare", + "tr": "Manav", + "uk": "Овочевий", + "vi": "Tiệm Rau quả", + "yue": "菜檔", + "zh-CN": "果蔬店", + "zh-HK": "菜檔", + "zh-TW": "蔬果店", + "zh": "果蔬店" + } + }, + "shop/hairdresser": { + "title": { + "C": "Hairdresser", + "af": "Haarkapper", + "am": "ፀጉር ቤት", + "ar": "حلاق", + "ast": "Peluquería", + "bg": "Фризьорски салон", + "bs": "Frizer", + "ca": "Perruqueria", + "cs": "Kadeřnictví", + "da": "Frisør", + "de": "Friseur", + "el": "Κομμωτήριο", + "en-GB": "Hairdresser", + "en": "Hairdresser", + "eo": "Frizejo", + "es": "Peluquería", + "et": "Juuksurisalong", + "fa": "آرایشگاه", + "fi": "Parturi-kampaamo", + "fr": "Salon de coiffure", + "gl": "Perrucaría", + "he": "מעצב שיער", + "hr": "Frizerski salon", + "hu": "Fodrász", + "id": "Salon", + "is": "Hárstofa", + "it": "Parrucchiere", + "ja": "理美容店", + "ko": "미용실", + "lt": "Kirpykla", + "lv": "Frizieris", + "mk": "Фризерски салон", + "nl": "Kapper", + "no": "Frisør", + "pl": "Fryzjer", + "pt-BR": "Cabeleireiro", + "pt": "Cabeleireiro(a)", + "ro": "Frizer", + "ru": "Парикмахерская", + "sk": "Kaderníctvo", + "sl": "Frizer", + "sr": "Фризер", + "sv": "Hårfrisör", + "tr": "Kuaför", + "uk": "Перукарня", + "vi": "Tiệm Làm tóc", + "yue": "飛髮舖", + "zh-CN": "理发店", + "zh-HK": "理髮店", + "zh-TW": "理髮店", + "zh": "理发点" + } + }, + "shop/hairdresser_supply": { + "title": { + "C": "Hairdresser Supply Store", + "ar": "متجر مستلزمات حلاقين", + "cs": "Kadeřnické potřeby", + "de": "Friseurbedarf", + "el": "Εξοπλισμός Κομμωτηρίου", + "en": "Hairdresser Supply Store", + "eo": "Frizist-ilara vendejo", + "es": "Tienda de suministros para peluquería", + "fa": "فروشگاه لوازم سلمانی", + "fi": "Hiustarvikemyymälä", + "fr": "Magasin de matériel de coiffure", + "gl": "Tenda de accesorios de salón de peiteado", + "he": "חנות ציוד לספרים", + "hu": "Fodrászkellék-bolt", + "it": "Negozio di prodotti per parrucchiere", + "ja": "理容用品店", + "ko": "미용실 용품 가게", + "mk": "Фризерски набавки", + "nl": "Haarbenodigdhedenwinkel", + "pl": "Sklep z artykułami fryzjerskimi", + "pt-BR": "Loja de suprimentos de cabeleireiro", + "pt": "Loja de acessórios de cabeleireiro", + "sv": "Affär för hårprodukter", + "tr": "Kuaför Malzemeleri Mağazası", + "uk": "Перукарські товари", + "vi": "Tiệm Mỹ phẩm Tóc", + "zh-CN": "美发美容用品店", + "zh-TW": "剪髮器材店" + } + }, + "shop/hardware": { + "title": { + "C": "Hardware Store", + "af": "Hardewarewinkel", + "am": "ሲኒማ ቤት", + "ar": "محل مواد بناء", + "ast": "Ferretería", + "bg": "Железария", + "bs": "Prodavnica željezarije", + "ca": "Ferreteria", + "cs": "Železářství", + "da": "Håndværkerbutik", + "de": "Eisenwarenhandel", + "dv": "ހާރޑްވެއާރ ފިހާރަ", + "el": "Χρωματοπωλείο", + "en-GB": "Hardware Shop", + "en": "Hardware Store", + "eo": "Laborila vendejo", + "es": "Ferretería", + "et": "Rauakauplus", + "fa": "فروشگاه ابزارآلات و یراق", + "fi": "Rautakauppa", + "fr": "Quincaillerie", + "gl": "Ferraxaría", + "he": "חנות אספקה טכנית", + "hr": "Željezarija", + "hu": "Vas-műszaki bolt", + "id": "Toko Perkakas", + "is": "Byggingavöruverslun", + "it": "Ferramenta", + "ja": "金物屋", + "ko": "철물점", + "lt": "Techninės įrangos parduotuvė", + "lv": "Celtniecības veikals", + "mk": "Продавница за алат и опрема", + "nl": "Bouwmarkt", + "no": "Jernvarehandel", + "pl": "Sklep z narzędziami", + "pt-BR": "Loja de Material de Construção", + "pt": "Loja de ferragens", + "ru": "Хозяйственный магазин", + "sk": "Železiarstvo", + "sl": "Železnina", + "so": "Dukaanka Qalabka", + "sr": "Гвожђара", + "sv": "Järnaffär", + "tr": "Donanım Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Ngũ kim", + "yue": "五金舖", + "zh-CN": "五金店", + "zh-HK": "五金店", + "zh-TW": "五金店", + "zh": "五金店" + } + }, + "shop/health_food": { + "title": { + "C": "Health Food Shop", + "ar": "متجر أغذية صحية", + "cs": "Obchod zdravé výživy", + "de": "Reformhaus", + "el": "Είδη Υγιεινής Διατροφής", + "en-GB": "Health Food Shop", + "en": "Health Food Shop", + "eo": "Sanig-manĝaĵa vendejo", + "es": "Tienda de comida saludable", + "et": "Tervisliku toidu kauplus", + "fa": "فروشگاه غذای سلامت‌زا", + "fi": "Terveysravinnemyymälä", + "fr": "Magasin d'alimentation de santé", + "gl": "Tenda de produtos saudábeis", + "he": "חנות מאכלי בריאות", + "hu": "Egészséges élelmiszerek boltja", + "is": "Verslun með heilsuvörur", + "it": "Prodotti per il benessere", + "ja": "健康食品店", + "ko": "건강식품 가게", + "mk": "Продавница за здрава храна", + "nl": "Gezondheidswinkel", + "no": "Helsekostbutikk", + "pl": "Sklep ze zdrową żywnością", + "pt-BR": "Loja de Alimentos Saudáveis", + "pt": "Loja de comida saudável", + "ru": "Магазин здорового питания", + "sk": "Obchod so zdravými potravinami", + "sv": "Hälsokostbutik", + "tr": "Sağlıklı Yiyecek Mağazası", + "uk": "Магазин здорового харчування", + "vi": "Tiệm Thực phẩm Tự nhiên", + "zh-CN": "保健食品店", + "zh-TW": "健康食品店" + } + }, + "shop/hearing_aids": { + "title": { + "C": "Hearing Aids Store", + "ar": "متجر سماعات الأذن الطبية", + "ast": "Audiólogu", + "ca": "Centre d'audició", + "cs": "Obchod s naslouchátky", + "da": "Høreapparatbutik", + "de": "Hörgerätegeschäft", + "el": "Κατάστημα ακουστικών βαρηκοΐας", + "en-GB": "Hearing Aids Shop", + "en": "Hearing Aids Store", + "eo": "Aŭd-helpila vendejo", + "es": "Tienda de audífonos", + "et": "Kuulmisabipood", + "fa": "فروشگاه لوازم کمک شنوایی", + "fi": "Kuuloapumyymälä", + "fr": "Audioprothésiste", + "gl": "Tenda de audífonos", + "he": "חנות מכשירי שמיעה", + "hr": "Prodavaonica slušnih pomagala", + "hu": "Hallókészülékbolt", + "id": "Toko Alat Bantu Dengar", + "is": "Heyrnartækjaverslun", + "it": "Negozio di apparecchi acustici", + "ja": "補聴器店", + "ko": "보청기 가게", + "lt": "Klausos aparatų parduotuvė", + "mk": "Продавница за слушни помагала", + "nl": "Hoorapparatenwinkel", + "no": "Høreapparatutsalg", + "pl": "Sklep z aparatami słuchowymi", + "pt-BR": "Loja de Aparelhos Auditivos", + "pt": "Loja de aparelhos auditivos", + "ru": "Магазин по продаже слуховых аппаратов", + "sk": "Obchod s načúvacími prístrojmi", + "sl": "Trgovina s slušnimi pripomočki", + "sv": "Hörapparater", + "tr": "İşitme Cihazı Mağazası", + "uk": "Слухові апарати", + "vi": "Tiệm Ống nghe", + "zh-CN": "听觉恢复用品店", + "zh-HK": "助聽器店", + "zh-TW": "助聽器店" + } + }, + "shop/herbalist": { + "title": { + "C": "Herbalist", + "ar": "محل بيع الأعشاب الطبية / عطار", + "ast": "Herbolariu", + "ca": "Herbolari", + "cs": "Bylinkářství", + "da": "Helseforretning", + "de": "Kräuterladen", + "el": "Βοτανολόγος", + "en-GB": "Herbalist", + "en": "Herbalist", + "eo": "Herba vendejo", + "es": "Herbolario", + "et": "Ravimtaimekauplus", + "fa": "عطاری", + "fi": "Luontaistuotemyymälä", + "fr": "Herboristerie", + "gl": "Herboristaría", + "he": "חנות צמחי מרפא", + "hu": "Gyógynövénybolt", + "is": "Grasalæknir", + "it": "Erboristeria", + "ja": "薬草店", + "ko": "약초 가게", + "lt": "Žolininkas", + "mk": "Билна аптека", + "nl": "Herbalist", + "no": "Plantelegemiddelbutikk", + "pl": "Sklep zielarski", + "pt-BR": "Ervanária", + "pt": "Ervanária", + "ru": "Магазин трав и лекарственных растений", + "sk": "Bylinkárstvo", + "sl": "Zeliščarstvo", + "sr": "Травар", + "sv": "Medicinalväxter", + "tr": "Şifalı Bitkiler Mağazası", + "uk": "Ботанік", + "vi": "Tiệm Dược thảo", + "zh-CN": "草药店", + "zh-HK": "草藥店", + "zh-TW": "草藥店" + } + }, + "shop/hifi": { + "title": { + "C": "Hifi Store", + "af": "Hoëtrouwinkel", + "ar": "محل بيع أجهزة عالية الدقة", + "ast": "Equipos de música", + "bg": "Магазин за аудиотехника", + "bs": "HiFi prodavnica", + "ca": "Botiga d'alta fidelitat", + "cs": "Hifi elektronika", + "da": "Radioforhandler", + "de": "HiFi-Laden", + "el": "Κατάστημα Hifi", + "en-GB": "Hifi Shop", + "en": "Hifi Store", + "eo": "Aldfidela-sona vendejo", + "es": "Tienda de equipos de sonido", + "et": "Hifi kauplus", + "fa": "فروشگاه لوازم صوتی", + "fi": "Hifimyymälä", + "fr": "Magasin de matériel hi-fi", + "gl": "Tenda de equipamento de son", + "he": "חנות הגברה", + "hr": "Prodavaonica audio opreme", + "hu": "HiFi-szaküzlet", + "id": "Toko Hifi", + "is": "Hljómverslun", + "it": "Negozio Hifi", + "ja": "音響機器店", + "ko": "고급 오디오 가게", + "lt": "Hifi parduotuvė", + "mk": "Продавница за аудиоопрема", + "nl": "Hifi-/Bruingoedwinkel", + "no": "Hifi-butikk", + "pl": "Sklep ze sprzętem hi-fi", + "pt-BR": "Loja de Aparelhos Hi-Fi", + "pt": "Loja de alta fidelidade", + "ru": "Магазин по продаже Hi-Fi", + "sk": "Obchod s ozvučením", + "sl": "Trgovina z avdio opremo", + "sr": "Музичка опрема", + "sv": "HiFi-butik", + "tr": "Hoparlör Mağazası", + "uk": "Аудіо апаратура", + "vi": "Tiệm Thiết bị Âm thanh", + "yue": "音響舖", + "zh-CN": "音响店", + "zh-HK": "音響店", + "zh-TW": "音響店", + "zh": "音响店" + } + }, + "shop/hobby": { + "title": { + "C": "Hobby Shop", + "ar": "متاجر الهوايات", + "cs": "pro volný čas", + "da": "Hobbybutik", + "de": "Bastelgeschäft", + "el": "Κατάστημα Ειδών Χόμπυ", + "en": "Hobby Shop", + "eo": "Hobia vendejo", + "es": "Tienda de pasatiempos", + "fa": "فروشگاه سرگرمی", + "fi": "Harrastuskauppa", + "fr": "Magasin pour hobby (non spécifié)", + "gl": "Tenda de pasatempos", + "he": "חנות תחביבים", + "hu": "Hobbibolt", + "it": "Negozio di hobbystica", + "ja": "ホビーショップ", + "ko": "취미 가게", + "mk": "Хобистичка продавница", + "nl": "Hobbywinkel", + "no": "Hobby Butikk", + "pl": "Sklep hobbystyczny", + "pt-BR": "Loja de passatempo", + "pt": "Loja de modelismo", + "sv": "Hobbyaffär", + "tr": "Hobi Mağazası", + "uk": "Магазин товарів для хобі", + "zh-TW": "嗜好商店" + } + }, + "shop/household_linen": { + "title": { + "C": "Household Linen Shop", + "ar": "محل المفروشات والأغطية المنزلية", + "cs": "Bytový textil", + "de": "Haushaltswäschegeschäft", + "en": "Household Linen Shop", + "eo": "Tuka vendejo", + "es": "Tienda de ropa de hogar", + "gl": "Tenda de roupa de fogar", + "he": "חנות מצעים", + "hu": "Lakástextil-szaküzlet", + "it": "Negozio di biancheria per la casa", + "ja": "家庭用布製品店", + "ko": "가정용 직물 가게", + "mk": "Продавница за постелнини", + "nl": "Winkel voor huishoudelijk linnen", + "pl": "Sklep z pościelą/ręcznikami", + "pt-BR": "Loja de roupa de casa", + "pt": "Loja de têxteis para o lar", + "sv": "Affär för hushållstextilier", + "tr": "Ev Tekstili Mağazası", + "uk": "Магазин білизни", + "zh-CN": "布艺店", + "zh-TW": "家用亞麻布商店" + } + }, + "shop/houseware": { + "title": { + "C": "Houseware Store", + "ar": "متجر بيع الأدوات المنزلية الصغيرة", + "ast": "Menaxe del llar", + "bg": "Домашни потреби", + "ca": "Botiga de la llar", + "cs": "Domácí potřeby", + "da": "Køkkenudstyr", + "de": "Haushaltswarengeschäft", + "el": "Είδη Οικιακής Χρήσης", + "en-GB": "Houseware Store", + "en": "Houseware Store", + "eo": "Mastrum-aparata vendejo", + "es": "Tienda de artículos del hogar", + "et": "Kodutarvete kauplus", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kotitarvikekauppa", + "fr": "Magasin d’articles ménagers", + "gl": "Tenda de artigos do fogar", + "he": "חנות כלי בית", + "hu": "Háztartási bolt", + "is": "Búsáhaldaverslun", + "it": "Casalinghi", + "ja": "家庭用品店", + "ko": "가정용품 가게", + "mk": "Продавница за домот", + "nl": "Huisraadwinkel", + "no": "Isenkrambutikk", + "pl": "Sklep z małymi artykułami gospodarstwa domowego", + "pt-BR": "Loja de Utensílios Domésticos", + "pt": "Loja de artigos para o lar", + "ru": "Магазин товаров для дома", + "sk": "Domáce potreby", + "sr": "Позамантерија", + "sv": "Husgeråd", + "tr": "Ev Eşyaları Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Gia dụng", + "zh-CN": "家居用品店", + "zh-HK": "家庭用品店", + "zh-TW": "家庭用品店" + } + }, + "shop/hunting": { + "title": { + "C": "Hunting Shop", + "ar": "متجر بيع أسلحة ومعدات الصيد", + "ca": "Botiga de caça", + "cs": "Lovecké potřeby", + "da": "Jagtbutik", + "de": "Jagdgeschäft", + "el": "Είδη Κυνηγιού", + "en": "Hunting Shop", + "eo": "Ĉasil-vendejo", + "es": "Tienda de caza", + "et": "Jahipood", + "fa": "فروشگاه لوازم شکار", + "fi": "Metsästyskauppa", + "fr": "Magasin de chasse", + "gl": "Tenda de caza", + "he": "חנות ציד", + "hu": "Vadászati bolt", + "is": "Veiðibúð", + "it": "Negozio di caccia", + "ja": "狩猟用品店", + "ko": "사냥 용품 가게", + "mk": "Ловечка продавница", + "nl": "Jachtwinkel", + "no": "Jaktbutikk", + "pl": "Sklep myśliwski", + "pt-BR": "Loja de Caça", + "pt": "Loja de artigos de caça", + "ru": "Охотничий магазин", + "sk": "Lovecké potreby", + "sr": "Продавница ловачке опреме", + "sv": "Jaktbutik", + "tr": "Avcılık Mağazası", + "uk": "Мисливський магазин", + "vi": "Tiệm Súng Săn", + "zh-CN": "狩猎店", + "zh-TW": "打獵用品店" + } + }, + "shop/interior_decoration": { + "title": { + "C": "Interior Decoration Store", + "ar": "متجر الديكور الداخلي", + "ast": "Decoración d'interiores", + "ca": "Botiga d'Interiorisme", + "cs": "Obchod s bytovými doplňky", + "da": "Brugskunstbutik", + "de": "Innenausstattungsgeschäft", + "el": "Διακοσμητές Εσωτερικών Χώρων", + "en-GB": "Interior Decoration Shop", + "en": "Interior Decoration Store", + "eo": "Ensembla (meblara) vendejo", + "es": "Tienda de decoración de interiores", + "et": "Sisedekoratsioonikauplus", + "fa": "فروشگاه تزئینات داخلی", + "fi": "Sisustusmyymälä", + "fr": "Magasin de décoration d'intérieur", + "gl": "Tenda de decoración de interiores", + "he": "חנות עיצוב פנים", + "hr": "Trgovina unutarnjeg uređenja", + "hu": "Lakberendezési bolt", + "id": "Toko Dekorasi Interior", + "is": "Innanhúshönnunarverslun", + "it": "Negozio di decorazioni per interni", + "ja": "インテリアショップ", + "ko": "실내장식 가게", + "lt": "Interjero dekoravimo parduotuvė", + "mk": "Продавница за внатрешно уредување", + "nl": "Binnenhuisdecoratiewinkel", + "no": "Interiørbutikk", + "pl": "Sklep z dekoracją wnętrz", + "pt-BR": "Loja de Decoração Interior", + "pt": "Loja de decoração de interiores", + "ro": "Magazin de Decorații Interioare", + "ru": "Магазин предметов интерьера", + "sk": "Obchod s bytovými dekoráciami", + "sr": "Унутрашња декорација", + "sv": "Inredningsaffär", + "tr": "İç Dekorasyon Mağazası", + "uk": "Оформлення інтер’єру", + "vi": "Tiệm Trang trí Nội thất", + "zh-CN": "室内装饰店", + "zh-HK": "室內設計店", + "zh-TW": "室內設計店" + } + }, + "shop/jewelry": { + "title": { + "C": "Jewelry Store", + "ar": "محل بيع مجوهرات", + "ca": "Joieria", + "cs": "Klenotnictví", + "da": "Guldsmed", + "de": "Juwelier", + "el": "Κοσμηματοπωλείο", + "en": "Jewelry Store", + "eo": "Juvelista vendejo", + "es": "Joyería", + "fa": "جواهرفروشی", + "fi": "Jalokiviliike", + "fr": "Bijouterie", + "gl": "Xoiaría", + "he": "חנות תכשיטים", + "hr": "Prodavaonica nakita", + "hu": "Ékszerüzlet", + "id": "Toko Perhiasan", + "is": "Skartgripaverslun", + "it": "Negozio di gioielli", + "ja": "宝飾店", + "ko": "귀금속 가게", + "mk": "Златарница", + "nl": "Juwelierszaak", + "no": "Gullsmed", + "pl": "Sklep jubilerski", + "pt-BR": "Joalheria", + "pt": "Ouriversaria", + "ru": "Ювелирный магазин", + "sk": "Klenotníctvo", + "sr": "Продавница накита", + "sv": "Juvelerare", + "tr": "Kuyumcu", + "uk": "Ювелірні прикраси", + "vi": "Tiệm Kim hoàn", + "zh-CN": "珠宝店", + "zh-TW": "珠寶店" + } + }, + "shop/kiosk": { + "title": { + "C": "Kiosk", + "am": "አነስተኛ ሱቅ", + "ar": "كشك", + "ast": "Quioscu", + "ca": "Quiosc", + "cs": "Kiosek", + "da": "Kiosk", + "de": "Kiosk", + "el": "Περίπτερο", + "en": "Kiosk", + "eo": "Gazetbudo", + "es": "Quiosco", + "fa": "دکه", + "fi": "Kioski", + "fr": "Kiosque", + "gl": "Quiosco", + "he": "קיוסק", + "hr": "Kiosk", + "hu": "Trafik (önálló épület)", + "id": "Warung", + "is": "Blaðastandur", + "it": "Chiosco", + "ja": "キオスク", + "ko": "가판대", + "lt": "Kioskas", + "lv": "Kiosks", + "mk": "Киоск", + "nl": "Winkelkiosk", + "no": "Kiosk", + "pl": "Kiosk", + "pt-BR": "Quiosque (comercial)", + "pt": "Quiosque", + "ru": "Магазин в виде киоска", + "sk": "Stánok", + "sl": "Kiosk", + "sq": "Kioskë", + "sr": "Киоск", + "sv": "Kiosk", + "tr": "Büfe", + "uk": "Кіоск", + "vi": "Gian hàng", + "zh-CN": "售货亭", + "zh-TW": "販賣亭" + } + }, + "shop/kitchen": { + "title": { + "C": "Kitchen Design Store", + "ar": "متجر ديكور وتصميم المطابخ", + "ast": "Diseñu de cocines", + "ca": "Botiga de disseny de cuines", + "cs": "Kuchyňské studio", + "da": "Køkkenforhandler", + "de": "Küchenfachmarkt", + "el": "Διακόσμηση Κουζίνας", + "en-GB": "Kitchen Design Shop", + "en": "Kitchen Design Store", + "eo": "Kuirej-mebla vendejo", + "es": "Tienda de diseño de cocinas", + "et": "Köögimööblikauplus", + "fa": "فروشگاه تزئینات آشپزخانه", + "fi": "Keittiöliike", + "fr": "Cuisiniste", + "gl": "Tenda de deseño de cociñas", + "he": "חנות עיצוב המטבח", + "hr": "Trgovina kuhinjskog namještaja", + "hu": "Konyhabútorbolt", + "id": "Toko Desain Interior Dapur", + "is": "Eldhúshönnunarverslun", + "it": "Negozio di cucine", + "ja": "キッチンデザイン店", + "ko": "주방 디자인 가게", + "lt": "Virtuvės dizaino parduotuvė", + "lv": "Virtuves dizaina veikals", + "mk": "Кујни и елементи", + "nl": "Keukenontwerpwinkel", + "no": "Kjøkkenbutikk", + "pl": "Sklep z wyposażeniem i meblami kuchennymi", + "pt-BR": "Loja de Cozinhas", + "pt": "Loja de cozinhas", + "ro": "Magazin de Bucătărie", + "ru": "Магазин кухонь", + "sk": "Kuchynské štúdio", + "sq": "Dyqan për Aredim të Kuzhinës", + "sr": "Кухињски дизајн", + "sv": "Köksinredning", + "tr": "Mutfak Eşyaları Mağazası", + "uk": "Меблі для кухні", + "vi": "Tiệm Thiết kế Phòng bếp", + "zh-CN": "厨房用品店", + "zh-HK": "廚房設計店", + "zh-TW": "廚房設計行" + } + }, + "shop/laundry": { + "title": { + "C": "Laundry", + "af": "Wassery", + "am": "የልብስ ንጽህና መስጫ", + "ar": "محل غسيل ملابس", + "ast": "Llavandería", + "bg": "Пералня", + "bs": "Praonica", + "ca": "Bugaderia", + "cs": "Prádelna", + "da": "Vaskeri", + "de": "Wäscherei", + "el": "Καθαριστήριο", + "en-GB": "Laundry", + "en": "Laundry", + "eo": "Vest-lavejo (akvo)", + "es": "Lavandería", + "et": "Pesumaja", + "fa": "رخت‌شوی‌خانه", + "fi": "Pesula", + "fr": "Laverie", + "gl": "Lavandaría", + "he": "כביסה", + "hr": "Praonica rublja", + "hu": "Mosoda", + "id": "Penatu", + "is": "Þvottur", + "it": "Lavanderia", + "ja": "洗濯屋・ランドリー(非セルフ)", + "kn": "ಧೋಬಿಖಾನೆ", + "ko": "세탁소", + "lt": "Skalbykla", + "lv": "Veļas mazgātuve", + "mk": "Перачница", + "nl": "Wasserette", + "no": "Vaskeri", + "pl": "Pralnia", + "pt-BR": "Lavanderia", + "pt": "Lavandaria", + "ro": "Spălătorie", + "ru": "Прачечная", + "sk": "Čistiareň", + "sl": "Pralnica", + "sq": "Lavanderi", + "sr": "Перионица", + "sv": "Tvättinrättning", + "ta": "சலவையகம்", + "tr": "Çamaşır Yıkama", + "uk": "Пральня", + "vi": "Tiệm Giặt là", + "yue": "洗衣舖", + "zh-CN": "洗衣店", + "zh-HK": "洗衣店", + "zh-TW": "洗衣店", + "zh": "洗衣店" + } + }, + "shop/leather": { + "title": { + "C": "Leather Store", + "ar": "متجر المنتجات الجلدية", + "ast": "Artículos de piel", + "ca": "Botiga de cuirs", + "cs": "Kožené zboží", + "da": "Læderbutik", + "de": "Lederwarengeschäft", + "el": "Κατάστημα με Δερμάτινα", + "en-GB": "Leather Shop", + "en": "Leather Store", + "eo": "Ledaĵa vendejo", + "es": "Talabartería", + "et": "Nahakauplus", + "fa": "فروشگاه چرم", + "fi": "Nahkaliike", + "fr": "Maroquinier", + "gl": "Tenda de peles", + "he": "חנות עור", + "hr": "Trgovina kožnom galanterijom", + "hu": "Bőrdíszműbolt", + "id": "Toko Kulit", + "is": "Leðurvöruverslun", + "it": "Pelletteria", + "ja": "皮革用品店", + "ko": "가죽 가게", + "lt": "Odos dirbinių parduotuvė", + "lv": "Ādas veikals", + "mk": "Кожна галантерија", + "nl": "Lederwinkel", + "no": "Skinnbutikk", + "pl": "Sklep z odzieżą skórzaną", + "pt-BR": "Loja de Couros", + "pt": "Loja de couro", + "ru": "Магазин кожаных изделий", + "sk": "Obchod s kožennými výrobkami", + "sl": "Usnjarna", + "sr": "Продавница коже", + "sv": "Läderaffär", + "ta": "தோல் கடை", + "tr": "Deri Dükkanı", + "uk": "Шкіргалантерея", + "vi": "Tiệm Đồ Da", + "zh-CN": "皮具店", + "zh-HK": "皮革店", + "zh-TW": "皮革店" + } + }, + "shop/lighting": { + "title": { + "C": "Lighting Store", + "ar": "متجر إنارة ولمبات", + "cs": "prodejna osvětlení", + "de": "Leuchten- und Lampengeschäft", + "el": "Κατάστημα Λάμπας", + "en": "Lighting Store", + "eo": "Prilumigad‑aparata vendejo", + "es": "Tienda de iluminación", + "fi": "Valaisinkauppa", + "fr": "Magasin de lampes", + "gl": "Tenda de iluminación", + "he": "חנות תאורה", + "hu": "Világítástechnikai szaküzlet", + "it": "Negozio di illuminazione", + "ja": "照明器具店", + "ko": "조명 가게", + "mk": "Продавница за расветни тела", + "nl": "Verlichtingswinkel", + "pl": "Sklep z oświetleniem", + "pt-BR": "Loja de iluminação", + "pt": "Loja de iluminação", + "ru": "Магазин светильников", + "sk": "Svietidlá", + "sr": "Продавница осветљења", + "sv": "Belysningsbutik", + "tr": "Aydınlatma Mağazası", + "uk": "Магазин освітлення", + "vi": "Tiệm Đèn sáng", + "zh-CN": "灯饰店", + "zh-TW": "燈具店" + } + }, + "shop/locksmith": { + "title": { + "C": "Locksmith", + "ar": "محل بيع أقفال ونسخ مفاتيح", + "ast": "Cerraxería", + "bs": "Bravar", + "ca": "Copisteria de claus", + "cs": "Zámečnictví", + "da": "Låsesmed", + "de": "Schlüsseldienst", + "el": "Κλειδαράς", + "en-GB": "Locksmith", + "en": "Locksmith", + "eo": "Laborejo de seruristo", + "es": "Cerrajería", + "et": "Lukksepp", + "fa": "قفل سازی", + "fi": "Lukkoliike", + "fr": "Serrurier", + "gl": "Cerralleiro", + "he": "מנעולן", + "hr": "Bravar", + "hu": "Lakatos", + "id": "Ahli Kunci", + "is": "Lásasmiður", + "it": "Fabbro", + "ja": "鍵屋(専門店)", + "ko": "열쇠 제조공", + "lt": "Raktininkas", + "lv": "Atslēdznieks", + "mk": "Бравар", + "nl": "Slotenmaker", + "no": "Låsesmed", + "pl": "Dorabianie kluczy / Ślusarz", + "pt-BR": "Serralheiro", + "pt": "Chaveiro", + "ru": "Изготовление ключей", + "sk": "Zámočníctvo", + "sl": "Ključavničar", + "sr": "Бравар", + "sv": "Låssmed", + "tr": "Anahtarcı", + "uk": "Слюсар", + "vi": "Thợ khóa", + "yue": "鎖匠", + "zh-CN": "锁匠铺", + "zh-HK": "鎖匠", + "zh-TW": "鎖匠" + } + }, + "shop/lottery": { + "title": { + "C": "Lottery Shop", + "ar": "متجر اليانصيب", + "ast": "Loteríes", + "bg": "Лотарийни билети", + "ca": "Administració de loteria", + "cs": "Prodejna losů", + "da": "Lotteributik", + "de": "Lottoannahmestelle", + "el": "Κατάστημα λαχείων", + "en-GB": "Lottery Shop", + "en": "Lottery Shop", + "eo": "Loterbileta vendejo", + "es": "Lotería", + "et": "Lotopood", + "fa": "فروشگاه قرعه کشی", + "fi": "Veikkauspiste", + "fr": "Loterie", + "gl": "Tenda de lotaría", + "he": "חנות לוטו", + "hr": "Trgovina igara na sreću", + "hu": "Lottózó", + "id": "Toko Lotre", + "is": "Lottósjoppa", + "it": "Ricevitoria", + "ja": "宝くじ売り場", + "ko": "복권 가게", + "lt": "Loterijų parduotuvė", + "lv": "Loterijas veikals", + "mk": "<преведете со истозначници или сродни поими на „Лотарија“, одделени со запирки>", + "nl": "Loterij", + "no": "Tipping", + "pl": "Kolektura", + "pt-BR": "Casa lotérica", + "pt": "Loja de lotaria", + "ro": "Loterie", + "ru": "Продажа лотерейных билетов", + "sk": "Lotéria", + "sl": "Loterijska prodajalna", + "sr": "Продавница лутрије", + "sv": "Lotteri", + "tr": "Loto Bayi", + "uk": "Лотерейний магазин", + "vi": "Tiệm Xổ số", + "zh-CN": "彩票店", + "zh-HK": "獎券店", + "zh-TW": "彩券行" + } + }, + "shop/mall": { + "title": { + "C": "Mall", + "af": "Winkelsentrum", + "ar": "مركز تسوق تجاري (مول)", + "ast": "Centru comercial", + "bg": "Мол", + "bn": "মল", + "bs": "Tržni centar", + "ca": "Centre comercial", + "cs": "Obchodní centrum", + "da": "Indkøbscenter", + "de": "Einkaufszentrum", + "el": "Εμπορικό Κέντρο", + "en-AU": "Shopping Centre", + "en-GB": "Mall", + "en": "Mall", + "eo": "Vendejaro", + "es": "Centro comercial", + "et": "Kaubanduskeskus", + "fa": "مرکز خرید", + "fi": "Kauppakeskus", + "fr": "Centre commercial", + "gl": "Centro comercial", + "he": "קניון", + "hr": "Trgovački centar", + "hu": "Bevásárlóközpont", + "id": "Mal", + "is": "Verslunarmiðstöð", + "it": "Centro commerciale", + "ja": "ショッピングセンター", + "ko": "쇼핑몰", + "lt": "Prekybos centras", + "lv": "Iepirkšanās centrs", + "mk": "Трговски центар", + "nl": "Winkelcentrum", + "no": "Kjøpesenter", + "pl": "Centrum handlowe", + "pt-BR": "Shopping ou Galeria de lojas", + "pt": "Centro comercial", + "ro": "Mall", + "ru": "Торговый центр", + "sk": "Nákupné centrum", + "sl": "Trgovski center", + "sr": "Тржни центар", + "sv": "Köpcenter", + "ta": "பேரங்காடி", + "tr": "Alışveriş Merkezi", + "uk": "Торгівельний центр", + "vi": "Trung tâm Thương mại", + "yue": "大商場", + "zh-CN": "购物中心", + "zh-HK": "購物中心", + "zh-TW": "購物中心", + "zh": "商场" + } + }, + "shop/massage": { + "title": { + "C": "Massage Shop", + "am": "ማሳጅ ቤት", + "ar": "صالون التدليك", + "ast": "Masaxes", + "ca": "Centre de massatges", + "cs": "Masáže", + "da": "Massagebutik", + "de": "Massagesalon", + "el": "Κατάστημα Μασάζ", + "en-GB": "Massage Shop", + "en": "Massage Shop", + "eo": "Salono de masaĝo", + "es": "Salón de masajes", + "et": "Massaaž", + "fa": "فروشگاه ماساژ", + "fi": "Hierontayritys", + "fr": "Salon de massage", + "gl": "Tenda de masaxes", + "he": "מכון עיסוי", + "hr": "Studio za masažu", + "hu": "Masszázsszalon", + "id": "Panti Pijat", + "is": "Nuddstofa", + "it": "Centro massaggi", + "ja": "マッサージ店", + "ko": "마사지 가게", + "lt": "Masažo parduotuvė", + "lv": "Masāžu veikals", + "mk": "Масажа", + "nl": "Massagewinkel", + "no": "Massasjesenter", + "pl": "Salon masażu", + "pt-BR": "Loja de Massagem", + "pt": "Centro de massagens", + "ro": "Masaj", + "ru": "Массажный салон", + "sk": "Masérstvo", + "sr": "Салон за масажу", + "sv": "Massage", + "tr": "Masaj Salonu", + "uk": "Массаж", + "vi": "Tiệm Xoa bóp", + "zh-CN": "按摩店", + "zh-HK": "按摩店", + "zh-TW": "按摩店" + } + }, + "shop/medical_supply": { + "title": { + "C": "Medical Supply Store", + "ar": "متجر مستلزمات وأجهزة طبية", + "ast": "Tienda d'equipu médicu", + "ca": "Farmàcia", + "cs": "Zdravotnické potřeby", + "da": "Håndkøbsmedicinforhandler", + "de": "Sanitätshaus", + "el": "Κατάστημα Προμήθειας Ιατρικών Ειδών", + "en-GB": "Medical Supply Shop", + "en": "Medical Supply Store", + "eo": "Medicin-aparata vendejo", + "es": "Tienda de aparatos ortopédicos", + "et": "Tervisetoodete kauplus", + "fa": "فروشگاه تجهیزات پزشکی", + "fi": "Lääketarvikemyymälä", + "fr": "Magasin de matériel médical", + "gl": "Tenda de subministracións médicas", + "he": "חנות ציוד רפואי", + "hr": "Trgovina medicinske opreme", + "hu": "Gyógyászati segédeszközök boltja", + "id": "Toko Peralatan Medis", + "is": "Lækningavöruverslun", + "it": "Negozio di forniture mediche", + "ja": "健康・医療器具店", + "ko": "의료 용품 가게", + "lt": "Medicinos reikmenų parduotuvė", + "lv": "Medicīnisko piederumu veikals", + "mk": "Медицинска опрема и залихи", + "nl": "Winkel voor medische hulpmiddelen", + "no": "Medisinsk utstyrsbutikk", + "pl": "Sklep ze sprzętem medycznym", + "pt-BR": "Loja de equipamentos hospitalares", + "pt": "Loja de material médico", + "ro": "Magazin Alimentar Medical", + "ru": "Медицинские принадлежности", + "sk": "Obchod so zdravotníckymi pomôckami", + "sl": "Trgovina z medicinskimi primpomočki", + "sr": "Продавница медицинске опреме", + "sv": "Medicinsk utrustning", + "tr": "Medikal Ürünler Mağazası", + "uk": "Медтехніка", + "vi": "Tiệm Thiết bị Y tế", + "zh-CN": "医疗用品店", + "zh-HK": "醫療器材行", + "zh-TW": "醫療器材行" + } + }, + "shop/military_surplus": { + "title": { + "C": "Military Surplus Store", + "ar": "متجر بيع المعدات والمستلزمات العسكرية المستعملة", + "ca": "Botiga d'excedents militars", + "cs": "armádní výprodej", + "de": "Militärkleidungsabverkauf", + "el": "Κατάστημα Στρατιωτικού Εξοπλισμού", + "en": "Military Surplus Store", + "eo": "Ne-plu-necesa-armea-ekipaĵo vendejo", + "es": "Tienda de excedentes militares", + "fi": "Armeijan ylijäämämyymälä", + "fr": "Surplus militaire", + "gl": "Tenda de accesorios militares", + "he": "חנות עודפי צבא", + "hu": "Használt katonai felszerelések boltja", + "it": "Negozio di eccedenze militari", + "ja": "軍払い下げ品店", + "mk": "Продавница за воени вишоци", + "nl": "Legerdump", + "pl": "Sklep ze sprzętem wojskowym", + "pt-BR": "Loja de excedente militar", + "pt": "Loja de excedentes militares", + "ru": "Армейский магазин", + "sr": "Продавница војних вишкова", + "sv": "Affär med militäröverskott", + "tr": "Askeri Fazlalık Mağazası", + "uk": "Магазин військових товарів", + "zh-CN": "军品店", + "zh-TW": "軍用品店" + } + }, + "shop/mobile_phone": { + "title": { + "C": "Mobile Phone Store", + "af": "Selfoonwinkel", + "ar": "محل بيع هواتف", + "ast": "Telefonía móvil", + "bg": "Магазин за мобилни телефони", + "bn": "মোবাইল ফোন-এর দোকান", + "bs": "Prodavnica mobilnih uređaja", + "ca": "Botiga de telefonia mòbil", + "cs": "Obchod s mobily", + "da": "Mobiltelefonforhandler", + "de": "Mobiltelefonladen", + "dv": "މޯބައިލް ފޯނު ވިއްކާ ފިހާރަ", + "el": "Κατάστημα Κινητής Τηλεφωνίας", + "en-GB": "Mobile Phone Shop", + "en": "Mobile Phone Store", + "eo": "Poŝtelefona vendejo", + "es": "Tienda de telefonía móvil", + "et": "Mobiilipood", + "fa": "فروشگاه تلفن همراه", + "fi": "Matkapuhelinmyymälä", + "fr": "Magasin de téléphonie mobile", + "gl": "Tenda de telefonía móbil", + "he": "חנות טלפונים ניידים", + "hr": "Prodavaonica mobilnih telefona", + "hu": "Mobiltelefon-szaküzlet", + "id": "Toko Handphone", + "is": "Farsímaverslun", + "it": "Negozio di telefonia mobile", + "ja": "携帯電話店", + "ko": "휴대폰 가게", + "lt": "Mobiliųjų telefonų parduotuvė", + "lv": "Mobilo telefonu veikals", + "mk": "Мобилара", + "ms": "Kedai Telefon Bimbit", + "nl": "Mobieletelefoonwinkel", + "no": "Mobiltelefonforhandler", + "pl": "Sklep z telefonami komórkowymi", + "pt-BR": "Loja de Celulares", + "pt": "Loja de telemóveis", + "ro": "Magazin de Telefoane Mobile", + "ru": "Магазин мобильных телефонов и аксессуаров", + "sk": "Obchod s mobilnými telefónmi", + "sl": "Trgovina z mobilnimi telefoni", + "so": "Dukaanka Taleefoonka Gacanta", + "sr": "Продавница мобилних телефона", + "sv": "Mobiltelefoner", + "tr": "Cep Telefonu Mağazası", + "uk": "Мобільні телефони", + "vi": "Tiệm Điện thoại Di động", + "yue": "電話舖", + "zh-CN": "手机店", + "zh-HK": "流動電話店", + "zh-TW": "行動電話店", + "zh": "手机店" + } + }, + "shop/model": { + "title": { + "C": "Model Shop", + "ar": "متجر بيع النماذج المصغرة للأشياء", + "cs": "Modelářský obchod", + "de": "Modellbaugeschäft", + "el": "Κατάστημα Μοντελισμού", + "en": "Model Shop", + "eo": "Vendejo de modelfarado", + "es": "Tienda de modelismo", + "fr": "Magasin de modélisme", + "gl": "Tenda de modelismo", + "he": "חנות דגמים", + "hu": "Modellező bolt", + "it": "Negozio di modellistica", + "ja": "模型店", + "ko": "모형 가게", + "mk": "Моделарска продавница", + "nl": "Modelwinkel", + "pl": "Sklep modelarski", + "pt-BR": "Loja de modelos", + "pt": "Loja de modelismo", + "ru": "Магазин для моделирования", + "sk": "Modelárstvo", + "sv": "Affär för byggmodeller", + "tr": "Manken Dükkanı", + "uk": "Магазин масштабних моделей", + "vi": "Tiệm Mô hình", + "zh-CN": "模型店", + "zh-TW": "模型店" + } + }, + "shop/money_lender": { + "title": { + "C": "Money Lender", + "ar": "مُقرض المال", + "ast": "Prestamista", + "ca": "Prestamista", + "cs": "Nebankovní půjčky", + "da": "Pengeudlåner", + "de": "Geldverleih", + "el": "Τοκογλύφος", + "en-GB": "Money Lender", + "en": "Money Lender", + "eo": "Mon-pruntejo", + "es": "Prestamista de dinero", + "et": "Rahalaenutaja", + "fa": "وام دهنده پول", + "fi": "Rahanlainausliike", + "fr": "Prêteur", + "gl": "Prestamista de cartos", + "he": "מלווה בריבית", + "hu": "Pénzkölcsönző", + "id": "Peminjaman Uang", + "is": "Peningaútlán", + "it": "Agenzia Prestito", + "ja": "消費者金融", + "ko": "대출", + "lt": "Pinigų skolintojas", + "lv": "Naudas Aizdevējs", + "mk": "Зајмување пари", + "ms": "Ceti", + "nl": "Particuliere Gelduitleendienst", + "no": "Pengeutlåner", + "pl": "Firma pożyczkowa", + "pt-BR": "Financiadora", + "pt": "Loja de empréstimos", + "ro": "Creditor de Bani", + "ru": "Ростовщик", + "sk": "Požičovňa peňazí", + "sl": "Posojilnica", + "sr": "Зајмодавац", + "sv": "Långivare", + "tr": "Tefeci", + "uk": "Кредитна спілка", + "vi": "Chỗ Mượn Tiền", + "zh-CN": "放贷人", + "zh-HK": "放債人", + "zh-TW": "地下錢莊" + } + }, + "shop/motorcycle": { + "title": { + "C": "Motorcycle Dealership", + "af": "Motorfietshandelaar", + "ar": "بائع دراجات نارية", + "ast": "Venta de motos", + "bg": "Магазин за мотоциклети", + "bs": "Salon motocikala", + "ca": "Botiga de motocicletes", + "cs": "Obchod s motocykly", + "da": "Motorcykelforhandler", + "de": "Motorradhändler", + "el": "Εμπόριο Μοτοσυκλετών", + "en-GB": "Motorcycle Dealership", + "en": "Motorcycle Dealership", + "eo": "Motorcikla vendejo", + "es": "Concesionario de motos", + "et": "Mootorrattapood", + "fa": "نمایندگی موتور سیکلت", + "fi": "Moottoripyöräliike", + "fr": "Vendeur de motos", + "gl": "Concesionario de motocicletas", + "he": "חנות אופנועים", + "hr": "Prodavaonica motocikala", + "hu": "Motorkerékpár-kereskedés", + "id": "Dealer Motor", + "is": "Mótorhjólaverslun", + "it": "Concessionario di motociclette", + "ja": "バイク店", + "ko": "오토바이 대리점", + "lt": "Motociklų prekybos atstovybė", + "lv": "Motociklu veikals", + "mk": "Салон за мотоцикли", + "nl": "Motorwinkel", + "no": "Motorsykkelforhandler", + "pl": "Sklep motocyklowy", + "pt-BR": "Revenda de Motos", + "pt": "Loja de motas", + "ro": "Magazin de Motociclete", + "ru": "Магазин мотоциклов", + "sk": "Predajňa motocyklov", + "sl": "Trgovina z motorji", + "sr": "Продавница мотоцикала", + "sv": "Återförsäljare av motorcyklar", + "tr": "Motosiklet Satış Mağazası", + "uk": "Салон мотоциклів", + "vi": "Tiệm Xe máy", + "yue": "電單車行", + "zh-CN": "摩托车店", + "zh-HK": "電單車店", + "zh-TW": "機車行", + "zh": "摩托车行" + } + }, + "shop/motorcycle_repair": { + "title": { + "C": "Motorcycle Repair Shop", + "ar": "ورشة تصليح الدراجات النارية", + "ca": "Taller de reparació de motos", + "cs": "Opravna motocyklů", + "da": "Motorcykelværksted", + "de": "Motorradwerkstatt", + "el": "Συνεργείο Μοτοσυκλετών", + "en-GB": "Motorcycle Repair Shop", + "en": "Motorcycle Repair Shop", + "eo": "Motorcikl-riparejo", + "es": "Taller de reparación de motos", + "et": "Mootorratta remondikoda", + "fa": "تعمیرگاه موتورسیکلت", + "fi": "Moottoripyöräkorjaamo", + "fr": "Réparateur de motos", + "gl": "Taller de arranxo de motocicletas", + "he": "מוסך אופנועים", + "hr": "Ormarići za bicikle", + "hu": "Motorkerékpáralkatrész-bolt", + "is": "Mótorhjólaviðgerðaverslun", + "it": "Officina riparazione motocicli", + "ja": "バイク修理店", + "ko": "오토바이 수리점", + "lt": "Motociklų taisykla", + "lv": "Motociklu remonta darbnīca", + "mk": "Поправка на мотоцикли", + "nl": "Motorreparatie", + "no": "Motorsykkelverksted", + "pl": "Warsztat motocyklowy", + "pt-BR": "Oficina de motocicletas", + "pt": "Oficina de motas", + "ru": "Мотомастерская", + "sk": "Oprava motocyklov", + "sr": "Поправка мотоцикала", + "sv": "Motorcykelverkstad", + "tr": "Motosiklet Tamir Atölyesi", + "uk": "Ремонт мотоциклів", + "vi": "Tiệm Sửa Xe máy", + "zh-CN": "摩托车修理店", + "zh-TW": "摩托車維修店" + } + }, + "shop/music": { + "title": { + "C": "Music Store", + "af": "Musiekwinkel", + "ar": "متجر بيع موسيقى", + "ast": "Tienda de música", + "bg": "Музикален магазин", + "bn": "সঙ্গীতের দোকান", + "bs": "Muzička prodavnica", + "ca": "Botiga de música", + "cs": "Obchod s hudbou", + "da": "Musikbutik", + "de": "Musikgeschäft", + "el": "Κατάστημα Μουσικής", + "en-GB": "Music Shop", + "en": "Music Store", + "eo": "Muzika vendejo", + "es": "Tienda de música", + "et": "Muusikapood", + "fa": "فروشگاه موسیقی", + "fi": "Musiikkiliike", + "fr": "Magasin de musique", + "gl": "Tenda de música", + "he": "חנות מוזיקה", + "hr": "Prodavaonica glazbene opreme", + "hu": "Hanglemezbolt", + "id": "Toko Musik", + "is": "Tónlistarbúð", + "it": "Negozio di musica", + "ja": "CD/レコード店", + "ko": "음반 가게", + "lt": "Muzikos parduotuvė", + "lv": "Mūzikas veikals", + "mk": "Продавница за музика", + "ms": "Kedai Muzik", + "nl": "Muziekwinkel", + "no": "Musikkforretning", + "pl": "Sklep muzyczny", + "pt-BR": "Loja de Discos Musicais", + "pt": "Loja de música", + "ro": "Magazin de Muzică", + "ru": "Музыкальный магазин", + "sk": "Obchod s hudbou", + "sl": "Trgovina z glasbo", + "sr": "Продавница музике", + "sv": "Musikaffär", + "tr": "Müzik Mağazası", + "uk": "Музичний магазин", + "vi": "Tiệm Âm nhạc", + "yue": "唱片舖", + "zh-CN": "音乐店", + "zh-HK": "唱片店", + "zh-TW": "音樂店", + "zh": "音乐店" + } + }, + "shop/musical_instrument": { + "title": { + "C": "Musical Instrument Store", + "ar": "متجر آلات موسيقية", + "ast": "Instrumentos musicales", + "ca": "Botiga d'instruments musicals", + "cs": "Obchod s hudebními nástroji", + "da": "Musikinstrumentbutik", + "de": "Musikinstrumentegeschäft", + "el": "Κατάστημα μουσικών οργάνων", + "en-GB": "Musical Instrument Shop", + "en": "Musical Instrument Store", + "eo": "Muzikinstrumenta vendejo", + "es": "Tienda de instrumentos musicales", + "et": "Muusikainstrumentide kauplus", + "fa": "فروشگاه سازهای موسیقی", + "fi": "Instrumenttimyymälä", + "fr": "Magasin d'instruments de musique", + "gl": "Tenda de instrumentos musicais", + "he": "חנות כלי נגינה", + "hr": "Trgovina glazbenih instrumenata", + "hu": "Hangszerbolt", + "id": "Toko Alat Musik", + "is": "Hljóðfæraverslun", + "it": "Negozio di strumenti musicali", + "ja": "楽器店", + "ko": "악기 가게", + "lt": "Muzikos instrumentų parduotuvė", + "lv": "Mūzikas instrumentu veikals", + "mk": "Продавница за музички инструменти", + "ms": "Kedai Alatan Muzik", + "nl": "Muziekinstrumentenwinkel", + "no": "Musikkinstrumentbutikk", + "pl": "Sklep z instrumentami muzycznymi", + "pt-BR": "Loja de Instrumentos Musicais", + "pt": "Loja de instrumentos musicais", + "ro": "Magazin de Instrumente Muzicale", + "ru": "Магазин музыкальных инструментов", + "sk": "Obchod s hudobnými nástrojmi", + "sl": "Trgovina z glasbenimi inštrumenti", + "sr": "Продавница музичких инструмената", + "sv": "Musikinstrument", + "tr": "Müzik Aletleri Mağazası", + "uk": "Магазин музичних інструментів", + "vi": "Tiệm Nhạc cụ", + "zh-CN": "乐器店", + "zh-HK": "樂器店", + "zh-TW": "音樂樂器行" + } + }, + "shop/newsagent": { + "title": { + "C": "Newspaper/Magazine Shop", + "ar": "محل بيع الجرائد", + "ast": "Prensa y revistes", + "ca": "Botiga de diaris i revistes", + "cs": "Trafika", + "da": "Avis/Bladforhandler", + "de": "Zeitschriftenhandel", + "el": "Πρακτορείο τύπου", + "en-GB": "Newspaper/Magazine Shop", + "en": "Newspaper/Magazine Shop", + "eo": "Gazeta vendejo", + "es": "Puesto de periódicos / revistas", + "et": "Ajakirjapood", + "fa": "فروشگاه روزنامه/مجله", + "fi": "Lehtikoju", + "fr": "Magasin de journaux", + "gl": "Tenda de xornais/revistas", + "he": "חנות עיתונים", + "hr": "Trgovina za novine i magazine", + "hu": "Újságárus", + "id": "Toko Majalah/Koran", + "is": "Dagblaða/tímaritasala", + "it": "Edicola", + "ja": "新聞・雑誌店", + "ko": "신문/잡지 가게", + "lt": "Laikraščių/žurnalų parduotuvė", + "lv": "Avīžu / Žurnālu veikals", + "mk": "Весникарница", + "nl": "Kranten-/Tijdschriftwinkel", + "no": "Aviskiosk", + "pl": "Sklep z prasą", + "pt-BR": "Banca de Revistas", + "pt": "Loja de jornais / revistas", + "ro": "Magazin de Ziare", + "ru": "Газеты/пресса/журналы", + "sk": "Obchod s novinami/časopismi", + "sl": "Trgovina s časopisi/revijami", + "sr": "Дневне новине/часописи", + "sv": "Tidningsaffär", + "tr": "Gazete Bayii", + "uk": "Преса", + "vi": "Tiệm Báo", + "yue": "報刊舖", + "zh-CN": "报摊", + "zh-HK": "報紙/雜誌店", + "zh-TW": "報紙/雜誌攤" + } + }, + "shop/nutrition_supplements": { + "title": { + "C": "Nutrition Supplements Store", + "ar": "متجر المكملات الغذائية", + "ast": "Tienda de suplementos nutritivos", + "ca": "Botiga de suplements nutricionals", + "cs": "Obchod s potravními doplňky", + "da": "Helsekostbutik", + "de": "Nahrungsergänzungsmittelgeschäft", + "el": "Κατάστημα με Συμπληρώματα Διατροφής", + "en-GB": "Nutrition Supplements Shop", + "en": "Nutrition Supplements Store", + "eo": "Diet-suplementa vendejo", + "es": "Tienda de suplementos nutricionales", + "et": "Toidulisandite kauplus", + "fa": "فروشگاه تغذیه مکمل", + "fi": "Lisäravinnemyymälä", + "fr": "Boutique de compléments alimentaires", + "gl": "Tenda de suplementos nutricionais", + "he": "חנות ויטמינים", + "hu": "Étrendkiegészítő-bolt", + "is": "Verslun með fæðubótarefni", + "it": "Negozio di integratori alimentari", + "ja": "栄養サプリ販売店", + "ko": "영양 보조 식품 가게", + "mk": "Продавница за прехранбени додатоци", + "nl": "Voedingssupplementenwinkel", + "pl": "Sklep z suplementami diety", + "pt-BR": "Loja de Suplementos Nutricionais", + "pt": "Loja de suplementos alimentares", + "ro": "Magazin de Suplimente Nutritive", + "ru": "Магазин пищевых добавок", + "sk": "Obchod s výživovými doplnkami", + "sl": "Trgovina s prehrambenimi dodatki", + "sr": "Продавница додатака исхрани", + "sv": "Hälsokost", + "tr": "Gıda Takviye Ürünleri Mağazası", + "uk": "Магазин харчових добавок", + "vi": "Tiệm Thuốc bổ", + "zh-CN": "保健品店", + "zh-HK": "營養補充品店", + "zh-TW": "營養補充品店" + } + }, + "shop/optician": { + "title": { + "C": "Optician", + "af": "Oogarts", + "am": "መነፅር ቤት", + "ar": "متجر نظارات", + "ast": "Óptica", + "bg": "Оптика", + "bn": "চক্ষুরোগের চিকিত্সক", + "bs": "Optičar", + "ca": "Òptica", + "cs": "Optika", + "da": "Optiker", + "de": "Optiker", + "el": "Οπτικός", + "en-GB": "Optician", + "en": "Optician", + "eo": "Optikbutiko", + "es": "Óptica", + "et": "Optikapood", + "fa": "عینک فروشی", + "fi": "Optikko", + "fr": "Opticien", + "gl": "Óptica", + "he": "אופטיקאי", + "hr": "Optičar", + "hu": "Látszerész", + "id": "Optik", + "is": "Gleraugnaverslun", + "it": "Ottico", + "ja": "メガネ店", + "kn": "ನೇತ್ರ ತಜ್ಞ", + "ko": "안경점", + "lt": "Optika", + "lv": "Optometrists", + "mk": "Оптичар", + "nl": "Opticien", + "no": "Optiker", + "pl": "Optyk", + "pt-BR": "Ótica", + "pt": "Ótica", + "ro": "Optician", + "ru": "Оптика", + "sk": "Optika", + "sl": "Optik", + "sq": "Okulist", + "sr": "Оптичар", + "sv": "Optiker", + "tr": "Gözlükçü", + "uk": "Оптика", + "vi": "Tiệm Kính mắt", + "yue": "眼鏡鋪", + "zh-CN": "眼镜店", + "zh-HK": "眼鏡店", + "zh-TW": "眼鏡行", + "zh": "眼镜店" + } + }, + "shop/outdoor": { + "title": { + "C": "Outdoors Store", + "ar": "متجر معدات الرحلات والتسلق والتخييم", + "ast": "Equipamientu d'aire llibre", + "ca": "Botiga per a activitats a l'aire lliure", + "cs": "Outdoorové zboží", + "da": "Friluftsudstyrsbutik", + "de": "Outdoorgeschäft", + "el": "Κατάστημα με Είδη Εξοπλισμού Υπαίθρου", + "en-GB": "Outdoors Shop", + "en": "Outdoors Store", + "eo": "Vojaĝila vendejo", + "es": "Tienda de actividades al aire libre", + "et": "Matkatarvete kauplus", + "fa": "فروشگاه لوازم کوهنوردی و کمپینگ", + "fi": "Ulkoilmamyymälä", + "fr": "Magasin de matériel de sports de plein air", + "gl": "Tenda de actividades ó ar libre", + "he": "חנות רהיטי גינה", + "hr": "Trgovina sa opremom za kampiranje", + "hu": "Túrafelszerelés-bolt", + "id": "Toko Perlengkapan Outdoor", + "is": "Útivistarbúð", + "it": "Negozio per sport all'aria aperta", + "ja": "アウトドアショップ", + "ko": "아웃도어 가게", + "lt": "Laisvalaikio parduotuvė", + "mk": "Продавница за рекреативна опрема", + "nl": "Buitensportwinkel", + "no": "Villmarksbutikk", + "pl": "Sklep turystyczny", + "pt-BR": "Loja de Esportes de Aventura", + "pt": "Loja de artigos para atividades ao ar livre", + "ro": "Magazin în Aer Liber", + "ru": "Магазин снаряжения для активного отдыха", + "sk": "Outdoorový obchod", + "sl": "Trgovina za dejavosti na prostem", + "sr": "Продавница планинарске опреме", + "sv": "Friluftsaffär", + "tr": "Kamp Malzemeleri Mağazası", + "uk": "Активний відпочинок", + "vi": "Tiệm Thể thao Ngoài trời", + "zh-CN": "户外用品店", + "zh-HK": "戶外用品店", + "zh-TW": "戶外用品店" + } + }, + "shop/outpost": { + "title": { + "C": "Online Retailer Outpost", + "ar": "محل استلام شحنات مطلوبة من الانترنت", + "cs": "výdejna e-shopu", + "de": "Abholstelle eines Onlinehändlers", + "en": "Online Retailer Outpost", + "eo": "Ricevejo de aĉetaĵoj (per interreto)", + "es": "Puesto de venta minorista online", + "fi": "Verkkokaupan noutopiste", + "fr": "Magasin de produits vendus en ligne", + "gl": "Posto de venda minorista online", + "he": "נקודת הפצה של שירות מקוון", + "hu": "Internetes bolt", + "it": "Centro ritiro acquisti online", + "ja": "商品受け取り店", + "ko": "전자상거래 사업자 영업소", + "mk": "Испостава на семрежна продавница", + "nl": "Voorpost van een online retailer", + "pl": "Placówka sklepu internetowego", + "pt-BR": "Posto de retalhista online", + "pt": "Posto de retalhista online", + "ru": "Пункт выдачи интернет-магазина", + "sv": "Utlämning av online-beställningar", + "tr": "Çevrimiçi Perakende Satış Noktası", + "uk": "Пункт видачі онлайн магазина", + "zh-CN": "电商自提点", + "zh-TW": "線上零售商提貨處" + } + }, + "shop/paint": { + "title": { + "C": "Paint Store", + "ar": "متجر دهانات وطلاء", + "ast": "Tienda de pintures", + "ca": "Botiga de pintura", + "cs": "Barvy a laky", + "da": "Farvehandel", + "de": "Farbengeschäft", + "el": "Χρωματοπωλείο", + "en-GB": "Paint Shop", + "en": "Paint Store", + "eo": "Farba vendejo", + "es": "Tienda de pinturas", + "et": "Värvipood", + "fa": "فروشگاه رنگ", + "fi": "Maalikauppa", + "fr": "Magasin de peintures", + "gl": "Tenda de pinturas", + "he": "חנות צבע", + "hr": "Prodavaonica boja", + "hu": "Festékbolt", + "id": "Toko Cat", + "is": "Málningarvöruverslun", + "it": "Negozio di vernici", + "ja": "塗料店", + "ko": "페인트 가게", + "lt": "Dažų parduotuvė", + "lv": "Krāsu veikals", + "mk": "Бои и лакови", + "ms": "Kedai Cat", + "nl": "Verfwinkel", + "no": "Malingsbutikk", + "pl": "Sklep z farbami", + "pt-BR": "Loja de Tintas", + "pt": "Loja de tintas", + "ro": "Magazin de Pictură", + "ru": "Магазин красочных изделий", + "sk": "Obchod s nátermi", + "sl": "Trgovina z barvami", + "sr": "Фарбара", + "sv": "Färgbutik", + "tr": "Boyacı", + "uk": "Магазин фарб", + "vi": "Tiệm Sơn", + "zh-CN": "油漆店", + "zh-HK": "油漆店", + "zh-TW": "油漆行" + } + }, + "shop/party": { + "title": { + "C": "Party Supply Store", + "ar": "متجر مستلزمات حفلات", + "cs": "párty zboží", + "de": "Partyzubehör", + "el": "Κατάστημα Προμηθειών για Πάρτυ", + "en": "Party Supply Store", + "eo": "Vendejo de okazaĵaj provizoj", + "es": "Tienda de artículos para fiestas", + "fa": "فروشگاه لوازم مهمانی", + "fr": "Magasin de matériel de fête", + "gl": "Tenda de artigos para festas", + "he": "חנות ציוד למסיבות", + "hu": "Partykellékbolt", + "it": "Negozio di articoli per le feste", + "ja": "パーティ用品店", + "ko": "파티 용품 가게", + "mk": "Набавки за забавни настани", + "nl": "Feestwinkel", + "pl": "Sklep z artykułami imprezowymi", + "pt-BR": "Loja de materiais para festas", + "pt": "Loja de acessórios para festas", + "ru": "Магазин для вечеринок", + "sv": "Partybutik", + "tr": "Parti Malzemeleri Mağazası", + "uk": "Товари до свят", + "vi": "Tiệm Phụ kiện Trang trí Tiệc", + "zh-CN": "派对节日用品", + "zh-TW": "宴會器材店" + } + }, + "shop/pastry": { + "title": { + "C": "Pastry Shop", + "ar": "متجر حلويات", + "ast": "Pastelería", + "ca": "Pastisseria", + "cs": "Cukrárna", + "da": "Konditori", + "de": "Konditorei", + "el": "Ζαχαροπλαστείο", + "en-GB": "Pastry Shop", + "en": "Pastry Shop", + "eo": "Kukejo", + "es": "Pastelería", + "et": "Kondiiter", + "fa": "شیرینی فروشی", + "fi": "Leipomokonditoria", + "fr": "Pâtisserie", + "gl": "Confeitaría ou pastelaría", + "he": "בית מאפה", + "hr": "Slastičarna", + "hu": "Cukrászda", + "is": "Kökubúð", + "it": "Pasticceria", + "ja": "焼菓子(ペイストリー)店", + "ko": "과자 가게", + "lt": "Kepykla", + "mk": "Бели печива", + "nl": "Patisserie", + "no": "Bakeri", + "pl": "Cukiernia", + "pt-BR": "Confeitaria", + "pt": "Pastelaria", + "ru": "Пироги", + "sl": "Slaščičarna", + "sr": "Посластичарница", + "sv": "Konditori", + "tr": "Pastane", + "uk": "Кондитерські вироби", + "vi": "Tiệm Bánh ngọt", + "zh-CN": "糕饼店", + "zh-HK": "榚點店", + "zh-TW": "糕餅店" + } + }, + "shop/pawnbroker": { + "title": { + "C": "Pawn Shop", + "ar": "متجر رهن", + "ast": "Casa d'empeños", + "ca": "Botiga d'empenyoraments", + "cs": "Zastavárna", + "da": "Panteudlåner", + "de": "Pfandleihe", + "el": "Ενεχυροδανειστήριο", + "en-GB": "Pawn Shop", + "en": "Pawn Shop", + "eo": "Mon-pruntejo (kontraŭ garantiaĵo)", + "es": "Casa de empeño", + "et": "Pandimaja", + "fi": "Panttilainaamo", + "fr": "Prêteur sur gages", + "gl": "Casa de empeños", + "he": "חנות יד שניה", + "hr": "Zalagaonica", + "hu": "Zálogház", + "id": "Pegadaian", + "is": "Veðlánari", + "it": "Banco dei pegni", + "ja": "質店", + "ko": "전당포", + "lt": "Lombardas", + "lv": "Lombards", + "mk": "Заложилница", + "nl": "Pandjeshuis", + "no": "Pantelåner", + "pl": "Lombard", + "pt-BR": "Loja de Penhoras", + "pt": "Casa de penhoras", + "ru": "Ломбард", + "sk": "Záložňa", + "sl": "Zastavljalnica", + "sr": "Залагаоница", + "sv": "Pantbank", + "tr": "İkinciel Alım Satım Mağazası", + "uk": "Ломбард", + "vi": "Tiệm Cầm đồ", + "zh-CN": "典当商铺", + "zh-HK": "當舖", + "zh-TW": "汽機車借款" + } + }, + "shop/perfumery": { + "title": { + "C": "Perfume Store", + "ar": "متجر عطور", + "ast": "Perfumería", + "ca": "Botiga de perfums", + "cs": "Parfumerie", + "da": "Parfumebutik", + "de": "Parfümerie", + "el": "Κατάστημα Αρωμάτων", + "en-GB": "Perfume Shop", + "en": "Perfume Store", + "eo": "Parfuma vendejo", + "es": "Perfumería", + "et": "Parfüümikauplus", + "fa": "عطر فروشی", + "fi": "Hajusteliike", + "fr": "Parfumerie", + "gl": "Perfumaría", + "he": "חנות בשמים", + "hr": "Parfimerija", + "hu": "Parfüméria", + "is": "Ilmvatnsbúð", + "it": "Profumeria", + "ja": "香水店", + "ko": "향수 가게", + "lt": "Parfumerijos parduotuvė", + "mk": "Парфимерија", + "nl": "Parfumwinkel", + "no": "Parfymeri", + "pl": "Perfumeria", + "pt-BR": "Perfumaria", + "pt": "Perfumaria", + "ro": "Magazin de Parfum", + "ru": "Парфюмерия", + "sk": "Parfuméria", + "sl": "Parfumerija", + "sr": "Парфемџиница", + "sv": "Parfymbutik", + "tr": "Parfümeri", + "uk": "Парфуми", + "vi": "Tiệm Nước hoa", + "zh-CN": "香水店", + "zh-HK": "香水店", + "zh-TW": "香水店" + } + }, + "shop/pet": { + "title": { + "C": "Pet Store", + "af": "Troeteldierwinkel", + "ar": "محل بيع حيوانات أليفة", + "ast": "Tienda de mascotes", + "bg": "Зоо магазин", + "bs": "Prodavnica kućnih ljubnimaca", + "ca": "Botiga d'animals", + "cs": "Chovatelské potřeby", + "da": "Kæledyrsbutik", + "de": "Tierhandlung", + "el": "Κατάστημα Κατοικίδιων", + "en-GB": "Pet Shop", + "en": "Pet Store", + "eo": "Hejmbesta vendejo", + "es": "Tienda de mascotas", + "et": "Lemmikloomapood", + "fa": "فروشگاه حیوانات خانگی", + "fi": "Lemmikkiliike", + "fr": "Animalerie", + "gl": "Tenda de mascotas", + "he": "חנות לחיות מחמד", + "hr": "Prodavaonica kućnim ljubimcima", + "hu": "Kisállatkereskedés", + "id": "Toko Peliharaan", + "is": "Dýrabúð", + "it": "Negozio per animali", + "ja": "ペットショップ", + "ko": "애완동물 가게", + "lt": "Augintinių parduotuvė", + "lv": "Dzīvnieku veikals", + "mk": "Продавница за домашни миленици", + "nl": "Dierenwinkel", + "no": "Dyrebutikk", + "pl": "Sklep zoologiczny", + "pt-BR": "Loja de animais ou artigos para animais", + "pt": "Loja de animais de estimação", + "ro": "Magazin de Animale", + "ru": "Зоомагазин", + "sk": "Chovprodukt", + "sl": "Trgovina za domače živali", + "sr": "Продавница кућних љубимаца", + "sv": "Djurbutik", + "tr": "Evcil Hayvan Mağazası", + "uk": "Товари для тварин", + "vi": "Tiệm Vật nuôi", + "yue": "寵物舖", + "zh-CN": "宠物店", + "zh-HK": "寵物舖", + "zh-TW": "寵物店", + "zh": "宠物店" + } + }, + "shop/pet_grooming": { + "title": { + "C": "Pet Grooming Store", + "ar": "متجر العناية بالحيوانات الأليفة", + "cs": "zvířecí salon", + "de": "Tierpflegedienst, Tierfriseur (meist Hundesalon)", + "el": "Κατάστημα Καλλωπισμού Κατοικίδιων", + "en-GB": "Pet Grooming Shop", + "en": "Pet Grooming Store", + "eo": "Hejmbesta beligejo", + "es": "Tienda de aseo de mascotas", + "fa": "فروشگاه لوازم نظافت حیوان خانگی", + "fi": "Lemmikkihoitola", + "fr": "Salon de toilettage", + "gl": "Tenda de coidado de animais", + "he": "חנות לטיפוח חיות מחמד", + "hu": "Állatkozmetika", + "is": "Dýrasnyrtiverslun", + "it": "Toelettatura per animali", + "ja": "ペット美容室", + "ko": "애완동물 용품 가게", + "mk": "Продавница за нега на миленици", + "nl": "Trimsalon", + "pl": "Salon fryzjerski dla zwierząt", + "pt-BR": "Loja de cuidados com animais de estimação", + "pt": "Loja de banhos e tosquias", + "ru": "Парикмахерская для животных", + "sr": "Сређивање кућних љубимаца", + "sv": "Pälsvård för husdjur", + "tr": "Evcil Hayvan Bakım Mağazası", + "uk": "Салон догляду за тваринами", + "vi": "Dịch vụ Tỉa lông", + "zh-CN": "宠物美容美发店", + "zh-TW": "寵物美容店" + } + }, + "shop/photo": { + "title": { + "C": "Photography Store", + "ar": "محل تصوير", + "ast": "Fotografía", + "bs": "Fotografska radnja", + "ca": "Botiga de fotografia", + "cs": "Fotografický obchod", + "da": "Fotoforretning", + "de": "Fotofachgeschäft", + "el": "Φωτογραφείο", + "en-GB": "Photography Shop", + "en": "Photography Store", + "eo": "Fotografia vendejo", + "es": "Tienda de fotografía", + "et": "Fotograafiapood", + "fa": "عکس و ویدیو", + "fi": "Valokuvausliike", + "fr": "Tirage de photos", + "gl": "Tenda de fotografía", + "he": "חנות צילום", + "hr": "Prodavaonica fotografske opreme", + "hu": "Fotósbolt", + "id": "Toko Fotografi", + "is": "Ljósmyndavöruverslun", + "it": "Fotografo", + "ja": "写真店", + "ko": "사진 가게", + "lt": "Fotografijos parduotuvė", + "lv": "Fotogrāfijas veikals", + "mk": "Фотографски дуќан", + "nl": "Fotowinkel", + "no": "Fotobutikk", + "pl": "Sklep fotograficzny", + "pt-BR": "Loja de Fotografia", + "pt": "Loja de fotografia", + "ro": "Magazin de Fotografie", + "ru": "Фототовары", + "sk": "Obchod s fototechnikou", + "sl": "Foto trgovina", + "sr": "Фотографска радња", + "sv": "Fotoaffär", + "tr": "Fotoğrafçı", + "uk": "Фототовари", + "vi": "Tiệm Chụp Hình", + "yue": "影相舖", + "zh-CN": "照相馆", + "zh-HK": "相片沖印店", + "zh-TW": "攝影用品店" + } + }, + "shop/pottery": { + "title": { + "C": "Pottery Store", + "ar": "متجر فخار", + "cs": "keramika", + "de": "Keramikladen", + "el": "Κατάστημα Κεραμικής", + "en": "Pottery Store", + "eo": "Porcelan-vendejo", + "es": "Tienda de alfarería", + "fa": "فروشگاه سفال", + "fr": "Magasin de poterie", + "gl": "Tenda de cerámica", + "he": "חנות כדים", + "hu": "Fazekastermékek boltja", + "it": "Negozio di ceramica", + "ja": "陶磁器店", + "ko": "도자기 가게", + "mk": "Продавница за грнчарија", + "nl": "Winkel voor aardewerk", + "pl": "Sklep garncarski", + "pt-BR": "Loja de cerâmica", + "pt": "Loja de cerâmica", + "ru": "Магазин керамики", + "sk": "Obchod s keramikou", + "sr": "Продавница грнчарије", + "sv": "Keramikaffär", + "tr": "Çömlek Mağazası", + "uk": "Порцелянові вироби", + "vi": "Tiệm Đồ gốm", + "zh-CN": "陶瓷店", + "zh-TW": "陶器店" + } + }, + "shop/printer_ink": { + "title": { + "C": "Printer Ink Store", + "ar": "متجر أحبار طابعة", + "cs": "barvy do tiskáren", + "de": "Druckertintengeschäft", + "el": "Κατάστημα για Μελάνια Εκτυπωτών", + "en": "Printer Ink Store", + "eo": "Presil-inka vendejo", + "es": "Tienda de tinta para impresora", + "fa": "فروشگاه جوهر چاپ‌گر", + "fi": "Tulostinmustemyymälä", + "fr": "Vendeur d'encre pour imprimante", + "gl": "Tenda de tinta de impresora", + "he": "חנות דיו למדפסות", + "hu": "Nyomtatófesték bolt", + "it": "Negozio di cartucce per stampanti", + "ja": "プリンタ用インク店", + "ko": "프린터 잉크 가게", + "mk": "Продавница за печатарска боја", + "nl": "Winkel voor printerinkt", + "pl": "Sklep z tuszami do drukarek", + "pt-BR": "Loja de tinta de impressora", + "pt": "Loja de tinteiros de impressora", + "ru": "Магазин чернил для принтера", + "sk": "Obchod s tonermi", + "sv": "Butik för skrivarbläck", + "tr": "Kartuş Mağazası", + "uk": "Чорнила для принтера", + "vi": "Tiệm Mực in", + "zh-CN": "打印机墨水店", + "zh-TW": "印表機墨水商店" + } + }, + "shop/psychic": { + "title": { + "C": "Psychic", + "cs": "věštírna", + "de": "Astrologiker", + "el": "Μέντιουμ", + "en": "Psychic", + "eo": "Laborejo de mediumo", + "es": "Vidente", + "fa": "پیش‌گو", + "fi": "Psyykikko", + "fr": "Magasin ésotérique psi", + "gl": "Vidente", + "he": "מדיום", + "hu": "Jóslás", + "it": "Sensitivo", + "ja": "サイキック店", + "ko": "초능력자", + "mk": "Јасновидец", + "nl": "Medium (esoterie)", + "pl": "Medium", + "pt-BR": "Psíquico", + "pt": "Vidente", + "ru": "Предсказатель", + "sr": "Видовњак", + "sv": "Medium / Psykisk", + "tr": "Medyum", + "uk": "Екстрасенс", + "zh-CN": "特异功能(看相等)", + "zh-TW": "算命店" + } + }, + "shop/pyrotechnics": { + "title": { + "C": "Fireworks Store", + "ar": "متجر ألعاب نارية", + "ast": "Venta de pirotecnia", + "ca": "Botiga d'articles pirotècnics", + "cs": "Obchod s pyrotechnikou", + "da": "Fyrværkeributik", + "de": "Feuerwerksgeschäft", + "el": "Κατάστημα Πυροτεχνημάτων", + "en-GB": "Fireworks Shop", + "en": "Fireworks Store", + "eo": "Art-fajraĵa vendejo", + "es": "Tienda de fuegos artificiales", + "et": "Ilutulestiku kauplus", + "fa": "فروشگاه لوازم آتش‌بازی", + "fi": "Ilotulitemyymälä", + "fr": "Magasin de feux d'artifice", + "gl": "Tenda de fogos artificiais", + "he": "חנות זיקוקים", + "hr": "Prodavaonica za pirotehniku", + "hu": "Tűzijátékbolt", + "id": "Toko Kembang Api", + "is": "Flugeldaverslun", + "it": "Negozio di fuochi d'artificio", + "ja": "花火店", + "ko": "불꽃놀이 가게", + "lt": "Fejerverkų parduotuvė", + "mk": "Продавница за огномет", + "nl": "Vuurwerkwinkel", + "no": "Fyrverkerihandel", + "pl": "Sklep ze sztucznymi ogniami", + "pt-BR": "Loja de Fogos de Artifício", + "pt": "Loja de pirotecnia", + "ro": "Magazin de Artificii", + "ru": "Магазин фейерверков", + "sk": "Obchod s pyrotechnikov", + "sr": "Продавница петарди", + "sv": "Fyrverkerier", + "tr": "Havai Fişek Mağazası", + "uk": "Феєрверки", + "vi": "Tiệm Pháo bông", + "yue": "煙花舖", + "zh-CN": "烟花爆竹店", + "zh-HK": "煙花店", + "zh-TW": "煙火商" + } + }, + "shop/radiotechnics": { + "title": { + "C": "Radio/Electronic Component Store", + "ar": "متجر بيع قطع الراديو / الإلكترونية", + "ast": "Componentes electrónicos", + "ca": "Botiga d'articles electrònics", + "cs": "Obchod s elektronickými součástkami", + "da": "Radio/Elektronikbutik", + "de": "Radio/Elektronik-Geschäft", + "el": "Μαγαζί Ηλεκτρονικών Εξαρτημάτων", + "en-GB": "Radio/Electronic Component Shop", + "en": "Radio/Electronic Component Store", + "eo": "Radioteĥnika/elektronik-parta vendejo", + "es": "Tienda de componentes radio electrónicos", + "et": "Elektroonikakomponentide pood", + "fa": "فروشگاه رادیو/اجزای الکترونیکی", + "fi": "Elektroniikkakomponenttimyymälä", + "fr": "Magasin de composants électroniques et de radio", + "gl": "Tenda de compoñentes electrónicos", + "he": "חנות אלקטרוניקה ורדיו", + "hr": "Trgovina za elektroniku", + "hu": "Rádiótechnikai bolt", + "id": "Toko Komponen Radio/Elektronik", + "is": "Rafíhlutaverslun", + "it": "Negozio di componenti elettronici", + "ja": "電子部品店", + "ko": "라디오/전자 부품 가게", + "lt": "Radijo/elektroninių dalių parduotuvė", + "lv": "Radio / Elektronisko komponenšu veikals", + "mk": "Продавница за електрични делови", + "nl": "Winkel voor radio- en elektronische componenten", + "no": "Elektronikkbutikk", + "pl": "Sklep z częściami elektronicznymi", + "pt-BR": "Loja de Componentes Eletrônicos", + "pt": "Loja de componentes eletrónicos / rádio", + "ru": "Магазин радиодеталей", + "sk": "Obchod s elektronikou", + "sl": "Trgovina z elektroniko", + "sr": "Продавница електронских делова", + "sv": "Radio/Elektronikbutik", + "tr": "Radyocu", + "uk": "Радіодеталі", + "vi": "Tiệm Linh kiện Điện tử", + "yue": "無綫電/電子零件舖", + "zh-CN": "音像制品店", + "zh-HK": "無線電/電子零件店", + "zh-TW": "無線電/電子零件店" + } + }, + "shop/religion": { + "title": { + "C": "Religious Store", + "ar": "متجر ديني", + "ast": "Artículos relixosos", + "ca": "Botiga d'articles religiosos", + "cs": "Náboženské předměty", + "da": "Religøs forretning", + "de": "Devotionalienhandlung", + "el": "Κατάστημα Θρησκευτικών Ειδών", + "en-GB": "Religious Shop", + "en": "Religious Store", + "eo": "Devotaĵa vendejo", + "es": "Tienda religiosa", + "et": "Usutarvete kauplus", + "fa": "فروشگاه مذهبی", + "fi": "Uskonnollinen myymälä", + "fr": "Magasin d'articles religieux", + "gl": "Tenda relixiosa", + "he": "חנות לתשמישי דת", + "hr": "Prodavaonica religioznih pomagala", + "hu": "Kegytárgybolt", + "id": "Toko Agamawi", + "is": "Verslun með trúartengdar vörur", + "it": "Negozio di articoli religiosi", + "ja": "宗教用品店", + "ko": "종교 가게", + "lt": "Religinė parduotuvė", + "mk": "Верска продавница", + "nl": "Religieuze winkel", + "no": "Religiøs butikk", + "pl": "Sklep z dewocjonaliami", + "pt-BR": "Loja de Artigos Religiosos", + "pt": "Loja de artigos religiosos", + "ro": "Magazin Religios", + "ru": "Религиозная лавка", + "sk": "Obchod s náboženkými pomôckami", + "sr": "Продавница верских предмета", + "sv": "Religiös butik", + "tr": "Dini Ürünler Mağazası", + "uk": "Церковна лавка", + "vi": "Tiệm Bán đồ Tôn giáo", + "yue": "宗教舖", + "zh-CN": "宗教商店", + "zh-HK": "宗教用品店", + "zh-TW": "宗教用品店" + } + }, + "shop/rental": { + "title": { + "C": "Rental Shop", + "ar": "محل تأجير", + "cs": "půjčovna", + "da": "Udlejningsforretning", + "de": "Verleih", + "el": "Κατάστημα Ενοικίασης", + "en": "Rental Shop", + "eo": "Pruntejo", + "es": "Tienda de alquiler", + "fi": "Vuokraamo", + "fr": "Magasin de location", + "gl": "Tenda de alugueiro", + "he": "חנות השכרה", + "it": "Negozio di noleggio", + "ja": "レンタルショップ", + "ko": "대여점", + "mk": "Изнајмувачница", + "nl": "Verhuurwinkel", + "pl": "Wypożyczalnia", + "pt-BR": "Locadora", + "pt": "Loja de aluguer de material em geral", + "ru": "Аренда", + "sv": "Hyrbutik", + "tr": "Kiralık Dükkan", + "uk": "Станція прокату", + "vi": "Cho thuê Hàng hóa", + "zh-CN": "设备租赁", + "zh-TW": "租賃店" + } + }, + "shop/repair": { + "title": { + "C": "Repair Shop", + "ar": "محل تصليح", + "cs": "Opravna", + "de": "Reparaturgeschäft", + "el": "Κατάστημα Επισκευών", + "en": "Repair Shop", + "eo": "Riparejo", + "es": "Taller de reparaciones", + "fa": "تعمیرگاه", + "he": "חנות תיקונים", + "it": "Botega di Riparazioni", + "ja": "修理店", + "ko": "수리점", + "mk": "Поправачница", + "nl": "Reparatiewinkel", + "pl": "Naprawy", + "pt-BR": "Oficina", + "pt": "Loja de reparações", + "sv": "Reparatör", + "tr": "Tamir Dükkanı", + "uk": "Ремонт", + "vi": "Sửa Đồ", + "zh-CN": "修理店", + "zh-TW": "維修店" + } + }, + "shop/scuba_diving": { + "title": { + "C": "Scuba Diving Shop", + "ar": "متجر معدات الغوص تحت الماء", + "ast": "Tienda de merguyu", + "ca": "Botiga de submarinisme", + "cs": "Potřeby pro potápěče", + "da": "Dykkerudstyrsbutik", + "de": "Tauchwarengeschäft", + "el": "Κατάστημα Εξοπλισμού Καταδύσεων", + "en-GB": "Scuba Diving Shop", + "en": "Scuba Diving Shop", + "eo": "Subakvad-aparata vendejo", + "es": "Tienda de buceo", + "et": "Sukeldustarvikute kauplus", + "fa": "فروشگاه لوازم غواصی", + "fi": "Sukellusliike", + "fr": "Magasin de matériel de plongée sous-marine", + "gl": "Tenda de mergullo", + "he": "חנות לצוללנים", + "hr": "Prodavaonica opreme za ronjenje", + "hu": "Búvárfelszerelés-bolt", + "id": "Toko Perlengkapan Menyelam", + "is": "Verslun með köfunarvörur", + "it": "Negozio di attrezzatura per subacquei", + "ja": "スキューバダイビングショップ", + "ko": "스쿠버 다이빙 가게", + "lt": "Povandeninio nardymo parduotuvė", + "mk": "Продавница за нуркачка опрема", + "nl": "Duikwinkel", + "no": "Dykkerutstyrsbutikk", + "pl": "Sklep nurkowy", + "pt-BR": "Loja de equipamentos de mergulho", + "pt": "Loja de equipamento de mergulho", + "ro": "Magazin de Scufundări", + "ru": "Магазин подводного снаряжения", + "sk": "Obchod s potápačským vybavením", + "sl": "Trgovina s potapljaško opremo", + "sr": "Продавница ронилачке опреме", + "sv": "Dykarbutik", + "tr": "Tüple Dalış Mağazası", + "uk": "Підводне плавання", + "vi": "Tiệm Dụng cụ Lặn Scuba", + "zh-CN": "潜水商店", + "zh-HK": "潛水用品店", + "zh-TW": "潛水用品店" + } + }, + "shop/seafood": { + "title": { + "C": "Seafood Shop", + "ar": "متجر مأكولات بحرية", + "ast": "Mariscos", + "ca": "Marisqueria", + "cs": "Rybárna", + "da": "Fiskehandler", + "de": "Fischgeschäft", + "el": "Κατάστημα Θαλασσινών", + "en-GB": "Seafood Shop", + "en": "Seafood Shop", + "eo": "Marfrukta vendejo", + "es": "Tienda de pescados y mariscos", + "et": "Kalapood", + "fa": "فروشگاه غذای دریایی", + "fi": "Meriruokakauppa", + "fr": "Poissonnerie / Vente de fruits de mer", + "gl": "Peixaría", + "he": "חנות למאכלי ים", + "hr": "Ribarnica", + "hu": "Halbolt", + "id": "Toko HIdangan Laut", + "is": "Fiskverslun", + "it": "Pescheria", + "ja": "魚屋", + "ko": "해산물 가게", + "lt": "Jūros gėrybių parduotuvė", + "mk": "Продавница за морска храна", + "nl": "Viswinkel", + "no": "Sjømatbutikk", + "pl": "Sklep z rybami i owocami morza", + "pt-BR": "Peixaria ou loja de frutos do mar", + "pt": "Peixaria", + "ro": "Magazin de Fructe de Mare", + "ru": "Магазин морепродуктов", + "sk": "Obchod s morskými špecialitami", + "sl": "Ribarnica", + "sr": "Продавница морске хране", + "sv": "Fiskaffär", + "tr": "Deniz Ürünleri Mağazası", + "uk": "Морепродукти", + "vi": "Tiệm Hải sản", + "zh-CN": "海鲜店", + "zh-HK": "海鮮店", + "zh-TW": "海產店" + } + }, + "shop/second_hand": { + "title": { + "C": "Consignment/Thrift Store", + "ar": "محل لبيع البضائع المستعملة", + "ast": "Reventa d'empeños", + "ca": "Consigna", + "cs": "Second hand", + "da": "Genbrugsbutik", + "de": "Second-Hand-Laden", + "en-GB": "Second Hand Shop", + "en": "Consignment/Thrift Store", + "eo": "Brokantejo", + "es": "Tienda de segunda mano", + "et": "Komisjonikauplus", + "fa": "دست دوم فروشی", + "fi": "Käytetyn tavaran kauppa", + "fr": "Dépôt-vente/produits d'occasion", + "gl": "Tenda de segunda man", + "he": "חנות יד שניה", + "hu": "Használtáru-bolt", + "id": "Jual Titip/Pasar Loak", + "is": "Notað og nýtt", + "it": "Negozio di articoli usati", + "ja": "リサイクルショップ", + "ko": "위탁/중고품 할인 매장", + "mk": "Продавница за половни работи", + "nl": "Tweedehandswinkel", + "no": "Gjenbruksbutikk", + "pl": "Sklep z rzeczami używanymi", + "pt-BR": "Brechó", + "pt": "Loja de produtos em segunda mão", + "ro": "Magazin de Depozite", + "ru": "Магазин секонд хенда", + "sk": "Second hand", + "sr": "Слање робе", + "sv": "Second hand", + "tr": "Bit Pazarı", + "uk": "Благодійний магазин", + "vi": "Tiệm Mua lại", + "zh-CN": "二手市场", + "zh-HK": "寄賣/二手店", + "zh-TW": "格仔鋪/二手店" + } + }, + "shop/sewing": { + "title": { + "C": "Sewing Supply Shop", + "ar": "متجر مستلزمات خياطة", + "cs": "Šicí potřeby, galanterie", + "da": "Syforretning", + "de": "Kurzwarenladen", + "el": "Κατάστημα Προμηθειών για Ράψιμο", + "en": "Sewing Supply Shop", + "eo": "Kudrilar-vendejo", + "es": "Tienda de suministros de costura", + "fa": "فروشگاه لوازم خیاطی / خرازی", + "fi": "Ompelutarvikeliike", + "fr": "Magasin de couture", + "gl": "Tenda de artigos de costura", + "he": "חנות ציוד תפירה", + "hu": "Varrásfelszerelés bolt", + "is": "Saumavöruverslun", + "it": "Merceria", + "ja": "手芸用品店", + "ko": "바느질 용품 가게", + "mk": "Шивачки набавки", + "nl": "Naaiwinkel", + "no": "Sybutikk", + "pl": "Pasmanteria", + "pt-BR": "Loja de suprimentos de costura", + "pt": "Retrosaria", + "ru": "Швейные принадлежности", + "sk": "Galantéria", + "sr": "Продавница кројачке робе", + "sv": "Sybutik", + "tr": "Dikiş Malzemeleri Dükkanı", + "uk": "Приладдя для шиття", + "vi": "Tiệm Đồ Kim chỉ", + "zh-CN": "缝纫用品商店", + "zh-TW": "縫紉用品店" + } + }, + "shop/shoe_repair": { + "title": { + "C": "Shoe Repair Shop", + "ar": "محل تصليح الأحذية", + "ca": "Sabater", + "cs": "Opravna obuvi", + "de": "Schuhreparatur", + "el": "Τσαγκαράδικο", + "en": "Shoe Repair Shop", + "eo": "Ŝu-riparejo", + "es": "Taller de reparación de calzado", + "fa": "کفاشی", + "fr": "Cordonnier", + "gl": "Tenda de arranxo de zapatos", + "he": "חנות לתיקון נעליים", + "hu": "Cipőjavítás", + "it": "Calzolaio", + "ja": "靴修理店", + "ko": "신발 수선점", + "mk": "Чевлар", + "nl": "Schoenenreparatiewinkel", + "pl": "Szewc (naprawa obuwia)", + "pt-BR": "Loja de conserto de calçados", + "pt": "Reparador de sapatos", + "ru": "Ремонт обуви", + "sk": "Oprava obuvi", + "sr": "Обућар", + "sv": "Skomakare", + "tr": "Ayakkabı Tamir Mağazası", + "uk": "Ремонт взуття", + "vi": "Tiệm Sửa Giày", + "zh-CN": "修鞋店", + "zh-TW": "修鞋店" + } + }, + "shop/shoes": { + "title": { + "C": "Shoe Store", + "af": "Skoenwinkel", + "am": "ጫማ ቤት", + "ar": "متجر أحذية", + "ast": "Zapatería", + "bg": "Магазин за обувки", + "bn": "জুতোর দোকান", + "bs": "Prodavnica obuće", + "ca": "Sabateria", + "cs": "Obuvnictví", + "da": "Skobutik", + "de": "Schuhgeschäft", + "el": "Κατάστημα Υπόδησης", + "en-GB": "Shoe Shop", + "en": "Shoe Store", + "eo": "Ŝua vendejo", + "es": "Zapatería", + "et": "Kingapood", + "fa": "کفش فروشی", + "fi": "Kenkäkauppa", + "fr": "Magasin de chaussures", + "gl": "Zapataría", + "he": "חנות נעליים", + "hr": "Prodavaonica obuće", + "hu": "Cipőbolt", + "id": "Toko Sepatu", + "is": "Skóbúð", + "it": "Negozio di scarpe", + "ja": "靴店", + "kn": "ಮೆಟ್ಟು ಅಂಗಡಿ", + "ko": "신발 가게", + "lt": "Batų parduotuvė", + "lv": "Apavu veikals", + "mk": "Продавница за обувки", + "nl": "Schoenenwinkel", + "no": "Skobutikk", + "pl": "Sklep obuwniczy", + "pt-BR": "Loja de Calçados", + "pt": "Sapataria", + "ro": "Magazin de Ghete", + "ru": "Обувь", + "sk": "Obchod s obuvov", + "sl": "Trgovina s čevlji", + "sr": "Продавница обуће", + "sv": "Skoaffär", + "ta": "காலணியகம்", + "tr": "Ayakkabı Mağazası", + "uk": "Взуття", + "vi": "Tiệm Giày", + "yue": "鞋舖", + "zh-CN": "鞋店", + "zh-HK": "鞋舖", + "zh-TW": "鞋店", + "zh": "鞋店" + } + }, + "shop/spices": { + "title": { + "C": "Spice Shop", + "ar": "محل بيع بهارات", + "cs": "koření, bylinky", + "da": "Kryddeributik", + "de": "Gewürzladen", + "el": "Κατάστημα Μπαχαρικών", + "en": "Spice Shop", + "eo": "Spica vendejo", + "es": "Tienda de especias", + "fa": "فروشگاه ادویه", + "fi": "Maustekauppa", + "fr": "Magasin d'épices", + "gl": "Tenda de especias", + "he": "חנות תבלינים", + "hu": "Fűszerbolt", + "it": "Negozio di spezie", + "ja": "スパイス店", + "ko": "향신료 가게", + "mk": "Продавница за зачини", + "nl": "Kruidenwinkel", + "pl": "Sklep z przyprawami", + "pt-BR": "Loja de especiarias", + "pt": "Loja de especiarias", + "ru": "Магазин специй", + "sk": "Obchod s koreninami", + "sr": "Продавница зачина", + "sv": "Affär för kryddor", + "tr": "Baharat Mağazası", + "uk": "Спеції", + "vi": "Tiệm Gia vị", + "zh-CN": "香料店", + "zh-TW": "香料店" + } + }, + "shop/sports": { + "title": { + "C": "Sporting Goods Store", + "af": "Sportwinkel", + "ar": "متجر بيع أدوات رياضية", + "ast": "Material deportivu", + "bg": "Спортен магазин", + "bn": "খেলার সামগ্রির দোকান", + "bs": "Prodavnica sportske opreme", + "ca": "Botiga d'esports", + "cs": "Sportovní potřeby", + "da": "Sportsudstyrsbutik", + "de": "Sportgeschäft", + "el": "Κατάστημα Αθλητικών Ειδών", + "en-GB": "Sporting Goods Shop", + "en": "Sporting Goods Store", + "eo": "Sporta vendejo", + "es": "Tienda de artículos deportivos", + "et": "Sporditarvete pood", + "fa": "فروشگاه لوازم ورزشی", + "fi": "Urheiluliike", + "fr": "Magasin d'équipement sportif", + "gl": "Tenda de deportes", + "he": "חנות לאביזרי ספורט", + "hr": "Prodavaonica sportske opreme", + "hu": "Sportbolt", + "id": "Toko Olahraga", + "is": "Íþróttaverslun", + "it": "Negozio di articoli sportivi", + "ja": "スポーツ用品店", + "ko": "스포츠 용품 가게", + "lt": "Sporto reikmenų parduotuvė", + "lv": "Sporta veikals", + "mk": "Продавница за спортска опрема", + "nl": "Sportzaak", + "no": "Sportsbutikk", + "pl": "Sklep sportowy", + "pt-BR": "Loja de equipamentos esportivos", + "pt": "Loja de artigos desportivos", + "ro": "Magazin de Haine de Sport", + "ru": "Спорттовары", + "sk": "Obchod so športovými potrebami", + "sl": "Športna trgovina", + "sr": "Продавница спортске опреме", + "sv": "Sportaffär", + "tr": "Spor Ürünleri Mağazası", + "uk": "Спорттовари", + "vi": "Tiệm Dụng cụ Thể thao", + "yue": "運動舖", + "zh-CN": "体育用品店", + "zh-HK": "運動用品店", + "zh-TW": "運動用品店", + "zh": "体育用品店" + } + }, + "shop/stationery": { + "title": { + "C": "Stationery Store", + "af": "Skryfbehoeftewinkel", + "am": "የጽሕፈት መሳሪያ መሸጫ", + "ar": "متجر قرطاسية و أدوات مكتبية", + "ast": "Papelería", + "bg": "Магазин за канцеларски стоки", + "bs": "Prodavnica kancelarijske opreme", + "ca": "Papereria", + "cs": "Kancelářské potřeby", + "da": "Papirforhandler", + "de": "Schreibwarengeschäft", + "el": "Κατάστημα Γραφικής Ύλης", + "en-GB": "Stationery Shop", + "en": "Stationery Store", + "eo": "Papervara vendejo", + "es": "Artículos de papelería y oficina", + "et": "Kirjatarvete kauplus", + "fa": "فروشگاه نوشت‌افزار", + "fi": "Toimistotarvikekauppa", + "fr": "Papeterie", + "gl": "Papelaría", + "he": "חנות לדברי כתיבה", + "hr": "Papirnica", + "hu": "Papírbolt", + "id": "Toko Alat Tulis", + "is": "Skriffangaverslun", + "it": "Negozio di cancelleria", + "ja": "文具店", + "ko": "문구점", + "lt": "Kanceliarinių prekių parduotuvė", + "lv": "Rakstāmlietu veikals", + "mk": "Канцелариски материјали", + "nl": "Kantoorboekhandel", + "no": "Papirhandel", + "pl": "Sklep papierniczy", + "pt-BR": "Papelaria", + "pt": "Papelaria", + "ru": "Канцелярские товары", + "sk": "Papierníctvo", + "sl": "Papirnica", + "sr": "Продавница канцеларијске опреме", + "sv": "Pappershandel", + "tr": "Kırtasiye", + "uk": "Канцтовари", + "vi": "Tiệm Văn phòng phẩm", + "yue": "文具舖", + "zh-CN": "文具店", + "zh-HK": "文具店", + "zh-TW": "文具店", + "zh": "文化用品店" + } + }, + "shop/storage_rental": { + "title": { + "C": "Storage Rental", + "ar": "محل تأجير أماكن التخزين", + "ast": "Alquiler d'almacenes", + "ca": "Lloguer de magatzem", + "cs": "Skladovací prostor", + "da": "Lagerhotel", + "de": "Lagerraumvermieter", + "el": "Ενοικιαζόμενος Χώρος Αποθήκευσης", + "en-GB": "Storage Rental", + "en": "Storage Rental", + "eo": "Magazena spaco por lui", + "es": "Alquiler de espacios para almacenaje", + "fa": "کرایه انبار", + "fi": "Varastonvuokrauspalvelu", + "fr": "Location de stockage - Ne pas utiliser", + "gl": "Alugueiro de almacéns", + "he": "שטח אחסון להשכרה", + "hu": "Tárolóhely bérbeadása", + "is": "Geymsluleiga", + "it": "Box a noleggio", + "ja": "レンタル倉庫", + "ko": "저장공간 대여소", + "mk": "Изнамјување складиштен простор", + "nl": "Zelfopslag", + "no": "Minilager", + "pl": "Przechowalnia rzeczy (długoterminowa)", + "pt-BR": "Aluguel de Armazenamento", + "pt": "Aluguer de depósitos", + "ru": "Аренда складских помещений", + "sk": "Prenájom skladových priestorov", + "sl": "Najem shrambnih prostorov", + "sr": "Изнајмљивање складишта", + "sv": "Hyrlager", + "tr": "Depo Kiralama Mağazası", + "uk": "Склади в оренду", + "vi": "Cho thuê Chỗ Để đồ", + "zh-CN": "租赁处", + "zh-HK": "存倉", + "zh-TW": "儲物空間出租" + } + }, + "shop/supermarket": { + "title": { + "C": "Supermarket", + "af": "Supermark", + "am": "የገበያ ማዕከል", + "ar": "سوبر ماركت", + "ast": "Supermercáu", + "bg": "Супермаркет", + "bn": "সুপারমার্কেট", + "bs": "Supermarket", + "ca": "Supermercat", + "cs": "Supermarket", + "da": "Supermarked", + "de": "Supermarkt", + "dv": "ސުޕަރމާރކެޓް", + "el": "Σουπερμάρκετ", + "en-GB": "Supermarket", + "en": "Supermarket", + "eo": "Superbazaro", + "es": "Supermercado", + "et": "Supermarket", + "fa": "فروشگاه بزرگ", + "fi": "Supermarketti", + "fr": "Supermarché", + "gl": "Supermercado", + "he": "סופרמרקט", + "hr": "Veletrgovina", + "hu": "Szupermarket", + "id": "Supermarket", + "is": "Stórmarkaður", + "it": "Supermercato", + "ja": "スーパーマーケット", + "ko": "슈퍼마켓", + "lt": "Prekybos centras", + "lv": "Lielveikals", + "mk": "Супермаркет", + "ne": "सुपरमार्केट", + "nl": "Supermarkt", + "no": "Supermarked", + "pl": "Supermarket", + "pt-BR": "Supermercado", + "pt": "Supermercado / Hipermercado", + "ro": "Supermarket", + "ru": "Супермаркет", + "sk": "Supermarket", + "sl": "Supermarket", + "so": "Suuq-weyne", + "sq": "Supermarket", + "sr": "Самопослуга", + "sv": "Mataffär", + "te": "సుపర్ మార్కెట్", + "tr": "Süpermarket", + "uk": "Супермаркет", + "vi": "Siêu thị", + "yue": "超級市場", + "zh-CN": "超市", + "zh-HK": "超級市場", + "zh-TW": "超級市場", + "zh": "超级市场" + } + }, + "shop/swimming_pool": { + "title": { + "C": "Pool Supply Store", + "ar": "متجر مستلزمات حمامات السباحة", + "cs": "bazény", + "de": "Swimmingpoolbedarf", + "el": "Κατάστημα Ειδών Πισίνας", + "en": "Pool Supply Store", + "eo": "Vendejo de naĝej-akcesoriaĵoj", + "es": "Tienda de suministros para piscinas", + "fa": "فروشگاه لوازم استخر", + "fi": "Uima-allasliike", + "fr": "Magasin de matériel de piscine", + "gl": "Tenda de subministracións para piscinas", + "he": "חנות ציוד לבריכות", + "hr": "Trgovina opreme za bazene", + "hu": "Uszodatechnika-bolt", + "it": "Negozio per rifornimenti per piscina", + "ja": "プール用品店", + "ko": "수영장 용품 가게", + "mk": "Базенски залихи", + "nl": "Winkel voor zwembadbenodigdheden", + "pl": "Sklep z akcesoriami do basenów", + "pt-BR": "Loja de suprimentos para piscinas", + "pt": "Loja de acessórios para piscinas", + "sv": "Butik för pooltillbehör", + "tr": "Havuz Malzemeleri Mağazası", + "uk": "Обладнання для басейнів", + "zh-CN": "泳池设备店", + "zh-TW": "泳池用品商店" + } + }, + "shop/tailor": { + "title": { + "C": "Tailor", + "ar": "خياط", + "ast": "Sastrería", + "ca": "Sastreria", + "cs": "Krejčovství", + "da": "Skrædder", + "de": "Schneider", + "el": "Ράφτης", + "en-GB": "Tailor", + "en": "Tailor", + "eo": "Tajlora laborejo/vendejo", + "es": "Sastrería", + "et": "Rätsep", + "fa": "خیاط", + "fi": "Räätäliliike", + "fr": "Tailleur", + "gl": "Xastraría", + "he": "חייט", + "hr": "Krojač", + "hu": "Szabó", + "id": "Tukang Jahit", + "is": "Skraddari", + "it": "Sartoria", + "ja": "仕立屋", + "kn": "ದರ್ಜಿ", + "ko": "양복점", + "mk": "Кројач", + "ms": "Kedai Tukang Jahit", + "nl": "Kleermaker", + "no": "Skredder", + "pl": "Krawiec / usługi krawieckie", + "pt-BR": "Alfaiataria", + "pt": "Alfaiate", + "ru": "Портной", + "sk": "Krajčírstvo", + "sl": "Krojač", + "sr": "Kројач", + "sv": "Skräddare", + "ta": "தையல்காரர்", + "tr": "Terzi", + "uk": "Кравець", + "vi": "Tiệm May", + "zh-CN": "裁缝店", + "zh-HK": "裁縫", + "zh-TW": "裁縫" + } + }, + "shop/tattoo": { + "title": { + "C": "Tattoo Parlor", + "ar": "صالون الوشم", + "ast": "Tatuaxes", + "ca": "Centre de tatuatges", + "cs": "Tetovací salón", + "da": "Tatovør", + "de": "Tätowierer", + "el": "Στούντιο Τατουάζ", + "en-GB": "Tattoo Parlor", + "en": "Tattoo Parlor", + "eo": "Salono de tatuado", + "es": "Salón de tatuajes", + "et": "Tätoveeringu salong", + "fa": "سالن تاتو", + "fi": "Tatuointisalonki", + "fr": "Salon de tatouage", + "gl": "Salón de tatuaxes", + "he": "מכון קעקועים", + "hr": "Studio za tetoviranje", + "hu": "Tetováló szalon", + "id": "Jasa Pembuatan Tato", + "is": "Húðflúrstofa", + "it": "Studio per Tatuaggi", + "ja": "タトゥースタジオ", + "ko": "문신 가게", + "lt": "Tatuiruočių salonas", + "lv": "Tetovējumu veikals", + "mk": "Тетоважи", + "nl": "Tattoozetter", + "no": "Tatovør", + "pl": "Studio tatuażu", + "pt-BR": "Estúdio de Tatuagem", + "pt": "Estúdio de tatuagens", + "ro": "Artist de Tatuaje", + "ru": "Тату салон", + "sk": "Tetovací salón", + "sl": "Salon za tetovažo", + "sr": "Салон за тетоваже", + "sv": "Tatueringsstudio", + "tr": "Dövmeci", + "uk": "Тату салон", + "vi": "Tiệm Xăm", + "zh-CN": "纹身店", + "zh-HK": "紋身店", + "zh-TW": "刺青店" + } + }, + "shop/tea": { + "title": { + "C": "Tea Store", + "ar": "متجر شاي", + "ast": "Tienda de tes", + "ca": "Botiga de te", + "cs": "Obchod s čajem", + "da": "Tebutik", + "de": "Teegeschäft", + "el": "Τεϊοπωλείο", + "en-GB": "Tea Shop (Retail)", + "en": "Tea Store", + "eo": "Tea vendejo", + "es": "Tienda de té", + "et": "Teepood", + "fa": "فروشگاه چای", + "fi": "Teekauppa", + "fr": "Magasin de thés", + "gl": "Tenda de té", + "he": "חנות תה", + "hr": "Trgovina za čajeve", + "hu": "Teaüzlet", + "id": "Toko Teh", + "is": "Teverslun", + "it": "Negozio di tè", + "ja": "茶舗", + "ko": "차 가게", + "lt": "Arbatos parduotuvė", + "lv": "Tējas veikals", + "mk": "Продавница за чај", + "nl": "Theewinkel", + "no": "Tebutikk", + "pl": "Sklep z herbatą", + "pt-BR": "Loja de Chás", + "pt": "Loja de chás", + "ro": "Magazin de Ceaiuri", + "ru": "Чайный магазин", + "sk": "Obchod s čajom", + "sl": "Čajnica", + "sr": "Чајџиница", + "sv": "Te-butik", + "ta": "தேநீர் கடை", + "tr": "Çaycı", + "uk": "Чай", + "vi": "Tiệm Trà Khô", + "zh-CN": "茶叶商店", + "zh-HK": "茶莊", + "zh-TW": "茶行" + } + }, + "shop/telecommunication": { + "title": { + "C": "Telecom Retail Store", + "ar": "متجر بيع بالتجزئة لشركة اتصالات", + "cs": "telekomunikační prodejna", + "de": "Telekommunikationsfachgeschäft", + "el": "Κατάστημα Πώλησης Τηλεπικοινωνιών", + "en": "Telecom Retail Store", + "eo": "Oficejo de telekomunikada firmao (vendo)", + "es": "Tienda minorista de telecomunicaciones", + "et": "Sidefirma pood", + "fa": "فروشگاه لوازم مخابراتی", + "fi": "Teleoperaattorin myymälä", + "fr": "Magasin de compagnie de télécommunication", + "gl": "Tenda de subministracións de telecomunicación", + "he": "חנות טלפונים", + "it": "Negozio al dettaglio di Telefonia", + "ja": "通信サービス店", + "ko": "통신사 대리점", + "mk": "Телекомуникациска продавница", + "nl": "Telecomwinkel", + "pl": "Dostawca Internetu/telefonu/TV", + "pt-BR": "Loja de telecomunicações", + "pt": "Loja de telecomunicações", + "sv": "Telekombutik", + "tr": "Telekom Perakende Mağazası", + "uk": "Магазин телекомунікаційного обладнання", + "zh-CN": "电信零售店", + "zh-TW": "通訊行" + } + }, + "shop/ticket": { + "title": { + "C": "Ticket Seller", + "ar": "بائع تذاكر", + "ast": "Venta d'entraes", + "ca": "Venedor de tiquets", + "cs": "Prodejna vstupenek", + "da": "Billetsælger", + "de": "Eintrittskartenverkäufer", + "el": "Εκδοτήριο Εισιτηρίων", + "en-GB": "Ticket Seller", + "en": "Ticket Seller", + "eo": "Biletejo", + "es": "Venta de boletos", + "et": "Piletikauplus", + "fa": "بلیط فروشی", + "fi": "Lipunmyyntipiste", + "fr": "Boutique de vente de billets", + "gl": "Venda de entradas", + "he": "עמדת מכירת כרטיסים", + "hr": "Prodavač ulaznica", + "hu": "Jegypénztár", + "id": "Penjual Tiket", + "is": "Miðasala", + "it": "Rivenditore di Biglietti", + "ja": "チケット店", + "ko": "티켓 판매소", + "lt": "Bilietų pardavėjas", + "lv": "Biļešu kase", + "mk": "Билетарница", + "nl": "Ticketverkoop", + "no": "Billettutsalg", + "pl": "Sprzedaż biletów", + "pt-BR": "Bilheteria", + "pt": "Bilheteira", + "ro": "Vânzător de Bilete", + "ru": "Билетная касса", + "sk": "Predajňa vstupeniek", + "sl": "Prodajalna vstopnic", + "sr": "Билетарница", + "sv": "Biljettförsäljning", + "tr": "Bilet Satıcısı", + "uk": "Квиткова каса", + "vi": "Đại lý Bán Vé", + "zh-CN": "售票处", + "zh-HK": "門票售賣", + "zh-TW": "賣票亭" + } + }, + "shop/tiles": { + "title": { + "C": "Tile Shop", + "ar": "متجر بلاط", + "ast": "Tienda d'azulexos", + "ca": "Botiga de rajoles", + "cs": "Obchod s obklady", + "da": "Fliseforhandler", + "de": "Fliesenhändler", + "el": "Κατάστημα Πλακιδίων", + "en-GB": "Tile Shop", + "en": "Tile Shop", + "eo": "Kahela vendejo", + "es": "Tienda de azulejos", + "fa": "کاشی فروشی", + "fi": "Laattamyymälä", + "fr": "Magasin de carrelage", + "gl": "Tenda de azulexos", + "he": "חנות מרצפות", + "hu": "Csempebolt", + "is": "Flísaverslun", + "it": "Negozio di piastrelle", + "ja": "タイル店", + "ko": "타일 가게", + "lv": "Flīžu veikals", + "mk": "Продавница за плочки", + "nl": "Tegelwinkel", + "no": "Flisebutikk", + "pl": "Sklep z płytkami ceramicznymi", + "pt-BR": "Loja de Azulejos", + "pt": "Loja de azulejos", + "ru": "Магазин плитки", + "sr": "Продавница керамике", + "sv": "Kakelbutik", + "tr": "Karo Dükkanı", + "uk": "Кахель", + "vi": "Tiệm Ngói", + "zh-CN": "瓷砖商店", + "zh-TW": "磁磚商店" + } + }, + "shop/tobacco": { + "title": { + "C": "Tobacco Shop", + "ar": "محل بيع التبغ", + "ast": "Estancu", + "ca": "Estanc", + "cs": "Kuřácké potřeby", + "da": "Tobaksforretning", + "de": "Tabakwarengeschäft", + "el": "Κατάστημα Ειδών Καπνού", + "en-GB": "Tobacco Shop", + "en": "Tobacco Shop", + "eo": "Tabaka vendejo", + "es": "Tienda de tabaco", + "et": "Tubakapood", + "fa": "فروشگاه مواد افیونی تنباکو", + "fi": "Tupakkapuoti", + "fr": "Bureau de tabac", + "gl": "Estanco", + "he": "חנות טבק", + "hr": "Trgovina za duhanske proizvode", + "hu": "Dohánybolt", + "id": "Toko Tembakau", + "is": "Tóbaksverslun", + "it": "Tabaccheria", + "ja": "たばこ店", + "ko": "담배 가게", + "lt": "Tabako parduotuvė", + "lv": "Tabakas veikals", + "mk": "Продавница за тутун", + "nl": "Tabakswinkel", + "no": "Tobakksbutikk", + "pl": "Sklep z tytoniem", + "pt-BR": "Tabacaria", + "pt": "Tabacaria", + "ro": "Tăbăcărie", + "ru": "Табачный магазин", + "sk": "Obchod s tabakom", + "sl": "Tobačna trgovina", + "sr": "Дуванџиница", + "sv": "Tobaksbutik", + "ta": "புகையிலைக் கடை", + "tr": "Tütüncü", + "uk": "Тютюн", + "vi": "Tiệm Thuốc lá", + "zh-CN": "烟草店", + "zh-HK": "煙草店", + "zh-TW": "菸店" + } + }, + "shop/tool_hire": { + "title": { + "C": "Tool Rental", + "ar": "محل تأجير معدات", + "ca": "Lloguer d'eines", + "cs": "půjčovna nářadí", + "de": "Werkzeugverleih", + "el": "Ενοικιαστήριο Εργαλείων", + "en": "Tool Rental", + "eo": "Il-pruntejo", + "es": "Alquiler de herramientas", + "fi": "Työkaluvuokraamo", + "fr": "Location d'outils", + "gl": "Alugueiro de ferramentas", + "he": "השכרת כלים", + "it": "Noleggio Utensili", + "ja": "工具レンタル店", + "ko": "도구 대여점", + "mk": "Изнајмување алати", + "nl": "Gereedschapsverhuur", + "no": "Verktøyutleie", + "pl": "Wypożyczalnia narzędzi", + "pt-BR": "Aluguel de ferramentas", + "pt": "Aluguer de ferramentas", + "ru": "Аренда инструмента", + "sk": "Požičovňa nástrojov", + "sr": "Изнајмљивање алата", + "sv": "Verktygsuthyrning", + "tr": "Alet Kiralama", + "uk": "Прокат інструмента", + "vi": "Cho thuê Công cụ", + "zh-CN": "工具租赁店", + "zh-TW": "工具租賃" + } + }, + "shop/toys": { + "title": { + "C": "Toy Store", + "af": "Speelgoedwinkel", + "ar": "متجر ألعاب", + "ast": "Xuguetería", + "bg": "Магазин за играчки", + "bn": "খেলনার দোকান", + "bs": "Prodavnica igračaka", + "ca": "Botiga de joguines", + "cs": "Hračkářství", + "da": "Legetøjsbutik", + "de": "Spielwarengeschäft", + "el": "Κατάστημα Παιχνιδιών", + "en-GB": "Toy Shop", + "en": "Toy Store", + "eo": "Ludila vendejo", + "es": "Juguetería", + "et": "Mänguasjapood", + "fa": "اسباب بازی فروشی", + "fi": "Lelukauppa", + "fr": "Magasin de jouets", + "gl": "Tenda de xoguetes", + "he": "חנות צעצועים", + "hr": "Prodavaonica igračaka", + "hu": "Játékbolt", + "id": "Toko Mainan", + "is": "Dótabúð", + "it": "Negozio di giocattoli", + "ja": "玩具店", + "ko": "완구점", + "lt": "Žaislų parduotuvė", + "lv": "Rotaļlietu veikals", + "mk": "Продавница за играчки", + "ms": "Kedai Permainan", + "nl": "Speelgoedwinkel", + "no": "Lekebutikk", + "pl": "Sklep z zabawkami", + "pt-BR": "Loja de brinquedos", + "pt": "Loja de brinquedos", + "ro": "Magazin de Jucării", + "ru": "Игрушки", + "sk": "Hračkárstvo", + "sl": "Trgovina igrač", + "sr": "Продавница играчака", + "sv": "Leksaksaffär", + "ta": "விளையாட்டுப் பொருட் கடை", + "te": "బొమ్మల కొట్టు", + "tr": "Oyuncak Mağazası", + "uk": "Іграшки", + "vi": "Tiệm Đồ chơi", + "yue": "玩具舖", + "zh-CN": "玩具店", + "zh-HK": "玩具店", + "zh-TW": "玩具店", + "zh": "玩具店" + } + }, + "shop/trade": { + "title": { + "C": "Trade Shop", + "ar": "محلات بيع مواد بالجملة", + "cs": "stavebniny", + "da": "Brancheforhandler", + "de": "Baustoffhandel", + "el": "Εμπορικό Κατάστημα", + "en-GB": "Trade Shop", + "en": "Trade Shop", + "eo": "Pogranda vendejo (konstruaĵ‑materialoj)", + "es": "Tienda comercial / Corralón", + "fr": "Grossiste", + "gl": "Distribuidor", + "he": "חנות קמעונאית", + "hu": "Szakáruház", + "is": "Iðnaðarvörusala", + "it": "Materiali da edilizia", + "ja": "建築資材店", + "ko": "무역 가게", + "mk": "Занаетчиски набавки", + "nl": "Bouwmaterialenhandel", + "pl": "Skład materiałów budowlanych", + "pt-BR": "Distribuidor", + "pt": "Loja de materiais de construção", + "ru": "Оптовая база", + "sk": "Stavebniny", + "sr": "Трговачка продавница", + "sv": "Proffshandel", + "tr": "Ticaret Mağazası", + "uk": "Оптово-роздрібний магазин", + "vi": "Tiệm Công nghiệp", + "zh-CN": "材料商店", + "zh-TW": "材料行" + } + }, + "shop/travel_agency": { + "title": { + "C": "Travel Agency", + "af": "Reisagentskap", + "ar": "وكالة سفر", + "ast": "Axencia de viaxes", + "bg": "Туристическа агенция", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "en": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyages", + "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "lv": "Ceļojumu aģentūra", + "mk": "Туристичка агенција", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Бюро путешествий", + "sk": "Cestovná agentúra", + "sl": "Turistična agencija", + "so": "Wakaalad Socdaal", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Turizm Acentası", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "zh": "旅行社" + } + }, + "shop/trophy": { + "title": { + "C": "Trophy Shop", + "ar": "محل بيع جوائز ودروع ولوحات تذكارية", + "ca": "Botiga de trofeus", + "cs": "Prodejna trofejí", + "de": "Trophäengeschäft", + "el": "Κατάστημα Τροπαίων", + "en": "Trophy Shop", + "eo": "Vendejo de pokaloj kaj premioj", + "es": "Tienda de trofeos", + "gl": "Tenda de trofeos", + "he": "חנות מדליות", + "hu": "Kupák, kitüntetések boltja", + "it": "Negozio di coppe", + "ja": "徽章店", + "ko": "트로피 가게", + "mk": "Продавница за трофеи", + "nl": "Trofeewinkel", + "pl": "Sklep z trofeami", + "pt-BR": "Loja de troféus", + "pt": "Loja de troféus", + "sk": "Obchod s trofejami", + "sr": "Продавница трофеја", + "sv": "Affär för troféer", + "tr": "Kupa Dükkanı", + "uk": "Магазин нагород", + "vi": "Tiệm Giải thưởng", + "zh-CN": "奖杯奖牌店", + "zh-TW": "獎盃商店" + } + }, + "shop/tyres": { + "title": { + "C": "Tire Store", + "af": "Bandewinkel", + "ar": "محل بيع إطارات", + "ast": "Neumáticos", + "bg": "Магазин за автомобилни гуми", + "bs": "Prodavnica guma", + "ca": "Botiga de pneumàtics", + "cs": "Pneuservis", + "da": "Dækforhandler", + "de": "Reifenhandel", + "el": "Βουλκανιζατέρ", + "en-AU": "Tyre Shop", + "en-GB": "Tyre Shop", + "en": "Tire Store", + "eo": "Aerbenda vendejo", + "es": "Tienda de neumáticos", + "et": "Rehvipood", + "fa": "تایر فروشی", + "fi": "Rengasliike", + "fr": "Magasin de pneus", + "gl": "Tenda de pneumáticos", + "he": "חנות צמיגים", + "hr": "Prodavaonica pneumaticima", + "hu": "Autógumibolt", + "id": "Toko Ban", + "is": "Dekkjabúð", + "it": "Gommista", + "ja": "タイヤ店", + "ko": "타이어 가게", + "lt": "Padangų parduotuvė", + "lv": "Riepu veikals", + "mk": "Продавница за автогуми", + "ms": "Kedai Tayar", + "nl": "Bandenwinkel", + "no": "Dekkutsalg", + "pl": "Sklep z oponami / wulkanizacja", + "pt-BR": "Loja de pneus/borracharia", + "pt": "Loja de pneus", + "ro": "Magazin de Roți", + "ru": "Шины", + "sk": "Predajňa pneumatík", + "sl": "Prodaja pnevmatik", + "sr": "Продавница гума", + "sv": "Däckfirma", + "tr": "Araç Lastiği Mağazası", + "uk": "Колеса та шини", + "vi": "Tiệm Lốp xe", + "yue": "軚舖", + "zh-CN": "轮胎店", + "zh-HK": "輪胎店", + "zh-TW": "輪胎店", + "zh": "轮胎店" + } + }, + "shop/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaner Store", + "ar": "متجر المكنسات الكهربائية", + "ast": "Tienda d'aspiradores", + "ca": "Botiga d'aspiradors", + "cs": "Obchod s vysavači", + "da": "Støvsugerforhandler", + "de": "Staubsaugergeschäft", + "el": "Κατάστημα Ηλεκτρικών Σκουπών", + "en-GB": "Vacuum Cleaner Shop", + "en": "Vacuum Cleaner Store", + "eo": "Polvosuĉila vendejo", + "es": "Tienda de aspiradoras", + "et": "Tolmuimeja kauplus", + "fa": "فروشگاه جاروبرقی", + "fi": "Pölynimuriliike", + "fr": "Magasin d'électroménager de nettoyage", + "gl": "Tenda de aspiradoras", + "he": "חנות שואבי אבק", + "hr": "Trgovina za usisavače", + "hu": "Porszívóbolt", + "id": "Toko Pengisap Debu", + "is": "Verslun með ryksugur", + "it": "Negozio di aspirapolveri", + "ja": "掃除機店", + "ko": "진공청소기 가게", + "lv": "Putekļusūcēju veikals", + "mk": "Продавница за правосмукалки", + "nl": "Stofzuigerwinkel", + "no": "Støvsugerbutikk", + "pl": "Sklep z odkurzaczami", + "pt-BR": "Loja de Aspiradores de Pó", + "pt": "Loja de aspiradores", + "ro": "Magazin de Aspiratoare", + "ru": "Магазин по продаже пылесосов", + "sk": "Obchod s vysavačmi", + "sl": "Trgovina s sesalci", + "sr": "Продавница усисивача", + "sv": "Dammsugarbutik", + "tr": "Elektrikli Süpürge Mağazası", + "uk": "Пилотяги", + "vi": "Tiệm Máy Hút bụi", + "zh-CN": "吸尘器店", + "zh-HK": "吸塵機店", + "zh-TW": "吸塵器店" + } + }, + "shop/variety_store": { + "title": { + "C": "Variety Store", + "af": "Algemene handelaar", + "ar": "محلات كماليات رخيصة (أبو خمسة)", + "ast": "Bazar", + "bg": "Смесен магазин", + "bs": "Prodavnica mješovite robe", + "ca": "Botiga de tot a 100", + "cs": "Laciné zboží", + "da": "Spøg og skæmtbutik", + "de": "Sonderpostenmarkt", + "el": "Κατάστημα 1 ευρώ", + "en-GB": "Variety Store", + "en": "Variety Store", + "eo": "Ĉio-po-unu-spesmilo vendejo", + "es": "Tienda de variedades o bazar", + "et": "Kodukauba pood", + "fa": "فروشگاه متنوع و ارزان", + "fi": "Halpahalli", + "fr": "Magasin à prix unique ou à bas prix", + "gl": "Tenda de variedades ou bazar", + "he": "חנות מגוון מוצרים", + "hr": "Prodavaonica mješovite robe", + "hu": "100 forintos bolt", + "id": "Toserba", + "is": "Allrahandaverslun", + "it": "Negozio a prezzo fisso", + "ja": "雑貨店(低価格)", + "ko": "잡화점", + "mk": "Продавница за разновидна роба", + "nl": "Euroshop", + "pl": "Sklep z różnościami", + "pt-BR": "Loja de Variedades", + "pt": "Loja dos chineses", + "ro": "Magazin de Varietăți", + "ru": "Товары по одной цене", + "sk": "Obchod so zmiešaným tovarom", + "sl": "Trgovina z mešanim blagom", + "sr": "Продавница мешовите робе", + "sv": "Fyndbutik", + "tr": "Herşey 1 TL Mağazası", + "uk": "Універсам", + "vi": "Tiệm Tạp hóa", + "yue": "雜貨舖", + "zh-CN": "杂货店", + "zh-HK": "十蚊店", + "zh-TW": "雜貨店", + "zh": "杂货店" + } + }, + "shop/video": { + "title": { + "C": "Video Store", + "af": "Videowinkel", + "am": "ቪዲዮ", + "ar": "محل بيع وتأجير الأفلام", + "ast": "Tienda de videos", + "bg": "Видеотека", + "bs": "Video klub", + "ca": "Botiga de vídeos", + "cs": "Video obchod", + "da": "Videobutik", + "de": "Videothek", + "el": "Βιντεοκλάμπ", + "en-GB": "Video/DVD Shop", + "en": "Video Store", + "eo": "Filma vendejo/pruntejo", + "es": "Videoclub", + "et": "Videopood", + "fa": "فیلم فروشی", + "fi": "Videovuokraamo", + "fr": "Vidéo-club", + "gl": "Videoclube", + "he": "חנות סרטים", + "hr": "Videoteka", + "hu": "Videófilmbolt vagy -kölcsönző", + "id": "Toko Video", + "is": "Myndbandaverslun", + "it": "Videoteca", + "ja": "ビデオソフト店", + "ko": "비디오 가게", + "lt": "Vaizdo prekių parduotuvė", + "lv": "Video veikals", + "mk": "Видеотека", + "nl": "Videotheek", + "no": "Videoforhandler", + "pl": "Sklep/wypożyczalnia z filmami wideo/dvd", + "pt-BR": "Loja/Locadora de Vídeos", + "pt": "Videoclube", + "ro": "Magazin Video", + "ru": "Видеомагазин", + "sk": "Videopožičovňa", + "sl": "Videoteka", + "sr": "Видео-клуб", + "sv": "Videobutik", + "tr": "Film - Video Mağazası", + "uk": "Відео", + "vi": "Tiệm Phim", + "yue": "影視店", + "zh-CN": "影像店", + "zh-HK": "影視店", + "zh-TW": "錄影帶店", + "zh": "影像店" + } + }, + "shop/video_games": { + "title": { + "C": "Video Game Store", + "ar": "متجر العاب الفيديو", + "ast": "Tienda de videuxuegos", + "ca": "Botiga de videojocs", + "cs": "Obchod s videohrami", + "da": "Videospilbutik", + "de": "Videospielgeschäft", + "el": "Μαγαζί Βιντεοπαιχνιδιών", + "en-GB": "Video Games Shop", + "en": "Video Game Store", + "eo": "Videoluda vendejo", + "es": "Tienda de videojuegos", + "et": "Konsoolimängude pood", + "fa": "فروشگاه بازی ویدئویی", + "fi": "Videopeliliike", + "fr": "Magasin de location et vente de jeux vidéo", + "gl": "Tenda de videoxogos", + "he": "חנות למשחקי מחשב", + "hr": "Prodavaonica video igara", + "hu": "Videojátékbolt", + "id": "Toko Permainan Video", + "is": "Tölvuleikjaverslun", + "it": "Negozio di videogiochi", + "ja": "テレビゲーム販売店", + "ko": "비디오 게임 가게", + "lt": "Video Žaidimų parduotuvė", + "lv": "Videospēļu veikals", + "mk": "Продавница за видеоигри", + "nl": "Computerspelwinkel", + "no": "Dataspillbutikk", + "pl": "Sklep z grami wideo", + "pt-BR": "Loja de Vídeogames", + "pt": "Loja de videojogos", + "ro": "Magazin de Jocuri de Calculator", + "ru": "Магазин видеоигр", + "sk": "Obchod s videohrami", + "sl": "Trgovina z video igrami", + "sr": "Продавница видео-игара", + "sv": "TV-spel", + "tr": "Bilgisayar Oyun Mağazası", + "uk": "Комп’ютерні ігри", + "vi": "Tiệm Trò chơi Điện tử", + "zh-CN": "电子游戏店", + "zh-HK": "電子遊戲店", + "zh-TW": "電子遊戲店" + } + }, + "shop/watches": { + "title": { + "C": "Watches Shop", + "ar": "متجر الساعات اليدوية", + "ast": "Reloxería", + "ca": "Òptica", + "cs": "Hodinářství", + "da": "Urbutik", + "de": "Uhrengeschäft", + "el": "Κατάστημα Ρολογιών", + "en-GB": "Watches Shop", + "en": "Watches Shop", + "eo": "Horloĝa vendejo", + "es": "Relojería", + "et": "Kellapood", + "fa": "ساعت فروشی", + "fi": "Kellokauppa", + "fr": "Magasin de montres", + "gl": "Reloxaría", + "he": "שען", + "hr": "Trgovina Satovima", + "hu": "Órabolt (karóra)", + "is": "Úraverslun", + "it": "Negozio di orologi", + "ja": "腕時計店", + "ko": "손목시계 가게", + "lt": "Laikrodžių parduotuvė", + "lv": "Pulksteņu Veikals", + "mk": "Продавница за часовници", + "nl": "Horlogewinkel", + "no": "Urmaker", + "pl": "Sklep z zegarkami", + "pt-BR": "Relojoaria", + "pt": "Loja de relógios", + "ro": "Magazin de Ceasuri", + "ru": "Магазин часов", + "sk": "Obchod s hodinkami", + "sl": "Trgovina z urami", + "sr": "Продавница сатова", + "sv": "Klockaffär", + "tr": "Saatçi", + "uk": "Годинники", + "vi": "Tiệm Đồng hồ Đeo tay", + "zh-CN": "手表店", + "zh-HK": "手錶店", + "zh-TW": "鐘錶行" + } + }, + "shop/water": { + "title": { + "C": "Drinking Water Shop", + "ar": "متجر مياه شرب", + "ca": "Botiga d'aigua potable", + "cs": "Obchod s pitnou vodou", + "de": "Trinkwasserladen", + "el": "Κατάστημα Πόσης Νερού", + "en": "Drinking Water Shop", + "eo": "Trinkakv-vendejo", + "es": "Tienda de agua potable", + "et": "Joogivee pood", + "fa": "فروشگاه آب", + "fi": "Juomavesikauppa", + "fr": "Magasin d'eau potable", + "gl": "Tenda de auga potábel", + "he": "חנות מי שתייה", + "hu": "Ivóvíz-bolt", + "it": "Negozio di acqua da bere", + "ja": "飲料水店", + "ko": "식수 가게", + "mk": "Продавница за пивка вода", + "nl": "Drinkwaterwinkel", + "pl": "Sklep z wodą pitną", + "pt-BR": "Loja de Água Potável", + "pt": "Loja de água potável", + "sk": "Obchod s pinou vodou", + "sr": "Продавница пијаће воде", + "sv": "Affär för dricksvatten", + "tr": "İçme Suyu Mağazası", + "uk": "Магазин питної води", + "vi": "Tiệm Nước uống", + "zh-CN": "饮水店", + "zh-TW": "飲用水商店" + } + }, + "shop/water_sports": { + "title": { + "C": "Watersport/Swim Shop", + "ar": "متجر رياضة مائية/سباحة", + "ast": "Tienda de natación/deportes acuáticos", + "ca": "Botiga d'esports aquàtics", + "cs": "Plavecké potřeby", + "da": "Svømmesport/Svømmeudstyrsbutik", + "de": "Wassersportgeschäft", + "el": "Κατάστημα Ειδών Θαλάσσιων Σπορ / Κολύμβησης", + "en-GB": "Watersport/Swim Shop", + "en": "Watersport/Swim Shop", + "eo": "Akvosport-aparata vendejo", + "es": "Tienda de deporte acuático / natación", + "et": "Veesporditarvete kauplus", + "fa": "فروشگاه لوازم ورزش‌های آبی / شنا", + "fi": "Vesiurheiluliike", + "fr": "Vente d'équipements et d'articles pour sports nautiques", + "gl": "Tenda de deportes acuáticos / natación", + "he": "חנות שחייה", + "hr": "Trgovina za vodene sportove", + "hu": "Vízisport-bolt", + "id": "Toko Renang/Olahraga Air", + "is": "Verslun með sund/vatnaíþróttavörur", + "it": "Negozio per sport acquatici", + "ja": "ウォータースポーツ用品店", + "ko": "수상 스포츠/수영 가게", + "mk": "Опрема за капење/водени спортови", + "nl": "Watersport-/Zwemwinkel", + "no": "Vannsport/Svømmebutikk", + "pl": "Sklep ze sprzętem do sportów wodnych", + "pt-BR": "Loja de Esportes Aquáticos", + "pt": "Loja de desportos aquáticos", + "ru": "Водный спорт/ Спорттовары", + "si": "ජල ක්‍රීඩා/ පිහිනුම් තටාකය", + "sk": "Ochod s plaveckým vybavením", + "sr": "Продавница пливачке опреме", + "sv": "Vattensport/simning", + "tr": "Su Sporları Mağazası", + "uk": "Водний спорт/Спорттовари", + "vi": "Tiệm Dụng cụ Bơi lội", + "zh-CN": "水上运动/泳具店", + "zh-HK": "水上活動/游泳用品店", + "zh-TW": "水上活動/泳具店" + } + }, + "shop/weapons": { + "title": { + "C": "Weapon Shop", + "ar": "متجر أسلحة", + "ast": "Armería", + "ca": "Armeria", + "cs": "Zbraně a střelivo", + "da": "Våbenbutik", + "de": "Waffengeschäft", + "el": "Κατάστημα Οπλισμού", + "en-GB": "Weapon Shop", + "en": "Weapon Shop", + "eo": "Armila vendejo", + "es": "Armería", + "et": "Relvapood", + "fa": "فروشگاه سلاح", + "fi": "Aseliike", + "fr": "Armurerie", + "gl": "Armaría", + "he": "חנות נשק קר", + "hr": "Trgovina za oružje", + "hu": "Fegyverbolt", + "id": "Toko Senjata", + "is": "Vopnaverslun", + "it": "Armeria", + "ja": "武器屋", + "ko": "무기 가게", + "lt": "Ginklų parduotuvė", + "lv": "Ieroču Veikals", + "mk": "Продавница за оружје", + "nl": "Wapenwinkel", + "no": "Våpenbutikk", + "pl": "Sklep z bronią", + "pt-BR": "Loja de Armas", + "pt": "Loja de armas", + "ro": "Magazin de Arme", + "ru": "Оружейный магазин", + "sk": "Ochod so zbraňami", + "sl": "Trgovina z orožjem", + "sr": "Оружарница", + "sv": "Vapenaffär", + "ta": "ஆயுதவிற்பனைக் கடை", + "tr": "Silah Mağazası", + "uk": "Зброя", + "vi": "Tiệm Súng", + "zh-CN": "武器店", + "zh-HK": "武器店", + "zh-TW": "武器店" + } + }, + "shop/wholesale": { + "title": { + "C": "Wholesale Store", + "ar": "متجر بيع بالجملة", + "cs": "Velkoobchodní sklad", + "de": "Großhandel", + "el": "Κατάστημα Χονδρικής", + "en-GB": "Wholesale Shop / Cash & Carry", + "en": "Wholesale Store", + "eo": "Pogranda vendejo", + "es": "Almacén al por mayor", + "et": "Hulgikauplus", + "fi": "Tukkukauppa", + "fr": "Commerce de gros", + "gl": "Almacén ó por maior", + "he": "חנות סיטונאות", + "hu": "Nagykereskedés", + "is": "Heildverslun", + "it": "Grossista", + "ja": "卸売店", + "ko": "도매상", + "mk": "Големопродажен центар", + "nl": "Groothandel", + "pl": "Hurtownia", + "pt-BR": "Atacadista", + "pt": "Loja grossista", + "ru": "Оптовый магазин", + "sk": "Veľkoobchod", + "sr": "Велепродајна продавница", + "sv": "Grosistaffär", + "ta": "மொத்தவிலைக் கடை", + "tr": "Toptan satış Mağazası", + "uk": "Гуртова торгівля", + "vi": "Tiệm Bán buôn", + "zh-CN": "批发市场", + "zh-TW": "批發商" + } + }, + "shop/wigs": { + "title": { + "C": "Wig Shop", + "ar": "متجر بيع الباروكات", + "cs": "Paruky", + "de": "Perückenladen", + "en": "Wig Shop", + "eo": "Vendejo de perukoj", + "es": "Tienda de pelucas", + "fr": "Magasin de perruques", + "gl": "Tenda de perrucas", + "he": "חנות פיאות", + "hu": "Paróka-szaküzlet", + "it": "Negozio di parrucche", + "ja": "かつら店", + "ko": "가발 가게", + "mk": "Продавница за перики", + "nl": "Pruikenwinkel", + "pl": "Sklep z perukami", + "pt-BR": "Loja de perucas", + "pt": "Loja de perucas", + "sk": "Obchod s parochňami", + "sv": "Affär för peruker", + "tr": "Peruk Mağazası", + "uk": "Магазин перук", + "vi": "Tiệm Tóc giả", + "zh-CN": "假发专卖店", + "zh-TW": "假髮專賣店" + } + }, + "shop/window_blind": { + "title": { + "C": "Window Blind Store", + "ar": "محل لبيع ستائر النوافذ", + "ast": "Venta de persianes", + "ca": "Botiga de persianes", + "cs": "Obchod s roletami", + "da": "Persienneforhandler", + "de": "Fensterladengeschäft", + "el": "Κατάστημα σκιάστρων παραθύρου", + "en-GB": "Window Blind Shop", + "en": "Window Blind Store", + "eo": "Fenestr-kovrila vendejo", + "es": "Tienda de persianas", + "et": "Aknakatete kauplus", + "fa": "فروشگاه پرده و کرکره", + "fi": "Kaihdinmyymälä", + "fr": "Magasin de vente de stores", + "gl": "Tenda de persianas", + "he": "חנות וילונות", + "hu": "Redőnybolt", + "id": "Toko Kerai", + "is": "Verslun með rimlagluggatjöld", + "it": "Negozio di tapparelle e serrande", + "ja": "ブラインドカーテン専門店", + "ko": "창문 블라인드 가게", + "lv": "Logu žalūziju veikals", + "mk": "Продавница за завеси и ролетни", + "nl": "Jaloeziewinkel", + "no": "Persiennebutikk", + "pl": "Sklep z żaluzjami/roletami", + "pt-BR": "Loja de Persianas", + "pt": "Loja de estores", + "ru": "Магазин жалюзей", + "sk": "Obchod so žalúziami", + "sl": "Trgovina z okenskimi senčili", + "sv": "Persienner", + "tr": "Jaluzi Mağazası", + "uk": "Жалюзі, ролети", + "vi": "Tiệm Mành", + "zh-CN": "百叶窗店", + "zh-HK": "百葉簾店", + "zh-TW": "窗廉店" + } + }, + "shop/wine": { + "title": { + "C": "Wine Shop", + "ar": "متجر نبيذ", + "ast": "Bodega", + "ca": "Botiga de vins", + "cs": "Vinotéka", + "da": "Vinforretning", + "de": "Weinhandel", + "el": "Κάβα Κρασιών", + "en-GB": "Wine Shop", + "en": "Wine Shop", + "eo": "Vina vendejo", + "es": "Tienda de vinos", + "et": "Veinipood", + "fa": "فروشگاه شراب", + "fi": "Viinikauppa", + "fr": "Caviste", + "gl": "Tenda de viños", + "he": "חנות יינות", + "hr": "Prodavaonica vina", + "hu": "Borszaküzlet", + "id": "Toko Anggur", + "is": "Vínbúð", + "it": "Enoteca", + "ja": "ワイン店", + "ko": "와인 가게", + "lt": "Vyno parduotuvė", + "lv": "Vīna veikals", + "mk": "Винотека", + "nl": "Wijnhandel", + "no": "Vinbutikk", + "pl": "Sklep z winami", + "pt-BR": "Loja de Vinhos", + "pt": "Loja de vinhos", + "ro": "Magazin de Vinuri", + "ru": "Винный магазин", + "sk": "Vináreň", + "sl": "Vinoteka", + "sr": "Винарница", + "sv": "Vinaffär", + "tr": "Şarap Mağazası", + "uk": "Вино", + "vi": "Tiệm Rượu vang", + "yue": "酒舖", + "zh-CN": "酒品商店", + "zh-HK": "酒品店", + "zh-TW": "販酒店" + } + }, + "tourism/alpine_hut": { + "title": { + "C": "Alpine Hut", + "af": "Berghuisie", + "ar": "كوخ بجبال الألب", + "ast": "Refuxu d'alpinismu", + "bg": "Хижа", + "bs": "Planinski dom", + "ca": "Refugi de muntanya", + "cs": "Horská chata", + "da": "Bjerghytte", + "de": "Bewirtschaftete Schutzhütte", + "el": "Αλπική Καλύβα", + "en-GB": "Alpine Hut", + "en": "Alpine Hut", + "eo": "Montara rifuĝejo", + "es": "Refugio de montaña", + "et": "Alpimaja", + "fa": "کلبه آلپ", + "fi": "Alppimaja", + "fr": "Refuge de montagne", + "gl": "Refuxio de montaña", + "he": "בקתה הררית", + "hr": "Planinarski dom", + "hu": "Menedékház (személyzettel)", + "is": "Fjallakofi", + "it": "Rifugio", + "ja": "山小屋", + "ko": "고산장", + "lt": "Kalnų namelis", + "mk": "Планинарски дом", + "nl": "Berghut", + "no": "Fjellhytte", + "pl": "Chata górska", + "pt-BR": "Abrigo de montanha", + "pt": "Albergue alpino", + "ro": "Cabană", + "ru": "Горный приют", + "sk": "Vysokohorská chata", + "sl": "Planinska koča", + "sr": "Планинарски дом", + "sv": "Fjällstation", + "tr": "Dağ Evi", + "uk": "Гірський притулок", + "vi": "Túp lều trên Núi", + "yue": "高山屋仔", + "zh-CN": "高山小屋", + "zh-HK": "高山小屋", + "zh-TW": "高山小屋", + "zh": "高山小屋" + } + }, + "tourism/apartment": { + "title": { + "C": "Guest Apartment / Condo", + "ar": "شقة سياحية", + "ca": "Habitatge de convidats", + "cs": "Byt/apartmán k pronájmu", + "da": "Gæstelejlighed/Ejerlejlighed", + "de": "Ferienwohnung", + "el": "Ξενώνας / Διαμέρισμα", + "en-GB": "Guest Apartment / Condo", + "en": "Guest Apartment / Condo", + "eo": "Apartamento feria (luprenebla)", + "es": "Apartamento de huéspedes", + "et": "Külaliskorter", + "fa": "آپارتمان مهمان / کاندو", + "fi": "Vierasmajoitus", + "fr": "Location de vacances", + "gl": "Apartamento de hóspedes", + "he": "דירה לאורחים", + "hr": "Turistički apartman", + "hu": "Apartman", + "is": "Gestaíbúð", + "it": "Affittacamere", + "ja": "リゾートマンション", + "ko": "게스트 아파트 / 콘도", + "lt": "Svečių apartamentai / butas", + "mk": "Пансион", + "nl": "Vakantieappartement", + "pl": "Mieszkanie na wynajem", + "pt-BR": "Apartamento de Temporada", + "pt": "Apartamento de alojamento local", + "ro": "Apartament de Închiriat", + "ru": "Гостевые апартаменты/квартира", + "sl": "Apartma / Gostišče", + "sr": "Гостински апартман", + "sv": "Turistlägenhet", + "tr": "Misafir Apartmanı", + "uk": "Мебльована квартира/Комплекс", + "vi": "Khu chung cư Nghỉ dưỡng", + "zh-CN": "出租公寓", + "zh-HK": "民宿公寓 / 短租公寓", + "zh-TW": "假日公寓" + } + }, + "tourism/aquarium": { + "title": { + "C": "Aquarium", + "ar": "حوض سمك", + "ast": "Acuariu", + "cs": "Akvárium", + "da": "Akvarium", + "de": "Aquarium", + "el": "Ενυδρείο", + "en-GB": "Aquarium", + "en": "Aquarium", + "eo": "Akvario", + "es": "Acuario", + "et": "Akvaarium", + "fa": "آکواریوم", + "fi": "Akvaario", + "fr": "Aquarium", + "gl": "Acuario", + "he": "אקווריום", + "hr": "Akvarij", + "hu": "Akvárium", + "is": "Sædýrasafn", + "it": "Acquario", + "ja": "水族館", + "ko": "아쿠아리움", + "lt": "Akvariumas", + "lv": "Akvārijs", + "mk": "Аквариум", + "ms": "Akuarium", + "nl": "Aquarium", + "no": "Akvarium", + "pl": "Akwarium", + "pt-BR": "Aquário", + "pt": "Aquário público", + "ro": "Acvariu", + "ru": "Аквариум", + "sk": "Akvárium", + "sl": "Akvarij", + "sr": "Акваријум", + "sv": "Akvarium", + "ta": "மீன் காட்சியகம்", + "tr": "Akvaryum", + "uk": "Акваріум", + "vi": "Thủy cung", + "zh-CN": "水族馆", + "zh-HK": "水族館", + "zh-TW": "水族館(展覽館)" + } + }, + "tourism/artwork": { + "title": { + "C": "Artwork", + "af": "Kunswerk", + "ar": "عمل فني", + "ast": "Obra d'arte", + "bg": "Произведение на изкуството", + "bs": "Umjetničko djelo", + "ca": "Obra d'art", + "cs": "Umělecké dílo", + "da": "Kunstværk", + "de": "Kunst", + "el": "Έργο τέχνης", + "en-GB": "Artwork", + "en": "Artwork", + "eo": "Artverko", + "es": "Obra de arte", + "et": "Kunstiteos", + "fa": "اثر هنری", + "fi": "Taideteos", + "fr": "Œuvre d'art", + "gl": "Obra artística", + "he": "אומנות", + "hr": "Umjetničko djelo", + "hu": "Műalkotás", + "id": "Karya Seni", + "is": "Listaverk", + "it": "Opera d'arte", + "ja": "パブリックアート", + "ko": "예술품", + "lt": "Meno kūrinys", + "lv": "Mākslas darbs", + "mk": "Уметничко дело", + "nl": "Kunstwerk", + "no": "Kunstverk", + "pl": "Dzieło sztuki", + "pt-BR": "Obra de arte", + "pt": "Obra de arte pública", + "ru": "Произведение искусства", + "sk": "Umelecké dielo", + "sl": "Umetnina", + "sr": "Уметничко дело", + "sv": "Publik konst", + "ta": "ஓவியம்", + "tr": "Sanat Eseri", + "uk": "Витвір мистецтва", + "vi": "Nghệ phẩm", + "yue": "藝術品", + "zh-CN": "艺术品", + "zh-HK": "藝術品", + "zh-TW": "公共藝術", + "zh": "艺术品" + } + }, + "tourism/attraction": { + "title": { + "C": "Tourist Attraction", + "af": "Toerismeaantreklikheid", + "ar": "معلم سياحي", + "ast": "Atracción turística", + "bg": "Туристическа атракция", + "bn": "পর্যটক আকর্ষণ", + "bs": "Turistička atrakcija", + "ca": "Atracció turística", + "cs": "Pamětihodnost", + "da": "Turistattraktion", + "de": "Sehenswürdigkeit", + "el": "Αξιοθέατο", + "en-GB": "Tourist Attraction", + "en": "Tourist Attraction", + "eo": "Turisma vidindaĵo", + "es": "Atracción turística", + "et": "Turismiatraktsioon", + "fa": "جاذبه گردشگری", + "fi": "Turistikohde", + "fr": "Attraction touristique", + "gl": "Atracción turística", + "he": "אתר תיירותי", + "hr": "Turistička atrakcija", + "hu": "Turisztikai látványosság", + "id": "Objek Wisata", + "is": "Ferðamannagildra", + "it": "Attrazione turistica", + "ja": "観光地", + "ko": "관광 명소", + "lt": "Turistų traukos vieta", + "lv": "Tūrisma objekts", + "mk": "Знаменитост", + "nl": "Toeristische attractie", + "no": "Turistattraksjon", + "pl": "Atrakcja turystyczna", + "pt-BR": "Atração turística", + "pt": "Atração turística", + "ro": "Atracție Turistică", + "ru": "Достопримечательность", + "sk": "Turistická atrakcia", + "sl": "Turistična znamenitost", + "sr": "Туристичка атракција", + "sv": "Turistattraktion", + "tr": "Turistik Yer", + "uk": "Туристична пам’ятка", + "vi": "Điểm Thu hút Du lịch", + "yue": "旅行名勝", + "zh-CN": "旅游名胜", + "zh-HK": "觀光名勝", + "zh-TW": "觀光景點", + "zh": "旅游景点" + } + }, + "tourism/camp_pitch": { + "title": { + "C": "Camp Pitch", + "ca": "Parcel·la de càmping", + "cs": "místo pro stan/karavan", + "de": "Zeltplatz/Wohnwagenplatz", + "en": "Camp Pitch", + "eo": "Loko por kampadveturilo/tendo", + "es": "Lugar para acampar", + "fi": "Leirintäalueen kenttä", + "fr": "Parcelle dans un camping", + "gl": "Lugar de campismo", + "he": "מאהל", + "hu": "Sátorhely", + "it": "Piazzola", + "ja": "キャンプ区画(キャンプ場内)", + "ko": "캠핑장 구역", + "mk": "Логориште", + "nl": "Staplaats (camping)", + "pl": "Miejsce na kempingu", + "pt-BR": "Acampamento de arremesso", + "pt": "Alvéolo de parque de campismo", + "sr": "Камп-место", + "sv": "Tältplats/husvagnsplats", + "tr": "Kamp Sahası", + "uk": "Місце під намет", + "zh-CN": "宿营位", + "zh-TW": "營地" + } + }, + "tourism/camp_site": { + "title": { + "C": "Campground", + "ar": "مكان التخييم", + "ast": "Campamentu", + "ca": "Àrea d'acampada", + "cs": "Tábořiště", + "da": "Campingplads", + "de": "Campingplatz", + "el": "Χώρος Κατασκήνωσης", + "en-GB": "Camp Site", + "en": "Campground", + "eo": "Kampadejo", + "es": "Campamento", + "et": "Telkimisala", + "fa": "اردوگاه", + "fi": "Leirintäalue", + "fr": "Camping", + "gl": "Cámping", + "he": "אתר מחנאות", + "hu": "Kemping területe", + "id": "Perkemahan", + "is": "Tjaldsvæði", + "it": "Campeggio", + "ja": "キャンプ場", + "ko": "캠핑장", + "lv": "Kempinga vieta", + "mk": "Камп", + "nl": "Camping", + "pl": "Kemping", + "pt-BR": "Local de acampamento", + "pt": "Parque de campismo", + "ro": "Teren de Camping", + "ru": "Кемпинг/туристический приют", + "sk": "Kemp", + "sl": "Kamp", + "sr": "Простор за камповање", + "sv": "Campingplats", + "tr": "Kamp Yeri", + "uk": "Табір", + "vi": "Khu Cắm trại", + "yue": "營地", + "zh-CN": "宿营场地", + "zh-HK": "營地", + "zh-TW": "露營地" + } + }, + "tourism/caravan_site": { + "title": { + "C": "RV Park", + "af": "RV Park", + "ar": "موقف عربات كبيرة", + "ast": "Aparcaderu d'autocaravanes", + "bg": "Паркинг за каравани", + "bs": "Kamp park", + "ca": "Càmping per a caravanes", + "cs": "Místo pro karavany", + "da": "Autocamperplads", + "de": "Wohnwagen-Campingplatz", + "el": "Πάρκο τροχόσπιτων", + "en-AU": "Caravan Site", + "en-GB": "Caravan Park", + "en": "RV Park", + "eo": "Kampad-veturila parkumejo", + "es": "Parque de autocaravanas", + "et": "Karavanipark", + "fa": "پارکینگ ماشین کاروان", + "fi": "Asuntoautopysäköinti", + "fr": "Aire pour caravanes", + "gl": "Área de autocaravanas", + "he": "מגרש קרוונים", + "hr": "Parkiralište za kamp kućice", + "hu": "Lakókocsi-hely", + "is": "Hjólhýsagarður", + "it": "Sosta per camper", + "ja": "オートキャンプ場", + "ko": "RV 공원", + "mk": "Трајлерски камп", + "nl": "Caravan-/kampeerwagenterrein", + "no": "Bobilpark", + "pl": "Kemping dla kamperów", + "pt-BR": "Estacionamento de trailers", + "pt": "Parque de caravanas", + "ru": "Стоянка трейлеров", + "sk": "Parkovisko pre karavany", + "sl": "Parkirišče za avtodome", + "sr": "Камп-парк", + "sv": "Ställplats", + "ta": "ஆர்வி பூங்கா", + "tr": "Karavan Parkı", + "uk": "Караван-парк", + "vi": "Bãi Đậu Nhà lưu động", + "yue": "露營車營地", + "zh-CN": "房车营地", + "zh-HK": "露營車營地", + "zh-TW": "露營車停車場", + "zh": "房车营地" + } + }, + "tourism/chalet": { + "title": { + "C": "Holiday Cottage", + "ar": "كوخ لقضاء العطلة", + "cs": "Prázdninová vesnice", + "da": "Feriehus", + "de": "Ferienhaus", + "el": "Εξοχική Κατοικία", + "en-GB": "Holiday Cottage", + "en": "Holiday Cottage", + "eo": "Dometo feria", + "es": "Cabaña vacacional / Bungaló", + "fi": "Loma-asunto", + "fr": "Gîte", + "gl": "Casa rural", + "he": "בקתה לחגים", + "hr": "Bungalov", + "hu": "Nyaralóház", + "id": "Vila Liburan", + "is": "Frístundahús", + "it": "Chalet", + "ja": "貸別荘(戸建て)", + "ko": "별장", + "lt": "Atostogų kotedžas", + "mk": "Викендичка", + "nl": "Vakantiehuisje", + "pl": "Domek/domki na wynajem", + "pt-BR": "Chalé", + "pt": "Casa de campo", + "ru": "Коттедж под аренду", + "sr": "Викендица", + "sv": "Stuga", + "ta": "விடுமுறை குடில்", + "tr": "Tatil Kulübesi", + "uk": "Шале", + "vi": "Nhà nghỉ Riêng biệt", + "zh-CN": "度假屋", + "zh-TW": "假日小屋" + } + }, + "tourism/gallery": { + "title": { + "C": "Art Gallery", + "ar": "رواق الفنون", + "ast": "Galería d'arte", + "ca": "Galeria d'art", + "cs": "Galerie umění", + "da": "Kunstgalleri", + "de": "Kunstgalerie", + "el": "Γκαλερί Τέχνης", + "en-GB": "Art Gallery", + "en": "Art Gallery", + "eo": "Artgalerio", + "es": "Galería de arte", + "et": "Kunstigalerii", + "fa": "گالری هنری", + "fi": "Taidegalleria", + "fr": "Galerie d'art", + "gl": "Galería de arte", + "he": "גלריית אומנות", + "hr": "Umjetnička galerija", + "hu": "Művészeti galéria", + "is": "Listagallerí", + "it": "Galleria d'arte", + "ja": "アートギャラリー", + "kn": "ಕಲಾಮಂದಿರ", + "ko": "미술관", + "lt": "Meno galerija", + "lv": "Mākslas galerija", + "mk": "Уметничка галерија", + "nl": "Kunstgallerij", + "no": "Kunstgalleri", + "pl": "Galeria sztuki", + "pt-BR": "Galeria de Arte", + "pt": "Galeria de arte", + "ro": "Galerie de Artă", + "ru": "Художественная галерея", + "sk": "Umelecká galéria", + "sl": "Umetnostna galerija", + "sr": "Галерија слика", + "sv": "Konstgalleri", + "ta": "கலைக்கூடம்", + "tr": "Sanat Galerisi", + "uk": "Художня галерея", + "vi": "Phòng tranh", + "zh-CN": "美术馆", + "zh-HK": "畫廊", + "zh-TW": "藝廊" + } + }, + "tourism/guest_house": { + "title": { + "C": "Guest House", + "af": "Gastehuis", + "am": "እንግዳ ማረፊያ", + "ar": "دار الضيافة", + "ast": "Pensión", + "bg": "Къща за гости", + "bn": "অতিথিশালা", + "bs": "Gostinjska kuća", + "ca": "Habitacions de lloguer", + "cs": "Penzion", + "da": "Gæstehus", + "de": "Pension", + "el": "Ξενώνας", + "en-GB": "Guest House", + "en": "Guest House", + "eo": "Pensiono", + "es": "Casa de huéspedes / B&B", + "et": "Külalistemaja", + "fa": "مهمان خانه", + "fi": "Majatalo", + "fr": "Chambre d'hôtes", + "gl": "Hostal", + "he": "בית הארחה", + "hr": "Gostinjska kuća", + "hu": "Vendégház", + "id": "Rumah Tamu", + "is": "Gestahús", + "it": "Bed & Breakfast", + "ja": "民宿", + "ko": "민박", + "lt": "Svečių namai", + "lv": "Viesu nams", + "mk": "Приватен пансион", + "nl": "Pension", + "no": "Gjestehus", + "pl": "Pensjonat", + "pt-BR": "Guesthouse", + "pt": "Casa de hóspedes", + "ro": "Casă de Oaspeți", + "ru": "Гостевой дом", + "sk": "Penzión", + "sl": "Penzion", + "sr": "Гостинска кућа", + "sv": "Gästhus", + "ta": "விருந்தினர் இல்லம்", + "tr": "Konuk Evi", + "uk": "Гостьовий будинок", + "vi": "Nhà khách", + "yue": "賓館", + "zh-CN": "客栈", + "zh-HK": "賓館", + "zh-TW": "招待所", + "zh": "宾馆" + } + }, + "tourism/hostel": { + "title": { + "C": "Hostel", + "af": "Hostel", + "am": "ሆስቴል", + "ar": "نزل / شقة مفروشة", + "ast": "Albergue", + "bg": "Хостел", + "bn": "ছাত্রাবাস", + "bs": "Hostel", + "ca": "Alberg", + "cs": "Hostel", + "da": "Vandrerhjem", + "de": "Hostel", + "el": "Ξενώνας", + "en-GB": "Hostel", + "en": "Hostel", + "eo": "Gastejo", + "es": "Albergue", + "et": "Hostel", + "fa": "مسافرخانه", + "fi": "Hostelli", + "fr": "Auberge de jeunesse", + "gl": "Albergue", + "he": "אכסנייה", + "hr": "Hostel", + "hu": "Turistaszálló", + "id": "Kost", + "is": "Farfuglaheimili", + "it": "Ostello", + "ja": "簡易宿泊所", + "ko": "호스텔", + "lt": "Viešbutis", + "lv": "Hostelis", + "mk": "Хостел", + "nl": "Jeugdherberg", + "no": "Hostell", + "pl": "Schronisko lub hostel", + "pt-BR": "Hostel", + "pt": "Hostel", + "ro": "Hostel", + "ru": "Хостел", + "sk": "Hostel", + "sl": "Hostel", + "sr": "Хостел", + "sv": "Vandrarhem", + "ta": "விடுதி", + "tr": "Pansiyon", + "uk": "Хостел", + "vi": "Nhà trọ", + "yue": "旅舍", + "zh-CN": "旅舍", + "zh-HK": "旅舍", + "zh-TW": "旅舍", + "zh": "招待所" + } + }, + "tourism/hotel": { + "title": { + "C": "Hotel", + "af": "Hotel", + "am": "ሆቴል", + "ar": "فندق", + "ast": "Hotel", + "bg": "Хотел", + "bn": "হোটেল", + "bs": "Hotel", + "ca": "Hotel", + "cs": "Hotel", + "da": "Hotel", + "de": "Hotel", + "dv": "ހޮޓާ", + "el": "Ξενοδοχείο", + "en-GB": "Hotel", + "en": "Hotel", + "eo": "Hotelo", + "es": "Hotel", + "et": "Hotell", + "fa": "هتل", + "fi": "Hotelli", + "fr": "Hôtel", + "gl": "Hotel", + "he": "מלון", + "hr": "Hotel", + "hu": "Szálloda", + "id": "Hotel", + "is": "Hótel", + "it": "Albergo", + "ja": "ホテル", + "kn": "ಭೋಜನಾಲಯ", + "ko": "호텔", + "lt": "Viešbutis", + "lv": "Viesnīca", + "mk": "Хотел", + "ms": "Hotel", + "nl": "Hotel", + "no": "Hotell", + "pl": "Hotel", + "pt-BR": "Hotel", + "pt": "Hotel", + "ro": "Hotel", + "ru": "Гостиница", + "sk": "Hotel", + "sl": "Hotel", + "so": "Huteel", + "sq": "Hotel", + "sr": "Хотел", + "sv": "Hotell", + "ta": "உணவகம்", + "te": "హోటెల్", + "tr": "Otel", + "uk": "Готель", + "vi": "Khách sạn", + "yue": "酒店", + "zh-CN": "宾馆", + "zh-HK": "酒店", + "zh-TW": "旅館", + "zh": "旅馆" + } + }, + "tourism/information": { + "title": { + "C": "Information", + "af": "Inligting", + "ar": "معلومات سياحية", + "ast": "Información", + "bg": "Информация", + "bn": "তথ্য", + "bs": "Informacije", + "ca": "Informació", + "cs": "Informace", + "da": "Information", + "de": "Information", + "el": "Πληροφορίες", + "en-GB": "Information", + "en": "Information", + "eo": "Informejo", + "es": "Información turística", + "et": "Info", + "fa": "اطلاعات", + "fi": "Infopiste", + "fr": "Informations", + "gl": "Información", + "he": "מידע", + "hr": "Turističke informacije", + "hu": "Információ", + "id": "Informasi", + "is": "Upplýsingar", + "it": "Informazioni", + "ja": "観光案内(全般)", + "kn": "ಮಾಹಿತಿ", + "ko": "안내", + "lt": "Informacija", + "lv": "Informācija", + "mk": "Информации", + "nl": "Informatie", + "no": "Informasjon", + "pl": "Informacja", + "pt-BR": "Informações turísticas", + "pt": "Informação turística", + "ro": "Informații", + "ru": "Инфопункт", + "sk": "Informácie", + "sl": "Informacije", + "sq": "Informacion", + "sr": "Информације", + "sv": "Information", + "ta": "தகவல்", + "te": "సమాచారం", + "tr": "Bilgi", + "uk": "Інформація", + "vi": "Thông tin", + "yue": "資訊處", + "zh-CN": "问询处", + "zh-HK": "旅遊資訊", + "zh-TW": "旅遊資訊", + "zh": "资讯" + } + }, + "tourism/motel": { + "title": { + "C": "Motel", + "af": "Motel", + "am": "ሞቴል", + "ar": "فندق رخيص", + "ast": "Motel", + "bg": "Мотел", + "bn": "মোটেল", + "bs": "Motel", + "ca": "Motel", + "cs": "Motel", + "da": "Motel", + "de": "Motel", + "el": "Μοτέλ", + "en-GB": "Motel", + "en": "Motel", + "eo": "Aŭt-hotelo", + "es": "Motel", + "et": "Motell", + "fa": "متل", + "fi": "Motelli", + "fr": "Motel", + "gl": "Motel", + "he": "מלון דרכים", + "hr": "Motel", + "hu": "Motel", + "id": "Motel", + "is": "Mótel", + "it": "Motel", + "ja": "モーテル", + "ko": "모텔", + "lt": "Motelis", + "lv": "Motelis", + "mk": "Мотел", + "nl": "Motel", + "no": "Motell", + "pl": "Motel", + "pt-BR": "Hotel de estrada", + "pt": "Motel", + "ro": "Motel", + "ru": "Мотель", + "sk": "Motel", + "sl": "Motel", + "sr": "Мотел", + "sv": "Motel", + "tr": "Motel", + "uk": "Мотель", + "vi": "Khách sạn Dọc đường", + "yue": "汽車酒店", + "zh-CN": "汽车旅馆", + "zh-HK": "汽車酒店", + "zh-TW": "汽車旅館", + "zh": "汽车旅馆" + } + }, + "tourism/museum": { + "title": { + "C": "Museum", + "af": "Musuem", + "am": "ሙዚየም", + "ar": "متحف", + "ast": "Muséu", + "bg": "Музей", + "bn": "প্রদর্শনশালা", + "bs": "Muzej", + "ca": "Museu", + "cs": "Muzeum", + "da": "Museum", + "de": "Museum", + "el": "Μουσείο", + "en-GB": "Museum", + "en": "Museum", + "eo": "Muzeo", + "es": "Museo", + "et": "Muuseum", + "fa": "موزه", + "fi": "Museo", + "fr": "Musée", + "gl": "Museo", + "he": "מוזיאון", + "hr": "Muzej", + "hu": "Múzeum", + "id": "Museum", + "is": "Safn", + "it": "Museo", + "ja": "博物館・美術館", + "kn": "ಒಡವೆಮನೆ", + "ko": "박물관", + "lt": "Muziejus", + "lv": "Muzejs", + "mk": "Музеј", + "nl": "Museum", + "no": "Museum", + "pl": "Muzeum", + "pt-BR": "Museu", + "pt": "Museu", + "ro": "Muzeu", + "ru": "Музей", + "sk": "Múzeum", + "sl": "Muzej", + "sr": "Музеј", + "sv": "Museum", + "ta": "அருங்காட்சியகம்", + "te": "మ్యూజియం", + "tr": "Müze", + "uk": "Музей", + "vi": "Bảo tàng", + "yue": "博物館", + "zh-CN": "博物馆", + "zh-HK": "博物館", + "zh-TW": "博物館", + "zh": "博物馆" + } + }, + "tourism/picnic_site": { + "title": { + "C": "Picnic Site", + "af": "Piekniek Plek", + "ar": "موقع نزهة", + "ast": "Área recreativa", + "bg": "Място за пикник", + "bn": "পিকনিক-এর জায়গা", + "bs": "Izletište", + "ca": "Àrea de pícnic", + "cs": "Místo pro piknik", + "da": "Madpakkested", + "de": "Picknickplatz", + "el": "Χώρος Εκδρομής", + "en-GB": "Picnic Site", + "en": "Picnic Site", + "eo": "Piknika ejo", + "es": "Zona de picnic", + "et": "Piknikukoht", + "fa": "مکان پیک نیک", + "fi": "Piknikpuisto", + "fr": "Aire de pique-nique", + "gl": "Merendeiro ou zona de pícnic", + "he": "פיקניק", + "hr": "Izletište", + "hu": "Piknikezőhely", + "id": "Tempat Piknik", + "is": "Áningarstaður", + "it": "Area picnic", + "ja": "ピクニック場", + "ko": "유원지", + "lt": "Pikniko stovyklavietė", + "lv": "Piknika vieta", + "mk": "Излетничко место", + "ms": "Tapak Perkelahan", + "nl": "Picknickplek", + "no": "Pikniksted", + "pl": "Miejsce na piknik", + "pt-BR": "Local de piquenique", + "pt": "Parque de merendas", + "ro": "Picnic", + "ru": "Место для пикника", + "sk": "Miesto pre piknik", + "sl": "Prostor za piknike", + "sr": "Излетиште", + "sv": "Picknickplats", + "tr": "Piknik Alanı", + "uk": "Місце для пікніка", + "vi": "Nơi Ăn Ngoài trời", + "yue": "郊遊地點", + "zh-CN": "野餐地", + "zh-HK": "郊遊地點", + "zh-TW": "野餐場地", + "zh": "郊游地点" + } + }, + "tourism/theme_park": { + "title": { + "C": "Theme Park", + "af": "Temapark", + "ar": "حديقة ترفيه", + "ast": "Parque temáticu", + "bg": "Увеселителен парк", + "bn": "থিম পার্ক", + "bs": "Tematski park", + "ca": "Parc temàtic", + "cs": "Zábavní park", + "da": "Forlystelsespark", + "de": "Themenpark", + "el": "Πάρκο Ψυχαγωγίας", + "en-GB": "Theme Park", + "en": "Theme Park", + "eo": "Amuzparko", + "es": "Parque de atracciones", + "et": "Lõbustuspark", + "fa": "پارک تفریحی, شهربازی", + "fi": "Huvipuisto", + "fr": "Parc d'attraction", + "gl": "Parque de atraccións", + "he": "לונה פארק", + "hr": "Zabavni park", + "hu": "Vidámpark", + "id": "Taman Rekreasi", + "is": "Skemmtigarður", + "it": "Parco a tema", + "ja": "テーマパーク", + "ko": "놀이공원", + "lt": "Atrakcijonų parkas", + "lv": "Tematiskais parks", + "mk": "Забавен парк", + "nl": "Themapark", + "no": "Temapark", + "pl": "Park rozrywki", + "pt-BR": "Parque temático", + "pt": "Parque de diversões", + "ro": "Parc de Distracții", + "ru": "Парк развлечений", + "sk": "Zábavný park", + "sl": "Zabaviščni park", + "sr": "Тематски парк", + "sv": "Nöjespark", + "tr": "Eğlence Parkı", + "uk": "Тематичний парк", + "vi": "Công viên Chủ đề", + "yue": "主題公園", + "zh-CN": "主题公园", + "zh-HK": "主題公園", + "zh-TW": "主題公園", + "zh": "主题公园" + } + }, + "tourism/trail_riding_station": { + "title": { + "C": "Trail Riding Station", + "cs": "Stanice jízdy na koni", + "de": "Wanderreitstation", + "el": "Σταθμός Ιππασίας", + "en-GB": "Trail Riding Station", + "en": "Trail Riding Station", + "eo": "Pensiono por ĉevalistoj", + "es": "Estación de equitación", + "fa": "ایستگاه مسیر گذر / پیاده‌روی", + "fr": "Station équestre", + "gl": "Posto de repouso ecuestre", + "he": "תחנת רכיבה", + "hu": "Lovastúra-állomás", + "it": "Stazione di sosta per cavalli", + "ja": "乗馬トレール乗り場", + "mk": "Конак за рекреативни јавачи", + "nl": "Ruiterlogies", + "pl": "Konny ośrodek wypoczynkowy", + "pt-BR": "Estação de Hipismo de Trilha", + "pt": "Posto de repouso equestre", + "ru": "Временное жильё для лошадей и наездников", + "sv": "Turridningsstation", + "tr": "İz Sürme İstasyonu", + "uk": "Місце відпочинку для коней та вершників", + "vi": "Chuồng Ngựa Tạm thời", + "zh-CN": "小径骑行站", + "zh-TW": "騎馬車站" + } + }, + "tourism/viewpoint": { + "title": { + "C": "Viewpoint", + "af": "Uitkykpunt", + "ar": "منظر سياحي", + "ast": "Mirador", + "bg": "Точка с хубава гледка", + "bs": "Vidikovac", + "ca": "Mirador", + "cs": "Výhled", + "da": "Udsigtspunkt", + "de": "Aussichtspunkt", + "el": "Σημείο θέασης", + "en-GB": "Viewpoint", + "en": "Viewpoint", + "eo": "Belvidejo", + "es": "Vista panorámica / Mirador", + "et": "Vaatekoht", + "fa": "نقطه دید", + "fi": "Näköalapaikka", + "fr": "Point de vue", + "gl": "Miradoiro", + "he": "תצפית", + "hr": "Vidikovac", + "hu": "Kilátóhely", + "id": "Titik Pandang", + "is": "Útsýnisstaður", + "it": "Punto panoramico", + "ja": "展望台", + "ko": "경승지", + "lt": "Apžvalgos taškas", + "lv": "Skatu punkts", + "mk": "Видиковец", + "nl": "Uitzichtpunt", + "no": "Utsiktspunkt", + "pl": "Punkt widokowy", + "pt-BR": "Mirante", + "pt": "Miradouro", + "ro": "Punct de Vedere", + "ru": "Обзорная точка", + "sk": "Vyhliadka", + "sl": "Razgledna točka", + "sr": "Видиковац", + "sv": "Utsiktspunkt", + "tr": "Görüş Noktası", + "uk": "Оглядовий майданчик", + "vi": "Điểm Ngắm cảnh", + "yue": "觀景臺", + "zh-CN": "观景点", + "zh-HK": "觀景臺", + "zh-TW": "觀景點", + "zh": "景点" + } + }, + "tourism/wilderness_hut": { + "title": { + "C": "Wilderness Hut", + "ca": "Refugi lliure", + "cs": "Chata v divočině", + "da": "Vildmarkshytte", + "de": "unbewirtschaftete Schutzhütte", + "el": "Ερημική Καλύβα", + "en-GB": "Wilderness Hut", + "en": "Wilderness Hut", + "eo": "Sovaĝeja kabano", + "es": "Refugio de paraje natural", + "fi": "Autiotupa", + "fr": "Refuge de bivouac", + "gl": "Abeiro da natureza", + "he": "בקתת טבע", + "hr": "Planinarsko sklonište", + "hu": "Menedékház (személyzet nélkül)", + "is": "Óbyggðakofi", + "it": "Bivacco", + "ja": "避難小屋", + "ko": "황야 막사", + "mk": "Колиба во дивина", + "nl": "Onbemande hut in wildernis", + "no": "Villmarkshytta", + "pl": "Odosobniona chata-schronienie dla turystów", + "pt-BR": "Abrigo isolado", + "pt": "Abrigo remoto", + "ru": "Охотничий домик", + "sk": "Chata divočiny", + "sv": "Stuga (för vandrare o.d.)", + "tr": "Dağ kulübesi", + "uk": "Лісова хатинка", + "vi": "Lều trú", + "zh-CN": "野外住宿小屋", + "zh-TW": "野外小屋" + } + }, + "tourism/zoo": { + "title": { + "C": "Zoo", + "af": "Dieretuin", + "am": "የእንስሳት ግቢ", + "ar": "حديقة حيوانات", + "ast": "Zoo", + "bg": "Зоологическа градина", + "bn": "চিড়িয়াখানা", + "bs": "Zoološki vrt", + "ca": "Zoo", + "cs": "ZOO", + "da": "Zoologisk have", + "de": "Zoo", + "el": "Ζωολογικός Κήπος", + "en-GB": "Zoo", + "en": "Zoo", + "eo": "Bestoĝardeno", + "es": "Zoológico", + "et": "Loomaaed", + "fa": "باغ وحش", + "fi": "Eläintarha", + "fr": "Parc zoologique", + "gl": "Zoolóxico", + "he": "גן חיות", + "hi": "चिड़िया घर", + "hr": "Zološki vrt", + "hu": "Állatkert", + "id": "Kebun Binatang", + "is": "Dýragarður", + "it": "Zoo", + "ja": "動物園", + "ko": "동물원", + "lt": "Zoologijos sodas", + "lv": "Zooloģiskais dārzs", + "mk": "Зоолошка градина", + "nl": "Dierentuin", + "no": "Zoologisk hage", + "pl": "Zoo", + "pt-BR": "Zoológico", + "pt": "Jardim zoológico", + "ro": "Grădină Zoologică", + "ru": "Зоопарк", + "sk": "Zoo", + "sl": "Živalski vrt", + "sr": "Зоолошки врт", + "sv": "Zoo", + "ta": "உயிரியல் பூங்கா", + "te": "జూ", + "tr": "Hayvanat Bahçesi", + "uk": "Зоопарк", + "vi": "Vườn thú", + "yue": "動物園", + "zh-CN": "动物园", + "zh-HK": "動物園", + "zh-TW": "動物園", + "zh": "动物园" + } + } +} diff --git a/data/screenshots/maps-main.png b/data/screenshots/maps-main.png new file mode 100644 index 00000000..0ab75f15 Binary files /dev/null and b/data/screenshots/maps-main.png differ diff --git a/data/screenshots/maps-pinpoint.png b/data/screenshots/maps-pinpoint.png new file mode 100644 index 00000000..2102ef1b Binary files /dev/null and b/data/screenshots/maps-pinpoint.png differ diff --git a/data/screenshots/maps-route.png b/data/screenshots/maps-route.png new file mode 100644 index 00000000..ad57d6ae Binary files /dev/null and b/data/screenshots/maps-route.png differ diff --git a/data/ui/account-row.ui b/data/ui/account-row.ui new file mode 100644 index 00000000..60afd7c6 --- /dev/null +++ b/data/ui/account-row.ui @@ -0,0 +1,76 @@ + + + + + diff --git a/data/ui/check-in-dialog.ui b/data/ui/check-in-dialog.ui new file mode 100644 index 00000000..026f3679 --- /dev/null +++ b/data/ui/check-in-dialog.ui @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + public + Public + + + followers + Followers + + + private + Private + + + + diff --git a/data/ui/context-menu.ui b/data/ui/context-menu.ui new file mode 100644 index 00000000..7fcb6734 --- /dev/null +++ b/data/ui/context-menu.ui @@ -0,0 +1,56 @@ + + + + + diff --git a/data/ui/export-view-dialog.ui b/data/ui/export-view-dialog.ui new file mode 100644 index 00000000..040e390e --- /dev/null +++ b/data/ui/export-view-dialog.ui @@ -0,0 +1,139 @@ + + + + + diff --git a/data/ui/favorites-popover.ui b/data/ui/favorites-popover.ui new file mode 100644 index 00000000..7ee1bbb6 --- /dev/null +++ b/data/ui/favorites-popover.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/headerbar-left.ui b/data/ui/headerbar-left.ui new file mode 100644 index 00000000..aa293360 --- /dev/null +++ b/data/ui/headerbar-left.ui @@ -0,0 +1,87 @@ + + + + + + diff --git a/data/ui/headerbar-right.ui b/data/ui/headerbar-right.ui new file mode 100644 index 00000000..a806b64c --- /dev/null +++ b/data/ui/headerbar-right.ui @@ -0,0 +1,66 @@ + + + + + + diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui new file mode 100644 index 00000000..e427db71 --- /dev/null +++ b/data/ui/help-overlay.ui @@ -0,0 +1,120 @@ + + + + 1 + + + 1 + + 10 + + + 1 + General + + + 1 + Show Shortcuts + <Primary>question + + + + + 1 + Search + <Primary>F + + + + + 1 + Toggle route planner + <Primary>D + + + + + 1 + Print route + <Primary>P + + + + + 1 + Quit + <Primary>Q + + + + + 1 + Open main menu + F10 + + + + + + + 1 + Map View + + + 1 + Zoom in + plus equal + + + + + 1 + Zoom out + minus + + + + + 1 + Toggle scale + <Primary>S + + + + + 1 + Go to current location + <Primary>L + + + + + + 0 + Switch to street view + <Primary>1 + + + + + 0 + Switch to aerial view + <Primary>2 + + + + + 1 + Open shape layer + <Primary>O + + + + + + + + diff --git a/data/ui/instruction-row.ui b/data/ui/instruction-row.ui new file mode 100644 index 00000000..1e3cf1d1 --- /dev/null +++ b/data/ui/instruction-row.ui @@ -0,0 +1,60 @@ + + + + + diff --git a/data/ui/layers-popover.ui b/data/ui/layers-popover.ui new file mode 100644 index 00000000..423c4a86 --- /dev/null +++ b/data/ui/layers-popover.ui @@ -0,0 +1,113 @@ + + + + + diff --git a/data/ui/location-service-dialog.ui b/data/ui/location-service-dialog.ui new file mode 100644 index 00000000..0c3ae660 --- /dev/null +++ b/data/ui/location-service-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/data/ui/main-window.ui b/data/ui/main-window.ui new file mode 100644 index 00000000..a21db6aa --- /dev/null +++ b/data/ui/main-window.ui @@ -0,0 +1,170 @@ + + + + +
    + + app.night-mode + Night Mode + + + app.osm-account-setup + Set up OpenStreetMap Account + + + win.export-as-image + Export as Image + +
    +
    + + _Keyboard Shortcuts + win.show-help-overlay + + + win.about + About Maps + +
    +
    + +
    + diff --git a/data/ui/open-with-row.ui b/data/ui/open-with-row.ui new file mode 100644 index 00000000..d236a2a8 --- /dev/null +++ b/data/ui/open-with-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-account-dialog.ui b/data/ui/osm-account-dialog.ui new file mode 100644 index 00000000..8cddfeca --- /dev/null +++ b/data/ui/osm-account-dialog.ui @@ -0,0 +1,319 @@ + + + + + diff --git a/data/ui/osm-edit-address.ui b/data/ui/osm-edit-address.ui new file mode 100644 index 00000000..1a36f87a --- /dev/null +++ b/data/ui/osm-edit-address.ui @@ -0,0 +1,59 @@ + + + + + diff --git a/data/ui/osm-edit-dialog.ui b/data/ui/osm-edit-dialog.ui new file mode 100644 index 00000000..ba059ee6 --- /dev/null +++ b/data/ui/osm-edit-dialog.ui @@ -0,0 +1,353 @@ + + + + + + False + + + True + GTK_ORIENTATION_VERTICAL + + + + + False + GTK_POS_BOTTOM + + + True + 5 + + + True + True + 20 + 40 + + + + + + diff --git a/data/ui/osm-type-list-row.ui b/data/ui/osm-type-list-row.ui new file mode 100644 index 00000000..05fbb6ac --- /dev/null +++ b/data/ui/osm-type-list-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-type-popover.ui b/data/ui/osm-type-popover.ui new file mode 100644 index 00000000..4ae9e7fb --- /dev/null +++ b/data/ui/osm-type-popover.ui @@ -0,0 +1,16 @@ + + + + + diff --git a/data/ui/osm-type-search-entry.ui b/data/ui/osm-type-search-entry.ui new file mode 100644 index 00000000..db292a76 --- /dev/null +++ b/data/ui/osm-type-search-entry.ui @@ -0,0 +1,10 @@ + + + + + diff --git a/data/ui/place-bar.ui b/data/ui/place-bar.ui new file mode 100644 index 00000000..28825b11 --- /dev/null +++ b/data/ui/place-bar.ui @@ -0,0 +1,67 @@ + + + + + + diff --git a/data/ui/place-buttons.ui b/data/ui/place-buttons.ui new file mode 100644 index 00000000..bace12aa --- /dev/null +++ b/data/ui/place-buttons.ui @@ -0,0 +1,104 @@ + + + + + diff --git a/data/ui/place-dialog.ui b/data/ui/place-dialog.ui new file mode 100644 index 00000000..9c49c767 --- /dev/null +++ b/data/ui/place-dialog.ui @@ -0,0 +1,36 @@ + + + + + + diff --git a/data/ui/place-entry.ui b/data/ui/place-entry.ui new file mode 100644 index 00000000..417e42d2 --- /dev/null +++ b/data/ui/place-entry.ui @@ -0,0 +1,23 @@ + + + + + 2 + + + 2 + + + 0 + + + + + 4 + + + 2 + + + + diff --git a/data/ui/place-list-row.ui b/data/ui/place-list-row.ui new file mode 100644 index 00000000..9164f52c --- /dev/null +++ b/data/ui/place-list-row.ui @@ -0,0 +1,97 @@ + + + + + + + diff --git a/data/ui/place-popover.ui b/data/ui/place-popover.ui new file mode 100644 index 00000000..e04114bb --- /dev/null +++ b/data/ui/place-popover.ui @@ -0,0 +1,79 @@ + + + + + diff --git a/data/ui/place-view.ui b/data/ui/place-view.ui new file mode 100644 index 00000000..95fee9dc --- /dev/null +++ b/data/ui/place-view.ui @@ -0,0 +1,136 @@ + + + + + + True + + + True + False + vertical + + + False + False + + + + + False + False + + + + + + True + False + vertical + 18 + 12 + + + True + False + vertical + + + True + False + horizontal + 12 + + + False + False + True + 32 + + + + + True + False + start + True + True + 30 + 0 + + + + + + False + True + False + Share location + + + True + False + send-to-symbolic + 16 + + + + + + + + + False + False + start + True + True + 30 + 0 + 6 + + + + + + + + True + False + start + 0 + True + True + + + + + True + False + vertical + + + + + + + True + False + + + + + + + True + False + + + + diff --git a/data/ui/route-entry.ui b/data/ui/route-entry.ui new file mode 100644 index 00000000..b186e453 --- /dev/null +++ b/data/ui/route-entry.ui @@ -0,0 +1,50 @@ + + + + + diff --git a/data/ui/send-to-dialog.ui b/data/ui/send-to-dialog.ui new file mode 100644 index 00000000..161f0eed --- /dev/null +++ b/data/ui/send-to-dialog.ui @@ -0,0 +1,166 @@ + + + + + + diff --git a/data/ui/shape-layer-file-chooser.ui b/data/ui/shape-layer-file-chooser.ui new file mode 100644 index 00000000..383a2df5 --- /dev/null +++ b/data/ui/shape-layer-file-chooser.ui @@ -0,0 +1,30 @@ + + + + diff --git a/data/ui/shape-layer-row.ui b/data/ui/shape-layer-row.ui new file mode 100644 index 00000000..0a2ad8d1 --- /dev/null +++ b/data/ui/shape-layer-row.ui @@ -0,0 +1,62 @@ + + + + diff --git a/data/ui/sidebar.ui b/data/ui/sidebar.ui new file mode 100644 index 00000000..ab7b3890 --- /dev/null +++ b/data/ui/sidebar.ui @@ -0,0 +1,444 @@ + + + + + + + False + + + True + + + True + 5 + 5 + 5 + 5 + Routing itineraries for public transit is provided by third-party +services. +GNOME can not guarantee correctness of the itineraries and schedules shown. +Note that some providers might not include all available modes of transportation, +e.g. a national provider might not include airlines, and a local provider could +miss regional trains. +Names and brands shown are to be considered as registered trademarks when applicable. + + + + + + + True + False + + + + True + 6 + 6 + 4 + 4 + GTK_ALIGN_START + + + True + GTK_ALIGN_CENTER + + + True + False + False + go-previous-symbolic + + + + + + + 0 + 0 + + + + + True + 6 + 6 + 4 + 4 + False + GTK_ALIGN_START + + + 1 + 0 + + + + + True + 6 + 6 + 4 + 4 + True + GTK_ALIGN_START + + + + 2 + 0 + + + + diff --git a/data/ui/social-place-more-results-row.ui b/data/ui/social-place-more-results-row.ui new file mode 100644 index 00000000..2dcca7fa --- /dev/null +++ b/data/ui/social-place-more-results-row.ui @@ -0,0 +1,22 @@ + + + + + diff --git a/data/ui/social-place-row.ui b/data/ui/social-place-row.ui new file mode 100644 index 00000000..623c92af --- /dev/null +++ b/data/ui/social-place-row.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/transit-arrival-row.ui b/data/ui/transit-arrival-row.ui new file mode 100644 index 00000000..cc993be7 --- /dev/null +++ b/data/ui/transit-arrival-row.ui @@ -0,0 +1,77 @@ + + + + + diff --git a/data/ui/transit-itinerary-row.ui b/data/ui/transit-itinerary-row.ui new file mode 100644 index 00000000..d4be5468 --- /dev/null +++ b/data/ui/transit-itinerary-row.ui @@ -0,0 +1,66 @@ + + + + + diff --git a/data/ui/transit-leg-row.ui b/data/ui/transit-leg-row.ui new file mode 100644 index 00000000..c88d783d --- /dev/null +++ b/data/ui/transit-leg-row.ui @@ -0,0 +1,255 @@ + + + + + diff --git a/data/ui/transit-more-row.ui b/data/ui/transit-more-row.ui new file mode 100644 index 00000000..7de5b98a --- /dev/null +++ b/data/ui/transit-more-row.ui @@ -0,0 +1,40 @@ + + + + diff --git a/data/ui/transit-options-panel.ui b/data/ui/transit-options-panel.ui new file mode 100644 index 00000000..a11acfa0 --- /dev/null +++ b/data/ui/transit-options-panel.ui @@ -0,0 +1,159 @@ + + + + False + + + True + + + + + False + + + True + 6 + GTK_ORIENTATION_VERTICAL + + + True + GTK_ALIGN_START + Show + 6 + + + + + + True + True + Buses + + + + + True + True + Trams + + + + + True + True + Trains + + + + + True + True + Subway + + + + + True + True + Ferries + + + + + True + True + Airplanes + + + + + + + diff --git a/data/ui/transit-route-label.ui b/data/ui/transit-route-label.ui new file mode 100644 index 00000000..423f7826 --- /dev/null +++ b/data/ui/transit-route-label.ui @@ -0,0 +1,20 @@ + + + + + diff --git a/data/ui/transit-stop-row.ui b/data/ui/transit-stop-row.ui new file mode 100644 index 00000000..5af08b8c --- /dev/null +++ b/data/ui/transit-stop-row.ui @@ -0,0 +1,55 @@ + + + + diff --git a/data/ui/zoom-in-dialog.ui b/data/ui/zoom-in-dialog.ui new file mode 100644 index 00000000..359dd46c --- /dev/null +++ b/data/ui/zoom-in-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/gnome-maps.doap b/gnome-maps.doap new file mode 100644 index 00000000..a0fdefd4 --- /dev/null +++ b/gnome-maps.doap @@ -0,0 +1,28 @@ + + + gnome-maps + A simple GNOME 3 maps application + Map application based on OpenStreetMap map data + + JavaScript + + + + + + + + + Marcus Lundblad + + mlundblad + + + diff --git a/lib/maps-contact-store.c b/lib/maps-contact-store.c new file mode 100644 index 00000000..227fc5f7 --- /dev/null +++ b/lib/maps-contact-store.c @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + + +#include +#include + +#include "maps-contact-store.h" +#include "maps-contact.h" +#include "maps-enum-types.h" + +struct _MapsContactStorePrivate +{ + GList *list; + MapsContactStoreState state; + FolksIndividualAggregator *aggregator; +}; + +enum { + PROP_0, + + PROP_STATE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContactStore, maps_contact_store, G_TYPE_OBJECT) + +static void +maps_contact_store_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContactStore *store = MAPS_CONTACT_STORE (object); + + switch (property_id) + { + case PROP_STATE: + g_value_set_enum (value, + store->priv->state); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_store_dispose (GObject *object) +{ + MapsContactStore *store = (MapsContactStore *) object; + + g_clear_pointer (&store->priv->list, g_list_free); + g_clear_object (&store->priv->aggregator); + + G_OBJECT_CLASS (maps_contact_store_parent_class)->dispose (object); +} + +static void +maps_contact_store_class_init (MapsContactStoreClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_store_dispose; + maps_class->get_property = maps_contact_store_get_property; + + /** + * MapsContactStore:state: + * + * The current loading state of the contact store. + */ + pspec = g_param_spec_enum ("state", + "State", + "State", + MAPS_TYPE_CONTACT_STORE_STATE, + MAPS_CONTACT_STORE_STATE_INITIAL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_STATE, pspec); +} + +static void +maps_contact_store_init (MapsContactStore *store) +{ + store->priv = maps_contact_store_get_instance_private (store); + store->priv->list = NULL; + store->priv->state = MAPS_CONTACT_STORE_STATE_INITIAL; +} + +static MapsContact * +get_contact (FolksIndividual *individual) +{ + MapsContact *contact; + GLoadableIcon *avatar; + GeeCollection *addresses; + GeeIterator *iter; + + g_object_get (G_OBJECT (individual), "postal-addresses", + &addresses, NULL); + if (!addresses) + return NULL; + + iter = gee_iterable_iterator (GEE_ITERABLE (addresses)); + if (!gee_iterator_has_next (iter)) + { + g_object_unref (iter); + return NULL; + } + + contact = maps_contact_new (); + + g_object_set (G_OBJECT (contact), "name", + folks_individual_get_display_name (individual), NULL); + g_object_set (G_OBJECT (contact), "id", + folks_individual_get_id (individual), NULL); + + g_object_get (G_OBJECT (individual), "avatar", + &avatar, NULL); + g_object_set (G_OBJECT (contact), "icon", + avatar, NULL); + + while (gee_iterator_has_next (iter)) + { + GeocodePlace *place; + FolksPostalAddress *addr; + FolksAbstractFieldDetails *details; + GeeMultiMap *map; + GeeSet *keys; + GeeIterator *keys_iter; + char *name; + char *type = "Unknown"; + + gee_iterator_next (iter); + details = gee_iterator_get (iter); + addr = (FolksPostalAddress *) folks_abstract_field_details_get_value (details); + + /* Get the type of the address, such as "Home", "Work", "Other" */ + map = folks_abstract_field_details_get_parameters (details); + keys = gee_multi_map_get_keys (map); + keys_iter = gee_iterable_iterator (GEE_ITERABLE (keys)); + if (gee_iterator_has_next (keys_iter)) + { + GeeCollection *values; + GeeIterator *values_iter; + + gee_iterator_next (keys_iter); + values = gee_multi_map_get (map, + gee_iterator_get (keys_iter)); + if (gee_collection_get_size (values) != 0) + { + values_iter = gee_iterable_iterator (GEE_ITERABLE (values)); + gee_iterator_next (values_iter); + type = gee_iterator_get (values_iter); + } + } + if (gee_collection_get_size (addresses) > 1) + { + name = g_strdup_printf ("%s (%s)", + folks_individual_get_display_name (individual), + type); + } + else + { + name = g_strdup (folks_individual_get_display_name (individual)); + } + place = geocode_place_new (name, GEOCODE_PLACE_TYPE_STREET); + g_free (name); + + geocode_place_set_country (place, + folks_postal_address_get_country (addr)); + geocode_place_set_state (place, + folks_postal_address_get_region (addr)); + geocode_place_set_postal_code (place, + folks_postal_address_get_postal_code (addr)); + geocode_place_set_town (place, + folks_postal_address_get_locality (addr)); + geocode_place_set_street_address (place, + folks_postal_address_get_street (addr)); + + maps_contact_add_place (contact, place); + } + g_object_unref (iter); + + return contact; +} + +MapsContactStore * +maps_contact_store_new () +{ + return g_object_new (MAPS_TYPE_CONTACT_STORE, NULL); +} + +static void +maps_contact_store_lookup_cb (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + MapsContactStoreLookupCallback callback) +{ + FolksIndividual *individual; + + individual = folks_individual_aggregator_look_up_individual_finish (aggregator, + res, + NULL); + if (individual != NULL) + { + MapsContact *contact = get_contact (individual); + callback (contact); + } + else + { + callback (NULL); + } +} + +/** + * maps_contact_store_lookup: + * @store: A #MapsContactStore object + * @callback: (scope async): A #MapsContactStoreLookupCallback function + */ +void +maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback) +{ + folks_individual_aggregator_look_up_individual (store->priv->aggregator, + id, + (GAsyncReadyCallback) maps_contact_store_lookup_cb, + callback); +} + +static void +aggregator_quiescent_notify (FolksIndividualAggregator *aggregator, + GParamSpec *pspec, + MapsContactStore *store) +{ + GeeMap *map; + GeeMapIterator *iter; + + map = folks_individual_aggregator_get_individuals (aggregator); + iter = gee_map_map_iterator (map); + + while (gee_map_iterator_has_next (iter)) + { + MapsContact *contact; + + gee_map_iterator_next (iter); + contact = get_contact (gee_map_iterator_get_value (iter)); + if (contact) + store->priv->list = g_list_prepend (store->priv->list, contact); + } + g_clear_object (&iter); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADED; + g_object_notify (G_OBJECT (store), "state"); +} + +static void +aggregator_prepare (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + gpointer user_data) +{ + folks_individual_aggregator_prepare_finish (aggregator, res, NULL); +} + +/** + * maps_contact_store_load: + * @store: A #MapsContactStore object + * + * Load contacts from available backends. + * + */ +void +maps_contact_store_load (MapsContactStore *store) +{ + g_return_if_fail (MAPS_IS_CONTACT_STORE (store)); + + store->priv->aggregator = folks_individual_aggregator_dup (); + + g_signal_connect (G_OBJECT (store->priv->aggregator), + "notify::is-quiescent", + G_CALLBACK (aggregator_quiescent_notify), + store); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADING; + g_object_notify (G_OBJECT (store), "state"); + + folks_individual_aggregator_prepare (store->priv->aggregator, + (GAsyncReadyCallback) aggregator_prepare, + NULL); +} + +/** + * maps_contact_store_get_contacts: + * @store: A #MapsContactStore object + * + * Returns: (element-type MapsContact) (transfer none): a list of #MapsContact, + */ +GList * +maps_contact_store_get_contacts (MapsContactStore *store) +{ + g_return_val_if_fail (MAPS_IS_CONTACT_STORE (store), NULL); + + return store->priv->list; +} diff --git a/lib/maps-contact-store.h b/lib/maps-contact-store.h new file mode 100644 index 00000000..3bbf2cbc --- /dev/null +++ b/lib/maps-contact-store.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_STORE_H__ +#define __MAPS_CONTACT_STORE_H__ + +#include +#include "maps-contact.h" + +#define MAPS_TYPE_CONTACT_STORE maps_contact_store_get_type () +G_DECLARE_FINAL_TYPE(MapsContactStore, maps_contact_store, MAPS, CONTACT_STORE, + GObject) + +typedef struct _MapsContactStorePrivate MapsContactStorePrivate; + +/** + * MapsContactStoreState: + * @MAPS_CONTACT_STORE_STATE_INITIAL: Initial state + * @MAPS_CONTACT_STORE_STATE_LOADING: Loading + * @MAPS_CONTACT_STORE_STATE_LOADED: Loaded + */ +typedef enum { + MAPS_CONTACT_STORE_STATE_INITIAL, + MAPS_CONTACT_STORE_STATE_LOADING, + MAPS_CONTACT_STORE_STATE_LOADED, +} MapsContactStoreState; + +/** + * MapsContactStoreLookupCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactStoreLookupCallback) (MapsContact *contact); + +struct _MapsContactStore +{ + GObject parent_instance; + MapsContactStorePrivate *priv; +}; + +struct _MapsContactStoreClass +{ + GObjectClass parent_class; +}; + +MapsContactStore * maps_contact_store_new (void); +void maps_contact_store_load (MapsContactStore *store); +void maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback); +GList * maps_contact_store_get_contacts (MapsContactStore *store); + +#endif diff --git a/lib/maps-contact.c b/lib/maps-contact.c new file mode 100644 index 00000000..f733e8e1 --- /dev/null +++ b/lib/maps-contact.c @@ -0,0 +1,339 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include + +#include "maps-contact.h" + +struct _MapsContactPrivate +{ + char *name; + char *id; + + GLoadableIcon *icon; + GList *places; + + GMutex geocode_mutex; + guint geocode_counter; + guint geocodes_to_perform; +}; + +typedef struct +{ + GeocodePlace *place; + MapsContact *contact; + MapsContactGeocodeCallback callback; + + GHashTable *params; +} GeocodeData; + +enum { + PROP_0, + + PROP_NAME, + PROP_ICON, + PROP_ID, + PROP_BBOX +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContact, maps_contact, G_TYPE_OBJECT) + +static void +maps_contact_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_free (contact->priv->name); + contact->priv->name = g_value_dup_string (value); + break; + + case PROP_ICON: + if (contact->priv->icon) + g_object_unref (contact->priv->icon); + contact->priv->icon = g_value_dup_object (value); + break; + + case PROP_ID: + g_free (contact->priv->id); + contact->priv->id = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_value_set_string (value, + contact->priv->name); + break; + + case PROP_ICON: + g_value_set_object (value, + contact->priv->icon); + break; + + case PROP_ID: + g_value_set_string (value, + contact->priv->id); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_dispose (GObject *object) +{ + MapsContact *contact = (MapsContact *) object; + + g_clear_pointer (&contact->priv->name, g_free); + g_clear_pointer (&contact->priv->id, g_free); + g_clear_object (&contact->priv->icon); + g_list_free_full (contact->priv->places, g_object_unref); + + G_OBJECT_CLASS (maps_contact_parent_class)->dispose (object); +} + +static void +maps_contact_class_init (MapsContactClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_dispose; + maps_class->get_property = maps_contact_get_property; + maps_class->set_property = maps_contact_set_property; + + /** + * MapsContact:name: + * + * The name of the contact. + */ + pspec = g_param_spec_string ("name", + "Name", + "Name", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_NAME, pspec); + + /** + * MapsContact:id: + * + * The unique id of the contact. + */ + pspec = g_param_spec_string ("id", + "ID", + "ID", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsContact:icon: + * + * The icon of the contact. + */ + pspec = g_param_spec_object ("icon", + "Icon", + "An icon representing the contact", + G_TYPE_ICON, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ICON, pspec); +} + +static void +maps_contact_init (MapsContact *contact) +{ + contact->priv = maps_contact_get_instance_private (contact); + + contact->priv->name = NULL; + contact->priv->id = NULL; + contact->priv->icon = NULL; + contact->priv->places = NULL; + + g_mutex_init (&contact->priv->geocode_mutex); +} + +/** + * maps_contact_add_address: + * @contact: A #MapsContact object + * @place: A #GeocodePlace object + */ +void +maps_contact_add_place (MapsContact *contact, + GeocodePlace *place) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (GEOCODE_IS_PLACE (place)); + + contact->priv->places = g_list_prepend (contact->priv->places, place); +} + +/** + * maps_contact_get_places: + * @contact: A #MapsContact object + * + * Returns: (element-type GeocodePlace) (transfer container): a list of #GeocodePlace + */ +GList * +maps_contact_get_places (MapsContact *contact) +{ + g_return_val_if_fail (MAPS_IS_CONTACT (contact), NULL); + + return contact->priv->places; +} + +static void +on_geocode_search_async (GeocodeForward *forward, + GAsyncResult *res, + GeocodeData *data) +{ + MapsContact *contact; + GList *places; + gboolean call_callback = FALSE; + + contact = data->contact; + places = geocode_forward_search_finish (forward, res, NULL); + + g_mutex_lock (&contact->priv->geocode_mutex); + + if (places) + { + GeocodePlace *place = g_list_nth_data (places, 0); + GeocodeLocation *location = geocode_place_get_location (place); + const char *street_address; + const char *street; + + /* Keep the naming, but add location and osm info */ + geocode_place_set_location (data->place, location); + g_object_set (G_OBJECT (data->place), "osm-type", + geocode_place_get_osm_type (place), NULL); + g_object_set (G_OBJECT (data->place), "osm-id", + geocode_place_get_osm_id (place), NULL); + + /* Make sure we do not lie about how good our resolution is */ + street_address = geocode_place_get_street_address (place); + street = geocode_place_get_street (place); + if (street_address) + geocode_place_set_street_address (data->place, street); + else if (street) + geocode_place_set_street (data->place, street); + + g_list_free_full(places, g_object_unref); + } + + contact->priv->geocode_counter++; + if (contact->priv->geocode_counter == contact->priv->geocodes_to_perform) + call_callback = TRUE; + + g_mutex_unlock (&contact->priv->geocode_mutex); + + g_hash_table_destroy (data->params); + + if (call_callback) + data->callback (contact); +} + +static void add_attribute (GHashTable *ht, + const char *key, + const char *s) +{ + GValue *value; + value = g_new0 (GValue, 1); + g_value_init (value, G_TYPE_STRING); + g_value_set_static_string (value, s); + g_hash_table_insert (ht, g_strdup (key), value); +} + +/** + * maps_contact_geocode: + * @contact: A #MapsContact object + * @callback: (scope async): A #MapsContactGeocodeCallback function + */ +void +maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (callback != NULL); + + GList *l; + + contact->priv->geocode_counter = 0; + contact->priv->geocodes_to_perform = g_list_length (contact->priv->places); + + for (l = contact->priv->places; l != NULL; l = l->next) { + GeocodeData *data; + GeocodeForward *forward; + + data = g_slice_new (GeocodeData); + data->contact = contact; + data->place = l->data; + data->callback = callback; + data->params = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + add_attribute (data->params, "street", + geocode_place_get_street_address (data->place)); + add_attribute (data->params, "locality", + geocode_place_get_town (data->place)); + add_attribute (data->params, "region", + geocode_place_get_state (data->place)); + add_attribute (data->params, "country", + geocode_place_get_country (data->place)); + + forward = geocode_forward_new_for_params (data->params); + geocode_forward_search_async (forward, + NULL, + (GAsyncReadyCallback) on_geocode_search_async, + data); + } +} + +MapsContact * +maps_contact_new () +{ + return g_object_new (MAPS_TYPE_CONTACT, NULL); +} diff --git a/lib/maps-contact.h b/lib/maps-contact.h new file mode 100644 index 00000000..d036faf2 --- /dev/null +++ b/lib/maps-contact.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_H__ +#define __MAPS_CONTACT_H__ + +#include +#include + +#define MAPS_TYPE_CONTACT maps_contact_get_type () +G_DECLARE_FINAL_TYPE(MapsContact, maps_contact, MAPS, CONTACT, GObject) + +typedef struct _MapsContactPrivate MapsContactPrivate; + +/** + * MapsContactGeocodeCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactGeocodeCallback) (MapsContact *contact); + +struct _MapsContact +{ + GObject parent_instance; + MapsContactPrivate *priv; +}; + +struct _MapsContactClass +{ + GObjectClass parent_class; +}; + +MapsContact *maps_contact_new (void); +void maps_contact_add_place (MapsContact *contact, + GeocodePlace *place); +GList * maps_contact_get_places (MapsContact *contact); +void maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback); +#endif diff --git a/lib/maps-enum-types.c.template b/lib/maps-enum-types.c.template new file mode 100644 index 00000000..188506a0 --- /dev/null +++ b/lib/maps-enum-types.c.template @@ -0,0 +1,31 @@ +/*** BEGIN file-header ***/ +#include "maps-enum-types.h" + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (etype == 0) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static ("@EnumName@", values); + } + return etype; +} + +/*** END value-tail ***/ diff --git a/lib/maps-enum-types.h.template b/lib/maps-enum-types.h.template new file mode 100644 index 00000000..14171b23 --- /dev/null +++ b/lib/maps-enum-types.h.template @@ -0,0 +1,36 @@ +/*** BEGIN file-header ***/ +#ifndef __MAPS_ENUM_TYPES_H__ +#define __MAPS_ENUM_TYPES_H__ + +#include "maps.h" + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; + +#define MAPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) + +/** + * SECTION:maps-enum-types + * @short_description: Maps enumerated types + * @include: maps.h + * + * The enumerated types defined and used by libgnome-maps. + **/ + +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __MAPS_ENUM_TYPES_H__ */ + +/*** END file-tail ***/ diff --git a/lib/maps-file-tile-source.c b/lib/maps-file-tile-source.c new file mode 100644 index 00000000..61e5f060 --- /dev/null +++ b/lib/maps-file-tile-source.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include +#include +#include +#include + +#include "mapsintl.h" +#include "maps-file-tile-source.h" + +#define MAPS_FILE_TILE_SOURCE_ERROR maps_file_tile_source_error_quark () + +GQuark +maps_file_tile_source_error_quark (void) +{ + return g_quark_from_static_string ("maps-file-tile-source-error"); +} + +enum { + PROP_0, + + PROP_PATH, + PROP_MAX_ZOOM, + PROP_MIN_ZOOM, + PROP_WORLD + +}; + +struct _MapsFileTileSourcePrivate +{ + gchar *path; + gchar *extension; + gint max_zoom; + gint min_zoom; + ChamplainBoundingBox *world; + + long min_x; + long min_y; + long max_x; + long max_y; +}; + +typedef struct +{ + ChamplainMapSource *map_source; + ChamplainTile *tile; +} CallbackData; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsFileTileSource, maps_file_tile_source, CHAMPLAIN_TYPE_TILE_SOURCE) + +static void fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile); + + +static void +maps_file_tile_source_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + tile_source->priv->path = g_strdup ((char *) g_value_get_string (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + g_value_set_string (value, tile_source->priv->path); + break; + + case PROP_MIN_ZOOM: + g_value_set_uint (value, tile_source->priv->min_zoom); + break; + + case PROP_MAX_ZOOM: + g_value_set_uint (value, tile_source->priv->max_zoom); + break; + + case PROP_WORLD: + g_value_set_boxed (value, tile_source->priv->world); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_dispose (GObject *object) +{ + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->dispose (object); +} + +static void +maps_file_tile_source_finalize (GObject *object) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + if (tile_source->priv->path) + g_free (tile_source->priv->path); + + if (tile_source->priv->extension) + g_free (tile_source->priv->extension); + + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->finalize (object); +} + +static guint +get_max_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->max_zoom; +} + +static guint +get_min_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->min_zoom; +} + +static void +maps_file_tile_source_class_init (MapsFileTileSourceClass *klass) +{ + ChamplainMapSourceClass *map_source_class = CHAMPLAIN_MAP_SOURCE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->finalize = maps_file_tile_source_finalize; + object_class->dispose = maps_file_tile_source_dispose; + object_class->get_property = maps_file_tile_source_get_property; + object_class->set_property = maps_file_tile_source_set_property; + map_source_class->get_max_zoom_level = get_max_zoom_level; + map_source_class->get_min_zoom_level = get_min_zoom_level; + map_source_class->fill_tile = fill_tile; + + /** + * MapsFileTileSource:path: + * + * The path to the tile source. + * + */ + pspec = g_param_spec_string ("path", + "Path", + "The path to the tile source", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property (object_class, PROP_PATH, pspec); + + /** + * MapsFileTileSource:min-zoom: + * + * The minimum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("min-zoom", + "Minimum zoom", + "The minimum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MIN_ZOOM, pspec); + + /** + * MapsFileTileSource:max-zoom: + * + * The maximum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("max-zoom", + "Maximum zoom", + "The maximum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MAX_ZOOM, pspec); + + /** + * MapsFileTileSource:world: + * + * Set a bounding box to limit the world to. No tiles will be loaded + * outside of this bounding box. It will not be possible to scroll outside + * of this bounding box. + * + */ + pspec = g_param_spec_boxed ("world", + "The world", + "The bounding box to limit the #ChamplainView to", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_WORLD, pspec); +} + +static void +maps_file_tile_source_init (MapsFileTileSource *tile_source) +{ + tile_source->priv = maps_file_tile_source_get_instance_private (tile_source); + tile_source->priv->path = NULL; + tile_source->priv->extension = NULL; + tile_source->priv->max_zoom = -1; + tile_source->priv->min_zoom = 21; + tile_source->priv->world = NULL; + tile_source->priv->min_x = G_MAXLONG; + tile_source->priv->min_y = G_MAXLONG; + tile_source->priv->max_x = 0; + tile_source->priv->max_y = 0; +} + +static gboolean +get_zoom_levels (MapsFileTileSource *tile_source, + GError **error) +{ + GFile *file; + GFileEnumerator *enumerator; + gboolean ret = TRUE; + long orig_min = tile_source->priv->min_zoom; + long orig_max = tile_source->priv->max_zoom; + + file = g_file_new_for_path (tile_source->priv->path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + const char *name; + char *endptr; + long val; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + val = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (val > tile_source->priv->max_zoom) + tile_source->priv->max_zoom = val; + + if (val < tile_source->priv->min_zoom) + tile_source->priv->min_zoom = val; + } + + if (tile_source->priv->min_zoom == orig_min || + tile_source->priv->max_zoom == orig_max) { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + + return ret; +} + +static gboolean +get_y_bounds (MapsFileTileSource *tile_source, + const char *path, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + gboolean ret = TRUE; + gboolean found = FALSE; + + file = g_file_new_for_path (path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + char **names; + char *endptr; + long y; + + if (!g_file_enumerator_iterate (enumerator, &info, + NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) + continue; + + names = g_strsplit (g_file_info_get_name (info), ".", 2); + if (!tile_source->priv->extension) + tile_source->priv->extension = g_strdup (names[1]); + + y = strtol (names[0], &endptr, 0); + if (endptr == names[0] || *endptr != '\0') { + g_strfreev (names); + continue; + } + + if (!found) + found = TRUE; + + g_strfreev (names); + + if (y > tile_source->priv->max_y) + tile_source->priv->max_y = y; + + if (y < tile_source->priv->min_y) + tile_source->priv->min_y = y; + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +static gboolean +get_bounds (MapsFileTileSource *tile_source, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + char *path; + gboolean ret = TRUE; + char min_zoom[3]; + gboolean found = FALSE; + + sprintf (min_zoom, "%u", tile_source->priv->min_zoom); + path = g_build_filename (tile_source->priv->path, min_zoom, NULL); + file = g_file_new_for_path (path); + + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + char *y_path; + GFileInfo *info; + const char *name; + char *endptr; + long x; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + x = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (!found) + found = TRUE; + + if (x > tile_source->priv->max_x) + tile_source->priv->max_x = x; + + if (x < tile_source->priv->min_x) + tile_source->priv->min_x = x; + + y_path = g_build_filename (path, name, NULL); + if (!get_y_bounds (tile_source, y_path, error)) { + g_free (y_path); + ret = FALSE; + goto out; + } + g_free (y_path); + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_free (path); + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +gboolean +maps_file_tile_source_prepare (MapsFileTileSource *tile_source, + GError **error) +{ + g_return_val_if_fail (MAPS_IS_FILE_TILE_SOURCE (tile_source), FALSE); + g_return_val_if_fail (tile_source->priv->path != NULL, FALSE); + + ChamplainMapSource *source = (ChamplainMapSource *) tile_source; + gboolean ret = TRUE; + guint tile_size = champlain_map_source_get_tile_size (source); + + if (!get_zoom_levels (tile_source, error)) { + ret = FALSE; + goto out; + } + + if (!get_bounds (tile_source, error)) { + ret = FALSE; + goto out; + } + + tile_source->priv->world = champlain_bounding_box_new (); + tile_source->priv->world->left = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_x * + tile_size); + tile_source->priv->world->right = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_x + 1) * + tile_size); + tile_source->priv->world->top = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_y * + tile_size); + tile_source->priv->world->bottom = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_y + 1) * + tile_size); + out: + return ret; +} + +static void +tile_rendered_cb (ChamplainTile *tile, + gpointer data, + guint size, + gboolean error, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source; + + g_signal_handlers_disconnect_by_func (tile, tile_rendered_cb, user_data); + g_slice_free (CallbackData, user_data); + + next_source = champlain_map_source_get_next_source (map_source); + + if (!error) + { + ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source); + ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source); + + if (tile_cache && data) + champlain_tile_cache_store_tile (tile_cache, tile, data, size); + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + } + else if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + g_object_unref (map_source); + g_object_unref (tile); +} + +static void +tile_loaded_cb (GFile *file, + GAsyncResult *res, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + ChamplainTile *tile = user_data->tile; + CallbackData *data; + ChamplainRenderer *renderer; + guint8 *content; + gsize length; + + g_slice_free (CallbackData, user_data); + + if (!g_file_load_contents_finish (file, res, (char **) &content, &length, NULL, NULL)) + { + goto load_next; + } + + renderer = champlain_map_source_get_renderer (map_source); + g_return_if_fail (CHAMPLAIN_IS_RENDERER (renderer)); + + data = g_slice_new (CallbackData); + data->map_source = map_source; + + g_signal_connect (tile, "render-complete", G_CALLBACK (tile_rendered_cb), data); + + champlain_renderer_set_data (renderer, content, length); + champlain_renderer_render (renderer, tile); + + return; + +load_next: + if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + goto cleanup; + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + +cleanup: + g_object_unref (tile); + g_object_unref (map_source); +} + +static void +fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile) +{ + g_return_if_fail (MAPS_IS_FILE_TILE_SOURCE (map_source)); + g_return_if_fail (CHAMPLAIN_IS_TILE (tile)); + + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (map_source); + CallbackData *callback_data; + GFile *file; + gchar *path = NULL; + + if (champlain_tile_get_state (tile) == CHAMPLAIN_STATE_DONE) + return; + + path = g_strdup_printf("%s/%d/%d/%d.%s", + tile_source->priv->path, + champlain_tile_get_zoom_level (tile), + champlain_tile_get_x (tile), + champlain_tile_get_y (tile), + tile_source->priv->extension); + file = g_file_new_for_path (path); + + if (g_file_query_exists(file, NULL)) + { + callback_data = g_slice_new (CallbackData); + callback_data->tile = tile; + callback_data->map_source = map_source; + + g_object_ref (map_source); + g_object_ref (tile); + + g_file_load_contents_async (file, NULL, + (GAsyncReadyCallback) tile_loaded_cb, + callback_data); + } + else + { + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + + if (CHAMPLAIN_IS_MAP_SOURCE (next_source)) + champlain_map_source_fill_tile (next_source, tile); + } + + g_object_unref (file); + g_free (path); +} diff --git a/lib/maps-file-tile-source.h b/lib/maps-file-tile-source.h new file mode 100644 index 00000000..9b432e04 --- /dev/null +++ b/lib/maps-file-tile-source.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef _MAPS_FILE_TILE_SOURCE_H_ +#define _MAPS_FILE_TILE_SOURCE_H_ + +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_FILE_TILE_SOURCE maps_file_tile_source_get_type () + +#define MAPS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSource)) + +#define MAPS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +#define MAPS_IS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_IS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_FILE_TILE_SOURCE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +typedef struct _MapsFileTileSourcePrivate MapsFileTileSourcePrivate; + +typedef struct _MapsFileTileSource MapsFileTileSource; +typedef struct _MapsFileTileSourceClass MapsFileTileSourceClass; + +/** + * MapsFileTileSource: + * + * The #MapsFileTileSource structure contains only private data + * and should be accessed using the provided API + * + */ +struct _MapsFileTileSource +{ + ChamplainTileSource parent_instance; + + MapsFileTileSourcePrivate *priv; +}; + +struct _MapsFileTileSourceClass +{ + ChamplainTileSourceClass parent_class; +}; + +GType maps_file_tile_source_get_type (void); + +gboolean maps_file_tile_source_prepare (MapsFileTileSource *tile_source, GError **error); +G_END_DECLS + +#endif /* _MAPS_FILE_TILE_SOURCE_H_ */ diff --git a/lib/maps-osm-changeset.c b/lib/maps-osm-changeset.c new file mode 100644 index 00000000..9dcc274d --- /dev/null +++ b/lib/maps-osm-changeset.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-changeset.h" + +#include + +struct _MapsOSMChangesetPrivate +{ + char *comment; + char *created_by; +}; + +enum { + PROP_0, + + PROP_COMMENT, + PROP_CREATED_BY +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMChangeset, maps_osm_changeset, G_TYPE_OBJECT) + +static void +maps_osm_changeset_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + changeset->priv->comment = g_value_dup_string (value); + break; + + case PROP_CREATED_BY: + changeset->priv->created_by = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + g_value_set_string (value, changeset->priv->comment); + break; + + case PROP_CREATED_BY: + g_value_set_string (value, changeset->priv->created_by); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_dispose (GObject *object) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + g_free (changeset->priv->comment); + g_free (changeset->priv->created_by); + + G_OBJECT_CLASS (maps_osm_changeset_parent_class)->dispose (object); +} + +static void +maps_osm_changeset_class_init (MapsOSMChangesetClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->dispose = maps_osm_changeset_dispose; + object_class->get_property = maps_osm_changeset_get_property; + object_class->set_property = maps_osm_changeset_set_property; + + /** + * MapsOSMChangeset:comment: + * + * The comment of the changes. + */ + pspec = g_param_spec_string ("comment", + "Comment", + "Comment", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_COMMENT, pspec); + + /** + * MapsOSMChangeset:created_by: + * + * The identifier of the client making the changeset. + */ + pspec = g_param_spec_string ("created_by", + "Created by", + "Created by", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_CREATED_BY, pspec); +} + +static void +maps_osm_changeset_init (MapsOSMChangeset *changeset) +{ + changeset->priv = maps_osm_changeset_get_instance_private (changeset); + + changeset->priv->comment = NULL; + changeset->priv->created_by = NULL; +} + +MapsOSMChangeset * +maps_osm_changeset_new (const char *comment, const char *created_by) +{ + return g_object_new (MAPS_TYPE_OSMCHANGESET, + "comment", comment, + "created_by", created_by, NULL); +} + +xmlNodePtr +maps_osm_changeset_create_tag_node (const char *key, const char * value) +{ + xmlNodePtr node; + + node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (node, (xmlChar *) "k", (xmlChar *) key); + xmlNewProp (node, (xmlChar *) "v", (xmlChar *) value); + + return node; +} + +char * +maps_osm_changeset_serialize (const MapsOSMChangeset *changeset) +{ + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr changeset_node; + xmlNodePtr comment_node; + xmlNodePtr created_by_node; + xmlChar *result; + int size; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + changeset_node = xmlNewNode (NULL, (xmlChar *) "changeset"); + comment_node = + maps_osm_changeset_create_tag_node ("comment", changeset->priv->comment); + created_by_node = + maps_osm_changeset_create_tag_node ("created_by", + changeset->priv->created_by); + xmlAddChild (osm_node, changeset_node); + xmlAddChild (changeset_node, comment_node); + xmlAddChild (changeset_node, created_by_node); + xmlDocSetRootElement (doc, osm_node); + + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-changeset.h b/lib/maps-osm-changeset.h new file mode 100644 index 00000000..01963366 --- /dev/null +++ b/lib/maps-osm-changeset.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_CHANGESET_H__ +#define __MAPS_OSM_CHANGESET_H__ + +#include + +#define MAPS_TYPE_OSMCHANGESET maps_osm_changeset_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMChangeset, maps_osm_changeset, MAPS, OSMCHANGESET, + GObject) + +typedef struct _MapsOSMChangesetPrivate MapsOSMChangesetPrivate; + +struct _MapsOSMChangeset +{ + GObject parent_instance; + MapsOSMChangesetPrivate *priv; +}; + +struct _MapsOSMChangesetClass +{ + GObjectClass parent_class; +}; + +/** + * maps_osm_changeset_new: + * @comment: (nullable): A comment about the OSM change, optional + * @created_by: (nullable): The client identifier of the OSM change, optional + */ +MapsOSMChangeset *maps_osm_changeset_new (const char *comment, + const char *created_by); + +char *maps_osm_changeset_serialize (const MapsOSMChangeset *changeset); + +#endif /* __MAPS_OSM_CHANGESET_H__ */ + diff --git a/lib/maps-osm-node.c b/lib/maps-osm-node.c new file mode 100644 index 00000000..05711e04 --- /dev/null +++ b/lib/maps-osm-node.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-node.h" + +struct _MapsOSMNodePrivate +{ + double lon; + double lat; +}; + +enum { + PROP_0, + + PROP_LONGITUDE, + PROP_LATITUDE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMNode, maps_osm_node, MAPS_TYPE_OSMOBJECT) + + +static void +maps_osm_node_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + node->priv->lon = g_value_get_double (value); + break; + + case PROP_LATITUDE: + node->priv->lat = g_value_get_double (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_node_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + g_value_set_double (value, node->priv->lon); + break; + + case PROP_LATITUDE: + g_value_set_double (value, node->priv->lat); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static const char * +maps_osm_node_get_xml_tag_name (void) +{ + return "node"; +} + +static GHashTable * +maps_osm_node_get_xml_attributes (const MapsOSMObject *object) +{ + const MapsOSMNode *node = MAPS_OSMNODE ((MapsOSMObject *) object); + GHashTable *attributes; + char buf[G_ASCII_DTOSTR_BUF_SIZE]; + + attributes = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); + + g_ascii_dtostr (buf, sizeof (buf), node->priv->lon); + g_hash_table_insert (attributes, "lon", g_strdup (buf)); + g_ascii_dtostr (buf, sizeof (buf), node->priv->lat); + g_hash_table_insert (attributes, "lat", g_strdup (buf)); + + return attributes; +} + +static void +maps_osm_node_class_init (MapsOSMNodeClass *klass) +{ + GObjectClass *node_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + node_class->get_property = maps_osm_node_get_property; + node_class->set_property = maps_osm_node_set_property; + object_class->get_xml_tag_name = maps_osm_node_get_xml_tag_name; + object_class->get_xml_attributes = maps_osm_node_get_xml_attributes; + + /** + * MapsOSMNode:longitude: + * + * The longitude of the node. + */ + pspec = g_param_spec_double ("longitude", + "Longitude", + "Longitude", + -180.0, + 180.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LONGITUDE, pspec); + + /** + * MapsOSMNode:latitude: + * + * The latitude of the node. + */ + pspec = g_param_spec_double ("latitude", + "Latitude", + "Latitude", + -90.0, + 90.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LATITUDE, pspec); +} + +static void +maps_osm_node_init (MapsOSMNode *node) +{ + node->priv = maps_osm_node_get_instance_private (node); + + node->priv->lon = 0.0; + node->priv->lat = 0.0; +} + +MapsOSMNode * +maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude) +{ + return g_object_new (MAPS_TYPE_OSMNODE, + "id", id, + "version", version, + "changeset", changeset, + "longitude", longitude, + "latitude", latitude, NULL); +} diff --git a/lib/maps-osm-node.h b/lib/maps-osm-node.h new file mode 100644 index 00000000..ba12d3bc --- /dev/null +++ b/lib/maps-osm-node.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_NODE_H__ +#define __MAPS_OSM_NODE_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMNODE maps_osm_node_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMNode, maps_osm_node, MAPS, OSMNODE, MapsOSMObject) + +typedef struct _MapsOSMNodePrivate MapsOSMNodePrivate; + +struct _MapsOSMNode +{ + MapsOSMObject parent_instance; + MapsOSMNodePrivate *priv; +}; + +struct _MapsOSMNodeClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMNode *maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude); + +#endif //__MAPS_OSM_NODE_H__ diff --git a/lib/maps-osm-oauth-proxy-call.c b/lib/maps-osm-oauth-proxy-call.c new file mode 100644 index 00000000..5e9e7544 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-oauth-proxy-call.h" + +#include +#include +#include + +#define MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL,\ + MapsOSMOAuthProxyCallPrivate)) + +struct _MapsOSMOAuthProxyCallPrivate +{ + char *payload; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(MapsOSMOAuthProxyCall, maps_osm_oauth_proxy_call, + OAUTH_TYPE_PROXY_CALL); + +static gboolean +maps_osm_oauth_proxy_call_serialize_params (RestProxyCall *call, + gchar **content_type, + gchar **content, + gsize *content_len, + GError **error) +{ + g_return_val_if_fail(MAPS_IS_OSM_OAUTH_PROXY_CALL (call), FALSE); + g_return_val_if_fail(content_type != NULL, FALSE); + g_return_val_if_fail(content != NULL, FALSE); + g_return_val_if_fail(content_len != NULL, FALSE); + + gchar *payload = (MAPS_OSM_OAUTH_PROXY_CALL (call))->priv->payload; + + *content_type = g_strdup ("text/xml"); + *content = g_strdup (payload); + *content_len = strlen (payload); + + return TRUE; +} + +static void +maps_osm_oauth_proxy_call_dispose (GObject *object) +{ + MapsOSMOAuthProxyCall *call = MAPS_OSM_OAUTH_PROXY_CALL (object); + + g_free (call->priv->payload); + call->priv->payload = NULL; + + G_OBJECT_CLASS (maps_osm_oauth_proxy_call_parent_class)->dispose (object); +} + +static void +maps_osm_oauth_proxy_call_class_init (MapsOSMOAuthProxyCallClass *klass) +{ + RestProxyCallClass *proxy_call_class = REST_PROXY_CALL_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + proxy_call_class->serialize_params = + maps_osm_oauth_proxy_call_serialize_params; + gobject_class->dispose = maps_osm_oauth_proxy_call_dispose; +} + +static void +maps_osm_oauth_proxy_call_init (MapsOSMOAuthProxyCall *call) +{ + call->priv = MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE (call); +} + +MapsOSMOAuthProxyCall * +maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, const char *payload) +{ + g_return_val_if_fail (OAUTH_IS_PROXY (proxy), NULL); + g_return_val_if_fail (payload != NULL, NULL); + + MapsOSMOAuthProxyCall *call = + g_object_new (MAPS_TYPE_OSM_OAUTH_PROXY_CALL, "proxy", proxy, NULL); + + call->priv->payload = g_strdup (payload); + + return call; +} + + diff --git a/lib/maps-osm-oauth-proxy-call.h b/lib/maps-osm-oauth-proxy-call.h new file mode 100644 index 00000000..e9c240d8 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef MAPS_OSM_OAUTH_PROXY_CALL_H +#define MAPS_OSM_OAUTH_PROXY_CALL_H + +#include + +#include +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_OSM_OAUTH_PROXY_CALL (maps_osm_oauth_proxy_call_get_type ()) +#define MAPS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCall)) +#define MAPS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_OSM_OAUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) + +typedef struct _MapsOSMOAuthProxyCall MapsOSMOAuthProxyCall; +typedef struct _MapsOSMOAuthProxyCallPrivate MapsOSMOAuthProxyCallPrivate; +typedef struct _MapsOSMOAuthProxyCallClass MapsOSMOAuthProxyCallClass; + +struct _MapsOSMOAuthProxyCall +{ + OAuthProxyCall parent; + MapsOSMOAuthProxyCallPrivate *priv; +}; + +struct _MapsOSMOAuthProxyCallClass +{ + OAuthProxyCallClass parent_class; +}; + +GType maps_osm_oauth_proxy_call_get_type(void); +MapsOSMOAuthProxyCall *maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, + const char *content); + +G_END_DECLS + +#endif /* MAPS_OSM_OAUTH_PROXY_CALL_H */ diff --git a/lib/maps-osm-object.c b/lib/maps-osm-object.c new file mode 100644 index 00000000..5a00f0c1 --- /dev/null +++ b/lib/maps-osm-object.c @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-object.h" + +struct _MapsOSMObjectPrivate +{ + guint64 id; + guint version; + guint64 changeset; + + GHashTable *tags; +}; + +enum { + PROP_0, + + PROP_ID, + PROP_VERSION, + PROP_CHANGESET +}; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MapsOSMObject, maps_osm_object, + G_TYPE_OBJECT) + +static void +maps_osm_object_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + priv->id = g_value_get_uint64 (value); + break; + + case PROP_VERSION: + priv->version = g_value_get_uint (value); + break; + + case PROP_CHANGESET: + priv->changeset = g_value_get_uint64 (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + g_value_set_uint64 (value, priv->id); + break; + + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + + case PROP_CHANGESET: + g_value_set_uint64 (value, priv->changeset); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_dispose (GObject *object) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + g_hash_table_destroy (priv->tags); + priv->tags = NULL; + + G_OBJECT_CLASS (maps_osm_object_parent_class)->dispose (object); +} + +/* base implementation returning no object-specific XML attributes */ +static GHashTable * +maps_osm_object_get_xml_attributes (const MapsOSMObject *object) +{ + return NULL; +} + +/* base implementation return no object-specific child XML nodes */ +static xmlNodePtr +maps_osm_object_get_xml_child_nodes (const MapsOSMObject *object) +{ + return NULL; +} + +static void +maps_osm_object_class_init (MapsOSMObjectClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_osm_object_dispose; + maps_class->get_property = maps_osm_object_get_property; + maps_class->set_property = maps_osm_object_set_property; + object_class->get_xml_attributes = maps_osm_object_get_xml_attributes; + object_class->get_xml_child_nodes = maps_osm_object_get_xml_child_nodes; + + /** + * MapsOSMObject:id: + * + * The OSM id of the object. + */ + pspec = g_param_spec_uint64 ("id", + "ID", + "ID", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsOSMObject:version: + * + * The latest OSM version of the object. + */ + pspec = g_param_spec_uint("version", + "Version", + "Version", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_VERSION, pspec); + + /** + * MapsOSMObject:changeset: + * + * The OSM changeset for the current upload of the object. + */ + pspec = g_param_spec_uint64 ("changeset", + "Changeset", + "Changeset", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_CHANGESET, pspec); +} + +static void +maps_osm_object_init (MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + priv->tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); +} + +const char * +maps_osm_object_get_tag (const MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private ((MapsOSMObject *) object); + + g_return_val_if_fail (key != NULL, NULL); + + return g_hash_table_lookup (priv->tags, key); +} + +void +maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_insert (priv->tags, g_strdup (key), g_strdup (value)); +} + +void +maps_osm_object_delete_tag (MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_remove (priv->tags, key); +} + +static void +maps_osm_object_foreach_tag (gpointer key, gpointer value, gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + /* skip tag if it has an empty placeholder value */ + if (val && *val) + { + xmlNodePtr tag_node; + + tag_node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (tag_node, (xmlChar *) "k", name); + xmlNewProp (tag_node, (xmlChar *) "v", val); + xmlAddChild (object_node, tag_node); + } +} + +static void +maps_osm_object_foreach_type_attr (gpointer key, gpointer value, + gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + xmlNewProp (object_node, name, val); +} + +xmlDocPtr +maps_osm_object_to_xml (const MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv; + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr object_node; + const char *type; + GHashTable *type_attrs; + xmlNodePtr type_sub_nodes; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + priv = (MapsOSMObjectPrivate *) maps_osm_object_get_instance_private ((MapsOSMObject *) object); + type = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_tag_name (); + object_node = xmlNewNode (NULL, (const xmlChar *) type); + + /* add common OSM attributes */ + if (priv->id != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->id); + xmlNewProp (object_node, (xmlChar *) "id", (xmlChar *) buf); + } + + if (priv->version != 0) + { + char buf[16]; + g_snprintf (buf, 16, "%d", priv->version); + xmlNewProp (object_node, (xmlChar *) "version", (xmlChar *) buf); + } + + if (priv->changeset != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->changeset); + xmlNewProp (object_node, (xmlChar *) "changeset", (xmlChar *) buf); + } + + /* add OSM tags */ + g_hash_table_foreach (priv->tags, maps_osm_object_foreach_tag, object_node); + + /* add type-specific attributes */ + type_attrs = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_attributes (object); + if (type_attrs) + { + g_hash_table_foreach (type_attrs, maps_osm_object_foreach_type_attr, + object_node); + g_hash_table_destroy (type_attrs); + } + + /* add type-specific sub-nodes */ + type_sub_nodes = + MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_child_nodes (object); + if (type_sub_nodes) + xmlAddChildList (object_node, type_sub_nodes); + + /* add type node to top node */ + xmlAddChild (osm_node, object_node); + xmlDocSetRootElement (doc, osm_node); + + return doc; +} + + +char * +maps_osm_object_serialize (const MapsOSMObject *object) +{ + xmlDocPtr doc; + xmlChar *result; + int size; + + doc = maps_osm_object_to_xml (object); + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-object.h b/lib/maps-osm-object.h new file mode 100644 index 00000000..6e8f2e3b --- /dev/null +++ b/lib/maps-osm-object.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_OBJECT_H__ +#define __MAPS_OSM_OBJECT_H__ + +#include +#include + +#define MAPS_TYPE_OSMOBJECT maps_osm_object_get_type () +G_DECLARE_DERIVABLE_TYPE(MapsOSMObject, maps_osm_object, MAPS, OSMOBJECT, + GObject) + +typedef struct _MapsOSMObjectPrivate MapsOSMObjectPrivate; + +struct _MapsOSMObjectClass +{ + GObjectClass parent_class; + + /* return the name of the distinguishing OSM XML tag (beneath ) */ + const char * (* get_xml_tag_name) (void); + + /* return hash table with XML attributes (key/values) specific for + the object (on the XML tag beneath ) */ + GHashTable * (* get_xml_attributes) (const MapsOSMObject *object); + + /* return a list of custom object-specific XML tags to attach, + can return NULL if there's no object-specific nodes */ + xmlNodePtr (* get_xml_child_nodes) (const MapsOSMObject *object); +}; + +const char *maps_osm_object_get_tag (const MapsOSMObject *object, + const char *key); +void maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value); +void maps_osm_object_delete_tag (MapsOSMObject *object, const char *key); + +char *maps_osm_object_serialize (const MapsOSMObject *object); + +#endif //__MAPS_OSM_OBJECT_H__ diff --git a/lib/maps-osm-relation.c b/lib/maps-osm-relation.c new file mode 100644 index 00000000..e4d4efd2 --- /dev/null +++ b/lib/maps-osm-relation.c @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-relation.h" + +struct _MapsOSMRelationPrivate +{ + GList *members; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMRelation, maps_osm_relation, + MAPS_TYPE_OSMOBJECT); + +typedef struct +{ + char *role; + guint type; + guint64 ref; +} MapsOSMRelationMember; + +static void +maps_osm_relation_member_free (gpointer data) +{ + MapsOSMRelationMember *member = (MapsOSMRelationMember *) data; + + g_free (member->role); +} + +static void +maps_osm_relation_dispose (GObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION (object); + + g_list_free_full (relation->priv->members, maps_osm_relation_member_free); + relation->priv->members = NULL; + + G_OBJECT_CLASS (maps_osm_relation_parent_class)->dispose (object); +} + +static const char * +maps_osm_relation_get_xml_tag_name (void) +{ + return "relation"; +} + +static const char * +maps_osm_relation_member_type_to_string (guint type) +{ + switch (type) { + case MEMBER_TYPE_NODE: + return "node"; + case MEMBER_TYPE_WAY: + return "way"; + case MEMBER_TYPE_RELATION: + return "relation"; + default: + g_warning ("Unknown relation member type: %d\n", type); + return NULL; + } +} + +static xmlNodePtr +maps_osm_relation_get_member_node (const MapsOSMRelationMember *member) +{ + xmlNodePtr node = xmlNewNode (NULL, (xmlChar *) "member"); + char buf[16]; + + if (member->role) + xmlNewProp (node, (xmlChar *) "role", (xmlChar *) g_strdup (member->role)); + + xmlNewProp (node, (xmlChar *) "type", + (xmlChar *) maps_osm_relation_member_type_to_string (member->type)); + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, member->ref); + xmlNewProp (node, (xmlChar *) "ref", (xmlChar *) buf); + + return node; +} + +static xmlNodePtr +maps_osm_relation_get_xml_child_nodes (const MapsOSMObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION ((MapsOSMObject *) object); + xmlNodePtr nodes = NULL; + const GList *members = relation->priv->members; + + if (members) + { + const GList *iter; + nodes = maps_osm_relation_get_member_node ((MapsOSMRelationMember *) + members->data); + + for (iter = members->next; iter; iter = iter->next) + { + xmlAddSibling (nodes, maps_osm_relation_get_member_node ( + (MapsOSMRelationMember *) iter->data)); + } + } + + return nodes; +} + +static void +maps_osm_relation_class_init (MapsOSMRelationClass *klass) +{ + GObjectClass *relation_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + relation_class->dispose = maps_osm_relation_dispose; + object_class->get_xml_tag_name = maps_osm_relation_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_relation_get_xml_child_nodes; +} + +static void +maps_osm_relation_init (MapsOSMRelation *relation) +{ + relation->priv = maps_osm_relation_get_instance_private (relation); +} + +MapsOSMRelation * +maps_osm_relation_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMRELATION, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_relation_add_member (MapsOSMRelation *relation, const gchar *role, + guint type, guint64 ref) +{ + MapsOSMRelationMember *member = g_new (MapsOSMRelationMember, 1); + + member->role = g_strdup (role); + member->type = type; + member->ref = ref; + + relation->priv->members = g_list_append (relation->priv->members, member); +} + diff --git a/lib/maps-osm-relation.h b/lib/maps-osm-relation.h new file mode 100644 index 00000000..ffcae785 --- /dev/null +++ b/lib/maps-osm-relation.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_RELATION_H__ +#define __MAPS_OSM_RELATION_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMRELATION maps_osm_relation_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMRelation, maps_osm_relation, MAPS, OSMRELATION, + MapsOSMObject) + +typedef struct _MapsOSMRelationPrivate MapsOSMRelationPrivate; + +struct _MapsOSMRelation +{ + MapsOSMObject parent_instance; + MapsOSMRelationPrivate *priv; +}; + +struct _MapsOSMRelationClass +{ + MapsOSMObjectClass parent_class; +}; + +enum { + MEMBER_TYPE_NODE, + MEMBER_TYPE_WAY, + MEMBER_TYPE_RELATION +}; + +MapsOSMRelation *maps_osm_relation_new (guint64 id, guint version, + guint64 changeset); + +void maps_osm_relation_add_member (MapsOSMRelation *relation, const char *role, + guint type, guint64 ref); + +#endif /* __MAPS_OSM_RELATION_H__ */ + diff --git a/lib/maps-osm-way.c b/lib/maps-osm-way.c new file mode 100644 index 00000000..a2150287 --- /dev/null +++ b/lib/maps-osm-way.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-way.h" + +struct _MapsOSMWayPrivate +{ + GArray *node_ids; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMWay, maps_osm_way, MAPS_TYPE_OSMOBJECT); + +static void +maps_osm_way_dispose (GObject *object) +{ + MapsOSMWay *way = MAPS_OSMWAY (object); + + g_array_free (way->priv->node_ids, TRUE); + way->priv->node_ids = NULL; + + G_OBJECT_CLASS (maps_osm_way_parent_class)->dispose (object); +} + +static const char * +maps_osm_way_get_xml_tag_name (void) +{ + return "way"; +} + +static xmlNodePtr +maps_osm_way_create_node_xml_node (guint64 ref) +{ + xmlNodePtr nd; + char buf[16]; + + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, ref); + nd = xmlNewNode (NULL, (xmlChar *) "nd"); + xmlNewProp (nd, (xmlChar *) "ref", (xmlChar *) buf); + + return nd; +} + +static xmlNodePtr +maps_osm_way_get_xml_child_nodes(const MapsOSMObject *object) +{ + const MapsOSMWay *way = MAPS_OSMWAY ((MapsOSMObject *) object); + int i; + xmlNodePtr result; + xmlNodePtr next; + + g_return_val_if_fail (way->priv->node_ids->len > 0, NULL); + + result = maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, 0)); + next = result; + + for (i = 1; i < way->priv->node_ids->len; i++) + { + xmlNodePtr new_node; + new_node = + maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, i)); + next = xmlAddNextSibling (next, new_node); + } + + return result; +} + +static void +maps_osm_way_class_init (MapsOSMWayClass *klass) +{ + GObjectClass *way_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + way_class->dispose = maps_osm_way_dispose; + object_class->get_xml_tag_name = maps_osm_way_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_way_get_xml_child_nodes; +} + +static void +maps_osm_way_init (MapsOSMWay *way) +{ + way->priv = maps_osm_way_get_instance_private (way); + way->priv->node_ids = g_array_new (FALSE, FALSE, sizeof (guint64)); +} + +MapsOSMWay * +maps_osm_way_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMWAY, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id) +{ + g_array_append_val (way->priv->node_ids, id); +} diff --git a/lib/maps-osm-way.h b/lib/maps-osm-way.h new file mode 100644 index 00000000..0dee1eec --- /dev/null +++ b/lib/maps-osm-way.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_WAY_H__ +#define __MAPS_OSM_WAY_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMWAY maps_osm_way_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMWay, maps_osm_way, MAPS, OSMWAY, MapsOSMObject) + +typedef struct _MapsOSMWayPrivate MapsOSMWayPrivate; + +struct _MapsOSMWay +{ + MapsOSMObject parent_instance; + MapsOSMWayPrivate *priv; +}; + +struct _MapsOSMWayClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMWay *maps_osm_way_new (guint64 id, guint version, guint64 changeset); + +void maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id); + +#endif /* __MAPS_OSM_WAY_H__ */ + diff --git a/lib/maps-osm.c b/lib/maps-osm.c new file mode 100644 index 00000000..307a9361 --- /dev/null +++ b/lib/maps-osm.c @@ -0,0 +1,471 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm.h" +#include "mapsintl.h" + +#include +#include + +#define MAPS_OSM_ERROR maps_osm_error_quark () + +GQuark +maps_osm_error_quark (void) +{ + return g_quark_from_static_string ("maps-osm-error"); +} + +void +maps_osm_init (void) +{ + LIBXML_TEST_VERSION; +} + +void +maps_osm_finalize (void) +{ + xmlCleanupParser (); +} + +static xmlDocPtr +read_xml_doc (const char *content, guint length, GError **error) +{ + xmlDoc *doc; + + doc = xmlReadMemory (content, length, "noname.xml", NULL, 0); + + if (!doc) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Failed to parse XML document")); + return NULL; + } + + return doc; +} + +static void +parse_tag (const xmlAttr *attrs, GHashTable *tags) +{ + const xmlAttr *cur_attr; + char *key; + char *value; + + key = NULL; + value = NULL; + + for (cur_attr = attrs; cur_attr; cur_attr = cur_attr->next) + { + if (g_str_equal (cur_attr->name, "k")) + key = (char *) cur_attr->children->content; + else if (g_str_equal (cur_attr->name, "v")) + value = (char *) cur_attr->children->content; + else + g_warning ("Unexpected tag property: %s\n", cur_attr->name); + } + + g_hash_table_insert (tags, key, value); +} + +static GHashTable * +parse_attributes (const xmlNode *node) +{ + GHashTable *attributes; + const xmlAttr *cur_attr; + + attributes = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_attr = node->properties; cur_attr; cur_attr = cur_attr->next) + { + g_hash_table_insert (attributes, + (gpointer) cur_attr->name, + (gpointer) cur_attr->children->content); + } + + return attributes; +} + +static GHashTable * +parse_tags (const xmlNode *tag_child) +{ + GHashTable *tags; + const xmlNode *cur_node; + + tags = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_node = tag_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "tag")) + parse_tag (cur_node->properties, tags); + } + + return tags; +} + +static GArray * +parse_node_refs (const xmlNode *node_ref_child) +{ + GArray *node_refs; + const xmlNode *cur_node; + + node_refs = g_array_new (FALSE, FALSE, sizeof (guint64)); + + for (cur_node = node_ref_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "nd")) + { + char *ref; + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + ref = g_hash_table_lookup (attributes, "ref"); + + if (ref) + { + guint64 id = g_ascii_strtoull (ref, NULL, 10); + + if (id == 0) + g_warning ("Invalid node ref: %s", ref); + else + g_array_append_val (node_refs, id); + } + + g_hash_table_destroy (attributes); + } + } + + return node_refs; +} + +static xmlNode * +get_sub_node (xmlDoc *doc) +{ + xmlNode *node; + xmlXPathContext *xpath_ctx; + xmlXPathObject * xpath_obj; + + xpath_ctx = xmlXPathNewContext (doc); + xpath_obj = xmlXPathEvalExpression ((xmlChar *) "/osm/node|/osm/way|/osm/relation", + xpath_ctx); + + if (xpath_obj && xpath_obj->nodesetval && xpath_obj->nodesetval->nodeNr > 0) + { + node = xmlCopyNode (xpath_obj->nodesetval->nodeTab[0], 1); + } + else + { + g_warning ("Couldn't find element"); + node = NULL; + } + + xmlXPathFreeObject (xpath_obj); + xmlXPathFreeContext (xpath_ctx); + + return node; +} + +static void +for_each_tag (gpointer key, gpointer value, gpointer user_data) +{ + const char *k = (const char *) key; + const char *v = (const char *) value; + MapsOSMObject *object = MAPS_OSMOBJECT (user_data); + + maps_osm_object_set_tag (object, k, v); +} + +static void +fill_tags (MapsOSMObject *object, GHashTable *tags) +{ + g_hash_table_foreach (tags, for_each_tag, object); +} + +static void +fill_node_ref_list (MapsOSMWay *way, const GArray *node_refs) +{ + int i; + + for (i = 0; i < node_refs->len; i++) + { + maps_osm_way_add_node_id (way, g_array_index (node_refs, guint64, i)); + } +} + +static MapsOSMNode * +parse_node (const xmlNodePtr node, GError **error) +{ + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + const char *lat_string; + double lat; + const char *lon_string; + double lon; + + GHashTable *tags; + GHashTable *attributes; + + MapsOSMNode *result; + + attributes = parse_attributes (node); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + lat_string = g_hash_table_lookup (attributes, "lat"); + lon_string = g_hash_table_lookup (attributes, "lon"); + + if (!id_string || !changeset_string || !version_string + || !lat_string || !lon_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + lon = g_ascii_strtod (lon_string, NULL); + lat = g_ascii_strtod (lat_string, NULL); + + g_hash_table_destroy (attributes); + + result = maps_osm_node_new (id, version, changeset, lon, lat); + + tags = parse_tags (node->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + + g_hash_table_destroy (tags); + + return result; +} + +static MapsOSMWay * +parse_way (const xmlNodePtr way, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GArray *node_refs; + MapsOSMWay *result; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + attributes = parse_attributes (way); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + g_warning ("Missing required attributes\n"); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_way_new (id, version, changeset); + + tags = parse_tags (way->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + node_refs = parse_node_refs (way->children); + fill_node_ref_list (result, node_refs); + g_array_free (node_refs, TRUE); + + return result; +} + + +static GList * +parse_members (const xmlNode *member_child) +{ + const xmlNode *cur_node; + GList *members; + + members = NULL; + + for (cur_node = member_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "member")) + { + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + members = g_list_append (members, attributes); + } + } + + return members; +} + +static void +fill_members (MapsOSMRelation *relation, const GList *members) +{ + const GList *cur; + + for (cur = members; cur; cur = g_list_next (cur)) { + GHashTable *attributes = (GHashTable *) cur->data; + const char *type_string = g_hash_table_lookup (attributes, "type"); + guint type; + const char *role = g_hash_table_lookup (attributes, "role"); + const char *ref_string = g_hash_table_lookup (attributes, "ref"); + guint64 ref; + + if (ref_string) + ref = g_ascii_strtoull (ref_string, NULL, 10); + + if (g_strcmp0 (type_string, "node") == 0) + type = MEMBER_TYPE_NODE; + else if (g_strcmp0 (type_string, "way") == 0) + type = MEMBER_TYPE_WAY; + else if (g_strcmp0 (type_string, "relation") == 0) + type = MEMBER_TYPE_RELATION; + else + { + g_warning ("Unknown relation type: %s\n", type_string); + continue; + } + + maps_osm_relation_add_member (relation, role, type, ref); + } +} + +static MapsOSMRelation * +parse_relation (const xmlNodePtr relation, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GList *member_list; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + MapsOSMRelation *result; + + attributes = parse_attributes (relation); + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_relation_new (id, version, changeset); + + tags = parse_tags (relation->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + member_list = parse_members (relation->children); + fill_members (result, member_list); + g_list_free_full (member_list, (GDestroyNotify) g_hash_table_destroy); + + return result; +} + +/** + * maps_osm_parse: + * @content: XML data + * @length: Length of data + * @error: Error handle + * Returns: (transfer full): A MapsOSMObject + */ +MapsOSMObject * +maps_osm_parse (const char *content, guint length, GError **error) +{ + xmlDocPtr doc; + xmlNodePtr sub_node; + MapsOSMObject *object; + + doc = read_xml_doc (content, length, error); + + if (!doc) + return NULL; + + sub_node = get_sub_node (doc); + + if (!sub_node) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Could not find OSM element")); + return NULL; + } + + if (g_str_equal (sub_node->name, "node")) + { + object = MAPS_OSMOBJECT (parse_node (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "way")) + { + object = MAPS_OSMOBJECT (parse_way (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "relation")) + { + object = MAPS_OSMOBJECT (parse_relation (sub_node, error)); + } + + xmlFreeNode (sub_node); + xmlFreeDoc (doc); + + return object; +} diff --git a/lib/maps-osm.h b/lib/maps-osm.h new file mode 100644 index 00000000..faca7404 --- /dev/null +++ b/lib/maps-osm.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_H__ +#define __MAPS_OSM_H__ + +#include + +#include "maps-osm-node.h" +#include "maps-osm-way.h" +#include "maps-osm-relation.h" + +void maps_osm_init (void); +void maps_osm_finalize (void); + +MapsOSMObject *maps_osm_parse (const char *content, guint length, + GError **error); + +#endif diff --git a/lib/maps.h b/lib/maps.h new file mode 100644 index 00000000..a6916d2b --- /dev/null +++ b/lib/maps.h @@ -0,0 +1,25 @@ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_H__ +#define __MAPS_H__ + +#include +#include "maps-contact-store.h" +#include "maps-contact.h" + +#endif diff --git a/lib/mapsintl.h b/lib/mapsintl.h new file mode 100644 index 00000000..56f31c3f --- /dev/null +++ b/lib/mapsintl.h @@ -0,0 +1,11 @@ +#ifndef _MAPS_INTL_H_ +#define _MAPS_INTL_H_ + +#ifdef ENABLE_NLS +#include +#define _(String) g_dgettext(GETTEXT_PACKAGE "-properties",String) +#else +#define _(String) (String) +#endif + +#endif diff --git a/lib/meson.build b/lib/meson.build new file mode 100644 index 00000000..60543648 --- /dev/null +++ b/lib/meson.build @@ -0,0 +1,75 @@ +maps_h = 'maps.h' + +headers_private = files( + 'maps-contact.h', + 'maps-contact-store.h', + 'maps-file-tile-source.h', + 'maps-osm.h', + 'maps-osm-changeset.h', + 'maps-osm-node.h', + 'maps-osm-object.h', + 'maps-osm-way.h', + 'maps-osm-relation.h', + 'maps-osm-oauth-proxy-call.h' +) + +sources = files( + 'maps-contact.c', + 'maps-contact-store.c', + 'maps-file-tile-source.c', + 'maps-osm.c', + 'maps-osm-changeset.c', + 'maps-osm-node.c', + 'maps-osm-object.c', + 'maps-osm-way.c', + 'maps-osm-relation.c', + 'maps-osm-oauth-proxy-call.c' +) + +enum_types = 'maps-enum-types' + +maps_enums = gnome.mkenums( + enum_types, + sources: headers_private, + c_template: enum_types + '.c.template', + h_template: enum_types + '.h.template', + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower() +) + +cflags = [ + '-DG_DISABLE_DEPRECATED', + '-DPREFIX="@0@"'.format(prefix), + '-DLIBDIR="@0@"'.format(libdir) +] + +libmaps = shared_library( + maps_libname, + version: '0.0.0', + sources: sources + maps_enums, + include_directories: top_inc, + dependencies: libmaps_deps, + c_args: cflags, + install: true, + install_dir: pkglibdir +) + +gnome.generate_gir( + libmaps, + sources: sources + [maps_enums, headers_private], + nsversion: maps_gir_version, + namespace: maps_gir_name, + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower(), + includes: [ + 'GLib-2.0', + 'GObject-2.0', + 'GeocodeGlib-1.0', + 'Champlain-0.12', + 'Rest-0.7' + ], + install: true, + install_dir_gir: join_paths(pkgdatadir, 'gir-' + maps_gir_version), + install_dir_typelib: join_paths(pkglibdir, 'girepository-' + maps_gir_version) +) + diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..eb14d5c4 --- /dev/null +++ b/meson.build @@ -0,0 +1,64 @@ +project('gnome-maps', 'c', + version: '41.0', + license: 'GPL2+' +) + +app_id = 'org.gnome.Maps' +gnome = import('gnome') +i18n = import('i18n') + +prefix = get_option('prefix') +name = meson.project_name() +version = meson.project_version() + +bindir = join_paths(prefix, get_option('bindir')) +libdir = join_paths(prefix, get_option('libdir')) +datadir = join_paths(prefix, get_option('datadir')) +pkgdatadir = join_paths(datadir, name) +pkglibdir = join_paths(libdir, name) + +maps_ns = 'Maps' +maps_libname = 'gnome-maps' +maps_gir_name = 'GnomeMaps' +maps_gir_version = '1.0' + +desktop_file_validate = find_program('desktop-file-validate', required: false) +appstream_util = find_program('appstream-util', required: false) + +glib = dependency('glib-2.0', version: '>= 2.66.0') +gio = dependency('gio-2.0', version: '>= 2.44.0') +gjs = dependency('gjs-1.0', version: '>= 1.66.0') +girepository = dependency('gobject-introspection-1.0', version: '>= 0.10.1') +gtk3 = dependency('gtk+-3.0', version: '>= 3.22.0') +geoclue2 = dependency('geoclue-2.0', version: '>= 0.12.99') +handy = dependency('libhandy-1', version: '>= 0.84.0') + +libmaps_deps = [ + dependency('gee-0.8', version: '>= 0.16.0'), + dependency('folks', version: '>= 0.10.0'), + dependency('geocode-glib-1.0', version: '>= 3.15.2'), + dependency('champlain-0.12', version: '>= 0.12.14'), + dependency('libxml-2.0'), + dependency('rest-0.7', version: '>= 0.7.90') +] + +msgfmt = find_program('msgfmt') +po_dir = join_paths(meson.source_root(), 'po') + +top_inc = include_directories('.') + +cc = meson.get_compiler('c') + +gjs = find_program('gjs') + +subdir('po') +subdir('src') +subdir('lib') +subdir('data') +subdir('tests') + +meson.add_install_script( + 'meson_post_install.py', + datadir, + bindir +) diff --git a/meson_post_install.py b/meson_post_install.py new file mode 100644 index 00000000..bb6b67c9 --- /dev/null +++ b/meson_post_install.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import glob +import os +import re +import subprocess +import sys + +datadir = sys.argv[1] + +destdir = os.environ.get('DESTDIR', '') +bindir = os.path.normpath(destdir + os.sep + sys.argv[2]) + +# FIXME: meson will not track the creation of these files +# https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 +if not os.path.exists(bindir): + os.makedirs(bindir) + +src = os.path.join(datadir, 'gnome-maps', 'org.gnome.Maps') +dest = os.path.join(bindir, 'gnome-maps') +subprocess.call(['ln', '-s', '-f', src, dest]) + +if not os.environ.get('DESTDIR'): + icondir = os.path.join(datadir, 'icons', 'hicolor') + + print('Update icon cache...') + subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir]) + + schemadir = os.path.join(datadir, 'glib-2.0', 'schemas') + print('Compiling gsettings schemas...') + subprocess.call(['glib-compile-schemas', schemadir]) + + # FIXME + ''' + search_pattern = '/*.desktop' + + desktopdir = os.path.join(datadir, 'applications') + print('Validate desktop files...') + [subprocess.call(['desktop-file-validate', file]) + for file in glob.glob(desktopdir + search_pattern, recursive=False)] + ''' + diff --git a/org.gnome.Maps.json b/org.gnome.Maps.json new file mode 100644 index 00000000..903e3b77 --- /dev/null +++ b/org.gnome.Maps.json @@ -0,0 +1,245 @@ +{ + "app-id" : "org.gnome.Maps", + "runtime" : "org.gnome.Platform", + "runtime-version" : "master", + "sdk" : "org.gnome.Sdk", + "command" : "gnome-maps", + "tags" : [ + "devel" + ], + "desktop-file-name-prefix" : "(Development) ", + "finish-args" : [ + "--share=ipc", + "--socket=x11", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--share=network", + "--talk-name=org.gnome.OnlineAccounts", + "--talk-name=org.gnome.evolution.dataserver.AddressBook10", + "--talk-name=org.gnome.evolution.dataserver.Calendar7", + "--talk-name=org.gnome.evolution.dataserver.Sources5", + "--talk-name=org.gnome.evolution.dataserver.Subprocess.Backend.*", + "--system-talk-name=org.freedesktop.GeoClue2", + "--filesystem=xdg-run/dconf", + "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", + "--env=DCONF_USER_CONFIG_DIR=.config/dconf", + "--env=G_ENABLE_DIAGNOSTICS=1" + ], + "build-options" : { + "cflags" : "-O2 -g", + "cxxflags" : "-O2 -g", + "env" : { + "V" : "1" + } + }, + "cleanup" : [ + "/include", + "/lib/pkgconfig", + "/share/pkgconfig", + "/share/aclocal", + "/man", + "/share/man", + "/share/gtk-doc", + "/share/vala", + "*.la", + "*.a" + ], + "modules" : [ + { + "name": "libical", + "cleanup": [ "/lib/cmake" ], + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_INSTALL_LIBDIR:PATH=/app/lib", + "-DBUILD_SHARED_LIBS:BOOL=ON", + "-DGOBJECT_INTROSPECTION:BOOL=ON", + "-DICAL_BUILD_DOCS:BOOL=OFF", + "-DICAL_GLIB_VAPI:BOOL=ON", + "-DICAL_GLIB:BOOL=ON" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/libical/libical.git", + "branch": "3.0" + } + ] + }, + { + "name" : "gnome-online-accounts", + "config-opts" : [ + "--disable-Werror", + "--disable-telepathy", + "--disable-documentation", + "--disable-backend" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-online-accounts.git" + } + ] + }, + { + "name" : "geocode-glib", + "buildsystem" : "meson", + "builddir" : true, + "config-opts" : [ + "--libdir=/app/lib", + "-Denable-gtk-doc=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/geocode-glib.git" + } + ] + }, + { + "name" : "libgweather", + "buildsystem" : "meson", + "config-opts" : [ + "--libdir=/app/lib" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgweather.git" + } + ] + }, + { + "name": "intltool", + "cleanup": [ "*" ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz", + "sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd" + } + ] + }, + { + "name" : "evolution-data-server", + "cleanup" : [ + "/lib/cmake", + "/lib/evolution-data-server/*-backends", + "/libexec", + "/share/dbus-1/services" + ], + "config-opts" : [ + "-DENABLE_GTK=OFF", + "-DENABLE_GOOGLE_AUTH=OFF", + "-DENABLE_UOA=OFF", + "-DENABLE_GOOGLE=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DWITH_OPENLDAP=OFF", + "-DWITH_LIBDB=OFF", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_INSTALLED_TESTS=OFF", + "-DENABLE_GTK_DOC=OFF", + "-DENABLE_EXAMPLES=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_CANBERRA=OFF" + ], + "buildsystem" : "cmake-ninja", + "sources" : [ + { + "type" : "git", + "url": "https://gitlab.gnome.org/GNOME/evolution-data-server.git" + } + ] + }, + { + "name" : "folks", + "buildsystem": "meson", + "cleanup" : [ + "/bin" + ], + "config-opts" : [ + "-Dtelepathy_backend=false", + "-Dofono_backend=false", + "-Dbluez_backend=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/folks.git" + } + ] + }, + { + "name" : "librest", + "sources" : [ + { + "type" : "archive", + "url" : "https://gitlab.gnome.org/GNOME/librest/-/archive/0.8.1/librest-0.8.1.tar.gz", + "sha256" : "2bdd1be07a9150b1c6ceea6e01dedf2efcff564381cae0cd6c7330403efe59d7" + } + ] + }, + { + "name": "cogl", + "config-opts": [ + "--disable-cogl-gst", + "--enable-xlib-egl-platform", + "--enable-wayland-egl-platform" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/cogl/1.22/cogl-1.22.8.tar.xz", + "sha256": "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759" + } + ] + }, + { + "name": "clutter", + "config-opts": [ + "--enable-egl-backend", + "--enable-wayland-backend" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/clutter/1.26/clutter-1.26.4.tar.xz", + "sha256": "8b48fac159843f556d0a6be3dbfc6b083fc6d9c58a20a49a6b4919ab4263c4e6" + } + ] + }, + { + "name": "clutter-gtk", + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/clutter-gtk/1.8/clutter-gtk-1.8.4.tar.xz", + "sha256": "521493ec038973c77edcb8bc5eac23eed41645117894aaee7300b2487cb42b06" + } + ] + }, + { + "name" : "libchamplain", + "buildsystem": "meson", + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libchamplain.git" + } + ] + }, + { + "name" : "gnome-maps", + "buildsystem" : "meson", + "builddir" : true, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-maps.git" + } + ] + } + ] +} diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 00000000..7f374e34 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,64 @@ +af +an +ar +as +bg +bs +ca +ca@valencia +cs +da +de +el +en_GB +eo +es +et +eu +fa +fi +fr +fur +ga +gd +gl +he +hi +hr +hu +id +is +it +ja +kk +kn +ko +lt +lv +mjw +ml +ms +nb +ne +nl +oc +pa +pl +pt +pt_BR +ru +ro +sk +sl +sr +sr@latin +sv +ta +te +tg +tr +uk +vi +zh_CN +zh_HK +zh_TW diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..dd6119c4 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,64 @@ +# List of source files containing translatable strings. +# Please keep this file sorted alphabetically. +data/org.gnome.Maps.appdata.xml.in +data/org.gnome.Maps.desktop.in +data/org.gnome.Maps.gschema.xml +data/ui/check-in-dialog.ui +data/ui/context-menu.ui +data/ui/export-view-dialog.ui +data/ui/headerbar-left.ui +data/ui/headerbar-right.ui +data/ui/help-overlay.ui +data/ui/layers-popover.ui +data/ui/location-service-dialog.ui +data/ui/main-window.ui +data/ui/osm-account-dialog.ui +data/ui/osm-edit-address.ui +data/ui/osm-edit-dialog.ui +data/ui/place-popover.ui +data/ui/route-entry.ui +data/ui/send-to-dialog.ui +data/ui/shape-layer-file-chooser.ui +data/ui/shape-layer-row.ui +data/ui/sidebar.ui +data/ui/social-place-more-results-row.ui +data/ui/transit-leg-row.ui +data/ui/transit-options-panel.ui +data/ui/place-bar.ui +data/ui/place-buttons.ui +data/ui/place-view.ui +data/ui/zoom-in-dialog.ui +lib/maps-file-tile-source.c +lib/maps-osm.c +src/application.js +src/checkInDialog.js +src/checkIn.js +src/contextMenu.js +src/exportViewDialog.js +src/geoclue.js +src/geoJSONSource.js +src/graphHopper.js +src/layersPopover.js +src/mainWindow.js +src/mapView.js +src/osmConnection.js +src/osmEditDialog.js +src/photonParser.js +src/placeEntry.js +src/placeView.js +src/place.js +src/printLayout.js +src/printOperation.js +src/routeEntry.js +src/sendToDialog.js +src/shapeLayer.js +src/sidebar.js +src/transit.js +src/transitLegRow.js +src/transitMoreRow.js +src/transitOptionsPanel.js +src/transitPlan.js +src/translations.js +src/utils.js +src/transitplugins/goMetro.js +src/transitplugins/openTripPlanner.js diff --git a/po/POTFILES.skip b/po/POTFILES.skip new file mode 100644 index 00000000..4427cad6 --- /dev/null +++ b/po/POTFILES.skip @@ -0,0 +1,2 @@ +data/gnome-maps.appdata.xml +data/org.gnome.Maps.desktop diff --git a/po/af.po b/po/af.po new file mode 100644 index 00000000..fee368e4 --- /dev/null +++ b/po/af.po @@ -0,0 +1,182 @@ +# Afrikaans translation for gnome-maps. +# This file is distributed under the same license as the gnome-maps package. +# Copyright (C) +# Dawid Loubser , 2013. +# F Wolff , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-09 20:30+0000\n" +"PO-Revision-Date: 2013-10-13 23:29+0200\n" +"Last-Translator: F Wolff \n" +"Language-Team: translate-discuss-af@lists.sourceforge.net\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Padkaart gee vinnige toegang tot padkaarte van regoor die wêreld. Dit laat " +"mens toe om vinnig 'n gewenste plek te vind deur te soek vir 'n stad of 'n " +"straat, of om 'n ontmoetingspunt op te spoor." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +#, fuzzy +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • Soek vir 'n land, streek, stad of straat.
  • Soek vir spesifieke " +"tipe liggings, soos “Restaurante in Melville, Johannesburg” of “Hotelle in " +"Mosselbaai”
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Padkaart gebruik die gesamentlike OpenStreetMap-databasis, geskep deur " +"honderde duisende mense regoor die wêreld." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "Padkaart" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "'n Eenvoudige padkaart-toepassing" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;Padkaart;Kaart;Ligging;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Venstergrootte" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Venstergrootte (wydte en hoogte)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Vensterposisie" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Vensterposisie (X en Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Venster-maksimeringstoestand" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Toestand van die venster in terme van maksimering" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "Laas bekende ligging en akkuraatheid" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Laas bekende ligging (breedte- en lengtegraad in grade) en akkuraatheid (in " +"meter)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "Beskrywing van laas bekende ligging" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "Beskrywing van laas bekende ligging van gebruiker." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "Maksimum aantal soekresultate" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum aantal soekresultate van geokoderingsoektog." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "Gebruiker het laas bekende ligging gestel" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "Of die gebruiker self die laas bekende ligging gestel het." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "Aangaande" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "Sluit af" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Wat is hier?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "Ek is hier!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "Dawid Loubser" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "'n Padkaart-toepassing vir GNOME" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "Straat" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "Satelliet" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "Presies" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Ligging-akkuraatheid: %s" diff --git a/po/an.po b/po/an.po new file mode 100644 index 00000000..34fdb264 --- /dev/null +++ b/po/an.po @@ -0,0 +1,685 @@ +# Aragonese translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jorge Pérez Pérez , 2014 +# Daniel Martinez , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-05-03 19:08+0000\n" +"PO-Revision-Date: 2015-05-03 22:30+0200\n" +"Last-Translator: Daniel \n" +"Language-Team: Aragonés \n" +"Language: an\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.5.1.1\n" +"X-POOTLE-MTIME: 1430688604.000000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas te ofreix un acceso rapido a mapas de tot o mundo. Te permite trobar " +"puestos rapidament mirando por ciudat u por carrera, u mirar un puesto ta " +"trobar-te con un amigo." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Os mapas fan servir a base de datos colaborativa OpenStreetMap, feita por " +"cients de mils de personas de tot o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tamién puede buscar por tipos d'ubicacions especificos como “Tabiernas amán " +"d'o Paseyo d'a Independencia, Zaragoza”u “Hotels amán d'a Plaza d'o Torico, " +"Teruel”." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:366 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicación simpla de mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Grandaria d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Grandaria d'a finestra (amplaria y altura )" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Posición d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window position (X and Y)." +msgstr "Posición d'a finestra (X y Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Finestra maximizada" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window maximization state" +msgstr "Estau de maximización d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "Numero maximo de resultaus de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Numero maximo de resultaus de búsca ta buscas por cheocodigo." + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "Numero de puestos recients que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "Numero de puestos visitaus recientment que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Facebook usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Foursquare usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Arredol de" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Salir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilidat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar en Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar en Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Rechistrar" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Totz" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amigos d'amigos" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Solament amigos" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Solament yo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Público" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidores" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privau" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Qué bi ha aquí?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar os servicios d'ubicación ta trobar a suya posición" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Configuración d'a ubicación" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Trigar o tipo de mapa" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Commutar o planificador de rotas" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Commutar favoritos" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Mapas ye desconnectau" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Mapas ameneste una connexión a Internet activa ta funcionar correctament, " +"pero no s'ha trobau garra." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Comprebe a configuración d'a suya connexión y d'o suyo proxy." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Adhibir a la rota nueva" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Ubrir con unatra aplicación" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Rechistrar-se aquí" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Prete Intro ta buscar" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Ubrir ubicación" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Ubrir" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Rota buscada por GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Amostrar más resultaus" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:207 +msgid "Current location" +msgstr "Ubicación actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "No se puede trobar \"%s\" en o ret social" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede trobar un puesto adequau ta rechistrar-se en ista ubicación" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credencials han caducau. Ubra as Cuentas en linia ta encetar sesión y " +"activar ista cuenta." + +#: ../src/checkIn.js:153 ../src/checkInDialog.js:289 +msgid "An error has occurred" +msgstr "Ha ocurriu una error" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Cargando" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Seleccionar un puesto" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Facebook. Trigue " +"un d'a lista." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Foursquare. " +"Trigue un d'a lista." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Rechistrar-se en %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensache opcional ta rechistrar-se en %s." + +#: ../src/mainWindow.js:314 +msgid "Failed to connect to location service" +msgstr "Falló en connectar a o servicio d'ubicación" + +#: ../src/mainWindow.js:319 +msgid "Position not found" +msgstr "Posición no trobada" + +#: ../src/mainWindow.js:364 +msgid "translator-credits" +msgstr "" +"Jorge Pérez Pérez , 2014\n" +"Daniel Martínez Cucalón " + +#: ../src/mainWindow.js:367 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas ta GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:120 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:127 +msgid "limited" +msgstr "limitau" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:133 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:140 +msgid "designated" +msgstr "designau" + +#: ../src/routeService.js:69 +msgid "No route found." +msgstr "No s'ha trobau a rota." + +#: ../src/routeService.js:76 +msgid "Route request failed." +msgstr "Falló en solicitar a rota." + +#: ../src/routeService.js:147 +msgid "Start!" +msgstr "Empecipiar" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Codigo postal: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Codigo d'o país: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Población: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Horario d'obridura: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Acceso ta siellas de ruedas: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:197 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimau: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "tot o día" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "dende l'amaneixer dica a mesa d'o sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "festivos" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "vacancias escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "zarrau" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Desconoixiu" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:259 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f pietz" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zaguera ubicación conoixida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zaguera ubicación conoixida (latitut y longaria en graus) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location" +#~ msgstr "Descripción d'a zaguera ubicación conoixida" + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción d'a zaguera ubicación conoixida de l'usuario." + +#~ msgid "User set last known location" +#~ msgstr "Zaguera ubicación conoixida establida por l'usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si a zaguera ubicación conoixida la establió l'usuario manualment." + +#~ msgid "I’m here!" +#~ msgstr "Soi aquí!" + +#~ msgid "Street" +#~ msgstr "Carrera" + +#~ msgid "Satellite" +#~ msgstr "Satelite" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 00000000..900fcd71 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,1620 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Khaled Hosny , 2013, 2014, 2017. +# Safa Alfulaij , 2016, ٢٠١٦. +# Ibrahim Saed , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-29 17:50+0200\n" +"PO-Revision-Date: 2017-09-29 16:01+0200\n" +"Last-Translator: Khaled Hosny \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Virtaal 1.0.0-beta1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "خرائط جنوم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "جِد الأماكن حول العالم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"يمكّنك تطبيق الخرائط من مطالعة خرائط العالم أجمع، فهو يمكّنك من العثور على ما " +"تريد بالبحث عن مدينة أو اسم شارع أو مكان ستجمتع فيه مع صديقك." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"يستخدم تطبيق الخراط قاعدة بيانات «خريطة الشارع المفتوحة» التعاونية، والتي " +"شارك فيها آلاف الأشخاص حول العالم." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"يمكن أيضا البحث عن أماكن محدّدة النوع، مثل ”Pubs near Main Street, Boston\" " +"أو \"Hotels near Alexanderplatz, Berlin“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "الخرائط" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "تطبيق خرائط بسيط" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "خرائط;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "يسمح بإظهار مكانك على الخريطة." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "آخر مكان معروض" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "إحداثيات آخر مكان عُرض." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "حجم النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "حجم النافذة (العرض والارتفاع)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "موضع النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "موضع النافذة (س و ص)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "النافذة مُكبّرة" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "حالة تكبير النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "أقصى عدد لنتائج البحث" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "أقصى عدد لنتائج البحث من بحث الرمز الجغرافي." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "عدد أحدث الأماكن لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "عدد الأماكن التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "عدد أحدث المسارات لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "عدد المسارات التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "إعداد خصوصية الدخول إلى «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فيسبوك» قد استُخدم. القيم الممكنة هي: EVERYONE أو " +"FRIENDS_OF_FRIENDS أو ALL_FRIENDS أو SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "إعداد «فورسكوير» لخصوصية الدخول" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فورسكوير» قد استُخدم. القيم الممكنة هي: public أو " +"followers أو private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كمنشور في حساب فيسبوك المرتبط مع حساب " +"«فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كتغريدة في حساب «فيسبوك» المرتبط مع " +"حساب «فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "اسم مستخدم أو عنوان البريد الإلكترونيّ في «خريطة الشارع المفتوحة»" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "يشير في حال كان المستخدم قد ولج لتحرير بيانات «خريطة الشارع المفتوحة»." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "أعدّ حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "اختصارات لو_حة المفاتيح" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "عنْ" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "الظهور" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "أل_غِ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "اد_خل" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "للجميع" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "لأصدقاء أصدقائي" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "لأصدقائي فقط" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "لي فقط" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "للعامة" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "للمتابعين" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "خاص" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ماذا يوجد هنا؟" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "انسخ المكان" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "صدّر كصورة" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "صدّر العرض" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_صدّر" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ضمّن المسارات والعلامات" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "عام" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "اعرض الاختصارات" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "ابحث" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "اطبع المسار" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "منظور الخريطة" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "قرّب" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بعّد" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "اعرض/أخفِ المقياس" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "انتقل إلى منظور الشارع" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "انتقل إلى منظور جوي" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "افتح طبقة الشكل" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "حمّل طبقة خريطة" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "فعّل خدمات التموضع لتجد مكانك" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "إعدادات التموضع" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "اختر نوع الخريطة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "اعرض/أخفِ المفضّلة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "اطبع المسار" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "تطبيق الخرائط يعمل بلا اتصال!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"يحتاج تطبيق الخرائط إلى اتصال إنترنت نشط ليعمل كما ينبغي، لكنه لم يعثر على " +"واحد." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "افحص إعدادات اتصالك ووكيلك." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "أضفه إلى مسار جديد" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "افتح بتطبيق آخر" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "علّمه كمفضّل" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "ادخل هنا" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "سجّل لتحرير الخرائط" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"ساهم في تحسين الخريطة باستخدام\n" +"حساب «خريطة الشارع المفتوحة»." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "كلمة السر" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "لِج" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "أليس لديك حساب؟" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"آسفون، لم يعمل هذا. من فضلك جرّب مجددا، أو زُر\n" +"«خريطة الشارع " +"المفتوحة» لتصفير كلمة السر." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "رمز التأكيد لا يتطابق، من فضلك جرّب مجددا." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "أدخل رمز التأكيد الظاهر أعلاه" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "أكّد" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "أنت والج" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "حسابك في «خريطة الشارع المفتوحة» نشط." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "اخرج" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "الشوارع" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "رقم المنزل" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "الرقم البريدي" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "المدينة" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "النوع" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "بلا" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "أضف حقلا" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "تعليق" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ستظهر التعديلات على الخريطة في كل الخرائط التي تستخدم بيانات «خريطة الشارع " +"المفتوحة»." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "المستخدمة حديثًا" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ألغِ" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "التالي" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "اعرض معلومات أكثر" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "اضغط Enter للبحث" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "لا نتائج" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "اسحب لتغيير المسار" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "افتح المكان" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "ا_فتح" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "افتح طبقة" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "اعرض/أخفِ" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "البحث عن المسار يدعمه GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "البحث عن المسار يدعمه OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسارات وسائل النقل العامة توفرها جنوم بناء على\n" +"بيانات المواعيد من شركات و هيئات النقل.\n" +"ليست الشركات و الهيئات مسئولة عن النتائج المعروضة.\n" +"لا تضمن جنوم صحة المسارات و لا المواعيد المعروضة.\n" +"الأسماء تعتبر علامات تجارية مسجلة حسب القواعد." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "اعرض نتائج أكثر" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "أخف الخطوات البينية و المعلومات" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "اعرض الخطوات البينية و المعلومات" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "غادر الآن" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "غادر في" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "تصل في" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "اعرض" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "حافلات" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ترام" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "قطارات" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "قطارات الأنفاق" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "عبّارات" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "المكان الحالي" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "الدقة: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "قرّب لتضيف مكانا!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "حسنًا" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "فشل إيجاد بنية قطع خرائط في الدليل" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "فشل تحليل ملف XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "الصفات المطلوبة ناقصة" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "تعذر إيجاد عنصر OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "مسار يشير إلى دليل محليّ لبنية قطع خرائط" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "اختر حسابا" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "يحمّل" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "اختر مكانا" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فيسبوك». من فضلك اختر واحدا " +"من القائمة." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فورسكوير». من فضلك اختر " +"واحدا من القائمة." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "ادخل إلى %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "اكتب رسالة اختيارية للدخول إلى %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "حدث خطأ ما" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "تعذّر إيجاد ”%s“ في الخدمة الاجتماعية" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "تعذّر إيجاد مكان مناسب للدخول إلى هذا المكان" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"انتهت صلاحية معلومات الولوج، من فضلك افتح الحساب الشبكية لتلج وتفعّل هذا " +"الحساب" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "المسار من هنا" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "أضف مقصدا" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "المسار إلى هنا" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "لم أجد شيئا هنا!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"أُضيف المكان إلى الخريطة، لكن لاحظ أنه قد يأخذ وقتا ليظهر عليها وفي نتائج " +"البحث." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "نظام الملفات للقراءة فقط" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "لا صلاحيات لك للحفظ هناك" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "الدليل غير موجود" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "لم يُحدّد اسم ملف" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "تعذّر تصدير العرض" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "إحداثية غير صالحة" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "خطأ في التحليل" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "الهندسة مجهولة" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "فشل طلب المسار." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "لا مسار." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "ابدأ!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "كل ملفات الطبقات" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "فشل الاتصال بخدمة التموضع" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"فريق عربآيز للترجمة http://www.arabeyes.org:\n" +"خالد حسني\t\n" +"صفا الفليج\t" + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "تطبيق خرائط لجنوم" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "نوع الملفات غير مدعوم" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "فشل فتح الطبقة" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "فشل فتح العنوان الجغرافي" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "لم يُعثر على بدائل سابقة." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "لم يُعثر على بدائل لاحقة." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "لم يُعثر على بيانات المواعيد لهذا المسار." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "اسم المستخدم أو كلمة السر خاطئة" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "نجح" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "طلب سيّئ" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "الكائن غير موجود" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "ثمة تضارب، هناك من عدّل الكائن لتوّه" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "حُذف الكائن" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "يشير الطريق أو العلاقة إلى ابن غير موجود" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "الاسم" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "الاسم الرسمي. غالبا ما يكون على العلامات." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "العنوان" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "موقع الوِب" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"موقع الوِب الرسمي. حاول استخدام أبسط صيغة للعنوان مثل http://example.com بدل " +"http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "الهاتف" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"رقم الهاتف. استخدم الصيغة العالمية، مبتدءًا الرقم بعلامة +. انتبه لحقوق " +"الخصوصية في الدول، خصوصا تلك الخاصة بأرقام الهواتف الخاصة." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "ويكيبيديا" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"الصيغة المُستخدمة هنا تتضمن رمز اللغة وعنوان المقال مثل ”ar:عنوان المقالة“." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "ساعات العمل" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "طالع الوصلة في اللصيقة لتجد مساعدة حول الصيغة." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "عدد السكان" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "الارتفاع الرأسي" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ارتفاع نقطة (عن مستوى سطح البحر) بالأمتار." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "دخول الكراسي ذات العجلات" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "مسموح" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "ممنوع" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "محدود" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "محدّد" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "الوصول إلى الإنترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "واي-فاي" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "سلكي" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "طرفيّة" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "خدمة" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "الدين" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "إحيائية" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "بهائية" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "بوذية" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "كاو دائية" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "مسيحية" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "كونفشيوسية" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "هندوسية" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "جاينية" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "يهودية" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "إسلام" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "ديانات متعددة" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "وثنية" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "باستافارية" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "سينتولوجيا" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "شنتو" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "سيخية" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "روحانية" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "طاوية" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "توحيدية كونية" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "فودو" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "يزدية" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرادشتية" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "حمامات" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "ملاحظة" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"معلومات تعلم الخرائطيين الآخرين عن معلومات غير بديهية عن عنصر ما، أو غرض " +"المؤلف عند إنشائه، أو ملاحظات تساعد في تحسينه." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "اختر نوعًا" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "تمّ" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "السّكانيّة:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "الارتفاع الرأسي:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "ساعات العمل:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "الوصول إلى الإنترنت:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "الدين:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "حمامات:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "دخول الكراسي ذات العجلات:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "الهاتف:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "فشل تحليل العنوان الجغرافي" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "مسموح" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ممنوع" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "محدّد" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "من %s إلى %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "يحمّل قطع الخرائط للطباعة" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "يمكنك إجهاض الطباعة إن أخذت وقتا طويلا" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "أجهض الطباعة" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "فشل فتح العنوان" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "فشل تحميل الملف" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "الوقت المقدّر: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "تصل إلى %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "تصل" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "ابدأ من %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "ابدأ" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "اعرض تعليمات المشي" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "أخفِ تعليمات المشي" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "امشِ %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "حمّل البدائل السابقة" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "حمّل البدائل اللاحقة" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %B" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d دقيقة" +msgstr[1] "دقيقة" +msgstr[2] "دقيقتين" +msgstr[3] "%d دقائق" +msgstr[4] "%d دقيقة" +msgstr[5] "%d دقيقة" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ساعة" +msgstr[1] "ساعة" +msgstr[2] "ساعتين" +msgstr[3] "%d ساعات" +msgstr[4] "%d ساعة" +msgstr[5] "%d ساعة" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ساعة" +msgstr[1] "%d:%02d ساعة" +msgstr[2] "%d:%02d ساعة" +msgstr[3] "%d:%02d ساعة" +msgstr[4] "%d:%02d ساعة" +msgstr[5] "%d:%02d ساعة" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "على مدار الساعة" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "من شروق الشمس حتى غروبها" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "يوميا" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "العطل العامة" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "العطل المدرسية" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "ليس مفتوحا" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "سلكي" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "طرفيّة" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "خدمة" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "غير معروف" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "بالضبط" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f سا" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f دق" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f ثا" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s كم" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s ميل" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s قدم" + +#~ msgid "%f km" +#~ msgstr "%f كم" + +#~ msgid "%f m" +#~ msgstr "%f م" + +#~ msgid "%f mi" +#~ msgstr "%f ميل" + +#~ msgid "%f ft" +#~ msgstr "%f قدم" + +#~ msgid "Edit Location" +#~ msgstr "حرّر المكان" + +#~ msgid "Position not found" +#~ msgstr "الموضع غير موجود" + +#~ msgid "Country code: %s" +#~ msgstr "رمز البلد: %s" + +#~ msgid "Population: %s" +#~ msgstr "عدد السكان: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "دخول الكراسي ذات العجلات: %s" + +#~ msgid "I’m here!" +#~ msgstr "أنا هنا" + +#~ msgid "Satellite" +#~ msgstr "قمر صناعي" + +#~ msgid " km2" +#~ msgstr " كم٢" + +#~ msgid " km²" +#~ msgstr " كم٢" diff --git a/po/as.po b/po/as.po new file mode 100644 index 00000000..1cf79918 --- /dev/null +++ b/po/as.po @@ -0,0 +1,260 @@ +# Assamese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Nilamdyuti Goswami , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-09-02 15:46+0000\n" +"PO-Revision-Date: 2014-09-02 21:54+0530\n" +"Last-Translator: Nilamdyuti Goswami \n" +"Language-Team: Assamese \n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"মানচিত্ৰই আপোনাক বিশ্বৰ সকলো মানচিত্ৰলৈ এটা দ্ৰুত অভিগম প্ৰদান কৰে। ই আপোনাক " +"এটা " +"নগৰ অথবা বাটৰ বাবে সন্ধান কৰি আপুনি বিচৰা স্থান দ্ৰুতভাৱে সন্ধান কৰাৰ অনুমতি " +"দিয়ে, " +"অথবা এজন বন্ধুক লগ ধৰিবলৈ এটা স্থান অৱস্থিত কৰাৰ সুবিধা দিয়ে।" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"মানচিত্ৰই সংযোগি OpenStreetMap ডাটাবেইচ ব্যৱহাৰ কৰে, যাক বিশ্বৰ বিভিন্ন " +"প্ৰান্তৰ " +"লোকে সৃষ্টি কৰিছে।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"আপুনি বিশেষ ধৰণৰ স্থান, যেনে “Pubs near Main Street, Boston“ অথবা “Hotels " +"near " +"Alexanderplatz, Berlin“ ৰ বাবে সন্ধান কৰিব পাৰিব।" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:304 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "মানচিত্ৰ" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "এটা সাধাৰণ মানচিত্ৰ এপ্লিকেচন" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "মানচিত্ৰ;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "উইন্ডোৰ আকাৰ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "উইন্ডোৰ আকাৰ (প্ৰস্থ আৰু উচ্চতা)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "উইন্ডোৰ অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "উইন্ডোৰ অৱস্থান (X আৰু Y)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "উইন্ডো সৰ্বাধিক আকাৰলৈ বৃদ্ধি কৰা হৈছে" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "উইন্ডোৰ সৰ্বাধিক আকাৰ অৱস্থা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থান আৰু সঠিকতা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান (অক্ষাংশ আৰু দ্ৰাঘিমা ডিগ্ৰিসমূহত) আৰু সঠিকতা (মিটাৰত)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "ব্যৱহাৰকাৰীৰ সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "সন্ধান ফলাফলসমূহৰ সৰ্বাধিক সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "geocode সন্ধানৰ পৰা সন্ধান ফলাফলৰ সৰ্বাধিক সংখ্যা।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "ব্যৱহাৰকাৰী দ্বাৰা সংহতি কৰা সৰ্বশেষ জ্ঞাত অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান ব্যৱহাৰকাৰী দ্বাৰা হস্তচালিতভাৱে সংহতি কৰা হৈছিল নে।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়া স্থানবোৰৰ সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়াভাৱে ভ্ৰমণ কৰা স্থানবোৰৰ সংখ্যা।" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "বিষয়ে" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "প্ৰস্থান কৰক" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ইয়াত কি আছে?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "মই ইয়াত আছো!" + +#: ../src/mainWindow.js:302 +msgid "translator-credits" +msgstr "নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)" + +#: ../src/mainWindow.js:305 +msgid "A map application for GNOME" +msgstr "GNOME ৰ বাবে এটা মানচিত্ৰ এপ্লিকেচন" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "বৰ্তমান অৱস্থানলৈ যাওক" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "মানচিত্ৰৰ ধৰণ বাছক" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "পথ পৰিকল্পক টগল কৰক" + +#: ../src/routeService.js:73 +msgid "No route found." +msgstr "কোনো পথ পোৱা নগল।" + +#: ../src/routeService.js:80 +msgid "Route request failed." +msgstr "পথৰ অনুৰোধ ব্যৰ্থ হল।" + +#: ../src/routeService.js:151 +msgid "Start!" +msgstr "আৰম্ভ কৰক!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "দেশৰ ক'ড: %s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "পস্টেল ক'ড: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:190 +#, javascript-format +msgid "Estimated time: %s" +msgstr "আনুমানিক সময়: %s" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "বৰ্তমান অৱস্থান" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "সঠিকতা: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "অজ্ঞাত" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "অবিকল" + +#: ../src/utils.js:179 +#, javascript-format +msgid "%f km²" +msgstr "%f km²" + +#: ../src/utils.js:276 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:278 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:288 +#, javascript-format +#| msgid "%f km²" +msgid "%f km" +msgstr "%f km" + +#: ../src/utils.js:290 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#~ msgid "To" +#~ msgstr "লৈ" + +#~ msgid "From" +#~ msgstr "পৰা" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Street" +#~ msgstr "বাট" + +#~ msgid "Satellite" +#~ msgstr "চেটেলাইট" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 00000000..a85e0b41 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1096 @@ +# Bulgarian translation for gnome-maps. +# Copyright (C) 2016 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ivailo Panamski , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-02-14 21:19+0200\n" +"PO-Revision-Date: 2016-02-14 21:19+0200\n" +"Last-Translator: \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Търсене на места по света" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"„Картите“ ви дават бърз достъп до места и карти по целия свят. Те ви " +"позволяват да намерите бързо мястото, което търсите, независимо дали е град, " +"улица или място на уречена срещал." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Картите използват базите от данни на OpenStreetMap. Те са събрани от стотици " +"хиляди хора от целия свят." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Може да търсите и по конкретен вид място, напр. „Кръчми край Мейн Стрийт, " +"Бостън“ или „Хотели близо до Александерплац, Берлин“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:86 ../src/mainWindow.js:400 +msgid "Maps" +msgstr "Карти" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Програма за преглед на карти" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "карти;глобус;атлас;maps;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "последно видяно местоположение" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Координати на последно видяно местоположение." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Размери на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Размери (широчина и дължина)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Положение на прозореца" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Положение на прозореца (X и Y)л" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Максимизиран прозорец" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Дали прозорецът на програмата е максимизиран" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Максимален брой на резултатите от търсене" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Максимален брой на резултати от търсенето по геокод." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Брой на последните места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Брой на последно посетени места за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Брой на последни маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Брой на последно посетени маршрути за съхраняване" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Настройки за публикуване във Facebook на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последно използвани настройки за публикуване във Facebook на съобщение. " +"Възможните стойности са: „EVERYONE“ (до всички), „FRIENDS_OF_FRIENDS“ (до " +"приятелите и техните приятели), „ALL_FRIENDS“ (до приятелите) или „SELF“ (до " +"себе си)." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Настройки за публикуване във Foursquare на посещение" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последно използвани настройки за публикуване във Foursquare на посещение. " +"Възможните стойности са: „public“ (до всички), „followers“ (до " +"последователите) или „private“ (частно)." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Публикуване във Facebook на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да публикува посещението на някое място в регистрацията към " +"Facebook свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Публикуване във Twitter на посещение през Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да „изчурулика“ посещението на някое място в регистрацията " +"към Twitter свързана с регистрацията във Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Потребителско име или е-поща за OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показва дали потребителят е влязъл, за да променя информация в OpenStreetMap." + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Създаване на регистрация в OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Относно" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Видимост" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Публикуване във Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Публикуване в Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Отказ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Обявяване на посещение" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Всички" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Приятели и техни приятели" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Само приятели" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "За себе си" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Публично" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Последователи" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Частно" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Какво има тук?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Копиране на местоположението" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Изнасяне като изображение" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Добавяне към OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Изнасяне на изглед" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Изнасяне" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Включване на маршрут и маркери" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Общи" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показване на клавишните комбинации" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Търсене" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Спиране на програмата" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Изглед карти" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приближаване" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалечаване" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Превключване на ска̀лата" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Към текущото местоположение." + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Зареждане на слой" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Включване на услугата за намиране на местоположението ви" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Настройки на местоположението" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Текущо местоположение" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Избиране на вид карта" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Включване на любими" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Няма връзка с Интернет!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Картите се нуждаят от връзка с Интернет за да функционират правилно, но " +"такава няма." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Проверка на връзката и сървъра-посредник." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Добавяне към нов маршрут" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Отваряне с друга програма" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Маркиране като любим" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Обявяване на посещение" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Регистрация в OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Впишете се, за да редактирате картите" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогнете да подобрим картите, като\n" +"използвате регистрация в OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Е-поща" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Парола" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Вписване" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don't have an account?" +msgstr "Нямате регистрация?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn't work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Това не сработи. Опитайте отново, или посетете\n" +"OpenStreetMap, за да промените паролата си." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn't match, please try again." +msgstr "Кодът за потвърждение не съвпада, опитайте отново." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Въведете кода за потвърждение" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Потвърждаване" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Вписани сте" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Регистрацията ви в OpenStreetMap акаунт активна" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Изход" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "None" +msgstr "Няма" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "Recently Used" +msgstr "Скоро ползвани" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Edit on OpenStreetMap" +msgstr "Редактиране в OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Cancel" +msgstr "Отказ" + +#: ../data/ui/osm-edit-dialog.ui.h:5 ../src/osmEditDialog.js:400 +msgid "Next" +msgstr "Следващ" + +#: ../data/ui/place-bubble.ui.h:1 +msgid "Show more information" +msgstr "Показване на повече информация" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Натиснете „Enter“ за търсене" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Отваряне на местоположение" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Отваряне" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Отваряна на слой" + +#: ../data/ui/shape-layer-row.ui.h:1 +msgid "Toggle visible" +msgstr "Включване на видимост" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Търсене на маршрут с GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намиране на още резултати" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:148 +msgid "Current location" +msgstr "Текущо местоположение" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Прецизност: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Приближаване за добавяне на местоположение!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Добре" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Структурата на плочката не може да се открие в папка" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Документът не може да бъде анализиран като XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Липсват задължителни атрибути" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Не може да се открие елемент на OpenStreetMap" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Път към локалната папка със структури" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Избор на регистрация" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Зареждане" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Избор на място" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Facebook. Изберете от списъка" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Foursquare. Изберете от списъка." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Обявяване на посещение на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Добавяне на незадължително съобщение при посещаване на „%s“." + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +#: ../src/osmEditDialog.js:437 +msgid "An error has occurred" +msgstr "Възникна грешка" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "„%s“ не може да се намери в социалната услуга" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "На това местоположение няма какво да се обяви като посетено" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Идентификацията ви е изтекла, отворете „Регистрации в сайтове“, за да се " +"впишете и използвате тази регистрация" + +#: ../src/contextMenu.js:97 +msgid "Route from here" +msgstr "Маршрут от тук" + +#: ../src/contextMenu.js:99 +msgid "Add destination" +msgstr "Добавяне на цел" + +#: ../src/contextMenu.js:101 +msgid "Route to here" +msgstr "Маршрут до тук" + +#: ../src/contextMenu.js:182 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположението е добавено на картата, може да мин известно време преди да " +"се появи в резултатите от търсене." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Файловата система е само за четене" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Нямате права да записвате тук" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exists" +msgstr "Папката не съществува" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Не е зададено име на файла" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Изгледът не може да бъде изнесен" + +#: ../src/geoJSONSource.js:99 +msgid "invalid coordinate" +msgstr "грешни координати" + +#: ../src/geoJSONSource.js:143 ../src/geoJSONSource.js:183 +#: ../src/geoJSONSource.js:198 +msgid "parse error" +msgstr "грешка при анализ" + +#: ../src/geoJSONSource.js:177 +msgid "unknown geometry" +msgstr "неизвестна геометрия" + +#: ../src/geoJSONSource.js:211 +msgid "failed to load file" +msgstr "файлът не може да се зареди" + +#: ../src/mainWindow.js:348 +msgid "Failed to connect to location service" +msgstr "Грешка при свързването с услуги за местоположение" + +#: ../src/mainWindow.js:353 +msgid "Position not found" +msgstr "Позицията не е намерена" + +#: ../src/mainWindow.js:398 +msgid "translator-credits" +msgstr "" +"Ивайло Панамски \n" +"Александър Шопов \n" +"\n" +"Проектът за превод на GNOME има нужда от подкрепа.\n" +"Научете повече за нас на http://gnome.cult." +"bg\n" +"Докладвайте за грешки на http://gnome." +"cult.bg/bugs" + +#: ../src/mainWindow.js:401 +msgid "A map application for GNOME" +msgstr "Карти за GNOME" + +#: ../src/mapView.js:233 +msgid "File type is not supported" +msgstr "Този вид файлове не се поддържат" + +#: ../src/mapView.js:240 +msgid "Failed to open layer" +msgstr "Слоят не може да се отвори" + +#: ../src/mapView.js:276 +msgid "Failed to open GeoURI" +msgstr "Геоадресът не може да бъде отворен" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:439 +msgid "Incorrect user name or password" +msgstr "Грешно потребителско име или парола" + +#: ../src/osmConnection.js:441 +msgid "Success" +msgstr "Успех" + +#: ../src/osmConnection.js:443 +msgid "Bad request" +msgstr "Лоша заявка" + +#: ../src/osmConnection.js:445 +msgid "Object not found" +msgstr "Обектът не е намерен" + +#: ../src/osmConnection.js:447 +msgid "Conflict, someone else has just modified the object" +msgstr "Възникна проблем, някой друг тъкмо промени обекта" + +#: ../src/osmConnection.js:449 +msgid "Object has been deleted" +msgstr "Обектът беше изтрит" + +#: ../src/osmConnection.js:451 +msgid "Way or relation refers to non-existing children" +msgstr "Пътят или връзката се отнася към несъществуващ обект" + +#: ../src/osmEditDialog.js:98 +msgid "Name" +msgstr "Име" + +#: ../src/osmEditDialog.js:103 ../src/placeBubble.js:158 +msgid "Website" +msgstr "Сайт" + +#: ../src/osmEditDialog.js:108 +msgid "Phone" +msgstr "Телефон" + +#: ../src/osmEditDialog.js:114 ../src/placeBubble.js:164 +msgid "Wikipedia" +msgstr "Уикипедия" + +#: ../src/osmEditDialog.js:119 +msgid "Opening hours" +msgstr "Работно време" + +#: ../src/osmEditDialog.js:126 +msgid "Population" +msgstr "Население" + +#: ../src/osmEditDialog.js:131 +msgid "Wheelchair access" +msgstr "Инвалидни колички" + +#: ../src/osmEditDialog.js:134 ../src/osmEditDialog.js:143 +msgid "Yes" +msgstr "Да" + +#: ../src/osmEditDialog.js:135 ../src/osmEditDialog.js:144 +msgid "No" +msgstr "Не" + +#: ../src/osmEditDialog.js:136 +msgid "Limited" +msgstr "Непълно" + +#: ../src/osmEditDialog.js:137 +msgid "Designated" +msgstr "Обозначено" + +#: ../src/osmEditDialog.js:140 +msgid "Internet access" +msgstr "Достъп до Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:145 ../src/translations.js:341 +msgid "WLAN" +msgstr "Безжичен" + +#: ../src/osmEditDialog.js:146 +msgid "Wired" +msgstr "Етернет" + +#: ../src/osmEditDialog.js:147 +msgid "Terminal" +msgstr "Техни компютри" + +#: ../src/osmEditDialog.js:148 +msgid "Service" +msgstr "Обслужване" + +#: ../src/osmEditDialog.js:217 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавяне в OpenStreetMap" + +#: ../src/osmEditDialog.js:268 +msgid "Select Type" +msgstr "Избор на вид" + +#: ../src/osmEditDialog.js:386 +msgid "Done" +msgstr "Готово" + +#: ../src/placeBubble.js:127 +msgid "Population:" +msgstr "Население:" + +#: ../src/placeBubble.js:132 +msgid "Opening hours:" +msgstr "Работно време:" + +#: ../src/placeBubble.js:137 +msgid "Internet access:" +msgstr "Достъп до Интернет:" + +#: ../src/placeBubble.js:142 +msgid "Wheelchair access:" +msgstr "Инвалидни колички:" + +#: ../src/placeBubble.js:148 ../src/placeBubble.js:152 +msgid "Phone:" +msgstr "Телефон:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Геоадресът не може да бъде анализиран" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:177 ../src/translations.js:330 +msgid "yes" +msgstr "да" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:184 +msgid "limited" +msgstr "непълно" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:190 ../src/translations.js:336 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:197 +msgid "designated" +msgstr "обозначено" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Не е намерен маршрут." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "Неуспешна заявка за маршрут." + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Старт!" + +#: ../src/sendToDialog.js:173 +msgid "Failed to open URI" +msgstr "Адресът не може да се зареди" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:210 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Очаквано време: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "денонощно" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "от изгрев до залез" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "всеки ден" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "почивни дни" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "ваканции" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "не е отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:346 +msgid "wired" +msgstr "етернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:351 +msgid "terminal" +msgstr "техни компютри" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:356 +msgid "service" +msgstr "обслужване" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:228 +msgid "Unknown" +msgstr "Неизвестно" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Exact" +msgstr "Точно" + +#: ../src/utils.js:334 +#, javascript-format +msgid "%f h" +msgstr "%f ч." + +#: ../src/utils.js:336 +#, javascript-format +msgid "%f min" +msgstr "%f мин." + +#: ../src/utils.js:338 +#, javascript-format +msgid "%f s" +msgstr "%f сек." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:349 +#, javascript-format +msgid "%f km" +msgstr "%f км." + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:352 +#, javascript-format +msgid "%f m" +msgstr "%f м." + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:360 +#, javascript-format +msgid "%f mi" +msgstr "%f мили" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:363 +#, javascript-format +msgid "%f ft" +msgstr "%f фута" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 00000000..394c5f37 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,610 @@ +# Bosnian translation for bosnianuniversetranslation +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the bosnianuniversetranslation package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: bosnianuniversetranslation\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-02-26 20:01+0000\n" +"PO-Revision-Date: 2015-03-03 11:19+0100\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.4\n" +"X-Launchpad-Export-Date: 2015-02-15 06:20+0000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama cijelog svijeta.Omogućava vam da brzo " +"nađete mjesto koje tražite , tražeći grad ili ulicu , ili da pronađe mjesto " +"da sretnete priajtelja." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste kolaboraticnu OpenStreetMap bazu podataka, napravljenu od " +"strane stotinu hiljada ljudi širom svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to seje what words you can usi for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak tražiti određene vrste mjesta , kao što su \"pubovi u blizini " +"Main Street, Boston \" ili \"Hoteli u blizini Alexanderplatz u Berlinu\"." + +#. Translators: This is the program nami. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:362 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program karti" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Karte;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Veličina prozora(širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Pozicija prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Pozicija prozora(X i Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Maksimalno uvećan prozor" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Stanje maksimalno uvećanog prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Maksimalan broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalan broj rezultata pretrage od geocode pretrage." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Broj posljednjih mjesta za pohranu" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za pohranu." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Facebook. " +"Moguće vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Foursquare. " +"Moguće vrijednosti su: javni, sljedbenici ili privatne." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao post na Facebook račun " +"koji je povezan s Foursquare računa." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Twitter" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao tweet na Twitter račun " +"koji je povezan s Foursquare računom--" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Odustani" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Prijava" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svi" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo meni" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je ovdje?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite na lokaciji usluge za pronalaženje lokacija" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Postavke lokacija" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Izaberi tip mape" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Prebaci planer" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Preklopi omiljene" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Karte su offline!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Karte trebaju aktivnu internetsku vezu za ispravno funkcioniranje, ali nije " +"moguće naći ." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Provjerite Vašu konekcijju i proxy postavke." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Otvori sa drugom aplikacijom" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Označi kao omiljeni" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Prijavi se ovdje" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "pritisni Enter za pretragu" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "Ot_vori" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Put nije nađen." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikaži još rezultata" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Trenutna lokacija" + +#. To translators: %s can bje "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#. Translators: %s is the place nami that user wanted to check-in */ +#: ../src/checkIn.js:136 +msgid "Cannot find \"%s\" in the social service" +msgstr "Ne mogu naći \"%s\" u socijalnoj usluzi" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu naći pogodno mjesto za prijavu na ovoj lokaciji" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akreditivi su istekli, molim otvorite mrežne naloge da se prijavite i " +"ukljčite ovaj nalog" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Došlo je do greške:" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Odaberi nalog" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Učitava se" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Izaberi mjesto" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Facebook. Odaberite ga s liste." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Foursquare. Odaberite ga s liste." + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +msgid "Check in to %s" +msgstr "Prijavi na %s" + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +msgid "Write an optional message to check in to %s." +msgstr "Napiši opcionu poruku za prijavu na %s." + +#: ../src/mainWindow.js:310 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje na lokacijsku uslugu" + +#: ../src/mainWindow.js:315 +msgid "Position not found" +msgstr "Pozicija nije nađena" + +#: ../src/mainWindow.js:360 +msgid "translator-credits" +msgstr "" +" Hasanic Nadin https://launchpad.net/~nhasanic1\n" +" Merima Cisija https://launchpad.net/~cisijam" + +#: ../src/mainWindow.js:363 +msgid "A map application for GNOME" +msgstr "Program karta za GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can bje accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradijent). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "dizajnirano" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Put nije nađen." + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Zahtjev za put nije uspio." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/placeBubble.js:102 +msgid "Postal code: %s" +msgstr "Poštanski broj: %s" + +#: ../src/placeBubble.js:104 +msgid "Country code: %s" +msgstr "Kod države: %s" + +#: ../src/placeBubble.js:113 +msgid "Population: %s" +msgstr "Stanovništvo: %s" + +#: ../src/placeBubble.js:116 +msgid "Opening hours: %s" +msgstr "Radno vrijeme: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +msgid "Wheelchair access: %s" +msgstr "Pristup za invalidska kolica: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +msgid "Estimated time: %s" +msgstr "Procijenjeno vrijeme : %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "po satu" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "od izlaska do zalaska Sunca" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could bje substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can bje rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could bje modified by +#. * the translation. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can bje set by the +#. * translation as needed. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:355 +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:357 +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:359 +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +msgid "%f ft" +msgstr "%f ft" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 00000000..93fd1b06 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,2035 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013-2020. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017, 2018. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2020-12-23 09:35+0100\n" +"Last-Translator: Miquel-Àngel Burgos i Fradeja \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trobeu llocs arreu del món" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes us dona un accés ràpid a mapes d'arreu del món. Us permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per a trobar-vos amb una amistat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creada " +"per centenars de milers de persones d'arreu del món." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "El projecte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicació vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliació" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivell d'ampliació" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipus de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipus de mapa a mostrar (carrer, aeri, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Mida de la finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplada i alçada)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posició de la finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de cerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de cerca en fer-la per geocodi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per a editar les dades " +"d'OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mode fosc" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Si l'aplicació utilitza el mode fosc." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utilitza caselles aèries híbrides" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Si les caselles aèries haurien d'utilitzar l'estil híbrid (amb etiquetes)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Públic" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidors" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Comenceu la ruta des d'aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Afegeix una parada intermèdia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Continueu la ruta fins aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Què hi ha aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Afegeix a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exporta vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporta" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ves a la ubicació actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Allunya" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Commuta els preferits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Surt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ves a la ubicació actual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obre la capa de forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra les etiquetes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Obre la capa de forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per a trobar-ne la vostra" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel·la" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode fosc" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporta com a imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Quant al Mapes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per a funcionar " +"correctament, però no se n'ha trobat cap." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per a editar mapes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correu electrònic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasenya" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreu-vos-hi" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per a restablir la contrasenya." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat a sobre" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Surt de la sessió" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrer" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de carrer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciutat" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Afegeix un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Següent" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per a canviar l'ordre de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Obre ubicació" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Envia a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Crea un compte..." + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Obre la capa de forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Obre" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels\n" +"seus respectius propietaris, quan es pugui aplicar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sortiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sortiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busos" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvies" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Transbordadors" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Comparteix la ubicació" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Afegeix a la ruta nova" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Indicacions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marca com a preferit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplia per a afegir ubicació!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Amplia" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Mida de les caselles pel directori de caselles local" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra la versió del programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora la disponibilitat de la xarxa" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FITXER…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "S'està carregant" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per a registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per a inscriure-us a %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No es pot trobar un lloc adequat per a registrar-vos en aquesta ubicació" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per a registrar-vos-" +"hi i habilitar el compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No s'ha trobat res aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la cerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No teniu permís per a anomenar i desar allí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ubicació actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error d'anàlisi" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de cercar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Comença" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga \n" +"Miquel-Àngel Burgos i Fradeja " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2021 Red Hat, Inc. i els altres autors del Mapes del GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dades del mapa de %s i col·laboradors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Caselles de mapa proporcionades per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Cerca proveïda per %s utilitzant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Voleu continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Esteu a punt d'obrir fitxers amb una mida total de %s MB. Això pot trigar " +"una estona a carregar-se" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Aquest tipus de fitxer no està suportat" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Lloc web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Aquest URL no és vàlid. Assegureu-vos d'incloure-hi http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telèfon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correu electrònic" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Aquesta no és una adreça de correu electrònic vàlida. Assegureu-vos de no " +"incloure el prefix del protocol mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Adreça de correu electrònic de contacte per a consultes. Afegeix només les " +"adreces de correu que s'han d'utilitzar públicament." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Població" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (altura sobre el nivell del mar) d'un punt en metres." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designat" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Accés a Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Amb fil" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servei" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Per a emportar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Només" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religió" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoisme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Lavabos" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per a informar altres creadors de mapes " +"d'informació no òbvia sobre un element, la intenció de l'autor en crear-lo, " +"o pistes per a millorar-lo." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afegeix a l'OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Fet" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Ubicació sense nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenades" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisió" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número de telèfon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ofereix per a emportar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "No ofereix per a emportar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Només ofereix per a emportar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Accés públic a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sense accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi públic" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Accés cablejat a Internet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordinadors disponibles per al seu ús" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistència d'Internet disponible" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sense lavabos disponibles" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Lavabos disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accessible amb cadira de rodes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accessibilitat amb cadira de rodes limitada" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "No accessible amb cadira de rodes" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Dissenyat per a usuaris en cadira de rodes" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s per sota del nivell del mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "A nivell del mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religió:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lloc no trobat a l'OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Les coordenades a l'URL no són vàlides" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "L'URL no és compatible" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per a imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si aquesta tarda massa temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Afegeix a través de la ubicació" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimeix a través de la ubicació" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Afegeix %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Obre amb %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "s'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris proporcionats per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Comença" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arribeu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per aquesta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No s'ha trobat un proveïdor per a aquesta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Tot el dia" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Des de l'alba fins al capvespre" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Tots els dies" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Dies festius" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Aquest connector no permet cercar per l'última arribada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continueu a %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continueu" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gireu a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Gireu a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gireu lleugerament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Gireu lleugerament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gireu pronunciadament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Gireu pronunciadament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gireu a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Gireu a la dreta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gireu lleugerament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Gireu lleugerament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gireu pronunciadament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Gireu pronunciadament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "A la rotonda, agafeu la sortida %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "A la rotonda, agafeu la sortida a %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Agafeu la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Agafeu l'ascensor i sortiu a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Agafeu l'ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Canvieu de sentit cap a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Canvieu de sentit cap a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Canvieu de sentit cap a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Canvieu de sentit cap a la dreta" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "També podeu cercar per tipus d'ubicacions en concret, com ara «Bars a " +#~ "prop de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, " +#~ "Berlín»." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Paràmetre de privacitat de registre al Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els " +#~ "valors possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#~ msgid "Everyone" +#~ msgstr "Tothom" + +#~ msgid "Friends of friends" +#~ msgstr "Amics d'amics" + +#~ msgid "Just friends" +#~ msgstr "Només amics" + +#~ msgid "Just me" +#~ msgstr "Només jo" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "El Mapes no poden trobar el lloc on registrar-vos amb Facebook. " +#~ "Seleccioneu-ne un de la llista." + +#~ msgid "Find a Route" +#~ msgstr "Cerca una ruta" + +#~ msgid "Check in here" +#~ msgstr "Registreu-vos aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostra més informació" + +#~ msgid "Population:" +#~ msgstr "Població:" + +#~ msgid "Altitude:" +#~ msgstr "Altitud:" + +#~ msgid "Opening hours:" +#~ msgstr "Hores d'obertura:" + +#~ msgid "Internet access:" +#~ msgstr "Accés a Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Lavabos:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accés amb cadira de rodes:" + +#~ msgid "Phone:" +#~ msgstr "Telèfon:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designat" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "L'URL de l'OpenStreetMap no és vàlid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "amb fil" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servei" + +#~ msgid "Primary menu" +#~ msgstr "Menú primari" diff --git a/po/ca@valencia.po b/po/ca@valencia.po new file mode 100644 index 00000000..3dde2252 --- /dev/null +++ b/po/ca@valencia.po @@ -0,0 +1,1636 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013, 2014. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-10-03 16:33+0000\n" +"PO-Revision-Date: 2017-08-01 19:02+0200\n" +"Last-Translator: Xavi Ivars \n" +"Language-Team: Catalan \n" +"Language: ca-valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes vos dóna un accés ràpid a mapes d'arreu del món. Vos permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu buscar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "mapes;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Mida de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplària i alçària)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posició de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de busca en fer-la per geocodi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Quant a" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tothom" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Només amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Només jo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Públic" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidors" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Què hi ha ací?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exporta com imatge" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Afig a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exporta vista" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exporta" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Busca" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obri la capa de forma" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Carrega la capa mapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Commuta els favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Afig a la ruta nova" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Obri amb una altra aplicació" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marca com a favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Registreu-vos ací" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Correu electrònic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Contrasenya" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "No teniu un compte?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat damunt." + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verifica" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Ix de la sessió" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrer" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Número de carrer" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Ciutat" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipus" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Afig un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Mostra més informació" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Premeu retorn per buscar" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'orde de la ruta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Obri la ubicació" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Obri" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Obri la capa" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Itinerari proporcionat per OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels " +"seus respectius propietaris, quan es puga aplicar." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Eixiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Eixiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Mostra" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Busos" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Metro" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Transbordadors" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "Ubicació actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "D'acord" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "S'està carregant" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-vos a %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en esta ubicació" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Comenceu la ruta des d'ací" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Afegiu una destinació" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Continueu la ruta fins ací" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "No s'ha trobat res ací." + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la busca." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i guardar allí" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "error d'anàlisi" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de buscar la ruta." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Comença" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Este tipus de fitxer no està suportat" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per esta ruta." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Lloc web" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Telèfon" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Població" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (alçària sobre el nivell del mar) d'un punt en metres." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Sí" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "No" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Designat" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Amb fil" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Servei" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Religió" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "Lavabos" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "Nota" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afig a l'OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Fet" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Població:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Altitud:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Religió:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Lavabos:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Telèfon:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "designat" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si esta tarda massa temps" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "S'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "Arribeu" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "Comença" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de l'eixida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Exacte" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milles" + +#~ msgid "%f ft" +#~ msgstr "%f peus" + +#~ msgid "Position not found" +#~ msgstr "No s'ha trobat la posició." + +#~ msgid "Edit Location" +#~ msgstr "Edita ubicació" + +#~ msgid "Country code: %s" +#~ msgstr "Codi de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Població: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Accés amb cadira de rodes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "S'ha produït un error en analitzar el fitxer GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'última ubicació coneguda i la precisió" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'última ubicació coneguda (latitud i longitud en graus) i la precisió " +#~ "(en metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripció de l'última ubicació coneguda de l'usuari." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Si l'última ubicació coneguda l'ha definit manualment l'usuari." + +#~ msgid "I’m here!" +#~ msgstr "Sóc aquí!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..a983ab1a --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1926 @@ +# Czech translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marek Černocký , 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 13:20+0200\n" +"Last-Translator: Marek Černocký \n" +"Language-Team: čeština \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhledávejte místa na celém světě" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikace Mapy poskytuje rychlý přístup k mapám celého světa. Díky ní můžete " +"rychle najít místo, které hledáte, ať už podle názvu města nebo ulice, nebo " +"určit místo pro setkání s přáteli." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy využívají databázi OpenStreetMap, která vzniká díky spolupráci stovek " +"tisíců lidí z celého světa." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá mapová aplikace" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "mapa;mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožňuje vám zobrazit si na mapě své místo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Poslední zobrazené místo" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Souřadnice naposledy zobrazeného místa." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Přiblížení" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň přiblížení" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, který se má zobrazit(běžná, letecká, atd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (šířka a výška)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poloha okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poloha okna (X a Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stav maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximální počet výsledků hledání" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximální počet výsledků hledání z geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávných míst k uchování" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených míst, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávných tras k uchování" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených tras, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Foursquare. " +"Možné hodnoty jsou: public (veřejné), followers (následovníci) nebo private " +"(soukromé)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Facebooku přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Twitteru přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Uživatelské jméno nebo e-mailová adresa na OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Dává najevo, jestli je uživatel přihlášen k úpravám dat OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Poslední použitý typ dopravy pro hledání trasy" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Noční režim" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Zda je aplikace v nočním režimu" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Používat hybridní dlaždice s leteckými snímky" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Zda dlaždice s leteckými snímky mají používat hybridní styl (s popisky)" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Viditelnost" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Zveřejnit na Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Zveřejnit na Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušit" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Oznámit polo_hu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "veřejné" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "příznivci" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "soukromé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtud" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Přidat průběžný cíl" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co je zde?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopírovat místo" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Přidat do OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazení" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovat" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Včetně tras a značek" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Zvolit typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Oddálit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Přiblížit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Tisk trasy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Přepnout oblíbené" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Obecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazit klávesové zkratky" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Hledat" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Vytisknout trasu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazení mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Přiblížit" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddálit" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Přepnout měřítko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Přepnout na panoramatický pohled" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Přepnout na letecký pohled" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobrazovat popisky" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otevřít uživatelskou vrstvu…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnout geolokační službu pro vyhledávání vaší polohy" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušit" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavení určování polohy" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noční režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavit účet na OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovat jako obrázek" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikaci Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapy jsou bez připojení!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby Mapy mohly fungovat, potřebují aktivní připojení k Internetu, ale žádné " +"nenalezly." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Zkontrolujte své připojení a nastavení proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet na OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Přihlaste se pro úpravy map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozte vylepšit mapy pomocí\n" +"účtu na OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zaregistrovat se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Přihlásit se" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Bohužel, ale nefunguje to. Zkuste to prosím znovu nebo navštivte\n" +"OpenStreetMap, abyste si znovu nastavili heslo." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Ověřovací kód nesouhlasí, zkuste to prosím znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadejte ověřovací kód zobrazený výše" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ověřit" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jste přihlášen" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet na OpenStreetMap je aktivní." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásit se" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulice" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PSČ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Město" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "žádné" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Přidat pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentář" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Změny mapy boudou viditelné všude, kde se používají\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úpravit v OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Další" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nebyly nalezeny žádné výsledky" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Vyskytla se chyba" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Posloupnost trasy můžete změnit přetažením" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otevřít místo" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopírovat" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Poslat do…" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Oznámit polohu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otevřít" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Přepnout viditelnost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Hledání trasy pomocí GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Jízdní řády pro veřejnou dopravu jsou poskytovány službami třetích stran.\n" +"GNOME nemůže nijak zaručit správnost cestovních rozvrhů a plánů.\n" +"Může se stát, že poskytovatel nenabízí všechny dostupné způsoby dopravy, " +"například národní\n" +"poskytovatel nebude nabízet mezinárodní leteckou dopravu a u místního " +"poskytovatele mohou\n" +"scházet celostátní vlaky apod.\n" +"Zobrazené názvy a značky považujte za registrované ochranné známky, všude " +"tam, kde tomu tak má být." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobrazit více výsledků" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrýt průběžné zastávky a informace" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazit průběžné zastávky a informace" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odjezd teď" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odjezd v" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Příjezd v" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobrazit" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "tramvaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "letadla" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Sdílet místo" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Přidat novou trasu" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Směry" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označit jako oblíbené" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Úpravy v OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Přiblížit pro přidání místa!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Přiblížit" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Selhalo vyhledání struktury ve složce" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Selhalo zpracování dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Schází vyžadované atributy" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nelze najít prvek OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k místní struktuře složek s dlaždicemi" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Velikost dlaždic pro místní složeku s dlaždicemi" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Zobrazit verzi programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorovat dostupnost sítě" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SOUBOR…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Výběr účtu" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Načítá se" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Výběr místa" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Foursquare. Vyberte " +"prosím nějaké ze seznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámení polohy na místě %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napište volitně zprávu k oznámení polohy na místě %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Na sociální službě nelze nalézt „%s“" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Na této poloze se nepodařilo najít žádné vhodné místo pro oznámení polohy" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Přihlášení vypršelo. Otevřete prosím Účty on-line, přihlaste se tam a tím " +"účet zpřístupněte." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Zde nebylo nic nalezeno!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Místo bylo přidáno do mapy, ale vezměte na vědomí, že může chvíli trvat, než " +"se zobrazí na mapě a ve výsledcích hledání." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa na souřadnicích %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Souborový systém je jen ke čtení" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemáte oprávnění ukládat do tohoto umístění" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Složka neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Není zadán název souboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nelze exportovat zobrazení" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Současné místo" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neplatné souřadnice" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "chyba zpracování" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "neznámé geometrické údaje" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Požadavek na vyhledání cesty selhal." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenalezena žádná cesta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všechny soubory s vrstvami" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Selhalo připojení ke geolokační službě" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Marek Černocký " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Mapová aplikace pro GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 - 2021 Red Hat, Inc. a autoři Map GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapová data od %s a přispěvatelů" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapové dlaždice poskytuje %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Hledání zprostředkuje %s pomocí %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Selhalo otevření vrstvy" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Chcete pokračovat?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Chystáte se otevřít soubory o celkové velikosti %s MB. To může zabrat nějaký " +"čas." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Typ souboru není podporován" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Selhalo otevření adresy GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nesprávné uživatelské jméno nebo heslo" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Úspěšné" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Chybný požadavek" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt nebyl nalezen" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Došlo ke střetu, někdo jiný objekt právě upravil" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt byl smazán" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta nebo vztah odkazuje na neexistujícího potomka" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Název" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiální název. Typicky to, co bývá na informačních tabulích." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Stránky WWW" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Nejedná se o platnou adresu URL. Nezapomeňte začít http:// nebo https://" + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiální webové stránky. Snažte se použít co nejzákladnější tvar, tj. " +"http://www.priklad.cz namísto http://www.priklad.cz/index.html" + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonní číslo. Používejte mezinárodní formát začínající znakem +. Dbejte " +"místních zákonů na ochranu soukromí, zejména u soukromách telefonních čísel." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Nejedná se o platnou e-mailovou adresu. Ujistěte se, že nazačíná předponou s " +"protokolem „mailto:“." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktní e-mailová adresa pro dotazy. Přidávejte pouze e-mailové adresy, " +"které jsou určené pro veřejné použití." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by měl obsahovat rovněž kód jazyka a název článku, jako „cs:" +"Název článku“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Otevírací doba" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Nápověda k formátu viz odkaz v popisku." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populace" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Nadmořská výška" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmořská výška bodu v metrech" + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Bezbariérový přístup" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "ano" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "částečně" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "výslovně ano" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Přístup k Internetu" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "drátový" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "terminál" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "služba" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Jídlo s sebou" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "výhradně" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Náboženství" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "animizmus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "bahaizmus" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "buddhizmus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "kaodaizmus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "křesťanství" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "konfuciánství" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "hinduizmus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "džinizmus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "judaizmus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "islám" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "více náboženství" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "pohanství" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "pastafariánství" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "šintoizmus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "sikhizmus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "spiritualizmus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "taoizmus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "unitární univerzalizmus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "vúdú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "jezídizmus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "zarathuštrizmus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informace používané k informování ostatních autorů map o věcech, které " +"nejsou u prvku zcela zřejmé, o záměrech autora při vytváření prvku nebo k " +"názorům na další vylepšování." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Přidání do OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Vybrat typ" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Místo bez názvu" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Selhalo zpracování adresy GeoURI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Souřadnice" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Přesnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Přesnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonní číslo" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Nabízí jídlo s sebou" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nenabízí jídlo s sebou" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Nabízí pouze jídlo s sebou" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Veřejný přístup k Internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Bez přístupu k Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Veřejná Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Drátový přístup k Internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Počítač k dispozici k používání" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetová asistence k dispozici" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Bez toalet k dispozici" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "K dispozici toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Bezbariérový přístup" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Omezený bezbariérový přístup" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nemá bezbariérový přístup" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Výslovně vhodné pro vozíčkáře" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod hladinou moře" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "V úrovni hladiny moře" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Náboženství:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Místo nebylo v OpenStreetMap nalezeno" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Souřadnice v adrese URL nejsou platné" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Tato adreasa URL není podporovaná" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítají se mapové dlaždice pro tisk" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pokud to trvá příliš dlouho, můžete tisk zrušit" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Zrušit tisk" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Přidat podle místa" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odebrat podle místa" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Otočit trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Přidat %s do %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Selhalo otevření adresy URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otevřít pomocí %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "selhalo načtení souboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Plán cesty poskytl %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start v %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chůze %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Příjezd do %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Příjezd" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazit pokyny pro pěší" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrýt pokyny pro pěší" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načíst dřívější variantu" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načíst pozdější variantu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nebyla nalezena žádná dřívější varianta." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nebyla nalezena žádná pozdější varianta." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d. %B" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Pro tuto trasu nebyly nalezeny žádné časové údaje." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Pro tuto trasu nebyl nalezen žádný poskytovatel údajů." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodina" +msgstr[1] "%s hodiny" +msgstr[2] "%s hodin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s hod" +msgstr[1] "%s∶%s hod" +msgstr[2] "%s∶%s hod" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s – %s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 hodin denně" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "za denního světla" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "každý den" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "státní svátky" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "školní prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zavřeno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "neznámá" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "velmi přesná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s hod" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje poslední příjezd" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zahněte doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Zahněte doleva" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Zahněte mírně doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Zahněte mírně doleva" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zahněte ostře doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Zahněte ostře doleva" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zahněte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Zahněte doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Zahněte mírně doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Zahněte mírně doprava" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zahněte ostře doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Zahněte ostře doprava" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na kruhovém objezdu použijte výjezd %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na kruhovém objezdu použijte výjezd směr %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Najeďte na kruhový objezd" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použijte výtah a vystupte v %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Použijte výtah" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Proveďte otočku doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Proveďte otočku doleva" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Proveďte otočku doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Proveďte otočku doprava" + diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..b259dfd0 --- /dev/null +++ b/po/da.po @@ -0,0 +1,2099 @@ +# Danish translation for gnome-maps. +# Copyright (C) 2013, 2016-2018 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Kris Thomsen , 2013. +# Kenneth Nielsen , 2014. +# scootergrisen, 2015, 2019. +# Ask Hjorth Larsen , 2015, 16, 17, 18. +# Alan Mortensen , 2020-21. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-16 17:31+0200\n" +"Last-Translator: Alan Mortensen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find steder i hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kort giver dig hurtig adgang til kort over hele verden. Det giver dig " +"mulighed for hurtigt at finde stedet du leder efter ved at søge efter en by " +"eller gade, eller et sted hvor du kan mødes med en ven." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kort bruger den kollaborative OpenStreetMap-database, skabt af flere " +"hundrede tusinde mennesker over hele verden." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et simpelt kortprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillader at din placering vises på kortet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sidst viste sted" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sidst viste sted." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Korttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen af kort som skal vises (vejkort, luftfoto osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vinduesstørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vinduesstørrelse (bredde og højde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduesplacering" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduesplacering (X og Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindue maksimeret" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimeringstilstand for vindue" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimum antal af søgeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum antal af søgeresultater fra geokode-søgning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal seneste steder, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senest besøgte steder, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal seneste ruter, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senest besøgte ruter, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Foursquare. " +"Mulige værdier er: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som opdatering på Facebook-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som tweet i Twitter-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brugernavn eller e-mail-adresse på OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Angiver om brugeren er logget ind til at kunne redigere data i OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Sidst brugte transporttype til routing" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nattilstand" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet er i nattilstand." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Brug fliser til hybridluftfoto" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Hvorvidt luftfotofliser skal bruge hybrid stil (med etiketter)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Synlighed" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annullér" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "T_jek ind" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute herfra" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tilføj mellemliggende destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute hertil" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hvad er der her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiér placering" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportér visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportér" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inkludér rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Vælg korttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zoom ud" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zoom ind" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Udskriv rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Slå foretrukne til/fra" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis genveje" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søg" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afslut" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom ind" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ud" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå skala til/fra" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skift til gadevisning" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skift til luftfotovisning" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åbn formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åbn formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå lokaliseringstjenster til for at bestemme din placering" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annullér" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Lokaliseringsindstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattilstand" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Opret OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportér som billede" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kort" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kort er offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kort skal bruge en aktiv internetforbindelse for at fungere korrekt, men der " +"er ingen." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kontrollér dine indstillinger for forbindelse og proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Log ind for at redigere kort" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjælp med at forbedre kortet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Adgangskode" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Tilmeld" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Log ind" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager - det fungerede ikke. Prøv venligst igen eller besøg\n" +"OpenStreetMap for at nulstille din adgangskode." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Godkendelseskoden var ikke korrekt. Prøv venligst igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Indtast godkendelseskoden vist ovenfor" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Godkend" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget ind" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Log ud" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gade" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +# Velsagtens by, postkode eller senest brugte jf. omkringstående +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tilføj felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kortændringer vil være synlige på alle kort, der\n" +"bruger data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senest brugte" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Næste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater fundet" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Der opstod en fejl" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Træk for at ændre rækkefølge for ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åbn placering" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiér" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Tjek ind …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åbn formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åbn" + +# velsagtens af lag eller rute +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå synlighed til/fra" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøgning med GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rejseplaner for offentlig transport tilbydes af tredjepartstjenester.\n" +"\n" +"GNOME kan ikke garantere, at de viste ruter og køreplaner er korrekte.\n" +"Bemærk, at nogle udbydere måske ikke medtager alle mulige former for " +"transport,\n" +"f.eks. har en national udbyder måske ikke fly med, og en lokal udbyder har " +"måske\n" +"ikke regionale tog med.\n" +"Viste navne og mærker skal betragtes som registrerede varemærker, når dette " +"er muligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul mellemliggende stop og oplysninger" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis mellemliggende stop og oplysninger" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Tag afsted nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Afgangstidspunkt" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankomsttidspunkt" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvogne" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Færger" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Del placering" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Føj til ny rute" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Rutevejledning" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markér som foretrukken" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom ind for at tilføje sted!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom ind" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kunne ikke finde flisestruktur i mappe" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kunne ikke fortolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunne ikke finde OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal flisemappestruktur" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Flisestørrelse til lokal flisemappe" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Vis programmets version" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorér hvorvidt netværket er tilgængeligt" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Vælg en konto" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Indlæser" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Vælg et sted" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Foursquare. Vælg " +"venligst et fra listen." + +# Undgå problemer med forholdsord +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Tjek ind: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv valgfrit en besked for at tjekke ind her: %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan ikke finde “%s” på den sociale tjeneste" + +# ?? +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan ikke finde et passende sted at tjekke ind her" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiverne er udløbet; åbn venligst Onlinekonti for at logge ind og slå " +"denne konto til" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Intet fundet her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Stedet blev føjet til kortet. Bemærk at det kan tage et stykke tid, før det " +"vises på kortet og i søgeresultaterne." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kort på %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke tilladelse til at gemme der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappen findes ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Intet filnavn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Nuværende placering" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "fortolkerfejl" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "ukendt geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ruteforespørgsel fejlede." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ingen rute fundet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Kunne ikke forbinde til lokaliseringstjeneste" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Kris Thomsen\n" +"Kenneth Nielsen\n" +"scootergrisen\n" +"Ask Hjorth Larsen\n" +"Alan Mortensen\n" +"\n" +"Dansk-gruppen\n" +"Websted http://dansk-gruppen.dk\n" +"E-mail " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Et kortprogram til GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ophavsret © 2011 – 2021 Red Hat, Inc. og udviklerne af GNOME Kort" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortdata af %s og bidragydere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortfelter leveret af %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søgning leveret af %s med %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Kunne ikke åbne lag" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Vil du fortsætte?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Du er ved at åbne filer med en samlet størrelse på %s MB. Det kan tage noget " +"tid at indlæse" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Filtypen understøttes ikke" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Kunne ikke åbne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Forkert brugernavn eller adgangskode" + +# Succes er et lidt stærkere ord på dansk end på engelsk. Har vi noget mere passende? +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Ugyldig forespørgsel" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt ikke fundet" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt! En anden har netop ændret objektet" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektet er blevet slettet" + +# A way is an ordered list of nodes which normally also has at least one tag or is included within a Relation +# +# http://wiki.openstreetmap.org/wiki/Way +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Way eller relation refererer til underelementer som ikke findes" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officielle navn. Dette er typisk hvad der står på et skilt." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webside" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Dette er ikke en gyldig URL. Husk at medtage http:// eller https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officielle webside. Prøv at bruge den mest grundlæggende form, dvs. " +"http://eksempel.dk i stedet for http://eksempel.dk/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Brug det internationale format som begynder med tegnet +. Vær " +"opmærksom på lokale love om privatlivsbeskyttelse, især for private numre." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Dette er ikke en gyldig e-mailadresse. Sørg for, at “mailto:” ikke medtages." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"E-mailadresse til forespørgsler. Tilføj kun e-mailadresser, som kan bruges " +"offentligt." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet bør inkludere sprogkoden og artiklens overskrift, f.eks. “da:" +"Artikeloverskrift”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Åbningstider" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Se linket i etiketten for at få hjælp om format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Befolkning" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Højde" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Højde (over havoverfladen) af et punkt i meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Rullestolsadgang" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Begrænset" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Handicap" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetadgang" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Trådløs" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kabel" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Takeaway" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Kun" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitær universalisme" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toiletter" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information der bruges til at give andre kortbrugere oplysninger om et " +"element som ikke er åbenlyse, forfatterens hensigt med at oprette det, eller " +"fif om yderligere forbedringer." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Vælg type" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Færdig" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Unavngivet placering" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Fortolkning af Geo-URI mislykkedes" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Nøjagtighed" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøjagtighed: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Tilbyder takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Tilbyder ikke takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Tilbyder kun takeaway" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Offentlig internetadgang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ingen internetadgang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Offentlig wi-fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Kablet internetadgang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computere tilgængelige til brug" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetassistance tilgængelig" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Toiletter ikke tilgængelige" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toiletter tilgængelige" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Adgang med kørestol" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Begrænset adgang med kørestol" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ingen adgang med kørestol" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Beregnet til kørestolsbrugere" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s under havoverfladen" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Tæt på havoverfladen" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Placering ikke fundet i OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinater i URL er ikke gyldige" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL understøttes ikke" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Indlæser kortfliser til udskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan afbryde udskriften hvis dette varer for længe" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afbryd udskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tilføj via sted" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern via sted" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vend ruten om" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tilføj %s til %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Kunne ikke åbne URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Åbn med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "kunne ikke indlæse fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Anslået tid: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rejseplaner leveret af %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starttidspunkt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankomst %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankomst" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis gangrute" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul gangrute" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Indlæs tidligere alternative ruter" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Indlæs senere alternative ruter" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer fundet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer fundet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ingen køreplan fundet for denne rute." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen udbyder fundet for denne rute." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Døgnet rundt" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Fra solopgang til solnedgang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Helligdage" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Skoleferier" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# hvorfor ikke closed? +#: src/translations.js:233 +msgid "not open" +msgstr "ikke åbent" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Ukendt" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Præcis" + +# h er symbolet for enheden time +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s fod" + +# Formoder der er tale om, at man ikke kan angive, hvornår man senest vil ankomme +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette udvidelsesmodul understøtter ikke senest ankomsttidspunkt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsæt på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsæt" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Drej til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Drej til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Drej lidt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Drej lidt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Drej skarpt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Drej skarpt til venstre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Drej til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Drej til højre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Drej lidt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Drej lidt til højre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Drej skarpt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Drej skarpt til højre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Tag %s. vej i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Drej fra mod %s i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Kør ind i rundkørslen" + +# . er for at markere ordenstal og ikke et afsluttende punktum +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tag elevatoren og stå af på %s." + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Tag elevatoren" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Lav en u-vending til venstre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Lav en u-vending til venstre" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Lav en u-vending til højre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Lav en u-vending til højre" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Du kan endda søge efter bestemte typer af placeringer, såsom “Pubs near " +#~ "Main Street, Boston” eller “Hotels near Alexanderplatz, Berlin” (Dansk " +#~ "endnu ikke understøttet)." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Privatlivsindstilling til at tjekke ind på Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Sidst benyttede privatlivsindstilling til at tjekke ind på Facebook. " +#~ "Mulige værdier er: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS og SELF." + +#~ msgid "Everyone" +#~ msgstr "Alle" + +#~ msgid "Friends of friends" +#~ msgstr "Venners venner" + +#~ msgid "Just friends" +#~ msgstr "Kun venner" + +#~ msgid "Just me" +#~ msgstr "Kun mig" + +#~ msgid "Find a Route" +#~ msgstr "Find en rute" + +#~ msgid "Check in here" +#~ msgstr "Tjek ind her" + +#~ msgid "Show more information" +#~ msgstr "Vis flere oplysninger" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Facebook. " +#~ "Vælg venligst et fra listen." + +#~ msgid "Population:" +#~ msgstr "Befolkning:" + +#~ msgid "Altitude:" +#~ msgstr "Højde:" + +#~ msgid "Opening hours:" +#~ msgstr "Åbningstider:" + +#~ msgid "Internet access:" +#~ msgstr "Internetadgang:" + +#~ msgid "Toilets:" +#~ msgstr "Toiletter:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Rullestolsadgang:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begrænset" + +#~ msgid "no" +#~ msgstr "nej" + +#~ msgid "designated" +#~ msgstr "handicap" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL er ikke gyldig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kabel" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "tjeneste" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du ikke en konto?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Rutesøgning med OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Tilføj destination" + +#~ msgid "Open with another application" +#~ msgstr "Åbn med andet program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryk enter for at søge" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Afslut" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Åbn formlag …" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Indlæs kortlag" + +#~ msgid "Open Layer" +#~ msgstr "Åbn lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mile" + +#~ msgid "%f ft" +#~ msgstr "%f fod" + +#~ msgid "Country code: %s" +#~ msgstr "Landekode: %s" diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..d8871baa --- /dev/null +++ b/po/de.po @@ -0,0 +1,2080 @@ +# German translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Tobias Endrigkeit , 2013. +# Benjamin Steinwender , 2014. +# Bernd Homuth , 2015. +# Paul Seyfert , 2016. +# Wolfgang Stöggl , 2014-2015, 2017. +# Christian Kirbach , 2014-2020. +# Mario Blättermann , 2015-2018, 2020. +# Tim Sabsch , 2018-2020. +# Philipp Kiemle , 2020-2021. +# +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 09:17+0200\n" +"Last-Translator: Philipp Kiemle \n" +"Language-Team: Deutsch \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karten" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Orte in der ganzen Welt finden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"»Karten« gibt Ihnen einen schnellen Zugang zu Karten aus der ganzen Welt. Es " +"erlaubt Ihnen, Orte schnell zu finden, indem Sie eine Stadt oder eine Straße " +"suchen, oder einen Ort zu finden, um einen Freund zu treffen." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"»Karten« nutzt die gemeinschaftliche OpenStreetMap-Datenbank, die von " +"hunderttausenden Menschen aus der ganzen Welt erstellt worden ist." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Das GNOME-Projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Karten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Eine einfache Karten-Anwendung" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ermöglicht die Anzeige Ihres Ortes in der Karte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Zuletzt betrachteter Ort" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinaten des letzten betrachteten Orts." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Ansichtsgröße" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Vergrößerungsstufe" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartentyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Die Art der anzuzeigenden Karte (Straße, Luftbildansicht, usw.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenstergröße" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenstergröße (Breite und Höhe)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fensterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fensterposition (X und Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenster maximiert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximierungszustand des Fensters" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximale Anzahl an Suchergebnissen" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximale Anzahl an Suchergebnissen aus der Geocode-Suche." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Foursquare-Check-in" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Foursquare-Check-in. " +"Mögliche Werte sind: Öffentlich, Anhänger oder Privat." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Facebook-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Twitter-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Benutzername oder E-Mail-Adresse für OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Zeigt an, dass sich der Benutzer angemeldet hat, um OpenStreetMap-Daten " +"bearbeiten zu können." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Für die Route zuletzt benutzte Beförderungsart" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Gibt an, ob sich die Anwendung im Nachtmodus befindet." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Verwendung von Hybrid-Luftausschnitten" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Gibt an, ob Luftausschnitte Hybrid verwenden sollen (mit Markierungen)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Auf Facebook veröffentlichen" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Auf Twitter veröffentlichen" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Ein_checken" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Öffentlich" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Anhänger" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route von hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zwischenziel hinzufügen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route hierher" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Was ist hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Ort kopieren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ansicht exportieren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportieren" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Route und Markierungen einbeziehen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Wählen Sie den Kartentyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Verkleinern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Vergrößern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Route drucken" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Favoriten umschalten" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allgemein" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tastenkürzel anzeigen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Suchen" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Verlassen" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartenansicht" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Vergrößern" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Verkleinern" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Maßstab umschalten" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Zur Straßenansicht wechseln" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Zur Luftbildansicht wechseln" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Formebene öffnen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Markierungen anzeigen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Formebene öffnen …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Schalten Sie die Ortungsdienste ein, um Ihren Ort zu bestimmen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Abbrechen" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Einstellungen der Ortungsdienste" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-Konto einrichten" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Als Bild exportieren" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Tasten_kürzel" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Info zu Karten" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Karten ist vom Internet getrennt!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karten erfordert eine bestehende Internetverbindung, um richtig arbeiten zu " +"können. Es besteht aber keine." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Prüfen Sie Ihre Verbindung und die Proxy-Einstellungen." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-Konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Anmelden, um Karten bearbeiten zu " +"können" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helfen Sie bei der Verbesserung der Karte,\n" +"indem Sie ein OpenStreetMap-Konto nutzen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-Mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passwort" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrieren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Anmelden" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Das hat leider nicht funktioniert. Bitte versuchen Sie es erneut, oder " +"besuchen Sie\n" +"OpenStreetMap, um Ihr Passwort zurückzusetzen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "" +"Die Verifizierungscodes stimmen nicht überein, bitte versuchen Sie es erneut." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Geben Sie den oben angezeigten Verifizierungscode ein" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifizieren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Angemeldet" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ihr OpenStreetMap-Konto ist aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Abmelden" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straße" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hausnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postleitzahl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Stadt" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Keine" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Feld hinzufügen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartenänderungen werden in allen Karten sichtbar, die\n" +"Daten von OpenStreetMap verwenden." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Zuletzt verwendet" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Nächste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Keine Ergebnisse gefunden" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ein Fehler ist aufgetreten" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ziehen, um die Reihenfolge der Routenziele zu ändern" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ort öffnen" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopieren" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Senden an …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Ein_checken …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Formebene öffnen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ö_ffnen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Sichtbarkeit umschalten" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routenplanung von GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Die Reisedaten für öffentliche Verkehrsmittel werden von Drittanbietern\n" +"bereitgestellt.\n" +"GNOME kann für die Korrektheit der Routen und angezeigten Fahrzeiten\n" +"nicht garantieren. Beachten Sie, dass nicht alle Anbieter Informationen für " +"alle\n" +"Transportmittel beinhalten. Zum Beispiel könnte ein nationaler Anbieter " +"keine\n" +"Fluglinien beinhalten, oder ein lokaler Anbieter keine Regionalzüge.\n" +"Die angezeigten Namen und Marken sind als eingetragene Warenzeichen zu " +"betrachten, sofern anwendbar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Weitere Ergebnisse anzeigen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Zwischenstationen und Informationen verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zwischenstationen und Informationen anzeigen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Jetzt starten" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Abfahrt um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankunft um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Anzeigen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busse" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Straßenbahnen" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Züge" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "U-Bahn" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Fähren" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flugzeuge" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Ort teilen" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Zu einer neuen Route hinzufügen" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Route" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Als bevorzugt markieren" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Vergrößern, um einen Ort hinzufügen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Vergrößern" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Es konnte keine Kachel-Struktur im Ordner gefunden werden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-Dokument konnte nicht ausgewertet werden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Erforderliche Attribute fehlen" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-Element kann nicht gefunden werden" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Pfad zu einer lokalen Kachel-Ordnerstruktur" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Kachelgröße des lokalen Kachel-Ordner" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Die Versionsnummer des Programms anzeigen" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Verfügbarkeit des Netzwerks ignorieren" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATEI …|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Wählen Sie ein Konto aus" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Wird geladen" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Wählen Sie einen Ort" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Foursquare " +"finden. Bitte wählen Sie einen aus der Liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Bei %s einchecken" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Schreiben Sie eine optionale Nachricht, um bei %s einzuchecken." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "»%s« konnte im sozialen Netzwerk nicht gefunden werden" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Für einen Check-in konnte an diesem Ort kein geeigneter Platz gefunden werden" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Die Anmeldedaten sind abgelaufen. Bitte öffnen Sie Online-Konten, um sich " +"anzumelden und das Konto zu aktivieren" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Hier wurde nichts gefunden!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Der Ort wurde zur Karte hinzugefügt. Beachten Sie, dass es eine Zeit dauern " +"kann, bis er in der Karte und in den Suchergebnissen erscheint." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karten auf %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dateisystem ist schreibgeschützt" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Sie haben nicht die nötigen Rechte zum Speichern" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Der Ordner existiert nicht" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Kein Dateiname angegeben" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ansicht kann nicht exportiert werden" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktueller Ort" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "Ungültige Koordinaten" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "Verarbeitungsfehler" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "Unbekannte Geometrie" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Routenanfrage schlug fehl." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Keine Route gefunden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle Ebenendateien" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Es konnte keine Verbindung zum Ortungsdienst hergestellt werden" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Christian Kirbach \n" +"Tobias Endrigkeit \n" +"Benjamin Steinwender \n" +"Mario Blättermann \n" +"Bernd Homuth \n" +"Paul Seyfert \n" +"Tim Sabsch \n" +"Philipp Kiemle " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Eine Karten-Anwendung für GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. und die Autoren von GNOME Karten" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartendaten bereitgestellt von %s und weiteren Mitwirkenden" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartenausschnitte bereitgestellt von %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Suche bereitgestellt von %s unter Verwendung von %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Ebene konnte nicht geöffnet werden" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Möchten Sie fortfahren?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sie sind dabei, Dateien mit einer Gesamtgröße von %s MB zu öffnen. Das " +"könnte einige Zeit dauern" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Dateityp wird nicht unterstützt" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Geo-Adresse konnte nicht geöffnet werden" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Benutzername oder Passwort falsch" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Erfolg" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Fehlerhafte Anfrage" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt nicht gefunden" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, jemand anderes hat gerade das Objekt geändert" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt wurde gelöscht" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Weg oder Bezug verweist auf nicht existierende Unterobjekte" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "" +"Der offizielle Name, der üblicherweise auf dem Ortseingangsschild erscheint." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Internet-Seite" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Das ist keine gültige URL. Bitte beginnen Sie mit »http://« oder »https://«." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Die offizielle Webseite. Verwenden Sie möglichst die Grundform der Adresse, " +"zum Beispiel http://example.com statt http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Die Telefonnummer im internationalen Format, beginnend mit einem Plus-" +"Zeichen. Denken Sie an den Schutz der Privatsphäre, insbesondere für private " +"Telefonnummern." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-Mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Das ist keine gültige E-Mail-Adresse. Bitte stellen Sie sicher, das »An:«-" +"Präfix nicht mit anzugeben." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"E-Mail-Adresse für Anfragen. Fügen Sie nur Adressen hinzu, die für die " +"öffentliche Nutzung gedacht sind." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Das verwendete Format sollte den Sprachcode und den Artikel enthalten, zum " +"Beispiel »de:Titel des Artikels«." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Öffnungszeiten" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Öffnen Sie den Verweis in der Beschriftung für Hilfe zur Formatierung." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Bevölkerung" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Höhe" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höhe eines Punktes über dem Meeresspiegel in Meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Barrierefreier Zugang" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nein" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Begrenzt" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Geeignet" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetzugang" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Funknetzwerk" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kabelgebunden" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Zum Mitnehmen" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Ausschließlich" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaitum" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhismus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Christentum" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfuzianismus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduismus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judentum" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Mehrere Religionen" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Heidentum" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoismus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Daoismus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarismus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jesidismus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zarathustrismus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toiletten" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Notiz" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Notiz, die anderen Kartennutzern nicht-offensichtliche Hinweise zu einem " +"Element, die Absicht des Autors bei der Erstellung, oder Hinweise zur " +"weiteren Verbesserung zur Verfügung stellt." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Typ wählen" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Abgeschlossen" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Unbenannter Ort" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo-Adresse konnte nicht gelesen werden" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinaten" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Genauigkeit" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Genauigkeit: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Bietet Essen zum Mitnehmen an" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Bietet kein Essen zum Mitnehmen an" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Bietet ausschließlich Essen zum Mitnehmen an" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Öffentlicher Internetzugang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Kein Internetzugang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Öffentliches WLAN" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Kabelgebundener Internetzugang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computer zur Nutzung verfügbar" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internet-Hilfestellung verfügbar" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Keine Toiletten vorhanden" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toiletten vorhanden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Barrierefrei" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Eingeschränkt barrierefrei" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nicht barrierefrei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Barrierefrei" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s unter dem Meeresspiegel" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Auf Höhe des Meerespiegels" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Ort wurde nicht in OpenStreetMap gefunden" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaten in der Adresse sind ungültig" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Adresse wird nicht unterstützt" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Von %s nach %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Kartenausschnitte zum Drucken werden geladen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Sie können den Druck abbrechen, wenn dies zu lange dauert" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Drucken abbrechen" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zwischenstopp hinzufügen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Zwischenstopp entfernen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route umkehren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s zu %s hinzufügen" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Adresse konnte nicht geöffnet werden" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Öffnen mit %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "Laden der Datei ist fehlgeschlagen" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschätzte Zeit: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Reiseplan bereitgestellt von %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Abfahrt in %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Abfahrt" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Fußweg %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankunft in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankunft" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Anweisungen für den Fußweg anzeigen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Anweisungen für den Fußweg verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Frühere Alternativen laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Spätere Alternativen laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Keine früheren Alternativen gefunden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Keine späteren Alternativen gefunden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Für diese Route wurden keine Fahrplandaten gefunden." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Für diese Route wurden kein Anbieter gefunden." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s Minute" +msgstr[1] "%s Minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s Stunde" +msgstr[1] "%s Stunden" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s Stunde" +msgstr[1] "%s:%s Stunden" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Jederzeit" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Von Sonnenaufgang bis Sonnenuntergang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Jeden Tag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Gesetzliche Feiertage" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Schulferien" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "geschlossen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Unbekannt" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Genau" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h, %s min" +msgstr[1] "%s h, %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dieses Plugin unterstützt nicht die letzte Ankunft" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsetzen auf %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsetzen" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Halb links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Halb links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Scharf links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Scharf links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Halb rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Halb rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Scharf rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Scharf rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Im Kreisverkehr die Ausfahrt %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Im Kreisverkehr die Ausfahrt Richtung %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "In den Kreisverkehr fahren" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Den Aufzug nehmen und bei %s aussteigen" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Den Aufzug nehmen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Eine Kehrtwende nach links auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Eine Kehrtwende nach links machen" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Eine Kehrtwende nach rechts auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Eine Kehrtwende nach rechts machen" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Suchen Sie nach bestimmten Arten von Orten, wie »Kneipen in der Nähe von " +#~ "Main Street, Boston« oder »Hotels in der Nähe vom Alexanderplatz, Berlin«." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Privatsphäreneinstellungen für Facebook-Check-in" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Zuletzt verwendete Privatsphäreneinstellungen für Facebook-Check-in. " +#~ "Mögliche Werte sind: EVERYONE (jeder), FRIENDS_OF_FRIENDS (Freunde von " +#~ "Freunden), ALL_FRIENDS (alle Freunde) oder SELF (selbst)." + +#~ msgid "Everyone" +#~ msgstr "Jeder" + +#~ msgid "Friends of friends" +#~ msgstr "Freunde von Freunden" + +#~ msgid "Just friends" +#~ msgstr "Nur Freunde" + +#~ msgid "Just me" +#~ msgstr "Nur ich" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Karten konnte keinen geeigneten Platz für einen Check-in in Facebook " +#~ "finden. Bitte wählen Sie einen aus der Liste." + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s, %s und %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Check in here" +#~ msgstr "Hier einchecken" + +#~ msgid "Show more information" +#~ msgstr "Weitere Informationen anzeigen" + +#~ msgid "Population:" +#~ msgstr "Bevölkerung:" + +#~ msgid "Altitude:" +#~ msgstr "Höhe:" + +#~ msgid "Opening hours:" +#~ msgstr "Öffnungszeiten:" + +#~ msgid "Internet access:" +#~ msgstr "Internetzugang:" + +#~ msgid "Toilets:" +#~ msgstr "Toiletten:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Barrierefreier Zugang:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begrenzt" + +#~ msgid "no" +#~ msgstr "nein" + +#~ msgid "designated" +#~ msgstr "geeignet" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-Adresse ist ungültig" + +#~ msgid "wired" +#~ msgstr "Kabelgebunden" + +#~ msgid "terminal" +#~ msgstr "Terminal" + +#~ msgid "service" +#~ msgstr "Dienst" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Route suchen" + +#~ msgid "Primary menu" +#~ msgstr "Hauptmenü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Sie haben kein Konto?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routenplanung von OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Ziel hinzufügen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mit einer anderen Anwendung öffnen" + +#~ msgid "Press enter to search" +#~ msgstr "Drücken Sie zum Suchen die Eingabetaste" + +#~ msgid "Quit" +#~ msgstr "Verlassen" diff --git a/po/el.po b/po/el.po new file mode 100644 index 00000000..3fdf1283 --- /dev/null +++ b/po/el.po @@ -0,0 +1,2156 @@ +# Greek translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Dimitris Spingos , 2013. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014, 2015. +# Efstathios Iosifidis , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 22:31+0300\n" +"Last-Translator: Efstathios Iosifidis \n" +"Language-Team: Greek, Modern (1453-) \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Χάρτες GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Βρείτε μέρη από όλο τον κόσμο" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Η εφαρμογή Χάρτες, σας παρέχει μια γρήγορη πρόσβαση σε χάρτες από όλο τον " +"κόσμο. Σας επιτρέπει να βρείτε γρήγορα μια τοποθεσία αναζητώντας είτε μια " +"πόλη είτε μια οδό, ή μπορείτε να εντοπίσετε μια τοποθεσία για να συναντήσετε " +"ένα φίλο." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Η εφαρμογή Χάρτες, χρησιμοποιεί την βάση δεδομένων OpenStreetMap, που έχει " +"φτιαχτεί από χιλιάδες άτομα σε όλο τον κόσμο." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Το έργο GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Χάρτες" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Μια απλή εφαρμογή χαρτών" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Χάρτες;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Επιτρέπει την τοποθεσία σας να εμφανιστεί στον χάρτη." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "τελευταία τοποθεσία που προβλήθηκε" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Συντεταγμένες τελευταίας τοποθεσίας που προβλήθηκε." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "εστίαση" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Επίπεδο εστίασης" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Τύπος χάρτη" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Ο τύπος του χάρτη για προβολή (δρόμος, εναέριος κλπ.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Μέγεθος παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Μέγεθος παραθύρου (πλάτος και ύψος)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Θέση παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Θέση παραθύρου (Χ και Υ)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Μεγιστοποιημένο παράθυρο" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Κατάσταση μεγιστοποίησης παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Μέγιστος αριθμός αποτελεσμάτων αναζήτησης" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" +"Μέχιστος αριθμός αποτελεσμάτων αναζήτησης από την αναζήτηση στο geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Αριθμός πρόσφατων τοποθεσιών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Αριθμός τοποθεσιών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Αριθμός πρόσφατων διαδρομών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Αριθμός διαδρομών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο " +"Foursquare. Δυνατές τιμές είναι: public, followers ή private.." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Έλεγχος εισόδου του Foursquare στην αναμετάδοση του Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"αποστολή στον λογαριασμό Facebook συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Έλεγχος εισόδου στην αναμετάδοση του Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"τιτίβισμα στον λογαριασμό Twitter συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου του OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Υποδεικνύει αν ο χρήστης έχει συνδεθεί για να επεξεργαστεί τα δεδομένα του " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Τελευταία χρησιμοποιημένος τύπος μεταφορικών μέσων για δρομολόγια" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Εάν η εφαρμογή βρίσκεται σε νυχτερινή λειτουργία." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Χρήση υβριδικών πλακιδίων" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Εάν τα πλακίδια πρέπει να χρησιμοποιούν υβριδικό στυλ (με ετικέτες)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Ορατότητα" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Δημοσίευση στο Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Δημοσίευση στο Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ά_κυρο" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Δημόσιο" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Ακόλουθοι" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Προσωπικό" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Διαδρομή από εδώ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Προσθήκη ενδιάμεσου προορισμού" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Διαδρομή προς εδώ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Τι είναι εδώ;" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Αντιγραφή τοποθεσίας" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Προβολή εξαγωγής" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Ε_ξαγωγή" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Συμπεριέλαβε διαδρομή και δείκτες" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Επιλογή τύπου χάρτη" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Εκτύπωση διαδρομής" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Εναλλαγή αγαπημένων" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Γενικά" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Εμφάνιση συντομεύσεων" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Αναζήτηση" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Έξοδος" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Προβολή χάρτη" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Εναλλαγή εστίασης" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Εναλλαγή σε προβολή δρόμου" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Εναλλαγή σε εναέρια προβολή" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Εμφάνιση ετικετών" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Άνοιγμα στρώσης σχήματος…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ενεργοποίηση υπηρεσιών τοποθεσίας για να βρείτε την τοποθεσία σας" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Ακύρωση" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ρυθμίσεις τοποθεσίας" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ρύθμιση λογαριασμού OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Εξαγωγή ως εικόνα" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Συντομεύσεις _πληκτρολογίου" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Περί του Χάρτες" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Οι Χάρτες είναι εκτός σύνδεσης!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Η εφαρμογή Χάρτες χρειάζεται μια ενεργή σύνδεση στο διαδίκτυο ώστε να " +"λειτουργήσει σωστά, αλλά δε βρέθηκε κάποια." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Ελέγξτε τις ρυθμίσεις της σύνδεσης και του διαμεσολαβητή σας." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Λογαριασμός OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Συνδεθείτε για να επεξεργαστείτε τους " +"χάρτες" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Βοηθήστε να βελτιώσουμε τον χάρτη, χρησιμοποιώντας\n" +"ένα λογαριασμό OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Κωδικός πρόσβασης" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Εγγραφή" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Σύνδεση" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Συγγνώμη, κάτι δε λειτούργησε σωστά. Παρακαλούμε δοκιμάστε ξανά, ή " +"επισκεφθείτε το\n" +"OpenStreetMap για να επαναφέρετε τον κωδικό πρόσβασης σας." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Δεν ταιριάζει ο κωδικός επιβεβαίωσης, παρακαλούμε προσπαθήστε ξανά." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Εισάγετε τον κωδικό επιβεβαίωσης που φαίνεται παραπάνω" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Επαλήθευση" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Συνδεδεμένος/η" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ο λογαριασμός στο OpenStreetMap είναι ενεργός." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Αποσύνδεση" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Οδός" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Αριθμός κατοικίας" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Ταχ. κώδικας" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Πόλη" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Τύπος" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Χωρίς" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Προσθήκη πεδίου" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Σχόλιο" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Οι αλλαγές θα γίνουν ορατές σε όλους τους χάρτες που\n" +"χρησιμοποιούν δεδομένα του OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Πρόσφατα χρησιμοποιημένα" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Επόμενο" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Δεν βρέθηκαν αποτελέσματα" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Παρουσιάστηκε σφάλμα" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Σύρετε για να αλλάξετε την σειρά στη διαδρομή" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Άνοιγμα τοποθεσίας" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Αντιγραφή" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Αποστολή σε…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ά_νοιγμα" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Εναλλαγή ορατότητας" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Αναζήτηση διαδρομής από το GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Τα δρομολόγια για τα μέσα μαζικής μεταφοράς παρέχονται από υπηρεσίες\n" +"από τρίτους.\n" +"Το GNOME δεν μπορεί να εγγυηθεί την ορθότητα των δρομολογίων και των " +"χρονοδιαγραμμάτων που εμφανίζονται.\n" +"Σημειώστε ότι ορισμένοι πάροχοι ενδέχεται να μην περιλαμβάνουν όλους τους " +"διαθέσιμους τρόπους μεταφοράς,\n" +"π.χ. ένας εθνικός πάροχος ενδέχεται να μην περιλαμβάνει αεροπορικές " +"εταιρείες και ένας τοπικός πάροχος θα μπορούσε\n" +"παραλείψει περιφερειακά τρένα.\n" +"Τα ονόματα και τα εμπορικά σήματα που εμφανίζονται πρέπει να θεωρούνται ως " +"σήματα κατατεθέντα όταν ισχύουν." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Εμφάνιση περισσότερων αποτελεσμάτων" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Απόκρυψη ενδιάμεσων στάσεων και πληροφοριών" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Εμφάνιση ενδιάμεσων στάσεων και πληροφοριών" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Αναχώρηση τώρα" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Αναχώρηση στις" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Άφιξη στις" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Εμφάνιση" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Λεωφορεία" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Τραμ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Τρένα" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Μετρό" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Πλοία" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Αεροπλάνα" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Διαμοιρασμός τοποθεσίας" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Προσθήκη σε νέα διαδρομή" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Οδηγίες" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Επισήμανση ως αγαπημένο" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Εστιάστε για να προσθέσετε μια τοποθεσία!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Μεγέθυνση" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Αποτυχία εύρεσης δομής πλακιδίων στον κατάλογο" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Αποτυχία ανάλυσης εγγράφου XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Λείπουν απαιτούμενα γνωρίσματα" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Αποτυχία εύρεσης στοιχείου OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Η τοποθεσία μιας τοπικής δομής πλακιδίων" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Μέγεθος πλακιδίων για τοπικό κατάλογο πλακιδίων" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Εμφάνιση της έκδοσης του προγράμματος" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Αγνόησε διαθεσιμότητα του δικτύου" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Επιλογή λογαριασμού" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Φορτώνεται" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Επιλέξτε μια θέση" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Foursquare. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in στο %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Γράψτε ένα προαιρετικό μήνυμα για check in στο %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Αδύνατη η εύρεση του «%s» στην κοινωνική υπηρεσία" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Αδύνατη η εύρεση μιας κατάλληλης θέσης για check-in σε αυτήν την τοποθεσία" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Τα διαπιστευτήρια έχουν λήξει, παρακαλούμε ανοίξτε τους διαδικτυακούς " +"λογαριασμούς για να εισέλθετε και να ενεργοποιήσετε αυτόν τον λογαριασμό" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Δεν βρέθηκε τίποτα εδώ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Η τοποθεσία προστέθηκε στον χάρτη, μπορεί να πάρει λίγη ώρα πρωτού " +"εμφανιστεί στον χάρτη και στα αποτελέσματα αναζήτησης." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Χάρτες στο %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Το σύστημα αρχείων είναι μόνο για ανάγνωση" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Δεν έχετε δικαιώματα για να αποθηκεύσετε" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Δεν υπάρχει ο κατάλογος" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Δεν ορίσθηκε όνομα αρχείου" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Αδυναμία εξαγωγής προβολής" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Τρέχουσα τοποθεσία" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "μη έγκυρη συντεταγμένη" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "σφάλμα ανάλυσης" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "άγνωστη γεωμετρία" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Αποτυχία αιτήματος διαδρομής." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Δεν βρέθηκε διαδρομή." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Εκκίνηση!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Όλα τα αρχεία στρώσεων" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Αποτυχία σύνδεσης με την υπηρεσία τοποθεσίας" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Ελληνική μεταφραστική ομάδα GNOME\n" +" Δημήτρης Σπίγγος \n" +" Ευστάθιος Ιωσηφίδης \n" +" Εύα Φωτοπούλου \n" +" Μαρία Θουκιδίδου \n" +" Μαρία Μαυρίδου \n" +" Θάνος Τρυφωνίδης \n" +"\n" +"Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" +"http://gnome.gr/" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Μια εφαρμογή χάρτη για το GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Πνευματικά δικαιώματα © 2011 – 2021 Red Hat, Inc. και συγγραφείς του Χάρτες " +"GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Δεδομένα χαρτών από %s και τους συνεισφέροντες" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Τα πλακίδια των χαρτών παρέχονται από %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Η αναζήτηση παρέχεται από το %s με τη χρήση του %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Αποτυχία ανοίγματος στρώσης" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Θέλετε να συνεχίσετε;" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Πρόκειται να ανοίξετε αρχεία με συνολικό μέγεθος %s MB. Μπορεί να χρειαστεί " +"λίγος χρόνος για τη φόρτωση" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Δεν υποστηρίζεται ο τύπος αρχείου" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Αποτυχία ανοίγματος GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Επιτυχία" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Εσφαλμένο αίτημα" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Δε βρέθηκε το αντικείμενο" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Σύγκρουση, κάποιος άλλος μόλις τροποποίησε το αντικείμενο" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Το αντικείμενο έχει διαγραφεί" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Ο τρόπος ή η σχέση παραπέμπουν σε μη υπάρχον θυγατρικό" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Όνομα" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Το επίσημο όνομα. Αυτό φαίνεται συνήθως στις πινακίδες." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Διεύθυνση" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Ιστότοπος" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Αυτή δεν είναι έγκυρη URL. Φροντίστε να συμπεριλάβετε http:// ή https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ο επίσημος ιστότοπος. Προσπαθήστε να χρησιμοποιήσετε τη βασική μορφή της " +"διεύθυνσης. Π.χ. http://example.com αντί για http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Τηλέφωνο" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Αριθμός τηλεφώνου. Χρησιμοποιήστε την παγκόσμια μορφή, ξεκινώντας με το " +"σύμβολο +. Προσέχετε τους τοπικούς νόμους περί ιδιωτικότητας, ειδικά για " +"απόρρητα τηλεφωνικά νούμερα." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Αυτή δεν είναι έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας. Φροντίστε να " +"συμπεριλάβετε το πρόθεμα mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Επικοινωνήστε με τη διεύθυνση ηλεκτρονικής αλληλογραφίας για ερωτήσεις. " +"Προσθέστε μόνο διευθύνσεις ηλεκτρονικού ταχυδρομείου που προορίζονται για " +"δημόσια χρήση." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Βικιπαιδεία" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Η μορφή που θα χρησιμοποιηθεί πρέπει να περιλαμβάνει τον κωδικό γλώσσας και " +"έναν τίτλο άρθρου όπως \"en:Article title\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Ώρες λειτουργίας" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Δείτε τον σύνδεσμο στην ετικέτα για βοήθεια στην μορφοποίηση." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Πληθυσμός" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Υψόμετρο" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Υψόμετρο (πάνω από το επίπεδο της θάλασσας) ενός σημείου σε μέτρα." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Πρόσβαση αμαξιδίου" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ναι" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Όχι" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Περιορισμένο" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Υποδεικνυόμενο" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Πρόσβαση στο διαδίκτυο" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Ενσύρματη δικτύωση" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Υπολογιστής" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Υπηρεσία" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Σε πακέτο" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Μόνο" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Θρησκεία" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Ανιμισμός" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Μπαχάι" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Βουδισμός" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Καοδαϊσμός" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Χριστιανισμός" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Κομφουκιανισμός" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Ινδουϊσμός" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Τζαϊνισμός" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Ιουδαϊσμός" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ισλαμισμός" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Πολλαπλές θρησκείες" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Παγανισμός" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Πασαφιανισμός" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Σαηεντολογία" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Σιντό" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Σιχισμός" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Πνευματισμός" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Ταοϊσμός" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Ουνιταριανός Ουνιβερσαλισμός" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Βουντού" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Γιαζιδισμός" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Ζωροαστριανισμός" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Τουαλέτες" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Σημείωση" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Πληροφορίες που χρησιμοποιούνται για την ενημέρωση άλλων χαρτογράφων σχετικά " +"με τις μη προφανείς πληροφορίες σχετικά με ένα στοιχείο, την πρόθεση του " +"δημιουργού κατά τη δημιουργία του, ή συμβουλές για περαιτέρω βελτίωση." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Επιλογή τύπου" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Έτοιμο" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Άγνωστο μέρος" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Αποτυχία ανάλυσης Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Συντεταγμένες" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Ακρίβεια" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ακρίβεια: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Αριθμός τηλεφώνου" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Προσφέρει επιλογή σε πακέτο" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Δεν προσφέρει επιλογή σε πακέτο" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Προσφέρει μόνο επιλογή σε πακέτο" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Δημόσια πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Δεν υπάρχει πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Δημόσιο Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Ενσύρματη πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Υπολογιστές διαθέσιμοι προς χρήση" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Διατίθεται βοήθεια στο διαδίκτυο" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Δεν υπάρχουν διαθέσιμες τουαλέτες" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Διαθέσιμες τουαλέτες" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Περιορισμένη πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Δεν υπάρχει πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Έχει καθοριστεί για αναπηρικ αμαξιδίων" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s κάτω από το επίπεδο της θάλασσας" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Στο επίπεδο της θάλασσας" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Θρησκεία:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Η τοποθεσία δεν βρέθηκε στο OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Οι συντεταγμένες στη URL δεν είναι έγκυρες" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Η URL δεν υποστηρίζεται" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Από %s σε %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Φόρτωση χάρτη για εκτύπωση" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Μπορείτε να ακυρώσετε την εκτύπωση αν αυτό διαρκεί πολλή ώρα" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ακύρωση εκτύπωσης" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Προσθήκη μέσω της τοποθεσίας" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Αφαίρεση μέσω της τοποθεσίας" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Αντίστροφη διαδρομή" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Προσθήκη %s σε %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Αποτυχία ανοίγματος του URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Άνοιγμα με %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "αδυναμία φόρτωσης αρχείου" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Εκτιμώμενος χρόνος: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Οι διαδρομές παρέχονται από %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Έναρξη από %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Έναρξη" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Περπάτημα %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Άφιξη στο %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Άφιξη" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Εμφάνιση οδηγιών περπατήματος" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Απόκρυψη οδηγιών περπατήματος" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Φόρτωση νεοτέρων εναλλακτικών" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Φόρτωση τελευταίων εναλλακτικών" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Δεν βρέθηκαν νεότερες εναλλακτικές." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Δεν βρέθηκαν τελευταίες εναλλακτικές." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Δεν βρέθηκε δρομολόγιο γι' αυτή τη διαδρομή." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Δεν βρέθηκε πάροχος γι' αυτή τη διαδρομή." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s λεπτό" +msgstr[1] "%s λεπτά" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ώρα" +msgstr[1] "%s ώρες" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ώρα" +msgstr[1] "%s:%s ώρες" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Εικοσιτετράωρο" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Από την ανατολή μέχρι τη δύση του ήλιου" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Κάθε ημέρα" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Επίσημες αργίες" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Σχολικές αργίες" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "δεν είναι ανοικτό" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Άγνωστο" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Ακριβής" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s ω" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s λεπτό" +msgstr[1] "%s h %s λεπτά" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s λεπτ" +msgstr[1] "%s λεπτ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s δ" +msgstr[1] "%s δ" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Αυτό το πρόσθετο δεν υποστηρίζει την τελευταία άφιξη" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Συνεχίστε στο %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Συνέχεια" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Στρίψτε αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Στρίψτε αριστερά" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Στρίψτε λίγο αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Στρίψτε λίγο αριστερά" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Απότομη στροφή αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Απότομη στροφή αριστερά" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Στρίψτε δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Στρίψτε δεξιά" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Στρίψτε λίγο δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Στρίψτε λίγο δεξιά" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Απότομη στροφή δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Απότομη στροφή δεξιά" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο προς %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Πάρτε τον κυκλικό κόμβο" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Πάρτε τον ανισόπεδο κόμβο και εξέλθετε από το %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Πάρτε τον ανισόπεδο κόμβο" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Κάντε μια αριστερή αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Κάντε μια αριστερή αναστροφή" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Κάντε μια δεξιά αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Κάντε μια δεξιά αναστροφή" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Μπορείτε ακόμη και να κάνετε αναζήτηση για καθορισμένους τύπους " +#~ "τοποθεσιών, όπως “Λέσχες κοντά στην Σταδίου, Αθήνα” ή “Ξενοδοχεία κοντά " +#~ "στην Ομόνοια, Αθήνα”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Ρυθμίσεις ιδιωτικότητας ελέγχου εισόδου στο Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου. Δυνατές " +#~ "τιμές είναι: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ή SELF." + +#~ msgid "Everyone" +#~ msgstr "Όλοι" + +#~ msgid "Friends of friends" +#~ msgstr "Φίλοι των φίλων" + +#~ msgid "Just friends" +#~ msgstr "Μόνο φίλοι" + +#~ msgid "Just me" +#~ msgstr "Μόνο εγώ" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Facebook. " +#~ "Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#~ msgid "Check in here" +#~ msgstr "Check in εδώ" + +#~ msgid "Show more information" +#~ msgstr "Εμφάνιση περισσότερων πληροφοριών" + +#~ msgid "Population:" +#~ msgstr "Πληθυσμός:" + +#~ msgid "Altitude:" +#~ msgstr "Υψόμετρο:" + +#~ msgid "Opening hours:" +#~ msgstr "Ώρες λειτουργίας:" + +#~ msgid "Internet access:" +#~ msgstr "Πρόσβαση στο διαδίκτυο:" + +#~ msgid "Toilets:" +#~ msgstr "Τουαλέτες:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Πρόσβαση αμαξιδίου:" + +#~ msgid "Phone:" +#~ msgstr "Τηλέφωνο:" + +#~ msgid "yes" +#~ msgstr "ναι" + +#~ msgid "limited" +#~ msgstr "περιορισμένη" + +#~ msgid "no" +#~ msgstr "όχι" + +#~ msgid "designated" +#~ msgstr "υποδεικνυόμενο" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Η URL του OpenStreetMap δεν είναι έγκυρη" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ενσύρματο δίκτυο" + +#~ msgid "terminal" +#~ msgstr "υπολογιστής" + +#~ msgid "service" +#~ msgstr "εξυπηρέτηση" + +#~ msgid "Don’t have an account?" +#~ msgstr "Δεν έχετε λογαριασμό;" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Προσθήκη προορισμού" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Αναζήτηση διαδρομής από το OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Άνοιγμα με άλλη εφαρμογή" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Press enter to search" +#~ msgstr "Πατήστε enter για αναζήτηση" + +#~ msgid "Quit" +#~ msgstr "Έξοδος" + +#~ msgid "OK" +#~ msgstr "Εντάξει" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Άνοιγμα στρώσης σχήματος…" + +#~ msgid "Load Map Layer" +#~ msgstr "Φόρτωση στρώσης χάρτη" + +#~ msgid "Open Layer" +#~ msgstr "Άνοιγμα στρώσης" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Η τοποθεσία δεν βρέθηκε" + +#~ msgid "Postal code: %s" +#~ msgstr "Ταχ. κώδικας: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Κωδικός χώρας: %s" + +#~ msgid "Population: %s" +#~ msgstr "Πληθυσμός: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Πρόσβαση αμαξιδίου: %s " + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Αποτυχία ανάλυσης αρχείου GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Κοινή χρήση" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Τελευταία γνωστή θέση και ακρίβεια" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Τελευταία γνωστή θέση (πλάτος και μήκος σε μοίρες) και ακρίβεια (σε " +#~ "μέτρα)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Περιγραφή της τελευταίας γνωστής θέσης του χρήστη." + +#~ msgid "User set last known location" +#~ msgstr "Ορισμός της τελευταίας γνωστής τοποθεσίας από τον χρήστη" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Εάν η τελευταία γνωστή τοποθεσία ορίστηκε χειροκίνητα από τον χρήστη." + +#~ msgid "I’m here!" +#~ msgstr "Είμαι εδώ!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "From" +#~ msgstr "Από" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Satellite" +#~ msgstr "Δορυφόρος" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 00000000..4816211a --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,2054 @@ +# British English translation of gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER. +# This file is distributed under the same licence as the gnome-maps package. +# Philip Withnall , 2013. +# Bruce Cowan , 2017-2020. +# Zander Brown , 2019-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-16 22:28+0000\n" +"Last-Translator: Zander Brown \n" +"Language-Team: English - United Kingdom \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Project-Style: gnome\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find places around the world" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "The GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "A simple maps application" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Allows your location to be shown on the map." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom level" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Map type" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "The type of map to display (street, aerial, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximised" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximisation state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Last used transportation type for routing" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Night mode" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Whether the application is in night mode." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Use hybrid aerial tiles" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Whether aerial tiles should use hybrid style (with labels)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibility" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post on Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post on Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Everyone" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Friends of friends" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Just friends" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Just me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route from here" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Add intermediate destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route to here" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "What’s here?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copy Location" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export view" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Export" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Include route and markers" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Go to current location" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Choose map type" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom out" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Toggle favourites" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Print Route" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Show Shortcuts" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Search" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Print route" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Map View" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom out" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toggle scale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Go to current location" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Switch to street view" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Switch to aerial view" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Open shape layer" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Show Labels" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Open Shape Layer…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Turn on location services to find your location" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Location Settings" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Night Mode" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Set up OpenStreetMap Account" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Export as Image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "About Maps" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Maps is offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Check your connection and proxy settings." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Sign in to edit maps" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help to improve the map, using an\n" +"OpenStreetMap account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Sign up" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Sign In" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "The verification code didn’t match, please try again." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Enter verification code shown above" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verify" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Signed In" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Your OpenStreetMap account is active." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sign Out" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Street" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "House number" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postal code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "City" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "None" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Add Field" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recently Used" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Next" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No results found" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "An error has occurred" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Drag to change order of the route" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Open Location" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send To…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Open Shape Layer" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Open" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Toggle visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Route search by GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Show more results" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Hide intermediate stops and information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Show intermediate stops and information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Leave Now" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Leave By" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrive By" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Show" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Underground" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferries" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplanes" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Share location" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Add to new route" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Directions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Mark as favourite" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in to add location!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom In" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Failed to find tile structure in directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Failed to parse XML document" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Missing required attributes" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Could not find OSM element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "A path to a local tiles directory structure" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tile size for local tiles directory" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Show the version of the program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignore network availability" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Select an account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Loading" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Select a place" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in to %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Write an optional message to check in to %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Cannot find “%s” in the social service" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Cannot find a suitable place to check-in in this location" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nothing found here!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Maps at %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filesystem is read only" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "You do not have permission to save there" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "The directory does not exist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No filename specified" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Unable to export view" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Current Location" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "invalid coordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parse error" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "unknown geometry" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Route request failed." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No route found." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "All Layer Files" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Failed to connect to location service" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Philip Withnall \n" +"David King \n" +"Bruce Cowan \n" +"Zander Brown " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Map data by %s and contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Map tiles provided by %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Search provided by %s using %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Failed to open layer" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Do you want to continue?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "File type is not supported" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Failed to open GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Incorrect user name or password" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Success" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bad request" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object not found" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, someone else has just modified the object" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object has been deleted" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way or relation refers to non-existing children" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "The official name. This is typically what appears on signs." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Address" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "This is not a valid URL. Make sure to include http:// or https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Phone" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"The format used should include the language code and the article title like " +"“en:Article title”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Opening hours" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "See the link in the label for help on format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevation (height above sea level) of a point in metres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Wheelchair access" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Yes" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limited" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designated" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internet access" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toilets" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Select Type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Done" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Unnamed place" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Failed to parse Geo URI" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Coordinates" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Accuracy" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Accuracy: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +#| msgid "House number" +msgid "Phone number" +msgstr "Phone number" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Public internet access" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +#| msgid "Internet access" +msgid "No internet access" +msgstr "No internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Public Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Wired internet access" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computers available for use" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internet assistance available" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "No toilets available" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toilets available" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Wheelchair accessible" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Limited wheelchair accessibility" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Not wheelchair accessible" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Designated for wheelchair users" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Place not found in OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Coordinates in URL are not valid" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL is not supported" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "From %s to %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Loading map tiles for printing" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "You can abort printing if this takes too long" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abort printing" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Add via location" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via location" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverse route" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Add %s to %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Failed to open URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Open with %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "failed to load file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimated time: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraries provided by %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Walk %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrive" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Show walking instructions" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Hide walking instructions" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Load earlier alternatives" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Load later alternatives" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No earlier alternatives found." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No later alternatives found." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No timetable data found for this route." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No provider found for this route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hour" +msgstr[1] "%s hours" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hour" +msgstr[1] "%s:%s hours" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Around the clock" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "From sunrise to sunset" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +#| msgid "every day" +msgid "Every day" +msgstr "Every day" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Public holidays" + +#: src/translations.js:174 +#| msgid "school holidays" +msgid "School holidays" +msgstr "School holidays" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "not open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Unknown" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "This plug-in doesn't support latest arrival" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue on %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turn left on %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Turn left" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turn slightly left on %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Turn slightly left" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turn sharp left on %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Turn sharp left" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turn right on %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Turn right" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turn slightly right on %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Turn slightly right" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turn sharp right on %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Turn sharp right" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "In the roundabout, take exit %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "In the roundabout, take exit to %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Take the roundabout" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Take the lift and get off at %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Take the lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Make a left u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Make a left u-turn" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Make a right u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Make a right u-turn" + +#~ msgid "Find a Route" +#~ msgstr "Find a Route" + +#~ msgid "Check in here" +#~ msgstr "Check in here" + +#~ msgid "Show more information" +#~ msgstr "Show more information" + +#~ msgid "Population:" +#~ msgstr "Population:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Opening hours:" + +#~ msgid "Internet access:" +#~ msgstr "Internet access:" + +#~ msgid "Toilets:" +#~ msgstr "Toilets:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Wheelchair access:" + +#~ msgid "Phone:" +#~ msgstr "Phone:" + +#~ msgid "yes" +#~ msgstr "yes" + +#~ msgid "limited" +#~ msgstr "limited" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designated" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL is not valid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "wired" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "service" + +#~ msgid "Primary menu" +#~ msgstr "Primary menu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Don’t have an account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Add destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Route search by OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "Quit" + +#~ msgid "Load Map Layer" +#~ msgstr "Load Map Layer" + +#~ msgid "Open with another application" +#~ msgstr "Open with another application" + +#~ msgid "Press enter to search" +#~ msgstr "Press enter to search" + +#~ msgid "Open Layer" +#~ msgstr "Open Layer" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "Last known location was set manually by user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I'm here!" +#~ msgstr "I’m here!" + +#~ msgid "Satellite" +#~ msgstr "Satellite" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 00000000..70521d83 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1889 @@ +# Esperanto translation for gnome-maps. +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ryan LORTIE , 2013. +# Matthew CHISHOLM , 2013. +# Daniel PUENTES , 2015. +# Nicolas MAIA , 2015. +# Baptiste DARTHENAY , 2016. +# Carmen Bianca BAKKER , 2018. +# Tirifto , 2019. +# Kristjan SCHMIDT , 2013-2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-12-15 18:16+0000\n" +"PO-Revision-Date: 2019-12-18 23:21+0200\n" +"Last-Translator: Kristjan SCHMIDT \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-DamnedLies-Scope: partial\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapoj" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trovi lokojn tra la mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapoj donas al vi rapidan aliron al mapoj de la tuta mondo. Ĝi ebligas vin " +"rapide trovi la lokon, kiun vi serĉas, serĉante urbon aŭ straton, aŭ trovi " +"lokon por renkonti amikon." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapoj uzas la kunlaboran datumbazon OpenStreetMap, farita de centoj da miloj " +"da personoj tra la tuta mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vi eĉ povas serĉi specifajn specojn de lokoj, kiel ekzemple “Trinkejo " +"proksime al Main Street, Bostono” aŭ “Hotelo proksime al Alexanderplatz, " +"Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "La projekto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:513 +msgid "Maps" +msgstr "Mapoj" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Simpla mapa aplikaĵo" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapoj;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ebligas montri vian pozicion sur la mapo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laste vidita loko" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinatoj de laste vidita loko." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Speco de mapo" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenestra grando" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenestra grando (larĝo kaj alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fenestra pozicio" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozicio de fenestro (x kaj y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenestro maksimumigita" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimumiga stato de fenestro" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimuma numero da serĉa rezultoj" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimuma numero da serĉa rezultoj de geocode-a serĉo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombro de lastatempaj lokoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombro de lastatempaj lokoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombro de lastatempaj kursoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombro da lastatempe vizititaj kursoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privateca agordo de Facebook-prezentiĝo" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"EVERYONE (ĉiuj), FRIENDS_OF_FRIENDS (amikoj de amikoj), ALL_FRIENDS (ĉiuj " +"amikoj), aŭ SELF (sin mem)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privateca agordo de Foursquare-prezentiĝo" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"public (publika), followers (sekvantoj), aŭ private (privata)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Facebook ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Twitter ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-uzantonomo aŭ retpoŝtadreso" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikas ĉu la uzanto estas salutinta por redakti OpenStreetMap-datumojn." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Videbleco" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Afiŝi ĉe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Alfiŝi ĉe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Nuligi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "P_rezentiĝi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ĉiu" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amikoj de amikoj" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur amikoj" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur mi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publika" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekvantoj" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privata" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Kio estas ĉi tie?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Kopii lokon" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Elporti kiel bildo" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Elporta vido" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Elporti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkluzivi kurson kaj markilojn" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ĝenerale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Montri la klavkombinojn" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Serĉo" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Presi la kurson" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ĉesi" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Mapa vido" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zomi" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Malzomi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Baskuligi skalon" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Ŝalti al strata vido" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Baskuligi al aera vido" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Malfermi forman tavolon" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Malfermi forman tavolon…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Enŝalti lokajn servojn por trovi vian lokon" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Nuligi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Agordoj de loko" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Agordi OpenStreetMap-konton" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Pri Mapoj" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Elekti specon de mapo" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Malzomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Zomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Baskuligi ŝataĵojn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Presi la kurson" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Mapoj estas nekonektitaj!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapoj bezonas interretaliron por bone funkcii, sed oni ne trovis ĝin." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kontrolu vian konekton kaj agordojn de la prokurilo." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aldoni al nova kurso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kunhavigi lokon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marki kiel ŝatatan" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prezentiĝi ĉi tie" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Salutu por redakti mapojn" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helpu plibonigi la mapon uzante\n" +"OpenStreetMap-konton." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Retpoŝtadreso" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasvorto" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Saluti" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ĉu vi ne havas konton?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Pardonon, tio ne funkciis. Bonvolu provi denove, aŭ viziti\n" +"OpenStreetMap por reagordi vian pasvorton." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "La kontrolkodo ne kongruis, bonvolu provi denove." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Bonvolu enigi la ĉi supran kontrolkodon" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Kontroli" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Salutinta" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Via OpenStreetMap-konto estas aktiva." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Adiaŭi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strato" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Domnumero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poŝtkodo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Urbo" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Neniu" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aldoni kampon" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Mapaj redaktoj videblos en ĉiuj mapoj kiuj uzas\n" +"OpenStreetMap-datumojn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Freŝe uzitaj" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sekva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montri pli da informoj" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ne trovis rezulton" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ŝovu por ŝangi la ordon de la kurso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopii" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sendi al…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Malfermi forman tavolon" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Malfermi" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Baskuligi videblecon" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Kursa serĉado de GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Planado de kursoj kun publikaj transportiloj estas provizata\n" +"de eksteraj servoj.\n" +"GNOME ne povas garantii ĝustecon de la montrataj kursoj kaj planoj.\n" +"Rimarku, ke iuj provizantoj eble ne traktas ĉiujn specojn de transportado. " +"Ekzemple,\n" +"landa provizanto eble ne traktus aviadon, kaj loka liveranto eble ne traktus " +"regionajn\n" +"vagonarojn.\n" +"Nomojn kaj varmarkojn prezentatajn rigardu kiel registritajn posedaĵojn, " +"kiam tio taŭgas." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montri pli da rezultoj" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Kaŝi intermezajn staciojn kaj informojn" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Montri intermezajn staciojn kaj informojn" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Ekveturi nun" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Ekveturi je" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Alveni je" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Montri" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busoj" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramoj" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vagonaroj" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subtera fervojo" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Pramŝipoj" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviadiloj" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuala loko" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Precizeco: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zomu por aldoni lokon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zomi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Malsukcesis trovi kahelan strukturon en dosierujo" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Malsukcesis analizi la XML-dokumenton" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mankas bezonataj atributoj" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ne sukcesis trovi la OSM-elementon" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Vojo al loka kahela dosieruja strukturo" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Montri la version de la programo" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Malatenti atingeblecon de reto" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Elekti konton" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ŝarĝante" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Elekti lokon" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Facebook. Bonvole elektu unu " +"el ĉi tiu listo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Foursquare. Bonvole elektu " +"unu el ĉi tiu listo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prezentiĝi al %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skribi malnepran mesaĝon por prezentiĝi ĉe %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Eraro okazis" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne povis trovi na “%s” en la socia servo" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne trovis taŭgan lokon por prezentiĝi en tiu ĉi lokon" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"La salutiloj malvalidiĝis, bonvole lanĉu Enretajn Kontojn por saluti kaj " +"ebligi ĉi tiun konton" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Kurso ekde ĉi tie" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Aldoni alvenon" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Kurso ĝis ĉi tie" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Nenio trovita ĉi tie!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Loko estis aldonita al la mapo, rimarku ke ĝi povas preni momenton antaŭ ĝi " +"montras sur la mapo kaj en serĉrezultoj." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapoj ĉe %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosiersistemo estas nurlega" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vi ne havas la permeson por tie konservi" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La dosierujo ne ekzistas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Neniu dosiernomo specifita" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne eblas elporti la vidon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nevalida koordinato" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analizeraro" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nekonata geometrio" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Kurs-peto malsukcesis." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ne trovis kurson." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Ek!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Ĉiuj tavolaj dosieroj" + +#: src/mainWindow.js:446 +msgid "Failed to connect to location service" +msgstr "Malsukcesis konekti al loka servo" + +#: src/mainWindow.js:511 +msgid "translator-credits" +msgstr "" +"Ryan LORTIE\n" +"Kristjan SCHMIDT\n" +"Matthew CHISHOLM\n" +"Daniel PUENTES\n" +"Nicolas MAIA\n" +"Baptiste DARTHENAY\n" +"Carmen Bianca BAKKER \n" +"Tirifto " + +#: src/mainWindow.js:514 +msgid "A map application for GNOME" +msgstr "Mapa aplikaĵo por GNOME" + +#: src/mainWindow.js:525 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Kopirajto © 2011 – 2019 Red Hat, Inc. kaj la kontribuintoj de GNOME Maps" + +#: src/mainWindow.js:545 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapdatumoj de %s kaj kontribuantoj" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:561 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapajn kahelojn provizas %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:590 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Serĉo povigita de %s per %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dosiertipo ne estas subtenata" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Malsukcesis malfermi la tavolon" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Malsukcesis malfermi la Geo-URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Malkorekta uzantonomo aŭ pasvorto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sukceso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Malbona peto" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekto ne trovita" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikto, iu alia ĵus redaktis tiun objekton" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "La objekto estis forigita" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vojo aŭ rilato referencas al neekzistantaj idoj" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nomo" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "La oficiala nomo. Tio ĉi kutime aperas sur signoj." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreso" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Retejo" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La oficiala retejo. Provo uzi la plej bazan formon de URL t.e. http://" +"example.com anstataŭ http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefona numero. Uzu la internacian formon, komencantan kun la signo “+”. " +"Observu lokajn privatecajn leĝojn, precipe por privataj telefonaj numeroj." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedio" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"La uzata formo devus inkluzivi lingvan kodon kaj la artikolan titolon, kiel " +"“eo:artikola titolo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horoj de malfermo" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vidi la ligon en la etikedo por helpo sur formo." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Loĝantaro" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudo" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Alteco (alto super mara nivelo) de punkto per metroj." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rulseĝa aliro" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Jes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limigita" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Indikita" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interreta aliro" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sendrata" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Drata" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalo" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religio" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaismo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budaismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaismo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristanismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuceismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ĝajnismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Pluraj religioj" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologio" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Ŝintoismo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaria Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voduismo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratuŝtrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Necesejoj" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Noto" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informo uzota por sciigi nememkompreneblajn informojn al aliaj mapistoj pri " +"elemento, intenco de ĝia aŭtoro, aŭ helpiloj por plia plibonigado." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Elekti tipon" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Farite" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sennoma loko" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Loĝantaro:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Alto:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horoj de malfermo:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interreta aliro:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religio:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Necesejoj:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rulseĝa aliro:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Malsukcesis analizi Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limigita" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "indikita" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Loko ne troviĝis en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL de OpenStreetMap ne estas valida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatoj en URL ne estas validaj" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL ne estas subtenata" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s ĝis %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ŝarĝante maperojn por presado" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vi rajtas ĉesigi presadon se tro daŭras" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ĉesigi presadon" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aldoni per loko" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Forigi per loko" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Renversi kurson" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aldoni %s al %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Malsukcesis malfermi la URI" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Malfermi per %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "malsukcesis ŝarĝi la dosieron" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Antaŭkalkulita tempo: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Kursojn provizas %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Alveturi je %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Ek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Promeni %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Alveni je %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Alveni" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montri promenajn instrukciojn" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Kaŝi promenajn instrukciojn" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ŝargi antaŭajn alternativojn" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ŝargi postajn alternativojn" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Neniu antaŭa alternativo trovita." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Neniu posta alternativo trovita." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-e-a de %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Neniuj horaraj datumoj trovitaj por ĉi tiu kurso." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Neniu provizanto trovita por ĉi tiu kurso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutoj" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d horo" +msgstr[1] "%d horoj" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d horo" +msgstr[1] "%d:%02d horoj" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tuttaga" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de sunleviĝo ĝis sunsubiro" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ĉiutaga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "publikaj ferioj" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "lernejaj ferioj" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ne malfermita" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drata" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalo" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servo" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nekonata" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Preciza" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mej" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Daŭrigi je %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Daŭrigi" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turni maldekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Turni maldekstren" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turni maldekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Turni maldekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turni maldekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Turni maldekstren akre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turni dekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Turni dekstren" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turni dekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Turni dekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turni dekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Turni dekstren akre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iru el la rondirejo per eliro %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iru el la rondirejo per eliro al %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Iru la rondirejon" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Uzu la lifton kaj eliru je %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Uzu la lifton" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Turni maldekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Turni maldekstren reen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Turniĝu dekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1233 +#| msgid "Make a rigth u-turn" +msgid "Make a right u-turn" +msgstr "Turni dekstren reen" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Kursa serĉado de OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Malfermi per alia aplikaĵo" + +#~ msgid "Press enter to search" +#~ msgstr "Premu la enigan klavon por serĉi" + +#~ msgid "Quit" +#~ msgstr "Ĉesi" + +#~ msgid "Load Map Layer" +#~ msgstr "Ŝarĝi mapan tavolon" + +#~ msgid "Open Layer" +#~ msgstr "Malfermi tavolon" + +#~ msgid "OK" +#~ msgstr "En ordo" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f me" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Landkodo: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Laste-sciita loko kaj ekzakto" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Laste-sciita loko (latitudo kaj longitudo en gradoj) kaj ekzakto (en " +#~ "metroj)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Priskribo de laste sciita loko de la uzanto." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ĉu la laste sciatan lokon agordis permane la uzanto" + +#~ msgid "I’m here!" +#~ msgstr "Mi estas ĉi tie!" + +#~ msgid "Satellite" +#~ msgstr "Satelito" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..8a90b5ba --- /dev/null +++ b/po/es.po @@ -0,0 +1,2154 @@ +# Spanish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# Daniel Mustieles , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 13:34+0200\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Spanish - Spain \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 40.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encuentre lugares por todo el mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas le ofrece un acceso rápido a mapas de todo el mundo. Le permite " +"encontrar lugares rápidamente buscando por ciudad o por calle, o buscar un " +"lugar para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa la base de datos colaborativa OpenStreetMap, hecha por cientos de " +"miles de personas de todo el mundo." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "El Proyecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una sencilla aplicación de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite mostrar su ubicación en el mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicación vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas de la última ubicación vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "El tipo de mapa que mostrar (callejero, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño de la ventana" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño de la ventana (anchura y altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición de la ventana" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición de la ventana (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ventana maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado maximizado de la ventana" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de búsqueda" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de búsqueda para búsquedas por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rutas visitadas recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidad del registro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidad de registro de Foursquare usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nombre de usuario de OpenStreetMap o cuenta de correo-e" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si el usuario ha iniciado sesión para editar los datos de " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para la ruta" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo nocturno" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "indica si la aplicación está en modo nocturno." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Usar cuadrículas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica si las cuadrículas aéreas se deben usar con un estilo híbrido (con " +"etiquetas)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidad" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publicar el Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publicar el Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Registrar" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Añadir destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta hasta aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "¿Qué hay aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar ubicación" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluir ruta y marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Elegir el tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Reducir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Conmutar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atajos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Salir" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reducir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Conmutar escalado" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Cambiar a vista de calle" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Cambiar a vista aérea" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir capa de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir capa de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicios de ubicación para encontrar su posición" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configuración de la ubicación" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo nocturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar cuenta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagen" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atajos del teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca de Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necesita una conexión a Internet activa para funcionar correctamente, " +"pero no se ha encontrado ninguna." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Compruebe la configuración de su conexión y de su proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cuenta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ayude a mejorar el mapa, usando una\n" +"cuenta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo-e" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contraseña" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Eso no ha funcionado. Inténtelo de nuevo o visite\n" +"OpenStreetMap para restablecer su contraseña." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El código de verificación no coincide, inténtelo de nuevo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduzca el código de verificación mostrado" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Su cuenta de OpenStreetMap está activada." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Cerrar sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Calle" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciudad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ninguno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Añadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Los cambios en los mapas serán visibles en todos los mapas que usen\n" +"datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recientemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Siguiente" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No se han encontrado resultados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ha ocurrido un error" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastre para cambiar el orden de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir ubicación" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Registrar…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir capa de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Conmutar estado visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta buscada por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itinerarios de las rutas para viajes públicos los proporciona\n" +"un servicio de terceros.\n" +"GNOME no puede garantizar la corrección de los itinerarios y los tiempos " +"mostrados.\n" +"Algunos proveedores pueden no incluir todos mos medios de transporte " +"disponibles,\n" +"ej. un proveedor nacional puede no incluir aerolíneas y un proveedor local " +"puede\n" +"no incluir trenes regionales.\n" +"Los nombres y las marcas mostradas se consideran marcas registradas cuando " +"sea aplicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar más resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar información y paradas intermedias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar información y paradas intermedias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Salir ahora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Salir en" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Llegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenes" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviones" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Compartir ubicación" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Añadir a la ruta nueva" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direcciones" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para añadir una ubicación." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falló al buscar la estructura de la cuadrícula en la carpeta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falló al analizar el documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan los atributos necesarios" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No se pudo encontrar el elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Una ruta a la estructura de carpetas locales de cuadrículas" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tamaño de cuadrícula para carpeta de cuadrículas locales" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostrar la versión del programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar la disponibilidad de la red" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ARCHIVO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccionar un lugar" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Foursquare. " +"Seleccione uno de la lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Registrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensaje opcional para registrarse en %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No se puede encontrar «%s» en la red social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede encontrar un lugar adecuado para registrarse en esta ubicación" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las credenciales han caducado. Abra las Cuentas en línea para iniciar sesión " +"y activar esta cuenta." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No se ha encontrado nada aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Se ha añadido la ubicación al mapa, tenga en cuenta que puede tardar un rato " +"antes de mostrarse en el mapa y en los resultados de búsqueda." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de archivos es de solo lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tiene permisos para guardar ahí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La carpeta no existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No se ha especificado un nombre de archivo" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No se puede exportar la vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ubicación actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada no válida" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error al analizar" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometría desconocida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Falló al solicitar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No se ha encontrado la ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Empezar" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos los archivos de capas" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Falló al conectar al servicio de ubicación" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Daniel Mustieles , 2013 - 2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas para GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. y los autores de Mapas de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos de mapas por %s y colaboradores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Cuadrículas de mapas proporcionadas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Búsqueda proporcionada por %s usando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Falló al abrir la capa" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "¿Quiere continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Va a abrir archivos con un total de %s MB. Esto puede tardar bastante tiempo " +"en cargar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipo de archivo no soportado" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Falló al abrir el GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nombre de usuario o contraseña no válidos" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Correcto" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Solicitud incorrecta" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objeto no encontrado" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguien acaba de modificar el objeto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Se ha eliminado el objeto" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La vía o la relación se refiere a hijos no existentes" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nombre" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "El nombre oficial. Esto es lo que normalmente aparece en las firmas." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Dirección" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Página web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Esto no es un URL válido. asegúrese de incluir http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La página web oficial. Pruebe a usar la forma más sencilla de URL, por " +"ejemplo http://ejemplo.com en lugar de of http://ejemplo.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use el formato internacional, empezando por el signo +. " +"Tenga en cuenta las leyes de privacidad locales, especialmente en el caso de " +"números privados." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correo-e" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Esto no es una dirección de correo válida. Asegúrese de no incluir el " +"prefijo «»mailto." + +#: src/osmEditDialog.js:161 +#| msgid "" +#| "Contact e-mail address for inquiries.Add only email addresses that are " +#| "intended to be publicly used." +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Dirección de correo de contacto para preguntas. Añada sólo las direcciones " +"de correo que quiera usar públicamente." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El formato usado debe incluir el código del idioma y el título del artículo, " +"similar a «es:Título del artículo»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horario de apertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Consulte el enlace en la etiqueta para obtener ayuda sobre el formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Población" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre el nivel del mar) de un punto, en metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acceso para sillas de ruedas" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acceso a Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Inalámbrica" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cableada" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servicio" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Para llevar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Sólo" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religión" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Varias religiones" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciología" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sijismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarismo universalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para notificar a otros mapeadores sobre información no " +"obvia sobre un elemento, un intento del autor de crearlo o pistas sobre " +"futuras mejoras." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccionar tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Hecho" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Lugar sin nombre" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falló al analizar el URI de Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisión" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número de teléfono" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ofrece para llevar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "No ofrece para llevar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Sólo ofrece para llevar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acceso público a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sin acceso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Red Wi-Fi pública" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acceso a Internet por cable" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordenadores disponibles para su uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Asistencia de Internet disponible" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sin baños disponibles" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Baños disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accesible para sillas de ruedas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accesibilidad limitada para sillas de ruedas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Sin acceso para sillas de ruedas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Diseñador para usuarios de sillas de ruedas" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s por debajo del nivel del mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "A nivel del mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religión:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar no encontrado en OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Las coordenadas del URL no son válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL no soportado" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando mapa para imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puede cancelar la impresión si esto tarda mucho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Cancelar la impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Añadir ubicación de la vía" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar ubicación de la vía" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Añadir %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falló al abrir el URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falló al cargar el archivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios proporcionados por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Empezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Llegar a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Llegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucciones del camino" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucciones del camino" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No hay alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No hay alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No hay datos en la tabla de tiempos para esta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No se ha encontrado un proveedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Todo el día" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Desde el amanecer hasta la puesta del sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Festivos" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacaciones escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "cerrado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconocida" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este complemento no soporta la última llegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continúe por %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continúe" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gire a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Gire a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gire levemente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Gire levemente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gire bruscamente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Gire bruscamente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gire a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Gire a la derecha" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gire levemente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Gire levemente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gire bruscamente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Gire bruscamente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "En la rotonda, coja la salida %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "En la rotonda, coja la salida hacia %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Entre en la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Coja el ascensor y salga en %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Coja el ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Dé la vuelta hacia la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Dé la vuelta hacia la izquierda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Dé la vuelta hacia la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Dé la vuelta hacia la derecha" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Configuración de privacidad del registro de Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Última configuración de privacidad de registro de Facebook usada. Los " +#~ "valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "También puede buscar por tipos de ubicaciones específicos como «Bares " +#~ "cerca de la Gran Vía, Madrid» u «Hoteles cerca de la Plaza Mayor, Madrid»." + +#~ msgid "Everyone" +#~ msgstr "Todos" + +#~ msgid "Friends of friends" +#~ msgstr "Amigos de amigos" + +#~ msgid "Just friends" +#~ msgstr "Solo amigos" + +#~ msgid "Just me" +#~ msgstr "Solo yo" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapas no puede encontrar el lugar con el que registrarse en Facebook. " +#~ "Seleccione uno de la lista." + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "El URL de OpenStreetMap no es válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Buscar una ruta" + +#~ msgid "Check in here" +#~ msgstr "Registrarse aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostrar más información" + +#~ msgid "Population:" +#~ msgstr "Población:" + +#~ msgid "Altitude:" +#~ msgstr "Altitud:" + +#~ msgid "Opening hours:" +#~ msgstr "Horario de apertura:" + +#~ msgid "Internet access:" +#~ msgstr "Acceso a Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Baño:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acceso para sillas de ruedas:" + +#~ msgid "Phone:" +#~ msgstr "Teléfono:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "wired" +#~ msgstr "cableada" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servicio" + +#~ msgid "Primary menu" +#~ msgstr "Menú primario" + +#~ msgid "Don’t have an account?" +#~ msgstr "¿No tiene una cuenta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Añadir destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta buscada por OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Abrir con otra aplicación" + +#~ msgid "Press enter to search" +#~ msgstr "Pulse Intro para buscar" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Salir" + +#~ msgid "OK" +#~ msgstr "Aceptar" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abrir capa de formas…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar capa de mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir capa" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pies" + +#~ msgid "Position not found" +#~ msgstr "Posición no encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código del país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Población: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acceso para sillas de ruedas: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falló al analizar el archivo GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Compartir" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última ubicación conocida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última ubicación conocida (latitud y longitud en grados) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción de la última ubicación conocida del usuario." + +#~ msgid "User set last known location" +#~ msgstr "Última ubicación conocida establecida por el usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si la última ubicación conocida la estableció el usuario " +#~ "manualmente." + +#~ msgid "I’m here!" +#~ msgstr "Yo estoy aquí" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "From" +#~ msgstr "Desde" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/et.po b/po/et.po new file mode 100644 index 00000000..13982e71 --- /dev/null +++ b/po/et.po @@ -0,0 +1,148 @@ +# Estonian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mattias Põldaru , 2013, +# Priit Laes , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-11 10:56+0000\n" +"PO-Revision-Date: 2013-09-20 10:20+0300\n" +"Last-Translator: Priit Laes \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaardirakendus võimaldab kiiret ligipääsu kaartidele üle terve maailma. " +"See võimaldab kiiresti leida otsitava koha kasutades linna- või tänavanime, või" +"määrata kohta sõbraga kokkusaamiseks." + +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" +"
  • Otsi riiki, regiooni, linna või tänavat.
  • Otsi erinevat liiki " +"asukohti nagu \"Pubs near Main Street, Boston\" või \"WiFi Access near " +"Alexanderplatz, Berlin\"
  • " + +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaardid kasutavad ühistööna valminud OpenStreetMap andmebaasi, millele on " +"kaasa aidanud tuhanded inimesed üle maailma." + +#. Translators: This is the program name. +msgid "Maps" +msgstr "Kaardid" + +msgid "A simple maps application" +msgstr "Lihtne kaardirakendus" + +msgid "Maps;" +msgstr "Kaardid;Kaart;" + +msgid "Window size" +msgstr "Akna suurus" + +msgid "Window size (width and height)." +msgstr "Akna suurus (laius ja kõrgus)." + +msgid "Window position" +msgstr "Akna asukoht" + +msgid "Window position (x and y)." +msgstr "Akna asukoht (x ja y)." + +msgid "Window maximized" +msgstr "Aken on maksimeeritud" + +msgid "Window maximized state" +msgstr "Akna maksimeerituse olek" + +msgid "Last known location and accuracy" +msgstr "Viimane teadaolev asukoht ja täpsus" + +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Viimane teadaolev asukoht (laius- ja pikkuskraadid) ning täpsus (meetrites)." + +msgid "Description of last known location" +msgstr "Viimase teadaoleva asukoha kirjeldus" + +msgid "Description of last known location of user." +msgstr "Kasutaja viimase teadaoleva asukoha kirjeldus." + +msgid "Maximum number of search results" +msgstr "Otsingutulemuste maksimaalne arv" + +msgid "Maximum number of search results from geocode search." +msgstr "Geokoodi otsingu tulemuste maksimaalne arv." + +msgid "User set last known location" +msgstr "Kasutaja määratud viimane teadaolev asukoht" + +msgid "Last known location was set manually by user." +msgstr "Kasutaja poolt käsitsi määratud viimane teadaolev asukoht." + +msgid "About" +msgstr "Programmist" + +msgid "Quit" +msgstr "Lõpeta" + +msgid "What's here?" +msgstr "Mis siin on?" + +msgid "I'm here!" +msgstr "Mina olen siin!" + +msgid "translator-credits" +msgstr "Mattias Põldaru, 2013,\nPriit Laes, 2013" + +msgid "A map application for GNOME" +msgstr "GNOME kaardirakendus" + +msgid "Street" +msgstr "Tänav" + +msgid "Satellite" +msgstr "Satelliit" + +#. Translators: Accuracy of user location information +msgid "Unknown" +msgstr "Teadmata" + +#. Translators: Accuracy of user location information +msgid "Exact" +msgstr "Täpne" + +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Asukoha täpsus: %s" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 00000000..d061c009 --- /dev/null +++ b/po/eu.po @@ -0,0 +1,2080 @@ +# Basque translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Iñaki Larrañaga Murgoitio , 2013, 2014, 2015, 2016, 2017. +# Asier Sarasua Garmendia , 2019, 2020, 2021. +# +msgid "" +msgstr "Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-18 10:00+0100\n" +"Last-Translator: Asier Sarasua Garmendia \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapak" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Bilatu lekuak munduan zehar" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Mapek mundu osoan zeharreko mapetarako atzipen azkarra eskaintzen dizu. Bilatzen ari zaren lekua modu azkar batean aurkitzen lagunduko dizu kalearen edo herriaren izena bilatuz, edo bilatu leku bat lagunekin aurkitzeko." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Mapak auzolanean eraikitako OpenStreetMap datu-basea darabil, mundu osoan zehar ehun eta milaka pertsonen artean sortutakoa" + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME proiektua" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapak" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Mapen aplikazio xume bat" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapak;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Zure kokalekua maparen gainean erakustea baimentzen du." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ikusitako azken kokalekua" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ikusitako azken kokalekuaren koordenatuak." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zooma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaren maila" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Mapa mota" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Bistaratuko den mapa mota (kalekoa, airekoa eta abar)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Leihoaren tamaina" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Leihoaren tamaina (zabalera eta altuera)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Leihoaren posizioa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Leihoaren posizioa (X eta Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Leihoa maximizatuta" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Leihoaren maximizazioaren egoera" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilaketaren emaitzen gehieneko kopurua" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilaketaren emaitzen gehieneko kopurua geokodifikazioaren bilaketatik." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Azken aldiko lekuen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Azken aldian bisitatutako lekuen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Azken aldiko ibilbideen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Azken aldian bisitatutako ibilbideen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-ren erregistroaren pribatutasunaren ezarpena" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "Foursquare-ren erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'public' (publikoa), 'followers' (jarraitzaileak) edo 'private' (pribatua)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-ren erregistroaren Facebook-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Facebook-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-ren erregistroaren Twitter-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Twitter-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-eko erabiltzaile-izena edo helbide elektronikoa" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "OpenStreetMap-eko datuak editatzeko erabiltzaileak sinatu duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Erabilitako azken garraio mota bidea egiteko" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Gaueko modua" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Aplikazioa gaueko moduan dagoen edo ez." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Erabili aireko lauza hibridoak" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Aireko lauzek estilo hibridoa (etiketekin) erabiliko duten ala ez." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Ikusgaitasuna" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Argitaratu Facebook-en" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Argitaratu Twitter-en" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Utzi" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Erregistratu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publikoa" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Pribatua" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ibilbidea hemendik" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Gehitu tarteko helmuga" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ibilbidea hona" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Zer dago hemen?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiatu kokalekua" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esportatu ikuspegia" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esportatu" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Txertatu ibilbidea eta markatzaileak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Aukeratu mapa mota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Txikiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Handiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Inprimatu ibilbidea" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Txandakatu gogokoak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Orokorra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Erakutsi lasterbideak" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Bilatu" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Irten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Maparen ikuspegia" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Handiagotu" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Txikiagotu" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Txandakatu eskala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Aldatu kaleen ikuspegira" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Aldatu aireko ikuspegira" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ireki formen geruza" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Erakutsi etiketak" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ireki formen geruza…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Aktibatu kokapen-zerbitzuak zure kokapena aurkitzeko" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Utzi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Kokapenaren ezarpenak" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gauko modua" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfiguratu OpenStreetMap-eko kontua" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esportatu irudi gisa" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Las_ter-teklak" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Mapak aplikazioari buruz" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapa lineaz kanpo dago!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapak interneteko konexio aktiboa behar du ongi funtzionatzeko, baina ez da bat ere aurkitu." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Egiaztatu konexioaren eta proxyaren ezarpenak." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-eko kontua" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Hasi saioa mapak editatzeko" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "Lagundu mapa hobetzen\n" +"OpenStreetMap-eko kontu bat erabiliz." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Posta elektronikoa" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasahitza" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Erregistratu" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Hasi saioa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "Ez du funtzionatzen. Saiatu berriro, edo bisitatu\n" +"OpenStreetMap zure pasahitza berrezartzeko." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Egiaztapen-kodea ez dator bat, saiatu berriro." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sartu goian erakutsitako egiaztapen-kodea" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Egiaztatu" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Saioa hasita" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Zure OpenStreetMap-eko kontua aktibo dago." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Amaitu saioa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Kalea" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Zenbakia" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta-kodea" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Hiria" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Mota" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Bat ere ez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Gehitu eremua" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Iruzkina" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "Mapen aldaketak ikusgai egongo dira OpenStreetMap-eko\n" +"datuak erabiltzen dituzten mapa guztietan." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Azken aldian erabilia" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Hurrengoa" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ez da emaitzarik aurkitu" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Errore bat gertatu da" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastatu ibilbidearen ordena aldatzeko" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ireki kokalekua" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiatu" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Bidali hona…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Eregistratu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ireki formen geruza" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ireki" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Txandakatu ikusgaitasuna" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ibilbidea GraphHopper-ek bilatuta" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "Ibilbide publikoen bideak hirugarrenek eskaintzen dituzte.\n" +"GNOMEk ezin du bermatu erakutsitako ibilbideen eta ordutegien zuzentasuna.\n" +"Kontuan izan zenbait hornitzailek ez dituztela garraio modu guztiak kontuan hartzen, adibidez nazio mailako hornitzaile batek beharbada ez ditu hegaldiak kontuan hartzen, eta hornitzaile lokal batek agian ez ditu eskualde mailako trenak erakusten.\n" +"Erakutsitako izenak eta markak erregistratutako marka gisa hartuko dira dagokienenean." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Erakutsi emaitza gehiago" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ezkutatu bitarteko puntuak eta informazioak" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Erakutsi bitarteko puntuak eta informazioak" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Irten orain" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Irten:" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Iritsi:" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Erakutsi" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusak" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranbia" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenak" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metroak" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferryak" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Hegazkinak" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partekatu kokalekua" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Gehitu ibilbide berriari" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Norabideak" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markatu gogoko gisa" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Handiagotu zooma kokalekua gehitzeko!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Handiagotu" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Huts egin du lauzaren egitura direktorioan bilatzean" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Huts egin du XML dokumentua aztertzean" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Beharrezko atributuak falta dira" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ezin izan da OSM elementua aurkitu" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Lokaleko lauzen direktorioaren egituraren bide-izena" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Lokaleko lauzen direktorioaren lauza-tamaina" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Erakutsi programaren bertsioa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ezikusi egin sarearen erabilgarritasunari" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FITXATEGIA…|URIA]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Hautatu kontua" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Kargatzen" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Hautatu lekua" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Foursquare-rekin erregistratzeko Hautatu bat zerrendatik." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s(e)n erregistratzen" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Idatzi aukerako mezua '%s'(e)n erregistratzeko." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ezin da “%s” aurkitu zerbitzu sozialean" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ezin da leku egokirik aurkitu kokaleku honetan erregistratzeko" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "Kredentzialak iraungi egin dira. Ireki 'Lineako kontuak' kontu hau sinatzeko eta gaitzeko" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ez da ezer aurkitu." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "Kokalekua mapari gehitu zaio. Jakin ezazu denbora bat igaroko dela mapetan eta bilaketen emaitzetan erakutsi aurretik." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapak hemen: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Fitxategi-sistema irakurtzeko soilik da" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ez duzu baimenik han gordetzeko" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorioa ez da existitzen" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ez da fitxategi-izenik zehaztu" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ezin da ikuspegia esportatu" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Uneko kokalekua" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "baliogabeko koordenatua" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "analisi-errorea" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria ezezaguna" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Huts egin du ibilbidearen eskaerak." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ez da ibilbiderik aurkitu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Hasi!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Geruzen fitxategi guztiak" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Huts egin du kokapen-zerbitzuarekin konektatzean" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "translator-credits" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "GNOMEren mapen aplikazioa" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. eta The GNOME Maps egileak" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Maparen datuen sortzaileak: %s eta laguntzaileak" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa-lauzen hornitzaileak: %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s motorrak hornitutako bilaketa %s bidez" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Huts egin du geruza irekitzean" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Jarraitu nahi duzu?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Guztira %s MB dituzten fitxategiak irekitzera zoaz. Horrek denbora bat beharko du" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Fitxategi mota ez dago onartuta" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Huts egin du GeoURIa irekitzean" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Ongi burutu da" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Eskaera okerra" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objektua ez da aurkitu" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Gatazka, beste norbaitek objektua aldatu du" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektua ezabatua izan da" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Bideak edo erlazioak ez dauden umeei egiten diote erreferentzia" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Izena" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Izen ofiziala. Saioa hastean agertu ohi izaten da." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Helbidea" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webgunea" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "URLa ez da baliozkoa. Ziurtatu http:// edo https:// gehitzen diozula." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "Webgune ofiziala. Saiatu URL baten oinarrizko modua erabiltzen. Adib. http://example.com erabili http://example.com/index.html URLaren ordez." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefonoa" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "Telefono zenbakia. Erabili nazioarteko formatua, + ikurrarekin hasiz. Kontutan eduki pribatutasunari buruzko bertako legeak, telefono zenbaki pribatuei dagokiena bereziki." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Posta elektronikoa" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "Hau ez da baliozko posta elektronikoko helbidea. Ziurtatu ez duzula mailto: protokolo-aurrizkia sartu." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "Kontakturako helbide elektronikoak, galderetarako. Gehitu publikoki erabiltzeko pentsatuta dauden helbideak soilik." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Erabilitako formatuak hizkuntzaren kodea eta artikuluaren titulua ”eu:Artikuluaren titulua\" gisa eduki beharko lituzke." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Irekiera orduak" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Ikusi esteka etiketan formatua ematean laguntzeko." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populazioa" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitudea" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Puntu baten elebazioa (itsas-mailaren gaineko altuera) metrotan." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Gurpil-aulkien irisgarritasuna" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Bai" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ez" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Mugatua" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Izendatuta" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Interneterako sarbidea" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wifia" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Hariduna" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminala" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Zerbitzua" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Eramatekoa" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Soilik" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Erlijioa" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismoa" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismoa" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismoa" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristautasuna" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfuzianismoa" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduismoa" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismoa" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaismoa" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islama" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Hainbat erlijio" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismoa" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismoa" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Zientziologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismoa" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismoa" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismoa" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarismo unibertsalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismoa" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianismoa" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Komunak" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Oharra" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Mapen beste sortzaileei elementu bati buruzko hain garbia ez den informazioari buruz, egilearen asmoa hura sortzean edo argibideak hobekuntza gehiagorako jakinarazteko informazioa." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Hautatu mota" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Eginda" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Izenik gabeko tokia" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Huts egin du Geo URIa aztertzean" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordenatuak" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Zehaztasuna" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Zehaztasuna: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefono-zenbakia" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Eramateko janaria eskaintzen du" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ez du eskaintzen eramateko janaria" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Eramateko janaria soilik eskaintzen du" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Interneteko sarbide publikoa" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ez dago interneteko sarbiderik" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wifi publikoa" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Interneteko haridun sarbidea" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Erabilgarri dauden ordenagailuak" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internet laguntza erabilgarri" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Ez dago komunik erabilgarri" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Komunak erabilgarri" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Gurpil-aulkientzat irisgarri" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Gurpil-aulkien irisgarritasun mugatua" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ez da gurpil-aulkientzat irisgarri" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Gurpil-aulkien erabiltzaileentzako prestatua" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s itsas mailaren azpitik" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Itsas mailan" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Erlijioa:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap zerbitzuan aurkitu ez den tokia" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URLaren koordenatuak ez dira baliozkoak" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URLa ez da onartzen" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "“%s”(e)ndik “%s”(e)ra" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Mapen lauzak inprimatzeko kargatzen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Inprimatzea bertan behera utz dezakezu denbora gehiegi badarama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Utzi inprimatzea bertan behera" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Gehitu bidearen kokalekua" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Kendu bidearen kokalekua" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Alderantzikatu ibilbidea" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Gehitu %s honi: %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Huts egin du URIa irekitzean" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Ireki honekin: %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "huts egin du fitxategia kargatzean" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Aurreikusitako denbora: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ibilbideen hornitzailea: %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Hasiera: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Hasiera" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Oinez: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Iritsi: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Iritsi" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Erakutsi oinezkoen instrukzioak" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ezkutatu oinezkoen instrukzioak" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Kargatu alternatibak lehenago" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Kargatu alternatibak geroago" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ez da aurreragoko ordezkorik aurkitu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ez da ondorengoko ordezkorik aurkitu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ez da ordutegiaren daturik aurkitu ibilbide honetan." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ez da hornitzailerik aurkitu ibilbide honetarako." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "minutu %s" +msgstr[1] "%s minutu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "ordu %s" +msgstr[1] "%s ordu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ordu" +msgstr[1] "%s:%s ordu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Egun osoan" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Egunsentitik ilunabarrera" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Egunero" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Jaiegunak" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Eskolako jaiegunak" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ez ireki" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Ezezaguna" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Zehatza" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Plugin honek ez du onartzen azken iritsiera" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Jarraitu hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Jarraitu" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Biratu ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Biratu ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Biratu pixka bat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Biratu pixka bat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Biratu erabat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Biratu erabat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Biratu eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Biratu eskuinera" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Biratu pixka bat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Biratu pixka bat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Biratu erabat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Biratu erabat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Biribilgunean, hartu %s irteera" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Biribilgunean, hartu %s helbidera joateko irteera" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Hartu biribilgunea" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Hartu igogailua eta utzi hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Hartu igogailua" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Aldatu noranzkoa ezkerrerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Aldatu noranzkoa ezkerrerantz" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Aldatu noranzkoa eskuinerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Aldatu noranzkoa eskuinerantz" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Bilatu kokaleku mota zehatz bat, adibidez 'Diru-truke bulegoa, Bilbo' edo " +#~ "'Hotelak kale nagusia, Bilbo'" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook-en erregistroaren pribatutasunaren ezarpena" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Facebook-en erregistroaren pribatutasunaren erabilitako azken ezarpena. " +#~ "Balio erabilgarriak: 'EVERYONE' (edonor), 'FRIENDS_OF_FRIENDS' (lagunen " +#~ "lagunak), 'ALL_FRIENDS' (lagun guztiak) edo 'SELF' (norbera)." + +#~ msgid "Everyone" +#~ msgstr "Edonor" + +#~ msgid "Friends of friends" +#~ msgstr "Lagunen lagunak" + +#~ msgid "Just friends" +#~ msgstr "Lagunak soilik" + +#~ msgid "Just me" +#~ msgstr "Nik bakarrik" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapak ezin du lekua aurkitu Facebook-ekin erregistratzeko. Hautatu bat " +#~ "zerrendatik." + +#~ msgid "Find a Route" +#~ msgstr "Bilatu ibilbide bat" + +#~ msgid "Check in here" +#~ msgstr "Erregistratu hemen" + +#~ msgid "Show more information" +#~ msgstr "Erakutsi informazio gehiago" + +#~ msgid "Population:" +#~ msgstr "Populazioa:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudea:" + +#~ msgid "Opening hours:" +#~ msgstr "Irekiera orduak:" + +#~ msgid "Internet access:" +#~ msgstr "Interneterako sarbidea:" + +#~ msgid "Toilets:" +#~ msgstr "Komunak:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Gurpil-aulkien irisgarritasuna:" + +#~ msgid "Phone:" +#~ msgstr "Telefonoa:" + +#~ msgid "yes" +#~ msgstr "bai" + +#~ msgid "limited" +#~ msgstr "mugatua" + +#~ msgid "no" +#~ msgstr "ez" + +#~ msgid "designated" +#~ msgstr "zehaztutakoa" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URLa ez da baliozkoa" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "hariduna" + +#~ msgid "terminal" +#~ msgstr "terminala" + +#~ msgid "service" +#~ msgstr "zerbitzua" + +#~ msgid "Primary menu" +#~ msgstr "Menu nagusia" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ez daukazu konturik?" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Gehitu helmuga" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "ibilbidea OpenTripPlanner-ek bilatuta" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Ireki beste aplikazio batekin" + +#~ msgid "Press enter to search" +#~ msgstr "Sakatu Sartu bilatzeko" + +#~ msgid "Quit" +#~ msgstr "Irten" + +#~ msgid "Load Map Layer" +#~ msgstr "Kargatu maparen geruza" + +#~ msgid "Open Layer" +#~ msgstr "Ireki geruza" + +#~ msgid "OK" +#~ msgstr "Ados" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f oin" + +#~ msgid "Country code: %s" +#~ msgstr "Estatuaren kodea: %s" + +#~ msgid "_Share" +#~ msgstr "_Partekatu" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Azken kokaleku ezaguna eta zehaztasuna" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Azken kokaleku ezaguna (latitudea eta longitudea gradutan) eta " +#~ "zehaztasuna (metrotan)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Erabiltzailearen azken kokaleku ezagunaren azalpena." + +#~ msgid "User set last known location" +#~ msgstr "Erabiltzaileak ezarritako azken kokaleku ezaguna" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Azken kokaleku ezaguna erabiltzaileak eskuz ezarri zuen edo ez." + +#~ msgid "I’m here!" +#~ msgstr "Hemen nago!" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "Nora" + +#~ msgid "From" +#~ msgstr "Nondik" + +#~ msgid "Satellite" +#~ msgstr "Satelitea" + +#~ msgid " km²" +#~ msgstr " km²" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 00000000..9105258a --- /dev/null +++ b/po/fa.po @@ -0,0 +1,2068 @@ +# Persian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Arash Mousavi , 2013-2016. +# Danial Behzadi , 2014, 2017-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-01 14:56+0430\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "نقشه‌های گنوم" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "یافتن مکان‌ها در هر جایی از جهان" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, or " +"locate a place to meet a friend." +msgstr "" +"نقشه‌ها دسترسی سریعی به نقشه‌ها در تمام جهان را می‌دهد. این برنامه می‌گذارد با جست‌وجو " +"برای یک شهر یا خیابان، مکانی را که به دنبالشید یافته یا مکانی را برای قرار مشخّص " +"کنید." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands " +"of people across the globe." +msgstr "" +"نقشه‌ها از پایگاه دادهٔ مشارکتی OpenStreetMap استفاده می‌کند که به دست صدها هزار نفر " +"در سراسر جهان درست شده است." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "پروژهٔ گنوم" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 src/application.js:94 +#: src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "نقشه‌ها" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "یک برنامهٔ ساده نقشه" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "نقشه;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "اجازهٔ نمایش موقعیتتان روی نقشه." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "آخرین موقعیت دیده شده" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "مختصات آخرین موقعیت سر زده." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "سطح بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "گونهٔ نقشه" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "گونهٔ نمایشی نقشه (خیابانی، هوایی و…)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "اندازهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "اندازهٔ پنجره (پهنا و بلندا)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "موقعیت پنجره" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "موقعیت پنجره (x و y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "پنجره بیشینه شد" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "وضعیت بیشینهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "بیشینهٔ تعداد نتایج جست‌وجو" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "بیشینهٔ تعداد نتایج جست‌وجو از طریق جست‌وجوی کد جغرافیایی." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "تعداد مکان‌های اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "تعداد مکان‌های اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "تعداد مسیرهای اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "تعداد مسیرهای اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فوراسکور" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, " +"followers or private." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فوراسکور. مقادیر مجاز عبارتند از: " +"public، followers یا private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "اعلام حضور در فوراسکور و انتشار در فیس‌بوک" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک فرسته در حساب فیس‌بوک " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "اعلام حضور فوراسکور و انتشار در توییتر" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک توییت در حساب توییتر " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "نام‌کاربری یا نشانی رایانامهٔ OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "مشخّص می‌کند که آیا کاربر برای ویرایش داده‌های OpenStreetMap وارد شده یا نه." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "آخرین گونهٔ حمل‌ونقل برای مسیریابی" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "حالت شب" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "این که برنامه در حالت شب است یا نه." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "استفاده از کاشی‌های هوایی پیوندی" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "این که کاشی‌های هوایی باید از سبک پیوندی (با برچسب‌ها) استفاده کنند یا نه." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "نمایانی" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "فرستادن به فیس‌بوک" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "فرستادن به توییتر" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_لغو" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "اعلام _حضور" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "عمومی" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "پیروان" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "خصوصی" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "مسیر از این‌جا" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "افزودن مقصد میانی" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "مسیر به این‌جا" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "این‌جا چیست؟" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "رونوشت موقعیت" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "نمای برون‌ریزی" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_برون‌ریزی" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "شامل مسیر و علائم شدن" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "گزینش گونهٔ نقشه" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "بزرگنمایی به خارج" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "چاپ مسیر" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "تغییر وضعیت برگزیده‌ها" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "عمومی" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "نمایش میان‌برها" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "جست‌وجو" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "خروج" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "نمای نقشه" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بزرگ‌نمایی به خارج" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "تغییر وضعیت مقیاس" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "تعویض به نمای خیابانی" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "تعویض به نمای هوایی" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "نمایش برچسب‌ها" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "گشودن لایهٔ شکل…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "روشن کردن خدمات مکانی برای یافتن موقعیتتان" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "لغو" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "تنظیمات موقعیت" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "حالت شب" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "برپاسازی حساب OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "برون‌ریزی به عنوان عکس" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "میان‌برهای _صفحه‌کلید" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "دربارهٔ نقشه‌ها" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "نقشه‌ها برون‌خط است!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t be " +"found." +msgstr "نقشه‌ها برای عملکرد صحیح نیاز به اینترنت دارد." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "تنظیمات پیشکار و اتّصالتان را بررسی کنید." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "حساب OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "ورود به ویرایش نقشه‌ها" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"با استفاده از یک حساب OpenStreetMap\n" +"به گسترش نقشه کمک کنید." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "رایانامه" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "گذرواژه" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ثبت‌نام" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ورود" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap " +"to reset your password." +msgstr "" +"متأسّفانه تأثیری نداشت. لطفا دوباره تلاش کرده یا برای\n" +"باز نشانی گذرواژه‌تان به OpenStreetMap سر بزنید." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "کد تأیید مطابق نبود، لطفاً دوباره بیازمایید." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "کد تأیید بالا را وارد کنید" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "تأیید" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "وارد شده" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "حساب OpenStreetMapتان فعّال است." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "خروج" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "خیابان" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "پلاک خانه" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "کد پستی" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "شهر" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "گونه" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "هیچ‌کدام" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "افزودن زمینه" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "توضیح" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"تغییرات نقشه در تمام نقشه‌هایی که از داده‌های\n" +"اوپن‌استریت‌مپ استفاده می‌کنند قابل مشاهده است." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "به‌تازگی استفاده شده" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "بعدی" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "هیچ نتیجه‌ای پیدا نشد" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "خطایی رخ داد" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "برای تغییر ترتیب مسیر بکشید" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "رونوشت" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "فرستادن به…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "اعلام حضور…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_گشودن" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "تغییر وضعیت نمایانی" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "جست‌وجوی مسیر به دست GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسیریابی برنامهٔ سفر برای حمل‌ونقل عمومی به دست خدمات ثالث فراهم شده است.\n" +"گنوم نمی‌تواند درستی برنامهٔ سفر و زمان‌بندی‌های نمایش داده‌شده را تصمین کند.\n" +"به خاطر داشته باشید که ممکن است برخی فراهم‌کنندگان، تمام حالت‌های موجود برای\n" +"حمل‌ونقل را نداشته باشند. مثلاً ممکن است یک فراهم‌کنندهٔ ملّی، خطوط هوایی را نداشته\n" +"باشد و یک فراهم‌کنندهٔ محلّی می‌تواند قطارهای منطقه‌ای را نشان ندهد.\n" +"نام‌ها و برندهای نمایش‌داده‌شده باید هنگام امکان به عنوان علایم تجاری در نظر گرفته " +"شوند." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "نمایش نتایج بیش‌تر" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "نهفتن اطّلاعات و توقّف‌های میانی" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "نمایش اطّلاعات و توقّف‌های میانی" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "اکنون خارج شوید" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "شروع حرکت از" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "رسیدن به مقصد از" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "نمایش" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "اتوبوس‌ها" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ترامواها" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "قطارها" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "مترو" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "قایق‌ها" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "هواپیماها" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "هم‌رسانی موقعیت" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "افزودن به مسیر جدید" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "مسیرها" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "علامت‌گذاری به عنوان برگزیده" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "برای افزودن موقعیت، بزرگ‌نمایی کنید!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "بزرگ‌نمایی به داخل" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "شکست در یافتن ساختار کاشی در شاخه" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "شکست در تجزیهٔ سند XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ویژگی‌های لازم وجود ندارند" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "ناتوان در یافتن عنصر OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "مسیری به ساختار شاخهٔ کاشی‌های محلّی" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "اندازهٔ شاخهٔ کاشی‌های محلّی" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "نمایش نگارش برنامه" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "نادیده گرفتن موجود بودن شبکه" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "گزینش یک حساب" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "در حال بار کردن" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "گزینش یک موقعیت" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فوراسکور بیابد. لطفاً موقعیتی را از " +"فهرست برگزینید." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "اعلام حضور در %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "نوشتن اختیاری پیامی برای اعلام حضور در %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "نمی‌توان «%s» را در خدمت اجتماعی یافت" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "نمی‌توان مکانی مناسب برای اعلام حضور در این موقعیت یافت" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable this " +"account" +msgstr "" +"اعتبارنامه‌ها منقضی شده‌اند. لطفاً برای ورود و به کار انداختن این حساب، حساب‌های برخط " +"را بگشایید" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "این‌جا چیزی پیدا نشد!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows on " +"the map and in search results." +msgstr "" +"موقعیت به نقشه اضافه شد. خواستان باشد که نمایشش در نقشه و نتایج جست‌وجو، ممکن است " +"کمی طول بکشد." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "نقشه‌ها در %If، %If.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "سامانه‌پرونده فقط-خواندنی است" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "برای ذخیره در آن‌جا دسترسی ندارید" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "شاخه وجود ندارد" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "نامی برای پرونده مشخّص نشده" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ناتوان در برون‌ریزی نما" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "موقعیت کنونی" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "مختصات نامعتبر" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "خطای تجزیه" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "هندسهٔ ناشناخته" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "درخواست مسیر شکست خورد." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "هیچ مسیری پیدا نشد." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "شروع!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "تمام پرونده‌های لایه" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "شکست در اتّصال به خدمت مکانی" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"دانیال بهزادی \n" +"آرش موسوی " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "یک برنامهٔ نقشه برای گنوم" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "حق رونوشت © ۲۰۱۱ - ۲۰۲۱ – شرکت ردهت و نگارندگان نقشه‌های گنوم" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "دادهّای نقشه به دست %s و مشارکت‌کنندگان" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "کاشی‌های نقشه به دست %s فراهم شده" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "جست‌وجو به دست %s با استفاده از %s فراهم شده" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "شکست در گشودن لایه" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "می‌خواهید ادامه دهید؟" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some time " +"to load" +msgstr "در حال گشودن پرونده‌ای با حجم کل %s م‌ب هستید. بار شدنش ممکن است کمی طول بکشد" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "گونهٔ پرونده پشتیبانی نمی‌شود" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "شکست در گشودن نشانی جغرافیایی" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "گذرواژه یا نام‌کاربری نادرست" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "موفّقیت" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "درخواست بد" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "شی پیدا نشد" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "تداخل، گسی دیگر به تازگی شی را تغییر داده" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "شی پاک شد" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "راه یا ارتباط به فرزندی ناموجود اشاره می‌کند" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "نام" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "نام رسمی. معمولاً نامیست که روی تابلوها نوشته." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "نشانی" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "پایگاه وب" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "نشنی اینترنتی معتبر نیست. مطمئن شوید دارای ‪http://‬ یا ‪https://‬ است." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example." +"com instead of http://example.com/index.html." +msgstr "" +"پایگاه وب رسمی. سعی کنید از ساده‌ترین شکل آدرس استفاده کنید مثلا http://example." +"com به جای http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "تلفن" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of " +"local privacy laws, especially for private phone numbers." +msgstr "" +"شماره تلفن. از قالب بین‌المللی که با + شروع می‌شود اشتفاده کنید. لطفاً قوانین " +"محرمانگی محلّی را در نظر داشته باشید، به خصوص برای شماره‌های تلفن خصوصی." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "رایانامه" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: protocol " +"prefix." +msgstr "نشانی اینترنتی معتبر نیست. مطمئن شوید دارای پیشوند شیوه‌نامهٔ ‪mailto:‬ نیست." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are intended " +"to be publicly used." +msgstr "" +"نشانی رایانامهٔ تمایش برای پرسش‌ها. تنها نشانی‌های رایانامه‌ای را بیفزایید که برای " +"استفادهٔ عمومی در نظر گرفته شده‌اند." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "ویکی‌پدیا" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like “en:" +"Article title”." +msgstr "" +"قالب استفاده شده باید شامل کد زبان و عنوان مقاله باید مثل «en:Article title» باشد." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "ساعت‌های کار" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "پیوند روی برچسب را برای راهنمایی قالب ببینید." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "جمعیت" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "بلندی" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "بلندی (فاصله از سطح دریا) یک نقطه به متر." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "دسترسی صندلی چرخ‌دار" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "بله" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "خیر" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "محدود" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "تعیین شده" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "دسترسی اینترنتی" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "وای‌فای" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "سیمی" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "پایانه" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "خدمت" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "بیرون‌بردنی" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "فقط" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "دین" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "جانگرایی" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "بهایی" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "بوداییسم" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "کایوداییسم" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "مسیحیت" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "کنفسیوسیسم" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "هندوییسم" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "برهما‌بوداییسم" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "یهودیت" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "اسلام" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "دین‌های مختلف" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "پگانیسم" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "پاستاپرستی" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "علمگرایی" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "شینتو" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "سیک" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "روحگرایی" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "تائوییسم" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "جهانگرایی یکتاپرست" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "وودو" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "یزیدی" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "زرتشتی" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "دستشویی‌ها" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "نکته" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about an " +"element, the author’s intent when creating it, or hints for further improvement." +msgstr "" +"اطّلاعات برای آگاه کردن دیگر نقشه‌کش‌ها دربارهٔ اطّلاعات نابدیهی دربارهٔ یک عنصر، قصد " +"نگارنده هنگام ایجادش یا راهنمایی برای بهبودهای بعدی." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "گزینش گونه" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "انجام شد" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "مکان بی‌نام" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "شکست در پردازش نشانی جغرافیایی" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "مختصات" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "دقّت" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "دقّت: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "شماره تلفن" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "ارائه بیرون بردنی" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "بدون ارائه بیرون بردنی" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "فقط ارائه بیرون‌بردنی" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "دسترسی عمومی به اینترنت" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "بدون دسترسی به اینترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "وای‌فای عمومی" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "دسترسی سیمی به اینترنت" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "رایانه‌های موجود برای استفاده" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "همیار اینترنت در دسترس" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "دستشویی در دسترس نیست" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "دستشویی در دسترس" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "قابل دسترسی با صندلی چرخ‌دار" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "قابلیت دسترسی محدود با صندلی چرخ‌دار" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "بدون قابلیت دسترسی با صندلی چرخ‌دار" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "مخصوص استفاده‌کنندگان از صندلی چرخ‌دار" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s زیر سطح دریا" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "در سطح دریا" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "دین:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "مکان در اوپن استریت مپ پیدا نشد" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "مختصات نشانی نامعتبر" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "نشانی پشتیبانی نمی‌شود" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "از %s تا %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "در حال بار کردن کاشی‌های نقشه برای چاپ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "اگر خیلی طول کشید، می‌توانید چاپ را خاتمه دهید" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "خاتمهٔ چاپ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "افزودن از راه موقعیت" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "برداشتن از راه موقعیت" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "مسیر برعکس" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "افزودن %s به %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "شکست در گشودن نشانی" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "گشودن با %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "شکست در بارگیری پرونده" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "زمان تخمینی: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "برنامه سفر فراهم شده به دست %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "شروع در %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "شروع" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s قدم بزنید" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "رسیدن به مقصد در %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "رسیدن" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "نمایش دستور کار قدم زدن" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "نهفتن دستور کار قدم زدن" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "بار کردن جایگزین‌های قدیمی‌تر" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "بار کردن جایگزین‌های جدیدتر" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "جایگزین‌های قدیمی‌تری پیدا نشدند." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "جایگزین‌های جدیدتری پیدا نشدند." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %Oe" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "برای این مسیر هیچ دادهٔ جدول زمانی‌ای پیدا نشد." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "برای این مسیر هیچ فراهم کننده‌ای پیدا نشد." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s دقیقه" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ساعت" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ساعت" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "حدود ساعت" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "از سپیده‌دم تا غروب" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "هر روز" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "تعطیلات عمومی" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "تعطیلات مدرسه" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "باز نیست" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "ناشناخته" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "دقیقاً" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s س" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s س %s د" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s د" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s ث" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s ک‌م" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s ما" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s پا" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "این افزایه، جدیدترین زمان حضور را پشتیبانی نمی‌کند" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "در %s ادامه دهید" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "ادامه" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "در %s به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "در %s آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "در %s تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "در %s به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "در %s آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "در %s تند به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "تند به رایت بپیچید" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "در میدان از %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "در میدان به %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "وارد میدان شوید" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "وارد آسانسور شده و در %s حارج شوید" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "وارد آسانسور شوید" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "به %s گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "به %s گردش به راست کنید" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "گردش به راست کنید" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near Main " +#~ "Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "حتا می‌توانید گونه‌های خاصی از موقعیت‌ها را، مثل «Pubs near Main Street, Boston» " +#~ "یا «WiFi Access near Alexanderplatz, Berlin» جست‌وجو کنید." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "تنظیمات محرمانگی اعلام حضور فیس‌بوک" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, " +#~ "FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فیس‌بوک. مقادیر مجاز عبارتند از: " +#~ "EVERYONE، FRIENDS_OF_FRIENDS، ALL_FRIENDS و SELF." + +#~ msgid "Everyone" +#~ msgstr "همه" + +#~ msgid "Friends of friends" +#~ msgstr "دوستانِ دوستان" + +#~ msgid "Just friends" +#~ msgstr "فقط دوستان" + +#~ msgid "Just me" +#~ msgstr "فقط خودم" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select one " +#~ "from this list." +#~ msgstr "" +#~ "نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فیس‌بوک بیابد. لطفاً موقعیتی را از " +#~ "فهرست برگزینید." + +#~ msgid "Find a Route" +#~ msgstr "یافتن یک مسیر" + +#~ msgid "Check in here" +#~ msgstr "اعلام حضور در این‌جا" + +#~ msgid "Show more information" +#~ msgstr "نمایش اطّلاعات بیش‌تر" + +#~ msgid "Population:" +#~ msgstr "جمعیت:" + +#~ msgid "Altitude:" +#~ msgstr "بلندی:" + +#~ msgid "Opening hours:" +#~ msgstr "ساعت‌های کار:" + +#~ msgid "Internet access:" +#~ msgstr "دسترسی اینترنتی:" + +#~ msgid "Toilets:" +#~ msgstr "دستشویی‌ها:" + +#~ msgid "Wheelchair access:" +#~ msgstr "دسترسی صندلی چرخ‌دار:" + +#~ msgid "Phone:" +#~ msgstr "تلفن:" + +#~ msgid "yes" +#~ msgstr "بله" + +#~ msgid "limited" +#~ msgstr "محدود" + +#~ msgid "no" +#~ msgstr "خیر" + +#~ msgid "designated" +#~ msgstr "تعیین شده" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "نشانی OpenStreetMap نامعتبر است" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "سیمی" + +#~ msgid "terminal" +#~ msgstr "پایانه" + +#~ msgid "service" +#~ msgstr "خدمت" + +#~ msgid "Don’t have an account?" +#~ msgstr "حسابی ندارید؟" + +#~ msgid "%f h" +#~ msgstr "%If ساعت" + +#~ msgid "%f min" +#~ msgstr "%If دقیقه" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "افزودن مقصد" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "جست‌وجوی مسیر به دست OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "خروج" + +#~ msgid "Load Map Layer" +#~ msgstr "بار کردن لایه نقشه" + +#~ msgid "Open with another application" +#~ msgstr "گشودن با برنامه‌ای دیگر" + +#~ msgid "Press enter to search" +#~ msgstr "برای جست‌وجو دکمه Enter را فشار دهید" + +#~ msgid "OK" +#~ msgstr "تایید" + +#~ msgid "%f km" +#~ msgstr "%If کیلومتر" + +#~ msgid "%f m" +#~ msgstr "%If متر" + +#~ msgid "%f mi" +#~ msgstr "%If مایل" + +#~ msgid "%f ft" +#~ msgstr "%If فوت" + +#~ msgid "Country code: %s" +#~ msgstr "کد کشور: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "آخرین مکان و دقت شناخته شده" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "آخرین مکان شناخته شده (عرض و طول جغرافیایی به درجه) و دقت (به متر)" + +#~ msgid "Description of last known location of user." +#~ msgstr "توضیحات آخرین مکان شناخته شده کاربر." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "این که آخرین مکان شناخته شده به صورت دستی توسط کاربر تنظیم شده یا نه." + +#~ msgid "I’m here!" +#~ msgstr "من این‌جا هستم!" + +#~ msgid "Satellite" +#~ msgstr "ماهواره" + +#~ msgid " km²" +#~ msgstr "کیلومتر مربع" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..e5bc7574 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,2117 @@ +# Finnish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jiri Grönroos , 2013, 2014, 2015, 2016, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-26 12:34+0300\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: suomi \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnomen kartat" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Löydä sijainteja ympäri maailman" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartat mahdollistaa maailmanlaajuisen karttatiedon käytön nopeasti. Voit " +"paikallistaa haluamasi paikan etsimällä vaikkapa kaupunkia tai katua." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartat hyödyntää tuhansien ihmisten yhdessä luomaa OpenStreetMap-tietokantaa." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Gnome-projekti" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kartat" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Yksinkertainen karttasovellus" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kartta;Kartat;Reitit;Reitti;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Sallii sijaintisi näytettävän kartalla." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "viimeksi katsottu sijainti" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Viimeksi katsotun sijainnin koordinaatit." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaustaso" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartan tyyppi" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Näytettävän kartan tyyppi (katu, ilma jne.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ikkunan koko" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ikkunan koko (leveys ja korkeus)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ikkunan sijainti" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ikkunan sijainti (x ja y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ikkuna suurennettu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Ikkunan suurennuksen tila" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Hakutulosten enimmäismäärä" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode-haun tulosten enimmäismäärä." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Äskettäisten sijaintien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Äskettäin käytyjen sijaintin varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Äskettäisten reittien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Äskettäin käytyjen reittien varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-paikkakirjautumisen yksityisyysasetus" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Viimeisin käytetty Foursquare-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: public, followers tai private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Facebookiin" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen viestinä " +"Foursquare-tiliin liitetylle Facebook-tilille." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Twitteriin" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen twiittinä " +"Foursquare-tiliin liitetylle Twitter-tilille." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-käyttäjätunnus tai -sähköposti" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Ilmaisee onko käyttäjä kirjautunut muokatakseen OpenStreetMap-tietoja." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Reitityksessä viimeksi käytetty matkatapa" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Yötila" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Onko sovellus yötilassa vai ei." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Käytä hybridejä ilmatiilejä" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Tuleeko ilmatiilten käyttää hybridityyliä (selitteiden kera)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Näkyvyys" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Lähetä Facebookiin" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Lähetä Twitteriin" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Peru" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Kirjaudu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Julkinen" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seuraajat" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Yksityinen" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Reitti täältä" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lisää välisijainti" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Reitti tänne" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mitä täällä on?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopioi sijainti" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Vie näkymä" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Vie" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Sisällytä reitti ja merkit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Valitse kartan tyyppi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Loitonna" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Lähennä" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Tulosta reitti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Näytä/piilota suosikit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Yleiset" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Näytä pikanäppäimet" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Etsi" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Lopeta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Karttanäkymä" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Lähennä" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Loitonna" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Näytä/piilota mittakaava" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Vaihda katunäkymään" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Vaihda ilmanäkymään" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Avaa muototaso" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Näytä selitteet" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Avaa muototaso…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ota sijaintipalvelut käyttöön selvittääksesi sijaintisi" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Peru" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Sijaintipalvelut" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Yötila" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Määritä OpenStreetMap-tili" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Vie kuvana" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tietoja - Kartat" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartat on verkottomassa tilassa!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartat tarvitsee aktiivisen internetyhteyden toimiakseen kunnolla, mutta " +"sellaista ei kuitenkaan havaittu." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Tarkista yhteytesi ja välityspalvelimen asetukset." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-tili" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Kirjaudu sisään muokataksesi " +"karttoja" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Auta parantamaan karttaa\n" +"OpenStreetMap-tiliä käyttäen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Sähköposti" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Salasana" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rekisteröidy" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Kirjaudu sisään" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Valitettavasti se ei kelvannut. Yritä uudelleen tai siirry\n" +"OpenStreetMapiin nollataksesi salasanasi." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Vahvistuskoodi ei kelvannut, yritä uudelleen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Kirjoita yllä oleva vahvistuskoodi" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vahvista" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sisäänkirjautunut" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap-tilisi on aktiivinen." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kirjaudu ulos" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Katu" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Talon numero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postinumero" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kaupunki" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tyyppi" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ei mitään" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lisää kenttä" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentti" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Karttamuutokset näkyvät kaikissa OpenStreetMapin\n" +"sisältöä käyttävissä kartoissa." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Viimeksi käytetty" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seuraava" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tuloksia ei löytynyt" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Tapahtui virhe" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Vedä muuttaaksesi reitin määritystä" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopioi" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Lähetä…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "_Ilmoittaudu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Avaa muototaso" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Avaa" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Näytä/piilota" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Reittihaun tarjoaa GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Julkisen liikenteen reitityksen matkareitit tarjoaa Gnome\n" +"käyttäen kolmansien osapuolien palveluja.\n" +"Gnome ei voi taata näytettävien matkareittien ja aikataulujen " +"oikeellisuutta.\n" +"Huomioi, että jotkin palveluntarjoajat eivät välttämättä sisällytä kaikkia\n" +"liikennöintimuotoja, esimerkiksi kansalliset palveluntarjoajat eivät " +"välttämättä\n" +"huomioi lentoreittejä, tai paikalliset palveluntarjoajat eivät välttämättä\n" +"huomioi valtakunnallisia junia.\n" +"Näytettävät nimet ja tuotemerkit on soveltuvin osin oletettava " +"rekisteröidyiksi." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Näytä lisää tuloksia" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Piilota välipysäkit ja tiedot" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Näytä välipysäkit ja tiedot" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Lähde nyt" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Lähde määrättynä aikana" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Saavu määrättynä aikana" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Näytä" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussit" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Raitiovaunut" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Junat" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Lautat" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lentokoneet" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Jaa sijainti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Lisää uusi reitti" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Reittiohjeet" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merkitse suosikiksi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Lähennä lisätäksesi sijainnin!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Lähennä" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Tiilirakennetta ei löytynyt hakemistosta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-asiakirjan jäsentäminen epäonnistui" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Vaaditut attribuutit puuttuvat" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-elementtiä ei löytynyt" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Polku paikallisten tiilien hakemistorakenteeseen" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tiilen koko paikalliseen tiilten hakemistoon" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Näytä ohjelman versio" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Älä huomioi verkon saatavuutta" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[TIEDOSTO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Valitse tili" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Ladataan" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Valitse paikka" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Foursquaresta paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Kirjaudu paikkaan %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Kirjoita valinnainen viesti paikkaan %s kirjautumisen yhteydessä." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Paikkaa \"%s\" ei löydy sosiaalisista palveluista" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Tästä sijainnista ei löydy kelvollista paikkaa kirjautumista varten" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kirjautumistiedot ovat vanhentuneet. Avaa verkkotilien asetukset " +"kirjautuaksesi ja käyttääksesi tätä tiliä" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Täältä ei löytynyt mitään!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Sijainti lisättiin karttaan. Ota huomioon, että sen näkymisessä kartalla ja " +"hakutuloksissa saattaa kestää jonkin aikaa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartta sijainnissa %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Tiedostojärjestemä on \"vain luku\"-muodossa" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oikeutesi eivät riitä tänne tallentamiseen" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Kansiota ei ole olemassa" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiedostonimeä ei määritetty" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Näkymän vienti epäonnistui" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Nykyinen sijainti" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "virheellinen koordinaatti" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "jäsentämisvirhe" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "tuntematon geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Reittipyyntö epäonnistui." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Reittiä ei löytynyt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Aloitus!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Kaikki tasotiedostot" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Yhteys sijaintipalveluun epäonnistui" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Karttasovellus Gnomelle" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Tekijänoikeus © 2011 – 2021 Red Hat, Inc. ja Gnomen karttasovelluksen " +"kehittäjät" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Karttatiedot tarjoaa %s ja avustajat" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karttatiilet tarjoaa %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Haun tarjoaa %s käyttämällä %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Tason avaaminen epäonnistui" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Haluatko jatkaa?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Olet aikeissa avata tiedostoja, joiden koko yhteensä on %s Mt. Näiden " +"lataaminen saattaa kestää jonkin aikaa" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tiedostotyyppi ei ole tuettu" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI:n avaaminen epäonnistui" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Onnistui" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Virheellinen pyyntö" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objektia ei löytynyt" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Ristiriita, joku toinen muokkasi juuri objektia" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekti on poistettu" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tie tai relaatio viittaa lapseen, jota ei ole olemassa" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nimi" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Virallinen nimi. Tämä on yleensä näkyvillä kyltissä." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Osoite" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Verkkosivusto" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Tämä ei ole kelvollinen URL-osoite. Varmista että osoitteen alussa on " +"http:// tai https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Virallinen verkkosivusto. Käytä verkkotunnuksen perusmuotoa, eli mieluummin " +"http://esimerkki.fi kuin http://esimerkki.fi/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Puhelin" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Puhelinnumero. Käytä kansainvälistä muotoa, aloita +-merkillä. Ota huomioon " +"mahdolliset paikalliset yksityisyyslait, jotka voivat koskea salaisia " +"puhelinnumeroita." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Sähköposti" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Tämä ei ole kelvollinen sähköpostiosoite. Varmista että osoitteen alussa on " +"etuliite \"mailto:\"." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Sähköpostiosoite kyselyjä varten. Lisää vain sähköpostiosoitteita, jotka " +"ovat tarkoitettu julkisesti näytettäväksi." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Käytettävän muotoilun tulisi sisältää kielikoodin ja artikkelin nimen, kuten " +"”en:Article title”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Aukioloajat" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Avaa linkki nähdäksesi muotoilua koskevan ohjeen." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Asukasluku" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Korkeus" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Sijaintipisteen korkeus merenpinnan yläpuolella metreissä." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Pääsy pyörätuolilla" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Kyllä" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ei" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Rajoitettu" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Suunniteltu" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internet-käyttö" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kiinteä" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Pääte" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Palvelu" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Takeaway" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Vain" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Uskonto" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismi" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhalaisuus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismi" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristinusko" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Kungfutselaisuus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindulaisuus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainalaisuus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Juutalaisuus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Useita uskontoja" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pakanuus" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarilaisuus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Skientologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintolaisuus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhiläisyys" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismi" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taolaisuus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaariuniversalismi" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jesidismi" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zarathustralaisuus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Vessat" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Huomio" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Tietoja muille kartoittajille elementistä, sen luomisen tarkoituksesta tai " +"vihjeitä parannusten suhteen." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Valitse tyyppi" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Valmis" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nimetön paikka" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI:n jäsentäminen epäonnistui" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinaatit" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Tarkkuus" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tarkkuus: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Puhelinnumero" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Tarjoaa takeaway-vaihtoehdon" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ei tarjoa takeaway-vaihtoehtoa" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Tarjoaa vain takeaway-vaihtoehdon" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Julkinen internetyhteys" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ei internetyhteyttä" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Julkinen Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Langallinen internetyhteys" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Tietokoneita käytettävissä" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetopastusta saatavilla" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Vessoja ei käytettävissä" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Vessoja käytettävissä" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Pääsy pyörätuolilla" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Rajoitettu pääsy pyörätuolilla" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ei pääsyä pyörätuolilla" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Suunniteltu pyörätuolikäyttäjille" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s merenpinnan tason alapuolella" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Merenpinnan tasolla" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Uskonto:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Paikkaa ei löytynyt OpenStreetMapista" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaatit osoitteessa eivät ole kelvolliset" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Osoite ei ole tuettu" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Alkupisteestä %s päätepisteeseen %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ladataan karttatiiliä tulostusta varten" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Voit perua tulostuksen, jos siinä kestää liian kauan" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Peru tulostus" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lisää välisijainti" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Poista välisijainti" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Käänteinen reitti" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lisää %s sovellukseen %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI:n avaaminen epäonnistui" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Avaa sovelluksella %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "tiedoston lataaminen epäonnistui" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Arvioitu aika: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Matkareitit tarjoaa %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Aloita %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Aloita" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Kävele %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Saavu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Saavu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Näytä kävelyohjeet" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Piilota kävelyohjeet" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Lataa aiemmat vaihtoehdot" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Lataa myöhemmät vaihtoehdot" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aiempia vaihtoehtoja ei löytynyt." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Myöhempiä vaihtoehtoja ei löytynyt." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Tälle reitille ei löytynyt aikataulutietoja." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Tälle reitille ei löytynyt palveluntarjoajaa." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuutti" +msgstr[1] "%s minuuttia" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s tunti" +msgstr[1] "%s tuntia" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%02s tunti" +msgstr[1] "%s:%02s tuntia" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Kellon ympäri" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Auringonnoususta auringonlaskuun" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Päivittäin" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Yleiset vapaapäivät" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Koulujen vapaapäivät" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ei avoinna" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Tuntematon" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Tarkka" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tämä liitännäinen ei tue myöhäisintä saapumista" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Jatka %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Jatka" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Käänny vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Käänny vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Käänny hieman vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Käänny hieman vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Käänny terävästi vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Käänny terävästi vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Käänny oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Käänny oikealle" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Käänny hieman oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Käänny hieman oikealle" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Käänny terävästi oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Käänny terävästi oikealle" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Kiertoliittymässä ota poistumistie %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Kiertoliittymässä ota poistumistie suuntaan %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Mene kiertoliittymään" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ota hissi ja jää pois kerroksessa %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ota hissi" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Tee u-käännös vasemmalle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Tee u-käännös vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Tee u-käännös oikealle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Tee u-käännös oikealle" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Voit myös etsiä tietynlaista sijaintia, kuten \"Pubit lähellä Kallio, " +#~ "Helsinki\" tai \"Hotellit lähellä Berliini, Saksa\"." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook-paikkakirjautumisen yksityisyysasetus" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Viimeisin käytetty Facebook-paikkakirjautumisen yksityisyysasetus. " +#~ "Mahdolliset arvot ovat: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS tai " +#~ "SELF." + +#~ msgid "Everyone" +#~ msgstr "Kaikki" + +#~ msgid "Friends of friends" +#~ msgstr "Kaverien kaverit" + +#~ msgid "Just friends" +#~ msgstr "Vain kaverit" + +#~ msgid "Just me" +#~ msgstr "Vain minä" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kartat ei löydä Facebookista paikkaa kirjautumista varten. Valitse paikka " +#~ "luettelosta." + +#~ msgid "Find a Route" +#~ msgstr "Hae reitti" + +#~ msgid "Check in here" +#~ msgstr "Kirjaudu tänne" + +#~ msgid "Show more information" +#~ msgstr "Näytä lisätietoja" + +#~ msgid "Population:" +#~ msgstr "Asukasluku:" + +#~ msgid "Altitude:" +#~ msgstr "Korkeus:" + +#~ msgid "Opening hours:" +#~ msgstr "Aukioloajat:" + +#~ msgid "Internet access:" +#~ msgstr "Internetin käyttö:" + +#~ msgid "Toilets:" +#~ msgstr "Vessat:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Pääsy pyörätuolilla:" + +#~ msgid "Phone:" +#~ msgstr "Puhelin:" + +#~ msgid "yes" +#~ msgstr "kyllä" + +#~ msgid "limited" +#~ msgstr "rajoitettu" + +#~ msgid "no" +#~ msgstr "ei" + +#~ msgid "designated" +#~ msgstr "suunniteltu esteettömäksi" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-osoite ei ole kelvollinen" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kiinteä" + +#~ msgid "terminal" +#~ msgstr "pääte" + +#~ msgid "service" +#~ msgstr "palvelu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Oletko vailla tiliä?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lisää välipiste" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Reittihaun tarjoaa OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Avaa muussa sovelluksessa" + +#~ msgid "Press enter to search" +#~ msgstr "Paina enter etsiäksesi" + +#~ msgid "Quit" +#~ msgstr "Lopeta" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Avaa muototaso…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Lataa karttataso" + +#~ msgid "Open Layer" +#~ msgstr "Avaa taso" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Sijaintia ei löytynyt" + +#~ msgid "Country code: %s" +#~ msgstr "Maanumero: %s" + +#~ msgid "Population: %s" +#~ msgstr "Asukasluku: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pääsy pyörätuolilla: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON-tiedoston jäsentäminen epäonnistui" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Viimeksi tunnettu sijainti ja tarkkuus" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Viimeksi tunnettu sijainti (leveys ja pituus asteissa) ja tarkkuus " +#~ "(metreissä)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Käyttäjän viimeksi tunnetun sijainnin kuvaus." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Asetettiinko viimeksi tunnettu sijainti käyttäjän toimesta." + +#~ msgid "I’m here!" +#~ msgstr "Minä, minä olen täällä!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelliitti" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..e06a6670 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,2059 @@ +# French Translation of GNOME Maps. +# Copyright (C) 2013-2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ouharzoune Mohammed , 2013 +# Claude Paroz , 2013-2017, 2020 +# Alexandre Franke , 2016. +# Guillaume Bernard , 2014-2021 +# Alain Lojewski ,2018 +# vanadiae , 2020-2021. +# Charles Monzat , 2018-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-06 10:26+0000\n" +"PO-Revision-Date: 2021-09-09 09:12+0200\n" +"Last-Translator: Guillaume Bernard \n" +"Language-Team: GNOME French Team \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Cartes de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recherche d’emplacements autour du monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L’application Cartes vous donne un accès rapide à des cartes du monde " +"entier. Elle permet de trouver rapidement un emplacement en recherchant par " +"ville ou par rue, ou de situer un endroit de rencontre avec un ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Les cartes utilisent la base de données collaborative OpenStreetMap, à " +"laquelle contribuent des centaines de milliers de personnes dans le monde " +"entier." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Le projet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Cartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une application cartographique simple" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Cartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d’afficher votre emplacement sur la carte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "dernier emplacement affiché" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonnées du dernier emplacement affiché." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Niveau de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type de carte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Le type de carte à afficher (plan, satellite, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Taille de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Taille de la fenêtre (hauteur et largeur)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Position de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Position de la fenêtre (X et Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenêtre agrandie" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "État d’agrandissement de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de résultats de recherche" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de résultats d’une recherche par géocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de positions récentes à conserver" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de positions récemment visitées à conserver." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre d’itinéraires récents à conserver" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre d’itinéraires récemment visités à conserver." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidentialité d’annonce de la localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation Foursquare. Les valeurs possibles sont : public (publiques), " +"followers (personnes qui me suivent) ou private (privé)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Diffusion sur Facebook des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Facebook associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Diffusion sur Twitter des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Twitter associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d’utilisateur ou adresse de courriel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indique si l’utilisateur s’est identifié pour modifier des données " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Type de transport utilisé lors du dernier itinéraire" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mode nuit" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indique si l’application est en mode nuit." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utiliser les tuiles aériennes hybrides" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indique si les tuiles aériennes doivent être utilisées en mode hybride (avec " +"étiquettes)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilité" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publier sur Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publier sur Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuler" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "A_nnoncer sa localisation" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publique" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Personnes qui me suivent" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinéraire depuis ici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ajouter une destination intermédiaire" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinéraire jusqu’à ce point" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Qu’y a-t-il ici ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copier l’emplacement" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Ajouter à OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportation de l’affichage" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporter" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclure l’itinéraire et les marqueurs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Choisir le type de carte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zoom arrière" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimer l’itinéraire" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Basculer les favoris" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Général" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afficher les raccourcis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Rechercher" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitter" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afficher la carte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrière" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Afficher/masquer l’échelle" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passer en vue cartographique" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passer en vue aérienne" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afficher les étiquettes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ouvrir une couche de formes…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activer les services de localisation pour trouver votre position" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuler" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localisation" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode nuit" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurer un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporter comme image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "À propos de Cartes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Cartes est hors ligne !" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Cartes a besoin d’une connexion Internet active et fonctionnelle, mais " +"aucune n’a été trouvée." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Vérifiez votre connexion et vos paramètres de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S’identifier pour modifier des " +"cartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aider à l’amélioration des cartes avec\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adresse électronique" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mot de passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscrire" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "S’identifier" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Désolé, ça n’a pas fonctionné. Veuillez réessayer ou visiter\n" +"OpenStreetMap pour réinitialiser votre mot de passe." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Le code de vérification ne correspond pas, essayez encore une fois." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Saisissez le code de vérification affiché ci-dessus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vérifier" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Vous êtes inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Votre compte OpenStreetMap est actif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Se déconnecter" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rue" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numéro" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Code postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ville" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Aucun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Ajouter un champ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaire" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Les modifications de la carte seront visibles sur toutes\n" +"les cartes qui utilisent des données OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Dernièrement utilisé" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Suivant" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Aucun résultat trouvé" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Une erreur est survenue" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Faites glisser pour modifier l’ordre de l’itinéraire" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ouvrir l’emplacement" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copier" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Envoyer vers…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Annoncer sa localisation…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ouvrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inverser la visibilité" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recherche d’itinéraire avec GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Les itinéraires par transport public sont fournis par des services tiers\n" +"GNOME ne peut garantir l’exactitude des itinéraires et horaires présentés.\n" +"Notez que certains fournisseurs ne présentent pas toujours tous les modes " +"de\n" +"transport disponibles, par ex. un fournisseur national n’indiquerait peut-" +"être\n" +"pas les lignes aériennes ou un fournisseur local pourrait omettre les trains " +"régionaux\n" +".Les noms et marques affichés doivent être considérés comme des marques " +"déposées, le cas échéant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montrer plus de résultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Masquer les arrêts et informations intermédiaires" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afficher les arrêts et informations intermédiaires" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir maintenant" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Départ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivée" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afficher" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Métros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Bateaux" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partager l’emplacement" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Ajouter à un nouvel itinéraire" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Directions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marquer comme favori" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomez pour ajouter un emplacement !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trouver une structure de tuiles dans le répertoire" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Échec d’analyse d’un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributs obligatoires manquants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trouver l’élément OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un chemin vers un répertoire local de structure de tuiles" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Taille de tuile pour le répertoire local de tuiles" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Afficher la version du logiciel" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorer la disponibilité du réseau" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHIER…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Sélectionner un compte" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Chargement" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Sélectionner un lieu" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Foursquare. " +"Veuillez en sélectionner un dans cette liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Annoncer sa localisation à %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Écrire un message optionnel pour votre annonce de localisation à %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trouver « %s » sur le réseau social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trouver un endroit correspondant pour annoncer sa localisation " +"ici" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Les informations d’authentification ont expiré, ouvrez Comptes en ligne pour " +"vous connecter et activer ce compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Rien n’a été trouvé à cet endroit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L’emplacement a été ajouté à la carte, notez que cela peut prendre un moment " +"avant qu’il n’apparaisse sur la carte et dans les résultats de recherche." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Cartes situées à %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Le système de fichiers est en lecture seule" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vous n’avez pas la permission d’enregistrer à cet endroit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Le dossier n’existe pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Aucun nom de fichier indiqué" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d’exporter l’affichage" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Lieu actuel" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordonnée non valable" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erreur d’analyse" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "géométrie inconnue" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Échec de la recherche d’itinéraire." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Aucun itinéraire trouvé." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "C’est parti !" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tous les fichiers de couches" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Échec à la connexion au service de localisation" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Ouharzoune Mohammed \n" +"Claude Paroz \n" +"Guillaume Bernard \n" +"Charles Monzat " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Une application cartographique pour GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2021 Red Hat, Inc. et les auteurs de Cartes de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Données cartographiques de %s et contributeurs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Couches de données cartographiques fournies par %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Recherche fournie par %s utilisant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Échec d’ouverture de la couche" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Voulez-vous continuer ?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Vous êtes sur le point d’ouvrir des fichiers pour une taille totale de " +"%s Mo. Cela peut prendre un certain temps à charger" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Le type de fichier n’est pas pris en charge" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Échec d’ouverture de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d’utilisateur ou mot de passe incorrect" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Mauvaise requête" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objet non trouvé" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, quelqu’un d’autre vient de modifier l’objet" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L’objet a été supprimé" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Le chemin ou la relation se réfère à des enfants qui n’existent pas" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Le nom officiel. C’est en général ce qui est écrit sur l’enseigne." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Site Web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Cette URL n’est pas valide. Assurez-vous d’inclure http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Le site officiel. Essayez d’utiliser la forme la plus simple pour l’URL, " +"c’est-à-dire http://example.com au lieu de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Téléphone" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numéro de téléphone. Utilisez le format international, en commençant par un " +"signe +. Attention aux lois locales sur la vie privée, surtout pour les " +"numéros de téléphone des particuliers." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Adresse de courriel" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Adresse de courriel non valide. Vérifiez que vous n’avez pas inclus le " +"préfixe de protocole mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Adresse de courriel de contact pour les demandes de renseignement. Ajoutez " +"des adresses de courriel qui sont destinées à être utilisées publiquement." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Le format utilisé devrait comprendre le code langue et le titre de " +"l’article, comme « fr:Titre de l’article »." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Heures d’ouverture" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Voir le lien dans l’étiquette pour de l’aide sur le format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Élévation (hauteur au-dessus du niveau de la mer) d’un point en mètres." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Accès aux fauteuils roulants" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Oui" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limité" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Réservé" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Accès à Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Filaire" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "À emporter" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Uniquement" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaïsme" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Bouddhisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Christianisme" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindouisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Plusieurs religions" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universaliste" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vaudou" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yézidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toilettes" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informations utilisées pour informer d’autres cartographes sur les " +"informations non évidentes sur un élément, l’intention de l’auteur lors de " +"sa création ou des indications pour de possibles améliorations." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Ajout à OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Sélectionner le type" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Terminé" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Emplacement sans nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Échec à l’analyse de la Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordonnées" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Précision de la position" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Précision de la position : %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Plats à emporter" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ne propose pas de plats à emporter" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Seulement des plats à emporter" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Accès public à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Aucun accès à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Accès Internet filaire" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordinateurs disponibles pour utilisation" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistance Internet disponible" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Toilettes indisponibles" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toilettes disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accessible aux fauteuils roulants" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accessibilité limitée aux fauteuils roulants" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Aucune accessibilité aux fauteuils roulants" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Accès destiné aux utilisateurs de fauteuils roulants" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s sous le niveau de la mer" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Au niveau de la mer" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion :" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Emplacement introuvable sur OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Les coordonnées dans l’URL ne sont pas valides" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "L’URL n’est pas prise en charge" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s à %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Chargement des tuiles de carte pour l’impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vous pouvez interrompre l’impression si cela prend trop de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l’impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ajouter un emplacement intermédiaire" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Supprimer l’emplacement intermédiaire" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Chemin inverse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Ajouter %s à %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Échec d’ouverture de l’URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Ouvrir avec %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impossible de charger le fichier" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimé : %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinéraires fournis par %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Départ de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Départ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Marcher %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrivée à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrivée" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montrer les instructions de marche à pied" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Masquer les instructions de marche à pied" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Charger les alternatives précédentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Charger les alternatives suivantes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aucune alternative précédente trouvée." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Aucune alternative suivante trouvée." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Aucun horaire trouvé pour cet itinéraire." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Aucun fournisseur trouvé pour cet itinéraire." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s heure" +msgstr[1] "%s heures" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s heure" +msgstr[1] "%s:%s heures" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 h/24" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Du lever au coucher du soleil" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Tous les jours" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Jours fériés" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacances scolaires" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "fermé" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Inconnue" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ce greffon ne prend pas en charge les dernières arrivées" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuer sur %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuer" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Tourner à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Tourner à gauche" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Tourner légèrement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Tourner légèrement à gauche" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Tourner franchement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Tourner franchement à gauche" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Tourner à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Tourner à droite" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Tourner légèrement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Tourner légèrement à droite" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Tourner franchement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Tourner franchement à droite" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Au giratoire, prendre la sortie %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Au giratoire, prendre la sortie vers %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "S’engager dans le giratoire" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendre l’ascenseur et sortir à %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Prendre l’ascenseur" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faire un demi-tour à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faire un demi-tour à gauche" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faire un demi-tour à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faire un demi-tour à droite" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Vous pouvez même chercher des lieux spécifiques, comme « Restaurants à " +#~ "côté de la Cathédrale de Strasbourg » ou « Hôtels à côté d’Alexanderplatz " +#~ "à Berlin »." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "" +#~ "Paramètres de confidentialité d’annonce de la localisation sur Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Paramètres de confidentialité précédemment utilisés pour les annonces de " +#~ "localisation sur Facebook. Les valeurs possibles sont : EVERYONE (tout le " +#~ "monde), FRIENDS_OF_FRIENDS (amis des amis), ALL_FRIENDS (tous les amis) " +#~ "or SELF (soi)." + +#~ msgid "Everyone" +#~ msgstr "Tout le monde" + +#~ msgid "Friends of friends" +#~ msgstr "Amis des amis" + +#~ msgid "Just friends" +#~ msgstr "Juste les amis" + +#~ msgid "Just me" +#~ msgstr "Juste moi" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Cartes ne trouve pas de lieu pour signaler sa localisation sur Facebook. " +#~ "Veuillez en sélectionner un dans cette liste." + +#~ msgid "Check in here" +#~ msgstr "Annoncer cet emplacement comme localisation" + +#~ msgid "Show more information" +#~ msgstr "Montrer plus d’informations" + +#~ msgid "Population:" +#~ msgstr "Population :" + +#~ msgid "Altitude:" +#~ msgstr "Altitude :" + +#~ msgid "Opening hours:" +#~ msgstr "Heures d’ouverture :" + +#~ msgid "Internet access:" +#~ msgstr "Accès à Internet :" + +#~ msgid "Toilets:" +#~ msgstr "Toilettes :" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accès aux fauteuils roulants :" + +#~ msgid "Phone:" +#~ msgstr "Téléphone :" + +#~ msgid "yes" +#~ msgstr "oui" + +#~ msgid "limited" +#~ msgstr "limité" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "réservé" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "L’URL de OpenStreetMap n’est pas valide" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "filaire" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "service" + +#~ msgid "Find a Route" +#~ msgstr "Trouver un itinéraire" + +#~ msgid "Primary menu" +#~ msgstr "Menu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Vous n’avez pas de compte ?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" diff --git a/po/fur.po b/po/fur.po new file mode 100644 index 00000000..01e12dc5 --- /dev/null +++ b/po/fur.po @@ -0,0 +1,2114 @@ +# Friulian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Fabio Tomat , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-07-09 21:52+0000\n" +"PO-Revision-Date: 2021-07-26 07:26+0200\n" +"Last-Translator: Fabio Tomat \n" +"Language-Team: Friulian \n" +"Language: fur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapis GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cjate puescj tor atôr pal mont" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapis ti da un acès veloç a lis mapis ator pal mont. Ti permet di cjatâ di " +"corse il puest che ti interesse cirint citât o vie, o cirî un puest dulà " +"cjatâsi cuntun ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapis al dopre il database colaboratîf OpenStreetMap, fat da centenârs di " +"miârs di personis ator pal mont." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Il progjet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapis" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une semplice aplicazion pes mapis" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapis;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet ae tô posizion di jessi mostrade te mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultime posizion viodude" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadis de ultime posizion viodude." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel di ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Gjenar di mape" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il gjenar di mape di mostrâ (stradâl, aerie, ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimension barcon" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimension barcon (largjece e altece)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizion barcon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizion barcon (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Barcon massimizât" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stat massimizât dal barcon" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Massim numar di risultâts di ricercje" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Massim numar di risultâts de ricercje da codifiche gjeografiche." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numar di lûcs resints di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numar di lûcs resints viodûts di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numar di stradis resintis di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numar di stradis resintis viodudis di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazions pe privacy dai check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazion pe privacy dai check-in doprade. I valôrs pussibii a son: " +"public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmission a Facebook dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un post tal account " +"Facebook associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmission a Twitter dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un tweet tal account " +"Twitter associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Non utent o direzion e-mail OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Al indiche se l'utent al è jentrât te session par modificâ dâts " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "L'ultin gjenar di traspuart doprât par spostâsi" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modalitât gnot" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indiche se la aplicazion e je in modalitât gnot." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Dopre sezions aeriis ibridis" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indiche se lis sezions de mape aeriis a àn di doprâ il stîl ibrit (cun " +"etichetis)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilitât" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publiche su Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publiche su Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anule" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Personis che a mi seguissin" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privât" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Strade di chi" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zonte destinazion intermedie" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Strade par rivâ chi" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce isal chi?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copie posizion" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Espuarte viodude" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Espuarte" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclût stradis e marcadôrs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Sielç il gjenar di mape" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Impiçulìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ingrandìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Stampe Strade" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Ative/disative preferîts" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Ative/disative plan di percors" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Gjenerâl" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostre scurtis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cîr" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Cambie plan stradis" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampe strade" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Jes" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Viodude mape" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumente ingrandiment" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuìs ingrandiment" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Cambiâ scjale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passe ae viodude stradâl" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passe ae viodude aerie" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vierç strât sagome" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostre etichetis" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vierç strât sagome…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ativâ i servizis di localizazion par cjatâ la tô posizion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anule" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazions di localizazion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalitât gnot" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configure Account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Espuarte come Imagjin" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtis tastiere" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazions su Mapis" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapis al è offline!" + +# cjatâ'nt indi? +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapis a scugne vê une conession internet ative par podê funzionâ, ma no si " +"'nt rive a cjatâ une." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Controle le tô conession e lis impostazions proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jentre par modificâ lis mapis" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Jude a miorâ la mape doprant un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regjistriti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Jentre" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Mi displâs, nol funzione. Torne prove o visite\n" +"OpenStreetMap par tornâ a configurâ la tô password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codiç di verifiche nol corispuint, torne prove." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Scrîf il codiç di verifiche mostrât chi parsore" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiche" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jentrât" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Il tô account OpenStreetMap al è atîf." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Jes" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Vie" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numar civic" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codiç postâl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Citât" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Gjenar" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nissun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Zonte cjamp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Coment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"I cambiaments de mape a saran visibii in dutis lis mapis che a doprin\n" +"dâts OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Doprâts di resint" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Prossim" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nissun risultât cjatât" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Si è verificât un erôr" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Strissine par cambiâ l'ordin de strade" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Vierç posizion" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copie" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Invie a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vierç strât sagome" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Vierç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Cambiâ stât visibil" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricercje dal percors cun GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I itineraris di percors pai mieçs publics a son furnîts di servizis di\n" +"tiercis parts.\n" +"GNOME nol pues garantî la justece dai itineraris e dai oraris mostrâts.\n" +"Viôt che cualchi furnidôr al podarès no includi dutis lis modalitâts di " +"traspuart disponibilis,\n" +"p.e. un furnidôr nazionâl al podarès no includi lis tratis aeronautichis e " +"un furnidôr locâl\n" +"al pues no includi i trens regjionâi.\n" +"I nons e lis marchis mostradis si àn di considerâ come marchis regjistradis " +"cuant che si puedin aplicâ." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostre plui risultâts" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Plate fermadis intermediis e informazions" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostre fermadis intermediis e informazions" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partî cumò" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partî tor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Rivâ tor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostre" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghets" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Condivît posizion" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Zonte a gnûf percors" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direzions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Segne come preferît" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Aumente ingrandiment par zontâ un puest!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ingrandìs" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impussibil cjatâ la struture des sezions de mape te cartele" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Impussibil analizâ il document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "E mancjin i atribûts necessaris" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impussibil cjatâ l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un percors par une struture de cartele des sezions di mape locâls" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "La dimension des sezions de mape pe cartele des sezions locâls" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostre la version dal program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignore disponibilitât rêt" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selezione un account" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Daûr a cjamâ" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Selezione un lûc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Foursquare. Selezionâ un di " +"cheste liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in là di %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivi un coment opzionâl pal check-in là di %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No rivi a cjatâ “%s” tal servizi social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impussibil cjatâ un puest adat pal check-in in chest lûc" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Lis credenziâi a son scjadudis, vierç Accounts Online par coneti e abilitâ " +"chest account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nol è nuie culì!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Il lûc al è stât zontât te mape, viôt che al podarès coventâ un pôc prime " +"che al vegni fûr te mape e tai risultâts di ricercje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapis a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il file di sisteme al è in modalitât dome-leture" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tu âs i permès par salvâ là" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La cartele no esist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nissun non file specificât" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impussibil espuartâ la viodude" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Posizion atuâl" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenade no valide" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erôr tal analizâ" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "gjeometrie no valide" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Richieste dal percors falide." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Percors no cjatât." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Invie!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Ducj i files di strât" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Impussibil conetisi al servizi di localizazion" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Fabio Tomat, " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Une aplicazion di GNOME pes mapis" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e i autôrs di GNOME Mapis" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dâts mape di %s e colaboradôrs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Sezions de mape furnîts di %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricercje furnide di %s doprant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Impussibil vierzi il strât" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Desideristu continuâ?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Tu stâs par vierzi files che a àn un totâl di %s MB di dimension. Al podarès " +"tirâle a dilunc par cjariâju" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Gjenar di file no supuartât" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Impussibil vierzi il GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Non utent o password sbaliâts" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sucès" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Richieste no juste" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Element no cjatât" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, cualchidun altri al à apene modificât l'element" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'element al è stât eliminât" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La vie o la relazion si riferìs a fîs no-esistents" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Non" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Il non uficiâl. Chest al è, di solit, chel che al ven fûr tes firmis." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Recapit" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Sît web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Chest nol è un URL valit. Controle di includi http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sît web uficiâl. Cîr di doprâ la plui semplice forme di direzion, par " +"esempli http://example.com invezit di http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numar di telefon. Dopre il formât internazionâl, tacant cuntun segn +f. Sta " +"atent des leçs locâls su la privacy, in particolâr par numars di telefon " +"privâts." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Cheste no je une direzion e-mail valide. Controle di includi il prefìs di " +"protocol mailto: ." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries.Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Contate la direzion e-mail par domandis.Zonte dome direzions e-mail " +"destinadis pal ûs cul public." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedie" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formât doprât al à di includi il codiç de lenghe e il titul dal articul " +"come \"fur:Titul dal articul\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Orari di viertidure" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Viôt il leam te etichete pal jutori sul formât." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Popolazion" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitudin" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevazion (altece sul nivel dal mâr) di un pont in metris." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acès disabii" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitât par disabii" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Specific par disabii" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acès internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cablade" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminâl" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servizi" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Robe di puartâ vie" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Dome" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religjon" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisim" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budisim" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisim" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianitât" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisim" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Induisim" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisim" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaisim" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religjons multiplis" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisim" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisim" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisim" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisim" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisim" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalisim Unitari" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisim" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianisim" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Gabinets" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informazion doprade par informâ altris mapadôrs su no evidentis informazions " +"suntun element, l’intent dai autôrs tal creâlu o sugjeriments par ulteriôrs " +"mioraments." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selezione un gjenar" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Fat" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Puest cence non" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Impussibil analizâ il Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadis" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precision" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de posizion: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numar di telefon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Al ufrìs robe di puartâ vie" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nol ufrìs robe di puartâ vie" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Al ufrìs dome robe di puartâ vie" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acès internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nissun acès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acès internet vie fîl" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computers disponibii di doprâ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistence internet disponibile" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nissun gabinet disponibil" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Gabinets disponibii" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acessibil in carocele" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acessibil in carocele in mût limitât" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "No acessibil in carocele" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Progjetât pai utents in carocele" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s sot dal nivel dal mâr" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "A nivel dal mâr" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religjon:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lûc no cjatât su OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Lis coordenadis tal URL no son validis" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL nol è supuartât" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Di %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Daûr a cjariâ lis sezions de mape pe stampe" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tu puedis fermâ di stampâ se al sta masse" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ferme stampe" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zonte posizion de vie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gjave posizion de vie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percors inviers" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Zonte %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Impussibil vierzi il URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Vierç cun %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impussibil cjariâ il file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp stimât: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris furnîts di %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partìs di %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partence" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Cjaminâ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Rive a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Rivade" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostre istruzions par lâ a pît" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Plate istruzions par lâ a pît" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cjariâ alternativis plui adore" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cjariâ alternativis plui tart" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nissune alternative plui adore cjatade." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nissune alternative plui tart cjatade." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e di %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nissun dât di oraris cjatât par chest percors." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nissun furnidôr cjatât par chest percors." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minût" +msgstr[1] "%s minûts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ore" +msgstr[1] "%s oris" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ore" +msgstr[1] "%s:%s oris" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Dut il dì" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Di un scûr a chel altri" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Ogni dì" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Festîfs" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacancis di scuele" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "no viert" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "No cognossût" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Di precîs" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Chest plugin nol supuarte la ultime rivade" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolte a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Svolte a çampe" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolte di pôc a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Svolte di pôc a çampe" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolte di bot a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Svolte di bot a çampe" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolte a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Svolte a diestre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolte di pôc a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Svolte di pôc a diestre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolte di bot a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Svolte di bot a diestre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Te taronde, cjape la jessude %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Te taronde, cjape la jessude par %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Cjape la taronde" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Cjape l'assensôr e jes a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Cjape l'assensôr" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fâs une inversion a U a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Fâs une inversion a U a çampe" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fâs une inversion a U a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Fâs une inversion a U a diestre" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Tu puedis ancje cirî par specifics gjenars di puescj, come \"Pubs near " +#~ "Main Street, Boston\" o \"Hotels near Alexanderplatz, Berlin”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Impostazions privacy dai check-in su Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Ultime impostazion pe privacy dai check-in su Facebook doprade. I valôrs " +#~ "pussibii a son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#~ msgid "Everyone" +#~ msgstr "Ducj" + +#~ msgid "Friends of friends" +#~ msgstr "Amîs di amîs" + +#~ msgid "Just friends" +#~ msgstr "Nome amîs" + +#~ msgid "Just me" +#~ msgstr "Nome jo" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapis nol pues cjatâ il puest pal check-in cun Facebook. Selezionâ un di " +#~ "cheste liste." + +#~ msgid "Check in here" +#~ msgstr "Fâs il check-in chi" + +#~ msgid "Show more information" +#~ msgstr "Mostre plui informazions" + +#~ msgid "Population:" +#~ msgstr "Popolazion:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudin:" + +#~ msgid "Opening hours:" +#~ msgstr "Orari di viertidure:" + +#~ msgid "Internet access:" +#~ msgstr "Acès internet:" + +#~ msgid "Toilets:" +#~ msgstr "Gabinets:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acès disabii:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "sì" + +#~ msgid "limited" +#~ msgstr "limitât pai disabii" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "specific par disabii" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL di OpenStreetMap nol è valit" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "cablade" + +#~ msgid "terminal" +#~ msgstr "terminâl" + +#~ msgid "service" +#~ msgstr "servizi" + +#~ msgid "Find a Route" +#~ msgstr "Cjate un percors" + +#~ msgid "Primary menu" +#~ msgstr "Menù primari" + +#~ msgid "Don’t have an account?" +#~ msgstr "No tu âs un account?" + +#~ msgid "Add destination" +#~ msgstr "Zonte destinazion" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ricercje dal percors cun OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Vierç cuntune altre aplicazion" + +#~ msgid "Press enter to search" +#~ msgstr "Frache Invie par cirî" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Jes" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vierç strât sagome…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cjarie strât de mape" + +#~ msgid "Open Layer" +#~ msgstr "Vierç Strât" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Codiç paîs: %s" + +#~ msgid "_Share" +#~ msgstr "_Condivît" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'ultime posizion e precision cognossude" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'ultime posizion (latitudin e longjitudin in grâts) e precision (in " +#~ "metris) cognossude." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrizion de ultime posizion dal utent." + +#~ msgid "User set last known location" +#~ msgstr "Ultime posizion cognossude impuestade dal utent." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indiche se l'ultime posizion cognossude a je stade impuestade a man dal " +#~ "utent." + +#~ msgid "I’m here!" +#~ msgstr "O soi chi!" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ga.po b/po/ga.po new file mode 100644 index 00000000..b7753be9 --- /dev/null +++ b/po/ga.po @@ -0,0 +1,637 @@ +# Irish translations for gnome-maps package. +# Copyright (C) 2013-2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Seán de Búrca , 2013-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps.master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-01 14:40-0600\n" +"PO-Revision-Date: 2015-10-01 14:52-0600\n" +"Last-Translator: Seán de Búrca \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " +"4;\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:373 +msgid "Maps" +msgstr "Léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Feidhmchlár simplí léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Léarscáileanna;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Méid na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Méid na fuinneoige (leithead agus airde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Ionad na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +#, fuzzy +msgid "Window position (X and Y)." +msgstr "Ionad na fuinneoige (x agus y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Uasmhéadaíodh an fhuinneog" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +#, fuzzy +msgid "Window maximization state" +msgstr "Staid uasmhéadaithe na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent routes to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited routes to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Maidir Leis Seo" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Scoir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cealaigh" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Príobháideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Cad atá anseo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Cóipeáil Suíomh" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Socruithe Suímh" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Téigh go dtí an suíomh reatha" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Roghnaigh cineál léarscáile" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Tá Léarscáileanna as líne!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Cuir le bealach nua" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Oscail le feidhmchlár eile" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Oscail suíomh" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Oscail" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Cuardach bealaí ag GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Taispeáin tuilleadh torthaí" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:209 +msgid "Current location" +msgstr "Suíomh reatha" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Cruinneas: %s" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../src/application.js:86 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Á luchtú" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Roghnaigh áit" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +msgid "An error has occurred" +msgstr "Tharla earráid" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/mainWindow.js:321 +msgid "Failed to connect to location service" +msgstr "" + +#: ../src/mainWindow.js:326 +msgid "Position not found" +msgstr "" + +#: ../src/mainWindow.js:371 +msgid "translator-credits" +msgstr "Seán de Búrca " + +#: ../src/mainWindow.js:374 +msgid "A map application for GNOME" +msgstr "Feidhmchlár léarscáile do GNOME" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Cód poist: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Cód tíre: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Daonra: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Uaireanta oscailte: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Vicipéid" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Bealach isteach do chathaoireacha rothaí: %s" + +#: ../src/placeEntry.js:215 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: ../src/place.js:121 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:128 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: ../src/place.js:134 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:141 +msgid "designated" +msgstr "" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Bealach gan aimsiú." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "" + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Tosaigh!" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:230 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Am measta: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "gach lá" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Anaithnid" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:259 +msgid "Exact" +msgstr "" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f n" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f cm" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mí" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f tr" diff --git a/po/gd.po b/po/gd.po new file mode 100644 index 00000000..573cf67f --- /dev/null +++ b/po/gd.po @@ -0,0 +1,1621 @@ +# Scottish Gaelic translation for gnome-maps. +# Copyright (C) 2016 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# GunChleoc , 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-20\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product" +"=gnome-maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-09-11 20:24+0000\n" +"PO-Revision-Date: 2018-03-02 10:29+0100\n" +"Last-Translator: GunChleoc \n" +"Language-Team: Fòram na Gàidhlig\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " +"(n > 2 && n < 20) ? 2 : 3;\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapaichean GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Lorg àitichean air feadh an t-saoghail" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Bheir Mapaichean dhut inntrigeadh luath dha mhapaichean air feadh an t-" +"saoghail. Leigidh e leat àite a lorg gu luath a-rèir baile no sràide no an t-" +"àite a lorg far a bheil thu airson tachairt ri caraid." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Cleachdaidh Mapaichean stòr-dàta OpenStreetMap co-obrachail a chaidh a " +"chruthachadh leis na mìltean mòra de dhaoine o fheadh an t-saoghail." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"’S urrainn dut fiù ’s lorg airson ionadan sònraichte, can “Taighean-seinnse " +"faisg air Sràid nam Prionnsachan, Dùn Èideann” no “Taighean-òsta faisg air " +"Sràid Sauchiehall, Glaschu”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapaichean" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Aplacaid mhapaichean shimplidh" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;mapaichean;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Faodaidh far a bheil thu a nochdadh air a’ mhapa le seo." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "an t-ionad mu dheireadh a chaidh a shealltainn" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Co-chomharran an ionaid mu dheireadh a chaidh a shealltainn." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Meud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Meud na h-uinneige (leud ’s àirde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Ionad na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Ionad na h-uinneige (x is y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Làn-mheud air an uinneag" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Staid làn-mheud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "An àireamh as motha de thoraidhean luirg" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "An àireamh as motha de thoraidhean luirg o lorg geocode." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Àireamh dhe dh’ionadan o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" +"Àireamh dhe dh’ionadan air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Àireamh dhe shlighean o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "" +"Àireamh dhe shlighean air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Facebook. Seo na luachan as urrainn dhut cleachdadh: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS no SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Foursquare. Seo na luachan as urrainn dhut cleachdadh: public, " +"followers no private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Craoladh Facebook airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar phost sa " +"chunntas Facebook a tha co-cheangailte ris a’ chunntas Foursquare gus nach " +"bu chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Craoladh Twitter airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar tweet sa " +"chunntas Twitter a tha co-cheangailte ris a’ chunntas Foursquare gus nach bu " +"chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Ainm-cleachdaiche no seòladh puist-d OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Innsidh seo an do clàraich an cleachdaiche a-steach gus dàta OpenStreetMap a " +"dheasachadh gus nach do chlàraich." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Suidhich cunntas OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Ath-ghoiridean a’ _mheur-chlàir" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Mu dhèidhinn" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Faicsinneachd" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Postaich air Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Postaich air Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Sguir dheth" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "Noc_hd air" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "A h-uile duine" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Caraidean nan caraidean" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Caraidean a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Mise a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Poblach" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Daoine a leanas orm" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Prìobhaideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Dè tha an-seo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Dèan lethbhreac dhen ionad" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Às-phortaich mar dhealbh" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Às-phortaich an sealladh" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "À_s-phortaich" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Gabh a-steach an t-slighe is na comharran" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Coitcheann" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Seall na h-ath-ghoiridean" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Lorg" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Sealladh a’ mhapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Sùm a-steach" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Sùm a-mach" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toglaich an sgèile" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Fosgail breath" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Luchdaich breath a’ mhapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Cuir seirbheisean ionaid air gus lorg far a bheil thu" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Roghainnean ionaid" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Tagh seòrsa a’ mhapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Toglaich na h-annsachdan" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "Tha Mapaichean far loidhne!" + +#: ../data/ui/main-window.ui.h:13 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Tha Mapaichean feumach air ceangal dhan eadar-lìon gus obrachadh mar bu " +"chòir ach cha deach gin a lorg." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Thoir sùil air roghainnean a’ cheangail ’s a’ phrogsaidh agad." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Cuir ri slighe ùr" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Fosgail le aplacaid eile" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Comharraich ’na h-annsachd" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Nochd seo" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Cunntas OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Clàraich a-steach gus mapaichean a " +"dheasachadh" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Cuidich gus piseach a thoirt air a’ mhapa\n" +"le cunntas OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Post-d" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Facal-faire" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Clàraich a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Nach eil cunntas agad?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Tha sinn duilich ach cha do dh’obraich sin. Feuch ris a-rithist no tadhail " +"air\n" +"OpenStreetMap gus am facal-faire agad ath-shuidheachadh." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Cha robh an còd dearbhaidh mar bu chòir, am feuch thu ris a-rithist?" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Cuir a-steach an còd dearbhaidh a chì thu gu h-àrd" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Dearbhaich" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Air do chlàradh a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Tha an cunntas OpenStreetMap agad gnìomhach." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Clàraich a-mach" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Sràid" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Àireamh an taighe" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còd-puist" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Baile" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Seòrsa" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Chan eil gin" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Cuir raon ris" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Beachd" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Chithear atharraichean a’ mhapa air a h-uile mapa a chleachdas\n" +"dàta OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Air an cleachdadh o chionn ghoirid" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Sguir dheth" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Air adhart" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Seall barrachd fiosrachaidh" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Brùth air Enter airson lorg" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cha deach toradh a lorg" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Slaod gus òrdugh na slighe atharrachadh" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Fosgail ionad" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "F_osgail" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Fosgail breath" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Toglaich an fhaicsinneachd" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Lorg shlighean le GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Lorg shlighean le OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Seall barrachd toraidhean" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "An t-ionad làithreach" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Pongalachd: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Sùm a-steach gus ionad a chur ris!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Ceart ma-thà" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Cha deach leinn structar leacagan a lorg sa phasgan" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Dh’fhàillig le parsadh na sgrìobhainn XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Tha roghainnean riatanach a dhìth" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Cha deach leinn eileamaid OSM a lorg" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Slighe gu structar pasgain leacagan ionadail" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Tagh cunntas" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "’Ga luchdadh" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Tagh àite" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Facebook. Tagh fear " +"on liosta seo." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Foursquare. Tagh fear " +"on liosta seo." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Nochd %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Sgrìobh teachdaireachd ma thogras tu gus %s a nochdadh." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "Thachair mearachd" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Cha b’ urrainn dhuinn “%s” a lorg san t-seirbheis sòisealta" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Cha b’ urrainn dhuinn àite iomchaidh a lorg gus an t-ionad seo a nochdadh" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Dh’fhalbh an ùine air an teisteas, fosgail na cunntasan air loidhne gus " +"clàradh a-steach agus an cunntas seo a chur an comas" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Slighe on a sheo" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Cuir ceann-uidhe ris" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Slighe dhan a sheo" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "Cha deach dad a lorg an-seo!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Chaidh an t-ionad a chur ris a’ mhapa. Thoir an aire gun doir e greis mhath " +"mus nochd e air a’ mhapa agus ann an toraidhean luirg." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Tha an siostam-faidhlichean ri leughadh a-màin" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Chan eil cead agad gus rud a shàbhaladh an-seo" + +#: ../src/exportViewDialog.js:160 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Chan eil am pasgan ann" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Cha deach ainm-faidhle a shònrachadh" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Cha b’ urrainn dhuinn an sealladh às-phortadh" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "co-chomharran mì-dhligheach" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "mearachd parsaidh" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geomatras nach aithne dhuinn" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Dh’fhàillig le iarrtas slighe." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "Cha deach slighe a lorg." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Tòisich!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "A h-uile faidhle breatha" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Dh’fhàillig an ceangal ris an t-seirbheis ionadan" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "GunChleoc " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Aplacaid mhapaichean airson GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Cha chuirear taic ris an t-seòrsa faidhle" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "Dh’fhàillig le fosgladh na breatha" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "Dh’fhàillig le fosgladh GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:623 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" +"Chan eil an t-ainm-cleachdaiche no chan eil am facal-faire mar bu chòir" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Shoirbhich leis" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Droch iarrtas" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "Cha deach an t-oibseact a lorg" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Còmhstri, tha cuideigin eile dìreach air an t-oibseact atharrachadh" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Chaidh an t-oibseact a sguabadh às" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tha an t-slighe no an dàimh a’ toirt iomradh air clann nach eil ann" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Ainm" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "Ainm oifigeil. Seo na nochdas air sanasan mar as trice." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Seòladh" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Làrach-lìn" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"An làrach-lìn oifigeil. Feuch an cleachd thu an dreach as bunasaiche dhen " +"URL, can http://ball-eisimpleir.com seach http://ball-eisimpleir.com/index." +"html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Fòn" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"An àireamh fòn. Cleachd am fòrmat eadar-nàiseanta, a’ tòiseachadh le samhla " +"+. Thoir an aire air laghan prìobhaideachd ionadail, gu h-àraidh a thaobh " +"àireamhan prìobhaideach." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "An Uicipeid" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Bu chòir dhan fhòrmat a chleachdas tu an còd cànan agus tiotal na h-aiste a " +"ghabhail a-steach, can “gd:Tiotal na h-aiste”." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Uairean fosglaidh" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Faic an ceangal san leubail airson cobhair mun fòrmat." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Sluagh" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Àirde" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Meatair a dh’àirde (os cionn na mara) aig puing." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Inntrigeadh cathrach-cuibhle" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Tha inntrigeadh ann" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "Chan eil inntrigeadh ann" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Cuingichte" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Ainmichte" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Inntrigeadh an eadar-lìn" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "WiFi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Le uèir" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Tèirmineal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Seirbheis" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Creideamh" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "An aire" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Tagh seòrsa" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Deiseil" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Sluagh:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Àirde:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Uairean fosglaidh:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Inntrigeadh an eadar-lìn:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Creideamh:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Taighean-beaga:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Inntrigeadh cathrach-cuibhle:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Fòn:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Dh’fhàillig le parsadh a’ Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "tha inntrigeadh ann" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "cuingichte" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "chan eil inntrigeadh ann" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "ainmichte" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "O %s gu %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "A’ luchdadh leacagan a’ mhapa a chum clò-bhualaidh" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "’S urrainn dhut sgur dhen chlò-bhualadh ma bheir e ro fhada" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Sguir dhen chlò-bhualadh" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "Dh’fhàillig le fosgladh URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "dh’fhàillig le luchdadh faidhle" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tuairmse air an ùine: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +#| msgid "Start!" +msgid "Start" +msgstr "Toiseach" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mhionaid" +msgstr[1] "%d mhionaid" +msgstr[2] "%d mionaidean" +msgstr[3] "%d mionaid" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d uair a thìde" +msgstr[1] "%d uair a thìde" +msgstr[2] "%d uairean a thìde" +msgstr[3] "%d uair a thìde" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d uair a thìde" +msgstr[1] "%d:%02d uair a thìde" +msgstr[2] "%d:%02d uairean a thìde" +msgstr[3] "%d:%02d uair a thìde" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "fad an latha" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "o èirigh gu laighe na grèine" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "gach latha" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "saor-làithean poblach" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "saor-làithean sgoile" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "dùinte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "le uèir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "tèirmineal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "seirbheis" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Chan eil fhios" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Pongail" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f mion" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f d" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mì" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s troigh" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mì" + +#~ msgid "%f ft" +#~ msgstr "%f troigh" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 00000000..3a331c0e --- /dev/null +++ b/po/gl.po @@ -0,0 +1,2043 @@ +# Galician translations for PACKAGE package. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Fran Diéguez , 2013. +# Fran Dieguez , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-25 06:03+0000\n" +"PO-Revision-Date: 2021-08-25 19:35+0200\n" +"Last-Translator: Fran Dieguez \n" +"Language-Team: Galician >\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 40.0\n" +"X-Project-Style: gnome\n" +"X-DL-Team: gl\n" +"X-DL-Module: gnome-maps\n" +"X-DL-Branch: master\n" +"X-DL-Domain: po\n" +"X-DL-State: Translating\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Busque lugares por todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas dálle acceso a mapas de todo o mundo. Permítelle buscar de forma " +"rápida o lugar que está buscando por cidade ou rúa, ou localizar un lugar " +"para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapa usa a base de datos colaborativa de OpenStreetMap, feita por centos de " +"persoas por todo o mundo." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "O Proxecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Unha aplicación sinxela de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permitir que se mostre a súa localización no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localización vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localización vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a mostrar (rúas, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño da xanela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño da xanela (ancho e alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición da xanela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición da xanela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Xanela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximizado de xanela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de busca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número de máximo de resultados de busca para as buscas xeolocalizada." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidade do rexistro de Foursquare. Os valores " +"posíbeis son: public, followers ou private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un mensaxe novo na conta " +"de Facebook asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un chío novo na conta de " +"Twitter asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuario ou enderezo de correo de OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuario iniciou sesión para editar datos en OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "O último tipo de transporte para enrutado usado" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo noite" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indica se a aplicación está en modo noite." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Usar teselas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica se as teselas aéreas deberían usar o estilo híbrido (con etiquetas)" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Enviar a Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Enviar a Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Rexistrar" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Engadir un destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta a aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Que hai aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localización" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluír rutas e marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir á localización actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Escolla o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Afastar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Trocar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Activar/desactivar o planificador de rutas" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Xeral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atallos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Trocar o planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Saír" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista do mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Afastar" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Trocar escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir á localización actual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Trocar á vista de rúa" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Trocar á vista aérea" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir a capa de relieve…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Active os servizos de localización para buscar a súa localización" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Preferencias de localización" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noite" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar unha conta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imaxe" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Atallos de _teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapa precisa unha conexión a internet activa para funcionar correctamente, " +"pero non se atopou ningunha." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Comprobe a súa conexión ou preferencias do seu proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Iniciar sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Axude a mellorar o mapa, use unha\n" +"conta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo electrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasinal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rexistrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Isto non funcionou. Ténteo de novo ou visite\n" +"OpenStreetMap para restabelecer o seu contrasinal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificación non coincide, probe de novo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Escriba o código de verificación mostrado arriba" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Comprobar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A súa conta de OpenStreetMap está activa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Pechar a sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rúa" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ningún" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Engadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Os cambios no mapa serán visíbeis en todos os\n" +"mapas que usen datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usados recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seguinte" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Non se atoparon resultados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Produciuse un erro" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastrar a orde de cambio de ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localización" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Rexistrarse…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Trocar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Busca de ruta por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Os itinerarios de ruta para o tránsito público están fornecidos por servizos " +"de terceiros.\n" +"GNOME non ofrece ningunha garantía de que os datos e horarios dos " +"itinerarios sexan\n" +"correctos. \n" +"Teña en conta que algúns fornecedores poden non incluír todos os modos " +"dispoñíbeis\n" +"de transporte, por exemplo o fornecedor nacional pode non incluír as " +"aeroliñas, e o \n" +"fornecedor local pode omitir os trens rexionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar máis resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermedias e información" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar paradas intermedias e información" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Saír agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sae ás" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chega ás" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avións" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Compartir localización" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Engadir unha nova ruta" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direccións" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplíe para engadir unha localización!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Produciuse un fallo ao atopar a estrutura de teselas no cartafol" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Produciuse un fallo ao analizar o XML do documento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan atributos requiridos" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Non foi posíbel atopar o elemento de OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Unha ruta a unha estrutura de directorios de teselas locais" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamaño de tesela para o cartafol de teselas locais" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra a versión do programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar a dispoñibilidade da rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccione unha conta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccione un lugar" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Foursquare. Por favor " +"seleccione un desde a lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Rexistrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriba unha mensaxe opcional para rexistrarse en %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Non se pode atopar «%s» no servizo social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Non é posíbel atopar un lugar axeitado para rexistrarse nesta localización" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As súas credenciais expiraron, abra as «Contas en liña» para iniciar sesión " +"e activar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non se atopou nada aquí!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Engadiuse a localización ao mapa, teña en conta que pode tardar algún tempo " +"antes de que se mostre no mapa e nos resultados de busca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é de só lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non ten permiso para gardar aquí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O cartafol non existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nome de ficheiro non especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Non foi posíbel exportar a vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localización actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada non válida" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erro na análise" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "xeometría descoñecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Produciuse un fallo na solicitude de ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Non se atopou a ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Comezar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de capa" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Produciuse un fallo ao conectar co servizo de localización" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Fran Diéguez , 2013-2020" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Unha aplicación de mapas para GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e os autores de Mapas de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos do mapa por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Teselas de mapas fornecidas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Busca fornecida por %s usando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Produciuse un fallo ao abrir a capa" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Desexa continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Está a piques de abrir ficheiros con un tamaño total de %s MB. Isto pode " +"tardar algún tempo en cargar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipo de ficheiro non admitido" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Produciuse un fallo ao abrir o GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nome de usuario ou contrasinal non correcto" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Éxito" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Solicitude non válida" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "O obxecto non se atopou" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguén modificou o obxecto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "O obxecto foi eliminado" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "A forma ou relación refírese aos fillos non existentes" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é o aparece normalmente nos sinais." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Enderezo" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Sitio web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Esta non é un URL válido. Asegúrese que inclúe http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O sitio web oficial. Tente usar o formulario máis básico de URL p.ex. http://" +"exemplo.gal no lugar de http://exemplo.gal/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use o formato internacional, comezando polo signo +. " +"Teña en conta as leis de privacidade locais." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correo electrónico" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Esta non é un enderezo de correo electrónico válido. Asegúrese que non " +"inclúe o prefixo de protocolo «mailto:»." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Enderezo de correo electrónico de contacto para solicitudes. Engada só un " +"enderezo de correo electrónico para o seu uso de forma pública." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato usado debería incluír o código de idioma e o título do artigo como " +"«gl:Título do artigo»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horas de apertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Vexa a ligazón na etiqueta para obter axuda no formatado." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Poboación" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre o nivel do mar) do punto en metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acceso con cadeira de rodas" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Si" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Deseñado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acceso a internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Sen fíos" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Con fíos" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servizo" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Para levar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Só" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Relixión" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Xainismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Xudaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiples relixións" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciloxía" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sixismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoísmo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalismo unitario" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Xazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para informar a outros mapeadores sobre información non " +"obvia sobre un elemento, un intento do autor de crealo ou pistas sobre " +"futuras melloras." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccione tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Lugar sen nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Produciuse un fallo ao analizar o URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisión" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número de teléfono" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ofrece para levar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Non ofrece para levar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Só ofrece para levar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acceso a internet pública" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Non hai acceso a internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wifi público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acceso a internet cableado" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computadores dispoñíbeis para o uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Asistencia a internet dispoñíbel" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sen baños dispoñíbeis" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Baños dispoñíbeis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acceso con cadeira de rodas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acceso con cadeira de rodas limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Sen acceso con cadeira de rodas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Deseñado para usuarios de cadeira de rodas" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s baixo o nivel de mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Ao nivel do mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Relixión:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar non atopada en OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL non son válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "O URL non é compatíbel" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Desde %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando teselas do mapa para a impresión" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impresión se isto leva moito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Engadir mediante localización" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar mediante localización" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inverter ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Engadir %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Produciuse un fallo ao abrir o URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "produciuse un fallo ao cargar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camiñar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chega ás %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucións do camiño" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucións do camiño" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non hai alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non hai alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Non se atoparon datos de horarios para esta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Non hai un fornecedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Todo o día" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Desde o solpor ao amencer" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Vacacións públicas" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacacións de escola" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "non aberto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Descoñecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pes" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este engadido non admite a última chegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuar en %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuar" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Xire á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Xire á esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Xire lixeiramente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Xire lixeiramente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Xire bruscamente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Xire bruscamente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Xire á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Xire á dereita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Xire lixeiramente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Xire lixeiramente á dereita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Xire bruscamente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Xire bruscamente á dereita" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rotonda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rotonda, tome a saída a %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Tome a rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Colla o ascensor e saia en %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Colla o ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faga un xiro en U" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faga un xiro en U á dereita" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Incluso pode buscar por tipos de localizacións específicos como «Bares " +#~ "cerca de Rúa Nova, Compostela» ou «Puntos Wifi cerca de Praza de Galiza, " +#~ "Vilagarcía»." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Configuración de privacidade do rexistro de Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Última configuración de privacidade do rexistro de Facebook. Os valores " +#~ "posíbeis son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#~ msgid "Everyone" +#~ msgstr "Todos" + +#~ msgid "Friends of friends" +#~ msgstr "Amigos de amigos" + +#~ msgid "Just friends" +#~ msgstr "Só amigos" + +#~ msgid "Just me" +#~ msgstr "Só eu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapas non pode atopar un lugar onde rexistrarse con Facebook. Por favor " +#~ "seleccione un desde a lista." + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Buscar unha ruta" + +#~ msgid "Check in here" +#~ msgstr "Rexistrarse aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostrar máis información" + +#~ msgid "Population:" +#~ msgstr "Poboación:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horario de apertura:" + +#~ msgid "Internet access:" +#~ msgstr "Acceso a internet:" + +#~ msgid "Toilets:" +#~ msgstr "Baño:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acceso con cadeira de rodas:" + +#~ msgid "Phone:" +#~ msgstr "Teléfono:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "O URL de OpenStreetMap non é válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "con fíos" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servizo" + +#~ msgid "Don’t have an account?" +#~ msgstr "Non ten unha conta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Engadir destino" diff --git a/po/he.po b/po/he.po new file mode 100644 index 00000000..a3e26fe1 --- /dev/null +++ b/po/he.po @@ -0,0 +1,2072 @@ +# Hebrew translations for gnome-maps package. +# Copyright (C) 2013 THE gnome-maps'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# יוסף אור בוצ׳קו , 2013. +# Yosef Or Boczko , 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.9.91\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-06-15 21:15+0000\n" +"PO-Revision-Date: 2021-06-21 20:56+0300\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: עברית <>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " +"2 : 3);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME מפות" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "מציאת מקומות מסביב לעולם" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"מפות נותן לך גישה מהירה למפות על פני כל העולם. הוא מאפשר לך למצוא במהירות את " +"המקום שאתה מחפש באמצעות חיפוש עיר או רחוב, או לאתר מקום לפגישת חבר." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"מפות משתמש במסד הנתונים השיתופי OpenStreetMap, שנוצר על ידי מאות אלפי אנשים " +"על פני כדור הארץ." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "מיזם GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "מפות" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "יישום מפות פשוט" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "מפות;מפה;maps;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "מאפשר למיקום שלך להיראות על המפה." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "תקריב" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "רמת תקריב" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "סוג מפה" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "סוג המפה להצגה (רחוב, אווירית וכו׳)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximized" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximization state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "סוג התחבורה האחרונה לניווט" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "מצב לילה" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "האם היישום הוא במצב לילה." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "להשתמש באריחים אוויריים משולבים" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "האם אריחים אוויריים אמורים להשתמש בסגנון משולב (עם תוויות)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "נראה" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "לפרסם בפייסבוק" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "לפרסם בטוויטר" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_ביטול" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "ה_רשמה" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "ציבורי" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "עוקבים" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "פרטי" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "מסלול מכאן" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "הוספת יעד ביניים" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "מסלול לכאן" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "מה זה כאן?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "העתקת מיקום" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "הוספה אל OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "תצוגת ייצוא" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_ייצוא" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "לכלול מסלול וסימונים" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "בחירת סוג המפה" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "להתרחק" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "להתקרב" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "הדפסת מסלול" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "מועדפים" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "להציג/להסתיר מתכנן מסלול" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "כללי" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "הצגת צירופי מקשים" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "חיפוש" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "הצגה/הסתרת מתכנן מסלול" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "הדפסת מסלול" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "יציאה" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "פתיחת התפריט הראשי" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "תצוגת מפה" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "התקרבות" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "התרחקות" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "הצגת סרגל קנה מידה" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "מעבר לתצוגת רחוב" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "מעבר לתצוגה אווירית" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "לפתוח שכבת צורות" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "להציג תוויות" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "לפתוח שכבת צורות…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "הפעלת שירותי איכון למציאת המיקום שלך" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ביטול" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "הגדרות מיקום" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "מצב לילה" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "הגדרת חשבון OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "לייצא כתמונה" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_צירופי מקשים" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "על תכנית המפות" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "פתיחת התפריט הראשי" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "מפות איננו מקוון!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "למפות דרוש חיבור אינטרנט פעיל כדי לתפקד כראוי, אך אין כזה." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "יש לבדוק את החיבור שלך ואת הגדרות הפרוקסי." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "חשבון OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "התחברות לעריכת מפות" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"עזרה בשיפור המפה,\n" +"באמצעות חשבון OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "דוא״ל" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ססמה" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "להירשם" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "התחברות" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"זה לא עבד, עמך הסליחה. נא לנסות שוב או לבקר\n" +"‫‫ב־OpenStreetMap כדי לאפס את הססמה שלך." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "קוד האימות לא מתאים, נא לנסות שוב." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "יש להזין את קוד האימות המוצע למעלה" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "אימות" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "התחברות" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "חשבון ה־OpenStreetMap שלך פעיל." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "התנתקות" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "רחוב" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "מספר בית" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "מיקוד" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "עיר" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "סוג" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ללא" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "הוספת שדה" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "הערות" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"שינויים במפה יופיעו בכל המפות המשתמשות\n" +"במידע מ־OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "בשימוש לאחרונה" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "הבא" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "לא נמצאו תוצאות" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "התרחשה שגיאה" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "יש לגרור לשינוי סדר המסלול" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "לפתוח את המיקום" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "העתקה" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "לשלוח אל…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "להירשם במיקום…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "לפתוח שכבת צורות" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_פתיחה" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "הצגה" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "חיפוש מסלולים באמצעות GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"הרכבת מסלולי הנסיעה בתחבורה הציבורית מסופקת על ידי שירותי‬\n" +"‫צד־שלישי.‬\n" +"‫ל־GNOME אין אפשרות לאמת את תוקף המידע של המסלולים ולוחות הזמנים המופיעים.‬\n" +"‫נא לשים לב שחלק מהספקים עשויים לא לכלול את כל תצורות התחבורה הזמינות,‬\n" +"‫למשל ספק לאומי עשוי שלא לכלול קווי תעופה וספק מקומי יכול לפספס רכבות " +"אזוריות.‬\n" +"‫יש להתייחס לשמות ולמותגים כסימני מסחר רשומים בהתאם לצרכים." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "הצגת תוצאות נוספות" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "להסתיר מידע ותחנות ביניים" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "להציג מידע ותחנות ביניים" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "לצאת כעת" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "לצאת עד" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "להגיע עד" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "הצגה" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "אוטובוסים" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "חשמליות" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "רכבות" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "רכבת תחתית" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "מעבורות" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "מטוסים" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "שיתוף מיקום" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "הוספה למסלול חדש" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "הנחיות" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "סימון כמועדף" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "יש להתקרב כדי להוסיף מיקום!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "להתקרב" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "חיפוש מבנה אריח בתיקייה נכשל" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "ניתוח מסמך XML נכשל" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "חסרות תכונות חיוניות" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "לא ניתן למצוא יסוד OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "נתיב לתיקייה מבני אריחים מקומיים" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "גודל אריח לתיקיית האריחים המקומית" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "להציג את גרסת התכנית" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "להתעלם מזמינות הרשת" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[קובץ…|כתובת]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "בחירת חשבון" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "בטעינה" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "בחירת מקום" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Foursquare. נא לבחור אחד מרשימה זו." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "נרשם עבור %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "כתיבת הודעה אפשרית להרשמה עבור %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "לא ניתן למצוא את „%s” בשירות הרשת החברתי" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "לא ניתן למצוא מקום מתאים להירשם במיקום זה" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "האישורים פגי תוקף, נא לפתוח חשבונות מקוונים להתחברות ולאפשר חשבון זה" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "לא נמצא כאן דבר!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"מיקום נוסף למפה, יש לשים לב כי יתכן ויעבור זמן מה לפני שהוא יוצג על המפה " +"ובתוצאות החיפוש." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "מפות ב־%f,‏ %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "מערכת הקבצים היא לקריאה בלבד" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "אין לך הרשאות לשמירה כאן" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "התיקייה אינה קיימת" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "לא צוין שם קובץ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "לא ניתן לייצא תצוגה" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "מיקום נוכחי" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "נקודת ציון לא חוקית" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "שגיאת ניתוח" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "שגיאה הנדסית" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "בקשת המסלול נכשלה." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "לא נמצא מסלול." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "להתחיל!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "כל שכבות הקבצים" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "ההתחברות לשרת האיכון נכשלה" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "יוסף אור בוצ׳קו " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "יישום מפות עבור GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"כל הזכויות שמורות © 2011 – 2021 ל־Red Hat בע״מ וליוצרי תכנית המפות של GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "נתוני המפה באדיבות %s והמתנדבים במיזם" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "אריחי המפה סופקו על ידי %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "החיפוש סופק על ידי %s בעזרת %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "אירע כשל בפתיחת שכבה" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "להמשיך?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "פעולה זו תפתח קבצים בגודל כולל של %s מ״ב. הטעינה עשויה לארוך זמן מה" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "סוג הקובץ אינו נתמך" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "אירע כשל בפתיחת GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "שם או ססמה לא נכונים" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "הצלחה" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "בקשה שגויה" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "עצם לא נמצא" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "התנגשות, מישהו אחר שינה את העצם זה עתה" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "העצם נמחק" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "נתיב או יחס מפנה לילדים לא קיימים" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "שם" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "השם הרשמי. זה בדרך כלל מה שמופיע על השילוטים." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "כתובת" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "אתר אינטרנט" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "זו אינה כתובת תקפה. נא לוודא שכללת את התחיליות http://‎ או https://‎." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"אתר האינטרנט הרשמי. יש לנסות להשתמש בצורה הבסיסית ביותר של הכתובת. למשל " +"http://example.com במקום http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "טלפון" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"מספר טלפון. יש להשתמש בתבנית בינלאומית, המתחיל עם סימן פלוס +. יש להיזהר " +"מחוקי הפרטיות, בפרט עבור מספרי טלפון פרטיים." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "דוא״ל" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "זו אינה כתובת דוא״ל תקפה. נא לוודא שלא הוספת את הקידומת mailto:‎." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries.Add only email addresses that are " +"intended to be publicly used." +msgstr "דוא״ל יצירת קשר לשאלות. נא להוסיף כתובת שניתן להשתמש בה באופן ציבורי." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "ויקיפדיה" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"התבנית בשימוש צריכה לכלול את קוד השפה ואת כותרת הערך. למשל: \"he:כותרת הערך." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "שעות פתיחה" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "ניתן לקבל עזרה עבור התבנית בקישור בתווית." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "אוכלוסייה" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "גובה" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "גובה (גובה מעל פני הים) של נקודה במטרים." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "נגישות נכים" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "יש" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "אין" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "מוגבל" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "מובנה" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "גישה לאינטרנט" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "רשת אלחוטית" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "רשת קווית" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "מסוף" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "שרת" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "איסוף עצמי" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "בלבד" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "דת" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "אנימיזם" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "בהאית" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "בודהיזם" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "קאודאיזם" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "נצרות" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "קונפוציוסיזם" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "הינדואיזם" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "ג׳ייניזם" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "יהדות" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "אסלאם" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "מגוון דתות" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "פגניות" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "פסטפריאניזם" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "סיינטולוגיה" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "שינטו" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "סיקיזם" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "ספיריטואליזם" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "דאואיזם" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "אוניברסליזם אוניטריאני" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "וודו" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "יזידיזם" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "זורואסטריות" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "שירותים" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "הערה" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"מידע שמשמש ליידע ממפים אחרים בנוגע למידע בלתי מובן מאליו בנוגע לרכיב, מטרת " +"הכותב בעת יצירתה או רמזים לשיפור נוסף." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "הוספה ל־OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "בחירת סוג" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "בוצה" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "מקום ללא שם" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "ניתוח כתובת Geo נכשל" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "נקודת ציון" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "דיוק" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "דיוק: ‏%s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "מספר טלפון" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "מציעה איסוף עצמי" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "לא מציעה איסוף עצמי" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "מציעה איסוף עצמי בלבד" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "גישה ציבורית לאינטרנט" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "אין גישה לאינטרנט" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "רשת אלחוטית ציבורית" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "גישה לאינטרנט עם כבל" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "מחשבים זמינים לשימוש" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "יש עזרה עם האינטרנט" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "אין שירותים זמינים" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "יש שירותים זמינים" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "גישה לנכים" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "גישה מוגבלת לנכים" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "אין גישה לנכים" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "מוקצה למשתמשי כסאות גלגלים" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "‫%s מתחת לפני הים" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "בגובה פני הים" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "דת:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "המקום לא נמצא ב־OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "נקודות הציון שבכתובת שגויות" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "הכתובת לא נתמכת" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "מ־%s אל %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "טוען אירי מפה להדפסה" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "נתן לבטל ההדפסה אם היא לוקחת יותר מדי זמן" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ביטול הדפסה" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "הוספה דרך מיקום" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "הסרה דרך מיקום" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "להפוך את המסלול" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "הוספת %s אל %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "פתיחת הכתובת נכשלה" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "לפתוח עם %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "אירע כשל בטעינת הקובץ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "זמן משוער: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "המסלולים סופקו על ידי %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "להתחיל בנקודה %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "התחלה" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "ללכת %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "להגיע אל %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "הגעה" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "להציג הנחיות הליכה" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "להסתיר הנחיות הליכה" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "לטעון חלופות קודמות" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "לטעון חלופות מאוחרות" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "לא נמצאו חלופות מוקדמות." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "לא נמצאו חלופות מאוחרות יותר." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e ב%b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "לא נמצאו נתוני לוח זמנים למסלול הזה." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "לא נמצא ספק למסלול הזה." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "דקה" +msgstr[1] "שתי דקות" +msgstr[2] "‫%s דקות" +msgstr[3] "‫%s דקות" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "שעה" +msgstr[1] "שעתיים" +msgstr[2] "‫%s שעות" +msgstr[3] "‏‫%s שעות" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "‫%s:%s שעה" +msgstr[1] "‫%s:%s שעתיים" +msgstr[2] "‫%s:%s שעות" +msgstr[3] "‫%s:%s שעות" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "מסביב לשעון" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "מהזריחה עד השקיעה" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "כל יום" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s – %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "חגים ציבוריים" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "חופשי בית ספר" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "לא פתוח" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s – %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "לא ידוע" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "מדויק" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "‫%s שע׳" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "‫%s שע׳ %s דק׳" +msgstr[1] "‏‫%s שע׳ %s דק׳" +msgstr[2] "‏‫%s שע׳ %s דק׳" +msgstr[3] "‏‫%s שע׳ %s דק׳" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "‫%s min" +msgstr[1] "‫%s min" +msgstr[2] "‫%s דק׳" +msgstr[3] "‫%s דק׳‎" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "‏‫%s שנ׳" +msgstr[1] "‏‫%s שנ׳" +msgstr[2] "‏‫%s שנ׳" +msgstr[3] "‏‫%s שנ׳" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "‫%s ק״מ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "‫%s מ׳" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "‫%s מיל" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "‫%s רגל" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "התוסף הזה לא תומך בהגעה המאוחרת ביותר" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "להמשיך על %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "להמשיך" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "לפנות שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "לפנות שמאלה" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "לסטות שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "לסטות שמאלה" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "לפנות שמאלה בחדות אל %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "לפנות שמאלה בחדות" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "לפנות ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "לפנות ימינה" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "לסטות ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "לסטות ימינה" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "לפנות ימינה בחדות אל %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "לפנות ימינה בחדות" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "בכיכר, לצאת ביציאה ה%s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "בכיכר, לצאת ביציאה אל %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "להיכנס לכיכר" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "להשתמש במעלית ולצאת בקומה %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "להשתמש במעלית" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "לפנות פניית פרסה שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "לפנות פניית פרסה שמאלה" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "לפנות פניית פרסה ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "לפנות פניית פרסה ימינה" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "ניתן לחפש גם מקום מסוים, כמו „בית קפה ליד הרחוב הראשי, ירושלים” או „מלון " +#~ "קרוב לאוניברסיטה, תל אביב”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook check-in privacy setting" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#~ msgid "Everyone" +#~ msgstr "כולם" + +#~ msgid "Friends of friends" +#~ msgstr "חברים של חברים" + +#~ msgid "Just friends" +#~ msgstr "חברים בלבד" + +#~ msgid "Just me" +#~ msgstr "רק אני" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "מפות לא מוצא את המקום להירשם עם Facebook. נא לבחור אחד מרשימה זו." + +#~ msgid "Quit" +#~ msgstr "יציאה" + +#~ msgid "Load Map Layer" +#~ msgstr "טעינת שכבת מפה" + +#~ msgid "Open with another application" +#~ msgstr "פתיחה באמצעות יישום אחר" + +#~ msgid "Check in here" +#~ msgstr "הרשמה כאן" + +#~ msgid "Don't have an account?" +#~ msgstr "אין לך חשבון?" + +#~ msgid "Press enter to search" +#~ msgstr "יש ללחוץ Enter לחיפוש" + +#~ msgid "OK" +#~ msgstr "אישור" + +#~ msgid "Population:" +#~ msgstr "אוכלוסייה:" + +#~ msgid "Altitude:" +#~ msgstr "גובה:" + +#~ msgid "Opening hours:" +#~ msgstr "שעות פתיחה:" + +#~ msgid "Internet access:" +#~ msgstr "גישת אינטרנט:" + +#~ msgid "Wheelchair access:" +#~ msgstr "נגישות נכים:" + +#~ msgid "Phone:" +#~ msgstr "טלפון:" + +#~ msgid "yes" +#~ msgstr "יש" + +#~ msgid "limited" +#~ msgstr "מוגבל" + +#~ msgid "no" +#~ msgstr "אין" + +#~ msgid "designated" +#~ msgstr "מובנה" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "אתרנט" + +#~ msgid "terminal" +#~ msgstr "מסוף" + +#~ msgid "service" +#~ msgstr "שרת" + +#~ msgid "%f h" +#~ msgstr "%f שעות" + +#~ msgid "%f s" +#~ msgstr "%f שניות" + +#~ msgid "%f km" +#~ msgstr "%f ק״מ" + +#~ msgid "%f m" +#~ msgstr "%f מ׳" + +#~ msgid "%f mi" +#~ msgstr "%f מיל" + +#~ msgid "%f ft" +#~ msgstr "%f רגל" + +#~ msgid "Country code: %s" +#~ msgstr "קוד מדינה: %s" + +#~ msgid "_Share" +#~ msgstr "_שיתוף" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "User set last known location" +#~ msgstr "User set last known location" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I’m here!" +#~ msgstr "אני כאן!" + +#~ msgid "%f km²" +#~ msgstr "‏%f ק״מ²" + +#~ msgid "To" +#~ msgstr "אל" + +#~ msgid "From" +#~ msgstr "מ" + +#~ msgid " km2" +#~ msgstr " ק״מ2" + +#~ msgid "Satellite" +#~ msgstr "לווין" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 00000000..bcc3d5be --- /dev/null +++ b/po/hi.po @@ -0,0 +1,261 @@ +# Hindi translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Solomon Nadar , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-11-09 07:50+0000\n" +"PO-Revision-Date: 2014-11-09 20:06-0000\n" +"Last-Translator: Solomon Nadar \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"नक्शे आपको सभी दुनिया भर में नक्शे के लिए त्वरित पहुँच देता है. दोस्त से मिलने के लिए एक जगह " +"का पता लगाने के लिए, या जल्दी से एक शहर या सड़क के लिए खोजकर आप ढूंढ रहे जगह आपको " +"बताती है." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"नक्शे दुनिया भर में हजारों, सैकड़ों लोगों के द्वारा बनाई सहयोगी OpenStreetMap डेटाबेस का " +"उपयोग करता है." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"\"मेन स्ट्रीट के पास पब, बोस्टन\" या \"अलेक्सान्देरप्लात्ज़ के पास होटल, बर्लिन\" इस तरह के " +"रूप में स्थानों के विशिष्ट प्रकार के लिए भी आप खोज कर सकते हैं." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:79 +#: ../src/mainWindow.js:347 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "नक्शे" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "एक साधारण नक्शा अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "नक्शे;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "खिड़की का आकर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "खिड़की का आकर (चौड़ाई और ऊंचाई)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "खिड़की स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "खिड़की स्थान (X और Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "खिड़की अधिकतम पर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "खिड़की अधिकतम स्थिति" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "अंतिम ज्ञात स्थान और सटीकता" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "अंतिम ज्ञात स्थान (अक्षांश और देशांतर डिग्री में) और सटीकता (मीटर में)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "अंतिम ज्ञात स्थान का विवरण" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "उपयोगकर्ता की अंतिम ज्ञात स्थान का विवरण." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "खोज परिणामों की अधिकतम संख्या" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "जियोकोड खोज से खोज परिणामों की अधिकतम संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "उपयोगकर्ता ने सेट की अंतिम ज्ञात स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "अंतिम ज्ञात स्थान उपयोगकर्ता द्वारा मैन्युअल रूप से सेट किया गया था या नहीं." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "जमा करने हाल के स्थानों की संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "जमा करने हाल के दर्शन किये स्थानों की संख्या." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "के बारे में" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "छोड़े" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहाँ क्या है?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "मैं यहां हूं!" + +#: ../src/geoclue.js:137 ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "वर्तमान स्थान" + +#: ../src/mainWindow.js:345 +msgid "translator-credits" +msgstr "अनुवादक-प्रसिद्धि" + +#: ../src/mainWindow.js:348 +msgid "A map application for GNOME" +msgstr "GNOME के लिए एक नक्शा अनुप्रयोग" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "वर्तमान स्थान पर जाएं" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "नक्शा प्रकार चुनें" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "मार्ग योजनाकार टॉगल करें " + +#: ../src/main-window.ui.h:5 +msgid "Maps is offline!" +msgstr "नक्शे ऑफ़लाइन है!" + +#: ../src/main-window.ui.h:6 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"नक्शे ठीक ढंग से काम करने के लिए एक सक्रिय इंटरनेट कनेक्शन की जरूरत है, लेकिन एक नहीं पाया " +"जा सका." + +#: ../src/main-window.ui.h:7 +msgid "Check your connection and proxy settings." +msgstr "आपके कनेक्शन और प्रॉक्सी सेटिंग्स की जाँच करें." + +#: ../src/routeService.js:72 +msgid "No route found." +msgstr "कोई मार्ग नहीं मिला." + +#: ../src/routeService.js:79 +msgid "Route request failed." +msgstr "मार्ग अनुरोध विफल." + +#: ../src/routeService.js:150 +msgid "Start!" +msgstr "शुरू करो!" + +#: ../src/searchResultBubble.js:58 +#, javascript-format +msgid "Country code: %s" +msgstr "देश कोड: %s" + +#: ../src/searchResultBubble.js:64 +#, javascript-format +msgid "Postal code: %s" +msgstr "डाक कोड: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:236 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अनुमानित समय: %s" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "सटीकता: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:189 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:192 +msgid "Exact" +msgstr "ठीक" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f h" +msgstr "%f घं" + +#: ../src/utils.js:293 +#, javascript-format +msgid "%f min" +msgstr "%f मि" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:304 +#, javascript-format +msgid "%f km" +msgstr "%f किमी" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:307 +#, javascript-format +msgid "%f m" +msgstr "%f मी" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:315 +#, javascript-format +msgid "%f mi" +msgstr "%f मील" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:318 +#, javascript-format +msgid "%f ft" +msgstr "%f फी" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 00000000..d67a8d2f --- /dev/null +++ b/po/hr.po @@ -0,0 +1,2074 @@ +# Croatian translation for gnome-maps. +# Copyright (C) 2017 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-06 10:26+0000\n" +"PO-Revision-Date: 2021-09-09 17:36+0200\n" +"Last-Translator: gogo \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karte" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Potražite mjesta diljem svijeta" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama diljem svijeta. Omogućuje vam da brzo " +"pronađete mjesto koje tražite pretragom gradova ili ulica, ili lociranje " +"mjesta za sastanak s prijateljem." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste suradničku OpenStreetMap bazu podataka, načinjenu od strane " +"stotine tisuća ljudi diljem svijeta." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Karte" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednostava aplikacija za karte" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karte;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Omogućuje vašoj lokaciji da bude prikazana na mapi." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "posljednja pogledana lokacija" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate posljednje pogledane lokacije." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "uvećanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Razina uvećanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta karte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta prikazane karte (ulice, područje, itd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veličina prozora" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj prozora" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (x-os i y-os)" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Prozor uvećan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage iz geokôd pretrage." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Broj nedavnih mjesta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Broj nedavnih ruta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Broj nedavno posjećenih ruta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti Foursquare provjere" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti Foursquare provjere. Moguće " +"vrijednosti su: public, followers ili private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitira provjeru na Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Facebook " +"računu pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitira provjeru na Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Twitter računu " +"pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili adresa e-pošte" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Označava je li se korisnik prijavio za uređivanje OpenStreetMap karata." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Posljednja korištena vrsta prijevoza za određivanje rute" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Koristi noćni način rada" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Je li aplikacija u noćnom načinu rada." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Koristi hibridne zračne nazive" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Trebaju li zračni nazivi koristiti hibridni izgled (s oznakama)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Vidljivost" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Odustani" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "P_rovjeri" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Sljedbenike" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privatno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Početak rute" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj međuodredište" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Završetak rute" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Što je ovdje?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj lokaciju" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Izvezi prikaz" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvoz" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Uključi rute i oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Odaberi vrstu karte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Udalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Približi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Ispiši rutu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Uklj/Isklj omiljene" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Općenito" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaži prečice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zatvori" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Prikaz karte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Udalji" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Uklj/Isklj promjenu veličine" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na prikaz ulica" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na satelitski prikaz" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj karte" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvori sloj karte…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Uključite uslugu lociranja kako bi pronašli svoju lokaciju" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Odustani" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Postavke lokacije" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noćni način rada" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Postavi OpenStreetMap račun" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvezi kao sliku" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O Kartama" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Karta je nedostupna!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karta treba aktivni internet povezivanje kako bi ispravno funkcionirala, ali " +"se ne može nijedan pronaći." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Provjerite vaše povezivanje i proxy postavke." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap račun" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijavi se za uređivanje karata" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozite poboljšati karte, koristeći\n" +"OpenStreetMap račun." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pošta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lozinka" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Odjava" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije uspjelo. Pokušajte ponovno, ili posjetite\n" +"OpenStreetMap za obnovu lozinke." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kôd provjere se ne podudara, pokušajte ponovno." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Upišite kôd provjere prikazan iznad" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Provjeri" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeni" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap račun je aktivan." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjava" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Kućni broj" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Grad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nijedno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Promjene karte biti će vidljive na svim kartama koje\n" +"koriste OpenStreetMap podatke." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno korišteno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Sljedeće" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nema pronađenih rezultata" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Dogodila se greška" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ispusti za promjenu redoslijeda rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Pošalji u…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Provjeri…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvori sloj karte" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvori" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Uklj/Isklj vidljivost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta se traži pomoću GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Plan ruta za javni prijevoz omogućio je GNOME\n" +"pomoću rasporeda podataka dobivenih od prijevozničkih tvrtki ili agencija.\n" +"Prijevozničke tvrtke ili agencije ne mogu biti odgovorne za prikazane " +"rezultate.\n" +"GNOME ne može jamčiti točnost prikazanih planova i rasporeda.\n" +"Prikazani nazivi i trgovačke marke trebaju se smatrati registriranim " +"zaštitinim zankovima kada je primjenjivo." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Prikaži više rezultata" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sakrij posredna zaustavljanja i informacije" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Prikaži posredna zaustavljanja i informacije" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Kreni odmah" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odlazak" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Dolazak" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Prikaz" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busevi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Valkovi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Zrakoplovi" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Dijeli lokaciju" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Smjerovi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označi kao omiljeno" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspješna pretraga strukture pločice u direktoriju" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neuspješna obrada XML dokumenta" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nedostaju potrebna svojstva" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nemoguć pronalazak OSM elementa" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne strukture bloka u direktoriju" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Veličina bloka za direktorij lokalnih blokova" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Prikaži inačicu programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Zanemari mrežnu dostupnost" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Odaberi račun" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Učitavanje" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Odaberi mjesto" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Foursquara. Odaberite jedno s " +"popisa." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Provjeri u %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napiši neobaveznu poruku za provjeru u %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nemoguće je pronaći “%s” na društvenim mrežama" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nemoguće je pronaći prikladno mjesto za provjeru ove lokacije" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Vjerodajnice su istekle, otvorite mrežne račune za prijavu i omogućavanje " +"ovog računa" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ništa nije pronađeno ovdje!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodana na kartu, zapamtite da može potrajati prije nego se " +"pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sustav je samo za čitanje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate za tamo dozvolu spremanja" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorij ne postoji" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Naziv datoteke nije naveden" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nemoguće izvesti prikaz" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Trenutna lokacija" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "pogrešne koordinate" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška obrade" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Zahtjev rute neuspio." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ruta nije pronađena." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Kreni!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje s uslugom lociranja" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "gogo https://launchpad.net/~trebelnik-stefina" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Aplikacija karata za GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autorsko pravo © 2011 – 2021 Red Hat, Inc. i autori GNOME karta" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke karte omogućili %s i doprinositelji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blokove karte je omogućio %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pretragu je omogućio %s koristeći %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Neuspjelo otvaranje sloja" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Želite li nastaviti?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Otvorit ćete datoteku s ukupnom veličinom od %s MB. Ovo može potrajati dulje " +"vrijeme" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Neuspjelo otvaranje GeoURI-ja" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Uspjeh" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Neispravan zahtjev" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt nije pronađen" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, netko drugi je upravo promijenio objekt" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt je obrisan" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Način ili veza povezana za nepostojeći objekt" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Naziv" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Službeni naziv. To se uobičajeno pojavljuje na znakovima." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Web stranica" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Ovo nije valjan URL. Pobrinite se da sadrži http:// ili https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Službena web stranca. Pokušajte koristiti najosnovnije od URL-a npr. http://" +"primjer.com umjesto http://primjer.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format, započinjući s + znakom. Ne " +"zaboravite lokalne zakone, osobito za privatne telefonske linije." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-pošta" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ovo nije valjana adresa e-pošte. Provjerite da niste uključili mailto: " +"prefiks protokola." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontakt adresa e-pošte za upite. Dodajte samo adrese e-pošte koje su " +"namijenjene za javnu upotrebu." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišteni format trebao bi uključiti kôd jezika i naslov članka poput “hr:" +"Naslov članka”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Vrijeme otvaranja" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Pogledajte poveznicu u naslovu za pomoć formata." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Visina" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Uzvišenje (nadmorska visina) od točke u metrima." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Pristup za invalidska kolica" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ograničeno" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Određeno" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Pristup internetu" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Bežična mreža" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Žična mreža" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Usluga" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Usluga za van" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Samo" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizam" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizam" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaizam" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kršćanstvo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucijanizam" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizam" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Džainizam" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizam" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Više religija" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganizam" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizam" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scijentologija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizam" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikizam" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizam" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jezidizam" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrizam" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toaleti" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Napomena" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacije koje se koriste za informiranje drugih kartografa o neočekivanim " +"informacijama o nekom elementu, o autorovoj namjeri prilikom izrade, ili " +"savjeti za buduće poboljšanje." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj u OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Odaberi vrstu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Završeno" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Neimenovano mjesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Neuspješna obrada Geo URI-ja" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinate" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Točnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Točnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonski broj" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Pruža uslugu za van" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ne pruža uslugu za van" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Samo pruža uslugu za van" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Javni pristup internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nema pristupa internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Javno bežična mreža" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Žični pristup internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Računala dostupna za upotrebu" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Dostupan je internet pomoćnik" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nema dostupnih toaleta" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Dostupni toaleti" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Potuni pristup za invalidska kolica" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ograničeni pristup za invalidska kolica" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nema pristupa za invalidska kolica" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Namijenjeno za korisnike invalidskih kolica" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s ispod razine mora" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "U razini mora" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Mjesto nije pronađeno na OpenStreetMapama" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate u URL-u nisu valjane" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL nije podržan" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavanje bloka karte za ispis" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti ispisivanje ako traje predugo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini ispisivanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj pomoću lokacije" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ukloni pomoću lokacije" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni rutu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s u %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Neuspjelo otvaranje URI-ja" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otvori sa %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "neuspješno učitavanje datoteke" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Vrijeme dolaska: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Planove je omogućio %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Polazak u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Polazak" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Pješači %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazak u %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Dolazak" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Prikaži upute pješačenja" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sakrij upute pješačenja" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj kasnije alternative" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nema pronađenih ranijih alternativa." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nema pronađenih kasnijih alternativa." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nema pronađenih podataka rasporeda za ovu rutu." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nema pronađenih pružatelja usluge za ovu rutu." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minute" +msgstr[2] "%s minuta" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s sat" +msgstr[1] "%s sata" +msgstr[2] "%s sati" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s sat" +msgstr[1] "%s:%s sata" +msgstr[2] "%s:%s sati" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Oko sata" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od sumraka do zore" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Javni praznici" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Napoznato" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Točno" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "% sat(a)" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s sat(a) %s min" +msgstr[1] "%s sat(a) %s min" +msgstr[2] "%s sat(a) %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Priključak ne podržava posljednji dolazak" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Nastavi u %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Nastavi" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skrenite lijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skrenite blago ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Skrenite blago ulijevo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skrenite oštro ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Skrenite oštro ulijevo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skrenite desno na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Skrenite desno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skrenite blago udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Skrenite blago udesno" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skrenite oštro udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Skrenite oštro udesno" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Idite na kružni tok" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Idite u dizalo i izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Idite u dizalo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Skrenite lijevo u %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Skrenite desno u %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Skrenite desno" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Možete čak pretražiti određenu vrstu lokacije, poput \"Kavane blizu " +#~ "Jelačić placa, Zagreb\" ili \"Hoteli blizu Straduna, Dubrovnik\"." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Postavke privatnosti Facebook provjere" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Posljednje korištene postavke privatnosti Facebook provjere. Moguće " +#~ "vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ili SELF." + +#~ msgid "Everyone" +#~ msgstr "Svakog" + +#~ msgid "Friends of friends" +#~ msgstr "Prijatelje prijatelja" + +#~ msgid "Just friends" +#~ msgstr "Samo prijatelje" + +#~ msgid "Just me" +#~ msgstr "Samo meni" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Karte ne mogu pronaći mjesto za provjeru sa Facebooka. Odaberite jedno s " +#~ "popisa." + +#~ msgid "Find a Route" +#~ msgstr "Potraži rutu" + +#~ msgid "Check in here" +#~ msgstr "Provjeri ovdje" + +#~ msgid "Show more information" +#~ msgstr "Prikaži više informacija" + +#~ msgid "Population:" +#~ msgstr "Populacija:" + +#~ msgid "Altitude:" +#~ msgstr "Visina:" + +#~ msgid "Opening hours:" +#~ msgstr "Vrijeme otvaranja:" + +#~ msgid "Internet access:" +#~ msgstr "Pristup internetu:" + +#~ msgid "Toilets:" +#~ msgstr "Toaleti:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Pristup za invalidska kolica:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "ograničeno" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "određeno" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL nije valjan" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "žični priključak" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "usluga" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemate račun?" + +#~ msgid "%f h" +#~ msgstr "%f sat" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta se traži pomoću OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj odredište" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Otvori s drugom aplikacijom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite Enter za pretragu" + +#~ msgid "Quit" +#~ msgstr "Zatvori" + +#~ msgid "OK" +#~ msgstr "U REDU" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvori sloj karte…" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..058cefd3 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1930 @@ +# Hungarian translation for gnome-maps. +# Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Balázs Úr , 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021. +# Gabor Kelemen , 2013, 2015, 2016, 2017. +# Balázs Meskó , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-12 01:12+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Térképek" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Helyek keresése a világ minden pontján" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"A Térképek gyors hozzáférést ad térképekhez az egész világról. Lehetővé " +"teszi egy keresett hely gyors megtalálását település vagy utca keresésével, " +"vagy találni egy helyet, ahol ismerőseivel találkozhat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A Térképek az együttműködésen alapuló OpenStreetMap adatbázist használja, " +"amelyet több százezer ember készít a világ minden részén." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "A GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Térképek" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Egyszerű térképalkalmazás" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Térképek;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lehetővé teszi a földrajzi helyének megjelenítését a térképen." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "legutóbbi megtekintett hely" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Az utolsó megtekintett hely koordinátái." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "nagyítás" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nagyítási szint" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Térképtípus" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "A megjelenítendő térkép típusa (utca, légi, stb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ablakméret" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ablak mérete (szélesség és magasság)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ablakpozíció" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ablakpozíció (X és Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ablak teljes méretű" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Az ablak maximalizált állapota" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "A keresési találatok maximális száma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "A keresési találatok maximális száma a geokód keresésből." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "A tárolandó legutóbbi helyek száma" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "A tárolandó legutóbb látogatott helyek száma." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "A tárolandó legutóbbi útvonalak száma" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "A tárolandó legutóbb látogatott útvonalak száma." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare bejelentkezés adatvédelmi beállításai" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Legutóbb használt Foursquare bejelentkezés adatvédelmi beállításai. " +"Lehetséges értékek: public, followers, vagy private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare bejelentkezés Facebook üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare hozzászólásként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Facebook fiókban." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare bejelentkezés Twitter üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare üzenetként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Twitter fiókban." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap felhasználónév vagy e-mail cím" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Jelzi, hogy a felhasználó bejelentkezett-e az OpenStreetMap adatok " +"szerkesztéséhez." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Legutóbb útvonaltervezéshez használt közlekedéstípus" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Éjszakai mód" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Az alkalmazás éjszakai módban van-e." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hibrid légi csempék használata" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "A légi csempék a hibrid stílust használják-e (címkékkel)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Láthatóság" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Közzététel a Facebookon" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Közzététel a Twitteren" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Mégse" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Bejelentkezés" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Nyilvános" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Követők" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Személyes" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Útvonal innen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Közbenső megálló hozzáadása" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Útvonal ide" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mi van itt?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Hely másolása" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMap-hez" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportálási nézet" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportálás" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Útvonalak és jelölők megtartása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Térképtípus kiválasztása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Kicsinyítés" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Nagyítás" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Útvonal nyomtatása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Kedvencek ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Általános" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Gyorsbillentyűk megjelenítése" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Keresés" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Kilépés" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Térkép nézet" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Nagyítás" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Kicsinyítés" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Váltás utcanézetre" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Váltás légifelvételre" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Címkék megjelenítése" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Alak réteg megnyitása…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Helymeghatározó szolgáltatások bekapcsolása a helyzetének megkereséséhez" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Mégse" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Helybeállítások" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Éjszakai mód" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap fiók beállítása" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportálás képként" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Gyorsbillentyűk" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A Térképek névjegye" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "A Térképek kapcsolat nélküli!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"A Térképeknek aktív internet-kapcsolat szükséges a megfelelő működéshez, de " +"az nem található." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Ellenőrizze a kapcsolat és a proxy beállításait." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap fiók" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jelentkezzen be a térképek " +"szerkesztéséhez" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Segítsen a térkép javításában, egy\n" +"OpenStreetMap fiók használatával." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Jelszó" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regisztráció" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Bejelentkezés" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Elnézést, ez nem sikerült. Próbálja újra, vagy látogassa meg az\n" +"OpenStreetMap\n" +"oldalt a jelszava helyreállításához." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Az ellenőrző kód nem egyezik, próbálja újra." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Írja be a fent megjelenített ellenőrző kódot" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ellenőrzés" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Bejelentkezve" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Az OpenStreetMap fiókja aktív." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kijelentkezés" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Utca" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Házszám" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Irányítószám" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Város" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Típus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nincs" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Mező hozzáadása" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Megjegyzés" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"A térképváltozások mindenhol láthatóvá válnak,\n" +"ahol OpenStreetMap adatokat használnak." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nemrég használt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Következő" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nincs találat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Hiba történt" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Húzza az útvonal sorrendjének módosításához" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Másolás" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Küldés neki…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Bejelentkezés…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Megnyitás" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Útvonalkeresés a GraphHopperrel" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"A közlekedési útvonalak harmadik féltől származó szolgáltatásból\n" +"származnak.\n" +"A GNOME nem garantálhatja a megjelenített útvonalak és menetrendek " +"helyességét.\n" +"Ne feledje, hogy egyes szolgáltatók lehet hogy nem tartalmazzák az összes " +"elérhető\n" +"közlekedési módokat, például egy nemzeti szolgáltató lehet, hogy nem " +"tartalmazza\n" +"a légitársaságokat, egy helyi szolgáltató pedig nem tartalmazza a " +"regionális\n" +"vonatokat.\n" +"A megjelenített nevek és márkák adott esetben bejegyzett védjegyeknek " +"tekintendők." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "További találatok megjelenítése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Közbenső megállók és információk elrejtése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Közbenső megállók és információk megjelenítése" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Indulás most" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Indulás ekkor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Érkezés ekkor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Megjelenítés" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buszok" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Villamosok" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vonatok" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metró" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Kompok" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Repülőgépek" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Hely megosztása" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Hozzáadás új útvonalhoz" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Útvonal" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Megjelölés kedvencként" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Nagyítson a hely hozzáadásához!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Nagyítás" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nem sikerült csempeszerkezetet találni a könyvtárban" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Az XML dokumentum feldolgozása sikertelen" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Szükséges attribútumok hiányoznak" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nem sikerült megtalálni az OSM elemet" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Egy útvonal a helyi csempék könyvtárszerkezetéhez" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "A csempék mérete a helyi csempék könyvtárához" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "A program verziószámának megjelenítése" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Hálózat elérhetőségének figyelmen kívül hagyása" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FÁJL…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Válasszon egy fiókot" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Betöltés" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Válasszon egy helyet" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Foursquare " +"használatával. Válasszon egyet erről a listáról." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Bejelentkezés ide: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Opcionális üzenet írása a következőbe való bejelentkezéshez: %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nem található „%s” a közösségi szolgáltatásban" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nem található megfelelő hely a bejelentkezéshez ezen a helyen" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"A hitelesítési adatok lejártak, nyissa meg az Online fiókokat a " +"bejelentkezéshez, és engedélyezze ezt a fiókot" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Itt nincs semmi!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A hely hozzáadva a térképhez, de eltarthat egy ideig, amíg megjelenik a " +"térképen és a keresési találatokban." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Térképek itt: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "A fájlrendszer csak olvasható" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nincs jogosultsága oda menteni" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "A könyvtár nem létezik" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nincs megadva fájlnév" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "A nézet exportálása sikertelen" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Jelenlegi hely" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "érvénytelen koordináta" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "feldolgozási hiba" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "ismeretlen geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Az útvonalkérés nem sikerült." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nem található útvonal." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Indulás!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Minden rétegfájl" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Nem sikerült kapcsolódni a helymeghatározó szolgáltatáshoz" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Meskó Balázs \n" +"Úr Balázs " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Térképalkalmazás a GNOME-hoz" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. és a GNOME Térképek szerzői" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Térképadatok: %s és közreműködők" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "A térképcsempéket a(z) %s szolgáltatja" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "A keresést a(z) %s biztosította %s használatával" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "A réteg megnyitása nem sikerült" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Szeretné folytatni?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Arra készül, hogy %s MB-nyi összméretű fájlokat nyit meg. A betöltése több " +"időt vehet igénybe." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "A fájltípus nem támogatott" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "A GeoURI megnyitása nem sikerült" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Helytelen felhasználónév vagy jelszó" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sikerült" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Rossz kérés" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Nem található objektum" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktus, valaki épp most módosította az objektumot" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Az objektum törlésre került" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Út vagy kapcsolat nem létező gyermekekre hivatkozik" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Név" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "A hivatalos név. Jellemzően ez jelenik meg a jelzéseken." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Cím" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Weboldal" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ez nem érvényes URL. Győződjön meg róla, hogy tartalmazza a http:// vagy " +"https:// protokollt." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A hivatalos honlap. Próbálja meg az URL alapvető formáját használni, pl. " +"http://pelda.hu a http://pelda.hu/index.html helyett." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonszám. Használja a nemzetközi formátumot a + jellel. Figyeljen a helyi " +"adatvédelmi törvényekre, különösen a magántelefonszámokra." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +#| msgid "This is not a valid URL. Make sure to include http:// or https://." +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ez nem érvényes e-mail-cím. Győződjön meg arról, hogy ne tartalmazza a" +" mailto: protokollelőtagot." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kapcsolati e-mail-cím a kérdésekhez. Csak olyan e-mail-címet adjon meg, " +"amelyet nyilvánosan használhatónak szán." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"A használt formátumban legyen benne a nyelvi kód és a cikk címe, mint " +"például „hu:Cikk címe”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Nyitva tartás" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Kövesse a címke hivatkozását formázási segítségért." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Népesség" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Magasság" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Egy pont tengerszint feletti magassága méterben." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Kerekesszékes elérés" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Igen" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nem" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Korlátozott" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Kijelölt" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internet-hozzáférés" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Vezetékes" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Szolgáltatás" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Elvitel" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Kizárólag" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Vallás" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhizmus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kereszténység" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Dzsainizmus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Iszlám" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Több vallás" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pogányság" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pasztafarizmus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Szcientológia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Sintoizmus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Szikhizmus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitárius univerzalizmus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jezidizmus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroasztrizmus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalett" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Megjegyzés" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Más térképezőknek szánt információ, egy elem nem egyértelmű " +"tulajdonságairól, a szerző szándékáról, vagy tippek a további finomításokhoz." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMaphez" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Válasszon egy típust" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Kész" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Névtelen hely" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "A Geo URI feldolgozása nem sikerült" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordináták" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Pontosság" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Pontosság: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonszám" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Elvitelt kínál" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nem kínál elvitelt" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Csak elvitelt kínál" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Nyilvános internet-hozzáférés" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nincs internet-hozzáférés" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Nyilvános Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Vezetékes internet-hozzáférés" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Használható számítógépek" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetes segítség érhető el" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Toalett nem érhető el" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toalett elérhető" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Kerekesszékkel elérhető" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Kerekesszékkel korlátozottan érhető el" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Kerekesszékkel nem érhető el" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Kerekesszéket használóknak kijelölt" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "Ennyivel a tengerszint alatt: %s" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Tengerszinten" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Vallás:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "A hely nem található az OpenStreetMapen" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Az URL-ben lévő koordináták nem érvényesek" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Az URL nem támogatott" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Ettől: %s, eddig: %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Térképszelvények betöltése nyomtatáshoz" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Megszakíthatja a nyomtatást, ha ez túl sokáig tart" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Nyomtatás megszakítása" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Hozzáadás hely szerint" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Eltávolítás hely szerint" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Fordított útvonal" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s hozzáadása ehhez: %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Az URI megnyitása nem sikerült" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Megnyitás %s használatával" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nem sikerült betölteni a fájlt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Becsült idő: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Az útvonalakat a(z) %s szolgáltatja" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Indulás innen: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Indulás" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gyaloglás: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Érkezés ide: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Érkezés" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Gyaloglási utasítások megjelenítése" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Gyaloglási utasítások elrejtése" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Korábbi lehetőségek betöltése" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Későbbi lehetőségek betöltése" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nem található korábbi lehetőség." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nem található későbbi lehetőség." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b. %e." + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nem található menetrend ehhez az útvonalhoz." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nem található szolgáltató ehhez az útvonalhoz." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s óra" +msgstr[1] "%s óra" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s óra" +msgstr[1] "%s:%s óra" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Éjjel-nappal" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Napkeltétől napnyugtáig" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Minden nap" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Munkaszüneti napok" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Tanszüneti napok" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nincs nyitva" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Ismeretlen" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Pontos" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s ó" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ó %s perc" +msgstr[1] "%s ó %s perc" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s mp" +msgstr[1] "%s mp" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "A bővítmény nem támogatja a legkésőbbi érkezést" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Haladjon tovább ezen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Haladjon tovább" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Forduljon balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Forduljon balra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Forduljon enyhén balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Forduljon enyhén balra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Forduljon élesen balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Forduljon élesen balra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Forduljon jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Forduljon jobbra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Forduljon enyhén jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Forduljon enyhén jobbra" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Forduljon élesen jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Forduljon élesen jobbra" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "A körforgalomban válassza a(z) %s. kijáratot" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "A körforgalomban válassza a(z) %s felé tartó kijáratot" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Menjen a körforgalomba" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Menjen a lifthez, és szálljon ki itt: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Menjen a lifthez" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Forduljon vissza balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Forduljon vissza balra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Forduljon vissza jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Forduljon vissza jobbra" diff --git a/po/id.po b/po/id.po new file mode 100644 index 00000000..24fb4b00 --- /dev/null +++ b/po/id.po @@ -0,0 +1,2042 @@ +# Indonesian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Andika Triwidada , 2013, 2014, 2015, 2018. +# Kukuh Syafaat , 2017-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-28\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-22 11:40+0700\n" +"Last-Translator: Kukuh Syafaat \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Peta" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Temukan tempat di seluruh dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memberi Anda akses cepat ke peta di seluruh penjuru dunia. Ini " +"memungkinkan Anda secara cepat menemukan tempat yang Anda cari dengan " +"mencari suatu kota atau jalan, atau menemukan tempat untuk bertemu dengan " +"teman." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta memakai basis data kolaboratif OpenStreetMap, yang dibuat oleh ratusan " +"ribu orang di seluruh dunia." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Proyek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Aplikasi peta sederhana" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Memungkinkan ditunjukkannya lokasi Anda pada peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi yang terakhir dilihat" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat dari lokasi yang terakhir dilihat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "perbesar" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Tingkat perbesaran" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis Peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta untuk ditampilkan (jalan, udara, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ukuran jendela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ukuran jendela (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posisi jendela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posisi jendela (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Jendela dimaksimalkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan termaksimalkan jendela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Banyaknya hasil pencarian maksimum" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Banyanyak hasil pencarian maksimum dari pencarian geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Cacah lokasi baru-baru ini yang disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Banyaknya lokasi baru-baru ini dikunjungi yang disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Cacah rute baru-baru ini yang akan disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Banyaknya rute baru-baru ini dikunjungi yang akan disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Pengaturan privasi check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pengaturan privasi check in Foursquare yang terakhir dipakai. Nilai yang " +"mungkin adalah: public (umum), followers (para pengikut), atau private " +"(pribadi)" + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Penyiaran Facebook untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah " +"kiriman dalam akun Facebook yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Penyiaran Twitter untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah twit " +"dalam akun Twitter yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat surel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menandakan apakah pengguna telah masuk untuk menyunting data OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Jenis transportasi terakhir yang digunakan untuk rute" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mode malam" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Apakah aplikasi sedang dalam mode malam." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Gunakan ubin udara hybrid" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Apakah ubin udara harus menggunakan gaya hybrid (dengan label)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Kenampakan" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Kirim pada Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Kirim pada Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Umum" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Pribadi" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute dari sini" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tambahkan tujuan antara" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute ke sini" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ada apa di sini?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ekspor tilikan" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Ekspor" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Sertakan rute dan penanda" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Perkecil" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Perbesar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Cetak Rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Jungkitkan favorit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Umum" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tampilkan Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cari" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Tilikan Peta" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Perbesar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Perkecil" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Jungkitkan skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke tampilan jalan" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke tampilan udara" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka layer shape" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Tampilkan Label" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Buka Layer Shape…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Nyalakan layanan lokasi untuk menemukan lokasi Anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Pengaturan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode Malam" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Menyiapkan Akun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Ekspor sebagai Citra" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tombol Pintas" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tentang Peta" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Peta luring!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlu suatu koneksi internet aktif untuk berfungsi dengan benar, tapi " +"tidak ditemukan satupun." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Periksalah pengaturan proksi dan koneksi Anda." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Masuklah untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantulah memperbaiki peta, memakai\n" +"akun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Surel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata Sandi" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Daftar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Masuk" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, itu tidak bisa. Harap coba lagi, atau kunjungi\n" +"OpenStreetMap untuk mereset sandi Anda." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kode verifikasi tidak cocok, silakan coba lagi." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Masukkan kode verifikasi yang ditunjukkan di atas" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifikasi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Masuk" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Akun OpenStreetMap Anda aktif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nomor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kode pos" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kota" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nihil" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Ruas" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan tampak pada semua peta yang memakai\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Baru-baru Ini Dipakai" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Selanjutnya" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hasil tak ditemukan" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Terjadi suatu kesalahan" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah urutan rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Kirim Ke…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Buka Layer Shape" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Jungkitkan kenampakan" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pencarian rute oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rute perjalanan untuk angkutan umum disediakan oleh layanan pihak ketiga.\n" +"GNOME tidak dapat menjamin kebenaran dari perjalanan dan jadwal yang " +"ditampilkan.\n" +"Perhatikan bawa beberapa penyedia mungkin tidak menyertakan semua mode " +"transportasi\n" +"yang tersedia, mis. sebuah penyedia nasional mungkin tidak menyertakan " +"penerbangan,\n" +"dan suatu penyedia lokal mungkin tidak punya jadwal kereta regional.\n" +"Nama dan merek yang ditampilkan dianggap sebagai merek dagang terdaftar " +"ketika berlaku." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tampilkan lebih banyak hasil" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyikan informasi dan perhentian antara" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tampilkan berhenti menengah dan informasi" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tampilkan" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bis" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trem" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Kereta api" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Kereta bawah tanah" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Penerbangan" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Bagikan lokasi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Tambah ke rute baru" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Petunjuk Arah" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Tandai sebagai favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Perbesar untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Perbesar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal menemukan struktur ubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal mengurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut yang diperlukan kurang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tak bisa temukan elemen OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Suatu path ke sebuah struktur direktori ubin lokal" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Ukuran ubin untuk direktori ubin lokal" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Tampilkan versi program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Abaikan ketersediaan jaringan" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Pilih sebuah akun" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Memuat" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Pilih suatu tempat" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Foursquare. Harap pilih " +"satu dari daftar ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in ke %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis suatu pesan tambahan untuk check in ke %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tak dapat menemukan \"%s\" dalam layanan sosial" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tak dapat temukan suatu tempat yang cocok untuk check in dalam lokasi ini" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kredensial telah kedaluarsa, harap buka Akun Daring untuk masuk dan " +"memfungsikan akun ini" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tak ada yang ditemukan di sini!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi ditambahkan ke peta, perhatikan bahwa mungkin perlu waktu sebelum itu " +"muncul pada peta dan dalam hasil pencarian." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem berkas hanya baca" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tak punya ijin untuk menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak ada" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tak ada nama berkas yang dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tak bisa mengekspor tilikan" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Lokasi Sekarang" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "koordinat tak valid" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "galat penguraian" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometri tak dikenal" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Permintaan rute gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Rute tak ditemukan." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Mulai!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Semua Berkas Lapisan" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung ke layanan lokasi" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Andika Triwidada , 2013-2016, 2018, 2019.\n" +"Kukuh Syafaat , 2017-2021." + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Aplikasi peta bagi GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak Cipta © 2011 – 2021 Red Hat, Inc. dan Penulis GNOME Peta" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan kontributor" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Ubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pencarian disediakan oleh %s menggunakan %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Gagal membuka layer" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Apakah Anda ingin melanjutkan?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Anda berencana membuka berkas dengan ukuran total %s MB. Ini bisa memakan " +"waktu untuk memuat" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Jenis berkas tak didukung" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau sandi salah" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Berhasil" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Permintaan yang buruk" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objek tak ditemukan" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, seseorang baru saja mengubah objek itu" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objek telah dihapus" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Cara atau hubungan mengacu ke anak yang tak ada" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama resmi. Ini biasanya apa yang tertulis pada rambu." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Situs web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ini bukan URL yang valid. Pastikan untuk menyertakan http:// atau https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Situs web resmi. Cobalah memakai bentuk URL paling dasar yaitu http://" +"example.com/ bukan http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telepon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nomor telepon. Gunakan format internasional, diawali dengan tanda +. Hati-" +"hati dengan perundangan privasi lokal, khususnya untuk nomor telepon pribadi." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Surel" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ini bukan alamat surel yang valid. Pastikan untuk tidak menyertakan awalan " +"protokol mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Hubungi alamat surel untuk pertanyaan. Tambahkan hanya alamat surel yang " +"dimaksudkan untuk digunakan secara publik." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang dipakai mesti menyertakan kode bahasa dan judul artikel seperti " +"\"id:Judul artikel\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Lihat taut dalam label untuk bantuan tentang format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Ketinggian" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevasi (ketinggian di atas muka laut) dari suatu titik dalam meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Akses kursi roda" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Terbatas" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Ditugaskan" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Akses internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Ethernet" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Layanan" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Bawa pulang" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Hanya" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kekristenan" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Multi Agama" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pagan" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Saintologi" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalisme Unitarian" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toilet" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Catatan" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informasi yang digunakan untuk menginformasikan pemeta lain mengenai " +"informasi yang tidak jelas tentang suatu elemen, maksud penulis saat " +"membuatnya, atau petunjuk untuk perbaikan lebih lanjut." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gagal mengurai URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinat" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Akurasi" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Akurasi: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Nomor telepon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Menawarkan bawa pulang" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Tidak menawarkan bawa pulang" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Hanya menawarkan bawa pulang" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Akses internet publik" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Tidak ada akses internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi Publik" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Akses internet berkabel" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Komputer tersedia untuk digunakan" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Bantuan Internet tersedia" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Tidak ada toilet yang tersedia" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toilet tersedia" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Dapat diakses kursi roda" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Aksesibilitas kursi roda terbatas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Tidak dapat diakses kursi roda" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Ditunjuk untuk pengguna kursi roda" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s di bawah permukaan laut" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Di permukaan laut" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Agama:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemukan pada OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tak valid" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL tak didukung" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s ke %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuat ubin peta untuk pencetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Anda dapat menggugurkan pencetakan bila ini makan waktu terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Gugurkan pencetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah lewat lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Hapus lewat lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rute sebaliknya" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambahkan %s ke %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "gagal memuat berkas" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Perkiraan waktu: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Jadwal disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mulai dari %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mulai" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba di %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tampilkan petunjuk berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyikan petunjuk berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Memuat alternatif sebelumnya" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Memuat alternatif kemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tidak ditemukan alternatif sebelumnya." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tidak ada alternatif lain yang ditemukan." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Tidak ada data jadwal yang ditemukan untuk rute ini." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Tidak ada penyedia yang ditemukan untuk rute ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s menit" +msgstr[1] "%s menit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s jam" +msgstr[1] "%s jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s jam" +msgstr[1] "%s:%s jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Sepanjang waktu" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Dari matahari terbit sampai terbenam" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Hari libur publik" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Hari libur sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Tak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Eksak" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s j" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s j %s mnt" +msgstr[1] "%s j %s mnt" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s mnt" +msgstr[1] "%s mnt" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s dtk" +msgstr[1] "%s dtk" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mil" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Pengaya ini tidak mendukung kedatangan terbaru" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Lanjutkan pada %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Lanjutkan" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri di %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit ke kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Belok sedikit ke kiri" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok kiri tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Belok kiri tajam" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit ke kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Belok sedikit ke kanan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok kanan tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Belok kanan tajam" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Di bundaran, ambil jalur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Di bundaran, ambil jalur ke %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Ambil bundaran" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Naik lift dan turun di %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Naik lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Putar balik kiri ke %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Putar balik kiri" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Putar balik kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Putar balik kanan" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Anda bahkan dapat mencari lokasi dengan jenis tertentu, seperti misalnya " +#~ "\"Pub dekat Main Street, Boston\" atau \"Hotel dekat Alexanderplatz, " +#~ "Berlin\"." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Pengaturan privasi check-in Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Pengaturan privasi check in Facebook yang terakhir dipakai. Nilai yang " +#~ "mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, atau SELF." + +#~ msgid "Everyone" +#~ msgstr "Semua orang" + +#~ msgid "Friends of friends" +#~ msgstr "Teman dari teman" + +#~ msgid "Just friends" +#~ msgstr "Teman saja" + +#~ msgid "Just me" +#~ msgstr "Hanya saya" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Peta tak dapat temukan tempat untuk check in dengan Facebook. Harap pilih " +#~ "satu dari daftar ini." + +#~ msgid "Find a Route" +#~ msgstr "Temukan Rute" + +#~ msgid "Check in here" +#~ msgstr "Check in di sini" + +#~ msgid "Show more information" +#~ msgstr "Tampilkan lebih banyak informasi" + +#~ msgid "Population:" +#~ msgstr "Populasi:" + +#~ msgid "Altitude:" +#~ msgstr "Ketinggian:" + +#~ msgid "Opening hours:" +#~ msgstr "Jam buka:" + +#~ msgid "Internet access:" +#~ msgstr "Akses internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toilet:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Akses kursi roda:" + +#~ msgid "Phone:" +#~ msgstr "Telepon:" + +#~ msgid "yes" +#~ msgstr "ya" + +#~ msgid "limited" +#~ msgstr "terbatas" + +#~ msgid "no" +#~ msgstr "tidak" + +#~ msgid "designated" +#~ msgstr "ditugaskan" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL OpenStreetMap tak valid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ethernet" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "pelayanan" + +#~ msgid "Primary menu" +#~ msgstr "Menu utama" + +#~ msgid "Don’t have an account?" +#~ msgstr "Tidak punya akun?" + +#~ msgid "%f h" +#~ msgstr "%f j" + +#~ msgid "%f min" +#~ msgstr "%f men" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Tambahkan tujuan" diff --git a/po/is.po b/po/is.po new file mode 100644 index 00000000..bacb714d --- /dev/null +++ b/po/is.po @@ -0,0 +1,1665 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2015, 2017, 2018, 2019. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-03-26 17:04+0000\n" +"PO-Revision-Date: 2019-07-06 07:57+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 2.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME-landakort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Finndu staði út um allan heim" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Landakortaforritið gefur aðgang að landakortum hvaðanæva úr heiminum. Það " +"hjálpar þér að finna staði, til dæmis með því að leita að götu eða bæ, nú " +"eða með því að skoða kort til að finna góðan stað til að hitta vinina." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Landakortaforritið notar OpenStreetMap gagnagrunninn, sem er " +"samvinnuverkefni hundruða þúsunda manna víðsvegar um heiminn." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Þú getur líka leitað að sérstökum tegundum staðsetninga, eins og “Pöbbar " +"nálægt Main Street, Boston”, \"Myndbandaleigur á Selfossi\" eða “Hótel " +"nálægt Alexanderplatz, Berlín”." + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:83 src/mainWindow.js:138 src/mainWindow.js:508 +msgid "Maps" +msgstr "Landakort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Einfalt landakortaforrit" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Landakort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leyfir að staðsetning þín sé birt á kortinu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "síðasta skoðuð staðsetning" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Hnit síðast skoðuðu staðsetningar." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "Gluggastærð" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "Gluggastærð (breidd og hæð)." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "Staðsetning glugga" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "Staðsetning glugga (x og y)." + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "Gluggi hámarkaður" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "Staða hámörkunar glugga" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "Hámarksfjöldi leitarniðurstaðna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "Hámarksfjöldi niðurstaðna úr leit með geocode." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "Fjöldi nýlegra staða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "Fjöldi nýlega heimsóttra staða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "Fjöldi nýlegra leiða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "Fjöldi nýlega notaðra leiða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Facebook. Möguleg " +"gildi eru: ALLIR, VINIR_VINA, ALLIR_VINIR eða SJÁLF(UR)." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Foursquare. " +"Möguleg gildi eru: opinbert, fylgjendur eða einka." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Tilkynning á Facebook við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tilkynningu um innskráningu " +"inn á Facebook-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Tilkynning á Twitter við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tíst um innskráningu inn á " +"Twitter-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "Notandanafn eða netfang á OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Gefur til kynna hvort notandinn hafi skráð sig inn til að breyta gögnum í " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "Síðast notaða gerð samgangna fyrir leiðaval" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Sýnileiki" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Senda á Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Senda á Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:21 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Hætta við" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "S_krá inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Allir" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Vinir vina" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bara vinir" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bara ég" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Opið (public)" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Fylgjendur" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Einka" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Hvað er hér?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Afrita staðsetningu" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Flytja út sem mynd" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Flytja út sýn" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Flytja út" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Hafa með leið og merkingar" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Almennt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Birta flýtilykla" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Leita" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Prenta leið" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Hætta" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortasýn" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Renna að" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Renna frá" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Víxla á milli kvarða" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skipta yfir í götusýn" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skipta yfir í loftmyndasýn" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Opna lag með lögunum" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Opna lag með lögunum…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Kveikja á staðsetningarþjónustum til að finna staðsetningu þína" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Hætta við" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Staðsetningarstillingar" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Setja upp OpenStreetMap aðgang" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: data/ui/main-window.ui:18 +#| msgid "About" +msgid "About Maps" +msgstr "Um hugbúnaðinn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Veldu tegund landakorts" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Renna frá" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Renna að" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Víxla Eftirlætum af/á" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Prenta leið" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Kortin eru án nettengingar!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Landakortaforritið þarf virka internet-tengingu til að virka almennilega, en " +"ekki hefur gengið að finna neina slíka." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Athugaðu tengi- og milliþjónastillingarnar þínar." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Bæta við nýja leið" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "Opna með öðru forriti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Merkja sem Eftirlæti" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Skrá inn hér" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap aðgangur" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Skrá inn til að breyta kortum" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjálpa til við að bæta kortið, með því\n" +"að nota OpenStreetMap-aðgang." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Tölvupóstur" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lykilorð" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Skrá inn" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ertu ekki með aðgang?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Æ, þetta virkaði ekki. Endilega reyndu aftur, eða farðu á\n" +"OpenStreetMap til að endurstilla lykilorðið þitt." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Sannvottunarkóðinn stemmdi ekki, prófaðu aftur." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Settu inn sannvottunarkóðann hér fyrir ofan" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sannreyna" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Skráð inn" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap aðgangurinn þinn er virkur." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Skrá út" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Húsnúmer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Póstnúmer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Borg" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tegund" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ekkert" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Bæta við reit" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Athugasemd" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Breytingar á korti verða sýnilegar á öllum kortum sem nota\n" +"OpenStreetMap gögn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nýlega notað" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Næsta" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Birta nánari upplýsingar" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "Ýttu á Enter til að leita" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "Engar niðurstöður fundust" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dragðu til að breyta röð leiðarinnar" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "Opna staðsetningu" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Opna" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "Opna lag með lögunum" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Víxla sýnilegu" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Leita að leiðum með GraphHopper" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "Leita að leiðum með OpenTripPlanner" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Leiðatöflur almenningssamgangna koma frá GNOME\n" +"í gegnum tímatöflugögn frá rekstraraðilum eða ferðaskrifstofum.\n" +"Þeir aðilar eru ekki ábyrgir fyrir niðurstöðum sem birtar eru hér.\n" +"GNOME getur ekki ábyrgst áreiðanleika þessara leiða og áætlana.\n" +"Nöfn og vörumerki ber að líta á sem eign viðkomandi fyrirtækja þegar slíkt á " +"við." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Birta fleiri niðurstöður" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Fela biðstöðvar á leiðinni og upplýsingar" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Sýna biðstöðvar á leiðinni og upplýsingar" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Fara núna" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Fara um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Koma um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Birta" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Strætisvagna" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Lestir" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Neðanjarðarlestir" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjur" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Núverandi staðsetning" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Nákvæmni: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Renndu að til að bæta við staðsetningu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Renna að" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Mistókst að finna tíglaskipan í möppu" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gat ekki þáttað XML-skjal" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nauðsynleg eigindi vantar" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Gat ekki fundið OSM-stak" + +#: src/application.js:96 +msgid "A path to a local tiles directory structure" +msgstr "Slóð á möppuuppbyggingu fyrir kortaflísar á tölvunni" + +#: src/application.js:100 +msgid "Show the version of the program" +msgstr "Sýna útgáfu forrits" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Veldu aðgang" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Hleð inn" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Veldu stað" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Facebook. Veldu einn af þessum " +"lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Foursquare. Veldu einn af þessum " +"lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Skrá inn í %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Þú getur skrifað skilaboð með innskráningunni í %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Villa hefur átt sér stað" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finn ekki \"%s\" á samfélagsmiðilsþjónustunni" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Get ekki fundið hentugan stað til að skrá inn á þessari staðsetningu" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Auðkennin eru útrunnin, opnaðu \"Aðgangar á neti\" til að skrá þig inn og " +"virkja þennan aðgang" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "Leið héðan" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "Bæta við áfangastað" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "Leið hingað" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "Ekkert fannst hér!" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Staðsetningunni var bætt á kortið, athugaðu að nokkur tími getur liðið " +"þangað til hún fer að sjást á kortinu eða koma upp í leitarniðurstöðum." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Landakort á %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Skráakerfi er aðeins til lestrar" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Þú hefur ekki nægar aðgangsheimildir til að vista þarna" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappan er ekki til" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ekkert skráarheiti tilgreint" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tókst ekki að flytja út sýnina" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ógild hnit" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "þáttunarvilla" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "óþekkt gerð rúmfræði" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "Leiðarbeiðni mistókst." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "Engin leið fannst." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "Byrja!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "Allar lagaskrár" + +#: src/mainWindow.js:441 +msgid "Failed to connect to location service" +msgstr "Tókst ekki að tengjast staðsetningarþjónustu" + +#: src/mainWindow.js:506 +msgid "translator-credits" +msgstr "Sveinn í Felli, sv1@fellsnet.is" + +#: src/mainWindow.js:509 +msgid "A map application for GNOME" +msgstr "Landakortaforrit fyrir GNOME" + +#: src/mainWindow.js:520 +#| msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Höfundarréttur © 2011 – 2019 Red Hat, Inc. og höfundar GNOME Maps" + +#: src/mainWindow.js:539 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortagögn frá %s og meðhöfundum" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:555 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortatíglar gefnir út af %s" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "Það er enginn stuðningur við skráategundina" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "Mistókst að opna lag" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "Mistókst að opna Geo URI-slóð" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "Engin tímatöflugögn fundust fyrir þessa leið." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Rangt notandanafn eða lykilorð" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Tókst" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Óleyfileg beiðni" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Hluturinn fannst ekki" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Árekstur, einhver annar er nýbúinn að breyta atriðinu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Hlutnum hefur verið eytt" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Leið eða vensl vísa í afleiður sem ekki eru til" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nafn" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Opinbera heitið. Venjulega það sem birt væri á skiltum og þess háttar" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Heimilisfang" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Vefsvæði" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Opinbera vefsvæðið. Reyndu að nota grunnform slóðarinnar, t.d. http://vefur." +"is í stað http://dæmi.is/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Símanúmer" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Símanúmer. Notaðu alþjóðlega framsetningu, sem byrjar á + merki. Vertu " +"meðvitaður um reglur þær sem í gildi eru á svæðinu, sérstaklega varðandi " +"persónulega friðhelgi." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Sniðið ætti að innihalda tungumálskóða og titil greinar, til dæmis \"is:" +"Heiti greinar\"." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Opnunartímar" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" +"Skoðaðu tengilinn í skýringum um hvar hægt sé að fá hjálp varðandi snið." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Fólksfjöldi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Hæð" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Hæð yfir sjávarmáli í metrum." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Hjólastólaaðgangur" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Já" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "takmarkað" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "uppgefið" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internetaðgangur" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Þráðlaust net" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Um kapal" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Útstöð" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Þjónusta" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Trúarbrögð" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Andatrú" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Búddismi" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kao-Daí" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristindómur" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfúsíusismi" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindúismi" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jaínismi" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Gyðingdómur" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Íslam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Margra trúarbragða" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Heiðni" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafaríanismi" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Vísindakirkjan" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhismi" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spírítismi" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taóismi" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Alþjóðlegur únítarismi" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jasismi" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Sóróismi" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Snyrtingar" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Athugasemd" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Upplýsingar sem notaðar eru til að gefa öðrum kortahönnuðum ekki-augljósar " +"ábendingar um tiltekið atriði, markmið höfundar þegar hann útbjó atriði, eða " +"ábendingar um hvernig hægt yrði að þróa/bæta það." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Veldu tegund" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Lokið" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Fólksfjöldi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Hæð:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Opnunartímar:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internetaðgangur:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Trúarbrögð:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Snyrtingar:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Hjólastólaaðgangur:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Sími:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Gat ekki þáttað Geo URI-slóð" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "já" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "takmarkað" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "uppgefið" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Frá %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Hleð inn kortaflísum fyrir prentun" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Þú getur hætt við prentun ef þetta tekur of langan tíma" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hætta við prentun" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Bæta við í gegnum staðsetningu" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjarlægja í gegnum staðsetningu" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Snúa við leið" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "Gat ekki opnað URI-slóð" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "mistókst að hlaða inn skrá" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Áætlaður tími: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Koma til %s" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Koma" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Byrja í %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "Upphaf" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Birta gönguleiðbeiningar" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Fela gönguleiðbeiningar" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Ganga %s" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Hlaða inn fyrri valkostum" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Hlaða inn síðari valkostum" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Engir fyrri möguleikar fundust." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Engir síðari möguleikar fundust." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mínúta" +msgstr[1] "%d mínútur" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d klukkustund" +msgstr[1] "%d klukkustundir" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d klukkustund" +msgstr[1] "%d:%02d klukkustundir" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "allan sólarhringinn" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "frá sólarupprás til sólarlags" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "alla daga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "almennir frídagar" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skólafrídagar" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ekki opið" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "um kapal" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "útstöð" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "þjónusta" + +#. Translators: Accuracy of user location information +#: src/utils.js:227 +msgid "Unknown" +msgstr "Óþekkt" + +#. Translators: Accuracy of user location information +#: src/utils.js:230 +msgid "Exact" +msgstr "Nákvæmt" + +#: src/utils.js:288 +#, javascript-format +msgid "%f h" +msgstr "%f klst" + +#: src/utils.js:290 +#, javascript-format +msgid "%f min" +msgstr "%f mín" + +#: src/utils.js:292 +#, javascript-format +msgid "%f s" +msgstr "%f sek" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:303 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:306 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:314 +#, javascript-format +msgid "%s mi" +msgstr "%s míl" + +#. Translators: This is a distance measured in feet +#: src/utils.js:317 +#, javascript-format +msgid "%s ft" +msgstr "%s fet" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Hætta" + +#~ msgid "OK" +#~ msgstr "Í lagi" + +#~ msgid "Load Map Layer" +#~ msgstr "Hlaða inn kortalagi" + +#~ msgid "Open Layer" +#~ msgstr "Opna lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f fet" + +#~ msgid "Country code: %s" +#~ msgstr "Landskóði: %s" diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..f1259873 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1896 @@ +# Italian translation for gnome-maps. +# Copyright (C) 2013 - 2019, 2021 Red Hat & gnome-maps authors +# This file is distributed under the same license as the gnome-maps package. +# Claudio Arseni , 2013, 2014, 2015. +# Gianvito Cavasoli , 2016-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-14 17:10+0000\n" +"PO-Revision-Date: 2021-03-17 09:25+0100\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mappe GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trova luoghi in giro per il mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mappe fornisce un rapido accesso alla cartografia mondiale. Consente di " +"trovare velocemente i luoghi utilizzando la ricerca per città o per " +"indirizzo e di trovare i luoghi in cui incontrare i propri amici." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mappe usa il database OpenStreetMap creato dalla collaborazione di centinaia " +"di migliaia di persone da ogni parte del mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"È possibile cercare posti specifici, tipo «Pub vicino a Via del Corso, Roma» " +"o «Hotel vicino a Piazza del Duomo, Milano»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Il progetto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mappe" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una semplice applicazione per le mappe" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mappe;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Consente alla vostra posizione di essere mostrata sulla mappa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultima posizione visualizzata" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinate dell'ultima posizione visualizzata." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Livello d'ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo di mappa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il tipo di mappa da mostrare (stradale, aerea, ecc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensione finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensione della finestra (larghezza e altezza)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizione finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizione della finestra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra massimizzata" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stato massimizzazione della finestra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numero massimo di risultati per la ricerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Numero massimo di risultati per la ricerca da codifica geografica." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numero di luoghi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numero di luoghi visitati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numero di percorsi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numero di percorsi effettuati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Facebook usate. I valori " +"possibili sono: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Foursquare usate. I " +"valori possibili sono: public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmissione a Facebook dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come post all'account Facebook " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmissione a Twitter dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come tweet all'account Twitter " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome utente o indirizzo e-mail di OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utente ha effettuato l'accesso per modificare i dati " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultimo tipo di trasporto usato per il percorso" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modalità notturna" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indica se l'applicazione è nella modalità notturna." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usa mappe aeree ibride" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Indica se le mappe aeree devono usare lo stile ibrido (con etichette)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilità" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Invia su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Invia su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "A_nnulla" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Chiunque" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Gli amici dei propri amici" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo gli amici" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo a me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Pubblico" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Follower" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privato" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Percorso da qui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Aggiungi destinazione intermedia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Percorso fino a qui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Cosa c'è qui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia posizione" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esporta visualizzazione" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includere percorsi e marcatori" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai alla posizione attuale" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Scegli il tipo di mappa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Attiva/Disattiva i preferiti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Stampa percorso" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra scorciatoie" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ricerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampa il percorso" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Esci" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Apre il menù principale" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualizzazione mappa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Attiva/Disattiva scala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va a alla posizione attuale" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passa alla visualizzazione stradale" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passa alla visualizzazione aerea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Apre livello di forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra etichette" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Apri livello di forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Attivare i servizi di localizzazione per rilevare la posizione" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annulla" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazioni di localizzazione" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalità notturna" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Impostazione account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esporta come immagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazioni su Mappe" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Apri menù principale" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mappe è fuori rete." + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mappe ha bisogno di una connessione a Internet attiva per funzionare " +"correttamente, ma al momento è impossibile trovarne una." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificare la propria connessione e le impostazioni del proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Accedi per modificare le mappe" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aiuta a migliorare la mappa, usando un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Iscriviti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Accedi" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Non ha funzionato. Riprovare, o visitare\n" +"OpenStreetMap per ripristinare la password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codice di verifica non corrisponde, riprovare." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Inserire il codice di verifica mostrato sopra" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Accesso effettuato" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "L'account OpenStreetMap è attivo." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Disconnetti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numero civico" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codice postale" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Città" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nessuno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aggiungi campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Le modifiche alla mappa saranno visibili su tutte le mappe che usano\n" +"dati di OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usate recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Successiva" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nessun risultato trovato" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Si è verificato un errore" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trascinare per modificare l'ordine del percorso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Apri posizione" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Invia a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Verifica…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Apri livello di forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Apri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Attiva/Disattiva visibilità" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricerca del percorso con GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I percorsi itineranti per il trasporto pubblico sono forniti da servizi\n" +"di terze parti.\n" +"GNOME non può garantire la correttezza degli itinerari e degli orari " +"indicati.\n" +"Notare che alcuni fornitori potrebbero non includere tutte le modalità di " +"trasporto disponibili,\n" +"per esempio un fornitore nazionale potrebbe non includere le linee aeree, e " +"un fornitore locale\n" +"potrebbe non includere treni regionali.\n" +"Nomi e marchi riportati sono da considerarsi, quando applicabile, come " +"marchi registrati." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra più risultati" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Nasconde le fermate intermedie e informazioni" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra le fermate intermedie e informazioni" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partire ora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partire alle" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivare alle" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghetti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplani" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Condivide la posizione" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Aggiungi a nuovo percorso" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direzioni" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Contrassegna come preferito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ingrandire per aggiungere la posizione." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Aumenta ingrandimento" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossibile trovare sezioni delle mappe nella directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Analisi del documento XML non riuscita" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributi richiesti mancanti" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossibile trovare l'elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un percorso di una directory locale contenente sezioni delle mappe" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Dimensione mappa per la directory locale delle mappe" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra la versione del programma" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora disponibilità rete" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezionare un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Caricamento" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezionare un posto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Facebook. Selezionarne " +"uno da questo elenco." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Foursquare. Selezionarne " +"uno da questo elenco." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in presso %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivere un commento opzionale per il check-in presso %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossibile trovare «%s» nel servizio social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impossibile trovare un posto adatto per il check-in in questo luogo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credenziali scadute. Aprire «Account online» per accedere e abilitare questo " +"account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non c'è niente qui." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La posizione è stata aggiunta alla mappa, notare che ci potrebbe volere un " +"po' prima che venga mostrata sulla mappa e nei risultati di ricerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mappe di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il filesystem è in sola lettura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non si hanno i permessi per salvarle" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La directory non esiste" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nessun nome file specificato" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossibile esportare la visualizzazione" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Posizione attuale" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinate non valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "errore di analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria sconosciuta" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Richiesta del percorso non riuscita." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Percorso non trovato." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Avvia." + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tutti i file livello" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Impossibile connettersi al servizio di localizzazione" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Claudio Arseni \n" +"Gianvito Cavasoli " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una applicazione di GNOME per le mappe" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e gli autori di GNOME Maps" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "I dati delle mappe sono di %s e collaboratori" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Le sezioni delle mappe sono fornite da %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricerca fornita da «%s» usando «%s»" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Apertura del livello non riuscita" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Continuare?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Si stanno per aprire dei file con una dimensione totale di %s MB. Il " +"caricamento potrebbe richiedere del tempo" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Il tipo di file non è supportato" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Apertura di GeoURI non riuscita" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome utente o password non corretti" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Successo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richiesta errata" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Oggetto non trovato" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflitto, qualcun altro ha già modificato l'oggetto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'oggetto è stato eliminato" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Percorso o relazione in riferimento a un nodo figlio non esistente" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Il nome ufficiale. Questo è tipicamente quello che appare all'accesso." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Indirizzo" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Sito web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Questo URL non è valido. Assicurarsi di includere http:// o https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sito web ufficiale. Provare a usare la forma più basica di un URL, " +"esempio http://example.com invece di http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Il numero di telefono. Usare il formato internazionale, a partire dal " +"simbolo +. Fare attenzione alle leggi locali sulla privacy, specialmente per " +"i numeri di telefono privati." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formato usato deve includere il codice della lingua e il titolo " +"dell'articolo tipo «it:Titolo dell'articolo»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Orari di apertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Vedere il collegamento nell'etichetta per un aiuto sul formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Popolazione" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Altitudine (altezza sopra il livello del mare) di un punto in metri." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accesso per disabili" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitata" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designata" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accesso Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Con cavo" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminale" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servizio" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religione" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhismo" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianesimo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianesimo" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Induismo" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Giainismo" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Ebraismo" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religioni multiple" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganesimo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianesimo" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoismo" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismo" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismo" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitariani universalisti" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Servizi igienici" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Indicazioni usate per comunicare altri mappatori le informazioni non " +"evidenti su un elemento, l'intento dell'autore quando lo crea, o suggerire " +"futuri miglioramenti." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleziona tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fatto" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Luogo senza nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Analisi dell'URI geografico non riuscita" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordinate" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precisione" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisione: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numero di telefono" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accesso pubblico a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Nessun accesso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi pubblica" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accesso a Internet con cavo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computer disponibili all'uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistente Internet disponibile" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Nessun bagno disponibile" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Bagno disponibile" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accessibile per sedie a rotelle" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accesso limitato per sedie a rotelle" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Non accessibile per sedie a rotelle" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Progettato per gli utenti con sedia a rotelle" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religione:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Luogo non trovato su OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "L'URL delle coordinate non è valido" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L'URL non è supportato" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Da %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Caricamento sezioni della mappa per la stampa" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Si può interrompere la stampa se questa prende troppo tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompi stampa" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aggiunge tramite posizione" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Rimuove tramite posizione" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percorso inverso" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aggiungi «%s» in «%s»" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Apertura dell'URI non riuscita" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Apri con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "caricamento file non riuscito" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo stimato: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari forniti da %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partenza da %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partenza" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camminare per %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arriva in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrivo" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra il percorso a piedi" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Nasconde il percorso a piedi" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Caricare alternative precedenti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Caricare alternative successive" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non è stata trovata alcuna alternativa precedente." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non è stata trovata alcuna alternativa successiva." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nessun dato trovato sugli orari di questo percorso." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nessun fornitore trovato per questo percorso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minuti" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Tutto il giorno" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Dal tramonto all'alba" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Ogni giorno" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Giorni festivi" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacanze scolastiche" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "chiuso" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Sconosciuta" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Esatta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ora" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ora %s min" +msgstr[1] "%s ore %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sec" +msgstr[1] "%s sec" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Questo plugin non supporta l'ultimo arrivo" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continua su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continua" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolta a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Svolta a sinistra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolta leggermente a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Svolta leggermente a sinistra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolta brusca a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Svolta brusca a sinistra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolta a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Svolta a destra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolta leggermente a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Svolta leggermente a destra" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolta brusca a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Svolta brusca a destra" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Alla rotonda, prendere l'uscita %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Alla rotonda, prendere l'uscita verso %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Prendere la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendere l'ascensore e scendere a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Prendere l'ascensore" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fare un'inversione a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Fare un'inversione a sinistra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fare un'inversione a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Fare un'inversione a destra" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..a974b3e4 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1477 @@ +# Japanese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# victory , 2013. +# Jiro Matsuzawa , 2013. +# Ikuya Awashiro , 2014. +# Hajime Taira , 2014-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-03-16 20:35+0000\n" +"PO-Revision-Date: 2016-04-06 07:08+0900\n" +"Last-Translator: sujiniku \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"世界中あらゆる場所の地図に簡単にアクセスできます。都市や住所を検索して、お探" +"しの場所をさっと見つけられ、待ち合わせ場所もすぐに特定できます。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"この地図アプリは、OpenStreetMap データベースを利用しています。このデータベー" +"スは、世界中の膨大な人々が協力して作成しています。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"特定のタイプにより検索することができます。場所の特定の種類による検索。" +"例:“Pubs near Main Street, Boston“ あるいは “Hotel near Alexanderplatz, " +"Berlin“" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:441 +msgid "Maps" +msgstr "地図" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "シンプルな地図アプリケーション" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;地図;マップ;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +#| msgid "User set last known location" +msgid "last viewed location" +msgstr "直近の既知の位置がユーザー設定によるものかどうか" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +#, fuzzy +#| msgid "Description of last known location" +msgid "Coordinates of last viewed location." +msgstr "直近の既知の位置の詳細" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "ウィンドウサイズ" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "ウィンドウサイズ (幅と高さ) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "ウィンドウの位置" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "ウィンドウの位置 (横位置と縦位置) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "ウィンドウ最大化" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "ウィンドウを最大化しているかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "検索結果の最大数" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "geocode 検索の検索結果として表示する最大数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "記録する最近の場所の数" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "最近訪れた場所を記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "記録する最近のルートの数" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "最近訪れたルートを記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebookへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最新のFacebookのチェックイン時のプライバシー設定で指定可能な値: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquareへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最新のFoursquareのチェックイン時のプライバシー設定で指定可能な値: public, " +"followers, private" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "FoursquareのチェックインをFacebookにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"FacebookアカウントがFoursquareアカウントに関連付けられている場合、Foursquare" +"のチェックインをFacebookにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "FoursquareのチェックインをTwitterにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"TwitterアカウントがFoursquareアカウントに関連付けられている場合、Foursquareの" +"チェックインをTwitterにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap アカウントの設定" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "キーボードショートカット(_K)" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "このアプリケーションについて" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "終了" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "公開範囲" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Facebookに投稿" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Twitterに投稿" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "チェックイン(_H)" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "誰でも" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "友達の友達まで" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "友達のみ" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "自分のみ" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "公開" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "フォロワー" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "プライベート" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ここはどこ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "場所をコピー" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "画像としてエクスポート" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "ビューのエクスポート" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ルートとマーカーを含む" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ショートカットを表示する" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "検索する" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ルート案内の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ルートを印刷する" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "終了する" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地図の表示" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拡大する" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "縮小する" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "縮尺の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "現在の位置へ移動する" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "現在位置を特定するには位置情報サービスをオンにしてください" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "場所の設定" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "現在の位置へ移動します" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "地図の種類を選択" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "ルート案内" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "お気に入り" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "ルートの印刷" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "地図はオフラインです。" + +#: ../data/ui/main-window.ui.h:8 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"インターネット接続がありません。このアプリケーションが適切に機能するためにイ" +"ンターネット接続が必要です。" + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "インターネット接続とプロキシの設定を確認してください。" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "新しいルートを追加" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "別のアプリケーションで開く" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "お気に入りに追加" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "ここにチェックイン" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap アカウント" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"地図編集のためのサインイン" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "メールアドレス" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "パスワード" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "サインイン" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "アカウントをお持ちでありませんか?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +#, fuzzy +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "認証コードが一致しません、やりなおしてください。" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "上記の認証コードを入力" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "検証" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "サインイン済み" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "あなたの OpenStreetMap account アカウントはアクティブです。" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "サインアウト" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "道路地図" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "" + +#: ../data/ui/osm-edit-address.ui.h:3 +#, fuzzy +#| msgid "Postal code: %s" +msgid "Postal code" +msgstr "郵便番号: %s" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +#, fuzzy +#| msgid "_Cancel" +msgid "Cancel" +msgstr "キャンセル(_C)" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:472 +msgid "Next" +msgstr "" + +#: ../data/ui/place-bubble.ui.h:1 +#, fuzzy +#| msgid "Show more results" +msgid "Show more information" +msgstr "さらに結果を表示" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Enterキーを押すと検索します" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "ルートの順序をドラッグで変更" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "場所を開く" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "開く(_O)" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "" + +#: ../data/ui/shape-layer-row.ui.h:1 +#, fuzzy +#| msgid "Toggle favorites" +msgid "Toggle visible" +msgstr "お気に入り" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "さらに結果を表示" + +#: ../data/ui/transit-leg-row.ui.h:1 +msgid "Hide intermediate stops and information" +msgstr "" + +#: ../data/ui/transit-leg-row.ui.h:2 +#, fuzzy +#| msgid "Show more results" +msgid "Show intermediate stops and information" +msgstr "さらに結果を表示" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "現在の位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "位置精度: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to parse XML document" +msgstr "Geo URIの解析に失敗しました" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "" + +#: ../src/application.js:103 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "アカウントの選択" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "読み込み中" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "場所の選択" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Facebookでチェックインする場所を見つけることができませんでした。次のリストか" +"ら1つ選択してください。" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Foursquareでチェックインする場所を見つけることができませんでした。次のリスト" +"から1つ選択してください。" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "%sへチェックイン" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%sへチェックイン時に添えるコメントを書きます。" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:509 +msgid "An error has occurred" +msgstr "エラーが発生しました" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ソーシャルサービスにて \"%s\" を見つけることができません" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "この場所にチェックインするために適切な場所を見つけることができません" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"認証情報が失効しました。オンラインアカウント設定を開き、再度アカウントを認証" +"してください" + +#: ../src/contextMenu.js:96 +msgid "Route from here" +msgstr "ここからのルート" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "行き先を追加" + +#: ../src/contextMenu.js:100 +msgid "Route to here" +msgstr "ここまでのルート" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:630 +msgid "Route request failed." +msgstr "ルート要求は失敗しました。" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:614 +#: ../src/openTripPlanner.js:728 +msgid "No route found." +msgstr "ルートが見つかりません。" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "開始!" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "" + +#: ../src/mainWindow.js:387 +msgid "Failed to connect to location service" +msgstr "位置情報サービスに接続できません" + +#: ../src/mainWindow.js:439 +msgid "translator-credits" +msgstr "" +"松澤 二郎 \n" +"victory \n" +"Ikuya Awashiro \n" +"Hajime Taira \n" +"日本GNOMEユーザー会 " + +#: ../src/mainWindow.js:442 +msgid "A map application for GNOME" +msgstr "GNOME 向け地図アプリケーション" + +#: ../src/mapView.js:354 +msgid "File type is not supported" +msgstr "" + +#: ../src/mapView.js:361 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open layer" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/mapView.js:397 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open GeoURI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/openTripPlanner.js:626 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "" + +#: ../src/osmConnection.js:448 +#, fuzzy +#| msgid "Position not found" +msgid "Object not found" +msgstr "位置が見つかりません" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:159 +msgid "Website" +msgstr "" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:165 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours" +msgstr "営業時間: %s" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +#, fuzzy +#| msgid "Population: %s" +msgid "Population" +msgstr "人口: %s" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access" +msgstr "車いすでのアクセス: %s" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "可能" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "" + +#: ../src/osmEditDialog.js:167 +#, fuzzy +#| msgid "limited" +msgid "Limited" +msgstr "制限あり" + +#: ../src/osmEditDialog.js:168 +#, fuzzy +#| msgid "designated" +msgid "Designated" +msgstr "車いす専用" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../src/osmEditDialog.js:340 +#, fuzzy +#| msgid "Select a place" +msgid "Select Type" +msgstr "場所の選択" + +#: ../src/osmEditDialog.js:458 +msgid "Done" +msgstr "" + +#: ../src/placeBubble.js:122 +#, fuzzy +#| msgid "Population: %s" +msgid "Population:" +msgstr "人口: %s" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "" + +#: ../src/placeBubble.js:133 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours:" +msgstr "営業時間: %s" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "" + +#: ../src/placeBubble.js:143 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access:" +msgstr "車いすでのアクセス: %s" + +#: ../src/placeBubble.js:149 ../src/placeBubble.js:153 +msgid "Phone:" +msgstr "" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Geo URIの解析に失敗しました" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:329 +msgid "yes" +msgstr "可能" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "制限あり" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:335 +msgid "no" +msgstr "困難" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "車いす専用" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "" + +#: ../src/sendToDialog.js:179 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open URI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:285 +#, javascript-format +msgid "Estimated time: %s" +msgstr "所要時間: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:74 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:80 +#, fuzzy +#| msgid "Start!" +msgid "Start" +msgstr "開始!" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:248 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:275 +#, fuzzy, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%f 分" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:286 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:292 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:611 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24時間体制" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "日の出から日没まで" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "毎日" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "祝日" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "学校休日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "休業" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "正確" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f 時間" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f 分" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f マイル" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f フィート" + +#~ msgid "Country code: %s" +#~ msgstr "国コード: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "直近の既知の位置と精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "直近の既知の位置 (緯度と経度を度単位で) と精度 (メートル単位) です。" + +#~ msgid "Description of last known location of user." +#~ msgstr "ユーザーの直近の既知の位置の詳細です。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "直近の既知の位置が、ユーザーが手動で設定したものかどうかの設定です。" + +#~ msgid "I’m here!" +#~ msgstr "私はここにいます!" + +#~ msgid "To" +#~ msgstr "目的地" + +#~ msgid "From" +#~ msgstr "出発地点" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星写真" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 00000000..3ff575e5 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,2106 @@ +# Kazakh translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Baurzhan Muftakhidinov , 2014-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-28 20:21+0500\n" +"Last-Translator: Baurzhan Muftakhidinov \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME карталары" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Дүниежүзілік орындарды табу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карталар қолданбасы сізге дүниежүзі карталарына жылдам қатынауды мүмкін " +"қылады. Оның көмегімен керек болған орынды оның орналасқан қаласын не " +"көшесін енгізу арқылы табуға, немесе доспен кездесу үшін орынды табуға " +"болады." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карталар қолданбасы қауымдастық ұсынатын OpenStreetMap дерекқорын қолданады, " +"оны дүниежүзінің әр жеріндегі мыңдаған адамдар жасайды." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME жобасы" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карталар" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Қарапайым карталар қолданбасы" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Карталар;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Картада сіздің орналасуыңызды көрсете алады." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "соңғы қаралған орналасу" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Соңғы қаралған орналасудың координаттары." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштабтау" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабтау деңгейі" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Карта түрі" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Көрсетілетін карта түрі (көше, әуе және т.б.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Терезе өлшемі" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Терезе өлшемі (ені мен биіктігі)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Терезе орны" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Терезе орны (x және y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Терезе максималды етілген" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Терезенің максималды күйі" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Іздеу нәтижелерінің максималды саны" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Геокодын іздеуі қайтаратын нәтижелерінің максималды саны." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Соңғы орындардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Соңғы болған орындардың қаншауын сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Соңғы бағыттардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Соңғы бағыттардың нешеуін сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare көмегімен белгіленудің жекелік баптауы" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Foursquare көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері: public, followers не private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare көмегімен белгіленудің Facebook ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Facebook тіркелгісіне жазба ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare көмегімен белгіленудің Twitter ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Twitter тіркелгісіне твит ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap пайдаланушы аты немесе эл. пошта адресі" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Пайдаланушы OpenStreetMap деректерін түзету үшін кірген ба, соны анықтайды." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Бағдарды құрастыру кезінде соңғы қолданылған көлік түрі" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Түнгі режимі" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Қолданба түнгі режимінде ме, соны көрсетеді." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Гибридті әуе мозаикасын пайдалану" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Әуе мозаикасы гибридтік стильді (белгілермен) пайдалануы керек пе." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Көрінуі" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Facebook-те жариялау" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Twitter-де жариялау" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ба_с тарту" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Б_елгілену" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Публикалық" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Сонымнан ерушілер" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Жеке" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Осыдан бағдар" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Аралық мақсатты қосу" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Осыған дейін бағдар" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Осында не бар?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Орналасуды көшіріп алу" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Көріністі экспорттау" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Э_кспорт" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Бағдар және маркерлерді қоса" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Карта түрін таңдаңыз" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Кішірейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Үлкейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Бағдарды баспаға шығару" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Таңдамалыларды көрсету/жасыру" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Жалпы" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Пернетақта жарлықтарын көрсету" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Іздеу" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Шығу" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Карта көрінісі" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Үлкейту" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Кішірейту" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Масштабты іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Көше көрінісіне ауысу" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Ауадан көрінісіне ауысу" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Белгілерді көрсету" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Қабатты (shape) ашу…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Орнасуыңызды анықтау үшін орналасулар қызметін іске қосыңыз" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Бас тарту" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Орналасу баптаулары" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Түнгі режимі" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісін баптау" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Сурет ретінде экспорттау" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "П_ернетақта жарлықтары" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Карталар қолданбасы туралы" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Карталар желіге қосылмаған!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карталар дұрыс жұмысы үшін интернетпен байланыс керек, бірақ ондай байланыс " +"табылмады." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Байланысу және прокси баптауларын тексеріңіз." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісі" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Карталарды түзету үшін кіріңіз" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap тіркелгісі көмегімен\n" +"карталарды жақсартуға көмектесіңіз." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Эл. пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Тіркелу" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Кіру" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Кешіріңіз, бұл жасамады. Қайталап көріңіз, немесе\n" +"пароліңізді тастау үшін, OpenStreetMap сайтын шолыңыз." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Растау коды сәйкес болмады, қайталап көріңіз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Жоғарыда көрсетілген растау кодын енгізіңіз" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Растау" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Кіру орындалды" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Сіздің OpenStreetMap тіркелгіңіз белсенді." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Шығу" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Көше" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Үй нөмірі" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Пошталық индексі" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Қала" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Түрі" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Жоқ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Өрісті қосу" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Пікір" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Карта өзгерістері OpenStreetMap деректерін қолданатын\n" +"барлық карталарда көрінетін болады." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Жақында қолданылған" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Келесі" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нәтижелер табылмады" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Қате орын алды" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Бағдар ретін ауыстыру үшін тартып апарыңыз" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Орналасуды ашу" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Көшіру" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Қайда жіберу…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Белгілену…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ашу" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Көрінуін іске қосу/сөндіру" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Бағдарды іздеу GraphHopper ұсынады" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Қоғамдық көліктің маршруттары үшінші жақты қызметтермен\n" +"ұсынылған.\n" +"GNOME көрсетілген бағдарлар және уақыттар үшін жауапты емес.\n" +"Кейбір провайдерлер тасымалдаудың барлық қолжетімді түрлерін қамтымауы " +"мүмкін\n" +"екенін ескеріңіз, мысалы, ұлттық провайдер авиакомпанияларды қамтымауы " +"мүмкін және\n" +"жергілікті провайдер аймақтық поездарды қамтымауы мүмкін\n" +"Көрсетілген атаулар және брендтер тіркелген сауда белгілері ретінде " +"қарастырылуы тиіс." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Көбірек нәтижелерді көрсету" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты жасыру" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты көрсету" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Қазір кету" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Кету, " + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Жету, " + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Көрсету" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобустар" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамвайлар" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Пойыздар" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Паромдар" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Ұшақтар" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Орналасумен бөлісу" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Жаңа бағдарға қосу" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Бағыттар" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Таңдамалы ретінде белгілеу" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Орналасуды қосу үшін масштабты үлкейтіңіз!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Үлкейту" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Бумадан мозаикалық құрылымды табу сәтсіз аяқталды" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML құжатын талдау қатемен аяқталды" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Керек атрибуттар жетіспейді" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM элементін табу мүмкін емес" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Жергілікті плиткалық бумалар құрылымына дейінгі жол" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Жергілікті мозаика бумасының өлшемі" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Бағдарлама нұсқасын көрсету" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Желінің қолжетімділігін елемеу" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Тіркелгіні таңдаңыз" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Жүктелуде" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Орынды таңдаңыз" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Карталар Foursquare көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s жерінде белгілену" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s жерінде белгіленудің міндетті емес хабарламасын жазыңыз." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "\"%s\" орнын әлеуметтік қызметтен табу мүмкін емес" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Бұл орналасуда белгілену үшін жарамды орынды табу мүмкін емес" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Тіркелу деректерінің мерзімі аяқталған, бұл тіркелгіге кіру және оны іске " +"қосу үшін желілік тіркелгілерді ашыңыз" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Осында ешнәрсе табылмады!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Орналасу картаға қосылды. Бірақ, ол картада және іздеу нәтижелерінде " +"көрінуіне дейін біршама уақыт өту керек болуын ескертіңіз." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта, %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлдық жүйе тек оқу үшін қолжетерлік" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Осында сақтау үшін керек рұқсаттарыңыз жоқ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Бума жоқ болып тұр" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Файл аты көрсетілмеген" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Көріністі экспорттау мүмкін емес" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ағымдағы орналасу" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "координаттар жарамсыз" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "талдау қатесі" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "геометрия белгісіз" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Бағдар сұранымы сәтсіз." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Бағдар табылмады." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Бастау!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Барлық қабаттар файлдары" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Орналасулар қызметіне байланысу сәтсіз аяқталды" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Baurzhan Muftakhidinov " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "GNOME үшін карталар қолданбасы" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. және GNOME Maps авторлары" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Карта деректерін ұсынған %s және үлес қосушылар" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Карта мозаикасын ұсынған %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Іздеуді %s ұсынған, %s негізінде" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Қабатты ашу сәтсіз аяқталды" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Жалғастыруды қалайсыз ба?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Жалпы өлшемі %s МБ болатын файлдарды ашуға дайынсыз. Бұл жүктелуге біраз " +"уақытты алуы мүмкін" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Файл түріне қолдау жоқ" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI ашу сәтсіз аяқталды" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Пайдаланушы аты не паролі қате" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Сәтті" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Қате сұраным" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Объект табылмады" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Ерегесу, біреу бұл объектті жаңа ғана түзеткен" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Объект өшірілген" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Жол немесе байланыс жоқ ұрпақтарға сілтеп тұр" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Аты" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Ресми аты. Әдетте бұл белгілерде көрсетіледі." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адресі" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Веб сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Бұл дұрыс URL емес. http:// немесе https:// қосылғанын тексеріңіз." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ресми веб сайты. Оңайлатылған түрін қолдануға тырысыңыз, мысалы, http://" +"example.com (http://example.com/index.html емес)." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Телефон нөмірі. +таңбасынан басталатын халықаралық пішімді қолданыңыз. " +"Жергілікті жекелік заңдарды ескертіңіз, әсіресе, жеке нөмірлер үшін." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Эл. пошта" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Бұл дұрыс эл. пошта адресі емес. mailto: хаттама префиксінің қосылмағанын " +"тексеріңіз." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Сұраулар үшін байланыс эл. пошта адресі. Публикалық пайдалануға арналған эл. " +"пошта адрестерін ғана қосыңыз." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Қолданылатын пішімі тіл коды және мақала атауынан тұруы керек (мыс, ”kk:" +"Мақала атауы”)." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Жұмыс істеу уақыты" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Пішім көмегін алу үшін белгі сілтемесін қараңыз." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Халық саны" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Теңіз деңгейінен биіктігі" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Нүктенің биіктігі (теңіз деңгейінен), метр есебімен." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Мүгедектер арбасымен қатынау" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Иә" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Жоқ" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Шектелген" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Арнайы" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Интернетпен байланыс" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Сымды" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Қызмет" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Алып кету" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Тек қана" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Дін" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Христиан" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуциандық" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Бірнеше дін" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Паганизм" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафариандық" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Сайентология" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Шинто" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спиритуализм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Таоизм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унитариандық универсализм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Әжетханалар" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Естелік" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Басқа карталар жасаушыларға элемент туралы айқын емес ақпаратты жеткізуге " +"қолданатын ақпарат, немесе оны жасау кезіндегі автордың пікірі, немесе " +"болашақ жақсартулар туралы кеңестер." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Түрін таңдаңыз" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Дайын" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Аталмаған орын" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI талдау сәтсіз аяқталды" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координаттар" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Дәлдік" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Дәлдігі: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Телефон нөмірі" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Алып кету мүмкіндігі бар" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Алып кету мүмкіндігі жоқ" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Тек алып кетуді ұсынады" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Интернетпен публикалық байланыс" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Интернетпен байланыс жоқ" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Публикалық Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Интернетпен сымды байланыс" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Пайдалану үшін қолжетімді компьютерлер" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Интернетпен көмек көрсетуі бар" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Дәретханалар жоқ" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Қолжетімді дәретханалар" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Мүгедектер арбасымен қатынау" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Мүгедектер арбасымен шектелген қатынау" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Мүгедектер арбасымен қатынау жоқ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Мүгедектер арбасын қолданушыларына арналған" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "Теңіз деңгейінен %s төмен" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Теңіз деңгейінде" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Дін:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Орын OpenStreetMap ішінен табылмады" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL ішіндегі координаталар жарамсыз" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL түріне қолдау жоқ" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "%s және %s арасында" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Баспаға шығару үшін картаны жүктеп алу" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Баспаға шығару тым көп уақыт алса, оны үзе аласыз" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Баспаға шығару туралы" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Орналасуы бойынша қосу" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Орналасуы бойынша өшіру" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Кері бағыт" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s %s ішіне қосу" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI ашу сәтсіз аяқталды" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s көмегімен ашу" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "файлды жүктеу сәтсіз" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Шамамен уақыты: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруттарды ұсынған %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s адресінен бастау" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Бастау" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Жүріс %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s адресіне жету" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Жету" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Жүріс ақпаратын көрсету" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Жүріс ақпаратын жасыру" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ертерек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Кейінірек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ертерек балама нұсқалары табылмады." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Кейінірек балама нұсқалары табылмады." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Бұл бағдар үшін кесте жоспары табылмады." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Бұл маршрут үшін ұсынушы табылмады." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сағат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сағат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Тәулік бойы" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Күн шыққаннан бастап күн батқанға дейін" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Күнде" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Мемлекеттік мерекелер" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Мектеп демалыстары" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ашық емес" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Белгісіз" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Дәл" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s сағ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s сағ %s мин" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s миля" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s фут" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Бұл плагині соңғы келуді қолдамайды" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s көмегімен жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s жерінде солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s жерінде сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s жерінде сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s жерінде оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s жерінде оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s жерінде оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Сақиналы қиылыстан %s шығысын қолданыңыз" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Сақиналы қиылыстан %s үшін шығысын қолданыңыз" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Сақиналы қиылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Лифтті қолданып, %s жерінен шығу" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Лифтті қолдану" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s үшін сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s үшін оң жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Оң жақ кері бұрылысын қолдану" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Сонымен қатар, орналасулардың нақты түрлерін де іздеуге болады, мысалы " +#~ "\"Гостиницы Астаны возле Байтерека\" немесе \"Hotels near Gorky Park, " +#~ "Almaty\" (қазақша іздеу әлі мүмкін емес)." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook көмегімен белгіленудің жекелік баптауы" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Facebook көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +#~ "мәндері EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS және SELF." + +#~ msgid "Everyone" +#~ msgstr "Әркім" + +#~ msgid "Friends of friends" +#~ msgstr "Достардың достары" + +#~ msgid "Just friends" +#~ msgstr "Тек достар" + +#~ msgid "Just me" +#~ msgstr "Тек мен" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Карталар Facebook көмегімен белгілену үшін орынды таба алмады. Тізімнен " +#~ "біреуін таңдаңыз." + +#~ msgid "Find a Route" +#~ msgstr "Бағдарды табу" + +#~ msgid "Check in here" +#~ msgstr "Осында белгілену" + +#~ msgid "Show more information" +#~ msgstr "Көбірек ақпарат шығару" + +#~ msgid "Population:" +#~ msgstr "Халық саны:" + +#~ msgid "Altitude:" +#~ msgstr "Теңіз деңгейінен биіктігі:" + +#~ msgid "Opening hours:" +#~ msgstr "Жұмыс істеу уақыты:" + +#~ msgid "Internet access:" +#~ msgstr "Интернетпен байланыс:" + +#~ msgid "Toilets:" +#~ msgstr "Әжетханалар:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Мүгедектер арбасымен қатынау:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "иә" + +#~ msgid "limited" +#~ msgstr "шектелген" + +#~ msgid "no" +#~ msgstr "жоқ" + +#~ msgid "designated" +#~ msgstr "арнайы" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL жарамсыз" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "сымды" + +#~ msgid "terminal" +#~ msgstr "терминал" + +#~ msgid "service" +#~ msgstr "қызмет" + +#~ msgid "Primary menu" +#~ msgstr "Басты мәзір" + +#~ msgid "Don’t have an account?" +#~ msgstr "Тіркелгіңіз жоқ па?" + +#~ msgid "%f h" +#~ msgstr "%f сағ" + +#~ msgid "%f min" +#~ msgstr "%f мин" + +#~ msgid "%f s" +#~ msgstr "%f с" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Басқа қолданбамен ашу" + +#~ msgid "Press enter to search" +#~ msgstr "Іздеу үшін enter басыңыз" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Бағдарды іздеу OpenTripPlanner ұсынады" + +#~ msgid "Add destination" +#~ msgstr "Мақсатты қосу" + +#~ msgid "Quit" +#~ msgstr "Шығу" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Қабатты (shape) ашу…" + +#~ msgid "OK" +#~ msgstr "ОК" + +#~ msgid "Load Map Layer" +#~ msgstr "Карта қабатын жүктеу" + +#~ msgid "Open Layer" +#~ msgstr "Қабатты ашу" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миля" + +#~ msgid "%f ft" +#~ msgstr "%f фут" + +#~ msgid "Position not found" +#~ msgstr "Орны табылмады" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON файлын талдау қатемен аяқталды" + +#~ msgid "Country code: %s" +#~ msgstr "Ел коды: %s" + +#~ msgid "Population: %s" +#~ msgstr "Халық саны: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Мүгедектер арбасымен қатынау: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Соңғы белгілі орналасу және дәлдігі" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Соңғы белгілі орналасу (ендігі және бойлығы, градуспен) және дәлдігі " +#~ "(метрмен)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Пайдаланушының соңғы белгілі орналасудың сипаттамасы." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Соңғы белгілі орналасуды пайдаланушы қолмен көрсеткен ба, соны анықтайды." + +#~ msgid "I’m here!" +#~ msgstr "Мен осындамын!" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 00000000..513961bb --- /dev/null +++ b/po/kn.po @@ -0,0 +1,172 @@ +# Kannada translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# prabodhcp , 2013 +# Shankar Prasad , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-18 20:54+0000\n" +"PO-Revision-Date: 2013-12-30 17:35+0630\n" +"Last-Translator: Shankar Prasad \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "ಮ್ಯಾಪ್ಸ್" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ಒಂದು ಸರಳ ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "ನಕ್ಷೆಗಳು;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "ಕಿಟಕಿ ಗಾತ್ರ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "ಕಿಟಕಿಯ ಗಾತ್ರ (ಉದ್ದ ಮತ್ತು ಅಗಲ)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (x and y)." +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ (x ಮತ್ತು y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximized state" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Last known location was set manually by user." +msgstr "" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "ಕುರಿತು" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "ನಿರ್ಗಮಿಸು" + +#: ../src/context-menu.ui.h:1 +msgid "What's here?" +msgstr "ಇಲ್ಲೇನಿದೆ?" + +#: ../src/context-menu.ui.h:2 +msgid "I'm here!" +msgstr "ನಾನಿಲ್ಲಿದ್ದೇನೆ!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "prabodhcp , ಶಂಕರ್ ಪ್ರಸಾದ್ " + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME ಗಾಗಿ ಒಂದು ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "ರಸ್ತೆ" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ಉಪಗ್ರಹ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "ಗೊತ್ತಿರದ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "ನಿಖರ" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#: ../src/userLocation.js:62 +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"ಸ್ಥಾನ ನಿಖರತೆ: %s" + diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..5df9690d --- /dev/null +++ b/po/ko.po @@ -0,0 +1,2057 @@ +# Korean translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Seong-ho Cho , 2013-2019. +# Kwangseob Jeong , 2018. +# Jeeyong Um , 2019-2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-10 00:09+0900\n" +"Last-Translator: Jeeyong Um \n" +"Language-Team: GNOME Korea \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "그놈 지도" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "전세계의 장소를 찾아봅니다" + +# NOTE: false alarm +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"지도로 전 세계 모든 지도에 빠르게 접근할 수 있습니다. 도시, 거리, 친구를 만" +"날 여러분이 찾는 장소를 빠르게 찾을 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"지도는 전세계 수많은 사람이 함께 만든 OpenStreenMap 데이터베이스를 사용합니" +"다." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "그놈 프로젝트" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "지도" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "간단한 지도 프로그램" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;지도;맵;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "사용자 위치를 지도에 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "최근 본 위치" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "최근 살펴본 위치의 좌표." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "확대" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "확대 수준" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "지도 형식" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "지도 표시 형식(거리, 항공 등)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "창 크기" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "창 크기(너비 및 높이)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "창 위치" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "창 위치(가로 및 세로)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "창 최대화" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "창 최대화 상태" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "최대 검색 결과 수" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "지오코드 검색 결과의 최대 결과 갯수." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "최근 위치를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "최근 방문할 위치를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "최근 경로를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "최근 방문 경로를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "포스퀘어 체크인 개인 정보 설정" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"최근에 사용한 포스퀘어 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: 공개, 팔로워, 비공개." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "페이스북에 포스퀘어 체크인 게시글 보내기" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 페이스북 계정으로 체크인 게시글을 올릴 경우 표시합니" +"다." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "트위터 포스퀘어 체크인 트윗 보내기" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 트위터 계정으로 체크인 트윗을 올릴 경우 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 사용자 이름 및 전자메일 주소" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"사용자가 OpenStreetMap 데이터를 편집하려고 접속했는지 여부를 나타냅니다." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "최근 확인한 경로 안내 대중교통" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "야간 모드" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "프로그램이 야간 모드 상태인지 여부." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "하이브리드 항공 타일 사용" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "항공 타일에서 (레이블이 표시된) 하이브리드 스타일 사용 여부." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "공개 범위" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "페이스북에 게시" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "트위터에 게시" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "취소(_C)" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "체크인(_H)" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "공개" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "팔로워" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "비공개" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "여기서부터 경로 표시" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "경유지 추가" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "여기까지 경로 표시" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "여기가 어딘가요?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "위치 복사" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "내보내기 보기" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "내보내기(_E)" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "경로 및 표시 포함" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "지도 형식을 선택하세요" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "축소" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "확대" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "경로 인쇄" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "즐겨찾기 토글" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "경로 계획 도우미 토글" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "일반" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "바로 가기 표시" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "검색" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "경로 계획 도우미 전환" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "끝내기" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "지도 보기" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "확대" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "축소" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "축척 바꾸기" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "거리 보기로 전환" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "공중 보기로 전환" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "도형 레이어 열기" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "레이블 표시" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "도형 레이어 열기…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "위치 정보 서비스에서 현재 위치 정보를 찾도록 켜기" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "취소" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "위치 정보 설정" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "야간 모드" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap 계정 설정" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "이미지로 내보내기" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "키보드 바로 가기 키(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "지도 정보" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "맵은 오프라인 상태입니다!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"지도가 제대로 동작하려면 인터넷에 연결해야하지만, 연결을 찾을 수 없습니다." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "연결 및 프록시 설정을 확인하십시오." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 계정" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"지도를 편집하려면 접속하십시오" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap 계정으로\n" +"지도 개선을 도와주십시오." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "전자메일" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "암호" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "가입" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "접속" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"죄송하지만 동작하지 않습니다. 다시 시도하시거나\n" +"OpenStreetMap을 방문하여 암호를 다시 설정하십시오." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "인증 코드가 일치하지 않습니다. 다시 시도하십시오." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "아래에 나타난 인증 코드를 입력하십시오" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "검증" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "접속함" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap 계정을 활성화했습니다." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "나가기" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "거리" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "지번" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "우편 번호" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "도시" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "형식" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "없음" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "필드 추가" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "설명" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"OpenStreetMap 데이터를 활용하는 모든 지도에\n" +"바뀐 지도가 나타납니다." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "최근 사용" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "다음" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "결과가 없습니다" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "오류가 발생했습니다" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "경로를 바꾸려면 끌어다놓으십시오" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "위치 열기" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "복사" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "보내기…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "체크인…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "도형 레이어 열기" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "열기(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "보기 상태 전환" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "그래프 하퍼 경로 검색" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"제 3자 서비스에서 제공하는 대중 교통 운행 일정입니다.\n" +"그놈에서는 운행 경로와 일정의 정확성을 보증할 수 없습니다.\n" +"서비스 제공자에 따라 이용 가능한 모든 교통 수단을 제공하는 것은 아님에\n" +"주의해주세요. 예를 들어 전국 단위 제공자는 항공편을 제공하지 않는다거나\n" +"지역 제공자가 지방 열차편 정보를 제공하지 않을 수 있습니다.\n" +"명칭과 브랜드는 상표법 적용이 가능할 경우 등록 상표로 간주합니다." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "더 많은 결과 보기" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "중간 정류장 및 정보 숨김" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "중간 정류장 및 정보 표시" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "지금 출발" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "출발 수단" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "도착 수단" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "보이기" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "버스" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "트램" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "열차" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "지하철" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "선박" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "비행기" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "위치 공유" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "새 경로에 추가" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "방향" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "즐겨찾기 표시" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "추가할 위치를 확대합니다!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "확대" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "디렉터리에서 타일 구조 찾기에 실패했습니다" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML 문서 해석에 실패했습니다" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "필요한 속성이 빠졌습니다" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM 구성 요소를 찾을 수 없습니다" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "로컬 타일 디렉터리 구조 경로" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "로컬 타일 디렉터리의 타일 크기" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "프로그램 버전 보기" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "네트워크 사용 가능 여부 무시" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[<파일>…|]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "계정을 선택하십시오" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "불러오는 중" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "장소를 선택하십시오" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"포스퀘어에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s에 체크인" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s에 체크인할 추가 메시지를 작성합니다." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "소셜 서비스에서 “%s”을(를) 찾을 수 없습니다" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "이 위치를 체크인할 적당한 장소를 찾을 수 없습니다" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"인증 기한이 지났습니다. 온라인 계정을 열어 접속한 후 이 계정을 활성화하십시오" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "여기에 아무것도 없습니다!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"지도에 위치를 추가했습니다. 지도와 검색 결과에 나타나기까지 시간이 조금 걸릴 " +"수 있는 점을 참고하십시오." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f의 지도.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "읽기 전용 파일 시스템입니다" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "해당 위치를 저장할 권한이 없습니다" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "디렉터리가 없습니다" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "파일 이름을 지정하지 않았습니다" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "보기 화면을 내보낼 수 없습니다" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "현재 위치" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "잘못된 좌표" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "해석 오류" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "알 수 없는 지형 정보" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "경로 요청에 실패했습니다." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "경로가 없습니다." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "시작!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "모든 레이어 파일" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "위치 서비스 연결에 실패했습니다" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"조성호 \n" +"정광섭 \n" +"엄지용 " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "그놈용 지도 프로그램" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s와(과) 기여자의 지도 데이터" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "%s에서 제공한 지도 타일" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s에서 %s을(를) 활용한 검색 기능 제공함" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "레이어 열기에 실패했습니다" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "계속 하시겠습니까?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "%s MB 크기의 파일 열기를 시도하였습니다. 이 작업은 시간이 걸립니다" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "파일 형식을 지원하지 않습니다" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI 열기에 실패했습니다" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "사용자 이름 또는 암호가 올바르지 않습니다" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "성공" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "잘못된 요청" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "객체가 없습니다" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "누군가가 객체를 수정하여 바꾼 동작이 중복됐습니다" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "객체를 삭제했습니다" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "길 또는 관계는 '없는 하위 구성 요소'를 참조합니다" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "이름" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "공식 이름입니다. 보통 이정표에 나타납니다." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "주소" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "웹사이트" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"올바른 URL이 아닙니다. http:// 또는 https:// 를 포함하고 있는지 확인해주세요." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"공식 웹사이트입니다. http://example.com/index.html 대신 http://example.com과 " +"같은 식의 기본 URL 형식을 활용하십시오." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "전화번호" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"전화번호입니다. + 기호로 시작하는 국제 전화번호 형식을 사용하십시오. 개인 전" +"화번호를 입력할 때 해당 국가의 개인 정보 보호법을 따르십시오." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "전자메일" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "올바른 전자메일 주소가 아닙니다. mailto:를 제외했는지 확인하십시오." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"문의사항은 전자메일로 연락주십시오. 공개적으로 사용할 전자메일 주소만 추가하" +"십시오." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "위키피디아" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"사용하는 형식에는 “ko:게시글 제목”처럼 언어 코드 및 게시글 제목을 넣어야합니" +"다." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "개장 시간" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "형식 도움말을 보려면 레이블의 링크를 살펴보십시오." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "인구" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "고도" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "미터 단위의 높이(해발고도)입니다." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "휠체어 접근" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "예" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "아니요" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "제한" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "지정됨" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "인터넷 접속" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "무선 네트워크" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "유선" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "터미널" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "서비스" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "포장 가능" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "포장만" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "종교" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "애니미즘" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "바하이교" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "불교" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "까오다이교" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "크리스트교" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "유교" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "힌두교" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "자이나교" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "유대교" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "이슬람교" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "다신교" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "켈트 파가니즘" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "FSM교" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "사이언톨로지" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "신토(しんとう)" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "시크교" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "심령술" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "도교" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "유니테리안 유니버설리즘" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "부두교" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "야지디교" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "조로아스터교" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "화장실" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "참고" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"요소, 작성자의 작성 의도, 사후 개선을 위한 힌트에 대해 명확하지 않은 정보를 " +"알리려는 용도로 사용하는 정보입니다." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "형식 선택" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "완료" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "이름 없는 장소" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "지리 URL 해석에 실패했습니다" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "좌표" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "위치 정확도" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "위치 정확도: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "전화번호" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "포장 제공" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "포장 제공하지 않음" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "포장만 가능" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "공공 인터넷 접속" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "인터넷 접속 불가" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "공개 와이파이" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "유선 인터넷 접속" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "컴퓨터 사용 가능" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "인터넷 지원 가능" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "화장실 사용 불가" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "화장실 사용 가능" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "휠체어 접근 가능" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "제한적 휠체어 접근성" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "휠체어 접근 불가" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "휠체어 사용자용" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "해수면 밑 %s" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "해수면" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "종교시설:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap에 해당 위치가 없습니다" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL 좌표가 올바르지 않습니다" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL을 지원하지 않습니다" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "%s에서 %s까지" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "인쇄할 바둑판 배치 지도 불러오는 중" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "인쇄 시간이 오래걸린다면 취소할 수 있습니다" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "인쇄 취소" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "현재 위치 추가" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "현재 위치 제거" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "역경로" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s을(를) %s에 추가" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI 열기에 실패했습니다" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s 프로그램으로 열기" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "파일 불러오기에 실패했습니다" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "예상 시간: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s에서 제공한 일정" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s에 시작" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "시작" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s 걷기" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s에 도착" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "도" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "도보 안내 표시" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "도보 안내 숨김" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "이른 대안 수단 불러오기" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "다음 대안 수단 불러오기" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "이른 대안 수단이 없습니다." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "다음 대안 수단이 없습니다." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e일" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "이 경로의 시각표 데이터가 없습니다." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "이 경로의 제공자가 없습니다." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s분" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s시간" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s시간" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "하루 종일" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "일출부터 일몰까지" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "매일" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "공휴일" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "방학" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "열지 않음" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s~%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "알 수 없음" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "정확함" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s시간" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s시간 %s분" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s분" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s초" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s 킬로미터" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s 미터" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s 마일" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s 피트" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "이 플러그인은 최근 도착 시간을 지원하지 않습니다" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s에서 계속 진행" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "계속 진행" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s에서 좌회전" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "좌회전" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s에서 살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s에서 크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s에서 우회전" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "우회전" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s에서 살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s에서 크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "로터리에서 %s 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "로터리에서 %s 쪽 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "로터리로 진입" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "엘리베이터 탑승 후 %s에서 내림" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "엘리베이터 탑승" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 쪽으로 왼쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "왼쪽으로 유턴" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 쪽으로 오른쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "오른쪽으로 유턴" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "“보스턴 번화가 근처의 술집” 또는 “베를린 알렉산더플라츠 근처의 호텔”과 같" +#~ "은 지정된 형식의 위치도 검색할 수 있습니다." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "페이스북 체크인 개인 정보 설정" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "최근 사용한 페이스북 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습" +#~ "니다: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF." + +#~ msgid "Everyone" +#~ msgstr "전체 공개" + +#~ msgid "Friends of friends" +#~ msgstr "친구의 친구" + +#~ msgid "Just friends" +#~ msgstr "친구만 보기" + +#~ msgid "Just me" +#~ msgstr "나만 보기" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "페이스북에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십" +#~ "시오." + +#~ msgid "Check in here" +#~ msgstr "이곳을 체크인" + +#~ msgid "Show more information" +#~ msgstr "더 많은 정보 표시" + +#~ msgid "Population:" +#~ msgstr "인구수:" + +#~ msgid "Altitude:" +#~ msgstr "고도:" + +#~ msgid "Opening hours:" +#~ msgstr "영업 시간:" + +#~ msgid "Internet access:" +#~ msgstr "인터넷 접속:" + +#~ msgid "Toilets:" +#~ msgstr "화장실:" + +#~ msgid "Wheelchair access:" +#~ msgstr "휠체어 접근:" + +#~ msgid "Phone:" +#~ msgstr "전화번호:" + +#~ msgid "yes" +#~ msgstr "예" + +#~ msgid "limited" +#~ msgstr "제한함" + +#~ msgid "no" +#~ msgstr "아니요" + +#~ msgid "designated" +#~ msgstr "지정됨" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL이 올바르지 않습니다" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "유선" + +#~ msgid "terminal" +#~ msgstr "터미널" + +#~ msgid "service" +#~ msgstr "서비스" + +#~ msgid "Don’t have an account?" +#~ msgstr "계정이 없습니까?" + +#~ msgid "%f h" +#~ msgstr "%f시간" + +#~ msgid "%f min" +#~ msgstr "%f분" + +#~ msgid "%f s" +#~ msgstr "%f초" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner 경로 검색" + +#~ msgid "Add destination" +#~ msgstr "목적지 추가" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "다른 프로그램으로 열기" + +#~ msgid "Press enter to search" +#~ msgstr "검색할 단어를 입력하십시오" + +#~ msgid "Quit" +#~ msgstr "끝내기" + +#~ msgid "Open Shape Layer…" +#~ msgstr "도형 레이어 열기…" + +#~ msgid "OK" +#~ msgstr "확인" + +#~ msgid "Load Map Layer" +#~ msgstr "맵 레이어 불러오기" + +#~ msgid "Open Layer" +#~ msgstr "레이어 열기" + +#~ msgid "%f km" +#~ msgstr "%f킬로미터" + +#~ msgid "%f m" +#~ msgstr "%f미터" + +#~ msgid "%f mi" +#~ msgstr "%f마일" + +#~ msgid "%f ft" +#~ msgstr "%f피트" + +#~ msgid "Country code: %s" +#~ msgstr "국가 기호: %s" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 00000000..aa7e5314 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,2106 @@ +# Lithuanian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Aurimas Černius , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 17:55+0300\n" +"Last-Translator: Aurimas Černius \n" +"Language-Team: Lietuvių \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Gtranslator 40.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME žemėlapiai" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Rasti vietas aplink pasaulį" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Žemėlapiai leidžia jums lengvai pasiekti pasaulio žemėlapius. Ši programa " +"leidžia greitai rasti ieškomą vietą naudojant paiešką pagal miestą ar gatvę " +"bei rasti vietą susitikimui su draugu." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Žemėlapiai naudoja OpenStreetMap duomenų bazę, kurią sukūrė tūkstančiai " +"žmonių iš viso pasaulio." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME projektas" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Žemėlapiai" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Paprasta žemėlapių programa" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Žemėlapiai;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leidžia parodyti žemėlapyje jūsų vietą." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "paskutinė žiūrėta vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Paskutinės žiūrėtos vietos koordinatės." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mastelis" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mastelis" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Žemėlapio tipas" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Rodomas žemėlapio tipas (gatvių, oro, ir t. t.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Lango dydis" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Lango dydis (plotis ir aukštis)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Lango padėtis" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Lango padėtis (X ir Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Langas išdidintas" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Lango išdidinimo būsena" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Didžiausias paieškos rezultatų skaičius" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Didžiausias paieškos rezultatų skaičius iš geocode paieškos." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Įrašomas paskutinių vietų skaičius" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Įrašomas paskutinių aplankytų vietų skaičius." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Paskutinių įrašomų maršrutų skaičius" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Įrašomas paskutinių aplankytų maršrutų skaičius." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Siuntimo į Foursquare privatumo nustatymas" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paskutinis naudotas siuntimo į Foursquare nustatymas. Galimo vertės yra " +"public, followers arba private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siuntimo į Foursquare pranešimas į Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Facebook paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Twitter paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap naudotojo vardas arba el. pašto adresas" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Nurodo ar naudotojas prisijungė OpenStreetMap duomenų redagavimui." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Paskutinis transporto tipas, naudotas keliui" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nakties veiksena" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Ar programa yra naktinėje veiksenoje." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Naudoti hibridines oro plyteles" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Ar oro plytelės turėtų naudoti hibridinį stilių (su užrašais)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Matomumas" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Pranešti Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Pranešti Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Atsisakyti" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Nusiųsti" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Viešas" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Sekėjams" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privatus" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršrutas iš čia" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridėti tarpinę stotelę" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršrutas į čia" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ten?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopijuoti vietą" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridėti prie OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportuoti rodinį" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportuoti" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Įtraukti maršrutą ir žymes" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Pasirinkite žemėlapio tipą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Mažinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Didinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Spausdinti kelią" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Perjungti mėgiamiausius" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Bendra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rodyti trumpinius" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ieškoti" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Išeiti" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Žemėlapio rodinys" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Didinti" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Mažinti" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Perjungti skalę" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Perjungti į gatvės vaizdą" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Perjungti į vaizdą iš oro" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rodyti užrašus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atverti formos sluoksnį…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Savo vietai surasti įjunkite vietos tarnybas" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atsisakyti" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Vietos nustatymai" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakties veiksena" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nusistatyti OpenStreetMap paskyrą" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportuoti kaip paveikslėlį" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klaviatūros trumpiniai" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Apie žemėlapius" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Žemėlapiai atsijungę nuo interneto!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Žemėlapių tvarkingam veikimui reikia aktyvaus interneto ryšio, bet tokio " +"nėra." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Patikrinkite savo prisijungimo ir tarpinio serverio nustatymus." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap paskyra" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prisijunkite, kad redaguotumėte " +"žemėlapius" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Padėkite tobulinti žemėlapį, naudodami\n" +"OpenStreetMap paskyrą." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "El. paštas" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Slaptažodis" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prisiregistruoti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prisijungti" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Atleiskite, tai nesuveikė. Prašome bandyti dar kartą arba apsilankyti\n" +"OpenStreetMap, kad atstatytumėte savo slaptažodį." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Patvirtinimo kodas neatitiko, prašome bandyti dar kartą." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Įveskite aukščiau parodytą patvirtinimo kodą" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Patvirtinti" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prisijungę" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsų OpenStreetMap paskyra yra aktyvi." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Atsijungti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gatvė" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Namo numeris" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pašto kodas" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miestas" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipas" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nėra" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridėti lauką" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentaras" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Žemėlapio pakeitimai bus matomi visuose žemėlapiuose,\n" +"kuriuose naudojami OpenStreetMap duomenys." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Neseniai naudoti" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Kitas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nerasta rezultatų" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Kilo klaida" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Tempkite kelio eilės tvarkai keisti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atverti vietą" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopijuoti" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Siųsti…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Prisiregistruoti…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atverti" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Perjungti matomus" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Maršruto paieška naudojant GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Viešojo transporto maršrutai yra pateikiami trečiųjų šalių tarnybų.\n" +"GNOME negali garantuoti rodomų tvarkaraščių teisingumo.\n" +"Pastebėtinas, kad kai kurie teikėjai gali neteikti visų transporto rūšių,\n" +"pvz. nacionalinis teikėjas gali neteikti oro linijų, o vietiniam gali " +"trūkti\n" +"regioninių traukinių.\n" +"Pavadinimai ir prekės ženklai yra laikomi registruotais prekyženkliais, kai " +"taikoma." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rodyti daugiau rezultatų" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slėpti tarpines stoteles ir informaciją" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rodyti tarpines stoteles ir informaciją" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Išvykti dabar" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Išvykti" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atvykti" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rodyti" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusai" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvajai" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Traukiniai" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Keltai" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lėktuvai" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Dalintis vieta" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pridėti naują maršrutą" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Nurodymai" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Pažymėti kaip mėgiamą" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Pritraukti vietos pridėjimui!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Padidinti" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nepavyko kataloge rasti koklių struktūros" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nepavyko perskaityti XML dokumento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkta reikiamų požymių" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepavyko rasti OSM elemento" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Kelias iki vietinės koklių katalogo struktūros" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Plytelės dydis vietiniam plytelių aplankui" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Rodyti programos versiją" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Nepaisyti tinklo prieinamumo" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FAILAS…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Pasirinkite paskyrą" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Įkeliama" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Pasirinkite vietą" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Foursquare. Pasirinkite ją iš " +"sąrašo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Nusiųsti į %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Parašykite pranešimą nusiuntimui į %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nepavyko rasti „%s“ socialinėje tarnyboje" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nepavyko rasti tinkamos vietos šios vietos nusiuntimui" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Įgaliojimai pasibaigė, atverkite internetines paskyra prisijungimui ir " +"paskyros atnaujinimui" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Čia nieko nerasta!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vieta pridėta prie žemėlapio, pastebėsime, kad gali užtrukti, kol ji taps " +"matoma žemėlapyje bei paieškoje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Žemėlapiai ties %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Failų sistema yra tik skaitymui" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jūs neturite leidimo ten įrašyti" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogo nėra" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenurodytas failo pavadinimas" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nepavyko eksportuoti rodinio" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Dabartinė vieta" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neteisinga koordinatė" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "perskaitymo klaida" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nežinoma geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Nepavyko užklausti maršruto." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Maršrutas nerastas." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Pradėti!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Visi sluoksnių failai" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Nepavyko prisijungti prie vietos tarnybos" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Išvertė:\n" +"Aurimas Černius " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Žemėlapių programa GNOME aplinkai" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorių teisės priklauso © 2011 – 2021 Red Hat, Inc. ir GNOME Žemėlapių " +"autoriams" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Žemėlapio duomenys pagal %s ir talkininkus" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Žemėlapio išklotinę pateikė %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Paiešką teikia %s naudojant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Nepavyko atverti sluoksnio" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Ar norite tęsti?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Ketinate atverti failus, kurų bendras dydis %s MB. Tai gali užtrukti" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Failo tipas yra nepalaikomas" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Nepavyko atverti GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Pavyko" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Bloga užklausa" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objektas nerastas" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktas, kažkas ką tik modifikavo objektą" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektas buvo ištrintas" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Kelias ar santykis nurodo į nesantį kūrinį" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Pavadinimas" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficialus pavadinimas. Jis dažniausiai matomas ženkluose." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresas" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Tinklalapis" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Tai nėra tinkamas URL. Įsitikinkite, kad pateikėte http:// arba https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficialus tinklalapis. Bandykite paprasčiausią URL formą, pvz. http://" +"pavyzdys.lt vietoj http://pavyzdys.lt/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefonas" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefono numeris. Naudokite tarptautinį formatą, prasidedantį + simboliu. " +"Atsižvelkite į vietinius privatumo įstatymus, ypač dės asmeninių telefono " +"numerių." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "El. paštas" + +#: src/osmEditDialog.js:160 +#| msgid "This is not a valid URL. Make sure to include http:// or https://." +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Tai nėra tinkamas el. pašto adresas. Įsitikinkite, kad nepateikėte mailto: " +"protokolo priešdėlio." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktinis el. pašto adresas užklausoms. Pridėkite tik el. pašto adresus, " +"skirtus viešam naudojimui." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Naudojamas formatas turi įtraukti kalbos kodą bei straipsnio pavadinimą, " +"pvz. „lt:Straipsnio pavadinimas“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Darbo laikas" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Informaciją apie formatą gausite paspaudę saitą apačioje." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Gyventojų skaičius" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Aukštis" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Absoliutus aukšti (virš jūros lygio) metrais." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Taip" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ribota" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Su paskirtimi" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Interneto prieiga" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Laidinis" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminalas" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Tarnyba" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Išsinešti" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Tik" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizmas" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizmas" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmas" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Krikščionybė" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucionizmas" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Induizmas" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizmas" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judėjizmas" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islamas" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Daug religijų" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pagonybė" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizmas" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Sientologija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sichizmas" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmas" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmas" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarinis universalizmas" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazidizmas" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmas" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Tualetai" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Pastaba" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacija, naudojama kitiems žemėlapių naudotojams informuoti apie " +"neakivaizdžią informaciją, susijusią su elementu, autoriaus tikslą jį " +"kuriant arba patarimus tolimesniam patobulinimui." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridėti į OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Pasirinkite tipą" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Atlikta" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nepavadinta vieta" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Nepavyko perskaityti Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinatės" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Tikslumas" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tikslumas: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefono numeris" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Siūlo išsinešti" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nesiūlo išsinešti" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Siūlo tik išsinešti" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Vieša interneto prieiga" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nėra interneto prieigos" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Viešas Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Laidinė interneto prieiga" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Prieinami kompiuteriai naudojimui" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Yra interneto asistentas" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nėra tualetų" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Yra tualetai" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Prieiga neįgaliųjų vežimėliais" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ribota prieiga neįgaliųjų vežimėliais" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nėra prieigos neįgaliųjų vežimėliais" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Sukurta neįgaliųjų vežimėlių naudotojams" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s žemiau jūros lygio" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Jūros lygyje" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nerasta OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatės URL yra netinkamos" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL yra nepalaikomas" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Nuo %s iki %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Įkeliami žemėlapio kokliai spausdinimui" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Galite atšaukti spausdinimą, jei tai per ilgai užtrunka" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Atšaukti spausdinimą" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridėti per vietą" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Šalinti per vietą" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Atgalinis maršrutas" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridėti %s į %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Nepavyko atverti URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Atverti su %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nepavyko įkelti failo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Įvertintas laikas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Teikėjus pateikė %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Pradėkite ties %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pradėkite" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Nueikite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Atvykti ties %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Atvykti" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rodyti ėjimo nurodymus" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slėpti ėjimo nurodymus" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Įkelti ankstesnes alternatyvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Įkelti vėlesnes alternatyvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nerasta ankstesnių alternatyvų." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nerasta vėlesnių alternatyvų." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Šiam maršrutui nerasta tvarkaraščio duomenų." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Šiam maršrutui nerasta teikėjo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutė" +msgstr[1] "%s minutės" +msgstr[2] "%s minučių" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s valanda" +msgstr[1] "%s valandos" +msgstr[2] "%s valandų" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s valanda" +msgstr[1] "%s:%s valandos" +msgstr[2] "%s:%s valandų" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Visą parą" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Nuo saulėtekio iki saulėlydžio" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Kasdien" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Nedarbo dienomis" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Mokslo dienomis" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "uždaryta" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Nežinomas" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Tikslus" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mylios" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pėdos" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis įskiepis nepalaiko vėliausio atvykimo laiko" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Tęsti %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Tęsti" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sukti kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sukti kairėn" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sukti kairiau ties %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sukti kairiau" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Staigiai sukti į kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Staigiai sukti į kairėn" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sukti dešiniau ties %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sukti dešiniau" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Staigiai sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Staigiai sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "Žiede pasirinkite %s išvažiavimą" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "Žiede pasirinkite išvažiavimą į %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Įvažiuokite į žiedą" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Liftu pasikelkite į %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Kilkite liftu" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Apsisukite į %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Apsisukite" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Apsisukite į dešinę į %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Apsisukite į dešinę" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Taip pat galite ieškoti specifinių vietų, tokių kaip „Barai šalia " +#~ "Gedimino prospekto, Vilnius“ arba „Viešbučiai šalia Basanavičiaus gatvės, " +#~ "Palanga“." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Siuntimo į Facebook privatumo nustatymas" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Paskutinis naudotas siuntimo į Facebook privatumo nustatymas. Galimos " +#~ "vertės yra EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS arba SELF." + +#~ msgid "Everyone" +#~ msgstr "Visiems" + +#~ msgid "Friends of friends" +#~ msgstr "Draugų draugams" + +#~ msgid "Just friends" +#~ msgstr "Tik draugams" + +#~ msgid "Just me" +#~ msgstr "Tik man" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Žemėlapiai negali rasti vietos nusiuntimui į Facebook. Pasirinkitę ją iš " +#~ "sąrašo." + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Rasti kelią" + +#~ msgid "Check in here" +#~ msgstr "Patikrinkite čia" + +#~ msgid "Show more information" +#~ msgstr "Rodyti daugiau informacijos" + +#~ msgid "Population:" +#~ msgstr "Gyventojų skaičius:" + +#~ msgid "Altitude:" +#~ msgstr "Aukštis:" + +#~ msgid "Opening hours:" +#~ msgstr "Darbo laikas:" + +#~ msgid "Internet access:" +#~ msgstr "Interneto prieiga:" + +#~ msgid "Toilets:" +#~ msgstr "Tualetai:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Prieiga neįgaliųjų vežimėliais:" + +#~ msgid "Phone:" +#~ msgstr "Telefonas:" + +#~ msgid "yes" +#~ msgstr "taip" + +#~ msgid "limited" +#~ msgstr "ribota" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "su paskirtimi" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL yra netinkamas" + +#~ msgid "wired" +#~ msgstr "laidinis" + +#~ msgid "terminal" +#~ msgstr "terminalas" + +#~ msgid "service" +#~ msgstr "tarnyba" + +#~ msgid "Primary menu" +#~ msgstr "Pirminis meniu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Neturite paskyros?" + +#~ msgid "%f h" +#~ msgstr "%f val" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Maršruto paieška naudojant OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Pridėti paskirties vietą" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atverti su kita programa" + +#~ msgid "Press enter to search" +#~ msgstr "Spauskite enter paieškai" + +#~ msgid "Quit" +#~ msgstr "Išeiti" + +#~ msgid "OK" +#~ msgstr "Gerai" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Atverti formos sluoksnį…" + +#~ msgid "Load Map Layer" +#~ msgstr "Įkelti žemėlapio sluoksnį" + +#~ msgid "Open Layer" +#~ msgstr "Atverti sluoksnį" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pėdos" + +#~ msgid "Position not found" +#~ msgstr "Nerasta padėtis" + +#~ msgid "Country code: %s" +#~ msgstr "Šalies kodas: %s" + +#~ msgid "Population: %s" +#~ msgstr "Gyventojų skaičius: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nepavyko perskaityti GeoJSON failo" + +#~ msgid "_Share" +#~ msgstr "_Viešinti" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 00000000..9feeb122 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,1985 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Rūdolfs Mazurs , 2013, 2014, 2016, 2017, 2018, 2019, 2020. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-04 20:43+0000\n" +"PO-Revision-Date: 2020-09-12 22:46+0300\n" +"Last-Translator: Rūdolfs Mazurs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :" +" 2);\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kartes" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Atrodi vietas visā pasaulē" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartes dod iespēju ātri piekļūt kartēm visā pasaulē. Tās ļauj ātri atrast " +"kādu vietu, meklējot pilsētu vai ielu, vai atrast vietu, kur sastapt draugus." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartes izmanto kolektīvi veidoto OpenStreetMap datubāzi, ko veidojuši " +"tūkstošiem cilvēku visā pasaulē." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Varat pat meklēt noteikta veida vietas, piemēram “Krogi pie gaismas ielas”, " +"vai “Autostāvvieta Ādaži”" + +#: data/org.gnome.Maps.appdata.xml.in:122 +msgid "The GNOME Project" +msgstr "GNOME projekts" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "Kartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Vienkārša karšu lietotnes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ļauj uz kartes parādīt jūsu atrašanās vietu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "pēdējā skatītā vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Pēdējās apskatītās vietas koordinātas" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mērogs" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mērogs" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartes veids" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Kartes veids, ko attēlot (ielu, aerofoto utt.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Loga izmērs" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Loga izmērs (platums un augstums)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Loga novietojums" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Loga novietojums (X un Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Logs maksimizēts" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Loga maksimizācijas stāvoklis" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimālais meklēšanas rezultātu skaits" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimālais meklēšanas rezultātu skaits no geocode meklējuma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saglabājamo neseno vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saglabājamo nesen apmeklēto vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saglabājamo neseno maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saglabājamo nesen apmeklēto maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook vietas reģistrēšanas privātuma iestatījumi" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Pēdējie izmantotie Facebook vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vai SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare vietas reģistrēšanas privātuma iestatījumi" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pēdējie izmantotie Foursquare vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: public, followers vai private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare vietas reģistrēšanas Facebook apziņošana" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Facebook kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare vietas reģistrēšanas Twitter apziņošana" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Twitter kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap lietotājvārds vai e-pasta adrese" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Norāda, vai lietotājs ir ierakstījies, lai rediģētu OpenStreetMap datus." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Pēdējais izmantotais transportēšanas tips maršrutēšanai" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nakts režīms" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Vai lietotne ir nakts režīmā." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Izmantot hibrīda aerofoto flīzes" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Vai aerofoto flīzēm jāizmanto hibrīda stils (ar apzīmējumiem)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Redzamība" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Veidot Facebook ziņojumu" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Veidot Twitter ziņojumu" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "At_celt" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Reģistrēt vietu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ikviens" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Draugu draugi" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Tikai draugi" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Tikai es" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publisks" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekotāji" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privāts" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršruts no šejienes" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Pievienot starp-galamērķi" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršruts uz šejieni" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ir šeit?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopēt atrašanās vietu" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportēt skatu" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportēt" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Iekļaut maršrutu un marķierus" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Izvēlieties kartes veidu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Tālināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Tuvināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Pārslēgt izlasi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Vispārīgi" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rādīt saīsnes" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Meklēt" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Iziet" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartes skats" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Tuvināt" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Tālināt" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Pārslēgt mērogu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Pārslēgties uz ielas skatu" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Pārslēgties uz aerofoto skatu" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atvērt formu slāni" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rādīt apzīmējumus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atvērt formu slāni…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Ieslēgt vietas noteikšanas pakalpojumu, lai atrastu savu atrašanās vietu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atcelt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Atrašanās vietas iestatījumi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakts režīms" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Izveidot OpenStreetMap kontu" + +#: data/ui/main-window.ui:16 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Eksportēt kā attēlu" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatūras īsinājumtaustiņi" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "P_ar kartēm" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartes ir nesaistē!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Lai varētu strādāt, Kartēm vajag aktīvu savienojumu ar internetu, bet tādu " +"nevar atrast." + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "Pārbaudiet savu savienojumu un starpnieka iestatījumus." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Pievienot jaunu maršrutu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Koplietot vietu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Pievienot izlasei" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Reģistrēt šo vietu" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap konts" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ierakstieties, lai rediģētu kartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Palīdziet uzlabot karti, izmantojot\n" +"OpenStreetMap kontu." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pasts" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parole" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Ierakstīties" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Ierakstīties" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz vai apmeklējiet\n" +"OpenStreetMap, lai pārstatītu savu paroli." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifikācijas kodi nesakrīt. Lūdzu, mēģiniet vēlreiz." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Ievadiet verifikācijas kodu, kas redzams augšā" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificēt" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ierakstījies" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsu OpenStreetMap konts ir aktīvs." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Izrakstīties" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Iela" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Mājas numurs" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pasta indekss" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Pilsēta" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tips" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nav" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pievienot lauku" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentārs" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmaiņas kartē būs redzmas visās kartēs, kas izmanto\n" +"OpenStreetMap datus." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nesen lietotie" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "Nākamais" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Rādīt vairāk informācijas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nav atrastu rezultātu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Velciet, lai mainītu maršruta secību" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atvērt vietu" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopēt" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sūtīt uz…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Atvērt formu slāni" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atvērt" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Pārslēgt redzamību" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper maršruta meklēšana" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Sabiedriskā transporta maršrutus nodrošina trešo pušu pakalpojumus.\n" +"GNOME nevar garantēt attēloto maršrutu un sarakstu pareizību.\n" +"Ņemiet vērā, ka daži pakalpojumu sniedzēji neiekļauj visus pieejamos" +" transporta veidus, piemēram, nacionālais pakalpojumu sniedzējs neiekļauj" +" avio satiksmi un lokālais pakalpojumu sniedzējs varētu neiekļaut reģionālos" +" vilcienus.\n" +"Attēlotie nosaukumi un zīmoli tiek uzskatīti par preču zīmēm, ja attiecināms." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rādīt vairāk rezultātu" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slēpt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rādīt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Doties tagad" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Doties līdz" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atbraukt līdz" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rādīt" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vilcieni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Prāmji" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lidmašīnas" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Pašreizējā atrašanās vieta" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Tuviniet, lai pievienotu atrašanās vietu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Tuvināt" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Direktorijā nevarēja atrast flīžu struktūru" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neizdevās parsēt XML dokumentu" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkst nepieciešamo atribūtu" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nevarēja atrast OSM elementu" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "Ceļš uz lokālo flīžu direktorijas struktūru" + +#: src/application.js:101 +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Flīzes izmērs lokālo flīžu direktorijai" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "Rādīt programmas versiju" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "Ignorēt tīkla pieejamību" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[DATNE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izvēlēties kontu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ielādē" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izvēlieties vietu" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Facebook. Lūdzu, izvēlieties " +"vienu no saraksta." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Foursquare. Lūdzu, izvēlieties " +"vienu no saraksta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Reģistrēties %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ja vēlaties, reģistrējoties %s, ierakstiet ziņojumu." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "Gadījās kļūda" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nevar atrast “%s” sociālajā pakalpojumā" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nevar atrast piemērotu vietu, kur ierakstīties šajā apkārtnē" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Pilnvaras termiņš ir beidzies, atveriet tiešsaistes kontus, lai ierakstītos " +"un ieslēgtu šo kontu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Šeit nekas nav atrasts!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Atrašanās vieta tika pievienota kartei. Ņemiet vērā, ka varētu paiet kāds " +"laiks, pirms izmaiņas parādās kartē un meklēšanas rezultātos." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartes pie %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datņu sistēma ir tikai lasāma" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jums nav tiesību tur saglabāt" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorija nepastāv" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nav norādīts datnes nosaukums" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nevar eksportēt skatu" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nederīga koordināta" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parsēšanas kļūda" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nezināma ģeometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "Maršruta pieprasījums neizdevās." + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "Nav atrastu maršrutu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "Sākt!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Visu slāņu datnes" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "Neizdevās savienoties ar pozīcijas noteikšanas pakalpojumu" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "Rūdolfs Mazurs " + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "GNOME karšu lietotne" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autortiesības © 2011 – 2019 Red Hat, Inc. un GNOME “Kartes” autori" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartes datus nodrošina %s un atbalstītāji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karšu fragmentus nodrošina %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Meklēšanu nodrošina %s izmanto %s" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "Datnes tips nav atbalstīts" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "Neizdevās atvērt slāni" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "Neizdevās atvērt GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Veiksmīgi" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nederīgs pieprasījums" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekts nav atrasts" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikts, kāds cits tikko modificēja objektu" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekts tika izdzēsts" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Ceļš vai relācija norāda uz neeksistējošu bērnu" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "Nosaukums" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiālais nosaukums. Tas parasti ir redzams uz zīmēm." + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "Adrese" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "Tīmekļa vietne" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiālā tīmekļa vietne. Mēģiniet izmantot pamata URL, tas ir, http://" +"example.com, nevis http://example.com/index.html." + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "Tālrunis" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Tālruņa numurs. Izmantojiet starptautisko formātu, sākot ar + zīmi. Ņemiet " +"vērā lokālos privātuma likumus, sevišķi privātiem tālruņu numuriem." + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formātam vajadzētu iekļaut valodas kodu un raksta virsrakstu, piemēram “lv:" +"Raksta virsraksts”" + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "Darba laiks" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "Skatiet saiti apzīmējumā, lai saņemtu palīdzību par formātu." + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "Iedzīvotāju skaits" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "Augstums" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Punkta augstums (virs jūras līmeņa) metros." + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "Piekļuve ar ratiņkrēsliem" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "Jā" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "Nē" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "Ierobežots" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "Nozīmēts" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "Pieeja internetam" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "Vadu" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "Terminālis" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "Serviss" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "Reliģija" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "Animisms" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "Bahāisms" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "Budisms" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaisms" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "Kristietība" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfūcisms" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisms" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "Džainisms" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "Jūdaisms" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "Islāms" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Vairākas reliģijas" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "Pagānisms" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarisms" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "Scientoloģija" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "Sintoisms" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisms" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spirituālisms" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "Daoisms" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitārais universālisms" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "Jadīdisms" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisms" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "Tualetes" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "Piezīme" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informācija, ko izmantot citiem kartētajiem par ne acīmredzamu informāciju " +"par elementu, autora nodomu to veidojot vai norādēm turpmākai uzlabošanai." + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "Izvēlēties tipu" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "Pabeigts" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Nenosaukta vieta" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "Iedzīvotāju skaits:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "Augstums:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "Darba laiks:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "Pieeja internetam:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "Reliģija:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "Tualetes:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "Piekļuve ar ratiņkrēsliem:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "Tālrunis:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "Neizdevās parsēt Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jā" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "ierobežots" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "nē" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "nozīmēts" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nav atrasta OpenStreetMap kartē" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap URL nav derīga" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "URL koordinātas nav derīgas" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL nav atbalstīts" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "No %s līdz %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ielādē kartes flīzes drukāšanai" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Jūs varat pārtraukt drukāšanu, ja tas aizņem pārāk daudz laika" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Par drukāšanu" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pievienot “caur vietu”" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Izņemt “caur vietu”" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Apgriezt maršrutu pretēji" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pievienot %s pie %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Neizdevās atvērt URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Atvērt ar %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "neizdevās ielādēt datni" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Novērtētais laiks — %s" + +#: src/sidebar.js:414 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Maršrutu nodrošina %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Sākt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Sākums" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Iet %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Pienāk %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "Pienāk" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rādīt iešanas norādes" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slēpt iešanas norādes" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ielādēt agrākas alternatīvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ielādēt vēlākas alternatīvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nav atrastu vecāku alternatīvu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nav atrastu jaunāku alternatīvu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "Šim maršrutam nav atrastu transporta sarakstu." + +#: src/transitPlan.js:205 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Šim maršrutam nav atrastu nodrošinātāju." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minūte" +msgstr[1] "%s minūtes" +msgstr[2] "%s minūšu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +#| msgid "%d hour" +#| msgid_plural "%d hours" +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s stunda" +msgstr[1] "%s stundas" +msgstr[2] "%s stundu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s stunda" +msgstr[1] "%s:%s stundas" +msgstr[2] "%s:%s stundu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "diennakti" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "no saullēkta līdz saulrietam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s, %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s, %s, %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "katru dienu" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "brīvdienas" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "skolas brīvdienas" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "nav atvērts" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "vadu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminālis" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "serviss" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precizitāte — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Nezināms" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Precīzi" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s jūdzes" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s pēdas" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis spraudnis neatbalsta vēlāko ierašanos" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "Turpināt uz %s" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "Turpināt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "Pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "Pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Pagriezt nedaudz pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "Pagriezt nedaudz pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Strauji pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "Strauji pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "Pagriezt pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "Pagriezt pa labi" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Pagriezt nedaudz pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "Pagriezt nedaudz pa labi" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Asi pagriezti pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "Asi pagriezti pa labi" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "No apļa izbrauciet izejā %s" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "No apļa izbrauciet caur izeju uz %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "Iebrauciet aplī" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ņemiet liftu un izbrauciet %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "Ņemiet liftu" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nav sava konta?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner maršruta meklēšana" + +#~ msgid "Add destination" +#~ msgstr "Pievienot galamērķi" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atvērt ar citu lietotni" + +#~ msgid "Press enter to search" +#~ msgstr "Spiediet “Enter”, lai meklētu" + +#~ msgid "Quit" +#~ msgstr "Iziet" + +#~ msgid "OK" +#~ msgstr "Labi" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Atvērt formu slāni…" + +#~ msgid "Load Map Layer" +#~ msgstr "Ielādēt kartes slāni" + +#~ msgid "Open Layer" +#~ msgstr "Atvērt slāni" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f jūdzes" + +#~ msgid "%f ft" +#~ msgstr "%f pēdas" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..63ad5f4e --- /dev/null +++ b/po/meson.build @@ -0,0 +1,2 @@ +i18n.gettext(name, preset: 'glib', + args: [ '--keyword=X-Geoclue-Reason' ]) diff --git a/po/mjw.po b/po/mjw.po new file mode 100644 index 00000000..eb6e5569 --- /dev/null +++ b/po/mjw.po @@ -0,0 +1,1653 @@ +# Karbi translation for gnome-maps. +# Copyright (C) 2019 gnome-maps's Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Jor Teron , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-03 19:54+0000\n" +"PO-Revision-Date: 2019-08-04 23:24+0530\n" +"Last-Translator: Jor Teron \n" +"Language-Team: Karbi \n" +"Language: mjw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2 ; plural=( n != 1 );\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "pathe-bi" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X pen Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username mate e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook long Post" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter long Post" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kadokawe" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Jirpo a jirpo" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Jirpo chot" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Ne anchot" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Monit an" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ladak kopi lo do?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Kiri" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Pathe" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pabi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Account selam" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Maps Aputhak" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Pabi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Pathe" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Maps ke offline!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Sign In" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Nangli OpenStreetMap account dambom lo." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ale" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hem phai" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PIN Code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Rongsopi" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dunthu" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kelo dim…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Non kedam lo" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Kedam apor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Kele apor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Paklang" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Hemkonglong" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Telong" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Pathe" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Account chongvai" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Dim chongvai" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Dak ajat ta longle!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "" + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "" + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "" +"Jor Teron \n" +"Biju Rongpi " + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Chunlo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Men" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Kangpu apor" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Armu" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Dhorom" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Barso-barpi-hem" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Amen tokte adim" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Armu:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Kangpu apor:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet do:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Dhorom:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Barso-barpi-hem:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "" + +#: src/placeEntry.js:194 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "%s pen ingpu" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s pen pangcheng" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pangcheng" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Keng-kedam %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kele dim %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Nangkele" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "Porphai %d" +msgstr[1] "Porphai %d" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "Porphai %d:%02d" +msgstr[1] "Porphai %d:%02d" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "arni ketet pen arni chelut an" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "arnivang" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "rat kangkir" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "locharli-hem kangkir" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ingpu pe" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Puthekthe" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 00000000..8dc9906b --- /dev/null +++ b/po/ml.po @@ -0,0 +1,1600 @@ +# Malayalam translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# syamlalpullamballi , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-10-25 19:38+0000\n" +"PO-Revision-Date: 2018-10-26 22:15+0800\n" +"Last-Translator: Anish Sheela \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ഗ്നോം ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ലോകമെമ്പാടുമുള്ള സ്ഥലങ്ങൾ കണ്ടെത്തുക" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to quickly find the place " +"you’re looking for by searching for a city or street, or locate a place to meet a friend." +msgstr "" +"ഭൂപടങ്ങള്‍ താങ്കള്‍ക്കു ലോകത്തിലെ എല്ലായിടത്തെയും ഭൂപടങ്ങളിലേക്കു പ്രവേശനം നല്‍കുന്നു. ഇത് താങ്കള്‍ അന്വേഷിക്കുന്ന സ്ഥലം നഗരമോ " +"തെരുവൊ തിരയുന്നതിലൂടെ പെട്ടന്നു തന്നെ കണ്ടുപിടിക്കാന്‍ അല്ലെങ്കില്‍ സുഹൃത്തിനെ കാണുവാന്‍ ഒരു സ്ഥലം കണ്ടുപിടിക്കാന്‍ സഹായിക്കുന്നു." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands of people across " +"the globe." +msgstr "" +"ഭൂപടങ്ങള്‍ സഹകരണപരമായ OpenStreetMap ന്റെ ശേഖരിച്ചു് വചിട്ടുള്ള വിവരങ്ങളും വസ്തുതകളും ഉപയോഗിക്കുന്നുണ്ട്, ലോകത്തിലെ " +"എല്ലായിടത്തിലേയും നൂറുകണക്കിനു ആളുകള്‍ ചേര്‍ന്നുണ്ടക്കിയതാണത്." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main Street, Boston” or " +"“Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 src/mainWindow.js:503 +msgid "Maps" +msgstr "ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ലളിതമായ ഒരു ഭൂപട പ്രയോഗം" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "നിങ്ങളുടെ ലൊക്കേഷനെ മാപ്പിൽ കാണിക്കുന്നതിന് അനുവദിക്കുന്നു" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "അവസാനം കണ്ട സ്ഥലം" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "അവസാനം കണ്ട സ്ഥലത്തിന്റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം (വീതിയും ഉയരവും)" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം (X ഉം Y ഉം)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "വലുതാക്കിയ ജാലകം" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "ജാലകം വലുതാക്കുന്ന അവസ്ഥ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "തിരച്ചില്‍ ഫലങ്ങളുടെ പരമാവധി എണ്ണം" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "geocode ഇല്‍ നിന്നും പരിശോധന ഫലത്തിന്റെ പരമാവധി എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS or SELF." +msgstr "" +"ഏറ്റവും പുതിയ ഉപയോഗത്തിലുള്ള Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം. സാധ്യമായ മൂല്യങ്ങൾ: എല്ലാവരേയും, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS അല്ലെങ്കിൽ SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "ഫോർസ്ക്വെയർ ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം." + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private." +msgstr "" +"ഏറ്റവുമധികം ഉപയോഗിച്ചത് Foursquare ചെക്ക്-ഇൻ സ്വകാര്യതാ ക്രമീകരണം. സാധ്യമായ വിലകൾ: പൊതുജനം, പിന്തുടരുന്നവർ " +"അല്ലെങ്കിൽ സ്വകാര്യം." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated " +"with the Foursquare account." +msgstr "" +"ഫോർസ്ക്വെയർ അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഫേസ്സ്കാർ ഫേസ്ബുക്കിൽ അക്കൗണ്ട് പോസ്റ്റുചെയ്ത് ഒരു ഫോൾഡർ ആയി പ്രക്ഷേപണം ചെയ്യേണ്ടതുണ്ടോ " +"എന്ന് സൂചിപ്പിക്കുന്നു." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated " +"with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ദൃശ്യപരത" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ഫേസ്ബുക്കിൽ പോസ്റ്റുചെയ്യുക" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 data/ui/send-to-dialog.ui:21 +#: data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "റദ്ദാക്കുക" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "എല്ലാവർക്കും" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "കൂട്ടുകാരുടെ കൂട്ടുകാര്" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "സുഹൃത്തുക്കൾ മാത്രം" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ഞാൻ മാത്രം" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "പൊതുവായത്" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "അനുയായികൾ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "സ്വകാര്യം" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "എന്താണ് ഇവിടെ ഉള്ളത്?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "സ്ഥാനം പകർത്തുക" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +#, fuzzy +#| msgid "Quit" +msgctxt "shortcut window" +msgid "Quit" +msgstr "അവസാനിപ്പിക്കുക" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ലൊക്കേഷൻ ക്രമീകരണങ്ങൾ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാക്കുക" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "കീബോർഡ് കുറുക്കുവഴികൾ" + +#: data/ui/main-window.ui:18 +#, fuzzy +#| msgid "About" +msgid "About Maps" +msgstr "കുറിപ്പ്" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "നിലവിലെ ലൊക്കേഷനിൽ പോകുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "മാപ്പ് തരം തിരഞ്ഞെടുക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "ചെറുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "വലുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "" + +#: data/ui/main-window.ui:256 +msgid "Maps need an active internet connection to function properly, but one can’t be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ഇമെയിൽ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "രഹസ്യവാക്ക് " + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "പ്രവേശിക്കുക" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "ഒരു അക്കൗണ്ട് ഇല്ലേ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your " +"password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് പൊരുത്തപ്പെടുന്നില്ല, വീണ്ടും ശ്രമിക്കുക." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "മുകളിൽ കാണിച്ചിരിക്കുന്ന പരിശോധനാ കോഡ് നൽകുക" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "പരിശോധിക്കുക" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാണ്." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "പുറത്തിറങ്ങുക" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "തെരുവ്" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "വീട്ട് നമ്പര്‍" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "തപാൽ കോഡ്" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "നഗരം" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "തരം" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ഒന്നുമില്ല" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ഫീള്‍ഡ് ചേര്‍ക്കുക" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "അഭിപ്രായം" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "സമീപകാലത്ത് ഉപയോഗിച്ചവ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "അടുത്തത്" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ല്‍ തിരുത്തുക" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "തെരയാന്‍ എന്റെര്‍ അമര്‍ത്തു" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "ഒരു ഫലവും കണ്ടെത്താനായില്ല" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "വഴിയുടെ ക്രമം മാറ്റാന്‍ നീക്കുക" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "സ്ഥലം തുറക്കുക" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "തുറക്കുക (_O)" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ഇപ്പോൾ വിടുക" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "പുറപ്പെടേണ്ടത്" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "കാണിക്കുക" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ബസ്സുകൾ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ട്രാമുകള്‍" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ട്രെയിനുകൾ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "സബ്‍വേ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ഫെറികള്‍" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ഇപ്പോഴത്തെ സ്ഥാനം" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "കൃത്യത: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "സ്ഥാനം ചേര്‍ക്കാന്‍ വലുതാക്കുക" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "വലുതാക്കുക" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "പ്രോഗ്രാമിന്റെ പതിപ്പു് കാണിക്കുക" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ലോഡ് ചെയ്യുന്നു" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:201 +msgid "Maps cannot find the place to check in to with Facebook. Please select one from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "Maps cannot find the place to check in to with Foursquare. Please select one from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യുക" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യാനുള്ള സന്ദേശം എഴുതുക (താല്‍പര്യമുണ്ടെങ്കില്‍)" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ഒരു പിശക് സംഭവിച്ചു" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "Credentials have expired, please open Online Accounts to sign in and enable this account" +msgstr "" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "ഇവിടെ നിന്ന് പാത" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "ലക്ഷ്യസ്ഥാനം ചേർക്കുക" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "ഇങ്ങോട്ട് റൂട്ട് ചെയ്യുക" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "ഇവിടെ ഒന്നും കണ്ടെത്തിയില്ല" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows on the map and in " +"search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ഡയറക്ടറി നിലവിലില്ല" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ഫയൽ പേരൊന്നും തന്നില്ല" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "റൂട്ട് അഭ്യർത്ഥന പരാജയപ്പെട്ടു." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "ഒരു വഴിയും കണ്ടെത്തിയില്ല." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "ആരംഭിക്കുക!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:436 +msgid "Failed to connect to location service" +msgstr "ലൊക്കേഷൻ സേവനവുമായി ബന്ധിപ്പിക്കുന്നത് പരാജയപ്പെട്ടു" + +#: src/mainWindow.js:501 +msgid "translator-credits" +msgstr "" +"Syamlal Pullamballi \n" +"Anish Sheela \n" +"Suneesh T R " + +#: src/mainWindow.js:504 +msgid "A map application for GNOME" +msgstr "ഗ്നോമിനു വേണ്ടിയുള്ള ഒരു ഭൂപട പ്രയോഗം" + +#: src/mainWindow.js:515 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" + +#: src/mainWindow.js:534 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:550 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "ഫയൽ തരം പിന്തുണയ്ക്കുന്നില്ല" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "ലെയർ തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "തെറ്റായ ഉപയോക്തൃ നാമം അല്ലെങ്കിൽ പാസ്വേഡ്" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "കിട്ടി" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "മോശം അഭ്യർത്ഥന" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "പേര്" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "വിലാസം" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "വെബ്സൈറ്റ്" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example.com instead of " +"http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ഫോൺ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of local privacy laws, " +"especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "വിക്കിപീഡിയ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "തുറക്കുന്ന സമയം" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ജനസംഖ്യ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ഉയരം" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "അതെ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ഇല്ല" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "നിയുക്തനായി" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "വൈ-ഫൈ " + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "വയര്‍" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ടെര്‍മിനല്‍" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "സേവനം" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "മതം" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "അനീമിസം" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ബഹാ ഇ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ബുദ്ധമതം" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "കാവോഡായിസം" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ക്രിസ്തുമതം" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ഹിന്ദുമതം" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ജൈനമതം" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ഇസ്ലാം" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "പല മതങ്ങള്‍" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "പാസ്തഫാരിയന്‍ മതം" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "സൈന്റോളജി" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ഷിന്റോ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "സിഖ് മതം" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "താവോയിസം" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "വൂഡു" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "കക്കുസ്" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "കുറിപ്പ്" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an element, the " +"author’s intent when creating it, or hints for further improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ല്‍ ചേര്‍ക്കുക" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "തരം തെരഞ്ഞെടുക്കുക" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ചെയ്തു" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ജനസംഖ്യ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ഉയരം:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "തുറക്കുന്ന സമയം:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "മതം:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "കക്കുസ്:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ഫോൺ:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "അതെ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ഇല്ല" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "പ്രത്യേക" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "%s-ല്‍ നിന്നും %s-ലേക്ക്" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "റൂട്ട് മറിക്കുക" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "പുറപ്പെടുക" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "നടക്കാനുള്ള വഴി കാണിക്കുക" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "നടക്കാനുള്ള വഴി മറയ്ക്കുക" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "%s നടക്കുക" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" +msgstr[1] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "സൂര്യോദയം മുതൽ സൂര്യാസ്തമനം വരെ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "" + +#: src/translations.js:185 +msgid "every day" +msgstr "എല്ലാ ദിവസവും" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "പൊതു അവധികൾ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "സ്കൂള്‍ അവധിക്കാലം" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "" + +#: src/translations.js:264 +msgid "not open" +msgstr "തുറന്നിട്ടില്ല" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "വയര്‍" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ടെര്‍മിനല്‍" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "സേവനം" + +#. Translators: Accuracy of user location information +#: src/utils.js:226 +msgid "Unknown" +msgstr "അപരിചിതം" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Exact" +msgstr "അനുയോജ്യമായ" + +#: src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "" + +#: src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "" + +#: src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "" + +#. Translators: This is a distance measured in meters +#: src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "" + +#. Translators: This is a distance measured in miles +#: src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "" + +#. Translators: This is a distance measured in feet +#: src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "" + +#~ msgid "Last known location and accuracy" +#~ msgstr "അവസാനത്തെ സ്ഥാനവും കൃത്യതയും" + +#~ msgid "Last known location (latitude and longitude in degrees) and accuracy (in meters)." +#~ msgstr "അവസാന അറിയുന്ന സ്ഥലവും (അക്ഷാംശവും രേഖാംശവും ഡിഗ്രിയില്‍) കൃത്യതയും (മീറ്ററില്‍)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ഉപയോക്താവിന്‍റെ അവസാന സ്ഥാനത്തിന്റെ വിവരണം." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ഉപയോക്താവിന്റെ സ്ഥാനം ഉപയോക്താവ് നേരിട്ട് ചെയ്തതാണോ എന്ന്." + +#~ msgid "I’m here!" +#~ msgstr "എന്റെ സ്ഥാനം" + +#~ msgid "Satellite" +#~ msgstr "ഉപഗ്രഹം" + +#~ msgid " km²" +#~ msgstr "കിമീ²" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 00000000..f59530e7 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,1838 @@ +# Malay translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# abuyop , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-27 07:57+0000\n" +"PO-Revision-Date: 2020-01-27 17:51+0800\n" +"Language-Team: Pasukan Terjemahan GNOME Malaysia\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Last-Translator: abuyop \n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Peta GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cari tempat-tempat di sekitar dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memudahkan capaian pada peta di serata dunia. Ia membolehkan anda cari " +"tempat yang dikehendaki dengan pantas iaitu menggelintar sebuah bandar atau " +"jalan, atau ketahui lokasi untuk bertemu dengan rakan." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta menggunakan pangkalan data OpenStreetMap yang terhasil secara " +"kolaboratif oleh beratus-ratus individu di serata dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda boleh menggelintar jenis-jenis lokasi secara khusus, seperti \"Pubs " +"near Main Street, Boston” atau “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Sebuah aplikasi peta yang ringkas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Membolehkan lokasi anda ditunjukkan di dalam peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi dilihat terakhir" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat lokasi dilihat kali terakhir." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zum" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Aras zum" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta yang dipaparkan (jalan, aerial, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Saiz tetingkap" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Saiz tetingkap (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Kedudukan tetingkap" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Kedudukan tetingkap (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilangan maksimum keputusan gelintar" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilangan maksimum keputusan gelintar melalui geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Bilang tempat baru-baru ini disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Bilangan tempat baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Bilangan laluan baru-baru ini untuk disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Bilangan laluan baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Facebook terakhir digunakan. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Foursquare terakhir digunakan. Nilai yang " +"mungkin adalah: public, followers atau private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siaran Facebook daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Facebook yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Siaran Twitter daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Twitter yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat e-mel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menunjukkan jika pengguna telah berdaftar masuk untuk menyunting data " +"OpenstreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis pengangkutan terakhir digunakan untuk perjalanan" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ketampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Hantaran pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Hantaran pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Daftar masuk" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Sesiapa Sahaja" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Rakan rakan" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Rakan sahaja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Saya sahaja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Awam" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Persendirian" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Apa ada di sini?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pandangan eksport" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksport" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan laluan dan penanda" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Am" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tunjuk Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Gelintar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak laluan" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pandangan Peta" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zum masuk" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zum keluar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Togol skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke pandangan jalan" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke pandangan aerial" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka lapisan bentuk" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Buka Lapisan Bentuk…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Hidupkan perkhidmatan lokasi untuk mencari lokasi anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Tetapan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Pasang Akaun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksport sebagai Imej" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Pintasan Papan _Kekunci" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Perihal Peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zum keluar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zum masuk" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Togol kegemaran" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Cetak Laluan" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Peta di luar talian!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlukan satu sambungan internet aktif supaya dapat berfungsi dengan " +"baik, tetapi tidak ditemui." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Periksa sambungan dan tetapan proksi anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke laluan baharu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kongsi lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tanda sebagai kegemaran" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Daftar-masuk di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akaun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Daftar masuk untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantu menambah baik peta, menggunakan\n" +"akaun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata laluan" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Daftar Masuk" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Belum ada akaun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, tidak berjaya. Cuba sekali lagi, atau lawati\n" +"OpenStreetMap untuk menetap semula kata laluan anda." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kod pengesahan tidak sepadan, cuba sekali lagi." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Masukkan kod pengesahan yang ditunjukkan di bawah" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sahkan" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Berdaftar Masuk" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Akaun OpenStreetMap anda masih aktif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Daftar Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nombor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poskod" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Bandar" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Tiada" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Medan" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Ulasan" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan kelihatan pada semua peta yang\n" +"menggunakan data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Digunakan Baru-Baru Ini" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Berikutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tunjuk lagi maklumat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tiad keputusan ditemui" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah tertib laluan" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Hantar Kepada…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Buka Lapisan Bentuk" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Togol tampak" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Gelintar laluan oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerari laluan untuk pengangkutan awam disediakan oleh\n" +"perkhidmatan pihak-ketiga.\n" +"GNOME tidak memberi apa-apa jaminan ketepatan itinerari dan jadual yang " +"ditunjukkan.\n" +"Perhatian, sesetengah penyedia tidak menyertakan semua mod pengangkutan yang " +"ada,\n" +"iaitu penyedia kebangsaan mungkin tidak melibatkan kapal terbang, dan " +"penyedia tempatan\n" +"mungkin tidak melibatkan keretapi wilayah.\n" +"Nama dan jenama yang ditunjukkan dianggap sebagai tanda dagangan berdaftar " +"bila perlu." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tunjuk lagi keputusan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyi hentian dan maklumat pertengahan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tunjuk hentian dan maklumat pertengahan" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tunjuk" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bas" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Keretapi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Kapal Terbang" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi semasa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zum masuk untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom Masuk" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal mencari struktur jubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal menghurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut diperlukan hilang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tidak dapat mencari unsur OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Satu laluan ke struktur direktori jubin setempat" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Tunjuk versi program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Abai ketersediaan rangkaian" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih satu akaun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuatkan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih satu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Facebook. Sila " +"pilih salah satu menerusi senarai ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Foursquare. " +"Sila pilih salah satu menerusi senarai ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Daftar masuk pada %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis satu mesej pilihan untuk mendaftar masuk pada %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Satu ralat telah berlaku" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tidak dapat mencari \"%s\" dalam perkhidmatan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tidak dapat mencari satu tempat yang sesuai untuk mendaftar masuk dalam " +"lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kelayakan telah luput, sila buka Akaun Dalam Talian untuk mendaftar masuk " +"dan membenarkan akaun ini" + +#: src/contextMenu.js:94 +msgid "Route from here" +msgstr "Laluan dari sini" + +#: src/contextMenu.js:96 +msgid "Add destination" +msgstr "Tambah destinasi" + +#: src/contextMenu.js:98 +msgid "Route to here" +msgstr "Laluan ke sini" + +#: src/contextMenu.js:124 +msgid "Nothing found here!" +msgstr "Tiada apa-apa ditemui di sini!" + +#: src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi telah ditambah ke dalam peta, perhatian ia mungkin mengambil masa " +"sebelum dapat ditunjukkan pada peta dan dalam keputusan gelintar." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta pada %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem fail adalah baca sahaja" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tidak mempunyai keizinan menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak wujud" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiada nama fail dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tidak boleh mengeksport pandangan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tidak sah" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ralat hurai" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tidak diketahui" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Permintaan laluan gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Tiada laluan ditemui." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Mula!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Semua Fail Lapisan" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung dengan perkhidmatan lokasi" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"abuyop\n" +"CL TAN https://launchpad.net/~tcl111985\n" +"Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris\n" +"Launchpad Translations Administrators https://launchpad.net/~rosetta\n" +"ahmad akmal bin mohd idris https://launchpad.net/~mamahopsk87\n" +"dequan https://launchpad.net/~dequan" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Sebuah aplikasi peta untuk GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak cipta © 2011 – 2019 Red Hat, Inc. dan para pengarang Peta GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan para penyumbang" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Gelintar disediakan oleh %s menggunakan %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Jenis fail tidak disokong" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Gagal membuka lapisan" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau kata laluan salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berjaya" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan tidak elok" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tidak ditemui" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, ada orang lain baru sahaja mengubah suai objek" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dipadamkan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama rasmi. Ia biasanya muncul ketika daftar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tapak Sesawang" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Tapak sesawang rasmi. Cuba guna bentuk URL paling asas iaitu http://example." +"com selain dari http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nombor telefon. Guna format antarabangsa, bermula dengan tanda +. Hati-hati " +"dengan undang-undang kerahsiaan setempat, terutamanya nombor telefon " +"persendirian." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang digunakan patut sertakan kod bahasa dan tajuk artikel seperti " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat pautan dalam label untuk bantuan berkenaan format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Ketinggian (tinggi di atas aras laut) sesuatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Capaian kerusi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terhad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Dikhususkan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Capaian internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Berwayar" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Perkhidmatan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budha" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Taodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristian" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindu" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Agama Berbilang" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tandas" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Maklumat yang digunakan untuk maklumkan pemeta lain berkenaan maklumat tidak " +"jelas berkenaan sesebuah unsur, niat pengarang ketika menciptanya, atau " +"pembayang untuk penambahbaikan lanjutan." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Capaian internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tandas:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Capaian kerusi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Gagal menghurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terhad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "dikhususkan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemui dalam OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tidak sah" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tidak sah" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tidak disokong" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s hingga %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuatkan jubin-jubin peta untuk percetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" +"Anda boleh menghenti paksi percetakan jika ia mengambil masa terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Henti paksa percetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah melalui lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Buang melalui lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Songsangkan laluan" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambah %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuatkan fail" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Masa anggaran: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mula pada %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mula" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba pada %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tunjuk arahan berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyi arahan berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Muat alternatif lebih awal" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Muat alternatif terkemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tiada alternatif lebih awal ditemui." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tiada alternatif terkemudian ditemui." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tiada data jadual waktu ditemui untuk laluan ini." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tiada penyedia ditemui untuk laluan ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minit" +msgstr[1] "%d minit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d jam" +msgstr[1] "%d jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d jam" +msgstr[1] "%d:%02d jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dalam tempoh" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit hingga matahari terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "cuti umum" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "cuti sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "berwayar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "perkhidmatan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ketepatan: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tidak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tepat" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f j" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Teruskan pada %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Teruskan" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Belok sedikit kiri" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok tajam kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Belok tajam kiri" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Belok sedikit kanan" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok tajam kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Belok tajam kanan" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dalam bulatan, ambil susur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dalam bulatan, ambil susur keluar ke %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Masuk bulatan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Masuk lif dan keluar pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Masuk lif" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Buat satu pusingan-u ke %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Buat satu pusingan-u" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Buat satu pusingan-u kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Buat satu pusingan-u kanan" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 00000000..4d22a2b0 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1885 @@ +# Norwegian bokmål translation of gnome-maps. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kjartan Maraas , 2013-2021. +# Åka Sikrom , 2014. +# haarek , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.40.x\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-13 18:58+0100\n" +"Last-Translator: Kjartan Maraas \n" +"Language-Team: Norwegian bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kart" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Se på steder over hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kart gir deg rask tilgang til kart for hele verden. Det lar deg raskt finne " +"stedet du leter etter ved å søke etter en by eller en gate, eller finne et " +"sted å møte en venn." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kart bruker OpenStreetMap-databasen som er laget av hundretusener av " +"mennesker fra hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan også søke etter en bestemt type sted, som f.eks. «Pub nær Main " +"Street, Boston» eller «Hoteller nær Alexanderplatz, Berlin»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME prosjektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Kart" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kart;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lar lokasjonen din vises på kartet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sist viste posisjon" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sist viste posisjon." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom-nivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type kart" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Type kart som skal vises (gate, fly osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vindustørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vindustørrelse (bredde og høyde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduposisjon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduposisjon (x og y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindu maksimert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tilstand for maksimering av vindu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimalt antall søkeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalt antall søkeresultater fra geokode-søk." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antall nylige steder å lagre" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antall nylig besøkte steder som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antall nylige ruter å lagre" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antall nylig besøkte ruter som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Personvern-innstilling for Facebook-innsjekk" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sist brukt personvern-innstilling for Facebook-innsjekk. Følgende verdier er " +"gyldige: «EVERYONE» (alle), «FRIENDS_OF_FRIENDS» (venners venner), " +"«ALL_FRIENDS» (alle venner) og «SELF» (bare meg)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Personvern-innstilling for Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sist brukt personvern-innstilling for Foursquare-innsjekk. Følgende verdier " +"er gyldige: «public», «followers» og «private»." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Facebook-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Twitter-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brukernavn eller e-postadresse for OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indikerer om bruker har logget inn for å redigere OpenStreeMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sist brukte transporttype for ruting" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet vises i nattmodus." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "S_jekk inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venner av venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bare venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bare meg" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute fra denne lokasjonen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Legg til mellomstopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute til denne lokasjonen" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hva finnes her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopier posisjon" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksporter visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Ta med rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Velg karttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom inn" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå av/på favoritter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis snarveier" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søk" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avslutt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åpne hovedmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom inn" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå av/på skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Bytt til gatevisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Bytt til flyvisning" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åpne formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åpne formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Skru på posisjonstjenester for å se hvor du er" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Posisjonsinnstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Sett opp konto på OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksporter som bilde" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatursnarveier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kart" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Åpne hovedmeny" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kart er frakoblet!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kart trenger en aktiv internettforbindelse for å fungere, men ingen ble " +"funnet." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Sjekk tilkobling og innstillinger for proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto for OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logg inn for å redigere kart" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjelp til å forbedre kartet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrer deg" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logg inn" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager, det virket ikke. Vennligst prøv igjen eller besøk\n" +"OpenStreetMap for å nullstille passordet ditt." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifiseringskoden var ikke riktig. Vennligst prøv igjen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Oppgi verifikasjonskoden som vises over" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiser" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget inn" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logg ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gate" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Legg til felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Endringer på kartet vil vises på alle kart som bruker\n" +"data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nylig brukt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Neste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater funnet" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Det har oppstått en feil" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra for å endre rekkefølgen på ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åpne posisjon" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopier" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Sjekk inn …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åpne formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åpne" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå av/på synlige" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøk av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutetabeller for offentlig transport tilbys av tredjepartstjenester\n" +"\n" +"GNOME kan ikke garantere riktighet for rutetabellene og tidsplanene.\n" +"Merk at enkelte tilbydere ikke alltid inkluderer alle mulige typer " +"transport. F.eks. vil noen aktører ikke ta med flyselskaper, mens en lokal " +"tilbyder kanskje utelater regionstog.\n" +"Navn og merker som vises skal anses som registrerte varemerker når det er " +"relevant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul stopp og informasjon langs ruten" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis stopp og informasjon på veien" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Dra nå" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Dra før" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankom før" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trikker" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "T-bane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjer" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Del posisjon" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Legg til i ny rute" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Retningsanvisninger" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merk som favoritt" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom inn for å legge til en lokasjon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom inn" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Klarte ikke å finne flisstruktur i katalogen" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Klarte ikke å tolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Fant ikke OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal katalogstruktur med fliser" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Størrelse på fliser i lokal katalogstruktur med fliser" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Vis programmets versjon" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Overse nettverkstilgjengelighet" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Velg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Laster" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Velg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Facebook. Velg et sted " +"her." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Foursquare. Velg et sted " +"her." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Sjekk inn på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv en valgfri melding for å sjekke inn ved %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finner ikke «%s» i sosial tjeneste" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Fant ingen passende steder å sjekke inn på denne posisjonen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiver er utgått. Åpne Nettkontoer for å logge inn og bruke denne " +"kontoen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasjonen ble lagt til på kartet. Merk at det kan ta litt tid før den vises " +"på kartet og dukker opp i søkeresultater." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kart fra %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke rettigheter til å lagre der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen eksisterer ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Filnavn ikke oppgitt" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Gjeldende posisjon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lesefeil" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukjent geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Forespørsel om rute feilet." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ingen rute funnet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Klarte ikke å koble til posisjonstjeneste" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"haarek , Kjartan Maraas , Åka " +"Sikrom " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Et kartprogram for GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Opphavsrett © 2011 - 2021 Red Hat, Inc. og GNOME kart utviklerene" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata av %s og bidragsytere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartfliser av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søk tilbys av %s ved bruk av %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Klarte ikke å åpne lag" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Vil du fortsette?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Du er i ferd med å åpne filer med en total størrelse på %s MB. Dette kan ta litt tid" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Filtypen er ikke støttet" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Klarte ikke å åpne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Feil brukernavn eller passord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Suksess" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Fant ikke objektet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt. Noen andre har akkurat endret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er slettet" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vei eller relasjon refererer til ikke-eksisterende barn" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Det offisielle navnet. Dette er typisk det som vises på skilt." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Nettsted" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Dette er ikke en gyldig URL. Sjekk at http:// eller https:// er inkludert." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Det offisielle nettstedet. Prøv å bruke den mest grunnleggende formen av en " +"URL. F.eks. http://eksempel.no i stedet for http://eksempel.no/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Bruk det internasjonale formatet som starter med et +-tegn. " +"Vær observant på lokale lover om personvern, spesielt for private " +"telefonnummer." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Formatet som brukes skal inkludere språkkode og tittel på artikkelen slik: «en:Tittel på artikkel»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Åpningstider" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Se lenken i etiketten for hjelp om format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Folketall" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Høyde" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Høyde over have for et punkt i meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Rullestolvennlig" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Begrenset" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Spesialtilpasset" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internett-tilgang" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Trådløst" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddisme" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikdom" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarisk universalisme" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jesidisme" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Merknad" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Informasjon som brukes til å informere andre kartbrukere om ting som ikke er innlysende om et element. Forfatterens formål når noe ble laget, eller hint for videre forbedring." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Velg type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Ferdig" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Sted uten navn" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Klarte ikke å tolke Geo-URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Nøyaktighet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøyaktighet: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Offentlig internett-tilgang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ingen internett-tilgang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Offentlig Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Kablet internett-tilgang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Datamaskiner tilgjengelig for bruk" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internetthjelp tilgjengelig" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Ingen toaletter tilgjengelig" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toaletter tilgjengelig" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Rullestol tilgjengelig" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Begrenset tilgang for rullestol" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Ikke tilgjengelig med rullestol" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Utformet for rullestolbrukere" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Stedet ble ikke funnet i OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatene i URLen er ikke gyldige" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URLen støttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Laster kartruter for utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryte utskriften hvis dette tar for lang tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Legg til mellomlokasjon" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern mellomlokasjon" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Omvendt rute" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Legg til %s til %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Klarte ikke å åpne URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Åpne med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "klarte ikke å laste fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimert tid: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ruteplaner tilbys av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start ved %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankom ved %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankom" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis instruksjoner for fotgjengere" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul instruksjoner for fotgjengere" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Last tidligere alternativer" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Last senere alternativer" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer funnet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer funnet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ingen ruteinformasjon funnet for denne ruten." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen tilbyder funnet for denne ruten." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutt" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Hele døgnet" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Fra soloppgang til solnedgang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Offentlige fridager" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Skoleferie" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ikke åpen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ukjent" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Nøyaktig" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s t" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s t %s min" +msgstr[1] "%s t %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette tillegget støtter ikke siste ankomst" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsett på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsett" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sving til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sving svakt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sving svakt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sving hardt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sving hardt til venstre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sving til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sving til høyre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sving svakt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sving svakt til høyre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sving hardt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sving hardt til høyre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avkjørsel %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avkjørsel til %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Kjør gjennom rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta heisen og gå av i %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ta heisen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Ta en u-sving til venstre inn på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Ta en u-sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Ta en u-sving til høyre inn på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Ta en u-sving til høyre" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 00000000..05303199 --- /dev/null +++ b/po/ne.po @@ -0,0 +1,1617 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Gnome Nepali Translation Project\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-07-24 21:57+0000\n" +"PO-Revision-Date: 2017-08-13 14:57+0545\n" +"Last-Translator: Pawan Chitrakar \n" +"Language-Team: Nepali Translation Team \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "जिनोम मानचित्र" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:476 +msgid "Maps" +msgstr "मानचित्र" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "सहज मानचित्र अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "मानचित्र;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +msgid "last viewed location" +msgstr "हालै हेरिसकेको" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "सञ्झ्याल साइज" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "सञ्झ्यालको नाप( उचाइ र चौडाई )" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "संझ्यालको स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "सञ्झ्यालको स्थान(X र Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "सञ्झ्यालको अधिकतम स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +#, fuzzy +msgid "Window maximization state" +msgstr "बढाइएको स्थितिलाई टगल गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "अत्याधिक खोजी परिणाम प्राप्त गर्दै..." + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +#, fuzzy +msgid "Number of recent places to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +#, fuzzy +msgid "Number of recent routes to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +#, fuzzy +msgid "Number of recently visited routes to store." +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +#, fuzzy +msgid "OpenStreetMap username or e-mail address" +msgstr "इमेल ठेगाना प्रतिलिपि गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +#, fuzzy +msgid "Set up OpenStreetMap Account" +msgstr "सिर्जना र सेटअप गर्नुहोस्" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "कुञ्जीपाटी सटकर्ट" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "बारेमा" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "अन्त्य गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "दृश्यात्मक" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "फेसबुकमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "ट्विट्टरमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_रद्द गर्नुहोस्" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +#, fuzzy +msgid "C_heck in" +msgstr "जाँच गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "सबैजना" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "साथीको साथी" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "साथीमात्र" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "म मात्रै" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "सार्वजनिक" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "अनुयायीहरू" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "व्यक्तिगत" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहा के छ ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "स्थान प्रतिलिपि गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "छवि को रुपमा निर्यात गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:4 +#, fuzzy +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "निर्यात दृष्य" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "निर्यात" + +#: ../data/ui/export-view-dialog.ui.h:4 +#, fuzzy +msgid "Include route and markers" +msgstr "लाइन चिन्हकलाई देखाउनुहोस्" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "सामान्य" + +#: ../data/ui/help-overlay.ui.h:2 +#, fuzzy +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "सर्टकटहरू" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "खोजी" + +#: ../data/ui/help-overlay.ui.h:4 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "उल्टनू" + +#: ../data/ui/help-overlay.ui.h:5 +#, fuzzy +msgctxt "shortcut window" +msgid "Print route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "_बन्द गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:7 +#, fuzzy +msgctxt "shortcut window" +msgid "Map View" +msgstr "...मा मानचित्र्शा" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "यसमा जुम गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "जुम घटाउनुहोस््" + +#: ../data/ui/help-overlay.ui.h:10 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "मापन" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#: ../data/ui/help-overlay.ui.h:12 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:13 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "आकार:वितरणको आकार परामिति" + +#: ../data/ui/layers-popover.ui.h:1 +#, fuzzy +msgid "Load Map Layer" +msgstr "छवि मानचित्र लोड गर्नुहोस्" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +#, fuzzy +msgid "Location Settings" +msgstr "सेटिङ्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "मानचित्र प्रकार रोज्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#, fuzzy +msgid "Toggle route planner" +msgstr "उल्टनू" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#, fuzzy +msgid "Toggle favorites" +msgstr "मनपर्ने" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +#, fuzzy +msgid "Print Route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/main-window.ui.h:12 +#, fuzzy +msgid "Maps is offline!" +msgstr "अफलाइन" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +#, fuzzy +msgid "Add to new route" +msgstr "नयाँ पात्रो जोड्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +#, fuzzy +msgid "Mark as favorite" +msgstr "मनपर्ने " + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +#, fuzzy +msgid "Check in here" +msgstr "यहाँ ल्याउनुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:1 +#, fuzzy +msgid "OpenStreetMap Account" +msgstr "खाता:" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "इमेल" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "पासवर्ड" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "लगइन गर्दै" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +msgid "Don’t have an account?" +msgstr "यो प्रदर्शन प्रयोग नगर्नु" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "रूजु गर्नुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:16 +#, fuzzy +msgid "Your OpenStreetMap account is active." +msgstr "तपाईँको सिप खाताको पासवर्ड के हो ?" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "साइन आउट" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "सडक" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "घर नम्बर" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "जिप/हुलाकी सङ्केत" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "सहर" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "वर्ग" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "कुनै पनि होइन" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "फाँट थप्नुहोस्" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "टिप्पणी" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "हालै प्रयोग गरिएको" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#, fuzzy +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "रद्द गर्ने" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "पछिल्लो" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +#, fuzzy +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "बढी सूचना" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "खोजको लागि इन्टर थिच्नुहोस्" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "नतिजा भेटिएन" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +#, fuzzy +msgid "Drag to change order of the route" +msgstr "वक्ररेखाको आकार परिवर्तन गर्न तान्नुहोस् क्लिक गर्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "स्थान खोल्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "खोल्नुहोस्" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "तह खोल्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +#, fuzzy +msgid "Toggle visible" +msgstr "दृष्य" + +#: ../data/ui/sidebar.ui.h:1 +#, fuzzy +msgid "Route search by GraphHopper" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +msgid "Route search by OpenTripPlanner" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "अरू धेरै नतिजा देखाउनुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#, fuzzy +msgid "Show intermediate stops and information" +msgstr "संस्करण सूचना देखाउनुहोस् र निस्कनुहोस्" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +#, fuzzy +msgid "Leave Now" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +#, fuzzy +msgid "Leave By" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "देखाउने" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "बस" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ट्राम" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "ट्रेन" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "सबवे" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "फेर्री" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "हालको स्थन" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "शुद्धता: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +#, fuzzy +#| msgid "Go to current location" +msgid "Zoom in to add location!" +msgstr "स्थान" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "OK" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +msgid "Failed to parse XML document" +msgstr "XML कागजात राम्रोसँग ढाँचा भएन !" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "आवश्यक मान हराइरहेछ" + +#: ../lib/maps-osm.c:453 +#, fuzzy +msgid "Could not find OSM element" +msgstr "मद्दत डाइरेक्टरी फेला पार्न सकेन" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "खाता चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "लोड गर्दै" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "स्थान चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, fuzzy, javascript-format +msgid "Check in to %s" +msgstr "%s पत्र फाइल जाँच गर्न सकेन: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, fuzzy, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s लाई लेख्न असफल भयो (अनुमतिहरू जाँच गर्नुहुन्छ ?)" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "एउटा त्रुटि देखापर्यो ।" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "डाइरेक्टरी फेला पार्न सक्दैन %s" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/contextMenu.js:96 +#, fuzzy +msgid "Route from here" +msgstr "बाटो भेटिएन" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "गन्तव्य थप्नुहोस्" + +#: ../src/contextMenu.js:100 +#, fuzzy +msgid "Route to here" +msgstr "पूर्वनिर्धारित पथ" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "केही पनि भेटिएन" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +#, fuzzy +msgid "Filesystem is read only" +msgstr "फाइल प्रणाली" + +#: ../src/exportViewDialog.js:158 +#, fuzzy +msgid "You do not have permission to save there" +msgstr "यो फाइल संचय गर्न तपाईँसँग आवश्यक अनुमतिहरू छैनन् ।" + +#: ../src/exportViewDialog.js:160 +#, fuzzy +msgid "The directory does not exist" +msgstr "त्यहा अवस्थित छैन" + +#: ../src/exportViewDialog.js:162 +#, fuzzy +msgid "No filename specified" +msgstr "फाइलनाम:" + +#: ../src/exportViewDialog.js:170 +#, fuzzy +msgid "Unable to export view" +msgstr "निर्यात गर्नुहोस्" + +#: ../src/geoJSONSource.js:98 +#, fuzzy +msgid "invalid coordinate" +msgstr "समन्वय गर्नुहोस्" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "पदवर्णन त्रुटि" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "अज्ञात ज्यामिति" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +#, fuzzy +msgid "Route request failed." +msgstr "अनुरोध असफल" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "बाटो भेटिएन" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "सुरु!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "सबै तह फाइलहरू" + +#: ../src/mainWindow.js:418 +msgid "Failed to connect to location service" +msgstr "स्थान सेवा जडान असफल" + +#: ../src/mainWindow.js:474 +msgid "translator-credits" +msgstr "Pawan Chitrakar " + +#: ../src/mainWindow.js:477 +msgid "A map application for GNOME" +msgstr "जिनोमको मानचित्र अनुप्रयोग" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "फाइल प्रकार समर्थित छैन" + +#: ../src/mapView.js:363 +#, fuzzy +msgid "Failed to open layer" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/mapView.js:399 +#, fuzzy +msgid "Failed to open GeoURI" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/openTripPlanner.js:622 +#, fuzzy +msgid "No earlier alternatives found." +msgstr "%s भन्दा छिटो होइन" + +#: ../src/openTripPlanner.js:623 +#, fuzzy +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "पछि" + +#: ../src/openTripPlanner.js:661 +#, fuzzy +msgid "No timetable data found for this route." +msgstr "बाटो भेटिएन" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +#, fuzzy +msgid "Incorrect user name or password" +msgstr "" +"सर्भरमा जडान गर्दा त्यहाँ एउटा त्रुटि थियो । यो एउटा गलत प्रयोग कर्ता नाम र/वा " +"पासवर्ड प्रयोग गरेको कारणले हुन सक्दछ ।" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "सफलता" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "खराब अनुरोध" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "वस्तु फेला परेन" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +#, fuzzy +msgid "Object has been deleted" +msgstr "मुद्रणयन्त्र “%s” मेटियो" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "नाम" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "ठेगाना" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "वेबसाइट" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "फोन" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "विकिपेडिया" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +msgid "Opening hours" +msgstr "खुल्दैछ" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "जनसङ्ख्या" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "ऊचाई" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +msgid "Wheelchair access" +msgstr "पहुँच:" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "ठिक छ" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "होइन" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "सिमित" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "" + +#: ../src/osmEditDialog.js:171 +#, fuzzy +msgid "Internet access" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "वाई-फाई" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "तारजडिट" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "टर्मिनल" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "सेवा" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "धर्म" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "बहाई धर्म" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "बौद्ध धर्म" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "ईसाई धर्म" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "कन्फुशियस धर्म" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "हिन्दु धर्म" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "जैन धर्म" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "यहूदी धर्म" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "इस्लाम धर्म" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "धेरैवटा क्षेत्र" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "पगानि धर्म" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "वैज्ञानिक विज्ञान" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "शिन्टो धर्म" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "सिख धर्म" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "आध्यात्मिकता" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "टाओ धर्म" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "यूनिटेरिया यूनिवर्सलवाद" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "शौचालय" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "द्रष्टव्य" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +#, fuzzy +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "प्रकार चयन गर्नुहोस्" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "सम्पन्न भयो" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "जनसङ्ख्या :" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "ऊचाई:" + +#: ../src/placeBubble.js:133 +#, fuzzy +msgid "Opening hours:" +msgstr "खुल्दैछ" + +#: ../src/placeBubble.js:138 +#, fuzzy +msgid "Internet access:" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "धर्म:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "शौचालय:" + +#: ../src/placeBubble.js:153 +#, fuzzy +msgid "Wheelchair access:" +msgstr "पहुँच:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "फोन:" + +#: ../src/placeEntry.js:190 +#, fuzzy +msgid "Failed to parse Geo URI" +msgstr "जिपिजि प्रयोगकर्ता आइडी संकेत पद वर्णन गर्न असफल भयो ।" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "ठिक छ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "सिमित" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "होइन" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "%s बाट %s " + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "परित्याग गर्नुहोस्" + +#: ../src/sendToDialog.js:179 +#, fuzzy +msgid "Failed to open URI" +msgstr "URI खोल्न असक्षम" + +#: ../src/shapeLayer.js:92 +#, fuzzy +msgid "failed to load file" +msgstr "फाइल लोड गर्न असफल" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अन्दजि समय: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "आइपुग्छन्" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "सुरु" + +#: ../src/transitLegRow.js:107 +#, fuzzy +msgid "Show walking instructions" +msgstr "यसका लागि देखाउनुहोस्" + +#: ../src/transitLegRow.js:108 +#, fuzzy +msgid "Hide walking instructions" +msgstr "सञ्झ्याल लुकाउनुहोस्" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, fuzzy, javascript-format +msgid "Walk %s" +msgstr "%s: का लागि" + +#: ../src/transitMoreRow.js:41 +#, fuzzy +msgid "Load earlier alternatives" +msgstr "%s भन्दा छिटो होइन" + +#: ../src/transitMoreRow.js:43 +#, fuzzy +msgid "Load later alternatives" +msgstr "पछि" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d मिनेट" +msgstr[1] "%d मिनेट" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d घण्टा" +msgstr[1] "%d घण्टा" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d घण्टा" +msgstr[1] "%d:%02d घण्टा" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +#, fuzzy +msgid "around the clock" +msgstr "घडी" + +#: ../src/translations.js:58 +#, fuzzy +msgid "from sunrise to sunset" +msgstr "सूर्यास्ट देखि सूर्योदय" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "प्रत्येक दिन" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "सार्वजनिक विदा" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "स्कुल विदा" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +#, fuzzy +msgid "not open" +msgstr "यससँग खोल्नुहोस्:" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "तारजडिट" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "टर्मिनल" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "सेवा" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "दुरुस्त" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s किलोमिटर" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s मिटर" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s माइल" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%sफिट" + +#~ msgid "I’m here!" +#~ msgstr "म यहा छु" + +#~ msgid "Country code: %s" +#~ msgstr "देश मानक:%s" + +#~ msgid "%f km²" +#~ msgstr "%f वर्गकिलोमिटर" + +#~ msgid "%f km" +#~ msgstr "%f किलोमिटर" + +#~ msgid "%f m" +#~ msgstr "%f m" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 00000000..319f6279 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,2094 @@ +# Dutch translation for gnome-maps +# Copyright (C) 2013, 2014 +# This file is distributed under the same license as the GNOME Maps package. +# Check-in: voorlopig even onvertaald gelaten - Hannie +# Erwin Poeze , 2013, 2014. +# Reinout van Schouwen , 2013. +# Hannie Dumoleyn , 2015. +# Nathan Follens , 2015-2021. +# Justin van Steijn , 2015-2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.16\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 15:56+0200\n" +"Last-Translator: Nathan Follens \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnome Kaarten" + +# rond de wereld +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vind plaatsen de wereld rond" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaarten geeft u snelle toegang tot kaarten over de hele wereld. U kunt snel " +"de plaats waarnaar u op zoek bent vinden door te zoeken naar een stad of de " +"straat, of de plek opzoeken om een vriend te ontmoeten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaarten gebruikt de gemeenschappelijk opgebouwde OpenStreetMap-database, " +"gemaakt door honderdduizenden mensen over de hele wereld." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Het Gnome-project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kaarten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Een eenvoudige kaartentoepassing" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kaart;Kaarten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Geeft uw locatie weer op de kaart." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laatst bekeken locatie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coördinaten van de laatst bekeken locatie." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoomen" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kaarttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Het type kaart om weer te geven (straten, lucht, enz.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Venstergrootte" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Venstergrootte (breedte en hoogte)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vensterpositie" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vensterpositie (X en Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Venstergrootte gemaximaliseerd" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Venstermaximalisatiestaat" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum aantal zoekresultaten" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum aantal resultaten van zoeken op geografische positie." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Aantal recente locaties om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Aantal recent bezochte locaties om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Aantal recente routes om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Aantal recent afgelegde routes om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-inchecken privacyinstellingen" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"De laatst gebruikte privacyinstellingen Foursquare-incheck. Mogelijke " +"waarden zijn: openbaar, volgers of privé." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de incheck in een bericht moet bekend maken in het " +"Facebook-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de controle in een bericht moet bekend maken in het " +"Twitter-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-gebruikersnaam of -e-mailadres" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Geeft aan of de gebruiker ingelogd is om OpenStreetMap-gegevens te bewerken." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Laatst gebruikte transporttype voor routering" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Of het programma in nachtmodus staat." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hybride luchtfototegels gebruiken" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Of luchtfototegels een hybride stijl moeten gebruiken (met labels)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Posten op Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Posten op Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuleren" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Inc_hecken" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Openbaar" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Volgers" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route vanaf hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tussenstop toevoegen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route naar hier" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Wat bevindt zich hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Locatie kopiëren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Weergave exporteren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporteren" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Route en markeringen opnemen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Kies kaartsoort" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Uitzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Inzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Route afdrukken" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Bladwijzers in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Algemeen" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Sneltoetsen tonen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Zoeken" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afsluiten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kaartweergave" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Inzoomen" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uitzoomen" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Schaal in/uitschakelen" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Overschakelen naar straatbeeld" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Overschakelen naar luchtbeeld" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vormlaag openen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Labels tonen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vormlaag openen…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Locatiedienst inschakelen om uw locatie te bepalen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuleren" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Locatie-instellingen" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-account instellen" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporteren als afbeelding" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "S_neltoetsen" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Over Kaarten" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kaarten is offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kaarten heeft een actieve internetverbinding nodig om te functioneren, maar " +"die is niet gevonden." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Controleer uw verbinding en proxy-instellingen." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Meld u aan om kaarten te bewerken" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help om de kaart te verbeteren, door gebruik te maken van een\n" +"OpenStreetMap-account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Wachtwoord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inloggen" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, dat werkte niet. Probeer het opnieuw of bezoek\n" +"OpenStreetMap om uw wachtwoord te herstellen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "De verificatiecode kwam niet overeen, probeer het opnieuw." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Voer de verificatiecode hierboven in" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiëren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingelogd" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Uw OpenStreetMap-account is actief." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Uitloggen" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straat" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Huisnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postcode" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Plaats" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Soort" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Geen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Wijzigingen aan de kaart zijn zichtbaar op alle kaarten\n" +"die OpenStreetMap-gegevens gebruiken." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recent gebruikt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Volgende" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Geen resultaten gevonden" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Er is een fout opgetreden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Verslepen om de volgorde van de route te wijzigen" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Locatie openen" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiëren" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Versturen naar…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Inchecken…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vormlaag openen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Openen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Zichtbaar/onzichtbaar maken" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routezoeken door GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routering voor openbaar vervoer wordt aangeboden door diensten van derde " +"partijen.\n" +"Gnome kan de juistheid van de hier weergegeven routes en dienstregelingen " +"niet garanderen.\n" +"Merk op dat sommige leveranciers mogelijk niet alle beschikbare " +"transportmodi weergeven,\n" +"bv. een nationale leverancier geeft mogelijk geen vliegroutes weer, en een " +"lokale leverancier\n" +"geeft mogelijk niet alle regionale treinen weer.\n" +"De hier weergegeven namen en merknamen worden, waar toepasbaar, beschouwd " +"als\n" +"geregistreerde handelsmerken." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Meer resultaten tonen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Tussenstops en informatie verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tussenstops en informatie tonen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Nu vertrekken" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Vertrekken tegen" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Aankomen tegen" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tonen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussen" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treinen" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Veerboten" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Vliegtuigen" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Locatie delen" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Aan nieuwe route toevoegen" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Routebeschrijving" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markeren als bladwijzer" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in om locatie toe te voegen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Inzoomen" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kon de tegelstructuur in de map niet vinden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kon XML-document niet ontleden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Benodigde eigenschappen ontbreken" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kon OSM-element niet vinden" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Een pad naar een mappenstructuur met lokale tegels" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tegelgrootte voor lokale tegelmap" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "De versie van het programma tonen" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Beschikbaarheid netwerk negeren" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[BESTAND…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Een account kiezen" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Bezig met laden" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Een plaats kiezen" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Foursquare niet vinden. Gelieve " +"er een uit de lijst te kiezen." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Inchecken bij %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Voeg eventueel een bericht toe bij het inchecken bij %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "‘%s’ werd niet aangetroffen in de sociale dienst" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Er is geen geschikte plaats gevonden om in te checken op deze locatie" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"De aanmeldgegevens zijn verlopen, gelieve Online-accounts te openen om u aan " +"te melden en dit account in te schakelen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Niets gevonden hier!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locatie is toegevoegd aan de kaart, het kan even duren voor deze op de kaart " +"en in zoekresultaten wordt weergegeven." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kaart op %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Bestandssysteem is alleen-lezen" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "U heeft geen toestemming om hier op te slaan" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "De map bestaat niet" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Geen bestandsnaam opgegeven" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kon weergave niet exporteren" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Huidige locatie" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ongeldig coördinaat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ontleedfout" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "onbekende afmetingen" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Routeaanvraag is mislukt." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Geen route gevonden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle laagbestanden" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Verbinden met locatiedienst is mislukt" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Erwin Poeze \n" +"Reinout van Schouwen \n" +"Hannie Dumoleyn \n" +"Nathan Follens \n" +"Justin van Steijn \n" +"\n" +"Meer info over Gnome-NL http://nl.gnome.org" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Een kaartentoepassing voor Gnome" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. en de auteurs van Gnome Kaarten" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kaartgegevens door %s en bijdragers" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kaarttegels geleverd door %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Zoekfunctionaliteit aangeboden door %s met %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Laag openen mislukt" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Wilt u doorgaan?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"U staat op het punt bestanden met een totale grootte van %s MB te openen. " +"Het kan even duren om deze in te laden" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Bestandstype wordt niet ondersteund" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI openen mislukt" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Onjuiste aanvraag" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Object niet gevonden" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, iemand anders heeft net het object gewijzigd" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Object is verwijderd" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Manier of relatie verwijst naar niet-bestaande dochter" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Naam" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "De officiële naam. Dit is wat normaal gezien op borden verschijnt." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Dit is geen geldige URL. Zorg dat het deel met http:// of https:// ook " +"toegevoegd wordt." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"De officiële website. Probeer de meest beperkte vorm van een URL te " +"gebruiken, i.e., https://voorbeeld.be in plaats van https://voorbeeld.be/" +"index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefoon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefoonnummer. Gebruik het internationale formaat, beginnend met een " +"plusteken (+). Wees bewust van lokale privacywetten, zeker wanneer het gaat " +"om privételefoonnummers." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mailadres" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Dit is geen geldig e-mailadres. Zorg dat het deel met mailto: toegevoegd " +"wordt." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Contact-e-mailadres voor vragen. Voeg enkel e-mailadressen toe die bedoeld " +"zijn voor publiek gebruik." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Het gebruikte formaat hoort de taalcode en de titel van het artikel te " +"bevatten, zoals ‘nl:Titel van artikel’." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Openingstijden" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Zie de koppeling in het label voor hulp bij het formaat." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populatie" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Hoogte" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "De hoogte boven de zeespiegel van een punt in meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Rolstoeltoegankelijk" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nee" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Beperkt toegankelijk" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Aangewezen" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internettoegang" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Bedraad" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Thuisbezorging" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Alleen" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Boeddisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Christendom" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindoeïsme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Jodendom" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Meerdere religies" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Heidendom" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaristisch Universalisme" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yezidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Mazdeïsme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Wc's" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Opmerking" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Deze informatie wordt gebruikt om andere ‘mappers’ te informeren over niet-" +"evidente informatie over een element, de bedoeling van de auteur bij het " +"aanmaken ervan, of tips voor verbetering." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Een type kiezen" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Klaar" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Naamloze plaats" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Kon GeoURI niet ontleden" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coördinaten" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Nauwkeurigheid" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Positienauwkeurigheid: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefoonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Biedt thuisbezorging aan" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Biedt geen thuisbezorging aan" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Biedt alleen thuisbezorging aan" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Openbare internettoegang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Geen internettoegang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Openbare wifi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Bekabelde internettoegang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computers beschikbaar voor gebruik" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internethulp beschikbaar" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Geen wc’s beschikbaar" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Wc’s beschikbaar" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Rolstoeltoegankelijk" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Beperkt rolstoeltoegankelijk" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Niet rolstoeltoegankelijk" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Geschikt voor rolstoelgebruikers" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s onder de zeespiegel" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Op zeeniveau" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religie:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Plaats niet gevonden op OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Coördinaten in URL zijn ongeldig" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL wordt niet ondersteund" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Van %s naar %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Bezig met laden van kaarttegels voor afdrukken" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "U kan het afdrukken afbreken indien het te lang duurt" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afdrukken afbreken" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "‘Via’ toevoegen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "‘Via’ verwijderen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route omkeren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s toevoegen aan %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI openen mislukt" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Openen met %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "bestand laden mislukt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschatte tijdsduur: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Routeberekening geleverd door %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Vertrek om %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Wandel %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kom aan tegen %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Kom aan" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wandelinstructies tonen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Wandelinstructies verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Vroegere alternatieven laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Latere alternatieven laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Geen vroegere alternatieven gevonden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Geen latere alternatieven gevonden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Geen gegevens betreffende dienstregeling gevonden voor deze route." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Geen leverancier gevonden voor deze route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuut" +msgstr[1] "%s minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s uur" +msgstr[1] "%s uur" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s uur" +msgstr[1] "%s:%s uur" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "De hele dag" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Van zonsopkomst tot zonsondergang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Dagelijks" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Officiële feestdagen" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Schoolvakanties" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "niet open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%su" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%su %sm" +msgstr[1] "%su %sm" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%sm" +msgstr[1] "%sm" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%ss" +msgstr[1] "%ss" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Deze plug-in biedt geen ondersteuning voor laatste aankomst" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Ga door op %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Ga door" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sla linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sla linksaf" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sla iets linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sla iets linksaf" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sla scherp linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sla scherp linksaf" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sla rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sla rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sla iets rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sla iets rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sla scherp rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sla scherp rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Neem op de rotonde afslag %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Neem op de rotonde de afslag naar %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Rijd de rotonde op" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Neem de lift en stap af op %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Neem de lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Draai 180 graden linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Draai 180 graden linksaf" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Draai 180 graden rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Draai 180 graden rechtsaf" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "U kunt zelfs naar specifieke soorten locaties zoeken, zoals ‘Pubs in de " +#~ "buurt van Main Street, Boston’ of ‘WiFi-toegang in de buurt van " +#~ "Alexanderplatz, Berlijn’." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook-inchecken privacyinstellingen" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Voor het laatst gebruikte privacyinstellingen Facebook-incheck. Mogelijke " +#~ "waarden zijn: IEDEREEN, VRIENDEN VAN VRIENDEN, ALLE VRIENDEN of ZICHZELF." + +#~ msgid "Everyone" +#~ msgstr "Iedereen" + +#~ msgid "Friends of friends" +#~ msgstr "Vrienden van vrienden" + +#~ msgid "Just friends" +#~ msgstr "Alleen vrienden" + +#~ msgid "Just me" +#~ msgstr "Alleen ik" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kaarten kan de plaats om in te checken met Facebook niet vinden. Gelieve " +#~ "er een uit de lijst te kiezen." + +#~ msgid "Find a Route" +#~ msgstr "Route zoeken" + +#~ msgid "Check in here" +#~ msgstr "Hier inchecken" + +#~ msgid "Show more information" +#~ msgstr "Meer informatie tonen" + +#~ msgid "Population:" +#~ msgstr "Populatie:" + +#~ msgid "Altitude:" +#~ msgstr "Hoogte:" + +#~ msgid "Opening hours:" +#~ msgstr "Openingstijden:" + +#~ msgid "Internet access:" +#~ msgstr "Internettoegang:" + +#~ msgid "Toilets:" +#~ msgstr "Wc's:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Rolstoeltoegankelijk:" + +#~ msgid "Phone:" +#~ msgstr "Telefoon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "beperkt toegankelijk" + +#~ msgid "no" +#~ msgstr "nee" + +#~ msgid "designated" +#~ msgstr "aangewezen" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL is ongeldig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "bedraad" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "dienst" + +#~ msgid "Don’t have an account?" +#~ msgstr "Heeft u geen account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routezoeken door OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Bestemming toevoegen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Openen met een andere toepassing" + +#~ msgid "Press enter to search" +#~ msgstr "Druk op enter om te zoeken" + +#~ msgid "Quit" +#~ msgstr "Afsluiten" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vormlaag openen…" + +#~ msgid "Load Map Layer" +#~ msgstr "Maplaag laden" + +#~ msgid "Open Layer" +#~ msgstr "Laag openen" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mijl" + +#~ msgid "%f ft" +#~ msgstr "%f voet" + +#~ msgid "Position not found" +#~ msgstr "Positie niet gevonden" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 00000000..1fa41d09 --- /dev/null +++ b/po/oc.po @@ -0,0 +1,2037 @@ +# Occitan Translation of GNOME Maps. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Cédric Valmary (Tot en Òc) , 2015. +# Cédric Valmary (Tot en òc) , 2015. +# Cédric Valmary (totenoc.eu) , 2016, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-20 09:01+0000\n" +"PO-Revision-Date: 2021-06-12 23:16+0200\n" +"Last-Translator: Cédric Valmary (totenoc.eu) \n" +"Language-Team: Tot En Òc\n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recèrca d'emplaçaments a l'entorn del monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L'aplicacion Mapas vos dona un accès rapid a de mapas del monde entièr. " +"Permet de trobar rapidament un emplaçament en recercant per vila o per " +"carrièra, o de situar un endreit de recontre amb un amic." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Las mapas utilizan la basa de donadas collaborativa OpenStreetMap, a la " +"quala contribuisson de centenats de milierats de personas dins lo monde " +"entièr." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Podètz quitament cercar de luòcs especifics, coma « Restaurants al costat de " +"la Catedrala d'Estrasborg » o « Ostalariás al costat d'Alexanderplatz a " +"Berlin »." + +#: data/org.gnome.Maps.appdata.xml.in:197 +msgid "The GNOME Project" +msgstr "Lo projècte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicacion cartografica simpla" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d'afichar vòstre emplaçament sus la mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "darrièr emplaçament vist" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas del darrièr emplaçament afichat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivèl de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipe de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Talha de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Talha de la fenèstra (nautor e largor)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posicion de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posicion de la fenèstra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenèstra agrandida" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat d'agrandiment de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de resultats de recèrca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de resultats d'una recèrca per geocòdi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" +"Paramètres de confidencialitat d'anonci de la localizacion sus Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion sus Facebook. Las valors possiblas son : EVERYONE (tot lo " +"monde), FRIENDS_OF_FRIENDS (amics dels amics), ALL_FRIENDS (totes los amics) " +"o SELF (siá)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidencialitat d'anonci de la localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion Foursquare. Las valors possiblas son : public (publicas), " +"followers (personas que me seguisson) o private (privat)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusion sus Facebook dels anoncis de localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Facebook associat al compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusion sus Twitter dels anoncis de localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Twitter associat al compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'utilizaire o adreça electronica OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utilizaire s'es identificat per modificar de donadas " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Tipe de transpòrt utilizat al moment del darrièr itinerari" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Mòde nuèch" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Publicar sus Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Publicar sus Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anullar" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "A_nonciar sa localizacion" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Tot lo monde" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amics dels amics" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Sonque los amics" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Sonque ieu" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Personas que me seguisson" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinerari dempuèi aicí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Apondre una destinacion intermediària" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinerari fins a aqueste punt" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "De qué i a aicí ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar l'emplaçament" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportacion de l'afichatge" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inclure l'itinerari e los marcadors" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Causir lo tipe de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom arrièr" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Bascular los favorits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Imprimir l'itinerari" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afichar los acorchis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Recercar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir l'itinerari" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afichar la mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bascular los favorits" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passar en vista cartografica" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passar en vista aeriana" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Dobrir un jaç de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afichar los labèls" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Dobrir un jaç de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicis de localizacion per trobar vòstra posicion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anullar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localizacion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mòde nuèch" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar coma imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Acorchis de clavièr" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A prepaus de Maps" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas es fòra linha !" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas a besonh d’una connexion Internet activa e foncionala, mas n'a pas " +"trobat cap." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificatz vòstra connexion e vòstres paramètres de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S'identificar per modificar de mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudar al melhorament de las mapas amb\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adreça de corrièr electronic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senhal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscriure" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Connexion" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"O planhèm, aquò a pas foncionat. Reensajatz o visitatz\n" +"OpenStreetMap per reïnicializar vòstre senhal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Lo còdi de verificacion correspond pas, ensajatz encara un còp." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sasissètz lo còdi de verificacion afichat çaisús" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sètz inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vòstre compte OpenStreetMap es actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Desconnexion" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrièra" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numèro d'ostal" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Còdi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Vila" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipe" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Pas cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Apondre un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Las modificacions de la mapa seràn visiblas sus totas\n" +"las mapas qu'utilizan de donadas OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Darrièrament utilizat" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Seguent" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Cap de resultat pas trobat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Una error s'es produita" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Fasètz lisar per modificar l'òrdre de l'itinerari" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Dobrir l'emplaçament" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +#, fuzzy +#| msgid "C_heck in" +msgid "Check In…" +msgstr "A_nonciar sa localizacion" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Dobrir un jaç de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Dobrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inversar la visibilitat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recèrca d'itinerari amb GraphHopper" + +#: data/ui/sidebar.ui:364 +#, fuzzy +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itineraris per transpòrt public prepausats per GNOME utilizan\n" +"de tablèus oraris obtenguts de las companhias de transpòrt.\n" +"Aquelas companhias pòdon pas èsser tengudas responsablas dels resultats " +"afichats.\n" +"GNOME pòt pas garantir l’exactitud dels itineraris e oraris presentats.\n" +"Los noms e marcas afichats devon èsser considerats coma de marcas " +"depausadas, se fa mestièr." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Far veire mai de resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Amagar los arrèsts e informacions intermediàrias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afichar los arrèsts e informacions intermediàrias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Despart" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afichar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Mètros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Vaissèls" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partejar l'emplaçament" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Apondre a un novèl itinerari" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direccions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar coma favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomatz per apondre un emplaçament !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trobar una estructura de teulas dins lo repertòri" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Fracàs d'analisi d'un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributs obligatòris mancants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trobar l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: src/application.js:114 +#, fuzzy +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Afichar la version del logicial" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignòra la disponibilité de la ret" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHIÈR|URI...]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Seleccionar un compte" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Cargament" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Seleccionar un luòc" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Facebook. " +"Seleccionatz-ne un dins aquesta lista." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Foursquare. " +"Seleccionatz-ne un dins aquesta lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Anonciar sa localizacion a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriure un messatge opcional per vòstre anonci de localizacion a %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trobar « %s » sus la ret sociala" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trobar un endreit correspondent per anonciar sa localizacion" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las informacions d'autenficacion an expirat, dobrissètz Comptes en linha per " +"vos connectar e activar aqueste compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Res es pas estat trobat a aqueste endreit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L'emplaçament es estat apondut a la mapa, notatz qu'aquò pòt prene un moment " +"abans qu'aparesca sus la mapa e dins los resultats de recèrca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas situadas a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Lo sistèma de fichièrs es en lectura sola" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Avètz pas la permission d'enregistrar a aqueste endreit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Lo dorsièr existís pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Cap de nom de fichièr pas indicat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d'exportar l'afichatge" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Luòc actual" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordenada pas valabla" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "error d'analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Fracàs de la recèrca d'itinerari." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Cap d'itinerari pas trobat." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Es partit !" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Totes los fichièrs de jaces" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Fracàs a la connexion al servici de localizacion" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Cédric Valmary (totenoc.eu) " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una aplicacion cartografica per GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e los autors de Mapas de GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Donadas cartograficas de %s e contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Fracàs de dobertura del jaç" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Volètz contunhar ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Lo tipe de fichièr es pas pris en charge" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Fracàs de dobertura de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nom d'utilizaire o senhal incorrècte" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Marrida requèsta" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objècte pas trobat" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, qualqu'un mai ven de modificar l'objècte" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'objècte es estat suprimit" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lo camin o la relacion se referís a d'enfants qu'existisson pas" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Lo nom oficial. Es en general çò qu'es escrit sus l'ensenha." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Site internet" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Lo site officiel. Ensajatz d'utilizar la forma la plus simple per l'URL, es " +"a dire http://example.com al luòc de http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefòn" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numèro de telefòn. Utilizatz lo format internacional, en començant per un " +"signe +. Atencion a las leis localas sus la vida privada, sustot pels " +"numéros de telefòn dels particulars." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipèdia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Lo format utilizat deuriá comprene lo còdi lenga e lo títol de l’article, " +"coma « oc:Títol de l’article »." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Oras de dobertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Veire lo ligam dins l'etiqueta per de l'ajuda sul format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Populacion" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevacion (nautor en dessús del nivèl de la mar) d'un punt en mètres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accès als fautuèlhs rotlants" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Òc " + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Reservat" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accès internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Fialar" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servici" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Baaïsme" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Bodisme" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Indoïsme" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Mantuna religion" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodó" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Iezidisme" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Comuns" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nòta" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacions utilizadas per informar d’autres cartografes sus las " +"informacions non evidentas sus un element, l’intencion de l’autor al moment " +"de sa creacion, o de las indicacions per de possibles melhoraments." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleccionar un tipe" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fait" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Luòc sens nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Fracàs a l'analisi de la Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precision" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de la posicion : %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numèro de telefòn" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accès internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Cap d'accès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accès internet per cable" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accès als fautuèlhs rotlants" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accès als fautuèlhs rotlants limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Cap d'accès als fautuèlhs rotlants" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion :" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Luòc pas trobat dins OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L'URL donat es pas pres en carga" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargament de las teulas de mapa per l'impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podètz interrompre l'impression se cela pren tròp de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l'impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Apondre un emplaçament intermediari" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimir l’emplaçament intermediari" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Camin invèrse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, fuzzy, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "De %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Fracàs de dobertura de l'URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Dobrir amb %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impossible de cargar lo fichièr" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat : %s" + +#: src/sidebar.js:415 +#, fuzzy, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Despart de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Despart" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribada a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arribada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Afichar las instruccions de caminada a pè" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Amagar las instruccions de caminada a pè" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar las alternativas precedentas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar las alternativas seguentas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Cap d'alternativa precedenta pas trobada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Cap d'alternativa seguenta pas trobada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#: src/transitPlan.js:185 +#, fuzzy +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minutas" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s oras" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s oras" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24h/24" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "del sortir al colcar del solelh" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +#, fuzzy +#| msgid "every day" +msgid "Every day" +msgstr "cada jorn" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:177 +#, fuzzy +#| msgid "public holidays" +msgid "Public holidays" +msgstr "comjats" + +#: src/translations.js:179 +#, fuzzy +#| msgid "school holidays" +msgid "School holidays" +msgstr "comjats escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "tampat" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s pès" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Contunhar" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "" + +#~ msgid "Quit" +#~ msgstr "Quitar" + +#~ msgid "Open with another application" +#~ msgstr "Dobrir amb una autra aplicacion" + +#~ msgid "Check in here" +#~ msgstr "Anonciar aqueste emplaçament coma localizacion" + +#~| msgid "Don't have an account?" +#~ msgid "Don’t have an account?" +#~ msgstr "Avètz pas de compte ?" + +#~ msgid "Show more information" +#~ msgstr "Far veire mai d'informacion" + +#~ msgid "Press enter to search" +#~ msgstr "Quichatz sus entrada per recercar" + +#~| msgid "Route search by GraphHopper" +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Recèrca d’itinerari amb OpenTripPlanner" + +#~ msgid "OK" +#~ msgstr "Validar" + +#~ msgid "Add destination" +#~ msgstr "Apondre una destinacion" + +#~ msgid "Population:" +#~ msgstr "Populacion :" + +#~ msgid "Altitude:" +#~ msgstr "Altitud :" + +#~ msgid "Opening hours:" +#~ msgstr "Oras de dobertura :" + +#~ msgid "Internet access:" +#~ msgstr "Accès internet :" + +#~ msgid "Toilets:" +#~ msgstr "Comuns :" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accès als fautuèlhs rotlants :" + +#~ msgid "Phone:" +#~ msgstr "Telefòn :" + +#~ msgid "yes" +#~ msgstr "òc" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "reservat" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "filar" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servici" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar lo jaç cartografic" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posicion pas trobada" + +#~ msgid "Country code: %s" +#~ msgstr "Còdi del país : %s" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Dobrir un jaç de formas…" + +#~ msgid "Open Layer" +#~ msgstr "Dobrir la couche" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 00000000..2c1a2a20 --- /dev/null +++ b/po/pa.po @@ -0,0 +1,2032 @@ +# Punjabi translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# A S Alam , 2013, 2014, 2015, 2016, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-14 20:40+0000\n" +"PO-Revision-Date: 2021-02-14 12:44-0800\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.1\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ਗਨੋਮ ਨਕਸ਼ੇ" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ਸੰਸਾਰ ਭਰ ਵਿੱਚ ਥਾਵਾਂ ਨੂੰ ਲੱਭੋ" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਤੁਹਾਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ ਨਕਸ਼ੇ ਉਪਲੱਬਧ ਕਰਵਾਉਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਤੁਰੰਤ" +" ਸ਼ਹਿਰ ਜਾਂ ਸੜਕਾਂ ਦੇ ਨਾਂ " +"ਰਾਹੀਂ ਥਾਂ ਲੱਭਣ ਲਈ ਜਾਂ ਮਿੱਤਰ ਨੂੰ ਮਿਲਣ ਲਈ ਥਾਂ ਪੱਕਾ ਕਰਨ ਲਈ ਮੱਦਦ ਕਰਦੀ ਹੈ।" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਸਾਂਝਾ OpenStreetMap ਡਾਟਾਬੇਸ ਵਰਤਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ" +" ਲੱਖਾਂ-ਕਰੋੜਾਂ ਲੋਕਾਂ " +"ਵਲੋਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ਤੁਸੀਂ ਟਿਕਾਣਿਆਂ ਦੀ ਖਾਸ ਕਿਸਮ ਲਈ ਵੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ \"ਮੇਨ ਸਟਰੀਟ, ਬੋਸਟਨ" +" ਨੇੜੇ ਪੱਬ\" " +"ਜਾਂ \"ਅਲੈਗਜੈਂਡਰਪਲੇਟਜ਼, ਬਰਲਿਨ ਨੇੜੇ ਹੋਟਲ\"।" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "ਨਕਸ਼ਾ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ਸੌਖੀ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "ਨਕਸ਼ਾ;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਦਿਖਾਉਣ ਲਈ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ਪਿਛਲਾ ਵੇਖਿਆ ਟਿਕਾਣਾ" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ਪਿਛਲੇ ਵੇਖੇ ਗਏ ਟਿਕਾਣੇ ਦੇ ਧੁਰੇ।" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ਜ਼ੂਮ" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "ਜ਼ੂਮ ਪੱਧਰ" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "ਵਿਖਾਉਣ ਲਈ ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ (ਸੜਕ, ਹਵਾਈ ਆਦਿ)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "ਵਿੰਡੋ ਆਕਾਰ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (X ਅਤੇ Y)।" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "ਜੀਓਕੋਡ ਖੋਜ ਤੋਂ ਵੱਧ ਤੋਂ ਵੱਧ ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਟਿਕਾਣਿਆਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਸਥਾਨਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਹਰੇਕ," +" ਦੋਸਤਾਂ_ਦੇ_ਦੋਸਤ, ਸਭ_ਦੋਸਤ, ਜਾਂ " +"ਖੁਦ" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "ਫੋਰਸਿਕਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਪਬਲਿਕ, ਫ਼ੋਲਅਰ ਜਾਂ" +" ਪ੍ਰਾਈਵੇਟ।" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਫੇਸਬੁੱਕ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ" +" ਫੇਸਬੁੱਕ ਖਾਤੇ ਵਿੱਚ ਪੋਸਟ ਵਜੋਂ " +"ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਟਵਿੱਟਰ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਟਵਿੱਟਰ" +" ਖਾਤੇ ਵਿੱਚ ਟਵਿੱਟ " +"ਵਜੋਂ ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਈਮੇਲ ਪਤਾ" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਵਰਤੋਂਕਾਰ ਨੇ OpenStreetMap ਡਾਟੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਈਨ ਇਨ ਕੀਤਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "ਰੂਟ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਪਿਛਲੀ ਟਰਾਂਸਪੋਰਟ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:86 +#| msgid "Night Mode" +msgid "Night mode" +msgstr "ਗੂੜ੍ਹਾ ਢੰਗ" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਰਾਤ ਵਾਲੇ ਢੰਗ ਵਿੱਚ ਵਰਤਣਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "ਹਾਈਬਰਿੱਡ ਹਵਾਈ ਟਾਈਲਾਂ ਵਰਤੋਂ" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "ਕੀ ਹਵਾਈ ਟਾਈਲਾਂ ਨੂੰ ਹਾਈਬਰਿੱਡ ਸਟਾਈਲ (ਲੇਬਲਾਂ ਨਾਲ) ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ।" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ਵੇਖਣਯੋਗਤਾ" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ਫੇਸਬੁੱਕ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "ਟਵਿੱਟਰ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "ਚੈਕ ਇਨ(_h)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "ਹਰੇਕ" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "ਦੋਸਤਾਂ ਦੇ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "ਕੇਵਲ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ਕੇਵਲ ਮੈਂ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "ਪਬਲਿਕ" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "ਫ਼ੌਲਅਰ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "ਇੱਥੇ ਤੋਂ ਰੂਟ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "ਵਿਚਕਾਰਲੀ ਮੰਜ਼ਲ ਜੋੜੋ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "ਇੱਥੇ ਤੱਕ ਰੂਟ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "ਇੱਥੇ ਕੀ ਹੈ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਕਾਪੀ ਕਰੋ" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "ਐਕਸਪੋਰਟ(_I)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "ਰੂਟਾਂ ਅਤੇ ਚਿੰਨ੍ਹਾਂ ਸਮੇਤ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "ਨਕਸ਼ਾ ਕਿਸਮ ਚੁਣੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "ਪਸੰਦਾਂ ਨੂੰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "ਆਮ" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਵੇਖੋ" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "ਖੋਜੋ" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "ਬਾਹਰ" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "ਮੁੱਖ ਮੀਨੂ ਖੋਲ੍ਹੋ" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "ਨਕਸ਼ੇ ਦੀ ਝਲਕ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "ਸਕੇਲ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "ਸੜਕੀ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "ਹਵਾਈ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "ਲੇਬਲ ਵੇਖਾਓ" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "ਆਪਣੇ ਟਿਕਾਣੇ ਨੂੰ ਲੱਭਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "ਗੂੜ੍ਹਾ ਢੰਗ" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤੇ ਨੂੰ ਸੈਟਅੱਪ ਕਰੋ" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "ਚਿੱਤਰ ਵਜੋਂ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "ਨਕਸ਼ੇ ਬਾਰੇ" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "ਮੁੱਖ ਮੀਨੂ ਖੋਲ੍ਹੋ" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "ਨਕਸ਼ੇ ਆਫਲਾਈਨ ਹਨ!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਸਰਗਰਮ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਇਹ ਮਿਲਿਆ" +" ਨਹੀਂ।" + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਤੇ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਦੀ ਜਾਂਚ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤਾ" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap ਖਾਤੇ ਨਾਲ ਨਕਸ਼ੇ ਨੂੰ\n" +" ਸੁਧਾਰਨ ਲਈ ਮਦਦ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ਈਮੇਲ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ਪਾਸਵਰਡ" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ਸਾਇਨ ਅੱਪ" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ਸਾਇਨ ਇਨ" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"ਅਫਸੋਸ, ਇਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਬਾਅਦ 'ਚ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਮੁੜ-ਸੈੱਟ" +" ਕਰਨ ਲਈ \n" +"OpenStreetMap ਨੂੰ ਖੋਲ੍ਹੋ।" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "ਤਸਦੀਕ ਕਰਨ ਵਾਲਾ ਕੋਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਤਸਦੀਕੀ ਕੋਡ ਦਿਓ" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "ਤਸਦੀਕ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "ਤੁਹਾਡਾ OpenStreetMap ਖਾਤਾ ਹੁਣ ਸਰਗਰਮ ਹੈ।" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "ਸਾਇਨ ਆਉਟ" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "ਗਲੀ" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "ਘਰ ਨੰਬਰ" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "ਡਾਕ ਕੋਡ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "ਸ਼ਹਿਰ" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "ਕਿਸਮ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ਖੇਤਰ ਨੂੰ ਜੋੜੋ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "ਟਿੱਪਣੀ" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ਨਕਸ਼ੇ ਸੰਬੰਧੀ ਤਬਦੀਲੀਆਂ ਸਾਰੇ ਨਕਸ਼ਿਆਂ ਉੱਤੇ ਦਿਖਾਈ ਦੇਣਗੀਆਂ, ਜੋ ਕਿ\n" +"OpenStreetMap ਡਾਟੇ ਨੂੰ ਵਰਤਦੇ ਹਨ।" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "ਤਾਜ਼ਾ ਵਰਤੇ ਗਏ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "ਅੱਗੇ" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "ਗਲਤੀ ਆਈ" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "ਰੂਟ ਦਾ ਕ੍ਰਮ ਬਦਲਣ ਲਈ ਖਿੱਚੋ" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਖੋਲ੍ਹੋ" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "…ਨੂੰ ਭੇਜੋ" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "ਚੈਕ ਇਨ…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "ਖੋਲ੍ਹੋ(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "ਦਿੱਖ ਨੂੰ ਬਦਲੋ" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ਗਰਾਫਹੋਪਰ ਵਲੋਂ ਰੂਟ ਖੋਜ" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"ਪਬਲਿਕ ਆਵਾਜਾਈ ਲਈ ਰੂਟ ਸਫ਼ਰਨਾਮੇ ਸੁਤੰਤਰ ਧਿਰਾਂ ਵਲੋਂ ਦਿੱਤੀਆਂ ਜਾ ਰਹੀਆਂ\n" +"ਹਨ।\n" +"ਗਨੋਮ ਇਹਨਾਂ ਸਫ਼ਰਨਾਮਿਆਂ ਤੇ ਵੇਖੀਆਂ ਸਮਾਂ ਸਾਰਣੀਆਂ ਦੇ ਦਰੁਸਤ ਹੋਣ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ" +" ਸਕਦਾ ਹੈ।\n" +"ਯਾਦ ਰੱਖੋ ਕਿ ਕੁਝ ਪੂਰਕ ਕੋਲ ਆਵਾਜਾਈ ਦੇ ਸਾਰੇ ਮੌਜੂਦ ਢੰਗ ਨਹੀਂ ਦੇ ਸਕਦੇ ਹਨ।\n" +"ਜਿਵੇਂ ਕਿ ਕੌਮੀ ਪੂਰਕਾਂ ਵਿੱਚ ਹਵਾਈ ਜਹਾਜ਼ ਮੌਜੂਦ ਨਹੀਂ ਹੋ ਸਕਦੇ ਅਤੇ ਲੋਕਲ ਪੂਰਕਾਂ\n" +"ਕੋਲ ਖੇਤਰੀ ਰੇਲ ਗੱਡੀਆਂ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ।\n" +"ਵੇਖਾਏ ਗਏ ਨਾਂ ਅਤੇ ਮਾਰਕਿਆਂ ਨੂੰ ਜਿੱਥੇ ਵੀ ਲਾਗੂ ਹੋਵੇ ਰਜਿਸਟਰ ਹੋਏ ਟਰੇਡ-ਮਾਰਕ ਮੰਨਿਆ" +" ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "ਹੋਰ ਨਤੀਜੇ ਵੇਖੋ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਲੁਕਾਓ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ਹੁਣੇ ਚੱਲੋ" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "ਤੱਕ ਚੱਲੋ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "ਤੱਕ ਪਹੁੰਚ" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "ਸ਼ੋਅ" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ਬੱਸਾਂ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ਟਰਾਮਾਂ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ਟਰੇਨਾਂ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "ਸਬ-ਵੇਅ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ਫੈਰੀ" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "ਹਵਾਈ-ਜਹਾਜ਼" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰੋ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "ਨਵੇਂ ਰੂਟ ਵਿੱਚ ਜੋੜੋ" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "ਦਿਸ਼ਾਵਾਂ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "ਪਸੰਦ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਗਾਓ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਜੋੜਨ ਲਈ ਜ਼ੂਮ ਇਨ ਕਰੋ!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਟਾਈਲ ਢਾਂਚੇ ਨੂੰ ਲੱਭਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML ਡੌਕੂਮੈਂਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ਲੋੜੀਂਦੇ ਗੁਣ ਗੁੰਮ ਹਨ" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ਐਲੀਮੈਂਟ ਨੂੰ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "ਲੋਕਲ ਟਾਈਲ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚੇ ਲਈ ਮਾਰਗ" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "ਲੋਕਲ ਟਾਈਟਲ ਡਾਇਰੈਕਟਰੀ ਲਈ ਟਾਈਲ ਆਕਾਰ" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜ਼ਨ ਵੇਖੋ" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "ਨੈੱਟਵਰਕ ਉਪਲਬਟਾ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ਖਾਤੇ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ਸਥਾਨ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੇਸਬੁੱਕ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੋਰਸਕਿਉਰ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ਲਈ ਚੈਕ ਇਨ" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ਵਿੱਚ ਚੈਕ ਇਨ ਕਰਨ ਲਈ ਚੋਣਵਾਂ ਸੁਨੇਹਾ ਲਿਖੋ।" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "ਸਮਾਜਿਕ ਸੇਵਾ ਵਿੱਚ “%s“ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "ਇਹ ਟਿਕਾਣੇ ਵਿੱਚ ਚੈਕ-ਇਨ ਕਰਨ ਲਈ ਢੁੱਕਵਾਂ ਸਥਾਨ ਲੱਭਿਆ ਨੀਹਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"ਸਨਦ ਦੀ ਮਿਆਦ ਪੁੱਗੀ, ਕਿਰਪਾ ਕਰਕੇ ਸਾਇਨ ਇਨ ਕਰਨ ਤੇ ਇਹ ਖਾਤੇ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਆਨਲਾਈਨ" +" ਖਾਤਿਆਂ ਨੂੰ " +"ਖੋਲ੍ਹੋ।" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "ਕੁਝ ਵੀ ਨਹੀਂ ਲੱਭਿਆ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਜੋੜਿਆ ਗਿਆ, ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਅਤੇ ਖੋਜ ਨਤੀਜਿਆਂ" +" ਵਿੱਚ ਆਉਣ ਲਈ ਕੁਝ " +"ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "ਨਕਸ਼ਾ %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "ਫਾਇਲ-ਸਿਸਟਮ ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ ਹੈ" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "ਤੁਹਾਡੇ ਕੋਲ ਉੱਥੇ ਸੰਭਾਲਣ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ਡਾਇਰੈਕਟਰੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ਕੋਈ ਫਾਇਲ-ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣਾ" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ਗਲਤ ਧੁਰੇ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ਪਾਰਸ ਕਰਨ ਦੀ ਗਲਤੀ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ਅਣਜਾਣ ਜੁਮੈਟਰੀ" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "ਰੂਟ ਬੇਨਤੀ ਫੇਲ੍ਹ ਹੋਈ।" + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "ਕੋਈ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "ਸ਼ੁਰੂ!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "ਸਾਰੀਆਂ ਪਰਤਾਂ ਫਾਈਲਾਂ" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "ਟਿਕਾਣਾ ਸੇਵਾ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" +"ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "ਗਨੋਮ ਲਈ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "ਕਾਪੀਰਾਈਟ © 2011 – 2021 Red Hat, Inc. ਅਤੇ ਗਨੋਮ ਨਕਸ਼ਾ ਡਿਵੈਲਪਰ" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "ਨਕਸ਼ੇ ਦਾ ਡਾਟਾ %s ਅਤੇ ਯੋਗਦਾਨੀਆਂ ਵਲੋਂ" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "ਨਕਸ਼ੇ ਲਈ ਨਾਂ %s ਵਲੋਂ ਦਿੱਤੇ" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "ਖੋਜ %s ਰਾਹੀਂ %s ਵਰਤ ਕੇ ਦਿੱਤੀ ਗਈ ਹੈ" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "ਪਰਤ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"ਤੁਸੀਂ %s MB ਆਕਾਰ ਦੀਆਂ ਫਾਇਲਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਵਾਲੇ ਹੋ। ਇਹਨਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਕੁਝ" +" ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "ਫਾਇਲ ਦੀ ਕਿਸਮ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "ਗਲਤ ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "ਕਾਮਯਾਬ" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "ਗਲਤ ਬੇਨਤੀ" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "ਆਬਜੈਕਟ ਨਹੀਂ ਲੱਭਿਆ" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "ਟਕਰਾ, ਕਿਸੇ ਨੇ ਹੁਣੇ ਹੀ ਆਬਜੈਕਟ ਨੂੰ ਸੋਧਿਆ ਹੈ" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "ਆਬਜੈਕਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "ਨਾ-ਮੌਜੂਦ ਬੱਚਿਆਂ ਲਈ ਢੰਗ ਜਾਂ ਸੰਬੰਧ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "ਅਧਿਕਾਰਿਤ ਨਾਂ। ਇਹ ਅਕਸਰ ਪ੍ਰਤੀਕਾਂ ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।" + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "ਪਤਾ" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "ਵੈੱਬਸਾਈਟ" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "ਇਹ ਵਾਜਬ URL ਨਹੀਂ ਹੈ। http:// ਜਾਂ https:// ਨੂੰ ਜੋੜਨਾ ਯਕੀਨੀ ਬਣਾਓ।" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"ਅਧਿਕਾਰਿਤ ਵੈੱਬਸਾਈਟ ਹੈ। URL ਦੇ ਸਭ ਤੋਂ ਮੁੱਢਲੇ ਰੂਪ ਨੂੰ ਵਰਤ ਕੇ ਵੇਖੋ ਜਿਵੇਂ" +" http://example.com/index." +"html ਦੀ ਬਜਾਏ http://example.com" + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "ਫ਼ੋਨ" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"ਫ਼ੋਨ ਨੰਬਰ। ਕੌਮਾਂਤਰੀ ਫਾਰਮੈਟ ਵਰਤੋਂ, ਜੋ ਕਿ + ਚਿੰਨ੍ਹ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਲੋਕਲ" +" ਪਰਦੇਦਾਰੀ ਕਨੂੰਨਾਂ ਬਾਰੇ " +"ਖਿਆਲ ਰੱਖੋ, ਖਾਸ ਕਰਕੇ ਪ੍ਰਾਈਵੇਟ ਫ਼ੋਨ ਨੰਬਰਾਂ ਬਾਰੇ।" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "ਵਿਕਿਪੀਡਿਆ" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"ਵਰਤੇ ਫਾਰਮੈਟ ਵਿੱਚ ਭਾਸ਼ਾ ਕੋਡ ਤੇ ਲੇਖ ਸਿਰਲੇਖ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਵੇਂ ਕਿ “en:Article" +" title”।" + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "ਫਾਰਮ ਉੱਤੇ ਮਦਦ ਲਈ ਲੇਬਲ ਵਿੱਚ ਲਿੰਕ ਵੇਖੋ।" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "ਆਬਾਦੀ" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "ਉਚਾਈ" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ਸਮੁੰਦਰੀ ਤਲ ਤੋਂ ਉੱਤੇ ਉਚਾਈ ਦਾ ਬਿੰਦੂ ਮੀਟਰਾਂ ਵਿੱਚ ਹੈ।" + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "ਸੀਮਿਤ" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "ਨਿਯਤ ਕੀਤਾ" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "ਟਰਮੀਨਲ" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "ਸੇਵਾ" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "ਧਰਮ" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "ਅਨੀਮੀਸਮ" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "ਬਾਹਾਈ" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "ਬੁੱਧ" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "ਕਾਓ ਦਾਈ" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "ਇਸਾਈ" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "ਕਨਫਿਊਸ਼ੀਵਾਦ" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "ਹਿੰਦੂ" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "ਜੈਨ" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "ਯਹੂਦੀ" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "ਇਸਲਾਮ" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "ਕਈ ਧਰਮ" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "ਪਾਗਾਨੀਸਮ" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "ਪਾਸਟਾਫਾਰਿਨੇਮ" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "ਸਾਇੰਸਟੋਲੋਜੀ" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "ਸ਼ਿਨਟੋ" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "ਸਿੱਖੀ" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "ਅਧਿਆਤਮਵਾਦ" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "ਤਾਓਵਾਦ" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "ਯੂਨਿਟਾਰਿਅਨ ਯੂਨੀਵਰਸਲਿਮ" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "ਵੂਡੂ" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "ਯਾਜ਼ਿਡੀਸਮ" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "ਪਾਰਸੀ" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "ਗੁਸਲਖਾਨੇ" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "ਨੋਟ" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"ਜਾਣਕਾਰੀ ਹੋਰ ਨਕਸ਼ੇ ਵਾਲਿਆਂ ਨੂੰ ਭਾਗਾਂ, ਲੇਖਕ ਦੇ ਮੌਕੇ ਜਦੋਂ ਇਹ ਬਣਾਈ ਸੀ ਜਾਂ ਹੋਰ" +" ਸੁਧਾਰ ਬਾਰੇ ਇਸ਼ਾਰਿਆਂ " +"ਬਾਰੇ ਅਸਪਸ਼ਟ ਜਾਣਕਾਰੀ ਦੇਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ।" + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "ਕਿਸਮ ਨੂੰ ਚੁਣੋ" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "ਮੁਕੰਮਲ" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "ਬੇਨਾਮ ਥਾਂ" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "ਜੀਓ URI ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "ਧੁਰੇ" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "ਦਰੁਸਤੀ" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "ਦਰੁਸਤੀ: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "ਫ਼ੋਨ ਨੰਬਰ" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "ਪਬਲਿਕ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "ਪਬਲਿਕ Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "ਤਾਰਾ ਰਾਹੀ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "ਵਰਤਣ ਲਈ ਕੰਪਿਊਟਰ ਉਪਲੱਬਧ ਹਨ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "ਇੰਟਰਨੈੱਟ ਸਹਾਇਕ ਉਪਲੱਬਧ ਹੈ" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "ਗੁਸਲਖ਼ਾਨੇ ਨਹੀਂ ਹਨ" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "ਗੁਸਲਖ਼ਾਨੇ ਮੌਜੂਦ ਹਨ" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚ ਸੀਮਿਤ ਹੈ" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚ ਨਹੀਂ ਹੈ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "ਵੀਲ੍ਹ-ਚੇਅਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਨਿਯਤ ਹੈ" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "ਧਰਮ:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਥਾਂ ਨਹੀਂ ਲੱਭੀ" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URL ਵਿੱਚ ਦਿੱਤੇ ਧੁਰੇ ਵਾਜਬ ਨਹੀਂ ਹਨ" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s ਤੋਂ %s ਤੱਕ" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਲਈ ਨਕਸ਼ਿਆਂ ਦੇ ਨਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "ਜੇ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲੰਮਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ ਤਾਂ ਤੁਸੀਂ ਪਰਿੰਟ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹੋ" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਨੂੰ ਵਿਚੇ ਛੱਡੋ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਜੋੜੋ" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਹਟਾਓ" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "ਉਲਟ ਰਾਹ" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s ਤੋਂ %s ਜੋੜੋ" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URL ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "ਅੰਦਾਜ਼ਨ ਸਮਾਂ: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s ਵਲੋਂ ਸਫ਼ਰਨਾਮਾ ਦਿੱਤਾ" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s ਵਜੇ ਸ਼ੁਰੂ ਕਰੋ" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "ਸ਼ੁਰੂ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s ਤੁਰੋ" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s ਵਜੇ ਪਹੁੰਚੋ" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "ਪਹੁੰਚ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਦਿਖਾਓ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਲੁਕਾਓ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "ਸਵਖਤੇ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "ਬਾਦ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "ਕੋਈ ਸਵਖਤੇ ਦਾ ਬਦਲ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "ਕੋਈ ਬਦਲਵਾਂ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਸਮਾਂ-ਸਾਰਣੀ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਪੂਰਕ ਨਹੀਂ ਲੱਭਿਆ।" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s ਮਿੰਟ" +msgstr[1] "%s ਮਿੰਟ" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ਘੰਟਾ" +msgstr[1] "%s ਘੰਟੇ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ਘੰਟਾ" +msgstr[1] "%s:%s ਘੰਟੇ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "ਚੌਵੀਂ ਘੰਟੇ" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "ਸੂਰਜ ਚੜ੍ਹਨ ਤੋਂ ਸੂਰਜ ਡੁੱਬਣ ਤੱਕ" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "ਹਰ ਰੋਜ਼" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "ਪਬਲਿਕ ਛੁੱਟੀਆਂ" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "ਸਕੂਲੀ ਛੁੱਟੀਆਂ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ਖੁੱਲ੍ਹਾ ਨਹੀਂ" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "ਠੀਕ-ਠੀਕ" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ਘੰ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ਘੰ %s ਮਿੰਟ" +msgstr[1] "%s ਘੰ %s ਮਿੰਟ" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s ਮਿੰਟ" +msgstr[1] "%s ਮਿੰਟ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s ਕਿਮੀ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s ਮੀ" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s ਮੀਲ" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ਫੁੱਟ" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "ਇਹ ਪਲੱਗਇਨ ਨਵੀਂ ਪਹੁੰਚ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s ਉੱਤੇ ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr " %s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "ਸੱਜ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "ਥੋੜ੍ਹਾ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "ਗੋਲ ਚੱਕਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ ਅਤੇ %s ਉੱਤੇ ਉਤਰ ਜਾਓ" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "ਖੱਬੀ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#~ msgid "Check in here" +#~ msgstr "ਇੱਥੇ ਚੈਕ ਇਨ ਕਰੋ" + +#~| msgid "Don't have an account?" +#~ msgid "Don’t have an account?" +#~ msgstr "ਖਾਤਾ ਨਹੀਂ ਹੈ?" + +#~ msgid "Show more information" +#~ msgstr "ਹੋਰ ਜਾਣਕਾਰੀ ਵੇਖੋ" + +#~ msgid "Population:" +#~ msgstr "ਆਬਾਦੀ:" + +#~ msgid "Altitude:" +#~ msgstr "ਉਚਾਈ:" + +#~ msgid "Opening hours:" +#~ msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ:" + +#~ msgid "Internet access:" +#~ msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ:" + +#~ msgid "Toilets:" +#~ msgstr "ਗੁਸਲਖਾਨੇ:" + +#~ msgid "Wheelchair access:" +#~ msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ:" + +#~ msgid "Phone:" +#~ msgstr "ਫ਼ੋਨ:" + +#~ msgid "yes" +#~ msgstr "ਹਾਂ" + +#~ msgid "limited" +#~ msgstr "ਸੀਮਿਤ" + +#~ msgid "no" +#~ msgstr "ਨਹੀਂ" + +#~ msgid "designated" +#~ msgstr "ਮਕਸਦ" + +#~| msgid "OpenStreetMap Account" +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL ਵਾਜਬ ਨਹੀਂ ਹੈ" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ਤਾਰ ਵਾਲਾ" + +#~ msgid "terminal" +#~ msgstr "ਟਰਮੀਨਲ" + +#~ msgid "service" +#~ msgstr "ਸੇਵਾ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f ਮਿੰਟ" + +#~ msgid "%f s" +#~ msgstr "%f ਸ" + +#~ msgid "Quit" +#~ msgstr "ਬਾਹਰ" + +#~ msgid "Load Map Layer" +#~ msgstr "ਨਕਸ਼ੇ ਦੀ ਪਰਤ ਨੂੰ ਲੋਡ ਕਰੋ" + +#~ msgid "Open with another application" +#~ msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਖੋਲ੍ਹੋ" + +#~ msgid "Press enter to search" +#~ msgstr "ਖੋਜ ਕਰਨ ਲਈ ਐਂਟਰ ਦਬਾਉ" + +#~ msgid "OK" +#~ msgstr "ਠੀਕ ਹੈ" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f ਮੀਲ" + +#~ msgid "%f ft" +#~ msgstr "%f ਫੁੱਟ" + +#~ msgid "Country code: %s" +#~ msgstr "ਦੇਸ਼ ਕੋਡ: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਤੇ ਸ਼ੁੱਧਤਾ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ (ਲੰਬਕਾਰ ਤੇ ਵਿਸਥਾਰ ਡਿਗਰੀਆਂ ਵਿੱਚ) ਤੇ ਸ਼ੁੱਧਤਾ (ਮੀਟਰਾਂ ਵਿੱਚ)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ਯੂਜ਼ਰ ਦੇ ਆਖਰੀ ਜਾਣੇ ਟਿਕਾਣੇ ਦਾ ਵੇਰਵਾ" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ਕੀ ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਯੂਜ਼ਰ ਵਲੋਂ ਖੁਦ ਤਹਿ ਕੀਤਾ ਸੀ।" + +#~ msgid "I’m here!" +#~ msgstr "ਮੈਂ ਇੱਥੇ ਹਾਂ!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "ਸੈਟੇਲਾਈਟ" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..beaa8c37 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1931 @@ +# Polish translation for gnome-maps. +# Copyright © 2013-2021 the gnome-maps authors. +# This file is distributed under the same license as the gnome-maps package. +# Piotr Drąg , 2013-2021. +# Paweł Żołnowski , 2014-2015. +# Aviary.pl , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-13 17:35+0200\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Wyszukiwanie miejsc na świecie" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapy zapewniają szybki dostęp do map całego świata oraz umożliwiają szybkie " +"wyszukiwanie miejsc według miast i ulic. Pomogą również ustalić miejsce " +"spotkania z przyjaciółmi." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy udostępniane są przez projekt OpenStreetMap, który jest tworzony przez " +"setki tysięcy ludzi z całego świata." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Prosty program do wyświetlania map" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "" +"Mapy;Mapa;Satelita;Satelitarna;Położenie;Lokalizacja;Współrzędne;Geografia;" +"Geograficzne;GPS;Ulica;Miasto;Województwo;Kraj;Państwo;Dojazd;Gdzie jestem;" +"Jak dojechać;Jak dojadę;Trasa;Trasy;Wycieczka;Wycieczki;Planowanie;Autobusy;" +"Tramwaje;Pociągi;Metro;Promy;OpenStreetMap;OpenTripPlanner;Foursquare;" +"Meldowanie;Zamelduj się;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umożliwia wyświetlenie położenia użytkownika na mapie." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ostatnio wyświetlane położenie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Współrzędne ostatnio wyświetlanego położenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "powiększenie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Poziom powiększenia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ wyświetlanej mapy (zwykła, satelitarna itp.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Rozmiar okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Rozmiar okna (szerokość i wysokość)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Położenie okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Położenie okna (na osi X i Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maksymalizacja okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stan maksymalizacji okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksymalna liczba wyników wyszukiwania" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksymalna liczba wyników wyszukiwania geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Liczba ostatnich miejsc do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Liczba ostatnio odwiedzonych miejsc do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Liczba ostatnich tras do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Liczba ostatnio odwiedzonych tras do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Foursquare dotyczące meldowania" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Foursquare dotyczące " +"meldowania. Możliwe wartości to: „public” (publiczne), " +"„followers” (obserwujący) lub „private” (prywatne)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako post na koncie " +"w serwisie Facebook powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako tweet na koncie " +"w serwisie Twitter powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nazwa użytkownika lub adres e-mail w serwisie OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Czy użytkownik jest zalogowany, aby modyfikować dane OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Ostatnio używany typ transportu dla tras" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Tryb nocny" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Czy program jest w trybie nocnym." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hybrydowe kafle satelitarne" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Czy kafle satelitarne mają używać stylu hybrydowego (z etykietami)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Widoczność" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Udostępnij w serwisie Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Udostępnij w serwisie Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anuluj" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Za_melduj się" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publiczne" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Obserwujący" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Prywatne" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa stąd" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj cel pośredni" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa dotąd" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co tutaj jest?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopiuj położenie" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj do serwisu OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksport widoku" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Wy_eksportuj" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Dołączenie tras i znaczników" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Przechodzi do obecnego położenia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Wybiera rodzaj mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Pomniejsza" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Powiększa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Drukuje trasę" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Włącza ulubione" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Włącza planowanie trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ogólne" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Wyświetlenie skrótów" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Wyszukiwanie" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Przełączenie planowania trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Wydrukowanie trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zakończenie działania" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otwarcie menu głównego" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Widok mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Powiększenie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pomniejszenie" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Przełączenie skali" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Przejście do obecnego położenia" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Przełączenie na widok mapy" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Przełączenie na widok satelitarny" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etykiety" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otwórz warstwę figur…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Włączenie usług położenia umożliwia odnalezienie bieżącego położenia" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anuluj" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ustawienia położenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Tryb nocny" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ustaw konto serwisu OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Wyeksportuj jako obraz" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programie" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otwórz menu główne" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapy są w trybie offline." + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Nie wykryto połączenia z Internetem, które jest potrzebne do prawidłowego " +"działania Map." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Proszę sprawdzić ustawienia połączenia oraz pośrednika." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto serwisu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Zalogowanie umożliwia modyfikowanie " +"map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Można pomóc ulepszyć mapę za pomocą\n" +"konta serwisu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Hasło" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zarejestruj się" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Zaloguj się" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"To nie zadziałało. Proszę spróbować ponownie lub przejść do serwisu\n" +"OpenStreetMap, aby przywrócić hasło." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kod weryfikacyjny się nie zgadza. Proszę spróbować ponownie." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Proszę podać kod weryfikacji widoczny powyżej" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Weryfikuj" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Zalogowano" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Konto serwisu OpenStreetMap jest aktywne." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Wyloguj się" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numer domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kod pocztowy" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miasto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brak" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentarz" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmiany mapy będą widoczne na wszystkich mapach\n" +"używających danych serwisu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Ostatnio używane" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modyfikacja w serwisie OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Dalej" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Brak wyników" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Wystąpił błąd" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Przeciągnięcie zmienia kolejność trasy" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otwarcie położenia" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Skopiuj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Wyślij do…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Zamelduj się…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otwórz" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Przełącza widoczne" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Wyszukiwanie trasy za pomocą oprogramowania GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Trasy transportu publicznego są dostarczane przez zewnętrzne serwisy.\n" +"Projekt GNOME nie gwarantuje prawidłowości wyświetlanych rozkładów.\n" +"Proszę zauważyć, że część dostawców może nie podawać wszystkich dostępnych\n" +"środków transportu, np. krajowy dostawca może nie podawać lotów, a lokalny\n" +"może nie podawać pociągów regionalnych.\n" +"Widoczne nazwy i marki są zastrzeżonymi znakami towarowymi ich właścicieli." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Wyświetl więcej wyników" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ukrywa przystanki pośrednie i informacje" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Wyświetla przystanki pośrednie i informacje" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Wyjście teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Wyjście przed" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Przybycie przed" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Wyświetlanie" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramwaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Pociągi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Promy" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Loty" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Udostępnia położenie" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaje do nowej trasy" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Wskazówki dojazdu" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Oznacza jako ulubione" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modyfikuje w serwisie OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Należy powiększyć, aby dodać położenie." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Powiększ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Odnalezienie struktury kafli w katalogu się nie powiodło" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Przetworzenie dokumentu XML się nie powiodło" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Brak wymaganych atrybutów" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nie można odnaleźć elementu OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Ścieżka do lokalnej struktury katalogów kafli" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Rozmiar kafli dla katalogu lokalnych kafli" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Wyświetla wersję programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignoruje dostępność sieci" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[PLIK…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Wybór konta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Wczytywanie" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Wybór miejsca" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Foursquare. Proszę " +"wybrać miejsce z listy." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Zameldowanie w „%s”" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Można napisać wiadomość związaną z zameldowaniem się w „%s”." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nie odnaleziono „%s” w serwisie społecznościowym" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "W tym położeniu nie odnaleziono odpowiedniego miejsca do zameldowania" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uwierzytelnienie wygasło. Proszę otworzyć Konta online, aby zalogować się " +"lub włączyć to konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nic tu nie odnaleziono." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Dodano położenie do mapy. Proszę zauważyć, że może minąć trochę czasu, zanim " +"pojawi się ono na mapie i w wynikach wyszukiwania." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa dla %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "System plików jest tylko do odczytu" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Brak uprawnień do zapisywania w tym miejscu" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalog nie istnieje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie podano nazwy pliku" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie można wyeksportować widoku" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Obecne położenie" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "nieprawidłowe współrzędne" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "błąd przetwarzania" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nieznana geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Żądanie trasy się nie powiodło." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nie odnaleziono żadnej trasy." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Wszystkie pliki warstw" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Połączenie z usługą położenia się nie powiodło" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Piotr Drąg , 2013-2021\n" +"Paweł Żołnowski , 2014-2015\n" +"Aviary.pl , 2013-2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Mapy dla środowiska GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011-2021 Red Hat, Inc. i autorzy Map GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dane mapy autorstwa %s i współtwórców" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa dostarczana przez %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Funkcja wyszukiwania dostarczana przez %s za pomocą %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Otwarcie warstwy się nie powiodło" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Kontynuować?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Zostaną otwarte pliki o całkowitym rozmiarze %s MB. Wczytanie ich może " +"potrwać trochę czasu." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Typ pliku jest nieobsługiwany" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Otwarcie adresu GeoURI się nie powiodło" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Niepoprawna nazwa użytkownika lub hasło" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Powodzenie" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Błędne żądanie" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Nie odnaleziono obiektu" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, ktoś inny właśnie zmodyfikował obiekt" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Usunięto obiekt" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Droga lub związek odnosi się do nieistniejących elementów potomnych" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nazwa" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficjalna nazwa. Zwykle pojawia się na znakach." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Strona WWW" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"To nie jest prawidłowy adres URL. Proszę się upewnić, że zawiera on http:// " +"lub https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficjalna strona WWW. Proszę używać najbardziej podstawowej formy adresu " +"URL, tzn. „http://example.com” zamiast „http://example.com/index.html”." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numer telefonu. Proszę używać formatu międzynarodowego, zaczynając znakiem " +"„+”. Proszę przestrzegać lokalnych praw do prywatności, zwłaszcza w stosunku " +"do prywatnych numerów telefonów." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"To nie jest prawidłowy adres e-mail. Proszę się upewnić, że nie zawiera on " +"przedrostka protokołu mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktowy adres e-mail w przypadku pytań. Tylko publicznie dostępne adresy " +"e-mail." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Używany format powinien zawierać kod języka i tytuł artykułu, np. „pl:Tytuł " +"artykułu”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Godziny otwarcia" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "" +"Więcej informacji o formacie znajduje się pod odnośnikiem na etykiecie." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Liczba mieszkańców" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Wysokość" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Wyniesienie (wysokość ponad poziomem morza) miejsca w metrach." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Dostęp dla osób na wózku" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Tak" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ograniczony" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Wyznaczony" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Dostęp do Internetu" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Przewodowy" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Na miejscu" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Obsługa" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Na wynos" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Wyłącznie" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religia" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaizm" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddyzm" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Chrześcijaństwo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucjanizm" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Dźinizm" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizm" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Wiele religii" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pogaństwo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizm" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scjentologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintō" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizm" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spirytualizm" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizm" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Uniwersalizm unitariański" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazydyzm" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zaratusztrianizm" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Uwaga" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Używane do informowania innych twórców map o nieoczywistych informacjach " +"o elemencie, intencjach autora przy jego tworzeniu lub wskazówkach na dalsze " +"ulepszenia." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodanie do serwisu OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Wybór typu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Gotowe" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Miejsce bez nazwy" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Przetworzenie adresu URI Geo się nie powiodło" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Współrzędne" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Dokładność" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Dokładność: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numer telefonu" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Można zamawiać na wynos" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nie można zamawiać na wynos" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Można wyłącznie zamawiać na wynos" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Publiczny dostęp do Internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Brak dostępu do Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Publiczna sieć Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Przewodowy dostęp do Internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Dostępne komputery do użytku" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Dostępne wsparcie przy korzystaniu z Internetu" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Brak dostępnych toalet" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Dostępne toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Dostępne dla osób na wózku" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ograniczony dostęp dla osób na wózku" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Brak dostępu dla osób na wózku" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Wyznaczone dla osób na wózku" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod poziomem morza" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Na poziomie morza" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religia:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Nie odnaleziono tego miejsca w serwisie OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Współrzędne w adresie URL są nieprawidłowe" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Nieobsługiwany adres URL" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Z %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Wczytywanie mapy do wydrukowania" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Można przerwać drukowanie, jeśli trwa to za długo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Przerwij drukowanie" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaje położenie pośrednie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Usuwa położenie pośrednie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Odwraca trasę" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s do programu %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Otwarcie adresu URI się nie powiodło" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otwórz za pomocą „%s”" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "wczytanie pliku się nie powiodło" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Przybliżony czas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Trasy dostarczane przez %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Początek w: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Początek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Przejście %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Przybycie do: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Przybycie" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wyświetla wskazówki" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ukrywa wskazówki" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Wczytaj wcześniejsze możliwości" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Wczytaj późniejsze możliwości" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nie odnaleziono wcześniejszych możliwości." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nie odnaleziono późniejszych możliwości." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nie odnaleziono rozkładu jazdy dla tej trasy." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nie odnaleziono dostawcy dla tej trasy." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s-%s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s godzina" +msgstr[1] "%s godziny" +msgstr[2] "%s godzin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s godzina" +msgstr[1] "%s∶%s godziny" +msgstr[2] "%s∶%s godzin" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Całą dobę" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od świtu do zmierzchu" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Codziennie" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Dni ustawowo wolne od pracy" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Wakacje/ferie szkolne" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zamknięte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Nieznana" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Dokładna" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s godz." + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s godz. %s min" +msgstr[1] "%s godz. %s min" +msgstr[2] "%s godz. %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta wtyczka nie obsługuje najpóźniejszego przybycia" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Kontynuuj na: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Kontynuuj" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skręć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Skręć w lewo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skręć lekko w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Skręć lekko w lewo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skręć gwałtownie w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Skręć gwałtownie w lewo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skręć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Skręć w prawo" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skręć lekko w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Skręć lekko w prawo" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skręć gwałtownie w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Skręć gwałtownie w prawo" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rondzie zjedź w: %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rondzie zjedź do: %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Wjedź na rondo" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Wejdź do windy i wysiądź na: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Wejdź do windy" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Zawróć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Zawróć w lewo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Zawróć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Zawróć w prawo" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..035ff4c7 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,2109 @@ +# Portuguese translation for gnome-maps. +# Copyright © 2013, 2014 gnome-maps +# This file is distributed under the same license as the gnome-maps package. +# António Lima , 2013. +# Duarte Loreto , 2014. +# Tiago Santos , 2014 - 2016. +# Pedro Albuquerque , 2015. +# Bruno Ramalhete , 2016. +# Juliano Camargo , 2020. +# Juliano de Souza Camargo , 2020. +# Hugo carvalho , 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 16:25+0100\n" +"Last-Translator: Hugo Carvalho \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Language: pt_PT\n" +"X-Source-Language: C\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas do GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontre lugares em todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"O Mapas dá-lhe acesso a mapas de todo o mundo. Permite que encontre " +"rapidamente o local que procura, procurando por uma cidade ou rua, ou " +"localizando um sítio para um encontro com um amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A aplicação Mapas utiliza a base de dados colaborativa OpenStreetMap, " +"construída por centenas de milhares de pessoas por todo o globo." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Uma aplicação simples para visualização de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;Rotas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que a sua localização seja colocada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a visualizar (ruas, satélite etc)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximização da janela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de procura" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de procura da busca geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de locais recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de locais recentemente visitados a armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas recentemente visitadas a armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Definição de privacidade para o Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última definição de privacidade usada para o Foursquare. Valores possíveis " +"são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Emissão do Foursquare para o Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como publicação na conta do Facebook " +"associada à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Emissão do Foursquare para o Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como tweet na conta do Twitter associada " +"à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de utilizador OpenStreetMap ou correio eletrónico" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se o utilizador iniciou sessão para editar dados no OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte utilizado para roteamento" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Se a aplicação está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utilizar vista aérea híbrida" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se a vista aérea deve utilizar estilo híbrido (com rótulos)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publicar no Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publicar no Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Inscrever" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar um destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que há aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar a localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar a vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluir a rota e os marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ver a sua localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Escolher o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Reduzir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir a rota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Ver os favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Procurar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ver escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir para a localização atual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Mudar para a vista de mapas" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Mudar para a vista de satélite" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Ver os rótulos" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camadas de mapa…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ligue os serviços de localização para saber onde está" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Definições de local" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar a conta OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atalhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca do Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "O Mapas está desligado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"O Mapas precisa de uma ligação à Internet ativa para funcionar corretamente, " +"mas não encontrou nenhuma." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verifique a sua ligação e definições de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie uma sessão para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa usando\n" +"uma conta OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correio eletrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Palavra-passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Inscrever-se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sessão" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, não resultou. Por favor, tente novamente ou visite\n" +"OpenStreetMap para repor a sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não correspondeu, por favor, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Insira o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessão iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A sua conta OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Terminar sessão" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Estrada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações ao mapa serão visíveis em todos os mapas\n" +"que utilizar dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recentemente utilizado" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seguinte" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Sem resultados encontrados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ocorreu um erro" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste-o para alterar a ordem em que aparece na rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "_Inscrever…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Mudar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Procura de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rotas de itinerários de transporte público são providas por serviços\n" +"de terceiros.\n" +"O GNOME não garante a idoneidade dos itinerários e programações expostas.\n" +"Note que alguns provedores podem não incluir todos os tipos de transportes,\n" +"ou seja, um provedor nacional pode não incluir linhas aéreas, e um provedor\n" +"local pode ignorar comboios regionais.\n" +"Nomes e marcas mostradas devem ser consideradas como registadas quando " +"aplicável." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Ver mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermediária e informação" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ver paradas intermediárias e informação" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir já" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partir às" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar às" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Ver" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ónibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Eléctricos" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Comboios" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Barcos" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partilhar a localização" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direções" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para adicionar a localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falhou ao localizar estrutura de mosaico na pasta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falhou ao processar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributos requeridos em falta" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossível localizar o elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para a estrutura de pasta local de telas" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamanho da tela para o diretório local de telas" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Ver a versão da aplicação" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar a disponibilidade de rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO...|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "A carregar" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Selecione um local" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Foursquare. Por " +"favor, selecione outro na lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Inscrever-se em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para se inscrever em %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossível encontrar “%s” no serviço social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossível encontrar um local adequado para inscrição nesta localização" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor, abra as Contas online para iniciar " +"sessão e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Localização foi adicionada ao mapa, note que pode demorar um pouco antes de " +"mostrar no mapa e nos resultados pesquisados." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é só de leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Não tem permissão para gravar aí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Sem nome de ficheiro" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossível exportar a vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localização atual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenadas inválidas" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erro de processamento" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Pedido de rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Rota não encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Iniciar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de camada" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Falha ao ligar-se ao serviço de localização" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"António Lima \n" +"Bruno Ramalhete \n" +"Pedro Albuquerque \n" +"Tiago Santos \n" +"Juliano de Souza Camargo \n" +"Hugo Carvalho " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Uma aplicação de mapas para o GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Direitos de autor © 2011 – 2021 Red Hat, Inc. e autores do Mapas do GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados cartográficos de %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Telas de mapas fornecida por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Procura fornecida por %s utilizando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Deseja continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Está prestes a abrir ficheiros com um tamanho total de %s MB. Isto pode " +"demorar algum tempo a carregar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipo de ficheiro não suportado" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Falha ao abrir GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Utilizador ou palavra-passe incorretos" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Mau pedido" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "O objeto foi eliminado" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relação referem-se a filho não existente" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece nos sinais." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Página Web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Isto não é um URL válido. Certifique-se de incluir http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A página Web oficial. Tente utilizar a forma mais básica do URL p.ex. http://" +"exemplo.com em vez de http://exemplo.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Utilize o formato internacional, começando com o sinal " +"+. Tenha atenção às leis locais de privacidade, sobretudo para números de " +"telefone privados." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correio eletrónico" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Este não é um endereço de e-mail válido. Certifique-se de não incluir o " +"mailto: prefixo de protocolo." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Endereço de e-mail de contacto para pedidos de informação. Adicionar apenas " +"endereços de correio eletrónico que se destinam a ser utilizados " +"publicamente." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir um código de linguagem e um título de " +"artigo tal como \"pt:Título do artigo\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Veja a ligação na etiqueta para ajuda no formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acesso para cadeiras de rodas" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acesso à Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Ligado" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Takeaway" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Apenas" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confusionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jinismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taioísmo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalismo Unitário" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Casas de banho" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Notas" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação utilizada para informar outros contribuidores acerca de " +"informações não tão óbvias de elementos, a intenção do autor ao criá-los, ou " +"dicas para aperfeiçoamentos." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selecione o tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Sítio não nomeado" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falha ao processar URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisão" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número da telefone" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Oferece takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Não oferece takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Apenas oferece takeaway" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acesso público à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sem acesso à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acesso à Internet por cabo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computadores disponíveis para utilização" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistência na Internet disponível" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sem casas de banho disponíveis" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Casas de banho disponíveis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acessível a cadeiras de rodas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acesso limitado a cadeiras de rodas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Não acessível a cadeira de rodas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Designado para utilizadores de cadeiras de rodas" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s abaixo do nível do mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "No nível do mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religião:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Sítio não encontrado no OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Coordenadas no URL não são válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL não suportado" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s para %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "A carregar telas de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impressão se isto demorar demasiado" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adicionar um destino intermediário" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remover o destino intermediário" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverter a rota" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s com %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falha ao abrir URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falha ao carregar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerário fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partir de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partir" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegar à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Ver as instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar as instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar as alternativas antecedentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar as alternativas subsequentes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Sem alternativas antecedentes." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Sem alternativas subsequentes." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário encontrado nesta rota." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nenhum fornecedor encontrado nesta rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 horas" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Do nascer ao pôr do Sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Todos os dias" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Feriados públicos" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "fechado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconhecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exata" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Esta extensão não suporta a última chegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire curva ligeira à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Vire curva ligeira à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire curva apertada à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Vire curva apertada à esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire curva ligeira à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Vire curva ligeira à direita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire curva apertada à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Vire curva apertada à direita" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rotunda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rotunda, tome a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Tome a rotunda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tome o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Tome o elevador" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça uma curva em u à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faça uma curva em u à esquerda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça uma curva em u à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faça uma curva em u à direita em %s" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Procure por tipos de localizações específicas, tais como “Bares perto da " +#~ "Rua Augusta, Lisboa” ou “Hotéis perto de Alexanderplatz, Berlin”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Definição de privacidade para o Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Última definição de privacidade usada para o Facebook. Valores possíveis " +#~ "são EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#~ msgid "Everyone" +#~ msgstr "Todos" + +#~ msgid "Friends of friends" +#~ msgstr "Amigos de amigos" + +#~ msgid "Just friends" +#~ msgstr "Só amigos" + +#~ msgid "Just me" +#~ msgstr "Só eu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "O Mapas não pode encontrar o local para inscrição com o Facebook. Por " +#~ "favor, selecione outro na lista." + +#~ msgid "Check in here" +#~ msgstr "Inscrever aqui" + +#~ msgid "Show more information" +#~ msgstr "Mostrar mais informação" + +#~ msgid "Population:" +#~ msgstr "População:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horário de funcionamento:" + +#~ msgid "Internet access:" +#~ msgstr "Acesso à Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Casas de banho:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acesso para cadeiras de rodas:" + +#~ msgid "Phone:" +#~ msgstr "Telefone:" + +#~ msgid "yes" +#~ msgstr "sim" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "não" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "O URL OpenStreetMap não é válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s - %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s - %s - %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s - %s" + +#~ msgid "wired" +#~ msgstr "ligado" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviço" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Encontrar uma Rota" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada de mapa" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outra aplicação" + +#~ msgid "Don't have an account?" +#~ msgstr "Não tem uma conta?" + +#~ msgid "Press enter to search" +#~ msgstr "Prima Enter para procurar" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f s" +#~ msgstr "%f seg" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso para deficientes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao processar ficheiro GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última localização conhecida e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última localização conhecida (latitude e longitude em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição da última localização conhecida do utilizador." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Se a última localização conhecida foi definida manualmente pelo " +#~ "utilizador ou não." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..1b0c29ff --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1933 @@ +# Brazilian Portuguese translation for gnome-maps. +# Copyright (C) 2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Georges Basile Stavracas Neto , 2013. +# Fábio Nogueira , 2016. +# Artur de Aquino Morais , 2016. +# Antonio Fernandes C. Neto , 2016. +# Gustavo Marques , 2016. +# Jamerson Tiossi , 2017. +# Henrique Roberto Gattermann Mittelstaedt , 2020. +# Bruno Lopes , 2018, 2020. +# Rafael Fontenelle , 2013-2021. +# Enrico Nicoletto , 2013-2016, 2018, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-19 19:56-0300\n" +"Last-Translator: Enrico Nicoletto \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapas" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontre lugares ao redor do mundo" + +# O último 'ou' dá sentido de inclusão, pois ambos são opções válidas.--Enrico +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas oferece a você acesso rápido a mapas ao redor de todo o mundo. Permite " +"que você localize rapidamente o local que deseja encontrar através da " +"pesquisa por uma cidade ou rua e a encontrar um local para encontrar um " +"amigo(a)." + +# Contribuições pois os usuários inserem os dados no banco de dados e não criam as tabelas deste --Enrico. +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa o banco de dados colaborativo do OpenStreetMap, com contribuições " +"de centenas de milhares de pessoas ao redor do planeta." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Um simples aplicativo de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que sua localização seja mostrada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas do última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo do mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo do mapa para exibir (rua, aérea etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "A posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "O estado de janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de pesquisa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados da pesquisa por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas visitadas recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configurações de privacidade de check-in do quadrante" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultima configuração de privacidade de check-in do quadrante usada. Valores " +"possíveis são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Publicação no Facebook de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um postagem na conta " +"Facebook associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Publicação no Twitter de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um tweet na conta " +"Twitter associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuário do OpenStreetMap ou endereço de e-mail" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuário ingressou para editar dados do OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para rotas" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Se o aplicativo está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Usar blocos aéreos híbridos" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se blocos aéreos devem usar estilo híbrido (com etiquetas)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Postar no Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Postar no Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Fazer c_heck-in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota a partir daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que está aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar visão" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluir rota e marcações" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Escolhe o tipo do mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Reduz" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir rota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Ativa favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pesquisa" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abre o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visão de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Alterna a escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Muda para a visão de rua" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Muda para a visão aérea" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abre a camada" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camada…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Habilite o serviço de localização para encontrar sua localização" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurações de localização" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar conta do OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "A_talhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre o Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necessita de uma conexão de internet ativa para funcionar " +"propriamente, mas nenhuma pode ser encontrada." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verifique sua conexão e as configurações de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ingresse para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa, usando uma\n" +"conta do OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senha" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Cadastrar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Entrar" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, mas isto não funcionou. Tente novamente ou visite\n" +"o OpenStreetMap para reiniciar sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não combina, por gentileza, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Digite o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingressado" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Sua conta do OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sair" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rua" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da residência" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações no aplicativo Mapas serão visíveis em\n" +"todos os mapas que usarem dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Próximo" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Um erro foi encontrado" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste para alterar a ordem da rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camada" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Tornar visível" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pesquisa de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerários de rotas para trânsito público é fornecido por serviços\n" +"de terceiros.\n" +"GNOME não pode garantir que os itinerários e agendamentos mostrados estejam\n" +"corretos. Observe que alguns fornecedores podem não incluir todos os modos\n" +"de transporte disponíveis, por exemplo, um fornecedor nacional pode não\n" +"incluir companhias aéreas e um fornecedor local pode perder trens regionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar informações e paradas intermediárias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar informações e paradas intermediárias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sair agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sair por" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ônibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Bondes" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrô" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Balsas" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Compartilhar localização" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Instruções" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplie para adicionar uma localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falha ao pesquisar estrutura de blocos no diretório" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falha ao analisar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltando atributos necessários" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Não foi possível localizar elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para um diretório local de estrutura de blocos" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamanho de bloco para o diretório local de blocos" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra a versão do programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora a disponibilidade de rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ARQUIVO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Carregando" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Escolha um local" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas não consegue encontrar o local para dar check-in no Foursquare. Por " +"favor selecione um local da lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Fazer check-in em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para fazer check-in em %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Não foi possível localizar “%s” no serviço social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Não foi possível encontrar um local apropriado para fazer check-in nessa " +"localização" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor abra o Contas Online, para autenticar-se " +"e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada foi encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A localização foi adicionada ao mapa; note que pode levar um tempo antes " +"dela ser mostrada no mapa e em resultados de pesquisa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de arquivos é somente leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Você não possui permissão para salvar lá" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenhum nome de arquivo foi especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Não foi possível exportar a visão" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localização Atual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada inválida" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erro de análise" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Solicitação da rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenhuma rota encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Começar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todas os arquivos de camadas" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Falha ao conectar ao serviço de localização" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Enrico Nicoletto \n" +"Fábio Nogueira \n" +"Rafael Fontenelle \n" +"Henrique Roberto Gattermann Mittelstaedt \n" +"Bruno Lopes " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Um aplicativo de mapas para o GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e os autores do GNOME Mapas" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados de mapas por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blocos de mapas fornecidos por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pesquisa fornecida por %s usando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Você deseja continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Você está prestes a abrir arquivos com um tamanho total de %s MB. Isso pode " +"levar um bom tempo para carregar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Não há suporte ao tipo de arquivo" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Falha ao analisar o URI geo" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nome de usuário ou senha incorretos" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Solicitação inválida" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "O objeto foi excluído" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relacionamento faz referência a filho não existente" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece em sinais." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Site" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Este não é um URL válido. Certifique-se de incluir http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O site oficial. Tente usar o formulário mais básico de um URL i.e. http://" +"exemplo.com.br em vez de http://exemplo.com.br/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Use o formato internacional, começando com um sinal de " +"+. Cuidado com as leis de privacidade locais, especialmente para números de " +"telefone privado." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Este não é um endereço de e-mail válido. Certifique-se de incluir o prefixo " +"de protocolo mailto:" + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Endereço de e-mail de contato para perguntas. Adicione apenas endereços de e-" +"mail que devem ser usados publicamente." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir o código do idioma e o título do artigo " +"como “pt:Título do artigo”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Veja o link na etiqueta para obter ajuda sobre o formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acesso a cadeirantes" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acesso à Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cabeada" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Para viagem" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Apenas" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islã" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitário Universalismo" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Banheiros" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação usada para informar outros mapeadores sobre informações não " +"óbvias sobre um elemento, a intenção do autor ao criá-la ou dicas para " +"melhorias posteriores." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selecione um tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Concluído" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Lugar sem nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falha ao analisar o URI geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisão" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número do telefone" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Oferece para viagem" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Não oferece para viagem" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Só oferece para viagem" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acesso Público à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sem acesso à internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi Público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acesso à internet cabeada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computadores disponíveis para uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistência de internet disponível" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sem banheiros disponíveis" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Banheiros disponíveis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acessível a cadeirantes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acesso limitado a cadeirantes" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Não acessível a cadeirantes" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Designado para cadeirantes" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s abaixo do nível do mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "No nível do mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religião:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar não encontrado no OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL não são válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Não há suporte à URL" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s até %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Carregando mosaicos de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Você pode abortar a impressão se isso leva muito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adiciona via localização" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via localização" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rota reversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s para %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falha ao abrir a URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falha ao carregar arquivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerários fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Início em %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Início" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegada em %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenhuma alternativa anterior encontrada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenhuma alternativa posterior encontrada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário localizado para essa rota." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nenhum provedor localizado para essa rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Em volta do relógio" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Do nascer até o pôr do sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Todo dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Feriados públicos" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "não abrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconhecido" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exato" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este plugin não tem suporte a chegada mais recente" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire ligeiramente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Vire ligeiramente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire acentuadamente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Vire acentuadamente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire ligeiramente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Vire ligeiramente à direita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire acentuadamente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Vire acentuadamente à direita" + +# Notas: +# %s aqui é um número -- Rafael +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rotatória, pegue a %sª saída" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rotatória, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Pegue a rotatória" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Pegue o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Pegue o elevador" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça um retorno em U à esquerda para %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faça um retorno em U à esquerda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça um retorno em U à direita para %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faça um retorno em U à direita" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 00000000..029aaaf5 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,2069 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mada-Gabriela , 2018. +# Daniel Șerbănescu , 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 18:08+0200\n" +"Last-Translator: Florentina Mușat \n" +"Language-Team: Gnome Romanian Translation Team\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Hărți GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Găsește locații din întreaga lume" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Hărți vă oferă acces rapid la hărți din întreaga lume. Vă permite să găsiți " +"rapid locul pe care îl căutați, să căutați un oraș sau o stradă sau să " +"localizați un loc unde să întâlniți un prieten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Hărți colaborează cu OpenStreetMap folosind o întreagă bază de date, " +"realizată de sute de mii de oameni de pe întregul pământ." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Proiectul GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Hărți" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "O aplicație simplă cu hărți" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Hărți;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite ca locația curentă să fie arătată pe hartă." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "locația vizualizată ultima dată" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonatele locației vizualizate ultima dată." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tip de hartă" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipul de hartă de afișat (stradală, aeriană, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensiunea ferestrei" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensiunea ferestrei (lățime și înălțime)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poziția ferestrei" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poziția ferestrei (X si Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fereastră maximizată" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Starea de maximizare a ferestrei" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numărul maxim de rezultate pentru căutare" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Număr maxim de rezultate din căutarea după coordonate geografice." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Număr de locuri recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Număr de locuri vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Număr de rute recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Număr de rute vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Foursquare utilizată " +"cel mai recent. Valorile posibile sunt: public, cei care urmăresc sau privat." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difuzarea pe Facebook a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un mesaj pe " +"contul Facebook asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difuzarea pe Twitter a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un tweet pe " +"contul Twitter asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nume de utilizator OpenStreetMap sau adresă de e-mail" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indică dacă utilizatorul s-a conectat pentru editarea datelor OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Ultimul tip de transport utilizat pentru drum" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mod nocturn" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Dacă aplicația este în modul nocturn." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utilizează dalele aeriene hibride" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Dacă dalele aeriene ar trebui să utilizeze stilul hibrid (cu etichete)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Vizibilitate" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Postează pe Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Postează pe Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anulează" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Înr_egistrează" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Urmăritori" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rută de aici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adaugă destinațiile intermediare" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rută până aici" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce este aici?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiază locația" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportă vizualizarea" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportă" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Includeți ruta și marcajele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Alegeți tipul hărții" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Micșorează" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Mărește" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Tipărește ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Comută preferatele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Arată scurtăturile" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Caută" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ieșire" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vizualizarea hărții" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Mărește" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Micșorează" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Comută scara" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Schimbă la vizualizarea stradală" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Schimbă la vederea aeriană" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Deschide stratul formei" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Arată etichetele" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Deschide stratul formei…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Pornește serviciile de localizare pentru a vă găsi locația" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anulează" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurări de locație" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mod nocturn" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurează contul OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportă ca imagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtături de tastatură" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Despre Hărți" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Hărți este offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Hărți necesită o conexiune la internet pentru a funcționa în mod " +"corespunzător, dar nicio conexiune nu a fost găsită." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificați conexiunile și configurările proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cont OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Autentificați-vă pentru a edita " +"hărți" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajutați la îmbunătățirea hărții, utilizând un\n" +"cont OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parolă" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Înregistrare" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Autentificare" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nu a funcționat. Încercați din nou, sau vizitați\n" +"OpenStreetMap pentru a restabili parola." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Codul de verificare nu se potrivește, încercați din nou." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduceți codul de verificare arătat mai sus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifică" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Autentificat" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Contul dumneavoastră OpenStreetMap este activ." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Deautentificare" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Stradă" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Număr casă" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Cod poștal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Oraș" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tip" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Niciunul" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adaugă un câmp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentariu" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Schimbările de hartă vor fi vizibile pe toate hărțile\n" +"care utilizează date OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Folosite recent" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editare pe OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Următorul" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Niciun rezultat găsit" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "A apărut o eroare" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trageți pentru a schimba ordinea rutei" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Deschide locația" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiază" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Trimite la…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Verificare de intrare…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Deschide stratul formei" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Deschide" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Comută vizibilitatea" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Caută rute prin GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutarea itinerariilor pentru transportul public este furnizată de servicii\n" +"părți terțe.\n" +"GNOME nu poate garanta corectitudinea itinerariilor și orarelor arătate.\n" +"Observați că unii furnizori pot să nu includă toate modurile de transport " +"disponibile,\n" +"de ex. un furnizor național ar putea să nu includă liniile aeriene, și un " +"furnizor local ar putea\n" +"să lipsească trenurile regionale.\n" +"Numele și mărcile arătate trebuie să fie considerate mărci înregistrate " +"atunci când este cazul." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Arată mai multe rezultate" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ascunde informațiile și opririle intermediare" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Arată informațiile și opririle intermediare" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pleacă acum" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pleacă până la" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Sosește până la" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Arată" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuze" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaie" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenuri" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrouri" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feriboturi" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avioane" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partajează locația" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adaugă la ruta nouă" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direcții" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marchează ca favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editează pe OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Măriți pentru a adăuga locația!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Mărește" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nu s-a putut găsi structura de fragmente în director" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nu s-a putut analiza documentul XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Lipsesc atributele necesare" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nu s-a putut găsi elementul OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "O cale către o structură locală de directoare pentru fragmente" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Dimensiunea unei dale pentru directorul de dale local" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Arată versiunea programului" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignoră disponibilitatea rețelei" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIȘIER…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selectați un cont" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Se încarcă" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Selectați un loc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsit locul pentru înregistrarea cu Foursquare. Selectați " +"unul din această listă." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Înregistează la %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrieți un mesaj opțional pentru înregistrare la %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nu s-a putut găsi „%s” la serviciul social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Nu s-a putut găsit un loc potrivit pentru înregistrare la această locație" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Certificările au expirat, deschideți conturi online pentru a vă autentifica " +"și activa contul acesta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nimic nu a fost găsit aici!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locația a fost adăugată pe hartă, rețineți că poate dura ceva timp înainte " +"de a fi arătată pe hartă și în rezultatele căutării." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Hărți la %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistemul de fișiere este numai pentru citire" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nu aveți permisiunea de a salva acolo" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Directorul nu există" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nu este specificat nici un nume de fișier" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nu se poate exporta vizualizarea" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Locație curentă" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordonate nevalide" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "eroare de parsare" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometrie necunoscută" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Cererea rutei a eșuat." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nu s-au găsit rute." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Pornește!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Toate fișierele strat" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Nu s-a reușit conectarea la serviciul de localizare" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Mădălin Șerbănescu , 2018\n" +"Florentina Mușat , " +"2018-2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "O aplicație cu hărți pentru GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Drepturi de autor © 2011 – 2021 Red Hat, Inc. și autorii GNOME Hărți" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datele hărții ale %s și contribuitorii" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Fragmente de hărți furnizate de %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Căutare furnizată de %s utilizând %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Nu s-a putut deschide stratul" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Doriți să continuați?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sunteți pe cale să deschideți fișiere cu o dimensiune totală de %s MB. Acest " +"lucru ar putea dura ceva timp să se încarce" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipul de fișier nu este suportat" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Nu s-a putut deschide GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Cerere greșită" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Obiectul nu a fost găsit" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, altcineva tocmai a modificat obiectul" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Obiectul a fost șters" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Calea sau relația se referă la copii care nu există" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nume" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Numele oficial. Acesta este, de obicei, numele real." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresă" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Acesta nu este un URL valid. Asigurați-vă că includeți http:// sau https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Pagina web oficială. Încercați să utilizați forma cea mai de bază a unui URL " +"de ex: http://example.com în loc de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Număr de telefon. Utilizați formatul internațional, care începe cu un semn " +"+. Aveți grijă la legile de confidențialitate locale, în special pentru " +"numerele de telefon private." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Email" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Aceasta nu este o adresă email validă. Asigurați-vă că nu includeți prefixul " +"de protocol mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Adresă email de contact pentru solicitări de informații. Adăugați doar " +"adrese de email care sunt destinate a fi utilizate public." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatul utilizat trebuie să includă codul de limbă și titlul articolului ca " +"„en:titlu de articol”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Ore de deschidere" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Consultați legătura din etichetă pentru ajutor cu formatul." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populație" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevația (înălțimea deasupra nivelului mării) unui punct în metri." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acces pentru scaun cu rotile" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nu" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Desemnat" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acces la internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cu fir" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviciu" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Mâncare la pachet" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Doar" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budism" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Creștinism" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Iudaism" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religii multiple" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Păgânism" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalism unitarian" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalete" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Notiță" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informații utilizate pentru a informa alți utilizatori de hărți despre " +"informațiile care nu sunt evidente despre un element, intenția autorului în " +"timpul creării acestuia, sau indicii pentru îmbunătățiri ulterioare." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selectați tipul" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Gata" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Loc nedenumit" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Nu s-a putut parsa URI-ul Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordonate" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Acuratețe" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Acuratețe: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Număr de telefon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Oferă mâncare la pachet" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nu oferă mâncare la pachet" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Oferă doar mâncare la pachet" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acces la internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nu există acces la internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acces la internet prin cablu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Calculatoare disponibile pentru utilizare" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Asistență pe internet disponibilă" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nu există toalete disponibile" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toaletele sunt disponibile" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accesibil pentru scaun cu rotile" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accesibilitate pentru scaun cu rotile limitată" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nu este accesibil pentru scaun cu rotile" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Desemnat pentru utilizatorii în scaun cu rotile" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s sub nivelul mării" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "La nivelul mării" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religie:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Locul nu a fost găsit în OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Coordonatele din URL nu sunt valide" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL-ul nu este suportat" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De la %s la %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Se încarcă fragmentele de hartă pentru tipărire" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puteți să anulați tipărirea dacă durează prea mult" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Despre tipărire" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adaugă via locație" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Elimină via locație" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inversează ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adaugă %s la %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Nu s-a putut deschide URI-ul" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Deschide cu %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nu s-a putut încărca fișierul" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp estimat: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarii furnizate de %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Începe la %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Începe" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Plimbare pe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Sosește la %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Sosește" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Arată instrucțiunile de plimbare" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ascunde instrucțiunile de plimbare" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Încarcă alternativele de dinainte" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Încarcă alternativele de mai târziu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nu s-au găsit alternative anterioare." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nu s-au găsit alternative de mai târziu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nu s-au găsit date în orar pentru această rută." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nu s-a găsit furnizor pentru această rută." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minute" +msgstr[2] "%s de minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s oră" +msgstr[1] "%s ore" +msgstr[2] "%s de ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s oră" +msgstr[1] "%s:%s ore" +msgstr[2] "%s:%s de ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Non-stop" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "De la răsărit la apus" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "În fiecare zi" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Vacanțe publice" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacanțe școlare" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nu este deschis" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Necunoscut" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s o" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s o %s min" +msgstr[1] "%s o %s min" +msgstr[2] "%s o %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Acest modul nu suportă ultima sosire" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuă pe %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuă" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Virează la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Virează la stânga" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Virează ușor la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Virează ușor la stânga" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Virează ascuțit la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Virează ascuțit la stânga" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Virează la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Virează la dreapta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Virează ușor la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Virează ușor la dreapta" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Virează ascuțit la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Virează ascuțit la dreapta" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "La sensul giratoriu, luați ieșirea %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "La sensul giratoriu, luați ieșirea spre %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Luați sensul giratoriu" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Luați liftul și ieșiți la %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Luați liftul" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faceți un viraj spre stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faceți un viraj spre stânga" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faceți un viraj spre dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faceți un viraj spre dreapta" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Puteți de asemenea să căutați anumite tipuri de locații, precum „Gara " +#~ "Lipscani, București” sau „Acces Wi-Fi lângă Dumbrava, Sibiu”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Configurare de confidențialitate pentru înregistrare Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Configurarea de confidențialitate pentru înregistrare Facebook utilizată " +#~ "cel mai recent. Valorile posibile sunt: TOATĂ_LUMEA, " +#~ "PRIETENII_PRIETENILOR, TOȚI_PRIETENII sau DE_SINE." + +#~ msgid "Everyone" +#~ msgstr "Toată lumea" + +#~ msgid "Friends of friends" +#~ msgstr "Prietenii prietenilor" + +#~ msgid "Just friends" +#~ msgstr "Doar prietenii" + +#~ msgid "Just me" +#~ msgstr "Doar eu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Hărți nu poate găsi locul pentru înregistrarea cu Facebook. Selectați " +#~ "unul din această listă." + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Găsește o rută" + +#~ msgid "Check in here" +#~ msgstr "Înregistrați-vă aici" + +#~ msgid "Show more information" +#~ msgstr "Arată mai multe informații" + +#~ msgid "Population:" +#~ msgstr "Populație:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudine:" + +#~ msgid "Opening hours:" +#~ msgstr "Ore de deschidere:" + +#~ msgid "Internet access:" +#~ msgstr "Acces la internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toalete:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acces pentru scaun cu rotile:" + +#~ msgid "Phone:" +#~ msgstr "Număr de telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "nu" + +#~ msgid "designated" +#~ msgstr "desemnat" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL-ul de OpenStreetMap nu este valid" + +#~ msgid "wired" +#~ msgstr "cu fir" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviciu" + +#~ msgid "Primary menu" +#~ msgstr "Meniu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nu aveți un cont?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Căută rute prin OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Adaugă o destinație" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Deschide cu o altă aplicație" + +#~ msgid "Press enter to search" +#~ msgstr "Apasă Enter pentru a căuta" + +#~ msgid "Quit" +#~ msgstr "Ieșire" + +#~ msgid "OK" +#~ msgstr "OK" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..f40e47b5 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,2096 @@ +# Russian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mihail Gurin , 2014, 2015. +# Ivan Komaritsyn , 2015. +# Yuri Myasoedov , 2013, 2014, 2015. +# Stas Solovey , 2014, 2015, 2016. +# Роман Верменко , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 14:54+0300\n" +"Last-Translator: Alexey Rubtsov \n" +"Language-Team: русский \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карты GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Поиск местоположений по всему миру" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Приложение «Карты» позволяет получить быстрый доступ к картам по всему миру, " +"находить места в городах, на улицах или указывать места для встречи с " +"друзьями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карты используют базу данных OpenStreetMap, созданную сотнями тысяч людей по " +"всеми миру." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Проект GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карты" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Простое картографическое приложение" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карты;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Позволяет показывать на карте ваше местоположение." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последнее просмотренное местоположение" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координаты последнего просмотренного местоположения." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увеличить" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Уровень масштабирования" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Тип" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карты для отображения (уличная, аэрофотосъемка и т.д.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Размер окна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Размер окна (ширина и высота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положение окна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положение окна (X, Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Окно развёрнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Режим развёрнутого окна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальное количество результатов поиска" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальное количество результатов поиска по поиску геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Количество последних сохранённых мест" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Количество сохранённых недавно посещённых мест." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Количество последних сохранённых маршрутов" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Количество сохранённых недавно использовавшихся маршрутов." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Кто может видеть публикацию в Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последняя использованная настройка. Возможные значения: public, followers " +"или private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Трансляция из Foursquare в Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Facebook." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Трансляция из Foursquare в Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Twitter." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Имя или адрес эл. почты пользователя OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Указывает, выполнил ли пользователь вход для редактирования данных " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Последний тип транспорта, использовавшийся для маршрута" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Ночной режим" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Должно ли приложение использовать ночной режим." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Используйте гибридную аросъёмку" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Должна ли аэросъёмка использовать гибридный стиль (с метками)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Видимость" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Опубликовать в Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Опубликовать в Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Отменить" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "О_тметиться" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Подписчики" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Те, кто в этом месте" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут отсюда" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Добавить промежуточный пункт назначения" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюда" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Что здесь?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копировать местоположение" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Экспортировать просматриваемую область" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Экспортировать" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Включить маршрут и маркеры" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Выберите тип карты" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Отдалить" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Приблизить" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Печать маршрута" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Включить или выключить избранные места" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Основные" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показать комбинации клавиш" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Поиск" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Печать маршрута" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Завершить" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Открыть главное меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Просмотр карты" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приблизить" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалить" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Включить или выключить масштаб" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Переключиться на просмотр улиц" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Переключиться на вид сверху" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Открыть слой" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Показать метки" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Открыть слой фигур…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Включите сервисы местоположения для определения вашей позиции" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Отменить" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметры местоположения" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Ночной режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Настроить учётную запись OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Экспортировать как изображение" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "О приложении" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Открыть главное меню" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Приложение работает в автономном режиме!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Приложению требуется соединение с Интернетом, но оно отсутствует." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Проверьте настройки прокси и соединения." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Учётная запись OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Войдите, чтобы редактировать карты" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогите улучшить карту, используя\n" +"учётную запись OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Электронная почта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Регистрация" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Войти" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Неверное имя пользователя или пароль. Попробуйте снова или посетите\n" +"OpenStreetMap для сброса пароля." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Проверочный код не совпадает, попробуйте снова." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Введите показанный выше проверочный код" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Проверить" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Авторизован" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваша учётная запись OpenStreetMap активна." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Выйти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер дома" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Почтовый индекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Город" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Отсутствует" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Добавить поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Комментарий" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Изменения, сделанных в картах, будут доступны на всех картах,\n" +"использующие данные OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно использованные" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Далее" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Результатов не найдено" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Произошла ошибка" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перетащите, чтобы изменить порядок маршрута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Открытое расположение" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копировать" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "О_тправить…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Отметиться…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Открыть слой фигур" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Открыть" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Включить или выключить видимый" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Поиск маршрута с помощью GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршрутизация маршрутов общественного транспорта осуществляется сторонними\n" +"сервисами.\n" +"GNOME не может гарантировать правильность показанных маршрутов и " +"расписаний.\n" +"Обратите внимание, что некоторые провайдеры могут не включать все доступные " +"виды транспорта,\n" +"например, национальный провайдер может не включать авиалинии, а местный " +"провайдер может\n" +"может не включать региональные поезда.\n" +"Указанные названия и бренды следует рассматривать как зарегистрированные " +"торговые марки, когда это применимо." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Показать больше результатов" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Скрывать промежуточные остановки и информацию" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показывать промежуточные остановки и информацию" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Отправляются сейчас" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Отправляются" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибывают" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показывать" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобусы" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваи" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Поезда" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Переправы" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Самолеты" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Поделиться местоположением" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Добавить к новому маршруту" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Направления" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Добавить в избранное" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Приблизить, чтобы добавить местоположение!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Приблизить" + +# сомнительно, требует проверки +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не удалось найти плиточную структуру в каталоге" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не удалось разобрать документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Пропущены обязательные атрибуты" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Не удалось найти элемент OSM" + +# сомнительно, требует проверки +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Путь к локальному каталогу плиточной структуры" + +# сомнительно, требует проверки +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Размер для локального каталога фрагментов" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Показать версию программы" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Игнорировать доступность сети" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE...|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Выберите учётную запись" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Загрузка" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Выберите место" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Foursquare. Выберите одно из " +"списка." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Отметиться в %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите необязательное сообщение для отметки в %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не удалось найти «%s» в социальной сети" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не удалось найти подходящее место, чтобы отметиться здесь" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Истекли полномочия, откройте Сетевые учётные записи, чтобы войти и " +"активировать эту учётную запись" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Здесь ничего не найдено!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположение добавлено на карту. Скоро оно появится на карте и будет " +"выводиться в результатах поиска." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карты на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файловая система доступна только для чтения" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Отсутствуют права на запись в данную директорию" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не существует" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не указано имя файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не удалось экспортировать просматриваемую область" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Текущее местоположение" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неверные координаты" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ошибка разбора" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "неизвестная геометрия" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Сбой при запросе маршрута." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Маршрут не найден." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Старт!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Все файлы слоёв" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Не удалось подключиться к службе местоположения" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Yuri Myasoedov , 2013, 2014.\n" +"Stas Solovey , 2014-2019.\n" +"Alexey Rubtsov , 2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Приложение карт для GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Авторское право © 2011 – 2021 Red Hat, Inc. и авторы GNOME Maps" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Картографические данные %s и участников" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Картографические слои предоставлены %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Поиск осуществляется %s с помощью %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Не удалось открыть слой" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Вы хотите продолжить?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Вы собираетесь открыть файлы общим размером %s МБ. Загрузка может занять " +"некоторое время" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Тип файла не поддерживается" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Не удалось открыть геолокационный URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Неверное имя пользователя или пароль" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Успешно" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Неверный запрос" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Объект не найден" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфликт: кто-то ещё только что изменил объект" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Объект был удалён" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Путь или связь ссылается на несуществующего потомка" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Имя" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Официальное название. Обычно то, что написано на знаках." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адрес" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Веб-сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Это не правильный URL. Обязательно включите http:// или https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Официальный веб-сайт. Рекомендуется использовать URL в наиболее общей форме, " +"например «http://example.com» вместо «http://example.com/index.html»." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефона. Используйте международный формат, начинающийся со знака «+»." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Это не действительный адрес электронной почты. Убедитесь, что не указан " +"префикс протокола mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Адрес электронной почты для запросов. Добавляйте только те адреса " +"электронной почты, которые предназначены для публичного использования." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Википедия" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Используемый формат должен содержать код языка и заголовок статьи, например " +"«ru:Заголовок статьи»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Часы работы" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Для получения справки по формату см. ссылку в метке." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Население" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Высота" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Высота над уровнем моря в метрах." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Доступ для инвалидных колясок" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Нет" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ограниченный" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Специализированный" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Доступ к Интернету" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Проводной" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Служебный" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Вынос" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Только" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Религия" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодаизм" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Христианство" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуцианство" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Несколько религий" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Язычество" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафарианство" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Саентология" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Синто" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спиритизм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унитарный универсализм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Шаманство" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Туалеты" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Заметка" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Информация, используемая для информирования других картографов о неочевидной " +"информации об элементе, намерении автора при его создании или о намеках на " +"дальнейшее совершенствование." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Выберите тип" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Неназванное место" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Не удалось разобрать геолокационный URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координаты" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Точность" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точность: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Номер телефона" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Предложения на вынос" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Не предлагает блюда на вынос" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Только на вынос" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Открытый доступ в Интернет" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Отсутствие доступа в Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Общественный Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Проводной доступ в Интернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Компьютеры доступные для использования" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Доступна помощь в Интернете" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Туалеты отсутствуют" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Туалеты в наличии" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Доступность для инвалидных колясок" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ограниченная доступность для инвалидных колясок" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Не доступен для инвалидных колясок" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Предназначен для инвалидов-колясочников" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s ниже уровня моря" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "На уровне моря" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Религия:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Место не найдено в OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Координаты в URL не действительны" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL не поддерживается" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Из %s в %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Загрузка областей карты для печати" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Печать можно прервать, если она выполняется слишком долго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прервать печать" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Добавить через местоположение" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Удалить через местоположение" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обратный маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Добавьте %s к %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Не удалось открыть URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Открыть с помощью %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "не удалось загрузить файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Расчётное время: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруты, предоставленные %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Отправление в %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Отправление" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешком %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибытие в %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Прибытие" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показывать информацию для пешего маршрута" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Скрывать информацию для пешего маршрута" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Загрузить предыдущие варианты" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Загрузить следующие варианты" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Не найдено более ранних вариантов." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Не найдено более поздних вариантов." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Для этого маршрута не найдено расписаний." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Для этого маршрута не найдено ни одного поставщика услуг." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минута" +msgstr[1] "%s минуты" +msgstr[2] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s час" +msgstr[1] "%s часа" +msgstr[2] "%s часов" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s час" +msgstr[1] "%s:%s часа" +msgstr[2] "%s:%s часов" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Круглосуточно" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "От восхода до заката" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Каждый день" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Государственные праздники" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Школьные каникулы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# нужно проверить можно ли переводить как "закрыто", так как странно почему так, а не "closed" +#: src/translations.js:233 +msgid "not open" +msgstr "не открыто" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Неизвестная" + +# Точность: Максимальная +# точная не подходит, т. к. получается "точность: точная" +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Максимальная" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч %s мин" +msgstr[1] "%s ч %s мин" +msgstr[2] "%s ч %s мин" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин" +msgstr[1] "%s миль" +msgstr[2] "%s миль" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s миль" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s футов" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Этот модуль не поддерживает последние поступления" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Продолжайте %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Продолжить" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверните налево на %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Поверните налево" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверните немного налево на %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Повернитесь немного влево" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверните резко налево на %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Повернитесь резко налево" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверните направо на %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Поверните направо" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверните немного направо на %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Поверните немного направо" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Поверните резко направо на %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Повернитесь резко направо" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "На кольцевой развязке сверните на съезд %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "На кольцевой развязке сверните на %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Сверните на кольцевую развязку" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Поднимитесь на лифте и выйдите на %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Поднимитесь на лифте" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Выполните левый разворот на %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Выполните левый разворот" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Выполните правый разворот на %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Разворот направо" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Вы также можете искать определённые места, например «Паб, Невский " +#~ "проспект» или «Гостиницы около Александерплац, Берлин»." + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Кто может видеть публикацию в Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Последняя использованная настройка. Возможные значения: EVERYONE (все), " +#~ "FRIEND_OF_FRIENDS (друзья друзей), ALL_FRIENDS (друзья) и SELF (только я)." + +#~ msgid "Everyone" +#~ msgstr "Все" + +#~ msgid "Friends of friends" +#~ msgstr "Друзья друзей" + +#~ msgid "Just friends" +#~ msgstr "Только друзья" + +#~ msgid "Just me" +#~ msgstr "Только я" + +#~ msgid "Open with another application" +#~ msgstr "Открыть в другом приложении" + +#~ msgid "Check in here" +#~ msgstr "Отметиться здесь" + +#~ msgid "Don’t have an account?" +#~ msgstr "Нет учётной записи?" + +#~ msgid "Show more information" +#~ msgstr "Показать подробную информацию" + +#~ msgid "Press enter to search" +#~ msgstr "Нажмите Enter для поиска" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Поиск маршрута с помощью OpenTripPlanner" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Не удалось найти место, чтобы поделиться в Facebook. Выберите одно из " +#~ "списка." + +#~ msgid "Add destination" +#~ msgstr "Добавить пункт назначения" + +#~ msgid "Population:" +#~ msgstr "Население:" + +#~ msgid "Altitude:" +#~ msgstr "Высота:" + +#~ msgid "Opening hours:" +#~ msgstr "Часы работы:" + +#~ msgid "Internet access:" +#~ msgstr "Доступ к Интернету:" + +#~ msgid "Toilets:" +#~ msgstr "Туалеты:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Доступ для инвалидных колясок:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "есть" + +#~ msgid "limited" +#~ msgstr "ограниченный" + +#~ msgid "no" +#~ msgstr "нет" + +#~ msgid "designated" +#~ msgstr "специализированный" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "проводной" + +#~ msgid "terminal" +#~ msgstr "терминал" + +#~ msgid "service" +#~ msgstr "служебный" + +#~ msgid "%f h" +#~ msgstr "%f ч" + +#~ msgid "%f min" +#~ msgstr "%f мин" + +#~ msgid "%f s" +#~ msgstr "%f сек" + +#~ msgid "Quit" +#~ msgstr "Завершить" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Открыть слой фигур…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Загрузить слой карты" + +#~ msgid "Open Layer" +#~ msgstr "Открыть слой" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миль" + +#~ msgid "%f ft" +#~ msgstr "%f футов" + +#~ msgid "Position not found" +#~ msgstr "Местоположение не найдено" + +#~ msgid "Country code: %s" +#~ msgstr "Код страны: %s" + +#~ msgid "Population: %s" +#~ msgstr "Население: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Доступ для инвалидных колясок: %s" + +#~| msgid "Failed to parse Geo URI" +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Не удалось разобрать файл GeoJSON" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 00000000..a2009fff --- /dev/null +++ b/po/sk.po @@ -0,0 +1,2130 @@ +# Slovak translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Dušan Kazik , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-06-13 20:00+0000\n" +"PO-Revision-Date: 2021-06-15 08:31+0200\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy prostredia GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhľadáva miesta po celom svete" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikácia Mapy vám poskytuje rýchly prístup k mapám celého sveta. Umožňuje " +"vám rýchlo nájsť miesto, ktoré hľadáte zadaním vyhľadávanej obce alebo " +"ulice, prípadne zistiť polohu, kde sa máte stretnúť s priateľom." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Aplikácia Mapy používa databázu projektu OpenStreetMap, na ktorej " +"spolupracujú stovky tisícov ľudí z celého sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Môžete vyhľadať špecifické typy umiestnení, napríklad „Hostince neďaleko " +"Hlavnej ulice, Boston“ alebo „Ubytovňa neďaleko Alexanderplatzu, Berlin“." + +#: data/org.gnome.Maps.appdata.xml.in:210 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +# desktop entry name +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:589 +msgid "Maps" +msgstr "Mapy" + +# desktop entry comment +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá aplikácia na prezeranie máp" + +# desktop enty keywords +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožní zobrazenie vášho umiestnenia na mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "naposledy zobrazené umiestnenie" + +# summary +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Súradnice naposledy zobrazeného umiestnenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "priblíženie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň priblíženia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, ktorý sa má zobraziť (pohľad ulíc, letecký pohľad, atď.)" + +# summary +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veľkosť okna" + +# description +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veľkosť okna (šírka a výška)" + +# summary +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pozícia okna" + +# description +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozícia okna (X a Y)." + +# summary +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizované okno" + +# description +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximalizovaný stav okna" + +# summary +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximálny počet výsledkov hľadania" + +# description +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximálny počet výsledkov hľadania z vyhľadávača geokódov." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávnych miest na uloženie" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených miest, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávnych trás na uloženie" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených trás, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v sieti Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v sieti Facebook. " +"Možné hodnoty sú: EVERYONE(ktokoľvek), FRIENDS_OF_FRIENDS(priatelia mojich " +"priateľov), ALL_FRIENDS(iba moji priatelia) or SELF(iba ja)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v službe Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v službe " +"Foursquare. Možné hodnoty sú: public(verejné), followers(nasledovatelia) " +"alebo private(súkromné)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Facebook priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Twitter priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Používateľské meno alebo e-mailová adresa projektu OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikuje, či sa používateľ prihlásil na úpravu údajov projektu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Naposledy použitý typ dopravy pre plánovanie trasy" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nočný režim" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Či je aplikácia v nočnom režime." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Použiť hybridné dlaždice leteckého pohľadu" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Či majú použiť dlaždice s leteckým pohľadom hybridný štýl (s menovkami)" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Viditeľnosť" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Uverejniť na Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Uverejniť na Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušiť" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "Oznámiť _polohu" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ktokoľvek" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Priatelia mojich priateľov" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Iba moji priatelia" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Iba ja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Verejné" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Nasledovatelia" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Súkromné" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtiaľto" + +# tooltip +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridať prechodný cieľ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Čo sa nachádza tu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopírovať umiestnenie" + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridať do projektu OpenStreetMap" + +# dialog title +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazenia" + +# button label +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovať" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Zahrnúť trasy a značky" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Prejde na aktuálne umiestnenie" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Vyberie typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Oddiali" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Priblíži" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Prepne plánovač trasy" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Prepne obľúbené" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Vytlačí trasu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Všeobecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazenie klávesových skratiek" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Vyhľadanie" + +# DK:tooltip +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Prepnutie plánovača trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tlač trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončenie" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvorenie hlavnej ponuky" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazenie mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Priblíženie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddialenie" + +# tooltip +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Prepnutie obľúbených" + +# DK:tooltip +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Prejdenie na aktuálne umiestnenie" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prepnutie na pohľad ulíc" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prepnutie na letecký pohľad" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobraziť menovky" + +# dialo title +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvoriť vrstvu s tvarmi…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnite lokalizačné služby, aby mohlo byť nájdené vaše umiestnenie" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušiť" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavenia umiestnenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočný režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastaviť účet projektu OpenStreetMap" + +# menu item +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovať ako obrázok" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové skratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikácii Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otvoriť hlavnú ponuku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Aplikácia Mapy je bez pripojenia!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby mohla aplikácia Mapy pracovať správne, vyžaduje sa aktívne internetové " +"pripojenie, ale žiadne nie je dostupné." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Skontrolujte vaše nastavenia pripojenia a sprostredkovateľa proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet projektu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prihláste sa na úpravu máp" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomôžte zlepšiť mapu pomocou\n" +"účtu projektu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +# button label +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prihlásiť sa" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prihlásiť sa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Prepáčte, ale toto nefungovalo. Prosím, skúste to znovu, alebo navštívte " +"webovú adresu\n" +"OpenStreetMap na obnovenie vášho hesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overovací kód sa nezhoduje. Prosím, skúste to znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadajte overovací kód zobrazený vyššie" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overiť" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prihlásený" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet projektu OpenStreetMap je aktívny." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásiť sa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Smerovacie číslo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Obec" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nič" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridanie poľa" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentár" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmeny mapy budú viditeľné na všetkých mapách, ktoré\n" +"využívajú údaje z projektu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Ďalej" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenašli sa žiadne výsledky" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Vyskytla sa chyba" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potiahnutím zmeníte poradie trasy" + +# dialog title +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvorenie umiestnenia" + +# gtkbutton +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopírovať" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Odoslať do…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Oznámiť polohu…" + +# dialo title +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvoriť" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Prepne viditeľné" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Trasa poskytovaná službou GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerár trasy verejnej dopravy je poskytovaný službami tretích strán\n" +"Projekt GNOME nemôže zaručiť správnosť zobrazeného itineráru a plánu.\n" +"Berte na vedomie, že niektorí poskytovatelia nemusia zahŕňať všetky spôsoby " +"prepravy,\n" +"napr. národný poskytovateľ nemusí zahrnúť letecké linky a miestnemu " +"poskytovateľovi\n" +"môžu chýbať regionálne vlaky.\n" +"Zobrazené názvy a značky sú považované za registrované obchodné známky, ak " +"je to nevyhnutné." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobraziť viac výsledkov" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skryje prechodné zastávky a informácie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazí prechodné zastávky a informácie" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odchod teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odchod o" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Príchod o" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobraziť" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Električky" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lietadlá" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Sprístupní umiestnenie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pridá do novej trasy" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Pokyny" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označí ako obľúbené" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Priblížením pridajte umiestnenie!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Priblížiť" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Zlyhalo nájdenie štruktúry dlaždíc v adresári" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Zlyhala analýza dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Chýbajú potrebné atribúty" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepodarilo sa nájsť prvok služby OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k štruktúre adresárov miestnych dlaždíc" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Veľkosť dlaždice pre adresár miestnych dlaždíc" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Zobrazí verziu programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorovať dostupnosť siete" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SÚBOR…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Výber účtu" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Načítavanie" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Výber miesta" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v sieti Facebook. Prosím, " +"vyberte nejaké zo zoznamu." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v službe Foursquare. Prosím, " +"vyberte nejaké zo zoznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámiť polohu %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napíšte voliteľnú správu k oznámeniu polohy %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nedá sa nájsť miesto „%s“ v sociálnej službe" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "V tejto lokalite sa nedá nájsť vhodné miesto na oznámenie" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Platnosť poverení vypršala. Prosím, otvorte Účty služieb na prihlásenie a " +"povolenie tohto účtu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu sa nič nenašlo!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Umiestnenie bolo pridané do mapy. Berte na vedomie, že jeho zobrazenie na " +"mape a vo výsledkoch vyhľadávania môže trvať nejakú dobu." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapy na mieste %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Systém súborov je iba na čítanie" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Do tohto umiestnenia nemáte oprávnenia na zápis" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Adresár neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie je určený názov súboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie je možné exportovať zobrazenie" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktuálne umiestnenie" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "neplatná súradnica" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "chyba analýzy" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "neznáma geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Požiadavka na trasu zlyhala." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenašla sa žiadna trasa." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Začiatok!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všetky súbory vrstiev" + +#: src/mainWindow.js:492 +msgid "Failed to connect to location service" +msgstr "Zlyhalo pripojenie k lokalizačnej službe" + +#: src/mainWindow.js:587 +msgid "translator-credits" +msgstr "Dušan Kazik " + +#: src/mainWindow.js:590 +msgid "A map application for GNOME" +msgstr "Aplikácia na prezeranie máp pre GNOME" + +#: src/mainWindow.js:601 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorské práva © 2011 – 2021 Red Hat, Inc. a autori aplikácie Mapy " +"prostredia GNOME" + +#: src/mainWindow.js:621 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Údaje mapy zo služby %s a jej prispievateľov" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:637 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Dlaždice mapy poskytnuté zo služby %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:666 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Vyhľadávanie poskytnuté službou %s použitím %s" + +#: src/mapView.js:492 src/mapView.js:550 +msgid "Failed to open layer" +msgstr "Zlyhalo otvorenie vrstvy" + +#: src/mapView.js:513 +msgid "Do you want to continue?" +msgstr "Chcete pokračovať?" + +#: src/mapView.js:514 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Chystáte sa otvoriť súbory s celkovou veľkosťou %s MB. Načítanie môže trvať " +"dlhšiu dobu" + +#: src/mapView.js:544 +msgid "File type is not supported" +msgstr "Typ súboru nie je podporovaný" + +#: src/mapView.js:582 +msgid "Failed to open GeoURI" +msgstr "Zlyhalo otvorenie GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nesprávne používateľské meno alebo heslo" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Úspech" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Nesprávna požiadavka" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekt sa nenašiel" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Nastal konflikt. Niekto iný práve upravil objekt" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekt bol odstránený" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta alebo relácia odkazuje na neexistujúceho potomka" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Názov" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiálny názov. Toto obvykle býva napísané na tabuliach." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:126 src/placeView.js:279 +msgid "Website" +msgstr "Webová stránka" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Toto nie je platná URL. Uistite sa, že je zahrnutá predpona http:// alebo " +"https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiálna webová stránka. Skúste použiť čo najjednoduchší tvar URL napr. " +"http://priklad.sk namiesto of http://priklad.sk/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefón" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefónne číslo. Použite medzinárodný formát, začínajúci so znakom +. Dbajte " +"na miestne zákony o ochrane súkromia, obzvlášť pri súkromných telefónnych " +"číslach." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:587 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by mal zahŕňať kód jazyka a názov článku ako „sk:Názov " +"článku“." + +#: src/osmEditDialog.js:153 src/placeView.js:307 +msgid "Opening hours" +msgstr "Otváracia doba" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Pre pomoc k formátu si prezrite odkaz v menovke." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:417 +msgid "Population" +msgstr "Obyvateľstvo" + +#: src/osmEditDialog.js:166 src/placeView.js:426 +msgid "Altitude" +msgstr "Nadmorská výška" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Stúpanie (výška nad morskou hladinou) bodu v metroch." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Bezbariérový prístup" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Áno" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Obmedzený" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Vyhradený" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Prístup na internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Drôtový" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Obsluha" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Náboženstvo" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Baháizmus" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Budhizmus" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Kresťanstvo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizmus" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Viacero náboženstiev" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganizmus" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizmus" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientológia" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizmus" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizmus" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Centralistický univerzalizmus" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidizmus" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmus" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informácie slúžiace ostatným mapovačom na informovanie o neobvyklých " +"informáciách o súčasti, účeli autora počas tvorby, alebo radách pre " +"neskoršie vylepšenia." + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridanie do projektu OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Výber typu" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:105 +msgid "Unnamed place" +msgstr "Nepomenované miesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Zlyhala analýza URI geografickej polohy" + +#: src/placeView.js:267 +msgid "Coordinates" +msgstr "Súradnice" + +#: src/placeView.js:271 +msgid "Accuracy" +msgstr "Presnosť" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:274 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Presnosť: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:293 +msgid "Phone number" +msgstr "Telefónne číslo" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:317 +msgid "Public internet access" +msgstr "Verejný prístup na internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:326 +msgid "No internet access" +msgstr "Bez prístupu na internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:334 +msgid "Public Wi-Fi" +msgstr "Verejná Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:342 +msgid "Wired internet access" +msgstr "Drôtový prístup na internet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:350 +msgid "Computers available for use" +msgstr "Dostupné počítače na použitie" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:358 +msgid "Internet assistance available" +msgstr "Dostupná pomoc s internetom" + +#: src/placeView.js:364 +msgid "No toilets available" +msgstr "Nedostupné toalety" + +#: src/placeView.js:367 +msgid "Toilets available" +msgstr "Dostupné toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:376 +msgid "Wheelchair accessible" +msgstr "Bezbariérový prístup" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:386 +msgid "Limited wheelchair accessibility" +msgstr "Obmedzený bezbariérový prístup" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:395 +msgid "Not wheelchair accessible" +msgstr "Bez bezbariérového prístupu" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:405 +msgid "Designated for wheelchair users" +msgstr "Navrhnuté pre vozíčkarov" + +#: src/placeView.js:432 +msgid "Religion:" +msgstr "Náboženstvo:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Miesto sa nenašlo v projekte OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Súradnice v URL nie sú platné" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL nie je podporovaná" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s po %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítavajú sa dlaždice mapy na vytlačenie" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tlač môžete prerušiť, ak toto trvá príliš dlho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prerušiť tlač" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridá cez umiestnenie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstráni cez umiestnenie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obráti trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridať obec %s do aplikácie %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Zlyhalo otvorenie URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otvoriť pomocou %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "zlyhalo načítanie súboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerár poskytnutý zo služby %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začiatok z adresy %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začiatok" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chôdza %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Príchod na adresu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Príchod" + +# tooltip +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazí pokyny pre chôdzu" + +# tooltip +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skryje pokyny pre chôdzu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načítať skoršie alternatívy" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načítať neskoršie alternatívy" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenašli sa žiadne skoršie alternatívy." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenašli sa žiadne neskoršie alternatívy." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Pre túto trasu sa nenašli žiadne údaje cestovného poriadku." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Pre túto trasu sa nenašiel žiadny poskytovateľ." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodín" +msgstr[1] "%s hodina" +msgstr[2] "%s hodiny" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hodín" +msgstr[1] "%s:%s hodina" +msgstr[2] "%s:%s hodiny" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Nonstop" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od východu slnka po západ slnka" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Každý deň" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Štátne sviatky" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Školské prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zatvorené" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Neznáma" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Presná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje posledný príchod" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Odbočte doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Odbočte doľava" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Odbočte mierne doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Odbočte mierne doľava" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Odbočte ostro doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Odbočte ostro doľava" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Odbočte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Odbočte doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Odbočte mierne doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Odbočte mierne doprava" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Odbočte ostro doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Odbočte ostro doprava" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Na kruhovom objazde použite %s. výjazd" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Na kruhovom objazde použite výjazd na %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Vojdite do kruhového objazdu" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použite výťah a vstúpte na %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Použite výťah" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Otočte sa doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Otočte sa doľava" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Otočte sa doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Otočte sa doprava" + +# tooltip +#~ msgid "Check in here" +#~ msgstr "Oznámi túto polohu" + +# tooltip +#~ msgid "Show more information" +#~ msgstr "Zobrazí viac informácií" + +#~ msgid "Population:" +#~ msgstr "Obyvateľstvo:" + +#~ msgid "Altitude:" +#~ msgstr "Nadmorská výška:" + +#~ msgid "Opening hours:" +#~ msgstr "Otváracia doba:" + +#~ msgid "Internet access:" +#~ msgstr "Prístup na internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toalety:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Bezbariérový prístup:" + +#~ msgid "Phone:" +#~ msgstr "Telefón:" + +#~ msgid "yes" +#~ msgstr "áno" + +#~ msgid "limited" +#~ msgstr "obmedzený" + +#~ msgid "no" +#~ msgstr "nie" + +#~ msgid "designated" +#~ msgstr "vyhradený" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL projektu OpenStreetMap nie je platná" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "drôtový" + +#~ msgid "terminal" +#~ msgstr "terminál" + +#~ msgid "service" +#~ msgstr "obsluha" + +# tooltip +#~ msgid "Find a Route" +#~ msgstr "Nájsť trasu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemáte účet?" + +#~ msgid "Add destination" +#~ msgstr "Pridať cieľ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Trasa poskytovaná službou OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Ukončiť" + +# tooltip +#~ msgid "Open with another application" +#~ msgstr "Otvorí pomocou inej aplikácie" + +#~ msgid "Press enter to search" +#~ msgstr "Stlačte enter na vyhľadanie" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvoriť vrstvu s tvarmi…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Načítať mapovú vrstvu" + +#~ msgid "Open Layer" +#~ msgstr "Otvorenie vrstvy" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Pozícia sa nenašla" + +#~ msgid "Wlan" +#~ msgstr "WiFi" + +#~ msgid "wlan" +#~ msgstr "wifi" + +#~ msgid "Country code: %s" +#~ msgstr "Kód krajiny: %s" + +#~ msgid "Population: %s" +#~ msgstr "Obyvateľstvo: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Bezbariérový prístup: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Zlyhala analýza súboru GeoJSON" + +#~ msgid "Copy Geo URI" +#~ msgstr "Skopírovať URI geografickej polohy" + +#~ msgid "_Share" +#~ msgstr "_Sprístupniť" + +# summary +#~ msgid "Last known location and accuracy" +#~ msgstr "Posledná známa poloha a presnosť" + +# description +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Posledné známa poloha (zemepisná šírka a zemepisná dĺžka v stupňoch) a " +#~ "presnosť (v metroch)." + +# description +#~ msgid "Description of last known location of user." +#~ msgstr "Popis poslednej známej polohy používateľa." + +# summary +#~ msgid "User set last known location" +#~ msgstr "Používateľ nastavil poslednú známu polohu" + +# description +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Určuje, či bola posledná známa poloha ručne nastavená používateľom." + +#~ msgid "I’m here!" +#~ msgstr "Tu sa nachádzam!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 00000000..78d59631 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,2171 @@ +# Slovenian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Martin Srebotnjak , 2013–2015. +# Matej Urbančič , 2015–2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-29 20:39+0000\n" +"PO-Revision-Date: 2021-08-30 21:04+0200\n" +"Last-Translator: Matej Urbančič \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Zemljevidi GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Iskanje mesta po svetu" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Program omogoča hiter dostop do zemljevidov sveta. Omogoča hitro iskanje " +"mest in ulic, različnih javnih prostorov, ki jih je nujno treba obiskati, " +"ali mesta zmenka s prijatelji." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Program uporablja podatkovno zbirko OpenStreetMap, ki jo ustvarja več sto " +"tisoč posameznikov na vseh koncih sveta." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Zemljevidi" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Enostaven program za pregled zemljevidov" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Zemljevidi;karta;karte;maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Dovoli prikazovanje trenutnega mesta na zemljevidu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "zadnje gledano mesto" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate nazadnje gledanega mesta." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "približanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Raven približanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta zemljevida" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta zemljevida za prikaz (ulični, zračni ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (širina in višina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj okna (osi x in y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Povečano okno" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje razpetosti okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Največje število zadetkov iskanja" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Največje število zadetkov iskanja pri uporabi iskalnika krajev." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Število nedavnih mest za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Število nedavno obiskanih mest za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Število poti za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Število nedavno obiskanih poti za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavitve zasebnosti objav Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Foursquare. Dovoljene " +"vrednosti so: javno, spremljevalci, zasebno." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Povezovanje objav Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Facebook." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Povezovanje objav Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave na Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Twitter." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Elektronski naslov oziroma uporabniško ime OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Kaže, ali je uporabnik prijavljen za urejanje podatkov OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Nazadnje uporabljena vrsta transporta za vodenje" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nočni način" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Ali naj bo vmesnik programa zagnan v nočnem načinu" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Uporabi hibridne zračne sličice" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Ali naj bo pri prikazu zračnega pogleda uporabljen hibridni slog (z " +"oznakami)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Vidnost" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Objavi na Twitterju" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Prekliči" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Vstopi" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Spremljevalci" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Zasebno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Pot od tu" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj vmesni cilj" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Pot do tu" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kaj je to?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj mesto" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Objavi na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pogled izvoza" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvozi" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Vključi pot in oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Trenutna vrsta zemljevida" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Oddalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Približaj" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Natisni pot" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Priljubljene poti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Načrtovanje poti" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Splošno" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Pokaže tipkovne bližnjice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Omogoči iskanje" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Preklopi načrtovalnik poti" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Natisne pot" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Konča program" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Odpre glavni meni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pokaže pogled zemljevida" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približa pogled" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddalji pogled" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Preklopi merilo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Preklopi na ulični pogled" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Preklopi na pogled iz zraka" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Odpre plast oblike" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Odpri plast oblike …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Priklop storitev določanja trenutnega mesta za uporabo v programu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Prekliči" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavitve mesta" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočni način" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavi račun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvozi kot sliko" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programu" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Odpri glavni meni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Zemljevid ni povezan v omrežje!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Program Zemljevidi zahtevajo za pravilno delovanje dejavno internetno " +"povezavo, ki pa trenutno ni na voljo." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Preverite povezavo in nastavitve posredniškega strežnika." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Račun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijava za urejanje zemljevida" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Sodelujte pri izdelavi zemljevida\n" +"prek OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Elektronski naslov" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Geslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Vpis" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Povezovanje je spodletelo. Poskusite znova kasneje, ali pa \n" +"obiščite spletišče OpenStreetMap za ponastavitev gesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overitvena koda ni skladna. Poskusite znova." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Vpišite overitveno kodo, prikazano zgoraj:" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeno" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Račun OpenStreetMap je dejaven." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjavi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hišna številka" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštna koda" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Mesto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Opomba" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Spremembe bodo vidne na vseh zemljevidih,\n" +" ki uporabljajo podatke OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno uporabljeno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Naslednji" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ni najdenih zadetkov" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Prišlo je do napake!" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potegnite točko za spreminjanje poti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Odpri mesto" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Pošlji …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Prijava …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Odpri plast oblike" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Odpri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Preklopi vidno" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Iskanje poti s podporo GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Načrt potovanja z javnim prevozom zagotavljajo različne storitve.\n" +"Teh podatkov ni mogoče preverjati in zagotavljati pravilnosti voznih\n" +"poti in časov. Nekateri ponudniki morda ne vključujejo vseh načinov\n" +"potovanja, na primer državni ponudniki morda ne vključujejo letalskih\n" +"povezav in krajevni morda nimajo podatkov o vlakih.\n" +"Prikazana imena in blagovne znamke je treba obravnavati kot registrirane " +"znamke." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Pokaži več zadetkov" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrij vmesne postanke in podrobnosti" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Pokaži vmesne postaje in podrobnosti mest" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odhod takoj" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odhod do" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Prihod do" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Pokaži" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Avtobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaki" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna železnica" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Letala" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Objavi mesto" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaj novo pot" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Načrt poti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označi kot priljubljeno" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Približaj za dodajanje mesta!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približaj" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Določanje pravilne zgradbe v mapi je spodletelo." + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Razčlenjevanje dokumenta XML je spodletelo" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Manjkajo zahtevani atributi" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ni mogoče najti predmeta OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Pot do krajevne mape s sličicami" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Velikost sličic za krajevno mapo s sličicami" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Pokaži različico programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Prezri razpoložljivost omrežja" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA …|NASLOV URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Izbor računa" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Nalaganje" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Izbor mesta" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Foursquare. Izberite ustrezno mesto iz " +"seznama." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se v %s." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Vpišite sporočilo za objavo v %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ni mogoče najti »%s« med razpoložljivimi storitvami" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ni mogoče najti ustreznega mesta za objavo" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Poverila so potekla. Ponovna vzpostavitev računa je mogoče med nastavitvami." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu ni ničesar!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Na zemljevid je dodano mesto. Upoštevajte, da lahko traja, preden se pokaže " +"na zemljevidu in med rezultati iskanja." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "zemljevid na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sistem je le za branje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ni ustreznih dovoljenj za shranjevanje na to mesto" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mapa ne obstaja" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ime datoteke ni določeno" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ni mogoče izvoziti pogleda" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Trenutno mesto" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neveljavna koordinata" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "napaka med razčlenjevanjem" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "neznana geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Zahteva za pridobivanje poti je spodletela." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ni najdene poti." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Začetna točka!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Vse datoteke plasti" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Napaka med povezovanjem s storitvijo določevanja točke GPS" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Matej Urbančič \n" +"Martin Srebotnjak" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Program za prikaz zemljevidov za GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Avtorske pravice © 2011–2021 Red Hat, Inc. in avtorji programa Zemljevidi " +"GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke zemljevida objavljajo %s in drugi sodelujoči" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Podatke zemljevida objavlja %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Iskalnik omogoča %s z uporabo %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Odpiranje plasti je spodletelo" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Ali želite nadaljevati?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Odpreti nameravate datoteke s skupno velikostjo %s MB. Opravilo je lahko " +"dolgotrajno." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Vrsta datoteke ni podprta" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Odpiranje naslova GeoURI je spodletelo." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Uspešno zaključeno" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Slaba zahteva" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Predmeta ni mogoče najti" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Spor urejanja; ravnokar je nekdo drug spremenil isti predmet." + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Predmet je izbrisan" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Pot oziroma zveza je sklicana na neobstoječ podrejen predmet" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Ime" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Uradno ime ali naziv se običajno pojavlja na tablah." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Naslov" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Spletišče" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Naslov ni veljaven naslov URL. Preverite, ali je na začetku naslova vpisan " +"tudi http:// oziroma https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Uradna spletna stran mora biti zapisana kot osnovni naslov URL, na primer " +"http://www.primer.si in ne http://www.primer.si/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonska številka mora biti zapisana v mednarodnem zapisu (začne se s " +"+ ...) Upoštevajte tudi krajevna določila zasebnosti, še posebej za zasebne " +"telefonske številke." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Elektronski naslov" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Naslov ni veljaven naslov elektronske pošte. Preverite, ali je na začetku " +"naslova vpisana tudi predpona mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Elektronski naslov za poizvedbe, ki naj bo le naslov, namenjeni javni rabi." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedija" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Uporabljen zapis mora vključevati kodo jezika in naslov prispevka, na primer " +"»sl:Naslov prispevka«." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Odpiralni čas" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Pomoč o zapisu je na voljo na spletni povezavi." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Prebivalci" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Nadmorska višina" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska višina točke v metrih" + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Invalidom prijazno" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Omejeno" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Označeno" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetni dostop" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Žično" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Storitev" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Ponuja prevzem" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Ponuja le prevzem" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizem" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaizem" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizem" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizem" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Krščanstvo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucionizem" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizem" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizem" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judovstvo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Izberi več" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Poganstvo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizem" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizem" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizem" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizem" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizem" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Univerzalni unitarizem" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazidizem" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizem" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Stranišča" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Opomba" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podrobnosti, s katerimi lahko obvestimo druge uporabnike o neobičajnih " +"spremembah predmetov, pomembnih podatkih ali namenih za nadaljne izboljšave." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodajanje točke na OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Izbor vrste" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Končano" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Neimenovano mesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Razčlenjevanje naslova URI Geo je spodletelo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinate" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Natančnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Natančnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonska številka" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ponuja prevzem hrane in pijače" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ne ponuja prevzema hrane in pijače" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Ponuja le prevzem hrane in pijače" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Javni dostop do interneta" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ni dostopa do interneta" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Javno omrežje Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Žični dostop do interneta" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Možnost uporabe računalnika" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Možnost dostopa do Interneta" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Uporaba stranišč ni mogoča" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Možnost uporabe stranišč" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Invalidom na vozičkih prijazno" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Omejen dostop za invalidske vozičke" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ni dostopa za invalidske vozička" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Prijazno uporabnikom invalidskih vozičkov" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod morsko gladino" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Na ravni morske gladine" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Mesta na OpenStreetMap ni mogoče najti" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate v naslovu URL niso veljavne" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Podan naslov URL ni podprt" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Poteka nalaganje zemljevida za tiskanje" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tiskanje je mogoče prekiniti, če je postopek predolg" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekliči tiskanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj prek mesta" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstrani prek mesta" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni pot" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s v %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Odpiranje naslova URI je spodletelo" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Odpri s programom %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nalaganje datoteke je spodletelo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Predviden čas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Načrt potovanja objavlja %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začnite na %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začetna točka" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Hodite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Prihod k %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Prihod" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Pokaži navodila za hojo" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrij navodila za hojo" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Naloži predhodne možnosti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Naloži kasnejše možnosti" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ni predhodnih možnosti." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ni kasnejših možnosti." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Za to pot podatki o času niso na voljo." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Za to pot podatki o ponudnikih niso na voljo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuta" +msgstr[2] "%s minuti" +msgstr[3] "%s minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ur" +msgstr[1] "%s ura" +msgstr[2] "%s uri" +msgstr[3] "%s ure" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ur" +msgstr[1] "%s:%s ura" +msgstr[2] "%s:%s uri" +msgstr[3] "%s:%s ure" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "neprestano" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "od zore do mraka" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "vsak dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "javni prazniki" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "šolske počitnice" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ni odprto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Neznan položaj" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Natančen položaj" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" +msgstr[3] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" +msgstr[3] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" +msgstr[3] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta vstavek ne podpira najnovejšega prihod" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Nadaljujte po: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Nadaljujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zavijte levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Zavijte levo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Držite se leve na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Držite se leve" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zavijte ostro levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Zavijte ostro levo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zavijte desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Zavijte desno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Držite se desne na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Držite se desne" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zavijte ostro desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Zavijte ostro desno" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "V krožišču zapeljite na izvoz %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "V krožišču zapeljite na izvoz za: %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Zapeljite v krožišče" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Vstopite v dvigalo in izstopite v %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Vstopite v dvigalo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Naredite polkrožni zavoj v levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Naredite polkrožni zavoj v levo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Naredite polkrožni zavoj v desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Naredite polkrožni zavoj v desno" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Iskati je mogoče tudi posebna mesta, kot so »bari v središču Kranja« ali " +#~ "»Hotel blizu avtobusne postaje v Mariboru«." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Nastavitve zasebnosti objav na Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Nazadnje uporabljena nastavitev zasebnosti objav na Facebook. Dovoljene " +#~ "vrednosti so: vsi, prijatelji prijateljev, prijatelji ali zame." + +#~ msgid "Everyone" +#~ msgstr "Vsi" + +#~ msgid "Friends of friends" +#~ msgstr "Prijatelji prijateljev" + +#~ msgid "Just friends" +#~ msgstr "Le prijatelji" + +#~ msgid "Just me" +#~ msgstr "Le jaz" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Ni mogoče najti mesta za objavo na Facebook. Izberite ustrezno mesto iz " +#~ "seznama." + +#~ msgid "Find a Route" +#~ msgstr "Najdi pot" + +#~ msgid "Check in here" +#~ msgstr "Prijavi se tu." + +#~ msgid "Show more information" +#~ msgstr "Pokaži več podrobnosti" + +#~ msgid "Population:" +#~ msgstr "Populacija:" + +#~ msgid "Altitude:" +#~ msgstr "Nadmorska višina:" + +#~ msgid "Opening hours:" +#~ msgstr "Odpiralne ure:" + +#~ msgid "Internet access:" +#~ msgstr "Internetni dostop:" + +#~ msgid "Toilets:" +#~ msgstr "Stranišča:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Invalidom prijazno:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "omejeno" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "podpora invalidom" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Podan naslov URL OpenStreetMap ni veljaven" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "žično" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "storitev" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ali še nimate svojega računa?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Iskanje poti s OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj cilj" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Odpri z drugim programom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite vnosno tipko za iskanje" + +#~ msgid "Quit" +#~ msgstr "Izhod" + +#~ msgid "OK" +#~ msgstr "V redu" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Odpri plast oblike…" + +#~ msgid "Load Map Layer" +#~ msgstr "Naloži plast zemljevida" + +#~ msgid "Open Layer" +#~ msgstr "Odpri plast" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "" +#~ "Maps need an active internet connection to function properly, but one " +#~ "can't be found." +#~ msgstr "" +#~ "Zemljevidi potrebujejo za pravilno delovanje dejavno internetno povezavo, " +#~ "ki pa ni na voljo." + +#~ msgid "Don't have an account?" +#~ msgstr "Še nimate računa za dostop?" + +#~ msgid "The verification code didn't match, please try again." +#~ msgstr "Neveljavna koda za pooblastitev. Poskusite znova." + +#~ msgid "Cannot find \"%s\" in the social service" +#~ msgstr "Ni mogoče najti \"%s\" med razpoložljivimi storitvami" + +#~ msgid "The directory does not exists" +#~ msgstr "Ciljna mapa ne obstaja" + +#~ msgid "Setup OpenStreetMap Account" +#~ msgstr "Nastavitev računa OpenStreetMap" + +#~ msgid "Position not found" +#~ msgstr "Položaja ni mogoče določiti" + +#~ msgid "Postal code: %s" +#~ msgstr "Poštna številka: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Koda države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Populacija: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Dostop v vozičku: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zadnje znano mesto in natančnost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zadnje znano mesto (geografska širina in dolžina v stopinjah) in " +#~ "natančnost (v metrih)." + +#~ msgid "Description of last known location" +#~ msgstr "Opis zadnjega znanega mesta" + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis zadnjega znanega mesta uporabnika." + +#~ msgid "User set last known location" +#~ msgstr "Ročno nastavljeno zadnje mesto nahajanja" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ali je bilo zadnje znano mesto nastavljeno ročno." + +#~ msgid "I’m here!" +#~ msgstr "Jaz sem tu!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid "Track user location." +#~ msgstr "Sledenje gibanja uporabnika." + +#~ msgid "Map Type" +#~ msgstr "Vrsta zemljevida" + +#~ msgid "Cycling" +#~ msgstr "Kolesarjenje" + +#~ msgid "Transit" +#~ msgstr "Javni promet" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 00000000..0e68304c --- /dev/null +++ b/po/sr.po @@ -0,0 +1,2095 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2021. +# Copyright © 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Мирослав Николић , 2013—2021. +# Борисав Живановић , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-02 22:30+0200\n" +"Last-Translator: Мирослав Николић \n" +"Language-Team: српски \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Гномове карте" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Нађите места широм света" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Гномове Карте вам дају брз приступ картама широм света. Омогућава вам да " +"брзо и лако пронађете место које тражите тражећи град или улицу, или да " +"одредите место за сусрет са пријатељима." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Овај програм користи заједничку базу података „OpenStreetMap“, коју стварају " +"стотине хиљада људи широм света." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Можете чак и да потражите нека посебна места, као што су „Градски паркови у " +"Јагодини“ или „Хотели у центру Пирота“." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Гномов пројекат" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Карте" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Једноставан програм за карте" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;карте;мапе;карта;мапа;karte;mape;karta;mapa;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозвољава да се ваша локација приказује на карти." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последње погледано место" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координате последње погледаног места." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увећање" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Ниво увећања" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Врста карте" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Врста карте за приказ (улица, авионски и сл.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Величина прозора" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Величина прозора (ширина и висина)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положај прозора" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положај прозора (положено и усправно)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Увећавање прозора" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стање увећања прозора" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Највећи број резултата претраге" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Највећи број резултата претраге за претрагу геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Број скорашњих места за чување" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Број недавно посећених места за чување." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Број скорашњих путева које треба сачувати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Број скоро посећених путева које треба сачувати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Подешавање провере приватности Фејсбука" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Последње подешавање провере приватности Фејсбука. Могуће вредности су: " +"„EVERYONE“ (свако), „FRIENDS_OF_FRIENDS“ (пријатељи пријатеља), " +"„ALL_FRIENDS“ (сви пријатељи) или „SELF“ (сами)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Подешавање провере приватности Форсквера" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последње подешавање провере приватности Форсквера. Могуће вредности су: " +"„public“ (јавно), „followers“ (пратиоци) или „private“ (приватно)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Форскверова провера Фејсбуковог емитовања" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као објаву у налогу Фејсбука " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Форскверова провера Твитеровог емитовања" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као цвркут у налогу Твитера " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap корисничко име или е-адреса" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показује да ли је корисник пријављен да би могао да уређује OpenStreetMap " +"податке." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Последња врста превоза коришћена за проналажење пута" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Ноћни режим" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Да ли је програм у ноћном режиму." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Користи хибридне ваздушне плоче" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Да ли треба користити ваздушне плоче са хибридним стилом (са етикетама)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Видљивост" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Објави на Фејсбуку" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Објави на Твитеру" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Откажи" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Провери" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Свако" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Пријатељи пријатеља" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Само пријатељи" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Само ја" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Јавно" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Пратиоци" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Приватно" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Пут одавде" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додај међу-одредиште" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Пут довде" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Шта је то овде?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Умножите место" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap налог" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Извези преглед" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "И_звези" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Укључи путеве и маркере" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Идите на текуће место" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Изаберите врсту карте" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Умањи" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Увећај" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Пребаците на планирање пута" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Пребаците на омиљене" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Опште" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Приказ пречица" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Претрага" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Покретање планирања пута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Излаз" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Отвара главни изборник" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Преглед карте" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Увећавање" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Умањивање" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Подешавање увећања" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Одлазак на тренутно место" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Пребаци на поглед са улице" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Пребаци на поглед из ваздуха" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Отвори слој облика" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Прикажи етикете" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Отвори слој облика…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Укључите услуге положаја да нађете ваш положај" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Откажи" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Подешавања положаја" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Ноћни режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Подеси OpenStreetMap налог" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Извези као слику" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Пречице на _тастатури" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "О Картама" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Отвори главни изборник" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Програм је ван мреже!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Потребна је радна интернет веза да би програм исправно радио, али није " +"доступна." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Проверите вашу везу и подешавања посредника." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap налог" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Пријавите се да бисте мењали карте" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Побољшајте карту користећи\n" +"OpenStreetMap налог." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Е-адреса" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Лозинка" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Регистрација" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Пријави ме" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Нажалост, то није прорадило. Пробајте поново или посетите\n" +"OpenStreetMap да бисте опоравили вашу лозинку." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Потврдни код се не подудара, пробајте поново." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Унесите потврдни код приказан изнад" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Потврди" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Пријављен" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш OpenStreetMap налог је сада активан." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Одјави ме" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Кућни број" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштански број" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Град" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Врста" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ништа" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додај поље" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Измене на карти ће бити видљиве на свим картама\n" +"које користе податке са OpenStreetMap пројекта." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно коришћено" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Следеће" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нема резултата" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Дошло је до грешке" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Превуци да би променио редослед пута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Отвори место" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копирај" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Пошаљи у…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Провери…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Отвори слој облика" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Отвори" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Подеси видљивост" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Претрага руте Граф Хопером" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршруте јавног превоза омогућује услуга треће стране.\n" +"Гном не може јемчити за тачност приказаних маршрута и заказаних полазака.\n" +"Знајте да неки достављачи неће укључити све могуће режиме превоза,\n" +"нпр.: национални достављач података неће приказати све авио превознике а\n" +"локални достављач неће приказати регионалне возне линије.\n" +"Приказани називи и робне марке се требају сматрати регистрованим робним " +"маркама\n" +"где је то могуће." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Прикажите још резултата" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сакриј станице и податке на маршрути" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Прикажи станице и податке на маршрути" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Полази сада" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Полази у" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Долази у" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Прикажи" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Аутобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваји" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Возови" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Подземна" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Трајекти" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Авиони" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Подели место" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Додајте у нови пут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Правци" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Означите омиљеним" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Увећај за додавање локације!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Увећај" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Неуспех при тражењу структуре плочица у фасцикли" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Нисам успео да обрадим ИксМЛ документ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Недостају потребне особине" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Нисам могао да нађем ОСМ елемент" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Путања до локалне фасцикле са структуром плочица" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Величина плочица за локални директоријум плочица" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Прикажи издање програма" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Занемари доступност мреже" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Изаберите налог" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Учитавам" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Изаберите место" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Фејсбуком. Изаберите једно са списка." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Форсквером. Изаберите једно са списка." + +# Мисли се на рецепцију, хотеле. +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Пријави се у „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите изборну поруку за рецепцију „%s“." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не могу да нађем „%s“ у друштвеним услугама" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не могу да нађем одговарајуће место за пријаву на овом месту" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Уверења су истекла, отворите налоге на мрежи да се пријавите и укључите овај " +"налог" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ништа није нађено овде!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Локација је додата на карту. Знајте да ће требати мало времена пре него што " +"се појави на карти и у резултатима претраге." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Систем датотека је само за читање" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немате овлашћење да сачувате ту" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Директоријум не постоји" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Није наведено име датотеке" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не могу да извезем преглед" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Тренутни положај" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "неисправна координата" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "грешка у обрађивању" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "непозната геометрија" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Захтев пута није успео." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Нисам пронашао пут." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Крени!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Све датотеке слоја" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Нисам успео да се повежем на услугу положаја" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Мирослав Николић \n" +"Марко М. Костић \n" +"Борисав Живановић \n" +"\n" +"https://гном.срб — превод Гнома на српски језик" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Гномов програм за карте" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ауторска права © 2011 – 2021 Red Hat, Inc. и творци Гномових Карти" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Подаци о картама са платформе %s и од доприносилаца" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Плочице за карту су преузете са %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Претрагу омогућава %s помоћу %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Нисам успео да отворим слој" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Да ли желите да наставите?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Отварате датотеке сса укупном величином од %s MB. Биће потребно неко време " +"за учитавање" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Врста датотеке није подржана" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Нисам успео да отворим Гео-УРИ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Неисправно корисничко име или лозинка" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Успех" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Лош захтев" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Објекат није нађен" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Сукоб, неко други је управо изменио објекат" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Објекат је обрисан" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Пут или релација се односи на непостојеће дете" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Назив" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Званични назив. Обично назив који се налази на саобраћајним знаковима." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Веб страница" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ово није исправна адреса. Уверите се да сте укључили „http://“ или " +"„https://“." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Званична веб страница. Пробајте да унесете најосновнији облик адресе. На " +"пример: „http://primer.rs“ уместо „http://primer.rs/pocetna.html“." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Број телефона. Користите међународни формат где број почиње са плус знаком. " +"Обратите пажњу на локалне законе о заштити приватности, нарочито ако су у " +"питању приватни бројеви телефона." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Википедија" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Коришћени формат треба да садржи ознаку језика и наслов чланка. На пример: " +"„sr:Наслов чланка“." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Радно време" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Погледајте везу у етикети за више података о формату." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Становништво" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Висина" + +# Ми не морамо да пишемо "(height above sea lever)" јер сама реч „надморска висина“ описује да је у питању висина изнад мора. :) +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Надморска висина тачке у метрима." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Приступ инвалидима" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Не" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Ограничен" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Намењено" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Приступ интернету" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Бежични" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Жичани" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Интернет кафе" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Услуга" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Вероисповест" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Анимизам" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Бахаизам" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Будизам" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Каодаизам" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Хришћанство" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Конфучијанство" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Хиндуизам" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Ђаинизам" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Јудаизам" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Вишеструке вероисповести" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Паганизам" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Пастафаријанизам" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Сајентологија" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Шинтоизам" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Сикизам" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Спиритуализам" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Таоизам" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Унитарни универзализам" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Језидизам" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Зороастизам" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Тоалети" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Белешка" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Подаци за обавештавање других картографа о мање очигледним подацима о " +"елементу, намери аутора приликом стварања или о саветима за будућа побољшања." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Изабери врсту" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Неименовано место" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Неуспех при обради Гео путање" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Координате" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Тачност" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Тачност: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +#| msgid "House number" +msgid "Phone number" +msgstr "Број телефона" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Јавни приступ интернету" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +#| msgid "Internet access" +msgid "No internet access" +msgstr "Нема приступа интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Јавна бежична" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Жичани приступ интернету" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Рачунари доступни за коришћење" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Интернет испомоћ је доступна" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Нема доступних тоалета" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Тоалети су доступни" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Приступно инвалидима" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Ограничен приступ инвалидима" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Без приступа инвалидима" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Осмишљено за кориснике инвалиде" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Вероисповест:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Место није нађено на OpenStreetMap-у" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Неисправне координате у адреси" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "Адреса није подржана" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Од %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Учитавам плочице карте за штампање" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете прекинути штампање ако ово потраје" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прекини штампање" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додај преко места" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Уклони преко места" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обрни пут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додај %s на %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Нисам успео да отворим путању" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Отвори програмом %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "нисам успео да учитам датотеку" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Процењено време: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруте су преузете са %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Креће у %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Крени" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешачите %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Долази у %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Долази" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Прикажи упутства за пешачење" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сакриј упутства за пешачење" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Учитај раније алтернативе" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Учитај старије алтернативе" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Нисам успео да нађем раније алтернативе." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Нисам успео да нађем старије алтернативе." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Нема редова вожњи за ову руту." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ниједан достављач није нађен за ову руту." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" +msgstr[1] "%s минута" +msgstr[2] "%s минута" +msgstr[3] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сат" +msgstr[1] "%s сата" +msgstr[2] "%s сати" +msgstr[3] "%s сат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сат" +msgstr[1] "%s:%s сата" +msgstr[2] "%s:%s сати" +msgstr[3] "%s:%s сат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "У времену" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "Од јутра до вечери" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:149 +#| msgid "every day" +msgid "Every day" +msgstr "Сваког дана" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: src/translations.js:172 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Јавни празници" + +#: src/translations.js:174 +#| msgid "school holidays" +msgid "School holidays" +msgstr "Школски празници" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "није отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Непознато" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Тачно" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ч" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч %s м" +msgstr[1] "%s ч %s м" +msgstr[2] "%s ч %s м" +msgstr[3] "%s ч %s м" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин." +msgstr[1] "%s мин." +msgstr[2] "%s мин." +msgstr[3] "%s мин." + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s километара" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s метара" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s миља" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s стопа" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Овај прикључак не подржава последњи долазак" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Настави ка %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Настави" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Скрени лево код %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Скрени лево" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Скрени благо лево код %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Скрени благо лево" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Скрени оштро лево код %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Скрени оштро лево" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Скрени десно код %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Скрени десно" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Скрени благо десно код %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Скрени благо десно" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Скрени оштро десно код %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Скрени оштро десно" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "У кружном току, изађите %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "У кружном току, изађите код %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Идите на кружни ток" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Уђите у лифт и изађите на спрат %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Уђите у лифт" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Направите заокрет налево ка %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Направите заокрет налево" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Направите заокрет надесно ка %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Направите заокрет надесно" + +#~ msgid "Find a Route" +#~ msgstr "Нађи пут" + +#~ msgid "Check in here" +#~ msgstr "Проверите овде" + +#~ msgid "Show more information" +#~ msgstr "Прикажи још података" + +#~ msgid "Population:" +#~ msgstr "Број становника:" + +#~ msgid "Altitude:" +#~ msgstr "Висина:" + +#~ msgid "Opening hours:" +#~ msgstr "Радно време:" + +#~ msgid "Internet access:" +#~ msgstr "Приступ интернету:" + +#~ msgid "Toilets:" +#~ msgstr "Тоалети:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Приступ инвалидима:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "да" + +#~ msgid "limited" +#~ msgstr "ограничено" + +#~ msgid "no" +#~ msgstr "не" + +#~ msgid "designated" +#~ msgstr "намењено" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Неисправна OpenStreetMap адреса" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "жичани" + +#~ msgid "terminal" +#~ msgstr "интернет кафе" + +#~ msgid "service" +#~ msgstr "услуга" + +#~ msgid "Don’t have an account?" +#~ msgstr "Немате налог?" + +#~ msgid "%f h" +#~ msgstr "%f ч" + +#~ msgid "%f min" +#~ msgstr "%f мин." + +#~ msgid "%f s" +#~ msgstr "%f сек." + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Претрага руте преко Опен-Трип-Планера" + +#~ msgid "Add destination" +#~ msgstr "Додај одредиште" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Отворите другим програмом" + +#~ msgid "Press enter to search" +#~ msgstr "Притисните „унеси“ да претражите" + +#~ msgid "Quit" +#~ msgstr "Изађи" + +#~ msgid "OK" +#~ msgstr "У реду" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Отвори слој облика…" + +#~ msgid "Load Map Layer" +#~ msgstr "Учитај слој карте" + +#~ msgid "Open Layer" +#~ msgstr "Отвори слој" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f миља" + +#~ msgid "%f ft" +#~ msgstr "%f стопа" + +#~ msgid "Position not found" +#~ msgstr "Нисам пронашао положај" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Нисам успео да обрадим Гео-ЈСОН датотеку" + +#~ msgid "Country code: %s" +#~ msgstr "Шифра државе: %s" + +#~ msgid "Population: %s" +#~ msgstr "Становника: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Приступна рампа: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Последње познато место и прецизност" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Последње познато место корисника (географска ширина и дужина у степенима) " +#~ "и прецизност (у метрима)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Опис последњег познатог места корисника." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Да ли је корисник ручно подесио последње познато место." + +#~ msgid "I’m here!" +#~ msgstr "Ја сам овде!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Сателит" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 00000000..94102f39 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1712 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Miroslav Nikolić , 2013—2017. +# Borisav Živanović , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2018-02-22 22:22+0000\n" +"PO-Revision-Date: 2018-02-16 09:25+0100\n" +"Last-Translator: Marko M. Kostić \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.0.3\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Gnomove karte" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Nađite mesta širom sveta" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Gnomove Karte vam daju brz pristup kartama širom sveta. Omogućava vam da " +"brzo i lako pronađete mesto koje tražite tražeći grad ili ulicu, ili da " +"odredite mesto za susret sa prijateljima." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Ovaj program koristi zajedničku bazu podataka „OpenStreetMap“, koju stvaraju " +"stotine hiljada ljudi širom sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak i da potražite neka posebna mesta, kao što su „Gradski parkovi u " +"Jagodini“ ili „Hoteli u centru Pirota“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program za karte" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;karte;mape;karta;mapa;karte;mape;karta;mapa;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Dozvoljava da se vaša lokacija prikazuje na karti." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "poslednje pogledano mesto" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Koordinate poslednje pogledanog mesta." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Položaj prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (položeno i uspravno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Uvećavanje prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage za pretragu geokoda." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Broj skorašnjih mesta za čuvanje" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posećenih mesta za čuvanje." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Broj skorašnjih puteva koje treba sačuvati" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Broj skoro posećenih puteva koje treba sačuvati." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Podešavanje provere privatnosti Fejsbuka" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslednje podešavanje provere privatnosti Fejsbuka. Moguće vrednosti su: " +"„EVERYONE“ (svako), „FRIENDS_OF_FRIENDS“ (prijatelji prijatelja), " +"„ALL_FRIENDS“ (svi prijatelji) ili „SELF“ (sami)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Podešavanje provere privatnosti Forskvera" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslednje podešavanje provere privatnosti Forskvera. Moguće vrednosti su: " +"„public“ (javno), „followers“ (pratioci) ili „private“ (privatno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Forskverova provera Fejsbukovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao objavu u nalogu Fejsbuka " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Forskverova provera Tviterovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao cvrkut u nalogu Tvitera " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili e-adresa" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Pokazuje da li je korisnik prijavljen da bi mogao da uređuje OpenStreetMap " +"podatke." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Poslednja vrsta prevoza korišćena za pronalaženje puta" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Podesi OpenStreetMap nalog" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Prečice na _tastaturi" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Izađi" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Fejsbuku" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Tviteru" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Proveri" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svako" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo ja" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je to ovde?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Umnožite mesto" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Izvezi kao sliku" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap nalog" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Izvezi pregled" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "I_zvezi" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Uključi puteve i markere" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Opšte" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaz prečica" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pokretanje planiranja puta" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Štampaj put" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Izlaz" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pregled karte" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Uvećavanje" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Umanjivanje" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Podešavanje uvećanja" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Odlazak na trenutno mesto" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na pogled sa ulice" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na pogled iz vazduha" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj oblika" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +msgid "Open Shape Layer…" +msgstr "Otvori sloj oblika…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite usluge položaja da nađete vaš položaj" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Podešavanja položaja" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Idite na tekuće mesto" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Izaberite vrstu karte" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Zoom out" +msgstr "Umanji" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Zoom in" +msgstr "Uvećaj" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Prebacite na planiranje puta" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Prebacite na omiljene" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Štampaj put" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Program je van mreže!" + +#: ../data/ui/main-window.ui.h:17 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Potrebna je radna internet veza da bi program ispravno radio, ali nije " +"dostupna." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Proverite vašu vezu i podešavanja posrednika." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Dodajte u novi put" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Otvorite drugim programom" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Označite omiljenim" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Proverite ovde" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap nalog" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Prijavite se da biste menjali karte" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Poboljšajte kartu koristeći\n" +"OpenStreetMap nalog." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "E-adresa" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Lozinka" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Prijavi me" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "Nemate nalog?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije proradilo. Probajte ponovo ili posetite\n" +"OpenStreetMap da biste oporavili vašu lozinku." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "Potvrdni kod se ne podudara, probajte ponovo." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Unesite potvrdni kod prikazan iznad" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Potvrdi" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Prijavljen" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap nalog je sada aktivan." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Odjavi me" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Ulica" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Kućni broj" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Grad" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Vrsta" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Ništa" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Dodaj polje" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Komentar" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmene na karti će biti vidljive na svim kartama\n" +"koje koriste podatke sa OpenStreetMap projekta." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Nedavno korišćeno" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Otkaži" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sledeće" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Prikaži još podataka" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Pritisnite „unesi“ da pretražite" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "Nema rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Prevuci da bi promenio redosled puta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvorite mesto" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Otvori" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Otvori sloj oblika" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Podesi vidljivost" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Pretraga rute Graf Hoperom" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Pretraga rute preko Open-Trip-Planera" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Maršrute javnog prevoza omogućuje Gnom korišćenjem\n" +"redova vožnji nabavljenih od prevoznika ili agencija.\n" +"Ove firme i agencije se ne mogu smatrati odgovornim za prikazane rezultate.\n" +"Gnom ne može jemčiti za tačnost prikazanih maršruta i zakazanih polazaka.\n" +"Prikazani nazivi i robne marke se trebaju smatrati registrovanim robnim " +"markama\n" +"gde je to moguće." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikažite još rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Sakrij stanice i podatke na maršruti" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Prikaži stanice i podatke na maršruti" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Polazi sada" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Polazi u" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Dolazi u" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Prikaži" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Autobusi" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Tramvaji" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Vozovi" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Podzemna" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Trajekti" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutni položaj" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "U redu" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspeh pri traženju strukture pločica u fascikli" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nisam uspeo da obradim IksML dokument" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Nedostaju potrebne osobine" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Nisam mogao da nađem OSM element" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne fascikle sa strukturom pločica" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Prikaži izdanje programa" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izaberite nalog" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavam" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izaberite mesto" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Fejsbukom. Izaberite jedno sa spiska." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Forskverom. Izaberite jedno sa spiska." + +# Misli se na recepciju, hotele. +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se u „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napišite izbornu poruku za recepciju „%s“." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Došlo je do greške" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne mogu da nađem „%s“ u društvenim uslugama" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu da nađem odgovarajuće mesto za prijavu na ovom mestu" + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uverenja su istekla, otvorite naloge na mreži da se prijavite i uključite ovaj " +"nalog" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Put odavde" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Dodaj odredište" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Put dovde" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Ništa nije nađeno ovde!" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodata na kartu. Znajte da će trebati malo vremena pre nego što " +"se pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem datoteka je samo za čitanje" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate ovlašćenje da sačuvate tu" + +#: ../src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorijum ne postoji" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nije navedeno ime datoteke" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne mogu da izvezem pregled" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neispravna koordinata" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška u obrađivanju" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Zahtev puta nije uspeo." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Nisam pronašao put." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Nisam uspeo da se povežem na uslugu položaja" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "" +"Miroslav Nikolić \n" +"Marko M. Kostić \n" +"Borisav Živanović \n" +"\n" +"http://prevod.org — prevod na srpski jezik" + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Gnomov program za karte" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Pravo na kopiranje © 2011 – 2017 Red Hat, Inc. i tvorci Gnomovih Karti" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podaci o kartama sa platforme %s i od doprinosilaca" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Pločice za kartu su preuzete sa %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Nisam uspeo da otvorim sloj" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Nisam uspeo da otvorim Geo-URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Nisam uspeo da nađem ranije alternative." + +#: ../src/openTripPlanner.js:614 +msgid "No later alternatives found." +msgstr "Nisam uspeo da nađem starije alternative." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Nema redova vožnji za ovu rutu." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Uspeh" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Loš zahtev" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekat nije nađen" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, neko drugi je upravo izmenio objekat" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekat je obrisan" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Put ili relacija se odnosi na nepostojeće dete" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Zvanični naziv. Obično naziv koji se nalazi na saobraćajnim znakovima." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Veb stranica" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Zvanična veb stranica. Probajte da unesete najosnovniji oblik adrese. Na " +"primer: „http://primer.rs“ umesto „http://primer.rs/pocetna.html“." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format gde broj počinje sa plus znakom. " +"Obratite pažnju na lokalne zakone o zaštiti privatnosti, naročito ako su u " +"pitanju privatni brojevi telefona." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Vikipedija" + +#: ../src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišćeni format treba da sadrži oznaku jezika i naslov članka. Na primer: " +"„sr:Naslov članka“." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Radno vreme" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte vezu u etiketi za više podataka o formatu." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Stanovništvo" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +# Mi ne moramo da pišemo "(height above sea lever)" jer sama reč „nadmorska visina“ opisuje da je u pitanju visina iznad mora. :) +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska visina tačke u metrima." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup invalidima" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "da" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ograničen" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "namenjeno" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežični" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žičani" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Internet kafe" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Veroispovest" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizam" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Hrišćanstvo" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Konfučijanstvo" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Đainizam" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Višestruke veroispovesti" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarijanizam" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Sajentologija" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastizam" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Beleška" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podaci za obaveštavanje drugih kartografa o manje očiglednim podacima o " +"elementu, nameri autora prilikom stvaranja ili o savetima za buduća poboljšanja." + +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izaberi vrstu" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotovo" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Broj stanovnika:" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Visina:" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Radno vreme:" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Veroispovest:" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Toaleti:" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Pristup invalidima:" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefon:" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Neuspeh pri obradi Geo putanje" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "namenjeno" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavam pločice karte za štampanje" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti štampanje ako ovo potraje" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini štampanje" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +msgid "Add via location" +msgstr "Dodaj preko mesta" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +msgid "Remove via location" +msgstr "Ukloni preko mesta" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Obrni put" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Nisam uspeo da otvorim putanju" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nisam uspeo da učitam datoteku" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Procenjeno vreme: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazi u %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Dolazi" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Kreće u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +msgid "Start" +msgstr "Kreni" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Prikaži uputstva za pešačenje" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Sakrij uputstva za pešačenje" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Pešačite %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj starije alternative" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuta" +msgstr[2] "%d minuta" +msgstr[3] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sata" +msgstr[2] "%d sati" +msgstr[3] "%d sat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d sat" +msgstr[1] "%d:%02d sata" +msgstr[2] "%d:%02d sati" +msgstr[3] "%d:%02d sat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "u vremenu" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od jutra do večeri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "svakog dana" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "žičani" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "internet kafe" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f č" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min." + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f sek." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s kilometara" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s metara" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s milja" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s stopa" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milja" + +#~ msgid "%f ft" +#~ msgstr "%f stopa" + +#~ msgid "Position not found" +#~ msgstr "Nisam pronašao položaj" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nisam uspeo da obradim Geo-JSON datoteku" + +#~ msgid "Country code: %s" +#~ msgstr "Šifra države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Stanovnika: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pristupna rampa: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Poslednje poznato mesto i preciznost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Poslednje poznato mesto korisnika (geografska širina i dužina u stepenima) " +#~ "i preciznost (u metrima)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis poslednjeg poznatog mesta korisnika." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Da li je korisnik ručno podesio poslednje poznato mesto." + +#~ msgid "I’m here!" +#~ msgstr "Ja sam ovde!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..c9616db6 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,2143 @@ +# Swedish translations for gnome-maps package +# Svenska översättningar för paketet gnome-maps. +# Copyright © 2013-2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marcus Lundblad , 2013. +# Sebastian Rasmussen , 2015, 2016. +# Anders Jonsson , 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# Luna Jernberg , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-16 23:04+0200\n" +"Last-Translator: Anders Jonsson \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kartor" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Hitta platser i världen" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartor ger dig snabb tillgång till kartor över hela världen. Det låter dig " +"hitta platsen du letar efter genom att söka efter en stad eller gata eller " +"finna ett ställe att möta en vän på." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartor använder kartdatabasen OpenStreetMap, skapad genom samarbete av flera " +"hundratusentals personer över hela världen." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kartor" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ett enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartor;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillåter att din plats visas på kartan." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "senaste visade plats" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater för senast visade plats." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomnivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Karttyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen av karta att visa (vägkarta, flygfoto o.s.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fönsterstorlek" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fönsterstorlek (bredd och höjd)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fönsterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fönsterposition (X och Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fönster maximerat" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tillstånd för maximerat fönster" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximalt antal sökresultat" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximalt antal sökresultat från geocode-sökning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal senaste platser att lagra" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senast besökta platser att lagra." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal senaste rutter att lagra" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senast besökta rutter att lagra." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Sekretessinställning för Foursquare-incheckning" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Senast använda sekretessinställning för Foursquare-incheckning. Möjliga " +"värden är: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Facebook-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Twitter-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Användarnamn hos OpenStreetMap eller e-postadress" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikerar om användaren har loggat in för att redigera OpenStreetMap-data." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Senaste transporttyp för rutter" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nattläge" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Huruvida programmet är i nattläge." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Använd hybridflygfotorutor" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Huruvida flygfotorutor ska använda hybridstil (med etiketter)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Posta på Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Posta på Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Checka in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publikt" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Följare" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rutt härifrån" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lägg till mellanliggande stopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rutt hit" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Vad finns här?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiera plats" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportera vy" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportera" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inkludera rutt och markörer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Välj karttyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zooma ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zooma in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Skriv ut rutt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Slå på/av favoriter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allmänt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Visa genvägar" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Sök" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avsluta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zooma in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zooma ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Visa/dölj skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Växla till gatuvy" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Växla till flygfotovy" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Öppna formlager" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Visa etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Öppna formlager…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå på platstjänster för att hitta din plats" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Platsinställningar" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattläge" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfigurera OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportera som bild" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tangentbordsgenvägar" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kartor" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartor är frånkopplad!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartor behöver en aktiv internetanslutning för att fungera korrekt, men en " +"sådan kan ej hittas." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kontrollera din anslutning och proxyinställningar." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logga in för att redigera kartor" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjälp till att förbättra kartan via ett\n" +"OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lösenord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrera dig" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logga in" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Det fungerade tyvärr inte. Prova igen eller besök\n" +"OpenStreetMap för att återställa ditt lösenord." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifieringskoden stämde inte, prova igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Mata in verifieringskoden som visas ovan" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiera" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Inloggad" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ditt OpenStreetMap-konto är aktivt." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logga ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Postort" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lägg till fält" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartändringar kommer synas på alla kartor som använder\n" +"OpenStreetMap-data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senast använda" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Nästa" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Inga resultat hittades" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ett fel har inträffat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra för att ändra ruttens ordning" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Öppna plats" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiera" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Skicka till…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Checka in…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Öppna formlager" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Öppna" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå på/av favoriter" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruttsökning utförd av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Resväg för kollektivtrafik tillhandahålls av tredjepartstjänster.\n" +"GNOME kan inte garantera korrektheten hos resvägarna och tabellerna som " +"visas.\n" +"Observera att vissa operatörer kanske inte inkluderar alla möjliga " +"färdsätt,\n" +"t.ex. visar en nationell operatör kanske inte flyglinjer, och en lokal\n" +"operatör saknar kanske regionala tåg.\n" +"Namn och varumärken som visas anses vara registrerade varumärken då " +"tillämpligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Visa fler resultat" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Dölj mellanliggande stopp och information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Visa mellanliggande stopp och information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Åk nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Åk tidigast" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Anländ senast" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Visa" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussar" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Spårvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tåg" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Tunnelbana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Färjor" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flygplan" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Dela plats" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Lägg till ny rutt" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Vägbeskrivning" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markera som favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zooma in för att lägga till plats!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zooma in" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Misslyckades med att hitta rutstruktur i katalog" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Misslyckades med att tolka XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Saknar nödvändiga attribut" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunde inte hitta OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sökväg till en lokal katalogstruktur med kartrutor" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Rutstorlek för lokal katalog med kartrutor" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Visa programmets version" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorera nätverkets tillgänglighet" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Välj ett konto" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Läser in" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Välj en plats" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Foursquare. Välj en från " +"denna lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Checka in på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv ett valfritt meddelande för att checka in på %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan inte hitta ”%s” i den sociala tjänsten" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan inte hitta en lämplig plats att checka in på denna plats" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Inloggningsuppgifterna har gått ut, öppna Nätkonton för att logga in och " +"aktivera detta konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting hittades här!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Plats lades till på kartan, observera att det kan ta ett tag innan det syns " +"på kartan och bland sökresultaten." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartor vid %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet är skrivskyddat" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har inte rättigheter att spara där" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen existerar inte" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Inget filnamn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ej exportera vy" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktuell plats" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ogiltig koordinat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "tolkningsfel" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "okänd geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ruttbegäran misslyckades." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Hittade ingen rutt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Starta!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alla lagerfiler" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Misslyckades att ansluta till platstjänst" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Marcus Lundblad \n" +"Anders Jonsson \n" +"Luna Jernberg \n" +"Skicka synpunkter på översättningen till\n" +"." + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Ett kartprogram för GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. och upphovsmännen för GNOME Maps" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata från %s och bidragsgivare" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartrutor tillhandahållna av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Sökning tillhandahålls av %s med %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Misslyckades med att öppna lager" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Vill du fortsätta?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Du håller på att öppna filer med en total storlek på %s MB. Dessa kan ta " +"lite tid att läsa in" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Filtypen stöds inte" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Misslyckades med att öppna GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Framgång" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Felaktig begäran" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt hittades ej" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, någon annan har precis modifierat objektet" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektet har tagits bort" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Väg eller relation refererar till obefintliga barn" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Namn" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officiella namnet. Detta är typiskt vad som visas på skyltar." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adress" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webbplats" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Det här är inte en giltig URL. Se till att inkludera http:// eller https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officiella webbplatsen. Försök att använda den mest grundläggande formen " +"för en URL, d.v.s. http://example.com istället för http://example.com/index." +"html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Använd det internationella formatet som börjar med ett " +"plustecken. Var uppmärksam på lokala sekretesslagar, speciellt för privata " +"telefonnummer." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-post" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Det här är inte en giltig e-postadress. Se till att inte inkludera mailto:-" +"protokollprefixet." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontakt-e-postadress för förfrågningar. Se till att endast lägga till e-" +"postadresser som är avsedda att användas offentligt." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet som används bör inkludera språkkoden och artikeltiteln, t.ex. ”sv:" +"Artikelns titel”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Öppettider" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Se länken i etiketten för hjälp om formatet." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Folkmängd" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Höjd över havet" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höjd (höjd över havet) för en plats i meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Åtkomst för rullstol" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Begränsad" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Avsett för" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetåtkomst" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Trådlöst" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Tjänst" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Hämtmat" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Endast" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Cao đai" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianism" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judendom" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Flera religioner" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaristisk universalism" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Anteckning" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information som används för att informera andra karterare om icke uppenbar " +"information om ett element, personens avsikt då det skapades, eller tips på " +"hur det kan förbättras ytterligare." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Välj typ" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Klar" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Namnlös plats" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Misslyckades med att tolka geo-URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Noggrannhet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Noggrannhet: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Erbjuder hämtmat" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Erbjuder inte hämtmat" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Erbjuder endast hämtmat" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Öppen internetåtkomst" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ingen internetåtkomst" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Öppet Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Trådbunden internetåtkomst" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Datorer tillgängliga för användning" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internethjälp tillgänglig" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Inga toaletter tillgängliga" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toaletter tillgängliga" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Rullstolsanpassat" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Begränsad rullstolsanpassning" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Inte rullstolsanpassat" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Designat för rullstolsburna" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s under havsnivå" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Vid havsnivå" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Platsen hittades inte i OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaterna i URL:en är felaktiga" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL:en stöds inte" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Från %s till %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Läser in kartrutor för utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryta utskriften om detta tar för lång tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lägg till position att passera" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ta bort position att passera" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vänd rutt" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lägg till %s till %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Misslyckades med att öppna URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Öppna med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "misslyckades med att läsa in fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Uppskattad tid: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Resvägar tillhandahållna av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starta från %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Starta" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Anländ vid %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Anländ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Visa gånginstruktioner" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Dölj gånginstruktioner" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Läs in tidigare alternativ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Läs in senare alternativ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Inga tidigare alternativ hittades." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Inga senare alternativ hittades." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Inga tidtabellsdata hittades för denna rutt." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen operatör hittades för denna rutt." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s timme" +msgstr[1] "%s timmar" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s timme" +msgstr[1] "%s:%s timmar" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Dygnet runt" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Från soluppgång till solnedgång" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Varje dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Allmänna helgdagar" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Skollov" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "inte öppen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Okänd" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exakt" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s fot" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Denna insticksmodul stöder inte senaste ankomsttid" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsätt på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsätt" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sväng vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sväng vänster" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sväng svagt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sväng svagt vänster" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sväng kraftigt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sväng kraftigt vänster" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sväng höger på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sväng höger" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sväng svagt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sväng svagt höger" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sväng kraftigt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sväng kraftigt höger" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Ta avfart %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Ta avfart till %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Ta rondellen" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta hissen och stig av på %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ta hissen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Gör en u-sväng åt vänster in på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Gör en u-sväng åt vänster" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Gör en u-sväng åt höger in på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Gör en u-sväng åt höger" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Sekretessinställning för Facebook-incheckning" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Senaste använda sekretessinställning för Facebook-incheckning. Möjliga " +#~ "värden är: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS eller SELF." + +#~ msgid "Everyone" +#~ msgstr "Alla" + +#~ msgid "Friends of friends" +#~ msgstr "Vänners vänner" + +#~ msgid "Just friends" +#~ msgstr "Bara vänner" + +#~ msgid "Just me" +#~ msgstr "Bara jag" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kartor kan inte hitta platsen att checka in på med Facebook. Välj en från " +#~ "denna lista." + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Du kan till och med söka efter specifika platser såsom ”Pub nära " +#~ "Drottninggatan, Stockholm” eller ”Hotell vid Alexanderplatz, Berlin”." + +#~ msgid "Find a Route" +#~ msgstr "Hitta en rutt" + +#~ msgid "Check in here" +#~ msgstr "Checka in här" + +#~ msgid "Show more information" +#~ msgstr "Visa fler resultat" + +#~ msgid "Population:" +#~ msgstr "Folkmängd:" + +#~ msgid "Altitude:" +#~ msgstr "Höjd över havet:" + +#~ msgid "Opening hours:" +#~ msgstr "Öppettider:" + +#~ msgid "Internet access:" +#~ msgstr "Internetåtkomst:" + +#~ msgid "Toilets:" +#~ msgstr "Toaletter:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Åtkomst för rullstol:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begränsad" + +#~ msgid "no" +#~ msgstr "nej" + +#~ msgid "designated" +#~ msgstr "avsett för" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL:en är felaktig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "trådbunden" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "tjänst" + +#~ msgid "Primary menu" +#~ msgstr "Primär meny" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du inte ett konto?" + +#~ msgid "%f h" +#~ msgstr "%f tim" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lägg till destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruttsökning utförd av OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Öppna med annat program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryck på retur för att söka" + +#~ msgid "Quit" +#~ msgstr "Avsluta" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Öppna formlager…" + +#~ msgid "Load Map Layer" +#~ msgstr "Läs in kartlager" + +#~ msgid "Open Layer" +#~ msgstr "Öppna lager" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f engelska mil" + +#~ msgid "%f ft" +#~ msgstr "%f fot" + +#~ msgid "Position not found" +#~ msgstr "Plats hittades ej" + +#~ msgid "Country code: %s" +#~ msgstr "Landskod: %s" + +#~ msgid "Population: %s" +#~ msgstr "Folkmängd: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Åtkomst för rullstol: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Misslyckades med att tolka GeoJSON-fil" + +#~ msgid "Export to PNG" +#~ msgstr "Exportera till PNG" + +#~ msgid "_Share" +#~ msgstr "_Dela" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Senast kända plats och noggrannhet" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Senast kända plats (latitud och longitud i grader) och noggrannhet (i " +#~ "meter)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Beskrivning av senast kända plats för användaren." + +#~ msgid "User set last known location" +#~ msgstr "Användaren angav senast kända plats." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Huruvida senast kända plats angavs manuellt av användaren." + +#~ msgid "I’m here!" +#~ msgstr "Jag är här!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Till" + +#~ msgid "From" +#~ msgstr "Från" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satellit" diff --git a/po/ta.po b/po/ta.po new file mode 100644 index 00000000..67a3716c --- /dev/null +++ b/po/ta.po @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# அருள்ராஜன் அ லை , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-26 10:29+0000\n" +"PO-Revision-Date: 2013-10-27 09:31+0530\n" +"Last-Translator: அருள்ராஜன் அ லை \n" +"Language-Team: தமிழ் <>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "வரைபடங்கள்" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ஓர் எளிய வரைபட பயன்பாடு" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "வரைபடங்கள்;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "சாளர அளவு" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "சாளர அளவு (அகலம் மற்றும் உயரம்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "சாளர அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "சாளர அமைவிடம் (X மற்றும் Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "சாளரம் பெரிதாக்கப்பட்டது" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "சாளரம் பெரிதாக்கப்பட்ட நிலை." + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் மற்றும் துல்லியம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"கடைசியாகத் தெரிந்த அமைவிடம்(அட்சரேகை மற்றும் தீர்க்கரேகை பாகைகளில்) மற்றும் துல்லியம்" +"(மீட்டரில்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "கடைசியாகத் தெரிந்த அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "கடைசியாகத் தெரிந்த பயனரின் அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "புவிக்குறீயீடு மூலமான தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "கடைசியாக அமைக்கப்பட்ட பயனர் அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் பயனரால் அமைக்கப்பட்டதா?" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "இதைப் பற்றி" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "வெளியேறு" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "இங்கு உள்ளதென்ன?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "நான் இங்குள்ளேன்!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "translator-credits" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME-க்கான வரைபட பயன்பாடு" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "தெரு" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "செயற்கைக்கோள்" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "தெரியாதது" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "மிகச்சரியான" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " கிமீ²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"அமைவிடத்தின் துல்லியம்: %s" diff --git a/po/te.po b/po/te.po new file mode 100644 index 00000000..57f7f07f --- /dev/null +++ b/po/te.po @@ -0,0 +1,188 @@ +# Telugu translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Praveen Illa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-03-21 07:58+0000\n" +"PO-Revision-Date: 2014-03-21 22:26+0530\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"పటాలు మీకు ప్రపంచవ్యాప్తంగా ఉన్న పటాలకు శీఘ్రంగా ప్రాప్యతను కల్పిస్తుంది. ఒక నగరం లేదా వీధి, లేదా ఒక " +"స్నేహితుడు కలుసుకునే ప్రదేశాన్ని ప్రవేశపెట్టి వెదకడం ద్వారా మీరు వెతుకుతున్న ప్రదేశాన్ని త్వరగా కనుగొనడంలో " +"సహకరిస్తుంది." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • దేశము, ప్రాంతము, పట్టణం లేదా వీధి కోసం వెతకండి.
  • నిర్దిష్ట స్థానముల కోసం వెతకండి, " +"“Theatres near RTC X Roads, Hyderabad” లేదా “Wi-Fi Access near Ameerpet, " +"Hyderabad” వంటివి.
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"పటాలు ప్రపంచవ్యాప్తంగా వేలమంది వ్యక్తుల సహకారంతో తయారుచేయబడిన ఓపెన్‌స్ట్రీట్‌మ్యాప్ డేటాబేసును వినియోగిస్తుంది." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:55 +#: ../src/mainWindow.js:300 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "పటాలు" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ఒక సరళ పటముల అనువర్తనం" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "పటాలు;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "కిటికీ పరిమాణం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "కిటికీ పరిమాణం (వెడల్పు మరియు ఎత్తు)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "కిటికీ స్థానము" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "కిటికీ స్థానము (X మరియు Y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "కిటికీ పెద్దగా చేయబడింది" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "కిటికీ పెద్దగా చేయబడిన స్థితి" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "చివరిగా తెలిసిన స్థానము మరియు ఖచ్ఛితత్వం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "చివరిగా తెలిసిన స్థానము (అక్షాంశము, రేఖాంశము డిగ్రీలలో) మరియు ఖచ్ఛితత్వం (మీటర్లలో)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "చివరిగా తెలిసిన స్థానము యొక్క వివరణ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "చివరిగా తెలిసిన స్థాన వాడుకరి యొక్క వివరణ." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "జియోకోడ్ శోధన నుండి గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "చివరిగా తెలిసిన స్థానమును వాడుకరి అమర్చు" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "చివరిగా తెలిసిన స్థానమును మానవీయంగా వాడుకరి అమర్చాలా వద్దా." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "భద్రపరుచాల్సిన ఇటీవలి ప్రదేశాల సంఖ్య." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "భద్రపరుచాల్సిన ఇటీవలి సందర్శించిన ప్రదేశాల సంఖ్య." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "గురించి" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "నిష్క్రమించు" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ఇక్కడ ఏమి ఉంది?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "ఇక్కడ ఉన్నాను!" + +#: ../src/mainWindow.js:298 +msgid "translator-credits" +msgstr "Praveen Illa , 2013, 2014." + +#: ../src/mainWindow.js:301 +msgid "A map application for GNOME" +msgstr "గ్నోమ్ కొరకు రూపొందించిన పటము అనువర్తనం" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "వీధి" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ఉపగ్రహం" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:164 +msgid "Unknown" +msgstr "తెలియదు" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:167 +msgid "Exact" +msgstr "ఖచ్ఛితం" + +#: ../src/mapLocation.js:177 +msgid " km2" +msgstr " కిమీ2" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +#, javascript-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"స్థానము ఖచ్ఛితత్వం: %s" + +#~ msgid " km²" +#~ msgstr "కిమీ²" diff --git a/po/tg.po b/po/tg.po new file mode 100644 index 00000000..b11d4eee --- /dev/null +++ b/po/tg.po @@ -0,0 +1,678 @@ +# Tajik translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Victor Ibragimov , 2013, 2014, 2015 +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-03-16 19:54+0000\n" +"PO-Revision-Date: 2015-03-17 09:59+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Харитаҳо барои шумо ба тамоми ҳаритаҳои ҷаҳон имкони дастраси зуд медиҳад. " +"Ин барнома ба шумо инчунин имкон медиҳад, ки тавонед шаҳр ё кӯчаи " +"мехостагиро ёфт кунед ё барои бо дӯстон фохӯрдан маконро муайян кунед." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Харитаҳо пойгоҳи иттилоотии OpenStreetMap-ро, ки бо миллионҳо одам аз тамоми " +"ҷаҳон ташкил шудааст, истифода мебарад." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Шумо ҳатто метавонед навъи маконҳои махсусро, монанди “Қаҳвахонаҳо дар назди " +"хиёбони Рудакӣ” ё “Меҳмонхонаҳо дар назди хиёбони Рудакӣ, Душанбе” ҷустуҷӯ " +"кунед." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:367 +msgid "Maps" +msgstr "Харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Барномаи оддии харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Харитаҳо;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Андозаи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Андозаи равзана (бар ва баландӣ)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Мавқеи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Мавқеи равзана (X ва Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Равзана дар ҳадди аксар" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Вазъияти ҳадди акcаpёбии равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ аз ҷустуҷӯи рамзи ҷуғрофӣ." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Миқдори маконҳои охирин барои нигоҳ доштан" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Миқдори маконҳои кушодашудаи охирин барои нигоҳ доштан." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Facebook. Қиматҳои " +"имконпазир: ҲАР ЯК КАС, ДӮСТОНИ_ДӮСТОН, ҲАМАИ_ДӮСТОН ё ХУД." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Foursquare. Қиматҳои " +"имконпазир: иҷтимоӣ, пайравон ё махфият." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Пахшкунии бақайдгирии Facebook дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Facebook-и марбут ба ҳисоби Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Пахшкунии бақайдгирии Twitter дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Twitter-и марбут ба ҳисоби Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Дар бораи барнома" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Хуруҷ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Қобили намоиш" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Интишор дар Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Интишор дар Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Бақайдгирӣ" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Ҳар як кас" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Дӯстони дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Танҳо дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Танҳо ман" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Ҷамъиятӣ" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Пайравон" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Махфӣ" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Дар он ҷо чист?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Барои ёфтани ҷойгиршавии худ, хидматҳои ҷойгиршавиро фаъол кунед" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Танзимоти ҷойгиршавӣ" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Гузариш ба ҷойгиршавии ҷорӣ" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Интихоби намуди харита" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Фаъолсозии нақшакаши масирҳо" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Фаъолсозии баргузидаҳо" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Харитаҳо дар офлайн мебошанд!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Барои кори комил ба Харитаҳо пайвасти интернети фаъол лозим аст, вале " +"пайваст ёфт нашуд." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Танзимоти прокси ва пайвасти худро санҷед." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Илова кардан ба масири нав" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Кушодан бо барномаи дигар" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Қайд кардан ҳамчун баргузида" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Инҷо ба қайд гиред" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Барои ҷустуҷӯ Enter-ро пахш кунед" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Кушодани ҷойгиршавӣ" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Кушодан" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Ҷустуҷӯи масир тавассути GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намоиш додани натиҷаҳи дигар" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Ҷойгиршавии ҷорӣ" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Саҳеҳӣ: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:136 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "\"%s\" дар хидмати иҷтимоӣ ёфт нашуд" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Барои бақайдгирии ин макон, ҷои мувофиқ ёфт нашуд" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Муҳлати маълумоти корбар ба анҷом расид, лутфан барои ворид шудан ва фаъол " +"кардани ин ҳисоб, ба Ҳисобҳои онлайн ворид шавед" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Хато ба амал омад" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Ҳисоберо интихоб кунед" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Дар ҳоли боргирӣ" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Маконеро интихоб кунед" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Facebook ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Foursquare ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Check in to %s" +msgstr "Бақайдгирӣ ба %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Барои бақайдгирӣ ба %s, паёми интихобиро нависед." + +#: ../src/mainWindow.js:315 +msgid "Failed to connect to location service" +msgstr "Пайваст ба хидмати ҷойгиршавӣ иҷро нашуд" + +#: ../src/mainWindow.js:320 +msgid "Position not found" +msgstr "Мавқеъ ёфт нашуд" + +#: ../src/mainWindow.js:365 +msgid "translator-credits" +msgstr "Victor Ibragimov, victor.ibragimov@gmail.com" + +#: ../src/mainWindow.js:368 +msgid "A map application for GNOME" +msgstr "Барномаи харитаҳо барои GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "ҳа" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "маҳдуд" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "муайяншуда" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Ягон масир ёфт нашуд" + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Дархости масир қатъ шуд." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Оғоз!" + +#: ../src/placeBubble.js:102 +#, javascript-format +msgid "Postal code: %s" +msgstr "Рамзи почта: %s" + +#: ../src/placeBubble.js:104 +#, javascript-format +msgid "Country code: %s" +msgstr "Рамзи кишвар: %s" + +#: ../src/placeBubble.js:113 +#, javascript-format +msgid "Population: %s" +msgstr "Аҳолӣ: %s" + +#: ../src/placeBubble.js:116 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Соатҳои кушоиш: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Дастрасӣ бо аробаи маъюбӣ: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Вақти тахминӣ: %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "дар гирди соат" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "аз тулӯъ то шафақ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "ҳар рӯз" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "идҳои ҷамъиятӣ" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "идҳои мактабӣ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "кушода нест" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Номаълум" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Дақиқ" + +#: ../src/utils.js:355 +#, javascript-format +msgid "%f h" +msgstr "%f соат" + +#: ../src/utils.js:357 +#, javascript-format +msgid "%f min" +msgstr "%f дақиқа" + +#: ../src/utils.js:359 +#, javascript-format +msgid "%f s" +msgstr "%f сония" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +#, javascript-format +msgid "%f km" +msgstr "%f км" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +#, javascript-format +msgid "%f m" +msgstr "%f м" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +#, javascript-format +msgid "%f mi" +msgstr "%f мил" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +#, javascript-format +msgid "%f ft" +msgstr "%f фут" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Ҷойгиршавии охирин ва дақиқӣ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Ҷойгиршавии охирин (арз ва тӯл дар дараҷаҳо) ва дақиқӣ (дар метрҳо)." + +#~ msgid "Description of last known location" +#~ msgstr "Тавсифи ҷойгиршавии охирин" + +#~ msgid "Description of last known location of user." +#~ msgstr "Тавсифи ҷойгиршавии охирини корбар." + +#~ msgid "User set last known location" +#~ msgstr "Ҷойгиршавии охирини таъиншудаи корбар" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Интихоби ҷойгиршавии охирини муайяншуда ба таври дастӣ аз ҷониби корбар." + +#~ msgid "I’m here!" +#~ msgstr "Ман дар ҳамон ҷоям!" + +#~ msgid "Street" +#~ msgstr "Кӯча" + +#~ msgid "Satellite" +#~ msgstr "Радиф" + +#~ msgid " km2" +#~ msgstr " км2" + +#~ msgid " km²" +#~ msgstr " км²" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 00000000..24aa30fb --- /dev/null +++ b/po/tr.po @@ -0,0 +1,2038 @@ +# Turkish translation for gnome-maps. +# Copyright (C) 2013-20212021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Gökhan Gurbetoğlu , 2014, 2015. +# Osman Karagöz , 2017. +# Çağatay Yiğit Şahin , 2017. +# Furkan Ahmet Kara , 2018. +# Muhammet Kara , 2013, 2014, 2015, 2016, 2018. +# Ahmet Elgun , 2019. +# Sabri Ünal , 2013, 2017, 2018, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-06 22:27+0300\n" +"Last-Translator: Emin Tufan Çetin \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.1\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Haritalar" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Dünya genelindeki yerleri bul" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Haritalar, dünya çapındaki haritalara hızla erişmenizi sağlar. Şehir ya da " +"sokak araması yoluyla aramakta olduğunuz yeri hızla bulmanızı veya " +"arkadaşınızla buluşacağınız yeri belirlemenizi sağlar." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Haritalar, küresel çapta yüzbinlerce insanca hazırlanan OpenStreetMap ile " +"ortak veri tabanını kullanır." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Üstelik “Kızılay, Ankara yakınındaki Lokantalar” ya da “Ulus, Ankara " +"yakınındaki Oteller” gibi belirli türde yerleri bile arayabilirsiniz." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME Projesi" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Haritalar" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Basit harita uygulaması" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Haritalar;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Konumunuzun haritada gösterilmesini sağlar." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "son görüntülenen konum" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Son görüntülenen konumun koordinatları." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "yakınlaştırma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Yakınlaştırma düzeyi" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Harita türü" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Görüntülenecek haritanın türü (sokak, uydu, vb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Pencere boyutu" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Pencere boyutu (genişlik ve yükseklik)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pencere konumu" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pencere konumu (X ve Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Pencere büyültüldüğünde" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Pencerenin büyütülme durumu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Azami arama sonucu sayısı" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode aramasından azami arama sonucu sayısı." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saklanacak son konumların sayısı" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen yerlerin sayısı." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saklanacak son rotaların sayısı" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen rotaların sayısı." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook yer bildirimi gizlilik ayarı" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Son kullanılan Facebook yer bildirimi gizlilik ayarı. Olası değerler: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare yer bildirimi gizlilik ayarı" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Son kullanılan Foursquare yer bildirimi ayarı. Olası değerler: herkese açık, " +"takipçiler veya gizli." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare yer bildirimi için Facebook yayını" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Facebook " +"hesabında gönderi olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare yer bildirimi için Twitter yayını" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Twitter " +"hesabında tweet olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap kullanıcı adı ya da e-posta adresi" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Kullanıcının OpenStreetMap verilerini düzenlemek için oturup açıp açmamış " +"olduğunu belirtir." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Yönlendirme için son kullanılan ulaşım şekli" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Gece kipi" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Uygulamanın gece kipinde olup olmadığı." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Hibrit uydu döşemelerini kullan" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Uydu döşemelerinin hibrit biçim (etiketli) kullanıp kullanmayacağı." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Görünürlük" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook’a Gönder" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter’a Gönder" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_İptal" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Yer bildirimi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Herkes" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Arkadaşların arkadaşları" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Yalnızca arkadaşlar" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Yalnızca ben" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Herkese açık" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Takipçiler" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Gizli" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Buradan rota" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ara durak ekle" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Buraya rota" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Burada ne var?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Konumu Kopyala" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Görünümü dışa aktar" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Dışa _Aktar" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Rota ve imleçleri içer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Harita türü seç" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Uzaklaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Yakınlaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Gözdeleri aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Rotayı Yazdır" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Genel" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Kısayolları göster" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ara" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Rotayı yazdır" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Çıkış" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Harita Görünümü" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Yakınlaş" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uzaklaş" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ölçeği değiştir" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Sokak görünümüne geç" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Kuş bakışı görünüme geç" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Biçim katmanını aç" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etiketleri Göster" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Biçim Katmanını Aç…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Konumunuzu bulmak için konum hizmetlerini etkinleştirin" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "İptal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Konum Ayarları" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gece Kipi" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Hesabını Ayarla" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Resim Olarak Dışarıya Aktar" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Haritalar Hakkında" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Haritalar çevrim dışı!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Haritaların çalışması için kullanılabilir internet bağlantısı gerekli, ancak " +"bağlantı yok." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Bağlantı ve vekil sunucu ayarlarınızı denetleyin." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Hesabı" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Haritaları düzenlemek için oturum " +"açın" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap hesabı kullanarak\n" +"haritayı iyileştirmeye yardım edin." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-posta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parola" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Kaydol" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Oturum Aç" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Üzgünüm, işe yaramadı. Lütfen yeniden deneyin ya da parolanızı sıfırlamak " +"için\n" +"OpenStreetMap’i ziyaret edin." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Doğrulama kodu eşleşmedi, lütfen yeniden deneyin." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Yukarıda gösterilen doğrulama kodunu girin" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Doğrula" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Oturum Açıldı" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap hesabınız etkin." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Oturumu Kapat" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Cadde/Sokak" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Bina numarası" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta kodu" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Şehir" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tür" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Yok" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Alan Ekle" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Yorum" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Harita değişiklikleri, OpenStreetMap verilerini\n" +"kullanan tüm haritalarda görünür olacaktır." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Sok Kullanılan" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "İleri" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hiçbir sonuç bulunamadı" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Hata oluştu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Rota sıralamasını değiştirmek için sürükle" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Konum Aç" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopyala" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Gönder…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Yer Bildirimi…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Biçim Katmanını Aç" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Aç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Görünürlüğü aç/kapat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper ile rota arama" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Toplu taşımada rota yönergeleri üçüncü taraf hizmetleri tarafından " +"sağlanır.\n" +"GNOME gösterilen rota yönergelerinin ve çizelgelerin doğruluğunu garanti " +"edemez.\n" +"Bazı sağlayıcıların var olan tüm taşıma kiplerini içermeyebileceğini " +"unutmayın; \n" +"ör. ulusal bir sağlayıcı havayollarını içermeyebilir ve yerel bir sağlayıcı " +"bölgesel trenleri kaçırabilir.\n" +"Adlar ve markalar uygulanabilir olduğunda tescilli marka olarak " +"değerlendirilmelidir." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Daha çok sonuç göster" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ara durakları ve bilgiyi gizle" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ara durakları ve bilgiyi göster" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Şimdi Çık" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "İtibaren Çık" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Öncesinde Var" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Göster" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Otobüsler" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaylar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenler" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrolar" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feribotlar" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Uçaklar" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Konum paylaş" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Yeni rotaya ekle" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Yönergeler" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Gözde olarak imle" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Konum eklemek için yakınlaştırın!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Yakınlaştır" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Dizinde döşeme yapısı bulunamadı" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML belgesini ayrıştırma başarısız" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Gerekli öznitelikler eksik" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ögesi bulunamadı" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Yerel döşeme dizini yapısını barındıran yol" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Yerel döşeme dizini için döşeme boyutu" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Programın sürümünü göster" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ağ uygunluğunu göz ardı et" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DOSYA…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Hesap seç" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Yükleniyor" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Yer seç" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Haritalar Facebook ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Haritalar Foursquare ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s için yer bildiriminde bulun" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s’den yer bildiriminde bulunmak için isteğe bağlı ileti girin." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Sosyal hizmette “%s” bulunamıyor" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Bu konumda yer bildirimi yapılabilecek uygun yer bulunamıyor" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Oturumun süresi doldu, giriş yapıp bu hesabı etkinleştirmek için lütfen " +"Çevrim İçi Hesapları açın" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Burada bir şey bulunamadı!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Konum haritaya eklendi, arama sonuçlarında haritada gösterilmesi biraz zaman " +"alabilir." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f konumunda haritalar.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosya sistemi salt okunur" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oraya kaydetmek için gerekli izniniz yok" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Dizin yok" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Dosya adı belirtilmedi" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Görüntü aktarılamıyor" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Geçerli Konum" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "geçersiz koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ayrıştırma hatası" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "bilinmeyen geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Rota isteği başarısız oldu." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Hiçbir rota bulunamadı." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Başla!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tüm Katman Dosyaları" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Konum hizmetine bağlanma başarısız oldu" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Muhammet Kara \n" +"Emin Tufan Çetin \n" +"Gökhan Gurbetoğlu \n" +"Osman Karagöz \n" +"Çağatay Yiğit Şahin \n" +"Furkan Ahmet Kara \n" +"Ahmet Elgun \n" +"Sabri Ünal " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "GNOME için harita uygulaması" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Telif Hakkı © 2011 – 2021 Red Hat, Inc. ve GNOME Haritalar yazarları" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s ve katkıcılar tarafından harita verisi" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Harita döşemeleri %s tarafından sağlanmıştır" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Arama %s tarafından %s kullanılarak sağlanmıştır" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Katman açma başarısız oldu" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Sürdürmek ister misiniz?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Toplam boyutu %s MB olan dosyaları açmak üzeresiniz. Bunun yüklenmesi biraz " +"sürebilir" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Dosya türü desteklenmiyor" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI açma başarısız" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Hatalı kullanıcı adı veya parola" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Başarılı" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Geçersiz istek" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Nesne bulunamadı" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Çakışma; nesneyi az önce başkası değiştirdi" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Nesne silindi" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Yol ya da ilişki, var olmayan alt nesneye başvuruyor" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Ad" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Resmi ad. Genellikle tabelalarda yer alan addır." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Web sitesi" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Bu geçerli bir URL değil. http:// veya https:// içerdiğinden emin olun." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Resmi web sitesi. URL adresinin en temel halini kullanmaya çalışın. Örn. " +"http://ornek.com/index.html yerine http://ornek.com." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefon numarası. + imiyle başlayan uluslararası biçimi kullanın. Özellikle " +"kişisel telefon numaraları konusunda, yerel kişisel gizlilik yasalarına " +"dikkat edin." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Vikipedi" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Kullanılan biçim, dil kodu ve makale başlığı içermeli “tr:Makale başlığı” " +"gibi." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Açılış saatleri" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Biçimdeki yardım için etiketteki bağlantıyı gör." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Nüfus" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Yükseklik" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Bir noktanın metre türünden yükseltisi (deniz seviyesinden yüksekliği)." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Tekerlekli sandalye erişimi" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Evet" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Hayır" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Sınırlı" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Belirlenmiş" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "İnternet erişimi" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Kablosuz" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Kablolu" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Hizmet" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Din" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahâîlik" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Budizm" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Hristiyanlık" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfüçyüsçülük" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Caynizm" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Musevilik" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "İslam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Çoklu Dinler" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganizm" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafaryanizm" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Şinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sihizm" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Ruhiyatçılık" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoculuk" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Üniteryen Üniversalizm" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yezidilik" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianizm" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Tuvaletler" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Not" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Bir ögeyle ilgili bariz olmayan bilgiler, yazarın onu yaratırkenki niyeti " +"veya ileriki geliştirmeler için ipuçlarıyla ilgili diğer haritacıları " +"bilgilendirmek için kullanılan bilgiler." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Tür Seç" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Bitti" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Adsız yer" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI ayrıştırma başarısız" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinatlar" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Doğruluk" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Doğruluk: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefon numarası" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Halka açık internet erişimi" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "İnternet erişimi yok" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Halka açık Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Kablolu internet erişimi" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Kullanıma hazır bilgisayar var" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "İnternet desteği var" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Tuvalet yok" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Tuvalet var" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Tekerlekli sandalye erişimli" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Kısıtlı tekerlekli sandalye erişimi" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Tekerlekli sandalye erişimi yok" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Tekerlekli sandalye kullanıcılarına göre tasarlanmış" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Din:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Yer OpenStreetMap’te bulunamadı" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URLdeki koordinatlar geçersiz" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL desteklenmiyor" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s’ten %s’e" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Harita parçası yazmak için yükleniyor" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Eğer bu uzun zaman alırsa yazdırmaktan vazgeçebilirsiniz" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Yazdırmayı iptal et" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ara konum ekle" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ara konumu kaldır" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rotayı tersine çevir" + +# ilk s şehir, ikinci s uygulama +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s şehrini %s uygulamasına ekle" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI açma başarısız oldu" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s ile aç" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "dosya yükleme başarısız" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tahmini süre: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rota yönergelerini %s sağlamıştır" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s’te başla" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Başla" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s yürü" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s’te var" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Var" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Yürüme yönergelerini göster" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Yürüme yönergelerini gizle" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Daha erken alternatifleri yükle" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Daha geç alternatifleri yükle" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Daha erken alternatif bulunamadı." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Daha geç alternatif bulunamadı." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Bu rota için tarife verisi bulunamadı." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Bu rota için sağlayıcı bulunamadı." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s dakika" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s saat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s saat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Gün boyu" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Gün doğumundan gün batımına" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Her gün" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Resmi tatiller" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Okul tatilleri" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "açık değil" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Bilinmiyor" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Tam" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s s" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s s %s dak" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s dak" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sn" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Bu uzantı son varışı desteklemiyor" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s üstünde devam et" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Devam et" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s üstünde sola dön" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sola dön" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s üstünde hafifçe sola dön" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sola hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s üstünde sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s üstünde sağa dön" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sağa dön" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s üstünde hafifçe sağa dön" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sağa hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s üstünde sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dönel kavşakta %s. çıkışa gidin" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dönel kavşakta %s. çıkıştan çıkın" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Dönel kavşağı kullanın" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Asansörü kullanın ve %s. katta inin" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Asansörü kullanın" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s üstünde sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s üstünde sağa u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Sağa u dönüşü yapın" + +#~ msgid "Find a Route" +#~ msgstr "Rota Bul" + +#~ msgid "Check in here" +#~ msgstr "Buradan yer bildirimi yap" + +#~ msgid "Show more information" +#~ msgstr "Daha çok bilgi göster" + +#~ msgid "Population:" +#~ msgstr "Nüfus:" + +#~ msgid "Altitude:" +#~ msgstr "Rakım:" + +#~ msgid "Opening hours:" +#~ msgstr "Açılış saatleri:" + +#~ msgid "Internet access:" +#~ msgstr "İnternet erişimi:" + +#~ msgid "Toilets:" +#~ msgstr "Tuvaletler:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Tekerlekli sandalye erişimi:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "evet" + +#~ msgid "limited" +#~ msgstr "sınırlı" + +#~ msgid "no" +#~ msgstr "hayır" + +#~ msgid "designated" +#~ msgstr "özel olarak belirlenmiş" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URLsi geçersiz" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kablolu" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "hizmet" + +#~ msgid "Primary menu" +#~ msgstr "Ana menü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Hesabınız yok mu?" + +#~ msgid "%f h" +#~ msgstr "%f sa" + +#~ msgid "%f min" +#~ msgstr "%f dk" + +#~ msgid "%f s" +#~ msgstr "%f sn" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner ile rota arama" + +#~ msgid "Add destination" +#~ msgstr "Hedef ekle" + +#~ msgid "Open with another application" +#~ msgstr "Başka bir uygulamayla birlikte aç" + +#~ msgid "Press enter to search" +#~ msgstr "Aramak için Enter’a basın" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Çıkış" + +#~ msgid "OK" +#~ msgstr "Tamam" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Şekil Katmanını Aç…" + +#~ msgid "Load Map Layer" +#~ msgstr "Harita Katmanı Yükle" + +#~ msgid "Open Layer" +#~ msgstr "Katman Aç" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON dosya ayrıştırması başarısız" + +#~ msgid "Country code: %s" +#~ msgstr "Ülke kodu: %s" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 00000000..798c019f --- /dev/null +++ b/po/uk.po @@ -0,0 +1,2034 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Daniel Korostil , 2013, 2014, 2015, 2016, 2017. +# Yuri Chornoivan , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 09:38+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 20.12.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карти GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Знаходити місця по світу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карти надають швидкий доступ до карт по всьому світу. Вони дозволяють швидко " +"знайти місце, яке ви шукаєте, через пошук міста, вулиці, ба визначити місце " +"для зустрічі з друзями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карти використовують колективну базу даних OpenStreetMap, яку роблять тисячі " +"осіб по всій планеті." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Проєкт GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Проста програма для роботи з картами" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карти;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозволити вашому перебуванню показуватись на карті." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "останнє переглянуте місце" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координати останнього переглянутого місця." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштаб" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабування" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Тип карти" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карти, яку слід показати (вулиці, супутникова тощо)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Розмір вікна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Розмір вікна (ширина і висота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положення вікна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положення вікна (X і Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Вікно розгорнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стан розгорнутого вікна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальна кількість пошукових результатів" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальна кількість пошукових результатів з пошуку geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Кількість недавно відвіданих місць, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Кількість недавно відвіданих місць, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Кількість недавніх маршрутів, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Кількість недавно відвіданих маршрутів, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Параметри конфіденційності Foursquare щодо відзначення" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Останній використаний параметр конфіденційності Foursquare щодо відзначення. " +"Допустимі значення: public, followers або private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Транслювання відзначення Foursquare через Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Facebook, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Транслювання відзначення Foursquare через Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Twitter, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Користувач або поштова скринька у OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показує, чи користувач увійшов у систему OpenStreetMap для редагування даних." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Останній використаний тип транспорту для побудови маршрутів" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Нічний режим" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Чи програма в нічному режимі." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Використовувати гібридні супутникові плитки" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Чи слід використовувати гібридний стиль (із мітками) для супутникових плиток." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Видимість" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Допис на Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Допис на Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Скасувати" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Від_значитись" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Відкрито" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Послідовники" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Особисто" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут звідси" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додати проміжний пункт маршруту" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюди" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Що тут?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копіювати місцевість" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Експортувати перегляд" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Експортувати" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Врахувати маршрут і помітки" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Вибрати тип карти" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Зменшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Збільшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Надрукувати маршрут" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Змінити улюблені" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Загальне" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показати клавіатурні скорочення" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Пошук" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Вийти" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Перегляд карти" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Наблизити" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Віддалити" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Перемкнути шкалу" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Перемкнутися на перегляд вулиць" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Перемкнутися на супутниковий перегляд" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Відкрити шар форм" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Показувати мітки" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Відкрити шар форм…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Увімкнути службу розташування для знаходження місцевості" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Скасувати" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметри розташування" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Нічний режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Відкрити обліковий запис у OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Експортувати як зображення" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Клавіатурні скорочення" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Про «Карти»" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Карти поза мережею!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карти потребують з'єднання з інтернетом, щоб повноцінно працювати, але його " +"немає." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Перевірте зв'язок і параметри проксі." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Обліковий запис OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Увійти, щоб редагувати карту" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Допоможіть покращити карту через\n" +"обліковий запис OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Зареєструватися" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Увійти" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Вибачте, не виконалось. Спробуйте ще раз, або відвідайте\n" +"OpenStreetMap, щоб оновити пароль." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Код звіряння не збігається, спробуйте ще раз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Введіть код звіряння, що показано вище" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Перевірити" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Увійшли" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш обліковий запис OpenStreetMap активовано." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Вийти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Вулиця" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер будинку" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштовий індекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Місто" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Немає" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додати поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Зміни в карті будуть видимі для карт, що використовують\n" +"дані з OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно вжите" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Далі" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нічого не знайдено" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Трапилась помилка" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перенесіть, щоб змінити порядок маршруту" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Відкрити місце" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копіювати" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Надіслати…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Відзначитися…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Відкрити шар форм" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Відкрити" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Перемкнути видимість" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Пошук маршрутів через GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Дані путівника для громадського транспорту надано сторонніми службами.\n" +"GNOME не може гарантувати правильність показаних маршрутів і розкладів.\n" +"Зауважте, що деякі надавачі даних можуть не включати усі можливі варіанти\n" +"пересування. Наприклад, національний оператор громадського транспорту може\n" +"не включати дані перельотів літаком, а надавач даних громадського " +"транспорту\n" +"у місті — даних регіональної залізниці.\n" +"Показані назви і торгові марки є зареєстрованими знаками, якщо це може їх " +"стосуватися." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "показати більше результатів" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сховати проміжні зупинки та відомості" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показати проміжні зупинки та відомості" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Уже їде" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Їде через" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибуває за" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показувати" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваї" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Потяги" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Пороми" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Літаки" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Оприлюднити місце" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Додати новий маршрут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Напрямки" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Зазначити як улюблене" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Наблизьтесь, щоб додати місцевість!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Збільшити" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не вдалося знайти плиткову структуру в каталозі" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не вдалося розібрати документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Бракує потрібних атрибутів" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Неможливо знайти елемент OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Шлях до локального каталогу зі структурою плиток " + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Розмір плитки для каталогу локальних плиток" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Показати версію програми" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ігнорувати доступність мережі" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|АДРЕСА]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Виберіть обліковий запис" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Завантаження" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Виберіть місце" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Foursquare. Виберіть " +"щось зі списку." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Відзначитись на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишіть довільне повідомлення, щоб відзначитись на %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Неможливо знайти «%s» в соціальних службах" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Неможливо знайти зручне місце, щоб відзначити цю місцевість" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Реєстраційні дані застаріли, відкрийте Мережеві облікові записи, щоб увійти " +"та ввімкнути цей обліковий запис" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Тут нічого немає!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Місцевість додано на карту, майте на увазі, що це може забрати трохи часу " +"перед тим, як воно буде показано на карті й у результатах пошуку." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта для %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлова система тільки для читання" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немає прав, щоб зберігати там" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не існує" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не вказано назви файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Неможливо експортувати перегляд" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Поточне місце" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неправильна координата" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "помилка розбирання" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "невідома геометрія" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Невдалий запит маршруту." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Не знайдено жодного маршруту." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Нумо!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Усі файли шарів" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Не вдалося з'єднатись зі службою розташування" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Daniel Korostil " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Карти для GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "© Red Hat, Inc. та розробники «Карт» GNOME, 2011–2021" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Дані карт надано %s та учасниками проєкту" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Блоки карти надано %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Послуги з пошуку надано %s, використовуємо %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Не вдалося відкрити шар" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Продовжити?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Ви маєте намір відкрити файли, загальний розмір яких дорівнює %s МБ. Процес " +"завантаження цих файлів може бути досить тривалим." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Тип файла не підтримується" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Не вдалося відкрити GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Хибний користувач або пароль" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Успіх" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Поганий запит" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Об'єкт не знайдено" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфлікт, хтось інший щойно змінив об'єкт" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Об'єкт вилучено" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Спосіб або відношення не стосується чогось явного" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Назва" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Офіційна назва. Це зазвичай перше, що потрапляє на очі." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ця адреса є некоректною. Переконайтеся, що адреса починається з http:// або " +"https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Офіційний сайт. Намагайтесь використовувати найосновнішу форму посилання, " +"наприклад, http://example.com замість http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефону. Використовуйте міжнародний формат, який починається з знаку " +"плюса (+). Будь обачні з місцевим законами щодо конфіденційності, особливо " +"особистими номерами." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Ел. пошта" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ця адреса електронної пошти є некоректною. Не використовуйте префікс " +"протоколу mailto:." + +#: src/osmEditDialog.js:161 +#| msgid "" +#| "Contact e-mail address for inquiries.Add only email addresses that are " +#| "intended to be publicly used." +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Адреса електронної пошти для довідкової інформації. Додавайте лише адреси, " +"які призначено для загального доступу." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Формат слід містити код мови і назву статті, як-от «uk:Назва статті»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Робочий час" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Довідку щодо формату можна знати за посилання у мітці." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Населення" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Висота" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Висота (над рівнем моря) у метрах." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Доступ для возиків" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Так" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ні" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Обмежено" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Вказано" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Доступ до інтернету" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Дріт" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Термінал" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Служба" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Перекусна" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Лише" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Релігія" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анімізм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаїзм" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Християнство" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуціанство" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Індуїзм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнізм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Юдаїзм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Іслам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Мультиконфесійність" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Язичництво" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафаріанство" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Сайнтологія" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Сінтоїзм" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхізм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спіритуалізм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унітарний універсалізм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Єзидизм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Туалети" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Примітка" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Запис інформації використовується для надання іншим творцям карти " +"неочевидних відомостей щодо елемента карти, мети його створення або підказок " +"щодо подальшого поліпшення." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Виберіть тип" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Зроблено" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Місце без назви" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Не вдалося розібрати геопосилання" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координати" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Точність" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точність: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Номер телефону" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Пропонує попоїсти" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Не пропонує попоїсти" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Пропонує лише попоїсти" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Громадський доступ до інтернету" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Немає доступу до інтернету" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Громадський Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Дротовий доступ до інтернету" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Є доступ до комп'ютерів" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Доступна інтернет-допомога" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Немає туалетів" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Є туалети" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Доступне для візків" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Обмежена доступність для візків" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Недоступне для візків" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Позначено для користувачів візків" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s під рівнем моря" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "На рівні моря" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Релігія:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Місце не знайдено на OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Координати у адресі є некоректними" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Підтримки адреси не передбачено" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "З %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Завантаження плиток карти для друкування" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете скасувати друкування, якщо це надто довго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Скасувати друкування" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додати проміжне місце" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Влучити проміжне місце" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Зворотній маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додати %s до %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Не вдалося відкрити посилання" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Відкрити через %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "не вдалося завантажити файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Розрахунковий час: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршрути надано %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Відправляється з %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Нумо" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Прогулянка %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибуває до %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Прибуває" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показати піші варіанти" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сховати піші варіанти" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Завантажити попередні альтернативи" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Завантажити подальші альтернативи" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Раніших альтернатив не знайдено." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Пізніших альтернатив не знайдено." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Немає даних про цей маршрут." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Для цього маршруту не знайдено надавачів даних." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s хвилина" +msgstr[1] "%s хвилини" +msgstr[2] "%s хвилин" +msgstr[3] "%s хвилина" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s година" +msgstr[1] "%s години" +msgstr[2] "%s годин" +msgstr[3] "%s година" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s година" +msgstr[1] "%s:%s години" +msgstr[2] "%s:%s годин" +msgstr[3] "%s:%s година" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Цілодобово" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Від світанку до заходу" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Щодня" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Святкові дні" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Шкільні канікули" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "не відкрито" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Невідомо" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Уточнити" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s год" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s год %s хв" +msgstr[1] "%s год %s хв" +msgstr[2] "%s год %s хв" +msgstr[3] "%s год %s хв" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s хв" +msgstr[1] "%s хв" +msgstr[2] "%s хв" +msgstr[3] "%s хв" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s ми" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s фт" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" +"У цьому додатку не передбачено підтримки визначення найпізнішого прибуття" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Продовжуйте на %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Продовжуйте" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверніть ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверніть трохи ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Поверніть трохи ліворуч" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверніть строго ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Різко поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверніть трохи праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Поверніть трохи праворуч" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Різко поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Різко поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "На розвороті виберіть виїзд %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "На розвороті виберіть виїзд до %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "В'їжджайте на розворот" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Увійдіть до ліфта і вийдіть на %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Увійдіть до ліфта" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Виконайте лівий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Виконайте лівий розворот" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Виконайте правий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Виконайте правий розворот" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Параметри конфіденційності Facebook щодо відзначення" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Останній використаний параметр конфіденційності Facebook щодо " +#~ "відзначення. Допустимі значення: EVERYONE, FRIENDS_OF_FRIENDS, " +#~ "ALL_FRIENDS або SELF." + +#~ msgid "Everyone" +#~ msgstr "Усім" + +#~ msgid "Friends of friends" +#~ msgstr "Друзям друзів" + +#~ msgid "Just friends" +#~ msgstr "Тільки друзям" + +#~ msgid "Just me" +#~ msgstr "Лише собі" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Картами неможливо знайти місце, щоб відзначитись через Facebook. Виберіть " +#~ "щось зі списку." + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Можете навіть шукати спеціальні місця, як-от «Паби біля головної вулиці, " +#~ "Бостон» або «Готелі біля Александерплац, Берлін»." + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Адреса OpenStreetMap є некоректною" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Знайти маршрут" + +#~ msgid "Check in here" +#~ msgstr "Відзначитись тут" + +#~ msgid "Show more information" +#~ msgstr "Докладніше" + +#~ msgid "Population:" +#~ msgstr "Населення:" + +#~ msgid "Altitude:" +#~ msgstr "Висота:" + +#~ msgid "Opening hours:" +#~ msgstr "Робочий час:" + +#~ msgid "Internet access:" +#~ msgstr "Доступ до інтернету:" + +#~ msgid "Toilets:" +#~ msgstr "Туалети:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Доступ для возиків:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "так" + +#~ msgid "limited" +#~ msgstr "обмежено" + +#~ msgid "no" +#~ msgstr "ні" + +#~ msgid "designated" +#~ msgstr "визначено" + +#~ msgid "wired" +#~ msgstr "дріт" + +#~ msgid "terminal" +#~ msgstr "термінал" + +#~ msgid "service" +#~ msgstr "служба" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 00000000..eae9be99 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,1996 @@ +# Vietnamese translations for Maps package +# Bản dịch Tiếng Việt dành cho gói Maps. +# This file is distributed under the same license as the Maps package. +# Trần Ngọc Quân , 2016, 2017, 2018, 2019, 2021. +# Antoine Đỗ , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-10 21:07+0000\n" +"PO-Revision-Date: 2021-03-12 15:20+0700\n" +"Last-Translator: Trần Ngọc Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Bản đồ GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Tìm các địa điểm trên khắp thế giới" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps giúp bạn truy cập bản đồ trên toàn thế giới. Nó cho phép bạn nhanh " +"chóng tìm đến chỗ mà bạn đang tìm bằng cách tìm thành phố hay đường, hoặc vị " +"trí địa điểm để gặp mặt bạn bè." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps dùng cơ sở dữ liệu OpenStreetMap cộng tác, được tạo bởi hàng trăm ngàn " +"người trên toàn cầu." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Bạn thậm chí còn có thể chỉ định kiểu của địa điểm như là “Pubs near Main " +"Street, Boston” hay “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Dự án GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Bản đồ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ứng dụng bản đồ đơn giản" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Bản đồ;Ban do;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Cho phép vị trí của bạn được hiển thị trên bản đồ." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "vị trí xem cuối cùng" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Tọa độ của vị trí xem cuối cùng." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "thu phóng" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mức độ phóng to" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Loại bản đồ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Loại bản đồ để hiển thị (đường phố, trên không, v.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Kích thước cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Kích thước cửa sổ (rộng và cao)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vị trí cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vị trí cửa sổ (X và Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Cửa sổ phóng to" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Cửa sổ ở trạng thái phóng to hết cỡ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Số kết quả tìm kiếm tối đa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Số kết quả tìm kiếm tối đa từ việc tìm kiếm geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Số lượng nơi chốn mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Số lượng nơi chốn mới thăm được lưu." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Số lượng đường đi mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Số lượng đường đi mới đi được lưu." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Cài đặt riêng tư check-in Facebook lần cuối. Giá trị có thể là: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS hay SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Cài đặt riêng tư check-in Foursquare lần cuối. Giá trị có thể là: public, " +"followers hay private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in quảng bá Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một bài viết trên tài " +"khoản Facebook tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in quảng bá Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một tweet trên tài khoản " +"Twitter tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Tên tài khoản OpenStreetMap hay địa chỉ thư điện tử" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Biểu thị nếu người dùng đã đăng nhập vào sửa dữ liệu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Kiểu phương tiện vận tải dùng cuối cùng để tìm đường" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Chế độ ban đêm" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Cho dù ứng dụng đang ở chế độ ban đêm." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Sử dụng gạch trên không kết hợp" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Cho dù gạch trên không nên sử dụng kiểu lai (có nhãn)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Thấy" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Gửi lên Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Gửi lên Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "T_hôi" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "_Ghi danh" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Mọi người" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Bạn của bạn" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Chỉ bạn" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Chỉ tôi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Công khai" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Theo dõi" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Riêng tư" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Đường đi từ đây" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Thêm điểm đến trung gian" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Đường đi đến đây" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Đây là đâu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Chép vị trí" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Xuất phần hiển thị" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Xuất" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Bao gồm đường đi và người tạo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Chọn kiểu bản đồ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Thu nhỏ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Phóng to" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Chuyển đến chỗ đánh dấu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Chung" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Hiện phím tắt" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Tìm kiếm" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Thoát" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Mở trình đơn chính" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Xem bản đồ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Phóng to" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Thu nhỏ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bật/tắt thước đo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Chuyển sang xem đường phố" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Chuyển sang xem từ trên trời" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Mở lớp hình dạng" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Hiển thị Nhãn" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Mở lớp hình dạng…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Bật dịch vụ vị trí để tìm vị trí của bạn" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Thôi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Cài đặt vị trí" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Chế độ Ban đêm" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Cài đặt tài khoản OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Xuất ra Ảnh" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Phím tắt" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Giới thiệu Bản đồ" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Mở menu chính" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Bản đồ đang ngoại tuyến!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Bản đồ cần được kết nối mạng internet để các chức năng một cách đúng đắn, " +"nhưng không tìm thấy kết nối mạng nào." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kiểm tra lại kết nối và cài đặt ủy nhiệm của bạn." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Tài khoản OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Đăng nhập để chỉnh sửa bản đồ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Giúp đỡ cải tiến bản đồ bằng cách dùng\n" +"một tài khoản OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Thư điện tử" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mật khẩu" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Đăng ký" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Đăng nhập" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Rất tiếc, nó không làm việc. Vui lòng thử lại, hoặc truy cập\n" +"OpenStreetMap để đặt lại tài khoản của bạn." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Mã xác nhận không khớp, vui lòng thử lại." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Nhập vào mã xác nhận hiện ở trên" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Xác nhận" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Đã đăng nhập" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Tài khoản OpenStreetMap của bạn đang hoạt động." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Đăng xuất" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Đường" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Số nhà" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Mã vùng" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Thành phố" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Kiểu" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Không" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Thêm trường" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Chú thích" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Các thay đổi bản đồ sẽ nhìn thấy trên mọi bản đồ mà\n" +"nó dùng dữ liệu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Vừa dùng" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Tiếp theo" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Không tìm thấy kết quả nào" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Đã có lỗi xảy ra" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Kéo thả để thay đổi thứ tự của đường đi" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Mở Vị trí" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Sao chép" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Gửi Đến…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Mở lớp hình dạng" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Mở" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Bật/tắt nhìn thấy" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Tìm kiếm đường đi bằng GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Hành trình định tuyến đường cho phương tiện công cộng do bên thứ ba cung " +"cấp\n" +"các dịch vụ.\n" +"GNOME không thể đảm bảo tính chính xác của các hành trình và lịch trình được " +"hiển thị.\n" +"Lưu ý rằng một số nhà cung cấp có thể không bao gồm tất cả các phương thức " +"vận chuyển hiện có,\n" +"ví dụ, nhà cung cấp nội địa có thể không bao gồm các hãng hàng không, và nhà " +"cung cấp địa phương có thể\n" +"thiếu các chuyến tàu trong khu vực.\n" +"Tên và nhãn hiệu hiển thị sẽ được coi là nhãn hiệu đã đăng ký khi áp dụng." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Hiện thêm các kết quả" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ẩn các điểm dừng và thông tin trung gian" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Hiển thị các điểm dừng và thông tin trung gian" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Khởi hành ngay" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Khởi hành bằng" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tới bằng" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Hiện" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Xe buýt" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Xe điện" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Xe lửa" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Xe điện ngầm" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Phà" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Máy bay" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Chia sẻ vị trí" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Thêm đường đi mới" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Hướng" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Đánh dấu là hay dùng" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Phóng to vào vị trí thêm!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Phóng to" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gặp lỗi khi tìm cấu trúc lát gạch trong thư mục" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gặp lỗi khi phân tích cú pháp XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Thiếu các thuộc tính cần thiết" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Không thể tìm thấy phần tử OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Một đường dẫn đến cấu trúc thư mục lát gạch" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Kích thước ô cho thư mục ô cục bộ" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Hiển thị phiên bản của chương trình" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Bỏ qua tính khả dụng của mạng" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[TẬP TIN… | URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Chọn tài khoản" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Đang tải" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Chọn một địa điểm" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Facebook. Vui lòng chọn một " +"cái từ danh sách này." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Foursquare. Vui lòng chọn " +"một cái từ danh sách này." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in vào %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ghi một lời nhắn tùy chọn để check in vào %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Không thể tìm thấy “%s” trong dịch vụ xã hội" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Không thể tìm thấy chỗ phù hợp để check-in vào vị trí này" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Giấy ủy nhiệm đã hết hạn, vui lòng mở Tài khoản trực tuyến để đang nhập và " +"bật tài khoản này" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Không thấy gì ở đây!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vị trí đã được thêm vào bản đồ, chú ý rằng cần chờ một thời gian trước khi " +"nó được hiển thị trên bản đồ và khi tìm kiếm sẽ có kết quả." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Bản đồ tại %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Hệ thống tập tin chỉ cho đọc" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Bạn không có đủ quyền hạn để lưu vào đây" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Thư mục không tồn tại" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Chưa xác định tên tập tin" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Không thể xuất hình vẽ" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Vị trí Hiện tại" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "tọa độ không hợp lệ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lỗi phân tích" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "không hiểu dạng hình" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Yêu cầu đường đi gặp lỗi." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Không tìm thấy lộ trình nào." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Bắt đầu!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Mọi tập tin lớp" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Gặp lỗi khi kết nối đến dịch vụ vị trí" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "Nhóm Việt hóa GNOME " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Ứng dụng bản đồ dành cho GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Bản quyền © 2011 – 2021 Red Hat, Inc. và các tác giả Bản đồ GNOME" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dữ liệu bản đồ của %s và những người đóng góp" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Tiêu đề bản đồ cung cấp bởi %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Tìm kiếm do %s cung cấp sử dụng %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Gặp lỗi khi mở lớp" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Bạn có muốn tiếp tục?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Bạn sắp mở các tập tin có tổng kích thước là %s MB. Quá trình này có thể tốn " +"thời gian để tải" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Kiểu tập tin không được hỗ trợ" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Gặp lỗi khi mở GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Tên người dùng hay mật khẩu sai" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Thành công" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Yêu cầu sai" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Không thể tìm thấy đối tượng" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Xung đột, đã có ai đó vừa sửa đối tượng" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Đối tượng đã bị xóa" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Lối hoặc quan hệ chỉ đến một con mà nó không tồn tại" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Tên" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Tên chính thức. Đây là cái thường xuất hiện trên chữ ký." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Địa chỉ" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Trang thông tin điện tử" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Đây không phải là một URL hợp lệ. Hãy chắc chắn nó bao gồm http:// hoặc " +"https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Trang thông tin điện tử chính thức. Dùng dạng thức URL cơ bản nhất ví dụ " +"http://example.com thay cho http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Điện thoại" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Số điện thoại. Dùng định dạng quốc tế, bắt đầu bằng dấu +. Hãy cẩn thận với " +"luật riêng tư địa phương, đặc biệt là các số điện thoại riêng." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Nên dùng dạng thức có bao gồm mã ngôn ngữ và tiêu đề bài viết như là ”vi:" +"Tiêu đề bài viết”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Giờ mở cửa" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Xem liên kết trong nhãn để nhận được hỗ trợ về định dạng." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Dân số" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Cao độ" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Cao độ (độ cao trên mực nước biển) của một điểm tính bằng mét." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Lối vào xe lăn" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Đồng ý" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Không" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Bị giới hạn" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Đã được thiết kế" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Truy cập mạng Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Có dây" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Thiết bị cuối" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Dịch vụ" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Tôn giáo" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Thuyết vật linh" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Phật giáo" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Đạo cao đài" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cơ đốc giáo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Khổng giáo" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Ấn Độ giáo" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Đạo Giai-na" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Đạo Do Thái" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Hồi giáo" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Đa tôn giáo" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Tà giáo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Khoa học học" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Đạo thần Nhật bản" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Đạo Sikh" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Thuyết duy linh" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Đạo Lão" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Thuyết phổ độ nhất thể" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Thầy mo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Đạo thờ lửa" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Nhà vệ sinh" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Ghi chú" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Thông tin được sử dụng để cung cấp thông tin các bản đồ khác về các thông " +"tin không-rõ-ràng về một phần tử, mục đích của tác giả khi tạo nó, hoặc gợi " +"ý cải tiến hơn nữa." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Chọn kiểu" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Xong" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Địa điểm không tên" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gặp lỗi khi phân tích Geo URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Hệ tọa độ" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Độ chính xác" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Độ chính xác: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Số điện thoại" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Kết nối mạng internet công cộng" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Không có kết nối mạng" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi công cộng" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Truy cập internet có dây" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Máy tính có sẵn để sử dụng" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Có hỗ trợ Internet" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Không có nhà vệ sinh" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Có nhà vệ sinh" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Lối vào xe lăn" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Lối vào cho xe lăn hạn chế" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Không dành cho xe lăn" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Được thiết kế cho người dùng xe lăn" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Tôn giáo:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Không tìm thấy địa điểm trong OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Tọa độ trong URL không hợp lệ" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL không được hỗ trợ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Từ %s đến %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Đang tải tựa đề bản đồ để in ấn" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Bạn có thể bãi bỏ việc in ấn nếu việc đó diễn ra quá lâu" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hủy bỏ việc in" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Thêm thông qua vị trí" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gỡ bỏ thông qua vị trí" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Đảo ngược lộ trình" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Thêm %s vào %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gặp lỗi khi mở URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Mở bằng %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "gặp lỗi khi tải tập tin" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Thời gian ước tính: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Hành trình do %s cung cấp" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Bắt đầu ở %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Bắt đầu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Đi bộ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tới lúc %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Tới" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Hiển thị chỉ dẫn đi bộ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ẩn chỉ dẫn đi bộ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Tải các lựa chọn trước" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Tải các lựa chọn sau" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Không tìm thấy lựa chọn trước nào." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Không tìm thấy lựa chọn thay thế sau nào." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Không tìm thấy dữ liệu bảng thời gian cho lộ trình này." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Không tìm thấy nhà cung cấp nào cho tuyến đường này." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s phút" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s giờ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s giờ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Suốt ngày đêm" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Từ bình minh đến khi hoàng hôn" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Hàng ngày" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Các ngày lễ" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Ngày học sinh nghỉ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "chưa mở" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Chưa biết" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Trích" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s phút" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s phút" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s dặm" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Phần bổ sung này không hỗ trợ nơi đến mới nhất" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Tiếp tục trên %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Tiếp tục" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Rẽ trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Rẽ trái" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Hơi rẽ sang trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Hơi rẽ sang trái" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Rẽ ngoặt sang trái vảo %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Rẽ ngoặt sang trái" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rẽ phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Rẽ phải" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Hơi rẽ sang phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Hơi rẽ sang phải" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Rẽ ngoặt sang phải vảo %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Rẽ ngoặt sang phải" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ở vòng xoay, đi ngã rẽ %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ở vòng xoay, đi ngã rẽ thứ %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Vào vòng xoay" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Đi thang máy và xuống ở %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Đi thang máy" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Rẽ trái để quay đầu về %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Rẽ trái để quay đầu" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Rẽ phải để quay đầu về %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Rẽ phải để quay đầu" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mở bằng ứng dụng khác" + +#~ msgid "Check in here" +#~ msgstr "Check in vào đây" + +#~ msgid "Don’t have an account?" +#~ msgstr "Không có tài khoản?" + +#~ msgid "Show more information" +#~ msgstr "Cung cấp thêm thông tin" + +#~ msgid "Press enter to search" +#~ msgstr "Bấm phím Enter để tìm kiếm" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Tìm kiếm đường đi bằng OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Thêm đích" + +#~ msgid "Population:" +#~ msgstr "Dân số:" + +#~ msgid "Altitude:" +#~ msgstr "Cao độ:" + +#~ msgid "Opening hours:" +#~ msgstr "Giờ mở cửa:" + +#~ msgid "Internet access:" +#~ msgstr "Truy cập Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Nhà vệ sinh:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Lối vào xe lăn:" + +#~ msgid "Phone:" +#~ msgstr "Điện thoại:" + +#~ msgid "yes" +#~ msgstr "có" + +#~ msgid "limited" +#~ msgstr "bị giới hạn" + +#~ msgid "no" +#~ msgstr "không" + +#~ msgid "designated" +#~ msgstr "được thiết kế" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "có dây" + +#~ msgid "terminal" +#~ msgstr "thiết bị cuối" + +#~ msgid "service" +#~ msgstr "dịch vụ" + +#~ msgid "%f h" +#~ msgstr "%f giờ" + +#~ msgid "%f min" +#~ msgstr "%f phút" + +#~ msgid "%f s" +#~ msgstr "%f giây" + +#~ msgid "Quit" +#~ msgstr "Thoát" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Mở lớp hình dạng…" + +#~ msgid "OK" +#~ msgstr "Được" + +#~ msgid "Load Map Layer" +#~ msgstr "Tải lớp bản đồ" + +#~ msgid "Open Layer" +#~ msgstr "Mở lớp" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f dặm" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..b36c69aa --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,2088 @@ +# Chinese (China) translation for gnome-maps. +# Copyright (C) 2013-2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# tuhaihe <1132321739qq@gmail.com>, 2013. +# Tong Hui , 2014. +# YunQiang Su , 2015, 2016. +# Mingcong Bai , 2015, 2016, 2017, 2018. +# 王滋涵 Zephyr Wang , 2020. +# Dingzhong Chen , 2015-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-03 15:03-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese - China \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.0\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地图" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "寻找世界各地的地点" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"地图应用帮您快速访问世界各地的地图。允许您快速定位到城市、街道或约会地点。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"地图应用使用了 OpenStreetMap 数据库,该数据库由全球成千上万的人们协同制作。" + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME 项目" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "地图" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "一款简单的地图应用程序" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地图;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允许你的位置显示在地图上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最近查看的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最近查看的位置的座标。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "缩放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "缩放级别" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地图类型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要显示的地图类型(街道、航拍等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "窗口大小" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "窗口大小(宽度和高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "窗口位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "窗口位置(水平和垂直)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "窗口最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "窗口最大化状态" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜索结果的最大数量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "来自 geocode 搜索结果的最大数量。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "存储最近地点的数量" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "存储最近拜访过地点的数量。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "存储最近路线的数量" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "存储最近使用过路线的数量。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 签到隐私设置" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 签到隐私设置。可能的值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 签到同步到 Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成消息发布到 Foursquare 已经关联的 Facebook 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 签到同步到 Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成推文发布到 Foursquare 已经关联的 Twitter 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 用户名或电子邮件地址" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示用户是否已经登录以编辑 OpenStreetMap 数据。" + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "载入用过的交通类型来规划路线" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "使用混合航拍区块" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "航拍区块是否使用混合样式(带标签)。" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "可见性" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "发到 Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "发到 Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "签到(_H)" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "公开" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "关注者" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "从此处出发的路径" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "添加途经目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "前往此处的路径" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "这是哪里?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "复制位置信息" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "导出视图" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "导出(_E)" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "包括路线和标记" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "转到当前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "选择地图类型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "缩小" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "放大" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "打印路线" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "切换喜爱" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "常规" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "显示快捷操作" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜索" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "退出" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地图视图" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "放大" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "缩小" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切换比例尺" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "转到当前位置" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切换到街景视图" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切换到空中视图" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "打开形状图层" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "显示标签" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "打开形状图层…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "开启定位服务来获取您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "地点设置" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "建立 OpenStreetMap 帐号" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "导出为图像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "快捷键(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "关于地图" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "地图应用处于离线状态!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "地图应用需要有效的网络连接才能正常运行,但是未发现有效连接。" + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "请检查您的网络连接和代理设置。" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帐号" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登录以编辑地图" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"使用 OpenStreetMap 帐号\n" +"帮助完善地图。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "电子邮件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密码" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "注册" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登录" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"对不起,密码无效。请重试,或访问\n" +"OpenStreetMap 以重置密码。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "验证码不匹配,请重试。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "输入在上面显示的验证码" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "验证" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登录" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帐号已激活。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "退出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "门牌号码" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "邮政编码" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "类型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "无" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "添加字段" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "备注" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地图更改将会呈现在所有使用\n" +"OpenStreetMap 数据的地图上。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "下一步" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "未找到结果" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "发生了一个错误" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖动以改变路线的顺序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "打开位置" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "复制" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "发送至…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "签到…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "打开形状图层" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "打开(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切换可见" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "通过 GraphHopper 搜索路线" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"公共交通行程路线由第三方服务提供。\n" +"GNOME 无法保证所显示的行程和时间表的准确性。\n" +"一些提供者可能不会包含所有可用的交通方式,\n" +"例如,国家级提供者可能不包括航空公司,\n" +"地方提供者也可能会缺少地区列车信息。\n" +"所示名称和品牌在适用时应视为注册商标。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "显示更多结果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隐藏途径停站及沿路信息" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "显示途径停站及沿路信息" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "现在动身" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "出发时间" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "到达时间" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "显示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公交车" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "有轨电车" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "列车" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "地铁" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡轮" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飞机" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "添加到新路线" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "方向" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "标记为喜爱" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "放大以添加地点!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "放大" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "未在目录中找到地图区块结构" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "解析 XML 文档失败" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺失需要的属性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "指向本地区块目录结构的路径" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "本地区块目录的区块大小" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "显示该程序的版本" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "忽略网络可用性" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[文件…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "选择帐号" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "正在载入" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "选择地点" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "地图应用无法在 Foursquare 中找到签到地点。请在列表中选择。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "签到于 %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "编写附加信息来签到 %s 。" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社交服务中找不到“%s”" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "在此地无法找到符合的签到地点" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "证书已过期,请打开“在线帐号”登录并启用此帐号" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "这里什么都没有找到!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "地点已添加到地图,注意它可能需要一段时间才能显示在地图上和搜索结果里。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f 处的地图.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "文件系统为只读" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您没有保存到那里的权限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "该目录不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "未指定文件名" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "无法导出视图" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "当前位置" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "无效坐标" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "解析错误" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "未知几何方位" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "路线请求失败。" + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "没有找到路线。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "开始!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "全部图层文件" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "无法连接到定位服务" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"tuhaihe <1132321739qq@gmail.com>, 2013, 2020\n" +"Tong Hui , 2014\n" +"Mingcong Bai , 2015, 2016, 2017, 2018\n" +"Dingzhong Chen , 2015-2018\n" +"王滋涵 , 2020" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "一款 GNOME 地图应用程序" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "版权所有 © 2011 – 2021 红帽公司和 GNOME 地图作者" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "地图数据来自 %s 和贡献者" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "地图图块由 %s 提供" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "使用 %s 提供的服务搜索 %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "打开图层失败" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "请问是否继续?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "即将打开 %s MB 的文件,这可能需要一定时间" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "文件类型未支持" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "打开 GeoURI 失败" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "不正确的用户名或密码" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "错误的请求" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "找不到对象" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "冲突,别人刚修改了对象" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "对象已被删除" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "道路或关系指向了不存在的子项" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "名称" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "官方名称。这通常就是标记上显示的东西。" + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "网站" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "URL 不合法。请确保其包含 http:// 或 https://。" + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方网站。尝试使用 URL 的最基本形式,例如 http://example.com 而不是 http://" +"example.com/index.html。" + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "电话" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"电话号码。使用国际格式,以 + 加号开头。留心当地的隐私法律,特别是对于私人电话" +"号码。" + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "电子邮件" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "电子邮件地址无效。请确保其不包含 mailto: 协议前缀。" + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "问询用电子邮件地址。只应添加公共用途的电子邮件地址。" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "维基百科" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式应该包含语言代码和文章标题如“zh_CN:文章标题”。" + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "开放时间" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "请参阅标签中的链接来获得关于格式的帮助。" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "人口总数" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "海拔" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一点的海拔(海平面之上的高度),以米计。" + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "轮椅通行" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "有" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "无" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "受限" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "指定" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "网络接入" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "有线" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "终端" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "服务" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "外带" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "仅" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "泛灵论" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "儒学" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "犹太教" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "伊斯兰教" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "多宗教信仰" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "异教" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "飞天面条神教" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "山达基" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "神道" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "锡克教" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "唯灵论" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "一神普救派" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "伏都教" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "琐罗亚斯德教" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "洗手间" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "备注" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用于提醒其他制图人的信息,比如关于元素的隐蔽信息、作者创建的意图,亦或进一步" +"完善的提示。" + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "选择类型" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "未命名地点" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "解析 Geo URI 失败" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "坐标" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "精度" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "位置精度:%s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "手机号码" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "提供外带服务" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "不提供外带服务" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "只提供外带服务" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "公共网络接入" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "无网络接入" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "公共 Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "有线网络接入" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "有计算机可供使用" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "提供网络援助" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "不提供洗手间" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "提供洗手间" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "轮椅可通行" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "轮椅有限通行" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "轮椅不可通行" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "为轮椅用户设计" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "低于海平面 %s" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "位于海平面高度" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "宗教:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "地点在 OpenStreetMap 上找不到" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL 中的坐标无效" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL 不支持" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "从 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "正在加载地图图块以便打印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果打印时间太长你可以中止它" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止打印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "通过位置添加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "通过位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路线" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "添加 %s 到 %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "打开 URI 失败" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "用 %s 打开" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "载入文件失败" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "估计时间:%s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "路线由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "出发时间为 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "出发" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "到达时间为 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "到达" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "显示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隐藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "载入上一个替代方案" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "载入下一个替代方案" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到上一个替代方案。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到下一个替代方案。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-m月%-d日" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "找不到该路线的时间表信息。" + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "找不到该路线的提供商。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s - %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分钟" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小时" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小时" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "全天" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "白天" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "公众假期" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "学校假期" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "未开放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "未知" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "准确" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s 小时" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 小时 %s 分钟" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分钟" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s 千米" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s 米" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s 英里" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s 英尺" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "该插件不支持最近到达信息" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "继续沿 %s 前进" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "继续" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s 处左转" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "左转" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s 处稍向左转" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "稍向左转" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s 处向左急转" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "向左急转" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s 处右转" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "右转" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s 处稍向右转" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "稍向右转" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s 处向右急转" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "向右急转" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "在 %s 出环岛" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "退出环岛往 %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "环岛绕行" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "乘坐电梯并在 %s 层离开" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "乘坐电梯" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "向走掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "向走掉头" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "向右掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "向右掉头" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "你甚至可以搜索特定类型的位置,比如“Pubs near Main Street, " +#~ "Boston”或“Hotels near Alexanderplatz, Berlin”。" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook 签到隐私设置" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "最近使用的 Facebook 签到隐私设置。可能的值有:EVERYONE, " +#~ "FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#~ msgid "Everyone" +#~ msgstr "每个人" + +#~ msgid "Friends of friends" +#~ msgstr "朋友的朋友" + +#~ msgid "Just friends" +#~ msgstr "仅限朋友" + +#~ msgid "Just me" +#~ msgstr "仅限自己" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "地图应用无法在 Facebook 中找到签到地点。请在列表中选择。" + +#~ msgid "Find a Route" +#~ msgstr "寻找路线" + +#~ msgid "Check in here" +#~ msgstr "在这里签到" + +#~ msgid "Show more information" +#~ msgstr "显示更多信息" + +#~ msgid "Population:" +#~ msgstr "人口总数:" + +#~ msgid "Altitude:" +#~ msgstr "海拔:" + +#~ msgid "Opening hours:" +#~ msgstr "开放时间:" + +#~ msgid "Internet access:" +#~ msgstr "网络接入:" + +#~ msgid "Toilets:" +#~ msgstr "洗手间:" + +#~ msgid "Wheelchair access:" +#~ msgstr "轮椅通行:" + +#~ msgid "Phone:" +#~ msgstr "电话:" + +#~ msgid "yes" +#~ msgstr "有" + +#~ msgid "limited" +#~ msgstr "有限制" + +#~ msgid "no" +#~ msgstr "无" + +#~ msgid "designated" +#~ msgstr "专用设施" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL 无效" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "有线" + +#~ msgid "terminal" +#~ msgstr "终端" + +#~ msgid "service" +#~ msgstr "服务" + +#~ msgid "Primary menu" +#~ msgstr "主菜单" + +#~ msgid "Don’t have an account?" +#~ msgstr "没有帐号?" + +#~ msgid "Open with another application" +#~ msgstr "以其他程序打开" + +#~ msgid "Press enter to search" +#~ msgstr "按下回车键开始搜索" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "通过 OpenTripPlanner 搜索路线" + +#~ msgid "Add destination" +#~ msgstr "添加目的地" + +#~ msgid "%f h" +#~ msgstr "%f 小时" + +#~ msgid "%f min" +#~ msgstr "%f 分钟" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "退出" + +#~ msgid "OK" +#~ msgstr "确定" + +#~ msgid "Load Map Layer" +#~ msgstr "加载地图图层" + +#~ msgid "Open Layer" +#~ msgstr "打开图层" + +#~ msgid "%f km" +#~ msgstr "%f 千米" + +#~ msgid "%f m" +#~ msgstr "%f 米" + +#~ msgid "%f mi" +#~ msgstr "%f 英里" + +#~ msgid "%f ft" +#~ msgstr "%f 英尺" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "解析 GeoJSON 文件失败" + +#~ msgid "Country code: %s" +#~ msgstr "国家代码:%s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "最近已知的位置和精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "最近已知的位置(经纬度)和精度(米)。" + +#~ msgid "Description of last known location of user." +#~ msgstr "对最近已知的用户位置的描述。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "最近已知的位置 是否是用户手动设置的。" + +#~ msgid "I’m here!" +#~ msgstr "我在这!" + +#~ msgid "%f km²" +#~ msgstr "%f平方千米" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "From" +#~ msgstr "从" + +#~ msgid "Satellite" +#~ msgstr "卫星" + +#~ msgid "Track user location." +#~ msgstr "跟踪用户位置。" diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 00000000..0911015d --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,213 @@ +# Chinese (Hong Kong) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-08-30 18:59+0000\n" +"PO-Revision-Date: 2014-08-31 15:54+0800\n" +"Last-Translator: Chao-Hsiung Liao \n" +"Language-Team: Chinese (Hong Kong) \n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.3\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Maps 讓你可以快速存取世界上的地圖。它讓你快速的找到想找的位置,只要搜尋城市或街道,也可以定位要與朋友見面的場所。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Maps 使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "你甚至能搜尋指定的位置類型,像是“Pubs near Main Street, Boston“或是“Hotels near Alexanderplatz, Berlin“" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:303 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "地圖" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "視窗尺寸" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "視窗大小 (闊度與高度)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "視窗位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "上次知道的位置與準確度" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "上次知道的位置 (緯度與經度) 與準確度 (以米計)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "上次知道的位置描述" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "上次知道的使用者位置描述。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "使用者設定上次知道的位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "上次知道的位置是否是由使用者手動設定。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "關於" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "結束" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "這裏有什麼?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "我在這裏!" + +#: ../src/mainWindow.js:301 +msgid "translator-credits" +msgstr "Chao-Hsiung Liao , 2013" + +#: ../src/mainWindow.js:304 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: ../src/routeService.js:76 +msgid "No route found." +msgstr "找不到路線。" + +#: ../src/routeService.js:82 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: ../src/routeService.js:153 +msgid "Start!" +msgstr "開始!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "國家代碼:%s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "郵遞區號:%s" + +#: ../src/sidebar.ui.h:1 +msgid "To" +msgstr "終點" + +#: ../src/sidebar.ui.h:2 +msgid "From" +msgstr "起點" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "目前位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "準確" + +#: ../src/utils.js:179 +#, javascript-format +#| msgid " km²" +msgid "%f km²" +msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Street" +#~ msgstr "街道" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 00000000..e8c16084 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1986 @@ +# Chinese (Taiwan) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-16 21:00+0000\n" +"PO-Revision-Date: 2020-10-12 21:58+0800\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地圖" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "尋找世界上各個地方" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"《地圖》讓您可以快速存取世界上的地圖。它讓您快速的找到想找的位置,只要搜尋城" +"市或街道,也可以定位要與朋友見面的場所。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"《地圖》使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製" +"作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"您甚至能搜尋指定的位置類型,像是「Pubs near Main Street, Boston」或是" +"「Hotels near Alexanderplatz, Berlin」等。" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME 專案" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "地圖" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允許您的位置顯示在地圖上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最後檢視的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最後檢視位置的坐標。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "縮放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "縮放等級" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地圖類型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要顯示的地圖類型(街道、航空圖等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "視窗尺寸" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "視窗大小 (寬度與高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "視窗位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "要儲存的最近路線數" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "要儲存的最近到訪路線數。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 打卡隱私權設定值" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 打卡隱私權設定值。可能的數值有:EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 打卡隱私權設定值" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 打卡隱私權設定值。可能的數值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 打卡 Facebook 廣播" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Facebook 帳號連結的 Foursquare 帳號以貼文方式廣" +"播此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 打卡 Twitter 廣播" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Twitter 帳號連結的 Foursquare 帳號以推文方式廣播" +"此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 的使用者名稱或電子郵件位址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示使用者是否已登入可編輯 OpenStreetMap 資料。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "上次路線規劃時使用的交通類型" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "應用程式是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "使用混合式航照圖磚" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "是否應該使用混合風格(附帶文字標籤)的航照圖磚。" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可見狀態" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "張貼到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "張貼到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "打卡(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每個人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "僅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "僅限本人" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公開" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "跟隨" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "從這裡開始的路線" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "加入中間目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "到這裡的路線" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "這裡有什麼?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "複製位置" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "匯出檢視" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "匯出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包含路線和標記" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "前往目前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "選擇地圖類型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "拉遠" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "拉近" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "切換喜好" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "顯示快捷鍵" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜尋" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "結束" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "開啟主選單" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地圖檢視" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拉近" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "拉遠" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切換縮放" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "前往目前位置" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切換為街道檢視" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切換為鳥瞰圖" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "開啟形狀圖層" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "顯示文字標籤" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "開啟形狀圖層…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "開啟位置服務以尋找您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "位置設定值" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "設定 OpenStreetMap 帳號" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "匯出為影像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "鍵盤快捷鍵(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "關於《地圖》" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "開啟主選單" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Maps 已離線!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Maps 需要使用網際網路連線才能正常運作,但找不到網際網路。" + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "請檢查您的連線與代理伺服器設定值。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "加入新的路線" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "標記為喜好" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在這裡檢查" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帳號" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登入以編輯地圖" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"協助改善地圖,使用\n" +"OpenStreetMap 帳號。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "電子郵件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密碼" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "註冊" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登入" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"抱歉,那沒有作用。請再試一次,或者參訪\n" +"OpenStreetMap以重置您的密碼。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "驗證碼不符合,請再試一次。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "輸入上面顯示的驗證碼" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "驗證" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登入" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帳號已啟用。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "登出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "門牌號碼" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "郵遞區號" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "類型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "沒有" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "加入欄位" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "評註" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地圖更動資訊會在所有利用 OpenStreetMap\n" +" 資料的地圖中出現。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "下一個" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "顯示更多資訊" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "找不到結果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖曳以修改路徑順序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "開啟位置" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "複製" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "傳送至…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "開啟形狀圖層" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "開啟(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切換可見性" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "透過 GraphHopper 搜尋路線" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"大眾運輸的路線規劃是由第三方服務提供。\n" +"GNOME 無法保證所顯示的規劃與行程的正確性。\n" +"注意,有些服務供應商也許無法囊括所有可能的轉運方式,\n" +"例:國營供應商或許沒列入航班,而地方供應商可能缺少\n" +"區域性的車班資訊。\n" +"此處所顯示的名稱或商標為其註冊商標所有人所有。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "顯示更多結果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隱藏中間站與資訊" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "顯示中間站與資訊" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "正在離開" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "離開於" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "抵達於" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "顯示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公車" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "輕軌" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "火車" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "捷運" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡輪" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飛機" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "目前位置" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "拉近以加入位置!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "拉近" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "無法在目錄中找到圖磚結構" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "無法解析 XML 文件" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺少了必要的屬性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "本地端圖磚目錄結構的路徑" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "本地端圖磚目錄的圖磚大小" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "顯示程式版本" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "忽略網路可用性" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "選擇一個帳號" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "載入中" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "選擇一個地點" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Facebook 中打卡的地點。請從清單中選擇一個。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Foursquare 中打卡的地點。請從清單中選擇一個。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "打卡於:%s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "寫些關於在 %s 打卡的訊息。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "發生錯誤" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社群服務中找不到「%s」" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "找不到適合的地點來打卡" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "憑證已過期,請開啟線上帳號再次登入並啟用這個帳號" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "這裡找不到東西!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"位置已加到地圖上,請注意在顯示在地圖上與搜尋結果中之前可能需要一段時間。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "於 %f 的地圖, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "檔案系統是唯讀的" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您沒有在該處儲存檔案的權限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "目錄不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "沒有指定檔案名稱" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "無法匯出檢視" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "無效的坐標" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析錯誤" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "不明的位置大小" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "找不到路線。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "開始!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "所有圖層檔案" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "無法連接位置服務" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Chao-Hsiung Liao , 2013\n" +"Yi-Jyun Pan , 2020\n" +"Cheng-Chia Tseng , 2020" + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "著作權所有 © 2011 – 2019 Red Hat, Inc. 和 GNOME 地圖作者群" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "來自 %s 與貢獻者的地圖資料" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "由 %s 提供的圖磚" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "搜尋使用 %2$s 並由 %1$s 提供" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "檔案類型不支援" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "無法開啟圖層" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "無法開啟 GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正確的使用者名稱或密碼" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "錯誤的要求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到物件" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "衝突,有其他人剛剛修改了這個物件" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "物件已刪除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "路徑或關係參照到不存在的子項" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "名稱" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "正式的名稱。這通常會出現在招牌上。" + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "網站" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方網站。嘗試使用最基本形式的 URL ,例如 HTTP://example.com ,而不是 HTTP://" +"example.com/index.html。" + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "電話" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"電話號碼。使用國際格式,以 + 號開頭。提防當地的隱私權法律,特別是私人電話號" +"碼。" + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "維基百科" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式應該包括語言代碼和文章標題,例如「en:Article title」。" + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "開放時間" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "請參閱標籤的連結以取得格式的求助訊息。" + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "資料母體" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "海拔高度" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一點的高度,以公尺計 (自海平面以上的高度)。" + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "使用輪椅" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "是" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "否" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "有限制" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "特定" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "網際網路存取" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "有線網路" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "網路終端" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "服務" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "萬物有靈論" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "儒教" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "猶太教" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "伊斯蘭教" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多種宗教" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "異教" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飛天義大利麵神教" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "科學神教" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "神道教" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "錫克教" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "精神主義" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神論的普遍主義" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "巫毒教" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "拜火教" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "廁所" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "備註" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用來通知其他製圖者關於元件、建立時作者的目的、與更多資訊提示的不明顯資訊。" + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "選擇類型" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "未命名位置" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "人口:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "海拔高度:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "開放時間:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "網際網路存取:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "廁所:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "使用輪椅:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "電話:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "無法分析 Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "是" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "否" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "特定" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "在 OpenStreetMap 找不到位置" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap 網址無效" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "網址中的座標無效" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "網址不支援" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "從 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "載入列印用的圖磚" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果這花費時間太長,您可以放棄列印" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止列印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "透過位置增加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "透過位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路線" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "加入 %s 至 %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "無法開啟 URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "使用 %s 開啟" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "無法載入檔案" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "預估時間:%s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "行程表由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "開始於 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "開始" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "抵達於 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "抵達" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "顯示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隱藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "載入較早的替代路線" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "載入較晚的替代路線" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到較早的替代路線。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到較晚的替代路線。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b%e日" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "找不到這條路線的時刻表資料。" + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "找不到這個路線的提供者。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分鐘" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小時" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小時" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "在時鐘周圍" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "從日出到日落" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "共通假日" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "學校假日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "不開放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有線網路" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "網路終端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服務" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "準確" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s 時" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 時 %s 分" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s 公里" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s 公尺" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s 英哩" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s 英呎" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "這個外掛插件不支援最近到站的功能" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "在 %s 繼續走" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "繼續走" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "在 %s 左轉" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "左轉" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "在 %s 稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "在 %s 急左轉" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "急左轉" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "在 %s 右轉" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "右轉" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "在 %s 稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "在 %s 急右轉" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "急右轉" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在圓環中,從 %s 離開" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "在圓環中,離開往 %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "走圓環" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "搭乘電梯到 %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "搭乘電梯" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 進行右迴轉" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "進行右迴轉" + +#~ msgid "Don’t have an account?" +#~ msgstr "還沒有會員帳號嗎?" + +#~ msgid "%f h" +#~ msgstr "%f 小時" + +#~ msgid "%f min" +#~ msgstr "%f 分鐘" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "Add destination" +#~ msgstr "加入目的地" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "以其他應用程式開啟" + +#~ msgid "Press enter to search" +#~ msgstr "按下 Enter 開始搜尋" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "透過 OpenTripPlanner 搜尋路徑" + +#~ msgid "Quit" +#~ msgstr "結束" + +#~ msgid "OK" +#~ msgstr "確定" + +#~ msgid "Load Map Layer" +#~ msgstr "載入地圖圖層" + +#~ msgid "Open Layer" +#~ msgstr "開啟圖層" + +#~ msgid "%f km" +#~ msgstr "%f 公里" + +#~ msgid "%f m" +#~ msgstr "%f 公尺" + +#~ msgid "%f mi" +#~ msgstr "%f 哩" + +#~ msgid "%f ft" +#~ msgstr "%f 呎" + +#~ msgid "Position not found" +#~ msgstr "找不到地點" + +#~ msgid "General" +#~ msgstr "一般" + +#~ msgid "Search" +#~ msgstr "搜尋" + +#~ msgid "Country code: %s" +#~ msgstr "國家代碼:%s" + +#~ msgid "Population: %s" +#~ msgstr "資料母體:%s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "使用輪椅:%s" + +#~ msgid "_Share" +#~ msgstr "分享(_S)" + +#~ msgid "Last known location and accuracy" +#~ msgstr "上次知道的位置與準確度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "上次知道的位置 (緯度與經度) 與準確度 (以公尺計)" + +#~ msgid "Description of last known location of user." +#~ msgstr "上次知道的使用者位置描述。" + +#~ msgid "User set last known location" +#~ msgstr "使用者設定上次知道的位置" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "上次知道的位置是否是由使用者手動設定。" + +#~ msgid "I’m here!" +#~ msgstr "我在這裡!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "終點" + +#~ msgid "From" +#~ msgstr "起點" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/scripts/README b/scripts/README new file mode 100644 index 00000000..de52149a --- /dev/null +++ b/scripts/README @@ -0,0 +1,19 @@ +SCRIPTS +======= + +extractPoiTypesFromID.js +------------------------ + +Extracts the POI types (presets) that the iD editor uses to JSON for us to consume. + +Run the extractPoiTypesFromID.js script against a checkout of the +iD Tagging Schema project (https://github.com/openstreetmap/id-tagging-schema) + +$ ./extractPoiTypesFromID.js > osm-types.json + +This script would be run by upstream before making a release of gnome-maps if an updated version +of the iD editor is available with updated OSM types preset and/or new or updated translations +of those. +Check the resulting .json file (i.e. check size and possibly diff against the current version). +Copy the result to data/osm-types.json + diff --git a/scripts/extractPoiTypesFromID.js b/scripts/extractPoiTypesFromID.js new file mode 100755 index 00000000..031e9aed --- /dev/null +++ b/scripts/extractPoiTypesFromID.js @@ -0,0 +1,142 @@ +#!/usr/bin/env gjs + +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Script to generate a simplified JSON mapping file for POI types from the + * presets definitions from the iD Web-based OpenStreetMap editor + * + * Usage: ./extractPoiTypesFromID.js > osm-types.json + * + */ + +const Gio = imports.gi.Gio; + +const ByteArray = imports.byteArray; + +const PRESETS_PATH = 'data/presets'; +const LOCALES_PATH = 'dist/translations'; +const PRESET_TYPES = [ 'aeroway', + 'amenity', + 'leisure', + 'office', + 'place', + 'shop', + 'tourism' ]; + +const OUTPUT = {}; + +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function parseJson(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let {tags, name} = JSON.parse(getBufferText(buffer)); + + for (let key in tags) { + let value = tags[key]; + + OUTPUT[key + '/' + value] = {'title': {'C': name}}; + } +} + +function processType(type, basePath) { + let dirPath = [basePath, PRESETS_PATH, type].join('/'); + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + parseJson(dirPath, file.get_name()); + } +} + +function processTypes(basePath) { + PRESET_TYPES.forEach(function(type) { + processType(type, basePath); + }); +} + +function processLocale(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let object = JSON.parse(getBufferText(buffer)); + let lang = fileName.substring(0, fileName.indexOf('.json')); + + for (let type in OUTPUT) { + let name; + + try { + name = object[lang].presets.presets[type].name; + } catch (ex) { + continue; + } + + OUTPUT[type].title[lang] = name; + } +} + +function processLocales(basePath) { + let dirPath = basePath + '/' + LOCALES_PATH; + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*.json', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + processLocale(dirPath, file.get_name()); + } +} + +function outputJson() { + print(JSON.stringify(OUTPUT, null, 2)); +} + +function main(args) { + let path = args[0]; + + processTypes(path); + processLocales(path); + + outputJson(); +} + +main(ARGV); diff --git a/src/accountListBox.js b/src/accountListBox.js new file mode 100644 index 00000000..8a032f37 --- /dev/null +++ b/src/accountListBox.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const Goa = imports.gi.Goa; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var AccountRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/account-row.ui', + InternalChildren: [ 'providerLabel', + 'identityLabel', + 'providerImage', + 'attentionNeededImage' ], +}, class AccountRow extends Gtk.ListBoxRow { + _init(params) { + this.account = params.account; + delete params.account; + + super._init(params); + + let account = this.account.get_account(); + + this._providerLabel.label = account.provider_name; + this._identityLabel.label = account.presentation_identity; + this._providerImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + this._attentionNeededImage.visible = account.attention_needed; + } +}); + +var AccountListBox = GObject.registerClass({ + Signals: { + 'account-selected': { param_types: [Goa.Object] } + }, +}, class AccountListBox extends Gtk.ListBox { + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + Application.checkInManager.connect('accounts-refreshed', () => this.refresh()); + + this.connect('row-activated', + (list, row) => this.emit('account-selected', row.account)); + + this.refresh(); + } + + refresh() { + let accounts = Application.checkInManager.accounts; + + this.foreach((row) => this.remove(row)); + + accounts.forEach((account) => { + this.insert(new AccountRow({ account: account }), -1); + }); + } +}); diff --git a/src/address.js b/src/address.js new file mode 100644 index 00000000..0d171840 --- /dev/null +++ b/src/address.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for address formatting. + */ + +const Format = imports.format; + +/** + * Translation lookup table for street name and house number. + * First argument is the street name and the second the housenumber. + * Based on examples from https://en.wikipedia.org/wiki/Address#Address_format + * Currently don't include address formats for i.e. China and Japan as those + * formats differ from the Western ones and would need additional handling + * when printing place addresses (currently we assume there is a street name + * and house number). + */ +const FORMAT_MAP = { + 'AI': '%2$s %1$s', + 'AL': '%1$s %2$s̈́', + 'AR': '%1$s %2$s', + 'AS': '%1$s %2$s', + 'AU': '%2$s %1$s', + 'AX': '%1$s %2$s', + 'BA': '%1$s %2$s', + 'BD': '%1$s. %2$s', + 'BE': '%1$s %2$s', + 'BM': '%2$s %1$s', + 'BR': '%1$s, %2$s', + 'BY': '%1$s, д. %2$s', + /* if we had access to state codes, we could add a special case for + * Quebec format + */ + 'CA': '%2$s %1$s', + 'CH': '%1$s %2$s', + 'CL': '%1$s No° %2$s', + 'CZ': '%1$s %2$s', + 'CY': '%1$s %2$s', + 'DE': '%1$s %2$s', + 'DK': '%1$s %2$s', + 'EE': '%1$s %2$s', + 'ES': '%1$s, %2$s', + 'FI': '%1$s %2$s', + 'FK': '%2$s %1$s', + 'FO': '%1$s %2$s', + 'FR': '%2$s, %1$s', + 'GB': '%2$s %1$s', + 'GG': '%2$s %1$s', + 'GL': '%1$s %2$s', + 'GR': '%1$s %2$s', + 'HK': '%2$s %1$s', + 'HR': '%1$s %2$s', + 'HU': '%1$s %2$s', + 'IE': '%2$s %1$s', + 'IL': '%2$s %1$s', + 'IS': '%1$s %2$s', + 'IM': '%2$s %1$s', + 'IN': '%2$s %1$s', + 'ID': '%1$s No. %2$s', + 'IR': '%1$s %2$s', + 'IT': '%1$s %2$s', + 'IQ': '%1$s %2$s', + 'JE': '%2$s %1$s', + 'KR': '%1$s %2$s', + 'KY': '%2$s %1$s', + 'LI': '%1$s %2$s', + 'LK': '%2$s %1$s', + 'LU': '%1$s %2$s', + 'LV': '%1$s %2$s', + 'ME': '%1$s %2$s', + 'MO': '%1$s%2$s', + 'MS': '%2$s %1$s', + 'MY': '%2$s $1%s', + 'MX': '%1$s No. %2$s', + 'NL': '%1$s %2$s', + 'NO': '%1$s %2$s', + 'NZ': '%2$s %1$s', + 'OM': '%1$s, %2$s', + 'PE': '%1$s %2$s', + 'PH': '%2$s %1$s', + 'PN': '%2$s %1$s', + 'PK': '%2$s, %1$s', + 'PL': '%1$s %2$s', + 'PT': '%1$s %2$s', + 'RO': '%1$s, nr. %2$s', + 'RS': '%1$s %2$s', + 'RU': '%1$s, д. %2$s', + 'SA': '%2$s %1$s', + 'SE': '%1$s %2$s', + 'SG': '%2$s %1$s', + 'SH': '%2$s %1$s', + 'SJ': '%1$s %2$s', + 'SK': '%1$s %2$s', + 'SL': '%1$s %2$s', + 'TC': '%2$s %1$s', + 'TR': '%1$s %2$s', + 'TW': '%1$s, %2$s̈́', + 'UK': 'вул. %1$s, буд. %2$s', + 'US': '%2$s %1$s', + 'VG': '%2$s %1$s', + 'VI': '%2$s %1$s', + 'VN': 'số %2$s %1$s' +} + +function streetAddressForCountryCode(streetName, housenumber, countryCode) { + let format = FORMAT_MAP[countryCode]; + + if (format) + return Format.vprintf(format, [streetName, housenumber]); + else + return Format.vprintf('%s %s', [housenumber, streetName]); +} diff --git a/src/application.js b/src/application.js new file mode 100644 index 00000000..573bceef --- /dev/null +++ b/src/application.js @@ -0,0 +1,397 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const Hdy = imports.gi.Handy; +const WebKit2 = imports.gi.WebKit2; + +const CheckIn = imports.checkIn; +const ContactPlace = imports.contactPlace; +const Format = imports.format; +const Geoclue = imports.geoclue; +const MainWindow = imports.mainWindow; +const Maps = imports.gi.GnomeMaps; +const OSMEdit = imports.osmEdit; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const PlaceStore = imports.placeStore; +const RoutingDelegator = imports.routingDelegator; +const RouteQuery = imports.routeQuery; +const Settings = imports.settings; +const Utils = imports.utils; + +// used globally +var application = null; +var settings = null; +var placeStore = null; +var routingDelegator = null; +var geoclue = null; +var networkMonitor = null; +var checkInManager = null; +var contactStore = null; +var osmEdit = null; +var normalStartup = true; +var routeQuery = null; + +const _ensuredTypes = [WebKit2.WebView, + OSMTypeSearchEntry.OSMTypeSearchEntry]; + +var Application = GObject.registerClass({ + Properties: { + 'connected': GObject.ParamSpec.boolean('connected', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE), + 'selected-place': GObject.ParamSpec.object('selected-place', + 'Selected Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place), + 'adaptive-mode': GObject.ParamSpec.boolean('adaptive-mode', + 'Adaptive Move', + 'Whether the main window is in adaptive (narrow) mode', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE), + }, +}, class Application extends Gtk.Application { + + set connected(p) { + this._connected = p; + this.notify('connected'); + } + + get connected() { + return this._connected; + } + + _init() { + /* Translators: This is the program name. */ + GLib.set_application_name(_("Maps")); + + /* Needed to be able to use in UI files */ + _ensuredTypes.forEach((type) => GObject.type_ensure(type)); + + super._init({ application_id: 'org.gnome.Maps', + flags: Gio.ApplicationFlags.HANDLES_OPEN | + Gio.ApplicationFlags.HANDLES_COMMAND_LINE }); + this._connected = false; + + this.add_main_option('local', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.FILENAME, + _("A path to a local tiles directory structure"), + null); + this.add_main_option('local-tile-size', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.INT, + _("Tile size for local tiles directory"), + null); + + this.add_main_option('version', 'v'.charCodeAt(0), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, + _("Show the version of the program"), null); + + this.add_main_option('force-online', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + _("Ignore network availability"), + null); + /* due to https://gitlab.gnome.org/GNOME/gjs/-/issues/330 the + * description for the remaining args needs to be passed as both + * description and arg_description + */ + this.add_main_option(GLib.OPTION_REMAINING, + 0, + 0, + GLib.OptionArg.STRING_ARRAY, + _("[FILE…|URI]"), + _("[FILE…|URI]")); + } + + _checkNetwork() { + this.connected = + this._forceOnline || + networkMonitor.connectivity === Gio.NetworkConnectivity.FULL; + } + + _showContact(id) { + contactStore.lookup(id, (contact) => { + this.mark_busy(); + if (!contact) { + this.unmark_busy(); + return; + } + contact.geocode(() => { + this.unmark_busy(); + this._mainWindow.mapView.showContact(contact); + }); + }); + } + + _onShowContactActivate(action, parameter) { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + + let id = parameter.deep_unpack(); + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this. _showContact(id); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._showContact(id); + }); + } + } + + _onOsmAccountSetupActivate() { + let dialog = osmEdit.createAccountDialog(this._mainWindow, false); + + dialog.show(); + dialog.connect('response', () => dialog.destroy()); + } + + _addContacts() { + let contacts = contactStore.get_contacts(); + + this._addContactsRecursive(contacts, 0); + } + + _addContactsRecursive(contacts, index) { + if (index < contacts.length) { + let contact = contacts[index]; + + contact.geocode(() => { + contact.get_places().forEach((p) => { + if (!p.location) + return + + Utils.debug('Adding contact address: ' + p.name); + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + placeStore.addPlace(place, PlaceStore.PlaceType.CONTACT); + }); + + this._addContactsRecursive(contacts, index + 1); + }); + } + } + + _initPlaceStore() { + placeStore = new PlaceStore.PlaceStore({ + recentPlacesLimit: settings.get('recent-places-limit'), + recentRoutesLimit: settings.get('recent-routes-limit') + }); + try { + placeStore.load(); + } catch (e) { + log('Failed to parse Maps places file, ' + + 'subsequent writes will overwrite the file!'); + } + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this._addContacts(); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._addContacts(); + }); + } + } + + _onNightModeChange(action) { + let state = action.get_state(); + let gtkSettings = Gtk.Settings.get_default(); + gtkSettings.gtk_application_prefer_dark_theme = state.get_boolean(); + } + + vfunc_startup() { + super.vfunc_startup(); + + GtkClutter.init(null); + Hdy.init(); + + Utils.loadStyleSheet(Gio.file_new_for_uri('resource:///org/gnome/Maps/application.css')); + + application = this; + this._initServices(); + + Utils.addActions(this, { + 'show-contact': { + paramType: 's', + onActivate: this._onShowContactActivate.bind(this) + }, + 'osm-account-setup': { + onActivate: this._onOsmAccountSetupActivate.bind(this) + }, + 'night-mode': { + paramType: 'b', + onChangeState: this._onNightModeChange.bind(this), + setting: 'night-mode' + }, + 'quit': { + onActivate: () => this.quit(), + accels: ['Q'] + } + }, settings); + + // set dark theme when night-mode is enabled + let gtkSettings = Gtk.Settings.get_default(); + + gtkSettings.gtk_application_prefer_dark_theme = + settings.get('night-mode'); + + Gtk.IconTheme.get_default().append_search_path(GLib.build_filenamev([pkg.pkgdatadir, + 'icons'])); + this._initPlaceStore(); + } + + _initServices() { + settings = Settings.getSettings('org.gnome.Maps'); + routeQuery = new RouteQuery.RouteQuery(); + routingDelegator = new RoutingDelegator.RoutingDelegator({ query: routeQuery }); + geoclue = new Geoclue.Geoclue(); + networkMonitor = Gio.NetworkMonitor.get_default(); + networkMonitor.connect('network-changed', + this._checkNetwork.bind(this)); + checkInManager = new CheckIn.CheckInManager(); + contactStore = new Maps.ContactStore(); + contactStore.load(); + osmEdit = new OSMEdit.OSMEdit(); + } + + _createWindow() { + if (this._mainWindow) + return; + + this._mainWindow = new MainWindow.MainWindow({ application: this }); + this._mainWindow.connect('destroy', () => this._onWindowDestroy()); + if (GLib.getenv('MAPS_DEBUG') === 'focus') { + this._mainWindow.connect('set-focus', (window, widget) => { + log('* focus widget: %s'.format(widget)); + }); + } + } + + vfunc_dbus_register(connection, path) { + super.vfunc_dbus_register(connection, path); + return true; + } + + vfunc_dbus_unregister(connection, path) { + super.vfunc_dbus_unregister(connection, path); + } + + vfunc_activate() { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + } + + _openInternal(files) { + if (!this._mainWindow || !this._mainWindow.mapView.view.realized) + return; + + let uri = files[0].get_uri(); + let scheme = GLib.uri_parse_scheme(uri); + + if (scheme === 'geo') { + /* we get an uri that looks like geo:///lat,lon, remove slashes */ + let geoURI = uri.replace(/\//g, ''); + this._mainWindow.mapView.goToGeoURI(geoURI); + } else if (scheme === 'http' || scheme === 'https') { + this._mainWindow.mapView.goToHttpURL(uri); + } else { + this._mainWindow.mapView.openShapeLayers(files); + } + } + + vfunc_open(files) { + normalStartup = false; + this.activate(); + + let mapView = this._mainWindow.mapView; + if (mapView.view.realized) + this._openInternal(files); + else + mapView.view.connect('notify::realized', + this._openInternal.bind(this, files)); + } + + vfunc_command_line(cmdline) { + let options = cmdline.get_options_dict(); + + if (options.contains('local')) { + let variant = options.lookup_value('local', null); + this.local_tile_path = variant.deep_unpack(); + normalStartup = false; + if (options.contains('local-tile-size')) { + variant = options.lookup_value('local-tile-size', null); + this.local_tile_size = variant.deep_unpack(); + } + } else if (options.contains('version')) { + print(pkg.version); + /* quit the invoked process after printing the version number + * leaving the running instance unaffected + */ + return 0; + } else if (options.contains('force-online')) { + this._forceOnline = true; + } + + let remaining = options.lookup(GLib.OPTION_REMAINING, null); + + if (remaining) { + let files = []; + + remaining.forEach((r) => { + let path = r.get_string()[0]; + + if (path.startsWith('geo:') || path.startsWith('http://') || + path.startsWith('https://')) { + files.push(Gio.File.new_for_uri(path)); + } else { + files.push(Gio.File.new_for_path(path)); + } + }); + + this.open(files, ''); + } else { + this.activate(); + } + + return 0; + } + + _onWindowDestroy(window) { + this._mainWindow = null; + } +}); diff --git a/src/boundingBox.js b/src/boundingBox.js new file mode 100644 index 00000000..0c06875e --- /dev/null +++ b/src/boundingBox.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2021, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Constants = imports.constants; + +var BoundingBox = class { + constructor(params) { + /* default to a bounding box the "opposite" of covering the whole + * visible world, this way extending with a coordinate will ensure + * it is enlarged to fit that point + */ + this._left = params?.left ?? Constants.MAX_LONGITUDE; + this._bottom = params?.bottom ?? Constants.MAX_LATITUDE; + this._right = params?.right ?? Constants.MIN_LONGITUDE; + this._top = params?.top ?? Constants.MIN_LATITUDE; + } + + get top() { + return this._top; + } + + set top(top) { + this._top = top; + } + + get left() { + return this._left; + } + + set left(left) { + this._left = left; + } + + get bottom() { + return this._bottom; + } + + set bottom(bottom) { + this._bottom = bottom; + } + + get right() { + return this._right; + } + + set right(right) { + this._right = right; + } + + copy() { + let copy = new BoundingBox(); + + copy.top = this.top; + copy.left = this.left; + copy.bottom = this.bottom; + copy.right = this.right; + + return copy; + } + + getCenter() { + return [(this.right + this.left) / 2, (this.top + this.bottom) / 2]; + } + + /** + * Extends bounding box so that all points covered by other bounding box + * is also covered by this. + */ + compose(other) { + if (other.left < this.left) + this.left = other.left; + + if (other.right > this.right) + this.right = other.right; + + if (other.top > this.top) + this.top = other.top; + + if (other.bottom < this.bottom) + this.bottom = other.bottom; + } + + /** + * Extends bounding box to guarantee covering the point + * (latitude, longitude). + */ + extend(latitude, longitude) { + if (longitude < this.left) + this.left = longitude; + + if (latitude < this.bottom) + this.bottom = latitude; + + if (longitude > this.right) + this.right = longitude; + + if (latitude > this.top) + this.top = latitude; + } + + isValid() { + return this.left < this.right && this.bottom < this.top && + this.left >= Constants.MIN_LONGITUDE && + this.left <= Constants.MAX_LONGITUDE && + this.right >= Constants.MIN_LONGITUDE && + this.right <= Constants.MAX_LONGITUDE && + this.bottom >= Constants.MIN_LATITUDE && + this.bottom <= Constants.MAX_LATITUDE && + this.top >= Constants.MIN_LATITUDE && + this.top <= Constants.MAX_LATITUDE; + } + + /** + * Returns true if bounding box covers the point at (latitude, longitude). + */ + covers(latitude, longitude) { + return (latitude >= this.bottom && latitude <= this.top) && + (longitude >= this.left && longitude <= this.right); + } +} diff --git a/src/checkIn.js b/src/checkIn.js new file mode 100644 index 00000000..cc2f119c --- /dev/null +++ b/src/checkIn.js @@ -0,0 +1,174 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Goa = imports.gi.Goa; +const Gtk = imports.gi.Gtk; + +const CheckInDialog = imports.checkInDialog; +const FoursquareBackend = imports.foursquareBackend; + +var CheckInManager = GObject.registerClass({ + Signals: { + 'accounts-refreshed': { } + }, + Properties: { + 'hasCheckIn': GObject.ParamSpec.boolean('hasCheckIn', + '', + '', + GObject.ParamFlags.READABLE) + } +}, class CheckInManager extends GObject.Object { + _init() { + super._init(); + + try { + this._goaClient = Goa.Client.new_sync(null); + } catch (e) { + log('Error creating GOA client: %s'.format(e.message)); + } + + this._accounts = []; + this._authorizers = {}; + this._backends = {}; + + this._initBackends(); + + if (this._goaClient) { + this._goaClient.connect('account-added', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-changed', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-removed', + this._refreshGoaAccounts.bind(this)); + } + + this._refreshGoaAccounts(); + } + + _initBackends() { + let foursquareBackend = new FoursquareBackend.FoursquareBackend(); + this._backends[foursquareBackend.name] = foursquareBackend; + } + + _refreshGoaAccounts() { + if (!this._goaClient) + return; + let accounts = this._goaClient.get_accounts(); + this._accounts = []; + this._accountsCount = 0; + this._authorizers = {}; + + accounts.forEach((object) => { + if (!object.get_account()) + return; + + if (!object.get_maps()) + return; + + let accountId = object.get_account().id; + this._accounts.push(object); + + this._authorizers[accountId] = this._getBackend(object).createAuthorizer(object); + }); + + this.emit('accounts-refreshed'); + this.notify('hasCheckIn'); + } + + get client() { + return this._goaClient; + } + + get accounts() { + return this._accounts; + } + + get hasCheckIn() { + return this._accounts.length > 0; + } + + _getAuthorizer(account) { + return this._authorizers[account.get_account().id]; + } + + _getBackend(account) { + return this._backends[account.get_account().provider_type]; + } + + performCheckIn(account, checkIn, callback, cancellable) { + this._getBackend(account) + .performCheckIn(this._getAuthorizer(account), checkIn, callback, cancellable); + } + + findPlaces(account, latitude, longitude, distance, callback, cancellable) { + this._getBackend(account) + .findPlaces(this._getAuthorizer(account), latitude, longitude, distance, callback, cancellable); + } + + showCheckInDialog(parentWindow, place, matchPlace) { + let dialog = new CheckInDialog.CheckInDialog({ transient_for: parentWindow, + matchPlace: matchPlace, + place: place }); + let response = dialog.run(); + dialog.destroy(); + + let message = null; + + switch (response) { + case CheckInDialog.Response.FAILURE_NO_PLACES: + if (matchPlace) + /* Translators: %s is the place name that user wanted to check-in */ + message = _("Cannot find “%s” in the social service").format(place.name); + else + message = _("Cannot find a suitable place to check-in in this location"); + break; + case CheckInDialog.Response.FAILURE_GET_PLACES: + if (dialog.error.code === 401) + message = _("Credentials have expired, please open Online Accounts to sign in and enable this account"); + else + message = dialog.error.message; + break; + } + + if (message) { + let messageDialog = new Gtk.MessageDialog({ transient_for: parentWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: message }); + messageDialog.run(); + messageDialog.destroy(); + } + } +}); + +var CheckIn = class { + _init() { + this.message = null; + this.place = null; + this.privacy = null; + this.broadcastFacebook = false; + this.broadcastTwitter = false; + } +}; diff --git a/src/checkInDialog.js b/src/checkInDialog.js new file mode 100644 index 00000000..7ace6a7a --- /dev/null +++ b/src/checkInDialog.js @@ -0,0 +1,277 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const AccountListBox = imports.accountListBox; +const Application = imports.application; +const CheckIn = imports.checkIn; +const SocialPlaceListBox = imports.socialPlaceListBox; +const SocialPlaceMatcher = imports.socialPlaceMatcher; + +var Response = { + SUCCESS: 0, + CANCELLED: 1, + FAILURE_NO_PLACES: 2, + FAILURE_GET_PLACES: 3, + FAILURE_ACCOUNT_DISABLED: 4, + FAILURE_CHECKIN_DISABLED: 5 +}; + +var CheckInDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/check-in-dialog.ui', + InternalChildren: [ 'cancelButton', + 'okButton', + 'stack', + 'accountFrame', + 'placeScrolledWindow', + 'placeNotFoundInfoBar', + 'placeNotFoundLabel', + 'messageInfoLabel', + 'messageInfoAccountImage', + 'messageTextView', + 'foursquareOptionsGrid', + 'foursquareOptionsPrivacyComboBox', + 'foursquareOptionsBroadcastFacebookCheckButton', + 'foursquareOptionsBroadcastTwitterCheckButton' ], +}, class CheckInDialog extends Gtk.Dialog { + _init(params) { + this._place = params.place; + delete params.place; + + this._matchPlace = params.matchPlace; + delete params.matchPlace; + + // This is a construct-only property and cannot be set by GtkBuilder + params.use_header_bar = true; + + super._init(params); + + this._account = null; + this._checkIn = new CheckIn.CheckIn(); + this.error = null; + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + Application.checkInManager.connect('accounts-refreshed', + () => this._onAccountRefreshed()); + + this._initHeaderBar(); + this._initWidgets(); + } + + _initHeaderBar() { + this._cancelButton.connect('clicked', + () => this._cancellable.cancel()); + + this._okButton.connect('clicked', () => this._startCheckInStep()); + } + + _initWidgets() { + // Limitations in Gjs means we can't do this in UI files yet + this._accountListBox = new AccountListBox.AccountListBox({ visible: true }); + this._accountFrame.add(this._accountListBox); + + this._placeListBox = new SocialPlaceListBox.SocialPlaceListBox({ visible: true }); + this._placeScrolledWindow.add(this._placeListBox); + + Application.settings.bind('checkin-foursquare-privacy', + this._foursquareOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-facebook', + this._foursquareOptionsBroadcastFacebookCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-twitter', + this._foursquareOptionsBroadcastTwitterCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + this._accountListBox.connect('account-selected', (list, account) => { + this._account = account; + this._startPlaceStep(); + }); + + this._placeListBox.connect('place-selected', (list, place) => { + this._checkIn.place = place; + this._startMessageStep(); + }); + } + + vfunc_show() { + this._startup(); + super.vfunc_show(); + } + + _startup() { + let accounts = Application.checkInManager.accounts; + + if (accounts.length > 1) + this._startAccountStep(); + else if (accounts.length === 1) { + this._account = Application.checkInManager.accounts[0]; + this._startPlaceStep(); + } else { + Mainloop.idle_add(() => { + this.response(Response.FAILURE_CHECKIN_DISABLED); + }); + } + } + + _onAccountRefreshed() { + let accounts = Application.checkInManager.accounts; + + if (!Application.checkInManager.hasCheckIn) + this.response(Response.FAILURE_CHECKIN_DISABLED); + else if (this._account) { + for (let account of accounts) { + if (this._account.get_account().id === account.get_account().id) + return; + } + + this.response(Response.FAILURE_ACCOUNT_DISABLED); + } + } + + _startAccountStep() { + this.set_title(_("Select an account")); + this._stack.set_visible_child_name('account'); + } + + _startPlaceStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + Application.checkInManager.findPlaces(this._account, + this._place.location.latitude, + this._place.location.longitude, + 100, + this._onFindPlacesFinished.bind(this), + this._cancellable); + } + + _onFindPlacesFinished(account, places, error) { + if (!error) { + if (places.length === 0) { + this.response(Response.FAILURE_NO_PLACES); + return; + } + + let matches = SocialPlaceMatcher.match(this._place, places); + + if (matches.exactMatches.length === 1 && this._matchPlace) { + this._checkIn.place = matches.exactMatches[0]; + this._startMessageStep(); + } else { + this.set_title(_("Select a place")); + this._placeListBox.matches = matches; + + if (this._matchPlace) { + if (this._account.get_account().provider_type === 'foursquare') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Foursquare. Please select one from this list."); + } else + this._placeNotFoundInfoBar.hide(); + + this._stack.set_visible_child_name('place'); + } + } else { + this.error = error; + this.response(Response.FAILURE_GET_PLACES); + } + } + + _startMessageStep() { + /* Translators: %s is the name of the place to check in. + */ + this.set_title(_("Check in to %s").format(this._checkIn.place.name)); + this._stack.set_visible_child_name('message'); + + this._messageTextView.grab_focus(); + this._okButton.show(); + + let account = this._account.get_account(); + + /* Translators: %s is the name of the place to check in. + */ + let labelMessageInfo = _("Write an optional message to check in to %s."); + this._messageInfoLabel.label = labelMessageInfo.format('%s'.format(this._checkIn.place.link, + this._checkIn.place.name)); + this._messageInfoAccountImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + + let optionsGrids = { 'foursquare': this._foursquareOptionsGrid }; + + for (let provider in optionsGrids) + if (provider === account.provider_type) + optionsGrids[provider].show(); + else + optionsGrids[provider].hide(); + } + + _startCheckInStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + this._okButton.hide(); + + let message = this._messageTextView.buffer.text; + let privacy; + + if (this._account.get_account().provider_type === 'foursquare') + privacy = this._foursquareOptionsPrivacyComboBox.active_id; + + let broadcastFacebook = this._foursquareOptionsBroadcastFacebookCheckButton.active; + let broadcastTwitter = this._foursquareOptionsBroadcastTwitterCheckButton.active; + + this._checkIn.message = message; + this._checkIn.privacy = privacy; + this._checkIn.broadcastFacebook = broadcastFacebook; + this._checkIn.broadcastTwitter = broadcastTwitter; + + Application.checkInManager.performCheckIn(this._account, + this._checkIn, + this._onPerformCheckInFinished.bind(this), + this._cancellable); + } + + _onPerformCheckInFinished(account, data, error) { + if (!error) + this.response(Response.SUCCESS); + else { + let messageDialog = new Gtk.MessageDialog({ transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: error.message }); + messageDialog.run(); + messageDialog.destroy(); + + this._startMessageStep(); + } + } +}); diff --git a/src/color.js b/src/color.js new file mode 100644 index 00000000..36f21f24 --- /dev/null +++ b/src/color.js @@ -0,0 +1,94 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* Minimum contrast ratio for foreground/background color for i.e. route labels */ +const MIN_CONTRAST_RATIO = 2.0; + +/** + * Parses a given color component index (0: red, 1: green, 2: blue) + * from a hex-encoded color string. Optionally, if defaultValue is supplied, + * fallback to that if color is undefined. + */ +function parseColor(color, component, defaultValue) { + if (color) { + let index = component * 2; + return parseInt(color.substring(index, index + 2), 16) / 255; + } else { + return defaultValue; + } +} + +/** + * Returns the relative luminance (0.0 - 1.0) of a color, expressed in HTML + * notation (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Relative_luminance + */ +function relativeLuminance(color) { + let rsRGB = parseColor(color, 0); + let gsRGB = parseColor(color, 1); + let bsRGB = parseColor(color, 2); + let r = rsRGB <= 0.03928 ? + rsRGB / 12.92 : Math.pow(((rsRGB + 0.055) / 1.055), 2.4); + let g = gsRGB <= 0.03928 ? + gsRGB / 12.92 : Math.pow(((gsRGB + 0.055) / 1.055), 2.4); + let b = bsRGB <= 0.03928 ? + bsRGB / 12.92 : Math.pow(((bsRGB + 0.055) / 1.055), 2.4); + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +/** + * Returns the contrast ratio between two colors, expressed in HTML notation + * (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Contrast_ratio + */ +function contrastRatio(color1, color2) { + let lc1 = relativeLuminance(color1); + let lc2 = relativeLuminance(color2); + /* order by luminance, lighter before darker */ + let l1 = Math.max(lc1, lc2); + let l2 = Math.min(lc1, lc2); + + return (l1 + 0.05) / (l2 + 0.05); +} + +/** + * Finds a suitable foreground (text) color for a given background color. + * If the desiredForegroundColor argument is defined, return this color if it + * has enough contrast against the background, otherwise (or if that argument + * is undefined), return the one of black or white giving the highest contrast + */ +function getContrastingForegroundColor(backgroundColor, + desiredForegroundColor) { + if (!desiredForegroundColor || + (contrastRatio(backgroundColor, desiredForegroundColor) < + MIN_CONTRAST_RATIO)) { + let contrastAgainstWhite = contrastRatio(backgroundColor, 'ffffff'); + let contrastAgainstBlack = contrastRatio(backgroundColor, '000000'); + + if (contrastAgainstWhite > contrastAgainstBlack) + return 'ffffff'; + else + return '000000'; + } else { + return desiredForegroundColor; + } +} diff --git a/src/constants.js b/src/constants.js new file mode 100644 index 00000000..a3419ec7 --- /dev/null +++ b/src/constants.js @@ -0,0 +1,28 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2021, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Constraints of visible location in the standard Mercaartor projection. + */ +var MIN_LATITUDE = -85.0511287798; +var MAX_LATITUDE = 85.0511287798; +var MIN_LONGITUDE = -180; +var MAX_LONGITUDE = 180; diff --git a/src/contactPlace.js b/src/contactPlace.js new file mode 100644 index 00000000..6c036c22 --- /dev/null +++ b/src/contactPlace.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; + +const Place = imports.place; + +var ContactPlace = GObject.registerClass( +class ContactPlace extends Place.Place { + _init(params) { + this._contact = params.contact; + delete params.contact; + + params.store = false; + super._init(params); + } + + get icon() { + return this._contact.icon; + } + + get uniqueID() { + return [this.name, + this.osm_type, + this.osm_id].join('-'); + } +}); diff --git a/src/contextMenu.js b/src/contextMenu.js new file mode 100644 index 00000000..6de6a8c8 --- /dev/null +++ b/src/contextMenu.js @@ -0,0 +1,201 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEdit = imports.osmEdit; +const OSMEditDialog = imports.osmEditDialog; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; +const ZoomInDialog = imports.zoomInDialog; + +var ContextMenu = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/context-menu.ui', + InternalChildren: [ 'whatsHereItem', + 'geoURIItem', + 'addOSMLocationItem', + 'routeFromHereItem', + 'addIntermediateDestinationItem', + 'routeToHereItem' ], +}, class ContextMenu extends Gtk.Menu { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + super._init(params); + + this._buttonGesture = + new Gtk.GestureSingle({ widget: this._mapView, + button: Gdk.BUTTON_SECONDARY }); + this._buttonGesture.connect('end', this._onButtonRelease.bind(this)); + + this._whatsHereItem.connect('activate', + this._onWhatsHereActivated.bind(this)); + this._geoURIItem.connect('activate', + this._onGeoURIActivated.bind(this)); + this._addOSMLocationItem.connect('activate', + this._onAddOSMLocationActivated.bind(this)); + this._routeFromHereItem.connect('activate', + this._onRouteFromHereActivated.bind(this)); + this._addIntermediateDestinationItem.connect('activate', + this._onAddIntermediateDestinationActivated.bind(this)); + this._routeToHereItem.connect('activate', + this._onRouteToHereActivated.bind(this)); + Application.routeQuery.connect('notify::points', + this._routingUpdate.bind(this)); + this._routingUpdate(); + } + + _onButtonRelease(gesture, sequence) { + let event = gesture.get_last_event(sequence); + let [, x, y] = event.get_coords(); + this._longitude = this._mapView.view.x_to_longitude(x); + this._latitude = this._mapView.view.y_to_latitude(y); + + // Need idle to avoid Clutter dead-lock on re-entrance + Mainloop.idle_add(() => this.popup_at_pointer(event)); + } + + _routingUpdate() { + let query = Application.routeQuery; + let numPoints = query.points.length; + + this._routeFromHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._routeToHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._addIntermediateDestinationItem.sensitive = + query.filledPoints.length >= 2 && numPoints < RouteQuery.MAX_QUERY_POINTS; + } + + _onRouteFromHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.points[0].place = place; + } + + _onRouteToHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.points.last().place = place; + } + + _onAddIntermediateDestinationActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.addPoint(-1).place = place; + } + + _onWhatsHereActivated() { + GeocodeFactory.getGeocoder().reverse(this._latitude, this._longitude, + (place) => { + if (place) { + this._mapView.showPlace(place, false); + } else { + let msg = _("Nothing found here!"); + + Utils.showDialog(msg, Gtk.MessageType.INFO, this._mainWindow); + } + }); + } + + _onGeoURIActivated() { + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + let uri = location.to_uri(Geocode.LocationURIScheme.GEO); + + clipboard.set_text(uri, uri.length); + } + + _onAddOSMLocationActivated() { + let osmEdit = Application.osmEdit; + /* if the user is not already signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this._mainWindow, true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._addOSMLocation(); + }); + + return; + } + + this._addOSMLocation(); + } + + _addOSMLocation() { + let osmEdit = Application.osmEdit; + + if (this._mapView.view.get_zoom_level() < OSMEdit.MIN_ADD_LOCATION_ZOOM_LEVEL) { + let zoomInDialog = + new ZoomInDialog.ZoomInDialog({ longitude: this._longitude, + latitude: this._latitude, + view: this._mapView.view, + transient_for: this._mainWindow, + modal: true }); + + zoomInDialog.connect('response', () => zoomInDialog.destroy()); + zoomInDialog.show_all(); + return; + } + + let dialog = + osmEdit.createEditNewDialog(this._mainWindow, + this._latitude, this._longitude); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMEditDialog.Response.UPLOADED) { + Utils.showDialog(_("Location was added to the map, note that it may take a while before it shows on the map and in search results."), + Gtk.MessageType.INFO, this._mainWindow); + } + }); + } +}); diff --git a/src/epaf.js b/src/epaf.js new file mode 100644 index 00000000..4465a730 --- /dev/null +++ b/src/epaf.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jussi Kukkonen + * Mattias Bengtsson + */ + +// Google encoded polyline decoder +// https://developers.google.com/maps/documentation/utilities/polylinealgorithm + +const Champlain = imports.gi.Champlain; + +function _decodeValue(data, index) { + let b; + let shift = 0; + let value = 0; + + do { + // 63 added to keep string printable + b = data.charCodeAt(index++) - 63; + + // Get 5 bits at a time until hit the end of value + // (which is not OR'd with 0x20) + value |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + + // negative values are encoded as two's complement + let ret_val = ((value & 1) ? ~(value >> 1) : (value >> 1)); + return [ret_val, index]; +} + +function decode(data) { + let length = data.length; + let polyline = []; + let index = 0; + let lat = 0; + let lon = 0; + + while (index < length) { + let latdelta, londelta; + + [latdelta, index] = _decodeValue(data, index); + [londelta, index] = _decodeValue(data, index); + + // first value is absolute, rest are relative to previous value + lat += latdelta; + lon += londelta; + polyline.push(new Champlain.Coordinate({ + latitude: lat * 1e-5, + longitude: lon * 1e-5 + })); + } + return polyline; +} diff --git a/src/exportViewDialog.js b/src/exportViewDialog.js new file mode 100644 index 00000000..42b7996d --- /dev/null +++ b/src/exportViewDialog.js @@ -0,0 +1,183 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _PREVIEW_WIDTH = 150; + +var ExportViewDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/export-view-dialog.ui', + InternalChildren: [ 'exportButton', + 'cancelButton', + 'filenameEntry', + 'fileChooserButton', + 'previewArea', + 'layersCheckButton' ], +}, class ExportViewDialog extends Gtk.Dialog { + _init(params) { + this._surface = params.surface; + delete params.surface; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._cancelButton.connect('clicked', () => this.response(Response.CANCEL)); + this._exportButton.connect('clicked', () => this._exportView()); + this._filenameEntry.connect('changed', () => this._onFileNameChanged()); + this._fileChooserButton.connect('file-set', () => this._onFolderChanged()); + this._layersCheckButton.connect('toggled', () => this._includeLayersChanged()); + + + this._folder = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES); + if (!this._folder) + this._folder = GLib.get_user_data_dir(); + + this._filenameEntry.text = this._fileName = this._getName(); + this._fileChooserButton.set_current_folder(this._folder); + this._setupPreviewArea(); + } + + _getName() { + /* Translators: This is a format string for a PNG filename for an + * exported image with coordinates. The .png extension should be kept + * intact in the translated string. + */ + return _("Maps at %f, %f.png").format(this._latitude.toFixed(2), + this._longitude.toFixed(2)); + } + + _setupPreviewArea() { + let [surfaceWidth, surfaceHeight] = this._mapView.view.get_size(); + + let width = _PREVIEW_WIDTH; + this._scaleFactor = width / surfaceWidth; + let height = surfaceHeight * this._scaleFactor; + + this._previewArea.set_size_request(width, height); + this._previewArea.connect('draw', + (w, cr) => this._drawPreview(w, cr)); + } + + _drawPreview(widget, cr) { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.scale(this._scaleFactor, this._scaleFactor); + cr.setSourceSurface(this._surface, 0, 0); + cr.paint(); + } + + _onFileNameChanged() { + let name = GLib.filename_from_utf8(this._filenameEntry.text, -1)[0]; + name = name.toString(); + if (!name) { + this._exportButton.sensitive= false; + return; + } + + try { + GLib.build_filenamev([this._folder, name]); + this._exportButton.sensitive = true; + this._fileName = name; + } catch(e) { + this._exportButton.sensitive = false; + } + } + + _onFolderChanged() { + let folder = this._fileChooserButton.get_filename(); + + if (!GLib.file_test(folder, GLib.FileTest.IS_DIR)) { + this._exportButton.sensitive= false; + return; + } + if (!GLib.file_test(folder, GLib.FileTest.EXISTS)) { + this._exportButton.sensitive = false; + return; + } + + this._exportButton.sensitive = true; + this._folder = folder; + } + + _exportView() { + let [width, height] = this._mapView.view.get_size(); + let pixbuf = Gdk.pixbuf_get_from_surface(this._surface, 0, 0, width, height); + let path = GLib.build_filenamev([this._folder, this._fileName]); + + try { + pixbuf.savev(path, "png", [], []); + this.response(Response.SUCCESS); + } catch(e) { + Utils.debug('failed to export view: ' + e.message); + let details = null; + + if (e.matches(GLib.FileError, GLib.FileError.ROFS)) + details = _("Filesystem is read only"); + else if (e.matches(GLib.FileError, GLib.FileError.ACCES)) + details = _("You do not have permission to save there"); + else if (e.matches(GLib.FileError, GLib.FileError.NOENT)) + details = _("The directory does not exist"); + else if (e.matches(GLib.FileError, GLib.FileError.ISDIR)) + details = _("No filename specified"); + + let dialog = new Gtk.MessageDialog({ + transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("Unable to export view"), + secondary_text: details + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + } + + _includeLayersChanged() { + let includeLayers = this._layersCheckButton.get_active(); + + this._surface = this._mapView.view.to_surface(includeLayers); + this._previewArea.queue_draw(); + } +}); diff --git a/src/favoritesPopover.js b/src/favoritesPopover.js new file mode 100644 index 00000000..097c1e58 --- /dev/null +++ b/src/favoritesPopover.js @@ -0,0 +1,120 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; + +const _N_VISIBLE = 6; + +var FavoritesPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/favorites-popover.ui', + InternalChildren: [ 'mainGrid', + 'entry', + 'scrolledWindow', + 'list' ], + Properties: { + 'rows': GObject.ParamSpec.int('rows', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, GLib.MAXINT32, 0) + } +}, class FavoritesPopover extends Gtk.Popover { + + _init(params) { + params = params || { }; + + this._mapView = params.mapView; + delete params.mapView; + + params.transitions_enabled = false; + super._init(params); + + this._rows = 0; + + let placeType = PlaceStore.PlaceType.FAVORITE; + this._model = Application.placeStore.getModelForPlaceType(placeType); + + this._model.connect('row-deleted', + this._updateList.bind(this)); + this._model.connect('row-inserted', + this._updateList.bind(this)); + + this._list.set_header_func(function(row, before) { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this.connect('notify::rows', () => { + let visible = Math.min(this._rows, _N_VISIBLE); + let separators = visible - 1; // separators are 1px + let height = PlaceListRow.ROW_HEIGHT * visible + separators; + + this._scrolledWindow.min_content_height = height; + this._entry.visible = this._rows > _N_VISIBLE; + }); + + this._entry.connect('changed', + () => this._list.invalidate_filter(this._list)); + + this._list.connect('row-activated', (list, row) => { + this.hide(); + this._mapView.showPlace(row.place, true); + }); + + this._list.set_filter_func((row) => { + return row.place.match(this._entry.text); + }); + + this._updateList(); + } + + set rows(rows) { + if (rows !== this._rows) { + this._rows = rows; + this.notify('rows'); + } + } + + get rows() { + return this._rows; + } + + _updateList() { + this._list.forall((row) => row.destroy()); + + let rows = 0; + this._model.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + + let row = new PlaceListRow.PlaceListRow({ place: place, + can_focus: true }); + this._list.insert(row, -1); + rows++; + }); + + this.rows = rows; + } +}); diff --git a/src/foursquareBackend.js b/src/foursquareBackend.js new file mode 100644 index 00000000..164ddfb6 --- /dev/null +++ b/src/foursquareBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const FoursquareGoaAuthorizer = imports.foursquareGoaAuthorizer; +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://foursquare.com/v/foursquare-hq/%s'; + +var FoursquareBackend = GObject.registerClass( +class SocialServiceFoursquareBackend extends ServiceBackend.ServiceBackend { + + get name() { + return 'foursquare'; + } + + createRestCall(authorizer) { + return FoursquareGoaAuthorizer.newRestCall(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refreshAuthorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goaObject; + } + + createAuthorizer(account) { + return new FoursquareGoaAuthorizer.FoursquareGoaAuthorizer({ goaObject: account }); + } + + isTokenInvalid(restCall, data) { + return data.meta.code === 401 || data.meta.code === 403; + } + + isInvalidCall(restCall, data) { + return !data || data.meta.code !== 200; + } + + getCallResultCode(restCall, data) { + return data ? data.meta.code : restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? data.meta.errorDetail : restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + let broadcast = checkIn.privacy; + + if (checkIn.broadcastFacebook) + broadcast += ',facebook'; + + if (checkIn.broadcastTwitter) + broadcast += ',twitter'; + + this.callAsync(authorizer, + 'POST', + 'checkins/add', + { + 'shout': checkIn.message, + 'venueId': checkIn.place.id, + 'broadcast': broadcast + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'venues/search', + { + 'll': latitude + ',' + longitude, + 'radius': distance, + 'intent': 'checkin' + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.response.venues.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.lat, + longitude: place.location.lng, + category: place.categories.length > 0 ? + place.categories[0].name : + null, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/foursquareGoaAuthorizer.js b/src/foursquareGoaAuthorizer.js new file mode 100644 index 00000000..d51ba968 --- /dev/null +++ b/src/foursquareGoaAuthorizer.js @@ -0,0 +1,91 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Rest = imports.gi.Rest; + +const _FOURSQUARE_API_VERSION = '20140226'; + +var FoursquareGoaAuthorizer = class FoursquareGoaAuthorizer { + constructor(params) { + if (!params.goaObject) { + logError('FoursquareGoaAuthorizer requires goaObject parameter'); + return; + } + + this.goaObject = params.goaObject; + } + + get goaObject() { + return this._goaObject; + } + + set goaObject(object) { + this._goaObject = object; + this._accessToken = null; + } + + _refreshAccessToken(cancellable) { + if (this._accessToken) + return true; + + let getAccessTokenResult = this.goaObject.get_oauth2_based().call_get_access_token_sync(cancellable); + + if (getAccessTokenResult[0]) { + this._accessToken = getAccessTokenResult[1]; + return true; + } + + return false; + } + + processCall(restCall) { + this._refreshAccessToken(null); + restCall.add_param('oauth_token', this._accessToken); + restCall.add_param('v', _FOURSQUARE_API_VERSION); + } + + processMessage(soupMessage) { + this._refreshAccessToken(null); + let uri = soupMessage.get_uri(); + uri.set_query(uri, 'oauth_token' + this._accessToken + '&v=' + _FOURSQUARE_API_VERSION); + } + + refreshAuthorization(cancellable) { + let ensureCredentialsResult = this.goaObject.get_account().call_ensure_credentials_sync(cancellable); + if (ensureCredentialsResult[0]) { + this._accessToken = null; + return this._refreshAccessToken(cancellable); + } + + return false; + } +}; + +function newRestCall(authorizer) +{ + let proxy = new Rest.Proxy({ url_format: 'https://api.foursquare.com/v2', + binding_required: false }); + let restCall = proxy.new_call(); + + authorizer.processCall(restCall); + + return restCall; +} diff --git a/src/geoJSONShapeLayer.js b/src/geoJSONShapeLayer.js new file mode 100644 index 00000000..5b9b1b1b --- /dev/null +++ b/src/geoJSONShapeLayer.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +var GeoJSONShapeLayer = GObject.registerClass( +class GeoJSONShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + getName() { + /* Special Case since this file extension contains 2 periods */ + let suffix = '.geo.json'; + if (this.filename.endsWith(suffix)) + return this.filename.replace(new RegExp(suffix + '$'), ''); + else + return super.getName(); + } + + _parseContent() { + this._mapSource.parse(JSON.parse(Utils.getBufferText(this._fileContents))); + } +}); + +GeoJSONShapeLayer.mimeTypes = ['application/vnd.geo+json', + 'application/geo+json', + 'application/json']; +GeoJSONShapeLayer.displayName = 'GeoJSON'; +GeoJSONShapeLayer.createInstance = function(params) { + return new GeoJSONShapeLayer(params); +}; diff --git a/src/geoJSONSource.js b/src/geoJSONSource.js new file mode 100644 index 00000000..0027ded1 --- /dev/null +++ b/src/geoJSONSource.js @@ -0,0 +1,281 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const BoundingBox = imports.boundingBox; +const Geojsonvt = imports.geojsonvt.geojsonvt; +const Location = imports.location; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const Service = imports.service; +const Utils = imports.utils; +const GeoJSONStyle = imports.geoJSONStyle; +const MapView = imports.mapView; + +const TileFeature = { POINT: 1, + LINESTRING: 2, + POLYGON: 3 }; + +var GeoJSONSource = GObject.registerClass( +class GeoJSONSource extends Champlain.TileSource { + + _init(params) { + super._init(); + + this._mapView = params.mapView; + this._markerLayer = params.markerLayer; + this._bbox = new BoundingBox.BoundingBox(); + this._tileSize = Service.getService().tiles.street.tile_size; + } + + get bbox() { + return this._bbox; + } + + vfunc_get_tile_size() { + return this._tileSize; + } + + vfunc_get_max_zoom_level() { + return 20; + } + + vfunc_get_min_zoom_level() { + return 0; + } + + vfunc_get_id() { + return 'GeoJSONSource'; + } + + vfunc_get_name() { + return 'GeoJSONSource'; + } + + vfunc_fill_tile(tile) { + if (tile.get_state() === Champlain.State.DONE) + return; + + tile.connect('render-complete', (tile, data, size, error) => { + if(!error) { + tile.set_state(Champlain.State.DONE); + tile.display_content(); + } else if(this.next_source) + this.next_source.fill_tile(tile); + }); + + Mainloop.idle_add(() => this._renderTile(tile), tile); + } + + _validate([lon, lat]) { + if ((-180 <= lon && lon <= 180) && + (-90 <= lat && lat <= 90)) { + return; + } + + throw new Error(_("invalid coordinate")); + } + + _compose(coordinates) { + coordinates.forEach((coordinate) => { + this._validate(coordinate); + this._bbox.extend(coordinate[1], coordinate[0]); + }); + } + + _clampBBox() { + this._bbox.top = Math.min(this._bbox.top, MapView.MAX_LATITUDE); + this._bbox.left = Math.max(this._bbox.left, MapView.MIN_LONGITUDE); + this._bbox.bottom = Math.max(this._bbox.bottom, MapView.MIN_LATITUDE); + this._bbox.right = Math.min(this._bbox.right, MapView.MAX_LONGITUDE); + } + + _parseLineString(coordinates) { + this._compose(coordinates); + } + + _parsePolygon(coordinates) { + coordinates.forEach((coordinate) => this._compose(coordinate)); + } + + _parsePoint(coordinates, properties) { + let name = null; + if (properties) + name = properties.name; + + this._validate(coordinates); + this._bbox.extend(coordinates[1], + coordinates[0]); + + let location = new Location.Location({ + latitude: coordinates[1], + longitude: coordinates[0] + }); + + let place = new Place.Place({ name: name, + store: false, + location: location }); + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this._mapView }); + this._markerLayer.add_marker(placeMarker); + } + + _parseGeometry(geometry, properties) { + if(!geometry) + throw new Error(_("parse error")); + + switch(geometry.type) { + case 'LineString': + this._parseLineString(geometry.coordinates); + break; + + case 'MultiLineString': + geometry.coordinates.forEach((coordinate) => { + this._parseLineString(coordinate); + }); + break; + + case 'Polygon': + this._parsePolygon(geometry.coordinates); + break; + + case 'MultiPolygon': + geometry.coordinates.forEach((coordinate) => { + this._parsePolygon(coordinate); + }); + break; + + case 'Point': + this._parsePoint(geometry.coordinates, properties); + break; + + case 'MultiPoint': + geometry.coordinates.forEach((coordinate, properties) => { + this._parsePoint(coordinate,properties); + }); + break; + + default: + throw new Error(_("unknown geometry")); + } + } + + _parseInternal(root) { + if (!root || !root.type) + throw new Error(_("parse error")); + + switch(root.type) { + case 'FeatureCollection': + root.features.forEach((feature) => { + this._parseGeometry(feature.geometry, feature.properties); + }); + break; + + case 'Feature': + this._parseGeometry(root.geometry, root.properties); + break; + + case 'GeometryCollection': + if (!root.geometries) + throw new Error(_("parse error")); + + root.geometries.forEach((g) => this._parseGeometry(g)); + break; + + default: + this._parseGeometry(root); + } + } + + parse(json) { + this._parseInternal(json); + this._tileIndex = Geojsonvt.geojsonvt(json, { extent: this._tileSize, + maxZoom: 20 }); + this._clampBBox(); + } + + _renderTile(tile) { + let tileJSON = this._tileIndex.getTile(tile.zoom_level, tile.x, tile.y); + let content = new Clutter.Canvas({ width: this._tileSize, + height: this._tileSize }); + tile.content = new Clutter.Actor({ width: this._tileSize, + height: this._tileSize, + content: content }); + + content.connect('draw', (canvas, cr) => { + tile.set_surface(cr.getTarget()); + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + cr.setFillRule(Cairo.FillRule.EVEN_ODD); + + if (!tileJSON) { + tile.emit('render-complete', null, 0, false); + return; + } + + tileJSON.features.forEach((feature) => { + if (feature.type === TileFeature.POINT) + return; + + let geoJSONStyleObj = GeoJSONStyle.GeoJSONStyle.parseSimpleStyle(feature.tags); + + feature.geometry.forEach((geometry) => { + let first = true; + cr.moveTo(0, 0); + cr.setLineWidth(geoJSONStyleObj.lineWidth); + cr.setSourceRGBA(geoJSONStyleObj.color.red, + geoJSONStyleObj.color.green, + geoJSONStyleObj.color.blue, + geoJSONStyleObj.alpha); + + geometry.forEach(function(coord) { + if (first) { + cr.moveTo(coord[0], coord[1]); + first = false; + } else { + cr.lineTo(coord[0], coord[1]); + } + }); + }); + if (feature.type === TileFeature.POLYGON) { + cr.closePath(); + cr.strokePreserve(); + cr.setSourceRGBA(geoJSONStyleObj.fillColor.red, + geoJSONStyleObj.fillColor.green, + geoJSONStyleObj.fillColor.blue, + geoJSONStyleObj.fillAlpha); + cr.fill(); + } else { + cr.stroke(); + } + }); + + tile.emit('render-complete', null, 0, false); + }); + + content.invalidate(); + } +}); diff --git a/src/geoJSONStyle.js b/src/geoJSONStyle.js new file mode 100644 index 00000000..2cfd7162 --- /dev/null +++ b/src/geoJSONStyle.js @@ -0,0 +1,87 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Alaf Azam + */ + +const DEFAULT_LINE_WIDTH = 5; +const DEFAULT_COLOR = '69B1FF'; + +var GeoJSONStyle = class GeoJSONStyle { + constructor(params) { + if (params.lineWidth || params.lineWidth === 0) + this.lineWidth = params.lineWidth; + else + this.lineWidth = DEFAULT_LINE_WIDTH; + + if (params.alpha || params.alpha === 0) + this.alpha = params.alpha; + else + this.alpha = 1; + + if (params.fillAlpha || params.fillAlpha === 0) + this.fillAlpha = params.fillAlpha; + else + this.fillAlpha = 0.25; + + this.color = this._hexToColor(params.color || DEFAULT_COLOR); + this.fillColor = this._hexToColor(params.fillColor) || { red: 0.37, + green: 0.62, + blue: 0.87 }; + } + + _hexToColor(colorString) { + let color = null; + + if (!colorString) + return null; + + if (colorString.startsWith('#')) { + colorString = colorString.slice(1); + } + + if (colorString.length === 3) { + colorString = colorString.match(/([0-9a-f]{3})$/i); + if (colorString) { + color = { + red: (parseInt(colorString[0].chatAt(0), 16) * 0x11)/255, + green: (parseInt(colorString[0].chatAt(1), 16) * 0x11)/255, + blue: (parseInt(colorString[0].chatAt(2), 16) * 0x11)/255 + }; + } + } else { + colorString = colorString.match(/([0-9a-f]{6})$/i); + if (colorString) { + color = { + red: parseInt(colorString[0].substr(0, 2), 16)/255, + green: parseInt(colorString[0].substr(2, 2), 16)/255, + blue: parseInt(colorString[0].substr(4, 2), 16)/255 + }; + } + } + + return color; + } +}; + +GeoJSONStyle.parseSimpleStyle = function(tags) { + return new GeoJSONStyle({ alpha: tags['stroke-opacity'], + fillAlpha: tags['fill-opacity'], + color: tags['stroke'], + fillColor: tags['fill'], + lineWidth: tags['stroke-width'] }); +} diff --git a/src/geoclue.js b/src/geoclue.js new file mode 100644 index 00000000..14f60ecb --- /dev/null +++ b/src/geoclue.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const GClue = imports.gi.Geoclue; +const Gio = imports.gi.Gio; +const Mainloop = imports.mainloop; + +const Place = imports.place; +const Location = imports.location; +const Settings = imports.settings; +const Utils = imports.utils; + +var State = { + INITIAL: 0, + ON: 1, + DENIED: 2, + FAILED: 3 +}; + +var Geoclue = GObject.registerClass({ + Signals: { + 'location-changed': { } + }, + Properties: { + 'state': GObject.ParamSpec.int('state', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + State.INITIAL, + State.FAILED, + State.INITIAL) + }, +}, class Geoclue extends GObject.Object { + + set state(s) { + this._state = s; + this.notify('state'); + } + + get state() { + return this._state; + } + + _init() { + super._init(); + this.place = null; + this._state = State.INITIAL; + + this.start(null); + } + + start(callback) { + let id = 'org.gnome.Maps'; + let level = GClue.AccuracyLevel.EXACT; + + GClue.Simple.new(id, level, null, (object, result) => { + try { + this._simple = GClue.Simple.new_finish(result); + } + catch (e) { + Utils.debug("GeoClue2 service: " + e.message); + if (e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED)) + this.state = State.DENIED; + else + this.state = State.FAILED; + if (callback) + callback(false); + return; + } + + this._simple.connect('notify::location', + () => this._onLocationNotify(this._simple)); + this._simple.client.connect('notify::active', () => { + this.state = this._simple.client.active ? State.ON : State.DENIED; + }); + + this.state = State.ON; + this._onLocationNotify(this._simple); + if (callback) + callback(true); + }); + } + + _onLocationNotify(simple) { + let geoclueLocation = simple.get_location(); + let location = new Location.Location({ + latitude: geoclueLocation.latitude, + longitude: geoclueLocation.longitude, + accuracy: geoclueLocation.accuracy, + heading: geoclueLocation.heading, + description: geoclueLocation.description + }); + this._updateLocation(location); + } + + _updateLocation(location) { + if (!this.place) + this.place = new Place.Place({ name: _("Current Location"), + isCurrentLocation: true }); + + this.place.location = location; + this.emit('location-changed'); + Utils.debug("Updated location: " + location.description + + " (" + location.latitude + ", " + location.longitude + + ", accuracy = " + location.accuracy + " m)"); + } +}); diff --git a/src/geocode.js b/src/geocode.js new file mode 100644 index 00000000..7623684a --- /dev/null +++ b/src/geocode.js @@ -0,0 +1,39 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Service = imports.service; +const GraphHopperGeocode = imports.graphHopperGeocode; +const PhotonGeocode = imports.photonGeocode; + +var _geocoder = null; + +function getGeocoder() { + if (!_geocoder) { + if (Service.getService().photonGeocode) + _geocoder = new PhotonGeocode.PhotonGeocode(); + else + _geocoder = new GraphHopperGeocode.GraphHopperGeocode(); + } + + return _geocoder; +} + + diff --git a/src/geojson-vt/LICENSE b/src/geojson-vt/LICENSE new file mode 100644 index 00000000..00e99140 --- /dev/null +++ b/src/geojson-vt/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/src/geojson-vt/clip.js b/src/geojson-vt/clip.js new file mode 100644 index 00000000..cad7a21e --- /dev/null +++ b/src/geojson-vt/clip.js @@ -0,0 +1,149 @@ +'use strict'; + +/* clip features between two axis-parallel lines: + * | | + * ___|___ | / + * / | \____|____/ + * | | + */ + +function clip(features, scale, k1, k2, axis, intersect, minAll, maxAll) { + + k1 /= scale; + k2 /= scale; + + if (minAll >= k1 && maxAll <= k2) return features; // trivial accept + else if (minAll > k2 || maxAll < k1) return null; // trivial reject + + var clipped = []; + + for (var i = 0; i < features.length; i++) { + + var feature = features[i], + geometry = feature.geometry, + type = feature.type, + min, max; + + min = feature.min[axis]; + max = feature.max[axis]; + + if (min >= k1 && max <= k2) { // trivial accept + clipped.push(feature); + continue; + } else if (min > k2 || max < k1) continue; // trivial reject + + var slices = type === 1 ? + clipPoints(geometry, k1, k2, axis) : + clipGeometry(geometry, k1, k2, axis, intersect, type === 3); + + if (slices.length) { + // if a feature got clipped, it will likely get clipped on the next zoom level as well, + // so there's no need to recalculate bboxes + clipped.push({ + geometry: slices, + type: type, + tags: features[i].tags || null, + min: feature.min, + max: feature.max + }); + } + } + + return clipped.length ? clipped : null; +} + +function clipPoints(geometry, k1, k2, axis) { + var slice = []; + + for (var i = 0; i < geometry.length; i++) { + var a = geometry[i], + ak = a[axis]; + + if (ak >= k1 && ak <= k2) slice.push(a); + } + return slice; +} + +function clipGeometry(geometry, k1, k2, axis, intersect, closed) { + + var slices = []; + + for (var i = 0; i < geometry.length; i++) { + + var ak = 0, + bk = 0, + b = null, + points = geometry[i], + area = points.area, + dist = points.dist, + len = points.length, + a, j, last; + + var slice = []; + + for (j = 0; j < len - 1; j++) { + a = b || points[j]; + b = points[j + 1]; + ak = bk || a[axis]; + bk = b[axis]; + + if (ak < k1) { + + if ((bk > k2)) { // ---|-----|--> + slice.push(intersect(a, b, k1), intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk >= k1) slice.push(intersect(a, b, k1)); // ---|--> | + + } else if (ak > k2) { + + if ((bk < k1)) { // <--|-----|--- + slice.push(intersect(a, b, k2), intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk <= k2) slice.push(intersect(a, b, k2)); // | <--|--- + + } else { + + slice.push(a); + + if (bk < k1) { // <--|--- | + slice.push(intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk > k2) { // | ---|--> + slice.push(intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + } + // | --> | + } + } + + // add the last point + a = points[len - 1]; + ak = a[axis]; + if (ak >= k1 && ak <= k2) slice.push(a); + + // close the polygon if its endpoints are not the same after clipping + + last = slice[slice.length - 1]; + if (closed && last && (slice[0][0] !== last[0] || slice[0][1] !== last[1])) slice.push(slice[0]); + + // add the final slice + newSlice(slices, slice, area, dist); + } + + return slices; +} + +function newSlice(slices, slice, area, dist) { + if (slice.length) { + // we don't recalculate the area/length of the unclipped geometry because the case where it goes + // below the visibility threshold as a result of clipping is rare, so we avoid doing unnecessary work + slice.area = area; + slice.dist = dist; + + slices.push(slice); + } + return []; +} diff --git a/src/geojson-vt/convert.js b/src/geojson-vt/convert.js new file mode 100644 index 00000000..eda26c7d --- /dev/null +++ b/src/geojson-vt/convert.js @@ -0,0 +1,147 @@ +'use strict'; + +const simplify = imports.geojsonvt.simplify.simplify; + +// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data + +function convert(data, tolerance) { + var features = []; + + if (data.type === 'FeatureCollection') { + for (var i = 0; i < data.features.length; i++) { + convertFeature(features, data.features[i], tolerance); + } + } else if (data.type === 'Feature') { + convertFeature(features, data, tolerance); + + } else { + // single geometry or a geometry collection + convertFeature(features, {geometry: data}, tolerance); + } + return features; +} + +function convertFeature(features, feature, tolerance) { + if (feature.geometry === null) { + // ignore features with null geometry + return; + } + + var geom = feature.geometry, + type = geom.type, + coords = geom.coordinates, + tags = feature.properties, + i, j, rings; + + if (type === 'Point') { + features.push(create(tags, 1, [projectPoint(coords)])); + + } else if (type === 'MultiPoint') { + features.push(create(tags, 1, project(coords))); + + } else if (type === 'LineString') { + features.push(create(tags, 2, [project(coords, tolerance)])); + + } else if (type === 'MultiLineString' || type === 'Polygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + rings.push(project(coords[i], tolerance)); + } + features.push(create(tags, type === 'Polygon' ? 3 : 2, rings)); + + } else if (type === 'MultiPolygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + for (j = 0; j < coords[i].length; j++) { + rings.push(project(coords[i][j], tolerance)); + } + } + features.push(create(tags, 3, rings)); + + } else if (type === 'GeometryCollection') { + for (i = 0; i < geom.geometries.length; i++) { + convertFeature(features, { + geometry: geom.geometries[i], + properties: tags + }, tolerance); + } + + } else { + throw new Error('Input data is not a valid GeoJSON object.'); + } +} + +function create(tags, type, geometry) { + var feature = { + geometry: geometry, + type: type, + tags: tags || null, + min: [2, 1], // initial bbox values; + max: [-1, 0] // note that coords are usually in [0..1] range + }; + calcBBox(feature); + return feature; +} + +function project(lonlats, tolerance) { + var projected = []; + for (var i = 0; i < lonlats.length; i++) { + projected.push(projectPoint(lonlats[i])); + } + if (tolerance) { + simplify(projected, tolerance); + calcSize(projected); + } + return projected; +} + +function projectPoint(p) { + var sin = Math.sin(p[1] * Math.PI / 180), + x = (p[0] / 360 + 0.5), + y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); + + y = y < 0 ? 0 : + y > 1 ? 1 : y; + + return [x, y, 0]; +} + +// calculate area and length of the poly +function calcSize(points) { + var area = 0, + dist = 0; + + for (var i = 0, a, b; i < points.length - 1; i++) { + a = b || points[i]; + b = points[i + 1]; + + area += a[0] * b[1] - b[0] * a[1]; + + // use Manhattan distance instead of Euclidian one to avoid expensive square root computation + dist += Math.abs(b[0] - a[0]) + Math.abs(b[1] - a[1]); + } + points.area = Math.abs(area / 2); + points.dist = dist; +} + +// calculate the feature bounding box for faster clipping later +function calcBBox(feature) { + var geometry = feature.geometry, + min = feature.min, + max = feature.max; + + if (feature.type === 1) calcRingBBox(min, max, geometry); + else for (var i = 0; i < geometry.length; i++) calcRingBBox(min, max, geometry[i]); + + return feature; +} + +function calcRingBBox(min, max, points) { + for (var i = 0, p; i < points.length; i++) { + p = points[i]; + min[0] = Math.min(p[0], min[0]); + max[0] = Math.max(p[0], max[0]); + min[1] = Math.min(p[1], min[1]); + max[1] = Math.max(p[1], max[1]); + } +} diff --git a/src/geojson-vt/index.js b/src/geojson-vt/index.js new file mode 100644 index 00000000..bd0c6e59 --- /dev/null +++ b/src/geojson-vt/index.js @@ -0,0 +1,238 @@ +'use strict'; + +const convert = imports.geojsonvt.convert.convert; +const transform = { tile: imports.geojsonvt.transform.transformTile, + point: imports.geojsonvt.transform.transformPoint }; +const clip = imports.geojsonvt.clip.clip; +const createTile = imports.geojsonvt.tile.createTile; +const wrap = imports.geojsonvt.wrap.wrap; + +function geojsonvt(data, options) { + return new GeoJSONVT(data, options); +} + +function GeoJSONVT(data, options) { + options = this.options = extend(Object.create(this.options), options); + + var debug = options.debug; + + if (debug) console.time('preprocess data'); + + var z2 = 1 << options.maxZoom, // 2^z + features = convert(data, options.tolerance / (z2 * options.extent)); + + this.tiles = {}; + this.tileCoords = []; + + if (debug) { + console.timeEnd('preprocess data'); + console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); + console.time('generate tiles'); + this.stats = {}; + this.total = 0; + } + + features = wrap(features, options.buffer / options.extent, intersectX); + + // start slicing from the top tile down + if (features.length) this.splitTile(features, 0, 0, 0); + + if (debug) { + if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); + console.timeEnd('generate tiles'); + console.log('tiles generated:', this.total, JSON.stringify(this.stats)); + } +} + +GeoJSONVT.prototype.options = { + maxZoom: 14, // max zoom to preserve detail on + indexMaxZoom: 5, // max zoom in the tile index + indexMaxPoints: 100000, // max number of points per tile in the tile index + solidChildren: false, // whether to tile solid square tiles further + tolerance: 3, // simplification tolerance (higher means simpler) + extent: 4096, // tile extent + buffer: 64, // tile buffer on each side + debug: 0 // logging level (0, 1 or 2) +}; + +GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { + + var stack = [features, z, x, y], + options = this.options, + debug = options.debug, + solid = null; + + // avoid recursion by using a processing queue + while (stack.length) { + y = stack.pop(); + x = stack.pop(); + z = stack.pop(); + features = stack.pop(); + + var z2 = 1 << z, + id = toID(z, x, y), + tile = this.tiles[id], + tileTolerance = z === options.maxZoom ? 0 : options.tolerance / (z2 * options.extent); + + if (!tile) { + if (debug > 1) console.time('creation'); + + tile = this.tiles[id] = createTile(features, z2, x, y, tileTolerance, z === options.maxZoom); + this.tileCoords.push({z: z, x: x, y: y}); + + if (debug) { + if (debug > 1) { + console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', + z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); + console.timeEnd('creation'); + } + var key = 'z' + z; + this.stats[key] = (this.stats[key] || 0) + 1; + this.total++; + } + } + + // save reference to original geometry in tile so that we can drill down later if we stop now + tile.source = features; + + // if it's the first-pass tiling + if (!cz) { + // stop tiling if we reached max zoom, or if the tile is too simple + if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; + + // if a drilldown to a specific tile + } else { + // stop tiling if we reached base zoom or our target tile zoom + if (z === options.maxZoom || z === cz) continue; + + // stop tiling if it's not an ancestor of the target tile + var m = 1 << (cz - z); + if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; + } + + // stop tiling if the tile is solid clipped square + if (!options.solidChildren && isClippedSquare(tile, options.extent, options.buffer)) { + if (cz) solid = z; // and remember the zoom if we're drilling down + continue; + } + + // if we slice further down, no need to keep source geometry + tile.source = null; + + if (debug > 1) console.time('clipping'); + + // values we'll use for clipping + var k1 = 0.5 * options.buffer / options.extent, + k2 = 0.5 - k1, + k3 = 0.5 + k1, + k4 = 1 + k1, + tl, bl, tr, br, left, right; + + tl = bl = tr = br = null; + + left = clip(features, z2, x - k1, x + k3, 0, intersectX, tile.min[0], tile.max[0]); + right = clip(features, z2, x + k2, x + k4, 0, intersectX, tile.min[0], tile.max[0]); + + if (left) { + tl = clip(left, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + bl = clip(left, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (right) { + tr = clip(right, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + br = clip(right, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (debug > 1) console.timeEnd('clipping'); + + if (tl) stack.push(tl, z + 1, x * 2, y * 2); + if (bl) stack.push(bl, z + 1, x * 2, y * 2 + 1); + if (tr) stack.push(tr, z + 1, x * 2 + 1, y * 2); + if (br) stack.push(br, z + 1, x * 2 + 1, y * 2 + 1); + } + + return solid; +}; + +GeoJSONVT.prototype.getTile = function (z, x, y) { + var options = this.options, + extent = options.extent, + debug = options.debug; + + var z2 = 1 << z; + x = ((x % z2) + z2) % z2; // wrap tile x coordinate + + var id = toID(z, x, y); + if (this.tiles[id]) return transform.tile(this.tiles[id], extent); + + if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); + + var z0 = z, + x0 = x, + y0 = y, + parent; + + while (!parent && z0 > 0) { + z0--; + x0 = Math.floor(x0 / 2); + y0 = Math.floor(y0 / 2); + parent = this.tiles[toID(z0, x0, y0)]; + } + + if (!parent || !parent.source) return null; + + // if we found a parent tile containing the original geometry, we can drill down from it + if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); + + // it parent tile is a solid clipped square, return it instead since it's identical + if (isClippedSquare(parent, extent, options.buffer)) return transform.tile(parent, extent); + + if (debug > 1) console.time('drilling down'); + var solid = this.splitTile(parent.source, z0, x0, y0, z, x, y); + if (debug > 1) console.timeEnd('drilling down'); + + // one of the parent tiles was a solid clipped square + if (solid !== null) { + var m = 1 << (z - solid); + id = toID(solid, Math.floor(x / m), Math.floor(y / m)); + } + + return this.tiles[id] ? transform.tile(this.tiles[id], extent) : null; +}; + +function toID(z, x, y) { + return (((1 << z) * y + x) * 32) + z; +} + +function intersectX(a, b, x) { + return [x, (x - a[0]) * (b[1] - a[1]) / (b[0] - a[0]) + a[1], 1]; +} +function intersectY(a, b, y) { + return [(y - a[1]) * (b[0] - a[0]) / (b[1] - a[1]) + a[0], y, 1]; +} + +function extend(dest, src) { + for (var i in src) dest[i] = src[i]; + return dest; +} + +// checks whether a tile is a whole-area fill after clipping; if it is, there's no sense slicing it further +function isClippedSquare(tile, extent, buffer) { + + var features = tile.source; + if (features.length !== 1) return false; + + var feature = features[0]; + if (feature.type !== 3 || feature.geometry.length > 1) return false; + + var len = feature.geometry[0].length; + if (len !== 5) return false; + + for (var i = 0; i < len; i++) { + var p = transform.point(feature.geometry[0][i], extent, tile.z2, tile.x, tile.y); + if ((p[0] !== -buffer && p[0] !== extent + buffer) || + (p[1] !== -buffer && p[1] !== extent + buffer)) return false; + } + + return true; +} diff --git a/src/geojson-vt/simplify.js b/src/geojson-vt/simplify.js new file mode 100644 index 00000000..2e55972e --- /dev/null +++ b/src/geojson-vt/simplify.js @@ -0,0 +1,72 @@ +'use strict'; + +// calculate simplification data using optimized Douglas-Peucker algorithm + +function simplify(points, tolerance) { + + var sqTolerance = tolerance * tolerance, + len = points.length, + first = 0, + last = len - 1, + stack = [], + i, maxSqDist, sqDist, index; + + // always retain the endpoints (1 is the max value) + points[first][2] = 1; + points[last][2] = 1; + + // avoid recursion by using a stack + while (last) { + + maxSqDist = 0; + + for (i = first + 1; i < last; i++) { + sqDist = getSqSegDist(points[i], points[first], points[last]); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + points[index][2] = maxSqDist; // save the point importance in squared pixels as a z coordinate + stack.push(first); + stack.push(index); + first = index; + + } else { + last = stack.pop(); + first = stack.pop(); + } + } +} + +// square distance from a point to a segment +function getSqSegDist(p, a, b) { + + var x = a[0], y = a[1], + bx = b[0], by = b[1], + px = p[0], py = p[1], + dx = bx - x, + dy = by - y; + + if (dx !== 0 || dy !== 0) { + + var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); + + if (t > 1) { + x = bx; + y = by; + + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = px - x; + dy = py - y; + + return dx * dx + dy * dy; +} diff --git a/src/geojson-vt/tile.js b/src/geojson-vt/tile.js new file mode 100644 index 00000000..764d5385 --- /dev/null +++ b/src/geojson-vt/tile.js @@ -0,0 +1,83 @@ +'use strict'; + +function createTile(features, z2, tx, ty, tolerance, noSimplify) { + var tile = { + features: [], + numPoints: 0, + numSimplified: 0, + numFeatures: 0, + source: null, + x: tx, + y: ty, + z2: z2, + transformed: false, + min: [2, 1], + max: [-1, 0] + }; + for (var i = 0; i < features.length; i++) { + tile.numFeatures++; + addFeature(tile, features[i], tolerance, noSimplify); + + var min = features[i].min, + max = features[i].max; + + if (min[0] < tile.min[0]) tile.min[0] = min[0]; + if (min[1] < tile.min[1]) tile.min[1] = min[1]; + if (max[0] > tile.max[0]) tile.max[0] = max[0]; + if (max[1] > tile.max[1]) tile.max[1] = max[1]; + } + return tile; +} + +function addFeature(tile, feature, tolerance, noSimplify) { + + var geom = feature.geometry, + type = feature.type, + simplified = [], + sqTolerance = tolerance * tolerance, + i, j, ring, p; + + if (type === 1) { + for (i = 0; i < geom.length; i++) { + simplified.push(geom[i]); + tile.numPoints++; + tile.numSimplified++; + } + + } else { + + // simplify and transform projected coordinates for tile geometry + for (i = 0; i < geom.length; i++) { + ring = geom[i]; + + // filter out tiny polylines & polygons + if (!noSimplify && ((type === 2 && ring.dist < tolerance) || + (type === 3 && ring.area < sqTolerance))) { + tile.numPoints += ring.length; + continue; + } + + var simplifiedRing = []; + + for (j = 0; j < ring.length; j++) { + p = ring[j]; + // keep points with importance > tolerance + if (noSimplify || p[2] > sqTolerance) { + simplifiedRing.push(p); + tile.numSimplified++; + } + tile.numPoints++; + } + + simplified.push(simplifiedRing); + } + } + + if (simplified.length) { + tile.features.push({ + geometry: simplified, + type: type, + tags: feature.tags || null + }); + } +} diff --git a/src/geojson-vt/transform.js b/src/geojson-vt/transform.js new file mode 100644 index 00000000..fe93e947 --- /dev/null +++ b/src/geojson-vt/transform.js @@ -0,0 +1,38 @@ +'use strict'; + +// Transforms the coordinates of each feature in the given tile from +// mercator-projected space into (extent x extent) tile space. +function transformTile(tile, extent) { + if (tile.transformed) return tile; + + var z2 = tile.z2, + tx = tile.x, + ty = tile.y, + i, j, k; + + for (i = 0; i < tile.features.length; i++) { + var feature = tile.features[i], + geom = feature.geometry, + type = feature.type; + + if (type === 1) { + for (j = 0; j < geom.length; j++) geom[j] = transformPoint(geom[j], extent, z2, tx, ty); + + } else { + for (j = 0; j < geom.length; j++) { + var ring = geom[j]; + for (k = 0; k < ring.length; k++) ring[k] = transformPoint(ring[k], extent, z2, tx, ty); + } + } + } + + tile.transformed = true; + + return tile; +} + +function transformPoint(p, extent, z2, tx, ty) { + var x = Math.round(extent * (p[0] * z2 - tx)), + y = Math.round(extent * (p[1] * z2 - ty)); + return [x, y]; +} diff --git a/src/geojson-vt/wrap.js b/src/geojson-vt/wrap.js new file mode 100644 index 00000000..7d9b243a --- /dev/null +++ b/src/geojson-vt/wrap.js @@ -0,0 +1,59 @@ +'use strict'; + +const clip = imports.geojsonvt.clip.clip; + +function wrap(features, buffer, intersectX) { + var merged = features, + left = clip(features, 1, -1 - buffer, buffer, 0, intersectX, -1, 2), // left world copy + right = clip(features, 1, 1 - buffer, 2 + buffer, 0, intersectX, -1, 2); // right world copy + + if (left || right) { + merged = clip(features, 1, -buffer, 1 + buffer, 0, intersectX, -1, 2); // center world copy + + if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center + if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center + } + + return merged; +} + +function shiftFeatureCoords(features, offset) { + var newFeatures = []; + + for (var i = 0; i < features.length; i++) { + var feature = features[i], + type = feature.type; + + var newGeometry; + + if (type === 1) { + newGeometry = shiftCoords(feature.geometry, offset); + } else { + newGeometry = []; + for (var j = 0; j < feature.geometry.length; j++) { + newGeometry.push(shiftCoords(feature.geometry[j], offset)); + } + } + + newFeatures.push({ + geometry: newGeometry, + type: type, + tags: feature.tags, + min: [feature.min[0] + offset, feature.min[1]], + max: [feature.max[0] + offset, feature.max[1]] + }); + } + + return newFeatures; +} + +function shiftCoords(points, offset) { + var newPoints = []; + newPoints.area = points.area; + newPoints.dist = points.dist; + + for (var i = 0; i < points.length; i++) { + newPoints.push([points[i][0] + offset, points[i][1], points[i][2]]); + } + return newPoints; +} diff --git a/src/gfx.js b/src/gfx.js new file mode 100644 index 00000000..8f6ce6a4 --- /dev/null +++ b/src/gfx.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Color = imports.color; + +/** + * Draws a colored badged with rounded corners and an optional outline. + * + * cr: A Cairo context to draw into + * bgColor: The fill color to draw the background with, represented as + * a string with 8-bit HEX-encoded RGB values + * outlineColor: The color to use for the outline, or null if no outline + * x: pixel offset for x-coord of top-left corner of bounding box + * y: pixel offset for y-coord of top-left corner of bounding box + * width: The width to draw the badge + * height: The height to draw the badge + */ +function drawColoredBagde(cr, bgColor, outlineColor, x, y, width, height) { + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let radius = outlineColor ? 5 : 3; + + cr.newSubPath(); + cr.arc(width - radius + x, radius + y, radius, -Math.PI / 2, 0); + cr.arc(width - radius + x, height - radius + y, radius, 0 , Math.PI / 2); + cr.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI); + cr.arc(radius + x, radius + y, radius, Math.PI, 3 * Math.PI / 2); + cr.closePath(); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.fillPreserve(); + + if (outlineColor) { + let outlineRed = Color.parseColor(outlineColor, 0); + let outlineGreen = Color.parseColor(outlineColor, 1); + let outlineBlue = Color.parseColor(outlineColor, 2); + + cr.setSourceRGB(outlineRed, outlineGreen, outlineBlue); + cr.setLineWidth(1); + cr.stroke(); + } +} diff --git a/src/gpxShapeLayer.js b/src/gpxShapeLayer.js new file mode 100644 index 00000000..e3a23b99 --- /dev/null +++ b/src/gpxShapeLayer.js @@ -0,0 +1,52 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var GpxShapeLayer = GObject.registerClass( +class GpxShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.gpx(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +GpxShapeLayer.mimeTypes = ['application/gpx+xml' ]; +GpxShapeLayer.displayName = 'GPX'; +GpxShapeLayer.createInstance = function(params) { + return new GpxShapeLayer(params); +}; diff --git a/src/graphHopper.js b/src/graphHopper.js new file mode 100644 index 00000000..1fb4f479 --- /dev/null +++ b/src/graphHopper.js @@ -0,0 +1,269 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Mainloop = imports.mainloop; +const Soup = imports.gi.Soup; + +const BoundingBox = imports.boundingBox; +const EPAF = imports.epaf; +const HTTP = imports.http; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; + +/** + * Directional sign from the GraphHopper API. + * https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md + */ +var Sign = { + KEEP_LEFT: -7, + TURN_SHARP_LEFT: -3, + TURN_LEFT: -2, + TURN_SLIGHT_LEFT: -1, + CONTINUE_ON_STREET: 0, + TURN_SLIGHT_RIGHT: 1, + TURN_RIGHT: 2, + TURN_SHARP_RIGHT: 3, + FINISH: 4, + REACHED_VIA: 5, + USE_ROUNDABOUT: 6, + KEEP_RIGHT: 7 +} + +var GraphHopper = class GraphHopper { + + get route() { + return this._route; + } + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._key = "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP"; + this._baseURL = "https://graphhopper.com/api/1/route?"; + this._locale = GLib.get_language_names()[0]; + this._route = new Route.Route(); + this.storedRoute = null; + this._query = params.query; + } + + _updateFromStored() { + Mainloop.idle_add(() => { + if (!this.storedRoute) + return; + + this.route.update({ path: this.storedRoute.path, + turnPoints: this.storedRoute.turnPoints, + distance: this.storedRoute.distance, + time: this.storedRoute.time, + bbox: this.storedRoute.bbox }); + this.storedRoute = null; + }); + } + + _queryGraphHopper(points, transportationType, callback) { + let url = this._buildURL(points, transportationType); + let msg = Soup.Message.new('GET', url); + this._session.queue_message(msg, (session, message) => { + try { + let result = this._parseMessage(message); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + callback(null, e); + } + }); + } + + fetchRoute(points, transportationType) { + if (this.storedRoute) { + this._updateFromStored(); + return; + } + + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (exception) { + Utils.debug(exception); + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("Route request failed.")); + } else { + if (!result) { + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("No route found.")); + } else { + let route = this._createRoute(result.paths[0]); + this.route.update(route); + } + } + }); + } + + fetchRouteAsync(points, transportationType, callback) { + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (result) { + let route = this._createRoute(result.paths[0]); + callback(route, exception); + } else { + callback(null, exception); + } + }); + } + + _buildURL(points, transportation) { + let locations = points.map(function(point) { + return [point.place.location.latitude, point.place.location.longitude].join(','); + }); + let vehicle = RouteQuery.Transportation.toString(transportation); + let query = new HTTP.Query({ type: 'json', + key: this._key, + vehicle: vehicle, + locale: this._locale, + point: locations, + debug: Utils.debugEnabled + }); + let url = this._baseURL + query.toString(); + Utils.debug("Sending route request to: " + url); + return url; + } + + _parseMessage({ status_code, response_body, uri }) { + if (status_code === 500) { + log("Internal server error.\n" + + "This is most likely a bug in GraphHopper"); + log("Please file a bug at " + + "https://github.com/graphhopper/graphhopper/issues\n" + + "with the the following Graphopper request URL included:\n"); + log(uri.to_string(false)); + } + if (status_code !== 200) + return null; + + let result = JSON.parse(response_body.data); + + if (!Array.isArray(result.paths)) { + Utils.debug("No route found"); + if (result.info && Array.isArray(result.info.errors)) { + result.info.errors.forEach(({ message, details }) => { + Utils.debug("Message: " + message); + Utils.debug("Details: " + details); + }); + } + return null; + } + + return result; + } + + _createRoute(route) { + let path = EPAF.decode(route.points); + let turnPoints = this._createTurnPoints(path, route.instructions); + let bbox = new BoundingBox.BoundingBox(); + + // GH does lonlat-order + bbox.extend(route.bbox[1], route.bbox[0]); + bbox.extend(route.bbox[3], route.bbox[2]); + + return { path: path, + turnPoints: turnPoints, + distance: route.distance, + time: route.time, + bbox: bbox }; + } + + _createTurnPoints(path, instructions) { + let via = 0; + let startPoint = new Route.TurnPoint({ + coordinate: path[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let rest = this._foldInstructions(instructions).map((instr) => { + let type = this._createTurnPointType(instr.sign); + let text = instr.text; + if (type === Route.TurnPointType.VIA) { + via++; + let viaPlace = this._query.filledPoints[via].place; + text = viaPlace.name || instr.text; + } + return new Route.TurnPoint({ + coordinate: path[instr.interval[0]], + type: type, + distance: instr.distance, + instruction: text, + time: instr.time, + turnAngle: instr.turn_angle + }); + }); + return [startPoint].concat(rest); + } + + _foldInstructions(instructions) { + let currInstruction = instructions[0]; + let res = []; + + for (let i = 1; i < instructions.length; i++) { + let newInstruction = instructions[i]; + let newSign = newInstruction.sign; + let newStreetname = newInstruction.street_name; + + /* if the direction is to continue straight, or keep left or keep + * right on the same street/road number, fold the instruction into + * the previous one + */ + if (newSign === Sign.CONTINUE_ON_STREET || + ((newSign === Sign.KEEP_LEFT || newSign === Sign.KEEP_RIGHT) && + newStreetname === currInstruction.street_name)) { + currInstruction.distance += newInstruction.distance; + } else { + res.push(currInstruction); + currInstruction = instructions[i]; + } + } + + // push finish instruction + res.push(instructions[instructions.length - 1]); + + return res; + } + + _createTurnPointType(sign) { + let type = sign + 3; + let min = Route.TurnPointType.SHARP_LEFT; + let max = Route.TurnPointType.ROUNDABOUT; + if (min <= type && type <= max) + return type; + else + return undefined; + } +}; diff --git a/src/graphHopperGeocode.js b/src/graphHopperGeocode.js new file mode 100644 index 00000000..e63877e4 --- /dev/null +++ b/src/graphHopperGeocode.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var GraphHopperGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().graphHopperGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().graphHopperGeocode.attributionUrl; + } + + get name() { + return 'GraphHopper Geocode'; + } + + get url() { + return 'https://docs.graphhopper.com/#tag/Geocoding-API'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let hits = json.hits; + + if (!hits || hits.length === 0) { + Utils.debug('No hits in response'); + return null; + } + + hits.forEach(hit => { + let place = this._parseHit(hit); + + if (place) + result.push(place); + }); + + return result; + } + + _parseHit(hit) { + let lat = hit.point.lat; + let lon = hit.point.lng; + + return PhotonParser.parsePlace(lat, lon, hit); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ point: latitude + ',' + longitude, + limit: string ? this._limit : 1, + locale: this._language, + key: this._apiKey + }); + if (string) + query.add('q', string); + else + query.add('reverse', 'true'); + + return Format.vprintf('%s/api/1/geocode?%s', [this._baseUrl, + query.toString()]); + } + + _readService() { + let graphHopperGeocode = Service.getService().graphHopperGeocode; + this._language = Utils.getLanguage(); + + if (graphHopperGeocode) { + this._baseUrl = graphHopperGeocode.baseUrl; + this._apiKey = graphHopperGeocode.apiKey; + } + } +} diff --git a/src/graphHopperTransit.js b/src/graphHopperTransit.js new file mode 100644 index 00000000..7fa927e9 --- /dev/null +++ b/src/graphHopperTransit.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utilities to use GraphHopper to perform walking routes for use in + * transit itineraries, for plugins not natively supporting turn-by-turn + * routing for walking legs + */ + +const Champlain = imports.gi.Champlain; + +const Application = imports.application; +const Location = imports.location; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const TransitPlan = imports.transitPlan; + +/* Creates a new walking leg given start and end places, and a route + * obtained from GraphHopper. If the route is undefined (which happens if + * GraphHopper failed to obtain a walking route, approximate it with a + * straight line. */ +function createWalkingLeg(from, to, fromName, toName, route) { + let fromLocation = from.place.location; + let toLocation = to.place.location; + let fromCoordinate = [fromLocation.latitude, fromLocation.longitude]; + let toCoordinate = [toLocation.latitude, toLocation.longitude]; + let polyline = route ? route.path : + createStraightPolyline(fromLocation, toLocation); + let distance = route ? route.distance : + fromLocation.get_distance_from(toLocation) * 1000; + /* as an estimate for approximated straight-line walking legs, + * assume a speed of 1 m/s to allow some extra time */ + let duration = route ? route.time / 1000 : distance; + let walkingInstructions = route ? route.turnPoints : null; + + return new TransitPlan.Leg({ fromCoordinate: fromCoordinate, + toCoordinate: toCoordinate, + from: fromName, + to: toName, + isTransit: false, + polyline: polyline, + duration: duration, + distance: distance, + walkingInstructions: walkingInstructions }); +} + +// create a straight-line "as the crow flies" polyline between two places +function createStraightPolyline(fromLoc, toLoc) { + return [new Champlain.Coordinate({ latitude: fromLoc.latitude, + longitude: fromLoc.longitude }), + new Champlain.Coordinate({ latitude: toLoc.latitude, + longitude: toLoc.longitude })]; +} + +var _walkingRoutes = []; + +/* fetches walking route and stores the route for the given coordinate + * pair to avoid requesting the same route over and over from GraphHopper + */ +function fetchWalkingRoute(points, callback) { + let index = points[0].place.location.latitude + ',' + + points[0].place.location.longitude + ';' + + points[1].place.location.latitude + ',' + + points[1].place.location.longitude; + let route = _walkingRoutes[index]; + + if (!route) { + Application.routingDelegator.graphHopper.fetchRouteAsync(points, + RouteQuery.Transportation.PEDESTRIAN, + (newRoute) => { + _walkingRoutes[index] = newRoute; + callback(newRoute); + }); + } else { + callback(route); + } +} + +// create a query point from a bare coordinate (lat, lon pair) +function createQueryPointForCoord(coord) { + let location = new Location.Location({ latitude: coord[0], + longitude: coord[1], + accuracy: 0 }); + let place = new Place.Place({ location: location }); + let point = new RouteQuery.QueryPoint(); + + point.place = place; + return point; +} + +/** + * Refine itineraries with walking legs retrieved from GraphHopper. + * Intended for use by transit plugins where the source API doesn't give + * full walking turn-by-turn routing + */ +function addWalkingToItineraries(itineraries, callback) { + _addWalkingToItinerariesRecursive(itineraries, 0, callback); +} + +function _addWalkingToItinerariesRecursive(itineraries, index, callback) { + if (index === itineraries.length) { + callback(); + } else { + let itinerary = itineraries[index]; + + _addWalkingToLegsRecursive(itinerary.legs, 0, () => { + _addWalkingToItinerariesRecursive(itineraries, index + 1, callback); + }); + } +} + +function _addWalkingToLegsRecursive(legs, index, callback) { + if (index === legs.length) { + callback(); + } else { + let leg = legs[index]; + + if (!leg.transit) { + let from = createQueryPointForCoord(leg.fromCoordinate); + let to = createQueryPointForCoord(leg.toCoordinate); + + fetchWalkingRoute([from, to], (route) => { + if (route) { + let duration = route.time / 1000; + + /* for walking legs not in the start or end + * only replace with the retrieved one if it's not + * longer in duration that the previous (straight-line) + * one. + */ + if (index === 0 || index === legs.length - 1 || + duration <= leg.duration) { + leg.distance = route.distance; + leg.walkingInstructions = route.turnPoints; + leg.polyline = route.path; + } + } + + _addWalkingToLegsRecursive(legs, index + 1, callback); + }); + } else { + _addWalkingToLegsRecursive(legs, index + 1, callback); + } + } +} diff --git a/src/headerBar.js b/src/headerBar.js new file mode 100644 index 00000000..fed6569c --- /dev/null +++ b/src/headerBar.js @@ -0,0 +1,95 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const FavoritesPopover = imports.favoritesPopover; +const LayersPopover = imports.layersPopover; +const MapView = imports.mapView; + +var HeaderBarLeft = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-left.ui', + InternalChildren: [ 'layersButton' ] +}, class HeaderBarLeft extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._layersPopover = new LayersPopover.LayersPopover({ + mapView: this._mapView + }); + this._layersButton.popover = this._layersPopover; + + this._application.connect('notify::connected', () => { + let app = this._application; + this._layersButton.sensitive = app.connected; + }); + } + + popdownLayersPopover() { + this._layersPopover.popdown(); + } +}); + +var HeaderBarRight = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-right.ui', + InternalChildren: [ 'toggleSidebarButton', + 'favoritesButton', + 'printRouteButton' ] +}, class HeaderBarRight extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._favoritesButton.popover = new FavoritesPopover.FavoritesPopover({ + mapView: this._mapView + }); + let favoritesPopover = this._favoritesButton.popover; + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + favoritesPopover.connect('notify::rows', () => { + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + }); + + this._mapView.bind_property('routeShowing', this._printRouteButton, + 'visible', GObject.BindingFlags.DEFAULT); + + this._application.connect('notify::connected', () => { + let app = this._application; + + this._toggleSidebarButton.sensitive = app.connected; + this._favoritesButton.sensitive = (app.connected && + favoritesPopover.rows > 0); + this._printRouteButton.sensitive = app.connected; + }); + } +}); diff --git a/src/http.js b/src/http.js new file mode 100644 index 00000000..8d853fee --- /dev/null +++ b/src/http.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Soup = imports.gi.Soup; + +function encode(data) { + if(data === null) + return null; + + return Soup.URI.encode(data.toString(), '&'); +} + +var Query = class Query { + + constructor(obj) { + this._query = {}; + for(let key in obj) { + this.add(key, obj[key]); + } + } + + // a value === null represents an empty value + add(key, value) { + // Initialize query field if it isn't already + let queryValue = this._query[key]; + if(!Array.isArray(queryValue)) + this._query[key] = []; + + if(Array.isArray(value)) + this._query[key] = this._query[key].concat(value); + else + this._query[key].push(value); + } + + /** + * Get the query parameters in string form. + * If useArrayNotation is given, and true, use array notation adding [] + * after key if there's multiple values for that key. + */ + toString(useArrayNotation = false) { + let vars = []; + for(let key in this._query) { + let values = this._query[key]; + let multipleValues = values.length > 1; + let encKey = encode(key) + (multipleValues && useArrayNotation ? + '[]' : ''); + + values.forEach(function(value) { + let encValue = encode(value); + if(encValue !== null) + vars.push([encKey, encValue].join('=')); + else + vars.push(encKey); + }); + } + return vars.join('&'); + } +}; diff --git a/src/hvt.js b/src/hvt.js new file mode 100644 index 00000000..810b1ad4 --- /dev/null +++ b/src/hvt.js @@ -0,0 +1,249 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Extended route types using HVT (Hierarchical Vehicle Type) codes from + * the European TPEG standard. + * https://support.google.com/transitpartners/answer/3520902 + */ + +/* when adding an additional constant here, make sure to edit the LAST_ + * constant for the corresponding block + */ + +// rail services +var RAILWAY_SERVICE = 100; +var HIGH_SPEED_RAIL_SERVICE = 101; +var LONG_DISTANCE_TRAINS = 102; +var INTER_REGIONAL_RAIL_SERVICE = 103; +var CAR_TRANSPORT_RAIL_SERVICE = 104; +var SLEEPER_RAIL_SERVICE = 105; +var REGIONAL_RAIL_SERVICE = 106; +var TOURIST_RAILWAY_SERVICE = 107; +var RAIL_SHUTTLE = 108; +var SUBURBAN_RAILWAY = 109; +var REPLACEMENT_RAIL_SERVICE = 110; +var SPECIAL_RAIL_SERVICE = 111; +var LORRY_TRANSPORT_RAIL_SERVICE = 112; +var ALL_RAIL_SERVICES = 113; +var CROSS_COUNTRY_RAIL_SERVICE = 114; +var VEHICLE_TRANSPORT_RAIL_SERVICE = 115; +var RACK_AND_PINION_RAILWAY = 116; +var ADDITIONAL_RAIL_SERVICE = 117; +var LAST_RAIL_SERVICE = ADDITIONAL_RAIL_SERVICE; + +// coach services +var COACH_SERVICE = 200; +var INTERNATIONAL_COACH_SERVICE = 201; +var NATIONAL_COACH_SERVICE = 202; +var SHUTTLE_COACH_SERVICE = 203; +var REGIONAL_COACH_SERVICE = 204; +var SPECIAL_COACH_SERVICE = 205; +var SIGHTSEEING_COACH_SERVICE = 206; +var TOURIST_COACH_SERVICE = 207; +var COMMUTER_COACH_SERVICE = 208; +var ALL_COACH_SERVICES = 209; +var LAST_COACH_SERVICE = ALL_COACH_SERVICES; + +/// suburban railway services +var SUBURBAN_RAILWAY_SERVICE = 300; + +// urban railway services +var URBAN_RAILWAY_SERVICE = 400; +var URBAN_METRO_SERVICE = 401; +var URBAN_UNDERGROUND_SERVICE = 402; +// this constant has the same name as 400 in the specification +var URBAN_RAILWAY_SERVICE_2 = 403; +var ALL_URBAN_RAILWAY_SERVICES = 404; +var MONORAIL = 405; +var LAST_URBAN_RAILWAY_SERVICE = MONORAIL; + +// metro services +var METRO_SERVICE = 500; + +// underground services +var UNDERGROUND_SERVICE = 600; + +// bus services +var BUS_SERVICE = 700; +var REGIONAL_BUS_SERVICE = 701; +var EXPRESS_BUS_SERVICE = 702; +var STOPPING_BUS_SERVICE = 703; +var LOCAL_BUS_SERVICE = 704; +var NIGHT_BUS_SERVICE = 705; +var POST_BUS_SERVICE = 706; +var SPECIAL_NEEDS_BUS_SERVICE = 707; +var MOBILITY_BUS_SERVICE = 708; +var MOBILITY_BUS_SERVICE_FOR_REGISTERED_DISABLED = 709; +var SIGHTSEEING_BUS = 710; +var SHUTTLE_BUS = 711; +var SCHOOL_BUS = 712; +var SCHOOL_AND_PUBLIC_SERVICE_BUS_SERVICE = 713; +var RAIL_REPLACEMENT_BUS_SERVICE = 714; +var DEMAND_AND_RESPONSE_BUS_SERVICE = 715; +var ALL_BUS_SERVICES = 716; +var LAST_BUS_SERVICE = ALL_BUS_SERVICES; + +// trolleybus services +var TROLLEYBUS_SERVICE = 800; + +// tram services +var TRAM_SERVICE = 900; +var CITY_TRAM_SERVICE = 901; +var LOCAL_TRAM_SERVICE = 902; +var REGIONAL_TRAM_SERVICE = 903; +var SIGHTSEEING_TRAM_SERVICE = 904; +var SHUTTLE_TRAM_SERVICE = 905; +var ALL_TRAM_SERVICES = 906; +var LAST_TRAM_SERVICE = ALL_TRAM_SERVICES; + +// water transport services +var WATER_TRANSPORT_SERVICE = 1000; +var INTERNATIONAL_CAR_FERRY_SERVICE = 1001; +var NATIONAL_CAR_FERRY_SERVICE = 1002; +var REGIONAL_CAR_FERRY_SERVICE = 1003; +var LOCAL_CAR_FERRY_SERVICE = 1004; +var INTERNATIONAL_PASSENGER_FERRY_SERVICE = 1005; +var NATIONAL_PASSENGER_FERRY_SERVICE = 1006; +var REGIONAL_PASSENGER_FERRY_SERVICE = 1007; +var LOCAL_PASSENGER_FERRY_SERVICE = 1008; +var POST_BOAT_SERVICE = 1009; +var TRAIN_FERRY_SERVICE = 1010; +var ROAD_LINK_FERRY_SERVICE = 1011; +var AIRPORT_LINK_FERRY_SERVICE = 1012; +var CAR_HIGH_SPEED_FERRY_SERVICE = 1013; +var PASSENGER_HIGH_SPEED_FERRY_SERVICE = 1014; +var SIGHTSEEING_BOAT_SERVICE = 1015; +var SCHOOL_BOAT = 1016; +var CABLE_DRAWN_BOAT_SERVICE = 1017; +var RIVER_BUS_SERVICE = 1018; +var SCHEDULED_FERRY_SERVICE = 1019; +var SHUTTLE_FERRY_SERVICE = 1020; +var ALL_WATER_TRANSPORT_SERVICE = 1021; +var LAST_WATER_TRANSPORT_SERVICE = ALL_WATER_TRANSPORT_SERVICE; + +// air service +var AIR_SERVICE = 1100; +var INTERNATIONAL_AIR_SERVICE = 1101; +var DOMESTIC_AIR_SERVICE = 1102; +var INTERCONTINENTAL_AIR_SERVICE = 1103; +var DOMESTIC_SCHEDULED_AIR_SERVICE = 1104; +var SHUTTLE_AIR_SERVICE = 1105; +var INTERCONTINENTAL_CHARTER_AIR_SERVICE = 1106; +var INTERNATIONAL_CHARTER_AIR_SERVICE = 1107; +var ROUND_TRIP_CHARTER_AIR_SERVICE = 1108; +var SIGHTSEEING_AIR_SERVICE = 1109; +var HELICOPTER_AIR_SERVICE = 1110; +var DOMESTIC_CHARTER_AIR_SERVICE = 1111; +var SCHENGEN_AREA_AIR_SERVICE = 1112; +var AIRSHIP_SERVICE = 1113; +var ALL_AIR_SERVICES = 1114; +var LAST_AIR_SERVICE = ALL_AIR_SERVICES; + +// ferry services +var FERRY_SERVICE = 1200; + +// telecabin services +var TELECABIN_SERVICE = 1300; +var TELECABIN_SERVICES = 1301; +// renamed this to not be confused with the tram-like street level cable cars +var TELECABIN_CABLE_CAR_SERVICE = 1302; +var ELEVATOR_SERVICE = 1303; +var CHAIR_LIFT_SERVICE = 1304; +var DRAG_LIFT_SERVICE = 1305; +var SMALL_TELECABIN_SERVICE = 1306; +var ALL_TELECABIN_SERVICES = 1307; +var LAST_TELECABIN_SERVICE = ALL_TELECABIN_SERVICES; + +// funicular services +var FUNICULAR_SERVICE = 1400; +var FUNICULAR_SERVICE_2 = 1401; +var ALL_FUNICULAR_SERVICES = 1402; +var LAST_FUNICULAR_SERVICE = ALL_FUNICULAR_SERVICES; + +// taxi services +var TAXI_SERVICE = 1500; +var COMMUNAL_TAXI_SERVICE = 1501; +var WATER_TAXI_SERVICE = 1502; +var RAIL_TAXI_SERVICE = 1503; +var BIKE_TAXI_SERVICE = 1504; +var LICENSED_TAXI_SERVICE = 1505; +var PRIVATE_HIRE_SERVICE_VEHICLE = 1506; +var ALL_TAXI_SERVICES = 1507; +var LAST_TAXI_SERVICE = ALL_TAXI_SERVICES; + +// self drive +var SELF_DRIVE = 1600; +var HIRE_CAR = 1601; +var HIRE_VAN = 1602; +var HIRE_MOTORBIKE = 1603; +var HIRE_CYCLE = 1604; +var LAST_SELF_DRIVE = HIRE_CYCLE; + +// misc. service +var MISCELLANEOUS_SERVICE = 1700; +var CABLE_CAR = 1701; +var HORSE_DRAWN_CARRIAGE = 1702; +var LAST_MISCELLANEOUS_SERVCE = HORSE_DRAWN_CARRIAGE; + +/** + * returns the super type of a given HVT type code, or -1 if the supplied code + * is not among the defined codes + */ +function supertypeOf(type) { + if (type >= RAILWAY_SERVICE && type <= LAST_RAIL_SERVICE) + return RAILWAY_SERVICE; + else if (type >= COACH_SERVICE && type <= LAST_COACH_SERVICE) + return COACH_SERVICE; + else if (type == SUBURBAN_RAILWAY_SERVICE) + return SUBURBAN_RAILWAY_SERVICE; + else if (type >= URBAN_RAILWAY_SERVICE && type <= LAST_URBAN_RAILWAY_SERVICE) + return URBAN_RAILWAY_SERVICE; + else if (type == METRO_SERVICE) + return METRO_SERVICE; + else if (type == UNDERGROUND_SERVICE) + return UNDERGROUND_SERVICE; + else if (type >= BUS_SERVICE && type <= LAST_BUS_SERVICE) + return BUS_SERVICE; + else if (type == TROLLEYBUS_SERVICE) + return TROLLEYBUS_SERVICE; + else if (type >= TRAM_SERVICE && type <= LAST_TRAM_SERVICE) + return TRAM_SERVICE; + else if (type >= WATER_TRANSPORT_SERVICE && + type <= LAST_WATER_TRANSPORT_SERVICE) + return WATER_TRANSPORT_SERVICE; + else if (type >= AIR_SERVICE && type <= LAST_AIR_SERVICE) + return AIR_SERVICE; + else if (type == FERRY_SERVICE) + return FERRY_SERVICE; + else if (type >= TELECABIN_SERVICE && type <= LAST_TELECABIN_SERVICE) + return TELECABIN_SERVICE; + else if (type >= FUNICULAR_SERVICE && type <= LAST_FUNICULAR_SERVICE) + return FUNICULAR_SERVICE; + else if (type >= TAXI_SERVICE && type <= LAST_TAXI_SERVICE) + return TAXI_SERVICE; + else if (type >= SELF_DRIVE && type <= LAST_SELF_DRIVE) + return SELF_DRIVE; + else if (type >= MISCELLANEOUS_SERVICE && type <= LAST_MISCELLANEOUS_SERVCE) + return MISCELLANEOUS_SERVICE; + else + return -1; +} diff --git a/src/instructionRow.js b/src/instructionRow.js new file mode 100644 index 00000000..f8f4cdc9 --- /dev/null +++ b/src/instructionRow.js @@ -0,0 +1,68 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Utils = imports.utils; + +var InstructionRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/instruction-row.ui', + InternalChildren: [ 'directionImage', + 'instructionLabel', + 'distanceLabel' ] +}, class InstructionRow extends Gtk.ListBoxRow { + + _init(params) { + this.turnPoint = params.turnPoint; + delete params.turnPoint; + + this._hasColor = params.hasColor; + delete params.hasColor; + + let lines = params.lines; + delete params.lines; + + super._init(params); + + if (lines) + this._instructionLabel.lines = lines; + + this._instructionLabel.label = this.turnPoint.instruction; + + /* + * The SVG icons for turn point stops has the color red, but has + * the suffix '-symbolic'. So when loading through GtkImage it will have + * the proper GtkIconLookupflags to re-color the icon as symbolic. + * When we load the PixBuf from the SVG ourself, we get the color. + */ + if (this._hasColor) { + let theme = Gtk.IconTheme.get_default(); + let iconName = this.turnPoint.iconName; + this._directionImage.pixbuf = theme.load_icon(iconName, 0, 0); + } else { + this._directionImage.icon_name = this.turnPoint.iconName; + } + + if (this.turnPoint.distance > 0) + this._distanceLabel.label = Utils.prettyDistance(this.turnPoint.distance); + } +}); diff --git a/src/kmlShapeLayer.js b/src/kmlShapeLayer.js new file mode 100644 index 00000000..c7ef0a1f --- /dev/null +++ b/src/kmlShapeLayer.js @@ -0,0 +1,51 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var KmlShapeLayer = GObject.registerClass( +class KmlShapeLayer extends ShapeLayer.ShapeLayer { + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.kml(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +KmlShapeLayer.mimeTypes = ['application/vnd.google-earth.kml+xml']; +KmlShapeLayer.displayName = 'KML'; +KmlShapeLayer.createInstance = function(params) { + return new KmlShapeLayer(params); +}; diff --git a/src/layersPopover.js b/src/layersPopover.js new file mode 100644 index 00000000..70f25657 --- /dev/null +++ b/src/layersPopover.js @@ -0,0 +1,266 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Gdk = imports.gi.Gdk; + +const Application = imports.application; +const MapSource = imports.mapSource; +const MapView = imports.mapView; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +const PREVIEW_WIDTH = 230; +const PREVIEW_HEIGHT = 80; + +var ShapeLayerRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-row.ui', + Children: ['closeButton'], + InternalChildren: ['layerLabel', 'visibleButton'] +}, class ShapeLayerRow extends Gtk.ListBoxRow { + + _init(params) { + this.shapeLayer = params.shapeLayer; + delete params.shapeLayer; + + super._init(params); + + this._layerLabel.label = this.shapeLayer.getName(); + this._layerLabel.tooltip_text = this.shapeLayer.file.get_parse_name(); + this._visibleButton.connect('clicked', () => { + let image = this._visibleButton.get_child(); + + this.shapeLayer.visible = !this.shapeLayer.visible; + this.activatable = this.shapeLayer.visible; + if (this.shapeLayer.visible) + image.icon_name = 'layer-visible-symbolic'; + else + image.icon_name = 'layer-not-visible-symbolic'; + }); + } +}); + +var LayersPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/layers-popover.ui', + InternalChildren: [ 'streetLayerButton', + 'aerialLayerButton', + 'streetLayerImage', + 'aerialLayerImage', + 'hybridAerialRevealer', + 'layersListBox', + 'loadLayerButton' ] +}, class LayersPopover extends Gtk.Popover { + + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init({ width_request: 200, + no_show_all: true, + transitions_enabled: false, + visible: false }); + + this._aerialLayerButton.join_group(this._streetLayerButton); + + this.get_style_context().add_class('maps-popover'); + + this._layersListBox.bind_model(this._mapView.shapeLayerStore, + this._listBoxCreateWidget.bind(this)); + this._layersListBox.connect('row-activated', (lb, row) => { + this._mapView.gotoBBox(row.shapeLayer.bbox); + }); + + this._layersListBox.set_header_func((row, before) => { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this._layerPreviews = { + street: { + source: MapSource.createStreetSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + } + }; + + if (Service.getService().tiles.streetDark) { + this._layerPreviews.streetDark = { + source: MapSource.createStreetDarkSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.aerial) { + this._layerPreviews.aerial = { + source: MapSource.createAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.hybridAerial) { + this._layerPreviews.hybridAerial = { + source: MapSource.createHybridAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + + // disable the map type switch buttons if aerial is unavailable + if (Service.getService().tiles.aerial) { + this._streetLayerButton.connect('clicked', () => { + if (this._streetLayerButton.active) { + this._mapView.setMapType(MapView.MapType.STREET); + } + }); + + this._aerialLayerButton.connect('clicked', () => { + if (this._aerialLayerButton.active) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + }); + + this._mapView.view.connect("notify::zoom-level", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::latitude", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::longitude", + this._setLayerPreviews.bind(this)); + Application.settings.connect("changed::night-mode", + this._onNightModeChanged.bind(this)); + Application.settings.connect("changed::hybrid-aerial", + this._onHybridAerialChanged.bind(this)); + + } else { + this._streetLayerButton.visible = false; + this._aerialLayerButton.visible = false; + } + + this.setMapType(this._mapView.getMapType()); + this._mapView.connect("map-type-changed", (_mapView, type) => { + this.setMapType(type); + }); + } + + _onNightModeChanged() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark', true); + } else { + this._setLayerPreviewImage('street', true); + } + } + + _onHybridAerialChanged() { + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial', true); + } else { + this._setLayerPreviewImage('aerial', true); + } + } + + _setLayerPreviews() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark'); + } else { + this._setLayerPreviewImage('street'); + } + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial'); + } else { + this._setLayerPreviewImage('aerial'); + } + } + + _setLayerPreviewImage(layer, forceUpdate = false) { + let previewInfo = this._layerPreviews[layer]; + let source = previewInfo.source; + let widget = previewInfo.widget; + + let z = this._mapView.view.zoom_level - 1; + if (z < 0) + z = 0; + let size = source.get_tile_size(); + let x = Math.floor(source.get_x(z, this._mapView.view.longitude) / size); + let y = Math.floor(source.get_y(z, this._mapView.view.latitude) / size); + + // If the view hasn't moved enough that the tile is different, + // then don't bother changing anything + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z && !forceUpdate) { + + return; + } + previewInfo.lastLocation = {x, y, z}; + + let tile = Champlain.Tile.new_full(x, y, size, z); + + tile.connect("render-complete", (a, b, c, error) => { + if (error) + return; // oh well + + // Make sure we're still at the same location + // This is especially important on slow connections + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z) { + + let pixbuf = Gdk.pixbuf_get_from_surface(tile.surface, + (size - PREVIEW_WIDTH) / 2, + (size - PREVIEW_HEIGHT) / 2, + PREVIEW_WIDTH, + PREVIEW_HEIGHT); + widget.set_from_pixbuf(pixbuf); + } + }); + + source.fill_tile(tile); + } + + setMapType(mapType) { + if (mapType === MapView.MapType.STREET) { + this._streetLayerButton.active = true; + this._hybridAerialRevealer.reveal_child = false; + } else if (mapType === MapView.MapType.AERIAL) { + this._aerialLayerButton.active = true; + if (Service.getService().tiles.hybridAerial) + this._hybridAerialRevealer.reveal_child = true; + } + } + + _onRemoveClicked(row) { + this._mapView.removeShapeLayer(row.shapeLayer); + if (this._layersListBox.get_children().length <= 0) + this._layersListBox.hide(); + } + + _listBoxCreateWidget(shapeLayer) { + let row = new ShapeLayerRow({ shapeLayer: shapeLayer }); + row.closeButton.connect('clicked', + () => this._onRemoveClicked(row)); + this._layersListBox.show(); + return row; + } +}); diff --git a/src/location.js b/src/location.js new file mode 100644 index 00000000..88427abc --- /dev/null +++ b/src/location.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Red Hat Inc. + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Authors: Zeeshan Ali (Khattak) + * Jonas Danielsson + */ + +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +/* Adds heading to Geocode.Location */ +var Location = GObject.registerClass( +class Location extends Geocode.Location { + + _init(params) { + this._heading = params.heading; + delete params.heading; + + super._init(params); + } + + get heading() { + return this._heading; + } + + set heading(v) { + this._heading = v; + } +}); diff --git a/src/locationServiceDialog.js b/src/locationServiceDialog.js new file mode 100644 index 00000000..4e459556 --- /dev/null +++ b/src/locationServiceDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2018 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +const _PRIVACY_PANEL = 'gnome-privacy-panel.desktop'; + +var LocationServiceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/location-service-dialog.ui', + InternalChildren: [ 'cancelButton', + 'settingsButton'], +}, class LocationServiceDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + this._settingsButton.connect('clicked', () => this._onSettings()); + this._cancelButton.connect('clicked', () => this._onCancel()); + } + + _onSettings() { + let privacyInfo = Gio.DesktopAppInfo.new(_PRIVACY_PANEL); + + try { + let display = Gdk.Display.get_default(); + + privacyInfo.launch([], display.get_app_launch_context()); + } catch(e) { + Utils.debug('launching privacy panel failed: ' + e); + } + + this.response(Gtk.ResponseType.OK); + } + + _onCancel() { + this.response(Gtk.ResponseType.CANCEL); + } +}); \ No newline at end of file diff --git a/src/longPrintLayout.js b/src/longPrintLayout.js new file mode 100644 index 00000000..3882f4e9 --- /dev/null +++ b/src/longPrintLayout.js @@ -0,0 +1,140 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; +const Route = imports.route; + +const _NUM_MINIMAPS = 5; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 0.57, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; +const _MiniMapView = { + SCALE_X: 0.4, + SCALE_Y: 0.20, + SCALE_MARGIN: 0.03, + ZOOM_LEVEL: 18 +}; + +var LongPrintLayout = GObject.registerClass( +class LongPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + 3 maps) + instructions */ + let totalSurfaces = 4 + this._route.turnPoints.length; + + /* Plus via points */ + this._route.turnPoints.forEach((turnPoint) => { + if (turnPoint.type === Route.TurnPointType.VIA) + totalSurfaces++; + }); + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let miniMapViewWidth = _MiniMapView.SCALE_X * this._pageWidth; + let miniMapViewHeight = _MiniMapView.SCALE_Y * this._pageHeight; + let miniMapViewMargin = _MiniMapView.SCALE_MARGIN * this._pageHeight; + let miniMapViewZoomLevel = _MiniMapView.ZOOM_LEVEL; + + let dy = 0; + let pointsLength = this._route.turnPoints.length; + + /* Fixed number of locations are plotted on minimaps which requires a + * check on instructions bound. Later on this can be made dynamic + * depending upon factors like total number of instructions, complexity + * of neighbourhood areas, etc. + * + * We currently have maps besides the instructions for: + * - the start location + * - via points in the route + * - the end location + * + * We include _NUM_MINIMAPS instructions per map, and have the map + * ensure the bounding box of those instructions. + * + * For the start location we include _NUM_MINIMAPS number of + * instruction, if available, from start. + * + * For via points we include _NUM_MINIMAPS / 2 number of instructions + * before and _NUM_MINIMAPS / 2 number of instructions after the + * via point. + * + * For the end location we include _NUM_MINIMAPS number of instructions + * leading up to the end location. + * + */ + let first = 0; + let last = Math.min(_NUM_MINIMAPS, pointsLength); + let points = this._createTurnPointArray(first, last); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + + /* x-cursor is increased temporarily for rendering instructions */ + let tmpX = this._cursorX; + for (let i = 0; i < this._route.turnPoints.length; i++) { + let turnPoint = this._route.turnPoints[i]; + + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._cursorX = tmpX + miniMapViewWidth + miniMapViewMargin; + this._drawInstruction(instructionWidth, instructionHeight, + turnPoint); + this._cursorY += dy; + + if (turnPoint.type === Route.TurnPointType.VIA) { + let tmpY = this._cursorY; + + first = Math.max(0, (i + 1) - (_NUM_MINIMAPS / 2)); + last = Math.min((i + 1) + (_NUM_MINIMAPS / 2), pointsLength); + points = this._createTurnPointArray(Math.floor(first), + Math.floor(last)); + this._cursorX = tmpX; + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + this._cursorY = tmpY; + } + } + this._cursorX = tmpX; + + first = Math.max(0, pointsLength - _NUM_MINIMAPS); + last = pointsLength; + points = this._createTurnPointArray(first, last); + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + } +}); diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..4bdb55c4 --- /dev/null +++ b/src/main.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +pkg.initGettext(); +pkg.initFormat(); +pkg.require({ 'cairo': '1.0', + 'Champlain': '0.12', + 'Clutter': '1.0', + 'Cogl': '1.0', + 'GeocodeGlib': '1.0', + 'Gdk': '3.0', + 'GdkPixbuf': '2.0', + 'Gio': '2.0', + 'GLib': '2.0', + 'Goa': '1.0', + 'GObject': '2.0', + 'Gtk': '3.0', + 'GtkChamplain': '0.12', + 'GtkClutter': '1.0', + 'Handy': '1', + 'Rest': '0.7', + 'Soup': '2.4', + 'WebKit2': '4.0' }); + +const Application = imports.application; + +function main(args) { + /* Add prototype to get last element of an array. + * TODO: if we get more of these, might move initing + * to a decicated Prototypes modules. + */ + if (!Array.prototype.last) { + Array.prototype.last = function() { + return this[this.length - 1]; + } + } + + let application = new Application.Application(); + return application.run(args); +} diff --git a/src/mainWindow.js b/src/mainWindow.js new file mode 100644 index 00000000..9abceb46 --- /dev/null +++ b/src/mainWindow.js @@ -0,0 +1,690 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContextMenu = imports.contextMenu; +const ExportViewDialog = imports.exportViewDialog; +const FavoritesPopover = imports.favoritesPopover; +const Geoclue = imports.geoclue; +const GeocodeFactory = imports.geocode; +const HeaderBar = imports.headerBar; +const LocationServiceDialog = imports.locationServiceDialog; +const MapView = imports.mapView; +const PlaceBar = imports.placeBar; +const PlaceEntry = imports.placeEntry; +const PlaceStore = imports.placeStore; +const PrintOperation = imports.printOperation; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Sidebar = imports.sidebar; +const Utils = imports.utils; + +const _CONFIGURE_ID_TIMEOUT = 100; // msecs +const _ADAPTIVE_VIEW_WIDTH = 700; +const _PLACE_ENTRY_MARGIN = 35; + +var ShapeLayerFileChooser = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-file-chooser.ui' +}, class ShapeLayerFileChooser extends Gtk.FileChooserNative { + + _init(params) { + super._init(params); + let allFilter = new Gtk.FileFilter(); + allFilter.set_name(_("All Layer Files")); + this.add_filter(allFilter); + this.set_filter(allFilter); + this.title = _("Open Shape Layer"); + + ShapeLayer.SUPPORTED_TYPES.forEach((layerClass) => { + let filter = new Gtk.FileFilter(); + [filter, allFilter].forEach((f) => { + layerClass.mimeTypes.forEach((type) => { + f.add_mime_type(type); + }); + }); + filter.set_name(layerClass.displayName); + this.add_filter(filter); + }); + } +}); + +var MainWindow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/main-window.ui', + InternalChildren: [ 'headerBar', + 'grid', + 'mainStack', + 'mainGrid', + 'noNetworkView', + 'actionBar', + 'actionBarRevealer', + 'placeBarContainer' ] +}, class MainWindow extends Gtk.ApplicationWindow { + + get mapView() { + return this._mapView; + } + + _init(params) { + super._init(params); + + this._configureId = 0; + + this._mapView = new MapView.MapView({ + mapType: this.application.local_tile_path ? + MapView.MapType.LOCAL : undefined, + mainWindow: this }); + + this._mainGrid.attach(this._mapView, 0, 0, 1, 1); + + this._mapView.gotoUserLocation(false); + + this._sidebar = this._createSidebar(); + + this._contextMenu = new ContextMenu.ContextMenu({ mapView: this._mapView, + mainWindow: this }); + + this._initActions(); + this._initHeaderbar(); + this._initSignals(); + this._restoreWindowGeometry(); + this._initDND(); + this._initPlaceBar(); + + this._grid.attach(this._sidebar, 1, 0, 1, 2); + + this._grid.show_all(); + + /* for some reason, setting the title of the window through the .ui + * template does not work anymore (maybe has something to do with + * setting a custom title on the headerbar). Setting it programmatically + * here works though. And yields a proper label in the gnome-shell + * overview. + */ + this.title = _("Maps"); + } + + _createPlaceEntry() { + let placeEntry = new PlaceEntry.PlaceEntry({ mapView: this._mapView, + visible: true, + margin_start: _PLACE_ENTRY_MARGIN, + margin_end: _PLACE_ENTRY_MARGIN, + max_width_chars: 50, + loupe: true, + matchRoute: true + }); + placeEntry.connect('notify::place', () => { + if (placeEntry.place) { + this._mapView.showPlace(placeEntry.place, true); + } + }); + + let popover = placeEntry.popover; + popover.connect('selected', () => this._mapView.grab_focus()); + this._mapView.view.connect('button-press-event', () => popover.hide()); + return placeEntry; + } + + _createSidebar() { + let sidebar = new Sidebar.Sidebar(this._mapView); + + Application.routeQuery.connect('notify', () => this._setRevealSidebar(true)); + this.application.bind_property('connected', + sidebar, 'visible', + GObject.BindingFlags.DEFAULT); + return sidebar; + } + + _initPlaceBar() { + this._placeBar = new PlaceBar.PlaceBar({ mapView: this._mapView, + visible: true }); + this._placeBarContainer.add(this._placeBar); + + this.application.bind_property('selected-place', + this._placeBar, 'place', + GObject.BindingFlags.DEFAULT); + } + + _initDND() { + this.drag_dest_set(Gtk.DestDefaults.DROP, null, 0); + this.drag_dest_add_uri_targets(); + + this.connect('drag-motion', (widget, ctx, x, y, time) => { + Gdk.drag_status(ctx, Gdk.DragAction.COPY, time); + return true; + }); + + this.connect('drag-data-received', (widget, ctx, x, y, data, info, time) => { + let files = data.get_uris().map(Gio.file_new_for_uri); + if (this._mapView.openShapeLayers(files)) + Gtk.drag_finish(ctx, true, false, time); + else + Gtk.drag_finish(ctx, false, false, time); + }); + } + + _initActions() { + let actions = { + 'about': { + onActivate: () => this._onAboutActivate() + }, + 'map-type-menu': { + state: ['b', false], + onActivate: () => this._onMapTypeMenuActivate() + }, + 'hybrid-aerial': { + paramType: 'b', + setting: 'hybrid-aerial' + }, + 'goto-user-location': { + accels: ['L'], + onActivate: () => this._onGotoUserLocationActivate() + }, + 'goto-antipode-location': { + accels: ['A'], + onActivate: () => this._mapView.gotoAntipode() + }, + 'toggle-sidebar': { + accels: ['D'], + state: ['b', false], + onChangeState: (a, v) => this._onToggleSidebarChangeState(a, v) + }, + 'zoom-in': { + accels: ['plus', 'plus', 'KP_Add', 'KP_Add', 'equal', 'equal'], + onActivate: () => this._mapView.view.zoom_in() + }, + 'zoom-out': { + accels: ['minus', 'minus', 'KP_Subtract', 'KP_Subtract'], + onActivate: () => this._mapView.view.zoom_out() + }, + 'toggle-scale': { + accels: ['S'], + onActivate: () => this._mapView.toggleScale() + }, + 'find': { + accels: ['F'], + onActivate: () => this._placeEntry.grab_focus() + }, + 'print-route': { + accels: ['P'], + onActivate: () => this._printRouteActivate() + }, + 'open-shape-layer': { + accels: ['O'], + onActivate: () => this._onOpenShapeLayer() + }, + 'export-as-image': { + onActivate: () => this._onExportActivated() + } + }; + + // when aerial tiles are available, add shortcuts to switch + if (Service.getService().tiles.aerial) { + actions['switch-to-street-view'] = { + accels: ['1', 'KP_1'], + onActivate: () => this._onStreetViewActivate() + }; + + actions['switch-to-aearial-view'] = { + accels: ['2', 'KP_2'], + onActivate: () => this._onAerialViewActivate() + }; + } + + Utils.addActions(this, actions, Application.settings); + } + + _initSignals() { + this.connect('delete-event', this._quit.bind(this)); + this.connect('configure-event', + this._onConfigureEvent.bind(this)); + + this.connect('window-state-event', + this._onWindowStateEvent.bind(this)); + this._mapView.view.connect('button-press-event', () => { + // Can not call something that will generate clutter events + // from a clutter event-handler. So use an idle. + Mainloop.idle_add(() => this._mapView.grab_focus()); + }); + + this.application.connect('notify::connected', () => { + if (this.application.connected || this.application.local_tile_path) + this._mainStack.visible_child = this._mainGrid; + else + this._mainStack.visible_child = this._noNetworkView; + }); + + /* + * If the currently focused widget is an entry then we will + * hijack the key-press to the main window and make sure that + * they reach the entry before they can be swallowed as accelerator. + */ + /* TODO: GTK 4. This should probably be handled by something like + * setting the map view as key capture widget for the search entry + */ + this.connect('key-press-event', (window, event) => { + let focusWidget = window.get_focus(); + let keyval = event.get_keyval()[1]; + let keys = [Gdk.KEY_plus, Gdk.KEY_KP_Add, + Gdk.KEY_minus, Gdk.KEY_KP_Subtract, + Gdk.KEY_equal]; + let isPassThroughKey = keys.indexOf(keyval) !== -1; + + /* if no entry is focused, and the key is not one we should treat + * as a zoom accelerator when no entry is focused, focus the + * main search entry in the headebar to propaget the keypress there + */ + if (!(focusWidget instanceof Gtk.Entry) && !isPassThroughKey) { + /* if the search entry does not handle the event, pass it on + * instead of activating the entry + */ + if (this._placeEntry.handle_event(event) === Gdk.EVENT_PROPAGATE) + return false; + + this._placeEntry.has_focus = true; + focusWidget = this._placeEntry; + } + + if (focusWidget instanceof Gtk.Entry) + return focusWidget.event(event); + + return false; + }); + + this._mapView.view.connect('notify::zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::max-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::min-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + } + + _updateZoomButtonsSensitivity() { + let zoomLevel = this._mapView.view.zoom_level; + let maxZoomLevel = this._mapView.view.max_zoom_level; + let minZoomLevel = this._mapView.view.min_zoom_level; + let zoomInAction = this.lookup_action("zoom-in"); + let zoomOutAction = this.lookup_action("zoom-out"); + + if (zoomLevel >= maxZoomLevel) + zoomInAction.set_enabled(false); + else + zoomInAction.set_enabled(true); + + if (zoomLevel <= minZoomLevel) + zoomOutAction.set_enabled(false); + else + zoomOutAction.set_enabled(true); + } + + _updateLocationSensitivity() { + let sensitive = (Application.geoclue.state !== Geoclue.State.INITIAL && + (this.application.connected || + this.application.local_tile_path)); + + this.lookup_action("goto-user-location").set_enabled(sensitive); + } + + _initHeaderbar() { + this._headerBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_start(this._headerBarLeft); + + this._headerBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_end(this._headerBarRight); + + this._placeEntry = this._createPlaceEntry(); + this._headerBar.custom_title = this._placeEntry; + + Application.geoclue.connect('notify::state', + this._updateLocationSensitivity.bind(this)); + this.application.connect('notify::connected', () => { + let app = this.application; + + this._updateLocationSensitivity(); + this._placeEntry.sensitive = app.connected; + }); + + // action bar, for when the window is too narrow for the full headerbar + this._actionBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_start(this._actionBarLeft); + + this._actionBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_end(this._actionBarRight); + + this.connect('size-allocate', () => { + let [width, height] = this.get_size(); + if (width < _ADAPTIVE_VIEW_WIDTH) { + this.application.adaptive_mode = true; + this._headerBarLeft.hide(); + this._headerBarRight.hide(); + this._actionBarRevealer.set_reveal_child(true); + this._placeEntry.set_margin_start(0); + this._placeEntry.set_margin_end(0); + } else { + this.application.adaptive_mode = false; + this._headerBarLeft.show(); + this._headerBarRight.show(); + this._actionBarRevealer.set_reveal_child(false); + this._placeEntry.set_margin_start(_PLACE_ENTRY_MARGIN); + this._placeEntry.set_margin_end(_PLACE_ENTRY_MARGIN); + } + }); + } + + _saveWindowGeometry() { + let window = this.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.MAXIMIZED) + return; + + // GLib.Variant.new() can handle arrays just fine + let size = this.get_size(); + Application.settings.set('window-size', size); + + let position = this.get_position(); + Application.settings.set('window-position', position); + } + + _restoreWindowGeometry() { + let size = Application.settings.get('window-size'); + if (size.length === 2) { + let [width, height] = size; + this.set_default_size(width, height); + } + + let position = Application.settings.get('window-position'); + if (position.length === 2) { + let [x, y] = position; + + this.move(x, y); + } + + if (Application.settings.get('window-maximized')) + this.maximize(); + } + + _onConfigureEvent(widget, event) { + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + this._configureId = Mainloop.timeout_add(_CONFIGURE_ID_TIMEOUT, () => { + this._saveWindowGeometry(); + this._configureId = 0; + return false; + }); + } + + _onWindowStateEvent(widget, event) { + let window = widget.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.FULLSCREEN) + return; + + let maximized = (state & Gdk.WindowState.MAXIMIZED); + Application.settings.set('window-maximized', maximized); + } + + _quit() { + // remove configure event handler if still there + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + // always save geometry before quitting + this._saveWindowGeometry(); + + return false; + } + + _onGotoUserLocationActivate() { + let message; + + if (Application.geoclue.state === Geoclue.State.ON) { + this._mapView.gotoUserLocation(true); + return; + } + + Application.geoclue.start(() => { + switch(Application.geoclue.state) { + case Geoclue.State.FAILED: + message = _("Failed to connect to location service"); + Utils.showDialog(message, Gtk.MessageType.ERROR, this); + break; + + case Geoclue.State.DENIED: + let dialog = new LocationServiceDialog.LocationServiceDialog({ + visible: true, + transient_for: this, + modal: true }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + break; + + default: + this._mapView.gotoUserLocation(true); + break; + } + }); + } + + _activateExport() { + let view = this._mapView.view; + let surface = view.to_surface(true); + let bbox = view.get_bounding_box(); + let [latitude, longitude] = bbox.get_center(); + + let dialog = new ExportViewDialog.ExportViewDialog({ + transient_for: this, + modal: true, + surface: surface, + latitude: latitude, + longitude: longitude, + mapView: this._mapView + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + + _onExportActivated() { + if (this._mapView.view.state === Champlain.State.DONE) { + this._activateExport(); + } else { + let notifyId = this._mapView.view.connect('notify::state', () => { + if (this._mapView.view.state === Champlain.State.DONE) { + this._mapView.view.disconnect(notifyId); + this._activateExport(); + } + }); + } + } + + _printRouteActivate() { + if (this._mapView.routeShowing) { + let operation = new PrintOperation.PrintOperation({ mainWindow: this }); + } + } + + _onMapTypeMenuActivate(action) { + let state = action.get_state().get_boolean(); + action.set_state(GLib.Variant.new('b', !state)); + } + + _onStreetViewActivate() { + this._mapView.setMapType(MapView.MapType.STREET); + } + + _onAerialViewActivate() { + // don't attempt to switch to aerial if we don't have tiles for it + if (Service.getService().tiles.aerial) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + } + + _onToggleSidebarChangeState(action, variant) { + action.set_state(variant); + + let reveal = variant.get_boolean(); + this._sidebar.set_reveal_child(reveal); + } + + _setRevealSidebar(value) { + let action = this.lookup_action('toggle-sidebar'); + action.change_state(GLib.Variant.new_boolean(value)); + } + + _onAboutActivate() { + let aboutDialog = new Gtk.AboutDialog({ + artists: [ 'Jakub Steiner ', + 'Andreas Nilsson ' ], + authors: [ 'Zeeshan Ali (Khattak) ', + 'Mattias Bengtsson ', + 'Jonas Danielsson ', + 'Marcus Lundblad '], + translator_credits: _("translator-credits"), + /* Translators: This is the program name. */ + program_name: _("Maps"), + comments: _("A map application for GNOME"), + license_type: Gtk.License.GPL_2_0, + logo_icon_name: 'org.gnome.Maps', + version: pkg.version, + website: 'https://live.gnome.org/Apps/Maps', + wrap_license: true, + + modal: true, + transient_for: this + }); + + let copyright = _("Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors"); + let attribution = this._getAttribution(); + + copyright += '\n' + attribution; + + /* HACK: we need to poke into gtkaboutdialog internals + * to set the copyright with markup like attribution requires + */ + + let copyrightLabel = aboutDialog.get_template_child(Gtk.AboutDialog, 'copyright_label'); + copyrightLabel.set_markup('' + copyright + ''); + copyrightLabel.show(); + + aboutDialog.show(); + aboutDialog.connect('response', () => aboutDialog.destroy()); + } + + _getAttribution() { + let tileProviderInfo = Service.getService().tileProviderInfo; + let photonGeocode = Service.getService().photonGeocode; + let attribution = _("Map data by %s and contributors").format('OpenStreetMap'); + + if (tileProviderInfo) { + let tileProviderString; + if (tileProviderInfo.url) { + tileProviderString = '' + + tileProviderInfo.name + ''; + } else { + tileProviderString = tileProviderInfo.name; + } + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * tile provider where the %s placeholder is replaced by either + * the bare name of the tile provider, or a linkified URL if one + * is available + */ + attribution += _("Map tiles provided by %s").format(tileProviderString); + } + + let provider = GeocodeFactory.getGeocoder().attribution; + let providerUrl = GeocodeFactory.getGeocoder().attributionUrl; + let geocoderName = GeocodeFactory.getGeocoder().name; + let geocoderUrl = GeocodeFactory.getGeocoder().url; + + let providerString; + if (providerUrl) { + providerString = + '' + provider + ''; + } else { + providerString = provider; + } + + let geocoderLink = + '%s'.format(geocoderUrl, geocoderName); + + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * search provider where the first %s placeholder is replaced by either + * the bare name of the geocoder provider, or a linkified URL if one + * is available, and the second %s placeholder is replaced by the + * URL to the geocoder project page. These placeholders + * can be swapped, if needed using the %n$s positional syntax + * (i.e. "%2$s ... %1$s ..." for positioning the project URL + * before the provider). + */ + attribution += _("Search provided by %s using %s"). + format(providerString, geocoderLink); + + return attribution; + } + + _onOpenShapeLayer() { + this._fileChooser = new ShapeLayerFileChooser({ + transient_for: this, + }); + + this._fileChooser.connect('response', (widget, response) => { + if (response === Gtk.ResponseType.ACCEPT) { + this._mapView.openShapeLayers(this._fileChooser.get_files()); + this._headerBarLeft.popdownLayersPopover(); + this._actionBarLeft.popdownLayersPopover(); + } + this._fileChooser.destroy(); + }); + this._fileChooser.show(); + } +}); diff --git a/src/mapBubble.js b/src/mapBubble.js new file mode 100644 index 00000000..1d92c9ee --- /dev/null +++ b/src/mapBubble.js @@ -0,0 +1,113 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const GeocodeFactory = imports.geocode; +const Place = imports.place; +const PlaceView = imports.placeView; +const PlaceButtons = imports.placeButtons; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +/* Maximum width of the popover content before it's forced to wrap */ +const MAX_CONTENT_WIDTH = 350; +/* Margin between the height of the main window and the height of the popover + contents */ +const HEIGHT_MARGIN = 100; + +var MapBubble = GObject.registerClass( +class MapBubble extends Gtk.Popover { + + _init(params) { + let place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + params.relative_to = mapView; + params.transitions_enabled = false; + params.modal = false; + + super._init(params); + + let content = new PlaceView.PlaceView({ place, mapView, visible: true }); + + let scrolledWindow = new MapBubbleScrolledWindow({ visible: true, + propagateNaturalWidth: true, + propagateNaturalHeight: true, + hscrollbarPolicy: Gtk.PolicyType.NEVER }); + scrolledWindow.add(content); + this.add(scrolledWindow); + + this.get_style_context().add_class("map-bubble"); + } +}); + +var MapBubbleScrolledWindow = GObject.registerClass( +class MapBubbleScrolledWindow extends Gtk.ScrolledWindow { + vfunc_get_preferred_width() { + let [min, nat] = this.get_child().get_preferred_width(); + min = Math.min(min, MAX_CONTENT_WIDTH); + nat = Math.min(nat, MAX_CONTENT_WIDTH); + return [min, nat]; + } + + vfunc_get_preferred_height_for_width(width) { + let windowHeight = this.get_toplevel().get_allocated_height() - HEIGHT_MARGIN; + let [min, nat] = this.get_child().get_preferred_height_for_width(width); + min = Math.min(min, windowHeight); + nat = Math.min(nat, windowHeight); + return [min, nat]; + } + + vfunc_draw(cr) { + let popover = this.get_ancestor(Gtk.Popover); + if (popover) { + let [{x, y, width, height}, baseline] = this.get_allocated_size(); + + // clip the top corners to the rounded corner + let radius = popover.get_style_context() + .get_property(Gtk.STYLE_PROPERTY_BORDER_RADIUS, popover.get_state_flags()) + * this.scale_factor; + + // bottom left + cr.moveTo(0, height); + cr.lineTo(0, radius); + cr.arc(radius, radius, radius, Math.PI, -Math.PI / 2.0); + cr.arc(width - radius, radius, radius, -Math.PI / 2.0, 0); + cr.lineTo(width, height); + + cr.clip(); + } + + return super.vfunc_draw(cr); + } +}); + diff --git a/src/mapMarker.js b/src/mapMarker.js new file mode 100644 index 00000000..b5a0e7fa --- /dev/null +++ b/src/mapMarker.js @@ -0,0 +1,415 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const MapBubble = imports.mapBubble; +const MapWalker = imports.mapWalker; +const Utils = imports.utils; + +var MapMarker = GObject.registerClass({ + Implements: [Champlain.Exportable], + Abstract: true, + Signals: { + 'gone-to': { } + }, + Properties: { + 'surface': GObject.ParamSpec.override('surface', + Champlain.Exportable), + 'view-latitude': GObject.ParamSpec.double('view-latitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -90, 90, 0), + 'view-longitude': GObject.ParamSpec.double('view-longitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -180, 180, 0), + 'view-zoom-level': GObject.ParamSpec.int('view-zoom-level', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, 20, 3) + } +}, class MapMarker extends Champlain.Marker { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.selectable = true; + + super._init(params); + + this.connect('notify::size', this._translateMarkerPosition.bind(this)); + if (this._mapView) { + this._view = this._mapView.view; + this.connect('notify::selected', this._onMarkerSelected.bind(this)); + this.connect('button-press', this._onButtonPress.bind(this)); + this.connect('touch-event', this._onTouchEvent.bind(this)); + + // Some markers are draggable, we want to sync the marker location and + // the location saved in the GeocodePlace + // These are not bindings because the place may have a different + // location later + this.connect('notify::latitude', () => { + this.place.location.latitude = this.latitude; + }); + this.connect('notify::longitude', () => { + this.place.location.longitude = this.longitude; + }); + + this.place.connect('notify::location', this._onLocationChanged.bind(this)); + + this._view.bind_property('latitude', this, 'view-latitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('longitude', this, 'view-longitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('zoom-level', this, 'view-zoom-level', + GObject.BindingFlags.DEFAULT); + this.connect('notify::view-latitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-longitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-zoom-level', this._onViewUpdated.bind(this)); + } + + Application.application.connect('notify::adaptive-mode', this._onAdaptiveModeChanged.bind(this)); + } + + get surface() { + return this._surface; + } + + set surface(v) { + this._surface = v; + } + + vfunc_get_surface() { + return this._surface; + } + + vfunc_set_surface(surface) { + this._surface = surface; + } + + _actorFromIconName(name, size, color) { + try { + let theme = Gtk.IconTheme.get_default(); + let pixbuf; + + if (color) { + let info = theme.lookup_icon(name, size, 0); + pixbuf = info.load_symbolic(color, null, null, null)[0]; + } else { + pixbuf = theme.load_icon(name, size, 0); + } + + let canvas = new Clutter.Canvas({ width: pixbuf.get_width(), + height: pixbuf.get_height() }); + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0); + cr.paint(); + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + actor.set_content(canvas); + actor.set_size(pixbuf.get_width(), pixbuf.get_height()); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + _onButtonPress(marker, event) { + // Zoom in on marker on double-click + if (event.get_click_count() > 1) { + if (this._view.zoom_level < this._view.max_zoom_level) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.center_on(this.latitude, this.longitude); + } + } + } + + _onTouchEvent(marker, event) { + if (event.type() == Clutter.EventType.TOUCH_BEGIN) + this.selected = true; + + return Clutter.EVENT_STOP; + } + + _translateMarkerPosition() { + this.set_translation(-this.anchor.x, -this.anchor.y, 0); + } + + _onLocationChanged() { + this.set_location(this.place.location.latitude, this.place.location.longitude); + + if (this._bubble) { + if (this._isInsideView()) + this._positionBubble(this._bubble); + else + this.hideBubble(); + } + } + + /** + * Returns: The anchor point for the marker icon, relative to the + * top left corner. + */ + get anchor() { + return { x: 0, y: 0 }; + } + + get bubbleSpacing() { + return 0; + } + + get place() { + return this._place; + } + + get bubble() { + if (this._bubble === undefined && this._hasBubble()) { + if (this._place.name) { + this._bubble = new MapBubble.MapBubble({ place: this._place, + mapView: this._mapView }); + } + } + + return this._bubble; + } + + _hasBubble() { + // Markers has no associated bubble by default + return false; + } + + _positionBubble(bubble) { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + let pos = new Gdk.Rectangle({ x: x + tx - this.bubbleSpacing, + y: y + ty - this.bubbleSpacing, + width: this.width + this.bubbleSpacing * 2, + height: this.height + this.bubbleSpacing * 2 }); + bubble.pointing_to = pos; + bubble.position = Gtk.PositionType.TOP; + + // Gtk+ doesn't provide a widget allocation by calling get_allocation + // if it's not visible, the bubble positioning occurs when bubble + // is not visible yet + let bubbleSize = bubble.get_preferred_size()[1]; + + // Set bubble position left/right if it's close to a vertical map edge + if (pos.x + pos.width / 2 + bubbleSize.width / 2 >= mapSize.width) + bubble.position = Gtk.PositionType.LEFT; + else if (pos.x + pos.width / 2 - bubbleSize.width / 2 <= 0) + bubble.position = Gtk.PositionType.RIGHT; + // Avoid bubble to cover header bar if the marker is close to the top map edge + else if (pos.y - bubbleSize.height <= 0) + bubble.position = Gtk.PositionType.BOTTOM; + } + + _hideBubbleOn(signal, duration) { + let sourceId = null; + let signalId = this._view.connect(signal, () => { + if (sourceId) + Mainloop.source_remove(sourceId); + else + this.hideBubble(); + + let callback = (function() { + sourceId = null; + this.showBubble(); + }).bind(this); + + if (duration) + sourceId = Mainloop.timeout_add(duration, callback); + else + sourceId = Mainloop.idle_add(callback); + }); + + Utils.once(this.bubble, 'closed', () => { + // We still listening for the signal to refresh + // the existent timeout + if (!sourceId) + this._view.disconnect(signalId); + }); + + Utils.once(this, 'notify::selected', () => { + // When the marker gets deselected, we need to ensure + // that the timeout callback is not called anymore. + if (sourceId) { + Mainloop.source_remove(sourceId); + this._view.disconnect(signalId); + } + }); + } + + _initBubbleSignals() { + this._hideBubbleOn('notify::zoom-level', 500); + this._hideBubbleOn('notify::size'); + + // This is done to get just one marker selected at any time regardless + // of the layer to which it belongs so we can get only one visible bubble + // at any time. We do this for markers in different layers because for + // markers in the same layer, ChamplainMarkerLayer single selection mode + // does the job. + this._mapView.onSetMarkerSelected(this); + + let markerSelectedSignalId = this._mapView.connect('marker-selected', (mapView, selectedMarker) => { + if (this.get_parent() !== selectedMarker.get_parent()) + this.selected = false; + }); + + let viewTouchEventSignalId = + this._view.connect('touch-event', () => this.set_selected(false)); + + let goingToSignalId = this._mapView.connect('going-to', () => { + this.set_selected(false); + }); + let buttonPressSignalId = + this._view.connect('button-press-event', () => { + this.set_selected(false); + }); + // Destroy the bubble when the marker is destroyed o removed from a layer + let parentSetSignalId = this.connect('parent-set', () => { + this.set_selected(false); + }); + let dragMotionSignalId = this.connect('drag-motion', () => { + this.set_selected(false); + }); + let markerHiddenSignalId = this.connect('notify::visible', () => { + if (!this.visible) { + this.set_selected(false); + } + }); + + Utils.once(this.bubble, 'closed', () => { + this._mapView.disconnect(markerSelectedSignalId); + this._mapView.disconnect(goingToSignalId); + this._view.disconnect(buttonPressSignalId); + this._view.disconnect(viewTouchEventSignalId); + this.disconnect(parentSetSignalId); + this.disconnect(dragMotionSignalId); + + this._bubble.destroy(); + delete this._bubble; + }); + } + + _isInsideView() { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + return x + tx + this.width > 0 && x + tx < mapSize.width && + y + ty + this.height > 0 && y + ty < mapSize.height; + } + + _onViewUpdated() { + if (this.bubble) { + if (this._isInsideView()) + this._positionBubble(this.bubble); + else + this.bubble.hide(); + } + } + + showBubble() { + if (this.bubble && !this.bubble.visible && this._isInsideView() && !Application.application.adaptive_mode) { + this._initBubbleSignals(); + this.bubble.show(); + this._positionBubble(this.bubble); + } + } + + hideBubble() { + if (this._bubble) + this._bubble.hide(); + } + + get walker() { + if (this._walker === undefined) + this._walker = new MapWalker.MapWalker(this.place, this._mapView); + + return this._walker; + } + + zoomToFit() { + this.walker.zoomToFit(); + } + + goTo(animate) { + Utils.once(this.walker, 'gone-to', () => this.emit('gone-to')); + this.walker.goTo(animate); + } + + goToAndSelect(animate) { + Utils.once(this, 'gone-to', () => this.selected = true); + + this.goTo(animate); + } + + _onMarkerSelected() { + if (this.selected) { + if (this.bubble) { + this.showBubble(); + Application.application.selected_place = this._place; + } + } else { + this.hideBubble(); + Application.application.selected_place = null; + } + } + + _onAdaptiveModeChanged() { + if (this.selected) { + if (!Application.application.adaptive_mode) { + this.showBubble(); + } else { + this.hideBubble(); + } + } + } +}); diff --git a/src/mapSource.js b/src/mapSource.js new file mode 100644 index 00000000..5feb6298 --- /dev/null +++ b/src/mapSource.js @@ -0,0 +1,174 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const System = imports.system; + +const Service = imports.service; +const Utils = imports.utils; + +let _attributionImages = []; + +const _FILE_CACHE_SIZE_LIMIT = (10 * 1024 * 1024); /* 10Mb */ +const _MEMORY_CACHE_SIZE_LIMIT = 100; /* number of tiles */ + +const _LOGO_PADDING_X = 10; +const _LOGO_PADDING_Y = 25; +// extra padding below logo in RTL, where scale will be on the right side +const _LOGO_PADDING_Y_RTL = 35; + +var AttributionLogo = GObject.registerClass({}, +class AttributionLogo extends GtkClutter.Actor { + + _init(view) { + super._init(); + + this._view = view; + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + view.connect('notify::width', () => this._updatePosition()); + view.connect('notify::height', () => this._updatePosition()); + + this._updatePosition(view); + } + + setSource(source) { + this._id = source.get_id(); + + let bin = this.get_widget(); + + if (bin.get_child()) + bin.remove(bin.get_child()); + + if (_attributionImages[source.get_id()]) { + bin.add(_attributionImages[source.get_id()]); + bin.visible = true; + } else { + bin.visible = false; + } + + this._updatePosition(); + } + + _updatePosition() { + let image = _attributionImages[this._id]; + + if (image) { + let width = image.pixbuf.width; + let height = image.pixbuf.height; + let x = this._view.width - width - _LOGO_PADDING_X; + /* TODO: ideally the attribution logo should be aligned to the left + * side in RTL locales, but I couldn't get that working with Clutter + * actor positioning, so adjust the padding to fit above the scale + * for now + */ + let y = this._view.height - height - + (this._rtl ? _LOGO_PADDING_Y_RTL : _LOGO_PADDING_Y); + + this.set_position(x, y); + } + } +}); + +function _updateAttributionImage(source) { + if (!source.attribution_logo || source.attribution_logo === "") + return; + + if (!_attributionImages[source.id]) + _attributionImages[source.id] = new Gtk.Image({ visible: true }); + + let data = GLib.base64_decode(source.attribution_logo); + let stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(data)); + _attributionImages[source.id].pixbuf = + GdkPixbuf.Pixbuf.new_from_stream(stream, null); +} + +function _createTileSource(source) { + let tileSource = new Champlain.NetworkTileSource({ + id: source.id, + name: source.name, + license: source.license, + license_uri: source.license_uri, + min_zoom_level: source.min_zoom_level, + max_zoom_level: source.max_zoom_level, + tile_size: source.tile_size, + renderer: new Champlain.ImageRenderer(), + uri_format: source.uri_format + }); + tileSource.max_conns = source.max_connections; + return tileSource; +} + +function _createCachedSource(source) { + let tileSource = _createTileSource(source); + _updateAttributionImage(source); + + let fileCache = new Champlain.FileCache({ + size_limit: _FILE_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let memoryCache = new Champlain.MemoryCache({ + size_limit: _MEMORY_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let errorSource = new Champlain.NullTileSource({ + renderer: new Champlain.ImageRenderer() + }); + + /* + * When the a source in the chain fails to load a given tile + * the next one in the chain tries instead. Until we get to the error + * source. + */ + let sourceChain = new Champlain.MapSourceChain(); + sourceChain.push(errorSource); + sourceChain.push(tileSource); + sourceChain.push(fileCache); + sourceChain.push(memoryCache); + + return sourceChain; +} + +function createAerialSource() { + return _createCachedSource(Service.getService().tiles.aerial); +} + +function createHybridAerialSource() { + return _createCachedSource(Service.getService().tiles.hybridAerial); +} + +function createStreetSource() { + return _createCachedSource(Service.getService().tiles.street); +} + +function createStreetDarkSource() { + return _createCachedSource(Service.getService().tiles.streetDark) +} + +function createPrintSource() { + return _createCachedSource(Service.getService().tiles.print); +} diff --git a/src/mapView.js b/src/mapView.js new file mode 100644 index 00000000..10e6d5a3 --- /dev/null +++ b/src/mapView.js @@ -0,0 +1,964 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkChamplain = imports.gi.GtkChamplain; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const BoundingBox = imports.boundingBox; +const ContactPlace = imports.contactPlace; +const Color = imports.color; +const Geoclue = imports.geoclue; +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const KmlShapeLayer = imports.kmlShapeLayer; +const GpxShapeLayer = imports.gpxShapeLayer; +const Location = imports.location; +const Maps = imports.gi.GnomeMaps; +const MapSource = imports.mapSource; +const MapWalker = imports.mapWalker; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const StoredRoute = imports.storedRoute; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; +const TurnPointMarker = imports.turnPointMarker; +const UserLocationMarker = imports.userLocationMarker; +const Utils = imports.utils; + +var MapType = { + LOCAL: 'MapsLocalSource', + STREET: 'MapsStreetSource', + AERIAL: 'MapsAerialSource' +}; +const _LOCATION_STORE_TIMEOUT = 500; +const MapMinZoom = 2; + +/* + * Due to the mathematics of spherical mericator projection, + * the map must be truncated at a latitude less than 90 degrees. + */ +var MAX_LATITUDE = 85.05112; +var MIN_LATITUDE = -85.05112; +var MAX_LONGITUDE = 180; +var MIN_LONGITUDE = -180; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline on the path */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +// color used for turn-by-turn-based routes (non-transit) +const TURN_BY_TURN_ROUTE_COLOR = '0000FF'; + +// line width for route lines +const ROUTE_LINE_WIDTH = 5; + +/* length of filled parts of dashed lines used for walking legs of transit + * itineraries + */ +const DASHED_ROUTE_LINE_FILLED_LENGTH = 5; + +// length of gaps of dashed lines used for walking legs of transit itineraries +const DASHED_ROUTE_LINE_GAP_LENGTH = 5; + +// Maximum limit of file size (20 MB) that can be loaded without user confirmation +const FILE_SIZE_LIMIT_MB = 20; + +var MapView = GObject.registerClass({ + Properties: { + // this property is true when the routing sidebar is active + 'routingOpen': GObject.ParamSpec.boolean('routingOpen', + 'Routing open', + 'Routing sidebar open', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false), + /* this property is true when a route is being shown on the map */ + 'routeShowing': GObject.ParamSpec.boolean('routeShowing', + 'Route showing', + 'Showing a route on the map', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false) + }, + Signals: { + 'user-location-changed': {}, + 'going-to': {}, + 'going-to-user-location': {}, + 'gone-to-user-location': {}, + 'view-moved': {}, + 'marker-selected': { param_types: [Champlain.Marker] }, + 'map-type-changed': { param_types: [GObject.TYPE_STRING] } + }, +}, class MapView extends GtkChamplain.Embed { + + get routingOpen() { + return this._routingOpen || this._instructionMarkerLayer.visible; + } + + set routingOpen(value) { + let isValid = Application.routeQuery.isValid(); + + this._routingOpen = value && isValid; + this._routeLayers.forEach((routeLayer) => routeLayer.visible = value && isValid); + this._instructionMarkerLayer.visible = value && isValid; + if (!value) + this.routeShowing = false; + this.notify('routingOpen'); + } + + get routeShowing() { + return this._routeShowing; + } + + set routeShowing(value) { + this._routeShowing = value; + this.notify('routeShowing'); + } + + _init(params) { + super._init(); + + let mapType = params.mapType || this._getStoredMapType(); + delete params.mapType; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._storeId = 0; + this.view = this._initView(); + this._initLayers(); + + this.setMapType(mapType); + + if (Application.normalStartup) + this._goToStoredLocation(); + + this.shapeLayerStore = new Gio.ListStore(GObject.TYPE_OBJECT); + + Application.geoclue.connect('location-changed', + this._updateUserLocation.bind(this)); + Application.geoclue.connect('notify::state', + this._updateUserLocation.bind(this)); + this._connectRouteSignals(); + + // set dark background if we start up in dark theme + this._setBackgroundPatternIfNeeded(); + } + + _initScale(view) { + this._scale = new Champlain.Scale({ visible: true }); + this._scale.connect_view(view); + + if (Utils.getMeasurementSystem() === Utils.METRIC_SYSTEM) + this._scale.unit = Champlain.Unit.KM; + else + this._scale.unit = Champlain.Unit.MILES; + + this._scale.set_x_expand(true); + this._scale.set_y_expand(true); + this._scale.set_x_align(Clutter.ActorAlign.START); + this._scale.set_y_align(Clutter.ActorAlign.END); + view.add_child(this._scale); + } + + _initView() { + let view = this.get_view(); + + view.min_zoom_level = MapMinZoom; + view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + view.reactive = true; + view.kinetic_mode = true; + view.horizontal_wrap = true; + + view.connect('notify::latitude', this._onViewMoved.bind(this)); + view.connect('notify::longitude', + () => this._setBackgroundPatternIfNeeded()); + // switching map type will set view min-zoom-level from map source + view.connect('notify::min-zoom-level', () => { + if (view.min_zoom_level < MapMinZoom) { + view.min_zoom_level = MapMinZoom; + } + }); + + // if dark tiles is available, setup handler to switch style + if (Service.getService().tiles.streetDark) { + Application.settings.connect('changed::night-mode', + this._onNightModeChanged.bind(this)); + } + + // if hybrid aerial tiles are available, setup handler to toggle + if (Service.getService().tiles.hybridAerial) { + Application.settings.connect('changed::hybrid-aerial', + this._onHybridAerialChanged.bind(this)); + } + + this._gtkSettings = Gtk.Settings.get_default(); + this._gtkSettings.connect('notify::gtk-application-prefer-dark-theme', + this._onPreferDarkThemeChanged.bind(this)); + + this._initScale(view); + return view; + } + + /* handler to draw background for dark theme, + * these three functions should not be needed later with a native GTK + * widget (Shumate) + */ + _drawDarkBackground(canvas, cr, width, height) { + // set this arbitrarily to try to match the typical dark tile set + cr.setSourceRGB(0.2, 0.2, 0.2); + cr.rectangle(0, 0, width, height); + cr.fillPreserve(); + + return true; + } + + _createDarkBackground() { + this._darkBackground = new Clutter.Canvas(); + this._darkBackground.set_size(512, 512); + this._darkBackground.connect('draw', + this._drawDarkBackground.bind(this)); + this._darkBackground.invalidate(); + } + + _isWrappingAround() { + let bbox = this.view.get_bounding_box(); + + return bbox.left > bbox.right; + } + + _setBackgroundPatternIfNeeded() { + if (this._gtkSettings.gtk_application_prefer_dark_theme && + !this._isWrappingAround()) { + if (!this._darkBackgroud) + this._createDarkBackground(); + this.view.set_background_pattern(this._darkBackground); + this._customBackgroundSet = true; + } else if (this._customBackgroundSet) { + this.view.background_pattern = null; + this._customBackgroundSet = false; + } + } + + _onPreferDarkThemeChanged() { + this._setBackgroundPatternIfNeeded(); + } + + _onNightModeChanged() { + if (this._mapType === MapType.STREET) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('night-mode')) + this.view.map_source = MapSource.createStreetDarkSource(); + else + this.view.map_source = MapSource.createStreetSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + _onHybridAerialChanged() { + if (this._mapType === MapType.AERIAL) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('hybrid-aerial')) + this.view.map_source = MapSource.createHybridAerialSource(); + else + this.view.map_source = MapSource.createAerialSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + /* create and store a route layer, pass true to get a dashed line */ + _createRouteLayer(dashed, lineColor, width) { + let red = Color.parseColor(lineColor, 0); + let green = Color.parseColor(lineColor, 1); + let blue = Color.parseColor(lineColor, 2); + // Clutter uses a 0-255 range for color components + let strokeColor = new Clutter.Color({ red: red * 255, + blue: blue * 255, + green: green * 255, + alpha: 255 }); + let routeLayer = new Champlain.PathLayer({ stroke_width: width, + stroke_color: strokeColor }); + if (dashed) + routeLayer.set_dash([DASHED_ROUTE_LINE_FILLED_LENGTH, + DASHED_ROUTE_LINE_GAP_LENGTH]); + + this._routeLayers.push(routeLayer); + this.view.add_layer(routeLayer); + + return routeLayer; + } + + _clearRouteLayers() { + this._routeLayers.forEach((routeLayer) => { + routeLayer.remove_all(); + routeLayer.visible = false; + this.view.remove_layer(routeLayer); + }); + + this._routeLayers = []; + } + + _initLayers() { + let mode = Champlain.SelectionMode.SINGLE; + + this._userLocationLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._userLocationLayer); + + this._placeLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._placeLayer); + + this._instructionMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._instructionMarkerLayer); + + this._annotationMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._annotationMarkerLayer); + + ShapeLayer.SUPPORTED_TYPES.push(GeoJSONShapeLayer.GeoJSONShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(KmlShapeLayer.KmlShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(GpxShapeLayer.GpxShapeLayer); + + this._routeLayers = []; + } + + _ensureInstructionLayerAboveRouteLayers() { + this.view.remove_layer(this._instructionMarkerLayer); + this.view.add_layer(this._instructionMarkerLayer); + } + + _connectRouteSignals() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + let query = Application.routeQuery; + + route.connect('update', () => { + this.showRoute(route); + this.routeShowing = true; + }); + route.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('update', () => this._showTransitPlan(transitPlan)); + transitPlan.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('itinerary-selected', (obj, itinerary) => { + this._showTransitItinerary(itinerary); + this.routeShowing = true; + }); + transitPlan.connect('itinerary-deselected', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + + query.connect('notify', () => this.routingOpen = query.isValid()); + } + + _getStoredMapType() { + let mapType = Application.settings.get('map-type'); + + // make sure it's a valid map type + for (let type in MapType) { + if (mapType === MapType[type]) { + return mapType; + } + } + + return MapType.STREET; + } + + getMapType() { + return this._mapType; + } + + setMapType(mapType) { + if (this._mapType && this._mapType === mapType) + return; + + let overlay_sources = this.view.get_overlay_sources(); + + this._mapType = mapType; + + if (mapType !== MapType.LOCAL) { + let tiles = Service.getService().tiles; + + if (mapType === MapType.AERIAL && tiles.aerial) { + if (tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this.view.map_source = MapSource.createHybridAerialSource(); + } else { + this.view.map_source = MapSource.createAerialSource(); + } + } else { + if (tiles.streetDark && + Application.settings.get('night-mode')) { + this.view.map_source = MapSource.createStreetDarkSource(); + } else { + this.view.map_source = MapSource.createStreetSource(); + } + } + if (!this._attribution) { + this._attribution = new MapSource.AttributionLogo(this.view); + this.view.add_child(this._attribution); + } + + this._attribution.setSource(this.view.map_source); + + Application.settings.set('map-type', mapType); + } else { + let renderer = new Champlain.ImageRenderer(); + let source = new Maps.FileTileSource({ + path: Utils.getBufferText(Application.application.local_tile_path), + renderer: renderer, + tile_size: Application.application.local_tile_size || 512 + }); + try { + source.prepare(); + + this.view.map_source = source; + this.view.world = source.world; + let [lat, lon] = this.view.world.get_center(); + this.view.center_on(lat, lon); + } catch(e) { + this.setMapType(MapType.STREET); + Application.application.local_tile_path = false; + Application.application.notify('connected'); + Utils.showDialog(e.message, Gtk.MessageType.ERROR, this._mainWindow); + } + } + + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + + this.emit("map-type-changed", mapType); + } + + toggleScale() { + this._scale.visible = !this._scale.visible; + } + + _checkIfFileSizeNeedsConfirmation(files) { + let confirmLoad = false; + let totalFileSizeMB = 0; + files.forEach((file) => { + totalFileSizeMB += file.query_info(Gio.FILE_ATTRIBUTE_STANDARD_SIZE, + 0, null).get_size(); + }); + totalFileSizeMB = totalFileSizeMB / (1024 * 1024); + if (totalFileSizeMB > FILE_SIZE_LIMIT_MB) { + confirmLoad = true; + } + + return {'confirmLoad': confirmLoad, 'totalFileSizeMB': totalFileSizeMB}; + } + + _onShapeLoad(error, bbox, layer) { + if (error) { + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + } else { + bbox.compose(layer.bbox); + } + + this._remainingFilesToLoad--; + if (this._remainingFilesToLoad === 0) { + this.gotoBBox(bbox); + } + } + + openShapeLayers(files) { + let result = this._checkIfFileSizeNeedsConfirmation(files); + if (result.confirmLoad) { + let totalFileSizeMB = result.totalFileSizeMB; + + let dialog = new Gtk.MessageDialog ({ + transient_for: this._mainWindow, + modal: true, + buttons: Gtk.ButtonsType.OK_CANCEL, + text: _("Do you want to continue?"), + secondary_text: _("You are about to open files with a total " + + "size of %s MB. This could take some time to" + + " load").format(totalFileSizeMB.toLocaleString(undefined, + { maximumFractionDigits: 1 })) + }); + + dialog.connect('response', (widget, responseId) => { + if (responseId === Gtk.ResponseType.OK) { + this._loadShapeLayers(files); + } + dialog.destroy(); + }); + dialog.show_all(); + } else { + this._loadShapeLayers(files); + } + return true; + } + + _loadShapeLayers(files) { + let bbox = new BoundingBox.BoundingBox(); + this._remainingFilesToLoad = files.length; + + files.forEach((file) => { + try { + let i = this._findShapeLayerIndex(file); + let layer = (i > -1) ? this.shapeLayerStore.get_item(i) : null; + if (!layer) { + layer = ShapeLayer.newFromFile(file, this); + if (!layer) + throw new Error(_("File type is not supported")); + layer.load(this._onShapeLoad.bind(this), bbox); + this.shapeLayerStore.append(layer); + } + } catch (e) { + Utils.debug(e); + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + removeShapeLayer(shapeLayer) { + shapeLayer.unload(); + let i = this._findShapeLayerIndex(shapeLayer.file); + this.shapeLayerStore.remove(i); + } + + _findShapeLayerIndex(file) { + for (let i = 0; i < this.shapeLayerStore.get_n_items(); i++) + if (this.shapeLayerStore.get_item(i).file.equal(file)) + return i; + return -1; + } + + goToGeoURI(uri) { + try { + let location = new Location.Location({ heading: -1 }); + location.set_from_uri(uri); + + let place = new Place.Place({ location: location, + name: location.description, + store: false }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } catch(e) { + let msg = _("Failed to open GeoURI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + Utils.debug("failed to open GeoURI: %s".format(e.message)); + } + } + + goToHttpURL(url) { + Place.parseHttpURL(url, (place, error) => { + if (place) { + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } else { + Utils.showDialog(error, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + gotoUserLocation(animate) { + if (!this._userLocation) + return; + + this.emit('going-to-user-location'); + Utils.once(this._userLocation, "gone-to", + () => this.emit('gone-to-user-location')); + this._userLocation.goTo(animate); + } + + gotoAntipode() { + let lat = -this.view.latitude; + let lon = this.view.longitude > 0 ? + this.view.longitude - 180 : this.view.longitude + 180; + let place = + new Place.Place({ location: new Location.Location({ latitude: lat, + longitude: lon }), + initialZoom: this.view.zoom_level }); + + new MapWalker.MapWalker(place, this).goTo(true); + } + + userLocationVisible() { + let box = this.view.get_bounding_box(); + + return box.covers(this._userLocation.latitude, this._userLocation.longitude); + } + + _updateUserLocation() { + if (!Application.geoclue.place) + return; + + if (Application.geoclue.state !== Geoclue.State.ON) { + if (this._userLocation) + this._userLocation.visible = false; + return; + } + + if (!this._userLocation) { + let place = Application.geoclue.place; + this._userLocation = new UserLocationMarker.UserLocationMarker({ place: place, + mapView: this }); + this._userLocationLayer.remove_all(); + this._userLocation.addToLayer(this._userLocationLayer); + } + + this._userLocation.visible = true; + + this.emit('user-location-changed'); + } + + _storeLocation() { + let zoom = this.view.zoom_level; + let location = [this.view.latitude, this.view.longitude]; + + /* protect agains situations where the Champlain view was already + * disposed, in this case zoom will be set to the GObject property + * getter + */ + if (!isNaN(zoom)) { + Application.settings.set('zoom-level', zoom); + Application.settings.set('last-viewed-location', location); + } else { + Utils.debug('Failed to extract location to store'); + } + } + + _goToStoredLocation() { + let location = Application.settings.get('last-viewed-location'); + + if (location.length === 2) { + let [lat, lon] = location; + let zoom = Application.settings.get('zoom-level'); + + if (zoom >= this.view.min_zoom_level && + zoom <= this.view.max_zoom_level) + this.view.zoom_level = Application.settings.get('zoom-level'); + else + Utils.debug('Invalid initial zoom level: ' + zoom); + + if (lat >= MIN_LATITUDE && lat <= MAX_LATITUDE && + lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE) + this.view.center_on(location[0], location[1]); + else + Utils.debug('Invalid initial coordinates: ' + lat + ', ' + lon); + } else { + /* bounding box. for backwards compatibility, not used anymore */ + let bbox = new BoundingBox.BoundingBox({ top: location[0], + bottom: location[1], + left: location[2], + right: location[3] }); + this.view.connect("notify::realized", () => { + if (this.view.realized) + this.gotoBBox(bbox, true); + }); + } + } + + gotoBBox(bbox, linear) { + if (!bbox.isValid()) { + Utils.debug('Bounding box is invalid'); + return; + } + + let [lon, lat] = bbox.getCenter(); + let place = new Place.Place({ + location: new Location.Location({ latitude : lat, + longitude : lon }), + bounding_box: new Geocode.BoundingBox({ top : bbox.top, + bottom : bbox.bottom, + left : bbox.left, + right : bbox.right }) + }); + new MapWalker.MapWalker(place, this).goTo(true, linear); + } + + getZoomLevelFittingBBox(bbox) { + let mapSource = this.view.get_map_source(); + let goodSize = false; + let zoomLevel = this.view.max_zoom_level; + + do { + + let minX = mapSource.get_x(zoomLevel, bbox.left); + let minY = mapSource.get_y(zoomLevel, bbox.bottom); + let maxX = mapSource.get_x(zoomLevel, bbox.right); + let maxY = mapSource.get_y(zoomLevel, bbox.top); + + if (minY - maxY <= this.view.height && + maxX - minX <= this.view.width) + goodSize = true; + else + zoomLevel--; + + if (zoomLevel <= this.view.min_zoom_level) { + zoomLevel = this.view.min_zoom_level; + goodSize = true; + } + } while (!goodSize); + + return zoomLevel; + } + + showTurnPoint(turnPoint) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = null; + if (turnPoint.isStop()) + return; + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showTransitStop(transitStop, transitLeg) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ transitStop: transitStop, + transitLeg: transitLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showContact(contact) { + let places = contact.get_places(); + if (places.length === 0) + return; + + this._placeLayer.remove_all(); + places.forEach((p) => { + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + }); + + new MapWalker.MapWalker(places[0], this).goTo(true); + } + + _showStoredRoute(stored) { + let query = Application.routeQuery; + let route = Application.routingDelegator.graphHopper.route; + + Application.routingDelegator.graphHopper.storedRoute = stored.route; + + let resetId = route.connect('reset', function() { + route.disconnect(resetId); + query.freeze_notify(); + + let storedLast = stored.places.length - 1; + query.points[0].place = stored.places[0]; + query.points[1].place = stored.places[storedLast]; + query.transportation = stored.transportation; + + for (let i = 1; i < storedLast; i++) { + let point = query.addPoint(i); + point.place = stored.places[i]; + } + + query.thaw_notify(); + }); + route.reset(); + } + + showPlace(place, animation) { + this._placeLayer.remove_all(); + + if (place instanceof StoredRoute.StoredRoute) { + this._showStoredRoute(place); + return; + } + + this.routingOpen = false; + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(placeMarker); + placeMarker.goToAndSelect(animation); + } + + showRoute(route) { + let routeLayer; + + this._clearRouteLayers(); + this._placeLayer.remove_all(); + + routeLayer = this._createRouteLayer(false, TURN_BY_TURN_ROUTE_COLOR, + ROUTE_LINE_WIDTH); + route.path.forEach((polyline) => routeLayer.add_node(polyline)); + this.routingOpen = true; + + this._ensureInstructionLayerAboveRouteLayers(); + + this._showDestinationTurnpoints(); + this.gotoBBox(route.bbox); + } + + _showDestinationTurnpoints() { + let route = Application.routingDelegator.graphHopper.route; + let query = Application.routeQuery; + let pointIndex = 0; + + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + route.turnPoints.forEach((turnPoint) => { + if (turnPoint.isStop()) { + let queryPoint = query.filledPoints[pointIndex]; + let destinationMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + queryPoint: queryPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(destinationMarker); + pointIndex++; + } + }, this); + } + + _showTransitItinerary(itinerary) { + this.gotoBBox(itinerary.bbox); + this._clearRouteLayers(); + this._placeLayer.remove_all(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + + itinerary.legs.forEach((leg, index) => { + let dashed = !leg.transit; + let color = leg.color; + let outlineColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > + OUTLINE_LUMINANCE_THREASHHOLD; + let routeLayer; + let outlineRouteLayer; + + /* draw an outline by drawing a background path layer if needed + * TODO: maybe we should add support for outlined path layers in + * libchamplain */ + if (hasOutline) + outlineRouteLayer = this._createRouteLayer(dashed, outlineColor, + ROUTE_LINE_WIDTH + 2); + routeLayer = this._createRouteLayer(dashed, color, ROUTE_LINE_WIDTH); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way */ + if (index > 0 && !leg.transit) { + let previousLeg = itinerary.legs[index - 1]; + let lastPoint = previousLeg.polyline.last(); + + routeLayer.add_node(lastPoint); + } + + if (hasOutline) { + leg.polyline.forEach((function (polyline) { + outlineRouteLayer.add_node(polyline); + })); + } + leg.polyline.forEach((function (polyline) { + routeLayer.add_node(polyline); + })); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one */ + if (index < itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + }); + + this._ensureInstructionLayerAboveRouteLayers(); + + itinerary.legs.forEach((leg, index) => { + let previousLeg = index === 0 ? null : itinerary.legs[index - 1]; + + /* add start marker */ + let start; + if (!leg.transit) { + start = new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg, + mapView: this }); + } else { + start = new TransitBoardMarker.TransitBoardMarker({ leg: leg, + mapView: this }); + } + + this._instructionMarkerLayer.add_marker(start); + }); + + /* add arrival marker */ + let lastLeg = itinerary.legs.last(); + let arrival = new TransitArrivalMarker.TransitArrivalMarker({ leg: lastLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(arrival); + + this.routingOpen = true; + } + + _showTransitPlan(plan) { + this.gotoBBox(plan.bbox); + } + + _onViewMoved() { + this.emit('view-moved'); + if (this._storeId !== 0) + return; + + this._storeId = Mainloop.timeout_add(_LOCATION_STORE_TIMEOUT, () => { + this._storeId = 0; + this._storeLocation(); + }); + } + + onSetMarkerSelected(selectedMarker) { + this.emit('marker-selected', selectedMarker); + } +}); diff --git a/src/mapWalker.js b/src/mapWalker.js new file mode 100644 index 00000000..16366077 --- /dev/null +++ b/src/mapWalker.js @@ -0,0 +1,199 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Damián Nohales + */ + +const Clutter = imports.gi.Clutter; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +const BoundingBox = imports.boundingBox; +const Location = imports.location; +const Utils = imports.utils; + +const _MAX_DISTANCE = 19850; // half of Earth's circumference (km) +const _MIN_ANIMATION_DURATION = 2000; // msec +const _MAX_ANIMATION_DURATION = 5000; // msec + +var MapWalker = GObject.registerClass({ + Signals: { + 'gone-to': { } + } +}, class MapWalker extends GObject.Object { + + _init(place, mapView) { + this.place = place; + this._mapView = mapView; + this._view = mapView.view; + this._boundingBox = this._createBoundingBox(this.place); + super._init(); + } + + _createBoundingBox(place) { + if (place.bounding_box !== null) { + return new BoundingBox.BoundingBox({ top: place.bounding_box.top, + bottom: place.bounding_box.bottom, + left: place.bounding_box.left, + right: place.bounding_box.right }); + } else { + return null; + } + } + + // Zoom to the maximal zoom-level that fits the place type + zoomToFit() { + let zoom; + + if (this._boundingBox !== null && this._boundingBox.isValid()) { + zoom = this._mapView.getZoomLevelFittingBBox(this._boundingBox); + } else if (this.place.initialZoom) { + zoom = this.place.initialZoom; + } else { + switch (this.place.place_type) { + case Geocode.PlaceType.STREET: + zoom = 16; + break; + case Geocode.PlaceType.TOWN: + zoom = 11; + break; + case Geocode.PlaceType.COUNTRY: + zoom = 6; + break; + default: + zoom = this._view.max_zoom_level; + break; + } + } + + this._view.zoom_level = zoom; + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + } + + goTo(animate, linear) { + Utils.debug('Going to ' + [this.place.name, + this.place.location.latitude, + this.place.location.longitude].join(' ')); + this._mapView.emit('going-to'); + + if (!animate) { + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + this.emit('gone-to'); + return; + } + + let fromLocation = new Location.Location({ latitude: this._view.get_center_latitude(), + longitude: this._view.get_center_longitude() }); + this._updateGoToDuration(fromLocation); + + if (linear) { + this._view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + Utils.once(this._view, 'animation-completed', + this.zoomToFit.bind(this)); + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + } else { + /* Lets first ensure that both current and destination location are visible + * before we start the animated journey towards destination itself. We do this + * to create the zoom-out-then-zoom-in effect that many map implementations + * do. This not only makes the go-to animation look a lot better visually but + * also give user a good idea of where the destination is compared to current + * location. + */ + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_CUBIC; + this._ensureVisible(fromLocation); + + Utils.once(this._view, 'animation-completed', () => { + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_OUT_CUBIC; + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + + Utils.once(this._view, 'animation-completed::go-to', () => { + this.zoomToFit(); + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + this.emit('gone-to'); + }); + }); + } + } + + _ensureVisible(fromLocation) { + let visibleBox = null; + + if (this._boundingBox !== null && this._boundingBox.isValid()) { + visibleBox = this._boundingBox.copy(); + + visibleBox.extend(fromLocation.latitude, fromLocation.longitude); + } else { + visibleBox = new BoundingBox.BoundingBox({ left: 180, + right: -180, + bottom: 90, + top: -90 }); + + [fromLocation, this.place.location].forEach((location) => { + visibleBox.left = Math.min(visibleBox.left, location.longitude); + visibleBox.right = Math.max(visibleBox.right, location.longitude); + visibleBox.bottom = Math.min(visibleBox.bottom, location.latitude); + visibleBox.top = Math.max(visibleBox.top, location.latitude); + }); + } + + let [lon, lat] = visibleBox.getCenter(); + + this._view.zoom_level = this._mapView.getZoomLevelFittingBBox(visibleBox); + this._view.go_to(lat, lon); + } + + _boxCovers(coverBox) { + if (this._boundingBox === null) + return false; + + if (coverBox.left > this._boundingBox.left) + return false; + + if (coverBox.right < this._boundingBox.right) + return false; + + if (coverBox.top < this._boundingBox.top) + return false; + + if (coverBox.bottom > this._boundingBox.bottom) + return false; + + return true; + } + + _updateGoToDuration(fromLocation) { + let toLocation = this.place.location; + + let distance = fromLocation.get_distance_from(toLocation); + let duration = (distance / _MAX_DISTANCE) * _MAX_ANIMATION_DURATION; + + // Clamp duration + duration = Math.max(_MIN_ANIMATION_DURATION, + Math.min(duration, _MAX_ANIMATION_DURATION)); + + // We divide by two because Champlain treats both go_to and + // ensure_visible as 'goto' journeys with its own duration. + this._view.goto_animation_duration = duration / 2; + } +}); diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..49706a85 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,22 @@ +script_conf = configuration_data() +script_conf.set('GJS', gjs.path()) +script_conf.set('PACKAGE_VERSION', version) +script_conf.set('libdir', libdir) +script_conf.set('prefix', prefix) + +configure_file( + input: app_id + '.in', + output: app_id, + configuration: script_conf, + install: true, + install_dir: pkgdatadir +) + +gnome.compile_resources( + app_id + '.src', + app_id + '.src.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + source_dir: 'geojson-vt' +) diff --git a/src/org.gnome.Maps.in b/src/org.gnome.Maps.in new file mode 100755 index 00000000..1cd74738 --- /dev/null +++ b/src/org.gnome.Maps.in @@ -0,0 +1,5 @@ +#!@GJS@ +imports.package.start({ name: "gnome-maps", + version: "@PACKAGE_VERSION@", + prefix: "@prefix@", + libdir: "@libdir@" }); diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml new file mode 100644 index 00000000..70877dee --- /dev/null +++ b/src/org.gnome.Maps.src.gresource.xml @@ -0,0 +1,128 @@ + + + + accountListBox.js + address.js + application.js + boundingBox.js + checkIn.js + checkInDialog.js + color.js + contactPlace.js + contextMenu.js + constants.js + epaf.js + exportViewDialog.js + favoritesPopover.js + foursquareBackend.js + foursquareGoaAuthorizer.js + geoclue.js + geocode.js + geoJSONShapeLayer.js + geoJSONSource.js + geoJSONStyle.js + gfx.js + gpxShapeLayer.js + graphHopper.js + graphHopperGeocode.js + graphHopperTransit.js + headerBar.js + hvt.js + http.js + instructionRow.js + kmlShapeLayer.js + layersPopover.js + location.js + locationServiceDialog.js + longPrintLayout.js + main.js + mainWindow.js + mapBubble.js + mapMarker.js + mapSource.js + mapView.js + mapWalker.js + osmAccountDialog.js + osmConnection.js + osmEdit.js + osmEditDialog.js + osmNames.js + osmTypeSearchEntry.js + osmTypeListRow.js + osmTypePopover.js + osmTypes.js + osmUtils.js + overpass.js + photonGeocode.js + photonParser.js + place.js + placeBar.js + placeButtons.js + placeDialog.js + placeEntry.js + placeFormatter.js + placeIcons.js + placeListRow.js + placeMarker.js + placePopover.js + placeStore.js + placeView.js + placeViewImage.js + printLayout.js + printOperation.js + route.js + routeEntry.js + routeQuery.js + routingDelegator.js + searchPopover.js + serviceBackend.js + settings.js + sendToDialog.js + service.js + shapeLayer.js + shortPrintLayout.js + sidebar.js + socialPlace.js + socialPlaceListBox.js + socialPlaceMatcher.js + storedRoute.js + time.js + togeojson/togeojson.js + transit.js + transitArrivalMarker.js + transitArrivalRow.js + transitBoardMarker.js + transitItineraryRow.js + transitLegRow.js + transitMoreRow.js + transitOptions.js + transitOptionsPanel.js + transitPlan.js + transitPrintLayout.js + transitRouter.js + transitRouteLabel.js + transitStopRow.js + transitWalkMarker.js + translations.js + turnPointMarker.js + userLocationMarker.js + utils.js + urls.js + wikipedia.js + xmldom/dom.js + xmldom/domparser.js + xmldom/sax.js + zoomInDialog.js + clip.js + convert.js + index.js + simplify.js + tile.js + transform.js + wrap.js + transitplugins/goMetro.js + transitplugins/opendataCH.js + transitplugins/openTripPlanner.js + transitplugins/resrobot.js + + diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js new file mode 100644 index 00000000..d522e456 --- /dev/null +++ b/src/osmAccountDialog.js @@ -0,0 +1,219 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const WebKit2 = imports.gi.WebKit2; + +const Application = imports.application; +const Utils = imports.utils; + +var Response = { + SIGNED_IN: 0 +}; + +var OSMAccountDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-account-dialog.ui', + InternalChildren: ['stack', + 'emailEntry', + 'passwordEntry', + 'signInButton', + 'signInSpinner', + 'signUpLinkButton', + 'resetPasswordLabel', + 'verifyGrid', + 'verificationEntry', + 'verifyButton', + 'verificationFailedLabel', + 'signedInUserLabel', + 'signOutButton'], +}, class OSMAccountDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + this._closeOnSignIn = params.closeOnSignIn; + delete params.closeOnSignIn; + + super._init(params); + + this._emailEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('activate', + this._onPasswordActivated.bind(this)); + this._signInButton.connect('clicked', + this._onSignInButtonClicked.bind(this)); + this._verifyButton.connect('clicked', + this._onVerifyButtonClicked.bind(this)); + this._verificationEntry.connect('changed', + this._onVerificationEntryChanged.bind(this)); + this._verificationEntry.connect('activate', + this._onVerificationEntryActivated.bind(this)); + this._signOutButton.connect('clicked', + this._onSignOutButtonClicked.bind(this)); + + /* if the user is logged in, show the logged-in view */ + if (Application.osmEdit.isSignedIn) { + this._signedInUserLabel.label = Application.osmEdit.username; + this._stack.visible_child_name = 'logged-in'; + } + + /* initialize verification web view, we do it programmatically rather + * declare it in the .ui file to be able to enable WebKit sandboxing + */ + let webContext = WebKit2.WebContext.get_default(); + + webContext.set_sandbox_enabled(true); + this._verifyView = WebKit2.WebView.new_with_context(webContext); + this._verifyView.visible = true; + this._verifyView.halign = Gtk.Align.FILL; + this._verifyView.height_request = 150; + this._verifyGrid.attach(this._verifyView, 0, 0, 1, 1); + } + + _onCredentialsChanged() { + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + // make sign in button sensitive if credential have been entered + this._signInButton.sensitive = + email && email.length > 0 && password && password.length > 0; + } + + _onSignInButtonClicked() { + this._performSignIn(); + } + + _onPasswordActivated() { + /* if username and password was entered, proceed with sign-in */ + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + if (email && email.length > 0 && password && password.length > 0) + this._performSignIn(); + } + + _performSignIn() { + /* turn on signing in spinner and desensisize credential entries */ + this._signInSpinner.visible = true; + this._signInButton.sensitive = false; + this._emailEntry.sensitive = false; + this._passwordEntry.sensitive = false; + this._signUpLinkButton.visible = false; + + Application.osmEdit.performOAuthSignIn(this._emailEntry.text, + this._passwordEntry.text, + this._onOAuthSignInPerformed.bind(this)); + } + + _onOAuthSignInPerformed(success, verificationPage) { + if (success) { + /* switch to the verification view and show the verification + page */ + this._verifyView.load_html(verificationPage, + 'https://www.openstreetmap.org/'); + this._stack.visible_child_name = 'verify'; + } else { + /* clear password entry */ + this._passwordEntry.text = ''; + /* show the password reset link */ + this._resetPasswordLabel.visible = true; + } + + this._signInSpinner.visible = false; + /* re-sensisize credential entries */ + this._emailEntry.sensitive = true; + this._passwordEntry.sensitive = true; + } + + _onVerifyButtonClicked() { + this._performVerification(); + } + + _performVerification() { + /* allow copying the leading space between the "The verification is" + label and the code */ + let verificationCode = this._verificationEntry.text.trim(); + + /* Since the text shown on OSM's OAuth authorization verification form + is a bit unclear with a trailing period after the verification code, + let's strip that off if the user copied that over. */ + if (verificationCode.charAt(verificationCode.length - 1) === '.') { + verificationCode = verificationCode.slice(0, -1); + } + + Application.osmEdit.requestOAuthAccessToken(verificationCode, + this._onOAuthAccessTokenRequested.bind(this)); + } + + _onVerificationEntryChanged() { + this._verifyButton.sensitive = + this._verificationEntry.text && + this._verificationEntry.text.length > 0; + } + + _onVerificationEntryActivated() { + /* proceed with verification if a code has been entered */ + let verificationCode = this._verificationEntry.text; + + if (verificationCode && verificationCode.length > 0) + this._performVerification(); + } + + _onOAuthAccessTokenRequested(success, errorMessage) { + if (success) { + /* update the username label */ + this._signedInUserLabel.label = Application.osmEdit.username; + + if (this._closeOnSignIn) { + this.response(Response.SIGNED_IN); + } else { + /* switch to the logged in view and reset the state in case + the user signs out and start over again */ + this._resetPasswordLabel.visible = false; + this._verificationFailedLabel = false; + this._signUpLinkButton.visible = true; + this._stack.visible_child_name = 'logged-in'; + } + } else { + if (errorMessage) + Utils.showDialog(errorMessage, Gtk.MessageType.ERROR, this); + /* switch back to the sign-in view, and show a label indicating + that verification failed */ + this._resetPasswordLabel.visible = false; + this._signUpLinkButton.visible = false; + this._verificationFailedLabel.visible = true; + this._signInButton.sensitive = true; + this._stack.visible_child_name = 'sign-in'; + } + /* reset verification code entry */ + this._verificationEntry.text = ''; + } + + _onSignOutButtonClicked() { + Application.osmEdit.signOut(); + this._stack.visible_child_name = 'sign-in'; + } +}); diff --git a/src/osmConnection.js b/src/osmConnection.js new file mode 100644 index 00000000..6bb7026c --- /dev/null +++ b/src/osmConnection.js @@ -0,0 +1,458 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Maps = imports.gi.GnomeMaps; +const Rest = imports.gi.Rest; +const Secret = imports.gi.Secret; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://api.openstreetmap.org/api'; +const API_VERSION = '0.6'; + +/* OAuth constants */ +const CONSUMER_KEY = '2lbpDoED0ZspGssTBAJ8zOCtrtmUoX4KnmZUIWIK'; +const CONSUMER_SECRET = 'AO9BhDl9sJ33DjaZgQmYcNIuM3ZSml4xtugai6gE'; +const OAUTH_ENDPOINT_URL = 'https://www.openstreetmap.org/oauth'; +const LOGIN_URL = 'https://www.openstreetmap.org/login'; + +const SECRET_SCHEMA = new Secret.Schema("org.gnome.Maps", + Secret.SchemaFlags.NONE, + { + } +); + +var OSMConnection = class OSMConnection { + + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + + /* OAuth proxy used for making OSM uploads */ + this._callProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + BASE_URL + '/' + API_VERSION, + false); + Maps.osm_init(); + } + + getOSMObject(type, id, callback, cancellable) { + let url = this._getQueryUrl(type, id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + cancellable.connect(() => { + this._session.cancel_message(request, Soup.STATUS_CANCELLED); + }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + callback(false, message.status_code, null, type, null); + return; + } + + try { + let object = Maps.osm_parse (message.response_body.data, + message.response_body.length); + callback(true, message.status_code, object, type, null); + } catch (e) { + Utils.debug(e); + callback(false, message.status_code, null, type, e); + } + }); + } + + _getQueryUrl(type, id) { + return BASE_URL + '/' + API_VERSION + '/' + type + '/' + id; + } + + openChangeset(comment, callback) { + /* we assume that this would only be called if there's already been an + OAuth access token enrolled, so, if the currently instantiated + proxy instance doesn't have a token set, we could safely count on + it being present in the keyring */ + if (this._callProxy.get_token() === null) { + Secret.password_lookup(SECRET_SCHEMA, {}, null, (s, res) => { + this._onPasswordLookedUp(res, + comment, + callback); + }); + } else { + this._doOpenChangeset(comment, callback); + } + } + + _onPasswordLookedUp(result, comment, callback) { + let password = Secret.password_lookup_finish(result); + + if (password) { + let token = password.split(':')[0]; + let secret = password.split(':')[1]; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + this._doOpenChangeset(comment, callback); + } else { + callback(false, null, null); + } + } + + _doOpenChangeset(comment, callback) { + let changeset = + Maps.OSMChangeset.new(comment, 'gnome-maps ' + pkg.version); + let xml = changeset.serialize(); + + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + call.set_method('PUT'); + call.set_function('/changeset/create'); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetOpened(call, callback); }); + } + + _onChangesetOpened(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + let changesetId = parseInt(call.get_payload()); + callback(true, call.get_status_code(), changesetId); + } + + uploadObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('PUT'); + call.set_function(this._getCreateOrUpdateFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectUploaded(call, callback); }); + } + + _onObjectUploaded(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + deleteObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('DELETE'); + call.set_function(this._getDeleteFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectDeleted(call, callback); }); + } + + _onObjectDeleted(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + closeChangeset(changesetId, callback) { + let call = this._callProxy.new_call(); + call.set_method('PUT'); + call.set_function(this._getCloseChangesetFunction(changesetId)); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetClosed(call, callback); }); + } + + _onChangesetClosed(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + _getCloseChangesetFunction(changesetId) { + return '/changeset/' + changesetId + '/close'; + } + + _getCreateOrUpdateFunction(object, type) { + if (object.id) + return type + '/' + object.id; + else + return type + '/create'; + } + + _getDeleteFunction(object, type) { + return type + '/' + id; + } + + requestOAuthToken(callback) { + /* OAuth proxy used for enrolling access tokens */ + this._oauthProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + OAUTH_ENDPOINT_URL, false); + this._oauthProxy.request_token_async('request_token', 'oob', (p, error, w, u) => { + this._onRequestOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onRequestOAuthToken(error, callback) { + if (error) { + Utils.debug(error); + callback(false); + return; + } + + this._oauthToken = this._oauthProxy.get_token(); + this._oauthTokenSecret = this._oauthProxy.get_token_secret(); + callback(true); + } + + authorizeOAuthToken(username, password, callback) { + /* get login session ID */ + let loginUrl = LOGIN_URL + '?cookie_test=true'; + let uri = new Soup.URI(loginUrl); + let msg = new Soup.Message({method: 'GET', uri: uri}); + + this._session.queue_message(msg, (obj, message) => { + this._onLoginFormReceived(message, username, password, callback); + }); + } + + _onLoginFormReceived(message, username, password, callback) { + if (message.status_code !== Soup.Status.OK) { + callback(false); + return; + } + + let osmSessionID = + this._extractOSMSessionID(message.response_headers); + let osmSessionToken = + this._extractToken(message.response_body.data); + + if (osmSessionID === null || osmSessionToken === null) { + callback(false, null); + return; + } + + this._login(username, password, osmSessionID, osmSessionToken, callback); + } + + _login(username, password, sessionId, token, callback) { + /* post login form */ + let msg = Soup.form_request_new_from_hash('POST', LOGIN_URL, + {username: username, + password: password, + referer: '/', + commit: 'Login', + authenticity_token: token}); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', '_osm_session=' + sessionId); + msg.flags |= Soup.MessageFlags.NO_REDIRECT; + + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.MOVED_TEMPORARILY) + this._fetchAuthorizeForm(username, sessionId, callback); + else + callback(false, null); + }); + + } + + _fetchAuthorizeForm(username, sessionId, callback) { + let auth = '/authorize?oauth_token='; + let authorizeUrl = OAUTH_ENDPOINT_URL + auth + this._oauthToken; + let uri = new Soup.URI(authorizeUrl); + let msg = new Soup.Message({uri: uri, method: 'GET'}); + + msg.request_headers.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.OK) { + let token = this._extractToken(message.response_body.data); + this._postAuthorizeForm(username, sessionId, token, callback); + } else { + callback(false, null); + } + }); + } + + _postAuthorizeForm(username, sessionId, token, callback) { + let authorizeUrl = OAUTH_ENDPOINT_URL + '/authorize'; + let msg = Soup.form_request_new_from_hash('POST', authorizeUrl, { + oauth_token: this._oauthToken, + oauth_callback: '', + authenticity_token: token, + allow_write_api: '1', + commit: 'Save changes' + }); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + + this._session.queue_message(msg, (obj, message) => { + if (msg.status_code === Soup.Status.OK) { + callback(true, message.response_body.data); + } else + callback(false, null); + }); + } + + requestOAuthAccessToken(code, callback) { + this._oauthProxy.access_token_async('access_token', code, (p, error, w, data) => { + this._onAccessOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onAccessOAuthToken(error, callback) { + if (error) { + callback(false); + return; + } + + let token = this._oauthProxy.token; + let secret = this._oauthProxy.token_secret; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + Secret.password_store(SECRET_SCHEMA, {}, Secret.COLLECTION_DEFAULT, + "OSM OAuth access token and secret", + this._oauthProxy.token + ":" + + this._oauthProxy.token_secret, null, + (source, result, userData) => { + this._onPasswordStored(result, callback); + }); + } + + _onPasswordStored(result, callback) { + let res = false; + let errorMessage; + if (result) { + try { + res = Secret.password_store_finish(result); + } catch (error) { + errorMessage = error.message; + } + } + callback(res, errorMessage); + } + + signOut() { + /* clear token on call proxy, so it will use a new token if the user + signs in again (with a new access token) during this running + session */ + this._callProxy.token = null; + this._callProxy.token_secret = null; + + Secret.password_clear(SECRET_SCHEMA, {}, null, + this._onPasswordCleared.bind(this)); + } + + _onPasswordCleared(source, result) { + Secret.password_clear_finish(result); + } + + /* extract the session ID from the login form response headers */ + _extractOSMSessionID(responseHeaders) { + let cookie = responseHeaders.get('Set-Cookie'); + + if (cookie === null) + return null; + + let cookieParts = cookie.split(';'); + for (let cookiePart of cookieParts) { + let kvPair = cookiePart.trim().split('='); + let kv = kvPair; + + if (kv.length !== 2) { + continue; + } else if (kv[0] === '_osm_session') { + return kv[1]; + } + } + + return null; + } + + /* extract the authenticity token from the hidden input field of the login + form */ + _extractToken(messageBody) { + let regex = /.*authenticity_token.*value=\"([^\"]+)\".*/; + let lines = messageBody.split('\n'); + + for (let line of lines) { + let match = line.match(regex); + + if (match && match.length === 2) + return match[1]; + } + + return null; + } +}; + +/* + * Gets a status message (usually for an error case) + * to show for a given OSM server response. + */ +function getStatusMessage(statusCode) { + switch (statusCode) { + case Soup.Status.IO_ERROR: + case Soup.Status.UNAUTHORIZED: + /* setting the status in session.cancel_message still seems + to always give status IO_ERROR */ + return _("Incorrect user name or password"); + case Soup.Status.OK: + return _("Success"); + case Soup.Status.BAD_REQUEST: + return _("Bad request"); + case Soup.Status.NOT_FOUND: + return _("Object not found"); + case Soup.Status.CONFLICT: + return _("Conflict, someone else has just modified the object"); + case Soup.Status.GONE: + return _("Object has been deleted"); + case Soup.Status.PRECONDITION_FAILED: + return _("Way or relation refers to non-existing children"); + default: + return null; + } +} diff --git a/src/osmEdit.js b/src/osmEdit.js new file mode 100644 index 00000000..fa1a7e5d --- /dev/null +++ b/src/osmEdit.js @@ -0,0 +1,193 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Application = imports.application; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMConnection = imports.osmConnection; +const Utils = imports.utils; + +/* minimum zoom level at which to offer adding a location */ +var MIN_ADD_LOCATION_ZOOM_LEVEL = 16; + +var OSMEdit = class OSMEdit { + + constructor() { + this._osmConnection = new OSMConnection.OSMConnection(); + this._osmObject = null; // currently edited object + this._username = Application.settings.get('osm-username'); + this._isSignedIn = this._username !== null && this._username.length > 0; + } + + get object() { + return this._osmObject; + } + + createEditDialog(parentWindow, place) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + place: place + }); + + return dialog; + } + + createEditNewDialog(parentWindow, latitude, longitude) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + addLocation: true, + latitude: latitude, + longitude: longitude + }); + + return dialog; + } + + createAccountDialog(parentWindow, closeOnSignIn) { + let dialog = new OSMAccountDialog.OSMAccountDialog({ + transient_for: parentWindow, + modal: true, + closeOnSignIn: closeOnSignIn + }); + + return dialog; + } + + fetchObject(place, callback, cancellable) { + let osmType = Utils.osmTypeToString(place.osmType); + + /* reset currently edited object */ + this._osmObject = null; + this._osmConnection.getOSMObject(osmType, place.osm_id, + (function(success, status, osmObject, osmType) { + callback(success, status, osmObject, osmType); + }), cancellable); + } + + uploadObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._uploadObject.bind(this), callback); + } + + _onChangesetOpened(success, status, changesetId, object, type, action, callback) { + if (success) { + let osmType = Utils.osmTypeToString(type); + action(object, osmType, changesetId, callback); + } else { + callback(false, status); + } + } + + _openChangeset(object, type, comment, action, callback) { + this._osmConnection.openChangeset(comment, (success, status, changesetId) => { + this._onChangesetOpened(success, status, changesetId, object, type, action, callback); + }); + } + + _onObjectUploaded(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _uploadObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.uploadObject(object, type, changesetId, (success, status, response) => { + this._onObjectUploaded(success, status, response, changesetId, callback); + }); + } + + deleteObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._deleteObject.bind(this), callback); + } + + _onObjectDeleted(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _deleteObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.deleteObject(object, type, changesetId, (success, status, response) => { + this._onObjectDeleted(success, status, response, changesetId, callback); + }); + } + + _closeChangeset(changesetId, callback) { + this._osmConnection.closeChangeset(changesetId, callback); + } + + performOAuthSignIn(username, password, callback) { + this._osmConnection.requestOAuthToken((success) => { + if (success) + this._onOAuthTokenRequested(username, password, callback); + else + callback(false, null); + }); + } + + _onOAuthTokenRequested(username, password, callback) { + /* keep track of authorizing username */ + this._username = username; + this._osmConnection.authorizeOAuthToken(username, password, callback); + } + + requestOAuthAccessToken(code, callback) { + this._osmConnection.requestOAuthAccessToken(code, (success, token) => { + this._onOAuthAccessTokenRequested(success, callback); + }); + } + + _onOAuthAccessTokenRequested(success, callback) { + if (success) { + this._isSignedIn = true; + Application.settings.set('osm-username', this._username); + } else { + /* clear out username if verification was unsuccessful */ + this._username = null; + } + + callback(success); + } + + signOut() { + this._username = null; + this._isSignedIn = false; + + Application.settings.set('osm-username', ''); + this._osmConnection.signOut(); + } + + get isSignedIn() { + return this._isSignedIn; + } + + get username() { + return this._username; + } +}; diff --git a/src/osmEditDialog.js b/src/osmEditDialog.js new file mode 100644 index 00000000..7b28d051 --- /dev/null +++ b/src/osmEditDialog.js @@ -0,0 +1,907 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const Maps = imports.gi.GnomeMaps; +const OSMConnection = imports.osmConnection; +const OSMTypes = imports.osmTypes; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const OSMUtils = imports.osmUtils; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +var Response = { + UPLOADED: 0, + DELETED: 1, + CANCELLED: 2, + ERROR: 3 +}; + +/* + * enumeration representing + * the different OSM editing + * field types + */ +const EditFieldType = { + TEXT: 0, + INTEGER: 1, + UNSIGNED_INTEGER: 2, + COMBO: 3, + ADDRESS: 4 +}; + +const _WIKI_BASE = 'https://wiki.openstreetmap.org/wiki/Key:'; + +var _osmWikipediaRewriteFunc = function(text) { + let wikipediaArticleFormatted = OSMUtils.getWikipediaOSMArticleFormatFromUrl(text); + + /* if the entered text is a Wikipedia link, + * substitute it with the OSM-formatted Wikipedia article tag */ + if (wikipediaArticleFormatted) + return wikipediaArticleFormatted; + else + return text; +}; + +/* Reformat a phone number string if it looks like a tel: URI + * strip off the leading tel: protocol string and trailing parameters, + * following a ; + * otherwise return the string unmodified */ +var _osmPhoneRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'tel') { + let afterTel = text.replace('tel:', ''); + + return Soup.uri_decode(afterTel.split(';')[0]); + } else { + return text; + } +}; + +/* Reformat an e-mail address if it it looks like a mailto: URI + * strip off the leading mailto: protocol string and trailing parameters, + * following a ? + * otherwise return the string unmodified + */ +var _osmEmailRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'mailto') { + let afterMailto = text.replace('mailto:', ''); + + return Soup.uri_decode(afterMailto.split('?')[0]); + } else { + return text; + } +} + +/* + * specification of OSM edit fields + * name: the label for the edit field (translatable) + * tag: the OSM tag key value + * type: the field type (determines editing field type) + * rewriteFunc: a rewrite function taking a string argument + * (only used for TEXT fields) + * placeHolder: set a text place holder to act as example input + * (only used for TEXT fields) + * includeHelp: when true turn the name label to a link to the + * OSM wiki for tags. + * options: The options for the combo box (only used for COMBO fields) + * hint: a hint text to show in a popover displayed by a hint button + * (for TEXT and INTEGER fields) + * subtags: Used by a complex composite OSM tag. + * rows: Number of rows needed if != 1 (Currently only for ADDRESS). + */ +const OSM_FIELDS = [ + { + name: _("Name"), + tag: 'name', + type: EditFieldType.TEXT, + hint: _("The official name. This is typically what appears on signs.") + }, + { + name: _("Address"), + tag: 'addr', + subtags: ['addr:street', 'addr:housenumber', + 'addr:postcode', 'addr:city'], + type: EditFieldType.ADDRESS, + rows: 2 + }, + { + name: _("Website"), + tag: 'website', + type: EditFieldType.TEXT, + validate: Utils.isValidWebsite, + validateError: _("This is not a valid URL. Make sure to include http:// or https://."), + hint: _("The official website. Try to use the most basic form " + + "of a URL i.e. http://example.com instead of " + + "http://example.com/index.html.") + }, + { + name: _("Phone"), + tag: 'phone', + type: EditFieldType.TEXT, + rewriteFunc: this._osmPhoneRewriteFunc, + hint: _("Phone number. Use the international format, " + + "starting with a + sign. Beware of local privacy " + + "laws, especially for private phone numbers.") + }, + { + name: _("E-mail"), + tag: 'email', + type: EditFieldType.TEXT, + validate: Utils.isValidEmail, + rewriteFunc: this._osmEmailRewriteFunc, + validateError: _("This is not a valid e-mail address. Make sure to not include the mailto: protocol prefix."), + hint: _("Contact e-mail address for inquiries. " + + "Add only email addresses that are intended to be publicly used.") + }, + { + name: _("Wikipedia"), + tag: 'wikipedia', + type: EditFieldType.TEXT, + validate: Wikipedia.isValidWikipedia, + rewriteFunc: this._osmWikipediaRewriteFunc, + hint: _("The format used should include the language code " + + "and the article title like “en:Article title”.") + }, + { + name: _("Opening hours"), + tag: 'opening_hours', + type: EditFieldType.TEXT, + placeHolder: 'Mo-Fr 08:00-20:00; Sa-Su 10:00-14:00', + includeHelp: true, + hint: _("See the link in the label for help on format.") + }, + { + name: _("Population"), + tag: 'population', + type: EditFieldType.UNSIGNED_INTEGER + }, + { + name: _("Altitude"), + tag: 'ele', + type: EditFieldType.INTEGER, + hint: _("Elevation (height above sea level) of a point in metres.") + }, + { + name: _("Wheelchair access"), + tag: 'wheelchair', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['limited', _("Limited")], + ['designated', _("Designated")]] + }, + { + name: _("Internet access"), + tag: 'internet_access', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['wlan', _("Wi-Fi")], + ['wired', _("Wired")], + ['terminal', _("Terminal")], + ['service', _("Service")]] + }, + { + name: _("Takeaway"), + tag: 'takeaway', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['only', _("Only")]] + }, + { + name: _("Religion"), + tag: 'religion', + type: EditFieldType.COMBO, + options: [['animist', _("Animism")], + ['bahai', _("Bahá’í")], + ['buddhist', _("Buddhism")], + ['caodaism', _("Caodaism")], + ['christian', _("Christianity")], + ['confucian', _("Confucianism")], + ['hindu', _("Hinduism")], + ['jain', _("Jainism")], + ['jewish', _("Judaism")], + ['muslim', _("Islam")], + ['multifaith', _("Multiple Religions")], + ['pagan', _("Paganism")], + ['pastafarian', _("Pastafarianism")], + ['scientologist', _("Scientology")], + ['shinto', _("Shinto")], + ['sikh', _("Sikhism")], + ['spiritualist', _("Spiritualism")], + ['taoist', _("Taoism")], + ['unitarian_universalist', _("Unitarian Universalism")], + ['voodoo', _("Voodoo")], + ['yazidi', _("Yazidism")], + ['zoroastrian', _("Zoroastrianism")]] + }, + { + name: _("Toilets"), + tag: 'toilets', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")]] + }, + { + name: _("Note"), + tag: 'note', + type: EditFieldType.TEXT, + hint: _("Information used to inform other mappers about non-obvious information about an element, the author’s intent when creating it, or hints for further improvement.") + }]; + +const OSMEditAddress = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-address.ui', + Children: [ 'street', + 'number', + 'post', + 'city' ], +}, class OSMEditAddress extends Gtk.Grid { + + _init(params) { + let street = params.street; + delete params.street; + + let number = params.number; + delete params.number; + + let postCode = params.postCode; + delete params.postCode; + + let city = params.city; + delete params.city; + + super._init(params); + + if (street) + this.street.text = street; + + if (number) + this.number.text = number; + + if (postCode) + this.post.text = postCode; + + if (city) + this.city.text = city; + } +}); + + +var OSMEditDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-dialog.ui', + InternalChildren: [ 'cancelButton', + 'backButton', + 'nextButton', + 'stack', + 'editorGrid', + 'commentTextView', + 'addFieldPopoverGrid', + 'addFieldButton', + 'typeSearchGrid', + 'typeLabel', + 'typeButton', + 'typeValueLabel', + 'recentTypesLabel', + 'recentTypesListBox', + 'hintPopover', + 'hintLabel', + 'headerBar'], +}, class OSMEditDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + delete params.place; + + this._addLocation = params.addLocation; + delete params.addLocation; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + /* I could not get this widget working from within the widget template + * this results in a segfault. The widget definition is left in-place, + * but commented-out in the template file */ + this._typeSearch = new OSMTypeSearchEntry.OSMTypeSearchEntry(); + this._typeSearchGrid.attach(this._typeSearch, 0, 0, 1, 1); + this._typeSearch.visible = true; + this._typeSearch.can_focus = true; + + let typeSearchPopover = this._typeSearch.popover; + typeSearchPopover.connect('selected', (o, k, v, t) => { + this._onTypeSelected(o, k, v, t); + }); + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + this._isEditing = false; + this._nextButton.connect('clicked', () => this._onNextClicked()); + this._cancelButton.connect('clicked', () => this._onCancelClicked()); + this._backButton.connect('clicked', () => this._onBackClicked()); + this._typeButton.connect('clicked', () => this._onTypeClicked()); + + if (this._addLocation) { + this._headerBar.title = C_("dialog title", "Add to OpenStreetMap"); + this._typeLabel.visible = true; + this._typeButton.visible = true; + + /* the OSMObject ID, version, and changeset ID is unknown for now */ + let newNode = + Maps.OSMNode.new(0, 0, 0, this._longitude, this._latitude); + /* set a placeholder name tag to always get a name entry for new + * locations */ + newNode.set_tag('name', ''); + this._loadOSMData(newNode); + this._isEditing = true; + this._osmType = Geocode.PlaceOsmType.NODE; + } else { + this._osmType = this._place.osmType; + Application.osmEdit.fetchObject(this._place, + this._onObjectFetched.bind(this), + this._cancellable); + } + + /* store original title of the dialog to be able to restore it when + * coming back from type selection */ + this._originalTitle = this._headerBar.title; + this._updateRecentTypesList(); + + this._recentTypesListBox.set_header_func((row, previous) => { + if (previous) + row.set_header(new Gtk.Separator()); + }); + + this._recentTypesListBox.connect('row-activated', (listbox, row) => { + this._onTypeSelected(null, row._key, row._value, row._title); + }); + } + + _onNextClicked() { + if (this._isEditing) { + this._switchToUpload(); + } else { + this._stack.visible_child_name = 'loading'; + this._nextButton.sensitive = false; + this._backButton.sensitive = false; + + let comment = this._commentTextView.buffer.text; + Application.osmEdit.uploadObject(this._osmObject, + this._osmType, comment, + this._onObjectUploaded.bind(this)); + } + } + + _onTypeClicked() { + this._cancelButton.visible = false; + this._backButton.visible = true; + this._nextButton.visible = false; + this._headerBar.title = _("Select Type"); + this._stack.visible_child_name = 'select-type'; + } + + _onTypeSelected(popover, key, value, title) { + this._typeValueLabel.label = title; + this._updateType(key, value); + + if (popover) + popover.hide(); + + /* clear out type search entry */ + this._typeSearch.text = ''; + + /* go back to the editing stack page */ + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._stack.visible_child_name = 'editor'; + this._headerBar.title = this._originalTitle; + + /* update recent types store */ + OSMTypes.recentTypesStore.pushType(key, value); + + /* enable the Next button, so that it's possible to just change the type + * of an object without changing anything else */ + this._nextButton.sensitive = true; + + this._updateRecentTypesList(); + } + + _updateType(key, value) { + /* clear out any previous type-related OSM tags */ + OSMTypes.OSM_TYPE_TAGS.forEach((tag) => this._osmObject.delete_tag(tag)); + + this._osmObject.set_tag(key, value); + } + + /* update visibility and enable the type selection button if the object has + * a well-known type (based on a known set of tags) */ + _updateTypeButton() { + let numTypeTags = 0; + let lastTypeTag = null; + + for (let i = 0; i < OSMTypes.OSM_TYPE_TAGS.length; i++) { + let key = OSMTypes.OSM_TYPE_TAGS[i]; + let value = this._osmObject.get_tag(key); + + if (value != null) { + numTypeTags++; + lastTypeTag = key; + } + } + + /* if the object has none of tags set, enable the button and keep the + * pre-set "None" label */ + if (numTypeTags === 0) { + this._typeLabel.visible = true; + this._typeButton.visible = true; + } else if (numTypeTags === 1) { + let value = this._osmObject.get_tag(lastTypeTag); + let typeTitle = OSMTypes.lookupType(lastTypeTag, value); + + /* if the type tag has a value we know of, and possible has + * translations for */ + if (typeTitle != null) { + this._typeValueLabel.label = typeTitle; + this._typeLabel.visible = true; + this._typeButton.visible = true; + } + } + } + + _updateRecentTypesList() { + let recentTypes = OSMTypes.recentTypesStore.recentTypes; + + if (recentTypes.length > 0) { + let children = this._recentTypesListBox.get_children(); + + for (let i = 0; i < children.length; i++) { + this._recentTypesListBox.remove(children[i]); + } + + this._recentTypesLabel.visible = true; + this._recentTypesListBox.visible = true; + + for (let i = 0; i < recentTypes.length; i++) { + let key = recentTypes[i].key; + let value = recentTypes[i].value; + let title = OSMTypes.lookupType(key, value); + + let grid = new Gtk.Grid({visible: true, + margin_top: 6, margin_bottom: 6, + margin_start: 12, margin_end: 12}); + let label = new Gtk.Label({visible: true, halign: Gtk.Align.START, + label: title}); + + label.get_style_context().add_class('dim-label'); + + grid.attach(label, 0, 0, 1, 1); + + this._recentTypesListBox.insert(grid, -1); + + let row = this._recentTypesListBox.get_row_at_index(i); + + row._title = title; + row._key = key; + row._value = value; + } + } else { + this._recentTypesLabel.visible = false; + this._recentTypesListBox.visible = false; + } + } + + _switchToUpload() { + this._stack.set_visible_child_name('upload'); + this._nextButton.label = _("Done"); + this._cancelButton.visible = false; + this._backButton.visible = true; + this._cancelButton.visible = false; + this._isEditing = false; + this._commentTextView.grab_focus(); + } + + _onCancelClicked() { + this.response(Response.CANCELLED); + } + + _onBackClicked() { + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._nextButton.label = _("Next"); + this._stack.set_visible_child_name('editor'); + this._isEditing = true; + this._commentTextView.buffer.text = ''; + this._typeSearch.text = ''; + this._headerBar.title = this._originalTitle; + } + + _onObjectFetched(success, status, osmObject, osmType, error) { + if (success) { + this._isEditing = true; + this._loadOSMData(osmObject); + } else { + this._showError(status, error); + } + } + + _onObjectUploaded(success, status) { + if (success) { + this.response(Response.UPLOADED); + } else { + this._showError(status); + this.response(Response.ERROR); + } + } + + _showError(status, error) { + /* set error message from specific error if available, otherwise use + * a generic error message for the HTTP status code */ + let statusMessage = + error ? error.message : OSMConnection.getStatusMessage(status); + let messageDialog = + new Gtk.MessageDialog({ transient_for: this.get_toplevel(), + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: statusMessage }); + + messageDialog.run(); + messageDialog.destroy(); + this.response(Response.ERROR); + } + + /* GtkContainer.child_get_property doesn't seem to be usable from GJS */ + _getRowOfDeleteButton(button) { + for (let row = 1; row < this._currentRow; row++) { + let label = this._editorGrid.get_child_at(0, row); + let deleteButton = this._editorGrid.get_child_at(2, row); + + if (deleteButton === button) + return row; + } + + return -1; + } + + _addOSMEditDeleteButton(fieldSpec) { + let deleteButton = Gtk.Button.new_from_icon_name('user-trash-symbolic', + Gtk.IconSize.BUTTON); + let styleContext = deleteButton.get_style_context(); + let rows = fieldSpec.rows || 1; + + styleContext.add_class('flat'); + this._editorGrid.attach(deleteButton, 2, this._currentRow, 1, 1); + + deleteButton.connect('clicked', () => { + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((key) => this._osmObject.delete_tag(key)); + } else { + this._osmObject.delete_tag(fieldSpec.tag); + } + + let row = this._getRowOfDeleteButton(deleteButton); + for (let i = 0; i < rows; i++) { + this._editorGrid.remove_row(row); + this._currentRow--; + } + this._nextButton.sensitive = true; + this._updateAddFieldMenu(); + }); + + deleteButton.show(); + } + + _addOSMEditLabel(fieldSpec) { + let text = fieldSpec.name; + if (fieldSpec.includeHelp) { + let link = _WIKI_BASE + fieldSpec.tag; + text = '%s'.format(link, link, text); + } + let label = new Gtk.Label({ label: text, + use_markup: true }); + label.halign = Gtk.Align.END; + label.get_style_context().add_class('dim-label'); + this._editorGrid.attach(label, 0, this._currentRow, 1, 1); + label.show(); + } + + _showHintPopover(entry, hint) { + if (this._hintPopover.visible) { + this._hintPopover.popdown(); + } else { + this._hintPopover.relative_to = entry; + this._hintLabel.label = hint; + this._hintPopover.popup(); + } + } + + _validateTextEntry(fieldSpec, entry) { + if (fieldSpec.validate) { + /* also allow empty text without showing the validation warning, + * since we want to allow clearing out the text to unset a value + * (equivalent to using the delete button). + */ + if (entry.text !== '' && !fieldSpec.validate(entry.text)) { + entry.get_style_context().add_class("warning"); + } else { + entry.get_style_context().remove_class("warning"); + } + } + } + + _addOSMEditTextEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let entry = new Gtk.Entry(); + entry.text = value; + entry.hexpand = true; + if (fieldSpec.placeHolder) + entry.placeholder_text = fieldSpec.placeHolder; + + entry.connect('changed', () => { + if (fieldSpec.rewriteFunc) + entry.text = fieldSpec.rewriteFunc(entry.text); + this._osmObject.set_tag(fieldSpec.tag, entry.text); + + this._validateTextEntry(fieldSpec, entry); + + this._nextButton.sensitive = true; + }); + + this._validateTextEntry(fieldSpec, entry); + + if (fieldSpec.hint) { + entry.secondary_icon_name = 'dialog-information-symbolic'; + entry.connect('icon-press', (entry, iconPos, event) => { + if (fieldSpec.validate && entry.text !== '' && + !fieldSpec.validate(entry.text)) { + this._showHintPopover(entry, fieldSpec.validateError); + } else { + this._showHintPopover(entry, fieldSpec.hint); + } + }); + } + + this._editorGrid.attach(entry, 1, this._currentRow, 1, 1); + entry.show(); + entry.grab_focus(); + + /* TODO: should we allow deleting the name field? */ + this._addOSMEditDeleteButton(fieldSpec); + + this._currentRow++; + } + + _addOSMEditIntegerEntry(fieldSpec, value, min, max) { + this._addOSMEditLabel(fieldSpec); + + let spinbutton = Gtk.SpinButton.new_with_range(min, max, 1); + spinbutton.value = value; + spinbutton.numeric = true; + spinbutton.hexpand = true; + spinbutton.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, spinbutton.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + spinbutton.secondary_icon_name = 'dialog-information-symbolic'; + spinbutton.connect('icon-press', (iconPos, event) => { + this._showHintPopover(spinbutton, fieldSpec.hint); + }); + } + + this._editorGrid.attach(spinbutton, 1, this._currentRow, 1, 1); + spinbutton.show(); + spinbutton.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditComboEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let combobox = new Gtk.ComboBoxText(); + + fieldSpec.options.forEach(function(option) { + combobox.append(option[0], option[1]); + }); + combobox.active_id = value; + combobox.hexpand = true; + combobox.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, combobox.active_id); + this._nextButton.sensitive = true; + }); + + this._editorGrid.attach(combobox, 1, this._currentRow, 1, 1); + combobox.show(); + combobox.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditAddressEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let addr = new OSMEditAddress({ street: value[0], + number: value[1], + postCode: value[2], + city: value[3] }); + let changedFunc = (function(entry, index) { + this._osmObject.set_tag(fieldSpec.subtags[index], entry.text); + this._nextButton.sensitive = true; + }).bind(this); + + addr.street.connect('changed', changedFunc.bind(this, addr.street, 0)); + addr.number.connect('changed', changedFunc.bind(this, addr.number, 1)); + addr.post.connect('changed', changedFunc.bind(this, addr.post, 2)); + addr.city.connect('changed', changedFunc.bind(this, addr.city, 3)); + + let rows = fieldSpec.rows || 1; + this._editorGrid.attach(addr, 1, this._currentRow, 1, rows); + addr.street.grab_focus(); + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow += rows; + } + + /* update visible items in the "Add Field" popover */ + _updateAddFieldMenu() { + /* clear old items */ + let children = this._addFieldPopoverGrid.get_children(); + let hasAllFields = true; + + for (let i = 0; i < children.length; i++) { + let button = children[i]; + button.destroy(); + } + + /* add selectable items */ + let row = 0; + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let hasValue = false; + + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + if (this._osmObject.get_tag(tag) !== null) + hasValue = true; + }); + } else { + hasValue = this._osmObject.get_tag(fieldSpec.tag) !== null; + } + + if (!hasValue) { + let button = new Gtk.Button({ + visible: true, sensitive: true, + label: fieldSpec.name + }); + button.get_style_context().add_class('menuitem'); + button.get_style_context().add_class('button'); + button.get_style_context().add_class('flat'); + button.get_child().halign = Gtk.Align.START; + + button.connect('clicked', () => { + this._addFieldButton.active = false; + this._addOSMField(fieldSpec); + /* add a "placeholder" empty OSM tag to keep the add field + * menu updated, these tags will be filtered out if nothing + * is entered */ + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + this._osmObject.set_tag(tag, ''); + }); + } else { + this._osmObject.set_tag(fieldSpec.tag, ''); + } + this._updateAddFieldMenu(); + }); + + hasAllFields = false; + this._addFieldPopoverGrid.attach(button, 0, row, 1, 1); + row++; + } + } + + this._addFieldButton.sensitive = !hasAllFields; + } + + _addOSMField(fieldSpec, value) { + switch (fieldSpec.type) { + case EditFieldType.TEXT: + this._addOSMEditTextEntry(fieldSpec, value || ''); + break; + case EditFieldType.INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, -1e9, 1e9); + break; + case EditFieldType.UNSIGNED_INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, 0, 1e9); + break; + case EditFieldType.COMBO: + this._addOSMEditComboEntry(fieldSpec, value || ''); + break; + case EditFieldType.ADDRESS: + this._addOSMEditAddressEntry(fieldSpec, value || ''); + break; + } + } + + _loadOSMData(osmObject) { + this._osmObject = osmObject; + + /* keeps track of the current insertion row in the grid for editing + * widgets */ + this._currentRow = 1; + + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let value; + + if (fieldSpec.subtags) { + let hasAny = false; + fieldSpec.subtags.forEach(function(tag) { + if (osmObject.get_tag(tag) != null) + hasAny = true; + }); + + if (hasAny) { + value = fieldSpec.subtags.map(function(tag) { + return osmObject.get_tag(tag); + }); + this._addOSMField(fieldSpec, value); + } + } else { + value = osmObject.get_tag(fieldSpec.tag); + if (value != null) + this._addOSMField(fieldSpec, value); + } + } + + this._updateAddFieldMenu(); + this._updateTypeButton(); + this._stack.visible_child_name = 'editor'; + } +}); diff --git a/src/osmNames.js b/src/osmNames.js new file mode 100644 index 00000000..97ac4613 --- /dev/null +++ b/src/osmNames.js @@ -0,0 +1,235 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for getting localized names of OSM objects. + * See https://wiki.openstreetmap.org/wiki/Multilingual_names + */ + +const Utils = imports.utils + +/** + * Mapping writing systems (scripts) to languages (most commonly + * used scripts) and countries where given writing system is the predominant + * one used. + * + * See: + * https://en.wikipedia.org/wiki/List_of_writing_systems + */ +const WRITING_SYSTEMS = [ + // ARABIC + { + languages: new Set(['ar', 'bal', 'bft', 'bhd', 'brh', 'bsk', 'fa', + 'khv', 'ks', 'ur', 'pa', 'ps', 'sd', 'skr', 'ug', + 'ckb']), + countries: new Set(['AE', 'AF', 'BH', 'DZ', 'EG', 'IQ', 'IR', 'JO', 'KW', + 'LB', 'LY', 'MA', 'OM', 'PK', 'PS', 'QA', 'SA', 'SD', + 'SY', 'TN', 'YE']) + }, + // ARMENIAN + { + languages: new Set(['am']), + countries: new Set(['AM']) + }, + // BENGALI + { + languages: new Set(['as', 'bn', 'bpy', 'ctg', 'mni', 'rkt', 'syl']), + countries: new Set(['BD']) + }, + // BURMESE + { + languages: new Set(['mnv', 'my', 'rki', 'rmz', 'shn']), + countries: new Set(['MM']) + }, + // CHINESE + { + languages: new Set(['zh', 'yue']), + countries: new Set(['CN', 'TW']) + }, + // CYRILLIC + { + languages: new Set(['ab', 'abq', 'ady', 'alt', 'alr', 'aqc', 'av', 'ba', + 'be', 'bg', 'bgx', 'ce', 'chm', 'ckt', 'cnr', 'crh', + 'cv', 'dar', 'dlg', 'dng', 'eve', 'evn', 'gld', + 'inh', 'itl', 'jdt', 'kbd', 'kjh', 'koi', 'kpy', + 'krc', 'kum', 'ky', 'lbe', 'lez', 'mn', 'mk', 'nog', + 'oaa', 'os', 'ru', 'rue', 'sah', 'sgh', 'sjd', 'sr', + 'sty', 'tab', 'tg', 'tt', 'ttt', 'tyv', 'uby', 'uk', + 'ulc', 'uum', 'yah', 'yai']), + countries: new Set(['BY', 'KG', 'MN', 'TJ', 'RS', 'RU', 'UA']) + }, + // DEVANAGARI + { + languages: new Set(['awa', 'anp', 'bgc', 'bhb', 'bho', 'brx', 'doi', + 'hi', 'hne', 'kok', 'mag', 'mai', 'mr', 'ne', 'new', + 'raj', 'sa', 'sgj']) + }, + // GEORIGIAN + { + languages: new Set(['ka']), + countries: new Set(['GE']) + }, + // GEEZ + { + languages: new Set(['am', 'gez', 'har', 'ti', 'tig']), + countries: new Set(['ET', 'ER']) + }, + // GREEK + { + languages: new Set(['gr']), + countries: new Set(['GR']) + }, + // GUJARATI + { + languages: new Set(['gbl', 'gu', 'kfr', 'vas', 'vav']) + }, + // HEBREW + { + languages: new Set(['he', 'yi']), + countries: new Set(['IL']) + }, + // JAPANESE + { + languages: new Set(['ja']), + countries: new Set(['JP']) + }, + // KHMER + { + languages: new Set(['km']), + countries: new Set(['KH']) + }, + // KOREAN + { + languages: new Set(['ko']), + countries: new Set(['KR', 'NK']) + }, + // LAO + { + languages: new Set(['lo']), + countries: new Set(['LA']) + }, + // THAANA + { + languages: new Set(['dv']), + countries: new Set(['MV']) + }, + // THAI + { + languages: new Set(['nod', 'sou', 'th', 'tts']), + countries: new Set(['TH']) + } +]; + +function getNameForLanguageAndCountry(tags, language, country) { + let localizedName = _getNameInLanguage(tags, language); + + /* for names in Norwegian, the best practice in OSM is to use the + * general code 'no' for translated names, unless the translation + * differs between Bokmål (nb) and Nynorsk (nn), in which case the standard + * ISO 639-2 codes are used, e.g. the default case from above will be used + */ + if (!localizedName && (language === 'nb' || language === 'nn')) + localizedName = _getNameInLanguage(tags, 'no'); + + return localizedName ? localizedName : + _getFallbackNameForLanguageAndCountry(tags, language, + country); +} + +function _getFallbackNameForLanguageAndCountry(tags, language, country) { + let intName; + + if (_predominantWritingSystemMatchesLanguage(country, language) && tags.name) + return tags.name; + + let nameInSameScript = _getNameMatchingWritingSystem(language, tags); + + if (nameInSameScript) + return nameInSameScript; + + switch (country) { + case 'CN': + intName = _getNameInLanguage(tags, 'zh_pinyin'); + break; + case 'JP': + intName = _getNameInLanguage(tags, 'ja-Latn'); + if (!intName) + intName = _getNameInLanguage(tags, 'ja_rm'); + break; + case 'KO': + case 'NK': + intName = _getNameInLanguage(tags, 'ko-Latn'); + break; + case 'RS': + intName = _getNameInLanguage(tags, 'sr-Latn'); + break; + + } + + let enName = _getNameInLanguage(tags, 'en'); + + if (intName) + return intName; + else if (tags.int_name) + return tags.int_name; + else if (enName) + return enName; + else + return tags.name; +} + +function _getNameInLanguage(tags, language) { + return language === 'C' ? tags.name : tags['name:' + language]; +} + +function _predominantWritingSystemMatchesLanguage(country, language) { + let writingSystemOfCountry; + let writingSystemOfLanguage; + + WRITING_SYSTEMS.forEach(w => { + if (w.languages.has(language)) + writingSystemOfLanguage = w; + + if (w.countries && w.countries.has(country)) + writingSystemOfCountry = w; + }); + + return writingSystemOfCountry === writingSystemOfLanguage; +} + +function _getNameMatchingWritingSystem(language, tags) { + let writingSystem; + let name; + + WRITING_SYSTEMS.forEach(w => { + if (w.languages.has(language)) + writingSystem = w; + }); + + if (writingSystem) { + writingSystem.languages.forEach(lang => { + if (tags['name:' + lang]) + name = tags['name:' + lang]; + }); + } + + return name; +} diff --git a/src/osmTypeListRow.js b/src/osmTypeListRow.js new file mode 100644 index 00000000..795d203c --- /dev/null +++ b/src/osmTypeListRow.js @@ -0,0 +1,50 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var OSMTypeListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-list-row.ui', + InternalChildren: [ 'name' ] +}, class OSMTypeListRow extends Gtk.ListBoxRow { + + _init(props) { + this._type = props.type; + delete props.type; + + super._init(props); + + this._name.label = this._type.title; + } + + get key() { + return this._type.key; + } + + get value() { + return this._type.value; + } + + get title() { + return this._type.title; + } +}); diff --git a/src/osmTypePopover.js b/src/osmTypePopover.js new file mode 100644 index 00000000..664ae721 --- /dev/null +++ b/src/osmTypePopover.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypeListRow = imports.osmTypeListRow; +const SearchPopover = imports.searchPopover; + +var OSMTypePopover = GObject.registerClass({ + InternalChildren: ['list'], + Template: 'resource:///org/gnome/Maps/ui/osm-type-popover.ui', + Signals : { + /* signal emitted when selecting a type, indicates OSM key and value + * and display title */ + 'selected' : { param_types: [ GObject.TYPE_STRING, + GObject.TYPE_STRING, + GObject.TYPE_STRING ] } + } +}, class OSMTypePopover extends SearchPopover.SearchPopover { + + _init(props) { + super._init(props); + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.key, row.value, row.title); + }); + } + + showMatches(matches) { + this._list.foreach((row) => this._list.remove(row)); + + matches.forEach((type) => this._addRow(type)); + this.show(); + } + + _addRow(type) { + let row = new OSMTypeListRow.OSMTypeListRow({ type: type, + can_focus: true }); + this._list.insert(row, -1); + } +}); diff --git a/src/osmTypeSearchEntry.js b/src/osmTypeSearchEntry.js new file mode 100644 index 00000000..eae92355 --- /dev/null +++ b/src/osmTypeSearchEntry.js @@ -0,0 +1,75 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypePopover = imports.osmTypePopover; +const OSMTypes = imports.osmTypes; +const Utils = imports.utils; + +const MAX_MATCHES = 10; + +var OSMTypeSearchEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-search-entry.ui' +}, class OSMTypeSearchEntry extends Gtk.SearchEntry { + + _init(props) { + super._init(props); + + this._popover = + new OSMTypePopover.OSMTypePopover({relative_to: this}); + + this.connect('size-allocate', (widget, allocation) => { + /* Magic number to make the alignment pixel perfect. */ + let width_request = allocation.width + 20; + this._popover.width_request = width_request; + }); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + this.connect('activate', this._onSearchChanged.bind(this)); + } + + get popover() { + return this._popover; + } + + _onSearchChanged() { + if (this.text.length === 0) { + this._popover.hide(); + return; + } + + /* Note: Not sure if searching already on one character might be a bit + * too much, but unsure about languages such as Chinese and Japanese + * using ideographs. */ + if (this.text.length >= 1) { + let matches = OSMTypes.findMatches(this.text, MAX_MATCHES); + + if (matches.length > 0) { + /* show search results */ + this._popover.showMatches(matches); + } else { + this._popover.hide(); + } + } + } +}); diff --git a/src/osmTypes.js b/src/osmTypes.js new file mode 100644 index 00000000..aa7d7c68 --- /dev/null +++ b/src/osmTypes.js @@ -0,0 +1,165 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +const Utils = imports.utils; + +const _RECENT_TYPES_STORE_FILE = 'maps-recent-types.json'; +const _NUM_RECENT_TYPES = 10; + +const _file = Gio.file_new_for_uri('resource://org/gnome/Maps/osm-types.json'); +const [_status, _buffer] = _file.load_contents(null); +const OSM_TYPE_MAP = JSON.parse(Utils.getBufferText(_buffer)); + +/* Lists the OSM tags we base our notion of location types on */ +var OSM_TYPE_TAGS = ['aeroway', 'amenity', 'leisure', 'office', 'place', 'shop', 'tourism' ]; + +/* Sort function comparing two type values according to the locale-specific + * comparison of the type title */ +function _sortType(t1, t2) { + return t1.title.toLocaleLowerCase().localeCompare(t2.title.toLocaleLowerCase()); +} + +/* find the localized display title and a normalized locale-specific lower case + * value for search purposes, given a type mapping value, + * also cache the title to avoid re-iterating the language map every time, + * and store the lower-case normalized title in the current locale */ +function _lookupTitle(item) { + let langs = GLib.get_language_names(); + let title = item.cachedTitle; + + if (title) + return [title, item.normalizedTitle]; + + for (let i = 0; i < langs.length; i++) { + title = item.title[langs[i].replace('_', '-')]; + + if (title) { + let normalizedTitle = title.toLocaleLowerCase(); + + item.cachedTitle = title; + item.normalizedTitle = normalizedTitle; + return [title, normalizedTitle]; + } + } + + return null; +} + +function findMatches(prefix, maxMatches) { + let numMatches = 0; + let prefixLength = prefix.length; + let normalized = prefix.toLocaleLowerCase(); + let matches = []; + + for (let type in OSM_TYPE_MAP) { + let item = OSM_TYPE_MAP[type]; + let [title, normalizedTitle] = _lookupTitle(item); + let parts = type.split('/'); + + /* if the (locale-case-normalized) title matches parts of the search + * string, or as a convenience for expert mappers, if the search string + * is prefix of the raw OSM tag value */ + if (normalizedTitle.indexOf(normalized) != -1 + || (prefixLength >= 3 && parts[1].startsWith(prefix))) { + numMatches++; + matches.push({key: parts[0], value: parts[1], title: title}); + } + + if (numMatches === maxMatches) + break; + } + + return matches.sort(_sortType); +} + +/* return the title of a type with a given key/value if it is known by us */ +function lookupType(key, value) { + let item = OSM_TYPE_MAP[key + '/' + value]; + + if (item) { + let [title, _] = _lookupTitle(item); + return title; + } else + return null; +} + +var RecentTypesStore = class RecentTypesStore { + + constructor() { + this._filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _RECENT_TYPES_STORE_FILE]); + this._load(); + } + + get recentTypes() { + return this._recentTypes; + } + + _load() { + if (!GLib.file_test(this._filename, GLib.FileTest.EXISTS)) { + this._recentTypes = []; + return; + } + + let buffer = Utils.readFile(this._filename); + if (buffer === null) { + this._recentTypes = []; + return; + } + + this._recentTypes = JSON.parse(Utils.getBufferText(buffer)); + } + + _save() { + let buffer = JSON.stringify(this._recentTypes); + if (!Utils.writeFile(this._filename, buffer)) + log('Failed to write recent types file!'); + } + + /* push a type key/value as the most recently used type */ + pushType(key, value) { + /* find out if the type is already stored */ + let pos = -1; + for (let i = 0; i < this._recentTypes.length; i++) { + if (this._recentTypes[i].key === key && + this._recentTypes[i].value === value) { + pos = i; + break; + } + } + + /* remove the type if it was already found in the list */ + if (pos != -1) + this._recentTypes.splice(pos, 1); + + this._recentTypes.unshift({key: key, value: value}); + + /* prune the list */ + this._recentTypes.splice(_NUM_RECENT_TYPES); + + this._save(); + } +}; + +var recentTypesStore = new RecentTypesStore(); diff --git a/src/osmUtils.js b/src/osmUtils.js new file mode 100644 index 00000000..b6a2e452 --- /dev/null +++ b/src/osmUtils.js @@ -0,0 +1,83 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Soup = imports.gi.Soup; + +const Application = imports.application; + +/* + * Gets a Wikipedia article in OSM tag format (i.e. lang:Article title) + * given a URL or null if input doesn't match a Wikipedia URL + */ +function getWikipediaOSMArticleFormatFromUrl(url) { + let regex = /https?:\/\/(..)\.wikipedia\.org\/wiki\/(.+)/; + let match = url.match(regex); + + if (match && match.length == 3) { + let lang = match[1]; + let article = match[2]; + + return lang + ':' + Soup.uri_decode(article).replace(/_/g, ' '); + } else { + return null; + } +} + +/** + * Updates a Place object according to an OSMObject. + * Will also update place in the place store. + */ +function updatePlaceFromOSMObject(place, object) { + let name = object.get_tag('name'); + + if (name) { + /* only update the place's name from the OSM object if the OSM object + * actually has a name set. + * https://bugzilla.gnome.org/show_bug.cgi?id=762569 + * + * also update the displayed localized name, if it was equal + * to the translated name to avoid the old name showing up as the + * native name in when editing places where they equal + */ + if (place.name === place.nativeName) + place.name = name; + place.nativeName = name; + } + place.population = object.get_tag('population'); + place.website = object.get_tag('website'); + place.email = object.get_tag('email'); + place.phone = object.get_tag('phone'); + place.wiki = object.get_tag('wikipedia'); + place.openingHours = object.get_tag('opening_hours'); + place.wheelchair = object.get_tag('wheelchair'); + place.toilets = object.get_tag('toilets'); + place.internetAccess = object.get_tag('internet_access'); + place.religion = object.get_tag('religion'); + place.takeaway = object.get_tag('takeaway'); + + let altitude = object.get_tag('ele'); + + if (altitude) + place.location.altitude = altitude; + + Application.placeStore.updatePlace(place); +} diff --git a/src/overpass.js b/src/overpass.js new file mode 100644 index 00000000..158c6878 --- /dev/null +++ b/src/overpass.js @@ -0,0 +1,282 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Rishi Raj Singh Jhelumi + */ + +const Format = imports.format; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Soup = imports.gi.Soup; + +const OSMNames = imports.osmNames; +const PhotonParser = imports.photonParser; +const Place = imports.place; +const Utils = imports.utils; + +const _DEFAULT_TIMEOUT = 180; +const _DEFAULT_MAXSIZE = 536870912; +const _DEFAULT_OUTPUT_FORMAT = 'json'; +const _DEFAULT_OUTPUT_COUNT = 1e6; +const _DEFAULT_OUTPUT_INFO = 'body'; +const _DEFAULT_OUTPUT_SORT_ORDER = 'qt'; + +const BASE_URL = 'https://overpass-api.de/api/interpreter'; + +var Overpass = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'Place with added information', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class Overpass extends GObject.Object { + + _init(params) { + params = params || { }; + + super._init(); + + // maximum allowed runtime for the query in seconds + this.timeout = params.timeout || _DEFAULT_TIMEOUT; + + // maximum allowed memory for the query in bytes RAM on the server + this.maxsize = params.maxsize || _DEFAULT_MAXSIZE; + + // output format : json or xml + this.outputFormat = params.outputFormat || _DEFAULT_OUTPUT_FORMAT; + + // maximum number of results the output must contain + this.outputCount = params.outputCount || _DEFAULT_OUTPUT_COUNT; + + // data output info must contain : ids, skel, body, meta + this.outputInfo = params.outputInfo || _DEFAULT_OUTPUT_INFO; + + // data sort order : qt(fastest based on geography), ids, asc + this.outputSortOrder = params.outputSortOrder || _DEFAULT_OUTPUT_SORT_ORDER; + + // HTTP Session Variables + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + addInfo(place) { + let url = this._getQueryUrl(Utils.osmTypeToString(place.osm_type), + place.osm_id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + return; + } + try { + let jsonObj = JSON.parse(message.response_body.data); + this._populatePlace(place, jsonObj); + this.place = place; + this.notify('place'); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + } + }); + } + + fetchPlace(osmType, osmId, callback) { + let url = this._getQueryUrl(osmType, osmId); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + callback(null); + } + try { + let jsonObj = JSON.parse(message.response_body.data); + let place = this._createPlace(jsonObj, osmType, osmId); + callback(place); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + callback(null); + } + }) + } + + _createPlace(overpassData, osmType, osmId) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return null; + + let [lat, lon] = this._getCoordsFromElement(element); + let photonProperties = + this._getPhotonProperties(element.tags, osmType, osmId); + let place = PhotonParser.parsePlace(lat, lon, photonProperties); + + this._populatePlace(place, overpassData); + place.prefilled = true; + + return place; + } + + _getCoordsFromElement(element) { + if (element.type === 'node') + return [element.lat, element.lon]; + else + return [element.center.lat, element.center.lon]; + } + + _getPhotonProperties(tags, osmType, osmId) { + let properties = {}; + + properties.osm_type = this._getPhotonOsmType(osmType); + properties.osm_id = osmId; + + if (tags.name) + properties.name = tags.name; + + if (tags['addr:street']) + properties.street = tags['addr:street']; + if (tags['addr:housenumber']) + properties.housenumber = tags['addr:housenumber']; + if (tags['addr:postcode']) + properties.postcode = tags['addr:postcode']; + if (tags['addr:city']) + properties.city = tags['addr:city']; + if (tags['addr:country']) + properties.countrycode = tags['addr:country']; + + if (tags.place) + this._setOsmKeyAndValue(properties, tags, 'place'); + else if (tags.amenity) + this._setOsmKeyAndValue(properties, tags, 'amenity'); + else if (tags.leisure) + this._setOsmKeyAndValue(properties, tags, 'leisure'); + else if (tags.shop) + this._setOsmKeyAndValue(properties, tags, 'shop'); + else if (tags.highway) + this._setOsmKeyAndValue(properties, tags, 'highway'); + else if (tags.railway) + this._setOsmKeyAndValue(properties, tags, 'railway'); + else if (tags.aeroway) + this._setOsmKeyAndValue(properties, tags, 'aeroway'); + else if (tags.building) + this._setOsmKeyAndValue(properties, tags, 'building'); + + return properties; + } + + _getPhotonOsmType(osmType) { + switch (osmType) { + case 'node': return 'N'; + case 'way': return 'W'; + case 'relation': return 'R'; + default: return null; + } + } + + _setOsmKeyAndValue(properties, tags, tag) { + properties.osm_key = tag; + properties.osm_value = tags[tag]; + } + + _populatePlace(place, overpassData) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return; + + let name = this._getLocalizedName(element.tags, place); + if (name) + place.name = name; + + if (element.tags.name) + place.nativeName = element.tags.name; + if (element.tags.population) + place.population = element.tags.population; + if (element.tags['contact:website']) + place.website = element.tags['contact:website']; + if (element.tags.website) + place.website = element.tags.website; + if (element.tags['contact:email']) + place.email = element.tags['contact:email']; + if (element.tags.email) + place.email = element.tags.email; + if (element.tags['contact:phone']) + place.phone = element.tags['contact:phone']; + if (element.tags.phone) + place.phone = element.tags.phone; + if (element.tags.wikipedia) + place.wiki = element.tags.wikipedia; + if (element.tags.wheelchair) + place.wheelchair = element.tags.wheelchair; + if (element.tags.opening_hours) + place.openingHours = element.tags.opening_hours; + if (element.tags.internet_access) + place.internetAccess = element.tags.internet_access; + if (element.tags.ele && place.location) + place.location.altitude = parseFloat(element.tags.ele); + if (element.tags.religion) + place.religion = element.tags.religion + if (element.tags.toilets) + place.toilets = element.tags.toilets; + if (element.tags.takeaway) + place.takeaway = element.tags.takeaway; + if (element.tags.note) + place.note = element.tags.note; + } + + _getLocalizedName(tags, place) { + let language = Utils.getLanguage(); + + return OSMNames.getNameForLanguageAndCountry(tags, language, + place.country_code); + } + + _getQueryUrl(osmType, osmId) { + return Format.vprintf('%s?data=%s', [BASE_URL, + this._generateOverpassQuery(osmType, + osmId)]); + } + + _generateOverpassQuery(osmType, osmId) { + return Format.vprintf('%s%s%s;%s;%s;', + [ this._getKeyValue('timeout', this.timeout), + this._getKeyValue('out', this.outputFormat), + this._getKeyValue('maxsize', this.maxsize), + this._getData(osmType, osmId), + this._getOutput() ]); + } + + _getKeyValue(key, value) { + return Format.vprintf('[%s:%s]', [ key, + value ]); + } + + _getData(osmType, osmId) { + return Format.vprintf('%s(%s)', [osmType, osmId]); + } + + _getOutput() { + return Format.vprintf('out center %s %s %s', [ this.outputInfo, + this.outputSortOrder, + this.outputCount ]); + } +}); diff --git a/src/photonGeocode.js b/src/photonGeocode.js new file mode 100644 index 00000000..0de55dd2 --- /dev/null +++ b/src/photonGeocode.js @@ -0,0 +1,177 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var PhotonGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().photonGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().photonGeocode.attributionUrl; + } + + get name() { + return 'Photon'; + } + + get url() { + return 'https://github.com/Komoot/photon'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let features = json.features; + + if (!features || features.length === 0) { + Utils.debug('No features in response'); + return null; + } + + features.forEach(feature => { + let place = this._parseFeature(feature); + + if (place) + result.push(place); + }); + + return result; + } + + _parseFeature(feature) { + let [lon, lat] = feature.geometry.coordinates; + + return PhotonParser.parsePlace(lat, lon, feature.properties); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ lat: latitude, + lon: longitude, + limit: string ? this._limit : 1 + }); + + if (string) + query.add('q', string); + else + query.add('distance_sort', 'true'); + + if (this._language) + query.add('lang', this._language); + + if (this._additionalParams) + this._additionalParams.forEach((p) => query.add(p.key, p.value)); + + return Format.vprintf('%s/%s/?%s', [this._baseUrl, + string ? 'api' : 'reverse', + query.toString()]); + } + + _readService() { + let photon = Service.getService().photonGeocode; + let language = Utils.getLanguage(); + let supportedLanguages; + + if (photon) { + this._baseUrl = photon.baseUrl; + supportedLanguages = photon.supportedLanguages; + + if (photon.additionalParams) + this._additionalParams = photon.additionalParams; + } + + if (supportedLanguages.includes(language)) + this._language = language; + else + this._language = null; + } +} diff --git a/src/photonParser.js b/src/photonParser.js new file mode 100644 index 00000000..7a9267dc --- /dev/null +++ b/src/photonParser.js @@ -0,0 +1,247 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GWeather = imports.gi.GWeather; + +const Address = imports.address; +const OSMTypes = imports.osmTypes; +const Place = imports.place; +const Utils = imports.utils; + +function parsePlace(latitude, longitude, properties) { + let location = new Geocode.Location({ latitude: latitude, + longitude: longitude, + accuracy: 0.0 }); + let type = _parsePlaceType(properties); + let name = _parseName(properties); + + if (!name) + return null; + + let street = properties.street; + let housenumber = properties.housenumber; + let countryCode = properties.countrycode ?? + Utils.getCountryCodeForCoordinates(latitude, longitude); + let streetAddress; + + if (housenumber && street) { + streetAddress = Address.streetAddressForCountryCode(street, housenumber, + countryCode); + + /* in some cases Photon seems to give housenumber or street as name, + * in that case set the name as the formatted street address + */ + if (name === housenumber || name === street) + name = streetAddress; + } + + let params = { name: name, place_type: type, location: location }; + + if (streetAddress) + params.street_address = streetAddress; + + if (properties.osm_id && properties.osm_type) { + params.osm_id = properties.osm_id + ''; // Geocode-glib needs this as a string + params.osm_type = _parseOsmType(properties.osm_type); + } + + if (properties.street) + params.street = properties.street; + + if (properties.city) + params.town = properties.city; + + if (properties.postcode) + params.postal_code = properties.postcode; + + if (properties.state) + params.state = properties.state; + + if (countryCode) + params.country_code = countryCode; + + if (!countryCode && properties.country) + params.country = properties.country; + + if (properties.extent) + params.bounding_box = _parseBoundingBox(properties.extent); + + if (properties.osm_key) + params.osmKey = properties.osm_key; + + if (properties.osm_value) + params.osmValue = properties.osm_value; + + return new Place.Place(params); +} + +function _parseName(properties) { + if (!properties) + return ''; + + if (properties.name) { + return properties.name; + } else if (properties.housenumber) { + return properties.housenumber; + } else { + let typeTitle = + OSMTypes.lookupType(properties.osm_key, properties.osm_value); + + return typeTitle || _("Unnamed place"); + } +} + +function _parseOsmType(osmType) { + switch (osmType) { + case 'N': + return Geocode.PlaceOsmType.NODE; + case 'W': + return Geocode.PlaceOsmType.WAY; + case 'R': + return Geocode.PlaceOsmType.RELATION; + default: + return Geocode.PlaceOsmType.UNKNOWN; + } +} + +function _parsePlaceType(properties) { + if (!properties) + return Geocode.PlaceType.UNKNOWN; + + let key = properties.osm_key; + let value = properties.osm_value; + + switch (key) { + case 'place': + switch (value) { + case 'continent': + return Geocode.PlaceType.CONTINENT; + case 'country': + return Geocode.PlaceType.COUNTRY; + case 'city': + case 'town': + case 'village': + case 'hamlet': + return Geocode.PlaceType.TOWN; + case 'suburb': + return Geocode.PlaceType.SUBURB; + case 'house': + return Geocode.PlaceType.BUILDING; + case 'island': + return Geocode.PlaceType.ISLAND; + case 'municipality': + return Geocode.PlaceType.COUNTY; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'amenity': + switch (value) { + case 'bar': + case 'pub': + case 'nightclub': + return Geocode.PlaceType.BAR; + case 'restaurant': + case 'fast_food': + return Geocode.PlaceType.RESTAURANT; + case 'school': + case 'kindergarten': + return Geocode.PlaceType.SCHOOL; + case 'place_of_worship': + return Geocode.PlaceType.PLACE_OF_WORSHIP; + case 'bus_station': + return Geocode.PlaceType.BUS_STOP; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'highway': + switch (value) { + case 'bus_stop': + return Geocode.PlaceType.BUS_STOP; + case 'motorway': + return Geocode.PlaceType.MOTORWAY; + default: + return Geocode.PlaceType.STREET; + } + case 'railway': + switch (value) { + case 'station': + case 'stop': + case 'halt': + return Geocode.PlaceType.RAILWAY_STATION; + case 'tram_stop': + return Geocode.PlaceType.LIGHT_RAIL_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'aeroway': + switch (value) { + case 'aerodrome': + return Geocode.PlaceType.AIRPORT; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'building': + switch (value) { + case 'yes': + return Geocode.PlaceType.BUILDING; + case 'railway_station': + return Geocode.PlaceType.RAILWAY_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + default: + return Geocode.PlaceType.MISCELLANEOUS; + } +} + +function _parseBoundingBox(extent) { + if (!Array.isArray(extent) || extent.length !== 4 || + !_isValidLongitude(extent[0]) || !_isValidLatitude(extent[1]) || + !_isValidLongitude(extent[2]) || !_isValidLatitude(extent[3])) { + Utils.debug('invalid extents in response: ' + + JSON.stringify(extent, null, 2)); + return null; + } + + /* it seems GraphHopper geocode swaps order of bottom and top compared + * to stock Photon, so just in case "clamp" both pairs + */ + return new Geocode.BoundingBox({ left: Math.min(extent[0], extent[2]), + bottom: Math.min(extent[1], extent[3]), + right: Math.max(extent[0], extent[2]), + top: Math.max(extent[1], extent[3]) }); +} + +/* check if an extent value is a valid latitude (clamp to the maximum latitude + * supported by the map view + */ +function _isValidLatitude(number) { + return Number.isFinite(number) && number >= -85.0511287798 && + number <= 85.0511287798; +} + +// check if an extent value is a valid longitude +function _isValidLongitude(number) { + return Number.isFinite(number) && number >= -180 && number <= 180; +} diff --git a/src/place.js b/src/place.js new file mode 100644 index 00000000..87948a74 --- /dev/null +++ b/src/place.js @@ -0,0 +1,517 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Overpass = imports.overpass; +const PlaceIcons = imports.placeIcons; +const URLS = imports.urls; +const Utils = imports.utils; + +// Matches coordinates string in 'Decimal Degrees' format +const DECIMAL_COORDINATES_REGEX = ( + /^\s*(\-?\d+(?:\.\d+)?)°?\s*,\s*(\-?\d+(?:\.\d+)?)°?\s*$/ +); + +// Matches coordinates string in 'Degrees, Minutes, Seconds' format +const DMS_COORDINATES_REGEX = new RegExp( + /^\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(N|S)\s*,?/.source + + /\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(W|E)\s*$/.source, + "i" +); + +var Place = GObject.registerClass( +class Place extends Geocode.Place { + + _init(params) { + this._isCurrentLocation = params.isCurrentLocation; + delete params.isCurrentLocation; + + this._population = params.population; + delete params.population; + + this._website = params.website; + delete params.website; + + this._email = params.email; + delete params.email; + + this._phone = params.phone; + delete params.phone; + + this._wiki = params.wiki; + delete params.wiki; + + this._openingHours = params.openingHours; + delete params.openingHours; + + this._internetAccess = params.internetAccess; + delete params.internetAccess; + + this._religion = params.religion; + delete params.religion; + + this._toilets = params.toilets; + delete params.toilets; + + this._takeaway = params.takeaway; + delete params.takeaway; + + this._note = params.note; + delete params.note; + + this._initialZoom = params.initialZoom; + delete params.initialZoom; + + /* set to true if the instance is pre-filled with Overpass data, + * at the time of creation, as will be the case when loading a place + * from an OSM object URL + */ + this._prefilled = params.prefilled; + delete params.prefilled; + + /* Determines if the place should be added to the place store */ + if (typeof(params.store) === 'undefined') { + this._store = true; + } else { + this._store = params.store; + delete params.store; + } + + this._wheelchair = params.wheelchair; + delete params.wheelchair; + + this._nativeName = params.nativeName; + delete params.nativeName; + + this._osmKey = params.osmKey; + delete params.osmKey; + + this._osmValue = params.osmValue; + delete params.osmValue; + + if (params.place) { + params = { osm_id: params.place.osm_id, + osm_type: params.place.osm_type, + name: params.place.name, + location: params.place.location, + bounding_box: params.place.bounding_box, + place_type: params.place.place_type, + street_address: params.place.street_address, + street: params.place.street, + building: params.place.building, + postal_code: params.place.postal_code, + area: params.place.area, + town: params.place.town, + state: params.place.state, + county: params.place.county, + country: params.place.country, + country_code: params.place.country_code, + continent: params.place.continent }; + } + + for (let prop in params) + if (!params[prop]) + delete params[prop]; + + super._init(params); + } + + set store(v) { + this._store = v; + } + + get store() { + return this._store; + } + + get uniqueID() { + return this.osm_type + '-' + this.osm_id; + } + + get isCurrentLocation() { + return this._isCurrentLocation; + } + + set population(v) { + this._population = v; + } + + get population() { + return this._population; + } + + set website(v) { + this._website = v; + } + + get website() { + return this._website; + } + + set email(v) { + this._email = v; + } + + get email() { + return this._email; + } + + set phone(v) { + this._phone = v; + } + + get phone() { + return this._phone; + } + + set wiki(v) { + this._wiki = v; + } + + get wiki() { + return this._wiki; + } + + set openingHours(v) { + this._openingHours = v; + } + + get openingHours() { + return this._openingHours; + } + + set internetAccess(v) { + this._internetAccess = v; + } + + get internetAccess() { + return this._internetAccess; + } + + set religion(v) { + this._religion = v; + } + + get religion() { + return this._religion; + } + + set toilets(v) { + this._toilets = v; + } + + get toilets() { + return this._toilets; + } + + set takeaway(v) { + this._takeaway = v; + } + + get takeaway() { + return this._takeaway; + } + + set note(v) { + this._note = v; + } + + get note() { + return this._note; + } + + set wheelchair(v) { + this._wheelchair = v; + } + + get wheelchair() { + return this._wheelchair; + } + + get initialZoom() { + return this._initialZoom; + } + + get prefilled() { + return this._prefilled; + } + + set prefilled(prefilled) { + this._prefilled = prefilled; + } + + get nativeName() { + return this._nativeName; + } + + set nativeName(nativeName) { + this._nativeName = nativeName; + } + + /** + * Most important OSM tag for the place ('amenity', 'shop', and so on). + * This corresponds to the osm_key parameter in Photon geocoder + */ + get osmKey() { + return this._osmKey; + } + + /** + * Value for the most important OSM tag. + * This corresponds to the osm_value parameter in Photon geocoder. + */ + get osmValue() { + return this._osmValue; + } + + get icon() { + return Gio.Icon.new_for_string(this._getIconName()); + } + + _getIconName() { + return PlaceIcons.getIconForPlace(this); + } + + /** + * This property is true for places related to eating and/or drinking, + * such as restaurants, cafes, pubs and similar + */ + get isEatingAndDrinking() { + return this._osmKey === 'amenity' && + ['bar', 'biergarten', 'cafe', 'fast_food', 'food_court', + 'restaurant', 'pub'].indexOf(this._osmValue) !== -1; + } + + toJSON() { + let bounding_box = null; + + if (this.bounding_box) { + bounding_box = { top: this.bounding_box.top, + bottom: this.bounding_box.bottom, + left: this.bounding_box.left, + right: this.bounding_box.right }; + } + + let location = { latitude: this.location.latitude, + longitude: this.location.longitude, + altitude: this.location.altitude, + accuracy: this.location.accuracy }; + + return { id: this.osm_id, + osm_type: this.osm_type, + osmKey: this._osmKey, + osmValue: this._osmValue, + place_type: this.place_type, + name: this.name, + nativeName: this.nativeName, + bounding_box: bounding_box, + this_type: this.this_type, + location: location, + street_address: this.street_address, + street: this.street, + building: this.building, + postal_code: this.postal_code, + area: this.area, + town: this.town, + state: this.state, + county: this.county, + country: this.country, + country_code: this.country_code, + continent: this.continent, + population: this.population, + website: this.website, + email: this.email, + phone: this.phone, + wiki: this.wiki, + wheelchair: this.wheelchair, + openingHours: this.openingHours, + internetAccess: this.internetAccess, + religion: this.religion, + toilets: this.toilets, + takeaway: this.takeaway, + note: this.note }; + } + + match(searchString) { + let name = this.name; + if (!name) + return false; + + searchString = Utils.normalizeString(searchString); + if (searchString === null) + return false; + + if (searchString.length === 0) + return true; + + name = Utils.normalizeString(name); + if (name === null) + return false; + + /* the search method takes a regex, make sure we have a valid one */ + try { + return name.toLowerCase().search(searchString.toLowerCase()) !== -1; + } catch(e) { + /* not valid regex */ + return false; + } + } +}); + +Place.fromJSON = function(obj) { + let props = { }; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'id': + props.osm_id = prop; + break; + + case 'location': + props.location = new Location.Location(prop); + break; + + case 'bounding_box': + if (prop) + props.bounding_box = new Geocode.BoundingBox(prop); + break; + + default: + if (prop !== null && prop !== undefined) + props[key] = prop; + break; + } + } + return new Place(props); +}; + +Place.validateCoordinates = function(lat, lon) { + return lat <= 90 && lat >= -90 && lon <= 180 && lon >= -180; +}; + +Place.parseDecimalCoordinates = function(text) { + let match = text.match(DECIMAL_COORDINATES_REGEX); + + if (match) { + let latitude = parseFloat(match[1]); + let longitude = parseFloat(match[2]); + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseDmsCoordinates = function(text) { + let match = text.match(DMS_COORDINATES_REGEX); + + if (match) { + let degrees = parseFloat(match[1]); + let minutes = parseFloat(match[2]); + let seconds = parseFloat(match[3]); + let latitude = degrees + minutes / 60 + seconds / 3600; + + if (match[4].toUpperCase() === "S") + latitude *= -1; + + degrees = parseFloat(match[5]); + minutes = parseFloat(match[6]); + seconds = parseFloat(match[7]); + let longitude = degrees + minutes / 60 + seconds / 3600; + + if (match[8].toUpperCase() === "W") + longitude *= -1; + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseCoordinates = function(text) { + let coords = Place.parseDecimalCoordinates(text) || + Place.parseDmsCoordinates(text); + + if (coords && Place.validateCoordinates(coords[0], coords[1])) { + return new Location.Location({ latitude: coords[0], + longitude: coords[1] }); + } else { + return null; + } +}; + +let overpass = null; + +/* we can't import Application before the Place class has been defined + * since it's used via PlaceStore + */ +const Application = imports.application; + +function parseHttpURL(text, callback) { + let [type, id] = URLS.parseAsObjectURL(text); + + if (type && id) { + let storedPlace = Application.placeStore.existsWithOsmTypeAndId(type, id); + + if (storedPlace) { + callback(storedPlace, null); + return; + } + + if (overpass === null) + overpass = new Overpass.Overpass(); + + Application.application.mark_busy(); + overpass.fetchPlace(type, id, (place) => { + Application.application.unmark_busy(); + if (place) + callback(place, null); + else + callback(null, _("Place not found in OpenStreetMap")); + }); + } else { + let [lat, lon, zoom] = URLS.parseAsCoordinateURL(text); + + if (lat && lon) { + if (!Place.validateCoordinates(lat, lon)) { + callback(null, _("Coordinates in URL are not valid")); + } else { + let location = new Location.Location({ latitude: lat, longitude: lon }); + let place = zoom ? new Place({ location: location, initialZoom: zoom }) : + new Place({ location: location }); + + callback(place, null); + } + } else { + callback(null, _("URL is not supported")); + } + } +} + diff --git a/src/placeBar.js b/src/placeBar.js new file mode 100644 index 00000000..0cb66da1 --- /dev/null +++ b/src/placeBar.js @@ -0,0 +1,160 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const PlaceButtons = imports.placeButtons; +const PlaceDialog = imports.placeDialog; +const PlaceFormatter = imports.placeFormatter; +const PlaceView = imports.placeView; +const Utils = imports.utils; + +var PlaceBar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-bar.ui', + InternalChildren: [ 'actionbar', + 'altSendToButton', + 'box', + 'eventbox', + 'contactAvatar', + 'title' ], + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The place to show information about', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + }, +}, class PlaceBar extends Gtk.Revealer { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._buttons = new PlaceButtons.PlaceButtons({ mapView: this._mapView }); + this._buttons.initSendToButton(this._altSendToButton); + this._buttons.connect('place-edited', this._onPlaceEdited.bind(this)); + this._box.add(this._buttons); + + this._multipress = new Gtk.GestureMultiPress({ widget: this._eventbox }); + this._multipress.connect('released', this._onEventBoxClicked.bind(this)); + + Application.application.connect('notify::adaptive-mode', this._updateVisibility.bind(this)); + this.connect('notify::place', this._updatePlace.bind(this)); + + this._mapView.view.connect('touch-event', this._onMapClickEvent.bind(this)); + } + + _updatePlace() { + this._updateVisibility(); + + if (this._dialog) { + this._dialog.destroy(); + delete this._dialog; + } + + if (!this.place) { + return; + } + + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this._title.label = formatter.title; + + if (this.place instanceof ContactPlace.ContactPlace) { + this._contactAvatar.visible = true; + this._contactAvatar.text = formatter.title; + + this._contactAvatar.set_image_load_func(null); + Utils.load_icon(this.place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } else { + this._contactAvatar.visible = false; + } + + this._buttons.place = this.place; + + this._altSendToButton.visible = this.place.isCurrentLocation; + this._buttons.visible = !this.place.isCurrentLocation; + } + + _updateVisibility() { + if (Application.application.adaptive_mode) { + this.reveal_child = (this.place != null); + } else { + this.reveal_child = false; + } + } + + _onEventBoxClicked() { + if (this.place.isCurrentLocation) { + if (this._currentLocationView) { + this._box.remove(this._currentLocationView); + delete this._currentLocationView; + } else { + this._currentLocationView = new PlaceView.PlaceView({ place: this.place, + mapView: this._mapView, + inlineMode: true, + visible: true }); + this._box.add(this._currentLocationView); + } + } else { + this._dialog = new PlaceDialog.PlaceDialog ({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this.place }); + this._dialog.connect('response', () => { + this._dialog.destroy(); + delete this._dialog; + }); + this._dialog.show(); + } + } + + _onPlaceEdited() { + _updatePlace(); + } + + _onMapClickEvent(view, event) { + switch (event.type()) { + case Clutter.EventType.TOUCH_BEGIN: + this._tapped = true; + break; + case Clutter.EventType.TOUCH_UPDATE: + this._tapped = false; + case Clutter.EventType.TOUCH_END: + case Clutter.EventType.TOUCH_CANCEL: + if (this._tapped) { + Application.application.selected_place = null; + } + break; + } + + return Clutter.EVENT_PROPAGATE; + } +}); diff --git a/src/placeButtons.js b/src/placeButtons.js new file mode 100644 index 00000000..e8147bd4 --- /dev/null +++ b/src/placeButtons.js @@ -0,0 +1,190 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMUtils = imports.osmUtils; +const PlaceStore = imports.placeStore; +const SendToDialog = imports.sendToDialog; + +var PlaceButtons = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-buttons.ui', + InternalChildren: [ 'routeButton', + 'sendToButton', + 'favoriteButton', + 'editButton', + 'favoriteButtonImage' ], + Signals: { + /* Emitted when the Edit dialog is closed, because the place details + might have changed and the parent PlaceBar/PlaceView needs + refreshing */ + 'place-edited': {} + } +}, class PlaceButtons extends Gtk.Box { + _init(params) { + let place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._initSignals(); + + if (place) { + this.place = place; + } + } + + get place() { + return this._place; + } + + set place(newPlace) { + this._place = newPlace; + /* Use the PlaceStore's version of a place, if available. */ + if (Application.placeStore.exists(newPlace, null)) { + this._place = Application.placeStore.get(newPlace); + } else { + this._place = newPlace; + } + + this._updateFavoriteButton(!!this._place.store); + + this._editButton.visible = (!(this._place instanceof ContactPlace.ContactPlace) && + this._place.osm_id); + + this._routeButton.visible = !this._place.isCurrentLocation; + + this._showCheckIn = !!this._place.isCurrentLocation; + } + + initSendToButton(button) { + button.connect('clicked', () => { + let dialog = new SendToDialog.SendToDialog({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this._place, + showCheckIn: this._showCheckIn }); + dialog.connect('response', () => dialog.destroy()); + dialog.show(); + }); + } + + _initSignals() { + let placeStore = Application.placeStore; + let query = Application.routeQuery; + + this._favoriteButton.connect('clicked', () => { + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + this._favoriteButtonImage.icon_name = 'non-starred-symbolic'; + placeStore.removePlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } else { + this._favoriteButtonImage.icon_name = 'starred-symbolic'; + placeStore.addPlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } + }); + + this._routeButton.connect('clicked', () => { + let from = query.points[0]; + let to = query.points[query.points.length - 1]; + + query.freeze_notify(); + query.reset(); + Application.routingDelegator.reset(); + + if (Application.geoclue.place) + from.place = Application.geoclue.place; + to.place = this._place; + + Application.application.selected_place = null; + + query.thaw_notify(); + }); + + this._editButton.connect('clicked', this._onEditClicked.bind(this)); + + this.initSendToButton(this._sendToButton); + } + + _updateFavoriteButton(visible) { + let placeStore = Application.placeStore; + this._favoriteButton.visible = visible; + + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + this._favoriteButtonImage.icon_name = 'starred-symbolic'; + } else { + this._favoriteButtonImage.icon_name = 'non-starred-symbolic'; + } + } + + _onEditClicked() { + let osmEdit = Application.osmEdit; + /* if the user is not already signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this.get_toplevel(), true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._edit(); + }); + + return; + } + + this._edit(); + } + + _edit() { + let osmEdit = Application.osmEdit; + let dialog = osmEdit.createEditDialog(this.get_toplevel(), this._place); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + + switch (response) { + case OSMEditDialog.Response.UPLOADED: + // update place + let object = osmEdit.object; + OSMUtils.updatePlaceFromOSMObject(this._place, object); + // refresh place view + this.emit('place-edited'); + break; + default: + break; + } + }); + } +}); diff --git a/src/placeDialog.js b/src/placeDialog.js new file mode 100644 index 00000000..81cf6677 --- /dev/null +++ b/src/placeDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const PlaceFormatter = imports.placeFormatter; +const PlaceView = imports.placeView; + +var PlaceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-dialog.ui', + InternalChildren: [ 'scroll' ] +}, class PlaceDialog extends Gtk.Dialog { + _init(params) { + let place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + if (this.transient_for.is_maximized) { + this.maximize(); + } else { + let [width, height] = this.transient_for.get_size(); + + // Don't let the dialog get too wide + if (width > 400) { + width = 400 - 36; + height -= 36; + } + + this.set_default_size(width, height); + } + + this._placeView = new PlaceView.PlaceView({ place, + mapView, + valign: Gtk.Align.START, + visible: true }); + this._scroll.add(this._placeView); + + let formatter = new PlaceFormatter.PlaceFormatter(place); + this.title = formatter.title; + } +}); diff --git a/src/placeEntry.js b/src/placeEntry.js new file mode 100644 index 00000000..732d3f0f --- /dev/null +++ b/src/placeEntry.js @@ -0,0 +1,330 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013,2014 Jonas Danielsson, Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + * Mattias Bengtsson + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const PlacePopover = imports.placePopover; +const Utils = imports.utils; + +// minimum number of characters to start completion +const MIN_CHARS_COMPLETION = 3; + +// pattern matching CJK ideographic characters +const IDEOGRAPH_PATTERN = /[\u3300-\u9fff]/ + +var PlaceEntry = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceEntry extends Gtk.SearchEntry { + + set place(p) { + if (!this._place && !p) + return; + + /* if this entry belongs to a routing query entry, don't notify when + * setting the same place, otherwise it will trigger twice when + * initiating from the context menu + */ + if (!this._matchRoute && this._place && p && this._locEquals(this._place, p)) + return; + + if (p) { + if (p.name) + this._placeText = p.name; + else + this._placeText = '%.5f, %.5f'.format(p.location.latitude, + p.location.longitude); + } else { + this._placeText = ''; + } + + this.text = this._placeText; + + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } + + get popover() { + return this._popover; + } + + _init(props) { + let numVisible = props.num_visible || 6; + delete props.num_visible; + this._mapView = props.mapView; + delete props.mapView; + + if (!props.loupe) + props.primary_icon_name = null; + delete props.loupe; + + let maxChars = props.maxChars; + delete props.maxChars; + + this._matchRoute = props.matchRoute || false; + delete props.matchRoute; + + super._init(props); + + this._filter = new Gtk.TreeModelFilter({ child_model: Application.placeStore }); + this._filter.set_visible_func(this._completionVisibleFunc.bind(this)); + + this._popover = this._createPopover(numVisible, maxChars); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + + this._cache = {}; + + // clear cache when view moves, as result are location-dependent + this._mapView.view.connect('notify::latitude', () => this._cache = {}); + } + + _onSearchChanged() { + if (this._parse()) + return; + + // wait for an ongoing search + if (this._cancellable) + return; + + /* start search if more than the threshold number of characters have + * been entered, or if the first character is in the ideographic CJK + * block, as for these, shorter strings could be meaningful + */ + if ((this.text.length >= MIN_CHARS_COMPLETION || + (this.text.length > 0 && this.text[0].match(IDEOGRAPH_PATTERN))) && + this.text !== this._placeText) { + let cachedResults = this._cache[this.text]; + + if (cachedResults) { + this._updateResults(cachedResults); + } else { + // if no previous search has been performed, show spinner + if (!this._previousSearch || + this._previousSearch.length < MIN_CHARS_COMPLETION || + this._placeText) { + this._popover.showSpinner(); + } + this._placeText = ''; + this._doSearch(); + } + } else { + this._popover.hide(); + if (this.text.length === 0) + this.place = null; + this._previousSearch = null; + } + } + + _locEquals(placeA, placeB) { + if (!placeA.location || !placeB.location) + return false; + + return (placeA.location.latitude === placeB.location.latitude && + placeA.location.longitude === placeB.location.longitude); + } + + _createPopover(numVisible, maxChars) { + let popover = new PlacePopover.PlacePopover({ num_visible: numVisible, + relative_to: this, + maxChars: maxChars}); + + this.connect('size-allocate', (widget, allocation) => { + // Magic number to make the alignment pixel perfect. + let width_request = allocation.width + 20; + // set at least 320 px width to avoid too narrow in the sidebar + popover.width_request = Math.max(width_request, 320); + }); + + popover.connect('selected', (widget, place) => { + this.place = place; + popover.hide(); + }); + + return popover; + } + + _completionVisibleFunc(model, iter) { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + if (type !== PlaceStore.PlaceType.CONTACT && + type !== PlaceStore.PlaceType.RECENT_ROUTE || + (!this._matchRoute && type === PlaceStore.PlaceType.RECENT_ROUTE)) + return false; + + if (place !== null) + return place.match(this.text); + else + return false; + } + + /** + * Returns true if two locations are equal when rounded to displayes + * coordinate precision + */ + _roundedLocEquals(locA, locB) { + return '%.5f, %.5f'.format(locA.latitude, locA.longitude) === + '%.5f, %.5f'.format(locB.latitude, locB.longitude) + } + + _parse() { + let parsed = false; + + if (this.text.startsWith('geo:')) { + let location = new Geocode.Location(); + + try { + location.set_from_uri(this.text); + this.place = new Place.Place({ location: location }); + } catch(e) { + let msg = _("Failed to parse Geo URI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + } + + parsed = true; + } + + let parsedLocation = Place.Place.parseCoordinates(this.text); + if (parsedLocation) { + /* if the place was a parsed OSM coordinate URL, it will have + * gotten re-written as bare coordinates and trigger a search-changed, + * in this case don't re-set the place, as it will loose the zoom + * level from the URL if set + */ + if (!this.place || + !this._roundedLocEquals(parsedLocation, this.place.location)) + this.place = new Place.Place({ location: parsedLocation }); + parsed = true; + } + + if (this.text.startsWith('http://') || + this.text.startsWith('https://')) { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = null; + Place.parseHttpURL(this.text, (place, error) => { + if (place) + this.place = place; + else + Utils.showDialog(error, + Gtk.MessageType.ERROR, this.get_toplevel()); + }); + + /* don't cancel ongoing search, as we have started an async + * operation looking up the OSM object + */ + return true; + } + + if (parsed && this._cancellable) + this._cancellable.cancel(); + + return parsed; + } + + _doSearch() { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = new Gio.Cancellable(); + this._previousSearch = this.text; + GeocodeFactory.getGeocoder().search(this.text, + this._mapView.view.latitude, + this._mapView.view.longitude, + this._cancellable, + (places, error) => { + this._cancellable = null; + + if (error) { + this.place = null; + this._popover.showError(); + } else { + this._updateResults(places); + + // cache results for later + this._cache[this._previousSearch] = places; + } + + // if search input has been updated, trigger a refresh + if (this.text !== this._previousSearch) + this._onSearchChanged(); + }); + } + + _updateResults(places) { + if (!places) { + this.place = null; + this._popover.showNoResult(); + return; + } + + let completedPlaces = []; + + + this._filter.refilter(); + this._filter.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + completedPlaces.push({ place: place, type: type }); + }); + + let placeStore = Application.placeStore; + + places.forEach((place) => { + let type; + + if (placeStore.exists(place, PlaceStore.PlaceType.RECENT)) + type = PlaceStore.PlaceType.RECENT; + else if (placeStore.exists(place, PlaceStore.PlaceType.FAVORITE)) + type = PlaceStore.PlaceType.FAVORITE; + else + type = PlaceStore.PlaceType.ANY; + + completedPlaces.push({ place: place, type: type }); + }); + + this._popover.updateResult(completedPlaces, this.text); + this._popover.showResult(); + } +}); diff --git a/src/placeFormatter.js b/src/placeFormatter.js new file mode 100644 index 00000000..58dff6d1 --- /dev/null +++ b/src/placeFormatter.js @@ -0,0 +1,114 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; + +const StoredRoute = imports.storedRoute; + +var PlaceFormatter = class PlaceFormatter { + + constructor(place) { + this._place = place; + this._rows = []; + this._titleProperty = 'name'; + + this._update(); + } + + get place() { + return this._place; + } + + get title() { + let title; + // For the 'name' property we split after comma to avoid + // duplicating information in the title from the Geocode + // display name. + if (this._titleProperty === 'name') + title = this._place[this._titleProperty].split(',')[0]; + else + title = this.place[this._titleProperty]; + + return title; + } + + get rows() { + return this._rows; + } + + getDetailsString() { + if (this._place instanceof StoredRoute.StoredRoute) + return this._place.viaString; + + return this.rows.map((row) => { + return row.map((prop) => { + return this._place[prop]; + }).join(', '); + }).join(', '); + } + + _update() { + switch (this._place.place_type) { + case Geocode.PlaceType.COUNTRY: + if (this._place.country) + this._titleProperty = 'country'; + + this._addRow(['country_code']); + break; + + case Geocode.PlaceType.STATE: + if (this._place.state) + this._titleProperty = 'state'; + break; + + case Geocode.PlaceType.COUNTY: + if (this._place.county) + this._titleProperty = 'county'; + break; + + case Geocode.PlaceType.TOWN: + if (this._place.county) + this._addRow(['county']); + else if (this._place.state) + this._addRow(['state']); + else if (this._place.area) + this._addRow(['area']); + break; + + default: + if (this._place.street_address) + this._addRow(['street_address']); + else if (this._place.street) + this._addRow(['street']); + + if (this._place.town !== this._place[this._titleProperty]) + this._addRow(['postal_code', 'town']); + break; + } + } + + _addRow(properties) { + properties = properties.filter((prop) => this._place[prop] ? true : false); + + if (properties.length > 0) + this._rows.push(properties); + } +}; diff --git a/src/placeIcons.js b/src/placeIcons.js new file mode 100644 index 00000000..4ef1303f --- /dev/null +++ b/src/placeIcons.js @@ -0,0 +1,133 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2021 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Mapping OSM key/values to place icons. + * Keys in top map correspond to osmKey from Place. + * Keys in nested maps correspond to osmValue from Place, + * _ matches catch-all case for that osmKey. + */ +const TYPE_ICON_MAP = { + aeroway: { + aerodrome: 'route-transit-airplane-symbolic' + }, + amenity: { + bar: 'bar-symbolic', + biergarten: 'pub-symbolic', + bus_station: 'route-transit-bus-symbolic', + cafe: 'cafe-symbolic', + charging_station: 'electric-car-symbolic', + cinema: 'video-camera-symbolic', + clinic: 'hospital-sign-symbolic', + college: 'school-symbolic', + doctors: 'hospital-sign-symbolic', + fast_food: 'restaurant-symbolic', + ferry_terminal: 'route-transit-ferry-symbolic', + food_court: 'restaurant-symbolic', + fuel: 'fuel-symbolic', + hospital: 'hospital-symbolic', + kindergarten: 'school-symbolic', + night_club: 'bar-symbolic', + parking: 'parking-sign-symbolic', + post_office: 'post-box-symbolic', + pub: 'pub-symbolic', + restaurant: 'restaurant-symbolic', + school: 'school-symbolic', + university: 'school-symbolic' + }, + building: { + railway_station: 'route-transit-train', + _: 'building-symbolic' + }, + highway: { + bus_stop: 'route-transit-bus-symbolic', + cycleway: 'route-bike-symbolic', + footway: 'route-pedestrian-symbolic', + pedestrian: 'route-pedestrian-symbolic', + platform: 'route-transit-bus-symbolic', + steps: 'route-pedestrian-symbolic', + path: 'route-pedestrian-symbolic', + _: 'route-car-symbolic' + }, + leisure: { + nature_reserve: 'tree-symbolic', + park: 'tree-symbolic' + }, + natural: { + hill: 'mountain-symbolic', + peak: 'mountain-symbolic', + volcano: 'mountain-symbolic' + }, + office: { + _: 'building-symbolic' + }, + place: { + borough: 'city-symbolic', + city: 'city-symbolic', + city_block: 'building-symbolic', + hamlet: 'town-symbolic', + isolated_dwelling:'building-symbolic', + neighbourhood: 'town-symbolic', + quarter: 'town-symbolic', + square: 'route-pedestrian-symbolic', + suburb: 'town-symbolic', + town: 'town-symbolic', + village: 'town-symbolic' + }, + railway: { + halt: 'route-transit-train-symbolic', + station: 'route-transit-train-symbolic', + stop: 'route-transit-train-symbolic', + tram_stop: 'route-transit-tram-symbolic' + }, + shop: { + convenience: 'shopping-cart-symbolic', + department_store: 'shopping-cart-symbolic', + general: 'shopping-cart-symbolic', + mall: 'shopping-cart-symbolic', + supermarket: 'shopping-cart-symbolic' + }, + tourism: { + alpine_hut: 'bed-symbolic', + apartment: 'bed-symbolic', + attraction: 'photo-camera-symbolic', + artwork: 'photo-camera-symbolic', + chalet: 'bed-symbolic', + gallery: 'museum-symbolic', + guest_house: 'bed-symbolic', + hostel: 'bed-symbolic', + hotel: 'bed-symbolic', + information: 'explore-symbolic', + motel: 'bed-symbolic', + museum: 'museum-symbolic', + picnic_site: 'bench-symbolic', + zoo: 'penguin-symbolic' + } +}; + +/** + * Get place icon name suitable for a Place. + */ +function getIconForPlace(place) { + return TYPE_ICON_MAP?.[place.osmKey]?.[place.osmValue] ?? + TYPE_ICON_MAP?.[place.osmKey]?.['_'] ?? 'map-marker-symbolic'; +} + diff --git a/src/placeListRow.js b/src/placeListRow.js new file mode 100644 index 00000000..abb40b7d --- /dev/null +++ b/src/placeListRow.js @@ -0,0 +1,105 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +var ROW_HEIGHT = 55; + +var PlaceListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-list-row.ui', + InternalChildren: [ 'icon', + 'iconStack', + 'contactAvatar', + 'name', + 'details', + 'typeIcon' ], +}, class PlaceListRow extends Gtk.ListBoxRow { + + _init(params) { + let place = params.place; + delete params.place; + + let searchString = params.searchString || ''; + delete params.searchString; + + let type = params.type; + delete params.type; + + params.height_request = ROW_HEIGHT; + super._init(params); + this.update(place, type, searchString); + } + + update(place, type, searchString) { + this.place = place; + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this.title = formatter.title; + let markup = GLib.markup_escape_text(formatter.title, -1); + + this._name.label = this._boldMatch(markup, searchString); + this._details.label = GLib.markup_escape_text(formatter.getDetailsString(),-1); + + if (place instanceof ContactPlace.ContactPlace) { + this._iconStack.set_visible_child(this._contactAvatar); + + this._contactAvatar.text = formatter.title; + + if (place.icon) { + Utils.load_icon(place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } else { + this._contactAvatar.set_image_load_func(null); + } + } else if (place.icon) { + this._iconStack.set_visible_child(this._icon); + this._icon.gicon = place.icon; + } + + if (type === PlaceStore.PlaceType.RECENT || + type === PlaceStore.PlaceType.RECENT_ROUTE) + this._typeIcon.icon_name = 'document-open-recent-symbolic'; + else if (type === PlaceStore.PlaceType.FAVORITE) + this._typeIcon.icon_name = 'starred-symbolic'; + else if (type === PlaceStore.PlaceType.CONTACT) + this._typeIcon.icon_name = 'avatar-default-symbolic'; + else + this._typeIcon.icon_name = null; + } + + _boldMatch(title, string) { + let canonicalString = Utils.normalizeString(string).toLowerCase(); + let canonicalTitle = Utils.normalizeString(title).toLowerCase(); + + let index = canonicalTitle.indexOf(canonicalString); + + if (index !== -1) { + let substring = title.substring(index, index + string.length); + title = title.replace(substring, substring.bold()); + } + return title; + } +}); diff --git a/src/placeMarker.js b/src/placeMarker.js new file mode 100644 index 00000000..3aba8c8b --- /dev/null +++ b/src/placeMarker.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; + +var PlaceMarker = GObject.registerClass( +class PlaceMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this.add_actor(this._actorFromIconName('mark-location', 32)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: this.height - 3 }; + } + + _hasBubble() { + return true; + } +}); diff --git a/src/placePopover.js b/src/placePopover.js new file mode 100644 index 00000000..4a0f0d63 --- /dev/null +++ b/src/placePopover.js @@ -0,0 +1,143 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; +const SearchPopover = imports.searchPopover; + +const _PLACE_ICON_SIZE = 20; + +var PlacePopover = GObject.registerClass({ + Signals : { + 'selected' : { param_types: [ GObject.TYPE_OBJECT ] } + }, + Template: 'resource:///org/gnome/Maps/ui/place-popover.ui', + InternalChildren: [ 'scrolledWindow', + 'stack', + 'spinner', + 'list', + 'noResultsLabel', + 'errorLabel' ], +}, class PlacePopover extends SearchPopover.SearchPopover { + + _init(props) { + let numVisible = props.num_visible; + delete props.num_visible; + + this._maxChars = props.maxChars; + delete props.maxChars; + + props.transitions_enabled = false; + super._init(props); + + this._entry = this.relative_to; + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.place); + }); + + this._list.set_header_func((row, before) => { + let header = new Gtk.Separator(); + if (before) + row.set_header(header); + else + row.set_header(null); + }); + + let rowHeight = PlaceListRow.ROW_HEIGHT; + this._scrolledWindow.min_content_height = numVisible * rowHeight + 6; + + // This silents warning at Maps exit about this widget being + // visible but not mapped. + this.connect('unmap', (popover) => popover.hide()); + } + + showSpinner() { + this._spinner.start(); + this._stack.visible_child = this._spinner; + + if (!this.visible) + this.show(); + } + + showResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._scrolledWindow; + + let row = this._list.get_row_at_index(0); + if (row) + this._list.select_row(row); + + if (!this.visible) + this.show(); + } + + showNoResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._noResultsLabel; + } + + showError() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._errorLabel; + } + + updateResult(places, searchString) { + let i = 0; + + places.forEach((p) => { + let row = this._list.get_row_at_index(i); + + // update existing row, if there is one, otherwise create new + if (row) + row.update(p.place, p.type, searchString); + else + this._addRow(p.place, p.type, searchString); + + i++; + }); + + // remove remaining rows + let row = this._list.get_row_at_index(i); + + while (row) { + this._list.remove(row); + row = this._list.get_row_at_index(i); + } + } + + _addRow(place, type, searchString) { + let row = new PlaceListRow.PlaceListRow({ place: place, + searchString: searchString, + type: type, + can_focus: true }); + this._list.insert(row, -1); + } +}); diff --git a/src/placeStore.js b/src/placeStore.js new file mode 100644 index 00000000..8dd8ed4a --- /dev/null +++ b/src/placeStore.js @@ -0,0 +1,359 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const Place = imports.place; +const StoredRoute = imports.storedRoute; +const Utils = imports.utils; + +const _PLACES_STORE_FILE = 'maps-places.json'; +const _ICON_SIZE = 20; +const _ONE_DAY = 1000 * 60 * 60 * 24; // one day in ms +const _STALE_THRESHOLD = 7; // mark the osm information as stale after a week + +var PlaceType = { + ANY: -1, + RECENT: 0, + FAVORITE: 1, + CONTACT: 2, + RECENT_ROUTE: 3 +}; + +var Columns = { + PLACE_ICON: 0, + PLACE: 1, + NAME: 2, + TYPE: 3, + ADDED: 4, + LANGUAGE: 5 +}; + +var PlaceStore = GObject.registerClass( +class PlaceStore extends Gtk.ListStore { + + _init(params) { + this._recentPlacesLimit = params.recentPlacesLimit; + delete params.recentPlacesLimit; + + this._recentRoutesLimit = params.recentRoutesLimit; + delete params.recentRoutesLimit; + + this._numRecentPlaces = 0; + this._numRecentRoutes = 0; + this.filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _PLACES_STORE_FILE]); + this._typeTable = {}; + this._language = Utils.getLanguage(); + + super._init(params); + this.set_column_types([GdkPixbuf.Pixbuf, + GObject.TYPE_OBJECT, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_DOUBLE, + GObject.TYPE_STRING]); + + this.set_sort_column_id(Columns.ADDED, Gtk.SortType.ASCENDING); + } + + _addPlace(place, type) { + this._setPlace(this.append(), place, type, new Date().getTime(), + this._language); + this._store(); + } + + _addContact(place) { + if (this.exists(place, PlaceType.CONTACT)) { + return; + } + + this._addPlace(place, PlaceType.CONTACT); + } + + _addFavorite(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.FAVORITE)) { + return; + } + + if (this.exists(place, PlaceType.RECENT)) { + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + return p.uniqueID === place.uniqueID; + }, true); + } + this._addPlace(place, PlaceType.FAVORITE); + } + + _addRecent(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.RECENT)) { + this.updatePlace(place); + return; + } + + if (this._numRecentPlaces === this._recentPlacesLimit) { + // Since we sort by added, the oldest recent will be + // the first one we encounter. + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentPlaces--; + return true; + } + return false; + }, true); + } + this._addPlace(place, PlaceType.RECENT); + this._numRecentPlaces++; + } + + _addRecentRoute(stored) { + if (this.exists(stored, PlaceType.RECENT_ROUTE)) + return; + + if (stored.containsCurrentLocation) + return; + + if (this._numRecentRoutes >= this._recentRoutesLimit) { + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT_ROUTE) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentRoutes--; + return true; + } + return false; + }, true); + } + this._addPlace(stored, PlaceType.RECENT_ROUTE); + this._numRecentRoutes++; + } + + load() { + if (!GLib.file_test(this.filename, GLib.FileTest.EXISTS)) + return; + + let buffer = Utils.readFile(this.filename); + if (buffer === null) + return; + try { + let jsonArray = JSON.parse(Utils.getBufferText(buffer)); + jsonArray.forEach(({ place, type, added, language }) => { + // We expect exception to be thrown in this line when parsing + // gnome-maps 3.14 or below place stores since the "place" + // key is not present. + if (!place.id) + return; + + // GtkListStore doesn't seem to handle null/undefined for strings + if (!language) + language = ''; + + let p; + if (type === PlaceType.RECENT_ROUTE) { + if (this._numRecentRoutes >= this._recentRoutesLimit) + return; + p = StoredRoute.StoredRoute.fromJSON(place); + this._numRecentRoutes++; + } else { + p = Place.Place.fromJSON(place); + if (type === PlaceType.RECENT) + this._numRecentPlaces++; + } + this._setPlace(this.append(), p, type, added, language); + }); + } catch (e) { + throw new Error('failed to parse places file'); + } + } + + addPlace(place, type) { + if (type === PlaceType.FAVORITE) + this._addFavorite(place, type); + else if (type === PlaceType.RECENT) + this._addRecent(place, type); + else if (type === PlaceType.CONTACT) + this._addContact(place, type); + else if (type === PlaceType.RECENT_ROUTE) + this._addRecentRoute(place); + } + + removePlace(place, placeType) { + if (!this.exists(place, placeType)) + return; + + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + this._typeTable[place.uniqueID] = null; + return true; + } + return false; + }, true); + this._store(); + } + + getModelForPlaceType(placeType) { + let filter = new Gtk.TreeModelFilter({ child_model: this }); + + filter.set_visible_func((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + return (type === placeType); + }); + + return filter; + } + + _store() { + let jsonArray = []; + this.foreach((model, path, iter) => { + let place = model.get_value(iter, Columns.PLACE); + let type = model.get_value(iter, Columns.TYPE); + let added = model.get_value(iter, Columns.ADDED); + let language = model.get_value(iter, Columns.LANGUAGE); + + if (!place || !place.store) + return; + jsonArray.push({ + place: place.toJSON(), + type: type, + added: added, + language: language + }); + }); + + let buffer = JSON.stringify(jsonArray); + if (!Utils.writeFile(this.filename, buffer)) + log('Failed to write places file!'); + } + + _setPlace(iter, place, type, added, language) { + this.set(iter, + [Columns.PLACE, + Columns.NAME, + Columns.TYPE, + Columns.ADDED, + Columns.LANGUAGE], + [place, + place.name, + type, + added, + language]); + + if (place.icon !== null) { + Utils.load_icon(place.icon, _ICON_SIZE, (pixbuf) => { + this.set(iter, [Columns.ICON], [pixbuf]); + }); + } + this._typeTable[place.uniqueID] = type; + } + + get(place) { + let storedPlace = null; + + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + storedPlace = p; + return true; + } + return false; + }); + return storedPlace; + } + + isStale(place) { + if (!this.exists(place, null)) + return false; + + let added = null; + let language = null; + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let p_type = model.get_value(iter, Columns.TYPE); + added = model.get_value(iter, Columns.ADDED); + language = model.get_value(iter, Columns.LANGUAGE); + } + }); + + let now = new Date().getTime(); + let days = Math.abs(now - added) / _ONE_DAY; + + return language !== this._language || days >= _STALE_THRESHOLD; + } + + exists(place, type) { + if (type !== undefined && type !== null && this._typeTable[place.uniqueID] !== undefined) + return this._typeTable[place.uniqueID] === type; + else + return this._typeTable[place.uniqueID] !== undefined && + this._typeTable[place.uniqueID] !== null; + } + + existsWithOsmTypeAndId(osmType, osmId) { + let id = osmType + '-' + osmId; + if (this._typeTable[id]) + return this._typeTable[id]; + else + return null; + } + + _removeIf(evalFunc, stop) { + this.foreach((model, path, iter) => { + if (evalFunc(model, iter)) { + this.remove(iter); + if (stop) + return true; + } + return false; + }); + } + + updatePlace(place) { + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let type = model.get_value(iter, Columns.TYPE); + this._setPlace(iter, place, type, new Date().getTime(), + this._language); + this._store(); + return; + } + }); + } +}); diff --git a/src/placeView.js b/src/placeView.js new file mode 100644 index 00000000..70fca550 --- /dev/null +++ b/src/placeView.js @@ -0,0 +1,663 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const Format = imports.format; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const Overpass = imports.overpass; +const Place = imports.place; +const PlaceIcons = imports.placeIcons; +const PlaceViewImage = imports.placeViewImage; +const PlaceButtons = imports.placeButtons; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Translations = imports.translations; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +// maximum dimension of thumbnails to fetch from Wikipedia +const THUMBNAIL_FETCH_SIZE = 360; + +// Unicode left-to-right marker +const LRM = '\u200E'; + +var PlaceView = GObject.registerClass({ + Properties: { + 'overpass-place': GObject.ParamSpec.object('overpass-place', + 'Overpass Place', + 'The place as filled in by Overpass', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceView extends Gtk.Box { + + _init(params) { + this._place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + /* This mode is used in PlaceBar for inline current location details. + It hides the title box and decreases the start margin on the rows. */ + this._inlineMode = !!params.inlineMode; + delete params.inlineMode; + + super._init(params); + + let ui = Utils.getUIObject('place-view', [ 'bubble-main-box', + 'bubble-spinner', + 'bubble-thumbnail', + 'thumbnail-separator', + 'label-title', + 'native-name', + 'contact-avatar', + 'address-label', + 'bubble-main-stack', + 'bubble-content-area', + 'place-buttons', + 'send-to-button-alt', + 'title-box' ]); + this._title = ui.labelTitle; + this._nativeName = ui.nativeName; + this._thumbnail = ui.bubbleThumbnail; + this._thumbnailSeparator = ui.thumbnailSeparator; + this._content = ui.bubbleContentArea; + this._mainStack = ui.bubbleMainStack; + this._spinner = ui.bubbleSpinner; + this._mainBox = ui.bubbleMainBox; + this._contactAvatar = ui.contactAvatar; + this._addressLabel = ui.addressLabel; + + this.add(this._mainStack); + + let placeButtons = new PlaceButtons.PlaceButtons({ place: this._place, + mapView: mapView }); + placeButtons.connect('place-edited', this._onPlaceEdited.bind(this)); + ui.placeButtons.add(placeButtons); + + if (this.place.isCurrentLocation) { + /* Current Location bubbles have a slightly different layout, to + avoid awkward whitespace */ + + /* hide the normal button area */ + ui.placeButtons.visible = false; + + /* show the top-end-corner share button instead */ + ui.sendToButtonAlt.visible = true; + placeButtons.initSendToButton(ui.sendToButtonAlt); + + /* adjust some margins */ + ui.titleBox.margin = 12; + ui.titleBox.marginStart = 18; + ui.titleBox.spacing = 18; + } + + /* Set up contact avatar */ + if (this.place instanceof ContactPlace.ContactPlace) { + this._contactAvatar.visible = true; + Utils.load_icon(this.place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } + + this.loading = true; + + this._placeDetails = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, + visible: true, + hexpand: true }); + this.content.attach(this._placeDetails, 0, 0, 1, 1); + + if (this.place.isCurrentLocation) { + this._populate(this.place); + } else { + let overpass = new Overpass.Overpass(); + + /* use a property binding from the Overpass instance to avoid + * accessing this object after the underlying GObject has + * been finalized */ + overpass.bind_property('place', this, 'overpass-place', + GObject.BindingFlags.DEFAULT); + this.connect('notify::overpass-place', () => this._onInfoAdded()); + + if (Application.placeStore.exists(this.place, null)) { + + // If the place is stale, update from Overpass. + if (Application.placeStore.isStale(this.place)) { + overpass.addInfo(this.place); + } else { + this._place = Application.placeStore.get(this.place); + this._populate(this.place); + } + } else if (this.place.store && !this.place.prefilled) { + overpass.addInfo(this.place); + } else { + this._populate(this.place); + } + } + + if (this._inlineMode) { + ui.titleBox.hide(); + } + + this.updatePlaceDetails(); + + this._place.connect('notify::location', () => this._updateLocation()); + } + + get place() { + return this._place; + } + + get content() { + return this._content; + } + + get thumbnail() { + return this._thumbnail.pixbuf; + } + + set thumbnail(val) { + if (val) { + this._thumbnail.pixbuf = val; + this._thumbnail.visible = true; + this._thumbnailSeparator.visible = true; + } + } + + get loading() { + return this._spinner.active; + } + set loading(val) { + this._mainStack.set_visible_child(val ? this._spinner : this._mainBox); + this._spinner.active = val; + } + + updatePlaceDetails() { + let place = this.place; + let formatter = new PlaceFormatter.PlaceFormatter(place); + + let address = formatter.rows.map((row) => { + row = row.map(function(prop) { + return GLib.markup_escape_text(place[prop], -1); + }); + return row.join(', '); + }); + if (address.length > 0) { + this._addressLabel.label = address.join('\n'); + this._addressLabel.show(); + } else { + this._addressLabel.hide(); + } + + this._title.label = formatter.title; + this._contactAvatar.text = formatter.title; + + /* hide native name by default, so that it is only shown when it + * should, in case it changed when re-applying changes from Overpass. + * This could happen if the locale changed since last run. + */ + this._nativeName.visible = false; + + /* show native name unless it's equal to the localized name, or + * if the localized name is a substring of the native name, as can + * be the case in e.g. duo-lingual native names, such as is used in + * Brussels of the form "French name - Dutch name" + */ + if (place.nativeName && !place.nativeName.includes(place.name)) { + this._nativeName.label = place.nativeName; + + /* only show native name if there's installed fonts capable of + * showing it + */ + if (this._nativeName.get_layout().get_unknown_glyphs_count() === 0) + this._nativeName.visible = true; + } + } + + _onInfoAdded() { + this._populate(this.place); + if (Application.placeStore.exists(this.place, null)) + Application.placeStore.updatePlace(this.place); + else + Application.placeStore.addPlace(this.place, PlaceStore.PlaceType.RECENT); + } + + _formatWikiLink(wiki) { + let lang = Wikipedia.getLanguage(wiki); + let article = Wikipedia.getArticle(wiki); + + return Format.vprintf('https://%s.wikipedia.org/wiki/%s', [ lang, article ]); + } + + _createContent(place) { + let content = []; + + if (place.isCurrentLocation) { + let coordinates = place.location.latitude.toFixed(5) + + ', ' + + place.location.longitude.toFixed(5); + let accuracyDescription = Utils.getAccuracyDescription(this.place.location.accuracy); + + content.push({ label: _("Coordinates"), + icon: 'map-marker-symbolic', + info: coordinates }); + + content.push({ label: _("Accuracy"), + icon: 'find-location-symbolic', + /* Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) */ + info: _("Accuracy: %s").format(accuracyDescription) }); + } + + if (place.website) { + if (Utils.isValidWebsite(place.website)) { + content.push({ label: _("Website"), + icon: 'web-browser-symbolic', + info: GLib.markup_escape_text(place.website, -1), + linkUrl: place.website }); + } + } + + if (place.phone) { + /* since the phone numbers are typically always rendered + * left-to-right, insert an explicit LRM char to avoid issues + * with phone numbers in international format starting with a + + * which is considered a "weak" character to determine Unicode + * text direction + */ + let phone = { label: _("Phone number"), + icon: 'phone-oldschool-symbolic', + info: LRM + GLib.markup_escape_text(place.phone, -1) }; + + if (Utils.uriSchemeSupported('tel')) { + /* RFC3966 only allows "-", '.", "(", and ")" as visual + * separator characters in a global phone number, no space */ + phone.linkUrl = 'tel:%s'.format(place.phone.replace(/\s+/g, '')); + } + + content.push(phone); + } + + if (place.email && Utils.isValidEmail(place.email)) { + content.push({ label: _("E-mail"), + icon: 'mail-unread-symbolic', + info: GLib.markup_escape_text(place.email, -1), + linkUrl: 'mailto:%s'.format(place.email) }); + } + + if (place.isEatingAndDrinking) { + switch (place.takeaway) { + case 'yes': + /* Translators: + * The establishment offers customers to purchase meals + * (or similar) to be consumed elsewhere + */ + content.push({ info: _("Offers takeaway"), + icon: PlaceIcons.getIconForPlace(place) }); + break; + case 'no': + /* Translators: + * The establishment only offers customers to purchase + * meals (or similar) to be consumed on-premise. + */ + content.push({ info: _("Does not offer takeaway"), + icon: PlaceIcons.getIconForPlace(place) }); + break; + case 'only': + /* Translators: + * The establishment only offers customers to purchase + * meals (or similar) to be consumed elsewhere. E.g. + * there is no seating on-premise for eating/drinking + */ + content.push({ info: _("Only offers takeaway"), + icon: PlaceIcons.getIconForPlace(place) }); + break; + } + } + + if (place.openingHours) { + content.push({ label: _("Opening hours"), + icon: 'emoji-recent-symbolic', + grid: Translations.translateOpeningHours(place.openingHours) }); + } + + switch(place.internetAccess) { + case 'yes': + /* Translators: + * There is public internet access but the particular kind is unknown. + */ + content.push({ info: _("Public internet access"), + icon: 'network-wireless-signal-excellent-symbolic' }); + break; + + case 'no': + /* Translators: + * no internet access is offered in a place where + * someone might expect it. + */ + content.push({ info: _("No internet access"), + icon: 'network-wireless-offline-symbolic' }); + break; + + case 'wlan': + /* Translators: + * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. + */ + content.push({ info: _("Public Wi-Fi"), + icon: 'network-wireless-signal-excellent-symbolic' }); + break; + + case 'wired': + /* Translators: + * This means a a place where you can plug in your laptop with ethernet. + */ + content.push({ info: _("Wired internet access"), + icon: 'network-wired-symbolic' }); + break; + + case 'terminal': + /* Translators: + * Like internet cafe or library where the computer is given. + */ + content.push({ info: _("Computers available for use"), + icon: 'computer-symbolic' }); + break; + + case 'service': + /* Translators: + * This means there is personnel which helps you in case of problems. + */ + content.push({ info: _("Internet assistance available"), + icon: 'computer-symbolic' }); + break; + } + + if (place.toilets === 'no') { + content.push({ info: _("No toilets available"), + icon: 'no-toilets-symbolic' }); + } else if (place.toilets === 'yes') { + content.push({ info: _("Toilets available"), + icon: 'toilets-symbolic' }); + } + + switch(place.wheelchair) { + case 'yes': + /* Translators: + * This means wheelchairs have full unrestricted access. + */ + content.push({ info: _("Wheelchair accessible"), + icon: 'wheelchair-symbolic' }); + break; + + case 'limited': + /* Translators: + * This means wheelchairs have partial access (e.g some areas + * can be accessed and others not, areas requiring assistance + * by someone pushing up a steep gradient). + */ + content.push({ info: _("Limited wheelchair accessibility"), + icon: 'wheelchair-limited-symbolic' }); + break; + + case 'no': + /* Translators: + * This means wheelchairs have no unrestricted access + * (e.g. stair only access). + */ + content.push({ info: _("Not wheelchair accessible"), + icon: 'no-wheelchair-symbolic' }); + break; + + case 'designated': + /* Translators: + * This means that the way or area is designated or purpose built + * for wheelchairs (e.g. elevators designed for wheelchair access + * only). This is rarely used. + */ + content.push({ info: _("Designated for wheelchair users"), + icon: 'wheelchair-symbolic' }); + break; + } + + if (place.population) { + /* TODO: this is a bit of a work-around to re-interpret the population, + * stored as a string into an integer to convert back to a locale- + * formatted string. Ideally it should be kept as an integer value + * in the Place class. But this will also need to be handled by the + * PlaceStore, possible in a backwards-compatible way + */ + content.push({ label: _("Population"), + icon: 'system-users-symbolic', + info: Utils.prettyPopulation(parseInt(place.population)) }); + } + + /* The default value for a place's altitude is -G_MAXDOUBLE, so we can + * compare to an impossibly low altitude to see if one is set */ + if (place.location.altitude > -1000000000.0) { + let alt = place.location.altitude; + let info; + + if (alt > 0) { + info = Utils.prettyDistance(alt, true); + } else if (alt < 0) { + /** + * Translators: this is a label indicating an altitude below + * sea level, where the %s placeholder is the altitude relative + * to mean sea level in the "negative direction" + */ + info = _("%s below sea level"). + format(Utils.prettyDistance(-alt, true)); + } else { + /** + * Translators: this indicates a place is located at (or very + * close to) mean sea level + */ + info = _("At sea level"); + } + + content.push({ label: _("Altitude"), + icon: 'mountain-symbolic', + info: info }); + } + + if (place.religion) { + content.push({ label: _("Religion:"), + info: Translations.translateReligion(place.religion) }); + } + + if (place.wiki && Wikipedia.isValidWikipedia(place.wiki)) { + content.push({ type: 'wikipedia', info: '' }); + } + + return content; + } + + _attachContent(content) { + content.forEach(({ type, label, icon, linkUrl, info, grid }) => { + let separator = new Gtk.Separator({ visible: true }); + separator.get_style_context().add_class('no-margin-separator'); + this._placeDetails.add(separator); + + let box = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, + visible: true, + marginStart: 18, + marginEnd: 18, + marginTop: 6, + marginBottom: 6, + spacing: 12 }); + + if (this._inlineMode) { + box.marginStart = 6; + } + + if (icon) { + let widget = new Gtk.Image({ icon_name: icon, + visible: true, + xalign: 1, + valign: Gtk.Align.START, + halign: Gtk.Align.END }); + + if (label) { + widget.tooltip_markup = label; + } + + box.add(widget); + } else if (label) { + let widget = new Gtk.Label({ label: label.italics(), + visible: true, + use_markup: true, + yalign: 0, + halign: Gtk.Align.END }); + box.add(widget); + } + + if (linkUrl) { + let uri = GLib.markup_escape_text(linkUrl, -1); + /* double-escape the tooltip text, as GTK treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + info = '%s'.format(uri, + tooltipText, + info); + } + + let widget; + + if (grid) { + widget = new Gtk.Grid({ visible: true, + column_spacing: 8 }); + + for (let i = 0; i < grid.length; i++) { + let row = grid[i]; + + for (let j = 0; j < row.length; j++) { + let label = new Gtk.Label({ label: row[j], + visible: true, + xalign: 0, + hexpand: false, + wrap: true, + halign: Gtk.Align.FILL }); + + if (j === 1) { + /* set tabular digits for the second column to get + * aligned times + */ + let attrList = Pango.AttrList.new(); + let tnum = Pango.AttrFontFeatures.new('tnum'); + + attrList.insert(tnum); + label.set_attributes(attrList); + } + + widget.attach(label, j, i, 1, 1); + } + } + } else { + widget = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + max_width_chars: 30, + wrap: true, + xalign: 0, + hexpand: true, + halign: Gtk.Align.FILL }); + + if (type === 'wikipedia') { + box.marginTop = 14; + box.marginBottom = 18; + this._wikipediaLabel = widget; + } + } + + box.add(widget); + this._placeDetails.add(box); + }); + } + + _populate(place) { + // refresh place view + this._clearView(); + + let content = this._createContent(place); + this._attachContent(content); + + if (place.wiki && Wikipedia.isValidWikipedia(place.wiki)) { + this._requestWikipedia(place.wiki); + } + + this.updatePlaceDetails(); + this.loading = false; + } + + _requestWikipedia(wiki) { + Wikipedia.fetchArticleInfo(wiki, + THUMBNAIL_FETCH_SIZE, + this._onWikiMetadataComplete.bind(this), + this._onThumbnailComplete.bind(this)); + } + + _onThumbnailComplete(thumbnail) { + this.thumbnail = thumbnail; + } + + _onWikiMetadataComplete(wiki, metadata) { + if (metadata.extract) { + let text = GLib.markup_escape_text(metadata.extract, -1); + let link = this._formatWikiLink(wiki); + + /* If the text goes past some number of characters (see + * wikipedia.js), it is ellipsized with '...' + * GNOME HIG says to use U+2026 HORIZONTAL ELLIPSIS instead. + * Also, trim whitespace. */ + text = text.replace(/\s*\.\.\.\s*$/, '…'); + + let uri = GLib.markup_escape_text(link, -1); + /* double-escape the tooltip text, as GTK treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + + /* Translators: This is the text for the "Wikipedia" link at the end + of summaries */ + this._wikipediaLabel.label = `${text} ${ _("Wikipedia") }`; + } + } + + // clear the view widgets to be able to re-populate an updated place + _clearView() { + this._placeDetails.get_children().forEach((child) => this._placeDetails.remove(child)); + } + + // called when the place's location changes (e.g. for the current location) + _updateLocation() { + this._populate(this.place); + } + + /* called when the place is edited via the OSM edit dialog */ + _onPlaceEdited() { + this._populate(this._place); + } +}); diff --git a/src/placeViewImage.js b/src/placeViewImage.js new file mode 100644 index 00000000..56d0c2cb --- /dev/null +++ b/src/placeViewImage.js @@ -0,0 +1,101 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* The maximum aspect ratio, after which the image will be cropped vertically */ +const MAX_ASPECT_RATIO = 1; + +var PlaceViewImage = GObject.registerClass( +class PlaceViewImage extends Gtk.DrawingArea { + _init(params) { + super._init(params); + + this._pixbuf = null; + this._cached = null; + } + + get pixbuf() { + return this._pixbuf; + } + + set pixbuf(val) { + /* crop the pixbuf to the max aspect ratio, if necessary */ + if (val.height / val.width > MAX_ASPECT_RATIO) { + let y = (val.height - val.width * MAX_ASPECT_RATIO) / 2; + val = val.new_subpixbuf(0, y, val.width, val.width * MAX_ASPECT_RATIO); + } + + this._pixbuf = val; + this.queue_resize(); + } + + vfunc_draw(cr) { + let [{x, y, width, height}, baseline] = this.get_allocated_size(); + + if (this._pixbuf === null || width === 0 || height === 0) { + return; + } + + width *= this.scale_factor; + height *= this.scale_factor; + + /* Cache surfaces so we don't have to do as much scaling */ + if (this._cached === null || width !== this._cached.getWidth() || height !== this._cached.getHeight()) { + // create a new, scaled image + this._cached = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + + let cr_scaled = new Cairo.Context(this._cached); + cr_scaled.scale(width / this._pixbuf.width, height / this._pixbuf.height); + Gdk.cairo_set_source_pixbuf(cr_scaled, this._pixbuf, 0, 0); + cr_scaled.paint(); + } + + cr.save(); + + if (this.scale_factor !== 1) { + cr.scale(1 / this.scale_factor, 1 / this.scale_factor); + } + + cr.setSourceSurface(this._cached, 0, 0); + + cr.paint(); + cr.restore(); + + return false; + } + + vfunc_get_request_mode() { + return Gtk.SizeRequestMode.HEIGHT_FOR_WIDTH; + } + + vfunc_get_preferred_height_for_width(width) { + if (this._pixbuf) { + let height = (this._pixbuf.height / this._pixbuf.width) * width; + return [height, height]; + } else { + return [0, 0]; + } + } +}); diff --git a/src/printLayout.js b/src/printLayout.js new file mode 100644 index 00000000..e57fac57 --- /dev/null +++ b/src/printLayout.js @@ -0,0 +1,373 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; +const PangoCairo = imports.gi.PangoCairo; + +const Application = imports.application; +const Color = imports.color; +const MapView = imports.mapView; +const MapSource = imports.mapSource; +const TurnPointMarker = imports.turnPointMarker; +const Utils = imports.utils; + +/* Following constant has unit as meters */ +const _SHORT_LAYOUT_MAX_DISTANCE = 3000; + +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +/* All following constants are ratios of surface size to page size */ +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; + +function newFromRoute(route, pageWidth, pageHeight) { + /* + * To avoid the circular dependencies, imports has + * been carried out in this method + */ + if (route.distance > _SHORT_LAYOUT_MAX_DISTANCE) { + return new imports.longPrintLayout.LongPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } else { + return new imports.shortPrintLayout.ShortPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } +} + +var PrintLayout = GObject.registerClass({ + Abstract: true, + Signals: { + 'render-complete': { } + } +}, class PrintLayout extends GObject.Object { + + _init(params) { + this._pageWidth = params.pageWidth; + delete params.pageWidth; + + this._pageHeight = params.pageHeight; + delete params.pageHeight; + + this._totalSurfaces = params.totalSurfaces; + delete params.totalSurfaces; + + super._init(params); + + this.numPages = 0; + this.surfaceObjects = []; + this._surfacesRendered = 0; + this.renderFinished = false; + this._initSignals(); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + // directional override character to force alignment of labels + this._dirChar = this._rtl ? '\u200F' : '\u200E'; + this._fontDescription = Pango.FontDescription.from_string("sans"); + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + this._createNewPage(); + let dy = 0; + + /* + * Before rendering each surface, page adjustment is done. It is checked if it + * can be adjusted in current page, otherwise a new page is created + */ + dy = headerHeight + headerMargin; + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + dy = mapViewHeight + mapViewMargin; + this._adjustPage(dy); + let turnPointsLength = this._route.turnPoints.length; + let allTurnPoints = this._createTurnPointArray(0, turnPointsLength); + this._drawMapView(mapViewWidth, mapViewHeight, + mapViewZoomLevel, allTurnPoints); + this._cursorY += dy; + } + + _initSignals() { + this.connect('render-complete', () => this.renderFinished = true); + } + + _createMarker(turnPoint) { + return new TurnPointMarker.TurnPointMarker({ + turnPoint: turnPoint, + queryPoint: {} + }); + } + + _drawMapView(width, height, zoomLevel, turnPoints) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let locations = []; + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + view.set_map_source(mapSource); + view.add_layer(markerLayer); + + this._addRouteLayer(view); + + turnPoints.forEach((turnPoint) => { + locations.push(turnPoint.coordinate); + if (turnPoint.isStop()) { + markerLayer.add_marker(this._createMarker(turnPoint)); + } + }); + + view.ensure_visible(this._createBBox(locations), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createBBox(locations) { + let bbox = this._route.createBBox(locations); + + return new Champlain.BoundingBox({ top: bbox.top, + left: bbox.left, + bottom: bbox.bottom, + right: bbox.right }); + } + + _createTurnPointArray(startIndex, endIndex) { + let turnPointArray = []; + for (let i = startIndex; i < endIndex; i++) { + turnPointArray.push(this._route.turnPoints[i]); + } + return turnPointArray; + } + + _addRouteLayer(view) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + view.add_layer(routeLayer); + this._route.path.forEach((node) => routeLayer.add_node(node)); + } + + _drawIcon(cr, iconName, width, height) { + let theme = Gtk.IconTheme.get_default(); + let pixbuf = theme.load_icon(iconName, height, 0); + let iconWidth = pixbuf.width; + let iconHeight = pixbuf.height; + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + this._rtl ? + width - height + (height - iconWidth) / 2 : + (height - iconWidth) / 2, + (height - iconWidth) / 2); + cr.paint(); + } + + _createTextLayout(cr, text, width, height, alignment) { + let layout = PangoCairo.create_layout(cr); + + layout.set_text(this._dirChar + text, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(this._fontDescription); + layout.set_alignment(alignment); + layout.set_ellipsize(Pango.EllipsizeMode.END); + + return layout; + } + + _drawText(cr, text, x, y, width, height, alignment) { + this._drawTextWithColor(cr, text, x, y, width, height, '000000', alignment); + } + + _drawTextWithColor(cr, text, x, y, width, height, color, alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + + this._drawTextLayoutWithColor(cr, layout, x, y, width, height, color, + alignment); + } + + _drawTextLayoutWithColor(cr, layout, x, y, width, height, color, alignment) { + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + cr.moveTo(x, y); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawTextVerticallyCentered(cr, text, width, height, x, alignment) { + this._drawTextVerticallyCenteredWithColor(cr, text, width, height, x, + '000000', alignment); + } + + _drawTextVerticallyCenteredWithColor(cr, text, width, height, x, color, + alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + let [pWidth, pHeight] = layout.get_pixel_size(); + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + // place text centered + cr.moveTo(x, (height - pHeight) / 2); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawInstruction(width, height, turnPoint) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let iconName = turnPoint.iconName; + + if (iconName) { + this._drawIcon(cr, iconName, width, height); + } + + // draw the instruction text + this._drawTextVerticallyCentered(cr, turnPoint.instruction, + width - height * 3, height, + this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + + // draw the distance text + if (turnPoint.distance > 0) { + this._drawTextVerticallyCentered(cr, + Utils.prettyDistance(turnPoint.distance), + height * 2, + height, + this._rtl ? 0 : width - height * 2, + Pango.Alignment.RIGHT); + } + + this._addSurface(surface, x, y, pageNum); + } + + _drawHeader(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let layout = PangoCairo.create_layout(cr); + let from = this._formatQueryPlaceName(0); + let to = this._formatQueryPlaceName(-1); + let header = _("From %s to %s").format(from, to); + let desc = Pango.FontDescription.from_string("sans"); + + layout.set_text(header, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(desc); + layout.set_alignment(Pango.Alignment.CENTER); + PangoCairo.layout_path(cr, layout); + cr.setSourceRGB(0.0,0.0,0.0); + cr.fill(); + + this._addSurface(surface, x, y, pageNum); + } + + _addSurface(surface, x, y, pageNum) { + this.surfaceObjects[pageNum].push({ surface: surface, x: x, y: y }); + this._surfacesRendered++; + if (this._surfacesRendered === this._totalSurfaces) + this.emit('render-complete'); + } + + _adjustPage(dy) { + if (this._cursorY + dy > this._pageHeight) + this._createNewPage(); + } + + _createNewPage() { + this.numPages++; + this.surfaceObjects[this.numPages - 1] = []; + this._cursorX = 0; + this._cursorY = 0; + } + + _formatQueryPlaceName(index) { + let query = Application.routeQuery; + if (index === -1) + index = query.filledPoints.length - 1; + let name; + let place = query.filledPoints[index].place; + if (place.name) { + name = place.name; + if (name.length > 25) + name = name.substr(0, 22) + '\u2026'; + } else { + let lat = place.location.latitude.toFixed(5); + let lon = place.location.latitude.toFixed(5); + name = '%s, %s'.format(lat, lon); + } + + return name; + } +}); diff --git a/src/printOperation.js b/src/printOperation.js new file mode 100644 index 00000000..b3307c0a --- /dev/null +++ b/src/printOperation.js @@ -0,0 +1,119 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const PrintLayout = imports.printLayout; +const TransitPrintLayout = imports.transitPrintLayout; +const Utils = imports.utils; + +const _MIN_TIME_TO_ABORT = 3000; + +var PrintOperation = class PrintOperation { + + constructor(params) { + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._operation = new Gtk.PrintOperation({ embed_page_setup: true }); + this._operation.connect('begin-print', this._beginPrint.bind(this)); + this._operation.connect('paginate', this._paginate.bind(this)); + this._operation.connect('draw-page', this._drawPage.bind(this)); + + this._abortDialog = new Gtk.MessageDialog({ + transient_for: this._mainWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.OTHER, + modal: true, + text: _("Loading map tiles for printing"), + secondary_text: _("You can abort printing if this takes too long") + }); + this._abortDialog.add_button(_("Abort printing"), + Gtk.ResponseType.CANCEL); + this._responseId = this._abortDialog.connect('response', + this.onAbortDialogResponse.bind(this)); + + this._runPrintOperation(); + } + + _beginPrint(operation, context, data) { + let route = Application.routingDelegator.graphHopper.route; + let selectedTransitItinerary = + Application.routingDelegator.transitRouter.plan.selectedItinerary; + let width = context.get_width(); + let height = context.get_height(); + + Mainloop.timeout_add(_MIN_TIME_TO_ABORT, () => { + if (!this._layout.renderFinished) { + this._abortDialog.show(); + } + return false; + }, null); + + if (selectedTransitItinerary) { + this._layout = + new TransitPrintLayout.TransitPrintLayout({ itinerary: selectedTransitItinerary, + pageWidth: width, + pageHeight: height }); + } else { + this._layout = PrintLayout.newFromRoute(route, width, height); + } + this._layout.render(); + } + + onAbortDialogResponse(dialog, response) { + if (response === Gtk.ResponseType.DELETE_EVENT || + response === Gtk.ResponseType.CANCEL) { + this._abortDialog.disconnect(this._responseId); + this._operation.cancel(); + this._abortDialog.close(); + } + } + + _paginate(operation, context) { + if (this._layout.renderFinished) { + operation.set_n_pages(this._layout.numPages); + this._abortDialog.close(); + } + return this._layout.renderFinished; + } + + _drawPage(operation, context, page_num, data) { + let cr = context.get_cairo_context(); + this._layout.surfaceObjects[page_num].forEach((so) => { + cr.setSourceSurface(so.surface, so.x, so.y); + cr.paint(); + }); + } + + _runPrintOperation() { + try { + let result = this._operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, + this._mainWindow); + if (result === Gtk.PrintOperationResult.ERROR) { + let error = this._operation.get_error(); + Utils.debug('Failed to print: %s'.format(error)); + } + } catch(e) { + Utils.debug('Failed to print: %s'.format(e.message)); + } + } +}; diff --git a/src/route.js b/src/route.js new file mode 100644 index 00000000..4115a4d4 --- /dev/null +++ b/src/route.js @@ -0,0 +1,180 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; + +const BoundingBox = imports.boundingBox; +const Utils = imports.utils; + +var TurnPointType = { + SHARP_LEFT: 0, + LEFT: 1, + SLIGHT_LEFT: 2, + CONTINUE: 3, + SLIGHT_RIGHT: 4, + RIGHT: 5, + SHARP_RIGHT: 6, + END: 7, + VIA: 8, + ROUNDABOUT: 9, + + // This one is not in GraphHopper, so choose + // a reasonably unlikely number for this + START: 10000, + ELEVATOR: 10001, + UTURN_LEFT: 10002, + UTURN_RIGHT: 10003 +}; + +/* countries/terrotories driving on the left + * source: https://en.wikipedia.org/wiki/Left-_and_right-hand_traffic + */ +const LHT_COUNTRIES = new Set(['AG', 'AI', 'AU', 'BB', 'BD', 'BM', 'BN', 'BS', + 'BT', 'BW', 'CY', 'DM', 'FJ', 'FK', 'GB', 'GB', + 'GD', 'GY', 'HK', 'ID', 'IE', 'IM', 'IN', 'JE', + 'JM', 'JP', 'KE', 'KI', 'KN', 'KY', 'LC', 'LK', + 'LS', 'MO', 'MS', 'MT', 'MU', 'MV', 'MW', 'MY', + 'MZ', 'NA', 'NP', 'NR', 'NZ', 'PG', 'PN', 'PK', + 'SB', 'SC', 'SG', 'SH', 'SR', 'SZ', 'TC', 'TH', + 'TL', 'TO', 'TT', 'TV', 'TZ', 'UG', 'VC', 'VG', + 'VI', 'WS', 'ZA', 'ZM', 'ZW']); + +var Route = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Route extends GObject.Object { + + _init() { + super._init(); + this.reset(); + } + + update({ path, turnPoints, distance, time, bbox }) { + this.path = path; + this.turnPoints = turnPoints; + this.distance = distance; + this.time = time; + this.bbox = bbox || this.createBBox(path); + + this.emit('update'); + } + + reset() { + this.path = []; + this.turnPoints = []; + this.distance = 0; + this.time = 0; + this.bbox = null; + this.emit('reset'); + } + + error(msg) { + this.emit('error', msg); + } + + createBBox(coordinates) { + let bbox = new BoundingBox.BoundingBox(); + coordinates.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }, this); + return bbox; + } +}); + +var TurnPoint = class TurnPoint { + + constructor({ coordinate, type, distance, instruction, turnAngle }) { + this.coordinate = coordinate; + this._type = type; + this.distance = distance; + this.instruction = instruction; + this.iconName = this._getIconName(turnAngle); + } + + get type() { + return this._type; + } + + isStop() { + return this._type === TurnPointType.START + || this._type === TurnPointType.VIA + || this._type === TurnPointType.END; + } + + _getIconName(turnAngle) { + switch(this._type) { + case TurnPointType.SHARP_LEFT: return 'maps-direction-sharpleft-symbolic'; + case TurnPointType.LEFT: return 'maps-direction-left-symbolic'; + case TurnPointType.SLIGHT_LEFT: return 'maps-direction-slightleft-symbolic'; + case TurnPointType.CONTINUE: return 'maps-direction-continue-symbolic'; + case TurnPointType.SLIGHT_RIGHT: return 'maps-direction-slightright-symbolic'; + case TurnPointType.RIGHT: return 'maps-direction-right-symbolic'; + case TurnPointType.SHARP_RIGHT: return 'maps-direction-sharpright-symbolic'; + case TurnPointType.START: return 'maps-point-start-symbolic'; + case TurnPointType.VIA: return 'maps-point-end-symbolic'; + case TurnPointType.END: return 'maps-point-end-symbolic'; + case TurnPointType.ROUNDABOUT: return this._getRoundaboutIconName(turnAngle); + case TurnPointType.ELEVATOR: return 'maps-direction-elevator-symbolic'; + case TurnPointType.UTURN_LEFT: return 'maps-direction-u-turn-left-symbolic'; + case TurnPointType.UTURN_RIGHT: return 'maps-direction-u-turn-right-symbolic'; + default: return ''; + } + } + + _getRoundaboutIconName(turnAngle) { + /* + * To map turnAngle with closest roundabout + * turning angle symbol available. The Algorithm + * calculates the minimum of absolute difference + * between turnAngle and the angle of which map + * has turning symbols. + */ + let minDiff = 2 * Math.PI; + let angle = 0; + if (turnAngle === null) + return 'maps-direction-roundabout-symbolic'; + + if (turnAngle < 0) + turnAngle += 2 * Math.PI; + + for (let x = 0; x < 360; x += 45) { + if (Math.abs(turnAngle - (x / 180) * Math.PI) < minDiff) { + minDiff = Math.abs(turnAngle - (x / 180) * Math.PI); + angle = x; + } + } + // use mirrored icon for left-hand traffic when angle is not zero + return 'maps-direction-roundabout-' + angle + + (angle !== 0 && this._isLefthandTraffic() ? '-lht' : '') + + '-symbolic'; + } + + _isLefthandTraffic() { + let country = + Utils.getCountryCodeForCoordinates(this.coordinate.latitude, + this.coordinate.longitude); + + return LHT_COUNTRIES.has(country); + } +}; diff --git a/src/routeEntry.js b/src/routeEntry.js new file mode 100644 index 00000000..c2b62fc7 --- /dev/null +++ b/src/routeEntry.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceEntry = imports.placeEntry; +const RouteQuery = imports.routeQuery; + +var Type = { + FROM: 0, + TO: 1, + VIA: 2 +}; + +var RouteEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/route-entry.ui', + Children: [ 'iconEventBox' ], + InternalChildren: [ 'entryGrid', + 'icon', + 'button', + 'buttonImage' ] +}, class RouteEntry extends Gtk.Grid { + + _init(params) { + this._type = params.type; + delete params.type; + + this._point = params.point || null; + delete params.point; + + this._mapView = params.mapView || null; + delete params.mapView; + + super._init(params); + + this.entry = this._createEntry(); + this._entryGrid.attach(this.entry, 0, 0, 1, 1); + + // There is no GdkWindow on the widget until it is realized + this._icon.connect('realize', function(icon) { + if (icon.window && icon.window.get_cursor()) + return; + + icon.window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1)); + }); + + switch (this._type) { + case Type.FROM: + let query = Application.routeQuery; + this._buttonImage.icon_name = 'list-add-symbolic'; + this._icon.icon_name = 'maps-point-start-symbolic'; + /* Translators: this is add via location tooltip */ + this._button.tooltip_text = _("Add via location"); + query.connect('notify::points', () => { + this._button.sensitive = query.points.length < RouteQuery.MAX_QUERY_POINTS; + }); + + break; + case Type.VIA: + this._buttonImage.icon_name = 'list-remove-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is remove via location tooltip */ + this._button.tooltip_text = _("Remove via location"); + break; + case Type.TO: + this._buttonImage.icon_name = 'route-reverse-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is reverse route tooltip */ + this._button.tooltip_text = _("Reverse route"); + break; + } + } + + get button() { + return this._button; + } + + get point() { + return this._point; + } + + _createEntry() { + let entry = new PlaceEntry.PlaceEntry({ visible: true, + can_focus: true, + hexpand: true, + receives_default: true, + mapView: this._mapView, + maxChars: 15 }); + if (this._point) { + entry.bind_property('place', + this._point, 'place', + GObject.BindingFlags.BIDIRECTIONAL); + } + + return entry; + } +}); diff --git a/src/routeQuery.js b/src/routeQuery.js new file mode 100644 index 00000000..3b424ec3 --- /dev/null +++ b/src/routeQuery.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; + +const Application = imports.application; +const PlaceStore = imports.placeStore; +const TransitOptions = imports.transitOptions; + +var MAX_QUERY_POINTS = 10; + +var Transportation = { + CAR: 0, + BIKE: 1, + PEDESTRIAN: 2, + TRANSIT: 3, + + toString: function (transportation) { + switch(transportation) { + case Transportation.CAR: return 'car'; + case Transportation.BIKE: return 'bike'; + case Transportation.PEDESTRIAN: return 'foot'; + case Transportation.TRANSIT: return 'transit'; + default: return null; + } + } +}; + +var QueryPoint = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class QueryPoint extends GObject.Object { + + _init() { + this._place = null; + super._init(); + } + + set place(p) { + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } +}); + +var RouteQuery = GObject.registerClass({ + Signals: { + 'reset': { }, + 'point-added': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'point-removed': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'run': { } + }, + Properties: { + 'points': GObject.ParamSpec.object('points', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + GObject.Object), + 'transportation': GObject.ParamSpec.int('transportation', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Transportation.CAR, + Transportation.PEDESTRIAN, + Transportation.CAR, + Transportation.TRANSIT) + } +}, class RouteQuery extends GObject.Object { + + get points() { + return this._points; + } + + set points(points) { + if (points.length > MAX_QUERY_POINTS) + throw new Error('Too many query points'); + this._points = points; + this.notify('points'); + } + + get filledPoints() { + return this.points.filter(function(point) { + return point.place; + }); + } + + get latest() { + return this._latest; + } + + get time() { + return this._time; + } + + /* time to leave or arrive, null implies "Leave now" */ + set time(time) { + this._time = time; + this.notify('points'); + } + + get date() { + return this._date; + } + + /* date to leave or arrive */ + set date(date) { + this._date = date; + /* only notify change when an actual date was set, when resetting time + * time and date (to use "Leave Now" routing) time would be set to null + * triggering an update */ + if (date) + this.notify('points'); + } + + get arriveBy() { + return this._arriveBy; + } + + /* when set to true, the set time and date means arrive by the specified + * time */ + set arriveBy(arriveBy) { + this._arriveBy = arriveBy; + if (this._time) + this.notify('points'); + } + + get transitOptions() { + return this._transitOptions; + } + + set transitOptions(options) { + this._transitOptions = options; + this.notify('points'); + } + + _init(args) { + super._init(args); + this._points = []; + this._time = null; + this._date = null; + this._arriveBy = false; + this._transitOptions = new TransitOptions.TransitOptions(); + this._initTransportation(); + this.reset(); + } + + _initTransportation() { + let transportationType = Application.settings.get_enum('transportation-type'); + + this.transportation = transportationType; + } + + addPoint(index) { + if (this._points.length >= MAX_QUERY_POINTS) + throw new Error('Too many query points'); + let point = new QueryPoint(); + + if (index === -1) + index = this.points.length - 1; + + this._points.splice(index, 0, point); + point.connect('notify::place', () => { + let placeStore = Application.placeStore; + if (point.place) { + if (!placeStore.exists(point.place, null)) { + placeStore.addPlace(point.place, + PlaceStore.PlaceType.RECENT); + } + } + this.notify('points'); + this._latest = point; + }); + this._latest = point; + this.notify('points'); + this.emit('point-added', point, index); + return point; + } + + removePoint(index) { + let removedPoints = this._points.splice(index, 1); + let point = removedPoints ? removedPoints[0] : null; + if (point === this._latest) + this._latest = null; + + if (point) { + this.notify('points'); + this.emit('point-removed', point, index); + } + } + + set transportation(transportation) { + Application.settings.set_enum('transportation-type', transportation); + this._transportation = transportation; + this.notify('transportation'); + this.notify('points'); + } + + get transportation() { + return this._transportation; + } + + reset() { + this.freeze_notify(); + this._points.forEach(function(point) { + point.place = null; + }); + this._latest = null; + this.thaw_notify(); + this.emit('reset'); + } + + isValid() { + if (this.filledPoints.length >= 2 && + this.filledPoints.length === this.points.length) + return true; + else + return false; + } + + toString() { + return "\nPoints: " + this.points + + "\nTransportation: " + this.transportation; + } +}); diff --git a/src/routingDelegator.js b/src/routingDelegator.js new file mode 100644 index 00000000..a3f71101 --- /dev/null +++ b/src/routingDelegator.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GraphHopper = imports.graphHopper; +const TransitRouter = imports.transitRouter; +const RouteQuery = imports.routeQuery; + +const _FALLBACK_TRANSPORTATION = RouteQuery.Transportation.PEDESTRIAN; + +var RoutingDelegator = class RoutingDelegator { + + constructor(params) { + this._query = params.query; + + this._transitRouting = false; + this._graphHopper = new GraphHopper.GraphHopper({ query: this._query }); + this._transitRouter = new TransitRouter.TransitRouter({ query: this._query }); + this._query.connect('notify::points', this._onQueryChanged.bind(this)); + + /* if the query is set to transit mode when it's not available, revert + * to a fallback mode + */ + if (this._query.transportation === RouteQuery.Transportation.TRANSIT && + !this._transitRouter.enabled) { + this._query.transportation = _FALLBACK_TRANSPORTATION; + } + } + + get graphHopper() { + return this._graphHopper; + } + + get transitRouter() { + return this._transitRouter; + } + + set useTransit(useTransit) { + this._transitRouting = useTransit; + } + + reset() { + if (this._transitRouting) + this._transitRouter.plan.reset(); + else + this._graphHopper.route.reset(); + } + + _onQueryChanged() { + if (this._query.isValid()) { + this._query.emit('run'); + if (this._transitRouting) { + this._transitRouter.fetchFirstResults(); + } else { + this._graphHopper.fetchRoute(this._query.filledPoints, + this._query.transportation); + } + } + } +}; diff --git a/src/searchPopover.js b/src/searchPopover.js new file mode 100644 index 00000000..64c9f229 --- /dev/null +++ b/src/searchPopover.js @@ -0,0 +1,114 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* Abstract search result popover that progagates keypress events from a + focus-taking internal widget to the spawning search entry widget */ +var SearchPopover = GObject.registerClass({ + Abstract: true +}, class SearchPopover extends Gtk.Popover { + + _init(props) { + super._init(props); + + this._entry = this.relative_to; + + // We need to propagate events to the listbox so that we can + // keep typing while selecting a place. But we do not want to + // propagate the 'enter' key press if there is a selection. + this._keyController = + new Gtk.EventControllerKey({ widget: this._entry }); + this._keyController.connect('key-pressed', + this._propagateKeys.bind(this)); + + this._buttonPressGesture = new Gtk.GestureSingle({ widget: this._entry }); + this._buttonPressGesture.connect('begin', + () => this._list.unselect_all()); + } + + _propagateKeys(controller, keyval, keycode, state) { + if (keyval === Gdk.KEY_Escape) { + this.hide(); + this._list.unselect_all(); + return true; + } + + if (keyval === Gdk.KEY_Return || + keyval === Gdk.KEY_KP_ENTER || + keyval === Gdk.KEY_ISO_Enter) { + + // If we get an 'enter' keypress and we have a selected + // row, we do not want to propagate the event. + let row = this._list.get_selected_row(); + if (this.visible && row) { + row.activate(); + return true; + } else { + return false; + } + } + + if (keyval === Gdk.KEY_KP_Up || + keyval === Gdk.KEY_Up || + keyval === Gdk.KEY_KP_Down || + keyval === Gdk.KEY_Down) { + + let length = this._list.get_children().length; + if (length === 0) { + return false; + } + + let direction = (keyval === Gdk.KEY_KP_Up || keyval === Gdk.KEY_Up) ? -1 : 1; + let row = this._list.get_selected_row(); + let idx; + if (!row) { + idx = (direction === 1) ? 0 : length - 1; + } else { + idx = row.get_index() + direction; + } + let inBounds = 0 <= idx && idx < length; + if (inBounds) { + this.show(); + this._selectRow(this._list.get_row_at_index(idx)); + } else { + this._list.unselect_all(); + } + return true; + } + + return false; + } + + /* Selects given row and ensures that it is visible. */ + _selectRow(row) { + this._list.select_row(row); + let adjustment = this._list.get_adjustment(); + if (adjustment) { + let allocation = row.get_allocation(); + adjustment.clamp_page(allocation.y, allocation.y + allocation.height); + } + } +}); + diff --git a/src/sendToDialog.js b/src/sendToDialog.js new file mode 100644 index 00000000..10e2f298 --- /dev/null +++ b/src/sendToDialog.js @@ -0,0 +1,279 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const PlaceFormatter = imports.placeFormatter; +const Utils = imports.utils; + +const _WEATHER_APPID = 'org.gnome.Weather'; +const _CLOCKS_APPID = 'org.gnome.clocks'; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _NUM_VISIBLE = 4; + +var SendToDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/send-to-dialog.ui', + InternalChildren: [ 'list', + 'weatherRow', + 'weatherLabel', + 'weatherIcon', + 'clocksRow', + 'clocksLabel', + 'clocksIcon', + 'cancelButton', + 'summaryLabel', + 'summaryUrl', + 'copyButton', + 'emailButton', + 'checkInButton', + 'scrolledWindow' ] +}, class SendToDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + this._location = this._place.location; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + let showCheckIn = params.showCheckIn || false; + delete params.showCheckIn; + + params.use_header_bar = true; + super._init(params); + + this._scrolledWindow.min_content_height = 40 * _NUM_VISIBLE; + this.get_header_bar().subtitle = this._place.name; + + this._cancelButton.connect('clicked', + () => this.response(Response.CANCEL)); + + this._list.connect('row-activated', (list, row) => this._activateRow(row)); + + this._list.set_header_func((row, before) => { + let horizontal = Gtk.Orientation.HORIZONTAL; + + if (before) + row.set_header(new Gtk.Separator({ orientation: horizontal })); + else + row.set_header(null); + }); + + if (showCheckIn) { + Application.checkInManager.bind_property('hasCheckIn', + this._checkInButton, 'visible', + GObject.BindingFlags.DEFAULT | + GObject.BindingFlags.SYNC_CREATE); + + this._checkInButton.connect('clicked', () => { + Application.checkInManager.showCheckInDialog(this.get_toplevel(), + this._place, + false); + }); + } + + this.connect('show', () => { + this._summaryLabel.label = this._getSummary(); + let osmuri = GLib.markup_escape_text(this._getOSMURI(), -1); + this._summaryUrl.label = '%s'.format(osmuri, osmuri); + + this._copyButton.connect('clicked', () => this._copySummary()); + this._emailButton.connect('clicked', () => this._emailSummary()); + }); + + if (GWeather) { + let world = GWeather.Location.get_world(); + let location = this._location; + this._city = world.find_nearest_city(location.latitude, + location.longitude); + /* Translators: The first string is the name of the city, the + second string is the name of the app to add it to */ + let label = _("Add %s to %s"); + + let weatherInfo = Gio.DesktopAppInfo.new(_WEATHER_APPID + '.desktop'); + if (!weatherInfo) { + this._list.remove(this._weatherRow); + } else { + this._weatherLabel.label = label.format(this._city.get_name(), + weatherInfo.get_name()); + this._weatherIcon.icon_name = weatherInfo.get_icon().to_string(); + } + + let clocksInfo = Gio.DesktopAppInfo.new(_CLOCKS_APPID + '.desktop'); + if (!clocksInfo) { + this._list.remove(this._clocksRow); + } else { + this._clocksLabel.label = label.format(this._city.get_name(), + clocksInfo.get_name()); + this._clocksIcon.icon_name = clocksInfo.get_icon().to_string(); + } + } + + /* Other apps that can launch geo: URIs */ + let contentType = Gio.content_type_from_mime_type('x-scheme-handler/geo'); + let thisId = Application.application.application_id + '.desktop'; + let apps = Gio.app_info_get_all_for_type(contentType); + apps.forEach((app) => { + if (app.get_id() == thisId) + return; + if (!app.should_show()) + return; + + this._list.insert(new OpenWithRow({ appinfo: app }), -1); + }); + + /* Hide the list box if it is empty */ + if (this._list.get_children().length == 0) { + this._scrolledWindow.hide(); + } + } + + _getSummary(markup) { + /* Gets a summary of the place (usually name, address, and coordinates, + whichever are available). Does not include OSM URL. */ + + let place = this._place; + let lines = []; + + let formatter = new PlaceFormatter.PlaceFormatter(place); + + if (!place.isCurrentLocation) + lines.push(formatter.title); + + let details = formatter.getDetailsString(); + if (details) { + lines.push(details); + } + + lines.push('%f, %f'.format(this._location.latitude.toFixed(5), + this._location.longitude.toFixed(5))); + + return lines.join('\n'); + } + + _getOSMURI() { + let view = this._mapView.view; + let place = this._place; + + let base = 'https://openstreetmap.org'; + if (this._place.osm_id && this._place.osm_type) { + return '%s/%s/%s'.format(base, + Utils.osmTypeToString(place.osm_type), + place.osm_id); + } else { + return '%s?mlat=%f&mlon=%f&zoom=%d'.format(base, + this._location.latitude, + this._location.longitude, + view.zoom_level); + } + } + + _copySummary() { + let summary = '%s\n%s'.format(this._getSummary(), this._getOSMURI()); + + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + clipboard.set_text(summary, -1); + this.response(Response.SUCCESS); + } + + _emailSummary() { + let title = new PlaceFormatter.PlaceFormatter(this._place).title; + let summary = "%s\n%s".format(this._getSummary(), this._getOSMURI()); + let uri = 'mailto:?subject=%s&body=%s'.format(Soup.URI.encode(title, null), + Soup.URI.encode(summary, null)); + + try { + Gio.app_info_launch_default_for_uri(uri, this._getAppLaunchContext()); + } catch(e) { + Utils.showDialog(_("Failed to open URI"), Gtk.MessageType.ERROR, + this.get_toplevel()); + Utils.debug('failed to open URI: %s'.format(e.message)); + } + + this.response(Response.SUCCESS); + } + + _getAppLaunchContext() { + let timestamp = Gtk.get_current_event_time(); + let display = Gdk.Display.get_default(); + let ctx = Gdk.Display.get_default().get_app_launch_context(); + let screen = display.get_default_screen(); + + ctx.set_timestamp(timestamp); + ctx.set_screen(screen); + + return ctx; + } + + _activateRow(row) { + if (row === this._weatherRow || row === this._clocksRow) { + let timestamp = Gtk.get_current_event_time(); + + let action; + let appId; + if (row === this._weatherRow) { + action = 'show-location'; + appId = _WEATHER_APPID; + } else { + action = 'add-location'; + appId = _CLOCKS_APPID; + } + + Utils.activateAction(appId, + action, + new GLib.Variant('v', this._city.serialize()), + timestamp); + } else if (row instanceof OpenWithRow) { + let uri = this._location.to_uri(Geocode.LocationURIScheme.GEO); + row.appinfo.launch_uris([ uri ], this._getAppLaunchContext()); + } + this.response(Response.SUCCESS); + } +}); + +var OpenWithRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/open-with-row.ui', + InternalChildren: [ 'label', + 'icon' ], +}, class OpenWithRow extends Gtk.ListBoxRow { + _init(params) { + this.appinfo = params.appinfo; + delete params.appinfo; + + super._init(params); + + this._label.label = _("Open with %s").format(this.appinfo.get_name()); + this._icon.gicon = this.appinfo.get_icon(); + } +}); diff --git a/src/service.js b/src/service.js new file mode 100644 index 00000000..e0e2e799 --- /dev/null +++ b/src/service.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +let _service = null; + +const _SERVICE_URL = 'https://gis.gnome.org/services/v1/service.json'; +const _DEFAULT_SERVICE_FILE = 'maps-service.json'; + +function _getServiceFromFile(filename) { + let data = Utils.readFile(filename); + if (!data) { + log('Failed to open service file: ' + filename); + System.exit(1); + } + _service = JSON.parse(Utils.getBufferText(data)); + return _service; +} + +function _createDefaultService() { + let filename = GLib.build_filenamev([pkg.pkgdatadir, + _DEFAULT_SERVICE_FILE]); + return _getServiceFromFile(filename); +} + +function getService() { + if (_service) + return _service; + + if (GLib.getenv('MAPS_DEFAULT_SERVICE')) + return _createDefaultService(); + + let serviceOverride = GLib.getenv('MAPS_SERVICE'); + if (serviceOverride) + return _getServiceFromFile(serviceOverride); + + let user_agent = 'gnome-maps/' + pkg.version; + let session = new Soup.Session({ user_agent : user_agent }); + let msg = Soup.Message.new('GET', _SERVICE_URL); + try { + let stream = Gio.DataInputStream.new(session.send(msg, null)); + + let lines = ""; + while(true) { + let [line, _] = stream.read_line_utf8(null); + if (line === null) + break; + lines += line; + } + _service = JSON.parse(lines); + return _service; + } catch(e) { + Utils.debug(e); + return _createDefaultService(); + } +} diff --git a/src/serviceBackend.js b/src/serviceBackend.js new file mode 100644 index 00000000..edcfdebe --- /dev/null +++ b/src/serviceBackend.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var ServiceBackend = GObject.registerClass({ + Abstract: true +}, class ServiceBackend extends GObject.Object { + + //Abstract + get name() { } + + //Abstract + createRestCall(authorizer) { } + + //Abstract + refreshAuthorization(authorizer, cancellable) { } + + //Abstract + getAuthorizerAccount(authorizer) { } + + //Abstract + createAuthorizer(account) { } + + //Abstract + isTokenInvalid(restCall, parsedPayload) { } + + //Abstract + isInvalidCall(restCall, parsedPayload) { } + + //Abstract + getCallResultCode(restCall, parsedPayload) { } + + //Abstract + getCallResultMessage(restCall, parsedPayload) { } + + callAsync(authorizer, method, func, params, callback, cancellable, mustRefreshToken) { + mustRefreshToken = mustRefreshToken || true; + cancellable = cancellable || null; + + let restCall = this.createRestCall(authorizer); + + method = method.toUpperCase(); + restCall.set_method(method); + + for (let key in params) + restCall.add_param(key, params[key].toString()); + + restCall.set_function(func); + + Utils.debug(this.name + ': ' + func); + + restCall.invoke_async(cancellable, (call, result) => { + let data = JSON.parse(call.get_payload()); + let account = this.getAuthorizerAccount(authorizer); + + if (data && this.isTokenInvalid(call, data)) + if (mustRefreshToken) { + //Unauthorized token error, we need to refresh the token + Utils.debug(this.name + ': The token is not authorized, refreshing token'); + try { + this.refreshAuthorization(authorizer, cancellable); + this.callAsync(authorizer, method, func, params, callback, cancellable, false); + } catch(error) { + callback(account, data, { code: 401, + message: null }); + } + } else + callback(account, data, { code: 401, + message: null }); + else if (this.isInvalidCall(call, data)) + callback(account, data, { code: this.getCallResultCode(call, data), + message: this.getCallResultMessage(call, data) }); + else + callback(account, data, null); + }); + } + + performCheckIn(authorizer, checkIn, callback, cancellable) { + callback = callback || function() {}; + this._realPerformCheckIn(authorizer, checkIn, callback, cancellable); + } + + //Abstract + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { } + + findPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + callback = callback || function() {}; + this._realFindPlaces(authorizer, + latitude, + longitude, + distance, + (account, data, error) => { + if (!error) + callback(account, this.createPlaces(data), error); + else + callback(account, [], error); + }, + cancellable); + } + + //Abstract + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { } + + //Abstract + createPlaces(rawData) { } +}); diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..fa2478ab --- /dev/null +++ b/src/settings.js @@ -0,0 +1,74 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const System = imports.system; + +var Settings = GObject.registerClass( +class Settings extends Gio.Settings { + + _init(params) { + super._init(params); + // The GVariant types of the settings + this._keyTypes = {}; + this.list_keys().forEach((key) => { + this._keyTypes[key] = this.get_value(key) + .get_type() + .dup_string(); + }); + } + + get(name) { + return this.get_value(name).deep_unpack(); + } + + set(name, value) { + this.set_value(name, GLib.Variant.new (this._keyTypes[name], value)); + } +}); + +function getSettings(schemaId, path) { + const GioSSS = Gio.SettingsSchemaSource; + let schemaSource; + + if (!pkg.moduledir.startsWith('resource://')) { + // Running from the source tree + schemaSource = GioSSS.new_from_directory(pkg.pkgdatadir, + GioSSS.get_default(), + false); + } else { + schemaSource = GioSSS.get_default(); + } + + let schemaObj = schemaSource.lookup(schemaId, true); + if (!schemaObj) { + log('Missing GSettings schema ' + schemaId); + System.exit(1); + } + + if (path === undefined) + return new Settings({ settings_schema: schemaObj }); + else + return new Settings({ settings_schema: schemaObj, + path: path }); +} diff --git a/src/shapeLayer.js b/src/shapeLayer.js new file mode 100644 index 00000000..7d42c9b4 --- /dev/null +++ b/src/shapeLayer.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; + +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const Utils = imports.utils; + +var SUPPORTED_TYPES = []; + +function newFromFile(file, mapView) { + let contentType = Gio.content_type_guess(file.get_uri(), null)[0]; + for (let layerClass of SUPPORTED_TYPES) { + if (layerClass.mimeTypes.indexOf(contentType) > -1) { + return layerClass.createInstance({ file: file, mapView: mapView }); + } + } + return null; +} + +var ShapeLayer = GObject.registerClass({ + Abstract: true +}, class ShapeLayer extends GObject.Object { + + _init(params) { + super._init(); + this._visible = true; + this._mapView = params.mapView; + this.file = params.file; + + this.filename = this.file.query_info( + Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, + Gio.FileQueryInfoFlags.NONE, + null + ).get_attribute_string(Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); + + this._markerLayer = new Champlain.MarkerLayer({ + selection_mode: Champlain.SelectionMode.SINGLE + }); + this._mapSource = null; + } + + get bbox() { + return this._mapSource.bbox; + } + + get visible() { + return this._visible; + } + + set visible(v) { + if (v && !this._visible) { + this._mapView.view.add_overlay_source(this._mapSource, 255); + this._markerLayer.show_all_markers(); + } else if (!v && this._visible) { + this._mapView.view.remove_overlay_source(this._mapSource); + this._markerLayer.hide_all_markers(); + } + this._visible = v; + } + + getName() { + /* + * Remove file extension and use that in lieu of a fileformat-specific + * display name. + */ + return this.filename.replace(/\.[^\.]+$/, ''); + } + + load(callback, bbox) { + this.file.load_contents_async(null, (sourceObject, result) => { + let error = false; + try { + let [status, buffer] = this.file.load_contents_finish(result); + this._fileContents = buffer; + if (!status) + throw new Error(_("failed to load file")); + this._parseContent(); + this._mapView.view.add_layer(this._markerLayer); + this._mapView.view.add_overlay_source(this._mapSource, 255); + } catch (e) { + Utils.debug(e); + error = true; + } + callback(error, bbox, this); + }); + } + + _parseContent() { + /* Unimplemented */ + } + + unload() { + this._mapView.view.remove_layer(this._markerLayer); + this._mapView.view.remove_overlay_source(this._mapSource); + } +}); + +ShapeLayer.mimeTypes = []; +ShapeLayer.displayName = ''; diff --git a/src/shortPrintLayout.js b/src/shortPrintLayout.js new file mode 100644 index 00000000..a926afdb --- /dev/null +++ b/src/shortPrintLayout.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 1.0, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; + +var ShortPrintLayout = GObject.registerClass( +class ShortPrintLayout extends PrintLayout.PrintLayout { + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + map) + instructions */ + let totalSurfaces = 2 + this._route.turnPoints.length; + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + let dy = 0; + + this._route.turnPoints.forEach((turnPoint) => { + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, turnPoint); + this._cursorY += dy; + }); + } +}); diff --git a/src/sidebar.js b/src/sidebar.js new file mode 100644 index 00000000..3e97e3dc --- /dev/null +++ b/src/sidebar.js @@ -0,0 +1,630 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const InstructionRow = imports.instructionRow; +const PlaceStore = imports.placeStore; +const RouteEntry = imports.routeEntry; +const RouteQuery = imports.routeQuery; +const StoredRoute = imports.storedRoute; +const TransitArrivalRow = imports.transitArrivalRow; +const TransitItineraryRow = imports.transitItineraryRow; +const TransitLegRow = imports.transitLegRow; +const TransitMoreRow = imports.transitMoreRow; +const TransitOptionsPanel = imports.transitOptionsPanel; +const Utils = imports.utils; + +var Sidebar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/sidebar.ui', + InternalChildren: [ 'distanceInfo', + 'entryList', + 'instructionList', + 'instructionWindow', + 'instructionSpinner', + 'instructionStack', + 'errorLabel', + 'modeBikeToggle', + 'modeCarToggle', + 'modePedestrianToggle', + 'modeTransitToggle', + 'timeInfo', + 'linkButtonStack', + 'transitWindow', + 'transitRevealer', + //'transitOptionsPanel', + 'transitHeader', + 'transitListStack', + 'transitOverviewListBox', + 'transitItineraryHeader', + 'transitItineraryListBox', + 'transitItineraryBackButton', + 'transitItineraryTimeLabel', + 'transitItineraryDurationLabel', + 'transitAttributionLabel'] +}, class Sidebar extends Gtk.Revealer { + + _init(mapView) { + super._init({ transition_type: Gtk.RevealerTransitionType.SLIDE_LEFT }); + + this._mapView = mapView; + + this._query = Application.routeQuery; + this._initInstructionList(); + + /* I could not get the custom GTK+ template widget to init properly + * from the UI file, we also need to manually insert the transit + * itinerary header widget into the GtkStack to get the correct + * animation direction. + */ + this._transitOptionsPanel = + new TransitOptionsPanel.TransitOptionsPanel({ visible: true }); + this._transitHeader.add_named(this._transitOptionsPanel, 'options'); + this._transitHeader.add_named(this._transitItineraryHeader, + 'itinerary-header'); + this._initTransportationToggles(this._modePedestrianToggle, + this._modeBikeToggle, + this._modeCarToggle, + this._modeTransitToggle); + + this._initQuerySignals(); + this._query.addPoint(0); + this._query.addPoint(1); + this._switchRoutingMode(Application.routeQuery.transportation); + /* Enable/disable transit mode switch based on the presence of + * public transit providers. + */ + this._modeTransitToggle.sensitive = + Application.routingDelegator.transitRouter.enabled; + } + + _initTransportationToggles(pedestrian, bike, car, transit) { + let transport = RouteQuery.Transportation; + + let onToggle = function(mode, button) { + let previousMode = this._query.transportation; + + if (button.active && previousMode !== mode) { + this._switchRoutingMode(mode); + this._query.transportation = mode; + } + }; + pedestrian.connect('toggled', onToggle.bind(this, transport.PEDESTRIAN)); + car.connect('toggled', onToggle.bind(this, transport.CAR)); + bike.connect('toggled', onToggle.bind(this, transport.BIKE)); + transit.connect('toggled', onToggle.bind(this, transport.TRANSIT)) + + let setToggles = function() { + switch(Application.routeQuery.transportation) { + case transport.PEDESTRIAN: + pedestrian.active = true; + break; + case transport.CAR: + car.active = true; + break; + case transport.BIKE: + bike.active = true; + break; + case transport.TRANSIT: + transit.active = true; + break; + } + + this._switchRoutingMode(Application.routeQuery.transportation); + }; + + setToggles.bind(this)(); + this._query.connect('notify::transportation', setToggles.bind(this)); + } + + _switchRoutingMode(mode) { + if (mode === RouteQuery.Transportation.TRANSIT) { + Application.routingDelegator.useTransit = true; + this._linkButtonStack.visible_child_name = 'transit'; + this._transitOptionsPanel.reset(); + this._transitRevealer.reveal_child = true; + } else { + Application.routingDelegator.useTransit = false; + this._linkButtonStack.visible_child_name = 'turnByTurn'; + this._transitRevealer.reveal_child = false; + Application.routingDelegator.transitRouter.plan.deselectItinerary(); + } + this._clearInstructions(); + } + + _initQuerySignals() { + this._query.connect('point-added', (obj, point, index) => { + this._createRouteEntry(index, point); + }); + + this._query.connect('point-removed', (obj, point, index) => { + let row = this._entryList.get_row_at_index(index); + row.destroy(); + }); + } + + _cancelStore() { + Mainloop.source_remove(this._storeRouteTimeoutId); + this._storeRouteTimeoutId = 0; + } + + _createRouteEntry(index, point) { + let type; + if (index === 0) + type = RouteEntry.Type.FROM; + else if (index === this._entryList.get_children().length) + type = RouteEntry.Type.TO; + else + type = RouteEntry.Type.VIA; + + let routeEntry = new RouteEntry.RouteEntry({ type: type, + point: point, + mapView: this._mapView }); + + // add handler overriding tab focus behavior on route entries + routeEntry.entry.connect('focus', this._onRouteEntryFocus.bind(this)); + // add handler for + routeEntry.entry.connect('notify::place', () => { + this._onRouteEntrySelectedPlace(routeEntry.entry); + }); + this._entryList.insert(routeEntry, index); + + if (type === RouteEntry.Type.FROM) { + routeEntry.button.connect('clicked', () => { + let lastIndex = this._entryList.get_children().length; + this._query.addPoint(lastIndex - 1); + // focus on the newly added point's entry + this._entryList.get_row_at_index(lastIndex - 1).get_child().entry.grab_focus(); + }); + + this.connect('notify::child-revealed', () => { + if (this.child_revealed) + routeEntry.entry.grab_focus_without_selecting(); + }); + } else if (type === RouteEntry.Type.VIA) { + routeEntry.button.connect('clicked', () => { + let row = routeEntry.get_parent(); + this._query.removePoint(row.get_index()); + }); + } else if (type === RouteEntry.Type.TO) { + routeEntry.button.connect('clicked', + this._reverseRoutePoints.bind(this)); + } + + this._initRouteDragAndDrop(routeEntry); + } + + _onRouteEntryFocus(entry, direction) { + let index = this._getIndexForRouteEntry(entry); + + /* if tabbing forward from the last entry or backward from the first, + * let the default handler handle it + */ + if ((direction === Gtk.DirectionType.TAB_FORWARD && + index === this._entryList.get_children().length - 1) || + (direction === Gtk.DirectionType.TAB_BACKWARD && index === 0)) { + return false; + } + + if (direction === Gtk.DirectionType.TAB_FORWARD) { + index++; + } else if (direction === Gtk.DirectionType.TAB_BACKWARD) { + index--; + } else { + // don't handle other directions + return false; + } + + this._entryList.get_row_at_index(index).get_child().entry.grab_focus(); + return true; + } + + _onRouteEntrySelectedPlace(entry) { + let index = this._getIndexForRouteEntry(entry); + + /* if a new place is selected and it's not the last entry, focus next + * entry + */ + if (entry.place && index < this._entryList.get_children().length - 1) { + let nextPlaceEntry = + this._entryList.get_row_at_index(index + 1).get_child().entry; + + if (!nextPlaceEntry.place) + nextPlaceEntry.grab_focus(); + } + } + + _getIndexForRouteEntry(entry) { + for (let i = 0; i < this._entryList.get_children().length; i++) { + let routeEntry = this._entryList.get_row_at_index(i).get_child(); + + if (routeEntry.entry === entry) + return i; + } + + return -1; + } + + _initInstructionList() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + + route.connect('reset', () => { + this._clearInstructions(); + + let length = this._entryList.get_children().length; + for (let index = 1; index < (length - 1); index++) { + this._query.removePoint(index); + } + }); + + transitPlan.connect('reset', () => { + this._clearTransitOverview(); + this._showTransitOverview(); + this._instructionStack.visible_child = this._transitWindow; + /* don't remove query points as with the turn-based routing, + * since we might get "no route" because of the time selected + * and so on */ + this._transitAttributionLabel.label = ''; + }); + + transitPlan.connect('no-more-results', () => { + // set the "load more" row to indicate no more results + let numRows = this._transitOverviewListBox.get_children().length; + let loadMoreRow = this._transitOverviewListBox.get_row_at_index(numRows - 2); + loadMoreRow.showNoMore(); + }); + + this._query.connect('run', () => { + this._instructionStack.visible_child = this._instructionSpinner; + }); + + this._query.connect('notify', () => { + if (this._instructionStack.visible_child !== this._instructionSpinner && + this._instructionStack.visible_child !== this._errorLabel) { + if (this._query.transportation === RouteQuery.Transportation.TRANSIT) { + this._clearTransitOverview(); + this._showTransitOverview(); + this._transitAttributionLabel.label = ''; + } else { + this._clearInstructions(); + } + } + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + }); + + route.connect('update', () => { + this._clearInstructions(); + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + this._storeRouteTimeoutId = Mainloop.timeout_add(5000, () => { + let placeStore = Application.placeStore; + let places = this._query.filledPoints.map(function(point) { + return point.place; + }); + let storedRoute = new StoredRoute.StoredRoute({ + transportation: this._query.transportation, + route: route, + places: places, + geoclue: Application.geoclue + }); + + if (!storedRoute.containsNull) { + placeStore.addPlace(storedRoute, + PlaceStore.PlaceType.RECENT_ROUTE); + } + this._storeRouteTimeoutId = 0; + }); + + route.turnPoints.forEach((turnPoint) => { + let row = new InstructionRow.InstructionRow({ visible: true, + turnPoint: turnPoint }); + this._instructionList.insert(row, -1); + }); + + /* Translators: %s is a time expression with the format "%f h" or "%f min" */ + this._timeInfo.label = _("Estimated time: %s").format(Utils.prettyTime(route.time)); + this._distanceInfo.label = Utils.prettyDistance(route.distance); + }); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) + this._mapView.showTurnPoint(row.turnPoint); + }); + + transitPlan.connect('update', () => { + this._updateTransitAttribution(); + this._clearTransitOverview(); + this._showTransitOverview(); + this._populateTransitItineraryOverview(); + }); + + /* use list separators for the transit itinerary overview list */ + this._transitOverviewListBox.set_header_func((row, prev) => { + if (prev) + row.set_header(new Gtk.Separator()); + }); + + this._transitOverviewListBox.connect('row-activated', + this._onItineraryOverviewRowActivated.bind(this)); + this._transitItineraryBackButton.connect('clicked', + this._showTransitOverview.bind(this)); + + // connect error handlers + route.connect('error', (route, msg) => this._showError(msg)); + transitPlan.connect('error', (plan, msg) => this._showError(msg)); + } + + _showError(msg) { + this._instructionStack.visible_child = this._errorLabel; + this._errorLabel.label = msg; + } + + _clearTransitOverview() { + let listBox = this._transitOverviewListBox; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._transitWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + _clearTransitItinerary() { + let listBox = this._transitItineraryListBox; + listBox.forall(listBox.remove.bind(listBox)); + } + + _updateTransitAttribution() { + let plan = Application.routingDelegator.transitRouter.plan; + + if (plan.attribution) { + let attributionLabel = + _("Itineraries provided by %s").format(plan.attribution); + if (plan.attributionUrl) { + this._transitAttributionLabel.label = + '%s'.format([plan.attributionUrl], + attributionLabel); + } else { + this._transitAttributionLabel.label = attributionLabel; + } + } else { + this._transitAttributionLabel.label = ''; + } + } + + _showTransitOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + this._transitListStack.visible_child_name = 'overview'; + this._transitHeader.visible_child_name = 'options'; + plan.deselectItinerary(); + } + + _showTransitItineraryView() { + this._transitListStack.visible_child_name = 'itinerary'; + this._transitHeader.visible_child_name = 'itinerary-header'; + } + + _populateTransitItineraryOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + plan.itineraries.forEach((itinerary) => { + let row = + new TransitItineraryRow.TransitItineraryRow({ visible: true, + itinerary: itinerary }); + this._transitOverviewListBox.insert(row, -1); + }); + /* add the "load more" row */ + this._transitOverviewListBox.insert( + new TransitMoreRow.TransitMoreRow({ visible: true }), -1); + + /* add an empty list row to get a final separator */ + this._transitOverviewListBox.insert(new Gtk.ListBoxRow({ visible: true }), + -1); + } + + _onItineraryActivated(itinerary) { + let plan = Application.routingDelegator.transitRouter.plan; + + this._populateTransitItinerary(itinerary); + this._showTransitItineraryView(); + plan.selectItinerary(itinerary); + } + + _onMoreActivated(row) { + row.startLoading(); + Application.routingDelegator.transitRouter.fetchMoreResults(); + } + + _onItineraryOverviewRowActivated(listBox, row) { + this._transitOverviewListBox.unselect_all(); + + if (row.itinerary) + this._onItineraryActivated(row.itinerary); + else + this._onMoreActivated(row); + } + + _populateTransitItinerary(itinerary) { + this._transitItineraryTimeLabel.label = + itinerary.prettyPrintTimeInterval(); + this._transitItineraryDurationLabel.label = + itinerary.prettyPrintDuration(); + + this._clearTransitItinerary(); + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + let row = new TransitLegRow.TransitLegRow({ leg: leg, + start: i === 0, + mapView: this._mapView }); + this._transitItineraryListBox.insert(row, -1); + } + + /* insert the additional arrival row, showing the arrival place and time */ + this._transitItineraryListBox.insert( + new TransitArrivalRow.TransitArrivalRow({ itinerary: itinerary, + mapView: this._mapView }), + -1); + } + + + _clearInstructions() { + let listBox = this._instructionList; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._instructionWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + // Iterate over points and establish the new order of places + _reorderRoutePoints(srcIndex, destIndex) { + let points = this._query.points; + let srcPlace = this._draggedPoint.place; + + // Determine if we are swapping from "above" or "below" + let step = (srcIndex < destIndex) ? -1 : 1; + + // Hold off on notifying the changes to query.points until + // we have re-arranged the places. + this._query.freeze_notify(); + + for (let i = destIndex; i !== (srcIndex + step); i += step) { + // swap + [points[i].place, srcPlace] = [srcPlace, points[i].place]; + } + + this._query.thaw_notify(); + } + + /* The reason we don't just use the array .reverse() function is that we + * need to update the place parameters on the actual point objects in the + * array to fire the query notify signal that will initiate an update. + */ + _reverseRoutePoints() { + let points = this._query.points; + let length = points.length; + + this._query.freeze_notify(); + for (let i = 0; i < length / 2; i++) { + let p1 = points[i].place; + let p2 = points[length - i - 1].place; + + points[i].place = p2; + points[length - i - 1].place = p1; + } + this._query.thaw_notify(); + } + + _onDragDrop(row, context, x, y, time) { + let srcIndex = this._query.points.indexOf(this._draggedPoint); + let destIndex = row.get_index(); + + this._reorderRoutePoints(srcIndex, destIndex); + Gtk.drag_finish(context, true, false, time); + return true; + } + + _dragHighlightRow(row) { + row.opacity = 0.6; + } + + _dragUnhighlightRow(row) { + row.opacity = 1.0; + } + + // Set the opacity of the row we are currently dragging above + // to semi transparent. + _onDragMotion(row, context, x, y, time) { + let routeEntry = row.get_child(); + + if (this._draggedPoint && this._draggedPoint !== routeEntry.point) { + this._dragHighlightRow(row); + Gdk.drag_status(context, Gdk.DragAction.MOVE, time); + } else + Gdk.drag_status(context, 0, time); + return true; + } + + // Drag ends, show the dragged row again. + _onDragEnd(context, row) { + this._draggedPoint = null; + + // Restore to natural height + row.height_request = -1; + row.get_child().show(); + } + + // Drag begins, set the correct drag icon and hide the dragged row. + _onDragBegin(context, row) { + let routeEntry = row.get_child(); + let width = row.get_allocated_width(); + let height = row.get_allocated_height(); + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface) + + row.draw(cr); + this._draggedPoint = routeEntry.point; + + // Set a fixed height on the row to prevent the sidebar height + // to shrink while dragging a row. + row.height_request = height; + row.get_child().hide(); + + Gtk.drag_set_icon_surface(context, surface); + } + + // Set up drag and drop between RouteEntrys. The drag source is from a + // GtkEventBox that contains the start/end icon next in the entry. And + // the drag destination is the ListBox row. + _initRouteDragAndDrop(routeEntry) { + let dragIcon = routeEntry.iconEventBox; + let row = routeEntry.get_parent(); + + dragIcon.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, + null, + Gdk.DragAction.MOVE); + dragIcon.drag_source_add_image_targets(); + + row.drag_dest_set(Gtk.DestDefaults.MOTION, + null, + Gdk.DragAction.MOVE); + row.drag_dest_add_image_targets(); + + dragIcon.connect('drag-begin', (icon, context) => this._onDragBegin(context, row)); + dragIcon.connect('drag-end', (icon, context) => this._onDragEnd(context, row)); + + row.connect('drag-leave', this._dragUnhighlightRow.bind(this, row)); + row.connect('drag-motion', this._onDragMotion.bind(this)); + row.connect('drag-drop', this._onDragDrop.bind(this)); + } +}); diff --git a/src/socialPlace.js b/src/socialPlace.js new file mode 100644 index 00000000..8ee1e8d3 --- /dev/null +++ b/src/socialPlace.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Location = imports.location; + +var SocialPlace = GObject.registerClass( +class SocialPlace extends GObject.Object { + _init(params) { + super._init(); + + this.id = params.id; + this.name = params.name; + this.latitude = params.latitude; + this.longitude = params.longitude; + this.category = params.category; + this.link = params.link; + this.originalData = params.originalData; + } + + get location() { + return new Location.Location({ latitude: parseFloat(this.latitude), + longitude: parseFloat(this.longitude) }); + } +}); diff --git a/src/socialPlaceListBox.js b/src/socialPlaceListBox.js new file mode 100644 index 00000000..7f756393 --- /dev/null +++ b/src/socialPlaceListBox.js @@ -0,0 +1,103 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var SocialPlaceRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-row.ui', + InternalChildren: [ 'nameLabel', + 'categoryLabel' ] +}, class SocialPlaceRow extends Gtk.ListBoxRow { + + _init(params) { + this.place = params.place; + delete params.place; + + super._init(params); + + this._nameLabel.label = this.place.name; + if (this.place.category) + this._categoryLabel.label = this.place.category; + else + this._categoryLabel.visible = false; + } +}); + +var SocialPlaceMoreResultsRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-more-results-row.ui' +}, class SocialPlaceMoreResultsRow extends Gtk.ListBoxRow {}); + +var SocialPlaceListBox = GObject.registerClass({ + Signals: { + 'place-selected': { param_types: [GObject.TYPE_OBJECT] } + } +}, class SocialPlaceListBox extends Gtk.ListBox { + + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + this.connect('row-activated', (list, row) => { + if (!row.place) { + // "Show more results" row activated + this.remove(row); + this._showBadMatches(); + } else + this.emit('place-selected', row.place); + }); + } + + get matches() { + return this._matches; + } + + set matches(matches) { + this.forall(function(row) { + row.destroy(); + }); + + this._matches = matches; + + if (this._matches.exactMatches.length + + this._matches.goodMatches.length === 0) { + this._showBadMatches(); + } else { + this._matches.exactMatches.forEach(this._addPlace.bind(this)); + this._matches.goodMatches.forEach(this._addPlace.bind(this)); + + if (this._matches.badMatches.length > 0) + this._addMoreResults(); + } + } + + _showBadMatches() { + this._matches.badMatches.forEach(this._addPlace.bind(this)); + } + + _addPlace(place) { + this.insert(new SocialPlaceRow({ place: place }), -1); + } + + _addMoreResults() { + this.insert(new SocialPlaceMoreResultsRow({}), -1); + } +}); diff --git a/src/socialPlaceMatcher.js b/src/socialPlaceMatcher.js new file mode 100644 index 00000000..2c8c4e9d --- /dev/null +++ b/src/socialPlaceMatcher.js @@ -0,0 +1,125 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +/** + * The Levenshtein distance is a string comparison algorithm defined + * as the minimal number of characters you have to replace, insert or + * delete to transform string a into string b. + * We use it to compare the similarities of two place names. + * + * http://en.wikipedia.org/wiki/Levenshtein_distance + */ +function _getLevenshteinDistance(a, b) { + let i; + let j; + let d = []; + + for (i = 0; i <= a.length; i++) { + d[i] = []; + for (j = 0; j <= b.length; j++) + d[i][j] = 0; + } + + for (i = 1; i <= a.length; i++) + d[i][0] = i; + + for (j = 1; j <= b.length; j++) + d[0][j] = j; + + for (j = 1; j <= b.length; j++) + for (i = 1; i <= a.length; i++) + if (a[i - 1] === b[j - 1]) + d[i][j] = d[i-1][j-1]; + else + d[i][j] = Math.min(d[i-1][j] + 1, + d[i][j-1] + 1, + d[i-1][j-1] + 1); + + return d[a.length][b.length]; +} + +function _normalize(name) { + return name.toLowerCase().trim().replace(/ +(?= )/g,''); +} + +function _getPlacesLevenshteinDistance(geoPlace, socialPlace) { + let a = geoPlace.name; + let b = socialPlace.name; + + return _getLevenshteinDistance(_normalize(a), _normalize(b)); +} + +/** + * Returns: 0 for bad match, 1 for good match and 2 + * exact match. + */ +function _getKindOfMatch(geoPlace, socialPlace) { + let distance = geoPlace.location.get_distance_from(socialPlace.location); + let levenshtein = _getPlacesLevenshteinDistance(geoPlace, socialPlace); + + if (distance < 0.01 && levenshtein <= 2) + return 2; + else if (distance < 0.03 && levenshtein <= 5) + return 1; + else + return 0; +} + +function match(geoPlace, socialPlaces) { + let result = { + exactMatches: [], + goodMatches: [], + badMatches: [] + }; + + socialPlaces.sort(function(a, b) { + let da = geoPlace.location.get_distance_from(a.location); + let db = geoPlace.location.get_distance_from(b.location); + + if (da > db) + return 1; + else if (da < db) + return -1; + + return 0; + }); + + socialPlaces.forEach(function(place) { + let match = _getKindOfMatch(geoPlace, place); + + switch (match) + { + case 0: + result.badMatches.push(place); + break; + + case 1: + result.goodMatches.push(place); + break; + + case 2: + result.exactMatches.push(place); + break; + } + }); + + return result; +} diff --git a/src/storedRoute.js b/src/storedRoute.js new file mode 100644 index 00000000..04763097 --- /dev/null +++ b/src/storedRoute.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; + +// directional override markers +const _RLM = '\u200F'; +const _LRM = '\u200E'; + +var StoredRoute = GObject.registerClass( +class StoredRoute extends Place.Place { + + _init(params) { + let route = params.route; + delete params.route; + + this._transportation = params.transportation; + delete params.transportation; + + this.route = new Route.Route(); + this.route.update({ path: route.path, + turnPoints: route.turnPoints, + distance: route.distance, + time: route.time, + bbox: route.bbox }); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + + this.places = params.places; + delete params.places; + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + params.name = directionMarker + this.places[0].name + directionMarker + + arrow + directionMarker + this.places.last().name; + + + let geoclue = params.geoclue; + delete params.geoclue; + + this._containsCurrentLocation = false; + + let currentLocation = null; + if (geoclue) + currentLocation = geoclue.place; + + this.places.forEach((place) => { + if (currentLocation && place === currentLocation) + this._containsCurrentLocation = true; + }); + + super._init(params); + } + + get viaString() { + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + return this.places.map(function(place) { + return directionMarker + place.name; + }).join(directionMarker + arrow); + } + + get transportation() { + return this._transportation; + } + + get uniqueID() { + return this._transportation + '-' + this.places.map(function(place) { + return [place.osm_type, place.osm_id].join('-'); + }).join('-'); + } + + get containsCurrentLocation() { + return this._containsCurrentLocation; + } + + get containsNull() { + let hasNull = false; + + for (let p = 0; p < this.places.length; p++) { + if (!this.places[p].name) { + hasNull = true; + break; + } + } + return hasNull; + } + + _getIconName() { + let transport = RouteQuery.Transportation; + + switch (this._transportation) { + case transport.PEDESTRIAN: return 'route-pedestrian-symbolic'; + case transport.BIKE: return 'route-bike-symbolic'; + case transport.CAR: return 'route-car-symbolic'; + default: return 'route-button-symbolic'; + } + } + + toJSON() { + let turnPoints = this.route.turnPoints.map(function(turnPoint) { + let coordinate = { latitude: turnPoint.coordinate.latitude, + longitude: turnPoint.coordinate.longitude }; + return { coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction }; + }); + let bounding_box = { top: this.route.bbox.top, + bottom: this.route.bbox.bottom, + left: this.route.bbox.left, + right: this.route.bbox.right }; + + let path = this.route.path.map(function(coordinate) { + return { latitude: coordinate.latitude, + longitude: coordinate.longitude }; + }); + + let route = { path: path, + turnPoints: turnPoints, + distance: this.route.distance, + time: this.route.time }; + + let places = this.places.map(function(place) { + return place.toJSON(); + }); + + return { id: -1, + transportation: this._transportation, + route: route, + places: places }; + } +}); + +StoredRoute.fromJSON = function(obj) { + let props; + let places = []; + let route; + let transportation = null; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'transportation': + transportation = prop; + break; + + case 'route': + route = new Route.Route(); + prop.path = prop.path.map((coordinate) => { + let lat = coordinate.latitude; + let lon = coordinate.longitude; + return new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + }); + prop.turnPoints = prop.turnPoints.map((turnPoint) => { + let lat = turnPoint.coordinate.latitude; + let lon = turnPoint.coordinate.longitude; + + let coordinate = new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + + return new Route.TurnPoint({ + coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction + }); + }); + route.update(prop); + break; + + case 'places': + prop.forEach((p) => places.push(Place.Place.fromJSON(p))); + break; + } + } + return new StoredRoute({ transportation: transportation, + route: route, + places: places }); +}; diff --git a/src/time.js b/src/time.js new file mode 100644 index 00000000..0c19400b --- /dev/null +++ b/src/time.js @@ -0,0 +1,212 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; + +// allow using :, ., and the ratio symbol to separate hours:mins +const _DELIMITERS = [':', '.', '\u2236']; + +// digits variants +const _DIGIT_RANGE_BASES = [ + // Arabic + 0x0660, + // Persian + 0x06f0, + // Nko + 0x07c0, + // Devanagari + 0x0966, + // Bengali + 0x09e6, + // Gurmukhi + 0x0a66, + // Gujarati + 0x0ae6, + // Oriya + 0x0b66, + // Tamil + 0x0be6, + // Telugu + 0x0c66, + // Kannada + 0x0c80, + // Malayalam + 0x0d66, + // Sinhala + 0x0de6, + // Thai + 0x0e50, + // Lao + 0x0ed0, + // Tibetan + 0x0f20, + // Myanmar + 0x1090, + // Khmer + 0x17e0, + // Mongolian + 0x1810, + // Limbu + 0x1946, + // Tai lue + 0x19d0, + // Tai Tham + 0x1a90, + // Balinese + 0x1b50, + // Sundanese + 0x1bb0, + // Lepcha + 0x1c40 +]; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let _clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat24 = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: false, + timeZone: 'UTC'}); +const _timeFormat12 = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: true, + timeZone: 'UTC'}); + +/* parse a time from a fixed set of free-formats into a string representation: + * hour:min + * + * Examples: + * "10:00" → "10:00" + * "1:00pm" → "13:00" + * "0800" → "08:00" + * "10.30" → "10:30" + * "12" → "12:00" + * + * TODO: maybe try to use some library to get better locale handling, + * or push for something in GLib */ +function parseTimeString(timeString) { + let pmSet = false; + let hours; + let mins; + /* remove extra whitespaces */ + timeString = timeString.replace(/\s+/g, ''); + + if (timeString.endsWith('am')) { + timeString = timeString.substring(0, timeString.length - 2); + } else if (timeString.endsWith('pm')) { + timeString = timeString.substring(0, timeString.length - 2); + pmSet = true; + } + + /* remove delimiting characters if they occur at position 3 (hh:mm) + * or position 2 (h:mm) + */ + if (_DELIMITERS.includes(timeString.charAt(2))) + timeString = timeString.substring(0, 2) + timeString.substring(3); + else if (_DELIMITERS.includes(timeString.charAt(1))) + timeString = timeString.substring(0, 1) + timeString.substring(2); + + // translate localized digits to corresponding Latin digits + let translatedTimeString = ''; + + for (let i = 0; i < timeString.length; i++) { + let c = timeString.charCodeAt(i); + + _DIGIT_RANGE_BASES.forEach((base) => { + if (c >= base && c < base + 10) + c = (c - base) + 0x30; + }); + translatedTimeString += String.fromCharCode(c); + } + + if (translatedTimeString.length === 4) { + /* expect a full time specification (hours, minutes) */ + hours = translatedTimeString.substring(0, 2); + mins = translatedTimeString.substring(2, 4); + } else if (timeString.length === 3) { + /* interpret a 3 digit string as h:mm */ + hours = '0' + translatedTimeString.substring(0, 1); + mins = translatedTimeString.substring(1, 3); + } else if (translatedTimeString.length === 2) { + /* expect just the hour part */ + hours = translatedTimeString.substring(0, 2); + mins = '00'; + } else if (translatedTimeString.length === 1) { + /* expect just the hour part, one digit */ + hours = '0' + translatedTimeString; + mins = '00'; + } else { + /* this makes no sense, just bail out */ + return null; + } + + /* check if the parts can be interpreted as numbers */ + if (hours % 1 === 0 && mins % 1 === 0) { + if (pmSet) + hours = parseInt(hours) + 12; + + /* if the hours or minutes is out-of-range, bail out */ + if (hours < 0 || hours > 24 || mins < 0 || mins > 59) + return null; + + return hours + ':' + mins; + } else { + return null; + } +} + +function _is12Hour() { + return _clockFormat === '12h'; +} + +/** + * Format a time as HH:mm in either 12 or 24 h + * format depending on system settings + * given time in ms since Epoch with an offset in + * ms relative UTC. + */ +function formatTimeWithTZOffset(time, offset) { + let utcTimeWithOffset = time + offset; + let date = new Date(); + let timeFormat = _is12Hour() ? _timeFormat12 : _timeFormat24; + + date.setTime(utcTimeWithOffset); + + return timeFormat.format(date); +} + +/** + * Format a time as HH:mm in either 12 or 24 h + * format depending on system settings + * given hours and minutes values. + */ +function formatTimeFromHoursAndMins(hours, mins) { + let date = new Date(); + let timeFormat = _is12Hour() ? _timeFormat12 : _timeFormat24; + + date.setUTCHours(hours); + date.setUTCMinutes(mins); + + return timeFormat.format(date); +} diff --git a/src/togeojson/LICENSE b/src/togeojson/LICENSE new file mode 100644 index 00000000..bc7706e0 --- /dev/null +++ b/src/togeojson/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2012 Tom MacWright + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/src/togeojson/togeojson.js b/src/togeojson/togeojson.js new file mode 100644 index 00000000..ee99627f --- /dev/null +++ b/src/togeojson/togeojson.js @@ -0,0 +1,357 @@ +const Dom = imports.xmldom.dom; + +var toGeoJSON = (function() { + 'use strict'; + + var removeSpace = /\s*/g, + trimSpace = /^\s*|\s*$/g, + splitSpace = /\s+/; + // generate a short, numeric hash of a string + function okhash(x) { + if (!x || !x.length) return 0; + for (var i = 0, h = 0; i < x.length; i++) { + h = ((h << 5) - h) + x.charCodeAt(i) | 0; + } return h; + } + // all Y children of X + function get(x, y) { return x.getElementsByTagName(y); } + function attr(x, y) { return x.getAttribute(y); } + function attrf(x, y) { return parseFloat(attr(x, y)); } + // one Y child of X, if any, otherwise null + function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; } + // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize + function norm(el) { if (el.normalize) { el.normalize(); } return el; } + // cast array x into numbers + function numarray(x) { + for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); } + return o; + } + function clean(x) { + var o = {}; + for (var i in x) { if (x[i]) { o[i] = x[i]; } } + return o; + } + // get the content of a text node, if any + function nodeVal(x) { + if (x) { norm(x); } + return (x && x.textContent) || ''; + } + // get one coordinate from a coordinate array, if any + function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); } + // get all coordinates from a coordinate array as [[],[]] + function coord(v) { + var coords = v.replace(trimSpace, '').split(splitSpace), + o = []; + for (var i = 0; i < coords.length; i++) { + o.push(coord1(coords[i])); + } + return o; + } + function coordPair(x) { + var ll = [attrf(x, 'lon'), attrf(x, 'lat')], + ele = get1(x, 'ele'), + // handle namespaced attribute in browser + heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'), + time = get1(x, 'time'), + e; + if (ele) { + e = parseFloat(nodeVal(ele)); + if (!isNaN(e)) { + ll.push(e); + } + } + return { + coordinates: ll, + time: time ? nodeVal(time) : null, + heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null + }; + } + + // create a new feature collection parent object + function fc() { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var serializer = new Dom.XMLSerializer(); + function xml2str(str) { + // IE9 will create a new XMLSerializer but it'll crash immediately. + // This line is ignored because we don't run coverage tests in IE9 + /* istanbul ignore next */ + if (str.xml !== undefined) return str.xml; + return serializer.serializeToString(str); + } + + var t = { + kml: function(doc) { + + var gj = fc(), + // styleindex keeps track of hashed styles in order to match features + styleIndex = {}, + // atomic geospatial types supported by KML - MultiGeometry is + // handled separately + geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'], + // all root placemarks in the file + placemarks = get(doc, 'Placemark'), + styles = get(doc, 'Style'), + styleMaps = get(doc, 'StyleMap'); + + for (var k = 0; k < styles.length; k++) { + styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16); + } + for (var l = 0; l < styleMaps.length; l++) { + styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16); + } + for (var j = 0; j < placemarks.length; j++) { + gj.features = gj.features.concat(getPlacemark(placemarks[j])); + } + function kmlColor(v) { + var color, opacity; + v = v || ''; + if (v.substr(0, 1) === '#') { v = v.substr(1); } + if (v.length === 6 || v.length === 3) { color = v; } + if (v.length === 8) { + opacity = parseInt(v.substr(0, 2), 16) / 255; + color = '#'+v.substr(2); + } + return [color, isNaN(opacity) ? undefined : opacity]; + } + function gxCoord(v) { return numarray(v.split(' ')); } + function gxCoords(root) { + var elems = get(root, 'coord', 'gx'), coords = [], times = []; + if (elems.length === 0) elems = get(root, 'gx:coord'); + for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i]))); + var timeElems = get(root, 'when'); + for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j])); + return { + coords: coords, + times: times + }; + } + function getGeometry(root) { + var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = []; + if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); } + if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); } + if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); } + for (i = 0; i < geotypes.length; i++) { + geomNodes = get(root, geotypes[i]); + if (geomNodes) { + for (j = 0; j < geomNodes.length; j++) { + geomNode = geomNodes[j]; + if (geotypes[i] === 'Point') { + geoms.push({ + type: 'Point', + coordinates: coord1(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'LineString') { + geoms.push({ + type: 'LineString', + coordinates: coord(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'Polygon') { + var rings = get(geomNode, 'LinearRing'), + coords = []; + for (k = 0; k < rings.length; k++) { + coords.push(coord(nodeVal(get1(rings[k], 'coordinates')))); + } + geoms.push({ + type: 'Polygon', + coordinates: coords + }); + } else if (geotypes[i] === 'Track' || + geotypes[i] === 'gx:Track') { + var track = gxCoords(geomNode); + geoms.push({ + type: 'LineString', + coordinates: track.coords + }); + if (track.times.length) coordTimes.push(track.times); + } + } + } + } + return { + geoms: geoms, + coordTimes: coordTimes + }; + } + function getPlacemark(root) { + var geomsAndTimes = getGeometry(root), i, properties = {}, + name = nodeVal(get1(root, 'name')), + styleUrl = nodeVal(get1(root, 'styleUrl')), + description = nodeVal(get1(root, 'description')), + timeSpan = get1(root, 'TimeSpan'), + extendedData = get1(root, 'ExtendedData'), + lineStyle = get1(root, 'LineStyle'), + polyStyle = get1(root, 'PolyStyle'); + + if (!geomsAndTimes.geoms.length) return []; + if (name) properties.name = name; + if (styleUrl[0] !== '#') { + styleUrl = '#' + styleUrl; + } + if (styleUrl && styleIndex[styleUrl]) { + properties.styleUrl = styleUrl; + properties.styleHash = styleIndex[styleUrl]; + } + if (description) properties.description = description; + if (timeSpan) { + var begin = nodeVal(get1(timeSpan, 'begin')); + var end = nodeVal(get1(timeSpan, 'end')); + properties.timespan = { begin: begin, end: end }; + } + if (lineStyle) { + var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))), + color = linestyles[0], + opacity = linestyles[1], + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) properties.stroke = color; + if (!isNaN(opacity)) properties['stroke-opacity'] = opacity; + if (!isNaN(width)) properties['stroke-width'] = width; + } + if (polyStyle) { + var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))), + pcolor = polystyles[0], + popacity = polystyles[1], + fill = nodeVal(get1(polyStyle, 'fill')), + outline = nodeVal(get1(polyStyle, 'outline')); + if (pcolor) properties.fill = pcolor; + if (!isNaN(popacity)) properties['fill-opacity'] = popacity; + if (fill) properties['fill-opacity'] = fill === '1' ? 1 : 0; + if (outline) properties['stroke-opacity'] = outline === '1' ? 1 : 0; + } + if (extendedData) { + var datas = get(extendedData, 'Data'), + simpleDatas = get(extendedData, 'SimpleData'); + + for (i = 0; i < datas.length; i++) { + properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value')); + } + for (i = 0; i < simpleDatas.length; i++) { + properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]); + } + } + if (geomsAndTimes.coordTimes.length) { + properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ? + geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes; + } + var feature = { + type: 'Feature', + geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : { + type: 'GeometryCollection', + geometries: geomsAndTimes.geoms + }, + properties: properties + }; + if (attr(root, 'id')) feature.id = attr(root, 'id'); + return [feature]; + } + return gj; + }, + gpx: function(doc) { + var i, + tracks = get(doc, 'trk'), + routes = get(doc, 'rte'), + waypoints = get(doc, 'wpt'), + // a feature collection + gj = fc(), + feature; + for (i = 0; i < tracks.length; i++) { + feature = getTrack(tracks[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < routes.length; i++) { + feature = getRoute(routes[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < waypoints.length; i++) { + gj.features.push(getPoint(waypoints[i])); + } + function getPoints(node, pointname) { + var pts = get(node, pointname), + line = [], + times = [], + heartRates = [], + l = pts.length; + if (l < 2) return {}; // Invalid line in GeoJSON + for (var i = 0; i < l; i++) { + var c = coordPair(pts[i]); + line.push(c.coordinates); + if (c.time) times.push(c.time); + if (c.heartRate) heartRates.push(c.heartRate); + } + return { + line: line, + times: times, + heartRates: heartRates + }; + } + function getTrack(node) { + var segments = get(node, 'trkseg'), + track = [], + times = [], + heartRates = [], + line; + for (var i = 0; i < segments.length; i++) { + line = getPoints(segments[i], 'trkpt'); + if (line.line) track.push(line.line); + if (line.times && line.times.length) times.push(line.times); + if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates); + } + if (track.length === 0) return null; + var properties = getProperties(node); + if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times; + if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates; + return { + type: 'Feature', + properties: properties, + geometry: { + type: track.length === 1 ? 'LineString' : 'MultiLineString', + coordinates: track.length === 1 ? track[0] : track + } + }; + } + function getRoute(node) { + var line = getPoints(node, 'rtept'); + if (!line.line) return null; + var routeObj = { + type: 'Feature', + properties: getProperties(node), + geometry: { + type: 'LineString', + coordinates: line.line + } + }; + return routeObj; + } + function getPoint(node) { + var prop = getProperties(node); + prop.sym = nodeVal(get1(node, 'sym')); + return { + type: 'Feature', + properties: prop, + geometry: { + type: 'Point', + coordinates: coordPair(node).coordinates + } + }; + } + function getProperties(node) { + var meta = ['name', 'desc', 'author', 'copyright', 'link', + 'time', 'keywords'], + prop = {}, + k; + for (k = 0; k < meta.length; k++) { + prop[meta[k]] = nodeVal(get1(node, meta[k])); + } + return clean(prop); + } + return gj; + } + }; + return t; +})(); + +if (typeof module !== 'undefined') module.exports = toGeoJSON; diff --git a/src/transit.js b/src/transit.js new file mode 100644 index 00000000..936847e5 --- /dev/null +++ b/src/transit.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Utils = imports.utils; + +/** + * Get the label to display for the starting point of an itinerary leg. + * leg: the itinerary leg + * isFirstLeg: true if this is the first leg of the itinerary. + */ +function getFromLabel(leg, isFirstLeg) { + if (isFirstLeg) { + if (leg.from) { + /* Translators: this is a format string indicating instructions + * starting a journey at the address given as the parameter + */ + return _("Start at %s").format(leg.from); + } else { + /* Translators: this indicates starting a journey at a location + * with no set name (such as when the user started routing from + * an arbitrary point on the map) + */ + return _("Start"); + } + } else { + return leg.from; + } +} + +/** + * Get the label to display for the destination headsign. + * leg: the itinerary leg + */ +function getHeadsignLabel(leg) { + if (leg.transit && leg.headsign) { + return leg.headsign; + } else if (!leg.transit) { + /* Translators: this is a format string indicating walking a certain + * distance, with the distance expression being the %s placeholder + */ + return _("Walk %s").format(Utils.prettyDistance(leg.distance)); + } else { + return null; + } +} + +/** + * Get the label to display for arrival of the final leg of an itinerary. + */ +function getArrivalLabel(lastLeg) { + if (lastLeg.to) { + /* Translators: this a format string indicating arriving at the + * destination of journey with the arrival address and transit + * stop as the format parameter */ + return _("Arrive at %s").format(lastLeg.to); + } else { + return _("Arrive"); + } +} diff --git a/src/transitArrivalMarker.js b/src/transitArrivalMarker.js new file mode 100644 index 00000000..62547400 --- /dev/null +++ b/src/transitArrivalMarker.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitArrivalMarker = GObject.registerClass( +class TransitArrivalMarker extends MapMarker.MapMarker { + + _init(params) { + let lastPoint = params.leg.polyline[params.leg.polyline.length - 1]; + let location = + new Location.Location({ latitude: lastPoint.latitude, + longitude: lastPoint.longitude + }); + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-end-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitArrivalRow.js b/src/transitArrivalRow.js new file mode 100644 index 00000000..bb5333db --- /dev/null +++ b/src/transitArrivalRow.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Transit = imports.transit; + +var TransitArrivalRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-arrival-row.ui', + InternalChildren: ['arrivalLabel', + 'timeLabel', + 'eventBox', + 'separator'] +}, class TransitArrivalRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._arrivalLabel.label = Transit.getArrivalLabel(lastLeg); + this._timeLabel.label = lastLeg.prettyPrintArrivalTime(); + + this._eventBox.connect('event', (widget, event) => { + this._onEvent(event, lastLeg.toCoordinate); + return true; + }); + } + + _onEvent(event, coord) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(coord[0], coord[1]); + } + } +}); diff --git a/src/transitBoardMarker.js b/src/transitBoardMarker.js new file mode 100644 index 00000000..2409614e --- /dev/null +++ b/src/transitBoardMarker.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const ICON_SIZE = 12; +const ACTOR_SIZE = 20; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitBoardMarker = GObject.registerClass( +class TransitBoardMarker extends MapMarker.MapMarker { + + _init(params) { + let firstPoint = params.leg.polyline[0]; + let location = new Location.Location({ latitude: firstPoint.latitude, + longitude: firstPoint.longitude + }); + let leg = params.leg; + + delete params.leg; + params.place = new Place.Place({ location: location }); + super._init(params); + + this.add_actor(this._createActor(leg)); + } + + /* Creates a Clutter actor for the given transit leg, showing the + * corresponding transit type icon and rendered inside a circle using the + * foreground color of the icon taken from the transit legs text color + * attribute and background color taken from the transit legs color + * attribute. + * Also draw an outline in the same color as the icon in case the + * background color above a threshold to improve readability against the + * map background. + */ + _createActor(leg) { + try { + let bgColor = leg.color ? leg.color : TransitPlan.DEFAULT_ROUTE_COLOR; + let fgColor = + Color.getContrastingForegroundColor(bgColor, leg.textColor ? + leg.textColor : + TransitPlan.DEFAULT_ROUTE_TEXT_COLOR); + let hasOutline = + Color.relativeLuminance(bgColor) > OUTLINE_LUMINANCE_THREASHHOLD; + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let fgRed = Color.parseColor(fgColor, 0); + let fgGreen = Color.parseColor(fgColor, 1); + let fgBlue = Color.parseColor(fgColor, 2); + let fgRGBA = new Gdk.RGBA({ red: fgRed, + green: fgGreen, + blue: fgBlue, + alpha: 1.0 + }); + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_icon(leg.iconName, ICON_SIZE, + Gtk.IconLookupFlags.FORCE_SIZE); + let pixbuf = info.load_symbolic(fgRGBA, null, null, null)[0]; + let canvas = new Clutter.Canvas({ width: ACTOR_SIZE, + height: ACTOR_SIZE }); + + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.arc(ACTOR_SIZE / 2, ACTOR_SIZE / 2, ACTOR_SIZE / 2, + 0, Math.PI * 2); + cr.fillPreserve(); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + (ACTOR_SIZE - pixbuf.get_width()) / 2, + (ACTOR_SIZE - pixbuf.get_height()) / 2); + cr.paint(); + + if (hasOutline) { + cr.setSourceRGB(fgRed, fgGreen, fgBlue); + cr.setLineWidth(1); + cr.stroke(); + } + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + + actor.set_content(canvas); + actor.set_size(ACTOR_SIZE, ACTOR_SIZE); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitItineraryRow.js b/src/transitItineraryRow.js new file mode 100644 index 00000000..0ec2db3f --- /dev/null +++ b/src/transitItineraryRow.js @@ -0,0 +1,148 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const TransitRouteLabel = imports.transitRouteLabel; + +// maximum number of legs to show before abbreviating with a … in the middle +const MAX_LEGS_SHOWN = 8; + +var TransitItineraryRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-itinerary-row.ui', + InternalChildren: ['timeLabel', + 'durationLabel', + 'summaryGrid'] +}, class TransitItineraryRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + super._init(params); + + this._timeLabel.label = this._itinerary.prettyPrintTimeInterval(); + this._durationLabel.label = this._itinerary.prettyPrintDuration(); + + this._populateSummary(); + } + + get itinerary() { + return this._itinerary; + } + + _populateSummary() { + let length = this._itinerary.legs.length; + /* use compacted route labels when more than 2 legs, to avoid + * overflowing the sidebar width + */ + let useCompact = length > 2; + /* don't show the route labels if too much space is consumed, + * the constant 26 here was empiracally tested out... + */ + let estimatedSpace = this._calculateEstimatedSpace(); + let useContractedLabels = estimatedSpace > 26; + + if (length > MAX_LEGS_SHOWN) { + /* ellipsize list with horizontal dots to avoid overflowing and + * expanding the sidebar + */ + let firstPart = this._itinerary.legs.slice(0, MAX_LEGS_SHOWN / 2); + let lastPart = this._itinerary.legs.slice(-MAX_LEGS_SHOWN / 2); + + this._renderLegs(firstPart, 0, true, true); + this._summaryGrid.attach(new Gtk.Label({ visible: true, + label: '\u22ef' } ), + firstPart.length * 2, 0, 1, 1); + this._renderLegs(lastPart, firstPart.length * 2 + 1, true, true); + } else { + this._renderLegs(this._itinerary.legs, 0, useCompact, + useContractedLabels); + } + } + + /* + * Render a list of legs. + * legs: array of legs to render + * startPosition: start position in grid to render at + * useCompact: true if compact rendering (without route designations) + * useContractedLabels: true to use contracted route labels, if possible + */ + _renderLegs(legs, startPosition, useCompact, useContractedLabels) { + let length = legs.length; + + legs.forEach((leg, i) => { + this._summaryGrid.attach(this._createLeg(leg, useCompact, + useContractedLabels), + startPosition + i * 2, 0, 1, 1); + // render a separator label unless the last leg to render + if (i !== length - 1) + this._summaryGrid.attach(new Gtk.Label({ visible: true, + label: '-' }), + startPosition + i * 2 + 1, 0, 1, 1); + }); + } + + /* calculate an estimated relative space-consumption for rendering, + * this is done based on route label character lengths and a fixed + * "placeholder" amount for mode icons and separators, since doing an + * exact pixel-correct calculation would be hard depending on fonts and + * themes + */ + _calculateEstimatedSpace() { + let length = this._itinerary.legs.length; + /* assume mode icons and the separators consume about twice the space of + * characters + */ + let space = 4 * length - 2; + + this._itinerary.legs.forEach(function(leg) { + if (leg.transit) + space += leg.compactRoute.length; + }); + + return space; + } + + _createLeg(leg, useCompact, useContractedLabels) { + let icon = new Gtk.Image({ icon_name: leg.iconName, visible: true }); + + icon.get_style_context().add_class('sidebar-icon'); + + if (!leg.transit || useContractedLabels) { + /* if this is a non-transit leg (walking), or in case we should + * display only a mode icon (to save space), insert a sole icon */ + return icon; + } else { + /* for transit legs put besides a short route label */ + let grid = new Gtk.Grid({ visible: true, column_spacing: 2 }); + + grid.attach(icon, 0, 0, 1, 1); + grid.attach(new TransitRouteLabel.TransitRouteLabel({ leg: leg, + compact: useCompact, + visible: true }), + 1, 0, 1, 1); + + return grid; + } + } +}); diff --git a/src/transitLegRow.js b/src/transitLegRow.js new file mode 100644 index 00000000..46d0a31d --- /dev/null +++ b/src/transitLegRow.js @@ -0,0 +1,209 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const InstructionRow = imports.instructionRow; +const Transit = imports.transit; +const TransitRouteLabel = imports.transitRouteLabel; +const TransitStopRow = imports.transitStopRow; +const Utils = imports.utils; + +var TransitLegRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-leg-row.ui', + InternalChildren: ['modeImage', + 'fromLabel', + 'routeGrid', + 'timeLabel', + 'footerStack', + 'expandButton', + 'detailsRevealer', + 'agencyLabel', + 'collapsButton', + 'instructionList', + 'eventBox'] +}, class TransitLegRow extends Gtk.ListBoxRow { + + _init(params) { + this._leg = params.leg; + delete params.leg; + + this._start = params.start; + delete params.start; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._modeImage.icon_name = this._leg.iconName; + this._fromLabel.label = Transit.getFromLabel(this._leg, this._start); + + if (this._leg.transit) { + let routeLabel = new TransitRouteLabel.TransitRouteLabel({ + leg: this._leg, + }); + + this._routeGrid.attach(routeLabel, 0, 0, 1, 1); + + this._agencyLabel.visible = true; + + if (this._leg.agencyUrl) { + let url = GLib.markup_escape_text(this._leg.agencyUrl, -1); + /* we need to double-escape the tooltip text, as GTK+ treats it as + * markup + */ + let tooltip = GLib.markup_escape_text(url, -1); + this._agencyLabel.label = + '%s'.format(url, tooltip, + this._leg.agencyName); + } else { + this._agencyLabel.label = this._leg.agencyName; + } + } else { + this._expandButton.tooltip_text = _("Show walking instructions"); + this._collapsButton.tooltip_text = _("Hide walking instructions"); + } + + if (!this._leg.transit || this._leg.headsign) { + /* Restrict headsign label to 20 characters to avoid horizontally + * overflowing the sidebar. + */ + let headsignLabel = new Gtk.Label({ visible: true, + can_focus: false, + use_markup: true, + hexpand: true, + margin_start: 3, + max_width_chars: 20, + ellipsize: Pango.EllipsizeMode.END, + halign: Gtk.Align.START }); + let label = + GLib.markup_escape_text(Transit.getHeadsignLabel(this._leg), -1); + + headsignLabel.label = '%s'.format(label); + headsignLabel.get_style_context().add_class('dim-label'); + this._routeGrid.attach(headsignLabel, this._leg.transit ? 1 : 0, 0, + 1, 1); + } + + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + + if (this._hasIntructions()) + this._populateInstructions(); + else + this._footerStack.visible_child_name = 'separator'; + + this._expandButton.connect('clicked', this._expand.bind(this)); + this._collapsButton.connect('clicked', this._collaps.bind(this)); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) { + if (row.turnPoint) + this._mapView.showTurnPoint(row.turnPoint); + else + this._mapView.showTransitStop(row.stop, this._leg); + } + }); + + this._eventBox.connect('event', (widget, event) => { + this._handleEventBox(event); + return true; + }); + + this._isExpanded = false; + } + + // Handle events received on the EventBox for expanding when clicking + _handleEventBox(event) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + if (this._isExpanded) { + this._collaps(); + } else { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(this._leg.fromCoordinate[0], + this._leg.fromCoordinate[1]); + if (this._hasIntructions()) + this._expand(); + } + } + } + + _expand() { + this._footerStack.visible_child_name = 'separator'; + this._detailsRevealer.reveal_child = true; + /* collaps the time label down to just show the start time when + * revealing intermediate stop times, as the arrival time is displayed + * at the last stop + */ + this._timeLabel.label = this._leg.prettyPrintDepartureTime(); + this._isExpanded = true; + } + + _collaps() { + this._footerStack.visible_child_name = 'expander'; + this._detailsRevealer.reveal_child = false; + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + this._isExpanded = false; + } + + _hasIntructions() { + return this._leg.transit || this._leg.walkingInstructions; + } + + _populateInstructions() { + if (this._leg.transit) { + if (this._leg.intermediateStops) { + let stops = this._leg.intermediateStops; + for (let index = 0; index < stops.length; index++) { + let stop = stops[index]; + let row = + new TransitStopRow.TransitStopRow({ visible: true, + stop: stop, + final: index === stops.length - 1 }); + this._instructionList.insert(row, -1); + } + } + } else { + /* don't output the starting and ending instructions from the walk + * route, since these are explicitly added by the itinerary + */ + for (let index = 1; + index < this._leg.walkingInstructions.length - 1; + index++) { + let instruction = this._leg.walkingInstructions[index]; + let row = + new InstructionRow.InstructionRow({ visible: true, + turnPoint: instruction }); + + this._instructionList.insert(row, -1); + } + } + } +}); diff --git a/src/transitMoreRow.js b/src/transitMoreRow.js new file mode 100644 index 00000000..64228b19 --- /dev/null +++ b/src/transitMoreRow.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var TransitMoreRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-more-row.ui', + InternalChildren: ['stack', + 'label'] +}, class TransitMoreRow extends Gtk.ListBoxRow { + + _init(params) { + super._init(params); + + if (Application.routeQuery.arriveBy) + this._label.label = _("Load earlier alternatives"); + else + this._label.label = _("Load later alternatives"); + } + + startLoading() { + this._stack.visible_child_name = 'spinner'; + } + + showNoMore() { + this.activatable = false; + this._label.get_style_context().add_class('dim-label'); + this._stack.visible_child_name = 'label'; + + if (Application.routeQuery.arriveBy) + this._label.label = _("No earlier alternatives found."); + else + this._label.label = _("No later alternatives found."); + } +}); diff --git a/src/transitOptions.js b/src/transitOptions.js new file mode 100644 index 00000000..0a964eef --- /dev/null +++ b/src/transitOptions.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +var TransitOptions = class TransitOptions { + + constructor() { + this._showAllTransitTypes = true; + this._transitTypes = []; + } + + get showAllTransitTypes() { + return this._showAllTransitTypes; + } + + /* When set to true, show any mode of transportation, else only show modes + * added with addTransitType() + */ + set showAllTransitTypes(showAllTransitTypes) { + this._showAllTransitTypes = showAllTransitTypes; + this._transitTypes = []; + } + + /* Add an explicit transport mode to show + */ + addTransitType(transitType) { + this._showAllTransitTypes = false; + this._transitTypes.push(transitType); + } + + get transitTypes() { + return this._transitTypes; + } +}; + +/* return true if the passed in options objects are equal, either both + * accept any transit type, or both contains the same set of types, otherwise + * return false + */ +function equals(first, second) { + if (first.showAllTransitTypes && second.showAllTransitTypes) { + return true; + } else if (first.transitTypes.length !== second.transitTypes.length) { + return false; + } else { + for (let type of first.transitTypes) { + if (second.transitTypes.indexOf(type) === -1) + return false; + } + + return true; + } +} diff --git a/src/transitOptionsPanel.js b/src/transitOptionsPanel.js new file mode 100644 index 00000000..6c23a3ee --- /dev/null +++ b/src/transitOptionsPanel.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const HVT = imports.hvt; +const Time = imports.time; +const TransitOptions = imports.transitOptions; +const TransitPlan = imports.transitPlan; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: clockFormat === '12h' }); + +var TransitOptionsPanel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-options-panel.ui', + InternalChildren: ['transitTimeOptionsComboBox', + 'transitTimeEntry', + 'transitDateButton', + 'transitDateCalendar', + 'transitParametersMenuButton', + 'busCheckButton', + 'tramCheckButton', + 'trainCheckButton', + 'subwayCheckButton', + 'ferryCheckButton', + 'airplaneCheckButton'] +}, class TransitOptionsPanel extends Gtk.Grid { + + _init(params) { + this._query = Application.routeQuery; + super._init(params); + this._initTransitOptions(); + } + + reset() { + /* reset to indicate departure now and forget any previous manually + * set time and date + */ + this._transitTimeOptionsComboBox.active_id = 'leaveNow'; + this._timeSelected = false; + this._dateSelected = false; + this._lastOptions = new TransitOptions.TransitOptions(); + } + + _initTransitOptions() { + this._transitTimeOptionsComboBox.connect('changed', + this._onTransitTimeOptionsComboboxChanged.bind(this)); + this._transitTimeEntry.connect('activate', + this._onTransitTimeEntryActivated.bind(this)); + /* trigger an update of the query time as soon as focus leave the time + * entry, to allow the user to enter a time before selecting start + * and destination without having to press enter */ + this._transitTimeEntry.connect('focus-out-event', + this._onTransitTimeEntryActivated.bind(this)); + this._transitDateButton.popover.get_child().connect('day-selected-double-click', + this._onTransitDateCalenderDaySelected.bind(this)); + this._transitDateButton.connect('toggled', + this._onTransitDateButtonToogled.bind(this)); + this._transitParametersMenuButton.connect('toggled', + this._onTransitParametersToggled.bind(this)) + } + + _onTransitTimeOptionsComboboxChanged() { + if (this._transitTimeOptionsComboBox.active_id === 'leaveNow') { + this._transitTimeEntry.visible = false; + this._transitDateButton.visible = false; + this._query.arriveBy = false; + this._query.date = null; + this._query.time = null; + this._timeSelected = null; + this._dateSelected = null; + } else { + this._transitTimeEntry.visible = true; + this._transitDateButton.visible = true; + + if (!this._timeSelected) + this._transitTimeEntry.text = _timeFormat.format(new Date()); + + if (!this._dateSelected) + this._updateTransitDateButton(GLib.DateTime.new_now_local()); + + if (this._transitTimeOptionsComboBox.active_id === 'arriveBy') { + this._query.arriveBy = true; + } else { + this._query.arriveBy = false; + } + } + } + + _onTransitTimeEntryActivated() { + let timeString = this._transitTimeEntry.text; + + if (timeString && timeString.length > 0) { + timeString = Time.parseTimeString(timeString); + + /* only trigger an update if a different time was entered */ + if (timeString && timeString !== this._timeSelected) { + this._query.time = timeString; + /* remember that the user has selected a time */ + this._timeSelected = timeString; + } + } + } + + _updateTransitDateButton(date) { + this._transitDateButton.label = + /* + * Translators: this is a format string giving the equivalent to + * "may 29" according to the current locale's convensions. + */ + date.format(C_("month-day-date", "%b %e")); + } + + _onTransitDateCalenderDaySelected() { + let calendar = this._transitDateButton.popover.get_child(); + let year = calendar.year; + let month = calendar.month + 1; + let day = calendar.day; + let date = '%04d-%02d-%02d'.format(year, month, day); + + /* only trigger an update if a different date was selected */ + if (date !== this._dateSelected) { + this._query.date = date; + this._transitDateButton.active = false; + this._updateTransitDateButton(GLib.DateTime.new_local(year, month, day, + 0, 0, 0)); + /* remember that the user has already selected a date */ + this._dateSelected = date; + } + } + + _onTransitDateButtonToogled() { + if (!this._transitDateButton.active) + this._onTransitDateCalenderDaySelected(); + } + + _createTransitOptions() { + let options = new TransitOptions.TransitOptions(); + let busSelected = this._busCheckButton.active; + let tramSelected = this._tramCheckButton.active; + let trainSelected = this._trainCheckButton.active; + let subwaySelected = this._subwayCheckButton.active; + let ferrySelected = this._ferryCheckButton.active; + let airplaneSelected = this._airplaneCheckButton.active; + + if (busSelected && tramSelected && trainSelected && subwaySelected && + ferrySelected && airplaneSelected) { + options.showAllTransitTypes = true; + } else { + if (busSelected) + options.addTransitType(TransitPlan.RouteType.BUS); + if (tramSelected) + options.addTransitType(TransitPlan.RouteType.TRAM); + if (trainSelected) + options.addTransitType(TransitPlan.RouteType.TRAIN); + if (subwaySelected) + options.addTransitType(TransitPlan.RouteType.SUBWAY); + if (ferrySelected) + options.addTransitType(TransitPlan.RouteType.FERRY); + if (airplaneSelected) + options.addTransitType(HVT.AIR_SERVICE); + } + + return options; + } + + _onTransitParametersToggled() { + if (!this._transitParametersMenuButton.active) { + let options = this._createTransitOptions(); + + if (!TransitOptions.equals(options, this._lastOptions)) { + this._query.transitOptions = options; + this._lastOptions = options; + } + } + } + }); diff --git a/src/transitPlan.js b/src/transitPlan.js new file mode 100644 index 00000000..b6556e0f --- /dev/null +++ b/src/transitPlan.js @@ -0,0 +1,832 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const BoundingBox = imports.boundingBox; +const HVT = imports.hvt; +const Time = imports.time; +const Utils = imports.utils; + +/* + * These constants corresponds to the routeType attribute of transit legs + * in original GTFS specification. + */ +var RouteType = { + NON_TRANSIT: -1, + TRAM: 0, + SUBWAY: 1, + TRAIN: 2, + BUS: 3, + FERRY: 4, + /* Cable car refers to street-level cabel cars, where the propulsive + * cable runs in a slot between the tracks beneath the car + * https://en.wikipedia.org/wiki/Cable_car_%28railway%29 + * For example the cable cars in San Francisco + * https://en.wikipedia.org/wiki/San_Francisco_cable_car_system + */ + CABLE_CAR: 5, + /* Gondola refers to a suspended cable car, typically aerial cable cars + * where the car is suspended from the cable + * https://en.wikipedia.org/wiki/Gondola_lift + * For example the "Emirates Air Line" in London + * https://en.wikipedia.org/wiki/Emirates_Air_Line_%28cable_car%29 + */ + GONDOLA: 6, + /* Funicular refers to a railway system designed for steep inclines, + * https://en.wikipedia.org/wiki/Funicular + */ + FUNICULAR: 7, + /* Electric buses that draw power from overhead wires using poles. */ + TROLLEYBUS: 11, + /* Railway in which the track consists of a single rail or a beam. */ + MONORAIL: 12 +}; + +/* extra time to add to the first itinerary leg when it's a walking leg */ +const WALK_SLACK = 120; + +var DEFAULT_ROUTE_COLOR = '4c4c4c'; +var DEFAULT_ROUTE_TEXT_COLOR = 'ffffff'; + +var Plan = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'no-more-results': {}, + 'itinerary-selected': { param_types: [GObject.TYPE_OBJECT] }, + 'itinerary-deselected': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Plan extends GObject.Object { + + _init(params) { + super._init(params); + this.reset(); + this._attribution = null; + this._attributionUrl = null; + } + + get itineraries() { + return this._itineraries; + } + + get selectedItinerary() { + return this._selectedItinerary; + } + + get attribution() { + return this._attribution; + } + + set attribution(attribution) { + this._attribution = attribution; + } + + get attributionUrl() { + return this._attributionUrl; + } + + set attributionUrl(attributionUrl) { + this._attributionUrl = attributionUrl; + } + + update(itineraries) { + this._itineraries = itineraries; + this.bbox = this._createBBox(); + this.emit('update'); + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + updateWithNewItineraries(itineraries, arriveBy, extendPrevious) { + /* sort itineraries, by departure time ascending if querying + * by leaving time, by arrival time descending when querying + * by arriving time + */ + if (arriveBy) + itineraries.sort(sortItinerariesByArrivalDesc); + else + itineraries.sort(sortItinerariesByDepartureAsc); + + let newItineraries = + extendPrevious ? this.itineraries.concat(itineraries) : itineraries; + + this.update(newItineraries); + } + + + + reset() { + this._itineraries = []; + this.bbox = null; + this._selectedItinerary = null; + this._attribution = null; + this._attributionUrl = null; + this.emit('reset'); + } + + noMoreResults() { + this.emit('no-more-results'); + } + + selectItinerary(itinerary) { + this._selectedItinerary = itinerary; + this.emit('itinerary-selected', itinerary); + } + + deselectItinerary() { + this._selectedItinerary = null; + this.emit('itinerary-deselected'); + } + + error(msg) { + this.emit('error', msg); + } + + noRouteFound() { + this.emit('error', _("No route found.")); + } + + noTimetable() { + this.emit('error', _("No timetable data found for this route.")); + } + + requestFailed() { + this.emit('error', _("Route request failed.")); + } + + noProvider() { + this.emit('error', _("No provider found for this route.")); + } + + _createBBox() { + let bbox = new BoundingBox.BoundingBox(); + this._itineraries.forEach(function(itinerary) { + bbox.compose(itinerary.bbox); + }); + return bbox; + } +}); + +var Itinerary = GObject.registerClass( +class Itinerary extends GObject.Object { + + _init(params) { + this._duration = params.duration; + delete params.duration; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._transfers = params.transfers; + delete params.transfers; + + this._legs = params.legs; + delete params.legs; + + super._init(params); + + this.bbox = this._createBBox(); + } + + get duration() { + return this._duration; + } + + get departure() { + return this._departure; + } + + get arrival() { + return this._arrival; + } + + get transfers() { + return this._transfers; + } + + get legs() { + return this._legs; + } + + /* adjust timings of the legs of the itinerary, using the real duration of + * walking legs, also sets the timezone offsets according to adjacent + * transit legs + */ + _adjustLegTimings() { + if (this.legs.length === 1 && !this.legs[0].transit) { + /* if there is only one leg, and it's a walking one, just need to + * adjust the arrival time + */ + let leg = this.legs[0]; + leg.arrival = leg.departure + leg.duration * 1000; + + return; + } + + for (let i = 0; i < this.legs.length; i++) { + let leg = this.legs[i]; + + if (!leg.transit) { + if (i === 0) { + /* for the first leg subtract the walking time plus a + * safety slack from the departure time of the following + * leg + */ + let nextLeg = this.legs[i + 1]; + leg.departure = + nextLeg.departure - leg.duration * 1000 - WALK_SLACK; + leg.arrival = leg.departure + leg.duration * 1000; + // use the timezone offset from the first transit leg + leg.agencyTimezoneOffset = nextLeg.agencyTimezoneOffset; + } else { + /* for walking legs in the middle or at the end, just add + * the actual walking walk duration to the arrival time of + * the previous leg + */ + let previousLeg = this.legs[i - 1]; + leg.departure = previousLeg.arrival; + leg.arrival = previousLeg.arrival + leg.duration * 1000; + // use the timezone offset of the previous (transit) leg + leg.agencyTimezoneOffset = previousLeg.agencyTimezoneOffset; + } + } + } + } + + _createBBox() { + let bbox = new BoundingBox.BoundingBox(); + + this._legs.forEach(function(leg) { + bbox.compose(leg.bbox); + }); + + return bbox; + } + + prettyPrintTimeInterval() { + /* Translators: this is a format string for showing a departure and + * arrival time, like: + * "12:00 – 13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s \u2013 %s").format(this._getDepartureTime(), + this._getArrivalTime()); + } + + _getDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg */ + return Time.formatTimeWithTZOffset(this.departure, + this.legs[0].agencyTimezoneOffset); + } + + _getArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg */ + let lastLeg = this.legs[this.legs.length - 1]; + return Time.formatTimeWithTZOffset(this.arrival, + lastLeg.agencyTimezoneOffset); + } + + prettyPrintDuration() { + let mins = this.duration / 60; + + if (mins < 60) { + let minStr = Utils.formatLocaleInteger(mins); + + /* translators: this is an indication for a trip duration of + * less than an hour, with only the minutes part, using plural forms + * as appropriate + */ + return ngettext("%s minute", "%s minutes", mins).format(minStr); + } else { + let hours = Math.floor(mins / 60); + let hourStr = Utils.formatLocaleInteger(hours); + + mins = mins % 60; + + if (mins === 0) { + /* translators: this is an indication for a trip duration, + * where the duration is an exact number of hours (i.e. no + * minutes part), using plural forms as appropriate + */ + return ngettext("%s hour", "%s hours", hours).format(hourStr); + } else { + let minStr = Utils.formatLocaleIntegerMinimumTwoDigits(mins); + + /* translators: this is an indication for a trip duration + * where the duration contains an hour and minute part, it's + * pluralized on the hours part + */ + return ngettext("%s:%s hour", "%s:%s hours", hours).format(hourStr, minStr); + } + } + } + + adjustTimings() { + this._adjustLegTimings(); + this._departure = this._legs[0].departure; + this._arrival = this._legs[this._legs.length - 1].arrival; + this._duration = (this._arrival - this._departure) / 1000; + } + + _getTransitDepartureLeg() { + for (let i = 0; i < this._legs.length; i++) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + _getTransitArrivalLeg() { + for (let i = this._legs.length - 1; i >= 0; i--) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + /* gets the departure time of the first transit leg */ + get transitDepartureTime() { + return this._getTransitDepartureLeg().departure; + } + + /* gets the timezone offset of the first transit leg */ + get transitDepartureTimezoneOffset() { + return this._getTransitDepartureLeg().timezoneOffset; + } + + /* gets the arrival time of the final transit leg */ + get transitArrivalTime() { + return this._getTransitArrivalLeg().arrival; + } + + /* gets the timezone offset of the final transit leg */ + get transitArrivalTimezoneOffset() { + return this._getTransitArrivalLeg().timezoneOffset; + } + + get isWalkingOnly() { + return this.legs.length === 1 && !this.legs[0].isTransit; + } +}); + +var Leg = class Leg { + + constructor(params) { + this._route = params.route; + delete params.route; + + this._routeType = params.routeType; + delete params.routeType; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._polyline = params.polyline; + delete params.polyline; + + this._fromCoordinate = params.fromCoordinate; + delete params.fromCoordinate; + + this._toCoordinate = params.toCoordinate; + delete params.toCoordinate; + + this._from = params.from; + delete params.from; + + this._to = params.to; + delete params.to; + + this._intermediateStops = params.intermediateStops; + delete params.intermediateStops; + + this._headsign = params.headsign; + delete params.headsign; + + this._isTransit = params.isTransit; + delete params.isTransit; + + this._walkingInstructions = params.walkingInstructions; + delete params.walkingInstructions; + + this._distance = params.distance; + delete params.distance; + + this._duration = params.duration; + delete params.duration; + + this._agencyName = params.agencyName; + delete params.agencyName; + + this._agencyUrl = params.agencyUrl; + delete params.agencyUrl; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._color = params.color; + delete params.color; + + this._textColor = params.textColor; + delete params.textColor; + + this._tripShortName = params.tripShortName; + delete params.tripShortName; + + this.bbox = this._createBBox(); + + this._compactRoute = null; + } + + get route() { + return this._route; + } + + set route(route) { + this._route = route; + } + + // try to get a shortened route name, suitable for overview rendering + get compactRoute() { + if (this._compactRoute) + return this._compactRoute; + + if (this._route.startsWith(this._agencyName)) { + /* if the agency name is a prefix of the route name, display the + * agency name in the overview, this way we get a nice "transition" + * into the expanded route showing the full route name + */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && + (this._agencyName.length < this._tripShortName.length)) { + /* if the agency name is shorter than the trip short name, + * which can sometimes be a more "internal" number, like a + * "train number", which is less known by the general public, + * prefer the agency name */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && this._tripShortName.length <= 6) { + /* if the above conditions are unmet, use the trip short name + * as a fallback if it was shorter than the original route name */ + this._compactRoute = this._tripShortName; + } else if (this._color) { + /* as a fallback when the route has a defined color, + * use an empty compact label to get a colored badge */ + this._compactRoute = ''; + } else { + /* if none of the above is true, use the original route name, + * and rely on label ellipsization */ + this._compactRoute = this._route; + } + + return this._compactRoute; + } + + get routeType() { + return this._routeType; + } + + set routeType(routeType) { + this._routeType = routeType; + } + + get departure() { + return this._departure; + } + + set departure(departure) { + this._departure = departure; + } + + get arrival() { + return this._arrival; + } + + get timezoneOffset() { + return this._agencyTimezoneOffset; + } + + set arrival(arrival) { + this._arrival = arrival; + } + + get polyline() { + return this._polyline; + } + + set polyline(polyline) { + this._polyline = polyline; + } + + get fromCoordinate() { + return this._fromCoordinate; + } + + get toCoordinate() { + return this._toCoordinate; + } + + get from() { + return this._from; + } + + get to() { + return this._to; + } + + get intermediateStops() { + return this._intermediateStops; + } + + set intermediateStops(intermediateStops) { + this._intermediateStops = intermediateStops; + } + + get headsign() { + return this._headsign; + } + + get transit() { + return this._isTransit; + } + + get distance() { + return this._distance; + } + + set distance(distance) { + this._distance = distance; + } + + get duration() { + return this._duration; + } + + get agencyName() { + return this._agencyName; + } + + get agencyUrl() { + return this._agencyUrl; + } + + get agencyTimezoneOffset() { + return this._agencyTimezoneOffset; + } + + set agencyTimezoneOffset(tzOffset) { + this._agencyTimezoneOffset = tzOffset; + } + + get color() { + return this._color || DEFAULT_ROUTE_COLOR; + } + + set color(color) { + this._color = color; + } + + get textColor() { + return this._textColor || DEFAULT_ROUTE_TEXT_COLOR; + } + + set textColor(textColor) { + this._textColor = textColor; + } + + get tripShortName() { + return this._tripShortName; + } + + _createBBox() { + let bbox = new BoundingBox.BoundingBox(); + + this.polyline.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }); + + return bbox; + } + + get iconName() { + if (this._isTransit) { + let type = this._routeType; + switch (type) { + /* special case HVT codes */ + case HVT.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + default: + let hvtSupertype = HVT.supertypeOf(type); + + if (hvtSupertype !== -1) + type = hvtSupertype; + + switch (type) { + case RouteType.TRAM: + case HVT.TRAM_SERVICE: + return 'route-transit-tram-symbolic'; + + case RouteType.SUBWAY: + case HVT.METRO_SERVICE: + case HVT.URBAN_RAILWAY_SERVICE: + case HVT.UNDERGROUND_SERVICE: + return 'route-transit-subway-symbolic'; + + case RouteType.TRAIN: + case HVT.RAILWAY_SERVICE: + case HVT.SUBURBAN_RAILWAY_SERVICE: + return 'route-transit-train-symbolic'; + + case RouteType.BUS: + case HVT.BUS_SERVICE: + case HVT.COACH_SERVICE: + case HVT.TROLLEYBUS_SERVICE: + /* TODO: handle a special case icon for trolleybus */ + return 'route-transit-bus-symbolic'; + + case RouteType.FERRY: + case HVT.WATER_TRANSPORT_SERVICE: + case HVT.FERRY_SERVICE: + return 'route-transit-ferry-symbolic'; + + case RouteType.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + + case RouteType.GONDOLA: + case HVT.TELECABIN_SERVICE: + return 'route-transit-gondolalift-symbolic'; + + case RouteType.FUNICULAR: + case HVT.FUNICULAR_SERVICE: + return 'route-transit-funicular-symbolic'; + + case HVT.TAXI_SERVICE: + /* TODO: should we have a dedicated taxi icon? */ + return 'route-car-symbolic'; + + case HVT.AIR_SERVICE: + return 'route-transit-airplane-symbolic'; + + default: + /* use a fallback question mark icon in case of some future, + * for now unknown mode appears */ + return 'dialog-question-symbolic'; + } + } + } else { + return 'route-pedestrian-symbolic'; + } + } + + get walkingInstructions() { + return this._walkingInstructions; + } + + set walkingInstructions(walkingInstructions) { + this._walkingInstructions = walkingInstructions; + } + + /* Pretty print timing for a transit leg, set params.isStart: true when + * printing for the starting leg of an itinerary. + * For starting walking legs, only the departure time will be printed, + * otherwise the departure and arrival time of the leg (i.e. transit ride + * or an in-between walking section) will be printed. + */ + prettyPrintTime(params) { + if (!this.transit && params.isStart) { + return this.prettyPrintDepartureTime(); + } else { + /* Translators: this is a format string for showing a departure and + * arrival time in a more compact manner to show in the instruction + * list for an itinerary, like: + * "12:00–13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s\u2013%s").format(this.prettyPrintDepartureTime(), + this.prettyPrintArrivalTime()); + } + } + + prettyPrintDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg + */ + return Time.formatTimeWithTZOffset(this.departure, + this.agencyTimezoneOffset); + } + + prettyPrintArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg + */ + return Time.formatTimeWithTZOffset(this.arrival, + this.agencyTimezoneOffset); + } +}; + +var Stop = class Stop { + + constructor(params) { + this._name = params.name; + delete params.name; + + this._arrival = params.arrival; + delete params.arrival; + + this._departure = params.departure; + delete params.departure; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._coordinate = params.coordinate; + delete params.coordinate; + } + + get name() { + return this._name; + } + + get coordinate() { + return this._coordinate; + } + + prettyPrint(params) { + if (params.isFinal) { + /* take the stop arrival time and offset using the timezone + * offset of the last leg + */ + return Time.formatTimeWithTZOffset(this._arrival, + this._agencyTimezoneOffset); + } else { + /* take the stop departure time and offset using the timezone + * offset of the first leg + */ + return Time.formatTimeWithTZOffset(this._departure, + this._agencyTimezoneOffset); + } + } +}; + +function sortItinerariesByDepartureAsc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * starting at the earliest possible departure time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.departure > second.departure; +} + +function sortItinerariesByArrivalDesc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * ending at the latest possible arrival time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.arrival < second.arrival; +} diff --git a/src/transitPrintLayout.js b/src/transitPrintLayout.js new file mode 100644 index 00000000..aada2fe0 --- /dev/null +++ b/src/transitPrintLayout.js @@ -0,0 +1,338 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Pango = imports.gi.Pango; + +const Color = imports.color; +const Gfx = imports.gfx; +const MapSource = imports.mapSource; +const PrintLayout = imports.printLayout; +const Transit = imports.transit; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; + +// stroke color for walking paths +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 0, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +// All following constants are ratios of surface size to page size +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; +const _Instruction = { + SCALE_X: 0.9, + SCALE_Y: 0.1, + SCALE_MARGIN: 0.01 +}; + +// luminance threashhold for drawing outline around route label badges +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitPrintLayout = GObject.registerClass( +class TransitPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + params.totalSurfaces = this._getNumberOfSurfaces(); + + super._init(params); + } + + _getNumberOfSurfaces() { + // always one fixed surface for the title label + let numSurfaces = 1; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + numSurfaces++; + // add a surface when a leg of the itinerary should have a map view + if (this._legHasMiniMap(i)) + numSurfaces++; + } + + // always include the arrival row + numSurfaces++; + + return numSurfaces; + } + + _drawMapView(width, height, zoomLevel, index) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + let leg = this._itinerary.legs[index]; + let nextLeg = this._itinerary.legs[index + 1]; + let previousLeg = index === 0 ? null : this._itinerary.legs[index - 1]; + + view.set_map_source(mapSource); + /* we want to add the path layer before the marker layer, so that + * boarding marker are drawn about the walk dash lines + */ + this._addRouteLayer(view, index); + view.add_layer(markerLayer); + + markerLayer.add_marker(this._createStartMarker(leg, previousLeg)); + if (nextLeg) + markerLayer.add_marker(this._createBoardMarker(nextLeg)); + else + markerLayer.add_marker(this._createArrivalMarker(leg)); + + /* in some cases, we seem to get get zero distance walking instructions + * within station complexes, don't try to show a bounding box for low + * distances, instead center on the spot + */ + if (leg.distance < 10) + view.center_on(leg.fromCoordinate[0], leg.fromCoordinate[1]); + else + view.ensure_visible(this._createBBox(leg), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createBBox(leg) { + return Champlain.BoundingBox({ top: leg.bbox.top, + left: leg.bbox.left, + bottom: leg.bbox.bottom, + right: leg.bbox.right }); + } + + _createStartMarker(leg, previousLeg) { + return new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg }); + } + + _createBoardMarker(leg) { + return new TransitBoardMarker.TransitBoardMarker({ leg: leg }); + } + + _createArrivalMarker(leg) { + return new TransitArrivalMarker.TransitArrivalMarker({ leg: leg }); + } + + _addRouteLayer(view, index) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + let leg = this._itinerary.legs[index]; + + routeLayer.set_dash([5, 5]); + view.add_layer(routeLayer); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way + */ + if (index > 0 && !leg.transit) { + let previousLeg = this._itinerary.legs[index - 1]; + let lastPoint = + previousLeg.polyline[previousLeg.polyline.length - 1]; + + routeLayer.add_node(lastPoint); + } + + leg.polyline.forEach((node) => routeLayer.add_node(node)); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one + */ + if (index < this._itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = this._itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + } + + _drawInstruction(width, height, leg, start) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let timeWidth = !leg.transit && start ? height : height * 2; + let fromText = Transit.getFromLabel(leg, start); + let routeWidth = 0; + + this._drawIcon(cr, leg.iconName, width, height); + this._drawText(cr, fromText, this._rtl ? timeWidth : height, 0, + width - height - timeWidth, height / 2, Pango.Alignment.LEFT); + + if (leg.transit) { + let color = leg.color; + let textColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD; + let routeText = + this._createTextLayout(cr, leg.route, width - height - timeWidth, + height / 2, + this._rtl ? Pango.Alignment.RIGHT : + Pango.Alignment.LEFT); + let [pWidth, pHeight] = routeText.get_pixel_size(); + let routePadding = 3; + let routeHeight = pHeight + routePadding * 2; + routeWidth = Math.max(pWidth, pHeight) + routePadding * 2; + let routeX = this._rtl ? width - height - routeWidth - 1 : height; + let routeY = height / 2 + ((height / 2) - routeHeight) / 2; + + + textColor = Color.getContrastingForegroundColor(color, textColor); + Gfx.drawColoredBagde(cr, color, hasOutline ? textColor : null, + routeX, routeY, routeWidth, routeHeight); + this._drawTextLayoutWithColor(cr, routeText, + routeX + routePadding + + (routeWidth - pWidth - + routePadding * 2) / 2, + routeY + routePadding, + routeWidth - routePadding * 2, + routeHeight - routePadding * 2, + textColor, Pango.Alignment.LEFT); + + // introduce some additional padding before the headsign label + routeWidth += routePadding; + } + + let headsign = Transit.getHeadsignLabel(leg); + + if (headsign) { + let headsignLayout = this._createTextLayout(cr, headsign, + width - height - timeWidth - routeWidth, + height / 2, + Pango.Alignment.LEFT); + let [pWidth, pHeight] = headsignLayout.get_pixel_size(); + this._drawTextLayoutWithColor(cr, headsignLayout, + this._rtl ? timeWidth : height + routeWidth, + height / 2 + (height / 2 - pHeight) / 2, + width - height - timeWidth - routeWidth, + height / 2, '888888', + Pango.Alignment.LEFT); + } + this._drawTextVerticallyCentered(cr, leg.prettyPrintTime({ isStart: start }), + timeWidth, height, + this._rtl ? 0 : width - timeWidth - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _drawArrival(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._drawIcon(cr, 'maps-point-end-symbolic', width, height); + // draw the arrival text + this._drawTextVerticallyCentered(cr, Transit.getArrivalLabel(lastLeg), + width - height * 3, + height, this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + // draw arrival time + this._drawTextVerticallyCentered(cr, lastLeg.prettyPrintArrivalTime(), + height, height, + this._rtl ? 0 : width - height - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _legHasMiniMap(index) { + let leg = this._itinerary.legs[index]; + return !leg.transit; + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let dy = headerHeight + headerMargin; + + this._createNewPage(); + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + let leg = this._itinerary.legs[i]; + let hasMap = this._legHasMiniMap(i); + let instructionDy = instructionHeight + instructionMargin; + let mapDy = hasMap ? mapViewHeight + mapViewMargin : 0; + + dy = instructionDy + mapDy; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, leg, + i === 0); + this._cursorY += instructionDy; + + if (hasMap) { + let nextLeg = i < this._itinerary.legs.length - 1 ? + this._itinerary.legs[i + 1] : null; + this._drawMapView(mapViewWidth, mapViewHeight, mapViewZoomLevel, i); + this._cursorY += mapDy; + } + } + + this._drawArrival(instructionWidth, instructionHeight); + } +}); diff --git a/src/transitRouteLabel.js b/src/transitRouteLabel.js new file mode 100644 index 00000000..8e1f0388 --- /dev/null +++ b/src/transitRouteLabel.js @@ -0,0 +1,124 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Gfx = imports.gfx; +const Utils = imports.utils; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; +/* the threashhold when using a dark theme, when the color is darker draw an + * outline around the label + */ +const DARK_OUTLINE_LUMINANCE_THREASHHOLD = 0.1; + +// fallback high contrast colors +const HIGH_CONTRAST_COLOR = '000000'; +const HIGH_CONTRAST_TEXT_COLOR = 'ffffff'; + +var TransitRouteLabel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-route-label.ui', +}, class TransitRouteLabel extends Gtk.Label { + + _init(params) { + let leg = params.leg; + let compact = params.compact; + + delete params.leg; + delete params.compact; + super._init(params); + + this._setLabel(leg, compact); + this.connect('draw', this._onDraw.bind(this)); + } + + _setLabel(leg, compact) { + let color = leg.color; + let textColor = leg.textColor; + let label = leg.route; + let usingDarkTheme = Utils.isUsingDarkThemeVariant(); + let usingHighContrastTheme = Utils.isUsingHighContrastTheme(); + + textColor = Color.getContrastingForegroundColor(color, textColor); + + /* if using the high contrast theme and a label is set, fallback to + * hight-contrasting colors, if no label, assume the route color is + * more relevant and keep it also for high contrast + */ + if (usingHighContrastTheme && ((compact && leg.compactRoute) || + (!compact && label))) { + color = HIGH_CONTRAST_COLOR; + textColor = HIGH_CONTRAST_TEXT_COLOR; + } + + this._color = color; + this._textColor = textColor; + + if ((!usingDarkTheme && + Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD) || + (usingDarkTheme && + Color.relativeLuminance(color) < DARK_OUTLINE_LUMINANCE_THREASHHOLD)) { + this._hasOutline = true; + } + + /* for compact (overview) mode, try to shorten the label if the route + * name was more than 6 characters + */ + if (compact && label.length > 6) + label = leg.compactRoute; + + if (compact) { + /* restrict number of characters shown in the label when compact mode + * is requested + */ + this.max_width_chars = 6; + } else if (leg && !leg.headsign) { + // if there is no trip headsign to display, allow more space + this.max_width_chars = 25; + } + + this.label = '%s'.format( + textColor, + GLib.markup_escape_text(label, -1)); + } + + /* I didn't find any easy/obvious way to override widget background color + * and getting rounded corner just using CSS styles, so doing a custom + * Cairo drawing of a "roundrect" + */ + _onDraw(widget, cr) { + let width = widget.get_allocated_width(); + let height = widget.get_allocated_height(); + + Gfx.drawColoredBagde(cr, this._color, + this._hasOutline ? this._textColor : null, + 0, 0, width, height); + + return false; + } +}); diff --git a/src/transitRouter.js b/src/transitRouter.js new file mode 100644 index 00000000..0f3892bd --- /dev/null +++ b/src/transitRouter.js @@ -0,0 +1,277 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GLib = imports.gi.GLib; + +const BoundingBox = imports.boundingBox; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * Class responsible for delegating requests to perform routing in transit + * mode. + * Holds the the shared plan instance (filled with journeys on successful + * requests). + */ +var TransitRouter = class TransitRoute { + constructor(params) { + this._plan = new TransitPlan.Plan(); + this._query = params.query; + this._providers = Service.getService().transitProviders; + this._providerCache = []; + this._language = Utils.getLanguage(); + this._probePlugins(); + } + + get enabled() { + return this._providers !== undefined; + } + + get plan() { + return this._plan; + } + + /** + * Called when the query has been updated to trigger the first set + * of results- + */ + fetchFirstResults() { + let pluginOverride = GLib.getenv('TRANSIT_PLUGIN'); + + if (pluginOverride) { + // override plugin was specified, try instanciating if not done yet + if (!this._currPluginInstance) { + let module = this._availablePlugins[pluginOverride]; + + if (module) { + this._currPluginInstance = + new imports.transitplugins[module][pluginOverride](); + } else { + throw new Error('Specified override plugin not found'); + } + } + } else { + let bestProvider = this._getBestProviderForQuery(); + + this._currPluginInstance = null; + + if (bestProvider) { + let provider = bestProvider[0]; + + this._currPluginInstance = bestProvider[1]; + this._plan.attribution = this._getAttributionForProvider(provider); + if (provider.attributionUrl) + this._plan.attributionUrl = provider.attributionUrl; + } + } + + if (this._currPluginInstance) { + this._currPluginInstance.fetchFirstResults(); + } else { + this._plan.reset(); + this._plan.noProvider(); + } + } + + /** + * Called to fetch additional (later or earlier) results depending on the + * query settings. + */ + fetchMoreResults() { + if (this._currPluginInstance) + this._currPluginInstance.fetchMoreResults(); + else + throw new Error('No previous provider'); + } + + _probePlugins() { + this._availablePlugins = []; + + for (let module in imports.transitplugins) { + for (let pluginClass in imports.transitplugins[module]) { + this._availablePlugins[pluginClass] = module; + } + } + } + + /** + * Get attribution for a provider. Returns a language-specific + * 'attribution:' tag if available, otherwise 'attribution' + */ + _getAttributionForProvider(provider) { + if (provider['attribution:' + this._language]) + return provider['attribution:' + this._language]; + else if (provider.attribution) + return provider.attribution; + else + return null; + } + + _getMatchingProvidersForPlace(place) { + let location = place.location; + let country = place.country_code ?? + Utils.getCountryCodeForCoordinates(location.latitude, + location.longitude); + + let matchingProviders = []; + + this._providers.forEach((p) => { + let provider = p.provider; + let areas = provider.areas; + + if (!areas) { + Utils.debug('No coverage info for provider ' + provider.name); + return; + } + + areas.forEach((area) => { + /* if the area has a specified priority, override the + * overall area priority, this allows sub-areas of of + * coverage for a provider to have higher or lowe priorities + * than other providers (e.g. one "native" to that area + */ + if (area.priority) + provider.priority = area.priority; + + let countries = area.countries; + + if (countries) { + if (countries.includes(country)) { + matchingProviders[provider.name] = provider; + return; + } + } + + let bbox = area.bbox; + + if (bbox) { + if (bbox.length !== 4) { + Utils.debug('malformed bounding box for provider ' + provider.name); + return; + } + + let [x1, y1, x2, y2] = bbox; + let cbbox = new BoundingBox.BoundingBox({ bottom: x1, + left: y1, + top: x2, + right: y2 }); + + if (cbbox.covers(location.latitude, + location.longitude)) { + matchingProviders[provider.name] = provider; + return; + } + } + }); + }); + + return matchingProviders; + } + + /** + * Get the most preferred provider for a given query. + * Return: an array with the provider definition and the plugin instance, + * or null if no matching provider was found. + */ + _getBestProviderForQuery() { + let startPlace = this._query.filledPoints[0].place; + let endPlace = this._query.filledPoints.last().place; + + let matchingProvidersForStart = + this._getMatchingProvidersForPlace(startPlace); + let matchingProvidersForEnd = + this._getMatchingProvidersForPlace(endPlace); + + let matchingProviders = []; + + // check all candidate providers matching on the start location + for (let name in matchingProvidersForStart) { + let providerAtStart = matchingProvidersForStart[name]; + let providerAtEnd = matchingProvidersForEnd[name]; + + /* if the provider also matches on the end location, consider it + * as a potential candidate + */ + if (providerAtEnd) { + let order = this._sortProviders(providerAtStart, providerAtEnd); + + /* add the provider at it lowest priority to favor higher + * priority providers in "fringe cases" + */ + if (order < 0) + matchingProviders.push(providerAtStart); + else + matchingProviders.push(providerAtEnd); + } + } + + matchingProviders.sort(this._sortProviders); + + for (let i = 0; i < matchingProviders.length; i++) { + let provider = matchingProviders[i]; + let plugin = provider.plugin; + + if (this._providerCache[provider.name]) + return [provider, this._providerCache[provider.name]]; + + let module = this._availablePlugins[plugin]; + + if (module) { + try { + let params = provider.params; + let instance = + params ? new imports.transitplugins[module][plugin](params) : + new imports.transitplugins[module][plugin](); + + this._providerCache[provider.name] = instance; + + return [provider, instance]; + } catch (e) { + Utils.debug('Failed to instantiate transit plugin: ' + + plugin + ": " + e); + } + } else { + Utils.debug('Transit provider plugin not available: ' + plugin); + } + } + + Utils.debug('No suitable transit provider found'); + return null; + } + + /** + * Sort function to sort providers in by preference. + * If both providers have a priority set, prefers the one with a lower + * value (higher prio), otherwise the one that has a priority set (if any), + * else no specific order. + */ + _sortProviders(p1, p2) { + if (p1.priority && p2.priority) + return p1.priority - p2.priority; + else if (p1.priority) + return -1; + else if (p2.priority) + return 1; + else + return 0; + } +}; diff --git a/src/transitStopRow.js b/src/transitStopRow.js new file mode 100644 index 00000000..f3cbe790 --- /dev/null +++ b/src/transitStopRow.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var TransitStopRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-stop-row.ui', + InternalChildren: [ 'nameLabel', + 'timeLabel' ] +}, class TransitStopRow extends Gtk.ListBoxRow { + + _init(params) { + this.stop = params.stop; + delete params.stop; + + this._final = params.final; + delete params.final; + + super._init(params); + + this._nameLabel.label = this.stop.name; + this._timeLabel.label = this.stop.prettyPrint({ isFinal: this._final }); + } +}); diff --git a/src/transitWalkMarker.js b/src/transitWalkMarker.js new file mode 100644 index 00000000..60f72f57 --- /dev/null +++ b/src/transitWalkMarker.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitWalkMarker = GObject.registerClass( +class TransitWalkMarker extends MapMarker.MapMarker { + + _init(params) { + /* if there is a preceding leg, put the marker at the end of that leg + * to avoid gaps, since we will "fill out" the walking leg path line + * since sometimes the walking route might not reach exactly to the + * transit stop's position + */ + let point; + if (params.previousLeg) + point = params.previousLeg.polyline[params.previousLeg.polyline.length - 1]; + else + point = params.leg.polyline[0]; + + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + delete params.previousLeg; + + let location = new Location.Location({ latitude: point.latitude, + longitude: point.longitude + }); + + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-start-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitplugins/README b/src/transitplugins/README new file mode 100644 index 00000000..890401cd --- /dev/null +++ b/src/transitplugins/README @@ -0,0 +1,67 @@ +This directory contains implementations of transit routing provider plugins. +Each plugin should contain an ES6 class implementing the plugin. + +Each implementation implements two methods: + +fetchFirstResults(): + +This is invoked when the singleton routing query has been updated and would +query itineraries from it's source, and on success populate the TransitPlan +singleton with an itinerary list and call plan.update(), or on error call +one of the pre-defined error methods on the plan, or trigger a custom error +with plan.error(). + +fetchMoreResults(): + +This is invoked when to fetch additional (later or earlier) results. +Would on success add additional itineraries and call plan.update(), or on +error call plan.noMoreResults(). + +Providers are configured via the downloaded service file using a JSON element +like: + +"transitProviders": [ + { + "provider": { + "name": "Description of provider 1", + "plugin": "OpenTripPlanner", + "attribution": "Provider 1", + "attributionUrl": "http://provider1.example.com", + "priority": 10, + "areas": [ + { + "priority": 10, + "countries": [ "UT" ] + } + ], + "params": { + "baseUrl": "http://otp.provider1.example.com/otp" + } + } + }, + { + "provider": { + "name": "Provider 2", + "plugin": "OpenTripPlanner", + "attribution": "Provider 2", + "attributionUrl": "https://provider2.example.com", + "areas": [ + { + "bbox": [48.28,0.81,49.73,4.11] + } + ], + "params": { + "baseUrl": "https://provider2.example.com/otp" + } + } + } + ] + + Each provider can have an optional priority, to allow more specific provider + (e.g. one serving a single city) within the area of a more general one. + Single sub-areas of a provider can also override the general provider priority. + This can be used to allow areas of provider to "shadow" neighboring providers + while keeping the the neighboring provider as the preferred one when used + exclusively for its region. + Custom parameters, if specified, will be passed as the "params" object the + constructor() of the plugin implementation. \ No newline at end of file diff --git a/src/transitplugins/goMetro.js b/src/transitplugins/goMetro.js new file mode 100644 index 00000000..e68cd1c2 --- /dev/null +++ b/src/transitplugins/goMetro.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the South African + * GoMetro API. + * https://proserver.gometro.co.za/api/v1/docs/#multimodal-routing + */ + +const BASE_URL = 'https://proserver.gometro.co.za/api'; +const API_VERSION = 'v1'; + +const NATIVE_TIMEZONE = 'Africa/Cape_Town'; + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +const Application = imports.application; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const OpenTripPlanner = imports.transitplugins.openTripPlanner; + +var GoMetro = class GoMetro extends OpenTripPlanner.OpenTripPlanner { + constructor() { + super({ baseUrl: BASE_URL }); + + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + } + + // the GoMetro API only supports start and destination points + fetchFirstResults() { + if (this._query.filledPoints.length > 2) { + Utils.debug('This plugin does not support via locations'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (this._query.arriveBy) { + this._reset(); + this._plan.error(_("This plugin doesn't support latest arrival")); + } else { + super.fetchFirstResults(); + } + } + + _getPlanUrlWithLocations() { + let fromLocation = this._query.filledPoints[0].place.location; + let toLocation = this._query.filledPoints.last().place.location; + + return '%s/%s/trips/%s,%s/%s,%s/%s/%s'.format(BASE_URL, + API_VERSION, + fromLocation.latitude, + fromLocation.longitude, + toLocation.latitude, + toLocation.longitude, + this._getDateAndTimeParams(), + this._getModesParam()); + } + + _getDateAndTimeParams() { + if (this._query.time || this._extendPrevious) { + let params = {}; + + this._addCommonParams(params); + let time = params.time; + let date = params.date; + + return '%s/%s%s'.format(date, this._query.arriveBy ? '-' : '', time); + } else { + let dateTime = GLib.DateTime.new_now(this._tz); + + return '%04d-%02d-%02d/%02d:%02d'.format(dateTime.get_year(), + dateTime.get_month(), + dateTime.get_day_of_month(), + dateTime.get_hour(), + dateTime.get_minute()); + } + } + + // GoMetro seems to (ab)use routeType ferry for communal taxi + _createLeg(leg, index, legs) { + let result = super._createLeg(leg, index, legs); + + if (result.routeType === TransitPlan.RouteType.FERRY) + result.routeType = HVT.TAXI_SERVICE; + + return result; + } + + _getModesParam() { + let params = ''; + let transitOptions = this._query.transitOptions; + + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAIN)) + params += 'RAIL,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.BUS)) + params += 'BUS,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.FERRY)) + params += 'FERRY,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAM)) + params += 'TRAM,'; + if (transitOptions.showAllTransitTypes) + params += 'GONDOLA,'; + + return params + 'WALK'; + } +} diff --git a/src/transitplugins/openTripPlanner.js b/src/transitplugins/openTripPlanner.js new file mode 100644 index 00000000..70c6a74a --- /dev/null +++ b/src/transitplugins/openTripPlanner.js @@ -0,0 +1,1254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const EPAF = imports.epaf; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const Location = imports.location; +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * This module implements the interface for communicating with an OpenTripPlanner + * server instance. + * The code is somewhat intricate since it supports instances of OpenTripPlanner + * running both with and without OSM data to complement the transit timetable + * data with turn-by-turn (walking) routing. + * + * There is two entry points for obtaining routes, one which is called by the + * routing delegator when the query is being modified (fetchFirstResults()), + * and the other being called when requesting additional results (later or + * earlier alternatives depending on search criteria) (fetchMoreResults()) + * These call into an entry point function "_fatchRoute()". + * "_fetchRoutes()" is called. + * In the case where there is no OSM data (onlyTransitData is true), it + * asynchronously calls "_fetchTransitStops()" to get closest transit stop for + * each of the query point, this function will involve OpenTripPlanner calls to + * find stops within a search circle around the coordinate and then calls out + * to GraphHopper to find the actual walking distance and selects the closest + * stop. + * In the callback for the results of _fetchTransitStops() the actual call to + * OpenTripPlanner is made. + * The callback for "_fetchRoutes()" will in turn reformat the resulting + * itineraries obtained from OpenTripPlanner into our internal format specified + * in the TransitPlan module and calls "_recalculateItineraries()" which will + * traverse these and do yet another recursive asyncrous pass over these results + * to refine the results with actual walking routes obtained from GraphHopper, + * since the results from our OpenTripPlanner instance with only transit data + * will result in walking legs which use "as the crow flies" routes for walking. + * It will also clean up the results by pruning out pointless transit legs, such + * as taking transit very short distances when almost reaching the target. + * + * API docs for OpenTripPlanner can be found at: http://dev.opentripplanner.org/apidoc/1.0.0/ + */ + +/* minimum distance when an explicit walk route will be requested to supplement + * the transit route + */ +const MIN_WALK_ROUTING_DISTANCE = 100; + +/* minimum distance of a transit leg, below which we would replace the leg with + * walking if the leg is the first or last + */ +const MIN_TRANSIT_LEG_DISTANCE = 300; + +/* maximum walking distance for a potential replacement of a beginning or ending + * transit leg */ +const MAX_WALK_OPTIMIZATION_DISTANCE = 1000; + +/* maximum distance difference for performing a replacement of a beginning or + * ending transit leg with a walking leg + */ +const MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE = 500; + +/* minimum acceptable time margin when recalculating walking legs in the middle + * of an itinerary + */ +const MIN_INTERMEDIATE_WALKING_SLACK = 60; + +/* maximum walking distance, filter out itineraries containing walking legs + * with longer walking after being refined by GraphHopper + */ +const MAX_WALKING_DISTANCE = 2000; + +// maximum radius to search for stops +const STOP_SEARCH_RADIUS = 2000; + +// maximum number of transit stops to consider as candidates for start/end points +const NUM_STOPS_TO_TRY = 5; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpenTripPlanner = class OpenTripPlanner { + + constructor(params) { + let onlyTransitDataEnv = GLib.getenv('OTP_ONLY_TRANSIT_DATA'); + let onlyTransitData = + onlyTransitDataEnv ? onlyTransitDataEnv === 'true' : + params?.onlyTransitData ?? false; + + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._baseUrl = GLib.getenv('OTP_BASE_URL') ?? params.baseUrl; + this._router = params?.router ?? 'default'; + this._routerUrl = params?.routerUrl; + this._onlyTransitData = onlyTransitData; + this._extendPrevious = false; + this._language = Utils.getLanguage(); + + if (!this._baseUrl && !this._routerUrl) + throw new Error('must specify either baseUrl or routerUrl as an argument'); + + if (this._baseUrl && this._routerUrl) + throw new Error('can not specify both baseUrl and routerUrl as arguments'); + } + + get plan() { + return this._plan; + } + + get enabled() { + return this._baseUrl !== null; + } + + fetchFirstResults() { + this._extendPrevious = false; + this._fetchRoute(); + } + + fetchMoreResults() { + this._extendPrevious = true; + this._fetchRoute(); + } + + _getRouterUrl() { + return this._routerUrl ? this._routerUrl : + this._baseUrl + '/routers/' + this._router; + } + + _getMode(routeType) { + switch (routeType) { + case TransitPlan.RouteType.TRAM: + return 'TRAM'; + case TransitPlan.RouteType.TRAIN: + return 'RAIL'; + case TransitPlan.RouteType.SUBWAY: + return 'SUBWAY'; + case TransitPlan.RouteType.BUS: + return 'BUS'; + case TransitPlan.RouteType.FERRY: + return 'FERRY'; + case HVT.AIR_SERVICE: + return 'AIRPLANE'; + default: + throw new Error('unhandled route type'); + } + } + + _getModes(options) { + let modes = options.transitTypes.map((transitType) => { + return this._getMode(transitType); + }); + + /* should always include walk when setting explicit modes, + * otherwise only routes ending close to a stop would work + */ + modes.push('WALK'); + + return modes.join(','); + } + + _selectBestStopRecursive(stops, index, stopIndex, callback) { + if (index < stops.length) { + let points = this._query.filledPoints; + let stop = stops[index]; + let stopPoint = + GraphHopperTransit.createQueryPointForCoord([stop.lat, stop.lon]); + + if (stops[0].dist < 100) { + /* if the stop is close enough to the intended point, just + * return the top most from the the original query */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } else if (stopIndex === 0) { + GraphHopperTransit.fetchWalkingRoute([points[0], stopPoint], + (route) => { + /* if we couldn't find an exact walking route, go with the + * "as the crow flies" distance */ + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else if (stopIndex === points.length - 1) { + GraphHopperTransit.fetchWalkingRoute([stopPoint, points.last()], + (route) => { + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else { + /* for intermediate stops just return the one geographically + * closest */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } + } else { + /* re-sort stops by distance and select the closest after refining + * distances */ + stops.sort(this._sortTransitStops); + Utils.debug('refined stops: '); + stops.forEach((stop) => Utils.debug(JSON.stringify(stop, '', 2))); + callback(stops[0]); + } + } + + /* stopIndex here is the index of stop (i.e. starting point, intermediate + * stop, final stop + */ + _selectBestStop(stops, stopIndex, callback) { + this._selectBestStopRecursive(stops, 0, stopIndex, callback); + } + + _sortTransitStops(s1, s2) { + return s1.dist > s2.dist; + } + + _fetchRoutesForStop(stop, callback) { + let query = new HTTP.Query(); + let uri = new Soup.URI(this._getRouterUrl() + '/index/stops/' + + stop.id + '/routes'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get routes for stop'); + this._reset(); + } else { + let routes = JSON.parse(message.response_body.data); + + Utils.debug('Routes for stop: ' + stop + ': ' + JSON.stringify(routes)); + callback(routes); + } + }); + } + + _routeMatchesSelectedModes(route) { + let desiredTransitTypes = this._query.transitOptions.transitTypes; + + for (let i = 0; i < desiredTransitTypes.length; i++) { + let type = desiredTransitTypes[i]; + + if (type === TransitPlan.RouteType.TRAM && route.mode === 'TRAM') + return true; + else if (type === TransitPlan.RouteType.SUBWAY && route.mode === 'SUBWAY') + return true; + else if (type === TransitPlan.RouteType.TRAIN && route.mode === 'RAIL') + return true; + else if (type === TransitPlan.RouteType.BUS && + (route.mode === 'BUS' || route.mode === 'TAXI')) + return true; + else if (type === TransitPlan.RouteType.FERRY && route.mode === 'FERRY') + return true; + } + + return false; + } + + _filterStopsRecursive(stops, index, filteredStops, callback) { + if (index < stops.length) { + let stop = stops[index]; + + this._fetchRoutesForStop(stop, (routes) => { + for (let i = 0; i < routes.length; i++) { + let route = routes[i]; + + if (this._routeMatchesSelectedModes(route)) { + filteredStops.push(stop); + break; + } + } + this._filterStopsRecursive(stops, index + 1, filteredStops, + callback); + }); + } else { + callback(filteredStops); + } + } + + _filterStops(stops, callback) { + this._filterStopsRecursive(stops, 0, [], callback); + } + + _fetchTransitStopsRecursive(index, result, callback) { + let points = this._query.filledPoints; + + if (index < points.length) { + let point = points[index]; + let params = { lat: point.place.location.latitude, + lon: point.place.location.longitude, + radius: STOP_SEARCH_RADIUS }; + let query = new HTTP.Query(params); + let uri = new Soup.URI(this._getRouterUrl() + + '/index/stops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get stop for search point ' + point); + this._reset(); + } else { + let stops = JSON.parse(message.response_body.data); + + if (stops.length === 0) { + Utils.debug('No suitable stop found from router'); + callback(null); + return; + } + + if (this._query.transitOptions.showAllTransitTypes) { + stops.sort(this._sortTransitStops); + stops = stops.splice(0, NUM_STOPS_TO_TRY); + + Utils.debug('stops: ' + JSON.stringify(stops, '', 2)); + this._selectBestStop(stops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, result, + callback); + }); + } else { + this._filterStops(stops, (filteredStops) => { + filteredStops.sort(this._sortTransitStops); + filteredStops = filteredStops.splice(0, NUM_STOPS_TO_TRY); + + if (filteredStops.length === 0) { + Utils.debug('No suitable stop found using selected transit modes'); + callback(null); + return; + } + + this._selectBestStop(filteredStops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, + result, callback); + }); + }); + } + } + }); + } else { + callback(result); + } + } + + _fetchTransitStops(callback) { + this._fetchTransitStopsRecursive(0, [], callback); + } + + // get a time suitably formatted for the OpenTripPlanner query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the OpenTripPlanner query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParamFromLocation(location) { + return location.latitude + ',' + location.longitude; + } + + _addCommonParams(params) { + params.numItineraries = 5; + params.showIntermediateStops = true; + params.locale = this._language; + + let time = this._query.time; + let date = this._query.date; + + if (this._extendPrevious) { + let itineraries = this.plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (time) { + params.time = time; + /* it seems OTP doesn't like just setting a time, so if the query + * doesn't specify a date, go with today's date + */ + if (!date) { + let dateTime = GLib.DateTime.new_now_local(); + + params.date = dateTime.format('%F'); + } + } + + if (date) + params.date = date; + } + + if (this._query.arriveBy) + params.arriveBy = true; + + let options = this._query.transitOptions; + if (options && !options.showAllTransitTypes) + params.mode = this._getModes(options); + } + + _createParamsWithLocations() { + let points = this._query.filledPoints; + let params = { + fromPlace: this._getPlaceParamFromLocation(points[0].place.location), + toPlace: this._getPlaceParamFromLocation(points[points.length - 1].place.location) }; + let intermediatePlaces = []; + + for (let i = 1; i < points.length - 1; i++) { + let location = points[i].place.location; + intermediatePlaces.push(this._getPlaceParamFromLocation(location)); + } + if (intermediatePlaces) + params.intermediatePlaces = intermediatePlaces; + + params.maxWalkDistance = 2500; + this._addCommonParams(params); + + return params; + } + + // create parameter map for the request, given query and options + _createParamsWithStops(stops) { + let params = { fromPlace: stops[0].id, + toPlace: stops.last().id }; + let intermediatePlaces = []; + + for (let i = 1; i < stops.length - 1; i++) { + intermediatePlaces.push(stops[i].id); + } + if (intermediatePlaces.length > 0) + params.intermediatePlaces = intermediatePlaces; + + /* set walking speed for transfers to a slightly lower value to + * compensate for running OTP with only transit data, giving straight- + * line walking paths + */ + params.walkSpeed = 1.0; + + this._addCommonParams(params); + + return params; + } + + _fetchPlan(url, callback) { + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get route plan from router ' + + this._router + ' ' + message.reason_phrase); + callback(null); + } else { + try { + let result = JSON.parse(message.response_body.data); + + callback(result); + } catch (e) { + Utils.debug('Error parsing result: ' + e); + callback(null); + } + } + }); + } + + _getPlanUrlFromParams(params) { + let query = new HTTP.Query(params); + + return this._getRouterUrl() + '/plan?' + query.toString(); + } + + _getPlanUrlWithStops(stops) { + return this._getPlanUrlFromParams(this._createParamsWithStops(stops)); + } + + _getPlanUrlWithLocations() { + return this._getPlanUrlFromParams(this._createParamsWithLocations()); + } + + _fetchRoutes(callback) { + if (this._onlyTransitData) { + this._fetchTransitStops((stops) => { + let points = this._query.filledPoints; + + if (!stops) { + callback(null); + return; + } + + /* if there's only a start and end stop (no intermediate stops) + * and those stops are identical, reject the routing, since this + * means there would be no point in transit, and OTP would give + * some bizarre option like boarding transit, go one stop and then + * transfer to go back the same route + */ + if (stops.length === 2 && stops[0].id === stops[1].id) { + callback(null); + return; + } + + this._fetchPlan(this._getPlanUrlWithStops(stops), callback); + }); + } else { + this._fetchPlan(this._getPlanUrlWithLocations(), callback); + } + } + + _reset() { + this._extendPrevious = false; + if (this._query.latest) + this._query.latest.place = null; + else + this.plan.reset(); + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionality as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._extendPrevious = false; + this.plan.noMoreResults(); + } else { + this.plan.noRouteFound(); + } + } + + _fetchRoute() { + let points = this._query.filledPoints; + + this._fetchRoutes((route) => { + if (route) { + let itineraries = []; + let plan = route.plan; + + Utils.debug('route: ' + JSON.stringify(route, null, 2)); + + if (plan && plan.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(plan.itineraries)); + } else if (route.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(route.itineraries)); + } + + if (itineraries.length === 0) { + /* don't reset query points, unlike for turn-based + * routing, since options and timing might influence + * results */ + this._noRouteFound(); + } else { + if (this._onlyTransitData) + this._recalculateItineraries(itineraries); + else + this._updateWithNewItineraries(itineraries); + } + } else { + this._noRouteFound(); + } + }); + } + + _isOnlyWalkingItinerary(itinerary) { + return itinerary.legs.length === 1 && !itinerary.legs[0].transit; + } + + _recalculateItineraries(itineraries) { + // filter out itineraries with only walking + let newItineraries = []; + + itineraries.forEach((itinerary) => { + if (!this._isOnlyWalkingItinerary(itinerary)) + newItineraries.push(itinerary); + }); + + /* TODO: should we always calculate a walking itinerary to put at the + * top if the total distance is below some threashhold? + */ + this._recalculateItinerariesRecursive(newItineraries, 0); + } + + _isItineraryRealistic(itinerary) { + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + + if (!leg.transit) { + /* if a walking leg exceeds the maximum desired walking + * distance, or for a leg "in-between" two transit legs, if + * there's insufficient switch time + */ + if (leg.distance > MAX_WALKING_DISTANCE) { + return false; + } else if (i >= 1 && i < itinerary.legs.length - 1) { + let previousLeg = itinerary.legs[i - 1]; + let nextLeg = itinerary.legs[i + 1]; + + let availableTime = + (nextLeg.departure - previousLeg.arrival) / 1000; + + if (availableTime < + leg.duration + MIN_INTERMEDIATE_WALKING_SLACK) + return false; + } + } + } + + return true; + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + _updateWithNewItineraries(itineraries) { + this.plan.updateWithNewItineraries(itineraries, this._query.arriveBy, + this._extendPrevious); + this._extendPrevious = false; + } + + _recalculateItinerariesRecursive(itineraries, index) { + if (index < itineraries.length) { + this._recalculateItinerary(itineraries[index], (itinerary) => { + itineraries[index] = itinerary; + this._recalculateItinerariesRecursive(itineraries, index + 1); + }); + } else { + /* filter out itineraries where there are intermediate walking legs + * that are too narrow time-wise, this is necessary since running + * OTP with only transit data can result in some over-optimistic + * walking itinerary legs, since it will use "line-of-sight" + * distances. + * also filter out itineraries where recalculation process ended + * up with just walking + */ + let filteredItineraries = []; + + itineraries.forEach((itinerary) => { + if (this._isItineraryRealistic(itinerary) && + !this._isOnlyWalkingItinerary(itinerary)) + filteredItineraries.push(itinerary); + }); + + if (filteredItineraries.length > 0) { + filteredItineraries.forEach((itinerary) => itinerary.adjustTimings()); + this._updateWithNewItineraries(filteredItineraries); + } else { + this._noRouteFound(); + } + } + } + + _recalculateItinerary(itinerary, callback) { + let from = this._query.filledPoints[0]; + let to = this._query.filledPoints.last(); + + if (itinerary.legs.length === 1 && !itinerary.legs[0].transit) { + /* special case, if there's just one leg of an itinerary, and that leg + * leg is a non-transit (walking), recalculate the route in its entire + * using walking + */ + GraphHopperTransit.fetchWalkingRoute(this._query.filledPoints, + (route) => { + let leg = GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + to.place.name, + route); + let newItinerary = + new TransitPlan.Itinerary({departure: itinerary.departure, + duration: route.time / 1000, + legs: [leg]}); + callback(newItinerary); + }); + } else if (itinerary.legs.length === 1 && itinerary.legs[0].transit) { + // special case if there is exactly one transit leg + let leg = itinerary.legs[0]; + let startLeg = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLoc = startLeg.place.location; + let endLoc = endLeg.place.location; + let toLoc = to.place.location; + let startWalkDistance = fromLoc.get_distance_from(startLoc) * 1000; + let endWalkDistance = endLoc.get_distance_from(toLoc) * 1000; + + if (startWalkDistance >= MIN_WALK_ROUTING_DISTANCE && + endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + /* add an extra walking leg to both the beginning and end of the + * itinerary + */ + GraphHopperTransit.fetchWalkingRoute([from, startLeg], + (firstRoute) => { + let firstLeg = + GraphHopperTransit.createWalkingLeg(from, startLeg, + from.place.name, + leg.from, firstRoute); + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, + leg.to, + to.place.name, + lastRoute); + itinerary.legs.unshift(firstLeg); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + }); + } else if (endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + // add an extra walking leg to the end of the itinerary + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, leg.to, + to.place.name, + lastRoute); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + } else { + /* if only there's only a walking leg to be added to the start + * let the recursive routine dealing with multi-leg itineraries + * handle it + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } else { + /* replace walk legs with GraphHopper-generated paths (hence the + * callback nature of this. Filter out unrealistic itineraries (having + * walking segments not possible in reasonable time, due to our running + * of OTP with only transit data). + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } + + _recalculateItineraryRecursive(itinerary, index, callback) { + if (index < itinerary.legs.length) { + let leg = itinerary.legs[index]; + if (index === 0) { + let from = this._query.filledPoints[0]; + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceToEndLeg = + fromLoc.get_distance_from(endLegLoc) * 1000; + let distanceToStartLeg = + fromLoc.get_distance_from(startLegLoc) * 1000; + let nextLeg = itinerary.legs[index + 1]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceToEndLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceToEndLeg - distanceToStartLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the first leg of the intinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * starting coordinate from the input query, + * also replace a transit leg at the start with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the next step in the itinerary due to + * similar reasons + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toName = leg.to; + + /* if the next leg is a walking one, "fold" it into the one + * we create here */ + if (nextLeg && !nextLeg.transit) { + to = GraphHopperTransit.createQueryPointForCoord(nextLeg.toCoordinate); + toName = nextLeg.to; + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + toName, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated + * by GH in case the OTP starting point as far enough from + * the original starting point + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + leg.from, + route); + itinerary.legs.unshift(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else if (index === itinerary.legs.length - 1) { + let to = this._query.filledPoints.last(); + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toLoc = to.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceFromEndLeg = + toLoc.get_distance_from(endLegLoc) * 1000; + let distanceFromStartLeg = + toLoc.get_distance_from(startLegLoc) * 1000; + let previousLeg = itinerary.legs[itinerary.legs.length - 2]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceFromStartLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceFromStartLeg - distanceFromEndLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the final leg of the itinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * ending coordinate from the input query + * also replace a transit leg at the end with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the previous step in the itinerary + * due to similar reasons + */ + let finalTransitLeg; + let insertIndex; + if (leg.transit && previousLeg && !previousLeg.transit) { + /* if we optimize away the final transit leg, and the + * previous leg is a walking one, "fold" both into a + * single walking leg */ + finalTransitLeg = previousLeg; + insertIndex = index -1; + itinerary.legs.pop(); + } else { + finalTransitLeg = leg; + insertIndex = index; + } + let from = + GraphHopperTransit.createQueryPointForCoord(finalTransitLeg.fromCoordinate); + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + finalTransitLeg.from, + to.place.name, route); + itinerary.legs[insertIndex] = newLeg; + this._recalculateItineraryRecursive(itinerary, + insertIndex + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated by GH in + * case the OTP end point as far enough from the original + * end point + */ + let from = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + leg.to, to.place.name, route); + itinerary.legs.push(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + /* if an intermediate leg is a walking one, and it's distance is + * above the threashhold distance, calculate an exact route + */ + if (!leg.transit && leg.distance >= MIN_WALK_ROUTING_DISTANCE) { + let from = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + + /* if the next leg is the final one of the itinerary, + * and it's shorter than the "optimize away" distance, + * create a walking leg all the way to the final destination + */ + let nextLeg = itinerary.legs[index + 1]; + if (index === itinerary.legs.length - 2 && + nextLeg.distance <= MIN_TRANSIT_LEG_DISTANCE) { + to = this._query.filledPoints.last(); + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, leg.from, + leg.to, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, + index + 1, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + callback(itinerary); + } + } + + _createItineraries(itineraries) { + return itineraries.map((itinerary) => this._createItinerary(itinerary)); + } + + _createItinerary(itinerary) { + let legs = this._createLegs(itinerary.legs); + return new TransitPlan.Itinerary({ duration: itinerary.duration, + transfers: itinerary.transfers, + departure: itinerary.startTime, + arrival: itinerary.endTime, + legs: legs}); + } + + _createLegs(legs) { + return legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + } + + /* check if a string is a valid hex RGB string */ + _isValidHexColor(string) { + if (string && string.length === 6) { + let regex = /^[A-Fa-f0-9]/; + + return string.match(regex); + } + + return false; + } + + _createLeg(leg, index, legs) { + let polyline = EPAF.decode(leg.legGeometry.points); + let color = leg.routeColor && this._isValidHexColor(leg.routeColor) ? + leg.routeColor : null; + let textColor = leg.routeTextColor && this._isValidHexColor(leg.routeTextColor) ? + leg.routeTextColor : null; + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !leg.transitLeg ? this._query.filledPoints[0].place.name : + leg.from.name; + let to = + last && !leg.transitLeg ? this._query.filledPoints.last().place.name : + leg.to.name; + + let result = new TransitPlan.Leg({ departure: leg.from.departure, + arrival: leg.to.arrival, + from: from, + to: to, + headsign: leg.headsign, + fromCoordinate: [leg.from.lat, + leg.from.lon], + toCoordinate: [leg.to.lat, + leg.to.lon], + route: leg.route, + routeType: leg.routeType, + polyline: polyline, + isTransit: leg.transitLeg, + distance: leg.distance, + duration: leg.duration, + agencyName: leg.agencyName, + agencyUrl: leg.agencyUrl, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + color: color, + textColor: textColor, + tripShortName: leg.tripShortName }); + + if (leg.transitLeg && leg.intermediateStops) + result.intermediateStops = this._createIntermediateStops(leg); + else if (!this._onlyTransitData) + result.walkingInstructions = this._createTurnpoints(leg, polyline); + + return result; + } + + _createIntermediateStops(leg) { + let stops = leg.intermediateStops; + let intermediateStops = + stops.map((stop) => this._createIntermediateStop(stop, leg)); + + /* instroduce an extra stop at the end (in additional to the + * intermediate stops we get from OTP + */ + intermediateStops.push(new TransitPlan.Stop({ name: leg.to.name, + arrival: leg.to.arrival, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [leg.to.lat, + leg.to.lon] })); + return intermediateStops; + } + + _createIntermediateStop(stop, leg) { + return new TransitPlan.Stop({ name: stop.name, + arrival: stop.arrival, + departure: stop.departure, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [stop.lat, stop.lon] }); + } + + /** + * Create a turnpoints list on the same format we use with GraphHopper + * from OpenTripPlanner walking steps + */ + _createTurnpoints(leg, polyline) { + if (leg.steps) { + let steps = leg.steps; + let startPoint = new Route.TurnPoint({ + coordinate: polyline[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let turnpoints = [startPoint]; + steps.forEach((step) => { + turnpoints.push(this._createTurnpoint(step)); + }); + + let endPoint = new Route.TurnPoint({ + coordinate: polyline.last(), + type: Route.TurnPoint.END, + distance: 0, + instruction:_("Arrive") + }); + + turnpoints.push(endPoint); + + return turnpoints; + } else { + return null; + } + } + + _createTurnpoint(step) { + let coordinate = new Champlain.Coordinate({ latitude: step.lat, + longitude: step.lon }); + let turnpoint = new Route.TurnPoint({ + coordinate: coordinate, + type: this._getTurnpointType(step), + distance: step.distance, + instruction: this._getTurnpointInstruction(step) + }); + + return turnpoint; + } + + _getTurnpointType(step) { + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + return Route.TurnPointType.CONTINUE; + case 'LEFT': + return Route.TurnPointType.LEFT; + case 'SLIGHTLY_LEFT': + return Route.TurnPointType.SLIGHT_LEFT; + case 'HARD_LEFT': + return Route.TurnPointType.SHARP_LEFT; + case 'RIGHT': + return Route.TurnPointType.RIGHT; + case 'SLIGHTLY_RIGHT': + return Route.TurnPointType.SLIGHT_RIGHT; + case 'HARD_RIGHT': + return Route.TurnPointType.SHARP_RIGHT; + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': + return Route.TurnPointType.ROUNDABOUT; + case 'ELEVATOR': + return Route.TurnPointType.ELEVATOR; + case 'UTURN_LEFT': + return Route.TurnPointType.UTURN_LEFT; + case 'UTURN_RIGHT': + return Route.TurnPointType.UTURN_RIGHT; + default: + return null; + } + } + + _getTurnpointInstruction(step) { + let street = !step.bogusName ? step.streetName : null; + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + if (street) + return _("Continue on %s").format(street); + else + return _("Continue"); + case 'LEFT': + if (street) + return _("Turn left on %s").format(street); + else + return _("Turn left"); + case 'SLIGHTLY_LEFT': + if (street) + return _("Turn slightly left on %s").format(street); + else + return _("Turn slightly left"); + case 'HARD_LEFT': + if (street) + return _("Turn sharp left on %s").format(street); + else + return _("Turn sharp left"); + case 'RIGHT': + if (street) + return _("Turn right on %s").format(street); + else + return _("Turn right"); + case 'SLIGHTLY_RIGHT': + if (street) + return _("Turn slightly right on %s").format(street); + else + return _("Turn slightly right"); + case 'HARD_RIGHT': + if (street) + return _("Turn sharp right on %s").format(street); + else + return _("Turn sharp right"); + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': { + let exit = step.exit; + + if (exit) + return _("At the roundabout, take exit %s").format(exit); + else if (street) + return _("At the roundabout, take exit to %s").format(street); + else + return _("Take the roundabout"); + } + case 'ELEVATOR': { + if (street) + return _("Take the elevator and get off at %s").format(street); + else + return _("Take the elevator"); + } + case 'UTURN_LEFT': + if (street) + return _("Make a left u-turn onto %s").format(street); + else + return _("Make a left u-turn"); + case 'UTURN_RIGHT': + if (street) + return _("Make a right u-turn onto %s").format(street); + else + return _("Make a right u-turn"); + default: + return ''; + } + } +}; diff --git a/src/transitplugins/opendataCH.js b/src/transitplugins/opendataCH.js new file mode 100644 index 00000000..62fb972f --- /dev/null +++ b/src/transitplugins/opendataCH.js @@ -0,0 +1,544 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swiss national + * opendata.ch transit journey planning API. + * + * API docs for opendata.ch journey planning can be found at: + * https://transport.opendata.ch/docs.html + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HVT = imports.hvt; +const HTTP = imports.http; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://transport.opendata.ch'; +const API_VERSION = 'v1'; + +const Transportations = { + TRAIN: 'train', + TRAM: 'tram', + SHIP: 'ship', + BUS: 'bus', + CABLEWAY: 'cableway' +}; + +/** + * These are not documented in the API documentation, so had to + * reverse-engineer by trial-and-error. + */ +const Category = { + // bus + B: 'B', + NFB: 'NFB', + NFO: 'NFO', + BUS: 'BUS', + + // tram + NFT: 'NFT', + TRAM: 'TRAM', + T: 'T', + + // metro + M: 'M', + + // urban rail + R: 'R', + S: 'S', + + // regional rail + RE: 'RE', + + // interregional rail + IR: 'IR', + + // intercity rail + IC: 'IC', + ICE: 'ICE', + + // night trains + N: 'N', + SN: 'SN', + + // funicular + FUN: 'FUN', + + // water transport + BAT: 'BAT' +}; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpendataCH = class OpendataCH { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaLocations = []; + + if (filledPoints.length > 7) { + Utils.debug('This plugin supports at most five via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else { + if (filledPoints.length > 2) + this._fetchNearbyLocations(filledPoints.slice(1, -1)); + else + this._fetchResults(); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + // if there's only a walking-only itinerary, don't try to fetch more + if (this._plan.itineraries.length === 1 && + this._plan.itineraries[0].legs.length === 1 && + !this._plan.itineraries[0].legs[0].transit) { + this._plan.noMoreResults(); + } else { + this._fetchResults(); + } + } + + _fetchNearbyLocations(points) { + this._fetchNearbyLocationsRecursive(points, 0); + } + + _fetchNearbyLocationsRecursive(points, index) { + if (index === points.length) { + this._fetchResults(); + } else { + let location = points[index].place.location; + let query = new HTTP.Query({ x: location.latitude, + y: location.longitude }); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/locations?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get location: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + + Utils.debug('locations: ' + JSON.stringify(result, null, 2)); + + if (result.stations && result.stations.length > 0) { + let station = this._getBestStation(result.stations); + + if (station) { + this._viaLocations.push(station); + this._fetchNearbyLocationsRecursive(points, index + 1); + } else { + Utils.debug('No suitable via location found'); + this._plan.noRouteFound(); + } + } else { + Utils.debug('No via location found'); + this._plan.noRouteFound(); + } + } + }); + } + } + + _getBestStation(stations) { + let name = null; + + for (let i = 0; i < stations.length; i++) { + if (stations[i].icon) + name = stations[i].name; + } + + return name; + } + + _fetchResults() { + let query = this._getQuery(); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/connections?' + + query.toString(true)); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + Utils.debug('uri: ' + uri.to_string(true)); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + + if (result.connections && result.connections.length > 0) { + let itineraries = this._createItineraries(result.connections); + + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } else { + this._plan.noRouteFound(); + } + } + }); + } + + _createItineraries(connections) { + return connections.map((connection) => this._createItinerary(connection)); + } + + _createItinerary(connection) { + let legs = this._createLegs(connection.sections); + let duration = + connection.to.arrivalTimestamp - connection.from.departureTimestamp; + let from = connection.from; + let to = connection.to; + let [startTime,] = this._parseTime(from.departure); + let [endTime,] = this._parseTime(to.arrival); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time string into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(timeString) { + let dateTime = GLib.DateTime.new_from_iso8601(timeString, null); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + _createLegs(sections) { + let result = sections.map((section, index, sections) => + this._createLeg(section, index, sections)); + + return result; + } + + _createLeg(section, index, sections) { + let isTransit = section.journey; + + let departure = section.departure; + let arrival = section.arrival; + let journey = section.journey; + + if (!departure) + throw new Error('Missing departure element'); + if (!arrival) + throw new Error('Missing arrival element'); + + let first = index === 0; + let last = index === sections.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !journey ? this._query.filledPoints[0].place.name : + departure.station.name; + let to = + last && !journey ? this._query.filledPoints.last().place.name : + arrival.station.nam; + let [departureTime, tzOffset] = this._parseTime(departure.departure); + let [arrivalTime,] = this._parseTime(arrival.arrival); + let route = journey ? journey.number : null; + let routeType = + journey ? this._getHVTCodeFromCategory(journey.category) : null; + let agencyName = journey ? journey.operator : null; + let polyline = this._createPolylineForSection(section, index, sections); + let duration = arrival.arrivalTimestamp - departure.departureTimestamp; + let headsign = journey ? journey.to : null; + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + let result = new TransitPlan.Leg({ departure: departureTime, + arrival: arrivalTime, + from: from, + to: to, + headsign: headsign, + fromCoordinate: [departureX, + departureY], + toCoordinate: [arrivalX, + arrivalY], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + duration: duration, + agencyName: agencyName, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (journey) + result.intermediateStops = this._createIntermediateStops(journey); + + return result; + } + + _getHVTCodeFromCategory(category) { + switch (category) { + case Category.B: + case Category.BUS: + case Category.NFB: + case Category.NFO: + return HVT.BUS_SERVICE; + case Category.TRAM: + case Category.NFT: + case Category.T: + return HVT.TRAM_SERVICE; + case Category.M: + return HVT.METRO_SERVICE; + case Category.R: + case Category.S: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case Category.RE: + return HVT.REGIONAL_RAIL_SERVICE; + case Category.IR: + return HVT.INTER_REGIONAL_RAIL_SERVICE; + case Category.IC: + case Category.ICE: + return HVT.LONG_DISTANCE_TRAINS; + case Category.N: + case Category.SN: + return HVT.SLEEPER_RAIL_SERVICE; + case Category.FUN: + return HVT.FUNICULAR_SERVICE; + case Category.BAT: + return HVT.WATER_TRANSPORT_SERVICE; + default: + return null; + } + } + + _getCoordsForSection(section, index, sections) { + let departureX = section.departure.location.coordinate.x; + let departureY = section.departure.location.coordinate.y; + let arrivalX = section.arrival.location.coordinate.x; + let arrivalY = section.arrival.location.coordinate.y; + + if (sections.length === 1) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } else if (index === 0) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + } else if (index === sections.length - 1) { + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } + + return [departureX, departureY, arrivalX, arrivalY]; + } + + _createPolylineForSection(section, index, sections) { + let polyline; + + if (section.journey) { + polyline = []; + + section.journey.passList.forEach((pass) => { + let coordinate = pass.location.coordinate; + polyline.push(new Champlain.Coordinate({ latitude: coordinate.x, + longitude: coordinate.y })); + }); + } else { + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + polyline = + [new Champlain.Coordinate({ latitude: departureX, + longitude: departureY }), + new Champlain.Coordinate({ latitude: arrivalX, + longitude: arrivalY })]; + } + + return polyline; + } + + _createIntermediateStops(journey) { + let result = []; + + journey.passList.forEach((pass, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(pass)); + }); + + return result; + } + + _createIntermediateStop(pass) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (pass.departure) + [departure, departureTzOffset] = this._parseTime(pass.departure) + if (pass.arrival) + [arrival, arrivalTzOffset] = this._parseTime(pass.arrival); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: pass.station.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [pass.location.coordinate.x, + pass.location.coordinate.y] }); + } + + // get a time suitably formatted for the the query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParam(point) { + let location = point.place.location; + + return location.latitude + ',' + location.longitude; + } + + _getQuery(vias) { + let points = this._query.filledPoints; + let transitOptions = this._query.transitOptions; + let params = { from: this._getPlaceParam(points[0]), + to: this._getPlaceParam(points.last()) }; + + if (!transitOptions.showAllTransitTypes) + params.transportations = this._getTransportations(transitOptions); + + if (this._query.arriveBy) + params.isArrivalTime = 1; + + /* the "page" parameter of the API seems broken for "arrive by" + * searches, so instead search by updated time + */ + if (this._extendPrevious) { + let itineraries = this._plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + let query = new HTTP.Query(params); + + if (this._viaLocations.length > 0) { + this._viaLocations.forEach((p) => { query.add('via', p); }); + } + + return query; + } + + _getTransportations(transitOptions) { + let transportations = []; + + this._query.transitOptions.transitTypes.forEach((type) => { + let transportation = this._transportationForTransitType(type); + + if (transportation) + transportations.push(transportation); + }); + + return transportations; + } + + _transportationForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Transportations.BUS; + case TransitPlan.RouteType.TRAM: + return Transportations.TRAM; + case TransitPlan.RouteType.TRAIN: + return Transportations.TRAIN; + case TransitPlan.RouteType.FERRY: + return Transportations.SHIP; + default: + return null; + } + } +} diff --git a/src/transitplugins/resrobot.js b/src/transitplugins/resrobot.js new file mode 100644 index 00000000..aada8d5f --- /dev/null +++ b/src/transitplugins/resrobot.js @@ -0,0 +1,627 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swedish national + * Resrobot transit journey planning API. + * + * API docs for Resrobot can be found at: + * https://www.trafiklab.se/api/resrobot-reseplanerare/dokumentation/sokresa + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://api.resrobot.se'; +const API_VERSION = 'v2'; + +// Timezone for timestamps returned by this provider +const NATIVE_TIMEZONE = 'Europe/Stockholm'; + +const ISO_8601_DURATION_REGEXP = new RegExp(/P((\d+)D)?T((\d+)H)?((\d+)M)?/); + +const Products = { + EXPRESS_TRAIN: 2, + REGIONAL_TRAIN: 4, + EXPRESS_BUS: 8, + LOCAL_TRAIN: 16, + SUBWAY: 32, + TRAM: 64, + BUS: 128, + FERRY: 256, + TAXI: 512 +}; + +const LegType = { + WALK: 'WALK', + TRANSIT: 'JNY', + TRANSFER: 'TRSF' +}; + +const CatCode = { + EXPRESS_TRAIN: 1, + REGIONAL_TRAIN: 2, + EXPRESS_BUS: 3, + LOCAL_TRAIN: 4, + SUBWAY: 5, + TRAM: 6, + BUS: 7, + FERRY: 8, + TAXI: 9 +}; + +const MAX_NUM_NEARBY_STOPS = 5; +const NEARBY_STOPS_SEARCH_RADIUS = 500; + +// ignore walking legs at the beginning/end when below this distance +const DISTANCE_THREASHOLD_TO_IGNORE = 50; + +// search radius to search for walk-only journeys +const WALK_SEARCH_RADIUS = 2000; + +// maximum distance for walk-only journey +const MAX_WALK_ONLY_DISTANCE = 2500; + +var Resrobot = class Resrobot { + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._key = params.key; + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + + if (!this._key) + throw new Error('missing key'); + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaId = null; + + if (filledPoints.length > 3) { + Utils.debug('This plugin supports at most one via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (filledPoints.length === 2) { + this._fetchResults(); + } else { + let lat = filledPoints[1].place.location.latitude; + let lon = filledPoints[1].place.location.longitude; + + this._fetchNearbyStops(lat, lon, MAX_NUM_NEARBY_STOPS, + NEARBY_STOPS_SEARCH_RADIUS, + () => this._fetchResults()); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + + if ((!this._scrF && !this._query.arriveBy) || + (!this._scrB && this._query.arriveBy)) + this._noRouteFound(); + else + this._fetchResults(); + } + + _fetchNearbyStops(lat, lon, num, radius, callback) { + let query = new HTTP.Query(this._getNearbyStopsQueryParams(lat, lon, + num, radius)); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + + '/location.nearbystops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get nearby stops: ' + message.status_code); + this._noRouteFound(); + } else { + try { + let result = JSON.parse(message.response_body.data); + let stopLocations = result.StopLocation; + + Utils.debug('nearby stops: ' + JSON.stringify(result, null, 2)); + + if (stopLocations && stopLocations.length > 0) { + let stopLocation = stopLocations[0]; + + this._viaId = stopLocation.id; + callback(); + } else { + Utils.debug('No nearby stops found'); + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + _fetchResults() { + let query = new HTTP.Query(this._getQueryParams()); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/trip?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + /* No routes found. If this is the first search + * (not "load more") and the distance is short + * enough, generate a walk-only itinerary + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && + distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, + end, + route); + this._plan.updateWithNewItineraries([walkingItinerary]); + } else { + this._noRouteFound(); + } + }); + } else { + this._noRouteFound(); + } + } else { + try { + let result = JSON.parse(message.response_body.data); + + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + if (result.Trip) { + let itineraries = this._createItineraries(result.Trip); + + // store the back and forward references from the result + this._scrB = result.scrB; + this._scrF = result.scrF; + this._processItineraries(itineraries); + } else { + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + /* get total "as the crow flies" start, and end points, and distance for + * the query + */ + _getAsTheCrowFliesPointsAndDistanceForQuery() { + let start = this._query.filledPoints[0]; + let end = this._query.filledPoints.last(); + let startLoc = start.place.location; + let endLoc = end.place.location; + + return [start, end, endLoc.get_distance_from(startLoc) * 1000]; + } + + _processItineraries(itineraries) { + /* if this is the first request, and the distance is short enough, + * add an additional walking-only itinerary at the beginning + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, end, route); + + itineraries.unshift(walkingItinerary); + } + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + }); + } else { + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } + } + + _createWalkingOnlyItinerary(start, end, route) { + let walkingLeg = GraphHopperTransit.createWalkingLeg(start, end, + start.place.name, + end.place.name, + route); + let duration = route.duration; + /* if the query has no date, just use a fake, since only the time + * is relevant for displaying in this case + */ + let date = this._query.date || '2019-01-01'; + let time = this._query.time + ':00'; + + let [timestamp, tzOffset] = + this._query.time ? this._parseTime(time, date) : + this._getTimestampAndTzOffsetNow(); + + if (this._query.arriveBy) { + walkingLeg.arrival = timestamp; + walkingLeg.departure = timestamp - route.time; + } else { + walkingLeg.departure = timestamp; + walkingLeg.arrival = timestamp + route.time; + } + + walkingLeg.agencyTimezoneOffset = tzOffset; + + let walkingItinerary = + new TransitPlan.Itinerary({ legs: [walkingLeg]} ); + + walkingItinerary.adjustTimings(); + + return walkingItinerary; + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionality as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._plan.noMoreResults(); + } else { + this._plan.noRouteFound(); + } + } + + _createItineraries(trips) { + return trips.map((trip) => this._createItinerary(trip)); + } + + _createItinerary(trip) { + let legs = this._createLegs(trip.LegList.Leg); + let duration = this._parseDuration(trip.duration); + let origin = trip.LegList.Leg[0].Origin; + let destination = trip.LegList.Leg.last().Destination; + let [startTime,] = this._parseTime(origin.time, origin.date); + let [endTime,] = this._parseTime(destination.time, destination.date); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time and date string into a timestamp into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(time, date) { + let timeText = '%sT%s'.format(date, time); + let dateTime = GLib.DateTime.new_from_iso8601(timeText, this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Get absolute timestamp for "now" in ms and timezone offset in the + * native timezone of the provider's native timezone @ "now" + */ + _getTimestampAndTzOffsetNow() { + let dateTime = GLib.DateTime.new_now(this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Parse a subset of ISO 8601 duration expressions. + * Handle hour and minute parts + */ + _parseDuration(duration) { + let match = duration.match(ISO_8601_DURATION_REGEXP); + + if (match) { + let [,,d,,h,,min] = match; + + return (d || 0) * 86400 + (h || 0) * 3600 + (min || 0) * 60; + } else { + Utils.debug('Unknown duration: ' + duration); + + return -1; + } + } + + _createLegs(legs) { + let result = legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + + if (this._canLegBeIgnored(result[0])) + result.shift(); + + if (this._canLegBeIgnored(result.last())) + result.splice(-1); + + return result; + } + + /* determines if a leg can ignored at the start or end, to catch the + * case when the user probably meant to search for a trip from a transit + * stop anyway + */ + _canLegBeIgnored(leg) { + if (!leg.isTransit) { + /* check that the distance is below the threshold and also that + * the duration is below 1 min, since the API in some occasions + * apparently gives distance 0, even though a walking leg has + * longer duration, and spans a distance in coordinates. + */ + return leg.distance <= DISTANCE_THREASHOLD_TO_IGNORE && + leg.duration <= 60; + } else { + return false; + } + } + + _createLeg(leg, index, legs) { + let isTransit; + + if (leg.type === LegType.TRANSIT) + isTransit = true; + else if (leg.type === LegType.WALK || leg.type === LegType.TRANSFER) + isTransit = false; + else + throw new Error('Unknown leg type: ' + leg.type); + + let origin = leg.Origin; + let destination = leg.Destination; + let product = leg.Product; + + if (!origin) + throw new Error('Missing Origin element'); + if (!destination) + throw new Error('Missing Destination element'); + if (!product && isTransit) + throw new Error('Missing Product element for transit leg'); + + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !isTransit ? this._query.filledPoints[0].place.name : + origin.name; + let to = + last && !isTransit ? this._query.filledPoints.last().place.name : + destination.name; + let [departure, tzOffset] = this._parseTime(origin.time, origin.date); + let [arrival,] = this._parseTime(destination.time, destination.date); + let route = isTransit ? product.num : null; + let routeType = + isTransit ? this._getHVTCodeFromCatCode(product.catCode) : null; + let agencyName = isTransit ? product.operator : null; + let agencyUrl = isTransit ? product.operatorUrl : null; + let polyline = this._createPolylineForLeg(leg); + let duration = leg.duration ? this._parseDuration(leg.duration) : null; + + let result = new TransitPlan.Leg({ departure: departure, + arrival: arrival, + from: from, + to: to, + headsign: leg.direction, + fromCoordinate: [origin.lat, + origin.lon], + toCoordinate: [destination.lat, + destination.lon], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + distance: leg.dist, + duration: duration, + agencyName: agencyName, + agencyUrl: agencyUrl, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (isTransit) + result.intermediateStops = this._createIntermediateStops(leg); + + return result; + } + + _createPolylineForLeg(leg) { + let polyline; + + if (leg.Stops && leg.Stops.Stop) { + polyline = []; + + leg.Stops.Stop.forEach((stop) => { + polyline.push(new Champlain.Coordinate({ latitude: stop.lat, + longitude: stop.lon })); + }); + } else { + polyline = + [new Champlain.Coordinate({ latitude: leg.Origin.lat, + longitude: leg.Origin.lon }), + new Champlain.Coordinate({ latitude: leg.Destination.lat, + longitude: leg.Destination.lon })]; + } + + return polyline; + } + + _createIntermediateStops(leg) { + let result = []; + + if (!leg.Stops && !leg.Stops.Stop) + throw new Error('Missing Stops element'); + + leg.Stops.Stop.forEach((stop, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(stop)); + }); + + return result; + } + + _createIntermediateStop(stop) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (stop.depTime && stop.depDate) + [departure, departureTzOffset] = this._parseTime(stop.depTime, stop.depDate); + if (stop.arrTime && stop.arrDate) + [arrival, arrivalTzOffset] = this._parseTime(stop.arrTime, stop.arrDate); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: stop.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [stop.lat, stop.lon] }); + } + + _getHVTCodeFromCatCode(code) { + switch (parseInt(code)) { + case CatCode.EXPRESS_TRAIN: + return HVT.HIGH_SPEED_RAIL_SERVICE; + case CatCode.REGIONAL_TRAIN: + return HVT.REGIONAL_RAIL_SERVICE; + case CatCode.EXPRESS_BUS: + return HVT.EXPRESS_BUS_SERVICE; + case CatCode.LOCAL_TRAIN: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case CatCode.SUBWAY: + return HVT.METRO_SERVICE; + case CatCode.TRAM: + return HVT.TRAM_SERVICE; + case CatCode.BUS: + return HVT.BUS_SERVICE; + case CatCode.FERRY: + return HVT.WATER_TRANSPORT_SERVICE; + case CatCode.TAXI: + return HVT.COMMUNAL_TAXI_SERVICE; + default: + Utils.debug('Unknown catCode: ' + code); + return HVT.MISCELLANEOUS_SERVICE; + } + } + + _getQueryParams() { + let points = this._query.filledPoints; + let originLocation = points[0].place.location; + let destLocation = points.last().place.location; + let transitOptions = this._query.transitOptions; + let params = { key: this._key, + originCoordLat: originLocation.latitude, + originCoordLong: originLocation.longitude, + destCoordLat: destLocation.latitude, + destCoordLong: destLocation.longitude, + format: 'json' }; + + if (!transitOptions.showAllTransitTypes) + params.products = this._getAllowedProductsForQuery(); + + if (this._viaId) + params.viaId = this._viaId; + + if (this._extendPrevious) { + params.context = this._query.arriveBy ? this._scrB : this._scrF; + } else { + if (this._query.arriveBy) + params.searchForArrival = 1; + + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + return params; + } + + _getNearbyStopsQueryParams(lat, lon, num, radius) { + let params = { key: this._key, + originCoordLat: lat, + originCoordLong: lon, + maxNo: num, + r: radius, + format: 'json' }; + + return params; + } + + _getAllowedProductsForQuery() { + let products = 0; + + this._query.transitOptions.transitTypes.forEach((type) => { + products += this._productCodeForTransitType(type); + }); + + return products; + } + + _productCodeForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Products.BUS + Products.EXPRESS_BUS + Products.TAXI; + case TransitPlan.RouteType.TRAM: + return Products.TRAM; + case TransitPlan.RouteType.TRAIN: + return Products.EXPRESS_TRAIN + Products.LOCAL_TRAIN; + case TransitPlan.RouteType.SUBWAY: + return Products.SUBWAY; + case TransitPlan.RouteType.FERRY: + return Products.FERRY; + default: + return 0; + } + } +} diff --git a/src/translations.js b/src/translations.js new file mode 100644 index 00000000..417811e4 --- /dev/null +++ b/src/translations.js @@ -0,0 +1,308 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const C_ = imports.gettext.dgettext; + +const GLib = imports.gi.GLib; + +const Time = imports.time; +const Utils = imports.utils; + +/* Translate an opening time specification tag value. + * from OSM into a "two-dimensional" (array-of-arrays) grid of human-readable + * strings (marked for translation) suitable for laying out in aligned rows + * and columns in a GtkGrid in the place bubbles. + * + * Some limitations are imposed to keep the translations manageable: + * A maximum of three components (separated by ; in the tag) are considered. + * For each component a maximum of three day intervals are considered. + * Each day interval can have one or two time intervals specified. + * For each of these limitations, the input string is passed on unmodified + * if the format is outside the supported cases, so no data should be dropped. + * Currently only specifying weekdays and public and school holidays are + * supported. + * Other variants, such as month-specific opening hours and other interval + * variants are not currently supported. In these cases, the data is + * returned as-is. + * + * The definition for the opening_hours tag can be found at: + * http://wiki.openstreetmap.org/wiki/Key:opening_hours + */ +function translateOpeningHours(string) { + if (string === '24/7' || string === 'Mo-Su 00:00-24:00' || + string === '00:00-24:00') + return [[_("Around the clock")]]; + else if (string === 'sunrise-sunset') + return [[_("From sunrise to sunset")]]; + else { + /* split "components" */ + let splitParts = string.split(';'); + + return splitParts.map(p => _translateOpeningHoursPart(p.trim())); + } + +} + +/* + * Parse a time range component, comprised of either a single time range, or + * day and time ranges, such as: + * 10:00-18:00 + * 09:00-12:00,13:00-19:00 + * Mo-Fr 10:00-19:00 + * Mo-We,Fr 10:00-12:00,13:00-17:00 + * Mo-We,Fr 10:00-12:00, 13:00-17:00 + */ +function _translateOpeningHoursPart(string) { + let splitString = string.split(/\s+/); + let len = splitString.length; + + if (len === 1) { + return [_translateOpeningHoursTimeIntervalList(string.trim())]; + } else if (len === 2 || len === 3) { + let dayIntervalSpec = + _translateOpeningHoursDayIntervalList(splitString[0].trim()); + let intervalString = + len === 2 ? splitString[1].trim() : + splitString[1].trim() + splitString[2].trim(); + let timeIntervalSpec = + _translateOpeningHoursTimeIntervalList(intervalString); + + return [Utils.firstToLocaleUpperCase(dayIntervalSpec), + timeIntervalSpec]; + } else { + // for an unknown format, just output the raw value + return [string]; + } +} + +/* + * Parse a day interval, such as: + * Mo-Fr + * Mo,We,Th-Fr + */ +function _translateOpeningHoursDayIntervalList(string) { + let splitParts = string.split(','); + let interval1, interval2, interval3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursDayInterval(splitParts[0].trim()); + case 2: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + /* Translators: + * This represents a format string consisting of two day interval + * specifications. + * For example: + * Mo-Fr,Sa + * where the "Mo-Fr" and "Sa" parts are replaced by the %s + * place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s").format(interval1, interval2); + case 3: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + interval3 = _translateOpeningHoursDayInterval(splitParts[2].trim()); + /* Translators: + * This represents a format string consisting of three day interval + * specifications. + * For example: + * Mo-We,Fr,Su + * where the "Mo-We", "Fr", and "Su" parts are replaced by the + * %s place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s,%s"). + format(interval1, interval2, interval3); + default: + // for other formats, just return the raw string + return string; + } +} + +/* + * Parse a day interval consisting of either a single day + * or a range, such as: + * Mo-Fr + * Tu + */ +function _translateOpeningHoursDayInterval(string) { + let splitString = string.split('-'); + + // special case: Mo-Su treated as "every day" + if (string === 'Mo-Su') + return _("Every day"); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursDay(splitString[0].trim()); + case 2: + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This represents a range of days with a starting and ending day. + */ + return C_("day range", "%s-%s").format( + _translateOpeningHoursDay(from), + _translateOpeningHoursDay(to)); + default: + // unknown format, just return the input + return string; + } +} + +function _translateOpeningHoursDay(string) { + if (string === 'PH') + return _("Public holidays"); + if (string === 'SH') + return _("School holidays"); + + // create a dummy DateTime instance which is guaranteed to be a Monday + let time = GLib.DateTime.new_local(1, 1, 1, 0, 0, 0.0); + let days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + for (let i = 0; i < days.length; i++) { + if (string === days[i]) { + time = time.add_days(i); + return time.format('%a'); + } + } + + // unknown value, just return the input + return string; +} + +/* + * Parse a time interval list, such as: + * 10:00-20:00 + * 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursTimeIntervalList(string) { + let splitString = string.split(','); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursTimeInterval(splitString[0].trim()); + case 2: + let interval1 = splitString[0].trim(); + let interval2 = splitString[1].trim(); + + /* Translators: + * This is a list with two time intervals, such as: + * 09:00-12:00, 13:00-14:00 + * The intervals are represented by the %s place holders and + * appropriate white space or connected phrase could be modified by + * the translation. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval list", "%s, %s").format( + _translateOpeningHoursTimeInterval(interval1), + _translateOpeningHoursTimeInterval(interval2)); + default: + // for other number of components, just return the input + return string; + } +} + +/* + * Parse a time interval + */ +function _translateOpeningHoursTimeInterval(string) { + if (string === 'off') + return _("not open"); + + let splitString = string.split('-'); + + if (splitString.length == 2) { + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This is a time interval with a starting and an ending time. + * The time values are represented by the %s place holders and + * appropriate white spacing or connecting phrases can be set by the + * translation as needed. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval", "%s-%s").format( + _translateOpeningHoursTime(from), + _translateOpeningHoursTime(to)); + } else { + // unknown time interval format, just return the input + return string; + } +} + +/* + * Parse a time. + */ +function _translateOpeningHoursTime(string) { + let splitString = string.split(':'); + + if (splitString.length == 2) { + let h = splitString[0]; + let min = splitString[1]; + + // if the parts aren't numbers + if (h % 1 !== 0 || min % 1 !== 0) + return string; + + // if the hours or minute components are out of range + if (h > 24 || h < 0 || min > 59 || min < 0) + return string; + + return Time.formatTimeFromHoursAndMins(h, min); + } else { + // unknown format, just return input + return string; + } +} + +function translateReligion(string) { + switch(string) { + case 'animist': return _("Animism"); + case 'bahai': return_("Bahá'í"); + case 'buddhist': return _("Buddhism"); + case 'caodaism': return _("Caodaism"); + case 'christian': return _("Christianity"); + case 'confucian': return _("Confucianism"); + case 'hindu': return _("Hinduism"); + case 'jain': return _("Jainism"); + case 'jewish': return _("Judaism"); + case 'muslim': return _("Islam"); + case 'multifaith': return _("Multiple Religions"); + case 'pagan': return _("Paganism"); + case 'pastafarian': return _("Pastafarianism"); + case 'scientologist': return _("Scientology"); + case 'shinto': return _("Shinto"); + case 'sikh': return _("Sikhism"); + case 'spiritualist': return _("Spiritualism"); + case 'taoist': return _("Taoism"); + case 'unitarian_universalist': return _("Unitarian Universalism"); + case 'voodoo': return _("Voodoo"); + case 'yazidi': return _("Yazidism"); + case 'zoroastrian': return _("Zoroastrianism"); + default: return null; + } +} diff --git a/src/turnPointMarker.js b/src/turnPointMarker.js new file mode 100644 index 00000000..c5e872ee --- /dev/null +++ b/src/turnPointMarker.js @@ -0,0 +1,123 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Dario Di Nucci + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const Utils = imports.utils; + +var TurnPointMarker = GObject.registerClass( +class TurnPointMarker extends MapMarker.MapMarker { + + _init(params) { + this._queryPoint = params.queryPoint; + delete params.queryPoint; + + this._turnPoint = params.turnPoint; + delete params.turnPoint; + + this._transitStop = params.transitStop; + delete params.transitStop; + + this._transitLeg = params.transitLeg; + delete params.transitLeg; + + let latitude; + let longitude; + + if (this._turnPoint) { + latitude = this._turnPoint.coordinate.get_latitude(); + longitude = this._turnPoint.coordinate.get_longitude(); + } else { + latitude = this._transitStop.coordinate[0]; + longitude = this._transitStop.coordinate[1]; + } + + params.place = new Place.Place({ + location: new Location.Location({ latitude: latitude, + longitude: longitude }) }); + super._init(params); + + let actor; + if (this._queryPoint) { + this.draggable = true; + this.connect('drag-finish', () => this._onMarkerDrag()); + actor = this._actorFromIconName(this._turnPoint.iconName, 0); + } else { + let color = this._getColor(); + actor = this._actorFromIconName('maps-point-end-symbolic', + 0, + color); + } + this.add_actor(actor); + } + + _getColor() { + /* Use the route color from the transit leg when representing part of + * a transit trip, otherwise let the fallback functionality of the + * utility function use a GNOMEish blue color for turn-by-turn routing. + */ + let color = this._transitLeg ? this._transitLeg.color : null; + + return new Gdk.RGBA({ red: Color.parseColor(color, 0, 33 / 255), + green: Color.parseColor(color, 1, 93 / 255), + blue: Color.parseColor(color, 2, 155 / 255), + alpha: 255 }); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } + + goTo() { + let view = this._mapView.view; + let turnPointZoomLevel = 15; + let latitude = this.latitude; + let longitude = this.longitude; + + view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + view.goto_duration = 0; + + Utils.once(view, 'animation-completed', () => { + view.zoom_level = turnPointZoomLevel; + view.center_on(latitude, longitude); + }); + + view.go_to(this.latitude, this.longitude); + } + + _onMarkerDrag() { + let query = Application.routeQuery; + let place = new Place.Place({ + location: new Location.Location({ latitude: this.latitude.toFixed(5), + longitude: this.longitude.toFixed(5) }) }); + + this._queryPoint.place = place; + } +}); diff --git a/src/urls.js b/src/urls.js new file mode 100644 index 00000000..96b698f2 --- /dev/null +++ b/src/urls.js @@ -0,0 +1,104 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +// Matches URLs for OpenStreetMap (for addressing objects or coordinates) +const OSM_URL_REGEX = new RegExp(/https?:\/\/(www\.)?openstreetmap\.org./); + +/** + * For URLs identifiable as pointing to a coordinate + * e.g. an openstreetmap.org URL with lat and lon query parameters, + * returns [lat, lon, optional zoom], otherwise []. + */ +function parseAsCoordinateURL(url) { + if (url.match(OSM_URL_REGEX)) { + /* it seems #map= is not handle well by parse_params(), so just remove + * the # as a work-around + */ + let uri = GLib.Uri.parse(url.replace('#map=', 'map='), GLib.UriFlags.NONE); + let params = GLib.Uri.parse_params(uri.get_query(), -1, '&', + GLib.UriParamsFlags.NONE); + + let lat = params.lat; + let lon = params.lon; + let mlat = params.mlat; + let mlon = params.mlon; + let zoom; + let map = params.map; + + if (map) { + let parts = map.split('/'); + + if (parts.length !== 3) { + return []; + } else { + zoom = parseInt(parts[0]); + lat = parseFloat(parts[1]); + lon = parseFloat(parts[2]); + } + } else if (mlat && mlon) { + lat = parseFloat(mlat); + lon = parseFloat(mlon); + + if (params.zoom) + zoom = parseInt(params.zoom); + } else if (lat && lon) { + lat = parseFloat(lat); + lon = parseFloat(lon); + + if (params.zoom) + zoom = parseInt(params.zoom); + } else { + return []; + } + + return [lat, lon, zoom]; + } else { + return []; + } +} + +/** + * For URLs addressing a specific OSM object (node, way, or relation), + * returns [type,id], otherwise []. + */ +function parseAsObjectURL(url) { + if (url.match(OSM_URL_REGEX)) { + let uri = GLib.Uri.parse(url, GLib.UriFlags.NONE); + let path = uri.get_path(); + let parts = path.split('/'); + + if (parts.length === 3 && parts[0] === '' && + (parts[1] === 'node' || + parts[1] === 'way' || + parts[1] === 'relation')) { + let id = parseInt(parts[2]); + + if (id > 0) + return [parts[1], id]; + } + } + + return []; +} diff --git a/src/userLocationMarker.js b/src/userLocationMarker.js new file mode 100644 index 00000000..6181d238 --- /dev/null +++ b/src/userLocationMarker.js @@ -0,0 +1,126 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; + +var AccuracyCircleMarker = GObject.registerClass( +class AccuracyCirleMarker extends Champlain.Point { + + _init(params) { + this.place = params.place; + delete params.place; + + params.color = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 25 }); + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.reactive = false; + + super._init(params); + } + + refreshGeometry(view) { + this.latitude = this.place.location.latitude; + this.longitude = this.place.location.longitude; + + let zoom = view.zoom_level; + let source = view.map_source; + let metersPerPixel = source.get_meters_per_pixel(zoom, + this.latitude, + this.longitude); + let size = this.place.location.accuracy * 2 / metersPerPixel; + + if (size > view.width || size > view.height) + this.hide(); + else { + this.size = size; + this.show(); + } + } +}); + +var UserLocationMarker = GObject.registerClass( +class UserLocationMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this._accuracyMarker = new AccuracyCircleMarker({ place: this.place }); + this.connect('notify::view-zoom-level', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::width', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::height', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._accuracyMarker.refreshGeometry(this._view); + + this.place.connect('notify::location', () => this._updateLocation()); + this._updateLocation(); + + this.connect('notify::visible', this._updateAccuracyCircle.bind(this)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: Math.floor(this.height / 2) }; + } + + _hasBubble() { + return true; + } + + addToLayer(layer) { + layer.add_marker(this._accuracyMarker); + layer.add_marker(this); + } + + _updateLocation() { + if (this._actor) { + this._actor.destroy(); + delete this._actor; + } + + if (this.place.location.heading > -1) { + this._actor = this._actorFromIconName('user-location-compass', 0); + this._actor.set_pivot_point(0.5, 0.5); + this._actor.set_rotation_angle(Clutter.RotateAxis.Z_AXIS, this.place.location.heading); + } else { + this._actor = this._actorFromIconName('user-location', 0); + } + this.add_actor(this._actor); + + this._updateAccuracyCircle(); + } + + _updateAccuracyCircle() { + if (this.visible && this.place.location.accuracy > 0) { + this._accuracyMarker.refreshGeometry(this._view); + } else { + this._accuracyMarker.visible = false; + } + } +}); diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 00000000..fe308472 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,501 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const GLib = imports.gi.GLib; +const Gdk = imports.gi.Gdk; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; +const ByteArray = imports.byteArray; + +var METRIC_SYSTEM = 1; +var IMPERIAL_SYSTEM = 2; + +//List of locales using imperial system according to glibc locale database +const IMPERIAL_LOCALES = ['unm_US', 'es_US', 'es_PR', 'en_US', 'yi_US']; + +// Matches all unicode stand-alone accent characters +const ACCENTS_REGEX = /[\u0300-\u036F]/g; + +// Regex matching e-mail addresses +const EMAIL_REGEX=/^[^\s@]+@[^\s@]+\.[^\s@]+$/ + +const _integerFormat = new Intl.NumberFormat([], { maximumFractionDigits: 0 }); +const _integerTwoDigitFormat = + new Intl.NumberFormat([], { minimumIntegerDigits: 2, + maximumFractionDigits: 0 }); + +let debugInit = false; +let measurementSystem = null; + +var debugEnabled = false; + +function debug(msg) { + if (!debugInit) { + let env = GLib.getenv('MAPS_DEBUG'); + if (env) + debugEnabled = true; + + debugInit = true; + } + + if (debugEnabled) { + log('DEBUG: ' + msg); + if (msg instanceof Error) + log(msg.stack); + } +} + +// Connect to a signal on an object and disconnect on its first emission. +function once(obj, signal, callback) { + let id = obj.connect(signal, function() { + obj.disconnect(id); + callback(); + }); +} + +function loadStyleSheet(file) { + let provider = new Gtk.CssProvider(); + provider.load_from_file(file); + Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), + provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +function addActions(actionMap, entries, settings = null) { + for(let name in entries) { + let entry = entries[name]; + let action = createAction(name, entry, settings); + + actionMap.add_action(action); + + if(entry.accels) + setAccelsForActionMap(actionMap, name, entry.accels); + } +} + +function setAccelsForActionMap(actionMap, actionName, accels) { + let app; + let prefix; + + if(actionMap instanceof Gtk.Application) { + app = actionMap; + prefix = "app"; + } else if(actionMap instanceof Gtk.Window) { + app = actionMap.application; + prefix = "win"; + } + app.set_accels_for_action(prefix + '.' + actionName, accels); +} + +function createAction(name, + { state, paramType, onActivate, onChangeState, setting }, + settings = null) { + let action; + + if (setting && settings) { + action = settings.create_action(setting); + + if (onChangeState) + action.connect('notify::state', onChangeState); + } else { + let entry = { name: name }; + + if (Array.isArray(state)) { + let [type, value] = state; + entry.state = new GLib.Variant.new(type, value); + } + + if (paramType !== undefined) + entry.parameter_type = GLib.VariantType.new(paramType); + + action = new Gio.SimpleAction(entry); + + if (onActivate) + action.connect('activate', onActivate); + if (onChangeState) + action.connect('change-state', onChangeState); + } + + return action; +} + +function _getPlatformData(appId, timestamp) { + let context = Gdk.Display.get_default().get_app_launch_context(); + context.set_timestamp(timestamp); + let info = Gio.DesktopAppInfo.new(appId + '.desktop'); + let id = new GLib.Variant('s', context.get_startup_notify_id(info, [])); + + return { 'desktop-startup-id': id }; +} + +function activateAction(appId, action, parameter, timestamp) { + let objectPath = '/' + appId.replace(/\./g, '/'); + let platformData = _getPlatformData(appId, timestamp); + let wrappedParam = parameter ? [parameter] : []; + + Gio.DBus.session.call(appId, + objectPath, + 'org.freedesktop.Application', + 'ActivateAction', + new GLib.Variant('(sava{sv})', [action, + wrappedParam, + platformData]), + null, + Gio.DBusCallFlags.NONE, -1, null, function(c, res) { + try { + c.call_finish(res); + } catch(e) { + debug('ActivateApplication: ' + e); + } + }); +} + +function dashedToCamelCase(name) { + return name.replace(/(-.)/g, function(x) { + return x[1].toUpperCase(); + }); +} + +function getUIObject(res, ids) { + let builder = new Gtk.Builder(); + builder.add_from_resource('/org/gnome/Maps/ui/' + res + '.ui'); + let ret = {}; + ids.forEach(function(id) { + ret[dashedToCamelCase(id)] = builder.get_object(id); + }); + return ret; +} + +function readFile(filename) { + let status, buffer; + let file = Gio.File.new_for_path(filename); + try { + [status, buffer] = file.load_contents(null); + } catch (e) { + return null; + } + if (status) + return buffer; + else + return null; +} + +function writeFile(filename, buffer) { + let file = Gio.File.new_for_path(filename); + let status; + try { + status = file.replace_contents(buffer, null, false, 0, null)[0]; + return status; + } catch (e) { + return false; + } +} + +function getMeasurementSystem() { + if (measurementSystem) + return measurementSystem; + + let locale = GLib.getenv('LC_MEASUREMENT') || GLib.get_language_names()[0]; + + // Strip charset + if (locale.indexOf('.') !== -1) + locale = locale.substring(0, locale.indexOf('.')); + + if (IMPERIAL_LOCALES.indexOf(locale) === -1) + measurementSystem = METRIC_SYSTEM; + else + measurementSystem = IMPERIAL_SYSTEM; + + return measurementSystem; +} + +/** + * Get the highest priority bare lange currently in use. + */ +function getLanguage() { + let locale = GLib.get_language_names()[0]; + // the last item returned is the "bare" language + return GLib.get_locale_variants(locale).slice(-1)[0]; +} + +function getAccuracyDescription(accuracy) { + switch(accuracy) { + case Geocode.LOCATION_ACCURACY_UNKNOWN: + /* Translators: Accuracy of user location information */ + return _("Unknown"); + case 0: + /* Translators: Accuracy of user location information */ + return _("Exact"); + default: + return prettyDistance(accuracy); + } +} + +function loadAvatar(pixbuf, size) { + let width = pixbuf.get_width(); + let height = pixbuf.get_height(); + let croppedThumbnail; + + if (width > height) { + let x = (width - height) / 2; + croppedThumbnail = pixbuf.new_subpixbuf(x, 0, height, height); + } else { + let y = (height - width) / 2; + croppedThumbnail = pixbuf.new_subpixbuf(0, y, width, width); + } + + return croppedThumbnail.scale_simple(size, size, GdkPixbuf.InterpType.BILINEAR); +} + +function load_icon(icon, size, loadCompleteCallback) { + if (icon instanceof Gio.FileIcon || icon instanceof Gio.BytesIcon) { + _load_icon(icon, loadCompleteCallback); + } else if (icon instanceof Gio.ThemedIcon) { + _load_themed_icon(icon, size, loadCompleteCallback); + } +} + +function _load_icon(icon, loadCompleteCallback) { + icon.load_async(-1, null, function(icon, res) { + try { + let stream = icon.load_finish(res)[0]; + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + loadCompleteCallback(null); + } + }); +} + +function _load_themed_icon(icon, size, loadCompleteCallback) { + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_by_gicon(icon, size, 0); + + try { + let pixbuf = info.load_icon(); + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + } +} + +function osmTypeToString(osmType) { + switch(osmType) { + case Geocode.PlaceOsmType.NODE: return 'node'; + case Geocode.PlaceOsmType.RELATION: return 'relation'; + case Geocode.PlaceOsmType.WAY: return 'way'; + default: return 'node'; + } +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals + */ +function formatLocaleInteger(n) { + return _integerFormat.format(n); +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals using at least two digits + * with possible leading 0, suitable for time rendering. + */ +function formatLocaleIntegerMinimumTwoDigits(n) { + return _integerTwoDigitFormat.format(n); +} + +function prettyTime(time) { + let seconds = Math.floor(time / 1000); + let minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + + let secondsStr = formatLocaleInteger(seconds); + let minutesStr = formatLocaleInteger(minutes); + let hoursStr = formatLocaleInteger(hours); + + if (hours > 0 && minutes === 0) { + /* Translators: this is a duration with only hours, using + * an abbreviation for hours, corresponding to 'h' in English + */ + return _("%s h").format(hoursStr); + } else if (hours > 0) { + /* Translators: this is a duration with hours and minutes parts + * using abbreviations for hours and minutes, corresponding to 'h' + * and 'min' in English. The minutes has appropriate plural variations + */ + return ngettext("%s h %s min", "%s h %s min", + minutes).format(hoursStr, minutesStr); + } else if (minutes > 0) { + /* Translators: this is a duration with minutes part + * using abbreviation for minutes, corresponding to 'min' in English + * with appropriate plural variations + */ + return ngettext("%s min", "%s min", minutes).format(minutesStr); + } else { + /* Translators: this is a duration of less than one minute + * with seconds using an abbreviation for seconds, corresponding to + * 's' in English with appropriate plural forms + */ + return ngettext("%s s", "%s s", seconds).format(secondsStr); + } +} + +function prettyDistance(distance, noRound) { + if (getMeasurementSystem() === METRIC_SYSTEM) { + // round to whole meters + distance = Math.round(distance); + if (distance >= 1000 && !noRound) { + distance = Math.round(distance / 1000 * 10) / 10; + /* Translators: This is a distance measured in kilometers */ + return _("%s km").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in meters */ + return _("%s m").format(distance.toLocaleString()); + } else { + // Convert to feet + distance = Math.round(distance * 3.2808399); + if (distance >= 1056 && !noRound) { + // Convert to miles when distance is more than 0.2 mi + distance = Math.round(distance / 5280 * 10) / 10; + /* Translators: This is a distance measured in miles */ + return _("%s mi").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in feet */ + return _("%s ft").format(distance.toLocaleString()); + } +} + +/** + * Format a population number so that greater than or equal to a million and + * evenly divisiable by 100k are displayed a locale-specific compact form + * to handle estimated values without showing lots of zeros. + * Other values are formatted in full. + */ +function prettyPopulation(population) { + let notation = population >= 1000000 && population % 100000 === 0 ? + 'compact' : 'standard'; + + return population.toLocaleString(undefined, { notation: notation }); +} + +function uriSchemeSupported(scheme) { + let apps = Gio.AppInfo.get_all(); + let prefix = 'x-scheme-handler/'; + + for (let app of apps) { + let types = app.get_supported_types(); + if (!types) + continue; + + for (let type of types) { + if (type.replace(prefix, '') === scheme) + return true; + } + } + return false; +} + +function normalizeString(string) { + let normalized = GLib.utf8_normalize(string, -1, GLib.NormalizeMode.ALL); + return normalized.replace(ACCENTS_REGEX, ''); +} + +function isUsingDarkThemeVariant() { + let gtkSettings = Gtk.Settings.get_default(); + + return gtkSettings.gtk_application_prefer_dark_theme; +} + +function isUsingHighContrastTheme() { + let gtkSettings = Gtk.Settings.get_default(); + let themeName = gtkSettings.gtk_theme_name; + + return themeName === 'HighContrast' || themeName === 'HighContrastInverse'; +} + +function showDialog(msg, type, transientFor) { + let messageDialog = + new Gtk.MessageDialog({ transient_for: transientFor, + destroy_with_parent: true, + message_type: type, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: msg }); + + messageDialog.connect('response', () => messageDialog.destroy()); + messageDialog.show_all(); +} + +/* Gets a string from either a ByteArray or Uint8Array. This is for +compatibility between two different Gjs versions, see discussion at +https://gitlab.gnome.org/GNOME/gnome-maps/merge_requests/19 */ +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function getCountryCodeForCoordinates(lat, lon) { + let location = GWeather.Location.new_detached('', null, lat, lon); + + return location.get_country(); +} + +/* Determines whether a URI is valid and its scheme is HTTP or HTTPS. */ +function isValidWebsite(website) { + try { + GLib.Uri.is_valid(website, GLib.UriFlags.NONE); + } catch(e) { + return false; + } + return website.startsWith("http://") || website.startsWith("https://"); +} + +/* Determine whether a string is a valid e-mail address. */ +function isValidEmail(email) { + // if it starts with 'mailto:', it's probably a mistake copy-pasting a URI + if (email.startsWith('mailto:')) + return false; + + return email.match(EMAIL_REGEX) !== null; +} + +/* Return string with first character in upper case according the rules + * determined by the current locale + */ +function firstToLocaleUpperCase(str) { + return str[0].toLocaleUpperCase() + str.substring(1); +} diff --git a/src/wikipedia.js b/src/wikipedia.js new file mode 100644 index 00000000..daf3dc44 --- /dev/null +++ b/src/wikipedia.js @@ -0,0 +1,234 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Format = imports.format; +const Utils = imports.utils; + +/** + * Regex matching editions of Wikipedia, e.g. "en", "arz", pt-BR", "simple". + * See https://en.wikipedia.org/wiki/List_of_Wikipedias "WP code". + */ +const WP_REGEX = /^[a-z][a-z][a-z]?(\-[a-z]+)?$|^simple$/; + +let _soupSession = null; +function _getSoupSession() { + if (_soupSession === null) { + _soupSession = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + return _soupSession; +} + +let _thumbnailCache = {}; +let _metadataCache = {}; + +function getLanguage(wiki) { + return wiki.split(':')[0]; +} + +function getArticle(wiki) { + return Soup.uri_encode(wiki.replace(/ /g, '_').split(':').splice(1).join(':'), + '\''); +} + +function getHtmlEntityEncodedArticle(wiki) { + return GLib.markup_escape_text(wiki.split(':').splice(1).join(':'), -1); +} + +/** + * Determine if a Wikipedia reference tag is valid + * (of the form "lang:Article title") + */ +function isValidWikipedia(wiki) { + let parts = wiki.split(':'); + + if (parts.length < 2) + return false; + + let wpCode = parts[0]; + + return wpCode.match(WP_REGEX) !== null; +} + +/* + * Fetch various metadata about a Wikipedia article, given the wiki language + * and article title. + * + * @size is the maximum width of the thumbnail. + * + * Calls @metadataCb with the lang:title pair for the article and an object + * containing information about the article. For the keys/values of this + * object, see the relevant MediaWiki API documentation. + * + * Calls @thumbnailCb with the Gdk.Pixbuf of the icon when successful, otherwise + * null. + */ +function fetchArticleInfo(wiki, size, metadataCb, thumbnailCb) { + let lang = getLanguage(wiki); + let title = getHtmlEntityEncodedArticle(wiki); + let uri = Format.vprintf('https://%s.wikipedia.org/w/api.php', [ lang ]); + let msg = Soup.form_request_new_from_hash('GET', uri, { action: 'query', + titles: title, + prop: 'extracts|pageimages|langlinks', + format: 'json', + + /* Allow redirects, for example if an + article is renamed. */ + redirects: '1', + + /* Make sure we get all lang links */ + lllimit: 'max', + + /* don't go past first section header */ + exintro: 'yes', + /* limit the length */ + exchars: '200', + /* for plain text rather than HTML */ + explaintext: 'yes', + + pithumbsize: size + ''}); + let session = _getSoupSession(); + let cachedMetadata = _metadataCache[wiki]; + + if (cachedMetadata) { + _onMetadataFetched(wiki, cachedMetadata, size, metadataCb, thumbnailCb); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to request Wikipedia metadata: " + msg.reason_phrase); + metadataCb(null, {}); + if (thumbnailCb) { + thumbnailCb(null); + } + return; + } + + let response = JSON.parse(msg.response_body.data); + let pages = response.query.pages; + + if (pages) { + /* we know there should be only one object instance in the "pages" + * object, but the API specifies the sub-object as the page ID, + * so we'll have to use this iteration approach here + */ + for (let pageId in pages) { + let page = pages[pageId]; + + _metadataCache[wiki] = page; + _onMetadataFetched(wiki, page, size, metadataCb, thumbnailCb); + return; + } + } else { + metadataCb(null, {}); + if (thumbnailCb) { + thumbnailCb(null); + } + } + }); +} + +function _onMetadataFetched(wiki, page, size, metadataCb, thumbnailCb) { + /* Try to get a thumbnail *before* following language links--the primary + article probably has the best thumbnail image */ + if (thumbnailCb && page.thumbnail) { + let source = page.thumbnail.source; + + _fetchThumbnailImage(wiki, size, source, thumbnailCb); + thumbnailCb = null; + } + + /* Follow language links if necessary */ + let langlink = _findLanguageLink(wiki, page); + if (langlink) { + fetchArticleInfo(langlink, size, metadataCb, thumbnailCb); + } else { + metadataCb(wiki, page); + + if (thumbnailCb) { + thumbnailCb(null); + } + } +} + +function _fetchThumbnailImage(wiki, size, source, callback) { + let uri = new Soup.URI(source); + let msg = new Soup.Message({ method: 'GET', uri: uri }); + let session = _getSoupSession(); + + let cachedThumbnail = _thumbnailCache[wiki + '/' + size]; + if (cachedThumbnail) { + callback(cachedThumbnail); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to download thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let contents = msg.response_body_data; + let stream = Gio.MemoryInputStream.new_from_bytes(contents); + + try { + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + _thumbnailCache[wiki + '/' + size] = pixbuf; + callback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + callback(null); + } + + stream.close(null); + }); +} + +/* Finds the best language to use, based on the language of the original + article and the langlinks data from the Wikipedia API. + + Returns a lang:title string if that article should be used, or undefined if + the original article should be used. */ +function _findLanguageLink(wiki, page) { + let originalLang = getLanguage(wiki); + let languages = GLib.get_language_names().map((lang) => lang.split(/[\._\-]/)[0]); + + if (!languages.includes(originalLang)) { + let langlinks = {}; + for (let langlink of (page.langlinks || [])) { + langlinks[langlink.lang] = langlink["*"]; + } + + for (let language of languages) { + if (language in langlinks) { + return language + ":" + langlinks[language]; + } + } + } +} diff --git a/src/xmldom/LICENSE b/src/xmldom/LICENSE new file mode 100644 index 00000000..68a9b5e1 --- /dev/null +++ b/src/xmldom/LICENSE @@ -0,0 +1,8 @@ +You can choose any one of those: + +The MIT License (MIT): + +link:http://opensource.org/licenses/MIT + +LGPL: +http://www.gnu.org/licenses/lgpl.html diff --git a/src/xmldom/dom.js b/src/xmldom/dom.js new file mode 100644 index 00000000..0ec86d14 --- /dev/null +++ b/src/xmldom/dom.js @@ -0,0 +1,1142 @@ +/* + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + */ + +function copy(src,dest){ + for(var p in src){ + dest[p] = src[p]; + } +} +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(!(pt instanceof Super)){ + let t = function (){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknow Class:"+Class) + } + pt.constructor = Class + } +} +var htmlns = 'http://www.w3.org/1999/xhtml' ; +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; + +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); + + +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; +}; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return this[index] || null; + }, + toString:function(){ + for(var buf = [], i = 0;i=0){ + var lastIndex = list.length-1 + while(i0 || key == 'xmlns'){ +// return null; +// } + var i = this.length; + while(i--){ + var attr = this[i]; + if(attr.nodeName == key){ + return attr; + } + } + return null; + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + + + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } +}; +/** + * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 + */ +function DOMImplementation(/* Object */ features) { + this._features = {}; + if (features) { + for (var feature in features) { + this._features = features[feature]; + } + } +}; + +DOMImplementation.prototype = { + hasFeature: function(/* string */ feature, /* string */ version) { + var versions = this._features[feature.toLowerCase()]; + if (versions && (!version || version in versions)) { + return true; + } else { + return false; + } + }, + // Introduced in DOM Level 2: + createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype; + if(doctype){ + doc.appendChild(doctype); + } + if(qualifiedName){ + var root = doc.createElementNS(namespaceURI,qualifiedName); + doc.appendChild(root); + } + return doc; + }, + // Introduced in DOM Level 2: + createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId; + node.systemId = systemId; + // Introduced in DOM Level 2: + //readonly attribute DOMString internalSubset; + + //TODO:.. + // readonly attribute NamedNodeMap entities; + // readonly attribute NamedNodeMap notations; + return node; + } +}; + + +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ + +function Node() { +}; + +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + this.insertBefore(newChild,oldChild); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } +}; + + +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' +} + + +copy(NodeType,Node); +copy(NodeType,Node.prototype); + +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if((node = node.firstChild)){ + do{ + if(_visitNode(node,callback)){return true} + }while((node=node.nextSibling)) + } + return false; +} + + + +function Document(){ +} +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } +} +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } +} +function _onUpdateChild(doc,el,newChild){ + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if(newChild){ + cs[cs.length++] = newChild; + }else{ + //console.log(1) + var child = el.firstChild; + var i = 0; + while(child){ + cs[i++] = child; + child =child.nextSibling; + } + cs.length = i; + } + } +} + +/** + * attributes; + * children; + * + * writeable properties: + * nodeValue,Attr:value,CharacterData:data + * prefix + */ +function _removeChild(parentNode,child){ + var previous = child.previousSibling; + var next = child.nextSibling; + if(previous){ + previous.nextSibling = next; + }else{ + parentNode.firstChild = next + } + if(next){ + next.previousSibling = previous; + }else{ + parentNode.lastChild = previous; + } + _onUpdateChild(parentNode.ownerDocument,parentNode); + return child; +} +/** + * preformance key(refChild == null) + */ +function _insertBefore(parentNode,newChild,nextChild){ + var cp = newChild.parentNode; + if(cp){ + cp.removeChild(newChild);//remove and update + } + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = newChild.firstChild; + if (newFirst == null) { + return newChild; + } + var newLast = newChild.lastChild; + }else{ + newFirst = newLast = newChild; + } + var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; + + newFirst.previousSibling = pre; + newLast.nextSibling = nextChild; + + + if(pre){ + pre.nextSibling = newFirst; + }else{ + parentNode.firstChild = newFirst; + } + if(nextChild == null){ + parentNode.lastChild = newLast; + }else{ + nextChild.previousSibling = newLast; + } + do{ + newFirst.parentNode = parentNode; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + //console.log(parentNode.lastChild.nextSibling == null) + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { + newChild.firstChild = newChild.lastChild = null; + } + return newChild; +} +function _appendSingleChild(parentNode,newChild){ + var cp = newChild.parentNode; + if(cp){ + var pre = parentNode.lastChild; + cp.removeChild(newChild);//remove and update + var pre = parentNode.lastChild; + } + var pre = parentNode.lastChild; + newChild.parentNode = parentNode; + newChild.previousSibling = pre; + newChild.nextSibling = null; + if(pre){ + pre.nextSibling = newChild; + }else{ + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + return newChild; + //console.log("__aa",parentNode.lastChild.nextSibling == null) +} +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + doctype : null, + documentElement : null, + _inc : 1, + + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + if(this.documentElement == null && newChild.nodeType == 1){ + this.documentElement = newChild; + } + + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == 1){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + return false; + }) + return rtv; + }, + + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.target = target; + node.nodeValue= node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); + + +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, + + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, + + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, + + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; + + +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); + + +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); + + }, + appendChild:function(newChild){ + //if(!(newChild instanceof CharacterData)){ + throw new Error(ExceptionMessage[3]) + //} + return Node.prototype.appendChild.apply(this,arguments) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } +} +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } +} +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE +} +_extends(Comment,CharacterData); + +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE +} +_extends(CDATASection,CharacterData); + + +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); + +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); + +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); + +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); + +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); + + +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node,attributeSorter){ + return node.toString(attributeSorter); +} +Node.prototype.toString =function(attributeSorter){ + var buf = []; + serializeToString(this,buf,attributeSorter); + return buf.join(''); +} +function serializeToString(node,buf,attributeSorter,isHTML){ + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; + isHTML = (htmlns === node.namespaceURI) ||isHTML + buf.push('<',nodeName); + if(attributeSorter){ + buf.sort.apply(attrs, attributeSorter); + } + for(var i=0;i'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + if(child){ + buf.push(child.data); + } + }else{ + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + } + buf.push(''); + }else{ + buf.push('/>'); + } + return null; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + return null; + case ATTRIBUTE_NODE: + return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push( ''); + case COMMENT_NODE: + return buf.push( ""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM "',sysid,'">'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return null; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( ""); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + return buf.push('??',node.nodeName); + } +} +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i','amp':'&','quot':'"','apos':"'"} + if(locator){ + domBuilder.setDocumentLocator(locator) + } + + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(/\/x?html?$/.test(mimeType)){ + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if(source){ + sax.parse(source,defaultNSMap,entityMap); + }else{ + sax.errorHandler.error("invalid document source"); + } + return domBuilder.document; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + } + errorHandler[key] = fn && function(msg){ + fn('[xmldom '+key+']\t'+msg+_locator(locator)); + }||function(){}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.document = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.document.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.document; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + if( attr.getOffset){ + position(attr.getOffset(1),attr) + } + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.document.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(this.currentElement && chars){ + if (this.cdata) { + var charNode = this.document.createCDATASection(chars); + this.currentElement.appendChild(charNode); + } else { + var charNode = this.document.createTextNode(chars); + this.currentElement.appendChild(charNode); + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.document.normalize(); + }, + setDocumentLocator:function (locator) { + if((this.locator = locator)){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.document.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, + + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, + + startDTD:function(name, publicId, systemId) { + var impl = this.document.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + log('[xmldom warning]\t'+error); + }, + error:function(error) { + log('[xmldom error]\t'+error); + throw error; + }, + fatalError:function(error) { + log('[xmldom fatalError]\t'+error); + throw error; + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } + return null; +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} + +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.document.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +}//appendChild and setAttributeNS are preformance key diff --git a/src/xmldom/sax.js b/src/xmldom/sax.js new file mode 100644 index 00000000..9be75bfa --- /dev/null +++ b/src/xmldom/sax.js @@ -0,0 +1,582 @@ +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\u203F-\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_S=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_V = 4;//attr value(no quot value only) +var S_E = 5;//attr value end and no space(quot end) +var S_S = 6;//(attr value end || tag end ) && (space offer) +var S_C = 7;//closed el + +function XMLReader(){ + +} + +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if(k in entityMap){ + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + if(end>start){ + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + } + function position(p,m){ + while(p>=lineEnd && (m = linePattern.exec(source))){ + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p-lineStart+1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.+(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; + + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + try{ + var tagStart = source.indexOf('<',start); + if(tagStart<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.document; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(tagStart>start){ + appendText(tagStart); + } + switch(source.charAt(tagStart+1)){ + case '/': + var end = source.indexOf('>',tagStart+3); + var tagName = source.substring(tagStart+2,end); + var config = parseStack.pop(); + var localNSMap = config.localNSMap; + if(config.tagName != tagName){ + errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); + } + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + end++; + break; + // end elment + case '?':// + locator&&position(tagStart); + end = parseInstruction(source,tagStart,domBuilder); + break; + case '!':// start){ + start = end; + }else{ + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart,start)+1); + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} + +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_S){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if(s === S_EQ){//equal + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + el.add(attrName,value,start-1); + s = S_E; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_V){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName,value,start); + //console.dir(el) + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_E + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + s = S_C; + el.closed = true; + case S_V: + case S_ATTR: + case S_ATTR_S: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") + } + break; + case ''://end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + break;//normal + case S_V://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_S: + if(s === S_ATTR_S){ + value = attrName; + } + if(s == S_V){ + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) + }else{ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + el.add(value,value,start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_S; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_S; + break; + case S_V: + var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value,start) + case S_E: + s = S_S; + break; + //case S_S: + //case S_EQ: + //case S_ATTR_S: + // void();break; + //case S_C: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_V:void();break; + case S_ATTR_S: + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + el.add(attrName,attrName,start); + start = p; + s = S_ATTR; + break; + case S_E: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_S: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_V; + start = p; + break; + case S_C: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } + p++; + } +} +/** + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function appendElement(el,domBuilder,parseStack){ + var tagName = el.tagName; + var localNSMap = null; + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/' + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix] + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for(prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + parseStack.push(el); + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} + + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = closeMap[tagName] = source.lastIndexOf('') + } + return pos',start+4); + //append comment source.substring(4,end)// + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/building-symbolic.svg b/data/icons/private/hicolor/16x16/apps/building-symbolic.svg new file mode 100644 index 00000000..0f25dfdd --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/building-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/cafe-symbolic.svg b/data/icons/private/hicolor/16x16/apps/cafe-symbolic.svg new file mode 100644 index 00000000..2e184f73 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/cafe-symbolic.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/city-symbolic.svg b/data/icons/private/hicolor/16x16/apps/city-symbolic.svg new file mode 100644 index 00000000..049767e5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/city-symbolic.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/electric-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/electric-car-symbolic.svg new file mode 100644 index 00000000..9595a0ba --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/electric-car-symbolic.svg @@ -0,0 +1,390 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/explore-symbolic.svg b/data/icons/private/hicolor/16x16/apps/explore-symbolic.svg new file mode 100644 index 00000000..1336fa29 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/explore-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/fuel-symbolic.svg b/data/icons/private/hicolor/16x16/apps/fuel-symbolic.svg new file mode 100644 index 00000000..8f8f69ac --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/fuel-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/hospital-sign-symbolic.svg b/data/icons/private/hicolor/16x16/apps/hospital-sign-symbolic.svg new file mode 100644 index 00000000..6c862577 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/hospital-sign-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/hospital-symbolic.svg b/data/icons/private/hicolor/16x16/apps/hospital-symbolic.svg new file mode 100644 index 00000000..1a1055f0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/hospital-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg new file mode 100644 index 00000000..9779f9ad --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-not-visible-symbolic.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg new file mode 100644 index 00000000..135278f5 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layer-visible-symbolic.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg new file mode 100644 index 00000000..a50bbc43 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/layers-button-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg new file mode 100644 index 00000000..4d5a6b17 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/map-marker-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-end.svg b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg new file mode 100644 index 00000000..b51794c4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-end.svg @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/maps-point-start.svg b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg new file mode 100644 index 00000000..f476455f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/maps-point-start.svg @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg new file mode 100644 index 00000000..ab3daf84 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/mountain-symbolic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/museum-symbolic.svg b/data/icons/private/hicolor/16x16/apps/museum-symbolic.svg new file mode 100644 index 00000000..6b975521 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/museum-symbolic.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg new file mode 100644 index 00000000..de9a2668 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/no-toilets-symbolic.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg new file mode 100644 index 00000000..46f6ddd1 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/no-wheelchair-symbolic.svg @@ -0,0 +1,43 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/parking-sign-symbolic.svg b/data/icons/private/hicolor/16x16/apps/parking-sign-symbolic.svg new file mode 100644 index 00000000..64b8a9f9 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/parking-sign-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/penguin-symbolic.svg b/data/icons/private/hicolor/16x16/apps/penguin-symbolic.svg new file mode 100644 index 00000000..f1a835f0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/penguin-symbolic.svg @@ -0,0 +1,394 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg new file mode 100644 index 00000000..dcc3f2da --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/phone-oldschool-symbolic.svg @@ -0,0 +1,41 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/photo-camera-symbolic.svg b/data/icons/private/hicolor/16x16/apps/photo-camera-symbolic.svg new file mode 100644 index 00000000..26a86f90 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/photo-camera-symbolic.svg @@ -0,0 +1,390 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/post-box-symbolic.svg b/data/icons/private/hicolor/16x16/apps/post-box-symbolic.svg new file mode 100644 index 00000000..8a1907ca --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/post-box-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/pub-symbolic.svg b/data/icons/private/hicolor/16x16/apps/pub-symbolic.svg new file mode 100644 index 00000000..137c0b5f --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/pub-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/restaurant-symbolic.svg b/data/icons/private/hicolor/16x16/apps/restaurant-symbolic.svg new file mode 100644 index 00000000..f66dd1e6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/restaurant-symbolic.svg @@ -0,0 +1,404 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg new file mode 100644 index 00000000..0223d5f8 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-bike-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg new file mode 100644 index 00000000..d9547d66 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-button-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg new file mode 100644 index 00000000..c511fe1c --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-car-symbolic.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg new file mode 100644 index 00000000..7317b867 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-pedestrian-symbolic.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg new file mode 100644 index 00000000..961c35e0 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-reverse-symbolic.svg @@ -0,0 +1,30 @@ + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg new file mode 100644 index 00000000..ae2d69a6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-airplane-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg new file mode 100644 index 00000000..279639a4 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-bus-symbolic.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg new file mode 100644 index 00000000..6984bd05 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-cablecar-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg new file mode 100644 index 00000000..61184b56 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-ferry-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg new file mode 100644 index 00000000..a9c653c2 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-funicular-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg new file mode 100644 index 00000000..c39a3397 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-gondolalift-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg new file mode 100644 index 00000000..11b5cf0b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-subway-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg new file mode 100644 index 00000000..05a49d52 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-symbolic.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg new file mode 100644 index 00000000..76b863b3 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-train-symbolic.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg new file mode 100644 index 00000000..ee275b5a --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/route-transit-tram-symbolic.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/school-symbolic.svg b/data/icons/private/hicolor/16x16/apps/school-symbolic.svg new file mode 100644 index 00000000..1a3f92f6 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/school-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/shopping-cart-symbolic.svg b/data/icons/private/hicolor/16x16/apps/shopping-cart-symbolic.svg new file mode 100644 index 00000000..489c4bea --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/shopping-cart-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg new file mode 100644 index 00000000..06abf130 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/toilets-symbolic.svg @@ -0,0 +1,47 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/town-symbolic.svg b/data/icons/private/hicolor/16x16/apps/town-symbolic.svg new file mode 100644 index 00000000..1acd029b --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/town-symbolic.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/tree-symbolic.svg b/data/icons/private/hicolor/16x16/apps/tree-symbolic.svg new file mode 100644 index 00000000..3c6e93e9 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/tree-symbolic.svg @@ -0,0 +1,403 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/video-camera-symbolic.svg b/data/icons/private/hicolor/16x16/apps/video-camera-symbolic.svg new file mode 100644 index 00000000..f1bc0fc7 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/video-camera-symbolic.svg @@ -0,0 +1,390 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg new file mode 100644 index 00000000..ae2fdd03 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/wheelchair-limited-symbolic.svg @@ -0,0 +1,44 @@ + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg new file mode 100644 index 00000000..be789b79 --- /dev/null +++ b/data/icons/private/hicolor/16x16/apps/wheelchair-symbolic.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/data/icons/private/hicolor/24x24/apps/user-location-compass.png b/data/icons/private/hicolor/24x24/apps/user-location-compass.png new file mode 100644 index 00000000..d2f3c7d7 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location-compass.png differ diff --git a/data/icons/private/hicolor/24x24/apps/user-location.png b/data/icons/private/hicolor/24x24/apps/user-location.png new file mode 100644 index 00000000..833fd907 Binary files /dev/null and b/data/icons/private/hicolor/24x24/apps/user-location.png differ diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg new file mode 100644 index 00000000..3eecf0fe --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-continue-symbolic.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg new file mode 100644 index 00000000..e6ec05fd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-elevator-symbolic.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg new file mode 100644 index 00000000..110fda85 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-left-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg new file mode 100644 index 00000000..c955b77d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-right-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg new file mode 100644 index 00000000..1c429d12 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-0-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg new file mode 100644 index 00000000..a1950490 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg new file mode 100644 index 00000000..3f4f0ea1 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-135-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg new file mode 100644 index 00000000..e78482f8 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg new file mode 100644 index 00000000..03c5744c --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-180-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg new file mode 100644 index 00000000..bb0886ba --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg new file mode 100644 index 00000000..3cfcbaae --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-225-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg new file mode 100644 index 00000000..ebbe0172 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg new file mode 100644 index 00000000..c5bcbf6a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-270-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg new file mode 100644 index 00000000..520dd2ab --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg new file mode 100644 index 00000000..73fa4e1a --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-315-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg new file mode 100644 index 00000000..19f98821 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-lht-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg new file mode 100644 index 00000000..b92d3e69 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-45-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg new file mode 100644 index 00000000..283cdfbc --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-lht-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg new file mode 100644 index 00000000..eb93b7bd --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-90-symbolic.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg new file mode 100644 index 00000000..1178640b --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-roundabout-symbolic.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + \ No newline at end of file diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg new file mode 100644 index 00000000..37d46da9 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg new file mode 100644 index 00000000..deaa22df --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-sharpright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg new file mode 100644 index 00000000..0fc527c2 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightleft-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg new file mode 100644 index 00000000..17893292 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-slightright-symbolic.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg new file mode 100644 index 00000000..72d3cef4 --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-left-symbolic.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg new file mode 100644 index 00000000..da099f9d --- /dev/null +++ b/data/icons/private/hicolor/32x32/apps/maps-direction-u-turn-right-symbolic.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/data/icons/private/hicolor/32x32/apps/mark-location.png b/data/icons/private/hicolor/32x32/apps/mark-location.png new file mode 100644 index 00000000..1a34a63c Binary files /dev/null and b/data/icons/private/hicolor/32x32/apps/mark-location.png differ diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg new file mode 100644 index 00000000..3ecd81a5 --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.Devel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg new file mode 100644 index 00000000..1986990c --- /dev/null +++ b/data/icons/public/hicolor/scalable/apps/org.gnome.Maps.svg @@ -0,0 +1,202 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg new file mode 100644 index 00000000..32ac0b74 --- /dev/null +++ b/data/icons/public/hicolor/symbolic/apps/org.gnome.Maps-symbolic.svg @@ -0,0 +1,28 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + diff --git a/data/maps-service.json b/data/maps-service.json new file mode 100644 index 00000000..01c654c7 --- /dev/null +++ b/data/maps-service.json @@ -0,0 +1,37 @@ +{ + "tileProviderInfo": { + "name": "Mapbox", + "url": "https://www.mapbox.com" + }, + "tiles": { + "street": { + "id": "osm.streets", + "name": "OpenStreetMap street tiles", + "license": "Map Data ODBL OpenStreetMap Contributors, Map Imagery CC-BY-SA 2.0 OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 256, + "uri_format": "https://tile.openstreetmap.org/#Z#/#X#/#Y#.png", + "max_connections": 2 + }, + + "print": { + "id": "osm.print", + "name": "OpenStreetMap street tiles for print", + "license": "Map Data ODBL OpenStreetMap Contributors, Map Imagery CC-BY-SA 2.0 OpenStreetMap", + "license_uri": "http://www.openstreetmap.org/copyright", + "min_zoom_level": 0, + "max_zoom_level": 19, + "tile_size": 256, + "uri_format": "https://tile.openstreetmap.org/#Z#/#X#/#Y#.png", + "max_connections": 2 + } + }, + "graphHopperGeocode": { + "baseUrl": "https://graphhopper.com", + "attribution": "GraphHopper", + "attributionUrl": "https://graphhopper.com/", + "apiKey": "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP" + } +} diff --git a/data/media/maps-point-end-symbolic.svg b/data/media/maps-point-end-symbolic.svg new file mode 100644 index 00000000..9384ce08 --- /dev/null +++ b/data/media/maps-point-end-symbolic.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/media/maps-point-start-symbolic.svg b/data/media/maps-point-start-symbolic.svg new file mode 100644 index 00000000..4c08290c --- /dev/null +++ b/data/media/maps-point-start-symbolic.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 00000000..2be4ee73 --- /dev/null +++ b/data/meson.build @@ -0,0 +1,80 @@ +gnome.compile_resources( + app_id + '.data', + app_id + '.data.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir +) + +install_data( + 'maps-service.json', + install_dir: pkgdatadir +) + +desktop = app_id + '.desktop' + +desktop_file = custom_target('desktop-file', + input: desktop + '.in', + output: desktop, + install: true, + install_dir: join_paths(datadir, 'applications'), + command: [msgfmt, '--desktop', + '--template', '@INPUT@', '-d', po_dir, '-o', '@OUTPUT@', + '--keyword=X-Geoclue-Reason', '--keyword=Name', '--keyword=Comment', + '--keyword=Keywords' + ] +) + +install_data( + app_id + '.gschema.xml', + install_dir: join_paths(datadir, 'glib-2.0', 'schemas') +) + +appdata = app_id + '.appdata.xml' + +appdata_file = i18n.merge_file( + appdata, + input: appdata + '.in', + output: appdata, + po_dir: po_dir, + install: true, + install_dir: join_paths(datadir, 'metainfo') +) + +service_conf = configuration_data() +service_conf.set('PACKAGE_NAME', meson.project_name()) +service_conf.set('pkgdatadir', pkgdatadir) + +configure_file( + input: app_id + '.service.in', + output: app_id + '.service', + configuration: service_conf, + install: true, + install_dir: join_paths(datadir, 'dbus-1', 'services') +) + +desktop_file_validate = find_program('desktop-file-validate', required: false) +if desktop_file_validate.found() + test( + 'validate-desktop', + desktop_file_validate, + args: [ + desktop_file.full_path() + ] + ) +endif + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test( + 'validate-appdata', + appstream_util, + args: [ + 'validate-relax', + '--nonet', + appdata_file.full_path() + ] + ) +endif + +subdir('icons') \ No newline at end of file diff --git a/data/org.gnome.Maps.appdata.xml.in b/data/org.gnome.Maps.appdata.xml.in new file mode 100644 index 00000000..d44168d9 --- /dev/null +++ b/data/org.gnome.Maps.appdata.xml.in @@ -0,0 +1,280 @@ + + + org.gnome.Maps.desktop + CC0-1.0 + GPL-2.0-or-later + GNOME Maps + Find places around the world + +

    + Maps gives you quick access to maps all across the world. It allows you + to quickly find the place you’re looking for by searching for a city or + street, or locate a place to meet a friend. +

    +

    + Maps uses the collaborative OpenStreetMap database, made by hundreds of + thousands of people across the globe. +

    +
    + + org.gnome.Maps.desktop + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-main.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-route.png + + + + https://gitlab.gnome.org/GNOME/gnome-maps/raw/master/data/screenshots/maps-pinpoint.png + + + + + +
      +
    • Translation updates
    • +
    +
    + +
      +
    • Translation updates
    • +
    +
    + +
      +
    • Use new GNOME style icons for search results
    • +
    • Show e-mail addresse for places when available
    • +
    • Show take-away availability for restaurants and similar places
    • +
    • Remove Facebook check-in support, as it's not supported by libgfbgraph anymore
    • +
    +
    + +
      +
    • Update donation and wiki web links in appdata
    • +
    +
    + +
      +
    • Fix regression when signing in for OSM editing
    • +
    +
    + +
      +
    • Fix crashes when no aerial tile definition is available
    • +
    • Fix cut-off text in place bubble in some translations
    • +
    +
    + +
      +
    • Fix a bug where unfavoring a place made it unselectable until after a restart
    • +
    • Use country code attribute from GraphHopper/Photon geocode results to improve +accuracy of address formatting among others
    • +
    +
    + +
      +
    • Redesigned place bubbles
    • +
    • Adaptive UI for the place bubbles on small screens
    • +
    • Show translated place names in user's language when available
    • +
    +
    + +
      +
    • Fix a bug resulting in writing a broken last view position on exit in some circumstances
    • +
    • Fix a bug preventing wrapping around at the date line with dark tiles
    • +
    • Fix a bug causing hanging in cases when dragging around route markers
    • +
    +
    + +
      +
    • Fix a bug where place details gets lost after searching again for the same place
    • +
    +
    + +
      Translation updates
    +
    + +
      +
    • Fix a race-condition bug in search-as-you-type resulting in out-of-sync search results in some circumstances
    • +
    • Fix updating missing details after editing a POI in OpenStreetMap
    • +
    +
    + + +
      +
    • Show error message in popover when a search request has failed
    • +
    • Fix exception on shutdown when unregistering DBus
    • +
    • Fix "no network" display to fit on smaller screens
    • +
    +
    +
    + + + +
      +
    • Initial adpative UI
    • +
    • Added night mode
    • +
    • Added support for hybrid aerial layer
    • +
    • Public transit plugin for South Africa (GoMetro)
    • +
    • Improved keyboard navigation in routing sidebar
    • +
    • Make more use of localized number formatting
    • +
    +
    +
    + + +
      +
    • Fix an issue where some search result gets the wrong level of name
    • +
    +
    +
    + + +
      +
    • Don't reset query points when routing fails (e.g. no public transit provider is available) to allow switching mode with the same query
    • +
    • Fix a bug not displaying tiles south of the equator when using --local command line option
    • +
    • Allow entering DMS coordinates without comma between latitude and logitude parts
    • +
    +
    +
    + + +
      +
    • Updated POI defintions for OpenStreetMap editing
    • +
    • Fix link to sign up for an OpenStreetMap account
    • +
    +
    +
    + + + +
      +
    • Initial support for public transit routing
    • +
    • Re-arrange context menu. Move "export as image" to hamburger menu
    • +
    • Avoid flickering the current location marker when changes
    • +
    +
    +
    + + +
      +
    • Added Malay translation
    • +
    +
    +
    + + +
      +
    • Fix generating Wikipedia URLs in some cases
    • +
    +
    +
    + + +
      +
    • Update tile size to 512 px when using --local option
    • +
    +
    +
    + + +
      +
    • Auto-complete "search-as-you-type"
    • +
    • Revamped sharing dialog
    • +
    • Support opening OpenStreetMap URLs
    • +
    • Faster startup
    • +
    • Remember map style last used when starting (street or aerial view)
    • +
    +
    +
    + + +
      +
    • Fix misaligned rendering of shape layers with the new map tiles
    • +
    +
    +
    + + +
      +
    • Remove some unnessesary instructions in turn-by-turn route searches
    • +
    +
    +
    + + +
      +
    • Updated Croatian translations
    • +
    +
    +
    + + + +
      +
    • Show live-updated thumbnails for the street/aerial layer switcher, instead of (outdated) hard-code thumbnails
    • +
    • Move app menu to the headerbar
    • +
    • Updated application icon
    • +
    +
    +
    +
    + + keyboard + pointing + touch + + + 360 + + + gnome-maps.desktop + + GNOME + The GNOME Project + https://wiki.gnome.org/Apps/Maps + https://gitlab.gnome.org/GNOME/gnome-maps/ + https://www.gnome.org/donate/ + gnome-maps-list@gnome.org + gnome-maps + + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + none + + + workstation + mobile + +
    + + + diff --git a/data/org.gnome.Maps.data.gresource.xml b/data/org.gnome.Maps.data.gresource.xml new file mode 100644 index 00000000..5ad801fa --- /dev/null +++ b/data/org.gnome.Maps.data.gresource.xml @@ -0,0 +1,50 @@ + + + + ui/account-row.ui + ui/check-in-dialog.ui + ui/context-menu.ui + ui/export-view-dialog.ui + ui/favorites-popover.ui + ui/headerbar-left.ui + ui/headerbar-right.ui + ui/instruction-row.ui + ui/layers-popover.ui + ui/shape-layer-row.ui + ui/shape-layer-file-chooser.ui + ui/location-service-dialog.ui + ui/main-window.ui + ui/open-with-row.ui + ui/osm-account-dialog.ui + ui/osm-edit-address.ui + ui/osm-edit-dialog.ui + ui/osm-type-list-row.ui + ui/osm-type-search-entry.ui + ui/osm-type-popover.ui + ui/place-bar.ui + ui/place-buttons.ui + ui/place-dialog.ui + ui/place-entry.ui + ui/place-list-row.ui + ui/place-popover.ui + ui/place-view.ui + ui/route-entry.ui + ui/send-to-dialog.ui + ui/sidebar.ui + ui/social-place-more-results-row.ui + ui/social-place-row.ui + ui/transit-arrival-row.ui + ui/transit-itinerary-row.ui + ui/transit-leg-row.ui + ui/transit-more-row.ui + ui/transit-options-panel.ui + ui/transit-route-label.ui + ui/transit-stop-row.ui + ui/zoom-in-dialog.ui + gnome-maps.css + osm-types.json + + + ui/help-overlay.ui + + diff --git a/data/org.gnome.Maps.desktop.in b/data/org.gnome.Maps.desktop.in new file mode 100644 index 00000000..85a58a9b --- /dev/null +++ b/data/org.gnome.Maps.desktop.in @@ -0,0 +1,18 @@ +[Desktop Entry] +Version=1.0 +Name=Maps +Comment=A simple maps application +Exec=gapplication launch org.gnome.Maps %U +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=org.gnome.Maps +Terminal=false +Type=Application +StartupNotify=true +Categories=GNOME;GTK;Utility; +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Maps; +DBusActivatable=true +MimeType=application/vnd.geo+json;x-scheme-handler/geo;application/vnd.google-earth.kml+xml;application/gpx+xml; +X-Geoclue-Reason=Allows your location to be shown on the map. +# Translators: Do NOT translate or transliterate this text (these are enum types)! +X-Purism-FormFactor=Workstation;Mobile; diff --git a/data/org.gnome.Maps.gschema.xml b/data/org.gnome.Maps.gschema.xml new file mode 100644 index 00000000..cc32f780 --- /dev/null +++ b/data/org.gnome.Maps.gschema.xml @@ -0,0 +1,89 @@ + + + + + + + + + + [0.0,0.0] + last viewed location + Coordinates of last viewed location. + + + 0 + zoom + Zoom level + + + "MapsStreetSource" + Map type + The type of map to display (street, aerial, etc.) + + + [768, 600] + Window size + Window size (width and height). + + + [] + Window position + Window position (X and Y). + + + true + Window maximized + Window maximization state + + + 20 + Maximum number of search results + Maximum number of search results from geocode search. + + + 50 + Number of recent places to store + Number of recently visited places to store. + + + 5 + Number of recent routes to store + Number of recently visited routes to store. + + + "public" + Foursquare check-in privacy setting + Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private. + + + false + Foursquare check-in Facebook broadcasting + Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated with the Foursquare account. + + + false + Foursquare check-in Twitter broadcasting + Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated with the Foursquare account. + + + "" + OpenStreetMap username or e-mail address + Indicates if the user has signed in to edit OpenStreetMap data. + + + 'pedestrian' + Last used transportation type for routing + + + false + Night mode + Whether the application is in night mode. + + + false + Use hybrid aerial tiles + Whether aerial tiles should use hybrid style (with labels). + + + diff --git a/data/org.gnome.Maps.service.in b/data/org.gnome.Maps.service.in new file mode 100644 index 00000000..f8a854f6 --- /dev/null +++ b/data/org.gnome.Maps.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.Maps +Exec=@pkgdatadir@/org.gnome.Maps --gapplication-service diff --git a/data/osm-types.json b/data/osm-types.json new file mode 100644 index 00000000..f789d053 --- /dev/null +++ b/data/osm-types.json @@ -0,0 +1,19542 @@ +{ + "aeroway/aerodrome": { + "title": { + "C": "Airport", + "af": "Lughawe", + "am": "አየር ማረፊያ", + "ar": "مطار", + "ast": "Aeropuertu", + "bg": "Летище", + "bn": "বিমানবন্দর", + "bs": "Aerodrom", + "ca": "Aeroport", + "ckb": "فڕۆکەخانە", + "cs": "Letiště", + "da": "Lufthavn", + "de": "Flughafen", + "el": "Αεροδρόμιο", + "en-GB": "Airport", + "en": "Airport", + "eo": "Aerodromo", + "es": "Aeropuerto", + "et": "Lennujaam", + "eu": "Aireportu", + "fa": "فرودگاه", + "fi": "Lentokenttä", + "fr": "Aéroport", + "gl": "Aeroporto", + "he": "נמל תעופה", + "hr": "Zračna luka", + "hu": "Repülőtér", + "hy": "Օդանավակայան", + "id": "Bandar udara", + "is": "Flugvöllur", + "it": "Aeroporto", + "ja": "空港", + "kn": "ವಿಮಾನ ನಿಲ್ದಾಣ", + "ko": "공항", + "lt": "Oro uostas", + "lv": "Lidosta", + "mk": "Аеродром", + "nl": "Luchthaven", + "no": "Flyplass", + "pl": "Lotnisko", + "pt-BR": "Aeroporto ou aeródromo", + "pt": "Aeroporto", + "ro": "Aeroport", + "ru": "Аэропорт", + "sk": "Letisko", + "sl": "Letališče", + "sr": "Аеродром", + "sv": "Flygplats", + "ta": "விமானநிலையம்", + "te": "విమానాశ్రయం", + "tr": "Havaalanı", + "uk": "Аеропорт", + "vi": "Sân bay", + "yue": "飛機場", + "zh-CN": "机场", + "zh-HK": "機場", + "zh-TW": "機場", + "zh": "机场" + } + }, + "aeroway/apron": { + "title": { + "C": "Airport Apron", + "ar": "مواقف الطائرات", + "cs": "Odbavovací plocha", + "de": "Vorfeld", + "en": "Airport Apron", + "eo": "Aviadil-parkumejo", + "es": "Plataforma de estacionamiento de aeronaves", + "fa": "صحن فرودگاه", + "fi": "Lentokentän asemataso", + "fr": "Aire de stationnement d'aéroport", + "gl": "Estacionamento aéreo", + "he": "רחבת חניית מטוסים", + "hu": "Forgalmi előtér", + "it": "Parcheggio Aeromobili", + "ja": "駐機場", + "ko": "공항 에이프런", + "mk": "Авионска постојка", + "nl": "Platform (vliegveld)", + "pl": "Płyta postojowa samolotów", + "pt-BR": "Plataforma de estacionamento", + "pt": "Plataforma de estacionamento", + "sk": "Odbavovacia plocha", + "sr": "Авио-прилаз", + "sv": "Parkering för flygplan (Apron)", + "tr": "Havaalanı Apronu", + "uk": "Перон", + "vi": "Thềm đế Máy bay", + "zh-CN": "机场停机坪", + "zh-TW": "機場停機坪" + } + }, + "aeroway/gate": { + "title": { + "C": "Airport Gate", + "ar": "بوابة مطار", + "ast": "Puerta de terminal", + "ca": "Porta d'aeroport", + "cs": "Letištní gate", + "da": "Lufthavnsgate", + "de": "Flugsteig", + "el": "Πύλη Αεροδρομίου", + "en-GB": "Airport Gate", + "en": "Airport Gate", + "eo": "Aerodroma enirejo", + "es": "Puerta de embarque", + "eu": "Aireportuko ate", + "fa": "دروازه فرودگاه", + "fi": "Lähtöportti", + "fr": "Porte d'embarquement", + "gl": "Porta de embarque", + "he": "שער נמל תעופה", + "hu": "Repülőtéri kapu", + "id": "Gerbang Bandara", + "is": "Flugvallarhlið", + "it": "Gate aeroportuale", + "ja": "空港ゲート", + "ko": "공항 게이트", + "lv": "Lidostas vārti", + "mk": "Аеродромска порта", + "nl": "Luchthaven-gate", + "no": "Flyplassgate", + "pl": "Bramka na lotnisku", + "pt-BR": "Portão de embarque", + "pt": "Porta de embarque / desembarque", + "ru": "Выход на посадку", + "sk": "Letisková brána", + "sl": "Letališka vrata", + "sr": "Излаз за укрцавање", + "sv": "Gate", + "ta": "விமான நிலைய நுழைவாயில்", + "tr": "Kapı", + "uk": "Вихід на посадку", + "vi": "Cổng Sân bay", + "zh-CN": "登机口", + "zh-HK": "登機閘", + "zh-TW": "登機閘門" + } + }, + "aeroway/hangar": { + "title": { + "C": "Hangar", + "af": "Loods", + "ar": "حظيرة طائرات", + "ast": "Hangar", + "bg": "Хангар", + "bs": "Hangar", + "ca": "Hàngar", + "cs": "Hangár", + "da": "Hangar", + "de": "Hangar", + "el": "Υπόστεγο Αεροσκαφών", + "en-GB": "Hangar", + "en": "Hangar", + "eo": "Hangaro", + "es": "Hangar", + "et": "Angaar", + "fa": "آشیانه هواپیما (بزرگ / فرودگاه)", + "fi": "Lentokonehalli", + "fr": "Hangar", + "gl": "Hangar", + "he": "הנגר", + "hr": "Hangar", + "hu": "Hangár", + "id": "Hanggar", + "is": "Flugskýli", + "it": "Hangar", + "ja": "航空機格納庫", + "ko": "격납고", + "lt": "Angaras", + "lv": "Angārs", + "mk": "Хангар", + "nl": "Hangar", + "no": "Hangar", + "pl": "Hangar", + "pt-BR": "Hangar", + "pt": "Hangar", + "ru": "Ангар", + "sk": "Hangár", + "sl": "Hangar", + "sr": "Хангар", + "sv": "Hangar", + "ta": "விமானங்கள் நிறுத்துமிடம்", + "tr": "Hangar", + "uk": "Ангар", + "vi": "Nhà Máy bay", + "yue": "飛機庫", + "zh-CN": "飞机库", + "zh-HK": "飛機庫", + "zh-TW": "機庫", + "zh": "机库" + } + }, + "aeroway/helipad": { + "title": { + "C": "Helipad", + "af": "Helipad", + "ar": "مهبط الهليكوبتر", + "ast": "Helipuertu", + "bg": "Хеликоптерна площадка", + "bn": "হেলিপ্যাড", + "bs": "Heliodrom", + "ca": "Heliport", + "cs": "Heliport", + "da": "Helikopterlandingsplads", + "de": "Hubschrauberlandeplatz", + "el": "Ελικοδρόμιο", + "en-GB": "Helipad", + "en": "Helipad", + "eo": "Surteriĝejo helikoptera", + "es": "Helipuerto", + "et": "Kopteriväljak", + "fa": "محل فرود هلی کوپتر", + "fi": "Helikopterikenttä", + "fr": "Héliport", + "gl": "Heliporto", + "he": "מנחת מסוקים", + "hr": "Heliodrom", + "hu": "Helikopter-leszállóhely", + "hy": "Ուղաթիռային հրապարակ", + "id": "Helipad", + "is": "Þyrlupallur", + "it": "Elisuperficie", + "ja": "ヘリパッド", + "ko": "헬기 착륙장", + "lt": "Sraigtasparnių aikštelė", + "lv": "Helikopteru nosēšanās laukums", + "mk": "Хеликоптерско слетувалиште", + "nl": "Helipad", + "no": "Helikopterlandingsplass", + "pl": "Lądowisko dla helikopterów", + "pt-BR": "Heliponto", + "pt": "Heliponto", + "ru": "Вертолётная площадка", + "sk": "Heliport", + "sl": "Heliodrom", + "sr": "Хелиодром", + "sv": "Helikopterplatta", + "ta": "சிறு விமானம் இறங்கும் தளம்", + "tr": "Helikopter Pisti", + "uk": "Вертолітний майданчик", + "vi": "Sân bay Trực thăng", + "yue": "直升機坪", + "zh-CN": "直升机场", + "zh-HK": "直升機坪", + "zh-TW": "直昇機坪", + "zh": "直升机场" + } + }, + "aeroway/holding_position": { + "title": { + "C": "Aircraft Holding Position", + "ar": "مواضع انتظار طائرات", + "cs": "vyčkávací místo letadla", + "de": "Rollhalteort", + "en": "Aircraft Holding Position", + "eo": "Aviadila atendejo", + "es": "Posición de espera de aviones", + "fa": "موقعیت توقف و انتظار هواپیما", + "fi": "Lentokoneen pysähtymiskohta", + "fr": "Point d’attente avion", + "gl": "Punto de espera de avións", + "he": "תבנית ריתוק כלי טיס", + "hu": "Légi jármű várakozási pozíciója", + "it": "Circuito di attesa per aeromobili", + "ja": "航空機の停止位置", + "mk": "Чекална положба на леталото", + "nl": "Vliegtuigwachtplaats", + "pl": "Punkt oczekiwania dla samolotu", + "pt-BR": "Posição de retenção de aeronaves", + "pt": "Ponto de espera de avião", + "sv": "Väntplats för flygplan", + "tr": "Hava aracı tutma pozisyonu", + "uk": "Стоп-лінія", + "vi": "Vị trí Chờ đợi dành cho Máy bay", + "zh-CN": "跑道等待位置", + "zh-TW": "飛機停靠點" + } + }, + "aeroway/jet_bridge": { + "title": { + "C": "Jetway", + "ar": "جسر إركاب", + "cs": "Nástupní most", + "de": "Fluggastbrücke", + "en": "Jetway", + "eo": "Ponto flugstacio - aviadilo", + "es": "Pasarela de acceso a aeronaves", + "fa": "راه هوایی", + "fi": "Matkustajasilta", + "fr": "Passerelle aéroportuaire", + "gl": "Ponte de embarque", + "he": "גשר עלייה למטוס", + "hu": "Utashíd", + "it": "Manicotto d’imbarco", + "ja": "ボーディング・ブリッジ", + "ko": "탑승교", + "mk": "Авионски мост", + "nl": "Vliegtuigslurf", + "pl": "Rękaw lotniczy", + "pt-BR": "Jetway", + "pt": "Ponte de embarque", + "sk": "Nástupný tunel", + "sv": "Ombordstigningsbrygga", + "tr": "Jet yolu", + "uk": "Посадковий рукав", + "vi": "Cầu Hành khách", + "zh-CN": "登机廊桥", + "zh-TW": "空橋" + } + }, + "aeroway/parking_position": { + "title": { + "C": "Aircraft Parking Position", + "ar": "موضع وقوف الطائرات", + "cs": "parkovací místo letadla", + "de": "Flugzeugparkposition", + "el": "Θέση Στάθμευσης Αεροσκάφους", + "en": "Aircraft Parking Position", + "eo": "Aviadil-parkumejo (detala pozicio)", + "es": "Posición de estacionamiento de aviones", + "fa": "محل قرارگیری پارکینگ هواپیما", + "fi": "Lentokoneen pysäköintikohta", + "fr": "Voie de garage pour avion", + "gl": "Estacionamento de transportes aéreos", + "he": "מיקום חניית כלי טיס", + "hu": "Légi jármű parkolási pozíciója", + "it": "Posizione di parcheggio per aeromobili", + "ja": "駐機ポイント(空港)", + "mk": "Паркирна положба на леталото", + "nl": "Vliegtuigparkeerplaats", + "no": "Luftfartøy Parkering Posisjon", + "pl": "Miejsce postoju samolotu", + "pt-BR": "Posição de estacionamento de aeronaves", + "pt": "Área de estacionamento de avião", + "sv": "Parkeringsplats för flygplan", + "tr": "Havaaracı Park Pozisyonu", + "uk": "Місце стоянки літака", + "vi": "Chỗ Đậu Máy bay", + "zh-CN": "停机位", + "zh-TW": "停機坪" + } + }, + "aeroway/runway": { + "title": { + "C": "Runway", + "af": "Aanloopbaan", + "ar": "مدرج المطار", + "ast": "Pista", + "bg": "Летателна писта", + "bs": "Pista", + "ca": "Pista d'enlairament/aterratge", + "cs": "Vzletová a přistávací dráha", + "da": "Landingsbane", + "de": "Start- und Landebahn", + "dv": "އެއާރޕޯޓް ރަންވޭ", + "el": "Διάδρομος Αεροδρομίου", + "en-GB": "Runway", + "en": "Runway", + "eo": "Aviokurejo", + "es": "Pista de aterrizaje", + "et": "Lennurada", + "fa": "باند فرودگاه", + "fi": "Kiitorata", + "fr": "Piste d’atterrissage", + "gl": "Pista de aeroporto", + "he": "מסלול המראה", + "hr": "Uzletno-sletna staza", + "hu": "Kifutópálya", + "id": "Landas pacu", + "is": "Flugbraut", + "it": "Pista di decollo/atterraggio", + "ja": "滑走路", + "kn": "ಓಡುದಾರಿ", + "ko": "활주로", + "lt": "Pakilimo takas", + "lv": "Skrejceļš", + "mk": "Писта", + "nl": "Startbaan", + "no": "Rullebane", + "pl": "Pas startowy", + "pt-BR": "Pista de pouso e decolagem", + "pt": "Pista de aterragem e descolagem", + "ru": "Взлётная полоса", + "sk": "Vzletová dráha", + "sl": "Vzletno-pristajalna steza", + "so": "Gegada diyaaradaha", + "sr": "Узлетиште", + "sv": "Start- och landningsbana", + "ta": "ஓடுதளம்", + "tr": "Uçak Pisti", + "uk": "Злітно-посадкова смуга", + "vi": "Đường băng", + "yue": "跑道", + "zh-CN": "机场跑道", + "zh-HK": "跑道", + "zh-TW": "機場跑道", + "zh": "跑道" + } + }, + "aeroway/spaceport": { + "title": { + "C": "Spaceport", + "ar": "ميناء فضائي", + "cs": "kosmodrom", + "da": "Rumhavn", + "de": "Weltraumbahnhof", + "el": "Διαστημοδρόμιο", + "en": "Spaceport", + "eo": "Kosmodromo", + "es": "Puerto espacial", + "et": "Kosmodroom", + "fa": "پایگاه فضایی", + "fi": "Laukaisukeskus", + "fr": "Centre spatial", + "gl": "Cosmódromo", + "he": "מתקן שיגור", + "hu": "Űrrepülőtér", + "it": "Spazioporto", + "ja": "宇宙船基地", + "ko": "우주 공항", + "mk": "Космодром", + "nl": "Ruimtehaven", + "no": "Rakettbase", + "pl": "Port kosmiczny", + "pt-BR": "Base de lançamento espacial", + "pt": "Cosmódromo", + "ru": "Космодром", + "sr": "Свемирска лука", + "sv": "Rymdbas", + "tr": "Uzay İstasyonu", + "uk": "Космопорт", + "vi": "Sân bay Vũ trụ", + "zh-CN": "航天港", + "zh-TW": "太空發射中心" + } + }, + "aeroway/taxiway": { + "title": { + "C": "Taxiway", + "af": "Rolbaan", + "ar": "طريق للمدرج", + "ast": "Cai de rodaxe", + "bg": "Рольожка", + "bs": "Staza za vožnju", + "ca": "Plataforma de rodada", + "cs": "Pojezdová dráha", + "da": "Taxiway", + "de": "Rollbahn", + "el": "Τροχιόδρομος", + "en-GB": "Taxiway", + "en": "Taxiway", + "eo": "Aŭtokur-strato", + "es": "Calle de rodaje", + "et": "Ruleerimistee", + "fa": "خزشراه", + "fi": "Rullaustie", + "fr": "Taxiway", + "gl": "Pista de rodaxe", + "he": "מסלול הסעה", + "hr": "Rulnica", + "hu": "Gurulóút", + "id": "Landas hubung", + "is": "Akbraut flugvéla", + "it": "Pista di rullaggio", + "ja": "航空機誘導路", + "ko": "유도로", + "lv": "Manevrēšanas ceļš", + "mk": "Воздухопловен приод", + "nl": "Taxibaan", + "no": "Taxibane", + "pl": "Droga kołowania", + "pt-BR": "Pista de taxiamento", + "pt": "Via de circulação", + "ru": "Рулёжная дорожка", + "sk": "Rolovacia dráha", + "sl": "Vozna steza", + "sr": "Полетно-слетна стаза", + "sv": "Taxibana", + "tr": "Taksi Yolu", + "uk": "Руліжна доріжка", + "vi": "Đường lăn", + "yue": "滑行道", + "zh-CN": "滑行道", + "zh-HK": "滑行道", + "zh-TW": "滑行道", + "zh": "滑行道" + } + }, + "aeroway/terminal": { + "title": { + "C": "Airport Terminal", + "ar": "صالة مطار", + "ast": "Terminal d'aeropuertu", + "ca": "Terminal d'aeroport", + "cs": "Letištní terminál", + "da": "Lufthavnsterminal", + "de": "Flughafenterminal", + "dv": "އެއާރޕޯޓް ގިމަތަ", + "el": "Σταθμός Αεροναυτιλίας", + "en-GB": "Airport Terminal", + "en": "Airport Terminal", + "eo": "Flugstacio", + "es": "Terminal de aeropuerto", + "et": "Lennuterminal", + "eu": "Aireportuko Terminal", + "fa": "پایانه فرودگاه", + "fi": "Lentokenttäterminaali", + "fr": "Terminal d'aéroport", + "gl": "Terminal de aeroporto", + "he": "טרמינל שדה תעופה", + "hu": "Repülőtéri terminál", + "is": "Flugstöð", + "it": "Terminal aeroportuale", + "ja": "空港ターミナル", + "ko": "공항 터미널", + "lv": "Lidostas Terminālis", + "mk": "Аеродромски терминал", + "nl": "Luchthaventerminal", + "no": "Flyplassterminal", + "pl": "Terminal pasażerski", + "pt-BR": "Terminal de aeroporto", + "pt": "Terminal de aeroporto", + "ru": "Терминал аэропорта", + "sk": "Letiskový termnál", + "sl": "Letališki terminal", + "so": "Gagida Dayaaradeed", + "sr": "Аеродромски терминал", + "sv": "Flygterminal", + "tr": "Terminal", + "uk": "Термінал", + "vi": "Ga Sân bay", + "yue": "機場大樓", + "zh-CN": "航站楼", + "zh-HK": "機場客運大樓", + "zh-TW": "機場航廈" + } + }, + "aeroway/windsock": { + "title": { + "C": "Windsock", + "ar": "كم الريح", + "cs": "větrný rukáv", + "de": "Windsack", + "en": "Windsock", + "eo": "Ventmaniko", + "es": "Manga de viento", + "et": "Tuulekott", + "fa": "بادنمای کیسه‌ای", + "fi": "Tuulisukka", + "fr": "Manche à air", + "gl": "Manga de vento", + "he": "שרוול רוח", + "hu": "Szélzsák", + "it": "Manica a vento", + "ja": "吹流し", + "mk": "Ветроказен ракав", + "nl": "Windzak", + "no": "Vindpølse", + "pl": "Rękaw (wiatrowskaz)", + "pt-BR": "Biruta", + "pt": "Manga de vento", + "sk": "Veterný rukáv", + "sr": "Ветроказ", + "sv": "Vindstrut", + "tr": "Rüzgâr hortumu", + "uk": "Вітровказ", + "vi": "Ống gió", + "zh-CN": "风向袋", + "zh-TW": "風向袋" + } + }, + "amenity/bus_station": { + "title": { + "C": "Bus Station / Terminal", + "am": "አውቶቡስ መናኃሪያ", + "ar": "محطة حافلات", + "ast": "Estación d'autobuses / Terminal", + "ca": "Estació d'autobusos", + "cs": "Autobusové nádraží / terminál", + "da": "Busstation/rutebilstation", + "de": "Busbahnhof / Busterminal", + "el": "Τερματικός Σταθμός Λεωφορείου", + "en-GB": "Bus Station / Terminal", + "en": "Bus Station / Terminal", + "eo": "Aŭtobus-stacio", + "es": "Estación / Terminal de bus", + "eu": "Autobus geltoki / Terminal", + "fa": "پایانه اتوبوس / ترمینال", + "fi": "Linja-autoasema/-terminaali", + "fr": "Gare routière", + "gl": "Estación de autobuses", + "he": "תחנת אוטובוס", + "hr": "Autobusni kolodvor", + "hu": "Buszpályaudvar", + "id": "Stasiun Bus / Terminal", + "is": "Strætisvagnastöð / Umferðarmiðstöð", + "it": "Stazione /Terminal degli autobus", + "ja": "バスターミナル(旧:単独)", + "ko": "버스 터미널", + "lv": "Autobusu pietura / Terminālis", + "mk": "Автобуска станица / терминал", + "nl": "Busstation", + "no": "Busstasjon/-terminal", + "pl": "Dworzec autobusowy", + "pt-BR": "Terminal / Estação de ônibus", + "pt": "Estação / Terminal de autocarros", + "ru": "Автобусная станция/терминал", + "sk": "Autobusová zastávka / Terminál", + "sl": "Avtobusna postaja / Terminal", + "sq": "Stacioni i Autobusave", + "sv": "Busstation / Bussterminal", + "ta": "பேருந்து நிலையம் / முனையம்", + "tr": "Otobüs Durağı / Terminali", + "uk": "Автостанція/Термінал", + "vi": "Ga Xe buýt", + "yue": "巴士總站", + "zh-CN": "公交车站 / 枢纽站", + "zh-HK": "巴士總站", + "zh-TW": "客運站" + } + }, + "amenity/coworking_space": { + "title": { + "C": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de coworking", + "cs": "Sdílený pracovní prostor", + "da": "Kontorfællesskab", + "de": "Coworking-Räumlichkeiten", + "el": "Χώρος Συνεργατών", + "en-GB": "Coworking Space", + "en": "Coworking Space", + "eo": "Loko por samloka laborado (ang. coworking)", + "es": "Espacio de trabajo compartido", + "et": "Ühiskasutatavad tööruumid", + "eu": "Coworking espazioa", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de bureaux partagés, coworking", + "gl": "Espacio de cotraballo", + "he": "מתחם עבודה שיתופי", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Spazio di Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "mk": "Споделен работен простор", + "nl": "Coworking-kantoor", + "no": "Medarbeider Rom", + "pl": "Coworking", + "pt-BR": "Espaço de Coworking", + "pt": "Espaço de trabalho partilhado", + "ru": "Коворкинг", + "sk": "Priestory pre coworking", + "sl": "Prostor za sodelanje", + "sr": "Заједнички радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間" + } + }, + "amenity/embassy": { + "title": { + "C": "Embassy", + "af": "Ambassade", + "am": "ኤምባሲ", + "ar": "سفارة", + "ast": "Embaxada", + "bg": "Посолство", + "bn": "দুতাবাস", + "bs": "Ambasada", + "ca": "Ambaixada", + "cs": "Velvyslanectví", + "da": "Ambassade", + "de": "Botschaft", + "el": "Πρεσβεία", + "en-GB": "Embassy", + "en": "Embassy", + "eo": "Ambasadejo", + "es": "Embajada", + "et": "Saatkond", + "eu": "Enbaxada", + "fa": "سفارت خانه", + "fi": "Suurlähetystö", + "fr": "Ambassade", + "gl": "Embaixada", + "he": "שגרירות", + "hr": "Ambasada", + "hu": "Külképviselet", + "id": "Kedutaan besar", + "is": "Sendiráð", + "it": "Ambasciata", + "ja": "大使館", + "kn": "ರಾಯಭಾರ", + "ko": "대사관", + "lt": "Ambasada", + "lv": "Vēstniecība", + "mk": "Амбасада", + "ms": "Kedutaan", + "nl": "Ambassade", + "no": "Ambassade", + "pl": "Ambasada/konsulat", + "pt-BR": "Embaixada", + "pt": "Embaixada", + "ro": "Ambasadă", + "ru": "Посольство", + "sk": "Veľvyslanectvo", + "sl": "Veleposlaništvo", + "sr": "Амбасада", + "sv": "Ambassad", + "ta": "தூதரகம்", + "tr": "Büyükelçilik", + "uk": "Амбасада", + "vi": "Tòa đại sứ", + "yue": "大使館", + "zh-CN": "使馆", + "zh-HK": "大使館", + "zh-TW": "使館", + "zh": "使馆" + } + }, + "amenity/ferry_terminal": { + "title": { + "C": "Ferry Terminal", + "ar": "محطة الركاب", + "cs": "Terminál přívozu/trajektu", + "da": "Færgeterminal", + "de": "Schiffsanleger", + "el": "Σταθμός Επιβατών Προθμείου", + "en": "Ferry Terminal", + "eo": "Pramstacio", + "es": "Terminal de ferry", + "fa": "ترمینال کشتی", + "fi": "Laivaterminaali", + "fr": "Terminal de ferry", + "gl": "Terminal de transbordadores", + "he": "מסוף מעבורת", + "hu": "Kompkikötő", + "id": "Pelabuhan Feri", + "it": "Terminal Traghetti", + "ja": "フェリー乗り場", + "ko": "페리 터미널", + "mk": "Траектен терминал", + "nl": "Veerbootterminal", + "pl": "Terminal promowy", + "pt-BR": "Terminal da balsa", + "pt": "Terminal de ferry", + "ru": "Причал для паромов", + "sk": "Trajektový terminál", + "sr": "Терминал за трајект", + "sv": "Färjeterminal", + "tr": "Feribot Terminali", + "uk": "Поромний термінал", + "vi": "Nhà ga Phà", + "zh-CN": "轮渡码头", + "zh-TW": "渡輪碼頭" + } + }, + "amenity/nursing_home": { + "title": { + "C": "Nursing Home", + "ar": "دار التمريض", + "ca": "Llar d'avis", + "cs": "Domov pro seniory/pečovatelský ústav", + "da": "Plejehjem", + "de": "Pflegeheim", + "el": "Κλινική", + "en-GB": "Nursing Home", + "en": "Nursing Home", + "eo": "Domo de permanenta zorgado", + "es": "Residencia de ancianos", + "et": "Hoolduskodu", + "fa": "آسایشگاه", + "fi": "Hoitokoti", + "fr": "Maison de repos", + "gl": "Residencia de anciáns", + "he": "בית אבות", + "hu": "Ápolóotthon", + "is": "Hjúkrunarheimili", + "it": "Residenza Sanitaria Assistenziale (RSA)", + "ja": "介護施設", + "ko": "요양원", + "mk": "Старечки дом", + "nl": "Verpleeghuis", + "no": "Gamlehjem", + "pl": "Dom spokojnej starości", + "pt-BR": "Casa de Repouso", + "pt": "Centro Geriátrico", + "ru": "Дом престарелых/Дом инвалидов (устаревший тег)", + "sk": "Ošetrovateľské centum", + "sl": "Dom za bolniško nego", + "sr": "Старачки дом", + "sv": "Vårdhem", + "tr": "Bakım Evi", + "uk": "Будинок престарілих", + "vi": "Viện Dưỡng lão", + "zh-CN": "疗养院", + "zh-HK": "護養院", + "zh-TW": "養老院" + } + }, + "amenity/recycling": { + "title": { + "C": "Recycling Container", + "ar": "إعادة التدوير", + "ca": "Reciclatge", + "cs": "Recyklace", + "de": "Recycling", + "el": "Ανακύκλωση", + "en": "Recycling", + "eo": "Recikligejo", + "es": "Reciclaje", + "eu": "Birziklatze", + "fa": "بازیافت", + "fi": "Kierrätys", + "fr": "Point de recyclage", + "gl": "Reciclaxe", + "he": "מיחזור", + "hr": "Recikliranje", + "hu": "Szelektív hulladékgyűjtő", + "is": "Endurvinnsla", + "it": "Riciclaggio", + "ja": "リサイクル施設", + "ko": "재활용", + "mk": "Рециклажа", + "nl": "Recycling", + "no": "Resirkulering", + "pl": "Przetwarzanie odpadów", + "pt-BR": "Reciclagem", + "pt": "Reciclagem", + "ru": "Вторичное сырьё", + "sk": "Recyklovanie", + "sl": "Recikliranje", + "sr": "Рециклирање", + "sv": "Återvinning", + "tr": "Geri Dönüşüm", + "uk": "Переробка вторсировини", + "vi": "Tái chế", + "zh-CN": "资源回收设施", + "zh-HK": "回收設施", + "zh-TW": "回收" + } + }, + "amenity/animal_boarding": { + "title": { + "C": "Animal Boarding Facility", + "ar": "منشأة رعاية حيوانات", + "ast": "Instalación d'embarque d'animales", + "ca": "Instal·lació d'embarcament d'animals", + "cs": "Hotel pro zvířata", + "da": "Dyrepension", + "de": "Tierpension", + "el": "Επιθεώρηση Ζώων", + "en-GB": "Animal Boarding Facility", + "en": "Animal Boarding Facility", + "eo": "Hotelo (prizorgejo) por hejmbestoj", + "es": "Alojamiento de animales", + "fa": "امکانات پانسیون حیوانات", + "fi": "Lemmikkihoitola", + "fr": "Plateforme de chargement d'animaux", + "gl": "Aloxamento de animais", + "he": "פנסיון", + "hu": "Állatpanzió", + "is": "Dýrahótel", + "it": "Pensione per animali", + "ja": "ペットホテル", + "ko": "동물 기숙 시설", + "mk": "Престојувалиште за животни", + "nl": "Dierenpension", + "pl": "Hotel dla zwierząt", + "pt-BR": "Hotel para animais", + "pt": "Hotel para animais", + "ru": "Передержка животных", + "sk": "Opatrovanie zvierat", + "sl": "Živalski hotel", + "sv": "Djurhotell", + "tr": "Yatılı Hayvan Bakım Yeri", + "uk": "Готель для тварин", + "vi": "Khách sạn Thú cưng", + "zh-CN": "动物寄养机构", + "zh-HK": "寵物酒店", + "zh-TW": "寵物度假村" + } + }, + "amenity/animal_breeding": { + "title": { + "C": "Animal Breeding Facility", + "ar": "منشأة تربية وبيع حيوانات", + "ast": "Instalación d'alimentación d'animales", + "ca": "Instal·lació de reproducció d'animals", + "cs": "Chovná stanice", + "da": "Dyreforsøgsklinik", + "de": "Tierzucht", + "el": "Εκτροφείο", + "en-GB": "Animal Breeding Facility", + "en": "Animal Breeding Facility", + "eo": "Bredejo", + "es": "Criadero de animales", + "fa": "امکانات پرورش حیوانات", + "fi": "Eläinten ruokintapaikka", + "fr": "Installation d'élevage d'animaux", + "gl": "Granxa de animais", + "he": "מתקן לגידול לבעלי חיים", + "hu": "Állattenyésztő", + "is": "Dýraræktun", + "it": "Allevamento", + "ja": "動物繁殖施設", + "ko": "동물 사육 시설", + "mk": "Размножувалиште на животни", + "nl": "Fokkerij", + "pl": "Hodowla zwierząt", + "pt-BR": "Estabelecimento para reprodução de animais", + "pt": "Instalação para reprodução de animais", + "ru": "Питомник", + "sk": "Chovateľská stanica", + "sl": "Središče za vzrejo živali", + "sv": "Djuruppfödning", + "tr": "Hayvan Islah Yeri", + "uk": "Розплідник тварин", + "vi": "Trại Nuôi Thú", + "zh-CN": "动物饲养繁育机构", + "zh-HK": "動物繁殖場", + "zh-TW": "動物繁殖場" + } + }, + "amenity/animal_shelter": { + "title": { + "C": "Animal Shelter", + "ar": "مأوى حيوانات", + "ast": "Refuxu d'animales", + "ca": "Refugi d'animals", + "cs": "Zvířecí útulek", + "da": "Dyrehjem", + "de": "Tierheim", + "el": "Καταφύγιο Ζώων", + "en-GB": "Animal Shelter", + "en": "Animal Shelter", + "eo": "Azilo por bestoj", + "es": "Refugio de animales", + "fa": "پناهگاه حیوانات", + "fi": "Eläinhoitola", + "fr": "Refuge animalier", + "gl": "Abeiro de animais", + "he": "בית מחסה לחיות מחמד", + "hu": "Állatmenhely", + "is": "Dýraathvarf", + "it": "Rifugio per animali", + "ja": "動物保護施設", + "ko": "동물 보호소", + "lt": "Gyvūnų prieglauda", + "lv": "Dzīvnieku patversme", + "mk": "Засолниште за животни", + "nl": "Dierenasiel", + "no": "Dyrehjem", + "pl": "Schronisko dla zwierząt", + "pt-BR": "Abrigo de animais", + "pt": "Abrigo para animais", + "ru": "Приют для животных", + "sk": "Útulok pre zvieratá", + "sl": "Zavetišče za živali", + "sr": "Азил за животиње", + "sv": "Djurhem", + "tr": "Hayvan Barinağı", + "uk": "Притулок для тварин", + "vi": "Trạm Cứu hộ Thú cưng", + "zh-CN": "动物收容救助所", + "zh-HK": "動物收容中心", + "zh-TW": "動物收容中心" + } + }, + "amenity/arts_centre": { + "title": { + "C": "Arts Center", + "ar": "مركز فنون", + "ast": "Centru d'arte", + "bn": "শিল্প কেন্দ্র", + "bs": "Centar za umjetnost", + "ca": "Centre artístic", + "cs": "Umělecké centrum", + "da": "Kunstcenter", + "de": "Kunstzentrum", + "el": "Κέντρο Καλών Τεχνών", + "en-AU": "Arts Centre", + "en-GB": "Arts Centre", + "en": "Arts Center", + "eo": "Belart-centro", + "es": "Centro de Arte", + "et": "Kunstide keskus", + "eu": "Arte Zentro", + "fa": "مرکز هنری", + "fi": "Taidekeskus", + "fr": "Centre artistique et culturel", + "gl": "Centro de arte", + "he": "מרכז אומנויות", + "hr": "Umjetnički paviljon", + "hu": "Művészeti központ", + "id": "Pusat Kesenian", + "is": "Listamiðstöð", + "it": "Centro Culturale", + "ja": "アートセンター", + "ko": "아트 센터", + "lt": "Menų centras", + "lv": "Mākslas Centrs", + "mk": "Дом на уметноста", + "nl": "Cultureel centrum", + "no": "Kunst Senter", + "pl": "Centrum artystyczne", + "pt-BR": "Centro cultural", + "pt": "Centro de artes", + "ro": "Centru de Artă", + "ru": "Центр Искусств", + "sk": "Galéria umenia", + "sl": "Umetniško središče", + "sr": "Уметнички центар", + "sv": "Konstcenter", + "ta": "கலையரங்கம்", + "tr": "Sanat Merkezi", + "uk": "Мистецький центр", + "vi": "Trung tâm Nghệ thuật", + "yue": "美術館", + "zh-CN": "艺术中心", + "zh-HK": "美術館", + "zh-TW": "藝文中心" + } + }, + "amenity/atm": { + "title": { + "C": "ATM", + "af": "ATM", + "ar": "صراف آلي", + "ast": "Caxeru automáticu", + "bg": "Банкомат", + "bn": "এটিএম", + "bs": "Bankomat", + "ca": "Caixer automàtic", + "cs": "Bankomat", + "da": "Pengeautomat", + "de": "Geldautomat", + "el": "ATM", + "en-GB": "Cash Machine", + "en": "ATM", + "eo": "Bankaŭtomato", + "es": "Cajero automático", + "et": "Pangaautomaat", + "eu": "ATM", + "fa": "دستگاه خودپرداز", + "fi": "Pankkiautomaatti", + "fr": "Distributeur de billets", + "gl": "Caixeiro automático", + "he": "כספומט", + "hr": "Bankomat", + "hu": "Bankautomata", + "id": "ATM", + "is": "Hraðbanki", + "it": "Bancomat", + "ja": "ATM", + "kn": "ಎಟಿಎಮ್", + "ko": "ATM", + "lt": "Bankomatas", + "lv": "Bankomāts", + "mk": "Банкомат", + "nl": "Bankautomaat", + "nn": "Minibank", + "no": "Minibank", + "pl": "Bankomat", + "pt-BR": "Caixa eletrônico", + "pt": "Multibanco", + "ro": "Bancomat", + "ru": "Банкомат", + "sk": "Bankomat", + "sl": "Bankomat", + "sr": "Банкомат", + "sv": "Uttagsautomat", + "ta": "ஏ.டி.எம்", + "tr": "ATM", + "uk": "Банкомат", + "vi": "Máy Rút tiền", + "yue": "提款機", + "zh-CN": "ATM机", + "zh-HK": "提款機", + "zh-TW": "自動櫃員機", + "zh": "自动柜员机(ATM)。" + } + }, + "amenity/bank": { + "title": { + "C": "Bank", + "af": "Bank", + "am": "ባንክ", + "ar": "بنك", + "ast": "Bancu", + "bg": "Банка", + "bn": "ব্যাংক", + "bs": "Banka", + "ca": "Banc", + "ckb": "بانک", + "cs": "Banka", + "da": "Bank", + "de": "Bank-Filiale", + "dv": "ބޭންކު", + "el": "Τράπεζα", + "en-GB": "Bank", + "en": "Bank", + "eo": "Bankejo", + "es": "Banco", + "et": "Pank", + "eu": "Banku", + "fa": "بانک", + "fi": "Pankki", + "fr": "Banque", + "gl": "Banco", + "he": "בנק", + "hr": "Banka", + "hu": "Bank", + "hy": "Բանկ", + "id": "Bank", + "is": "Banki", + "it": "Banca", + "ja": "銀行", + "kn": "ಬ್ಯಾಂಕ್", + "ko": "은행", + "lt": "Bankas", + "lv": "Banka", + "mk": "Банка", + "ne": "बैंक", + "nl": "Bank (financieel)", + "no": "Bank", + "pl": "Bank", + "pt-BR": "Banco", + "pt": "Banco", + "ro": "Banca", + "ru": "Банк", + "sk": "Banka", + "sl": "Banka", + "so": "Bangi", + "sr": "Банка", + "sv": "Bank", + "ta": "வங்கி", + "te": "బ్యాంకు", + "tr": "Banka", + "uk": "Банк", + "vi": "Ngân hàng", + "yue": "銀行", + "zh-CN": "银行", + "zh-HK": "銀行", + "zh-TW": "銀行", + "zh": "银行" + } + }, + "amenity/bar": { + "title": { + "C": "Bar", + "af": "Kroeg", + "am": "ቡና ቤት", + "ar": "حانة", + "ast": "Bar", + "bg": "Бар", + "bn": "পানশালা", + "bs": "Bar", + "ca": "Bar de copes", + "ckb": "مەیخانە", + "cs": "Bar", + "da": "Bar", + "de": "Bar", + "dv": "ބާރ", + "el": "Μπαρ", + "en-GB": "Bar", + "en": "Bar", + "eo": "Drinkejo", + "es": "Bar (latam) / Bar de copas (es)", + "et": "Baar", + "eu": "Taberna", + "fa": "بار", + "fi": "Baari", + "fr": "Bar", + "gl": "Bar de copas", + "he": "בר", + "hr": "Bar", + "hu": "Bár", + "hy": "Բար", + "id": "Bar", + "is": "Knæpa", + "it": "Bar", + "ja": "バー", + "ko": "바", + "lt": "Baras", + "lv": "Bārs", + "mk": "Бар", + "ne": "बार", + "nl": "Bar", + "no": "Bar", + "pl": "Bar alkoholowy", + "pt-BR": "Bar requintado ou drinqueria", + "pt": "Bar", + "ro": "Bar", + "ru": "Бар", + "sk": "Bar", + "sl": "Bar", + "so": "Makhaayad", + "sr": "Бар", + "sv": "Bar", + "ta": "மதுபானக் கடை", + "tr": "Bar", + "uk": "Бар", + "vi": "Quán rượu", + "yue": "酒吧", + "zh-CN": "酒吧", + "zh-HK": "酒吧", + "zh-TW": "酒吧", + "zh": "酒吧" + } + }, + "amenity/bbq": { + "title": { + "C": "Barbecue/Grill", + "ar": "مكان مخصص للشواء", + "ast": "Barbacoa/Asador", + "ca": "Barbacoa/graella", + "cs": "Gril", + "da": "Barbecue/Grill", + "de": "Grillplatz", + "el": "Ψησταριά/Σκάρα", + "en-AU": "Barbeque", + "en-GB": "Barbecue/Grill", + "en": "Barbecue/Grill", + "eo": "Rostilo", + "es": "Parrilla", + "et": "Väligrill", + "eu": "Barbakoa/Parrila", + "fa": "باربیکیو / گریل", + "fi": "Grilli", + "fr": "Barbecue, grill", + "gl": "Barbacoa/Grella", + "he": "מנגל", + "hr": "Roštilj", + "hu": "Grillezőhely", + "id": "Barbekyu/Pemanggang", + "is": "Grill", + "it": "Barbecue/Griglia", + "ja": "バーベキュー場/グリル", + "ko": "바비큐/그릴", + "lt": "Barbekiu/Grilis", + "lv": "Barbekjū/Grills", + "mk": "Скара", + "nl": "Barbecue/Grill", + "no": "Grill", + "pl": "Grill", + "pt-BR": "Churrasqueira", + "pt": "Grelhador", + "ru": "Барбекю/Гриль", + "sk": "Stanovište pre gril", + "sl": "Okrepčevalnica", + "sr": "Роштиљ/печењара", + "sv": "Grillplats/Grill", + "tr": "Mangal Restoranı", + "uk": "Барбекю/мангал", + "vi": "Vỉ nướng", + "zh-CN": "烧烤设施", + "zh-HK": "燒烤", + "zh-TW": "燒烤" + } + }, + "amenity/bench": { + "title": { + "C": "Bench", + "af": "Bankie", + "ar": "مقعد", + "ast": "Asientu", + "bg": "Пейка", + "bn": "বেঞ্চ", + "bs": "Klupa", + "ca": "Banc", + "cs": "Lavička", + "da": "Bænk", + "de": "Sitzbank", + "el": "Παγκάκι", + "en-GB": "Bench", + "en": "Bench", + "eo": "Benko", + "es": "Banco / Asiento", + "et": "Pink", + "eu": "Banku", + "fa": "نیمکت", + "fi": "Penkki", + "fr": "Banc", + "gl": "Banco", + "he": "ספסל", + "hr": "Klupa", + "hu": "Pad", + "id": "Bangku", + "is": "Bekkur", + "it": "Panchina", + "ja": "ベンチ", + "kn": "ನ್ಯಾಯಪೀಠ", + "ko": "벤치", + "lt": "Suolas", + "lv": "Sols", + "mk": "Клупа", + "nl": "Zitbank", + "no": "Benk", + "pl": "Ławka", + "pt-BR": "Assento", + "pt": "Banco", + "ro": "Bancă", + "ru": "Скамейка", + "sk": "Lavička", + "sl": "Klop", + "sr": "Клупа", + "sv": "Bänk", + "ta": "விசுப்பலகை", + "tr": "Bank", + "uk": "Лавка", + "vi": "Băng ghế", + "yue": "長椅", + "zh-CN": "长椅", + "zh-HK": "長椅", + "zh-TW": "長椅", + "zh": "长凳" + } + }, + "amenity/bicycle_parking": { + "title": { + "C": "Bicycle Parking", + "af": "Fietsparkering", + "ar": "موقف دراجات هوائية", + "ast": "Aparcaderu de bicicletes", + "bg": "Паркинг за велосипеди", + "bn": "সাইকেল পার্ক করার জায়গা", + "bs": "Parking bicikala", + "ca": "Aparcament per a bicicletes", + "ckb": "گەراجی پاسکیل", + "cs": "Parkování kol", + "da": "Cykelparkering", + "de": "Fahrradparkplatz", + "el": "Στάθμευση Ποδηλάτων", + "en-GB": "Bicycle Parking", + "en": "Bicycle Parking", + "eo": "Bicikla parkumejo", + "es": "Estacionamiento de bicicletas", + "et": "Rattaparkla", + "eu": "Bizikletentzako Aparkalekua", + "fa": "پارکینگ دوچرخه", + "fi": "Pyöräpysäköinti", + "fr": "Parking à vélos", + "gl": "Aparcadoiro de bicicletas", + "he": "חניית אופניים", + "hr": "Parkiralište za bicikle", + "hu": "Kerékpártároló", + "hy": "Հեծանվային կայանատեղի", + "id": "Parkir Sepeda", + "is": "Hjólastæði", + "it": "Parcheggio biciclette", + "ja": "駐輪場", + "ko": "자전거 주차장", + "lt": "Dviračių stovėjimo aikštelė", + "lv": "Velo stāvvieta", + "mk": "Велосипедско паркиралиште", + "nl": "Fietsenstalling", + "no": "Sykkelparkering", + "pl": "Parking dla rowerów", + "pt-BR": "Bicicletário", + "pt": "Parque de bicicletas", + "ro": "Parcare biciclete", + "ru": "Велопарковка", + "sk": "Stojan pre bicykle", + "sl": "Parkirišče za kolesa", + "sr": "Бициклистички паркинг", + "sv": "Cykelparkering", + "ta": "ஈருருளை நிறுத்தகம்", + "tr": "Bisiklet Parkı", + "uk": "Велостоянка", + "vi": "Chỗ Đậu Xe đạp", + "yue": "泊單車處", + "zh-CN": "自行车停车处", + "zh-HK": "單車停放處", + "zh-TW": "單車停車場", + "zh": "自行车停放处" + } + }, + "amenity/bicycle_rental": { + "title": { + "C": "Bicycle Rental", + "af": "Fietshuur", + "ar": "تأجير دراجات", + "ast": "Alquiler de bicicletes", + "bg": "Наем на велосипеди", + "bn": "সাইকেল ভাড়া নেয়া", + "bs": "Iznajmljivanje bicikala", + "ca": "Lloguer de bicicletes", + "cs": "Půjčovna kol", + "da": "Cykeludlejning", + "de": "Fahrradverleih", + "el": "Ενοικιαζόμενα Ποδηλάτα", + "en-GB": "Bicycle Rental", + "en": "Bicycle Rental", + "eo": "Bicikl-pruntejo", + "es": "Alquiler de bicicletas", + "et": "Rattarent", + "eu": "Bizikleten Alokairua", + "fa": "اجاره دوچرخه", + "fi": "Kaupunkipyöräasema", + "fr": "Location de vélos", + "gl": "Alugueiro de bicicletas", + "he": "השכרת אופניים", + "hr": "Najam bicikla", + "hu": "Kerékpárkölcsönző", + "hy": "Հեծանիվի վարձակալություն", + "id": "Penyewaan Sepeda", + "is": "Hjólaleiga", + "it": "Stazione del Bike Sharing", + "ja": "レンタサイクル", + "ko": "자전거 대여소", + "lt": "Dviračių nuoma", + "lv": "Velonoma", + "mk": "Изнајмување велосипеди", + "nl": "Fietsverhuur", + "no": "Sykkelutleie", + "pl": "Wypożyczalnia rowerów", + "pt-BR": "Estação de bicicletas públicas", + "pt": "Aluguer de bicicletas", + "ro": "Închiriere biciclete", + "ru": "Велопрокат", + "sk": "Prenájom bicyklov", + "sl": "Izposoja koles", + "sr": "Изнајмљивање бицикла", + "sv": "Cykeluthyrning", + "ta": "சைக்கிள் வாடகை", + "tr": "Bisiklet Kiralama", + "uk": "Прокат велосипедів", + "vi": "Cho thuê Xe đạp", + "yue": "租單車舖", + "zh-CN": "自行车出租点", + "zh-HK": "單車出租", + "zh-TW": "單車出租", + "zh": "自行车租赁处" + } + }, + "amenity/bicycle_repair_station": { + "title": { + "C": "Bicycle Repair Tool Stand", + "am": "ቢስክሌት ጠጋኝ", + "ar": "ورشة إصلاح دراجات هوائية", + "ast": "Caballete pa reparar bicicletes", + "ca": "Lloc de reparació de Bicicletes", + "cs": "Montážní stojan na kola", + "da": "Cykelreparationsværktøj", + "de": "Fahrradreparatur-Werkzeugkasten", + "el": "Πάγκος Επισκευής Ποδηλάτων", + "en-GB": "Bicycle Repair Tool Stand", + "en": "Bicycle Repair Tool Stand", + "eo": "Bicikla mem-riparejo", + "es": "Puesto de reparación de bicicletas", + "et": "Jalgrattaremondi pukk", + "eu": "Bizikleta konpontzeko tresneriaren postua", + "fa": "ایستگاه تعمیر دوچرخه", + "fi": "Polkupyörän huoltoteline", + "fr": "Stand d'outils de réparation de vélos", + "gl": "Lugar para ferramentas de reparación de bicicletas", + "he": "עמדת תיקון אופניים", + "hr": "Stalak sa alatima za bicikle", + "hu": "Önálló kerékpárszerelő pont", + "is": "Hjólaviðgerðastandur", + "it": "Stazione di riparazione biciclette", + "ja": "自転車修理店", + "ko": "자전거 수리 도구", + "lv": "Velosipēdu Remonta Darbarīku Stends", + "mk": "Држач за поправка на велосипеди", + "nl": "Openbaar fietsgereedschap", + "no": "Sykkel Mekkestativ", + "pl": "Samoobsługowa stacja naprawy rowerów", + "pt-BR": "Estação de reparo de bicicletas", + "pt": "Ponto de reparação de bicicletas", + "ru": "Стойка для ремонта велосипедов", + "sk": "Stojan s náradím na opravu bicyklov", + "sl": "Stojalo za popravilo koles", + "sv": "Station för cykelreparation", + "tr": "Bisiklet Tamircisi", + "uk": "Станція ремонту велосипедів", + "vi": "Quầy Sửa Xe đạp", + "zh-CN": "自行车维修工具站", + "zh-HK": "單車維修站", + "zh-TW": "自行車維修工具站" + } + }, + "amenity/biergarten": { + "title": { + "C": "Biergarten", + "cs": "Pivní zahrada", + "de": "Biergarten", + "en": "Biergarten", + "eo": "Bierĝardeno", + "es": "Biergarten (Bar al aire libre)", + "eu": "Biergarten", + "fa": "بیرگارتن (حیاط با سرو آبجو - ریشه در مونیخ آلمان)", + "fr": "Biergarten", + "gl": "Biergarten (xardín da cervexa alemán)", + "he": "ביר גרדן", + "hu": "Sörkert", + "is": "Bjórgarður", + "it": "Biergarten", + "ja": "ビアガーデン", + "ko": "옥외 식탁", + "mk": "Пивска градина", + "nl": "Biergarten", + "no": "Ølhage", + "pl": "Ogródek piwny", + "pt-BR": "Biergarten", + "pt": "Jardim de cerveja", + "ru": "Пивной сад", + "sk": "Letná záhrada", + "sv": "Ölträdgård", + "tr": "Bira bahçesi", + "uk": "Пивний садок", + "vi": "Vườn Bia", + "zh-CN": "啤酒花园", + "zh-HK": "露天啤酒店", + "zh-TW": "啤酒花園" + } + }, + "amenity/binoculars": { + "title": { + "C": "Mounted Binoculars", + "ar": "مناظير مثبتة", + "cs": "Namontovaný dalekohled", + "da": "Fastmonteret kikkert", + "de": "Stationäres Aussichtsfernrohr", + "en": "Mounted Binoculars", + "eo": "Lorno", + "es": "Binoculares montados", + "fa": "دوربین شکاری سوار شده", + "gl": "Binoculares panorámicos", + "he": "משקפת מקובעת", + "hu": "Rögzített távcső", + "it": "Binocolo Montato", + "ja": "双眼鏡", + "ko": "고정식 쌍안경", + "mk": "Прицврстен двоглед", + "nl": "Vaste verrekijkers", + "pl": "Lornetka", + "pt-BR": "Binóculos montados", + "pt": "Binóculo panorâmico", + "sk": "Namontovaný ďalekohľad", + "sv": "Fast monterad kikare", + "tr": "Monte Dürbün", + "uk": "Стаціонарний бінокль", + "zh-CN": "双筒望远镜", + "zh-TW": "固定式雙筒望遠鏡" + } + }, + "amenity/boat_rental": { + "title": { + "C": "Boat Rental", + "ar": "محل استئجار قوارب", + "ast": "Alquiler de barcos", + "bs": "Iznajmljivanje plovila", + "ca": "Lloguer d'embarcacions", + "cs": "Půjčovna lodí", + "da": "Bådudlejning", + "de": "Bootsvermietung", + "el": "Ενοικίαση Σκαφών", + "en-GB": "Boat Rental", + "en": "Boat Rental", + "eo": "Boat-pruntejo", + "es": "Alquiler de barcos", + "et": "Paadi laenutus", + "eu": "Ontzi alokairu", + "fa": "کرایه قایق", + "fi": "Venevuokraamo", + "fr": "Location de bateau", + "gl": "Alugueiro de embarcacións", + "he": "השכרת סירה", + "hr": "Najam brodova", + "hu": "Hajókölcsönző", + "id": "Penyewaan Perahu Boat", + "is": "Bátaleiga", + "it": "Noleggio barche", + "ja": "貸しボート", + "ko": "보트 대여소", + "lt": "Laivų nuoma", + "lv": "Laivu īre", + "mk": "Изнајмување чамци", + "nl": "Bootverhuur", + "no": "Båuttleie", + "pl": "Wypożyczalnia łodzi", + "pt-BR": "Aluguel de barcos", + "pt": "Aluguer de barcos", + "ro": "Închiriere Barcă", + "ru": "Аренда Лодок", + "sk": "Prenájom lodí", + "sl": "Izposoja plovil", + "sr": "Изнајмљивање чамаца", + "sv": "Båtuthyrning", + "tr": "Bot Kiralama", + "uk": "Прокат човнів", + "vi": "Cho thuê Tàu", + "yue": "租艇", + "zh-CN": "船舶租赁处", + "zh-HK": "租艇", + "zh-TW": "小艇出租" + } + }, + "amenity/boat_storage": { + "title": { + "C": "Boat Storage", + "ar": "مخزن القوارب", + "cs": "Místo pro uložení lodí", + "da": "Bådlager", + "de": "Bootslagerplatz", + "en": "Boat Storage", + "eo": "Boat-garaĝo seka", + "es": "Almacenamiento de barcos", + "fa": "انبار قایق", + "gl": "Tenda de embarcacións", + "he": "אחסון סירות", + "hu": "Hajótároló", + "it": "Rimessaggio Barche", + "ja": "ボート店", + "mk": "Склад за чамци", + "nl": "Botenopslag", + "pl": "Przechowalnia łodzi", + "pt-BR": "Armazenamento de barco", + "pt": "Depósito de barcos", + "sk": "Sklad lodí", + "sv": "Båtförvaring", + "tr": "Tekne Depolaması", + "uk": "Зберігання човнів", + "zh-CN": "存船处", + "zh-TW": "般隻停放處" + } + }, + "amenity/bureau_de_change": { + "title": { + "C": "Currency Exchange", + "am": "የውጭ ምንዛሬ ቢሮ", + "ar": "تحويل أموال", + "ast": "Cambiu de moneda", + "ca": "Canvi de divisa", + "ckb": "گۆڕینەوەی دراو", + "cs": "Směnárna", + "da": "Valutaveksling", + "de": "Geldwechselstube", + "el": "Ανταλλακτήριο Συναλλάγματος", + "en-GB": "Currency Exchange", + "en": "Currency Exchange", + "eo": "Monŝanĝejo", + "es": "Cambio de moneda", + "et": "Valuutavahetus", + "eu": "Moneta trukea", + "fa": "تبدیل ارز / صرافی", + "fi": "Valuutanvaihtopiste", + "fr": "Bureau de change", + "gl": "Troco de divisas", + "he": "המרת מט״ח", + "hr": "Mjenjačnica", + "hu": "Pénzváltó", + "id": "Penukaran Mata Uang", + "is": "Gjaldmiðlaskipti", + "it": "Cambiavalute", + "ja": "両替所", + "ko": "환전소", + "lt": "Valiutos keitykla", + "lv": "Valūtas Maiņa", + "mk": "Менувачница", + "nl": "Wisselkantoor", + "no": "Valutaveksling", + "pl": "Kantor", + "pt-BR": "Casa de câmbio", + "pt": "Agência de câmbio", + "ro": "Schimbare Valută", + "ru": "Пункт обмена валюты", + "sk": "Zmenáreň", + "sl": "Menjalnica", + "sr": "Мењачница", + "sv": "Växlingskontor", + "ta": "பணப் பரிமாற்றம்", + "tr": "Döviz Bürosu", + "uk": "Обмін валют", + "vi": "Đổi tiền", + "zh-CN": "货币兑换", + "zh-HK": "外幣兌換", + "zh-TW": "外幣兌換" + } + }, + "amenity/cafe": { + "title": { + "C": "Cafe", + "af": "Kafee", + "am": "ሻይ ቤት", + "ar": "مقهى", + "ast": "Café", + "bg": "Кафене", + "bn": "ক্যাফে", + "bs": "Kafe", + "ca": "Cafè", + "cs": "Kavárna", + "da": "Cafe", + "de": "Café", + "dv": "ކެފޭ", + "el": "Καφετέρια", + "en-GB": "Cafe", + "en": "Cafe", + "eo": "Kafejo", + "es": "Cafetería", + "et": "Kohvik", + "eu": "Kafetegi", + "fa": "کافه", + "fi": "Kahvila", + "fr": "Café", + "gl": "Cafetaría", + "he": "בית קפה", + "hr": "Kafić", + "hu": "Kávézó", + "hy": "Սրճարան", + "id": "Kafe", + "is": "Kaffihús", + "it": "Caffè", + "ja": "喫茶店", + "ko": "카페", + "lt": "Kavinė", + "lv": "Kafejnīca", + "mk": "Кафетерија", + "ms": "Kafe", + "ne": "क्याफे", + "nl": "Brasserie", + "no": "Kafé", + "pl": "Kawiarnia", + "pt-BR": "Cafeteria", + "pt": "Café", + "ro": "Cafenea", + "ru": "Кафе", + "sk": "Kaviareň", + "sl": "Kavarna", + "so": "Kafateeriya", + "sr": "Кафе", + "sv": "Café", + "ta": "டீக்கடை", + "tr": "Kafe", + "uk": "Кафе", + "vi": "Quán Cà phê/Trà/Chè", + "yue": "茶座", + "zh-CN": "咖啡馆", + "zh-HK": "茶座", + "zh-TW": "咖啡廳", + "zh": "咖啡" + } + }, + "amenity/car_pooling": { + "title": { + "C": "Car Pooling Station", + "ar": "محطة تجميع السيارات", + "cs": "stanice spolujízdy", + "da": "Samkørselsstation", + "de": "Car-Pooling-Station", + "el": "Σταθμός Συγκέντρωσης Αυτοκινήτων", + "en": "Car Pooling Station", + "eo": "Haltejo aŭtomobila (carpooling)", + "es": "Estación de vehículo compartido (Carpooling)", + "fa": "ایستگاه هم‌سفری (نوعی اشتراک خودرو)", + "fi": "Kimppakyytiasema", + "fr": "Aire de covoiturage", + "gl": "Estación de automóbil compartido (Carpooling)", + "he": "תחנת שיתוף נסיעות", + "hu": "Telekocsihely", + "it": "Stazione per il Car Pooling", + "ja": "カープール", + "mk": "Станица за заедничко автомобилско возење", + "nl": "Carpoolparking", + "pl": "Carpooling", + "pt-BR": "Estação de carona solidária", + "pt": "Posto de boleia partilhada", + "sv": "Bilpoolstation", + "tr": "Araç Havuzlama İstasyonu", + "uk": "Місце посадки/висадки пасажирів", + "vi": "Chỗ Đón để Đi Cùng Xe", + "zh-CN": "拼车站", + "zh-TW": "汽車共乘站" + } + }, + "amenity/car_rental": { + "title": { + "C": "Car Rental", + "af": "Kar huur", + "am": "የመኪና ማከራያ", + "ar": "محل إيجار سيارات", + "ast": "Alquiler d'automóviles", + "bg": "Коли под наем", + "bn": "গাড়ি ভাড়া", + "bs": "Rent-a-car", + "ca": "Lloguer de cotxes", + "cs": "Půjčovna aut", + "da": "Biludlejning", + "de": "Autovermietung", + "el": "Ενοικίαση Αυτοκινήτων", + "en-GB": "Car Rental", + "en": "Car Rental", + "eo": "Aŭtomobil-pruntejo", + "es": "Alquiler de automóviles", + "et": "Autorent", + "eu": "Auto Alokairua", + "fa": "کرایه ماشین", + "fi": "Autonvuokraus", + "fr": "Location de voiture", + "gl": "Alugueiro de automóbiles", + "he": "השכרת רכב", + "hr": "Najam automobila", + "hu": "Autókölcsönző", + "id": "Penyewaan Mobil", + "is": "Bílaleiga", + "it": "Noleggio auto", + "ja": "レンタカー", + "ko": "자동차 대여점", + "lt": "Automobilių nuoma", + "lv": "Autonoma", + "mk": "Изнајмување автомобили", + "nl": "Autoverhuur", + "no": "Bilutleie", + "pl": "Wypożyczalnia samochodów", + "pt-BR": "Locadora de veículos", + "pt": "Aluguer de automóveis", + "ro": "Închiriere Mașini", + "ru": "Аренда автомобилей", + "sk": "Autopožičovňa", + "sl": "Izposoja avtomobilov", + "sr": "Изнајмљивање возила", + "sv": "Biluthyrning", + "tr": "Araç Kiralama", + "uk": "Прокат автомобілів", + "vi": "Cho thuê Xe", + "yue": "租車舖", + "zh-CN": "汽车租赁", + "zh-HK": "汽車租賃", + "zh-TW": "汽車租車店" + } + }, + "amenity/car_sharing": { + "title": { + "C": "Car Sharing Station", + "am": "የመኪና ዕቃ መለዋወጫ መሸጫ", + "ar": "محطة مشاركة السيارات", + "cs": "stanice sdílení aut", + "da": "Delebilsstation", + "de": "Car Sharing Station", + "en": "Car Sharing Station", + "eo": "Aŭtomobil-pruntejo komunuma (organizita kunveturado)", + "es": "Estación de uso temporal de vehículos (Carsharing)", + "fa": "ایستگاه اشتراک‌گذاری خودرو", + "fr": "Station d'auto-partage", + "gl": "Estación de vehículos compartidos (Carsharing)", + "he": "תחנת שיתוף מכוניות", + "hu": "Autómegosztó állomás", + "it": "Stazione per il Car Sharing", + "ja": "カーシェアリング", + "ko": "카셰어링 센터", + "mk": "Станица за споделување автомобили", + "nl": "Autodelen", + "pl": "Stacja miejskiej wypożyczalni samochodów", + "pt-BR": "Estação de compartilhamento de carros", + "pt": "Posto de partilha de automóvel", + "sk": "Stanica zdieľania áut", + "sv": "Bildelningsstation", + "tr": "Araç Paylaşma İstasyonu", + "uk": "Каршерінг станція", + "vi": "Trạm Chia sẻ Xe", + "zh-CN": "共享汽车站点", + "zh-TW": "共享汽車站" + } + }, + "amenity/car_wash": { + "title": { + "C": "Car Wash", + "af": "Karwas", + "ar": "غسيل سيارات", + "ast": "Llaváu de coches", + "bg": "Автомивка", + "bs": "Autopraonica", + "ca": "Rentat de cotxes", + "ckb": "شووشتنگەی ئۆتۆمبێل", + "cs": "Automyčka", + "da": "Bilvask", + "de": "Autowäsche", + "el": "Πλυντήριο Αυτοκινήτων", + "en-GB": "Car Wash", + "en": "Car Wash", + "eo": "Aŭtomobil-purigejo", + "es": "Lavado de automóviles", + "et": "Autopesula", + "eu": "Auto garbiketa", + "fa": "کارواش", + "fi": "Autopesula", + "fr": "Station de lavage de voiture", + "gl": "Lavado de automóbiles", + "he": "שטיפת רכב", + "hr": "Autopraonica", + "hu": "Autómosó", + "id": "Pencucian Mobil", + "is": "Bílaþvottur", + "it": "Autolavaggio", + "ja": "洗車場", + "ko": "세차장", + "lt": "Automobilių plovykla", + "lv": "Automazgātuve", + "mk": "Автоперална", + "nl": "Autowasstraat", + "no": "Bilvask", + "pl": "Myjnia samochodowa", + "pt-BR": "Lava a jato", + "pt": "Lavagem de veículos", + "ro": "Spălătorie Auto", + "ru": "Автомойка", + "sk": "Autoumyváreň", + "sl": "Avtopralnica", + "sr": "Ауто-перионица", + "sv": "Biltvätt", + "tr": "Araç Yıkama", + "uk": "Автомийка", + "vi": "Rửa xe", + "yue": "洗車舖", + "zh-CN": "洗车", + "zh-HK": "洗車店", + "zh-TW": "洗車店", + "zh": "洗车" + } + }, + "amenity/casino": { + "title": { + "C": "Casino", + "ar": "كازينو", + "ast": "Casino", + "ca": "Casino", + "ckb": "گازینۆ", + "cs": "Kasino", + "da": "Kasino", + "de": "Kasino", + "el": "Καζίνο", + "en-GB": "Casino", + "en": "Casino", + "eo": "Monludejo", + "es": "Casino", + "et": "Kasiino", + "eu": "Kasino", + "fa": "کازینو", + "fi": "Kasino", + "fr": "Casino", + "gl": "Casino", + "he": "קזינו", + "hr": "Kasino", + "hu": "Kaszinó", + "id": "Kasino", + "is": "Spilavíti", + "it": "Casinò", + "ja": "カジノ", + "ko": "카지노", + "lt": "Kazino", + "lv": "Kazino", + "mk": "Коцкарница", + "nl": "Casino", + "no": "Kasino", + "pl": "Kasyno", + "pt-BR": "Cassino", + "pt": "Casino", + "ro": "Cazino", + "ru": "Казино", + "sk": "Kasíno", + "sl": "Igralnica", + "sr": "Казино", + "sv": "Kasino", + "tr": "Kumarhane", + "uk": "Казино", + "vi": "Sòng bạc", + "zh-CN": "赌场", + "zh-HK": "賭場", + "zh-TW": "賭場" + } + }, + "amenity/charging_station": { + "title": { + "C": "Charging Station", + "ar": "محطة شحن", + "ast": "Estación de recarga", + "ca": "Estació de càrrega", + "cs": "Nabíjecí stanice", + "da": "Opladerstation", + "de": "Ladestation für Elektrofahrzeuge", + "el": "Σταθμός Φόρτισης", + "en-GB": "Charging Station", + "en": "Charging Station", + "eo": "Ŝargostacio", + "es": "Estación de carga para vehículos eléctricos", + "et": "Laadimisjaam", + "eu": "Kargatzeko geltokia", + "fa": "ایستگاه شارژ", + "fi": "Latauspiste", + "fr": "Borne de recharge", + "gl": "Estación de carga", + "he": "תחנת טעינה", + "hr": "Punionica za električna vozila", + "hu": "Elektromos töltőállomás", + "is": "Hleðslustöð", + "it": "Stazione di ricarica", + "ja": "充電スタンド", + "ko": "충전소", + "lt": "Įkrovimo stotelė", + "lv": "Uzlādes stacija", + "mk": "Напојна станица", + "nl": "Oplaadstation", + "no": "Ladestasjon", + "pl": "Stacja ładowania pojazdów", + "pt-BR": "Estação de carregamento", + "pt": "Posto de carregamento", + "ro": "Benzinărie", + "ru": "Станция зарядки", + "sk": "Nabíjacia stanica", + "sl": "Polnilna postaja", + "sv": "Laddstation", + "tr": "Şarj İstasyonu", + "uk": "Зарядна станція", + "vi": "Trạm Sạc Pin", + "zh-CN": "充电站", + "zh-HK": "充電站", + "zh-TW": "充電站" + } + }, + "amenity/childcare": { + "title": { + "C": "Nursery/Childcare", + "ar": "رعاية الأطفال", + "ast": "Preescolar/Guardería", + "ca": "Llar d'Infants", + "cs": "Předškolní a mimoškolní péče", + "da": "Dagpleje/Vuggestue", + "de": "Kinderkrippenbetreuung, Kindertagesstätte", + "el": "Παιδιατρική", + "en-GB": "Nursery/Childcare", + "en": "Nursery/Childcare", + "eo": "Bebovartejo", + "es": "Guardería/Cuidado de niños", + "et": "Lastehoid", + "eu": "Haurtzendegi/ Ume zaintza", + "fa": "مهدکودک/مراقبت از کودکان", + "fi": "Päiväkoti", + "fr": "Nursery/Childcare", + "gl": "Gardaría", + "he": "גנון", + "hr": "Jaslice", + "hu": "Bölcsőde", + "id": "Tempat Penitipan Anak", + "is": "Barnagæsla/dagvistun", + "it": "Asilo nido", + "ja": "保育所", + "ko": "보육/육아", + "lv": "Bērnistaba / Bērnu aprūpe", + "mk": "Детска градинка", + "nl": "Kinderdagverblijf", + "pl": "Żłobek", + "pt-BR": "Berçário ou creche", + "pt": "Berçário / Creche", + "ro": "Grădiniță", + "ru": "Детская комната", + "sk": "Detská starostlivosť", + "sl": "Jasli / Vrtec", + "sr": "Обданиште", + "sv": "Barnomsorg", + "tr": "Çocuk Bakımı", + "uk": "Дитяча кімната", + "vi": "Giữ trẻ", + "zh-CN": "托儿所/保育园", + "zh-HK": "託兒所/幼兒護理", + "zh-TW": "托兒所/托嬰處" + } + }, + "amenity/cinema": { + "title": { + "C": "Cinema", + "af": "Fliek", + "am": "ሲኒማ ቤት", + "ar": "سينما", + "ast": "Cine", + "bg": "Кино", + "bn": "সিনেমা", + "bs": "Kino", + "ca": "Cinema", + "ckb": "سینەما", + "cs": "Kino", + "da": "Biograf", + "de": "Kino", + "dv": "ސިނަމާ", + "el": "Κινηματογράφος", + "en-GB": "Cinema", + "en": "Cinema", + "eo": "Kinejo", + "es": "Cine", + "et": "Kino", + "eu": "Zinema", + "fa": "سینما", + "fi": "Elokuvateatteri", + "fr": "Cinéma", + "gl": "Cine", + "he": "קולנוע", + "hr": "Kino", + "hu": "Mozi", + "hy": "Կինոթատրոն", + "id": "Bioskop", + "is": "Kvikmyndahús", + "it": "Cinema", + "ja": "映画館", + "kn": "ಸಿನಿಮಾ", + "ko": "영화관", + "lt": "Kino teatras", + "lv": "Kino", + "mk": "Кино", + "nl": "Bioscoop", + "no": "Kino", + "pl": "Kino", + "pt-BR": "Cinema", + "pt": "Cinema", + "ro": "Cinema", + "ru": "Кинотеатр", + "sk": "Kino", + "sl": "Kino", + "so": "Shaneemo", + "sr": "Биоскоп", + "sv": "Biograf", + "ta": "சினிமா", + "te": "సినిమా హాలు", + "tr": "Sinema", + "uk": "Кінотеатр", + "vi": "Rạp phim", + "yue": "電影戲院", + "zh-CN": "电影院", + "zh-HK": "戲院", + "zh-TW": "電影院", + "zh": "电影院" + } + }, + "amenity/clinic": { + "title": { + "C": "Clinic", + "am": "ክሊኒክ", + "ar": "عيادة", + "ast": "Clínica", + "bs": "Klinika", + "ca": "Clínica", + "ckb": "نۆڕینگە", + "cs": "Poliklinika", + "da": "Klinik", + "de": "Ärztezentrum", + "el": "Κλινική", + "en-GB": "Clinic", + "en": "Clinic", + "eo": "Kuracistejo (centro de komunuma sano)", + "es": "Clínica", + "et": "Kliinik", + "eu": "Erietxe", + "fa": "کلینیک", + "fi": "Terveyskeskus", + "fr": "Centre médical de taille moyenne, soins en ambulatoire", + "gl": "Clínica ou centro de saúde", + "he": "מרפאה", + "hr": "Klinika", + "hu": "Rendelőintézet", + "id": "Klinik", + "is": "Læknastofa", + "it": "Clinica medica", + "ja": "クリニック(中規模病院)", + "kn": "ಚಿಕಿತ್ಸಾಲಯ", + "ko": "클리닉", + "lt": "Klinika", + "lv": "Klīnika", + "mk": "Клиника", + "nl": "Dagkliniek", + "no": "Klinikk", + "pl": "Klinika/oddział", + "pt-BR": "Clínica ou posto de saúde", + "pt": "Centro de saúde / Clínica", + "ro": "Clinică", + "ru": "Клиника", + "sk": "Klinika", + "sl": "Klinika", + "sr": "Клиника", + "sv": "Vårdcentral", + "tr": "Klinik", + "uk": "Клініка", + "vi": "Trạm Y tế", + "zh-CN": "诊所", + "zh-HK": "診所", + "zh-TW": "診所" + } + }, + "amenity/clock": { + "title": { + "C": "Clock", + "ar": "ساعة", + "ast": "Reló", + "ca": "Rellotge", + "ckb": "کاتژمێر", + "cs": "Hodiny", + "da": "Ur", + "de": "Uhr", + "el": "Ρολόι", + "en-GB": "Clock", + "en": "Clock", + "eo": "Horloĝo", + "es": "Reloj", + "et": "Kell", + "eu": "Ordulari", + "fa": "ساعت", + "fi": "Kello", + "fr": "Horloge", + "gl": "Reloxo", + "he": "שעון", + "hi": "घडी", + "hr": "Sat", + "hu": "Óra", + "id": "Jam", + "is": "Klukka", + "it": "Orologio", + "ja": "時計", + "kn": "ಗಡಿಯಾರ", + "ko": "시계", + "lt": "Laikrodis", + "lv": "Pulkstenis", + "mk": "Часовник", + "nl": "Klok", + "no": "Klokke", + "pl": "Zegar", + "pt-BR": "Relógio", + "pt": "Relógio", + "ro": "Ceas", + "ru": "Часы", + "sk": "Hodiny", + "sl": "Ura", + "sr": "Сат", + "sv": "Klocka", + "ta": "கடிகாரம்", + "tr": "Saat", + "uk": "Годинник", + "vi": "Đồng hồ", + "zh-CN": "时钟", + "zh-HK": "時鐘", + "zh-TW": "時鐘" + } + }, + "amenity/college": { + "title": { + "C": "College Grounds", + "am": "ኮሌጅ", + "ar": "أرض كلية", + "ast": "Terrén de colexu universitariu", + "ca": "Escola professional", + "cs": "Prostor vyšší odborné školy/college", + "da": "Universitetsområder", + "de": "Hochschulgelände", + "el": "Χώρος Κολλεγίου", + "en-GB": "College Grounds", + "en": "College Grounds", + "eo": "Postmezgrada lernejo (ISCED 4)", + "es": "Terreno de centro educativo superior no universitario", + "et": "Kolledžiala", + "eu": "Unibertsitate Eremu", + "fa": "محیط کالج", + "fi": "Korkeakoulualue (college)", + "fr": "Enseignement supérieur (non universitaire) - institution ou campus (terrain)", + "gl": "Área de educación superior", + "he": "גן המכללה", + "hr": "Fakultetsko zemljište", + "hu": "Főiskola területe", + "id": "Lapangan Kampus", + "is": "Framhaldskólalóð", + "it": "Area di un’accademia", + "ja": "短大・高専・専門学校(代表点または敷地)", + "ko": "전문대학 부지", + "lt": "Kolegijos kiemas", + "mk": "Средношколски двор", + "nl": "Campus van beroepsschool", + "pl": "Teren koledżu / szkoły policealnej", + "pt-BR": "Escola técnica", + "ru": "Территория колледжа", + "sk": "Vysoká škola", + "sl": "Šolsko središče", + "sv": "Collegeområde", + "tr": "Üniversite Kampüsü", + "uk": "Територія коледжу", + "vi": "Sân trường Cao đẳng", + "zh-CN": "学院", + "zh-HK": "學院範圍", + "zh-TW": "學院範圍" + } + }, + "amenity/community_centre": { + "title": { + "C": "Community Center", + "am": "የማህበረሰብ ማዕከል", + "ar": "مركز اجتماعي", + "ast": "Centru comunitariu", + "ca": "Centre Comunitari", + "cs": "Komunitní centrum", + "da": "Medborgerhus", + "de": "Gemeindezentrum", + "el": "Κέντρο της Κοινότητας", + "en-AU": "Community Centre", + "en-GB": "Community Centre", + "en": "Community Center", + "eo": "Komunuma centro", + "es": "Centro Comunitario", + "et": "Kogukonna keskus", + "eu": "Gizarte Etxe", + "fa": "مرکز اجتماع", + "fi": "Yhteisökeskus", + "fr": "Salle polyvalente", + "gl": "Centro comunitario", + "he": "מרכז קהילתי", + "hr": "Društveni centar", + "hu": "Közösségi ház", + "is": "Samfélagsmiðstöð", + "it": "Centro sociale (pubblico)", + "ja": "コミュニティセンター", + "ko": "커뮤니티 센터", + "lt": "Bendruomenės centras", + "lv": "Kopienas centrs", + "mk": "Месна заедница", + "nl": "Buurthuis", + "no": "Samfunnshus", + "pl": "Centrum społeczności", + "pt-BR": "Centro comunitário", + "pt": "Centro comunitário", + "ro": "Centru Comunitar", + "ru": "Культурный центр", + "sk": "Komunitné centrum", + "sl": "Središče skupnosti", + "sr": "Дом културе", + "sv": "Samlingslokal", + "tr": "Toplum Merkezi", + "uk": "Суспільний центр", + "vi": "Trung tâm Cộng đồng", + "zh-CN": "社区活动中心", + "zh-HK": "社區中心", + "zh-TW": "社區中心" + } + }, + "amenity/compressed_air": { + "title": { + "C": "Compressed Air", + "ar": "منفاخ إطارات دراجات", + "ast": "Aire comprimíu", + "ca": "Aire comprimit", + "cs": "Stlačený vzduch", + "da": "Luftpumpe", + "de": "Druckluft", + "el": "Πεπιεσμένος Αέρας", + "en-GB": "Compressed Air", + "en": "Compressed Air", + "eo": "Gaskunpremilo", + "es": "Aire comprimido", + "et": "Suruõhk", + "eu": "Aire konpromitua", + "fa": "هوای فشرده", + "fi": "Ilmanpainepiste", + "fr": "Air comprimé", + "gl": "Aire comprimido", + "he": "אוויר דחוס", + "hr": "Komprimirani zrak", + "hu": "Sűrített levegő", + "id": "Pompa Ban", + "is": "Loftdæla", + "it": "Aria Compressa", + "ja": "空気入れ", + "ko": "압축된 공기", + "lt": "Suspaustas oras", + "lv": "Saspiests Gaiss", + "mk": "Компресор", + "nl": "Perslucht", + "no": "Komprimert Luft", + "pl": "Kompresor", + "pt-BR": "Bomba de ar comprimido", + "pt": "Ar comprimido", + "ro": "Aer Comprimat", + "ru": "Сжатый воздух", + "sk": "Stlačený vzduch", + "sl": "Zračni kompresor", + "sr": "Компримовани ваздух", + "sv": "Tryckluft", + "tr": "Hava Basma İstasyonu", + "uk": "Стиснене повітря", + "vi": "Khí Nén", + "zh-CN": "压缩空气", + "zh-HK": "打氣服務", + "zh-TW": "壓縮空氣" + } + }, + "amenity/conference_centre": { + "title": { + "C": "Convention Center", + "cs": "konferenční centrum", + "de": "Kongresszentrum", + "en-AU": "Convention Centre", + "en": "Convention Center", + "eo": "Konferenca centro", + "es": "Centro de convenciones", + "et": "Konverentsikeskus", + "fa": "مرکز همایش", + "fi": "Kongressikeskus", + "fr": "Centre de congrés", + "gl": "Centro de convencións", + "he": "מרכז כנסים", + "hu": "Konferenciaközpont", + "it": "Centro conferenze", + "ja": "コンベンションセンター", + "ko": "컨벤션 센터", + "mk": "Центар за собири", + "nl": "Congrescentrum", + "no": "Konferansesenter", + "pl": "Centrum konferencyjne", + "pt-BR": "Centro de convenções", + "pt": "Centro de convenções", + "sk": "Konferenčné centrum", + "sr": "Конгресни центар", + "sv": "Kongresscenter", + "tr": "Kongre Merkezi", + "uk": "Конференц-центр", + "vi": "Trung tâm Hội nghị", + "zh-CN": "会议中心", + "zh-TW": "會議中心" + } + }, + "amenity/courthouse": { + "title": { + "C": "Courthouse", + "af": "Hof", + "am": "ፍርድ ቤት", + "ar": "محكمة", + "ast": "Xulgáu", + "bg": "Съд", + "bs": "Sudnica", + "ca": "Jutjat", + "cs": "Soud", + "da": "Domstolsbygning", + "de": "Gericht", + "el": "Δικαστήριο", + "en-GB": "Courthouse", + "en": "Courthouse", + "eo": "Juĝdomo", + "es": "Juzgado", + "et": "Kohtumaja", + "eu": "Epaitegi", + "fa": "دادگاه", + "fi": "Tuomioistuin", + "fr": "Tribunal", + "gl": "Xulgado", + "he": "בית משפט", + "hr": "Zgrada suda", + "hu": "Bíróság", + "id": "Pengadilan", + "is": "Dómhús", + "it": "Tribunale", + "ja": "裁判所", + "ko": "법원", + "lt": "Teismo rūmai", + "lv": "Tiesas nams", + "mk": "Суд", + "nl": "Gerechtsgebouw", + "no": "Tinghus", + "pl": "Sąd", + "pt-BR": "Tribunal", + "pt": "Tribunal", + "ro": "Tribunal", + "ru": "Суд", + "sk": "Súd", + "sl": "Sodišče", + "sr": "Судница", + "sv": "Domstol", + "tr": "Mahkeme", + "uk": "Суд", + "vi": "Tòa", + "yue": "法庭", + "zh-CN": "法院", + "zh-HK": "法庭", + "zh-TW": "法院", + "zh": "法院" + } + }, + "amenity/crematorium": { + "title": { + "C": "Crematorium", + "ar": "محرقة موتى", + "ast": "Crematoriu", + "ca": "Crematori", + "cs": "Krematorium", + "da": "Krematorium", + "de": "Krematorium", + "el": "Κρεματόριο", + "en-GB": "Crematorium", + "en": "Crematorium", + "eo": "Kadavrobruligejo", + "es": "Crematorio", + "et": "Krematoorium", + "eu": "Errausketa-labe", + "fa": "مٌرده سوز", + "fi": "Krematorio", + "fr": "Crématorium", + "gl": "Crematorio", + "he": "משרפה", + "hu": "Krematórium", + "is": "Líkbrennsla", + "it": "Forno crematorio", + "ja": "火葬場", + "ko": "화장장", + "lt": "Krematoriumas", + "lv": "Krematorija", + "mk": "Крематориум", + "nl": "Crematorium", + "no": "Krematorium", + "pl": "Krematorium", + "pt-BR": "Crematório", + "pt": "Crematório", + "ro": "Crematoriu", + "ru": "Крематорий", + "sk": "Krematórium", + "sl": "Krematorij", + "sr": "Крематоријум", + "sv": "Krematorium", + "ta": "சுடுகாடு", + "tr": "Cesed Yakma Yeri", + "uk": "Крематорій", + "vi": "Lò Thiêu", + "zh-CN": "火葬场", + "zh-HK": "火葬場", + "zh-TW": "火葬場" + } + }, + "amenity/dentist": { + "title": { + "C": "Dentist", + "am": "የጥርስ ሃኪም", + "ar": "طبيب أسنان", + "ast": "Dentista", + "bs": "Zubar", + "ca": "Dentista", + "ckb": "ددانساز", + "cs": "Zubař", + "da": "Tandlæge", + "de": "Zahnarzt, Zahnärztin", + "el": "Οδοντιατρείο", + "en-GB": "Dentist", + "en": "Dentist", + "eo": "Dentistejo", + "es": "Dentista", + "et": "Hambaarst", + "eu": "Dentista", + "fa": "دندانپزشکی", + "fi": "Hammaslääkäriasema", + "fr": "Dentiste", + "gl": "Dentista", + "he": "מרפאת שיניים", + "hr": "Zubar", + "hu": "Fogorvos", + "id": "Dokter Gigi", + "is": "Tannlæknir", + "it": "Dentista", + "ja": "歯医者", + "kn": "ದಂತವೈದ್ಯ", + "ko": "치과 의원", + "lt": "Dantistas", + "lv": "Zobārsts", + "mk": "Забар", + "nl": "Tandarts", + "nn": "Tannlege", + "no": "Tannlege", + "pl": "Dentysta", + "pt-BR": "Dentista", + "pt": "Dentista", + "ro": "Dentist", + "ru": "Стоматология", + "sk": "Zubár", + "sl": "Zobozdravnik", + "sr": "Зубар", + "sv": "Tandläkare", + "ta": "பல் மருத்துவர்", + "tr": "Dişçi", + "uk": "Стоматолог", + "vi": "Nha sĩ", + "yue": "牙醫", + "zh-CN": "牙科医院", + "zh-HK": "牙醫", + "zh-TW": "牙醫" + } + }, + "amenity/dive_centre": { + "title": { + "C": "Dive Center", + "ar": "مركز للغوص", + "cs": "Centrum potápění", + "de": "Tauchschule", + "el": "Κέντρο Καταδύσεων", + "en-AU": "Dive Centre", + "en-GB": "Dive Centre", + "en": "Dive Center", + "eo": "Centro de subakva naĝado", + "es": "Centro de buceo", + "fa": "مرکز غواصی", + "fi": "Sukelluskeskus", + "fr": "Centre de plongée", + "gl": "Centro de mergullo", + "he": "מרכז צלילה", + "hu": "Búvárközpont", + "is": "Köfunarmiðstöð", + "it": "Centro subacqueo", + "ja": "ダイブセンター", + "ko": "다이브 센터", + "mk": "Нуркачки центар", + "nl": "Duikcentrum", + "no": "Dykkesenter", + "pl": "Centrum nurkowe", + "pt-BR": "Centro de mergulho", + "pt": "Centro de mergulho", + "sk": "Centrum potápania", + "sr": "Ронилачки центар", + "sv": "Dykcenter", + "tr": "Dalış Merkezi", + "uk": "Центр навчання підводного плавання", + "vi": "Trung tâm Lặn biển", + "zh-CN": "潜水中心", + "zh-HK": "潛水中心", + "zh-TW": "潛水中心" + } + }, + "amenity/doctors": { + "title": { + "C": "Doctor", + "am": "ክሊኒክ", + "ar": "طبيب", + "ast": "Doctor", + "ca": "Doctor", + "ckb": "پزیشک", + "cs": "Lékař", + "da": "Læge", + "de": "Arzt, Ärztin", + "el": "Ιατρός", + "en-GB": "Doctor", + "en": "Doctor", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "et": "Arst", + "eu": "Mediku", + "fa": "مطب دکتر", + "fi": "Yksityinen lääkäri", + "fr": "Médecin", + "gl": "Doutor", + "he": "רופא", + "hr": "Doktor", + "hu": "Orvosi rendelő", + "is": "Læknir", + "it": "Medico di base", + "ja": "医院(小規模病院)", + "kn": "ವೈದ್ಯರು", + "ko": "의원", + "lt": "Daktaras", + "lv": "Dakteris", + "mk": "Лекар", + "nl": "Dokter", + "no": "Lege", + "pl": "Gabinet lekarski lub przychodnia", + "pt-BR": "Consultório médico", + "pt": "Consultório médico", + "ro": "Doctor", + "ru": "Кабинет врача", + "sk": "Doktor", + "sl": "Zdravnik", + "sr": "Доктор", + "sv": "Doktor", + "ta": "மருத்துவர்", + "tr": "Doktor", + "uk": "Лікар", + "vi": "Bác sĩ", + "yue": "醫生", + "zh-CN": "医师", + "zh-HK": "醫生", + "zh-TW": "醫生" + } + }, + "amenity/dojo": { + "title": { + "C": "Dojo / Martial Arts Academy", + "ar": "دوجو / أكاديمية الفنون القتالية", + "ast": "Dojo / Academia d'artes marciales", + "ca": "Dojo / Acadèmia d'arts marcials", + "cs": "Škola bojových umění", + "da": "Dojo/Kampsportsakademi", + "de": "Kampfsportstudio", + "el": "Ντότζο/ Σχολή Πολεμικών Τεχνών", + "en-GB": "Dojo / Martial Arts Academy", + "en": "Dojo / Martial Arts Academy", + "eo": "Doĵo / batalart-lernejo", + "es": "Academia de artes marciales", + "fa": "باشگاه / آموزشگاه هنرهای رزمی", + "fi": "Japanilaisten itsepuolustuslajien harjoittelupaikka", + "fr": "Dojo", + "gl": "Dojo/academia de artes marciais", + "he": "דוג׳ו / מרכז לאומנויות לחימה", + "hr": "Škola borilačkih vještina", + "hu": "Harcművészeti edzőterem / dodzso", + "id": "Sasana Bela Diri", + "is": "Dojo / Bardagaíþróttir", + "it": "Dojo/Accademia di arti marziali", + "ja": "道場", + "ko": "도장 / 무술 학원", + "lv": "Dojo / Karatē apmācība", + "mk": "Училиште за боречки вештини", + "nl": "Dojo / School voor Japanse krijgskunsten", + "pl": "Dojo / szkoła sztuk walki", + "pt-BR": "Academia de Artes Marciais", + "pt": "Centro de artes marciais", + "ru": "Додзё / Школа боевых искусств", + "sk": "Škola bojových umení", + "sl": "Dojo in šola borilnih veščin", + "sr": "Школа борилачких вештина", + "sv": "Dojo / Akademi för kampsport", + "tr": "Dövüş Sanatları Akademisi", + "uk": "Додзьо / Школа бойових мистецтв", + "vi": "Võ đường", + "zh-CN": "道场/武术学院", + "zh-HK": "道場/武術學院", + "zh-TW": "道場/武術研習班" + } + }, + "amenity/dressing_room": { + "title": { + "C": "Changing Room", + "ar": "غرفة التبديل", + "cs": "kabinka pro převlečení", + "de": "Umkleideraum", + "el": "Αποδυτήρια", + "en": "Changing Room", + "eo": "Vestejo", + "es": "Vestuario", + "fa": "اتاق تعویض لباس", + "fi": "Pukuhuone", + "fr": "Vestiaire", + "gl": "Vestiario", + "he": "חדר הלבשה", + "hu": "Öltöző", + "it": "Camerino", + "ja": "更衣室", + "ko": "탈의실", + "mk": "Соблекувална", + "nl": "Kleedkamer", + "no": "Garderobe", + "pl": "Przebieralnia", + "pt-BR": "Vestiário", + "pt": "Cabine de provas", + "sk": "Šatňa", + "sr": "Свлачионица", + "sv": "Omklädningsrum", + "tr": "Giyinme Odası", + "uk": "Роздягальня", + "vi": "Phòng Thay đồ", + "zh-CN": "更衣室", + "zh-TW": "更衣室" + } + }, + "amenity/drinking_water": { + "title": { + "C": "Drinking Water", + "af": "Drinkwater", + "ar": "مياه شرب", + "ast": "Agua potable", + "bg": "Чешма", + "bn": "পানীয় জল", + "bs": "Voda za piće", + "ca": "Aigua apta per al consum", + "ckb": "ئاوی خواردنەوە", + "cs": "Pitná voda", + "da": "Drikkevand", + "de": "Trinkwasser", + "el": "Πόσιμο Νερό", + "en-GB": "Drinking Water", + "en": "Drinking Water", + "eo": "Trinkakvejo", + "es": "Agua potable", + "et": "Joogivesi", + "eu": "Ur edangarria", + "fa": "آب آشامیدنی", + "fi": "Juomavesipiste", + "fr": "Eau potable", + "gl": "Fonte de auga potábel", + "he": "מי שתייה", + "hi": "पीने का पानी", + "hr": "Pitka voda", + "hu": "Ivóvíz", + "id": "Air Minum", + "is": "Drykkjarvatn", + "it": "Fontanella", + "ja": "水飲み場", + "ko": "식수대", + "lt": "Geriamas vanduo", + "lv": "Dzeramūdens", + "mk": "Пивка вода", + "nl": "Drinkwaterkraantje", + "no": "Drikkevann", + "pl": "Woda pitna", + "pt-BR": "Bebedouro", + "pt": "Água potável", + "ro": "Apă de Băut", + "ru": "Питьевая вода", + "si": "බොනවතුර", + "sk": "Pitná voda", + "sl": "Pitna voda", + "sr": "Пијаћа вода", + "sv": "Dricksvatten", + "ta": "குடிநீர்", + "te": "తాగే నీరు", + "tr": "İçme Suyu", + "uk": "Питна вода", + "vi": "Nước Uống", + "yue": "飲水處", + "zh-CN": "饮水处", + "zh-HK": "飲用水", + "zh-TW": "飲水機" + } + }, + "amenity/driving_school": { + "title": { + "C": "Driving School", + "am": "የመኪና ትምህርት ቤት", + "ar": "مدرسة تعليم القيادة", + "ast": "Autoescuela", + "ca": "Autoescola", + "cs": "Autoškola", + "da": "Køreskole", + "de": "Fahrschule", + "el": "Σχολή Οδήγησης", + "en-GB": "Driving School", + "en": "Driving School", + "eo": "Stirlernejo", + "es": "Escuela de conducción", + "et": "Sõidukool", + "eu": "Auto-eskola", + "fa": "آموزشگاه رانندگی", + "fi": "Autokoulu", + "fr": "Auto-école", + "gl": "Autoescola", + "he": "בית ספר לנהיגה", + "hu": "Autósiskola", + "is": "Ökuskóli", + "it": "Scuola guida", + "ja": "自動車教習所", + "ko": "운전학원", + "lt": "Vairavimo mokykla", + "lv": "Autoskola", + "mk": "Автоучилиште", + "ms": "Sekolah Memandu", + "nl": "Rijschool", + "no": "Trafikkskole", + "pl": "Szkoła nauki jazdy", + "pt-BR": "Auto escola", + "pt": "Escola de condução", + "ro": "Școală de Șoferi", + "ru": "Автошкола", + "sk": "Autoškola", + "sl": "Avtošola", + "sr": "Ауто школа", + "sv": "Trafikskola", + "ta": "ஓட்டுநர் பள்ளி", + "tr": "Sürücü Kursu", + "uk": "Автошкола", + "vi": "Trường Dạy Lái Xe", + "zh-CN": "驾校", + "zh-HK": "駕駛學校", + "zh-TW": "駕訓班" + } + }, + "amenity/events_venue": { + "title": { + "C": "Events Venue", + "ar": "مكان الأحداث", + "cs": "kulturní sál", + "da": "Begivenhedsarena", + "de": "Veranstaltungszentrum", + "en": "Events Venue", + "eo": "Domo de ceremonioj", + "es": "Lugar de eventos", + "et": "Ürituste toimumiskoht", + "fa": "تالار", + "fi": "Tapahtumahalli", + "fr": "Établissement accueillant des événements", + "gl": "Lugar de eventos", + "he": "מתחם אירועים", + "hu": "Rendezvényhelyszín", + "it": "Sala eventi", + "ja": "イベント施設", + "ko": "행사장", + "mk": "Одржувалиште на настани", + "nl": "Evenementenlocatie", + "no": "Arrangementsted", + "pl": "Sala bankietowa", + "pt-BR": "Local de eventos", + "pt": "Espaço para eventos", + "sv": "Evenemangsplats/festlokal", + "tr": "Etkinlikler Meydanı", + "uk": "Банкетна зала", + "vi": "Trung tâm Sự kiện", + "zh-CN": "宴会厅", + "zh-TW": "活動場館" + } + }, + "amenity/exhibition_centre": { + "title": { + "C": "Exposition Center", + "cs": "veletržní palác", + "de": "Messezentrum", + "en": "Exposition Center", + "eo": "Centro de ekspozicioj kaj foiroj", + "es": "Centro de exposiciones", + "fa": "مرکز نمایشگاهی ، عرضه", + "fi": "Messukeskus", + "fr": "Centre d'expositions", + "gl": "Centro de exposicións", + "he": "מרכז כנסים", + "hu": "Kiállítási központ", + "it": "Centro Espositivo", + "ja": "展示場", + "ko": "전시회장", + "mk": "Изложбен центар", + "nl": "Expo center", + "pl": "Centrum targowo-wystawiennicze", + "pt-BR": "Centro de exposições", + "pt": "Centro de exposições", + "sk": "Výstavné centrum", + "sr": "Изложбени центар", + "sv": "Utställningscenter/Mässa", + "tr": "Fuar Merkezi", + "uk": "Виставковий центр", + "vi": "Trung tâm Triển lãm", + "zh-CN": "展览中心", + "zh-TW": "展覽中心" + } + }, + "amenity/fast_food": { + "title": { + "C": "Fast Food", + "af": "Kitskos", + "am": "ፈጣን ምግብ", + "ar": "وجبات سريعة", + "ast": "Comida rápida", + "bg": "Бърза закуска", + "bn": "ফাস্টফুড", + "bs": "Fast Food", + "ca": "Local de menjar ràpid", + "ckb": "خواردنی خێرا", + "cs": "Rychlé občerstvení", + "da": "Fast food", + "de": "Schnellimbiss", + "dv": "ފާސްޓް ފުޑް", + "el": "Ταχυφαγείο", + "en-GB": "Fast Food", + "en": "Fast Food", + "eo": "Rapidmanĝejo", + "es": "Comida rápida", + "et": "Kiirtoitlustus", + "eu": "Janari azkarra", + "fa": "فست فود", + "fi": "Pikaruokaravintola", + "fr": "Restauration rapide", + "gl": "Comida rápida", + "he": "מזון מהיר", + "hr": "Brza hrana", + "hu": "Gyorsétterem", + "hy": "Արագ սնունդ", + "id": "Makanan Cepat Saji", + "is": "Skyndibiti", + "it": "Fast Food", + "ja": "ファストフード全般", + "ko": "패스트푸드", + "lt": "Greitas maistas", + "lv": "Ātrās ēdināšanas iestāde", + "mk": "Брза храна", + "ms": "Makanan Segera", + "ne": "फास्ट फूड", + "nl": "Fastfoodrestaurant", + "no": "Hurtigmat", + "pl": "Bar / fast food", + "pt-BR": "Lanchonete", + "pt": "Comida rápida", + "ro": "Fast Food", + "ru": "Фаст-фуд", + "sk": "Rýchle občerstvenie", + "sl": "Hitra prehrana", + "so": "Cuntooyinka Fudud", + "sr": "Брза храна", + "sv": "Snabbmat", + "ta": "துரித உணவு", + "tr": "Fast Food", + "uk": "Фаст-Фуд", + "vi": "Nhà hàng Ăn nhanh", + "yue": "快餐店", + "zh-CN": "快餐店", + "zh-HK": "快餐店", + "zh-TW": "速食餐廳", + "zh": "快餐" + } + }, + "amenity/fire_station": { + "title": { + "C": "Fire Station", + "af": "Brandweerstasie", + "am": "እሳትና ድንገተኛ አደጋዎች መከላከያ", + "ar": "محطة إطفاء حريق", + "ast": "Parque de bomberos", + "bg": "Пожарна", + "bn": "দমকল", + "bs": "Vatrogasna stanica", + "ca": "Parc de bombers", + "cs": "Hasiči", + "da": "Brandstation", + "de": "Feuerwehrhaus", + "el": "Πυροσβεστικός Σταθμός", + "en-GB": "Fire Station", + "en": "Fire Station", + "eo": "Fajrobrigadejo", + "es": "Estación de bomberos", + "et": "Päästedepoo", + "eu": "Suhiltzaile-etxe", + "fa": "ایستگاه آتش نشانی", + "fi": "Paloasema", + "fr": "Caserne de pompiers", + "gl": "Parque de bombeiros", + "he": "תחנת כיבוי אש", + "hr": "Vatrogasna postaja", + "hu": "Tűzoltóság", + "id": "Kantor Pemadam Kebakaran", + "is": "Slökkvistöð", + "it": "Caserma dei vigili del fuoco", + "ja": "消防署", + "kn": "ಅಗ್ನಿಶಾಮಕ ಕೇಂದ್ರ", + "ko": "소방서", + "lt": "Gaisrinė", + "lv": "Ugunsdzēsēju stacija", + "mk": "Противпожарна станица", + "ms": "Balai Bomba", + "nl": "Brandweerkazerne", + "no": "Brannstasjon", + "pl": "Remiza strażacka", + "pt-BR": "Posto de bombeiros", + "pt": "Quartel de bombeiros", + "ro": "Pompieri", + "ru": "Пожарная часть", + "sk": "Požiarna stanica", + "sl": "Gasilska postaja", + "sr": "Ватрогасна станица", + "sv": "Brandstation", + "ta": "தீயணைப்பு நிலையம்", + "tr": "İtfaiye", + "uk": "Пожежна станція", + "vi": "Trạm Cứu hỏa", + "yue": "滅火局", + "zh-CN": "消防站", + "zh-HK": "消防局", + "zh-TW": "消防局", + "zh": "消防站" + } + }, + "amenity/food_court": { + "title": { + "C": "Food Court", + "ar": "قاعة طعام", + "cs": "Společná jídelní plocha více restaurací", + "da": "Torvehaller", + "de": "Gemeinschaftlicher Gastronomiebereich", + "el": "Χώρος Εστίασης", + "en-GB": "Food Court", + "en": "Food Court", + "eo": "Manĝ-bazaro", + "es": "Plaza de comida", + "et": "Toiduväljak", + "eu": "Bazkaltzeko eremua", + "fa": "فودکورت", + "fi": "Ravintolamaailma", + "fr": "Aire de restauration, food-court", + "gl": "Zona de comidas", + "he": "מתחם מזון", + "hu": "Étkezőtér", + "is": "Matarmarkaður", + "it": "Zona ristorazione", + "ja": "フードコート", + "ko": "푸드코트", + "lv": "Ēdnīca", + "mk": "Сала за брза храна", + "ms": "Medan Selera", + "nl": "Foodcourt", + "no": "Mathall", + "pl": "Strefa gastronomiczna – (w centrum handlowym)", + "pt-BR": "Praça de alimentação", + "pt": "Praça de alimentação", + "ru": "Ресторанный дворик", + "sk": "Stravovacia zóna", + "sl": "Skupni jedilni prostor", + "sv": "Restaurangtorg", + "tr": "Yemek Yeri", + "uk": "Фуд-корт", + "vi": "Trung tâm Ẩm thực", + "zh-CN": "美食广场", + "zh-HK": "美食廣場", + "zh-TW": "美食街" + } + }, + "amenity/fountain": { + "title": { + "C": "Fountain", + "af": "Fontein", + "ar": "نافورة", + "ast": "Fonte d'adornu", + "bg": "Фонтан", + "bn": "ঝর্না", + "bs": "Fontana", + "ca": "Font", + "ckb": "نافورە", + "cs": "Fontána, vodotrysk", + "da": "Springvand", + "de": "Springbrunnen", + "el": "Σιντριβάνι", + "en-GB": "Fountain", + "en": "Fountain", + "eo": "Fontano", + "es": "Fuente ornamental", + "et": "Purskkaev", + "eu": "Iturri", + "fa": "فواره", + "fi": "Suihkulähde", + "fr": "Fontaine", + "gl": "Fonte ornamental", + "he": "מזרקה", + "hr": "Fontana", + "hu": "Szökőkút", + "id": "Air Mancur", + "is": "Gosbrunnur", + "it": "Fontana (decorativa)", + "ja": "噴水", + "kn": "ಬುಗ್ಗೆ", + "ko": "분수대", + "lt": "Fontanas", + "lv": "Strūklaka", + "mk": "Фонтана", + "nl": "Fontein", + "no": "Fontene", + "pl": "Fontanna", + "pt-BR": "Fonte", + "pt": "Fonte", + "ro": "Fântână", + "ru": "Фонтан", + "sk": "Fontána", + "sl": "Vodomet", + "sr": "Фонтана", + "sv": "Fontän", + "tr": "Su Fıskiyesi", + "uk": "Фонтан", + "vi": "Vòi nước", + "yue": "噴水池", + "zh-CN": "喷泉", + "zh-HK": "噴水池", + "zh-TW": "噴水池", + "zh": "喷泉" + } + }, + "amenity/fuel": { + "title": { + "C": "Gas Station", + "af": "Petrolstasie", + "ar": "محطة وقود", + "ast": "Gasolinera", + "bg": "Бензиностанция", + "bn": "গ্যাস স্টেশন", + "bs": "Benzinska pumpa", + "ca": "Benzinera", + "cs": "Čerpací stanice", + "da": "Tankstation", + "de": "Tankstelle", + "el": "Βενζινάδικο", + "en-AU": "Service Station", + "en-GB": "Petrol Station", + "en": "Gas Station", + "eo": "Benzinejo", + "es": "Estación de servicio / Gasolinera", + "et": "Tankla", + "eu": "Gasolindegi", + "fa": "جایگاه سوخت", + "fi": "Huoltoasema", + "fr": "Station-service", + "gl": "Gasolineira", + "he": "תחנת דלק", + "hr": "Benzinska postaja", + "hu": "Benzinkút", + "id": "Pom Bensin", + "is": "Bensínstöð", + "it": "Stazione di servizio", + "ja": "ガソリンスタンド", + "ko": "주유소", + "lt": "Degalinė", + "lv": "Degvielas uzpildes stacija", + "mk": "Бензинска станица", + "ms": "Stesen Minyak", + "nl": "Tankstation", + "no": "Bensinstasjon", + "pl": "Stacja paliw", + "pt-BR": "Posto de combustível", + "pt": "Posto de combustível", + "ro": "Benzinărie", + "ru": "АЗС", + "sk": "Čerpacia stanica", + "sl": "Bencinska črpalka", + "sr": "Бензинска пумпа", + "sv": "Bensinstation", + "tr": "Benzinci", + "uk": "Заправка", + "vi": "Cây xăng", + "yue": "油站", + "zh-CN": "加油站", + "zh-HK": "油站", + "zh-TW": "加油站", + "zh": "加油站" + } + }, + "amenity/gambling": { + "title": { + "C": "Gambling Hall", + "cs": "místo pro hazard", + "de": "Spielhalle", + "el": "Αίθουσα Τυχερών Παιγνίων για Διασκέδαση", + "en": "Gambling Hall", + "eo": "Hazardludejo", + "es": "Salón de juegos de azar", + "fa": "سالن قمار", + "fi": "Uhkapelisali", + "fr": "Salle de jeux d'argent", + "he": "היכל הימורים", + "hu": "Szerencsejáték-helyszín", + "it": "Sala da Gioco", + "ja": "ギャンブル場", + "ko": "도박장", + "mk": "Сала за коцкање", + "nl": "Gokhal", + "pl": "Salon pachinko/bingo", + "pt-BR": "Sala de jogos", + "pt": "Sala de bingo", + "sk": "Herňa", + "sr": "Коцкарска дворана", + "sv": "Spelhall", + "tr": "Kumar Salonu", + "uk": "Ігорна зала", + "vi": "Phòng Chơi bài", + "zh-CN": "赌场厅", + "zh-TW": "賭博場所" + } + }, + "amenity/give_box": { + "title": { + "C": "Free Box", + "ar": "صندوق مشاركة الأشياء المجانية", + "cs": "Darovací box", + "de": "Schenkschrank/Tauschschrank", + "en": "Free Box", + "eo": "Kesto de senpaga interŝanĝo", + "es": "Caja libre", + "fa": "صندوق آزاد", + "gl": "Caixa libre", + "he": "תיבת הענקה", + "hu": "Adománygyűjtő doboz", + "it": "Scatola generica", + "ja": "ギブボックス", + "mk": "Даровница", + "nl": "Ruilkast", + "pl": "Wystawka (wymiana używanych rzeczy)", + "pt-BR": "Caixa grátis", + "pt": "Caixa livre", + "sk": "Voľná kabína", + "sv": "Bortskänkningslåda", + "tr": "Ücretsiz Kutu", + "uk": "Безкоштовні речі", + "vi": "Thùng Tặng/Lấy", + "zh-CN": "闲置物品交换屋", + "zh-TW": "禮物盒" + } + }, + "amenity/grave_yard": { + "title": { + "C": "Graveyard", + "af": "Begrafplaas", + "am": "የቀብር ቦታ", + "ar": "مقبرة", + "ast": "Enterramientos", + "bg": "Гробище", + "bn": "কবরখানা", + "bs": "Groblje", + "ca": "Cementiri", + "ckb": "گۆڕستان", + "cs": "Pohřebiště", + "da": "Gravplads", + "de": "Gräberfeld", + "el": "Κοιμητήριο", + "en-GB": "Graveyard", + "en": "Graveyard", + "eo": "Tombejo (ĉirkaŭpreĝeja)", + "es": "Camposanto", + "et": "Surnuaed", + "eu": "Hilerri", + "fa": "قبرستان محوطه امام‌زاده یا مکان متبرکه", + "fi": "Kirkkomaa", + "fr": "Lieu de sépulture attenant à un lieu de culte, cimetière paroissial", + "gl": "Camposanto", + "he": "בית עלמין", + "hr": "Groblje uz crkvu", + "hu": "Templom körüli temető", + "id": "Kuburan", + "is": "Grafreitur", + "it": "Cimitero", + "ja": "墓地(宗教施設内など、小)", + "kn": "ಶ್ಮಶಾನ", + "ko": "묘지", + "lt": "Kapinės prie bažnyčios", + "lv": "Kapi", + "mk": "Гробишта", + "nl": "Begraafplaats (nabij kerk)", + "no": "Kirkegård", + "pl": "Cmentarz przykościelny", + "pt-BR": "Cemitério paroquial", + "pt": "Sepultura (fora de cemitérios)", + "ro": "Cimitir", + "ru": "Небольшие захоронения при местах служения (церквях и т.п.)", + "sk": "Pohrebisko", + "sl": "Pokopališče", + "sr": "Гробље", + "sv": "Kyrkogård", + "ta": "இடுகாடு", + "te": "స్మశానం", + "tr": "Mezarlık", + "uk": "Цвинтар", + "vi": "Nghĩa địa tại Nhà thờ", + "yue": "墳地", + "zh-CN": "墓地", + "zh-HK": "墓地", + "zh-TW": "墓地", + "zh": "墓地" + } + }, + "amenity/grit_bin": { + "title": { + "C": "Grit Bin", + "ar": "صندوق حصى وملح", + "ast": "Caxón de sal", + "ca": "Contenidor de sorra", + "cs": "Zásobník na posypový materiál", + "da": "Vejsaltkasse", + "de": "Streugutkiste", + "en-GB": "Grit Bin", + "en": "Grit Bin", + "eo": "Ujo kun sablo kaj salo", + "es": "Contenedor de gravilla", + "et": "Libedustõrje kast", + "eu": "Hare-ontzi", + "fa": "سطل شن", + "fi": "Hiekoitushiekkalaatikko", + "fr": "Bac à sel", + "gl": "Contedor de grava", + "he": "סל חצץ", + "hr": "Kanta sa šljunkom za poledicu", + "hu": "Útszóróanyagos láda", + "is": "Sandkista", + "it": "Cestino del sale", + "ja": "砂箱(降雪対策)", + "ko": "염화칼슘 보관소", + "lt": "Smėlio dėžė", + "lv": "Smilšu tvertne", + "mk": "Кутија за попескување", + "nl": "Bak met Mengeling van Strooizout en Grind", + "no": "Strøkasse", + "pl": "Pojemnik z piaskiem lub żwirem", + "pt-BR": "Caixa de Sal-Gema", + "pt": "Caixa de sal para estrada", + "ru": "Ящик с песком и солью (зимой)", + "sk": "Nádoba s posypom", + "sl": "Zabojnik za sol in pesek", + "sv": "Sandkista", + "tr": "Çakıl Kutusu", + "uk": "Контейнер з піском", + "vi": "Thùng Muối để Làm Tan Tuyết", + "zh-CN": "砂箱", + "zh-HK": "砂礫桶", + "zh-TW": "沙盒" + } + }, + "amenity/hospital": { + "title": { + "C": "Hospital Grounds", + "am": "ሆስፒታል", + "ar": "أرض مستشفى", + "ast": "Antoxana d'hospital", + "ca": "Hospital", + "cs": "Prostor nemocnice", + "da": "Hospitalsområde", + "de": "Krankenhaus", + "dv": "ހޮސްޕިޓަލް", + "el": "Χώροι Νοσοκομείου", + "en-GB": "Hospital Grounds", + "en": "Hospital Grounds", + "eo": "Malsanuleja tereno", + "es": "Terreno del hospital", + "et": "Haigla territoorium", + "eu": "Ospitalearen Eremua", + "fa": "محیط بیمارستان", + "fi": "Sairaala-alue", + "fr": "Terrains hospitaliers", + "gl": "Área hospitalaria", + "he": "גן בית חולים", + "hr": "Bolničko zemljište", + "hu": "Kórház területe", + "id": "Lingkungan Rumah Sakit", + "is": "Spítalalóð", + "it": "Area ospedaliera", + "ja": "大規模病院(代表点または敷地)", + "ko": "병원 부지", + "lt": "Ligoninės kiemas", + "mk": "Болнички двор", + "ne": "अस्पताल मैदान", + "nl": "Ziekenhuisgebied", + "no": "Sykehusområde", + "pl": "Teren szpitala", + "pt-BR": "Hospital", + "pt": "Hospital", + "ro": "Spital", + "ru": "Больница", + "sk": "Nemocničný areál", + "sl": "Klinično središče", + "so": "Goob Isbitaal", + "sr": "Болнички круг", + "sv": "Sjukhusområde", + "ta": "மருத்துவமனை", + "tr": "Hastane", + "uk": "Територія лікарні", + "vi": "Sân Bệnh viện", + "yue": "醫院地", + "zh-CN": "医院", + "zh-HK": "醫院範圍", + "zh-TW": "醫院" + } + }, + "amenity/hunting_stand": { + "title": { + "C": "Hunting Stand", + "ar": "منصة صيد", + "ast": "Puestu de caza", + "ca": "Punt de caça", + "cs": "Posed", + "da": "Jagttårn", + "de": "Jägerstand", + "el": "Καραούλι", + "en-GB": "Hunting Stand", + "en": "Hunting Stand", + "eo": "Altembusko ĉasada", + "es": "Puesto de caza", + "et": "Jahitorn", + "eu": "Ehiza postua", + "fa": "ایستگاه شکار", + "fi": "Metsästyspaikka", + "fr": "Mirador de chasse", + "gl": "Posto de caza", + "he": "עמדת ציד", + "hr": "Lovačka čeka", + "hu": "Magasles", + "is": "Skotvöllur", + "it": "Postazione da caccia", + "ja": "狩猟スタンド", + "ko": "사냥 스탠드", + "lt": "Medžioklės bokštelis", + "lv": "Medību stends", + "mk": "Ловен видиковец", + "nl": "Jachthut", + "no": "Jakttårn", + "pl": "Ambona strzelnicza", + "pt-BR": "Cabana de Caça", + "pt": "Torre de caça", + "ro": "Stand de Vânătoare", + "ru": "Охотничья вышка", + "sk": "Poľovnícka postriežka", + "sl": "Lovska preža", + "sr": "Чека", + "sv": "Jakttorn", + "tr": "Av Platformu", + "uk": "Мисливська вежа", + "vi": "Chỗ Săn Cao", + "zh-CN": "狩猎站", + "zh-HK": "狩獵台", + "zh-TW": "獵寮" + } + }, + "amenity/ice_cream": { + "title": { + "C": "Ice Cream Shop", + "am": "አይስ ክሬም", + "ar": "محل بيع المثلجات", + "ast": "Xeladería", + "ca": "Gelateria", + "ckb": "فرۆشگای ساردەمەنی", + "cs": "Zmrzlina", + "da": "Ishus", + "de": "Eisgeschäft", + "el": "Παγωτατζίδικο", + "en-GB": "Ice Cream Shop", + "en": "Ice Cream Shop", + "eo": "Glaciaĵejo", + "es": "Heladería", + "et": "Jäätisekohvik", + "eu": "Izozki denda", + "fa": "بستنی فروشی", + "fi": "Jäätelön myyntipiste", + "fr": "Magasin de crèmes glacées", + "gl": "Xeadaría", + "he": "חנות גלידה", + "hu": "Fagylaltozó", + "is": "Ísbúð", + "it": "Gelateria", + "ja": "アイスクリーム店", + "kn": "ಐಸ್ ಕ್ರೀಮ್ ಅಂಗ", + "ko": "아이스크림 가게", + "lt": "Ledų parduotuvė", + "lv": "Saldējuma Veikals", + "mk": "Сладоледџилница", + "ms": "Kedai Ais Krim", + "nl": "IJskraam", + "no": "Iskrem Butikk", + "pl": "Lodziarnia", + "pt-BR": "Sorveteria", + "pt": "Geladaria", + "ro": "Magazin de Înghețată", + "ru": "Прилавок с мороженным", + "sk": "Obchod so zmrzlinou", + "sl": "Sladoledarna", + "sr": "Сладоледџиница", + "sv": "Glassaffär", + "tr": "Dondurmacı", + "uk": "Морозиво", + "vi": "Tiệm Kem", + "zh-CN": "冰淇淋店", + "zh-HK": "雪榚店", + "zh-TW": "冰淇淋店" + } + }, + "amenity/internet_cafe": { + "title": { + "C": "Internet Cafe", + "ar": "مقهى إنترنت", + "ca": "Cifercafè", + "cs": "Internetová kavárna", + "da": "Internetcafe", + "de": "Internetcafé", + "el": "Internet Cafe", + "en-GB": "Internet Cafe", + "en": "Internet Cafe", + "eo": "Retkafejo", + "es": "Cibercafé", + "et": "Internetikohvik", + "eu": "Internet kafetegi", + "fa": "کافی‌نت", + "fi": "Internetkahvila", + "fr": "Cybercafé", + "gl": "Internet café", + "he": "קפה אינטרנט", + "hu": "Internetkávézó", + "is": "Netkaffihús", + "it": "Internet Cafe", + "ja": "インターネットカフェ", + "ko": "PC방", + "lt": "Interneto kavinė", + "lv": "Interneta Kafejnīca", + "mk": "Интернет-кафуле", + "ms": "Kafe Internet", + "nl": "Internetcafé", + "no": "Internettkafé", + "pl": "Kafejka internetowa", + "pt-BR": "Internet Café", + "pt": "Cibercafé", + "ro": "Internet Cafe", + "ru": "Интернет-кафе", + "sk": "Internetová kaviareň", + "sl": "Internet Cafe", + "sr": "Интернет кафе", + "sv": "Internetkafé", + "tr": "İnternet Kafe", + "uk": "Інтернет кафе", + "vi": "Quán Internet", + "zh-CN": "网吧", + "zh-HK": "網吧", + "zh-TW": "網咖" + } + }, + "amenity/karaoke_box": { + "title": { + "C": "Karaoke Box", + "cs": "karaoke kabinka", + "de": "Karaoke-Box", + "en": "Karaoke Box", + "eo": "Karaokeejo", + "es": "Karaoke Box", + "fa": "جعبه کارائوکه (ابزار سرگرمی آوازخوانی)", + "fi": "Karaokekoppi", + "fr": "Karaoke", + "he": "תיבת קריוקי", + "hu": "Karaoke-bár", + "it": "Karaoke", + "ja": "カラオケボックス", + "ko": "노래방", + "mk": "Просторија за караоке", + "nl": "Karaokehokje", + "pl": "Budka karaoke", + "pt-BR": "Caixa de Karaokê", + "pt": "Caixa de karaoke", + "sk": "Karaoke kabínka", + "sr": "Караоке кабина", + "sv": "Karaoke Box", + "tr": "Karaoke Kutusu", + "uk": "Кабінка караоке", + "vi": "Dàn Karaoke", + "zh-CN": "KTV亭", + "zh-TW": "卡拉 OK 包廂" + } + }, + "amenity/kindergarten": { + "title": { + "C": "Preschool / Kindergarten Grounds", + "am": "ሕፃናት መዋያ", + "ar": "مرحلة ما قبل المدرسة / رياض الأطفال", + "cs": "Prostor školky / předškolního zařízení", + "da": "Børnehave/vuggestue-grund", + "de": "Kindergarten, Kindergartengelände", + "el": "Αυλή Νηπιαγωγείου", + "en": "Preschool / Kindergarten Grounds", + "eo": "Infanvartejo (ISCED 0)", + "es": "Terreno de preescolar / jardín de infantes", + "fa": "محوطه پیش‌دبستانی / مهدکودک", + "fi": "Esikoulu", + "fr": "Crèche, garderie", + "gl": "Área escolar infantil", + "he": "מתחם גן/גן חובה", + "hr": "Zemljište dječjeg vrtića", + "hu": "Óvoda területe", + "id": "Prasekolah / Taman Kanak-Kanak", + "it": "Area dell'asilo/scuola d'infanzia", + "ja": "幼稚園/保育園(代表点または敷地)", + "ko": "유치원 부지", + "mk": "Двор на детска градинка", + "nl": "Gebied van Crèche/Kleuterschool", + "no": "Førskole- / Barnehageområde", + "pl": "Teren przedszkola/żłobka", + "pt-BR": "Escola de educação infantil", + "pt": "Infantário / pré-escola", + "ru": "Подготовительная школа / Детский сад", + "sk": "Materská škôlka", + "sr": "Предшколско двориште", + "sv": "Förskoleområde", + "tr": "Anaokulu Sahası", + "uk": "Територія дитячого садочка", + "vi": "Sân Nhà trẻ", + "zh-CN": "幼儿园场地", + "zh-TW": "幼兒園範圍" + } + }, + "amenity/kneipp_water_cure": { + "title": { + "C": "Kneipp Water Cure", + "ar": "بركة علاج القدم بالماء", + "cs": "Kneippova lázeň", + "de": "Kneippanlage", + "en": "Kneipp Water Cure", + "eo": "Naĝejeto", + "es": "Cura de agua Kneipp", + "fa": "تصفیه آب سباستین کنیپ / آب درمانی Kneipp", + "fr": "Cure par l'eau Kneipp", + "gl": "Augas termais Kneipp", + "he": "טיפול מים קנאיפ", + "hu": "Kneipp-medence", + "it": "Cura Acquatica Kneipp", + "ja": "足浴場(ヨーロッパ)", + "ko": "크나이프 물 치료", + "mk": "Водотерапија Кнајп", + "nl": "Kneipp Waterbad", + "pl": "Basen Kneippa", + "pt-BR": "Cura da água do Kneipp", + "pt": "Balneário Kneippiano", + "sv": "Kneipp vattenterapi", + "tr": "Kneipp Hidroterapisi", + "uk": "Водолікарня", + "vi": "Bồn tắm Trị liệu Kneipp", + "zh-CN": "克奈圃水疗", + "zh-TW": "Kneipp 水療" + } + }, + "amenity/language_school": { + "title": { + "C": "Language School", + "ar": "مدرسة لغات", + "ca": "Escola d'idiomes", + "ckb": "قوتابخانەی زمان", + "cs": "Jazyková škola", + "da": "Sprogskole", + "de": "Sprachschule", + "el": "Φροντιστήριο Ξένων Γλωσσών", + "en": "Language School", + "eo": "Lingva lernejo", + "es": "Escuela de idiomas", + "eu": "Hizkuntz eskola", + "fa": "آموزشگاه زبان", + "fi": "Kielikoulu", + "fr": "École de langues", + "gl": "Escola de idiomas", + "he": "בית ספר לשפות", + "hu": "Nyelviskola", + "is": "Tungumálaskóli", + "it": "Scuola di lingue straniere", + "ja": "外国語教室", + "ko": "언어 학원", + "lt": "Kalbų mokykla", + "mk": "Училиште за јазици", + "nl": "Taalschool", + "no": "Språkskole", + "pl": "Szkoła językowa", + "pt-BR": "Escola de idiomas", + "pt": "Escola de línguas", + "ru": "Языковая школа", + "sk": "Jazyková škola", + "sr": "Језичка школа", + "sv": "Språkskola", + "ta": "மொழிப் பள்ளி", + "tr": "Dil Okulu", + "uk": "Мовна школа", + "vi": "Trường học Ngoại ngữ", + "zh-CN": "语言学校", + "zh-HK": "語言學校", + "zh-TW": "語言學校" + } + }, + "amenity/lavoir": { + "title": { + "C": "Lavoir", + "ar": "مكان غسيل الملابس يدوياً", + "cs": "Lavor", + "de": "Waschhaus", + "en": "Lavoir", + "eo": "Vestaĵ-lavejo (ĉe rivero)", + "es": "Lavadero", + "fa": "محل شست‌وشوی لباس", + "fi": "Pyykinpesupaikka", + "fr": "Lavoir", + "gl": "Lavadoiro", + "he": "מקום מרחץ בגדים", + "hu": "Ruhamosó hely", + "it": "Lavatoio", + "ja": "共同洗い場", + "mk": "Пералница", + "nl": "Openbare wasplaats", + "no": "Vaskehus", + "pl": "Pralnia (przy rzece)", + "pt-BR": "Lavanderia pública", + "pt": "Lavadouro", + "sv": "Tvättbrygga", + "tr": "Yıkama Evi", + "uk": "Місце для прання", + "zh-CN": "公共洗衣池", + "zh-TW": "洗手台" + } + }, + "amenity/letter_box": { + "title": { + "C": "Letter Box", + "ar": "صندوق البريد", + "cs": "domovní poštovní schránka", + "de": "Hausbriefkasten", + "el": "Γραμματοκιβώτιο", + "en": "Letter Box", + "eo": "Leterkesto (riceva)", + "es": "Buzón", + "fa": "صندوق پستی", + "fi": "Asunnon postilaatikko", + "fr": "Boîte aux lettres privée", + "gl": "Caixa do correo", + "he": "תיבת מכתבים", + "hu": "Személyes levélszekrény", + "it": "Cassetta delle lettere", + "ja": "郵便受け", + "ko": "우편함", + "mk": "Поштенско сандаче", + "nl": "Brievenbus", + "no": "Postkasse", + "pl": "Prywatna skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Caixa de correio", + "sk": "Poštová schránka", + "sr": "Поштанско сандуче", + "sv": "Postlåda", + "tr": "Mektup Kutusu", + "uk": "Поштова скринька", + "vi": "Hòm thư Cá nhân", + "zh-CN": "信箱", + "zh-TW": "信箱" + } + }, + "amenity/library": { + "title": { + "C": "Library", + "af": "Biblioteek", + "am": "ቤተ-መፃሕፍት", + "ar": "مكتبة عامة", + "ast": "Biblioteca", + "bg": "Библиотека", + "bn": "পাঠাগার", + "bs": "Biblioteka", + "ca": "Biblioteca", + "ckb": "پەڕتووکخانە", + "cs": "Knihovna", + "da": "Bibliotek", + "de": "Bibliothek", + "dv": "ލައިބްރަރީ", + "el": "Βιβλιοθήκη", + "en-GB": "Library", + "en": "Library", + "eo": "Biblioteko", + "es": "Biblioteca", + "et": "Raamatukogu", + "eu": "Liburutegi", + "fa": "کتابخانه", + "fi": "Kirjasto", + "fr": "Bibliothèque", + "gl": "Biblioteca", + "he": "ספריה", + "hr": "Knjižnica", + "hu": "Könyvtár", + "id": "Perpustakaan", + "is": "Bókasafn", + "it": "Biblioteca", + "ja": "図書館", + "kn": "ಗ್ರಂಥಾಲಯ", + "ko": "도서관", + "lt": "Biblioteka", + "lv": "Bibliotēka", + "mk": "Библиотека", + "ms": "Perpustakaan", + "nl": "Bibliotheek", + "no": "Bibliotek", + "pl": "Biblioteka", + "pt-BR": "Biblioteca", + "pt": "Biblioteca", + "ro": "Librărie", + "ru": "Библиотека", + "sk": "Knižnica", + "sl": "Knjižnica", + "so": "Maktabad", + "sr": "Библиотека", + "sv": "Bibliotek", + "ta": "புத்தகச்சாலை", + "te": "గ్రంథాలయం", + "tr": "Kütüphane", + "uk": "Бібліотека", + "vi": "Thư viện", + "yue": "圖書館", + "zh-CN": "图书馆", + "zh-HK": "圖書館", + "zh-TW": "圖書館", + "zh": "图书馆" + } + }, + "amenity/loading_dock": { + "title": { + "C": "Loading Dock", + "ar": "رصيف التحميل", + "cs": "nakládací rampa", + "de": "Laderampe", + "el": "Αποβάθρα Φόρτωσης", + "en": "Loading Dock", + "eo": "Ŝarĝ-kajo", + "es": "Muelle de carga", + "fa": "اسکله بارگیری", + "fi": "Lastauslaituri", + "fr": "Quai de chargement", + "gl": "Peirao de carga", + "he": "מתחם העמסה", + "hu": "Teherautórakodó-rámpa", + "it": "Zona di carico", + "ja": "出入口(貨物)", + "mk": "Товарна рампа", + "nl": "Laadkaai", + "no": "Lastebrygge", + "pl": "Dok załadunkowy", + "pt-BR": "Doca de carregamento", + "pt": "Cais de carga", + "sk": "Nakladací prístav", + "sv": "Lastkaj", + "tr": "Yükleme Rıhtımı", + "uk": "Вантажна рампа", + "vi": "Khu Bốc dỡ Hàng hóa", + "zh-CN": "装卸码头", + "zh-TW": "裝卸碼頭" + } + }, + "amenity/lounger": { + "title": { + "C": "Lounger", + "cs": "Lehátka", + "de": "Liege", + "el": "Ξαπλώστρα", + "en": "Lounger", + "eo": "Kuŝseĝo", + "es": "Sillón de jardín / Tumbona", + "fa": "صندلی راحتی", + "fr": "Chaise longue", + "he": "מיטת שיזוף", + "hu": "Nyugágy", + "it": "Sdraio", + "ja": "サマーベッド", + "ko": "일광욕용 의자", + "mk": "Лежалка", + "nl": "Ligstoel", + "pl": "Leżak", + "pt-BR": "Espreguiçadeira", + "pt": "Espreguiçadeira", + "sk": "Ležadlo", + "sv": "Solstol(ar)", + "tr": "Şezlong", + "uk": "Лежак", + "vi": "Ghế Tắm nắng", + "zh-CN": "躺椅", + "zh-TW": "躺椅區" + } + }, + "amenity/love_hotel": { + "title": { + "C": "Love Hotel", + "cs": "Hodinový hotel", + "da": "Kærlighedshotel", + "de": "Stundenhotel", + "el": "Ξενοδοχείο Ημιδιαμονής", + "en-GB": "Love Hotel", + "en": "Love Hotel", + "eo": "Amor-hotelo", + "es": "Hotel para parejas", + "fa": "هتل عشق", + "fi": "Tuntihotelli", + "fr": "Love hôtel", + "gl": "Hotel para parellas", + "he": "מלון לפי שעות", + "hu": "Love hotel", + "is": "Ástarhótel", + "it": "Love Hotel", + "ja": "ラブホテル", + "ko": "러브 호텔", + "mk": "Љубовен хотел", + "nl": "Love hotel", + "no": "Kjærlighetshotell", + "pl": "Love hotel", + "pt-BR": "Motel", + "pt": "Motel para casais", + "ru": "Отель любви", + "sk": "Hodinový hotel", + "sr": "Љубавни хотел", + "sv": "Kärlekshotell", + "tr": "Aşk Oteli", + "uk": "Готель кохання", + "vi": "Khách sạn Tình yêu", + "zh-CN": "爱情宾馆", + "zh-HK": "愛情酒店", + "zh-TW": "情趣旅館" + } + }, + "amenity/marketplace": { + "title": { + "C": "Marketplace", + "af": "Markplein", + "am": "የገበያ ቦታ", + "ar": "محل تسوق", + "ast": "Mercáu", + "bg": "Пазар", + "bn": "বাজার", + "bs": "Tržnica", + "ca": "Mercat", + "cs": "Tržiště", + "da": "Markedsplads", + "de": "Marktplatz", + "el": "Αγορά", + "en-GB": "Marketplace", + "en": "Marketplace", + "eo": "Bazaro", + "es": "Mercado", + "et": "Turg", + "eu": "Merkatu", + "fa": "بازار", + "fi": "Tori", + "fr": "Marché", + "gl": "Mercado", + "he": "שוק", + "hr": "Tržnica", + "hu": "Piactér", + "id": "Pasar", + "is": "Markaður", + "it": "Mercato", + "ja": "市場", + "ko": "시장", + "lt": "Prekyvietė", + "lv": "Tirgus", + "mk": "Пазар", + "nl": "Marktplaats", + "no": "Markedsplass", + "pl": "Targowisko / Hala targowa", + "pt-BR": "Feira ou mercado público", + "pt": "Mercado", + "ro": "Piață", + "ru": "Рынок", + "sk": "Tržnica", + "sl": "Tržnica", + "sr": "Тржница", + "sv": "Marknadsplats", + "ta": "பஜார்", + "tr": "Çarşı", + "uk": "Ринок", + "vi": "Chợ phiên", + "yue": "街市", + "zh-CN": "市场", + "zh-HK": "街市", + "zh-TW": "市場", + "zh": "市场" + } + }, + "amenity/monastery": { + "title": { + "C": "Monastery Grounds", + "cs": "Klášterní pozemky", + "da": "Kloster-område", + "de": "Klostergelände", + "el": "Ιερά Μονή", + "en-GB": "Monastery Grounds", + "en": "Monastery Grounds", + "eo": "Monaĥeja tereno", + "es": "Terreno del monasterio", + "et": "Kloostriala", + "eu": "Monastegiaren eremu", + "fa": "زمین های صومعه", + "fi": "Luostari", + "fr": "Terrain de monastère", + "gl": "Área de mosteiro", + "he": "מתחם מנזר", + "hu": "Kolostor területe", + "is": "Klausturlóð", + "it": "Monastero", + "ja": "修道院", + "ko": "수도원 부지", + "mk": "Манастир", + "nl": "Kloostergebied", + "no": "Klosterområde", + "pl": "Teren klasztoru", + "pt-BR": "Jardins do mosteiro", + "pt": "Mosteiro", + "ru": "Монастырь", + "sk": "Pozemky kláštora", + "sr": "Манастирско земљиште", + "sv": "Klosterområde", + "tr": "Manastır Alanı", + "uk": "Територія монастиря", + "vi": "Sân Tu viện", + "zh-CN": "修道院", + "zh-HK": "寺院範圍", + "zh-TW": "修道院" + } + }, + "amenity/money_transfer": { + "title": { + "C": "Money Transfer Station", + "ar": "محل لتحويل الأموال", + "cs": "místo pro peněžní převody", + "de": "Geldtransferstation", + "el": "Υπηρεσία Μεταφοράς Χρημάτων", + "en": "Money Transfer Station", + "eo": "Centro de mon-transigo", + "es": "Estación de transferencia de dinero", + "fa": "ایستگاه انتقال پول", + "fi": "Rahansiirtopiste", + "fr": "Transfert d'argent", + "gl": "Estación de transferencia de diñeiro", + "he": "תחנת העברת כספים", + "hu": "Pénzátutaló", + "it": "Agenzia di Money Transfer", + "ja": "海外送金所", + "ko": "환전소", + "mk": "Испраќање на пари", + "nl": "Wisselkantoor", + "no": "Pengeoverføringsstasjon", + "pl": "Placówka przekazów pieniężnych", + "pt-BR": "Estação de transferência de dinheiro", + "pt": "Serviço de transferência de dinheiro", + "ru": "Денежные переводы", + "sk": "Stanica prevodi peňazí", + "sv": "Pengaöverföring", + "tr": "Para Transfer İstasyonu", + "uk": "Грошові перекази", + "vi": "Gửi Tiền", + "zh-CN": "货币交换处", + "zh-HK": "滙款中心", + "zh-TW": "匯款站" + } + }, + "amenity/mortuary": { + "title": { + "C": "Morgue", + "ar": "المشرحة", + "cs": "Márnice", + "da": "Lighus", + "de": "Leichenhaus", + "el": "Νεκροτομείο", + "en": "Morgue", + "eo": "Kadavrejo", + "es": "Morgue", + "fa": "سردخانه", + "fi": "Ruumishuone", + "fr": "Morgue", + "gl": "Velorio / tanatorio", + "he": "חדר מתים", + "hu": "Ravatalozó", + "it": "Obitorio", + "ja": "死体安置所", + "ko": "영안실", + "mk": "Мртовечница", + "nl": "Lijkenhuis", + "pl": "Kostnica", + "pt-BR": "Necrotério", + "pt": "Morgue", + "sk": "Márnica", + "sv": "Bårhus", + "tr": "Morg", + "uk": "Морг", + "vi": "Nhà xác", + "zh-CN": "太平间/停尸房", + "zh-TW": "太平間" + } + }, + "amenity/motorcycle_parking": { + "title": { + "C": "Motorcycle Parking", + "ar": "موقف دراجات نارية", + "ast": "Aparcaderu de motos", + "ca": "Aparcament per a motocicletes", + "cs": "Parkování pro motorky", + "da": "Motorcykelparkering", + "de": "Motorradparkplatz", + "el": "Στάθμευση μοτοσυκλετών", + "en-GB": "Motorcycle Parking", + "en": "Motorcycle Parking", + "eo": "Motorcikla parkumejo", + "es": "Estacionamiento de motos", + "et": "Mootorratta parkla", + "eu": "Motorren aparkalekua", + "fa": "پارکینگ موتور سیکلت", + "fi": "Moottoripyöräpysäköinti", + "fr": "Parking pour motocyclettes", + "gl": "Aparcadoiro de motos", + "he": "חניית אופנועים", + "hr": "Parkiralište za motocikle", + "hu": "Motorkerékpár-parkoló", + "id": "Parkir Motor", + "is": "Mótorhjólastæði", + "it": "Parcheggio moto", + "ja": "オートバイの駐車場", + "ko": "오토바이 주차장", + "lt": "Motociklų stovėjimo aikštelė", + "lv": "Motociklu stāvvieta", + "mk": "Паркиралиште за мотоцикли", + "ms": "Tempat Letak Motosikal", + "nl": "Motorfietsparking", + "no": "Motorsykkelparkering", + "pl": "Parking dla motocykli", + "pt-BR": "Estacionamento de motos", + "pt": "Parque de motas", + "ro": "Parcare de Motociclete", + "ru": "Парковка для мотоциклов", + "sk": "Parkovanie pre motocykle", + "sl": "Parkirišče za motorje", + "sr": "Паркинг за мотоцикле", + "sv": "Motorcykelparkering", + "ta": "ஈருருளை நிறுத்துமிடம்", + "tr": "Motosiklet Parkı", + "uk": "Стоянка для мотоциклів", + "vi": "Chỗ Đậu Xe máy", + "zh-CN": "摩托车停车场", + "zh-HK": "電單車停車位", + "zh-TW": "機車停車場" + } + }, + "amenity/motorcycle_rental": { + "title": { + "C": "Motorcycle Rental", + "ar": "إيجار دراجات نارية", + "cs": "Půjčovna motocyklů", + "de": "Motorradverleih", + "el": "Ενοικίαση Μοτοσικλετών", + "en": "Motorcycle Rental", + "eo": "Motorcikl-pruntejo", + "es": "Alquiler de motos", + "fa": "اجاره موتور سیکلت", + "fi": "Moottoripyörävuokraamo", + "fr": "Location de motos", + "he": "השכרת אופנועים", + "hu": "Motorkerékpár-kölcsönző", + "it": "Noleggio Motocicli", + "ja": "レンタルバイク", + "ko": "오토바이 대여소", + "mk": "Изнајмување мотоцикли", + "nl": "Motorfietsverhuur", + "pl": "Wypożyczalnia motocykli", + "pt-BR": "Aluguel de motocicleta", + "pt": "Aluguer de motas", + "sk": "Požičovňa motocyklov", + "sv": "Motorcykeluthyrning", + "tr": "Motosiklet Kiralama", + "uk": "Прокат мотоциклів", + "vi": "Cho thuê Xe máy", + "zh-CN": "摩托车租赁处", + "zh-TW": "摩托車租賃" + } + }, + "amenity/music_school": { + "title": { + "C": "Music School", + "am": "የሙዚቃ ትምህርት ቤት", + "ar": "مدرسة موسيقى", + "ast": "Academia de música", + "ca": "Escola de música", + "ckb": "قوتابخانەی مۆسیقی", + "cs": "Hudební škola", + "da": "Musikskole", + "de": "Musikschule", + "el": "Μουσικό Σχολείο", + "en-GB": "Music School", + "en": "Music School", + "eo": "Muzika lernejo", + "es": "Escuela de música", + "eu": "Musika eskola", + "fa": "آموزشگاه موسیقی", + "fi": "Musiikkikoulu", + "fr": "École de musique", + "gl": "Escola de música", + "he": "בית ספר למוזיקה", + "hu": "Zeneiskola", + "is": "Tónlistarskóli", + "it": "Scuola di musica", + "ja": "音楽学校", + "ko": "음악 학교", + "lt": "Muzikos mokykla", + "lv": "Mūzikas skola", + "mk": "Музичко училиште", + "ms": "Sekolah Muzik", + "nl": "Muziekschool", + "no": "Musikkskole", + "pl": "Szkoła muzyczna niepodlegająca MEN", + "pt-BR": "Escola de Música", + "pt": "Escola de música", + "ru": "Музыкальная школа", + "sk": "Hudobná škola", + "sl": "Glasbena šola", + "sr": "Музичка школа", + "sv": "Musikskola", + "ta": "இசைப் பள்ளி", + "tr": "Müzik Okulu", + "uk": "Музична школа", + "vi": "Trường Âm nhạc", + "zh-CN": "音乐学校", + "zh-HK": "音樂學校", + "zh-TW": "音樂學校" + } + }, + "amenity/nightclub": { + "title": { + "C": "Nightclub", + "am": "የምሽት ክለብ", + "ar": "ملهى ليلي", + "ast": "Discoteca", + "ca": "Club nocturn", + "ckb": "یانەی شەوانە", + "cs": "Diskotéka", + "da": "Natklub", + "de": "Diskothek", + "el": "Νυχτερινό Κέντρο", + "en-GB": "Nightclub", + "en": "Nightclub", + "eo": "Noktoklubejo", + "es": "Discoteca", + "et": "Ööklubi", + "eu": "Klub", + "fa": "کلوپ شبانه", + "fi": "Yökerho", + "fr": "Boîte de nuit", + "gl": "Clube nocturno ou discoteca", + "he": "מועדון לילה", + "hr": "Noćni klub", + "hu": "Diszkó", + "id": "Kelab Malam", + "is": "Næturklúbbur", + "it": "Discoteca", + "ja": "ナイトクラブ", + "ko": "나이트클럽", + "lt": "Naktinis klubas", + "lv": "Naktsklubs", + "mk": "Ноќен клуб", + "ms": "Kelab Malam", + "nl": "Nachtclub", + "no": "Nattklubb", + "pl": "Klub nocny / dyskoteka", + "pt-BR": "Boate", + "pt": "Discoteca", + "ro": "Club de Noapte", + "ru": "Ночной клуб", + "sk": "Nočný klub", + "sl": "Nočni klub", + "sr": "Ноћни клуб", + "sv": "Nattklubb", + "ta": "இரவு விடுதி", + "tr": "Gece Kulübü", + "uk": "Нічний клуб", + "vi": "Câu lạc bộ Giải trí", + "zh-CN": "夜总会", + "zh-HK": "夜總會", + "zh-TW": "夜總會" + } + }, + "amenity/parking": { + "title": { + "C": "Parking Lot", + "ar": "مكان انتظار سيارات", + "cs": "Parkoviště", + "da": "Bilparkering", + "de": "Parkplatz", + "el": "Θέσεις Στάθμευσης", + "en-GB": "Car Park", + "en": "Parking Lot", + "eo": "Parkumejo", + "es": "Estacionamiento / Aparcamiento", + "et": "Autoparkla", + "fa": "پارکینگ", + "fi": "Pysäköintialue", + "fr": "Parking", + "gl": "Aparcadoiro de automóbiles", + "he": "מגרש חנייה", + "hr": "Parkiralište za automobile", + "hu": "Parkoló", + "id": "Parkiran", + "is": "Bílastæðasvæði", + "it": "Area di parcheggio", + "ja": "駐車場", + "ko": "주차장", + "lt": "Automobilių stovėjimo aikštelė", + "lv": "Stāvvieta", + "mk": "Паркиралиште", + "nl": "Parkeerplaats", + "no": "Parkeringsplass", + "pl": "Parking samochodowy", + "pt-BR": "Estacionamento", + "pt": "Parque de estacionamento", + "ru": "Парковка", + "sk": "Parkovisko", + "sl": "Parkirno mesto", + "sr": "Паркинг место", + "sv": "Parkeringsplats", + "tr": "Otopark", + "uk": "Автостоянка", + "vi": "Bãi Đậu xe", + "zh-CN": "停车场", + "zh-HK": "停車場", + "zh-TW": "停車場" + } + }, + "amenity/parking_entrance": { + "title": { + "C": "Parking Garage Entrance / Exit", + "ar": "مدخل / مخرج مرآب السيارات", + "cs": "Vjezd / Výjezd krytého parkoviště", + "da": "Ind/udgang til parkeringsgarage", + "de": "Garageneinfahrt/-ausfahrt", + "el": "Είσοδος / Έξοδος Γκαράζ", + "en": "Parking Garage Entrance / Exit", + "eo": "Parkumeja en-/el-veturejo", + "es": "Entrada / salida del garaje de estacionamiento", + "fa": "ورودی / خروجی پارکینگ", + "fi": "Pysäköintihallin ajoramppi", + "fr": "Entrée / sortie de garage ou parking", + "gl": "Porta de entrada de aparcadoiro", + "he": "יציאה לחניון", + "hr": "Ulaz/izlaz iz garaže za automobile", + "hu": "Parkolóház-bejárat", + "it": "Ingresso/uscita parcheggio sotterraneo", + "ja": "出入口(駐車場)", + "ko": "주차장 입구/출구", + "mk": "Влез/излез на покриено паркиралиште", + "nl": "Ingang/uitgang van parkeergarage", + "no": "Parkeringshus Inngang / utgang", + "pl": "Wjazd/wyjazd z parkingu/garażu", + "pt-BR": "Entrada / Saída da garagem", + "pt": "Entrada / Saída de estacionamento", + "ru": "Въезд в крытую парковку", + "sk": "Vchod / východ do garáže", + "sr": "Улаз/излаз за паркинг", + "sv": "In- och utfart parkeringsgarage", + "tr": "Kapalı Otopark Giriş / Çıkış", + "uk": "В’їзд/виїзд на криту стоянку", + "vi": "Lối Ra vào Bãi Đậu xe Cao tầng", + "zh-CN": "车库入口 / 出口", + "zh-TW": "停車場入口/出口" + } + }, + "amenity/parking_space": { + "title": { + "C": "Parking Space", + "ar": "موقف سيارات", + "ast": "Espaciu d'aparcamientu", + "ca": "Espai d'aparcament", + "cs": "Parkovací místo", + "da": "Parkeringsbås", + "de": "Stellplatz", + "el": "Χώρος Στάθμευσης", + "en-GB": "Parking Space", + "en": "Parking Space", + "eo": "Parkumeja loko (detala)", + "es": "Plaza de estacionamiento", + "et": "Parkimiskoht", + "eu": "Aparkatzeko lekua", + "fa": "جای پارک منفرد", + "fi": "Pysäköintiruutu", + "fr": "Place de parking", + "gl": "Praza de aparcadoiro", + "he": "אזור חניה", + "hr": "Parkirališno mjesto", + "hu": "Parkolóhely", + "is": "Bílastæðarými", + "it": "Stallo", + "ja": "駐車区画(1台ごとの)", + "ko": "주차 공간", + "lt": "Stovėjimo vieta", + "mk": "Паркинг-место", + "ms": "Ruang Letak Kenderaan", + "nl": "Parkeerplaats binnen parkeergelegenheid", + "no": "Parkeringsplass", + "pl": "Miejsce/miejsca parkingowe (pojedyncze lub ich zwarty blok)", + "pt-BR": "Vaga de estacionamento", + "pt": "Lugar de estacionamento", + "ro": "Loc de Parcare", + "ru": "Отдельное парковочное место на парковке", + "sk": "Parkovacie miesto", + "sl": "Parkirni prostor", + "sr": "Паркинг простор", + "sv": "Parkeringsruta", + "tr": "Park Yeri", + "uk": "Місце на стоянці", + "vi": "Chỗ Đậu xe", + "zh-CN": "停车位", + "zh-HK": "泊車位", + "zh-TW": "停車位" + } + }, + "amenity/payment_centre": { + "title": { + "C": "Payment Center", + "ar": "مركز دفع نقود", + "cs": "platební centrum", + "de": "Zahlstelle", + "el": "Κέντρο Πληρωμών", + "en-AU": "Payment Centre", + "en-GB": "Payment Centre", + "en": "Payment Center", + "eo": "Centro de pago", + "es": "Centro de pago", + "fa": "مرکز پرداخت", + "fi": "Maksupalvelu", + "fr": "Centre de paiement", + "gl": "Centro de pagamento", + "he": "מרכז תשלום", + "hu": "Befizetőpont", + "it": "Centro per i pagamenti", + "ja": "納入窓口", + "mk": "Платежно место", + "nl": "Betalingscentrum", + "no": "Betalingssenter", + "pl": "Centrum płatnicze", + "pt-BR": "Centro de pagamento", + "pt": "Balcão de pagamento", + "sk": "Platobné centrum", + "sl": "Plačilni center", + "sv": "Betalningscenter", + "tr": "Ödeme Merkezi", + "uk": "Приймання платежів", + "vi": "Trung tâm Thanh toán", + "zh-CN": "收银台", + "zh-HK": "繳費處", + "zh-TW": "繳費中心" + } + }, + "amenity/payment_terminal": { + "title": { + "C": "Payment Terminal", + "ar": "محطة دفع نقود", + "cs": "Platební terminál", + "de": "Zahlungsterminal", + "el": "Τερματικό Πληρωμών", + "en": "Payment Terminal", + "eo": "Pag-aŭtomato", + "es": "Terminal de pago", + "fa": "ترمینال پرداخت ، POS", + "fi": "Maksupääte", + "fr": "Terminal de paiement", + "gl": "Terminal de pagamento", + "he": "מסוף תשלום", + "hu": "Befizetőautomata", + "it": "Terminale pagamenti", + "ja": "支払端末", + "mk": "Платежен терминал", + "nl": "Betalingsterminal", + "no": "Betalingsterminal", + "pl": "Terminal płatniczy", + "pt-BR": "Terminal de pagamento", + "pt": "Terminal de pagamento", + "ru": "Платёжный терминал", + "sk": "Platobný terminál", + "sl": "Plačilni terminal", + "sv": "Betalningsterminal", + "tr": "Ödeme Terminali", + "uk": "Платіжний термінал", + "zh-CN": "支付终端", + "zh-HK": "繳費終端機", + "zh-TW": "繳費窗口" + } + }, + "amenity/pharmacy": { + "title": { + "C": "Pharmacy Counter", + "am": "መድሃኒት ቤት", + "ar": "صيدلية", + "ca": "Farmàcia", + "cs": "Okénko/přepážka lékárny", + "de": "Apotheke", + "el": "Κατάστημα Φαρμακείου", + "en-AU": "Pharmacy", + "en": "Pharmacy Counter", + "eo": "Apoteko", + "es": "Farmacia", + "fa": "داروخانه", + "fi": "Apteekki", + "fr": "Pharmacie", + "gl": "Farmacia", + "he": "דלפק בית מרקחת", + "hu": "Gyógyszertár", + "id": "Apotek", + "it": "Farmacia", + "ja": "薬局・ドラッグストア(薬剤師が居る店)", + "ko": "약국", + "mk": "Аптека", + "nl": "Apotheek", + "no": "Apotek Disk", + "pl": "Apteka", + "pt-BR": "Farmácia", + "pt": "Farmácia", + "ru": "Аптека", + "sl": "Lekarna", + "sr": "Апотекарски шалтер", + "sv": "Läkemedel", + "tr": "Eczane", + "uk": "Аптека", + "vi": "Quầy thuốc", + "zh-CN": "药房", + "zh-TW": "藥局" + } + }, + "amenity/photo_booth": { + "title": { + "C": "Photo Booth", + "cs": "Foto budka", + "da": "Pasfotoautomat", + "de": "Fotoautomat", + "el": "Φωτογραφικός Θάλαμος", + "en": "Photo Booth", + "eo": "fot-aŭtomato", + "es": "Cabina de fotos", + "et": "Fotokabiin", + "fa": "غرفه عکس", + "fi": "Valokuvauskoppi", + "fr": "Photomaton", + "gl": "Cabina de fotos", + "he": "תא צילום", + "hu": "Fényképezőfülke", + "it": "Cabina per fototessere", + "ja": "証明写真機", + "ko": "사진 부스", + "mk": "Фотокабина", + "nl": "Pasfotohokje", + "no": "Fotokiosk", + "pl": "Fotobudka", + "pt-BR": "Cabine de foto", + "pt": "Cabine Fotográfica", + "ru": "Фотокабина", + "sk": "Fotobúdka", + "sv": "Fotoautomat", + "tr": "Fotoğraf Kabini", + "uk": "Фото-кабінка", + "vi": "Buồng Chụp hình", + "zh-CN": "自助拍照机", + "zh-TW": "照相站" + } + }, + "amenity/place_of_worship": { + "title": { + "C": "Place of Worship", + "af": "Plek van aanbidding", + "am": "የእምነት ቦታ", + "ar": "مكان عبادة", + "ast": "Llugar de cultu", + "bg": "Религиозен храм", + "bn": "প্রার্থনাস্থল", + "bs": "Bogomolja", + "ca": "Lloc de culte", + "ckb": "پەرستگا", + "cs": "Chrám", + "da": "Tilbedelsessted", + "de": "Andachtsstätte", + "dv": "އަޅުކަންކުރާ ތަންތަން", + "el": "Χώρος Λατρείας", + "en-GB": "Place of Worship", + "en": "Place of Worship", + "eo": "Preĝejo", + "es": "Lugar de adoración", + "et": "Pühakoda", + "eu": "Gurtza gune", + "fa": "پرستشگاه", + "fi": "Rukoilupaikka", + "fr": "Lieu de culte", + "gl": "Lugar de culto", + "he": "בית תפילה", + "hr": "Vjerski objekt", + "hu": "Istentiszteleti hely", + "id": "Tempat Beribadah", + "is": "Tilbeiðsluhús", + "it": "Luogo di culto", + "ja": "宗教施設全般", + "ko": "종교 시설", + "lt": "Maldos namai", + "lv": "Dievnams", + "mk": "Верско здание", + "ms": "Tempat Ibadat", + "ne": "पूजा गर्ने ठाउँ", + "nl": "Gebedshuis", + "no": "Bedested", + "pl": "Miejsce odbywania się praktyk religijnych", + "pt-BR": "Local de prática religiosa", + "pt": "Local de oração", + "ro": "Loc de Rugăciune", + "ru": "Место поклонения", + "sk": "Náboženské miesto", + "sl": "Verski objekt", + "so": "Goobta Cibaadada", + "sr": "Место богослужења", + "sv": "Plats för tillbedjan", + "ta": "வழிபாட்டு இடம்", + "tr": "İbadethane", + "uk": "Культове місце", + "vi": "Nơi Thờ phụng", + "yue": "拜神之所", + "zh-CN": "礼拜场所", + "zh-HK": "祟拜場所", + "zh-TW": "宗教祟拜場所", + "zh": "礼拜场所" + } + }, + "amenity/planetarium": { + "title": { + "C": "Planetarium", + "ar": "قبة فلكية", + "ast": "Planetariu", + "ca": "Planetari", + "cs": "Planetárium", + "da": "Planetarium", + "de": "Planetarium", + "el": "Πλανητάριο", + "en-GB": "Planetarium", + "en": "Planetarium", + "eo": "Planetario (astrokinejo)", + "es": "Planetario", + "et": "Planetaarium", + "eu": "Planetario", + "fa": "آسمان نما", + "fi": "Planetaario", + "fr": "Planétarium", + "gl": "Planetario", + "he": "מצפה כוכבים", + "hr": "Planetarij", + "hu": "Planetárium", + "is": "Stjörnuver", + "it": "Planetario", + "ja": "プラネタリウム", + "kn": "ತಾರಾಲಯ", + "ko": "천체투영관", + "lt": "Planetariumas", + "lv": "Planetārijs", + "mk": "Планетариум", + "ms": "Planetarium", + "nl": "Planetarium", + "no": "Planetarium", + "pl": "Planetarium", + "pt-BR": "Planetário", + "pt": "Planetário", + "ro": "Planetariu", + "ru": "Планетарий", + "sk": "Planetárium", + "sl": "Planetarij", + "sr": "Планетаријум", + "sv": "Planetarium", + "ta": "கோளரங்கம்", + "tr": "Gökevi", + "uk": "Планетарій", + "vi": "Cung Thiên văn", + "zh-CN": "天文馆", + "zh-HK": "天象廳", + "zh-TW": "天文臺" + } + }, + "amenity/police": { + "title": { + "C": "Police", + "af": "Polisie", + "am": "ፖሊስ ጣቢያ", + "ar": "شرطة", + "ast": "Policía", + "bg": "Полиция", + "bn": "পুলিশ", + "bs": "Policija", + "ca": "Comissaria de Policia", + "ckb": "پۆلیس", + "cs": "Policie", + "da": "Politi", + "de": "Polizei", + "el": "Αστυνομικό Τμήμα", + "en-GB": "Police", + "en": "Police", + "eo": "Policejo", + "es": "Policía", + "et": "Politsei", + "eu": "Polizia", + "fa": "پليس", + "fi": "Poliisiasema", + "fr": "Poste de police", + "gl": "Policía", + "he": "משטרה", + "hr": "Policija", + "hu": "Rendőrség", + "id": "Polisi", + "is": "Lögregla", + "it": "Forze di polizia", + "ja": "警察", + "kn": "ಪೊಲೀಸು", + "ko": "경찰서", + "lt": "Policija", + "lv": "Policija", + "mk": "Полиција", + "ms": "Polis", + "nl": "Politiekantoor", + "no": "Politi", + "pl": "Policja/straż miejsca lub gminna", + "pt-BR": "Polícia", + "pt": "Esquadra da polícia", + "ro": "Poliție", + "ru": "Полиция", + "sk": "Polícia", + "sl": "Policija", + "sr": "Полиција", + "sv": "Polis", + "ta": "காவல்", + "te": "పోలీసు", + "tr": "Emniyet Müdürlüğü", + "uk": "Поліція", + "vi": "Đồn Cảnh sát", + "yue": "差館", + "zh-CN": "警察局", + "zh-HK": "警署", + "zh-TW": "警察局", + "zh": "警察局" + } + }, + "amenity/polling_station": { + "title": { + "C": "Permanent Polling Place", + "cs": "stálé volební místo", + "de": "Permanentes Wahllokal", + "en": "Permanent Polling Place", + "eo": "Balotejo (neŝanĝanta loko)", + "es": "Lugar de votación permanente", + "fa": "محل دائمی رأی‌گیری", + "fi": "Pysyvä äänestyspaikka", + "fr": "Bureau de vote permanent", + "gl": "Lugar de votación permanente", + "he": "קלפי קבוע", + "hu": "Állandó szavazóhely", + "it": "Sezione Elettorale permanente", + "ja": "投票所(常設)", + "ko": "상설 투표소", + "mk": "Трајно гласачко место", + "nl": "Permanent stembureau", + "no": "Fast Stemmeplass", + "pl": "Stały lokal wyborczy", + "pt-BR": "Local de votação permanente", + "pt": "Local de voto permanente", + "sk": "Permanentná volebná miestnosť", + "sv": "Permanent vallokal", + "tr": "Daimi Oylama Yeri", + "uk": "Виборча дільниця", + "vi": "Địa điểm Đi bầu Cố định", + "zh-CN": "选举投票站", + "zh-TW": "永久投票處" + } + }, + "amenity/post_box": { + "title": { + "C": "Mail Drop Box", + "ar": "صندوق بريد عام", + "cs": "Poštovní schránka", + "de": "Briefkasten", + "el": "Γραμματοκιβώτιο Αλληλογραφίας", + "en-GB": "Post Box", + "en": "Mail Drop Box", + "eo": "Poŝtkesto (senda)", + "es": "Buzón de correo", + "et": "Kirjakast", + "fa": "جعبه انداختن پست", + "fi": "Postilaatikko", + "fr": "Boîte aux lettres (envoi)", + "gl": "Caixa do correo", + "he": "תיבת איסוף דואר", + "hu": "Postaláda", + "id": "Kotak Surat", + "it": "Buca delle lettere", + "ja": "郵便ポスト", + "ko": "우체통", + "mk": "Поштенска преграда", + "nl": "Brievenbus", + "no": "Post innleveringspostkasse", + "pl": "Skrzynka pocztowa", + "pt-BR": "Caixa de correio", + "pt": "Marco de correio", + "ru": "Почтовый ящик", + "sk": "Poštová schránka", + "sv": "Brevlåda", + "tr": "Posta Bırakma Kutusu", + "uk": "Поштова скриня", + "vi": "Thùng thư", + "zh-CN": "邮件投递箱", + "zh-TW": "郵筒" + } + }, + "amenity/post_depot": { + "title": { + "C": "Post Sorting Office", + "ar": "مكتب الفرز البريدي", + "cs": "poštovní depo", + "da": "Postsorteringsfacilitet", + "de": "Postverteilzentrum", + "el": "Γραφείο Ταξινόμησης Αλληλογραφίας", + "en": "Post Sorting Office", + "eo": "Poŝta disspecigejo", + "es": "Oficina de clasificación de correos", + "fa": "اداره پست", + "fi": "Postinlajittelukeskus", + "fr": "Bureau de tri de courrier", + "gl": "Oficina de clasificación de correos", + "he": "משרד מיון דואר", + "hu": "Postai logisztikai központ", + "it": "Ufficio di smistamento postale", + "ja": "郵便集配所", + "ko": "우편집중국", + "mk": "Служба за поштенска отпрема", + "nl": "Postsorteerkantoor", + "no": "Post Sorteringskontor", + "pl": "Sortownia listów lub paczek", + "pt-BR": "Escritório de classificação de correspondência", + "pt": "Centro de distribuição de correio", + "sk": "Kancelária triedenia pošty", + "sr": "Поштански сортажни центар", + "sv": "Postsorteringskontor", + "tr": "Posta Sıralama Ofisi", + "uk": "Поштова сортувальна станція", + "zh-CN": "包裹分拣中心", + "zh-TW": "郵件處理中心" + } + }, + "amenity/post_office": { + "title": { + "C": "Post Office", + "af": "Poskantoor", + "am": "ፖስታ ቤት", + "ar": "مكتب البريد", + "ast": "Oficina de correos", + "bg": "Поща", + "bn": "ডাকঘর", + "bs": "Pošta", + "ca": "Oficina de correus", + "ckb": "نووسینگەی پۆستە", + "cs": "Pošta", + "da": "Postkontor", + "de": "Postfiliale", + "el": "Ταχυδρομείο", + "en-GB": "Post Office", + "en": "Post Office", + "eo": "Poŝtoficejo", + "es": "Oficina postal", + "et": "Postkontor", + "eu": "Postetxe", + "fa": "اداره پست", + "fi": "Postitoimisto", + "fr": "Bureau de poste", + "gl": "Oficina de correos", + "he": "סניף דואר", + "hr": "Pošta", + "hu": "Posta", + "id": "Kantor Pos", + "is": "Pósthús", + "it": "Ufficio Postale", + "ja": "郵便局", + "kn": "ಅಂಚೆ ಕಚೇರಿ", + "ko": "우체국", + "lt": "Paštas", + "lv": "Pasta nodaļa", + "mk": "Пошта", + "ms": "Pejabat Pos", + "nl": "Postkantoor", + "no": "Postkontor", + "pl": "Poczta/agencja pocztowa", + "pt-BR": "Agência de correios", + "pt": "Estação de correios", + "ro": "Oficiul Poștal", + "ru": "Почтовое отделение", + "sk": "Pošta", + "sl": "Pošta", + "sr": "Пошта", + "sv": "Postkontor", + "ta": "அஞ்சலகம்", + "te": "తపాలా కార్యాలయం", + "tr": "Postane", + "uk": "Пошта", + "vi": "Bưu điện", + "yue": "郵政局", + "zh-CN": "邮局", + "zh-HK": "郵政局", + "zh-TW": "郵局", + "zh": "邮局" + } + }, + "amenity/prep_school": { + "title": { + "C": "Test Prep / Tutoring School", + "ar": "مدرسة إعداد للاختبارات/دروس خصوصية", + "cs": "doučovací škola", + "de": "Nachhilfeanbieter", + "el": "Σχολείο Προπαρασκευής", + "en": "Test Prep / Tutoring School", + "eo": "Lernejo pretiganta (al ekzameno/universitato)", + "es": "Preparación para exámenes / Escuela de tutoría", + "fa": "آزمون آزمایشی / مؤسسه آموزش", + "fi": "Valmennuskoulu", + "fr": "École préparatoire", + "gl": "Preparación para exames / Escola de titoría", + "he": "לימודי נהיגה", + "hu": "Tesztpálya, tanulópálya", + "it": "Scuola di preparazione / tutoraggio ai test", + "ja": "進学予備校", + "ko": "학원", + "mk": "Подготвително училиште", + "nl": "Studiebegeleiding", + "pl": "Szkoła korepetycji", + "pt-BR": "Escola de preparação para exames", + "pt": "Centro de explicações", + "sv": "Pluggskola", + "tr": "Sınava Hazırlık / Özel Ders Okulu", + "uk": "Підготовчий центр/Репетитор", + "vi": "Trường Luyện thi / Dạy Kèm", + "zh-CN": "补习班/培训班/辅导班", + "zh-TW": "補習班" + } + }, + "amenity/prison": { + "title": { + "C": "Prison Grounds", + "am": "እስር ቤት", + "ar": "مرافق/أراضي سجن", + "ast": "Terrén de cárcel", + "ca": "Terrenys de presó", + "cs": "Prostor věznice", + "da": "Fængselsgrund", + "de": "Gefängnisanlage", + "el": "Χώρος Φυλακής", + "en-GB": "Prison Grounds", + "en": "Prison Grounds", + "eo": "Mallibereja tereno", + "es": "Terreno de prisión / cárcel", + "et": "Vangla", + "eu": "Espetxe", + "fa": "محوطه زندان", + "fi": "Vankila-alue", + "fr": "Prison (terrain)", + "gl": "Área penitenciaria", + "he": "מגרש כלא", + "hr": "Zatvorsko zemljište", + "hu": "Börtön területe", + "is": "Fangelsislóð", + "it": "Area carceraria", + "ja": "刑務所(代表点または敷地)", + "kn": "ಬಂದೀಖಾನೆ ಮೈದಾನ", + "ko": "교도소 부지", + "mk": "Затворски двор", + "ms": "Kawasan Penjara", + "nl": "Gevangenisgebied", + "no": "Fengselsområde", + "pl": "Teren więzienia", + "pt-BR": "Presídio", + "pt": "Prisão", + "ro": "Închisoare", + "ru": "Тюрьма", + "sk": "Areál väznice", + "sl": "Območje zapora", + "sr": "Затворско двориште", + "sv": "Fängelseområde", + "tr": "Cezaevi", + "uk": "Вʼязниця", + "vi": "Sân Nhà tù", + "zh-CN": "监狱/看守所", + "zh-HK": "監獄範圍", + "zh-TW": "監獄範圍" + } + }, + "amenity/pub": { + "title": { + "C": "Pub", + "af": "Kroeg", + "am": "ፐብ", + "ar": "حانة", + "ast": "Pub", + "bg": "Пъб", + "bn": "সরাইখানা", + "bs": "Pub", + "ca": "Bar", + "cs": "Hospoda", + "da": "Værtshus", + "de": "Kneipe", + "el": "Καπηλειό", + "en-GB": "Pub", + "en": "Pub", + "eo": "Taverno", + "es": "Pub (latam) / Bar (es)", + "et": "Kõrts", + "eu": "Pub", + "fa": "میخانه", + "fi": "Pubi", + "fr": "Pub", + "gl": "Bar", + "he": "פאב", + "hr": "Pivnica", + "hu": "Kocsma", + "id": "Pub", + "is": "Krá", + "it": "Pub", + "ja": "居酒屋", + "ko": "주점", + "lt": "Aludė", + "lv": "Krogs", + "mk": "Паб", + "ms": "Pub", + "nl": "Café", + "no": "Pub", + "pl": "Pub", + "pt-BR": "Bar / Boteco", + "pt": "Taberna", + "ro": "Pub", + "ru": "Паб", + "sk": "Krčma", + "sl": "Pivnica", + "sr": "Паб", + "sv": "Pub", + "ta": "பப்", + "te": "పబ్", + "tr": "Bar", + "uk": "Паб", + "vi": "Quán rượu Pub", + "yue": "酒館", + "zh-CN": "英式酒吧", + "zh-HK": "酒館", + "zh-TW": "Pub", + "zh": "酒馆" + } + }, + "amenity/public_bath": { + "title": { + "C": "Public Bath", + "ar": "دورة مياة عمومية", + "ast": "Baños públicos", + "ca": "Banys públic", + "cs": "Veřejné lázně", + "da": "Offentligt bad", + "de": "Öffentliches Bad", + "el": "Δημόσιο Λουτρό", + "en-GB": "Public Bath", + "en": "Public Bath", + "eo": "Banejo (distro)", + "es": "Baño público", + "eu": "Komun publikoak", + "fa": "حمام عمومی", + "fi": "Kylpylaitos", + "fr": "Bain public", + "gl": "Baño público", + "he": "מרחצאות ציבוריות", + "hr": "Javno kupalište", + "hu": "Közfürdő", + "is": "Almenningsböð", + "it": "Bagni pubblici", + "ja": "公衆浴場", + "ko": "대중 목욕탕", + "lt": "Vieša vonia", + "mk": "Јавна бања", + "nl": "Publiek bad", + "no": "Offentlig bad", + "pl": "Łaźnia publiczna", + "pt-BR": "Banho público", + "pt": "Banhos públicos", + "ro": "Baie Publică", + "ru": "Общественная баня", + "sk": "Verejné sprchy", + "sl": "Javno kopališče", + "sr": "Јавно купатило", + "sv": "Publikt bad", + "tr": "Hamam", + "uk": "Громадська лазня", + "vi": "Nơi Tắm Công cộng", + "zh-CN": "公共浴室", + "zh-HK": "公共浴室", + "zh-TW": "公共澡堂" + } + }, + "amenity/public_bookcase": { + "title": { + "C": "Public Bookcase", + "ar": "خزانة كتب عامة", + "ast": "Biblioteca llibre", + "ca": "Biblioteca pública", + "cs": "Veřejná knihovnička", + "da": "Bogkasse", + "de": "Öffentlicher Bücherschrank", + "el": "Δημόσια Ανταλλακτική Βιβλιοθήκη", + "en-GB": "Public Bookcase", + "en": "Public Bookcase", + "eo": "Publika libroŝranko", + "es": "Biblioteca libre", + "et": "Avalik raamaturiiul", + "eu": "Apalategi publikoa", + "fa": "قفسه کتاب عمومی", + "fi": "Julkinen kirjahylly", + "fr": "Microbibliothèque", + "gl": "Estante pública", + "he": "ספריה", + "hr": "Javna knjižnica", + "hu": "Közösségi könyvespolc", + "is": "Almenningsbókakassi", + "it": "Libreria pubblica", + "ja": "公共の本棚", + "ko": "공공 책장", + "lv": "Publisks Grāmatplaukts", + "mk": "Јавен шкаф за книги", + "nl": "Openbare boekenkast", + "no": "Bokkiosk", + "pl": "Publiczna wymiana książek", + "pt-BR": "Biblioteca ao ar livre", + "pt": "Biblioteca de rua", + "ru": "Общественный книжный шкаф", + "sk": "Verejná knihovnička", + "sl": "Ulična knjižnica", + "sr": "Јавна библиотека", + "sv": "Offentlig bokhylla", + "tr": "Sokak Kütüphanesi", + "uk": "Книжкова шафа", + "vi": "Tủ sách Công cộng", + "zh-CN": "公共书架", + "zh-HK": "公眾書架", + "zh-TW": "漂書站" + } + }, + "amenity/ranger_station": { + "title": { + "C": "Ranger Station", + "ar": "محطة الحراسة", + "ast": "Guardes forestales", + "bs": "Stanica rendžerske službe", + "ca": "Base d'Agents Rurals", + "cs": "Návštěvnické centrum", + "da": "Rangerstation", + "de": "Ranger-Station", + "el": "Σταθμός Δασοφυλάκων", + "en-GB": "Warden Station", + "en": "Ranger Station", + "eo": "Naturrezerveja oficejo/impostbudo", + "es": "Estación de guardaparques", + "et": "Looduskeskus", + "eu": "Basozain geltokia", + "fa": "ایستگاه جنگلبانی", + "fi": "Metsävartiosto", + "fr": "Services publics des parcs nationaux", + "gl": "Estación de garda de bosques", + "he": "תחנת פקחים", + "hr": "Rendžerska postaja", + "hu": "Nemzeti park látogatóközpontja", + "is": "Landvarðastöð", + "it": "Guardiaparco", + "ja": "レンジャーの詰所", + "ko": "관리소", + "lt": "Girininkų stotis", + "mk": "Шумарска куќарка", + "ms": "Stesen Renjer", + "nl": "Boswachtershut", + "pl": "Baza strażników rezerwatu/parku", + "pt-BR": "Estação de patrulha", + "pt": "Posto de guarda florestal", + "ru": "Лесничество", + "sk": "Stanica horskej služby", + "sl": "Čuvaj parka", + "sr": "Шумарска станица", + "sv": "Friluftsanläggningen", + "tr": "Korucu İstasyonu", + "uk": "Контора лісництва", + "vi": "Trạm Kiểm lâm", + "yue": "郊野訪客處", + "zh-CN": "野郊访客处", + "zh-HK": "郊野公園遊客中心", + "zh-TW": "國家公園管理站" + } + }, + "recycling_type/centre": { + "title": { + "C": "Recycling Center" + } + }, + "recycling_type/container": { + "title": { + "C": "Recycling Container" + } + }, + "amenity/refugee_site": { + "title": { + "C": "Refugee Camp", + "ar": "مخيم لاجئين", + "cs": "Uprchlický tábor", + "de": "Flüchtlingslager", + "el": "Δομή Προσφύγων", + "en": "Refugee Camp", + "eo": "Kampadejo por rifuĝantoj", + "es": "Campamento de refugiados", + "fa": "اردوگاه پناهندگان", + "fi": "Pakolaisleiri", + "fr": "Camp de réfugiés", + "gl": "Campo de refuxiados", + "he": "מחנה פליטים", + "hu": "Menekülttábor", + "it": "Campo profughi", + "ja": "難民キャンプ", + "ko": "난민촌", + "mk": "Бегалски камп", + "nl": "Vluchtelingenkamp", + "pl": "Obóz uchodźców", + "pt-BR": "Campo de refugiados", + "pt": "Campo de refugiados", + "sk": "Utečenecký tábor", + "sr": "Избеглички камп", + "sv": "Flyktingläger", + "tr": "Mülteci Kampı", + "uk": "Табір біженців", + "vi": "Trại Tị nạn", + "yue": "難民營", + "zh-CN": "难民营", + "zh-TW": "難民營" + } + }, + "amenity/research_institute": { + "title": { + "C": "Research Institute Grounds", + "ar": "أراضي معهد بحوث", + "cs": "prostor výzkumného ústavu", + "da": "Forskningsinstitutsområde", + "de": "Forschungseinrichtung", + "en": "Research Institute Grounds", + "eo": "Esplorada instituto", + "es": "Terreno del Instituto de Investigación", + "fa": "محدوده مؤسسه تحقیقاتی / پژوهشکده زمین‌شناسی", + "fi": "Tutkimuslaitos", + "gl": "Área de Instituto de Investigación", + "he": "מתחם מכון מחקר", + "hu": "Kutatóintézet területe", + "it": "Istituto di ricerca", + "ja": "研究所", + "ko": "연구 기관 부지", + "mk": "Истражувачки институт", + "nl": "Gebied van een onderzoekscentrum", + "no": "Forskningsinstitutt Grunn", + "pl": "Instytut badawczy", + "pt-BR": "Área do instituto de pesquisa", + "pt": "Instituto de pesquisa", + "sk": "Výskumný ústav", + "sv": "Forskningsinstitutsområde", + "tr": "Araştırma Enstitüsü Alanı", + "uk": "Територія науково-дослідного інституту", + "vi": "Sân Viện nghiên cứu", + "zh-CN": "研究所场地", + "zh-TW": "研究機構場地" + } + }, + "amenity/restaurant": { + "title": { + "C": "Restaurant", + "af": "Restaurant", + "am": "ምግብ ቤት", + "ar": "مطعم", + "ast": "Restaurante", + "bg": "Ресторант", + "bn": "রেস্তোরাঁ", + "bs": "Restoran", + "ca": "Restaurant", + "ckb": "خواردنگە", + "cs": "Restaurace", + "da": "Restaurant", + "de": "Restaurant", + "dv": "ރެސްޓޯރަންޓް", + "el": "Εστιατόριο / Ταβέρνα", + "en-GB": "Restaurant", + "en": "Restaurant", + "eo": "Restoracio", + "es": "Restaurante", + "et": "Restoran", + "eu": "Jatetxe", + "fa": "رستوران", + "fi": "Ravintola", + "fr": "Restaurant", + "gl": "Restaurante", + "he": "מסעדה", + "hr": "Restoran", + "hu": "Étterem", + "id": "Restoran", + "is": "Veitingahús", + "it": "Ristorante", + "ja": "レストラン全般", + "kn": "ಉಪಾಹಾರ ಗೃಹ", + "ko": "음식점", + "lt": "Restoranas", + "lv": "Restorāns", + "mk": "Ресторан", + "ms": "Restoran", + "ne": "रेस्टुरेन्ट", + "nl": "Restaurant", + "no": "Restaurant", + "pl": "Restauracja", + "pt-BR": "Restaurante", + "pt": "Restaurante", + "ro": "Restaurant", + "ru": "Ресторан", + "sk": "Reštaurácia", + "sl": "Restavracija", + "so": "Maqaayad", + "sr": "Ресторан", + "sv": "Restaurang", + "ta": "உணவகம்", + "te": "రెస్టారెంట్", + "tr": "Lokanta", + "uk": "Ресторан", + "vi": "Nhà hàng", + "yue": "餐廳", + "zh-CN": "餐馆", + "zh-HK": "餐廳", + "zh-TW": "餐廳", + "zh": "餐馆" + } + }, + "amenity/sanitary_dump_station": { + "title": { + "C": "RV Toilet Disposal", + "ar": "مكب صرف صحي للكرفانات", + "ast": "Vertíu de depósitos d'autocaravanes", + "ca": "Estació de buidatge de lavabos", + "cs": "Výlevka pro karavany", + "da": "Bortskaffelse af sanitært affald", + "de": "Campingtoiletten-Entsorgungsanlage", + "en-GB": "RV Toilet Disposal", + "en": "RV Toilet Disposal", + "eo": "Stacio de forigo de fekaĵoj (kampado)", + "es": "Desecho de inodoro de casa rodante", + "fa": "دفع توالت RV", + "fi": "Asuntoautojen jäteveden tyhjennyspiste", + "fr": "Station de vidange sanitaire", + "gl": "Depósito sanitario para autocaravanas", + "he": "תחנת סילוק שפכים מקרוונים", + "hr": "Pražnjenje toaleta za kamp kućice", + "hu": "Szaniterürítő hely (lakóautóknak)", + "is": "Salernishreinsun fyrir bíla", + "it": "Smaltimento reflui camper", + "ja": "キャンピングカー用汚物廃棄所", + "ko": "RV 화장실 처리장", + "mk": "Исфрлање трајлерски фекалии", + "nl": "Kampeerauto-toilet-afvoer", + "no": "Bobil-tømmestasjon", + "pl": "Miejsce opróżniania toalety (dla kamperów)", + "pt-BR": "Ponto de descarga de dejetos (para trailers)", + "pt": "Escoamento sanitário para autocaravanas", + "ru": "Слив для туалета трейлеров", + "sk": "Vyprázdňovanie karavánových toaliet", + "sl": "Odlaganje fekalij za avtodome", + "sv": "Latrintömning för campingfordon", + "tr": "Tuvalet Atık Yeri", + "uk": "Місце зливу каналізації", + "vi": "Trạm Đổ Chất thải dành cho Nhà lưu động", + "zh-CN": "厕所卸污处", + "zh-HK": "露營車廁所廢物收集", + "zh-TW": "RV移動廁所" + } + }, + "amenity/school": { + "title": { + "C": "School Grounds", + "am": "ትምህርት ቤት", + "ar": "أرض مدرسة", + "ast": "Antoxana d'escuela", + "ca": "Escola", + "cs": "Prostor školy", + "da": "Skolegrund", + "de": "Schule, Schulgelände", + "dv": "ސްކޫލު ބިން", + "el": "Σχολείο", + "en-GB": "School Grounds", + "en": "School Grounds", + "eo": "Lernejo (ISCED 1-3)", + "es": "Terreno de escuela / colegio", + "et": "Kool", + "eu": "Eskola eremu", + "fa": "محیط مدرسه", + "fi": "Koulualue (peruskoulu/lukio/ammattikoulu)", + "fr": "École élémentaire ou secondaire (terrain)", + "gl": "Área escolar", + "he": "מגרש בית ספר", + "hr": "Škola i teren oko škole", + "hu": "Iskola területe", + "id": "Lingkungan Sekolah", + "is": "Skólalóð", + "it": "Area scolastica", + "ja": "学校(代表点または敷地)", + "ko": "학교 부지", + "lt": "Mokyklos kiemas", + "lv": "Skolas Zeme", + "mk": "Училиштен двор", + "ms": "Kawasan Sekolah", + "nl": "Schoolgebied", + "no": "Skoleområde", + "pl": "Szkoła podstawowa/średnia – teren (nie stosować na budynku!)", + "pt-BR": "Escola", + "pt": "Escola", + "ro": "Școală", + "ru": "Школа", + "sk": "Školský areál", + "sl": "Izobraževalno središče", + "so": "Goobaha Dugsiyada", + "sr": "Школско двориште", + "sv": "Skolområde", + "ta": "பள்ளி மைதானம்", + "tr": "Okul", + "uk": "Територія школи", + "vi": "Sân Trường", + "zh-CN": "学校", + "zh-HK": "學校範圍", + "zh-TW": "中小學範圍" + } + }, + "amenity/shelter": { + "title": { + "C": "Shelter", + "ar": "مأوى/عشة", + "ast": "Abellugu", + "bs": "Sklonište", + "ca": "Refugi", + "cs": "Přístřešek", + "da": "Læsted", + "de": "Wetterschutz", + "el": "Στέγαστρο", + "en-GB": "Shelter", + "en": "Shelter", + "eo": "Ŝirmejo", + "es": "Refugio", + "et": "Varjualune", + "eu": "Aterpetxe", + "fa": "پناهگاه", + "fi": "Katos", + "fr": "Abri", + "gl": "Abeiro", + "he": "מקלט", + "hr": "Sklonište", + "hu": "Esőbeálló", + "is": "Skýli", + "it": "Riparo", + "ja": "シェルター全般(休憩所、避難所)", + "kn": "ಅಡೆ", + "ko": "대피소", + "lt": "Pastogė", + "lv": "Pajumte", + "mk": "Засолниште", + "nl": "Beschutting", + "no": "Skur", + "pl": "Schronienie", + "pt-BR": "Abrigo contra intempéries", + "pt": "Abrigo", + "ru": "Укрытие от непогоды", + "sk": "Prístrešok", + "sl": "Zavetišče", + "sr": "Склониште", + "sv": "Väderskydd", + "tr": "Barınak", + "uk": "Притулок", + "vi": "Nhà trú", + "yue": "天遮或亭", + "zh-CN": "亭", + "zh-HK": "涼亭", + "zh-TW": "涼亭" + } + }, + "amenity/shower": { + "title": { + "C": "Shower", + "ar": "دش استحمام", + "ast": "Ducha", + "ca": "Dutxa", + "cs": "Sprchy", + "da": "Brusebad", + "de": "Dusche", + "el": "Ντουζιέρα", + "en-GB": "Shower", + "en": "Shower", + "eo": "Duŝejo", + "es": "Ducha", + "et": "Dušš", + "eu": "Dutxa", + "fa": "دوش", + "fi": "Suihku", + "fr": "Douche", + "gl": "Ducha", + "he": "מקלחת", + "hr": "Tuš", + "hu": "Zuhany", + "is": "Steypibað", + "it": "Doccia", + "ja": "シャワー室", + "ko": "샤워실", + "lt": "Dušas", + "lv": "Duša", + "mk": "Туш", + "nl": "Douche", + "no": "Dusj", + "pl": "Prysznic", + "pt-BR": "Ducha", + "pt": "Chuveiro", + "ru": "Душ", + "sk": "Sprcha", + "sl": "Tuš", + "sr": "Туш", + "sv": "Dusch", + "tr": "Banyo", + "uk": "Душ", + "vi": "Tắm đứng", + "zh-CN": "淋浴间", + "zh-HK": "淋浴處", + "zh-TW": "淋浴間" + } + }, + "amenity/smoking_area": { + "title": { + "C": "Smoking Area", + "ar": "منطقة مخصصة للتدخين", + "ca": "Àrea per a fumadors", + "ckb": "ناوچەی جگەرەکێشان", + "cs": "Kuřárna", + "da": "Rygeområde", + "de": "Raucherbereich", + "el": "Χώρος Καπνιστών", + "en-GB": "Smoking Area", + "en": "Smoking Area", + "eo": "Fumejo", + "es": "Área de fumadores", + "et": "Suitsetamise koht", + "eu": "Erretzeko gune", + "fa": "منطقه سیگار کشیدن", + "fi": "Tupakointialue", + "fr": "Zone fumeur", + "gl": "Zona de fumadores", + "he": "אזור עישון", + "hu": "Dohányzásra kijelölt terület", + "is": "Reykingasvæði", + "it": "Area fumatori", + "ja": "喫煙所", + "ko": "흡연 구역", + "lt": "Rūkymo vieta", + "lv": "Smēķēšanas vieta", + "mk": "Пушилница", + "nl": "Rookgebied", + "no": "Røykeområde", + "pl": "Palarnia", + "pt-BR": "Área de fumantes", + "pt": "Área para fumadores", + "ru": "Место для курения", + "sk": "Fajčiarska zóna", + "sr": "Област за пушаче", + "sv": "Rökområde", + "tr": "Sigara İçme Alanı", + "uk": "Місце для куріння", + "vi": "Khu vực Hút thuốc", + "zh-CN": "吸烟区域", + "zh-HK": "吸煙區", + "zh-TW": "吸煙區" + } + }, + "amenity/social_centre": { + "title": { + "C": "Social Center", + "ar": "مركز اجتماعي", + "cs": "Sociální středisko", + "de": "Sozialzentrum", + "el": "Κοινωνικό Κέντρο", + "en-AU": "Social Centre", + "en": "Social Center", + "eo": "Centro de socio", + "es": "Centro social", + "et": "Sotsiaalkeskus", + "fa": "مرکز اجتماعی", + "fi": "Sosiaalikeskus", + "fr": "Centre social", + "gl": "Centro social", + "he": "מרכז חברתי", + "hu": "Szociális központ", + "it": "Centro attività sociali", + "ja": "社交センター", + "mk": "Друштвен дом", + "nl": "Buurthuis", + "pl": "Centrum społecznościowe", + "pt-BR": "Centro social", + "pt": "Centro social", + "sk": "Spoločenské centrum", + "sr": "Дружтвени центар", + "sv": "Medborgarhus", + "tr": "Sosyal Merkez", + "uk": "Громадський центр", + "vi": "Hội trường", + "zh-CN": "社区交流中心", + "zh-TW": "社交中心" + } + }, + "amenity/social_facility": { + "title": { + "C": "Social Facility", + "ar": "مرفق اجتماعي", + "ast": "Serviciu social", + "ca": "Equipament social", + "cs": "Zařízení sociálních služeb", + "da": "Sociale faciliteter", + "de": "Sozialeinrichtung", + "el": "Μονάδα Κοινωνικών Υπηρεσιών", + "en-GB": "Social Facility", + "en": "Social Facility", + "eo": "Socia servejo", + "es": "Instalación social", + "et": "Sotsiaalkeskus", + "eu": "Gizarte-instalazio", + "fa": "خدمات اجتماعی", + "fi": "Sosiaalipalvelu", + "fr": "Établissement de services sociaux", + "gl": "Axuda Social", + "he": "מתקן שירותי רווחה", + "hr": "Socijalna ustanova", + "hu": "Szociális létesítmény", + "id": "Fasilitas Sosial", + "is": "Félagsþjónusta", + "it": "Centro socio-assistenziale", + "ja": "福祉施設", + "ko": "사회 복지 시설", + "mk": "Социјална служба", + "nl": "Sociale Faciliteit", + "pl": "Placówka pomocy społecznej", + "pt-BR": "Unidade de assistência social", + "pt": "Serviços sociais", + "ro": "Facilitate Socială", + "ru": "Социальное учреждение", + "sk": "Sociálne zariadenie", + "sl": "Socialnovarstvena ustanova", + "sr": "Социјална установа", + "sv": "Social inrättning", + "tr": "Okul Tesisleri", + "uk": "Соціальний центр", + "vi": "Dịch vụ Xã hội", + "zh-CN": "社会服务设施", + "zh-HK": "社會服務設施", + "zh-TW": "社福機構" + } + }, + "amenity/studio": { + "title": { + "C": "Studio", + "am": "ስቱዲዮ", + "ar": "أستوديو", + "ast": "Estudiu", + "bs": "Studio", + "ca": "Estudi", + "ckb": "ستۆدیۆ", + "cs": "Studio", + "da": "Studie", + "de": "Ton-/Fernsehstudio", + "el": "Στούντιο", + "en-GB": "Studio", + "en": "Studio", + "eo": "Studio", + "es": "Estudio de grabación", + "et": "Stuudio", + "eu": "Estudio", + "fa": "استدیو", + "fi": "Studio", + "fr": "Studio", + "gl": "Estudio", + "he": "סטודיו", + "hr": "Studio", + "hu": "Stúdió", + "id": "Studio", + "is": "Upptökustúdíó", + "it": "Studio radiotelevisivo", + "ja": "スタジオ", + "ko": "스튜디오", + "lt": "Studija", + "lv": "Studija", + "mk": "Студио", + "ms": "Studio", + "nl": "Studio", + "no": "Studio", + "pl": "Studio", + "pt-BR": "Estúdio de rádio/TV ou de gravação", + "pt": "Estúdio", + "ro": "Studio", + "ru": "Студия", + "sk": "Štúdio", + "sl": "Studio", + "sr": "Студио", + "sv": "Studio", + "tr": "Stüdyo", + "uk": "Студія", + "vi": "Studio", + "zh-CN": "工作室", + "zh-HK": "工作室", + "zh-TW": "工作室" + } + }, + "amenity/taxi": { + "title": { + "C": "Taxi Stand", + "af": "Taxi staanplek", + "am": "ታክሲ", + "ar": "موقف تاكسي", + "ast": "Parada de taxis", + "bg": "Такси стоянка", + "bs": "Taxi stajalište", + "ca": "Parada de Taxi", + "cs": "Stanoviště taxi", + "da": "Taxiholdeplads", + "de": "Taxistand", + "el": "Πιάτσα Ταξί", + "en-GB": "Taxi Stand", + "en": "Taxi Stand", + "eo": "Taksistacio", + "es": "Parada de taxi", + "et": "Taksopeatus", + "eu": "Taxi postu", + "fa": "تاکسی", + "fi": "Taksitolppa", + "fr": "Station de taxi", + "gl": "Parada de taxi", + "he": "עמדת מוניות", + "hr": "Taksi stajalište", + "hu": "Taxiállomás", + "id": "Tempat Tunggu Taksi", + "is": "Leigubílastæði", + "it": "Posteggio Taxi", + "ja": "タクシー乗り場", + "kn": "‍ಕಾರು ನಿಲ್ಡಾಣ", + "ko": "택시 승차장", + "lt": "Taksi stendas", + "mk": "Такси-постојка", + "ms": "Tempat Menunggu Teksi", + "nl": "Taxistandplaats", + "no": "Taxiholdeplass", + "pl": "Postój taksówek", + "pt-BR": "Ponto de Táxi", + "pt": "Praça de táxis", + "ro": "Stand de Taxi", + "ru": "Стоянка такси", + "sk": "Stanovisko taxíkov", + "sl": "Postajališče za taksi", + "sr": "Такси стајалиште", + "sv": "Taxihållplats", + "tr": "Taksi Durağı", + "uk": "Стоянка таксі", + "vi": "Bến Tắc xi", + "yue": "的士站", + "zh-CN": "出租车停车处", + "zh-HK": "的士站", + "zh-TW": "計程車招呼站" + } + }, + "amenity/telephone": { + "title": { + "C": "Telephone", + "af": "Telefoon", + "am": "የህዝብ ስልክ", + "ar": "هاتف", + "ast": "Teléfonu", + "bg": "Телефон", + "bn": "টেলিফোন", + "bs": "Telefon", + "ca": "Telèfon", + "ckb": "تەلەفۆن", + "cs": "Telefon", + "da": "Telefon", + "de": "Telefon", + "el": "Τηλέφωνο", + "en-GB": "Telephone", + "en": "Telephone", + "eo": "Telefono", + "es": "Teléfono", + "et": "Taksofon", + "eu": "Telefono", + "fa": "تلفن عمومی", + "fi": "Yleinen puhelin", + "fr": "Téléphone", + "gl": "Teléfono", + "he": "טלפון", + "hr": "Telefon", + "hu": "Telefon", + "id": "Telepon", + "is": "Sími", + "it": "Telefono", + "ja": "公衆電話", + "kn": "ದುರವಾಣಿ", + "ko": "전화", + "lt": "Telefonas", + "lv": "Telefons", + "mk": "Телефон", + "ms": "Telefon", + "nl": "Telefoon", + "no": "Telefon", + "pl": "Telefon", + "pt-BR": "Telefone público", + "pt": "Telefone", + "ro": "Telefon", + "ru": "Телефон", + "sk": "Telefón", + "sl": "Telefon", + "sr": "Телефонска говорница", + "sv": "Telefon", + "ta": "தொலைபேசி", + "tr": "Telefon", + "uk": "Телефон", + "vi": "Điện thoại", + "yue": "電話", + "zh-CN": "电话", + "zh-HK": "電話", + "zh-TW": "公用電話", + "zh": "电话" + } + }, + "amenity/theatre": { + "title": { + "C": "Theater", + "af": "Teater", + "am": "ቲያትር ቤት", + "ar": "مسرح", + "ast": "Teatru", + "bg": "Театър", + "bn": "থিয়েটার", + "bs": "Pozorište", + "ca": "Teatre", + "ckb": "شانۆ", + "cs": "Divadlo", + "da": "Teater", + "de": "The­a­ter", + "el": "Θέατρο", + "en-GB": "Theatre", + "en": "Theater", + "eo": "Teatrejo", + "es": "Teatro", + "et": "Teater", + "eu": "Antzoki", + "fa": "تئاتر", + "fi": "Teatteri", + "fr": "Théâtre", + "gl": "Teatro", + "he": "תאטרון", + "hr": "Kazalište", + "hu": "Színház", + "id": "Teater", + "is": "Leikhús", + "it": "Teatro", + "ja": "劇場", + "kn": "ಚಿತ್ರಮಂದಿರ", + "ko": "극장", + "lt": "Teatras", + "lv": "Teātris", + "mk": "Театар", + "ms": "Teater", + "nl": "Theater", + "no": "Teater", + "pl": "Teatr", + "pt-BR": "Teatro", + "pt": "Teatro", + "ro": "Teatru", + "ru": "Театр", + "sk": "Divadlo", + "sl": "Gledališče", + "sr": "Позориште", + "sv": "Teater", + "ta": "திரையரங்கம்", + "tr": "Tiyatro", + "uk": "Театр", + "vi": "Nhà hát", + "yue": "舞臺戲院", + "zh-CN": "剧院", + "zh-HK": "劇院", + "zh-TW": "戲劇院", + "zh": "剧院" + } + }, + "amenity/toilets": { + "title": { + "C": "Toilets", + "af": "Toilette", + "am": "መፀዳጃ ቤት", + "ar": "دورات مياه", + "ast": "Aseos", + "bg": "Тоалетна", + "bn": "শৌচাগার", + "bs": "Toaleti", + "ca": "Lavabos", + "ckb": "ئاودەست", + "cs": "Toalety", + "da": "Toiletter", + "de": "Toilette", + "dv": "ފާޚާނާ", + "el": "Τουαλέτες", + "en-GB": "Toilets", + "en": "Toilets", + "eo": "Necesejo", + "es": "Baños", + "et": "Tualett", + "eu": "Komun", + "fa": "سرویس بهداشتی", + "fi": "WC", + "fr": "Toilettes publiques", + "gl": "Aseos", + "he": "בתי שימוש", + "hr": "Toalet", + "hu": "WC", + "id": "Toilet", + "is": "Salerni", + "it": "Bagni", + "ja": "トイレ", + "kn": "ಶೌಚಾಲಯ", + "ko": "화장실", + "lt": "Tualetas", + "lv": "Tualete", + "mk": "Тоалет", + "ms": "Tandas", + "nl": "Toiletten", + "no": "Toaletter", + "pl": "Toalety publiczne", + "pt-BR": "Banheiros públicos", + "pt": "Casas de banho", + "ro": "Toaletă", + "ru": "Туалет", + "sk": "Toalety", + "sl": "Stranišča", + "so": "Musqulo", + "sr": "Тоалети", + "sv": "Toaletter", + "ta": "கழிவறைகள்", + "te": "మరుగుదొడ్లు", + "tr": "Tuvalet", + "uk": "Туалет", + "vi": "Phòng Vệ sinh", + "yue": "廁所", + "zh-CN": "厕所", + "zh-HK": "廁所", + "zh-TW": "廁所", + "zh": "厕所" + } + }, + "amenity/townhall": { + "title": { + "C": "Town Hall", + "af": "Stadsaal", + "ar": "مبنى البلدية/المركز الإداري", + "ast": "Edificiu municipal", + "bg": "Кметство", + "bn": "টাউন হল", + "bs": "Gradska vijećnica", + "ca": "Ajuntament", + "cs": "Radnice", + "da": "Rådhus", + "de": "Rathaus", + "el": "Δημαρχείο", + "en-GB": "Town Hall", + "en": "Town Hall", + "eo": "Urbodomo", + "es": "Ayuntamiento / Municipalidad", + "et": "Linnahall", + "eu": "Udaletxe", + "fa": "شهرداری", + "fi": "Kunnantalo", + "fr": "Mairie, hôtel de ville", + "gl": "Casa do Concello", + "he": "בניין עירייה", + "hr": "Gradska vijećnica", + "hu": "Városháza", + "id": "Balai Kota", + "is": "Ráðhús", + "it": "Municipio", + "ja": "役場", + "ko": "마을 회관", + "lt": "Rotušė", + "lv": "Pilsētas dome", + "mk": "Градски дом", + "ms": "Dewan Perbandaran", + "nl": "Gemeentehuis", + "no": "Rådhus", + "pl": "Ratusz", + "pt-BR": "Paço municipal ou prefeitura", + "pt": "Câmara municipal / Junta de freguesia", + "ro": "Primărie", + "ru": "Администрация", + "sk": "Mestský úrad", + "sl": "Mestna hiša", + "sr": "Градска кућа", + "sv": "Kommunhus", + "ta": "நகராட்சிமன்றம்", + "tr": "Belediye Binası", + "uk": "Міська державна адміністрація", + "vi": "Tòa thị chính Thị xã", + "yue": "大會堂", + "zh-CN": "市政府", + "zh-HK": "大會堂", + "zh-TW": "鄉鎮市區公所", + "zh": "市政府" + } + }, + "amenity/toy_library": { + "title": { + "C": "Toy Library", + "cs": "půjčovna hraček", + "de": "Spielzeugbibliothek", + "el": "Βιβλιοθήκη Παιγνίων", + "en": "Toy Library", + "eo": "Ludil‑biblioteko", + "es": "Biblioteca de juguetes", + "fa": "قفسه اسباب‌بازی", + "fi": "Lelukirjasto", + "fr": "Ludothèque", + "gl": "Biblioteca de xoguetes", + "he": "ספריית צעצועים", + "hu": "Játékkölcsönző", + "it": "Ludoteca", + "ja": "おもちゃ資料館", + "mk": "Зајмување играчки", + "nl": "Spelotheek", + "no": "Lekebibliotek", + "pl": "Wypożyczalnia gier i zabawek", + "pt-BR": "Brinquedoteca ou ludoteca", + "pt": "Brinquedoteca", + "sk": "Knižnica hračiek", + "sv": "Leksaksbibliotek", + "tr": "Oyuncak Kütüphanesi", + "uk": "Прокат іграшок", + "vi": "Thư viện Đồ chơi", + "zh-CN": "玩具游乐/租赁店", + "zh-TW": "玩具圖書館" + } + }, + "amenity/university": { + "title": { + "C": "University Grounds", + "am": "ዩኒቨርሲቲ", + "ar": "أرض الجامعة", + "ast": "Campus universitariu", + "ca": "Campus universitari", + "cs": "Prostor vysoké školy", + "da": "Universitetsområde", + "de": "Universitätsgelände", + "el": "Χώρος Πανεπιστημίου", + "en-GB": "University Grounds", + "en": "University Grounds", + "eo": "Altgrada lernejo (ISCED 5-7)", + "es": "Terreno de universidad", + "et": "Ülikooliala", + "eu": "Unibertsitatearen eremua", + "fa": "محوطه دانشگاه", + "fi": "Yliopistokampus", + "fr": "Université, enseignement supérieur universitaire - institution ou campus (terrain)", + "gl": "Área universitaria", + "he": "מתחם אוניברסיטה", + "hr": "Sveučilišno zemljište", + "hu": "Egyetem területe", + "id": "Lingkungan Universitas", + "is": "Háskólalóð", + "it": "Area universitaria", + "ja": "大学(代表点または敷地)", + "ko": "대학 부지", + "lt": "Universiteto kiemas", + "mk": "Универзитетски двор", + "ms": "Kawasan Universiti", + "nl": "Campus van universiteit of hogeschool", + "no": "Universitetsområde", + "pl": "Teren uczelni", + "pt-BR": "Universidade ou faculdade", + "pt": "Universidade", + "ro": "Universitate", + "ru": "Университет / Институт", + "sk": "Univerzita", + "sl": "Univerzitetno območje", + "sr": "Универзитетски кампус", + "sv": "Universitetsområde", + "ta": "பல்கலைக்கழகத் திடல்", + "tr": "Üniversite Yerleşkesi", + "uk": "Територія університету", + "vi": "Sân trường Đại học", + "zh-CN": "大学", + "zh-HK": "大學範圍", + "zh-TW": "大學範圍" + } + }, + "amenity/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaning Station", + "ar": "محطة مكنسة سيارات", + "cs": "Vysavač", + "de": "Auto-Staubsauganlage", + "el": "Σταθμός Ηλεκτρικής Σκούπας", + "en": "Vacuum Cleaning Station", + "eo": "Polvosuĉilo", + "es": "Estación de limpieza con aspiradora", + "fa": "ایستگاه جاروبرقی", + "fr": "Station d'aspirateurs pour nettoyage automobile", + "he": "תחנת שאיבת אבק", + "hu": "Porszívó", + "it": "Stazione di Aspirapolvere per Interni", + "ja": "ゴミ吸取機", + "mk": "Постројка за правосмукање", + "nl": "Stofzuiger", + "pl": "Odkurzacz", + "pt-BR": "Estação de aspiração", + "pt": "Posto de aspiração", + "sk": "Stanica s vysávačom", + "sv": "Dammsugarstation", + "tr": "Elektrikli Süpürge İstasyonu", + "uk": "Стаціонарний пилотяг", + "vi": "Trạm Hút bụi", + "zh-CN": "真空清洁站", + "zh-TW": "吸塵器站" + } + }, + "amenity/vehicle_inspection": { + "title": { + "C": "Vehicle Inspection", + "ar": "الفحص الدوري", + "ca": "Inspecció de vehicles", + "cs": "Kontrola vozidel", + "de": "Fahrzeuginspektion", + "el": "Επιθεώρηση Οχήματος", + "en": "Vehicle Inspection", + "eo": "Aŭtomobil-kontrolejo", + "es": "Inspección vehicular", + "fa": "مرکز معاینه فنی خودرو", + "fi": "Katsastusasema", + "fr": "Centre de contrôle technique", + "gl": "Inspección de vehículo", + "he": "בדיקת כלי רכב", + "hr": "Tehnički pregled vozila", + "hu": "Műszaki vizsgáló állomás", + "is": "Skoðun farartækja", + "it": "Ispezione veicolo", + "ja": "車検場", + "ko": "차량 점검", + "mk": "Преглед на возила", + "nl": "Voertuigkeuring", + "pl": "Stacja kontroli pojazdów", + "pt-BR": "Inspeção veicular", + "pt": "Centro de inspeção de veículos", + "ru": "Станция техосмотра", + "sk": "Stanica technickej kontroly", + "sv": "Fordonsbesiktning", + "tr": "Araç denetleme", + "uk": "Техогляд траспортних засобів", + "vi": "Trạm Kiểm tra Xe", + "zh-CN": "车辆检查站", + "zh-TW": "車輛檢查" + } + }, + "amenity/vending_machine": { + "title": { + "C": "Vending Machine", + "ar": "ماكينة البيع الذاتي", + "ast": "Máquina de venta automática", + "bg": "Автомат за стоки", + "ca": "Màquina de vending", + "cs": "Prodejní automat", + "da": "Salgsautomat", + "de": "Verkaufsautomat", + "el": "Αυτόματος Πωλητής", + "en-GB": "Vending Machine", + "en": "Vending Machine", + "eo": "Vendilo", + "es": "Máquina expendedora", + "eu": "Makina saltzaile", + "fa": "دستگاه فروش خودکار", + "fi": "Myyntiautomaatti", + "fr": "Distributeur automatique", + "gl": "Máquina expendedora", + "he": "מכונת ממכר", + "hr": "Automat za prodaju", + "hu": "Árusító automata", + "is": "Sjálfsali", + "it": "Distributore automatico", + "ja": "自動販売機", + "ko": "자동판매기", + "lt": "Prekybos automatas", + "lv": "Tirdzniecības automāts", + "mk": "Продажен автомат", + "ms": "Mesin Layan Diri", + "nl": "Automaat", + "no": "Automat", + "pl": "Automat sprzedający", + "pt-BR": "Máquina de venda", + "pt": "Máquina de venda automática", + "ru": "Торговый автомат", + "sk": "Výdajný automat", + "sl": "Prodajni avtomat", + "sr": "Аутомат", + "sv": "Varuautomat", + "tr": "Otomatik Satış Makinası", + "uk": "Торговельний автомат", + "vi": "Máy Bán Hàng", + "zh-CN": "自动售货机", + "zh-HK": "售賣機", + "zh-TW": "自動販賣機" + } + }, + "amenity/veterinary": { + "title": { + "C": "Veterinary", + "am": "የእንስሳት መድሃኒት ቤት", + "ar": "عيادة بيطرية", + "ast": "Veterinariu", + "ca": "Veterinari", + "ckb": "ڤێتێرنەری", + "cs": "Veterina", + "da": "Dyrlæge", + "de": "Tierarztpraxis", + "el": "Κτηνιατρείο", + "en-GB": "Veterinary", + "en": "Veterinary", + "eo": "Bestokuracistejo", + "es": "Veterinario", + "et": "Loomaarst", + "eu": "Albaitari", + "fa": "دامپزشکی", + "fi": "Eläinlääkäri", + "fr": "Vétérinaire", + "gl": "Veterinario", + "he": "וטרינר", + "hr": "Veterinar", + "hu": "Állatorvos", + "id": "Dokter Hewan", + "is": "Dýralæknir", + "it": "Veterinario", + "ja": "獣医", + "kn": "ಪಶುವೈದ್ಯಕೀಯ", + "ko": "동물병원", + "lt": "Veterinarija", + "lv": "Veternārārsts", + "mk": "Ветеринар", + "ms": "Veterinar", + "nl": "Dierenarts", + "no": "Veterinær", + "pl": "Weterynarz", + "pt-BR": "Veterinário", + "pt": "Veterinário", + "ro": "Medic Veterinar", + "ru": "Ветеринар", + "sk": "Veterinár", + "sl": "Veterinar", + "sr": "Ветеринарница", + "sv": "Veterinär", + "tr": "Veteriner", + "uk": "Ветеринарна лікарня", + "vi": "Thú y", + "zh-CN": "动物医院", + "zh-HK": "獸醫", + "zh-TW": "獸醫院" + } + }, + "amenity/waste_basket": { + "title": { + "C": "Waste Basket", + "af": "Asblik", + "ar": "سلة مهملات", + "ast": "Papelera", + "bg": "Кош за боклук", + "bs": "Kanta za otpatke", + "ca": "Paperera", + "cs": "Odpadkový koš", + "da": "Skraldespand", + "de": "Mülleimer", + "el": "Καλάθι Απορριμμάτων", + "en-GB": "Rubbish Bin", + "en": "Waste Basket", + "eo": "Rubujo", + "es": "Papelera", + "et": "Prügikast", + "fa": "سطل زباله", + "fi": "Roskakori", + "fr": "Poubelle pour piétons", + "gl": "Papeleira", + "he": "סל אשפה", + "hr": "Kanta za smeće", + "hu": "Szemeteskosár", + "id": "Tong Sampah", + "is": "Ruslafata", + "it": "Cestino della spazzatura", + "ja": "ゴミ箱", + "ko": "쓰레기통", + "lt": "Šiukšliadėžė", + "lv": "Atkritumu grozs", + "mk": "Корпа за отпадоци", + "nl": "Vuilnisbak", + "no": "Søppel", + "pl": "Kosz na śmieci", + "pt-BR": "Lixeira", + "pt": "Caixote do lixo", + "ru": "Мусорная корзина", + "sk": "Odpadový kôš", + "sl": "Koš za odpadke", + "sr": "Корпа за отпатке", + "sv": "Soptunna (liten)", + "tr": "Çöp Kutusu", + "uk": "Бак для сміття", + "vi": "Thùng rác", + "yue": "垃圾桶", + "zh-CN": "垃圾桶", + "zh-HK": "垃圾桶", + "zh-TW": "垃圾筒", + "zh": "垃圾箱" + } + }, + "amenity/waste_disposal": { + "title": { + "C": "Garbage Dumpster", + "ar": "حاوية قمامة متحركة", + "ast": "Contenedor de basoria", + "ca": "Contenidor d'escombraries", + "cs": "Kontejner na směsný odpad", + "da": "Skraldespand", + "de": "Müllcontainer", + "el": "Κάδος απορριμμάτων", + "en-GB": "Garbage Dumpster", + "en": "Garbage Dumpster", + "eo": "Rubujego (miksita)", + "es": "Contenedor de residuos", + "et": "Prügikonteiner", + "fa": "زباله‌دان بزرگ", + "fi": "Jäteastia", + "fr": "Bac à déchets", + "gl": "Contedor de lixo", + "he": "פח אשפה", + "hr": "Kontejner za smeće", + "hu": "Szemeteskonténer", + "is": "Ruslagámur", + "it": "Cassonetto del pattume", + "ja": "ゴミ収集ボックス", + "ko": "쓰레기 수거함", + "lt": "Šiukšlių konteineris", + "lv": "Atkritumu konteiners", + "mk": "Контејнер", + "nl": "Kleine afvalcontainer", + "no": "Søppelkonteiner", + "pl": "Śmietnik", + "pt-BR": "Contêiner de lixo não reciclável", + "pt": "Contentor de lixo", + "ro": "Container de Gunoi", + "ru": "Мусорный бак", + "sk": "Odpadkový kontajner", + "sl": "Zabojnik za odpadke", + "sr": "Контејнер за смеће", + "sv": "Soptunna (hushålls- eller industrisopor)", + "tr": "Çöp Tenekesi", + "uk": "Контейнер для сміття", + "vi": "Thùng Rác Lớn", + "zh-CN": "大型垃圾箱", + "zh-HK": "大型垃圾箱", + "zh-TW": "垃圾場" + } + }, + "amenity/waste_transfer_station": { + "title": { + "C": "Waste Transfer Station", + "ar": "محطة نقل النفايات", + "ast": "Estación de tresferencia de basoria", + "ca": "Centre de tractament de residus", + "cs": "Překládací stanice odpadu", + "da": "Affaldsstation", + "de": "Müllumladestation", + "el": "Σταθμός Μεταφοράς Απορριμμάτων", + "en-GB": "Waste Transfer Station", + "en": "Waste Transfer Station", + "eo": "Stacio de rubmastrumado", + "es": "Estación de transferencia de residuos", + "fa": "ایستگاه انتقال زباله", + "fi": "Jätteiden putkikeräysasema", + "fr": "Installation de transit, regroupement ou tri de déchets", + "gl": "Estación de bombeo de augas residuais", + "he": "תחנת מעבר זבל", + "hu": "Hulladékátrakodó", + "is": "Sorpflokkunarstöð", + "it": "Centro Raccolta Rifiuti", + "ja": "ゴミ集積場", + "ko": "쓰레기 운반장", + "mk": "Претоварна отпадна станица", + "nl": "Afval-transfer-station", + "pl": "Stacja przeładunku odpadów", + "pt-BR": "Estação de transferência de resíduos", + "pt": "Estação de transferência de lixo", + "ru": "Канализационно-насосная станция", + "sk": "Stanica na prepravu odpadu", + "sl": "Zbirni center odpadkov", + "sr": "Станица за пренос отпада", + "sv": "Avfallscentral", + "tr": "Çöp Transfer İstasyonu", + "uk": "Сміттєперевантажувальна станція", + "vi": "Trạm Trung chuyển Chất thải", + "zh-CN": "垃圾中转站", + "zh-HK": "垃圾轉運站", + "zh-TW": "垃圾清運站" + } + }, + "amenity/water_point": { + "title": { + "C": "RV Drinking Water", + "ar": "مياه شرب لمقطورات السفر والتخييم", + "ast": "Agua potable pa caravanes", + "ca": "Aigua potable d'autocaravana", + "cs": "Pitná voda pro karavany", + "da": "Tankning af drikkevand", + "de": "Camping-Trinkwasser", + "el": "Πόσιμο Νερό Αυτοκινούμενου Τροχόσπιτου", + "en-GB": "RV Drinking Water", + "en": "RV Drinking Water", + "eo": "Trinkakvejo (kampado)", + "es": "Recarga de agua potable para autocaravanas", + "fa": "آب آشامیدنی", + "fi": "Asuntoauton vesipiste", + "fr": "Eau potable pour citerne de véhicule de loisirs", + "gl": "Auga potábel para autocaravanas", + "he": "מי שתייה לקרוואן", + "hr": "Pitka voda za kamp kućice", + "hu": "Ivóvíz-csatlakozás lakóautónak", + "is": "Drykkjarvatn fyrir bíla", + "it": "Acqua potabile per camper", + "ja": "キャンピングカー用の給水施設", + "ko": "RV 식수대", + "mk": "Пивка вода за трајлери", + "nl": "Waterpunt voor kampeerauto's", + "no": "Bobil Drikkevann", + "pl": "Woda pitna dla kamperów/łodzi", + "pt-BR": "Torneira de água potável", + "pt": "Água potável para autocaravanas", + "ru": "Питьевая вода для трейлера", + "sk": "Pitná voda pre karavany", + "sl": "Pitna voda za avtodome", + "sv": "Dricksvatten för campingfordon", + "tr": "İçme Suyu", + "uk": "Заправка питною водою", + "vi": "Vòi Nước uống dành cho Nhà lưu động", + "zh-CN": "直饮水", + "zh-HK": "露營車飲用水", + "zh-TW": "RV 飲用水" + } + }, + "amenity/watering_place": { + "title": { + "C": "Animal Watering Place", + "ar": "حوض تروية للحيوانات", + "ast": "Bebederu p'animales", + "ca": "Font d'aigua per animals", + "cs": "Napajedlo pro zvířata", + "da": "Dyrevandtrug", + "de": "Tränke", + "el": "Ποτίστρα Ζώων", + "en-GB": "Animal Watering Place", + "en": "Animal Watering Place", + "eo": "Akvotrinkejo por bestoj", + "es": "Abrevadero para animales", + "fa": "آبشخور حیوانات", + "fi": "Eläinten juomapaikka", + "fr": "Point d'eau pour animaux", + "gl": "Bebedoiro de animais", + "he": "מקור מים לחיות", + "hu": "Állatitató", + "is": "Brynning fyrir dýr", + "it": "Abbeveratoio", + "ja": "動物の水飲み場", + "ko": "동물 급수 장소", + "mk": "Поило за миленици", + "nl": "Drinkplaats voor dieren", + "no": "Dyrevanningssted", + "pl": "Poidło dla zwierząt", + "pt-BR": "Bebedouro para animais", + "pt": "Bebedouro para animais", + "ru": "Водопой для животных", + "sk": "Miesto na napájanie zvierat", + "sl": "Napajališče za živali", + "sr": "Појило", + "sv": "Dricksvatten för djur", + "tr": "Hayvan Yıkama Yeri", + "uk": "Водопій", + "vi": "Nước Uống dành cho Thú vật", + "zh-CN": "动物饮水地", + "zh-HK": "動物飲水處", + "zh-TW": "動物飲水區" + } + }, + "amenity/weighbridge": { + "title": { + "C": "Truck Scale", + "ar": "ميزان شاحانات", + "cs": "váha pro kamiony", + "da": "Brovægt", + "de": "Brückenwaage, LKW-Waage", + "en": "Truck Scale", + "eo": "Pesilo por aŭtomobiloj", + "es": "Báscula de camiones", + "fa": "باسکول کامیون", + "fi": "Rekkavaaka / rautatievaaka", + "fr": "pont bascule", + "gl": "Balanza de camións", + "he": "משקל משאיות", + "hu": "Hídmérleg", + "it": "Bilancia per camion", + "ja": "トラックスケール", + "ko": "트럭 저울", + "mk": "Мосна вага", + "nl": "Weegbrug", + "no": "Lastebilvekt", + "pl": "Waga dla pojazdów", + "pt-BR": "Balança de caminhão", + "pt": "Balança rodoviária", + "sk": "Váha pre nákladné vozidlá", + "sr": "Камионска вага", + "sv": "Lastbilsvåg", + "tr": "Kamyon Kantarı", + "uk": "Автомобільні ваги", + "vi": "Trạm Cân Xe tải", + "zh-CN": "汽车衡", + "zh-TW": "地磅" + } + }, + "leisure/adult_gaming_centre": { + "title": { + "C": "Adult Gaming Center", + "ast": "Centru de xuegos p'adultos", + "ca": "Centre d'oci adult", + "cs": "Herna (hrací automaty)", + "da": "Voksen spillecenter", + "de": "Spielothek für Erwachsene", + "el": "Κέντρο Παιχνιδιών Ενηλίκων", + "en-AU": "Adult Gaming Centre", + "en-GB": "Adult Gaming Centre", + "en": "Adult Gaming Center", + "eo": "Hazardludejo (enĵet-maŝinoj)", + "es": "Centro de juegos para adultos", + "fa": "مرکز بازی بزرگسالان", + "fi": "Uhkapelipelaamo", + "fr": "Jeux pour adultes", + "gl": "Centro recreativo para adultos", + "he": "מרכז בידור למבוגרים", + "hu": "Játékterem (csak felnőtteknek)", + "id": "Pusat permainan dewasa", + "is": "Fjárhættuspilasalur", + "it": "Sala da gioco", + "ja": "遊技場(成人向け)", + "ko": "성인용 게임방", + "lt": "Suaugusiųjų lošimų vieta", + "mk": "Игротека за возрасни", + "nl": "Speelzaal (met kansspelmachines)", + "no": "Spillekasino", + "pl": "Salon gier hazardowych", + "pt-BR": "Centro de Jogos para Adultos", + "pt": "Centro de jogos para adultos", + "ru": "Игровые автоматы (азартные, на деньги)", + "sk": "Výherné automaty", + "sl": "Igralnica za odrasle", + "sv": "Center för vuxenspel", + "tr": "Yetişkin Oyun Merkezi", + "uk": "Гральні автомати", + "vi": "Trung tâm Đánh bạc", + "zh-CN": "成人街机厅", + "zh-HK": "成人遊戲中心", + "zh-TW": "成人遊戲中心" + } + }, + "leisure/amusement_arcade": { + "title": { + "C": "Amusement Arcade", + "cs": "Herna", + "da": "Spillehal", + "de": "Spielhalle für Unterhaltungsspiele", + "el": "Αίθουσα Ψυχαγωγίας", + "en-GB": "Amusement Arcade", + "en": "Amusement Arcade", + "eo": "Salono de ludoj", + "es": "Sala recreativa de videojuegos", + "et": "Videomängumasin", + "fa": "بازی تفریحی / سالن سرگرمی", + "fi": "Pelihalli", + "fr": "Salle de jeux", + "gl": "Sala de xogos recreativos", + "he": "משחקי ארקייד", + "hu": "Játékterem (kiskorúaknak is)", + "is": "Spilasalur", + "it": "Sala giochi", + "ja": "ゲームセンター", + "ko": "오락실", + "mk": "Забавна аркада", + "nl": "Speelhal", + "pl": "Salon gier", + "pt-BR": "Fliperama", + "pt": "Salão de jogos", + "ru": "Игровые автоматы", + "sv": "Arkadhall", + "tr": "Oyun Salonu", + "uk": "Ігрові автомати", + "vi": "Khu Trò chơi Điện tử", + "zh-CN": "游戏厅/电玩城", + "zh-TW": "遊樂場" + } + }, + "leisure/bandstand": { + "title": { + "C": "Bandstand", + "cs": "Kryté pódium", + "da": "Orkesterpavillon", + "de": "Musikpavillon", + "el": "Εξέδρα Συναυλιών", + "en": "Bandstand", + "eo": "Orkestrejeto", + "es": "Quiosco de música", + "fa": "محل دسته موسیقی (در پارک یا فضای باز)", + "fi": "Pieni esiintymislava", + "fr": "Kiosque à musique", + "gl": "Palco de música", + "he": "בימת תזמורת", + "hu": "Zenepavilon", + "is": "Hljómsveitapallur", + "it": "Chiosco della musica", + "ja": "野外音楽堂", + "ko": "연주 무대", + "mk": "Оркестарска естрада", + "nl": "Podium", + "pl": "Muszla koncertowa / estrada", + "pt-BR": "Coreto", + "pt": "Coreto", + "ru": "Площадка для музыкантов", + "sk": "Hudobný pavilón", + "sv": "Musikestrad", + "tr": "Bando standı", + "uk": "Естрада", + "vi": "Bục Dàn nhạc", + "zh-CN": "小型演奏台", + "zh-TW": "演奏臺" + } + }, + "leisure/beach_resort": { + "title": { + "C": "Beach Resort", + "ar": "منتجع الشاطئ", + "cs": "spravovaná pláž", + "da": "Strandresort", + "de": "Strandresort", + "el": "Παραθαλάσσιο Θέρετρο", + "en-GB": "Beach Resort", + "en": "Beach Resort", + "eo": "Sablobordo administrata (kun oportunaĵoj)", + "es": "Balneario", + "et": "Rannakuurort", + "fa": "تفرجگاه ساحلی", + "fi": "Rantalomakohde", + "fr": "Station balnéaire", + "gl": "Estancia de praia", + "he": "אתר נופש על החוף", + "hr": "Kupalište", + "hu": "Fürdőhely, vízparti strand", + "is": "Strandbær", + "it": "Stabilimento balneare", + "ja": "ビーチリゾート", + "ko": "해변 리조트", + "mk": "Плажно летувалиште", + "nl": "Strandoord", + "no": "Strandhotell", + "pl": "Ośrodek plażowy", + "pt-BR": "Resort em Praia", + "pt": "Estância balnear", + "ru": "Пляжный курорт", + "sk": "Plážový rezort", + "sv": "Strandresort", + "tr": "Sahil Tatil Yeri", + "uk": "Пляжний курорт", + "vi": "Bãi biển Nghỉ dưỡng", + "zh-CN": "海滩度假区", + "zh-TW": "海灘渡假村" + } + }, + "leisure/bird_hide": { + "title": { + "C": "Bird Hide", + "ar": "مكان لمراقبة الطيور", + "ast": "Observatoriu d'aves", + "ca": "Observatori d'ocells", + "cs": "Pozorovatelna zvěře", + "da": "Fugletårn", + "de": "Vogelbeobachtungsstation", + "el": "Κρυψώνα Κυνηγών Πτηνών", + "en-GB": "Bird Hide", + "en": "Bird Hide", + "eo": "Bird-observejo", + "es": "Observatorio de aves", + "fa": "مکان تماشای پرندگان", + "fi": "Lintutorni", + "fr": "Observatoire ornithologique", + "gl": "Observatorio de aves", + "he": "מסתור צפרות", + "hu": "Madárles", + "is": "Fuglaskoðunarskýli", + "it": "Osservazione uccelli", + "ja": "野鳥観察舎", + "ko": "탐조대", + "mk": "Птицонабљудувачница", + "nl": "Vogelkijkscherm of -hut", + "pl": "Czatownia ornitologiczna", + "pt-BR": "Local de observação de pássaros", + "pt": "Posto de observação de aves", + "ru": "Пункт наблюдения за птицами", + "sk": "Pozorovateľňa vtáctva", + "sl": "Opazovalnica", + "sv": "Torn/gömsle för fågelskådning", + "tr": "Vahşi Yaşam Gözetleme Kulesi", + "uk": "Пункт спостереження", + "vi": "Căn nhà Quan sát Chim", + "zh-CN": "观鸟点", + "zh-HK": "觀鳥屋", + "zh-TW": "鳥類棲息處" + } + }, + "leisure/bleachers": { + "title": { + "C": "Bleachers", + "cs": "nekryté tribuny", + "da": "Lægtepladser", + "de": "Nicht überdachte Tribüne", + "el": "Εξέδρα Χωρίς Σκεπή", + "en": "Bleachers", + "eo": "Spektejo", + "es": "Gradas", + "fa": "نیمکت مسابقات ورزشی", + "fi": "Katsomo", + "fr": "Gradins", + "gl": "Bancadas", + "he": "טריבונות", + "hu": "Lelátó", + "it": "Gradinate", + "ja": "観覧席", + "ko": "관중석", + "mk": "Гледалиште на отворено", + "nl": "Niet-overdekte tribune", + "no": "Tribune", + "pl": "Trybuna (odkryta)", + "pt-BR": "Arquibancada simples", + "pt": "Bancadas", + "ru": "Трибуны", + "sk": "Tribúny", + "sv": "Läktare", + "tr": "Açık Tribün", + "uk": "Трибуни", + "vi": "Khán đài Ngoài trời", + "zh-CN": "看台", + "zh-TW": "看台" + } + }, + "leisure/bowling_alley": { + "title": { + "C": "Bowling Alley", + "ar": "بولينغ", + "ast": "Bolera americana", + "ca": "Bolera", + "cs": "Bowlingová dráha", + "da": "Bowlingbaner", + "de": "Bowlingbahn", + "el": "Διάδρομος Bowling", + "en-GB": "Bowling Alley", + "en": "Bowling Alley", + "eo": "Kegloludejo", + "es": "Pista de bolos", + "et": "Boolingusaal", + "fa": "سالن بولینگ", + "fi": "Keilahalli", + "fr": "Bowling", + "gl": "Birlos", + "he": "אולם כדורת", + "hr": "Kuglalište", + "hu": "Bowlingpálya", + "id": "Tempat Boling", + "is": "Keiluhöll", + "it": "Sala da Bowling", + "ja": "ボウリング場", + "ko": "볼링장", + "lv": "Boulinga Zāle", + "mk": "Кугларница", + "nl": "Bowlingbaan", + "no": "Bowlingsenter", + "pl": "Kręgielnia", + "pt-BR": "Pista de boliche", + "pt": "Pista de bólingue", + "ro": "Alee de Bowling", + "ru": "Боулинг центр", + "sk": "Bowlingová hala", + "sl": "Kegljišče", + "sv": "Bowlinghall", + "tr": "Bowling Salonu", + "uk": "Боулінг", + "vi": "Khu Bowling", + "zh-CN": "保龄球馆", + "zh-HK": "保齡球場", + "zh-TW": "保齡球館" + } + }, + "leisure/common": { + "title": { + "C": "Common", + "ar": "أرض مشترك", + "ast": "Terrén comunitariu", + "bs": "Uobičajeno", + "ca": "Àrea comuna", + "cs": "Volně přístupný prostor", + "da": "Fælled", + "de": "Öffentliche Fläche, Allmende", + "el": "Κοινό", + "en-GB": "Common", + "en": "Common", + "eo": "Publika ripoza tereno", + "es": "Tierras comunes -Reino Unido-", + "fa": "زمین عمومی (معمولا در انگلستان)", + "fi": "Yleinen", + "fr": "Terrain communal", + "gl": "Terreo comunal", + "he": "אזור משותף", + "hr": "Zelena površina po kojoj se može hodati - u UK", + "hu": "Szabadidős tevékenységre használható közös terület (Nagy-Britannia)", + "id": "Perintah", + "is": "Almenningur", + "it": "Luogo pubblico", + "ja": "共有地", + "ko": "일반", + "lt": "Bendros ganyklos", + "mk": "Јавно зеленило", + "nl": "Gemene weide", + "no": "Fellesområde", + "pl": "Teren rekreacyjny ogólnodostępny", + "pt-BR": "Área Comunitária", + "pt": "Terrenos comunitários", + "ro": "Comun", + "ru": "Общественные места для прогулок, без специфики", + "sk": "Verejné priestranstvo", + "sl": "Javni prostor", + "sr": "Јавно добро", + "sv": "Allmänning", + "ta": "பொதுவான", + "tr": "Piknik Alanı", + "uk": "Громада", + "vi": "Đất công", + "yue": "公地", + "zh-CN": "公共用地", + "zh-HK": "公共用地", + "zh-TW": "公共用地" + } + }, + "leisure/dance": { + "title": { + "C": "Dance School", + "ar": "قاعة الرقص", + "ast": "Salón de baille", + "ca": "Pista de ball", + "ckb": "هۆڵی سەماکردن", + "cs": "Tančírna", + "da": "Dansehal", + "de": "Tanzsaal", + "el": "Αίθουσα Xορού", + "en-GB": "Dance Hall", + "en": "Dance Hall", + "eo": "Dancejo", + "es": "Salón de baile", + "et": "Tantsusaal", + "fa": "سالن رقص", + "fi": "Tanssipaikka", + "fr": "Salle de danse", + "gl": "Sala de baile", + "he": "היכל ריקודים", + "hu": "Táncterem", + "is": "Danssalur", + "it": "Sala da ballo", + "ja": "ダンスホール", + "ko": "댄스 홀", + "lt": "Šokių salė", + "lv": "Deju zāle", + "mk": "Сала за игранки", + "nl": "Danszaal", + "pl": "Sala taneczna", + "pt-BR": "Danceteria", + "pt": "Salão de dança", + "ro": "Sală de Dans", + "ru": "Танцевальный зал", + "sk": "Tanečná hala", + "sl": "Plesna dvorana", + "sr": "Плесна сала", + "sv": "Dansbana", + "tr": "Dans Salonu", + "uk": "Зала для танців", + "vi": "Phòng Khiêu vũ", + "zh-CN": "舞厅", + "zh-HK": "舞廳", + "zh-TW": "舞廳" + } + }, + "dance:teaching/yes": { + "title": { + "C": "Dance School" + } + }, + "leisure/disc_golf_course": { + "title": { + "C": "Disc Golf Course", + "ar": "مكان للعب قرص الجولف", + "cs": "hřiště pro disc golf", + "de": "Discgolfanlage", + "en": "Disc Golf Course", + "eo": "Ludkampo por golfdisko", + "es": "Golf de disco", + "fa": "زمین گلف دیسک", + "fi": "Frisbeegolfkenttä", + "fr": "Parcours de disc golf", + "gl": "Golf de disco", + "he": "מגרש דיסק גולף", + "it": "Campo da golf del disco", + "ja": "ディスクゴルフコース", + "ko": "디스크 골프 코스", + "mk": "Терен за дикс-голф", + "nl": "Frisbeegolfparcours", + "no": "Disc Golf Bane", + "pl": "Pole do gry w disc golfa", + "pt-BR": "Percurso de golfe de disco", + "pt": "Campo de golfe de disco", + "sk": "Ihrisko na frisbee golf", + "sv": "Frisbeegolfbana", + "tr": "Disk Golf Sahası", + "uk": "Диско-гольф", + "zh-CN": "飞盘高尔夫场", + "zh-TW": "飛盤高爾夫球場" + } + }, + "leisure/dog_park": { + "title": { + "C": "Dog Park", + "af": "Hondepark", + "ar": "حديقة كلاب", + "ast": "Parque pa perros", + "bs": "Igralište za pse", + "ca": "Parc Caní", + "cs": "Psí park", + "da": "Hundepark", + "de": "Hundepark", + "el": "Πάρκο Σκύλων", + "en-GB": "Dog Park", + "en": "Dog Park", + "eo": "Hund-parko", + "es": "Parque canino", + "et": "Koerapark", + "fa": "پارک سگ", + "fi": "Koirapuisto", + "fr": "Parc canin", + "gl": "Parque para cans", + "he": "פארק כלבים", + "hr": "Park za pse", + "hu": "Kutyafuttató", + "id": "Taman Anjing", + "is": "Hundagarður", + "it": "Area per cani", + "ja": "ドッグパーク", + "ko": "개 공원", + "lt": "Šunų parkas", + "lv": "Suņu parks", + "mk": "Кучешки парк", + "nl": "Hondenpark", + "no": "Hundepark", + "pl": "Wybieg dla psów", + "pt-BR": "Cachorródromo", + "pt": "Parque para cães", + "ro": "Parc de Câini", + "ru": "Площадка для выгула собак", + "sk": "Psí park", + "sl": "Pasji park", + "sr": "Парк за псе", + "sv": "Hundpark", + "tr": "Köpek Parkı", + "uk": "Парк для собак", + "vi": "Công viên dành cho Chó", + "yue": "狗公園", + "zh-CN": "狗公园", + "zh-HK": "狗公園", + "zh-TW": "狗公園" + } + }, + "leisure/escape_game": { + "title": { + "C": "Escape Room", + "ar": "غرفة الهروب", + "cs": "úniková hra", + "de": "Escape Room", + "el": "Δωμάτιο Απόδρασης", + "en-GB": "Escape Room", + "en": "Escape Room", + "eo": "Ĉambro de enigmoj", + "es": "Sala de escape", + "fa": "اتاق فرار", + "fi": "Pakopeli", + "fr": "Escape game", + "gl": "Escape room", + "he": "חדר בריחה", + "hu": "Szabadulószoba", + "it": "Escape Room", + "ja": "脱出ゲーム場", + "ko": "방탈출", + "mk": "Соба за бегство", + "nl": "Escaperoom", + "pl": "Escape room", + "pt-BR": "Sala de fuga", + "pt": "Sala de fuga", + "ru": "Квест комната", + "sk": "Escape Room", + "sv": "Escape Room", + "tr": "Kaçış Odası", + "uk": "Квест-кімната", + "vi": "Trò chơi Thoát khỏi Phòng", + "zh-CN": "密室逃脱", + "zh-TW": "密室逃脫" + } + }, + "leisure/firepit": { + "title": { + "C": "Fire Pit", + "ar": "حفرة لإشعال نار", + "cs": "ohniště", + "da": "Bålsted", + "de": "Feuerstelle", + "el": "Πυρκαγιά", + "en-GB": "Fire Pit", + "en": "Fire Pit", + "eo": "Lignofajrejo", + "es": "Lugar para fogatas", + "fa": "گودال آتش", + "fi": "Tulentekopaikka", + "fr": "Emplacement pour feu", + "gl": "Fogueira", + "he": "שוחה למדורה", + "hu": "Tűzrakóhely", + "it": "Focolare", + "ja": "焚き火場", + "ko": "불구덩이", + "mk": "Огниште", + "nl": "Vuurplaats", + "pl": "Miejsce na ognisko", + "pt-BR": "Fogueira", + "pt": "Espaço para fogueira", + "ru": "Кострище", + "sk": "Ohnisko", + "sv": "Eldstad", + "tr": "Ateş Çukuru", + "uk": "Вогнище", + "zh-CN": "火坑", + "zh-TW": "篝火" + } + }, + "leisure/fishing": { + "title": { + "C": "Fishing Spot", + "ar": "منطقة صيد سمك", + "cs": "Místo pro rybolov", + "de": "Angelplatz", + "el": "Χώρος Αλιείας", + "en-GB": "Fishing Spot", + "en": "Fishing Spot", + "eo": "Loko por fiŝhokado", + "es": "Lugar de pesca", + "fa": "محل ماهیگیری", + "fi": "Kalastuspaikka", + "fr": "Lieu de pêche", + "gl": "Couto de pesca", + "he": "נקודת דיג", + "hr": "Mjesto za pecanje", + "hu": "Horgászhely", + "is": "Veiðistaður", + "it": "Punto per la pesca", + "ja": "釣りスポット", + "ko": "낚시터", + "mk": "Место за риболов", + "nl": "Visstek", + "no": "Fiske Plass", + "pl": "Łowisko", + "pt-BR": "Ponto de pesca", + "pt": "Local de pesca", + "ru": "Место для рыбалки", + "sk": "Rybárske miesto", + "sr": "Место за риболов", + "sv": "Fiskeplats", + "tr": "Balık Tutma Yeri", + "uk": "Місце для риболовлі", + "vi": "Chỗ Câu cá", + "zh-CN": "钓鱼地点", + "zh-TW": "釣魚點" + } + }, + "leisure/fitness_centre": { + "title": { + "C": "Gym / Fitness Center", + "ar": "مركز لياقة بدنية", + "ast": "Ximnasiu / Centru de fitness", + "ca": "Gimnàs / Centre de Fitness", + "cs": "Tělocvična / Fitness centrum", + "da": "Gym / Fitnesscenter", + "de": "Fitness-Studio", + "el": "Γυμναστήριο", + "en-AU": "Gym / Fitness Centre", + "en-GB": "Gym / Fitness Centre", + "en": "Gym / Fitness Center", + "eo": "Ripoz-gimnastika centro", + "es": "Gimnasio / Centro de fitness", + "fa": "باشگاه تناسب اندام", + "fi": "Kuntosali / fitness-keskus", + "fr": "Centre de fitness / gym", + "gl": "Ximnasio", + "he": "מכון כושר", + "hr": "Zatvoreni prostor za vježbanje", + "hu": "Edzőterem / Fitneszklub", + "is": "Líkamsræktarmiðstöð", + "it": "Palestra / Centro Fitness", + "ja": "ジム/フィットネスセンター", + "ko": "체육관 / 피트니스 센터", + "lv": "Sportazāle / Fitnesa centrs", + "mk": "Вежбалница", + "nl": "Fitnesscentrum", + "no": "Treningssenter", + "pl": "Siłownia / klub fitness", + "pt-BR": "Academia", + "pt": "Ginásio", + "ro": "Centru Fitness", + "ru": "Спортзал, фитнес-центр", + "sk": "Posilňovňa", + "sl": "Telovadnica / Fitness", + "sr": "Теретана / Фитнес центар", + "sv": "Gym / Fitnesscenter", + "tr": "Spor Salonu", + "uk": "Зал/Фітнес центр", + "vi": "Trung tâm Thể dục", + "zh-CN": "健身房/健身中心", + "zh-HK": "體育館 / 健體中心", + "zh-TW": "健身房/健身中心" + } + }, + "leisure/fitness_station": { + "title": { + "C": "Outdoor Fitness Station", + "ar": "مكان اللياقة البدنية خارج المباني", + "ast": "Centru de fitness albentestate", + "ca": "Instal·lació exterior de Fitness", + "cs": "Venkovní tělocvična", + "da": "Udendørs fitnessplads", + "de": "Freiluft-Fitness-Station", + "el": "Υπαίθριο Γυμναστήριο", + "en-GB": "Outdoor Fitness Station", + "en": "Outdoor Fitness Station", + "eo": "Ekzerc-parko (eksterdoma)", + "es": "Estación de gimnasia al aire libre", + "fa": "ایستگاه ورزشی در فضای باز", + "fi": "Ulkokuntoilulaitteet", + "fr": "Parcours de santé", + "gl": "Estación de ximnasia ao aire libre", + "he": "תחנת כושר", + "hr": "Vanjski prostor za vježbanje", + "hu": "Fitneszpark", + "is": "Líkamsþjálfunarstöð utandyra", + "it": "Palestra a cielo aperto", + "ja": "屋外トレーニング場", + "ko": "야외 신체단련소", + "lv": "Brīvdabas fitnesa vieta", + "mk": "Вежбалница на отворено", + "nl": "Buitenshuis fitness-station", + "pl": "Siłownia zewnętrzna", + "pt-BR": "Equipamento de exercícios ao ar Livre", + "pt": "Ginásio ao ar livre", + "ro": "Stație de Fitness în Aer Liber", + "ru": "Площадка для фитнеса", + "sl": "Telovadna orodja na prostem", + "sv": "Utomhusgym", + "tr": "Açıkhava Spor Yeri", + "uk": "Тренажери на вулиці", + "vi": "Trạm Thể dục", + "zh-CN": "户外健身站", + "zh-HK": "戶外健體站", + "zh-TW": "戶外健身站" + } + }, + "leisure/garden": { + "title": { + "C": "Garden", + "af": "Tuin", + "am": "መናፈሻ", + "ar": "حديقة", + "ast": "Xardín", + "bg": "Градина", + "bn": "বাগান", + "bs": "Vrt", + "ca": "Jardí", + "ckb": "باخچە", + "cs": "Zahrada", + "da": "Have", + "de": "Garten", + "el": "Κήπος", + "en-GB": "Garden", + "en": "Garden", + "eo": "Ĝardeno", + "es": "Jardín", + "et": "Aed", + "fa": "باغ", + "fi": "Puutarha", + "fr": "Jardin", + "gl": "Xardín", + "he": "גן", + "hr": "Vrt", + "hu": "Kert", + "id": "Kebun", + "is": "Garður", + "it": "Giardino", + "ja": "庭園", + "kn": "ಕೈತೋಟ", + "ko": "정원", + "lt": "Sodas", + "lv": "Dārzs", + "mk": "Градина", + "nl": "Tuin", + "no": "Hage", + "pl": "Ogród", + "pt-BR": "Jardim / Horta", + "pt": "Jardim", + "ro": "Grădină", + "ru": "Сад", + "sk": "Záhrada", + "sl": "Vrt", + "sr": "Башта", + "sv": "Trädgård", + "ta": "தோட்டம்", + "te": "తోట", + "tr": "Bahçe", + "uk": "Сад", + "vi": "Vườn", + "yue": "花園", + "zh-CN": "花园", + "zh-HK": "花園", + "zh-TW": "花園", + "zh": "花园" + } + }, + "leisure/golf_course": { + "title": { + "C": "Golf Course", + "af": "Golfbaan", + "am": "የጎልፍ መጫወቻ", + "ar": "معلب جولف", + "ast": "Campu de golf", + "bg": "Голф игрище", + "bn": "গল্ফ মাঠ", + "bs": "Golf teren", + "ca": "Camp de golf", + "cs": "Golfové hřiště", + "da": "Golfbane", + "de": "Golfplatz", + "el": "Γήπεδο Γκολφ", + "en-GB": "Golf Course", + "en": "Golf Course", + "eo": "Golfludejo", + "es": "Campo de golf", + "et": "Golfiväljak", + "fa": "زمین گلف", + "fi": "Golfkenttä", + "fr": "Parcours de golf", + "gl": "Campo de golf", + "he": "מגרש גולף", + "hr": "Igralište za golf", + "hu": "Golfpálya", + "id": "Lapangan Golf", + "is": "Golfvöllur", + "it": "Campo da Golf", + "ja": "ゴルフコース", + "ko": "골프장", + "lt": "Golfo aikštynas", + "lv": "Golfa laukums", + "mk": "Терен за голф", + "nl": "Golfbaan", + "no": "Golfbane", + "pl": "Pole golfowe", + "pt-BR": "Campo de Golfe", + "pt": "Campo de golfe", + "ro": "Curs de Golf", + "ru": "Площадка для гольфа", + "sk": "Golfové ihrisko", + "sl": "Golfišče", + "sr": "Голф терен", + "sv": "Golfbana", + "ta": "கோல்ஃப் கோர்ஸ்", + "tr": "Golf Sahası", + "uk": "Поле для гольфу", + "vi": "Sân Golf", + "yue": "哥夫球場", + "zh-CN": "高尔夫球场", + "zh-HK": "高爾夫球場", + "zh-TW": "高爾夫球場", + "zh": "高尔夫球场" + } + }, + "leisure/hackerspace": { + "title": { + "C": "Hackerspace", + "ar": "معمل هاكر", + "cs": "hackerspace", + "da": "Hackerspace", + "de": "Hackerspace", + "el": "Χώρος Συζήτησης Εργασιών", + "en-GB": "Hackerspace", + "en": "Hackerspace", + "eo": "Kodumulejo (hackerspace)", + "es": "Hacklab", + "fa": "هکراسپیس", + "fi": "Hacklab", + "fr": "Hackerspace", + "he": "משרד היי טק משותף", + "hu": "Hackerspace", + "is": "Hakkaraathvarf", + "it": "Spazio hacker", + "ja": "ハッカースペース", + "ko": "해커스페이스", + "mk": "Хакерски простор", + "nl": "Hackerspace", + "no": "Hackerspace", + "pl": "Hackerspace", + "pt-BR": "Hackerspace", + "pt": "Espaço de hackers", + "ru": "Хакерспейс", + "sk": "Hackerspace", + "sv": "Hackerspace", + "tr": "Bilgisayar Korsanı Alanı", + "uk": "Хакерспейс", + "vi": "Không gian Hacker", + "zh-CN": "创客空间", + "zh-TW": "駭客空間" + } + }, + "leisure/horse_riding": { + "title": { + "C": "Horseback Riding Facility", + "ar": "منشأة ركوب خيل", + "ast": "Instalación pa equitación", + "cs": "Jezdecký areál", + "da": "Ridningsfaciliteter", + "de": "Reitanlage", + "el": "Χώροι Ιπποστασίου", + "en-GB": "Horse Riding Facility", + "en": "Horseback Riding Facility", + "eo": "Ĉeval-rajdadejo", + "es": "Centro ecuestre", + "et": "Ratsakeskus", + "fa": "باشگاه اسب سواری", + "fi": "Ratsastusalue", + "fr": "Centre équestre", + "gl": "Centro de equitación", + "he": "מתקן רכיבה על סוסים", + "hu": "Lovasiskola", + "is": "Aðstaða fyrir reiðmennsku", + "it": "Centro equestre", + "ja": "乗馬施設", + "ko": "승마 시설", + "lv": "Zirgu jāšanas vieta", + "mk": "Јавачница за коњи", + "nl": "Manege", + "no": "Ridesenter", + "pl": "Ośrodek jeździecki", + "pt-BR": "Centro de Hipismo", + "pt": "Centro equestre", + "ro": "Facilitate de Călărie", + "ru": "Площадка для верховой езды", + "sk": "Zariadenie jazdy na koni", + "sl": "Jahalni klub", + "sv": "Ridskola", + "tr": "At Binicilik Spor Kulübü", + "uk": "Верхова їзда", + "vi": "Khu Cưỡi ngựa", + "zh-CN": "骑马场", + "zh-HK": "騎馬設施", + "zh-TW": "騎馬場" + } + }, + "leisure/ice_rink": { + "title": { + "C": "Ice Rink", + "ar": "حلبة تزلج", + "ast": "Pista de xelu", + "ca": "Pista de gel", + "cs": "Kluziště", + "da": "Skøjtebane", + "de": "Eislaufbahn", + "el": "Παγοδρόμιο", + "en-GB": "Ice Rink", + "en": "Ice Rink", + "eo": "Glitkurejo", + "es": "Pista de hielo", + "et": "Uisuväljak", + "fa": "بازی روی یخ", + "fi": "Luistelukenttä", + "fr": "Patinoire", + "gl": "Pista de xeo", + "he": "החלקרח", + "hr": "Klizalište", + "hu": "Jégpálya", + "id": "Arena Seluncur Es", + "is": "Skautasvell", + "it": "Pista di Ghiaccio", + "ja": "アイススケート場", + "ko": "아이스 링크", + "lt": "Čiuožykla", + "lv": "Ledus halle", + "mk": "Лизгалиште", + "nl": "Schaatsbaan", + "no": "Skøytebane", + "pl": "Lodowisko", + "pt-BR": "Pista de Patinação no Gelo", + "pt": "Rinque de gelo", + "ru": "Каток", + "sk": "Klzisko", + "sl": "Drsališče", + "sr": "Клизалиште", + "sv": "Skridskobana", + "tr": "Buz Pateni", + "uk": "Каток", + "vi": "Sân Băng", + "zh-CN": "滑冰场", + "zh-HK": "溜冰場", + "zh-TW": "溜冰場" + } + }, + "leisure/indoor_play": { + "title": { + "C": "Indoor Play Center", + "de": "Indoor-Spielbereich", + "en": "Indoor Play Center", + "eo": "Enkonstruaĵa infana ludejo (kun prizorgo)", + "es": "Centro de juegos de interior", + "fa": "مرکز بازی‌های داخل سالن", + "it": "Parco giochi interno", + "ja": "屋内キッズスペース", + "mk": "Игротека на покриено", + "nl": "Binnenspeeltuin", + "pl": "Sala zabaw", + "pt-BR": "Centro de jogos coberto", + "sk": "Indoor herňa", + "sv": "Inomhuslekland", + "uk": "Ігровий центр", + "vi": "Khu Vui chơi Trong nhà", + "zh-CN": "室内游乐中心", + "zh-TW": "室內遊樂中心" + } + }, + "leisure/marina": { + "title": { + "C": "Marina", + "af": "Vasmeerplek", + "ar": "مرسى لليخوت والقوارب الصغيرة", + "ast": "Puertu deportivu", + "bg": "Яхт клуб", + "bs": "Marina", + "ca": "Port esportiu", + "cs": "Přístaviště", + "da": "Lystbådehavn", + "de": "Yachthafen", + "dv": "ޔޮޓު މެރީނާ", + "el": "Μαρίνα", + "en-GB": "Marina", + "en": "Marina", + "eo": "Jaĥt-haveno", + "es": "Puerto deportivo", + "et": "Väikesadam", + "fa": "تفرجگاه ساحلی", + "fi": "Venesatama", + "fr": "Marina", + "gl": "Porto deportivo", + "he": "מרינה", + "hr": "Marina", + "hu": "Kishajókikötő", + "id": "Marina", + "is": "Bátahöfn", + "it": "Marina", + "ja": "マリーナ", + "ko": "마리나", + "lt": "Prieplauka", + "mk": "Сидриште", + "nl": "Jachthaven", + "no": "Marina", + "pl": "Przystań", + "pt-BR": "Marina", + "pt": "Marina", + "ru": "Стоянка для яхт", + "sk": "Lodenica", + "sl": "Marina", + "so": "Deked", + "sr": "Марина", + "sv": "Marina", + "ta": "மரினா", + "tr": "Yat Limanı", + "uk": "Пристань для яхт", + "vi": "Bến tàu", + "yue": "遊艇碼頭", + "zh-CN": "游艇码头", + "zh-HK": "遊艇碼頭", + "zh-TW": "遊艇碼頭", + "zh": "码头" + } + }, + "leisure/miniature_golf": { + "title": { + "C": "Miniature Golf", + "ar": "ملعب الجولف المصغرة", + "ast": "Minigolf", + "ca": "Golf en miniatura", + "cs": "Minigolf", + "da": "Minigolf", + "de": "Minigolfanlage", + "el": "Μίνι Γκολφ", + "en-GB": "Miniature Golf", + "en": "Miniature Golf", + "eo": "Minigolfludejo", + "es": "Mini golf", + "et": "Minatuurgolf", + "fa": "گلف مینیاتوری", + "fi": "Minigolf", + "fr": "Mini-golf", + "gl": "Minigolf", + "he": "מיני-גולף", + "hr": "Minigolf", + "hu": "Minigolf", + "is": "Mínígolf", + "it": "Minigolf", + "ja": "ミニゴルフ", + "ko": "미니 골프", + "lt": "Minigolfas", + "mk": "Миниголф", + "nl": "Minigolf", + "no": "Minigolf", + "pl": "Minigolf", + "pt-BR": "Campo de Minigolfe", + "pt": "Campo de minigolfe", + "ro": "Minigolf", + "ru": "Мини-гольф", + "sk": "Miniatúrny golf", + "sl": "Minigolf", + "sr": "Мини-голф", + "sv": "Minigolf", + "tr": "Mini Golf", + "uk": "Міні-гольф", + "vi": "Sân Golf Mini", + "zh-CN": "迷你高尔夫", + "zh-HK": "迷你哥爾夫", + "zh-TW": "迷你高爾夫" + } + }, + "leisure/nature_reserve": { + "title": { + "C": "Nature Reserve", + "ar": "محمية طبيعية", + "ast": "Reserva natural", + "ca": "Reserva Natural", + "cs": "Přírodní rezervace", + "da": "Naturreservat", + "de": "Naturschutzgebiet", + "el": "Προστατευόμενος Βιότοπος", + "en-GB": "Nature Reserve", + "en": "Nature Reserve", + "eo": "Natur-rezervejo", + "es": "Reserva natural", + "et": "Looduskaitseala", + "fa": "ذخیره‌گاه طبیعی", + "fi": "Luonnonsuojelualue", + "fr": "Réserve naturelle", + "gl": "Reserva natural", + "he": "שמורת טבע", + "hr": "Prirodni rezervat", + "hu": "Természetvédelmi terület", + "id": "Cagar Alam", + "is": "Friðland", + "it": "Riserva naturale", + "ja": "自然保護区", + "ko": "자연 보호 구역", + "lt": "Draustinis", + "mk": "Природен резерват", + "nl": "Natuurreservaat", + "no": "Naturreservat", + "pl": "Rezerwat przyrody", + "pt-BR": "Reserva natural", + "pt": "Reserva natural", + "ro": "Rezervat Natural", + "ru": "Заповедник", + "sk": "Prírodná rezervácia", + "sl": "Naravni rezervat", + "sr": "Резерват природе", + "sv": "Naturreservat", + "tr": "Doğal Koruma Alanı", + "uk": "Заповідник", + "vi": "Khu Bảo tồn Thiên nhiên", + "zh-CN": "自然保护区", + "zh-HK": "自然保護區", + "zh-TW": "自然保留區" + } + }, + "leisure/outdoor_seating": { + "title": { + "C": "Outdoor Seating Area", + "ar": "منطقة جلوس خارجية", + "cs": "Venkovní posezení", + "da": "Udendørs siddepladser", + "de": "Außengastronomie", + "el": "Υπαίθριο Καθιστικό", + "en-GB": "Outdoor Seating Area", + "en": "Outdoor Seating Area", + "eo": "Seĝoj eksterdome", + "es": "Área de asientos al exterior", + "fa": "محل استقرار در فضای باز", + "fi": "Ulkoterassi", + "fr": "Aire des places en terrasse", + "gl": "Área de asentos ó exterior", + "he": "אזור ישיבה בחוץ", + "hr": "Sjedenje vani", + "hu": "Kiülős helyek", + "is": "Svæði fyrir sæti utandyra", + "it": "Posti a sedere all’esterno", + "ja": "屋外食事席エリア", + "ko": "야외 좌석 구역", + "mk": "Маси на отворено", + "nl": "Terras", + "pl": "Ogródek", + "pt-BR": "Área de estar ao ar livre", + "pt": "Esplanada", + "ru": "Столики на улице (площадка)", + "sk": "Vonkajšie sedenie", + "sv": "Uteservering", + "tr": "Açık Oturma Alanı", + "uk": "Місця на свіжому повітрі", + "vi": "Khu Ăn uống Ngoài trời", + "zh-CN": "室外座位", + "zh-TW": "戶外座位區" + } + }, + "leisure/park": { + "title": { + "C": "Park", + "af": "Park", + "ar": "منتزه", + "ast": "Parque", + "bg": "Парк", + "bn": "উদ্যান", + "bs": "Park", + "ca": "Parc", + "cs": "Park", + "da": "Park", + "de": "Park", + "dv": "ޕާރކުތައް", + "el": "Πάρκο", + "en-GB": "Park", + "en": "Park", + "eo": "Parko", + "es": "Parque / Plaza verde", + "et": "Park", + "fa": "پارک", + "fi": "Puisto", + "fr": "Parc", + "gl": "Parque", + "he": "פארק", + "hr": "Park", + "hu": "Park", + "id": "Taman", + "is": "Garður", + "it": "Parco", + "ja": "公園", + "kn": "ಉದ್ಯಾನವನ", + "ko": "공원", + "lt": "Parkas", + "lv": "Parks", + "mk": "Парк", + "ne": "पार्क", + "nl": "Park", + "no": "Park", + "pl": "Park rekreacyjno-wypoczynkowy", + "pt-BR": "Parque ou praça", + "pt": "Parque público", + "ro": "Parc", + "ru": "Парк отдыха", + "sk": "Park", + "sl": "Park", + "so": "Jardiino", + "sr": "Парк", + "sv": "Park", + "ta": "பூங்கா", + "te": "పార్కు", + "tr": "Park", + "uk": "Парк", + "vi": "Công viên", + "yue": "園", + "zh-CN": "公园", + "zh-HK": "公園", + "zh-TW": "公園", + "zh": "公园" + } + }, + "leisure/picnic_table": { + "title": { + "C": "Picnic Table", + "ar": "طاولة نزهة", + "ast": "Mesa de merenderu", + "ca": "Taula de picnic", + "cs": "Stůl na piknik", + "da": "Madpakkebord", + "de": "Picknicktisch", + "el": "Τραπέζι Πικ Νικ", + "en-GB": "Picnic Table", + "en": "Picnic Table", + "eo": "Piknika tablo", + "es": "Mesa de picnic", + "et": "Piknikulaud", + "fa": "میز پیکنیک", + "fi": "Piknikpöytä", + "fr": "Table de pique-nique", + "gl": "Mesa de pícnic", + "he": "שולחן פיקניק", + "hr": "Stol za piknik", + "hu": "Piknikasztal", + "id": "Meja Piknik", + "is": "Nestisborð", + "it": "Tavolo da picnic", + "ja": "ピクニックテーブル", + "ko": "피크닉 테이블", + "lt": "Pikniko stalas", + "lv": "Piknika galds", + "mk": "Излетничка маса", + "nl": "Picknicktafel", + "no": "Piknikbord", + "pl": "Stół piknikowy", + "pt-BR": "Mesa de piquenique", + "pt": "Mesa de piquenique", + "ro": "Masă de Picnic", + "ru": "Стол для пикника", + "sk": "Piknikový stôl", + "sl": "Piknik miza", + "sr": "Сто за излет", + "sv": "Picknickbord", + "tr": "Piknik Masası", + "uk": "Місце для пікніка", + "vi": "Bàn ăn Ngoài trời", + "zh-CN": "野餐桌", + "zh-HK": "野餐桌", + "zh-TW": "野餐桌" + } + }, + "leisure/pitch": { + "title": { + "C": "Sport Pitch", + "af": "Sport Veld", + "ar": "ملعب رياضي", + "ast": "Campu deportivu", + "bg": "Спортно игрище", + "bs": "Sportsko igralište", + "ca": "Camp d'esports", + "cs": "Hřiště", + "da": "Sportsbane", + "de": "Sportplatz", + "el": "Αγωνιστικός Χώρος", + "en-GB": "Sport Pitch", + "en": "Sport Pitch", + "eo": "Ludkampo", + "es": "Cancha de juego", + "et": "Spordiväljak", + "fa": "زمین ورزشی", + "fi": "Urheilukenttä", + "fr": "Terrain de sport", + "gl": "Cancha deportiva", + "he": "מגרש ספורט", + "hr": "Sportski teren", + "hu": "Sportpálya", + "id": "Lapangan Olahraga", + "is": "Íþróttavöllur", + "it": "Campo da gioco", + "ja": "スポーツ競技場", + "ko": "운동장", + "lt": "Sporto aikštelė", + "lv": "Sporta laukums", + "mk": "Спортско игралиште", + "nl": "Sportveld", + "no": "Idrettsbane", + "pl": "Boisko", + "pt-BR": "Quadra ou campo esportivo", + "pt": "Campo de desporto", + "ro": "Teren de Sport", + "ru": "Спортивная площадка", + "sk": "Športový kurt", + "sl": "Športno igrišče", + "sr": "Спортско игралиште", + "sv": "Idrottsplats", + "tr": "Spor Sahası", + "uk": "Спортивний майданчик", + "vi": "Sân Thể thao", + "yue": "運動場", + "zh-CN": "运动场地", + "zh-HK": "運動場地", + "zh-TW": "運動場地", + "zh": "运动场所" + } + }, + "leisure/playground": { + "title": { + "C": "Playground", + "af": "Speelpark", + "ar": "ساحة ألعاب للأطفال", + "ast": "Xuegos infantiles", + "bg": "Детска площадка", + "bn": "খেলার মাঠ", + "bs": "Igralište", + "ca": "Zona de jocs infantils", + "cs": "Dětské hřiště", + "da": "Legeplads", + "de": "Spielplatz", + "el": "Παιδική Χαρά", + "en-GB": "Playground", + "en": "Playground", + "eo": "Infana ludejo", + "es": "Patio de juegos", + "et": "Mänguväljak", + "eu": "Jolastoki", + "fa": "زمین بازی", + "fi": "Leikkipuisto", + "fr": "Jeux pour enfants", + "gl": "Parque infantil", + "he": "גן שעשועים", + "hr": "Igralište", + "hu": "Játszótér", + "id": "Lapangan Bermain", + "is": "Leikvöllur", + "it": "Parco giochi", + "ja": "児童公園", + "ko": "놀이터", + "lt": "Žaidimų aikštelė", + "lv": "Spēļlaukums", + "mk": "Игралиште", + "nl": "Speeltuin", + "no": "Lekeplass", + "pl": "Plac zabaw", + "pt-BR": "Parquinho", + "pt": "Parque infantil", + "ro": "Loc de Joacă", + "ru": "Детская площадка", + "sk": "Ihrisko pre deti", + "sl": "Otroško igrišče", + "sr": "Игралиште", + "sv": "Lekplats", + "ta": "விளையாட்டுத் திடல்", + "te": "ఆటమైదానం", + "tr": "Çocuk Parkı", + "uk": "Ігровий майданчик", + "vi": "Sân chơi", + "yue": "遊樂場", + "zh-CN": "儿童游乐场", + "zh-HK": "遊樂場", + "zh-TW": "遊樂場", + "zh": "游乐场" + } + }, + "leisure/resort": { + "title": { + "C": "Resort", + "ar": "منتجع", + "cs": "Letovisko", + "da": "Turistresort", + "de": "Resort", + "el": "Θέρετρο", + "en-GB": "Resort", + "en": "Resort", + "eo": "Turisma centro", + "es": "Complejo turístico", + "et": "Puhkekeskus", + "eu": "opor-leku", + "fa": "مجتمع تفریحی", + "fi": "Lomakohde", + "fr": "Complexe touristique , Village de vacances", + "gl": "Complexo turístico", + "he": "אתר נופש", + "hu": "Üdülőhely", + "is": "Afþreyingarþorp", + "it": "Resort", + "ja": "リゾート地", + "ko": "리조트", + "mk": "Одморалиште", + "nl": "Resort", + "pl": "Ośrodek wczasowy", + "pt-BR": "Resort", + "pt": "Estância turística", + "ro": "Resort", + "ru": "База отдыха / санаторий / пасионат / детский лагерь", + "sk": "Rezort", + "sl": "Letovišče", + "sr": "Одмаралиште", + "sv": "Resort", + "tr": "Tatil Yeri", + "uk": "Курорт", + "vi": "Khu Nghỉ dưỡng", + "zh-CN": "度假区", + "zh-HK": "度假勝地", + "zh-TW": "度假勝地" + } + }, + "leisure/sauna": { + "title": { + "C": "Sauna", + "ar": "سونا", + "ast": "Sauna", + "cs": "Sauna", + "da": "Sauna", + "de": "Sauna", + "el": "Σάουνα", + "en-GB": "Sauna", + "en": "Sauna", + "eo": "Ŝvitbanejo", + "es": "Sauna", + "et": "Saun", + "eu": "Sauna", + "fa": "سونا", + "fi": "Sauna", + "fr": "Sauna", + "gl": "Sauna", + "he": "סאונה", + "hr": "Sauna", + "hu": "Szauna", + "is": "Gufubað", + "it": "Sauna", + "ja": "サウナ", + "ko": "사우나", + "lt": "Sauna", + "lv": "Sauna", + "mk": "Сауна", + "nl": "Sauna", + "no": "Badstu", + "pl": "Sauna", + "pt-BR": "Sauna", + "pt": "Sauna", + "ru": "Сауна", + "sk": "Sauna", + "sr": "Сауна", + "sv": "Bastu", + "tr": "Sauna", + "uk": "Сауна", + "vi": "Tắm hơi", + "zh-CN": "桑拿", + "zh-TW": "桑拿" + } + }, + "leisure/slipway": { + "title": { + "C": "Slipway", + "af": "Inglipbaan", + "ar": "مزلقة سفن", + "ast": "Rampla de botadura", + "bg": "Хелинг", + "bs": "Navoz", + "ca": "Pendent per a embarcacions", + "cs": "Vodní skluz", + "da": "Bådrampe", + "de": "Gleitbahn", + "el": "Γλίστρα", + "en-GB": "Slipway", + "en": "Slipway", + "eo": "Ŝipglitejo", + "es": "Rampa para botes", + "et": "Slipp", + "fa": "سرسره آب اندازی قایق", + "fi": "Veneramppi", + "fr": "Cale de mise à l'eau", + "gl": "Rampla para embarcacións", + "he": "ממשה", + "hr": "Navoz za brodove", + "hu": "Sólya", + "id": "Slipway", + "is": "Dráttarbraut", + "it": "Scivolo per barche", + "ja": "進水路", + "ko": "선가대", + "mk": "Испуст за пловила", + "nl": "Botenhelling", + "no": "Båtslipp", + "pl": "Pochylnia okrętowa", + "pt-BR": "Rampa náutica", + "pt": "Rampa para barcos", + "ru": "Стапель", + "sk": "Spúšťanie lodí", + "sl": "Rampa", + "sr": "Навоз", + "sv": "Stapelbädd", + "tr": "Gemi Kızağı", + "uk": "Стапель", + "vi": "Đường Trượt tàu", + "yue": "船排", + "zh-CN": "船台", + "zh-HK": "船台", + "zh-TW": "船架滑道", + "zh": "船架滑道" + } + }, + "leisure/sports_centre": { + "title": { + "C": "Sports Center / Complex", + "ar": "مركز/مجمع رياضي", + "ast": "Centru / Complexu deportivu", + "ca": "Complex esportiu", + "cs": "Sportovní centrum", + "da": "Sportcenter / Kompleks", + "de": "Sportzentrum / -komplex", + "dv": "ކުުޅިވަރު މަރުކަޒު", + "el": "Αθλητικό Κέντρο/ Συγκρότημα", + "en-AU": "Sports Centre / Complex", + "en-GB": "Sports Centre / Complex", + "en": "Sports Center / Complex", + "eo": "Sporta centro", + "es": "Complejo deportivo", + "et": "Spordikeskus", + "eu": "Kiroldegia/ gunea", + "fa": "مجتمع / مرکز ورزشی", + "fi": "Liikuntakeskus", + "fr": "Centre sportif", + "gl": "Complexo deportivo", + "he": "מרכז ספורט", + "hr": "Sportski centar", + "hu": "Sportközpont", + "is": "Íþróttamiðstöð", + "it": "Complesso / Centro Sportivo", + "ja": "スポーツセンター/複合施設", + "ko": "스포츠 센터 / 단지", + "lv": "Sporta Centrs / Komplekss", + "mk": "Спортски центар / комплекс", + "nl": "Sportcentrum of -complex", + "no": "Idrettssenter / kompleks", + "pl": "Centrum sportowe", + "pt-BR": "Centro Esportivo / Clube", + "pt": "Complexo desportivo", + "ro": "Centru / Complex de Sport", + "ru": "Спортивный центр/комплекс", + "sk": "Športové centrum / Komplex", + "sl": "Športni center / kompleks", + "so": "Xarunta Cayaaraha", + "sr": "Спортски центар / Комплекс", + "sv": "Sportcenter / -anläggning", + "tr": "Spor Merkezi", + "uk": "Спортивний центр/комплекс", + "vi": "Trung tâm Thể thao", + "zh-CN": "体育中心/综合体育场", + "zh-HK": "體育中心 / 體育館", + "zh-TW": "體育中心/設施" + } + }, + "leisure/sports_hall": { + "title": { + "C": "Gymnasium", + "ar": "قاعة رياضية", + "cs": "Tělocvična", + "da": "Fitness", + "de": "Sporthalle", + "el": "Γυμναστήριο", + "en": "Gymnasium", + "eo": "Sporthalo", + "es": "Gimnasio / Pabellón deportivo", + "et": "Spordihall", + "fa": "سالن ورزشی", + "fi": "Liikuntasali", + "fr": "Gymnase", + "gl": "Pavillón polideportivo", + "he": "חדר כושר", + "hr": "Sportska dvorana", + "hu": "Tornaterem", + "it": "Palestra", + "ja": "体育館", + "mk": "Фискултурна сала", + "nl": "Sporthal", + "pl": "Sala sportowa", + "pt-BR": "Ginásio", + "pt": "Pavilhão desportivo", + "sk": "Telocvičňa", + "sv": "Sporthall", + "tr": "Spor salonu", + "uk": "Спортзал", + "vi": "Nhà thi đấu Thể thao", + "zh-CN": "体育馆", + "zh-TW": "體育館" + } + }, + "leisure/stadium": { + "title": { + "C": "Stadium", + "af": "Stadium", + "am": "ስታዲዩም", + "ar": "استاد رياضي", + "ast": "Estadiu", + "bg": "Стадион", + "bn": "স্টেডিয়াম", + "bs": "Stadion", + "ca": "Estadi", + "cs": "Stadion", + "da": "Stadion", + "de": "Stadion", + "dv": "ސްޓޭޑިއަމް", + "el": "Στάδιο", + "en-GB": "Stadium", + "en": "Stadium", + "eo": "Stadiono", + "es": "Estadio", + "et": "Staadion", + "eu": "Estadio", + "fa": "ورزشگاه", + "fi": "Stadion", + "fr": "Stade", + "gl": "Estadio", + "he": "אצטדיון", + "hr": "Stadion", + "hu": "Stadion", + "id": "Stadion", + "is": "Leikvangur", + "it": "Stadio", + "ja": "スタジアム", + "kn": "ಕ್ರೀಡಾಂಗಣ", + "ko": "경기장", + "lt": "Stadionas", + "lv": "Stadions", + "mk": "Стадион", + "nl": "Stadion", + "no": "Stadion", + "pl": "Stadion", + "pt-BR": "Estádio", + "pt": "Estádio", + "ro": "Stadion", + "ru": "Стадион (территория)", + "sk": "Štadión", + "sl": "Stadion", + "so": "Garoon", + "sr": "Стадион", + "sv": "Stadium", + "ta": "விளையாட்டு அரங்கம்", + "tr": "Stadyum", + "uk": "Стадіон", + "vi": "Sân vận động", + "yue": "大體育館", + "zh-CN": "体育场", + "zh-HK": "體育館", + "zh-TW": "體育場", + "zh": "体育场" + } + }, + "leisure/swimming_area": { + "title": { + "C": "Natural Swimming Area", + "ar": "منطقة سباحة طبيعية", + "cs": "Přírodní koupaliště", + "da": "Åbentvandssvømningsområde", + "de": "Natürlicher Badebereich", + "el": "Φυσική Περιοχή Κολύμβησης", + "en": "Natural Swimming Area", + "eo": "Naĝejo natura", + "es": "Área de natación natural", + "et": "Looduslik ujumiskoht", + "fa": "منطقه طبیعی شنا", + "fi": "Uimaranta", + "fr": "Lieu de baignade", + "gl": "Área de natación natural", + "he": "שטח שחייה טבעי", + "hu": "Úszásra kijelölt terület", + "it": "Area riservata ai bagnanti", + "ja": "遊泳区域", + "mk": "Природно пливалиште", + "nl": "Natuurlijk zwemgebied", + "pl": "Kąpielisko", + "pt-BR": "Área de natação natural", + "pt": "Área balnear natural", + "sk": "Prírodný plavecký areál", + "sv": "Naturbadområde", + "tr": "Doğal Yüzme Alanı", + "uk": "Місце для плавання", + "vi": "Vũng Sâu để Bơi", + "zh-CN": "自然游泳区域", + "zh-TW": "自然游泳區" + } + }, + "leisure/swimming_pool": { + "title": { + "C": "Swimming Pool", + "af": "Swembad", + "ar": "حوض سباحة", + "ast": "Piscina", + "bg": "Плувен басейн", + "bn": "সুইমিং পুল", + "bs": "Bazen", + "ca": "Piscina", + "cs": "Plavecký bazén", + "da": "Svømmebassin", + "de": "Schwimmbecken", + "el": "Πισίνα", + "en-GB": "Swimming Pool", + "en": "Swimming Pool", + "eo": "Naĝejo (akvo)", + "es": "Piscina", + "et": "Ujumisbassein", + "eu": "Igerileku", + "fa": "استخر شنا", + "fi": "Uimahalli tai -allas", + "fr": "Piscine", + "gl": "Piscina", + "he": "בריכת שחייה", + "hr": "Bazen", + "hu": "Úszómedence", + "id": "Kolam Renang", + "is": "Sundlaug", + "it": "Piscina", + "ja": "遊泳プール(屋外)", + "kn": "ಈಜುಕೊಳ", + "ko": "수영장", + "lt": "Baseinas", + "lv": "Peldbaseins", + "mk": "Базен", + "nl": "Zwembad", + "no": "Svømmebasseng", + "pl": "Basen", + "pt-BR": "Piscina", + "pt": "Piscina", + "ro": "Piscină", + "ru": "Бассейн (его водная поверхность)", + "sk": "Plaváreň", + "sl": "Plavalni bazen", + "sr": "Базен", + "sv": "Simbassäng", + "ta": "நீச்சல் குளம்", + "te": "ఈత కొలను", + "tr": "Yüzme Havuzu", + "uk": "Басейн", + "vi": "Hồ Bơi", + "yue": "游水池", + "zh-CN": "游泳池", + "zh-HK": "游泳池", + "zh-TW": "游泳池", + "zh": "游泳池" + } + }, + "leisure/track": { + "title": { + "C": "Racetrack (Non-Motorsport)", + "ar": "مضمار السباق (غير رياضة السيارات)", + "ast": "Circuitu (Deportes sin motor)", + "cs": "Závodní dráha (ne pro motorsport)", + "da": "Løbsbane (Ej motorsport)", + "de": "Bahn (Nicht Motorsport)", + "el": "Αγωνιστικός Στίβος (Μη-Μηχανοκίνηση)", + "en-GB": "Racetrack (Non-Motorsport)", + "en": "Racetrack (Non-Motorsport)", + "eo": "Kurejo/biciklejo/konkursejo (nemotora)", + "es": "Pista de carrera (no motorizada)", + "et": "Staadion", + "fa": "میدان مسابقه (مسابقات غیرموتوری)", + "fi": "Kilparata (ei moottoriurheilu)", + "fr": "Piste de course (hors sports mécaniques)", + "gl": "Pista de competición (non motorizada)", + "he": "מסלול מרוצים (לבלתי ממונעים)", + "hr": "Staza za utrkivanje (nemotorizirane discipline)", + "hu": "Versenypálya (nem motorsport)", + "is": "Keppnisbraut (ekki mótorsport)", + "it": "Pista (sport non motoristici)", + "ja": "競技トラック(モータースポーツ以外)", + "ko": "경주로(비모터스포츠)", + "mk": "Тркалиште (немоторно)", + "nl": "Racepiste (niet-motorsport)", + "no": "Racerbane (Ikke motorsport)", + "pl": "Tor wyścigowy (niemotorowy)", + "pt-BR": "Pista para esportes não-motorizados", + "pt": "Pista de desportos não motorizados", + "ru": "Гоночный трек (не автоспорт)", + "sk": "Pretekárska dráha (nemotorové športy)", + "sl": "Tekmovalna steza (neasfaltirana)", + "sv": "Tävlingsbana (Icke motorsport)", + "tr": "Yarış Pisti (motor spor hariç)", + "uk": "Гоночний трек (не мотоспорт)", + "vi": "Đường Đua (Không phải Đua Xe)", + "zh-CN": "赛道(非机动竞速项目)", + "zh-HK": "賽道(非賽車)", + "zh-TW": "賽道(非賽車運動)" + } + }, + "leisure/trampoline_park": { + "title": { + "C": "Trampoline Park", + "ar": "منتزه النُطيطة (الترامبولين)", + "cs": "Trampolínová hala", + "da": "Trampolinpark", + "de": "Trampolinpark", + "el": "Πάρκο Τραμπολίνου", + "en": "Trampoline Park", + "eo": "Parko de saltadtukoj", + "es": "Parque de trampolín", + "et": "Batuudikeskus", + "fa": "پارک ترامپولین", + "fi": "Trampoliinipuisto", + "fr": "Parc à trampolines", + "gl": "Parque de trampolíns", + "he": "פארק טרמפולינות", + "hu": "Ugrálda", + "it": "Parco di trampolini", + "ja": "トランポリンパーク", + "mk": "Трамбулински парк", + "nl": "Trampolinepark", + "pl": "Park trampolin", + "pt-BR": "Parque de trampolim", + "pt": "Parque de trampolins", + "sk": "Tempolínovy park", + "sv": "Trampolinpark", + "tr": "Trambolin Parkı", + "uk": "Батутна арена", + "vi": "Khu Giàn nhún", + "zh-CN": "室内蹦床乐园", + "zh-TW": "彈簧床公園" + } + }, + "leisure/water_park": { + "title": { + "C": "Water Park", + "ar": "ملاهي مائية", + "ast": "Parque acuáticu", + "ca": "Parc Aquàtic", + "cs": "Akvapark", + "da": "Vandland", + "de": "Erlebnisbad", + "el": "Νεροτσουλήθρες", + "en-GB": "Water Park", + "en": "Water Park", + "eo": "Akvoparko", + "es": "Parque acuático", + "et": "Veepark", + "eu": "Ur-parkea", + "fa": "پارک آبی", + "fi": "Vesipuisto", + "fr": "Parc à thème aquatique", + "gl": "Parque acuático", + "he": "פארק מים", + "hr": "Vodeni park", + "hu": "Strand (épített)", + "is": "Vatnagarður", + "it": "Parco acquatico", + "ja": "ウォーターパーク", + "ko": "워터파크", + "lt": "Vandens parkas", + "lv": "Akvaparks", + "mk": "Воден парк", + "nl": "Waterpretpark", + "no": "Utendørs badeland", + "pl": "Park wodny", + "pt-BR": "Parque aquático", + "pt": "Parque aquático", + "ro": "Parc Acvatic", + "ru": "Аквапарк", + "sk": "Vodný park", + "sl": "Vodni park", + "sr": "Водени парк", + "sv": "Äventyrsbad / Vattenpark", + "ta": "தண்ணீர் பூங்கா", + "tr": "Su Parkı", + "uk": "Аквапарк", + "vi": "Công viên Nước", + "zh-CN": "水上乐园", + "zh-HK": "水上樂園", + "zh-TW": "水上樂園" + } + }, + "office/administrative": { + "title": { + "C": "Administrative Office", + "am": "አስተዳደር ቢሮ", + "ar": "مكتب إداري", + "ast": "Oficina alministrativa", + "bs": "Administrativni ured", + "ca": "Oficina de tràmits locals", + "cs": "Místní úřad", + "da": "Administrativt kontor", + "de": "Verwaltungsamt", + "el": "Διοικητική Υπηρεσία", + "en-GB": "Administrative Office", + "en": "Administrative Office", + "eo": "Administra oficejo", + "es": "Oficina administrativa", + "fa": "اداره حکومتی", + "fi": "Kunnallishallinnon toimisto", + "fr": "Bureau administratif", + "gl": "Oficina administrativa", + "he": "משרד אדמינסטרטיבי", + "hu": "Közigazgatási hivatal", + "id": "Kantor Administrasi", + "is": "Stjórnsýsluskrifstofa", + "it": "Autorità locale", + "ja": "地方行政事務所", + "ko": "관리 사무소", + "lt": "Administracinis biuras", + "mk": "Администрација", + "ms": "Pejabat Pentadbiran", + "nl": "Bestuurlijke instantie", + "pl": "Biuro samorządowe", + "pt-BR": "Escritório Administrativo", + "pt": "Escritório da administração local", + "ro": "Oficiu Administrativ", + "ru": "Местная администрация и надзирающие органы", + "sk": "Administratívny úrad", + "sl": "Upravna enota", + "sr": "Управна канцеларија", + "sv": "Lokal myndighet", + "ta": "நிருவாக அலுவலகம்", + "tr": "İdari Ofis", + "uk": "Канцелярія", + "vi": "Cơ quan Địa phương", + "yue": "行政樓", + "zh-CN": "行政楼", + "zh-HK": "行政樓", + "zh-TW": "政府機關" + } + }, + "office/physician": { + "title": { + "C": "Physician", + "ar": "طبيب", + "ast": "Médicu", + "bn": "চিকিত্সক", + "bs": "Ljekar", + "ca": "Metge", + "cs": "Praktický lékař", + "da": "Læge", + "de": "Arztpraxis", + "el": "Ιατρός", + "en-GB": "Physician", + "en": "Physician", + "eo": "Kabineto de kuracisto", + "es": "Médico", + "fa": "پزشک", + "fi": "Lääkäri", + "fr": "Médecin", + "gl": "Médico", + "he": "רופא", + "hr": "Liječnička praksa", + "is": "Læknir", + "it": "Medico", + "ja": "医者", + "kn": "ವೈದ್ಯ", + "ko": "내과의원", + "lt": "Gydytojas", + "mk": "Лекар", + "ms": "Pakar Perubatan", + "nl": "Arts", + "no": "Lege", + "pl": "Lekarz", + "pt-BR": "Médico", + "pt": "Médico especialista", + "ro": "Fizician", + "ru": "Врач", + "sk": "Doktor", + "sl": "Ambulanta", + "sr": "Лекар", + "sv": "Läkare", + "ta": "மருத்துவர்", + "tr": "Hekim", + "uk": "Лікар", + "vi": "Văn phòng Bác sĩ", + "yue": "醫生", + "zh-CN": "医生", + "zh-HK": "醫生", + "zh-TW": "醫務所" + } + }, + "office/travel_agent": { + "title": { + "C": "Travel Agency", + "am": "የጉዞ ወኪል", + "ar": "وكالة السفر", + "ast": "Axencia de viaxes", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "en": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyage", + "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "mk": "Туристичка агенција", + "ms": "Agensi Pelancongan", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Турагентство (устаревший тег)", + "sk": "Cestovná agentúra", + "sl": "Potovalna agencija", + "so": "Wakaalad Socdaal", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Seyahat Acentesi", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社" + } + }, + "office/accountant": { + "title": { + "C": "Accountant Office", + "am": "ሒሳብ ሠራተኛ", + "ar": "مكتب محاسب", + "ast": "Contable", + "ca": "Oficina comptable", + "cs": "Účetnictví", + "da": "Revisor-kontor", + "de": "Buchhaltungsbüro", + "el": "Λογιστικό Γραφείο", + "en-GB": "Accountant Office", + "en": "Accountant Office", + "eo": "Oficejo de kontisto", + "es": "Oficina de contador", + "fa": "دفتر حسابدار", + "fi": "Tilintarkastustoimisto", + "fr": "Comptable", + "gl": "Oficina contábel", + "he": "משרד רואה חשבון", + "hu": "Könyvelőiroda", + "is": "Bókhaldsskrifstofa", + "it": "Commercialista", + "ja": "会計事務所(主に法人向け)", + "ko": "회계사 사무소", + "mk": "Сметководствено биро", + "ms": "Pejabat Akauntan", + "nl": "Boekhouder", + "no": "Revisorkontor", + "pl": "Biuro rachunkowe", + "pt-BR": "Escritório de Contabilidade", + "pt": "Contabilista", + "ru": "Бухгалтер", + "sk": "Účtovnik", + "sr": "Рачуноводствена канцеларија", + "sv": "Bokhållare", + "tr": "Muhasebeci", + "uk": "Бухгалтер", + "vi": "Văn phòng Kế toán", + "zh-CN": "会计师事务所", + "zh-TW": "會計師事務所" + } + }, + "office/adoption_agency": { + "title": { + "C": "Adoption Agency", + "ca": "Agència d'adopció", + "cs": "Adopční agentura", + "da": "Adoptionsbureau", + "de": "Adoptionsagentur", + "el": "Οργανισμός Υιοθεσίας", + "en-GB": "Adoption Agency", + "en": "Adoption Agency", + "eo": "Oficejo de adopto", + "es": "Agencia de adopción", + "fa": "سازمان بهزیستی", + "fi": "Adoptiotoimisto", + "fr": "Agence d'adoption", + "gl": "Axencia de adopción", + "he": "סוכנות אימוץ", + "hr": "Agencija za posvajanje", + "hu": "Örökbefogadási ügynökség", + "is": "Ættleiðingaskrifstofa", + "it": "Agenzia per adozioni", + "ja": "養子縁組み機関", + "ko": "입양기관", + "lv": "Adopcijas Aģentūra", + "mk": "Агенција за посвојување", + "ms": "Agensi Pengambilan Anak Angkat", + "nl": "Adoptiebureau", + "no": "Adopsjonsbyrå", + "pl": "Ośrodek adopcyjny", + "pt-BR": "Agência de Adoção", + "pt": "Agência de adoção", + "ru": "Агенство по усыновлению", + "sk": "Agentúra pre adopcie", + "sr": "Агенција за усвајање", + "sv": "Adoptionsbyrå", + "tr": "Evlat Edinme Ajansı", + "uk": "Агенція з усиновлення", + "vi": "Cơ quan Nhận Con nuoi", + "zh-CN": "领养中介", + "zh-TW": "領養代理" + } + }, + "office/advertising_agency": { + "title": { + "C": "Advertising Agency", + "am": "የማስታወቂያ ድርጅት", + "ar": "وكالة إعلانية", + "ast": "Axencia de publicidá", + "ca": "Agència de publicitat", + "cs": "Reklamní agentura", + "da": "Reklamebureau", + "de": "Werbeagentur", + "el": "Διαφημιστική", + "en-GB": "Advertising Agency", + "en": "Advertising Agency", + "eo": "Oficejo de reklamo", + "es": "Agencia de publicidad", + "fa": "کانون تبلیغاتی", + "fi": "Mainostoimisto", + "fr": "Agence de publicité", + "gl": "Axencia de publicidade", + "he": "סוכנות פרסום", + "hr": "Reklamna agencija", + "hu": "Reklámügynökség", + "is": "Auglýsingastofa", + "it": "Agenzia pubblicitaria", + "ja": "広告代理店", + "ko": "광고 대행사", + "lt": "Reklamos agentūra", + "mk": "Рекламна агенција", + "ms": "Agensi Pengiklanan", + "nl": "Reclamebureau", + "no": "Reklamebyrå", + "pl": "Agencja reklamowa", + "pt-BR": "Agência de Publicidade", + "pt": "Agência de publicidade", + "ru": "Рекламное агенство", + "sk": "Reklamná agentúra", + "sr": "Рекламна агенција", + "sv": "Reklambyrå", + "ta": "விளம்பர முகவர்", + "tr": "Reklam Ajansı", + "uk": "Рекламна агенція", + "vi": "Cơ sở Quảng cáo", + "zh-CN": "广告中介", + "zh-TW": "廣告代理公司" + } + }, + "office/architect": { + "title": { + "C": "Architect Office", + "am": "አርኪቴክት", + "ar": "مكتب مهندس معماري", + "ca": "Oficina d'arquitectura", + "cs": "Kancelář architekta", + "da": "Arkitekt-kontor", + "de": "Architekturbüro", + "el": "Αρχιτεκτονικό Γραφείο", + "en-GB": "Architect Office", + "en": "Architect Office", + "eo": "Oficejo de arĥitekturisto", + "es": "Oficina de arquitecto", + "fa": "دفتر معماری", + "fi": "Arkkitehtitoimisto", + "fr": "Architecte", + "gl": "Oficina de arquitectura", + "he": "משרד אדריכלים", + "hr": "Arhitektonski ured", + "hu": "Építésziroda", + "is": "Arkitektastofa", + "it": "Studio di architettura", + "ja": "設計事務所", + "ko": "건축가 사무소", + "lt": "Architekto biuras", + "lv": "Arhitekta birojs", + "mk": "Архитектонско биро", + "ms": "Pejabat Arkitek", + "nl": "Architectenbureau", + "no": "Arkitektkontor", + "pl": "Architekt", + "pt-BR": "Escritório de Arquitetura", + "pt": "Arquiteto", + "ru": "Архитектурное бюро", + "sk": "Architekt", + "sr": "Архитектонска канцеларија", + "sv": "Arkitektbyrå", + "tr": "Mimarlık Ofisi", + "uk": "Архітектор", + "vi": "Văn phòng Kiến trúc sư", + "zh-CN": "建筑事务所", + "zh-TW": "建築師事務所" + } + }, + "office/association": { + "title": { + "C": "Nonprofit Organization Office", + "am": "ማኅበር", + "ar": "مكتب منظمة غير ربحية", + "ast": "Oficina d'ONG", + "ca": "Oficina d'organització no governamental", + "cs": "Kancelář neziskové organizace", + "da": "Almennyttigt kontor", + "de": "Büro einer Nonprofit-Organisation", + "el": "Μη Κερδοσκοπική Υπηρεσία", + "en-GB": "Nonprofit Organization Office", + "en": "Nonprofit Organization Office", + "eo": "Oficejo de ne-profit-cela organizaĵo", + "es": "Oficina de organización sin fines de lucro", + "fa": "دفتر سازمان غیر انتفاعی", + "fi": "Voittoa tavoittelematon järjestö", + "fr": "Bureau d'association", + "gl": "Oficina de asociación", + "he": "ארגון ללא מטרת רווח", + "hr": "Ured neprofitne udruge", + "hu": "Egyesület irodája", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Ufficio associazione senza scopo di lucro", + "ja": "非営利組織", + "ko": "비영리 단체 사무소", + "lt": "Ne pelno organizacijos biuras", + "mk": "Непрофитна организација", + "ms": "Pejabat Pertubuhan Bukan Untung", + "nl": "Kantoor van non-profitorganisatie", + "pl": "Biuro organizacji non profit", + "pt-BR": "Escritório de organização sem fins lucrativos", + "pt": "Organização sem fins lucrativos", + "ru": "Ассоциация (союз)", + "sk": "Nezisková organizácia", + "sr": "Непрофитна канцеларија", + "sv": "Frivilligorganisation", + "tr": "Yardım Kuruluşu", + "uk": "Неприбуткова організація", + "vi": "Tổ chức Phi lợi nhuận", + "zh-CN": "非营利机构办公室", + "zh-TW": "非營利組織辦公室" + } + }, + "office/bail_bond_agent": { + "title": { + "C": "Bail Bond Agent", + "ar": "مكتب وكيل سند الكفالة", + "cs": "zastavárna pro získání kauce", + "de": "Kautionsvermittler", + "en": "Bail Bond Agent", + "eo": "Oficejo de kaŭci-leĝisto", + "es": "Agente de fianzas", + "fr": "Agent de cautionnement", + "gl": "Axente de fianzas", + "he": "סוכן שחרור בערבות", + "hu": "Óvadékiroda", + "it": "Agente di cauzione", + "ja": "保釈保証業者", + "mk": "Кауционист", + "nl": "Borgtochtgeldschieter", + "pl": "Poręczyciel majątkowy", + "pt-BR": "Agente de fiança", + "pt": "Agente de fianças", + "sv": "Bail Bond-agent", + "tr": "Kefaletnameci", + "uk": "Застава за звільнення", + "vi": "Văn phòng Đóng tiền Thế chân Tại ngoại", + "zh-CN": "保释担保代理", + "zh-TW": "保釋債券代理人" + } + }, + "office/charity": { + "title": { + "C": "Charity Office", + "ar": "مكتب منظمة خيرية", + "cs": "Kancelář charity", + "da": "Velgørenhedskontor", + "de": "Wohlfahrtseinrichtung", + "el": "Φιλανθρωπική Υπηρεσία", + "en-GB": "Charity Office", + "en": "Charity Office", + "eo": "Oficejo de almoza organizaĵo", + "es": "Oficina de beneficencia", + "fa": "دفتر خیریه", + "fi": "Hyväntekeväisyysjärjestö", + "fr": "Organisation de bienfaisance/charité", + "gl": "Oficina da caridade", + "he": "משרד צדקה", + "hu": "Jótékonysági szervezet irodája", + "is": "Skrifstofa góðgerðasamtaka", + "it": "Organizzazione benefica", + "ja": "慈善団体", + "ko": "자선 단체 사무소", + "lt": "Labdaros biuras", + "mk": "Добротворна организација", + "ms": "Pejabat Kebajikan", + "nl": "Kantoor van liefdadigheidsinstelling", + "no": "Veldedighetskontor", + "pl": "Organizacja charytatywna", + "pt-BR": "Escritório de Caridade", + "pt": "Instituição de caridade", + "ru": "Благотворительная организация", + "sk": "Charita", + "sr": "Добротворна канцеларија", + "sv": "Välgörenhetsorganisation", + "tr": "Hayır Kurumu", + "uk": "Благодійна організація", + "vi": "Tổ chức Từ thiện", + "zh-CN": "慈善机构", + "zh-TW": "慈善機構" + } + }, + "office/company": { + "title": { + "C": "Corporate Office", + "am": "ኩባንያ", + "ar": "مكتب شركة / مؤسسة", + "ca": "Oficina corporativa", + "cs": "Kancelář korporace", + "da": "Virksomhedskontor", + "de": "Firmenbüro", + "el": "Εταιρικό Γραφείο", + "en-GB": "Corporate Office", + "en": "Corporate Office", + "eo": "Oficejo de firmao", + "es": "Oficina corporativa", + "et": "Ettevõtte kontor", + "fa": "دفتر شرکت خصوصی", + "fi": "Yritystoimisto", + "fr": "Bureau d'entreprise", + "gl": "Oficina corporativa", + "he": "משרד תאגידי", + "hr": "Ured firme", + "hu": "Vállalati iroda", + "is": "Skrifstofa fyrirtækis", + "it": "Ufficio aziendale", + "ja": "会社", + "ko": "기업 사무소", + "lt": "Korporacijos biuras", + "mk": "Деловни простории", + "nl": "Kantoor van bedrijf", + "pl": "Biuro firmy", + "pt-BR": "Escritório de Empresa", + "pt": "Empresa", + "ru": "Частная компания", + "sr": "Пословна канцеларија", + "sv": "Företagskontor", + "tr": "Şirket", + "uk": "Офіс компанії", + "vi": "Văn phòng Công ty", + "zh-CN": "企业公司", + "zh-TW": "公司辦公室" + } + }, + "office/consulting": { + "title": { + "C": "Consultancy Office", + "ar": "مكتب شركة استشارية", + "cs": "Poradenská kancelář", + "da": "Konsulentkontor", + "de": "Consulting/Beratungs-Büro", + "el": "Υπηρεσία Συμβούλων", + "en": "Consultancy Office", + "eo": "Oficejo de konsilado por firmaoj", + "es": "Oficina de consultora", + "fa": "دفتر مشاوره", + "fi": "Konsulttitoimisto", + "fr": "Bureau de consultant", + "gl": "Oficina de consultoría", + "he": "משרד ייעוץ", + "hu": "Tanácsadó cég irodája", + "it": "Studio di consulenza", + "ja": "コンサルティング事務所", + "ko": "컨설팅 사무소", + "mk": "Советодавно биро", + "nl": "Adviesbureau", + "pl": "Biuro konsultanta", + "pt-BR": "Gabinete de consultoria", + "pt": "Empresa de consultadoria", + "ru": "Консультационная компания", + "sr": "Консултантска канцеларија", + "sv": "Konsultkontor", + "tr": "Danışmanlık Ofisi", + "uk": "Консалтингова фірма", + "vi": "Văn phòng Tư vấn", + "zh-CN": "咨询公司办公室", + "zh-TW": "諮詢處" + } + }, + "office/coworking": { + "title": { + "C": "Coworking Space", + "ar": "مساحة عمل مشتركة", + "ca": "Espai de cotreball", + "cs": "Místo pro spolupráci", + "da": "Kontorfællesskab", + "de": "Coworking-Büro", + "el": "Χώρος Συνεργασίας", + "en-GB": "Coworking Space", + "en": "Coworking Space", + "eo": "Oficejo por samloka laborado (coworking)", + "es": "Espacio de trabajo compartido", + "fa": "فضای کاری مشارکتی", + "fi": "Yhteistyöskentelytila", + "fr": "Espace de coworking", + "gl": "Espacio de cotraballo", + "he": "משרדים משותפים", + "hu": "Közösségi iroda", + "is": "Sameiginlegt vinnurými", + "it": "Ufficio in Coworking", + "ja": "コワーキングスペース", + "ko": "공동 작업 공간", + "mk": "Споделен работен простор", + "nl": "Coworking-kantoor", + "pl": "Centrum coworkingowe", + "pt-BR": "Espaço de Coworking", + "pt": "Coworking", + "ru": "Коворкинг", + "sl": "Prostor za sodelo", + "sr": "Дељени радни простор", + "sv": "Dagkontor", + "tr": "Ortak Çalışma Alanı", + "uk": "Коворкінг", + "vi": "Văn phòng Làm việc Chung", + "zh-CN": "共享办公空间", + "zh-HK": "共同工作空間", + "zh-TW": "共同工作空間" + } + }, + "office/diplomatic": { + "title": { + "C": "Diplomatic Office", + "ar": "مكتب دبلوماسي", + "ca": "Oficina diplomàtica", + "cs": "diplomatická kancelář", + "da": "Diplomatkontor", + "de": "Diplomatische und konsularische Vertretung", + "el": "Διπλωματική Υπηρεσία", + "en": "Diplomatic Office", + "eo": "Oficejo diplomatia", + "es": "Oficina diplomática", + "fa": "دفتر دیپلماتیک / امور خارجه", + "fi": "Diplomaattinen toimisto", + "fr": "Bâtiment diplomatique", + "gl": "Oficina diplomática", + "he": "משרד דיפלומטי", + "hu": "Diplomáciai iroda", + "it": "Ufficio diplomatico", + "ja": "外交施設", + "ko": "외교 사무소", + "mk": "Дипломатска служба", + "nl": "Diplomatisch kantoor", + "pl": "Placówka dyplomatyczna", + "pt-BR": "Escritório diplomático", + "pt": "Escritório diplomático", + "sk": "Diplomatický úrad", + "sr": "Дипломатска канцеларија", + "sv": "Diplomatkontor", + "tr": "Diplomatik Ofis", + "uk": "Дипломатична установа", + "vi": "Văn phòng Ngoại giao", + "zh-CN": "外交代表机构", + "zh-TW": "外交辦公室" + } + }, + "office/educational_institution": { + "title": { + "C": "Educational Institution", + "am": "የትምህርት ተቋም", + "ar": "مكتب مؤسسة تعليمية", + "ast": "Institución educativa", + "bs": "Obrazovna institucija", + "ca": "Institució Educativa", + "cs": "Vzdělávací instituce", + "da": "Uddannelsesinstitution", + "de": "Bildungseinrichtung", + "el": "Εκπαιδευτικό Ίδρυμα", + "en-GB": "Educational Institution", + "en": "Educational Institution", + "eo": "Oficejo de edukada institucio", + "es": "Oficina de institución educativa", + "fa": "مؤسسه آموزشی", + "fi": "Koulutushallinnon toimisto", + "fr": "Bureau de l'établissement d'enseignement", + "gl": "Institución educativa", + "he": "מוסד חינוכי", + "hr": "Obrazovna ustanova", + "hu": "Oktatási intézmény irodája", + "id": "Institusi Pendidikan", + "is": "Menntastofnun", + "it": "Istituto d'Istruzione", + "ja": "教育機関事務所", + "ko": "교육 기관", + "lt": "Edukacinis institutas", + "lv": "Izglītības Iestāde", + "mk": "Образовна установа", + "ms": "Institusi Pendidikan", + "nl": "Kantoor van onderwijsinstelling", + "no": "Utdanningsinstitusjon", + "pl": "Instytucja edukacyjna", + "pt-BR": "Escritório de instituição educacional", + "pt": "Instituição de ensino", + "ro": "Instituție Educațională", + "ru": "Администрация общеобразовательного учреждения", + "sk": "Vzdelávací inštitút", + "sl": "Izobraževalna ustanova", + "sr": "Образовна институција", + "sv": "Utbildningskontor", + "tr": "Eğitim Kurumu", + "uk": "Офіс освітнього закладу", + "vi": "Học viện", + "yue": "敎育機構", + "zh-CN": "教育机构", + "zh-HK": "敎育機構", + "zh-TW": "教育機構" + } + }, + "office/employment_agency": { + "title": { + "C": "Employment Agency", + "am": "የስራ ቅጥር ኤጀንሲ", + "ar": "مكتب وكالة توظيف", + "ast": "Axencia d'emplegu", + "bs": "Agencija za zapošljavanje", + "ca": "Oficina de treball", + "cs": "Úřad práce", + "da": "Arbejdsformidling", + "de": "Arbeitsvermittlung", + "el": "Γραφείο Ευρέσεως Εργασίας", + "en-GB": "Employment Agency", + "en": "Employment Agency", + "eo": "Dungoficejo", + "es": "Agencia de empleo", + "fa": "آژانس کاریابی", + "fi": "Työnvälitystoimisto", + "fr": "Agence pour l'emploi", + "gl": "Oficina de emprego", + "he": "סוכנות כוח אדם", + "hu": "Munkaügyi központ", + "id": "Agen Tenaga Kerja", + "is": "Atvinnumiðlun", + "it": "Agenzia per l'impiego", + "ja": "職業安定所", + "ko": "직업 소개소", + "lt": "Įdarbinimo agentūra", + "mk": "Агенција за вработување", + "ms": "Agensi Pekerjaan", + "nl": "Uitzendbureau", + "no": "Bemanningsbyrå", + "pl": "Agencja zatrudnienia", + "pt-BR": "Agência de Empregos", + "pt": "Agência de emprego", + "ro": "Agenție de Muncă", + "ru": "Кадровое агентство", + "sk": "Zamestnávateľská agentúra", + "sl": "Agencija za zaposlovanje", + "sr": "Служба за запошљавање", + "sv": "Arbetsförmedling", + "ta": "வேலைவாய்ப்பு முகவர்", + "tr": "İş ve İşçi Bulma Kurumu", + "uk": "Кадрова агенція", + "vi": "Cơ quan Giới thiệu Việc làm", + "yue": "薦人館", + "zh-CN": "就业机构", + "zh-HK": "職業介紹所", + "zh-TW": "就業服務站" + } + }, + "office/energy_supplier": { + "title": { + "C": "Energy Supplier Office", + "ar": "مكتب شركة مرافق الكهرباء", + "ast": "Oficina de distribuidora d'enerxía", + "cs": "Kancelář dodavatele elektřiny", + "da": "Energiforsyningskontor", + "de": "Energieversorgungsunternehmen", + "el": "Γραφείο Προμηθειών Ενέργειας", + "en-GB": "Energy Supplier Office", + "en": "Energy Supplier Office", + "eo": "Oficejo de elektr-provizanto", + "es": "Oficina de proveedor de energía", + "fa": "دفتر تأمین کننده انرژی", + "fi": "Energiayhtiö", + "fr": "Fournisseur d'énergie", + "gl": "Oficina de empresa enerxética", + "he": "משרד ספק חשמל", + "hr": "Uredi opskrbljivača energijom", + "hu": "Energiaszolgáltató irodája", + "is": "Orkusöluskrifstofa", + "it": "Ufficio azienda fornitrice di energia", + "ja": "エネルギー供給者", + "ko": "에너지 공급자 사무소", + "lv": "Elektrodevēja birojs", + "mk": "Енергостопанска служба", + "ms": "Pejabat Pembekal Tenaga", + "nl": "Kantoor van energiemaatschappij", + "pl": "Biuro dostawcy energii", + "pt-BR": "Escritório de Fornecedor de Energia", + "pt": "Distribuidor de energia", + "ru": "Офис поставщика электроэнергии", + "sr": "Електродистрибутивна канцеларија", + "sv": "Energibolag", + "tr": "Enerji Kurumu Şubesi", + "uk": "Електропостачальна компанія", + "vi": "Văn phòng Công ty Điện lực", + "zh-CN": "电力公司", + "zh-TW": "電力公司辦公室" + } + }, + "office/estate_agent": { + "title": { + "C": "Real Estate Office", + "am": "የሪል እስቴት ወኪል", + "ar": "مكتب عقاري", + "ast": "Axencia inmobiliaria", + "bs": "Agencija za nekretnine", + "ca": "Oficina d'agència immobiliària", + "cs": "Realitní kancelář", + "da": "Ejendomsmægler", + "de": "Immobilienmakler", + "el": "Κτηματομεσιτική Υπηρεσία", + "en-GB": "Estate Agent", + "en": "Real Estate Office", + "eo": "Oficejo de nemoveblaĵisto", + "es": "Inmobiliaria", + "fa": "دفتر املاک", + "fi": "Kiinteistönvälitystoimisto", + "fr": "Agence immobilière", + "gl": "Axencia inmobiliaria", + "he": "משרד נדל״ן", + "hu": "Ingatlaniroda", + "id": "Kantor Real Estate", + "is": "Fasteignasöluskrifstofa", + "it": "Agenzia immobiliare", + "ja": "不動産代理店", + "ko": "부동산 사무소", + "lt": "Nekilnojamo turto biuras", + "mk": "Агенција за недвижности", + "ms": "Pejabat Hartanah", + "nl": "Makelaarskantoor", + "no": "Eiendomsmegler", + "pl": "Biuro nieruchomości", + "pt-BR": "Imobiliária", + "pt": "Agência imobiliária", + "ro": "Oficiu de Proprietate Imobiliară", + "ru": "Агентство недвижимости", + "sk": "Realitná agentúra", + "sl": "Nepremičninska agencija", + "sr": "Канцеларија за некретнине", + "sv": "Mäklare/bostadsförmedling", + "tr": "Gayrimenkul Ofisi", + "uk": "Агенція з нерухомості", + "vi": "Văn phòng Bất động sản", + "yue": "管業處", + "zh-CN": "地产中介", + "zh-HK": "地產", + "zh-TW": "房地產仲介" + } + }, + "office/financial": { + "title": { + "C": "Financial Office", + "ar": "مكتب مالي", + "ast": "Oficina financiera", + "bs": "Finansijski ured", + "ca": "Oficina financera", + "cs": "Finanční úřad", + "da": "Finanskontor", + "de": "Finanzvermittlung", + "el": "Υπηρεσία Οικονομικών", + "en-GB": "Financial Office", + "en": "Financial Office", + "eo": "Financa oficejo", + "es": "Financiera", + "fa": "اداره مالی", + "fi": "Taloustoimisto", + "fr": "Bureau d'entreprise financière", + "gl": "Oficina financeira", + "he": "משרד פיננסי", + "hu": "Pénzügyi vállalat irodája", + "id": "Kantor Keuangan", + "is": "Fjármálafyrirtæki", + "it": "Ufficio finanziario", + "ja": "会計事務所(主に個人向け)", + "ko": "금융 사무소", + "lt": "Finansų biuras", + "mk": "Финансиска служба", + "ms": "Pejabat Kewangan", + "nl": "Kantoor van financiële instelling", + "pl": "Biuro finansowe", + "pt-BR": "Escritório Financeiro", + "pt": "Empresa financeira", + "ro": "Oficiu Financiar", + "ru": "Финансовая организация", + "sk": "Finančný úrad", + "sl": "Finančna agencija", + "sr": "Финансијска канцеларија", + "sv": "Bankkontor", + "tr": "Finans Ofisi", + "uk": "Фінансове управління", + "vi": "Văn phòng Tài chính", + "yue": "財務部寫字樓", + "zh-CN": "金融机构", + "zh-HK": "金融機構辦事處", + "zh-TW": "金融機構辦公室" + } + }, + "office/financial_advisor": { + "title": { + "C": "Financial Advisor", + "ar": "المستشار المالي", + "cs": "finanční poradce", + "de": "Finanzberatung", + "el": "Οικονομικός Σύμβουλος", + "en": "Financial Advisor", + "eo": "Oficejo de financa konsilisto", + "es": "Asesor financiero", + "fa": "مشاور مالی", + "fi": "Talousneuvonta", + "fr": "Conseiller financier", + "gl": "Asesor financeiro", + "he": "ייעוץ כלכלי", + "hu": "Pénzügyi Tanácsadó", + "it": "Consulente finanziario", + "ja": "ファイナンシャル・アドバイザー", + "mk": "Финансов советник", + "nl": "Financieel adviseur", + "pl": "Doradca finansowy", + "pt-BR": "Conselheiro financeiro", + "pt": "Conselheiro financeiro", + "sk": "Finančný poradca", + "sr": "Финансијски саветник", + "sv": "Finansiell rådgivare", + "tr": "Finans Danışmanı", + "uk": "Радник з фінансових питань", + "vi": "Cố vấn Tài chính", + "zh-CN": "经济办公室", + "zh-TW": "財務顧問" + } + }, + "office/forestry": { + "title": { + "C": "Forestry Office", + "ar": "مكتب إدارة الغابات", + "ca": "Oficina forestal", + "cs": "Kancelář lesní správy", + "da": "Skovbrugskontor", + "de": "Forstverwaltung", + "el": "Υπηρεσία Δασοκομίας", + "en-GB": "Forestry Office", + "en": "Forestry Office", + "eo": "Oficejo de arbar-mastrumo", + "es": "Oficina forestal", + "fa": "دفتر جنگلداری", + "fi": "Metsätalousvirasto", + "fr": "Administration forestière", + "gl": "Oficina forestal", + "he": "משרד יעור", + "hu": "Erdészeti iroda", + "is": "Skrifstofa skógarvarða", + "it": "Ufficio forestale", + "ja": "林業事務所", + "ko": "삼림 관리 사무소", + "lv": "Mežniecības birojs", + "mk": "Шумарска служба", + "ms": "Pejabat Perhutanan", + "nl": "Bosbeheerkantoor", + "no": "Skogbrukskontoret", + "pl": "Leśnictwo", + "pt-BR": "Escritório da Administração Florestal", + "pt": "Posto florestal", + "ru": "Лесоводство", + "sk": "Lesný správca", + "sr": "Шумарска канцеларија", + "sv": "Skogsbolag", + "tr": "Ormancılık Şubesi", + "uk": "Лісництво", + "vi": "Văn phòng Lâm nghiệp", + "zh-CN": "林务管理", + "zh-TW": "林業事業辦公室" + } + }, + "office/foundation": { + "title": { + "C": "Foundation Office", + "am": "ተቋም", + "ar": "مكتب مؤسسة", + "ast": "Oficina de fundación", + "ca": "Oficina d'una fundació", + "cs": "kancelář nadace", + "da": "Fondskontor", + "de": "Stiftung", + "el": "Υπηρεσία Ιδρύματος", + "en-GB": "Foundation Office", + "en": "Foundation Office", + "eo": "Oficejo de fondaĵo", + "es": "Oficina de fundación", + "fa": "دفتر بنیاد", + "fi": "Säätiö", + "fr": "Fondation", + "gl": "Oficina de fundación", + "he": "משרד קרן", + "hu": "Alapítvány irodája", + "is": "Skrifstofa sjálfseignarstofnunar", + "it": "Fondazione", + "ja": "財団", + "ko": "재단 사무소", + "mk": "Задолжбина", + "ms": "Pejabat Yayasan", + "nl": "Kantoor van stichting", + "pl": "Biuro fundacji", + "pt-BR": "Escritório de Fundação", + "pt": "Fundação", + "ru": "Фонд", + "sr": "Фондациона канцеларија", + "sv": "Stiftelse", + "tr": "Vakıf", + "uk": "Фундація", + "vi": "Quỹ Từ thiện", + "zh-CN": "基金办公室", + "zh-TW": "基金會辦公室" + } + }, + "office/government": { + "title": { + "C": "Government Office", + "am": "የመንግስት ድርጅት", + "ar": "مكتب/دائرة حكومية", + "ast": "Oficina gubernamental", + "bs": "Vladin ured", + "ca": "Oficina governamental", + "cs": "Státní úřad", + "da": "Statsligt kontor", + "de": "Behörde", + "dv": "ސަރުކާރު އޮފީސްތައް", + "el": "Κρατική Υπηρεσία", + "en-GB": "Government Office", + "en": "Government Office", + "eo": "Registara oficejo", + "es": "Oficina de gobierno", + "et": "Valitsuse kontor", + "fa": "دفتر دولتی", + "fi": "Julkishallinnon toimisto", + "fr": "Administration publique", + "gl": "Oficina gobernamental", + "he": "משרד ממשלתי", + "hr": "Državni ured", + "hu": "Kormányzati hivatal", + "id": "Kantor Pemerintah", + "is": "Opinber stofnun", + "it": "Ufficio governativo", + "ja": "行政機関事務所", + "ko": "관청", + "lt": "Vyriausybės biuras", + "lv": "Valdības birojs", + "mk": "Управна служба", + "ms": "Pejabat Kerajaan", + "nl": "Overheidskantoor", + "no": "Regjeringskontor", + "pl": "Biuro rządowe lub samorządowe", + "pt-BR": "Órgão governamental", + "pt": "Escritório governamental", + "ro": "Oficiu de Guvern", + "ru": "Государственное учреждение", + "sk": "Vládny úrad", + "sl": "Vladna agencija", + "so": "Xafiis Dowladeed", + "sr": "Владина канцеларија", + "sv": "Myndighet", + "ta": "அரசு அலுவலகம்", + "tr": "Devlet Dairesi", + "uk": "Уряд", + "vi": "Công sở", + "yue": "衙門", + "zh-CN": "政府办公点", + "zh-HK": "政府辦公室", + "zh-TW": "政府機關" + } + }, + "office/guide": { + "title": { + "C": "Tour Guide Office", + "ar": "مكتب الدليل السياحي", + "ca": "Oficina de guies turístics", + "cs": "Kancelář turistického průvodce", + "da": "Turguidekontor", + "de": "Fremdenführer", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Tour Guide Office", + "en": "Tour Guide Office", + "eo": "Oficejo de vojaĝ-gvido", + "es": "Oficina de turismo", + "fa": "دفتر راهنمای تور", + "fi": "Turistiopastoimisto", + "fr": "Bureau des guides", + "gl": "Oficina de guías turísticos", + "he": "משרד תיירות", + "hu": "Idegenvezetői iroda", + "is": "Skrifstofa leiðsögumanna", + "it": "Ufficio guide turistiche", + "ja": "ツアーガイド", + "ko": "여행 가이드 사무소", + "mk": "Туристички водич", + "ms": "Pejabat Pemandu Pelancong", + "nl": "Gidsenkantoor", + "pl": "Przewodnik turystyczny", + "pt-BR": "Escritório de guia turístico", + "pt": "Guia turístico", + "ru": "Туристические гиды", + "sr": "Туристичка канцеларија", + "sv": "Guidekontor", + "tr": "Tur Rehberi", + "uk": "Гід", + "vi": "Văn phòng Hướng dẫn Du lịch", + "zh-CN": "导游机构", + "zh-TW": "導遊辦公室" + } + }, + "office/insurance": { + "title": { + "C": "Insurance Office", + "am": "ኢንሹራንስ", + "ar": "مكتب تأمينات", + "ast": "Oficina de seguros", + "bs": "Ured za osiguranje", + "ca": "Oficina de companyia asseguradora", + "cs": "Pojišťovna", + "da": "Forsikringselskab", + "de": "Versicherungsbüro", + "el": "Ασφαλιστικό Γραφείο", + "en-GB": "Insurance Office", + "en": "Insurance Office", + "eo": "Oficejo de asekur-kompanio", + "es": "Aseguradora", + "fa": "دفتر بیمه", + "fi": "Vakuutustoimisto", + "fr": "Agence d'assurance", + "gl": "Oficina de seguros", + "he": "משרד ביטוח", + "hr": "Ured osiguravajućeg društva", + "hu": "Biztosító", + "id": "Kantor Asuransi", + "is": "Tryggingaskrifstofa", + "it": "Assicurazione", + "ja": "保険会社・代理店", + "ko": "보험 사무소", + "lt": "Draudimo įstaiga", + "lv": "Apdrošināšanas birojs", + "mk": "Осигурително друштво", + "ms": "Pejabat Insurans", + "nl": "Verzekeringskantoor", + "no": "Forsikringskontor", + "pl": "Biuro ubezpieczeń", + "pt-BR": "Seguradora", + "pt": "Agência de seguros", + "ro": "Oficiu de Asigurare", + "ru": "Страховая компания", + "sk": "Poistenie", + "sl": "Zavarovalnica", + "sr": "Осигуравајућа канцеларија", + "sv": "Försäkringskontor", + "tr": "Sigorta Acentesi", + "uk": "Страхова компанія", + "vi": "Văn phòng Bảo hiểm", + "yue": "保險公司寫字樓", + "zh-CN": "保险公司", + "zh-HK": "保險公司辦公室", + "zh-TW": "保險公司辦公室" + } + }, + "office/it": { + "title": { + "C": "Information Technology Office", + "am": "አይ.ቲ.", + "ar": "مكتب متخصصي تكنولوجيا المعلومات", + "ca": "Oficina de tecnologies de la informació", + "cs": "Kancelář informačních technologií", + "da": "Informationsteknologikontor", + "de": "IT-Unternehmen", + "el": "Υπηρεσία Πληροφοριών Τεχνολογίας", + "en-GB": "Information Technology Office", + "en": "Information Technology Office", + "eo": "Oficejo de inform-teĥnologia firmao", + "es": "Oficina de tecnología de la información", + "fa": "دفتر فناوری اطلاعات", + "fi": "Informaatioteknologian toimisto", + "fr": "Spécialiste en informatique", + "gl": "Oficina de tecnoloxías da información", + "he": "משרד שירותי מחשוב", + "hu": "Informatikai cég irodája", + "is": "Upplýsingatækniskrifstofa", + "it": "Ufficio società IT", + "ja": "IT企業", + "ko": "IT 사무소", + "mk": "Информатичка служба", + "ms": "Pejabat Teknologi Maklumat", + "nl": "IT-kantoor", + "pl": "Firma informatyczna", + "pt-BR": "Escritório de Empresa de Tecnologia da Informação", + "pt": "Escritório de Ti", + "ru": "Офис IT-компании", + "sr": "Информатичка канцеларија", + "sv": "IT-kontor", + "tr": "Bilişim Teknoloji Ofisi", + "uk": "ІТ компанія", + "vi": "Văn phòng Tin học", + "zh-CN": "IT公司", + "zh-TW": "資訊公司辦公室" + } + }, + "office/lawyer": { + "title": { + "C": "Law Office", + "am": "ጠበቃ", + "ar": "مكتب قانوني", + "ast": "Despachu d'abogaos", + "bs": "Pravni ured", + "ca": "Bufet d'advocats", + "cs": "Právní kancelář", + "da": "Advokatkontor", + "de": "Anwaltskanzlei", + "el": "Δικηγορικό Γραφείο", + "en-GB": "Law Office", + "en": "Law Office", + "eo": "Oficejo de leĝisto", + "es": "Despacho de abogados", + "fa": "دفتر حقوقی", + "fi": "Lakitoimisto", + "fr": "Cabinet d'avocats", + "gl": "Bufete", + "he": "משרד עורכי דין", + "hr": "Odvjetnički ured", + "hu": "Ügyvéd", + "id": "Kantor Hukum", + "is": "Lögmannaskrifstofa", + "it": "Studio legale", + "ja": "法律事務所", + "ko": "법률 사무소", + "lt": "Advokatų kontora", + "mk": "Правник", + "ms": "Pejabat Undang-undang", + "nl": "Advocatenkantoor", + "no": "Advokatkontor", + "pl": "Biuro prawnika", + "pt-BR": "Escritório de Advocacia", + "pt": "Escritório de advogados", + "ro": "Cabinet de Avocatură", + "ru": "Юридические услуги", + "sk": "Právna kancelária", + "sl": "Pravna pisarna", + "sr": "Адвокатска канцеларија", + "sv": "Advokatkontor", + "ta": "சட்ட அலுவலகம்", + "tr": "Hukuk Bürosu", + "uk": "Адвокатське бюро", + "vi": "Văn phòng Luật sư", + "yue": "律師事務所", + "zh-CN": "律师事务所", + "zh-HK": "律師事務所", + "zh-TW": "律師事務所" + } + }, + "office/moving_company": { + "title": { + "C": "Moving Company Office", + "ar": "مكتب شركة نقل", + "cs": "Kancelář stěhovací služby", + "da": "Flyttefirmakontor", + "de": "Umzugsfirma", + "el": "Υπηρεσία Μετακομίσεων", + "en-GB": "Moving Company Office", + "en": "Moving Company Office", + "eo": "Oficejo de transloĝiĝ-helpa firmao", + "es": "Oficina de mudanzas", + "fa": "دفتر خدمات باربری / حمل بار", + "fi": "Muuttoyhtiö", + "fr": "Entreprise de déménagement", + "gl": "Oficina de empresa de mudanzas", + "he": "משרד תובלה", + "hu": "Költöztetőcég irodája", + "is": "Skrifstofa flutningafyrirtækis", + "it": "Ufficio compagnia di traslochi", + "ja": "引っ越し業者", + "ko": "이삿짐센터", + "mk": "Преселувач", + "ms": "Pejabat Syarikat Pemindahan", + "nl": "Kantoor van verhuisbedrijf", + "pl": "Biuro firmy przeprowadzkowej", + "pt-BR": "Escritório de Companhia de Mudanças", + "pt": "Empresa de mudanças", + "ru": "Помощь при переезде", + "sv": "Flyttfirma", + "tr": "Taşıma Şirketi Ofisi", + "uk": "Перевезення речей", + "vi": "Văn phòng Công ty Chuyển nhà", + "zh-CN": "搬家公司", + "zh-TW": "搬家公司辦公室" + } + }, + "office/newspaper": { + "title": { + "C": "Newspaper Office", + "am": "ጋዜጣ", + "ar": "صحيفة", + "ast": "Redacción de periódicu", + "cs": "Novinářská redakce", + "da": "Aviskontor", + "de": "Zeitungsredaktion", + "el": "Γραφεία Εφημερίδας", + "en-GB": "Newspaper Office", + "en": "Newspaper Office", + "eo": "Oficejo de redakto", + "es": "Oficina de periódicos", + "fa": "دفتر روزنامه", + "fi": "Toimitus", + "fr": "Journal", + "gl": "Oficina de xornal", + "he": "משרד עיתונאות", + "hu": "Újságszerkesztőség", + "is": "Skrifstofur fréttablaðs", + "it": "Ufficio giornalistico", + "ja": "新聞社", + "ko": "신문사 사무소", + "mk": "Новинарска служба", + "ms": "Pejabat Akhbar", + "nl": "Krantredactie", + "no": "Avisredaksjon", + "pl": "Siedziba wydawcy gazety", + "pt-BR": "Escritório de Jornal", + "pt": "Jornal", + "ru": "Редакция газеты", + "sr": "Новинска канцеларија", + "sv": "Tidningsredaktion", + "ta": "செய்தித்தாள் அலுவலகம்", + "tr": "Gazete Şubesi", + "uk": "Редакція газети", + "vi": "Văn phòng Tờ báo", + "zh-CN": "报社", + "zh-TW": "報社辦公室" + } + }, + "office/ngo": { + "title": { + "C": "NGO Office", + "am": "መንግስታዊ ያልሆነ ድርጅት", + "ar": "مكتب المنظمات العامة الغير حكومية", + "ast": "Oficina d'ONG", + "bn": "এনজিও অফিস", + "bs": "Ured NVO", + "ca": "Oficina d'ONG", + "cs": "Nezisková organizace", + "da": "NGO-kontor", + "de": "NGO-Büro – Nichtregierungsorganisation", + "el": "Γραφείο ΜΚΟ", + "en-GB": "NGO Office", + "en": "NGO Office", + "eo": "Oficejo de neregistara organizaĵo", + "es": "Oficina de ONG", + "fa": "سازمان مردم نهاد", + "fi": "Kansalaisjärjestö", + "fr": "Organisation non gouvernementale", + "gl": "Oficina ONG", + "he": "משרד ארגון לא ממשלתי", + "hr": "Nevladina organizacija", + "hu": "Civil szervezet irodája", + "id": "Kantor LSM", + "is": "Skrifstofa frjálsra félagasamtaka", + "it": "Organizzazione non governativa", + "ja": "NGO事務所", + "ko": "NGO 사무소", + "mk": "НВО", + "ms": "Pejabat Pertubuhan Bukan Kerajaan", + "nl": "Kantoor van NGO", + "pl": "Biuro organizacji pozarządowej", + "pt-BR": "Sede de ONG", + "pt": "ONG", + "ro": "Oficiu NGO", + "ru": "Общественная организация", + "sk": "Nezisková organizácia", + "sl": "Sedež nevladne organizacije", + "sr": "НВО канцеларија", + "sv": "Icke-statlig organisation", + "tr": "Sivil Toplum Örgütü", + "uk": "Недержавна громадська організація", + "vi": "Tổ chức Phi chính phủ", + "yue": "志顠機構寫字樓", + "zh-CN": "非政府组织", + "zh-HK": "非政府機構辦公室", + "zh-TW": "非政府機構辦公室" + } + }, + "office/notary": { + "title": { + "C": "Notary Office", + "ar": "مكتب كتابة عدل / موثق", + "ast": "Notaría", + "ca": "Notaria", + "cs": "Notářství", + "de": "Notariat", + "el": "Γραφείο Συμβολαιογράφων", + "en-GB": "Notary Office", + "en": "Notary Office", + "eo": "Oficejo de notario", + "es": "Escribanía / Notaría", + "fa": "دفتر اسناد رسمی", + "fi": "Notaari", + "fr": "Notaire", + "gl": "Notaría", + "he": "משרד נוטריון", + "hu": "Közjegyző", + "is": "Skrifstofa lögbókanda", + "it": "Ufficio notarile", + "ja": "公証役場", + "ko": "공증사무소", + "lv": "Notāru birojs", + "mk": "Нотар", + "ms": "Pejabat Penyaksi Awam", + "nl": "Notariskantoor", + "pl": "Notariusz", + "pt-BR": "Tabelionato", + "pt": "Notário", + "ru": "Нотариус", + "sk": "Notár", + "sr": "Нотарска канцеларија", + "sv": "Notarie", + "tr": "Noter", + "uk": "Нотаріус", + "vi": "Văn phòng Công chứng", + "zh-CN": "公证处", + "zh-TW": "公證機構" + } + }, + "office/political_party": { + "title": { + "C": "Political Party Office", + "ar": "مكتب الحزب السياسي", + "cs": "Kancelář politické strany", + "da": "Politisk partikontor", + "de": "Parteibüro", + "el": "Γραφείο Πολιτικού Κόμματος", + "en": "Political Party Office", + "eo": "Oficejo de partio politika", + "es": "Oficina del partido político", + "fa": "دفتر حزب سیاسی", + "fi": "Puoluetoimisto", + "fr": "Bureau de parti politique", + "gl": "Oficina de partido político", + "he": "משרד של מפלגה", + "hu": "Pártiroda", + "it": "Ufficio di un partito", + "ja": "政党事務所", + "ko": "정당 사무소", + "mk": "Партиски штаб", + "nl": "Kantoor van een politieke partij", + "no": "Politisk Parti Kontor", + "pl": "Biuro partii politycznej", + "pt-BR": "Escritório de partido político", + "pt": "Sede partidária", + "ru": "Офис политической партии", + "sk": "Kancelária politicjkej strany", + "sr": "Канцеларија политичке странке", + "sv": "Partikontor", + "tr": "Siyasi Parti Ofisi", + "uk": "Офіс політичної партії", + "vi": "Văn phòng Đảng phái Chính trị", + "zh-CN": "政党办公室", + "zh-TW": "政黨辦公室" + } + }, + "office/private_investigator": { + "title": { + "C": "Private Investigator Office", + "ar": "مكتب محقق خاص", + "ca": "Oficina d'investigador privat", + "cs": "Soukromá detektivní kancelář", + "da": "Privatdetektivkontor", + "de": "Privatdetektiv", + "el": "Γραφείο Ιδιωτικού Ερευνητή", + "en-GB": "Private Investigator Office", + "en": "Private Investigator Office", + "eo": "Oficejo de detektivo", + "es": "Oficina de investigador privado", + "fa": "دفتر تحقیقات خصوصی", + "fi": "Yksityisetsivä", + "fr": "Enquêteur privé/détective", + "gl": "Oficina de investigador privado", + "he": "משרד חוקר פרטי", + "hu": "Magánnyomozó-iroda", + "is": "Einkaspæjaraskrifstofa", + "it": "Ufficio agenzia investigativa privata", + "ja": "私立探偵社", + "ko": "사설탐정 사무소", + "lv": "Privātizmeklētēja birojs", + "mk": "Приватен иследувач", + "ms": "Pejabat Penyiasat Peribadi", + "nl": "Kantoor van privédetective", + "no": "Privat Etterforskning Kontor", + "pl": "Prywatny detektyw", + "pt-BR": "Escritório de detetive particular", + "pt": "Detetive privado", + "ru": "Частный сыщик", + "sr": "Детективска канцеларија", + "sv": "Privatdetektiv", + "ta": "தனியார் துப்பு துலக்கும் அலுவலகம்", + "tr": "Dedektif", + "uk": "Приватний детектив", + "vi": "Văn phòng Thám tử Tư", + "zh-CN": "私家侦探事务所", + "zh-TW": "私家偵探辦公室" + } + }, + "office/quango": { + "title": { + "C": "Quasi-NGO Office", + "ar": "مكتب منظمة غير حكومية شبه مستقلة", + "ca": "Oficina de quasi-ONG", + "cs": "kancelář kvaziautonomní nevládní organizace", + "de": "Mittlerorganisation", + "en-GB": "Quasi-NGO Office", + "en": "Quasi-NGO Office", + "eo": "Oficejo de duon-registara organizaĵo", + "es": "Oficina ONG cuasiautónoma", + "fi": "Kansalaisjärjestön toimisto", + "fr": "Autorité administrative indépendante", + "gl": "Oficina ONG cuasiautónoma", + "he": "משרד ארגון חצי לא ממשלתי", + "hu": "Kvázicivil szervezet irodája", + "is": "Félagasamtök í samstarfi við hið opinbera (quango)", + "it": "Ufficio di una simil ONG", + "ja": "準非政府機関", + "ko": "준정부조직 사무소", + "mk": "Квази-НВО", + "ms": "Pejabat Separa NGO", + "nl": "Kantoor van quango", + "pl": "Biuro organizacji prawie pozarządowej", + "pt-BR": "Escritório de Organização Não Governamental Quase Autônoma", + "pt": "ONG subsidiada", + "ru": "Полу-независимая некоммерческая организация", + "sr": "Квази-непрофитна канцеларија", + "sv": "Kvasiautonom icke-statlig organisation", + "tr": "Yarı Özel Sivil Toplum Örgütü", + "uk": "Квазі-НГО", + "vi": "Tổ chức Bán độc lập Phi chính phủ", + "zh-CN": "准非政府组织", + "zh-TW": "準非政府組織辦公室" + } + }, + "office/religion": { + "title": { + "C": "Religious Office", + "am": "ሃይማኖት", + "ar": "مكتب ديني", + "ca": "Oficina religiosa", + "cs": "Náboženská kancelář", + "da": "Religiøst kontor", + "de": "Büro einer Glaubensgemeinschaft", + "el": "Θρησκευτική Υπηρεσία", + "en": "Religious Office", + "eo": "Kancelario religia", + "es": "Oficina religiosa", + "fa": "دفاتر مذهبی", + "fi": "Uskonnollinen toimisto", + "fr": "Bureau religieux", + "gl": "Oficina relixiosa", + "he": "משרד לנושאי דת", + "hu": "Egyházi iroda", + "it": "Ufficio religioso", + "ja": "教団事務所", + "ko": "종교 사무소", + "mk": "Верска служба", + "nl": "Religieus kantoor", + "no": "Religiøst Kontor", + "pl": "Biuro organizacji religijnej", + "pt-BR": "Escritório religioso", + "pt": "Escritório religioso", + "ru": "Офис религиозной организации", + "sr": "Верска канцеларија", + "sv": "Religiöst kontor", + "tr": "Dini Ofis", + "uk": "Релігійна організація", + "vi": "Văn phòng Tôn giáo", + "zh-CN": "宗教团体办公室", + "zh-TW": "宗教辦公處所" + } + }, + "office/research": { + "title": { + "C": "Research Office", + "am": "ምርምር ቢሮ", + "ar": "مكتب بحوث", + "ast": "Despachu d'investigación", + "bs": "Ured za istraživanje", + "ca": "Oficines d'R+D", + "cs": "Výzkumný ústav", + "da": "Forskning", + "de": "Forschungseinrichtung", + "el": "Γραφείο Ερευνών", + "en-GB": "Research Office", + "en": "Research Office", + "eo": "Oficejo de scienca esplorado", + "es": "Oficina de investigación", + "fa": "سازمان تحقیقاتی و پژوهشی", + "fi": "Tutkimustoimisto", + "fr": "Organisme de recherche", + "gl": "Oficina de investigación", + "he": "משרד מחקר", + "hr": "Ured za istraživanje", + "hu": "Kutatóintézet", + "id": "Kantor Riset", + "is": "Rannsóknarstofa", + "it": "Istituto di Ricerca", + "ja": "研究所", + "kn": "ಸಂಶೋಧನಾ ಕಛೇರಿ", + "ko": "연구 사무소", + "lt": "Tyrimų tarnyba", + "mk": "Истражувачка служба", + "ms": "Pejabat Penyelidikan", + "nl": "Onderzoekskantoor", + "no": "Forskningskontor", + "pl": "Biuro badawcze", + "pt-BR": "Escritório de Pesquisa", + "pt": "Centro de investigação", + "ro": "Birou de Cercetare", + "ru": "Научно-исследовательская организация", + "sk": "Výskum", + "sl": "Raziskave", + "sr": "Истраживачка канцеларија", + "sv": "Forskning och utveckling", + "ta": "ஆராய்ச்சி அலுவலகம்", + "tr": "Araştırma Kurumu", + "uk": "Дослідницька лабораторія", + "vi": "Văn phòng Nghiên cứu", + "yue": "研究所", + "zh-CN": "研究所", + "zh-HK": "研究所", + "zh-TW": "研究機構" + } + }, + "office/security": { + "title": { + "C": "Security Office", + "ar": "مكتب مؤسسات الحراسات الأمنية", + "ca": "Oficina de seguretat", + "cs": "kancelář hlídače", + "de": "Sicherheitsdienstleister", + "el": "Υπηρεσία Ασφαλείας", + "en": "Security Office", + "eo": "Oficejo de garda firmao", + "es": "Oficina de seguridad", + "fr": "Bureau de la Sécurité", + "hu": "Biztonsági iroda", + "it": "Ufficio della Vigilanza", + "ja": "警備会社", + "ko": "보안 사무소", + "mk": "Обезбедување", + "nl": "Kantoor van de beveiliging", + "pl": "Biuro ochrony", + "pt-BR": "Escritório de segurança", + "pt": "Gabinete de segurança privado", + "sv": "Bevakningskontor", + "tr": "Emniyet Amirliği", + "uk": "Охоронна фірма", + "vi": "Văn phòng Dịch vụ Bảo vệ", + "zh-CN": "安保办公室", + "zh-TW": "保全辦公室" + } + }, + "office/surveyor": { + "title": { + "C": "Surveyor Office", + "ar": "مكتب مساح أرضي", + "cs": "Zeměměřický úřad", + "de": "Vermessungstechniker", + "el": "Γραφείο Επιθεωρητών", + "en-GB": "Surveyor Office", + "en": "Surveyor Office", + "eo": "Oficejo de analiza firmao", + "es": "Oficina de agrimensor", + "fa": "دفتر نظرسنجی", + "fi": "Maanmittaustoimisto", + "fr": "Géomètre", + "gl": "Oficina de agrimensor", + "he": "משרד מודד", + "hu": "Földmérő", + "is": "Landmælingaskrifstofa", + "it": "Ufficio di supervisione", + "ja": "測量会社", + "ko": "측량기사 사무소", + "mk": "Земјомерна служба", + "ms": "Pejabat Juruukur", + "nl": "Kantoor van landmeter/expert/risicoschatter/schademeter/opiniepeilers/statisticus", + "no": "Landmålerkontor", + "pl": "Biuro geodety", + "pt-BR": "Escritório de Pesquisas ou Inspeções", + "pt": "Empresa de peritagem", + "ru": "Организация оценки и статистики", + "sr": "Геодетска канцеларија", + "sv": "Undersökning/inspektion", + "ta": "நில அளவாய்வாளர் அலுவலகம்", + "tr": "Harita Mühendisliği", + "uk": "Експет-оцінщик", + "vi": "Văn phòng Khảo sát", + "yue": "量地官寫字樓", + "zh-CN": "调查评估办公室", + "zh-TW": "測繪公司辦公室" + } + }, + "office/tax_advisor": { + "title": { + "C": "Tax Advisor Office", + "ar": "مستشار الضرائب", + "cs": "Kancelář daňového poradce", + "da": "Skatterådgivningskontor", + "de": "Steuerberatungskanzlei", + "el": "Γραφείο Φορολογικού Συμβούλου", + "en-GB": "Tax Advisor Office", + "en": "Tax Advisor Office", + "eo": "Oficejo de impost-konsilo", + "es": "Oficina de asesor fiscal", + "fa": "دفتر مشاور مالیاتی", + "fi": "Veroneuvonta", + "fr": "Conseiller fiscal", + "gl": "Oficina de xestor fiscal", + "he": "משרד יועץ מס", + "hu": "Adótanácsadó", + "is": "Skattaráðgjafarskrifstofa", + "it": "Centro assistenza fiscale", + "ja": "税理士事務所", + "ko": "세무사 사무소", + "mk": "Даночен советник", + "ms": "Pejabat Penasihat Cukai", + "nl": "Kantoor van belastingsadviseur", + "no": "Skatterådgiverkontor", + "pl": "Doradca podatkowy", + "pt-BR": "Escritório de Assessoria Fiscal", + "pt": "Escritório de contabilidade", + "ru": "Офис консультанта по налогам", + "sk": "Daňový poradca", + "sr": "Канцеларија пореског саветника", + "sv": "Skatterådgivning", + "tr": "Vergi Danışmanlığı", + "uk": "Податкова консультація", + "vi": "Dich vụ Khai thuế", + "zh-CN": "税务顾问机构", + "zh-TW": "稅務顧問辦公室" + } + }, + "office/telecommunication": { + "title": { + "C": "Telecom Office", + "am": "ቴሌኮሙኒኬሽን", + "ar": "مكتب شركات اتصالات", + "ast": "Oficina de telecomunicaciones", + "bn": "টেলিকম অফিস", + "bs": "Ured telekoma", + "ca": "Oficina de telecomunicacions", + "cs": "Telekomunikační společnost", + "da": "Teleselskabskontor", + "de": "Telekommunikationsunternehmen", + "el": "Υπηρεσία Τηλεπικοινωνιών", + "en-GB": "Telecom Office", + "en": "Telecom Office", + "eo": "Oficejo de telekomunikada firmao", + "es": "Oficina de telecomunicaciones", + "fa": "دفتر مخابراتی", + "fi": "Tietoliikennetoimisto", + "fr": "Agence de télécommunications", + "gl": "Oficina de telecomunicacións", + "he": "משרד חברת תקשורת", + "hr": "Ured za telekomunikacije", + "hu": "Távközlési cég irodája", + "id": "Kantor Telekomunikasi", + "is": "Samskiptaskrifstofa", + "it": "Ufficio di telecomunicazioni", + "ja": "通信会社事務所", + "ko": "통신 사무소", + "lt": "Telekomunikacijų biuras", + "lv": "Telekomunikāciju birojs", + "mk": "Телекомуникациска служба", + "ms": "Pejabat Telekom", + "nl": "Telecomkantoor", + "no": "Telekontor", + "pl": "Biuro firmy telekomunikacyjnej", + "pt-BR": "Escritório de Telecomunicações", + "pt": "Empresa de telecomunicações", + "ro": "Oficiu Telecom", + "ru": "Офис телекоммуникационной компании", + "sk": "Telekomunikácie", + "sl": "Telekomunikacijska pisarna", + "sr": "Телекомуникациона канцеларија", + "sv": "Telekom", + "ta": "தொலைத்தொடர்பு அலுவலகம்", + "tr": "Haberleşme Bürosu", + "uk": "Телекомунікаційна компанія", + "vi": "Văn phòng Viễn thông", + "yue": "電話公司寫字樓", + "zh-CN": "电信办公室", + "zh-HK": "電訊公司辦公室", + "zh-TW": "電信公司辦事處" + } + }, + "office/therapist": { + "title": { + "C": "Therapist Office", + "ar": "المعالج", + "ca": "Oficina de terapeuta", + "cs": "Terapeutická kancelář", + "da": "Terapikontor", + "de": "Therapeut", + "el": "Υπηρεσία Θεραπευτών", + "en-GB": "Therapist Office", + "en": "Therapist Office", + "eo": "Kabineto de terapiisto", + "es": "Oficina de terapeuta", + "fa": "دفتر روان‌درمان", + "fi": "Terapia", + "fr": "Thérapeute", + "gl": "Oficina de terapeuta", + "he": "משרד מטפל", + "is": "Meðferðarstofa", + "it": "Studio psichiatrico", + "ja": "セラピスト(オフィス)", + "ko": "치료사 사무소", + "lv": "Terapieta birojs", + "mk": "Терапевт", + "ms": "Pejabat Ahli Terapi", + "nl": "Kantoor van therapeut", + "no": "Terapeutkontor", + "pl": "Terapeuta", + "pt-BR": "Escritório de Terapeuta", + "pt": "Terapeuta", + "ru": "Офис терапевта", + "sk": "Terapeut", + "sr": "Терапеутска канцеларија", + "sv": "Terapeut", + "tr": "Terapist", + "uk": "Фізіотерапевт", + "vi": "Văn phòng Trị liệu", + "zh-CN": "治疗师工作室", + "zh-HK": "治療師辦公室", + "zh-TW": "治療師辦公室" + } + }, + "office/water_utility": { + "title": { + "C": "Water Utility Office", + "ar": "مكتب شركة مياه", + "cs": "vodohospodářská kancelář", + "da": "Vandforsyningskontor", + "de": "Wasserversorgungsunternehmen", + "el": "Υπηρεσία Εκμετάλλευσης Νερού", + "en-GB": "Water Utility Office", + "en": "Water Utility Office", + "eo": "Oficejo de akv-provizanta firmao", + "es": "Oficina de servicios públicos de agua", + "fi": "Vesilaitostoimisto", + "fr": "Agence de l'eau", + "gl": "Oficina de servizos públicos de auga", + "he": "משרד לשירות ציבורי - מים", + "hu": "Vízműiroda", + "is": "Skrifstofa vatnsveitu", + "it": "Ufficio azienda di fornitura dell'acqua", + "ja": "水道工事店", + "ko": "수도사업소", + "mk": "Водоводна служба", + "ms": "Pejabat Pembekal Air", + "nl": "Kantoor van watermaatschappij", + "pl": "Biuro wodociągowe", + "pt-BR": "Escritório de Companhia de Água", + "pt": "Fornecedor de água", + "ru": "Офис водопроводной компании", + "sv": "Vattenleverantör", + "tr": "Su Müdürlüğü", + "uk": "Водоканал", + "vi": "Văn phòng Nhà cung cấp Nước uống", + "zh-CN": "水务设施机构", + "zh-HK": "水上設施辦公室", + "zh-TW": "自來水公司" + } + }, + "place/farm": { + "title": { + "C": "Farm", + "ar": "مزرعة", + "ast": "Granxa", + "ca": "Granja", + "cs": "Zemědělská usedlost", + "da": "Gård", + "de": "Bauernhof", + "el": "Φάρμα", + "en-GB": "Farm", + "en": "Farm", + "eo": "Farmejo (setlejo)", + "es": "Granja", + "et": "farm", + "fa": "مزرعه", + "fi": "Maatila", + "fr": "Ferme isolée", + "gl": "Granxa", + "he": "חווה", + "hu": "Tanya", + "id": "Peternakan", + "is": "Býli", + "it": "Fattoria o cascina", + "ja": "農場", + "kn": "ತೋಟ", + "ko": "농장", + "lt": "Ūkis", + "lv": "Zemnieku saimniecība", + "mk": "Фарма", + "ms": "Ladang", + "nl": "Boerderij", + "no": "Gård", + "pl": "Farma / gospodarstwo rolne", + "pt-BR": "Fazenda", + "pt": "Quinta", + "ro": "Fermă", + "ru": "Ферма", + "sk": "Farma", + "sl": "Kmetija", + "sr": "Фарма", + "sv": "Gård", + "ta": "பண்ணை", + "tr": "Çiftlik", + "uk": "Ферма", + "vi": "Trại", + "yue": "農場", + "zh-CN": "农场", + "zh-HK": "農場", + "zh-TW": "農場" + } + }, + "place/city": { + "title": { + "C": "City", + "af": "Stad", + "am": "ከተማ", + "ar": "مدينة كبيرة", + "ast": "Ciudá", + "bg": "Град над 100 000", + "bn": "শহর", + "bs": "Grad", + "ca": "Ciutat", + "cs": "Velkoměsto", + "da": "Storby", + "de": "Großstadt", + "dv": "ސިިޓީ", + "el": "Πόλη", + "en-GB": "City", + "en": "City", + "eo": "Urbego", + "es": "Ciudad", + "et": "Linn", + "fa": "شهر", + "fi": "Suuri kaupunki", + "fr": "Grande ville (plus de 100 000 habitants)", + "gl": "Cidade", + "he": "עיר", + "hr": "Grad s više od 100 000 stanovnika", + "hu": "Nagyváros", + "id": "Kota", + "is": "Borg", + "it": "Città", + "ja": "市制地方自治体", + "kn": "ನಗರ", + "ko": "시", + "lt": "Miestas", + "lv": "Lielpilsēta", + "mk": "Град", + "ms": "Bandar", + "nl": "Stad", + "no": "By", + "pl": "Miasto", + "pt-BR": "Cidade Maior", + "pt": "Cidade", + "ro": "Oraș", + "ru": "Большой город", + "sk": "Veľkomesto", + "sl": "Velemesto", + "so": "Magaalo", + "sq": "Qytet", + "sr": "Град", + "sv": "Större stad", + "ta": "மாநகரம்", + "te": "నగరం", + "tr": "Şehir", + "uk": "Місто", + "vi": "Thành phố", + "yue": "城", + "zh-CN": "城市", + "zh-HK": "城市", + "zh-TW": "城市", + "zh": "城市" + } + }, + "place/city_block": { + "title": { + "C": "City Block", + "ar": "مربع سكني", + "cs": "Městský blok", + "de": "Häuserblock", + "el": "Οικοδομικό Τετράγωνο", + "en": "City Block", + "eo": "Dombloko", + "es": "Manzana urbana", + "fa": "بلوک شهری", + "fi": "Kortteli", + "fr": "Îlot urbain", + "gl": "Mazá urbana", + "he": "מבנן עירוני", + "hu": "Háztömb", + "is": "Byggingareitur", + "it": "Isolato urbano", + "ja": "街区(日本では未定義)", + "ko": "도시 블록", + "mk": "Градски блок", + "nl": "Huizenblok", + "no": "Bykvartal", + "pl": "Kwartał", + "pt-BR": "Quarteirão", + "pt": "Quarteirão", + "sr": "Градска четврт", + "sv": "Kvarter", + "tr": "Şehir Bloğu", + "uk": "Квартал в місті", + "vi": "Ô phố", + "zh-CN": "城市街区", + "zh-TW": "城市街區" + } + }, + "place/hamlet": { + "title": { + "C": "Hamlet", + "af": "Dorpie", + "am": "ከተማ", + "ar": "قرية صغيرة / هجرة", + "ast": "Aldea", + "bg": "Махала", + "bs": "Zaselak", + "ca": "Llogaret", + "cs": "Osada", + "da": "Mindre beboet område", + "de": "Weiler", + "el": "Οικισμός", + "en-GB": "Hamlet", + "en": "Hamlet", + "eo": "Vilaĝeto", + "es": "Aldea", + "fa": "دهکده", + "fi": "Pikkukylä", + "fr": "Lieu-dit ou hameau", + "gl": "Aldea", + "he": "כפריר", + "hr": "Zaseok", + "hu": "Falucska", + "id": "Dusun", + "is": "Þéttbýliskjarni", + "it": "Piccolo borgo", + "ja": "Hamlet", + "ko": "반", + "lt": "Viensėdis", + "mk": "Заселок", + "ms": "Dukuh", + "nl": "Dorp/gehucht/buurtschap", + "no": "Bosetning", + "pl": "Przysiółek", + "pt-BR": "Lugarejo", + "pt": "Aldeia", + "ro": "Cătun", + "ru": "Деревня", + "sk": "Osada", + "sl": "Zaselek", + "sr": "Засеок", + "sv": "By", + "tr": "Mezra", + "uk": "Хутір", + "vi": "Thôn", + "yue": "村仔", + "zh-CN": "小村庄", + "zh-HK": "小村莊", + "zh-TW": "村莊", + "zh": "村庄" + } + }, + "place/island": { + "title": { + "C": "Island", + "af": "Eiland", + "ar": "جزيرة", + "ast": "Islla", + "bg": "Остров", + "bn": "দ্বীপ", + "bs": "Ostrvo", + "ca": "Illa", + "cs": "Ostrov", + "da": "Ø", + "de": "Insel", + "dv": "ރަށް", + "el": "Νησί", + "en-GB": "Island", + "en": "Island", + "eo": "Insulo", + "es": "Isla", + "et": "Saar", + "fa": "جزیره", + "fi": "Saari", + "fr": "Île", + "gl": "Illa", + "he": "אי", + "hr": "Otok", + "hu": "Sziget", + "id": "Pulau", + "is": "Eyja", + "it": "Isola", + "ja": "島", + "kn": "ದ್ವೀಪ", + "ko": "섬", + "lt": "Sala", + "lv": "Sala", + "mk": "Остров", + "ms": "Pulau", + "nl": "Eiland", + "no": "Øy", + "pl": "Wyspa", + "pt-BR": "Ilha", + "pt": "Ilha", + "ro": "Insulă", + "ru": "Остров", + "sk": "Ostrov", + "sl": "Otok", + "so": "Jasiirad", + "sr": "Острво", + "sv": "Ö", + "ta": "தீவு", + "tr": "Ada", + "uk": "Острів", + "vi": "Đảo", + "yue": "洲", + "zh-CN": "岛屿", + "zh-HK": "島嶼", + "zh-TW": "島嶼", + "zh": "岛屿" + } + }, + "place/islet": { + "title": { + "C": "Islet", + "ar": "جزيرة صغيرة", + "ca": "Illot", + "cs": "Ostrůvek", + "da": "Holm", + "de": "Kleine Insel", + "el": "Νησίδα", + "en-GB": "Islet", + "en": "Islet", + "eo": "Insuleto", + "es": "Islote", + "et": "Laid", + "fa": "جزیره کوچک", + "fi": "Luoto", + "fr": "Îlot", + "gl": "Illote", + "he": "איון", + "hu": "Kis sziget", + "is": "Hólmi", + "it": "Isoletta", + "ja": "小島", + "ko": "작은 섬", + "mk": "Островче", + "ms": "Anak Pulau", + "nl": "Eilandje < 1 km²", + "no": "Liten øy", + "pl": "Wysepka na wodzie", + "pt-BR": "Ilhota", + "pt": "Ilhéu", + "ru": "Островок", + "sr": "Острвце", + "sv": "Holme", + "tr": "Adacık", + "uk": "Острівець", + "vi": "Đảo Nhỏ", + "yue": "洲仔", + "zh-CN": "小岛", + "zh-TW": "小島" + } + }, + "place/isolated_dwelling": { + "title": { + "C": "Isolated Dwelling", + "af": "Afgeleë blyplek", + "ar": "مساكن متفرقة ومنعزلة", + "ast": "Vivienda aisllada", + "bg": "Изолирано жилище", + "bs": "Izolirano stanovanje", + "ca": "Vivenda aïllada", + "cs": "Samota", + "da": "Lille beboet område (1-2 hustande)", + "de": "Einzelsiedlung", + "el": "Απομονωμένες Κατοικίες", + "en-GB": "Isolated Dwelling", + "en": "Isolated Dwelling", + "eo": "Solstaranta domo", + "es": "Vivienda aislada", + "fa": "مسکن ایزوله", + "fi": "Yksittäinen asunto", + "fr": "Lieu-dit habité (1 ou 2 habitations)", + "gl": "Vivenda illada", + "he": "מבנה מבודד", + "hr": "Usamljena kućanstva", + "hu": "Magányos lakóhely", + "is": "Einöngruð búseta", + "it": "Abitazioni isolate", + "ja": "孤立した(2世帯以下の)居住区", + "ko": "독립 주택", + "lt": "Izoliuota gyvenvietė", + "mk": "Оддалечено живеалиште", + "ms": "Tempat Tinggal Terpencil", + "nl": "Afgelegen woning(en)", + "pl": "Pojedyncze odosobnione zabudowania", + "pt-BR": "Moradia Isolada", + "pt": "Povoado menor e isolado", + "ru": "Хутор", + "sk": "Samota", + "sl": "Osamljeno bivališče", + "sr": "Изоловано пребивалиште", + "sv": "Isolerad boplats", + "tr": "Mesken", + "uk": "Маєток", + "vi": "Chỗ ở Hẻo lánh", + "yue": "孤離居所", + "zh-CN": "孤立居所", + "zh-HK": "孤立民居", + "zh-TW": "獨立聚落", + "zh": "孤立的民房" + } + }, + "place/locality": { + "title": { + "C": "Locality", + "af": "Ligging", + "ar": "موضع لمكان غير مأهول", + "ast": "Llugar despobláu", + "bg": "Местност", + "bn": "অঞ্চল", + "bs": "Lokalitet", + "ca": "Indret", + "cs": "Neobydlené místo", + "da": "Lokalitet", + "de": "Örtlichkeit", + "dv": "ރަށްްފުށު", + "el": "Τοποθεσία", + "en-GB": "Locality", + "en": "Locality", + "eo": "Loko neloĝata", + "es": "Paraje", + "fa": "محل خالی از سکنه", + "fi": "Paikkakunta", + "fr": "Lieu-dit non habité", + "gl": "Lugar", + "he": "אזור בלתי מיושב", + "hr": "Lokalitet", + "hu": "Lakatlan hely", + "id": "Daerah Sekitar", + "is": "Staðfesti", + "it": "Località non popolata", + "ja": "地形名", + "kn": "ಸ್ಥಳ", + "ko": "소재지명", + "lt": "Vietovė", + "mk": "Месност", + "ms": "Lokaliti", + "nl": "Veldnaam", + "pl": "Miejsce nazwane", + "pt-BR": "Localidade", + "pt": "Local ermo e desabitado", + "ro": "Localitate", + "ru": "Урочище, местность", + "sk": "Lokalita", + "sl": "Kraj (OSM: ODSVETOVANO)", + "so": "Deegaanka", + "sr": "Локалитет", + "sv": "Plats", + "tr": "Mevkii", + "uk": "Місцевість", + "vi": "Địa phương", + "yue": "地方", + "zh-CN": "地方", + "zh-HK": "地區", + "zh-TW": "地點(無人定居)", + "zh": "地点(无人定居)" + } + }, + "place/neighbourhood": { + "title": { + "C": "Neighborhood", + "ar": "حي سكني", + "ast": "Barriu", + "ca": "Barri", + "cs": "Část obce", + "da": "Nabolag", + "de": "Wohngegend", + "el": "Γειτονιά", + "en-GB": "Neighborhood", + "en": "Neighborhood", + "eo": "Najbaraĵo", + "es": "Barrio pequeño / Vecindario", + "fa": "محله", + "fi": "Naapurusto", + "fr": "Voisinage", + "gl": "Veciñanza ou subarrio", + "he": "שכונה", + "hr": "Susjedstvo", + "hu": "Környék", + "id": "Tetangga", + "is": "Hverfi", + "it": "Quartiere", + "ja": "小字", + "ko": "동", + "lt": "Kaiminystė", + "mk": "Маало", + "ms": "Kejiranan", + "nl": "Buurt", + "no": "Nabolag", + "pl": "Sąsiedztwo", + "pt-BR": "Vizinhança", + "pt": "Bairro", + "ro": "Cartier", + "ru": "Исторический район со сложившимся именем", + "sk": "Susedstvo", + "sl": "Soseska", + "sr": "Суседство", + "sv": "Kvarter", + "ta": "நகர்ப்பகுதி", + "tr": "Mahalle", + "uk": "Житловий масив", + "vi": "Hàng xóm", + "zh-CN": "街坊社区 / 小区", + "zh-HK": "近鄰", + "zh-TW": "鄰里" + } + }, + "place/plot": { + "title": { + "C": "Plot", + "ar": "قطعة الأرض", + "ca": "Parcel·la", + "cs": "Parcela", + "da": "Matrikel", + "de": "Grundstück", + "el": "Οικόπεδο", + "en-GB": "Plot", + "en": "Plot", + "eo": "Parcelo", + "es": "Parcela", + "et": "Krunt", + "fa": "طرح / قطعه زمین", + "fi": "Tontti", + "fr": "Parcelle", + "gl": "Parcela", + "he": "חלקה", + "hu": "Telek", + "is": "Skiki", + "it": "Particella catastale", + "ja": "小区画", + "ko": "필지", + "mk": "Парцела", + "ms": "Plot", + "nl": "Perceel", + "no": "Tomt", + "pl": "Działka", + "pt-BR": "Lote", + "pt": "Lote de terreno", + "ru": "Земельный участок", + "sr": "Парцела", + "sv": "Tomt", + "tr": "Arsa", + "uk": "Ділянка", + "vi": "Miếng đất", + "zh-TW": "地籍" + } + }, + "place/quarter": { + "title": { + "C": "Sub-Borough / Quarter", + "ar": "منطقة فرعية / ربع", + "cs": "Městská čtvrť", + "da": "Nabolag / Kvarter", + "de": "Gegend / Quartier", + "el": "Συνοικία", + "en-GB": "Sub-Borough / Quarter", + "en": "Sub-Borough / Quarter", + "eo": "Kvartalo", + "es": "Sub-borough / Quarter", + "fa": "توابع منطقه / محله", + "fi": "Alakeskus", + "fr": "Quartier", + "gl": "Sub-municipio / Distrito", + "he": "רובע", + "hu": "Kis városrész", + "is": "Úthverfishluti / Hverfi", + "it": "Sotto-distretto / Quartiere", + "ja": "大字 / (市内の)町", + "ko": "하위 자치구 / 지구", + "mk": "Маало / Четврт", + "nl": "Wijk", + "pl": "Kwartał", + "pt-BR": "Sub-bairro", + "pt": "Zona de cidade", + "ro": "Cartier", + "ru": "Подрайон / квартал", + "sl": "Mestna četrt", + "sv": "Kvarter / Under-Borough", + "tr": "Semt", + "uk": "Мікро-район/Квартал", + "vi": "Khu", + "zh-CN": "街道办/片区", + "zh-HK": "自治市分區 / 小區", + "zh-TW": "自治市區" + } + }, + "place/square": { + "title": { + "C": "Square", + "ar": "ساحة", + "ast": "Plaza", + "ca": "Plaça", + "cs": "Náměstí", + "da": "Plads", + "de": "Platz", + "el": "Πλατεία", + "en-GB": "Square", + "en": "Square", + "eo": "Placo", + "es": "Plaza cívica", + "fa": "فضای عمومی باز (احاطه شده با ساختمان)", + "fi": "Aukio", + "fr": "Place", + "gl": "Praza", + "he": "כיכר", + "hu": "Tér", + "is": "Torg", + "it": "Piazza", + "ja": "広場(都心部)", + "ko": "광장", + "lv": "Skvērs", + "mk": "Плоштад", + "nl": "Plein", + "no": "Torg", + "pl": "Plac publiczny", + "pt-BR": "Praça Pavimentada", + "pt": "Praça ou largo", + "ro": "Piață", + "ru": "Площадь", + "sk": "Námestie", + "sl": "Trg", + "sr": "Трг", + "sv": "Torg", + "ta": "சதுக்கம்", + "tr": "Meydan", + "uk": "Майдан", + "vi": "Quảng trường", + "yue": "前地", + "zh-CN": "广场", + "zh-HK": "廣場", + "zh-TW": "廣場" + } + }, + "place/suburb": { + "title": { + "C": "Borough / Suburb", + "am": "አካባቢ", + "ar": "ضاحية", + "cs": "Čtvrť / předměstí", + "da": "Bydistrikt / Bydel", + "de": "Stadtteil / Vorort", + "el": "Προάστιο", + "en-GB": "Borough / Suburb", + "en": "Borough / Suburb", + "eo": "Suburbo", + "es": "Borough / Suburbio", + "et": "Eeslinn", + "fa": "منطقه ، ناحیه", + "fi": "Kaupunginosa / lähiö", + "fr": "Banlieue", + "gl": "Barrio ou suburbio", + "he": "פרוור", + "hu": "Városrész", + "is": "Jaðarbyggð / Úthverfi", + "it": "Sobborgo", + "ja": "区", + "ko": "자치구 / 근교", + "mk": "Населба", + "nl": "Stadsdeel", + "pl": "Dzielnica", + "pt-BR": "Bairro", + "pt": "Subúrbio", + "ro": "Suburbie", + "ru": "Район / Пригород", + "sk": "Predmestie", + "sl": "Predmestje", + "sv": "Förort / Borough", + "tr": "Mahalle", + "uk": "Район в місті/Передмістя", + "vi": "Quận", + "zh-CN": "市内区域", + "zh-HK": "自治市 / 郊區", + "zh-TW": "郊區" + } + }, + "place/town": { + "title": { + "C": "Town", + "af": "Dorp", + "ar": "مدينة", + "ast": "Villa", + "bg": "Град под 100 000", + "bn": "উপনগর", + "bs": "Gradić", + "ca": "Ciutat", + "cs": "Město", + "da": "By", + "de": "Kleinstadt", + "dv": "އަވަށް", + "el": "Κωμόπολη", + "en-GB": "Town", + "en": "Town", + "eo": "Urbo", + "es": "Pueblo / Ciudad pequeña", + "et": "Linn", + "fa": "شهر", + "fi": "Pieni kaupunki / taajama", + "fr": "Ville (de 10 000 à 100 000 habitants)", + "gl": "Cidade pequena", + "he": "עירייה", + "hr": "Gradić", + "hu": "Kisváros", + "id": "Kota", + "is": "Bær", + "it": "Cittadina", + "ja": "町制地方自治体", + "kn": "ಪಟ್ಟಣ", + "ko": "읍·면·동·로동자구", + "lt": "Miestelis", + "lv": "Pilsēta", + "mk": "Гратче", + "ms": "Bandar", + "nl": "Plaats", + "no": "Tettsted", + "pl": "Miasto", + "pt-BR": "Cidade Menor", + "pt": "Vila", + "ro": "Oraș", + "ru": "Город", + "sk": "Mesto", + "sl": "Mesto", + "so": "Magaalo", + "sr": "Варош", + "sv": "Mellanstor stad", + "ta": "நகரம்", + "te": "పట్టణం", + "tr": "Kasaba", + "uk": "Місто (невелике)", + "vi": "Thị xã", + "yue": "鎮", + "zh-CN": "城镇", + "zh-HK": "鎮", + "zh-TW": "鄉鎮市區", + "zh": "城镇" + } + }, + "place/village": { + "title": { + "C": "Village", + "af": "Dorpie", + "ar": "قرية", + "ast": "Pueblu", + "bg": "Село", + "bn": "গ্রাম", + "bs": "Selo", + "ca": "Poble", + "cs": "Vesnice", + "da": "Landsby", + "de": "Dorf", + "el": "Χωριό", + "en-GB": "Village", + "en": "Village", + "eo": "Vilaĝo", + "es": "Población / Aldea", + "et": "Küla", + "fa": "روستا", + "fi": "Kylä", + "fr": "Village (de 100 à 10 000 habitants)", + "gl": "Vila", + "he": "כפר", + "hr": "Selo", + "hu": "Falu", + "id": "Desa", + "is": "Þorp", + "it": "Paese", + "ja": "村制の地方自治体", + "kn": "ಹಳ್ಳಿ", + "ko": "리·통", + "lt": "Kaimas", + "lv": "Ciems", + "mk": "Село", + "ms": "Kampung", + "nl": "Dorp", + "no": "Tettsted", + "pl": "Wieś", + "pt-BR": "Povoado", + "pt": "Sede de Freguesia", + "ro": "Sat", + "ru": "Село (более 300 жителей)", + "sk": "Dedina", + "sl": "Vas", + "sr": "Село", + "sv": "Mindre samhälle", + "ta": "கிராமம்", + "te": "గ్రామం", + "tr": "Köy", + "uk": "Село", + "vi": "Làng", + "yue": "村", + "zh-CN": "村庄", + "zh-HK": "鄉村", + "zh-TW": "村里", + "zh": "村庄" + } + }, + "shop/boutique": { + "title": { + "C": "Boutique", + "af": "Boetiek", + "ar": "بوتيك", + "ast": "Boutique", + "bg": "Бутик", + "bn": "বুটিক", + "bs": "Butik", + "ca": "Boutique", + "cs": "Módní butik", + "da": "Boutique", + "de": "Boutique", + "el": "Μπουτίκ", + "en-GB": "Boutique", + "en": "Boutique", + "eo": "Mod-butiko (altprezaj vestaĵoj)", + "es": "Boutique", + "et": "Butiik", + "fa": "بوتیک", + "fi": "Muotiliike", + "fr": "Petit magasin de mode", + "gl": "Boutique", + "he": "בוטיק", + "hr": "Butik", + "hu": "Butik", + "id": "Butik", + "is": "Búð", + "it": "Boutique", + "ja": "ブティック", + "ko": "부티크", + "lt": "Parduotuvė", + "lv": "Veikals", + "mk": "Бутик", + "nl": "Boetiek", + "no": "Klesbutikk", + "pl": "Butik", + "pt-BR": "Loja de Alta Costura", + "pt": "Boutique", + "ro": "Boutique", + "ru": "Бутик", + "sk": "Butik", + "sl": "Butik", + "sr": "Бутик", + "sv": "Boutique (Dyra kläder och accessoarer)", + "tr": "Butik Mağaza", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "yue": "時裝店", + "zh-CN": "精品店", + "zh-HK": "時裝店", + "zh-TW": "服飾店", + "zh": "精品店" + } + }, + "shop/fashion": { + "title": { + "C": "Fashion Store", + "ar": "متجر موضة", + "ast": "Tienda de moda", + "ca": "Botiga de roba", + "cs": "Módní zboží", + "da": "Modebutik", + "de": "Modegeschäft", + "el": "Κατάστημα Μόδας", + "en-GB": "Fashion Shop", + "en": "Fashion Store", + "eo": "Mod-butiko", + "es": "Tienda de moda", + "et": "Moekauplus", + "fa": "فروشگاه مد", + "fi": "Muotiliike", + "fr": "Boutique de mode", + "gl": "Tenda de moda", + "he": "חנות אופנה", + "hr": "Modni dućan", + "hu": "Divatüzlet", + "id": "Toko Mode", + "is": "Tískuverslun", + "it": "Negozio di moda", + "ja": "ファッション店", + "ko": "패션 가게", + "lt": "Mados parduotuvė", + "lv": "Modes veikals", + "mk": "Модна продавница", + "nl": "Modewinkel", + "no": "Motebutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Moda", + "pt": "Loja de moda", + "ro": "Magazin de Modă", + "ru": "Магазин модной брендовой одежды", + "sk": "Obchod s módnymi doplnkami", + "sl": "Trgovina z modnimi oblačili", + "sr": "Бутик", + "sv": "Modebutik", + "tr": "Giyim Mağazası", + "uk": "Бутік", + "vi": "Tiệm Thời trang", + "zh-CN": "服装店", + "zh-HK": "時裝店", + "zh-TW": "時尚店" + } + }, + "shop/vacant": { + "title": { + "C": "Vacant Shop", + "af": "Leë winkel", + "ar": "محل شاغر", + "ast": "Tienda balera", + "bg": "Свободна търговска площ", + "bs": "Prodavnica za iznajmljivanje", + "ca": "Botiga per ocupar", + "cs": "Neobsazený obchod", + "da": "Ledig butik (ingen salg pt)", + "de": "Leerstehendes Geschäft", + "el": "Ξενοίκιαστο Κατάστημα", + "en-GB": "Vacant Shop", + "en": "Vacant Shop", + "eo": "Forlasita vendejo", + "es": "Local disponible", + "et": "Vaba kaubanduspind", + "fa": "فروشگاه خالی", + "fi": "Tyhjä liikehuoneisto", + "fr": "Commerce désaffecté", + "gl": "Local baleiro", + "he": "חנות ריקה", + "hr": "Prazan dućanski prostor", + "hu": "Kiadó üzlethelyiség", + "id": "Toko Kosong", + "is": "Tóm verslun", + "it": "Negozio vuoto", + "ja": "空き店舗, シャッター店舗", + "ko": "빈 가게", + "lt": "Tuščia parduotuvė", + "mk": "Празна продавница", + "nl": "Leegstaande winkel", + "pl": "Pusty lokal sklepowy", + "pt-BR": "Loja Desocupada", + "pt": "Loja desocupada", + "ro": "Magazin Vacant", + "ru": "Помещение под открытие магазина", + "sk": "Prázdny obchod", + "sl": "Nedelujoča trgovina", + "sr": "Упражњена продавница", + "sv": "Tom lokal", + "te": "ఖాళీ దుకాణం", + "tr": "Boş Dükkan", + "uk": "Здається в оренду", + "vi": "Tiệm Trống", + "yue": "吉舖", + "zh-CN": "空置铺位", + "zh-HK": "空置商舖", + "zh-TW": "閒置商店", + "zh": "空置铺位" + } + }, + "shop/agrarian": { + "title": { + "C": "Farm Supply Shop", + "ar": "متجر المنتجات والمستلزمات الزراعية", + "ca": "Agrobotiga", + "cs": "Farmářská prodejna", + "da": "Grovvareforretning", + "de": "Agrarmarkt", + "el": "Προμήθειες Φάρμας", + "en": "Farm Supply Shop", + "eo": "Terkultur-investaĵa vendejo", + "es": "Tienda de suministros agrícolas", + "et": "Põllumajandustarvete kauplus", + "fa": "فروشگاه لوازم کشاورزی", + "fi": "Maataloustarvikeliike", + "fr": "Magasin d'agriculture", + "gl": "Tenda de subministracións agrícolas", + "he": "חנות אביזרי חקלאות", + "hu": "Gazdabolt", + "is": "Landbúnaðarvöruverslun", + "it": "Negozio di attrezzatura agricola", + "ja": "農業用品店", + "ko": "농업 용품 가게", + "mk": "Земјоделска продавица", + "nl": "Landbouwbenodigdhedenwinkel", + "pl": "Sklep rolniczy", + "pt-BR": "Loja de Suprimentos Agrícolas", + "pt": "Loja de produtos agrícolas", + "ru": "Сельскохозяйственный магазин", + "sr": "Продавница пољопривредне опреме", + "sv": "Jordbruksaffär", + "tr": "Çiftlik Malzemeleri Dükkanı", + "uk": "Сільгосптовари", + "vi": "Tiệm Nông nghiệp", + "zh-CN": "农场供应店", + "zh-TW": "農業資材行" + } + }, + "shop/alcohol": { + "title": { + "C": "Liquor Store", + "af": "Drankwinkel", + "ar": "متجر خمور", + "ast": "Llicorería", + "bg": "Магазин за алкохол", + "bs": "Prodavnica alkoholnih pića", + "ca": "Botiga de licors", + "cs": "Prodejna alkoholu", + "da": "Vinforhandler", + "de": "Spirituosenladen", + "el": "Κάβα Ποτών", + "en-GB": "Off licence (Alcohol shop)", + "en": "Liquor Store", + "eo": "Alkohola vendejo", + "es": "Licorería", + "et": "Alkoholipood", + "fa": "مغازه مشروبات الکلی", + "fi": "Alkoholimyymälä", + "fr": "Magasin de vente d'alcool", + "gl": "Licoraría", + "he": "חנות משקאות חריפים", + "hr": "Prodavaonica alkoholnih pića", + "hu": "Alkoholüzlet", + "id": "Toko Minuman", + "is": "Vínbúð", + "it": "Negozio di liquori", + "ja": "酒店", + "kn": "ಸಾರಾಯಿ ಅಂಗಡಿ", + "ko": "주류상", + "lt": "Alkoholinių gėrimų parduotuvė", + "lv": "Alkoholisko dzērienu veikals", + "mk": "Продавница за алкохолни пијалаци", + "nl": "Slijterij", + "no": "Vinutsalg", + "pl": "Sklep monopolowy", + "pt-BR": "Loja de alcoólicos licenciada", + "pt": "Loja de bebidas alcoólicas", + "ro": "Magazin de Băuturi Alcoolice", + "ru": "Алкогольный магазин", + "sk": "Obchod s alkoholom", + "sl": "Trgovina z alkoholnimi pijačami", + "sr": "Продавница алкохолних пића", + "sv": "Vin-och-spritaffär", + "ta": "மதுபானக் கடை", + "tr": "İçki Dükkanı", + "uk": "Алкогольні напої", + "vi": "Tiệm Rượu", + "yue": "酒莊", + "zh-CN": "酒水店", + "zh-HK": "酒類專賣店", + "zh-TW": "酒類專賣店", + "zh": "酒品店" + } + }, + "shop/anime": { + "title": { + "C": "Anime / Manga Shop", + "ar": "متجر أنيمي / مانغا", + "cs": "obchod s Anime / Manga", + "de": "Anime- / Manga-Geschäft", + "el": "Κατάστημα Anime / Manga", + "en": "Anime / Manga Shop", + "eo": "Anime-/manga-vendejo", + "es": "Tienda de anime / manga", + "fa": "فروشگاه انیمه / مانگا (کمیک ژاپنی)", + "fi": "Anime-/mangaliike", + "fr": "Boutique de manga et anime", + "gl": "Tenda de anime / manga", + "he": "חנות אנימה/מנגה", + "hu": "Anime képregényekkel kapcsolatos bolt", + "it": "Negozio di Anime / Manga", + "ja": "アニメショップ", + "ko": "애니메이션/만화 가게", + "mk": "Продавница за аниме/манга", + "nl": "Anime-/Mangawinkel", + "pl": "Sklep z mangą i anime", + "pt-BR": "Loja de Anime / Manga", + "pt": "Loja de animé", + "ru": "Магазин аниме / манги", + "sr": "Продавница манга и аниме", + "sv": "Anime/Manga-affär", + "tr": "Anime / Manga Dükkanı", + "uk": "Аніме/манга магазин", + "vi": "Tiệm Anime/Manga", + "zh-CN": "动漫/漫画店", + "zh-TW": "動畫/漫畫店" + } + }, + "shop/antiques": { + "title": { + "C": "Antiques Shop", + "ar": "متجر تحف وأنتيكات", + "ast": "Anticuariu", + "ca": "Botiga d'antiguitats", + "cs": "Starožitnictví", + "da": "Antikvitetsforretning", + "de": "Antiquitätenhändler", + "el": "Παλαιοπωλείο", + "en-GB": "Antiques Shop", + "en": "Antiques Shop", + "eo": "Antikvaĵa vendejo", + "es": "Tienda de antigüedades", + "et": "Antikvariaat", + "fa": "فروشگاه عتیقه‌جات", + "fi": "Antiikkiliike", + "fr": "Antiquaire", + "gl": "Tenda de antigüidades", + "he": "חנות עתיקות", + "hr": "Antikvarijat", + "hu": "Régiségkereskedés", + "id": "Toko Barang Antik", + "is": "Antíkverslun", + "it": "Antiquario", + "ja": "古美術品店", + "ko": "골동품 가게", + "lt": "Atikvarų parduotuvė", + "lv": "Antikvariāts", + "mk": "Старинарница", + "nl": "Antiquair", + "no": "Antikvariat / antikvitetshandel", + "pl": "Antykwariat", + "pt-BR": "Loja de Antiguidades", + "pt": "Loja de antiguidades", + "ro": "Anticariat", + "ru": "Магазин антиквариата", + "sk": "Obchod so tarožitnosťami", + "sl": "Starinarnica", + "sr": "Антикварница", + "sv": "Antikaffär", + "ta": "பழம்பொருள் அங்காடி", + "tr": "Antika Dükkanı", + "uk": "Антикварний магазин", + "vi": "Tiệm Đồ Cổ", + "zh-CN": "古董店", + "zh-HK": "古董店", + "zh-TW": "古董店" + } + }, + "shop/appliance": { + "title": { + "C": "Appliance Store", + "ar": "متجر الأجهزة المنزلية", + "cs": "Prodejna spotřební elektroniky", + "da": "Hvidevareforretning", + "de": "Haushaltselektrogerätegeschäft", + "el": "Κατάστημα Συσκευών", + "en-GB": "Appliance Shop", + "en": "Appliance Store", + "eo": "Elektronikaĵega vendejo", + "es": "Tienda de electrodomésticos", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kodinkonemyymälä", + "fr": "Magasin d'électroménager", + "gl": "Tenda de electrodomésticos", + "he": "חנות כלים חשמלים", + "hu": "Háztartásigép-bolt", + "is": "Raftækjaverslun", + "it": "Negozio di elettrodomestici", + "ja": "白物家電販売店(大型製品)", + "ko": "가전 제품 가게", + "mk": "Продавница за апарати и уреди", + "nl": "Huishoudelijkeapparatuurwinkel", + "no": "Hvitevarebutikk", + "pl": "Sklep z AGD", + "pt-BR": "Loja de Eletrodomésticos", + "pt": "Loja de eletrodomésticos \"brancos\"", + "ro": "Magazin de Electrocasnice", + "ru": "Магазин бытовой техники", + "sl": "Splošna tehnična trgovina", + "sv": "Vitvaror", + "tr": "Beyaz Eşya Mağazası", + "uk": "Побутова техніка", + "vi": "Tiệm Gia dụng", + "zh-CN": "家用电器店", + "zh-HK": "電器店", + "zh-TW": "家用電器店" + } + }, + "shop/art": { + "title": { + "C": "Art Store", + "ar": "متجر الفنون", + "ast": "Galería d'arte", + "ca": "Botiga d'art", + "cs": "Obchod s uměním", + "da": "Kunstbutik", + "de": "Kunsthandlung", + "el": "Κατάστημα Τέχνης", + "en-GB": "Art Shop", + "en": "Art Store", + "eo": "Artaĵa vendejo", + "es": "Tienda de arte", + "et": "Kunstitarvete kauplus", + "fa": "فروشگاه آثار هنری", + "fi": "Taideliike", + "fr": "Marchand d'art", + "gl": "Tenda de arte", + "he": "חנות לחפצי אומנות", + "hr": "Trgovina umjetninama", + "hu": "Műalkotásbolt", + "is": "Listmunaverslun", + "it": "Negozio di opere d'arte", + "ja": "美術品販売店", + "ko": "미술품 가게", + "lt": "Meno parduotuvė", + "lv": "Mākslas veikals", + "mk": "Продавница за уметнички дела", + "nl": "Kunstwinkel", + "no": "Kunsthandel", + "pl": "Sklep z dziełami sztuki", + "pt-BR": "Loja de Arte", + "pt": "Loja de artigos de arte", + "ro": "Magazin de Artă", + "ru": "Магазин произведений искусства", + "sk": "Umelecký obchod", + "sl": "Trgovina z umetninami", + "sr": "Продавница уметнина", + "sv": "Konstaffär", + "ta": "கலை அங்காடி", + "tr": "Sanat Mağazası", + "uk": "Художній салон", + "vi": "Tiệm Nghệ phẩm", + "zh-CN": "艺术品店", + "zh-HK": "藝術商店", + "zh-TW": "藝術商店" + } + }, + "shop/baby_goods": { + "title": { + "C": "Baby Goods Store", + "ar": "متجر مستلزمات الأطفال", + "ca": "Botiga per a nadons", + "cs": "Potřeby pro děti", + "da": "Babyudstyrsbutik", + "de": "Babysachengeschäft", + "el": "Κατάστημα Βρεφικών Ειδών", + "en-GB": "Baby Goods Shop", + "en": "Baby Goods Store", + "eo": "Bebaĵa vendejo", + "es": "Tienda de productos para bebé", + "et": "Beebipood", + "fa": "فروشگاه کالای کودک", + "fi": "Vauvatarvikeliike", + "fr": "Magasin de produits pour bébés", + "gl": "Tenda de produtos para meniños", + "he": "חנות לדברי תינוקות", + "hr": "Trgovina za bebe", + "hu": "Bababolt", + "id": "Toko Perlengkapan Bayi", + "is": "Barnavöruverslun", + "it": "Negozio di prodotti per l'infanzia", + "ja": "赤ちゃん用品店", + "ko": "유아 용품 가게", + "lt": "Vaikų prekių parduotuvė", + "mk": "Продавница за бебешка опрема", + "nl": "Babyartikelenwinkel", + "no": "Babyutstyrsbutikk", + "pl": "Sklep z artykułami dla dzieci i niemowląt", + "pt-BR": "Loja de artigos para bebês", + "pt": "Loja de acessórios para bebés", + "ro": "Magazin de Produse pentru Bebeluși", + "ru": "Магазин детских товаров", + "sk": "Obchod s detskými potrebami", + "sl": "Trgovina za otroke", + "sr": "Продавница беби-опреме", + "sv": "Babyprodukter", + "tr": "Bebek Malzemeleri Mağazası", + "uk": "Товари для немовлят", + "vi": "Tiệm Đồ Sơ sinh", + "zh-CN": "婴儿用品店", + "zh-HK": "嬰兒用品店", + "zh-TW": "嬰兒用品店" + } + }, + "shop/bag": { + "title": { + "C": "Bag/Luggage Store", + "ar": "متجر حقائب وأمتعة", + "ca": "Botiga d'equipatges", + "cs": "Obchod se zavazadly", + "da": "Taske/Kuffertbutik", + "de": "Taschenladen", + "el": "Κατάστημα αποσκευών", + "en-GB": "Bag/Luggage Shop", + "en": "Bag/Luggage Store", + "eo": "Saka/valiza vendejo", + "es": "Tienda de bolsos / equipaje", + "et": "Kotipood", + "fa": "فروشگاه کیف/چمدان", + "fi": "Matkalaukkumyymälä", + "fr": "Bagagerie", + "gl": "Tenda de maletas", + "he": "חנות מזוודות", + "hr": "Trgovina sa torbama", + "hu": "Táska- és bőröndbolt", + "id": "Toko Tas/Koper", + "is": "Töskubúð", + "it": "Negozio di borse e valigie", + "ja": "バッグ/カバン店", + "ko": "가방/여행가방 가게", + "lt": "Kuprinių/lagaminų parduotuvė", + "lv": "Somu / Čemodānu veikals", + "mk": "Продавница за чанти, торби и куфери", + "nl": "Zak-/Reiskofferwinkel", + "no": "Veskebutikk", + "pl": "Sklep z torebkami/walizkami", + "pt-BR": "Loja de Bolsas/Malas", + "pt": "Loja de malas / bagagem", + "ro": "Magazin de Bagaje", + "ru": "Магазин сумок и саквояжа", + "sk": "Obchod s kuframi", + "sl": "Trgovina za prtljago", + "sv": "Väskaffär", + "tr": "Çanta/Valiz Mağazası", + "uk": "Магазин з продажу валіз", + "vi": "Tiệm Túi", + "zh-CN": "箱包店", + "zh-HK": "袋/行李箱店", + "zh-TW": "包包/行李店" + } + }, + "shop/bakery": { + "title": { + "C": "Bakery", + "af": "Bakkery", + "ar": "مخبز", + "ast": "Panadería", + "bg": "Пекарна", + "bn": "বেকারি", + "bs": "Pekara", + "ca": "Fleca", + "cs": "Pekařství", + "da": "Bager", + "de": "Bäckerei", + "el": "Αρτοποιείο", + "en-GB": "Bakery", + "en": "Bakery", + "eo": "Panejo", + "es": "Panadería", + "et": "Pagariäri", + "fa": "نانوایی", + "fi": "Leipomo", + "fr": "Boulangerie", + "gl": "Panadaría", + "he": "מאפייה", + "hr": "Pekara", + "hu": "Pékség", + "id": "Toko Roti", + "is": "Bakarí", + "it": "Panificio", + "ja": "パン屋", + "kn": "ಅಟ್ಟಂಗಡಿ", + "ko": "제과점", + "lt": "Kepykla", + "lv": "Konditoreja", + "mk": "Пекарница", + "nl": "Bakkerij", + "no": "Bakeri", + "pl": "Piekarnia", + "pt-BR": "Padaria", + "pt": "Padaria", + "ro": "Brutărie", + "ru": "Булочная", + "sk": "Pekáreň", + "sl": "Pekarna", + "sq": "Furrë buke", + "sr": "Пекара", + "sv": "Bageri", + "ta": "அடுமனை", + "tr": "Fırın", + "uk": "Булочна", + "vi": "Tiệm Bánh", + "yue": "麪飽舖同餅家", + "zh-CN": "烘焙店", + "zh-HK": "麵包西餅店", + "zh-TW": "麵包店", + "zh": "面包店" + } + }, + "shop/bathroom_furnishing": { + "title": { + "C": "Bathroom Furnishing Store", + "ar": "متجر أثاث واكسسوارات الحمامات", + "ca": "Botiga de mobles de bany", + "cs": "Vybavení koupelen", + "da": "Badeværelseindretningsbutik", + "de": "Badeinrichtungsgeschäft", + "el": "Κατάστημα εξοπλισμού μπάνιου", + "en-GB": "Bathroom Furnishing Shop", + "en": "Bathroom Furnishing Store", + "eo": "Lavĉambr-akcesoraĵa vendejo", + "es": "Tienda de muebles de baño", + "et": "Santehnika kauplus", + "fa": "فروشگاه لوازم حمام", + "fi": "Kylpyhuoneliike", + "fr": "Fournitures pour salles de bain", + "gl": "Tenda de mobles de baño", + "he": "חנות רהיטי שירותים/מקלחת", + "hr": "Prodavaonica kupaonske opreme", + "hu": "Fürdőszobafelszerelés-bolt", + "id": "Toko Perlengkapan Kamar Mandi", + "is": "Baðinnréttingaverslun", + "it": "Negozio di prodotti per il bagno", + "ja": "浴室用品店", + "ko": "화장실 기구 가게", + "lt": "Vonios baldų parduotuvė", + "mk": "Продавница за санитарии", + "nl": "Badkamermeubelwinkel", + "no": "Baderomsbutikk", + "pl": "Sklep z wyposażeniem łazienek", + "pt-BR": "Loja de Mobiliário de Banheiros", + "pt": "Loja de assessórios para casas de banho", + "ro": "Magazin de Mobilier pentru Băi", + "ru": "Магазин продающий мебель для ванных комнат", + "sk": "Obchod s kúpelňami", + "sl": "Trgovina s kopalniško opremo", + "sv": "Badrumsinredning", + "tr": "Züccaciye", + "uk": "Магазин сантехніки", + "vi": "Tiệm Bán đồ Phòng tắm", + "zh-CN": "浴室家具店", + "zh-HK": "浴室配件店", + "zh-TW": "衛浴用品店" + } + }, + "shop/beauty": { + "title": { + "C": "Beauty Shop", + "af": "Skoonheidswinkel", + "am": "ውበት / ስፓ", + "ar": "محل تجميل", + "ast": "Cosmética", + "bg": "Козметик", + "bs": "Salon ljepote", + "ca": "Botiga de cosmètics", + "cs": "Kosmetický salón", + "da": "Skønhedsforhandler", + "de": "Schönheitssalon", + "el": "Κατάστημα Ομορφιάς", + "en-GB": "Beauty Shop", + "en": "Beauty Shop", + "eo": "Salono de beligado", + "es": "Salón de belleza", + "et": "Ilusalong", + "fa": "سالن زیبایی", + "fi": "Kauneushoitola", + "fr": "Salon de beauté", + "gl": "Salón de beleza", + "he": "חנות מוצרי יופי/טיפוח", + "hr": "Kozmetički salon", + "hu": "Szépségszalon", + "id": "Salon Kecantikan", + "is": "Fegrunarstofa", + "it": "Salone di bellezza", + "ja": "美容サービス", + "ko": "뷰티 샵", + "lt": "Grožio salonas", + "lv": "Skaistumveikals", + "mk": "Салон за убавина", + "nl": "Schoonheidssalon", + "no": "Skjønnhetsbutikk", + "pl": "Salon urody", + "pt-BR": "Salão de Beleza", + "pt": "Centro de estética", + "ro": "Magazin Beauty", + "ru": "Салон красоты", + "sk": "Bižutéria", + "sl": "Lepotilni salon", + "sr": "Салон лепоте", + "sv": "Skönhetssalong", + "ta": "அழகுசாதனக் கடை", + "tr": "Güzellik Salonu", + "uk": "Cалон краси", + "vi": "Tiệm Mỹ phẩm", + "yue": "美容院", + "zh-CN": "美容店", + "zh-HK": "美容院", + "zh-TW": "美容店", + "zh": "美容店" + } + }, + "shop/bed": { + "title": { + "C": "Bedding/Mattress Store", + "ar": "متجر مراتب ولوازم الفراش", + "ca": "Botiga de matalassos", + "cs": "Prodejna postelí", + "da": "Sengetøj / Madras forhandler", + "de": "Betten/Matratzengeschäft", + "el": "Κατάστημα κρεβατιών/στρωμάτων", + "en-GB": "Bed Shop", + "en": "Bedding/Mattress Store", + "eo": "Lita/matraca vendejo", + "es": "Tienda de ropa de cama / Colchonería", + "et": "Magamistoa kauba pood", + "fa": "فروشگاه کالای خواب/ تشک", + "fi": "Vuodetarvikeliike", + "fr": "Magasin de literie", + "gl": "Tenda de colchóns/roupa de cama", + "he": "חנות מזרנים", + "hr": "Trgovina opreme za krevete", + "hu": "Ágy- és matracbolt", + "id": "Toko Selimut/Matras", + "is": "Rúm/Dýnuverslun", + "it": "Negozio di letti/materassi", + "ja": "寝具店", + "ko": "침구/매트리스 가게", + "lv": "Gultasveļas / Matraču veikals", + "mk": "Продавница за кревети и постелнина", + "nl": "Bed-/Matrassenwinkel", + "no": "Sengebutikk", + "pl": "Sklep z łóżkami/materacami", + "pt-BR": "Loja de Camas e Colchões", + "pt": "Loja de camas / colchões", + "ro": "Magazin de Saltele", + "ru": "Магазин матрасов и постельных принадлежностей", + "sk": "Obchod s posteľami/matracmi", + "sl": "Trgovina s posteljnino in žimnicami", + "sr": "Продавница душека", + "sv": "Sängaffär", + "tr": "Yatak Mağazası", + "uk": "Магазин постільних приналежностей", + "vi": "Tiệm Nệm", + "zh-CN": "床上用品店", + "zh-HK": "寢具/床褥店", + "zh-TW": "床具/寐具店" + } + }, + "shop/beverages": { + "title": { + "C": "Beverage Store", + "af": "Koeldrankwinkel", + "am": "የለስላሳ መጠጦች ማከፋፈያ", + "ar": "محل بيع مشروبات ومرطبات", + "ast": "Venta de bebíes", + "bg": "Магазин за алкохол и цигари", + "bs": "Prodavnica pića", + "ca": "Botiga de begudes", + "cs": "Prodejna nápojů", + "da": "Vinforhandler", + "de": "Getränkehandel", + "el": "Αναψυκτήριο", + "en-GB": "Beverages Shop", + "en": "Beverage Store", + "eo": "Trinkaĵa vendejo", + "es": "Tienda de bebidas", + "et": "Joogikauplus", + "fa": "فروشگاه آشامیدنی", + "fi": "Viinakauppa", + "fr": "Magasin de boissons", + "gl": "Tenda de bebidas", + "he": "חנות משקאות", + "hr": "Trgovina s pićima", + "hu": "Italbolt", + "id": "Toko Minuman", + "is": "Drykkjarbúð", + "it": "Negozio di bevande", + "ja": "飲料店", + "ko": "음료 가게", + "lt": "Gėrimų parduotuvė", + "lv": "Dzērienu veikals", + "mk": "Продавница за пијалаци", + "nl": "Drankenwinkel", + "no": "Øl- og vinutsalg", + "pl": "Sklep z napojami", + "pt-BR": "Loja de Bebidas", + "pt": "Loja de bebidas", + "ro": "Magazin de Băuturi", + "ru": "Магазин по продаже алкогольных и безалкогольных напитков", + "sk": "Obchod s nápojmi", + "sl": "Trgovina s pijačami", + "sr": "Продавница пића", + "sv": "Dryckaffär", + "tr": "İçecek Dükkanı", + "uk": "Напої", + "vi": "Tiệm Đồ uống", + "yue": "飲品舖", + "zh-CN": "饮料店", + "zh-HK": "飲品店", + "zh-TW": "飲品店", + "zh": "饮品店" + } + }, + "shop/bicycle": { + "title": { + "C": "Bicycle Shop", + "af": "Fietswinkel", + "ar": "متجر دراجات هوائية", + "ast": "Tienda de ciclismu", + "bg": "Магазин за велосипеди", + "bn": "সাইকেলের দোকান", + "bs": "Prodavnica bicikala", + "ca": "Botiga de bicicletes", + "cs": "Cykloprodejna", + "da": "Cykelbutik", + "de": "Fahrradladen", + "el": "Κατάστημα Ποδηλάτων", + "en-GB": "Bicycle Shop", + "en": "Bicycle Shop", + "eo": "Bicikla vendejo", + "es": "Tienda de bicicletas", + "et": "Rattapood", + "fa": "فروشگاه دوچرخه", + "fi": "Pyöräliike", + "fr": "Magasin de vélos", + "gl": "Tenda de bicicletas", + "he": "חנות אופניים", + "hr": "prodavaonica bicikala", + "hu": "Kerékpárbolt", + "id": "Toko Sepeda", + "is": "Hjólabúð", + "it": "Negozio di biciclette", + "ja": "自転車店", + "ko": "자전거 가게", + "lt": "Dviračių parduotuvė", + "lv": "Velo veikals", + "mk": "Продавница за велосипеди", + "ms": "Kedai Basikal", + "nl": "Fietswinkel", + "no": "Sykkelbutikk", + "pl": "Sklep rowerowy", + "pt-BR": "Loja de Bicicletas", + "pt": "Loja de bicicletas", + "ro": "Magazin de Biciclete", + "ru": "Веломагазин", + "sk": "Cykloobchod", + "sl": "Kolesarska trgovina", + "sr": "Продавница бицикала", + "sv": "Cykelaffär", + "ta": "மிதிவண்டிக் கடை", + "tr": "Bisiklet Mağazası", + "uk": "Веломагазин", + "vi": "Tiệm Xe đạp", + "yue": "單車舖", + "zh-CN": "自行车店", + "zh-HK": "單車店", + "zh-TW": "單車店", + "zh": "自行车店" + } + }, + "shop/boat": { + "title": { + "C": "Boat Store", + "ar": "متجر بيع قوارب ومستلزماتها", + "cs": "prodejna lodí", + "da": "Bådforhandler", + "de": "Bootsgeschäft", + "el": "Κατάστημα Σκαφών", + "en": "Boat Store", + "eo": "Boat‑vendejo", + "es": "Tienda de barcos", + "fa": "فروشگاه قایق", + "fi": "Venekauppa", + "fr": "Magasin de bateaux", + "gl": "Tenda de embarcacións", + "he": "חנות סירות", + "hu": "Hajóüzlet", + "it": "Negozio di barche", + "ja": "ボート店", + "ko": "보트 가게", + "mk": "Продавница за чамци", + "nl": "Bootwinkel", + "pl": "Sklep żeglarski", + "pt-BR": "Loja de Barcos", + "pt": "Loja de barcos", + "ru": "Магазин лодок", + "sk": "Obchod predávajúci lode", + "sr": "Продавница чамаца", + "sv": "Båtaffär", + "tr": "Tekne Mağazası", + "uk": "Магазин човнів", + "vi": "Tiệm Tàu thuyền", + "zh-CN": "船店", + "zh-TW": "船店" + } + }, + "shop/bookmaker": { + "title": { + "C": "Bookmaker", + "ar": "مكتب رهانات", + "ast": "Encuadernador", + "ca": "Cusidor de llibres", + "cs": "Sázková kancelář", + "da": "Bookmaker", + "de": "Wettbüro", + "el": "Πρακτορείο στοιχημάτων", + "en-GB": "Bookmaker", + "en": "Bookmaker", + "eo": "Vetperistejo", + "es": "Corredor de apuestas", + "et": "Trükkal", + "fa": "دلال شرط‌بندی", + "fi": "Kirjapaino", + "fr": "Bookmaker", + "gl": "Corredor de apostas", + "he": "כורך ספרים", + "hr": "Kladioničar", + "hu": "Fogadóiroda", + "id": "Juru Taruh", + "is": "Veðmangari", + "it": "Agenzia di scommesse", + "ja": "公営競技投票券売り場", + "ko": "마권업자", + "lt": "Knygrišys", + "mk": "Обложувалница", + "nl": "Bookmaker (gokkantoor)", + "no": "Bookmaker", + "pl": "Zakład bukmacherski", + "pt-BR": "Casa de Apostas", + "pt": "Casa de apostas", + "ro": "Atelier de Cărți", + "ru": "Букмекерская контора", + "sk": "Stávková kancelária", + "sl": "Stavnica", + "sr": "Кладионичар", + "sv": "Vadslagning", + "tr": "Bahis Merkezi", + "uk": "Букмекер", + "vi": "Phòng Đánh cá Ngựa", + "zh-CN": "书商", + "zh-HK": "投注站", + "zh-TW": "投注處" + } + }, + "shop/books": { + "title": { + "C": "Book Store", + "am": "መፃሕፍት መሸጫ", + "ar": "مكتبة - متجر كتب", + "ast": "Llibrería", + "ca": "Llibreria", + "cs": "Knihkupectví", + "da": "Boghandler", + "de": "Buchladen", + "el": "Βιβλιοπωλείο", + "en-GB": "Book Shop", + "en": "Book Store", + "eo": "Libra vendejo", + "es": "Librería (venta de libros)", + "et": "Raamatupood", + "fa": "کتاب‌فروشی", + "fi": "Kirjakauppa", + "fr": "Librairie", + "gl": "Libraría", + "he": "חנות ספרים", + "hi": "किताबों की दुकान", + "hr": "Knjižara", + "hu": "Könyvesbolt", + "id": "Toko Buku", + "is": "Bókabúð", + "it": "Libreria", + "ja": "本屋", + "ko": "서점", + "lt": "Knygynas", + "lv": "Grāmatu veikals", + "mk": "Книжарница", + "nl": "Boekwinkel", + "no": "Bokhandel", + "pl": "Księgarnia", + "pt-BR": "Livraria", + "pt": "Livraria", + "ro": "Magazin de Cărți", + "ru": "Книжный магазин", + "sk": "Kníhkupectvo", + "sl": "Knjigarna", + "sr": "Продавница књига", + "sv": "Bokhandel", + "ta": "புத்தகக் கடை", + "tr": "Kitapçı", + "uk": "Книжковий магазин", + "vi": "Hiệu Sách", + "zh-CN": "书店", + "zh-HK": "書店", + "zh-TW": "書店" + } + }, + "shop/brewing_supplies": { + "title": { + "C": "Brewing Supply Store", + "cs": "pivovarnický obchod", + "da": "Bryggeudstyrsbutik", + "de": "Brauzubehörgeschäft", + "el": "Κατάστημα Εξοπλισμού Ζυθοποιίας", + "en": "Brewing Supply Store", + "eo": "Bier-/vin-farendaĵa vendejo", + "es": "Tienda de suministros de cerveza", + "fa": "فروشگاه فرآورده‌های آبجو", + "fr": "Magasin de matériel de brasserie", + "gl": "Tenda de cervexaría artesanal", + "he": "חנות ציוד למבשלות", + "hu": "Borászati, sör- és párlafőzési felszereléseket árusító üzlet", + "it": "Negozio di forniture per la produzione di birra", + "ja": "醸造用品店", + "ko": "양조 용품 가게", + "mk": "Пивоварска продавница", + "nl": "Winkel voor brouwbenodigdheden", + "pl": "Sklep dla piwowarów domowych", + "pt-BR": "Loja de suprimentos para cerveja", + "pt": "Loja de material de fermentação", + "sv": "Affär för hembryggningstillbehör", + "tr": "Bira Malzemeleri Mağazası", + "uk": "Пивоварне та виноробне обладнання", + "zh-CN": "酿酒用品店", + "zh-TW": "釀酒用品店" + } + }, + "shop/butcher": { + "title": { + "C": "Butcher", + "af": "Slagter", + "am": "ሥጋ ቤት", + "ar": "جزار", + "ast": "Carnicería", + "bg": "Колбаси", + "bn": "কসাই", + "bs": "Mesar", + "ca": "Carnisseria", + "cs": "Řeznictví", + "da": "Slagter", + "de": "Metzgerei", + "el": "Κρεοπωλείο", + "en-GB": "Butcher", + "en": "Butcher", + "eo": "Vianda vendejo", + "es": "Carnicería", + "et": "Lihapood", + "fa": "قصابی", + "fi": "Lihakauppa", + "fr": "Boucher", + "gl": "Carnizaría", + "he": "קצב", + "hr": "Mesnica", + "hu": "Hentes", + "id": "Penjagalan", + "is": "Slátrari", + "it": "Macellaio", + "ja": "精肉店", + "ko": "정육점", + "lt": "Mėsinė", + "lv": "Miesnieks", + "mk": "Месарница", + "nl": "Slagerij", + "no": "Slakter", + "pl": "Sklep mięsny", + "pt-BR": "Açougue", + "pt": "Talho", + "ro": "Măcelărie", + "ru": "Мясной", + "sk": "Mäsiarstvo", + "sl": "Mesar", + "sr": "Месар", + "sv": "Slaktare", + "ta": "இறைச்சிக் கடை", + "tr": "Kasap", + "uk": "М’ясна лавка", + "vi": "Hàng Thịt", + "yue": "肉舖", + "zh-CN": "肉店", + "zh-HK": "肉舖", + "zh-TW": "肉販", + "zh": "肉贩" + } + }, + "shop/camera": { + "title": { + "C": "Camera Equipment Store", + "cs": "prodejna kamer", + "da": "Fotoforhandler", + "de": "Fotofachgeschäft", + "el": "Κατάστημα Εξοπλισμού Καμερών", + "en": "Camera Equipment Store", + "eo": "Vendejo kun fotiloj kaj lensoj", + "es": "Tienda de equipos de fotografía", + "fa": "فروشگاه لوازم عکاسی", + "fi": "Kameraliike", + "fr": "Boutique de matériel photographique", + "gl": "Tenda de fotografía", + "he": "חנות ציוד צילום", + "hu": "Fényképezőgép-üzlet", + "it": "Negozio di materiale fotografico", + "ja": "カメラ店", + "ko": "카메라 가게", + "mk": "Продавница за фотографска опрема", + "nl": "Winkel voor camerabenodigdheden", + "pl": "Sklep z kamerami i aparatami", + "pt-BR": "Loja de equipamentos para câmeras", + "pt": "Loja de equipamento fotográfico", + "sv": "Affär för kameratillbehör", + "tr": "Kamera Ekipman Mağazası", + "uk": "Фотообладнання", + "vi": "Tiệm Máy ảnh", + "zh-CN": "相机店", + "zh-TW": "相機配件店" + } + }, + "shop/candles": { + "title": { + "C": "Candle Shop", + "ar": "متجر الشموع", + "ca": "Botiga d'espelmes", + "cs": "Obchod se svíčkami", + "da": "Stearinlysforhandler", + "de": "Kerzengeschäft", + "el": "Κατάστημα Κεριών", + "en-GB": "Candle Shop", + "en": "Candle Shop", + "eo": "Kandela vendejo", + "es": "Tienda de velas", + "et": "Küünlapood", + "fa": "شمع فروشی", + "fi": "Kynttiläkauppa", + "fr": "Magasin de bougies", + "gl": "Tenda de velas", + "he": "חנות נרות", + "hr": "Prodavaonica svijeća", + "hu": "Gyertyabolt", + "id": "Toko Lilin", + "is": "Kertabúð", + "it": "Negozio di candele", + "ja": "キャンドル専門店", + "ko": "양초 가게", + "lt": "Žvakių parduotuvė", + "lv": "Sveču veikals", + "mk": "Свеќарница", + "nl": "Kaarsenwinkel", + "no": "Lysstøperi", + "pl": "Sklep ze świecami", + "pt-BR": "Loja de Velas", + "pt": "Loja de velas", + "ro": "Magazin de Lumânări", + "ru": "Свечной магазин", + "sk": "Obchod so svičkami", + "sl": "Svečarstvo", + "sr": "Свећарница", + "sv": "Ljusaffär", + "tr": "Mum Mağazası", + "uk": "Магазин свічок", + "vi": "Tiệm Cây nến", + "zh-CN": "蜡烛店", + "zh-HK": "蠟燭店", + "zh-TW": "燈具店" + } + }, + "shop/cannabis": { + "title": { + "C": "Cannabis Shop", + "cs": "Feťácká prodejna", + "de": "Cannabisgeschäft", + "el": "Κατάστημα Κάναβις", + "en": "Cannabis Shop", + "eo": "Mariĥuana vendejo", + "es": "Tienda de cannabis", + "fa": "فروشگاه شاهدانه / ورمی کمپوست", + "fi": "Kannabiskauppa", + "fr": "Magasin de canabis", + "gl": "Tenda de cannabis", + "he": "חנות קנביס", + "hu": "Marihuánabolt", + "it": "Negozio di cannabis", + "ja": "Cannabis Shop(illegal in Japan)", + "ko": "대마초 가게", + "mk": "Продавница за коноп", + "nl": "Cannabiswinkel", + "pl": "Sklep z produktami z konopi", + "pt-BR": "Loja de canábis", + "pt": "Loja de canábis", + "sr": "Продавница канабиса", + "sv": "Cannabisaffär", + "tr": "Esrar Dükkanı", + "uk": "Конопля", + "vi": "Tiệm Cần sa", + "zh-CN": "大麻店", + "zh-TW": "娛樂用大麻店" + } + }, + "shop/car": { + "title": { + "C": "Car Dealership", + "af": "Voertuighandelaar", + "am": "መኪና መሸጫ", + "ar": "وكالة/معرض سيارات", + "ast": "Venta d'automóviles", + "bg": "Автомобили", + "bn": "গাড়ির ডিলারশিপ", + "bs": "Salon automobila", + "ca": "Concessionari de cotxes", + "cs": "Prodejna aut", + "da": "Bilforhandler", + "de": "Autohändler", + "el": "Εμπορία Αυτοκινήτων", + "en-GB": "Car Dealership", + "en": "Car Dealership", + "eo": "Aŭtomobila vendejo", + "es": "Concesionario de automóviles", + "et": "Autopood", + "fa": "نمایندگی خودرو", + "fi": "Autokauppa", + "fr": "Concessionnaire automobile", + "gl": "Concesionario de automóbiles", + "he": "סוכנות רכב", + "hr": "Prodavaonica automobila", + "hu": "Autókereskedés", + "id": "Dealer Mobil", + "is": "Bílabúð", + "it": "Concessionario", + "ja": "カーディーラー", + "ko": "자동차 대리점", + "lt": "Automobilių prekybos atstovybė", + "lv": "Auto dīleris", + "mk": "Автосалон", + "nl": "Autoshowroom", + "no": "Bilforhandler", + "pl": "Sprzedaż samochodów", + "pt-BR": "Revenda de Automóveis", + "pt": "Loja de automóveis", + "ro": "Magazin de Mașini", + "ru": "Автодилер", + "sk": "Predajňa áut", + "sl": "Avtomobilski salon", + "sr": "Салон аутомобила", + "sv": "Bilhandlare", + "ta": "வாகன விற்பனையகம்", + "tr": "Oto Galeri", + "uk": "Автосалон", + "vi": "Tiệm Xe hơi", + "yue": "車行", + "zh-CN": "汽车店", + "zh-HK": "車行", + "zh-TW": "汽車行", + "zh": "车行" + } + }, + "shop/car_parts": { + "title": { + "C": "Car Parts Store", + "af": "Onderdelewinkel", + "ar": "محل قطع غيار السيارة", + "ast": "Repuestos d'automóviles", + "bg": "Авточасти", + "bn": "গাড়ির যন্ত্রাংশের দোকান", + "bs": "Prodavnica auto dijelova", + "ca": "Botiga de recanvis de cotxe", + "cs": "Náhradní díly pro auta", + "da": "Bilreservedelsforhandler", + "de": "Autoteilehandel", + "el": "Ανταλλακτικά Αυτοκινήτων", + "en-GB": "Car Parts Shop", + "en": "Car Parts Store", + "eo": "Aŭtomobil-parta vendejo", + "es": "Tienda de componentes de automóvil", + "et": "Autoosade pood", + "fa": "فروشگاه قطعات خودرو", + "fi": "Varaosamyymälä", + "fr": "Magasin de pièces automobiles", + "gl": "Tenda de recambios de automóbiles", + "he": "חנות חלקי מכוניות", + "hr": "Trgovina rezevnih dijelova za automobile", + "hu": "Autóalkatrész-üzlet", + "id": "Toko Peralatan Mobil", + "is": "Bílavarahlutaverslun", + "it": "Negozio di autoricambi", + "ja": "カー用品店", + "ko": "자동차 부품 가게", + "lt": "Auto dalių parduotuvė", + "lv": "Auto rezerves daļu veikals", + "mk": "Продавница за автоделови", + "nl": "Auto-onderdelenwinkel", + "no": "Bildelforhandler", + "pl": "Sklep z częściami do samochodów", + "pt-BR": "Loja de Peças Automotivas", + "pt": "Loja de peças para automóveis", + "ru": "Автозапчасти", + "sk": "Predajňa autodielov", + "sl": "Avtomobilski deli", + "sr": "Продавница ауто делова", + "sv": "Biltillbehör", + "tr": "Yedek Parça Dükkanı", + "uk": "Автозапчастини", + "vi": "Tiệm Phụ tùng Xe hơi", + "yue": "汽車零件舖", + "zh-CN": "汽车零部件商店", + "zh-HK": "汽車零件店", + "zh-TW": "汽車零件店", + "zh": "汽车配件店" + } + }, + "shop/car_repair": { + "title": { + "C": "Car Repair Shop", + "af": "Werkswinkel", + "ar": "ورشة إصلاح سيارات", + "ast": "Taller d'automóviles", + "bg": "Сервиз автомобили", + "bn": "গাড়ি মেরামতের দোকান", + "bs": "Auto servis", + "ca": "Taller d'automòbils", + "cs": "Autoopravna", + "da": "Bilværksted", + "de": "Autowerkstatt", + "dv": "ކާާރު ހަދައިދޭ ގަރާޖް", + "el": "Συνεργείο Αυτοκινήτων", + "en-GB": "Car Repair Shop", + "en": "Car Repair Shop", + "eo": "Aŭtomobil-riparejo", + "es": "Taller de reparación de automóviles", + "et": "Autoremont", + "fa": "تعمیرگاه خودرو", + "fi": "Autokorjaamo", + "fr": "Garage de réparation automobile", + "gl": "Taller de arranxo de automóbiles", + "he": "מוסך", + "hr": "Automehaničar", + "hu": "Autószerelő", + "id": "Bengkel Mobil", + "is": "Bílaverkstæði", + "it": "Autofficina", + "ja": "自動車修理工場", + "ko": "자동차 수리점", + "lt": "Auto taisykla", + "lv": "Auto remontdarbnīca", + "mk": "Автосервис", + "nl": "Autogarage (herstel)", + "no": "Bilverksted", + "pl": "Warsztat samochodowy", + "pt-BR": "Oficina Mecânica", + "pt": "Oficina de automóveis", + "ro": "Vulcanizare", + "ru": "Автомастерская", + "sk": "Autoservis", + "sl": "Avtoservis", + "so": "Garaash", + "sr": "Ауто-сервис", + "sv": "Bilverkstad", + "tr": "Tamirci", + "uk": "Автомайстерня", + "vi": "Tiệm Sửa Xe", + "yue": "車房", + "zh-CN": "汽车修理店", + "zh-HK": "車房", + "zh-TW": "汽車維修店", + "zh": "汽车修理店" + } + }, + "shop/caravan": { + "title": { + "C": "RV Dealership", + "ar": "متجر بيع كرفانات ومنازل متنقلة", + "cs": "prodejna karavanů", + "de": "Wohnwagengeschäft", + "en": "RV Dealership", + "eo": "Vendejo de kampad-veturiloj", + "es": "Concesionario de autocaravanas", + "et": "Haagissuvilate/autoelamute müügiplats", + "fi": "Asuntovaunukauppa", + "fr": "Concessionnaire de véhicules de tourisme", + "gl": "Concesionario de autocaravanas", + "he": "סוכנות קרוואנים", + "hu": "Lakókocsi kereskedés", + "it": "Concessionario caravan", + "ja": "キャラバンカー販売店", + "ko": "RV 대리점", + "mk": "Продавач на камп-возила", + "nl": "Caravan-dealer", + "pl": "Sklep z kamperami i przyczepami", + "pt-BR": "Concessionária de Motorhomes", + "pt": "Vendedor de caravanas", + "ru": "Продажа домов на колёсах", + "sv": "Husvagnsförsäljare", + "tr": "Karavan Galerisi", + "uk": "Салон автотрейлерів", + "vi": "Tiệm Nhà xe Lưu động", + "zh-CN": "房车售卖", + "zh-TW": "拖車經銷商" + } + }, + "shop/carpet": { + "title": { + "C": "Carpet Store", + "ar": "متجر سجاد ومفروشات", + "ast": "Alfombres", + "ca": "Botiga de catifes", + "cs": "Prodejna koberců", + "da": "Tæppeforhandler", + "de": "Teppichgeschäft", + "el": "Κατάστημα χαλιών", + "en-GB": "Carpet Shop", + "en": "Carpet Store", + "eo": "Tapiŝa vendejo", + "es": "Tienda de alfombras", + "et": "Vaibapood", + "fa": "فرش فروشی", + "fi": "Mattokauppa", + "fr": "Magasin de tapis", + "gl": "Tenda de alfombras", + "he": "חנות שטיחים", + "hr": "Prodavaonica tepiha", + "hu": "Szőnyegbolt", + "id": "Toko Karpet", + "is": "Gólfteppaverslun", + "it": "Negozio di tappeti", + "ja": "カーペット専門店", + "ko": "카펫 가게", + "lt": "Kilimų parduotuvė", + "lv": "Paklāju veikals", + "mk": "Продавница за теписи", + "nl": "Tapijtwinkel", + "no": "Teppehandler", + "pl": "Sklep z dywanami", + "pt-BR": "Tapeçaria", + "pt": "Loja de tapetes", + "ro": "Magazin de Covoare", + "ru": "Магазин ковров", + "sk": "Obchod s kobercami", + "sl": "Trgovina s preprogrami", + "sr": "Продавница тепиха", + "sv": "Mattaffär", + "tr": "Halı Mağazası", + "uk": "Магазин килимів", + "vi": "Tiệm Thảm", + "zh-CN": "地毯店", + "zh-HK": "地毯店", + "zh-TW": "地毯店" + } + }, + "shop/catalogue": { + "title": { + "C": "Catalog Shop", + "cs": "katalogový obchod", + "de": "Versandhandel", + "en-GB": "Catalogue Shop", + "en": "Catalog Shop", + "eo": "Ricevejo de aĉetaĵoj (per katalogo)", + "es": "Tienda de catálogo", + "fa": "فروشگاه کاتالوگ", + "fr": "Magasin à catalogue", + "gl": "Tenda de catálogo", + "he": "חנות קטלוגים", + "it": "Produzione di Cataloghi", + "ja": "カタログショップ", + "ko": "카탈로그 가게", + "mk": "Каталошка продавница", + "nl": "Cataloguswinkel", + "pl": "Catalog Shop", + "pt-BR": "Catálogo de loja", + "pt": "Loja de catálogo", + "sv": "Katalogaffär", + "tr": "Katalog Mağazası", + "uk": "Товари поштою", + "zh-TW": "目錄店" + } + }, + "shop/charity": { + "title": { + "C": "Charity Store", + "ar": "متجر خيري", + "ca": "Botiga de Caritat", + "cs": "Charitativní obchod", + "da": "Velgørenhedsbutik", + "de": "Sozialkaufhaus", + "el": "Κατάστημα Φιλανθρωπίας", + "en-GB": "Charity Shop", + "en": "Charity Store", + "eo": "Almoza vendejo", + "es": "Tienda de caridad", + "et": "Heategevuslik kauplus", + "fa": "فروشگاه خیریه", + "fi": "Hyväntekeväisyyskauppa", + "fr": "Magasin d'organisme caritatif", + "gl": "Tenda solidaria", + "he": "חנות צדקה", + "hu": "Adománybolt", + "is": "Góðgerðaverslun", + "it": "Mercatino dell'usato", + "ja": "チャリティーショップ", + "ko": "자선 쇼핑몰", + "mk": "Добротворна продавница", + "nl": "Winkel van goed doel", + "pl": "Sklep charytatywny", + "pt-BR": "Loja de Caridade", + "pt": "Loja solidária", + "ro": "Magazin de Caritate", + "ru": "Благотворительный магазин", + "sv": "Second hand-butik", + "tr": "Yardım Mağazası", + "uk": "Доброчинна крамниця", + "vi": "Tiệm Từ thiện", + "zh-CN": "慈善机构店", + "zh-HK": "慈善商店", + "zh-TW": "慈善商店" + } + }, + "shop/cheese": { + "title": { + "C": "Cheese Store", + "ar": "متجر أجبان", + "ast": "Quesería", + "ca": "Botiga de formatge", + "cs": "Prodejna sýrů", + "da": "Ostehandler", + "de": "Käseladen", + "el": "Τυροπωλείο", + "en-AU": "Cheese Shop", + "en-GB": "Cheese Shop", + "en": "Cheese Store", + "eo": "Fromaĝa vendejo", + "es": "Tienda de quesos", + "et": "Juustupood", + "fa": "پنیر فروشی", + "fi": "Juustopuoti", + "fr": "Fromager", + "gl": "Queixaría", + "he": "חנות גבינות", + "hr": "Prodavaonica sira", + "hu": "Sajtbolt", + "id": "Toko Keju", + "is": "Ostabúð", + "it": "Negozio di formaggi", + "ja": "チーズ店", + "ko": "치즈 가게", + "lt": "Sūrių parduotuvė", + "lv": "Siera veikals", + "mk": "Сирењарница", + "nl": "Kaaswinkel", + "no": "Ostebutikk", + "pl": "Sklep z serami", + "pt-BR": "Loja de Queijos", + "pt": "Loja de queijos", + "ro": "Magazin de Brânzeturi", + "ru": "Магазин сыров", + "sk": "Obchod so syrmi", + "sl": "Trgovina s siri", + "sr": "Продавница сирева", + "sv": "Ostaffär", + "tr": "Peynirci", + "uk": "Магазин сиру", + "vi": "Tiệm Pho mát", + "zh-CN": "奶酪店", + "zh-HK": "芝士店", + "zh-TW": "起士店" + } + }, + "shop/chemist": { + "title": { + "C": "Drugstore", + "ar": "متجر أدوات النظافة الشخصية والتجميل", + "ast": "Droguería", + "bg": "Дрогерия", + "ca": "Farmàcia", + "cs": "Drogerie", + "da": "Materialist", + "de": "Drogerie", + "el": "Φαρμακείο", + "en-AU": "Pharmacy", + "en-GB": "Chemist", + "en": "Drugstore", + "eo": "Kosmetikaĵa (ankaŭ purigaĵoj) vendejo", + "es": "Tienda de artículos de limpieza y cosméticos", + "et": "Kodukeemia kauplus", + "fa": "لوازم آرایشی بهداشتی", + "fi": "Apteekki-luontaistuotemyymälä", + "fr": "Parapharmacie", + "gl": "Drogaría", + "he": "בית מרקחת", + "hr": "Drogerija", + "hu": "Drogéria", + "is": "Hreinlætisvöruverslun", + "it": "Drogheria", + "ja": "ドラッグストア・化粧品・薬品店(薬剤師がいない店)", + "ko": "드러그스토어", + "lt": "Vaistinė", + "lv": "Aptieka", + "mk": "Аптека", + "nl": "Drogisterij", + "no": "Apotek", + "pl": "Drogeria", + "pt-BR": "Loja de Cosméticos e Higiene", + "pt": "Drogaria", + "ro": "Drogărie", + "ru": "Бытовая химия", + "sk": "Drogéria", + "sl": "Lekarna", + "sv": "Kemiaffär (hygien, kosmetika & städ)", + "ta": "மருந்தகம்", + "tr": "İlaç Dükkanı", + "uk": "Аптека", + "vi": "Tiệm Dược phẩm", + "zh-CN": "药妆店", + "zh-HK": "藥店", + "zh-TW": "藥妝店" + } + }, + "shop/chocolate": { + "title": { + "C": "Chocolate Store", + "ar": "متجر شوكولاتة", + "ast": "Chocolatería", + "ca": "Botiga de xocolata", + "cs": "Prodejna čokolády", + "da": "Chokoladeforretning", + "de": "Schokoladenladen", + "el": "Κατάστημα Ειδών Σοκολάτας", + "en-AU": "Chocolate Shop", + "en-GB": "Chocolate Shop", + "en": "Chocolate Store", + "eo": "Ĉokolada vendejo", + "es": "Chocolatería", + "et": "Šokolaadikauplus", + "fa": "فروشگاه شکلات", + "fi": "Suklaapuoti", + "fr": "Chocolatier", + "gl": "Chocolataría", + "he": "חנות שוקולד", + "hr": "Prodavaonica čokolade", + "hu": "Csokoládébolt", + "id": "Toko Cokelat", + "is": "Súkkulaðibúð", + "it": "Cioccolateria", + "ja": "チョコレート店", + "ko": "초콜릿 가게", + "lt": "Šokolado parduotuvė", + "lv": "Šokolādes veikals", + "mk": "Продавница за чоколади", + "ms": "Kedai Coklat", + "nl": "Chocoladewinkel", + "no": "Sjokoladebutikk", + "pl": "Sklep z czekoladą", + "pt-BR": "Loja de Chocolates", + "pt": "Loja de chocolates", + "ro": "Magazin de Ciocolată", + "ru": "Магазин шоколада", + "sk": "Obchod s čokoládou", + "sl": "Trgovina s čokolado", + "sr": "Продавница чоколаде", + "sv": "Chokladaffär", + "tr": "Çikolata Dükkanı", + "uk": "Магазин шоколаду", + "vi": "Tiệm Sô-cô-la", + "zh-CN": "巧克力店", + "zh-HK": "朱古力店", + "zh-TW": "巧克力店" + } + }, + "shop/clothes": { + "title": { + "C": "Clothing Store", + "af": "Klere Winkel", + "ar": "محل ملابس", + "ast": "Tienda de ropa", + "bg": "Магазин за дрехи", + "bn": "জামাকাপড়ের দোকান", + "bs": "Prodavnica odjeće", + "ca": "Botiga de roba", + "cs": "Oblečení", + "da": "Tøjbutik", + "de": "Bekleidungsgeschäft", + "el": "Κατάστημα Ένδυσης", + "en-GB": "Clothing Shop", + "en": "Clothing Store", + "eo": "Vesta vendejo", + "es": "Tienda de ropa", + "et": "Riidepood", + "fa": "فروشگاه لباس", + "fi": "Vaatekauppa", + "fr": "Magasin de vêtements", + "gl": "Tenda de roupa", + "he": "חנות בגדים", + "hr": "Prodavaonica odjeće", + "hu": "Ruházati bolt", + "id": "Toko Baju", + "is": "Fataverslun", + "it": "Negozio di abbigliamento", + "ja": "衣料品店", + "ko": "옷 가게", + "lt": "Drabužių parduotuvė", + "lv": "Apģērba veikals", + "mk": "Продавница за облека", + "ms": "Kedai Pakaian", + "nl": "Kledingzaak", + "no": "Klesbutikk", + "pl": "Sklep odzieżowy", + "pt-BR": "Loja de Roupas", + "pt": "Loja de roupa", + "ro": "Magazin de Haine", + "ru": "Магазин одежды", + "sk": "Obchod s odevami", + "sl": "Trgovina z oblekami", + "sq": "Dyqan Veshjesh", + "sr": "Продавница одеће", + "sv": "Klädaffär", + "ta": "ஜவுளிக் கடை", + "tr": "Giyim Mağazası", + "uk": "Одяг", + "vi": "Tiệm Quần áo", + "yue": "衫舖", + "zh-CN": "服装店", + "zh-HK": "服飾店", + "zh-TW": "服飾店", + "zh": "服装店" + } + }, + "shop/coffee": { + "title": { + "C": "Coffee Store", + "ar": "متجر القهوة", + "ast": "Venta de café", + "ca": "Botiga de cafè", + "cs": "Obchod kávou", + "da": "Kaffebutik", + "de": "Kaffeegeschäft", + "el": "Καφεκοπτείο", + "en-GB": "Coffee Shop (Retail)", + "en": "Coffee Store", + "eo": "Kafa vendejo", + "es": "Tienda de café", + "et": "Kohvipood", + "fa": "فروشگاه قهوه", + "fi": "Kahvikauppa", + "fr": "Boutique de vente de cafés", + "gl": "Tenda de café", + "he": "חנות קפה", + "hr": "Prodavaonica za kavu", + "hu": "Kávébolt", + "is": "Kaffibúð", + "it": "Negozio di caffè", + "ja": "コーヒー豆販売店", + "ko": "커피 가게", + "lt": "Kavos parduotuvė", + "lv": "Kafijas veikals", + "mk": "Продавница за кафе", + "nl": "Koffiewinkel", + "no": "Kaffebutikk", + "pl": "Sklep z kawą", + "pt-BR": "Loja de Cafés", + "pt": "Loja de café", + "ro": "Magazin de Cafea", + "ru": "Кофейный магазин", + "sk": "Kaviareň", + "sl": "Trgovina s kavo", + "sr": "Продавница кафе", + "sv": "Kaffeaffär", + "tr": "Kahveci", + "uk": "Крамниця кави", + "vi": "Tiệm Bột Cà phê", + "zh-CN": "咖啡豆/粉店", + "zh-HK": "咖啡店", + "zh-TW": "咖啡店" + } + }, + "shop/collector": { + "title": { + "C": "Collectibles Shop", + "ar": "متجر المقتنيات والتجميعات", + "cs": "Sběratel", + "de": "Sammlergeschäft", + "en": "Collectibles Shop", + "eo": "Kolektaĵa vendejo", + "es": "Tienda de coleccionables", + "gl": "Tenda de colecionismo", + "he": "חנות אספנים", + "hu": "Gyűjthető tárgyak boltja", + "it": "Negozio di articoli da collezione", + "ja": "コレクター店", + "ko": "수집품 가게", + "mk": "Колекционерска продавница", + "nl": "Winkel voor verzamelobjecten", + "pl": "Sklep kolekcjonerski", + "pt-BR": "Loja de artigos para colecionadores", + "pt": "Loja de colecionismo", + "sr": "Продавница колекционарства", + "sv": "Affär med samlarobjekt", + "tr": "Koleksiyon Mağazası", + "uk": "Магазин предметів колекціювання", + "vi": "Tiệm Đồ sưu tập", + "zh-CN": "收藏品店", + "zh-TW": "收藏品商店" + } + }, + "shop/computer": { + "title": { + "C": "Computer Store", + "af": "Rekenaarwinkel", + "am": "ኮምፒውተር", + "ar": "محل حاسب آلي", + "ast": "Informática", + "bg": "Компютърен магазин", + "bn": "কম্পিউটারের দোকান", + "bs": "Prodavnica računara", + "ca": "Botiga d'informàtica", + "cs": "Počítače", + "da": "Computerforhandler", + "de": "Computerfachhandel", + "el": "Κατάστημα Υπολογιστών", + "en-GB": "Computer Shop", + "en": "Computer Store", + "eo": "Komputila vendejo", + "es": "Tienda de informática", + "et": "Arvutipood", + "fa": "فروشگاه کامپیوتر", + "fi": "Tietokoneliike", + "fr": "Magasin d'informatique", + "gl": "Tenda de informática", + "he": "חנות מחשבים", + "hr": "Prodavaonica računala", + "hu": "Számítógépbolt", + "id": "Toko Komputer", + "is": "Tölvuverslun", + "it": "Negozio di informatica", + "ja": "コンピューター店", + "kn": "ಗಣಕಯಂತ್ರದ ಅಂಗಡಿ", + "ko": "컴퓨터 가게", + "lt": "Kompiuterių parduotuvė", + "lv": "Datorveikals", + "mk": "Продавница за сметачи", + "ms": "Kedai Komputer", + "nl": "Computerwinkel", + "no": "Databutikk", + "pl": "Sklep komputerowy", + "pt-BR": "Loja de Informática", + "pt": "Loja de informática", + "ro": "Magazin de Calculatoare", + "ru": "Компьютерный магазин", + "sk": "Obchod s výpočtovou technikou", + "sl": "Računalniška trgovina", + "sr": "Продавница рачунара", + "sv": "Datorbutik", + "ta": "கணினி விற்பனையகம்", + "tr": "Bilgisayar Mağazası", + "uk": "Комп’ютери", + "vi": "Tiệm Máy tính", + "yue": "電腦舖", + "zh-CN": "电脑店", + "zh-HK": "電腦店", + "zh-TW": "電腦店", + "zh": "电脑店" + } + }, + "shop/confectionery": { + "title": { + "C": "Candy Store", + "ar": "متجر حلويات", + "ast": "Venta de llambionaes", + "ca": "Botiga de llaminadures", + "cs": "Cukrovinky", + "da": "Slikbutik", + "de": "Süßwarenladen", + "el": "Ζαχαροπλαστείο", + "en-GB": "Sweet Shop", + "en": "Candy Store", + "eo": "Sukeraĵa vendejo", + "es": "Tienda de dulces", + "et": "Kommipood", + "fa": "فروشگاه آب‌نبات", + "fi": "Karkkipuoti", + "fr": "Confiserie", + "gl": "Tenda de larpeiradas", + "he": "חנות ממתקים", + "hr": "Prodavaonica slatkiša", + "hu": "Édességbolt", + "id": "Toko Permen", + "is": "Nammibúð", + "it": "Negozio di dolciumi", + "ja": "菓子屋(販売)", + "ko": "사탕 가게", + "lt": "Saldainių parduotuvė", + "lv": "Saldumu veikals", + "mk": "Бонбониера", + "nl": "Snoepwinkel", + "no": "Godtebutikk", + "pl": "Sklep ze słodyczami", + "pt-BR": "Doceria", + "pt": "Doçaria", + "ro": "Magazin de Dulciuri", + "ru": "Кондитерская", + "sk": "Obchod so sladkosťami", + "sl": "Trgovina s slaščicami", + "sr": "Бомбонџиница", + "sv": "Godisaffär", + "tr": "Şeker Mağazası", + "uk": "Кондитерська", + "vi": "Tiệm Kẹo", + "zh-CN": "糖果店", + "zh-HK": "糖果店", + "zh-TW": "糖果店" + } + }, + "shop/convenience": { + "title": { + "C": "Convenience Store", + "af": "Geriefswinkel", + "ar": "بقالة - متجر صغير", + "ast": "Tienda d'ultramarinos", + "bg": "Магазин за хранителни стоки", + "bs": "Bakalnica", + "ca": "Botiga d'ultramarins", + "cs": "Smíšené zboží", + "da": "Minimarked", + "de": "Minimarkt", + "el": "Παντοπωλείο", + "en-GB": "Convenience Store", + "en": "Convenience Store", + "eo": "Butiko oportuna", + "es": "Tienda multiservicio", + "et": "Toidupood", + "fa": "سوپرمارکت / فروشگاه کوچک", + "fi": "Lähikauppa", + "fr": "Épicerie / Supérette", + "gl": "Tenda de ultramarinos", + "he": "חנות נוחות", + "hr": "Trgovina mješovitom robom", + "hu": "Kis élelmiszerbolt", + "id": "Toko Kelontong", + "is": "Kjörbúð", + "it": "Minimarket", + "ja": "コンビニエンスストア", + "ko": "편의점", + "lt": "Savitarnos parduotuvė", + "lv": "Veikals", + "mk": "Бакалница", + "ms": "Kedai Kecil", + "nl": "Gemakswinkel", + "no": "Nærbutikk", + "pl": "Sklep ogólnospożywczy", + "pt-BR": "Loja de Conveniência", + "pt": "Minimercado / loja de conveniência", + "ro": "Magazin Universal", + "ru": "Магазин у дома", + "sk": "Samoobsluha", + "sl": "Minimarket", + "sr": "Бакалница", + "sv": "Närbutik", + "tr": "Market", + "uk": "Міні-маркет", + "vi": "Tiệm Tiện lợi", + "yue": "便利店", + "zh-CN": "便利店", + "zh-HK": "便利店", + "zh-TW": "便利商店", + "zh": "便利店" + } + }, + "shop/copyshop": { + "title": { + "C": "Copy Store", + "ar": "متجر نسخ وتصوير", + "ast": "Copistería", + "ca": "Copisteria", + "cs": "Kopírování", + "da": "Fotokopishop", + "de": "Kopierladen", + "el": "Κατάστημα Φωτοτυπιών", + "en-GB": "Copyshop", + "en": "Copy Store", + "eo": "Fotokopiilejo", + "es": "Centro de copiado", + "et": "Koopiateenuse kauplus", + "fa": "چاپ و تکثیر", + "fi": "Kopiointiliike", + "fr": "Photocopie et impression", + "gl": "Copistaría", + "he": "חנות העתקות", + "hr": "Fotokopiraona", + "hu": "Fénymásoló", + "id": "Tempat Fotokopi", + "is": "Ljósritunarstofa", + "it": "Copisteria", + "ja": "コピー店", + "ko": "복사집", + "lt": "Kopijavimo parduotuvė", + "lv": "Printēšanas veikals", + "mk": "Копирница", + "nl": "Copyshop", + "no": "Printsjappe", + "pl": "Punkt ksero i druku", + "pt-BR": "Copiadora", + "pt": "Loja de fotocópias", + "ro": "Atelier de Copiere", + "ru": "Магазин копирования, печати", + "sk": "Fotokopírovanie", + "sl": "Fotokopirnica", + "sq": "Fotokopje", + "sr": "Копирница", + "sv": "Tryckeri", + "tr": "Kırtasiye", + "uk": "Копіювальні послуги", + "vi": "Tiệm Sao chép", + "zh-CN": "打印店", + "zh-HK": "影印店", + "zh-TW": "影印店" + } + }, + "shop/cosmetics": { + "title": { + "C": "Cosmetics Store", + "ar": "متجر مستحضرات التجميل", + "ast": "Perfumería", + "ca": "Botiga de cosmètics", + "cs": "Obchod s kosmetikou", + "da": "Kosmetikbutik", + "de": "Kosmetikladen", + "el": "Κατάστημα καλλυντικών", + "en-GB": "Cosmetics Shop", + "en": "Cosmetics Store", + "eo": "Kosmetikaĵa (persona higieno) vendejo", + "es": "Tienda de cosméticos", + "et": "Kosmeetikapood", + "fa": "فروشگاه آرایشی و بهداشتی", + "fi": "Kosmetiikkamyymälä", + "fr": "Magasin de cosmétiques", + "gl": "Tenda de cosméticos", + "he": "חנות קוסמטיקה", + "hr": "Prodavaonica kozmetike", + "hu": "Kozmetikai bolt", + "id": "Toko Kosmetik", + "is": "Snyrtivöruverslun", + "it": "Negozio di cosmetici", + "ja": "化粧品店", + "ko": "화장품 가게", + "lt": "Kosmetikos parduotuvė", + "lv": "Kosmētikas veikals", + "mk": "Продавница за козметика", + "nl": "Cosmeticawinkel", + "no": "Parfymeri", + "pl": "Sklep z kosmetykami", + "pt-BR": "Loja de Cosméticos", + "pt": "Loja de cosmética", + "ro": "osmetic", + "ru": "Магазин косметики", + "sk": "Obchod s kozmetikou", + "sl": "Kozmetična trgovina", + "sr": "Продавница козметике", + "sv": "Sminkaffär", + "tr": "Kozmetik Mağazası", + "uk": "Магазин косметики", + "vi": "Tiệm Mỹ phẩm", + "zh-CN": "化妆品店", + "zh-HK": "化妝品店", + "zh-TW": "化妝品店" + } + }, + "shop/country_store": { + "title": { + "C": "Country Store", + "ar": "متجر بلدي عام", + "cs": "venkovský obchod", + "de": "Ländlicher Laden", + "el": "Είδη Εξοχής", + "en": "Country Store", + "eo": "Ĝenerala vendejo", + "es": "Tienda de campo", + "fr": "Magasin de campagne", + "gl": "Tenda do agro ou campo", + "he": "חנות למטיילים", + "it": "Negozio locale di articoli vari", + "ja": "よろずや", + "mk": "Селска продавница", + "nl": "Outdoorzaak", + "no": "Landhandel", + "pl": "Country Store", + "pt-BR": "Loja Country", + "pt": "Loja para proprietários rurais", + "sv": "Lanthandel", + "tr": "Köy Mağazası", + "uk": "Сільмаг", + "vi": "Tiệm Nông thôn", + "zh-TW": "鄉村商店" + } + }, + "shop/craft": { + "title": { + "C": "Arts & Crafts Store", + "ar": "متجر الفنون والحرف", + "ca": "Botiga d'art i artesania", + "cs": "Obchod s řemeslnými výrobky", + "da": "Kunst & hobbybutik", + "de": "Geschäft für Künstlerbedarf", + "en": "Arts & Crafts Store", + "eo": "Vendejo de materialoj por metio", + "es": "Tienda de artesanías", + "fa": "فروشگاه هنر و صنایع دستی", + "fi": "Käsityöliike", + "fr": "Magasin d'arts et loisirs créatifs", + "gl": "Tenda de artes e oficios", + "he": "חנות חפצי אומנות", + "hu": "Kézműveskellék-bolt", + "it": "Negozio di arti e mestieri", + "ja": "美術・工芸用品店", + "ko": "미술 & 공예 가게", + "mk": "Продавница за уметнички ракотворби", + "nl": "Winkel voor schilder- en tekengereedschap", + "no": "Kunst & Håndverksbutikk", + "pl": "Sklep z artykułami dla artystów", + "pt-BR": "Loja de artesanato", + "pt": "Loja de acessórios para artes manuais", + "sv": "Konst- & hantverksbutik", + "tr": "El Sanatları Mağazası", + "uk": "Мистецтво та ремесла", + "vi": "Tiệm Bán đồ Thủ công", + "zh-CN": "工艺美术用品店", + "zh-TW": "手工藝品店" + } + }, + "shop/curtain": { + "title": { + "C": "Curtain Store", + "ar": "محل بيع الستائر", + "ast": "Tienda de cortines", + "ca": "Botiga de cortines", + "cs": "Obchod se závěsy", + "da": "Gardinbutik", + "de": "Vorhanggeschäft", + "el": "Είδη Κουρτίνας", + "en-GB": "Curtain Shop", + "en": "Curtain Store", + "eo": "Kurtena vendejo", + "es": "Tienda de cortinas", + "et": "Kardinakauplus", + "fa": "پرده فروشی", + "fi": "Verhomyymälä", + "fr": "Magasin de rideaux", + "gl": "Tenda de cortinas", + "he": "חנות וילונות", + "hr": "Trgovina za zastore", + "hu": "Függönybolt", + "id": "Toko Gorden", + "is": "Gluggatjaldaverslun", + "it": "Negozio di tende", + "ja": "カーテン店", + "ko": "커튼 가게", + "lt": "Užuolaidų parduotuvė", + "lv": "Aizkaru veikals", + "mk": "Продавница за завеси", + "nl": "Gordijnenwinkel", + "no": "Gardinbutikk", + "pl": "Sklep z zasłonami", + "pt-BR": "Loja de Cortinas", + "pt": "Loja de cortinas", + "ro": "Magazin de Perdele", + "ru": "Магазин штор и драпировок", + "sk": "Obchod so záclonami", + "sl": "Trgovina z zavesami", + "sr": "Продавница завеса", + "sv": "Gardinaffär", + "tr": "Perde Mağazası", + "uk": "Магазин занавісок", + "vi": "Tiệm Màn cửa", + "zh-CN": "窗帘店", + "zh-HK": "窗簾店", + "zh-TW": "窗廉店" + } + }, + "shop/dairy": { + "title": { + "C": "Dairy Store", + "ar": "متجر الألبان", + "ast": "Llechería", + "ca": "Botiga de productes làctics", + "cs": "Mléčné výrobky", + "da": "Ismejeri", + "de": "Milchgeschäft", + "el": "Γαλακτοπωλείο", + "en-GB": "Dairy Shop", + "en": "Dairy Store", + "eo": "Laktaĵa vendejo", + "es": "Tienda de lácteos", + "et": "Piimapood", + "fa": "فروشگاه لبنی", + "fi": "Maitotuotemyymälä", + "fr": "Crèmerie", + "gl": "Tenda de produtos frescos", + "he": "חנות מוצרי חלב", + "hr": "Prodavaonica mliječnih proizvoda", + "hu": "Tejtermékbolt", + "id": "Toko Susu", + "is": "Mjólkurbúð", + "it": "Negozio di latticini", + "ja": "乳製品店", + "ko": "유제품 가게", + "lt": "Pieno produktų parduotuvė", + "lv": "Piena veikals", + "mk": "Бакалница", + "nl": "Zuivelhandel", + "no": "Ferskvarebutikk", + "pl": "Sklep z nabiałem", + "pt-BR": "Loja de Laticínios", + "pt": "Loja de laticínios", + "ro": "Magazin de Lactate", + "ru": "Магазин молочных продуктов", + "sk": "Obchod s mliečnymi výrobkami", + "sl": "Mlekarna", + "sr": "Продавница млечних производа", + "sv": "Mejeriaffär", + "tr": "Süt Mağazası", + "uk": "Молочний магазин", + "vi": "Tiệm Sữa", + "zh-CN": "牛奶店", + "zh-HK": "奶製品店", + "zh-TW": "奶製品店" + } + }, + "shop/deli": { + "title": { + "C": "Deli", + "af": "Deli", + "ar": "محل أطعمة لذيذة", + "ast": "Gourmet", + "bg": "Магазин за деликатеси", + "bs": "Delikatese", + "ca": "Botiga de comestibles", + "cs": "Lahůdkářství", + "da": "Deli", + "de": "Feinkostladen", + "el": "Ντελικατέσεν", + "en-GB": "Deli", + "en": "Deli", + "eo": "Delikataĵa vendejo", + "es": "Delicatessen", + "et": "Delikatessikauplus", + "fa": "حاضری فروشی", + "fi": "Deli", + "fr": "Épicerie de luxe", + "gl": "Delicatessen", + "he": "מעדניה", + "hr": "Prodavaonica delikatesa", + "hu": "Csemegebolt", + "id": "Delikatesen", + "is": "Deli", + "it": "Gastronomia", + "ja": "惣菜屋", + "ko": "델리", + "lt": "Gastronomas", + "lv": "Delikateses", + "mk": "Продавница за деликатеси", + "nl": "Delicatessenwinkel", + "no": "Delikatessebutikk", + "pl": "Ekskluzywne delikatesy", + "pt-BR": "Delicatessen", + "pt": "Loja gourmet", + "ru": "Магазин деликатесов", + "sk": "Delikatesy", + "sl": "Delikatesa", + "sr": "Деликатеси", + "sv": "Delikatessaffär", + "tr": "Şarküteri", + "uk": "Делікатеси/Вишукана їжа", + "vi": "Tiệm Deli", + "yue": "美食舖", + "zh-CN": "熟食店", + "zh-HK": "食肆", + "zh-TW": "美食店", + "zh": "熟食店" + } + }, + "shop/department_store": { + "title": { + "C": "Department Store", + "af": "Afdelingswinkel", + "am": "የተደራጀ ግዙፍ ማከፋፈያ", + "ar": "محل متعدد الأقسام", + "ast": "Grandes almacenes", + "bg": "Универсален магазин", + "bn": "ডিপার্টমেন্ট স্টোর", + "bs": "Robna kuća", + "ca": "Grans magatzems", + "cs": "Obchodní dům", + "da": "Stormagasin", + "de": "Kaufhaus", + "el": "Πολυκατάστημα", + "en-GB": "Department Store", + "en": "Department Store", + "eo": "Ĉiovendejo", + "es": "Grandes almacenes / Tienda departamental", + "et": "Kaubamaja", + "fa": "فروشگاه چندمنظوره", + "fi": "Tavaratalo", + "fr": "Grand magasin", + "gl": "Grandes almacéns", + "he": "חנות כלבו", + "hr": "Robna kuća", + "hu": "Nagyáruház", + "id": "Pasar Swalayan", + "is": "Stórverslun", + "it": "Grande magazzino", + "ja": "百貨店", + "kn": "ಕಿರಾಣಿ ಅಂಗಡಿ", + "ko": "백화점", + "lt": "Universalinė parduotuvė", + "lv": "Lielveikals", + "mk": "Стоковна куќа", + "nl": "Warenhuis", + "no": "Supermarked", + "pl": "Dom towarowy", + "pt-BR": "Loja de Departamentos", + "pt": "Grande armazém", + "ro": "Magazin Universal", + "ru": "Универсальный магазин (с отделами)", + "sk": "Obchodný dom", + "sl": "Veleblagovnica", + "sr": "Робна кућа", + "sv": "Varuhus", + "tr": "Mağaza", + "uk": "Універмаг", + "vi": "Tiệm Bách hóa", + "yue": "百貨公司", + "zh-CN": "百货商场", + "zh-HK": "百貨公司", + "zh-TW": "百貨公司", + "zh": "百货店" + } + }, + "shop/doityourself": { + "title": { + "C": "DIY Store", + "af": "Selfdoenwinkel", + "ar": "محل عدد وأدوات وأجهزة صيانة وتحسين المنزل", + "ast": "Bricolage", + "bg": "Магазин \"Направи си сам\"", + "bn": "নিজে করুন স্টোর", + "bs": "Sve za kuću", + "ca": "Botiga de bricolatge", + "cs": "Obchod pro kutily", + "da": "Byggemarked", + "de": "Heimwerkerladen", + "el": "Κατάστημα ιδιοκατασκευών", + "en-GB": "DIY Shop", + "en": "DIY Store", + "eo": "Memfaradila vendejo", + "es": "Tienda de bricolaje / Hágalo usted mismo", + "et": "Ehituskauplus", + "fa": "فروشگاه DIY", + "fi": "Askartelukauppa", + "fr": "Magasin de bricolage", + "gl": "Tenda de bricolaxe", + "he": "חנות עשה זאת בעצמך", + "hr": "Uradi sam", + "hu": "Barkácsáruház", + "id": "Toko Swakriya", + "is": "Handlaginna verslun", + "it": "Negozio di fai-da-te", + "ja": "ホームセンター", + "ko": "DIY 가게", + "lt": "Pasidaryk pats parduotuvė", + "mk": "Продавница за мајсторисување", + "ms": "Kedai DIY", + "nl": "Bouwmarkt, doe-het-zelfwinkel", + "no": "Byggevarehus", + "pl": "Market budowlany / sklep dla majsterkowiczów", + "pt-BR": "Loja de Ferragens/Bricolagem", + "pt": "Loja de bricolagem", + "ro": "Magazin DIY", + "ru": "Строительный магазин", + "sk": "Obchod pre kutilov", + "sl": "Orodjarna", + "sr": "Продавница све за кућу", + "sv": "Byggmarknad", + "tr": "Malzeme Mağazası", + "uk": "Зроби сам", + "vi": "Tiệm Vật liệu Xây dựng", + "yue": "自組舖", + "zh-CN": "DIY店", + "zh-HK": "DIY店", + "zh-TW": "DIY商店", + "zh": "DIY商店" + } + }, + "shop/doors": { + "title": { + "C": "Door Shop", + "ar": "متجر بيع أبواب", + "ca": "Botiga de portes", + "cs": "prodejna dveří", + "da": "Dørforhandler", + "de": "Türgeschäft", + "el": "Κατάστημα Πορτών", + "en": "Door Shop", + "eo": "Vendejo de pordoj", + "es": "Tienda de puertas (aberturas)", + "fa": "فروشگاه درب", + "fi": "Oviliike", + "fr": "Magasin de portes", + "gl": "Tenda de portas", + "he": "חנות דלתות", + "hu": "Ajtószaküzlet", + "it": "Negozio di porte", + "ja": "ドア販売店", + "ko": "문 가게", + "mk": "Продавница за врати", + "nl": "Deurenwinkel", + "no": "Dør Butikk", + "pl": "Sklep z drzwiami", + "pt-BR": "Loja de portas", + "pt": "Loja de portas", + "ru": "Магазин дверей", + "sr": "Продавница врата", + "sv": "Affär med dörrar", + "tr": "Kapı Dükkanı", + "uk": "Магазин дверей", + "vi": "Tiệm Cửa", + "zh-CN": "门业店", + "zh-TW": "門店" + } + }, + "shop/dry_cleaning": { + "title": { + "C": "Dry Cleaner", + "ar": "مغسلة ملابس بالبخار", + "ast": "Llimpieza en seco", + "ca": "Bugaderia", + "cs": "Čistírna", + "da": "Renseri", + "de": "Chemische Reinigung", + "el": "Στεγνοκαθαριστήριο", + "en-GB": "Dry Cleaner", + "en": "Dry Cleaner", + "eo": "Vest-lavejo (nepolara solvilo)", + "es": "Tintorería", + "et": "Keemiline puhastus", + "fa": "خشکشویی", + "fi": "Kuivapesula", + "fr": "Pressing", + "gl": "Tinturaría", + "he": "ניקוי יבש", + "hr": "Kemijska čistionica", + "hu": "Vegytisztitó", + "id": "Jasa Cuci Kering", + "is": "Þurrhreinsun", + "it": "Lavanderia", + "ja": "クリーニング店", + "ko": "드라이클리닝", + "lv": "Ķīmiskā tīrītava", + "mk": "Хемиско чистење", + "ms": "Kedai Cucian Kering", + "nl": "Stomerij", + "no": "Renseri", + "pl": "Pralnia chemiczna", + "pt-BR": "Lavanderia a seco", + "pt": "Limpeza a seco", + "ro": "Uscător", + "ru": "Химчистка", + "sk": "Čistiareň odevov", + "sl": "Čistilnica", + "sq": "Pastrim Kimik", + "sr": "Хемијско чишћење", + "sv": "Kemtvätt", + "tr": "Kuru Temizleme Mağazası", + "uk": "Хімчистка", + "vi": "Tiệm Giặt khô", + "zh-CN": "干洗店", + "zh-HK": "乾洗店", + "zh-TW": "乾洗店" + } + }, + "shop/e-cigarette": { + "title": { + "C": "E-Cigarette Shop", + "ar": "متجر سجائر إلكترونية", + "ca": "Botiga de cigars electrònics", + "cs": "Obchod s e-cigaretami", + "da": "E-cigaretbutik", + "de": "E-Zigarettengeschäft", + "el": "Κατάστημα Ηλεκτρονικού Τσιγάρου", + "en-GB": "E-Cigarette Shop", + "en": "E-Cigarette Shop", + "eo": "Elektronik-cigareda vendejo", + "es": "Tienda de cigarrillo electrónico", + "et": "E-sigaretipood", + "fa": "فروشگاه سیگار الکترونیکی", + "fi": "Sähkösavukemyymälä", + "fr": "Magasin de cigarettes électroniques", + "gl": "Tenda de cigarros electrónicos", + "he": "חנות מוצרי עישון", + "hu": "E-cigaretta bolt", + "is": "Rafrettubúð", + "it": "Negozio di sigarette elettroniche", + "ja": "電子タバコ店", + "ko": "전자 담배 가게", + "lt": "El. cigarečių parduotuvė", + "lv": "E-Cigarešu veikals", + "mk": "Продавница за е-цигари", + "ms": "Kedai Rokok Elektronik", + "nl": "E-sigarettenwinkel", + "pl": "Sklep z e-papierosami", + "pt-BR": "Loja de cigarro eletrônico", + "pt": "Loja de cigarros eletrónicos", + "ro": "Magazin de Țigarete Electrice", + "ru": "Магазин электронных сигарет", + "sk": "Obchod s elektronickými cigaretami", + "sr": "Продавница електронских цигарета", + "sv": "Affär för elektroniska cigaretter", + "tr": "Elektronik Sigara Mağazası", + "uk": "Магазин Е-цигарок", + "vi": "Tiệm Thuốc lá Điện tử", + "zh-CN": "电子烟店", + "zh-HK": "電子煙店", + "zh-TW": "電子菸商店" + } + }, + "shop/electrical": { + "title": { + "C": "Electrical Equipment Store", + "am": "የኤሌትሪክ ዕቃዎች መሸጫ", + "ar": "متجر المستلزمات الإلكترونية", + "cs": "prodejna elektoniky", + "de": "Elektrofachgeschaft", + "el": "Κατάστημα Ηλεκτρολογικού Εξοπλισμού", + "en": "Electrical Equipment Store", + "eo": "Elektraĵa vendejo", + "es": "Tienda de equipos eléctricos", + "et": "Elektrikauba pood", + "fa": "فروشگاه کالای برق", + "fi": "Sähkötarvikekauppa", + "fr": "Magasin d'équipements électriques", + "gl": "Tenda de material de electrónica", + "he": "חנות מוצרי חשמל", + "hu": "Villamossági szaküzlet", + "it": "Negozio di materiale elettrico", + "ja": "電気店", + "ko": "전기 기구 가게", + "mk": "Продавница за електрика", + "nl": "Winkel voor elektriciteitsbenodigdheden", + "no": "Elektrisk utstyrsbutikk", + "pl": "Sklep elektryczny", + "pt-BR": "Loja de equipamentos elétricos", + "pt": "Loja de material elétrico", + "ru": "Магазин электротоваров", + "sr": "Продавница беле технике", + "sv": "Affär med elutrustning", + "tr": "Elektrikli Ekipman Mağazası", + "uk": "Магазин електротехнічного обладнання", + "vi": "Tiệm Linh kiện Điện tử", + "zh-CN": "电气设备店", + "zh-TW": "電氣材料行" + } + }, + "shop/electronics": { + "title": { + "C": "Electronics Store", + "af": "Elektronikawinkel", + "am": "ኤሌክትሮኒክስ መሸጫ ሱቅ", + "ar": "محل إلكترونيات", + "ast": "Electrónica", + "bg": "Магазин за електроника", + "bn": "ইলেকট্রনিক্স-এর দোকান", + "bs": "Prodavnica elektronike", + "ca": "Botiga d'electrònica", + "cs": "Elektro", + "da": "Elektronikbutik", + "de": "Elektronikfachgeschäft", + "el": "Κατάστημα Ηλεκτρονικών", + "en-GB": "Electronics Shop", + "en": "Electronics Store", + "eo": "Elektronika vendejo", + "es": "Tienda de electrónica y electrodomésticos", + "et": "Elektroonikapood", + "fa": "فروشگاه لوازم برقی", + "fi": "Elektroniikkamyymälä", + "fr": "Magasin d'électronique et d'électroménager", + "gl": "Tenda de electrodomésticos", + "he": "חנות אלקטרוניקה", + "hr": "Prodavaonica elektronike", + "hu": "Szórakoztató elektronikai bolt", + "id": "Toko Elektronik", + "is": "Rafeindatækjaverslun", + "it": "Negozio di elettronica", + "ja": "家電販売店(小型製品)", + "ko": "전자 제품 가게", + "lt": "Elektronikos parduotuvė", + "lv": "Elektronikas veikals", + "mk": "Продавница за електронска роба", + "ms": "Kedai Elektronik", + "nl": "Huishoudtoestellen-/Witgoedwinkel", + "no": "Elektronikkbutikk", + "pl": "Sklep z elektroniką/RTV/AGD", + "pt-BR": "Loja de Eletrônicos", + "pt": "Loja de eletrodomésticos", + "ro": "Magazin de Electronice", + "ru": "Магазин бытовой электроники", + "sk": "Elektro obchod", + "sl": "Elektronska trgovina", + "sr": "Продавница електронике", + "sv": "Elektronikbutik", + "tr": "Elektronik Mağazası", + "uk": "Електроніка", + "vi": "Tiệm Điện tử", + "yue": "電器舖", + "zh-CN": "电器店", + "zh-HK": "電子舖", + "zh-TW": "電器店", + "zh": "电器店" + } + }, + "shop/erotic": { + "title": { + "C": "Erotic Store", + "ast": "Artículos eróticos", + "ca": "Botiga d'articles eròtics", + "cs": "Sex shop", + "da": "Erotikbutik", + "de": "Erotikgeschäft", + "el": "Μαγαζί ερωτικών ειδών", + "en-GB": "Erotic Shop", + "en": "Erotic Store", + "eo": "Seksumila vendejo", + "es": "Tienda erótica", + "et": "Erootikapood", + "fa": "فروشگاه لوازم بزرگسالان", + "fi": "Erotiikkamyymälä", + "fr": "Sex-shop", + "gl": "Tenda erótica", + "he": "חנות ארוטיקה", + "hr": "Prodavaonica erotskih pomagala", + "hu": "Szexbolt", + "is": "Hjálpartæki ástarlífsins", + "it": "Negozio erotico", + "ja": "アダルトショップ", + "ko": "성인용품 가게", + "lt": "Erotikos parduotuvė", + "lv": "Erotiskais veikals", + "mk": "Еротска продавница", + "nl": "Seksshop", + "no": "Erotikkbutikk", + "pl": "Sex shop", + "pt-BR": "Sex Shop", + "pt": "Sex shop", + "ro": "Magazin Erotic", + "ru": "Секс-шоп", + "sk": "Ochod s erotickými potrebami", + "sl": "Erotična trgovina", + "sr": "Продавница еротике", + "sv": "Sexshop", + "tr": "Erotik Ürünler Mağazası", + "uk": "Секс-шоп", + "vi": "Tiệm Bán đồ Khiêu dâm", + "zh-CN": "情趣用品店", + "zh-HK": "情趣用品店", + "zh-TW": "情趣用品店" + } + }, + "shop/fabric": { + "title": { + "C": "Fabric Store", + "ar": "محل بيع الأقمشة", + "ca": "Botiga de teles", + "cs": "Obchod s textilem", + "da": "Stofforretning", + "de": "Stoffgeschäft", + "el": "Πωλήσεις Υφασμάτων", + "en-GB": "Fabric Shop", + "en": "Fabric Store", + "eo": "Teksaĵa vendejo", + "es": "Tienda textil", + "et": "Kangakauplus", + "fa": "پارچه فروشی", + "fi": "Kangaskauppa", + "fr": "Magasin de tissus", + "gl": "Tenda de teas", + "he": "חנות אריגה", + "hr": "Trgovina za tkanine", + "hu": "Méteráru-bolt", + "id": "Toko Kain", + "is": "Álnavöruverslun", + "it": "Negozio di tessuti", + "ja": "生地屋", + "ko": "직물 가게", + "lt": "Audinių parduotuvė", + "lv": "Audumu veikals", + "mk": "Продавница за ткаенини", + "ms": "Kedai Fabrik", + "nl": "Stofwinkel", + "no": "Stoffbutikk", + "pl": "Sklep z tkaninami", + "pt-BR": "Loja de Tecidos", + "pt": "Loja de tecidos", + "ro": "Magazin de Materiale", + "ru": "Магазин тканей", + "sk": "Obchod s látkami", + "sl": "Trgovina z metrskim blagom", + "sr": "Продавница текстила", + "sv": "Tygaffär", + "tr": "Kumaş Mağazası", + "uk": "Магазин тканин", + "vi": "Tiệm Vải", + "zh-CN": "布店", + "zh-HK": "布料店", + "zh-TW": "帆布店" + } + }, + "shop/farm": { + "title": { + "C": "Produce Stand", + "af": "Padstal", + "ar": "متجر داخل مزرعة ويبيع منتجاتها", + "bg": "Щанд за плодове и зеленчуци", + "bs": "Štand proizvodnje", + "ca": "Estand productiu", + "cs": "Stánek s ovocem, zeleninou", + "da": "Gårdbutik", + "de": "Hofladen", + "el": "Πάγκος Παραγωγής", + "en-GB": "Farm Shop", + "en": "Produce Stand", + "eo": "Terfrukta vendotablo", + "es": "Tienda de productos agrícolas", + "et": "Talukaup", + "fa": "غرفه میوه و سبزی باغ", + "fi": "Maatilan suoramyynti", + "fr": "Magasin de producteurs", + "gl": "Tenda de produtos agrícolas", + "he": "דוכן ירקות", + "hr": "Prodavaonica proizvoda farme", + "hu": "Termelői bolt", + "is": "Vörubás", + "it": "Banchetto Alimentari Freschi", + "ja": "農産物直売所", + "ko": "산지 직매", + "lt": "Produktų stendas", + "mk": "Пилјарска тезга", + "nl": "Boerderijwinkel voor groente en fruit", + "no": "Gårdsutsalg", + "pl": "Stragan świeżych produktów", + "pt-BR": "Quitanda de Produção Local", + "pt": "Loja de produtos agrícolas locais", + "ru": "Магазин свежих продуктов", + "sk": "Voľný predaj ovocia", + "sl": "Prodaja domačih pridelkov", + "sr": "Производни штанд", + "sv": "Gårdsbutik", + "tr": "Manav", + "uk": "Стелаж з фермерськими товарами", + "vi": "Quầy Nông sản", + "yue": "檔", + "zh-CN": "农产直销店", + "zh-HK": "農產品檔攤", + "zh-TW": "產地直銷店" + } + }, + "shop/fashion_accessories": { + "title": { + "C": "Fashion Accessories Store", + "ar": "محل اكسسوارات الموضة", + "ca": "Botiga d'accessoris de moda", + "cs": "prodejna módních doplňků", + "de": "Geschäft für Modeaccessoires", + "el": "Κατάστημα για Αξεσουάρ Μόδας", + "en": "Fashion Accessories Store", + "eo": "Galanteria (vestaj akcesoraĵoj) vendejo", + "es": "Tienda de accesorios de moda", + "fa": "فروشگاه لوازم مد", + "fi": "Muotitarvikekauppa", + "fr": "Boutique d'accessoires de mode", + "gl": "Tenda de accesorios de moda", + "he": "חנות אביזרי אופנה", + "hu": "Divat kiegészítők boltja", + "it": "Negozio di accessori di moda", + "ja": "ファッション小物店", + "ko": "패션 액세서리 가게", + "mk": "Продавница за модни додатоци", + "nl": "Modeaccessoirewinkel", + "pl": "Sklep z galanterią", + "pt-BR": "Loja de acessórios de moda", + "pt": "Loja de acessórios de moda", + "ru": "Магазин модных аксессуаров", + "sv": "Affär för modeaccessoarer", + "tr": "Moda Aksesuarları Mağazası", + "uk": "Магазин модних аксесуарів", + "vi": "Tiệm Phụ kiện Thời trang", + "zh-CN": "饰品店", + "zh-TW": "服裝配飾商店" + } + }, + "shop/fireplace": { + "title": { + "C": "Fireplace Store", + "ar": "متجر بيع المواقد والدفايات", + "ca": "Botiga de llars de foc", + "cs": "prodej krbů a kamen", + "de": "Kachelofenladen", + "el": "Είδη Τζακιού", + "en": "Fireplace Store", + "eo": "Kamen-vendejo", + "es": "Tienda de chimeneas", + "et": "Küttekollete pood", + "fa": "فروشگاه شومینه ، بخاری", + "fi": "Takkamyymälä", + "fr": "Magasin de cheminées", + "gl": "Tenda de chemineas", + "he": "חנות חימום", + "hu": "Cserépkályha- és kandalló-szaküzlet", + "it": "Negozio di caminetti", + "ja": "暖房具店", + "ko": "벽난로 가게", + "mk": "Продавница за камини", + "nl": "Haardwinkel", + "no": "Peisbutikk", + "pl": "Sklep z kominkami", + "pt-BR": "Loja de Lareiras", + "pt": "Loja de lareiras", + "ru": "Продажа каминов", + "sv": "Kaminbutik", + "tr": "Şömine Mağazası", + "uk": "Печі, каміни", + "vi": "Tiệm Lò sưởi", + "zh-CN": "壁炉用品店", + "zh-TW": "壁爐商店" + } + }, + "shop/fishing": { + "title": { + "C": "Fishing Shop", + "ar": "محل معدات الصيد البحري", + "cs": "Rybářské potřeby", + "de": "Angelgeschäft", + "el": "Είδη Αλιείας", + "en": "Fishing Shop", + "eo": "Fiŝkaptil-vendejo", + "es": "Tienda de pesca", + "et": "Kalastustarvete pood", + "fa": "فروشگاه لوازم ماهی گیری", + "fi": "Kalastuskauppa", + "fr": "Magasin de pêche", + "gl": "Tenda de pesca", + "he": "חנות דיג", + "hr": "Prodavaonica ribolovne opreme", + "hu": "Horgászbolt", + "it": "Negozio di pesca", + "ja": "釣具店", + "ko": "낚시 가게", + "mk": "Риболовна продавница", + "nl": "Hengelsportwinkel", + "no": "Fiskebutikk", + "pl": "Sklep wędkarski", + "pt-BR": "Loja de pesca", + "pt": "Loja de artigos de pesca", + "ru": "Рыболовный магазин", + "sk": "Rybárske potreby", + "sr": "Продавница рибе", + "sv": "Fiskeaffär", + "tr": "Balıkçılık Mağazası", + "uk": "Рибальський магазин", + "vi": "Tiệm Cần câu", + "zh-CN": "钓鱼店", + "zh-TW": "釣魚用品店" + } + }, + "shop/flooring": { + "title": { + "C": "Flooring Supply Shop", + "ar": "محل بيع أرضيات", + "cs": "podlahové krytiny", + "de": "Fußbodengeschäft", + "en": "Flooring Supply Shop", + "eo": "Plank-vendejo", + "es": "Tienda de suministros para pisos", + "fa": "فروشگاه لوازم جانبی کفپوش", + "gl": "Tenda de chans", + "he": "חנות ריצוף", + "hu": "Parkettabolt", + "it": "Negozio di articoli per pavimentazioni", + "ja": "床用品店", + "ko": "바닥재 가게", + "mk": "Продавница за подови", + "nl": "Vloerwinkel", + "pl": "Sklep z posadzkami", + "pt-BR": "Loja de materiais para pisos", + "pt": "Loja de material de pavimentação", + "sv": "Affär för golv", + "tr": "Döşeme Malzemeleri Mağazası", + "uk": "Магазин напільних матеріалів", + "zh-CN": "地板店", + "zh-TW": "地板商店" + } + }, + "shop/florist": { + "title": { + "C": "Florist", + "af": "Bloemiste", + "am": "የአበባ መሸጫ", + "ar": "محل بيع الورود", + "ast": "Floristería", + "bg": "Магазин за цветя", + "bn": "ফুল ব্যবসায়ী", + "bs": "Cvjećar", + "ca": "Floristeria", + "cs": "Květinářství", + "da": "Blomsterbutik", + "de": "Blumenhändler", + "el": "Ανθοπωλείο", + "en-GB": "Florist", + "en": "Florist", + "eo": "Florvendejo", + "es": "Floristería", + "et": "Lillepood", + "fa": "گل فروشی", + "fi": "Kukkakauppa", + "fr": "Fleuriste", + "gl": "Floraría", + "he": "חנות פרחים", + "hr": "Cvjećarna", + "hu": "Virágbolt", + "id": "Toko Bunga", + "is": "Blómabúð", + "it": "Fioraio", + "ja": "生花店", + "kn": "ಹೂವಿನ ವ್ಯಾಪಾರಿ", + "ko": "꽃 가게", + "lt": "Gėlės", + "lv": "Florists", + "mk": "Цвеќарница", + "ms": "Kedai Bunga", + "nl": "Bloemenwinkel", + "no": "Blomsterbutikk", + "pl": "Kwiaciarnia", + "pt-BR": "Floricultura", + "pt": "Florista", + "ro": "Florărie", + "ru": "Цветочный магазин", + "sk": "Kvetinárstvo", + "sl": "Cvetličarna", + "sr": "Цвећар", + "sv": "Florist", + "ta": "பூக்கடை", + "tr": "Çiçekçi", + "uk": "Квіти", + "vi": "Tiệm Hoa", + "yue": "花舖", + "zh-CN": "花店", + "zh-HK": "花店", + "zh-TW": "花店", + "zh": "花店" + } + }, + "shop/frame": { + "title": { + "C": "Framing Shop", + "ar": "محل تأطير (بيع إطارات صور)", + "ast": "Marcos", + "ca": "Botiga de marcs", + "cs": "Rámařství", + "da": "Rammebutik", + "de": "Bilderrahmengeschäft", + "el": "Κατάστημα Πλαισίων", + "en-GB": "Framing Shop", + "en": "Framing Shop", + "eo": "Bild-kadra vendejo", + "es": "Tienda de enmarcación", + "et": "Raamikauplus", + "fa": "قاب سازی", + "fi": "Kehystämö", + "fr": "Magasin d'encadrements", + "gl": "Tenda de enmarcado", + "he": "חנות חקלאות", + "hr": "Trgovina za okvire", + "hu": "Képkeret-bolt", + "id": "Toko Bingkai", + "is": "Innrömmun", + "it": "Negozio di cornici", + "ja": "額縁店", + "ko": "액자 가게", + "lt": "Įrėminimo parduotuvė", + "mk": "Врамувачница", + "nl": "Kaderwinkel", + "no": "Innrammingsbutikk", + "pl": "Sklep z ramami", + "pt-BR": "Loja de Molduras", + "pt": "Loja de molduras", + "ru": "Магазин рамок для фотографий и картин", + "sk": "Obchod s rámami", + "sr": "Стаклар", + "sv": "Ramaffär", + "tr": "Çerçeve Mağazası", + "uk": "Багетна майстерня", + "vi": "Tiệm Khung Tranh", + "zh-CN": "相框店", + "zh-HK": "表框店", + "zh-TW": "表框店" + } + }, + "shop/frozen_food": { + "title": { + "C": "Frozen Food Store", + "ar": "متجر أغذية مجمدة", + "ca": "Botiga de menjars congelats", + "cs": "prodejna mražených potravin", + "de": "Geschäft für Tiefkühlprodukte", + "el": "Κατάστημα Κατεψυγμένων Τροφίμων", + "en": "Frozen Food Store", + "eo": "Frostigit-manĝaĵa vendejo", + "es": "Tienda de alimentos congelados", + "fa": "فروشگاه غذای منجمد", + "fr": "Magasin de produits surgelés", + "gl": "Tenda de conxelados", + "he": "חנות מזון קפוא", + "hu": "Fagyasztottélelmiszer-bolt", + "it": "Negozio di cibo surgelato", + "ja": "冷凍食品店", + "ko": "냉동식품 가게", + "mk": "Продавница за замрзната храна", + "nl": "Winkel voor bevroren voedsel", + "pl": "Sklep z mrożonkami", + "pt-BR": "Loja de alimentos congelados", + "pt": "Loja de comida congelada", + "ru": "Магазин замороженных продуктов", + "sk": "Obchod s mrazenými potravinami", + "sr": "Продавница смрзнуте хране", + "sv": "Affär för fryst mat", + "tr": "Donmuş Yiyecek Mağazası", + "uk": "Заморожені продукти", + "vi": "Tiệm Thực phẩm Đông lạnh", + "zh-CN": "冷冻食品店", + "zh-TW": "冷凍食品商店" + } + }, + "shop/fuel": { + "title": { + "C": "Fuel Shop", + "am": "ነዳጅ ማደያ", + "ar": "متجر بيع الوقود", + "cs": "Obchod s palivem", + "de": "Tankstelle", + "el": "Κατάστημα Καυσίμων", + "en": "Fuel Shop", + "eo": "Brulaĵ-vendejo", + "es": "Tienda de combustible", + "et": "Küttepood", + "fa": "فروشگاه سوخت", + "fi": "Polttoainemyymälä", + "fr": "Revendeur de carburant", + "gl": "Tenda de combustíbel", + "he": "חנות נוחות", + "hu": "Üzemanyag-szaküzlet", + "it": "Negozio di carburanti", + "ja": "燃料店", + "ko": "연료 가게", + "mk": "Продавница за гориво", + "nl": "Tankstation", + "no": "Drivstoffbuttikk", + "pl": "Sklep z paliwami", + "pt-BR": "Loja de Combustível", + "pt": "Loja de combustíveis", + "sv": "Bränsleaffär", + "tr": "Akaryakıt İstasyonu", + "uk": "Паливо", + "vi": "Tiệm Nhiên liệu", + "zh-CN": "燃料店", + "zh-TW": "燃料店" + } + }, + "shop/funeral_directors": { + "title": { + "C": "Funeral Home", + "ar": "محل بيع أكفان ومستلزمات الجنائز", + "ast": "Velatoriu", + "ca": "Tanatori", + "cs": "Pohřební služba", + "da": "Bedemandsforretning", + "de": "Beerdigungsinstitut", + "el": "Γραφείο Τελετών", + "en-GB": "Funeral Home", + "en": "Funeral Home", + "eo": "Tombistejo", + "es": "Funeraria", + "et": "Matusebüroo", + "fa": "غسالخانه", + "fi": "Hautaustoimisto", + "fr": "Funérarium", + "gl": "Funeraria", + "he": "קברן", + "hr": "Pogrebno poduzeće", + "hu": "Temetkezési iroda", + "id": "Rumah Pemakaman", + "is": "Útfararheimili", + "it": "Casa funeraria", + "ja": "葬儀社", + "kn": "ಶವಸಂಸ್ಕಾರದ ನೆಲೆ", + "ko": "장례식장", + "lt": "Laidojimo namai", + "lv": "Apbedīšanas birojs", + "mk": "Погребално друштво", + "nl": "Begrafenisondernemer", + "no": "Begravelsesagent", + "pl": "Zakład pogrzebowy", + "pt-BR": "Funerária", + "pt": "Agência funerária", + "ro": "Casă Funerală", + "ru": "Бюро похоронных услуг", + "sk": "Pohrebný ústav", + "sl": "Pogrebne storitve", + "sr": "Продавница загробне опреме", + "sv": "Begravningsbyrå", + "tr": "Cenaze Koordinatörü", + "uk": "Ритуальні послуги", + "vi": "Nhà quàn", + "yue": "殯儀館", + "zh-CN": "殡仪馆", + "zh-HK": "殯儀館", + "zh-TW": "生命禮儀公司" + } + }, + "shop/furniture": { + "title": { + "C": "Furniture Store", + "af": "Meubelwinkel", + "am": "የቤትና የቢሮ ዕቃዎች መሸጫ", + "ar": "محل بيع أثاث", + "ast": "Mueblería", + "bg": "Мебелен магазин", + "bn": "আসবাবপত্রের দোকান", + "bs": "Salon namještaja", + "ca": "Botiga de mobles", + "cs": "Nábytek", + "da": "Møbelforhandler", + "de": "Möbelhaus", + "el": "Κατάστημα Επίπλων", + "en-GB": "Furniture Shop", + "en": "Furniture Store", + "eo": "Mebla vendejo", + "es": "Mueblería", + "et": "Mööblipood", + "fa": "فروشگاه مبلمان", + "fi": "Huonekaluliike", + "fr": "Magasin de meubles", + "gl": "Moblaría", + "he": "חנות רהיטים", + "hr": "Salon namještaja", + "hu": "Bútorbolt", + "id": "Toko Furnitur", + "is": "Húsgagnaverslun", + "it": "Negozio di mobili", + "ja": "家具店", + "kn": "ಪಿಟೋಪಕರಣಗಳ ಅಂಗಡಿ", + "ko": "가구점", + "lt": "Baldų parduotuvė", + "lv": "Mēbeļu veikals", + "mk": "Салон за мебел", + "nl": "Meubelzaak", + "no": "Møbelforhandler", + "pl": "Sklep meblowy", + "pt-BR": "Loja de Móveis", + "pt": "Loja de mobiliário", + "ro": "Magazin de Mobilă", + "ru": "Мебельный магазин", + "sk": "Obchod s nábytkom", + "sl": "Trgovina s pohištvom", + "sr": "Продавница намештаја", + "sv": "Möbelaffär", + "tr": "Mobilya Mağazası", + "uk": "Меблі", + "vi": "Cửa hàng Nội thất", + "yue": "傢俬舖", + "zh-CN": "家具店", + "zh-HK": "傢俬店", + "zh-TW": "傢具店", + "zh": "家具店" + } + }, + "shop/games": { + "title": { + "C": "Tabletop Game Store", + "ar": "متجر ألعاب الطاولة", + "cs": "deskové hry", + "de": "Brettspielgeschäft", + "el": "Κατάστημα Επιταπέζιων Παιχνιδιών", + "en": "Tabletop Game Store", + "eo": "Tabullud‑vendejo", + "es": "Tienda de juegos de mesa", + "fi": "Lautapeliliike", + "fr": "Magasin de jeux de plateau", + "gl": "Tenda de xogos de mesa", + "he": "חנות משחקי קופסה", + "hu": "Társasjáték-bolt", + "it": "Negozio di giochi da tavolo", + "ja": "ボードゲーム販売店", + "ko": "보드게임 가게", + "mk": "Продавница за столни игри", + "nl": "Bordspellenwinkel", + "no": "Bordspill Butikk", + "pl": "Sklep z grami", + "pt-BR": "Loja de jogos de mesa", + "pt": "Loja de jogos de tabuleiro", + "ru": "Магазин настольных игр", + "sk": "Obchod so stolovými hrami", + "sr": "Продавница друштвених игара", + "sv": "Affär för brädspel", + "tr": "Masa Oyunları Mağazası", + "uk": "Настільні ігри", + "zh-CN": "桌游店", + "zh-TW": "桌遊店" + } + }, + "shop/garden_centre": { + "title": { + "C": "Garden Center", + "af": "Tuinsentrum", + "ar": "مشتل", + "ast": "Xardinería", + "bg": "Градински център", + "bs": "Centar za baštovanstvo", + "ca": "Centre de jardineria", + "cs": "Zahradnictví", + "da": "Havecenter", + "de": "Gartenzentrum", + "el": "Κέντρο Κήπου", + "en-AU": "Garden Centre", + "en-GB": "Garden Centre", + "en": "Garden Center", + "eo": "Ĝarden-vendejo", + "es": "Centro de jardinería / Vivero", + "et": "Aianduskeskus", + "fa": "مرکز خرید گل و گلدان", + "fi": "Puutarhamyymälä", + "fr": "Magasin spécialiste du jardin", + "gl": "Centro de xardinaría", + "he": "חנות גננות", + "hr": "Vrtni centar", + "hu": "Kertészet", + "id": "Toko Tanaman", + "is": "Garðaverslun", + "it": "Vivaio", + "ja": "園芸用品店", + "ko": "원예 용품점", + "lt": "Sodo centras", + "lv": "Dārzkopības veikals", + "mk": "Градинарски центар", + "nl": "Tuincentrum", + "no": "Gartneri", + "pl": "Centrum ogrodnicze", + "pt-BR": "Centro de Jardinagem", + "pt": "Loja de jardinagem", + "ro": "Magazin de Grădinărit", + "ru": "Садовые принадлежности", + "sk": "Záhradné centrum", + "sl": "Vrtni center", + "sr": "Баштенски центар", + "sv": "Trädgårdscenter", + "tr": "Bahçe Düzenleme Mağazası", + "uk": "Садово-парковий центр", + "vi": "Trung tâm Làm vườn", + "yue": "園藝舖", + "zh-CN": "园艺品店", + "zh-HK": "園藝中心", + "zh-TW": "園藝中心", + "zh": "花店" + } + }, + "shop/gas": { + "title": { + "C": "Bottled Gas Shop", + "ar": "محل بيع الغاز المعبأ", + "ast": "Gas embotelláu", + "cs": "Obchod s lahvovým plynem", + "da": "Gasflaskebutik", + "de": "Gasflaschenverkauf", + "el": "Κατάστημα Εμφιαλωμένων Αερίων", + "en-GB": "Bottled Gas Shop", + "en": "Bottled Gas Shop", + "eo": "Gasuja vendejo", + "es": "Tienda de gas embotellado", + "et": "Balloongaasi kauplus", + "fa": "فروشگاه کپسول گاز / پیکنیکی", + "fi": "Kaasupulloliike", + "fr": "Magasin de bouteilles de gaz", + "gl": "Tenda de bombonas de gas", + "he": "חנות גז", + "hu": "Palackozottgáz-bolt", + "is": "Verslun með flöskugas", + "it": "Bombolaio", + "ja": "ガスボンベ店", + "ko": "가스통 가게", + "lv": "Gāzes balonu veikals", + "mk": "Продавница за плински боци", + "nl": "Gasflessenwinkel", + "pl": "Sklep z butlami gazowymi", + "pt-BR": "Distribuidor de Gás", + "pt": "Loja de botijas de gás", + "ru": "Магазин газовых баллонов", + "sl": "Trgovina s plinskimi jeklenkami", + "sv": "Försäljning av gas", + "tr": "Tüpçü", + "uk": "Продаж зрідженого газу", + "vi": "Tiệm Ga", + "zh-CN": "瓶装燃气站", + "zh-HK": "瓶裝石油氣店", + "zh-TW": "瓦斯店" + } + }, + "shop/general": { + "title": { + "C": "General Store", + "ar": "متجر عام", + "cs": "smíšené zboží", + "de": "Gemischtwarenhandlung", + "el": "Κατάστημα", + "en": "General Store", + "eo": "Ĝenerala vendejo", + "es": "Tienda general", + "et": "Kauplus", + "fa": "فروشگاه عمومی", + "fi": "Sekatavarakauppa", + "fr": "Magasin général", + "gl": "Tenda xeral", + "he": "חנות כללית", + "hu": "Vegyesbolt", + "id": "Warung", + "it": "Emporio", + "ja": "よろず屋", + "mk": "Општа продавница", + "nl": "Algemene winkel", + "pl": "Sklep wielobranżowy", + "pt-BR": "Loja geral", + "pt": "Mercearia", + "sv": "Generell affär", + "tr": "Genel Mağaza", + "uk": "Крамниця", + "zh-CN": "杂货店", + "zh-TW": "一般商店" + } + }, + "shop/gift": { + "title": { + "C": "Gift Shop", + "af": "Geskenkwinkel", + "ar": "محل بيع هدايا", + "ast": "Regalos", + "bg": "Магазин за подаръци", + "bn": "উপহারের দোকান", + "bs": "Prodavnica suvenira", + "ca": "Botiga de regals", + "cs": "Dárky, suvenýry", + "da": "Gavebutik", + "de": "Geschenkeladen", + "el": "Κατάστημα Δώρων", + "en-GB": "Gift Shop", + "en": "Gift Shop", + "eo": "Suvenira vendejo", + "es": "Tienda de regalos", + "et": "Kingipood", + "fa": "فروشگاه لوازم کادویی", + "fi": "Lahjamyymälä", + "fr": "Boutique de cadeaux", + "gl": "Tenda de agasallos", + "he": "חנות מתנות", + "hr": "Suvenirnica", + "hu": "Ajándékbolt", + "id": "Toko Hadiah", + "is": "Gjafavörubúð", + "it": "Negozio souvenir", + "ja": "ギフト店", + "kn": "ಉಡುಗೊರೆಯ ಅಂಗಡಿ", + "ko": "선물 가게", + "lt": "Dovanų parduotuvė", + "lv": "Dāvanu veikals", + "mk": "Продавница за подароци", + "nl": "Cadeauwinkel", + "no": "Gavebutikk", + "pl": "Sklep z pamiątkami", + "pt-BR": "Loja de Presentes", + "pt": "Loja de lembranças", + "ro": "Magazin de Cadouri", + "ru": "Магазин сувениров", + "sk": "Darčekový obchod", + "sl": "Prodajalna daril", + "sr": "Продавница поклона", + "sv": "Presentbutik", + "tr": "Hediyelik Eşya Dükkanı", + "uk": "Подарунки", + "vi": "Tiệm Quà tặng", + "yue": "禮品舖", + "zh-CN": "礼品店", + "zh-HK": "禮品店", + "zh-TW": "禮品店", + "zh": "礼品店" + } + }, + "shop/greengrocer": { + "title": { + "C": "Greengrocer", + "af": "Groentewinkel", + "am": "አትክልት መሸጫ ሱቆች", + "ar": "متجر خضروات", + "ast": "Frutería", + "bg": "Плод-зеленчук", + "bs": "Zelenara", + "ca": "Fruiteria", + "cs": "Ovoce a zelenina", + "da": "Grønthandler", + "de": "Obst- und Gemüseladen", + "el": "Οπωροπωλείο", + "en-GB": "Greengrocer", + "en": "Greengrocer", + "eo": "Legom-butiko", + "es": "Verdulería / Frutería", + "et": "Aedviljapood", + "fa": "سبزی و میوه فروشی", + "fi": "Kasviskauppa", + "fr": "Marchand de fruits et légumes", + "gl": "Froitaría", + "he": "ירקן", + "hr": "Voćarna", + "hu": "Zöldséges", + "id": "Toko Buah dan Sayuran", + "is": "Grænmetissali", + "it": "Fruttivendolo", + "ja": "八百屋・果物屋", + "ko": "청과상", + "lt": "Daržovių ir vaisių pardavėjas", + "mk": "Пилјарница", + "ms": "Kedai Menjual Sayur", + "nl": "Groenteboer", + "no": "Grønnsakshandler", + "pl": "Warzywniak", + "pt-BR": "Verdureira ou quitanda", + "pt": "Loja de frutas e verduras", + "ru": "Магазин овощей и фруктов", + "sk": "Predajňa zeleniny", + "sl": "Sadje in zelenjava", + "sr": "Пиљар", + "sv": "Grönsakshandlare", + "tr": "Manav", + "uk": "Овочевий", + "vi": "Tiệm Rau quả", + "yue": "菜檔", + "zh-CN": "果蔬店", + "zh-HK": "菜檔", + "zh-TW": "蔬果店", + "zh": "果蔬店" + } + }, + "shop/hairdresser": { + "title": { + "C": "Hairdresser", + "af": "Haarkapper", + "am": "ፀጉር ቤት", + "ar": "حلاق", + "ast": "Peluquería", + "bg": "Фризьорски салон", + "bs": "Frizer", + "ca": "Perruqueria", + "cs": "Kadeřnictví", + "da": "Frisør", + "de": "Friseur", + "el": "Κομμωτήριο", + "en-GB": "Hairdresser", + "en": "Hairdresser", + "eo": "Frizejo", + "es": "Peluquería", + "et": "Juuksurisalong", + "fa": "آرایشگاه", + "fi": "Parturi-kampaamo", + "fr": "Salon de coiffure", + "gl": "Perrucaría", + "he": "מעצב שיער", + "hr": "Frizerski salon", + "hu": "Fodrász", + "id": "Salon", + "is": "Hárstofa", + "it": "Parrucchiere", + "ja": "理美容店", + "ko": "미용실", + "lt": "Kirpykla", + "lv": "Frizieris", + "mk": "Фризерски салон", + "nl": "Kapper", + "no": "Frisør", + "pl": "Fryzjer", + "pt-BR": "Cabeleireiro", + "pt": "Cabeleireiro(a)", + "ro": "Frizer", + "ru": "Парикмахерская", + "sk": "Kaderníctvo", + "sl": "Frizer", + "sr": "Фризер", + "sv": "Hårfrisör", + "tr": "Kuaför", + "uk": "Перукарня", + "vi": "Tiệm Làm tóc", + "yue": "飛髮舖", + "zh-CN": "理发店", + "zh-HK": "理髮店", + "zh-TW": "理髮店", + "zh": "理发点" + } + }, + "shop/hairdresser_supply": { + "title": { + "C": "Hairdresser Supply Store", + "ar": "متجر مستلزمات حلاقين", + "cs": "Kadeřnické potřeby", + "de": "Friseurbedarf", + "el": "Εξοπλισμός Κομμωτηρίου", + "en": "Hairdresser Supply Store", + "eo": "Frizist-ilara vendejo", + "es": "Tienda de suministros para peluquería", + "fa": "فروشگاه لوازم سلمانی", + "fi": "Hiustarvikemyymälä", + "fr": "Magasin de matériel de coiffure", + "gl": "Tenda de accesorios de salón de peiteado", + "he": "חנות ציוד לספרים", + "hu": "Fodrászkellék-bolt", + "it": "Negozio di prodotti per parrucchiere", + "ja": "理容用品店", + "ko": "미용실 용품 가게", + "mk": "Фризерски набавки", + "nl": "Haarbenodigdhedenwinkel", + "pl": "Sklep z artykułami fryzjerskimi", + "pt-BR": "Loja de suprimentos de cabeleireiro", + "pt": "Loja de acessórios de cabeleireiro", + "sv": "Affär för hårprodukter", + "tr": "Kuaför Malzemeleri Mağazası", + "uk": "Перукарські товари", + "vi": "Tiệm Mỹ phẩm Tóc", + "zh-CN": "美发美容用品店", + "zh-TW": "剪髮器材店" + } + }, + "shop/hardware": { + "title": { + "C": "Hardware Store", + "af": "Hardewarewinkel", + "am": "ሲኒማ ቤት", + "ar": "محل مواد بناء", + "ast": "Ferretería", + "bg": "Железария", + "bs": "Prodavnica željezarije", + "ca": "Ferreteria", + "cs": "Železářství", + "da": "Håndværkerbutik", + "de": "Eisenwarenhandel", + "dv": "ހާރޑްވެއާރ ފިހާރަ", + "el": "Χρωματοπωλείο", + "en-GB": "Hardware Shop", + "en": "Hardware Store", + "eo": "Laborila vendejo", + "es": "Ferretería", + "et": "Rauakauplus", + "fa": "فروشگاه ابزارآلات و یراق", + "fi": "Rautakauppa", + "fr": "Quincaillerie", + "gl": "Ferraxaría", + "he": "חנות אספקה טכנית", + "hr": "Željezarija", + "hu": "Vas-műszaki bolt", + "id": "Toko Perkakas", + "is": "Byggingavöruverslun", + "it": "Ferramenta", + "ja": "金物屋", + "ko": "철물점", + "lt": "Techninės įrangos parduotuvė", + "lv": "Celtniecības veikals", + "mk": "Продавница за алат и опрема", + "nl": "Bouwmarkt", + "no": "Jernvarehandel", + "pl": "Sklep z narzędziami", + "pt-BR": "Loja de Material de Construção", + "pt": "Loja de ferragens", + "ru": "Хозяйственный магазин", + "sk": "Železiarstvo", + "sl": "Železnina", + "so": "Dukaanka Qalabka", + "sr": "Гвожђара", + "sv": "Järnaffär", + "tr": "Donanım Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Ngũ kim", + "yue": "五金舖", + "zh-CN": "五金店", + "zh-HK": "五金店", + "zh-TW": "五金店", + "zh": "五金店" + } + }, + "shop/health_food": { + "title": { + "C": "Health Food Shop", + "ar": "متجر أغذية صحية", + "cs": "Obchod zdravé výživy", + "de": "Reformhaus", + "el": "Είδη Υγιεινής Διατροφής", + "en-GB": "Health Food Shop", + "en": "Health Food Shop", + "eo": "Sanig-manĝaĵa vendejo", + "es": "Tienda de comida saludable", + "et": "Tervisliku toidu kauplus", + "fa": "فروشگاه غذای سلامت‌زا", + "fi": "Terveysravinnemyymälä", + "fr": "Magasin d'alimentation de santé", + "gl": "Tenda de produtos saudábeis", + "he": "חנות מאכלי בריאות", + "hu": "Egészséges élelmiszerek boltja", + "is": "Verslun með heilsuvörur", + "it": "Prodotti per il benessere", + "ja": "健康食品店", + "ko": "건강식품 가게", + "mk": "Продавница за здрава храна", + "nl": "Gezondheidswinkel", + "no": "Helsekostbutikk", + "pl": "Sklep ze zdrową żywnością", + "pt-BR": "Loja de Alimentos Saudáveis", + "pt": "Loja de comida saudável", + "ru": "Магазин здорового питания", + "sk": "Obchod so zdravými potravinami", + "sv": "Hälsokostbutik", + "tr": "Sağlıklı Yiyecek Mağazası", + "uk": "Магазин здорового харчування", + "vi": "Tiệm Thực phẩm Tự nhiên", + "zh-CN": "保健食品店", + "zh-TW": "健康食品店" + } + }, + "shop/hearing_aids": { + "title": { + "C": "Hearing Aids Store", + "ar": "متجر سماعات الأذن الطبية", + "ast": "Audiólogu", + "ca": "Centre d'audició", + "cs": "Obchod s naslouchátky", + "da": "Høreapparatbutik", + "de": "Hörgerätegeschäft", + "el": "Κατάστημα ακουστικών βαρηκοΐας", + "en-GB": "Hearing Aids Shop", + "en": "Hearing Aids Store", + "eo": "Aŭd-helpila vendejo", + "es": "Tienda de audífonos", + "et": "Kuulmisabipood", + "fa": "فروشگاه لوازم کمک شنوایی", + "fi": "Kuuloapumyymälä", + "fr": "Audioprothésiste", + "gl": "Tenda de audífonos", + "he": "חנות מכשירי שמיעה", + "hr": "Prodavaonica slušnih pomagala", + "hu": "Hallókészülékbolt", + "id": "Toko Alat Bantu Dengar", + "is": "Heyrnartækjaverslun", + "it": "Negozio di apparecchi acustici", + "ja": "補聴器店", + "ko": "보청기 가게", + "lt": "Klausos aparatų parduotuvė", + "mk": "Продавница за слушни помагала", + "nl": "Hoorapparatenwinkel", + "no": "Høreapparatutsalg", + "pl": "Sklep z aparatami słuchowymi", + "pt-BR": "Loja de Aparelhos Auditivos", + "pt": "Loja de aparelhos auditivos", + "ru": "Магазин по продаже слуховых аппаратов", + "sk": "Obchod s načúvacími prístrojmi", + "sl": "Trgovina s slušnimi pripomočki", + "sv": "Hörapparater", + "tr": "İşitme Cihazı Mağazası", + "uk": "Слухові апарати", + "vi": "Tiệm Ống nghe", + "zh-CN": "听觉恢复用品店", + "zh-HK": "助聽器店", + "zh-TW": "助聽器店" + } + }, + "shop/herbalist": { + "title": { + "C": "Herbalist", + "ar": "محل بيع الأعشاب الطبية / عطار", + "ast": "Herbolariu", + "ca": "Herbolari", + "cs": "Bylinkářství", + "da": "Helseforretning", + "de": "Kräuterladen", + "el": "Βοτανολόγος", + "en-GB": "Herbalist", + "en": "Herbalist", + "eo": "Herba vendejo", + "es": "Herbolario", + "et": "Ravimtaimekauplus", + "fa": "عطاری", + "fi": "Luontaistuotemyymälä", + "fr": "Herboristerie", + "gl": "Herboristaría", + "he": "חנות צמחי מרפא", + "hu": "Gyógynövénybolt", + "is": "Grasalæknir", + "it": "Erboristeria", + "ja": "薬草店", + "ko": "약초 가게", + "lt": "Žolininkas", + "mk": "Билна аптека", + "nl": "Herbalist", + "no": "Plantelegemiddelbutikk", + "pl": "Sklep zielarski", + "pt-BR": "Ervanária", + "pt": "Ervanária", + "ru": "Магазин трав и лекарственных растений", + "sk": "Bylinkárstvo", + "sl": "Zeliščarstvo", + "sr": "Травар", + "sv": "Medicinalväxter", + "tr": "Şifalı Bitkiler Mağazası", + "uk": "Ботанік", + "vi": "Tiệm Dược thảo", + "zh-CN": "草药店", + "zh-HK": "草藥店", + "zh-TW": "草藥店" + } + }, + "shop/hifi": { + "title": { + "C": "Hifi Store", + "af": "Hoëtrouwinkel", + "ar": "محل بيع أجهزة عالية الدقة", + "ast": "Equipos de música", + "bg": "Магазин за аудиотехника", + "bs": "HiFi prodavnica", + "ca": "Botiga d'alta fidelitat", + "cs": "Hifi elektronika", + "da": "Radioforhandler", + "de": "HiFi-Laden", + "el": "Κατάστημα Hifi", + "en-GB": "Hifi Shop", + "en": "Hifi Store", + "eo": "Aldfidela-sona vendejo", + "es": "Tienda de equipos de sonido", + "et": "Hifi kauplus", + "fa": "فروشگاه لوازم صوتی", + "fi": "Hifimyymälä", + "fr": "Magasin de matériel hi-fi", + "gl": "Tenda de equipamento de son", + "he": "חנות הגברה", + "hr": "Prodavaonica audio opreme", + "hu": "HiFi-szaküzlet", + "id": "Toko Hifi", + "is": "Hljómverslun", + "it": "Negozio Hifi", + "ja": "音響機器店", + "ko": "고급 오디오 가게", + "lt": "Hifi parduotuvė", + "mk": "Продавница за аудиоопрема", + "nl": "Hifi-/Bruingoedwinkel", + "no": "Hifi-butikk", + "pl": "Sklep ze sprzętem hi-fi", + "pt-BR": "Loja de Aparelhos Hi-Fi", + "pt": "Loja de alta fidelidade", + "ru": "Магазин по продаже Hi-Fi", + "sk": "Obchod s ozvučením", + "sl": "Trgovina z avdio opremo", + "sr": "Музичка опрема", + "sv": "HiFi-butik", + "tr": "Hoparlör Mağazası", + "uk": "Аудіо апаратура", + "vi": "Tiệm Thiết bị Âm thanh", + "yue": "音響舖", + "zh-CN": "音响店", + "zh-HK": "音響店", + "zh-TW": "音響店", + "zh": "音响店" + } + }, + "shop/hobby": { + "title": { + "C": "Hobby Shop", + "ar": "متاجر الهوايات", + "cs": "pro volný čas", + "da": "Hobbybutik", + "de": "Bastelgeschäft", + "el": "Κατάστημα Ειδών Χόμπυ", + "en": "Hobby Shop", + "eo": "Hobia vendejo", + "es": "Tienda de pasatiempos", + "fa": "فروشگاه سرگرمی", + "fi": "Harrastuskauppa", + "fr": "Magasin pour hobby (non spécifié)", + "gl": "Tenda de pasatempos", + "he": "חנות תחביבים", + "hu": "Hobbibolt", + "it": "Negozio di hobbystica", + "ja": "ホビーショップ", + "ko": "취미 가게", + "mk": "Хобистичка продавница", + "nl": "Hobbywinkel", + "no": "Hobby Butikk", + "pl": "Sklep hobbystyczny", + "pt-BR": "Loja de passatempo", + "pt": "Loja de modelismo", + "sv": "Hobbyaffär", + "tr": "Hobi Mağazası", + "uk": "Магазин товарів для хобі", + "zh-TW": "嗜好商店" + } + }, + "shop/household_linen": { + "title": { + "C": "Household Linen Shop", + "ar": "محل المفروشات والأغطية المنزلية", + "cs": "Bytový textil", + "de": "Haushaltswäschegeschäft", + "en": "Household Linen Shop", + "eo": "Tuka vendejo", + "es": "Tienda de ropa de hogar", + "gl": "Tenda de roupa de fogar", + "he": "חנות מצעים", + "hu": "Lakástextil-szaküzlet", + "it": "Negozio di biancheria per la casa", + "ja": "家庭用布製品店", + "ko": "가정용 직물 가게", + "mk": "Продавница за постелнини", + "nl": "Winkel voor huishoudelijk linnen", + "pl": "Sklep z pościelą/ręcznikami", + "pt-BR": "Loja de roupa de casa", + "pt": "Loja de têxteis para o lar", + "sv": "Affär för hushållstextilier", + "tr": "Ev Tekstili Mağazası", + "uk": "Магазин білизни", + "zh-CN": "布艺店", + "zh-TW": "家用亞麻布商店" + } + }, + "shop/houseware": { + "title": { + "C": "Houseware Store", + "ar": "متجر بيع الأدوات المنزلية الصغيرة", + "ast": "Menaxe del llar", + "bg": "Домашни потреби", + "ca": "Botiga de la llar", + "cs": "Domácí potřeby", + "da": "Køkkenudstyr", + "de": "Haushaltswarengeschäft", + "el": "Είδη Οικιακής Χρήσης", + "en-GB": "Houseware Store", + "en": "Houseware Store", + "eo": "Mastrum-aparata vendejo", + "es": "Tienda de artículos del hogar", + "et": "Kodutarvete kauplus", + "fa": "فروشگاه لوازم خانگی", + "fi": "Kotitarvikekauppa", + "fr": "Magasin d’articles ménagers", + "gl": "Tenda de artigos do fogar", + "he": "חנות כלי בית", + "hu": "Háztartási bolt", + "is": "Búsáhaldaverslun", + "it": "Casalinghi", + "ja": "家庭用品店", + "ko": "가정용품 가게", + "mk": "Продавница за домот", + "nl": "Huisraadwinkel", + "no": "Isenkrambutikk", + "pl": "Sklep z małymi artykułami gospodarstwa domowego", + "pt-BR": "Loja de Utensílios Domésticos", + "pt": "Loja de artigos para o lar", + "ru": "Магазин товаров для дома", + "sk": "Domáce potreby", + "sr": "Позамантерија", + "sv": "Husgeråd", + "tr": "Ev Eşyaları Mağazası", + "uk": "Господарські товари", + "vi": "Tiệm Gia dụng", + "zh-CN": "家居用品店", + "zh-HK": "家庭用品店", + "zh-TW": "家庭用品店" + } + }, + "shop/hunting": { + "title": { + "C": "Hunting Shop", + "ar": "متجر بيع أسلحة ومعدات الصيد", + "ca": "Botiga de caça", + "cs": "Lovecké potřeby", + "da": "Jagtbutik", + "de": "Jagdgeschäft", + "el": "Είδη Κυνηγιού", + "en": "Hunting Shop", + "eo": "Ĉasil-vendejo", + "es": "Tienda de caza", + "et": "Jahipood", + "fa": "فروشگاه لوازم شکار", + "fi": "Metsästyskauppa", + "fr": "Magasin de chasse", + "gl": "Tenda de caza", + "he": "חנות ציד", + "hu": "Vadászati bolt", + "is": "Veiðibúð", + "it": "Negozio di caccia", + "ja": "狩猟用品店", + "ko": "사냥 용품 가게", + "mk": "Ловечка продавница", + "nl": "Jachtwinkel", + "no": "Jaktbutikk", + "pl": "Sklep myśliwski", + "pt-BR": "Loja de Caça", + "pt": "Loja de artigos de caça", + "ru": "Охотничий магазин", + "sk": "Lovecké potreby", + "sr": "Продавница ловачке опреме", + "sv": "Jaktbutik", + "tr": "Avcılık Mağazası", + "uk": "Мисливський магазин", + "vi": "Tiệm Súng Săn", + "zh-CN": "狩猎店", + "zh-TW": "打獵用品店" + } + }, + "shop/interior_decoration": { + "title": { + "C": "Interior Decoration Store", + "ar": "متجر الديكور الداخلي", + "ast": "Decoración d'interiores", + "ca": "Botiga d'Interiorisme", + "cs": "Obchod s bytovými doplňky", + "da": "Brugskunstbutik", + "de": "Innenausstattungsgeschäft", + "el": "Διακοσμητές Εσωτερικών Χώρων", + "en-GB": "Interior Decoration Shop", + "en": "Interior Decoration Store", + "eo": "Ensembla (meblara) vendejo", + "es": "Tienda de decoración de interiores", + "et": "Sisedekoratsioonikauplus", + "fa": "فروشگاه تزئینات داخلی", + "fi": "Sisustusmyymälä", + "fr": "Magasin de décoration d'intérieur", + "gl": "Tenda de decoración de interiores", + "he": "חנות עיצוב פנים", + "hr": "Trgovina unutarnjeg uređenja", + "hu": "Lakberendezési bolt", + "id": "Toko Dekorasi Interior", + "is": "Innanhúshönnunarverslun", + "it": "Negozio di decorazioni per interni", + "ja": "インテリアショップ", + "ko": "실내장식 가게", + "lt": "Interjero dekoravimo parduotuvė", + "mk": "Продавница за внатрешно уредување", + "nl": "Binnenhuisdecoratiewinkel", + "no": "Interiørbutikk", + "pl": "Sklep z dekoracją wnętrz", + "pt-BR": "Loja de Decoração Interior", + "pt": "Loja de decoração de interiores", + "ro": "Magazin de Decorații Interioare", + "ru": "Магазин предметов интерьера", + "sk": "Obchod s bytovými dekoráciami", + "sr": "Унутрашња декорација", + "sv": "Inredningsaffär", + "tr": "İç Dekorasyon Mağazası", + "uk": "Оформлення інтер’єру", + "vi": "Tiệm Trang trí Nội thất", + "zh-CN": "室内装饰店", + "zh-HK": "室內設計店", + "zh-TW": "室內設計店" + } + }, + "shop/jewelry": { + "title": { + "C": "Jewelry Store", + "ar": "محل بيع مجوهرات", + "ca": "Joieria", + "cs": "Klenotnictví", + "da": "Guldsmed", + "de": "Juwelier", + "el": "Κοσμηματοπωλείο", + "en": "Jewelry Store", + "eo": "Juvelista vendejo", + "es": "Joyería", + "fa": "جواهرفروشی", + "fi": "Jalokiviliike", + "fr": "Bijouterie", + "gl": "Xoiaría", + "he": "חנות תכשיטים", + "hr": "Prodavaonica nakita", + "hu": "Ékszerüzlet", + "id": "Toko Perhiasan", + "is": "Skartgripaverslun", + "it": "Negozio di gioielli", + "ja": "宝飾店", + "ko": "귀금속 가게", + "mk": "Златарница", + "nl": "Juwelierszaak", + "no": "Gullsmed", + "pl": "Sklep jubilerski", + "pt-BR": "Joalheria", + "pt": "Ouriversaria", + "ru": "Ювелирный магазин", + "sk": "Klenotníctvo", + "sr": "Продавница накита", + "sv": "Juvelerare", + "tr": "Kuyumcu", + "uk": "Ювелірні прикраси", + "vi": "Tiệm Kim hoàn", + "zh-CN": "珠宝店", + "zh-TW": "珠寶店" + } + }, + "shop/kiosk": { + "title": { + "C": "Kiosk", + "am": "አነስተኛ ሱቅ", + "ar": "كشك", + "ast": "Quioscu", + "ca": "Quiosc", + "cs": "Kiosek", + "da": "Kiosk", + "de": "Kiosk", + "el": "Περίπτερο", + "en": "Kiosk", + "eo": "Gazetbudo", + "es": "Quiosco", + "fa": "دکه", + "fi": "Kioski", + "fr": "Kiosque", + "gl": "Quiosco", + "he": "קיוסק", + "hr": "Kiosk", + "hu": "Trafik (önálló épület)", + "id": "Warung", + "is": "Blaðastandur", + "it": "Chiosco", + "ja": "キオスク", + "ko": "가판대", + "lt": "Kioskas", + "lv": "Kiosks", + "mk": "Киоск", + "nl": "Winkelkiosk", + "no": "Kiosk", + "pl": "Kiosk", + "pt-BR": "Quiosque (comercial)", + "pt": "Quiosque", + "ru": "Магазин в виде киоска", + "sk": "Stánok", + "sl": "Kiosk", + "sq": "Kioskë", + "sr": "Киоск", + "sv": "Kiosk", + "tr": "Büfe", + "uk": "Кіоск", + "vi": "Gian hàng", + "zh-CN": "售货亭", + "zh-TW": "販賣亭" + } + }, + "shop/kitchen": { + "title": { + "C": "Kitchen Design Store", + "ar": "متجر ديكور وتصميم المطابخ", + "ast": "Diseñu de cocines", + "ca": "Botiga de disseny de cuines", + "cs": "Kuchyňské studio", + "da": "Køkkenforhandler", + "de": "Küchenfachmarkt", + "el": "Διακόσμηση Κουζίνας", + "en-GB": "Kitchen Design Shop", + "en": "Kitchen Design Store", + "eo": "Kuirej-mebla vendejo", + "es": "Tienda de diseño de cocinas", + "et": "Köögimööblikauplus", + "fa": "فروشگاه تزئینات آشپزخانه", + "fi": "Keittiöliike", + "fr": "Cuisiniste", + "gl": "Tenda de deseño de cociñas", + "he": "חנות עיצוב המטבח", + "hr": "Trgovina kuhinjskog namještaja", + "hu": "Konyhabútorbolt", + "id": "Toko Desain Interior Dapur", + "is": "Eldhúshönnunarverslun", + "it": "Negozio di cucine", + "ja": "キッチンデザイン店", + "ko": "주방 디자인 가게", + "lt": "Virtuvės dizaino parduotuvė", + "lv": "Virtuves dizaina veikals", + "mk": "Кујни и елементи", + "nl": "Keukenontwerpwinkel", + "no": "Kjøkkenbutikk", + "pl": "Sklep z wyposażeniem i meblami kuchennymi", + "pt-BR": "Loja de Cozinhas", + "pt": "Loja de cozinhas", + "ro": "Magazin de Bucătărie", + "ru": "Магазин кухонь", + "sk": "Kuchynské štúdio", + "sq": "Dyqan për Aredim të Kuzhinës", + "sr": "Кухињски дизајн", + "sv": "Köksinredning", + "tr": "Mutfak Eşyaları Mağazası", + "uk": "Меблі для кухні", + "vi": "Tiệm Thiết kế Phòng bếp", + "zh-CN": "厨房用品店", + "zh-HK": "廚房設計店", + "zh-TW": "廚房設計行" + } + }, + "shop/laundry": { + "title": { + "C": "Laundry", + "af": "Wassery", + "am": "የልብስ ንጽህና መስጫ", + "ar": "محل غسيل ملابس", + "ast": "Llavandería", + "bg": "Пералня", + "bs": "Praonica", + "ca": "Bugaderia", + "cs": "Prádelna", + "da": "Vaskeri", + "de": "Wäscherei", + "el": "Καθαριστήριο", + "en-GB": "Laundry", + "en": "Laundry", + "eo": "Vest-lavejo (akvo)", + "es": "Lavandería", + "et": "Pesumaja", + "fa": "رخت‌شوی‌خانه", + "fi": "Pesula", + "fr": "Laverie", + "gl": "Lavandaría", + "he": "כביסה", + "hr": "Praonica rublja", + "hu": "Mosoda", + "id": "Penatu", + "is": "Þvottur", + "it": "Lavanderia", + "ja": "洗濯屋・ランドリー(非セルフ)", + "kn": "ಧೋಬಿಖಾನೆ", + "ko": "세탁소", + "lt": "Skalbykla", + "lv": "Veļas mazgātuve", + "mk": "Перачница", + "nl": "Wasserette", + "no": "Vaskeri", + "pl": "Pralnia", + "pt-BR": "Lavanderia", + "pt": "Lavandaria", + "ro": "Spălătorie", + "ru": "Прачечная", + "sk": "Čistiareň", + "sl": "Pralnica", + "sq": "Lavanderi", + "sr": "Перионица", + "sv": "Tvättinrättning", + "ta": "சலவையகம்", + "tr": "Çamaşır Yıkama", + "uk": "Пральня", + "vi": "Tiệm Giặt là", + "yue": "洗衣舖", + "zh-CN": "洗衣店", + "zh-HK": "洗衣店", + "zh-TW": "洗衣店", + "zh": "洗衣店" + } + }, + "shop/leather": { + "title": { + "C": "Leather Store", + "ar": "متجر المنتجات الجلدية", + "ast": "Artículos de piel", + "ca": "Botiga de cuirs", + "cs": "Kožené zboží", + "da": "Læderbutik", + "de": "Lederwarengeschäft", + "el": "Κατάστημα με Δερμάτινα", + "en-GB": "Leather Shop", + "en": "Leather Store", + "eo": "Ledaĵa vendejo", + "es": "Talabartería", + "et": "Nahakauplus", + "fa": "فروشگاه چرم", + "fi": "Nahkaliike", + "fr": "Maroquinier", + "gl": "Tenda de peles", + "he": "חנות עור", + "hr": "Trgovina kožnom galanterijom", + "hu": "Bőrdíszműbolt", + "id": "Toko Kulit", + "is": "Leðurvöruverslun", + "it": "Pelletteria", + "ja": "皮革用品店", + "ko": "가죽 가게", + "lt": "Odos dirbinių parduotuvė", + "lv": "Ādas veikals", + "mk": "Кожна галантерија", + "nl": "Lederwinkel", + "no": "Skinnbutikk", + "pl": "Sklep z odzieżą skórzaną", + "pt-BR": "Loja de Couros", + "pt": "Loja de couro", + "ru": "Магазин кожаных изделий", + "sk": "Obchod s kožennými výrobkami", + "sl": "Usnjarna", + "sr": "Продавница коже", + "sv": "Läderaffär", + "ta": "தோல் கடை", + "tr": "Deri Dükkanı", + "uk": "Шкіргалантерея", + "vi": "Tiệm Đồ Da", + "zh-CN": "皮具店", + "zh-HK": "皮革店", + "zh-TW": "皮革店" + } + }, + "shop/lighting": { + "title": { + "C": "Lighting Store", + "ar": "متجر إنارة ولمبات", + "cs": "prodejna osvětlení", + "de": "Leuchten- und Lampengeschäft", + "el": "Κατάστημα Λάμπας", + "en": "Lighting Store", + "eo": "Prilumigad‑aparata vendejo", + "es": "Tienda de iluminación", + "fi": "Valaisinkauppa", + "fr": "Magasin de lampes", + "gl": "Tenda de iluminación", + "he": "חנות תאורה", + "hu": "Világítástechnikai szaküzlet", + "it": "Negozio di illuminazione", + "ja": "照明器具店", + "ko": "조명 가게", + "mk": "Продавница за расветни тела", + "nl": "Verlichtingswinkel", + "pl": "Sklep z oświetleniem", + "pt-BR": "Loja de iluminação", + "pt": "Loja de iluminação", + "ru": "Магазин светильников", + "sk": "Svietidlá", + "sr": "Продавница осветљења", + "sv": "Belysningsbutik", + "tr": "Aydınlatma Mağazası", + "uk": "Магазин освітлення", + "vi": "Tiệm Đèn sáng", + "zh-CN": "灯饰店", + "zh-TW": "燈具店" + } + }, + "shop/locksmith": { + "title": { + "C": "Locksmith", + "ar": "محل بيع أقفال ونسخ مفاتيح", + "ast": "Cerraxería", + "bs": "Bravar", + "ca": "Copisteria de claus", + "cs": "Zámečnictví", + "da": "Låsesmed", + "de": "Schlüsseldienst", + "el": "Κλειδαράς", + "en-GB": "Locksmith", + "en": "Locksmith", + "eo": "Laborejo de seruristo", + "es": "Cerrajería", + "et": "Lukksepp", + "fa": "قفل سازی", + "fi": "Lukkoliike", + "fr": "Serrurier", + "gl": "Cerralleiro", + "he": "מנעולן", + "hr": "Bravar", + "hu": "Lakatos", + "id": "Ahli Kunci", + "is": "Lásasmiður", + "it": "Fabbro", + "ja": "鍵屋(専門店)", + "ko": "열쇠 제조공", + "lt": "Raktininkas", + "lv": "Atslēdznieks", + "mk": "Бравар", + "nl": "Slotenmaker", + "no": "Låsesmed", + "pl": "Dorabianie kluczy / Ślusarz", + "pt-BR": "Serralheiro", + "pt": "Chaveiro", + "ru": "Изготовление ключей", + "sk": "Zámočníctvo", + "sl": "Ključavničar", + "sr": "Бравар", + "sv": "Låssmed", + "tr": "Anahtarcı", + "uk": "Слюсар", + "vi": "Thợ khóa", + "yue": "鎖匠", + "zh-CN": "锁匠铺", + "zh-HK": "鎖匠", + "zh-TW": "鎖匠" + } + }, + "shop/lottery": { + "title": { + "C": "Lottery Shop", + "ar": "متجر اليانصيب", + "ast": "Loteríes", + "bg": "Лотарийни билети", + "ca": "Administració de loteria", + "cs": "Prodejna losů", + "da": "Lotteributik", + "de": "Lottoannahmestelle", + "el": "Κατάστημα λαχείων", + "en-GB": "Lottery Shop", + "en": "Lottery Shop", + "eo": "Loterbileta vendejo", + "es": "Lotería", + "et": "Lotopood", + "fa": "فروشگاه قرعه کشی", + "fi": "Veikkauspiste", + "fr": "Loterie", + "gl": "Tenda de lotaría", + "he": "חנות לוטו", + "hr": "Trgovina igara na sreću", + "hu": "Lottózó", + "id": "Toko Lotre", + "is": "Lottósjoppa", + "it": "Ricevitoria", + "ja": "宝くじ売り場", + "ko": "복권 가게", + "lt": "Loterijų parduotuvė", + "lv": "Loterijas veikals", + "mk": "<преведете со истозначници или сродни поими на „Лотарија“, одделени со запирки>", + "nl": "Loterij", + "no": "Tipping", + "pl": "Kolektura", + "pt-BR": "Casa lotérica", + "pt": "Loja de lotaria", + "ro": "Loterie", + "ru": "Продажа лотерейных билетов", + "sk": "Lotéria", + "sl": "Loterijska prodajalna", + "sr": "Продавница лутрије", + "sv": "Lotteri", + "tr": "Loto Bayi", + "uk": "Лотерейний магазин", + "vi": "Tiệm Xổ số", + "zh-CN": "彩票店", + "zh-HK": "獎券店", + "zh-TW": "彩券行" + } + }, + "shop/mall": { + "title": { + "C": "Mall", + "af": "Winkelsentrum", + "ar": "مركز تسوق تجاري (مول)", + "ast": "Centru comercial", + "bg": "Мол", + "bn": "মল", + "bs": "Tržni centar", + "ca": "Centre comercial", + "cs": "Obchodní centrum", + "da": "Indkøbscenter", + "de": "Einkaufszentrum", + "el": "Εμπορικό Κέντρο", + "en-AU": "Shopping Centre", + "en-GB": "Mall", + "en": "Mall", + "eo": "Vendejaro", + "es": "Centro comercial", + "et": "Kaubanduskeskus", + "fa": "مرکز خرید", + "fi": "Kauppakeskus", + "fr": "Centre commercial", + "gl": "Centro comercial", + "he": "קניון", + "hr": "Trgovački centar", + "hu": "Bevásárlóközpont", + "id": "Mal", + "is": "Verslunarmiðstöð", + "it": "Centro commerciale", + "ja": "ショッピングセンター", + "ko": "쇼핑몰", + "lt": "Prekybos centras", + "lv": "Iepirkšanās centrs", + "mk": "Трговски центар", + "nl": "Winkelcentrum", + "no": "Kjøpesenter", + "pl": "Centrum handlowe", + "pt-BR": "Shopping ou Galeria de lojas", + "pt": "Centro comercial", + "ro": "Mall", + "ru": "Торговый центр", + "sk": "Nákupné centrum", + "sl": "Trgovski center", + "sr": "Тржни центар", + "sv": "Köpcenter", + "ta": "பேரங்காடி", + "tr": "Alışveriş Merkezi", + "uk": "Торгівельний центр", + "vi": "Trung tâm Thương mại", + "yue": "大商場", + "zh-CN": "购物中心", + "zh-HK": "購物中心", + "zh-TW": "購物中心", + "zh": "商场" + } + }, + "shop/massage": { + "title": { + "C": "Massage Shop", + "am": "ማሳጅ ቤት", + "ar": "صالون التدليك", + "ast": "Masaxes", + "ca": "Centre de massatges", + "cs": "Masáže", + "da": "Massagebutik", + "de": "Massagesalon", + "el": "Κατάστημα Μασάζ", + "en-GB": "Massage Shop", + "en": "Massage Shop", + "eo": "Salono de masaĝo", + "es": "Salón de masajes", + "et": "Massaaž", + "fa": "فروشگاه ماساژ", + "fi": "Hierontayritys", + "fr": "Salon de massage", + "gl": "Tenda de masaxes", + "he": "מכון עיסוי", + "hr": "Studio za masažu", + "hu": "Masszázsszalon", + "id": "Panti Pijat", + "is": "Nuddstofa", + "it": "Centro massaggi", + "ja": "マッサージ店", + "ko": "마사지 가게", + "lt": "Masažo parduotuvė", + "lv": "Masāžu veikals", + "mk": "Масажа", + "nl": "Massagewinkel", + "no": "Massasjesenter", + "pl": "Salon masażu", + "pt-BR": "Loja de Massagem", + "pt": "Centro de massagens", + "ro": "Masaj", + "ru": "Массажный салон", + "sk": "Masérstvo", + "sr": "Салон за масажу", + "sv": "Massage", + "tr": "Masaj Salonu", + "uk": "Массаж", + "vi": "Tiệm Xoa bóp", + "zh-CN": "按摩店", + "zh-HK": "按摩店", + "zh-TW": "按摩店" + } + }, + "shop/medical_supply": { + "title": { + "C": "Medical Supply Store", + "ar": "متجر مستلزمات وأجهزة طبية", + "ast": "Tienda d'equipu médicu", + "ca": "Farmàcia", + "cs": "Zdravotnické potřeby", + "da": "Håndkøbsmedicinforhandler", + "de": "Sanitätshaus", + "el": "Κατάστημα Προμήθειας Ιατρικών Ειδών", + "en-GB": "Medical Supply Shop", + "en": "Medical Supply Store", + "eo": "Medicin-aparata vendejo", + "es": "Tienda de aparatos ortopédicos", + "et": "Tervisetoodete kauplus", + "fa": "فروشگاه تجهیزات پزشکی", + "fi": "Lääketarvikemyymälä", + "fr": "Magasin de matériel médical", + "gl": "Tenda de subministracións médicas", + "he": "חנות ציוד רפואי", + "hr": "Trgovina medicinske opreme", + "hu": "Gyógyászati segédeszközök boltja", + "id": "Toko Peralatan Medis", + "is": "Lækningavöruverslun", + "it": "Negozio di forniture mediche", + "ja": "健康・医療器具店", + "ko": "의료 용품 가게", + "lt": "Medicinos reikmenų parduotuvė", + "lv": "Medicīnisko piederumu veikals", + "mk": "Медицинска опрема и залихи", + "nl": "Winkel voor medische hulpmiddelen", + "no": "Medisinsk utstyrsbutikk", + "pl": "Sklep ze sprzętem medycznym", + "pt-BR": "Loja de equipamentos hospitalares", + "pt": "Loja de material médico", + "ro": "Magazin Alimentar Medical", + "ru": "Медицинские принадлежности", + "sk": "Obchod so zdravotníckymi pomôckami", + "sl": "Trgovina z medicinskimi primpomočki", + "sr": "Продавница медицинске опреме", + "sv": "Medicinsk utrustning", + "tr": "Medikal Ürünler Mağazası", + "uk": "Медтехніка", + "vi": "Tiệm Thiết bị Y tế", + "zh-CN": "医疗用品店", + "zh-HK": "醫療器材行", + "zh-TW": "醫療器材行" + } + }, + "shop/military_surplus": { + "title": { + "C": "Military Surplus Store", + "ar": "متجر بيع المعدات والمستلزمات العسكرية المستعملة", + "ca": "Botiga d'excedents militars", + "cs": "armádní výprodej", + "de": "Militärkleidungsabverkauf", + "el": "Κατάστημα Στρατιωτικού Εξοπλισμού", + "en": "Military Surplus Store", + "eo": "Ne-plu-necesa-armea-ekipaĵo vendejo", + "es": "Tienda de excedentes militares", + "fi": "Armeijan ylijäämämyymälä", + "fr": "Surplus militaire", + "gl": "Tenda de accesorios militares", + "he": "חנות עודפי צבא", + "hu": "Használt katonai felszerelések boltja", + "it": "Negozio di eccedenze militari", + "ja": "軍払い下げ品店", + "mk": "Продавница за воени вишоци", + "nl": "Legerdump", + "pl": "Sklep ze sprzętem wojskowym", + "pt-BR": "Loja de excedente militar", + "pt": "Loja de excedentes militares", + "ru": "Армейский магазин", + "sr": "Продавница војних вишкова", + "sv": "Affär med militäröverskott", + "tr": "Askeri Fazlalık Mağazası", + "uk": "Магазин військових товарів", + "zh-CN": "军品店", + "zh-TW": "軍用品店" + } + }, + "shop/mobile_phone": { + "title": { + "C": "Mobile Phone Store", + "af": "Selfoonwinkel", + "ar": "محل بيع هواتف", + "ast": "Telefonía móvil", + "bg": "Магазин за мобилни телефони", + "bn": "মোবাইল ফোন-এর দোকান", + "bs": "Prodavnica mobilnih uređaja", + "ca": "Botiga de telefonia mòbil", + "cs": "Obchod s mobily", + "da": "Mobiltelefonforhandler", + "de": "Mobiltelefonladen", + "dv": "މޯބައިލް ފޯނު ވިއްކާ ފިހާރަ", + "el": "Κατάστημα Κινητής Τηλεφωνίας", + "en-GB": "Mobile Phone Shop", + "en": "Mobile Phone Store", + "eo": "Poŝtelefona vendejo", + "es": "Tienda de telefonía móvil", + "et": "Mobiilipood", + "fa": "فروشگاه تلفن همراه", + "fi": "Matkapuhelinmyymälä", + "fr": "Magasin de téléphonie mobile", + "gl": "Tenda de telefonía móbil", + "he": "חנות טלפונים ניידים", + "hr": "Prodavaonica mobilnih telefona", + "hu": "Mobiltelefon-szaküzlet", + "id": "Toko Handphone", + "is": "Farsímaverslun", + "it": "Negozio di telefonia mobile", + "ja": "携帯電話店", + "ko": "휴대폰 가게", + "lt": "Mobiliųjų telefonų parduotuvė", + "lv": "Mobilo telefonu veikals", + "mk": "Мобилара", + "ms": "Kedai Telefon Bimbit", + "nl": "Mobieletelefoonwinkel", + "no": "Mobiltelefonforhandler", + "pl": "Sklep z telefonami komórkowymi", + "pt-BR": "Loja de Celulares", + "pt": "Loja de telemóveis", + "ro": "Magazin de Telefoane Mobile", + "ru": "Магазин мобильных телефонов и аксессуаров", + "sk": "Obchod s mobilnými telefónmi", + "sl": "Trgovina z mobilnimi telefoni", + "so": "Dukaanka Taleefoonka Gacanta", + "sr": "Продавница мобилних телефона", + "sv": "Mobiltelefoner", + "tr": "Cep Telefonu Mağazası", + "uk": "Мобільні телефони", + "vi": "Tiệm Điện thoại Di động", + "yue": "電話舖", + "zh-CN": "手机店", + "zh-HK": "流動電話店", + "zh-TW": "行動電話店", + "zh": "手机店" + } + }, + "shop/model": { + "title": { + "C": "Model Shop", + "ar": "متجر بيع النماذج المصغرة للأشياء", + "cs": "Modelářský obchod", + "de": "Modellbaugeschäft", + "el": "Κατάστημα Μοντελισμού", + "en": "Model Shop", + "eo": "Vendejo de modelfarado", + "es": "Tienda de modelismo", + "fr": "Magasin de modélisme", + "gl": "Tenda de modelismo", + "he": "חנות דגמים", + "hu": "Modellező bolt", + "it": "Negozio di modellistica", + "ja": "模型店", + "ko": "모형 가게", + "mk": "Моделарска продавница", + "nl": "Modelwinkel", + "pl": "Sklep modelarski", + "pt-BR": "Loja de modelos", + "pt": "Loja de modelismo", + "ru": "Магазин для моделирования", + "sk": "Modelárstvo", + "sv": "Affär för byggmodeller", + "tr": "Manken Dükkanı", + "uk": "Магазин масштабних моделей", + "vi": "Tiệm Mô hình", + "zh-CN": "模型店", + "zh-TW": "模型店" + } + }, + "shop/money_lender": { + "title": { + "C": "Money Lender", + "ar": "مُقرض المال", + "ast": "Prestamista", + "ca": "Prestamista", + "cs": "Nebankovní půjčky", + "da": "Pengeudlåner", + "de": "Geldverleih", + "el": "Τοκογλύφος", + "en-GB": "Money Lender", + "en": "Money Lender", + "eo": "Mon-pruntejo", + "es": "Prestamista de dinero", + "et": "Rahalaenutaja", + "fa": "وام دهنده پول", + "fi": "Rahanlainausliike", + "fr": "Prêteur", + "gl": "Prestamista de cartos", + "he": "מלווה בריבית", + "hu": "Pénzkölcsönző", + "id": "Peminjaman Uang", + "is": "Peningaútlán", + "it": "Agenzia Prestito", + "ja": "消費者金融", + "ko": "대출", + "lt": "Pinigų skolintojas", + "lv": "Naudas Aizdevējs", + "mk": "Зајмување пари", + "ms": "Ceti", + "nl": "Particuliere Gelduitleendienst", + "no": "Pengeutlåner", + "pl": "Firma pożyczkowa", + "pt-BR": "Financiadora", + "pt": "Loja de empréstimos", + "ro": "Creditor de Bani", + "ru": "Ростовщик", + "sk": "Požičovňa peňazí", + "sl": "Posojilnica", + "sr": "Зајмодавац", + "sv": "Långivare", + "tr": "Tefeci", + "uk": "Кредитна спілка", + "vi": "Chỗ Mượn Tiền", + "zh-CN": "放贷人", + "zh-HK": "放債人", + "zh-TW": "地下錢莊" + } + }, + "shop/motorcycle": { + "title": { + "C": "Motorcycle Dealership", + "af": "Motorfietshandelaar", + "ar": "بائع دراجات نارية", + "ast": "Venta de motos", + "bg": "Магазин за мотоциклети", + "bs": "Salon motocikala", + "ca": "Botiga de motocicletes", + "cs": "Obchod s motocykly", + "da": "Motorcykelforhandler", + "de": "Motorradhändler", + "el": "Εμπόριο Μοτοσυκλετών", + "en-GB": "Motorcycle Dealership", + "en": "Motorcycle Dealership", + "eo": "Motorcikla vendejo", + "es": "Concesionario de motos", + "et": "Mootorrattapood", + "fa": "نمایندگی موتور سیکلت", + "fi": "Moottoripyöräliike", + "fr": "Vendeur de motos", + "gl": "Concesionario de motocicletas", + "he": "חנות אופנועים", + "hr": "Prodavaonica motocikala", + "hu": "Motorkerékpár-kereskedés", + "id": "Dealer Motor", + "is": "Mótorhjólaverslun", + "it": "Concessionario di motociclette", + "ja": "バイク店", + "ko": "오토바이 대리점", + "lt": "Motociklų prekybos atstovybė", + "lv": "Motociklu veikals", + "mk": "Салон за мотоцикли", + "nl": "Motorwinkel", + "no": "Motorsykkelforhandler", + "pl": "Sklep motocyklowy", + "pt-BR": "Revenda de Motos", + "pt": "Loja de motas", + "ro": "Magazin de Motociclete", + "ru": "Магазин мотоциклов", + "sk": "Predajňa motocyklov", + "sl": "Trgovina z motorji", + "sr": "Продавница мотоцикала", + "sv": "Återförsäljare av motorcyklar", + "tr": "Motosiklet Satış Mağazası", + "uk": "Салон мотоциклів", + "vi": "Tiệm Xe máy", + "yue": "電單車行", + "zh-CN": "摩托车店", + "zh-HK": "電單車店", + "zh-TW": "機車行", + "zh": "摩托车行" + } + }, + "shop/motorcycle_repair": { + "title": { + "C": "Motorcycle Repair Shop", + "ar": "ورشة تصليح الدراجات النارية", + "ca": "Taller de reparació de motos", + "cs": "Opravna motocyklů", + "da": "Motorcykelværksted", + "de": "Motorradwerkstatt", + "el": "Συνεργείο Μοτοσυκλετών", + "en-GB": "Motorcycle Repair Shop", + "en": "Motorcycle Repair Shop", + "eo": "Motorcikl-riparejo", + "es": "Taller de reparación de motos", + "et": "Mootorratta remondikoda", + "fa": "تعمیرگاه موتورسیکلت", + "fi": "Moottoripyöräkorjaamo", + "fr": "Réparateur de motos", + "gl": "Taller de arranxo de motocicletas", + "he": "מוסך אופנועים", + "hr": "Ormarići za bicikle", + "hu": "Motorkerékpáralkatrész-bolt", + "is": "Mótorhjólaviðgerðaverslun", + "it": "Officina riparazione motocicli", + "ja": "バイク修理店", + "ko": "오토바이 수리점", + "lt": "Motociklų taisykla", + "lv": "Motociklu remonta darbnīca", + "mk": "Поправка на мотоцикли", + "nl": "Motorreparatie", + "no": "Motorsykkelverksted", + "pl": "Warsztat motocyklowy", + "pt-BR": "Oficina de motocicletas", + "pt": "Oficina de motas", + "ru": "Мотомастерская", + "sk": "Oprava motocyklov", + "sr": "Поправка мотоцикала", + "sv": "Motorcykelverkstad", + "tr": "Motosiklet Tamir Atölyesi", + "uk": "Ремонт мотоциклів", + "vi": "Tiệm Sửa Xe máy", + "zh-CN": "摩托车修理店", + "zh-TW": "摩托車維修店" + } + }, + "shop/music": { + "title": { + "C": "Music Store", + "af": "Musiekwinkel", + "ar": "متجر بيع موسيقى", + "ast": "Tienda de música", + "bg": "Музикален магазин", + "bn": "সঙ্গীতের দোকান", + "bs": "Muzička prodavnica", + "ca": "Botiga de música", + "cs": "Obchod s hudbou", + "da": "Musikbutik", + "de": "Musikgeschäft", + "el": "Κατάστημα Μουσικής", + "en-GB": "Music Shop", + "en": "Music Store", + "eo": "Muzika vendejo", + "es": "Tienda de música", + "et": "Muusikapood", + "fa": "فروشگاه موسیقی", + "fi": "Musiikkiliike", + "fr": "Magasin de musique", + "gl": "Tenda de música", + "he": "חנות מוזיקה", + "hr": "Prodavaonica glazbene opreme", + "hu": "Hanglemezbolt", + "id": "Toko Musik", + "is": "Tónlistarbúð", + "it": "Negozio di musica", + "ja": "CD/レコード店", + "ko": "음반 가게", + "lt": "Muzikos parduotuvė", + "lv": "Mūzikas veikals", + "mk": "Продавница за музика", + "ms": "Kedai Muzik", + "nl": "Muziekwinkel", + "no": "Musikkforretning", + "pl": "Sklep muzyczny", + "pt-BR": "Loja de Discos Musicais", + "pt": "Loja de música", + "ro": "Magazin de Muzică", + "ru": "Музыкальный магазин", + "sk": "Obchod s hudbou", + "sl": "Trgovina z glasbo", + "sr": "Продавница музике", + "sv": "Musikaffär", + "tr": "Müzik Mağazası", + "uk": "Музичний магазин", + "vi": "Tiệm Âm nhạc", + "yue": "唱片舖", + "zh-CN": "音乐店", + "zh-HK": "唱片店", + "zh-TW": "音樂店", + "zh": "音乐店" + } + }, + "shop/musical_instrument": { + "title": { + "C": "Musical Instrument Store", + "ar": "متجر آلات موسيقية", + "ast": "Instrumentos musicales", + "ca": "Botiga d'instruments musicals", + "cs": "Obchod s hudebními nástroji", + "da": "Musikinstrumentbutik", + "de": "Musikinstrumentegeschäft", + "el": "Κατάστημα μουσικών οργάνων", + "en-GB": "Musical Instrument Shop", + "en": "Musical Instrument Store", + "eo": "Muzikinstrumenta vendejo", + "es": "Tienda de instrumentos musicales", + "et": "Muusikainstrumentide kauplus", + "fa": "فروشگاه سازهای موسیقی", + "fi": "Instrumenttimyymälä", + "fr": "Magasin d'instruments de musique", + "gl": "Tenda de instrumentos musicais", + "he": "חנות כלי נגינה", + "hr": "Trgovina glazbenih instrumenata", + "hu": "Hangszerbolt", + "id": "Toko Alat Musik", + "is": "Hljóðfæraverslun", + "it": "Negozio di strumenti musicali", + "ja": "楽器店", + "ko": "악기 가게", + "lt": "Muzikos instrumentų parduotuvė", + "lv": "Mūzikas instrumentu veikals", + "mk": "Продавница за музички инструменти", + "ms": "Kedai Alatan Muzik", + "nl": "Muziekinstrumentenwinkel", + "no": "Musikkinstrumentbutikk", + "pl": "Sklep z instrumentami muzycznymi", + "pt-BR": "Loja de Instrumentos Musicais", + "pt": "Loja de instrumentos musicais", + "ro": "Magazin de Instrumente Muzicale", + "ru": "Магазин музыкальных инструментов", + "sk": "Obchod s hudobnými nástrojmi", + "sl": "Trgovina z glasbenimi inštrumenti", + "sr": "Продавница музичких инструмената", + "sv": "Musikinstrument", + "tr": "Müzik Aletleri Mağazası", + "uk": "Магазин музичних інструментів", + "vi": "Tiệm Nhạc cụ", + "zh-CN": "乐器店", + "zh-HK": "樂器店", + "zh-TW": "音樂樂器行" + } + }, + "shop/newsagent": { + "title": { + "C": "Newspaper/Magazine Shop", + "ar": "محل بيع الجرائد", + "ast": "Prensa y revistes", + "ca": "Botiga de diaris i revistes", + "cs": "Trafika", + "da": "Avis/Bladforhandler", + "de": "Zeitschriftenhandel", + "el": "Πρακτορείο τύπου", + "en-GB": "Newspaper/Magazine Shop", + "en": "Newspaper/Magazine Shop", + "eo": "Gazeta vendejo", + "es": "Puesto de periódicos / revistas", + "et": "Ajakirjapood", + "fa": "فروشگاه روزنامه/مجله", + "fi": "Lehtikoju", + "fr": "Magasin de journaux", + "gl": "Tenda de xornais/revistas", + "he": "חנות עיתונים", + "hr": "Trgovina za novine i magazine", + "hu": "Újságárus", + "id": "Toko Majalah/Koran", + "is": "Dagblaða/tímaritasala", + "it": "Edicola", + "ja": "新聞・雑誌店", + "ko": "신문/잡지 가게", + "lt": "Laikraščių/žurnalų parduotuvė", + "lv": "Avīžu / Žurnālu veikals", + "mk": "Весникарница", + "nl": "Kranten-/Tijdschriftwinkel", + "no": "Aviskiosk", + "pl": "Sklep z prasą", + "pt-BR": "Banca de Revistas", + "pt": "Loja de jornais / revistas", + "ro": "Magazin de Ziare", + "ru": "Газеты/пресса/журналы", + "sk": "Obchod s novinami/časopismi", + "sl": "Trgovina s časopisi/revijami", + "sr": "Дневне новине/часописи", + "sv": "Tidningsaffär", + "tr": "Gazete Bayii", + "uk": "Преса", + "vi": "Tiệm Báo", + "yue": "報刊舖", + "zh-CN": "报摊", + "zh-HK": "報紙/雜誌店", + "zh-TW": "報紙/雜誌攤" + } + }, + "shop/nutrition_supplements": { + "title": { + "C": "Nutrition Supplements Store", + "ar": "متجر المكملات الغذائية", + "ast": "Tienda de suplementos nutritivos", + "ca": "Botiga de suplements nutricionals", + "cs": "Obchod s potravními doplňky", + "da": "Helsekostbutik", + "de": "Nahrungsergänzungsmittelgeschäft", + "el": "Κατάστημα με Συμπληρώματα Διατροφής", + "en-GB": "Nutrition Supplements Shop", + "en": "Nutrition Supplements Store", + "eo": "Diet-suplementa vendejo", + "es": "Tienda de suplementos nutricionales", + "et": "Toidulisandite kauplus", + "fa": "فروشگاه تغذیه مکمل", + "fi": "Lisäravinnemyymälä", + "fr": "Boutique de compléments alimentaires", + "gl": "Tenda de suplementos nutricionais", + "he": "חנות ויטמינים", + "hu": "Étrendkiegészítő-bolt", + "is": "Verslun með fæðubótarefni", + "it": "Negozio di integratori alimentari", + "ja": "栄養サプリ販売店", + "ko": "영양 보조 식품 가게", + "mk": "Продавница за прехранбени додатоци", + "nl": "Voedingssupplementenwinkel", + "pl": "Sklep z suplementami diety", + "pt-BR": "Loja de Suplementos Nutricionais", + "pt": "Loja de suplementos alimentares", + "ro": "Magazin de Suplimente Nutritive", + "ru": "Магазин пищевых добавок", + "sk": "Obchod s výživovými doplnkami", + "sl": "Trgovina s prehrambenimi dodatki", + "sr": "Продавница додатака исхрани", + "sv": "Hälsokost", + "tr": "Gıda Takviye Ürünleri Mağazası", + "uk": "Магазин харчових добавок", + "vi": "Tiệm Thuốc bổ", + "zh-CN": "保健品店", + "zh-HK": "營養補充品店", + "zh-TW": "營養補充品店" + } + }, + "shop/optician": { + "title": { + "C": "Optician", + "af": "Oogarts", + "am": "መነፅር ቤት", + "ar": "متجر نظارات", + "ast": "Óptica", + "bg": "Оптика", + "bn": "চক্ষুরোগের চিকিত্সক", + "bs": "Optičar", + "ca": "Òptica", + "cs": "Optika", + "da": "Optiker", + "de": "Optiker", + "el": "Οπτικός", + "en-GB": "Optician", + "en": "Optician", + "eo": "Optikbutiko", + "es": "Óptica", + "et": "Optikapood", + "fa": "عینک فروشی", + "fi": "Optikko", + "fr": "Opticien", + "gl": "Óptica", + "he": "אופטיקאי", + "hr": "Optičar", + "hu": "Látszerész", + "id": "Optik", + "is": "Gleraugnaverslun", + "it": "Ottico", + "ja": "メガネ店", + "kn": "ನೇತ್ರ ತಜ್ಞ", + "ko": "안경점", + "lt": "Optika", + "lv": "Optometrists", + "mk": "Оптичар", + "nl": "Opticien", + "no": "Optiker", + "pl": "Optyk", + "pt-BR": "Ótica", + "pt": "Ótica", + "ro": "Optician", + "ru": "Оптика", + "sk": "Optika", + "sl": "Optik", + "sq": "Okulist", + "sr": "Оптичар", + "sv": "Optiker", + "tr": "Gözlükçü", + "uk": "Оптика", + "vi": "Tiệm Kính mắt", + "yue": "眼鏡鋪", + "zh-CN": "眼镜店", + "zh-HK": "眼鏡店", + "zh-TW": "眼鏡行", + "zh": "眼镜店" + } + }, + "shop/outdoor": { + "title": { + "C": "Outdoors Store", + "ar": "متجر معدات الرحلات والتسلق والتخييم", + "ast": "Equipamientu d'aire llibre", + "ca": "Botiga per a activitats a l'aire lliure", + "cs": "Outdoorové zboží", + "da": "Friluftsudstyrsbutik", + "de": "Outdoorgeschäft", + "el": "Κατάστημα με Είδη Εξοπλισμού Υπαίθρου", + "en-GB": "Outdoors Shop", + "en": "Outdoors Store", + "eo": "Vojaĝila vendejo", + "es": "Tienda de actividades al aire libre", + "et": "Matkatarvete kauplus", + "fa": "فروشگاه لوازم کوهنوردی و کمپینگ", + "fi": "Ulkoilmamyymälä", + "fr": "Magasin de matériel de sports de plein air", + "gl": "Tenda de actividades ó ar libre", + "he": "חנות רהיטי גינה", + "hr": "Trgovina sa opremom za kampiranje", + "hu": "Túrafelszerelés-bolt", + "id": "Toko Perlengkapan Outdoor", + "is": "Útivistarbúð", + "it": "Negozio per sport all'aria aperta", + "ja": "アウトドアショップ", + "ko": "아웃도어 가게", + "lt": "Laisvalaikio parduotuvė", + "mk": "Продавница за рекреативна опрема", + "nl": "Buitensportwinkel", + "no": "Villmarksbutikk", + "pl": "Sklep turystyczny", + "pt-BR": "Loja de Esportes de Aventura", + "pt": "Loja de artigos para atividades ao ar livre", + "ro": "Magazin în Aer Liber", + "ru": "Магазин снаряжения для активного отдыха", + "sk": "Outdoorový obchod", + "sl": "Trgovina za dejavosti na prostem", + "sr": "Продавница планинарске опреме", + "sv": "Friluftsaffär", + "tr": "Kamp Malzemeleri Mağazası", + "uk": "Активний відпочинок", + "vi": "Tiệm Thể thao Ngoài trời", + "zh-CN": "户外用品店", + "zh-HK": "戶外用品店", + "zh-TW": "戶外用品店" + } + }, + "shop/outpost": { + "title": { + "C": "Online Retailer Outpost", + "ar": "محل استلام شحنات مطلوبة من الانترنت", + "cs": "výdejna e-shopu", + "de": "Abholstelle eines Onlinehändlers", + "en": "Online Retailer Outpost", + "eo": "Ricevejo de aĉetaĵoj (per interreto)", + "es": "Puesto de venta minorista online", + "fi": "Verkkokaupan noutopiste", + "fr": "Magasin de produits vendus en ligne", + "gl": "Posto de venda minorista online", + "he": "נקודת הפצה של שירות מקוון", + "hu": "Internetes bolt", + "it": "Centro ritiro acquisti online", + "ja": "商品受け取り店", + "ko": "전자상거래 사업자 영업소", + "mk": "Испостава на семрежна продавница", + "nl": "Voorpost van een online retailer", + "pl": "Placówka sklepu internetowego", + "pt-BR": "Posto de retalhista online", + "pt": "Posto de retalhista online", + "ru": "Пункт выдачи интернет-магазина", + "sv": "Utlämning av online-beställningar", + "tr": "Çevrimiçi Perakende Satış Noktası", + "uk": "Пункт видачі онлайн магазина", + "zh-CN": "电商自提点", + "zh-TW": "線上零售商提貨處" + } + }, + "shop/paint": { + "title": { + "C": "Paint Store", + "ar": "متجر دهانات وطلاء", + "ast": "Tienda de pintures", + "ca": "Botiga de pintura", + "cs": "Barvy a laky", + "da": "Farvehandel", + "de": "Farbengeschäft", + "el": "Χρωματοπωλείο", + "en-GB": "Paint Shop", + "en": "Paint Store", + "eo": "Farba vendejo", + "es": "Tienda de pinturas", + "et": "Värvipood", + "fa": "فروشگاه رنگ", + "fi": "Maalikauppa", + "fr": "Magasin de peintures", + "gl": "Tenda de pinturas", + "he": "חנות צבע", + "hr": "Prodavaonica boja", + "hu": "Festékbolt", + "id": "Toko Cat", + "is": "Málningarvöruverslun", + "it": "Negozio di vernici", + "ja": "塗料店", + "ko": "페인트 가게", + "lt": "Dažų parduotuvė", + "lv": "Krāsu veikals", + "mk": "Бои и лакови", + "ms": "Kedai Cat", + "nl": "Verfwinkel", + "no": "Malingsbutikk", + "pl": "Sklep z farbami", + "pt-BR": "Loja de Tintas", + "pt": "Loja de tintas", + "ro": "Magazin de Pictură", + "ru": "Магазин красочных изделий", + "sk": "Obchod s nátermi", + "sl": "Trgovina z barvami", + "sr": "Фарбара", + "sv": "Färgbutik", + "tr": "Boyacı", + "uk": "Магазин фарб", + "vi": "Tiệm Sơn", + "zh-CN": "油漆店", + "zh-HK": "油漆店", + "zh-TW": "油漆行" + } + }, + "shop/party": { + "title": { + "C": "Party Supply Store", + "ar": "متجر مستلزمات حفلات", + "cs": "párty zboží", + "de": "Partyzubehör", + "el": "Κατάστημα Προμηθειών για Πάρτυ", + "en": "Party Supply Store", + "eo": "Vendejo de okazaĵaj provizoj", + "es": "Tienda de artículos para fiestas", + "fa": "فروشگاه لوازم مهمانی", + "fr": "Magasin de matériel de fête", + "gl": "Tenda de artigos para festas", + "he": "חנות ציוד למסיבות", + "hu": "Partykellékbolt", + "it": "Negozio di articoli per le feste", + "ja": "パーティ用品店", + "ko": "파티 용품 가게", + "mk": "Набавки за забавни настани", + "nl": "Feestwinkel", + "pl": "Sklep z artykułami imprezowymi", + "pt-BR": "Loja de materiais para festas", + "pt": "Loja de acessórios para festas", + "ru": "Магазин для вечеринок", + "sv": "Partybutik", + "tr": "Parti Malzemeleri Mağazası", + "uk": "Товари до свят", + "vi": "Tiệm Phụ kiện Trang trí Tiệc", + "zh-CN": "派对节日用品", + "zh-TW": "宴會器材店" + } + }, + "shop/pastry": { + "title": { + "C": "Pastry Shop", + "ar": "متجر حلويات", + "ast": "Pastelería", + "ca": "Pastisseria", + "cs": "Cukrárna", + "da": "Konditori", + "de": "Konditorei", + "el": "Ζαχαροπλαστείο", + "en-GB": "Pastry Shop", + "en": "Pastry Shop", + "eo": "Kukejo", + "es": "Pastelería", + "et": "Kondiiter", + "fa": "شیرینی فروشی", + "fi": "Leipomokonditoria", + "fr": "Pâtisserie", + "gl": "Confeitaría ou pastelaría", + "he": "בית מאפה", + "hr": "Slastičarna", + "hu": "Cukrászda", + "is": "Kökubúð", + "it": "Pasticceria", + "ja": "焼菓子(ペイストリー)店", + "ko": "과자 가게", + "lt": "Kepykla", + "mk": "Бели печива", + "nl": "Patisserie", + "no": "Bakeri", + "pl": "Cukiernia", + "pt-BR": "Confeitaria", + "pt": "Pastelaria", + "ru": "Пироги", + "sl": "Slaščičarna", + "sr": "Посластичарница", + "sv": "Konditori", + "tr": "Pastane", + "uk": "Кондитерські вироби", + "vi": "Tiệm Bánh ngọt", + "zh-CN": "糕饼店", + "zh-HK": "榚點店", + "zh-TW": "糕餅店" + } + }, + "shop/pawnbroker": { + "title": { + "C": "Pawn Shop", + "ar": "متجر رهن", + "ast": "Casa d'empeños", + "ca": "Botiga d'empenyoraments", + "cs": "Zastavárna", + "da": "Panteudlåner", + "de": "Pfandleihe", + "el": "Ενεχυροδανειστήριο", + "en-GB": "Pawn Shop", + "en": "Pawn Shop", + "eo": "Mon-pruntejo (kontraŭ garantiaĵo)", + "es": "Casa de empeño", + "et": "Pandimaja", + "fi": "Panttilainaamo", + "fr": "Prêteur sur gages", + "gl": "Casa de empeños", + "he": "חנות יד שניה", + "hr": "Zalagaonica", + "hu": "Zálogház", + "id": "Pegadaian", + "is": "Veðlánari", + "it": "Banco dei pegni", + "ja": "質店", + "ko": "전당포", + "lt": "Lombardas", + "lv": "Lombards", + "mk": "Заложилница", + "nl": "Pandjeshuis", + "no": "Pantelåner", + "pl": "Lombard", + "pt-BR": "Loja de Penhoras", + "pt": "Casa de penhoras", + "ru": "Ломбард", + "sk": "Záložňa", + "sl": "Zastavljalnica", + "sr": "Залагаоница", + "sv": "Pantbank", + "tr": "İkinciel Alım Satım Mağazası", + "uk": "Ломбард", + "vi": "Tiệm Cầm đồ", + "zh-CN": "典当商铺", + "zh-HK": "當舖", + "zh-TW": "汽機車借款" + } + }, + "shop/perfumery": { + "title": { + "C": "Perfume Store", + "ar": "متجر عطور", + "ast": "Perfumería", + "ca": "Botiga de perfums", + "cs": "Parfumerie", + "da": "Parfumebutik", + "de": "Parfümerie", + "el": "Κατάστημα Αρωμάτων", + "en-GB": "Perfume Shop", + "en": "Perfume Store", + "eo": "Parfuma vendejo", + "es": "Perfumería", + "et": "Parfüümikauplus", + "fa": "عطر فروشی", + "fi": "Hajusteliike", + "fr": "Parfumerie", + "gl": "Perfumaría", + "he": "חנות בשמים", + "hr": "Parfimerija", + "hu": "Parfüméria", + "is": "Ilmvatnsbúð", + "it": "Profumeria", + "ja": "香水店", + "ko": "향수 가게", + "lt": "Parfumerijos parduotuvė", + "mk": "Парфимерија", + "nl": "Parfumwinkel", + "no": "Parfymeri", + "pl": "Perfumeria", + "pt-BR": "Perfumaria", + "pt": "Perfumaria", + "ro": "Magazin de Parfum", + "ru": "Парфюмерия", + "sk": "Parfuméria", + "sl": "Parfumerija", + "sr": "Парфемџиница", + "sv": "Parfymbutik", + "tr": "Parfümeri", + "uk": "Парфуми", + "vi": "Tiệm Nước hoa", + "zh-CN": "香水店", + "zh-HK": "香水店", + "zh-TW": "香水店" + } + }, + "shop/pet": { + "title": { + "C": "Pet Store", + "af": "Troeteldierwinkel", + "ar": "محل بيع حيوانات أليفة", + "ast": "Tienda de mascotes", + "bg": "Зоо магазин", + "bs": "Prodavnica kućnih ljubnimaca", + "ca": "Botiga d'animals", + "cs": "Chovatelské potřeby", + "da": "Kæledyrsbutik", + "de": "Tierhandlung", + "el": "Κατάστημα Κατοικίδιων", + "en-GB": "Pet Shop", + "en": "Pet Store", + "eo": "Hejmbesta vendejo", + "es": "Tienda de mascotas", + "et": "Lemmikloomapood", + "fa": "فروشگاه حیوانات خانگی", + "fi": "Lemmikkiliike", + "fr": "Animalerie", + "gl": "Tenda de mascotas", + "he": "חנות לחיות מחמד", + "hr": "Prodavaonica kućnim ljubimcima", + "hu": "Kisállatkereskedés", + "id": "Toko Peliharaan", + "is": "Dýrabúð", + "it": "Negozio per animali", + "ja": "ペットショップ", + "ko": "애완동물 가게", + "lt": "Augintinių parduotuvė", + "lv": "Dzīvnieku veikals", + "mk": "Продавница за домашни миленици", + "nl": "Dierenwinkel", + "no": "Dyrebutikk", + "pl": "Sklep zoologiczny", + "pt-BR": "Loja de animais ou artigos para animais", + "pt": "Loja de animais de estimação", + "ro": "Magazin de Animale", + "ru": "Зоомагазин", + "sk": "Chovprodukt", + "sl": "Trgovina za domače živali", + "sr": "Продавница кућних љубимаца", + "sv": "Djurbutik", + "tr": "Evcil Hayvan Mağazası", + "uk": "Товари для тварин", + "vi": "Tiệm Vật nuôi", + "yue": "寵物舖", + "zh-CN": "宠物店", + "zh-HK": "寵物舖", + "zh-TW": "寵物店", + "zh": "宠物店" + } + }, + "shop/pet_grooming": { + "title": { + "C": "Pet Grooming Store", + "ar": "متجر العناية بالحيوانات الأليفة", + "cs": "zvířecí salon", + "de": "Tierpflegedienst, Tierfriseur (meist Hundesalon)", + "el": "Κατάστημα Καλλωπισμού Κατοικίδιων", + "en-GB": "Pet Grooming Shop", + "en": "Pet Grooming Store", + "eo": "Hejmbesta beligejo", + "es": "Tienda de aseo de mascotas", + "fa": "فروشگاه لوازم نظافت حیوان خانگی", + "fi": "Lemmikkihoitola", + "fr": "Salon de toilettage", + "gl": "Tenda de coidado de animais", + "he": "חנות לטיפוח חיות מחמד", + "hu": "Állatkozmetika", + "is": "Dýrasnyrtiverslun", + "it": "Toelettatura per animali", + "ja": "ペット美容室", + "ko": "애완동물 용품 가게", + "mk": "Продавница за нега на миленици", + "nl": "Trimsalon", + "pl": "Salon fryzjerski dla zwierząt", + "pt-BR": "Loja de cuidados com animais de estimação", + "pt": "Loja de banhos e tosquias", + "ru": "Парикмахерская для животных", + "sr": "Сређивање кућних љубимаца", + "sv": "Pälsvård för husdjur", + "tr": "Evcil Hayvan Bakım Mağazası", + "uk": "Салон догляду за тваринами", + "vi": "Dịch vụ Tỉa lông", + "zh-CN": "宠物美容美发店", + "zh-TW": "寵物美容店" + } + }, + "shop/photo": { + "title": { + "C": "Photography Store", + "ar": "محل تصوير", + "ast": "Fotografía", + "bs": "Fotografska radnja", + "ca": "Botiga de fotografia", + "cs": "Fotografický obchod", + "da": "Fotoforretning", + "de": "Fotofachgeschäft", + "el": "Φωτογραφείο", + "en-GB": "Photography Shop", + "en": "Photography Store", + "eo": "Fotografia vendejo", + "es": "Tienda de fotografía", + "et": "Fotograafiapood", + "fa": "عکس و ویدیو", + "fi": "Valokuvausliike", + "fr": "Tirage de photos", + "gl": "Tenda de fotografía", + "he": "חנות צילום", + "hr": "Prodavaonica fotografske opreme", + "hu": "Fotósbolt", + "id": "Toko Fotografi", + "is": "Ljósmyndavöruverslun", + "it": "Fotografo", + "ja": "写真店", + "ko": "사진 가게", + "lt": "Fotografijos parduotuvė", + "lv": "Fotogrāfijas veikals", + "mk": "Фотографски дуќан", + "nl": "Fotowinkel", + "no": "Fotobutikk", + "pl": "Sklep fotograficzny", + "pt-BR": "Loja de Fotografia", + "pt": "Loja de fotografia", + "ro": "Magazin de Fotografie", + "ru": "Фототовары", + "sk": "Obchod s fototechnikou", + "sl": "Foto trgovina", + "sr": "Фотографска радња", + "sv": "Fotoaffär", + "tr": "Fotoğrafçı", + "uk": "Фототовари", + "vi": "Tiệm Chụp Hình", + "yue": "影相舖", + "zh-CN": "照相馆", + "zh-HK": "相片沖印店", + "zh-TW": "攝影用品店" + } + }, + "shop/pottery": { + "title": { + "C": "Pottery Store", + "ar": "متجر فخار", + "cs": "keramika", + "de": "Keramikladen", + "el": "Κατάστημα Κεραμικής", + "en": "Pottery Store", + "eo": "Porcelan-vendejo", + "es": "Tienda de alfarería", + "fa": "فروشگاه سفال", + "fr": "Magasin de poterie", + "gl": "Tenda de cerámica", + "he": "חנות כדים", + "hu": "Fazekastermékek boltja", + "it": "Negozio di ceramica", + "ja": "陶磁器店", + "ko": "도자기 가게", + "mk": "Продавница за грнчарија", + "nl": "Winkel voor aardewerk", + "pl": "Sklep garncarski", + "pt-BR": "Loja de cerâmica", + "pt": "Loja de cerâmica", + "ru": "Магазин керамики", + "sk": "Obchod s keramikou", + "sr": "Продавница грнчарије", + "sv": "Keramikaffär", + "tr": "Çömlek Mağazası", + "uk": "Порцелянові вироби", + "vi": "Tiệm Đồ gốm", + "zh-CN": "陶瓷店", + "zh-TW": "陶器店" + } + }, + "shop/printer_ink": { + "title": { + "C": "Printer Ink Store", + "ar": "متجر أحبار طابعة", + "cs": "barvy do tiskáren", + "de": "Druckertintengeschäft", + "el": "Κατάστημα για Μελάνια Εκτυπωτών", + "en": "Printer Ink Store", + "eo": "Presil-inka vendejo", + "es": "Tienda de tinta para impresora", + "fa": "فروشگاه جوهر چاپ‌گر", + "fi": "Tulostinmustemyymälä", + "fr": "Vendeur d'encre pour imprimante", + "gl": "Tenda de tinta de impresora", + "he": "חנות דיו למדפסות", + "hu": "Nyomtatófesték bolt", + "it": "Negozio di cartucce per stampanti", + "ja": "プリンタ用インク店", + "ko": "프린터 잉크 가게", + "mk": "Продавница за печатарска боја", + "nl": "Winkel voor printerinkt", + "pl": "Sklep z tuszami do drukarek", + "pt-BR": "Loja de tinta de impressora", + "pt": "Loja de tinteiros de impressora", + "ru": "Магазин чернил для принтера", + "sk": "Obchod s tonermi", + "sv": "Butik för skrivarbläck", + "tr": "Kartuş Mağazası", + "uk": "Чорнила для принтера", + "vi": "Tiệm Mực in", + "zh-CN": "打印机墨水店", + "zh-TW": "印表機墨水商店" + } + }, + "shop/psychic": { + "title": { + "C": "Psychic", + "cs": "věštírna", + "de": "Astrologiker", + "el": "Μέντιουμ", + "en": "Psychic", + "eo": "Laborejo de mediumo", + "es": "Vidente", + "fa": "پیش‌گو", + "fi": "Psyykikko", + "fr": "Magasin ésotérique psi", + "gl": "Vidente", + "he": "מדיום", + "hu": "Jóslás", + "it": "Sensitivo", + "ja": "サイキック店", + "ko": "초능력자", + "mk": "Јасновидец", + "nl": "Medium (esoterie)", + "pl": "Medium", + "pt-BR": "Psíquico", + "pt": "Vidente", + "ru": "Предсказатель", + "sr": "Видовњак", + "sv": "Medium / Psykisk", + "tr": "Medyum", + "uk": "Екстрасенс", + "zh-CN": "特异功能(看相等)", + "zh-TW": "算命店" + } + }, + "shop/pyrotechnics": { + "title": { + "C": "Fireworks Store", + "ar": "متجر ألعاب نارية", + "ast": "Venta de pirotecnia", + "ca": "Botiga d'articles pirotècnics", + "cs": "Obchod s pyrotechnikou", + "da": "Fyrværkeributik", + "de": "Feuerwerksgeschäft", + "el": "Κατάστημα Πυροτεχνημάτων", + "en-GB": "Fireworks Shop", + "en": "Fireworks Store", + "eo": "Art-fajraĵa vendejo", + "es": "Tienda de fuegos artificiales", + "et": "Ilutulestiku kauplus", + "fa": "فروشگاه لوازم آتش‌بازی", + "fi": "Ilotulitemyymälä", + "fr": "Magasin de feux d'artifice", + "gl": "Tenda de fogos artificiais", + "he": "חנות זיקוקים", + "hr": "Prodavaonica za pirotehniku", + "hu": "Tűzijátékbolt", + "id": "Toko Kembang Api", + "is": "Flugeldaverslun", + "it": "Negozio di fuochi d'artificio", + "ja": "花火店", + "ko": "불꽃놀이 가게", + "lt": "Fejerverkų parduotuvė", + "mk": "Продавница за огномет", + "nl": "Vuurwerkwinkel", + "no": "Fyrverkerihandel", + "pl": "Sklep ze sztucznymi ogniami", + "pt-BR": "Loja de Fogos de Artifício", + "pt": "Loja de pirotecnia", + "ro": "Magazin de Artificii", + "ru": "Магазин фейерверков", + "sk": "Obchod s pyrotechnikov", + "sr": "Продавница петарди", + "sv": "Fyrverkerier", + "tr": "Havai Fişek Mağazası", + "uk": "Феєрверки", + "vi": "Tiệm Pháo bông", + "yue": "煙花舖", + "zh-CN": "烟花爆竹店", + "zh-HK": "煙花店", + "zh-TW": "煙火商" + } + }, + "shop/radiotechnics": { + "title": { + "C": "Radio/Electronic Component Store", + "ar": "متجر بيع قطع الراديو / الإلكترونية", + "ast": "Componentes electrónicos", + "ca": "Botiga d'articles electrònics", + "cs": "Obchod s elektronickými součástkami", + "da": "Radio/Elektronikbutik", + "de": "Radio/Elektronik-Geschäft", + "el": "Μαγαζί Ηλεκτρονικών Εξαρτημάτων", + "en-GB": "Radio/Electronic Component Shop", + "en": "Radio/Electronic Component Store", + "eo": "Radioteĥnika/elektronik-parta vendejo", + "es": "Tienda de componentes radio electrónicos", + "et": "Elektroonikakomponentide pood", + "fa": "فروشگاه رادیو/اجزای الکترونیکی", + "fi": "Elektroniikkakomponenttimyymälä", + "fr": "Magasin de composants électroniques et de radio", + "gl": "Tenda de compoñentes electrónicos", + "he": "חנות אלקטרוניקה ורדיו", + "hr": "Trgovina za elektroniku", + "hu": "Rádiótechnikai bolt", + "id": "Toko Komponen Radio/Elektronik", + "is": "Rafíhlutaverslun", + "it": "Negozio di componenti elettronici", + "ja": "電子部品店", + "ko": "라디오/전자 부품 가게", + "lt": "Radijo/elektroninių dalių parduotuvė", + "lv": "Radio / Elektronisko komponenšu veikals", + "mk": "Продавница за електрични делови", + "nl": "Winkel voor radio- en elektronische componenten", + "no": "Elektronikkbutikk", + "pl": "Sklep z częściami elektronicznymi", + "pt-BR": "Loja de Componentes Eletrônicos", + "pt": "Loja de componentes eletrónicos / rádio", + "ru": "Магазин радиодеталей", + "sk": "Obchod s elektronikou", + "sl": "Trgovina z elektroniko", + "sr": "Продавница електронских делова", + "sv": "Radio/Elektronikbutik", + "tr": "Radyocu", + "uk": "Радіодеталі", + "vi": "Tiệm Linh kiện Điện tử", + "yue": "無綫電/電子零件舖", + "zh-CN": "音像制品店", + "zh-HK": "無線電/電子零件店", + "zh-TW": "無線電/電子零件店" + } + }, + "shop/religion": { + "title": { + "C": "Religious Store", + "ar": "متجر ديني", + "ast": "Artículos relixosos", + "ca": "Botiga d'articles religiosos", + "cs": "Náboženské předměty", + "da": "Religøs forretning", + "de": "Devotionalienhandlung", + "el": "Κατάστημα Θρησκευτικών Ειδών", + "en-GB": "Religious Shop", + "en": "Religious Store", + "eo": "Devotaĵa vendejo", + "es": "Tienda religiosa", + "et": "Usutarvete kauplus", + "fa": "فروشگاه مذهبی", + "fi": "Uskonnollinen myymälä", + "fr": "Magasin d'articles religieux", + "gl": "Tenda relixiosa", + "he": "חנות לתשמישי דת", + "hr": "Prodavaonica religioznih pomagala", + "hu": "Kegytárgybolt", + "id": "Toko Agamawi", + "is": "Verslun með trúartengdar vörur", + "it": "Negozio di articoli religiosi", + "ja": "宗教用品店", + "ko": "종교 가게", + "lt": "Religinė parduotuvė", + "mk": "Верска продавница", + "nl": "Religieuze winkel", + "no": "Religiøs butikk", + "pl": "Sklep z dewocjonaliami", + "pt-BR": "Loja de Artigos Religiosos", + "pt": "Loja de artigos religiosos", + "ro": "Magazin Religios", + "ru": "Религиозная лавка", + "sk": "Obchod s náboženkými pomôckami", + "sr": "Продавница верских предмета", + "sv": "Religiös butik", + "tr": "Dini Ürünler Mağazası", + "uk": "Церковна лавка", + "vi": "Tiệm Bán đồ Tôn giáo", + "yue": "宗教舖", + "zh-CN": "宗教商店", + "zh-HK": "宗教用品店", + "zh-TW": "宗教用品店" + } + }, + "shop/rental": { + "title": { + "C": "Rental Shop", + "ar": "محل تأجير", + "cs": "půjčovna", + "da": "Udlejningsforretning", + "de": "Verleih", + "el": "Κατάστημα Ενοικίασης", + "en": "Rental Shop", + "eo": "Pruntejo", + "es": "Tienda de alquiler", + "fi": "Vuokraamo", + "fr": "Magasin de location", + "gl": "Tenda de alugueiro", + "he": "חנות השכרה", + "it": "Negozio di noleggio", + "ja": "レンタルショップ", + "ko": "대여점", + "mk": "Изнајмувачница", + "nl": "Verhuurwinkel", + "pl": "Wypożyczalnia", + "pt-BR": "Locadora", + "pt": "Loja de aluguer de material em geral", + "ru": "Аренда", + "sv": "Hyrbutik", + "tr": "Kiralık Dükkan", + "uk": "Станція прокату", + "vi": "Cho thuê Hàng hóa", + "zh-CN": "设备租赁", + "zh-TW": "租賃店" + } + }, + "shop/repair": { + "title": { + "C": "Repair Shop", + "ar": "محل تصليح", + "cs": "Opravna", + "de": "Reparaturgeschäft", + "el": "Κατάστημα Επισκευών", + "en": "Repair Shop", + "eo": "Riparejo", + "es": "Taller de reparaciones", + "fa": "تعمیرگاه", + "he": "חנות תיקונים", + "it": "Botega di Riparazioni", + "ja": "修理店", + "ko": "수리점", + "mk": "Поправачница", + "nl": "Reparatiewinkel", + "pl": "Naprawy", + "pt-BR": "Oficina", + "pt": "Loja de reparações", + "sv": "Reparatör", + "tr": "Tamir Dükkanı", + "uk": "Ремонт", + "vi": "Sửa Đồ", + "zh-CN": "修理店", + "zh-TW": "維修店" + } + }, + "shop/scuba_diving": { + "title": { + "C": "Scuba Diving Shop", + "ar": "متجر معدات الغوص تحت الماء", + "ast": "Tienda de merguyu", + "ca": "Botiga de submarinisme", + "cs": "Potřeby pro potápěče", + "da": "Dykkerudstyrsbutik", + "de": "Tauchwarengeschäft", + "el": "Κατάστημα Εξοπλισμού Καταδύσεων", + "en-GB": "Scuba Diving Shop", + "en": "Scuba Diving Shop", + "eo": "Subakvad-aparata vendejo", + "es": "Tienda de buceo", + "et": "Sukeldustarvikute kauplus", + "fa": "فروشگاه لوازم غواصی", + "fi": "Sukellusliike", + "fr": "Magasin de matériel de plongée sous-marine", + "gl": "Tenda de mergullo", + "he": "חנות לצוללנים", + "hr": "Prodavaonica opreme za ronjenje", + "hu": "Búvárfelszerelés-bolt", + "id": "Toko Perlengkapan Menyelam", + "is": "Verslun með köfunarvörur", + "it": "Negozio di attrezzatura per subacquei", + "ja": "スキューバダイビングショップ", + "ko": "스쿠버 다이빙 가게", + "lt": "Povandeninio nardymo parduotuvė", + "mk": "Продавница за нуркачка опрема", + "nl": "Duikwinkel", + "no": "Dykkerutstyrsbutikk", + "pl": "Sklep nurkowy", + "pt-BR": "Loja de equipamentos de mergulho", + "pt": "Loja de equipamento de mergulho", + "ro": "Magazin de Scufundări", + "ru": "Магазин подводного снаряжения", + "sk": "Obchod s potápačským vybavením", + "sl": "Trgovina s potapljaško opremo", + "sr": "Продавница ронилачке опреме", + "sv": "Dykarbutik", + "tr": "Tüple Dalış Mağazası", + "uk": "Підводне плавання", + "vi": "Tiệm Dụng cụ Lặn Scuba", + "zh-CN": "潜水商店", + "zh-HK": "潛水用品店", + "zh-TW": "潛水用品店" + } + }, + "shop/seafood": { + "title": { + "C": "Seafood Shop", + "ar": "متجر مأكولات بحرية", + "ast": "Mariscos", + "ca": "Marisqueria", + "cs": "Rybárna", + "da": "Fiskehandler", + "de": "Fischgeschäft", + "el": "Κατάστημα Θαλασσινών", + "en-GB": "Seafood Shop", + "en": "Seafood Shop", + "eo": "Marfrukta vendejo", + "es": "Tienda de pescados y mariscos", + "et": "Kalapood", + "fa": "فروشگاه غذای دریایی", + "fi": "Meriruokakauppa", + "fr": "Poissonnerie / Vente de fruits de mer", + "gl": "Peixaría", + "he": "חנות למאכלי ים", + "hr": "Ribarnica", + "hu": "Halbolt", + "id": "Toko HIdangan Laut", + "is": "Fiskverslun", + "it": "Pescheria", + "ja": "魚屋", + "ko": "해산물 가게", + "lt": "Jūros gėrybių parduotuvė", + "mk": "Продавница за морска храна", + "nl": "Viswinkel", + "no": "Sjømatbutikk", + "pl": "Sklep z rybami i owocami morza", + "pt-BR": "Peixaria ou loja de frutos do mar", + "pt": "Peixaria", + "ro": "Magazin de Fructe de Mare", + "ru": "Магазин морепродуктов", + "sk": "Obchod s morskými špecialitami", + "sl": "Ribarnica", + "sr": "Продавница морске хране", + "sv": "Fiskaffär", + "tr": "Deniz Ürünleri Mağazası", + "uk": "Морепродукти", + "vi": "Tiệm Hải sản", + "zh-CN": "海鲜店", + "zh-HK": "海鮮店", + "zh-TW": "海產店" + } + }, + "shop/second_hand": { + "title": { + "C": "Consignment/Thrift Store", + "ar": "محل لبيع البضائع المستعملة", + "ast": "Reventa d'empeños", + "ca": "Consigna", + "cs": "Second hand", + "da": "Genbrugsbutik", + "de": "Second-Hand-Laden", + "en-GB": "Second Hand Shop", + "en": "Consignment/Thrift Store", + "eo": "Brokantejo", + "es": "Tienda de segunda mano", + "et": "Komisjonikauplus", + "fa": "دست دوم فروشی", + "fi": "Käytetyn tavaran kauppa", + "fr": "Dépôt-vente/produits d'occasion", + "gl": "Tenda de segunda man", + "he": "חנות יד שניה", + "hu": "Használtáru-bolt", + "id": "Jual Titip/Pasar Loak", + "is": "Notað og nýtt", + "it": "Negozio di articoli usati", + "ja": "リサイクルショップ", + "ko": "위탁/중고품 할인 매장", + "mk": "Продавница за половни работи", + "nl": "Tweedehandswinkel", + "no": "Gjenbruksbutikk", + "pl": "Sklep z rzeczami używanymi", + "pt-BR": "Brechó", + "pt": "Loja de produtos em segunda mão", + "ro": "Magazin de Depozite", + "ru": "Магазин секонд хенда", + "sk": "Second hand", + "sr": "Слање робе", + "sv": "Second hand", + "tr": "Bit Pazarı", + "uk": "Благодійний магазин", + "vi": "Tiệm Mua lại", + "zh-CN": "二手市场", + "zh-HK": "寄賣/二手店", + "zh-TW": "格仔鋪/二手店" + } + }, + "shop/sewing": { + "title": { + "C": "Sewing Supply Shop", + "ar": "متجر مستلزمات خياطة", + "cs": "Šicí potřeby, galanterie", + "da": "Syforretning", + "de": "Kurzwarenladen", + "el": "Κατάστημα Προμηθειών για Ράψιμο", + "en": "Sewing Supply Shop", + "eo": "Kudrilar-vendejo", + "es": "Tienda de suministros de costura", + "fa": "فروشگاه لوازم خیاطی / خرازی", + "fi": "Ompelutarvikeliike", + "fr": "Magasin de couture", + "gl": "Tenda de artigos de costura", + "he": "חנות ציוד תפירה", + "hu": "Varrásfelszerelés bolt", + "is": "Saumavöruverslun", + "it": "Merceria", + "ja": "手芸用品店", + "ko": "바느질 용품 가게", + "mk": "Шивачки набавки", + "nl": "Naaiwinkel", + "no": "Sybutikk", + "pl": "Pasmanteria", + "pt-BR": "Loja de suprimentos de costura", + "pt": "Retrosaria", + "ru": "Швейные принадлежности", + "sk": "Galantéria", + "sr": "Продавница кројачке робе", + "sv": "Sybutik", + "tr": "Dikiş Malzemeleri Dükkanı", + "uk": "Приладдя для шиття", + "vi": "Tiệm Đồ Kim chỉ", + "zh-CN": "缝纫用品商店", + "zh-TW": "縫紉用品店" + } + }, + "shop/shoe_repair": { + "title": { + "C": "Shoe Repair Shop", + "ar": "محل تصليح الأحذية", + "ca": "Sabater", + "cs": "Opravna obuvi", + "de": "Schuhreparatur", + "el": "Τσαγκαράδικο", + "en": "Shoe Repair Shop", + "eo": "Ŝu-riparejo", + "es": "Taller de reparación de calzado", + "fa": "کفاشی", + "fr": "Cordonnier", + "gl": "Tenda de arranxo de zapatos", + "he": "חנות לתיקון נעליים", + "hu": "Cipőjavítás", + "it": "Calzolaio", + "ja": "靴修理店", + "ko": "신발 수선점", + "mk": "Чевлар", + "nl": "Schoenenreparatiewinkel", + "pl": "Szewc (naprawa obuwia)", + "pt-BR": "Loja de conserto de calçados", + "pt": "Reparador de sapatos", + "ru": "Ремонт обуви", + "sk": "Oprava obuvi", + "sr": "Обућар", + "sv": "Skomakare", + "tr": "Ayakkabı Tamir Mağazası", + "uk": "Ремонт взуття", + "vi": "Tiệm Sửa Giày", + "zh-CN": "修鞋店", + "zh-TW": "修鞋店" + } + }, + "shop/shoes": { + "title": { + "C": "Shoe Store", + "af": "Skoenwinkel", + "am": "ጫማ ቤት", + "ar": "متجر أحذية", + "ast": "Zapatería", + "bg": "Магазин за обувки", + "bn": "জুতোর দোকান", + "bs": "Prodavnica obuće", + "ca": "Sabateria", + "cs": "Obuvnictví", + "da": "Skobutik", + "de": "Schuhgeschäft", + "el": "Κατάστημα Υπόδησης", + "en-GB": "Shoe Shop", + "en": "Shoe Store", + "eo": "Ŝua vendejo", + "es": "Zapatería", + "et": "Kingapood", + "fa": "کفش فروشی", + "fi": "Kenkäkauppa", + "fr": "Magasin de chaussures", + "gl": "Zapataría", + "he": "חנות נעליים", + "hr": "Prodavaonica obuće", + "hu": "Cipőbolt", + "id": "Toko Sepatu", + "is": "Skóbúð", + "it": "Negozio di scarpe", + "ja": "靴店", + "kn": "ಮೆಟ್ಟು ಅಂಗಡಿ", + "ko": "신발 가게", + "lt": "Batų parduotuvė", + "lv": "Apavu veikals", + "mk": "Продавница за обувки", + "nl": "Schoenenwinkel", + "no": "Skobutikk", + "pl": "Sklep obuwniczy", + "pt-BR": "Loja de Calçados", + "pt": "Sapataria", + "ro": "Magazin de Ghete", + "ru": "Обувь", + "sk": "Obchod s obuvov", + "sl": "Trgovina s čevlji", + "sr": "Продавница обуће", + "sv": "Skoaffär", + "ta": "காலணியகம்", + "tr": "Ayakkabı Mağazası", + "uk": "Взуття", + "vi": "Tiệm Giày", + "yue": "鞋舖", + "zh-CN": "鞋店", + "zh-HK": "鞋舖", + "zh-TW": "鞋店", + "zh": "鞋店" + } + }, + "shop/spices": { + "title": { + "C": "Spice Shop", + "ar": "محل بيع بهارات", + "cs": "koření, bylinky", + "da": "Kryddeributik", + "de": "Gewürzladen", + "el": "Κατάστημα Μπαχαρικών", + "en": "Spice Shop", + "eo": "Spica vendejo", + "es": "Tienda de especias", + "fa": "فروشگاه ادویه", + "fi": "Maustekauppa", + "fr": "Magasin d'épices", + "gl": "Tenda de especias", + "he": "חנות תבלינים", + "hu": "Fűszerbolt", + "it": "Negozio di spezie", + "ja": "スパイス店", + "ko": "향신료 가게", + "mk": "Продавница за зачини", + "nl": "Kruidenwinkel", + "pl": "Sklep z przyprawami", + "pt-BR": "Loja de especiarias", + "pt": "Loja de especiarias", + "ru": "Магазин специй", + "sk": "Obchod s koreninami", + "sr": "Продавница зачина", + "sv": "Affär för kryddor", + "tr": "Baharat Mağazası", + "uk": "Спеції", + "vi": "Tiệm Gia vị", + "zh-CN": "香料店", + "zh-TW": "香料店" + } + }, + "shop/sports": { + "title": { + "C": "Sporting Goods Store", + "af": "Sportwinkel", + "ar": "متجر بيع أدوات رياضية", + "ast": "Material deportivu", + "bg": "Спортен магазин", + "bn": "খেলার সামগ্রির দোকান", + "bs": "Prodavnica sportske opreme", + "ca": "Botiga d'esports", + "cs": "Sportovní potřeby", + "da": "Sportsudstyrsbutik", + "de": "Sportgeschäft", + "el": "Κατάστημα Αθλητικών Ειδών", + "en-GB": "Sporting Goods Shop", + "en": "Sporting Goods Store", + "eo": "Sporta vendejo", + "es": "Tienda de artículos deportivos", + "et": "Sporditarvete pood", + "fa": "فروشگاه لوازم ورزشی", + "fi": "Urheiluliike", + "fr": "Magasin d'équipement sportif", + "gl": "Tenda de deportes", + "he": "חנות לאביזרי ספורט", + "hr": "Prodavaonica sportske opreme", + "hu": "Sportbolt", + "id": "Toko Olahraga", + "is": "Íþróttaverslun", + "it": "Negozio di articoli sportivi", + "ja": "スポーツ用品店", + "ko": "스포츠 용품 가게", + "lt": "Sporto reikmenų parduotuvė", + "lv": "Sporta veikals", + "mk": "Продавница за спортска опрема", + "nl": "Sportzaak", + "no": "Sportsbutikk", + "pl": "Sklep sportowy", + "pt-BR": "Loja de equipamentos esportivos", + "pt": "Loja de artigos desportivos", + "ro": "Magazin de Haine de Sport", + "ru": "Спорттовары", + "sk": "Obchod so športovými potrebami", + "sl": "Športna trgovina", + "sr": "Продавница спортске опреме", + "sv": "Sportaffär", + "tr": "Spor Ürünleri Mağazası", + "uk": "Спорттовари", + "vi": "Tiệm Dụng cụ Thể thao", + "yue": "運動舖", + "zh-CN": "体育用品店", + "zh-HK": "運動用品店", + "zh-TW": "運動用品店", + "zh": "体育用品店" + } + }, + "shop/stationery": { + "title": { + "C": "Stationery Store", + "af": "Skryfbehoeftewinkel", + "am": "የጽሕፈት መሳሪያ መሸጫ", + "ar": "متجر قرطاسية و أدوات مكتبية", + "ast": "Papelería", + "bg": "Магазин за канцеларски стоки", + "bs": "Prodavnica kancelarijske opreme", + "ca": "Papereria", + "cs": "Kancelářské potřeby", + "da": "Papirforhandler", + "de": "Schreibwarengeschäft", + "el": "Κατάστημα Γραφικής Ύλης", + "en-GB": "Stationery Shop", + "en": "Stationery Store", + "eo": "Papervara vendejo", + "es": "Artículos de papelería y oficina", + "et": "Kirjatarvete kauplus", + "fa": "فروشگاه نوشت‌افزار", + "fi": "Toimistotarvikekauppa", + "fr": "Papeterie", + "gl": "Papelaría", + "he": "חנות לדברי כתיבה", + "hr": "Papirnica", + "hu": "Papírbolt", + "id": "Toko Alat Tulis", + "is": "Skriffangaverslun", + "it": "Negozio di cancelleria", + "ja": "文具店", + "ko": "문구점", + "lt": "Kanceliarinių prekių parduotuvė", + "lv": "Rakstāmlietu veikals", + "mk": "Канцелариски материјали", + "nl": "Kantoorboekhandel", + "no": "Papirhandel", + "pl": "Sklep papierniczy", + "pt-BR": "Papelaria", + "pt": "Papelaria", + "ru": "Канцелярские товары", + "sk": "Papierníctvo", + "sl": "Papirnica", + "sr": "Продавница канцеларијске опреме", + "sv": "Pappershandel", + "tr": "Kırtasiye", + "uk": "Канцтовари", + "vi": "Tiệm Văn phòng phẩm", + "yue": "文具舖", + "zh-CN": "文具店", + "zh-HK": "文具店", + "zh-TW": "文具店", + "zh": "文化用品店" + } + }, + "shop/storage_rental": { + "title": { + "C": "Storage Rental", + "ar": "محل تأجير أماكن التخزين", + "ast": "Alquiler d'almacenes", + "ca": "Lloguer de magatzem", + "cs": "Skladovací prostor", + "da": "Lagerhotel", + "de": "Lagerraumvermieter", + "el": "Ενοικιαζόμενος Χώρος Αποθήκευσης", + "en-GB": "Storage Rental", + "en": "Storage Rental", + "eo": "Magazena spaco por lui", + "es": "Alquiler de espacios para almacenaje", + "fa": "کرایه انبار", + "fi": "Varastonvuokrauspalvelu", + "fr": "Location de stockage - Ne pas utiliser", + "gl": "Alugueiro de almacéns", + "he": "שטח אחסון להשכרה", + "hu": "Tárolóhely bérbeadása", + "is": "Geymsluleiga", + "it": "Box a noleggio", + "ja": "レンタル倉庫", + "ko": "저장공간 대여소", + "mk": "Изнамјување складиштен простор", + "nl": "Zelfopslag", + "no": "Minilager", + "pl": "Przechowalnia rzeczy (długoterminowa)", + "pt-BR": "Aluguel de Armazenamento", + "pt": "Aluguer de depósitos", + "ru": "Аренда складских помещений", + "sk": "Prenájom skladových priestorov", + "sl": "Najem shrambnih prostorov", + "sr": "Изнајмљивање складишта", + "sv": "Hyrlager", + "tr": "Depo Kiralama Mağazası", + "uk": "Склади в оренду", + "vi": "Cho thuê Chỗ Để đồ", + "zh-CN": "租赁处", + "zh-HK": "存倉", + "zh-TW": "儲物空間出租" + } + }, + "shop/supermarket": { + "title": { + "C": "Supermarket", + "af": "Supermark", + "am": "የገበያ ማዕከል", + "ar": "سوبر ماركت", + "ast": "Supermercáu", + "bg": "Супермаркет", + "bn": "সুপারমার্কেট", + "bs": "Supermarket", + "ca": "Supermercat", + "cs": "Supermarket", + "da": "Supermarked", + "de": "Supermarkt", + "dv": "ސުޕަރމާރކެޓް", + "el": "Σουπερμάρκετ", + "en-GB": "Supermarket", + "en": "Supermarket", + "eo": "Superbazaro", + "es": "Supermercado", + "et": "Supermarket", + "fa": "فروشگاه بزرگ", + "fi": "Supermarketti", + "fr": "Supermarché", + "gl": "Supermercado", + "he": "סופרמרקט", + "hr": "Veletrgovina", + "hu": "Szupermarket", + "id": "Supermarket", + "is": "Stórmarkaður", + "it": "Supermercato", + "ja": "スーパーマーケット", + "ko": "슈퍼마켓", + "lt": "Prekybos centras", + "lv": "Lielveikals", + "mk": "Супермаркет", + "ne": "सुपरमार्केट", + "nl": "Supermarkt", + "no": "Supermarked", + "pl": "Supermarket", + "pt-BR": "Supermercado", + "pt": "Supermercado / Hipermercado", + "ro": "Supermarket", + "ru": "Супермаркет", + "sk": "Supermarket", + "sl": "Supermarket", + "so": "Suuq-weyne", + "sq": "Supermarket", + "sr": "Самопослуга", + "sv": "Mataffär", + "te": "సుపర్ మార్కెట్", + "tr": "Süpermarket", + "uk": "Супермаркет", + "vi": "Siêu thị", + "yue": "超級市場", + "zh-CN": "超市", + "zh-HK": "超級市場", + "zh-TW": "超級市場", + "zh": "超级市场" + } + }, + "shop/swimming_pool": { + "title": { + "C": "Pool Supply Store", + "ar": "متجر مستلزمات حمامات السباحة", + "cs": "bazény", + "de": "Swimmingpoolbedarf", + "el": "Κατάστημα Ειδών Πισίνας", + "en": "Pool Supply Store", + "eo": "Vendejo de naĝej-akcesoriaĵoj", + "es": "Tienda de suministros para piscinas", + "fa": "فروشگاه لوازم استخر", + "fi": "Uima-allasliike", + "fr": "Magasin de matériel de piscine", + "gl": "Tenda de subministracións para piscinas", + "he": "חנות ציוד לבריכות", + "hr": "Trgovina opreme za bazene", + "hu": "Uszodatechnika-bolt", + "it": "Negozio per rifornimenti per piscina", + "ja": "プール用品店", + "ko": "수영장 용품 가게", + "mk": "Базенски залихи", + "nl": "Winkel voor zwembadbenodigdheden", + "pl": "Sklep z akcesoriami do basenów", + "pt-BR": "Loja de suprimentos para piscinas", + "pt": "Loja de acessórios para piscinas", + "sv": "Butik för pooltillbehör", + "tr": "Havuz Malzemeleri Mağazası", + "uk": "Обладнання для басейнів", + "zh-CN": "泳池设备店", + "zh-TW": "泳池用品商店" + } + }, + "shop/tailor": { + "title": { + "C": "Tailor", + "ar": "خياط", + "ast": "Sastrería", + "ca": "Sastreria", + "cs": "Krejčovství", + "da": "Skrædder", + "de": "Schneider", + "el": "Ράφτης", + "en-GB": "Tailor", + "en": "Tailor", + "eo": "Tajlora laborejo/vendejo", + "es": "Sastrería", + "et": "Rätsep", + "fa": "خیاط", + "fi": "Räätäliliike", + "fr": "Tailleur", + "gl": "Xastraría", + "he": "חייט", + "hr": "Krojač", + "hu": "Szabó", + "id": "Tukang Jahit", + "is": "Skraddari", + "it": "Sartoria", + "ja": "仕立屋", + "kn": "ದರ್ಜಿ", + "ko": "양복점", + "mk": "Кројач", + "ms": "Kedai Tukang Jahit", + "nl": "Kleermaker", + "no": "Skredder", + "pl": "Krawiec / usługi krawieckie", + "pt-BR": "Alfaiataria", + "pt": "Alfaiate", + "ru": "Портной", + "sk": "Krajčírstvo", + "sl": "Krojač", + "sr": "Kројач", + "sv": "Skräddare", + "ta": "தையல்காரர்", + "tr": "Terzi", + "uk": "Кравець", + "vi": "Tiệm May", + "zh-CN": "裁缝店", + "zh-HK": "裁縫", + "zh-TW": "裁縫" + } + }, + "shop/tattoo": { + "title": { + "C": "Tattoo Parlor", + "ar": "صالون الوشم", + "ast": "Tatuaxes", + "ca": "Centre de tatuatges", + "cs": "Tetovací salón", + "da": "Tatovør", + "de": "Tätowierer", + "el": "Στούντιο Τατουάζ", + "en-GB": "Tattoo Parlor", + "en": "Tattoo Parlor", + "eo": "Salono de tatuado", + "es": "Salón de tatuajes", + "et": "Tätoveeringu salong", + "fa": "سالن تاتو", + "fi": "Tatuointisalonki", + "fr": "Salon de tatouage", + "gl": "Salón de tatuaxes", + "he": "מכון קעקועים", + "hr": "Studio za tetoviranje", + "hu": "Tetováló szalon", + "id": "Jasa Pembuatan Tato", + "is": "Húðflúrstofa", + "it": "Studio per Tatuaggi", + "ja": "タトゥースタジオ", + "ko": "문신 가게", + "lt": "Tatuiruočių salonas", + "lv": "Tetovējumu veikals", + "mk": "Тетоважи", + "nl": "Tattoozetter", + "no": "Tatovør", + "pl": "Studio tatuażu", + "pt-BR": "Estúdio de Tatuagem", + "pt": "Estúdio de tatuagens", + "ro": "Artist de Tatuaje", + "ru": "Тату салон", + "sk": "Tetovací salón", + "sl": "Salon za tetovažo", + "sr": "Салон за тетоваже", + "sv": "Tatueringsstudio", + "tr": "Dövmeci", + "uk": "Тату салон", + "vi": "Tiệm Xăm", + "zh-CN": "纹身店", + "zh-HK": "紋身店", + "zh-TW": "刺青店" + } + }, + "shop/tea": { + "title": { + "C": "Tea Store", + "ar": "متجر شاي", + "ast": "Tienda de tes", + "ca": "Botiga de te", + "cs": "Obchod s čajem", + "da": "Tebutik", + "de": "Teegeschäft", + "el": "Τεϊοπωλείο", + "en-GB": "Tea Shop (Retail)", + "en": "Tea Store", + "eo": "Tea vendejo", + "es": "Tienda de té", + "et": "Teepood", + "fa": "فروشگاه چای", + "fi": "Teekauppa", + "fr": "Magasin de thés", + "gl": "Tenda de té", + "he": "חנות תה", + "hr": "Trgovina za čajeve", + "hu": "Teaüzlet", + "id": "Toko Teh", + "is": "Teverslun", + "it": "Negozio di tè", + "ja": "茶舗", + "ko": "차 가게", + "lt": "Arbatos parduotuvė", + "lv": "Tējas veikals", + "mk": "Продавница за чај", + "nl": "Theewinkel", + "no": "Tebutikk", + "pl": "Sklep z herbatą", + "pt-BR": "Loja de Chás", + "pt": "Loja de chás", + "ro": "Magazin de Ceaiuri", + "ru": "Чайный магазин", + "sk": "Obchod s čajom", + "sl": "Čajnica", + "sr": "Чајџиница", + "sv": "Te-butik", + "ta": "தேநீர் கடை", + "tr": "Çaycı", + "uk": "Чай", + "vi": "Tiệm Trà Khô", + "zh-CN": "茶叶商店", + "zh-HK": "茶莊", + "zh-TW": "茶行" + } + }, + "shop/telecommunication": { + "title": { + "C": "Telecom Retail Store", + "ar": "متجر بيع بالتجزئة لشركة اتصالات", + "cs": "telekomunikační prodejna", + "de": "Telekommunikationsfachgeschäft", + "el": "Κατάστημα Πώλησης Τηλεπικοινωνιών", + "en": "Telecom Retail Store", + "eo": "Oficejo de telekomunikada firmao (vendo)", + "es": "Tienda minorista de telecomunicaciones", + "et": "Sidefirma pood", + "fa": "فروشگاه لوازم مخابراتی", + "fi": "Teleoperaattorin myymälä", + "fr": "Magasin de compagnie de télécommunication", + "gl": "Tenda de subministracións de telecomunicación", + "he": "חנות טלפונים", + "it": "Negozio al dettaglio di Telefonia", + "ja": "通信サービス店", + "ko": "통신사 대리점", + "mk": "Телекомуникациска продавница", + "nl": "Telecomwinkel", + "pl": "Dostawca Internetu/telefonu/TV", + "pt-BR": "Loja de telecomunicações", + "pt": "Loja de telecomunicações", + "sv": "Telekombutik", + "tr": "Telekom Perakende Mağazası", + "uk": "Магазин телекомунікаційного обладнання", + "zh-CN": "电信零售店", + "zh-TW": "通訊行" + } + }, + "shop/ticket": { + "title": { + "C": "Ticket Seller", + "ar": "بائع تذاكر", + "ast": "Venta d'entraes", + "ca": "Venedor de tiquets", + "cs": "Prodejna vstupenek", + "da": "Billetsælger", + "de": "Eintrittskartenverkäufer", + "el": "Εκδοτήριο Εισιτηρίων", + "en-GB": "Ticket Seller", + "en": "Ticket Seller", + "eo": "Biletejo", + "es": "Venta de boletos", + "et": "Piletikauplus", + "fa": "بلیط فروشی", + "fi": "Lipunmyyntipiste", + "fr": "Boutique de vente de billets", + "gl": "Venda de entradas", + "he": "עמדת מכירת כרטיסים", + "hr": "Prodavač ulaznica", + "hu": "Jegypénztár", + "id": "Penjual Tiket", + "is": "Miðasala", + "it": "Rivenditore di Biglietti", + "ja": "チケット店", + "ko": "티켓 판매소", + "lt": "Bilietų pardavėjas", + "lv": "Biļešu kase", + "mk": "Билетарница", + "nl": "Ticketverkoop", + "no": "Billettutsalg", + "pl": "Sprzedaż biletów", + "pt-BR": "Bilheteria", + "pt": "Bilheteira", + "ro": "Vânzător de Bilete", + "ru": "Билетная касса", + "sk": "Predajňa vstupeniek", + "sl": "Prodajalna vstopnic", + "sr": "Билетарница", + "sv": "Biljettförsäljning", + "tr": "Bilet Satıcısı", + "uk": "Квиткова каса", + "vi": "Đại lý Bán Vé", + "zh-CN": "售票处", + "zh-HK": "門票售賣", + "zh-TW": "賣票亭" + } + }, + "shop/tiles": { + "title": { + "C": "Tile Shop", + "ar": "متجر بلاط", + "ast": "Tienda d'azulexos", + "ca": "Botiga de rajoles", + "cs": "Obchod s obklady", + "da": "Fliseforhandler", + "de": "Fliesenhändler", + "el": "Κατάστημα Πλακιδίων", + "en-GB": "Tile Shop", + "en": "Tile Shop", + "eo": "Kahela vendejo", + "es": "Tienda de azulejos", + "fa": "کاشی فروشی", + "fi": "Laattamyymälä", + "fr": "Magasin de carrelage", + "gl": "Tenda de azulexos", + "he": "חנות מרצפות", + "hu": "Csempebolt", + "is": "Flísaverslun", + "it": "Negozio di piastrelle", + "ja": "タイル店", + "ko": "타일 가게", + "lv": "Flīžu veikals", + "mk": "Продавница за плочки", + "nl": "Tegelwinkel", + "no": "Flisebutikk", + "pl": "Sklep z płytkami ceramicznymi", + "pt-BR": "Loja de Azulejos", + "pt": "Loja de azulejos", + "ru": "Магазин плитки", + "sr": "Продавница керамике", + "sv": "Kakelbutik", + "tr": "Karo Dükkanı", + "uk": "Кахель", + "vi": "Tiệm Ngói", + "zh-CN": "瓷砖商店", + "zh-TW": "磁磚商店" + } + }, + "shop/tobacco": { + "title": { + "C": "Tobacco Shop", + "ar": "محل بيع التبغ", + "ast": "Estancu", + "ca": "Estanc", + "cs": "Kuřácké potřeby", + "da": "Tobaksforretning", + "de": "Tabakwarengeschäft", + "el": "Κατάστημα Ειδών Καπνού", + "en-GB": "Tobacco Shop", + "en": "Tobacco Shop", + "eo": "Tabaka vendejo", + "es": "Tienda de tabaco", + "et": "Tubakapood", + "fa": "فروشگاه مواد افیونی تنباکو", + "fi": "Tupakkapuoti", + "fr": "Bureau de tabac", + "gl": "Estanco", + "he": "חנות טבק", + "hr": "Trgovina za duhanske proizvode", + "hu": "Dohánybolt", + "id": "Toko Tembakau", + "is": "Tóbaksverslun", + "it": "Tabaccheria", + "ja": "たばこ店", + "ko": "담배 가게", + "lt": "Tabako parduotuvė", + "lv": "Tabakas veikals", + "mk": "Продавница за тутун", + "nl": "Tabakswinkel", + "no": "Tobakksbutikk", + "pl": "Sklep z tytoniem", + "pt-BR": "Tabacaria", + "pt": "Tabacaria", + "ro": "Tăbăcărie", + "ru": "Табачный магазин", + "sk": "Obchod s tabakom", + "sl": "Tobačna trgovina", + "sr": "Дуванџиница", + "sv": "Tobaksbutik", + "ta": "புகையிலைக் கடை", + "tr": "Tütüncü", + "uk": "Тютюн", + "vi": "Tiệm Thuốc lá", + "zh-CN": "烟草店", + "zh-HK": "煙草店", + "zh-TW": "菸店" + } + }, + "shop/tool_hire": { + "title": { + "C": "Tool Rental", + "ar": "محل تأجير معدات", + "ca": "Lloguer d'eines", + "cs": "půjčovna nářadí", + "de": "Werkzeugverleih", + "el": "Ενοικιαστήριο Εργαλείων", + "en": "Tool Rental", + "eo": "Il-pruntejo", + "es": "Alquiler de herramientas", + "fi": "Työkaluvuokraamo", + "fr": "Location d'outils", + "gl": "Alugueiro de ferramentas", + "he": "השכרת כלים", + "it": "Noleggio Utensili", + "ja": "工具レンタル店", + "ko": "도구 대여점", + "mk": "Изнајмување алати", + "nl": "Gereedschapsverhuur", + "no": "Verktøyutleie", + "pl": "Wypożyczalnia narzędzi", + "pt-BR": "Aluguel de ferramentas", + "pt": "Aluguer de ferramentas", + "ru": "Аренда инструмента", + "sk": "Požičovňa nástrojov", + "sr": "Изнајмљивање алата", + "sv": "Verktygsuthyrning", + "tr": "Alet Kiralama", + "uk": "Прокат інструмента", + "vi": "Cho thuê Công cụ", + "zh-CN": "工具租赁店", + "zh-TW": "工具租賃" + } + }, + "shop/toys": { + "title": { + "C": "Toy Store", + "af": "Speelgoedwinkel", + "ar": "متجر ألعاب", + "ast": "Xuguetería", + "bg": "Магазин за играчки", + "bn": "খেলনার দোকান", + "bs": "Prodavnica igračaka", + "ca": "Botiga de joguines", + "cs": "Hračkářství", + "da": "Legetøjsbutik", + "de": "Spielwarengeschäft", + "el": "Κατάστημα Παιχνιδιών", + "en-GB": "Toy Shop", + "en": "Toy Store", + "eo": "Ludila vendejo", + "es": "Juguetería", + "et": "Mänguasjapood", + "fa": "اسباب بازی فروشی", + "fi": "Lelukauppa", + "fr": "Magasin de jouets", + "gl": "Tenda de xoguetes", + "he": "חנות צעצועים", + "hr": "Prodavaonica igračaka", + "hu": "Játékbolt", + "id": "Toko Mainan", + "is": "Dótabúð", + "it": "Negozio di giocattoli", + "ja": "玩具店", + "ko": "완구점", + "lt": "Žaislų parduotuvė", + "lv": "Rotaļlietu veikals", + "mk": "Продавница за играчки", + "ms": "Kedai Permainan", + "nl": "Speelgoedwinkel", + "no": "Lekebutikk", + "pl": "Sklep z zabawkami", + "pt-BR": "Loja de brinquedos", + "pt": "Loja de brinquedos", + "ro": "Magazin de Jucării", + "ru": "Игрушки", + "sk": "Hračkárstvo", + "sl": "Trgovina igrač", + "sr": "Продавница играчака", + "sv": "Leksaksaffär", + "ta": "விளையாட்டுப் பொருட் கடை", + "te": "బొమ్మల కొట్టు", + "tr": "Oyuncak Mağazası", + "uk": "Іграшки", + "vi": "Tiệm Đồ chơi", + "yue": "玩具舖", + "zh-CN": "玩具店", + "zh-HK": "玩具店", + "zh-TW": "玩具店", + "zh": "玩具店" + } + }, + "shop/trade": { + "title": { + "C": "Trade Shop", + "ar": "محلات بيع مواد بالجملة", + "cs": "stavebniny", + "da": "Brancheforhandler", + "de": "Baustoffhandel", + "el": "Εμπορικό Κατάστημα", + "en-GB": "Trade Shop", + "en": "Trade Shop", + "eo": "Pogranda vendejo (konstruaĵ‑materialoj)", + "es": "Tienda comercial / Corralón", + "fr": "Grossiste", + "gl": "Distribuidor", + "he": "חנות קמעונאית", + "hu": "Szakáruház", + "is": "Iðnaðarvörusala", + "it": "Materiali da edilizia", + "ja": "建築資材店", + "ko": "무역 가게", + "mk": "Занаетчиски набавки", + "nl": "Bouwmaterialenhandel", + "pl": "Skład materiałów budowlanych", + "pt-BR": "Distribuidor", + "pt": "Loja de materiais de construção", + "ru": "Оптовая база", + "sk": "Stavebniny", + "sr": "Трговачка продавница", + "sv": "Proffshandel", + "tr": "Ticaret Mağazası", + "uk": "Оптово-роздрібний магазин", + "vi": "Tiệm Công nghiệp", + "zh-CN": "材料商店", + "zh-TW": "材料行" + } + }, + "shop/travel_agency": { + "title": { + "C": "Travel Agency", + "af": "Reisagentskap", + "ar": "وكالة سفر", + "ast": "Axencia de viaxes", + "bg": "Туристическа агенция", + "bs": "Putnička agencija", + "ca": "Agència de viatges", + "cs": "Cestovní kancelář", + "da": "Rejsebureau", + "de": "Reisebüro", + "dv": "ޓްރެވެލް އޭޖެންސީ", + "el": "Ταξιδιωτικό Γραφείο", + "en-GB": "Travel Agency", + "en": "Travel Agency", + "eo": "Vojaĝa oficejo", + "es": "Agencia de viajes", + "et": "Reisibüroo", + "fa": "آژانس مسافرتی", + "fi": "Matkatoimisto", + "fr": "Agence de voyages", + "gl": "Axencia de viaxes", + "he": "סוכנות נסיעות", + "hr": "Putnička agencija", + "hu": "Utazási iroda", + "id": "Biro Perjalanan", + "is": "Ferðaskrifstofa", + "it": "Agenzia di viaggi", + "ja": "旅行代理店", + "ko": "여행사", + "lt": "Kelionių agentūra", + "lv": "Ceļojumu aģentūra", + "mk": "Туристичка агенција", + "nl": "Reisbureau", + "no": "Reisebyrå", + "pl": "Biuro podróży", + "pt-BR": "Agência de Viagens", + "pt": "Agência de viagens", + "ro": "Agenție de Călătorii", + "ru": "Бюро путешествий", + "sk": "Cestovná agentúra", + "sl": "Turistična agencija", + "so": "Wakaalad Socdaal", + "sr": "Туристичка агенција", + "sv": "Resebyrå", + "ta": "பயண முகவர்", + "tr": "Turizm Acentası", + "uk": "Туристична агенція", + "vi": "Văn phòng Du lịch", + "yue": "旅行社", + "zh-CN": "旅行社", + "zh-HK": "旅行社", + "zh-TW": "旅行社", + "zh": "旅行社" + } + }, + "shop/trophy": { + "title": { + "C": "Trophy Shop", + "ar": "محل بيع جوائز ودروع ولوحات تذكارية", + "ca": "Botiga de trofeus", + "cs": "Prodejna trofejí", + "de": "Trophäengeschäft", + "el": "Κατάστημα Τροπαίων", + "en": "Trophy Shop", + "eo": "Vendejo de pokaloj kaj premioj", + "es": "Tienda de trofeos", + "gl": "Tenda de trofeos", + "he": "חנות מדליות", + "hu": "Kupák, kitüntetések boltja", + "it": "Negozio di coppe", + "ja": "徽章店", + "ko": "트로피 가게", + "mk": "Продавница за трофеи", + "nl": "Trofeewinkel", + "pl": "Sklep z trofeami", + "pt-BR": "Loja de troféus", + "pt": "Loja de troféus", + "sk": "Obchod s trofejami", + "sr": "Продавница трофеја", + "sv": "Affär för troféer", + "tr": "Kupa Dükkanı", + "uk": "Магазин нагород", + "vi": "Tiệm Giải thưởng", + "zh-CN": "奖杯奖牌店", + "zh-TW": "獎盃商店" + } + }, + "shop/tyres": { + "title": { + "C": "Tire Store", + "af": "Bandewinkel", + "ar": "محل بيع إطارات", + "ast": "Neumáticos", + "bg": "Магазин за автомобилни гуми", + "bs": "Prodavnica guma", + "ca": "Botiga de pneumàtics", + "cs": "Pneuservis", + "da": "Dækforhandler", + "de": "Reifenhandel", + "el": "Βουλκανιζατέρ", + "en-AU": "Tyre Shop", + "en-GB": "Tyre Shop", + "en": "Tire Store", + "eo": "Aerbenda vendejo", + "es": "Tienda de neumáticos", + "et": "Rehvipood", + "fa": "تایر فروشی", + "fi": "Rengasliike", + "fr": "Magasin de pneus", + "gl": "Tenda de pneumáticos", + "he": "חנות צמיגים", + "hr": "Prodavaonica pneumaticima", + "hu": "Autógumibolt", + "id": "Toko Ban", + "is": "Dekkjabúð", + "it": "Gommista", + "ja": "タイヤ店", + "ko": "타이어 가게", + "lt": "Padangų parduotuvė", + "lv": "Riepu veikals", + "mk": "Продавница за автогуми", + "ms": "Kedai Tayar", + "nl": "Bandenwinkel", + "no": "Dekkutsalg", + "pl": "Sklep z oponami / wulkanizacja", + "pt-BR": "Loja de pneus/borracharia", + "pt": "Loja de pneus", + "ro": "Magazin de Roți", + "ru": "Шины", + "sk": "Predajňa pneumatík", + "sl": "Prodaja pnevmatik", + "sr": "Продавница гума", + "sv": "Däckfirma", + "tr": "Araç Lastiği Mağazası", + "uk": "Колеса та шини", + "vi": "Tiệm Lốp xe", + "yue": "軚舖", + "zh-CN": "轮胎店", + "zh-HK": "輪胎店", + "zh-TW": "輪胎店", + "zh": "轮胎店" + } + }, + "shop/vacuum_cleaner": { + "title": { + "C": "Vacuum Cleaner Store", + "ar": "متجر المكنسات الكهربائية", + "ast": "Tienda d'aspiradores", + "ca": "Botiga d'aspiradors", + "cs": "Obchod s vysavači", + "da": "Støvsugerforhandler", + "de": "Staubsaugergeschäft", + "el": "Κατάστημα Ηλεκτρικών Σκουπών", + "en-GB": "Vacuum Cleaner Shop", + "en": "Vacuum Cleaner Store", + "eo": "Polvosuĉila vendejo", + "es": "Tienda de aspiradoras", + "et": "Tolmuimeja kauplus", + "fa": "فروشگاه جاروبرقی", + "fi": "Pölynimuriliike", + "fr": "Magasin d'électroménager de nettoyage", + "gl": "Tenda de aspiradoras", + "he": "חנות שואבי אבק", + "hr": "Trgovina za usisavače", + "hu": "Porszívóbolt", + "id": "Toko Pengisap Debu", + "is": "Verslun með ryksugur", + "it": "Negozio di aspirapolveri", + "ja": "掃除機店", + "ko": "진공청소기 가게", + "lv": "Putekļusūcēju veikals", + "mk": "Продавница за правосмукалки", + "nl": "Stofzuigerwinkel", + "no": "Støvsugerbutikk", + "pl": "Sklep z odkurzaczami", + "pt-BR": "Loja de Aspiradores de Pó", + "pt": "Loja de aspiradores", + "ro": "Magazin de Aspiratoare", + "ru": "Магазин по продаже пылесосов", + "sk": "Obchod s vysavačmi", + "sl": "Trgovina s sesalci", + "sr": "Продавница усисивача", + "sv": "Dammsugarbutik", + "tr": "Elektrikli Süpürge Mağazası", + "uk": "Пилотяги", + "vi": "Tiệm Máy Hút bụi", + "zh-CN": "吸尘器店", + "zh-HK": "吸塵機店", + "zh-TW": "吸塵器店" + } + }, + "shop/variety_store": { + "title": { + "C": "Variety Store", + "af": "Algemene handelaar", + "ar": "محلات كماليات رخيصة (أبو خمسة)", + "ast": "Bazar", + "bg": "Смесен магазин", + "bs": "Prodavnica mješovite robe", + "ca": "Botiga de tot a 100", + "cs": "Laciné zboží", + "da": "Spøg og skæmtbutik", + "de": "Sonderpostenmarkt", + "el": "Κατάστημα 1 ευρώ", + "en-GB": "Variety Store", + "en": "Variety Store", + "eo": "Ĉio-po-unu-spesmilo vendejo", + "es": "Tienda de variedades o bazar", + "et": "Kodukauba pood", + "fa": "فروشگاه متنوع و ارزان", + "fi": "Halpahalli", + "fr": "Magasin à prix unique ou à bas prix", + "gl": "Tenda de variedades ou bazar", + "he": "חנות מגוון מוצרים", + "hr": "Prodavaonica mješovite robe", + "hu": "100 forintos bolt", + "id": "Toserba", + "is": "Allrahandaverslun", + "it": "Negozio a prezzo fisso", + "ja": "雑貨店(低価格)", + "ko": "잡화점", + "mk": "Продавница за разновидна роба", + "nl": "Euroshop", + "pl": "Sklep z różnościami", + "pt-BR": "Loja de Variedades", + "pt": "Loja dos chineses", + "ro": "Magazin de Varietăți", + "ru": "Товары по одной цене", + "sk": "Obchod so zmiešaným tovarom", + "sl": "Trgovina z mešanim blagom", + "sr": "Продавница мешовите робе", + "sv": "Fyndbutik", + "tr": "Herşey 1 TL Mağazası", + "uk": "Універсам", + "vi": "Tiệm Tạp hóa", + "yue": "雜貨舖", + "zh-CN": "杂货店", + "zh-HK": "十蚊店", + "zh-TW": "雜貨店", + "zh": "杂货店" + } + }, + "shop/video": { + "title": { + "C": "Video Store", + "af": "Videowinkel", + "am": "ቪዲዮ", + "ar": "محل بيع وتأجير الأفلام", + "ast": "Tienda de videos", + "bg": "Видеотека", + "bs": "Video klub", + "ca": "Botiga de vídeos", + "cs": "Video obchod", + "da": "Videobutik", + "de": "Videothek", + "el": "Βιντεοκλάμπ", + "en-GB": "Video/DVD Shop", + "en": "Video Store", + "eo": "Filma vendejo/pruntejo", + "es": "Videoclub", + "et": "Videopood", + "fa": "فیلم فروشی", + "fi": "Videovuokraamo", + "fr": "Vidéo-club", + "gl": "Videoclube", + "he": "חנות סרטים", + "hr": "Videoteka", + "hu": "Videófilmbolt vagy -kölcsönző", + "id": "Toko Video", + "is": "Myndbandaverslun", + "it": "Videoteca", + "ja": "ビデオソフト店", + "ko": "비디오 가게", + "lt": "Vaizdo prekių parduotuvė", + "lv": "Video veikals", + "mk": "Видеотека", + "nl": "Videotheek", + "no": "Videoforhandler", + "pl": "Sklep/wypożyczalnia z filmami wideo/dvd", + "pt-BR": "Loja/Locadora de Vídeos", + "pt": "Videoclube", + "ro": "Magazin Video", + "ru": "Видеомагазин", + "sk": "Videopožičovňa", + "sl": "Videoteka", + "sr": "Видео-клуб", + "sv": "Videobutik", + "tr": "Film - Video Mağazası", + "uk": "Відео", + "vi": "Tiệm Phim", + "yue": "影視店", + "zh-CN": "影像店", + "zh-HK": "影視店", + "zh-TW": "錄影帶店", + "zh": "影像店" + } + }, + "shop/video_games": { + "title": { + "C": "Video Game Store", + "ar": "متجر العاب الفيديو", + "ast": "Tienda de videuxuegos", + "ca": "Botiga de videojocs", + "cs": "Obchod s videohrami", + "da": "Videospilbutik", + "de": "Videospielgeschäft", + "el": "Μαγαζί Βιντεοπαιχνιδιών", + "en-GB": "Video Games Shop", + "en": "Video Game Store", + "eo": "Videoluda vendejo", + "es": "Tienda de videojuegos", + "et": "Konsoolimängude pood", + "fa": "فروشگاه بازی ویدئویی", + "fi": "Videopeliliike", + "fr": "Magasin de location et vente de jeux vidéo", + "gl": "Tenda de videoxogos", + "he": "חנות למשחקי מחשב", + "hr": "Prodavaonica video igara", + "hu": "Videojátékbolt", + "id": "Toko Permainan Video", + "is": "Tölvuleikjaverslun", + "it": "Negozio di videogiochi", + "ja": "テレビゲーム販売店", + "ko": "비디오 게임 가게", + "lt": "Video Žaidimų parduotuvė", + "lv": "Videospēļu veikals", + "mk": "Продавница за видеоигри", + "nl": "Computerspelwinkel", + "no": "Dataspillbutikk", + "pl": "Sklep z grami wideo", + "pt-BR": "Loja de Vídeogames", + "pt": "Loja de videojogos", + "ro": "Magazin de Jocuri de Calculator", + "ru": "Магазин видеоигр", + "sk": "Obchod s videohrami", + "sl": "Trgovina z video igrami", + "sr": "Продавница видео-игара", + "sv": "TV-spel", + "tr": "Bilgisayar Oyun Mağazası", + "uk": "Комп’ютерні ігри", + "vi": "Tiệm Trò chơi Điện tử", + "zh-CN": "电子游戏店", + "zh-HK": "電子遊戲店", + "zh-TW": "電子遊戲店" + } + }, + "shop/watches": { + "title": { + "C": "Watches Shop", + "ar": "متجر الساعات اليدوية", + "ast": "Reloxería", + "ca": "Òptica", + "cs": "Hodinářství", + "da": "Urbutik", + "de": "Uhrengeschäft", + "el": "Κατάστημα Ρολογιών", + "en-GB": "Watches Shop", + "en": "Watches Shop", + "eo": "Horloĝa vendejo", + "es": "Relojería", + "et": "Kellapood", + "fa": "ساعت فروشی", + "fi": "Kellokauppa", + "fr": "Magasin de montres", + "gl": "Reloxaría", + "he": "שען", + "hr": "Trgovina Satovima", + "hu": "Órabolt (karóra)", + "is": "Úraverslun", + "it": "Negozio di orologi", + "ja": "腕時計店", + "ko": "손목시계 가게", + "lt": "Laikrodžių parduotuvė", + "lv": "Pulksteņu Veikals", + "mk": "Продавница за часовници", + "nl": "Horlogewinkel", + "no": "Urmaker", + "pl": "Sklep z zegarkami", + "pt-BR": "Relojoaria", + "pt": "Loja de relógios", + "ro": "Magazin de Ceasuri", + "ru": "Магазин часов", + "sk": "Obchod s hodinkami", + "sl": "Trgovina z urami", + "sr": "Продавница сатова", + "sv": "Klockaffär", + "tr": "Saatçi", + "uk": "Годинники", + "vi": "Tiệm Đồng hồ Đeo tay", + "zh-CN": "手表店", + "zh-HK": "手錶店", + "zh-TW": "鐘錶行" + } + }, + "shop/water": { + "title": { + "C": "Drinking Water Shop", + "ar": "متجر مياه شرب", + "ca": "Botiga d'aigua potable", + "cs": "Obchod s pitnou vodou", + "de": "Trinkwasserladen", + "el": "Κατάστημα Πόσης Νερού", + "en": "Drinking Water Shop", + "eo": "Trinkakv-vendejo", + "es": "Tienda de agua potable", + "et": "Joogivee pood", + "fa": "فروشگاه آب", + "fi": "Juomavesikauppa", + "fr": "Magasin d'eau potable", + "gl": "Tenda de auga potábel", + "he": "חנות מי שתייה", + "hu": "Ivóvíz-bolt", + "it": "Negozio di acqua da bere", + "ja": "飲料水店", + "ko": "식수 가게", + "mk": "Продавница за пивка вода", + "nl": "Drinkwaterwinkel", + "pl": "Sklep z wodą pitną", + "pt-BR": "Loja de Água Potável", + "pt": "Loja de água potável", + "sk": "Obchod s pinou vodou", + "sr": "Продавница пијаће воде", + "sv": "Affär för dricksvatten", + "tr": "İçme Suyu Mağazası", + "uk": "Магазин питної води", + "vi": "Tiệm Nước uống", + "zh-CN": "饮水店", + "zh-TW": "飲用水商店" + } + }, + "shop/water_sports": { + "title": { + "C": "Watersport/Swim Shop", + "ar": "متجر رياضة مائية/سباحة", + "ast": "Tienda de natación/deportes acuáticos", + "ca": "Botiga d'esports aquàtics", + "cs": "Plavecké potřeby", + "da": "Svømmesport/Svømmeudstyrsbutik", + "de": "Wassersportgeschäft", + "el": "Κατάστημα Ειδών Θαλάσσιων Σπορ / Κολύμβησης", + "en-GB": "Watersport/Swim Shop", + "en": "Watersport/Swim Shop", + "eo": "Akvosport-aparata vendejo", + "es": "Tienda de deporte acuático / natación", + "et": "Veesporditarvete kauplus", + "fa": "فروشگاه لوازم ورزش‌های آبی / شنا", + "fi": "Vesiurheiluliike", + "fr": "Vente d'équipements et d'articles pour sports nautiques", + "gl": "Tenda de deportes acuáticos / natación", + "he": "חנות שחייה", + "hr": "Trgovina za vodene sportove", + "hu": "Vízisport-bolt", + "id": "Toko Renang/Olahraga Air", + "is": "Verslun með sund/vatnaíþróttavörur", + "it": "Negozio per sport acquatici", + "ja": "ウォータースポーツ用品店", + "ko": "수상 스포츠/수영 가게", + "mk": "Опрема за капење/водени спортови", + "nl": "Watersport-/Zwemwinkel", + "no": "Vannsport/Svømmebutikk", + "pl": "Sklep ze sprzętem do sportów wodnych", + "pt-BR": "Loja de Esportes Aquáticos", + "pt": "Loja de desportos aquáticos", + "ru": "Водный спорт/ Спорттовары", + "si": "ජල ක්‍රීඩා/ පිහිනුම් තටාකය", + "sk": "Ochod s plaveckým vybavením", + "sr": "Продавница пливачке опреме", + "sv": "Vattensport/simning", + "tr": "Su Sporları Mağazası", + "uk": "Водний спорт/Спорттовари", + "vi": "Tiệm Dụng cụ Bơi lội", + "zh-CN": "水上运动/泳具店", + "zh-HK": "水上活動/游泳用品店", + "zh-TW": "水上活動/泳具店" + } + }, + "shop/weapons": { + "title": { + "C": "Weapon Shop", + "ar": "متجر أسلحة", + "ast": "Armería", + "ca": "Armeria", + "cs": "Zbraně a střelivo", + "da": "Våbenbutik", + "de": "Waffengeschäft", + "el": "Κατάστημα Οπλισμού", + "en-GB": "Weapon Shop", + "en": "Weapon Shop", + "eo": "Armila vendejo", + "es": "Armería", + "et": "Relvapood", + "fa": "فروشگاه سلاح", + "fi": "Aseliike", + "fr": "Armurerie", + "gl": "Armaría", + "he": "חנות נשק קר", + "hr": "Trgovina za oružje", + "hu": "Fegyverbolt", + "id": "Toko Senjata", + "is": "Vopnaverslun", + "it": "Armeria", + "ja": "武器屋", + "ko": "무기 가게", + "lt": "Ginklų parduotuvė", + "lv": "Ieroču Veikals", + "mk": "Продавница за оружје", + "nl": "Wapenwinkel", + "no": "Våpenbutikk", + "pl": "Sklep z bronią", + "pt-BR": "Loja de Armas", + "pt": "Loja de armas", + "ro": "Magazin de Arme", + "ru": "Оружейный магазин", + "sk": "Ochod so zbraňami", + "sl": "Trgovina z orožjem", + "sr": "Оружарница", + "sv": "Vapenaffär", + "ta": "ஆயுதவிற்பனைக் கடை", + "tr": "Silah Mağazası", + "uk": "Зброя", + "vi": "Tiệm Súng", + "zh-CN": "武器店", + "zh-HK": "武器店", + "zh-TW": "武器店" + } + }, + "shop/wholesale": { + "title": { + "C": "Wholesale Store", + "ar": "متجر بيع بالجملة", + "cs": "Velkoobchodní sklad", + "de": "Großhandel", + "el": "Κατάστημα Χονδρικής", + "en-GB": "Wholesale Shop / Cash & Carry", + "en": "Wholesale Store", + "eo": "Pogranda vendejo", + "es": "Almacén al por mayor", + "et": "Hulgikauplus", + "fi": "Tukkukauppa", + "fr": "Commerce de gros", + "gl": "Almacén ó por maior", + "he": "חנות סיטונאות", + "hu": "Nagykereskedés", + "is": "Heildverslun", + "it": "Grossista", + "ja": "卸売店", + "ko": "도매상", + "mk": "Големопродажен центар", + "nl": "Groothandel", + "pl": "Hurtownia", + "pt-BR": "Atacadista", + "pt": "Loja grossista", + "ru": "Оптовый магазин", + "sk": "Veľkoobchod", + "sr": "Велепродајна продавница", + "sv": "Grosistaffär", + "ta": "மொத்தவிலைக் கடை", + "tr": "Toptan satış Mağazası", + "uk": "Гуртова торгівля", + "vi": "Tiệm Bán buôn", + "zh-CN": "批发市场", + "zh-TW": "批發商" + } + }, + "shop/wigs": { + "title": { + "C": "Wig Shop", + "ar": "متجر بيع الباروكات", + "cs": "Paruky", + "de": "Perückenladen", + "en": "Wig Shop", + "eo": "Vendejo de perukoj", + "es": "Tienda de pelucas", + "fr": "Magasin de perruques", + "gl": "Tenda de perrucas", + "he": "חנות פיאות", + "hu": "Paróka-szaküzlet", + "it": "Negozio di parrucche", + "ja": "かつら店", + "ko": "가발 가게", + "mk": "Продавница за перики", + "nl": "Pruikenwinkel", + "pl": "Sklep z perukami", + "pt-BR": "Loja de perucas", + "pt": "Loja de perucas", + "sk": "Obchod s parochňami", + "sv": "Affär för peruker", + "tr": "Peruk Mağazası", + "uk": "Магазин перук", + "vi": "Tiệm Tóc giả", + "zh-CN": "假发专卖店", + "zh-TW": "假髮專賣店" + } + }, + "shop/window_blind": { + "title": { + "C": "Window Blind Store", + "ar": "محل لبيع ستائر النوافذ", + "ast": "Venta de persianes", + "ca": "Botiga de persianes", + "cs": "Obchod s roletami", + "da": "Persienneforhandler", + "de": "Fensterladengeschäft", + "el": "Κατάστημα σκιάστρων παραθύρου", + "en-GB": "Window Blind Shop", + "en": "Window Blind Store", + "eo": "Fenestr-kovrila vendejo", + "es": "Tienda de persianas", + "et": "Aknakatete kauplus", + "fa": "فروشگاه پرده و کرکره", + "fi": "Kaihdinmyymälä", + "fr": "Magasin de vente de stores", + "gl": "Tenda de persianas", + "he": "חנות וילונות", + "hu": "Redőnybolt", + "id": "Toko Kerai", + "is": "Verslun með rimlagluggatjöld", + "it": "Negozio di tapparelle e serrande", + "ja": "ブラインドカーテン専門店", + "ko": "창문 블라인드 가게", + "lv": "Logu žalūziju veikals", + "mk": "Продавница за завеси и ролетни", + "nl": "Jaloeziewinkel", + "no": "Persiennebutikk", + "pl": "Sklep z żaluzjami/roletami", + "pt-BR": "Loja de Persianas", + "pt": "Loja de estores", + "ru": "Магазин жалюзей", + "sk": "Obchod so žalúziami", + "sl": "Trgovina z okenskimi senčili", + "sv": "Persienner", + "tr": "Jaluzi Mağazası", + "uk": "Жалюзі, ролети", + "vi": "Tiệm Mành", + "zh-CN": "百叶窗店", + "zh-HK": "百葉簾店", + "zh-TW": "窗廉店" + } + }, + "shop/wine": { + "title": { + "C": "Wine Shop", + "ar": "متجر نبيذ", + "ast": "Bodega", + "ca": "Botiga de vins", + "cs": "Vinotéka", + "da": "Vinforretning", + "de": "Weinhandel", + "el": "Κάβα Κρασιών", + "en-GB": "Wine Shop", + "en": "Wine Shop", + "eo": "Vina vendejo", + "es": "Tienda de vinos", + "et": "Veinipood", + "fa": "فروشگاه شراب", + "fi": "Viinikauppa", + "fr": "Caviste", + "gl": "Tenda de viños", + "he": "חנות יינות", + "hr": "Prodavaonica vina", + "hu": "Borszaküzlet", + "id": "Toko Anggur", + "is": "Vínbúð", + "it": "Enoteca", + "ja": "ワイン店", + "ko": "와인 가게", + "lt": "Vyno parduotuvė", + "lv": "Vīna veikals", + "mk": "Винотека", + "nl": "Wijnhandel", + "no": "Vinbutikk", + "pl": "Sklep z winami", + "pt-BR": "Loja de Vinhos", + "pt": "Loja de vinhos", + "ro": "Magazin de Vinuri", + "ru": "Винный магазин", + "sk": "Vináreň", + "sl": "Vinoteka", + "sr": "Винарница", + "sv": "Vinaffär", + "tr": "Şarap Mağazası", + "uk": "Вино", + "vi": "Tiệm Rượu vang", + "yue": "酒舖", + "zh-CN": "酒品商店", + "zh-HK": "酒品店", + "zh-TW": "販酒店" + } + }, + "tourism/alpine_hut": { + "title": { + "C": "Alpine Hut", + "af": "Berghuisie", + "ar": "كوخ بجبال الألب", + "ast": "Refuxu d'alpinismu", + "bg": "Хижа", + "bs": "Planinski dom", + "ca": "Refugi de muntanya", + "cs": "Horská chata", + "da": "Bjerghytte", + "de": "Bewirtschaftete Schutzhütte", + "el": "Αλπική Καλύβα", + "en-GB": "Alpine Hut", + "en": "Alpine Hut", + "eo": "Montara rifuĝejo", + "es": "Refugio de montaña", + "et": "Alpimaja", + "fa": "کلبه آلپ", + "fi": "Alppimaja", + "fr": "Refuge de montagne", + "gl": "Refuxio de montaña", + "he": "בקתה הררית", + "hr": "Planinarski dom", + "hu": "Menedékház (személyzettel)", + "is": "Fjallakofi", + "it": "Rifugio", + "ja": "山小屋", + "ko": "고산장", + "lt": "Kalnų namelis", + "mk": "Планинарски дом", + "nl": "Berghut", + "no": "Fjellhytte", + "pl": "Chata górska", + "pt-BR": "Abrigo de montanha", + "pt": "Albergue alpino", + "ro": "Cabană", + "ru": "Горный приют", + "sk": "Vysokohorská chata", + "sl": "Planinska koča", + "sr": "Планинарски дом", + "sv": "Fjällstation", + "tr": "Dağ Evi", + "uk": "Гірський притулок", + "vi": "Túp lều trên Núi", + "yue": "高山屋仔", + "zh-CN": "高山小屋", + "zh-HK": "高山小屋", + "zh-TW": "高山小屋", + "zh": "高山小屋" + } + }, + "tourism/apartment": { + "title": { + "C": "Guest Apartment / Condo", + "ar": "شقة سياحية", + "ca": "Habitatge de convidats", + "cs": "Byt/apartmán k pronájmu", + "da": "Gæstelejlighed/Ejerlejlighed", + "de": "Ferienwohnung", + "el": "Ξενώνας / Διαμέρισμα", + "en-GB": "Guest Apartment / Condo", + "en": "Guest Apartment / Condo", + "eo": "Apartamento feria (luprenebla)", + "es": "Apartamento de huéspedes", + "et": "Külaliskorter", + "fa": "آپارتمان مهمان / کاندو", + "fi": "Vierasmajoitus", + "fr": "Location de vacances", + "gl": "Apartamento de hóspedes", + "he": "דירה לאורחים", + "hr": "Turistički apartman", + "hu": "Apartman", + "is": "Gestaíbúð", + "it": "Affittacamere", + "ja": "リゾートマンション", + "ko": "게스트 아파트 / 콘도", + "lt": "Svečių apartamentai / butas", + "mk": "Пансион", + "nl": "Vakantieappartement", + "pl": "Mieszkanie na wynajem", + "pt-BR": "Apartamento de Temporada", + "pt": "Apartamento de alojamento local", + "ro": "Apartament de Închiriat", + "ru": "Гостевые апартаменты/квартира", + "sl": "Apartma / Gostišče", + "sr": "Гостински апартман", + "sv": "Turistlägenhet", + "tr": "Misafir Apartmanı", + "uk": "Мебльована квартира/Комплекс", + "vi": "Khu chung cư Nghỉ dưỡng", + "zh-CN": "出租公寓", + "zh-HK": "民宿公寓 / 短租公寓", + "zh-TW": "假日公寓" + } + }, + "tourism/aquarium": { + "title": { + "C": "Aquarium", + "ar": "حوض سمك", + "ast": "Acuariu", + "cs": "Akvárium", + "da": "Akvarium", + "de": "Aquarium", + "el": "Ενυδρείο", + "en-GB": "Aquarium", + "en": "Aquarium", + "eo": "Akvario", + "es": "Acuario", + "et": "Akvaarium", + "fa": "آکواریوم", + "fi": "Akvaario", + "fr": "Aquarium", + "gl": "Acuario", + "he": "אקווריום", + "hr": "Akvarij", + "hu": "Akvárium", + "is": "Sædýrasafn", + "it": "Acquario", + "ja": "水族館", + "ko": "아쿠아리움", + "lt": "Akvariumas", + "lv": "Akvārijs", + "mk": "Аквариум", + "ms": "Akuarium", + "nl": "Aquarium", + "no": "Akvarium", + "pl": "Akwarium", + "pt-BR": "Aquário", + "pt": "Aquário público", + "ro": "Acvariu", + "ru": "Аквариум", + "sk": "Akvárium", + "sl": "Akvarij", + "sr": "Акваријум", + "sv": "Akvarium", + "ta": "மீன் காட்சியகம்", + "tr": "Akvaryum", + "uk": "Акваріум", + "vi": "Thủy cung", + "zh-CN": "水族馆", + "zh-HK": "水族館", + "zh-TW": "水族館(展覽館)" + } + }, + "tourism/artwork": { + "title": { + "C": "Artwork", + "af": "Kunswerk", + "ar": "عمل فني", + "ast": "Obra d'arte", + "bg": "Произведение на изкуството", + "bs": "Umjetničko djelo", + "ca": "Obra d'art", + "cs": "Umělecké dílo", + "da": "Kunstværk", + "de": "Kunst", + "el": "Έργο τέχνης", + "en-GB": "Artwork", + "en": "Artwork", + "eo": "Artverko", + "es": "Obra de arte", + "et": "Kunstiteos", + "fa": "اثر هنری", + "fi": "Taideteos", + "fr": "Œuvre d'art", + "gl": "Obra artística", + "he": "אומנות", + "hr": "Umjetničko djelo", + "hu": "Műalkotás", + "id": "Karya Seni", + "is": "Listaverk", + "it": "Opera d'arte", + "ja": "パブリックアート", + "ko": "예술품", + "lt": "Meno kūrinys", + "lv": "Mākslas darbs", + "mk": "Уметничко дело", + "nl": "Kunstwerk", + "no": "Kunstverk", + "pl": "Dzieło sztuki", + "pt-BR": "Obra de arte", + "pt": "Obra de arte pública", + "ru": "Произведение искусства", + "sk": "Umelecké dielo", + "sl": "Umetnina", + "sr": "Уметничко дело", + "sv": "Publik konst", + "ta": "ஓவியம்", + "tr": "Sanat Eseri", + "uk": "Витвір мистецтва", + "vi": "Nghệ phẩm", + "yue": "藝術品", + "zh-CN": "艺术品", + "zh-HK": "藝術品", + "zh-TW": "公共藝術", + "zh": "艺术品" + } + }, + "tourism/attraction": { + "title": { + "C": "Tourist Attraction", + "af": "Toerismeaantreklikheid", + "ar": "معلم سياحي", + "ast": "Atracción turística", + "bg": "Туристическа атракция", + "bn": "পর্যটক আকর্ষণ", + "bs": "Turistička atrakcija", + "ca": "Atracció turística", + "cs": "Pamětihodnost", + "da": "Turistattraktion", + "de": "Sehenswürdigkeit", + "el": "Αξιοθέατο", + "en-GB": "Tourist Attraction", + "en": "Tourist Attraction", + "eo": "Turisma vidindaĵo", + "es": "Atracción turística", + "et": "Turismiatraktsioon", + "fa": "جاذبه گردشگری", + "fi": "Turistikohde", + "fr": "Attraction touristique", + "gl": "Atracción turística", + "he": "אתר תיירותי", + "hr": "Turistička atrakcija", + "hu": "Turisztikai látványosság", + "id": "Objek Wisata", + "is": "Ferðamannagildra", + "it": "Attrazione turistica", + "ja": "観光地", + "ko": "관광 명소", + "lt": "Turistų traukos vieta", + "lv": "Tūrisma objekts", + "mk": "Знаменитост", + "nl": "Toeristische attractie", + "no": "Turistattraksjon", + "pl": "Atrakcja turystyczna", + "pt-BR": "Atração turística", + "pt": "Atração turística", + "ro": "Atracție Turistică", + "ru": "Достопримечательность", + "sk": "Turistická atrakcia", + "sl": "Turistična znamenitost", + "sr": "Туристичка атракција", + "sv": "Turistattraktion", + "tr": "Turistik Yer", + "uk": "Туристична пам’ятка", + "vi": "Điểm Thu hút Du lịch", + "yue": "旅行名勝", + "zh-CN": "旅游名胜", + "zh-HK": "觀光名勝", + "zh-TW": "觀光景點", + "zh": "旅游景点" + } + }, + "tourism/camp_pitch": { + "title": { + "C": "Camp Pitch", + "ca": "Parcel·la de càmping", + "cs": "místo pro stan/karavan", + "de": "Zeltplatz/Wohnwagenplatz", + "en": "Camp Pitch", + "eo": "Loko por kampadveturilo/tendo", + "es": "Lugar para acampar", + "fi": "Leirintäalueen kenttä", + "fr": "Parcelle dans un camping", + "gl": "Lugar de campismo", + "he": "מאהל", + "hu": "Sátorhely", + "it": "Piazzola", + "ja": "キャンプ区画(キャンプ場内)", + "ko": "캠핑장 구역", + "mk": "Логориште", + "nl": "Staplaats (camping)", + "pl": "Miejsce na kempingu", + "pt-BR": "Acampamento de arremesso", + "pt": "Alvéolo de parque de campismo", + "sr": "Камп-место", + "sv": "Tältplats/husvagnsplats", + "tr": "Kamp Sahası", + "uk": "Місце під намет", + "zh-CN": "宿营位", + "zh-TW": "營地" + } + }, + "tourism/camp_site": { + "title": { + "C": "Campground", + "ar": "مكان التخييم", + "ast": "Campamentu", + "ca": "Àrea d'acampada", + "cs": "Tábořiště", + "da": "Campingplads", + "de": "Campingplatz", + "el": "Χώρος Κατασκήνωσης", + "en-GB": "Camp Site", + "en": "Campground", + "eo": "Kampadejo", + "es": "Campamento", + "et": "Telkimisala", + "fa": "اردوگاه", + "fi": "Leirintäalue", + "fr": "Camping", + "gl": "Cámping", + "he": "אתר מחנאות", + "hu": "Kemping területe", + "id": "Perkemahan", + "is": "Tjaldsvæði", + "it": "Campeggio", + "ja": "キャンプ場", + "ko": "캠핑장", + "lv": "Kempinga vieta", + "mk": "Камп", + "nl": "Camping", + "pl": "Kemping", + "pt-BR": "Local de acampamento", + "pt": "Parque de campismo", + "ro": "Teren de Camping", + "ru": "Кемпинг/туристический приют", + "sk": "Kemp", + "sl": "Kamp", + "sr": "Простор за камповање", + "sv": "Campingplats", + "tr": "Kamp Yeri", + "uk": "Табір", + "vi": "Khu Cắm trại", + "yue": "營地", + "zh-CN": "宿营场地", + "zh-HK": "營地", + "zh-TW": "露營地" + } + }, + "tourism/caravan_site": { + "title": { + "C": "RV Park", + "af": "RV Park", + "ar": "موقف عربات كبيرة", + "ast": "Aparcaderu d'autocaravanes", + "bg": "Паркинг за каравани", + "bs": "Kamp park", + "ca": "Càmping per a caravanes", + "cs": "Místo pro karavany", + "da": "Autocamperplads", + "de": "Wohnwagen-Campingplatz", + "el": "Πάρκο τροχόσπιτων", + "en-AU": "Caravan Site", + "en-GB": "Caravan Park", + "en": "RV Park", + "eo": "Kampad-veturila parkumejo", + "es": "Parque de autocaravanas", + "et": "Karavanipark", + "fa": "پارکینگ ماشین کاروان", + "fi": "Asuntoautopysäköinti", + "fr": "Aire pour caravanes", + "gl": "Área de autocaravanas", + "he": "מגרש קרוונים", + "hr": "Parkiralište za kamp kućice", + "hu": "Lakókocsi-hely", + "is": "Hjólhýsagarður", + "it": "Sosta per camper", + "ja": "オートキャンプ場", + "ko": "RV 공원", + "mk": "Трајлерски камп", + "nl": "Caravan-/kampeerwagenterrein", + "no": "Bobilpark", + "pl": "Kemping dla kamperów", + "pt-BR": "Estacionamento de trailers", + "pt": "Parque de caravanas", + "ru": "Стоянка трейлеров", + "sk": "Parkovisko pre karavany", + "sl": "Parkirišče za avtodome", + "sr": "Камп-парк", + "sv": "Ställplats", + "ta": "ஆர்வி பூங்கா", + "tr": "Karavan Parkı", + "uk": "Караван-парк", + "vi": "Bãi Đậu Nhà lưu động", + "yue": "露營車營地", + "zh-CN": "房车营地", + "zh-HK": "露營車營地", + "zh-TW": "露營車停車場", + "zh": "房车营地" + } + }, + "tourism/chalet": { + "title": { + "C": "Holiday Cottage", + "ar": "كوخ لقضاء العطلة", + "cs": "Prázdninová vesnice", + "da": "Feriehus", + "de": "Ferienhaus", + "el": "Εξοχική Κατοικία", + "en-GB": "Holiday Cottage", + "en": "Holiday Cottage", + "eo": "Dometo feria", + "es": "Cabaña vacacional / Bungaló", + "fi": "Loma-asunto", + "fr": "Gîte", + "gl": "Casa rural", + "he": "בקתה לחגים", + "hr": "Bungalov", + "hu": "Nyaralóház", + "id": "Vila Liburan", + "is": "Frístundahús", + "it": "Chalet", + "ja": "貸別荘(戸建て)", + "ko": "별장", + "lt": "Atostogų kotedžas", + "mk": "Викендичка", + "nl": "Vakantiehuisje", + "pl": "Domek/domki na wynajem", + "pt-BR": "Chalé", + "pt": "Casa de campo", + "ru": "Коттедж под аренду", + "sr": "Викендица", + "sv": "Stuga", + "ta": "விடுமுறை குடில்", + "tr": "Tatil Kulübesi", + "uk": "Шале", + "vi": "Nhà nghỉ Riêng biệt", + "zh-CN": "度假屋", + "zh-TW": "假日小屋" + } + }, + "tourism/gallery": { + "title": { + "C": "Art Gallery", + "ar": "رواق الفنون", + "ast": "Galería d'arte", + "ca": "Galeria d'art", + "cs": "Galerie umění", + "da": "Kunstgalleri", + "de": "Kunstgalerie", + "el": "Γκαλερί Τέχνης", + "en-GB": "Art Gallery", + "en": "Art Gallery", + "eo": "Artgalerio", + "es": "Galería de arte", + "et": "Kunstigalerii", + "fa": "گالری هنری", + "fi": "Taidegalleria", + "fr": "Galerie d'art", + "gl": "Galería de arte", + "he": "גלריית אומנות", + "hr": "Umjetnička galerija", + "hu": "Művészeti galéria", + "is": "Listagallerí", + "it": "Galleria d'arte", + "ja": "アートギャラリー", + "kn": "ಕಲಾಮಂದಿರ", + "ko": "미술관", + "lt": "Meno galerija", + "lv": "Mākslas galerija", + "mk": "Уметничка галерија", + "nl": "Kunstgallerij", + "no": "Kunstgalleri", + "pl": "Galeria sztuki", + "pt-BR": "Galeria de Arte", + "pt": "Galeria de arte", + "ro": "Galerie de Artă", + "ru": "Художественная галерея", + "sk": "Umelecká galéria", + "sl": "Umetnostna galerija", + "sr": "Галерија слика", + "sv": "Konstgalleri", + "ta": "கலைக்கூடம்", + "tr": "Sanat Galerisi", + "uk": "Художня галерея", + "vi": "Phòng tranh", + "zh-CN": "美术馆", + "zh-HK": "畫廊", + "zh-TW": "藝廊" + } + }, + "tourism/guest_house": { + "title": { + "C": "Guest House", + "af": "Gastehuis", + "am": "እንግዳ ማረፊያ", + "ar": "دار الضيافة", + "ast": "Pensión", + "bg": "Къща за гости", + "bn": "অতিথিশালা", + "bs": "Gostinjska kuća", + "ca": "Habitacions de lloguer", + "cs": "Penzion", + "da": "Gæstehus", + "de": "Pension", + "el": "Ξενώνας", + "en-GB": "Guest House", + "en": "Guest House", + "eo": "Pensiono", + "es": "Casa de huéspedes / B&B", + "et": "Külalistemaja", + "fa": "مهمان خانه", + "fi": "Majatalo", + "fr": "Chambre d'hôtes", + "gl": "Hostal", + "he": "בית הארחה", + "hr": "Gostinjska kuća", + "hu": "Vendégház", + "id": "Rumah Tamu", + "is": "Gestahús", + "it": "Bed & Breakfast", + "ja": "民宿", + "ko": "민박", + "lt": "Svečių namai", + "lv": "Viesu nams", + "mk": "Приватен пансион", + "nl": "Pension", + "no": "Gjestehus", + "pl": "Pensjonat", + "pt-BR": "Guesthouse", + "pt": "Casa de hóspedes", + "ro": "Casă de Oaspeți", + "ru": "Гостевой дом", + "sk": "Penzión", + "sl": "Penzion", + "sr": "Гостинска кућа", + "sv": "Gästhus", + "ta": "விருந்தினர் இல்லம்", + "tr": "Konuk Evi", + "uk": "Гостьовий будинок", + "vi": "Nhà khách", + "yue": "賓館", + "zh-CN": "客栈", + "zh-HK": "賓館", + "zh-TW": "招待所", + "zh": "宾馆" + } + }, + "tourism/hostel": { + "title": { + "C": "Hostel", + "af": "Hostel", + "am": "ሆስቴል", + "ar": "نزل / شقة مفروشة", + "ast": "Albergue", + "bg": "Хостел", + "bn": "ছাত্রাবাস", + "bs": "Hostel", + "ca": "Alberg", + "cs": "Hostel", + "da": "Vandrerhjem", + "de": "Hostel", + "el": "Ξενώνας", + "en-GB": "Hostel", + "en": "Hostel", + "eo": "Gastejo", + "es": "Albergue", + "et": "Hostel", + "fa": "مسافرخانه", + "fi": "Hostelli", + "fr": "Auberge de jeunesse", + "gl": "Albergue", + "he": "אכסנייה", + "hr": "Hostel", + "hu": "Turistaszálló", + "id": "Kost", + "is": "Farfuglaheimili", + "it": "Ostello", + "ja": "簡易宿泊所", + "ko": "호스텔", + "lt": "Viešbutis", + "lv": "Hostelis", + "mk": "Хостел", + "nl": "Jeugdherberg", + "no": "Hostell", + "pl": "Schronisko lub hostel", + "pt-BR": "Hostel", + "pt": "Hostel", + "ro": "Hostel", + "ru": "Хостел", + "sk": "Hostel", + "sl": "Hostel", + "sr": "Хостел", + "sv": "Vandrarhem", + "ta": "விடுதி", + "tr": "Pansiyon", + "uk": "Хостел", + "vi": "Nhà trọ", + "yue": "旅舍", + "zh-CN": "旅舍", + "zh-HK": "旅舍", + "zh-TW": "旅舍", + "zh": "招待所" + } + }, + "tourism/hotel": { + "title": { + "C": "Hotel", + "af": "Hotel", + "am": "ሆቴል", + "ar": "فندق", + "ast": "Hotel", + "bg": "Хотел", + "bn": "হোটেল", + "bs": "Hotel", + "ca": "Hotel", + "cs": "Hotel", + "da": "Hotel", + "de": "Hotel", + "dv": "ހޮޓާ", + "el": "Ξενοδοχείο", + "en-GB": "Hotel", + "en": "Hotel", + "eo": "Hotelo", + "es": "Hotel", + "et": "Hotell", + "fa": "هتل", + "fi": "Hotelli", + "fr": "Hôtel", + "gl": "Hotel", + "he": "מלון", + "hr": "Hotel", + "hu": "Szálloda", + "id": "Hotel", + "is": "Hótel", + "it": "Albergo", + "ja": "ホテル", + "kn": "ಭೋಜನಾಲಯ", + "ko": "호텔", + "lt": "Viešbutis", + "lv": "Viesnīca", + "mk": "Хотел", + "ms": "Hotel", + "nl": "Hotel", + "no": "Hotell", + "pl": "Hotel", + "pt-BR": "Hotel", + "pt": "Hotel", + "ro": "Hotel", + "ru": "Гостиница", + "sk": "Hotel", + "sl": "Hotel", + "so": "Huteel", + "sq": "Hotel", + "sr": "Хотел", + "sv": "Hotell", + "ta": "உணவகம்", + "te": "హోటెల్", + "tr": "Otel", + "uk": "Готель", + "vi": "Khách sạn", + "yue": "酒店", + "zh-CN": "宾馆", + "zh-HK": "酒店", + "zh-TW": "旅館", + "zh": "旅馆" + } + }, + "tourism/information": { + "title": { + "C": "Information", + "af": "Inligting", + "ar": "معلومات سياحية", + "ast": "Información", + "bg": "Информация", + "bn": "তথ্য", + "bs": "Informacije", + "ca": "Informació", + "cs": "Informace", + "da": "Information", + "de": "Information", + "el": "Πληροφορίες", + "en-GB": "Information", + "en": "Information", + "eo": "Informejo", + "es": "Información turística", + "et": "Info", + "fa": "اطلاعات", + "fi": "Infopiste", + "fr": "Informations", + "gl": "Información", + "he": "מידע", + "hr": "Turističke informacije", + "hu": "Információ", + "id": "Informasi", + "is": "Upplýsingar", + "it": "Informazioni", + "ja": "観光案内(全般)", + "kn": "ಮಾಹಿತಿ", + "ko": "안내", + "lt": "Informacija", + "lv": "Informācija", + "mk": "Информации", + "nl": "Informatie", + "no": "Informasjon", + "pl": "Informacja", + "pt-BR": "Informações turísticas", + "pt": "Informação turística", + "ro": "Informații", + "ru": "Инфопункт", + "sk": "Informácie", + "sl": "Informacije", + "sq": "Informacion", + "sr": "Информације", + "sv": "Information", + "ta": "தகவல்", + "te": "సమాచారం", + "tr": "Bilgi", + "uk": "Інформація", + "vi": "Thông tin", + "yue": "資訊處", + "zh-CN": "问询处", + "zh-HK": "旅遊資訊", + "zh-TW": "旅遊資訊", + "zh": "资讯" + } + }, + "tourism/motel": { + "title": { + "C": "Motel", + "af": "Motel", + "am": "ሞቴል", + "ar": "فندق رخيص", + "ast": "Motel", + "bg": "Мотел", + "bn": "মোটেল", + "bs": "Motel", + "ca": "Motel", + "cs": "Motel", + "da": "Motel", + "de": "Motel", + "el": "Μοτέλ", + "en-GB": "Motel", + "en": "Motel", + "eo": "Aŭt-hotelo", + "es": "Motel", + "et": "Motell", + "fa": "متل", + "fi": "Motelli", + "fr": "Motel", + "gl": "Motel", + "he": "מלון דרכים", + "hr": "Motel", + "hu": "Motel", + "id": "Motel", + "is": "Mótel", + "it": "Motel", + "ja": "モーテル", + "ko": "모텔", + "lt": "Motelis", + "lv": "Motelis", + "mk": "Мотел", + "nl": "Motel", + "no": "Motell", + "pl": "Motel", + "pt-BR": "Hotel de estrada", + "pt": "Motel", + "ro": "Motel", + "ru": "Мотель", + "sk": "Motel", + "sl": "Motel", + "sr": "Мотел", + "sv": "Motel", + "tr": "Motel", + "uk": "Мотель", + "vi": "Khách sạn Dọc đường", + "yue": "汽車酒店", + "zh-CN": "汽车旅馆", + "zh-HK": "汽車酒店", + "zh-TW": "汽車旅館", + "zh": "汽车旅馆" + } + }, + "tourism/museum": { + "title": { + "C": "Museum", + "af": "Musuem", + "am": "ሙዚየም", + "ar": "متحف", + "ast": "Muséu", + "bg": "Музей", + "bn": "প্রদর্শনশালা", + "bs": "Muzej", + "ca": "Museu", + "cs": "Muzeum", + "da": "Museum", + "de": "Museum", + "el": "Μουσείο", + "en-GB": "Museum", + "en": "Museum", + "eo": "Muzeo", + "es": "Museo", + "et": "Muuseum", + "fa": "موزه", + "fi": "Museo", + "fr": "Musée", + "gl": "Museo", + "he": "מוזיאון", + "hr": "Muzej", + "hu": "Múzeum", + "id": "Museum", + "is": "Safn", + "it": "Museo", + "ja": "博物館・美術館", + "kn": "ಒಡವೆಮನೆ", + "ko": "박물관", + "lt": "Muziejus", + "lv": "Muzejs", + "mk": "Музеј", + "nl": "Museum", + "no": "Museum", + "pl": "Muzeum", + "pt-BR": "Museu", + "pt": "Museu", + "ro": "Muzeu", + "ru": "Музей", + "sk": "Múzeum", + "sl": "Muzej", + "sr": "Музеј", + "sv": "Museum", + "ta": "அருங்காட்சியகம்", + "te": "మ్యూజియం", + "tr": "Müze", + "uk": "Музей", + "vi": "Bảo tàng", + "yue": "博物館", + "zh-CN": "博物馆", + "zh-HK": "博物館", + "zh-TW": "博物館", + "zh": "博物馆" + } + }, + "tourism/picnic_site": { + "title": { + "C": "Picnic Site", + "af": "Piekniek Plek", + "ar": "موقع نزهة", + "ast": "Área recreativa", + "bg": "Място за пикник", + "bn": "পিকনিক-এর জায়গা", + "bs": "Izletište", + "ca": "Àrea de pícnic", + "cs": "Místo pro piknik", + "da": "Madpakkested", + "de": "Picknickplatz", + "el": "Χώρος Εκδρομής", + "en-GB": "Picnic Site", + "en": "Picnic Site", + "eo": "Piknika ejo", + "es": "Zona de picnic", + "et": "Piknikukoht", + "fa": "مکان پیک نیک", + "fi": "Piknikpuisto", + "fr": "Aire de pique-nique", + "gl": "Merendeiro ou zona de pícnic", + "he": "פיקניק", + "hr": "Izletište", + "hu": "Piknikezőhely", + "id": "Tempat Piknik", + "is": "Áningarstaður", + "it": "Area picnic", + "ja": "ピクニック場", + "ko": "유원지", + "lt": "Pikniko stovyklavietė", + "lv": "Piknika vieta", + "mk": "Излетничко место", + "ms": "Tapak Perkelahan", + "nl": "Picknickplek", + "no": "Pikniksted", + "pl": "Miejsce na piknik", + "pt-BR": "Local de piquenique", + "pt": "Parque de merendas", + "ro": "Picnic", + "ru": "Место для пикника", + "sk": "Miesto pre piknik", + "sl": "Prostor za piknike", + "sr": "Излетиште", + "sv": "Picknickplats", + "tr": "Piknik Alanı", + "uk": "Місце для пікніка", + "vi": "Nơi Ăn Ngoài trời", + "yue": "郊遊地點", + "zh-CN": "野餐地", + "zh-HK": "郊遊地點", + "zh-TW": "野餐場地", + "zh": "郊游地点" + } + }, + "tourism/theme_park": { + "title": { + "C": "Theme Park", + "af": "Temapark", + "ar": "حديقة ترفيه", + "ast": "Parque temáticu", + "bg": "Увеселителен парк", + "bn": "থিম পার্ক", + "bs": "Tematski park", + "ca": "Parc temàtic", + "cs": "Zábavní park", + "da": "Forlystelsespark", + "de": "Themenpark", + "el": "Πάρκο Ψυχαγωγίας", + "en-GB": "Theme Park", + "en": "Theme Park", + "eo": "Amuzparko", + "es": "Parque de atracciones", + "et": "Lõbustuspark", + "fa": "پارک تفریحی, شهربازی", + "fi": "Huvipuisto", + "fr": "Parc d'attraction", + "gl": "Parque de atraccións", + "he": "לונה פארק", + "hr": "Zabavni park", + "hu": "Vidámpark", + "id": "Taman Rekreasi", + "is": "Skemmtigarður", + "it": "Parco a tema", + "ja": "テーマパーク", + "ko": "놀이공원", + "lt": "Atrakcijonų parkas", + "lv": "Tematiskais parks", + "mk": "Забавен парк", + "nl": "Themapark", + "no": "Temapark", + "pl": "Park rozrywki", + "pt-BR": "Parque temático", + "pt": "Parque de diversões", + "ro": "Parc de Distracții", + "ru": "Парк развлечений", + "sk": "Zábavný park", + "sl": "Zabaviščni park", + "sr": "Тематски парк", + "sv": "Nöjespark", + "tr": "Eğlence Parkı", + "uk": "Тематичний парк", + "vi": "Công viên Chủ đề", + "yue": "主題公園", + "zh-CN": "主题公园", + "zh-HK": "主題公園", + "zh-TW": "主題公園", + "zh": "主题公园" + } + }, + "tourism/trail_riding_station": { + "title": { + "C": "Trail Riding Station", + "cs": "Stanice jízdy na koni", + "de": "Wanderreitstation", + "el": "Σταθμός Ιππασίας", + "en-GB": "Trail Riding Station", + "en": "Trail Riding Station", + "eo": "Pensiono por ĉevalistoj", + "es": "Estación de equitación", + "fa": "ایستگاه مسیر گذر / پیاده‌روی", + "fr": "Station équestre", + "gl": "Posto de repouso ecuestre", + "he": "תחנת רכיבה", + "hu": "Lovastúra-állomás", + "it": "Stazione di sosta per cavalli", + "ja": "乗馬トレール乗り場", + "mk": "Конак за рекреативни јавачи", + "nl": "Ruiterlogies", + "pl": "Konny ośrodek wypoczynkowy", + "pt-BR": "Estação de Hipismo de Trilha", + "pt": "Posto de repouso equestre", + "ru": "Временное жильё для лошадей и наездников", + "sv": "Turridningsstation", + "tr": "İz Sürme İstasyonu", + "uk": "Місце відпочинку для коней та вершників", + "vi": "Chuồng Ngựa Tạm thời", + "zh-CN": "小径骑行站", + "zh-TW": "騎馬車站" + } + }, + "tourism/viewpoint": { + "title": { + "C": "Viewpoint", + "af": "Uitkykpunt", + "ar": "منظر سياحي", + "ast": "Mirador", + "bg": "Точка с хубава гледка", + "bs": "Vidikovac", + "ca": "Mirador", + "cs": "Výhled", + "da": "Udsigtspunkt", + "de": "Aussichtspunkt", + "el": "Σημείο θέασης", + "en-GB": "Viewpoint", + "en": "Viewpoint", + "eo": "Belvidejo", + "es": "Vista panorámica / Mirador", + "et": "Vaatekoht", + "fa": "نقطه دید", + "fi": "Näköalapaikka", + "fr": "Point de vue", + "gl": "Miradoiro", + "he": "תצפית", + "hr": "Vidikovac", + "hu": "Kilátóhely", + "id": "Titik Pandang", + "is": "Útsýnisstaður", + "it": "Punto panoramico", + "ja": "展望台", + "ko": "경승지", + "lt": "Apžvalgos taškas", + "lv": "Skatu punkts", + "mk": "Видиковец", + "nl": "Uitzichtpunt", + "no": "Utsiktspunkt", + "pl": "Punkt widokowy", + "pt-BR": "Mirante", + "pt": "Miradouro", + "ro": "Punct de Vedere", + "ru": "Обзорная точка", + "sk": "Vyhliadka", + "sl": "Razgledna točka", + "sr": "Видиковац", + "sv": "Utsiktspunkt", + "tr": "Görüş Noktası", + "uk": "Оглядовий майданчик", + "vi": "Điểm Ngắm cảnh", + "yue": "觀景臺", + "zh-CN": "观景点", + "zh-HK": "觀景臺", + "zh-TW": "觀景點", + "zh": "景点" + } + }, + "tourism/wilderness_hut": { + "title": { + "C": "Wilderness Hut", + "ca": "Refugi lliure", + "cs": "Chata v divočině", + "da": "Vildmarkshytte", + "de": "unbewirtschaftete Schutzhütte", + "el": "Ερημική Καλύβα", + "en-GB": "Wilderness Hut", + "en": "Wilderness Hut", + "eo": "Sovaĝeja kabano", + "es": "Refugio de paraje natural", + "fi": "Autiotupa", + "fr": "Refuge de bivouac", + "gl": "Abeiro da natureza", + "he": "בקתת טבע", + "hr": "Planinarsko sklonište", + "hu": "Menedékház (személyzet nélkül)", + "is": "Óbyggðakofi", + "it": "Bivacco", + "ja": "避難小屋", + "ko": "황야 막사", + "mk": "Колиба во дивина", + "nl": "Onbemande hut in wildernis", + "no": "Villmarkshytta", + "pl": "Odosobniona chata-schronienie dla turystów", + "pt-BR": "Abrigo isolado", + "pt": "Abrigo remoto", + "ru": "Охотничий домик", + "sk": "Chata divočiny", + "sv": "Stuga (för vandrare o.d.)", + "tr": "Dağ kulübesi", + "uk": "Лісова хатинка", + "vi": "Lều trú", + "zh-CN": "野外住宿小屋", + "zh-TW": "野外小屋" + } + }, + "tourism/zoo": { + "title": { + "C": "Zoo", + "af": "Dieretuin", + "am": "የእንስሳት ግቢ", + "ar": "حديقة حيوانات", + "ast": "Zoo", + "bg": "Зоологическа градина", + "bn": "চিড়িয়াখানা", + "bs": "Zoološki vrt", + "ca": "Zoo", + "cs": "ZOO", + "da": "Zoologisk have", + "de": "Zoo", + "el": "Ζωολογικός Κήπος", + "en-GB": "Zoo", + "en": "Zoo", + "eo": "Bestoĝardeno", + "es": "Zoológico", + "et": "Loomaaed", + "fa": "باغ وحش", + "fi": "Eläintarha", + "fr": "Parc zoologique", + "gl": "Zoolóxico", + "he": "גן חיות", + "hi": "चिड़िया घर", + "hr": "Zološki vrt", + "hu": "Állatkert", + "id": "Kebun Binatang", + "is": "Dýragarður", + "it": "Zoo", + "ja": "動物園", + "ko": "동물원", + "lt": "Zoologijos sodas", + "lv": "Zooloģiskais dārzs", + "mk": "Зоолошка градина", + "nl": "Dierentuin", + "no": "Zoologisk hage", + "pl": "Zoo", + "pt-BR": "Zoológico", + "pt": "Jardim zoológico", + "ro": "Grădină Zoologică", + "ru": "Зоопарк", + "sk": "Zoo", + "sl": "Živalski vrt", + "sr": "Зоолошки врт", + "sv": "Zoo", + "ta": "உயிரியல் பூங்கா", + "te": "జూ", + "tr": "Hayvanat Bahçesi", + "uk": "Зоопарк", + "vi": "Vườn thú", + "yue": "動物園", + "zh-CN": "动物园", + "zh-HK": "動物園", + "zh-TW": "動物園", + "zh": "动物园" + } + } +} diff --git a/data/screenshots/maps-main.png b/data/screenshots/maps-main.png new file mode 100644 index 00000000..0ab75f15 Binary files /dev/null and b/data/screenshots/maps-main.png differ diff --git a/data/screenshots/maps-pinpoint.png b/data/screenshots/maps-pinpoint.png new file mode 100644 index 00000000..2102ef1b Binary files /dev/null and b/data/screenshots/maps-pinpoint.png differ diff --git a/data/screenshots/maps-route.png b/data/screenshots/maps-route.png new file mode 100644 index 00000000..ad57d6ae Binary files /dev/null and b/data/screenshots/maps-route.png differ diff --git a/data/ui/account-row.ui b/data/ui/account-row.ui new file mode 100644 index 00000000..60afd7c6 --- /dev/null +++ b/data/ui/account-row.ui @@ -0,0 +1,76 @@ + + + + + diff --git a/data/ui/check-in-dialog.ui b/data/ui/check-in-dialog.ui new file mode 100644 index 00000000..026f3679 --- /dev/null +++ b/data/ui/check-in-dialog.ui @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + public + Public + + + followers + Followers + + + private + Private + + + + diff --git a/data/ui/context-menu.ui b/data/ui/context-menu.ui new file mode 100644 index 00000000..7fcb6734 --- /dev/null +++ b/data/ui/context-menu.ui @@ -0,0 +1,56 @@ + + + + + diff --git a/data/ui/export-view-dialog.ui b/data/ui/export-view-dialog.ui new file mode 100644 index 00000000..040e390e --- /dev/null +++ b/data/ui/export-view-dialog.ui @@ -0,0 +1,139 @@ + + + + + diff --git a/data/ui/favorites-popover.ui b/data/ui/favorites-popover.ui new file mode 100644 index 00000000..7ee1bbb6 --- /dev/null +++ b/data/ui/favorites-popover.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/headerbar-left.ui b/data/ui/headerbar-left.ui new file mode 100644 index 00000000..aa293360 --- /dev/null +++ b/data/ui/headerbar-left.ui @@ -0,0 +1,87 @@ + + + + + + diff --git a/data/ui/headerbar-right.ui b/data/ui/headerbar-right.ui new file mode 100644 index 00000000..a806b64c --- /dev/null +++ b/data/ui/headerbar-right.ui @@ -0,0 +1,66 @@ + + + + + + diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui new file mode 100644 index 00000000..e427db71 --- /dev/null +++ b/data/ui/help-overlay.ui @@ -0,0 +1,120 @@ + + + + 1 + + + 1 + + 10 + + + 1 + General + + + 1 + Show Shortcuts + <Primary>question + + + + + 1 + Search + <Primary>F + + + + + 1 + Toggle route planner + <Primary>D + + + + + 1 + Print route + <Primary>P + + + + + 1 + Quit + <Primary>Q + + + + + 1 + Open main menu + F10 + + + + + + + 1 + Map View + + + 1 + Zoom in + plus equal + + + + + 1 + Zoom out + minus + + + + + 1 + Toggle scale + <Primary>S + + + + + 1 + Go to current location + <Primary>L + + + + + + 0 + Switch to street view + <Primary>1 + + + + + 0 + Switch to aerial view + <Primary>2 + + + + + 1 + Open shape layer + <Primary>O + + + + + + + + diff --git a/data/ui/instruction-row.ui b/data/ui/instruction-row.ui new file mode 100644 index 00000000..1e3cf1d1 --- /dev/null +++ b/data/ui/instruction-row.ui @@ -0,0 +1,60 @@ + + + + + diff --git a/data/ui/layers-popover.ui b/data/ui/layers-popover.ui new file mode 100644 index 00000000..423c4a86 --- /dev/null +++ b/data/ui/layers-popover.ui @@ -0,0 +1,113 @@ + + + + + diff --git a/data/ui/location-service-dialog.ui b/data/ui/location-service-dialog.ui new file mode 100644 index 00000000..0c3ae660 --- /dev/null +++ b/data/ui/location-service-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/data/ui/main-window.ui b/data/ui/main-window.ui new file mode 100644 index 00000000..a21db6aa --- /dev/null +++ b/data/ui/main-window.ui @@ -0,0 +1,170 @@ + + + + +
    + + app.night-mode + Night Mode + + + app.osm-account-setup + Set up OpenStreetMap Account + + + win.export-as-image + Export as Image + +
    +
    + + _Keyboard Shortcuts + win.show-help-overlay + + + win.about + About Maps + +
    +
    + +
    + diff --git a/data/ui/open-with-row.ui b/data/ui/open-with-row.ui new file mode 100644 index 00000000..d236a2a8 --- /dev/null +++ b/data/ui/open-with-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-account-dialog.ui b/data/ui/osm-account-dialog.ui new file mode 100644 index 00000000..8cddfeca --- /dev/null +++ b/data/ui/osm-account-dialog.ui @@ -0,0 +1,319 @@ + + + + + diff --git a/data/ui/osm-edit-address.ui b/data/ui/osm-edit-address.ui new file mode 100644 index 00000000..1a36f87a --- /dev/null +++ b/data/ui/osm-edit-address.ui @@ -0,0 +1,59 @@ + + + + + diff --git a/data/ui/osm-edit-dialog.ui b/data/ui/osm-edit-dialog.ui new file mode 100644 index 00000000..ba059ee6 --- /dev/null +++ b/data/ui/osm-edit-dialog.ui @@ -0,0 +1,353 @@ + + + + + + False + + + True + GTK_ORIENTATION_VERTICAL + + + + + False + GTK_POS_BOTTOM + + + True + 5 + + + True + True + 20 + 40 + + + + + + diff --git a/data/ui/osm-type-list-row.ui b/data/ui/osm-type-list-row.ui new file mode 100644 index 00000000..05fbb6ac --- /dev/null +++ b/data/ui/osm-type-list-row.ui @@ -0,0 +1,29 @@ + + + + + diff --git a/data/ui/osm-type-popover.ui b/data/ui/osm-type-popover.ui new file mode 100644 index 00000000..4ae9e7fb --- /dev/null +++ b/data/ui/osm-type-popover.ui @@ -0,0 +1,16 @@ + + + + + diff --git a/data/ui/osm-type-search-entry.ui b/data/ui/osm-type-search-entry.ui new file mode 100644 index 00000000..db292a76 --- /dev/null +++ b/data/ui/osm-type-search-entry.ui @@ -0,0 +1,10 @@ + + + + + diff --git a/data/ui/place-bar.ui b/data/ui/place-bar.ui new file mode 100644 index 00000000..28825b11 --- /dev/null +++ b/data/ui/place-bar.ui @@ -0,0 +1,67 @@ + + + + + + diff --git a/data/ui/place-buttons.ui b/data/ui/place-buttons.ui new file mode 100644 index 00000000..bace12aa --- /dev/null +++ b/data/ui/place-buttons.ui @@ -0,0 +1,104 @@ + + + + + diff --git a/data/ui/place-dialog.ui b/data/ui/place-dialog.ui new file mode 100644 index 00000000..9c49c767 --- /dev/null +++ b/data/ui/place-dialog.ui @@ -0,0 +1,36 @@ + + + + + + diff --git a/data/ui/place-entry.ui b/data/ui/place-entry.ui new file mode 100644 index 00000000..417e42d2 --- /dev/null +++ b/data/ui/place-entry.ui @@ -0,0 +1,23 @@ + + + + + 2 + + + 2 + + + 0 + + + + + 4 + + + 2 + + + + diff --git a/data/ui/place-list-row.ui b/data/ui/place-list-row.ui new file mode 100644 index 00000000..9164f52c --- /dev/null +++ b/data/ui/place-list-row.ui @@ -0,0 +1,97 @@ + + + + + + + diff --git a/data/ui/place-popover.ui b/data/ui/place-popover.ui new file mode 100644 index 00000000..e04114bb --- /dev/null +++ b/data/ui/place-popover.ui @@ -0,0 +1,79 @@ + + + + + diff --git a/data/ui/place-view.ui b/data/ui/place-view.ui new file mode 100644 index 00000000..95fee9dc --- /dev/null +++ b/data/ui/place-view.ui @@ -0,0 +1,136 @@ + + + + + + True + + + True + False + vertical + + + False + False + + + + + False + False + + + + + + True + False + vertical + 18 + 12 + + + True + False + vertical + + + True + False + horizontal + 12 + + + False + False + True + 32 + + + + + True + False + start + True + True + 30 + 0 + + + + + + False + True + False + Share location + + + True + False + send-to-symbolic + 16 + + + + + + + + + False + False + start + True + True + 30 + 0 + 6 + + + + + + + + True + False + start + 0 + True + True + + + + + True + False + vertical + + + + + + + True + False + + + + + + + True + False + + + + diff --git a/data/ui/route-entry.ui b/data/ui/route-entry.ui new file mode 100644 index 00000000..b186e453 --- /dev/null +++ b/data/ui/route-entry.ui @@ -0,0 +1,50 @@ + + + + + diff --git a/data/ui/send-to-dialog.ui b/data/ui/send-to-dialog.ui new file mode 100644 index 00000000..161f0eed --- /dev/null +++ b/data/ui/send-to-dialog.ui @@ -0,0 +1,166 @@ + + + + + + diff --git a/data/ui/shape-layer-file-chooser.ui b/data/ui/shape-layer-file-chooser.ui new file mode 100644 index 00000000..383a2df5 --- /dev/null +++ b/data/ui/shape-layer-file-chooser.ui @@ -0,0 +1,30 @@ + + + + diff --git a/data/ui/shape-layer-row.ui b/data/ui/shape-layer-row.ui new file mode 100644 index 00000000..0a2ad8d1 --- /dev/null +++ b/data/ui/shape-layer-row.ui @@ -0,0 +1,62 @@ + + + + diff --git a/data/ui/sidebar.ui b/data/ui/sidebar.ui new file mode 100644 index 00000000..ab7b3890 --- /dev/null +++ b/data/ui/sidebar.ui @@ -0,0 +1,444 @@ + + + + + + + False + + + True + + + True + 5 + 5 + 5 + 5 + Routing itineraries for public transit is provided by third-party +services. +GNOME can not guarantee correctness of the itineraries and schedules shown. +Note that some providers might not include all available modes of transportation, +e.g. a national provider might not include airlines, and a local provider could +miss regional trains. +Names and brands shown are to be considered as registered trademarks when applicable. + + + + + + + True + False + + + + True + 6 + 6 + 4 + 4 + GTK_ALIGN_START + + + True + GTK_ALIGN_CENTER + + + True + False + False + go-previous-symbolic + + + + + + + 0 + 0 + + + + + True + 6 + 6 + 4 + 4 + False + GTK_ALIGN_START + + + 1 + 0 + + + + + True + 6 + 6 + 4 + 4 + True + GTK_ALIGN_START + + + + 2 + 0 + + + + diff --git a/data/ui/social-place-more-results-row.ui b/data/ui/social-place-more-results-row.ui new file mode 100644 index 00000000..2dcca7fa --- /dev/null +++ b/data/ui/social-place-more-results-row.ui @@ -0,0 +1,22 @@ + + + + + diff --git a/data/ui/social-place-row.ui b/data/ui/social-place-row.ui new file mode 100644 index 00000000..623c92af --- /dev/null +++ b/data/ui/social-place-row.ui @@ -0,0 +1,44 @@ + + + + + diff --git a/data/ui/transit-arrival-row.ui b/data/ui/transit-arrival-row.ui new file mode 100644 index 00000000..cc993be7 --- /dev/null +++ b/data/ui/transit-arrival-row.ui @@ -0,0 +1,77 @@ + + + + + diff --git a/data/ui/transit-itinerary-row.ui b/data/ui/transit-itinerary-row.ui new file mode 100644 index 00000000..d4be5468 --- /dev/null +++ b/data/ui/transit-itinerary-row.ui @@ -0,0 +1,66 @@ + + + + + diff --git a/data/ui/transit-leg-row.ui b/data/ui/transit-leg-row.ui new file mode 100644 index 00000000..c88d783d --- /dev/null +++ b/data/ui/transit-leg-row.ui @@ -0,0 +1,255 @@ + + + + + diff --git a/data/ui/transit-more-row.ui b/data/ui/transit-more-row.ui new file mode 100644 index 00000000..7de5b98a --- /dev/null +++ b/data/ui/transit-more-row.ui @@ -0,0 +1,40 @@ + + + + diff --git a/data/ui/transit-options-panel.ui b/data/ui/transit-options-panel.ui new file mode 100644 index 00000000..a11acfa0 --- /dev/null +++ b/data/ui/transit-options-panel.ui @@ -0,0 +1,159 @@ + + + + False + + + True + + + + + False + + + True + 6 + GTK_ORIENTATION_VERTICAL + + + True + GTK_ALIGN_START + Show + 6 + + + + + + True + True + Buses + + + + + True + True + Trams + + + + + True + True + Trains + + + + + True + True + Subway + + + + + True + True + Ferries + + + + + True + True + Airplanes + + + + + + + diff --git a/data/ui/transit-route-label.ui b/data/ui/transit-route-label.ui new file mode 100644 index 00000000..423f7826 --- /dev/null +++ b/data/ui/transit-route-label.ui @@ -0,0 +1,20 @@ + + + + + diff --git a/data/ui/transit-stop-row.ui b/data/ui/transit-stop-row.ui new file mode 100644 index 00000000..5af08b8c --- /dev/null +++ b/data/ui/transit-stop-row.ui @@ -0,0 +1,55 @@ + + + + diff --git a/data/ui/zoom-in-dialog.ui b/data/ui/zoom-in-dialog.ui new file mode 100644 index 00000000..359dd46c --- /dev/null +++ b/data/ui/zoom-in-dialog.ui @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/gnome-maps.doap b/gnome-maps.doap new file mode 100644 index 00000000..a0fdefd4 --- /dev/null +++ b/gnome-maps.doap @@ -0,0 +1,28 @@ + + + gnome-maps + A simple GNOME 3 maps application + Map application based on OpenStreetMap map data + + JavaScript + + + + + + + + + Marcus Lundblad + + mlundblad + + + diff --git a/lib/maps-contact-store.c b/lib/maps-contact-store.c new file mode 100644 index 00000000..227fc5f7 --- /dev/null +++ b/lib/maps-contact-store.c @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + + +#include +#include + +#include "maps-contact-store.h" +#include "maps-contact.h" +#include "maps-enum-types.h" + +struct _MapsContactStorePrivate +{ + GList *list; + MapsContactStoreState state; + FolksIndividualAggregator *aggregator; +}; + +enum { + PROP_0, + + PROP_STATE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContactStore, maps_contact_store, G_TYPE_OBJECT) + +static void +maps_contact_store_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContactStore *store = MAPS_CONTACT_STORE (object); + + switch (property_id) + { + case PROP_STATE: + g_value_set_enum (value, + store->priv->state); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_store_dispose (GObject *object) +{ + MapsContactStore *store = (MapsContactStore *) object; + + g_clear_pointer (&store->priv->list, g_list_free); + g_clear_object (&store->priv->aggregator); + + G_OBJECT_CLASS (maps_contact_store_parent_class)->dispose (object); +} + +static void +maps_contact_store_class_init (MapsContactStoreClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_store_dispose; + maps_class->get_property = maps_contact_store_get_property; + + /** + * MapsContactStore:state: + * + * The current loading state of the contact store. + */ + pspec = g_param_spec_enum ("state", + "State", + "State", + MAPS_TYPE_CONTACT_STORE_STATE, + MAPS_CONTACT_STORE_STATE_INITIAL, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_STATE, pspec); +} + +static void +maps_contact_store_init (MapsContactStore *store) +{ + store->priv = maps_contact_store_get_instance_private (store); + store->priv->list = NULL; + store->priv->state = MAPS_CONTACT_STORE_STATE_INITIAL; +} + +static MapsContact * +get_contact (FolksIndividual *individual) +{ + MapsContact *contact; + GLoadableIcon *avatar; + GeeCollection *addresses; + GeeIterator *iter; + + g_object_get (G_OBJECT (individual), "postal-addresses", + &addresses, NULL); + if (!addresses) + return NULL; + + iter = gee_iterable_iterator (GEE_ITERABLE (addresses)); + if (!gee_iterator_has_next (iter)) + { + g_object_unref (iter); + return NULL; + } + + contact = maps_contact_new (); + + g_object_set (G_OBJECT (contact), "name", + folks_individual_get_display_name (individual), NULL); + g_object_set (G_OBJECT (contact), "id", + folks_individual_get_id (individual), NULL); + + g_object_get (G_OBJECT (individual), "avatar", + &avatar, NULL); + g_object_set (G_OBJECT (contact), "icon", + avatar, NULL); + + while (gee_iterator_has_next (iter)) + { + GeocodePlace *place; + FolksPostalAddress *addr; + FolksAbstractFieldDetails *details; + GeeMultiMap *map; + GeeSet *keys; + GeeIterator *keys_iter; + char *name; + char *type = "Unknown"; + + gee_iterator_next (iter); + details = gee_iterator_get (iter); + addr = (FolksPostalAddress *) folks_abstract_field_details_get_value (details); + + /* Get the type of the address, such as "Home", "Work", "Other" */ + map = folks_abstract_field_details_get_parameters (details); + keys = gee_multi_map_get_keys (map); + keys_iter = gee_iterable_iterator (GEE_ITERABLE (keys)); + if (gee_iterator_has_next (keys_iter)) + { + GeeCollection *values; + GeeIterator *values_iter; + + gee_iterator_next (keys_iter); + values = gee_multi_map_get (map, + gee_iterator_get (keys_iter)); + if (gee_collection_get_size (values) != 0) + { + values_iter = gee_iterable_iterator (GEE_ITERABLE (values)); + gee_iterator_next (values_iter); + type = gee_iterator_get (values_iter); + } + } + if (gee_collection_get_size (addresses) > 1) + { + name = g_strdup_printf ("%s (%s)", + folks_individual_get_display_name (individual), + type); + } + else + { + name = g_strdup (folks_individual_get_display_name (individual)); + } + place = geocode_place_new (name, GEOCODE_PLACE_TYPE_STREET); + g_free (name); + + geocode_place_set_country (place, + folks_postal_address_get_country (addr)); + geocode_place_set_state (place, + folks_postal_address_get_region (addr)); + geocode_place_set_postal_code (place, + folks_postal_address_get_postal_code (addr)); + geocode_place_set_town (place, + folks_postal_address_get_locality (addr)); + geocode_place_set_street_address (place, + folks_postal_address_get_street (addr)); + + maps_contact_add_place (contact, place); + } + g_object_unref (iter); + + return contact; +} + +MapsContactStore * +maps_contact_store_new () +{ + return g_object_new (MAPS_TYPE_CONTACT_STORE, NULL); +} + +static void +maps_contact_store_lookup_cb (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + MapsContactStoreLookupCallback callback) +{ + FolksIndividual *individual; + + individual = folks_individual_aggregator_look_up_individual_finish (aggregator, + res, + NULL); + if (individual != NULL) + { + MapsContact *contact = get_contact (individual); + callback (contact); + } + else + { + callback (NULL); + } +} + +/** + * maps_contact_store_lookup: + * @store: A #MapsContactStore object + * @callback: (scope async): A #MapsContactStoreLookupCallback function + */ +void +maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback) +{ + folks_individual_aggregator_look_up_individual (store->priv->aggregator, + id, + (GAsyncReadyCallback) maps_contact_store_lookup_cb, + callback); +} + +static void +aggregator_quiescent_notify (FolksIndividualAggregator *aggregator, + GParamSpec *pspec, + MapsContactStore *store) +{ + GeeMap *map; + GeeMapIterator *iter; + + map = folks_individual_aggregator_get_individuals (aggregator); + iter = gee_map_map_iterator (map); + + while (gee_map_iterator_has_next (iter)) + { + MapsContact *contact; + + gee_map_iterator_next (iter); + contact = get_contact (gee_map_iterator_get_value (iter)); + if (contact) + store->priv->list = g_list_prepend (store->priv->list, contact); + } + g_clear_object (&iter); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADED; + g_object_notify (G_OBJECT (store), "state"); +} + +static void +aggregator_prepare (FolksIndividualAggregator *aggregator, + GAsyncResult *res, + gpointer user_data) +{ + folks_individual_aggregator_prepare_finish (aggregator, res, NULL); +} + +/** + * maps_contact_store_load: + * @store: A #MapsContactStore object + * + * Load contacts from available backends. + * + */ +void +maps_contact_store_load (MapsContactStore *store) +{ + g_return_if_fail (MAPS_IS_CONTACT_STORE (store)); + + store->priv->aggregator = folks_individual_aggregator_dup (); + + g_signal_connect (G_OBJECT (store->priv->aggregator), + "notify::is-quiescent", + G_CALLBACK (aggregator_quiescent_notify), + store); + + store->priv->state = MAPS_CONTACT_STORE_STATE_LOADING; + g_object_notify (G_OBJECT (store), "state"); + + folks_individual_aggregator_prepare (store->priv->aggregator, + (GAsyncReadyCallback) aggregator_prepare, + NULL); +} + +/** + * maps_contact_store_get_contacts: + * @store: A #MapsContactStore object + * + * Returns: (element-type MapsContact) (transfer none): a list of #MapsContact, + */ +GList * +maps_contact_store_get_contacts (MapsContactStore *store) +{ + g_return_val_if_fail (MAPS_IS_CONTACT_STORE (store), NULL); + + return store->priv->list; +} diff --git a/lib/maps-contact-store.h b/lib/maps-contact-store.h new file mode 100644 index 00000000..3bbf2cbc --- /dev/null +++ b/lib/maps-contact-store.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_STORE_H__ +#define __MAPS_CONTACT_STORE_H__ + +#include +#include "maps-contact.h" + +#define MAPS_TYPE_CONTACT_STORE maps_contact_store_get_type () +G_DECLARE_FINAL_TYPE(MapsContactStore, maps_contact_store, MAPS, CONTACT_STORE, + GObject) + +typedef struct _MapsContactStorePrivate MapsContactStorePrivate; + +/** + * MapsContactStoreState: + * @MAPS_CONTACT_STORE_STATE_INITIAL: Initial state + * @MAPS_CONTACT_STORE_STATE_LOADING: Loading + * @MAPS_CONTACT_STORE_STATE_LOADED: Loaded + */ +typedef enum { + MAPS_CONTACT_STORE_STATE_INITIAL, + MAPS_CONTACT_STORE_STATE_LOADING, + MAPS_CONTACT_STORE_STATE_LOADED, +} MapsContactStoreState; + +/** + * MapsContactStoreLookupCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactStoreLookupCallback) (MapsContact *contact); + +struct _MapsContactStore +{ + GObject parent_instance; + MapsContactStorePrivate *priv; +}; + +struct _MapsContactStoreClass +{ + GObjectClass parent_class; +}; + +MapsContactStore * maps_contact_store_new (void); +void maps_contact_store_load (MapsContactStore *store); +void maps_contact_store_lookup (MapsContactStore *store, + const char *id, + MapsContactStoreLookupCallback callback); +GList * maps_contact_store_get_contacts (MapsContactStore *store); + +#endif diff --git a/lib/maps-contact.c b/lib/maps-contact.c new file mode 100644 index 00000000..f733e8e1 --- /dev/null +++ b/lib/maps-contact.c @@ -0,0 +1,339 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include + +#include "maps-contact.h" + +struct _MapsContactPrivate +{ + char *name; + char *id; + + GLoadableIcon *icon; + GList *places; + + GMutex geocode_mutex; + guint geocode_counter; + guint geocodes_to_perform; +}; + +typedef struct +{ + GeocodePlace *place; + MapsContact *contact; + MapsContactGeocodeCallback callback; + + GHashTable *params; +} GeocodeData; + +enum { + PROP_0, + + PROP_NAME, + PROP_ICON, + PROP_ID, + PROP_BBOX +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsContact, maps_contact, G_TYPE_OBJECT) + +static void +maps_contact_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_free (contact->priv->name); + contact->priv->name = g_value_dup_string (value); + break; + + case PROP_ICON: + if (contact->priv->icon) + g_object_unref (contact->priv->icon); + contact->priv->icon = g_value_dup_object (value); + break; + + case PROP_ID: + g_free (contact->priv->id); + contact->priv->id = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsContact *contact = MAPS_CONTACT (object); + + switch (property_id) + { + case PROP_NAME: + g_value_set_string (value, + contact->priv->name); + break; + + case PROP_ICON: + g_value_set_object (value, + contact->priv->icon); + break; + + case PROP_ID: + g_value_set_string (value, + contact->priv->id); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_contact_dispose (GObject *object) +{ + MapsContact *contact = (MapsContact *) object; + + g_clear_pointer (&contact->priv->name, g_free); + g_clear_pointer (&contact->priv->id, g_free); + g_clear_object (&contact->priv->icon); + g_list_free_full (contact->priv->places, g_object_unref); + + G_OBJECT_CLASS (maps_contact_parent_class)->dispose (object); +} + +static void +maps_contact_class_init (MapsContactClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_contact_dispose; + maps_class->get_property = maps_contact_get_property; + maps_class->set_property = maps_contact_set_property; + + /** + * MapsContact:name: + * + * The name of the contact. + */ + pspec = g_param_spec_string ("name", + "Name", + "Name", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_NAME, pspec); + + /** + * MapsContact:id: + * + * The unique id of the contact. + */ + pspec = g_param_spec_string ("id", + "ID", + "ID", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsContact:icon: + * + * The icon of the contact. + */ + pspec = g_param_spec_object ("icon", + "Icon", + "An icon representing the contact", + G_TYPE_ICON, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS); + g_object_class_install_property (maps_class, PROP_ICON, pspec); +} + +static void +maps_contact_init (MapsContact *contact) +{ + contact->priv = maps_contact_get_instance_private (contact); + + contact->priv->name = NULL; + contact->priv->id = NULL; + contact->priv->icon = NULL; + contact->priv->places = NULL; + + g_mutex_init (&contact->priv->geocode_mutex); +} + +/** + * maps_contact_add_address: + * @contact: A #MapsContact object + * @place: A #GeocodePlace object + */ +void +maps_contact_add_place (MapsContact *contact, + GeocodePlace *place) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (GEOCODE_IS_PLACE (place)); + + contact->priv->places = g_list_prepend (contact->priv->places, place); +} + +/** + * maps_contact_get_places: + * @contact: A #MapsContact object + * + * Returns: (element-type GeocodePlace) (transfer container): a list of #GeocodePlace + */ +GList * +maps_contact_get_places (MapsContact *contact) +{ + g_return_val_if_fail (MAPS_IS_CONTACT (contact), NULL); + + return contact->priv->places; +} + +static void +on_geocode_search_async (GeocodeForward *forward, + GAsyncResult *res, + GeocodeData *data) +{ + MapsContact *contact; + GList *places; + gboolean call_callback = FALSE; + + contact = data->contact; + places = geocode_forward_search_finish (forward, res, NULL); + + g_mutex_lock (&contact->priv->geocode_mutex); + + if (places) + { + GeocodePlace *place = g_list_nth_data (places, 0); + GeocodeLocation *location = geocode_place_get_location (place); + const char *street_address; + const char *street; + + /* Keep the naming, but add location and osm info */ + geocode_place_set_location (data->place, location); + g_object_set (G_OBJECT (data->place), "osm-type", + geocode_place_get_osm_type (place), NULL); + g_object_set (G_OBJECT (data->place), "osm-id", + geocode_place_get_osm_id (place), NULL); + + /* Make sure we do not lie about how good our resolution is */ + street_address = geocode_place_get_street_address (place); + street = geocode_place_get_street (place); + if (street_address) + geocode_place_set_street_address (data->place, street); + else if (street) + geocode_place_set_street (data->place, street); + + g_list_free_full(places, g_object_unref); + } + + contact->priv->geocode_counter++; + if (contact->priv->geocode_counter == contact->priv->geocodes_to_perform) + call_callback = TRUE; + + g_mutex_unlock (&contact->priv->geocode_mutex); + + g_hash_table_destroy (data->params); + + if (call_callback) + data->callback (contact); +} + +static void add_attribute (GHashTable *ht, + const char *key, + const char *s) +{ + GValue *value; + value = g_new0 (GValue, 1); + g_value_init (value, G_TYPE_STRING); + g_value_set_static_string (value, s); + g_hash_table_insert (ht, g_strdup (key), value); +} + +/** + * maps_contact_geocode: + * @contact: A #MapsContact object + * @callback: (scope async): A #MapsContactGeocodeCallback function + */ +void +maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback) +{ + g_return_if_fail (MAPS_IS_CONTACT (contact)); + g_return_if_fail (callback != NULL); + + GList *l; + + contact->priv->geocode_counter = 0; + contact->priv->geocodes_to_perform = g_list_length (contact->priv->places); + + for (l = contact->priv->places; l != NULL; l = l->next) { + GeocodeData *data; + GeocodeForward *forward; + + data = g_slice_new (GeocodeData); + data->contact = contact; + data->place = l->data; + data->callback = callback; + data->params = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_free); + + add_attribute (data->params, "street", + geocode_place_get_street_address (data->place)); + add_attribute (data->params, "locality", + geocode_place_get_town (data->place)); + add_attribute (data->params, "region", + geocode_place_get_state (data->place)); + add_attribute (data->params, "country", + geocode_place_get_country (data->place)); + + forward = geocode_forward_new_for_params (data->params); + geocode_forward_search_async (forward, + NULL, + (GAsyncReadyCallback) on_geocode_search_async, + data); + } +} + +MapsContact * +maps_contact_new () +{ + return g_object_new (MAPS_TYPE_CONTACT, NULL); +} diff --git a/lib/maps-contact.h b/lib/maps-contact.h new file mode 100644 index 00000000..d036faf2 --- /dev/null +++ b/lib/maps-contact.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_CONTACT_H__ +#define __MAPS_CONTACT_H__ + +#include +#include + +#define MAPS_TYPE_CONTACT maps_contact_get_type () +G_DECLARE_FINAL_TYPE(MapsContact, maps_contact, MAPS, CONTACT, GObject) + +typedef struct _MapsContactPrivate MapsContactPrivate; + +/** + * MapsContactGeocodeCallback: + * @contact: A #MapsContact object + */ +typedef void (*MapsContactGeocodeCallback) (MapsContact *contact); + +struct _MapsContact +{ + GObject parent_instance; + MapsContactPrivate *priv; +}; + +struct _MapsContactClass +{ + GObjectClass parent_class; +}; + +MapsContact *maps_contact_new (void); +void maps_contact_add_place (MapsContact *contact, + GeocodePlace *place); +GList * maps_contact_get_places (MapsContact *contact); +void maps_contact_geocode (MapsContact *contact, + MapsContactGeocodeCallback callback); +#endif diff --git a/lib/maps-enum-types.c.template b/lib/maps-enum-types.c.template new file mode 100644 index 00000000..188506a0 --- /dev/null +++ b/lib/maps-enum-types.c.template @@ -0,0 +1,31 @@ +/*** BEGIN file-header ***/ +#include "maps-enum-types.h" + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static GType etype = 0; + if (etype == 0) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + etype = g_@type@_register_static ("@EnumName@", values); + } + return etype; +} + +/*** END value-tail ***/ diff --git a/lib/maps-enum-types.h.template b/lib/maps-enum-types.h.template new file mode 100644 index 00000000..14171b23 --- /dev/null +++ b/lib/maps-enum-types.h.template @@ -0,0 +1,36 @@ +/*** BEGIN file-header ***/ +#ifndef __MAPS_ENUM_TYPES_H__ +#define __MAPS_ENUM_TYPES_H__ + +#include "maps.h" + +G_BEGIN_DECLS + +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType @enum_name@_get_type (void) G_GNUC_CONST; + +#define MAPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) + +/** + * SECTION:maps-enum-types + * @short_description: Maps enumerated types + * @include: maps.h + * + * The enumerated types defined and used by libgnome-maps. + **/ + +/*** END value-header ***/ + +/*** BEGIN file-tail ***/ +G_END_DECLS + +#endif /* __MAPS_ENUM_TYPES_H__ */ + +/*** END file-tail ***/ diff --git a/lib/maps-file-tile-source.c b/lib/maps-file-tile-source.c new file mode 100644 index 00000000..61e5f060 --- /dev/null +++ b/lib/maps-file-tile-source.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#include +#include +#include +#include +#include +#include + +#include "mapsintl.h" +#include "maps-file-tile-source.h" + +#define MAPS_FILE_TILE_SOURCE_ERROR maps_file_tile_source_error_quark () + +GQuark +maps_file_tile_source_error_quark (void) +{ + return g_quark_from_static_string ("maps-file-tile-source-error"); +} + +enum { + PROP_0, + + PROP_PATH, + PROP_MAX_ZOOM, + PROP_MIN_ZOOM, + PROP_WORLD + +}; + +struct _MapsFileTileSourcePrivate +{ + gchar *path; + gchar *extension; + gint max_zoom; + gint min_zoom; + ChamplainBoundingBox *world; + + long min_x; + long min_y; + long max_x; + long max_y; +}; + +typedef struct +{ + ChamplainMapSource *map_source; + ChamplainTile *tile; +} CallbackData; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsFileTileSource, maps_file_tile_source, CHAMPLAIN_TYPE_TILE_SOURCE) + +static void fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile); + + +static void +maps_file_tile_source_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + tile_source->priv->path = g_strdup ((char *) g_value_get_string (value)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + switch (prop_id) + { + case PROP_PATH: + g_value_set_string (value, tile_source->priv->path); + break; + + case PROP_MIN_ZOOM: + g_value_set_uint (value, tile_source->priv->min_zoom); + break; + + case PROP_MAX_ZOOM: + g_value_set_uint (value, tile_source->priv->max_zoom); + break; + + case PROP_WORLD: + g_value_set_boxed (value, tile_source->priv->world); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +maps_file_tile_source_dispose (GObject *object) +{ + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->dispose (object); +} + +static void +maps_file_tile_source_finalize (GObject *object) +{ + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (object); + + if (tile_source->priv->path) + g_free (tile_source->priv->path); + + if (tile_source->priv->extension) + g_free (tile_source->priv->extension); + + G_OBJECT_CLASS (maps_file_tile_source_parent_class)->finalize (object); +} + +static guint +get_max_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->max_zoom; +} + +static guint +get_min_zoom_level (ChamplainMapSource *source) +{ + MapsFileTileSource *tile_source = (MapsFileTileSource *) source; + + return tile_source->priv->min_zoom; +} + +static void +maps_file_tile_source_class_init (MapsFileTileSourceClass *klass) +{ + ChamplainMapSourceClass *map_source_class = CHAMPLAIN_MAP_SOURCE_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->finalize = maps_file_tile_source_finalize; + object_class->dispose = maps_file_tile_source_dispose; + object_class->get_property = maps_file_tile_source_get_property; + object_class->set_property = maps_file_tile_source_set_property; + map_source_class->get_max_zoom_level = get_max_zoom_level; + map_source_class->get_min_zoom_level = get_min_zoom_level; + map_source_class->fill_tile = fill_tile; + + /** + * MapsFileTileSource:path: + * + * The path to the tile source. + * + */ + pspec = g_param_spec_string ("path", + "Path", + "The path to the tile source", + "", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property (object_class, PROP_PATH, pspec); + + /** + * MapsFileTileSource:min-zoom: + * + * The minimum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("min-zoom", + "Minimum zoom", + "The minimum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MIN_ZOOM, pspec); + + /** + * MapsFileTileSource:max-zoom: + * + * The maximum zoom level of the tile source. + * + */ + pspec = g_param_spec_uint ("max-zoom", + "Maximum zoom", + "The maximum zoom level of the tile source", + 0, + 20, + 2, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_MAX_ZOOM, pspec); + + /** + * MapsFileTileSource:world: + * + * Set a bounding box to limit the world to. No tiles will be loaded + * outside of this bounding box. It will not be possible to scroll outside + * of this bounding box. + * + */ + pspec = g_param_spec_boxed ("world", + "The world", + "The bounding box to limit the #ChamplainView to", + CHAMPLAIN_TYPE_BOUNDING_BOX, + G_PARAM_READABLE); + g_object_class_install_property (object_class, PROP_WORLD, pspec); +} + +static void +maps_file_tile_source_init (MapsFileTileSource *tile_source) +{ + tile_source->priv = maps_file_tile_source_get_instance_private (tile_source); + tile_source->priv->path = NULL; + tile_source->priv->extension = NULL; + tile_source->priv->max_zoom = -1; + tile_source->priv->min_zoom = 21; + tile_source->priv->world = NULL; + tile_source->priv->min_x = G_MAXLONG; + tile_source->priv->min_y = G_MAXLONG; + tile_source->priv->max_x = 0; + tile_source->priv->max_y = 0; +} + +static gboolean +get_zoom_levels (MapsFileTileSource *tile_source, + GError **error) +{ + GFile *file; + GFileEnumerator *enumerator; + gboolean ret = TRUE; + long orig_min = tile_source->priv->min_zoom; + long orig_max = tile_source->priv->max_zoom; + + file = g_file_new_for_path (tile_source->priv->path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + const char *name; + char *endptr; + long val; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + val = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (val > tile_source->priv->max_zoom) + tile_source->priv->max_zoom = val; + + if (val < tile_source->priv->min_zoom) + tile_source->priv->min_zoom = val; + } + + if (tile_source->priv->min_zoom == orig_min || + tile_source->priv->max_zoom == orig_max) { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + + return ret; +} + +static gboolean +get_y_bounds (MapsFileTileSource *tile_source, + const char *path, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + gboolean ret = TRUE; + gboolean found = FALSE; + + file = g_file_new_for_path (path); + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + GFileInfo *info; + char **names; + char *endptr; + long y; + + if (!g_file_enumerator_iterate (enumerator, &info, + NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) + continue; + + names = g_strsplit (g_file_info_get_name (info), ".", 2); + if (!tile_source->priv->extension) + tile_source->priv->extension = g_strdup (names[1]); + + y = strtol (names[0], &endptr, 0); + if (endptr == names[0] || *endptr != '\0') { + g_strfreev (names); + continue; + } + + if (!found) + found = TRUE; + + g_strfreev (names); + + if (y > tile_source->priv->max_y) + tile_source->priv->max_y = y; + + if (y < tile_source->priv->min_y) + tile_source->priv->min_y = y; + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +static gboolean +get_bounds (MapsFileTileSource *tile_source, + GError **error) +{ + GFileEnumerator *enumerator; + GFile *file; + char *path; + gboolean ret = TRUE; + char min_zoom[3]; + gboolean found = FALSE; + + sprintf (min_zoom, "%u", tile_source->priv->min_zoom); + path = g_build_filename (tile_source->priv->path, min_zoom, NULL); + file = g_file_new_for_path (path); + + enumerator = g_file_enumerate_children (file, "standard::*", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + error); + if (!enumerator) + return FALSE; + + while (TRUE) + { + char *y_path; + GFileInfo *info; + const char *name; + char *endptr; + long x; + + if (!g_file_enumerator_iterate (enumerator, &info, NULL, NULL, error)) { + ret = FALSE; + goto out; + } + + if (!info) + break; + + if (g_file_info_get_file_type (info) != G_FILE_TYPE_DIRECTORY) + continue; + + name = g_file_info_get_name (info); + x = strtol (name, &endptr, 0); + if (endptr == name || *endptr != '\0') + continue; + + if (!found) + found = TRUE; + + if (x > tile_source->priv->max_x) + tile_source->priv->max_x = x; + + if (x < tile_source->priv->min_x) + tile_source->priv->min_x = x; + + y_path = g_build_filename (path, name, NULL); + if (!get_y_bounds (tile_source, y_path, error)) { + g_free (y_path); + ret = FALSE; + goto out; + } + g_free (y_path); + } + + if (!found) + { + ret = FALSE; + if (error) + { + *error = g_error_new_literal (MAPS_FILE_TILE_SOURCE_ERROR, 0, + _("Failed to find tile structure in directory")); + } + } + + out: + g_free (path); + g_object_unref (file); + g_object_unref (enumerator); + return ret; +} + +gboolean +maps_file_tile_source_prepare (MapsFileTileSource *tile_source, + GError **error) +{ + g_return_val_if_fail (MAPS_IS_FILE_TILE_SOURCE (tile_source), FALSE); + g_return_val_if_fail (tile_source->priv->path != NULL, FALSE); + + ChamplainMapSource *source = (ChamplainMapSource *) tile_source; + gboolean ret = TRUE; + guint tile_size = champlain_map_source_get_tile_size (source); + + if (!get_zoom_levels (tile_source, error)) { + ret = FALSE; + goto out; + } + + if (!get_bounds (tile_source, error)) { + ret = FALSE; + goto out; + } + + tile_source->priv->world = champlain_bounding_box_new (); + tile_source->priv->world->left = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_x * + tile_size); + tile_source->priv->world->right = champlain_map_source_get_longitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_x + 1) * + tile_size); + tile_source->priv->world->top = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + tile_source->priv->min_y * + tile_size); + tile_source->priv->world->bottom = champlain_map_source_get_latitude (source, + tile_source->priv->min_zoom, + (tile_source->priv->max_y + 1) * + tile_size); + out: + return ret; +} + +static void +tile_rendered_cb (ChamplainTile *tile, + gpointer data, + guint size, + gboolean error, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source; + + g_signal_handlers_disconnect_by_func (tile, tile_rendered_cb, user_data); + g_slice_free (CallbackData, user_data); + + next_source = champlain_map_source_get_next_source (map_source); + + if (!error) + { + ChamplainTileSource *tile_source = CHAMPLAIN_TILE_SOURCE (map_source); + ChamplainTileCache *tile_cache = champlain_tile_source_get_cache (tile_source); + + if (tile_cache && data) + champlain_tile_cache_store_tile (tile_cache, tile, data, size); + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + } + else if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + g_object_unref (map_source); + g_object_unref (tile); +} + +static void +tile_loaded_cb (GFile *file, + GAsyncResult *res, + CallbackData *user_data) +{ + ChamplainMapSource *map_source = user_data->map_source; + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + ChamplainTile *tile = user_data->tile; + CallbackData *data; + ChamplainRenderer *renderer; + guint8 *content; + gsize length; + + g_slice_free (CallbackData, user_data); + + if (!g_file_load_contents_finish (file, res, (char **) &content, &length, NULL, NULL)) + { + goto load_next; + } + + renderer = champlain_map_source_get_renderer (map_source); + g_return_if_fail (CHAMPLAIN_IS_RENDERER (renderer)); + + data = g_slice_new (CallbackData); + data->map_source = map_source; + + g_signal_connect (tile, "render-complete", G_CALLBACK (tile_rendered_cb), data); + + champlain_renderer_set_data (renderer, content, length); + champlain_renderer_render (renderer, tile); + + return; + +load_next: + if (next_source) + champlain_map_source_fill_tile (next_source, tile); + + goto cleanup; + + champlain_tile_set_fade_in (tile, TRUE); + champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE); + champlain_tile_display_content (tile); + +cleanup: + g_object_unref (tile); + g_object_unref (map_source); +} + +static void +fill_tile (ChamplainMapSource *map_source, + ChamplainTile *tile) +{ + g_return_if_fail (MAPS_IS_FILE_TILE_SOURCE (map_source)); + g_return_if_fail (CHAMPLAIN_IS_TILE (tile)); + + MapsFileTileSource *tile_source = MAPS_FILE_TILE_SOURCE (map_source); + CallbackData *callback_data; + GFile *file; + gchar *path = NULL; + + if (champlain_tile_get_state (tile) == CHAMPLAIN_STATE_DONE) + return; + + path = g_strdup_printf("%s/%d/%d/%d.%s", + tile_source->priv->path, + champlain_tile_get_zoom_level (tile), + champlain_tile_get_x (tile), + champlain_tile_get_y (tile), + tile_source->priv->extension); + file = g_file_new_for_path (path); + + if (g_file_query_exists(file, NULL)) + { + callback_data = g_slice_new (CallbackData); + callback_data->tile = tile; + callback_data->map_source = map_source; + + g_object_ref (map_source); + g_object_ref (tile); + + g_file_load_contents_async (file, NULL, + (GAsyncReadyCallback) tile_loaded_cb, + callback_data); + } + else + { + ChamplainMapSource *next_source = champlain_map_source_get_next_source (map_source); + + if (CHAMPLAIN_IS_MAP_SOURCE (next_source)) + champlain_map_source_fill_tile (next_source, tile); + } + + g_object_unref (file); + g_free (path); +} diff --git a/lib/maps-file-tile-source.h b/lib/maps-file-tile-source.h new file mode 100644 index 00000000..9b432e04 --- /dev/null +++ b/lib/maps-file-tile-source.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef _MAPS_FILE_TILE_SOURCE_H_ +#define _MAPS_FILE_TILE_SOURCE_H_ + +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_FILE_TILE_SOURCE maps_file_tile_source_get_type () + +#define MAPS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSource)) + +#define MAPS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +#define MAPS_IS_FILE_TILE_SOURCE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_IS_FILE_TILE_SOURCE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_FILE_TILE_SOURCE)) + +#define MAPS_FILE_TILE_SOURCE_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_FILE_TILE_SOURCE, MapsFileTileSourceClass)) + +typedef struct _MapsFileTileSourcePrivate MapsFileTileSourcePrivate; + +typedef struct _MapsFileTileSource MapsFileTileSource; +typedef struct _MapsFileTileSourceClass MapsFileTileSourceClass; + +/** + * MapsFileTileSource: + * + * The #MapsFileTileSource structure contains only private data + * and should be accessed using the provided API + * + */ +struct _MapsFileTileSource +{ + ChamplainTileSource parent_instance; + + MapsFileTileSourcePrivate *priv; +}; + +struct _MapsFileTileSourceClass +{ + ChamplainTileSourceClass parent_class; +}; + +GType maps_file_tile_source_get_type (void); + +gboolean maps_file_tile_source_prepare (MapsFileTileSource *tile_source, GError **error); +G_END_DECLS + +#endif /* _MAPS_FILE_TILE_SOURCE_H_ */ diff --git a/lib/maps-osm-changeset.c b/lib/maps-osm-changeset.c new file mode 100644 index 00000000..9dcc274d --- /dev/null +++ b/lib/maps-osm-changeset.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-changeset.h" + +#include + +struct _MapsOSMChangesetPrivate +{ + char *comment; + char *created_by; +}; + +enum { + PROP_0, + + PROP_COMMENT, + PROP_CREATED_BY +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMChangeset, maps_osm_changeset, G_TYPE_OBJECT) + +static void +maps_osm_changeset_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + changeset->priv->comment = g_value_dup_string (value); + break; + + case PROP_CREATED_BY: + changeset->priv->created_by = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + switch (property_id) + { + case PROP_COMMENT: + g_value_set_string (value, changeset->priv->comment); + break; + + case PROP_CREATED_BY: + g_value_set_string (value, changeset->priv->created_by); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_changeset_dispose (GObject *object) +{ + MapsOSMChangeset *changeset = MAPS_OSMCHANGESET (object); + + g_free (changeset->priv->comment); + g_free (changeset->priv->created_by); + + G_OBJECT_CLASS (maps_osm_changeset_parent_class)->dispose (object); +} + +static void +maps_osm_changeset_class_init (MapsOSMChangesetClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + object_class->dispose = maps_osm_changeset_dispose; + object_class->get_property = maps_osm_changeset_get_property; + object_class->set_property = maps_osm_changeset_set_property; + + /** + * MapsOSMChangeset:comment: + * + * The comment of the changes. + */ + pspec = g_param_spec_string ("comment", + "Comment", + "Comment", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_COMMENT, pspec); + + /** + * MapsOSMChangeset:created_by: + * + * The identifier of the client making the changeset. + */ + pspec = g_param_spec_string ("created_by", + "Created by", + "Created by", + NULL, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_CREATED_BY, pspec); +} + +static void +maps_osm_changeset_init (MapsOSMChangeset *changeset) +{ + changeset->priv = maps_osm_changeset_get_instance_private (changeset); + + changeset->priv->comment = NULL; + changeset->priv->created_by = NULL; +} + +MapsOSMChangeset * +maps_osm_changeset_new (const char *comment, const char *created_by) +{ + return g_object_new (MAPS_TYPE_OSMCHANGESET, + "comment", comment, + "created_by", created_by, NULL); +} + +xmlNodePtr +maps_osm_changeset_create_tag_node (const char *key, const char * value) +{ + xmlNodePtr node; + + node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (node, (xmlChar *) "k", (xmlChar *) key); + xmlNewProp (node, (xmlChar *) "v", (xmlChar *) value); + + return node; +} + +char * +maps_osm_changeset_serialize (const MapsOSMChangeset *changeset) +{ + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr changeset_node; + xmlNodePtr comment_node; + xmlNodePtr created_by_node; + xmlChar *result; + int size; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + changeset_node = xmlNewNode (NULL, (xmlChar *) "changeset"); + comment_node = + maps_osm_changeset_create_tag_node ("comment", changeset->priv->comment); + created_by_node = + maps_osm_changeset_create_tag_node ("created_by", + changeset->priv->created_by); + xmlAddChild (osm_node, changeset_node); + xmlAddChild (changeset_node, comment_node); + xmlAddChild (changeset_node, created_by_node); + xmlDocSetRootElement (doc, osm_node); + + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-changeset.h b/lib/maps-osm-changeset.h new file mode 100644 index 00000000..01963366 --- /dev/null +++ b/lib/maps-osm-changeset.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_CHANGESET_H__ +#define __MAPS_OSM_CHANGESET_H__ + +#include + +#define MAPS_TYPE_OSMCHANGESET maps_osm_changeset_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMChangeset, maps_osm_changeset, MAPS, OSMCHANGESET, + GObject) + +typedef struct _MapsOSMChangesetPrivate MapsOSMChangesetPrivate; + +struct _MapsOSMChangeset +{ + GObject parent_instance; + MapsOSMChangesetPrivate *priv; +}; + +struct _MapsOSMChangesetClass +{ + GObjectClass parent_class; +}; + +/** + * maps_osm_changeset_new: + * @comment: (nullable): A comment about the OSM change, optional + * @created_by: (nullable): The client identifier of the OSM change, optional + */ +MapsOSMChangeset *maps_osm_changeset_new (const char *comment, + const char *created_by); + +char *maps_osm_changeset_serialize (const MapsOSMChangeset *changeset); + +#endif /* __MAPS_OSM_CHANGESET_H__ */ + diff --git a/lib/maps-osm-node.c b/lib/maps-osm-node.c new file mode 100644 index 00000000..05711e04 --- /dev/null +++ b/lib/maps-osm-node.c @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-node.h" + +struct _MapsOSMNodePrivate +{ + double lon; + double lat; +}; + +enum { + PROP_0, + + PROP_LONGITUDE, + PROP_LATITUDE +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMNode, maps_osm_node, MAPS_TYPE_OSMOBJECT) + + +static void +maps_osm_node_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + node->priv->lon = g_value_get_double (value); + break; + + case PROP_LATITUDE: + node->priv->lat = g_value_get_double (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_node_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMNode *node = MAPS_OSMNODE (object); + + switch (property_id) + { + case PROP_LONGITUDE: + g_value_set_double (value, node->priv->lon); + break; + + case PROP_LATITUDE: + g_value_set_double (value, node->priv->lat); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static const char * +maps_osm_node_get_xml_tag_name (void) +{ + return "node"; +} + +static GHashTable * +maps_osm_node_get_xml_attributes (const MapsOSMObject *object) +{ + const MapsOSMNode *node = MAPS_OSMNODE ((MapsOSMObject *) object); + GHashTable *attributes; + char buf[G_ASCII_DTOSTR_BUF_SIZE]; + + attributes = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); + + g_ascii_dtostr (buf, sizeof (buf), node->priv->lon); + g_hash_table_insert (attributes, "lon", g_strdup (buf)); + g_ascii_dtostr (buf, sizeof (buf), node->priv->lat); + g_hash_table_insert (attributes, "lat", g_strdup (buf)); + + return attributes; +} + +static void +maps_osm_node_class_init (MapsOSMNodeClass *klass) +{ + GObjectClass *node_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + node_class->get_property = maps_osm_node_get_property; + node_class->set_property = maps_osm_node_set_property; + object_class->get_xml_tag_name = maps_osm_node_get_xml_tag_name; + object_class->get_xml_attributes = maps_osm_node_get_xml_attributes; + + /** + * MapsOSMNode:longitude: + * + * The longitude of the node. + */ + pspec = g_param_spec_double ("longitude", + "Longitude", + "Longitude", + -180.0, + 180.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LONGITUDE, pspec); + + /** + * MapsOSMNode:latitude: + * + * The latitude of the node. + */ + pspec = g_param_spec_double ("latitude", + "Latitude", + "Latitude", + -90.0, + 90.0, + 0.0, + G_PARAM_READWRITE); + g_object_class_install_property (node_class, PROP_LATITUDE, pspec); +} + +static void +maps_osm_node_init (MapsOSMNode *node) +{ + node->priv = maps_osm_node_get_instance_private (node); + + node->priv->lon = 0.0; + node->priv->lat = 0.0; +} + +MapsOSMNode * +maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude) +{ + return g_object_new (MAPS_TYPE_OSMNODE, + "id", id, + "version", version, + "changeset", changeset, + "longitude", longitude, + "latitude", latitude, NULL); +} diff --git a/lib/maps-osm-node.h b/lib/maps-osm-node.h new file mode 100644 index 00000000..ba12d3bc --- /dev/null +++ b/lib/maps-osm-node.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_NODE_H__ +#define __MAPS_OSM_NODE_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMNODE maps_osm_node_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMNode, maps_osm_node, MAPS, OSMNODE, MapsOSMObject) + +typedef struct _MapsOSMNodePrivate MapsOSMNodePrivate; + +struct _MapsOSMNode +{ + MapsOSMObject parent_instance; + MapsOSMNodePrivate *priv; +}; + +struct _MapsOSMNodeClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMNode *maps_osm_node_new (guint64 id, guint version, guint64 changeset, + double longitude, double latitude); + +#endif //__MAPS_OSM_NODE_H__ diff --git a/lib/maps-osm-oauth-proxy-call.c b/lib/maps-osm-oauth-proxy-call.c new file mode 100644 index 00000000..5e9e7544 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.c @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-oauth-proxy-call.h" + +#include +#include +#include + +#define MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL,\ + MapsOSMOAuthProxyCallPrivate)) + +struct _MapsOSMOAuthProxyCallPrivate +{ + char *payload; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(MapsOSMOAuthProxyCall, maps_osm_oauth_proxy_call, + OAUTH_TYPE_PROXY_CALL); + +static gboolean +maps_osm_oauth_proxy_call_serialize_params (RestProxyCall *call, + gchar **content_type, + gchar **content, + gsize *content_len, + GError **error) +{ + g_return_val_if_fail(MAPS_IS_OSM_OAUTH_PROXY_CALL (call), FALSE); + g_return_val_if_fail(content_type != NULL, FALSE); + g_return_val_if_fail(content != NULL, FALSE); + g_return_val_if_fail(content_len != NULL, FALSE); + + gchar *payload = (MAPS_OSM_OAUTH_PROXY_CALL (call))->priv->payload; + + *content_type = g_strdup ("text/xml"); + *content = g_strdup (payload); + *content_len = strlen (payload); + + return TRUE; +} + +static void +maps_osm_oauth_proxy_call_dispose (GObject *object) +{ + MapsOSMOAuthProxyCall *call = MAPS_OSM_OAUTH_PROXY_CALL (object); + + g_free (call->priv->payload); + call->priv->payload = NULL; + + G_OBJECT_CLASS (maps_osm_oauth_proxy_call_parent_class)->dispose (object); +} + +static void +maps_osm_oauth_proxy_call_class_init (MapsOSMOAuthProxyCallClass *klass) +{ + RestProxyCallClass *proxy_call_class = REST_PROXY_CALL_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + proxy_call_class->serialize_params = + maps_osm_oauth_proxy_call_serialize_params; + gobject_class->dispose = maps_osm_oauth_proxy_call_dispose; +} + +static void +maps_osm_oauth_proxy_call_init (MapsOSMOAuthProxyCall *call) +{ + call->priv = MAPS_OSM_OAUTH_PROXY_CALL_GET_PRIVATE (call); +} + +MapsOSMOAuthProxyCall * +maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, const char *payload) +{ + g_return_val_if_fail (OAUTH_IS_PROXY (proxy), NULL); + g_return_val_if_fail (payload != NULL, NULL); + + MapsOSMOAuthProxyCall *call = + g_object_new (MAPS_TYPE_OSM_OAUTH_PROXY_CALL, "proxy", proxy, NULL); + + call->priv->payload = g_strdup (payload); + + return call; +} + + diff --git a/lib/maps-osm-oauth-proxy-call.h b/lib/maps-osm-oauth-proxy-call.h new file mode 100644 index 00000000..e9c240d8 --- /dev/null +++ b/lib/maps-osm-oauth-proxy-call.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef MAPS_OSM_OAUTH_PROXY_CALL_H +#define MAPS_OSM_OAUTH_PROXY_CALL_H + +#include + +#include +#include + +G_BEGIN_DECLS + +#define MAPS_TYPE_OSM_OAUTH_PROXY_CALL (maps_osm_oauth_proxy_call_get_type ()) +#define MAPS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCall)) +#define MAPS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_IS_OSM_OAUTH_PROXY_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAPS_TYPE_OSM_OAUTH_PROXY_CALL)) +#define MAPS_OSM_OAUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAPS_TYPE_OSM_OAUTH_PROXY_CALL, MapsOSMOAuthProxyCallClass)) + +typedef struct _MapsOSMOAuthProxyCall MapsOSMOAuthProxyCall; +typedef struct _MapsOSMOAuthProxyCallPrivate MapsOSMOAuthProxyCallPrivate; +typedef struct _MapsOSMOAuthProxyCallClass MapsOSMOAuthProxyCallClass; + +struct _MapsOSMOAuthProxyCall +{ + OAuthProxyCall parent; + MapsOSMOAuthProxyCallPrivate *priv; +}; + +struct _MapsOSMOAuthProxyCallClass +{ + OAuthProxyCallClass parent_class; +}; + +GType maps_osm_oauth_proxy_call_get_type(void); +MapsOSMOAuthProxyCall *maps_osm_oauth_proxy_call_new (OAuthProxy *proxy, + const char *content); + +G_END_DECLS + +#endif /* MAPS_OSM_OAUTH_PROXY_CALL_H */ diff --git a/lib/maps-osm-object.c b/lib/maps-osm-object.c new file mode 100644 index 00000000..5a00f0c1 --- /dev/null +++ b/lib/maps-osm-object.c @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-object.h" + +struct _MapsOSMObjectPrivate +{ + guint64 id; + guint version; + guint64 changeset; + + GHashTable *tags; +}; + +enum { + PROP_0, + + PROP_ID, + PROP_VERSION, + PROP_CHANGESET +}; + +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (MapsOSMObject, maps_osm_object, + G_TYPE_OBJECT) + +static void +maps_osm_object_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + priv->id = g_value_get_uint64 (value); + break; + + case PROP_VERSION: + priv->version = g_value_get_uint (value); + break; + + case PROP_CHANGESET: + priv->changeset = g_value_get_uint64 (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + switch (property_id) + { + case PROP_ID: + g_value_set_uint64 (value, priv->id); + break; + + case PROP_VERSION: + g_value_set_uint (value, priv->version); + break; + + case PROP_CHANGESET: + g_value_set_uint64 (value, priv->changeset); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +maps_osm_object_dispose (GObject *object) +{ + MapsOSMObject *osm_object = MAPS_OSMOBJECT (object); + MapsOSMObjectPrivate *priv = + maps_osm_object_get_instance_private (osm_object); + + g_hash_table_destroy (priv->tags); + priv->tags = NULL; + + G_OBJECT_CLASS (maps_osm_object_parent_class)->dispose (object); +} + +/* base implementation returning no object-specific XML attributes */ +static GHashTable * +maps_osm_object_get_xml_attributes (const MapsOSMObject *object) +{ + return NULL; +} + +/* base implementation return no object-specific child XML nodes */ +static xmlNodePtr +maps_osm_object_get_xml_child_nodes (const MapsOSMObject *object) +{ + return NULL; +} + +static void +maps_osm_object_class_init (MapsOSMObjectClass *klass) +{ + GObjectClass *maps_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + GParamSpec *pspec; + + maps_class->dispose = maps_osm_object_dispose; + maps_class->get_property = maps_osm_object_get_property; + maps_class->set_property = maps_osm_object_set_property; + object_class->get_xml_attributes = maps_osm_object_get_xml_attributes; + object_class->get_xml_child_nodes = maps_osm_object_get_xml_child_nodes; + + /** + * MapsOSMObject:id: + * + * The OSM id of the object. + */ + pspec = g_param_spec_uint64 ("id", + "ID", + "ID", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_ID, pspec); + + /** + * MapsOSMObject:version: + * + * The latest OSM version of the object. + */ + pspec = g_param_spec_uint("version", + "Version", + "Version", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_VERSION, pspec); + + /** + * MapsOSMObject:changeset: + * + * The OSM changeset for the current upload of the object. + */ + pspec = g_param_spec_uint64 ("changeset", + "Changeset", + "Changeset", + 0, + G_MAXUINT64, + 0, + G_PARAM_READWRITE); + g_object_class_install_property (maps_class, PROP_CHANGESET, pspec); +} + +static void +maps_osm_object_init (MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + priv->tags = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); +} + +const char * +maps_osm_object_get_tag (const MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private ((MapsOSMObject *) object); + + g_return_val_if_fail (key != NULL, NULL); + + return g_hash_table_lookup (priv->tags, key); +} + +void +maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_insert (priv->tags, g_strdup (key), g_strdup (value)); +} + +void +maps_osm_object_delete_tag (MapsOSMObject *object, const char *key) +{ + MapsOSMObjectPrivate *priv = maps_osm_object_get_instance_private (object); + + g_return_if_fail (key != NULL); + + g_hash_table_remove (priv->tags, key); +} + +static void +maps_osm_object_foreach_tag (gpointer key, gpointer value, gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + /* skip tag if it has an empty placeholder value */ + if (val && *val) + { + xmlNodePtr tag_node; + + tag_node = xmlNewNode (NULL, (xmlChar *) "tag"); + xmlNewProp (tag_node, (xmlChar *) "k", name); + xmlNewProp (tag_node, (xmlChar *) "v", val); + xmlAddChild (object_node, tag_node); + } +} + +static void +maps_osm_object_foreach_type_attr (gpointer key, gpointer value, + gpointer user_data) +{ + const xmlChar *name = (const xmlChar *) key; + const xmlChar *val = (const xmlChar *) value; + xmlNodePtr object_node = (xmlNodePtr) user_data; + + xmlNewProp (object_node, name, val); +} + +xmlDocPtr +maps_osm_object_to_xml (const MapsOSMObject *object) +{ + MapsOSMObjectPrivate *priv; + xmlDocPtr doc; + xmlNodePtr osm_node; + xmlNodePtr object_node; + const char *type; + GHashTable *type_attrs; + xmlNodePtr type_sub_nodes; + + doc = xmlNewDoc ((xmlChar *) "1.0"); + osm_node = xmlNewNode (NULL, (xmlChar *) "osm"); + priv = (MapsOSMObjectPrivate *) maps_osm_object_get_instance_private ((MapsOSMObject *) object); + type = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_tag_name (); + object_node = xmlNewNode (NULL, (const xmlChar *) type); + + /* add common OSM attributes */ + if (priv->id != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->id); + xmlNewProp (object_node, (xmlChar *) "id", (xmlChar *) buf); + } + + if (priv->version != 0) + { + char buf[16]; + g_snprintf (buf, 16, "%d", priv->version); + xmlNewProp (object_node, (xmlChar *) "version", (xmlChar *) buf); + } + + if (priv->changeset != 0) + { + char buf[32]; + g_snprintf (buf, 32, "%" G_GUINT64_FORMAT, priv->changeset); + xmlNewProp (object_node, (xmlChar *) "changeset", (xmlChar *) buf); + } + + /* add OSM tags */ + g_hash_table_foreach (priv->tags, maps_osm_object_foreach_tag, object_node); + + /* add type-specific attributes */ + type_attrs = MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_attributes (object); + if (type_attrs) + { + g_hash_table_foreach (type_attrs, maps_osm_object_foreach_type_attr, + object_node); + g_hash_table_destroy (type_attrs); + } + + /* add type-specific sub-nodes */ + type_sub_nodes = + MAPS_OSMOBJECT_GET_CLASS ((MapsOSMObject *) object)->get_xml_child_nodes (object); + if (type_sub_nodes) + xmlAddChildList (object_node, type_sub_nodes); + + /* add type node to top node */ + xmlAddChild (osm_node, object_node); + xmlDocSetRootElement (doc, osm_node); + + return doc; +} + + +char * +maps_osm_object_serialize (const MapsOSMObject *object) +{ + xmlDocPtr doc; + xmlChar *result; + int size; + + doc = maps_osm_object_to_xml (object); + xmlDocDumpMemory (doc, &result, &size); + xmlFreeDoc (doc); + + return (char *) result; +} diff --git a/lib/maps-osm-object.h b/lib/maps-osm-object.h new file mode 100644 index 00000000..6e8f2e3b --- /dev/null +++ b/lib/maps-osm-object.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_OBJECT_H__ +#define __MAPS_OSM_OBJECT_H__ + +#include +#include + +#define MAPS_TYPE_OSMOBJECT maps_osm_object_get_type () +G_DECLARE_DERIVABLE_TYPE(MapsOSMObject, maps_osm_object, MAPS, OSMOBJECT, + GObject) + +typedef struct _MapsOSMObjectPrivate MapsOSMObjectPrivate; + +struct _MapsOSMObjectClass +{ + GObjectClass parent_class; + + /* return the name of the distinguishing OSM XML tag (beneath ) */ + const char * (* get_xml_tag_name) (void); + + /* return hash table with XML attributes (key/values) specific for + the object (on the XML tag beneath ) */ + GHashTable * (* get_xml_attributes) (const MapsOSMObject *object); + + /* return a list of custom object-specific XML tags to attach, + can return NULL if there's no object-specific nodes */ + xmlNodePtr (* get_xml_child_nodes) (const MapsOSMObject *object); +}; + +const char *maps_osm_object_get_tag (const MapsOSMObject *object, + const char *key); +void maps_osm_object_set_tag (MapsOSMObject *object, const char *key, + const char *value); +void maps_osm_object_delete_tag (MapsOSMObject *object, const char *key); + +char *maps_osm_object_serialize (const MapsOSMObject *object); + +#endif //__MAPS_OSM_OBJECT_H__ diff --git a/lib/maps-osm-relation.c b/lib/maps-osm-relation.c new file mode 100644 index 00000000..e4d4efd2 --- /dev/null +++ b/lib/maps-osm-relation.c @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-relation.h" + +struct _MapsOSMRelationPrivate +{ + GList *members; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMRelation, maps_osm_relation, + MAPS_TYPE_OSMOBJECT); + +typedef struct +{ + char *role; + guint type; + guint64 ref; +} MapsOSMRelationMember; + +static void +maps_osm_relation_member_free (gpointer data) +{ + MapsOSMRelationMember *member = (MapsOSMRelationMember *) data; + + g_free (member->role); +} + +static void +maps_osm_relation_dispose (GObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION (object); + + g_list_free_full (relation->priv->members, maps_osm_relation_member_free); + relation->priv->members = NULL; + + G_OBJECT_CLASS (maps_osm_relation_parent_class)->dispose (object); +} + +static const char * +maps_osm_relation_get_xml_tag_name (void) +{ + return "relation"; +} + +static const char * +maps_osm_relation_member_type_to_string (guint type) +{ + switch (type) { + case MEMBER_TYPE_NODE: + return "node"; + case MEMBER_TYPE_WAY: + return "way"; + case MEMBER_TYPE_RELATION: + return "relation"; + default: + g_warning ("Unknown relation member type: %d\n", type); + return NULL; + } +} + +static xmlNodePtr +maps_osm_relation_get_member_node (const MapsOSMRelationMember *member) +{ + xmlNodePtr node = xmlNewNode (NULL, (xmlChar *) "member"); + char buf[16]; + + if (member->role) + xmlNewProp (node, (xmlChar *) "role", (xmlChar *) g_strdup (member->role)); + + xmlNewProp (node, (xmlChar *) "type", + (xmlChar *) maps_osm_relation_member_type_to_string (member->type)); + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, member->ref); + xmlNewProp (node, (xmlChar *) "ref", (xmlChar *) buf); + + return node; +} + +static xmlNodePtr +maps_osm_relation_get_xml_child_nodes (const MapsOSMObject *object) +{ + MapsOSMRelation *relation = MAPS_OSMRELATION ((MapsOSMObject *) object); + xmlNodePtr nodes = NULL; + const GList *members = relation->priv->members; + + if (members) + { + const GList *iter; + nodes = maps_osm_relation_get_member_node ((MapsOSMRelationMember *) + members->data); + + for (iter = members->next; iter; iter = iter->next) + { + xmlAddSibling (nodes, maps_osm_relation_get_member_node ( + (MapsOSMRelationMember *) iter->data)); + } + } + + return nodes; +} + +static void +maps_osm_relation_class_init (MapsOSMRelationClass *klass) +{ + GObjectClass *relation_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + relation_class->dispose = maps_osm_relation_dispose; + object_class->get_xml_tag_name = maps_osm_relation_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_relation_get_xml_child_nodes; +} + +static void +maps_osm_relation_init (MapsOSMRelation *relation) +{ + relation->priv = maps_osm_relation_get_instance_private (relation); +} + +MapsOSMRelation * +maps_osm_relation_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMRELATION, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_relation_add_member (MapsOSMRelation *relation, const gchar *role, + guint type, guint64 ref) +{ + MapsOSMRelationMember *member = g_new (MapsOSMRelationMember, 1); + + member->role = g_strdup (role); + member->type = type; + member->ref = ref; + + relation->priv->members = g_list_append (relation->priv->members, member); +} + diff --git a/lib/maps-osm-relation.h b/lib/maps-osm-relation.h new file mode 100644 index 00000000..ffcae785 --- /dev/null +++ b/lib/maps-osm-relation.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_RELATION_H__ +#define __MAPS_OSM_RELATION_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMRELATION maps_osm_relation_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMRelation, maps_osm_relation, MAPS, OSMRELATION, + MapsOSMObject) + +typedef struct _MapsOSMRelationPrivate MapsOSMRelationPrivate; + +struct _MapsOSMRelation +{ + MapsOSMObject parent_instance; + MapsOSMRelationPrivate *priv; +}; + +struct _MapsOSMRelationClass +{ + MapsOSMObjectClass parent_class; +}; + +enum { + MEMBER_TYPE_NODE, + MEMBER_TYPE_WAY, + MEMBER_TYPE_RELATION +}; + +MapsOSMRelation *maps_osm_relation_new (guint64 id, guint version, + guint64 changeset); + +void maps_osm_relation_add_member (MapsOSMRelation *relation, const char *role, + guint type, guint64 ref); + +#endif /* __MAPS_OSM_RELATION_H__ */ + diff --git a/lib/maps-osm-way.c b/lib/maps-osm-way.c new file mode 100644 index 00000000..a2150287 --- /dev/null +++ b/lib/maps-osm-way.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm-way.h" + +struct _MapsOSMWayPrivate +{ + GArray *node_ids; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (MapsOSMWay, maps_osm_way, MAPS_TYPE_OSMOBJECT); + +static void +maps_osm_way_dispose (GObject *object) +{ + MapsOSMWay *way = MAPS_OSMWAY (object); + + g_array_free (way->priv->node_ids, TRUE); + way->priv->node_ids = NULL; + + G_OBJECT_CLASS (maps_osm_way_parent_class)->dispose (object); +} + +static const char * +maps_osm_way_get_xml_tag_name (void) +{ + return "way"; +} + +static xmlNodePtr +maps_osm_way_create_node_xml_node (guint64 ref) +{ + xmlNodePtr nd; + char buf[16]; + + g_snprintf (buf, 16, "%" G_GUINT64_FORMAT, ref); + nd = xmlNewNode (NULL, (xmlChar *) "nd"); + xmlNewProp (nd, (xmlChar *) "ref", (xmlChar *) buf); + + return nd; +} + +static xmlNodePtr +maps_osm_way_get_xml_child_nodes(const MapsOSMObject *object) +{ + const MapsOSMWay *way = MAPS_OSMWAY ((MapsOSMObject *) object); + int i; + xmlNodePtr result; + xmlNodePtr next; + + g_return_val_if_fail (way->priv->node_ids->len > 0, NULL); + + result = maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, 0)); + next = result; + + for (i = 1; i < way->priv->node_ids->len; i++) + { + xmlNodePtr new_node; + new_node = + maps_osm_way_create_node_xml_node (g_array_index (way->priv->node_ids, + guint64, i)); + next = xmlAddNextSibling (next, new_node); + } + + return result; +} + +static void +maps_osm_way_class_init (MapsOSMWayClass *klass) +{ + GObjectClass *way_class = G_OBJECT_CLASS (klass); + MapsOSMObjectClass *object_class = MAPS_OSMOBJECT_CLASS (klass); + + way_class->dispose = maps_osm_way_dispose; + object_class->get_xml_tag_name = maps_osm_way_get_xml_tag_name; + object_class->get_xml_child_nodes = maps_osm_way_get_xml_child_nodes; +} + +static void +maps_osm_way_init (MapsOSMWay *way) +{ + way->priv = maps_osm_way_get_instance_private (way); + way->priv->node_ids = g_array_new (FALSE, FALSE, sizeof (guint64)); +} + +MapsOSMWay * +maps_osm_way_new (guint64 id, guint version, guint64 changeset) +{ + return g_object_new (MAPS_TYPE_OSMWAY, + "id", id, + "version", version, + "changeset", changeset, NULL); +} + +void +maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id) +{ + g_array_append_val (way->priv->node_ids, id); +} diff --git a/lib/maps-osm-way.h b/lib/maps-osm-way.h new file mode 100644 index 00000000..0dee1eec --- /dev/null +++ b/lib/maps-osm-way.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_WAY_H__ +#define __MAPS_OSM_WAY_H__ + +#include "maps-osm-object.h" + +#include + +#define MAPS_TYPE_OSMWAY maps_osm_way_get_type () +G_DECLARE_FINAL_TYPE(MapsOSMWay, maps_osm_way, MAPS, OSMWAY, MapsOSMObject) + +typedef struct _MapsOSMWayPrivate MapsOSMWayPrivate; + +struct _MapsOSMWay +{ + MapsOSMObject parent_instance; + MapsOSMWayPrivate *priv; +}; + +struct _MapsOSMWayClass +{ + MapsOSMObjectClass parent_class; +}; + +MapsOSMWay *maps_osm_way_new (guint64 id, guint version, guint64 changeset); + +void maps_osm_way_add_node_id (MapsOSMWay *way, guint64 id); + +#endif /* __MAPS_OSM_WAY_H__ */ + diff --git a/lib/maps-osm.c b/lib/maps-osm.c new file mode 100644 index 00000000..307a9361 --- /dev/null +++ b/lib/maps-osm.c @@ -0,0 +1,471 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#include "maps-osm.h" +#include "mapsintl.h" + +#include +#include + +#define MAPS_OSM_ERROR maps_osm_error_quark () + +GQuark +maps_osm_error_quark (void) +{ + return g_quark_from_static_string ("maps-osm-error"); +} + +void +maps_osm_init (void) +{ + LIBXML_TEST_VERSION; +} + +void +maps_osm_finalize (void) +{ + xmlCleanupParser (); +} + +static xmlDocPtr +read_xml_doc (const char *content, guint length, GError **error) +{ + xmlDoc *doc; + + doc = xmlReadMemory (content, length, "noname.xml", NULL, 0); + + if (!doc) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Failed to parse XML document")); + return NULL; + } + + return doc; +} + +static void +parse_tag (const xmlAttr *attrs, GHashTable *tags) +{ + const xmlAttr *cur_attr; + char *key; + char *value; + + key = NULL; + value = NULL; + + for (cur_attr = attrs; cur_attr; cur_attr = cur_attr->next) + { + if (g_str_equal (cur_attr->name, "k")) + key = (char *) cur_attr->children->content; + else if (g_str_equal (cur_attr->name, "v")) + value = (char *) cur_attr->children->content; + else + g_warning ("Unexpected tag property: %s\n", cur_attr->name); + } + + g_hash_table_insert (tags, key, value); +} + +static GHashTable * +parse_attributes (const xmlNode *node) +{ + GHashTable *attributes; + const xmlAttr *cur_attr; + + attributes = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_attr = node->properties; cur_attr; cur_attr = cur_attr->next) + { + g_hash_table_insert (attributes, + (gpointer) cur_attr->name, + (gpointer) cur_attr->children->content); + } + + return attributes; +} + +static GHashTable * +parse_tags (const xmlNode *tag_child) +{ + GHashTable *tags; + const xmlNode *cur_node; + + tags = g_hash_table_new (g_str_hash, g_str_equal); + + for (cur_node = tag_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "tag")) + parse_tag (cur_node->properties, tags); + } + + return tags; +} + +static GArray * +parse_node_refs (const xmlNode *node_ref_child) +{ + GArray *node_refs; + const xmlNode *cur_node; + + node_refs = g_array_new (FALSE, FALSE, sizeof (guint64)); + + for (cur_node = node_ref_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "nd")) + { + char *ref; + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + ref = g_hash_table_lookup (attributes, "ref"); + + if (ref) + { + guint64 id = g_ascii_strtoull (ref, NULL, 10); + + if (id == 0) + g_warning ("Invalid node ref: %s", ref); + else + g_array_append_val (node_refs, id); + } + + g_hash_table_destroy (attributes); + } + } + + return node_refs; +} + +static xmlNode * +get_sub_node (xmlDoc *doc) +{ + xmlNode *node; + xmlXPathContext *xpath_ctx; + xmlXPathObject * xpath_obj; + + xpath_ctx = xmlXPathNewContext (doc); + xpath_obj = xmlXPathEvalExpression ((xmlChar *) "/osm/node|/osm/way|/osm/relation", + xpath_ctx); + + if (xpath_obj && xpath_obj->nodesetval && xpath_obj->nodesetval->nodeNr > 0) + { + node = xmlCopyNode (xpath_obj->nodesetval->nodeTab[0], 1); + } + else + { + g_warning ("Couldn't find element"); + node = NULL; + } + + xmlXPathFreeObject (xpath_obj); + xmlXPathFreeContext (xpath_ctx); + + return node; +} + +static void +for_each_tag (gpointer key, gpointer value, gpointer user_data) +{ + const char *k = (const char *) key; + const char *v = (const char *) value; + MapsOSMObject *object = MAPS_OSMOBJECT (user_data); + + maps_osm_object_set_tag (object, k, v); +} + +static void +fill_tags (MapsOSMObject *object, GHashTable *tags) +{ + g_hash_table_foreach (tags, for_each_tag, object); +} + +static void +fill_node_ref_list (MapsOSMWay *way, const GArray *node_refs) +{ + int i; + + for (i = 0; i < node_refs->len; i++) + { + maps_osm_way_add_node_id (way, g_array_index (node_refs, guint64, i)); + } +} + +static MapsOSMNode * +parse_node (const xmlNodePtr node, GError **error) +{ + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + const char *lat_string; + double lat; + const char *lon_string; + double lon; + + GHashTable *tags; + GHashTable *attributes; + + MapsOSMNode *result; + + attributes = parse_attributes (node); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + lat_string = g_hash_table_lookup (attributes, "lat"); + lon_string = g_hash_table_lookup (attributes, "lon"); + + if (!id_string || !changeset_string || !version_string + || !lat_string || !lon_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + lon = g_ascii_strtod (lon_string, NULL); + lat = g_ascii_strtod (lat_string, NULL); + + g_hash_table_destroy (attributes); + + result = maps_osm_node_new (id, version, changeset, lon, lat); + + tags = parse_tags (node->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + + g_hash_table_destroy (tags); + + return result; +} + +static MapsOSMWay * +parse_way (const xmlNodePtr way, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GArray *node_refs; + MapsOSMWay *result; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + attributes = parse_attributes (way); + + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + g_warning ("Missing required attributes\n"); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_way_new (id, version, changeset); + + tags = parse_tags (way->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + node_refs = parse_node_refs (way->children); + fill_node_ref_list (result, node_refs); + g_array_free (node_refs, TRUE); + + return result; +} + + +static GList * +parse_members (const xmlNode *member_child) +{ + const xmlNode *cur_node; + GList *members; + + members = NULL; + + for (cur_node = member_child; cur_node; cur_node = cur_node->next) + { + /* skip non-element nodes */ + if (cur_node->type != XML_ELEMENT_NODE) + continue; + + if (g_str_equal (cur_node->name, "member")) + { + GHashTable *attributes; + + attributes = parse_attributes (cur_node); + members = g_list_append (members, attributes); + } + } + + return members; +} + +static void +fill_members (MapsOSMRelation *relation, const GList *members) +{ + const GList *cur; + + for (cur = members; cur; cur = g_list_next (cur)) { + GHashTable *attributes = (GHashTable *) cur->data; + const char *type_string = g_hash_table_lookup (attributes, "type"); + guint type; + const char *role = g_hash_table_lookup (attributes, "role"); + const char *ref_string = g_hash_table_lookup (attributes, "ref"); + guint64 ref; + + if (ref_string) + ref = g_ascii_strtoull (ref_string, NULL, 10); + + if (g_strcmp0 (type_string, "node") == 0) + type = MEMBER_TYPE_NODE; + else if (g_strcmp0 (type_string, "way") == 0) + type = MEMBER_TYPE_WAY; + else if (g_strcmp0 (type_string, "relation") == 0) + type = MEMBER_TYPE_RELATION; + else + { + g_warning ("Unknown relation type: %s\n", type_string); + continue; + } + + maps_osm_relation_add_member (relation, role, type, ref); + } +} + +static MapsOSMRelation * +parse_relation (const xmlNodePtr relation, GError **error) +{ + GHashTable *attributes; + GHashTable *tags; + GList *member_list; + + const char *id_string; + guint64 id; + const char *changeset_string; + guint64 changeset; + const char *version_string; + guint version; + + MapsOSMRelation *result; + + attributes = parse_attributes (relation); + id_string = g_hash_table_lookup (attributes, "id"); + changeset_string = g_hash_table_lookup (attributes, "changeset"); + version_string = g_hash_table_lookup (attributes, "version"); + + if (!id_string || !changeset_string || !version_string) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Missing required attributes")); + g_hash_table_destroy (attributes); + return NULL; + } + + g_hash_table_destroy (attributes); + + id = g_ascii_strtoull (id_string, NULL, 10); + changeset = g_ascii_strtoull (changeset_string, NULL, 10); + version = g_ascii_strtoull (version_string, NULL, 10); + + result = maps_osm_relation_new (id, version, changeset); + + tags = parse_tags (relation->children); + fill_tags (MAPS_OSMOBJECT (result), tags); + g_hash_table_destroy (tags); + + member_list = parse_members (relation->children); + fill_members (result, member_list); + g_list_free_full (member_list, (GDestroyNotify) g_hash_table_destroy); + + return result; +} + +/** + * maps_osm_parse: + * @content: XML data + * @length: Length of data + * @error: Error handle + * Returns: (transfer full): A MapsOSMObject + */ +MapsOSMObject * +maps_osm_parse (const char *content, guint length, GError **error) +{ + xmlDocPtr doc; + xmlNodePtr sub_node; + MapsOSMObject *object; + + doc = read_xml_doc (content, length, error); + + if (!doc) + return NULL; + + sub_node = get_sub_node (doc); + + if (!sub_node) + { + *error = g_error_new_literal (MAPS_OSM_ERROR, 0, + _("Could not find OSM element")); + return NULL; + } + + if (g_str_equal (sub_node->name, "node")) + { + object = MAPS_OSMOBJECT (parse_node (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "way")) + { + object = MAPS_OSMOBJECT (parse_way (sub_node, error)); + } + else if (g_str_equal (sub_node->name, "relation")) + { + object = MAPS_OSMOBJECT (parse_relation (sub_node, error)); + } + + xmlFreeNode (sub_node); + xmlFreeDoc (doc); + + return object; +} diff --git a/lib/maps-osm.h b/lib/maps-osm.h new file mode 100644 index 00000000..faca7404 --- /dev/null +++ b/lib/maps-osm.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see + * + * Author: Marcus Lundblad + */ + +#ifndef __MAPS_OSM_H__ +#define __MAPS_OSM_H__ + +#include + +#include "maps-osm-node.h" +#include "maps-osm-way.h" +#include "maps-osm-relation.h" + +void maps_osm_init (void); +void maps_osm_finalize (void); + +MapsOSMObject *maps_osm_parse (const char *content, guint length, + GError **error); + +#endif diff --git a/lib/maps.h b/lib/maps.h new file mode 100644 index 00000000..a6916d2b --- /dev/null +++ b/lib/maps.h @@ -0,0 +1,25 @@ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +#ifndef __MAPS_H__ +#define __MAPS_H__ + +#include +#include "maps-contact-store.h" +#include "maps-contact.h" + +#endif diff --git a/lib/mapsintl.h b/lib/mapsintl.h new file mode 100644 index 00000000..56f31c3f --- /dev/null +++ b/lib/mapsintl.h @@ -0,0 +1,11 @@ +#ifndef _MAPS_INTL_H_ +#define _MAPS_INTL_H_ + +#ifdef ENABLE_NLS +#include +#define _(String) g_dgettext(GETTEXT_PACKAGE "-properties",String) +#else +#define _(String) (String) +#endif + +#endif diff --git a/lib/meson.build b/lib/meson.build new file mode 100644 index 00000000..60543648 --- /dev/null +++ b/lib/meson.build @@ -0,0 +1,75 @@ +maps_h = 'maps.h' + +headers_private = files( + 'maps-contact.h', + 'maps-contact-store.h', + 'maps-file-tile-source.h', + 'maps-osm.h', + 'maps-osm-changeset.h', + 'maps-osm-node.h', + 'maps-osm-object.h', + 'maps-osm-way.h', + 'maps-osm-relation.h', + 'maps-osm-oauth-proxy-call.h' +) + +sources = files( + 'maps-contact.c', + 'maps-contact-store.c', + 'maps-file-tile-source.c', + 'maps-osm.c', + 'maps-osm-changeset.c', + 'maps-osm-node.c', + 'maps-osm-object.c', + 'maps-osm-way.c', + 'maps-osm-relation.c', + 'maps-osm-oauth-proxy-call.c' +) + +enum_types = 'maps-enum-types' + +maps_enums = gnome.mkenums( + enum_types, + sources: headers_private, + c_template: enum_types + '.c.template', + h_template: enum_types + '.h.template', + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower() +) + +cflags = [ + '-DG_DISABLE_DEPRECATED', + '-DPREFIX="@0@"'.format(prefix), + '-DLIBDIR="@0@"'.format(libdir) +] + +libmaps = shared_library( + maps_libname, + version: '0.0.0', + sources: sources + maps_enums, + include_directories: top_inc, + dependencies: libmaps_deps, + c_args: cflags, + install: true, + install_dir: pkglibdir +) + +gnome.generate_gir( + libmaps, + sources: sources + [maps_enums, headers_private], + nsversion: maps_gir_version, + namespace: maps_gir_name, + identifier_prefix: maps_ns, + symbol_prefix: maps_ns.to_lower(), + includes: [ + 'GLib-2.0', + 'GObject-2.0', + 'GeocodeGlib-1.0', + 'Champlain-0.12', + 'Rest-0.7' + ], + install: true, + install_dir_gir: join_paths(pkgdatadir, 'gir-' + maps_gir_version), + install_dir_typelib: join_paths(pkglibdir, 'girepository-' + maps_gir_version) +) + diff --git a/meson.build b/meson.build new file mode 100644 index 00000000..13d84166 --- /dev/null +++ b/meson.build @@ -0,0 +1,64 @@ +project('gnome-maps', 'c', + version: '41.2', + license: 'GPL2+' +) + +app_id = 'org.gnome.Maps' +gnome = import('gnome') +i18n = import('i18n') + +prefix = get_option('prefix') +name = meson.project_name() +version = meson.project_version() + +bindir = join_paths(prefix, get_option('bindir')) +libdir = join_paths(prefix, get_option('libdir')) +datadir = join_paths(prefix, get_option('datadir')) +pkgdatadir = join_paths(datadir, name) +pkglibdir = join_paths(libdir, name) + +maps_ns = 'Maps' +maps_libname = 'gnome-maps' +maps_gir_name = 'GnomeMaps' +maps_gir_version = '1.0' + +desktop_file_validate = find_program('desktop-file-validate', required: false) +appstream_util = find_program('appstream-util', required: false) + +glib = dependency('glib-2.0', version: '>= 2.66.0') +gio = dependency('gio-2.0', version: '>= 2.44.0') +gjs = dependency('gjs-1.0', version: '>= 1.66.0') +girepository = dependency('gobject-introspection-1.0', version: '>= 0.10.1') +gtk3 = dependency('gtk+-3.0', version: '>= 3.22.0') +geoclue2 = dependency('geoclue-2.0', version: '>= 0.12.99') +handy = dependency('libhandy-1', version: '>= 0.84.0') + +libmaps_deps = [ + dependency('gee-0.8', version: '>= 0.16.0'), + dependency('folks', version: '>= 0.10.0'), + dependency('geocode-glib-1.0', version: '>= 3.15.2'), + dependency('champlain-0.12', version: '>= 0.12.14'), + dependency('libxml-2.0'), + dependency('rest-0.7', version: '>= 0.7.90') +] + +msgfmt = find_program('msgfmt') +po_dir = join_paths(meson.source_root(), 'po') + +top_inc = include_directories('.') + +cc = meson.get_compiler('c') + +gjs = find_program('gjs') + +subdir('po') +subdir('src') +subdir('lib') +subdir('data') +subdir('tests') + +meson.add_install_script( + 'meson_post_install.py', + datadir, + bindir +) diff --git a/meson_post_install.py b/meson_post_install.py new file mode 100644 index 00000000..bb6b67c9 --- /dev/null +++ b/meson_post_install.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +import glob +import os +import re +import subprocess +import sys + +datadir = sys.argv[1] + +destdir = os.environ.get('DESTDIR', '') +bindir = os.path.normpath(destdir + os.sep + sys.argv[2]) + +# FIXME: meson will not track the creation of these files +# https://github.com/mesonbuild/meson/blob/master/mesonbuild/scripts/uninstall.py#L39 +if not os.path.exists(bindir): + os.makedirs(bindir) + +src = os.path.join(datadir, 'gnome-maps', 'org.gnome.Maps') +dest = os.path.join(bindir, 'gnome-maps') +subprocess.call(['ln', '-s', '-f', src, dest]) + +if not os.environ.get('DESTDIR'): + icondir = os.path.join(datadir, 'icons', 'hicolor') + + print('Update icon cache...') + subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir]) + + schemadir = os.path.join(datadir, 'glib-2.0', 'schemas') + print('Compiling gsettings schemas...') + subprocess.call(['glib-compile-schemas', schemadir]) + + # FIXME + ''' + search_pattern = '/*.desktop' + + desktopdir = os.path.join(datadir, 'applications') + print('Validate desktop files...') + [subprocess.call(['desktop-file-validate', file]) + for file in glob.glob(desktopdir + search_pattern, recursive=False)] + ''' + diff --git a/org.gnome.Maps.json b/org.gnome.Maps.json new file mode 100644 index 00000000..903e3b77 --- /dev/null +++ b/org.gnome.Maps.json @@ -0,0 +1,245 @@ +{ + "app-id" : "org.gnome.Maps", + "runtime" : "org.gnome.Platform", + "runtime-version" : "master", + "sdk" : "org.gnome.Sdk", + "command" : "gnome-maps", + "tags" : [ + "devel" + ], + "desktop-file-name-prefix" : "(Development) ", + "finish-args" : [ + "--share=ipc", + "--socket=x11", + "--socket=fallback-x11", + "--socket=wayland", + "--device=dri", + "--share=network", + "--talk-name=org.gnome.OnlineAccounts", + "--talk-name=org.gnome.evolution.dataserver.AddressBook10", + "--talk-name=org.gnome.evolution.dataserver.Calendar7", + "--talk-name=org.gnome.evolution.dataserver.Sources5", + "--talk-name=org.gnome.evolution.dataserver.Subprocess.Backend.*", + "--system-talk-name=org.freedesktop.GeoClue2", + "--filesystem=xdg-run/dconf", + "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", + "--env=DCONF_USER_CONFIG_DIR=.config/dconf", + "--env=G_ENABLE_DIAGNOSTICS=1" + ], + "build-options" : { + "cflags" : "-O2 -g", + "cxxflags" : "-O2 -g", + "env" : { + "V" : "1" + } + }, + "cleanup" : [ + "/include", + "/lib/pkgconfig", + "/share/pkgconfig", + "/share/aclocal", + "/man", + "/share/man", + "/share/gtk-doc", + "/share/vala", + "*.la", + "*.a" + ], + "modules" : [ + { + "name": "libical", + "cleanup": [ "/lib/cmake" ], + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_INSTALL_LIBDIR:PATH=/app/lib", + "-DBUILD_SHARED_LIBS:BOOL=ON", + "-DGOBJECT_INTROSPECTION:BOOL=ON", + "-DICAL_BUILD_DOCS:BOOL=OFF", + "-DICAL_GLIB_VAPI:BOOL=ON", + "-DICAL_GLIB:BOOL=ON" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/libical/libical.git", + "branch": "3.0" + } + ] + }, + { + "name" : "gnome-online-accounts", + "config-opts" : [ + "--disable-Werror", + "--disable-telepathy", + "--disable-documentation", + "--disable-backend" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-online-accounts.git" + } + ] + }, + { + "name" : "geocode-glib", + "buildsystem" : "meson", + "builddir" : true, + "config-opts" : [ + "--libdir=/app/lib", + "-Denable-gtk-doc=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/geocode-glib.git" + } + ] + }, + { + "name" : "libgweather", + "buildsystem" : "meson", + "config-opts" : [ + "--libdir=/app/lib" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgweather.git" + } + ] + }, + { + "name": "intltool", + "cleanup": [ "*" ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz", + "sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd" + } + ] + }, + { + "name" : "evolution-data-server", + "cleanup" : [ + "/lib/cmake", + "/lib/evolution-data-server/*-backends", + "/libexec", + "/share/dbus-1/services" + ], + "config-opts" : [ + "-DENABLE_GTK=OFF", + "-DENABLE_GOOGLE_AUTH=OFF", + "-DENABLE_UOA=OFF", + "-DENABLE_GOOGLE=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DWITH_OPENLDAP=OFF", + "-DWITH_LIBDB=OFF", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_INSTALLED_TESTS=OFF", + "-DENABLE_GTK_DOC=OFF", + "-DENABLE_EXAMPLES=OFF", + "-DENABLE_VALA_BINDINGS=ON", + "-DENABLE_INTROSPECTION=ON", + "-DENABLE_CANBERRA=OFF" + ], + "buildsystem" : "cmake-ninja", + "sources" : [ + { + "type" : "git", + "url": "https://gitlab.gnome.org/GNOME/evolution-data-server.git" + } + ] + }, + { + "name" : "folks", + "buildsystem": "meson", + "cleanup" : [ + "/bin" + ], + "config-opts" : [ + "-Dtelepathy_backend=false", + "-Dofono_backend=false", + "-Dbluez_backend=false" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/folks.git" + } + ] + }, + { + "name" : "librest", + "sources" : [ + { + "type" : "archive", + "url" : "https://gitlab.gnome.org/GNOME/librest/-/archive/0.8.1/librest-0.8.1.tar.gz", + "sha256" : "2bdd1be07a9150b1c6ceea6e01dedf2efcff564381cae0cd6c7330403efe59d7" + } + ] + }, + { + "name": "cogl", + "config-opts": [ + "--disable-cogl-gst", + "--enable-xlib-egl-platform", + "--enable-wayland-egl-platform" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/cogl/1.22/cogl-1.22.8.tar.xz", + "sha256": "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759" + } + ] + }, + { + "name": "clutter", + "config-opts": [ + "--enable-egl-backend", + "--enable-wayland-backend" + ], + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/clutter/1.26/clutter-1.26.4.tar.xz", + "sha256": "8b48fac159843f556d0a6be3dbfc6b083fc6d9c58a20a49a6b4919ab4263c4e6" + } + ] + }, + { + "name": "clutter-gtk", + "sources": [ + { + "type": "archive", + "url": "https://download.gnome.org/sources/clutter-gtk/1.8/clutter-gtk-1.8.4.tar.xz", + "sha256": "521493ec038973c77edcb8bc5eac23eed41645117894aaee7300b2487cb42b06" + } + ] + }, + { + "name" : "libchamplain", + "buildsystem": "meson", + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libchamplain.git" + } + ] + }, + { + "name" : "gnome-maps", + "buildsystem" : "meson", + "builddir" : true, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/gnome-maps.git" + } + ] + } + ] +} diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 00000000..7f374e34 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,64 @@ +af +an +ar +as +bg +bs +ca +ca@valencia +cs +da +de +el +en_GB +eo +es +et +eu +fa +fi +fr +fur +ga +gd +gl +he +hi +hr +hu +id +is +it +ja +kk +kn +ko +lt +lv +mjw +ml +ms +nb +ne +nl +oc +pa +pl +pt +pt_BR +ru +ro +sk +sl +sr +sr@latin +sv +ta +te +tg +tr +uk +vi +zh_CN +zh_HK +zh_TW diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 00000000..dd6119c4 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,64 @@ +# List of source files containing translatable strings. +# Please keep this file sorted alphabetically. +data/org.gnome.Maps.appdata.xml.in +data/org.gnome.Maps.desktop.in +data/org.gnome.Maps.gschema.xml +data/ui/check-in-dialog.ui +data/ui/context-menu.ui +data/ui/export-view-dialog.ui +data/ui/headerbar-left.ui +data/ui/headerbar-right.ui +data/ui/help-overlay.ui +data/ui/layers-popover.ui +data/ui/location-service-dialog.ui +data/ui/main-window.ui +data/ui/osm-account-dialog.ui +data/ui/osm-edit-address.ui +data/ui/osm-edit-dialog.ui +data/ui/place-popover.ui +data/ui/route-entry.ui +data/ui/send-to-dialog.ui +data/ui/shape-layer-file-chooser.ui +data/ui/shape-layer-row.ui +data/ui/sidebar.ui +data/ui/social-place-more-results-row.ui +data/ui/transit-leg-row.ui +data/ui/transit-options-panel.ui +data/ui/place-bar.ui +data/ui/place-buttons.ui +data/ui/place-view.ui +data/ui/zoom-in-dialog.ui +lib/maps-file-tile-source.c +lib/maps-osm.c +src/application.js +src/checkInDialog.js +src/checkIn.js +src/contextMenu.js +src/exportViewDialog.js +src/geoclue.js +src/geoJSONSource.js +src/graphHopper.js +src/layersPopover.js +src/mainWindow.js +src/mapView.js +src/osmConnection.js +src/osmEditDialog.js +src/photonParser.js +src/placeEntry.js +src/placeView.js +src/place.js +src/printLayout.js +src/printOperation.js +src/routeEntry.js +src/sendToDialog.js +src/shapeLayer.js +src/sidebar.js +src/transit.js +src/transitLegRow.js +src/transitMoreRow.js +src/transitOptionsPanel.js +src/transitPlan.js +src/translations.js +src/utils.js +src/transitplugins/goMetro.js +src/transitplugins/openTripPlanner.js diff --git a/po/POTFILES.skip b/po/POTFILES.skip new file mode 100644 index 00000000..4427cad6 --- /dev/null +++ b/po/POTFILES.skip @@ -0,0 +1,2 @@ +data/gnome-maps.appdata.xml +data/org.gnome.Maps.desktop diff --git a/po/af.po b/po/af.po new file mode 100644 index 00000000..fee368e4 --- /dev/null +++ b/po/af.po @@ -0,0 +1,182 @@ +# Afrikaans translation for gnome-maps. +# This file is distributed under the same license as the gnome-maps package. +# Copyright (C) +# Dawid Loubser , 2013. +# F Wolff , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-09 20:30+0000\n" +"PO-Revision-Date: 2013-10-13 23:29+0200\n" +"Last-Translator: F Wolff \n" +"Language-Team: translate-discuss-af@lists.sourceforge.net\n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Padkaart gee vinnige toegang tot padkaarte van regoor die wêreld. Dit laat " +"mens toe om vinnig 'n gewenste plek te vind deur te soek vir 'n stad of 'n " +"straat, of om 'n ontmoetingspunt op te spoor." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +#, fuzzy +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • Soek vir 'n land, streek, stad of straat.
  • Soek vir spesifieke " +"tipe liggings, soos “Restaurante in Melville, Johannesburg” of “Hotelle in " +"Mosselbaai”
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Padkaart gebruik die gesamentlike OpenStreetMap-databasis, geskep deur " +"honderde duisende mense regoor die wêreld." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "Padkaart" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "'n Eenvoudige padkaart-toepassing" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;Padkaart;Kaart;Ligging;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Venstergrootte" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Venstergrootte (wydte en hoogte)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Vensterposisie" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Vensterposisie (X en Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Venster-maksimeringstoestand" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Toestand van die venster in terme van maksimering" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "Laas bekende ligging en akkuraatheid" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Laas bekende ligging (breedte- en lengtegraad in grade) en akkuraatheid (in " +"meter)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "Beskrywing van laas bekende ligging" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "Beskrywing van laas bekende ligging van gebruiker." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "Maksimum aantal soekresultate" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum aantal soekresultate van geokoderingsoektog." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "Gebruiker het laas bekende ligging gestel" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "Of die gebruiker self die laas bekende ligging gestel het." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "Aangaande" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "Sluit af" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Wat is hier?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "Ek is hier!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "Dawid Loubser" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "'n Padkaart-toepassing vir GNOME" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "Straat" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "Satelliet" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "Presies" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Ligging-akkuraatheid: %s" diff --git a/po/an.po b/po/an.po new file mode 100644 index 00000000..34fdb264 --- /dev/null +++ b/po/an.po @@ -0,0 +1,685 @@ +# Aragonese translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jorge Pérez Pérez , 2014 +# Daniel Martinez , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-05-03 19:08+0000\n" +"PO-Revision-Date: 2015-05-03 22:30+0200\n" +"Last-Translator: Daniel \n" +"Language-Team: Aragonés \n" +"Language: an\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 2.5.1.1\n" +"X-POOTLE-MTIME: 1430688604.000000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas te ofreix un acceso rapido a mapas de tot o mundo. Te permite trobar " +"puestos rapidament mirando por ciudat u por carrera, u mirar un puesto ta " +"trobar-te con un amigo." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Os mapas fan servir a base de datos colaborativa OpenStreetMap, feita por " +"cients de mils de personas de tot o mundo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Tamién puede buscar por tipos d'ubicacions especificos como “Tabiernas amán " +"d'o Paseyo d'a Independencia, Zaragoza”u “Hotels amán d'a Plaza d'o Torico, " +"Teruel”." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:366 +msgid "Maps" +msgstr "Mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicación simpla de mapas" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Mapas;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Grandaria d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Grandaria d'a finestra (amplaria y altura )" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Posición d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window position (X and Y)." +msgstr "Posición d'a finestra (X y Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Finestra maximizada" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window maximization state" +msgstr "Estau de maximización d'a finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "Numero maximo de resultaus de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Numero maximo de resultaus de búsca ta buscas por cheocodigo." + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "Numero de puestos recients que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "Numero de puestos visitaus recientment que almagazenar" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Facebook usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidat d'o rechistro de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zaguera configuración de privacidat de rechistro de Foursquare usada. As " +"valors posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter d'o rechistro en Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir o rechistro como un mensache nuevo en a " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Arredol de" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Salir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilidat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Publicar en Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Publicar en Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cancelar" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Rechistrar" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Totz" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amigos d'amigos" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Solament amigos" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Solament yo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Público" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidores" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privau" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Qué bi ha aquí?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activar os servicios d'ubicación ta trobar a suya posición" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Configuración d'a ubicación" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Trigar o tipo de mapa" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Commutar o planificador de rotas" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Commutar favoritos" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Mapas ye desconnectau" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Mapas ameneste una connexión a Internet activa ta funcionar correctament, " +"pero no s'ha trobau garra." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Comprebe a configuración d'a suya connexión y d'o suyo proxy." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Adhibir a la rota nueva" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Ubrir con unatra aplicación" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Rechistrar-se aquí" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Prete Intro ta buscar" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Ubrir ubicación" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Ubrir" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Rota buscada por GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Amostrar más resultaus" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:207 +msgid "Current location" +msgstr "Ubicación actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "No se puede trobar \"%s\" en o ret social" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede trobar un puesto adequau ta rechistrar-se en ista ubicación" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credencials han caducau. Ubra as Cuentas en linia ta encetar sesión y " +"activar ista cuenta." + +#: ../src/checkIn.js:153 ../src/checkInDialog.js:289 +msgid "An error has occurred" +msgstr "Ha ocurriu una error" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Cargando" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Seleccionar un puesto" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Facebook. Trigue " +"un d'a lista." + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede trobar o puesto con o qual rechistrar-se en Foursquare. " +"Trigue un d'a lista." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "Rechistrar-se en %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensache opcional ta rechistrar-se en %s." + +#: ../src/mainWindow.js:314 +msgid "Failed to connect to location service" +msgstr "Falló en connectar a o servicio d'ubicación" + +#: ../src/mainWindow.js:319 +msgid "Position not found" +msgstr "Posición no trobada" + +#: ../src/mainWindow.js:364 +msgid "translator-credits" +msgstr "" +"Jorge Pérez Pérez , 2014\n" +"Daniel Martínez Cucalón " + +#: ../src/mainWindow.js:367 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas ta GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:120 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:127 +msgid "limited" +msgstr "limitau" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:133 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:140 +msgid "designated" +msgstr "designau" + +#: ../src/routeService.js:69 +msgid "No route found." +msgstr "No s'ha trobau a rota." + +#: ../src/routeService.js:76 +msgid "Route request failed." +msgstr "Falló en solicitar a rota." + +#: ../src/routeService.js:147 +msgid "Start!" +msgstr "Empecipiar" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Codigo postal: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Codigo d'o país: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Población: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Horario d'obridura: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Acceso ta siellas de ruedas: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:197 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimau: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "tot o día" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "dende l'amaneixer dica a mesa d'o sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "festivos" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "vacancias escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "zarrau" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Desconoixiu" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:259 +msgid "Exact" +msgstr "Exacta" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f pietz" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zaguera ubicación conoixida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zaguera ubicación conoixida (latitut y longaria en graus) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location" +#~ msgstr "Descripción d'a zaguera ubicación conoixida" + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción d'a zaguera ubicación conoixida de l'usuario." + +#~ msgid "User set last known location" +#~ msgstr "Zaguera ubicación conoixida establida por l'usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si a zaguera ubicación conoixida la establió l'usuario manualment." + +#~ msgid "I’m here!" +#~ msgstr "Soi aquí!" + +#~ msgid "Street" +#~ msgstr "Carrera" + +#~ msgid "Satellite" +#~ msgstr "Satelite" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 00000000..900fcd71 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,1620 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Khaled Hosny , 2013, 2014, 2017. +# Safa Alfulaij , 2016, ٢٠١٦. +# Ibrahim Saed , 2016. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-09-29 17:50+0200\n" +"PO-Revision-Date: 2017-09-29 16:01+0200\n" +"Last-Translator: Khaled Hosny \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Virtaal 1.0.0-beta1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "خرائط جنوم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "جِد الأماكن حول العالم" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"يمكّنك تطبيق الخرائط من مطالعة خرائط العالم أجمع، فهو يمكّنك من العثور على ما " +"تريد بالبحث عن مدينة أو اسم شارع أو مكان ستجمتع فيه مع صديقك." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"يستخدم تطبيق الخراط قاعدة بيانات «خريطة الشارع المفتوحة» التعاونية، والتي " +"شارك فيها آلاف الأشخاص حول العالم." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"يمكن أيضا البحث عن أماكن محدّدة النوع، مثل ”Pubs near Main Street, Boston\" " +"أو \"Hotels near Alexanderplatz, Berlin“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "الخرائط" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "تطبيق خرائط بسيط" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "خرائط;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "يسمح بإظهار مكانك على الخريطة." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "آخر مكان معروض" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "إحداثيات آخر مكان عُرض." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "حجم النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "حجم النافذة (العرض والارتفاع)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "موضع النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "موضع النافذة (س و ص)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "النافذة مُكبّرة" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "حالة تكبير النافذة" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "أقصى عدد لنتائج البحث" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "أقصى عدد لنتائج البحث من بحث الرمز الجغرافي." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "عدد أحدث الأماكن لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "عدد الأماكن التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "عدد أحدث المسارات لتخزينها" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "عدد المسارات التي زيرت حديثا لتخزينها." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "إعداد خصوصية الدخول إلى «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فيسبوك» قد استُخدم. القيم الممكنة هي: EVERYONE أو " +"FRIENDS_OF_FRIENDS أو ALL_FRIENDS أو SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "إعداد «فورسكوير» لخصوصية الدخول" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"آخر إعداد خصوصية الدخول ل‍«فورسكوير» قد استُخدم. القيم الممكنة هي: public أو " +"followers أو private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كمنشور في حساب فيسبوك المرتبط مع حساب " +"«فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "نشر «فورسكوير» للدخول على «فيسبوك»" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"يشير إذا كان على «فورسكوير» نشر الدخول كتغريدة في حساب «فيسبوك» المرتبط مع " +"حساب «فورسكوير»." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "اسم مستخدم أو عنوان البريد الإلكترونيّ في «خريطة الشارع المفتوحة»" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "يشير في حال كان المستخدم قد ولج لتحرير بيانات «خريطة الشارع المفتوحة»." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "أعدّ حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "اختصارات لو_حة المفاتيح" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "عنْ" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "الظهور" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "انشر على «فيسبوك»" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "أل_غِ" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "اد_خل" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "للجميع" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "لأصدقاء أصدقائي" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "لأصدقائي فقط" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "لي فقط" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "للعامة" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "للمتابعين" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "خاص" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ماذا يوجد هنا؟" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "انسخ المكان" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "صدّر كصورة" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "صدّر العرض" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_صدّر" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ضمّن المسارات والعلامات" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "عام" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "اعرض الاختصارات" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "ابحث" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "اطبع المسار" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "أنهِ" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "منظور الخريطة" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "قرّب" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بعّد" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "اعرض/أخفِ المقياس" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "انتقل إلى منظور الشارع" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "انتقل إلى منظور جوي" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "افتح طبقة الشكل" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "حمّل طبقة خريطة" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "فعّل خدمات التموضع لتجد مكانك" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "إعدادات التموضع" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "اذهب إلى المكان الحالي" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "اختر نوع الخريطة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "اعرض/أخفِ مخطّط المسارات" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "اعرض/أخفِ المفضّلة" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "اطبع المسار" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "تطبيق الخرائط يعمل بلا اتصال!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"يحتاج تطبيق الخرائط إلى اتصال إنترنت نشط ليعمل كما ينبغي، لكنه لم يعثر على " +"واحد." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "افحص إعدادات اتصالك ووكيلك." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "أضفه إلى مسار جديد" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "افتح بتطبيق آخر" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "علّمه كمفضّل" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "ادخل هنا" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "حساب «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "سجّل لتحرير الخرائط" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"ساهم في تحسين الخريطة باستخدام\n" +"حساب «خريطة الشارع المفتوحة»." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "البريد الإلكتروني" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "كلمة السر" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "لِج" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "أليس لديك حساب؟" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"آسفون، لم يعمل هذا. من فضلك جرّب مجددا، أو زُر\n" +"«خريطة الشارع " +"المفتوحة» لتصفير كلمة السر." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "رمز التأكيد لا يتطابق، من فضلك جرّب مجددا." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "أدخل رمز التأكيد الظاهر أعلاه" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "أكّد" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "أنت والج" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "حسابك في «خريطة الشارع المفتوحة» نشط." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "اخرج" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "الشوارع" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "رقم المنزل" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "الرقم البريدي" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "المدينة" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "النوع" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "بلا" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "أضف حقلا" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "تعليق" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ستظهر التعديلات على الخريطة في كل الخرائط التي تستخدم بيانات «خريطة الشارع " +"المفتوحة»." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "المستخدمة حديثًا" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "ألغِ" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "التالي" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "حرر على «خريطة الشارع المفتوحة»" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "اعرض معلومات أكثر" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "اضغط Enter للبحث" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "لا نتائج" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "اسحب لتغيير المسار" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "افتح المكان" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "ا_فتح" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "افتح طبقة" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "اعرض/أخفِ" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "البحث عن المسار يدعمه GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "البحث عن المسار يدعمه OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسارات وسائل النقل العامة توفرها جنوم بناء على\n" +"بيانات المواعيد من شركات و هيئات النقل.\n" +"ليست الشركات و الهيئات مسئولة عن النتائج المعروضة.\n" +"لا تضمن جنوم صحة المسارات و لا المواعيد المعروضة.\n" +"الأسماء تعتبر علامات تجارية مسجلة حسب القواعد." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "اعرض نتائج أكثر" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "أخف الخطوات البينية و المعلومات" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "اعرض الخطوات البينية و المعلومات" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "غادر الآن" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "غادر في" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "تصل في" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "اعرض" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "حافلات" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ترام" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "قطارات" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "قطارات الأنفاق" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "عبّارات" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "المكان الحالي" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "الدقة: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "قرّب لتضيف مكانا!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "حسنًا" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "فشل إيجاد بنية قطع خرائط في الدليل" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "فشل تحليل ملف XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "الصفات المطلوبة ناقصة" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "تعذر إيجاد عنصر OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "مسار يشير إلى دليل محليّ لبنية قطع خرائط" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "اختر حسابا" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "يحمّل" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "اختر مكانا" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فيسبوك». من فضلك اختر واحدا " +"من القائمة." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"تعذّر على تطبيق الخرائط إيجاد مكان للدخول إليه ب‍«فورسكوير». من فضلك اختر " +"واحدا من القائمة." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "ادخل إلى %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "اكتب رسالة اختيارية للدخول إلى %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "حدث خطأ ما" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "تعذّر إيجاد ”%s“ في الخدمة الاجتماعية" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "تعذّر إيجاد مكان مناسب للدخول إلى هذا المكان" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"انتهت صلاحية معلومات الولوج، من فضلك افتح الحساب الشبكية لتلج وتفعّل هذا " +"الحساب" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "المسار من هنا" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "أضف مقصدا" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "المسار إلى هنا" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "لم أجد شيئا هنا!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"أُضيف المكان إلى الخريطة، لكن لاحظ أنه قد يأخذ وقتا ليظهر عليها وفي نتائج " +"البحث." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "نظام الملفات للقراءة فقط" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "لا صلاحيات لك للحفظ هناك" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "الدليل غير موجود" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "لم يُحدّد اسم ملف" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "تعذّر تصدير العرض" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "إحداثية غير صالحة" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "خطأ في التحليل" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "الهندسة مجهولة" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "فشل طلب المسار." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "لا مسار." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "ابدأ!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "كل ملفات الطبقات" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "فشل الاتصال بخدمة التموضع" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"فريق عربآيز للترجمة http://www.arabeyes.org:\n" +"خالد حسني\t\n" +"صفا الفليج\t" + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "تطبيق خرائط لجنوم" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "نوع الملفات غير مدعوم" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "فشل فتح الطبقة" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "فشل فتح العنوان الجغرافي" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "لم يُعثر على بدائل سابقة." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "لم يُعثر على بدائل لاحقة." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "لم يُعثر على بيانات المواعيد لهذا المسار." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "اسم المستخدم أو كلمة السر خاطئة" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "نجح" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "طلب سيّئ" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "الكائن غير موجود" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "ثمة تضارب، هناك من عدّل الكائن لتوّه" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "حُذف الكائن" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "يشير الطريق أو العلاقة إلى ابن غير موجود" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "الاسم" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "الاسم الرسمي. غالبا ما يكون على العلامات." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "العنوان" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "موقع الوِب" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"موقع الوِب الرسمي. حاول استخدام أبسط صيغة للعنوان مثل http://example.com بدل " +"http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "الهاتف" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"رقم الهاتف. استخدم الصيغة العالمية، مبتدءًا الرقم بعلامة +. انتبه لحقوق " +"الخصوصية في الدول، خصوصا تلك الخاصة بأرقام الهواتف الخاصة." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "ويكيبيديا" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"الصيغة المُستخدمة هنا تتضمن رمز اللغة وعنوان المقال مثل ”ar:عنوان المقالة“." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "ساعات العمل" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "طالع الوصلة في اللصيقة لتجد مساعدة حول الصيغة." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "عدد السكان" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "الارتفاع الرأسي" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ارتفاع نقطة (عن مستوى سطح البحر) بالأمتار." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "دخول الكراسي ذات العجلات" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "مسموح" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "ممنوع" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "محدود" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "محدّد" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "الوصول إلى الإنترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "واي-فاي" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "سلكي" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "طرفيّة" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "خدمة" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "الدين" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "إحيائية" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "بهائية" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "بوذية" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "كاو دائية" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "مسيحية" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "كونفشيوسية" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "هندوسية" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "جاينية" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "يهودية" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "إسلام" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "ديانات متعددة" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "وثنية" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "باستافارية" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "سينتولوجيا" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "شنتو" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "سيخية" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "روحانية" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "طاوية" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "توحيدية كونية" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "فودو" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "يزدية" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "زرادشتية" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "حمامات" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "ملاحظة" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"معلومات تعلم الخرائطيين الآخرين عن معلومات غير بديهية عن عنصر ما، أو غرض " +"المؤلف عند إنشائه، أو ملاحظات تساعد في تحسينه." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "أضف إلى «خريطة الشارع المفتوحة»" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "اختر نوعًا" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "تمّ" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "السّكانيّة:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "الارتفاع الرأسي:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "ساعات العمل:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "الوصول إلى الإنترنت:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "الدين:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "حمامات:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "دخول الكراسي ذات العجلات:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "الهاتف:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "فشل تحليل العنوان الجغرافي" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "مسموح" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "محدود" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ممنوع" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "محدّد" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "من %s إلى %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "يحمّل قطع الخرائط للطباعة" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "يمكنك إجهاض الطباعة إن أخذت وقتا طويلا" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "أجهض الطباعة" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "فشل فتح العنوان" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "فشل تحميل الملف" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "الوقت المقدّر: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "تصل إلى %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "تصل" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "ابدأ من %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "ابدأ" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "اعرض تعليمات المشي" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "أخفِ تعليمات المشي" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "امشِ %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "حمّل البدائل السابقة" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "حمّل البدائل اللاحقة" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %B" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d دقيقة" +msgstr[1] "دقيقة" +msgstr[2] "دقيقتين" +msgstr[3] "%d دقائق" +msgstr[4] "%d دقيقة" +msgstr[5] "%d دقيقة" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d ساعة" +msgstr[1] "ساعة" +msgstr[2] "ساعتين" +msgstr[3] "%d ساعات" +msgstr[4] "%d ساعة" +msgstr[5] "%d ساعة" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d ساعة" +msgstr[1] "%d:%02d ساعة" +msgstr[2] "%d:%02d ساعة" +msgstr[3] "%d:%02d ساعة" +msgstr[4] "%d:%02d ساعة" +msgstr[5] "%d:%02d ساعة" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "على مدار الساعة" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "من شروق الشمس حتى غروبها" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "يوميا" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "العطل العامة" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "العطل المدرسية" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "ليس مفتوحا" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "سلكي" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "طرفيّة" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "خدمة" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "غير معروف" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "بالضبط" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f سا" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f دق" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f ثا" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s كم" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s ميل" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s قدم" + +#~ msgid "%f km" +#~ msgstr "%f كم" + +#~ msgid "%f m" +#~ msgstr "%f م" + +#~ msgid "%f mi" +#~ msgstr "%f ميل" + +#~ msgid "%f ft" +#~ msgstr "%f قدم" + +#~ msgid "Edit Location" +#~ msgstr "حرّر المكان" + +#~ msgid "Position not found" +#~ msgstr "الموضع غير موجود" + +#~ msgid "Country code: %s" +#~ msgstr "رمز البلد: %s" + +#~ msgid "Population: %s" +#~ msgstr "عدد السكان: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "دخول الكراسي ذات العجلات: %s" + +#~ msgid "I’m here!" +#~ msgstr "أنا هنا" + +#~ msgid "Satellite" +#~ msgstr "قمر صناعي" + +#~ msgid " km2" +#~ msgstr " كم٢" + +#~ msgid " km²" +#~ msgstr " كم٢" diff --git a/po/as.po b/po/as.po new file mode 100644 index 00000000..1cf79918 --- /dev/null +++ b/po/as.po @@ -0,0 +1,260 @@ +# Assamese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Nilamdyuti Goswami , 2013, 2014. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-09-02 15:46+0000\n" +"PO-Revision-Date: 2014-09-02 21:54+0530\n" +"Last-Translator: Nilamdyuti Goswami \n" +"Language-Team: Assamese \n" +"Language: as\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"মানচিত্ৰই আপোনাক বিশ্বৰ সকলো মানচিত্ৰলৈ এটা দ্ৰুত অভিগম প্ৰদান কৰে। ই আপোনাক " +"এটা " +"নগৰ অথবা বাটৰ বাবে সন্ধান কৰি আপুনি বিচৰা স্থান দ্ৰুতভাৱে সন্ধান কৰাৰ অনুমতি " +"দিয়ে, " +"অথবা এজন বন্ধুক লগ ধৰিবলৈ এটা স্থান অৱস্থিত কৰাৰ সুবিধা দিয়ে।" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"মানচিত্ৰই সংযোগি OpenStreetMap ডাটাবেইচ ব্যৱহাৰ কৰে, যাক বিশ্বৰ বিভিন্ন " +"প্ৰান্তৰ " +"লোকে সৃষ্টি কৰিছে।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"আপুনি বিশেষ ধৰণৰ স্থান, যেনে “Pubs near Main Street, Boston“ অথবা “Hotels " +"near " +"Alexanderplatz, Berlin“ ৰ বাবে সন্ধান কৰিব পাৰিব।" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:304 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "মানচিত্ৰ" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "এটা সাধাৰণ মানচিত্ৰ এপ্লিকেচন" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "মানচিত্ৰ;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "উইন্ডোৰ আকাৰ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "উইন্ডোৰ আকাৰ (প্ৰস্থ আৰু উচ্চতা)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "উইন্ডোৰ অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "উইন্ডোৰ অৱস্থান (X আৰু Y)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "উইন্ডো সৰ্বাধিক আকাৰলৈ বৃদ্ধি কৰা হৈছে" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "উইন্ডোৰ সৰ্বাধিক আকাৰ অৱস্থা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থান আৰু সঠিকতা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান (অক্ষাংশ আৰু দ্ৰাঘিমা ডিগ্ৰিসমূহত) আৰু সঠিকতা (মিটাৰত)।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "ব্যৱহাৰকাৰীৰ সৰ্বশেষ জ্ঞাত অৱস্থানৰ বিৱৰণ।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "সন্ধান ফলাফলসমূহৰ সৰ্বাধিক সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "geocode সন্ধানৰ পৰা সন্ধান ফলাফলৰ সৰ্বাধিক সংখ্যা।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "ব্যৱহাৰকাৰী দ্বাৰা সংহতি কৰা সৰ্বশেষ জ্ঞাত অৱস্থান" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "" +"সৰ্বশেষ জ্ঞাত অৱস্থান ব্যৱহাৰকাৰী দ্বাৰা হস্তচালিতভাৱে সংহতি কৰা হৈছিল নে।" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়া স্থানবোৰৰ সংখ্যা" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "সংৰক্ষণ কৰিবলৈ শেহতীয়াভাৱে ভ্ৰমণ কৰা স্থানবোৰৰ সংখ্যা।" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "বিষয়ে" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "প্ৰস্থান কৰক" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ইয়াত কি আছে?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "মই ইয়াত আছো!" + +#: ../src/mainWindow.js:302 +msgid "translator-credits" +msgstr "নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)" + +#: ../src/mainWindow.js:305 +msgid "A map application for GNOME" +msgstr "GNOME ৰ বাবে এটা মানচিত্ৰ এপ্লিকেচন" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "বৰ্তমান অৱস্থানলৈ যাওক" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "মানচিত্ৰৰ ধৰণ বাছক" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "পথ পৰিকল্পক টগল কৰক" + +#: ../src/routeService.js:73 +msgid "No route found." +msgstr "কোনো পথ পোৱা নগল।" + +#: ../src/routeService.js:80 +msgid "Route request failed." +msgstr "পথৰ অনুৰোধ ব্যৰ্থ হল।" + +#: ../src/routeService.js:151 +msgid "Start!" +msgstr "আৰম্ভ কৰক!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "দেশৰ ক'ড: %s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "পস্টেল ক'ড: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:190 +#, javascript-format +msgid "Estimated time: %s" +msgstr "আনুমানিক সময়: %s" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "বৰ্তমান অৱস্থান" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "সঠিকতা: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "অজ্ঞাত" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "অবিকল" + +#: ../src/utils.js:179 +#, javascript-format +msgid "%f km²" +msgstr "%f km²" + +#: ../src/utils.js:276 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:278 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:288 +#, javascript-format +#| msgid "%f km²" +msgid "%f km" +msgstr "%f km" + +#: ../src/utils.js:290 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#~ msgid "To" +#~ msgstr "লৈ" + +#~ msgid "From" +#~ msgstr "পৰা" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Street" +#~ msgstr "বাট" + +#~ msgid "Satellite" +#~ msgstr "চেটেলাইট" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 00000000..6aa8fe7a --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1921 @@ +# Bulgarian translation for gnome-maps. +# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2021 Alexander Shopov. +# This file is distributed under the same license as the gnome-maps package. +# Ivailo Panamski , 2016. +# Alexander Shopov , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-26 06:01+0000\n" +"PO-Revision-Date: 2021-10-01 20:05+0200\n" +"Last-Translator: \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Търсене на места по света" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"„Картите“ ви дават бърз достъп до места и карти по целия свят. Те ви " +"позволяват бързо да намерите мястото, което търсите, независимо дали е град, " +"улица или място на уречена срещал." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Картите използват базите от данни на OpenStreetMap. Те са събрани от стотици " +"хиляди хора от целия свят." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "Проектът GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Програма за преглед на карти" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "maps;карти;глобус;атлас;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Местоположението ви да се показва на картата." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последно прегледано местоположение" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координати на последно прегледаното местоположение." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "мащаб" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Мащаб" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Вид карта" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Вид карта за показване (улична, аерофотографска, др.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Размери на прозореца" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Размери (широчина и дължина)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положение на прозореца" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положение на прозореца (X и Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Максимизиран прозорец" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Дали прозорецът на програмата е максимизиран" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимален брой на резултатите от търсене" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимален брой на резултати от търсенето по геокод." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Брой на последните места за съхраняване" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Брой на последно посетени места за съхраняване." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Брой на последни маршрути за съхраняване" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Брой на последно посетените маршрути за съхраняване." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Настройки за лични данни при публикуване във Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последно използвани настройки за публикуване във Foursquare. Възможните " +"стойности са: „public“ (публично), „followers“ (до последователите) или " +"„private“ (частно)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Публикуване във Facebook на посещение през Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да публикува посещението на някое място през регистрацията " +"към Facebook, свързана с регистрацията във Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Публикуване в Twitter на посещение през Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Дали Foursquare да публикува посещението на някое място през регистрацията " +"към Twitter, свързана с регистрацията във Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Потребителско име или е-поща за OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Дали потребителят е влязъл, за да променя информация в OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Последно ползван вид транспорт за маршрут" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Нощен режим" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Дали програмата е в нощен режим" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Хибридни фрагменти от аерофотография" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Дали аерофотографските фрагменти да ползват смесен стил (с етикети)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Видимост" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Публикуване във Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Публикуване в Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Отказ" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Обявяване на посещение" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Публично" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Последователи" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Частно" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут от тук" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Добавяне на междинна цел" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут до тук" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Какво има тук?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копиране на местоположението" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Добавяне към OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Изнасяне на изглед" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Изнасяне" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Включване на маршрут и маркери" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Текущо местоположение" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Избиране на вид карта" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "По-дребен мащаб" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "По-едър мащаб" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Отпечатване на маршрут" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Включване на любими" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Общи" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показване на клавишните комбинации" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Търсене" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включване на планиране на маршрут" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Отпечатване на маршрут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Спиране на програмата" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Отваряне на основното меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Изглед карти" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "По-едър мащаб" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "По-дребен мащаб" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Превключване на ска̀лата" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Към текущото местоположение" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Към уличен изглед" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Към въздушен изглед" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Отваряна на слой с очертания" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Етикети" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Отваряна на слой с очертания…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Включване на услугата за намиране на местоположението ви" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Отказ" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Настройки на местоположението" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Нощен режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Създаване на регистрация в OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Изнасяне като изображение" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Относно „Карти“" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Отваряне на основното меню" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Няма връзка с Интернет!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Картите се нуждаят от работеща връзка с Интернет, за да функционират " +"правилно, но такава няма." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Проверка на връзката и сървъра-посредник." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Регистрация в OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Впишете се, за да редактирате картите" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогнете да подобрим картите, като\n" +"използвате регистрация в OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Е-поща" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Парола" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Създаване на регистрация" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Вписване" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Това не сработи. Опитайте отново, или посетете\n" +"OpenStreetMap, за да промените паролата си." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Кодът за потвърждение не съвпада, опитайте отново." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Въведете кода за потвърждение" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Потвърждаване" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Вписани сте" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Регистрацията ви в OpenStreetMap е активна." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Изход" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "№" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Пощенски код" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Град" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Вид" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Няма" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Добавяне на поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Промѐните ще се виждат на всички карти, ползващи данни от\n" +"OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Скоро ползвани" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Редактиране в OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Следващ" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Няма резултат." + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Възникна грешка" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Сменете последователността с провлачване." + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Отваряне на местоположение" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копиране" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Изпращане до…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Вписване…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Отваряна на слой с очертания" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Отваряне" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Включване на видимост" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Търсене на маршрут с GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Разписанията за обществения транспорт са предоставени от трети лица.\n" +"GNOME не може да гарантира за истинността им, както и за разписанието.\n" +"Някои доставчици на такива услуги не включват всички видове транспорт.\n" +"Напр. националните доставчици може да не включват авиотранспорта, а\n" +"местните — регионалния железопътен транспорт.\n" +"Показваните имена да се считат за регистрирани търговски марки, когато\n" +"това е приложимо." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Намиране на още резултати" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Скриване на междинните спирки и допълнителната информация" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показване на междинните спирки и допълнителната информация" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Тръгване сега" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Тръгване на" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Пристигане на" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Видове" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваи" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Влакове" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Фериботи" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Самолети" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Споделяне на местоположение" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Добавяне към нов маршрут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Направление" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Отбелязване като любимо" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Редактиране в OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Уедряване на мащаба за добавяне на местоположение!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "По-едър мащаб" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Структурата на фрагмента не може да се открие в папка" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Документът не може да бъде анализиран като XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Липсват задължителни атрибути" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Не може да се открие елемент на OpenStreetMap" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Път към локалната папка със структури" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Размер на локалната папка с фрагменти" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Извеждане на версията" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Пренебрегване на свързаността към мрежата" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|АДРЕС]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Избор на регистрация" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Зареждане" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Избор на място" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Мястото не може да бъде намерено в Foursquare. Изберете от списъка." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Обявяване на посещение на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Добавяне на незадължително съобщение при посещаване на „%s“." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "„%s“ не може да се намери в социалната услуга" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "На това местоположение няма какво да се обяви като посетено" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Идентификацията ви е изтекла, отворете „Регистрации в сайтове“, за да се " +"впишете и използвате тази регистрация" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Тук няма нищо!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположението е добавено на картата, може да мине известно време преди да " +"се появи в резултатите от търсене." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта около %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файловата система е само за четене" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Нямате права да записвате тук" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Папката не съществува" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не е зададено име на файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Изгледът не може да бъде изнесен" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Текущо местоположение" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "грешни координати" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "грешка при анализ" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "неизвестна геометрия" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Неуспешна заявка за маршрут." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Не е намерен маршрут." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Старт!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Всички файлове със слоеве" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Грешка при свързването с услуги за местоположение" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Ивайло Панамски <ipanamski@gmail." +"com>\n" +"Александър Шопов <ash@kambanaria.org>\n" +"\n" +"\n" +"Проектът за превод на GNOME има нужда от подкрепа.\n" +"Научете повече за нас на уеб сайта ни.\n" +"Докладвайте за грешки в превода в съответния раздел." + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Карти за GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Авторски права © 2011 – 2021 Red Hat, Inc. и авторите на „Карти за GNOME“" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Картографски данни от %s и сътрудници" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Фрагментите за карти са предоставени от %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Търсенето е предоставено от %s чрез %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Слоят не може да се отвори" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Искате ли да продължите?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Ще отворите файлове с общ размер %s MB. Това може да отнеме време" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Този вид файлове не се поддържат" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Геоадресът не може да бъде отворен" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Грешно потребителско име или парола" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Успех" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Лоша заявка" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Обектът не е намерен" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Възникна проблем, някой друг тъкмо промени обекта" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Обектът беше изтрит" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Пътят или връзката се отнася към несъществуващ обект" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Име" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Официално име. Обикновено то присъства на пътните знаци." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адрес" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Неправилен адрес. Трябва да започва с „http://“ или „https://“." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Официален уеб сайт. Ползвайте основния вариант, напр. „http://example.com“ " +"вместо „http://example.com/index.html“." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Телефонен номер. Ползвайте международния формат — който започва с „+“. " +"Внимавайте с местните разпоредби за лични данни, особено за номерата на " +"личните телефони." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Е-поща" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Неправилен адрес на е-поща. Не включвайте префикса „mailto:“ за пощенски " +"протокол." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Адрес на е-поща за запитвания. Давайте само адреси, които са за публичен " +"достъп." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Уикипедия" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Форматът трябва да включва код на език и заглавие на статия, напр. „bg:" +"Заглавие на статия“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Работно време" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Вижте връзката в етикета за помощ с форма̀та." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Население" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Надморска височина" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Надморска височина на местоположението в метри." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Инвалидни колички" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Не" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Непълно" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Обозначено" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Достъп до Интернет" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Безжичен" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Жичен" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Техни компютри" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Обслужване" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Вземане за вкъщи" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Само" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Религия" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анимизъм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахайство" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Будизъм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодаизъм" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Християнство" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуцианство" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Хиндуизъм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнизъм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Юдаизъм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ислям" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Множество религии" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Паганизъм" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафарианство" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Сциентология" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Шинто" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхизъм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спиритуализъм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Даоизъм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унитариански универсализъм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Езидизъм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризъм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Тоалетни" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Бележка" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Информация за другите картографи за неочевидни аспекти на елемента, " +"причината за създаването му или възможности за подобрения." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавяне в OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Избор на вид" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Място без име" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Геоадресът не може да бъде анализиран" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координати" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Прецизност" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Прецизност: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Тел. номер" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Има вземане за вкъщи" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Без вземане за вкъщи" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Само вземане за вкъщи" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Публичен достъп до Интернет" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Няма достъп до Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Публична безжична мрежа" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Жична връзка до Интернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Има налични компютри" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Има помощ при проблеми с Интернет" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Няма тоалетни" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Налични тоалетни" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Достъп за инвалидни колички" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ограничен достъп за инвалидни колички" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Без достъп за инвалидни колички" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Предназначено за инвалидни колички" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s под морското равнище" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "На морското равнище" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Религия:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Местоположението липсва в OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Неправилни координати в адреса за Интернет" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Този вид адреси не се поддържат" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "От %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Зареждане на фрагментите на картата за печат" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Може да откажете печата, ако това е твърде бавно" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Относно печата" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Добавяне чрез местоположението" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Премахване чрез местоположението" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обратен маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Добавяне на %s към %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Адресът не може да се зареди" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Отваряне с %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "файлът не може да се зареди" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Очаквано време: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Разписанието е предоставено от %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Начало в %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Начало" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Вървене %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Пристигане в %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Пристигане" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показване на инструкциите за ходене пеш" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Скриване на инструкциите за ходене пеш" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Зареждане на варианти по-рано" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Зареждане на варианти по-късно" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Няма варианти по-рано." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Няма други варианти." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Няма разписание по маршрута." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Няма доставчик за маршрута." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s — %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s мин." +msgstr[1] "%s мин." + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s час" +msgstr[1] "%s часа" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s часа" +msgstr[1] "%s:%s часа" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s—%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Денонощно" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "От изгрев до залез" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Всеки ден" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Почивни дни" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Учебни ваканции" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "не е отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Неизвестно" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Точно" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s ч." + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч. %s мин." +msgstr[1] "%s ч. %s мин." + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин." +msgstr[1] "%s мин." + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s сек." +msgstr[1] "%s сек." + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км." + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м." + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s мили" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s фута" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Приставката не поддържа планиране по най-късно пристигане" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Продължете по %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Продължете" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Завийте наляво по %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Завийте наляво" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Завийте леко наляво по %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Завийте леко наляво" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Завийте рязко наляво по %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Завийте рязко наляво" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Завийте надясно по %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Завийте надясно" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Завийте леко надясно по %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Завийте леко надясно" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Завийте рязко надясно по %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Завийте рязко надясно" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Излезте от кръговото от изход %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Излезте от кръговото в посока към %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Влезте в кръговото" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Качете се на асансьор и слезте на %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Качете се на асансьор" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Завийте обратно наляво по %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Завийте обратно наляво" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Завийте обратно надясно по %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Завийте обратно надясно" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 00000000..394c5f37 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,610 @@ +# Bosnian translation for bosnianuniversetranslation +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the bosnianuniversetranslation package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: bosnianuniversetranslation\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-02-26 20:01+0000\n" +"PO-Revision-Date: 2015-03-03 11:19+0100\n" +"Last-Translator: Samir Ribić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.7.4\n" +"X-Launchpad-Export-Date: 2015-02-15 06:20+0000\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama cijelog svijeta.Omogućava vam da brzo " +"nađete mjesto koje tražite , tražeći grad ili ulicu , ili da pronađe mjesto " +"da sretnete priajtelja." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste kolaboraticnu OpenStreetMap bazu podataka, napravljenu od " +"strane stotinu hiljada ljudi širom svijeta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to seje what words you can usi for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak tražiti određene vrste mjesta , kao što su \"pubovi u blizini " +"Main Street, Boston \" ili \"Hoteli u blizini Alexanderplatz u Berlinu\"." + +#. Translators: This is the program nami. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:362 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program karti" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Karte;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Veličina prozora(širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Pozicija prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Pozicija prozora(X i Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Maksimalno uvećan prozor" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Stanje maksimalno uvećanog prozora" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Maksimalan broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalan broj rezultata pretrage od geocode pretrage." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Broj posljednjih mjesta za pohranu" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za pohranu." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Facebook. " +"Moguće vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti prilikom prijave na Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti prilikom prijave na Foursquare. " +"Moguće vrijednosti su: javni, sljedbenici ili privatne." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao post na Facebook račun " +"koji je povezan s Foursquare računa." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitiranja prilikom prijave na Twitter" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Pokazuje li Foursquare treba emitirati na prijavu kao tweet na Twitter račun " +"koji je povezan s Foursquare računom--" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Odustani" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Prijava" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svi" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo meni" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je ovdje?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite na lokaciji usluge za pronalaženje lokacija" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Postavke lokacija" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Izaberi tip mape" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Prebaci planer" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Preklopi omiljene" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Karte su offline!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Karte trebaju aktivnu internetsku vezu za ispravno funkcioniranje, ali nije " +"moguće naći ." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Provjerite Vašu konekcijju i proxy postavke." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Otvori sa drugom aplikacijom" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Označi kao omiljeni" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Prijavi se ovdje" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "pritisni Enter za pretragu" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "Ot_vori" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Put nije nađen." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikaži još rezultata" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Trenutna lokacija" + +#. To translators: %s can bje "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#. Translators: %s is the place nami that user wanted to check-in */ +#: ../src/checkIn.js:136 +msgid "Cannot find \"%s\" in the social service" +msgstr "Ne mogu naći \"%s\" u socijalnoj usluzi" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu naći pogodno mjesto za prijavu na ovoj lokaciji" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akreditivi su istekli, molim otvorite mrežne naloge da se prijavite i " +"ukljčite ovaj nalog" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Došlo je do greške:" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Odaberi nalog" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Učitava se" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Izaberi mjesto" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Facebook. Odaberite ga s liste." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mape ne mogu naći mjesto za prijavu preko Foursquare. Odaberite ga s liste." + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +msgid "Check in to %s" +msgstr "Prijavi na %s" + +#. Translators: %s is the nami of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +msgid "Write an optional message to check in to %s." +msgstr "Napiši opcionu poruku za prijavu na %s." + +#: ../src/mainWindow.js:310 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje na lokacijsku uslugu" + +#: ../src/mainWindow.js:315 +msgid "Position not found" +msgstr "Pozicija nije nađena" + +#: ../src/mainWindow.js:360 +msgid "translator-credits" +msgstr "" +" Hasanic Nadin https://launchpad.net/~nhasanic1\n" +" Merima Cisija https://launchpad.net/~cisijam" + +#: ../src/mainWindow.js:363 +msgid "A map application for GNOME" +msgstr "Program karta za GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can bje accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradijent). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "dizajnirano" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Put nije nađen." + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Zahtjev za put nije uspio." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/placeBubble.js:102 +msgid "Postal code: %s" +msgstr "Poštanski broj: %s" + +#: ../src/placeBubble.js:104 +msgid "Country code: %s" +msgstr "Kod države: %s" + +#: ../src/placeBubble.js:113 +msgid "Population: %s" +msgstr "Stanovništvo: %s" + +#: ../src/placeBubble.js:116 +msgid "Opening hours: %s" +msgstr "Radno vrijeme: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +msgid "Wheelchair access: %s" +msgstr "Pristup za invalidska kolica: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +msgid "Estimated time: %s" +msgstr "Procijenjeno vrijeme : %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "po satu" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "od izlaska do zalaska Sunca" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could bje +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could bje substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can bje rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could bje replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could bje modified by +#. * the translation. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can bje set by the +#. * translation as needed. The order of the arguments can bje rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:355 +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:357 +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:359 +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +msgid "%f mi" +msgstr "%f mi" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +msgid "%f ft" +msgstr "%f ft" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 00000000..93fd1b06 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,2035 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013-2020. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017, 2018. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2020-12-23 09:35+0100\n" +"Last-Translator: Miquel-Àngel Burgos i Fradeja \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.1\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trobeu llocs arreu del món" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes us dona un accés ràpid a mapes d'arreu del món. Us permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per a trobar-vos amb una amistat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creada " +"per centenars de milers de persones d'arreu del món." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "El projecte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicació vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliació" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivell d'ampliació" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipus de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipus de mapa a mostrar (carrer, aeri, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Mida de la finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplada i alçada)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posició de la finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de cerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de cerca en fer-la per geocodi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per a editar les dades " +"d'OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mode fosc" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Si l'aplicació utilitza el mode fosc." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utilitza caselles aèries híbrides" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Si les caselles aèries haurien d'utilitzar l'estil híbrid (amb etiquetes)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Públic" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidors" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Comenceu la ruta des d'aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Afegeix una parada intermèdia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Continueu la ruta fins aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Què hi ha aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Afegeix a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exporta vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporta" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ves a la ubicació actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Allunya" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Commuta els preferits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Surt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ves a la ubicació actual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obre la capa de forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra les etiquetes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Obre la capa de forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per a trobar-ne la vostra" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel·la" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode fosc" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporta com a imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Quant al Mapes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Obre el menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per a funcionar " +"correctament, però no se n'ha trobat cap." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per a editar mapes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correu electrònic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasenya" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreu-vos-hi" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per a restablir la contrasenya." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat a sobre" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Surt de la sessió" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrer" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de carrer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciutat" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Afegeix un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Següent" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per a canviar l'ordre de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Obre ubicació" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Envia a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Crea un compte..." + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Obre la capa de forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Obre" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels\n" +"seus respectius propietaris, quan es pugui aplicar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sortiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sortiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busos" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvies" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Transbordadors" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Comparteix la ubicació" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Afegeix a la ruta nova" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Indicacions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marca com a preferit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplia per a afegir ubicació!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Amplia" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Mida de les caselles pel directori de caselles local" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra la versió del programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora la disponibilitat de la xarxa" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FITXER…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "S'està carregant" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per a registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per a inscriure-us a %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No es pot trobar un lloc adequat per a registrar-vos en aquesta ubicació" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per a registrar-vos-" +"hi i habilitar el compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No s'ha trobat res aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la cerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No teniu permís per a anomenar i desar allí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ubicació actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error d'anàlisi" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de cercar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Comença" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga \n" +"Miquel-Àngel Burgos i Fradeja " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2021 Red Hat, Inc. i els altres autors del Mapes del GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dades del mapa de %s i col·laboradors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Caselles de mapa proporcionades per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Cerca proveïda per %s utilitzant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Voleu continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Esteu a punt d'obrir fitxers amb una mida total de %s MB. Això pot trigar " +"una estona a carregar-se" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Aquest tipus de fitxer no està suportat" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Lloc web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Aquest URL no és vàlid. Assegureu-vos d'incloure-hi http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telèfon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correu electrònic" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Aquesta no és una adreça de correu electrònic vàlida. Assegureu-vos de no " +"incloure el prefix del protocol mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Adreça de correu electrònic de contacte per a consultes. Afegeix només les " +"adreces de correu que s'han d'utilitzar públicament." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Població" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (altura sobre el nivell del mar) d'un punt en metres." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designat" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Accés a Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Amb fil" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servei" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Per a emportar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Només" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religió" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoisme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Lavabos" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per a informar altres creadors de mapes " +"d'informació no òbvia sobre un element, la intenció de l'autor en crear-lo, " +"o pistes per a millorar-lo." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afegeix a l'OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Fet" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Ubicació sense nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenades" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisió" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número de telèfon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ofereix per a emportar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "No ofereix per a emportar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Només ofereix per a emportar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Accés públic a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sense accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi públic" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Accés cablejat a Internet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordinadors disponibles per al seu ús" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistència d'Internet disponible" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sense lavabos disponibles" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Lavabos disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accessible amb cadira de rodes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accessibilitat amb cadira de rodes limitada" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "No accessible amb cadira de rodes" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Dissenyat per a usuaris en cadira de rodes" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s per sota del nivell del mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "A nivell del mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religió:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lloc no trobat a l'OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Les coordenades a l'URL no són vàlides" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "L'URL no és compatible" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per a imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si aquesta tarda massa temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Afegeix a través de la ubicació" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimeix a través de la ubicació" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Afegeix %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Obre amb %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "s'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris proporcionats per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Comença" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arribeu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per aquesta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No s'ha trobat un proveïdor per a aquesta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Tot el dia" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Des de l'alba fins al capvespre" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Tots els dies" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Dies festius" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Aquest connector no permet cercar per l'última arribada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continueu a %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continueu" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gireu a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Gireu a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gireu lleugerament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Gireu lleugerament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gireu pronunciadament a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Gireu pronunciadament a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gireu a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Gireu a la dreta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gireu lleugerament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Gireu lleugerament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gireu pronunciadament a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Gireu pronunciadament a la dreta" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "A la rotonda, agafeu la sortida %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "A la rotonda, agafeu la sortida a %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Agafeu la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Agafeu l'ascensor i sortiu a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Agafeu l'ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Canvieu de sentit cap a l'esquerra a %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Canvieu de sentit cap a l'esquerra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Canvieu de sentit cap a la dreta a %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Canvieu de sentit cap a la dreta" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "També podeu cercar per tipus d'ubicacions en concret, com ara «Bars a " +#~ "prop de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, " +#~ "Berlín»." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Paràmetre de privacitat de registre al Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els " +#~ "valors possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#~ msgid "Everyone" +#~ msgstr "Tothom" + +#~ msgid "Friends of friends" +#~ msgstr "Amics d'amics" + +#~ msgid "Just friends" +#~ msgstr "Només amics" + +#~ msgid "Just me" +#~ msgstr "Només jo" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "El Mapes no poden trobar el lloc on registrar-vos amb Facebook. " +#~ "Seleccioneu-ne un de la llista." + +#~ msgid "Find a Route" +#~ msgstr "Cerca una ruta" + +#~ msgid "Check in here" +#~ msgstr "Registreu-vos aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostra més informació" + +#~ msgid "Population:" +#~ msgstr "Població:" + +#~ msgid "Altitude:" +#~ msgstr "Altitud:" + +#~ msgid "Opening hours:" +#~ msgstr "Hores d'obertura:" + +#~ msgid "Internet access:" +#~ msgstr "Accés a Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Lavabos:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accés amb cadira de rodes:" + +#~ msgid "Phone:" +#~ msgstr "Telèfon:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designat" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "L'URL de l'OpenStreetMap no és vàlid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "amb fil" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servei" + +#~ msgid "Primary menu" +#~ msgstr "Menú primari" diff --git a/po/ca@valencia.po b/po/ca@valencia.po new file mode 100644 index 00000000..3dde2252 --- /dev/null +++ b/po/ca@valencia.po @@ -0,0 +1,1636 @@ +# Catalan translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Gil Forcada , 2013, 2014. +# Josep Sanchez Mesegue , 2013. +# Pere Orga , 2017. +# Jordi Serratosa , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-10-03 16:33+0000\n" +"PO-Revision-Date: 2017-08-01 19:02+0200\n" +"Last-Translator: Xavi Ivars \n" +"Language-Team: Catalan \n" +"Language: ca-valencia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapes del GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Troba llocs arreu del món" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"El Mapes vos dóna un accés ràpid a mapes d'arreu del món. Vos permet trobar " +"ràpidament el lloc que esteu cercant tant si és una ciutat com un carrer, o " +"ubicar un lloc per trobar-vos amb una amistat." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"El Mapes empra la base de dades col·laborativa de l'OpenStreetMap, creat per " +"centenars de milers de persones d'arreu del món." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"També podeu buscar per tipus d'ubicacions en concret, com ara «Bars a prop " +"de la plaça Catalunya, Barcelona» o «Hotels a prop d'Alexanderplatz, Berlín»." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Una aplicació senzilla de mapes" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "mapes;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Permet mostrar la vostra ubicació al mapa." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "Última ubicació vista" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Coordenades de l'última ubicació vista." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Mida de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Mida de la finestra (amplària i alçària)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Posició de la finestra" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Posició de la finestra (x i y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Estat de la finestra maximitzada" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Nombre màxim de resultats de busca" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre màxim de resultats de busca en fer-la per geocodi." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Nombre de llocs recents que s'ha d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Nombre de llocs visitats recentment que s'ha d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Nombre de rutes recents que s'han d'emmagatzemar" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Nombre de rutes visitades recentment que s'han d'emmagatzemar." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Facebook. Els valors " +"possibles són TOTHOM, AMICS D'AMICS, TOTS ELS AMICS o UN MATEIX." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Paràmetre de privacitat de registre al Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Darrer paràmetre de privacitat de registre utilitzat al Foursquare. Els " +"valors possibles són públic, seguidors o privat." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusió al Facebook del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a apunt al compte de " +"Facebook associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusió al Twitter del registre de Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare hauria de difondre el registre com a piulada al compte " +"de Twitter associat al compte de Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'usuari d'OpenStreetMap o correu electrònic" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si l'usuari ha iniciat la sessió per editar les dades d'OpenStreetMap." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "Darrer tipus de transport usat per itineraris" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Configura el compte d'OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Quant a" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Penja al Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Penja al Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Cancel·la" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Registreu-vos" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Tothom" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Amics d'amics" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Només amics" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Només jo" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Públic" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Seguidors" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privat" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Què hi ha ací?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Copia la ubicació" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Exporta com imatge" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Afig a OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Exporta vista" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "_Exporta" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Inclou carreteres i senyals" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra dreceres" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Busca" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimeix ruta" + +# N.T.: Nom de la tecla de sortida +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ix" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualització de mapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Amplia" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Redueix" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Commuta l'escala" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Canvia a la vista de carrer" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Canvia a la vista aèria" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Obri la capa de forma" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Carrega la capa mapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Activeu els serveis d'ubicació per trobar-ne la vostra" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Paràmetres de la ubicació" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Vés a la ubicació actual" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Trieu el tipus de mapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Commuta el planificador de rutes" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Commuta els favorits" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Imprimeix ruta" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "El Mapes està fora de línia!" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"El Mapes necessita una connexió activa a Internet per funcionar " +"correctament, però no se n'ha trobat cap." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Comproveu la connexió i els paràmetres del servidor intermediari." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Afig a la ruta nova" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Obri amb una altra aplicació" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Marca com a favorit" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Registreu-vos ací" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Inicieu la sessió per editar mapes" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudeu a millorar el mapa\n" +"utilitzant un compte d'OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Correu electrònic" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Contrasenya" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Inicieu la sessió" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "No teniu un compte?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"S'ha produït algun error. Torneu-ho a provar, o visiteu\n" +"OpenStreetMap per restablir la contrasenya." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "El codi de verificació no funciona, torneu-ho a provar." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Introduïu el codi de verificació mostrat damunt." + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Verifica" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Sessió iniciada" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "El vostre compte OpenStreetMap està actiu." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Ix de la sessió" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Carrer" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Número de carrer" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Codi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Ciutat" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Tipus" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Cap" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Afig un camp" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Comentari" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Els canvis del mapa seran visibles en tots els\n" +"mapes que utilitzen dades de l'OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Utilitzats recentment" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Següent" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Editeu a l'OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Mostra més informació" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Premeu retorn per buscar" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "No s'ha trobat cap resultat" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Arrossegueu per canviar l'orde de la ruta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Obri la ubicació" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Obri" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Obri la capa" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Commuta els visibles" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Itinerari proporcionat per GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Itinerari proporcionat per OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Els itineraris de ruta del transport públic els proporciona el GNOME\n" +"utilitzant dades d'horaris obtingudes d'empreses o agències de trànsit.\n" +"Les empreses i agències no es fan responsables dels resultats mostrats.\n" +"El GNOME no pot garantir la correctesa dels itineraris i horaris mostrats.\n" +"Els noms i les marques que es mostren s'han de considerar propietat dels " +"seus respectius propietaris, quan es puga aplicar." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Mostra més resultats" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Oculta les parades intermèdies i informació" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Mostra les parades intermèdies i informació" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Eixiu ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Eixiu a" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Arribeu a" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Mostra" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Busos" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Trams" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Trens" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Metro" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Transbordadors" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "Ubicació actual" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Precisió: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Amplia per afegir ubicació!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "D'acord" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" +"S'ha produït una errada en trobar l'estructura de caselles al directori" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "S'ha produït un error en analitzar el document XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "S'han perdut els atributs requerits" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "No s'ha trobat l'element OSM" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Un camí a l'estructura de caselles locals del directori" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Seleccioneu un compte" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "S'està carregant" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Seleccioneu un lloc" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"El Mapes no poden trobar el lloc on registrar-vos amb Facebook. Seleccioneu-" +"ne un de la llista." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Els Mapes no poden trobar el lloc per registrar-vos amb Foursquare. " +"Seleccioneu-ne un de la llista." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Registreu-vos a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriviu un missatge opcional per inscriure-vos a %s." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "S'ha produït un error" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No es pot trobar «%s» al servei social" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "No es pot trobar un lloc adequat per registrar-vos en esta ubicació" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Han caducat les credencials. Obriu els comptes en línia per registrar-vos-hi " +"i habilitar el compte" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Comenceu la ruta des d'ací" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Afegiu una destinació" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Continueu la ruta fins ací" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "No s'ha trobat res ací." + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La ubicació ha estat afegida al mapa, fixeu-vos que pot tardar una mica " +"abans de mostrar al mapa els resultats de la busca." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "El sistema de fitxers és de només lectura" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "No teniu permís per anomenar i guardar allí" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "El directori no existeix" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "No hi ha cap nom de fitxer especificat" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "No està habilitada l'exportació de la vista" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenades invàlides" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "error d'anàlisi" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Ha fallat la sol·licitud de buscar la ruta." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "No s'ha trobat cap ruta." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Comença" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Tots els fitxers de capa" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Ha fallat la connexió amb el servei d'ubicació" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "" +"Gil Forcada \n" +"Josep Sanchez Mesegue \n" +"Carles Ferrando \n" +"Pere Orga " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Una aplicació de mapes pel GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Este tipus de fitxer no està suportat" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "S'ha produït un error en obrir la capa" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "S'ha produït un error en obrir el fitxer GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "No s'han trobat alternatives anteriors." + +#: ../src/openTripPlanner.js:623 +msgid "No later alternatives found." +msgstr "No s'han trobat alternatives posteriors." + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "No s'han trobat dades d'horaris per esta ruta." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'usuari o contrasenya incorrectes" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Èxit" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Sol·licitud incorrecta" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "No s'ha trobat l'objecte" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, algú altre acaba de modificar l'objecte" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objecte ha estat suprimit" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La via o relació es refereix a un fill que no existeix" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Nom" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "El nom oficial. Així és com acostuma a aparèixer en els senyals." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Adreça" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Lloc web" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"El lloc web oficial. Utilitzeu la forma més bàsica de l'URL, és a dir: " +"http://example.com en comptes de http://example.com/index.html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Telèfon" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telèfon. Utilitzeu el format internacional, començant amb un signe " +"+. Compte amb les lleis locals de privacitat, especialment per als números " +"de telèfon privats." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "Viquipèdia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El format utilitzat ha d'incloure el codi de l'idioma i el títol de " +"l'article com «ca:Títol de l'article»." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Hores d'obertura" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Mireu l'enllaç a l'etiqueta per ajuda sobre el format." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Població" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Altitud" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevació (alçària sobre el nivell del mar) d'un punt en metres." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Accés amb cadira de rodes" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Sí" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "No" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Limitat" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Designat" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Accés a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Amb fil" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Terminal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Servei" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Religió" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá'í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budisme" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaisme" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "Cristianisme" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianisme" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduisme" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Diverses religions" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "Cienciologia" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "Xintoisme" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Espiritualisme" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vodú" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "Lavabos" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "Nota" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"La informació utilitzada per informar altres creadors de mapes d'informació " +"no òbvia sobre un element, la intenció de l'autor en crear-lo, o pistes per " +"millorar-lo." + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Afig a l'OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Seleccioneu el tipus" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Fet" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Població:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Altitud:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Hores d'obertura:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Accés a Internet:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Religió:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Lavabos:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Accés amb cadira de rodes:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Telèfon:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "S'ha produït un error en analitzar l'URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "sí" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "no" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "designat" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "Des de %s a %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "S'estan carregant les caselles del mapa per imprimir" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "Podeu interrompre la impressió si esta tarda massa temps" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Interromp la impressió" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "S'ha produït un error en obrir l'URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "S'ha produït un error en carregar el fitxer" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribeu a %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "Arribeu" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Comenceu a %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "Comença" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "Mostra les instruccions a peu" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "Oculta les instruccions a peu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "Camineu %s" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "Carrega les alternatives anteriors" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "Carrega les alternatives posteriors" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d hora" +msgstr[1] "%d hores" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d hora" +msgstr[1] "%d:%02d hores" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "tot el dia" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "des de l'eixida fins a la posta de sol" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "cada dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "festius" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "vacances escolars" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "sense obrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "amb fil" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "servei" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Exacte" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milles" + +#~ msgid "%f ft" +#~ msgstr "%f peus" + +#~ msgid "Position not found" +#~ msgstr "No s'ha trobat la posició." + +#~ msgid "Edit Location" +#~ msgstr "Edita ubicació" + +#~ msgid "Country code: %s" +#~ msgstr "Codi de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Població: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Accés amb cadira de rodes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "S'ha produït un error en analitzar el fitxer GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'última ubicació coneguda i la precisió" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'última ubicació coneguda (latitud i longitud en graus) i la precisió " +#~ "(en metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripció de l'última ubicació coneguda de l'usuari." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Si l'última ubicació coneguda l'ha definit manualment l'usuari." + +#~ msgid "I’m here!" +#~ msgstr "Sóc aquí!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 00000000..a983ab1a --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1926 @@ +# Czech translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marek Černocký , 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 13:20+0200\n" +"Last-Translator: Marek Černocký \n" +"Language-Team: čeština \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-DamnedLies-Scope: partial\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhledávejte místa na celém světě" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikace Mapy poskytuje rychlý přístup k mapám celého světa. Díky ní můžete " +"rychle najít místo, které hledáte, ať už podle názvu města nebo ulice, nebo " +"určit místo pro setkání s přáteli." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy využívají databázi OpenStreetMap, která vzniká díky spolupráci stovek " +"tisíců lidí z celého světa." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá mapová aplikace" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "mapa;mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožňuje vám zobrazit si na mapě své místo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Poslední zobrazené místo" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Souřadnice naposledy zobrazeného místa." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Přiblížení" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň přiblížení" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, který se má zobrazit(běžná, letecká, atd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (šířka a výška)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poloha okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poloha okna (X a Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stav maximalizace okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximální počet výsledků hledání" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximální počet výsledků hledání z geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávných míst k uchování" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených míst, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávných tras k uchování" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených tras, která se mají uchovávat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavení soukromí při oznamování polohy na Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslední použité nastavení soukromí při oznamování polohy na Foursquare. " +"Možné hodnoty jsou: public (veřejné), followers (následovníci) nebo private " +"(soukromé)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Facebooku přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Záslání oznámení polohy z Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Říká, jestli by měl Foursquare zaslat oznámení polohy jako příspěvek na učet " +"na Twitteru přidružený k účtu na Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Uživatelské jméno nebo e-mailová adresa na OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Dává najevo, jestli je uživatel přihlášen k úpravám dat OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Poslední použitý typ dopravy pro hledání trasy" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Noční režim" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Zda je aplikace v nočním režimu" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Používat hybridní dlaždice s leteckými snímky" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Zda dlaždice s leteckými snímky mají používat hybridní styl (s popisky)" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Viditelnost" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Zveřejnit na Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Zveřejnit na Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušit" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Oznámit polo_hu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "veřejné" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "příznivci" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "soukromé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtud" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Přidat průběžný cíl" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co je zde?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopírovat místo" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Přidat do OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazení" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovat" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Včetně tras a značek" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Zvolit typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Oddálit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Přiblížit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Tisk trasy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Přepnout oblíbené" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Obecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazit klávesové zkratky" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Hledat" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Přepnout plánovač trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Vytisknout trasu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazení mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Přiblížit" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddálit" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Přepnout měřítko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Přejít na současné místo" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Přepnout na panoramatický pohled" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Přepnout na letecký pohled" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobrazovat popisky" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otevřít uživatelskou vrstvu…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnout geolokační službu pro vyhledávání vaší polohy" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušit" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavení určování polohy" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noční režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavit účet na OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovat jako obrázek" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikaci Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otevřít hlavní nabídku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapy jsou bez připojení!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby Mapy mohly fungovat, potřebují aktivní připojení k Internetu, ale žádné " +"nenalezly." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Zkontrolujte své připojení a nastavení proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet na OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Přihlaste se pro úpravy map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozte vylepšit mapy pomocí\n" +"účtu na OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zaregistrovat se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Přihlásit se" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Bohužel, ale nefunguje to. Zkuste to prosím znovu nebo navštivte\n" +"OpenStreetMap, abyste si znovu nastavili heslo." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Ověřovací kód nesouhlasí, zkuste to prosím znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadejte ověřovací kód zobrazený výše" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ověřit" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jste přihlášen" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet na OpenStreetMap je aktivní." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásit se" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulice" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PSČ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Město" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "žádné" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Přidat pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentář" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Změny mapy boudou viditelné všude, kde se používají\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úpravit v OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Další" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nebyly nalezeny žádné výsledky" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Vyskytla se chyba" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Posloupnost trasy můžete změnit přetažením" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otevřít místo" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopírovat" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Poslat do…" + +# Překlad výrazu „Check in“ je převzat z českého uživatelského rozhraní Facebooku +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Oznámit polohu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otevřít uživatelskou vrstvu" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otevřít" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Přepnout viditelnost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Hledání trasy pomocí GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Jízdní řády pro veřejnou dopravu jsou poskytovány službami třetích stran.\n" +"GNOME nemůže nijak zaručit správnost cestovních rozvrhů a plánů.\n" +"Může se stát, že poskytovatel nenabízí všechny dostupné způsoby dopravy, " +"například národní\n" +"poskytovatel nebude nabízet mezinárodní leteckou dopravu a u místního " +"poskytovatele mohou\n" +"scházet celostátní vlaky apod.\n" +"Zobrazené názvy a značky považujte za registrované ochranné známky, všude " +"tam, kde tomu tak má být." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobrazit více výsledků" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrýt průběžné zastávky a informace" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazit průběžné zastávky a informace" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odjezd teď" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odjezd v" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Příjezd v" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobrazit" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "tramvaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "letadla" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Sdílet místo" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Přidat novou trasu" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Směry" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označit jako oblíbené" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Úpravy v OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Přiblížit pro přidání místa!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Přiblížit" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Selhalo vyhledání struktury ve složce" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Selhalo zpracování dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Schází vyžadované atributy" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nelze najít prvek OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k místní struktuře složek s dlaždicemi" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Velikost dlaždic pro místní složeku s dlaždicemi" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Zobrazit verzi programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorovat dostupnost sítě" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SOUBOR…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Výběr účtu" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Načítá se" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Výběr místa" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapy nemohou najít žádné místo pro oznámení polohy na Foursquare. Vyberte " +"prosím nějaké ze seznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámení polohy na místě %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napište volitně zprávu k oznámení polohy na místě %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Na sociální službě nelze nalézt „%s“" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Na této poloze se nepodařilo najít žádné vhodné místo pro oznámení polohy" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Přihlášení vypršelo. Otevřete prosím Účty on-line, přihlaste se tam a tím " +"účet zpřístupněte." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Zde nebylo nic nalezeno!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Místo bylo přidáno do mapy, ale vezměte na vědomí, že může chvíli trvat, než " +"se zobrazí na mapě a ve výsledcích hledání." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa na souřadnicích %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Souborový systém je jen ke čtení" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemáte oprávnění ukládat do tohoto umístění" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Složka neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Není zadán název souboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nelze exportovat zobrazení" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Současné místo" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neplatné souřadnice" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "chyba zpracování" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "neznámé geometrické údaje" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Požadavek na vyhledání cesty selhal." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenalezena žádná cesta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všechny soubory s vrstvami" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Selhalo připojení ke geolokační službě" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Marek Černocký " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Mapová aplikace pro GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 - 2021 Red Hat, Inc. a autoři Map GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapová data od %s a přispěvatelů" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapové dlaždice poskytuje %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Hledání zprostředkuje %s pomocí %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Selhalo otevření vrstvy" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Chcete pokračovat?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Chystáte se otevřít soubory o celkové velikosti %s MB. To může zabrat nějaký " +"čas." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Typ souboru není podporován" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Selhalo otevření adresy GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nesprávné uživatelské jméno nebo heslo" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Úspěšné" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Chybný požadavek" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt nebyl nalezen" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Došlo ke střetu, někdo jiný objekt právě upravil" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt byl smazán" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta nebo vztah odkazuje na neexistujícího potomka" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Název" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiální název. Typicky to, co bývá na informačních tabulích." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Stránky WWW" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Nejedná se o platnou adresu URL. Nezapomeňte začít http:// nebo https://" + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiální webové stránky. Snažte se použít co nejzákladnější tvar, tj. " +"http://www.priklad.cz namísto http://www.priklad.cz/index.html" + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonní číslo. Používejte mezinárodní formát začínající znakem +. Dbejte " +"místních zákonů na ochranu soukromí, zejména u soukromách telefonních čísel." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Nejedná se o platnou e-mailovou adresu. Ujistěte se, že nazačíná předponou s " +"protokolem „mailto:“." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktní e-mailová adresa pro dotazy. Přidávejte pouze e-mailové adresy, " +"které jsou určené pro veřejné použití." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by měl obsahovat rovněž kód jazyka a název článku, jako „cs:" +"Název článku“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Otevírací doba" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Nápověda k formátu viz odkaz v popisku." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populace" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Nadmořská výška" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmořská výška bodu v metrech" + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Bezbariérový přístup" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "ano" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "částečně" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "výslovně ano" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Přístup k Internetu" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "drátový" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "terminál" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "služba" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Jídlo s sebou" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "výhradně" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Náboženství" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "animizmus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "bahaizmus" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "buddhizmus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "kaodaizmus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "křesťanství" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "konfuciánství" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "hinduizmus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "džinizmus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "judaizmus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "islám" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "více náboženství" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "pohanství" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "pastafariánství" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "šintoizmus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "sikhizmus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "spiritualizmus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "taoizmus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "unitární univerzalizmus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "vúdú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "jezídizmus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "zarathuštrizmus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informace používané k informování ostatních autorů map o věcech, které " +"nejsou u prvku zcela zřejmé, o záměrech autora při vytváření prvku nebo k " +"názorům na další vylepšování." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Přidání do OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Vybrat typ" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Místo bez názvu" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Selhalo zpracování adresy GeoURI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Souřadnice" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Přesnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Přesnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonní číslo" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Nabízí jídlo s sebou" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nenabízí jídlo s sebou" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Nabízí pouze jídlo s sebou" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Veřejný přístup k Internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Bez přístupu k Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Veřejná Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Drátový přístup k Internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Počítač k dispozici k používání" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetová asistence k dispozici" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Bez toalet k dispozici" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "K dispozici toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Bezbariérový přístup" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Omezený bezbariérový přístup" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nemá bezbariérový přístup" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Výslovně vhodné pro vozíčkáře" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod hladinou moře" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "V úrovni hladiny moře" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Náboženství:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Místo nebylo v OpenStreetMap nalezeno" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Souřadnice v adrese URL nejsou platné" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Tato adreasa URL není podporovaná" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítají se mapové dlaždice pro tisk" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pokud to trvá příliš dlouho, můžete tisk zrušit" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Zrušit tisk" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Přidat podle místa" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odebrat podle místa" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Otočit trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Přidat %s do %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Selhalo otevření adresy URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otevřít pomocí %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "selhalo načtení souboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Plán cesty poskytl %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start v %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chůze %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Příjezd do %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Příjezd" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazit pokyny pro pěší" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrýt pokyny pro pěší" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načíst dřívější variantu" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načíst pozdější variantu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nebyla nalezena žádná dřívější varianta." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nebyla nalezena žádná pozdější varianta." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d. %B" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Pro tuto trasu nebyly nalezeny žádné časové údaje." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Pro tuto trasu nebyl nalezen žádný poskytovatel údajů." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodina" +msgstr[1] "%s hodiny" +msgstr[2] "%s hodin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s hod" +msgstr[1] "%s∶%s hod" +msgstr[2] "%s∶%s hod" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s – %s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 hodin denně" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "za denního světla" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "každý den" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "státní svátky" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "školní prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zavřeno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "neznámá" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "velmi přesná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s hod" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje poslední příjezd" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zahněte doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Zahněte doleva" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Zahněte mírně doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Zahněte mírně doleva" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zahněte ostře doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Zahněte ostře doleva" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zahněte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Zahněte doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Zahněte mírně doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Zahněte mírně doprava" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zahněte ostře doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Zahněte ostře doprava" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na kruhovém objezdu použijte výjezd %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na kruhovém objezdu použijte výjezd směr %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Najeďte na kruhový objezd" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použijte výtah a vystupte v %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Použijte výtah" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Proveďte otočku doleva na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Proveďte otočku doleva" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Proveďte otočku doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Proveďte otočku doprava" + diff --git a/po/da.po b/po/da.po new file mode 100644 index 00000000..b259dfd0 --- /dev/null +++ b/po/da.po @@ -0,0 +1,2099 @@ +# Danish translation for gnome-maps. +# Copyright (C) 2013, 2016-2018 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Kris Thomsen , 2013. +# Kenneth Nielsen , 2014. +# scootergrisen, 2015, 2019. +# Ask Hjorth Larsen , 2015, 16, 17, 18. +# Alan Mortensen , 2020-21. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-16 17:31+0200\n" +"Last-Translator: Alan Mortensen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find steder i hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kort giver dig hurtig adgang til kort over hele verden. Det giver dig " +"mulighed for hurtigt at finde stedet du leder efter ved at søge efter en by " +"eller gade, eller et sted hvor du kan mødes med en ven." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kort bruger den kollaborative OpenStreetMap-database, skabt af flere " +"hundrede tusinde mennesker over hele verden." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et simpelt kortprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillader at din placering vises på kortet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sidst viste sted" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sidst viste sted." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Korttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen af kort som skal vises (vejkort, luftfoto osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vinduesstørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vinduesstørrelse (bredde og højde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduesplacering" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduesplacering (X og Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindue maksimeret" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimeringstilstand for vindue" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimum antal af søgeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimum antal af søgeresultater fra geokode-søgning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal seneste steder, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senest besøgte steder, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal seneste ruter, der skal gemmes" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senest besøgte ruter, der skal gemmes." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Privatlivsindstilling til at tjekke ind på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sidst benyttede privatlivsindstilling til at tjekke ind på Foursquare. " +"Mulige værdier er: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som opdatering på Facebook-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-post af indtjekning på Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Angiver om Foursquare skal poste din indtjekning som tweet i Twitter-" +"kontoen, der er tilknyttet denne Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brugernavn eller e-mail-adresse på OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Angiver om brugeren er logget ind til at kunne redigere data i OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Sidst brugte transporttype til routing" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nattilstand" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet er i nattilstand." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Brug fliser til hybridluftfoto" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Hvorvidt luftfotofliser skal bruge hybrid stil (med etiketter)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Synlighed" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annullér" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "T_jek ind" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute herfra" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tilføj mellemliggende destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute hertil" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hvad er der her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiér placering" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportér visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportér" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inkludér rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Vælg korttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zoom ud" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zoom ind" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Udskriv rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Slå foretrukne til/fra" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis genveje" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søg" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå ruteplan til/fra" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Udskriv rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afslut" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom ind" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ud" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå skala til/fra" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til nuværende placering" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skift til gadevisning" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skift til luftfotovisning" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åbn formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åbn formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå lokaliseringstjenster til for at bestemme din placering" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annullér" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Lokaliseringsindstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattilstand" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Opret OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportér som billede" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kort" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Åbn hovedmenu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kort er offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kort skal bruge en aktiv internetforbindelse for at fungere korrekt, men der " +"er ingen." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kontrollér dine indstillinger for forbindelse og proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Log ind for at redigere kort" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjælp med at forbedre kortet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Adgangskode" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Tilmeld" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Log ind" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager - det fungerede ikke. Prøv venligst igen eller besøg\n" +"OpenStreetMap for at nulstille din adgangskode." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Godkendelseskoden var ikke korrekt. Prøv venligst igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Indtast godkendelseskoden vist ovenfor" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Godkend" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget ind" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Log ud" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gade" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +# Velsagtens by, postkode eller senest brugte jf. omkringstående +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tilføj felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kortændringer vil være synlige på alle kort, der\n" +"bruger data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senest brugte" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Næste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater fundet" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Der opstod en fejl" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Træk for at ændre rækkefølge for ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åbn placering" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiér" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Tjek ind …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åbn formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åbn" + +# velsagtens af lag eller rute +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå synlighed til/fra" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøgning med GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rejseplaner for offentlig transport tilbydes af tredjepartstjenester.\n" +"\n" +"GNOME kan ikke garantere, at de viste ruter og køreplaner er korrekte.\n" +"Bemærk, at nogle udbydere måske ikke medtager alle mulige former for " +"transport,\n" +"f.eks. har en national udbyder måske ikke fly med, og en lokal udbyder har " +"måske\n" +"ikke regionale tog med.\n" +"Viste navne og mærker skal betragtes som registrerede varemærker, når dette " +"er muligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul mellemliggende stop og oplysninger" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis mellemliggende stop og oplysninger" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Tag afsted nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Afgangstidspunkt" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankomsttidspunkt" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvogne" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Færger" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Del placering" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Føj til ny rute" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Rutevejledning" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markér som foretrukken" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redigér på OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom ind for at tilføje sted!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom ind" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kunne ikke finde flisestruktur i mappe" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kunne ikke fortolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunne ikke finde OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal flisemappestruktur" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Flisestørrelse til lokal flisemappe" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Vis programmets version" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorér hvorvidt netværket er tilgængeligt" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Vælg en konto" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Indlæser" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Vælg et sted" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Foursquare. Vælg " +"venligst et fra listen." + +# Undgå problemer med forholdsord +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Tjek ind: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv valgfrit en besked for at tjekke ind her: %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan ikke finde “%s” på den sociale tjeneste" + +# ?? +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan ikke finde et passende sted at tjekke ind her" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiverne er udløbet; åbn venligst Onlinekonti for at logge ind og slå " +"denne konto til" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Intet fundet her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Stedet blev føjet til kortet. Bemærk at det kan tage et stykke tid, før det " +"vises på kortet og i søgeresultaterne." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kort på %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke tilladelse til at gemme der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappen findes ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Intet filnavn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Nuværende placering" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "fortolkerfejl" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "ukendt geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ruteforespørgsel fejlede." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ingen rute fundet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Kunne ikke forbinde til lokaliseringstjeneste" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Kris Thomsen\n" +"Kenneth Nielsen\n" +"scootergrisen\n" +"Ask Hjorth Larsen\n" +"Alan Mortensen\n" +"\n" +"Dansk-gruppen\n" +"Websted http://dansk-gruppen.dk\n" +"E-mail " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Et kortprogram til GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ophavsret © 2011 – 2021 Red Hat, Inc. og udviklerne af GNOME Kort" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortdata af %s og bidragydere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortfelter leveret af %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søgning leveret af %s med %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Kunne ikke åbne lag" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Vil du fortsætte?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Du er ved at åbne filer med en samlet størrelse på %s MB. Det kan tage noget " +"tid at indlæse" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Filtypen understøttes ikke" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Kunne ikke åbne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Forkert brugernavn eller adgangskode" + +# Succes er et lidt stærkere ord på dansk end på engelsk. Har vi noget mere passende? +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Ugyldig forespørgsel" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt ikke fundet" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt! En anden har netop ændret objektet" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektet er blevet slettet" + +# A way is an ordered list of nodes which normally also has at least one tag or is included within a Relation +# +# http://wiki.openstreetmap.org/wiki/Way +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Way eller relation refererer til underelementer som ikke findes" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officielle navn. Dette er typisk hvad der står på et skilt." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webside" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Dette er ikke en gyldig URL. Husk at medtage http:// eller https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officielle webside. Prøv at bruge den mest grundlæggende form, dvs. " +"http://eksempel.dk i stedet for http://eksempel.dk/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Brug det internationale format som begynder med tegnet +. Vær " +"opmærksom på lokale love om privatlivsbeskyttelse, især for private numre." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Dette er ikke en gyldig e-mailadresse. Sørg for, at “mailto:” ikke medtages." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"E-mailadresse til forespørgsler. Tilføj kun e-mailadresser, som kan bruges " +"offentligt." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet bør inkludere sprogkoden og artiklens overskrift, f.eks. “da:" +"Artikeloverskrift”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Åbningstider" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Se linket i etiketten for at få hjælp om format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Befolkning" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Højde" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Højde (over havoverfladen) af et punkt i meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Rullestolsadgang" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Begrænset" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Handicap" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetadgang" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Trådløs" + +# Angiver typen af netværksadgang som f.eks. en café udbyder +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kabel" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Takeaway" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Kun" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitær universalisme" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toiletter" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information der bruges til at give andre kortbrugere oplysninger om et " +"element som ikke er åbenlyse, forfatterens hensigt med at oprette det, eller " +"fif om yderligere forbedringer." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Føj til OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Vælg type" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Færdig" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Unavngivet placering" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Fortolkning af Geo-URI mislykkedes" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Nøjagtighed" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøjagtighed: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Tilbyder takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Tilbyder ikke takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Tilbyder kun takeaway" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Offentlig internetadgang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ingen internetadgang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Offentlig wi-fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Kablet internetadgang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computere tilgængelige til brug" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetassistance tilgængelig" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Toiletter ikke tilgængelige" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toiletter tilgængelige" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Adgang med kørestol" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Begrænset adgang med kørestol" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ingen adgang med kørestol" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Beregnet til kørestolsbrugere" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s under havoverfladen" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Tæt på havoverfladen" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Placering ikke fundet i OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinater i URL er ikke gyldige" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL understøttes ikke" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Indlæser kortfliser til udskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan afbryde udskriften hvis dette varer for længe" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afbryd udskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tilføj via sted" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern via sted" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vend ruten om" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tilføj %s til %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Kunne ikke åbne URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Åbn med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "kunne ikke indlæse fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Anslået tid: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rejseplaner leveret af %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starttidspunkt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankomst %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankomst" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis gangrute" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul gangrute" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Indlæs tidligere alternative ruter" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Indlæs senere alternative ruter" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer fundet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer fundet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ingen køreplan fundet for denne rute." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen udbyder fundet for denne rute." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Døgnet rundt" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Fra solopgang til solnedgang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Helligdage" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Skoleferier" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# hvorfor ikke closed? +#: src/translations.js:233 +msgid "not open" +msgstr "ikke åbent" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Ukendt" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Præcis" + +# h er symbolet for enheden time +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s fod" + +# Formoder der er tale om, at man ikke kan angive, hvornår man senest vil ankomme +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette udvidelsesmodul understøtter ikke senest ankomsttidspunkt" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsæt på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsæt" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Drej til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Drej til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Drej lidt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Drej lidt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Drej skarpt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Drej skarpt til venstre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Drej til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Drej til højre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Drej lidt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Drej lidt til højre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Drej skarpt til højre på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Drej skarpt til højre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Tag %s. vej i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Drej fra mod %s i rundkørslen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Kør ind i rundkørslen" + +# . er for at markere ordenstal og ikke et afsluttende punktum +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tag elevatoren og stå af på %s." + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Tag elevatoren" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Lav en u-vending til venstre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Lav en u-vending til venstre" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Lav en u-vending til højre ind på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Lav en u-vending til højre" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Du kan endda søge efter bestemte typer af placeringer, såsom “Pubs near " +#~ "Main Street, Boston” eller “Hotels near Alexanderplatz, Berlin” (Dansk " +#~ "endnu ikke understøttet)." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Privatlivsindstilling til at tjekke ind på Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Sidst benyttede privatlivsindstilling til at tjekke ind på Facebook. " +#~ "Mulige værdier er: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS og SELF." + +#~ msgid "Everyone" +#~ msgstr "Alle" + +#~ msgid "Friends of friends" +#~ msgstr "Venners venner" + +#~ msgid "Just friends" +#~ msgstr "Kun venner" + +#~ msgid "Just me" +#~ msgstr "Kun mig" + +#~ msgid "Find a Route" +#~ msgstr "Find en rute" + +#~ msgid "Check in here" +#~ msgstr "Tjek ind her" + +#~ msgid "Show more information" +#~ msgstr "Vis flere oplysninger" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kort kan ikke finde stedet, hvorpå der skal tjekkes ind med Facebook. " +#~ "Vælg venligst et fra listen." + +#~ msgid "Population:" +#~ msgstr "Befolkning:" + +#~ msgid "Altitude:" +#~ msgstr "Højde:" + +#~ msgid "Opening hours:" +#~ msgstr "Åbningstider:" + +#~ msgid "Internet access:" +#~ msgstr "Internetadgang:" + +#~ msgid "Toilets:" +#~ msgstr "Toiletter:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Rullestolsadgang:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begrænset" + +#~ msgid "no" +#~ msgstr "nej" + +#~ msgid "designated" +#~ msgstr "handicap" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL er ikke gyldig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kabel" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "tjeneste" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du ikke en konto?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Rutesøgning med OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Tilføj destination" + +#~ msgid "Open with another application" +#~ msgstr "Åbn med andet program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryk enter for at søge" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Afslut" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Åbn formlag …" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Indlæs kortlag" + +#~ msgid "Open Layer" +#~ msgstr "Åbn lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mile" + +#~ msgid "%f ft" +#~ msgstr "%f fod" + +#~ msgid "Country code: %s" +#~ msgstr "Landekode: %s" diff --git a/po/de.po b/po/de.po new file mode 100644 index 00000000..d8871baa --- /dev/null +++ b/po/de.po @@ -0,0 +1,2080 @@ +# German translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Tobias Endrigkeit , 2013. +# Benjamin Steinwender , 2014. +# Bernd Homuth , 2015. +# Paul Seyfert , 2016. +# Wolfgang Stöggl , 2014-2015, 2017. +# Christian Kirbach , 2014-2020. +# Mario Blättermann , 2015-2018, 2020. +# Tim Sabsch , 2018-2020. +# Philipp Kiemle , 2020-2021. +# +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 09:17+0200\n" +"Last-Translator: Philipp Kiemle \n" +"Language-Team: Deutsch \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karten" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Orte in der ganzen Welt finden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"»Karten« gibt Ihnen einen schnellen Zugang zu Karten aus der ganzen Welt. Es " +"erlaubt Ihnen, Orte schnell zu finden, indem Sie eine Stadt oder eine Straße " +"suchen, oder einen Ort zu finden, um einen Freund zu treffen." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"»Karten« nutzt die gemeinschaftliche OpenStreetMap-Datenbank, die von " +"hunderttausenden Menschen aus der ganzen Welt erstellt worden ist." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Das GNOME-Projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Karten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Eine einfache Karten-Anwendung" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ermöglicht die Anzeige Ihres Ortes in der Karte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "Zuletzt betrachteter Ort" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinaten des letzten betrachteten Orts." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "Ansichtsgröße" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Vergrößerungsstufe" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartentyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Die Art der anzuzeigenden Karte (Straße, Luftbildansicht, usw.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenstergröße" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenstergröße (Breite und Höhe)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fensterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fensterposition (X und Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenster maximiert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximierungszustand des Fensters" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximale Anzahl an Suchergebnissen" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximale Anzahl an Suchergebnissen aus der Geocode-Suche." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +# Unterschied zu "Number of recently visited places to store."? +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Anzahl der zu speichernden zuletzt aufgerufenen Plätze" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Anzahl der zu speichernden kürzlich besuchten Plätze." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Privatsphäreneinstellungen für Foursquare-Check-in" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Zuletzt verwendete Privatsphäreneinstellungen für Foursquare-Check-in. " +"Mögliche Werte sind: Öffentlich, Anhänger oder Privat." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Facebook-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Mitteilung eines Foursquare-Check-ins via Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Legt fest, ob Foursquare einen Check-in als Nachricht in einem verbundenen " +"Twitter-Konto veröffentlicht." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Benutzername oder E-Mail-Adresse für OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Zeigt an, dass sich der Benutzer angemeldet hat, um OpenStreetMap-Daten " +"bearbeiten zu können." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Für die Route zuletzt benutzte Beförderungsart" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Gibt an, ob sich die Anwendung im Nachtmodus befindet." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Verwendung von Hybrid-Luftausschnitten" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Gibt an, ob Luftausschnitte Hybrid verwenden sollen (mit Markierungen)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Auf Facebook veröffentlichen" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Auf Twitter veröffentlichen" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Ein_checken" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Öffentlich" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Anhänger" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route von hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zwischenziel hinzufügen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route hierher" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Was ist hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Ort kopieren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ansicht exportieren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportieren" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Route und Markierungen einbeziehen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Wählen Sie den Kartentyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Verkleinern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Vergrößern" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Route drucken" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Favoriten umschalten" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allgemein" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tastenkürzel anzeigen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Suchen" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routenplaner ein-/ausschalten" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route drucken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Verlassen" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartenansicht" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Vergrößern" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Verkleinern" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Maßstab umschalten" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Zum aktuellen Ort springen" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Zur Straßenansicht wechseln" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Zur Luftbildansicht wechseln" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Formebene öffnen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Markierungen anzeigen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Formebene öffnen …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Schalten Sie die Ortungsdienste ein, um Ihren Ort zu bestimmen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Abbrechen" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Einstellungen der Ortungsdienste" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-Konto einrichten" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Als Bild exportieren" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Tasten_kürzel" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Info zu Karten" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Hauptmenü öffnen" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Karten ist vom Internet getrennt!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karten erfordert eine bestehende Internetverbindung, um richtig arbeiten zu " +"können. Es besteht aber keine." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Prüfen Sie Ihre Verbindung und die Proxy-Einstellungen." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-Konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Anmelden, um Karten bearbeiten zu " +"können" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helfen Sie bei der Verbesserung der Karte,\n" +"indem Sie ein OpenStreetMap-Konto nutzen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-Mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passwort" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrieren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Anmelden" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Das hat leider nicht funktioniert. Bitte versuchen Sie es erneut, oder " +"besuchen Sie\n" +"OpenStreetMap, um Ihr Passwort zurückzusetzen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "" +"Die Verifizierungscodes stimmen nicht überein, bitte versuchen Sie es erneut." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Geben Sie den oben angezeigten Verifizierungscode ein" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifizieren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Angemeldet" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ihr OpenStreetMap-Konto ist aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Abmelden" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straße" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hausnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postleitzahl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Stadt" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Keine" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Feld hinzufügen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartenänderungen werden in allen Karten sichtbar, die\n" +"Daten von OpenStreetMap verwenden." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Zuletzt verwendet" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Nächste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Keine Ergebnisse gefunden" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ein Fehler ist aufgetreten" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ziehen, um die Reihenfolge der Routenziele zu ändern" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ort öffnen" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopieren" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Senden an …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Ein_checken …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Formebene öffnen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ö_ffnen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Sichtbarkeit umschalten" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routenplanung von GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Die Reisedaten für öffentliche Verkehrsmittel werden von Drittanbietern\n" +"bereitgestellt.\n" +"GNOME kann für die Korrektheit der Routen und angezeigten Fahrzeiten\n" +"nicht garantieren. Beachten Sie, dass nicht alle Anbieter Informationen für " +"alle\n" +"Transportmittel beinhalten. Zum Beispiel könnte ein nationaler Anbieter " +"keine\n" +"Fluglinien beinhalten, oder ein lokaler Anbieter keine Regionalzüge.\n" +"Die angezeigten Namen und Marken sind als eingetragene Warenzeichen zu " +"betrachten, sofern anwendbar." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Weitere Ergebnisse anzeigen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Zwischenstationen und Informationen verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zwischenstationen und Informationen anzeigen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Jetzt starten" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Abfahrt um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankunft um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Anzeigen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busse" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Straßenbahnen" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Züge" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "U-Bahn" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Fähren" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flugzeuge" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Ort teilen" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Zu einer neuen Route hinzufügen" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Route" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Als bevorzugt markieren" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Auf OpenStreetMap bearbeiten" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Vergrößern, um einen Ort hinzufügen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Vergrößern" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Es konnte keine Kachel-Struktur im Ordner gefunden werden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-Dokument konnte nicht ausgewertet werden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Erforderliche Attribute fehlen" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-Element kann nicht gefunden werden" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Pfad zu einer lokalen Kachel-Ordnerstruktur" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Kachelgröße des lokalen Kachel-Ordner" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Die Versionsnummer des Programms anzeigen" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Verfügbarkeit des Netzwerks ignorieren" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATEI …|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Wählen Sie ein Konto aus" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Wird geladen" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Wählen Sie einen Ort" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karten konnte keinen geeigneten Platz für einen Check-in in Foursquare " +"finden. Bitte wählen Sie einen aus der Liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Bei %s einchecken" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Schreiben Sie eine optionale Nachricht, um bei %s einzuchecken." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "»%s« konnte im sozialen Netzwerk nicht gefunden werden" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Für einen Check-in konnte an diesem Ort kein geeigneter Platz gefunden werden" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Die Anmeldedaten sind abgelaufen. Bitte öffnen Sie Online-Konten, um sich " +"anzumelden und das Konto zu aktivieren" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Hier wurde nichts gefunden!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Der Ort wurde zur Karte hinzugefügt. Beachten Sie, dass es eine Zeit dauern " +"kann, bis er in der Karte und in den Suchergebnissen erscheint." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karten auf %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dateisystem ist schreibgeschützt" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Sie haben nicht die nötigen Rechte zum Speichern" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Der Ordner existiert nicht" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Kein Dateiname angegeben" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ansicht kann nicht exportiert werden" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktueller Ort" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "Ungültige Koordinaten" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "Verarbeitungsfehler" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "Unbekannte Geometrie" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Routenanfrage schlug fehl." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Keine Route gefunden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle Ebenendateien" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Es konnte keine Verbindung zum Ortungsdienst hergestellt werden" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Christian Kirbach \n" +"Tobias Endrigkeit \n" +"Benjamin Steinwender \n" +"Mario Blättermann \n" +"Bernd Homuth \n" +"Paul Seyfert \n" +"Tim Sabsch \n" +"Philipp Kiemle " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Eine Karten-Anwendung für GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. und die Autoren von GNOME Karten" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartendaten bereitgestellt von %s und weiteren Mitwirkenden" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartenausschnitte bereitgestellt von %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Suche bereitgestellt von %s unter Verwendung von %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Ebene konnte nicht geöffnet werden" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Möchten Sie fortfahren?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sie sind dabei, Dateien mit einer Gesamtgröße von %s MB zu öffnen. Das " +"könnte einige Zeit dauern" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Dateityp wird nicht unterstützt" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Geo-Adresse konnte nicht geöffnet werden" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Benutzername oder Passwort falsch" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Erfolg" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Fehlerhafte Anfrage" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt nicht gefunden" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, jemand anderes hat gerade das Objekt geändert" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt wurde gelöscht" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Weg oder Bezug verweist auf nicht existierende Unterobjekte" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "" +"Der offizielle Name, der üblicherweise auf dem Ortseingangsschild erscheint." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Internet-Seite" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Das ist keine gültige URL. Bitte beginnen Sie mit »http://« oder »https://«." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Die offizielle Webseite. Verwenden Sie möglichst die Grundform der Adresse, " +"zum Beispiel http://example.com statt http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Die Telefonnummer im internationalen Format, beginnend mit einem Plus-" +"Zeichen. Denken Sie an den Schutz der Privatsphäre, insbesondere für private " +"Telefonnummern." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-Mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Das ist keine gültige E-Mail-Adresse. Bitte stellen Sie sicher, das »An:«-" +"Präfix nicht mit anzugeben." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"E-Mail-Adresse für Anfragen. Fügen Sie nur Adressen hinzu, die für die " +"öffentliche Nutzung gedacht sind." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Das verwendete Format sollte den Sprachcode und den Artikel enthalten, zum " +"Beispiel »de:Titel des Artikels«." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Öffnungszeiten" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Öffnen Sie den Verweis in der Beschriftung für Hilfe zur Formatierung." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Bevölkerung" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Höhe" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höhe eines Punktes über dem Meeresspiegel in Meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Barrierefreier Zugang" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nein" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Begrenzt" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Geeignet" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetzugang" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Funknetzwerk" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kabelgebunden" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Zum Mitnehmen" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Ausschließlich" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaitum" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhismus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Christentum" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfuzianismus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduismus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judentum" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Mehrere Religionen" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Heidentum" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoismus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Daoismus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarismus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jesidismus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zarathustrismus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toiletten" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Notiz" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Notiz, die anderen Kartennutzern nicht-offensichtliche Hinweise zu einem " +"Element, die Absicht des Autors bei der Erstellung, oder Hinweise zur " +"weiteren Verbesserung zur Verfügung stellt." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zu OpenStreetMap hinzufügen" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Typ wählen" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Abgeschlossen" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Unbenannter Ort" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo-Adresse konnte nicht gelesen werden" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinaten" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Genauigkeit" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Genauigkeit: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Bietet Essen zum Mitnehmen an" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Bietet kein Essen zum Mitnehmen an" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Bietet ausschließlich Essen zum Mitnehmen an" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Öffentlicher Internetzugang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Kein Internetzugang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Öffentliches WLAN" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Kabelgebundener Internetzugang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computer zur Nutzung verfügbar" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internet-Hilfestellung verfügbar" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Keine Toiletten vorhanden" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toiletten vorhanden" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Barrierefrei" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Eingeschränkt barrierefrei" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nicht barrierefrei" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Barrierefrei" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s unter dem Meeresspiegel" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Auf Höhe des Meerespiegels" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Ort wurde nicht in OpenStreetMap gefunden" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaten in der Adresse sind ungültig" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Adresse wird nicht unterstützt" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Von %s nach %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Kartenausschnitte zum Drucken werden geladen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Sie können den Druck abbrechen, wenn dies zu lange dauert" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Drucken abbrechen" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zwischenstopp hinzufügen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Zwischenstopp entfernen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route umkehren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s zu %s hinzufügen" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Adresse konnte nicht geöffnet werden" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Öffnen mit %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "Laden der Datei ist fehlgeschlagen" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschätzte Zeit: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Reiseplan bereitgestellt von %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Abfahrt in %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Abfahrt" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Fußweg %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankunft in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankunft" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Anweisungen für den Fußweg anzeigen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Anweisungen für den Fußweg verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Frühere Alternativen laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Spätere Alternativen laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Keine früheren Alternativen gefunden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Keine späteren Alternativen gefunden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Für diese Route wurden keine Fahrplandaten gefunden." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Für diese Route wurden kein Anbieter gefunden." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s Minute" +msgstr[1] "%s Minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s Stunde" +msgstr[1] "%s Stunden" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s Stunde" +msgstr[1] "%s:%s Stunden" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Jederzeit" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Von Sonnenaufgang bis Sonnenuntergang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Jeden Tag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Gesetzliche Feiertage" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Schulferien" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "geschlossen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Unbekannt" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Genau" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h, %s min" +msgstr[1] "%s h, %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dieses Plugin unterstützt nicht die letzte Ankunft" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsetzen auf %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsetzen" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Halb links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Halb links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Scharf links abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Scharf links abbiegen" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Halb rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Halb rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Scharf rechts abbiegen auf %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Scharf rechts abbiegen" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Im Kreisverkehr die Ausfahrt %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Im Kreisverkehr die Ausfahrt Richtung %s nehmen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "In den Kreisverkehr fahren" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Den Aufzug nehmen und bei %s aussteigen" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Den Aufzug nehmen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Eine Kehrtwende nach links auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Eine Kehrtwende nach links machen" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Eine Kehrtwende nach rechts auf %s machen" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Eine Kehrtwende nach rechts machen" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Suchen Sie nach bestimmten Arten von Orten, wie »Kneipen in der Nähe von " +#~ "Main Street, Boston« oder »Hotels in der Nähe vom Alexanderplatz, Berlin«." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Privatsphäreneinstellungen für Facebook-Check-in" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Zuletzt verwendete Privatsphäreneinstellungen für Facebook-Check-in. " +#~ "Mögliche Werte sind: EVERYONE (jeder), FRIENDS_OF_FRIENDS (Freunde von " +#~ "Freunden), ALL_FRIENDS (alle Freunde) oder SELF (selbst)." + +#~ msgid "Everyone" +#~ msgstr "Jeder" + +#~ msgid "Friends of friends" +#~ msgstr "Freunde von Freunden" + +#~ msgid "Just friends" +#~ msgstr "Nur Freunde" + +#~ msgid "Just me" +#~ msgstr "Nur ich" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Karten konnte keinen geeigneten Platz für einen Check-in in Facebook " +#~ "finden. Bitte wählen Sie einen aus der Liste." + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s, %s und %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Check in here" +#~ msgstr "Hier einchecken" + +#~ msgid "Show more information" +#~ msgstr "Weitere Informationen anzeigen" + +#~ msgid "Population:" +#~ msgstr "Bevölkerung:" + +#~ msgid "Altitude:" +#~ msgstr "Höhe:" + +#~ msgid "Opening hours:" +#~ msgstr "Öffnungszeiten:" + +#~ msgid "Internet access:" +#~ msgstr "Internetzugang:" + +#~ msgid "Toilets:" +#~ msgstr "Toiletten:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Barrierefreier Zugang:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begrenzt" + +#~ msgid "no" +#~ msgstr "nein" + +#~ msgid "designated" +#~ msgstr "geeignet" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-Adresse ist ungültig" + +#~ msgid "wired" +#~ msgstr "Kabelgebunden" + +#~ msgid "terminal" +#~ msgstr "Terminal" + +#~ msgid "service" +#~ msgstr "Dienst" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Route suchen" + +#~ msgid "Primary menu" +#~ msgstr "Hauptmenü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Sie haben kein Konto?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routenplanung von OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Ziel hinzufügen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mit einer anderen Anwendung öffnen" + +#~ msgid "Press enter to search" +#~ msgstr "Drücken Sie zum Suchen die Eingabetaste" + +#~ msgid "Quit" +#~ msgstr "Verlassen" diff --git a/po/el.po b/po/el.po new file mode 100644 index 00000000..3fdf1283 --- /dev/null +++ b/po/el.po @@ -0,0 +1,2156 @@ +# Greek translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Dimitris Spingos , 2013. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014, 2015. +# Efstathios Iosifidis , 2013-2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 22:31+0300\n" +"Last-Translator: Efstathios Iosifidis \n" +"Language-Team: Greek, Modern (1453-) \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Χάρτες GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Βρείτε μέρη από όλο τον κόσμο" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Η εφαρμογή Χάρτες, σας παρέχει μια γρήγορη πρόσβαση σε χάρτες από όλο τον " +"κόσμο. Σας επιτρέπει να βρείτε γρήγορα μια τοποθεσία αναζητώντας είτε μια " +"πόλη είτε μια οδό, ή μπορείτε να εντοπίσετε μια τοποθεσία για να συναντήσετε " +"ένα φίλο." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Η εφαρμογή Χάρτες, χρησιμοποιεί την βάση δεδομένων OpenStreetMap, που έχει " +"φτιαχτεί από χιλιάδες άτομα σε όλο τον κόσμο." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Το έργο GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Χάρτες" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Μια απλή εφαρμογή χαρτών" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Χάρτες;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Επιτρέπει την τοποθεσία σας να εμφανιστεί στον χάρτη." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "τελευταία τοποθεσία που προβλήθηκε" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Συντεταγμένες τελευταίας τοποθεσίας που προβλήθηκε." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "εστίαση" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Επίπεδο εστίασης" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Τύπος χάρτη" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Ο τύπος του χάρτη για προβολή (δρόμος, εναέριος κλπ.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Μέγεθος παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Μέγεθος παραθύρου (πλάτος και ύψος)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Θέση παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Θέση παραθύρου (Χ και Υ)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Μεγιστοποιημένο παράθυρο" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Κατάσταση μεγιστοποίησης παραθύρου" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Μέγιστος αριθμός αποτελεσμάτων αναζήτησης" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" +"Μέχιστος αριθμός αποτελεσμάτων αναζήτησης από την αναζήτηση στο geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Αριθμός πρόσφατων τοποθεσιών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Αριθμός τοποθεσιών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Αριθμός πρόσφατων διαδρομών για αποθήκευση" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Αριθμός διαδρομών, που έχετε επισκεφθεί πρόσφατα, για αποθήκευση." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου στο " +"Foursquare. Δυνατές τιμές είναι: public, followers ή private.." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Έλεγχος εισόδου του Foursquare στην αναμετάδοση του Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"αποστολή στον λογαριασμό Facebook συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Έλεγχος εισόδου στην αναμετάδοση του Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Υποδεικνύει αν το Foursquare πρέπει να αναμεταδώσει τον έλεγχο εισόδου ως " +"τιτίβισμα στον λογαριασμό Twitter συσχετισμένο με τον λογαριασμό του " +"Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου του OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Υποδεικνύει αν ο χρήστης έχει συνδεθεί για να επεξεργαστεί τα δεδομένα του " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Τελευταία χρησιμοποιημένος τύπος μεταφορικών μέσων για δρομολόγια" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Εάν η εφαρμογή βρίσκεται σε νυχτερινή λειτουργία." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Χρήση υβριδικών πλακιδίων" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Εάν τα πλακίδια πρέπει να χρησιμοποιούν υβριδικό στυλ (με ετικέτες)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Ορατότητα" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Δημοσίευση στο Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Δημοσίευση στο Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ά_κυρο" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Δημόσιο" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Ακόλουθοι" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Προσωπικό" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Διαδρομή από εδώ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Προσθήκη ενδιάμεσου προορισμού" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Διαδρομή προς εδώ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Τι είναι εδώ;" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Αντιγραφή τοποθεσίας" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Προβολή εξαγωγής" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Ε_ξαγωγή" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Συμπεριέλαβε διαδρομή και δείκτες" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Επιλογή τύπου χάρτη" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Εκτύπωση διαδρομής" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Εναλλαγή αγαπημένων" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Γενικά" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Εμφάνιση συντομεύσεων" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Αναζήτηση" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Εναλλαγή οργανωτή διαδρομής" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Εκτύπωση διαδρομής" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Έξοδος" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Προβολή χάρτη" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Μεγέθυνση" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Σμίκρυνση" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Εναλλαγή εστίασης" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Μετάβαση στην τρέχουσα τοποθεσία" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Εναλλαγή σε προβολή δρόμου" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Εναλλαγή σε εναέρια προβολή" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Εμφάνιση ετικετών" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Άνοιγμα στρώσης σχήματος…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ενεργοποίηση υπηρεσιών τοποθεσίας για να βρείτε την τοποθεσία σας" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Ακύρωση" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ρυθμίσεις τοποθεσίας" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Νυχτερινή λειτουργία" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ρύθμιση λογαριασμού OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Εξαγωγή ως εικόνα" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Συντομεύσεις _πληκτρολογίου" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Περί του Χάρτες" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Άνοιγμα κυρίως μενού" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Οι Χάρτες είναι εκτός σύνδεσης!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Η εφαρμογή Χάρτες χρειάζεται μια ενεργή σύνδεση στο διαδίκτυο ώστε να " +"λειτουργήσει σωστά, αλλά δε βρέθηκε κάποια." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Ελέγξτε τις ρυθμίσεις της σύνδεσης και του διαμεσολαβητή σας." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Λογαριασμός OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Συνδεθείτε για να επεξεργαστείτε τους " +"χάρτες" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Βοηθήστε να βελτιώσουμε τον χάρτη, χρησιμοποιώντας\n" +"ένα λογαριασμό OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Κωδικός πρόσβασης" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Εγγραφή" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Σύνδεση" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Συγγνώμη, κάτι δε λειτούργησε σωστά. Παρακαλούμε δοκιμάστε ξανά, ή " +"επισκεφθείτε το\n" +"OpenStreetMap για να επαναφέρετε τον κωδικό πρόσβασης σας." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Δεν ταιριάζει ο κωδικός επιβεβαίωσης, παρακαλούμε προσπαθήστε ξανά." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Εισάγετε τον κωδικό επιβεβαίωσης που φαίνεται παραπάνω" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Επαλήθευση" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Συνδεδεμένος/η" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ο λογαριασμός στο OpenStreetMap είναι ενεργός." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Αποσύνδεση" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Οδός" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Αριθμός κατοικίας" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Ταχ. κώδικας" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Πόλη" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Τύπος" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Χωρίς" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Προσθήκη πεδίου" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Σχόλιο" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Οι αλλαγές θα γίνουν ορατές σε όλους τους χάρτες που\n" +"χρησιμοποιούν δεδομένα του OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Πρόσφατα χρησιμοποιημένα" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Επόμενο" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Δεν βρέθηκαν αποτελέσματα" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Παρουσιάστηκε σφάλμα" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Σύρετε για να αλλάξετε την σειρά στη διαδρομή" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Άνοιγμα τοποθεσίας" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Αντιγραφή" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Αποστολή σε…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Άνοιγμα στρώσης σχήματος" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "Ά_νοιγμα" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Εναλλαγή ορατότητας" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Αναζήτηση διαδρομής από το GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Τα δρομολόγια για τα μέσα μαζικής μεταφοράς παρέχονται από υπηρεσίες\n" +"από τρίτους.\n" +"Το GNOME δεν μπορεί να εγγυηθεί την ορθότητα των δρομολογίων και των " +"χρονοδιαγραμμάτων που εμφανίζονται.\n" +"Σημειώστε ότι ορισμένοι πάροχοι ενδέχεται να μην περιλαμβάνουν όλους τους " +"διαθέσιμους τρόπους μεταφοράς,\n" +"π.χ. ένας εθνικός πάροχος ενδέχεται να μην περιλαμβάνει αεροπορικές " +"εταιρείες και ένας τοπικός πάροχος θα μπορούσε\n" +"παραλείψει περιφερειακά τρένα.\n" +"Τα ονόματα και τα εμπορικά σήματα που εμφανίζονται πρέπει να θεωρούνται ως " +"σήματα κατατεθέντα όταν ισχύουν." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Εμφάνιση περισσότερων αποτελεσμάτων" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Απόκρυψη ενδιάμεσων στάσεων και πληροφοριών" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Εμφάνιση ενδιάμεσων στάσεων και πληροφοριών" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Αναχώρηση τώρα" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Αναχώρηση στις" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Άφιξη στις" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Εμφάνιση" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Λεωφορεία" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Τραμ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Τρένα" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Μετρό" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Πλοία" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Αεροπλάνα" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Διαμοιρασμός τοποθεσίας" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Προσθήκη σε νέα διαδρομή" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Οδηγίες" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Επισήμανση ως αγαπημένο" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Επεξεργασία στο OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Εστιάστε για να προσθέσετε μια τοποθεσία!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Μεγέθυνση" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Αποτυχία εύρεσης δομής πλακιδίων στον κατάλογο" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Αποτυχία ανάλυσης εγγράφου XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Λείπουν απαιτούμενα γνωρίσματα" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Αποτυχία εύρεσης στοιχείου OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Η τοποθεσία μιας τοπικής δομής πλακιδίων" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Μέγεθος πλακιδίων για τοπικό κατάλογο πλακιδίων" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Εμφάνιση της έκδοσης του προγράμματος" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Αγνόησε διαθεσιμότητα του δικτύου" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Επιλογή λογαριασμού" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Φορτώνεται" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Επιλέξτε μια θέση" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Foursquare. " +"Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in στο %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Γράψτε ένα προαιρετικό μήνυμα για check in στο %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Αδύνατη η εύρεση του «%s» στην κοινωνική υπηρεσία" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Αδύνατη η εύρεση μιας κατάλληλης θέσης για check-in σε αυτήν την τοποθεσία" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Τα διαπιστευτήρια έχουν λήξει, παρακαλούμε ανοίξτε τους διαδικτυακούς " +"λογαριασμούς για να εισέλθετε και να ενεργοποιήσετε αυτόν τον λογαριασμό" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Δεν βρέθηκε τίποτα εδώ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Η τοποθεσία προστέθηκε στον χάρτη, μπορεί να πάρει λίγη ώρα πρωτού " +"εμφανιστεί στον χάρτη και στα αποτελέσματα αναζήτησης." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Χάρτες στο %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Το σύστημα αρχείων είναι μόνο για ανάγνωση" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Δεν έχετε δικαιώματα για να αποθηκεύσετε" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Δεν υπάρχει ο κατάλογος" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Δεν ορίσθηκε όνομα αρχείου" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Αδυναμία εξαγωγής προβολής" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Τρέχουσα τοποθεσία" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "μη έγκυρη συντεταγμένη" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "σφάλμα ανάλυσης" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "άγνωστη γεωμετρία" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Αποτυχία αιτήματος διαδρομής." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Δεν βρέθηκε διαδρομή." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Εκκίνηση!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Όλα τα αρχεία στρώσεων" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Αποτυχία σύνδεσης με την υπηρεσία τοποθεσίας" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Ελληνική μεταφραστική ομάδα GNOME\n" +" Δημήτρης Σπίγγος \n" +" Ευστάθιος Ιωσηφίδης \n" +" Εύα Φωτοπούλου \n" +" Μαρία Θουκιδίδου \n" +" Μαρία Μαυρίδου \n" +" Θάνος Τρυφωνίδης \n" +"\n" +"Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" +"http://gnome.gr/" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Μια εφαρμογή χάρτη για το GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Πνευματικά δικαιώματα © 2011 – 2021 Red Hat, Inc. και συγγραφείς του Χάρτες " +"GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Δεδομένα χαρτών από %s και τους συνεισφέροντες" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Τα πλακίδια των χαρτών παρέχονται από %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Η αναζήτηση παρέχεται από το %s με τη χρήση του %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Αποτυχία ανοίγματος στρώσης" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Θέλετε να συνεχίσετε;" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Πρόκειται να ανοίξετε αρχεία με συνολικό μέγεθος %s MB. Μπορεί να χρειαστεί " +"λίγος χρόνος για τη φόρτωση" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Δεν υποστηρίζεται ο τύπος αρχείου" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Αποτυχία ανοίγματος GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Εσφαλμένο όνομα χρήστη ή κωδικός πρόσβασης" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Επιτυχία" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Εσφαλμένο αίτημα" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Δε βρέθηκε το αντικείμενο" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Σύγκρουση, κάποιος άλλος μόλις τροποποίησε το αντικείμενο" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Το αντικείμενο έχει διαγραφεί" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Ο τρόπος ή η σχέση παραπέμπουν σε μη υπάρχον θυγατρικό" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Όνομα" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Το επίσημο όνομα. Αυτό φαίνεται συνήθως στις πινακίδες." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Διεύθυνση" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Ιστότοπος" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Αυτή δεν είναι έγκυρη URL. Φροντίστε να συμπεριλάβετε http:// ή https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ο επίσημος ιστότοπος. Προσπαθήστε να χρησιμοποιήσετε τη βασική μορφή της " +"διεύθυνσης. Π.χ. http://example.com αντί για http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Τηλέφωνο" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Αριθμός τηλεφώνου. Χρησιμοποιήστε την παγκόσμια μορφή, ξεκινώντας με το " +"σύμβολο +. Προσέχετε τους τοπικούς νόμους περί ιδιωτικότητας, ειδικά για " +"απόρρητα τηλεφωνικά νούμερα." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Ηλεκτρονική αλληλογγραφία" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Αυτή δεν είναι έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας. Φροντίστε να " +"συμπεριλάβετε το πρόθεμα mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Επικοινωνήστε με τη διεύθυνση ηλεκτρονικής αλληλογραφίας για ερωτήσεις. " +"Προσθέστε μόνο διευθύνσεις ηλεκτρονικού ταχυδρομείου που προορίζονται για " +"δημόσια χρήση." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Βικιπαιδεία" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Η μορφή που θα χρησιμοποιηθεί πρέπει να περιλαμβάνει τον κωδικό γλώσσας και " +"έναν τίτλο άρθρου όπως \"en:Article title\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Ώρες λειτουργίας" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Δείτε τον σύνδεσμο στην ετικέτα για βοήθεια στην μορφοποίηση." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Πληθυσμός" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Υψόμετρο" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Υψόμετρο (πάνω από το επίπεδο της θάλασσας) ενός σημείου σε μέτρα." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Πρόσβαση αμαξιδίου" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ναι" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Όχι" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Περιορισμένο" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Υποδεικνυόμενο" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Πρόσβαση στο διαδίκτυο" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Ενσύρματη δικτύωση" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Υπολογιστής" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Υπηρεσία" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Σε πακέτο" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Μόνο" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Θρησκεία" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Ανιμισμός" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Μπαχάι" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Βουδισμός" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Καοδαϊσμός" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Χριστιανισμός" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Κομφουκιανισμός" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Ινδουϊσμός" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Τζαϊνισμός" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Ιουδαϊσμός" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ισλαμισμός" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Πολλαπλές θρησκείες" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Παγανισμός" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Πασαφιανισμός" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Σαηεντολογία" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Σιντό" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Σιχισμός" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Πνευματισμός" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Ταοϊσμός" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Ουνιταριανός Ουνιβερσαλισμός" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Βουντού" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Γιαζιδισμός" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Ζωροαστριανισμός" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Τουαλέτες" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Σημείωση" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Πληροφορίες που χρησιμοποιούνται για την ενημέρωση άλλων χαρτογράφων σχετικά " +"με τις μη προφανείς πληροφορίες σχετικά με ένα στοιχείο, την πρόθεση του " +"δημιουργού κατά τη δημιουργία του, ή συμβουλές για περαιτέρω βελτίωση." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Προσθήκη στο OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Επιλογή τύπου" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Έτοιμο" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Άγνωστο μέρος" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Αποτυχία ανάλυσης Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Συντεταγμένες" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Ακρίβεια" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ακρίβεια: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Αριθμός τηλεφώνου" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Προσφέρει επιλογή σε πακέτο" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Δεν προσφέρει επιλογή σε πακέτο" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Προσφέρει μόνο επιλογή σε πακέτο" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Δημόσια πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Δεν υπάρχει πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Δημόσιο Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Ενσύρματη πρόσβαση στο διαδίκτυο" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Υπολογιστές διαθέσιμοι προς χρήση" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Διατίθεται βοήθεια στο διαδίκτυο" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Δεν υπάρχουν διαθέσιμες τουαλέτες" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Διαθέσιμες τουαλέτες" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Περιορισμένη πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Δεν υπάρχει πρόσβαση με αναπηρικό αμαξίδιο" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Έχει καθοριστεί για αναπηρικ αμαξιδίων" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s κάτω από το επίπεδο της θάλασσας" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Στο επίπεδο της θάλασσας" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Θρησκεία:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Η τοποθεσία δεν βρέθηκε στο OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Οι συντεταγμένες στη URL δεν είναι έγκυρες" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Η URL δεν υποστηρίζεται" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Από %s σε %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Φόρτωση χάρτη για εκτύπωση" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Μπορείτε να ακυρώσετε την εκτύπωση αν αυτό διαρκεί πολλή ώρα" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ακύρωση εκτύπωσης" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Προσθήκη μέσω της τοποθεσίας" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Αφαίρεση μέσω της τοποθεσίας" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Αντίστροφη διαδρομή" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Προσθήκη %s σε %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Αποτυχία ανοίγματος του URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Άνοιγμα με %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "αδυναμία φόρτωσης αρχείου" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Εκτιμώμενος χρόνος: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Οι διαδρομές παρέχονται από %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Έναρξη από %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Έναρξη" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Περπάτημα %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Άφιξη στο %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Άφιξη" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Εμφάνιση οδηγιών περπατήματος" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Απόκρυψη οδηγιών περπατήματος" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Φόρτωση νεοτέρων εναλλακτικών" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Φόρτωση τελευταίων εναλλακτικών" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Δεν βρέθηκαν νεότερες εναλλακτικές." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Δεν βρέθηκαν τελευταίες εναλλακτικές." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Δεν βρέθηκε δρομολόγιο γι' αυτή τη διαδρομή." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Δεν βρέθηκε πάροχος γι' αυτή τη διαδρομή." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s λεπτό" +msgstr[1] "%s λεπτά" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ώρα" +msgstr[1] "%s ώρες" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ώρα" +msgstr[1] "%s:%s ώρες" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Εικοσιτετράωρο" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Από την ανατολή μέχρι τη δύση του ήλιου" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Κάθε ημέρα" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Επίσημες αργίες" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Σχολικές αργίες" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "δεν είναι ανοικτό" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Άγνωστο" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Ακριβής" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s ω" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s λεπτό" +msgstr[1] "%s h %s λεπτά" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s λεπτ" +msgstr[1] "%s λεπτ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s δ" +msgstr[1] "%s δ" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Αυτό το πρόσθετο δεν υποστηρίζει την τελευταία άφιξη" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Συνεχίστε στο %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Συνέχεια" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Στρίψτε αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Στρίψτε αριστερά" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Στρίψτε λίγο αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Στρίψτε λίγο αριστερά" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Απότομη στροφή αριστερά στο %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Απότομη στροφή αριστερά" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Στρίψτε δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Στρίψτε δεξιά" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Στρίψτε λίγο δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Στρίψτε λίγο δεξιά" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Απότομη στροφή δεξιά στο %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Απότομη στροφή δεξιά" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Στον κυκλικό κόμβο, πάρτε την έξοδο προς %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Πάρτε τον κυκλικό κόμβο" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Πάρτε τον ανισόπεδο κόμβο και εξέλθετε από το %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Πάρτε τον ανισόπεδο κόμβο" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Κάντε μια αριστερή αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Κάντε μια αριστερή αναστροφή" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Κάντε μια δεξιά αναστροφή στο %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Κάντε μια δεξιά αναστροφή" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Μπορείτε ακόμη και να κάνετε αναζήτηση για καθορισμένους τύπους " +#~ "τοποθεσιών, όπως “Λέσχες κοντά στην Σταδίου, Αθήνα” ή “Ξενοδοχεία κοντά " +#~ "στην Ομόνοια, Αθήνα”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Ρυθμίσεις ιδιωτικότητας ελέγχου εισόδου στο Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Τελευταία χρησιμοποιούμενη ρύθμιση ιδιωτικότητας ελέγχου εισόδου. Δυνατές " +#~ "τιμές είναι: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ή SELF." + +#~ msgid "Everyone" +#~ msgstr "Όλοι" + +#~ msgid "Friends of friends" +#~ msgstr "Φίλοι των φίλων" + +#~ msgid "Just friends" +#~ msgstr "Μόνο φίλοι" + +#~ msgid "Just me" +#~ msgstr "Μόνο εγώ" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Οι Χάρτες δεν μπορούν να βρουν τη θέση για check in με το Facebook. " +#~ "Παρακαλούμε, επιλέξτε μια από τη λίστα." + +#~ msgid "Check in here" +#~ msgstr "Check in εδώ" + +#~ msgid "Show more information" +#~ msgstr "Εμφάνιση περισσότερων πληροφοριών" + +#~ msgid "Population:" +#~ msgstr "Πληθυσμός:" + +#~ msgid "Altitude:" +#~ msgstr "Υψόμετρο:" + +#~ msgid "Opening hours:" +#~ msgstr "Ώρες λειτουργίας:" + +#~ msgid "Internet access:" +#~ msgstr "Πρόσβαση στο διαδίκτυο:" + +#~ msgid "Toilets:" +#~ msgstr "Τουαλέτες:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Πρόσβαση αμαξιδίου:" + +#~ msgid "Phone:" +#~ msgstr "Τηλέφωνο:" + +#~ msgid "yes" +#~ msgstr "ναι" + +#~ msgid "limited" +#~ msgstr "περιορισμένη" + +#~ msgid "no" +#~ msgstr "όχι" + +#~ msgid "designated" +#~ msgstr "υποδεικνυόμενο" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Η URL του OpenStreetMap δεν είναι έγκυρη" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ενσύρματο δίκτυο" + +#~ msgid "terminal" +#~ msgstr "υπολογιστής" + +#~ msgid "service" +#~ msgstr "εξυπηρέτηση" + +#~ msgid "Don’t have an account?" +#~ msgstr "Δεν έχετε λογαριασμό;" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Προσθήκη προορισμού" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Αναζήτηση διαδρομής από το OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Άνοιγμα με άλλη εφαρμογή" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Press enter to search" +#~ msgstr "Πατήστε enter για αναζήτηση" + +#~ msgid "Quit" +#~ msgstr "Έξοδος" + +#~ msgid "OK" +#~ msgstr "Εντάξει" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Άνοιγμα στρώσης σχήματος…" + +#~ msgid "Load Map Layer" +#~ msgstr "Φόρτωση στρώσης χάρτη" + +#~ msgid "Open Layer" +#~ msgstr "Άνοιγμα στρώσης" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Η τοποθεσία δεν βρέθηκε" + +#~ msgid "Postal code: %s" +#~ msgstr "Ταχ. κώδικας: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Κωδικός χώρας: %s" + +#~ msgid "Population: %s" +#~ msgstr "Πληθυσμός: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Πρόσβαση αμαξιδίου: %s " + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Αποτυχία ανάλυσης αρχείου GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Κοινή χρήση" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Τελευταία γνωστή θέση και ακρίβεια" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Τελευταία γνωστή θέση (πλάτος και μήκος σε μοίρες) και ακρίβεια (σε " +#~ "μέτρα)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Περιγραφή της τελευταίας γνωστής θέσης του χρήστη." + +#~ msgid "User set last known location" +#~ msgstr "Ορισμός της τελευταίας γνωστής τοποθεσίας από τον χρήστη" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Εάν η τελευταία γνωστή τοποθεσία ορίστηκε χειροκίνητα από τον χρήστη." + +#~ msgid "I’m here!" +#~ msgstr "Είμαι εδώ!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Προς" + +#~ msgid "From" +#~ msgstr "Από" + +#~ msgid " km2" +#~ msgstr "km2" + +#~ msgid "Satellite" +#~ msgstr "Δορυφόρος" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 00000000..4816211a --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,2054 @@ +# British English translation of gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER. +# This file is distributed under the same licence as the gnome-maps package. +# Philip Withnall , 2013. +# Bruce Cowan , 2017-2020. +# Zander Brown , 2019-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-02-16 22:28+0000\n" +"Last-Translator: Zander Brown \n" +"Language-Team: English - United Kingdom \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Project-Style: gnome\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Find places around the world" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "The GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "A simple maps application" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Allows your location to be shown on the map." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom level" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Map type" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "The type of map to display (street, aerial, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Window size" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Window size (width and height)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Window position" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X and Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximised" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximisation state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook check-in privacy setting" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Last used transportation type for routing" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Night mode" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Whether the application is in night mode." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Use hybrid aerial tiles" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Whether aerial tiles should use hybrid style (with labels)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibility" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post on Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post on Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancel" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Everyone" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Friends of friends" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Just friends" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Just me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route from here" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Add intermediate destination" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route to here" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "What’s here?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copy Location" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export view" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Export" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Include route and markers" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Go to current location" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Choose map type" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom out" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Toggle favourites" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Print Route" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Show Shortcuts" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Search" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toggle route planner" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Print route" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quit" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Map View" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom out" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toggle scale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Go to current location" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Switch to street view" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Switch to aerial view" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Open shape layer" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Show Labels" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Open Shape Layer…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Turn on location services to find your location" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancel" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Location Settings" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Night Mode" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Set up OpenStreetMap Account" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Export as Image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "About Maps" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Open main menu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Maps is offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Check your connection and proxy settings." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Sign in to edit maps" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help to improve the map, using an\n" +"OpenStreetMap account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Sign up" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Sign In" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "The verification code didn’t match, please try again." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Enter verification code shown above" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verify" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Signed In" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Your OpenStreetMap account is active." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sign Out" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Street" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "House number" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postal code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "City" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "None" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Add Field" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recently Used" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Next" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No results found" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "An error has occurred" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Drag to change order of the route" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Open Location" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send To…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Open Shape Layer" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Open" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Toggle visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Route search by GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Show more results" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Hide intermediate stops and information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Show intermediate stops and information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Leave Now" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Leave By" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrive By" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Show" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Underground" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferries" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplanes" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Share location" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Add to new route" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Directions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Mark as favourite" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Edit on OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in to add location!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom In" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Failed to find tile structure in directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Failed to parse XML document" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Missing required attributes" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Could not find OSM element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "A path to a local tiles directory structure" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tile size for local tiles directory" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Show the version of the program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignore network availability" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Select an account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Loading" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Select a place" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in to %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Write an optional message to check in to %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Cannot find “%s” in the social service" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Cannot find a suitable place to check-in in this location" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nothing found here!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Maps at %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filesystem is read only" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "You do not have permission to save there" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "The directory does not exist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No filename specified" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Unable to export view" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Current Location" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "invalid coordinate" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "parse error" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "unknown geometry" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Route request failed." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No route found." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "All Layer Files" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Failed to connect to location service" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Philip Withnall \n" +"David King \n" +"Bruce Cowan \n" +"Zander Brown " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:594 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Map data by %s and contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Map tiles provided by %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Search provided by %s using %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Failed to open layer" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Do you want to continue?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "File type is not supported" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Failed to open GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Incorrect user name or password" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Success" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Bad request" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Object not found" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, someone else has just modified the object" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Object has been deleted" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Way or relation refers to non-existing children" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Name" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "The official name. This is typically what appears on signs." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Address" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "This is not a valid URL. Make sure to include http:// or https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Phone" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"The format used should include the language code and the article title like " +"“en:Article title”." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Opening hours" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "See the link in the label for help on format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevation (height above sea level) of a point in metres." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Wheelchair access" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Yes" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limited" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designated" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internet access" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toilets" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Add to OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Select Type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Done" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Unnamed place" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Failed to parse Geo URI" + +#: src/placeView.js:260 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Coordinates" + +#: src/placeView.js:264 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Accuracy" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Accuracy: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +#| msgid "House number" +msgid "Phone number" +msgstr "Phone number" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Public internet access" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +#| msgid "Internet access" +msgid "No internet access" +msgstr "No internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Public Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Wired internet access" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computers available for use" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internet assistance available" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "No toilets available" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toilets available" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Wheelchair accessible" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Limited wheelchair accessibility" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Not wheelchair accessible" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Designated for wheelchair users" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Place not found in OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Coordinates in URL are not valid" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL is not supported" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "From %s to %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Loading map tiles for printing" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "You can abort printing if this takes too long" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abort printing" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Add via location" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via location" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverse route" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Add %s to %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Failed to open URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Open with %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "failed to load file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimated time: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraries provided by %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Walk %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrive" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Show walking instructions" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Hide walking instructions" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Load earlier alternatives" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Load later alternatives" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No earlier alternatives found." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No later alternatives found." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No timetable data found for this route." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No provider found for this route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hour" +msgstr[1] "%s hours" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hour" +msgstr[1] "%s:%s hours" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Around the clock" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "From sunrise to sunset" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +#| msgid "every day" +msgid "Every day" +msgstr "Every day" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Public holidays" + +#: src/translations.js:174 +#| msgid "school holidays" +msgid "School holidays" +msgstr "School holidays" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "not open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Unknown" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "This plug-in doesn't support latest arrival" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue on %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turn left on %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Turn left" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turn slightly left on %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Turn slightly left" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turn sharp left on %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Turn sharp left" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turn right on %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Turn right" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turn slightly right on %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Turn slightly right" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turn sharp right on %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Turn sharp right" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "In the roundabout, take exit %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "In the roundabout, take exit to %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Take the roundabout" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Take the lift and get off at %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Take the lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Make a left u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Make a left u-turn" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Make a right u-turn onto %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Make a right u-turn" + +#~ msgid "Find a Route" +#~ msgstr "Find a Route" + +#~ msgid "Check in here" +#~ msgstr "Check in here" + +#~ msgid "Show more information" +#~ msgstr "Show more information" + +#~ msgid "Population:" +#~ msgstr "Population:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Opening hours:" + +#~ msgid "Internet access:" +#~ msgstr "Internet access:" + +#~ msgid "Toilets:" +#~ msgstr "Toilets:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Wheelchair access:" + +#~ msgid "Phone:" +#~ msgstr "Phone:" + +#~ msgid "yes" +#~ msgstr "yes" + +#~ msgid "limited" +#~ msgstr "limited" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designated" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL is not valid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "wired" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "service" + +#~ msgid "Primary menu" +#~ msgstr "Primary menu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Don’t have an account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Add destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Route search by OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "Quit" + +#~ msgid "Load Map Layer" +#~ msgstr "Load Map Layer" + +#~ msgid "Open with another application" +#~ msgstr "Open with another application" + +#~ msgid "Press enter to search" +#~ msgstr "Press enter to search" + +#~ msgid "Open Layer" +#~ msgstr "Open Layer" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "metres)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "Last known location was set manually by user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I'm here!" +#~ msgstr "I’m here!" + +#~ msgid "Satellite" +#~ msgstr "Satellite" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 00000000..70521d83 --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1889 @@ +# Esperanto translation for gnome-maps. +# Copyright (C) 2013 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ryan LORTIE , 2013. +# Matthew CHISHOLM , 2013. +# Daniel PUENTES , 2015. +# Nicolas MAIA , 2015. +# Baptiste DARTHENAY , 2016. +# Carmen Bianca BAKKER , 2018. +# Tirifto , 2019. +# Kristjan SCHMIDT , 2013-2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-12-15 18:16+0000\n" +"PO-Revision-Date: 2019-12-18 23:21+0200\n" +"Last-Translator: Kristjan SCHMIDT \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-DamnedLies-Scope: partial\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapoj" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trovi lokojn tra la mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapoj donas al vi rapidan aliron al mapoj de la tuta mondo. Ĝi ebligas vin " +"rapide trovi la lokon, kiun vi serĉas, serĉante urbon aŭ straton, aŭ trovi " +"lokon por renkonti amikon." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapoj uzas la kunlaboran datumbazon OpenStreetMap, farita de centoj da miloj " +"da personoj tra la tuta mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Vi eĉ povas serĉi specifajn specojn de lokoj, kiel ekzemple “Trinkejo " +"proksime al Main Street, Bostono” aŭ “Hotelo proksime al Alexanderplatz, " +"Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "La projekto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:513 +msgid "Maps" +msgstr "Mapoj" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Simpla mapa aplikaĵo" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapoj;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ebligas montri vian pozicion sur la mapo." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laste vidita loko" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinatoj de laste vidita loko." + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Speco de mapo" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fenestra grando" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fenestra grando (larĝo kaj alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fenestra pozicio" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozicio de fenestro (x kaj y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenestro maksimumigita" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maksimumiga stato de fenestro" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimuma numero da serĉa rezultoj" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimuma numero da serĉa rezultoj de geocode-a serĉo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombro de lastatempaj lokoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombro de lastatempaj lokoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombro de lastatempaj kursoj por konservi" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombro da lastatempe vizititaj kursoj por konservi." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Privateca agordo de Facebook-prezentiĝo" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"EVERYONE (ĉiuj), FRIENDS_OF_FRIENDS (amikoj de amikoj), ALL_FRIENDS (ĉiuj " +"amikoj), aŭ SELF (sin mem)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Privateca agordo de Foursquare-prezentiĝo" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Laste uzata privateca agordo de Facebook-prezentiĝo. Eblaj valoroj estas: " +"public (publika), followers (sekvantoj), aŭ private (privata)." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Facebook" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Facebook ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Elsendo de Foursquare-prezentiĝo al Twitter" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikas ĉu Foursquare elsendu la prezentiĝon kiel publikaĵo en lakonto de " +"Twitter ligita al la konto de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-uzantonomo aŭ retpoŝtadreso" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikas ĉu la uzanto estas salutinta por redakti OpenStreetMap-datumojn." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Videbleco" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Afiŝi ĉe Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Alfiŝi ĉe Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Nuligi" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "P_rezentiĝi" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Ĉiu" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Amikoj de amikoj" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Nur amikoj" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Nur mi" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Publika" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Sekvantoj" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privata" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Kio estas ĉi tie?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Kopii lokon" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "Elporti kiel bildo" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Elporta vido" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Elporti" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Inkluzivi kurson kaj markilojn" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ĝenerale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Montri la klavkombinojn" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Serĉo" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Presi la kurson" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ĉesi" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Mapa vido" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zomi" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Malzomi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Baskuligi skalon" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Ŝalti al strata vido" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Baskuligi al aera vido" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Malfermi forman tavolon" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Malfermi forman tavolon…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Enŝalti lokajn servojn por trovi vian lokon" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Nuligi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Agordoj de loko" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Agordi OpenStreetMap-konton" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Pri Mapoj" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "Iri al aktuala loko" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "Elekti specon de mapo" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Malzomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Zomi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "Baskuligi kursan planilon" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "Baskuligi ŝataĵojn" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "Presi la kurson" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Mapoj estas nekonektitaj!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapoj bezonas interretaliron por bone funkcii, sed oni ne trovis ĝin." + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "Kontrolu vian konekton kaj agordojn de la prokurilo." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Aldoni al nova kurso" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kunhavigi lokon" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Marki kiel ŝatatan" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Prezentiĝi ĉi tie" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Salutu por redakti mapojn" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Helpu plibonigi la mapon uzante\n" +"OpenStreetMap-konton." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Retpoŝtadreso" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasvorto" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Saluti" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Ĉu vi ne havas konton?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Pardonon, tio ne funkciis. Bonvolu provi denove, aŭ viziti\n" +"OpenStreetMap por reagordi vian pasvorton." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "La kontrolkodo ne kongruis, bonvolu provi denove." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Bonvolu enigi la ĉi supran kontrolkodon" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Kontroli" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Salutinta" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Via OpenStreetMap-konto estas aktiva." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Adiaŭi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strato" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Domnumero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poŝtkodo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Urbo" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Neniu" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aldoni kampon" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Mapaj redaktoj videblos en ĉiuj mapoj kiuj uzas\n" +"OpenStreetMap-datumojn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Freŝe uzitaj" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sekva" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Redakti en OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Montri pli da informoj" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ne trovis rezulton" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ŝovu por ŝangi la ordon de la kurso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Kopii" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Sendi al…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Malfermi forman tavolon" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Malfermi" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Baskuligi videblecon" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Kursa serĉado de GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Planado de kursoj kun publikaj transportiloj estas provizata\n" +"de eksteraj servoj.\n" +"GNOME ne povas garantii ĝustecon de la montrataj kursoj kaj planoj.\n" +"Rimarku, ke iuj provizantoj eble ne traktas ĉiujn specojn de transportado. " +"Ekzemple,\n" +"landa provizanto eble ne traktus aviadon, kaj loka liveranto eble ne traktus " +"regionajn\n" +"vagonarojn.\n" +"Nomojn kaj varmarkojn prezentatajn rigardu kiel registritajn posedaĵojn, " +"kiam tio taŭgas." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montri pli da rezultoj" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Kaŝi intermezajn staciojn kaj informojn" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Montri intermezajn staciojn kaj informojn" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Ekveturi nun" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Ekveturi je" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Alveni je" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Montri" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busoj" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramoj" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vagonaroj" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subtera fervojo" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Pramŝipoj" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviadiloj" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Aktuala loko" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "Precizeco: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zomu por aldoni lokon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zomi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Malsukcesis trovi kahelan strukturon en dosierujo" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Malsukcesis analizi la XML-dokumenton" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mankas bezonataj atributoj" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ne sukcesis trovi la OSM-elementon" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Vojo al loka kahela dosieruja strukturo" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Montri la version de la programo" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Malatenti atingeblecon de reto" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Elekti konton" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Ŝarĝante" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Elekti lokon" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Facebook. Bonvole elektu unu " +"el ĉi tiu listo." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapoj ne eblas trovi la lokon por prezentiĝi ĉe Foursquare. Bonvole elektu " +"unu el ĉi tiu listo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prezentiĝi al %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skribi malnepran mesaĝon por prezentiĝi ĉe %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Eraro okazis" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne povis trovi na “%s” en la socia servo" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne trovis taŭgan lokon por prezentiĝi en tiu ĉi lokon" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"La salutiloj malvalidiĝis, bonvole lanĉu Enretajn Kontojn por saluti kaj " +"ebligi ĉi tiun konton" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "Kurso ekde ĉi tie" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "Aldoni alvenon" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "Kurso ĝis ĉi tie" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Nenio trovita ĉi tie!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Loko estis aldonita al la mapo, rimarku ke ĝi povas preni momenton antaŭ ĝi " +"montras sur la mapo kaj en serĉrezultoj." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapoj ĉe %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosiersistemo estas nurlega" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vi ne havas la permeson por tie konservi" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La dosierujo ne ekzistas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Neniu dosiernomo specifita" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne eblas elporti la vidon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "nevalida koordinato" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "analizeraro" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "nekonata geometrio" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Kurs-peto malsukcesis." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Ne trovis kurson." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Ek!" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Ĉiuj tavolaj dosieroj" + +#: src/mainWindow.js:446 +msgid "Failed to connect to location service" +msgstr "Malsukcesis konekti al loka servo" + +#: src/mainWindow.js:511 +msgid "translator-credits" +msgstr "" +"Ryan LORTIE\n" +"Kristjan SCHMIDT\n" +"Matthew CHISHOLM\n" +"Daniel PUENTES\n" +"Nicolas MAIA\n" +"Baptiste DARTHENAY\n" +"Carmen Bianca BAKKER \n" +"Tirifto " + +#: src/mainWindow.js:514 +msgid "A map application for GNOME" +msgstr "Mapa aplikaĵo por GNOME" + +#: src/mainWindow.js:525 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Kopirajto © 2011 – 2019 Red Hat, Inc. kaj la kontribuintoj de GNOME Maps" + +#: src/mainWindow.js:545 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Mapdatumoj de %s kaj kontribuantoj" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:561 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapajn kahelojn provizas %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:590 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Serĉo povigita de %s per %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Dosiertipo ne estas subtenata" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Malsukcesis malfermi la tavolon" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Malsukcesis malfermi la Geo-URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Malkorekta uzantonomo aŭ pasvorto" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Sukceso" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Malbona peto" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekto ne trovita" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikto, iu alia ĵus redaktis tiun objekton" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "La objekto estis forigita" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vojo aŭ rilato referencas al neekzistantaj idoj" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nomo" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "La oficiala nomo. Tio ĉi kutime aperas sur signoj." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adreso" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Retejo" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La oficiala retejo. Provo uzi la plej bazan formon de URL t.e. http://" +"example.com anstataŭ http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefona numero. Uzu la internacian formon, komencantan kun la signo “+”. " +"Observu lokajn privatecajn leĝojn, precipe por privataj telefonaj numeroj." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Vikipedio" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"La uzata formo devus inkluzivi lingvan kodon kaj la artikolan titolon, kiel " +"“eo:artikola titolo”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Horoj de malfermo" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Vidi la ligon en la etikedo por helpo sur formo." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Loĝantaro" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitudo" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Alteco (alto super mara nivelo) de punkto per metroj." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Rulseĝa aliro" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Jes" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Limigita" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Indikita" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Interreta aliro" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Sendrata" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Drata" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminalo" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Servo" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Religio" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaismo" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budaismo" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaismo" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristanismo" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfuceismo" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Ĝajnismo" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judismo" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islamo" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Pluraj religioj" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologio" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Ŝintoismo" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikismo" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritismo" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitaria Universalismo" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voduismo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidismo" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zaratuŝtrismo" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Necesejoj" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Noto" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informo uzota por sciigi nememkompreneblajn informojn al aliaj mapistoj pri " +"elemento, intenco de ĝia aŭtoro, aŭ helpiloj por plia plibonigado." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aldoni al OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Elekti tipon" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Farite" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Sennoma loko" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Loĝantaro:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Alto:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Horoj de malfermo:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Interreta aliro:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Religio:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Necesejoj:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Rulseĝa aliro:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefono:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Malsukcesis analizi Geo-URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "jes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "limigita" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "indikita" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Loko ne troviĝis en OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL de OpenStreetMap ne estas valida" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatoj en URL ne estas validaj" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL ne estas subtenata" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s ĝis %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ŝarĝante maperojn por presado" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vi rajtas ĉesigi presadon se tro daŭras" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ĉesigi presadon" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aldoni per loko" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Forigi per loko" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Renversi kurson" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aldoni %s al %s" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "Malsukcesis malfermi la URI" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "Malfermi per %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "malsukcesis ŝarĝi la dosieron" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Antaŭkalkulita tempo: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Kursojn provizas %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Alveturi je %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Ek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Promeni %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Alveni je %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Alveni" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montri promenajn instrukciojn" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Kaŝi promenajn instrukciojn" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ŝargi antaŭajn alternativojn" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ŝargi postajn alternativojn" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Neniu antaŭa alternativo trovita." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Neniu posta alternativo trovita." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-e-a de %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Neniuj horaraj datumoj trovitaj por ĉi tiu kurso." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Neniu provizanto trovita por ĉi tiu kurso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minuto" +msgstr[1] "%d minutoj" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d horo" +msgstr[1] "%d horoj" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d horo" +msgstr[1] "%d:%02d horoj" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "tuttaga" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "de sunleviĝo ĝis sunsubiro" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "ĉiutaga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "publikaj ferioj" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "lernejaj ferioj" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ne malfermita" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "drata" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminalo" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "servo" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Nekonata" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Preciza" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mej" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Daŭrigi je %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Daŭrigi" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Turni maldekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Turni maldekstren" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Turni maldekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Turni maldekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Turni maldekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Turni maldekstren akre" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Turni dekstren je %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Turni dekstren" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Turni dekstren iomete je %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Turni dekstren iomete" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Turni dekstren akre je %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Turni dekstren akre" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Iru el la rondirejo per eliro %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Iru el la rondirejo per eliro al %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Iru la rondirejon" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Uzu la lifton kaj eliru je %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Uzu la lifton" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Turni maldekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Turni maldekstren reen" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Turniĝu dekstren reen al %s" + +#: src/transitplugins/openTripPlanner.js:1233 +#| msgid "Make a rigth u-turn" +msgid "Make a right u-turn" +msgstr "Turni dekstren reen" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Kursa serĉado de OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Malfermi per alia aplikaĵo" + +#~ msgid "Press enter to search" +#~ msgstr "Premu la enigan klavon por serĉi" + +#~ msgid "Quit" +#~ msgstr "Ĉesi" + +#~ msgid "Load Map Layer" +#~ msgstr "Ŝarĝi mapan tavolon" + +#~ msgid "Open Layer" +#~ msgstr "Malfermi tavolon" + +#~ msgid "OK" +#~ msgstr "En ordo" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f me" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Landkodo: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Laste-sciita loko kaj ekzakto" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Laste-sciita loko (latitudo kaj longitudo en gradoj) kaj ekzakto (en " +#~ "metroj)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Priskribo de laste sciita loko de la uzanto." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ĉu la laste sciatan lokon agordis permane la uzanto" + +#~ msgid "I’m here!" +#~ msgstr "Mi estas ĉi tie!" + +#~ msgid "Satellite" +#~ msgstr "Satelito" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/es.po b/po/es.po new file mode 100644 index 00000000..8a90b5ba --- /dev/null +++ b/po/es.po @@ -0,0 +1,2154 @@ +# Spanish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# Daniel Mustieles , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 13:34+0200\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Spanish - Spain \n" +"Language: es_ES\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 40.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encuentre lugares por todo el mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas le ofrece un acceso rápido a mapas de todo el mundo. Le permite " +"encontrar lugares rápidamente buscando por ciudad o por calle, o buscar un " +"lugar para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa la base de datos colaborativa OpenStreetMap, hecha por cientos de " +"miles de personas de todo el mundo." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "El Proyecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una sencilla aplicación de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite mostrar su ubicación en el mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última ubicación vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas de la última ubicación vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "El tipo de mapa que mostrar (callejero, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño de la ventana" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño de la ventana (anchura y altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición de la ventana" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición de la ventana (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ventana maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado maximizado de la ventana" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de búsqueda" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de búsqueda para búsquedas por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recientes que guardar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rutas visitadas recientemente que guardar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidad del registro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidad de registro de Foursquare usada. Los " +"valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Facebook asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter del registro en Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica si Foursquare debe difundir el registro como un mensaje nuevo en la " +"cuenta de Twitter asociada a la cuenta de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nombre de usuario de OpenStreetMap o cuenta de correo-e" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica si el usuario ha iniciado sesión para editar los datos de " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para la ruta" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo nocturno" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "indica si la aplicación está en modo nocturno." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Usar cuadrículas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica si las cuadrículas aéreas se deben usar con un estilo híbrido (con " +"etiquetas)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidad" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publicar el Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publicar el Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Registrar" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Añadir destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta hasta aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "¿Qué hay aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar ubicación" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluir ruta y marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Elegir el tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Reducir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Conmutar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atajos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Conmutar el planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Salir" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reducir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Conmutar escalado" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir a la ubicación actual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Cambiar a vista de calle" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Cambiar a vista aérea" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir capa de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir capa de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicios de ubicación para encontrar su posición" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configuración de la ubicación" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo nocturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar cuenta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagen" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atajos del teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca de Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir el menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necesita una conexión a Internet activa para funcionar correctamente, " +"pero no se ha encontrado ninguna." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Compruebe la configuración de su conexión y de su proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cuenta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ayude a mejorar el mapa, usando una\n" +"cuenta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo-e" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contraseña" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Eso no ha funcionado. Inténtelo de nuevo o visite\n" +"OpenStreetMap para restablecer su contraseña." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "El código de verificación no coincide, inténtelo de nuevo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduzca el código de verificación mostrado" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Su cuenta de OpenStreetMap está activada." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Cerrar sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Calle" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ciudad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ninguno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Añadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Los cambios en los mapas serán visibles en todos los mapas que usen\n" +"datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recientemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Siguiente" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "No se han encontrado resultados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ha ocurrido un error" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastre para cambiar el orden de la ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir ubicación" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Registrar…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir capa de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Conmutar estado visible" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta buscada por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itinerarios de las rutas para viajes públicos los proporciona\n" +"un servicio de terceros.\n" +"GNOME no puede garantizar la corrección de los itinerarios y los tiempos " +"mostrados.\n" +"Algunos proveedores pueden no incluir todos mos medios de transporte " +"disponibles,\n" +"ej. un proveedor nacional puede no incluir aerolíneas y un proveedor local " +"puede\n" +"no incluir trenes regionales.\n" +"Los nombres y las marcas mostradas se consideran marcas registradas cuando " +"sea aplicable." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar más resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar información y paradas intermedias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar información y paradas intermedias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Salir ahora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Salir en" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Llegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenes" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviones" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Compartir ubicación" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Añadir a la ruta nueva" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direcciones" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorita" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para añadir una ubicación." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falló al buscar la estructura de la cuadrícula en la carpeta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falló al analizar el documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan los atributos necesarios" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "No se pudo encontrar el elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Una ruta a la estructura de carpetas locales de cuadrículas" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tamaño de cuadrícula para carpeta de cuadrículas locales" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostrar la versión del programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar la disponibilidad de la red" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ARCHIVO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccionar una cuenta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccionar un lugar" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas no puede encontrar el lugar con el que registrarse en Foursquare. " +"Seleccione uno de la lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Registrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escribir un mensaje opcional para registrarse en %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No se puede encontrar «%s» en la red social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"No se puede encontrar un lugar adecuado para registrarse en esta ubicación" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las credenciales han caducado. Abra las Cuentas en línea para iniciar sesión " +"y activar esta cuenta." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "No se ha encontrado nada aquí." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Se ha añadido la ubicación al mapa, tenga en cuenta que puede tardar un rato " +"antes de mostrarse en el mapa y en los resultados de búsqueda." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "El sistema de archivos es de solo lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tiene permisos para guardar ahí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La carpeta no existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "No se ha especificado un nombre de archivo" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "No se puede exportar la vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ubicación actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada no válida" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error al analizar" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometría desconocida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Falló al solicitar la ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "No se ha encontrado la ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Empezar" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos los archivos de capas" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Falló al conectar al servicio de ubicación" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Daniel Mustieles , 2013 - 2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Una aplicación de mapas para GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. y los autores de Mapas de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos de mapas por %s y colaboradores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Cuadrículas de mapas proporcionadas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Búsqueda proporcionada por %s usando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Falló al abrir la capa" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "¿Quiere continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Va a abrir archivos con un total de %s MB. Esto puede tardar bastante tiempo " +"en cargar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipo de archivo no soportado" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Falló al abrir el GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nombre de usuario o contraseña no válidos" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Correcto" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Solicitud incorrecta" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objeto no encontrado" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicto, alguien acaba de modificar el objeto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Se ha eliminado el objeto" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La vía o la relación se refiere a hijos no existentes" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nombre" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "El nombre oficial. Esto es lo que normalmente aparece en las firmas." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Dirección" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Página web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Esto no es un URL válido. asegúrese de incluir http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"La página web oficial. Pruebe a usar la forma más sencilla de URL, por " +"ejemplo http://ejemplo.com en lugar de of http://ejemplo.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use el formato internacional, empezando por el signo +. " +"Tenga en cuenta las leyes de privacidad locales, especialmente en el caso de " +"números privados." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correo-e" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Esto no es una dirección de correo válida. Asegúrese de no incluir el " +"prefijo «»mailto." + +#: src/osmEditDialog.js:161 +#| msgid "" +#| "Contact e-mail address for inquiries.Add only email addresses that are " +#| "intended to be publicly used." +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Dirección de correo de contacto para preguntas. Añada sólo las direcciones " +"de correo que quiera usar públicamente." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"El formato usado debe incluir el código del idioma y el título del artículo, " +"similar a «es:Título del artículo»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horario de apertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Consulte el enlace en la etiqueta para obtener ayuda sobre el formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Población" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre el nivel del mar) de un punto, en metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acceso para sillas de ruedas" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sí" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acceso a Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Inalámbrica" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cableada" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servicio" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Para llevar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Sólo" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religión" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduismo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Varias religiones" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciología" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Sintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sijismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarismo universalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para notificar a otros mapeadores sobre información no " +"obvia sobre un elemento, un intento del autor de crearlo o pistas sobre " +"futuras mejoras." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Añadir a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccionar tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Hecho" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Lugar sin nombre" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falló al analizar el URI de Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisión" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número de teléfono" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ofrece para llevar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "No ofrece para llevar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Sólo ofrece para llevar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acceso público a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sin acceso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Red Wi-Fi pública" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acceso a Internet por cable" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordenadores disponibles para su uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Asistencia de Internet disponible" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sin baños disponibles" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Baños disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accesible para sillas de ruedas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accesibilidad limitada para sillas de ruedas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Sin acceso para sillas de ruedas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Diseñador para usuarios de sillas de ruedas" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s por debajo del nivel del mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "A nivel del mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religión:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar no encontrado en OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Las coordenadas del URL no son válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL no soportado" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando mapa para imprimir" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puede cancelar la impresión si esto tarda mucho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Cancelar la impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Añadir ubicación de la vía" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar ubicación de la vía" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Ruta inversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Añadir %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falló al abrir el URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falló al cargar el archivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tiempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios proporcionados por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Empezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Llegar a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Llegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucciones del camino" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucciones del camino" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "No hay alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "No hay alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "No hay datos en la tabla de tiempos para esta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "No se ha encontrado un proveedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Todo el día" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Desde el amanecer hasta la puesta del sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Festivos" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacaciones escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "cerrado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconocida" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este complemento no soporta la última llegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continúe por %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continúe" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Gire a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Gire a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Gire levemente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Gire levemente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Gire bruscamente a la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Gire bruscamente a la izquierda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Gire a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Gire a la derecha" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Gire levemente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Gire levemente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Gire bruscamente a la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Gire bruscamente a la derecha" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "En la rotonda, coja la salida %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "En la rotonda, coja la salida hacia %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Entre en la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Coja el ascensor y salga en %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Coja el ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Dé la vuelta hacia la izquierda en %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Dé la vuelta hacia la izquierda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Dé la vuelta hacia la derecha en %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Dé la vuelta hacia la derecha" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Configuración de privacidad del registro de Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Última configuración de privacidad de registro de Facebook usada. Los " +#~ "valores posibles son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "También puede buscar por tipos de ubicaciones específicos como «Bares " +#~ "cerca de la Gran Vía, Madrid» u «Hoteles cerca de la Plaza Mayor, Madrid»." + +#~ msgid "Everyone" +#~ msgstr "Todos" + +#~ msgid "Friends of friends" +#~ msgstr "Amigos de amigos" + +#~ msgid "Just friends" +#~ msgstr "Solo amigos" + +#~ msgid "Just me" +#~ msgstr "Solo yo" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapas no puede encontrar el lugar con el que registrarse en Facebook. " +#~ "Seleccione uno de la lista." + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "El URL de OpenStreetMap no es válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Buscar una ruta" + +#~ msgid "Check in here" +#~ msgstr "Registrarse aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostrar más información" + +#~ msgid "Population:" +#~ msgstr "Población:" + +#~ msgid "Altitude:" +#~ msgstr "Altitud:" + +#~ msgid "Opening hours:" +#~ msgstr "Horario de apertura:" + +#~ msgid "Internet access:" +#~ msgstr "Acceso a Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Baño:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acceso para sillas de ruedas:" + +#~ msgid "Phone:" +#~ msgstr "Teléfono:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "wired" +#~ msgstr "cableada" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servicio" + +#~ msgid "Primary menu" +#~ msgstr "Menú primario" + +#~ msgid "Don’t have an account?" +#~ msgstr "¿No tiene una cuenta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Añadir destino" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta buscada por OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Abrir con otra aplicación" + +#~ msgid "Press enter to search" +#~ msgstr "Pulse Intro para buscar" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Salir" + +#~ msgid "OK" +#~ msgstr "Aceptar" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Abrir capa de formas…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar capa de mapa" + +#~ msgid "Open Layer" +#~ msgstr "Abrir capa" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pies" + +#~ msgid "Position not found" +#~ msgstr "Posición no encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código del país: %s" + +#~ msgid "Population: %s" +#~ msgstr "Población: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acceso para sillas de ruedas: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falló al analizar el archivo GeoJSON" + +#~ msgid "_Share" +#~ msgstr "_Compartir" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última ubicación conocida y precisión" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última ubicación conocida (latitud y longitud en grados) y precisión (en " +#~ "metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descripción de la última ubicación conocida del usuario." + +#~ msgid "User set last known location" +#~ msgstr "Última ubicación conocida establecida por el usuario" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indica si la última ubicación conocida la estableció el usuario " +#~ "manualmente." + +#~ msgid "I’m here!" +#~ msgstr "Yo estoy aquí" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "A" + +#~ msgid "From" +#~ msgstr "Desde" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satélite" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/et.po b/po/et.po new file mode 100644 index 00000000..13982e71 --- /dev/null +++ b/po/et.po @@ -0,0 +1,148 @@ +# Estonian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mattias Põldaru , 2013, +# Priit Laes , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-11 10:56+0000\n" +"PO-Revision-Date: 2013-09-20 10:20+0300\n" +"Last-Translator: Priit Laes \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaardirakendus võimaldab kiiret ligipääsu kaartidele üle terve maailma. " +"See võimaldab kiiresti leida otsitava koha kasutades linna- või tänavanime, või" +"määrata kohta sõbraga kokkusaamiseks." + +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" +"
  • Otsi riiki, regiooni, linna või tänavat.
  • Otsi erinevat liiki " +"asukohti nagu \"Pubs near Main Street, Boston\" või \"WiFi Access near " +"Alexanderplatz, Berlin\"
  • " + +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaardid kasutavad ühistööna valminud OpenStreetMap andmebaasi, millele on " +"kaasa aidanud tuhanded inimesed üle maailma." + +#. Translators: This is the program name. +msgid "Maps" +msgstr "Kaardid" + +msgid "A simple maps application" +msgstr "Lihtne kaardirakendus" + +msgid "Maps;" +msgstr "Kaardid;Kaart;" + +msgid "Window size" +msgstr "Akna suurus" + +msgid "Window size (width and height)." +msgstr "Akna suurus (laius ja kõrgus)." + +msgid "Window position" +msgstr "Akna asukoht" + +msgid "Window position (x and y)." +msgstr "Akna asukoht (x ja y)." + +msgid "Window maximized" +msgstr "Aken on maksimeeritud" + +msgid "Window maximized state" +msgstr "Akna maksimeerituse olek" + +msgid "Last known location and accuracy" +msgstr "Viimane teadaolev asukoht ja täpsus" + +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"Viimane teadaolev asukoht (laius- ja pikkuskraadid) ning täpsus (meetrites)." + +msgid "Description of last known location" +msgstr "Viimase teadaoleva asukoha kirjeldus" + +msgid "Description of last known location of user." +msgstr "Kasutaja viimase teadaoleva asukoha kirjeldus." + +msgid "Maximum number of search results" +msgstr "Otsingutulemuste maksimaalne arv" + +msgid "Maximum number of search results from geocode search." +msgstr "Geokoodi otsingu tulemuste maksimaalne arv." + +msgid "User set last known location" +msgstr "Kasutaja määratud viimane teadaolev asukoht" + +msgid "Last known location was set manually by user." +msgstr "Kasutaja poolt käsitsi määratud viimane teadaolev asukoht." + +msgid "About" +msgstr "Programmist" + +msgid "Quit" +msgstr "Lõpeta" + +msgid "What's here?" +msgstr "Mis siin on?" + +msgid "I'm here!" +msgstr "Mina olen siin!" + +msgid "translator-credits" +msgstr "Mattias Põldaru, 2013,\nPriit Laes, 2013" + +msgid "A map application for GNOME" +msgstr "GNOME kaardirakendus" + +msgid "Street" +msgstr "Tänav" + +msgid "Satellite" +msgstr "Satelliit" + +#. Translators: Accuracy of user location information +msgid "Unknown" +msgstr "Teadmata" + +#. Translators: Accuracy of user location information +msgid "Exact" +msgstr "Täpne" + +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"Asukoha täpsus: %s" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 00000000..d061c009 --- /dev/null +++ b/po/eu.po @@ -0,0 +1,2080 @@ +# Basque translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Iñaki Larrañaga Murgoitio , 2013, 2014, 2015, 2016, 2017. +# Asier Sarasua Garmendia , 2019, 2020, 2021. +# +msgid "" +msgstr "Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-18 10:00+0100\n" +"Last-Translator: Asier Sarasua Garmendia \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapak" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Bilatu lekuak munduan zehar" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Mapek mundu osoan zeharreko mapetarako atzipen azkarra eskaintzen dizu. Bilatzen ari zaren lekua modu azkar batean aurkitzen lagunduko dizu kalearen edo herriaren izena bilatuz, edo bilatu leku bat lagunekin aurkitzeko." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Mapak auzolanean eraikitako OpenStreetMap datu-basea darabil, mundu osoan zehar ehun eta milaka pertsonen artean sortutakoa" + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME proiektua" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapak" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Mapen aplikazio xume bat" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapak;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Zure kokalekua maparen gainean erakustea baimentzen du." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ikusitako azken kokalekua" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ikusitako azken kokalekuaren koordenatuak." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zooma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaren maila" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Mapa mota" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Bistaratuko den mapa mota (kalekoa, airekoa eta abar)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Leihoaren tamaina" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Leihoaren tamaina (zabalera eta altuera)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Leihoaren posizioa" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Leihoaren posizioa (X eta Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Leihoa maximizatuta" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Leihoaren maximizazioaren egoera" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilaketaren emaitzen gehieneko kopurua" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilaketaren emaitzen gehieneko kopurua geokodifikazioaren bilaketatik." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Azken aldiko lekuen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Azken aldian bisitatutako lekuen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Azken aldiko ibilbideen kopurua gordetzeko" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Azken aldian bisitatutako ibilbideen kopurua gordetzeko." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-ren erregistroaren pribatutasunaren ezarpena" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "Foursquare-ren erregistroaren pribatutasunaren erabilitako azken ezarpena. Balio erabilgarriak: 'public' (publikoa), 'followers' (jarraitzaileak) edo 'private' (pribatua)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-ren erregistroaren Facebook-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Facebook-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-ren erregistroaren Twitter-eko igorpena" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "Foursquare-k erregistroa Twitter-eko kontuan posta gisa esleitutako Foursquare kontuarekin igorri behar duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-eko erabiltzaile-izena edo helbide elektronikoa" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "OpenStreetMap-eko datuak editatzeko erabiltzaileak sinatu duen edo ez adierazten du." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Erabilitako azken garraio mota bidea egiteko" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Gaueko modua" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Aplikazioa gaueko moduan dagoen edo ez." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Erabili aireko lauza hibridoak" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Aireko lauzek estilo hibridoa (etiketekin) erabiliko duten ala ez." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Ikusgaitasuna" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Argitaratu Facebook-en" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Argitaratu Twitter-en" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Utzi" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Erregistratu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publikoa" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Pribatua" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ibilbidea hemendik" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Gehitu tarteko helmuga" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ibilbidea hona" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Zer dago hemen?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiatu kokalekua" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esportatu ikuspegia" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esportatu" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Txertatu ibilbidea eta markatzaileak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Aukeratu mapa mota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Txikiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Handiagotu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Inprimatu ibilbidea" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Txandakatu gogokoak" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Orokorra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Erakutsi lasterbideak" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Bilatu" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Txandakatu ibilbidearen antolatzailea" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Inprimatu ibilbidea" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Irten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Maparen ikuspegia" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Handiagotu" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Txikiagotu" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Txandakatu eskala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Joan uneko kokalekura" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Aldatu kaleen ikuspegira" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Aldatu aireko ikuspegira" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ireki formen geruza" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Erakutsi etiketak" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ireki formen geruza…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Aktibatu kokapen-zerbitzuak zure kokapena aurkitzeko" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Utzi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Kokapenaren ezarpenak" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gauko modua" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfiguratu OpenStreetMap-eko kontua" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esportatu irudi gisa" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Las_ter-teklak" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Mapak aplikazioari buruz" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ireki menu nagusia" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapa lineaz kanpo dago!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Mapak interneteko konexio aktiboa behar du ongi funtzionatzeko, baina ez da bat ere aurkitu." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Egiaztatu konexioaren eta proxyaren ezarpenak." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-eko kontua" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "Hasi saioa mapak editatzeko" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "Lagundu mapa hobetzen\n" +"OpenStreetMap-eko kontu bat erabiliz." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Posta elektronikoa" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Pasahitza" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Erregistratu" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Hasi saioa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "Ez du funtzionatzen. Saiatu berriro, edo bisitatu\n" +"OpenStreetMap zure pasahitza berrezartzeko." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Egiaztapen-kodea ez dator bat, saiatu berriro." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sartu goian erakutsitako egiaztapen-kodea" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Egiaztatu" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Saioa hasita" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Zure OpenStreetMap-eko kontua aktibo dago." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Amaitu saioa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Kalea" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Zenbakia" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta-kodea" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Hiria" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Mota" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Bat ere ez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Gehitu eremua" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Iruzkina" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "Mapen aldaketak ikusgai egongo dira OpenStreetMap-eko\n" +"datuak erabiltzen dituzten mapa guztietan." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Azken aldian erabilia" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Hurrengoa" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ez da emaitzarik aurkitu" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Errore bat gertatu da" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastatu ibilbidearen ordena aldatzeko" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ireki kokalekua" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiatu" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Bidali hona…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Eregistratu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ireki formen geruza" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ireki" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Txandakatu ikusgaitasuna" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ibilbidea GraphHopper-ek bilatuta" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "Ibilbide publikoen bideak hirugarrenek eskaintzen dituzte.\n" +"GNOMEk ezin du bermatu erakutsitako ibilbideen eta ordutegien zuzentasuna.\n" +"Kontuan izan zenbait hornitzailek ez dituztela garraio modu guztiak kontuan hartzen, adibidez nazio mailako hornitzaile batek beharbada ez ditu hegaldiak kontuan hartzen, eta hornitzaile lokal batek agian ez ditu eskualde mailako trenak erakusten.\n" +"Erakutsitako izenak eta markak erregistratutako marka gisa hartuko dira dagokienenean." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Erakutsi emaitza gehiago" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ezkutatu bitarteko puntuak eta informazioak" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Erakutsi bitarteko puntuak eta informazioak" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Irten orain" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Irten:" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Iritsi:" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Erakutsi" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusak" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranbia" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenak" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metroak" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferryak" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Hegazkinak" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partekatu kokalekua" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Gehitu ibilbide berriari" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Norabideak" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markatu gogoko gisa" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editatu OpenStreetMap-en" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Handiagotu zooma kokalekua gehitzeko!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Handiagotu" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Huts egin du lauzaren egitura direktorioan bilatzean" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Huts egin du XML dokumentua aztertzean" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Beharrezko atributuak falta dira" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ezin izan da OSM elementua aurkitu" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Lokaleko lauzen direktorioaren egituraren bide-izena" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Lokaleko lauzen direktorioaren lauza-tamaina" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Erakutsi programaren bertsioa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ezikusi egin sarearen erabilgarritasunari" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FITXATEGIA…|URIA]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Hautatu kontua" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Kargatzen" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Hautatu lekua" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Mapak ezin du lekua aurkitu Foursquare-rekin erregistratzeko Hautatu bat zerrendatik." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s(e)n erregistratzen" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Idatzi aukerako mezua '%s'(e)n erregistratzeko." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ezin da “%s” aurkitu zerbitzu sozialean" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ezin da leku egokirik aurkitu kokaleku honetan erregistratzeko" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "Kredentzialak iraungi egin dira. Ireki 'Lineako kontuak' kontu hau sinatzeko eta gaitzeko" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ez da ezer aurkitu." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "Kokalekua mapari gehitu zaio. Jakin ezazu denbora bat igaroko dela mapetan eta bilaketen emaitzetan erakutsi aurretik." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapak hemen: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Fitxategi-sistema irakurtzeko soilik da" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ez duzu baimenik han gordetzeko" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorioa ez da existitzen" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ez da fitxategi-izenik zehaztu" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ezin da ikuspegia esportatu" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Uneko kokalekua" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "baliogabeko koordenatua" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "analisi-errorea" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria ezezaguna" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Huts egin du ibilbidearen eskaerak." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ez da ibilbiderik aurkitu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Hasi!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Geruzen fitxategi guztiak" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Huts egin du kokapen-zerbitzuarekin konektatzean" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "translator-credits" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "GNOMEren mapen aplikazioa" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. eta The GNOME Maps egileak" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Maparen datuen sortzaileak: %s eta laguntzaileak" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa-lauzen hornitzaileak: %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s motorrak hornitutako bilaketa %s bidez" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Huts egin du geruza irekitzean" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Jarraitu nahi duzu?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Guztira %s MB dituzten fitxategiak irekitzera zoaz. Horrek denbora bat beharko du" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Fitxategi mota ez dago onartuta" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Huts egin du GeoURIa irekitzean" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Okerreko erabiltzaile-izena edo pasahitza" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Ongi burutu da" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Eskaera okerra" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objektua ez da aurkitu" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Gatazka, beste norbaitek objektua aldatu du" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektua ezabatua izan da" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Bideak edo erlazioak ez dauden umeei egiten diote erreferentzia" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Izena" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Izen ofiziala. Saioa hastean agertu ohi izaten da." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Helbidea" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webgunea" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "URLa ez da baliozkoa. Ziurtatu http:// edo https:// gehitzen diozula." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "Webgune ofiziala. Saiatu URL baten oinarrizko modua erabiltzen. Adib. http://example.com erabili http://example.com/index.html URLaren ordez." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefonoa" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "Telefono zenbakia. Erabili nazioarteko formatua, + ikurrarekin hasiz. Kontutan eduki pribatutasunari buruzko bertako legeak, telefono zenbaki pribatuei dagokiena bereziki." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Posta elektronikoa" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "Hau ez da baliozko posta elektronikoko helbidea. Ziurtatu ez duzula mailto: protokolo-aurrizkia sartu." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "Kontakturako helbide elektronikoak, galderetarako. Gehitu publikoki erabiltzeko pentsatuta dauden helbideak soilik." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Erabilitako formatuak hizkuntzaren kodea eta artikuluaren titulua ”eu:Artikuluaren titulua\" gisa eduki beharko lituzke." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Irekiera orduak" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Ikusi esteka etiketan formatua ematean laguntzeko." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populazioa" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitudea" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Puntu baten elebazioa (itsas-mailaren gaineko altuera) metrotan." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Gurpil-aulkien irisgarritasuna" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Bai" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ez" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Mugatua" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Izendatuta" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Interneterako sarbidea" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wifia" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Hariduna" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminala" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Zerbitzua" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Eramatekoa" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Soilik" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Erlijioa" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismoa" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismoa" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismoa" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristautasuna" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfuzianismoa" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduismoa" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismoa" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaismoa" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islama" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Hainbat erlijio" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismoa" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismoa" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Zientziologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismoa" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismoa" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismoa" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarismo unibertsalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismoa" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianismoa" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Komunak" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Oharra" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Mapen beste sortzaileei elementu bati buruzko hain garbia ez den informazioari buruz, egilearen asmoa hura sortzean edo argibideak hobekuntza gehiagorako jakinarazteko informazioa." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Gehitu OpenStreetMap-i" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Hautatu mota" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Eginda" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Izenik gabeko tokia" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Huts egin du Geo URIa aztertzean" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordenatuak" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Zehaztasuna" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Zehaztasuna: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefono-zenbakia" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Eramateko janaria eskaintzen du" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ez du eskaintzen eramateko janaria" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Eramateko janaria soilik eskaintzen du" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Interneteko sarbide publikoa" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ez dago interneteko sarbiderik" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wifi publikoa" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Interneteko haridun sarbidea" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Erabilgarri dauden ordenagailuak" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internet laguntza erabilgarri" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Ez dago komunik erabilgarri" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Komunak erabilgarri" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Gurpil-aulkientzat irisgarri" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Gurpil-aulkien irisgarritasun mugatua" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ez da gurpil-aulkientzat irisgarri" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Gurpil-aulkien erabiltzaileentzako prestatua" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s itsas mailaren azpitik" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Itsas mailan" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Erlijioa:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap zerbitzuan aurkitu ez den tokia" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URLaren koordenatuak ez dira baliozkoak" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URLa ez da onartzen" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "“%s”(e)ndik “%s”(e)ra" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Mapen lauzak inprimatzeko kargatzen" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Inprimatzea bertan behera utz dezakezu denbora gehiegi badarama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Utzi inprimatzea bertan behera" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Gehitu bidearen kokalekua" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Kendu bidearen kokalekua" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Alderantzikatu ibilbidea" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Gehitu %s honi: %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Huts egin du URIa irekitzean" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Ireki honekin: %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "huts egin du fitxategia kargatzean" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Aurreikusitako denbora: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ibilbideen hornitzailea: %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Hasiera: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Hasiera" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Oinez: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Iritsi: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Iritsi" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Erakutsi oinezkoen instrukzioak" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ezkutatu oinezkoen instrukzioak" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Kargatu alternatibak lehenago" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Kargatu alternatibak geroago" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ez da aurreragoko ordezkorik aurkitu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ez da ondorengoko ordezkorik aurkitu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ez da ordutegiaren daturik aurkitu ibilbide honetan." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ez da hornitzailerik aurkitu ibilbide honetarako." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "minutu %s" +msgstr[1] "%s minutu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "ordu %s" +msgstr[1] "%s ordu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ordu" +msgstr[1] "%s:%s ordu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Egun osoan" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Egunsentitik ilunabarrera" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Egunero" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Jaiegunak" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Eskolako jaiegunak" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ez ireki" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Ezezaguna" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Zehatza" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Plugin honek ez du onartzen azken iritsiera" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Jarraitu hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Jarraitu" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Biratu ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Biratu ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Biratu pixka bat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Biratu pixka bat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Biratu erabat ezkerrera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Biratu erabat ezkerrera" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Biratu eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Biratu eskuinera" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Biratu pixka bat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Biratu pixka bat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Biratu erabat eskuinera hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Biratu erabat eskuinera" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Biribilgunean, hartu %s irteera" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Biribilgunean, hartu %s helbidera joateko irteera" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Hartu biribilgunea" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Hartu igogailua eta utzi hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Hartu igogailua" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Aldatu noranzkoa ezkerrerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Aldatu noranzkoa ezkerrerantz" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Aldatu noranzkoa eskuinerantz hemen: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Aldatu noranzkoa eskuinerantz" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Bilatu kokaleku mota zehatz bat, adibidez 'Diru-truke bulegoa, Bilbo' edo " +#~ "'Hotelak kale nagusia, Bilbo'" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook-en erregistroaren pribatutasunaren ezarpena" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Facebook-en erregistroaren pribatutasunaren erabilitako azken ezarpena. " +#~ "Balio erabilgarriak: 'EVERYONE' (edonor), 'FRIENDS_OF_FRIENDS' (lagunen " +#~ "lagunak), 'ALL_FRIENDS' (lagun guztiak) edo 'SELF' (norbera)." + +#~ msgid "Everyone" +#~ msgstr "Edonor" + +#~ msgid "Friends of friends" +#~ msgstr "Lagunen lagunak" + +#~ msgid "Just friends" +#~ msgstr "Lagunak soilik" + +#~ msgid "Just me" +#~ msgstr "Nik bakarrik" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapak ezin du lekua aurkitu Facebook-ekin erregistratzeko. Hautatu bat " +#~ "zerrendatik." + +#~ msgid "Find a Route" +#~ msgstr "Bilatu ibilbide bat" + +#~ msgid "Check in here" +#~ msgstr "Erregistratu hemen" + +#~ msgid "Show more information" +#~ msgstr "Erakutsi informazio gehiago" + +#~ msgid "Population:" +#~ msgstr "Populazioa:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudea:" + +#~ msgid "Opening hours:" +#~ msgstr "Irekiera orduak:" + +#~ msgid "Internet access:" +#~ msgstr "Interneterako sarbidea:" + +#~ msgid "Toilets:" +#~ msgstr "Komunak:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Gurpil-aulkien irisgarritasuna:" + +#~ msgid "Phone:" +#~ msgstr "Telefonoa:" + +#~ msgid "yes" +#~ msgstr "bai" + +#~ msgid "limited" +#~ msgstr "mugatua" + +#~ msgid "no" +#~ msgstr "ez" + +#~ msgid "designated" +#~ msgstr "zehaztutakoa" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URLa ez da baliozkoa" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "hariduna" + +#~ msgid "terminal" +#~ msgstr "terminala" + +#~ msgid "service" +#~ msgstr "zerbitzua" + +#~ msgid "Primary menu" +#~ msgstr "Menu nagusia" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ez daukazu konturik?" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Gehitu helmuga" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "ibilbidea OpenTripPlanner-ek bilatuta" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Ireki beste aplikazio batekin" + +#~ msgid "Press enter to search" +#~ msgstr "Sakatu Sartu bilatzeko" + +#~ msgid "Quit" +#~ msgstr "Irten" + +#~ msgid "Load Map Layer" +#~ msgstr "Kargatu maparen geruza" + +#~ msgid "Open Layer" +#~ msgstr "Ireki geruza" + +#~ msgid "OK" +#~ msgstr "Ados" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f oin" + +#~ msgid "Country code: %s" +#~ msgstr "Estatuaren kodea: %s" + +#~ msgid "_Share" +#~ msgstr "_Partekatu" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Azken kokaleku ezaguna eta zehaztasuna" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Azken kokaleku ezaguna (latitudea eta longitudea gradutan) eta " +#~ "zehaztasuna (metrotan)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Erabiltzailearen azken kokaleku ezagunaren azalpena." + +#~ msgid "User set last known location" +#~ msgstr "Erabiltzaileak ezarritako azken kokaleku ezaguna" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Azken kokaleku ezaguna erabiltzaileak eskuz ezarri zuen edo ez." + +#~ msgid "I’m here!" +#~ msgstr "Hemen nago!" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "Nora" + +#~ msgid "From" +#~ msgstr "Nondik" + +#~ msgid "Satellite" +#~ msgstr "Satelitea" + +#~ msgid " km²" +#~ msgstr " km²" + +#~ msgid "Track user location." +#~ msgstr "Rastrear la ubicación del usuario." + +#~ msgid "Map Type" +#~ msgstr "Tipo de mapa" + +#~ msgid "Cycling" +#~ msgstr "Cíclico" + +#~ msgid "Transit" +#~ msgstr "Tránsito" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 00000000..9105258a --- /dev/null +++ b/po/fa.po @@ -0,0 +1,2068 @@ +# Persian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# Arash Mousavi , 2013-2016. +# Danial Behzadi , 2014, 2017-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-01 14:56+0430\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "نقشه‌های گنوم" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "یافتن مکان‌ها در هر جایی از جهان" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, or " +"locate a place to meet a friend." +msgstr "" +"نقشه‌ها دسترسی سریعی به نقشه‌ها در تمام جهان را می‌دهد. این برنامه می‌گذارد با جست‌وجو " +"برای یک شهر یا خیابان، مکانی را که به دنبالشید یافته یا مکانی را برای قرار مشخّص " +"کنید." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands " +"of people across the globe." +msgstr "" +"نقشه‌ها از پایگاه دادهٔ مشارکتی OpenStreetMap استفاده می‌کند که به دست صدها هزار نفر " +"در سراسر جهان درست شده است." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "پروژهٔ گنوم" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 src/application.js:94 +#: src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "نقشه‌ها" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "یک برنامهٔ ساده نقشه" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "نقشه;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "اجازهٔ نمایش موقعیتتان روی نقشه." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "آخرین موقعیت دیده شده" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "مختصات آخرین موقعیت سر زده." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "سطح بزرگ‌نمایی" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "گونهٔ نقشه" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "گونهٔ نمایشی نقشه (خیابانی، هوایی و…)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "اندازهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "اندازهٔ پنجره (پهنا و بلندا)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "موقعیت پنجره" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "موقعیت پنجره (x و y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "پنجره بیشینه شد" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "وضعیت بیشینهٔ پنجره" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "بیشینهٔ تعداد نتایج جست‌وجو" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "بیشینهٔ تعداد نتایج جست‌وجو از طریق جست‌وجوی کد جغرافیایی." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "تعداد مکان‌های اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "تعداد مکان‌های اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "تعداد مسیرهای اخیر برای ذخیره" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "تعداد مسیرهای اخیر سر زده شده برای ذخیره." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "تنظیمات محرمانگی اعلام حضور فوراسکور" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, " +"followers or private." +msgstr "" +"آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فوراسکور. مقادیر مجاز عبارتند از: " +"public، followers یا private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "اعلام حضور در فوراسکور و انتشار در فیس‌بوک" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک فرسته در حساب فیس‌بوک " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "اعلام حضور فوراسکور و انتشار در توییتر" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter " +"account associated with the Foursquare account." +msgstr "" +"مشخّص می‌کند که آیا فوراسکور باید اعلام حضور را به عنوان یک توییت در حساب توییتر " +"مرتبط با حساب فوراسکور منتشر کند یا نه." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "نام‌کاربری یا نشانی رایانامهٔ OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "مشخّص می‌کند که آیا کاربر برای ویرایش داده‌های OpenStreetMap وارد شده یا نه." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "آخرین گونهٔ حمل‌ونقل برای مسیریابی" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "حالت شب" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "این که برنامه در حالت شب است یا نه." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "استفاده از کاشی‌های هوایی پیوندی" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "این که کاشی‌های هوایی باید از سبک پیوندی (با برچسب‌ها) استفاده کنند یا نه." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "نمایانی" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "فرستادن به فیس‌بوک" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "فرستادن به توییتر" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_لغو" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "اعلام _حضور" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "عمومی" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "پیروان" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "خصوصی" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "مسیر از این‌جا" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "افزودن مقصد میانی" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "مسیر به این‌جا" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "این‌جا چیست؟" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "رونوشت موقعیت" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "نمای برون‌ریزی" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_برون‌ریزی" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "شامل مسیر و علائم شدن" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "گزینش گونهٔ نقشه" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "بزرگنمایی به خارج" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "چاپ مسیر" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "تغییر وضعیت برگزیده‌ها" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "عمومی" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "نمایش میان‌برها" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "جست‌وجو" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "تغییر وضعیت برنامه‌ریز مسیر" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "چاپ مسیر" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "خروج" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "نمای نقشه" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "بزرگ‌نمایی به داخل" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "بزرگ‌نمایی به خارج" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "تغییر وضعیت مقیاس" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "رفتن به موقعیت فعلی" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "تعویض به نمای خیابانی" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "تعویض به نمای هوایی" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "نمایش برچسب‌ها" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "گشودن لایهٔ شکل…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "روشن کردن خدمات مکانی برای یافتن موقعیتتان" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "لغو" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "تنظیمات موقعیت" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "حالت شب" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "برپاسازی حساب OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "برون‌ریزی به عنوان عکس" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "میان‌برهای _صفحه‌کلید" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "دربارهٔ نقشه‌ها" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "گشودن فهرست اصلی" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "نقشه‌ها برون‌خط است!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t be " +"found." +msgstr "نقشه‌ها برای عملکرد صحیح نیاز به اینترنت دارد." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "تنظیمات پیشکار و اتّصالتان را بررسی کنید." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "حساب OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "ورود به ویرایش نقشه‌ها" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"با استفاده از یک حساب OpenStreetMap\n" +"به گسترش نقشه کمک کنید." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "رایانامه" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "گذرواژه" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ثبت‌نام" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ورود" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap " +"to reset your password." +msgstr "" +"متأسّفانه تأثیری نداشت. لطفا دوباره تلاش کرده یا برای\n" +"باز نشانی گذرواژه‌تان به OpenStreetMap سر بزنید." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "کد تأیید مطابق نبود، لطفاً دوباره بیازمایید." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "کد تأیید بالا را وارد کنید" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "تأیید" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "وارد شده" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "حساب OpenStreetMapتان فعّال است." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "خروج" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "خیابان" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "پلاک خانه" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "کد پستی" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "شهر" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "گونه" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "هیچ‌کدام" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "افزودن زمینه" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "توضیح" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"تغییرات نقشه در تمام نقشه‌هایی که از داده‌های\n" +"اوپن‌استریت‌مپ استفاده می‌کنند قابل مشاهده است." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "به‌تازگی استفاده شده" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "بعدی" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "هیچ نتیجه‌ای پیدا نشد" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "خطایی رخ داد" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "برای تغییر ترتیب مسیر بکشید" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "رونوشت" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "فرستادن به…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "اعلام حضور…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "گشودن لایهٔ شکل" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_گشودن" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "تغییر وضعیت نمایانی" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "جست‌وجوی مسیر به دست GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"مسیریابی برنامهٔ سفر برای حمل‌ونقل عمومی به دست خدمات ثالث فراهم شده است.\n" +"گنوم نمی‌تواند درستی برنامهٔ سفر و زمان‌بندی‌های نمایش داده‌شده را تصمین کند.\n" +"به خاطر داشته باشید که ممکن است برخی فراهم‌کنندگان، تمام حالت‌های موجود برای\n" +"حمل‌ونقل را نداشته باشند. مثلاً ممکن است یک فراهم‌کنندهٔ ملّی، خطوط هوایی را نداشته\n" +"باشد و یک فراهم‌کنندهٔ محلّی می‌تواند قطارهای منطقه‌ای را نشان ندهد.\n" +"نام‌ها و برندهای نمایش‌داده‌شده باید هنگام امکان به عنوان علایم تجاری در نظر گرفته " +"شوند." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "نمایش نتایج بیش‌تر" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "نهفتن اطّلاعات و توقّف‌های میانی" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "نمایش اطّلاعات و توقّف‌های میانی" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "اکنون خارج شوید" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "شروع حرکت از" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "رسیدن به مقصد از" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "نمایش" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "اتوبوس‌ها" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ترامواها" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "قطارها" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "مترو" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "قایق‌ها" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "هواپیماها" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "هم‌رسانی موقعیت" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "افزودن به مسیر جدید" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "مسیرها" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "علامت‌گذاری به عنوان برگزیده" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "ویرایش روی OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "برای افزودن موقعیت، بزرگ‌نمایی کنید!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "بزرگ‌نمایی به داخل" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "شکست در یافتن ساختار کاشی در شاخه" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "شکست در تجزیهٔ سند XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ویژگی‌های لازم وجود ندارند" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "ناتوان در یافتن عنصر OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "مسیری به ساختار شاخهٔ کاشی‌های محلّی" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "اندازهٔ شاخهٔ کاشی‌های محلّی" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "نمایش نگارش برنامه" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "نادیده گرفتن موجود بودن شبکه" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "گزینش یک حساب" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "در حال بار کردن" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "گزینش یک موقعیت" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one from " +"this list." +msgstr "" +"نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فوراسکور بیابد. لطفاً موقعیتی را از " +"فهرست برگزینید." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "اعلام حضور در %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "نوشتن اختیاری پیامی برای اعلام حضور در %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "نمی‌توان «%s» را در خدمت اجتماعی یافت" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "نمی‌توان مکانی مناسب برای اعلام حضور در این موقعیت یافت" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable this " +"account" +msgstr "" +"اعتبارنامه‌ها منقضی شده‌اند. لطفاً برای ورود و به کار انداختن این حساب، حساب‌های برخط " +"را بگشایید" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "این‌جا چیزی پیدا نشد!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows on " +"the map and in search results." +msgstr "" +"موقعیت به نقشه اضافه شد. خواستان باشد که نمایشش در نقشه و نتایج جست‌وجو، ممکن است " +"کمی طول بکشد." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "نقشه‌ها در %If، %If.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "سامانه‌پرونده فقط-خواندنی است" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "برای ذخیره در آن‌جا دسترسی ندارید" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "شاخه وجود ندارد" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "نامی برای پرونده مشخّص نشده" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ناتوان در برون‌ریزی نما" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "موقعیت کنونی" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "مختصات نامعتبر" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "خطای تجزیه" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "هندسهٔ ناشناخته" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "درخواست مسیر شکست خورد." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "هیچ مسیری پیدا نشد." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "شروع!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "تمام پرونده‌های لایه" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "شکست در اتّصال به خدمت مکانی" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"دانیال بهزادی \n" +"آرش موسوی " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "یک برنامهٔ نقشه برای گنوم" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "حق رونوشت © ۲۰۱۱ - ۲۰۲۱ – شرکت ردهت و نگارندگان نقشه‌های گنوم" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "دادهّای نقشه به دست %s و مشارکت‌کنندگان" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "کاشی‌های نقشه به دست %s فراهم شده" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "جست‌وجو به دست %s با استفاده از %s فراهم شده" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "شکست در گشودن لایه" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "می‌خواهید ادامه دهید؟" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some time " +"to load" +msgstr "در حال گشودن پرونده‌ای با حجم کل %s م‌ب هستید. بار شدنش ممکن است کمی طول بکشد" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "گونهٔ پرونده پشتیبانی نمی‌شود" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "شکست در گشودن نشانی جغرافیایی" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "گذرواژه یا نام‌کاربری نادرست" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "موفّقیت" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "درخواست بد" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "شی پیدا نشد" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "تداخل، گسی دیگر به تازگی شی را تغییر داده" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "شی پاک شد" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "راه یا ارتباط به فرزندی ناموجود اشاره می‌کند" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "نام" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "نام رسمی. معمولاً نامیست که روی تابلوها نوشته." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "نشانی" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "پایگاه وب" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "نشنی اینترنتی معتبر نیست. مطمئن شوید دارای ‪http://‬ یا ‪https://‬ است." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example." +"com instead of http://example.com/index.html." +msgstr "" +"پایگاه وب رسمی. سعی کنید از ساده‌ترین شکل آدرس استفاده کنید مثلا http://example." +"com به جای http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "تلفن" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of " +"local privacy laws, especially for private phone numbers." +msgstr "" +"شماره تلفن. از قالب بین‌المللی که با + شروع می‌شود اشتفاده کنید. لطفاً قوانین " +"محرمانگی محلّی را در نظر داشته باشید، به خصوص برای شماره‌های تلفن خصوصی." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "رایانامه" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: protocol " +"prefix." +msgstr "نشانی اینترنتی معتبر نیست. مطمئن شوید دارای پیشوند شیوه‌نامهٔ ‪mailto:‬ نیست." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are intended " +"to be publicly used." +msgstr "" +"نشانی رایانامهٔ تمایش برای پرسش‌ها. تنها نشانی‌های رایانامه‌ای را بیفزایید که برای " +"استفادهٔ عمومی در نظر گرفته شده‌اند." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "ویکی‌پدیا" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like “en:" +"Article title”." +msgstr "" +"قالب استفاده شده باید شامل کد زبان و عنوان مقاله باید مثل «en:Article title» باشد." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "ساعت‌های کار" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "پیوند روی برچسب را برای راهنمایی قالب ببینید." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "جمعیت" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "بلندی" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "بلندی (فاصله از سطح دریا) یک نقطه به متر." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "دسترسی صندلی چرخ‌دار" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "بله" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "خیر" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "محدود" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "تعیین شده" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "دسترسی اینترنتی" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "وای‌فای" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "سیمی" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "پایانه" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "خدمت" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "بیرون‌بردنی" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "فقط" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "دین" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "جانگرایی" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "بهایی" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "بوداییسم" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "کایوداییسم" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "مسیحیت" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "کنفسیوسیسم" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "هندوییسم" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "برهما‌بوداییسم" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "یهودیت" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "اسلام" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "دین‌های مختلف" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "پگانیسم" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "پاستاپرستی" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "علمگرایی" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "شینتو" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "سیک" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "روحگرایی" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "تائوییسم" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "جهانگرایی یکتاپرست" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "وودو" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "یزیدی" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "زرتشتی" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "دستشویی‌ها" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "نکته" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about an " +"element, the author’s intent when creating it, or hints for further improvement." +msgstr "" +"اطّلاعات برای آگاه کردن دیگر نقشه‌کش‌ها دربارهٔ اطّلاعات نابدیهی دربارهٔ یک عنصر، قصد " +"نگارنده هنگام ایجادش یا راهنمایی برای بهبودهای بعدی." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "افزودن به OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "گزینش گونه" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "انجام شد" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "مکان بی‌نام" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "شکست در پردازش نشانی جغرافیایی" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "مختصات" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "دقّت" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "دقّت: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "شماره تلفن" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "ارائه بیرون بردنی" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "بدون ارائه بیرون بردنی" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "فقط ارائه بیرون‌بردنی" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "دسترسی عمومی به اینترنت" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "بدون دسترسی به اینترنت" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "وای‌فای عمومی" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "دسترسی سیمی به اینترنت" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "رایانه‌های موجود برای استفاده" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "همیار اینترنت در دسترس" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "دستشویی در دسترس نیست" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "دستشویی در دسترس" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "قابل دسترسی با صندلی چرخ‌دار" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "قابلیت دسترسی محدود با صندلی چرخ‌دار" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "بدون قابلیت دسترسی با صندلی چرخ‌دار" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "مخصوص استفاده‌کنندگان از صندلی چرخ‌دار" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s زیر سطح دریا" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "در سطح دریا" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "دین:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "مکان در اوپن استریت مپ پیدا نشد" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "مختصات نشانی نامعتبر" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "نشانی پشتیبانی نمی‌شود" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "از %s تا %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "در حال بار کردن کاشی‌های نقشه برای چاپ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "اگر خیلی طول کشید، می‌توانید چاپ را خاتمه دهید" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "خاتمهٔ چاپ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "افزودن از راه موقعیت" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "برداشتن از راه موقعیت" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "مسیر برعکس" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "افزودن %s به %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "شکست در گشودن نشانی" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "گشودن با %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "شکست در بارگیری پرونده" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "زمان تخمینی: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "برنامه سفر فراهم شده به دست %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "شروع در %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "شروع" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s قدم بزنید" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "رسیدن به مقصد در %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "رسیدن" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "نمایش دستور کار قدم زدن" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "نهفتن دستور کار قدم زدن" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "بار کردن جایگزین‌های قدیمی‌تر" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "بار کردن جایگزین‌های جدیدتر" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "جایگزین‌های قدیمی‌تری پیدا نشدند." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "جایگزین‌های جدیدتری پیدا نشدند." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %Oe" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "برای این مسیر هیچ دادهٔ جدول زمانی‌ای پیدا نشد." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "برای این مسیر هیچ فراهم کننده‌ای پیدا نشد." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s دقیقه" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ساعت" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ساعت" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "حدود ساعت" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "از سپیده‌دم تا غروب" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s،%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s،%s،%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "هر روز" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "تعطیلات عمومی" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "تعطیلات مدرسه" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s، %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "باز نیست" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "ناشناخته" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "دقیقاً" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s س" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s س %s د" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s د" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s ث" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s ک‌م" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s م" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s ما" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s پا" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "این افزایه، جدیدترین زمان حضور را پشتیبانی نمی‌کند" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "در %s ادامه دهید" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "ادامه" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "در %s به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "در %s آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "آرام به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "در %s تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "تند به چپ بپیچید" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "در %s به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "در %s آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "آرام به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "در %s تند به راست بپیچید" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "تند به رایت بپیچید" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "در میدان از %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "در میدان به %s خارج شوید" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "وارد میدان شوید" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "وارد آسانسور شده و در %s حارج شوید" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "وارد آسانسور شوید" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "به %s گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "گردش به چپ کنید" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "به %s گردش به راست کنید" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "گردش به راست کنید" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near Main " +#~ "Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "حتا می‌توانید گونه‌های خاصی از موقعیت‌ها را، مثل «Pubs near Main Street, Boston» " +#~ "یا «WiFi Access near Alexanderplatz, Berlin» جست‌وجو کنید." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "تنظیمات محرمانگی اعلام حضور فیس‌بوک" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, " +#~ "FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "آخرین تنظیمات استفاده شدهٔ محرمانگی اعلام حضور فیس‌بوک. مقادیر مجاز عبارتند از: " +#~ "EVERYONE، FRIENDS_OF_FRIENDS، ALL_FRIENDS و SELF." + +#~ msgid "Everyone" +#~ msgstr "همه" + +#~ msgid "Friends of friends" +#~ msgstr "دوستانِ دوستان" + +#~ msgid "Just friends" +#~ msgstr "فقط دوستان" + +#~ msgid "Just me" +#~ msgstr "فقط خودم" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select one " +#~ "from this list." +#~ msgstr "" +#~ "نقشه‌ها نمی‌تواند مکان را برای اعلام حضور در فیس‌بوک بیابد. لطفاً موقعیتی را از " +#~ "فهرست برگزینید." + +#~ msgid "Find a Route" +#~ msgstr "یافتن یک مسیر" + +#~ msgid "Check in here" +#~ msgstr "اعلام حضور در این‌جا" + +#~ msgid "Show more information" +#~ msgstr "نمایش اطّلاعات بیش‌تر" + +#~ msgid "Population:" +#~ msgstr "جمعیت:" + +#~ msgid "Altitude:" +#~ msgstr "بلندی:" + +#~ msgid "Opening hours:" +#~ msgstr "ساعت‌های کار:" + +#~ msgid "Internet access:" +#~ msgstr "دسترسی اینترنتی:" + +#~ msgid "Toilets:" +#~ msgstr "دستشویی‌ها:" + +#~ msgid "Wheelchair access:" +#~ msgstr "دسترسی صندلی چرخ‌دار:" + +#~ msgid "Phone:" +#~ msgstr "تلفن:" + +#~ msgid "yes" +#~ msgstr "بله" + +#~ msgid "limited" +#~ msgstr "محدود" + +#~ msgid "no" +#~ msgstr "خیر" + +#~ msgid "designated" +#~ msgstr "تعیین شده" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "نشانی OpenStreetMap نامعتبر است" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "سیمی" + +#~ msgid "terminal" +#~ msgstr "پایانه" + +#~ msgid "service" +#~ msgstr "خدمت" + +#~ msgid "Don’t have an account?" +#~ msgstr "حسابی ندارید؟" + +#~ msgid "%f h" +#~ msgstr "%If ساعت" + +#~ msgid "%f min" +#~ msgstr "%If دقیقه" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "افزودن مقصد" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "جست‌وجوی مسیر به دست OpenTripPlanner" + +#~ msgid "Quit" +#~ msgstr "خروج" + +#~ msgid "Load Map Layer" +#~ msgstr "بار کردن لایه نقشه" + +#~ msgid "Open with another application" +#~ msgstr "گشودن با برنامه‌ای دیگر" + +#~ msgid "Press enter to search" +#~ msgstr "برای جست‌وجو دکمه Enter را فشار دهید" + +#~ msgid "OK" +#~ msgstr "تایید" + +#~ msgid "%f km" +#~ msgstr "%If کیلومتر" + +#~ msgid "%f m" +#~ msgstr "%If متر" + +#~ msgid "%f mi" +#~ msgstr "%If مایل" + +#~ msgid "%f ft" +#~ msgstr "%If فوت" + +#~ msgid "Country code: %s" +#~ msgstr "کد کشور: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "آخرین مکان و دقت شناخته شده" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "آخرین مکان شناخته شده (عرض و طول جغرافیایی به درجه) و دقت (به متر)" + +#~ msgid "Description of last known location of user." +#~ msgstr "توضیحات آخرین مکان شناخته شده کاربر." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "این که آخرین مکان شناخته شده به صورت دستی توسط کاربر تنظیم شده یا نه." + +#~ msgid "I’m here!" +#~ msgstr "من این‌جا هستم!" + +#~ msgid "Satellite" +#~ msgstr "ماهواره" + +#~ msgid " km²" +#~ msgstr "کیلومتر مربع" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 00000000..e5bc7574 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,2117 @@ +# Finnish translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Jiri Grönroos , 2013, 2014, 2015, 2016, 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-26 12:34+0300\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: suomi \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnomen kartat" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Löydä sijainteja ympäri maailman" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartat mahdollistaa maailmanlaajuisen karttatiedon käytön nopeasti. Voit " +"paikallistaa haluamasi paikan etsimällä vaikkapa kaupunkia tai katua." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartat hyödyntää tuhansien ihmisten yhdessä luomaa OpenStreetMap-tietokantaa." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Gnome-projekti" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kartat" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Yksinkertainen karttasovellus" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kartta;Kartat;Reitit;Reitti;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Sallii sijaintisi näytettävän kartalla." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "viimeksi katsottu sijainti" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Viimeksi katsotun sijainnin koordinaatit." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomaustaso" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartan tyyppi" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Näytettävän kartan tyyppi (katu, ilma jne.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ikkunan koko" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ikkunan koko (leveys ja korkeus)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ikkunan sijainti" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ikkunan sijainti (x ja y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ikkuna suurennettu" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Ikkunan suurennuksen tila" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Hakutulosten enimmäismäärä" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode-haun tulosten enimmäismäärä." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Äskettäisten sijaintien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Äskettäin käytyjen sijaintin varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Äskettäisten reittien varastoitava lukumäärä" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Äskettäin käytyjen reittien varastoitava lukumäärä." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-paikkakirjautumisen yksityisyysasetus" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Viimeisin käytetty Foursquare-paikkakirjautumisen yksityisyysasetus. " +"Mahdolliset arvot ovat: public, followers tai private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Facebookiin" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen viestinä " +"Foursquare-tiliin liitetylle Facebook-tilille." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare-paikkakirjautumisen lähetys Twitteriin" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ilmaisee pitäisikö Foursquaren välittää paikkakirjautuminen twiittinä " +"Foursquare-tiliin liitetylle Twitter-tilille." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-käyttäjätunnus tai -sähköposti" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Ilmaisee onko käyttäjä kirjautunut muokatakseen OpenStreetMap-tietoja." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Reitityksessä viimeksi käytetty matkatapa" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Yötila" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Onko sovellus yötilassa vai ei." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Käytä hybridejä ilmatiilejä" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Tuleeko ilmatiilten käyttää hybridityyliä (selitteiden kera)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Näkyvyys" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Lähetä Facebookiin" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Lähetä Twitteriin" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Peru" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Kirjaudu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Julkinen" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seuraajat" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Yksityinen" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Reitti täältä" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lisää välisijainti" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Reitti tänne" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mitä täällä on?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopioi sijainti" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Vie näkymä" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Vie" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Sisällytä reitti ja merkit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Valitse kartan tyyppi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Loitonna" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Lähennä" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Tulosta reitti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Näytä/piilota suosikit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Yleiset" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Näytä pikanäppäimet" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Etsi" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Näytä/piilota reittisuunnittelu" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tulosta reitti" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Lopeta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Karttanäkymä" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Lähennä" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Loitonna" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Näytä/piilota mittakaava" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Siirry nykyiseen sijaintiin" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Vaihda katunäkymään" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Vaihda ilmanäkymään" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Avaa muototaso" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Näytä selitteet" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Avaa muototaso…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ota sijaintipalvelut käyttöön selvittääksesi sijaintisi" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Peru" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Sijaintipalvelut" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Yötila" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Määritä OpenStreetMap-tili" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Vie kuvana" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tietoja - Kartat" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Avaa päävalikko" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartat on verkottomassa tilassa!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartat tarvitsee aktiivisen internetyhteyden toimiakseen kunnolla, mutta " +"sellaista ei kuitenkaan havaittu." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Tarkista yhteytesi ja välityspalvelimen asetukset." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-tili" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Kirjaudu sisään muokataksesi " +"karttoja" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Auta parantamaan karttaa\n" +"OpenStreetMap-tiliä käyttäen." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Sähköposti" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Salasana" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rekisteröidy" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Kirjaudu sisään" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Valitettavasti se ei kelvannut. Yritä uudelleen tai siirry\n" +"OpenStreetMapiin nollataksesi salasanasi." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Vahvistuskoodi ei kelvannut, yritä uudelleen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Kirjoita yllä oleva vahvistuskoodi" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vahvista" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sisäänkirjautunut" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap-tilisi on aktiivinen." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kirjaudu ulos" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Katu" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Talon numero" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postinumero" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kaupunki" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tyyppi" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ei mitään" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lisää kenttä" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentti" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Karttamuutokset näkyvät kaikissa OpenStreetMapin\n" +"sisältöä käyttävissä kartoissa." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Viimeksi käytetty" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seuraava" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tuloksia ei löytynyt" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Tapahtui virhe" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Vedä muuttaaksesi reitin määritystä" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopioi" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Lähetä…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "_Ilmoittaudu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Avaa muototaso" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Avaa" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Näytä/piilota" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Reittihaun tarjoaa GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Julkisen liikenteen reitityksen matkareitit tarjoaa Gnome\n" +"käyttäen kolmansien osapuolien palveluja.\n" +"Gnome ei voi taata näytettävien matkareittien ja aikataulujen " +"oikeellisuutta.\n" +"Huomioi, että jotkin palveluntarjoajat eivät välttämättä sisällytä kaikkia\n" +"liikennöintimuotoja, esimerkiksi kansalliset palveluntarjoajat eivät " +"välttämättä\n" +"huomioi lentoreittejä, tai paikalliset palveluntarjoajat eivät välttämättä\n" +"huomioi valtakunnallisia junia.\n" +"Näytettävät nimet ja tuotemerkit on soveltuvin osin oletettava " +"rekisteröidyiksi." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Näytä lisää tuloksia" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Piilota välipysäkit ja tiedot" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Näytä välipysäkit ja tiedot" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Lähde nyt" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Lähde määrättynä aikana" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Saavu määrättynä aikana" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Näytä" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussit" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Raitiovaunut" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Junat" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Lautat" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lentokoneet" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Jaa sijainti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Lisää uusi reitti" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Reittiohjeet" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merkitse suosikiksi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Muokkaa OpenStreetMapissa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Lähennä lisätäksesi sijainnin!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Lähennä" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Tiilirakennetta ei löytynyt hakemistosta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML-asiakirjan jäsentäminen epäonnistui" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Vaaditut attribuutit puuttuvat" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM-elementtiä ei löytynyt" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Polku paikallisten tiilien hakemistorakenteeseen" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tiilen koko paikalliseen tiilten hakemistoon" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Näytä ohjelman versio" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Älä huomioi verkon saatavuutta" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[TIEDOSTO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Valitse tili" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Ladataan" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Valitse paikka" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartat ei löydä Foursquaresta paikkaa kirjautumista varten. Valitse paikka " +"luettelosta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Kirjaudu paikkaan %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Kirjoita valinnainen viesti paikkaan %s kirjautumisen yhteydessä." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Paikkaa \"%s\" ei löydy sosiaalisista palveluista" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Tästä sijainnista ei löydy kelvollista paikkaa kirjautumista varten" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kirjautumistiedot ovat vanhentuneet. Avaa verkkotilien asetukset " +"kirjautuaksesi ja käyttääksesi tätä tiliä" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Täältä ei löytynyt mitään!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Sijainti lisättiin karttaan. Ota huomioon, että sen näkymisessä kartalla ja " +"hakutuloksissa saattaa kestää jonkin aikaa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartta sijainnissa %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Tiedostojärjestemä on \"vain luku\"-muodossa" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oikeutesi eivät riitä tänne tallentamiseen" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Kansiota ei ole olemassa" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiedostonimeä ei määritetty" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Näkymän vienti epäonnistui" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Nykyinen sijainti" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "virheellinen koordinaatti" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "jäsentämisvirhe" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "tuntematon geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Reittipyyntö epäonnistui." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Reittiä ei löytynyt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Aloitus!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Kaikki tasotiedostot" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Yhteys sijaintipalveluun epäonnistui" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Karttasovellus Gnomelle" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Tekijänoikeus © 2011 – 2021 Red Hat, Inc. ja Gnomen karttasovelluksen " +"kehittäjät" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Karttatiedot tarjoaa %s ja avustajat" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karttatiilet tarjoaa %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Haun tarjoaa %s käyttämällä %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Tason avaaminen epäonnistui" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Haluatko jatkaa?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Olet aikeissa avata tiedostoja, joiden koko yhteensä on %s Mt. Näiden " +"lataaminen saattaa kestää jonkin aikaa" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tiedostotyyppi ei ole tuettu" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI:n avaaminen epäonnistui" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Virheellinen käyttäjätunnus tai salasana" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Onnistui" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Virheellinen pyyntö" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objektia ei löytynyt" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Ristiriita, joku toinen muokkasi juuri objektia" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekti on poistettu" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tie tai relaatio viittaa lapseen, jota ei ole olemassa" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nimi" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Virallinen nimi. Tämä on yleensä näkyvillä kyltissä." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Osoite" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Verkkosivusto" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Tämä ei ole kelvollinen URL-osoite. Varmista että osoitteen alussa on " +"http:// tai https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Virallinen verkkosivusto. Käytä verkkotunnuksen perusmuotoa, eli mieluummin " +"http://esimerkki.fi kuin http://esimerkki.fi/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Puhelin" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Puhelinnumero. Käytä kansainvälistä muotoa, aloita +-merkillä. Ota huomioon " +"mahdolliset paikalliset yksityisyyslait, jotka voivat koskea salaisia " +"puhelinnumeroita." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Sähköposti" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Tämä ei ole kelvollinen sähköpostiosoite. Varmista että osoitteen alussa on " +"etuliite \"mailto:\"." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Sähköpostiosoite kyselyjä varten. Lisää vain sähköpostiosoitteita, jotka " +"ovat tarkoitettu julkisesti näytettäväksi." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Käytettävän muotoilun tulisi sisältää kielikoodin ja artikkelin nimen, kuten " +"”en:Article title”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Aukioloajat" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Avaa linkki nähdäksesi muotoilua koskevan ohjeen." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Asukasluku" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Korkeus" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Sijaintipisteen korkeus merenpinnan yläpuolella metreissä." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Pääsy pyörätuolilla" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Kyllä" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ei" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Rajoitettu" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Suunniteltu" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internet-käyttö" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kiinteä" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Pääte" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Palvelu" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Takeaway" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Vain" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Uskonto" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismi" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhalaisuus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismi" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristinusko" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Kungfutselaisuus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindulaisuus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainalaisuus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Juutalaisuus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Useita uskontoja" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pakanuus" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarilaisuus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Skientologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintolaisuus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhiläisyys" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismi" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taolaisuus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaariuniversalismi" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jesidismi" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zarathustralaisuus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Vessat" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Huomio" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Tietoja muille kartoittajille elementistä, sen luomisen tarkoituksesta tai " +"vihjeitä parannusten suhteen." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lisää OpenStreetMapiin" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Valitse tyyppi" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Valmis" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nimetön paikka" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI:n jäsentäminen epäonnistui" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinaatit" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Tarkkuus" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tarkkuus: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Puhelinnumero" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Tarjoaa takeaway-vaihtoehdon" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ei tarjoa takeaway-vaihtoehtoa" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Tarjoaa vain takeaway-vaihtoehdon" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Julkinen internetyhteys" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ei internetyhteyttä" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Julkinen Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Langallinen internetyhteys" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Tietokoneita käytettävissä" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetopastusta saatavilla" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Vessoja ei käytettävissä" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Vessoja käytettävissä" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Pääsy pyörätuolilla" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Rajoitettu pääsy pyörätuolilla" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ei pääsyä pyörätuolilla" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Suunniteltu pyörätuolikäyttäjille" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s merenpinnan tason alapuolella" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Merenpinnan tasolla" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Uskonto:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Paikkaa ei löytynyt OpenStreetMapista" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaatit osoitteessa eivät ole kelvolliset" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Osoite ei ole tuettu" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Alkupisteestä %s päätepisteeseen %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ladataan karttatiiliä tulostusta varten" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Voit perua tulostuksen, jos siinä kestää liian kauan" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Peru tulostus" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lisää välisijainti" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Poista välisijainti" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Käänteinen reitti" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lisää %s sovellukseen %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI:n avaaminen epäonnistui" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Avaa sovelluksella %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "tiedoston lataaminen epäonnistui" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Arvioitu aika: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Matkareitit tarjoaa %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Aloita %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Aloita" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Kävele %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Saavu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Saavu" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Näytä kävelyohjeet" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Piilota kävelyohjeet" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Lataa aiemmat vaihtoehdot" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Lataa myöhemmät vaihtoehdot" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aiempia vaihtoehtoja ei löytynyt." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Myöhempiä vaihtoehtoja ei löytynyt." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Tälle reitille ei löytynyt aikataulutietoja." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Tälle reitille ei löytynyt palveluntarjoajaa." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuutti" +msgstr[1] "%s minuuttia" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s tunti" +msgstr[1] "%s tuntia" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%02s tunti" +msgstr[1] "%s:%02s tuntia" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Kellon ympäri" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Auringonnoususta auringonlaskuun" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Päivittäin" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Yleiset vapaapäivät" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Koulujen vapaapäivät" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ei avoinna" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Tuntematon" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Tarkka" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tämä liitännäinen ei tue myöhäisintä saapumista" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Jatka %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Jatka" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Käänny vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Käänny vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Käänny hieman vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Käänny hieman vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Käänny terävästi vasemmalle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Käänny terävästi vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Käänny oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Käänny oikealle" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Käänny hieman oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Käänny hieman oikealle" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Käänny terävästi oikealle kohdasta %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Käänny terävästi oikealle" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Kiertoliittymässä ota poistumistie %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Kiertoliittymässä ota poistumistie suuntaan %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Mene kiertoliittymään" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ota hissi ja jää pois kerroksessa %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ota hissi" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Tee u-käännös vasemmalle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Tee u-käännös vasemmalle" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Tee u-käännös oikealle kohtaan %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Tee u-käännös oikealle" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Voit myös etsiä tietynlaista sijaintia, kuten \"Pubit lähellä Kallio, " +#~ "Helsinki\" tai \"Hotellit lähellä Berliini, Saksa\"." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook-paikkakirjautumisen yksityisyysasetus" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Viimeisin käytetty Facebook-paikkakirjautumisen yksityisyysasetus. " +#~ "Mahdolliset arvot ovat: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS tai " +#~ "SELF." + +#~ msgid "Everyone" +#~ msgstr "Kaikki" + +#~ msgid "Friends of friends" +#~ msgstr "Kaverien kaverit" + +#~ msgid "Just friends" +#~ msgstr "Vain kaverit" + +#~ msgid "Just me" +#~ msgstr "Vain minä" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kartat ei löydä Facebookista paikkaa kirjautumista varten. Valitse paikka " +#~ "luettelosta." + +#~ msgid "Find a Route" +#~ msgstr "Hae reitti" + +#~ msgid "Check in here" +#~ msgstr "Kirjaudu tänne" + +#~ msgid "Show more information" +#~ msgstr "Näytä lisätietoja" + +#~ msgid "Population:" +#~ msgstr "Asukasluku:" + +#~ msgid "Altitude:" +#~ msgstr "Korkeus:" + +#~ msgid "Opening hours:" +#~ msgstr "Aukioloajat:" + +#~ msgid "Internet access:" +#~ msgstr "Internetin käyttö:" + +#~ msgid "Toilets:" +#~ msgstr "Vessat:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Pääsy pyörätuolilla:" + +#~ msgid "Phone:" +#~ msgstr "Puhelin:" + +#~ msgid "yes" +#~ msgstr "kyllä" + +#~ msgid "limited" +#~ msgstr "rajoitettu" + +#~ msgid "no" +#~ msgstr "ei" + +#~ msgid "designated" +#~ msgstr "suunniteltu esteettömäksi" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-osoite ei ole kelvollinen" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kiinteä" + +#~ msgid "terminal" +#~ msgstr "pääte" + +#~ msgid "service" +#~ msgstr "palvelu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Oletko vailla tiliä?" + +#~ msgid "%f h" +#~ msgstr "%f t" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lisää välipiste" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Reittihaun tarjoaa OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Avaa muussa sovelluksessa" + +#~ msgid "Press enter to search" +#~ msgstr "Paina enter etsiäksesi" + +#~ msgid "Quit" +#~ msgstr "Lopeta" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Avaa muototaso…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Lataa karttataso" + +#~ msgid "Open Layer" +#~ msgstr "Avaa taso" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Sijaintia ei löytynyt" + +#~ msgid "Country code: %s" +#~ msgstr "Maanumero: %s" + +#~ msgid "Population: %s" +#~ msgstr "Asukasluku: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pääsy pyörätuolilla: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON-tiedoston jäsentäminen epäonnistui" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Viimeksi tunnettu sijainti ja tarkkuus" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Viimeksi tunnettu sijainti (leveys ja pituus asteissa) ja tarkkuus " +#~ "(metreissä)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Käyttäjän viimeksi tunnetun sijainnin kuvaus." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Asetettiinko viimeksi tunnettu sijainti käyttäjän toimesta." + +#~ msgid "I’m here!" +#~ msgstr "Minä, minä olen täällä!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelliitti" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 00000000..e06a6670 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,2059 @@ +# French Translation of GNOME Maps. +# Copyright (C) 2013-2020 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Ouharzoune Mohammed , 2013 +# Claude Paroz , 2013-2017, 2020 +# Alexandre Franke , 2016. +# Guillaume Bernard , 2014-2021 +# Alain Lojewski ,2018 +# vanadiae , 2020-2021. +# Charles Monzat , 2018-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-06 10:26+0000\n" +"PO-Revision-Date: 2021-09-09 09:12+0200\n" +"Last-Translator: Guillaume Bernard \n" +"Language-Team: GNOME French Team \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Cartes de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recherche d’emplacements autour du monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L’application Cartes vous donne un accès rapide à des cartes du monde " +"entier. Elle permet de trouver rapidement un emplacement en recherchant par " +"ville ou par rue, ou de situer un endroit de rencontre avec un ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Les cartes utilisent la base de données collaborative OpenStreetMap, à " +"laquelle contribuent des centaines de milliers de personnes dans le monde " +"entier." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Le projet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Cartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une application cartographique simple" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Cartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d’afficher votre emplacement sur la carte." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "dernier emplacement affiché" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonnées du dernier emplacement affiché." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Niveau de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type de carte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Le type de carte à afficher (plan, satellite, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Taille de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Taille de la fenêtre (hauteur et largeur)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Position de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Position de la fenêtre (X et Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenêtre agrandie" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "État d’agrandissement de la fenêtre" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de résultats de recherche" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de résultats d’une recherche par géocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de positions récentes à conserver" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de positions récemment visitées à conserver." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre d’itinéraires récents à conserver" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre d’itinéraires récemment visités à conserver." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidentialité d’annonce de la localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidentialité précédemment utilisés pour les annonces de " +"localisation Foursquare. Les valeurs possibles sont : public (publiques), " +"followers (personnes qui me suivent) ou private (privé)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Diffusion sur Facebook des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Facebook associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Diffusion sur Twitter des annonces de localisation Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indique si Foursquare doit diffuser l’annonce de localisation sous forme de " +"publication sur le compte Twitter associé au compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d’utilisateur ou adresse de courriel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indique si l’utilisateur s’est identifié pour modifier des données " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Type de transport utilisé lors du dernier itinéraire" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mode nuit" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indique si l’application est en mode nuit." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utiliser les tuiles aériennes hybrides" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indique si les tuiles aériennes doivent être utilisées en mode hybride (avec " +"étiquettes)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilité" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publier sur Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publier sur Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuler" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "A_nnoncer sa localisation" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publique" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Personnes qui me suivent" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinéraire depuis ici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ajouter une destination intermédiaire" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinéraire jusqu’à ce point" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Qu’y a-t-il ici ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copier l’emplacement" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Ajouter à OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportation de l’affichage" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporter" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclure l’itinéraire et les marqueurs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Choisir le type de carte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zoom arrière" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimer l’itinéraire" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Basculer les favoris" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Général" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afficher les raccourcis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Rechercher" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Basculer vers l’itinéraire" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimer l’itinéraire" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitter" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afficher la carte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrière" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Afficher/masquer l’échelle" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Aller à ma position actuelle" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passer en vue cartographique" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passer en vue aérienne" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afficher les étiquettes" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Ouvrir une couche de formes…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activer les services de localisation pour trouver votre position" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuler" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localisation" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode nuit" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurer un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporter comme image" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "À propos de Cartes" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ouvrir le menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Cartes est hors ligne !" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Cartes a besoin d’une connexion Internet active et fonctionnelle, mais " +"aucune n’a été trouvée." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Vérifiez votre connexion et vos paramètres de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S’identifier pour modifier des " +"cartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aider à l’amélioration des cartes avec\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adresse électronique" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mot de passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscrire" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "S’identifier" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Désolé, ça n’a pas fonctionné. Veuillez réessayer ou visiter\n" +"OpenStreetMap pour réinitialiser votre mot de passe." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Le code de vérification ne correspond pas, essayez encore une fois." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Saisissez le code de vérification affiché ci-dessus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Vérifier" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Vous êtes inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Votre compte OpenStreetMap est actif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Se déconnecter" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rue" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numéro" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Code postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Ville" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Aucun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Ajouter un champ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaire" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Les modifications de la carte seront visibles sur toutes\n" +"les cartes qui utilisent des données OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Dernièrement utilisé" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Suivant" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Aucun résultat trouvé" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Une erreur est survenue" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Faites glisser pour modifier l’ordre de l’itinéraire" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Ouvrir l’emplacement" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copier" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Envoyer vers…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Annoncer sa localisation…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Ouvrir une couche de formes" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ouvrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inverser la visibilité" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recherche d’itinéraire avec GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Les itinéraires par transport public sont fournis par des services tiers\n" +"GNOME ne peut garantir l’exactitude des itinéraires et horaires présentés.\n" +"Notez que certains fournisseurs ne présentent pas toujours tous les modes " +"de\n" +"transport disponibles, par ex. un fournisseur national n’indiquerait peut-" +"être\n" +"pas les lignes aériennes ou un fournisseur local pourrait omettre les trains " +"régionaux\n" +".Les noms et marques affichés doivent être considérés comme des marques " +"déposées, le cas échéant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Montrer plus de résultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Masquer les arrêts et informations intermédiaires" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afficher les arrêts et informations intermédiaires" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir maintenant" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Départ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivée" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afficher" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Métros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Bateaux" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partager l’emplacement" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Ajouter à un nouvel itinéraire" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Directions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marquer comme favori" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifier sur OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomez pour ajouter un emplacement !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trouver une structure de tuiles dans le répertoire" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Échec d’analyse d’un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributs obligatoires manquants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trouver l’élément OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un chemin vers un répertoire local de structure de tuiles" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Taille de tuile pour le répertoire local de tuiles" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Afficher la version du logiciel" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorer la disponibilité du réseau" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHIER…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Sélectionner un compte" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Chargement" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Sélectionner un lieu" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cartes ne trouve pas de lieu pour signaler sa localisation sur Foursquare. " +"Veuillez en sélectionner un dans cette liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Annoncer sa localisation à %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Écrire un message optionnel pour votre annonce de localisation à %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trouver « %s » sur le réseau social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trouver un endroit correspondant pour annoncer sa localisation " +"ici" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Les informations d’authentification ont expiré, ouvrez Comptes en ligne pour " +"vous connecter et activer ce compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Rien n’a été trouvé à cet endroit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L’emplacement a été ajouté à la carte, notez que cela peut prendre un moment " +"avant qu’il n’apparaisse sur la carte et dans les résultats de recherche." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Cartes situées à %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Le système de fichiers est en lecture seule" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Vous n’avez pas la permission d’enregistrer à cet endroit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Le dossier n’existe pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Aucun nom de fichier indiqué" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d’exporter l’affichage" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Lieu actuel" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordonnée non valable" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erreur d’analyse" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "géométrie inconnue" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Échec de la recherche d’itinéraire." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Aucun itinéraire trouvé." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "C’est parti !" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tous les fichiers de couches" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Échec à la connexion au service de localisation" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Ouharzoune Mohammed \n" +"Claude Paroz \n" +"Guillaume Bernard \n" +"Charles Monzat " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Une application cartographique pour GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Copyright © 2011 – 2021 Red Hat, Inc. et les auteurs de Cartes de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Données cartographiques de %s et contributeurs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Couches de données cartographiques fournies par %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Recherche fournie par %s utilisant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Échec d’ouverture de la couche" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Voulez-vous continuer ?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Vous êtes sur le point d’ouvrir des fichiers pour une taille totale de " +"%s Mo. Cela peut prendre un certain temps à charger" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Le type de fichier n’est pas pris en charge" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Échec d’ouverture de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d’utilisateur ou mot de passe incorrect" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Mauvaise requête" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objet non trouvé" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, quelqu’un d’autre vient de modifier l’objet" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L’objet a été supprimé" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Le chemin ou la relation se réfère à des enfants qui n’existent pas" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Le nom officiel. C’est en général ce qui est écrit sur l’enseigne." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Site Web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Cette URL n’est pas valide. Assurez-vous d’inclure http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Le site officiel. Essayez d’utiliser la forme la plus simple pour l’URL, " +"c’est-à-dire http://example.com au lieu de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Téléphone" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numéro de téléphone. Utilisez le format international, en commençant par un " +"signe +. Attention aux lois locales sur la vie privée, surtout pour les " +"numéros de téléphone des particuliers." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Adresse de courriel" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Adresse de courriel non valide. Vérifiez que vous n’avez pas inclus le " +"préfixe de protocole mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Adresse de courriel de contact pour les demandes de renseignement. Ajoutez " +"des adresses de courriel qui sont destinées à être utilisées publiquement." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Le format utilisé devrait comprendre le code langue et le titre de " +"l’article, comme « fr:Titre de l’article »." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Heures d’ouverture" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Voir le lien dans l’étiquette pour de l’aide sur le format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Population" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Élévation (hauteur au-dessus du niveau de la mer) d’un point en mètres." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Accès aux fauteuils roulants" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Oui" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limité" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Réservé" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Accès à Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Filaire" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "À emporter" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Uniquement" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaïsme" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Bouddhisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Christianisme" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindouisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Plusieurs religions" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universaliste" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vaudou" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yézidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toilettes" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informations utilisées pour informer d’autres cartographes sur les " +"informations non évidentes sur un élément, l’intention de l’auteur lors de " +"sa création ou des indications pour de possibles améliorations." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Ajout à OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Sélectionner le type" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Terminé" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Emplacement sans nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Échec à l’analyse de la Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordonnées" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Précision de la position" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Précision de la position : %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Plats à emporter" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ne propose pas de plats à emporter" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Seulement des plats à emporter" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Accès public à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Aucun accès à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Accès Internet filaire" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordinateurs disponibles pour utilisation" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistance Internet disponible" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Toilettes indisponibles" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toilettes disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accessible aux fauteuils roulants" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accessibilité limitée aux fauteuils roulants" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Aucune accessibilité aux fauteuils roulants" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Accès destiné aux utilisateurs de fauteuils roulants" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s sous le niveau de la mer" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Au niveau de la mer" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion :" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Emplacement introuvable sur OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Les coordonnées dans l’URL ne sont pas valides" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "L’URL n’est pas prise en charge" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s à %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Chargement des tuiles de carte pour l’impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Vous pouvez interrompre l’impression si cela prend trop de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l’impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ajouter un emplacement intermédiaire" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Supprimer l’emplacement intermédiaire" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Chemin inverse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Ajouter %s à %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Échec d’ouverture de l’URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Ouvrir avec %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impossible de charger le fichier" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimé : %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinéraires fournis par %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Départ de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Départ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Marcher %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrivée à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrivée" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Montrer les instructions de marche à pied" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Masquer les instructions de marche à pied" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Charger les alternatives précédentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Charger les alternatives suivantes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Aucune alternative précédente trouvée." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Aucune alternative suivante trouvée." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Aucun horaire trouvé pour cet itinéraire." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Aucun fournisseur trouvé pour cet itinéraire." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minute" +msgstr[1] "%s minutes" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s heure" +msgstr[1] "%s heures" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s heure" +msgstr[1] "%s:%s heures" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 h/24" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Du lever au coucher du soleil" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Tous les jours" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Jours fériés" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacances scolaires" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "fermé" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Inconnue" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacte" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pieds" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ce greffon ne prend pas en charge les dernières arrivées" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuer sur %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuer" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Tourner à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Tourner à gauche" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Tourner légèrement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Tourner légèrement à gauche" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Tourner franchement à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Tourner franchement à gauche" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Tourner à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Tourner à droite" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Tourner légèrement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Tourner légèrement à droite" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Tourner franchement à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Tourner franchement à droite" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Au giratoire, prendre la sortie %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Au giratoire, prendre la sortie vers %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "S’engager dans le giratoire" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendre l’ascenseur et sortir à %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Prendre l’ascenseur" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faire un demi-tour à gauche sur %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faire un demi-tour à gauche" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faire un demi-tour à droite sur %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faire un demi-tour à droite" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Vous pouvez même chercher des lieux spécifiques, comme « Restaurants à " +#~ "côté de la Cathédrale de Strasbourg » ou « Hôtels à côté d’Alexanderplatz " +#~ "à Berlin »." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "" +#~ "Paramètres de confidentialité d’annonce de la localisation sur Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Paramètres de confidentialité précédemment utilisés pour les annonces de " +#~ "localisation sur Facebook. Les valeurs possibles sont : EVERYONE (tout le " +#~ "monde), FRIENDS_OF_FRIENDS (amis des amis), ALL_FRIENDS (tous les amis) " +#~ "or SELF (soi)." + +#~ msgid "Everyone" +#~ msgstr "Tout le monde" + +#~ msgid "Friends of friends" +#~ msgstr "Amis des amis" + +#~ msgid "Just friends" +#~ msgstr "Juste les amis" + +#~ msgid "Just me" +#~ msgstr "Juste moi" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Cartes ne trouve pas de lieu pour signaler sa localisation sur Facebook. " +#~ "Veuillez en sélectionner un dans cette liste." + +#~ msgid "Check in here" +#~ msgstr "Annoncer cet emplacement comme localisation" + +#~ msgid "Show more information" +#~ msgstr "Montrer plus d’informations" + +#~ msgid "Population:" +#~ msgstr "Population :" + +#~ msgid "Altitude:" +#~ msgstr "Altitude :" + +#~ msgid "Opening hours:" +#~ msgstr "Heures d’ouverture :" + +#~ msgid "Internet access:" +#~ msgstr "Accès à Internet :" + +#~ msgid "Toilets:" +#~ msgstr "Toilettes :" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accès aux fauteuils roulants :" + +#~ msgid "Phone:" +#~ msgstr "Téléphone :" + +#~ msgid "yes" +#~ msgstr "oui" + +#~ msgid "limited" +#~ msgstr "limité" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "réservé" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "L’URL de OpenStreetMap n’est pas valide" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "filaire" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "service" + +#~ msgid "Find a Route" +#~ msgstr "Trouver un itinéraire" + +#~ msgid "Primary menu" +#~ msgstr "Menu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Vous n’avez pas de compte ?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" diff --git a/po/fur.po b/po/fur.po new file mode 100644 index 00000000..01e12dc5 --- /dev/null +++ b/po/fur.po @@ -0,0 +1,2114 @@ +# Friulian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Fabio Tomat , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-07-09 21:52+0000\n" +"PO-Revision-Date: 2021-07-26 07:26+0200\n" +"Last-Translator: Fabio Tomat \n" +"Language-Team: Friulian \n" +"Language: fur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapis GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cjate puescj tor atôr pal mont" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapis ti da un acès veloç a lis mapis ator pal mont. Ti permet di cjatâ di " +"corse il puest che ti interesse cirint citât o vie, o cirî un puest dulà " +"cjatâsi cuntun ami." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapis al dopre il database colaboratîf OpenStreetMap, fat da centenârs di " +"miârs di personis ator pal mont." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Il progjet GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapis" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Une semplice aplicazion pes mapis" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapis;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet ae tô posizion di jessi mostrade te mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultime posizion viodude" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadis de ultime posizion viodude." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel di ingrandiment" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Gjenar di mape" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il gjenar di mape di mostrâ (stradâl, aerie, ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimension barcon" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimension barcon (largjece e altece)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizion barcon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizion barcon (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Barcon massimizât" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stat massimizât dal barcon" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Massim numar di risultâts di ricercje" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Massim numar di risultâts de ricercje da codifiche gjeografiche." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numar di lûcs resints di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numar di lûcs resints viodûts di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numar di stradis resintis di archiviâ" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numar di stradis resintis viodudis di tegnî di cont." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazions pe privacy dai check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazion pe privacy dai check-in doprade. I valôrs pussibii a son: " +"public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmission a Facebook dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un post tal account " +"Facebook associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmission a Twitter dai check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indiche se Foursquare al à di inviâ il check-in come un tweet tal account " +"Twitter associât cun l'account di Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Non utent o direzion e-mail OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Al indiche se l'utent al è jentrât te session par modificâ dâts " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "L'ultin gjenar di traspuart doprât par spostâsi" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modalitât gnot" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indiche se la aplicazion e je in modalitât gnot." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Dopre sezions aeriis ibridis" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indiche se lis sezions de mape aeriis a àn di doprâ il stîl ibrit (cun " +"etichetis)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilitât" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publiche su Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publiche su Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anule" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Personis che a mi seguissin" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privât" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Strade di chi" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Zonte destinazion intermedie" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Strade par rivâ chi" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce isal chi?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copie posizion" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Espuarte viodude" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Espuarte" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclût stradis e marcadôrs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Sielç il gjenar di mape" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Impiçulìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ingrandìs" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Stampe Strade" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Ative/disative preferîts" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Ative/disative plan di percors" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Gjenerâl" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostre scurtis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cîr" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Cambie plan stradis" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampe strade" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Jes" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Viodude mape" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumente ingrandiment" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuìs ingrandiment" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Cambiâ scjale" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va te posizion atuâl" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passe ae viodude stradâl" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passe ae viodude aerie" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vierç strât sagome" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostre etichetis" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vierç strât sagome…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ativâ i servizis di localizazion par cjatâ la tô posizion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anule" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazions di localizazion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalitât gnot" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configure Account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Espuarte come Imagjin" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtis tastiere" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazions su Mapis" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Vierç il menù principâl" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapis al è offline!" + +# cjatâ'nt indi? +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapis a scugne vê une conession internet ative par podê funzionâ, ma no si " +"'nt rive a cjatâ une." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Controle le tô conession e lis impostazions proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jentre par modificâ lis mapis" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Jude a miorâ la mape doprant un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regjistriti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Jentre" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Mi displâs, nol funzione. Torne prove o visite\n" +"OpenStreetMap par tornâ a configurâ la tô password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codiç di verifiche nol corispuint, torne prove." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Scrîf il codiç di verifiche mostrât chi parsore" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiche" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Jentrât" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Il tô account OpenStreetMap al è atîf." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Jes" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Vie" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numar civic" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codiç postâl" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Citât" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Gjenar" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nissun" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Zonte cjamp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Coment" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"I cambiaments de mape a saran visibii in dutis lis mapis che a doprin\n" +"dâts OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Doprâts di resint" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Prossim" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nissun risultât cjatât" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Si è verificât un erôr" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Strissine par cambiâ l'ordin de strade" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Vierç posizion" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copie" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Invie a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vierç strât sagome" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Vierç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Cambiâ stât visibil" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricercje dal percors cun GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I itineraris di percors pai mieçs publics a son furnîts di servizis di\n" +"tiercis parts.\n" +"GNOME nol pues garantî la justece dai itineraris e dai oraris mostrâts.\n" +"Viôt che cualchi furnidôr al podarès no includi dutis lis modalitâts di " +"traspuart disponibilis,\n" +"p.e. un furnidôr nazionâl al podarès no includi lis tratis aeronautichis e " +"un furnidôr locâl\n" +"al pues no includi i trens regjionâi.\n" +"I nons e lis marchis mostradis si àn di considerâ come marchis regjistradis " +"cuant che si puedin aplicâ." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostre plui risultâts" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Plate fermadis intermediis e informazions" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostre fermadis intermediis e informazions" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partî cumò" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partî tor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Rivâ tor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostre" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghets" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avions" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Condivît posizion" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Zonte a gnûf percors" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direzions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Segne come preferît" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifiche su OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Aumente ingrandiment par zontâ un puest!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ingrandìs" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impussibil cjatâ la struture des sezions de mape te cartele" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Impussibil analizâ il document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "E mancjin i atribûts necessaris" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impussibil cjatâ l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un percors par une struture de cartele des sezions di mape locâls" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "La dimension des sezions de mape pe cartele des sezions locâls" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostre la version dal program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignore disponibilitât rêt" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selezione un account" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Daûr a cjamâ" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Selezione un lûc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapis nol pues cjatâ il puest pal check-in cun Foursquare. Selezionâ un di " +"cheste liste." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in là di %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivi un coment opzionâl pal check-in là di %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "No rivi a cjatâ “%s” tal servizi social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impussibil cjatâ un puest adat pal check-in in chest lûc" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Lis credenziâi a son scjadudis, vierç Accounts Online par coneti e abilitâ " +"chest account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nol è nuie culì!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Il lûc al è stât zontât te mape, viôt che al podarès coventâ un pôc prime " +"che al vegni fûr te mape e tai risultâts di ricercje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapis a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il file di sisteme al è in modalitât dome-leture" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "No tu âs i permès par salvâ là" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La cartele no esist" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nissun non file specificât" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impussibil espuartâ la viodude" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Posizion atuâl" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenade no valide" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erôr tal analizâ" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "gjeometrie no valide" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Richieste dal percors falide." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Percors no cjatât." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Invie!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Ducj i files di strât" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Impussibil conetisi al servizi di localizazion" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Fabio Tomat, " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Une aplicazion di GNOME pes mapis" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e i autôrs di GNOME Mapis" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dâts mape di %s e colaboradôrs" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Sezions de mape furnîts di %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricercje furnide di %s doprant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Impussibil vierzi il strât" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Desideristu continuâ?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Tu stâs par vierzi files che a àn un totâl di %s MB di dimension. Al podarès " +"tirâle a dilunc par cjariâju" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Gjenar di file no supuartât" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Impussibil vierzi il GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Non utent o password sbaliâts" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sucès" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Richieste no juste" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Element no cjatât" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflit, cualchidun altri al à apene modificât l'element" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'element al è stât eliminât" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "La vie o la relazion si riferìs a fîs no-esistents" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Non" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Il non uficiâl. Chest al è, di solit, chel che al ven fûr tes firmis." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Recapit" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Sît web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Chest nol è un URL valit. Controle di includi http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sît web uficiâl. Cîr di doprâ la plui semplice forme di direzion, par " +"esempli http://example.com invezit di http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numar di telefon. Dopre il formât internazionâl, tacant cuntun segn +f. Sta " +"atent des leçs locâls su la privacy, in particolâr par numars di telefon " +"privâts." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Cheste no je une direzion e-mail valide. Controle di includi il prefìs di " +"protocol mailto: ." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries.Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Contate la direzion e-mail par domandis.Zonte dome direzions e-mail " +"destinadis pal ûs cul public." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedie" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formât doprât al à di includi il codiç de lenghe e il titul dal articul " +"come \"fur:Titul dal articul\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Orari di viertidure" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Viôt il leam te etichete pal jutori sul formât." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Popolazion" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitudin" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevazion (altece sul nivel dal mâr) di un pont in metris." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acès disabii" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitât par disabii" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Specific par disabii" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acès internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cablade" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminâl" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servizi" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Robe di puartâ vie" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Dome" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religjon" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisim" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budisim" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisim" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianitât" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisim" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Induisim" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisim" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaisim" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religjons multiplis" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisim" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisim" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisim" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisim" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisim" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalisim Unitari" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisim" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianisim" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Gabinets" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Note" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informazion doprade par informâ altris mapadôrs su no evidentis informazions " +"suntun element, l’intent dai autôrs tal creâlu o sugjeriments par ulteriôrs " +"mioraments." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Zonte a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selezione un gjenar" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Fat" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Puest cence non" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Impussibil analizâ il Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadis" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precision" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de posizion: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numar di telefon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Al ufrìs robe di puartâ vie" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nol ufrìs robe di puartâ vie" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Al ufrìs dome robe di puartâ vie" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acès internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nissun acès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acès internet vie fîl" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computers disponibii di doprâ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistence internet disponibile" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nissun gabinet disponibil" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Gabinets disponibii" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acessibil in carocele" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acessibil in carocele in mût limitât" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "No acessibil in carocele" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Progjetât pai utents in carocele" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s sot dal nivel dal mâr" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "A nivel dal mâr" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religjon:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lûc no cjatât su OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Lis coordenadis tal URL no son validis" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL nol è supuartât" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Di %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Daûr a cjariâ lis sezions de mape pe stampe" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tu puedis fermâ di stampâ se al sta masse" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Ferme stampe" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Zonte posizion de vie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gjave posizion de vie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percors inviers" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Zonte %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Impussibil vierzi il URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Vierç cun %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impussibil cjariâ il file" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp stimât: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris furnîts di %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partìs di %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partence" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Cjaminâ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Rive a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Rivade" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostre istruzions par lâ a pît" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Plate istruzions par lâ a pît" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cjariâ alternativis plui adore" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cjariâ alternativis plui tart" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nissune alternative plui adore cjatade." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nissune alternative plui tart cjatade." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e di %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nissun dât di oraris cjatât par chest percors." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nissun furnidôr cjatât par chest percors." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minût" +msgstr[1] "%s minûts" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ore" +msgstr[1] "%s oris" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ore" +msgstr[1] "%s:%s oris" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Dut il dì" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Di un scûr a chel altri" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Ogni dì" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Festîfs" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacancis di scuele" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "no viert" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "No cognossût" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Di precîs" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Chest plugin nol supuarte la ultime rivade" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolte a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Svolte a çampe" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolte di pôc a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Svolte di pôc a çampe" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolte di bot a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Svolte di bot a çampe" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolte a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Svolte a diestre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolte di pôc a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Svolte di pôc a diestre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolte di bot a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Svolte di bot a diestre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Te taronde, cjape la jessude %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Te taronde, cjape la jessude par %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Cjape la taronde" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Cjape l'assensôr e jes a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Cjape l'assensôr" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fâs une inversion a U a çampe su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Fâs une inversion a U a çampe" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fâs une inversion a U a diestre su %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Fâs une inversion a U a diestre" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Tu puedis ancje cirî par specifics gjenars di puescj, come \"Pubs near " +#~ "Main Street, Boston\" o \"Hotels near Alexanderplatz, Berlin”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Impostazions privacy dai check-in su Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Ultime impostazion pe privacy dai check-in su Facebook doprade. I valôrs " +#~ "pussibii a son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#~ msgid "Everyone" +#~ msgstr "Ducj" + +#~ msgid "Friends of friends" +#~ msgstr "Amîs di amîs" + +#~ msgid "Just friends" +#~ msgstr "Nome amîs" + +#~ msgid "Just me" +#~ msgstr "Nome jo" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapis nol pues cjatâ il puest pal check-in cun Facebook. Selezionâ un di " +#~ "cheste liste." + +#~ msgid "Check in here" +#~ msgstr "Fâs il check-in chi" + +#~ msgid "Show more information" +#~ msgstr "Mostre plui informazions" + +#~ msgid "Population:" +#~ msgstr "Popolazion:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudin:" + +#~ msgid "Opening hours:" +#~ msgstr "Orari di viertidure:" + +#~ msgid "Internet access:" +#~ msgstr "Acès internet:" + +#~ msgid "Toilets:" +#~ msgstr "Gabinets:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acès disabii:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "sì" + +#~ msgid "limited" +#~ msgstr "limitât pai disabii" + +#~ msgid "no" +#~ msgstr "no" + +#~ msgid "designated" +#~ msgstr "specific par disabii" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL di OpenStreetMap nol è valit" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "cablade" + +#~ msgid "terminal" +#~ msgstr "terminâl" + +#~ msgid "service" +#~ msgstr "servizi" + +#~ msgid "Find a Route" +#~ msgstr "Cjate un percors" + +#~ msgid "Primary menu" +#~ msgstr "Menù primari" + +#~ msgid "Don’t have an account?" +#~ msgstr "No tu âs un account?" + +#~ msgid "Add destination" +#~ msgstr "Zonte destinazion" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ricercje dal percors cun OpenTripPlanner" + +#~ msgid "Open with another application" +#~ msgstr "Vierç cuntune altre aplicazion" + +#~ msgid "Press enter to search" +#~ msgstr "Frache Invie par cirî" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Jes" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vierç strât sagome…" + +#~ msgid "Load Map Layer" +#~ msgstr "Cjarie strât de mape" + +#~ msgid "Open Layer" +#~ msgstr "Vierç Strât" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Country code: %s" +#~ msgstr "Codiç paîs: %s" + +#~ msgid "_Share" +#~ msgstr "_Condivît" + +#~ msgid "Last known location and accuracy" +#~ msgstr "L'ultime posizion e precision cognossude" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "L'ultime posizion (latitudin e longjitudin in grâts) e precision (in " +#~ "metris) cognossude." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrizion de ultime posizion dal utent." + +#~ msgid "User set last known location" +#~ msgstr "Ultime posizion cognossude impuestade dal utent." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Indiche se l'ultime posizion cognossude a je stade impuestade a man dal " +#~ "utent." + +#~ msgid "I’m here!" +#~ msgstr "O soi chi!" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km²" +#~ msgstr " km²" diff --git a/po/ga.po b/po/ga.po new file mode 100644 index 00000000..b7753be9 --- /dev/null +++ b/po/ga.po @@ -0,0 +1,637 @@ +# Irish translations for gnome-maps package. +# Copyright (C) 2013-2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Seán de Búrca , 2013-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps.master\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-01 14:40-0600\n" +"PO-Revision-Date: 2015-10-01 14:52-0600\n" +"Last-Translator: Seán de Búrca \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " +"4;\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:77 ../src/mainWindow.js:373 +msgid "Maps" +msgstr "Léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Feidhmchlár simplí léarscáileanna" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Léarscáileanna;" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "Window size" +msgstr "Méid na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Window size (width and height)." +msgstr "Méid na fuinneoige (leithead agus airde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window position" +msgstr "Ionad na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +#, fuzzy +msgid "Window position (X and Y)." +msgstr "Ionad na fuinneoige (x agus y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window maximized" +msgstr "Uasmhéadaíodh an fhuinneog" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +#, fuzzy +msgid "Window maximization state" +msgstr "Staid uasmhéadaithe na fuinneoige" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Number of recent places to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent routes to store" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited routes to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Maidir Leis Seo" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Scoir" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Cealaigh" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Príobháideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Cad atá anseo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Cóipeáil Suíomh" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Socruithe Suímh" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Téigh go dtí an suíomh reatha" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Roghnaigh cineál léarscáile" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Tá Léarscáileanna as líne!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Cuir le bealach nua" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Oscail le feidhmchlár eile" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Oscail suíomh" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Oscail" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Cuardach bealaí ag GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Taispeáin tuilleadh torthaí" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:209 +msgid "Current location" +msgstr "Suíomh reatha" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Cruinneas: %s" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../src/application.js:86 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:176 +msgid "Select an account" +msgstr "" + +#: ../src/checkInDialog.js:181 ../src/checkInDialog.js:253 +msgid "Loading" +msgstr "Á luchtú" + +#: ../src/checkInDialog.js:205 +msgid "Select a place" +msgstr "Roghnaigh áit" + +#: ../src/checkInDialog.js:210 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:212 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:227 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:237 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: ../src/checkInDialog.js:289 ../src/checkIn.js:153 +msgid "An error has occurred" +msgstr "Tharla earráid" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:135 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "" + +#: ../src/checkIn.js:137 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:141 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/mainWindow.js:321 +msgid "Failed to connect to location service" +msgstr "" + +#: ../src/mainWindow.js:326 +msgid "Position not found" +msgstr "" + +#: ../src/mainWindow.js:371 +msgid "translator-credits" +msgstr "Seán de Búrca " + +#: ../src/mainWindow.js:374 +msgid "A map application for GNOME" +msgstr "Feidhmchlár léarscáile do GNOME" + +#: ../src/placeBubble.js:101 +#, javascript-format +msgid "Postal code: %s" +msgstr "Cód poist: %s" + +#: ../src/placeBubble.js:103 +#, javascript-format +msgid "Country code: %s" +msgstr "Cód tíre: %s" + +#: ../src/placeBubble.js:112 +#, javascript-format +msgid "Population: %s" +msgstr "Daonra: %s" + +#: ../src/placeBubble.js:115 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Uaireanta oscailte: %s" + +#: ../src/placeBubble.js:120 +msgid "Wikipedia" +msgstr "Vicipéid" + +#: ../src/placeBubble.js:125 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Bealach isteach do chathaoireacha rothaí: %s" + +#: ../src/placeEntry.js:215 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: ../src/place.js:121 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:128 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: ../src/place.js:134 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:141 +msgid "designated" +msgstr "" + +#: ../src/routeService.js:90 +msgid "No route found." +msgstr "Bealach gan aimsiú." + +#: ../src/routeService.js:97 +msgid "Route request failed." +msgstr "" + +#: ../src/routeService.js:168 +msgid "Start!" +msgstr "Tosaigh!" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:230 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Am measta: %s" + +#: ../src/translations.js:55 ../src/translations.js:57 +msgid "around the clock" +msgstr "" + +#: ../src/translations.js:59 +msgid "from sunrise to sunset" +msgstr "" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:78 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:90 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:121 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:153 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:167 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:186 +msgid "every day" +msgstr "gach lá" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:198 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:209 +msgid "public holidays" +msgstr "" + +#: ../src/translations.js:211 +msgid "school holidays" +msgstr "" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:251 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:265 +msgid "not open" +msgstr "" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:280 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:256 +msgid "Unknown" +msgstr "Anaithnid" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:259 +msgid "Exact" +msgstr "" + +#: ../src/utils.js:354 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:356 +#, javascript-format +msgid "%f min" +msgstr "%f n" + +#: ../src/utils.js:358 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:369 +#, javascript-format +msgid "%f km" +msgstr "%f cm" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:372 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:380 +#, javascript-format +msgid "%f mi" +msgstr "%f mí" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:383 +#, javascript-format +msgid "%f ft" +msgstr "%f tr" diff --git a/po/gd.po b/po/gd.po new file mode 100644 index 00000000..573cf67f --- /dev/null +++ b/po/gd.po @@ -0,0 +1,1621 @@ +# Scottish Gaelic translation for gnome-maps. +# Copyright (C) 2016 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# GunChleoc , 2016, 2017, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-20\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product" +"=gnome-maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-09-11 20:24+0000\n" +"PO-Revision-Date: 2018-03-02 10:29+0100\n" +"Last-Translator: GunChleoc \n" +"Language-Team: Fòram na Gàidhlig\n" +"Language: gd\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : " +"(n > 2 && n < 20) ? 2 : 3;\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Mapaichean GNOME" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Lorg àitichean air feadh an t-saoghail" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Bheir Mapaichean dhut inntrigeadh luath dha mhapaichean air feadh an t-" +"saoghail. Leigidh e leat àite a lorg gu luath a-rèir baile no sràide no an t-" +"àite a lorg far a bheil thu airson tachairt ri caraid." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Cleachdaidh Mapaichean stòr-dàta OpenStreetMap co-obrachail a chaidh a " +"chruthachadh leis na mìltean mòra de dhaoine o fheadh an t-saoghail." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"’S urrainn dut fiù ’s lorg airson ionadan sònraichte, can “Taighean-seinnse " +"faisg air Sràid nam Prionnsachan, Dùn Èideann” no “Taighean-òsta faisg air " +"Sràid Sauchiehall, Glaschu”." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:489 +msgid "Maps" +msgstr "Mapaichean" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Aplacaid mhapaichean shimplidh" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;mapaichean;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Faodaidh far a bheil thu a nochdadh air a’ mhapa le seo." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "an t-ionad mu dheireadh a chaidh a shealltainn" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Co-chomharran an ionaid mu dheireadh a chaidh a shealltainn." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Meud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Meud na h-uinneige (leud ’s àirde)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Ionad na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Ionad na h-uinneige (x is y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Làn-mheud air an uinneag" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Staid làn-mheud na h-uinneige" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "An àireamh as motha de thoraidhean luirg" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "An àireamh as motha de thoraidhean luirg o lorg geocode." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Àireamh dhe dh’ionadan o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" +"Àireamh dhe dh’ionadan air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Àireamh dhe shlighean o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "" +"Àireamh dhe shlighean air an deach tadhal o chionn ghoirid ri an sàbhaladh" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Facebook. Seo na luachan as urrainn dhut cleachdadh: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS no SELF." + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Roghainn prìobhaideachd airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"An roghainn prìobhaideachd mu dheireadh a chaidh a chleachdadh airson " +"nochdadh air Foursquare. Seo na luachan as urrainn dhut cleachdadh: public, " +"followers no private." + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Craoladh Facebook airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar phost sa " +"chunntas Facebook a tha co-cheangailte ris a’ chunntas Foursquare gus nach " +"bu chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Craoladh Twitter airson nochdadh air Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Innsidh seo am bu còir Foursquare na nochd thu air a chraoladh mar tweet sa " +"chunntas Twitter a tha co-cheangailte ris a’ chunntas Foursquare gus nach bu " +"chòir." + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "Ainm-cleachdaiche no seòladh puist-d OpenStreetMap" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Innsidh seo an do clàraich an cleachdaiche a-steach gus dàta OpenStreetMap a " +"dheasachadh gus nach do chlàraich." + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Suidhich cunntas OpenStreetMap" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Ath-ghoiridean a’ _mheur-chlàir" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "Mu dhèidhinn" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Faicsinneachd" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Postaich air Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Postaich air Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Sguir dheth" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "Noc_hd air" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "A h-uile duine" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Caraidean nan caraidean" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Caraidean a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Mise a-mhàin" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Poblach" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Daoine a leanas orm" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Prìobhaideach" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Dè tha an-seo?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Dèan lethbhreac dhen ionad" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Às-phortaich mar dhealbh" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Às-phortaich an sealladh" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "À_s-phortaich" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Gabh a-steach an t-slighe is na comharran" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Coitcheann" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Seall na h-ath-ghoiridean" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Lorg" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Fàg an-seo" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Sealladh a’ mhapa" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Sùm a-steach" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Sùm a-mach" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Toglaich an sgèile" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +#| msgid "Open Layer" +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Fosgail breath" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "Luchdaich breath a’ mhapa" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Cuir seirbheisean ionaid air gus lorg far a bheil thu" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Roghainnean ionaid" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Rach dhan ionad làithreach" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Tagh seòrsa a’ mhapa" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Toggle route planner" +msgstr "Toglaich am planadair shlighean" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Toggle favorites" +msgstr "Toglaich na h-annsachdan" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Print Route" +msgstr "Clò-bhuail an t-slighe" + +#: ../data/ui/main-window.ui.h:12 +msgid "Maps is offline!" +msgstr "Tha Mapaichean far loidhne!" + +#: ../data/ui/main-window.ui.h:13 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Tha Mapaichean feumach air ceangal dhan eadar-lìon gus obrachadh mar bu " +"chòir ach cha deach gin a lorg." + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "Thoir sùil air roghainnean a’ cheangail ’s a’ phrogsaidh agad." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Cuir ri slighe ùr" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Fosgail le aplacaid eile" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Comharraich ’na h-annsachd" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Nochd seo" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "Cunntas OpenStreetMap" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Clàraich a-steach gus mapaichean a " +"dheasachadh" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Cuidich gus piseach a thoirt air a’ mhapa\n" +"le cunntas OpenStreetMap." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "Post-d" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Facal-faire" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Clàraich a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "Nach eil cunntas agad?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +#| msgid "" +#| "Sorry, that didn't work. Please try again, or visit\n" +#| "OpenStreetMap to reset your password." +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Tha sinn duilich ach cha do dh’obraich sin. Feuch ris a-rithist no tadhail " +"air\n" +"OpenStreetMap gus am facal-faire agad ath-shuidheachadh." + +#: ../data/ui/osm-account-dialog.ui.h:12 +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "Cha robh an còd dearbhaidh mar bu chòir, am feuch thu ris a-rithist?" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Cuir a-steach an còd dearbhaidh a chì thu gu h-àrd" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Dearbhaich" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Air do chlàradh a-steach" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Tha an cunntas OpenStreetMap agad gnìomhach." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Clàraich a-mach" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Sràid" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Àireamh an taighe" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Còd-puist" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Baile" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Seòrsa" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Chan eil gin" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Cuir raon ris" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Beachd" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +#| msgid "" +#| "Map changes will be visible on all maps that use\n" +#| " OpenStreetMap data." +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Chithear atharraichean a’ mhapa air a h-uile mapa a chleachdas\n" +"dàta OpenStreetMap." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Air an cleachdadh o chionn ghoirid" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#| msgid "Edit on OpenStreetMap" +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Sguir dheth" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "Air adhart" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Deasaich air OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Seall barrachd fiosrachaidh" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Brùth air Enter airson lorg" + +#: ../data/ui/place-popover.ui.h:2 +#| msgid "No route found." +msgid "No results found" +msgstr "Cha deach toradh a lorg" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Slaod gus òrdugh na slighe atharrachadh" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Fosgail ionad" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "F_osgail" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "Fosgail breath" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Toglaich an fhaicsinneachd" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Lorg shlighean le GraphHopper" + +#: ../data/ui/sidebar.ui.h:2 +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "Lorg shlighean le OpenTripPlanner" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Seall barrachd toraidhean" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#| msgid "Show more information" +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "An t-ionad làithreach" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Pongalachd: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Sùm a-steach gus ionad a chur ris!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "Ceart ma-thà" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Cha deach leinn structar leacagan a lorg sa phasgan" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Dh’fhàillig le parsadh na sgrìobhainn XML" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Tha roghainnean riatanach a dhìth" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Cha deach leinn eileamaid OSM a lorg" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "Slighe gu structar pasgain leacagan ionadail" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "Tagh cunntas" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "’Ga luchdadh" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "Tagh àite" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Facebook. Tagh fear " +"on liosta seo." + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Cha deach le Mapaichean àite a lorg gus a nochdadh air Foursquare. Tagh fear " +"on liosta seo." + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "Nochd %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Sgrìobh teachdaireachd ma thogras tu gus %s a nochdadh." + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "Thachair mearachd" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "Cha b’ urrainn dhuinn “%s” a lorg san t-seirbheis sòisealta" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Cha b’ urrainn dhuinn àite iomchaidh a lorg gus an t-ionad seo a nochdadh" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Dh’fhalbh an ùine air an teisteas, fosgail na cunntasan air loidhne gus " +"clàradh a-steach agus an cunntas seo a chur an comas" + +#: ../src/contextMenu.js:99 +msgid "Route from here" +msgstr "Slighe on a sheo" + +#: ../src/contextMenu.js:101 +msgid "Add destination" +msgstr "Cuir ceann-uidhe ris" + +#: ../src/contextMenu.js:103 +msgid "Route to here" +msgstr "Slighe dhan a sheo" + +#: ../src/contextMenu.js:132 +msgid "Nothing found here!" +msgstr "Cha deach dad a lorg an-seo!" + +#: ../src/contextMenu.js:189 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Chaidh an t-ionad a chur ris a’ mhapa. Thoir an aire gun doir e greis mhath " +"mus nochd e air a’ mhapa agus ann an toraidhean luirg." + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "Tha an siostam-faidhlichean ri leughadh a-màin" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "Chan eil cead agad gus rud a shàbhaladh an-seo" + +#: ../src/exportViewDialog.js:160 +#| msgid "The directory does not exists" +msgid "The directory does not exist" +msgstr "Chan eil am pasgan ann" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "Cha deach ainm-faidhle a shònrachadh" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "Cha b’ urrainn dhuinn an sealladh às-phortadh" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "co-chomharran mì-dhligheach" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "mearachd parsaidh" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "geomatras nach aithne dhuinn" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +msgid "Route request failed." +msgstr "Dh’fhàillig le iarrtas slighe." + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "Cha deach slighe a lorg." + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "Tòisich!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "A h-uile faidhle breatha" + +#: ../src/mainWindow.js:431 +msgid "Failed to connect to location service" +msgstr "Dh’fhàillig an ceangal ris an t-seirbheis ionadan" + +#: ../src/mainWindow.js:487 +msgid "translator-credits" +msgstr "GunChleoc " + +#: ../src/mainWindow.js:490 +msgid "A map application for GNOME" +msgstr "Aplacaid mhapaichean airson GNOME" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "Cha chuirear taic ris an t-seòrsa faidhle" + +#: ../src/mapView.js:363 +msgid "Failed to open layer" +msgstr "Dh’fhàillig le fosgladh na breatha" + +#: ../src/mapView.js:399 +msgid "Failed to open GeoURI" +msgstr "Dh’fhàillig le fosgladh GeoURI" + +#: ../src/openTripPlanner.js:622 +msgid "No earlier alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:623 +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "" + +#: ../src/openTripPlanner.js:661 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" +"Chan eil an t-ainm-cleachdaiche no chan eil am facal-faire mar bu chòir" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "Shoirbhich leis" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "Droch iarrtas" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "Cha deach an t-oibseact a lorg" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Còmhstri, tha cuideigin eile dìreach air an t-oibseact atharrachadh" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Chaidh an t-oibseact a sguabadh às" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Tha an t-slighe no an dàimh a’ toirt iomradh air clann nach eil ann" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "Ainm" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "Ainm oifigeil. Seo na nochdas air sanasan mar as trice." + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "Seòladh" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "Làrach-lìn" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"An làrach-lìn oifigeil. Feuch an cleachd thu an dreach as bunasaiche dhen " +"URL, can http://ball-eisimpleir.com seach http://ball-eisimpleir.com/index." +"html." + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "Fòn" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"An àireamh fòn. Cleachd am fòrmat eadar-nàiseanta, a’ tòiseachadh le samhla " +"+. Thoir an aire air laghan prìobhaideachd ionadail, gu h-àraidh a thaobh " +"àireamhan prìobhaideach." + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "An Uicipeid" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Bu chòir dhan fhòrmat a chleachdas tu an còd cànan agus tiotal na h-aiste a " +"ghabhail a-steach, can “gd:Tiotal na h-aiste”." + +#: ../src/osmEditDialog.js:143 +msgid "Opening hours" +msgstr "Uairean fosglaidh" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "Faic an ceangal san leubail airson cobhair mun fòrmat." + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "Sluagh" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "Àirde" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Meatair a dh’àirde (os cionn na mara) aig puing." + +#: ../src/osmEditDialog.js:162 +msgid "Wheelchair access" +msgstr "Inntrigeadh cathrach-cuibhle" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "Tha inntrigeadh ann" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "Chan eil inntrigeadh ann" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "Cuingichte" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "Ainmichte" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "Inntrigeadh an eadar-lìn" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "WiFi" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "Le uèir" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "Tèirmineal" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "Seirbheis" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "Creideamh" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "An aire" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Cuir ri OpenStreetMap" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "Tagh seòrsa" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "Deiseil" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "Sluagh:" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "Àirde:" + +#: ../src/placeBubble.js:133 +msgid "Opening hours:" +msgstr "Uairean fosglaidh:" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "Inntrigeadh an eadar-lìn:" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "Creideamh:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "Taighean-beaga:" + +#: ../src/placeBubble.js:153 +msgid "Wheelchair access:" +msgstr "Inntrigeadh cathrach-cuibhle:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "Fòn:" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Dh’fhàillig le parsadh a’ Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "tha inntrigeadh ann" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "cuingichte" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "chan eil inntrigeadh ann" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "ainmichte" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "O %s gu %s" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "A’ luchdadh leacagan a’ mhapa a chum clò-bhualaidh" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "’S urrainn dhut sgur dhen chlò-bhualadh ma bheir e ro fhada" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "Sguir dhen chlò-bhualadh" + +#: ../src/sendToDialog.js:179 +msgid "Failed to open URI" +msgstr "Dh’fhàillig le fosgladh URI" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "dh’fhàillig le luchdadh faidhle" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tuairmse air an ùine: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +#| msgid "Start!" +msgid "Start" +msgstr "Toiseach" + +#: ../src/transitLegRow.js:107 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:108 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d mhionaid" +msgstr[1] "%d mhionaid" +msgstr[2] "%d mionaidean" +msgstr[3] "%d mionaid" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d uair a thìde" +msgstr[1] "%d uair a thìde" +msgstr[2] "%d uairean a thìde" +msgstr[3] "%d uair a thìde" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d uair a thìde" +msgstr[1] "%d:%02d uair a thìde" +msgstr[2] "%d:%02d uairean a thìde" +msgstr[3] "%d:%02d uair a thìde" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "fad an latha" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "o èirigh gu laighe na grèine" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "gach latha" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "saor-làithean poblach" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "saor-làithean sgoile" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "dùinte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "le uèir" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "tèirmineal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "seirbheis" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "Chan eil fhios" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "Pongail" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f u" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f mion" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f d" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s mì" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%s troigh" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mì" + +#~ msgid "%f ft" +#~ msgstr "%f troigh" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 00000000..3a331c0e --- /dev/null +++ b/po/gl.po @@ -0,0 +1,2043 @@ +# Galician translations for PACKAGE package. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Fran Diéguez , 2013. +# Fran Dieguez , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-25 06:03+0000\n" +"PO-Revision-Date: 2021-08-25 19:35+0200\n" +"Last-Translator: Fran Dieguez \n" +"Language-Team: Galician >\n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 40.0\n" +"X-Project-Style: gnome\n" +"X-DL-Team: gl\n" +"X-DL-Module: gnome-maps\n" +"X-DL-Branch: master\n" +"X-DL-Domain: po\n" +"X-DL-State: Translating\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas de GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Busque lugares por todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas dálle acceso a mapas de todo o mundo. Permítelle buscar de forma " +"rápida o lugar que está buscando por cidade ou rúa, ou localizar un lugar " +"para encontrarse con un amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapa usa a base de datos colaborativa de OpenStreetMap, feita por centos de " +"persoas por todo o mundo." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "O Proxecto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Unha aplicación sinxela de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permitir que se mostre a súa localización no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localización vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localización vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliación" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel de ampliación" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a mostrar (rúas, aéreo, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamaño da xanela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamaño da xanela (ancho e alto)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posición da xanela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posición da xanela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Xanela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximizado de xanela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de busca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número de máximo de resultados de busca para as buscas xeolocalizada." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rutas recentes a almacenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de lugares visitados recentemente a almacenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configuración de privacidade do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última configuración de privacidade do rexistro de Foursquare. Os valores " +"posíbeis son: public, followers ou private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusión en Facebook do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un mensaxe novo na conta " +"de Facebook asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusión en Twitter do rexistro de Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare debe difundir o rexistro como un chío novo na conta de " +"Twitter asociada coa de Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuario ou enderezo de correo de OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuario iniciou sesión para editar datos en OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "O último tipo de transporte para enrutado usado" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo noite" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indica se a aplicación está en modo noite." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Usar teselas aéreas híbridas" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Indica se as teselas aéreas deberían usar o estilo híbrido (con etiquetas)" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Enviar a Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Enviar a Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Rexistrar" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Ruta desde aquí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Engadir un destino intermedio" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Ruta a aquí" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Que hai aquí?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localización" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluír rutas e marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ir á localización actual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Escolla o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Afastar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Trocar favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Activar/desactivar o planificador de rutas" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Xeral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar atallos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Buscar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Trocar o planificador de rutas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Saír" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista do mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Afastar" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Trocar escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir á localización actual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Trocar á vista de rúa" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Trocar á vista aérea" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir a capa de relieve…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Active os servizos de localización para buscar a súa localización" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Preferencias de localización" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noite" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar unha conta de OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imaxe" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Atallos de _teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapa precisa unha conexión a internet activa para funcionar correctamente, " +"pero non se atopou ningunha." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Comprobe a súa conexión ou preferencias do seu proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta de OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Iniciar sesión para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Axude a mellorar o mapa, use unha\n" +"conta de OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correo electrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Contrasinal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Rexistrarse" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sesión" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Isto non funcionou. Ténteo de novo ou visite\n" +"OpenStreetMap para restabelecer o seu contrasinal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificación non coincide, probe de novo." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Escriba o código de verificación mostrado arriba" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Comprobar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sesión iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A súa conta de OpenStreetMap está activa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Pechar a sesión" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rúa" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número de casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ningún" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Engadir campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentario" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Os cambios no mapa serán visíbeis en todos os\n" +"mapas que usen datos de OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usados recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seguinte" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Non se atoparon resultados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Produciuse un erro" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arrastrar a orde de cambio de ruta" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localización" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Rexistrarse…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir a capa de relieve" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Trocar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Busca de ruta por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Os itinerarios de ruta para o tránsito público están fornecidos por servizos " +"de terceiros.\n" +"GNOME non ofrece ningunha garantía de que os datos e horarios dos " +"itinerarios sexan\n" +"correctos. \n" +"Teña en conta que algúns fornecedores poden non incluír todos os modos " +"dispoñíbeis\n" +"de transporte, por exemplo o fornecedor nacional pode non incluír as " +"aeroliñas, e o \n" +"fornecedor local pode omitir os trens rexionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar máis resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermedias e información" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar paradas intermedias e información" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Saír agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sae ás" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chega ás" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buses" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tranvías" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferris" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avións" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Compartir localización" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Engadir unha nova ruta" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direccións" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar en OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplíe para engadir unha localización!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Produciuse un fallo ao atopar a estrutura de teselas no cartafol" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Produciuse un fallo ao analizar o XML do documento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltan atributos requiridos" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Non foi posíbel atopar o elemento de OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Unha ruta a unha estrutura de directorios de teselas locais" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamaño de tesela para o cartafol de teselas locais" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra a versión do programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar a dispoñibilidade da rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccione unha conta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Cargando" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccione un lugar" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas non pode atopar un lugar onde rexistrarse con Foursquare. Por favor " +"seleccione un desde a lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Rexistrarse en %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriba unha mensaxe opcional para rexistrarse en %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Non se pode atopar «%s» no servizo social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Non é posíbel atopar un lugar axeitado para rexistrarse nesta localización" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As súas credenciais expiraron, abra as «Contas en liña» para iniciar sesión " +"e activar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non se atopou nada aquí!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Engadiuse a localización ao mapa, teña en conta que pode tardar algún tempo " +"antes de que se mostre no mapa e nos resultados de busca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas en %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é de só lectura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non ten permiso para gardar aquí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O cartafol non existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nome de ficheiro non especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Non foi posíbel exportar a vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localización actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada non válida" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erro na análise" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "xeometría descoñecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Produciuse un fallo na solicitude de ruta." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Non se atopou a ruta." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Comezar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de capa" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Produciuse un fallo ao conectar co servizo de localización" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Fran Diéguez , 2013-2020" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Unha aplicación de mapas para GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e os autores de Mapas de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datos do mapa por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Teselas de mapas fornecidas por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Busca fornecida por %s usando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Produciuse un fallo ao abrir a capa" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Desexa continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Está a piques de abrir ficheiros con un tamaño total de %s MB. Isto pode " +"tardar algún tempo en cargar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipo de ficheiro non admitido" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Produciuse un fallo ao abrir o GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nome de usuario ou contrasinal non correcto" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Éxito" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Solicitude non válida" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "O obxecto non se atopou" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguén modificou o obxecto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "O obxecto foi eliminado" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "A forma ou relación refírese aos fillos non existentes" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é o aparece normalmente nos sinais." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Enderezo" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Sitio web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Esta non é un URL válido. Asegúrese que inclúe http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O sitio web oficial. Tente usar o formulario máis básico de URL p.ex. http://" +"exemplo.gal no lugar de http://exemplo.gal/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Teléfono" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de teléfono. Use o formato internacional, comezando polo signo +. " +"Teña en conta as leis de privacidade locais." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correo electrónico" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Esta non é un enderezo de correo electrónico válido. Asegúrese que non " +"inclúe o prefixo de protocolo «mailto:»." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Enderezo de correo electrónico de contacto para solicitudes. Engada só un " +"enderezo de correo electrónico para o seu uso de forma pública." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato usado debería incluír o código de idioma e o título do artigo como " +"«gl:Título do artigo»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horas de apertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Vexa a ligazón na etiqueta para obter axuda no formatado." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Poboación" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevación (altura sobre o nivel do mar) do punto en metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acceso con cadeira de rodas" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Si" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Deseñado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acceso a internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Sen fíos" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Con fíos" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servizo" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Para levar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Só" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Relixión" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaísmo" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Xainismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Xudaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiples relixións" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cienciloxía" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sixismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoísmo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalismo unitario" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Xazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Baño" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Información usada para informar a outros mapeadores sobre información non " +"obvia sobre un elemento, un intento do autor de crealo ou pistas sobre " +"futuras melloras." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Engadir a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccione tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Lugar sen nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Produciuse un fallo ao analizar o URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisión" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisión: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número de teléfono" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ofrece para levar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Non ofrece para levar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Só ofrece para levar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acceso a internet pública" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Non hai acceso a internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wifi público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acceso a internet cableado" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computadores dispoñíbeis para o uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Asistencia a internet dispoñíbel" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sen baños dispoñíbeis" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Baños dispoñíbeis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acceso con cadeira de rodas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acceso con cadeira de rodas limitado" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Sen acceso con cadeira de rodas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Deseñado para usuarios de cadeira de rodas" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s baixo o nivel de mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Ao nivel do mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Relixión:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar non atopada en OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL non son válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "O URL non é compatíbel" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Desde %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargando teselas do mapa para a impresión" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impresión se isto leva moito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impresión" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Engadir mediante localización" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Quitar mediante localización" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inverter ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Engadir %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Produciuse un fallo ao abrir o URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "produciuse un fallo ao cargar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarios fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Comezar en %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Inicio" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camiñar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chega ás %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instrucións do camiño" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instrucións do camiño" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non hai alternativas anteriores." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non hai alternativas posteriores." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Non se atoparon datos de horarios para esta ruta." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Non hai un fornecedor para esta ruta." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Todo o día" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Desde o solpor ao amencer" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Cada día" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Vacacións públicas" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacacións de escola" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "non aberto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Descoñecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pes" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este engadido non admite a última chegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuar en %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuar" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Xire á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Xire á esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Xire lixeiramente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Xire lixeiramente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Xire bruscamente á esquerda en %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Xire bruscamente á esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Xire á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Xire á dereita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Xire lixeiramente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Xire lixeiramente á dereita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Xire bruscamente á dereita en %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Xire bruscamente á dereita" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rotonda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rotonda, tome a saída a %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Tome a rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Colla o ascensor e saia en %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Colla o ascensor" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faga un xiro en U" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faga un xiro en U cara %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faga un xiro en U á dereita" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Incluso pode buscar por tipos de localizacións específicos como «Bares " +#~ "cerca de Rúa Nova, Compostela» ou «Puntos Wifi cerca de Praza de Galiza, " +#~ "Vilagarcía»." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Configuración de privacidade do rexistro de Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Última configuración de privacidade do rexistro de Facebook. Os valores " +#~ "posíbeis son: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#~ msgid "Everyone" +#~ msgstr "Todos" + +#~ msgid "Friends of friends" +#~ msgstr "Amigos de amigos" + +#~ msgid "Just friends" +#~ msgstr "Só amigos" + +#~ msgid "Just me" +#~ msgstr "Só eu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapas non pode atopar un lugar onde rexistrarse con Facebook. Por favor " +#~ "seleccione un desde a lista." + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Buscar unha ruta" + +#~ msgid "Check in here" +#~ msgstr "Rexistrarse aquí" + +#~ msgid "Show more information" +#~ msgstr "Mostrar máis información" + +#~ msgid "Population:" +#~ msgstr "Poboación:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horario de apertura:" + +#~ msgid "Internet access:" +#~ msgstr "Acceso a internet:" + +#~ msgid "Toilets:" +#~ msgstr "Baño:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acceso con cadeira de rodas:" + +#~ msgid "Phone:" +#~ msgstr "Teléfono:" + +#~ msgid "yes" +#~ msgstr "sí" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "O URL de OpenStreetMap non é válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "con fíos" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servizo" + +#~ msgid "Don’t have an account?" +#~ msgstr "Non ten unha conta?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Engadir destino" diff --git a/po/he.po b/po/he.po new file mode 100644 index 00000000..0a14b6d7 --- /dev/null +++ b/po/he.po @@ -0,0 +1,2072 @@ +# Hebrew translations for gnome-maps package. +# Copyright (C) 2013 THE gnome-maps'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# יוסף אור בוצ׳קו , 2013. +# Yosef Or Boczko , 2013, 2014, 2015, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.9.91\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-09-27 11:23+0300\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: עברית <>\n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " +"2 : 3);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME מפות" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "מציאת מקומות מסביב לעולם" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"מפות נותן לך גישה מהירה למפות על פני כל העולם. הוא מאפשר לך למצוא במהירות את " +"המקום שאתה מחפש באמצעות חיפוש עיר או רחוב, או לאתר מקום לפגישת חבר." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"מפות משתמש במסד הנתונים השיתופי OpenStreetMap, שנוצר על ידי מאות אלפי אנשים " +"על פני כדור הארץ." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "מיזם GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "מפות" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "יישום מפות פשוט" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "מפות;מפה;maps;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "מאפשר למיקום שלך להיראות על המפה." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "last viewed location" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinates of last viewed location." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "תקריב" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "רמת תקריב" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "סוג מפה" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "סוג המפה להצגה (רחוב, אווירית וכו׳)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "גודל החלון" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "גודל החלון (רוחב וגובה)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "מיקום החלון" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "מיקום החלון (X ו־Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Window maximized" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Window maximization state" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum number of search results" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum number of search results from geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Number of recent places to store" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Number of recently visited places to store." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Number of recent routes to store" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Number of recently visited routes to store." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare check-in privacy setting" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in Facebook broadcasting" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username or e-mail address" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indicates if the user has signed in to edit OpenStreetMap data." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "סוג התחבורה האחרונה לניווט" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "מצב לילה" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "האם היישום הוא במצב לילה." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "להשתמש באריחים אוויריים משולבים" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "האם אריחים אוויריים אמורים להשתמש בסגנון משולב (עם תוויות)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "נראה" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "לפרסם בפייסבוק" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "לפרסם בטוויטר" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_ביטול" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "ה_רשמה" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "ציבורי" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "עוקבים" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "פרטי" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "מסלול מכאן" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "הוספת יעד ביניים" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "מסלול לכאן" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "מה זה כאן?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "העתקת מיקום" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "הוספה ל־OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "תצוגת ייצוא" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_ייצוא" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "לכלול מסלול וסימונים" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "בחירת סוג המפה" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "להתרחק" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "להתקרב" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "הדפסת מסלול" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "מועדפים" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "להציג/להסתיר מתכנן מסלול" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "כללי" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "הצגת צירופי מקשים" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "חיפוש" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "הצגת/הסתרת מתכנן מסלול" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "הדפסת מסלול" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "יציאה" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "פתיחת התפריט הראשי" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "תצוגת מפה" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "התקרבות" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "התרחקות" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "הצגת סרגל קנה מידה" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "מעבר למיקום הנוכחי" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "מעבר לתצוגת רחוב" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "מעבר לתצוגה אווירית" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "לפתוח שכבת צורות" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "להציג תוויות" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "לפתוח שכבת צורות…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "הפעלת שירותי איכון למציאת המיקום שלך" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ביטול" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "הגדרות מיקום" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "מצב לילה" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "הגדרת חשבון OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "לייצא כתמונה" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_צירופי מקשים" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "על תכנית המפות" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "פתיחת התפריט הראשי" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "היישום מפות אינו מקוון!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "למפות דרוש חיבור אינטרנט פעיל כדי לתפקד כראוי, אך אין כזה." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "יש לבדוק את החיבור שלך ואת הגדרות המתווך." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "חשבון OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "התחברות לעריכת מפות" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"עזרה בשיפור המפה,\n" +"באמצעות חשבון OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "דוא״ל" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ססמה" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "להירשם" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "התחברות" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"זה לא עבד, עמך הסליחה. נא לנסות שוב או לבקר\n" +"‫‫ב־OpenStreetMap כדי לאפס את הססמה שלך." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "קוד האימות לא מתאים, נא לנסות שוב." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "יש למלא את קוד האימות המוצע למעלה" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "אימות" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "התחברות" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "חשבון ה־OpenStreetMap שלך פעיל." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "התנתקות" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "רחוב" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "מספר בית" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "מיקוד" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "עיר" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "סוג" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ללא" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "הוספת שדה" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "הערות" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"שינויים במפה יופיעו בכל המפות המשתמשות\n" +"במידע מ־OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "בשימוש לאחרונה" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "הבא" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "לא נמצאו תוצאות" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "התרחשה שגיאה" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "יש לגרור לשינוי סדר המסלול" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "לפתוח את המיקום" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "העתקה" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "לשלוח אל…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "להירשם במיקום…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "לפתוח שכבת צורות" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_פתיחה" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "הצגה" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "חיפוש מסלולים באמצעות GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"הרכבת מסלולי הנסיעה בתחבורה הציבורית מסופקת על ידי שירותי‬\n" +"‫צד־שלישי.‬\n" +"‫ל־GNOME אין אפשרות לאמת את תוקף המידע של המסלולים ולוחות הזמנים המופיעים.‬\n" +"‫נא לשים לב שחלק מהספקים עשויים לא לכלול את כל תצורות התחבורה הזמינות,‬\n" +"‫למשל ספק לאומי עשוי שלא לכלול קווי תעופה וספק מקומי יכול לפספס רכבות " +"אזוריות.‬\n" +"‫יש להתייחס לשמות ולמותגים כסימני מסחר רשומים בהתאם לצרכים." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "הצגת תוצאות נוספות" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "להסתיר מידע ותחנות ביניים" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "להציג מידע ותחנות ביניים" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "לצאת כעת" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "לצאת עד" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "להגיע עד" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "הצגה" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "אוטובוסים" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "חשמליות" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "רכבות" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "רכבת תחתית" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "מעבורות" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "מטוסים" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "שיתוף מיקום" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "הוספה למסלול חדש" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "הנחיות" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "סימון כמועדף" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "עריכה ב־OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "יש להתקרב כדי להוסיף מיקום!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "להתקרב" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "חיפוש מבנה אריח בתיקייה נכשל" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "ניתוח מסמך XML נכשל" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "חסרות תכונות חיוניות" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "לא ניתן למצוא יסוד OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "נתיב לתיקייה מבני אריחים מקומיים" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "גודל אריח לתיקיית האריחים המקומית" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "להציג את גרסת התכנית" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "להתעלם מזמינות הרשת" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[קובץ…|כתובת]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "בחירת חשבון" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "בטעינה" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "בחירת מקום" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "מפות לא מוצא את המקום להירשם עם Foursquare. נא לבחור אחד מרשימה זו." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "נרשם עבור %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "כתיבת הודעה אפשרית להרשמה עבור %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "לא ניתן למצוא את „%s” בשירות הרשת החברתי" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "לא ניתן למצוא מקום מתאים להירשם במיקום זה" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "האישורים פגי תוקף, נא לפתוח חשבונות מקוונים להתחברות ולאפשר חשבון זה" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "לא נמצא כאן דבר!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"מיקום נוסף למפה, יש לשים לב כי עשוי ילעבור זמן מה לפני שהוא יוצג על המפה " +"ובתוצאות החיפוש." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "מפות ב־%f,‏ %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "מערכת הקבצים היא לקריאה בלבד" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "אין לך הרשאות לשמירה כאן" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "התיקייה אינה קיימת" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "לא צוין שם קובץ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "לא ניתן לייצא תצוגה" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "מיקום נוכחי" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "נקודת ציון לא חוקית" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "שגיאת ניתוח" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "שגיאה הנדסית" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "בקשת המסלול נכשלה." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "לא נמצא מסלול." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "להתחיל!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "כל שכבות הקבצים" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "ההתחברות לשרת האיכון נכשלה" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "יוסף אור בוצ׳קו " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "יישום מפות עבור GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"כל הזכויות שמורות © 2011 – 2021 ל־Red Hat בע״מ וליוצרי תכנית המפות של GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "נתוני המפה באדיבות %s והמתנדבים במיזם" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "אריחי המפה סופקו על ידי %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "החיפוש סופק על ידי %s בעזרת %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "פתיחת שכבה נכשלה" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "להמשיך?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "פעולה זו תפתח קבצים בגודל כולל של %s מ״ב. הטעינה עשויה לארוך זמן מה" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "סוג הקובץ אינו נתמך" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "פתיחת GeoURI נכשלה" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "שם משתמש או ססמה לא נכונים" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "הצלחה" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "בקשה שגויה" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "עצם לא נמצא" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "התנגשות, מישהו אחר שינה את העצם זה עתה" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "העצם נמחק" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "נתיב או יחס מפנה לצאצאים לא קיימים" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "שם" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "השם הרשמי. זה בדרך כלל מה שמופיע על השילוטים." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "כתובת" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "אתר אינטרנט" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "זו אינה כתובת תקפה. נא לוודא שכללת את התחיליות http://‎ או https://‎." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"אתר האינטרנט הרשמי. יש לנסות להשתמש בצורה הבסיסית ביותר של הכתובת. למשל " +"http://example.com במקום http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "טלפון" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"מספר טלפון. יש להשתמש בתבנית בינלאומית, המתחיל עם סימן פלוס +. יש להיזהר " +"מחוקי הפרטיות, בפרט עבור מספרי טלפון פרטיים." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "דוא״ל" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "זו אינה כתובת דוא״ל תקפה. נא לוודא שלא הוספת את הקידומת mailto:‎." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "דוא״ל יצירת קשר לשאלות. נא להוסיף כתובות שמיועדות לשימוש הציבור בלבד." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "ויקיפדיה" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"התבנית בשימוש צריכה לכלול את קוד השפה ואת כותרת הערך. למשל: „he:כותרת הערך”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "שעות פתיחה" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "ניתן לקבל עזרה עבור התבנית בקישור בתווית." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "אוכלוסיה" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "גובה" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "גובה (גובה מעל פני הים) של נקודה במטרים." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "נגישות נכים" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "יש" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "אין" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "מוגבל" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "מובנה" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "גישה לאינטרנט" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "רשת אלחוטית" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "רשת קווית" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "מסוף" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "שרת" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "איסוף עצמי" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "בלבד" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "דת" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "אנימיזם" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "בהאית" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "בודהיזם" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "קאודאיזם" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "נצרות" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "קונפוציוסיזם" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "הינדואיזם" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "ג׳ייניזם" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "יהדות" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "אסלאם" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "מגוון דתות" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "פגניות" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "פסטפריאניזם" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "סיינטולוגיה" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "שינטו" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "סיקיזם" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "ספיריטואליזם" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "דאואיזם" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "אוניברסליזם אוניטריאני" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "וודו" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "יזידיזם" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "זורואסטריות" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "שירותים" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "הערה" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"מידע שמשמש ליידע ממפים אחרים בנוגע למידע בלתי מובן מאליו בנוגע לרכיב, מטרת " +"הכותב בעת יצירתה או רמזים לשיפור נוסף." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "הוספה ל־OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "בחירת סוג" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "בוצה" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "מקום ללא שם" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "ניתוח כתובת Geo נכשל" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "נקודת ציון" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "דיוק" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "דיוק: ‏%s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "מספר טלפון" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "מציעה איסוף עצמי" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "לא מציעה איסוף עצמי" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "מציעה איסוף עצמי בלבד" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "גישה ציבורית לאינטרנט" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "אין גישה לאינטרנט" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "רשת אלחוטית ציבורית" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "גישה לאינטרנט עם כבל" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "מחשבים זמינים לשימוש" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "יש עזרה עם האינטרנט" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "אין שירותים זמינים" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "יש שירותים זמינים" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "גישה לנכים" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "גישה מוגבלת לנכים" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "אין גישה לנכים" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "מוקצה למשתמשי כסאות גלגלים" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "‫%s מתחת לפני הים" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "בגובה פני הים" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "דת:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "המקום לא נמצא ב־OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "נקודות הציון שבכתובת שגויות" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "הכתובת לא נתמכת" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "מ־%s אל %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "אריחי מפה להדפסה נטענים" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "נתן לבטל ההדפסה אם היא לוקחת יותר מדי זמן" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ביטול הדפסה" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "הוספה דרך מיקום" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "הסרה דרך מיקום" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "להפוך את המסלול" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "הוספת %s אל %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "פתיחת הכתובת נכשלה" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "לפתוח עם %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "אירע כשל בטעינת הקובץ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "זמן משוער: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "המסלולים סופקו על ידי %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "להתחיל בנקודה %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "התחלה" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "ללכת %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "להגיע אל %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "הגעה" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "להציג הנחיות הליכה" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "להסתיר הנחיות הליכה" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "לטעון חלופות קודמות" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "לטעון חלופות מאוחרות" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "לא נמצאו חלופות מוקדמות." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "לא נמצאו חלופות מאוחרות יותר." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e ב%b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "לא נמצאו נתוני לוח זמנים למסלול הזה." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "לא נמצא ספק למסלול הזה." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "דקה" +msgstr[1] "שתי דקות" +msgstr[2] "‫%s דקות" +msgstr[3] "‫%s דקות" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "שעה" +msgstr[1] "שעתיים" +msgstr[2] "‫%s שעות" +msgstr[3] "‏‫%s שעות" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "‫%s:%s שעה" +msgstr[1] "‫%s:%s שעתיים" +msgstr[2] "‫%s:%s שעות" +msgstr[3] "‫%s:%s שעות" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "מסביב לשעון" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "מהזריחה עד השקיעה" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "כל יום" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s – %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "חגים ציבוריים" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "חופשי בית ספר" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "לא פתוח" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s – %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "לא ידוע" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "מדויק" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "‫%s שע׳" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "‫%s שע׳ %s דק׳" +msgstr[1] "‏‫%s שע׳ %s דק׳" +msgstr[2] "‏‫%s שע׳ %s דק׳" +msgstr[3] "‏‫%s שע׳ %s דק׳" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "‫%s דק׳" +msgstr[1] "‫%s דק׳" +msgstr[2] "‫%s דק׳" +msgstr[3] "‫%s דק׳‎" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "‏‫%s שנ׳" +msgstr[1] "‏‫%s שנ׳" +msgstr[2] "‏‫%s שנ׳" +msgstr[3] "‏‫%s שנ׳" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "‫%s ק״מ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "‫%s מ׳" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "‫%s מיל" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "‫%s רגל" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "התוסף הזה לא תומך בהגעה המאוחרת ביותר" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "להמשיך על %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "להמשיך" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "לפנות שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "לפנות שמאלה" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "לסטות שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "לסטות שמאלה" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "לפנות שמאלה בחדות אל %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "לפנות שמאלה בחדות" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "לפנות ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "לפנות ימינה" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "לסטות ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "לסטות ימינה" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "לפנות ימינה בחדות אל %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "לפנות ימינה בחדות" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "בכיכר, לצאת ביציאה ה%s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "בכיכר, לצאת ביציאה אל %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "להיכנס לכיכר" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "להשתמש במעלית ולצאת בקומה %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "להשתמש במעלית" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "לפנות פניית פרסה שמאלה אל %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "לפנות פניית פרסה שמאלה" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "לפנות פניית פרסה ימינה אל %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "לפנות פניית פרסה ימינה" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "ניתן לחפש גם מקום מסוים, כמו „בית קפה ליד הרחוב הראשי, ירושלים” או „מלון " +#~ "קרוב לאוניברסיטה, תל אביב”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook check-in privacy setting" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#~ msgid "Everyone" +#~ msgstr "כולם" + +#~ msgid "Friends of friends" +#~ msgstr "חברים של חברים" + +#~ msgid "Just friends" +#~ msgstr "חברים בלבד" + +#~ msgid "Just me" +#~ msgstr "רק אני" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "מפות לא מוצא את המקום להירשם עם Facebook. נא לבחור אחד מרשימה זו." + +#~ msgid "Quit" +#~ msgstr "יציאה" + +#~ msgid "Load Map Layer" +#~ msgstr "טעינת שכבת מפה" + +#~ msgid "Open with another application" +#~ msgstr "פתיחה באמצעות יישום אחר" + +#~ msgid "Check in here" +#~ msgstr "הרשמה כאן" + +#~ msgid "Don't have an account?" +#~ msgstr "אין לך חשבון?" + +#~ msgid "Press enter to search" +#~ msgstr "יש ללחוץ Enter לחיפוש" + +#~ msgid "OK" +#~ msgstr "אישור" + +#~ msgid "Population:" +#~ msgstr "אוכלוסייה:" + +#~ msgid "Altitude:" +#~ msgstr "גובה:" + +#~ msgid "Opening hours:" +#~ msgstr "שעות פתיחה:" + +#~ msgid "Internet access:" +#~ msgstr "גישת אינטרנט:" + +#~ msgid "Wheelchair access:" +#~ msgstr "נגישות נכים:" + +#~ msgid "Phone:" +#~ msgstr "טלפון:" + +#~ msgid "yes" +#~ msgstr "יש" + +#~ msgid "limited" +#~ msgstr "מוגבל" + +#~ msgid "no" +#~ msgstr "אין" + +#~ msgid "designated" +#~ msgstr "מובנה" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "אתרנט" + +#~ msgid "terminal" +#~ msgstr "מסוף" + +#~ msgid "service" +#~ msgstr "שרת" + +#~ msgid "%f h" +#~ msgstr "%f שעות" + +#~ msgid "%f s" +#~ msgstr "%f שניות" + +#~ msgid "%f km" +#~ msgstr "%f ק״מ" + +#~ msgid "%f m" +#~ msgstr "%f מ׳" + +#~ msgid "%f mi" +#~ msgstr "%f מיל" + +#~ msgid "%f ft" +#~ msgstr "%f רגל" + +#~ msgid "Country code: %s" +#~ msgstr "קוד מדינה: %s" + +#~ msgid "_Share" +#~ msgstr "_שיתוף" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Last known location and accuracy" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Description of last known location of user." + +#~ msgid "User set last known location" +#~ msgstr "User set last known location" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Whether the last known location was set manually by the user." + +#~ msgid "I’m here!" +#~ msgstr "אני כאן!" + +#~ msgid "%f km²" +#~ msgstr "‏%f ק״מ²" + +#~ msgid "To" +#~ msgstr "אל" + +#~ msgid "From" +#~ msgstr "מ" + +#~ msgid " km2" +#~ msgstr " ק״מ2" + +#~ msgid "Satellite" +#~ msgstr "לווין" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 00000000..bcc3d5be --- /dev/null +++ b/po/hi.po @@ -0,0 +1,261 @@ +# Hindi translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Solomon Nadar , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-11-09 07:50+0000\n" +"PO-Revision-Date: 2014-11-09 20:06-0000\n" +"Last-Translator: Solomon Nadar \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"नक्शे आपको सभी दुनिया भर में नक्शे के लिए त्वरित पहुँच देता है. दोस्त से मिलने के लिए एक जगह " +"का पता लगाने के लिए, या जल्दी से एक शहर या सड़क के लिए खोजकर आप ढूंढ रहे जगह आपको " +"बताती है." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"नक्शे दुनिया भर में हजारों, सैकड़ों लोगों के द्वारा बनाई सहयोगी OpenStreetMap डेटाबेस का " +"उपयोग करता है." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"\"मेन स्ट्रीट के पास पब, बोस्टन\" या \"अलेक्सान्देरप्लात्ज़ के पास होटल, बर्लिन\" इस तरह के " +"रूप में स्थानों के विशिष्ट प्रकार के लिए भी आप खोज कर सकते हैं." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:79 +#: ../src/mainWindow.js:347 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "नक्शे" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "एक साधारण नक्शा अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "नक्शे;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "खिड़की का आकर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "खिड़की का आकर (चौड़ाई और ऊंचाई)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "खिड़की स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "खिड़की स्थान (X और Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "खिड़की अधिकतम पर" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "खिड़की अधिकतम स्थिति" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "अंतिम ज्ञात स्थान और सटीकता" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "अंतिम ज्ञात स्थान (अक्षांश और देशांतर डिग्री में) और सटीकता (मीटर में)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "अंतिम ज्ञात स्थान का विवरण" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "उपयोगकर्ता की अंतिम ज्ञात स्थान का विवरण." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "खोज परिणामों की अधिकतम संख्या" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "जियोकोड खोज से खोज परिणामों की अधिकतम संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "उपयोगकर्ता ने सेट की अंतिम ज्ञात स्थान" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "अंतिम ज्ञात स्थान उपयोगकर्ता द्वारा मैन्युअल रूप से सेट किया गया था या नहीं." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "जमा करने हाल के स्थानों की संख्या." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "जमा करने हाल के दर्शन किये स्थानों की संख्या." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "के बारे में" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "छोड़े" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहाँ क्या है?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "मैं यहां हूं!" + +#: ../src/geoclue.js:137 ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "वर्तमान स्थान" + +#: ../src/mainWindow.js:345 +msgid "translator-credits" +msgstr "अनुवादक-प्रसिद्धि" + +#: ../src/mainWindow.js:348 +msgid "A map application for GNOME" +msgstr "GNOME के लिए एक नक्शा अनुप्रयोग" + +#: ../src/main-window.ui.h:2 +msgid "Go to current location" +msgstr "वर्तमान स्थान पर जाएं" + +#: ../src/main-window.ui.h:3 +msgid "Choose map type" +msgstr "नक्शा प्रकार चुनें" + +#: ../src/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "मार्ग योजनाकार टॉगल करें " + +#: ../src/main-window.ui.h:5 +msgid "Maps is offline!" +msgstr "नक्शे ऑफ़लाइन है!" + +#: ../src/main-window.ui.h:6 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"नक्शे ठीक ढंग से काम करने के लिए एक सक्रिय इंटरनेट कनेक्शन की जरूरत है, लेकिन एक नहीं पाया " +"जा सका." + +#: ../src/main-window.ui.h:7 +msgid "Check your connection and proxy settings." +msgstr "आपके कनेक्शन और प्रॉक्सी सेटिंग्स की जाँच करें." + +#: ../src/routeService.js:72 +msgid "No route found." +msgstr "कोई मार्ग नहीं मिला." + +#: ../src/routeService.js:79 +msgid "Route request failed." +msgstr "मार्ग अनुरोध विफल." + +#: ../src/routeService.js:150 +msgid "Start!" +msgstr "शुरू करो!" + +#: ../src/searchResultBubble.js:58 +#, javascript-format +msgid "Country code: %s" +msgstr "देश कोड: %s" + +#: ../src/searchResultBubble.js:64 +#, javascript-format +msgid "Postal code: %s" +msgstr "डाक कोड: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:236 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अनुमानित समय: %s" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "सटीकता: %s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:189 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:192 +msgid "Exact" +msgstr "ठीक" + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f h" +msgstr "%f घं" + +#: ../src/utils.js:293 +#, javascript-format +msgid "%f min" +msgstr "%f मि" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:304 +#, javascript-format +msgid "%f km" +msgstr "%f किमी" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:307 +#, javascript-format +msgid "%f m" +msgstr "%f मी" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:315 +#, javascript-format +msgid "%f mi" +msgstr "%f मील" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:318 +#, javascript-format +msgid "%f ft" +msgstr "%f फी" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 00000000..d67a8d2f --- /dev/null +++ b/po/hr.po @@ -0,0 +1,2074 @@ +# Croatian translation for gnome-maps. +# Copyright (C) 2017 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-06 10:26+0000\n" +"PO-Revision-Date: 2021-09-09 17:36+0200\n" +"Last-Translator: gogo \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Karte" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Potražite mjesta diljem svijeta" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Karte vam daju brz pristup kartama diljem svijeta. Omogućuje vam da brzo " +"pronađete mjesto koje tražite pretragom gradova ili ulica, ili lociranje " +"mjesta za sastanak s prijateljem." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Karte koriste suradničku OpenStreetMap bazu podataka, načinjenu od strane " +"stotine tisuća ljudi diljem svijeta." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Karte" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednostava aplikacija za karte" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Karte;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Omogućuje vašoj lokaciji da bude prikazana na mapi." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "posljednja pogledana lokacija" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate posljednje pogledane lokacije." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "uvećanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Razina uvećanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta karte" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta prikazane karte (ulice, područje, itd.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veličina prozora" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj prozora" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (x-os i y-os)" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Prozor uvećan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage iz geokôd pretrage." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Broj nedavnih mjesta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posjećenih mjesta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Broj nedavnih ruta za spremanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Broj nedavno posjećenih ruta za spremanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Postavke privatnosti Foursquare provjere" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Posljednje korištene postavke privatnosti Foursquare provjere. Moguće " +"vrijednosti su: public, followers ili private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare emitira provjeru na Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Facebook " +"računu pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare emitira provjeru na Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Označava treba li Foursquare emitirati provjeru kao objavu na Twitter računu " +"pridruženu s Foursquare računom." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili adresa e-pošte" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Označava je li se korisnik prijavio za uređivanje OpenStreetMap karata." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Posljednja korištena vrsta prijevoza za određivanje rute" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Koristi noćni način rada" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Je li aplikacija u noćnom načinu rada." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Koristi hibridne zračne nazive" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Trebaju li zračni nazivi koristiti hibridni izgled (s oznakama)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Vidljivost" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Objavi na Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Odustani" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "P_rovjeri" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Sljedbenike" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privatno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Početak rute" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj međuodredište" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Završetak rute" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Što je ovdje?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj lokaciju" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Izvezi prikaz" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvoz" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Uključi rute i oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Odaberi vrstu karte" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Udalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Približi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Ispiši rutu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Uklj/Isklj omiljene" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Općenito" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaži prečice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Uklj/Isklj planiranje rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Ispiši rutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zatvori" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Prikaz karte" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Udalji" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Uklj/Isklj promjenu veličine" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Idi na trenutnu lokaciju" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na prikaz ulica" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na satelitski prikaz" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj karte" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvori sloj karte…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Uključite uslugu lociranja kako bi pronašli svoju lokaciju" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Odustani" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Postavke lokacije" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Noćni način rada" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Postavi OpenStreetMap račun" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvezi kao sliku" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O Kartama" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otvori glavni izbornik" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Karta je nedostupna!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Karta treba aktivni internet povezivanje kako bi ispravno funkcionirala, ali " +"se ne može nijedan pronaći." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Provjerite vaše povezivanje i proxy postavke." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap račun" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijavi se za uređivanje karata" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomozite poboljšati karte, koristeći\n" +"OpenStreetMap račun." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pošta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lozinka" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Odjava" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije uspjelo. Pokušajte ponovno, ili posjetite\n" +"OpenStreetMap za obnovu lozinke." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kôd provjere se ne podudara, pokušajte ponovno." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Upišite kôd provjere prikazan iznad" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Provjeri" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeni" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap račun je aktivan." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjava" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Kućni broj" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Grad" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nijedno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Promjene karte biti će vidljive na svim kartama koje\n" +"koriste OpenStreetMap podatke." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno korišteno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Sljedeće" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nema pronađenih rezultata" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Dogodila se greška" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Ispusti za promjenu redoslijeda rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Pošalji u…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Provjeri…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvori sloj karte" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvori" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Uklj/Isklj vidljivost" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruta se traži pomoću GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Plan ruta za javni prijevoz omogućio je GNOME\n" +"pomoću rasporeda podataka dobivenih od prijevozničkih tvrtki ili agencija.\n" +"Prijevozničke tvrtke ili agencije ne mogu biti odgovorne za prikazane " +"rezultate.\n" +"GNOME ne može jamčiti točnost prikazanih planova i rasporeda.\n" +"Prikazani nazivi i trgovačke marke trebaju se smatrati registriranim " +"zaštitinim zankovima kada je primjenjivo." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Prikaži više rezultata" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sakrij posredna zaustavljanja i informacije" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Prikaži posredna zaustavljanja i informacije" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Kreni odmah" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odlazak" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Dolazak" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Prikaz" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busevi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Valkovi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Zrakoplovi" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Dijeli lokaciju" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaj u novu rutu" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Smjerovi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označi kao omiljeno" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približi" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspješna pretraga strukture pločice u direktoriju" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neuspješna obrada XML dokumenta" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nedostaju potrebna svojstva" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nemoguć pronalazak OSM elementa" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne strukture bloka u direktoriju" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Veličina bloka za direktorij lokalnih blokova" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Prikaži inačicu programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Zanemari mrežnu dostupnost" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Odaberi račun" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Učitavanje" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Odaberi mjesto" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Karte ne mogu pronaći mjesto za provjeru sa Foursquara. Odaberite jedno s " +"popisa." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Provjeri u %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napiši neobaveznu poruku za provjeru u %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nemoguće je pronaći “%s” na društvenim mrežama" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nemoguće je pronaći prikladno mjesto za provjeru ove lokacije" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Vjerodajnice su istekle, otvorite mrežne račune za prijavu i omogućavanje " +"ovog računa" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ništa nije pronađeno ovdje!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodana na kartu, zapamtite da može potrajati prije nego se " +"pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sustav je samo za čitanje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate za tamo dozvolu spremanja" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorij ne postoji" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Naziv datoteke nije naveden" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nemoguće izvesti prikaz" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Trenutna lokacija" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "pogrešne koordinate" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška obrade" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Zahtjev rute neuspio." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ruta nije pronađena." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Kreni!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Neuspjelo povezivanje s uslugom lociranja" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "gogo https://launchpad.net/~trebelnik-stefina" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Aplikacija karata za GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autorsko pravo © 2011 – 2021 Red Hat, Inc. i autori GNOME karta" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke karte omogućili %s i doprinositelji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blokove karte je omogućio %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pretragu je omogućio %s koristeći %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Neuspjelo otvaranje sloja" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Želite li nastaviti?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Otvorit ćete datoteku s ukupnom veličinom od %s MB. Ovo može potrajati dulje " +"vrijeme" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Neuspjelo otvaranje GeoURI-ja" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Uspjeh" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Neispravan zahtjev" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt nije pronađen" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, netko drugi je upravo promijenio objekt" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt je obrisan" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Način ili veza povezana za nepostojeći objekt" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Naziv" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Službeni naziv. To se uobičajeno pojavljuje na znakovima." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Web stranica" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Ovo nije valjan URL. Pobrinite se da sadrži http:// ili https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Službena web stranca. Pokušajte koristiti najosnovnije od URL-a npr. http://" +"primjer.com umjesto http://primjer.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format, započinjući s + znakom. Ne " +"zaboravite lokalne zakone, osobito za privatne telefonske linije." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-pošta" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ovo nije valjana adresa e-pošte. Provjerite da niste uključili mailto: " +"prefiks protokola." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontakt adresa e-pošte za upite. Dodajte samo adrese e-pošte koje su " +"namijenjene za javnu upotrebu." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišteni format trebao bi uključiti kôd jezika i naslov članka poput “hr:" +"Naslov članka”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Vrijeme otvaranja" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Pogledajte poveznicu u naslovu za pomoć formata." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populacija" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Visina" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Uzvišenje (nadmorska visina) od točke u metrima." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Pristup za invalidska kolica" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ograničeno" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Određeno" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Pristup internetu" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Bežična mreža" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Žična mreža" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Usluga" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Usluga za van" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Samo" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizam" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizam" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaizam" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kršćanstvo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucijanizam" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizam" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Džainizam" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizam" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Više religija" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganizam" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizam" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scijentologija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizam" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikizam" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizam" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jezidizam" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrizam" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toaleti" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Napomena" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacije koje se koriste za informiranje drugih kartografa o neočekivanim " +"informacijama o nekom elementu, o autorovoj namjeri prilikom izrade, ili " +"savjeti za buduće poboljšanje." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj u OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Odaberi vrstu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Završeno" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Neimenovano mjesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Neuspješna obrada Geo URI-ja" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinate" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Točnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Točnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonski broj" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Pruža uslugu za van" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ne pruža uslugu za van" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Samo pruža uslugu za van" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Javni pristup internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nema pristupa internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Javno bežična mreža" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Žični pristup internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Računala dostupna za upotrebu" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Dostupan je internet pomoćnik" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nema dostupnih toaleta" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Dostupni toaleti" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Potuni pristup za invalidska kolica" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ograničeni pristup za invalidska kolica" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nema pristupa za invalidska kolica" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Namijenjeno za korisnike invalidskih kolica" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s ispod razine mora" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "U razini mora" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Mjesto nije pronađeno na OpenStreetMapama" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate u URL-u nisu valjane" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL nije podržan" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavanje bloka karte za ispis" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti ispisivanje ako traje predugo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini ispisivanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj pomoću lokacije" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ukloni pomoću lokacije" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni rutu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s u %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Neuspjelo otvaranje URI-ja" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otvori sa %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "neuspješno učitavanje datoteke" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Vrijeme dolaska: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Planove je omogućio %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Polazak u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Polazak" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Pješači %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazak u %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Dolazak" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Prikaži upute pješačenja" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sakrij upute pješačenja" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj kasnije alternative" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nema pronađenih ranijih alternativa." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nema pronađenih kasnijih alternativa." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nema pronađenih podataka rasporeda za ovu rutu." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nema pronađenih pružatelja usluge za ovu rutu." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minute" +msgstr[2] "%s minuta" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s sat" +msgstr[1] "%s sata" +msgstr[2] "%s sati" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s sat" +msgstr[1] "%s:%s sata" +msgstr[2] "%s:%s sati" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Oko sata" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od sumraka do zore" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Svaki dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Javni praznici" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Napoznato" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Točno" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "% sat(a)" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s sat(a) %s min" +msgstr[1] "%s sat(a) %s min" +msgstr[2] "%s sat(a) %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Priključak ne podržava posljednji dolazak" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Nastavi u %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Nastavi" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skrenite lijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skrenite blago ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Skrenite blago ulijevo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skrenite oštro ulijevo na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Skrenite oštro ulijevo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skrenite desno na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Skrenite desno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skrenite blago udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Skrenite blago udesno" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skrenite oštro udesno na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Skrenite oštro udesno" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na kružnom toku, izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Idite na kružni tok" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Idite u dizalo i izađite na %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Idite u dizalo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Skrenite lijevo u %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Skrenite lijevo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Skrenite desno u %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Skrenite desno" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Možete čak pretražiti određenu vrstu lokacije, poput \"Kavane blizu " +#~ "Jelačić placa, Zagreb\" ili \"Hoteli blizu Straduna, Dubrovnik\"." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Postavke privatnosti Facebook provjere" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Posljednje korištene postavke privatnosti Facebook provjere. Moguće " +#~ "vrijednosti su: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ili SELF." + +#~ msgid "Everyone" +#~ msgstr "Svakog" + +#~ msgid "Friends of friends" +#~ msgstr "Prijatelje prijatelja" + +#~ msgid "Just friends" +#~ msgstr "Samo prijatelje" + +#~ msgid "Just me" +#~ msgstr "Samo meni" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Karte ne mogu pronaći mjesto za provjeru sa Facebooka. Odaberite jedno s " +#~ "popisa." + +#~ msgid "Find a Route" +#~ msgstr "Potraži rutu" + +#~ msgid "Check in here" +#~ msgstr "Provjeri ovdje" + +#~ msgid "Show more information" +#~ msgstr "Prikaži više informacija" + +#~ msgid "Population:" +#~ msgstr "Populacija:" + +#~ msgid "Altitude:" +#~ msgstr "Visina:" + +#~ msgid "Opening hours:" +#~ msgstr "Vrijeme otvaranja:" + +#~ msgid "Internet access:" +#~ msgstr "Pristup internetu:" + +#~ msgid "Toilets:" +#~ msgstr "Toaleti:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Pristup za invalidska kolica:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "ograničeno" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "određeno" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL nije valjan" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "žični priključak" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "usluga" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemate račun?" + +#~ msgid "%f h" +#~ msgstr "%f sat" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruta se traži pomoću OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj odredište" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Otvori s drugom aplikacijom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite Enter za pretragu" + +#~ msgid "Quit" +#~ msgstr "Zatvori" + +#~ msgid "OK" +#~ msgstr "U REDU" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvori sloj karte…" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 00000000..058cefd3 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1930 @@ +# Hungarian translation for gnome-maps. +# Copyright (C) 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# +# Balázs Úr , 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021. +# Gabor Kelemen , 2013, 2015, 2016, 2017. +# Balázs Meskó , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-12 01:12+0200\n" +"Last-Translator: Balázs Úr \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Térképek" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Helyek keresése a világ minden pontján" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"A Térképek gyors hozzáférést ad térképekhez az egész világról. Lehetővé " +"teszi egy keresett hely gyors megtalálását település vagy utca keresésével, " +"vagy találni egy helyet, ahol ismerőseivel találkozhat." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A Térképek az együttműködésen alapuló OpenStreetMap adatbázist használja, " +"amelyet több százezer ember készít a világ minden részén." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "A GNOME projekt" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Térképek" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Egyszerű térképalkalmazás" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Térképek;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lehetővé teszi a földrajzi helyének megjelenítését a térképen." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "legutóbbi megtekintett hely" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Az utolsó megtekintett hely koordinátái." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "nagyítás" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nagyítási szint" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Térképtípus" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "A megjelenítendő térkép típusa (utca, légi, stb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ablakméret" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ablak mérete (szélesség és magasság)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Ablakpozíció" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Ablakpozíció (X és Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Ablak teljes méretű" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Az ablak maximalizált állapota" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "A keresési találatok maximális száma" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "A keresési találatok maximális száma a geokód keresésből." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "A tárolandó legutóbbi helyek száma" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "A tárolandó legutóbb látogatott helyek száma." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "A tárolandó legutóbbi útvonalak száma" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "A tárolandó legutóbb látogatott útvonalak száma." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare bejelentkezés adatvédelmi beállításai" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Legutóbb használt Foursquare bejelentkezés adatvédelmi beállításai. " +"Lehetséges értékek: public, followers, vagy private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare bejelentkezés Facebook üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare hozzászólásként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Facebook fiókban." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare bejelentkezés Twitter üzenetszórás" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Jelzi, ha a Foursquare üzenetként akarja közzétenni a bejelentkezést a " +"Foursquare fiókkal társított Twitter fiókban." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap felhasználónév vagy e-mail cím" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Jelzi, hogy a felhasználó bejelentkezett-e az OpenStreetMap adatok " +"szerkesztéséhez." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Legutóbb útvonaltervezéshez használt közlekedéstípus" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Éjszakai mód" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Az alkalmazás éjszakai módban van-e." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hibrid légi csempék használata" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "A légi csempék a hibrid stílust használják-e (címkékkel)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Láthatóság" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Közzététel a Facebookon" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Közzététel a Twitteren" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Mégse" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Bejelentkezés" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Nyilvános" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Követők" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Személyes" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Útvonal innen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Közbenső megálló hozzáadása" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Útvonal ide" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Mi van itt?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Hely másolása" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMap-hez" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportálási nézet" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportálás" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Útvonalak és jelölők megtartása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Térképtípus kiválasztása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Kicsinyítés" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Nagyítás" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Útvonal nyomtatása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Kedvencek ki- és bekapcsolása" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Általános" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Gyorsbillentyűk megjelenítése" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Keresés" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Útvonaltervező ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Útvonal nyomtatása" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Kilépés" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Térkép nézet" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Nagyítás" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Kicsinyítés" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ugrás a jelenlegi helyre" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Váltás utcanézetre" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Váltás légifelvételre" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Címkék megjelenítése" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Alak réteg megnyitása…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Helymeghatározó szolgáltatások bekapcsolása a helyzetének megkereséséhez" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Mégse" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Helybeállítások" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Éjszakai mód" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap fiók beállítása" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportálás képként" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Gyorsbillentyűk" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A Térképek névjegye" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Főmenü megnyitása" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "A Térképek kapcsolat nélküli!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"A Térképeknek aktív internet-kapcsolat szükséges a megfelelő működéshez, de " +"az nem található." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Ellenőrizze a kapcsolat és a proxy beállításait." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap fiók" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Jelentkezzen be a térképek " +"szerkesztéséhez" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Segítsen a térkép javításában, egy\n" +"OpenStreetMap fiók használatával." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Jelszó" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Regisztráció" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Bejelentkezés" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Elnézést, ez nem sikerült. Próbálja újra, vagy látogassa meg az\n" +"OpenStreetMap\n" +"oldalt a jelszava helyreállításához." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Az ellenőrző kód nem egyezik, próbálja újra." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Írja be a fent megjelenített ellenőrző kódot" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Ellenőrzés" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Bejelentkezve" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Az OpenStreetMap fiókja aktív." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Kijelentkezés" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Utca" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Házszám" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Irányítószám" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Város" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Típus" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nincs" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Mező hozzáadása" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Megjegyzés" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"A térképváltozások mindenhol láthatóvá válnak,\n" +"ahol OpenStreetMap adatokat használnak." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nemrég használt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Következő" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nincs találat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Hiba történt" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Húzza az útvonal sorrendjének módosításához" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Másolás" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Küldés neki…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Bejelentkezés…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Alak réteg megnyitása" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Megnyitás" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Láthatóság ki- és bekapcsolása" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Útvonalkeresés a GraphHopperrel" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"A közlekedési útvonalak harmadik féltől származó szolgáltatásból\n" +"származnak.\n" +"A GNOME nem garantálhatja a megjelenített útvonalak és menetrendek " +"helyességét.\n" +"Ne feledje, hogy egyes szolgáltatók lehet hogy nem tartalmazzák az összes " +"elérhető\n" +"közlekedési módokat, például egy nemzeti szolgáltató lehet, hogy nem " +"tartalmazza\n" +"a légitársaságokat, egy helyi szolgáltató pedig nem tartalmazza a " +"regionális\n" +"vonatokat.\n" +"A megjelenített nevek és márkák adott esetben bejegyzett védjegyeknek " +"tekintendők." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "További találatok megjelenítése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Közbenső megállók és információk elrejtése" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Közbenső megállók és információk megjelenítése" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Indulás most" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Indulás ekkor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Érkezés ekkor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Megjelenítés" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Buszok" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Villamosok" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vonatok" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metró" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Kompok" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Repülőgépek" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Hely megosztása" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Hozzáadás új útvonalhoz" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Útvonal" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Megjelölés kedvencként" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Szerkesztés az OpenStreetMapen" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Nagyítson a hely hozzáadásához!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Nagyítás" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nem sikerült csempeszerkezetet találni a könyvtárban" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Az XML dokumentum feldolgozása sikertelen" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Szükséges attribútumok hiányoznak" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nem sikerült megtalálni az OSM elemet" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Egy útvonal a helyi csempék könyvtárszerkezetéhez" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "A csempék mérete a helyi csempék könyvtárához" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "A program verziószámának megjelenítése" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Hálózat elérhetőségének figyelmen kívül hagyása" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FÁJL…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Válasszon egy fiókot" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Betöltés" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Válasszon egy helyet" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"A Térképek nem találja a helyet, ahova bejelentkezhet a Foursquare " +"használatával. Válasszon egyet erről a listáról." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Bejelentkezés ide: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Opcionális üzenet írása a következőbe való bejelentkezéshez: %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nem található „%s” a közösségi szolgáltatásban" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nem található megfelelő hely a bejelentkezéshez ezen a helyen" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"A hitelesítési adatok lejártak, nyissa meg az Online fiókokat a " +"bejelentkezéshez, és engedélyezze ezt a fiókot" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Itt nincs semmi!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A hely hozzáadva a térképhez, de eltarthat egy ideig, amíg megjelenik a " +"térképen és a keresési találatokban." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Térképek itt: %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "A fájlrendszer csak olvasható" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nincs jogosultsága oda menteni" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "A könyvtár nem létezik" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nincs megadva fájlnév" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "A nézet exportálása sikertelen" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Jelenlegi hely" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "érvénytelen koordináta" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "feldolgozási hiba" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "ismeretlen geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Az útvonalkérés nem sikerült." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nem található útvonal." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Indulás!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Minden rétegfájl" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Nem sikerült kapcsolódni a helymeghatározó szolgáltatáshoz" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Meskó Balázs \n" +"Úr Balázs " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Térképalkalmazás a GNOME-hoz" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. és a GNOME Térképek szerzői" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Térképadatok: %s és közreműködők" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "A térképcsempéket a(z) %s szolgáltatja" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "A keresést a(z) %s biztosította %s használatával" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "A réteg megnyitása nem sikerült" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Szeretné folytatni?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Arra készül, hogy %s MB-nyi összméretű fájlokat nyit meg. A betöltése több " +"időt vehet igénybe." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "A fájltípus nem támogatott" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "A GeoURI megnyitása nem sikerült" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Helytelen felhasználónév vagy jelszó" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sikerült" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Rossz kérés" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Nem található objektum" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktus, valaki épp most módosította az objektumot" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Az objektum törlésre került" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Út vagy kapcsolat nem létező gyermekekre hivatkozik" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Név" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "A hivatalos név. Jellemzően ez jelenik meg a jelzéseken." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Cím" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Weboldal" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ez nem érvényes URL. Győződjön meg róla, hogy tartalmazza a http:// vagy " +"https:// protokollt." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A hivatalos honlap. Próbálja meg az URL alapvető formáját használni, pl. " +"http://pelda.hu a http://pelda.hu/index.html helyett." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonszám. Használja a nemzetközi formátumot a + jellel. Figyeljen a helyi " +"adatvédelmi törvényekre, különösen a magántelefonszámokra." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +#| msgid "This is not a valid URL. Make sure to include http:// or https://." +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ez nem érvényes e-mail-cím. Győződjön meg arról, hogy ne tartalmazza a" +" mailto: protokollelőtagot." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kapcsolati e-mail-cím a kérdésekhez. Csak olyan e-mail-címet adjon meg, " +"amelyet nyilvánosan használhatónak szán." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"A használt formátumban legyen benne a nyelvi kód és a cikk címe, mint " +"például „hu:Cikk címe”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Nyitva tartás" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Kövesse a címke hivatkozását formázási segítségért." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Népesség" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Magasság" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Egy pont tengerszint feletti magassága méterben." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Kerekesszékes elérés" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Igen" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nem" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Korlátozott" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Kijelölt" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internet-hozzáférés" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Vezetékes" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Szolgáltatás" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Elvitel" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Kizárólag" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Vallás" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhizmus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kereszténység" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Dzsainizmus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Iszlám" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Több vallás" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pogányság" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pasztafarizmus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Szcientológia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Sintoizmus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Szikhizmus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitárius univerzalizmus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jezidizmus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroasztrizmus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalett" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Megjegyzés" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Más térképezőknek szánt információ, egy elem nem egyértelmű " +"tulajdonságairól, a szerző szándékáról, vagy tippek a további finomításokhoz." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Hozzáadás az OpenStreetMaphez" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Válasszon egy típust" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Kész" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Névtelen hely" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "A Geo URI feldolgozása nem sikerült" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordináták" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Pontosság" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Pontosság: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonszám" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Elvitelt kínál" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nem kínál elvitelt" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Csak elvitelt kínál" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Nyilvános internet-hozzáférés" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nincs internet-hozzáférés" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Nyilvános Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Vezetékes internet-hozzáférés" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Használható számítógépek" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internetes segítség érhető el" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Toalett nem érhető el" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toalett elérhető" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Kerekesszékkel elérhető" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Kerekesszékkel korlátozottan érhető el" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Kerekesszékkel nem érhető el" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Kerekesszéket használóknak kijelölt" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "Ennyivel a tengerszint alatt: %s" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Tengerszinten" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Vallás:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "A hely nem található az OpenStreetMapen" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Az URL-ben lévő koordináták nem érvényesek" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Az URL nem támogatott" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Ettől: %s, eddig: %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Térképszelvények betöltése nyomtatáshoz" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Megszakíthatja a nyomtatást, ha ez túl sokáig tart" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Nyomtatás megszakítása" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Hozzáadás hely szerint" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Eltávolítás hely szerint" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Fordított útvonal" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s hozzáadása ehhez: %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Az URI megnyitása nem sikerült" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Megnyitás %s használatával" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nem sikerült betölteni a fájlt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Becsült idő: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Az útvonalakat a(z) %s szolgáltatja" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Indulás innen: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Indulás" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gyaloglás: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Érkezés ide: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Érkezés" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Gyaloglási utasítások megjelenítése" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Gyaloglási utasítások elrejtése" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Korábbi lehetőségek betöltése" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Későbbi lehetőségek betöltése" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nem található korábbi lehetőség." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nem található későbbi lehetőség." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b. %e." + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nem található menetrend ehhez az útvonalhoz." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nem található szolgáltató ehhez az útvonalhoz." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s óra" +msgstr[1] "%s óra" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s óra" +msgstr[1] "%s:%s óra" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Éjjel-nappal" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Napkeltétől napnyugtáig" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Minden nap" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Munkaszüneti napok" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Tanszüneti napok" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nincs nyitva" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Ismeretlen" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Pontos" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s ó" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ó %s perc" +msgstr[1] "%s ó %s perc" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s perc" +msgstr[1] "%s perc" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s mp" +msgstr[1] "%s mp" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "A bővítmény nem támogatja a legkésőbbi érkezést" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Haladjon tovább ezen: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Haladjon tovább" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Forduljon balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Forduljon balra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Forduljon enyhén balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Forduljon enyhén balra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Forduljon élesen balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Forduljon élesen balra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Forduljon jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Forduljon jobbra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Forduljon enyhén jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Forduljon enyhén jobbra" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Forduljon élesen jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Forduljon élesen jobbra" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "A körforgalomban válassza a(z) %s. kijáratot" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "A körforgalomban válassza a(z) %s felé tartó kijáratot" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Menjen a körforgalomba" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Menjen a lifthez, és szálljon ki itt: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Menjen a lifthez" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Forduljon vissza balra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Forduljon vissza balra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Forduljon vissza jobbra erre: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Forduljon vissza jobbra" diff --git a/po/id.po b/po/id.po new file mode 100644 index 00000000..24fb4b00 --- /dev/null +++ b/po/id.po @@ -0,0 +1,2042 @@ +# Indonesian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Andika Triwidada , 2013, 2014, 2015, 2018. +# Kukuh Syafaat , 2017-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-28\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-22 11:40+0700\n" +"Last-Translator: Kukuh Syafaat \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Peta" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Temukan tempat di seluruh dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memberi Anda akses cepat ke peta di seluruh penjuru dunia. Ini " +"memungkinkan Anda secara cepat menemukan tempat yang Anda cari dengan " +"mencari suatu kota atau jalan, atau menemukan tempat untuk bertemu dengan " +"teman." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta memakai basis data kolaboratif OpenStreetMap, yang dibuat oleh ratusan " +"ribu orang di seluruh dunia." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Proyek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Aplikasi peta sederhana" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Memungkinkan ditunjukkannya lokasi Anda pada peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi yang terakhir dilihat" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat dari lokasi yang terakhir dilihat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "perbesar" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Tingkat perbesaran" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis Peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta untuk ditampilkan (jalan, udara, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Ukuran jendela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Ukuran jendela (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posisi jendela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posisi jendela (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Jendela dimaksimalkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan termaksimalkan jendela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Banyaknya hasil pencarian maksimum" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Banyanyak hasil pencarian maksimum dari pencarian geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Cacah lokasi baru-baru ini yang disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Banyaknya lokasi baru-baru ini dikunjungi yang disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Cacah rute baru-baru ini yang akan disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Banyaknya rute baru-baru ini dikunjungi yang akan disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Pengaturan privasi check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pengaturan privasi check in Foursquare yang terakhir dipakai. Nilai yang " +"mungkin adalah: public (umum), followers (para pengikut), atau private " +"(pribadi)" + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Penyiaran Facebook untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah " +"kiriman dalam akun Facebook yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Penyiaran Twitter untuk check in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menandakan apakah Foursquare mesti menyiarkan check in sebagai sebuah twit " +"dalam akun Twitter yang dikaitkan dengan akun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat surel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menandakan apakah pengguna telah masuk untuk menyunting data OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Jenis transportasi terakhir yang digunakan untuk rute" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mode malam" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Apakah aplikasi sedang dalam mode malam." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Gunakan ubin udara hybrid" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Apakah ubin udara harus menggunakan gaya hybrid (dengan label)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Kenampakan" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Kirim pada Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Kirim pada Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "C_heck in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Umum" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Pribadi" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute dari sini" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tambahkan tujuan antara" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute ke sini" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ada apa di sini?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Ekspor tilikan" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Ekspor" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Sertakan rute dan penanda" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Perkecil" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Perbesar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Cetak Rute" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Jungkitkan favorit" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Umum" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tampilkan Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Cari" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Jungkitkan perencana rute" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Tilikan Peta" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Perbesar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Perkecil" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Jungkitkan skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi saat ini" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke tampilan jalan" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke tampilan udara" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka layer shape" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Tampilkan Label" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Buka Layer Shape…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Nyalakan layanan lokasi untuk menemukan lokasi Anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Pengaturan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mode Malam" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Menyiapkan Akun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Ekspor sebagai Citra" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tombol Pintas" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Tentang Peta" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Buka menu utama" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Peta luring!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlu suatu koneksi internet aktif untuk berfungsi dengan benar, tapi " +"tidak ditemukan satupun." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Periksalah pengaturan proksi dan koneksi Anda." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Masuklah untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantulah memperbaiki peta, memakai\n" +"akun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Surel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata Sandi" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Daftar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Masuk" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, itu tidak bisa. Harap coba lagi, atau kunjungi\n" +"OpenStreetMap untuk mereset sandi Anda." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kode verifikasi tidak cocok, silakan coba lagi." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Masukkan kode verifikasi yang ditunjukkan di atas" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifikasi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Masuk" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Akun OpenStreetMap Anda aktif." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nomor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kode pos" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Kota" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nihil" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Ruas" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan tampak pada semua peta yang memakai\n" +"data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Baru-baru Ini Dipakai" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Selanjutnya" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hasil tak ditemukan" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Terjadi suatu kesalahan" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah urutan rute" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Kirim Ke…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Buka Layer Shape" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Jungkitkan kenampakan" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pencarian rute oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rute perjalanan untuk angkutan umum disediakan oleh layanan pihak ketiga.\n" +"GNOME tidak dapat menjamin kebenaran dari perjalanan dan jadwal yang " +"ditampilkan.\n" +"Perhatikan bawa beberapa penyedia mungkin tidak menyertakan semua mode " +"transportasi\n" +"yang tersedia, mis. sebuah penyedia nasional mungkin tidak menyertakan " +"penerbangan,\n" +"dan suatu penyedia lokal mungkin tidak punya jadwal kereta regional.\n" +"Nama dan merek yang ditampilkan dianggap sebagai merek dagang terdaftar " +"ketika berlaku." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tampilkan lebih banyak hasil" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyikan informasi dan perhentian antara" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tampilkan berhenti menengah dan informasi" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tampilkan" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bis" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trem" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Kereta api" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Kereta bawah tanah" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Penerbangan" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Bagikan lokasi" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Tambah ke rute baru" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Petunjuk Arah" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Tandai sebagai favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Sunting pada OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Perbesar untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Perbesar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal menemukan struktur ubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal mengurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut yang diperlukan kurang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tak bisa temukan elemen OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Suatu path ke sebuah struktur direktori ubin lokal" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Ukuran ubin untuk direktori ubin lokal" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Tampilkan versi program" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Abaikan ketersediaan jaringan" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Pilih sebuah akun" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Memuat" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Pilih suatu tempat" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tak dapat temukan tempat untuk check in dengan Foursquare. Harap pilih " +"satu dari daftar ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in ke %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis suatu pesan tambahan untuk check in ke %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tak dapat menemukan \"%s\" dalam layanan sosial" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tak dapat temukan suatu tempat yang cocok untuk check in dalam lokasi ini" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kredensial telah kedaluarsa, harap buka Akun Daring untuk masuk dan " +"memfungsikan akun ini" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tak ada yang ditemukan di sini!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi ditambahkan ke peta, perhatikan bahwa mungkin perlu waktu sebelum itu " +"muncul pada peta dan dalam hasil pencarian." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem berkas hanya baca" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tak punya ijin untuk menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak ada" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tak ada nama berkas yang dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tak bisa mengekspor tilikan" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Lokasi Sekarang" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "koordinat tak valid" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "galat penguraian" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometri tak dikenal" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Permintaan rute gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Rute tak ditemukan." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Mulai!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Semua Berkas Lapisan" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung ke layanan lokasi" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Andika Triwidada , 2013-2016, 2018, 2019.\n" +"Kukuh Syafaat , 2017-2021." + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Aplikasi peta bagi GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak Cipta © 2011 – 2021 Red Hat, Inc. dan Penulis GNOME Peta" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan kontributor" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Ubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pencarian disediakan oleh %s menggunakan %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Gagal membuka layer" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Apakah Anda ingin melanjutkan?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Anda berencana membuka berkas dengan ukuran total %s MB. Ini bisa memakan " +"waktu untuk memuat" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Jenis berkas tak didukung" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau sandi salah" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Berhasil" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Permintaan yang buruk" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objek tak ditemukan" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, seseorang baru saja mengubah objek itu" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objek telah dihapus" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Cara atau hubungan mengacu ke anak yang tak ada" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama resmi. Ini biasanya apa yang tertulis pada rambu." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Situs web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ini bukan URL yang valid. Pastikan untuk menyertakan http:// atau https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Situs web resmi. Cobalah memakai bentuk URL paling dasar yaitu http://" +"example.com/ bukan http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telepon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nomor telepon. Gunakan format internasional, diawali dengan tanda +. Hati-" +"hati dengan perundangan privasi lokal, khususnya untuk nomor telepon pribadi." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Surel" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ini bukan alamat surel yang valid. Pastikan untuk tidak menyertakan awalan " +"protokol mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Hubungi alamat surel untuk pertanyaan. Tambahkan hanya alamat surel yang " +"dimaksudkan untuk digunakan secara publik." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang dipakai mesti menyertakan kode bahasa dan judul artikel seperti " +"\"id:Judul artikel\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Lihat taut dalam label untuk bantuan tentang format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Ketinggian" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevasi (ketinggian di atas muka laut) dari suatu titik dalam meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Akses kursi roda" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Terbatas" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Ditugaskan" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Akses internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Ethernet" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Layanan" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Bawa pulang" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Hanya" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kekristenan" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Multi Agama" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pagan" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Saintologi" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalisme Unitarian" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toilet" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Catatan" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informasi yang digunakan untuk menginformasikan pemeta lain mengenai " +"informasi yang tidak jelas tentang suatu elemen, maksud penulis saat " +"membuatnya, atau petunjuk untuk perbaikan lebih lanjut." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambahkan ke OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gagal mengurai URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinat" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Akurasi" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Akurasi: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Nomor telepon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Menawarkan bawa pulang" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Tidak menawarkan bawa pulang" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Hanya menawarkan bawa pulang" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Akses internet publik" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Tidak ada akses internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi Publik" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Akses internet berkabel" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Komputer tersedia untuk digunakan" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Bantuan Internet tersedia" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Tidak ada toilet yang tersedia" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toilet tersedia" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Dapat diakses kursi roda" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Aksesibilitas kursi roda terbatas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Tidak dapat diakses kursi roda" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Ditunjuk untuk pengguna kursi roda" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s di bawah permukaan laut" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Di permukaan laut" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Agama:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemukan pada OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tak valid" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL tak didukung" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s ke %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuat ubin peta untuk pencetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Anda dapat menggugurkan pencetakan bila ini makan waktu terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Gugurkan pencetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah lewat lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Hapus lewat lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rute sebaliknya" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambahkan %s ke %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "gagal memuat berkas" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Perkiraan waktu: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Jadwal disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mulai dari %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mulai" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba di %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tampilkan petunjuk berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyikan petunjuk berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Memuat alternatif sebelumnya" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Memuat alternatif kemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tidak ditemukan alternatif sebelumnya." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tidak ada alternatif lain yang ditemukan." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Tidak ada data jadwal yang ditemukan untuk rute ini." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Tidak ada penyedia yang ditemukan untuk rute ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s menit" +msgstr[1] "%s menit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s jam" +msgstr[1] "%s jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s jam" +msgstr[1] "%s:%s jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Sepanjang waktu" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Dari matahari terbit sampai terbenam" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Hari libur publik" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Hari libur sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Tak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Eksak" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s j" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s j %s mnt" +msgstr[1] "%s j %s mnt" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s mnt" +msgstr[1] "%s mnt" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s dtk" +msgstr[1] "%s dtk" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mil" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Pengaya ini tidak mendukung kedatangan terbaru" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Lanjutkan pada %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Lanjutkan" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri di %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit ke kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Belok sedikit ke kiri" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok kiri tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Belok kiri tajam" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit ke kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Belok sedikit ke kanan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok kanan tajam pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Belok kanan tajam" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Di bundaran, ambil jalur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Di bundaran, ambil jalur ke %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Ambil bundaran" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Naik lift dan turun di %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Naik lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Putar balik kiri ke %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Putar balik kiri" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Putar balik kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Putar balik kanan" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Anda bahkan dapat mencari lokasi dengan jenis tertentu, seperti misalnya " +#~ "\"Pub dekat Main Street, Boston\" atau \"Hotel dekat Alexanderplatz, " +#~ "Berlin\"." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Pengaturan privasi check-in Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Pengaturan privasi check in Facebook yang terakhir dipakai. Nilai yang " +#~ "mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, atau SELF." + +#~ msgid "Everyone" +#~ msgstr "Semua orang" + +#~ msgid "Friends of friends" +#~ msgstr "Teman dari teman" + +#~ msgid "Just friends" +#~ msgstr "Teman saja" + +#~ msgid "Just me" +#~ msgstr "Hanya saya" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Peta tak dapat temukan tempat untuk check in dengan Facebook. Harap pilih " +#~ "satu dari daftar ini." + +#~ msgid "Find a Route" +#~ msgstr "Temukan Rute" + +#~ msgid "Check in here" +#~ msgstr "Check in di sini" + +#~ msgid "Show more information" +#~ msgstr "Tampilkan lebih banyak informasi" + +#~ msgid "Population:" +#~ msgstr "Populasi:" + +#~ msgid "Altitude:" +#~ msgstr "Ketinggian:" + +#~ msgid "Opening hours:" +#~ msgstr "Jam buka:" + +#~ msgid "Internet access:" +#~ msgstr "Akses internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toilet:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Akses kursi roda:" + +#~ msgid "Phone:" +#~ msgstr "Telepon:" + +#~ msgid "yes" +#~ msgstr "ya" + +#~ msgid "limited" +#~ msgstr "terbatas" + +#~ msgid "no" +#~ msgstr "tidak" + +#~ msgid "designated" +#~ msgstr "ditugaskan" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL OpenStreetMap tak valid" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ethernet" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "pelayanan" + +#~ msgid "Primary menu" +#~ msgstr "Menu utama" + +#~ msgid "Don’t have an account?" +#~ msgstr "Tidak punya akun?" + +#~ msgid "%f h" +#~ msgstr "%f j" + +#~ msgid "%f min" +#~ msgstr "%f men" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Tambahkan tujuan" diff --git a/po/is.po b/po/is.po new file mode 100644 index 00000000..38fd28d6 --- /dev/null +++ b/po/is.po @@ -0,0 +1,2113 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Sveinn í Felli , 2015, 2017, 2018, 2019, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-10-19 13:08+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 19.12.3\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME-landakort" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Finndu staði út um allan heim" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Landakortaforritið gefur aðgang að landakortum hvaðanæva úr heiminum. Það " +"hjálpar þér að finna staði, til dæmis með því að leita að götu eða bæ, nú " +"eða með því að skoða kort til að finna góðan stað til að hitta vinina." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Landakortaforritið notar OpenStreetMap gagnagrunninn, sem er " +"samvinnuverkefni hundruða þúsunda manna víðsvegar um heiminn." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "GNOME verkefnið" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Landakort" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Einfalt landakortaforrit" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Landakort;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leyfir að staðsetning þín sé birt á kortinu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "síðasta skoðuð staðsetning" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Hnit síðast skoðuðu staðsetningar." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "aðdráttur" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Aðdráttarstig" + +#: data/org.gnome.Maps.gschema.xml:21 +#| msgctxt "shortcut window" +#| msgid "Map View" +msgid "Map type" +msgstr "Tegund landakorts" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tegund landakorts sem á að birta (götukort, loftmynd, o.s.frv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Gluggastærð" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Gluggastærð (breidd og hæð)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Staðsetning glugga" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Staðsetning glugga (x og y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Gluggi hámarkaður" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Staða hámörkunar glugga" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Hámarksfjöldi leitarniðurstaðna" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Hámarksfjöldi niðurstaðna úr leit með geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Fjöldi nýlegra staða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Fjöldi nýlega heimsóttra staða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Fjöldi nýlegra leiða sem á að geyma" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Fjöldi nýlega notaðra leiða sem á að geyma." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Persónuleyndarstillingar við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Síðast notuðu persónuleyndarstillingar við innskráningu á Foursquare. " +"Möguleg gildi eru: opinbert, fylgjendur eða einka." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Tilkynning á Facebook við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tilkynningu um innskráningu " +"inn á Facebook-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Tilkynning á Twitter við innskráningu á Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Gefur til kynna hvort Foursquare eigi að senda tíst um innskráningu inn á " +"Twitter-aðganginn sem tengist viðkomandi Foursquare-reikningi." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Notandanafn eða netfang á OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Gefur til kynna hvort notandinn hafi skráð sig inn til að breyta gögnum í " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Síðast notaða gerð samgangna fyrir leiðaval" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Næturhamur" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Hvort forritið sé í næturham." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Nota blendings-loftmyndaflísar" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Hvort loftmyndaflísar eigi að nota blandaðan stíl (með merkingum)" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Sýnileiki" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Senda á Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Senda á Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Hætta við" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "S_krá inn" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Opið (public)" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Fylgjendur" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Einka" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Leið héðan" + +#: data/ui/context-menu.ui:16 +#| msgid "Hide intermediate stops and information" +msgid "Add intermediate destination" +msgstr "Bæta við milliáfanga" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Leið hingað" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hvað er hér?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Afrita staðsetningu" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Flytja út sýn" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Flytja út" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Hafa með leið og merkingar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Veldu tegund landakorts" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Renna frá" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Renna að" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Prenta leið" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Víxla Eftirlætum af/á" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Almennt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Birta flýtilykla" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Leita" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Víxla leiðagerð af/á" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Prenta leið" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Hætta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Opna aðalvalmynd" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kortasýn" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Renna að" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Renna frá" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Víxla á milli kvarða" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Fara á núverandi staðsetningu" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Skipta yfir í götusýn" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Skipta yfir í loftmyndasýn" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Opna lag með lögunum" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Birta merkingar" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Opna lag með lögunum…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Kveikja á staðsetningarþjónustum til að finna staðsetningu þína" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Hætta við" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Staðsetningarstillingar" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Næturhamur" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Setja upp OpenStreetMap aðgang" + +#: data/ui/main-window.ui:16 +#| msgid "Export As Image" +msgid "Export as Image" +msgstr "Flytja út sem mynd" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Um hugbúnaðinn" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Opna aðalvalmynd" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kortin eru án nettengingar!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Landakortaforritið þarf virka internet-tengingu til að virka almennilega, en " +"ekki hefur gengið að finna neina slíka." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Athugaðu tengi- og milliþjónastillingarnar þínar." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap aðgangur" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Skrá inn til að breyta kortum" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjálpa til við að bæta kortið, með því\n" +"að nota OpenStreetMap-aðgang." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Tölvupóstur" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lykilorð" + +#: data/ui/osm-account-dialog.ui:125 +#| msgid "Sign Out" +msgid "Sign up" +msgstr "Nýskrá" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Skrá inn" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Æ, þetta virkaði ekki. Endilega reyndu aftur, eða farðu á\n" +"OpenStreetMap til að endurstilla lykilorðið þitt." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Sannvottunarkóðinn stemmdi ekki, prófaðu aftur." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Settu inn sannvottunarkóðann hér fyrir ofan" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Sannreyna" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Skráð inn" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap aðgangurinn þinn er virkur." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Skrá út" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Húsnúmer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Póstnúmer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Borg" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tegund" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ekkert" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Bæta við reit" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Athugasemd" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Breytingar á korti verða sýnilegar á öllum kortum sem nota\n" +"OpenStreetMap gögn." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nýlega notað" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Næsta" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Engar niðurstöður fundust" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Villa hefur átt sér stað" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dragðu til að breyta röð leiðarinnar" + +#: data/ui/send-to-dialog.ui:10 +#| msgid "Open location" +msgid "Open Location" +msgstr "Opna staðsetningu" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Afrita" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Senda til..." + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Skrá inn…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Opna lag með lögunum" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Opna" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Víxla sýnilegu" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Leita að leiðum með GraphHopper" + +#: data/ui/sidebar.ui:364 +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Leiðatöflur almenningssamgangna koma í gegnum tímatöflugögn frá utanaðkomandi" +" rekstraraðilum.\n" +"GNOME getur ekki ábyrgst áreiðanleika þessara leiða og áætlana.\n" +"Athugaðu að sumar þjónustuveitur taka ekki með allar gerðir samgangna,\n" +"t.d. gæti rekstraraðili á landsvísu sleppt flugsamgöngum og rekstraraðili\n" +" innan héraðs gæti sleppt einhverjum lestasamgöngum.\n" +"Nöfn og vörumerki ber að líta á sem eign viðkomandi fyrirtækja þegar slíkt á" +" við." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Birta fleiri niðurstöður" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Fela biðstöðvar á leiðinni og upplýsingar" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Sýna biðstöðvar á leiðinni og upplýsingar" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Fara núna" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Fara um" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Koma um" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Birta" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Strætisvagna" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Sporvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Lestir" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Neðanjarðarlestir" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjur" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flugvélar" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +#| msgid "Open location" +msgid "Share location" +msgstr "Deila staðsetningu" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Bæta við nýja leið" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Stefnur" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merkja sem Eftirlæti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Breyta í OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Renndu að til að bæta við staðsetningu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Renna að" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Mistókst að finna kortaflísaskipan í möppu" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gat ekki þáttað XML-skjal" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Nauðsynleg eigindi vantar" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Gat ekki fundið OSM-stak" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Slóð á möppuuppbyggingu fyrir kortaflísar á tölvunni" + +#: src/application.js:114 +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Stærð kortaflísa fyrir kortaflísamöppu á tölvunni" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Sýna útgáfu forrits" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Hunsa hvort netsamband sé í boði" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SKRÁ…|SLÓÐ]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Veldu aðgang" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Hleð inn" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Veldu stað" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Get ekki fundið staðinn til að skrá inn á Foursquare. Veldu einn af þessum " +"lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Skrá inn í %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Þú getur skrifað skilaboð með innskráningunni í %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finn ekki \"%s\" á samfélagsmiðilsþjónustunni" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Get ekki fundið hentugan stað til að skrá inn á þessari staðsetningu" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Auðkennin eru útrunnin, opnaðu \"Aðgangar á neti\" til að skrá þig inn og " +"virkja þennan aðgang" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ekkert fannst hér!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Staðsetningunni var bætt á kortið, athugaðu að nokkur tími getur liðið " +"þangað til hún fer að sjást á kortinu eða koma upp í leitarniðurstöðum." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Landakort á %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Skráakerfi er aðeins til lestrar" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Þú hefur ekki nægar aðgangsheimildir til að vista þarna" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mappan er ekki til" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ekkert skráarheiti tilgreint" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tókst ekki að flytja út sýnina" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Núverandi staðsetning" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ógild hnit" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "þáttunarvilla" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "óþekkt gerð rúmfræði" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Leiðarbeiðni mistókst." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Engin leið fannst." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Byrja!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Allar lagaskrár" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Tókst ekki að tengjast staðsetningarþjónustu" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Sveinn í Felli, sv1@fellsnet.is" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Landakortaforrit fyrir GNOME" + +#: src/mainWindow.js:604 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Höfundarréttur © 2011 – 2021 Red Hat, Inc. og höfundar GNOME Maps" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kortagögn frá %s og meðhöfundum" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kortaflísar gefnar út af %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Leitarniðurstöður í boði %s með %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Mistókst að opna lag" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Viltu halda áfram?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Þú ert að fara að opna skrár sem eru alls %s MB. Það gæti tekið svolítinn" +" tíma að hlaða þeim inn" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Það er enginn stuðningur við skráategundina" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Mistókst að opna Geo URI-slóð" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Rangt notandanafn eða lykilorð" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Tókst" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Óleyfileg beiðni" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Hluturinn fannst ekki" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Árekstur, einhver annar er nýbúinn að breyta atriðinu" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Hlutnum hefur verið eytt" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Leið eða vensl vísa í afleiður sem ekki eru til" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nafn" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Opinbera heitið. Venjulega það sem birt væri á skiltum og þess háttar" + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Heimilisfang" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Vefsvæði" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Þetta er ekki gild URL-slóð. Gakktu úr skugga um að hafa með http:// eða" +" https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Opinbera vefsvæðið. Reyndu að nota grunnform slóðarinnar, t.d. http://vefur." +"is í stað http://dæmi.is/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Símanúmer" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Símanúmer. Notaðu alþjóðlega framsetningu, sem byrjar á + merki. Vertu " +"meðvitaður um reglur þær sem í gildi eru á svæðinu, sérstaklega varðandi " +"persónulega friðhelgi." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "Tölvupóstur" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Þetta er ekki gilt tölvupóstfang. Gakktu úr skugga um að ekki sé með mailto:" +" forskeytið" + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Tölvupóstfang fyrir fyrirspurnir. Bættu bara við tölvupóstföngum sem ætlast" +" er til að séu í notkun opinberlega." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Sniðið ætti að innihalda tungumálskóða og titil greinar, til dæmis \"is:" +"Heiti greinar\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Opnunartímar" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "" +"Skoðaðu tengilinn í skýringum um hvar hægt sé að fá hjálp varðandi snið." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Fólksfjöldi" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Hæð" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Hæð yfir sjávarmáli í metrum." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Hjólastólaaðgangur" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Já" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "takmarkað" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "uppgefið" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetaðgangur" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Þráðlaust net" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Um kapal" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Útstöð" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Þjónusta" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Brottnám (takeaway)" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Aðeins" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Trúarbrögð" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Andatrú" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Búddismi" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kao-Daí" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristindómur" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfúsíusismi" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindúismi" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jaínismi" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Gyðingdómur" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Íslam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Margra trúarbragða" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Heiðni" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafaríanismi" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Vísindakirkjan" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismi" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spírítismi" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taóismi" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Alþjóðlegur únítarismi" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jasismi" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Sóróismi" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Snyrtingar" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Athugasemd" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Upplýsingar sem notaðar eru til að gefa öðrum kortahönnuðum ekki-augljósar " +"ábendingar um tiltekið atriði, markmið höfundar þegar hann útbjó atriði, eða " +"ábendingar um hvernig hægt yrði að þróa/bæta það." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Bæta í OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Veldu tegund" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Lokið" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nafnlaus staður" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gat ekki þáttað Geo URI-slóð" + +#: src/placeView.js:268 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Hnit" + +#: src/placeView.js:272 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Nákvæmni" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nákvæmni: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +#| msgid "House number" +msgid "Phone number" +msgstr "Símanúmer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Býður upp á brottnám (takeaway)" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Býður ekki upp á brottnám (takeaway)" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Býður einungis upp á brottnám (takeaway)" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Opinn internetaðgangur" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +#| msgid "Internet access" +msgid "No internet access" +msgstr "Enginn internetaðgangur" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Opið Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Internetaðgangur um kapal" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Tölvur í boði til notkunar" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Aðstoð við internettengingu í boði" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Engin salerni á staðnum" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Salerni á staðnum" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Aðgengilegt í hjólastól" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Takmarkað aðgengi fyrir hjólastóla" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Ekki hjólastólaaðgangur" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Frátekið fyrir notendur hjólastóla" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s undir sjávarmáli" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Við sjávarmál" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Trúarbrögð:" + +#: src/place.js:497 +#| msgid "Edit on OpenStreetMap" +msgid "Place not found in OpenStreetMap" +msgstr "Staður fannst ekki í OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Hnitin í URL-slóðinni eru ógild" + +#: src/place.js:513 +#| msgid "File type is not supported" +msgid "URL is not supported" +msgstr "URL-slóð er ekki studd" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Frá %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Hleð inn kortaflísum fyrir prentun" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Þú getur hætt við prentun ef þetta tekur of langan tíma" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hætta við prentun" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Bæta við í gegnum staðsetningu" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjarlægja í gegnum staðsetningu" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Snúa við leið" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +#| msgid "From %s to %s" +msgid "Add %s to %s" +msgstr "Bæta %s við %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gat ekki opnað URI-slóð" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Opna með %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "mistókst að hlaða inn skrá" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Áætlaður tími: %s" + +#: src/sidebar.js:411 +#, javascript-format +#| msgid "Map tiles provided by %s" +msgid "Itineraries provided by %s" +msgstr "Leiðartöflur gefnar út af %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Byrja í %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Upphaf" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Ganga %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Koma til %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Koma" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Birta gönguleiðbeiningar" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Fela gönguleiðbeiningar" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Hlaða inn fyrri valkostum" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Hlaða inn síðari valkostum" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Engir fyrri möguleikar fundust." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Engir síðari möguleikar fundust." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Engin tímatöflugögn fundust fyrir þessa leið." + +#: src/transitPlan.js:185 +#| msgid "No timetable data found for this route." +msgid "No provider found for this route." +msgstr "Engin veita fannst fyrir þessa leið." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +#| msgid "%d minute" +#| msgid_plural "%d minutes" +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s mínúta" +msgstr[1] "%s mínútur" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +#| msgid "%d hour" +#| msgid_plural "%d hours" +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s klukkustund" +msgstr[1] "%s klukkustundir" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +#| msgid "%d:%02d hour" +#| msgid_plural "%d:%02d hours" +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s klukkustund" +msgstr[1] "%s:%s klukkustundir" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Allan sólarhringinn" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "Frá sólarupprás til sólarlags" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +#| msgid "every day" +msgid "Every day" +msgstr "Alla daga" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Almennir frídagar" + +#: src/translations.js:179 +#| msgid "school holidays" +msgid "School holidays" +msgstr "Skólafrídagar" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ekki opið" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Óþekkt" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Nákvæmt" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s klst" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +#| msgctxt "time range list" +#| msgid "%s %s %s" +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s klst %s mín" +msgstr[1] "%s klst %s mín" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +#| msgid "%s mi" +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s mín" +msgstr[1] "%s míl" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s míl" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s fet" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Þessi viðbót styður ekki síðustu komu" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Halda áfram á %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Halda áfram" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Beygðu til vinstri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Beygðu til vinstri" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Beygðu lítillega til vinstri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Beygðu lítillega til vinstri" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Beygðu skarpt til vinstri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Beygðu skarpt til vinstri" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Beygðu til hægri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Beygðu til hægri" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Beygðu lítillega til hægri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Beygðu lítillega til hægri" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Beygðu skarpt til hægri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Beygðu skarpt til hægri" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Í hringtorginu skaltu beygja útaf við %s afrein" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Í hringtorginu skaltu beygja útaf yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Farðu inn á hringtorgið" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Taktu lyftuna og farðu út á %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Taktu lyftuna" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Taktu U-beygju til vinstri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Taktu U-beygju til vinstri" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Taktu U-beygju til hægri yfir á %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Taktu U-beygju til hægri" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Þú getur líka leitað að sérstökum tegundum staðsetninga, eins og “Pöbbar " +#~ "nálægt Main Street, Boston”, \"Myndbandaleigur á Selfossi\" eða “Hótel " +#~ "nálægt Alexanderplatz, Berlín”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Persónuleyndarstillingar við innskráningu á Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Síðast notuðu persónuleyndarstillingar við innskráningu á Facebook. " +#~ "Möguleg gildi eru: ALLIR, VINIR_VINA, ALLIR_VINIR eða SJÁLF(UR)." + +#~ msgid "Everyone" +#~ msgstr "Allir" + +#~ msgid "Friends of friends" +#~ msgstr "Vinir vina" + +#~ msgid "Just friends" +#~ msgstr "Bara vinir" + +#~ msgid "Just me" +#~ msgstr "Bara ég" + +#~ msgid "Open with another application" +#~ msgstr "Opna með öðru forriti" + +#~ msgid "Check in here" +#~ msgstr "Skrá inn hér" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ertu ekki með aðgang?" + +#~ msgid "Show more information" +#~ msgstr "Birta nánari upplýsingar" + +#~ msgid "Press enter to search" +#~ msgstr "Ýttu á Enter til að leita" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Leita að leiðum með OpenTripPlanner" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Get ekki fundið staðinn til að skrá inn á Facebook. Veldu einn af þessum " +#~ "lista." + +#~ msgid "Add destination" +#~ msgstr "Bæta við áfangastað" + +#~ msgid "Population:" +#~ msgstr "Fólksfjöldi:" + +#~ msgid "Altitude:" +#~ msgstr "Hæð:" + +#~ msgid "Opening hours:" +#~ msgstr "Opnunartímar:" + +#~ msgid "Internet access:" +#~ msgstr "Internetaðgangur:" + +#~ msgid "Toilets:" +#~ msgstr "Snyrtingar:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Hjólastólaaðgangur:" + +#~ msgid "Phone:" +#~ msgstr "Sími:" + +#~ msgid "yes" +#~ msgstr "já" + +#~ msgid "limited" +#~ msgstr "takmarkað" + +#~ msgid "no" +#~ msgstr "nei" + +#~ msgid "designated" +#~ msgstr "uppgefið" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "um kapal" + +#~ msgid "terminal" +#~ msgstr "útstöð" + +#~ msgid "service" +#~ msgstr "þjónusta" + +#~ msgid "%f h" +#~ msgstr "%f klst" + +#~ msgid "%f min" +#~ msgstr "%f mín" + +#~ msgid "%f s" +#~ msgstr "%f sek" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Hætta" + +#~ msgid "OK" +#~ msgstr "Í lagi" + +#~ msgid "Load Map Layer" +#~ msgstr "Hlaða inn kortalagi" + +#~ msgid "Open Layer" +#~ msgstr "Opna lag" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f fet" + +#~ msgid "Country code: %s" +#~ msgstr "Landskóði: %s" diff --git a/po/it.po b/po/it.po new file mode 100644 index 00000000..f1259873 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1896 @@ +# Italian translation for gnome-maps. +# Copyright (C) 2013 - 2019, 2021 Red Hat & gnome-maps authors +# This file is distributed under the same license as the gnome-maps package. +# Claudio Arseni , 2013, 2014, 2015. +# Gianvito Cavasoli , 2016-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-03-14 17:10+0000\n" +"PO-Revision-Date: 2021-03-17 09:25+0100\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mappe GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Trova luoghi in giro per il mondo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mappe fornisce un rapido accesso alla cartografia mondiale. Consente di " +"trovare velocemente i luoghi utilizzando la ricerca per città o per " +"indirizzo e di trovare i luoghi in cui incontrare i propri amici." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mappe usa il database OpenStreetMap creato dalla collaborazione di centinaia " +"di migliaia di persone da ogni parte del mondo." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"È possibile cercare posti specifici, tipo «Pub vicino a Via del Corso, Roma» " +"o «Hotel vicino a Piazza del Duomo, Milano»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "Il progetto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Mappe" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una semplice applicazione per le mappe" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mappe;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Consente alla vostra posizione di essere mostrata sulla mappa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ultima posizione visualizzata" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordinate dell'ultima posizione visualizzata." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Livello d'ingrandimento" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo di mappa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Il tipo di mappa da mostrare (stradale, aerea, ecc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensione finestra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensione della finestra (larghezza e altezza)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posizione finestra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posizione della finestra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Finestra massimizzata" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stato massimizzazione della finestra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numero massimo di risultati per la ricerca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Numero massimo di risultati per la ricerca da codifica geografica." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Numero di luoghi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Numero di luoghi visitati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Numero di percorsi recenti da archiviare" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Numero di percorsi effettuati di recente di cui tenere traccia." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Facebook usate. I valori " +"possibili sono: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS o SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Impostazioni per la privacy dei check-in su Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultime impostazioni per la privacy dei check-in su Foursquare usate. I " +"valori possibili sono: public, followers o private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Trasmissione a Facebook dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come post all'account Facebook " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Trasmissione a Twitter dei check-in di Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deve inviare il check-in come tweet all'account Twitter " +"associato a quello Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome utente o indirizzo e-mail di OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utente ha effettuato l'accesso per modificare i dati " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "L'ultimo tipo di trasporto usato per il percorso" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Modalità notturna" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Indica se l'applicazione è nella modalità notturna." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "Usa mappe aeree ibride" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Indica se le mappe aeree devono usare lo stile ibrido (con etichette)." + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Visibilità" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Invia su Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Invia su Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "A_nnulla" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "C_heck-in" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Chiunque" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Gli amici dei propri amici" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Solo gli amici" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Solo a me" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Pubblico" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Follower" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privato" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Percorso da qui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Aggiungi destinazione intermedia" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Percorso fino a qui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Cosa c'è qui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copia posizione" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Esporta visualizzazione" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Esporta" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Includere percorsi e marcatori" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai alla posizione attuale" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Scegli il tipo di mappa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Attiva/Disattiva i preferiti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Stampa percorso" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra scorciatoie" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ricerca" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Attiva/Disattiva pianificazione percorso" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Stampa il percorso" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Esci" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Apre il menù principale" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visualizzazione mappa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Aumenta l'ingrandimento" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Diminuisce l'ingrandimento" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Attiva/Disattiva scala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Va a alla posizione attuale" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passa alla visualizzazione stradale" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passa alla visualizzazione aerea" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Apre livello di forma" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostra etichette" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Apri livello di forma…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Attivare i servizi di localizzazione per rilevare la posizione" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annulla" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Impostazioni di localizzazione" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modalità notturna" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Impostazione account OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Esporta come immagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Informazioni su Mappe" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Apri menù principale" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mappe è fuori rete." + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mappe ha bisogno di una connessione a Internet attiva per funzionare " +"correttamente, ma al momento è impossibile trovarne una." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificare la propria connessione e le impostazioni del proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Account OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Accedi per modificare le mappe" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Aiuta a migliorare la mappa, usando un\n" +"account OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Iscriviti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Accedi" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Non ha funzionato. Riprovare, o visitare\n" +"OpenStreetMap per ripristinare la password." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Il codice di verifica non corrisponde, riprovare." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Inserire il codice di verifica mostrato sopra" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifica" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Accesso effettuato" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "L'account OpenStreetMap è attivo." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Disconnetti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Strada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numero civico" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Codice postale" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Città" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nessuno" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Aggiungi campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commento" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Le modifiche alla mappa saranno visibili su tutte le mappe che usano\n" +"dati di OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usate recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Successiva" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nessun risultato trovato" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Si è verificato un errore" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trascinare per modificare l'ordine del percorso" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Apri posizione" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copia" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Invia a…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Verifica…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Apri livello di forma" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Apri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Attiva/Disattiva visibilità" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ricerca del percorso con GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"I percorsi itineranti per il trasporto pubblico sono forniti da servizi\n" +"di terze parti.\n" +"GNOME non può garantire la correttezza degli itinerari e degli orari " +"indicati.\n" +"Notare che alcuni fornitori potrebbero non includere tutte le modalità di " +"trasporto disponibili,\n" +"per esempio un fornitore nazionale potrebbe non includere le linee aeree, e " +"un fornitore locale\n" +"potrebbe non includere treni regionali.\n" +"Nomi e marchi riportati sono da considerarsi, quando applicabile, come " +"marchi registrati." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostra più risultati" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Nasconde le fermate intermedie e informazioni" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostra le fermate intermedie e informazioni" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partire ora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partire alle" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arrivare alle" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostra" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metropolitana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Traghetti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aeroplani" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Condivide la posizione" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Aggiungi a nuovo percorso" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direzioni" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Contrassegna come preferito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modifica su OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ingrandire per aggiungere la posizione." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Aumenta ingrandimento" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossibile trovare sezioni delle mappe nella directory" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Analisi del documento XML non riuscita" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Attributi richiesti mancanti" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossibile trovare l'elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un percorso di una directory locale contenente sezioni delle mappe" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Dimensione mappa per la directory locale delle mappe" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra la versione del programma" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora disponibilità rete" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Selezionare un account" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Caricamento" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Selezionare un posto" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Facebook. Selezionarne " +"uno da questo elenco." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mappe non può trovare il posto per il check-in con Foursquare. Selezionarne " +"uno da questo elenco." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Check-in presso %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrivere un commento opzionale per il check-in presso %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossibile trovare «%s» nel servizio social" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Impossibile trovare un posto adatto per il check-in in questo luogo" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Credenziali scadute. Aprire «Account online» per accedere e abilitare questo " +"account" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Non c'è niente qui." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"La posizione è stata aggiunta alla mappa, notare che ci potrebbe volere un " +"po' prima che venga mostrata sulla mappa e nei risultati di ricerca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mappe di %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Il filesystem è in sola lettura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Non si hanno i permessi per salvarle" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "La directory non esiste" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nessun nome file specificato" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossibile esportare la visualizzazione" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Posizione attuale" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "coordinate non valide" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "errore di analisi" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometria sconosciuta" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Richiesta del percorso non riuscita." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Percorso non trovato." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Avvia." + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tutti i file livello" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Impossibile connettersi al servizio di localizzazione" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"Claudio Arseni \n" +"Gianvito Cavasoli " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Una applicazione di GNOME per le mappe" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e gli autori di GNOME Maps" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "I dati delle mappe sono di %s e collaboratori" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Le sezioni delle mappe sono fornite da %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Ricerca fornita da «%s» usando «%s»" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Apertura del livello non riuscita" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Continuare?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Si stanno per aprire dei file con una dimensione totale di %s MB. Il " +"caricamento potrebbe richiedere del tempo" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Il tipo di file non è supportato" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Apertura di GeoURI non riuscita" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nome utente o password non corretti" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Successo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Richiesta errata" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Oggetto non trovato" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflitto, qualcun altro ha già modificato l'oggetto" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "L'oggetto è stato eliminato" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Percorso o relazione in riferimento a un nodo figlio non esistente" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Il nome ufficiale. Questo è tipicamente quello che appare all'accesso." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Indirizzo" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Sito web" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Questo URL non è valido. Assicurarsi di includere http:// o https://." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Il sito web ufficiale. Provare a usare la forma più basica di un URL, " +"esempio http://example.com invece di http://example.com/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefono" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Il numero di telefono. Usare il formato internazionale, a partire dal " +"simbolo +. Fare attenzione alle leggi locali sulla privacy, specialmente per " +"i numeri di telefono privati." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Il formato usato deve includere il codice della lingua e il titolo " +"dell'articolo tipo «it:Titolo dell'articolo»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Orari di apertura" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Vedere il collegamento nell'etichetta per un aiuto sul formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Popolazione" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Altitudine (altezza sopra il livello del mare) di un punto in metri." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Accesso per disabili" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Sì" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "No" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Limitata" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Designata" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Accesso Internet" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Con cavo" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminale" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Servizio" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religione" + +#: src/osmEditDialog.js:195 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhismo" + +#: src/osmEditDialog.js:198 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:199 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianesimo" + +#: src/osmEditDialog.js:200 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianesimo" + +#: src/osmEditDialog.js:201 src/translations.js:290 +msgid "Hinduism" +msgstr "Induismo" + +#: src/osmEditDialog.js:202 src/translations.js:291 +msgid "Jainism" +msgstr "Giainismo" + +#: src/osmEditDialog.js:203 src/translations.js:292 +msgid "Judaism" +msgstr "Ebraismo" + +#: src/osmEditDialog.js:204 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religioni multiple" + +#: src/osmEditDialog.js:206 src/translations.js:295 +msgid "Paganism" +msgstr "Paganesimo" + +#: src/osmEditDialog.js:207 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianesimo" + +#: src/osmEditDialog.js:208 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:209 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoismo" + +#: src/osmEditDialog.js:210 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhismo" + +#: src/osmEditDialog.js:211 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualismo" + +#: src/osmEditDialog.js:212 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:213 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitariani universalisti" + +#: src/osmEditDialog.js:214 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:215 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:216 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Servizi igienici" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Indicazioni usate per comunicare altri mappatori le informazioni non " +"evidenti su un elemento, l'intento dell'autore quando lo crea, o suggerire " +"futuri miglioramenti." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Aggiungi a OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Seleziona tipo" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Fatto" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Luogo senza nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Analisi dell'URI geografico non riuscita" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Coordinate" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Precisione" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisione: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Numero di telefono" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Accesso pubblico a Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Nessun accesso a Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Wi-Fi pubblica" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Accesso a Internet con cavo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Computer disponibili all'uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Assistente Internet disponibile" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Nessun bagno disponibile" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Bagno disponibile" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Accessibile per sedie a rotelle" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Accesso limitato per sedie a rotelle" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Non accessibile per sedie a rotelle" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Progettato per gli utenti con sedia a rotelle" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religione:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Luogo non trovato su OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "L'URL delle coordinate non è valido" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "L'URL non è supportato" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Da %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Caricamento sezioni della mappa per la stampa" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Si può interrompere la stampa se questa prende troppo tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompi stampa" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Aggiunge tramite posizione" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Rimuove tramite posizione" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Percorso inverso" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Aggiungi «%s» in «%s»" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Apertura dell'URI non riuscita" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Apri con %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "caricamento file non riuscito" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo stimato: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari forniti da %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partenza da %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partenza" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Camminare per %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arriva in %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arrivo" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostra il percorso a piedi" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Nasconde il percorso a piedi" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Caricare alternative precedenti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Caricare alternative successive" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Non è stata trovata alcuna alternativa precedente." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Non è stata trovata alcuna alternativa successiva." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nessun dato trovato sugli orari di questo percorso." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nessun fornitore trovato per questo percorso." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minuti" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Tutto il giorno" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Dal tramonto all'alba" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Ogni giorno" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Giorni festivi" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacanze scolastiche" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "chiuso" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Sconosciuta" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Esatta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ora" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ora %s min" +msgstr[1] "%s ore %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sec" +msgstr[1] "%s sec" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Questo plugin non supporta l'ultimo arrivo" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continua su %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continua" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Svolta a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Svolta a sinistra" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Svolta leggermente a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Svolta leggermente a sinistra" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Svolta brusca a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Svolta brusca a sinistra" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Svolta a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Svolta a destra" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Svolta leggermente a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Svolta leggermente a destra" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Svolta brusca a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Svolta brusca a destra" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Alla rotonda, prendere l'uscita %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Alla rotonda, prendere l'uscita verso %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Prendere la rotonda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Prendere l'ascensore e scendere a %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Prendere l'ascensore" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Fare un'inversione a sinistra su %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Fare un'inversione a sinistra" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Fare un'inversione a destra su %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Fare un'inversione a destra" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..a974b3e4 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1477 @@ +# Japanese translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# victory , 2013. +# Jiro Matsuzawa , 2013. +# Ikuya Awashiro , 2014. +# Hajime Taira , 2014-2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-03-16 20:35+0000\n" +"PO-Revision-Date: 2016-04-06 07:08+0900\n" +"Last-Translator: sujiniku \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"世界中あらゆる場所の地図に簡単にアクセスできます。都市や住所を検索して、お探" +"しの場所をさっと見つけられ、待ち合わせ場所もすぐに特定できます。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"この地図アプリは、OpenStreetMap データベースを利用しています。このデータベー" +"スは、世界中の膨大な人々が協力して作成しています。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"特定のタイプにより検索することができます。場所の特定の種類による検索。" +"例:“Pubs near Main Street, Boston“ あるいは “Hotel near Alexanderplatz, " +"Berlin“" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:441 +msgid "Maps" +msgstr "地図" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "シンプルな地図アプリケーション" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;地図;マップ;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +#| msgid "User set last known location" +msgid "last viewed location" +msgstr "直近の既知の位置がユーザー設定によるものかどうか" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +#, fuzzy +#| msgid "Description of last known location" +msgid "Coordinates of last viewed location." +msgstr "直近の既知の位置の詳細" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "ウィンドウサイズ" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "ウィンドウサイズ (幅と高さ) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "ウィンドウの位置" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "ウィンドウの位置 (横位置と縦位置) です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "ウィンドウ最大化" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "ウィンドウを最大化しているかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "検索結果の最大数" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "geocode 検索の検索結果として表示する最大数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "記録する最近の場所の数" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "最近訪れた場所を記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "記録する最近のルートの数" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "最近訪れたルートを記録する件数。" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Facebookへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最新のFacebookのチェックイン時のプライバシー設定で指定可能な値: EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquareへチェックイン時のプライバシー設定" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最新のFoursquareのチェックイン時のプライバシー設定で指定可能な値: public, " +"followers, private" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "FoursquareのチェックインをFacebookにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"FacebookアカウントがFoursquareアカウントに関連付けられている場合、Foursquare" +"のチェックインをFacebookにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "FoursquareのチェックインをTwitterにも投稿する" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"TwitterアカウントがFoursquareアカウントに関連付けられている場合、Foursquareの" +"チェックインをTwitterにも投稿するかどうかの設定です。" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap アカウントの設定" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "キーボードショートカット(_K)" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "このアプリケーションについて" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "終了" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "公開範囲" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Facebookに投稿" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Twitterに投稿" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "チェックイン(_H)" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "誰でも" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "友達の友達まで" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "友達のみ" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "自分のみ" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "公開" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "フォロワー" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "プライベート" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ここはどこ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "場所をコピー" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "画像としてエクスポート" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "ビューのエクスポート" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "ルートとマーカーを含む" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ショートカットを表示する" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "検索する" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ルート案内の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ルートを印刷する" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "終了する" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地図の表示" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拡大する" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "縮小する" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "縮尺の有無を切り替える" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "現在の位置へ移動する" + +#: ../data/ui/layers-popover.ui.h:1 +msgid "Load Map Layer" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "現在位置を特定するには位置情報サービスをオンにしてください" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "場所の設定" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "現在の位置へ移動します" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "地図の種類を選択" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "ルート案内" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "お気に入り" + +#: ../data/ui/main-window.ui.h:6 +msgid "Print Route" +msgstr "ルートの印刷" + +#: ../data/ui/main-window.ui.h:7 +msgid "Maps is offline!" +msgstr "地図はオフラインです。" + +#: ../data/ui/main-window.ui.h:8 +#, fuzzy +#| msgid "" +#| "Maps need an active internet connection to function properly, but one " +#| "can't be found." +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"インターネット接続がありません。このアプリケーションが適切に機能するためにイ" +"ンターネット接続が必要です。" + +#: ../data/ui/main-window.ui.h:9 +msgid "Check your connection and proxy settings." +msgstr "インターネット接続とプロキシの設定を確認してください。" + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "新しいルートを追加" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "別のアプリケーションで開く" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "お気に入りに追加" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "ここにチェックイン" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap アカウント" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"地図編集のためのサインイン" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "メールアドレス" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "パスワード" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "サインイン" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +#| msgid "Don't have an account?" +msgid "Don’t have an account?" +msgstr "アカウントをお持ちでありませんか?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +#, fuzzy +#| msgid "The verification code didn't match, please try again." +msgid "The verification code didn’t match, please try again." +msgstr "認証コードが一致しません、やりなおしてください。" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "上記の認証コードを入力" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "検証" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "サインイン済み" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "あなたの OpenStreetMap account アカウントはアクティブです。" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "サインアウト" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "道路地図" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "" + +#: ../data/ui/osm-edit-address.ui.h:3 +#, fuzzy +#| msgid "Postal code: %s" +msgid "Postal code" +msgstr "郵便番号: %s" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgid "Edit on OpenStreetMap" +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +#, fuzzy +#| msgid "_Cancel" +msgid "Cancel" +msgstr "キャンセル(_C)" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:472 +msgid "Next" +msgstr "" + +#: ../data/ui/place-bubble.ui.h:1 +#, fuzzy +#| msgid "Show more results" +msgid "Show more information" +msgstr "さらに結果を表示" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Enterキーを押すと検索します" + +#: ../data/ui/route-entry.ui.h:1 +msgid "Drag to change order of the route" +msgstr "ルートの順序をドラッグで変更" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "場所を開く" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "開く(_O)" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "" + +#: ../data/ui/shape-layer-row.ui.h:1 +#, fuzzy +#| msgid "Toggle favorites" +msgid "Toggle visible" +msgstr "お気に入り" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +#| msgid "Route search by GraphHopper" +msgid "Route search by OpenTripPlanner" +msgstr "GraphHopperによるルート検索" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "さらに結果を表示" + +#: ../data/ui/transit-leg-row.ui.h:1 +msgid "Hide intermediate stops and information" +msgstr "" + +#: ../data/ui/transit-leg-row.ui.h:2 +#, fuzzy +#| msgid "Show more results" +msgid "Show intermediate stops and information" +msgstr "さらに結果を表示" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "現在の位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "位置精度: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to parse XML document" +msgstr "Geo URIの解析に失敗しました" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "" + +#: ../src/application.js:103 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "アカウントの選択" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "読み込み中" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "場所の選択" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Facebookでチェックインする場所を見つけることができませんでした。次のリストか" +"ら1つ選択してください。" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Foursquareでチェックインする場所を見つけることができませんでした。次のリスト" +"から1つ選択してください。" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, javascript-format +msgid "Check in to %s" +msgstr "%sへチェックイン" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%sへチェックイン時に添えるコメントを書きます。" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:509 +msgid "An error has occurred" +msgstr "エラーが発生しました" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +#| msgid "Cannot find \"%s\" in the social service" +msgid "Cannot find “%s” in the social service" +msgstr "ソーシャルサービスにて \"%s\" を見つけることができません" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "この場所にチェックインするために適切な場所を見つけることができません" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"認証情報が失効しました。オンラインアカウント設定を開き、再度アカウントを認証" +"してください" + +#: ../src/contextMenu.js:96 +msgid "Route from here" +msgstr "ここからのルート" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "行き先を追加" + +#: ../src/contextMenu.js:100 +msgid "Route to here" +msgstr "ここまでのルート" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +msgid "Filesystem is read only" +msgstr "" + +#: ../src/exportViewDialog.js:158 +msgid "You do not have permission to save there" +msgstr "" + +#: ../src/exportViewDialog.js:160 +msgid "The directory does not exist" +msgstr "" + +#: ../src/exportViewDialog.js:162 +msgid "No filename specified" +msgstr "" + +#: ../src/exportViewDialog.js:170 +msgid "Unable to export view" +msgstr "" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:630 +msgid "Route request failed." +msgstr "ルート要求は失敗しました。" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:614 +#: ../src/openTripPlanner.js:728 +msgid "No route found." +msgstr "ルートが見つかりません。" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "開始!" + +#: ../src/layersPopover.js:62 +msgid "All Layer Files" +msgstr "" + +#: ../src/mainWindow.js:387 +msgid "Failed to connect to location service" +msgstr "位置情報サービスに接続できません" + +#: ../src/mainWindow.js:439 +msgid "translator-credits" +msgstr "" +"松澤 二郎 \n" +"victory \n" +"Ikuya Awashiro \n" +"Hajime Taira \n" +"日本GNOMEユーザー会 " + +#: ../src/mainWindow.js:442 +msgid "A map application for GNOME" +msgstr "GNOME 向け地図アプリケーション" + +#: ../src/mapView.js:354 +msgid "File type is not supported" +msgstr "" + +#: ../src/mapView.js:361 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open layer" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/mapView.js:397 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open GeoURI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/openTripPlanner.js:626 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "" + +#: ../src/osmConnection.js:448 +#, fuzzy +#| msgid "Position not found" +msgid "Object not found" +msgstr "位置が見つかりません" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "" + +#: ../src/osmEditDialog.js:118 ../src/placeBubble.js:159 +msgid "Website" +msgstr "" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:165 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours" +msgstr "営業時間: %s" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +#, fuzzy +#| msgid "Population: %s" +msgid "Population" +msgstr "人口: %s" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access" +msgstr "車いすでのアクセス: %s" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#, fuzzy +#| msgid "yes" +msgid "Yes" +msgstr "可能" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +msgid "No" +msgstr "" + +#: ../src/osmEditDialog.js:167 +#, fuzzy +#| msgid "limited" +msgid "Limited" +msgstr "制限あり" + +#: ../src/osmEditDialog.js:168 +#, fuzzy +#| msgid "designated" +msgid "Designated" +msgstr "車いす専用" + +#: ../src/osmEditDialog.js:171 +msgid "Internet access" +msgstr "" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "" + +#: ../src/osmEditDialog.js:288 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: ../src/osmEditDialog.js:340 +#, fuzzy +#| msgid "Select a place" +msgid "Select Type" +msgstr "場所の選択" + +#: ../src/osmEditDialog.js:458 +msgid "Done" +msgstr "" + +#: ../src/placeBubble.js:122 +#, fuzzy +#| msgid "Population: %s" +msgid "Population:" +msgstr "人口: %s" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "" + +#: ../src/placeBubble.js:133 +#, fuzzy +#| msgid "Opening hours: %s" +msgid "Opening hours:" +msgstr "営業時間: %s" + +#: ../src/placeBubble.js:138 +msgid "Internet access:" +msgstr "" + +#: ../src/placeBubble.js:143 +#, fuzzy +#| msgid "Wheelchair access: %s" +msgid "Wheelchair access:" +msgstr "車いすでのアクセス: %s" + +#: ../src/placeBubble.js:149 ../src/placeBubble.js:153 +msgid "Phone:" +msgstr "" + +#: ../src/placeEntry.js:190 +msgid "Failed to parse Geo URI" +msgstr "Geo URIの解析に失敗しました" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:178 ../src/translations.js:329 +msgid "yes" +msgstr "可能" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:185 +msgid "limited" +msgstr "制限あり" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:191 ../src/translations.js:335 +msgid "no" +msgstr "困難" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:198 +msgid "designated" +msgstr "車いす専用" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "" + +#: ../src/sendToDialog.js:179 +#, fuzzy +#| msgid "Failed to parse Geo URI" +msgid "Failed to open URI" +msgstr "Geo URIの解析に失敗しました" + +#: ../src/shapeLayer.js:92 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:285 +#, javascript-format +msgid "Estimated time: %s" +msgstr "所要時間: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:74 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:80 +#, fuzzy +#| msgid "Start!" +msgid "Start" +msgstr "開始!" + +#: ../src/transitLegRow.js:108 +msgid "Show walking instructions" +msgstr "" + +#: ../src/transitLegRow.js:109 +msgid "Hide walking instructions" +msgstr "" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:134 +#, javascript-format +msgid "Walk %s" +msgstr "" + +#: ../src/transitMoreRow.js:41 +msgid "Load earlier alternatives" +msgstr "" + +#: ../src/transitMoreRow.js:43 +msgid "Load later alternatives" +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:248 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:275 +#, fuzzy, javascript-format +#| msgid "%f min" +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%f 分" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:286 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:292 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:611 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "24時間体制" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "日の出から日没まで" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "毎日" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "祝日" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "学校休日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "休業" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "正確" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f 時間" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f 分" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f 秒" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%f km" +msgstr "%f km" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%f m" +msgstr "%f m" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%f mi" +msgstr "%f マイル" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%f ft" +msgstr "%f フィート" + +#~ msgid "Country code: %s" +#~ msgstr "国コード: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "直近の既知の位置と精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "直近の既知の位置 (緯度と経度を度単位で) と精度 (メートル単位) です。" + +#~ msgid "Description of last known location of user." +#~ msgstr "ユーザーの直近の既知の位置の詳細です。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "直近の既知の位置が、ユーザーが手動で設定したものかどうかの設定です。" + +#~ msgid "I’m here!" +#~ msgstr "私はここにいます!" + +#~ msgid "To" +#~ msgstr "目的地" + +#~ msgid "From" +#~ msgstr "出発地点" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星写真" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 00000000..3ff575e5 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,2106 @@ +# Kazakh translation for gnome-maps. +# Copyright (C) 2014 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Baurzhan Muftakhidinov , 2014-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-28 20:21+0500\n" +"Last-Translator: Baurzhan Muftakhidinov \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME карталары" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Дүниежүзілік орындарды табу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карталар қолданбасы сізге дүниежүзі карталарына жылдам қатынауды мүмкін " +"қылады. Оның көмегімен керек болған орынды оның орналасқан қаласын не " +"көшесін енгізу арқылы табуға, немесе доспен кездесу үшін орынды табуға " +"болады." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карталар қолданбасы қауымдастық ұсынатын OpenStreetMap дерекқорын қолданады, " +"оны дүниежүзінің әр жеріндегі мыңдаған адамдар жасайды." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME жобасы" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карталар" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Қарапайым карталар қолданбасы" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Карталар;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Картада сіздің орналасуыңызды көрсете алады." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "соңғы қаралған орналасу" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Соңғы қаралған орналасудың координаттары." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштабтау" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабтау деңгейі" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Карта түрі" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Көрсетілетін карта түрі (көше, әуе және т.б.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Терезе өлшемі" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Терезе өлшемі (ені мен биіктігі)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Терезе орны" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Терезе орны (x және y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Терезе максималды етілген" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Терезенің максималды күйі" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Іздеу нәтижелерінің максималды саны" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Геокодын іздеуі қайтаратын нәтижелерінің максималды саны." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Соңғы орындардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Соңғы болған орындардың қаншауын сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Соңғы бағыттардың сақталатын саны" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Соңғы бағыттардың нешеуін сақтау керек." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare көмегімен белгіленудің жекелік баптауы" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Foursquare көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +"мәндері: public, followers не private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare көмегімен белгіленудің Facebook ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Facebook тіркелгісіне жазба ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare көмегімен белгіленудің Twitter ішіне жариялауы" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare көмегімен белгілену жасалса, оны ол Foursquare тіркелгісімен " +"байланысқан Twitter тіркелгісіне твит ретінде жариялау керек пе, соны " +"анықтайды." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap пайдаланушы аты немесе эл. пошта адресі" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Пайдаланушы OpenStreetMap деректерін түзету үшін кірген ба, соны анықтайды." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Бағдарды құрастыру кезінде соңғы қолданылған көлік түрі" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Түнгі режимі" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Қолданба түнгі режимінде ме, соны көрсетеді." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Гибридті әуе мозаикасын пайдалану" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Әуе мозаикасы гибридтік стильді (белгілермен) пайдалануы керек пе." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Көрінуі" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Facebook-те жариялау" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Twitter-де жариялау" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "Ба_с тарту" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Б_елгілену" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Публикалық" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Сонымнан ерушілер" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Жеке" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Осыдан бағдар" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Аралық мақсатты қосу" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Осыған дейін бағдар" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Осында не бар?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Орналасуды көшіріп алу" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Көріністі экспорттау" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Э_кспорт" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Бағдар және маркерлерді қоса" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Карта түрін таңдаңыз" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Кішірейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Үлкейту" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Бағдарды баспаға шығару" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Таңдамалыларды көрсету/жасыру" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Жалпы" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Пернетақта жарлықтарын көрсету" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Іздеу" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Бағдар жоспарлаушысын іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Бағдарды баспаға шығару" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Шығу" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Карта көрінісі" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Үлкейту" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Кішірейту" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Масштабты іске қосу/сөндіру" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ағымдағы орналасуға өту" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Көше көрінісіне ауысу" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Ауадан көрінісіне ауысу" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Белгілерді көрсету" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Қабатты (shape) ашу…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Орнасуыңызды анықтау үшін орналасулар қызметін іске қосыңыз" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Бас тарту" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Орналасу баптаулары" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Түнгі режимі" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісін баптау" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Сурет ретінде экспорттау" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "П_ернетақта жарлықтары" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Карталар қолданбасы туралы" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Негізгі мәзірді ашу" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Карталар желіге қосылмаған!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карталар дұрыс жұмысы үшін интернетпен байланыс керек, бірақ ондай байланыс " +"табылмады." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Байланысу және прокси баптауларын тексеріңіз." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap тіркелгісі" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Карталарды түзету үшін кіріңіз" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap тіркелгісі көмегімен\n" +"карталарды жақсартуға көмектесіңіз." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Эл. пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Тіркелу" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Кіру" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Кешіріңіз, бұл жасамады. Қайталап көріңіз, немесе\n" +"пароліңізді тастау үшін, OpenStreetMap сайтын шолыңыз." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Растау коды сәйкес болмады, қайталап көріңіз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Жоғарыда көрсетілген растау кодын енгізіңіз" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Растау" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Кіру орындалды" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Сіздің OpenStreetMap тіркелгіңіз белсенді." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Шығу" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Көше" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Үй нөмірі" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Пошталық индексі" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Қала" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Түрі" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Жоқ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Өрісті қосу" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Пікір" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Карта өзгерістері OpenStreetMap деректерін қолданатын\n" +"барлық карталарда көрінетін болады." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Жақында қолданылған" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Келесі" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нәтижелер табылмады" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Қате орын алды" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Бағдар ретін ауыстыру үшін тартып апарыңыз" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Орналасуды ашу" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Көшіру" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Қайда жіберу…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Белгілену…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Қабатты (shape) ашу" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Ашу" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Көрінуін іске қосу/сөндіру" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Бағдарды іздеу GraphHopper ұсынады" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Қоғамдық көліктің маршруттары үшінші жақты қызметтермен\n" +"ұсынылған.\n" +"GNOME көрсетілген бағдарлар және уақыттар үшін жауапты емес.\n" +"Кейбір провайдерлер тасымалдаудың барлық қолжетімді түрлерін қамтымауы " +"мүмкін\n" +"екенін ескеріңіз, мысалы, ұлттық провайдер авиакомпанияларды қамтымауы " +"мүмкін және\n" +"жергілікті провайдер аймақтық поездарды қамтымауы мүмкін\n" +"Көрсетілген атаулар және брендтер тіркелген сауда белгілері ретінде " +"қарастырылуы тиіс." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Көбірек нәтижелерді көрсету" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты жасыру" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Аралық аялдамалар және ақпаратты көрсету" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Қазір кету" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Кету, " + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Жету, " + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Көрсету" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобустар" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамвайлар" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Пойыздар" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Паромдар" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Ұшақтар" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Орналасумен бөлісу" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Жаңа бағдарға қосу" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Бағыттар" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Таңдамалы ретінде белгілеу" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ішінде түзету" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Орналасуды қосу үшін масштабты үлкейтіңіз!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Үлкейту" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Бумадан мозаикалық құрылымды табу сәтсіз аяқталды" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML құжатын талдау қатемен аяқталды" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Керек атрибуттар жетіспейді" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM элементін табу мүмкін емес" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Жергілікті плиткалық бумалар құрылымына дейінгі жол" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Жергілікті мозаика бумасының өлшемі" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Бағдарлама нұсқасын көрсету" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Желінің қолжетімділігін елемеу" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Тіркелгіні таңдаңыз" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Жүктелуде" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Орынды таңдаңыз" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Карталар Foursquare көмегімен белгілену үшін орынды таба алмады. Тізімнен " +"біреуін таңдаңыз." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s жерінде белгілену" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s жерінде белгіленудің міндетті емес хабарламасын жазыңыз." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "\"%s\" орнын әлеуметтік қызметтен табу мүмкін емес" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Бұл орналасуда белгілену үшін жарамды орынды табу мүмкін емес" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Тіркелу деректерінің мерзімі аяқталған, бұл тіркелгіге кіру және оны іске " +"қосу үшін желілік тіркелгілерді ашыңыз" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Осында ешнәрсе табылмады!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Орналасу картаға қосылды. Бірақ, ол картада және іздеу нәтижелерінде " +"көрінуіне дейін біршама уақыт өту керек болуын ескертіңіз." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта, %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлдық жүйе тек оқу үшін қолжетерлік" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Осында сақтау үшін керек рұқсаттарыңыз жоқ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Бума жоқ болып тұр" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Файл аты көрсетілмеген" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Көріністі экспорттау мүмкін емес" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Ағымдағы орналасу" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "координаттар жарамсыз" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "талдау қатесі" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "геометрия белгісіз" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Бағдар сұранымы сәтсіз." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Бағдар табылмады." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Бастау!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Барлық қабаттар файлдары" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Орналасулар қызметіне байланысу сәтсіз аяқталды" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Baurzhan Muftakhidinov " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "GNOME үшін карталар қолданбасы" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. және GNOME Maps авторлары" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Карта деректерін ұсынған %s және үлес қосушылар" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Карта мозаикасын ұсынған %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Іздеуді %s ұсынған, %s негізінде" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Қабатты ашу сәтсіз аяқталды" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Жалғастыруды қалайсыз ба?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Жалпы өлшемі %s МБ болатын файлдарды ашуға дайынсыз. Бұл жүктелуге біраз " +"уақытты алуы мүмкін" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Файл түріне қолдау жоқ" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI ашу сәтсіз аяқталды" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Пайдаланушы аты не паролі қате" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Сәтті" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Қате сұраным" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Объект табылмады" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Ерегесу, біреу бұл объектті жаңа ғана түзеткен" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Объект өшірілген" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Жол немесе байланыс жоқ ұрпақтарға сілтеп тұр" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Аты" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Ресми аты. Әдетте бұл белгілерде көрсетіледі." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адресі" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Веб сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Бұл дұрыс URL емес. http:// немесе https:// қосылғанын тексеріңіз." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Ресми веб сайты. Оңайлатылған түрін қолдануға тырысыңыз, мысалы, http://" +"example.com (http://example.com/index.html емес)." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Телефон нөмірі. +таңбасынан басталатын халықаралық пішімді қолданыңыз. " +"Жергілікті жекелік заңдарды ескертіңіз, әсіресе, жеке нөмірлер үшін." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Эл. пошта" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Бұл дұрыс эл. пошта адресі емес. mailto: хаттама префиксінің қосылмағанын " +"тексеріңіз." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Сұраулар үшін байланыс эл. пошта адресі. Публикалық пайдалануға арналған эл. " +"пошта адрестерін ғана қосыңыз." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Қолданылатын пішімі тіл коды және мақала атауынан тұруы керек (мыс, ”kk:" +"Мақала атауы”)." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Жұмыс істеу уақыты" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Пішім көмегін алу үшін белгі сілтемесін қараңыз." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Халық саны" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Теңіз деңгейінен биіктігі" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Нүктенің биіктігі (теңіз деңгейінен), метр есебімен." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Мүгедектер арбасымен қатынау" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Иә" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Жоқ" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Шектелген" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Арнайы" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Интернетпен байланыс" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Сымды" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Қызмет" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Алып кету" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Тек қана" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Дін" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Христиан" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуциандық" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Бірнеше дін" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Паганизм" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафариандық" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Сайентология" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Шинто" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спиритуализм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Таоизм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унитариандық универсализм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Әжетханалар" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Естелік" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Басқа карталар жасаушыларға элемент туралы айқын емес ақпаратты жеткізуге " +"қолданатын ақпарат, немесе оны жасау кезіндегі автордың пікірі, немесе " +"болашақ жақсартулар туралы кеңестер." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ішіне қосу" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Түрін таңдаңыз" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Дайын" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Аталмаған орын" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI талдау сәтсіз аяқталды" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координаттар" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Дәлдік" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Дәлдігі: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Телефон нөмірі" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Алып кету мүмкіндігі бар" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Алып кету мүмкіндігі жоқ" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Тек алып кетуді ұсынады" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Интернетпен публикалық байланыс" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Интернетпен байланыс жоқ" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Публикалық Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Интернетпен сымды байланыс" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Пайдалану үшін қолжетімді компьютерлер" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Интернетпен көмек көрсетуі бар" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Дәретханалар жоқ" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Қолжетімді дәретханалар" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Мүгедектер арбасымен қатынау" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Мүгедектер арбасымен шектелген қатынау" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Мүгедектер арбасымен қатынау жоқ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Мүгедектер арбасын қолданушыларына арналған" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "Теңіз деңгейінен %s төмен" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Теңіз деңгейінде" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Дін:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Орын OpenStreetMap ішінен табылмады" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL ішіндегі координаталар жарамсыз" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL түріне қолдау жоқ" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "%s және %s арасында" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Баспаға шығару үшін картаны жүктеп алу" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Баспаға шығару тым көп уақыт алса, оны үзе аласыз" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Баспаға шығару туралы" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Орналасуы бойынша қосу" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Орналасуы бойынша өшіру" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Кері бағыт" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s %s ішіне қосу" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI ашу сәтсіз аяқталды" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s көмегімен ашу" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "файлды жүктеу сәтсіз" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Шамамен уақыты: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруттарды ұсынған %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s адресінен бастау" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Бастау" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Жүріс %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s адресіне жету" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Жету" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Жүріс ақпаратын көрсету" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Жүріс ақпаратын жасыру" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ертерек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Кейінірек балама нұсқаларын жүктеу" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ертерек балама нұсқалары табылмады." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Кейінірек балама нұсқалары табылмады." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Бұл бағдар үшін кесте жоспары табылмады." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Бұл маршрут үшін ұсынушы табылмады." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сағат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сағат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Тәулік бойы" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Күн шыққаннан бастап күн батқанға дейін" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Күнде" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Мемлекеттік мерекелер" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Мектеп демалыстары" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ашық емес" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Белгісіз" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Дәл" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s сағ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s сағ %s мин" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s сек" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s миля" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s фут" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Бұл плагині соңғы келуді қолдамайды" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s көмегімен жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Жалғастыру" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s жерінде солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Солға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s жерінде сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Сол жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s жерінде сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Сол жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s жерінде оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Оңға бұрылу" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s жерінде оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Оң жаққа жайлап бұрылу" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s жерінде оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Оң жаққа лезде бұрылу" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Сақиналы қиылыстан %s шығысын қолданыңыз" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Сақиналы қиылыстан %s үшін шығысын қолданыңыз" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Сақиналы қиылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Лифтті қолданып, %s жерінен шығу" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Лифтті қолдану" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s үшін сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Сол жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s үшін оң жақ кері бұрылысын қолдану" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Оң жақ кері бұрылысын қолдану" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Сонымен қатар, орналасулардың нақты түрлерін де іздеуге болады, мысалы " +#~ "\"Гостиницы Астаны возле Байтерека\" немесе \"Hotels near Gorky Park, " +#~ "Almaty\" (қазақша іздеу әлі мүмкін емес)." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook көмегімен белгіленудің жекелік баптауы" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Facebook көмегімен белгіленудің соңғы қолданылған жекелік баптауы. Мүмкін " +#~ "мәндері EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS және SELF." + +#~ msgid "Everyone" +#~ msgstr "Әркім" + +#~ msgid "Friends of friends" +#~ msgstr "Достардың достары" + +#~ msgid "Just friends" +#~ msgstr "Тек достар" + +#~ msgid "Just me" +#~ msgstr "Тек мен" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Карталар Facebook көмегімен белгілену үшін орынды таба алмады. Тізімнен " +#~ "біреуін таңдаңыз." + +#~ msgid "Find a Route" +#~ msgstr "Бағдарды табу" + +#~ msgid "Check in here" +#~ msgstr "Осында белгілену" + +#~ msgid "Show more information" +#~ msgstr "Көбірек ақпарат шығару" + +#~ msgid "Population:" +#~ msgstr "Халық саны:" + +#~ msgid "Altitude:" +#~ msgstr "Теңіз деңгейінен биіктігі:" + +#~ msgid "Opening hours:" +#~ msgstr "Жұмыс істеу уақыты:" + +#~ msgid "Internet access:" +#~ msgstr "Интернетпен байланыс:" + +#~ msgid "Toilets:" +#~ msgstr "Әжетханалар:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Мүгедектер арбасымен қатынау:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "иә" + +#~ msgid "limited" +#~ msgstr "шектелген" + +#~ msgid "no" +#~ msgstr "жоқ" + +#~ msgid "designated" +#~ msgstr "арнайы" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL жарамсыз" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "сымды" + +#~ msgid "terminal" +#~ msgstr "терминал" + +#~ msgid "service" +#~ msgstr "қызмет" + +#~ msgid "Primary menu" +#~ msgstr "Басты мәзір" + +#~ msgid "Don’t have an account?" +#~ msgstr "Тіркелгіңіз жоқ па?" + +#~ msgid "%f h" +#~ msgstr "%f сағ" + +#~ msgid "%f min" +#~ msgstr "%f мин" + +#~ msgid "%f s" +#~ msgstr "%f с" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Басқа қолданбамен ашу" + +#~ msgid "Press enter to search" +#~ msgstr "Іздеу үшін enter басыңыз" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Бағдарды іздеу OpenTripPlanner ұсынады" + +#~ msgid "Add destination" +#~ msgstr "Мақсатты қосу" + +#~ msgid "Quit" +#~ msgstr "Шығу" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Қабатты (shape) ашу…" + +#~ msgid "OK" +#~ msgstr "ОК" + +#~ msgid "Load Map Layer" +#~ msgstr "Карта қабатын жүктеу" + +#~ msgid "Open Layer" +#~ msgstr "Қабатты ашу" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миля" + +#~ msgid "%f ft" +#~ msgstr "%f фут" + +#~ msgid "Position not found" +#~ msgstr "Орны табылмады" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON файлын талдау қатемен аяқталды" + +#~ msgid "Country code: %s" +#~ msgstr "Ел коды: %s" + +#~ msgid "Population: %s" +#~ msgstr "Халық саны: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Мүгедектер арбасымен қатынау: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Соңғы белгілі орналасу және дәлдігі" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Соңғы белгілі орналасу (ендігі және бойлығы, градуспен) және дәлдігі " +#~ "(метрмен)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Пайдаланушының соңғы белгілі орналасудың сипаттамасы." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Соңғы белгілі орналасуды пайдаланушы қолмен көрсеткен ба, соны анықтайды." + +#~ msgid "I’m here!" +#~ msgstr "Мен осындамын!" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 00000000..513961bb --- /dev/null +++ b/po/kn.po @@ -0,0 +1,172 @@ +# Kannada translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# prabodhcp , 2013 +# Shankar Prasad , 2013. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps gnome-3-10\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-18 20:54+0000\n" +"PO-Revision-Date: 2013-12-30 17:35+0630\n" +"Last-Translator: Shankar Prasad \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you're looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as \"Pubs near Main Street, Boston\" or \"WiFi " +"Access near Alexanderplatz, Berlin\"
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "ಮ್ಯಾಪ್ಸ್" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ಒಂದು ಸರಳ ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "ನಕ್ಷೆಗಳು;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "ಕಿಟಕಿ ಗಾತ್ರ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "ಕಿಟಕಿಯ ಗಾತ್ರ (ಉದ್ದ ಮತ್ತು ಅಗಲ)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (x and y)." +msgstr "ಕಿಟಕಿಯ ಸ್ಥಾನ (x ಮತ್ತು y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximized state" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Last known location was set manually by user." +msgstr "" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "ಕುರಿತು" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "ನಿರ್ಗಮಿಸು" + +#: ../src/context-menu.ui.h:1 +msgid "What's here?" +msgstr "ಇಲ್ಲೇನಿದೆ?" + +#: ../src/context-menu.ui.h:2 +msgid "I'm here!" +msgstr "ನಾನಿಲ್ಲಿದ್ದೇನೆ!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "prabodhcp , ಶಂಕರ್ ಪ್ರಸಾದ್ " + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME ಗಾಗಿ ಒಂದು ನಕ್ಷೆಗಳ ಅನ್ವಯ" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "ರಸ್ತೆ" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ಉಪಗ್ರಹ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "ಗೊತ್ತಿರದ" + +#. Translators: Accuracy of user location information +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "ನಿಖರ" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " km²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. +#: ../src/userLocation.js:62 +#, c-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"ಸ್ಥಾನ ನಿಖರತೆ: %s" + diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 00000000..5df9690d --- /dev/null +++ b/po/ko.po @@ -0,0 +1,2057 @@ +# Korean translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Seong-ho Cho , 2013-2019. +# Kwangseob Jeong , 2018. +# Jeeyong Um , 2019-2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-10 00:09+0900\n" +"Last-Translator: Jeeyong Um \n" +"Language-Team: GNOME Korea \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "그놈 지도" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "전세계의 장소를 찾아봅니다" + +# NOTE: false alarm +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"지도로 전 세계 모든 지도에 빠르게 접근할 수 있습니다. 도시, 거리, 친구를 만" +"날 여러분이 찾는 장소를 빠르게 찾을 수 있습니다." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"지도는 전세계 수많은 사람이 함께 만든 OpenStreenMap 데이터베이스를 사용합니" +"다." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "그놈 프로젝트" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "지도" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "간단한 지도 프로그램" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;지도;맵;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "사용자 위치를 지도에 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "최근 본 위치" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "최근 살펴본 위치의 좌표." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "확대" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "확대 수준" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "지도 형식" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "지도 표시 형식(거리, 항공 등)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "창 크기" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "창 크기(너비 및 높이)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "창 위치" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "창 위치(가로 및 세로)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "창 최대화" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "창 최대화 상태" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "최대 검색 결과 수" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "지오코드 검색 결과의 최대 결과 갯수." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "최근 위치를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "최근 방문할 위치를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "최근 경로를 저장할 갯수" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "최근 방문 경로를 저장할 갯수." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "포스퀘어 체크인 개인 정보 설정" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"최근에 사용한 포스퀘어 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습니" +"다: 공개, 팔로워, 비공개." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "페이스북에 포스퀘어 체크인 게시글 보내기" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 페이스북 계정으로 체크인 게시글을 올릴 경우 표시합니" +"다." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "트위터 포스퀘어 체크인 트윗 보내기" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"포스퀘어 계정에 연동한 트위터 계정으로 체크인 트윗을 올릴 경우 표시합니다." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 사용자 이름 및 전자메일 주소" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"사용자가 OpenStreetMap 데이터를 편집하려고 접속했는지 여부를 나타냅니다." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "최근 확인한 경로 안내 대중교통" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "야간 모드" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "프로그램이 야간 모드 상태인지 여부." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "하이브리드 항공 타일 사용" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "항공 타일에서 (레이블이 표시된) 하이브리드 스타일 사용 여부." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "공개 범위" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "페이스북에 게시" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "트위터에 게시" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "취소(_C)" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "체크인(_H)" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "공개" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "팔로워" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "비공개" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "여기서부터 경로 표시" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "경유지 추가" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "여기까지 경로 표시" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "여기가 어딘가요?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "위치 복사" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "내보내기 보기" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "내보내기(_E)" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "경로 및 표시 포함" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "지도 형식을 선택하세요" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "축소" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "확대" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "경로 인쇄" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "즐겨찾기 토글" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "경로 계획 도우미 토글" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "일반" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "바로 가기 표시" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "검색" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "경로 계획 도우미 전환" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "경로 인쇄" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "끝내기" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "지도 보기" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "확대" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "축소" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "축척 바꾸기" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "현재 위치로 이동" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "거리 보기로 전환" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "공중 보기로 전환" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "도형 레이어 열기" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "레이블 표시" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "도형 레이어 열기…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "위치 정보 서비스에서 현재 위치 정보를 찾도록 켜기" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "취소" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "위치 정보 설정" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "야간 모드" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap 계정 설정" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "이미지로 내보내기" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "키보드 바로 가기 키(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "지도 정보" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "메인 메뉴 열기" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "맵은 오프라인 상태입니다!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"지도가 제대로 동작하려면 인터넷에 연결해야하지만, 연결을 찾을 수 없습니다." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "연결 및 프록시 설정을 확인하십시오." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 계정" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"지도를 편집하려면 접속하십시오" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap 계정으로\n" +"지도 개선을 도와주십시오." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "전자메일" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "암호" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "가입" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "접속" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"죄송하지만 동작하지 않습니다. 다시 시도하시거나\n" +"OpenStreetMap을 방문하여 암호를 다시 설정하십시오." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "인증 코드가 일치하지 않습니다. 다시 시도하십시오." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "아래에 나타난 인증 코드를 입력하십시오" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "검증" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "접속함" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap 계정을 활성화했습니다." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "나가기" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "거리" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "지번" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "우편 번호" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "도시" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "형식" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "없음" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "필드 추가" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "설명" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"OpenStreetMap 데이터를 활용하는 모든 지도에\n" +"바뀐 지도가 나타납니다." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "최근 사용" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "다음" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "결과가 없습니다" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "오류가 발생했습니다" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "경로를 바꾸려면 끌어다놓으십시오" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "위치 열기" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "복사" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "보내기…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "체크인…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "도형 레이어 열기" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "열기(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "보기 상태 전환" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "그래프 하퍼 경로 검색" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"제 3자 서비스에서 제공하는 대중 교통 운행 일정입니다.\n" +"그놈에서는 운행 경로와 일정의 정확성을 보증할 수 없습니다.\n" +"서비스 제공자에 따라 이용 가능한 모든 교통 수단을 제공하는 것은 아님에\n" +"주의해주세요. 예를 들어 전국 단위 제공자는 항공편을 제공하지 않는다거나\n" +"지역 제공자가 지방 열차편 정보를 제공하지 않을 수 있습니다.\n" +"명칭과 브랜드는 상표법 적용이 가능할 경우 등록 상표로 간주합니다." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "더 많은 결과 보기" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "중간 정류장 및 정보 숨김" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "중간 정류장 및 정보 표시" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "지금 출발" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "출발 수단" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "도착 수단" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "보이기" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "버스" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "트램" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "열차" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "지하철" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "선박" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "비행기" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "위치 공유" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "새 경로에 추가" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "방향" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "즐겨찾기 표시" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap에서 편집" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "추가할 위치를 확대합니다!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "확대" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "디렉터리에서 타일 구조 찾기에 실패했습니다" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML 문서 해석에 실패했습니다" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "필요한 속성이 빠졌습니다" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM 구성 요소를 찾을 수 없습니다" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "로컬 타일 디렉터리 구조 경로" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "로컬 타일 디렉터리의 타일 크기" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "프로그램 버전 보기" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "네트워크 사용 가능 여부 무시" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[<파일>…|]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "계정을 선택하십시오" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "불러오는 중" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "장소를 선택하십시오" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"포스퀘어에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십시" +"오." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s에 체크인" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s에 체크인할 추가 메시지를 작성합니다." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "소셜 서비스에서 “%s”을(를) 찾을 수 없습니다" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "이 위치를 체크인할 적당한 장소를 찾을 수 없습니다" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"인증 기한이 지났습니다. 온라인 계정을 열어 접속한 후 이 계정을 활성화하십시오" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "여기에 아무것도 없습니다!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"지도에 위치를 추가했습니다. 지도와 검색 결과에 나타나기까지 시간이 조금 걸릴 " +"수 있는 점을 참고하십시오." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f의 지도.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "읽기 전용 파일 시스템입니다" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "해당 위치를 저장할 권한이 없습니다" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "디렉터리가 없습니다" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "파일 이름을 지정하지 않았습니다" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "보기 화면을 내보낼 수 없습니다" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "현재 위치" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "잘못된 좌표" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "해석 오류" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "알 수 없는 지형 정보" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "경로 요청에 실패했습니다." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "경로가 없습니다." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "시작!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "모든 레이어 파일" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "위치 서비스 연결에 실패했습니다" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"조성호 \n" +"정광섭 \n" +"엄지용 " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "그놈용 지도 프로그램" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s와(과) 기여자의 지도 데이터" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "%s에서 제공한 지도 타일" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "%s에서 %s을(를) 활용한 검색 기능 제공함" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "레이어 열기에 실패했습니다" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "계속 하시겠습니까?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "%s MB 크기의 파일 열기를 시도하였습니다. 이 작업은 시간이 걸립니다" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "파일 형식을 지원하지 않습니다" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI 열기에 실패했습니다" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "사용자 이름 또는 암호가 올바르지 않습니다" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "성공" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "잘못된 요청" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "객체가 없습니다" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "누군가가 객체를 수정하여 바꾼 동작이 중복됐습니다" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "객체를 삭제했습니다" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "길 또는 관계는 '없는 하위 구성 요소'를 참조합니다" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "이름" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "공식 이름입니다. 보통 이정표에 나타납니다." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "주소" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "웹사이트" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"올바른 URL이 아닙니다. http:// 또는 https:// 를 포함하고 있는지 확인해주세요." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"공식 웹사이트입니다. http://example.com/index.html 대신 http://example.com과 " +"같은 식의 기본 URL 형식을 활용하십시오." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "전화번호" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"전화번호입니다. + 기호로 시작하는 국제 전화번호 형식을 사용하십시오. 개인 전" +"화번호를 입력할 때 해당 국가의 개인 정보 보호법을 따르십시오." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "전자메일" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "올바른 전자메일 주소가 아닙니다. mailto:를 제외했는지 확인하십시오." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"문의사항은 전자메일로 연락주십시오. 공개적으로 사용할 전자메일 주소만 추가하" +"십시오." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "위키피디아" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"사용하는 형식에는 “ko:게시글 제목”처럼 언어 코드 및 게시글 제목을 넣어야합니" +"다." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "개장 시간" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "형식 도움말을 보려면 레이블의 링크를 살펴보십시오." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "인구" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "고도" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "미터 단위의 높이(해발고도)입니다." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "휠체어 접근" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "예" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "아니요" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "제한" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "지정됨" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "인터넷 접속" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "무선 네트워크" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "유선" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "터미널" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "서비스" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "포장 가능" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "포장만" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "종교" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "애니미즘" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "바하이교" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "불교" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "까오다이교" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "크리스트교" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "유교" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "힌두교" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "자이나교" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "유대교" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "이슬람교" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "다신교" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "켈트 파가니즘" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "FSM교" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "사이언톨로지" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "신토(しんとう)" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "시크교" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "심령술" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "도교" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "유니테리안 유니버설리즘" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "부두교" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "야지디교" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "조로아스터교" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "화장실" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "참고" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"요소, 작성자의 작성 의도, 사후 개선을 위한 힌트에 대해 명확하지 않은 정보를 " +"알리려는 용도로 사용하는 정보입니다." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap에 추가" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "형식 선택" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "완료" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "이름 없는 장소" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "지리 URL 해석에 실패했습니다" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "좌표" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "위치 정확도" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "위치 정확도: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "전화번호" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "포장 제공" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "포장 제공하지 않음" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "포장만 가능" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "공공 인터넷 접속" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "인터넷 접속 불가" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "공개 와이파이" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "유선 인터넷 접속" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "컴퓨터 사용 가능" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "인터넷 지원 가능" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "화장실 사용 불가" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "화장실 사용 가능" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "휠체어 접근 가능" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "제한적 휠체어 접근성" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "휠체어 접근 불가" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "휠체어 사용자용" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "해수면 밑 %s" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "해수면" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "종교시설:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap에 해당 위치가 없습니다" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL 좌표가 올바르지 않습니다" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL을 지원하지 않습니다" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "%s에서 %s까지" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "인쇄할 바둑판 배치 지도 불러오는 중" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "인쇄 시간이 오래걸린다면 취소할 수 있습니다" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "인쇄 취소" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "현재 위치 추가" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "현재 위치 제거" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "역경로" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s을(를) %s에 추가" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI 열기에 실패했습니다" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s 프로그램으로 열기" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "파일 불러오기에 실패했습니다" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "예상 시간: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s에서 제공한 일정" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s에 시작" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "시작" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s 걷기" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s에 도착" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "도" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "도보 안내 표시" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "도보 안내 숨김" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "이른 대안 수단 불러오기" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "다음 대안 수단 불러오기" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "이른 대안 수단이 없습니다." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "다음 대안 수단이 없습니다." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e일" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "이 경로의 시각표 데이터가 없습니다." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "이 경로의 제공자가 없습니다." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s분" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s시간" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s시간" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "하루 종일" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "일출부터 일몰까지" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "매일" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "공휴일" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "방학" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "열지 않음" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s~%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "알 수 없음" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "정확함" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s시간" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s시간 %s분" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s분" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s초" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s 킬로미터" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s 미터" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s 마일" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s 피트" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "이 플러그인은 최근 도착 시간을 지원하지 않습니다" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s에서 계속 진행" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "계속 진행" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s에서 좌회전" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "좌회전" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s에서 살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "살짝 좌회전" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s에서 크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "크게 좌회전" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s에서 우회전" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "우회전" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s에서 살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "살짝 우회전" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s에서 크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "크게 우회전" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "로터리에서 %s 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "로터리에서 %s 쪽 출구로 나감" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "로터리로 진입" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "엘리베이터 탑승 후 %s에서 내림" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "엘리베이터 탑승" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 쪽으로 왼쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "왼쪽으로 유턴" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 쪽으로 오른쪽 유턴" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "오른쪽으로 유턴" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "“보스턴 번화가 근처의 술집” 또는 “베를린 알렉산더플라츠 근처의 호텔”과 같" +#~ "은 지정된 형식의 위치도 검색할 수 있습니다." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "페이스북 체크인 개인 정보 설정" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "최근 사용한 페이스북 체크인 개인 정보 설정입니다. 가능한 값은 다음과 같습" +#~ "니다: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, SELF." + +#~ msgid "Everyone" +#~ msgstr "전체 공개" + +#~ msgid "Friends of friends" +#~ msgstr "친구의 친구" + +#~ msgid "Just friends" +#~ msgstr "친구만 보기" + +#~ msgid "Just me" +#~ msgstr "나만 보기" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "페이스북에 체크인할 장소를 찾을 수 없습니다. 다음 목록에서 하나를 선택하십" +#~ "시오." + +#~ msgid "Check in here" +#~ msgstr "이곳을 체크인" + +#~ msgid "Show more information" +#~ msgstr "더 많은 정보 표시" + +#~ msgid "Population:" +#~ msgstr "인구수:" + +#~ msgid "Altitude:" +#~ msgstr "고도:" + +#~ msgid "Opening hours:" +#~ msgstr "영업 시간:" + +#~ msgid "Internet access:" +#~ msgstr "인터넷 접속:" + +#~ msgid "Toilets:" +#~ msgstr "화장실:" + +#~ msgid "Wheelchair access:" +#~ msgstr "휠체어 접근:" + +#~ msgid "Phone:" +#~ msgstr "전화번호:" + +#~ msgid "yes" +#~ msgstr "예" + +#~ msgid "limited" +#~ msgstr "제한함" + +#~ msgid "no" +#~ msgstr "아니요" + +#~ msgid "designated" +#~ msgstr "지정됨" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL이 올바르지 않습니다" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "유선" + +#~ msgid "terminal" +#~ msgstr "터미널" + +#~ msgid "service" +#~ msgstr "서비스" + +#~ msgid "Don’t have an account?" +#~ msgstr "계정이 없습니까?" + +#~ msgid "%f h" +#~ msgstr "%f시간" + +#~ msgid "%f min" +#~ msgstr "%f분" + +#~ msgid "%f s" +#~ msgstr "%f초" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner 경로 검색" + +#~ msgid "Add destination" +#~ msgstr "목적지 추가" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "다른 프로그램으로 열기" + +#~ msgid "Press enter to search" +#~ msgstr "검색할 단어를 입력하십시오" + +#~ msgid "Quit" +#~ msgstr "끝내기" + +#~ msgid "Open Shape Layer…" +#~ msgstr "도형 레이어 열기…" + +#~ msgid "OK" +#~ msgstr "확인" + +#~ msgid "Load Map Layer" +#~ msgstr "맵 레이어 불러오기" + +#~ msgid "Open Layer" +#~ msgstr "레이어 열기" + +#~ msgid "%f km" +#~ msgstr "%f킬로미터" + +#~ msgid "%f m" +#~ msgstr "%f미터" + +#~ msgid "%f mi" +#~ msgstr "%f마일" + +#~ msgid "%f ft" +#~ msgstr "%f피트" + +#~ msgid "Country code: %s" +#~ msgstr "국가 기호: %s" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 00000000..aa7e5314 --- /dev/null +++ b/po/lt.po @@ -0,0 +1,2106 @@ +# Lithuanian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Aurimas Černius , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 17:55+0300\n" +"Last-Translator: Aurimas Černius \n" +"Language-Team: Lietuvių \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Gtranslator 40.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME žemėlapiai" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Rasti vietas aplink pasaulį" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Žemėlapiai leidžia jums lengvai pasiekti pasaulio žemėlapius. Ši programa " +"leidžia greitai rasti ieškomą vietą naudojant paiešką pagal miestą ar gatvę " +"bei rasti vietą susitikimui su draugu." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Žemėlapiai naudoja OpenStreetMap duomenų bazę, kurią sukūrė tūkstančiai " +"žmonių iš viso pasaulio." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME projektas" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Žemėlapiai" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Paprasta žemėlapių programa" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Žemėlapiai;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Leidžia parodyti žemėlapyje jūsų vietą." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "paskutinė žiūrėta vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Paskutinės žiūrėtos vietos koordinatės." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mastelis" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mastelis" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Žemėlapio tipas" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Rodomas žemėlapio tipas (gatvių, oro, ir t. t.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Lango dydis" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Lango dydis (plotis ir aukštis)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Lango padėtis" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Lango padėtis (X ir Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Langas išdidintas" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Lango išdidinimo būsena" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Didžiausias paieškos rezultatų skaičius" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Didžiausias paieškos rezultatų skaičius iš geocode paieškos." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Įrašomas paskutinių vietų skaičius" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Įrašomas paskutinių aplankytų vietų skaičius." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Paskutinių įrašomų maršrutų skaičius" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Įrašomas paskutinių aplankytų maršrutų skaičius." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Siuntimo į Foursquare privatumo nustatymas" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paskutinis naudotas siuntimo į Foursquare nustatymas. Galimo vertės yra " +"public, followers arba private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siuntimo į Foursquare pranešimas į Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Facebook paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in Twitter broadcasting" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Nurodo, ar Foursquare turėtų pranešti paskutinį nusiuntimą kaip įrašą " +"Twitter paskyroje, susietoje su Foursquare paskyra." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap naudotojo vardas arba el. pašto adresas" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Nurodo ar naudotojas prisijungė OpenStreetMap duomenų redagavimui." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Paskutinis transporto tipas, naudotas keliui" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nakties veiksena" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Ar programa yra naktinėje veiksenoje." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Naudoti hibridines oro plyteles" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Ar oro plytelės turėtų naudoti hibridinį stilių (su užrašais)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Matomumas" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Pranešti Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Pranešti Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Atsisakyti" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Nusiųsti" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Viešas" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Sekėjams" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privatus" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršrutas iš čia" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridėti tarpinę stotelę" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršrutas į čia" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ten?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopijuoti vietą" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridėti prie OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportuoti rodinį" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportuoti" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Įtraukti maršrutą ir žymes" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Pasirinkite žemėlapio tipą" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Mažinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Didinti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Spausdinti kelią" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Perjungti mėgiamiausius" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Bendra" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rodyti trumpinius" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ieškoti" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Perjungti maršruto planavimą" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Spausdinti kelią" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Išeiti" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Žemėlapio rodinys" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Didinti" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Mažinti" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Perjungti skalę" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Eiti į dabartinę vietą" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Perjungti į gatvės vaizdą" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Perjungti į vaizdą iš oro" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rodyti užrašus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atverti formos sluoksnį…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Savo vietai surasti įjunkite vietos tarnybas" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atsisakyti" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Vietos nustatymai" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakties veiksena" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nusistatyti OpenStreetMap paskyrą" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportuoti kaip paveikslėlį" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klaviatūros trumpiniai" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Apie žemėlapius" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atverti pagrindinį meniu" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Žemėlapiai atsijungę nuo interneto!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Žemėlapių tvarkingam veikimui reikia aktyvaus interneto ryšio, bet tokio " +"nėra." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Patikrinkite savo prisijungimo ir tarpinio serverio nustatymus." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap paskyra" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prisijunkite, kad redaguotumėte " +"žemėlapius" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Padėkite tobulinti žemėlapį, naudodami\n" +"OpenStreetMap paskyrą." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "El. paštas" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Slaptažodis" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prisiregistruoti" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prisijungti" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Atleiskite, tai nesuveikė. Prašome bandyti dar kartą arba apsilankyti\n" +"OpenStreetMap, kad atstatytumėte savo slaptažodį." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Patvirtinimo kodas neatitiko, prašome bandyti dar kartą." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Įveskite aukščiau parodytą patvirtinimo kodą" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Patvirtinti" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prisijungę" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsų OpenStreetMap paskyra yra aktyvi." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Atsijungti" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gatvė" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Namo numeris" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pašto kodas" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miestas" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipas" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nėra" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridėti lauką" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentaras" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Žemėlapio pakeitimai bus matomi visuose žemėlapiuose,\n" +"kuriuose naudojami OpenStreetMap duomenys." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Neseniai naudoti" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Kitas" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nerasta rezultatų" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Kilo klaida" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Tempkite kelio eilės tvarkai keisti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atverti vietą" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopijuoti" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Siųsti…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Prisiregistruoti…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Atverti formos sluoksnį" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atverti" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Perjungti matomus" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Maršruto paieška naudojant GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Viešojo transporto maršrutai yra pateikiami trečiųjų šalių tarnybų.\n" +"GNOME negali garantuoti rodomų tvarkaraščių teisingumo.\n" +"Pastebėtinas, kad kai kurie teikėjai gali neteikti visų transporto rūšių,\n" +"pvz. nacionalinis teikėjas gali neteikti oro linijų, o vietiniam gali " +"trūkti\n" +"regioninių traukinių.\n" +"Pavadinimai ir prekės ženklai yra laikomi registruotais prekyženkliais, kai " +"taikoma." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rodyti daugiau rezultatų" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slėpti tarpines stoteles ir informaciją" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rodyti tarpines stoteles ir informaciją" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Išvykti dabar" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Išvykti" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atvykti" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rodyti" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusai" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvajai" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Traukiniai" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Keltai" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lėktuvai" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Dalintis vieta" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pridėti naują maršrutą" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Nurodymai" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Pažymėti kaip mėgiamą" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redaguoti OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Pritraukti vietos pridėjimui!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Padidinti" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nepavyko kataloge rasti koklių struktūros" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nepavyko perskaityti XML dokumento" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkta reikiamų požymių" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepavyko rasti OSM elemento" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Kelias iki vietinės koklių katalogo struktūros" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Plytelės dydis vietiniam plytelių aplankui" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Rodyti programos versiją" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Nepaisyti tinklo prieinamumo" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FAILAS…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Pasirinkite paskyrą" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Įkeliama" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Pasirinkite vietą" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Žemėlapiai negali rasti vietos nusiuntimui į Foursquare. Pasirinkite ją iš " +"sąrašo." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Nusiųsti į %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Parašykite pranešimą nusiuntimui į %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nepavyko rasti „%s“ socialinėje tarnyboje" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nepavyko rasti tinkamos vietos šios vietos nusiuntimui" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Įgaliojimai pasibaigė, atverkite internetines paskyra prisijungimui ir " +"paskyros atnaujinimui" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Čia nieko nerasta!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vieta pridėta prie žemėlapio, pastebėsime, kad gali užtrukti, kol ji taps " +"matoma žemėlapyje bei paieškoje." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Žemėlapiai ties %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Failų sistema yra tik skaitymui" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jūs neturite leidimo ten įrašyti" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogo nėra" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenurodytas failo pavadinimas" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nepavyko eksportuoti rodinio" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Dabartinė vieta" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neteisinga koordinatė" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "perskaitymo klaida" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nežinoma geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Nepavyko užklausti maršruto." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Maršrutas nerastas." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Pradėti!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Visi sluoksnių failai" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Nepavyko prisijungti prie vietos tarnybos" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Išvertė:\n" +"Aurimas Černius " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Žemėlapių programa GNOME aplinkai" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorių teisės priklauso © 2011 – 2021 Red Hat, Inc. ir GNOME Žemėlapių " +"autoriams" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Žemėlapio duomenys pagal %s ir talkininkus" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Žemėlapio išklotinę pateikė %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Paiešką teikia %s naudojant %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Nepavyko atverti sluoksnio" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Ar norite tęsti?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Ketinate atverti failus, kurų bendras dydis %s MB. Tai gali užtrukti" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Failo tipas yra nepalaikomas" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Nepavyko atverti GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Neteisingas naudotojo vardas ar slaptažodis" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Pavyko" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Bloga užklausa" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objektas nerastas" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konfliktas, kažkas ką tik modifikavo objektą" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektas buvo ištrintas" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Kelias ar santykis nurodo į nesantį kūrinį" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Pavadinimas" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficialus pavadinimas. Jis dažniausiai matomas ženkluose." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresas" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Tinklalapis" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Tai nėra tinkamas URL. Įsitikinkite, kad pateikėte http:// arba https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficialus tinklalapis. Bandykite paprasčiausią URL formą, pvz. http://" +"pavyzdys.lt vietoj http://pavyzdys.lt/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefonas" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefono numeris. Naudokite tarptautinį formatą, prasidedantį + simboliu. " +"Atsižvelkite į vietinius privatumo įstatymus, ypač dės asmeninių telefono " +"numerių." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "El. paštas" + +#: src/osmEditDialog.js:160 +#| msgid "This is not a valid URL. Make sure to include http:// or https://." +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Tai nėra tinkamas el. pašto adresas. Įsitikinkite, kad nepateikėte mailto: " +"protokolo priešdėlio." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktinis el. pašto adresas užklausoms. Pridėkite tik el. pašto adresus, " +"skirtus viešam naudojimui." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Naudojamas formatas turi įtraukti kalbos kodą bei straipsnio pavadinimą, " +"pvz. „lt:Straipsnio pavadinimas“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Darbo laikas" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Informaciją apie formatą gausite paspaudę saitą apačioje." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Gyventojų skaičius" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Aukštis" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Absoliutus aukšti (virš jūros lygio) metrais." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Taip" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ribota" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Su paskirtimi" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Interneto prieiga" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Laidinis" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminalas" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Tarnyba" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Išsinešti" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Tik" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizmas" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizmas" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmas" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Krikščionybė" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucionizmas" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Induizmas" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizmas" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judėjizmas" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islamas" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Daug religijų" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pagonybė" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizmas" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Sientologija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sichizmas" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmas" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmas" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarinis universalizmas" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazidizmas" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmas" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Tualetai" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Pastaba" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacija, naudojama kitiems žemėlapių naudotojams informuoti apie " +"neakivaizdžią informaciją, susijusią su elementu, autoriaus tikslą jį " +"kuriant arba patarimus tolimesniam patobulinimui." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridėti į OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Pasirinkite tipą" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Atlikta" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nepavadinta vieta" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Nepavyko perskaityti Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinatės" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Tikslumas" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Tikslumas: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefono numeris" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Siūlo išsinešti" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nesiūlo išsinešti" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Siūlo tik išsinešti" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Vieša interneto prieiga" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nėra interneto prieigos" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Viešas Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Laidinė interneto prieiga" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Prieinami kompiuteriai naudojimui" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Yra interneto asistentas" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nėra tualetų" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Yra tualetai" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Prieiga neįgaliųjų vežimėliais" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ribota prieiga neįgaliųjų vežimėliais" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nėra prieigos neįgaliųjų vežimėliais" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Sukurta neįgaliųjų vežimėlių naudotojams" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s žemiau jūros lygio" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Jūros lygyje" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nerasta OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatės URL yra netinkamos" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL yra nepalaikomas" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Nuo %s iki %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Įkeliami žemėlapio kokliai spausdinimui" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Galite atšaukti spausdinimą, jei tai per ilgai užtrunka" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Atšaukti spausdinimą" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridėti per vietą" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Šalinti per vietą" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Atgalinis maršrutas" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridėti %s į %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Nepavyko atverti URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Atverti su %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nepavyko įkelti failo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Įvertintas laikas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Teikėjus pateikė %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Pradėkite ties %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pradėkite" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Nueikite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Atvykti ties %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Atvykti" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rodyti ėjimo nurodymus" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slėpti ėjimo nurodymus" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Įkelti ankstesnes alternatyvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Įkelti vėlesnes alternatyvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nerasta ankstesnių alternatyvų." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nerasta vėlesnių alternatyvų." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Šiam maršrutui nerasta tvarkaraščio duomenų." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Šiam maršrutui nerasta teikėjo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutė" +msgstr[1] "%s minutės" +msgstr[2] "%s minučių" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s valanda" +msgstr[1] "%s valandos" +msgstr[2] "%s valandų" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s valanda" +msgstr[1] "%s:%s valandos" +msgstr[2] "%s:%s valandų" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Visą parą" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Nuo saulėtekio iki saulėlydžio" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Kasdien" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Nedarbo dienomis" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Mokslo dienomis" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "uždaryta" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Nežinomas" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Tikslus" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mylios" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pėdos" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis įskiepis nepalaiko vėliausio atvykimo laiko" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Tęsti %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Tęsti" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sukti kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sukti kairėn" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sukti kairiau ties %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sukti kairiau" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Staigiai sukti į kairėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Staigiai sukti į kairėn" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sukti dešiniau ties %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sukti dešiniau" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Staigiai sukti dešinėn ties %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Staigiai sukti dešinėn" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "Žiede pasirinkite %s išvažiavimą" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "Žiede pasirinkite išvažiavimą į %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Įvažiuokite į žiedą" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Liftu pasikelkite į %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Kilkite liftu" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Apsisukite į %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Apsisukite" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Apsisukite į dešinę į %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Apsisukite į dešinę" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Taip pat galite ieškoti specifinių vietų, tokių kaip „Barai šalia " +#~ "Gedimino prospekto, Vilnius“ arba „Viešbučiai šalia Basanavičiaus gatvės, " +#~ "Palanga“." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Siuntimo į Facebook privatumo nustatymas" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Paskutinis naudotas siuntimo į Facebook privatumo nustatymas. Galimos " +#~ "vertės yra EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS arba SELF." + +#~ msgid "Everyone" +#~ msgstr "Visiems" + +#~ msgid "Friends of friends" +#~ msgstr "Draugų draugams" + +#~ msgid "Just friends" +#~ msgstr "Tik draugams" + +#~ msgid "Just me" +#~ msgstr "Tik man" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Žemėlapiai negali rasti vietos nusiuntimui į Facebook. Pasirinkitę ją iš " +#~ "sąrašo." + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Rasti kelią" + +#~ msgid "Check in here" +#~ msgstr "Patikrinkite čia" + +#~ msgid "Show more information" +#~ msgstr "Rodyti daugiau informacijos" + +#~ msgid "Population:" +#~ msgstr "Gyventojų skaičius:" + +#~ msgid "Altitude:" +#~ msgstr "Aukštis:" + +#~ msgid "Opening hours:" +#~ msgstr "Darbo laikas:" + +#~ msgid "Internet access:" +#~ msgstr "Interneto prieiga:" + +#~ msgid "Toilets:" +#~ msgstr "Tualetai:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Prieiga neįgaliųjų vežimėliais:" + +#~ msgid "Phone:" +#~ msgstr "Telefonas:" + +#~ msgid "yes" +#~ msgstr "taip" + +#~ msgid "limited" +#~ msgstr "ribota" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "su paskirtimi" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL yra netinkamas" + +#~ msgid "wired" +#~ msgstr "laidinis" + +#~ msgid "terminal" +#~ msgstr "terminalas" + +#~ msgid "service" +#~ msgstr "tarnyba" + +#~ msgid "Primary menu" +#~ msgstr "Pirminis meniu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Neturite paskyros?" + +#~ msgid "%f h" +#~ msgstr "%f val" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Maršruto paieška naudojant OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Pridėti paskirties vietą" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atverti su kita programa" + +#~ msgid "Press enter to search" +#~ msgstr "Spauskite enter paieškai" + +#~ msgid "Quit" +#~ msgstr "Išeiti" + +#~ msgid "OK" +#~ msgstr "Gerai" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Atverti formos sluoksnį…" + +#~ msgid "Load Map Layer" +#~ msgstr "Įkelti žemėlapio sluoksnį" + +#~ msgid "Open Layer" +#~ msgstr "Atverti sluoksnį" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f pėdos" + +#~ msgid "Position not found" +#~ msgstr "Nerasta padėtis" + +#~ msgid "Country code: %s" +#~ msgstr "Šalies kodas: %s" + +#~ msgid "Population: %s" +#~ msgstr "Gyventojų skaičius: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Prieiga neįgaliųjų vežimėliais: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nepavyko perskaityti GeoJSON failo" + +#~ msgid "_Share" +#~ msgstr "_Viešinti" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 00000000..5f383596 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,2094 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Rūdolfs Mazurs , 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-10-31 12:39+0200\n" +"Last-Translator: Rūdolfs Mazurs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :" +" 2);\n" +"X-Generator: Lokalize 21.08.1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kartes" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Atrodi vietas visā pasaulē" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartes dod iespēju ātri piekļūt kartēm visā pasaulē. Tās ļauj ātri atrast " +"kādu vietu, meklējot pilsētu vai ielu, vai atrast vietu, kur sastapt draugus." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartes izmanto kolektīvi veidoto OpenStreetMap datubāzi, ko veidojuši " +"tūkstošiem cilvēku visā pasaulē." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "GNOME projekts" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kartes" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Vienkārša karšu lietotnes" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartes;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Ļauj uz kartes parādīt jūsu atrašanās vietu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "pēdējā skatītā vieta" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Pēdējās apskatītās vietas koordinātas" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "mērogs" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mērogs" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kartes veids" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Kartes veids, ko attēlot (ielu, aerofoto utt.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Loga izmērs" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Loga izmērs (platums un augstums)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Loga novietojums" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Loga novietojums (X un Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Logs maksimizēts" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Loga maksimizācijas stāvoklis" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimālais meklēšanas rezultātu skaits" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimālais meklēšanas rezultātu skaits no geocode meklējuma." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saglabājamo neseno vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saglabājamo nesen apmeklēto vietu skaits" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saglabājamo neseno maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saglabājamo nesen apmeklēto maršrutu skaits" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare vietas reģistrēšanas privātuma iestatījumi" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Pēdējie izmantotie Foursquare vietas reģistrēšanas privātuma iestatījumi. " +"Iespējamās vērtības: public, followers vai private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare vietas reģistrēšanas Facebook apziņošana" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Facebook kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare vietas reģistrēšanas Twitter apziņošana" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Norāda, vai Foursquare vajadzētu apziņot vietas reģistrēšanu kā ziņu tajā " +"Twitter kontā, kurš ir saistīts ar Foursquare kontu." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap lietotājvārds vai e-pasta adrese" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Norāda, vai lietotājs ir ierakstījies, lai rediģētu OpenStreetMap datus." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Pēdējais izmantotais transportēšanas tips maršrutēšanai" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nakts režīms" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Vai lietotne ir nakts režīmā." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Izmantot hibrīda aerofoto flīzes" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Vai aerofoto flīzēm jāizmanto hibrīda stils (ar apzīmējumiem)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Redzamība" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Veidot Facebook ziņojumu" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Veidot Twitter ziņojumu" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "At_celt" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Reģistrēt vietu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publisks" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Sekotāji" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privāts" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Maršruts no šejienes" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pievienot starp-galamērķi" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Maršruts uz šejieni" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kas ir šeit?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopēt atrašanās vietu" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksportēt skatu" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksportēt" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Iekļaut maršrutu un marķierus" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Izvēlieties kartes veidu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Tālināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Tuvināt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Drukāt maršrutu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Pārslēgt izlasi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Vispārīgi" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Rādīt saīsnes" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Meklēt" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pārslēgt maršruta plānotāju" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Drukāt maršrutu" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Iziet" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartes skats" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Tuvināt" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Tālināt" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Pārslēgt mērogu" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Iet uz pašreizējo vietu" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Pārslēgties uz ielas skatu" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Pārslēgties uz aerofoto skatu" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Atvērt formu slāni" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Rādīt apzīmējumus" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Atvērt formu slāni…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" +"Ieslēgt vietas noteikšanas pakalpojumu, lai atrastu savu atrašanās vietu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Atcelt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Atrašanās vietas iestatījumi" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nakts režīms" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Izveidot OpenStreetMap kontu" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksportēt kā attēlu" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatūras īsinājumtaustiņi" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "P_ar kartēm" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Atvērt galveno izvēlni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartes ir nesaistē!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Lai varētu strādāt, Kartēm vajag aktīvu savienojumu ar internetu, bet tādu " +"nevar atrast." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Pārbaudiet savu savienojumu un starpnieka iestatījumus." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap konts" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ierakstieties, lai rediģētu kartes" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Palīdziet uzlabot karti, izmantojot\n" +"OpenStreetMap kontu." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-pasts" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parole" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Ierakstīties" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Ierakstīties" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Diemžēl tas nenostrādāja. Lūdzu, mēģiniet vēlreiz vai apmeklējiet\n" +"OpenStreetMap, lai pārstatītu savu paroli." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifikācijas kodi nesakrīt. Lūdzu, mēģiniet vēlreiz." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Ievadiet verifikācijas kodu, kas redzams augšā" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificēt" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ierakstījies" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Jūsu OpenStreetMap konts ir aktīvs." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Izrakstīties" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Iela" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Mājas numurs" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Pasta indekss" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Pilsēta" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tips" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nav" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pievienot lauku" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentārs" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmaiņas kartē būs redzmas visās kartēs, kas izmanto\n" +"OpenStreetMap datus." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nesen lietotie" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Nākamais" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nav atrastu rezultātu" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Gadījās kļūda" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Velciet, lai mainītu maršruta secību" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Atvērt vietu" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopēt" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Sūtīt uz…" + +#: data/ui/send-to-dialog.ui:86 +#| msgid "C_heck in" +msgid "Check In…" +msgstr "Reģistrēt vietu…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Atvērt formu slāni" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Atvērt" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Pārslēgt redzamību" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper maršruta meklēšana" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Sabiedriskā transporta maršrutus nodrošina trešo pušu pakalpojumus.\n" +"GNOME nevar garantēt attēloto maršrutu un sarakstu pareizību.\n" +"Ņemiet vērā, ka daži pakalpojumu sniedzēji neiekļauj visus pieejamos " +"transporta veidus, piemēram, nacionālais pakalpojumu sniedzējs neiekļauj " +"avio satiksmi un lokālais pakalpojumu sniedzējs varētu neiekļaut reģionālos " +"vilcienus.\n" +"Attēlotie nosaukumi un zīmoli tiek uzskatīti par preču zīmēm, ja attiecināms." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Rādīt vairāk rezultātu" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Slēpt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Rādīt pa ceļam esošās apstāšanās vietas un informāciju" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Doties tagad" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Doties līdz" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Atbraukt līdz" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Rādīt" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vilcieni" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Prāmji" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lidmašīnas" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Koplietot vietu" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pievienot jaunu maršrutu" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Norādes" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Pievienot izlasei" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Rediģēt OpenStreetMap karti" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Tuviniet, lai pievienotu atrašanās vietu!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Tuvināt" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Direktorijā nevarēja atrast flīžu struktūru" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Neizdevās parsēt XML dokumentu" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Trūkst nepieciešamo atribūtu" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nevarēja atrast OSM elementu" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Ceļš uz lokālo flīžu direktorijas struktūru" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Flīzes izmērs lokālo flīžu direktorijai" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Rādīt programmas versiju" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorēt tīkla pieejamību" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATNE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Izvēlēties kontu" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Ielādē" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Izvēlieties vietu" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartes nevar atrast vietu, kuru reģistrēt ar Foursquare. Lūdzu, izvēlieties " +"vienu no saraksta." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Reģistrēties %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ja vēlaties, reģistrējoties %s, ierakstiet ziņojumu." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nevar atrast “%s” sociālajā pakalpojumā" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Nevar atrast piemērotu vietu, kur ierakstīties šajā apkārtnē" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Pilnvaras termiņš ir beidzies, atveriet tiešsaistes kontus, lai ierakstītos " +"un ieslēgtu šo kontu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Šeit nekas nav atrasts!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Atrašanās vieta tika pievienota kartei. Ņemiet vērā, ka varētu paiet kāds " +"laiks, pirms izmaiņas parādās kartē un meklēšanas rezultātos." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartes pie %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datņu sistēma ir tikai lasāma" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Jums nav tiesību tur saglabāt" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorija nepastāv" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nav norādīts datnes nosaukums" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nevar eksportēt skatu" + +#: src/geoclue.js:118 +#| msgid "Current location" +msgid "Current Location" +msgstr "Pašreizējā atrašanās vieta" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "nederīga koordināta" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "parsēšanas kļūda" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nezināma ģeometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Maršruta pieprasījums neizdevās." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nav atrastu maršrutu." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Sākt!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Visu slāņu datnes" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Neizdevās savienoties ar pozīcijas noteikšanas pakalpojumu" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Rūdolfs Mazurs " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "GNOME karšu lietotne" + +#: src/mainWindow.js:604 +#| msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Autortiesības © 2011 – 2021 Red Hat, Inc. un GNOME “Kartes” autori" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartes datus nodrošina %s un atbalstītāji" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Karšu fragmentus nodrošina %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Meklēšanu nodrošina %s izmanto %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Neizdevās atvērt slāni" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Vai vēlaties turpināt?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Jūs grasāties atvērt datni, kuras izmērs ir %s MB. Tās atvēršana var aizņemt" +" daudz laika" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Datnes tips nav atbalstīts" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Neizdevās atvērt GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nepareizs lietotājvārds vai parole" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Veiksmīgi" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Nederīgs pieprasījums" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekts nav atrasts" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikts, kāds cits tikko modificēja objektu" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekts tika izdzēsts" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Ceļš vai relācija norāda uz neeksistējošu bērnu" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nosaukums" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiālais nosaukums. Tas parasti ir redzams uz zīmēm." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adrese" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Tīmekļa vietne" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Šis nav derīgs URL. Pārliecinieties, ka esat iekļāvuši http:// vai https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiālā tīmekļa vietne. Mēģiniet izmantot pamata URL, tas ir, http://" +"example.com, nevis http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Tālrunis" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Tālruņa numurs. Izmantojiet starptautisko formātu, sākot ar + zīmi. Ņemiet " +"vērā lokālos privātuma likumus, sevišķi privātiem tālruņu numuriem." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "E-pasts" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Šī nav derīga e-pasta adrese. Pārliecinieties, ka neesat iekļāvuši mailto:" +" protokola prefiksu." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontakta e-pasta adrese vaicājumiem. Pievienojiet tikai to adresi, kura ir" +" paredzēta publiskai lietošanai." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formātam vajadzētu iekļaut valodas kodu un raksta virsrakstu, piemēram “lv:" +"Raksta virsraksts”" + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Darba laiks" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Skatiet saiti apzīmējumā, lai saņemtu palīdzību par formātu." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Iedzīvotāju skaits" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Augstums" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Punkta augstums (virs jūras līmeņa) metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Piekļuve ar ratiņkrēsliem" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Jā" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nē" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ierobežots" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Nozīmēts" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Pieeja internetam" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Vadu" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminālis" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviss" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Līdzņemšanai" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Tikai" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Reliģija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisms" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahāisms" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budisms" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaisms" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristietība" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfūcisms" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduisms" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Džainisms" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Jūdaisms" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islāms" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Vairākas reliģijas" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pagānisms" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisms" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientoloģija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Sintoisms" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisms" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spirituālisms" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Daoisms" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitārais universālisms" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jadīdisms" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisms" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Tualetes" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Piezīme" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informācija, ko izmantot citiem kartētajiem par ne acīmredzamu informāciju " +"par elementu, autora nodomu to veidojot vai norādēm turpmākai uzlabošanai." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pievienot OpenStreetMap kartēm" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Izvēlēties tipu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Pabeigts" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nenosaukta vieta" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Neizdevās parsēt Geo URI" + +#: src/placeView.js:268 +#| msgid "invalid coordinate" +msgid "Coordinates" +msgstr "Koordinātes" + +#: src/placeView.js:272 +#| msgid "Accuracy: %s" +msgid "Accuracy" +msgstr "Precizitāte" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precizitāte — %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +#| msgid "House number" +msgid "Phone number" +msgstr "Tālruņa numurs" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Piedāvā līdzņemšanai" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nepiedāvā līdzņemšanai" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Piedāvā tikai līdzņemšanai" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +#| msgid "Internet access" +msgid "Public internet access" +msgstr "Publiska pieeja internetam" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +#| msgid "Internet access" +msgid "No internet access" +msgstr "Nav pieejas internetam" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +#| msgid "Public" +msgid "Public Wi-Fi" +msgstr "Publisks Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +#| msgid "Internet access" +msgid "Wired internet access" +msgstr "Vadu pieeja internetam" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Datori pieejami lietošanai" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Pieejama interneta asistēšana" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nav pieejamu tualešu" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Tualetes ir pieejamas" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +#| msgid "Wheelchair access" +msgid "Wheelchair accessible" +msgstr "Pieejams ar ratiņkrēsliem" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +#| msgid "Wheelchair access" +msgid "Limited wheelchair accessibility" +msgstr "Ierobežota piekļuve ar ratiņkrēsliem" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +#| msgid "Wheelchair access" +msgid "Not wheelchair accessible" +msgstr "Nav pieejams ar ratiņkrēsliem" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Projektēts cilvēkiem ar ratiņkrēsliem" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s zem jūras līmeņa" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Jūras līmenī" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Reliģija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Vieta nav atrasta OpenStreetMap kartē" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL koordinātas nav derīgas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL nav atbalstīts" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "No %s līdz %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Ielādē kartes flīzes drukāšanai" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Jūs varat pārtraukt drukāšanu, ja tas aizņem pārāk daudz laika" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Par drukāšanu" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pievienot “caur vietu”" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Izņemt “caur vietu”" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Apgriezt maršrutu pretēji" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pievienot %s pie %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Neizdevās atvērt URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Atvērt ar %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "neizdevās ielādēt datni" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Novērtētais laiks — %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Maršrutu nodrošina %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Sākt %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Sākums" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Iet %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Pienāk %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Pienāk" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Rādīt iešanas norādes" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Slēpt iešanas norādes" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Ielādēt agrākas alternatīvas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Ielādēt vēlākas alternatīvas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nav atrastu vecāku alternatīvu." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nav atrastu jaunāku alternatīvu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Šim maršrutam nav atrastu transporta sarakstu." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Šim maršrutam nav atrastu nodrošinātāju." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minūte" +msgstr[1] "%s minūtes" +msgstr[2] "%s minūšu" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s stunda" +msgstr[1] "%s stundas" +msgstr[2] "%s stundu" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s stunda" +msgstr[1] "%s:%s stundas" +msgstr[2] "%s:%s stundu" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +#| msgid "around the clock" +msgid "Around the clock" +msgstr "Diennakti" + +#: src/translations.js:55 +#| msgid "from sunrise to sunset" +msgid "From sunrise to sunset" +msgstr "No saullēkta līdz saulrietam" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +#| msgid "every day" +msgid "Every day" +msgstr "Katru dienu" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s–%s" + +#: src/translations.js:177 +#| msgid "public holidays" +msgid "Public holidays" +msgstr "Brīvdienas" + +#: src/translations.js:179 +#| msgid "school holidays" +msgid "School holidays" +msgstr "Skolas brīvdienas" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nav atvērts" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s–%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Nezināms" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Precīzi" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s jūdzes" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pēdas" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Šis spraudnis neatbalsta vēlāko ierašanos" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Turpināt uz %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Turpināt" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Pagriezt nedaudz pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Pagriezt nedaudz pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Strauji pagriezt pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Strauji pagriezt pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Pagriezt pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Pagriezt pa labi" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Pagriezt nedaudz pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Pagriezt nedaudz pa labi" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Asi pagriezti pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Asi pagriezti pa labi" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "No apļa izbrauciet izejā %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "No apļa izbrauciet caur izeju uz %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Iebrauciet aplī" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ņemiet liftu un izbrauciet %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ņemiet liftu" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi uz %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa kreisi" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi uz %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Veiciet apgriešanos pretējā virzienā pa labi" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Varat pat meklēt noteikta veida vietas, piemēram “Krogi pie gaismas " +#~ "ielas”, vai “Autostāvvieta Ādaži”" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook vietas reģistrēšanas privātuma iestatījumi" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Pēdējie izmantotie Facebook vietas reģistrēšanas privātuma iestatījumi. " +#~ "Iespējamās vērtības: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS vai SELF." + +#~ msgid "Everyone" +#~ msgstr "Ikviens" + +#~ msgid "Friends of friends" +#~ msgstr "Draugu draugi" + +#~ msgid "Just friends" +#~ msgstr "Tikai draugi" + +#~ msgid "Just me" +#~ msgstr "Tikai es" + +#~ msgid "Check in here" +#~ msgstr "Reģistrēt šo vietu" + +#~ msgid "Show more information" +#~ msgstr "Rādīt vairāk informācijas" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kartes nevar atrast vietu, kuru reģistrēt ar Facebook. Lūdzu, izvēlieties " +#~ "vienu no saraksta." + +#~ msgid "Population:" +#~ msgstr "Iedzīvotāju skaits:" + +#~ msgid "Altitude:" +#~ msgstr "Augstums:" + +#~ msgid "Opening hours:" +#~ msgstr "Darba laiks:" + +#~ msgid "Internet access:" +#~ msgstr "Pieeja internetam:" + +#~ msgid "Toilets:" +#~ msgstr "Tualetes:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Piekļuve ar ratiņkrēsliem:" + +#~ msgid "Phone:" +#~ msgstr "Tālrunis:" + +#~ msgid "yes" +#~ msgstr "jā" + +#~ msgid "limited" +#~ msgstr "ierobežots" + +#~ msgid "no" +#~ msgstr "nē" + +#~ msgid "designated" +#~ msgstr "nozīmēts" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL nav derīga" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s, %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s, %s, %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "vadu" + +#~ msgid "terminal" +#~ msgstr "terminālis" + +#~ msgid "service" +#~ msgstr "serviss" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nav sava konta?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner maršruta meklēšana" + +#~ msgid "Add destination" +#~ msgstr "Pievienot galamērķi" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Atvērt ar citu lietotni" + +#~ msgid "Press enter to search" +#~ msgstr "Spiediet “Enter”, lai meklētu" + +#~ msgid "Quit" +#~ msgstr "Iziet" + +#~ msgid "OK" +#~ msgstr "Labi" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Atvērt formu slāni…" + +#~ msgid "Load Map Layer" +#~ msgstr "Ielādēt kartes slāni" + +#~ msgid "Open Layer" +#~ msgstr "Atvērt slāni" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f jūdzes" + +#~ msgid "%f ft" +#~ msgstr "%f pēdas" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 00000000..63ad5f4e --- /dev/null +++ b/po/meson.build @@ -0,0 +1,2 @@ +i18n.gettext(name, preset: 'glib', + args: [ '--keyword=X-Geoclue-Reason' ]) diff --git a/po/mjw.po b/po/mjw.po new file mode 100644 index 00000000..eb6e5569 --- /dev/null +++ b/po/mjw.po @@ -0,0 +1,1653 @@ +# Karbi translation for gnome-maps. +# Copyright (C) 2019 gnome-maps's Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Jor Teron , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2019-08-03 19:54+0000\n" +"PO-Revision-Date: 2019-08-04 23:24+0530\n" +"Last-Translator: Jor Teron \n" +"Language-Team: Karbi \n" +"Language: mjw\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2 ; plural=( n != 1 );\n" +"X-Generator: Gtranslator 2.91.7\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Maps" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#: data/org.gnome.Maps.appdata.xml.in:59 +msgid "The GNOME Project" +msgstr "GNOME Project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 +#: src/application.js:81 src/mainWindow.js:139 src/mainWindow.js:509 +msgid "Maps" +msgstr "Maps" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "pathe-bi" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Window position (X pen Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap username mate e-mail address" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Facebook long Post" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Twitter long Post" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Kadokawe" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Jirpo a jirpo" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Jirpo chot" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Ne anchot" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Monit an" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Followers" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Private" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Ladak kopi lo do?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Kiri" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Pathe" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pabi" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Account selam" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "_Keyboard Shortcuts" + +#: data/ui/main-window.ui:18 +msgid "About Maps" +msgstr "Maps Aputhak" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "Pabi" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "Pathe" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "Maps ke offline!" + +#: data/ui/main-window.ui:256 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Password" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Sign In" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Nangli OpenStreetMap account dambom lo." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ale" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hem phai" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "PIN Code" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Rongsopi" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Dunthu" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Copy" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Kelo dim…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Non kedam lo" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Kedam apor" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Kele apor" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Paklang" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Hemkonglong" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trains" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Telong" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Pathe" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Account chongvai" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Dim chongvai" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: src/contextMenu.js:99 +msgid "Route from here" +msgstr "" + +#: src/contextMenu.js:101 +msgid "Add destination" +msgstr "" + +#: src/contextMenu.js:103 +msgid "Route to here" +msgstr "" + +#: src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "Dak ajat ta longle!" + +#: src/contextMenu.js:190 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:112 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "" + +#: src/graphHopper.js:119 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "" + +#: src/graphHopper.js:207 +msgid "Start!" +msgstr "" + +#: src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:442 +msgid "Failed to connect to location service" +msgstr "" + +#: src/mainWindow.js:507 +msgid "translator-credits" +msgstr "" +"Jor Teron \n" +"Biju Rongpi " + +#: src/mainWindow.js:510 +msgid "A map application for GNOME" +msgstr "A map application for GNOME" + +#: src/mainWindow.js:521 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" + +#: src/mainWindow.js:541 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:557 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:586 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:374 +msgid "File type is not supported" +msgstr "" + +#: src/mapView.js:381 +msgid "Failed to open layer" +msgstr "" + +#: src/mapView.js:417 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Chunlo" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Men" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Kangpu apor" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Armu" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Internet access" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Wired" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Service" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Dhorom" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Christianity" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaism" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Multiple Religions" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalism" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianism" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Barso-barpi-hem" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Amen tokte adim" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Armu:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Kangpu apor:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Internet do:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Dhorom:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Barso-barpi-hem:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "" + +#: src/placeEntry.js:194 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:103 +#, javascript-format +msgid "Add %s to %s" +msgstr "" + +#: src/sendToDialog.js:201 +msgid "Failed to open URI" +msgstr "" + +#: src/sendToDialog.js:258 +#, javascript-format +msgid "Open with %s" +msgstr "%s pen ingpu" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s pen pangcheng" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Pangcheng" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Keng-kedam %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kele dim %s" + +#: src/transit.js:77 +msgid "Arrive" +msgstr "Nangkele" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minute" +msgstr[1] "%d minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "Porphai %d" +msgstr[1] "Porphai %d" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "Porphai %d:%02d" +msgstr[1] "Porphai %d:%02d" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "arni ketet pen arni chelut an" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "arnivang" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "rat kangkir" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "locharli-hem kangkir" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "ingpu pe" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "" + +#. Translators: Accuracy of user location information +#: src/utils.js:220 +msgid "Unknown" +msgstr "Puthekthe" + +#. Translators: Accuracy of user location information +#: src/utils.js:223 +msgid "Exact" +msgstr "" + +#: src/utils.js:281 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: src/utils.js:283 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:285 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:296 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:299 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:307 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:310 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 00000000..8dc9906b --- /dev/null +++ b/po/ml.po @@ -0,0 +1,1600 @@ +# Malayalam translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# syamlalpullamballi , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2018-10-25 19:38+0000\n" +"PO-Revision-Date: 2018-10-26 22:15+0800\n" +"Last-Translator: Anish Sheela \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ഗ്നോം ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ലോകമെമ്പാടുമുള്ള സ്ഥലങ്ങൾ കണ്ടെത്തുക" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to quickly find the place " +"you’re looking for by searching for a city or street, or locate a place to meet a friend." +msgstr "" +"ഭൂപടങ്ങള്‍ താങ്കള്‍ക്കു ലോകത്തിലെ എല്ലായിടത്തെയും ഭൂപടങ്ങളിലേക്കു പ്രവേശനം നല്‍കുന്നു. ഇത് താങ്കള്‍ അന്വേഷിക്കുന്ന സ്ഥലം നഗരമോ " +"തെരുവൊ തിരയുന്നതിലൂടെ പെട്ടന്നു തന്നെ കണ്ടുപിടിക്കാന്‍ അല്ലെങ്കില്‍ സുഹൃത്തിനെ കാണുവാന്‍ ഒരു സ്ഥലം കണ്ടുപിടിക്കാന്‍ സഹായിക്കുന്നു." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of thousands of people across " +"the globe." +msgstr "" +"ഭൂപടങ്ങള്‍ സഹകരണപരമായ OpenStreetMap ന്റെ ശേഖരിച്ചു് വചിട്ടുള്ള വിവരങ്ങളും വസ്തുതകളും ഉപയോഗിക്കുന്നുണ്ട്, ലോകത്തിലെ " +"എല്ലായിടത്തിലേയും നൂറുകണക്കിനു ആളുകള്‍ ചേര്‍ന്നുണ്ടക്കിയതാണത്." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main Street, Boston” or " +"“Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:26 src/mainWindow.js:503 +msgid "Maps" +msgstr "ഭൂപടങ്ങള്‍" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ലളിതമായ ഒരു ഭൂപട പ്രയോഗം" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Maps.desktop.in:8 +msgid "org.gnome.Maps" +msgstr "org.gnome.Maps" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "നിങ്ങളുടെ ലൊക്കേഷനെ മാപ്പിൽ കാണിക്കുന്നതിന് അനുവദിക്കുന്നു" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "അവസാനം കണ്ട സ്ഥലം" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "അവസാനം കണ്ട സ്ഥലത്തിന്റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "Window size" +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Window size (width and height)." +msgstr "ജാലകത്തിന്‍റെ വലിപ്പം (വീതിയും ഉയരവും)" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Window position" +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "Window position (X and Y)." +msgstr "ജാലകത്തിന്‍റെ സ്ഥാനം (X ഉം Y ഉം)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window maximized" +msgstr "വലുതാക്കിയ ജാലകം" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window maximization state" +msgstr "ജാലകം വലുതാക്കുന്ന അവസ്ഥ" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Maximum number of search results" +msgstr "തിരച്ചില്‍ ഫലങ്ങളുടെ പരമാവധി എണ്ണം" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Maximum number of search results from geocode search." +msgstr "geocode ഇല്‍ നിന്നും പരിശോധന ഫലത്തിന്റെ പരമാവധി എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Number of recent places to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Number of recently visited places to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Number of recent routes to store" +msgstr "സൂക്ഷിക്കാനുള്ള സമീപകാല സ്ഥലങ്ങളുടെ എണ്ണംv" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Number of recently visited routes to store." +msgstr "സൂക്ഷിക്കാൻ അടുത്തിടെ സന്ദർശിച്ച സ്ഥലങ്ങളുടെ എണ്ണം." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Facebook check-in privacy setting" +msgstr "Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:48 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: EVERYONE, FRIENDS_OF_FRIENDS, " +"ALL_FRIENDS or SELF." +msgstr "" +"ഏറ്റവും പുതിയ ഉപയോഗത്തിലുള്ള Facebook ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം. സാധ്യമായ മൂല്യങ്ങൾ: എല്ലാവരേയും, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS അല്ലെങ്കിൽ SELF." + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Foursquare check-in privacy setting" +msgstr "ഫോർസ്ക്വെയർ ചെക്ക്-ഇൻ സ്വകാര്യത ക്രമീകരണം." + +#: data/org.gnome.Maps.gschema.xml:53 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: public, followers or private." +msgstr "" +"ഏറ്റവുമധികം ഉപയോഗിച്ചത് Foursquare ചെക്ക്-ഇൻ സ്വകാര്യതാ ക്രമീകരണം. സാധ്യമായ വിലകൾ: പൊതുജനം, പിന്തുടരുന്നവർ " +"അല്ലെങ്കിൽ സ്വകാര്യം." + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the Facebook account associated " +"with the Foursquare account." +msgstr "" +"ഫോർസ്ക്വെയർ അക്കൗണ്ടുമായി ബന്ധപ്പെട്ട ഫേസ്സ്കാർ ഫേസ്ബുക്കിൽ അക്കൗണ്ട് പോസ്റ്റുചെയ്ത് ഒരു ഫോൾഡർ ആയി പ്രക്ഷേപണം ചെയ്യേണ്ടതുണ്ടോ " +"എന്ന് സൂചിപ്പിക്കുന്നു." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ഫയർസ്കോർ ചെക്ക് ഇൻ ഫേസ്ബുക്ക് ബ്രോഡ്കാസ്റ്റിങ്" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the Twitter account associated " +"with the Foursquare account." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "OpenStreetMap username or e-mail address" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Last used transportation type for routing" +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ദൃശ്യപരത" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ഫേസ്ബുക്കിൽ പോസ്റ്റുചെയ്യുക" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 data/ui/send-to-dialog.ui:21 +#: data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "റദ്ദാക്കുക" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "എല്ലാവർക്കും" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "കൂട്ടുകാരുടെ കൂട്ടുകാര്" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "സുഹൃത്തുക്കൾ മാത്രം" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ഞാൻ മാത്രം" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "പൊതുവായത്" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "അനുയായികൾ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "സ്വകാര്യം" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "എന്താണ് ഇവിടെ ഉള്ളത്?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "സ്ഥാനം പകർത്തുക" + +#: data/ui/context-menu.ui:23 +msgid "Export As Image" +msgstr "" + +#: data/ui/context-menu.ui:36 +msgid "Add to OpenStreetMap" +msgstr "" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "" + +#: data/ui/help-overlay.ui:46 +#, fuzzy +#| msgid "Quit" +msgctxt "shortcut window" +msgid "Quit" +msgstr "അവസാനിപ്പിക്കുക" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:71 +msgid "Open Shape Layer…" +msgstr "" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "റദ്ദാക്കുക" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ലൊക്കേഷൻ ക്രമീകരണങ്ങൾ" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാക്കുക" + +#: data/ui/main-window.ui:13 +msgid "_Keyboard Shortcuts" +msgstr "കീബോർഡ് കുറുക്കുവഴികൾ" + +#: data/ui/main-window.ui:18 +#, fuzzy +#| msgid "About" +msgid "About Maps" +msgstr "കുറിപ്പ്" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:41 +msgid "Go to current location" +msgstr "നിലവിലെ ലൊക്കേഷനിൽ പോകുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:62 +msgid "Choose map type" +msgstr "മാപ്പ് തരം തിരഞ്ഞെടുക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:87 +msgid "Zoom out" +msgstr "ചെറുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:103 +msgid "Zoom in" +msgstr "വലുതാക്കുക" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:142 +msgid "Toggle route planner" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:163 +msgid "Toggle favorites" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:183 +msgid "Print Route" +msgstr "" + +#: data/ui/main-window.ui:246 +msgid "Maps is offline!" +msgstr "" + +#: data/ui/main-window.ui:256 +msgid "Maps need an active internet connection to function properly, but one can’t be found." +msgstr "" + +#: data/ui/main-window.ui:265 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ഇമെയിൽ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "രഹസ്യവാക്ക് " + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "പ്രവേശിക്കുക" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "ഒരു അക്കൗണ്ട് ഇല്ലേ?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your " +"password." +msgstr "" + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ് പൊരുത്തപ്പെടുന്നില്ല, വീണ്ടും ശ്രമിക്കുക." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "മുകളിൽ കാണിച്ചിരിക്കുന്ന പരിശോധനാ കോഡ് നൽകുക" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "പരിശോധിക്കുക" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap അക്കൌണ്ട് സജ്ജമാണ്." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "പുറത്തിറങ്ങുക" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "തെരുവ്" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "വീട്ട് നമ്പര്‍" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "തപാൽ കോഡ്" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "നഗരം" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "തരം" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ഒന്നുമില്ല" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ഫീള്‍ഡ് ചേര്‍ക്കുക" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "അഭിപ്രായം" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "സമീപകാലത്ത് ഉപയോഗിച്ചവ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "അടുത്തത്" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ല്‍ തിരുത്തുക" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#: data/ui/place-popover.ui:24 +msgid "Press enter to search" +msgstr "തെരയാന്‍ എന്റെര്‍ അമര്‍ത്തു" + +#: data/ui/place-popover.ui:72 +msgid "No results found" +msgstr "ഒരു ഫലവും കണ്ടെത്താനായില്ല" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "വഴിയുടെ ക്രമം മാറ്റാന്‍ നീക്കുക" + +#: data/ui/send-to-dialog.ui:15 +msgid "Open location" +msgstr "സ്ഥലം തുറക്കുക" + +#: data/ui/send-to-dialog.ui:35 data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "തുറക്കുക (_O)" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:61 +msgid "Open Shape Layer" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "" + +#: data/ui/sidebar.ui:296 +msgid "Route search by OpenTripPlanner" +msgstr "" + +#: data/ui/sidebar.ui:369 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when applicable." +msgstr "" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "കൂടുതൽ വിവരങ്ങൾ കാണിക്കുക" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ഇപ്പോൾ വിടുക" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "പുറപ്പെടേണ്ടത്" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "കാണിക്കുക" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ബസ്സുകൾ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ട്രാമുകള്‍" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ട്രെയിനുകൾ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "സബ്‍വേ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ഫെറികള്‍" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "ഇപ്പോഴത്തെ സ്ഥാനം" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: data/ui/user-location-bubble.ui:28 +msgid "Accuracy: %s" +msgstr "കൃത്യത: %s" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "സ്ഥാനം ചേര്‍ക്കാന്‍ വലുതാക്കുക" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "വലുതാക്കുക" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: src/application.js:99 +msgid "Show the version of the program" +msgstr "പ്രോഗ്രാമിന്റെ പതിപ്പു് കാണിക്കുക" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ലോഡ് ചെയ്യുന്നു" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ഒരു സ്ഥലം തിരഞ്ഞെടുക്കുക" + +#: src/checkInDialog.js:201 +msgid "Maps cannot find the place to check in to with Facebook. Please select one from this list." +msgstr "" + +#: src/checkInDialog.js:203 +msgid "Maps cannot find the place to check in to with Foursquare. Please select one from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യുക" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ലോട്ട് ചെക്കിന്‍ ചെയ്യാനുള്ള സന്ദേശം എഴുതുക (താല്‍പര്യമുണ്ടെങ്കില്‍)" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "ഒരു പിശക് സംഭവിച്ചു" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: src/checkIn.js:150 +msgid "Credentials have expired, please open Online Accounts to sign in and enable this account" +msgstr "" + +#: src/contextMenu.js:98 +msgid "Route from here" +msgstr "ഇവിടെ നിന്ന് പാത" + +#: src/contextMenu.js:100 +msgid "Add destination" +msgstr "ലക്ഷ്യസ്ഥാനം ചേർക്കുക" + +#: src/contextMenu.js:102 +msgid "Route to here" +msgstr "ഇങ്ങോട്ട് റൂട്ട് ചെയ്യുക" + +#: src/contextMenu.js:131 +msgid "Nothing found here!" +msgstr "ഇവിടെ ഒന്നും കണ്ടെത്തിയില്ല" + +#: src/contextMenu.js:192 +msgid "" +"Location was added to the map, note that it may take a while before it shows on the map and in " +"search results." +msgstr "" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ഡയറക്ടറി നിലവിലില്ല" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ഫയൽ പേരൊന്നും തന്നില്ല" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "" + +#: src/graphHopper.js:93 src/openTripPlanner.js:652 +msgid "Route request failed." +msgstr "റൂട്ട് അഭ്യർത്ഥന പരാജയപ്പെട്ടു." + +#: src/graphHopper.js:100 src/openTripPlanner.js:615 +msgid "No route found." +msgstr "ഒരു വഴിയും കണ്ടെത്തിയില്ല." + +#: src/graphHopper.js:188 +msgid "Start!" +msgstr "ആരംഭിക്കുക!" + +#: src/mainWindow.js:58 +msgid "All Layer Files" +msgstr "" + +#: src/mainWindow.js:436 +msgid "Failed to connect to location service" +msgstr "ലൊക്കേഷൻ സേവനവുമായി ബന്ധിപ്പിക്കുന്നത് പരാജയപ്പെട്ടു" + +#: src/mainWindow.js:501 +msgid "translator-credits" +msgstr "" +"Syamlal Pullamballi \n" +"Anish Sheela \n" +"Suneesh T R " + +#: src/mainWindow.js:504 +msgid "A map application for GNOME" +msgstr "ഗ്നോമിനു വേണ്ടിയുള്ള ഒരു ഭൂപട പ്രയോഗം" + +#: src/mainWindow.js:515 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" + +#: src/mainWindow.js:534 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:550 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "" + +#: src/mapView.js:358 +msgid "File type is not supported" +msgstr "ഫയൽ തരം പിന്തുണയ്ക്കുന്നില്ല" + +#: src/mapView.js:365 +msgid "Failed to open layer" +msgstr "ലെയർ തുറക്കുന്നതിൽ പരാജയപ്പെട്ടു" + +#: src/mapView.js:401 +msgid "Failed to open GeoURI" +msgstr "" + +#: src/openTripPlanner.js:648 +msgid "No timetable data found for this route." +msgstr "" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "തെറ്റായ ഉപയോക്തൃ നാമം അല്ലെങ്കിൽ പാസ്വേഡ്" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "കിട്ടി" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "മോശം അഭ്യർത്ഥന" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "പേര്" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "വിലാസം" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "വെബ്സൈറ്റ്" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://example.com instead of " +"http://example.com/index.html." +msgstr "" + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "ഫോൺ" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware of local privacy laws, " +"especially for private phone numbers." +msgstr "" + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "വിക്കിപീഡിയ" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like “en:Article title”." +msgstr "" + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "തുറക്കുന്ന സമയം" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "" + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "ജനസംഖ്യ" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "ഉയരം" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "അതെ" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "ഇല്ല" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "നിയുക്തനായി" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "വൈ-ഫൈ " + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "വയര്‍" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "ടെര്‍മിനല്‍" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "സേവനം" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "മതം" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "അനീമിസം" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "ബഹാ ഇ" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "ബുദ്ധമതം" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "കാവോഡായിസം" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "ക്രിസ്തുമതം" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "ഹിന്ദുമതം" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "ജൈനമതം" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "ഇസ്ലാം" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "പല മതങ്ങള്‍" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "പാസ്തഫാരിയന്‍ മതം" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "സൈന്റോളജി" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "ഷിന്റോ" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "സിഖ് മതം" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "താവോയിസം" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "വൂഡു" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "കക്കുസ്" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "കുറിപ്പ്" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about an element, the " +"author’s intent when creating it, or hints for further improvement." +msgstr "" + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ല്‍ ചേര്‍ക്കുക" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "തരം തെരഞ്ഞെടുക്കുക" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "ചെയ്തു" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "ജനസംഖ്യ:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "ഉയരം:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "തുറക്കുന്ന സമയം:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "ഇന്റെര്‍നെറ്റ് ലഭ്യത:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "മതം:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "കക്കുസ്:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "വീല്‍ചെയര്‍ ലഭ്യത:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "ഫോൺ:" + +#: src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:218 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "അതെ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:225 +msgid "limited" +msgstr "പരിമിതപ്പെടുത്തിയിരിക്കുന്നു" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:231 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "ഇല്ല" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:238 +msgid "designated" +msgstr "പ്രത്യേക" + +#: src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "%s-ല്‍ നിന്നും %s-ലേക്ക്" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "റൂട്ട് മറിക്കുക" + +#: src/sendToDialog.js:175 +msgid "Failed to open URI" +msgstr "" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:293 +#, javascript-format +msgid "Estimated time: %s" +msgstr "" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "" + +#: src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "എത്തിച്ചേരേണ്ടത്" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transitLegRow.js:77 +msgid "Start" +msgstr "പുറപ്പെടുക" + +#: src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "നടക്കാനുള്ള വഴി കാണിക്കുക" + +#: src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "നടക്കാനുള്ള വഴി മറയ്ക്കുക" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "%s നടക്കുക" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:254 +#, javascript-format +msgid "%s – %s" +msgstr "" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:281 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:292 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:298 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "" +msgstr[1] "" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:651 +#, javascript-format +msgid "%s–%s" +msgstr "" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "സൂര്യോദയം മുതൽ സൂര്യാസ്തമനം വരെ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "" + +#: src/translations.js:185 +msgid "every day" +msgstr "എല്ലാ ദിവസവും" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "പൊതു അവധികൾ" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "സ്കൂള്‍ അവധിക്കാലം" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "" + +#: src/translations.js:264 +msgid "not open" +msgstr "തുറന്നിട്ടില്ല" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "വയര്‍" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "ടെര്‍മിനല്‍" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "സേവനം" + +#. Translators: Accuracy of user location information +#: src/utils.js:226 +msgid "Unknown" +msgstr "അപരിചിതം" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Exact" +msgstr "അനുയോജ്യമായ" + +#: src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "" + +#: src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "" + +#: src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "" + +#. Translators: This is a distance measured in meters +#: src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "" + +#. Translators: This is a distance measured in miles +#: src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "" + +#. Translators: This is a distance measured in feet +#: src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "" + +#~ msgid "Last known location and accuracy" +#~ msgstr "അവസാനത്തെ സ്ഥാനവും കൃത്യതയും" + +#~ msgid "Last known location (latitude and longitude in degrees) and accuracy (in meters)." +#~ msgstr "അവസാന അറിയുന്ന സ്ഥലവും (അക്ഷാംശവും രേഖാംശവും ഡിഗ്രിയില്‍) കൃത്യതയും (മീറ്ററില്‍)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ഉപയോക്താവിന്‍റെ അവസാന സ്ഥാനത്തിന്റെ വിവരണം." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ഉപയോക്താവിന്റെ സ്ഥാനം ഉപയോക്താവ് നേരിട്ട് ചെയ്തതാണോ എന്ന്." + +#~ msgid "I’m here!" +#~ msgstr "എന്റെ സ്ഥാനം" + +#~ msgid "Satellite" +#~ msgstr "ഉപഗ്രഹം" + +#~ msgid " km²" +#~ msgstr "കിമീ²" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 00000000..f59530e7 --- /dev/null +++ b/po/ms.po @@ -0,0 +1,1838 @@ +# Malay translation for gnome-maps. +# Copyright (C) 2020 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# abuyop , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-01-27 07:57+0000\n" +"PO-Revision-Date: 2020-01-27 17:51+0800\n" +"Language-Team: Pasukan Terjemahan GNOME Malaysia\n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"Last-Translator: abuyop \n" +"X-Generator: Poedit 2.0.6\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Peta GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Cari tempat-tempat di sekitar dunia" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Peta memudahkan capaian pada peta di serata dunia. Ia membolehkan anda cari " +"tempat yang dikehendaki dengan pantas iaitu menggelintar sebuah bandar atau " +"jalan, atau ketahui lokasi untuk bertemu dengan rakan." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Peta menggunakan pangkalan data OpenStreetMap yang terhasil secara " +"kolaboratif oleh beratus-ratus individu di serata dunia." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Anda boleh menggelintar jenis-jenis lokasi secara khusus, seperti \"Pubs " +"near Main Street, Boston” atau “Hotels near Alexanderplatz, Berlin”." + +#: data/org.gnome.Maps.appdata.xml.in:92 +msgid "The GNOME Project" +msgstr "Projek GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:30 +#: src/application.js:81 src/mainWindow.js:141 src/mainWindow.js:550 +msgid "Maps" +msgstr "Peta" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Sebuah aplikasi peta yang ringkas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Peta;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Membolehkan lokasi anda ditunjukkan di dalam peta." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "lokasi dilihat terakhir" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinat lokasi dilihat kali terakhir." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zum" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Aras zum" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Jenis peta" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Jenis peta yang dipaparkan (jalan, aerial, dll.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Saiz tetingkap" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Saiz tetingkap (lebar dan tinggi)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Kedudukan tetingkap" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Kedudukan tetingkap (X dan Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Keadaan tetingkap dimaksimumkan" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Bilangan maksimum keputusan gelintar" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Bilangan maksimum keputusan gelintar melalui geocode search." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Bilang tempat baru-baru ini disimpan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Bilangan tempat baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Bilangan laluan baru-baru ini untuk disimpan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Bilangan laluan baru-baru ini dilawati untuk disimpan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Facebook" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Facebook terakhir digunakan. Nilai yang " +"mungkin adalah: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS atau SELF." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Tetapan kerahsiaan daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Tetapan kerahsiaan daftar-masuk Foursquare terakhir digunakan. Nilai yang " +"mungkin adalah: public, followers atau private." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Siaran Facebook daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Facebook yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Siaran Twitter daftar-masuk Foursquare" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Menunjukkan jika Foursquare patut siarkan daftar-masuk sebagai satu hantaran " +"di dalam akaun Twitter yang berkaitan dengan akaun Foursquare." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nama pengguna atau alamat e-mel OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Menunjukkan jika pengguna telah berdaftar masuk untuk menyunting data " +"OpenstreetMap." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Jenis pengangkutan terakhir digunakan untuk perjalanan" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Ketampakan" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Hantaran pada Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Hantaran pada Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Batal" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "_Daftar masuk" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Sesiapa Sahaja" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Rakan rakan" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Rakan sahaja" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Saya sahaja" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Awam" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Pengikut" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Persendirian" + +#: data/ui/context-menu.ui:9 +msgid "What’s here?" +msgstr "Apa ada di sini?" + +#: data/ui/context-menu.ui:16 +msgid "Copy Location" +msgstr "Salin Lokasi" + +#: data/ui/context-menu.ui:29 +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pandangan eksport" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksport" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Sertakan laluan dan penanda" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Am" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Tunjuk Pintasan" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Gelintar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Cetak laluan" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Keluar" + +#: data/ui/help-overlay.ui:55 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pandangan Peta" + +#: data/ui/help-overlay.ui:59 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zum masuk" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zum keluar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Togol skala" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Beralih ke pandangan jalan" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Beralih ke pandangan aerial" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Buka lapisan bentuk" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:69 +msgid "Open Shape Layer…" +msgstr "Buka Lapisan Bentuk…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Hidupkan perkhidmatan lokasi untuk mencari lokasi anda" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Batal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Tetapan Lokasi" + +#: data/ui/main-window.ui:8 +msgid "Set up OpenStreetMap Account" +msgstr "Pasang Akaun OpenStreetMap" + +#: data/ui/main-window.ui:12 +msgid "Export as Image" +msgstr "Eksport sebagai Imej" + +#: data/ui/main-window.ui:17 +msgid "_Keyboard Shortcuts" +msgstr "Pintasan Papan _Kekunci" + +#: data/ui/main-window.ui:22 +msgid "About Maps" +msgstr "Perihal Peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:45 +msgid "Go to current location" +msgstr "Pergi ke lokasi semasa" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:66 +msgid "Choose map type" +msgstr "Pilih jenis peta" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:91 +msgid "Zoom out" +msgstr "Zum keluar" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:107 +msgid "Zoom in" +msgstr "Zum masuk" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:146 +msgid "Toggle route planner" +msgstr "Togol perancang laluan" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:167 +msgid "Toggle favorites" +msgstr "Togol kegemaran" + +#. Translators: This is a tooltip +#: data/ui/main-window.ui:187 +msgid "Print Route" +msgstr "Cetak Laluan" + +#: data/ui/main-window.ui:250 +msgid "Maps is offline!" +msgstr "Peta di luar talian!" + +#: data/ui/main-window.ui:260 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Peta perlukan satu sambungan internet aktif supaya dapat berfungsi dengan " +"baik, tetapi tidak ditemui." + +#: data/ui/main-window.ui:269 +msgid "Check your connection and proxy settings." +msgstr "Periksa sambungan dan tetapan proksi anda." + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "Tambah ke laluan baharu" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "Kongsi lokasi" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "Tanda sebagai kegemaran" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "Daftar-masuk di sini" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Akaun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Daftar masuk untuk menyunting peta" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Bantu menambah baik peta, menggunakan\n" +"akaun OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mel" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Kata laluan" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign In" +msgstr "Daftar Masuk" + +#: data/ui/osm-account-dialog.ui:146 +msgid "Don’t have an account?" +msgstr "Belum ada akaun?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:159 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Maaf, tidak berjaya. Cuba sekali lagi, atau lawati\n" +"OpenStreetMap untuk menetap semula kata laluan anda." + +#: data/ui/osm-account-dialog.ui:172 +msgid "The verification code didn’t match, please try again." +msgstr "Kod pengesahan tidak sepadan, cuba sekali lagi." + +#: data/ui/osm-account-dialog.ui:209 +msgid "Enter verification code shown above" +msgstr "Masukkan kod pengesahan yang ditunjukkan di bawah" + +#: data/ui/osm-account-dialog.ui:232 +msgid "Verify" +msgstr "Sahkan" + +#: data/ui/osm-account-dialog.ui:262 +msgid "Signed In" +msgstr "Berdaftar Masuk" + +#: data/ui/osm-account-dialog.ui:275 +msgid "Your OpenStreetMap account is active." +msgstr "Akaun OpenStreetMap anda masih aktif." + +#: data/ui/osm-account-dialog.ui:309 +msgid "Sign Out" +msgstr "Daftar Keluar" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Jalan" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Nombor rumah" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poskod" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Bandar" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Jenis" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Tiada" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Tambah Medan" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Ulasan" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Perubahan peta akan kelihatan pada semua peta yang\n" +"menggunakan data OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Digunakan Baru-Baru Ini" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:512 +msgid "Next" +msgstr "Berikutnya" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "Sunting di OpenStreetMap" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "Tunjuk lagi maklumat" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Tiad keputusan ditemui" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Seret untuk mengubah tertib laluan" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Buka Lokasi" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "Salin" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "Hantar Kepada…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "Buka Lapisan Bentuk" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Buka" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Togol tampak" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Gelintar laluan oleh GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerari laluan untuk pengangkutan awam disediakan oleh\n" +"perkhidmatan pihak-ketiga.\n" +"GNOME tidak memberi apa-apa jaminan ketepatan itinerari dan jadual yang " +"ditunjukkan.\n" +"Perhatian, sesetengah penyedia tidak menyertakan semua mod pengangkutan yang " +"ada,\n" +"iaitu penyedia kebangsaan mungkin tidak melibatkan kapal terbang, dan " +"penyedia tempatan\n" +"mungkin tidak melibatkan keretapi wilayah.\n" +"Nama dan jenama yang ditunjukkan dianggap sebagai tanda dagangan berdaftar " +"bila perlu." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Tunjuk lagi keputusan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Sembunyi hentian dan maklumat pertengahan" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tunjuk hentian dan maklumat pertengahan" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pergi Sekarang" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pergi Pada" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tiba Pada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tunjuk" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bas" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tram" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Keretapi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Subway" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feri" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Kapal Terbang" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "Lokasi semasa" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zum masuk untuk menambah lokasi!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom Masuk" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gagal mencari struktur jubin dalam direktori" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gagal menghurai dokumen XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atribut diperlukan hilang" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Tidak dapat mencari unsur OSM" + +#: src/application.js:94 +msgid "A path to a local tiles directory structure" +msgstr "Satu laluan ke struktur direktori jubin setempat" + +#: src/application.js:98 +msgid "Show the version of the program" +msgstr "Tunjuk versi program" + +#: src/application.js:104 +msgid "Ignore network availability" +msgstr "Abai ketersediaan rangkaian" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Pilih satu akaun" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Memuatkan" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Pilih satu tempat" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Facebook. Sila " +"pilih salah satu menerusi senarai ini." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Peta tidak dapat mencari tempat untuk mendaftar masuk dengan Foursquare. " +"Sila pilih salah satu menerusi senarai ini." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Daftar masuk pada %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Tulis satu mesej pilihan untuk mendaftar masuk pada %s." + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Satu ralat telah berlaku" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Tidak dapat mencari \"%s\" dalam perkhidmatan sosial" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Tidak dapat mencari satu tempat yang sesuai untuk mendaftar masuk dalam " +"lokasi ini" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Kelayakan telah luput, sila buka Akaun Dalam Talian untuk mendaftar masuk " +"dan membenarkan akaun ini" + +#: src/contextMenu.js:94 +msgid "Route from here" +msgstr "Laluan dari sini" + +#: src/contextMenu.js:96 +msgid "Add destination" +msgstr "Tambah destinasi" + +#: src/contextMenu.js:98 +msgid "Route to here" +msgstr "Laluan ke sini" + +#: src/contextMenu.js:124 +msgid "Nothing found here!" +msgstr "Tiada apa-apa ditemui di sini!" + +#: src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasi telah ditambah ke dalam peta, perhatian ia mungkin mengambil masa " +"sebelum dapat ditunjukkan pada peta dan dalam keputusan gelintar." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Peta pada %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem fail adalah baca sahaja" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Anda tidak mempunyai keizinan menyimpan di sana" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktori tidak wujud" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Tiada nama fail dinyatakan" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Tidak boleh mengeksport pandangan" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "koordinat tidak sah" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ralat hurai" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "geometri tidak diketahui" + +#: src/graphHopper.js:112 src/transitPlan.js:192 +msgid "Route request failed." +msgstr "Permintaan laluan gagal." + +#: src/graphHopper.js:119 src/transitPlan.js:184 +msgid "No route found." +msgstr "Tiada laluan ditemui." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1100 +msgid "Start!" +msgstr "Mula!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "Semua Fail Lapisan" + +#: src/mainWindow.js:451 +msgid "Failed to connect to location service" +msgstr "Gagal menyambung dengan perkhidmatan lokasi" + +#: src/mainWindow.js:548 +msgid "translator-credits" +msgstr "" +"abuyop\n" +"CL TAN https://launchpad.net/~tcl111985\n" +"Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris\n" +"Launchpad Translations Administrators https://launchpad.net/~rosetta\n" +"ahmad akmal bin mohd idris https://launchpad.net/~mamahopsk87\n" +"dequan https://launchpad.net/~dequan" + +#: src/mainWindow.js:551 +msgid "A map application for GNOME" +msgstr "Sebuah aplikasi peta untuk GNOME" + +#: src/mainWindow.js:562 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Hak cipta © 2011 – 2019 Red Hat, Inc. dan para pengarang Peta GNOME" + +#: src/mainWindow.js:582 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Data peta oleh %s dan para penyumbang" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:598 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jubin peta disediakan oleh %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:627 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Gelintar disediakan oleh %s menggunakan %s" + +#: src/mapView.js:375 +msgid "File type is not supported" +msgstr "Jenis fail tidak disokong" + +#: src/mapView.js:382 +msgid "Failed to open layer" +msgstr "Gagal membuka lapisan" + +#: src/mapView.js:418 +msgid "Failed to open GeoURI" +msgstr "Gagal membuka GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Nama pengguna atau kata laluan salah" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Berjaya" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Permintaan tidak elok" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objek tidak ditemui" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflik, ada orang lain baru sahaja mengubah suai objek" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objek telah dipadamkan" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud" + +#: src/osmEditDialog.js:105 +msgid "Name" +msgstr "Nama" + +#: src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Nama rasmi. Ia biasanya muncul ketika daftar." + +#: src/osmEditDialog.js:111 +msgid "Address" +msgstr "Alamat" + +#: src/osmEditDialog.js:119 +msgid "Website" +msgstr "Tapak Sesawang" + +#: src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Tapak sesawang rasmi. Cuba guna bentuk URL paling asas iaitu http://example." +"com selain dari http://example.com/index.html." + +#: src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Nombor telefon. Guna format antarabangsa, bermula dengan tanda +. Hati-hati " +"dengan undang-undang kerahsiaan setempat, terutamanya nombor telefon " +"persendirian." + +#: src/osmEditDialog.js:136 src/placeBubble.js:191 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Format yang digunakan patut sertakan kod bahasa dan tajuk artikel seperti " +"“en:Article title”." + +#: src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Jam buka" + +#: src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Lihat pautan dalam label untuk bantuan berkenaan format." + +#: src/osmEditDialog.js:152 +msgid "Population" +msgstr "Populasi" + +#: src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Ketinggian (tinggi di atas aras laut) sesuatu titik dalam meter." + +#: src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Capaian kerusi roda" + +#: src/osmEditDialog.js:166 src/osmEditDialog.js:175 src/osmEditDialog.js:213 +msgid "Yes" +msgstr "Ya" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "No" +msgstr "Tidak" + +#: src/osmEditDialog.js:168 +msgid "Limited" +msgstr "Terhad" + +#: src/osmEditDialog.js:169 +msgid "Designated" +msgstr "Dikhususkan" + +#: src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Capaian internet" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:177 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Berwayar" + +#: src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:180 +msgid "Service" +msgstr "Perkhidmatan" + +#: src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Agama" + +#: src/osmEditDialog.js:186 src/translations.js:363 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:188 src/translations.js:365 +msgid "Buddhism" +msgstr "Budha" + +#: src/osmEditDialog.js:189 src/translations.js:366 +msgid "Caodaism" +msgstr "Taodaisme" + +#: src/osmEditDialog.js:190 src/translations.js:367 +msgid "Christianity" +msgstr "Kristian" + +#: src/osmEditDialog.js:191 src/translations.js:368 +msgid "Confucianism" +msgstr "Konfucianisme" + +#: src/osmEditDialog.js:192 src/translations.js:369 +msgid "Hinduism" +msgstr "Hindu" + +#: src/osmEditDialog.js:193 src/translations.js:370 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:194 src/translations.js:371 +msgid "Judaism" +msgstr "Judaisme" + +#: src/osmEditDialog.js:195 src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:196 src/translations.js:373 +msgid "Multiple Religions" +msgstr "Agama Berbilang" + +#: src/osmEditDialog.js:197 src/translations.js:374 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:198 src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:199 src/translations.js:376 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:200 src/translations.js:377 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:201 src/translations.js:378 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:202 src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:203 src/translations.js:380 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:204 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarian Universalisme" + +#: src/osmEditDialog.js:205 src/translations.js:382 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:206 src/translations.js:383 +msgid "Yazidism" +msgstr "Yazidisme" + +#: src/osmEditDialog.js:207 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastrianisme" + +#: src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Tandas" + +#: src/osmEditDialog.js:217 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Maklumat yang digunakan untuk maklumkan pemeta lain berkenaan maklumat tidak " +"jelas berkenaan sesebuah unsur, niat pengarang ketika menciptanya, atau " +"pembayang untuk penambahbaikan lanjutan." + +#: src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Tambah ke OpenStreetMap" + +#: src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Pilih Jenis" + +#: src/osmEditDialog.js:496 +msgid "Done" +msgstr "Selesai" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "Tempat tanpa nama" + +#: src/placeBubble.js:143 +msgid "Population:" +msgstr "Populasi:" + +#: src/placeBubble.js:149 +msgid "Altitude:" +msgstr "Altitud:" + +#: src/placeBubble.js:154 +msgid "Opening hours:" +msgstr "Jam buka:" + +#: src/placeBubble.js:159 +msgid "Internet access:" +msgstr "Capaian internet:" + +#: src/placeBubble.js:164 +msgid "Religion:" +msgstr "Agama:" + +#: src/placeBubble.js:169 +msgid "Toilets:" +msgstr "Tandas:" + +#: src/placeBubble.js:174 +msgid "Wheelchair access:" +msgstr "Capaian kerusi roda:" + +#: src/placeBubble.js:180 src/placeBubble.js:184 +msgid "Phone:" +msgstr "Telefon:" + +#: src/placeEntry.js:209 +msgid "Failed to parse Geo URI" +msgstr "Gagal menghurai URI Geo" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "ya" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "terhad" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "tidak" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "dikhususkan" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "Tempat tidak ditemui dalam OpenStreetMap" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "URL OpenStreetMap tidak sah" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "Koordinat dalam URL tidak sah" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "URL tidak disokong" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Dari %s hingga %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Memuatkan jubin-jubin peta untuk percetakan" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "" +"Anda boleh menghenti paksi percetakan jika ia mengambil masa terlalu lama" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Henti paksa percetakan" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Tambah melalui lokasi" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Buang melalui lokasi" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Songsangkan laluan" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "Tambah %s ke %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "Gagal membuka URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "Buka dengan %s" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "gagal memuatkan fail" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:296 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Masa anggaran: %s" + +#: src/sidebar.js:352 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerari disediakan oleh %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Mula pada %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Mula" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Berjalan %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tiba pada %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1113 +msgid "Arrive" +msgstr "Tiba" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Tunjuk arahan berjalan" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Sembunyi arahan berjalan" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Muat alternatif lebih awal" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Muat alternatif terkemudian" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Tiada alternatif lebih awal ditemui." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Tiada alternatif terkemudian ditemui." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:143 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:188 +msgid "No timetable data found for this route." +msgstr "Tiada data jadual waktu ditemui untuk laluan ini." + +#: src/transitPlan.js:196 +msgid "No provider found for this route." +msgstr "Tiada penyedia ditemui untuk laluan ini." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:313 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:340 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minit" +msgstr[1] "%d minit" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d jam" +msgstr[1] "%d jam" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:357 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d jam" +msgstr[1] "%d:%02d jam" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:750 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "dalam tempoh" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "dari matahari terbit hingga matahari terbenam" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "setiap hari" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "cuti umum" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "cuti sekolah" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "tidak buka" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "berwayar" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "terminal" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "perkhidmatan" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Ketepatan: %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:229 +msgid "Unknown" +msgstr "Tidak diketahui" + +#. Translators: Accuracy of user location information +#: src/utils.js:232 +msgid "Exact" +msgstr "Tepat" + +#: src/utils.js:290 +#, javascript-format +msgid "%f h" +msgstr "%f j" + +#: src/utils.js:292 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: src/utils.js:294 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:305 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:308 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:316 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:319 +#, javascript-format +msgid "%s ft" +msgstr "%s kaki" + +#: src/transitplugins/openTripPlanner.js:1174 +#, javascript-format +msgid "Continue on %s" +msgstr "Teruskan pada %s" + +#: src/transitplugins/openTripPlanner.js:1176 +msgid "Continue" +msgstr "Teruskan" + +#: src/transitplugins/openTripPlanner.js:1179 +#, javascript-format +msgid "Turn left on %s" +msgstr "Belok kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1181 +msgid "Turn left" +msgstr "Belok kiri" + +#: src/transitplugins/openTripPlanner.js:1184 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Belok sedikit kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1186 +msgid "Turn slightly left" +msgstr "Belok sedikit kiri" + +#: src/transitplugins/openTripPlanner.js:1189 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Belok tajam kiri pada %s" + +#: src/transitplugins/openTripPlanner.js:1191 +msgid "Turn sharp left" +msgstr "Belok tajam kiri" + +#: src/transitplugins/openTripPlanner.js:1194 +#, javascript-format +msgid "Turn right on %s" +msgstr "Belok kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1196 +msgid "Turn right" +msgstr "Belok kanan" + +#: src/transitplugins/openTripPlanner.js:1199 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Belok sedikit kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1201 +msgid "Turn slightly right" +msgstr "Belok sedikit kanan" + +#: src/transitplugins/openTripPlanner.js:1204 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Belok tajam kanan pada %s" + +#: src/transitplugins/openTripPlanner.js:1206 +msgid "Turn sharp right" +msgstr "Belok tajam kanan" + +#: src/transitplugins/openTripPlanner.js:1212 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Dalam bulatan, ambil susur keluar %s" + +#: src/transitplugins/openTripPlanner.js:1214 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Dalam bulatan, ambil susur keluar ke %s" + +#: src/transitplugins/openTripPlanner.js:1216 +msgid "Take the roundabout" +msgstr "Masuk bulatan" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Masuk lif dan keluar pada %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Take the elevator" +msgstr "Masuk lif" + +#: src/transitplugins/openTripPlanner.js:1226 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Buat satu pusingan-u ke %s" + +#: src/transitplugins/openTripPlanner.js:1228 +msgid "Make a left u-turn" +msgstr "Buat satu pusingan-u" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Buat satu pusingan-u kanan ke %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Make a right u-turn" +msgstr "Buat satu pusingan-u kanan" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 00000000..4d22a2b0 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1885 @@ +# Norwegian bokmål translation of gnome-maps. +# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kjartan Maraas , 2013-2021. +# Åka Sikrom , 2014. +# haarek , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.40.x\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-13 14:59+0000\n" +"PO-Revision-Date: 2021-03-13 18:58+0100\n" +"Last-Translator: Kjartan Maraas \n" +"Language-Team: Norwegian bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME kart" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Se på steder over hele verden" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kart gir deg rask tilgang til kart for hele verden. Det lar deg raskt finne " +"stedet du leter etter ved å søke etter en by eller en gate, eller finne et " +"sted å møte en venn." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kart bruker OpenStreetMap-databasen som er laget av hundretusener av " +"mennesker fra hele verden." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Du kan også søke etter en bestemt type sted, som f.eks. «Pub nær Main " +"Street, Boston» eller «Hoteller nær Alexanderplatz, Berlin»." + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME prosjektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "Kart" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Et enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kart;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Lar lokasjonen din vises på kartet." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "sist viste posisjon" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater for sist viste posisjon." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoom-nivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Type kart" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Type kart som skal vises (gate, fly osv.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Vindustørrelse" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Vindustørrelse (bredde og høyde)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vinduposisjon" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vinduposisjon (x og y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Vindu maksimert" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tilstand for maksimering av vindu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksimalt antall søkeresultater" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksimalt antall søkeresultater fra geokode-søk." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antall nylige steder å lagre" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antall nylig besøkte steder som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antall nylige ruter å lagre" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antall nylig besøkte ruter som skal lagres." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Personvern-innstilling for Facebook-innsjekk" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Sist brukt personvern-innstilling for Facebook-innsjekk. Følgende verdier er " +"gyldige: «EVERYONE» (alle), «FRIENDS_OF_FRIENDS» (venners venner), " +"«ALL_FRIENDS» (alle venner) og «SELF» (bare meg)." + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Personvern-innstilling for Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Sist brukt personvern-innstilling for Foursquare-innsjekk. Følgende verdier " +"er gyldige: «public», «followers» og «private»." + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Facebook-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Facebook-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Twitter-publisering av Foursquare-innsjekk" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Bestemmer om Foursquare skal publisere innsjekk som innlegg på Twitter-" +"kontoen som er koblet med aktuell Foursquare-konto." + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "Brukernavn eller e-postadresse for OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indikerer om bruker har logget inn for å redigere OpenStreeMap data." + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "Sist brukte transporttype for ruting" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "Nattmodus" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "Hvorvidt programmet vises i nattmodus." + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "Post på Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "Post på Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "S_jekk inn" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "Alle" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "Venner av venner" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "Bare venner" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "Bare meg" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "Offentlig" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "Følgere" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rute fra denne lokasjonen" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Legg til mellomstopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rute til denne lokasjonen" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Hva finnes her?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopier posisjon" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksporter visning" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Eksporter" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "Ta med rute og markører" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "Velg karttype" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "Zoom ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "Zoom inn" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "Slå av/på favoritter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generelt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Vis snarveier" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Søk" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Slå av/på ruteplanlegger" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rute" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avslutt" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Åpne hovedmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvisning" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom inn" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Slå av/på skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå til gjeldende posisjon" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Bytt til gatevisning" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Bytt til flyvisning" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Åpne formlag" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Vis etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Åpne formlag …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Skru på posisjonstjenester for å se hvor du er" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Posisjonsinnstillinger" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Sett opp konto på OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Eksporter som bilde" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tastatursnarveier" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kart" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Åpne hovedmeny" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kart er frakoblet!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kart trenger en aktiv internettforbindelse for å fungere, men ingen ble " +"funnet." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Sjekk tilkobling og innstillinger for proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto for OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logg inn for å redigere kart" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjelp til å forbedre kartet med\n" +"en OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Passord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrer deg" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logg inn" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Beklager, det virket ikke. Vennligst prøv igjen eller besøk\n" +"OpenStreetMap for å nullstille passordet ditt." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifiseringskoden var ikke riktig. Vennligst prøv igjen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Oppgi verifikasjonskoden som vises over" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiser" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Logget inn" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Din OpenStreetMap-konto er aktiv." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logg ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gate" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "By" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Type" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Legg til felt" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Endringer på kartet vil vises på alle kart som bruker\n" +"data fra OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nylig brukt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "Neste" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ingen resultater funnet" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "Det har oppstått en feil" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra for å endre rekkefølgen på ruten" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Åpne posisjon" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopier" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Send til …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Sjekk inn …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Åpne formlag" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Åpne" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå av/på synlige" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Rutesøk av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutetabeller for offentlig transport tilbys av tredjepartstjenester\n" +"\n" +"GNOME kan ikke garantere riktighet for rutetabellene og tidsplanene.\n" +"Merk at enkelte tilbydere ikke alltid inkluderer alle mulige typer " +"transport. F.eks. vil noen aktører ikke ta med flyselskaper, mens en lokal " +"tilbyder kanskje utelater regionstog.\n" +"Navn og merker som vises skal anses som registrerte varemerker når det er " +"relevant." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Vis flere resultater" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skjul stopp og informasjon langs ruten" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Vis stopp og informasjon på veien" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Dra nå" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Dra før" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Ankom før" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Vis" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Busser" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trikker" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tog" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "T-bane" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Ferjer" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Fly" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "Del posisjon" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Legg til i ny rute" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Retningsanvisninger" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Merk som favoritt" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Rediger på OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom inn for å legge til en lokasjon!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom inn" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Klarte ikke å finne flisstruktur i katalogen" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Klarte ikke å tolke XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Mangler nødvendige attributter" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Fant ikke OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sti til en lokal katalogstruktur med fliser" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Størrelse på fliser i lokal katalogstruktur med fliser" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Vis programmets versjon" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Overse nettverkstilgjengelighet" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Velg en konto" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "Laster" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Velg et sted" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Facebook. Velg et sted " +"her." + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kart finner ikke stedet som skal sjekkes inn på med Foursquare. Velg et sted " +"her." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Sjekk inn på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv en valgfri melding for å sjekke inn ved %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Finner ikke «%s» i sosial tjeneste" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Fant ingen passende steder å sjekke inn på denne posisjonen" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Akkreditiver er utgått. Åpne Nettkontoer for å logge inn og bruke denne " +"kontoen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting her!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokasjonen ble lagt til på kartet. Merk at det kan ta litt tid før den vises " +"på kartet og dukker opp i søkeresultater." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kart fra %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet er skrivebeskyttet" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har ikke rettigheter til å lagre der" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen eksisterer ikke" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Filnavn ikke oppgitt" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ikke eksportere visning" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Gjeldende posisjon" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ugyldig koordinat" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "lesefeil" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ukjent geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Forespørsel om rute feilet." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ingen rute funnet." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle lagfiler" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "Klarte ikke å koble til posisjonstjeneste" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"haarek , Kjartan Maraas , Åka " +"Sikrom " + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "Et kartprogram for GNOME" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Opphavsrett © 2011 - 2021 Red Hat, Inc. og GNOME kart utviklerene" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata av %s og bidragsytere" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartfliser av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Søk tilbys av %s ved bruk av %s" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "Klarte ikke å åpne lag" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "Vil du fortsette?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "Du er i ferd med å åpne filer med en total størrelse på %s MB. Dette kan ta litt tid" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "Filtypen er ikke støttet" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "Klarte ikke å åpne GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Feil brukernavn eller passord" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "Suksess" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "Ugyldig forespørsel" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "Fant ikke objektet" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt. Noen andre har akkurat endret objektet" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objektet er slettet" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Vei eller relasjon refererer til ikke-eksisterende barn" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "Navn" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "Det offisielle navnet. Dette er typisk det som vises på skilt." + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "Adresse" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "Nettsted" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Dette er ikke en gyldig URL. Sjekk at http:// eller https:// er inkludert." + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Det offisielle nettstedet. Prøv å bruke den mest grunnleggende formen av en " +"URL. F.eks. http://eksempel.no i stedet for http://eksempel.no/index.html." + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Bruk det internasjonale formatet som starter med et +-tegn. " +"Vær observant på lokale lover om personvern, spesielt for private " +"telefonnummer." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Formatet som brukes skal inkludere språkkode og tittel på artikkelen slik: «en:Tittel på artikkel»." + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "Åpningstider" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "Se lenken i etiketten for hjelp om format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "Folketall" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "Høyde" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Høyde over have for et punkt i meter." + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "Rullestolvennlig" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "Nei" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "Begrenset" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "Spesialtilpasset" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "Internett-tilgang" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Trådløst" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "Tjeneste" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "Buddisme" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "Caodaisme" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "Konfusianisme" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "Hinduisme" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "Jainisme" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "Jødedom" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "Flere religioner" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "Sikdom" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "Taoisme" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "Unitarisk universalisme" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "Voodo" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "Jesidisme" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "Merknad" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "Informasjon som brukes til å informere andre kartbrukere om ting som ikke er innlysende om et element. Forfatterens formål når noe ble laget, eller hint for videre forbedring." + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Legg til på OpenStreetMap" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "Velg type" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "Ferdig" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "Sted uten navn" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Klarte ikke å tolke Geo-URI" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "Nøyaktighet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Nøyaktighet: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "Offentlig internett-tilgang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "Ingen internett-tilgang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "Offentlig Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "Kablet internett-tilgang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "Datamaskiner tilgjengelig for bruk" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "Internetthjelp tilgjengelig" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "Ingen toaletter tilgjengelig" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "Toaletter tilgjengelig" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "Rullestol tilgjengelig" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "Begrenset tilgang for rullestol" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "Ikke tilgjengelig med rullestol" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "Utformet for rullestolbrukere" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "Stedet ble ikke funnet i OpenStreetMap" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "Koordinatene i URLen er ikke gyldige" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URLen støttes ikke" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "Fra %s til %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Laster kartruter for utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryte utskriften hvis dette tar for lang tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Legg til mellomlokasjon" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Fjern mellomlokasjon" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Omvendt rute" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Legg til %s til %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Klarte ikke å åpne URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Åpne med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "klarte ikke å laste fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Estimert tid: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Ruteplaner tilbys av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Start ved %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Ankom ved %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Ankom" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Vis instruksjoner for fotgjengere" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skjul instruksjoner for fotgjengere" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Last tidligere alternativer" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Last senere alternativer" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ingen tidligere alternativer funnet." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ingen senere alternativer funnet." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Ingen ruteinformasjon funnet for denne ruten." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen tilbyder funnet for denne ruten." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minutt" +msgstr[1] "%s minutter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s time" +msgstr[1] "%s timer" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s time" +msgstr[1] "%s:%s timer" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Hele døgnet" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Fra soloppgang til solnedgang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "Hver dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "Offentlige fridager" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "Skoleferie" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ikke åpen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "Ukjent" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "Nøyaktig" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s t" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s t %s min" +msgstr[1] "%s t %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Dette tillegget støtter ikke siste ankomst" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsett på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsett" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sving til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sving svakt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sving svakt til venstre" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sving hardt til venstre på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sving hardt til venstre" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sving til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sving til høyre" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sving svakt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sving svakt til høyre" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sving hardt til høyre på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sving hardt til høyre" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "Ta avkjørsel %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "Ta avkjørsel til %s i rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Kjør gjennom rundkjøringen" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta heisen og gå av i %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ta heisen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Ta en u-sving til venstre inn på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Ta en u-sving til venstre" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Ta en u-sving til høyre inn på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Ta en u-sving til høyre" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 00000000..05303199 --- /dev/null +++ b/po/ne.po @@ -0,0 +1,1617 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Gnome Nepali Translation Project\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-07-24 21:57+0000\n" +"PO-Revision-Date: 2017-08-13 14:57+0545\n" +"Last-Translator: Pawan Chitrakar \n" +"Language-Team: Nepali Translation Team \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "जिनोम मानचित्र" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:87 ../src/mainWindow.js:476 +msgid "Maps" +msgstr "मानचित्र" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "सहज मानचित्र अनुप्रयोग" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "मानचित्र;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +#, fuzzy +msgid "last viewed location" +msgstr "हालै हेरिसकेको" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "सञ्झ्याल साइज" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "सञ्झ्यालको नाप( उचाइ र चौडाई )" + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "संझ्यालको स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "सञ्झ्यालको स्थान(X र Y)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "सञ्झ्यालको अधिकतम स्थिति" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +#, fuzzy +msgid "Window maximization state" +msgstr "बढाइएको स्थितिलाई टगल गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "अत्याधिक खोजी परिणाम प्राप्त गर्दै..." + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +#, fuzzy +msgid "Number of recent places to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +#, fuzzy +msgid "Number of recent routes to store" +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +#, fuzzy +msgid "Number of recently visited routes to store." +msgstr "देखाउनलाई दशमलव ठाउँको संख्या" + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:16 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "Foursquare check-in privacy setting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +#, fuzzy +msgid "OpenStreetMap username or e-mail address" +msgstr "इमेल ठेगाना प्रतिलिपि गर्नुहोस्" + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Last used transportation type for routing" +msgstr "" + +#: ../data/ui/app-menu.ui.h:1 +#, fuzzy +msgid "Set up OpenStreetMap Account" +msgstr "सिर्जना र सेटअप गर्नुहोस्" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "कुञ्जीपाटी सटकर्ट" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "बारेमा" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "अन्त्य गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "दृश्यात्मक" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "फेसबुकमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "ट्विट्टरमा पोस्ट गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_रद्द गर्नुहोस्" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +#, fuzzy +msgid "C_heck in" +msgstr "जाँच गर्नुहोस्" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "सबैजना" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "साथीको साथी" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "साथीमात्र" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "म मात्रै" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "सार्वजनिक" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "अनुयायीहरू" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "व्यक्तिगत" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "यहा के छ ?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "स्थान प्रतिलिपि गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "छवि को रुपमा निर्यात गर्नुहोस्" + +#: ../data/ui/context-menu.ui.h:4 +#, fuzzy +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "निर्यात दृष्य" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "निर्यात" + +#: ../data/ui/export-view-dialog.ui.h:4 +#, fuzzy +msgid "Include route and markers" +msgstr "लाइन चिन्हकलाई देखाउनुहोस्" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "सामान्य" + +#: ../data/ui/help-overlay.ui.h:2 +#, fuzzy +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "सर्टकटहरू" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "खोजी" + +#: ../data/ui/help-overlay.ui.h:4 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "उल्टनू" + +#: ../data/ui/help-overlay.ui.h:5 +#, fuzzy +msgctxt "shortcut window" +msgid "Print route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "_बन्द गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:7 +#, fuzzy +msgctxt "shortcut window" +msgid "Map View" +msgstr "...मा मानचित्र्शा" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "यसमा जुम गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "जुम घटाउनुहोस््" + +#: ../data/ui/help-overlay.ui.h:10 +#, fuzzy +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "मापन" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#: ../data/ui/help-overlay.ui.h:12 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:13 +#, fuzzy +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "दृश्य \"%s\" मा स्विच गर्नुहोस्" + +#: ../data/ui/help-overlay.ui.h:14 +#, fuzzy +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "आकार:वितरणको आकार परामिति" + +#: ../data/ui/layers-popover.ui.h:1 +#, fuzzy +msgid "Load Map Layer" +msgstr "छवि मानचित्र लोड गर्नुहोस्" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "" + +#: ../data/ui/location-service-notification.ui.h:2 +#, fuzzy +msgid "Location Settings" +msgstr "सेटिङ्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "हालको स्थानमा जानुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "मानचित्र प्रकार रोज्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +#, fuzzy +msgid "Toggle route planner" +msgstr "उल्टनू" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +#, fuzzy +msgid "Toggle favorites" +msgstr "मनपर्ने" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +#, fuzzy +msgid "Print Route" +msgstr "पथ मेट्नुहोस्" + +#: ../data/ui/main-window.ui.h:12 +#, fuzzy +msgid "Maps is offline!" +msgstr "अफलाइन" + +#: ../data/ui/main-window.ui.h:13 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" + +#: ../data/ui/main-window.ui.h:14 +msgid "Check your connection and proxy settings." +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +#, fuzzy +msgid "Add to new route" +msgstr "नयाँ पात्रो जोड्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +#, fuzzy +msgid "Mark as favorite" +msgstr "मनपर्ने " + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +#, fuzzy +msgid "Check in here" +msgstr "यहाँ ल्याउनुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:1 +#, fuzzy +msgid "OpenStreetMap Account" +msgstr "खाता:" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "इमेल" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "पासवर्ड" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "लगइन गर्दै" + +#: ../data/ui/osm-account-dialog.ui.h:8 +#, fuzzy +msgid "Don’t have an account?" +msgstr "यो प्रदर्शन प्रयोग नगर्नु" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "रूजु गर्नुहोस्" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "" + +#: ../data/ui/osm-account-dialog.ui.h:16 +#, fuzzy +msgid "Your OpenStreetMap account is active." +msgstr "तपाईँको सिप खाताको पासवर्ड के हो ?" + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "साइन आउट" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "सडक" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "घर नम्बर" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "जिप/हुलाकी सङ्केत" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "सहर" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "वर्ग" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "कुनै पनि होइन" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "फाँट थप्नुहोस्" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "टिप्पणी" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "हालै प्रयोग गरिएको" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +#, fuzzy +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "रद्द गर्ने" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:516 +msgid "Next" +msgstr "पछिल्लो" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +#, fuzzy +msgid "Edit on OpenStreetMap" +msgstr "सम्पादन..." + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "बढी सूचना" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "खोजको लागि इन्टर थिच्नुहोस्" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "नतिजा भेटिएन" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +#, fuzzy +msgid "Drag to change order of the route" +msgstr "वक्ररेखाको आकार परिवर्तन गर्न तान्नुहोस् क्लिक गर्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "स्थान खोल्नुहोस्" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "खोल्नुहोस्" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 +msgid "Open Layer" +msgstr "तह खोल्नुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +#, fuzzy +msgid "Toggle visible" +msgstr "दृष्य" + +#: ../data/ui/sidebar.ui.h:1 +#, fuzzy +msgid "Route search by GraphHopper" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:2 +#, fuzzy +msgid "Route search by OpenTripPlanner" +msgstr "राउट स्विच प्रक्रियाकर्ता" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "अरू धेरै नतिजा देखाउनुहोस्" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +#, fuzzy +msgid "Show intermediate stops and information" +msgstr "संस्करण सूचना देखाउनुहोस् र निस्कनुहोस्" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +#, fuzzy +msgid "Leave Now" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +#, fuzzy +msgid "Leave By" +msgstr "खुल्ला छोड्नुहोस्" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "देखाउने" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "बस" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "ट्राम" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "ट्रेन" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "सबवे" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "फेर्री" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:120 +msgid "Current location" +msgstr "हालको स्थन" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "शुद्धता: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +#, fuzzy +#| msgid "Go to current location" +msgid "Zoom in to add location!" +msgstr "स्थान" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "OK" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "" + +#: ../lib/maps-osm.c:56 +#, fuzzy +msgid "Failed to parse XML document" +msgstr "XML कागजात राम्रोसँग ढाँचा भएन !" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "आवश्यक मान हराइरहेछ" + +#: ../lib/maps-osm.c:453 +#, fuzzy +msgid "Could not find OSM element" +msgstr "मद्दत डाइरेक्टरी फेला पार्न सकेन" + +#: ../src/application.js:102 +msgid "A path to a local tiles directory structure" +msgstr "" + +#: ../src/checkInDialog.js:175 +msgid "Select an account" +msgstr "खाता चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:180 ../src/checkInDialog.js:252 +msgid "Loading" +msgstr "लोड गर्दै" + +#: ../src/checkInDialog.js:204 +msgid "Select a place" +msgstr "स्थान चयन गर्नुहोस्" + +#: ../src/checkInDialog.js:209 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:226 +#, fuzzy, javascript-format +msgid "Check in to %s" +msgstr "%s पत्र फाइल जाँच गर्न सकेन: %s" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:236 +#, fuzzy, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s लाई लेख्न असफल भयो (अनुमतिहरू जाँच गर्नुहुन्छ ?)" + +#: ../src/checkInDialog.js:288 ../src/checkIn.js:165 +#: ../src/osmEditDialog.js:553 +msgid "An error has occurred" +msgstr "एउटा त्रुटि देखापर्यो ।" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:147 +#, fuzzy, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "डाइरेक्टरी फेला पार्न सक्दैन %s" + +#: ../src/checkIn.js:149 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" + +#: ../src/checkIn.js:153 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" + +#: ../src/contextMenu.js:96 +#, fuzzy +msgid "Route from here" +msgstr "बाटो भेटिएन" + +#: ../src/contextMenu.js:98 +msgid "Add destination" +msgstr "गन्तव्य थप्नुहोस्" + +#: ../src/contextMenu.js:100 +#, fuzzy +msgid "Route to here" +msgstr "पूर्वनिर्धारित पथ" + +#: ../src/contextMenu.js:129 +msgid "Nothing found here!" +msgstr "केही पनि भेटिएन" + +#: ../src/contextMenu.js:186 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" + +#: ../src/exportViewDialog.js:156 +#, fuzzy +msgid "Filesystem is read only" +msgstr "फाइल प्रणाली" + +#: ../src/exportViewDialog.js:158 +#, fuzzy +msgid "You do not have permission to save there" +msgstr "यो फाइल संचय गर्न तपाईँसँग आवश्यक अनुमतिहरू छैनन् ।" + +#: ../src/exportViewDialog.js:160 +#, fuzzy +msgid "The directory does not exist" +msgstr "त्यहा अवस्थित छैन" + +#: ../src/exportViewDialog.js:162 +#, fuzzy +msgid "No filename specified" +msgstr "फाइलनाम:" + +#: ../src/exportViewDialog.js:170 +#, fuzzy +msgid "Unable to export view" +msgstr "निर्यात गर्नुहोस्" + +#: ../src/geoJSONSource.js:98 +#, fuzzy +msgid "invalid coordinate" +msgstr "समन्वय गर्नुहोस्" + +#: ../src/geoJSONSource.js:149 ../src/geoJSONSource.js:189 +#: ../src/geoJSONSource.js:204 +msgid "parse error" +msgstr "पदवर्णन त्रुटि" + +#: ../src/geoJSONSource.js:183 +msgid "unknown geometry" +msgstr "अज्ञात ज्यामिति" + +#: ../src/graphHopper.js:93 ../src/openTripPlanner.js:665 +#, fuzzy +msgid "Route request failed." +msgstr "अनुरोध असफल" + +#: ../src/graphHopper.js:101 ../src/openTripPlanner.js:628 +msgid "No route found." +msgstr "बाटो भेटिएन" + +#: ../src/graphHopper.js:193 +msgid "Start!" +msgstr "सुरु!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "सबै तह फाइलहरू" + +#: ../src/mainWindow.js:418 +msgid "Failed to connect to location service" +msgstr "स्थान सेवा जडान असफल" + +#: ../src/mainWindow.js:474 +msgid "translator-credits" +msgstr "Pawan Chitrakar " + +#: ../src/mainWindow.js:477 +msgid "A map application for GNOME" +msgstr "जिनोमको मानचित्र अनुप्रयोग" + +#: ../src/mapView.js:356 +msgid "File type is not supported" +msgstr "फाइल प्रकार समर्थित छैन" + +#: ../src/mapView.js:363 +#, fuzzy +msgid "Failed to open layer" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/mapView.js:399 +#, fuzzy +msgid "Failed to open GeoURI" +msgstr "अस्थायी फाइल खोल्न असफल" + +#: ../src/openTripPlanner.js:622 +#, fuzzy +msgid "No earlier alternatives found." +msgstr "%s भन्दा छिटो होइन" + +#: ../src/openTripPlanner.js:623 +#, fuzzy +#| msgid "No route found." +msgid "No later alternatives found." +msgstr "पछि" + +#: ../src/openTripPlanner.js:661 +#, fuzzy +msgid "No timetable data found for this route." +msgstr "बाटो भेटिएन" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:442 +#, fuzzy +msgid "Incorrect user name or password" +msgstr "" +"सर्भरमा जडान गर्दा त्यहाँ एउटा त्रुटि थियो । यो एउटा गलत प्रयोग कर्ता नाम र/वा " +"पासवर्ड प्रयोग गरेको कारणले हुन सक्दछ ।" + +#: ../src/osmConnection.js:444 +msgid "Success" +msgstr "सफलता" + +#: ../src/osmConnection.js:446 +msgid "Bad request" +msgstr "खराब अनुरोध" + +#: ../src/osmConnection.js:448 +msgid "Object not found" +msgstr "वस्तु फेला परेन" + +#: ../src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "" + +#: ../src/osmConnection.js:452 +#, fuzzy +msgid "Object has been deleted" +msgstr "मुद्रणयन्त्र “%s” मेटियो" + +#: ../src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "" + +#: ../src/osmEditDialog.js:104 +msgid "Name" +msgstr "नाम" + +#: ../src/osmEditDialog.js:107 +msgid "The official name. This is typically what appears on signs." +msgstr "" + +#: ../src/osmEditDialog.js:110 +msgid "Address" +msgstr "ठेगाना" + +#: ../src/osmEditDialog.js:118 +msgid "Website" +msgstr "वेबसाइट" + +#: ../src/osmEditDialog.js:121 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" + +#: ../src/osmEditDialog.js:126 +msgid "Phone" +msgstr "फोन" + +#: ../src/osmEditDialog.js:130 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" + +#: ../src/osmEditDialog.js:135 ../src/placeBubble.js:170 +msgid "Wikipedia" +msgstr "विकिपेडिया" + +#: ../src/osmEditDialog.js:139 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" + +#: ../src/osmEditDialog.js:143 +#, fuzzy +msgid "Opening hours" +msgstr "खुल्दैछ" + +#: ../src/osmEditDialog.js:148 +msgid "See the link in the label for help on format." +msgstr "" + +#: ../src/osmEditDialog.js:151 +msgid "Population" +msgstr "जनसङ्ख्या" + +#: ../src/osmEditDialog.js:156 +msgid "Altitude" +msgstr "ऊचाई" + +#: ../src/osmEditDialog.js:159 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" + +#: ../src/osmEditDialog.js:162 +#, fuzzy +msgid "Wheelchair access" +msgstr "पहुँच:" + +#: ../src/osmEditDialog.js:165 ../src/osmEditDialog.js:174 +#: ../src/osmEditDialog.js:212 +msgid "Yes" +msgstr "ठिक छ" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "No" +msgstr "होइन" + +#: ../src/osmEditDialog.js:167 +msgid "Limited" +msgstr "सिमित" + +#: ../src/osmEditDialog.js:168 +msgid "Designated" +msgstr "" + +#: ../src/osmEditDialog.js:171 +#, fuzzy +msgid "Internet access" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:176 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "वाई-फाई" + +#: ../src/osmEditDialog.js:177 +msgid "Wired" +msgstr "तारजडिट" + +#: ../src/osmEditDialog.js:178 +msgid "Terminal" +msgstr "टर्मिनल" + +#: ../src/osmEditDialog.js:179 +msgid "Service" +msgstr "सेवा" + +#: ../src/osmEditDialog.js:182 +msgid "Religion" +msgstr "धर्म" + +#: ../src/osmEditDialog.js:185 ../src/translations.js:363 +msgid "Animism" +msgstr "" + +#: ../src/osmEditDialog.js:186 +msgid "Bahá’í" +msgstr "बहाई धर्म" + +#: ../src/osmEditDialog.js:187 ../src/translations.js:365 +msgid "Buddhism" +msgstr "बौद्ध धर्म" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:366 +msgid "Caodaism" +msgstr "" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:367 +msgid "Christianity" +msgstr "ईसाई धर्म" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:368 +msgid "Confucianism" +msgstr "कन्फुशियस धर्म" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:369 +msgid "Hinduism" +msgstr "हिन्दु धर्म" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:370 +msgid "Jainism" +msgstr "जैन धर्म" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:371 +msgid "Judaism" +msgstr "यहूदी धर्म" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:372 +msgid "Islam" +msgstr "इस्लाम धर्म" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "धेरैवटा क्षेत्र" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:374 +msgid "Paganism" +msgstr "पगानि धर्म" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:376 +msgid "Scientology" +msgstr "वैज्ञानिक विज्ञान" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:377 +msgid "Shinto" +msgstr "शिन्टो धर्म" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:378 +msgid "Sikhism" +msgstr "सिख धर्म" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "आध्यात्मिकता" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:380 +msgid "Taoism" +msgstr "टाओ धर्म" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "यूनिटेरिया यूनिवर्सलवाद" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:382 +msgid "Voodoo" +msgstr "" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:383 +msgid "Yazidism" +msgstr "" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "" + +#: ../src/osmEditDialog.js:209 +msgid "Toilets" +msgstr "शौचालय" + +#: ../src/osmEditDialog.js:216 +msgid "Note" +msgstr "द्रष्टव्य" + +#: ../src/osmEditDialog.js:219 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" + +#: ../src/osmEditDialog.js:328 +#, fuzzy +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "जोडनुहोस् [+]" + +#: ../src/osmEditDialog.js:381 +msgid "Select Type" +msgstr "प्रकार चयन गर्नुहोस्" + +#: ../src/osmEditDialog.js:500 +msgid "Done" +msgstr "सम्पन्न भयो" + +#: ../src/placeBubble.js:122 +msgid "Population:" +msgstr "जनसङ्ख्या :" + +#: ../src/placeBubble.js:128 +msgid "Altitude:" +msgstr "ऊचाई:" + +#: ../src/placeBubble.js:133 +#, fuzzy +msgid "Opening hours:" +msgstr "खुल्दैछ" + +#: ../src/placeBubble.js:138 +#, fuzzy +msgid "Internet access:" +msgstr "वेब र इमेल जस्तो इन्टरनेट पहुँचका लागि कार्यक्रम" + +#: ../src/placeBubble.js:143 +msgid "Religion:" +msgstr "धर्म:" + +#: ../src/placeBubble.js:148 +msgid "Toilets:" +msgstr "शौचालय:" + +#: ../src/placeBubble.js:153 +#, fuzzy +msgid "Wheelchair access:" +msgstr "पहुँच:" + +#: ../src/placeBubble.js:159 ../src/placeBubble.js:163 +msgid "Phone:" +msgstr "फोन:" + +#: ../src/placeEntry.js:190 +#, fuzzy +msgid "Failed to parse Geo URI" +msgstr "जिपिजि प्रयोगकर्ता आइडी संकेत पद वर्णन गर्न असफल भयो ।" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:219 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "ठिक छ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:226 +msgid "limited" +msgstr "सिमित" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:232 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "होइन" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:239 +msgid "designated" +msgstr "" + +#: ../src/printLayout.js:244 +#, javascript-format +msgid "From %s to %s" +msgstr "%s बाट %s " + +#: ../src/printOperation.js:48 +msgid "Loading map tiles for printing" +msgstr "" + +#: ../src/printOperation.js:49 +msgid "You can abort printing if this takes too long" +msgstr "" + +#: ../src/printOperation.js:51 +msgid "Abort printing" +msgstr "परित्याग गर्नुहोस्" + +#: ../src/sendToDialog.js:179 +#, fuzzy +msgid "Failed to open URI" +msgstr "URI खोल्न असक्षम" + +#: ../src/shapeLayer.js:92 +#, fuzzy +msgid "failed to load file" +msgstr "फाइल लोड गर्न असफल" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:294 +#, javascript-format +msgid "Estimated time: %s" +msgstr "अन्दजि समय: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:56 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arrive at %s" + +#: ../src/transitArrivalRow.js:58 +msgid "Arrive" +msgstr "आइपुग्छन्" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:73 +#, javascript-format +msgid "Start at %s" +msgstr "Start at %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:79 +msgid "Start" +msgstr "सुरु" + +#: ../src/transitLegRow.js:107 +#, fuzzy +msgid "Show walking instructions" +msgstr "यसका लागि देखाउनुहोस्" + +#: ../src/transitLegRow.js:108 +#, fuzzy +msgid "Hide walking instructions" +msgstr "सञ्झ्याल लुकाउनुहोस्" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:133 +#, fuzzy, javascript-format +msgid "Walk %s" +msgstr "%s: का लागि" + +#: ../src/transitMoreRow.js:41 +#, fuzzy +msgid "Load earlier alternatives" +msgstr "%s भन्दा छिटो होइन" + +#: ../src/transitMoreRow.js:43 +#, fuzzy +msgid "Load later alternatives" +msgstr "पछि" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:142 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:253 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:280 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d मिनेट" +msgstr[1] "%d मिनेट" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:291 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d घण्टा" +msgstr[1] "%d घण्टा" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:297 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d घण्टा" +msgstr[1] "%d:%02d घण्टा" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:649 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +#, fuzzy +msgid "around the clock" +msgstr "घडी" + +#: ../src/translations.js:58 +#, fuzzy +msgid "from sunrise to sunset" +msgstr "सूर्यास्ट देखि सूर्योदय" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "प्रत्येक दिन" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "सार्वजनिक विदा" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "स्कुल विदा" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +#, fuzzy +msgid "not open" +msgstr "यससँग खोल्नुहोस्:" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "तारजडिट" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "टर्मिनल" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "सेवा" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:231 +msgid "Unknown" +msgstr "अज्ञात" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:234 +msgid "Exact" +msgstr "दुरुस्त" + +#: ../src/utils.js:337 +#, javascript-format +msgid "%f h" +msgstr "%f h" + +#: ../src/utils.js:339 +#, javascript-format +msgid "%f min" +msgstr "%f min" + +#: ../src/utils.js:341 +#, javascript-format +msgid "%f s" +msgstr "%f s" + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:352 +#, javascript-format +msgid "%s km" +msgstr "%s किलोमिटर" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:355 +#, javascript-format +msgid "%s m" +msgstr "%s मिटर" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:363 +#, javascript-format +msgid "%s mi" +msgstr "%s माइल" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:366 +#, javascript-format +msgid "%s ft" +msgstr "%sफिट" + +#~ msgid "I’m here!" +#~ msgstr "म यहा छु" + +#~ msgid "Country code: %s" +#~ msgstr "देश मानक:%s" + +#~ msgid "%f km²" +#~ msgstr "%f वर्गकिलोमिटर" + +#~ msgid "%f km" +#~ msgstr "%f किलोमिटर" + +#~ msgid "%f m" +#~ msgstr "%f m" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 00000000..319f6279 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,2094 @@ +# Dutch translation for gnome-maps +# Copyright (C) 2013, 2014 +# This file is distributed under the same license as the GNOME Maps package. +# Check-in: voorlopig even onvertaald gelaten - Hannie +# Erwin Poeze , 2013, 2014. +# Reinout van Schouwen , 2013. +# Hannie Dumoleyn , 2015. +# Nathan Follens , 2015-2021. +# Justin van Steijn , 2015-2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps 3.16\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 15:56+0200\n" +"Last-Translator: Nathan Follens \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Gnome Kaarten" + +# rond de wereld +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vind plaatsen de wereld rond" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kaarten geeft u snelle toegang tot kaarten over de hele wereld. U kunt snel " +"de plaats waarnaar u op zoek bent vinden door te zoeken naar een stad of de " +"straat, of de plek opzoeken om een vriend te ontmoeten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kaarten gebruikt de gemeenschappelijk opgebouwde OpenStreetMap-database, " +"gemaakt door honderdduizenden mensen over de hele wereld." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Het Gnome-project" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kaarten" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Een eenvoudige kaartentoepassing" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Kaart;Kaarten;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Geeft uw locatie weer op de kaart." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "laatst bekeken locatie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coördinaten van de laatst bekeken locatie." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoomen" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomniveau" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Kaarttype" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Het type kaart om weer te geven (straten, lucht, enz.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Venstergrootte" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Venstergrootte (breedte en hoogte)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vensterpositie" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vensterpositie (X en Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Venstergrootte gemaximaliseerd" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Venstermaximalisatiestaat" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximum aantal zoekresultaten" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximum aantal resultaten van zoeken op geografische positie." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Aantal recente locaties om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Aantal recent bezochte locaties om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Aantal recente routes om op te slaan" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Aantal recent afgelegde routes om op te slaan." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare-inchecken privacyinstellingen" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"De laatst gebruikte privacyinstellingen Foursquare-incheck. Mogelijke " +"waarden zijn: openbaar, volgers of privé." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de incheck in een bericht moet bekend maken in het " +"Facebook-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Bekendmaking door Foursquare van incheck Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Geeft aan of Foursquare de controle in een bericht moet bekend maken in het " +"Twitter-account dat met het Foursquare-account geassocieerd is." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap-gebruikersnaam of -e-mailadres" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Geeft aan of de gebruiker ingelogd is om OpenStreetMap-gegevens te bewerken." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Laatst gebruikte transporttype voor routering" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nachtmodus" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Of het programma in nachtmodus staat." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hybride luchtfototegels gebruiken" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Of luchtfototegels een hybride stijl moeten gebruiken (met labels)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Zichtbaarheid" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Posten op Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Posten op Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Annuleren" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Inc_hecken" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Openbaar" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Volgers" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privé" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Route vanaf hier" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Tussenstop toevoegen" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Route naar hier" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Wat bevindt zich hier?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Locatie kopiëren" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Weergave exporteren" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exporteren" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Route en markeringen opnemen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Kies kaartsoort" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Uitzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Inzoomen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Route afdrukken" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Bladwijzers in/uitschakelen" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Algemeen" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Sneltoetsen tonen" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Zoeken" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Routeplanner in/uitschakelen" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Route afdrukken" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Afsluiten" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kaartweergave" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Inzoomen" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uitzoomen" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Schaal in/uitschakelen" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ga naar huidige locatie" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Overschakelen naar straatbeeld" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Overschakelen naar luchtbeeld" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Vormlaag openen" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Labels tonen" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Vormlaag openen…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Locatiedienst inschakelen om uw locatie te bepalen" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Annuleren" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Locatie-instellingen" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nachtmodus" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap-account instellen" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exporteren als afbeelding" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "S_neltoetsen" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Over Kaarten" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Hoofdmenu openen" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kaarten is offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kaarten heeft een actieve internetverbinding nodig om te functioneren, maar " +"die is niet gevonden." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Controleer uw verbinding en proxy-instellingen." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-account" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Meld u aan om kaarten te bewerken" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Help om de kaart te verbeteren, door gebruik te maken van een\n" +"OpenStreetMap-account." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Wachtwoord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registreren" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Inloggen" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Sorry, dat werkte niet. Probeer het opnieuw of bezoek\n" +"OpenStreetMap om uw wachtwoord te herstellen." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "De verificatiecode kwam niet overeen, probeer het opnieuw." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Voer de verificatiecode hierboven in" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiëren" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingelogd" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Uw OpenStreetMap-account is actief." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Uitloggen" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Straat" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Huisnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postcode" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Plaats" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Soort" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Geen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Commentaar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Wijzigingen aan de kaart zijn zichtbaar op alle kaarten\n" +"die OpenStreetMap-gegevens gebruiken." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recent gebruikt" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Volgende" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Geen resultaten gevonden" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Er is een fout opgetreden" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Verslepen om de volgorde van de route te wijzigen" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Locatie openen" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiëren" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Versturen naar…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Inchecken…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Vormlaag openen" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Openen" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Zichtbaar/onzichtbaar maken" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Routezoeken door GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Routering voor openbaar vervoer wordt aangeboden door diensten van derde " +"partijen.\n" +"Gnome kan de juistheid van de hier weergegeven routes en dienstregelingen " +"niet garanderen.\n" +"Merk op dat sommige leveranciers mogelijk niet alle beschikbare " +"transportmodi weergeven,\n" +"bv. een nationale leverancier geeft mogelijk geen vliegroutes weer, en een " +"lokale leverancier\n" +"geeft mogelijk niet alle regionale treinen weer.\n" +"De hier weergegeven namen en merknamen worden, waar toepasbaar, beschouwd " +"als\n" +"geregistreerde handelsmerken." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Meer resultaten tonen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Tussenstops en informatie verbergen" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Tussenstops en informatie tonen" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Nu vertrekken" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Vertrekken tegen" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Aankomen tegen" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Tonen" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussen" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Treinen" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Veerboten" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Vliegtuigen" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Locatie delen" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Aan nieuwe route toevoegen" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Routebeschrijving" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markeren als bladwijzer" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Bewerken op OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoom in om locatie toe te voegen!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Inzoomen" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Kon de tegelstructuur in de map niet vinden" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Kon XML-document niet ontleden" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Benodigde eigenschappen ontbreken" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kon OSM-element niet vinden" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Een pad naar een mappenstructuur met lokale tegels" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Tegelgrootte voor lokale tegelmap" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "De versie van het programma tonen" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Beschikbaarheid netwerk negeren" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[BESTAND…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Een account kiezen" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Bezig met laden" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Een plaats kiezen" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kaarten kan de plaats om in te checken met Foursquare niet vinden. Gelieve " +"er een uit de lijst te kiezen." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Inchecken bij %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Voeg eventueel een bericht toe bij het inchecken bij %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "‘%s’ werd niet aangetroffen in de sociale dienst" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Er is geen geschikte plaats gevonden om in te checken op deze locatie" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"De aanmeldgegevens zijn verlopen, gelieve Online-accounts te openen om u aan " +"te melden en dit account in te schakelen" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Niets gevonden hier!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locatie is toegevoegd aan de kaart, het kan even duren voor deze op de kaart " +"en in zoekresultaten wordt weergegeven." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kaart op %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Bestandssysteem is alleen-lezen" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "U heeft geen toestemming om hier op te slaan" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "De map bestaat niet" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Geen bestandsnaam opgegeven" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kon weergave niet exporteren" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Huidige locatie" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ongeldig coördinaat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ontleedfout" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "onbekende afmetingen" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Routeaanvraag is mislukt." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Geen route gevonden." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alle laagbestanden" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Verbinden met locatiedienst is mislukt" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Erwin Poeze \n" +"Reinout van Schouwen \n" +"Hannie Dumoleyn \n" +"Nathan Follens \n" +"Justin van Steijn \n" +"\n" +"Meer info over Gnome-NL http://nl.gnome.org" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Een kaartentoepassing voor Gnome" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. en de auteurs van Gnome Kaarten" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kaartgegevens door %s en bijdragers" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kaarttegels geleverd door %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Zoekfunctionaliteit aangeboden door %s met %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Laag openen mislukt" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Wilt u doorgaan?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"U staat op het punt bestanden met een totale grootte van %s MB te openen. " +"Het kan even duren om deze in te laden" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Bestandstype wordt niet ondersteund" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI openen mislukt" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Onjuiste gebruikersnaam of wachtwoord" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Onjuiste aanvraag" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Object niet gevonden" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, iemand anders heeft net het object gewijzigd" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Object is verwijderd" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Manier of relatie verwijst naar niet-bestaande dochter" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Naam" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "De officiële naam. Dit is wat normaal gezien op borden verschijnt." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Dit is geen geldige URL. Zorg dat het deel met http:// of https:// ook " +"toegevoegd wordt." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"De officiële website. Probeer de meest beperkte vorm van een URL te " +"gebruiken, i.e., https://voorbeeld.be in plaats van https://voorbeeld.be/" +"index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefoon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefoonnummer. Gebruik het internationale formaat, beginnend met een " +"plusteken (+). Wees bewust van lokale privacywetten, zeker wanneer het gaat " +"om privételefoonnummers." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mailadres" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Dit is geen geldig e-mailadres. Zorg dat het deel met mailto: toegevoegd " +"wordt." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Contact-e-mailadres voor vragen. Voeg enkel e-mailadressen toe die bedoeld " +"zijn voor publiek gebruik." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Het gebruikte formaat hoort de taalcode en de titel van het artikel te " +"bevatten, zoals ‘nl:Titel van artikel’." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Openingstijden" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Zie de koppeling in het label voor hulp bij het formaat." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populatie" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Hoogte" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "De hoogte boven de zeespiegel van een punt in meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Rolstoeltoegankelijk" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nee" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Beperkt toegankelijk" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Aangewezen" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internettoegang" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Bedraad" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Dienst" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Thuisbezorging" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Alleen" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Boeddisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Christendom" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hindoeïsme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Jodendom" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Meerdere religies" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Heidendom" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaristisch Universalisme" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yezidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Mazdeïsme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Wc's" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Opmerking" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Deze informatie wordt gebruikt om andere ‘mappers’ te informeren over niet-" +"evidente informatie over een element, de bedoeling van de auteur bij het " +"aanmaken ervan, of tips voor verbetering." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Toevoegen aan OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Een type kiezen" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Klaar" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Naamloze plaats" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Kon GeoURI niet ontleden" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coördinaten" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Nauwkeurigheid" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Positienauwkeurigheid: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefoonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Biedt thuisbezorging aan" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Biedt geen thuisbezorging aan" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Biedt alleen thuisbezorging aan" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Openbare internettoegang" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Geen internettoegang" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Openbare wifi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Bekabelde internettoegang" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computers beschikbaar voor gebruik" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internethulp beschikbaar" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Geen wc’s beschikbaar" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Wc’s beschikbaar" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Rolstoeltoegankelijk" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Beperkt rolstoeltoegankelijk" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Niet rolstoeltoegankelijk" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Geschikt voor rolstoelgebruikers" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s onder de zeespiegel" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Op zeeniveau" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religie:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Plaats niet gevonden op OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Coördinaten in URL zijn ongeldig" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL wordt niet ondersteund" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Van %s naar %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Bezig met laden van kaarttegels voor afdrukken" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "U kan het afdrukken afbreken indien het te lang duurt" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Afdrukken afbreken" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "‘Via’ toevoegen" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "‘Via’ verwijderen" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Route omkeren" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s toevoegen aan %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI openen mislukt" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Openen met %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "bestand laden mislukt" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Geschatte tijdsduur: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Routeberekening geleverd door %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Vertrek om %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Start" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Wandel %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Kom aan tegen %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Kom aan" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wandelinstructies tonen" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Wandelinstructies verbergen" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Vroegere alternatieven laden" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Latere alternatieven laden" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Geen vroegere alternatieven gevonden." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Geen latere alternatieven gevonden." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Geen gegevens betreffende dienstregeling gevonden voor deze route." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Geen leverancier gevonden voor deze route." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuut" +msgstr[1] "%s minuten" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s uur" +msgstr[1] "%s uur" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s uur" +msgstr[1] "%s:%s uur" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "De hele dag" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Van zonsopkomst tot zonsondergang" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Dagelijks" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Officiële feestdagen" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Schoolvakanties" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "niet open" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Onbekend" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%su" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%su %sm" +msgstr[1] "%su %sm" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%sm" +msgstr[1] "%sm" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%ss" +msgstr[1] "%ss" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Deze plug-in biedt geen ondersteuning voor laatste aankomst" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Ga door op %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Ga door" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sla linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sla linksaf" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sla iets linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sla iets linksaf" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sla scherp linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sla scherp linksaf" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sla rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sla rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sla iets rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sla iets rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sla scherp rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sla scherp rechtsaf" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Neem op de rotonde afslag %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Neem op de rotonde de afslag naar %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Rijd de rotonde op" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Neem de lift en stap af op %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Neem de lift" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Draai 180 graden linksaf op %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Draai 180 graden linksaf" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Draai 180 graden rechtsaf op %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Draai 180 graden rechtsaf" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "U kunt zelfs naar specifieke soorten locaties zoeken, zoals ‘Pubs in de " +#~ "buurt van Main Street, Boston’ of ‘WiFi-toegang in de buurt van " +#~ "Alexanderplatz, Berlijn’." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook-inchecken privacyinstellingen" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Voor het laatst gebruikte privacyinstellingen Facebook-incheck. Mogelijke " +#~ "waarden zijn: IEDEREEN, VRIENDEN VAN VRIENDEN, ALLE VRIENDEN of ZICHZELF." + +#~ msgid "Everyone" +#~ msgstr "Iedereen" + +#~ msgid "Friends of friends" +#~ msgstr "Vrienden van vrienden" + +#~ msgid "Just friends" +#~ msgstr "Alleen vrienden" + +#~ msgid "Just me" +#~ msgstr "Alleen ik" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kaarten kan de plaats om in te checken met Facebook niet vinden. Gelieve " +#~ "er een uit de lijst te kiezen." + +#~ msgid "Find a Route" +#~ msgstr "Route zoeken" + +#~ msgid "Check in here" +#~ msgstr "Hier inchecken" + +#~ msgid "Show more information" +#~ msgstr "Meer informatie tonen" + +#~ msgid "Population:" +#~ msgstr "Populatie:" + +#~ msgid "Altitude:" +#~ msgstr "Hoogte:" + +#~ msgid "Opening hours:" +#~ msgstr "Openingstijden:" + +#~ msgid "Internet access:" +#~ msgstr "Internettoegang:" + +#~ msgid "Toilets:" +#~ msgstr "Wc's:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Rolstoeltoegankelijk:" + +#~ msgid "Phone:" +#~ msgstr "Telefoon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "beperkt toegankelijk" + +#~ msgid "no" +#~ msgstr "nee" + +#~ msgid "designated" +#~ msgstr "aangewezen" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL is ongeldig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "bedraad" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "dienst" + +#~ msgid "Don’t have an account?" +#~ msgstr "Heeft u geen account?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Routezoeken door OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Bestemming toevoegen" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Openen met een andere toepassing" + +#~ msgid "Press enter to search" +#~ msgstr "Druk op enter om te zoeken" + +#~ msgid "Quit" +#~ msgstr "Afsluiten" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Vormlaag openen…" + +#~ msgid "Load Map Layer" +#~ msgstr "Maplaag laden" + +#~ msgid "Open Layer" +#~ msgstr "Laag openen" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mijl" + +#~ msgid "%f ft" +#~ msgstr "%f voet" + +#~ msgid "Position not found" +#~ msgstr "Positie niet gevonden" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 00000000..e73100d1 --- /dev/null +++ b/po/oc.po @@ -0,0 +1,2086 @@ +# Occitan Translation of GNOME Maps. +# Copyright (C) 2013-2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the gnome-maps package. +# Cédric Valmary (Tot en Òc) , 2015. +# Cédric Valmary (Tot en òc) , 2015. +# Cédric Valmary (totenoc.eu) , 2016, 2018. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-11-25 16:16+0100\n" +"Last-Translator: Quentin PAGÈS\n" +"Language-Team: Tot En Òc\n" +"Language: oc\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Recèrca d'emplaçaments a l'entorn del monde" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"L'aplicacion Mapas vos dona un accès rapid a de mapas del monde entièr. " +"Permet de trobar rapidament un emplaçament en recercant per vila o per " +"carrièra, o de situar un endreit de recontre amb un amic." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Las mapas utilizan la basa de donadas collaborativa OpenStreetMap, a la " +"quala contribuisson de centenats de milierats de personas dins lo monde " +"entièr." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "Lo projècte GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Una aplicacion cartografica simpla" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permet d'afichar vòstre emplaçament sus la mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "darrièr emplaçament vist" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas del darrièr emplaçament afichat." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivèl de zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipe de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Talha de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Talha de la fenèstra (nautor e largor)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posicion de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posicion de la fenèstra (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fenèstra agrandida" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estat d'agrandiment de la fenèstra" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Nombre maximum de resultats de recèrca" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Nombre maximum de resultats d'una recèrca per geocòdi." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Nombre de posicions recentas d'emmagazinar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Nombre de posicions visitadas recentament d'emmagazinar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Paramètres de confidencialitat d'anonci de la localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Paramètres de confidencialitat precedentament utilizats pels anoncis de " +"localizacion Foursquare. Las valors possiblas son : public (publicas), " +"followers (personas que me seguisson) o private (privat)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difusion sus Facebook dels anoncis de localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Facebook associat al compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difusion sus Twitter dels anoncis de localizacion Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deu difusar l'anonci de localizacion jos la forma de " +"publicacion sul compte Twitter associat al compte Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nom d'utilizaire o adreça electronica OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se l'utilizaire s'es identificat per modificar de donadas " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Tipe de transpòrt utilizat al moment del darrièr itinerari" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mòde nuèch" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Indica se l'aplicacion es en mòde nuèit." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilitat" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publicar sus Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publicar sus Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anullar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "A_nonciar sa localizacion" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Personas que me seguisson" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Itinerari dempuèi aicí" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Apondre una destinacion intermediària" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Itinerari fins a aqueste punt" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "De qué i a aicí ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar l'emplaçament" + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportacion de l'afichatge" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inclure l'itinerari e los marcadors" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Causir lo tipe de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zoom arrièr" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zoom avant" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir l'itinerari" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Bascular los favorits" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "General" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Afichar los acorchis" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Recercar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bascular cap a l'itinerari" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir l'itinerari" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Quitar" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Dobrir lo menú principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Afichar la mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zoom avant" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zoom arrièr" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bascular los favorits" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Anar a ma posicion actuala" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Passar en vista cartografica" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Passar en vista aeriana" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Dobrir un jaç de formas" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Afichar los labèls" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Dobrir un jaç de formas…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Activar los servicis de localizacion per trobar vòstra posicion" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anullar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Paramètres de localizacion" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mòde nuèch" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar un compte OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar coma imatge" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Acorchis de clavièr" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "A prepaus de Maps" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Dobrir lo menú principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas es fòra linha !" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas a besonh d’una connexion Internet activa e foncionala, mas n'a pas " +"trobat cap." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificatz vòstra connexion e vòstres paramètres de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Compte OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"S'identificar per modificar de mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajudar al melhorament de las mapas amb\n" +"un compte OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Adreça de corrièr electronic" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senhal" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "S’inscriure" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Connexion" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"O planhèm, aquò a pas foncionat. Reensajatz o visitatz\n" +"OpenStreetMap per reïnicializar vòstre senhal." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Lo còdi de verificacion correspond pas, ensajatz encara un còp." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Sasissètz lo còdi de verificacion afichat çaisús" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sètz inscrit" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Vòstre compte OpenStreetMap es actiu." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Desconnexion" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Carrièra" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numèro d'ostal" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Còdi postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Vila" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipe" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Pas cap" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Apondre un camp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentari" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Las modificacions de la mapa seràn visiblas sus totas\n" +"las mapas qu'utilizan de donadas OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Darrièrament utilizat" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seguent" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Cap de resultat pas trobat" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Una error s'es produita" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Fasètz lisar per modificar l'òrdre de l'itinerari" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Dobrir l'emplaçament" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar a…" + +#: data/ui/send-to-dialog.ui:86 +#, fuzzy +#| msgid "C_heck in" +msgid "Check In…" +msgstr "A_nonciar sa localizacion" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Dobrir un jaç de formas" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Dobrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Inversar la visibilitat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Recèrca d'itinerari amb GraphHopper" + +#: data/ui/sidebar.ui:364 +#, fuzzy +#| msgid "" +#| "Routing itineraries for public transit is provided by GNOME\n" +#| "using timetable data obtained from transit companies or agencies.\n" +#| "The companies and agencies can not be held responsible for the results " +#| "shown.\n" +#| "GNOME can not guarantee correctness of the itineraries and schedules " +#| "shown.\n" +#| "Names and brands shown are to be considered as registered trademarks when " +#| "applicable." +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Los itineraris per transpòrt public prepausats per GNOME utilizan\n" +"de tablèus oraris obtenguts de las companhias de transpòrt.\n" +"Aquelas companhias pòdon pas èsser tengudas responsablas dels resultats " +"afichats.\n" +"GNOME pòt pas garantir l’exactitud dels itineraris e oraris presentats.\n" +"Los noms e marcas afichats devon èsser considerats coma de marcas " +"depausadas, se fa mestièr." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Far veire mai de resultats" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Amagar los arrèsts e informacions intermediàrias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Afichar los arrèsts e informacions intermediàrias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir ara" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Despart" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Arribada" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Afichar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Trams" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Mètros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Vaissèls" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partejar l'emplaçament" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Apondre a un novèl itinerari" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direccions" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar coma favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modificar sus OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zoomatz per apondre un emplaçament !" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zoom avant" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Impossible de trobar una estructura de teulas dins lo repertòri" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Fracàs d'analisi d'un document XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributs obligatòris mancants" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossible de trobar l'element OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: src/application.js:114 +#, fuzzy +#| msgid "A path to a local tiles directory structure" +msgid "Tile size for local tiles directory" +msgstr "Un camin cap a un repertòri local d'estructura de teulas" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Afichar la version del logicial" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignòra la disponibilité de la ret" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHIÈR|URI...]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Seleccionar un compte" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Cargament" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Seleccionar un luòc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas tròba pas de luòc per senhalar sa localizacion sus Foursquare. " +"Seleccionatz-ne un dins aquesta lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Anonciar sa localizacion a %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escriure un messatge opcional per vòstre anonci de localizacion a %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossible de trobar « %s » sus la ret sociala" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossible de trobar un endreit correspondent per anonciar sa localizacion" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Las informacions d'autenficacion an expirat, dobrissètz Comptes en linha per " +"vos connectar e activar aqueste compte" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Res es pas estat trobat a aqueste endreit !" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"L'emplaçament es estat apondut a la mapa, notatz qu'aquò pòt prene un moment " +"abans qu'aparesca sus la mapa e dins los resultats de recèrca." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas situadas a %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Lo sistèma de fichièrs es en lectura sola" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Avètz pas la permission d'enregistrar a aqueste endreit" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Lo dorsièr existís pas" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Cap de nom de fichièr pas indicat" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossible d'exportar l'afichatge" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Luòc actual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada pas valabla" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "error d'analisi" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconeguda" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Fracàs de la recèrca d'itinerari." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Cap d'itinerari pas trobat." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Es partit !" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Totes los fichièrs de jaces" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Fracàs a la connexion al servici de localizacion" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Cédric Valmary (totenoc.eu) " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Una aplicacion cartografica per GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e los autors de Mapas de GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Donadas cartograficas de %s e contributors" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Jaces de donadas cartograficas provesidas per %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Fracàs de dobertura del jaç" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Volètz contunhar ?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sètz a mand de dobrir de fichièrs amb una talha total de %s Mo. Aquòt pòt " +"trigar a cargar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Lo tipe de fichièr es pas pris en charge" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Fracàs de dobertura de la Geo URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nom d'utilizaire o senhal incorrècte" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succès" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Marrida requèsta" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objècte pas trobat" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflicte, qualqu'un mai ven de modificar l'objècte" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "L'objècte es estat suprimit" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Lo camin o la relacion se referís a d'enfants qu'existisson pas" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nom" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Lo nom oficial. Es en general çò qu'es escrit sus l'ensenha." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adreça" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Site internet" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Es pas una URL valida. Asseguratz-vos d'inclure http:// o https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Lo site officiel. Ensajatz d'utilizar la forma la plus simple per l'URL, es " +"a dire http://example.com al luòc de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefòn" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numèro de telefòn. Utilizatz lo format internacional, en començant per un " +"signe +. Atencion a las leis localas sus la vida privada, sustot pels " +"numéros de telefòn dels particulars." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Corrièr electronic" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipèdia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Lo format utilizat deuriá comprene lo còdi lenga e lo títol de l’article, " +"coma « oc:Títol de l’article »." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Oras de dobertura" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Veire lo ligam dins l'etiqueta per de l'ajuda sul format." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populacion" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitud" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevacion (nautor en dessús del nivèl de la mar) d'un punt en mètres." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Accès als fautuèlhs rotlants" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Òc " + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Non" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Reservat" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Accès internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Fialar" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Servici" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Per emportar" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Sonque" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animisme" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Baaïsme" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Bodisme" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaïsme" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianisme" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianisme" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Indoïsme" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jaïnisme" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaïsme" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Mantuna religion" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganisme" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarisme" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintoïsme" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhisme" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualisme" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoïsme" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitarisme universalista" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodó" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Iezidisme" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrisme" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Comuns" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nòta" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informacions utilizadas per informar d’autres cartografes sus las " +"informacions non evidentas sus un element, l’intencion de l’autor al moment " +"de sa creacion, o de las indicacions per de possibles melhoraments." + +# :../data/ui/context-menu.ui.h:4 ../src/osmEditDialog.js:167 +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Apondre a OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Seleccionar un tipe" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Fait" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Luòc sens nom" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Fracàs a l'analisi de la Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precision" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precision de la posicion : %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numèro de telefòn" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Prepausa per emportar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Prepausa pas per emportar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Prepausa sonque per emportar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Accès internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Cap d'accès internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Accès internet per cable" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Ordenadors a disposicion" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assisténcia Internet disponibla" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Cap de comun pas disponible" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Comuns disponibles" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accès als fautuèlhs rotlants" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accès als fautuèlhs rotlants limitat" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Cap d'accès als fautuèlhs rotlants" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Accès als fautuèlhs rotlants" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Al nivèl de la mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion :" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Luòc pas trobat dins OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Las coordenadas dins l’URL son pas validas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "L'URL donat es pas pres en carga" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s a %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Cargament de las teulas de mapa per l'impression" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Podètz interrompre l'impression se cela pren tròp de temps" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Interrompre l'impression" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Apondre un emplaçament intermediari" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Suprimir l’emplaçament intermediari" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Camin invèrse" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Apondre %s a %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Fracàs de dobertura de l'URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Dobrir amb %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "impossible de cargar lo fichièr" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Temps estimat : %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itineraris provesits per %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Despart de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Despart" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Arribada a %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Arribada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Afichar las instruccions de caminada a pè" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Amagar las instruccions de caminada a pè" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Cargar las alternativas precedentas" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Cargar las alternativas seguentas" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Cap d'alternativa precedenta pas trobada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Cap d'alternativa seguenta pas trobada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Cap d'orari pas trobat per aqueste itinerari." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Cap de provesidor pas trobat per aquesta rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minutas" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ora" +msgstr[1] "%s oras" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ora" +msgstr[1] "%s:%s oras" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24h/24" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "del sortir al colcar del solelh" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Cada jorn" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s — %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Jorns de fèsta" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacanças escolaras" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "tampat" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s — %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconeguda" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exacta" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s pès" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Contunhar" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Podètz quitament cercar de luòcs especifics, coma « Restaurants al costat " +#~ "de la Catedrala d'Estrasborg » o « Ostalariás al costat d'Alexanderplatz " +#~ "a Berlin »." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "" +#~ "Paramètres de confidencialitat d'anonci de la localizacion sus Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Paramètres de confidencialitat precedentament utilizats pels anoncis de " +#~ "localizacion sus Facebook. Las valors possiblas son : EVERYONE (tot lo " +#~ "monde), FRIENDS_OF_FRIENDS (amics dels amics), ALL_FRIENDS (totes los " +#~ "amics) o SELF (siá)." + +#~ msgid "Everyone" +#~ msgstr "Tot lo monde" + +#~ msgid "Friends of friends" +#~ msgstr "Amics dels amics" + +#~ msgid "Just friends" +#~ msgstr "Sonque los amics" + +#~ msgid "Just me" +#~ msgstr "Sonque ieu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Mapas tròba pas de luòc per senhalar sa localizacion sus Facebook. " +#~ "Seleccionatz-ne un dins aquesta lista." + +#~ msgid "Quit" +#~ msgstr "Quitar" + +#~ msgid "Open with another application" +#~ msgstr "Dobrir amb una autra aplicacion" + +#~ msgid "Check in here" +#~ msgstr "Anonciar aqueste emplaçament coma localizacion" + +#~| msgid "Don't have an account?" +#~ msgid "Don’t have an account?" +#~ msgstr "Avètz pas de compte ?" + +#~ msgid "Show more information" +#~ msgstr "Far veire mai d'informacion" + +#~ msgid "Press enter to search" +#~ msgstr "Quichatz sus entrada per recercar" + +#~| msgid "Route search by GraphHopper" +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Recèrca d’itinerari amb OpenTripPlanner" + +#~ msgid "OK" +#~ msgstr "Validar" + +#~ msgid "Add destination" +#~ msgstr "Apondre una destinacion" + +#~ msgid "Population:" +#~ msgstr "Populacion :" + +#~ msgid "Altitude:" +#~ msgstr "Altitud :" + +#~ msgid "Opening hours:" +#~ msgstr "Oras de dobertura :" + +#~ msgid "Internet access:" +#~ msgstr "Accès internet :" + +#~ msgid "Toilets:" +#~ msgstr "Comuns :" + +#~ msgid "Wheelchair access:" +#~ msgstr "Accès als fautuèlhs rotlants :" + +#~ msgid "Phone:" +#~ msgstr "Telefòn :" + +#~ msgid "yes" +#~ msgstr "òc" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "non" + +#~ msgid "designated" +#~ msgstr "reservat" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "filar" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "servici" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Load Map Layer" +#~ msgstr "Cargar lo jaç cartografic" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posicion pas trobada" + +#~ msgid "Country code: %s" +#~ msgstr "Còdi del país : %s" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Dobrir un jaç de formas…" + +#~ msgid "Open Layer" +#~ msgstr "Dobrir la couche" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 00000000..2c1a2a20 --- /dev/null +++ b/po/pa.po @@ -0,0 +1,2032 @@ +# Punjabi translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# A S Alam , 2013, 2014, 2015, 2016, 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-02-14 20:40+0000\n" +"PO-Revision-Date: 2021-02-14 12:44-0800\n" +"Last-Translator: A S Alam \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 20.08.1\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "ਗਨੋਮ ਨਕਸ਼ੇ" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "ਸੰਸਾਰ ਭਰ ਵਿੱਚ ਥਾਵਾਂ ਨੂੰ ਲੱਭੋ" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਤੁਹਾਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ ਨਕਸ਼ੇ ਉਪਲੱਬਧ ਕਰਵਾਉਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਤੁਰੰਤ" +" ਸ਼ਹਿਰ ਜਾਂ ਸੜਕਾਂ ਦੇ ਨਾਂ " +"ਰਾਹੀਂ ਥਾਂ ਲੱਭਣ ਲਈ ਜਾਂ ਮਿੱਤਰ ਨੂੰ ਮਿਲਣ ਲਈ ਥਾਂ ਪੱਕਾ ਕਰਨ ਲਈ ਮੱਦਦ ਕਰਦੀ ਹੈ।" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"ਨਕਸ਼ਾ (ਮੈਪਸ) ਸਾਂਝਾ OpenStreetMap ਡਾਟਾਬੇਸ ਵਰਤਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਸੰਸਾਰ ਭਰ ਦੇ" +" ਲੱਖਾਂ-ਕਰੋੜਾਂ ਲੋਕਾਂ " +"ਵਲੋਂ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"ਤੁਸੀਂ ਟਿਕਾਣਿਆਂ ਦੀ ਖਾਸ ਕਿਸਮ ਲਈ ਵੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹਨ ਜਿਵੇਂ ਕਿ \"ਮੇਨ ਸਟਰੀਟ, ਬੋਸਟਨ" +" ਨੇੜੇ ਪੱਬ\" " +"ਜਾਂ \"ਅਲੈਗਜੈਂਡਰਪਲੇਟਜ਼, ਬਰਲਿਨ ਨੇੜੇ ਹੋਟਲ\"।" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:582 +msgid "Maps" +msgstr "ਨਕਸ਼ਾ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "ਸੌਖੀ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "ਨਕਸ਼ਾ;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਦਿਖਾਉਣ ਲਈ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ਪਿਛਲਾ ਵੇਖਿਆ ਟਿਕਾਣਾ" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "ਪਿਛਲੇ ਵੇਖੇ ਗਏ ਟਿਕਾਣੇ ਦੇ ਧੁਰੇ।" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ਜ਼ੂਮ" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "ਜ਼ੂਮ ਪੱਧਰ" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "ਵਿਖਾਉਣ ਲਈ ਨਕਸ਼ੇ ਦੀ ਕਿਸਮ (ਸੜਕ, ਹਵਾਈ ਆਦਿ)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "ਵਿੰਡੋ ਆਕਾਰ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (X ਅਤੇ Y)।" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "ਜੀਓਕੋਡ ਖੋਜ ਤੋਂ ਵੱਧ ਤੋਂ ਵੱਧ ਖੋਜ ਨਤੀਜਿਆਂ ਦੀ ਗਿਣਤੀ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਟਿਕਾਣਿਆਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਸਥਾਨਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "ਸੰਭਾਲਣ ਲਈ ਤਾਜ਼ਾ ਗਏ ਰੂਟਾਂ ਦੀ ਗਿਣਤੀ।" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੇਸਬੁੱਕ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਹਰੇਕ," +" ਦੋਸਤਾਂ_ਦੇ_ਦੋਸਤ, ਸਭ_ਦੋਸਤ, ਜਾਂ " +"ਖੁਦ" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "ਫੋਰਸਿਕਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"ਤਾਜ਼ਾ ਵਰਤੀ ਗਈ ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗ। ਸੰਭਵ ਮੁੱਲ ਹਨ: ਪਬਲਿਕ, ਫ਼ੋਲਅਰ ਜਾਂ" +" ਪ੍ਰਾਈਵੇਟ।" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਫੇਸਬੁੱਕ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ" +" ਫੇਸਬੁੱਕ ਖਾਤੇ ਵਿੱਚ ਪੋਸਟ ਵਜੋਂ " +"ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "ਫੋਰਸਕਿਉਰ ਚੈਕਇਨ ਟਵਿੱਟਰ ਬਰਾਡਕਾਸਟ" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਫੋਰਸਕਿਉਰ ਨੂੰ ਚੈਕ-ਇਨ ਨੂੰ ਫੋਰਸਕਿਉਰ ਖਾਤੇ ਦੇ ਨਾਲ ਸੰਬੰਧਿਤ ਟਵਿੱਟਰ" +" ਖਾਤੇ ਵਿੱਚ ਟਵਿੱਟ " +"ਵਜੋਂ ਬਰਾਡਕਾਸਟ ਕਰਨਾ ਹੁੰਦਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਈਮੇਲ ਪਤਾ" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਜੇ ਵਰਤੋਂਕਾਰ ਨੇ OpenStreetMap ਡਾਟੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਈਨ ਇਨ ਕੀਤਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "ਰੂਟ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਪਿਛਲੀ ਟਰਾਂਸਪੋਰਟ ਕਿਸਮ" + +#: data/org.gnome.Maps.gschema.xml:86 +#| msgid "Night Mode" +msgid "Night mode" +msgstr "ਗੂੜ੍ਹਾ ਢੰਗ" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "ਕੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਰਾਤ ਵਾਲੇ ਢੰਗ ਵਿੱਚ ਵਰਤਣਾ ਹੈ।" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "ਹਾਈਬਰਿੱਡ ਹਵਾਈ ਟਾਈਲਾਂ ਵਰਤੋਂ" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "ਕੀ ਹਵਾਈ ਟਾਈਲਾਂ ਨੂੰ ਹਾਈਬਰਿੱਡ ਸਟਾਈਲ (ਲੇਬਲਾਂ ਨਾਲ) ਵਰਤਣਾ ਚਾਹੀਦਾ ਹੈ।" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "ਵੇਖਣਯੋਗਤਾ" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "ਫੇਸਬੁੱਕ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "ਟਵਿੱਟਰ ਉੱਤੇ ਪੋਸਟ ਕਰੋ" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "ਰੱਦ ਕਰੋ(_C)" + +#: data/ui/check-in-dialog.ui:399 +msgid "C_heck in" +msgstr "ਚੈਕ ਇਨ(_h)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "ਹਰੇਕ" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "ਦੋਸਤਾਂ ਦੇ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "ਕੇਵਲ ਦੋਸਤ" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "ਕੇਵਲ ਮੈਂ" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "ਪਬਲਿਕ" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "ਫ਼ੌਲਅਰ" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "ਪ੍ਰਾਈਵੇਟ" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "ਇੱਥੇ ਤੋਂ ਰੂਟ" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "ਵਿਚਕਾਰਲੀ ਮੰਜ਼ਲ ਜੋੜੋ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "ਇੱਥੇ ਤੱਕ ਰੂਟ" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "ਇੱਥੇ ਕੀ ਹੈ?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਕਾਪੀ ਕਰੋ" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "ਐਕਸਪੋਰਟ(_I)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "ਰੂਟਾਂ ਅਤੇ ਚਿੰਨ੍ਹਾਂ ਸਮੇਤ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "ਨਕਸ਼ਾ ਕਿਸਮ ਚੁਣੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "ਪਸੰਦਾਂ ਨੂੰ ਬਦਲੋ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "ਆਮ" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਵੇਖੋ" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "ਖੋਜੋ" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "ਰੂਟ ਵਿਉਂਤਕਾਰ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "ਰੂਟ ਨੂੰ ਪਰਿੰਟ ਕਰੋ" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "ਬਾਹਰ" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "ਮੁੱਖ ਮੀਨੂ ਖੋਲ੍ਹੋ" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "ਨਕਸ਼ੇ ਦੀ ਝਲਕ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "ਜ਼ੂਮ ਆਉਟ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "ਸਕੇਲ ਨੂੰ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣੇ ਉੱਤੇ ਜਾਓ" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "ਸੜਕੀ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "ਹਵਾਈ ਝਲਕ ਵਿੱਚ ਬਦਲੋ" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "ਲੇਬਲ ਵੇਖਾਓ" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "ਆਪਣੇ ਟਿਕਾਣੇ ਨੂੰ ਲੱਭਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "ਗੂੜ੍ਹਾ ਢੰਗ" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤੇ ਨੂੰ ਸੈਟਅੱਪ ਕਰੋ" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "ਚਿੱਤਰ ਵਜੋਂ ਐਕਸਪੋਰਟ ਕਰੋ" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "ਨਕਸ਼ੇ ਬਾਰੇ" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "ਮੁੱਖ ਮੀਨੂ ਖੋਲ੍ਹੋ" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "ਨਕਸ਼ੇ ਆਫਲਾਈਨ ਹਨ!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਸਰਗਰਮ ਇੰਟਰਨੈਟ ਕਨੈਕਸ਼ਨ ਦੀ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਇਹ ਮਿਲਿਆ" +" ਨਹੀਂ।" + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਤੇ ਪਰਾਕਸੀ ਸੈਟਿੰਗ ਦੀ ਜਾਂਚ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap ਖਾਤਾ" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"ਨਕਸ਼ੇ ਨੂੰ ਸੋਧਣ ਲਈ ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap ਖਾਤੇ ਨਾਲ ਨਕਸ਼ੇ ਨੂੰ\n" +" ਸੁਧਾਰਨ ਲਈ ਮਦਦ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "ਈਮੇਲ" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "ਪਾਸਵਰਡ" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "ਸਾਇਨ ਅੱਪ" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "ਸਾਇਨ ਇਨ" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"ਅਫਸੋਸ, ਇਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਬਾਅਦ 'ਚ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਮੁੜ-ਸੈੱਟ" +" ਕਰਨ ਲਈ \n" +"OpenStreetMap ਨੂੰ ਖੋਲ੍ਹੋ।" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "ਤਸਦੀਕ ਕਰਨ ਵਾਲਾ ਕੋਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਤਸਦੀਕੀ ਕੋਡ ਦਿਓ" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "ਤਸਦੀਕ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "ਸਾਇਨ ਇਨ ਕਰੋ" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "ਤੁਹਾਡਾ OpenStreetMap ਖਾਤਾ ਹੁਣ ਸਰਗਰਮ ਹੈ।" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "ਸਾਇਨ ਆਉਟ" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "ਗਲੀ" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "ਘਰ ਨੰਬਰ" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "ਡਾਕ ਕੋਡ" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "ਸ਼ਹਿਰ" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "ਕਿਸਮ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "ਕੋਈ ਨਹੀਂ" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "ਖੇਤਰ ਨੂੰ ਜੋੜੋ" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "ਟਿੱਪਣੀ" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"ਨਕਸ਼ੇ ਸੰਬੰਧੀ ਤਬਦੀਲੀਆਂ ਸਾਰੇ ਨਕਸ਼ਿਆਂ ਉੱਤੇ ਦਿਖਾਈ ਦੇਣਗੀਆਂ, ਜੋ ਕਿ\n" +"OpenStreetMap ਡਾਟੇ ਨੂੰ ਵਰਤਦੇ ਹਨ।" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "ਤਾਜ਼ਾ ਵਰਤੇ ਗਏ" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:521 +msgid "Next" +msgstr "ਅੱਗੇ" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:280 src/checkIn.js:162 +#: src/osmEditDialog.js:558 +msgid "An error has occurred" +msgstr "ਗਲਤੀ ਆਈ" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "ਰੂਟ ਦਾ ਕ੍ਰਮ ਬਦਲਣ ਲਈ ਖਿੱਚੋ" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਖੋਲ੍ਹੋ" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "ਕਾਪੀ ਕਰੋ" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "…ਨੂੰ ਭੇਜੋ" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "ਚੈਕ ਇਨ…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "ਸ਼ਕਲ ਪਰਤ ਖੋਲ੍ਹੋ" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "ਖੋਲ੍ਹੋ(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "ਦਿੱਖ ਨੂੰ ਬਦਲੋ" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "ਗਰਾਫਹੋਪਰ ਵਲੋਂ ਰੂਟ ਖੋਜ" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"ਪਬਲਿਕ ਆਵਾਜਾਈ ਲਈ ਰੂਟ ਸਫ਼ਰਨਾਮੇ ਸੁਤੰਤਰ ਧਿਰਾਂ ਵਲੋਂ ਦਿੱਤੀਆਂ ਜਾ ਰਹੀਆਂ\n" +"ਹਨ।\n" +"ਗਨੋਮ ਇਹਨਾਂ ਸਫ਼ਰਨਾਮਿਆਂ ਤੇ ਵੇਖੀਆਂ ਸਮਾਂ ਸਾਰਣੀਆਂ ਦੇ ਦਰੁਸਤ ਹੋਣ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦੇ" +" ਸਕਦਾ ਹੈ।\n" +"ਯਾਦ ਰੱਖੋ ਕਿ ਕੁਝ ਪੂਰਕ ਕੋਲ ਆਵਾਜਾਈ ਦੇ ਸਾਰੇ ਮੌਜੂਦ ਢੰਗ ਨਹੀਂ ਦੇ ਸਕਦੇ ਹਨ।\n" +"ਜਿਵੇਂ ਕਿ ਕੌਮੀ ਪੂਰਕਾਂ ਵਿੱਚ ਹਵਾਈ ਜਹਾਜ਼ ਮੌਜੂਦ ਨਹੀਂ ਹੋ ਸਕਦੇ ਅਤੇ ਲੋਕਲ ਪੂਰਕਾਂ\n" +"ਕੋਲ ਖੇਤਰੀ ਰੇਲ ਗੱਡੀਆਂ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ।\n" +"ਵੇਖਾਏ ਗਏ ਨਾਂ ਅਤੇ ਮਾਰਕਿਆਂ ਨੂੰ ਜਿੱਥੇ ਵੀ ਲਾਗੂ ਹੋਵੇ ਰਜਿਸਟਰ ਹੋਏ ਟਰੇਡ-ਮਾਰਕ ਮੰਨਿਆ" +" ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "ਹੋਰ ਨਤੀਜੇ ਵੇਖੋ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਲੁਕਾਓ" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "ਵਿਚਲੀਆਂ ਮੰਜ਼ਲਾਂ ਅਤੇ ਜਾਣਕਾਰੀ ਵੇਖਾਓ" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "ਹੁਣੇ ਚੱਲੋ" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "ਤੱਕ ਚੱਲੋ" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "ਤੱਕ ਪਹੁੰਚ" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "ਸ਼ੋਅ" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "ਬੱਸਾਂ" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "ਟਰਾਮਾਂ" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "ਟਰੇਨਾਂ" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "ਸਬ-ਵੇਅ" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "ਫੈਰੀ" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "ਹਵਾਈ-ਜਹਾਜ਼" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:67 +msgid "Share location" +msgstr "ਟਿਕਾਣਾ ਸਾਂਝਾ ਕਰੋ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "ਨਵੇਂ ਰੂਟ ਵਿੱਚ ਜੋੜੋ" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "ਦਿਸ਼ਾਵਾਂ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "ਪਸੰਦ ਵਜੋਂ ਨਿਸ਼ਾਨ ਲਗਾਓ" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਸੋਧੋ" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "ਟਿਕਾਣੇ ਨੂੰ ਜੋੜਨ ਲਈ ਜ਼ੂਮ ਇਨ ਕਰੋ!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "ਜ਼ੂਮ ਇਨ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਟਾਈਲ ਢਾਂਚੇ ਨੂੰ ਲੱਭਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML ਡੌਕੂਮੈਂਟ ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "ਲੋੜੀਂਦੇ ਗੁਣ ਗੁੰਮ ਹਨ" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ਐਲੀਮੈਂਟ ਨੂੰ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "ਲੋਕਲ ਟਾਈਲ ਡਾਇਰੈਕਟਰੀ ਢਾਂਚੇ ਲਈ ਮਾਰਗ" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "ਲੋਕਲ ਟਾਈਟਲ ਡਾਇਰੈਕਟਰੀ ਲਈ ਟਾਈਲ ਆਕਾਰ" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "ਪਰੋਗਰਾਮ ਦਾ ਵਰਜ਼ਨ ਵੇਖੋ" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "ਨੈੱਟਵਰਕ ਉਪਲਬਟਾ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "ਖਾਤੇ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "ਸਥਾਨ ਨੂੰ ਚੁਣੋ" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੇਸਬੁੱਕ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"ਨਕਸ਼ੇ ਫੋਰਸਕਿਉਰ ਵਿੱਚ ਚੈਕਇਨ ਕਰਨ ਲਈ ਸਥਾਨ ਲੱਭੀ ਨਹੀਂ ਸਕੇ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੂਚੀ ਵਿੱਚੋਂ" +" ਚੁਣੋ।" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "%s ਲਈ ਚੈਕ ਇਨ" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s ਵਿੱਚ ਚੈਕ ਇਨ ਕਰਨ ਲਈ ਚੋਣਵਾਂ ਸੁਨੇਹਾ ਲਿਖੋ।" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "ਸਮਾਜਿਕ ਸੇਵਾ ਵਿੱਚ “%s“ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "ਇਹ ਟਿਕਾਣੇ ਵਿੱਚ ਚੈਕ-ਇਨ ਕਰਨ ਲਈ ਢੁੱਕਵਾਂ ਸਥਾਨ ਲੱਭਿਆ ਨੀਹਂ ਜਾ ਸਕਦਾ" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"ਸਨਦ ਦੀ ਮਿਆਦ ਪੁੱਗੀ, ਕਿਰਪਾ ਕਰਕੇ ਸਾਇਨ ਇਨ ਕਰਨ ਤੇ ਇਹ ਖਾਤੇ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਆਨਲਾਈਨ" +" ਖਾਤਿਆਂ ਨੂੰ " +"ਖੋਲ੍ਹੋ।" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "ਕੁਝ ਵੀ ਨਹੀਂ ਲੱਭਿਆ!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"ਟਿਕਾਣੇ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਜੋੜਿਆ ਗਿਆ, ਯਾਦ ਰੱਖੋ ਕਿ ਇਸ ਨੂੰ ਨਕਸ਼ੇ ਉੱਤੇ ਅਤੇ ਖੋਜ ਨਤੀਜਿਆਂ" +" ਵਿੱਚ ਆਉਣ ਲਈ ਕੁਝ " +"ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ।" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "ਨਕਸ਼ਾ %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "ਫਾਇਲ-ਸਿਸਟਮ ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ ਹੈ" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "ਤੁਹਾਡੇ ਕੋਲ ਉੱਥੇ ਸੰਭਾਲਣ ਲਈ ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "ਡਾਇਰੈਕਟਰੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "ਕੋਈ ਫਾਇਲ-ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "ਝਲਕ ਨੂੰ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "ਮੌਜੂਦਾ ਟਿਕਾਣਾ" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "ਗਲਤ ਧੁਰੇ" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "ਪਾਰਸ ਕਰਨ ਦੀ ਗਲਤੀ" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "ਅਣਜਾਣ ਜੁਮੈਟਰੀ" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "ਰੂਟ ਬੇਨਤੀ ਫੇਲ੍ਹ ਹੋਈ।" + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "ਕੋਈ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "ਸ਼ੁਰੂ!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "ਸਾਰੀਆਂ ਪਰਤਾਂ ਫਾਈਲਾਂ" + +#: src/mainWindow.js:485 +msgid "Failed to connect to location service" +msgstr "ਟਿਕਾਣਾ ਸੇਵਾ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mainWindow.js:580 +msgid "translator-credits" +msgstr "" +"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" +"ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" + +#: src/mainWindow.js:583 +msgid "A map application for GNOME" +msgstr "ਗਨੋਮ ਲਈ ਨਕਸ਼ਾ ਐਪਲੀਕੇਸ਼ਨ" + +#: src/mainWindow.js:594 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "ਕਾਪੀਰਾਈਟ © 2011 – 2021 Red Hat, Inc. ਅਤੇ ਗਨੋਮ ਨਕਸ਼ਾ ਡਿਵੈਲਪਰ" + +#: src/mainWindow.js:614 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "ਨਕਸ਼ੇ ਦਾ ਡਾਟਾ %s ਅਤੇ ਯੋਗਦਾਨੀਆਂ ਵਲੋਂ" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:630 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "ਨਕਸ਼ੇ ਲਈ ਨਾਂ %s ਵਲੋਂ ਦਿੱਤੇ" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:659 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "ਖੋਜ %s ਰਾਹੀਂ %s ਵਰਤ ਕੇ ਦਿੱਤੀ ਗਈ ਹੈ" + +#: src/mapView.js:488 src/mapView.js:546 +msgid "Failed to open layer" +msgstr "ਪਰਤ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#: src/mapView.js:509 +msgid "Do you want to continue?" +msgstr "ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + +#: src/mapView.js:510 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"ਤੁਸੀਂ %s MB ਆਕਾਰ ਦੀਆਂ ਫਾਇਲਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਵਾਲੇ ਹੋ। ਇਹਨਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਕੁਝ" +" ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ" + +#: src/mapView.js:540 +msgid "File type is not supported" +msgstr "ਫਾਇਲ ਦੀ ਕਿਸਮ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/mapView.js:578 +msgid "Failed to open GeoURI" +msgstr "GeoURI ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "ਗਲਤ ਵਰਤੋਂਕਾਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "ਕਾਮਯਾਬ" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "ਗਲਤ ਬੇਨਤੀ" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "ਆਬਜੈਕਟ ਨਹੀਂ ਲੱਭਿਆ" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "ਟਕਰਾ, ਕਿਸੇ ਨੇ ਹੁਣੇ ਹੀ ਆਬਜੈਕਟ ਨੂੰ ਸੋਧਿਆ ਹੈ" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "ਆਬਜੈਕਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "ਨਾ-ਮੌਜੂਦ ਬੱਚਿਆਂ ਲਈ ਢੰਗ ਜਾਂ ਸੰਬੰਧ ਵਿੱਚ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ" + +#: src/osmEditDialog.js:112 +msgid "Name" +msgstr "ਨਾਂ" + +#: src/osmEditDialog.js:115 +msgid "The official name. This is typically what appears on signs." +msgstr "ਅਧਿਕਾਰਿਤ ਨਾਂ। ਇਹ ਅਕਸਰ ਪ੍ਰਤੀਕਾਂ ਉੱਤੇ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।" + +#: src/osmEditDialog.js:118 +msgid "Address" +msgstr "ਪਤਾ" + +#: src/osmEditDialog.js:126 src/placeView.js:272 +msgid "Website" +msgstr "ਵੈੱਬਸਾਈਟ" + +#: src/osmEditDialog.js:130 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "ਇਹ ਵਾਜਬ URL ਨਹੀਂ ਹੈ। http:// ਜਾਂ https:// ਨੂੰ ਜੋੜਨਾ ਯਕੀਨੀ ਬਣਾਓ।" + +#: src/osmEditDialog.js:131 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"ਅਧਿਕਾਰਿਤ ਵੈੱਬਸਾਈਟ ਹੈ। URL ਦੇ ਸਭ ਤੋਂ ਮੁੱਢਲੇ ਰੂਪ ਨੂੰ ਵਰਤ ਕੇ ਵੇਖੋ ਜਿਵੇਂ" +" http://example.com/index." +"html ਦੀ ਬਜਾਏ http://example.com" + +#: src/osmEditDialog.js:136 +msgid "Phone" +msgstr "ਫ਼ੋਨ" + +#: src/osmEditDialog.js:140 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"ਫ਼ੋਨ ਨੰਬਰ। ਕੌਮਾਂਤਰੀ ਫਾਰਮੈਟ ਵਰਤੋਂ, ਜੋ ਕਿ + ਚਿੰਨ੍ਹ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਲੋਕਲ" +" ਪਰਦੇਦਾਰੀ ਕਨੂੰਨਾਂ ਬਾਰੇ " +"ਖਿਆਲ ਰੱਖੋ, ਖਾਸ ਕਰਕੇ ਪ੍ਰਾਈਵੇਟ ਫ਼ੋਨ ਨੰਬਰਾਂ ਬਾਰੇ।" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:145 src/placeView.js:580 +msgid "Wikipedia" +msgstr "ਵਿਕਿਪੀਡਿਆ" + +#: src/osmEditDialog.js:149 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"ਵਰਤੇ ਫਾਰਮੈਟ ਵਿੱਚ ਭਾਸ਼ਾ ਕੋਡ ਤੇ ਲੇਖ ਸਿਰਲੇਖ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਵੇਂ ਕਿ “en:Article" +" title”।" + +#: src/osmEditDialog.js:153 src/placeView.js:300 +msgid "Opening hours" +msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ" + +#: src/osmEditDialog.js:158 +msgid "See the link in the label for help on format." +msgstr "ਫਾਰਮ ਉੱਤੇ ਮਦਦ ਲਈ ਲੇਬਲ ਵਿੱਚ ਲਿੰਕ ਵੇਖੋ।" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:161 src/placeView.js:410 +msgid "Population" +msgstr "ਆਬਾਦੀ" + +#: src/osmEditDialog.js:166 src/placeView.js:419 +msgid "Altitude" +msgstr "ਉਚਾਈ" + +#: src/osmEditDialog.js:169 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "ਸਮੁੰਦਰੀ ਤਲ ਤੋਂ ਉੱਤੇ ਉਚਾਈ ਦਾ ਬਿੰਦੂ ਮੀਟਰਾਂ ਵਿੱਚ ਹੈ।" + +#: src/osmEditDialog.js:172 +msgid "Wheelchair access" +msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:175 src/osmEditDialog.js:184 src/osmEditDialog.js:222 +msgid "Yes" +msgstr "ਹਾਂ" + +#: src/osmEditDialog.js:176 src/osmEditDialog.js:185 src/osmEditDialog.js:223 +msgid "No" +msgstr "ਨਹੀਂ" + +#: src/osmEditDialog.js:177 +msgid "Limited" +msgstr "ਸੀਮਿਤ" + +#: src/osmEditDialog.js:178 +msgid "Designated" +msgstr "ਨਿਯਤ ਕੀਤਾ" + +#: src/osmEditDialog.js:181 +msgid "Internet access" +msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#: src/osmEditDialog.js:186 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:187 +msgid "Wired" +msgstr "ਤਾਰ ਵਾਲਾ" + +#: src/osmEditDialog.js:188 +msgid "Terminal" +msgstr "ਟਰਮੀਨਲ" + +#: src/osmEditDialog.js:189 +msgid "Service" +msgstr "ਸੇਵਾ" + +#: src/osmEditDialog.js:192 +msgid "Religion" +msgstr "ਧਰਮ" + +#: src/osmEditDialog.js:195 src/translations.js:279 +msgid "Animism" +msgstr "ਅਨੀਮੀਸਮ" + +#: src/osmEditDialog.js:196 +msgid "Bahá’í" +msgstr "ਬਾਹਾਈ" + +#: src/osmEditDialog.js:197 src/translations.js:281 +msgid "Buddhism" +msgstr "ਬੁੱਧ" + +#: src/osmEditDialog.js:198 src/translations.js:282 +msgid "Caodaism" +msgstr "ਕਾਓ ਦਾਈ" + +#: src/osmEditDialog.js:199 src/translations.js:283 +msgid "Christianity" +msgstr "ਇਸਾਈ" + +#: src/osmEditDialog.js:200 src/translations.js:284 +msgid "Confucianism" +msgstr "ਕਨਫਿਊਸ਼ੀਵਾਦ" + +#: src/osmEditDialog.js:201 src/translations.js:285 +msgid "Hinduism" +msgstr "ਹਿੰਦੂ" + +#: src/osmEditDialog.js:202 src/translations.js:286 +msgid "Jainism" +msgstr "ਜੈਨ" + +#: src/osmEditDialog.js:203 src/translations.js:287 +msgid "Judaism" +msgstr "ਯਹੂਦੀ" + +#: src/osmEditDialog.js:204 src/translations.js:288 +msgid "Islam" +msgstr "ਇਸਲਾਮ" + +#: src/osmEditDialog.js:205 src/translations.js:289 +msgid "Multiple Religions" +msgstr "ਕਈ ਧਰਮ" + +#: src/osmEditDialog.js:206 src/translations.js:290 +msgid "Paganism" +msgstr "ਪਾਗਾਨੀਸਮ" + +#: src/osmEditDialog.js:207 src/translations.js:291 +msgid "Pastafarianism" +msgstr "ਪਾਸਟਾਫਾਰਿਨੇਮ" + +#: src/osmEditDialog.js:208 src/translations.js:292 +msgid "Scientology" +msgstr "ਸਾਇੰਸਟੋਲੋਜੀ" + +#: src/osmEditDialog.js:209 src/translations.js:293 +msgid "Shinto" +msgstr "ਸ਼ਿਨਟੋ" + +#: src/osmEditDialog.js:210 src/translations.js:294 +msgid "Sikhism" +msgstr "ਸਿੱਖੀ" + +#: src/osmEditDialog.js:211 src/translations.js:295 +msgid "Spiritualism" +msgstr "ਅਧਿਆਤਮਵਾਦ" + +#: src/osmEditDialog.js:212 src/translations.js:296 +msgid "Taoism" +msgstr "ਤਾਓਵਾਦ" + +#: src/osmEditDialog.js:213 src/translations.js:297 +msgid "Unitarian Universalism" +msgstr "ਯੂਨਿਟਾਰਿਅਨ ਯੂਨੀਵਰਸਲਿਮ" + +#: src/osmEditDialog.js:214 src/translations.js:298 +msgid "Voodoo" +msgstr "ਵੂਡੂ" + +#: src/osmEditDialog.js:215 src/translations.js:299 +msgid "Yazidism" +msgstr "ਯਾਜ਼ਿਡੀਸਮ" + +#: src/osmEditDialog.js:216 src/translations.js:300 +msgid "Zoroastrianism" +msgstr "ਪਾਰਸੀ" + +#: src/osmEditDialog.js:219 +msgid "Toilets" +msgstr "ਗੁਸਲਖਾਨੇ" + +#: src/osmEditDialog.js:226 +msgid "Note" +msgstr "ਨੋਟ" + +#: src/osmEditDialog.js:229 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"ਜਾਣਕਾਰੀ ਹੋਰ ਨਕਸ਼ੇ ਵਾਲਿਆਂ ਨੂੰ ਭਾਗਾਂ, ਲੇਖਕ ਦੇ ਮੌਕੇ ਜਦੋਂ ਇਹ ਬਣਾਈ ਸੀ ਜਾਂ ਹੋਰ" +" ਸੁਧਾਰ ਬਾਰੇ ਇਸ਼ਾਰਿਆਂ " +"ਬਾਰੇ ਅਸਪਸ਼ਟ ਜਾਣਕਾਰੀ ਦੇਣ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਹੈ।" + +#: src/osmEditDialog.js:334 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap ਵਿੱਚ ਜੋੜੋ" + +#: src/osmEditDialog.js:388 +msgid "Select Type" +msgstr "ਕਿਸਮ ਨੂੰ ਚੁਣੋ" + +#: src/osmEditDialog.js:505 +msgid "Done" +msgstr "ਮੁਕੰਮਲ" + +#: src/photonParser.js:104 +msgid "Unnamed place" +msgstr "ਬੇਨਾਮ ਥਾਂ" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "ਜੀਓ URI ਨੂੰ ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" + +#: src/placeView.js:260 +msgid "Coordinates" +msgstr "ਧੁਰੇ" + +#: src/placeView.js:264 +msgid "Accuracy" +msgstr "ਦਰੁਸਤੀ" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:267 +#, javascript-format +msgid "Accuracy: %s" +msgstr "ਦਰੁਸਤੀ: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:286 +msgid "Phone number" +msgstr "ਫ਼ੋਨ ਨੰਬਰ" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:310 +msgid "Public internet access" +msgstr "ਪਬਲਿਕ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:319 +msgid "No internet access" +msgstr "ਕੋਈ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ ਨਹੀਂ ਹੈ" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:327 +msgid "Public Wi-Fi" +msgstr "ਪਬਲਿਕ Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:335 +msgid "Wired internet access" +msgstr "ਤਾਰਾ ਰਾਹੀ ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:343 +msgid "Computers available for use" +msgstr "ਵਰਤਣ ਲਈ ਕੰਪਿਊਟਰ ਉਪਲੱਬਧ ਹਨ" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:351 +msgid "Internet assistance available" +msgstr "ਇੰਟਰਨੈੱਟ ਸਹਾਇਕ ਉਪਲੱਬਧ ਹੈ" + +#: src/placeView.js:357 +msgid "No toilets available" +msgstr "ਗੁਸਲਖ਼ਾਨੇ ਨਹੀਂ ਹਨ" + +#: src/placeView.js:360 +msgid "Toilets available" +msgstr "ਗੁਸਲਖ਼ਾਨੇ ਮੌਜੂਦ ਹਨ" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:369 +msgid "Wheelchair accessible" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚਯੋਗ" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:379 +msgid "Limited wheelchair accessibility" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚ ਸੀਮਿਤ ਹੈ" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:388 +msgid "Not wheelchair accessible" +msgstr "ਵੀਲ-ਚੇਅਰ ਰਾਹੀਂ ਪਹੁੰਚ ਨਹੀਂ ਹੈ" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:398 +msgid "Designated for wheelchair users" +msgstr "ਵੀਲ੍ਹ-ਚੇਅਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਨਿਯਤ ਹੈ" + +#: src/placeView.js:425 +msgid "Religion:" +msgstr "ਧਰਮ:" + +#: src/place.js:429 +msgid "Place not found in OpenStreetMap" +msgstr "OpenStreetMap ਉੱਤੇ ਥਾਂ ਨਹੀਂ ਲੱਭੀ" + +#: src/place.js:436 +msgid "Coordinates in URL are not valid" +msgstr "URL ਵਿੱਚ ਦਿੱਤੇ ਧੁਰੇ ਵਾਜਬ ਨਹੀਂ ਹਨ" + +#: src/place.js:445 +msgid "URL is not supported" +msgstr "URL ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "%s ਤੋਂ %s ਤੱਕ" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਲਈ ਨਕਸ਼ਿਆਂ ਦੇ ਨਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "ਜੇ ਪਰਿੰਟ ਕਰਨ ਲਈ ਲੰਮਾ ਸਮਾਂ ਲੱਗ ਸਕਦਾ ਹੈ ਤਾਂ ਤੁਸੀਂ ਪਰਿੰਟ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹੋ" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "ਪਰਿੰਟ ਕਰਨ ਨੂੰ ਵਿਚੇ ਛੱਡੋ" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਜੋੜੋ" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "ਰਾਹੀਂ ਟਿਕਾਣਾ ਹਟਾਓ" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "ਉਲਟ ਰਾਹ" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s ਤੋਂ %s ਜੋੜੋ" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URL ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s ਨਾਲ ਖੋਲ੍ਹੋ" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "ਫਾਇਲ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:359 +#, javascript-format +msgid "Estimated time: %s" +msgstr "ਅੰਦਾਜ਼ਨ ਸਮਾਂ: %s" + +#: src/sidebar.js:415 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "%s ਵਲੋਂ ਸਫ਼ਰਨਾਮਾ ਦਿੱਤਾ" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s ਵਜੇ ਸ਼ੁਰੂ ਕਰੋ" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "ਸ਼ੁਰੂ" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s ਤੁਰੋ" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s ਵਜੇ ਪਹੁੰਚੋ" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "ਪਹੁੰਚ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਦਿਖਾਓ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "ਤੁਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਲੁਕਾਓ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "ਸਵਖਤੇ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "ਬਾਦ ਵਾਲੇ ਬਦਲ ਲੋਡ ਕਰੋ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "ਕੋਈ ਸਵਖਤੇ ਦਾ ਬਦਲ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "ਕੋਈ ਬਦਲਵਾਂ ਰੂਟ ਨਹੀਂ ਲੱਭਿਆ।" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਸਮਾਂ-ਸਾਰਣੀ ਡਾਟਾ ਨਹੀਂ ਲੱਭਿਆ।" + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "ਇਸ ਰੂਟ ਲਈ ਕੋਈ ਪੂਰਕ ਨਹੀਂ ਲੱਭਿਆ।" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s ਮਿੰਟ" +msgstr[1] "%s ਮਿੰਟ" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ਘੰਟਾ" +msgstr[1] "%s ਘੰਟੇ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ਘੰਟਾ" +msgstr[1] "%s:%s ਘੰਟੇ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "ਚੌਵੀਂ ਘੰਟੇ" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "ਸੂਰਜ ਚੜ੍ਹਨ ਤੋਂ ਸੂਰਜ ਡੁੱਬਣ ਤੱਕ" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:116 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:130 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:149 +msgid "Every day" +msgstr "ਹਰ ਰੋਜ਼" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:161 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:172 +msgid "Public holidays" +msgstr "ਪਬਲਿਕ ਛੁੱਟੀਆਂ" + +#: src/translations.js:174 +msgid "School holidays" +msgstr "ਸਕੂਲੀ ਛੁੱਟੀਆਂ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:214 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:228 +msgid "not open" +msgstr "ਖੁੱਲ੍ਹਾ ਨਹੀਂ" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:243 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "ਠੀਕ-ਠੀਕ" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:348 +#, javascript-format +msgid "%s h" +msgstr "%s ਘੰ" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:354 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ਘੰ %s ਮਿੰਟ" +msgstr[1] "%s ਘੰ %s ਮਿੰਟ" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:361 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s ਮਿੰਟ" +msgstr[1] "%s ਮਿੰਟ" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:367 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:378 +#, javascript-format +msgid "%s km" +msgstr "%s ਕਿਮੀ" + +#. Translators: This is a distance measured in meters +#: src/utils.js:381 +#, javascript-format +msgid "%s m" +msgstr "%s ਮੀ" + +#. Translators: This is a distance measured in miles +#: src/utils.js:389 +#, javascript-format +msgid "%s mi" +msgstr "%s ਮੀਲ" + +#. Translators: This is a distance measured in feet +#: src/utils.js:392 +#, javascript-format +msgid "%s ft" +msgstr "%s ਫੁੱਟ" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "ਇਹ ਪਲੱਗਇਨ ਨਵੀਂ ਪਹੁੰਚ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s ਉੱਤੇ ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "ਜਾਰੀ ਰੱਖੋ" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr " %s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "ਤਿੱਖੇ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "ਸੱਜ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s ਤੋਂ ਥੋੜ੍ਹਾ ਖੱਬੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "ਥੋੜ੍ਹਾ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s ਤੋਂ ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "ਤਿੱਖੇ ਸੱਜੇ ਮੁੜੋ" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "ਗੋਲ ਚੱਕਰ ਵਿੱਚ, %s ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "ਗੋਲ ਚੱਕਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ ਅਤੇ %s ਉੱਤੇ ਉਤਰ ਜਾਓ" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "ਐਲੀਵੇਟਰ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s ਤੋਂ ਖੱਬੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "ਖੱਬੀ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s ਤੋਂ ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "ਸੱਜੇ ਯੂ-ਟਰਨ ਲਵੋ" + +#~ msgid "Check in here" +#~ msgstr "ਇੱਥੇ ਚੈਕ ਇਨ ਕਰੋ" + +#~| msgid "Don't have an account?" +#~ msgid "Don’t have an account?" +#~ msgstr "ਖਾਤਾ ਨਹੀਂ ਹੈ?" + +#~ msgid "Show more information" +#~ msgstr "ਹੋਰ ਜਾਣਕਾਰੀ ਵੇਖੋ" + +#~ msgid "Population:" +#~ msgstr "ਆਬਾਦੀ:" + +#~ msgid "Altitude:" +#~ msgstr "ਉਚਾਈ:" + +#~ msgid "Opening hours:" +#~ msgstr "ਖੁੱਲ੍ਹਣ ਦਾ ਸਮਾਂ:" + +#~ msgid "Internet access:" +#~ msgstr "ਇੰਟਰਨੈੱਟ ਪਹੁੰਚ:" + +#~ msgid "Toilets:" +#~ msgstr "ਗੁਸਲਖਾਨੇ:" + +#~ msgid "Wheelchair access:" +#~ msgstr "ਵੀਲ-ਚੇਅਰ ਪਹੁੰਚ:" + +#~ msgid "Phone:" +#~ msgstr "ਫ਼ੋਨ:" + +#~ msgid "yes" +#~ msgstr "ਹਾਂ" + +#~ msgid "limited" +#~ msgstr "ਸੀਮਿਤ" + +#~ msgid "no" +#~ msgstr "ਨਹੀਂ" + +#~ msgid "designated" +#~ msgstr "ਮਕਸਦ" + +#~| msgid "OpenStreetMap Account" +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL ਵਾਜਬ ਨਹੀਂ ਹੈ" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "ਤਾਰ ਵਾਲਾ" + +#~ msgid "terminal" +#~ msgstr "ਟਰਮੀਨਲ" + +#~ msgid "service" +#~ msgstr "ਸੇਵਾ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f ਮਿੰਟ" + +#~ msgid "%f s" +#~ msgstr "%f ਸ" + +#~ msgid "Quit" +#~ msgstr "ਬਾਹਰ" + +#~ msgid "Load Map Layer" +#~ msgstr "ਨਕਸ਼ੇ ਦੀ ਪਰਤ ਨੂੰ ਲੋਡ ਕਰੋ" + +#~ msgid "Open with another application" +#~ msgstr "ਹੋਰ ਐਪਲੀਕੇਸ਼ਨ ਨਾਲ ਖੋਲ੍ਹੋ" + +#~ msgid "Press enter to search" +#~ msgstr "ਖੋਜ ਕਰਨ ਲਈ ਐਂਟਰ ਦਬਾਉ" + +#~ msgid "OK" +#~ msgstr "ਠੀਕ ਹੈ" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f ਮੀਲ" + +#~ msgid "%f ft" +#~ msgstr "%f ਫੁੱਟ" + +#~ msgid "Country code: %s" +#~ msgstr "ਦੇਸ਼ ਕੋਡ: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਤੇ ਸ਼ੁੱਧਤਾ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ (ਲੰਬਕਾਰ ਤੇ ਵਿਸਥਾਰ ਡਿਗਰੀਆਂ ਵਿੱਚ) ਤੇ ਸ਼ੁੱਧਤਾ (ਮੀਟਰਾਂ ਵਿੱਚ)" + +#~ msgid "Description of last known location of user." +#~ msgstr "ਯੂਜ਼ਰ ਦੇ ਆਖਰੀ ਜਾਣੇ ਟਿਕਾਣੇ ਦਾ ਵੇਰਵਾ" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "ਕੀ ਆਖਰੀ ਜਾਣਿਆ ਟਿਕਾਣਾ ਯੂਜ਼ਰ ਵਲੋਂ ਖੁਦ ਤਹਿ ਕੀਤਾ ਸੀ।" + +#~ msgid "I’m here!" +#~ msgstr "ਮੈਂ ਇੱਥੇ ਹਾਂ!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "ਸੈਟੇਲਾਈਟ" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 00000000..beaa8c37 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1931 @@ +# Polish translation for gnome-maps. +# Copyright © 2013-2021 the gnome-maps authors. +# This file is distributed under the same license as the gnome-maps package. +# Piotr Drąg , 2013-2021. +# Paweł Żołnowski , 2014-2015. +# Aviary.pl , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-13 17:35+0200\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Wyszukiwanie miejsc na świecie" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapy zapewniają szybki dostęp do map całego świata oraz umożliwiają szybkie " +"wyszukiwanie miejsc według miast i ulic. Pomogą również ustalić miejsce " +"spotkania z przyjaciółmi." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapy udostępniane są przez projekt OpenStreetMap, który jest tworzony przez " +"setki tysięcy ludzi z całego świata." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapy" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Prosty program do wyświetlania map" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "" +"Mapy;Mapa;Satelita;Satelitarna;Położenie;Lokalizacja;Współrzędne;Geografia;" +"Geograficzne;GPS;Ulica;Miasto;Województwo;Kraj;Państwo;Dojazd;Gdzie jestem;" +"Jak dojechać;Jak dojadę;Trasa;Trasy;Wycieczka;Wycieczki;Planowanie;Autobusy;" +"Tramwaje;Pociągi;Metro;Promy;OpenStreetMap;OpenTripPlanner;Foursquare;" +"Meldowanie;Zamelduj się;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umożliwia wyświetlenie położenia użytkownika na mapie." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "ostatnio wyświetlane położenie" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Współrzędne ostatnio wyświetlanego położenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "powiększenie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Poziom powiększenia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ wyświetlanej mapy (zwykła, satelitarna itp.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Rozmiar okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Rozmiar okna (szerokość i wysokość)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Położenie okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Położenie okna (na osi X i Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maksymalizacja okna" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stan maksymalizacji okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maksymalna liczba wyników wyszukiwania" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maksymalna liczba wyników wyszukiwania geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Liczba ostatnich miejsc do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Liczba ostatnio odwiedzonych miejsc do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Liczba ostatnich tras do zapamiętania" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Liczba ostatnio odwiedzonych tras do zapamiętania." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Ustawienia prywatności serwisu Foursquare dotyczące meldowania" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ostatnio użyte ustawienia prywatności serwisu Foursquare dotyczące " +"meldowania. Możliwe wartości to: „public” (publiczne), " +"„followers” (obserwujący) lub „private” (prywatne)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako post na koncie " +"w serwisie Facebook powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Udostępnianie meldowania poprzez serwis Foursquare w serwisie Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Określa, czy serwis Foursquare ma udostępniać meldunek jako tweet na koncie " +"w serwisie Twitter powiązanym z kontem w serwisie Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nazwa użytkownika lub adres e-mail w serwisie OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Czy użytkownik jest zalogowany, aby modyfikować dane OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Ostatnio używany typ transportu dla tras" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Tryb nocny" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Czy program jest w trybie nocnym." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hybrydowe kafle satelitarne" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Czy kafle satelitarne mają używać stylu hybrydowego (z etykietami)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Widoczność" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Udostępnij w serwisie Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Udostępnij w serwisie Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anuluj" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Za_melduj się" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publiczne" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Obserwujący" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Prywatne" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa stąd" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj cel pośredni" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa dotąd" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Co tutaj jest?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopiuj położenie" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Dodaj do serwisu OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Eksport widoku" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Wy_eksportuj" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Dołączenie tras i znaczników" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Przechodzi do obecnego położenia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Wybiera rodzaj mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Pomniejsza" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Powiększa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Drukuje trasę" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Włącza ulubione" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Włącza planowanie trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Ogólne" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Wyświetlenie skrótów" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Wyszukiwanie" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Przełączenie planowania trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Wydrukowanie trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Zakończenie działania" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otwarcie menu głównego" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Widok mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Powiększenie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Pomniejszenie" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Przełączenie skali" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Przejście do obecnego położenia" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Przełączenie na widok mapy" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Przełączenie na widok satelitarny" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etykiety" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otwórz warstwę figur…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Włączenie usług położenia umożliwia odnalezienie bieżącego położenia" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anuluj" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Ustawienia położenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Tryb nocny" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Ustaw konto serwisu OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Wyeksportuj jako obraz" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programie" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otwórz menu główne" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapy są w trybie offline." + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Nie wykryto połączenia z Internetem, które jest potrzebne do prawidłowego " +"działania Map." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Proszę sprawdzić ustawienia połączenia oraz pośrednika." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Konto serwisu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Zalogowanie umożliwia modyfikowanie " +"map" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Można pomóc ulepszyć mapę za pomocą\n" +"konta serwisu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Hasło" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Zarejestruj się" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Zaloguj się" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"To nie zadziałało. Proszę spróbować ponownie lub przejść do serwisu\n" +"OpenStreetMap, aby przywrócić hasło." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Kod weryfikacyjny się nie zgadza. Proszę spróbować ponownie." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Proszę podać kod weryfikacji widoczny powyżej" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Weryfikuj" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Zalogowano" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Konto serwisu OpenStreetMap jest aktywne." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Wyloguj się" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Numer domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Kod pocztowy" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Miasto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brak" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj pole" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentarz" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmiany mapy będą widoczne na wszystkich mapach\n" +"używających danych serwisu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Ostatnio używane" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Modyfikacja w serwisie OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Dalej" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Brak wyników" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Wystąpił błąd" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Przeciągnięcie zmienia kolejność trasy" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otwarcie położenia" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Skopiuj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Wyślij do…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Zamelduj się…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otwarcie warstwy figur" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otwórz" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Przełącza widoczne" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Wyszukiwanie trasy za pomocą oprogramowania GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Trasy transportu publicznego są dostarczane przez zewnętrzne serwisy.\n" +"Projekt GNOME nie gwarantuje prawidłowości wyświetlanych rozkładów.\n" +"Proszę zauważyć, że część dostawców może nie podawać wszystkich dostępnych\n" +"środków transportu, np. krajowy dostawca może nie podawać lotów, a lokalny\n" +"może nie podawać pociągów regionalnych.\n" +"Widoczne nazwy i marki są zastrzeżonymi znakami towarowymi ich właścicieli." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Wyświetl więcej wyników" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ukrywa przystanki pośrednie i informacje" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Wyświetla przystanki pośrednie i informacje" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Wyjście teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Wyjście przed" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Przybycie przed" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Wyświetlanie" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramwaje" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Pociągi" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Promy" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Loty" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Udostępnia położenie" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaje do nowej trasy" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Wskazówki dojazdu" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Oznacza jako ulubione" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Modyfikuje w serwisie OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Należy powiększyć, aby dodać położenie." + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Powiększ" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Odnalezienie struktury kafli w katalogu się nie powiodło" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Przetworzenie dokumentu XML się nie powiodło" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Brak wymaganych atrybutów" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nie można odnaleźć elementu OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Ścieżka do lokalnej struktury katalogów kafli" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Rozmiar kafli dla katalogu lokalnych kafli" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Wyświetla wersję programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignoruje dostępność sieci" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[PLIK…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Wybór konta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Wczytywanie" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Wybór miejsca" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Nie odnaleziono miejsca do zameldowania za pomocą serwisu Foursquare. Proszę " +"wybrać miejsce z listy." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Zameldowanie w „%s”" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Można napisać wiadomość związaną z zameldowaniem się w „%s”." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nie odnaleziono „%s” w serwisie społecznościowym" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "W tym położeniu nie odnaleziono odpowiedniego miejsca do zameldowania" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uwierzytelnienie wygasło. Proszę otworzyć Konta online, aby zalogować się " +"lub włączyć to konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nic tu nie odnaleziono." + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Dodano położenie do mapy. Proszę zauważyć, że może minąć trochę czasu, zanim " +"pojawi się ono na mapie i w wynikach wyszukiwania." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapa dla %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "System plików jest tylko do odczytu" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Brak uprawnień do zapisywania w tym miejscu" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalog nie istnieje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie podano nazwy pliku" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie można wyeksportować widoku" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Obecne położenie" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "nieprawidłowe współrzędne" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "błąd przetwarzania" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nieznana geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Żądanie trasy się nie powiodło." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nie odnaleziono żadnej trasy." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Start!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Wszystkie pliki warstw" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Połączenie z usługą położenia się nie powiodło" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Piotr Drąg , 2013-2021\n" +"Paweł Żołnowski , 2014-2015\n" +"Aviary.pl , 2013-2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Mapy dla środowiska GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011-2021 Red Hat, Inc. i autorzy Map GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dane mapy autorstwa %s i współtwórców" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Mapa dostarczana przez %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Funkcja wyszukiwania dostarczana przez %s za pomocą %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Otwarcie warstwy się nie powiodło" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Kontynuować?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Zostaną otwarte pliki o całkowitym rozmiarze %s MB. Wczytanie ich może " +"potrwać trochę czasu." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Typ pliku jest nieobsługiwany" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Otwarcie adresu GeoURI się nie powiodło" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Niepoprawna nazwa użytkownika lub hasło" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Powodzenie" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Błędne żądanie" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Nie odnaleziono obiektu" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, ktoś inny właśnie zmodyfikował obiekt" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Usunięto obiekt" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Droga lub związek odnosi się do nieistniejących elementów potomnych" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nazwa" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficjalna nazwa. Zwykle pojawia się na znakach." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Strona WWW" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"To nie jest prawidłowy adres URL. Proszę się upewnić, że zawiera on http:// " +"lub https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficjalna strona WWW. Proszę używać najbardziej podstawowej formy adresu " +"URL, tzn. „http://example.com” zamiast „http://example.com/index.html”." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Numer telefonu. Proszę używać formatu międzynarodowego, zaczynając znakiem " +"„+”. Proszę przestrzegać lokalnych praw do prywatności, zwłaszcza w stosunku " +"do prywatnych numerów telefonów." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"To nie jest prawidłowy adres e-mail. Proszę się upewnić, że nie zawiera on " +"przedrostka protokołu mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktowy adres e-mail w przypadku pytań. Tylko publicznie dostępne adresy " +"e-mail." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Używany format powinien zawierać kod języka i tytuł artykułu, np. „pl:Tytuł " +"artykułu”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Godziny otwarcia" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "" +"Więcej informacji o formacie znajduje się pod odnośnikiem na etykiecie." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Liczba mieszkańców" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Wysokość" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Wyniesienie (wysokość ponad poziomem morza) miejsca w metrach." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Dostęp dla osób na wózku" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Tak" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ograniczony" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Wyznaczony" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Dostęp do Internetu" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Przewodowy" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Na miejscu" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Obsługa" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Na wynos" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Wyłącznie" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religia" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaizm" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddyzm" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Chrześcijaństwo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucjanizm" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Dźinizm" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizm" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Wiele religii" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Pogaństwo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizm" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scjentologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shintō" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizm" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spirytualizm" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizm" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Uniwersalizm unitariański" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazydyzm" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zaratusztrianizm" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Uwaga" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Używane do informowania innych twórców map o nieoczywistych informacjach " +"o elemencie, intencjach autora przy jego tworzeniu lub wskazówkach na dalsze " +"ulepszenia." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodanie do serwisu OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Wybór typu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Gotowe" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Miejsce bez nazwy" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Przetworzenie adresu URI Geo się nie powiodło" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Współrzędne" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Dokładność" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Dokładność: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Numer telefonu" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Można zamawiać na wynos" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nie można zamawiać na wynos" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Można wyłącznie zamawiać na wynos" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Publiczny dostęp do Internetu" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Brak dostępu do Internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Publiczna sieć Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Przewodowy dostęp do Internetu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Dostępne komputery do użytku" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Dostępne wsparcie przy korzystaniu z Internetu" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Brak dostępnych toalet" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Dostępne toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Dostępne dla osób na wózku" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ograniczony dostęp dla osób na wózku" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Brak dostępu dla osób na wózku" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Wyznaczone dla osób na wózku" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod poziomem morza" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Na poziomie morza" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religia:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Nie odnaleziono tego miejsca w serwisie OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Współrzędne w adresie URL są nieprawidłowe" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Nieobsługiwany adres URL" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Z %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Wczytywanie mapy do wydrukowania" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Można przerwać drukowanie, jeśli trwa to za długo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Przerwij drukowanie" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaje położenie pośrednie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Usuwa położenie pośrednie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Odwraca trasę" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s do programu %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Otwarcie adresu URI się nie powiodło" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otwórz za pomocą „%s”" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "wczytanie pliku się nie powiodło" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Przybliżony czas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Trasy dostarczane przez %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Początek w: %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Początek" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Przejście %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Przybycie do: %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Przybycie" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Wyświetla wskazówki" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ukrywa wskazówki" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Wczytaj wcześniejsze możliwości" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Wczytaj późniejsze możliwości" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nie odnaleziono wcześniejszych możliwości." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nie odnaleziono późniejszych możliwości." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-d %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nie odnaleziono rozkładu jazdy dla tej trasy." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nie odnaleziono dostawcy dla tej trasy." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s-%s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuta" +msgstr[1] "%s minuty" +msgstr[2] "%s minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s godzina" +msgstr[1] "%s godziny" +msgstr[2] "%s godzin" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s∶%s godzina" +msgstr[1] "%s∶%s godziny" +msgstr[2] "%s∶%s godzin" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Całą dobę" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od świtu do zmierzchu" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Codziennie" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Dni ustawowo wolne od pracy" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Wakacje/ferie szkolne" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zamknięte" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Nieznana" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Dokładna" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s godz." + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s godz. %s min" +msgstr[1] "%s godz. %s min" +msgstr[2] "%s godz. %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta wtyczka nie obsługuje najpóźniejszego przybycia" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Kontynuuj na: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Kontynuuj" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Skręć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Skręć w lewo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Skręć lekko w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Skręć lekko w lewo" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Skręć gwałtownie w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Skręć gwałtownie w lewo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Skręć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Skręć w prawo" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Skręć lekko w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Skręć lekko w prawo" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Skręć gwałtownie w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Skręć gwałtownie w prawo" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rondzie zjedź w: %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rondzie zjedź do: %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Wjedź na rondo" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Wejdź do windy i wysiądź na: %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Wejdź do windy" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Zawróć w lewo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Zawróć w lewo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Zawróć w prawo na: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Zawróć w prawo" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 00000000..035ff4c7 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,2109 @@ +# Portuguese translation for gnome-maps. +# Copyright © 2013, 2014 gnome-maps +# This file is distributed under the same license as the gnome-maps package. +# António Lima , 2013. +# Duarte Loreto , 2014. +# Tiago Santos , 2014 - 2016. +# Pedro Albuquerque , 2015. +# Bruno Ramalhete , 2016. +# Juliano Camargo , 2020. +# Juliano de Souza Camargo , 2020. +# Hugo carvalho , 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 16:25+0100\n" +"Last-Translator: Hugo Carvalho \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Language: pt_PT\n" +"X-Source-Language: C\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapas do GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontre lugares em todo o mundo" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"O Mapas dá-lhe acesso a mapas de todo o mundo. Permite que encontre " +"rapidamente o local que procura, procurando por uma cidade ou rua, ou " +"localizando um sítio para um encontro com um amigo." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"A aplicação Mapas utiliza a base de dados colaborativa OpenStreetMap, " +"construída por centenas de milhares de pessoas por todo o globo." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Uma aplicação simples para visualização de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;Rotas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que a sua localização seja colocada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas da última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo de mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo de mapa a visualizar (ruas, satélite etc)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Estado de maximização da janela" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de procura" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados de procura da busca geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de locais recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de locais recentemente visitados a armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes a armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas recentemente visitadas a armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Definição de privacidade para o Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Última definição de privacidade usada para o Foursquare. Valores possíveis " +"são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Emissão do Foursquare para o Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como publicação na conta do Facebook " +"associada à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Emissão do Foursquare para o Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se o Foursquare deve emitir como tweet na conta do Twitter associada " +"à conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de utilizador OpenStreetMap ou correio eletrónico" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indica se o utilizador iniciou sessão para editar dados no OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte utilizado para roteamento" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Se a aplicação está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utilizar vista aérea híbrida" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se a vista aérea deve utilizar estilo híbrido (com rótulos)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Publicar no Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Publicar no Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Inscrever" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar um destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que há aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar a localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar a vista" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluir a rota e os marcadores" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Ver a sua localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Escolher o tipo de mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Reduzir" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Ampliar" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir a rota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Ver os favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostrar os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Procurar" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ver o programador de rotas" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vista de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ver escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Ir para a localização atual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Mudar para a vista de mapas" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Mudar para a vista de satélite" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Ver os rótulos" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camadas de mapa…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Ligue os serviços de localização para saber onde está" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Definições de local" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar a conta OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Atalhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Acerca do Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir o menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "O Mapas está desligado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"O Mapas precisa de uma ligação à Internet ativa para funcionar corretamente, " +"mas não encontrou nenhuma." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verifique a sua ligação e definições de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Inicie uma sessão para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa usando\n" +"uma conta OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Correio eletrónico" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Palavra-passe" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Inscrever-se" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Iniciar sessão" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, não resultou. Por favor, tente novamente ou visite\n" +"OpenStreetMap para repor a sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não correspondeu, por favor, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Insira o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Sessão iniciada" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "A sua conta OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Terminar sessão" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Estrada" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da casa" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações ao mapa serão visíveis em todos os mapas\n" +"que utilizar dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Recentemente utilizado" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Seguinte" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Sem resultados encontrados" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ocorreu um erro" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste-o para alterar a ordem em que aparece na rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "_Inscrever…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camadas de mapa" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Mudar visibilidade" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Procura de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rotas de itinerários de transporte público são providas por serviços\n" +"de terceiros.\n" +"O GNOME não garante a idoneidade dos itinerários e programações expostas.\n" +"Note que alguns provedores podem não incluir todos os tipos de transportes,\n" +"ou seja, um provedor nacional pode não incluir linhas aéreas, e um provedor\n" +"local pode ignorar comboios regionais.\n" +"Nomes e marcas mostradas devem ser consideradas como registadas quando " +"aplicável." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Ver mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar paradas intermediária e informação" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ver paradas intermediárias e informação" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Partir já" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Partir às" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar às" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Ver" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ónibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Eléctricos" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Comboios" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metros" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Barcos" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partilhar a localização" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direções" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Ampliar para adicionar a localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falhou ao localizar estrutura de mosaico na pasta" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falhou ao processar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Atributos requeridos em falta" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Impossível localizar o elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para a estrutura de pasta local de telas" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamanho da tela para o diretório local de telas" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Ver a versão da aplicação" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorar a disponibilidade de rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FICHEIRO...|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "A carregar" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Selecione um local" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"O Mapas não pode encontrar o local para inscrição com o Foursquare. Por " +"favor, selecione outro na lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Inscrever-se em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para se inscrever em %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Impossível encontrar “%s” no serviço social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Impossível encontrar um local adequado para inscrição nesta localização" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor, abra as Contas online para iniciar " +"sessão e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Localização foi adicionada ao mapa, note que pode demorar um pouco antes de " +"mostrar no mapa e nos resultados pesquisados." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de ficheiros é só de leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Não tem permissão para gravar aí" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Sem nome de ficheiro" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Impossível exportar a vista" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localização atual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenadas inválidas" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erro de processamento" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Pedido de rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Rota não encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Iniciar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todos os ficheiros de camada" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Falha ao ligar-se ao serviço de localização" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"António Lima \n" +"Bruno Ramalhete \n" +"Pedro Albuquerque \n" +"Tiago Santos \n" +"Juliano de Souza Camargo \n" +"Hugo Carvalho " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Uma aplicação de mapas para o GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Direitos de autor © 2011 – 2021 Red Hat, Inc. e autores do Mapas do GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados cartográficos de %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Telas de mapas fornecida por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Procura fornecida por %s utilizando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Deseja continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Está prestes a abrir ficheiros com um tamanho total de %s MB. Isto pode " +"demorar algum tempo a carregar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipo de ficheiro não suportado" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Falha ao abrir GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Utilizador ou palavra-passe incorretos" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Mau pedido" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "O objeto foi eliminado" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relação referem-se a filho não existente" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece nos sinais." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Página Web" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Isto não é um URL válido. Certifique-se de incluir http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"A página Web oficial. Tente utilizar a forma mais básica do URL p.ex. http://" +"exemplo.com em vez de http://exemplo.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Utilize o formato internacional, começando com o sinal " +"+. Tenha atenção às leis locais de privacidade, sobretudo para números de " +"telefone privados." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Correio eletrónico" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Este não é um endereço de e-mail válido. Certifique-se de não incluir o " +"mailto: prefixo de protocolo." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Endereço de e-mail de contacto para pedidos de informação. Adicionar apenas " +"endereços de correio eletrónico que se destinam a ser utilizados " +"publicamente." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir um código de linguagem e um título de " +"artigo tal como \"pt:Título do artigo\"." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Veja a ligação na etiqueta para ajuda no formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acesso para cadeiras de rodas" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acesso à Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Ligado" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Takeaway" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Apenas" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaismo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confusionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jinismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islamismo" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritualismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taioísmo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalismo Unitário" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Casas de banho" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Notas" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação utilizada para informar outros contribuidores acerca de " +"informações não tão óbvias de elementos, a intenção do autor ao criá-los, ou " +"dicas para aperfeiçoamentos." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selecione o tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Feito" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Sítio não nomeado" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falha ao processar URI Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisão" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número da telefone" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Oferece takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Não oferece takeaway" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Apenas oferece takeaway" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acesso público à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sem acesso à Internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acesso à Internet por cabo" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computadores disponíveis para utilização" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistência na Internet disponível" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sem casas de banho disponíveis" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Casas de banho disponíveis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acessível a cadeiras de rodas" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acesso limitado a cadeiras de rodas" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Não acessível a cadeira de rodas" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Designado para utilizadores de cadeiras de rodas" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s abaixo do nível do mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "No nível do mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religião:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Sítio não encontrado no OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Coordenadas no URL não são válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL não suportado" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s para %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "A carregar telas de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Pode abortar a impressão se isto demorar demasiado" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adicionar um destino intermediário" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remover o destino intermediário" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Reverter a rota" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s com %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falha ao abrir URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falha ao carregar o ficheiro" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerário fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Partir de %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Partir" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhar %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegar à %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegar" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Ver as instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar as instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar as alternativas antecedentes" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar as alternativas subsequentes" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Sem alternativas antecedentes." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Sem alternativas subsequentes." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário encontrado nesta rota." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nenhum fornecedor encontrado nesta rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "24 horas" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Do nascer ao pôr do Sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Todos os dias" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s - %s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Feriados públicos" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "fechado" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s - %s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconhecida" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exata" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Esta extensão não suporta a última chegada" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire curva ligeira à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Vire curva ligeira à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire curva apertada à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Vire curva apertada à esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire curva ligeira à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Vire curva ligeira à direita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire curva apertada à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Vire curva apertada à direita" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rotunda, tome a saída %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rotunda, tome a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Tome a rotunda" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Tome o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Tome o elevador" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça uma curva em u à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faça uma curva em u à esquerda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça uma curva em u à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faça uma curva em u à direita em %s" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Procure por tipos de localizações específicas, tais como “Bares perto da " +#~ "Rua Augusta, Lisboa” ou “Hotéis perto de Alexanderplatz, Berlin”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Definição de privacidade para o Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Última definição de privacidade usada para o Facebook. Valores possíveis " +#~ "são EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS ou SELF." + +#~ msgid "Everyone" +#~ msgstr "Todos" + +#~ msgid "Friends of friends" +#~ msgstr "Amigos de amigos" + +#~ msgid "Just friends" +#~ msgstr "Só amigos" + +#~ msgid "Just me" +#~ msgstr "Só eu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "O Mapas não pode encontrar o local para inscrição com o Facebook. Por " +#~ "favor, selecione outro na lista." + +#~ msgid "Check in here" +#~ msgstr "Inscrever aqui" + +#~ msgid "Show more information" +#~ msgstr "Mostrar mais informação" + +#~ msgid "Population:" +#~ msgstr "População:" + +#~ msgid "Altitude:" +#~ msgstr "Altitude:" + +#~ msgid "Opening hours:" +#~ msgstr "Horário de funcionamento:" + +#~ msgid "Internet access:" +#~ msgstr "Acesso à Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Casas de banho:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acesso para cadeiras de rodas:" + +#~ msgid "Phone:" +#~ msgstr "Telefone:" + +#~ msgid "yes" +#~ msgstr "sim" + +#~ msgid "limited" +#~ msgstr "limitado" + +#~ msgid "no" +#~ msgstr "não" + +#~ msgid "designated" +#~ msgstr "designado" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "O URL OpenStreetMap não é válido" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s - %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s - %s - %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s - %s" + +#~ msgid "wired" +#~ msgstr "ligado" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviço" + +#~| msgid "Print Route" +#~ msgid "Find a Route" +#~ msgstr "Encontrar uma Rota" + +#~ msgid "Quit" +#~ msgstr "Sair" + +#~ msgid "Load Map Layer" +#~ msgstr "Carregar camada de mapa" + +#~ msgid "Open with another application" +#~ msgstr "Abrir com outra aplicação" + +#~ msgid "Don't have an account?" +#~ msgstr "Não tem uma conta?" + +#~ msgid "Press enter to search" +#~ msgstr "Prima Enter para procurar" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f s" +#~ msgstr "%f seg" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Posição não encontrada" + +#~ msgid "Country code: %s" +#~ msgstr "Código de país: %s" + +#~ msgid "Population: %s" +#~ msgstr "População: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Acesso para deficientes: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Falha ao processar ficheiro GeoJSON" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Última localização conhecida e precisão" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Última localização conhecida (latitude e longitude em graus) e precisão " +#~ "(em metros)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Descrição da última localização conhecida do utilizador." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Se a última localização conhecida foi definida manualmente pelo " +#~ "utilizador ou não." + +#~ msgid "I’m here!" +#~ msgstr "Estou aqui!" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 00000000..1b0c29ff --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1933 @@ +# Brazilian Portuguese translation for gnome-maps. +# Copyright (C) 2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Georges Basile Stavracas Neto , 2013. +# Fábio Nogueira , 2016. +# Artur de Aquino Morais , 2016. +# Antonio Fernandes C. Neto , 2016. +# Gustavo Marques , 2016. +# Jamerson Tiossi , 2017. +# Henrique Roberto Gattermann Mittelstaedt , 2020. +# Bruno Lopes , 2018, 2020. +# Rafael Fontenelle , 2013-2021. +# Enrico Nicoletto , 2013-2016, 2018, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-19 19:56-0300\n" +"Last-Translator: Enrico Nicoletto \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Mapas" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Encontre lugares ao redor do mundo" + +# O último 'ou' dá sentido de inclusão, pois ambos são opções válidas.--Enrico +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Mapas oferece a você acesso rápido a mapas ao redor de todo o mundo. Permite " +"que você localize rapidamente o local que deseja encontrar através da " +"pesquisa por uma cidade ou rua e a encontrar um local para encontrar um " +"amigo(a)." + +# Contribuições pois os usuários inserem os dados no banco de dados e não criam as tabelas deste --Enrico. +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Mapas usa o banco de dados colaborativo do OpenStreetMap, com contribuições " +"de centenas de milhares de pessoas ao redor do planeta." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "O Projeto GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapas" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Um simples aplicativo de mapas" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapas;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite que sua localização seja mostrada no mapa." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "última localização vista" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordenadas do última localização vista." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "ampliação" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nível de ampliação" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tipo do mapa" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "O tipo do mapa para exibir (rua, aérea etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Tamanho da janela" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Tamanho da janela (largura e altura)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Posição da janela" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "A posição da janela (X e Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "O estado de janela maximizada" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Número máximo de resultados de pesquisa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Número máximo de resultados da pesquisa por geocódigo." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Número de lugares recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Número de lugares visitados recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Número de rotas recentes para armazenar" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Número de rotas visitadas recentemente para armazenar." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configurações de privacidade de check-in do quadrante" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Ultima configuração de privacidade de check-in do quadrante usada. Valores " +"possíveis são: público, seguidores ou privado." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Publicação no Facebook de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um postagem na conta " +"Facebook associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Publicação no Twitter de check-in no Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indica se Foursquare deveria publicar o check-in como um tweet na conta " +"Twitter associada com a conta Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nome de usuário do OpenStreetMap ou endereço de e-mail" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Indica se o usuário ingressou para editar dados do OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Último tipo de transporte usado para rotas" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Modo noturno" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Se o aplicativo está em modo noturno." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Usar blocos aéreos híbridos" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Se blocos aéreos devem usar estilo híbrido (com etiquetas)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Visibilidade" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Postar no Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Postar no Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Cancelar" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Fazer c_heck-in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Público" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Seguidores" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privado" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rota a partir daqui" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adicionar destino intermediário" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rota para aqui" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "O que está aqui?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiar localização" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportar visão" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Incluir rota e marcações" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Escolhe o tipo do mapa" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Reduz" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Amplia" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Imprimir rota" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Ativa favoritos" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Geral" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Mostra os atalhos" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pesquisa" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Alterna o planejador da rota" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Imprimir a rota" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Sair" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Abre o menu principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Visão de mapa" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Ampliar" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Reduzir" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Alterna a escala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Vai para a localização atual" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Muda para a visão de rua" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Muda para a visão aérea" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Abre a camada" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Mostrar etiquetas" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Abrir camada…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Habilite o serviço de localização para encontrar sua localização" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Cancelar" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurações de localização" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Modo noturno" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurar conta do OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportar como imagem" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "A_talhos de teclado" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Sobre o Mapas" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Abrir menu principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Mapas está desconectado!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Mapas necessita de uma conexão de internet ativa para funcionar " +"propriamente, mas nenhuma pode ser encontrada." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verifique sua conexão e as configurações de proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Conta do OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Ingresse para editar mapas" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajude a melhorar o mapa, usando uma\n" +"conta do OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Senha" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Cadastrar" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Entrar" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Desculpe, mas isto não funcionou. Tente novamente ou visite\n" +"o OpenStreetMap para reiniciar sua senha." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "O código de verificação não combina, por gentileza, tente novamente." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Digite o código de verificação mostrado acima" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verificar" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Ingressado" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Sua conta do OpenStreetMap está ativa." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Sair" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Rua" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Número da residência" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Código postal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Cidade" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tipo" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nenhum" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adicionar campo" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentário" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Alterações no aplicativo Mapas serão visíveis em\n" +"todos os mapas que usarem dados do OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Usado recentemente" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Próximo" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Um erro foi encontrado" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Arraste para alterar a ordem da rota" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Abrir localização" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiar" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Enviar para…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Abrir camada" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Abrir" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Tornar visível" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Pesquisa de rota por GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerários de rotas para trânsito público é fornecido por serviços\n" +"de terceiros.\n" +"GNOME não pode garantir que os itinerários e agendamentos mostrados estejam\n" +"corretos. Observe que alguns fornecedores podem não incluir todos os modos\n" +"de transporte disponíveis, por exemplo, um fornecedor nacional pode não\n" +"incluir companhias aéreas e um fornecedor local pode perder trens regionais." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Mostrar mais resultados" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ocultar informações e paradas intermediárias" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Mostrar informações e paradas intermediárias" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Sair agora" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Sair por" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Chegar por" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Mostrar" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Ônibus" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Bondes" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trens" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrô" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Balsas" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Aviões" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Compartilhar localização" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adicionar à nova rota" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Instruções" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marcar como favorito" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editar no OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Amplie para adicionar uma localização!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Ampliar" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Falha ao pesquisar estrutura de blocos no diretório" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Falha ao analisar documento XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Faltando atributos necessários" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Não foi possível localizar elemento OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Um caminho para um diretório local de estrutura de blocos" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "O tamanho de bloco para o diretório local de blocos" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Mostra a versão do programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignora a disponibilidade de rede" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ARQUIVO…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selecione uma conta" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Carregando" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Escolha um local" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Mapas não consegue encontrar o local para dar check-in no Foursquare. Por " +"favor selecione um local da lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Fazer check-in em %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Escreva uma mensagem opcional para fazer check-in em %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Não foi possível localizar “%s” no serviço social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Não foi possível encontrar um local apropriado para fazer check-in nessa " +"localização" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"As credenciais expiraram, por favor abra o Contas Online, para autenticar-se " +"e ativar esta conta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nada foi encontrado aqui!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"A localização foi adicionada ao mapa; note que pode levar um tempo antes " +"dela ser mostrada no mapa e em resultados de pesquisa." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapas em %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "O sistema de arquivos é somente leitura" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Você não possui permissão para salvar lá" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "O diretório não existe" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nenhum nome de arquivo foi especificado" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Não foi possível exportar a visão" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Localização Atual" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordenada inválida" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "erro de análise" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometria desconhecida" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Solicitação da rota falhou." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenhuma rota encontrada." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Começar!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Todas os arquivos de camadas" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Falha ao conectar ao serviço de localização" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Enrico Nicoletto \n" +"Fábio Nogueira \n" +"Rafael Fontenelle \n" +"Henrique Roberto Gattermann Mittelstaedt \n" +"Bruno Lopes " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Um aplicativo de mapas para o GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. e os autores do GNOME Mapas" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dados de mapas por %s e contribuidores" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Blocos de mapas fornecidos por %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Pesquisa fornecida por %s usando %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Falha ao abrir camada" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Você deseja continuar?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Você está prestes a abrir arquivos com um tamanho total de %s MB. Isso pode " +"levar um bom tempo para carregar" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Não há suporte ao tipo de arquivo" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Falha ao analisar o URI geo" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nome de usuário ou senha incorretos" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Sucesso" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Solicitação inválida" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objeto não encontrado" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflito, alguém acabou de modificar o objeto" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "O objeto foi excluído" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Caminho ou relacionamento faz referência a filho não existente" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nome" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "O nome oficial. Isto é tipicamente o que aparece em sinais." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Endereço" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Site" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Este não é um URL válido. Certifique-se de incluir http:// ou https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"O site oficial. Tente usar o formulário mais básico de um URL i.e. http://" +"exemplo.com.br em vez de http://exemplo.com.br/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefone" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Número de telefone. Use o formato internacional, começando com um sinal de " +"+. Cuidado com as leis de privacidade locais, especialmente para números de " +"telefone privado." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Este não é um endereço de e-mail válido. Certifique-se de incluir o prefixo " +"de protocolo mailto:" + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Endereço de e-mail de contato para perguntas. Adicione apenas endereços de e-" +"mail que devem ser usados publicamente." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipédia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"O formato utilizado deve incluir o código do idioma e o título do artigo " +"como “pt:Título do artigo”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Horário de funcionamento" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Veja o link na etiqueta para obter ajuda sobre o formato." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "População" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitude" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevação (altura acima do nível do mar) de um ponto em metros." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acesso a cadeirantes" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Sim" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Não" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitado" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Designado" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acesso à Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cabeada" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviço" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Para viagem" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Apenas" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religião" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animismo" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budismo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaísmo" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cristianismo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucionismo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduísmo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainismo" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaísmo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islã" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Múltiplas religiões" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganismo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianismo" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Cientologia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Xintoísmo" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Siquismo" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Espiritismo" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoismo" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitário Universalismo" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vodu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidismo" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrismo" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Banheiros" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Nota" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informação usada para informar outros mapeadores sobre informações não " +"óbvias sobre um elemento, a intenção do autor ao criá-la ou dicas para " +"melhorias posteriores." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adicionar ao OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selecione um tipo" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Concluído" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Lugar sem nome" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Falha ao analisar o URI geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordenadas" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Precisão" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Precisão: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Número do telefone" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Oferece para viagem" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Não oferece para viagem" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Só oferece para viagem" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acesso Público à Internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Sem acesso à internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi Público" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acesso à internet cabeada" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Computadores disponíveis para uso" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Assistência de internet disponível" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Sem banheiros disponíveis" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Banheiros disponíveis" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Acessível a cadeirantes" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Acesso limitado a cadeirantes" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Não acessível a cadeirantes" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Designado para cadeirantes" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s abaixo do nível do mar" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "No nível do mar" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religião:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Lugar não encontrado no OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "As coordenadas na URL não são válidas" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Não há suporte à URL" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De %s até %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Carregando mosaicos de mapa para impressão" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Você pode abortar a impressão se isso leva muito tempo" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Abortar impressão" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adiciona via localização" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Remove via localização" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rota reversa" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adicionar %s para %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Falha ao abrir a URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Abrir com %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "falha ao carregar arquivo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tempo estimado: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerários fornecidos por %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Início em %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Início" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Caminhe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Chegada em %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Chegada" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Mostrar instruções de caminhada" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ocultar instruções de caminhada" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Carregar alternativas anteriores" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Carregar alternativas posteriores" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenhuma alternativa anterior encontrada." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenhuma alternativa posterior encontrada." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e de %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nenhum dado de horário localizado para essa rota." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nenhum provedor localizado para essa rota." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minuto" +msgstr[1] "%s minutos" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hora" +msgstr[1] "%s:%s horas" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Em volta do relógio" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Do nascer até o pôr do sol" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Todo dia" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Feriados públicos" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Feriados escolares" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "não abrir" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Desconhecido" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exato" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s mins" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Este plugin não tem suporte a chegada mais recente" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continue em %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continue" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Vire à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Vire à esquerda" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Vire ligeiramente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Vire ligeiramente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Vire acentuadamente à esquerda em %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Vire acentuadamente à esquerda" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Vire à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Vire à direita" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Vire ligeiramente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Vire ligeiramente à direita" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Vire acentuadamente à direita em %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Vire acentuadamente à direita" + +# Notas: +# %s aqui é um número -- Rafael +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Na rotatória, pegue a %sª saída" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Na rotatória, pegue a saída para %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Pegue a rotatória" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Pegue o elevador e saia em %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Pegue o elevador" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faça um retorno em U à esquerda para %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faça um retorno em U à esquerda" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faça um retorno em U à direita para %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faça um retorno em U à direita" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 00000000..029aaaf5 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,2069 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Mada-Gabriela , 2018. +# Daniel Șerbănescu , 2018. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-02 18:08+0200\n" +"Last-Translator: Florentina Mușat \n" +"Language-Team: Gnome Romanian Translation Team\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2);\n" +"X-Generator: Poedit 3.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Hărți GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Găsește locații din întreaga lume" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Hărți vă oferă acces rapid la hărți din întreaga lume. Vă permite să găsiți " +"rapid locul pe care îl căutați, să căutați un oraș sau o stradă sau să " +"localizați un loc unde să întâlniți un prieten." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Hărți colaborează cu OpenStreetMap folosind o întreagă bază de date, " +"realizată de sute de mii de oameni de pe întregul pământ." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Proiectul GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Hărți" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "O aplicație simplă cu hărți" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Hărți;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Permite ca locația curentă să fie arătată pe hartă." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "locația vizualizată ultima dată" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Coordonatele locației vizualizate ultima dată." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Nivel zoom" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Tip de hartă" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Tipul de hartă de afișat (stradală, aeriană, etc.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Dimensiunea ferestrei" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Dimensiunea ferestrei (lățime și înălțime)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Poziția ferestrei" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Poziția ferestrei (X si Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fereastră maximizată" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Starea de maximizare a ferestrei" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Numărul maxim de rezultate pentru căutare" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Număr maxim de rezultate din căutarea după coordonate geografice." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Număr de locuri recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Număr de locuri vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Număr de rute recente de stocat" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Număr de rute vizitate recent de stocat." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Configurare de confidențialitate pentru înregistrare Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Configurarea de confidențialitate pentru înregistrare Foursquare utilizată " +"cel mai recent. Valorile posibile sunt: public, cei care urmăresc sau privat." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Difuzarea pe Facebook a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un mesaj pe " +"contul Facebook asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Difuzarea pe Twitter a înregistrării Foursquare" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indică dacă Foursquare ar trebui să difuzeze înregistrarea ca un tweet pe " +"contul Twitter asociat cu contul Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Nume de utilizator OpenStreetMap sau adresă de e-mail" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indică dacă utilizatorul s-a conectat pentru editarea datelor OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Ultimul tip de transport utilizat pentru drum" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Mod nocturn" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Dacă aplicația este în modul nocturn." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Utilizează dalele aeriene hibride" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Dacă dalele aeriene ar trebui să utilizeze stilul hibrid (cu etichete)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Vizibilitate" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Postează pe Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Postează pe Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Anulează" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Înr_egistrează" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Public" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Urmăritori" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rută de aici" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Adaugă destinațiile intermediare" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rută până aici" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Ce este aici?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Copiază locația" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportă vizualizarea" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportă" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Includeți ruta și marcajele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Alegeți tipul hărții" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Micșorează" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Mărește" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Tipărește ruta" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Comută preferatele" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Arată scurtăturile" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Caută" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Comută planificatorul de rută" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tipărește ruta" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ieșire" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Vizualizarea hărții" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Mărește" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Micșorează" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Comută scara" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Navighează la locația curentă" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Schimbă la vizualizarea stradală" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Schimbă la vederea aeriană" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Deschide stratul formei" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Arată etichetele" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Deschide stratul formei…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Pornește serviciile de localizare pentru a vă găsi locația" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Anulează" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Configurări de locație" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Mod nocturn" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Configurează contul OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportă ca imagine" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Scurtături de tastatură" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Despre Hărți" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Deschide meniul principal" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Hărți este offline!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Hărți necesită o conexiune la internet pentru a funcționa în mod " +"corespunzător, dar nicio conexiune nu a fost găsită." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Verificați conexiunile și configurările proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Cont OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Autentificați-vă pentru a edita " +"hărți" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Ajutați la îmbunătățirea hărții, utilizând un\n" +"cont OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-mail" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parolă" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Înregistrare" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Autentificare" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nu a funcționat. Încercați din nou, sau vizitați\n" +"OpenStreetMap pentru a restabili parola." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Codul de verificare nu se potrivește, încercați din nou." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Introduceți codul de verificare arătat mai sus" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifică" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Autentificat" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Contul dumneavoastră OpenStreetMap este activ." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Deautentificare" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Stradă" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Număr casă" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Cod poștal" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Oraș" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tip" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Niciunul" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Adaugă un câmp" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Comentariu" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Schimbările de hartă vor fi vizibile pe toate hărțile\n" +"care utilizează date OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Folosite recent" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Editare pe OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Următorul" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Niciun rezultat găsit" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "A apărut o eroare" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Trageți pentru a schimba ordinea rutei" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Deschide locația" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Copiază" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Trimite la…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Verificare de intrare…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Deschide stratul formei" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Deschide" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Comută vizibilitatea" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Caută rute prin GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Rutarea itinerariilor pentru transportul public este furnizată de servicii\n" +"părți terțe.\n" +"GNOME nu poate garanta corectitudinea itinerariilor și orarelor arătate.\n" +"Observați că unii furnizori pot să nu includă toate modurile de transport " +"disponibile,\n" +"de ex. un furnizor național ar putea să nu includă liniile aeriene, și un " +"furnizor local ar putea\n" +"să lipsească trenurile regionale.\n" +"Numele și mărcile arătate trebuie să fie considerate mărci înregistrate " +"atunci când este cazul." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Arată mai multe rezultate" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ascunde informațiile și opririle intermediare" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Arată informațiile și opririle intermediare" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Pleacă acum" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Pleacă până la" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Sosește până la" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Arată" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobuze" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaie" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenuri" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrouri" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feriboturi" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Avioane" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Partajează locația" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Adaugă la ruta nouă" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Direcții" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Marchează ca favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Editează pe OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Măriți pentru a adăuga locația!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Mărește" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Nu s-a putut găsi structura de fragmente în director" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nu s-a putut analiza documentul XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Lipsesc atributele necesare" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nu s-a putut găsi elementul OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "O cale către o structură locală de directoare pentru fragmente" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Dimensiunea unei dale pentru directorul de dale local" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Arată versiunea programului" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignoră disponibilitatea rețelei" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIȘIER…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Selectați un cont" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Se încarcă" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Selectați un loc" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Hărți nu poate găsit locul pentru înregistrarea cu Foursquare. Selectați " +"unul din această listă." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Înregistează la %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Scrieți un mesaj opțional pentru înregistrare la %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nu s-a putut găsi „%s” la serviciul social" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "" +"Nu s-a putut găsit un loc potrivit pentru înregistrare la această locație" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Certificările au expirat, deschideți conturi online pentru a vă autentifica " +"și activa contul acesta" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Nimic nu a fost găsit aici!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Locația a fost adăugată pe hartă, rețineți că poate dura ceva timp înainte " +"de a fi arătată pe hartă și în rezultatele căutării." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Hărți la %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistemul de fișiere este numai pentru citire" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nu aveți permisiunea de a salva acolo" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Directorul nu există" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nu este specificat nici un nume de fișier" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nu se poate exporta vizualizarea" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Locație curentă" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "coordonate nevalide" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "eroare de parsare" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "geometrie necunoscută" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Cererea rutei a eșuat." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nu s-au găsit rute." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Pornește!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Toate fișierele strat" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Nu s-a reușit conectarea la serviciul de localizare" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Mădălin Șerbănescu , 2018\n" +"Florentina Mușat , " +"2018-2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "O aplicație cu hărți pentru GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Drepturi de autor © 2011 – 2021 Red Hat, Inc. și autorii GNOME Hărți" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Datele hărții ale %s și contribuitorii" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Fragmente de hărți furnizate de %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Căutare furnizată de %s utilizând %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Nu s-a putut deschide stratul" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Doriți să continuați?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Sunteți pe cale să deschideți fișiere cu o dimensiune totală de %s MB. Acest " +"lucru ar putea dura ceva timp să se încarce" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Tipul de fișier nu este suportat" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Nu s-a putut deschide GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nume de utilizator sau parolă incorectă" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Succes" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Cerere greșită" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Obiectul nu a fost găsit" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Conflict, altcineva tocmai a modificat obiectul" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Obiectul a fost șters" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Calea sau relația se referă la copii care nu există" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Nume" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Numele oficial. Acesta este, de obicei, numele real." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresă" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Website" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Acesta nu este un URL valid. Asigurați-vă că includeți http:// sau https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Pagina web oficială. Încercați să utilizați forma cea mai de bază a unui URL " +"de ex: http://example.com în loc de http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Număr de telefon. Utilizați formatul internațional, care începe cu un semn " +"+. Aveți grijă la legile de confidențialitate locale, în special pentru " +"numerele de telefon private." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Email" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Aceasta nu este o adresă email validă. Asigurați-vă că nu includeți prefixul " +"de protocol mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Adresă email de contact pentru solicitări de informații. Adăugați doar " +"adrese de email care sunt destinate a fi utilizate public." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatul utilizat trebuie să includă codul de limbă și titlul articolului ca " +"„en:titlu de articol”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Ore de deschidere" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Consultați legătura din etichetă pentru ajutor cu formatul." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Populație" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Altitudine" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Elevația (înălțimea deasupra nivelului mării) unui punct în metri." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Acces pentru scaun cu rotile" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nu" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Limitat" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Desemnat" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Acces la internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Cu fir" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Serviciu" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Mâncare la pachet" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Doar" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religie" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budism" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Caodaism" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Creștinism" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Confucianism" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Iudaism" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Religii multiple" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Păgânism" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologie" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Universalism unitarian" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalete" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Notiță" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informații utilizate pentru a informa alți utilizatori de hărți despre " +"informațiile care nu sunt evidente despre un element, intenția autorului în " +"timpul creării acestuia, sau indicii pentru îmbunătățiri ulterioare." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Adaugă la OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Selectați tipul" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Gata" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Loc nedenumit" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Nu s-a putut parsa URI-ul Geo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Coordonate" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Acuratețe" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Acuratețe: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Număr de telefon" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Oferă mâncare la pachet" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Nu oferă mâncare la pachet" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Oferă doar mâncare la pachet" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Acces la internet public" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Nu există acces la internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi public" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Acces la internet prin cablu" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Calculatoare disponibile pentru utilizare" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Asistență pe internet disponibilă" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nu există toalete disponibile" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toaletele sunt disponibile" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Accesibil pentru scaun cu rotile" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Accesibilitate pentru scaun cu rotile limitată" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Nu este accesibil pentru scaun cu rotile" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Desemnat pentru utilizatorii în scaun cu rotile" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s sub nivelul mării" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "La nivelul mării" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religie:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Locul nu a fost găsit în OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Coordonatele din URL nu sunt valide" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL-ul nu este suportat" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "De la %s la %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Se încarcă fragmentele de hartă pentru tipărire" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Puteți să anulați tipărirea dacă durează prea mult" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Despre tipărire" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Adaugă via locație" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Elimină via locație" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Inversează ruta" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Adaugă %s la %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Nu s-a putut deschide URI-ul" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Deschide cu %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nu s-a putut încărca fișierul" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Timp estimat: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerarii furnizate de %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Începe la %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Începe" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Plimbare pe %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Sosește la %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Sosește" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Arată instrucțiunile de plimbare" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ascunde instrucțiunile de plimbare" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Încarcă alternativele de dinainte" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Încarcă alternativele de mai târziu" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nu s-au găsit alternative anterioare." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nu s-au găsit alternative de mai târziu." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Nu s-au găsit date în orar pentru această rută." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Nu s-a găsit furnizor pentru această rută." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minute" +msgstr[2] "%s de minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s oră" +msgstr[1] "%s ore" +msgstr[2] "%s de ore" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s oră" +msgstr[1] "%s:%s ore" +msgstr[2] "%s:%s de ore" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Non-stop" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "De la răsărit la apus" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "În fiecare zi" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Vacanțe publice" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Vacanțe școlare" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "nu este deschis" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Necunoscut" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exact" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s o" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s o %s min" +msgstr[1] "%s o %s min" +msgstr[2] "%s o %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Acest modul nu suportă ultima sosire" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Continuă pe %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Continuă" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Virează la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Virează la stânga" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Virează ușor la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Virează ușor la stânga" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Virează ascuțit la stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Virează ascuțit la stânga" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Virează la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Virează la dreapta" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Virează ușor la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Virează ușor la dreapta" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Virează ascuțit la dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Virează ascuțit la dreapta" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "La sensul giratoriu, luați ieșirea %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "La sensul giratoriu, luați ieșirea spre %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Luați sensul giratoriu" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Luați liftul și ieșiți la %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Luați liftul" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Faceți un viraj spre stânga pe %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Faceți un viraj spre stânga" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Faceți un viraj spre dreapta pe %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Faceți un viraj spre dreapta" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Puteți de asemenea să căutați anumite tipuri de locații, precum „Gara " +#~ "Lipscani, București” sau „Acces Wi-Fi lângă Dumbrava, Sibiu”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Configurare de confidențialitate pentru înregistrare Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Configurarea de confidențialitate pentru înregistrare Facebook utilizată " +#~ "cel mai recent. Valorile posibile sunt: TOATĂ_LUMEA, " +#~ "PRIETENII_PRIETENILOR, TOȚI_PRIETENII sau DE_SINE." + +#~ msgid "Everyone" +#~ msgstr "Toată lumea" + +#~ msgid "Friends of friends" +#~ msgstr "Prietenii prietenilor" + +#~ msgid "Just friends" +#~ msgstr "Doar prietenii" + +#~ msgid "Just me" +#~ msgstr "Doar eu" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Hărți nu poate găsi locul pentru înregistrarea cu Facebook. Selectați " +#~ "unul din această listă." + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Găsește o rută" + +#~ msgid "Check in here" +#~ msgstr "Înregistrați-vă aici" + +#~ msgid "Show more information" +#~ msgstr "Arată mai multe informații" + +#~ msgid "Population:" +#~ msgstr "Populație:" + +#~ msgid "Altitude:" +#~ msgstr "Altitudine:" + +#~ msgid "Opening hours:" +#~ msgstr "Ore de deschidere:" + +#~ msgid "Internet access:" +#~ msgstr "Acces la internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toalete:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Acces pentru scaun cu rotile:" + +#~ msgid "Phone:" +#~ msgstr "Număr de telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "limitat" + +#~ msgid "no" +#~ msgstr "nu" + +#~ msgid "designated" +#~ msgstr "desemnat" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL-ul de OpenStreetMap nu este valid" + +#~ msgid "wired" +#~ msgstr "cu fir" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "serviciu" + +#~ msgid "Primary menu" +#~ msgstr "Meniu principal" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nu aveți un cont?" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Căută rute prin OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Adaugă o destinație" + +#~ msgid "%f h" +#~ msgstr "%f o" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Deschide cu o altă aplicație" + +#~ msgid "Press enter to search" +#~ msgstr "Apasă Enter pentru a căuta" + +#~ msgid "Quit" +#~ msgstr "Ieșire" + +#~ msgid "OK" +#~ msgstr "OK" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 00000000..f40e47b5 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,2096 @@ +# Russian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Mihail Gurin , 2014, 2015. +# Ivan Komaritsyn , 2015. +# Yuri Myasoedov , 2013, 2014, 2015. +# Stas Solovey , 2014, 2015, 2016. +# Роман Верменко , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 14:54+0300\n" +"Last-Translator: Alexey Rubtsov \n" +"Language-Team: русский \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Poedit 3.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карты GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Поиск местоположений по всему миру" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Приложение «Карты» позволяет получить быстрый доступ к картам по всему миру, " +"находить места в городах, на улицах или указывать места для встречи с " +"друзьями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карты используют базу данных OpenStreetMap, созданную сотнями тысяч людей по " +"всеми миру." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Проект GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карты" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Простое картографическое приложение" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карты;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Позволяет показывать на карте ваше местоположение." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последнее просмотренное местоположение" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координаты последнего просмотренного местоположения." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увеличить" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Уровень масштабирования" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Тип" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карты для отображения (уличная, аэрофотосъемка и т.д.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Размер окна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Размер окна (ширина и высота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положение окна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положение окна (X, Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Окно развёрнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Режим развёрнутого окна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальное количество результатов поиска" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальное количество результатов поиска по поиску геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Количество последних сохранённых мест" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Количество сохранённых недавно посещённых мест." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Количество последних сохранённых маршрутов" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Количество сохранённых недавно использовавшихся маршрутов." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Кто может видеть публикацию в Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последняя использованная настройка. Возможные значения: public, followers " +"или private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Трансляция из Foursquare в Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Facebook." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Трансляция из Foursquare в Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Должны ли публикации в Foursquare транслироваться в привязанный к учётной " +"записи Foursquare аккаунт Twitter." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Имя или адрес эл. почты пользователя OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Указывает, выполнил ли пользователь вход для редактирования данных " +"OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Последний тип транспорта, использовавшийся для маршрута" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Ночной режим" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Должно ли приложение использовать ночной режим." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Используйте гибридную аросъёмку" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Должна ли аэросъёмка использовать гибридный стиль (с метками)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Видимость" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Опубликовать в Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Опубликовать в Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Отменить" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "О_тметиться" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Все" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Подписчики" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Те, кто в этом месте" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут отсюда" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Добавить промежуточный пункт назначения" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюда" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Что здесь?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копировать местоположение" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Экспортировать просматриваемую область" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Экспортировать" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Включить маршрут и маркеры" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Выберите тип карты" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Отдалить" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Приблизить" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Печать маршрута" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Включить или выключить избранные места" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Основные" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показать комбинации клавиш" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Поиск" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Включить или выключить планировщик маршрута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Печать маршрута" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Завершить" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Открыть главное меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Просмотр карты" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Приблизить" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Отдалить" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Включить или выключить масштаб" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти к текущему местоположению" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Переключиться на просмотр улиц" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Переключиться на вид сверху" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Открыть слой" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Показать метки" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Открыть слой фигур…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Включите сервисы местоположения для определения вашей позиции" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Отменить" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметры местоположения" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Ночной режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Настроить учётную запись OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Экспортировать как изображение" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "О приложении" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Открыть главное меню" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Приложение работает в автономном режиме!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Приложению требуется соединение с Интернетом, но оно отсутствует." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Проверьте настройки прокси и соединения." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Учётная запись OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Войдите, чтобы редактировать карты" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Помогите улучшить карту, используя\n" +"учётную запись OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Электронная почта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Регистрация" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Войти" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Неверное имя пользователя или пароль. Попробуйте снова или посетите\n" +"OpenStreetMap для сброса пароля." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Проверочный код не совпадает, попробуйте снова." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Введите показанный выше проверочный код" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Проверить" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Авторизован" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваша учётная запись OpenStreetMap активна." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Выйти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер дома" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Почтовый индекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Город" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Отсутствует" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Добавить поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Комментарий" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Изменения, сделанных в картах, будут доступны на всех картах,\n" +"использующие данные OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно использованные" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Далее" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Результатов не найдено" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Произошла ошибка" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перетащите, чтобы изменить порядок маршрута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Открытое расположение" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копировать" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "О_тправить…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Отметиться…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Открыть слой фигур" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Открыть" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Включить или выключить видимый" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Поиск маршрута с помощью GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршрутизация маршрутов общественного транспорта осуществляется сторонними\n" +"сервисами.\n" +"GNOME не может гарантировать правильность показанных маршрутов и " +"расписаний.\n" +"Обратите внимание, что некоторые провайдеры могут не включать все доступные " +"виды транспорта,\n" +"например, национальный провайдер может не включать авиалинии, а местный " +"провайдер может\n" +"может не включать региональные поезда.\n" +"Указанные названия и бренды следует рассматривать как зарегистрированные " +"торговые марки, когда это применимо." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Показать больше результатов" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Скрывать промежуточные остановки и информацию" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показывать промежуточные остановки и информацию" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Отправляются сейчас" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Отправляются" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибывают" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показывать" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобусы" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваи" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Поезда" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Переправы" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Самолеты" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Поделиться местоположением" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Добавить к новому маршруту" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Направления" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Добавить в избранное" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Изменить на OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Приблизить, чтобы добавить местоположение!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Приблизить" + +# сомнительно, требует проверки +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не удалось найти плиточную структуру в каталоге" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не удалось разобрать документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Пропущены обязательные атрибуты" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Не удалось найти элемент OSM" + +# сомнительно, требует проверки +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Путь к локальному каталогу плиточной структуры" + +# сомнительно, требует проверки +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Размер для локального каталога фрагментов" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Показать версию программы" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Игнорировать доступность сети" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE...|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Выберите учётную запись" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Загрузка" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Выберите место" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не удалось найти место, чтобы поделиться в Foursquare. Выберите одно из " +"списка." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Отметиться в %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите необязательное сообщение для отметки в %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не удалось найти «%s» в социальной сети" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не удалось найти подходящее место, чтобы отметиться здесь" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Истекли полномочия, откройте Сетевые учётные записи, чтобы войти и " +"активировать эту учётную запись" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Здесь ничего не найдено!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Местоположение добавлено на карту. Скоро оно появится на карте и будет " +"выводиться в результатах поиска." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карты на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файловая система доступна только для чтения" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Отсутствуют права на запись в данную директорию" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не существует" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не указано имя файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не удалось экспортировать просматриваемую область" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Текущее местоположение" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неверные координаты" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ошибка разбора" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "неизвестная геометрия" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Сбой при запросе маршрута." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Маршрут не найден." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Старт!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Все файлы слоёв" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Не удалось подключиться к службе местоположения" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Yuri Myasoedov , 2013, 2014.\n" +"Stas Solovey , 2014-2019.\n" +"Alexey Rubtsov , 2021" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Приложение карт для GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Авторское право © 2011 – 2021 Red Hat, Inc. и авторы GNOME Maps" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Картографические данные %s и участников" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Картографические слои предоставлены %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Поиск осуществляется %s с помощью %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Не удалось открыть слой" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Вы хотите продолжить?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Вы собираетесь открыть файлы общим размером %s МБ. Загрузка может занять " +"некоторое время" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Тип файла не поддерживается" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Не удалось открыть геолокационный URI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Неверное имя пользователя или пароль" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Успешно" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Неверный запрос" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Объект не найден" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфликт: кто-то ещё только что изменил объект" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Объект был удалён" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Путь или связь ссылается на несуществующего потомка" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Имя" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Официальное название. Обычно то, что написано на знаках." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адрес" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Веб-сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "Это не правильный URL. Обязательно включите http:// или https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Официальный веб-сайт. Рекомендуется использовать URL в наиболее общей форме, " +"например «http://example.com» вместо «http://example.com/index.html»." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефона. Используйте международный формат, начинающийся со знака «+»." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Это не действительный адрес электронной почты. Убедитесь, что не указан " +"префикс протокола mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Адрес электронной почты для запросов. Добавляйте только те адреса " +"электронной почты, которые предназначены для публичного использования." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Википедия" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Используемый формат должен содержать код языка и заголовок статьи, например " +"«ru:Заголовок статьи»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Часы работы" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Для получения справки по формату см. ссылку в метке." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Население" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Высота" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Высота над уровнем моря в метрах." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Доступ для инвалидных колясок" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Нет" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ограниченный" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Специализированный" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Доступ к Интернету" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Проводной" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Терминал" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Служебный" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Вынос" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Только" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Религия" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анимизм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаи" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодаизм" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Христианство" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуцианство" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Индуизм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнизм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Иудаизм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Несколько религий" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Язычество" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафарианство" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Саентология" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Синто" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхизм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спиритизм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унитарный универсализм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Шаманство" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Езидизм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Туалеты" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Заметка" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Информация, используемая для информирования других картографов о неочевидной " +"информации об элементе, намерении автора при его создании или о намеках на " +"дальнейшее совершенствование." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Добавить в OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Выберите тип" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Неназванное место" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Не удалось разобрать геолокационный URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координаты" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Точность" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точность: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Номер телефона" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Предложения на вынос" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Не предлагает блюда на вынос" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Только на вынос" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Открытый доступ в Интернет" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Отсутствие доступа в Интернет" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Общественный Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Проводной доступ в Интернет" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Компьютеры доступные для использования" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Доступна помощь в Интернете" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Туалеты отсутствуют" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Туалеты в наличии" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Доступность для инвалидных колясок" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ограниченная доступность для инвалидных колясок" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Не доступен для инвалидных колясок" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Предназначен для инвалидов-колясочников" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s ниже уровня моря" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "На уровне моря" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Религия:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Место не найдено в OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Координаты в URL не действительны" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL не поддерживается" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Из %s в %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Загрузка областей карты для печати" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Печать можно прервать, если она выполняется слишком долго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прервать печать" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Добавить через местоположение" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Удалить через местоположение" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обратный маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Добавьте %s к %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Не удалось открыть URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Открыть с помощью %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "не удалось загрузить файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Расчётное время: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруты, предоставленные %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Отправление в %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Отправление" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешком %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибытие в %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Прибытие" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показывать информацию для пешего маршрута" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Скрывать информацию для пешего маршрута" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Загрузить предыдущие варианты" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Загрузить следующие варианты" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Не найдено более ранних вариантов." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Не найдено более поздних вариантов." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Для этого маршрута не найдено расписаний." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Для этого маршрута не найдено ни одного поставщика услуг." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минута" +msgstr[1] "%s минуты" +msgstr[2] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s час" +msgstr[1] "%s часа" +msgstr[2] "%s часов" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s час" +msgstr[1] "%s:%s часа" +msgstr[2] "%s:%s часов" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Круглосуточно" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "От восхода до заката" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Каждый день" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Государственные праздники" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Школьные каникулы" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +# нужно проверить можно ли переводить как "закрыто", так как странно почему так, а не "closed" +#: src/translations.js:233 +msgid "not open" +msgstr "не открыто" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Неизвестная" + +# Точность: Максимальная +# точная не подходит, т. к. получается "точность: точная" +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Максимальная" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч %s мин" +msgstr[1] "%s ч %s мин" +msgstr[2] "%s ч %s мин" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин" +msgstr[1] "%s миль" +msgstr[2] "%s миль" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s миль" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s футов" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Этот модуль не поддерживает последние поступления" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Продолжайте %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Продолжить" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверните налево на %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Поверните налево" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверните немного налево на %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Повернитесь немного влево" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверните резко налево на %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Повернитесь резко налево" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверните направо на %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Поверните направо" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверните немного направо на %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Поверните немного направо" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Поверните резко направо на %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Повернитесь резко направо" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "На кольцевой развязке сверните на съезд %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "На кольцевой развязке сверните на %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Сверните на кольцевую развязку" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Поднимитесь на лифте и выйдите на %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Поднимитесь на лифте" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Выполните левый разворот на %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Выполните левый разворот" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Выполните правый разворот на %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Разворот направо" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Вы также можете искать определённые места, например «Паб, Невский " +#~ "проспект» или «Гостиницы около Александерплац, Берлин»." + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Кто может видеть публикацию в Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Последняя использованная настройка. Возможные значения: EVERYONE (все), " +#~ "FRIEND_OF_FRIENDS (друзья друзей), ALL_FRIENDS (друзья) и SELF (только я)." + +#~ msgid "Everyone" +#~ msgstr "Все" + +#~ msgid "Friends of friends" +#~ msgstr "Друзья друзей" + +#~ msgid "Just friends" +#~ msgstr "Только друзья" + +#~ msgid "Just me" +#~ msgstr "Только я" + +#~ msgid "Open with another application" +#~ msgstr "Открыть в другом приложении" + +#~ msgid "Check in here" +#~ msgstr "Отметиться здесь" + +#~ msgid "Don’t have an account?" +#~ msgstr "Нет учётной записи?" + +#~ msgid "Show more information" +#~ msgstr "Показать подробную информацию" + +#~ msgid "Press enter to search" +#~ msgstr "Нажмите Enter для поиска" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Поиск маршрута с помощью OpenTripPlanner" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Не удалось найти место, чтобы поделиться в Facebook. Выберите одно из " +#~ "списка." + +#~ msgid "Add destination" +#~ msgstr "Добавить пункт назначения" + +#~ msgid "Population:" +#~ msgstr "Население:" + +#~ msgid "Altitude:" +#~ msgstr "Высота:" + +#~ msgid "Opening hours:" +#~ msgstr "Часы работы:" + +#~ msgid "Internet access:" +#~ msgstr "Доступ к Интернету:" + +#~ msgid "Toilets:" +#~ msgstr "Туалеты:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Доступ для инвалидных колясок:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "есть" + +#~ msgid "limited" +#~ msgstr "ограниченный" + +#~ msgid "no" +#~ msgstr "нет" + +#~ msgid "designated" +#~ msgstr "специализированный" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "проводной" + +#~ msgid "terminal" +#~ msgstr "терминал" + +#~ msgid "service" +#~ msgstr "служебный" + +#~ msgid "%f h" +#~ msgstr "%f ч" + +#~ msgid "%f min" +#~ msgstr "%f мин" + +#~ msgid "%f s" +#~ msgstr "%f сек" + +#~ msgid "Quit" +#~ msgstr "Завершить" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Открыть слой фигур…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Загрузить слой карты" + +#~ msgid "Open Layer" +#~ msgstr "Открыть слой" + +#~ msgid "%f km" +#~ msgstr "%f км" + +#~ msgid "%f m" +#~ msgstr "%f м" + +#~ msgid "%f mi" +#~ msgstr "%f миль" + +#~ msgid "%f ft" +#~ msgstr "%f футов" + +#~ msgid "Position not found" +#~ msgstr "Местоположение не найдено" + +#~ msgid "Country code: %s" +#~ msgstr "Код страны: %s" + +#~ msgid "Population: %s" +#~ msgstr "Население: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Доступ для инвалидных колясок: %s" + +#~| msgid "Failed to parse Geo URI" +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Не удалось разобрать файл GeoJSON" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 00000000..f02f427c --- /dev/null +++ b/po/sk.po @@ -0,0 +1,2195 @@ +# Slovak translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Dušan Kazik , 2013-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-10-05 09:27+0200\n" +"Last-Translator: Dušan Kazik \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0\n" +"X-Generator: Gtranslator 40.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Mapy prostredia GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Vyhľadáva miesta po celom svete" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Aplikácia Mapy vám poskytuje rýchly prístup k mapám celého sveta. Umožňuje " +"vám rýchlo nájsť miesto, ktoré hľadáte zadaním vyhľadávanej obce alebo " +"ulice, prípadne zistiť polohu, kde sa máte stretnúť s priateľom." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Aplikácia Mapy používa databázu projektu OpenStreetMap, na ktorej " +"spolupracujú stovky tisícov ľudí z celého sveta." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +# desktop entry name +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Mapy" + +# desktop entry comment +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Jednoduchá aplikácia na prezeranie máp" + +# desktop enty keywords +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Mapy;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Umožní zobrazenie vášho umiestnenia na mape." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "naposledy zobrazené umiestnenie" + +# summary +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Súradnice naposledy zobrazeného umiestnenia." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "priblíženie" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Úroveň priblíženia" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Typ mapy" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typ mapy, ktorý sa má zobraziť (pohľad ulíc, letecký pohľad, atď.)" + +# summary +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Veľkosť okna" + +# description +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Veľkosť okna (šírka a výška)" + +# summary +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pozícia okna" + +# description +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pozícia okna (X a Y)." + +# summary +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Maximalizované okno" + +# description +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Maximalizovaný stav okna" + +# summary +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximálny počet výsledkov hľadania" + +# description +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximálny počet výsledkov hľadania z vyhľadávača geokódov." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Počet nedávnych miest na uloženie" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Počet nedávno navštívených miest, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Počet nedávnych trás na uloženie" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Počet nedávno navštívených trás, ktoré sa majú uložiť." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavenie súkromia pre oznámenie polohy v službe Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Naposledy použité nastavenie súkromia pre oznámenie polohy v službe " +"Foursquare. Možné hodnoty sú: public(verejné), followers(nasledovatelia) " +"alebo private(súkromné)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Facebook priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Vysielanie oznámenia polohy zo služby Foursquare v sieti Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikuje, či sa má vysielať oznámenie polohy zo služby Foursquare ako " +"príspevok v účte siete Twitter priradenom k účtu Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Používateľské meno alebo e-mailová adresa projektu OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikuje, či sa používateľ prihlásil na úpravu údajov projektu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Naposledy použitý typ dopravy pre plánovanie trasy" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nočný režim" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Či je aplikácia v nočnom režime." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Použiť hybridné dlaždice leteckého pohľadu" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Či majú použiť dlaždice s leteckým pohľadom hybridný štýl (s menovkami)" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Viditeľnosť" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Uverejniť na Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Uverejniť na Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Zrušiť" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Oznámiť _polohu" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Verejné" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Nasledovatelia" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Súkromné" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Trasa odtiaľto" + +# tooltip +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Pridať prechodný cieľ" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Trasa sem" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Čo sa nachádza tu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Skopírovať umiestnenie" + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Pridať do projektu OpenStreetMap" + +# dialog title +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Export zobrazenia" + +# button label +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportovať" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Zahrnúť trasy a značky" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Prejde na aktuálne umiestnenie" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Vyberie typ mapy" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Oddiali" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Priblíži" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Vytlačí trasu" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Prepne obľúbené" + +# DK:tooltip +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Prepne plánovač trasy" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Všeobecné" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Zobrazenie klávesových skratiek" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Vyhľadanie" + +# DK:tooltip +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Prepnutie plánovača trasy" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Tlač trasy" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Ukončenie" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Otvorenie hlavnej ponuky" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Zobrazenie mapy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Priblíženie" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddialenie" + +# tooltip +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Prepnutie obľúbených" + +# DK:tooltip +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Prejdenie na aktuálne umiestnenie" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prepnutie na pohľad ulíc" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prepnutie na letecký pohľad" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Zobraziť menovky" + +# dialo title +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Otvoriť vrstvu s tvarmi…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Zapnite lokalizačné služby, aby mohlo byť nájdené vaše umiestnenie" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Zrušiť" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavenia umiestnenia" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočný režim" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastaviť účet projektu OpenStreetMap" + +# menu item +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportovať ako obrázok" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové skratky" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O aplikácii Mapy" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Otvoriť hlavnú ponuku" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Aplikácia Mapy je bez pripojenia!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Aby mohla aplikácia Mapy pracovať správne, vyžaduje sa aktívne internetové " +"pripojenie, ale žiadne nie je dostupné." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Skontrolujte vaše nastavenia pripojenia a sprostredkovateľa proxy." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Účet projektu OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prihláste sa na úpravu máp" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Pomôžte zlepšiť mapu pomocou\n" +"účtu projektu OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Email" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Heslo" + +# button label +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Prihlásiť sa" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prihlásiť sa" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Prepáčte, ale toto nefungovalo. Prosím, skúste to znovu, alebo navštívte " +"webovú adresu\n" +"OpenStreetMap na obnovenie vášho hesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overovací kód sa nezhoduje. Prosím, skúste to znovu." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Zadajte overovací kód zobrazený vyššie" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overiť" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prihlásený" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Váš účet projektu OpenStreetMap je aktívny." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odhlásiť sa" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Číslo domu" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Smerovacie číslo" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Obec" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Nič" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Pridanie poľa" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Komentár" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Zmeny mapy budú viditeľné na všetkých mapách, ktoré\n" +"využívajú údaje z projektu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedávno použité" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Ďalej" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Nenašli sa žiadne výsledky" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Vyskytla sa chyba" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potiahnutím zmeníte poradie trasy" + +# dialog title +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Otvorenie umiestnenia" + +# gtkbutton +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopírovať" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Odoslať do…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Oznámiť polohu…" + +# dialo title +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Otvorenie vrstvy s tvarmi" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Otvoriť" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Prepne viditeľné" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Trasa poskytovaná službou GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Itinerár trasy verejnej dopravy je poskytovaný službami tretích strán\n" +"Projekt GNOME nemôže zaručiť správnosť zobrazeného itineráru a plánu.\n" +"Berte na vedomie, že niektorí poskytovatelia nemusia zahŕňať všetky spôsoby " +"prepravy,\n" +"napr. národný poskytovateľ nemusí zahrnúť letecké linky a miestnemu " +"poskytovateľovi\n" +"môžu chýbať regionálne vlaky.\n" +"Zobrazené názvy a značky sú považované za registrované obchodné známky, ak " +"je to nevyhnutné." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Zobraziť viac výsledkov" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skryje prechodné zastávky a informácie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Zobrazí prechodné zastávky a informácie" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odchod teraz" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odchod o" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Príchod o" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Zobraziť" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Autobusy" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Električky" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaky" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metro" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekty" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Lietadlá" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Sprístupní umiestnenie" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Pridá do novej trasy" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Pokyny" + +# tooltip +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označí ako obľúbené" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Úprava v projekte OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Priblížením pridajte umiestnenie!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Priblížiť" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Zlyhalo nájdenie štruktúry dlaždíc v adresári" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Zlyhala analýza dokumentu XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Chýbajú potrebné atribúty" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Nepodarilo sa nájsť prvok služby OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Cesta k štruktúre adresárov miestnych dlaždíc" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Veľkosť dlaždice pre adresár miestnych dlaždíc" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Zobrazí verziu programu" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorovať dostupnosť siete" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[SÚBOR…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Výber účtu" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Načítavanie" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Výber miesta" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Aplikácia Mapy nemôže nájsť miesto na oznámenie v službe Foursquare. Prosím, " +"vyberte nejaké zo zoznamu." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Oznámiť polohu %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napíšte voliteľnú správu k oznámeniu polohy %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Nedá sa nájsť miesto „%s“ v sociálnej službe" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "V tejto lokalite sa nedá nájsť vhodné miesto na oznámenie" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Platnosť poverení vypršala. Prosím, otvorte Účty služieb na prihlásenie a " +"povolenie tohto účtu" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu sa nič nenašlo!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Umiestnenie bolo pridané do mapy. Berte na vedomie, že jeho zobrazenie na " +"mape a vo výsledkoch vyhľadávania môže trvať nejakú dobu." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Mapy na mieste %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Systém súborov je iba na čítanie" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Do tohto umiestnenia nemáte oprávnenia na zápis" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Adresár neexistuje" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nie je určený názov súboru" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Nie je možné exportovať zobrazenie" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktuálne umiestnenie" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neplatná súradnica" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "chyba analýzy" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "neznáma geometria" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Požiadavka na trasu zlyhala." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Nenašla sa žiadna trasa." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Začiatok!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Všetky súbory vrstiev" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Zlyhalo pripojenie k lokalizačnej službe" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Dušan Kazik " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Aplikácia na prezeranie máp pre GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Autorské práva © 2011 – 2021 Red Hat, Inc. a autori aplikácie Mapy " +"prostredia GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Údaje mapy zo služby %s a jej prispievateľov" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Dlaždice mapy poskytnuté zo služby %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Vyhľadávanie poskytnuté službou %s použitím %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Zlyhalo otvorenie vrstvy" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Chcete pokračovať?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Chystáte sa otvoriť súbory s celkovou veľkosťou %s MB. Načítanie môže trvať " +"dlhšiu dobu" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Typ súboru nie je podporovaný" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Zlyhalo otvorenie GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Nesprávne používateľské meno alebo heslo" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Úspech" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Nesprávna požiadavka" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt sa nenašiel" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Nastal konflikt. Niekto iný práve upravil objekt" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objekt bol odstránený" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Cesta alebo relácia odkazuje na neexistujúceho potomka" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Názov" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Oficiálny názov. Toto obvykle býva napísané na tabuliach." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adresa" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webová stránka" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Toto nie je platná URL. Uistite sa, že je zahrnutá predpona http:// alebo " +"https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Oficiálna webová stránka. Skúste použiť čo najjednoduchší tvar URL napr. " +"http://priklad.sk namiesto of http://priklad.sk/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefón" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefónne číslo. Použite medzinárodný formát, začínajúci so znakom +. Dbajte " +"na miestne zákony o ochrane súkromia, obzvlášť pri súkromných telefónnych " +"číslach." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "E-mail" + +#: src/osmEditDialog.js:160 +#| msgid "This is not a valid URL. Make sure to include http:// or https://." +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Toto nie je platná e-mailová adresa. Uistite sa, že nie je zahrnutá predpona " +"protokolu mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontaktná e-mailová adresa pre otázky. Pridávajte iba také emailové adresy, " +"ktoré sú určené na verejné použitie." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Použitý formát by mal zahŕňať kód jazyka a názov článku ako „sk:Názov " +"článku“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Otváracia doba" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Pre pomoc k formátu si prezrite odkaz v menovke." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Obyvateľstvo" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Nadmorská výška" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Stúpanie (výška nad morskou hladinou) bodu v metroch." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Bezbariérový prístup" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Áno" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nie" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Obmedzený" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Vyhradený" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Prístup na internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Drôtový" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminál" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Obsluha" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Jedlo so sebou" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Iba" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Náboženstvo" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizmus" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Baháizmus" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budhizmus" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizmus" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kresťanstvo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianizmus" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizmus" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizmus" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judaizmus" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Viacero náboženstiev" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganizmus" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizmus" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientológia" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizmus" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizmus" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizmus" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizmus" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Centralistický univerzalizmus" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vúdú" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidizmus" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizmus" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toalety" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Poznámka" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Informácie slúžiace ostatným mapovačom na informovanie o neobvyklých " +"informáciách o súčasti, účeli autora počas tvorby, alebo radách pre " +"neskoršie vylepšenia." + +# DK:https://bugzilla.gnome.org/show_bug.cgi?id=761995 +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Pridanie do projektu OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Výber typu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Hotovo" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Nepomenované miesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Zlyhala analýza URI geografickej polohy" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Súradnice" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Presnosť" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Presnosť: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefónne číslo" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ponúka jedlo so sebou" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Neponúka jedlo so sebou" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Ponúka iba jedlo so sebou" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Verejný prístup na internet" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Bez prístupu na internet" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Verejná Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Drôtový prístup na internet" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Dostupné počítače na použitie" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Dostupná pomoc s internetom" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Nedostupné toalety" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Dostupné toalety" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Bezbariérový prístup" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Obmedzený bezbariérový prístup" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Bez bezbariérového prístupu" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Navrhnuté pre vozíčkarov" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod morskou hladinou" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Nad morskou hladinou" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Náboženstvo:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Miesto sa nenašlo v projekte OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Súradnice v URL nie sú platné" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL nie je podporovaná" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s po %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Načítavajú sa dlaždice mapy na vytlačenie" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tlač môžete prerušiť, ak toto trvá príliš dlho" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prerušiť tlač" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Pridá cez umiestnenie" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstráni cez umiestnenie" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obráti trasu" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Pridať obec %s do aplikácie %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Zlyhalo otvorenie URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Otvoriť pomocou %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "zlyhalo načítanie súboru" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Odhadovaný čas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Itinerár poskytnutý zo služby %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začiatok z adresy %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začiatok" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Chôdza %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Príchod na adresu %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Príchod" + +# tooltip +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Zobrazí pokyny pre chôdzu" + +# tooltip +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skryje pokyny pre chôdzu" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Načítať skoršie alternatívy" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Načítať neskoršie alternatívy" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Nenašli sa žiadne skoršie alternatívy." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Nenašli sa žiadne neskoršie alternatívy." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Pre túto trasu sa nenašli žiadne údaje cestovného poriadku." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Pre túto trasu sa nenašiel žiadny poskytovateľ." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hodín" +msgstr[1] "%s hodina" +msgstr[2] "%s hodiny" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s hodín" +msgstr[1] "%s:%s hodina" +msgstr[2] "%s:%s hodiny" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Nonstop" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Od východu slnka po západ slnka" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Každý deň" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Štátne sviatky" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Školské prázdniny" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "zatvorené" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Neznáma" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Presná" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s minút" +msgstr[1] "%s minúta" +msgstr[2] "%s minúty" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Tento zásuvný modul nepodporuje posledný príchod" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Pokračujte na %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Pokračujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Odbočte doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Odbočte doľava" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Odbočte mierne doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Odbočte mierne doľava" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Odbočte ostro doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Odbočte ostro doľava" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Odbočte doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Odbočte doprava" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Odbočte mierne doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Odbočte mierne doprava" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Odbočte ostro doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Odbočte ostro doprava" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "Na kruhovom objazde, použite %s. výjazd" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "Na kruhovom objazde, použite výjazd na %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Vojdite do kruhového objazdu" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Použite výťah a vstúpte na %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Použite výťah" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Otočte sa doľava na %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Otočte sa doľava" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Otočte sa doprava na %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Otočte sa doprava" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Môžete vyhľadať špecifické typy umiestnení, napríklad „Hostince neďaleko " +#~ "Hlavnej ulice, Boston“ alebo „Ubytovňa neďaleko Alexanderplatzu, Berlin“." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Nastavenie súkromia pre oznámenie polohy v sieti Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Naposledy použité nastavenie súkromia pre oznámenie polohy v sieti " +#~ "Facebook. Možné hodnoty sú: EVERYONE(ktokoľvek), " +#~ "FRIENDS_OF_FRIENDS(priatelia mojich priateľov), ALL_FRIENDS(iba moji " +#~ "priatelia) or SELF(iba ja)." + +#~ msgid "Everyone" +#~ msgstr "Ktokoľvek" + +#~ msgid "Friends of friends" +#~ msgstr "Priatelia mojich priateľov" + +#~ msgid "Just friends" +#~ msgstr "Iba moji priatelia" + +#~ msgid "Just me" +#~ msgstr "Iba ja" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Aplikácia Mapy nemôže nájsť miesto na oznámenie v sieti Facebook. Prosím, " +#~ "vyberte nejaké zo zoznamu." + +# tooltip +#~ msgid "Check in here" +#~ msgstr "Oznámi túto polohu" + +# tooltip +#~ msgid "Show more information" +#~ msgstr "Zobrazí viac informácií" + +#~ msgid "Population:" +#~ msgstr "Obyvateľstvo:" + +#~ msgid "Altitude:" +#~ msgstr "Nadmorská výška:" + +#~ msgid "Opening hours:" +#~ msgstr "Otváracia doba:" + +#~ msgid "Internet access:" +#~ msgstr "Prístup na internet:" + +#~ msgid "Toilets:" +#~ msgstr "Toalety:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Bezbariérový prístup:" + +#~ msgid "Phone:" +#~ msgstr "Telefón:" + +#~ msgid "yes" +#~ msgstr "áno" + +#~ msgid "limited" +#~ msgstr "obmedzený" + +#~ msgid "no" +#~ msgstr "nie" + +#~ msgid "designated" +#~ msgstr "vyhradený" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "URL projektu OpenStreetMap nie je platná" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "drôtový" + +#~ msgid "terminal" +#~ msgstr "terminál" + +#~ msgid "service" +#~ msgstr "obsluha" + +# tooltip +#~ msgid "Find a Route" +#~ msgstr "Nájsť trasu" + +#~ msgid "Don’t have an account?" +#~ msgstr "Nemáte účet?" + +#~ msgid "Add destination" +#~ msgstr "Pridať cieľ" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Trasa poskytovaná službou OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Ukončiť" + +# tooltip +#~ msgid "Open with another application" +#~ msgstr "Otvorí pomocou inej aplikácie" + +#~ msgid "Press enter to search" +#~ msgstr "Stlačte enter na vyhľadanie" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Otvoriť vrstvu s tvarmi…" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Load Map Layer" +#~ msgstr "Načítať mapovú vrstvu" + +#~ msgid "Open Layer" +#~ msgstr "Otvorenie vrstvy" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Position not found" +#~ msgstr "Pozícia sa nenašla" + +#~ msgid "Wlan" +#~ msgstr "WiFi" + +#~ msgid "wlan" +#~ msgstr "wifi" + +#~ msgid "Country code: %s" +#~ msgstr "Kód krajiny: %s" + +#~ msgid "Population: %s" +#~ msgstr "Obyvateľstvo: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Bezbariérový prístup: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Zlyhala analýza súboru GeoJSON" + +#~ msgid "Copy Geo URI" +#~ msgstr "Skopírovať URI geografickej polohy" + +#~ msgid "_Share" +#~ msgstr "_Sprístupniť" + +# summary +#~ msgid "Last known location and accuracy" +#~ msgstr "Posledná známa poloha a presnosť" + +# description +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Posledné známa poloha (zemepisná šírka a zemepisná dĺžka v stupňoch) a " +#~ "presnosť (v metroch)." + +# description +#~ msgid "Description of last known location of user." +#~ msgstr "Popis poslednej známej polohy používateľa." + +# summary +#~ msgid "User set last known location" +#~ msgstr "Používateľ nastavil poslednú známu polohu" + +# description +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Určuje, či bola posledná známa poloha ručne nastavená používateľom." + +#~ msgid "I’m here!" +#~ msgstr "Tu sa nachádzam!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 00000000..78d59631 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,2171 @@ +# Slovenian translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Martin Srebotnjak , 2013–2015. +# Matej Urbančič , 2015–2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-29 20:39+0000\n" +"PO-Revision-Date: 2021-08-30 21:04+0200\n" +"Last-Translator: Matej Urbančič \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" +"%100==4 ? 3 : 0);\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Zemljevidi GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Iskanje mesta po svetu" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Program omogoča hiter dostop do zemljevidov sveta. Omogoča hitro iskanje " +"mest in ulic, različnih javnih prostorov, ki jih je nujno treba obiskati, " +"ali mesta zmenka s prijatelji." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Program uporablja podatkovno zbirko OpenStreetMap, ki jo ustvarja več sto " +"tisoč posameznikov na vseh koncih sveta." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Projekt GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Zemljevidi" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Enostaven program za pregled zemljevidov" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Zemljevidi;karta;karte;maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Dovoli prikazovanje trenutnega mesta na zemljevidu." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "zadnje gledano mesto" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinate nazadnje gledanega mesta." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "približanje" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Raven približanja" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Vrsta zemljevida" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Vrsta zemljevida za prikaz (ulični, zračni ...)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Velikost okna" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Velikost okna (širina in višina)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Položaj okna" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Položaj okna (osi x in y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Povečano okno" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Stanje razpetosti okna" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Največje število zadetkov iskanja" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Največje število zadetkov iskanja pri uporabi iskalnika krajev." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Število nedavnih mest za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Število nedavno obiskanih mest za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Število poti za shranjevanje" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Število nedavno obiskanih poti za shranjevanje." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Nastavitve zasebnosti objav Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Nazadnje uporabljena nastavitev zasebnosti objav na Foursquare. Dovoljene " +"vrednosti so: javno, spremljevalci, zasebno." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Povezovanje objav Foursquare na Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Facebook." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Povezovanje objav Foursquare na Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Določa, ali naj se objave na Foresquare pokažejo tudi kot objave znotraj " +"povezanega računa Twitter." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Elektronski naslov oziroma uporabniško ime OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Kaže, ali je uporabnik prijavljen za urejanje podatkov OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Nazadnje uporabljena vrsta transporta za vodenje" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nočni način" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Ali naj bo vmesnik programa zagnan v nočnem načinu" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Uporabi hibridne zračne sličice" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Ali naj bo pri prikazu zračnega pogleda uporabljen hibridni slog (z " +"oznakami)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Vidnost" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Objavi na Facebooku" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Objavi na Twitterju" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Prekliči" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Vstopi" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Javno" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Spremljevalci" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Zasebno" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Pot od tu" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Dodaj vmesni cilj" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Pot do tu" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Kaj je to?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiraj mesto" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Objavi na OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Pogled izvoza" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Izvozi" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Vključi pot in oznake" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Trenutna vrsta zemljevida" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Oddalji" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Približaj" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Natisni pot" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Priljubljene poti" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Načrtovanje poti" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Splošno" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Pokaže tipkovne bližnjice" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Omogoči iskanje" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Preklopi načrtovalnik poti" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Natisne pot" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Konča program" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Odpre glavni meni" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pokaže pogled zemljevida" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Približa pogled" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Oddalji pogled" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Preklopi merilo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Skoči na trenutno mesto" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Preklopi na ulični pogled" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Preklopi na pogled iz zraka" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Odpre plast oblike" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Prikaži oznake" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Odpri plast oblike …" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Priklop storitev določanja trenutnega mesta za uporabo v programu" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Prekliči" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Nastavitve mesta" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nočni način" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Nastavi račun OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Izvozi kot sliko" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "O programu" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Odpri glavni meni" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Zemljevid ni povezan v omrežje!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Program Zemljevidi zahtevajo za pravilno delovanje dejavno internetno " +"povezavo, ki pa trenutno ni na voljo." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Preverite povezavo in nastavitve posredniškega strežnika." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Račun OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Prijava za urejanje zemljevida" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Sodelujte pri izdelavi zemljevida\n" +"prek OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Elektronski naslov" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Geslo" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Vpis" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Prijava" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Povezovanje je spodletelo. Poskusite znova kasneje, ali pa \n" +"obiščite spletišče OpenStreetMap za ponastavitev gesla." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Overitvena koda ni skladna. Poskusite znova." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Vpišite overitveno kodo, prikazano zgoraj:" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Overi" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Prijavljeno" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Račun OpenStreetMap je dejaven." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Odjavi" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Ulica" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Hišna številka" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Poštna koda" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Mesto" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Vrsta" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Brez" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Dodaj polje" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Opomba" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Spremembe bodo vidne na vseh zemljevidih,\n" +" ki uporabljajo podatke OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Nedavno uporabljeno" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Naslednji" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Ni najdenih zadetkov" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Prišlo je do napake!" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Potegnite točko za spreminjanje poti" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Odpri mesto" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiraj" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Pošlji …" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Prijava …" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Odpri plast oblike" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Odpri" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Preklopi vidno" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Iskanje poti s podporo GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Načrt potovanja z javnim prevozom zagotavljajo različne storitve.\n" +"Teh podatkov ni mogoče preverjati in zagotavljati pravilnosti voznih\n" +"poti in časov. Nekateri ponudniki morda ne vključujejo vseh načinov\n" +"potovanja, na primer državni ponudniki morda ne vključujejo letalskih\n" +"povezav in krajevni morda nimajo podatkov o vlakih.\n" +"Prikazana imena in blagovne znamke je treba obravnavati kot registrirane " +"znamke." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Pokaži več zadetkov" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Skrij vmesne postanke in podrobnosti" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Pokaži vmesne postaje in podrobnosti mest" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Odhod takoj" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Odhod do" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Prihod do" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Pokaži" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Avtobusi" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaji" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Vlaki" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Podzemna železnica" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Trajekti" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Letala" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Objavi mesto" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Dodaj novo pot" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Načrt poti" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Označi kot priljubljeno" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Približaj za dodajanje mesta!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Približaj" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Določanje pravilne zgradbe v mapi je spodletelo." + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Razčlenjevanje dokumenta XML je spodletelo" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Manjkajo zahtevani atributi" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Ni mogoče najti predmeta OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Pot do krajevne mape s sličicami" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Velikost sličic za krajevno mapo s sličicami" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Pokaži različico programa" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Prezri razpoložljivost omrežja" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DATOTEKA …|NASLOV URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Izbor računa" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Nalaganje" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Izbor mesta" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ni mogoče najti mesta za objavo na Foursquare. Izberite ustrezno mesto iz " +"seznama." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se v %s." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Vpišite sporočilo za objavo v %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ni mogoče najti »%s« med razpoložljivimi storitvami" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ni mogoče najti ustreznega mesta za objavo" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Poverila so potekla. Ponovna vzpostavitev računa je mogoče med nastavitvami." + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Tu ni ničesar!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Na zemljevid je dodano mesto. Upoštevajte, da lahko traja, preden se pokaže " +"na zemljevidu in med rezultati iskanja." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "zemljevid na %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Datotečni sistem je le za branje" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Ni ustreznih dovoljenj za shranjevanje na to mesto" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Mapa ne obstaja" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Ime datoteke ni določeno" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ni mogoče izvoziti pogleda" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Trenutno mesto" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neveljavna koordinata" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "napaka med razčlenjevanjem" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "neznana geometrija" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Zahteva za pridobivanje poti je spodletela." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Ni najdene poti." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Začetna točka!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Vse datoteke plasti" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Napaka med povezovanjem s storitvijo določevanja točke GPS" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Matej Urbančič \n" +"Martin Srebotnjak" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Program za prikaz zemljevidov za GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "" +"Avtorske pravice © 2011–2021 Red Hat, Inc. in avtorji programa Zemljevidi " +"GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podatke zemljevida objavljajo %s in drugi sodelujoči" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Podatke zemljevida objavlja %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Iskalnik omogoča %s z uporabo %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Odpiranje plasti je spodletelo" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Ali želite nadaljevati?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Odpreti nameravate datoteke s skupno velikostjo %s MB. Opravilo je lahko " +"dolgotrajno." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Vrsta datoteke ni podprta" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Odpiranje naslova GeoURI je spodletelo." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Napačno uporabniško ime ali geslo" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Uspešno zaključeno" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Slaba zahteva" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Predmeta ni mogoče najti" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Spor urejanja; ravnokar je nekdo drug spremenil isti predmet." + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Predmet je izbrisan" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Pot oziroma zveza je sklicana na neobstoječ podrejen predmet" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Ime" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Uradno ime ali naziv se običajno pojavlja na tablah." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Naslov" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Spletišče" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Naslov ni veljaven naslov URL. Preverite, ali je na začetku naslova vpisan " +"tudi http:// oziroma https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Uradna spletna stran mora biti zapisana kot osnovni naslov URL, na primer " +"http://www.primer.si in ne http://www.primer.si/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonska številka mora biti zapisana v mednarodnem zapisu (začne se s " +"+ ...) Upoštevajte tudi krajevna določila zasebnosti, še posebej za zasebne " +"telefonske številke." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Elektronski naslov" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Naslov ni veljaven naslov elektronske pošte. Preverite, ali je na začetku " +"naslova vpisana tudi predpona mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Elektronski naslov za poizvedbe, ki naj bo le naslov, namenjeni javni rabi." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedija" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Uporabljen zapis mora vključevati kodo jezika in naslov prispevka, na primer " +"»sl:Naslov prispevka«." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Odpiralni čas" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Pomoč o zapisu je na voljo na spletni povezavi." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Prebivalci" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Nadmorska višina" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska višina točke v metrih" + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Invalidom prijazno" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Da" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ne" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Omejeno" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Označeno" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetni dostop" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Žično" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Storitev" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Ponuja prevzem" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Ponuja le prevzem" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religija" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizem" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahaizem" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizem" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizem" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Krščanstvo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucionizem" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizem" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainizem" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judovstvo" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Izberi več" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Poganstvo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianizem" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologija" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Šintoizem" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhizem" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualizem" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoizem" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Univerzalni unitarizem" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Jazidizem" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizem" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Stranišča" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Opomba" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podrobnosti, s katerimi lahko obvestimo druge uporabnike o neobičajnih " +"spremembah predmetov, pomembnih podatkih ali namenih za nadaljne izboljšave." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodajanje točke na OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Izbor vrste" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Končano" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Neimenovano mesto" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Razčlenjevanje naslova URI Geo je spodletelo" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinate" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Natančnost" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Natančnost: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonska številka" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Ponuja prevzem hrane in pijače" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Ne ponuja prevzema hrane in pijače" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Ponuja le prevzem hrane in pijače" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Javni dostop do interneta" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ni dostopa do interneta" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Javno omrežje Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Žični dostop do interneta" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Možnost uporabe računalnika" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Možnost dostopa do Interneta" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Uporaba stranišč ni mogoča" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Možnost uporabe stranišč" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Invalidom na vozičkih prijazno" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Omejen dostop za invalidske vozičke" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Ni dostopa za invalidske vozička" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Prijazno uporabnikom invalidskih vozičkov" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s pod morsko gladino" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Na ravni morske gladine" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religija:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Mesta na OpenStreetMap ni mogoče najti" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinate v naslovu URL niso veljavne" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Podan naslov URL ni podprt" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Poteka nalaganje zemljevida za tiskanje" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Tiskanje je mogoče prekiniti, če je postopek predolg" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekliči tiskanje" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Dodaj prek mesta" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Odstrani prek mesta" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Obrni pot" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Dodaj %s v %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Odpiranje naslova URI je spodletelo" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Odpri s programom %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "nalaganje datoteke je spodletelo" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Predviden čas: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Načrt potovanja objavlja %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Začnite na %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Začetna točka" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Hodite %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Prihod k %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Prihod" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Pokaži navodila za hojo" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Skrij navodila za hojo" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Naloži predhodne možnosti" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Naloži kasnejše možnosti" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Ni predhodnih možnosti." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Ni kasnejših možnosti." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b %e" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Za to pot podatki o času niso na voljo." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Za to pot podatki o ponudnikih niso na voljo." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuta" +msgstr[2] "%s minuti" +msgstr[3] "%s minute" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s ur" +msgstr[1] "%s ura" +msgstr[2] "%s uri" +msgstr[3] "%s ure" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s ur" +msgstr[1] "%s:%s ura" +msgstr[2] "%s:%s uri" +msgstr[3] "%s:%s ure" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "neprestano" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "od zore do mraka" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "vsak dan" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "javni prazniki" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "šolske počitnice" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "ni odprto" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Neznan položaj" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Natančen položaj" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" +msgstr[2] "%s h %s min" +msgstr[3] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" +msgstr[2] "%s min" +msgstr[3] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" +msgstr[2] "%s s" +msgstr[3] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Ta vstavek ne podpira najnovejšega prihod" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Nadaljujte po: %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Nadaljujte" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Zavijte levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Zavijte levo" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Držite se leve na: %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Držite se leve" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Zavijte ostro levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Zavijte ostro levo" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Zavijte desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Zavijte desno" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Držite se desne na: %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Držite se desne" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Zavijte ostro desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Zavijte ostro desno" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "V krožišču zapeljite na izvoz %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "V krožišču zapeljite na izvoz za: %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Zapeljite v krožišče" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Vstopite v dvigalo in izstopite v %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Vstopite v dvigalo" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Naredite polkrožni zavoj v levo na: %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Naredite polkrožni zavoj v levo" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Naredite polkrožni zavoj v desno na: %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Naredite polkrožni zavoj v desno" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Iskati je mogoče tudi posebna mesta, kot so »bari v središču Kranja« ali " +#~ "»Hotel blizu avtobusne postaje v Mariboru«." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Nastavitve zasebnosti objav na Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Nazadnje uporabljena nastavitev zasebnosti objav na Facebook. Dovoljene " +#~ "vrednosti so: vsi, prijatelji prijateljev, prijatelji ali zame." + +#~ msgid "Everyone" +#~ msgstr "Vsi" + +#~ msgid "Friends of friends" +#~ msgstr "Prijatelji prijateljev" + +#~ msgid "Just friends" +#~ msgstr "Le prijatelji" + +#~ msgid "Just me" +#~ msgstr "Le jaz" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Ni mogoče najti mesta za objavo na Facebook. Izberite ustrezno mesto iz " +#~ "seznama." + +#~ msgid "Find a Route" +#~ msgstr "Najdi pot" + +#~ msgid "Check in here" +#~ msgstr "Prijavi se tu." + +#~ msgid "Show more information" +#~ msgstr "Pokaži več podrobnosti" + +#~ msgid "Population:" +#~ msgstr "Populacija:" + +#~ msgid "Altitude:" +#~ msgstr "Nadmorska višina:" + +#~ msgid "Opening hours:" +#~ msgstr "Odpiralne ure:" + +#~ msgid "Internet access:" +#~ msgstr "Internetni dostop:" + +#~ msgid "Toilets:" +#~ msgstr "Stranišča:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Invalidom prijazno:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "da" + +#~ msgid "limited" +#~ msgstr "omejeno" + +#~ msgid "no" +#~ msgstr "ne" + +#~ msgid "designated" +#~ msgstr "podpora invalidom" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Podan naslov URL OpenStreetMap ni veljaven" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "žično" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "storitev" + +#~ msgid "Don’t have an account?" +#~ msgstr "Ali še nimate svojega računa?" + +#~ msgid "%f h" +#~ msgstr "%f h" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Iskanje poti s OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Dodaj cilj" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Odpri z drugim programom" + +#~ msgid "Press enter to search" +#~ msgstr "Pritisnite vnosno tipko za iskanje" + +#~ msgid "Quit" +#~ msgstr "Izhod" + +#~ msgid "OK" +#~ msgstr "V redu" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Odpri plast oblike…" + +#~ msgid "Load Map Layer" +#~ msgstr "Naloži plast zemljevida" + +#~ msgid "Open Layer" +#~ msgstr "Odpri plast" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "" +#~ "Maps need an active internet connection to function properly, but one " +#~ "can't be found." +#~ msgstr "" +#~ "Zemljevidi potrebujejo za pravilno delovanje dejavno internetno povezavo, " +#~ "ki pa ni na voljo." + +#~ msgid "Don't have an account?" +#~ msgstr "Še nimate računa za dostop?" + +#~ msgid "The verification code didn't match, please try again." +#~ msgstr "Neveljavna koda za pooblastitev. Poskusite znova." + +#~ msgid "Cannot find \"%s\" in the social service" +#~ msgstr "Ni mogoče najti \"%s\" med razpoložljivimi storitvami" + +#~ msgid "The directory does not exists" +#~ msgstr "Ciljna mapa ne obstaja" + +#~ msgid "Setup OpenStreetMap Account" +#~ msgstr "Nastavitev računa OpenStreetMap" + +#~ msgid "Position not found" +#~ msgstr "Položaja ni mogoče določiti" + +#~ msgid "Postal code: %s" +#~ msgstr "Poštna številka: %s" + +#~ msgid "Country code: %s" +#~ msgstr "Koda države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Populacija: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Dostop v vozičku: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Zadnje znano mesto in natančnost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Zadnje znano mesto (geografska širina in dolžina v stopinjah) in " +#~ "natančnost (v metrih)." + +#~ msgid "Description of last known location" +#~ msgstr "Opis zadnjega znanega mesta" + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis zadnjega znanega mesta uporabnika." + +#~ msgid "User set last known location" +#~ msgstr "Ročno nastavljeno zadnje mesto nahajanja" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Ali je bilo zadnje znano mesto nastavljeno ročno." + +#~ msgid "I’m here!" +#~ msgstr "Jaz sem tu!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid "Track user location." +#~ msgstr "Sledenje gibanja uporabnika." + +#~ msgid "Map Type" +#~ msgstr "Vrsta zemljevida" + +#~ msgid "Cycling" +#~ msgstr "Kolesarjenje" + +#~ msgid "Transit" +#~ msgstr "Javni promet" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 00000000..963fdae8 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,2142 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013–2021. +# Copyright © 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Мирослав Николић , 2013–2021. +# Борисав Живановић , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-09-26 07:58+0200\n" +"Last-Translator: Мирослав Николић \n" +"Language-Team: српски \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Гномове карте" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Нађите места широм света" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Гномове Карте вам дају брз приступ картама широм света. Омогућава вам да " +"брзо и лако пронађете место које тражите тражећи град или улицу, или да " +"одредите место за сусрет са пријатељима." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Овај програм користи заједничку базу података „OpenStreetMap“, коју стварају " +"стотине хиљада људи широм света." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "Гномов пројекат" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карте" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Једноставан програм за карте" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;карте;мапе;карта;мапа;karte;mape;karta;mapa;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозвољава да се ваша локација приказује на карти." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "последње погледано место" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координате последње погледаног места." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "увећање" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Ниво увећања" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Врста карте" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Врста карте за приказ (улица, авионски и сл.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Величина прозора" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Величина прозора (ширина и висина)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положај прозора" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положај прозора (положено и усправно)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Увећавање прозора" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стање увећања прозора" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Највећи број резултата претраге" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Највећи број резултата претраге за претрагу геокода." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Број скорашњих места за чување" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Број недавно посећених места за чување." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Број скорашњих путева које треба сачувати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Број скоро посећених путева које треба сачувати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Подешавање провере приватности Форсквера" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Последње подешавање провере приватности Форсквера. Могуће вредности су: " +"„public“ (јавно), „followers“ (пратиоци) или „private“ (приватно)." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Форскверова провера Фејсбуковог емитовања" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као објаву у налогу Фејсбука " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Форскверова провера Твитеровог емитовања" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Указује да ли Форсквер треба да емитује проверу као цвркут у налогу Твитера " +"придруженог са налогом Форсквера." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap корисничко име или е-адреса" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показује да ли је корисник пријављен да би могао да уређује OpenStreetMap " +"податке." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Последња врста превоза коришћена за проналажење пута" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Ноћни режим" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Да ли је програм у ноћном режиму." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Користи хибридне ваздушне плоче" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Да ли треба користити ваздушне плоче са хибридним стилом (са етикетама)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Видљивост" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Објави на Фејсбуку" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Објави на Твитеру" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Откажи" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Провери" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Јавно" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Пратиоци" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Приватно" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Пут одавде" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додај међу-одредиште" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Пут довде" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Шта је то овде?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Умножите место" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap налог" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Извези преглед" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "И_звези" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Укључи путеве и маркере" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Идите на текуће место" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Изаберите врсту карте" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Умањи" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Увећај" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Штампај пут" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Пребаците на омиљене" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Пребаците на планирање пута" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Опште" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Приказ пречица" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Претрага" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Покретање планирања пута" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Штампај пут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Излаз" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Отвара главни изборник" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Преглед карте" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Увећавање" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Умањивање" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Подешавање увећања" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Одлазак на тренутно место" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Пребаци на поглед са улице" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Пребаци на поглед из ваздуха" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Отвори слој облика" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Прикажи етикете" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Отвори слој облика…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Укључите услуге положаја да нађете ваш положај" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Откажи" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Подешавања положаја" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Ноћни режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Подеси OpenStreetMap налог" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Извези као слику" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "Пречице на _тастатури" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "О Картама" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Отвори главни изборник" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Програм је ван мреже!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Потребна је радна интернет веза да би програм исправно радио, али није " +"доступна." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Проверите вашу везу и подешавања посредника." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap налог" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Пријавите се да бисте мењали карте" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Побољшајте карту користећи\n" +"OpenStreetMap налог." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Е-адреса" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Лозинка" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Регистрација" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Пријави ме" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Нажалост, то није прорадило. Пробајте поново или посетите\n" +"OpenStreetMap да бисте опоравили вашу лозинку." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Потврдни код се не подудара, пробајте поново." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Унесите потврдни код приказан изнад" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Потврди" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Пријављен" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш OpenStreetMap налог је сада активан." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Одјави ме" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Улица" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Кућни број" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштански број" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Град" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Врста" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ништа" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додај поље" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Измене на карти ће бити видљиве на свим картама\n" +"које користе податке са OpenStreetMap пројекта." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно коришћено" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Следеће" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нема резултата" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Дошло је до грешке" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Превуци да би променио редослед пута" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Отвори место" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копирај" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Пошаљи у…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Провери…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Отвори слој облика" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Отвори" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Подеси видљивост" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Претрага руте Граф Хопером" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Маршруте јавног превоза омогућује услуга треће стране.\n" +"Гном не може јемчити за тачност приказаних маршрута и заказаних полазака.\n" +"Знајте да неки достављачи неће укључити све могуће режиме превоза,\n" +"нпр.: национални достављач података неће приказати све авио превознике а\n" +"локални достављач неће приказати регионалне возне линије.\n" +"Приказани називи и робне марке се требају сматрати регистрованим робним " +"маркама\n" +"где је то могуће." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Прикажите још резултата" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сакриј станице и податке на маршрути" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Прикажи станице и податке на маршрути" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Полази сада" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Полази у" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Долази у" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Прикажи" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Аутобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваји" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Возови" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Подземна" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Трајекти" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Авиони" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Подели место" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Додајте у нови пут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Правци" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Означите омиљеним" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Уреди на OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Увећај за додавање локације!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Увећај" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Неуспех при тражењу структуре плочица у фасцикли" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Нисам успео да обрадим ИксМЛ документ" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Недостају потребне особине" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Нисам могао да нађем ОСМ елемент" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Путања до локалне фасцикле са структуром плочица" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Величина плочица за локални директоријум плочица" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Прикажи издање програма" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Занемари доступност мреже" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Изаберите налог" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Учитавам" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Изаберите место" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Не могу да нађем место за проверу Форсквером. Изаберите једно са списка." + +# Мисли се на рецепцију, хотеле. +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Пријави се у „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишите изборну поруку за рецепцију „%s“." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Не могу да нађем „%s“ у друштвеним услугама" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Не могу да нађем одговарајуће место за пријаву на овом месту" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Уверења су истекла, отворите налоге на мрежи да се пријавите и укључите овај " +"налог" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ништа није нађено овде!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Локација је додата на карту. Знајте да ће требати мало времена пре него што " +"се појави на карти и у резултатима претраге." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта на %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Систем датотека је само за читање" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немате овлашћење да сачувате ту" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Директоријум не постоји" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Није наведено име датотеке" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Не могу да извезем преглед" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Тренутни положај" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неисправна координата" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "грешка у обрађивању" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "непозната геометрија" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Захтев пута није успео." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Нисам пронашао пут." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Крени!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Све датотеке слоја" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Нисам успео да се повежем на услугу положаја" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Мирослав Николић \n" +"Марко М. Костић \n" +"Борисав Живановић \n" +"\n" +"https://гном.срб — превод Гнома на српски језик" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Гномов програм за карте" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Ауторска права © 2011 – 2021 Red Hat, Inc. и творци Гномових Карти" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Подаци о картама са платформе %s и од доприносилаца" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Плочице за карту су преузете са %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Претрагу омогућава %s помоћу %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Нисам успео да отворим слој" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Да ли желите да наставите?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Отварате датотеке сса укупном величином од %s MB. Биће потребно неко време " +"за учитавање" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Врста датотеке није подржана" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Нисам успео да отворим Гео-УРИ" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Неисправно корисничко име или лозинка" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Успех" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Лош захтев" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Објекат није нађен" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Сукоб, неко други је управо изменио објекат" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Објекат је обрисан" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Пут или релација се односи на непостојеће дете" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Назив" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Званични назив. Обично назив који се налази на саобраћајним знаковима." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Веб страница" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ово није исправна адреса. Уверите се да сте укључили „http://“ или " +"„https://“." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Званична веб страница. Пробајте да унесете најосновнији облик адресе. На " +"пример: „http://primer.rs“ уместо „http://primer.rs/pocetna.html“." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Број телефона. Користите међународни формат где број почиње са плус знаком. " +"Обратите пажњу на локалне законе о заштити приватности, нарочито ако су у " +"питању приватни бројеви телефона." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +#| msgid "Email" +msgid "E-mail" +msgstr "Е-пошта" + +#: src/osmEditDialog.js:160 +#| msgid "This is not a valid URL. Make sure to include http:// or https://." +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ово није исправна адреса е-поште. Уверите се да нисте укључили префикс " +"„mailto:“ протокола." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Адреса е-поште контакта за истраживања. Додајте само адресе е-поште које су " +"намењене за јавну употребу." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Википедија" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Коришћени формат треба да садржи ознаку језика и наслов чланка. На пример: " +"„sr:Наслов чланка“." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Радно време" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Погледајте везу у етикети за више података о формату." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Становништво" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Висина" + +# Ми не морамо да пишемо "(height above sea lever)" јер сама реч „надморска висина“ описује да је у питању висина изнад мора. :) +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Надморска висина тачке у метрима." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Приступ инвалидима" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Да" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Не" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Ограничен" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Намењено" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Приступ интернету" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Бежични" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Жичани" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Интернет кафе" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Услуга" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "За понети" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Само" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Вероисповест" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анимизам" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаизам" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Будизам" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодаизам" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Хришћанство" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфучијанство" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Хиндуизам" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Ђаинизам" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Јудаизам" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Ислам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Вишеструке вероисповести" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Паганизам" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафаријанизам" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Сајентологија" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Шинтоизам" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикизам" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спиритуализам" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Таоизам" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унитарни универзализам" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Језидизам" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастизам" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Тоалети" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Белешка" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Подаци за обавештавање других картографа о мање очигледним подацима о " +"елементу, намери аутора приликом стварања или о саветима за будућа побољшања." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додај на OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Изабери врсту" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Готово" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Неименовано место" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Неуспех при обради Гео путање" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координате" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Тачност" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Тачност: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Број телефона" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Нуди за понети" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Не нуди за понети" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Нуди само за понети" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Јавни приступ интернету" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Нема приступа интернету" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Јавна бежична" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Жичани приступ интернету" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Рачунари доступни за коришћење" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Интернет испомоћ је доступна" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Нема доступних тоалета" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Тоалети су доступни" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Приступно инвалидима" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Ограничен приступ инвалидима" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Без приступа инвалидима" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Осмишљено за кориснике инвалиде" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s испод нивоа мора" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "На нивоу мора" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Вероисповест:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Место није нађено на OpenStreetMap-у" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Неисправне координате у адреси" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Адреса није подржана" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Од %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Учитавам плочице карте за штампање" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете прекинути штампање ако ово потраје" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Прекини штампање" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додај преко места" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Уклони преко места" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Обрни пут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додај %s на %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Нисам успео да отворим путању" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Отвори програмом %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "нисам успео да учитам датотеку" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Процењено време: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршруте су преузете са %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Креће у %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Крени" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Пешачите %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Долази у %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Долази" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Прикажи упутства за пешачење" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сакриј упутства за пешачење" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Учитај раније алтернативе" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Учитај старије алтернативе" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Нисам успео да нађем раније алтернативе." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Нисам успео да нађем старије алтернативе." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Нема редова вожњи за ову руту." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ниједан достављач није нађен за ову руту." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s минут" +msgstr[1] "%s минута" +msgstr[2] "%s минута" +msgstr[3] "%s минут" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s сат" +msgstr[1] "%s сата" +msgstr[2] "%s сати" +msgstr[3] "%s сат" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s сат" +msgstr[1] "%s:%s сата" +msgstr[2] "%s:%s сати" +msgstr[3] "%s:%s сат" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "У времену" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Од јутра до вечери" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Сваког дана" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Јавни празници" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Школски празници" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "није отворено" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Непознато" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Тачно" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s ч" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s ч %s м" +msgstr[1] "%s ч %s м" +msgstr[2] "%s ч %s м" +msgstr[3] "%s ч %s м" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s мин." +msgstr[1] "%s мин." +msgstr[2] "%s мин." +msgstr[3] "%s мин." + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s километара" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s метара" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s миља" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s стопа" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Овај прикључак не подржава последњи долазак" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Настави ка %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Настави" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Скрени лево код %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Скрени лево" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Скрени благо лево код %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Скрени благо лево" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Скрени оштро лево код %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Скрени оштро лево" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Скрени десно код %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Скрени десно" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Скрени благо десно код %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Скрени благо десно" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Скрени оштро десно код %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Скрени оштро десно" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +#| msgid "In the roundabout, take exit %s" +msgid "At the roundabout, take exit %s" +msgstr "На кружном току, изађите на „%s“" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +#| msgid "In the roundabout, take exit to %s" +msgid "At the roundabout, take exit to %s" +msgstr "На кружном току, изађите код „%s“" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Идите на кружни ток" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Уђите у лифт и изађите на спрат %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Уђите у лифт" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Направите заокрет налево ка %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Направите заокрет налево" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Направите заокрет надесно ка %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Направите заокрет надесно" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Можете чак и да потражите нека посебна места, као што су „Градски паркови " +#~ "у Јагодини“ или „Хотели у центру Пирота“." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Подешавање провере приватности Фејсбука" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Последње подешавање провере приватности Фејсбука. Могуће вредности су: " +#~ "„EVERYONE“ (свако), „FRIENDS_OF_FRIENDS“ (пријатељи пријатеља), " +#~ "„ALL_FRIENDS“ (сви пријатељи) или „SELF“ (сами)." + +#~ msgid "Everyone" +#~ msgstr "Свако" + +#~ msgid "Friends of friends" +#~ msgstr "Пријатељи пријатеља" + +#~ msgid "Just friends" +#~ msgstr "Само пријатељи" + +#~ msgid "Just me" +#~ msgstr "Само ја" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Не могу да нађем место за проверу Фејсбуком. Изаберите једно са списка." + +#~ msgid "Find a Route" +#~ msgstr "Нађи пут" + +#~ msgid "Check in here" +#~ msgstr "Проверите овде" + +#~ msgid "Show more information" +#~ msgstr "Прикажи још података" + +#~ msgid "Population:" +#~ msgstr "Број становника:" + +#~ msgid "Altitude:" +#~ msgstr "Висина:" + +#~ msgid "Opening hours:" +#~ msgstr "Радно време:" + +#~ msgid "Internet access:" +#~ msgstr "Приступ интернету:" + +#~ msgid "Toilets:" +#~ msgstr "Тоалети:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Приступ инвалидима:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "да" + +#~ msgid "limited" +#~ msgstr "ограничено" + +#~ msgid "no" +#~ msgstr "не" + +#~ msgid "designated" +#~ msgstr "намењено" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Неисправна OpenStreetMap адреса" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "жичани" + +#~ msgid "terminal" +#~ msgstr "интернет кафе" + +#~ msgid "service" +#~ msgstr "услуга" + +#~ msgid "Don’t have an account?" +#~ msgstr "Немате налог?" + +#~ msgid "%f h" +#~ msgstr "%f ч" + +#~ msgid "%f min" +#~ msgstr "%f мин." + +#~ msgid "%f s" +#~ msgstr "%f сек." + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Претрага руте преко Опен-Трип-Планера" + +#~ msgid "Add destination" +#~ msgstr "Додај одредиште" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Отворите другим програмом" + +#~ msgid "Press enter to search" +#~ msgstr "Притисните „унеси“ да претражите" + +#~ msgid "Quit" +#~ msgstr "Изађи" + +#~ msgid "OK" +#~ msgstr "У реду" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Отвори слој облика…" + +#~ msgid "Load Map Layer" +#~ msgstr "Учитај слој карте" + +#~ msgid "Open Layer" +#~ msgstr "Отвори слој" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f миља" + +#~ msgid "%f ft" +#~ msgstr "%f стопа" + +#~ msgid "Position not found" +#~ msgstr "Нисам пронашао положај" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Нисам успео да обрадим Гео-ЈСОН датотеку" + +#~ msgid "Country code: %s" +#~ msgstr "Шифра државе: %s" + +#~ msgid "Population: %s" +#~ msgstr "Становника: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Приступна рампа: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Последње познато место и прецизност" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Последње познато место корисника (географска ширина и дужина у степенима) " +#~ "и прецизност (у метрима)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Опис последњег познатог места корисника." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Да ли је корисник ручно подесио последње познато место." + +#~ msgid "I’m here!" +#~ msgstr "Ја сам овде!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Сателит" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 00000000..94102f39 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1712 @@ +# Serbian translation for gnome-maps. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Miroslav Nikolić , 2013—2017. +# Borisav Živanović , 2017. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2018-02-22 22:22+0000\n" +"PO-Revision-Date: 2018-02-16 09:25+0100\n" +"Last-Translator: Marko M. Kostić \n" +"Language-Team: Serbian <(nothing)>\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" +"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" +"X-Generator: Poedit 2.0.3\n" +"X-Poedit-Bookmarks: -1,238,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "GNOME Maps" +msgstr "Gnomove karte" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "Find places around the world" +msgstr "Nađite mesta širom sveta" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:3 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Gnomove Karte vam daju brz pristup kartama širom sveta. Omogućava vam da " +"brzo i lako pronađete mesto koje tražite tražeći grad ili ulicu, ili da " +"odredite mesto za susret sa prijateljima." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:4 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Ovaj program koristi zajedničku bazu podataka „OpenStreetMap“, koju stvaraju " +"stotine hiljada ljudi širom sveta." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:8 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Možete čak i da potražite neka posebna mesta, kao što su „Gradski parkovi u " +"Jagodini“ ili „Hoteli u centru Pirota“." + +#. Translators: This is the program name. +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:85 ../src/mainWindow.js:511 +msgid "Maps" +msgstr "Karte" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Jednostavan program za karte" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Maps;karte;mape;karta;mapa;karte;mape;karta;mapa;" + +#: ../data/org.gnome.Maps.desktop.in.h:4 +msgid "Allows your location to be shown on the map." +msgstr "Dozvoljava da se vaša lokacija prikazuje na karti." + +#: ../data/org.gnome.Maps.gschema.xml.h:1 +msgid "last viewed location" +msgstr "poslednje pogledano mesto" + +#: ../data/org.gnome.Maps.gschema.xml.h:2 +msgid "Coordinates of last viewed location." +msgstr "Koordinate poslednje pogledanog mesta." + +#: ../data/org.gnome.Maps.gschema.xml.h:3 +msgid "Window size" +msgstr "Veličina prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:4 +msgid "Window size (width and height)." +msgstr "Veličina prozora (širina i visina)." + +#: ../data/org.gnome.Maps.gschema.xml.h:5 +msgid "Window position" +msgstr "Položaj prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:6 +msgid "Window position (X and Y)." +msgstr "Položaj prozora (položeno i uspravno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:7 +msgid "Window maximized" +msgstr "Uvećavanje prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:8 +msgid "Window maximization state" +msgstr "Stanje uvećanja prozora" + +#: ../data/org.gnome.Maps.gschema.xml.h:9 +msgid "Maximum number of search results" +msgstr "Najveći broj rezultata pretrage" + +#: ../data/org.gnome.Maps.gschema.xml.h:10 +msgid "Maximum number of search results from geocode search." +msgstr "Najveći broj rezultata pretrage za pretragu geokoda." + +#: ../data/org.gnome.Maps.gschema.xml.h:11 +msgid "Number of recent places to store" +msgstr "Broj skorašnjih mesta za čuvanje" + +#: ../data/org.gnome.Maps.gschema.xml.h:12 +msgid "Number of recently visited places to store." +msgstr "Broj nedavno posećenih mesta za čuvanje." + +#: ../data/org.gnome.Maps.gschema.xml.h:13 +msgid "Number of recent routes to store" +msgstr "Broj skorašnjih puteva koje treba sačuvati" + +#: ../data/org.gnome.Maps.gschema.xml.h:14 +msgid "Number of recently visited routes to store." +msgstr "Broj skoro posećenih puteva koje treba sačuvati." + +#: ../data/org.gnome.Maps.gschema.xml.h:15 +msgid "Facebook check-in privacy setting" +msgstr "Podešavanje provere privatnosti Fejsbuka" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: ../data/org.gnome.Maps.gschema.xml.h:17 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Poslednje podešavanje provere privatnosti Fejsbuka. Moguće vrednosti su: " +"„EVERYONE“ (svako), „FRIENDS_OF_FRIENDS“ (prijatelji prijatelja), " +"„ALL_FRIENDS“ (svi prijatelji) ili „SELF“ (sami)." + +#: ../data/org.gnome.Maps.gschema.xml.h:18 +msgid "Foursquare check-in privacy setting" +msgstr "Podešavanje provere privatnosti Forskvera" + +#: ../data/org.gnome.Maps.gschema.xml.h:19 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Poslednje podešavanje provere privatnosti Forskvera. Moguće vrednosti su: " +"„public“ (javno), „followers“ (pratioci) ili „private“ (privatno)." + +#: ../data/org.gnome.Maps.gschema.xml.h:20 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Forskverova provera Fejsbukovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:21 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao objavu u nalogu Fejsbuka " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:22 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Forskverova provera Tviterovog emitovanja" + +#: ../data/org.gnome.Maps.gschema.xml.h:23 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Ukazuje da li Forskver treba da emituje proveru kao cvrkut u nalogu Tvitera " +"pridruženog sa nalogom Forskvera." + +#: ../data/org.gnome.Maps.gschema.xml.h:24 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap korisničko ime ili e-adresa" + +#: ../data/org.gnome.Maps.gschema.xml.h:25 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Pokazuje da li je korisnik prijavljen da bi mogao da uređuje OpenStreetMap " +"podatke." + +#: ../data/org.gnome.Maps.gschema.xml.h:26 +msgid "Last used transportation type for routing" +msgstr "Poslednja vrsta prevoza korišćena za pronalaženje puta" + +#: ../data/ui/app-menu.ui.h:1 +msgid "Set up OpenStreetMap Account" +msgstr "Podesi OpenStreetMap nalog" + +#: ../data/ui/app-menu.ui.h:2 +msgid "_Keyboard Shortcuts" +msgstr "Prečice na _tastaturi" + +#: ../data/ui/app-menu.ui.h:3 +msgid "About" +msgstr "O programu" + +#: ../data/ui/app-menu.ui.h:4 +msgid "Quit" +msgstr "Izađi" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Vidljivost" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Objavi na Fejsbuku" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Objavi na Tviteru" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/export-view-dialog.ui.h:2 +#: ../data/ui/send-to-dialog.ui.h:2 ../data/ui/shape-layer-file-chooser.ui.h:3 +msgid "_Cancel" +msgstr "_Otkaži" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:8 +msgid "C_heck in" +msgstr "_Proveri" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Svako" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Prijatelji prijatelja" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Samo prijatelji" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Samo ja" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Javno" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Pratioci" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Privatno" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Šta je to ovde?" + +#: ../data/ui/context-menu.ui.h:2 +msgid "Copy Location" +msgstr "Umnožite mesto" + +#: ../data/ui/context-menu.ui.h:3 +msgid "Export As Image" +msgstr "Izvezi kao sliku" + +#: ../data/ui/context-menu.ui.h:4 +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap nalog" + +#: ../data/ui/export-view-dialog.ui.h:1 +msgid "Export view" +msgstr "Izvezi pregled" + +#: ../data/ui/export-view-dialog.ui.h:3 +msgid "_Export" +msgstr "I_zvezi" + +#: ../data/ui/export-view-dialog.ui.h:4 +msgid "Include route and markers" +msgstr "Uključi puteve i markere" + +#: ../data/ui/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Opšte" + +#: ../data/ui/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Prikaz prečica" + +#: ../data/ui/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Pretraga" + +#: ../data/ui/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Pokretanje planiranja puta" + +#: ../data/ui/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Štampaj put" + +#: ../data/ui/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Izlaz" + +#: ../data/ui/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Pregled karte" + +#: ../data/ui/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Uvećavanje" + +#: ../data/ui/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Umanjivanje" + +#: ../data/ui/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Podešavanje uvećanja" + +#: ../data/ui/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Odlazak na trenutno mesto" + +#: ../data/ui/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Prebaci na pogled sa ulice" + +#: ../data/ui/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Prebaci na pogled iz vazduha" + +#: ../data/ui/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Otvori sloj oblika" + +#. Translators: This string uses ellipsis character +#: ../data/ui/layers-popover.ui.h:2 +msgid "Open Shape Layer…" +msgstr "Otvori sloj oblika…" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Uključite usluge položaja da nađete vaš položaj" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Podešavanja položaja" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:3 +msgid "Go to current location" +msgstr "Idite na tekuće mesto" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:5 +msgid "Choose map type" +msgstr "Izaberite vrstu karte" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:7 +msgid "Zoom out" +msgstr "Umanji" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:9 +msgid "Zoom in" +msgstr "Uvećaj" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:11 +msgid "Toggle route planner" +msgstr "Prebacite na planiranje puta" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:13 +msgid "Toggle favorites" +msgstr "Prebacite na omiljene" + +#. Translators: This is a tooltip +#: ../data/ui/main-window.ui.h:15 +msgid "Print Route" +msgstr "Štampaj put" + +#: ../data/ui/main-window.ui.h:16 +msgid "Maps is offline!" +msgstr "Program je van mreže!" + +#: ../data/ui/main-window.ui.h:17 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Potrebna je radna internet veza da bi program ispravno radio, ali nije " +"dostupna." + +#: ../data/ui/main-window.ui.h:18 +msgid "Check your connection and proxy settings." +msgstr "Proverite vašu vezu i podešavanja posrednika." + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:2 +msgid "Add to new route" +msgstr "Dodajte u novi put" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:4 +msgid "Open with another application" +msgstr "Otvorite drugim programom" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:6 +msgid "Mark as favorite" +msgstr "Označite omiljenim" + +#. Translators: This is a tooltip +#: ../data/ui/map-bubble.ui.h:10 +msgid "Check in here" +msgstr "Proverite ovde" + +#: ../data/ui/osm-account-dialog.ui.h:1 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap nalog" + +#: ../data/ui/osm-account-dialog.ui.h:2 +msgid "Sign in to edit maps" +msgstr "" +"Prijavite se da biste menjali karte" + +#: ../data/ui/osm-account-dialog.ui.h:3 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Poboljšajte kartu koristeći\n" +"OpenStreetMap nalog." + +#: ../data/ui/osm-account-dialog.ui.h:5 +msgid "Email" +msgstr "E-adresa" + +#: ../data/ui/osm-account-dialog.ui.h:6 +msgid "Password" +msgstr "Lozinka" + +#: ../data/ui/osm-account-dialog.ui.h:7 +msgid "Sign In" +msgstr "Prijavi me" + +#: ../data/ui/osm-account-dialog.ui.h:8 +msgid "Don’t have an account?" +msgstr "Nemate nalog?" + +#. The label should contain the link to the OSM reset password page with a translated title +#: ../data/ui/osm-account-dialog.ui.h:10 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Nažalost, to nije proradilo. Probajte ponovo ili posetite\n" +"OpenStreetMap da biste oporavili vašu lozinku." + +#: ../data/ui/osm-account-dialog.ui.h:12 +msgid "The verification code didn’t match, please try again." +msgstr "Potvrdni kod se ne podudara, probajte ponovo." + +#: ../data/ui/osm-account-dialog.ui.h:13 +msgid "Enter verification code shown above" +msgstr "Unesite potvrdni kod prikazan iznad" + +#: ../data/ui/osm-account-dialog.ui.h:14 +msgid "Verify" +msgstr "Potvrdi" + +#: ../data/ui/osm-account-dialog.ui.h:15 +msgid "Signed In" +msgstr "Prijavljen" + +#: ../data/ui/osm-account-dialog.ui.h:16 +msgid "Your OpenStreetMap account is active." +msgstr "Vaš OpenStreetMap nalog je sada aktivan." + +#: ../data/ui/osm-account-dialog.ui.h:17 +msgid "Sign Out" +msgstr "Odjavi me" + +#: ../data/ui/osm-edit-address.ui.h:1 +msgid "Street" +msgstr "Ulica" + +#: ../data/ui/osm-edit-address.ui.h:2 +msgid "House number" +msgstr "Kućni broj" + +#: ../data/ui/osm-edit-address.ui.h:3 +msgid "Postal code" +msgstr "Poštanski broj" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: ../data/ui/osm-edit-address.ui.h:5 +msgid "City" +msgstr "Grad" + +#: ../data/ui/osm-edit-dialog.ui.h:1 +msgid "Type" +msgstr "Vrsta" + +#: ../data/ui/osm-edit-dialog.ui.h:2 +msgid "None" +msgstr "Ništa" + +#: ../data/ui/osm-edit-dialog.ui.h:3 +msgid "Add Field" +msgstr "Dodaj polje" + +#: ../data/ui/osm-edit-dialog.ui.h:4 +msgid "Comment" +msgstr "Komentar" + +#: ../data/ui/osm-edit-dialog.ui.h:5 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Izmene na karti će biti vidljive na svim kartama\n" +"koje koriste podatke sa OpenStreetMap projekta." + +#: ../data/ui/osm-edit-dialog.ui.h:7 +msgid "Recently Used" +msgstr "Nedavno korišćeno" + +#: ../data/ui/osm-edit-dialog.ui.h:8 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#: ../data/ui/osm-edit-dialog.ui.h:9 +msgid "Cancel" +msgstr "Otkaži" + +#: ../data/ui/osm-edit-dialog.ui.h:10 ../src/osmEditDialog.js:512 +msgid "Next" +msgstr "Sledeće" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:2 +msgid "Edit on OpenStreetMap" +msgstr "Uredi na OpenStreetMap" + +#. Translators: This is a tooltip +#: ../data/ui/place-bubble.ui.h:4 +msgid "Show more information" +msgstr "Prikaži još podataka" + +#: ../data/ui/place-popover.ui.h:1 +msgid "Press enter to search" +msgstr "Pritisnite „unesi“ da pretražite" + +#: ../data/ui/place-popover.ui.h:2 +msgid "No results found" +msgstr "Nema rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/route-entry.ui.h:2 +msgid "Drag to change order of the route" +msgstr "Prevuci da bi promenio redosled puta" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Otvorite mesto" + +#: ../data/ui/send-to-dialog.ui.h:3 ../data/ui/shape-layer-file-chooser.ui.h:2 +msgid "_Open" +msgstr "_Otvori" + +#: ../data/ui/shape-layer-file-chooser.ui.h:1 ../src/mainWindow.js:62 +msgid "Open Shape Layer" +msgstr "Otvori sloj oblika" + +#. Translators: This is a tooltip +#: ../data/ui/shape-layer-row.ui.h:2 +msgid "Toggle visible" +msgstr "Podesi vidljivost" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Pretraga rute Graf Hoperom" + +#: ../data/ui/sidebar.ui.h:2 +msgid "Route search by OpenTripPlanner" +msgstr "Pretraga rute preko Open-Trip-Planera" + +#: ../data/ui/sidebar.ui.h:3 +msgid "" +"Routing itineraries for public transit is provided by GNOME\n" +"using timetable data obtained from transit companies or agencies.\n" +"The companies and agencies can not be held responsible for the results " +"shown.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Maršrute javnog prevoza omogućuje Gnom korišćenjem\n" +"redova vožnji nabavljenih od prevoznika ili agencija.\n" +"Ove firme i agencije se ne mogu smatrati odgovornim za prikazane rezultate.\n" +"Gnom ne može jemčiti za tačnost prikazanih maršruta i zakazanih polazaka.\n" +"Prikazani nazivi i robne marke se trebaju smatrati registrovanim robnim " +"markama\n" +"gde je to moguće." + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Prikažite još rezultata" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:2 +msgid "Hide intermediate stops and information" +msgstr "Sakrij stanice i podatke na maršruti" + +#. Translators: This is a tooltip +#: ../data/ui/transit-leg-row.ui.h:4 +msgid "Show intermediate stops and information" +msgstr "Prikaži stanice i podatke na maršruti" + +#. Indicates searching for the next available itineraries +#: ../data/ui/transit-options-panel.ui.h:2 +msgid "Leave Now" +msgstr "Polazi sada" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: ../data/ui/transit-options-panel.ui.h:4 +msgid "Leave By" +msgstr "Polazi u" + +#. Indicates searching for itineraries arriving no later than the specified time +#: ../data/ui/transit-options-panel.ui.h:6 +msgid "Arrive By" +msgstr "Dolazi u" + +#. Header indicating selected modes of transit +#: ../data/ui/transit-options-panel.ui.h:8 +msgid "Show" +msgstr "Prikaži" + +#: ../data/ui/transit-options-panel.ui.h:9 +msgid "Buses" +msgstr "Autobusi" + +#: ../data/ui/transit-options-panel.ui.h:10 +msgid "Trams" +msgstr "Tramvaji" + +#: ../data/ui/transit-options-panel.ui.h:11 +msgid "Trains" +msgstr "Vozovi" + +#: ../data/ui/transit-options-panel.ui.h:12 +msgid "Subway" +msgstr "Podzemna" + +#: ../data/ui/transit-options-panel.ui.h:13 +msgid "Ferries" +msgstr "Trajekti" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:118 +msgid "Current location" +msgstr "Trenutni položaj" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +msgid "Accuracy: %s" +msgstr "Tačnost: %s" + +#: ../data/ui/zoom-in-notification.ui.h:1 +msgid "Zoom in to add location!" +msgstr "Uvećaj za dodavanje lokacije!" + +#: ../data/ui/zoom-in-notification.ui.h:2 +msgid "OK" +msgstr "U redu" + +#: ../lib/maps-file-tile-source.c:303 ../lib/maps-file-tile-source.c:379 +#: ../lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Neuspeh pri traženju strukture pločica u fascikli" + +#: ../lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Nisam uspeo da obradim IksML dokument" + +#: ../lib/maps-osm.c:252 ../lib/maps-osm.c:405 +msgid "Missing required attributes" +msgstr "Nedostaju potrebne osobine" + +#: ../lib/maps-osm.c:453 +msgid "Could not find OSM element" +msgstr "Nisam mogao da nađem OSM element" + +#: ../src/application.js:98 +msgid "A path to a local tiles directory structure" +msgstr "Putanja do lokalne fascikle sa strukturom pločica" + +#: ../src/application.js:102 +msgid "Show the version of the program" +msgstr "Prikaži izdanje programa" + +#: ../src/checkInDialog.js:167 +msgid "Select an account" +msgstr "Izaberite nalog" + +#: ../src/checkInDialog.js:172 ../src/checkInDialog.js:244 +msgid "Loading" +msgstr "Učitavam" + +#: ../src/checkInDialog.js:196 +msgid "Select a place" +msgstr "Izaberite mesto" + +#: ../src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Fejsbukom. Izaberite jedno sa spiska." + +#: ../src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ne mogu da nađem mesto za proveru Forskverom. Izaberite jedno sa spiska." + +# Misli se na recepciju, hotele. +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "Prijavi se u „%s“" + +#. Translators: %s is the name of the place to check in. +#. +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Napišite izbornu poruku za recepciju „%s“." + +#: ../src/checkInDialog.js:280 ../src/checkIn.js:162 +#: ../src/osmEditDialog.js:549 +msgid "An error has occurred" +msgstr "Došlo je do greške" + +#. Translators: %s is the place name that user wanted to check-in +#: ../src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Ne mogu da nađem „%s“ u društvenim uslugama" + +#: ../src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Ne mogu da nađem odgovarajuće mesto za prijavu na ovom mestu" + +#: ../src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Uverenja su istekla, otvorite naloge na mreži da se prijavite i uključite ovaj " +"nalog" + +#: ../src/contextMenu.js:95 +msgid "Route from here" +msgstr "Put odavde" + +#: ../src/contextMenu.js:97 +msgid "Add destination" +msgstr "Dodaj odredište" + +#: ../src/contextMenu.js:99 +msgid "Route to here" +msgstr "Put dovde" + +#: ../src/contextMenu.js:128 +msgid "Nothing found here!" +msgstr "Ništa nije nađeno ovde!" + +#: ../src/contextMenu.js:185 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Lokacija je dodata na kartu. Znajte da će trebati malo vremena pre nego što " +"se pojavi na karti i u rezultatima pretrage." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: ../src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Karta na %f, %f.png" + +#: ../src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Sistem datoteka je samo za čitanje" + +#: ../src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Nemate ovlašćenje da sačuvate tu" + +#: ../src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Direktorijum ne postoji" + +#: ../src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Nije navedeno ime datoteke" + +#: ../src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Ne mogu da izvezem pregled" + +#: ../src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "neispravna koordinata" + +#: ../src/geoJSONSource.js:147 ../src/geoJSONSource.js:187 +#: ../src/geoJSONSource.js:202 +msgid "parse error" +msgstr "greška u obrađivanju" + +#: ../src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "nepoznata geometrija" + +#: ../src/graphHopper.js:89 ../src/openTripPlanner.js:656 +msgid "Route request failed." +msgstr "Zahtev puta nije uspeo." + +#: ../src/graphHopper.js:97 ../src/openTripPlanner.js:619 +msgid "No route found." +msgstr "Nisam pronašao put." + +#: ../src/graphHopper.js:189 +msgid "Start!" +msgstr "Kreni!" + +#: ../src/mainWindow.js:59 +msgid "All Layer Files" +msgstr "Sve datoteke sloja" + +#: ../src/mainWindow.js:452 +msgid "Failed to connect to location service" +msgstr "Nisam uspeo da se povežem na uslugu položaja" + +#: ../src/mainWindow.js:509 +msgid "translator-credits" +msgstr "" +"Miroslav Nikolić \n" +"Marko M. Kostić \n" +"Borisav Živanović \n" +"\n" +"http://prevod.org — prevod na srpski jezik" + +#: ../src/mainWindow.js:512 +msgid "A map application for GNOME" +msgstr "Gnomov program za karte" + +#: ../src/mainWindow.js:523 +msgid "Copyright © 2011 – 2017 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Pravo na kopiranje © 2011 – 2017 Red Hat, Inc. i tvorci Gnomovih Karti" + +#: ../src/mainWindow.js:542 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Podaci o kartama sa platforme %s i od doprinosilaca" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: ../src/mainWindow.js:558 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Pločice za kartu su preuzete sa %s" + +#: ../src/mapView.js:350 +msgid "File type is not supported" +msgstr "Vrsta datoteke nije podržana" + +#: ../src/mapView.js:357 +msgid "Failed to open layer" +msgstr "Nisam uspeo da otvorim sloj" + +#: ../src/mapView.js:393 +msgid "Failed to open GeoURI" +msgstr "Nisam uspeo da otvorim Geo-URI" + +#: ../src/openTripPlanner.js:613 +msgid "No earlier alternatives found." +msgstr "Nisam uspeo da nađem ranije alternative." + +#: ../src/openTripPlanner.js:614 +msgid "No later alternatives found." +msgstr "Nisam uspeo da nađem starije alternative." + +#: ../src/openTripPlanner.js:652 +msgid "No timetable data found for this route." +msgstr "Nema redova vožnji za ovu rutu." + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: ../src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "Neispravno korisničko ime ili lozinka" + +#: ../src/osmConnection.js:438 +msgid "Success" +msgstr "Uspeh" + +#: ../src/osmConnection.js:440 +msgid "Bad request" +msgstr "Loš zahtev" + +#: ../src/osmConnection.js:442 +msgid "Object not found" +msgstr "Objekat nije nađen" + +#: ../src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "Sukob, neko drugi je upravo izmenio objekat" + +#: ../src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "Objekat je obrisan" + +#: ../src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "Put ili relacija se odnosi na nepostojeće dete" + +#: ../src/osmEditDialog.js:105 +msgid "Name" +msgstr "Naziv" + +#: ../src/osmEditDialog.js:108 +msgid "The official name. This is typically what appears on signs." +msgstr "Zvanični naziv. Obično naziv koji se nalazi na saobraćajnim znakovima." + +#: ../src/osmEditDialog.js:111 +msgid "Address" +msgstr "Adresa" + +#: ../src/osmEditDialog.js:119 +msgid "Website" +msgstr "Veb stranica" + +#: ../src/osmEditDialog.js:122 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Zvanična veb stranica. Probajte da unesete najosnovniji oblik adrese. Na " +"primer: „http://primer.rs“ umesto „http://primer.rs/pocetna.html“." + +#: ../src/osmEditDialog.js:127 +msgid "Phone" +msgstr "Telefon" + +#: ../src/osmEditDialog.js:131 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Broj telefona. Koristite međunarodni format gde broj počinje sa plus znakom. " +"Obratite pažnju na lokalne zakone o zaštiti privatnosti, naročito ako su u " +"pitanju privatni brojevi telefona." + +#: ../src/osmEditDialog.js:136 ../src/placeBubble.js:173 +msgid "Wikipedia" +msgstr "Vikipedija" + +#: ../src/osmEditDialog.js:140 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Korišćeni format treba da sadrži oznaku jezika i naslov članka. Na primer: " +"„sr:Naslov članka“." + +#: ../src/osmEditDialog.js:144 +msgid "Opening hours" +msgstr "Radno vreme" + +#: ../src/osmEditDialog.js:149 +msgid "See the link in the label for help on format." +msgstr "Pogledajte vezu u etiketi za više podataka o formatu." + +#: ../src/osmEditDialog.js:152 +msgid "Population" +msgstr "Stanovništvo" + +#: ../src/osmEditDialog.js:157 +msgid "Altitude" +msgstr "Visina" + +# Mi ne moramo da pišemo "(height above sea lever)" jer sama reč „nadmorska visina“ opisuje da je u pitanju visina iznad mora. :) +#: ../src/osmEditDialog.js:160 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Nadmorska visina tačke u metrima." + +#: ../src/osmEditDialog.js:163 +msgid "Wheelchair access" +msgstr "Pristup invalidima" + +#: ../src/osmEditDialog.js:166 ../src/osmEditDialog.js:175 +#: ../src/osmEditDialog.js:213 +msgid "Yes" +msgstr "da" + +#: ../src/osmEditDialog.js:167 ../src/osmEditDialog.js:176 +#: ../src/osmEditDialog.js:214 +msgid "No" +msgstr "Ne" + +#: ../src/osmEditDialog.js:168 +msgid "Limited" +msgstr "ograničen" + +#: ../src/osmEditDialog.js:169 +msgid "Designated" +msgstr "namenjeno" + +#: ../src/osmEditDialog.js:172 +msgid "Internet access" +msgstr "Pristup internetu" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: ../src/osmEditDialog.js:177 ../src/translations.js:340 +msgid "Wi-Fi" +msgstr "Bežični" + +#: ../src/osmEditDialog.js:178 +msgid "Wired" +msgstr "Žičani" + +#: ../src/osmEditDialog.js:179 +msgid "Terminal" +msgstr "Internet kafe" + +#: ../src/osmEditDialog.js:180 +msgid "Service" +msgstr "Usluga" + +#: ../src/osmEditDialog.js:183 +msgid "Religion" +msgstr "Veroispovest" + +#: ../src/osmEditDialog.js:186 ../src/translations.js:363 +msgid "Animism" +msgstr "Animizam" + +#: ../src/osmEditDialog.js:187 +msgid "Bahá’í" +msgstr "Bahaizam" + +#: ../src/osmEditDialog.js:188 ../src/translations.js:365 +msgid "Buddhism" +msgstr "Budizam" + +#: ../src/osmEditDialog.js:189 ../src/translations.js:366 +msgid "Caodaism" +msgstr "Kaodaizam" + +#: ../src/osmEditDialog.js:190 ../src/translations.js:367 +msgid "Christianity" +msgstr "Hrišćanstvo" + +#: ../src/osmEditDialog.js:191 ../src/translations.js:368 +msgid "Confucianism" +msgstr "Konfučijanstvo" + +#: ../src/osmEditDialog.js:192 ../src/translations.js:369 +msgid "Hinduism" +msgstr "Hinduizam" + +#: ../src/osmEditDialog.js:193 ../src/translations.js:370 +msgid "Jainism" +msgstr "Đainizam" + +#: ../src/osmEditDialog.js:194 ../src/translations.js:371 +msgid "Judaism" +msgstr "Judaizam" + +#: ../src/osmEditDialog.js:195 ../src/translations.js:372 +msgid "Islam" +msgstr "Islam" + +#: ../src/osmEditDialog.js:196 ../src/translations.js:373 +msgid "Multiple Religions" +msgstr "Višestruke veroispovesti" + +#: ../src/osmEditDialog.js:197 ../src/translations.js:374 +msgid "Paganism" +msgstr "Paganizam" + +#: ../src/osmEditDialog.js:198 ../src/translations.js:375 +msgid "Pastafarianism" +msgstr "Pastafarijanizam" + +#: ../src/osmEditDialog.js:199 ../src/translations.js:376 +msgid "Scientology" +msgstr "Sajentologija" + +#: ../src/osmEditDialog.js:200 ../src/translations.js:377 +msgid "Shinto" +msgstr "Šintoizam" + +#: ../src/osmEditDialog.js:201 ../src/translations.js:378 +msgid "Sikhism" +msgstr "Sikizam" + +#: ../src/osmEditDialog.js:202 ../src/translations.js:379 +msgid "Spiritualism" +msgstr "Spiritualizam" + +#: ../src/osmEditDialog.js:203 ../src/translations.js:380 +msgid "Taoism" +msgstr "Taoizam" + +#: ../src/osmEditDialog.js:204 ../src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "Unitarni univerzalizam" + +#: ../src/osmEditDialog.js:205 ../src/translations.js:382 +msgid "Voodoo" +msgstr "Vudu" + +#: ../src/osmEditDialog.js:206 ../src/translations.js:383 +msgid "Yazidism" +msgstr "Jezidizam" + +#: ../src/osmEditDialog.js:207 ../src/translations.js:384 +msgid "Zoroastrianism" +msgstr "Zoroastizam" + +#: ../src/osmEditDialog.js:210 +msgid "Toilets" +msgstr "Toaleti" + +#: ../src/osmEditDialog.js:217 +msgid "Note" +msgstr "Beleška" + +#: ../src/osmEditDialog.js:220 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Podaci za obaveštavanje drugih kartografa o manje očiglednim podacima o " +"elementu, nameri autora prilikom stvaranja ili o savetima za buduća poboljšanja." + +#: ../src/osmEditDialog.js:325 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Dodaj na OpenStreetMap" + +#: ../src/osmEditDialog.js:379 +msgid "Select Type" +msgstr "Izaberi vrstu" + +#: ../src/osmEditDialog.js:496 +msgid "Done" +msgstr "Gotovo" + +#: ../src/placeBubble.js:125 +msgid "Population:" +msgstr "Broj stanovnika:" + +#: ../src/placeBubble.js:131 +msgid "Altitude:" +msgstr "Visina:" + +#: ../src/placeBubble.js:136 +msgid "Opening hours:" +msgstr "Radno vreme:" + +#: ../src/placeBubble.js:141 +msgid "Internet access:" +msgstr "Pristup internetu:" + +#: ../src/placeBubble.js:146 +msgid "Religion:" +msgstr "Veroispovest:" + +#: ../src/placeBubble.js:151 +msgid "Toilets:" +msgstr "Toaleti:" + +#: ../src/placeBubble.js:156 +msgid "Wheelchair access:" +msgstr "Pristup invalidima:" + +#: ../src/placeBubble.js:162 ../src/placeBubble.js:166 +msgid "Phone:" +msgstr "Telefon:" + +#: ../src/placeEntry.js:186 +msgid "Failed to parse Geo URI" +msgstr "Neuspeh pri obradi Geo putanje" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: ../src/place.js:218 ../src/translations.js:329 ../src/translations.js:391 +msgid "yes" +msgstr "da" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: ../src/place.js:225 +msgid "limited" +msgstr "ograničeno" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: ../src/place.js:231 ../src/translations.js:335 ../src/translations.js:392 +msgid "no" +msgstr "ne" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: ../src/place.js:238 +msgid "designated" +msgstr "namenjeno" + +#: ../src/printLayout.js:240 +#, javascript-format +msgid "From %s to %s" +msgstr "Od %s do %s" + +#: ../src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Učitavam pločice karte za štampanje" + +#: ../src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Možete prekinuti štampanje ako ovo potraje" + +#: ../src/printOperation.js:49 +msgid "Abort printing" +msgstr "Prekini štampanje" + +#. Translators: this is add via location tooltip +#: ../src/routeEntry.js:72 +msgid "Add via location" +msgstr "Dodaj preko mesta" + +#. Translators: this is remove via location tooltip +#: ../src/routeEntry.js:78 +msgid "Remove via location" +msgstr "Ukloni preko mesta" + +#. Translators: this is reverse route tooltip +#: ../src/routeEntry.js:84 +msgid "Reverse route" +msgstr "Obrni put" + +#: ../src/sendToDialog.js:176 +msgid "Failed to open URI" +msgstr "Nisam uspeo da otvorim putanju" + +#: ../src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "nisam uspeo da učitam datoteku" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: ../src/sidebar.js:292 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Procenjeno vreme: %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: ../src/transitArrivalRow.js:54 +#, javascript-format +msgid "Arrive at %s" +msgstr "Dolazi u %s" + +#: ../src/transitArrivalRow.js:56 +msgid "Arrive" +msgstr "Dolazi" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: ../src/transitLegRow.js:71 +#, javascript-format +msgid "Start at %s" +msgstr "Kreće u %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: ../src/transitLegRow.js:77 +msgid "Start" +msgstr "Kreni" + +#: ../src/transitLegRow.js:106 +msgid "Show walking instructions" +msgstr "Prikaži uputstva za pešačenje" + +#: ../src/transitLegRow.js:107 +msgid "Hide walking instructions" +msgstr "Sakrij uputstva za pešačenje" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: ../src/transitLegRow.js:132 +#, javascript-format +msgid "Walk %s" +msgstr "Pešačite %s" + +#: ../src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Učitaj ranije alternative" + +#: ../src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Učitaj starije alternative" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: ../src/transitOptionsPanel.js:141 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e. %b" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:249 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: ../src/transitPlan.js:276 +#, javascript-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "%d minut" +msgstr[1] "%d minuta" +msgstr[2] "%d minuta" +msgstr[3] "%d minut" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: ../src/transitPlan.js:287 +#, javascript-format +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "%d sat" +msgstr[1] "%d sata" +msgstr[2] "%d sati" +msgstr[3] "%d sat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: ../src/transitPlan.js:293 +#, javascript-format +msgid "%d:%02d hour" +msgid_plural "%d:%02d hours" +msgstr[0] "%d:%02d sat" +msgstr[1] "%d:%02d sata" +msgstr[2] "%d:%02d sati" +msgstr[3] "%d:%02d sat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: ../src/transitPlan.js:642 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: ../src/translations.js:56 +msgid "around the clock" +msgstr "u vremenu" + +#: ../src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "od jutra do večeri" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: ../src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: ../src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s, %s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: ../src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s, %s, %s" + +#: ../src/translations.js:185 +msgid "every day" +msgstr "svakog dana" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: ../src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s—%s" + +#: ../src/translations.js:208 +msgid "public holidays" +msgstr "javni praznici" + +#: ../src/translations.js:210 +msgid "school holidays" +msgstr "školski praznici" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:264 +msgid "not open" +msgstr "nije otvoreno" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: ../src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s—%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: ../src/translations.js:345 +msgid "wired" +msgstr "žičani" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: ../src/translations.js:350 +msgid "terminal" +msgstr "internet kafe" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: ../src/translations.js:355 +msgid "service" +msgstr "usluga" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:226 +msgid "Unknown" +msgstr "Nepoznato" + +#. Translators: Accuracy of user location information +#: ../src/utils.js:229 +msgid "Exact" +msgstr "Tačno" + +#: ../src/utils.js:287 +#, javascript-format +msgid "%f h" +msgstr "%f č" + +#: ../src/utils.js:289 +#, javascript-format +msgid "%f min" +msgstr "%f min." + +#: ../src/utils.js:291 +#, javascript-format +msgid "%f s" +msgstr "%f sek." + +#. Translators: This is a distance measured in kilometers +#: ../src/utils.js:302 +#, javascript-format +msgid "%s km" +msgstr "%s kilometara" + +#. Translators: This is a distance measured in meters +#: ../src/utils.js:305 +#, javascript-format +msgid "%s m" +msgstr "%s metara" + +#. Translators: This is a distance measured in miles +#: ../src/utils.js:313 +#, javascript-format +msgid "%s mi" +msgstr "%s milja" + +#. Translators: This is a distance measured in feet +#: ../src/utils.js:316 +#, javascript-format +msgid "%s ft" +msgstr "%s stopa" + +#~ msgid "Load Map Layer" +#~ msgstr "Učitaj sloj karte" + +#~ msgid "Open Layer" +#~ msgstr "Otvori sloj" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f milja" + +#~ msgid "%f ft" +#~ msgstr "%f stopa" + +#~ msgid "Position not found" +#~ msgstr "Nisam pronašao položaj" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Nisam uspeo da obradim Geo-JSON datoteku" + +#~ msgid "Country code: %s" +#~ msgstr "Šifra države: %s" + +#~ msgid "Population: %s" +#~ msgstr "Stanovnika: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Pristupna rampa: %s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Poslednje poznato mesto i preciznost" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Poslednje poznato mesto korisnika (geografska širina i dužina u stepenima) " +#~ "i preciznost (u metrima)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Opis poslednjeg poznatog mesta korisnika." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Da li je korisnik ručno podesio poslednje poznato mesto." + +#~ msgid "I’m here!" +#~ msgstr "Ja sam ovde!" + +#~| msgid " km²" +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "Satellite" +#~ msgstr "Satelit" + +#~ msgid " km2" +#~ msgstr " km2" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 00000000..c9616db6 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,2143 @@ +# Swedish translations for gnome-maps package +# Svenska översättningar för paketet gnome-maps. +# Copyright © 2013-2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Marcus Lundblad , 2013. +# Sebastian Rasmussen , 2015, 2016. +# Anders Jonsson , 2015, 2016, 2017, 2018, 2019, 2020, 2021. +# Luna Jernberg , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-16 23:04+0200\n" +"Last-Translator: Anders Jonsson \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Kartor" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Hitta platser i världen" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Kartor ger dig snabb tillgång till kartor över hela världen. Det låter dig " +"hitta platsen du letar efter genom att söka efter en stad eller gata eller " +"finna ett ställe att möta en vän på." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Kartor använder kartdatabasen OpenStreetMap, skapad genom samarbete av flera " +"hundratusentals personer över hela världen." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME-projektet" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Kartor" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ett enkelt kartprogram" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Kartor;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Tillåter att din plats visas på kartan." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "senaste visade plats" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Koordinater för senast visade plats." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "zoom" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Zoomnivå" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Karttyp" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Typen av karta att visa (vägkarta, flygfoto o.s.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Fönsterstorlek" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Fönsterstorlek (bredd och höjd)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Fönsterposition" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Fönsterposition (X och Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Fönster maximerat" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Tillstånd för maximerat fönster" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Maximalt antal sökresultat" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Maximalt antal sökresultat från geocode-sökning." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Antal senaste platser att lagra" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Antal senast besökta platser att lagra." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Antal senaste rutter att lagra" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Antal senast besökta rutter att lagra." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Sekretessinställning för Foursquare-incheckning" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Senast använda sekretessinställning för Foursquare-incheckning. Möjliga " +"värden är: public, followers eller private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Facebook-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Utsändning av Foursquare-incheckning till Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Indikerar om Foursquare ska sända ut incheckningar som en postning på " +"Twitter-kontot associerat med Foursquare-kontot." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Användarnamn hos OpenStreetMap eller e-postadress" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Indikerar om användaren har loggat in för att redigera OpenStreetMap-data." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Senaste transporttyp för rutter" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Nattläge" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Huruvida programmet är i nattläge." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Använd hybridflygfotorutor" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Huruvida flygfotorutor ska använda hybridstil (med etiketter)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Synlighet" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Posta på Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Posta på Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Avbryt" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Checka in" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Publikt" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Följare" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Privat" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Rutt härifrån" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Lägg till mellanliggande stopp" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Rutt hit" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Vad finns här?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Kopiera plats" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Exportera vy" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Exportera" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Inkludera rutt och markörer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Välj karttyp" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Zooma ut" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Zooma in" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Skriv ut rutt" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Slå på/av favoriter" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Allmänt" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Visa genvägar" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Sök" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Ruttplanerare på/av" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Skriv ut rutt" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Avsluta" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Kartvy" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Zooma in" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Zooma ut" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Visa/dölj skala" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Gå till aktuell plats" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Växla till gatuvy" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Växla till flygfotovy" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Öppna formlager" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Visa etiketter" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Öppna formlager…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Slå på platstjänster för att hitta din plats" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Avbryt" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Platsinställningar" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Nattläge" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Konfigurera OpenStreetMap-konto" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Exportera som bild" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Tangentbordsgenvägar" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Om Kartor" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Öppna huvudmeny" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Kartor är frånkopplad!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Kartor behöver en aktiv internetanslutning för att fungera korrekt, men en " +"sådan kan ej hittas." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kontrollera din anslutning och proxyinställningar." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap-konto" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Logga in för att redigera kartor" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Hjälp till att förbättra kartan via ett\n" +"OpenStreetMap-konto." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-post" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Lösenord" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Registrera dig" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Logga in" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Det fungerade tyvärr inte. Prova igen eller besök\n" +"OpenStreetMap för att återställa ditt lösenord." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Verifieringskoden stämde inte, prova igen." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Mata in verifieringskoden som visas ovan" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Verifiera" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Inloggad" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ditt OpenStreetMap-konto är aktivt." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Logga ut" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Gata" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Husnummer" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Postnummer" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Postort" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Typ" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Ingen" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Lägg till fält" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Kommentar" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Kartändringar kommer synas på alla kartor som använder\n" +"OpenStreetMap-data." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Senast använda" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Nästa" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Inga resultat hittades" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Ett fel har inträffat" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Dra för att ändra ruttens ordning" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Öppna plats" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopiera" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Skicka till…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Checka in…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Öppna formlager" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Öppna" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Slå på/av favoriter" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Ruttsökning utförd av GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Resväg för kollektivtrafik tillhandahålls av tredjepartstjänster.\n" +"GNOME kan inte garantera korrektheten hos resvägarna och tabellerna som " +"visas.\n" +"Observera att vissa operatörer kanske inte inkluderar alla möjliga " +"färdsätt,\n" +"t.ex. visar en nationell operatör kanske inte flyglinjer, och en lokal\n" +"operatör saknar kanske regionala tåg.\n" +"Namn och varumärken som visas anses vara registrerade varumärken då " +"tillämpligt." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Visa fler resultat" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Dölj mellanliggande stopp och information" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Visa mellanliggande stopp och information" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Åk nu" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Åk tidigast" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Anländ senast" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Visa" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Bussar" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Spårvagnar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Tåg" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Tunnelbana" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Färjor" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Flygplan" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Dela plats" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Lägg till ny rutt" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Vägbeskrivning" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Markera som favorit" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Redigera i OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Zooma in för att lägga till plats!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Zooma in" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Misslyckades med att hitta rutstruktur i katalog" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Misslyckades med att tolka XML-dokument" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Saknar nödvändiga attribut" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Kunde inte hitta OSM-element" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "En sökväg till en lokal katalogstruktur med kartrutor" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Rutstorlek för lokal katalog med kartrutor" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Visa programmets version" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ignorera nätverkets tillgänglighet" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[FIL…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Välj ett konto" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Läser in" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Välj en plats" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Kartor kan inte hitta platsen att checka in på med Foursquare. Välj en från " +"denna lista." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Checka in på %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Skriv ett valfritt meddelande för att checka in på %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Kan inte hitta ”%s” i den sociala tjänsten" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Kan inte hitta en lämplig plats att checka in på denna plats" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Inloggningsuppgifterna har gått ut, öppna Nätkonton för att logga in och " +"aktivera detta konto" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Ingenting hittades här!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Plats lades till på kartan, observera att det kan ta ett tag innan det syns " +"på kartan och bland sökresultaten." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Kartor vid %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Filsystemet är skrivskyddat" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Du har inte rättigheter att spara där" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Katalogen existerar inte" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Inget filnamn angivet" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Kan ej exportera vy" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Aktuell plats" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "ogiltig koordinat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "tolkningsfel" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "okänd geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Ruttbegäran misslyckades." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Hittade ingen rutt." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Starta!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Alla lagerfiler" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Misslyckades att ansluta till platstjänst" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Marcus Lundblad \n" +"Anders Jonsson \n" +"Luna Jernberg \n" +"Skicka synpunkter på översättningen till\n" +"." + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Ett kartprogram för GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Copyright © 2011 – 2021 Red Hat, Inc. och upphovsmännen för GNOME Maps" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Kartdata från %s och bidragsgivare" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Kartrutor tillhandahållna av %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Sökning tillhandahålls av %s med %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Misslyckades med att öppna lager" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Vill du fortsätta?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Du håller på att öppna filer med en total storlek på %s MB. Dessa kan ta " +"lite tid att läsa in" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Filtypen stöds inte" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Misslyckades med att öppna GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Felaktigt användarnamn eller lösenord" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Framgång" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Felaktig begäran" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Objekt hittades ej" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Konflikt, någon annan har precis modifierat objektet" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Objektet har tagits bort" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Väg eller relation refererar till obefintliga barn" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Namn" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Det officiella namnet. Detta är typiskt vad som visas på skyltar." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adress" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Webbplats" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Det här är inte en giltig URL. Se till att inkludera http:// eller https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Den officiella webbplatsen. Försök att använda den mest grundläggande formen " +"för en URL, d.v.s. http://example.com istället för http://example.com/index." +"html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefonnummer. Använd det internationella formatet som börjar med ett " +"plustecken. Var uppmärksam på lokala sekretesslagar, speciellt för privata " +"telefonnummer." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-post" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Det här är inte en giltig e-postadress. Se till att inte inkludera mailto:-" +"protokollprefixet." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Kontakt-e-postadress för förfrågningar. Se till att endast lägga till e-" +"postadresser som är avsedda att användas offentligt." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Formatet som används bör inkludera språkkoden och artikeltiteln, t.ex. ”sv:" +"Artikelns titel”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Öppettider" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Se länken i etiketten för hjälp om formatet." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Folkmängd" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Höjd över havet" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Höjd (höjd över havet) för en plats i meter." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Åtkomst för rullstol" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Ja" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Nej" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Begränsad" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Avsett för" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Internetåtkomst" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Trådlöst" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Trådbundet" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Tjänst" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Hämtmat" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Endast" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Religion" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animism" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Buddhism" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Cao đai" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Kristendom" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfucianism" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduism" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Jainism" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Judendom" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Islam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Flera religioner" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganism" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientologi" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Shinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sikhism" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Spiritualism" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoism" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Unitaristisk universalism" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Voodoo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrism" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Toaletter" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Anteckning" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Information som används för att informera andra karterare om icke uppenbar " +"information om ett element, personens avsikt då det skapades, eller tips på " +"hur det kan förbättras ytterligare." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Lägg till i OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Välj typ" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Klar" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Namnlös plats" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Misslyckades med att tolka geo-URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinater" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Noggrannhet" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Noggrannhet: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefonnummer" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Erbjuder hämtmat" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Erbjuder inte hämtmat" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Erbjuder endast hämtmat" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Öppen internetåtkomst" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Ingen internetåtkomst" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Öppet Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Trådbunden internetåtkomst" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Datorer tillgängliga för användning" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Internethjälp tillgänglig" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Inga toaletter tillgängliga" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Toaletter tillgängliga" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Rullstolsanpassat" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Begränsad rullstolsanpassning" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Inte rullstolsanpassat" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Designat för rullstolsburna" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s under havsnivå" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Vid havsnivå" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Religion:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Platsen hittades inte i OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Koordinaterna i URL:en är felaktiga" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL:en stöds inte" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Från %s till %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Läser in kartrutor för utskrift" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Du kan avbryta utskriften om detta tar för lång tid" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Avbryt utskrift" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Lägg till position att passera" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ta bort position att passera" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Vänd rutt" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Lägg till %s till %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Misslyckades med att öppna URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Öppna med %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "misslyckades med att läsa in fil" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Uppskattad tid: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Resvägar tillhandahållna av %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Starta från %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Starta" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Gå %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Anländ vid %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Anländ" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Visa gånginstruktioner" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Dölj gånginstruktioner" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Läs in tidigare alternativ" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Läs in senare alternativ" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Inga tidigare alternativ hittades." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Inga senare alternativ hittades." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Inga tidtabellsdata hittades för denna rutt." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Ingen operatör hittades för denna rutt." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s minut" +msgstr[1] "%s minuter" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s timme" +msgstr[1] "%s timmar" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s timme" +msgstr[1] "%s:%s timmar" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Dygnet runt" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Från soluppgång till solnedgång" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Varje dag" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Allmänna helgdagar" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Skollov" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "inte öppen" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Okänd" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Exakt" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s min" +msgstr[1] "%s h %s min" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s min" +msgstr[1] "%s min" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" +msgstr[1] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s miles" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s fot" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Denna insticksmodul stöder inte senaste ankomsttid" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Fortsätt på %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Fortsätt" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Sväng vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sväng vänster" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Sväng svagt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sväng svagt vänster" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Sväng kraftigt vänster på %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sväng kraftigt vänster" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Sväng höger på %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sväng höger" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Sväng svagt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sväng svagt höger" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Sväng kraftigt höger på %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sväng kraftigt höger" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Ta avfart %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Ta avfart till %s i rondellen" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Ta rondellen" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Ta hissen och stig av på %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Ta hissen" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Gör en u-sväng åt vänster in på %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Gör en u-sväng åt vänster" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Gör en u-sväng åt höger in på %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Gör en u-sväng åt höger" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Sekretessinställning för Facebook-incheckning" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Senaste använda sekretessinställning för Facebook-incheckning. Möjliga " +#~ "värden är: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS eller SELF." + +#~ msgid "Everyone" +#~ msgstr "Alla" + +#~ msgid "Friends of friends" +#~ msgstr "Vänners vänner" + +#~ msgid "Just friends" +#~ msgstr "Bara vänner" + +#~ msgid "Just me" +#~ msgstr "Bara jag" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Kartor kan inte hitta platsen att checka in på med Facebook. Välj en från " +#~ "denna lista." + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Du kan till och med söka efter specifika platser såsom ”Pub nära " +#~ "Drottninggatan, Stockholm” eller ”Hotell vid Alexanderplatz, Berlin”." + +#~ msgid "Find a Route" +#~ msgstr "Hitta en rutt" + +#~ msgid "Check in here" +#~ msgstr "Checka in här" + +#~ msgid "Show more information" +#~ msgstr "Visa fler resultat" + +#~ msgid "Population:" +#~ msgstr "Folkmängd:" + +#~ msgid "Altitude:" +#~ msgstr "Höjd över havet:" + +#~ msgid "Opening hours:" +#~ msgstr "Öppettider:" + +#~ msgid "Internet access:" +#~ msgstr "Internetåtkomst:" + +#~ msgid "Toilets:" +#~ msgstr "Toaletter:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Åtkomst för rullstol:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "ja" + +#~ msgid "limited" +#~ msgstr "begränsad" + +#~ msgid "no" +#~ msgstr "nej" + +#~ msgid "designated" +#~ msgstr "avsett för" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap-URL:en är felaktig" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "trådbunden" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "tjänst" + +#~ msgid "Primary menu" +#~ msgstr "Primär meny" + +#~ msgid "Don’t have an account?" +#~ msgstr "Har du inte ett konto?" + +#~ msgid "%f h" +#~ msgstr "%f tim" + +#~ msgid "%f min" +#~ msgstr "%f min" + +#~ msgid "%f s" +#~ msgstr "%f s" + +#~ msgid "Add destination" +#~ msgstr "Lägg till destination" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Ruttsökning utförd av OpenTripPlanner" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Öppna med annat program" + +#~ msgid "Press enter to search" +#~ msgstr "Tryck på retur för att söka" + +#~ msgid "Quit" +#~ msgstr "Avsluta" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Öppna formlager…" + +#~ msgid "Load Map Layer" +#~ msgstr "Läs in kartlager" + +#~ msgid "Open Layer" +#~ msgstr "Öppna lager" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f engelska mil" + +#~ msgid "%f ft" +#~ msgstr "%f fot" + +#~ msgid "Position not found" +#~ msgstr "Plats hittades ej" + +#~ msgid "Country code: %s" +#~ msgstr "Landskod: %s" + +#~ msgid "Population: %s" +#~ msgstr "Folkmängd: %s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "Åtkomst för rullstol: %s" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "Misslyckades med att tolka GeoJSON-fil" + +#~ msgid "Export to PNG" +#~ msgstr "Exportera till PNG" + +#~ msgid "_Share" +#~ msgstr "_Dela" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Senast kända plats och noggrannhet" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Senast kända plats (latitud och longitud i grader) och noggrannhet (i " +#~ "meter)." + +#~ msgid "Description of last known location of user." +#~ msgstr "Beskrivning av senast kända plats för användaren." + +#~ msgid "User set last known location" +#~ msgstr "Användaren angav senast kända plats." + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "Huruvida senast kända plats angavs manuellt av användaren." + +#~ msgid "I’m here!" +#~ msgstr "Jag är här!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "Till" + +#~ msgid "From" +#~ msgstr "Från" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "Satellit" diff --git a/po/ta.po b/po/ta.po new file mode 100644 index 00000000..67a3716c --- /dev/null +++ b/po/ta.po @@ -0,0 +1,173 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# அருள்ராஜன் அ லை , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-10-26 10:29+0000\n" +"PO-Revision-Date: 2013-10-27 09:31+0530\n" +"Last-Translator: அருள்ராஜன் அ லை \n" +"Language-Team: தமிழ் <>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:54 +#: ../src/mainWindow.js:341 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "வரைபடங்கள்" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ஓர் எளிய வரைபட பயன்பாடு" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "வரைபடங்கள்;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "சாளர அளவு" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "சாளர அளவு (அகலம் மற்றும் உயரம்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "சாளர அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "சாளர அமைவிடம் (X மற்றும் Y)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "சாளரம் பெரிதாக்கப்பட்டது" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "சாளரம் பெரிதாக்கப்பட்ட நிலை." + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் மற்றும் துல்லியம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "" +"கடைசியாகத் தெரிந்த அமைவிடம்(அட்சரேகை மற்றும் தீர்க்கரேகை பாகைகளில்) மற்றும் துல்லியம்" +"(மீட்டரில்)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "கடைசியாகத் தெரிந்த அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "கடைசியாகத் தெரிந்த பயனரின் அமைவிட தகவல்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "புவிக்குறீயீடு மூலமான தேடல் முடிவுகளின் அதிகபட்ச எண்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "கடைசியாக அமைக்கப்பட்ட பயனர் அமைவிடம்" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "கடைசியாகத் தெரிந்த அமைவிடம் பயனரால் அமைக்கப்பட்டதா?" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "இதைப் பற்றி" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "வெளியேறு" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "இங்கு உள்ளதென்ன?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "நான் இங்குள்ளேன்!" + +#: ../src/mainWindow.js:339 +msgid "translator-credits" +msgstr "translator-credits" + +#: ../src/mainWindow.js:342 +msgid "A map application for GNOME" +msgstr "GNOME-க்கான வரைபட பயன்பாடு" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "தெரு" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "செயற்கைக்கோள்" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:116 +msgid "Unknown" +msgstr "தெரியாதது" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:119 +msgid "Exact" +msgstr "மிகச்சரியான" + +#: ../src/mapLocation.js:123 +msgid " km²" +msgstr " கிமீ²" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"அமைவிடத்தின் துல்லியம்: %s" diff --git a/po/te.po b/po/te.po new file mode 100644 index 00000000..57f7f07f --- /dev/null +++ b/po/te.po @@ -0,0 +1,188 @@ +# Telugu translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Praveen Illa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-03-21 07:58+0000\n" +"PO-Revision-Date: 2014-03-21 22:26+0530\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" + +#: ../data/gnome-maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"పటాలు మీకు ప్రపంచవ్యాప్తంగా ఉన్న పటాలకు శీఘ్రంగా ప్రాప్యతను కల్పిస్తుంది. ఒక నగరం లేదా వీధి, లేదా ఒక " +"స్నేహితుడు కలుసుకునే ప్రదేశాన్ని ప్రవేశపెట్టి వెదకడం ద్వారా మీరు వెతుకుతున్న ప్రదేశాన్ని త్వరగా కనుగొనడంలో " +"సహకరిస్తుంది." + +#: ../data/gnome-maps.appdata.xml.in.h:2 +msgid "" +"
  • Search for country, region, city or street.
  • Search for specific " +"types of locations, such as “Pubs near Main Street, Boston” or “Wi-Fi Access " +"near Alexanderplatz, Berlin”.
  • " +msgstr "" +"
  • దేశము, ప్రాంతము, పట్టణం లేదా వీధి కోసం వెతకండి.
  • నిర్దిష్ట స్థానముల కోసం వెతకండి, " +"“Theatres near RTC X Roads, Hyderabad” లేదా “Wi-Fi Access near Ameerpet, " +"Hyderabad” వంటివి.
  • " + +#: ../data/gnome-maps.appdata.xml.in.h:3 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"పటాలు ప్రపంచవ్యాప్తంగా వేలమంది వ్యక్తుల సహకారంతో తయారుచేయబడిన ఓపెన్‌స్ట్రీట్‌మ్యాప్ డేటాబేసును వినియోగిస్తుంది." + +#. Translators: This is the program name. */ +#: ../data/gnome-maps.desktop.in.in.h:1 ../src/application.js:55 +#: ../src/mainWindow.js:300 ../src/main-window.ui.h:3 +msgid "Maps" +msgstr "పటాలు" + +#: ../data/gnome-maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "ఒక సరళ పటముల అనువర్తనం" + +#: ../data/gnome-maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "పటాలు;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "కిటికీ పరిమాణం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "కిటికీ పరిమాణం (వెడల్పు మరియు ఎత్తు)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "కిటికీ స్థానము" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "కిటికీ స్థానము (X మరియు Y)." + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "కిటికీ పెద్దగా చేయబడింది" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "కిటికీ పెద్దగా చేయబడిన స్థితి" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "చివరిగా తెలిసిన స్థానము మరియు ఖచ్ఛితత్వం" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "చివరిగా తెలిసిన స్థానము (అక్షాంశము, రేఖాంశము డిగ్రీలలో) మరియు ఖచ్ఛితత్వం (మీటర్లలో)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "చివరిగా తెలిసిన స్థానము యొక్క వివరణ" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "చివరిగా తెలిసిన స్థాన వాడుకరి యొక్క వివరణ." + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "జియోకోడ్ శోధన నుండి గరిష్ట శోధన ఫలితాల సంఖ్య" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "చివరిగా తెలిసిన స్థానమును వాడుకరి అమర్చు" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "చివరిగా తెలిసిన స్థానమును మానవీయంగా వాడుకరి అమర్చాలా వద్దా." + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "భద్రపరుచాల్సిన ఇటీవలి ప్రదేశాల సంఖ్య." + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "భద్రపరుచాల్సిన ఇటీవలి సందర్శించిన ప్రదేశాల సంఖ్య." + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "గురించి" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "నిష్క్రమించు" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "ఇక్కడ ఏమి ఉంది?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "ఇక్కడ ఉన్నాను!" + +#: ../src/mainWindow.js:298 +msgid "translator-credits" +msgstr "Praveen Illa , 2013, 2014." + +#: ../src/mainWindow.js:301 +msgid "A map application for GNOME" +msgstr "గ్నోమ్ కొరకు రూపొందించిన పటము అనువర్తనం" + +#: ../src/main-window.ui.h:1 +msgid "Street" +msgstr "వీధి" + +#: ../src/main-window.ui.h:2 +msgid "Satellite" +msgstr "ఉపగ్రహం" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:164 +msgid "Unknown" +msgstr "తెలియదు" + +#. Translators: Accuracy of user location information */ +#: ../src/mapLocation.js:167 +msgid "Exact" +msgstr "ఖచ్ఛితం" + +#: ../src/mapLocation.js:177 +msgid " km2" +msgstr " కిమీ2" + +#. Translators: Showing name of place where user currently is and +#. accuracy of this information (which is translated +#. separately) +#. */ +#: ../src/userLocation.js:62 +#, javascript-format +msgid "" +"%s\n" +"Position Accuracy: %s" +msgstr "" +"%s\n" +"స్థానము ఖచ్ఛితత్వం: %s" + +#~ msgid " km²" +#~ msgstr "కిమీ²" diff --git a/po/tg.po b/po/tg.po new file mode 100644 index 00000000..b11d4eee --- /dev/null +++ b/po/tg.po @@ -0,0 +1,678 @@ +# Tajik translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# Victor Ibragimov , 2013, 2014, 2015 +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2015-03-16 19:54+0000\n" +"PO-Revision-Date: 2015-03-17 09:59+0500\n" +"Last-Translator: Victor Ibragimov \n" +"Language-Team: Tajik \n" +"Language: tg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.5\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Харитаҳо барои шумо ба тамоми ҳаритаҳои ҷаҳон имкони дастраси зуд медиҳад. " +"Ин барнома ба шумо инчунин имкон медиҳад, ки тавонед шаҳр ё кӯчаи " +"мехостагиро ёфт кунед ё барои бо дӯстон фохӯрдан маконро муайян кунед." + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Харитаҳо пойгоҳи иттилоотии OpenStreetMap-ро, ки бо миллионҳо одам аз тамоми " +"ҷаҳон ташкил шудааст, истифода мебарад." + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +#| msgid "" +#| "
  • Search for country, region, city or street.
  • Search for " +#| "specific types of locations, such as “Pubs near Main Street, Boston” or " +#| "“Wi-Fi Access near Alexanderplatz, Berlin”.
  • " +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"Шумо ҳатто метавонед навъи маконҳои махсусро, монанди “Қаҳвахонаҳо дар назди " +"хиёбони Рудакӣ” ё “Меҳмонхонаҳо дар назди хиёбони Рудакӣ, Душанбе” ҷустуҷӯ " +"кунед." + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.h:1 ../data/ui/main-window.ui.h:1 +#: ../src/application.js:78 ../src/mainWindow.js:367 +msgid "Maps" +msgstr "Харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:2 +msgid "A simple maps application" +msgstr "Барномаи оддии харитаҳо" + +#: ../data/org.gnome.Maps.desktop.in.h:3 +msgid "Maps;" +msgstr "Харитаҳо;" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "Андозаи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "Андозаи равзана (бар ва баландӣ)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "Мавқеи равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "Мавқеи равзана (X ва Y)." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "Равзана дар ҳадди аксар" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "Вазъияти ҳадди акcаpёбии равзана" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:7 +msgid "Maximum number of search results" +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:8 +msgid "Maximum number of search results from geocode search." +msgstr "Миқдори зиёдтарини натиҷаҳои ҷустуҷӯ аз ҷустуҷӯи рамзи ҷуғрофӣ." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:9 +msgid "Number of recent places to store" +msgstr "Миқдори маконҳои охирин барои нигоҳ доштан" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:10 +msgid "Number of recently visited places to store." +msgstr "Миқдори маконҳои кушодашудаи охирин барои нигоҳ доштан." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:11 +msgid "Facebook check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Facebook" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:12 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Facebook. Қиматҳои " +"имконпазир: ҲАР ЯК КАС, ДӮСТОНИ_ДӮСТОН, ҲАМАИ_ДӮСТОН ё ХУД." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:13 +msgid "Foursquare check-in privacy setting" +msgstr "Танзимоти махфияти бақайдгирии Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:14 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Танзимоти махфияти бақайдгирии истифодашудаи охирин дар Foursquare. Қиматҳои " +"имконпазир: иҷтимоӣ, пайравон ё махфият." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:15 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Пахшкунии бақайдгирии Facebook дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:16 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Facebook-и марбут ба ҳисоби Foursquare." + +#: ../data/org.gnome.Maps.gschema.xml.in.h:17 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Пахшкунии бақайдгирии Twitter дар Foursquare" + +#: ../data/org.gnome.Maps.gschema.xml.in.h:18 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Муайянкунии Foursquare барои пахшкунии бақайдгирӣ ҳамчун паём дар ҳисоби " +"Twitter-и марбут ба ҳисоби Foursquare." + +#: ../data/ui/app-menu.ui.h:1 +msgid "About" +msgstr "Дар бораи барнома" + +#: ../data/ui/app-menu.ui.h:2 +msgid "Quit" +msgstr "Хуруҷ" + +#: ../data/ui/check-in-dialog.ui.h:1 +msgid "Visibility" +msgstr "Қобили намоиш" + +#: ../data/ui/check-in-dialog.ui.h:2 +msgid "Post on Facebook" +msgstr "Интишор дар Facebook" + +#: ../data/ui/check-in-dialog.ui.h:3 +msgid "Post on Twitter" +msgstr "Интишор дар Twitter" + +#: ../data/ui/check-in-dialog.ui.h:4 ../data/ui/send-to-dialog.ui.h:2 +msgid "_Cancel" +msgstr "_Бекор кардан" + +#. Translators: Check in is used as a verb +#: ../data/ui/check-in-dialog.ui.h:5 ../data/ui/map-bubble.ui.h:5 +msgid "C_heck in" +msgstr "_Бақайдгирӣ" + +#: ../data/ui/check-in-dialog.ui.h:6 +msgid "Everyone" +msgstr "Ҳар як кас" + +#: ../data/ui/check-in-dialog.ui.h:7 +msgid "Friends of friends" +msgstr "Дӯстони дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:8 +msgid "Just friends" +msgstr "Танҳо дӯстон" + +#: ../data/ui/check-in-dialog.ui.h:9 +msgid "Just me" +msgstr "Танҳо ман" + +#: ../data/ui/check-in-dialog.ui.h:10 +msgid "Public" +msgstr "Ҷамъиятӣ" + +#: ../data/ui/check-in-dialog.ui.h:11 +msgid "Followers" +msgstr "Пайравон" + +#: ../data/ui/check-in-dialog.ui.h:12 +msgid "Private" +msgstr "Махфӣ" + +#: ../data/ui/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "Дар он ҷо чист?" + +#: ../data/ui/location-service-notification.ui.h:1 +msgid "Turn on location services to find your location" +msgstr "Барои ёфтани ҷойгиршавии худ, хидматҳои ҷойгиршавиро фаъол кунед" + +#: ../data/ui/location-service-notification.ui.h:2 +msgid "Location Settings" +msgstr "Танзимоти ҷойгиршавӣ" + +#: ../data/ui/main-window.ui.h:2 +msgid "Go to current location" +msgstr "Гузариш ба ҷойгиршавии ҷорӣ" + +#: ../data/ui/main-window.ui.h:3 +msgid "Choose map type" +msgstr "Интихоби намуди харита" + +#: ../data/ui/main-window.ui.h:4 +msgid "Toggle route planner" +msgstr "Фаъолсозии нақшакаши масирҳо" + +#: ../data/ui/main-window.ui.h:5 +msgid "Toggle favorites" +msgstr "Фаъолсозии баргузидаҳо" + +#: ../data/ui/main-window.ui.h:6 +msgid "Maps is offline!" +msgstr "Харитаҳо дар офлайн мебошанд!" + +#: ../data/ui/main-window.ui.h:7 +msgid "" +"Maps need an active internet connection to function properly, but one can't " +"be found." +msgstr "" +"Барои кори комил ба Харитаҳо пайвасти интернети фаъол лозим аст, вале " +"пайваст ёфт нашуд." + +#: ../data/ui/main-window.ui.h:8 +msgid "Check your connection and proxy settings." +msgstr "Танзимоти прокси ва пайвасти худро санҷед." + +#: ../data/ui/map-bubble.ui.h:1 +msgid "Add to new route" +msgstr "Илова кардан ба масири нав" + +#: ../data/ui/map-bubble.ui.h:2 +msgid "Open with another application" +msgstr "Кушодан бо барномаи дигар" + +#: ../data/ui/map-bubble.ui.h:3 +msgid "Mark as favorite" +msgstr "Қайд кардан ҳамчун баргузида" + +#: ../data/ui/map-bubble.ui.h:6 +msgid "Check in here" +msgstr "Инҷо ба қайд гиред" + +#: ../data/ui/search-popup.ui.h:1 +msgid "Press enter to search" +msgstr "Барои ҷустуҷӯ Enter-ро пахш кунед" + +#: ../data/ui/send-to-dialog.ui.h:1 +msgid "Open location" +msgstr "Кушодани ҷойгиршавӣ" + +#: ../data/ui/send-to-dialog.ui.h:3 +msgid "_Open" +msgstr "_Кушодан" + +#: ../data/ui/sidebar.ui.h:1 +msgid "Route search by GraphHopper" +msgstr "Ҷустуҷӯи масир тавассути GraphHopper" + +#: ../data/ui/social-place-more-results-row.ui.h:1 +msgid "Show more results" +msgstr "Намоиш додани натиҷаҳи дигар" + +#: ../data/ui/user-location-bubble.ui.h:1 ../src/geoclue.js:208 +msgid "Current location" +msgstr "Ҷойгиршавии ҷорӣ" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../data/ui/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "Саҳеҳӣ: %s" + +#. Translators: %s is the place name that user wanted to check-in */ +#: ../src/checkIn.js:136 +#, javascript-format +msgid "Cannot find \"%s\" in the social service" +msgstr "\"%s\" дар хидмати иҷтимоӣ ёфт нашуд" + +#: ../src/checkIn.js:138 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Барои бақайдгирии ин макон, ҷои мувофиқ ёфт нашуд" + +#: ../src/checkIn.js:142 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Муҳлати маълумоти корбар ба анҷом расид, лутфан барои ворид шудан ва фаъол " +"кардани ин ҳисоб, ба Ҳисобҳои онлайн ворид шавед" + +#: ../src/checkIn.js:154 ../src/checkInDialog.js:290 +msgid "An error has occurred" +msgstr "Хато ба амал омад" + +#: ../src/checkInDialog.js:177 +msgid "Select an account" +msgstr "Ҳисоберо интихоб кунед" + +#: ../src/checkInDialog.js:182 ../src/checkInDialog.js:254 +msgid "Loading" +msgstr "Дар ҳоли боргирӣ" + +#: ../src/checkInDialog.js:206 +msgid "Select a place" +msgstr "Маконеро интихоб кунед" + +#: ../src/checkInDialog.js:211 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Facebook ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#: ../src/checkInDialog.js:213 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Ягон макон барои бақайдгирӣ дар Foursquare ёфт нашуд. Лутфан, маконеро аз " +"рӯйхат интихоб намоед." + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:228 +#, javascript-format +msgid "Check in to %s" +msgstr "Бақайдгирӣ ба %s" + +#. Translators: %s is the name of the place to check in. +#. */ +#: ../src/checkInDialog.js:238 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Барои бақайдгирӣ ба %s, паёми интихобиро нависед." + +#: ../src/mainWindow.js:315 +msgid "Failed to connect to location service" +msgstr "Пайваст ба хидмати ҷойгиршавӣ иҷро нашуд" + +#: ../src/mainWindow.js:320 +msgid "Position not found" +msgstr "Мавқеъ ёфт нашуд" + +#: ../src/mainWindow.js:365 +msgid "translator-credits" +msgstr "Victor Ibragimov, victor.ibragimov@gmail.com" + +#: ../src/mainWindow.js:368 +msgid "A map application for GNOME" +msgstr "Барномаи харитаҳо барои GNOME" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. */ +#: ../src/place.js:121 +msgid "yes" +msgstr "ҳа" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. */ +#: ../src/place.js:128 +msgid "limited" +msgstr "маҳдуд" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. */ +#: ../src/place.js:134 +msgid "no" +msgstr "не" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. */ +#: ../src/place.js:141 +msgid "designated" +msgstr "муайяншуда" + +#: ../src/routeService.js:70 +msgid "No route found." +msgstr "Ягон масир ёфт нашуд" + +#: ../src/routeService.js:77 +msgid "Route request failed." +msgstr "Дархости масир қатъ шуд." + +#: ../src/routeService.js:148 +msgid "Start!" +msgstr "Оғоз!" + +#: ../src/placeBubble.js:102 +#, javascript-format +msgid "Postal code: %s" +msgstr "Рамзи почта: %s" + +#: ../src/placeBubble.js:104 +#, javascript-format +msgid "Country code: %s" +msgstr "Рамзи кишвар: %s" + +#: ../src/placeBubble.js:113 +#, javascript-format +msgid "Population: %s" +msgstr "Аҳолӣ: %s" + +#: ../src/placeBubble.js:116 +#, javascript-format +msgid "Opening hours: %s" +msgstr "Соатҳои кушоиш: %s" + +#: ../src/placeBubble.js:121 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: ../src/placeBubble.js:126 +#, javascript-format +msgid "Wheelchair access: %s" +msgstr "Дастрасӣ бо аробаи маъюбӣ: %s" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" */ +#: ../src/sidebar.js:217 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Вақти тахминӣ: %s" + +#: ../src/translations.js:56 ../src/translations.js:58 +msgid "around the clock" +msgstr "дар гирди соат" + +#: ../src/translations.js:60 +msgid "from sunrise to sunset" +msgstr "аз тулӯъ то шафақ" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:79 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. */ +#: ../src/translations.js:91 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. */ +#: ../src/translations.js:122 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:154 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. */ +#: ../src/translations.js:168 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: ../src/translations.js:187 +msgid "every day" +msgstr "ҳар рӯз" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. */ +#: ../src/translations.js:199 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: ../src/translations.js:210 +msgid "public holidays" +msgstr "идҳои ҷамъиятӣ" + +#: ../src/translations.js:212 +msgid "school holidays" +msgstr "идҳои мактабӣ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:252 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: ../src/translations.js:266 +msgid "not open" +msgstr "кушода нест" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. */ +#: ../src/translations.js:281 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:257 +msgid "Unknown" +msgstr "Номаълум" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:260 +msgid "Exact" +msgstr "Дақиқ" + +#: ../src/utils.js:355 +#, javascript-format +msgid "%f h" +msgstr "%f соат" + +#: ../src/utils.js:357 +#, javascript-format +msgid "%f min" +msgstr "%f дақиқа" + +#: ../src/utils.js:359 +#, javascript-format +msgid "%f s" +msgstr "%f сония" + +#. Translators: This is a distance measured in kilometers */ +#: ../src/utils.js:370 +#, javascript-format +msgid "%f km" +msgstr "%f км" + +#. Translators: This is a distance measured in meters */ +#: ../src/utils.js:373 +#, javascript-format +msgid "%f m" +msgstr "%f м" + +#. Translators: This is a distance measured in miles */ +#: ../src/utils.js:381 +#, javascript-format +msgid "%f mi" +msgstr "%f мил" + +#. Translators: This is a distance measured in feet */ +#: ../src/utils.js:384 +#, javascript-format +msgid "%f ft" +msgstr "%f фут" + +#~ msgid "Last known location and accuracy" +#~ msgstr "Ҷойгиршавии охирин ва дақиқӣ" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "" +#~ "Ҷойгиршавии охирин (арз ва тӯл дар дараҷаҳо) ва дақиқӣ (дар метрҳо)." + +#~ msgid "Description of last known location" +#~ msgstr "Тавсифи ҷойгиршавии охирин" + +#~ msgid "Description of last known location of user." +#~ msgstr "Тавсифи ҷойгиршавии охирини корбар." + +#~ msgid "User set last known location" +#~ msgstr "Ҷойгиршавии охирини таъиншудаи корбар" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "" +#~ "Интихоби ҷойгиршавии охирини муайяншуда ба таври дастӣ аз ҷониби корбар." + +#~ msgid "I’m here!" +#~ msgstr "Ман дар ҳамон ҷоям!" + +#~ msgid "Street" +#~ msgstr "Кӯча" + +#~ msgid "Satellite" +#~ msgstr "Радиф" + +#~ msgid " km2" +#~ msgstr " км2" + +#~ msgid " km²" +#~ msgstr " км²" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 00000000..b99f7f1b --- /dev/null +++ b/po/tr.po @@ -0,0 +1,2099 @@ +# Turkish translation for gnome-maps. +# Copyright (C) 2013-20212021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# Gökhan Gurbetoğlu , 2014, 2015. +# Osman Karagöz , 2017. +# Çağatay Yiğit Şahin , 2017. +# Furkan Ahmet Kara , 2018. +# Muhammet Kara , 2013, 2014, 2015, 2016, 2018. +# Ahmet Elgun , 2019. +# Sabri Ünal , 2013, 2017, 2018, 2020, 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-18 09:13+0000\n" +"PO-Revision-Date: 2021-09-19 11:52+0300\n" +"Last-Translator: Emin Tufan Çetin \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.0\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME Haritalar" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Dünya genelindeki yerleri bul" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Haritalar, dünya çapındaki haritalara hızla erişmenizi sağlar. Şehir ya da " +"sokak araması yoluyla aramakta olduğunuz yeri hızla bulmanızı veya " +"arkadaşınızla buluşacağınız yeri belirlemenizi sağlar." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Haritalar, küresel çapta yüzbinlerce insanca hazırlanan OpenStreetMap ile " +"ortak veri tabanını kullanır." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "GNOME Projesi" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Haritalar" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Basit harita uygulaması" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Haritalar;Maps;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Konumunuzun haritada gösterilmesini sağlar." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "son görüntülenen konum" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Son görüntülenen konumun koordinatları." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "yakınlaştırma" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Yakınlaştırma düzeyi" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Harita türü" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Görüntülenecek haritanın türü (sokak, uydu, vb.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Pencere boyutu" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Pencere boyutu (genişlik ve yükseklik)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Pencere konumu" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Pencere konumu (X ve Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Pencere büyültüldüğünde" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Pencerenin büyütülme durumu" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Azami arama sonucu sayısı" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Geocode aramasından azami arama sonucu sayısı." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Saklanacak son konumların sayısı" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen yerlerin sayısı." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Saklanacak son rotaların sayısı" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Saklanacak yakın zamanda ziyaret edilen rotaların sayısı." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare yer bildirimi gizlilik ayarı" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Son kullanılan Foursquare yer bildirimi ayarı. Olası değerler: herkese açık, " +"takipçiler veya gizli." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare yer bildirimi için Facebook yayını" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Facebook " +"hesabında gönderi olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare yer bildirimi için Twitter yayını" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Foursquare’in yer bildirimlerini, Foursquare hesabına bağlı olan Twitter " +"hesabında tweet olarak yayınlayıp yayınlamayacağını belirtir." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap kullanıcı adı ya da e-posta adresi" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Kullanıcının OpenStreetMap verilerini düzenlemek için oturup açıp açmamış " +"olduğunu belirtir." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Yönlendirme için son kullanılan ulaşım şekli" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Gece kipi" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Uygulamanın gece kipinde olup olmadığı." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Hibrit uydu döşemelerini kullan" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "Uydu döşemelerinin hibrit biçim (etiketli) kullanıp kullanmayacağı." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Görünürlük" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Facebook’a Gönder" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Twitter’a Gönder" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_İptal" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Yer bildirimi" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Herkese açık" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Takipçiler" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Gizli" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Buradan rota" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Ara durak ekle" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Buraya rota" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Burada ne var?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Konumu Kopyala" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Görünümü dışa aktar" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "Dışa _Aktar" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Rota ve imleçleri içer" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Harita türü seç" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Uzaklaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Yakınlaştırın" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Rotayı Yazdır" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Gözdeleri aç/kapat" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Genel" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Kısayolları göster" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Ara" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Rota planlayıcıyı aç/kapat" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Rotayı yazdır" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Çıkış" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Harita Görünümü" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Yakınlaş" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Uzaklaş" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Ölçeği değiştir" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Geçerli konuma git" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Sokak görünümüne geç" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Kuş bakışı görünüme geç" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Biçim katmanını aç" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Etiketleri Göster" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Biçim Katmanını Aç…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Konumunuzu bulmak için konum hizmetlerini etkinleştirin" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "İptal" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Konum Ayarları" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Gece Kipi" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "OpenStreetMap Hesabını Ayarla" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Resim Olarak Dışarıya Aktar" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Haritalar Hakkında" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Ana menüyü aç" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Haritalar çevrim dışı!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Haritaların çalışması için kullanılabilir internet bağlantısı gerekli, ancak " +"bağlantı yok." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Bağlantı ve vekil sunucu ayarlarınızı denetleyin." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap Hesabı" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Haritaları düzenlemek için oturum " +"açın" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"OpenStreetMap hesabı kullanarak\n" +"haritayı iyileştirmeye yardım edin." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "E-posta" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Parola" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Kaydol" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Oturum Aç" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Üzgünüm, işe yaramadı. Lütfen yeniden deneyin ya da parolanızı sıfırlamak " +"için\n" +"OpenStreetMap’i ziyaret edin." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Doğrulama kodu eşleşmedi, lütfen yeniden deneyin." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Yukarıda gösterilen doğrulama kodunu girin" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Doğrula" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Oturum Açıldı" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "OpenStreetMap hesabınız etkin." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Oturumu Kapat" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Cadde/Sokak" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Bina numarası" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Posta kodu" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Şehir" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Tür" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Yok" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Alan Ekle" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Yorum" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Harita değişiklikleri, OpenStreetMap verilerini\n" +"kullanan tüm haritalarda görünür olacaktır." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Sok Kullanılan" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "İleri" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Hiçbir sonuç bulunamadı" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Hata oluştu" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Rota sıralamasını değiştirmek için sürükle" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Konum Aç" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Kopyala" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Gönder…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Yer Bildirimi…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Biçim Katmanını Aç" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Aç" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Görünürlüğü aç/kapat" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "GraphHopper ile rota arama" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Toplu taşımada rota yönergeleri üçüncü taraf hizmetleri tarafından " +"sağlanır.\n" +"GNOME gösterilen rota yönergelerinin ve çizelgelerin doğruluğunu garanti " +"edemez.\n" +"Bazı sağlayıcıların var olan tüm taşıma kiplerini içermeyebileceğini " +"unutmayın; \n" +"ör. ulusal bir sağlayıcı havayollarını içermeyebilir ve yerel bir sağlayıcı " +"bölgesel trenleri kaçırabilir.\n" +"Adlar ve markalar uygulanabilir olduğunda tescilli marka olarak " +"değerlendirilmelidir." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Daha çok sonuç göster" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ara durakları ve bilgiyi gizle" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Ara durakları ve bilgiyi göster" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Şimdi Çık" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "İtibaren Çık" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Öncesinde Var" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Göster" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Otobüsler" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Tramvaylar" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Trenler" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Metrolar" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Feribotlar" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Uçaklar" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Konum paylaş" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Yeni rotaya ekle" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Yönergeler" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Gözde olarak imle" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "OpenStreetMap’te Düzenle" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Konum eklemek için yakınlaştırın!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Yakınlaştır" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Dizinde döşeme yapısı bulunamadı" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "XML belgesini ayrıştırma başarısız" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Gerekli öznitelikler eksik" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "OSM ögesi bulunamadı" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Yerel döşeme dizini yapısını barındıran yol" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Yerel döşeme dizini için döşeme boyutu" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Programın sürümünü göster" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ağ uygunluğunu göz ardı et" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[DOSYA…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Hesap seç" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Yükleniyor" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Yer seç" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Haritalar Foursquare ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +"Lütfen bu listeden seçin." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "%s için yer bildiriminde bulun" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "%s’den yer bildiriminde bulunmak için isteğe bağlı ileti girin." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Sosyal hizmette “%s” bulunamıyor" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Bu konumda yer bildirimi yapılabilecek uygun yer bulunamıyor" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Oturumun süresi doldu, giriş yapıp bu hesabı etkinleştirmek için lütfen " +"Çevrim İçi Hesapları açın" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Burada bir şey bulunamadı!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Konum haritaya eklendi, arama sonuçlarında haritada gösterilmesi biraz zaman " +"alabilir." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f konumunda haritalar.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Dosya sistemi salt okunur" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Oraya kaydetmek için gerekli izniniz yok" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Dizin yok" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Dosya adı belirtilmedi" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Görüntü aktarılamıyor" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Geçerli Konum" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "geçersiz koordinat" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "ayrıştırma hatası" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "bilinmeyen geometri" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Rota isteği başarısız oldu." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Hiçbir rota bulunamadı." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Başla!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Tüm Katman Dosyaları" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Konum hizmetine bağlanma başarısız oldu" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"Muhammet Kara \n" +"Emin Tufan Çetin \n" +"Gökhan Gurbetoğlu \n" +"Osman Karagöz \n" +"Çağatay Yiğit Şahin \n" +"Furkan Ahmet Kara \n" +"Ahmet Elgun \n" +"Sabri Ünal " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "GNOME için harita uygulaması" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Telif Hakkı © 2011 – 2021 Red Hat, Inc. ve GNOME Haritalar yazarları" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "%s ve katkıcılar tarafından harita verisi" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Harita döşemeleri %s tarafından sağlanmıştır" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Arama %s tarafından %s kullanılarak sağlanmıştır" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Katman açma başarısız oldu" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Sürdürmek ister misiniz?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Toplam boyutu %s MB olan dosyaları açmak üzeresiniz. Bunun yüklenmesi biraz " +"sürebilir" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Dosya türü desteklenmiyor" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "GeoURI açma başarısız" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Hatalı kullanıcı adı veya parola" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Başarılı" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Geçersiz istek" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Nesne bulunamadı" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Çakışma; nesneyi az önce başkası değiştirdi" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Nesne silindi" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Yol ya da ilişki, var olmayan alt nesneye başvuruyor" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Ad" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Resmi ad. Genellikle tabelalarda yer alan addır." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Adres" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Web sitesi" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Bu geçerli bir URL değil. http:// veya https:// içerdiğinden emin olun." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Resmi web sitesi. URL adresinin en temel halini kullanmaya çalışın. Örn. " +"http://ornek.com/index.html yerine http://ornek.com." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Telefon" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Telefon numarası. + imiyle başlayan uluslararası biçimi kullanın. Özellikle " +"kişisel telefon numaraları konusunda, yerel kişisel gizlilik yasalarına " +"dikkat edin." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "E-posta" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Bu geçerli bir e-posta adresi değil. mailto: iletişim kuralı ön ekini " +"içermediğinden emin olun." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Sorular için e-posta adresi. Yalnızca halka açık kullanılacak e-posta " +"adreslerini ekleyin." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Vikipedi" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Kullanılan biçim, dil kodu ve makale başlığı içermeli “tr:Makale başlığı” " +"gibi." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Açılış saatleri" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Biçimdeki yardım için etiketteki bağlantıyı gör." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Nüfus" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Yükseklik" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "" +"Bir noktanın metre türünden yükseltisi (deniz seviyesinden yüksekliği)." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Tekerlekli sandalye erişimi" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Evet" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Hayır" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Sınırlı" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Belirlenmiş" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "İnternet erişimi" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Kablosuz" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Kablolu" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Terminal" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Hizmet" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Al Götür" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Yalnızca" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Din" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Animizm" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahâîlik" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Budizm" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Kaodaizm" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Hristiyanlık" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Konfüçyüsçülük" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Hinduizm" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Caynizm" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Musevilik" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "İslam" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Çoklu Dinler" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Paganizm" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafaryanizm" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Scientology" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Şinto" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Sihizm" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Ruhiyatçılık" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Taoculuk" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Üniteryen Üniversalizm" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Vudu" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yezidilik" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Zoroastrianizm" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Tuvaletler" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Not" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Bir ögeyle ilgili bariz olmayan bilgiler, yazarın onu yaratırkenki niyeti " +"veya ileriki geliştirmeler için ipuçlarıyla ilgili diğer haritacıları " +"bilgilendirmek için kullanılan bilgiler." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "OpenStreetMap’e Ekle" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Tür Seç" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Bitti" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Adsız yer" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Geo URI ayrıştırma başarısız" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Koordinatlar" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Doğruluk" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Doğruluk: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Telefon numarası" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Al götür sunar" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Al götür sunmaz" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Yalnızca al götür sunar" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Halka açık internet erişimi" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "İnternet erişimi yok" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Halka açık Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Kablolu internet erişimi" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Kullanıma hazır bilgisayar var" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "İnternet desteği var" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Tuvalet yok" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Tuvalet var" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Tekerlekli sandalye erişimli" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Kısıtlı tekerlekli sandalye erişimi" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Tekerlekli sandalye erişimi yok" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Tekerlekli sandalye kullanıcılarına göre tasarlanmış" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "Deniz düzeyinin %s altında" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Deniz düzeyinde" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Din:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Yer OpenStreetMap’te bulunamadı" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URLdeki koordinatlar geçersiz" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL desteklenmiyor" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "%s’ten %s’e" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Harita parçası yazmak için yükleniyor" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Eğer bu uzun zaman alırsa yazdırmaktan vazgeçebilirsiniz" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Yazdırmayı iptal et" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Ara konum ekle" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Ara konumu kaldır" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Rotayı tersine çevir" + +# ilk s şehir, ikinci s uygulama +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "%s şehrini %s uygulamasına ekle" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "URI açma başarısız oldu" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "%s ile aç" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "dosya yükleme başarısız" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Tahmini süre: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Rota yönergelerini %s sağlamıştır" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "%s’te başla" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Başla" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "%s yürü" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "%s’te var" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Var" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Yürüme yönergelerini göster" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Yürüme yönergelerini gizle" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Daha erken alternatifleri yükle" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Daha geç alternatifleri yükle" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Daha erken alternatif bulunamadı." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Daha geç alternatif bulunamadı." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Bu rota için tarife verisi bulunamadı." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Bu rota için sağlayıcı bulunamadı." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s dakika" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s saat" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s saat" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Gün boyu" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Gün doğumundan gün batımına" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Her gün" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Resmi tatiller" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Okul tatilleri" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "açık değil" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Bilinmiyor" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Tam" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s s" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s s %s dak" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s dak" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s sn" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s mi" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Bu uzantı son varışı desteklemiyor" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "%s üstünde devam et" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Devam et" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s üstünde sola dön" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Sola dön" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s üstünde hafifçe sola dön" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Sola hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s üstünde sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Sola keskin dön" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s üstünde sağa dön" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Sağa dön" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s üstünde hafifçe sağa dön" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Sağa hafifçe dön" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s üstünde sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Sağa keskin dön" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Dönel kavşakta %s. çıkışa gidin" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Dönel kavşakta %s. çıkıştan çıkın" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Dönel kavşağı kullanın" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Asansörü kullanın ve %s. katta inin" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Asansörü kullanın" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s üstünde sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Sola u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s üstünde sağa u dönüşü yapın" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Sağa u dönüşü yapın" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Üstelik “Kızılay, Ankara yakınındaki Lokantalar” ya da “Ulus, Ankara " +#~ "yakınındaki Oteller” gibi belirli türde yerleri bile arayabilirsiniz." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook yer bildirimi gizlilik ayarı" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Son kullanılan Facebook yer bildirimi gizlilik ayarı. Olası değerler: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." + +#~ msgid "Everyone" +#~ msgstr "Herkes" + +#~ msgid "Friends of friends" +#~ msgstr "Arkadaşların arkadaşları" + +#~ msgid "Just friends" +#~ msgstr "Yalnızca arkadaşlar" + +#~ msgid "Just me" +#~ msgstr "Yalnızca ben" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Haritalar Facebook ile yer bildiriminde bulunabilmek için yeri bulamıyor. " +#~ "Lütfen bu listeden seçin." + +#~ msgid "Find a Route" +#~ msgstr "Rota Bul" + +#~ msgid "Check in here" +#~ msgstr "Buradan yer bildirimi yap" + +#~ msgid "Show more information" +#~ msgstr "Daha çok bilgi göster" + +#~ msgid "Population:" +#~ msgstr "Nüfus:" + +#~ msgid "Altitude:" +#~ msgstr "Rakım:" + +#~ msgid "Opening hours:" +#~ msgstr "Açılış saatleri:" + +#~ msgid "Internet access:" +#~ msgstr "İnternet erişimi:" + +#~ msgid "Toilets:" +#~ msgstr "Tuvaletler:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Tekerlekli sandalye erişimi:" + +#~ msgid "Phone:" +#~ msgstr "Telefon:" + +#~ msgid "yes" +#~ msgstr "evet" + +#~ msgid "limited" +#~ msgstr "sınırlı" + +#~ msgid "no" +#~ msgstr "hayır" + +#~ msgid "designated" +#~ msgstr "özel olarak belirlenmiş" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URLsi geçersiz" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "kablolu" + +#~ msgid "terminal" +#~ msgstr "terminal" + +#~ msgid "service" +#~ msgstr "hizmet" + +#~ msgid "Primary menu" +#~ msgstr "Ana menü" + +#~ msgid "Don’t have an account?" +#~ msgstr "Hesabınız yok mu?" + +#~ msgid "%f h" +#~ msgstr "%f sa" + +#~ msgid "%f min" +#~ msgstr "%f dk" + +#~ msgid "%f s" +#~ msgstr "%f sn" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "OpenTripPlanner ile rota arama" + +#~ msgid "Add destination" +#~ msgstr "Hedef ekle" + +#~ msgid "Open with another application" +#~ msgstr "Başka bir uygulamayla birlikte aç" + +#~ msgid "Press enter to search" +#~ msgstr "Aramak için Enter’a basın" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "Çıkış" + +#~ msgid "OK" +#~ msgstr "Tamam" + +#~| msgctxt "shortcut window" +#~| msgid "Open shape layer" +#~ msgid "Open Shape Layer…" +#~ msgstr "Şekil Katmanını Aç…" + +#~ msgid "Load Map Layer" +#~ msgstr "Harita Katmanı Yükle" + +#~ msgid "Open Layer" +#~ msgstr "Katman Aç" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f mi" + +#~ msgid "%f ft" +#~ msgstr "%f ft" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "GeoJSON dosya ayrıştırması başarısız" + +#~ msgid "Country code: %s" +#~ msgstr "Ülke kodu: %s" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 00000000..798c019f --- /dev/null +++ b/po/uk.po @@ -0,0 +1,2034 @@ +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Daniel Korostil , 2013, 2014, 2015, 2016, 2017. +# Yuri Chornoivan , 2020, 2021. +msgid "" +msgstr "" +"Project-Id-Version: 1.0\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-08-17 09:38+0300\n" +"Last-Translator: Yuri Chornoivan \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 20.12.0\n" +"X-Project-Style: gnome\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Карти GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Знаходити місця по світу" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Карти надають швидкий доступ до карт по всьому світу. Вони дозволяють швидко " +"знайти місце, яке ви шукаєте, через пошук міста, вулиці, ба визначити місце " +"для зустрічі з друзями." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Карти використовують колективну базу даних OpenStreetMap, яку роблять тисячі " +"осіб по всій планеті." + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "Проєкт GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Карти" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Проста програма для роботи з картами" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Карти;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Дозволити вашому перебуванню показуватись на карті." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "останнє переглянуте місце" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Координати останнього переглянутого місця." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "масштаб" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Масштабування" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Тип карти" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Тип карти, яку слід показати (вулиці, супутникова тощо)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Розмір вікна" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Розмір вікна (ширина і висота)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Положення вікна" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Положення вікна (X і Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Вікно розгорнуто" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Стан розгорнутого вікна" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Максимальна кількість пошукових результатів" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Максимальна кількість пошукових результатів з пошуку geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Кількість недавно відвіданих місць, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Кількість недавно відвіданих місць, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Кількість недавніх маршрутів, які зберігати" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Кількість недавно відвіданих маршрутів, які слід зберігати." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Параметри конфіденційності Foursquare щодо відзначення" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Останній використаний параметр конфіденційності Foursquare щодо відзначення. " +"Допустимі значення: public, followers або private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Транслювання відзначення Foursquare через Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Facebook, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Транслювання відзначення Foursquare через Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Показує, чи слід Foursquare транслювати відзначення як допис на обліковому " +"записі Twitter, який зв'язано з обліковим записом Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Користувач або поштова скринька у OpenStreetMap" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "" +"Показує, чи користувач увійшов у систему OpenStreetMap для редагування даних." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Останній використаний тип транспорту для побудови маршрутів" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Нічний режим" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Чи програма в нічному режимі." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Використовувати гібридні супутникові плитки" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Чи слід використовувати гібридний стиль (із мітками) для супутникових плиток." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Видимість" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Допис на Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Допис на Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "_Скасувати" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "Від_значитись" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Відкрито" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Послідовники" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Особисто" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Маршрут звідси" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Додати проміжний пункт маршруту" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Маршрут сюди" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Що тут?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Копіювати місцевість" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Експортувати перегляд" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Експортувати" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Врахувати маршрут і помітки" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Вибрати тип карти" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Зменшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Збільшити" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "Надрукувати маршрут" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Змінити улюблені" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Загальне" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Показати клавіатурні скорочення" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Пошук" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Перемкнути планувальника маршрутів" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "Надрукувати маршрут" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Вийти" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Перегляд карти" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Наблизити" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Віддалити" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Перемкнути шкалу" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Перейти до поточної місцевості" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Перемкнутися на перегляд вулиць" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Перемкнутися на супутниковий перегляд" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Відкрити шар форм" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Показувати мітки" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Відкрити шар форм…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Увімкнути службу розташування для знаходження місцевості" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Скасувати" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Параметри розташування" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Нічний режим" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Відкрити обліковий запис у OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Експортувати як зображення" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Клавіатурні скорочення" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Про «Карти»" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Відкрити головне меню" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Карти поза мережею!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Карти потребують з'єднання з інтернетом, щоб повноцінно працювати, але його " +"немає." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Перевірте зв'язок і параметри проксі." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Обліковий запис OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Увійти, щоб редагувати карту" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Допоможіть покращити карту через\n" +"обліковий запис OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Пошта" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Пароль" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Зареєструватися" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Увійти" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Вибачте, не виконалось. Спробуйте ще раз, або відвідайте\n" +"OpenStreetMap, щоб оновити пароль." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Код звіряння не збігається, спробуйте ще раз." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Введіть код звіряння, що показано вище" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Перевірити" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Увійшли" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Ваш обліковий запис OpenStreetMap активовано." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Вийти" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Вулиця" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Номер будинку" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Поштовий індекс" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Місто" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Тип" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Немає" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Додати поле" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Коментар" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Зміни в карті будуть видимі для карт, що використовують\n" +"дані з OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Недавно вжите" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Далі" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Нічого не знайдено" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Трапилась помилка" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Перенесіть, щоб змінити порядок маршруту" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Відкрити місце" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Копіювати" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Надіслати…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Відзначитися…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Відкрити шар форм" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Відкрити" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Перемкнути видимість" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Пошук маршрутів через GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Дані путівника для громадського транспорту надано сторонніми службами.\n" +"GNOME не може гарантувати правильність показаних маршрутів і розкладів.\n" +"Зауважте, що деякі надавачі даних можуть не включати усі можливі варіанти\n" +"пересування. Наприклад, національний оператор громадського транспорту може\n" +"не включати дані перельотів літаком, а надавач даних громадського " +"транспорту\n" +"у місті — даних регіональної залізниці.\n" +"Показані назви і торгові марки є зареєстрованими знаками, якщо це може їх " +"стосуватися." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "показати більше результатів" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Сховати проміжні зупинки та відомості" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Показати проміжні зупинки та відомості" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Уже їде" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Їде через" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Прибуває за" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Показувати" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Автобуси" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Трамваї" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Потяги" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Метро" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Пороми" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Літаки" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Оприлюднити місце" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Додати новий маршрут" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Напрямки" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Зазначити як улюблене" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Редагувати в OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Наблизьтесь, щоб додати місцевість!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Збільшити" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Не вдалося знайти плиткову структуру в каталозі" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Не вдалося розібрати документ XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Бракує потрібних атрибутів" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Неможливо знайти елемент OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Шлях до локального каталогу зі структурою плиток " + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Розмір плитки для каталогу локальних плиток" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Показати версію програми" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Ігнорувати доступність мережі" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[ФАЙЛ…|АДРЕСА]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Виберіть обліковий запис" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Завантаження" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Виберіть місце" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Картами неможливо знайти місце, щоб відзначитись через Foursquare. Виберіть " +"щось зі списку." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Відзначитись на %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Напишіть довільне повідомлення, щоб відзначитись на %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Неможливо знайти «%s» в соціальних службах" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Неможливо знайти зручне місце, щоб відзначити цю місцевість" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Реєстраційні дані застаріли, відкрийте Мережеві облікові записи, щоб увійти " +"та ввімкнути цей обліковий запис" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Тут нічого немає!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Місцевість додано на карту, майте на увазі, що це може забрати трохи часу " +"перед тим, як воно буде показано на карті й у результатах пошуку." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Карта для %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Файлова система тільки для читання" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Немає прав, щоб зберігати там" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Каталог не існує" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Не вказано назви файла" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Неможливо експортувати перегляд" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Поточне місце" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "неправильна координата" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "помилка розбирання" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "невідома геометрія" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Невдалий запит маршруту." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Не знайдено жодного маршруту." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Нумо!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Усі файли шарів" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Не вдалося з'єднатись зі службою розташування" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Daniel Korostil " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Карти для GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "© Red Hat, Inc. та розробники «Карт» GNOME, 2011–2021" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Дані карт надано %s та учасниками проєкту" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Блоки карти надано %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Послуги з пошуку надано %s, використовуємо %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Не вдалося відкрити шар" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Продовжити?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Ви маєте намір відкрити файли, загальний розмір яких дорівнює %s МБ. Процес " +"завантаження цих файлів може бути досить тривалим." + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Тип файла не підтримується" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Не вдалося відкрити GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Хибний користувач або пароль" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Успіх" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Поганий запит" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Об'єкт не знайдено" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Конфлікт, хтось інший щойно змінив об'єкт" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Об'єкт вилучено" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Спосіб або відношення не стосується чогось явного" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Назва" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Офіційна назва. Це зазвичай перше, що потрапляє на очі." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Адреса" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Сайт" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Ця адреса є некоректною. Переконайтеся, що адреса починається з http:// або " +"https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Офіційний сайт. Намагайтесь використовувати найосновнішу форму посилання, " +"наприклад, http://example.com замість http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Телефон" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Номер телефону. Використовуйте міжнародний формат, який починається з знаку " +"плюса (+). Будь обачні з місцевим законами щодо конфіденційності, особливо " +"особистими номерами." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Ел. пошта" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Ця адреса електронної пошти є некоректною. Не використовуйте префікс " +"протоколу mailto:." + +#: src/osmEditDialog.js:161 +#| msgid "" +#| "Contact e-mail address for inquiries.Add only email addresses that are " +#| "intended to be publicly used." +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Адреса електронної пошти для довідкової інформації. Додавайте лише адреси, " +"які призначено для загального доступу." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "Формат слід містити код мови і назву статті, як-от «uk:Назва статті»." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Робочий час" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Довідку щодо формату можна знати за посилання у мітці." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Населення" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Висота" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Висота (над рівнем моря) у метрах." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Доступ для возиків" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Так" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Ні" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Обмежено" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Вказано" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Доступ до інтернету" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Дріт" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Термінал" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Служба" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Перекусна" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Лише" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Релігія" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Анімізм" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Бахаїзм" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Буддизм" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Каодай" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Християнство" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Конфуціанство" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Індуїзм" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Джайнізм" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Юдаїзм" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Іслам" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Мультиконфесійність" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Язичництво" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Пастафаріанство" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Сайнтологія" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Сінтоїзм" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Сикхізм" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Спіритуалізм" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Даосизм" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Унітарний універсалізм" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Вуду" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Єзидизм" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Зороастризм" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Туалети" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Примітка" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Запис інформації використовується для надання іншим творцям карти " +"неочевидних відомостей щодо елемента карти, мети його створення або підказок " +"щодо подальшого поліпшення." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Додати до OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Виберіть тип" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Зроблено" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Місце без назви" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Не вдалося розібрати геопосилання" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Координати" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Точність" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Точність: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Номер телефону" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Пропонує попоїсти" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Не пропонує попоїсти" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Пропонує лише попоїсти" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Громадський доступ до інтернету" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Немає доступу до інтернету" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Громадський Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Дротовий доступ до інтернету" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Є доступ до комп'ютерів" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Доступна інтернет-допомога" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Немає туалетів" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Є туалети" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Доступне для візків" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Обмежена доступність для візків" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Недоступне для візків" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Позначено для користувачів візків" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s під рівнем моря" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "На рівні моря" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Релігія:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Місце не знайдено на OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Координати у адресі є некоректними" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "Підтримки адреси не передбачено" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "З %s до %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Завантаження плиток карти для друкування" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Можете скасувати друкування, якщо це надто довго" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Скасувати друкування" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Додати проміжне місце" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Влучити проміжне місце" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Зворотній маршрут" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Додати %s до %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Не вдалося відкрити посилання" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Відкрити через %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "не вдалося завантажити файл" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Розрахунковий час: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Маршрути надано %s" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Відправляється з %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Нумо" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Прогулянка %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Прибуває до %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Прибуває" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Показати піші варіанти" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Сховати піші варіанти" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Завантажити попередні альтернативи" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Завантажити подальші альтернативи" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Раніших альтернатив не знайдено." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Пізніших альтернатив не знайдено." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Немає даних про цей маршрут." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Для цього маршруту не знайдено надавачів даних." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s хвилина" +msgstr[1] "%s хвилини" +msgstr[2] "%s хвилин" +msgstr[3] "%s хвилина" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s година" +msgstr[1] "%s години" +msgstr[2] "%s годин" +msgstr[3] "%s година" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s година" +msgstr[1] "%s:%s години" +msgstr[2] "%s:%s годин" +msgstr[3] "%s:%s година" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Цілодобово" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Від світанку до заходу" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Щодня" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Святкові дні" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Шкільні канікули" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "не відкрито" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Невідомо" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Уточнити" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s год" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s год %s хв" +msgstr[1] "%s год %s хв" +msgstr[2] "%s год %s хв" +msgstr[3] "%s год %s хв" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s хв" +msgstr[1] "%s хв" +msgstr[2] "%s хв" +msgstr[3] "%s хв" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s с" +msgstr[1] "%s с" +msgstr[2] "%s с" +msgstr[3] "%s с" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s км" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s м" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s ми" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s фт" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "" +"У цьому додатку не передбачено підтримки визначення найпізнішого прибуття" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Продовжуйте на %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Продовжуйте" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Поверніть ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Поверніть трохи ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Поверніть трохи ліворуч" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Поверніть строго ліворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Різко поверніть ліворуч" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Поверніть трохи праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Поверніть трохи праворуч" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Різко поверніть праворуч на %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Різко поверніть праворуч" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "На розвороті виберіть виїзд %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "На розвороті виберіть виїзд до %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "В'їжджайте на розворот" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Увійдіть до ліфта і вийдіть на %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Увійдіть до ліфта" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Виконайте лівий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Виконайте лівий розворот" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Виконайте правий розворот на %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Виконайте правий розворот" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Параметри конфіденційності Facebook щодо відзначення" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Останній використаний параметр конфіденційності Facebook щодо " +#~ "відзначення. Допустимі значення: EVERYONE, FRIENDS_OF_FRIENDS, " +#~ "ALL_FRIENDS або SELF." + +#~ msgid "Everyone" +#~ msgstr "Усім" + +#~ msgid "Friends of friends" +#~ msgstr "Друзям друзів" + +#~ msgid "Just friends" +#~ msgstr "Тільки друзям" + +#~ msgid "Just me" +#~ msgstr "Лише собі" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Картами неможливо знайти місце, щоб відзначитись через Facebook. Виберіть " +#~ "щось зі списку." + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Можете навіть шукати спеціальні місця, як-от «Паби біля головної вулиці, " +#~ "Бостон» або «Готелі біля Александерплац, Берлін»." + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "Адреса OpenStreetMap є некоректною" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "Find a Route" +#~ msgstr "Знайти маршрут" + +#~ msgid "Check in here" +#~ msgstr "Відзначитись тут" + +#~ msgid "Show more information" +#~ msgstr "Докладніше" + +#~ msgid "Population:" +#~ msgstr "Населення:" + +#~ msgid "Altitude:" +#~ msgstr "Висота:" + +#~ msgid "Opening hours:" +#~ msgstr "Робочий час:" + +#~ msgid "Internet access:" +#~ msgstr "Доступ до інтернету:" + +#~ msgid "Toilets:" +#~ msgstr "Туалети:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Доступ для возиків:" + +#~ msgid "Phone:" +#~ msgstr "Телефон:" + +#~ msgid "yes" +#~ msgstr "так" + +#~ msgid "limited" +#~ msgstr "обмежено" + +#~ msgid "no" +#~ msgstr "ні" + +#~ msgid "designated" +#~ msgstr "визначено" + +#~ msgid "wired" +#~ msgstr "дріт" + +#~ msgid "terminal" +#~ msgstr "термінал" + +#~ msgid "service" +#~ msgstr "служба" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 00000000..7b60bb4e --- /dev/null +++ b/po/vi.po @@ -0,0 +1,2059 @@ +# Vietnamese translations for Maps package +# Bản dịch Tiếng Việt dành cho gói Maps. +# This file is distributed under the same license as the Maps package. +# Trần Ngọc Quân , 2016-2019, 2021. +# Antoine Đỗ , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-09-27 08:25+0000\n" +"PO-Revision-Date: 2021-09-30 13:52+0700\n" +"Last-Translator: Trần Ngọc Quân \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 3.38.0\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "Bản đồ GNOME" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "Tìm các địa điểm trên khắp thế giới" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"Maps giúp bạn truy cập bản đồ trên toàn thế giới. Nó cho phép bạn nhanh " +"chóng tìm đến chỗ mà bạn đang tìm bằng cách tìm thành phố hay đường, hoặc vị " +"trí địa điểm để gặp mặt bạn bè." + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"Maps dùng cơ sở dữ liệu OpenStreetMap cộng tác, được tạo bởi hàng trăm ngàn " +"người trên toàn cầu." + +#: data/org.gnome.Maps.appdata.xml.in:228 +msgid "The GNOME Project" +msgstr "Dự án GNOME" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "Bản đồ" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "Ứng dụng bản đồ đơn giản" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;Bản đồ;Ban do;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "Cho phép vị trí của bạn được hiển thị trên bản đồ." + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "vị trí xem cuối cùng" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "Tọa độ của vị trí xem cuối cùng." + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "thu phóng" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "Mức độ phóng to" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "Loại bản đồ" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "Loại bản đồ để hiển thị (đường phố, trên không, v.v.)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "Kích thước cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "Kích thước cửa sổ (rộng và cao)." + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "Vị trí cửa sổ" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "Vị trí cửa sổ (X và Y)." + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "Cửa sổ phóng to" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "Cửa sổ ở trạng thái phóng to hết cỡ" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "Số kết quả tìm kiếm tối đa" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "Số kết quả tìm kiếm tối đa từ việc tìm kiếm geocode." + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "Số lượng nơi chốn mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "Số lượng nơi chốn mới thăm được lưu." + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "Số lượng đường đi mới dùng được lưu" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "Số lượng đường đi mới đi được lưu." + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Cài đặt riêng tư check-in Foursquare" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"Cài đặt riêng tư check-in Foursquare lần cuối. Giá trị có thể là: public, " +"followers hay private." + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare check-in quảng bá Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một bài viết trên tài " +"khoản Facebook tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare check-in quảng bá Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"Cho biết Foursquare có nên quảng bá check-in như là một tweet trên tài khoản " +"Twitter tổ hợp cùng với tài khoản Foursquare." + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "Tên tài khoản OpenStreetMap hay địa chỉ thư điện tử" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "Biểu thị nếu người dùng đã đăng nhập vào sửa dữ liệu OpenStreetMap." + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "Kiểu phương tiện vận tải dùng cuối cùng để tìm đường" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "Chế độ ban đêm" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "Cho dù ứng dụng đang ở chế độ ban đêm." + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "Sử dụng xếp lớp trên không kết hợp" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "" +"Cho dù dùng kiểu xếp lớp nhìn từ trên không cũng nên sử dụng kiểu lai (có " +"nhãn)." + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "Thấy" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "Gửi lên Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "Gửi lên Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "T_hôi" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "_Ghi danh" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "Công khai" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "Theo dõi" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "Riêng tư" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "Đường đi từ đây" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "Thêm điểm đến trung gian" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "Đường đi đến đây" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "Đây là đâu?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "Chép vị trí" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "Xuất phần hiển thị" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "_Xuất" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "Bao gồm đường đi và người tạo" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "Chọn kiểu bản đồ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "Thu nhỏ" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "Phóng to" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "In đường đi" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "Chuyển đến chỗ đánh dấu" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "Chung" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "Hiện phím tắt" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "Tìm kiếm" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "Bật/tắt bộ lập kế hoạch đường đi" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "In đường đi" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "Thoát" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "Mở trình đơn chính" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "Xem bản đồ" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "Phóng to" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "Thu nhỏ" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "Bật/tắt thước đo" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "Đến vị trí hiện tại" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "Chuyển sang xem đường phố" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "Chuyển sang xem từ trên trời" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "Mở lớp hình dạng" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "Hiển thị nhãn" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "Mở lớp hình dạng…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "Bật dịch vụ vị trí để tìm vị trí của bạn" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "Thôi" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "Cài đặt vị trí" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "Chế độ ban đêm" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "Cài đặt tài khoản OpenStreetMap" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "Xuất ra ảnh" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "_Phím tắt" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "Giới thiệu Bản đồ" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "Mở menu chính" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Bản đồ đang ngoại tuyến!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "" +"Bản đồ cần được kết nối mạng internet để các chức năng một cách đúng đắn, " +"nhưng không tìm thấy kết nối mạng nào." + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "Kiểm tra lại kết nối và cài đặt ủy nhiệm của bạn." + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "Tài khoản OpenStreetMap" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "" +"Đăng nhập để chỉnh sửa bản đồ" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"Giúp đỡ cải tiến bản đồ bằng cách dùng\n" +"một tài khoản OpenStreetMap." + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "Thư điện tử" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "Mật khẩu" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "Đăng ký" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "Đăng nhập" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"Rất tiếc, nó không làm việc. Vui lòng thử lại, hoặc truy cập\n" +"OpenStreetMap để đặt lại tài khoản của bạn." + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "Mã xác nhận không khớp, vui lòng thử lại." + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "Nhập vào mã xác nhận hiện ở trên" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "Xác nhận" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "Đã đăng nhập" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "Tài khoản OpenStreetMap của bạn đang hoạt động." + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "Đăng xuất" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "Đường" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "Số nhà" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "Mã vùng" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "Thành phố" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "Kiểu" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "Không" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "Thêm trường" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "Chú thích" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"Các thay đổi bản đồ sẽ nhìn thấy trên mọi bản đồ mà\n" +"nó dùng dữ liệu OpenStreetMap." + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "Vừa dùng" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "Tiếp theo" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "Không tìm thấy kết quả nào" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "Đã có lỗi xảy ra" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "Kéo thả để thay đổi thứ tự của đường đi" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "Mở Vị trí" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "Sao chép" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "Gửi Đến…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "Check In…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "Mở lớp hình dạng" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "_Mở" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "Bật/tắt nhìn thấy" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "Tìm kiếm đường đi bằng GraphHopper" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"Hành trình định tuyến đường cho phương tiện công cộng do bên thứ ba cung " +"cấp\n" +"các dịch vụ.\n" +"GNOME không thể đảm bảo tính chính xác của các hành trình và lịch trình được " +"hiển thị.\n" +"Lưu ý rằng một số nhà cung cấp có thể không bao gồm tất cả các phương thức " +"vận chuyển hiện có,\n" +"ví dụ, nhà cung cấp nội địa có thể không bao gồm các hãng hàng không, và nhà " +"cung cấp địa phương có thể\n" +"thiếu các chuyến tàu trong khu vực.\n" +"Tên và nhãn hiệu hiển thị sẽ được coi là nhãn hiệu đã đăng ký khi áp dụng." + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "Hiện thêm các kết quả" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "Ẩn các điểm dừng và thông tin trung gian" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "Hiển thị các điểm dừng và thông tin trung gian" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "Khởi hành ngay" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "Khởi hành bằng" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "Tới bằng" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "Hiện" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "Xe buýt" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "Xe điện" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "Xe lửa" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "Xe điện ngầm" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "Phà" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "Máy bay" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "Chia sẻ vị trí" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "Thêm đường đi mới" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "Hướng" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "Đánh dấu là hay dùng" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "Sửa trên OpenStreetMap" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "Phóng to vào vị trí thêm!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "Phóng to" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "Gặp lỗi khi tìm cấu trúc lát gạch trong thư mục" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "Gặp lỗi khi phân tích cú pháp XML" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "Thiếu các thuộc tính cần thiết" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "Không thể tìm thấy phần tử OSM" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "Một đường dẫn đến cấu trúc thư mục lát gạch" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "Kích thước ô cho thư mục ô cục bộ" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "Hiển thị phiên bản của chương trình" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "Bỏ qua tính khả dụng của mạng" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[TẬP TIN… | URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "Chọn tài khoản" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "Đang tải" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "Chọn một địa điểm" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "" +"Maps không thể tìm thấy chỗ để chekck in vào với Foursquare. Vui lòng chọn " +"một cái từ danh sách này." + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "Check in vào %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "Ghi một lời nhắn tùy chọn để check in vào %s." + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "Không thể tìm thấy “%s” trong dịch vụ xã hội" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "Không thể tìm thấy chỗ phù hợp để check-in vào vị trí này" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "" +"Giấy ủy nhiệm đã hết hạn, vui lòng mở Tài khoản trực tuyến để đang nhập và " +"bật tài khoản này" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "Không thấy gì ở đây!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"Vị trí đã được thêm vào bản đồ, chú ý rằng cần chờ một thời gian trước khi " +"nó được hiển thị trên bản đồ và khi tìm kiếm sẽ có kết quả." + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "Bản đồ tại %f, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "Hệ thống tập tin chỉ cho đọc" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "Bạn không có đủ quyền hạn để lưu vào đây" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "Thư mục không tồn tại" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "Chưa xác định tên tập tin" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "Không thể xuất hình vẽ" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "Vị trí hiện tại" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "tọa độ không hợp lệ" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "lỗi phân tích" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "không hiểu dạng hình" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "Yêu cầu đường đi gặp lỗi." + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "Không tìm thấy lộ trình nào." + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "Bắt đầu!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "Mọi tập tin lớp" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "Gặp lỗi khi kết nối đến dịch vụ vị trí" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "Nhóm Việt hóa GNOME " + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "Ứng dụng bản đồ dành cho GNOME" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "Bản quyền © 2011 – 2021 Red Hat, Inc. và các tác giả Bản đồ GNOME" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "Dữ liệu bản đồ của %s và những người đóng góp" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "Tiêu đề bản đồ cung cấp bởi %s" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "Tìm kiếm do %s cung cấp sử dụng %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "Gặp lỗi khi mở lớp" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "Bạn có muốn tiếp tục?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "" +"Bạn sắp mở các tập tin có tổng kích thước là %s MB. Quá trình này có thể tốn " +"thời gian để tải" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "Kiểu tập tin không được hỗ trợ" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "Gặp lỗi khi mở GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "Tên người dùng hay mật khẩu sai" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "Thành công" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "Yêu cầu sai" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "Không thể tìm thấy đối tượng" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "Xung đột, đã có ai đó vừa sửa đối tượng" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "Đối tượng đã bị xóa" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "Lối hoặc quan hệ chỉ đến một con mà nó không tồn tại" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "Tên" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "Tên chính thức. Đây là cái thường xuất hiện trên chữ ký." + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "Địa chỉ" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "Trang thông tin điện tử" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "" +"Đây không phải là một URL hợp lệ. Hãy chắc chắn nó bao gồm http:// hoặc " +"https://." + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"Trang thông tin điện tử chính thức. Dùng dạng thức URL cơ bản nhất ví dụ " +"http://example.com thay cho http://example.com/index.html." + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "Điện thoại" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"Số điện thoại. Dùng định dạng quốc tế, bắt đầu bằng dấu +. Hãy cẩn thận với " +"luật riêng tư địa phương, đặc biệt là các số điện thoại riêng." + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "Thư điện tử" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "" +"Đây không phải là một địa chỉ thư điện tử hợp lệ. Hãy chắc chắn nó bao gồm " +"tiền tố giao thức mailto:." + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "" +"Địa chỉ thư điện tử liên hệ cho việc điều tra. Chỉ thêm địa chỉ thư điện tử " +"cái mà có ý định dùng công khai." + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "Wikipedia" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "" +"Nên dùng dạng thức có bao gồm mã ngôn ngữ và tiêu đề bài viết như là ”vi:" +"Tiêu đề bài viết”." + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "Giờ mở cửa" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "Xem liên kết trong nhãn để nhận được hỗ trợ về định dạng." + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "Dân số" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "Cao độ" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "Cao độ (độ cao trên mực nước biển) của một điểm tính bằng mét." + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "Lối vào xe lăn" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "Đồng ý" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "Không" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "Bị giới hạn" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "Đã được thiết kế" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "Truy cập mạng Internet" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "Có dây" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "Thiết bị cuối" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "Dịch vụ" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "Mang đi" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "Chỉ" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "Tôn giáo" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "Thuyết vật linh" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "Bahá’í" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "Phật giáo" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "Đạo cao đài" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "Cơ đốc giáo" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "Khổng giáo" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "Ấn Độ giáo" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "Đạo Giai-na" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "Đạo Do Thái" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "Hồi giáo" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "Đa tôn giáo" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "Tà giáo" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "Pastafarianism" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "Khoa học học" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "Đạo thần Nhật bản" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "Đạo Sikh" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "Thuyết duy linh" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "Đạo Lão" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "Thuyết phổ độ nhất thể" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "Thầy mo" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "Yazidism" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "Đạo thờ lửa" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "Nhà vệ sinh" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "Ghi chú" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"Thông tin được sử dụng để cung cấp thông tin các bản đồ khác về các thông " +"tin không-rõ-ràng về một phần tử, mục đích của tác giả khi tạo nó, hoặc gợi " +"ý cải tiến hơn nữa." + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "Thêm vào OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "Chọn kiểu" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "Xong" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "Địa điểm không tên" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "Gặp lỗi khi phân tích Geo URI" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "Hệ tọa độ" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "Độ chính xác" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "Độ chính xác: %s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "Số điện thoại" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "Cho mang đi" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "Không cho mang đi" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "Chỉ được mang đi" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "Kết nối mạng internet công cộng" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "Không có kết nối mạng" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "Wi-Fi công cộng" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "Truy cập internet có dây" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "Máy tính có sẵn để sử dụng" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "Có hỗ trợ Internet" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "Không có nhà vệ sinh" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "Có nhà vệ sinh" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "Lối vào xe lăn" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "Lối vào cho xe lăn hạn chế" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "Không dành cho xe lăn" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "Được thiết kế cho người dùng xe lăn" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "%s dưới mực nước biển" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "Ở mực nước biển" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "Tôn giáo:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "Không tìm thấy địa điểm trong OpenStreetMap" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "Tọa độ trong URL không hợp lệ" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL không được hỗ trợ" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "Từ %s đến %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "Đang tải tựa đề bản đồ để in ấn" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "Bạn có thể bãi bỏ việc in ấn nếu việc đó diễn ra quá lâu" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "Hủy bỏ việc in" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "Thêm thông qua vị trí" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "Gỡ bỏ thông qua vị trí" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "Đảo ngược lộ trình" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "Thêm %s vào %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "Gặp lỗi khi mở URI" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "Mở bằng %s" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "gặp lỗi khi tải tập tin" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "Thời gian ước tính: %s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "Hành trình do %s cung cấp" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "Bắt đầu ở %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "Bắt đầu" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "Đi bộ %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "Tới lúc %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "Tới" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "Hiển thị chỉ dẫn cho người đi bộ" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "Ẩn chỉ dẫn cho người đi bộ" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "Tải các lựa chọn trước" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "Tải các lựa chọn sau" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "Không tìm thấy lựa chọn trước nào." + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "Không tìm thấy lựa chọn thay thế sau nào." + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%e %b" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "Không tìm thấy dữ liệu bảng thời gian cho lộ trình này." + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "Không tìm thấy nhà cung cấp nào cho tuyến đường này." + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s phút" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s giờ" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s giờ" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "Suốt ngày đêm" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "Từ bình minh đến khi hoàng hôn" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "Hàng ngày" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "Các ngày lễ" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "Ngày học sinh nghỉ" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "chưa mở" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "Chưa biết" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "Trích" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s h" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s h %s phút" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s phút" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s s" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s km" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s m" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s dặm" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s ft" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "Phần bổ sung này không hỗ trợ nơi đến mới nhất" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "Tiếp tục trên %s" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "Tiếp tục" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "Rẽ trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "Rẽ trái" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "Hơi rẽ sang trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "Hơi rẽ sang trái" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "Rẽ ngoặt sang trái vào %s" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "Rẽ ngoặt sang trái" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "Rẽ phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "Rẽ phải" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "Hơi rẽ sang phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "Hơi rẽ sang phải" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "Rẽ ngoặt sang phải vào %s" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "Rẽ ngoặt sang phải" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "Ở vòng xoay, đi lối ra %s" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "Ở vòng xoay, đi lối ra đến %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "Vào vòng xoay" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "Đi thang máy và xuống ở %s" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "Đi thang máy" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "Rẽ trái để quay đầu về %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "Rẽ trái để quay đầu" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "Rẽ phải để quay đầu về %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "Rẽ phải để quay đầu" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "Bạn thậm chí còn có thể chỉ định kiểu của địa điểm như là “Pubs near Main " +#~ "Street, Boston” hay “Hotels near Alexanderplatz, Berlin”." + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Cài đặt riêng tư check-in Facebook" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "Cài đặt riêng tư check-in Facebook lần cuối. Giá trị có thể là: EVERYONE, " +#~ "FRIENDS_OF_FRIENDS, ALL_FRIENDS hay SELF." + +#~ msgid "Everyone" +#~ msgstr "Mọi người" + +#~ msgid "Friends of friends" +#~ msgstr "Bạn của bạn" + +#~ msgid "Just friends" +#~ msgstr "Chỉ bạn" + +#~ msgid "Just me" +#~ msgstr "Chỉ tôi" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "" +#~ "Maps không thể tìm thấy chỗ để chekck in vào với Facebook. Vui lòng chọn " +#~ "một cái từ danh sách này." + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "Mở bằng ứng dụng khác" + +#~ msgid "Check in here" +#~ msgstr "Check in vào đây" + +#~ msgid "Don’t have an account?" +#~ msgstr "Không có tài khoản?" + +#~ msgid "Show more information" +#~ msgstr "Cung cấp thêm thông tin" + +#~ msgid "Press enter to search" +#~ msgstr "Bấm phím Enter để tìm kiếm" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "Tìm kiếm đường đi bằng OpenTripPlanner" + +#~ msgid "Add destination" +#~ msgstr "Thêm đích" + +#~ msgid "Population:" +#~ msgstr "Dân số:" + +#~ msgid "Altitude:" +#~ msgstr "Cao độ:" + +#~ msgid "Opening hours:" +#~ msgstr "Giờ mở cửa:" + +#~ msgid "Internet access:" +#~ msgstr "Truy cập Internet:" + +#~ msgid "Toilets:" +#~ msgstr "Nhà vệ sinh:" + +#~ msgid "Wheelchair access:" +#~ msgstr "Lối vào xe lăn:" + +#~ msgid "Phone:" +#~ msgstr "Điện thoại:" + +#~ msgid "yes" +#~ msgstr "có" + +#~ msgid "limited" +#~ msgstr "bị giới hạn" + +#~ msgid "no" +#~ msgstr "không" + +#~ msgid "designated" +#~ msgstr "được thiết kế" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "có dây" + +#~ msgid "terminal" +#~ msgstr "thiết bị cuối" + +#~ msgid "service" +#~ msgstr "dịch vụ" + +#~ msgid "%f h" +#~ msgstr "%f giờ" + +#~ msgid "%f min" +#~ msgstr "%f phút" + +#~ msgid "%f s" +#~ msgstr "%f giây" + +#~ msgid "Quit" +#~ msgstr "Thoát" + +#~ msgid "Open Shape Layer…" +#~ msgstr "Mở lớp hình dạng…" + +#~ msgid "OK" +#~ msgstr "Được" + +#~ msgid "Load Map Layer" +#~ msgstr "Tải lớp bản đồ" + +#~ msgid "Open Layer" +#~ msgstr "Mở lớp" + +#~ msgid "%f km" +#~ msgstr "%f km" + +#~ msgid "%f m" +#~ msgstr "%f m" + +#~ msgid "%f mi" +#~ msgstr "%f dặm" + +#~ msgid "%f ft" +#~ msgstr "%f ft" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 00000000..b36c69aa --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,2088 @@ +# Chinese (China) translation for gnome-maps. +# Copyright (C) 2013-2021 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# tuhaihe <1132321739qq@gmail.com>, 2013. +# Tong Hui , 2014. +# YunQiang Su , 2015, 2016. +# Mingcong Bai , 2015, 2016, 2017, 2018. +# 王滋涵 Zephyr Wang , 2020. +# Dingzhong Chen , 2015-2021. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2021-08-16 20:57+0000\n" +"PO-Revision-Date: 2021-09-03 15:03-0400\n" +"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"Language-Team: Chinese - China \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.0\n" +"X-DamnedLies-Scope: partial\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地图" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "寻找世界各地的地点" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"地图应用帮您快速访问世界各地的地图。允许您快速定位到城市、街道或约会地点。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"地图应用使用了 OpenStreetMap 数据库,该数据库由全球成千上万的人们协同制作。" + +#: data/org.gnome.Maps.appdata.xml.in:189 +msgid "The GNOME Project" +msgstr "GNOME 项目" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:94 src/mainWindow.js:132 src/mainWindow.js:592 +msgid "Maps" +msgstr "地图" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "一款简单的地图应用程序" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地图;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允许你的位置显示在地图上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最近查看的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最近查看的位置的座标。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "缩放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "缩放级别" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地图类型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要显示的地图类型(街道、航拍等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "窗口大小" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "窗口大小(宽度和高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "窗口位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "窗口位置(水平和垂直)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "窗口最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "窗口最大化状态" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜索结果的最大数量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "来自 geocode 搜索结果的最大数量。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "存储最近地点的数量" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "存储最近拜访过地点的数量。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "存储最近路线的数量" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "存储最近使用过路线的数量。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 签到隐私设置" + +#: data/org.gnome.Maps.gschema.xml:57 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 签到隐私设置。可能的值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:61 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 签到同步到 Facebook" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成消息发布到 Foursquare 已经关联的 Facebook 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:66 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 签到同步到 Twitter" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否把签到当成推文发布到 Foursquare 已经关联的 Twitter 帐号" +"上。" + +#: data/org.gnome.Maps.gschema.xml:71 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 用户名或电子邮件地址" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示用户是否已经登录以编辑 OpenStreetMap 数据。" + +#: data/org.gnome.Maps.gschema.xml:76 +msgid "Last used transportation type for routing" +msgstr "载入用过的交通类型来规划路线" + +#: data/org.gnome.Maps.gschema.xml:80 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:81 +msgid "Whether the application is in night mode." +msgstr "是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:85 +msgid "Use hybrid aerial tiles" +msgstr "使用混合航拍区块" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "航拍区块是否使用混合样式(带标签)。" + +#: data/ui/check-in-dialog.ui:236 +msgid "Visibility" +msgstr "可见性" + +#: data/ui/check-in-dialog.ui:271 +msgid "Post on Facebook" +msgstr "发到 Facebook" + +#: data/ui/check-in-dialog.ui:285 +msgid "Post on Twitter" +msgstr "发到 Twitter" + +#: data/ui/check-in-dialog.ui:325 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#: data/ui/check-in-dialog.ui:333 +msgid "C_heck in" +msgstr "签到(_H)" + +#: data/ui/check-in-dialog.ui:358 +msgid "Public" +msgstr "公开" + +#: data/ui/check-in-dialog.ui:362 +msgid "Followers" +msgstr "关注者" + +#: data/ui/check-in-dialog.ui:366 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "从此处出发的路径" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "添加途经目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "前往此处的路径" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "这是哪里?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "复制位置信息" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "导出视图" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "导出(_E)" + +#: data/ui/export-view-dialog.ui:119 +msgid "Include route and markers" +msgstr "包括路线和标记" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "转到当前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:33 +msgid "Choose map type" +msgstr "选择地图类型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:58 +msgid "Zoom out" +msgstr "缩小" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:74 +msgid "Zoom in" +msgstr "放大" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:14 +msgid "Print Route" +msgstr "打印路线" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:33 +msgid "Toggle favorites" +msgstr "切换喜爱" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:52 +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "常规" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "显示快捷操作" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜索" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切换路线规划器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "打印路线" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "退出" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地图视图" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "放大" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "缩小" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切换比例尺" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "转到当前位置" + +#: data/ui/help-overlay.ui:97 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切换到街景视图" + +#: data/ui/help-overlay.ui:104 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切换到空中视图" + +#: data/ui/help-overlay.ui:111 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "打开形状图层" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "显示标签" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "打开形状图层…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "开启定位服务来获取您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "地点设置" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "建立 OpenStreetMap 帐号" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "导出为图像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "快捷键(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "关于地图" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "打开主菜单" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "地图应用处于离线状态!" + +#: data/ui/main-window.ui:123 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "地图应用需要有效的网络连接才能正常运行,但是未发现有效连接。" + +#: data/ui/main-window.ui:131 +msgid "Check your connection and proxy settings." +msgstr "请检查您的网络连接和代理设置。" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帐号" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登录以编辑地图" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"使用 OpenStreetMap 帐号\n" +"帮助完善地图。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "电子邮件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密码" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "注册" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登录" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"对不起,密码无效。请重试,或访问\n" +"OpenStreetMap 以重置密码。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "验证码不匹配,请重试。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "输入在上面显示的验证码" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "验证" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登录" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帐号已激活。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "退出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "门牌号码" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "邮政编码" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "类型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "无" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "添加字段" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "备注" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地图更改将会呈现在所有使用\n" +"OpenStreetMap 数据的地图上。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:550 +msgid "Next" +msgstr "下一步" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "未找到结果" + +#: data/ui/place-popover.ui:66 src/checkInDialog.js:269 src/checkIn.js:158 +#: src/osmEditDialog.js:587 +msgid "An error has occurred" +msgstr "发生了一个错误" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖动以改变路线的顺序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "打开位置" + +#: data/ui/send-to-dialog.ui:72 +msgid "Copy" +msgstr "复制" + +#: data/ui/send-to-dialog.ui:79 +msgid "Send To…" +msgstr "发送至…" + +#: data/ui/send-to-dialog.ui:86 +msgid "Check In…" +msgstr "签到…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:65 +msgid "Open Shape Layer" +msgstr "打开形状图层" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "打开(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切换可见" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "通过 GraphHopper 搜索路线" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"公共交通行程路线由第三方服务提供。\n" +"GNOME 无法保证所显示的行程和时间表的准确性。\n" +"一些提供者可能不会包含所有可用的交通方式,\n" +"例如,国家级提供者可能不包括航空公司,\n" +"地方提供者也可能会缺少地区列车信息。\n" +"所示名称和品牌在适用时应视为注册商标。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "显示更多结果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隐藏途径停站及沿路信息" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "显示途径停站及沿路信息" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "现在动身" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "出发时间" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "到达时间" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "显示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公交车" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "有轨电车" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "列车" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "地铁" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡轮" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飞机" + +#. Translators: This is a tooltip +#: data/ui/place-bar.ui:48 data/ui/place-buttons.ui:50 data/ui/place-view.ui:72 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:15 +msgid "Add to new route" +msgstr "添加到新路线" + +#. Translators: This is the button to find a route to a place +#: data/ui/place-buttons.ui:34 +msgid "Directions" +msgstr "方向" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:70 +msgid "Mark as favorite" +msgstr "标记为喜爱" + +#. Translators: This is a tooltip +#: data/ui/place-buttons.ui:89 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 上编辑" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "放大以添加地点!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "放大" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "未在目录中找到地图区块结构" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "解析 XML 文档失败" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺失需要的属性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:108 +msgid "A path to a local tiles directory structure" +msgstr "指向本地区块目录结构的路径" + +#: src/application.js:114 +msgid "Tile size for local tiles directory" +msgstr "本地区块目录的区块大小" + +#: src/application.js:118 +msgid "Show the version of the program" +msgstr "显示该程序的版本" + +#: src/application.js:124 +msgid "Ignore network availability" +msgstr "忽略网络可用性" + +#: src/application.js:134 src/application.js:135 +msgid "[FILE…|URI]" +msgstr "[文件…|URI]" + +#: src/checkInDialog.js:161 +msgid "Select an account" +msgstr "选择帐号" + +#: src/checkInDialog.js:166 src/checkInDialog.js:235 +msgid "Loading" +msgstr "正在载入" + +#: src/checkInDialog.js:190 +msgid "Select a place" +msgstr "选择地点" + +#: src/checkInDialog.js:195 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "地图应用无法在 Foursquare 中找到签到地点。请在列表中选择。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:210 +#, javascript-format +msgid "Check in to %s" +msgstr "签到于 %s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:220 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "编写附加信息来签到 %s 。" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:140 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社交服务中找不到“%s”" + +#: src/checkIn.js:142 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "在此地无法找到符合的签到地点" + +#: src/checkIn.js:146 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "证书已过期,请打开“在线帐号”登录并启用此帐号" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "这里什么都没有找到!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "地点已添加到地图,注意它可能需要一段时间才能显示在地图上和搜索结果里。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "%f, %f 处的地图.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "文件系统为只读" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您没有保存到那里的权限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "该目录不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "未指定文件名" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "无法导出视图" + +#: src/geoclue.js:118 +msgid "Current Location" +msgstr "当前位置" + +#: src/geoJSONSource.js:98 +msgid "invalid coordinate" +msgstr "无效坐标" + +#: src/geoJSONSource.js:147 src/geoJSONSource.js:187 src/geoJSONSource.js:202 +msgid "parse error" +msgstr "解析错误" + +#: src/geoJSONSource.js:181 +msgid "unknown geometry" +msgstr "未知几何方位" + +#: src/graphHopper.js:112 src/transitPlan.js:181 +msgid "Route request failed." +msgstr "路线请求失败。" + +#: src/graphHopper.js:119 src/transitPlan.js:173 +msgid "No route found." +msgstr "没有找到路线。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1116 +msgid "Start!" +msgstr "开始!" + +#: src/mainWindow.js:62 +msgid "All Layer Files" +msgstr "全部图层文件" + +#: src/mainWindow.js:495 +msgid "Failed to connect to location service" +msgstr "无法连接到定位服务" + +#: src/mainWindow.js:590 +msgid "translator-credits" +msgstr "" +"tuhaihe <1132321739qq@gmail.com>, 2013, 2020\n" +"Tong Hui , 2014\n" +"Mingcong Bai , 2015, 2016, 2017, 2018\n" +"Dingzhong Chen , 2015-2018\n" +"王滋涵 , 2020" + +#: src/mainWindow.js:593 +msgid "A map application for GNOME" +msgstr "一款 GNOME 地图应用程序" + +#: src/mainWindow.js:604 +msgid "Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors" +msgstr "版权所有 © 2011 – 2021 红帽公司和 GNOME 地图作者" + +#: src/mainWindow.js:624 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "地图数据来自 %s 和贡献者" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:640 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "地图图块由 %s 提供" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:669 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "使用 %s 提供的服务搜索 %s" + +#: src/mapView.js:493 src/mapView.js:551 +msgid "Failed to open layer" +msgstr "打开图层失败" + +#: src/mapView.js:514 +msgid "Do you want to continue?" +msgstr "请问是否继续?" + +#: src/mapView.js:515 +#, javascript-format +msgid "" +"You are about to open files with a total size of %s MB. This could take some " +"time to load" +msgstr "即将打开 %s MB 的文件,这可能需要一定时间" + +#: src/mapView.js:545 +msgid "File type is not supported" +msgstr "文件类型未支持" + +#: src/mapView.js:583 +msgid "Failed to open GeoURI" +msgstr "打开 GeoURI 失败" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:442 +msgid "Incorrect user name or password" +msgstr "不正确的用户名或密码" + +#: src/osmConnection.js:444 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:446 +msgid "Bad request" +msgstr "错误的请求" + +#: src/osmConnection.js:448 +msgid "Object not found" +msgstr "找不到对象" + +#: src/osmConnection.js:450 +msgid "Conflict, someone else has just modified the object" +msgstr "冲突,别人刚修改了对象" + +#: src/osmConnection.js:452 +msgid "Object has been deleted" +msgstr "对象已被删除" + +#: src/osmConnection.js:454 +msgid "Way or relation refers to non-existing children" +msgstr "道路或关系指向了不存在的子项" + +#: src/osmEditDialog.js:122 +msgid "Name" +msgstr "名称" + +#: src/osmEditDialog.js:125 +msgid "The official name. This is typically what appears on signs." +msgstr "官方名称。这通常就是标记上显示的东西。" + +#: src/osmEditDialog.js:128 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:136 src/placeView.js:280 +msgid "Website" +msgstr "网站" + +#: src/osmEditDialog.js:140 +msgid "This is not a valid URL. Make sure to include http:// or https://." +msgstr "URL 不合法。请确保其包含 http:// 或 https://。" + +#: src/osmEditDialog.js:141 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方网站。尝试使用 URL 的最基本形式,例如 http://example.com 而不是 http://" +"example.com/index.html。" + +#: src/osmEditDialog.js:146 +msgid "Phone" +msgstr "电话" + +#: src/osmEditDialog.js:150 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"电话号码。使用国际格式,以 + 加号开头。留心当地的隐私法律,特别是对于私人电话" +"号码。" + +#: src/osmEditDialog.js:155 src/placeView.js:308 +msgid "E-mail" +msgstr "电子邮件" + +#: src/osmEditDialog.js:160 +msgid "" +"This is not a valid e-mail address. Make sure to not include the mailto: " +"protocol prefix." +msgstr "电子邮件地址无效。请确保其不包含 mailto: 协议前缀。" + +#: src/osmEditDialog.js:161 +msgid "" +"Contact e-mail address for inquiries. Add only email addresses that are " +"intended to be publicly used." +msgstr "问询用电子邮件地址。只应添加公共用途的电子邮件地址。" + +#. Translators: This is the text for the "Wikipedia" link at the end +#. of summaries +#: src/osmEditDialog.js:165 src/placeView.js:645 +msgid "Wikipedia" +msgstr "维基百科" + +#: src/osmEditDialog.js:170 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式应该包含语言代码和文章标题如“zh_CN:文章标题”。" + +#: src/osmEditDialog.js:174 src/placeView.js:345 +msgid "Opening hours" +msgstr "开放时间" + +#: src/osmEditDialog.js:179 +msgid "See the link in the label for help on format." +msgstr "请参阅标签中的链接来获得关于格式的帮助。" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/osmEditDialog.js:182 src/placeView.js:455 +msgid "Population" +msgstr "人口总数" + +#: src/osmEditDialog.js:187 src/placeView.js:484 +msgid "Altitude" +msgstr "海拔" + +#: src/osmEditDialog.js:190 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一点的海拔(海平面之上的高度),以米计。" + +#: src/osmEditDialog.js:193 +msgid "Wheelchair access" +msgstr "轮椅通行" + +#: src/osmEditDialog.js:196 src/osmEditDialog.js:205 src/osmEditDialog.js:216 +#: src/osmEditDialog.js:251 +msgid "Yes" +msgstr "有" + +#: src/osmEditDialog.js:197 src/osmEditDialog.js:206 src/osmEditDialog.js:217 +#: src/osmEditDialog.js:252 +msgid "No" +msgstr "无" + +#: src/osmEditDialog.js:198 +msgid "Limited" +msgstr "受限" + +#: src/osmEditDialog.js:199 +msgid "Designated" +msgstr "指定" + +#: src/osmEditDialog.js:202 +msgid "Internet access" +msgstr "网络接入" + +#: src/osmEditDialog.js:207 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:208 +msgid "Wired" +msgstr "有线" + +#: src/osmEditDialog.js:209 +msgid "Terminal" +msgstr "终端" + +#: src/osmEditDialog.js:210 +msgid "Service" +msgstr "服务" + +#: src/osmEditDialog.js:213 +msgid "Takeaway" +msgstr "外带" + +#: src/osmEditDialog.js:218 +msgid "Only" +msgstr "仅" + +#: src/osmEditDialog.js:221 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:224 src/translations.js:284 +msgid "Animism" +msgstr "泛灵论" + +#: src/osmEditDialog.js:225 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:226 src/translations.js:286 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:227 src/translations.js:287 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:228 src/translations.js:288 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:229 src/translations.js:289 +msgid "Confucianism" +msgstr "儒学" + +#: src/osmEditDialog.js:230 src/translations.js:290 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:231 src/translations.js:291 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:232 src/translations.js:292 +msgid "Judaism" +msgstr "犹太教" + +#: src/osmEditDialog.js:233 src/translations.js:293 +msgid "Islam" +msgstr "伊斯兰教" + +#: src/osmEditDialog.js:234 src/translations.js:294 +msgid "Multiple Religions" +msgstr "多宗教信仰" + +#: src/osmEditDialog.js:235 src/translations.js:295 +msgid "Paganism" +msgstr "异教" + +#: src/osmEditDialog.js:236 src/translations.js:296 +msgid "Pastafarianism" +msgstr "飞天面条神教" + +#: src/osmEditDialog.js:237 src/translations.js:297 +msgid "Scientology" +msgstr "山达基" + +#: src/osmEditDialog.js:238 src/translations.js:298 +msgid "Shinto" +msgstr "神道" + +#: src/osmEditDialog.js:239 src/translations.js:299 +msgid "Sikhism" +msgstr "锡克教" + +#: src/osmEditDialog.js:240 src/translations.js:300 +msgid "Spiritualism" +msgstr "唯灵论" + +#: src/osmEditDialog.js:241 src/translations.js:301 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:242 src/translations.js:302 +msgid "Unitarian Universalism" +msgstr "一神普救派" + +#: src/osmEditDialog.js:243 src/translations.js:303 +msgid "Voodoo" +msgstr "伏都教" + +#: src/osmEditDialog.js:244 src/translations.js:304 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:245 src/translations.js:305 +msgid "Zoroastrianism" +msgstr "琐罗亚斯德教" + +#: src/osmEditDialog.js:248 +msgid "Toilets" +msgstr "洗手间" + +#: src/osmEditDialog.js:255 +msgid "Note" +msgstr "备注" + +#: src/osmEditDialog.js:258 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用于提醒其他制图人的信息,比如关于元素的隐蔽信息、作者创建的意图,亦或进一步" +"完善的提示。" + +#: src/osmEditDialog.js:363 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "添加到 OpenStreetMap" + +#: src/osmEditDialog.js:417 +msgid "Select Type" +msgstr "选择类型" + +#: src/osmEditDialog.js:534 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:111 +msgid "Unnamed place" +msgstr "未命名地点" + +#: src/placeEntry.js:221 +msgid "Failed to parse Geo URI" +msgstr "解析 Geo URI 失败" + +#: src/placeView.js:268 +msgid "Coordinates" +msgstr "坐标" + +#: src/placeView.js:272 +msgid "Accuracy" +msgstr "精度" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/placeView.js:275 +#, javascript-format +msgid "Accuracy: %s" +msgstr "位置精度:%s" + +#. since the phone numbers are typically always rendered +#. * left-to-right, insert an explicit LRM char to avoid issues +#. * with phone numbers in international format starting with a + +#. * which is considered a "weak" character to determine Unicode +#. * text direction +#. +#: src/placeView.js:294 +msgid "Phone number" +msgstr "手机号码" + +#. Translators: +#. * The establishment offers customers to purchase meals +#. * (or similar) to be consumed elsewhere +#. +#: src/placeView.js:321 +msgid "Offers takeaway" +msgstr "提供外带服务" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed on-premise. +#. +#: src/placeView.js:329 +msgid "Does not offer takeaway" +msgstr "不提供外带服务" + +#. Translators: +#. * The establishment only offers customers to purchase +#. * meals (or similar) to be consumed elsewhere. E.g. +#. * there is no seating on-premise for eating/drinking +#. +#: src/placeView.js:338 +msgid "Only offers takeaway" +msgstr "只提供外带服务" + +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/placeView.js:355 +msgid "Public internet access" +msgstr "公共网络接入" + +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/placeView.js:364 +msgid "No internet access" +msgstr "无网络接入" + +#. Translators: +#. * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. +#. +#: src/placeView.js:372 +msgid "Public Wi-Fi" +msgstr "公共 Wi-Fi" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/placeView.js:380 +msgid "Wired internet access" +msgstr "有线网络接入" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/placeView.js:388 +msgid "Computers available for use" +msgstr "有计算机可供使用" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/placeView.js:396 +msgid "Internet assistance available" +msgstr "提供网络援助" + +#: src/placeView.js:402 +msgid "No toilets available" +msgstr "不提供洗手间" + +#: src/placeView.js:405 +msgid "Toilets available" +msgstr "提供洗手间" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#: src/placeView.js:414 +msgid "Wheelchair accessible" +msgstr "轮椅可通行" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/placeView.js:424 +msgid "Limited wheelchair accessibility" +msgstr "轮椅有限通行" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#: src/placeView.js:433 +msgid "Not wheelchair accessible" +msgstr "轮椅不可通行" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/placeView.js:443 +msgid "Designated for wheelchair users" +msgstr "为轮椅用户设计" + +#. * +#. * Translators: this is a label indicating an altitude below +#. * sea level, where the %s placeholder is the altitude relative +#. * to mean sea level in the "negative direction" +#. +#: src/placeView.js:474 +#, javascript-format +msgid "%s below sea level" +msgstr "低于海平面 %s" + +#. * +#. * Translators: this indicates a place is located at (or very +#. * close to) mean sea level +#. +#: src/placeView.js:481 +msgid "At sea level" +msgstr "位于海平面高度" + +#: src/placeView.js:490 +msgid "Religion:" +msgstr "宗教:" + +#: src/place.js:497 +msgid "Place not found in OpenStreetMap" +msgstr "地点在 OpenStreetMap 上找不到" + +#: src/place.js:504 +msgid "Coordinates in URL are not valid" +msgstr "URL 中的坐标无效" + +#: src/place.js:513 +msgid "URL is not supported" +msgstr "URL 不支持" + +#: src/printLayout.js:321 +#, javascript-format +msgid "From %s to %s" +msgstr "从 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "正在加载地图图块以便打印" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果打印时间太长你可以中止它" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止打印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "通过位置添加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "通过位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路线" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:121 +#, javascript-format +msgid "Add %s to %s" +msgstr "添加 %s 到 %s" + +#: src/sendToDialog.js:219 +msgid "Failed to open URI" +msgstr "打开 URI 失败" + +#: src/sendToDialog.js:276 +#, javascript-format +msgid "Open with %s" +msgstr "用 %s 打开" + +#: src/shapeLayer.js:95 +msgid "failed to load file" +msgstr "载入文件失败" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:355 +#, javascript-format +msgid "Estimated time: %s" +msgstr "估计时间:%s" + +#: src/sidebar.js:411 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "路线由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "出发时间为 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "出发" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "到达时间为 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1129 +msgid "Arrive" +msgstr "到达" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "显示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隐藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "载入上一个替代方案" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "载入下一个替代方案" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到上一个替代方案。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到下一个替代方案。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%-m月%-d日" + +#: src/transitPlan.js:177 +msgid "No timetable data found for this route." +msgstr "找不到该路线的时间表信息。" + +#: src/transitPlan.js:185 +msgid "No provider found for this route." +msgstr "找不到该路线的提供商。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:302 +#, javascript-format +msgid "%s – %s" +msgstr "%s - %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:331 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分钟" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:343 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小时" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小时" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:744 +#, javascript-format +msgid "%s–%s" +msgstr "%s-%s" + +#: src/translations.js:53 +msgid "Around the clock" +msgstr "全天" + +#: src/translations.js:55 +msgid "From sunrise to sunset" +msgstr "白天" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:121 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:135 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:154 +msgid "Every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:166 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:177 +msgid "Public holidays" +msgstr "公众假期" + +#: src/translations.js:179 +msgid "School holidays" +msgstr "学校假期" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:219 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:233 +msgid "not open" +msgstr "未开放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:248 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Unknown" +msgstr "未知" + +#. Translators: Accuracy of user location information +#: src/utils.js:254 +msgid "Exact" +msgstr "准确" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s h" +msgstr "%s 小时" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, corresponding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:357 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 小时 %s 分钟" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:364 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分钟" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:370 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:381 +#, javascript-format +msgid "%s km" +msgstr "%s 千米" + +#. Translators: This is a distance measured in meters +#: src/utils.js:384 +#, javascript-format +msgid "%s m" +msgstr "%s 米" + +#. Translators: This is a distance measured in miles +#: src/utils.js:392 +#, javascript-format +msgid "%s mi" +msgstr "%s 英里" + +#. Translators: This is a distance measured in feet +#: src/utils.js:395 +#, javascript-format +msgid "%s ft" +msgstr "%s 英尺" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "该插件不支持最近到达信息" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Continue on %s" +msgstr "继续沿 %s 前进" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Continue" +msgstr "继续" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn left on %s" +msgstr "%s 处左转" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn left" +msgstr "左转" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "%s 处稍向左转" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn slightly left" +msgstr "稍向左转" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "%s 处向左急转" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn sharp left" +msgstr "向左急转" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn right on %s" +msgstr "%s 处右转" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn right" +msgstr "右转" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "%s 处稍向右转" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn slightly right" +msgstr "稍向右转" + +#: src/transitplugins/openTripPlanner.js:1220 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "%s 处向右急转" + +#: src/transitplugins/openTripPlanner.js:1222 +msgid "Turn sharp right" +msgstr "向右急转" + +#: src/transitplugins/openTripPlanner.js:1228 +#, javascript-format +msgid "At the roundabout, take exit %s" +msgstr "在 %s 出环岛" + +#: src/transitplugins/openTripPlanner.js:1230 +#, javascript-format +msgid "At the roundabout, take exit to %s" +msgstr "退出环岛往 %s" + +#: src/transitplugins/openTripPlanner.js:1232 +msgid "Take the roundabout" +msgstr "环岛绕行" + +#: src/transitplugins/openTripPlanner.js:1236 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "乘坐电梯并在 %s 层离开" + +#: src/transitplugins/openTripPlanner.js:1238 +msgid "Take the elevator" +msgstr "乘坐电梯" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "向走掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a left u-turn" +msgstr "向走掉头" + +#: src/transitplugins/openTripPlanner.js:1247 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "向右掉头进入 %s" + +#: src/transitplugins/openTripPlanner.js:1249 +msgid "Make a right u-turn" +msgstr "向右掉头" + +#~ msgid "" +#~ "You can even search for specific types of locations, such as “Pubs near " +#~ "Main Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +#~ msgstr "" +#~ "你甚至可以搜索特定类型的位置,比如“Pubs near Main Street, " +#~ "Boston”或“Hotels near Alexanderplatz, Berlin”。" + +#~ msgid "Facebook check-in privacy setting" +#~ msgstr "Facebook 签到隐私设置" + +#~ msgid "" +#~ "Latest used Facebook check-in privacy setting. Possible values are: " +#~ "EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +#~ msgstr "" +#~ "最近使用的 Facebook 签到隐私设置。可能的值有:EVERYONE, " +#~ "FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#~ msgid "Everyone" +#~ msgstr "每个人" + +#~ msgid "Friends of friends" +#~ msgstr "朋友的朋友" + +#~ msgid "Just friends" +#~ msgstr "仅限朋友" + +#~ msgid "Just me" +#~ msgstr "仅限自己" + +#~ msgid "" +#~ "Maps cannot find the place to check in to with Facebook. Please select " +#~ "one from this list." +#~ msgstr "地图应用无法在 Facebook 中找到签到地点。请在列表中选择。" + +#~ msgid "Find a Route" +#~ msgstr "寻找路线" + +#~ msgid "Check in here" +#~ msgstr "在这里签到" + +#~ msgid "Show more information" +#~ msgstr "显示更多信息" + +#~ msgid "Population:" +#~ msgstr "人口总数:" + +#~ msgid "Altitude:" +#~ msgstr "海拔:" + +#~ msgid "Opening hours:" +#~ msgstr "开放时间:" + +#~ msgid "Internet access:" +#~ msgstr "网络接入:" + +#~ msgid "Toilets:" +#~ msgstr "洗手间:" + +#~ msgid "Wheelchair access:" +#~ msgstr "轮椅通行:" + +#~ msgid "Phone:" +#~ msgstr "电话:" + +#~ msgid "yes" +#~ msgstr "有" + +#~ msgid "limited" +#~ msgstr "有限制" + +#~ msgid "no" +#~ msgstr "无" + +#~ msgid "designated" +#~ msgstr "专用设施" + +#~ msgid "OpenStreetMap URL is not valid" +#~ msgstr "OpenStreetMap URL 无效" + +#~ msgctxt "time range list" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgctxt "time range list" +#~ msgid "%s %s %s" +#~ msgstr "%s %s %s" + +#~ msgctxt "time range component" +#~ msgid "%s %s" +#~ msgstr "%s %s" + +#~ msgid "wired" +#~ msgstr "有线" + +#~ msgid "terminal" +#~ msgstr "终端" + +#~ msgid "service" +#~ msgstr "服务" + +#~ msgid "Primary menu" +#~ msgstr "主菜单" + +#~ msgid "Don’t have an account?" +#~ msgstr "没有帐号?" + +#~ msgid "Open with another application" +#~ msgstr "以其他程序打开" + +#~ msgid "Press enter to search" +#~ msgstr "按下回车键开始搜索" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "通过 OpenTripPlanner 搜索路线" + +#~ msgid "Add destination" +#~ msgstr "添加目的地" + +#~ msgid "%f h" +#~ msgstr "%f 小时" + +#~ msgid "%f min" +#~ msgstr "%f 分钟" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Quit" +#~ msgstr "退出" + +#~ msgid "OK" +#~ msgstr "确定" + +#~ msgid "Load Map Layer" +#~ msgstr "加载地图图层" + +#~ msgid "Open Layer" +#~ msgstr "打开图层" + +#~ msgid "%f km" +#~ msgstr "%f 千米" + +#~ msgid "%f m" +#~ msgstr "%f 米" + +#~ msgid "%f mi" +#~ msgstr "%f 英里" + +#~ msgid "%f ft" +#~ msgstr "%f 英尺" + +#~ msgid "Failed to parse GeoJSON file" +#~ msgstr "解析 GeoJSON 文件失败" + +#~ msgid "Country code: %s" +#~ msgstr "国家代码:%s" + +#~ msgid "Last known location and accuracy" +#~ msgstr "最近已知的位置和精度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "最近已知的位置(经纬度)和精度(米)。" + +#~ msgid "Description of last known location of user." +#~ msgstr "对最近已知的用户位置的描述。" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "最近已知的位置 是否是用户手动设置的。" + +#~ msgid "I’m here!" +#~ msgstr "我在这!" + +#~ msgid "%f km²" +#~ msgstr "%f平方千米" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "To" +#~ msgstr "到" + +#~ msgid "From" +#~ msgstr "从" + +#~ msgid "Satellite" +#~ msgstr "卫星" + +#~ msgid "Track user location." +#~ msgstr "跟踪用户位置。" diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 00000000..0911015d --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,213 @@ +# Chinese (Hong Kong) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"maps&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-08-30 18:59+0000\n" +"PO-Revision-Date: 2014-08-31 15:54+0800\n" +"Last-Translator: Chao-Hsiung Liao \n" +"Language-Team: Chinese (Hong Kong) \n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.6.3\n" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:1 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "Maps 讓你可以快速存取世界上的地圖。它讓你快速的找到想找的位置,只要搜尋城市或街道,也可以定位要與朋友見面的場所。" + +#: ../data/org.gnome.Maps.appdata.xml.in.h:2 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "Maps 使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: ../data/org.gnome.Maps.appdata.xml.in.h:6 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "你甚至能搜尋指定的位置類型,像是“Pubs near Main Street, Boston“或是“Hotels near Alexanderplatz, Berlin“" + +#. Translators: This is the program name. */ +#: ../data/org.gnome.Maps.desktop.in.in.h:1 ../src/application.js:66 +#: ../src/mainWindow.js:303 ../src/main-window.ui.h:1 +msgid "Maps" +msgstr "地圖" + +#: ../data/org.gnome.Maps.desktop.in.in.h:2 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#: ../data/org.gnome.Maps.desktop.in.in.h:3 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: ../data/org.gnome.maps.gschema.xml.in.h:1 +msgid "Window size" +msgstr "視窗尺寸" + +#: ../data/org.gnome.maps.gschema.xml.in.h:2 +msgid "Window size (width and height)." +msgstr "視窗大小 (闊度與高度)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:3 +msgid "Window position" +msgstr "視窗位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:4 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:5 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: ../data/org.gnome.maps.gschema.xml.in.h:6 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: ../data/org.gnome.maps.gschema.xml.in.h:7 +msgid "Last known location and accuracy" +msgstr "上次知道的位置與準確度" + +#: ../data/org.gnome.maps.gschema.xml.in.h:8 +msgid "" +"Last known location (latitude and longitude in degrees) and accuracy (in " +"meters)." +msgstr "上次知道的位置 (緯度與經度) 與準確度 (以米計)" + +#: ../data/org.gnome.maps.gschema.xml.in.h:9 +msgid "Description of last known location" +msgstr "上次知道的位置描述" + +#: ../data/org.gnome.maps.gschema.xml.in.h:10 +msgid "Description of last known location of user." +msgstr "上次知道的使用者位置描述。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:11 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: ../data/org.gnome.maps.gschema.xml.in.h:12 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:13 +msgid "User set last known location" +msgstr "使用者設定上次知道的位置" + +#: ../data/org.gnome.maps.gschema.xml.in.h:14 +msgid "Whether the last known location was set manually by the user." +msgstr "上次知道的位置是否是由使用者手動設定。" + +#: ../data/org.gnome.maps.gschema.xml.in.h:15 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: ../data/org.gnome.maps.gschema.xml.in.h:16 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: ../src/app-menu.ui.h:1 +msgid "About" +msgstr "關於" + +#: ../src/app-menu.ui.h:2 +msgid "Quit" +msgstr "結束" + +#: ../src/context-menu.ui.h:1 +msgid "What’s here?" +msgstr "這裏有什麼?" + +#: ../src/context-menu.ui.h:2 +msgid "I’m here!" +msgstr "我在這裏!" + +#: ../src/mainWindow.js:301 +msgid "translator-credits" +msgstr "Chao-Hsiung Liao , 2013" + +#: ../src/mainWindow.js:304 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: ../src/routeService.js:76 +msgid "No route found." +msgstr "找不到路線。" + +#: ../src/routeService.js:82 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: ../src/routeService.js:153 +msgid "Start!" +msgstr "開始!" + +#: ../src/searchResultBubble.js:60 +#, javascript-format +msgid "Country code: %s" +msgstr "國家代碼:%s" + +#: ../src/searchResultBubble.js:66 +#, javascript-format +msgid "Postal code: %s" +msgstr "郵遞區號:%s" + +#: ../src/sidebar.ui.h:1 +msgid "To" +msgstr "終點" + +#: ../src/sidebar.ui.h:2 +msgid "From" +msgstr "起點" + +#: ../src/user-location-bubble.ui.h:1 +msgid "Current location" +msgstr "目前位置" + +#. To translators: %s can be "Unknown", "Exact" or "%f km²" +#: ../src/user-location-bubble.ui.h:4 +#, no-c-format +#| msgid "" +#| "%s\n" +#| "Position Accuracy: %s" +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:166 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information */ +#: ../src/utils.js:169 +msgid "Exact" +msgstr "準確" + +#: ../src/utils.js:179 +#, javascript-format +#| msgid " km²" +msgid "%f km²" +msgstr "%f km²" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Street" +#~ msgstr "街道" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 00000000..e8c16084 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1986 @@ +# Chinese (Taiwan) translation for gnome-maps. +# Copyright (C) 2013 gnome-maps's COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-maps package. +# +# pan93412 , 2019. +msgid "" +msgstr "" +"Project-Id-Version: gnome-maps master\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-maps/issues\n" +"POT-Creation-Date: 2020-09-16 21:00+0000\n" +"PO-Revision-Date: 2020-10-12 21:58+0800\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Chinese \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.4.1\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: data/org.gnome.Maps.appdata.xml.in:6 +msgid "GNOME Maps" +msgstr "GNOME 地圖" + +#: data/org.gnome.Maps.appdata.xml.in:7 +msgid "Find places around the world" +msgstr "尋找世界上各個地方" + +#: data/org.gnome.Maps.appdata.xml.in:9 +msgid "" +"Maps gives you quick access to maps all across the world. It allows you to " +"quickly find the place you’re looking for by searching for a city or street, " +"or locate a place to meet a friend." +msgstr "" +"《地圖》讓您可以快速存取世界上的地圖。它讓您快速的找到想找的位置,只要搜尋城" +"市或街道,也可以定位要與朋友見面的場所。" + +#: data/org.gnome.Maps.appdata.xml.in:14 +msgid "" +"Maps uses the collaborative OpenStreetMap database, made by hundreds of " +"thousands of people across the globe." +msgstr "" +"《地圖》使用共同協作的 OpenStreetMap 資料庫,由全球各地難以計數的人們共同製" +"作。" + +#. Translators: Search is carried out on OpenStreetMap data using Nominatim. +#. Visit http://wiki.openstreetmap.org/wiki/Nominatim/Special_Phrases and click +#. your language to see what words you can use for the translated search. +#: data/org.gnome.Maps.appdata.xml.in:22 +msgid "" +"You can even search for specific types of locations, such as “Pubs near Main " +"Street, Boston” or “Hotels near Alexanderplatz, Berlin”." +msgstr "" +"您甚至能搜尋指定的位置類型,像是「Pubs near Main Street, Boston」或是" +"「Hotels near Alexanderplatz, Berlin」等。" + +#: data/org.gnome.Maps.appdata.xml.in:159 +msgid "The GNOME Project" +msgstr "GNOME 專案" + +#. Translators: This is the program name. +#. for some reason, setting the title of the window through the .ui +#. * template does not work anymore (maybe has something to do with +#. * setting a custom title on the headerbar). Setting it programmatically +#. * here works though. And yields a proper label in the gnome-shell +#. * overview. +#. +#. Translators: This is the program name. +#: data/org.gnome.Maps.desktop.in:4 data/ui/main-window.ui:34 +#: src/application.js:81 src/mainWindow.js:129 src/mainWindow.js:567 +msgid "Maps" +msgstr "地圖" + +#: data/org.gnome.Maps.desktop.in:5 +msgid "A simple maps application" +msgstr "簡單的地圖應用程式" + +#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +#: data/org.gnome.Maps.desktop.in:14 +msgid "Maps;" +msgstr "Maps;地圖;" + +#: data/org.gnome.Maps.desktop.in:17 +msgid "Allows your location to be shown on the map." +msgstr "允許您的位置顯示在地圖上。" + +#: data/org.gnome.Maps.gschema.xml:11 +msgid "last viewed location" +msgstr "最後檢視的位置" + +#: data/org.gnome.Maps.gschema.xml:12 +msgid "Coordinates of last viewed location." +msgstr "最後檢視位置的坐標。" + +#: data/org.gnome.Maps.gschema.xml:16 +msgid "zoom" +msgstr "縮放" + +#: data/org.gnome.Maps.gschema.xml:17 +msgid "Zoom level" +msgstr "縮放等級" + +#: data/org.gnome.Maps.gschema.xml:21 +msgid "Map type" +msgstr "地圖類型" + +#: data/org.gnome.Maps.gschema.xml:22 +msgid "The type of map to display (street, aerial, etc.)" +msgstr "要顯示的地圖類型(街道、航空圖等)" + +#: data/org.gnome.Maps.gschema.xml:26 +msgid "Window size" +msgstr "視窗尺寸" + +#: data/org.gnome.Maps.gschema.xml:27 +msgid "Window size (width and height)." +msgstr "視窗大小 (寬度與高度)。" + +#: data/org.gnome.Maps.gschema.xml:31 +msgid "Window position" +msgstr "視窗位置" + +#: data/org.gnome.Maps.gschema.xml:32 +msgid "Window position (X and Y)." +msgstr "視窗位置 (X 與 Y)。" + +#: data/org.gnome.Maps.gschema.xml:36 +msgid "Window maximized" +msgstr "視窗已最大化" + +#: data/org.gnome.Maps.gschema.xml:37 +msgid "Window maximization state" +msgstr "視窗最大化狀態" + +#: data/org.gnome.Maps.gschema.xml:41 +msgid "Maximum number of search results" +msgstr "搜尋結果的最大數量" + +#: data/org.gnome.Maps.gschema.xml:42 +msgid "Maximum number of search results from geocode search." +msgstr "從 geocode 搜尋取得的最大搜尋結果數。" + +#: data/org.gnome.Maps.gschema.xml:46 +msgid "Number of recent places to store" +msgstr "要儲存的最近位置數" + +#: data/org.gnome.Maps.gschema.xml:47 +msgid "Number of recently visited places to store." +msgstr "要儲存的最近到訪位置數。" + +#: data/org.gnome.Maps.gschema.xml:51 +msgid "Number of recent routes to store" +msgstr "要儲存的最近路線數" + +#: data/org.gnome.Maps.gschema.xml:52 +msgid "Number of recently visited routes to store." +msgstr "要儲存的最近到訪路線數。" + +#: data/org.gnome.Maps.gschema.xml:56 +msgid "Facebook check-in privacy setting" +msgstr "Facebook 打卡隱私權設定值" + +#. Translators: EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS, and SELF are constant names, and should not be translated +#: data/org.gnome.Maps.gschema.xml:58 +msgid "" +"Latest used Facebook check-in privacy setting. Possible values are: " +"EVERYONE, FRIENDS_OF_FRIENDS, ALL_FRIENDS or SELF." +msgstr "" +"最近使用的 Facebook 打卡隱私權設定值。可能的數值有:EVERYONE, " +"FRIENDS_OF_FRIENDS, ALL_FRIENDS 或 SELF。" + +#: data/org.gnome.Maps.gschema.xml:62 +msgid "Foursquare check-in privacy setting" +msgstr "Foursquare 打卡隱私權設定值" + +#: data/org.gnome.Maps.gschema.xml:63 +msgid "" +"Latest used Foursquare check-in privacy setting. Possible values are: " +"public, followers or private." +msgstr "" +"最近使用的 Foursquare 打卡隱私權設定值。可能的數值有:public, followers 或 " +"private。" + +#: data/org.gnome.Maps.gschema.xml:67 +msgid "Foursquare check-in Facebook broadcasting" +msgstr "Foursquare 打卡 Facebook 廣播" + +#: data/org.gnome.Maps.gschema.xml:68 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a post in the " +"Facebook account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Facebook 帳號連結的 Foursquare 帳號以貼文方式廣" +"播此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:72 +msgid "Foursquare check-in Twitter broadcasting" +msgstr "Foursquare 打卡 Twitter 廣播" + +#: data/org.gnome.Maps.gschema.xml:73 +msgid "" +"Indicates if Foursquare should broadcast the check-in as a tweet in the " +"Twitter account associated with the Foursquare account." +msgstr "" +"表示 Foursquare 是否應比照與 Twitter 帳號連結的 Foursquare 帳號以推文方式廣播" +"此次打卡。" + +#: data/org.gnome.Maps.gschema.xml:77 +msgid "OpenStreetMap username or e-mail address" +msgstr "OpenStreetMap 的使用者名稱或電子郵件位址" + +#: data/org.gnome.Maps.gschema.xml:78 +msgid "Indicates if the user has signed in to edit OpenStreetMap data." +msgstr "指示使用者是否已登入可編輯 OpenStreetMap 資料。" + +#: data/org.gnome.Maps.gschema.xml:82 +msgid "Last used transportation type for routing" +msgstr "上次路線規劃時使用的交通類型" + +#: data/org.gnome.Maps.gschema.xml:86 +msgid "Night mode" +msgstr "夜晚模式" + +#: data/org.gnome.Maps.gschema.xml:87 +msgid "Whether the application is in night mode." +msgstr "應用程式是否使用夜晚模式。" + +#: data/org.gnome.Maps.gschema.xml:91 +msgid "Use hybrid aerial tiles" +msgstr "使用混合式航照圖磚" + +#: data/org.gnome.Maps.gschema.xml:92 +msgid "Whether aerial tiles should use hybrid style (with labels)." +msgstr "是否應該使用混合風格(附帶文字標籤)的航照圖磚。" + +#: data/ui/check-in-dialog.ui:250 data/ui/check-in-dialog.ui:299 +msgid "Visibility" +msgstr "可見狀態" + +#: data/ui/check-in-dialog.ui:334 +msgid "Post on Facebook" +msgstr "張貼到 Facebook" + +#: data/ui/check-in-dialog.ui:348 +msgid "Post on Twitter" +msgstr "張貼到 Twitter" + +#: data/ui/check-in-dialog.ui:388 data/ui/export-view-dialog.ui:20 +#: data/ui/send-to-dialog.ui:13 data/ui/shape-layer-file-chooser.ui:22 +msgid "_Cancel" +msgstr "取消(_C)" + +#. Translators: Check in is used as a verb +#: data/ui/check-in-dialog.ui:399 data/ui/map-bubble.ui:93 +msgid "C_heck in" +msgstr "打卡(_H)" + +#: data/ui/check-in-dialog.ui:427 +msgid "Everyone" +msgstr "每個人" + +#: data/ui/check-in-dialog.ui:431 +msgid "Friends of friends" +msgstr "朋友的朋友" + +#: data/ui/check-in-dialog.ui:435 +msgid "Just friends" +msgstr "僅限朋友" + +#: data/ui/check-in-dialog.ui:439 +msgid "Just me" +msgstr "僅限本人" + +#: data/ui/check-in-dialog.ui:453 +msgid "Public" +msgstr "公開" + +#: data/ui/check-in-dialog.ui:457 +msgid "Followers" +msgstr "跟隨" + +#: data/ui/check-in-dialog.ui:461 +msgid "Private" +msgstr "私人" + +#: data/ui/context-menu.ui:9 +msgid "Route from here" +msgstr "從這裡開始的路線" + +#: data/ui/context-menu.ui:16 +msgid "Add intermediate destination" +msgstr "加入中間目的地" + +#: data/ui/context-menu.ui:24 +msgid "Route to here" +msgstr "到這裡的路線" + +#: data/ui/context-menu.ui:36 +msgid "What’s here?" +msgstr "這裡有什麼?" + +#: data/ui/context-menu.ui:43 +msgid "Copy Location" +msgstr "複製位置" + +#: data/ui/context-menu.ui:51 +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: data/ui/export-view-dialog.ui:14 +msgid "Export view" +msgstr "匯出檢視" + +#: data/ui/export-view-dialog.ui:34 +msgid "_Export" +msgstr "匯出(_E)" + +#: data/ui/export-view-dialog.ui:126 +msgid "Include route and markers" +msgstr "包含路線和標記" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:15 +msgid "Go to current location" +msgstr "前往目前位置" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:36 +msgid "Choose map type" +msgstr "選擇地圖類型" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:61 +msgid "Zoom out" +msgstr "拉遠" + +#. Translators: This is a tooltip +#: data/ui/headerbar-left.ui:77 +msgid "Zoom in" +msgstr "拉近" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:16 +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:37 +msgid "Toggle favorites" +msgstr "切換喜好" + +#. Translators: This is a tooltip +#: data/ui/headerbar-right.ui:57 +msgid "Print Route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:14 +msgctxt "shortcut window" +msgid "General" +msgstr "一般" + +#: data/ui/help-overlay.ui:18 +msgctxt "shortcut window" +msgid "Show Shortcuts" +msgstr "顯示快捷鍵" + +#: data/ui/help-overlay.ui:25 +msgctxt "shortcut window" +msgid "Search" +msgstr "搜尋" + +#: data/ui/help-overlay.ui:32 +msgctxt "shortcut window" +msgid "Toggle route planner" +msgstr "切換路徑規劃器" + +#: data/ui/help-overlay.ui:39 +msgctxt "shortcut window" +msgid "Print route" +msgstr "列印路線" + +#: data/ui/help-overlay.ui:46 +msgctxt "shortcut window" +msgid "Quit" +msgstr "結束" + +#: data/ui/help-overlay.ui:53 +msgctxt "shortcut window" +msgid "Open main menu" +msgstr "開啟主選單" + +#: data/ui/help-overlay.ui:62 +msgctxt "shortcut window" +msgid "Map View" +msgstr "地圖檢視" + +#: data/ui/help-overlay.ui:66 +msgctxt "shortcut window" +msgid "Zoom in" +msgstr "拉近" + +#: data/ui/help-overlay.ui:73 +msgctxt "shortcut window" +msgid "Zoom out" +msgstr "拉遠" + +#: data/ui/help-overlay.ui:80 +msgctxt "shortcut window" +msgid "Toggle scale" +msgstr "切換縮放" + +#: data/ui/help-overlay.ui:87 +msgctxt "shortcut window" +msgid "Go to current location" +msgstr "前往目前位置" + +#: data/ui/help-overlay.ui:94 +msgctxt "shortcut window" +msgid "Switch to street view" +msgstr "切換為街道檢視" + +#: data/ui/help-overlay.ui:101 +msgctxt "shortcut window" +msgid "Switch to aerial view" +msgstr "切換為鳥瞰圖" + +#: data/ui/help-overlay.ui:108 +msgctxt "shortcut window" +msgid "Open shape layer" +msgstr "開啟形狀圖層" + +#: data/ui/layers-popover.ui:65 +msgid "Show Labels" +msgstr "顯示文字標籤" + +#. Translators: This string uses ellipsis character +#: data/ui/layers-popover.ui:102 +msgid "Open Shape Layer…" +msgstr "開啟形狀圖層…" + +#: data/ui/location-service-dialog.ui:16 +msgid "Turn on location services to find your location" +msgstr "開啟位置服務以尋找您的位置" + +#: data/ui/location-service-dialog.ui:28 data/ui/osm-edit-dialog.ui:283 +#: data/ui/zoom-in-dialog.ui:28 +msgid "Cancel" +msgstr "取消" + +#: data/ui/location-service-dialog.ui:38 +msgid "Location Settings" +msgstr "位置設定值" + +#: data/ui/main-window.ui:8 +msgid "Night Mode" +msgstr "夜晚模式" + +#: data/ui/main-window.ui:12 +msgid "Set up OpenStreetMap Account" +msgstr "設定 OpenStreetMap 帳號" + +#: data/ui/main-window.ui:16 +msgid "Export as Image" +msgstr "匯出為影像" + +#: data/ui/main-window.ui:21 +msgid "_Keyboard Shortcuts" +msgstr "鍵盤快捷鍵(_K)" + +#: data/ui/main-window.ui:26 +msgid "About Maps" +msgstr "關於《地圖》" + +#: data/ui/main-window.ui:52 +msgid "Open main menu" +msgstr "開啟主選單" + +#: data/ui/main-window.ui:114 +msgid "Maps is offline!" +msgstr "Maps 已離線!" + +#: data/ui/main-window.ui:122 +msgid "" +"Maps need an active internet connection to function properly, but one can’t " +"be found." +msgstr "Maps 需要使用網際網路連線才能正常運作,但找不到網際網路。" + +#: data/ui/main-window.ui:130 +msgid "Check your connection and proxy settings." +msgstr "請檢查您的連線與代理伺服器設定值。" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:45 +msgid "Add to new route" +msgstr "加入新的路線" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:62 +msgid "Share location" +msgstr "分享位置" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:79 +msgid "Mark as favorite" +msgstr "標記為喜好" + +#. Translators: This is a tooltip +#: data/ui/map-bubble.ui:98 +msgid "Check in here" +msgstr "在這裡檢查" + +#: data/ui/osm-account-dialog.ui:9 +msgid "OpenStreetMap Account" +msgstr "OpenStreetMap 帳號" + +#: data/ui/osm-account-dialog.ui:22 +msgid "Sign in to edit maps" +msgstr "登入以編輯地圖" + +#: data/ui/osm-account-dialog.ui:36 +msgid "" +"Help to improve the map, using an\n" +"OpenStreetMap account." +msgstr "" +"協助改善地圖,使用\n" +"OpenStreetMap 帳號。" + +#: data/ui/osm-account-dialog.ui:56 +msgid "Email" +msgstr "電子郵件" + +#: data/ui/osm-account-dialog.ui:81 +msgid "Password" +msgstr "密碼" + +#: data/ui/osm-account-dialog.ui:125 +msgid "Sign up" +msgstr "註冊" + +#: data/ui/osm-account-dialog.ui:139 +msgid "Sign In" +msgstr "登入" + +#. The label should contain the link to the OSM reset password page with a translated title +#: data/ui/osm-account-dialog.ui:162 +msgid "" +"Sorry, that didn’t work. Please try again, or visit\n" +"OpenStreetMap to reset your password." +msgstr "" +"抱歉,那沒有作用。請再試一次,或者參訪\n" +"OpenStreetMap以重置您的密碼。" + +#: data/ui/osm-account-dialog.ui:175 +msgid "The verification code didn’t match, please try again." +msgstr "驗證碼不符合,請再試一次。" + +#: data/ui/osm-account-dialog.ui:201 +msgid "Enter verification code shown above" +msgstr "輸入上面顯示的驗證碼" + +#: data/ui/osm-account-dialog.ui:224 +msgid "Verify" +msgstr "驗證" + +#: data/ui/osm-account-dialog.ui:254 +msgid "Signed In" +msgstr "已登入" + +#: data/ui/osm-account-dialog.ui:267 +msgid "Your OpenStreetMap account is active." +msgstr "您的 OpenStreetMap 帳號已啟用。" + +#: data/ui/osm-account-dialog.ui:301 +msgid "Sign Out" +msgstr "登出" + +#: data/ui/osm-edit-address.ui:14 +msgid "Street" +msgstr "街道" + +#: data/ui/osm-edit-address.ui:26 +msgid "House number" +msgstr "門牌號碼" + +#: data/ui/osm-edit-address.ui:38 +msgid "Postal code" +msgstr "郵遞區號" + +#. This is the place name as it would be written in a postal address (typically coming after the postal code) +#: data/ui/osm-edit-address.ui:50 +msgid "City" +msgstr "城市" + +#: data/ui/osm-edit-dialog.ui:58 +msgid "Type" +msgstr "類型" + +#: data/ui/osm-edit-dialog.ui:84 +msgid "None" +msgstr "沒有" + +#: data/ui/osm-edit-dialog.ui:129 +msgid "Add Field" +msgstr "加入欄位" + +#: data/ui/osm-edit-dialog.ui:163 +msgid "Comment" +msgstr "評註" + +#: data/ui/osm-edit-dialog.ui:195 +msgid "" +"Map changes will be visible on all maps that use\n" +"OpenStreetMap data." +msgstr "" +"地圖更動資訊會在所有利用 OpenStreetMap\n" +" 資料的地圖中出現。" + +#: data/ui/osm-edit-dialog.ui:241 +msgid "Recently Used" +msgstr "最近使用" + +#: data/ui/osm-edit-dialog.ui:280 +msgctxt "dialog title" +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#: data/ui/osm-edit-dialog.ui:310 src/osmEditDialog.js:513 +msgid "Next" +msgstr "下一個" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:49 +msgid "Edit on OpenStreetMap" +msgstr "在 OpenStreetMap 編輯" + +#. Translators: This is a tooltip +#: data/ui/place-bubble.ui:73 +msgid "Show more information" +msgstr "顯示更多資訊" + +#: data/ui/place-popover.ui:54 +msgid "No results found" +msgstr "找不到結果" + +#. Translators: This is a tooltip +#: data/ui/route-entry.ui:20 +msgid "Drag to change order of the route" +msgstr "拖曳以修改路徑順序" + +#: data/ui/send-to-dialog.ui:10 +msgid "Open Location" +msgstr "開啟位置" + +#: data/ui/send-to-dialog.ui:70 +msgid "Copy" +msgstr "複製" + +#: data/ui/send-to-dialog.ui:76 +msgid "Send To…" +msgstr "傳送至…" + +#: data/ui/shape-layer-file-chooser.ui:4 src/mainWindow.js:64 +msgid "Open Shape Layer" +msgstr "開啟形狀圖層" + +#: data/ui/shape-layer-file-chooser.ui:12 +msgid "_Open" +msgstr "開啟(_O)" + +#. Translators: This is a tooltip +#: data/ui/shape-layer-row.ui:19 +msgid "Toggle visible" +msgstr "切換可見性" + +#: data/ui/sidebar.ui:275 +msgid "Route search by GraphHopper" +msgstr "透過 GraphHopper 搜尋路線" + +#: data/ui/sidebar.ui:364 +msgid "" +"Routing itineraries for public transit is provided by third-party\n" +"services.\n" +"GNOME can not guarantee correctness of the itineraries and schedules shown.\n" +"Note that some providers might not include all available modes of " +"transportation,\n" +"e.g. a national provider might not include airlines, and a local provider " +"could\n" +"miss regional trains.\n" +"Names and brands shown are to be considered as registered trademarks when " +"applicable." +msgstr "" +"大眾運輸的路線規劃是由第三方服務提供。\n" +"GNOME 無法保證所顯示的規劃與行程的正確性。\n" +"注意,有些服務供應商也許無法囊括所有可能的轉運方式,\n" +"例:國營供應商或許沒列入航班,而地方供應商可能缺少\n" +"區域性的車班資訊。\n" +"此處所顯示的名稱或商標為其註冊商標所有人所有。" + +#: data/ui/social-place-more-results-row.ui:8 +msgid "Show more results" +msgstr "顯示更多結果" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:126 +msgid "Hide intermediate stops and information" +msgstr "隱藏中間站與資訊" + +#. Translators: This is a tooltip +#: data/ui/transit-leg-row.ui:200 +msgid "Show intermediate stops and information" +msgstr "顯示中間站與資訊" + +#. Indicates searching for the next available itineraries +#: data/ui/transit-options-panel.ui:18 +msgid "Leave Now" +msgstr "正在離開" + +#. Indicates searching for itineraries leaving at the specified time at the earliest +#: data/ui/transit-options-panel.ui:19 +msgid "Leave By" +msgstr "離開於" + +#. Indicates searching for itineraries arriving no later than the specified time +#: data/ui/transit-options-panel.ui:20 +msgid "Arrive By" +msgstr "抵達於" + +#. Header indicating selected modes of transit +#: data/ui/transit-options-panel.ui:106 +msgid "Show" +msgstr "顯示" + +#: data/ui/transit-options-panel.ui:117 +msgid "Buses" +msgstr "公車" + +#: data/ui/transit-options-panel.ui:124 +msgid "Trams" +msgstr "輕軌" + +#: data/ui/transit-options-panel.ui:131 +msgid "Trains" +msgstr "火車" + +#: data/ui/transit-options-panel.ui:138 +msgid "Subway" +msgstr "捷運" + +#: data/ui/transit-options-panel.ui:145 +msgid "Ferries" +msgstr "渡輪" + +#: data/ui/transit-options-panel.ui:152 +msgid "Airplanes" +msgstr "飛機" + +#: data/ui/user-location-bubble.ui:13 src/geoclue.js:118 +msgid "Current location" +msgstr "目前位置" + +#: data/ui/zoom-in-dialog.ui:16 +msgid "Zoom in to add location!" +msgstr "拉近以加入位置!" + +#: data/ui/zoom-in-dialog.ui:38 +msgid "Zoom In" +msgstr "拉近" + +#: lib/maps-file-tile-source.c:303 lib/maps-file-tile-source.c:379 +#: lib/maps-file-tile-source.c:459 +msgid "Failed to find tile structure in directory" +msgstr "無法在目錄中找到圖磚結構" + +#: lib/maps-osm.c:56 +msgid "Failed to parse XML document" +msgstr "無法解析 XML 文件" + +#: lib/maps-osm.c:249 lib/maps-osm.c:402 +msgid "Missing required attributes" +msgstr "缺少了必要的屬性" + +#: lib/maps-osm.c:450 +msgid "Could not find OSM element" +msgstr "找不到 OSM 元素" + +#: src/application.js:95 +msgid "A path to a local tiles directory structure" +msgstr "本地端圖磚目錄結構的路徑" + +#: src/application.js:101 +msgid "Tile size for local tiles directory" +msgstr "本地端圖磚目錄的圖磚大小" + +#: src/application.js:105 +msgid "Show the version of the program" +msgstr "顯示程式版本" + +#: src/application.js:111 +msgid "Ignore network availability" +msgstr "忽略網路可用性" + +#: src/application.js:121 src/application.js:122 +msgid "[FILE…|URI]" +msgstr "[FILE…|URI]" + +#: src/checkInDialog.js:167 +msgid "Select an account" +msgstr "選擇一個帳號" + +#: src/checkInDialog.js:172 src/checkInDialog.js:244 +msgid "Loading" +msgstr "載入中" + +#: src/checkInDialog.js:196 +msgid "Select a place" +msgstr "選擇一個地點" + +#: src/checkInDialog.js:201 +msgid "" +"Maps cannot find the place to check in to with Facebook. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Facebook 中打卡的地點。請從清單中選擇一個。" + +#: src/checkInDialog.js:203 +msgid "" +"Maps cannot find the place to check in to with Foursquare. Please select one " +"from this list." +msgstr "Maps 找不到可以在 Foursquare 中打卡的地點。請從清單中選擇一個。" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:218 +#, javascript-format +msgid "Check in to %s" +msgstr "打卡於:%s" + +#. Translators: %s is the name of the place to check in. +#. +#: src/checkInDialog.js:228 +#, javascript-format +msgid "Write an optional message to check in to %s." +msgstr "寫些關於在 %s 打卡的訊息。" + +#: src/checkInDialog.js:280 src/checkIn.js:162 src/osmEditDialog.js:550 +msgid "An error has occurred" +msgstr "發生錯誤" + +#. Translators: %s is the place name that user wanted to check-in +#: src/checkIn.js:144 +#, javascript-format +msgid "Cannot find “%s” in the social service" +msgstr "在社群服務中找不到「%s」" + +#: src/checkIn.js:146 +msgid "Cannot find a suitable place to check-in in this location" +msgstr "找不到適合的地點來打卡" + +#: src/checkIn.js:150 +msgid "" +"Credentials have expired, please open Online Accounts to sign in and enable " +"this account" +msgstr "憑證已過期,請開啟線上帳號再次登入並啟用這個帳號" + +#: src/contextMenu.js:135 +msgid "Nothing found here!" +msgstr "這裡找不到東西!" + +#: src/contextMenu.js:196 +msgid "" +"Location was added to the map, note that it may take a while before it shows " +"on the map and in search results." +msgstr "" +"位置已加到地圖上,請注意在顯示在地圖上與搜尋結果中之前可能需要一段時間。" + +#. Translators: This is a format string for a PNG filename for an +#. * exported image with coordinates. The .png extension should be kept +#. * intact in the translated string. +#. +#: src/exportViewDialog.js:82 +#, javascript-format +msgid "Maps at %f, %f.png" +msgstr "於 %f 的地圖, %f.png" + +#: src/exportViewDialog.js:154 +msgid "Filesystem is read only" +msgstr "檔案系統是唯讀的" + +#: src/exportViewDialog.js:156 +msgid "You do not have permission to save there" +msgstr "您沒有在該處儲存檔案的權限" + +#: src/exportViewDialog.js:158 +msgid "The directory does not exist" +msgstr "目錄不存在" + +#: src/exportViewDialog.js:160 +msgid "No filename specified" +msgstr "沒有指定檔案名稱" + +#: src/exportViewDialog.js:168 +msgid "Unable to export view" +msgstr "無法匯出檢視" + +#: src/geoJSONSource.js:97 +msgid "invalid coordinate" +msgstr "無效的坐標" + +#: src/geoJSONSource.js:146 src/geoJSONSource.js:186 src/geoJSONSource.js:201 +msgid "parse error" +msgstr "解析錯誤" + +#: src/geoJSONSource.js:180 +msgid "unknown geometry" +msgstr "不明的位置大小" + +#: src/graphHopper.js:112 src/transitPlan.js:201 +msgid "Route request failed." +msgstr "要求路線失敗。" + +#: src/graphHopper.js:119 src/transitPlan.js:193 +msgid "No route found." +msgstr "找不到路線。" + +#: src/graphHopper.js:207 src/transitplugins/openTripPlanner.js:1111 +msgid "Start!" +msgstr "開始!" + +#: src/mainWindow.js:61 +msgid "All Layer Files" +msgstr "所有圖層檔案" + +#: src/mainWindow.js:470 +msgid "Failed to connect to location service" +msgstr "無法連接位置服務" + +#: src/mainWindow.js:565 +msgid "translator-credits" +msgstr "" +"Chao-Hsiung Liao , 2013\n" +"Yi-Jyun Pan , 2020\n" +"Cheng-Chia Tseng , 2020" + +#: src/mainWindow.js:568 +msgid "A map application for GNOME" +msgstr "GNOME 的地圖程式" + +#: src/mainWindow.js:579 +msgid "Copyright © 2011 – 2019 Red Hat, Inc. and The GNOME Maps authors" +msgstr "著作權所有 © 2011 – 2019 Red Hat, Inc. 和 GNOME 地圖作者群" + +#: src/mainWindow.js:599 +#, javascript-format +msgid "Map data by %s and contributors" +msgstr "來自 %s 與貢獻者的地圖資料" + +#. Translators: this is an attribution string giving credit to the +#. * tile provider where the %s placeholder is replaced by either +#. * the bare name of the tile provider, or a linkified URL if one +#. * is available +#. +#: src/mainWindow.js:615 +#, javascript-format +msgid "Map tiles provided by %s" +msgstr "由 %s 提供的圖磚" + +#. Translators: this is an attribution string giving credit to the +#. * search provider where the first %s placeholder is replaced by either +#. * the bare name of the geocoder provider, or a linkified URL if one +#. * is available, and the second %s placeholder is replaced by the +#. * URL to the geocoder project page. These placeholders +#. * can be swapped, if needed using the %n$s positional syntax +#. * (i.e. "%2$s ... %1$s ..." for positioning the project URL +#. * before the provider). +#. +#: src/mainWindow.js:644 +#, javascript-format +msgid "Search provided by %s using %s" +msgstr "搜尋使用 %2$s 並由 %1$s 提供" + +#: src/mapView.js:466 +msgid "File type is not supported" +msgstr "檔案類型不支援" + +#: src/mapView.js:473 +msgid "Failed to open layer" +msgstr "無法開啟圖層" + +#: src/mapView.js:509 +msgid "Failed to open GeoURI" +msgstr "無法開啟 GeoURI" + +#. setting the status in session.cancel_message still seems +#. to always give status IO_ERROR +#: src/osmConnection.js:436 +msgid "Incorrect user name or password" +msgstr "不正確的使用者名稱或密碼" + +#: src/osmConnection.js:438 +msgid "Success" +msgstr "成功" + +#: src/osmConnection.js:440 +msgid "Bad request" +msgstr "錯誤的要求" + +#: src/osmConnection.js:442 +msgid "Object not found" +msgstr "找不到物件" + +#: src/osmConnection.js:444 +msgid "Conflict, someone else has just modified the object" +msgstr "衝突,有其他人剛剛修改了這個物件" + +#: src/osmConnection.js:446 +msgid "Object has been deleted" +msgstr "物件已刪除" + +#: src/osmConnection.js:448 +msgid "Way or relation refers to non-existing children" +msgstr "路徑或關係參照到不存在的子項" + +#: src/osmEditDialog.js:106 +msgid "Name" +msgstr "名稱" + +#: src/osmEditDialog.js:109 +msgid "The official name. This is typically what appears on signs." +msgstr "正式的名稱。這通常會出現在招牌上。" + +#: src/osmEditDialog.js:112 +msgid "Address" +msgstr "地址" + +#: src/osmEditDialog.js:120 +msgid "Website" +msgstr "網站" + +#: src/osmEditDialog.js:123 +msgid "" +"The official website. Try to use the most basic form of a URL i.e. http://" +"example.com instead of http://example.com/index.html." +msgstr "" +"官方網站。嘗試使用最基本形式的 URL ,例如 HTTP://example.com ,而不是 HTTP://" +"example.com/index.html。" + +#: src/osmEditDialog.js:128 +msgid "Phone" +msgstr "電話" + +#: src/osmEditDialog.js:132 +msgid "" +"Phone number. Use the international format, starting with a + sign. Beware " +"of local privacy laws, especially for private phone numbers." +msgstr "" +"電話號碼。使用國際格式,以 + 號開頭。提防當地的隱私權法律,特別是私人電話號" +"碼。" + +#: src/osmEditDialog.js:137 src/placeBubble.js:197 +msgid "Wikipedia" +msgstr "維基百科" + +#: src/osmEditDialog.js:141 +msgid "" +"The format used should include the language code and the article title like " +"“en:Article title”." +msgstr "使用的格式應該包括語言代碼和文章標題,例如「en:Article title」。" + +#: src/osmEditDialog.js:145 +msgid "Opening hours" +msgstr "開放時間" + +#: src/osmEditDialog.js:150 +msgid "See the link in the label for help on format." +msgstr "請參閱標籤的連結以取得格式的求助訊息。" + +#: src/osmEditDialog.js:153 +msgid "Population" +msgstr "資料母體" + +#: src/osmEditDialog.js:158 +msgid "Altitude" +msgstr "海拔高度" + +#: src/osmEditDialog.js:161 +msgid "Elevation (height above sea level) of a point in metres." +msgstr "某一點的高度,以公尺計 (自海平面以上的高度)。" + +#: src/osmEditDialog.js:164 +msgid "Wheelchair access" +msgstr "使用輪椅" + +#: src/osmEditDialog.js:167 src/osmEditDialog.js:176 src/osmEditDialog.js:214 +msgid "Yes" +msgstr "是" + +#: src/osmEditDialog.js:168 src/osmEditDialog.js:177 src/osmEditDialog.js:215 +msgid "No" +msgstr "否" + +#: src/osmEditDialog.js:169 +msgid "Limited" +msgstr "有限制" + +#: src/osmEditDialog.js:170 +msgid "Designated" +msgstr "特定" + +#: src/osmEditDialog.js:173 +msgid "Internet access" +msgstr "網際網路存取" + +#. Translators: +#. * This means a WLAN Hotspot, also know as wireless, wifi or Wi-Fi. +#. +#: src/osmEditDialog.js:178 src/translations.js:340 +msgid "Wi-Fi" +msgstr "Wi-Fi" + +#: src/osmEditDialog.js:179 +msgid "Wired" +msgstr "有線網路" + +#: src/osmEditDialog.js:180 +msgid "Terminal" +msgstr "網路終端" + +#: src/osmEditDialog.js:181 +msgid "Service" +msgstr "服務" + +#: src/osmEditDialog.js:184 +msgid "Religion" +msgstr "宗教" + +#: src/osmEditDialog.js:187 src/translations.js:363 +msgid "Animism" +msgstr "萬物有靈論" + +#: src/osmEditDialog.js:188 +msgid "Bahá’í" +msgstr "巴哈伊教" + +#: src/osmEditDialog.js:189 src/translations.js:365 +msgid "Buddhism" +msgstr "佛教" + +#: src/osmEditDialog.js:190 src/translations.js:366 +msgid "Caodaism" +msgstr "高台教" + +#: src/osmEditDialog.js:191 src/translations.js:367 +msgid "Christianity" +msgstr "基督教" + +#: src/osmEditDialog.js:192 src/translations.js:368 +msgid "Confucianism" +msgstr "儒教" + +#: src/osmEditDialog.js:193 src/translations.js:369 +msgid "Hinduism" +msgstr "印度教" + +#: src/osmEditDialog.js:194 src/translations.js:370 +msgid "Jainism" +msgstr "耆那教" + +#: src/osmEditDialog.js:195 src/translations.js:371 +msgid "Judaism" +msgstr "猶太教" + +#: src/osmEditDialog.js:196 src/translations.js:372 +msgid "Islam" +msgstr "伊斯蘭教" + +#: src/osmEditDialog.js:197 src/translations.js:373 +msgid "Multiple Religions" +msgstr "多種宗教" + +#: src/osmEditDialog.js:198 src/translations.js:374 +msgid "Paganism" +msgstr "異教" + +#: src/osmEditDialog.js:199 src/translations.js:375 +msgid "Pastafarianism" +msgstr "飛天義大利麵神教" + +#: src/osmEditDialog.js:200 src/translations.js:376 +msgid "Scientology" +msgstr "科學神教" + +#: src/osmEditDialog.js:201 src/translations.js:377 +msgid "Shinto" +msgstr "神道教" + +#: src/osmEditDialog.js:202 src/translations.js:378 +msgid "Sikhism" +msgstr "錫克教" + +#: src/osmEditDialog.js:203 src/translations.js:379 +msgid "Spiritualism" +msgstr "精神主義" + +#: src/osmEditDialog.js:204 src/translations.js:380 +msgid "Taoism" +msgstr "道教" + +#: src/osmEditDialog.js:205 src/translations.js:381 +msgid "Unitarian Universalism" +msgstr "一神論的普遍主義" + +#: src/osmEditDialog.js:206 src/translations.js:382 +msgid "Voodoo" +msgstr "巫毒教" + +#: src/osmEditDialog.js:207 src/translations.js:383 +msgid "Yazidism" +msgstr "雅兹迪教" + +#: src/osmEditDialog.js:208 src/translations.js:384 +msgid "Zoroastrianism" +msgstr "拜火教" + +#: src/osmEditDialog.js:211 +msgid "Toilets" +msgstr "廁所" + +#: src/osmEditDialog.js:218 +msgid "Note" +msgstr "備註" + +#: src/osmEditDialog.js:221 +msgid "" +"Information used to inform other mappers about non-obvious information about " +"an element, the author’s intent when creating it, or hints for further " +"improvement." +msgstr "" +"用來通知其他製圖者關於元件、建立時作者的目的、與更多資訊提示的不明顯資訊。" + +#: src/osmEditDialog.js:326 +msgctxt "dialog title" +msgid "Add to OpenStreetMap" +msgstr "加入 OpenStreetMap" + +#: src/osmEditDialog.js:380 +msgid "Select Type" +msgstr "選擇類型" + +#: src/osmEditDialog.js:497 +msgid "Done" +msgstr "完成" + +#: src/photonParser.js:103 +msgid "Unnamed place" +msgstr "未命名位置" + +#. TODO: this is a bit of a work-around to re-interpret the population, +#. * stored as a string into an integer to convert back to a locale- +#. * formatted string. Ideally it should be kept as an integer value +#. * in the Place class. But this will also need to be handled by the +#. * PlaceStore, possible in a backwards-compatible way +#. +#: src/placeBubble.js:149 +msgid "Population:" +msgstr "人口:" + +#: src/placeBubble.js:155 +msgid "Altitude:" +msgstr "海拔高度:" + +#: src/placeBubble.js:160 +msgid "Opening hours:" +msgstr "開放時間:" + +#: src/placeBubble.js:165 +msgid "Internet access:" +msgstr "網際網路存取:" + +#: src/placeBubble.js:170 +msgid "Religion:" +msgstr "宗教:" + +#: src/placeBubble.js:175 +msgid "Toilets:" +msgstr "廁所:" + +#: src/placeBubble.js:180 +msgid "Wheelchair access:" +msgstr "使用輪椅:" + +#: src/placeBubble.js:186 src/placeBubble.js:190 +msgid "Phone:" +msgstr "電話:" + +#: src/placeEntry.js:212 +msgid "Failed to parse Geo URI" +msgstr "無法分析 Geo URI" + +#. Translators: +#. * This means wheelchairs have full unrestricted access. +#. +#. Translators: +#. * There is public internet access but the particular kind is unknown. +#. +#: src/place.js:268 src/translations.js:329 src/translations.js:391 +msgid "yes" +msgstr "是" + +#. Translators: +#. * This means wheelchairs have partial access (e.g some areas +#. * can be accessed and others not, areas requiring assistance +#. * by someone pushing up a steep gradient). +#. +#: src/place.js:275 +msgid "limited" +msgstr "有限制" + +#. Translators: +#. * This means wheelchairs have no unrestricted access +#. * (e.g. stair only access). +#. +#. Translators: +#. * no internet access is offered in a place where +#. * someone might expect it. +#. +#: src/place.js:281 src/translations.js:335 src/translations.js:392 +msgid "no" +msgstr "否" + +#. Translators: +#. * This means that the way or area is designated or purpose built +#. * for wheelchairs (e.g. elevators designed for wheelchair access +#. * only). This is rarely used. +#. +#: src/place.js:288 +msgid "designated" +msgstr "特定" + +#: src/place.js:475 +msgid "Place not found in OpenStreetMap" +msgstr "在 OpenStreetMap 找不到位置" + +#: src/place.js:495 +msgid "OpenStreetMap URL is not valid" +msgstr "OpenStreetMap 網址無效" + +#: src/place.js:500 +msgid "Coordinates in URL are not valid" +msgstr "網址中的座標無效" + +#: src/place.js:521 +msgid "URL is not supported" +msgstr "網址不支援" + +#: src/printLayout.js:312 +#, javascript-format +msgid "From %s to %s" +msgstr "從 %s 到 %s" + +#: src/printOperation.js:46 +msgid "Loading map tiles for printing" +msgstr "載入列印用的圖磚" + +#: src/printOperation.js:47 +msgid "You can abort printing if this takes too long" +msgstr "如果這花費時間太長,您可以放棄列印" + +#: src/printOperation.js:49 +msgid "Abort printing" +msgstr "中止列印" + +#. Translators: this is add via location tooltip +#: src/routeEntry.js:74 +msgid "Add via location" +msgstr "透過位置增加" + +#. Translators: this is remove via location tooltip +#: src/routeEntry.js:84 +msgid "Remove via location" +msgstr "透過位置移除" + +#. Translators: this is reverse route tooltip +#: src/routeEntry.js:90 +msgid "Reverse route" +msgstr "反向路線" + +#. Translators: The first string is the name of the city, the +#. second string is the name of the app to add it to +#: src/sendToDialog.js:104 +#, javascript-format +msgid "Add %s to %s" +msgstr "加入 %s 至 %s" + +#: src/sendToDialog.js:202 +msgid "Failed to open URI" +msgstr "無法開啟 URI" + +#: src/sendToDialog.js:259 +#, javascript-format +msgid "Open with %s" +msgstr "使用 %s 開啟" + +#: src/shapeLayer.js:91 +msgid "failed to load file" +msgstr "無法載入檔案" + +#. Translators: %s is a time expression with the format "%f h" or "%f min" +#: src/sidebar.js:358 +#, javascript-format +msgid "Estimated time: %s" +msgstr "預估時間:%s" + +#: src/sidebar.js:414 +#, javascript-format +msgid "Itineraries provided by %s" +msgstr "行程表由 %s 提供" + +#. Translators: this is a format string indicating instructions +#. * starting a journey at the address given as the parameter +#. +#: src/transit.js:37 +#, javascript-format +msgid "Start at %s" +msgstr "開始於 %s" + +#. Translators: this indicates starting a journey at a location +#. * with no set name (such as when the user started routing from +#. * an arbitrary point on the map) +#. +#: src/transit.js:43 +msgid "Start" +msgstr "開始" + +#. Translators: this is a format string indicating walking a certain +#. * distance, with the distance expression being the %s placeholder +#. +#: src/transit.js:61 +#, javascript-format +msgid "Walk %s" +msgstr "步行 %s" + +#. Translators: this a format string indicating arriving at the +#. * destination of journey with the arrival address and transit +#. * stop as the format parameter +#: src/transit.js:75 +#, javascript-format +msgid "Arrive at %s" +msgstr "抵達於 %s" + +#: src/transit.js:77 src/transitplugins/openTripPlanner.js:1124 +msgid "Arrive" +msgstr "抵達" + +#: src/transitLegRow.js:88 +msgid "Show walking instructions" +msgstr "顯示步行指引" + +#: src/transitLegRow.js:89 +msgid "Hide walking instructions" +msgstr "隱藏步行指引" + +#: src/transitMoreRow.js:39 +msgid "Load earlier alternatives" +msgstr "載入較早的替代路線" + +#: src/transitMoreRow.js:41 +msgid "Load later alternatives" +msgstr "載入較晚的替代路線" + +#: src/transitMoreRow.js:54 +msgid "No earlier alternatives found." +msgstr "找不到較早的替代路線。" + +#: src/transitMoreRow.js:56 +msgid "No later alternatives found." +msgstr "找不到較晚的替代路線。" + +#. +#. * Translators: this is a format string giving the equivalent to +#. * "may 29" according to the current locale's convensions. +#. +#: src/transitOptionsPanel.js:140 +msgctxt "month-day-date" +msgid "%b %e" +msgstr "%b%e日" + +#: src/transitPlan.js:197 +msgid "No timetable data found for this route." +msgstr "找不到這條路線的時刻表資料。" + +#: src/transitPlan.js:205 +msgid "No provider found for this route." +msgstr "找不到這個路線的提供者。" + +#. Translators: this is a format string for showing a departure and +#. * arrival time, like: +#. * "12:00 – 13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:322 +#, javascript-format +msgid "%s – %s" +msgstr "%s – %s" + +#. translators: this is an indication for a trip duration of +#. * less than an hour, with only the minutes part, using plural forms +#. * as appropriate +#. +#: src/transitPlan.js:351 +#, javascript-format +msgid "%s minute" +msgid_plural "%s minutes" +msgstr[0] "%s 分鐘" + +#. translators: this is an indication for a trip duration, +#. * where the duration is an exact number of hours (i.e. no +#. * minutes part), using plural forms as appropriate +#. +#: src/transitPlan.js:363 +#, javascript-format +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s 小時" + +#. translators: this is an indication for a trip duration +#. * where the duration contains an hour and minute part, it's +#. * pluralized on the hours part +#. +#: src/transitPlan.js:371 +#, javascript-format +msgid "%s:%s hour" +msgid_plural "%s:%s hours" +msgstr[0] "%s:%s 小時" + +#. Translators: this is a format string for showing a departure and +#. * arrival time in a more compact manner to show in the instruction +#. * list for an itinerary, like: +#. * "12:00–13:03" where the placeholder %s are the actual times, +#. * these could be rearranged if needed. +#. +#: src/transitPlan.js:764 +#, javascript-format +msgid "%s–%s" +msgstr "%s–%s" + +#: src/translations.js:56 +msgid "around the clock" +msgstr "在時鐘周圍" + +#: src/translations.js:58 +msgid "from sunrise to sunset" +msgstr "從日出到日落" + +#. Translators: +#. * This is a format string with two separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:77 +#, javascript-format +msgctxt "time range list" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This is a format string with three separate time ranges +#. * such as "Mo-Fr 10:00-19:00 Sa 10:00-17:00 Su 12:00-16:00" +#. * The space between the format place holders could be +#. * substituted with the appropriate separator. +#. +#: src/translations.js:89 +#, javascript-format +msgctxt "time range list" +msgid "%s %s %s" +msgstr "%s %s %s" + +#. Translators: +#. * This is a format string consisting of a part specifying the days for +#. * which the specified time is applied and the time interval +#. * specification as the second argument. +#. * The space between the format place holders could be substituted with +#. * the appropriate separator or phrase and the ordering of the arguments +#. * can be rearranged with the %n#s syntax. +#: src/translations.js:120 +#, javascript-format +msgctxt "time range component" +msgid "%s %s" +msgstr "%s %s" + +#. Translators: +#. * This represents a format string consisting of two day interval +#. * specifications. +#. * For example: +#. * Mo-Fr,Sa +#. * where the "Mo-Fr" and "Sa" parts are replaced by the %s +#. * place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:152 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s" +msgstr "%s,%s" + +#. Translators: +#. * This represents a format string consisting of three day interval +#. * specifications. +#. * For example: +#. * Mo-We,Fr,Su +#. * where the "Mo-We", "Fr", and "Su" parts are replaced by the +#. * %s place holder. +#. * The separator (,) could be replaced with a translated variant or +#. * a phrase if appropriate. +#: src/translations.js:166 +#, javascript-format +msgctxt "day interval list" +msgid "%s,%s,%s" +msgstr "%s,%s,%s" + +#: src/translations.js:185 +msgid "every day" +msgstr "每天" + +#. Translators: +#. * This represents a range of days with a starting and ending day. +#. +#: src/translations.js:197 +#, javascript-format +msgctxt "day range" +msgid "%s-%s" +msgstr "%s-%s" + +#: src/translations.js:208 +msgid "public holidays" +msgstr "共通假日" + +#: src/translations.js:210 +msgid "school holidays" +msgstr "學校假日" + +#. Translators: +#. * This is a list with two time intervals, such as: +#. * 09:00-12:00, 13:00-14:00 +#. * The intervals are represented by the %s place holders and +#. * appropriate white space or connected phrase could be modified by +#. * the translation. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:250 +#, javascript-format +msgctxt "time interval list" +msgid "%s, %s" +msgstr "%s, %s" + +#: src/translations.js:264 +msgid "not open" +msgstr "不開放" + +#. Translators: +#. * This is a time interval with a starting and an ending time. +#. * The time values are represented by the %s place holders and +#. * appropriate white spacing or connecting phrases can be set by the +#. * translation as needed. The order of the arguments can be rearranged +#. * using the %n$s syntax. +#. +#: src/translations.js:279 +#, javascript-format +msgctxt "time interval" +msgid "%s-%s" +msgstr "%s-%s" + +#. Translators: +#. * This means a a place where you can plug in your laptop with ethernet. +#. +#: src/translations.js:345 +msgid "wired" +msgstr "有線網路" + +#. Translators: +#. * Like internet cafe or library where the computer is given. +#. +#: src/translations.js:350 +msgid "terminal" +msgstr "網路終端" + +#. Translators: +#. * This means there is personnel which helps you in case of problems. +#. +#: src/translations.js:355 +msgid "service" +msgstr "服務" + +#. Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) +#: src/userLocationBubble.js:56 +#, javascript-format +msgid "Accuracy: %s" +msgstr "準確度:%s" + +#. Translators: Accuracy of user location information +#: src/utils.js:248 +msgid "Unknown" +msgstr "不明" + +#. Translators: Accuracy of user location information +#: src/utils.js:251 +msgid "Exact" +msgstr "準確" + +#. Translators: this is a duration with only hours, using +#. * an abbreviation for hours, corresponding to 'h' in English +#. +#: src/utils.js:332 +#, javascript-format +msgid "%s h" +msgstr "%s 時" + +#. Translators: this is a duration with hours and minutes parts +#. * using abbreviations for hours and minutes, correspoding to 'h' +#. * and 'min' in English. The minutes has appropriate plural variations +#. +#: src/utils.js:338 +#, javascript-format +msgid "%s h %s min" +msgid_plural "%s h %s min" +msgstr[0] "%s 時 %s 分" + +#. Translators: this is a duration with minutes part +#. * using abbreviation for minutes, corresponding to 'min' in English +#. * with appropriate plural variations +#. +#: src/utils.js:345 +#, javascript-format +msgid "%s min" +msgid_plural "%s min" +msgstr[0] "%s 分" + +#. Translators: this is a duration of less than one minute +#. * with seconds using an abbreviation for seconds, corresponding to +#. * 's' in English with appropriate plural forms +#. +#: src/utils.js:351 +#, javascript-format +msgid "%s s" +msgid_plural "%s s" +msgstr[0] "%s 秒" + +#. Translators: This is a distance measured in kilometers +#: src/utils.js:362 +#, javascript-format +msgid "%s km" +msgstr "%s 公里" + +#. Translators: This is a distance measured in meters +#: src/utils.js:365 +#, javascript-format +msgid "%s m" +msgstr "%s 公尺" + +#. Translators: This is a distance measured in miles +#: src/utils.js:373 +#, javascript-format +msgid "%s mi" +msgstr "%s 英哩" + +#. Translators: This is a distance measured in feet +#: src/utils.js:376 +#, javascript-format +msgid "%s ft" +msgstr "%s 英呎" + +#: src/transitplugins/goMetro.js:60 +msgid "This plugin doesn't support latest arrival" +msgstr "這個外掛插件不支援最近到站的功能" + +#: src/transitplugins/openTripPlanner.js:1185 +#, javascript-format +msgid "Continue on %s" +msgstr "在 %s 繼續走" + +#: src/transitplugins/openTripPlanner.js:1187 +msgid "Continue" +msgstr "繼續走" + +#: src/transitplugins/openTripPlanner.js:1190 +#, javascript-format +msgid "Turn left on %s" +msgstr "在 %s 左轉" + +#: src/transitplugins/openTripPlanner.js:1192 +msgid "Turn left" +msgstr "左轉" + +#: src/transitplugins/openTripPlanner.js:1195 +#, javascript-format +msgid "Turn slightly left on %s" +msgstr "在 %s 稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1197 +msgid "Turn slightly left" +msgstr "稍微左轉" + +#: src/transitplugins/openTripPlanner.js:1200 +#, javascript-format +msgid "Turn sharp left on %s" +msgstr "在 %s 急左轉" + +#: src/transitplugins/openTripPlanner.js:1202 +msgid "Turn sharp left" +msgstr "急左轉" + +#: src/transitplugins/openTripPlanner.js:1205 +#, javascript-format +msgid "Turn right on %s" +msgstr "在 %s 右轉" + +#: src/transitplugins/openTripPlanner.js:1207 +msgid "Turn right" +msgstr "右轉" + +#: src/transitplugins/openTripPlanner.js:1210 +#, javascript-format +msgid "Turn slightly right on %s" +msgstr "在 %s 稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1212 +msgid "Turn slightly right" +msgstr "稍微右轉" + +#: src/transitplugins/openTripPlanner.js:1215 +#, javascript-format +msgid "Turn sharp right on %s" +msgstr "在 %s 急右轉" + +#: src/transitplugins/openTripPlanner.js:1217 +msgid "Turn sharp right" +msgstr "急右轉" + +#: src/transitplugins/openTripPlanner.js:1223 +#, javascript-format +msgid "In the roundabout, take exit %s" +msgstr "在圓環中,從 %s 離開" + +#: src/transitplugins/openTripPlanner.js:1225 +#, javascript-format +msgid "In the roundabout, take exit to %s" +msgstr "在圓環中,離開往 %s" + +#: src/transitplugins/openTripPlanner.js:1227 +msgid "Take the roundabout" +msgstr "走圓環" + +#: src/transitplugins/openTripPlanner.js:1231 +#, javascript-format +msgid "Take the elevator and get off at %s" +msgstr "搭乘電梯到 %s" + +#: src/transitplugins/openTripPlanner.js:1233 +msgid "Take the elevator" +msgstr "搭乘電梯" + +#: src/transitplugins/openTripPlanner.js:1237 +#, javascript-format +msgid "Make a left u-turn onto %s" +msgstr "%s 進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1239 +msgid "Make a left u-turn" +msgstr "進行左迴轉" + +#: src/transitplugins/openTripPlanner.js:1242 +#, javascript-format +msgid "Make a right u-turn onto %s" +msgstr "%s 進行右迴轉" + +#: src/transitplugins/openTripPlanner.js:1244 +msgid "Make a right u-turn" +msgstr "進行右迴轉" + +#~ msgid "Don’t have an account?" +#~ msgstr "還沒有會員帳號嗎?" + +#~ msgid "%f h" +#~ msgstr "%f 小時" + +#~ msgid "%f min" +#~ msgstr "%f 分鐘" + +#~ msgid "%f s" +#~ msgstr "%f 秒" + +#~ msgid "Add destination" +#~ msgstr "加入目的地" + +#~ msgid "org.gnome.Maps" +#~ msgstr "org.gnome.Maps" + +#~ msgid "Open with another application" +#~ msgstr "以其他應用程式開啟" + +#~ msgid "Press enter to search" +#~ msgstr "按下 Enter 開始搜尋" + +#~ msgid "Route search by OpenTripPlanner" +#~ msgstr "透過 OpenTripPlanner 搜尋路徑" + +#~ msgid "Quit" +#~ msgstr "結束" + +#~ msgid "OK" +#~ msgstr "確定" + +#~ msgid "Load Map Layer" +#~ msgstr "載入地圖圖層" + +#~ msgid "Open Layer" +#~ msgstr "開啟圖層" + +#~ msgid "%f km" +#~ msgstr "%f 公里" + +#~ msgid "%f m" +#~ msgstr "%f 公尺" + +#~ msgid "%f mi" +#~ msgstr "%f 哩" + +#~ msgid "%f ft" +#~ msgstr "%f 呎" + +#~ msgid "Position not found" +#~ msgstr "找不到地點" + +#~ msgid "General" +#~ msgstr "一般" + +#~ msgid "Search" +#~ msgstr "搜尋" + +#~ msgid "Country code: %s" +#~ msgstr "國家代碼:%s" + +#~ msgid "Population: %s" +#~ msgstr "資料母體:%s" + +#~ msgid "Wheelchair access: %s" +#~ msgstr "使用輪椅:%s" + +#~ msgid "_Share" +#~ msgstr "分享(_S)" + +#~ msgid "Last known location and accuracy" +#~ msgstr "上次知道的位置與準確度" + +#~ msgid "" +#~ "Last known location (latitude and longitude in degrees) and accuracy (in " +#~ "meters)." +#~ msgstr "上次知道的位置 (緯度與經度) 與準確度 (以公尺計)" + +#~ msgid "Description of last known location of user." +#~ msgstr "上次知道的使用者位置描述。" + +#~ msgid "User set last known location" +#~ msgstr "使用者設定上次知道的位置" + +#~ msgid "Whether the last known location was set manually by the user." +#~ msgstr "上次知道的位置是否是由使用者手動設定。" + +#~ msgid "I’m here!" +#~ msgstr "我在這裡!" + +#~ msgid "%f km²" +#~ msgstr "%f km²" + +#~ msgid "To" +#~ msgstr "終點" + +#~ msgid "From" +#~ msgstr "起點" + +#~ msgid " km2" +#~ msgstr " km2" + +#~ msgid "Satellite" +#~ msgstr "衛星" diff --git a/scripts/README b/scripts/README new file mode 100644 index 00000000..de52149a --- /dev/null +++ b/scripts/README @@ -0,0 +1,19 @@ +SCRIPTS +======= + +extractPoiTypesFromID.js +------------------------ + +Extracts the POI types (presets) that the iD editor uses to JSON for us to consume. + +Run the extractPoiTypesFromID.js script against a checkout of the +iD Tagging Schema project (https://github.com/openstreetmap/id-tagging-schema) + +$ ./extractPoiTypesFromID.js > osm-types.json + +This script would be run by upstream before making a release of gnome-maps if an updated version +of the iD editor is available with updated OSM types preset and/or new or updated translations +of those. +Check the resulting .json file (i.e. check size and possibly diff against the current version). +Copy the result to data/osm-types.json + diff --git a/scripts/extractPoiTypesFromID.js b/scripts/extractPoiTypesFromID.js new file mode 100755 index 00000000..031e9aed --- /dev/null +++ b/scripts/extractPoiTypesFromID.js @@ -0,0 +1,142 @@ +#!/usr/bin/env gjs + +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Script to generate a simplified JSON mapping file for POI types from the + * presets definitions from the iD Web-based OpenStreetMap editor + * + * Usage: ./extractPoiTypesFromID.js > osm-types.json + * + */ + +const Gio = imports.gi.Gio; + +const ByteArray = imports.byteArray; + +const PRESETS_PATH = 'data/presets'; +const LOCALES_PATH = 'dist/translations'; +const PRESET_TYPES = [ 'aeroway', + 'amenity', + 'leisure', + 'office', + 'place', + 'shop', + 'tourism' ]; + +const OUTPUT = {}; + +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function parseJson(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let {tags, name} = JSON.parse(getBufferText(buffer)); + + for (let key in tags) { + let value = tags[key]; + + OUTPUT[key + '/' + value] = {'title': {'C': name}}; + } +} + +function processType(type, basePath) { + let dirPath = [basePath, PRESETS_PATH, type].join('/'); + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + parseJson(dirPath, file.get_name()); + } +} + +function processTypes(basePath) { + PRESET_TYPES.forEach(function(type) { + processType(type, basePath); + }); +} + +function processLocale(dirPath, fileName) { + let file = Gio.File.new_for_path(dirPath + '/' + fileName); + let [status, buffer] = file.load_contents(null); + let object = JSON.parse(getBufferText(buffer)); + let lang = fileName.substring(0, fileName.indexOf('.json')); + + for (let type in OUTPUT) { + let name; + + try { + name = object[lang].presets.presets[type].name; + } catch (ex) { + continue; + } + + OUTPUT[type].title[lang] = name; + } +} + +function processLocales(basePath) { + let dirPath = basePath + '/' + LOCALES_PATH; + let dir = Gio.File.new_for_path(dirPath); + let enumerator = + dir.enumerate_children('*.json', + Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, null); + + while (true) { + let file = enumerator.next_file(null); + + if (file === null) + break; + + if (file.get_name().endsWith('.json')) + processLocale(dirPath, file.get_name()); + } +} + +function outputJson() { + print(JSON.stringify(OUTPUT, null, 2)); +} + +function main(args) { + let path = args[0]; + + processTypes(path); + processLocales(path); + + outputJson(); +} + +main(ARGV); diff --git a/src/accountListBox.js b/src/accountListBox.js new file mode 100644 index 00000000..8a032f37 --- /dev/null +++ b/src/accountListBox.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const Goa = imports.gi.Goa; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var AccountRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/account-row.ui', + InternalChildren: [ 'providerLabel', + 'identityLabel', + 'providerImage', + 'attentionNeededImage' ], +}, class AccountRow extends Gtk.ListBoxRow { + _init(params) { + this.account = params.account; + delete params.account; + + super._init(params); + + let account = this.account.get_account(); + + this._providerLabel.label = account.provider_name; + this._identityLabel.label = account.presentation_identity; + this._providerImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + this._attentionNeededImage.visible = account.attention_needed; + } +}); + +var AccountListBox = GObject.registerClass({ + Signals: { + 'account-selected': { param_types: [Goa.Object] } + }, +}, class AccountListBox extends Gtk.ListBox { + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + Application.checkInManager.connect('accounts-refreshed', () => this.refresh()); + + this.connect('row-activated', + (list, row) => this.emit('account-selected', row.account)); + + this.refresh(); + } + + refresh() { + let accounts = Application.checkInManager.accounts; + + this.foreach((row) => this.remove(row)); + + accounts.forEach((account) => { + this.insert(new AccountRow({ account: account }), -1); + }); + } +}); diff --git a/src/address.js b/src/address.js new file mode 100644 index 00000000..0d171840 --- /dev/null +++ b/src/address.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for address formatting. + */ + +const Format = imports.format; + +/** + * Translation lookup table for street name and house number. + * First argument is the street name and the second the housenumber. + * Based on examples from https://en.wikipedia.org/wiki/Address#Address_format + * Currently don't include address formats for i.e. China and Japan as those + * formats differ from the Western ones and would need additional handling + * when printing place addresses (currently we assume there is a street name + * and house number). + */ +const FORMAT_MAP = { + 'AI': '%2$s %1$s', + 'AL': '%1$s %2$s̈́', + 'AR': '%1$s %2$s', + 'AS': '%1$s %2$s', + 'AU': '%2$s %1$s', + 'AX': '%1$s %2$s', + 'BA': '%1$s %2$s', + 'BD': '%1$s. %2$s', + 'BE': '%1$s %2$s', + 'BM': '%2$s %1$s', + 'BR': '%1$s, %2$s', + 'BY': '%1$s, д. %2$s', + /* if we had access to state codes, we could add a special case for + * Quebec format + */ + 'CA': '%2$s %1$s', + 'CH': '%1$s %2$s', + 'CL': '%1$s No° %2$s', + 'CZ': '%1$s %2$s', + 'CY': '%1$s %2$s', + 'DE': '%1$s %2$s', + 'DK': '%1$s %2$s', + 'EE': '%1$s %2$s', + 'ES': '%1$s, %2$s', + 'FI': '%1$s %2$s', + 'FK': '%2$s %1$s', + 'FO': '%1$s %2$s', + 'FR': '%2$s, %1$s', + 'GB': '%2$s %1$s', + 'GG': '%2$s %1$s', + 'GL': '%1$s %2$s', + 'GR': '%1$s %2$s', + 'HK': '%2$s %1$s', + 'HR': '%1$s %2$s', + 'HU': '%1$s %2$s', + 'IE': '%2$s %1$s', + 'IL': '%2$s %1$s', + 'IS': '%1$s %2$s', + 'IM': '%2$s %1$s', + 'IN': '%2$s %1$s', + 'ID': '%1$s No. %2$s', + 'IR': '%1$s %2$s', + 'IT': '%1$s %2$s', + 'IQ': '%1$s %2$s', + 'JE': '%2$s %1$s', + 'KR': '%1$s %2$s', + 'KY': '%2$s %1$s', + 'LI': '%1$s %2$s', + 'LK': '%2$s %1$s', + 'LU': '%1$s %2$s', + 'LV': '%1$s %2$s', + 'ME': '%1$s %2$s', + 'MO': '%1$s%2$s', + 'MS': '%2$s %1$s', + 'MY': '%2$s $1%s', + 'MX': '%1$s No. %2$s', + 'NL': '%1$s %2$s', + 'NO': '%1$s %2$s', + 'NZ': '%2$s %1$s', + 'OM': '%1$s, %2$s', + 'PE': '%1$s %2$s', + 'PH': '%2$s %1$s', + 'PN': '%2$s %1$s', + 'PK': '%2$s, %1$s', + 'PL': '%1$s %2$s', + 'PT': '%1$s %2$s', + 'RO': '%1$s, nr. %2$s', + 'RS': '%1$s %2$s', + 'RU': '%1$s, д. %2$s', + 'SA': '%2$s %1$s', + 'SE': '%1$s %2$s', + 'SG': '%2$s %1$s', + 'SH': '%2$s %1$s', + 'SJ': '%1$s %2$s', + 'SK': '%1$s %2$s', + 'SL': '%1$s %2$s', + 'TC': '%2$s %1$s', + 'TR': '%1$s %2$s', + 'TW': '%1$s, %2$s̈́', + 'UK': 'вул. %1$s, буд. %2$s', + 'US': '%2$s %1$s', + 'VG': '%2$s %1$s', + 'VI': '%2$s %1$s', + 'VN': 'số %2$s %1$s' +} + +function streetAddressForCountryCode(streetName, housenumber, countryCode) { + let format = FORMAT_MAP[countryCode]; + + if (format) + return Format.vprintf(format, [streetName, housenumber]); + else + return Format.vprintf('%s %s', [housenumber, streetName]); +} diff --git a/src/application.js b/src/application.js new file mode 100644 index 00000000..573bceef --- /dev/null +++ b/src/application.js @@ -0,0 +1,397 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const Hdy = imports.gi.Handy; +const WebKit2 = imports.gi.WebKit2; + +const CheckIn = imports.checkIn; +const ContactPlace = imports.contactPlace; +const Format = imports.format; +const Geoclue = imports.geoclue; +const MainWindow = imports.mainWindow; +const Maps = imports.gi.GnomeMaps; +const OSMEdit = imports.osmEdit; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const PlaceStore = imports.placeStore; +const RoutingDelegator = imports.routingDelegator; +const RouteQuery = imports.routeQuery; +const Settings = imports.settings; +const Utils = imports.utils; + +// used globally +var application = null; +var settings = null; +var placeStore = null; +var routingDelegator = null; +var geoclue = null; +var networkMonitor = null; +var checkInManager = null; +var contactStore = null; +var osmEdit = null; +var normalStartup = true; +var routeQuery = null; + +const _ensuredTypes = [WebKit2.WebView, + OSMTypeSearchEntry.OSMTypeSearchEntry]; + +var Application = GObject.registerClass({ + Properties: { + 'connected': GObject.ParamSpec.boolean('connected', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE), + 'selected-place': GObject.ParamSpec.object('selected-place', + 'Selected Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place), + 'adaptive-mode': GObject.ParamSpec.boolean('adaptive-mode', + 'Adaptive Move', + 'Whether the main window is in adaptive (narrow) mode', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE), + }, +}, class Application extends Gtk.Application { + + set connected(p) { + this._connected = p; + this.notify('connected'); + } + + get connected() { + return this._connected; + } + + _init() { + /* Translators: This is the program name. */ + GLib.set_application_name(_("Maps")); + + /* Needed to be able to use in UI files */ + _ensuredTypes.forEach((type) => GObject.type_ensure(type)); + + super._init({ application_id: 'org.gnome.Maps', + flags: Gio.ApplicationFlags.HANDLES_OPEN | + Gio.ApplicationFlags.HANDLES_COMMAND_LINE }); + this._connected = false; + + this.add_main_option('local', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.FILENAME, + _("A path to a local tiles directory structure"), + null); + this.add_main_option('local-tile-size', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.INT, + _("Tile size for local tiles directory"), + null); + + this.add_main_option('version', 'v'.charCodeAt(0), GLib.OptionFlags.NONE, GLib.OptionArg.NONE, + _("Show the version of the program"), null); + + this.add_main_option('force-online', + 0, + GLib.OptionFlags.NONE, + GLib.OptionArg.NONE, + _("Ignore network availability"), + null); + /* due to https://gitlab.gnome.org/GNOME/gjs/-/issues/330 the + * description for the remaining args needs to be passed as both + * description and arg_description + */ + this.add_main_option(GLib.OPTION_REMAINING, + 0, + 0, + GLib.OptionArg.STRING_ARRAY, + _("[FILE…|URI]"), + _("[FILE…|URI]")); + } + + _checkNetwork() { + this.connected = + this._forceOnline || + networkMonitor.connectivity === Gio.NetworkConnectivity.FULL; + } + + _showContact(id) { + contactStore.lookup(id, (contact) => { + this.mark_busy(); + if (!contact) { + this.unmark_busy(); + return; + } + contact.geocode(() => { + this.unmark_busy(); + this._mainWindow.mapView.showContact(contact); + }); + }); + } + + _onShowContactActivate(action, parameter) { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + + let id = parameter.deep_unpack(); + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this. _showContact(id); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._showContact(id); + }); + } + } + + _onOsmAccountSetupActivate() { + let dialog = osmEdit.createAccountDialog(this._mainWindow, false); + + dialog.show(); + dialog.connect('response', () => dialog.destroy()); + } + + _addContacts() { + let contacts = contactStore.get_contacts(); + + this._addContactsRecursive(contacts, 0); + } + + _addContactsRecursive(contacts, index) { + if (index < contacts.length) { + let contact = contacts[index]; + + contact.geocode(() => { + contact.get_places().forEach((p) => { + if (!p.location) + return + + Utils.debug('Adding contact address: ' + p.name); + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + placeStore.addPlace(place, PlaceStore.PlaceType.CONTACT); + }); + + this._addContactsRecursive(contacts, index + 1); + }); + } + } + + _initPlaceStore() { + placeStore = new PlaceStore.PlaceStore({ + recentPlacesLimit: settings.get('recent-places-limit'), + recentRoutesLimit: settings.get('recent-routes-limit') + }); + try { + placeStore.load(); + } catch (e) { + log('Failed to parse Maps places file, ' + + 'subsequent writes will overwrite the file!'); + } + + if (contactStore.state === Maps.ContactStoreState.LOADED) { + this._addContacts(); + } else { + Utils.once(contactStore, 'notify::state', () => { + if (contactStore.state === Maps.ContactStoreState.LOADED) + this._addContacts(); + }); + } + } + + _onNightModeChange(action) { + let state = action.get_state(); + let gtkSettings = Gtk.Settings.get_default(); + gtkSettings.gtk_application_prefer_dark_theme = state.get_boolean(); + } + + vfunc_startup() { + super.vfunc_startup(); + + GtkClutter.init(null); + Hdy.init(); + + Utils.loadStyleSheet(Gio.file_new_for_uri('resource:///org/gnome/Maps/application.css')); + + application = this; + this._initServices(); + + Utils.addActions(this, { + 'show-contact': { + paramType: 's', + onActivate: this._onShowContactActivate.bind(this) + }, + 'osm-account-setup': { + onActivate: this._onOsmAccountSetupActivate.bind(this) + }, + 'night-mode': { + paramType: 'b', + onChangeState: this._onNightModeChange.bind(this), + setting: 'night-mode' + }, + 'quit': { + onActivate: () => this.quit(), + accels: ['Q'] + } + }, settings); + + // set dark theme when night-mode is enabled + let gtkSettings = Gtk.Settings.get_default(); + + gtkSettings.gtk_application_prefer_dark_theme = + settings.get('night-mode'); + + Gtk.IconTheme.get_default().append_search_path(GLib.build_filenamev([pkg.pkgdatadir, + 'icons'])); + this._initPlaceStore(); + } + + _initServices() { + settings = Settings.getSettings('org.gnome.Maps'); + routeQuery = new RouteQuery.RouteQuery(); + routingDelegator = new RoutingDelegator.RoutingDelegator({ query: routeQuery }); + geoclue = new Geoclue.Geoclue(); + networkMonitor = Gio.NetworkMonitor.get_default(); + networkMonitor.connect('network-changed', + this._checkNetwork.bind(this)); + checkInManager = new CheckIn.CheckInManager(); + contactStore = new Maps.ContactStore(); + contactStore.load(); + osmEdit = new OSMEdit.OSMEdit(); + } + + _createWindow() { + if (this._mainWindow) + return; + + this._mainWindow = new MainWindow.MainWindow({ application: this }); + this._mainWindow.connect('destroy', () => this._onWindowDestroy()); + if (GLib.getenv('MAPS_DEBUG') === 'focus') { + this._mainWindow.connect('set-focus', (window, widget) => { + log('* focus widget: %s'.format(widget)); + }); + } + } + + vfunc_dbus_register(connection, path) { + super.vfunc_dbus_register(connection, path); + return true; + } + + vfunc_dbus_unregister(connection, path) { + super.vfunc_dbus_unregister(connection, path); + } + + vfunc_activate() { + this._createWindow(); + this._checkNetwork(); + this._mainWindow.present(); + } + + _openInternal(files) { + if (!this._mainWindow || !this._mainWindow.mapView.view.realized) + return; + + let uri = files[0].get_uri(); + let scheme = GLib.uri_parse_scheme(uri); + + if (scheme === 'geo') { + /* we get an uri that looks like geo:///lat,lon, remove slashes */ + let geoURI = uri.replace(/\//g, ''); + this._mainWindow.mapView.goToGeoURI(geoURI); + } else if (scheme === 'http' || scheme === 'https') { + this._mainWindow.mapView.goToHttpURL(uri); + } else { + this._mainWindow.mapView.openShapeLayers(files); + } + } + + vfunc_open(files) { + normalStartup = false; + this.activate(); + + let mapView = this._mainWindow.mapView; + if (mapView.view.realized) + this._openInternal(files); + else + mapView.view.connect('notify::realized', + this._openInternal.bind(this, files)); + } + + vfunc_command_line(cmdline) { + let options = cmdline.get_options_dict(); + + if (options.contains('local')) { + let variant = options.lookup_value('local', null); + this.local_tile_path = variant.deep_unpack(); + normalStartup = false; + if (options.contains('local-tile-size')) { + variant = options.lookup_value('local-tile-size', null); + this.local_tile_size = variant.deep_unpack(); + } + } else if (options.contains('version')) { + print(pkg.version); + /* quit the invoked process after printing the version number + * leaving the running instance unaffected + */ + return 0; + } else if (options.contains('force-online')) { + this._forceOnline = true; + } + + let remaining = options.lookup(GLib.OPTION_REMAINING, null); + + if (remaining) { + let files = []; + + remaining.forEach((r) => { + let path = r.get_string()[0]; + + if (path.startsWith('geo:') || path.startsWith('http://') || + path.startsWith('https://')) { + files.push(Gio.File.new_for_uri(path)); + } else { + files.push(Gio.File.new_for_path(path)); + } + }); + + this.open(files, ''); + } else { + this.activate(); + } + + return 0; + } + + _onWindowDestroy(window) { + this._mainWindow = null; + } +}); diff --git a/src/boundingBox.js b/src/boundingBox.js new file mode 100644 index 00000000..0c06875e --- /dev/null +++ b/src/boundingBox.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2021, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Constants = imports.constants; + +var BoundingBox = class { + constructor(params) { + /* default to a bounding box the "opposite" of covering the whole + * visible world, this way extending with a coordinate will ensure + * it is enlarged to fit that point + */ + this._left = params?.left ?? Constants.MAX_LONGITUDE; + this._bottom = params?.bottom ?? Constants.MAX_LATITUDE; + this._right = params?.right ?? Constants.MIN_LONGITUDE; + this._top = params?.top ?? Constants.MIN_LATITUDE; + } + + get top() { + return this._top; + } + + set top(top) { + this._top = top; + } + + get left() { + return this._left; + } + + set left(left) { + this._left = left; + } + + get bottom() { + return this._bottom; + } + + set bottom(bottom) { + this._bottom = bottom; + } + + get right() { + return this._right; + } + + set right(right) { + this._right = right; + } + + copy() { + let copy = new BoundingBox(); + + copy.top = this.top; + copy.left = this.left; + copy.bottom = this.bottom; + copy.right = this.right; + + return copy; + } + + getCenter() { + return [(this.right + this.left) / 2, (this.top + this.bottom) / 2]; + } + + /** + * Extends bounding box so that all points covered by other bounding box + * is also covered by this. + */ + compose(other) { + if (other.left < this.left) + this.left = other.left; + + if (other.right > this.right) + this.right = other.right; + + if (other.top > this.top) + this.top = other.top; + + if (other.bottom < this.bottom) + this.bottom = other.bottom; + } + + /** + * Extends bounding box to guarantee covering the point + * (latitude, longitude). + */ + extend(latitude, longitude) { + if (longitude < this.left) + this.left = longitude; + + if (latitude < this.bottom) + this.bottom = latitude; + + if (longitude > this.right) + this.right = longitude; + + if (latitude > this.top) + this.top = latitude; + } + + isValid() { + return this.left < this.right && this.bottom < this.top && + this.left >= Constants.MIN_LONGITUDE && + this.left <= Constants.MAX_LONGITUDE && + this.right >= Constants.MIN_LONGITUDE && + this.right <= Constants.MAX_LONGITUDE && + this.bottom >= Constants.MIN_LATITUDE && + this.bottom <= Constants.MAX_LATITUDE && + this.top >= Constants.MIN_LATITUDE && + this.top <= Constants.MAX_LATITUDE; + } + + /** + * Returns true if bounding box covers the point at (latitude, longitude). + */ + covers(latitude, longitude) { + return (latitude >= this.bottom && latitude <= this.top) && + (longitude >= this.left && longitude <= this.right); + } +} diff --git a/src/checkIn.js b/src/checkIn.js new file mode 100644 index 00000000..cc2f119c --- /dev/null +++ b/src/checkIn.js @@ -0,0 +1,174 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Goa = imports.gi.Goa; +const Gtk = imports.gi.Gtk; + +const CheckInDialog = imports.checkInDialog; +const FoursquareBackend = imports.foursquareBackend; + +var CheckInManager = GObject.registerClass({ + Signals: { + 'accounts-refreshed': { } + }, + Properties: { + 'hasCheckIn': GObject.ParamSpec.boolean('hasCheckIn', + '', + '', + GObject.ParamFlags.READABLE) + } +}, class CheckInManager extends GObject.Object { + _init() { + super._init(); + + try { + this._goaClient = Goa.Client.new_sync(null); + } catch (e) { + log('Error creating GOA client: %s'.format(e.message)); + } + + this._accounts = []; + this._authorizers = {}; + this._backends = {}; + + this._initBackends(); + + if (this._goaClient) { + this._goaClient.connect('account-added', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-changed', + this._refreshGoaAccounts.bind(this)); + this._goaClient.connect('account-removed', + this._refreshGoaAccounts.bind(this)); + } + + this._refreshGoaAccounts(); + } + + _initBackends() { + let foursquareBackend = new FoursquareBackend.FoursquareBackend(); + this._backends[foursquareBackend.name] = foursquareBackend; + } + + _refreshGoaAccounts() { + if (!this._goaClient) + return; + let accounts = this._goaClient.get_accounts(); + this._accounts = []; + this._accountsCount = 0; + this._authorizers = {}; + + accounts.forEach((object) => { + if (!object.get_account()) + return; + + if (!object.get_maps()) + return; + + let accountId = object.get_account().id; + this._accounts.push(object); + + this._authorizers[accountId] = this._getBackend(object).createAuthorizer(object); + }); + + this.emit('accounts-refreshed'); + this.notify('hasCheckIn'); + } + + get client() { + return this._goaClient; + } + + get accounts() { + return this._accounts; + } + + get hasCheckIn() { + return this._accounts.length > 0; + } + + _getAuthorizer(account) { + return this._authorizers[account.get_account().id]; + } + + _getBackend(account) { + return this._backends[account.get_account().provider_type]; + } + + performCheckIn(account, checkIn, callback, cancellable) { + this._getBackend(account) + .performCheckIn(this._getAuthorizer(account), checkIn, callback, cancellable); + } + + findPlaces(account, latitude, longitude, distance, callback, cancellable) { + this._getBackend(account) + .findPlaces(this._getAuthorizer(account), latitude, longitude, distance, callback, cancellable); + } + + showCheckInDialog(parentWindow, place, matchPlace) { + let dialog = new CheckInDialog.CheckInDialog({ transient_for: parentWindow, + matchPlace: matchPlace, + place: place }); + let response = dialog.run(); + dialog.destroy(); + + let message = null; + + switch (response) { + case CheckInDialog.Response.FAILURE_NO_PLACES: + if (matchPlace) + /* Translators: %s is the place name that user wanted to check-in */ + message = _("Cannot find “%s” in the social service").format(place.name); + else + message = _("Cannot find a suitable place to check-in in this location"); + break; + case CheckInDialog.Response.FAILURE_GET_PLACES: + if (dialog.error.code === 401) + message = _("Credentials have expired, please open Online Accounts to sign in and enable this account"); + else + message = dialog.error.message; + break; + } + + if (message) { + let messageDialog = new Gtk.MessageDialog({ transient_for: parentWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: message }); + messageDialog.run(); + messageDialog.destroy(); + } + } +}); + +var CheckIn = class { + _init() { + this.message = null; + this.place = null; + this.privacy = null; + this.broadcastFacebook = false; + this.broadcastTwitter = false; + } +}; diff --git a/src/checkInDialog.js b/src/checkInDialog.js new file mode 100644 index 00000000..7ace6a7a --- /dev/null +++ b/src/checkInDialog.js @@ -0,0 +1,277 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const AccountListBox = imports.accountListBox; +const Application = imports.application; +const CheckIn = imports.checkIn; +const SocialPlaceListBox = imports.socialPlaceListBox; +const SocialPlaceMatcher = imports.socialPlaceMatcher; + +var Response = { + SUCCESS: 0, + CANCELLED: 1, + FAILURE_NO_PLACES: 2, + FAILURE_GET_PLACES: 3, + FAILURE_ACCOUNT_DISABLED: 4, + FAILURE_CHECKIN_DISABLED: 5 +}; + +var CheckInDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/check-in-dialog.ui', + InternalChildren: [ 'cancelButton', + 'okButton', + 'stack', + 'accountFrame', + 'placeScrolledWindow', + 'placeNotFoundInfoBar', + 'placeNotFoundLabel', + 'messageInfoLabel', + 'messageInfoAccountImage', + 'messageTextView', + 'foursquareOptionsGrid', + 'foursquareOptionsPrivacyComboBox', + 'foursquareOptionsBroadcastFacebookCheckButton', + 'foursquareOptionsBroadcastTwitterCheckButton' ], +}, class CheckInDialog extends Gtk.Dialog { + _init(params) { + this._place = params.place; + delete params.place; + + this._matchPlace = params.matchPlace; + delete params.matchPlace; + + // This is a construct-only property and cannot be set by GtkBuilder + params.use_header_bar = true; + + super._init(params); + + this._account = null; + this._checkIn = new CheckIn.CheckIn(); + this.error = null; + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + Application.checkInManager.connect('accounts-refreshed', + () => this._onAccountRefreshed()); + + this._initHeaderBar(); + this._initWidgets(); + } + + _initHeaderBar() { + this._cancelButton.connect('clicked', + () => this._cancellable.cancel()); + + this._okButton.connect('clicked', () => this._startCheckInStep()); + } + + _initWidgets() { + // Limitations in Gjs means we can't do this in UI files yet + this._accountListBox = new AccountListBox.AccountListBox({ visible: true }); + this._accountFrame.add(this._accountListBox); + + this._placeListBox = new SocialPlaceListBox.SocialPlaceListBox({ visible: true }); + this._placeScrolledWindow.add(this._placeListBox); + + Application.settings.bind('checkin-foursquare-privacy', + this._foursquareOptionsPrivacyComboBox, + 'active_id', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-facebook', + this._foursquareOptionsBroadcastFacebookCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + Application.settings.bind('checkin-foursquare-broadcast-twitter', + this._foursquareOptionsBroadcastTwitterCheckButton, + 'active', Gio.SettingsBindFlags.DEFAULT); + + this._accountListBox.connect('account-selected', (list, account) => { + this._account = account; + this._startPlaceStep(); + }); + + this._placeListBox.connect('place-selected', (list, place) => { + this._checkIn.place = place; + this._startMessageStep(); + }); + } + + vfunc_show() { + this._startup(); + super.vfunc_show(); + } + + _startup() { + let accounts = Application.checkInManager.accounts; + + if (accounts.length > 1) + this._startAccountStep(); + else if (accounts.length === 1) { + this._account = Application.checkInManager.accounts[0]; + this._startPlaceStep(); + } else { + Mainloop.idle_add(() => { + this.response(Response.FAILURE_CHECKIN_DISABLED); + }); + } + } + + _onAccountRefreshed() { + let accounts = Application.checkInManager.accounts; + + if (!Application.checkInManager.hasCheckIn) + this.response(Response.FAILURE_CHECKIN_DISABLED); + else if (this._account) { + for (let account of accounts) { + if (this._account.get_account().id === account.get_account().id) + return; + } + + this.response(Response.FAILURE_ACCOUNT_DISABLED); + } + } + + _startAccountStep() { + this.set_title(_("Select an account")); + this._stack.set_visible_child_name('account'); + } + + _startPlaceStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + Application.checkInManager.findPlaces(this._account, + this._place.location.latitude, + this._place.location.longitude, + 100, + this._onFindPlacesFinished.bind(this), + this._cancellable); + } + + _onFindPlacesFinished(account, places, error) { + if (!error) { + if (places.length === 0) { + this.response(Response.FAILURE_NO_PLACES); + return; + } + + let matches = SocialPlaceMatcher.match(this._place, places); + + if (matches.exactMatches.length === 1 && this._matchPlace) { + this._checkIn.place = matches.exactMatches[0]; + this._startMessageStep(); + } else { + this.set_title(_("Select a place")); + this._placeListBox.matches = matches; + + if (this._matchPlace) { + if (this._account.get_account().provider_type === 'foursquare') + this._placeNotFoundLabel.label = _("Maps cannot find the place to check in to with Foursquare. Please select one from this list."); + } else + this._placeNotFoundInfoBar.hide(); + + this._stack.set_visible_child_name('place'); + } + } else { + this.error = error; + this.response(Response.FAILURE_GET_PLACES); + } + } + + _startMessageStep() { + /* Translators: %s is the name of the place to check in. + */ + this.set_title(_("Check in to %s").format(this._checkIn.place.name)); + this._stack.set_visible_child_name('message'); + + this._messageTextView.grab_focus(); + this._okButton.show(); + + let account = this._account.get_account(); + + /* Translators: %s is the name of the place to check in. + */ + let labelMessageInfo = _("Write an optional message to check in to %s."); + this._messageInfoLabel.label = labelMessageInfo.format('%s'.format(this._checkIn.place.link, + this._checkIn.place.name)); + this._messageInfoAccountImage.gicon = Gio.Icon.new_for_string(account.provider_icon); + + let optionsGrids = { 'foursquare': this._foursquareOptionsGrid }; + + for (let provider in optionsGrids) + if (provider === account.provider_type) + optionsGrids[provider].show(); + else + optionsGrids[provider].hide(); + } + + _startCheckInStep() { + this.set_title(_("Loading")); + this._stack.set_visible_child_name('loading'); + + this._okButton.hide(); + + let message = this._messageTextView.buffer.text; + let privacy; + + if (this._account.get_account().provider_type === 'foursquare') + privacy = this._foursquareOptionsPrivacyComboBox.active_id; + + let broadcastFacebook = this._foursquareOptionsBroadcastFacebookCheckButton.active; + let broadcastTwitter = this._foursquareOptionsBroadcastTwitterCheckButton.active; + + this._checkIn.message = message; + this._checkIn.privacy = privacy; + this._checkIn.broadcastFacebook = broadcastFacebook; + this._checkIn.broadcastTwitter = broadcastTwitter; + + Application.checkInManager.performCheckIn(this._account, + this._checkIn, + this._onPerformCheckInFinished.bind(this), + this._cancellable); + } + + _onPerformCheckInFinished(account, data, error) { + if (!error) + this.response(Response.SUCCESS); + else { + let messageDialog = new Gtk.MessageDialog({ transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: error.message }); + messageDialog.run(); + messageDialog.destroy(); + + this._startMessageStep(); + } + } +}); diff --git a/src/color.js b/src/color.js new file mode 100644 index 00000000..36f21f24 --- /dev/null +++ b/src/color.js @@ -0,0 +1,94 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* Minimum contrast ratio for foreground/background color for i.e. route labels */ +const MIN_CONTRAST_RATIO = 2.0; + +/** + * Parses a given color component index (0: red, 1: green, 2: blue) + * from a hex-encoded color string. Optionally, if defaultValue is supplied, + * fallback to that if color is undefined. + */ +function parseColor(color, component, defaultValue) { + if (color) { + let index = component * 2; + return parseInt(color.substring(index, index + 2), 16) / 255; + } else { + return defaultValue; + } +} + +/** + * Returns the relative luminance (0.0 - 1.0) of a color, expressed in HTML + * notation (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Relative_luminance + */ +function relativeLuminance(color) { + let rsRGB = parseColor(color, 0); + let gsRGB = parseColor(color, 1); + let bsRGB = parseColor(color, 2); + let r = rsRGB <= 0.03928 ? + rsRGB / 12.92 : Math.pow(((rsRGB + 0.055) / 1.055), 2.4); + let g = gsRGB <= 0.03928 ? + gsRGB / 12.92 : Math.pow(((gsRGB + 0.055) / 1.055), 2.4); + let b = bsRGB <= 0.03928 ? + bsRGB / 12.92 : Math.pow(((bsRGB + 0.055) / 1.055), 2.4); + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; +} + +/** + * Returns the contrast ratio between two colors, expressed in HTML notation + * (i.e. ffffff for white) according to the W3C WCAG definition: + * https://www.w3.org/WAI/GL/wiki/Contrast_ratio + */ +function contrastRatio(color1, color2) { + let lc1 = relativeLuminance(color1); + let lc2 = relativeLuminance(color2); + /* order by luminance, lighter before darker */ + let l1 = Math.max(lc1, lc2); + let l2 = Math.min(lc1, lc2); + + return (l1 + 0.05) / (l2 + 0.05); +} + +/** + * Finds a suitable foreground (text) color for a given background color. + * If the desiredForegroundColor argument is defined, return this color if it + * has enough contrast against the background, otherwise (or if that argument + * is undefined), return the one of black or white giving the highest contrast + */ +function getContrastingForegroundColor(backgroundColor, + desiredForegroundColor) { + if (!desiredForegroundColor || + (contrastRatio(backgroundColor, desiredForegroundColor) < + MIN_CONTRAST_RATIO)) { + let contrastAgainstWhite = contrastRatio(backgroundColor, 'ffffff'); + let contrastAgainstBlack = contrastRatio(backgroundColor, '000000'); + + if (contrastAgainstWhite > contrastAgainstBlack) + return 'ffffff'; + else + return '000000'; + } else { + return desiredForegroundColor; + } +} diff --git a/src/constants.js b/src/constants.js new file mode 100644 index 00000000..a3419ec7 --- /dev/null +++ b/src/constants.js @@ -0,0 +1,28 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2021, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Constraints of visible location in the standard Mercaartor projection. + */ +var MIN_LATITUDE = -85.0511287798; +var MAX_LATITUDE = 85.0511287798; +var MIN_LONGITUDE = -180; +var MAX_LONGITUDE = 180; diff --git a/src/contactPlace.js b/src/contactPlace.js new file mode 100644 index 00000000..6c036c22 --- /dev/null +++ b/src/contactPlace.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; + +const Place = imports.place; + +var ContactPlace = GObject.registerClass( +class ContactPlace extends Place.Place { + _init(params) { + this._contact = params.contact; + delete params.contact; + + params.store = false; + super._init(params); + } + + get icon() { + return this._contact.icon; + } + + get uniqueID() { + return [this.name, + this.osm_type, + this.osm_id].join('-'); + } +}); diff --git a/src/contextMenu.js b/src/contextMenu.js new file mode 100644 index 00000000..6de6a8c8 --- /dev/null +++ b/src/contextMenu.js @@ -0,0 +1,201 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEdit = imports.osmEdit; +const OSMEditDialog = imports.osmEditDialog; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; +const ZoomInDialog = imports.zoomInDialog; + +var ContextMenu = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/context-menu.ui', + InternalChildren: [ 'whatsHereItem', + 'geoURIItem', + 'addOSMLocationItem', + 'routeFromHereItem', + 'addIntermediateDestinationItem', + 'routeToHereItem' ], +}, class ContextMenu extends Gtk.Menu { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + super._init(params); + + this._buttonGesture = + new Gtk.GestureSingle({ widget: this._mapView, + button: Gdk.BUTTON_SECONDARY }); + this._buttonGesture.connect('end', this._onButtonRelease.bind(this)); + + this._whatsHereItem.connect('activate', + this._onWhatsHereActivated.bind(this)); + this._geoURIItem.connect('activate', + this._onGeoURIActivated.bind(this)); + this._addOSMLocationItem.connect('activate', + this._onAddOSMLocationActivated.bind(this)); + this._routeFromHereItem.connect('activate', + this._onRouteFromHereActivated.bind(this)); + this._addIntermediateDestinationItem.connect('activate', + this._onAddIntermediateDestinationActivated.bind(this)); + this._routeToHereItem.connect('activate', + this._onRouteToHereActivated.bind(this)); + Application.routeQuery.connect('notify::points', + this._routingUpdate.bind(this)); + this._routingUpdate(); + } + + _onButtonRelease(gesture, sequence) { + let event = gesture.get_last_event(sequence); + let [, x, y] = event.get_coords(); + this._longitude = this._mapView.view.x_to_longitude(x); + this._latitude = this._mapView.view.y_to_latitude(y); + + // Need idle to avoid Clutter dead-lock on re-entrance + Mainloop.idle_add(() => this.popup_at_pointer(event)); + } + + _routingUpdate() { + let query = Application.routeQuery; + let numPoints = query.points.length; + + this._routeFromHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._routeToHereItem.sensitive = numPoints < RouteQuery.MAX_QUERY_POINTS; + this._addIntermediateDestinationItem.sensitive = + query.filledPoints.length >= 2 && numPoints < RouteQuery.MAX_QUERY_POINTS; + } + + _onRouteFromHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.points[0].place = place; + } + + _onRouteToHereActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.points.last().place = place; + } + + _onAddIntermediateDestinationActivated() { + let query = Application.routeQuery; + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let place = new Place.Place({ location: location, store: false }); + + query.addPoint(-1).place = place; + } + + _onWhatsHereActivated() { + GeocodeFactory.getGeocoder().reverse(this._latitude, this._longitude, + (place) => { + if (place) { + this._mapView.showPlace(place, false); + } else { + let msg = _("Nothing found here!"); + + Utils.showDialog(msg, Gtk.MessageType.INFO, this._mainWindow); + } + }); + } + + _onGeoURIActivated() { + let location = new Location.Location({ latitude: this._latitude, + longitude: this._longitude, + accuracy: 0 }); + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + let uri = location.to_uri(Geocode.LocationURIScheme.GEO); + + clipboard.set_text(uri, uri.length); + } + + _onAddOSMLocationActivated() { + let osmEdit = Application.osmEdit; + /* if the user is not already signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this._mainWindow, true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._addOSMLocation(); + }); + + return; + } + + this._addOSMLocation(); + } + + _addOSMLocation() { + let osmEdit = Application.osmEdit; + + if (this._mapView.view.get_zoom_level() < OSMEdit.MIN_ADD_LOCATION_ZOOM_LEVEL) { + let zoomInDialog = + new ZoomInDialog.ZoomInDialog({ longitude: this._longitude, + latitude: this._latitude, + view: this._mapView.view, + transient_for: this._mainWindow, + modal: true }); + + zoomInDialog.connect('response', () => zoomInDialog.destroy()); + zoomInDialog.show_all(); + return; + } + + let dialog = + osmEdit.createEditNewDialog(this._mainWindow, + this._latitude, this._longitude); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMEditDialog.Response.UPLOADED) { + Utils.showDialog(_("Location was added to the map, note that it may take a while before it shows on the map and in search results."), + Gtk.MessageType.INFO, this._mainWindow); + } + }); + } +}); diff --git a/src/epaf.js b/src/epaf.js new file mode 100644 index 00000000..4465a730 --- /dev/null +++ b/src/epaf.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jussi Kukkonen + * Mattias Bengtsson + */ + +// Google encoded polyline decoder +// https://developers.google.com/maps/documentation/utilities/polylinealgorithm + +const Champlain = imports.gi.Champlain; + +function _decodeValue(data, index) { + let b; + let shift = 0; + let value = 0; + + do { + // 63 added to keep string printable + b = data.charCodeAt(index++) - 63; + + // Get 5 bits at a time until hit the end of value + // (which is not OR'd with 0x20) + value |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + + // negative values are encoded as two's complement + let ret_val = ((value & 1) ? ~(value >> 1) : (value >> 1)); + return [ret_val, index]; +} + +function decode(data) { + let length = data.length; + let polyline = []; + let index = 0; + let lat = 0; + let lon = 0; + + while (index < length) { + let latdelta, londelta; + + [latdelta, index] = _decodeValue(data, index); + [londelta, index] = _decodeValue(data, index); + + // first value is absolute, rest are relative to previous value + lat += latdelta; + lon += londelta; + polyline.push(new Champlain.Coordinate({ + latitude: lat * 1e-5, + longitude: lon * 1e-5 + })); + } + return polyline; +} diff --git a/src/exportViewDialog.js b/src/exportViewDialog.js new file mode 100644 index 00000000..42b7996d --- /dev/null +++ b/src/exportViewDialog.js @@ -0,0 +1,183 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _PREVIEW_WIDTH = 150; + +var ExportViewDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/export-view-dialog.ui', + InternalChildren: [ 'exportButton', + 'cancelButton', + 'filenameEntry', + 'fileChooserButton', + 'previewArea', + 'layersCheckButton' ], +}, class ExportViewDialog extends Gtk.Dialog { + _init(params) { + this._surface = params.surface; + delete params.surface; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + this._mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + this._cancelButton.connect('clicked', () => this.response(Response.CANCEL)); + this._exportButton.connect('clicked', () => this._exportView()); + this._filenameEntry.connect('changed', () => this._onFileNameChanged()); + this._fileChooserButton.connect('file-set', () => this._onFolderChanged()); + this._layersCheckButton.connect('toggled', () => this._includeLayersChanged()); + + + this._folder = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES); + if (!this._folder) + this._folder = GLib.get_user_data_dir(); + + this._filenameEntry.text = this._fileName = this._getName(); + this._fileChooserButton.set_current_folder(this._folder); + this._setupPreviewArea(); + } + + _getName() { + /* Translators: This is a format string for a PNG filename for an + * exported image with coordinates. The .png extension should be kept + * intact in the translated string. + */ + return _("Maps at %f, %f.png").format(this._latitude.toFixed(2), + this._longitude.toFixed(2)); + } + + _setupPreviewArea() { + let [surfaceWidth, surfaceHeight] = this._mapView.view.get_size(); + + let width = _PREVIEW_WIDTH; + this._scaleFactor = width / surfaceWidth; + let height = surfaceHeight * this._scaleFactor; + + this._previewArea.set_size_request(width, height); + this._previewArea.connect('draw', + (w, cr) => this._drawPreview(w, cr)); + } + + _drawPreview(widget, cr) { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.scale(this._scaleFactor, this._scaleFactor); + cr.setSourceSurface(this._surface, 0, 0); + cr.paint(); + } + + _onFileNameChanged() { + let name = GLib.filename_from_utf8(this._filenameEntry.text, -1)[0]; + name = name.toString(); + if (!name) { + this._exportButton.sensitive= false; + return; + } + + try { + GLib.build_filenamev([this._folder, name]); + this._exportButton.sensitive = true; + this._fileName = name; + } catch(e) { + this._exportButton.sensitive = false; + } + } + + _onFolderChanged() { + let folder = this._fileChooserButton.get_filename(); + + if (!GLib.file_test(folder, GLib.FileTest.IS_DIR)) { + this._exportButton.sensitive= false; + return; + } + if (!GLib.file_test(folder, GLib.FileTest.EXISTS)) { + this._exportButton.sensitive = false; + return; + } + + this._exportButton.sensitive = true; + this._folder = folder; + } + + _exportView() { + let [width, height] = this._mapView.view.get_size(); + let pixbuf = Gdk.pixbuf_get_from_surface(this._surface, 0, 0, width, height); + let path = GLib.build_filenamev([this._folder, this._fileName]); + + try { + pixbuf.savev(path, "png", [], []); + this.response(Response.SUCCESS); + } catch(e) { + Utils.debug('failed to export view: ' + e.message); + let details = null; + + if (e.matches(GLib.FileError, GLib.FileError.ROFS)) + details = _("Filesystem is read only"); + else if (e.matches(GLib.FileError, GLib.FileError.ACCES)) + details = _("You do not have permission to save there"); + else if (e.matches(GLib.FileError, GLib.FileError.NOENT)) + details = _("The directory does not exist"); + else if (e.matches(GLib.FileError, GLib.FileError.ISDIR)) + details = _("No filename specified"); + + let dialog = new Gtk.MessageDialog({ + transient_for: this, + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("Unable to export view"), + secondary_text: details + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + } + + _includeLayersChanged() { + let includeLayers = this._layersCheckButton.get_active(); + + this._surface = this._mapView.view.to_surface(includeLayers); + this._previewArea.queue_draw(); + } +}); diff --git a/src/favoritesPopover.js b/src/favoritesPopover.js new file mode 100644 index 00000000..097c1e58 --- /dev/null +++ b/src/favoritesPopover.js @@ -0,0 +1,120 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; + +const _N_VISIBLE = 6; + +var FavoritesPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/favorites-popover.ui', + InternalChildren: [ 'mainGrid', + 'entry', + 'scrolledWindow', + 'list' ], + Properties: { + 'rows': GObject.ParamSpec.int('rows', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, GLib.MAXINT32, 0) + } +}, class FavoritesPopover extends Gtk.Popover { + + _init(params) { + params = params || { }; + + this._mapView = params.mapView; + delete params.mapView; + + params.transitions_enabled = false; + super._init(params); + + this._rows = 0; + + let placeType = PlaceStore.PlaceType.FAVORITE; + this._model = Application.placeStore.getModelForPlaceType(placeType); + + this._model.connect('row-deleted', + this._updateList.bind(this)); + this._model.connect('row-inserted', + this._updateList.bind(this)); + + this._list.set_header_func(function(row, before) { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this.connect('notify::rows', () => { + let visible = Math.min(this._rows, _N_VISIBLE); + let separators = visible - 1; // separators are 1px + let height = PlaceListRow.ROW_HEIGHT * visible + separators; + + this._scrolledWindow.min_content_height = height; + this._entry.visible = this._rows > _N_VISIBLE; + }); + + this._entry.connect('changed', + () => this._list.invalidate_filter(this._list)); + + this._list.connect('row-activated', (list, row) => { + this.hide(); + this._mapView.showPlace(row.place, true); + }); + + this._list.set_filter_func((row) => { + return row.place.match(this._entry.text); + }); + + this._updateList(); + } + + set rows(rows) { + if (rows !== this._rows) { + this._rows = rows; + this.notify('rows'); + } + } + + get rows() { + return this._rows; + } + + _updateList() { + this._list.forall((row) => row.destroy()); + + let rows = 0; + this._model.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + + let row = new PlaceListRow.PlaceListRow({ place: place, + can_focus: true }); + this._list.insert(row, -1); + rows++; + }); + + this.rows = rows; + } +}); diff --git a/src/foursquareBackend.js b/src/foursquareBackend.js new file mode 100644 index 00000000..164ddfb6 --- /dev/null +++ b/src/foursquareBackend.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const FoursquareGoaAuthorizer = imports.foursquareGoaAuthorizer; +const ServiceBackend = imports.serviceBackend; +const SocialPlace = imports.socialPlace; + +const _PLACE_LINK_FORMAT = 'https://foursquare.com/v/foursquare-hq/%s'; + +var FoursquareBackend = GObject.registerClass( +class SocialServiceFoursquareBackend extends ServiceBackend.ServiceBackend { + + get name() { + return 'foursquare'; + } + + createRestCall(authorizer) { + return FoursquareGoaAuthorizer.newRestCall(authorizer); + } + + refreshAuthorization(authorizer, cancellable) { + return authorizer.refreshAuthorization(cancellable); + } + + getAuthorizerAccount(authorizer) { + return authorizer.goaObject; + } + + createAuthorizer(account) { + return new FoursquareGoaAuthorizer.FoursquareGoaAuthorizer({ goaObject: account }); + } + + isTokenInvalid(restCall, data) { + return data.meta.code === 401 || data.meta.code === 403; + } + + isInvalidCall(restCall, data) { + return !data || data.meta.code !== 200; + } + + getCallResultCode(restCall, data) { + return data ? data.meta.code : restCall.get_status_code(); + } + + getCallResultMessage(restCall, data) { + return data ? data.meta.errorDetail : restCall.get_status_message(); + } + + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { + let broadcast = checkIn.privacy; + + if (checkIn.broadcastFacebook) + broadcast += ',facebook'; + + if (checkIn.broadcastTwitter) + broadcast += ',twitter'; + + this.callAsync(authorizer, + 'POST', + 'checkins/add', + { + 'shout': checkIn.message, + 'venueId': checkIn.place.id, + 'broadcast': broadcast + }, + callback, + cancellable); + } + + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + this.callAsync(authorizer, + 'GET', + 'venues/search', + { + 'll': latitude + ',' + longitude, + 'radius': distance, + 'intent': 'checkin' + }, + callback, + cancellable); + } + + createPlaces(rawData) { + return rawData.response.venues.map(function(place) { + let link = _PLACE_LINK_FORMAT.format(place.id); + + return new SocialPlace.SocialPlace({ id: place.id, + name: place.name, + latitude: place.location.lat, + longitude: place.location.lng, + category: place.categories.length > 0 ? + place.categories[0].name : + null, + link: link, + originalData: place }); + }); + } +}); diff --git a/src/foursquareGoaAuthorizer.js b/src/foursquareGoaAuthorizer.js new file mode 100644 index 00000000..d51ba968 --- /dev/null +++ b/src/foursquareGoaAuthorizer.js @@ -0,0 +1,91 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Rest = imports.gi.Rest; + +const _FOURSQUARE_API_VERSION = '20140226'; + +var FoursquareGoaAuthorizer = class FoursquareGoaAuthorizer { + constructor(params) { + if (!params.goaObject) { + logError('FoursquareGoaAuthorizer requires goaObject parameter'); + return; + } + + this.goaObject = params.goaObject; + } + + get goaObject() { + return this._goaObject; + } + + set goaObject(object) { + this._goaObject = object; + this._accessToken = null; + } + + _refreshAccessToken(cancellable) { + if (this._accessToken) + return true; + + let getAccessTokenResult = this.goaObject.get_oauth2_based().call_get_access_token_sync(cancellable); + + if (getAccessTokenResult[0]) { + this._accessToken = getAccessTokenResult[1]; + return true; + } + + return false; + } + + processCall(restCall) { + this._refreshAccessToken(null); + restCall.add_param('oauth_token', this._accessToken); + restCall.add_param('v', _FOURSQUARE_API_VERSION); + } + + processMessage(soupMessage) { + this._refreshAccessToken(null); + let uri = soupMessage.get_uri(); + uri.set_query(uri, 'oauth_token' + this._accessToken + '&v=' + _FOURSQUARE_API_VERSION); + } + + refreshAuthorization(cancellable) { + let ensureCredentialsResult = this.goaObject.get_account().call_ensure_credentials_sync(cancellable); + if (ensureCredentialsResult[0]) { + this._accessToken = null; + return this._refreshAccessToken(cancellable); + } + + return false; + } +}; + +function newRestCall(authorizer) +{ + let proxy = new Rest.Proxy({ url_format: 'https://api.foursquare.com/v2', + binding_required: false }); + let restCall = proxy.new_call(); + + authorizer.processCall(restCall); + + return restCall; +} diff --git a/src/geoJSONShapeLayer.js b/src/geoJSONShapeLayer.js new file mode 100644 index 00000000..5b9b1b1b --- /dev/null +++ b/src/geoJSONShapeLayer.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +var GeoJSONShapeLayer = GObject.registerClass( +class GeoJSONShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + getName() { + /* Special Case since this file extension contains 2 periods */ + let suffix = '.geo.json'; + if (this.filename.endsWith(suffix)) + return this.filename.replace(new RegExp(suffix + '$'), ''); + else + return super.getName(); + } + + _parseContent() { + this._mapSource.parse(JSON.parse(Utils.getBufferText(this._fileContents))); + } +}); + +GeoJSONShapeLayer.mimeTypes = ['application/vnd.geo+json', + 'application/geo+json', + 'application/json']; +GeoJSONShapeLayer.displayName = 'GeoJSON'; +GeoJSONShapeLayer.createInstance = function(params) { + return new GeoJSONShapeLayer(params); +}; diff --git a/src/geoJSONSource.js b/src/geoJSONSource.js new file mode 100644 index 00000000..0027ded1 --- /dev/null +++ b/src/geoJSONSource.js @@ -0,0 +1,281 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const BoundingBox = imports.boundingBox; +const Geojsonvt = imports.geojsonvt.geojsonvt; +const Location = imports.location; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const Service = imports.service; +const Utils = imports.utils; +const GeoJSONStyle = imports.geoJSONStyle; +const MapView = imports.mapView; + +const TileFeature = { POINT: 1, + LINESTRING: 2, + POLYGON: 3 }; + +var GeoJSONSource = GObject.registerClass( +class GeoJSONSource extends Champlain.TileSource { + + _init(params) { + super._init(); + + this._mapView = params.mapView; + this._markerLayer = params.markerLayer; + this._bbox = new BoundingBox.BoundingBox(); + this._tileSize = Service.getService().tiles.street.tile_size; + } + + get bbox() { + return this._bbox; + } + + vfunc_get_tile_size() { + return this._tileSize; + } + + vfunc_get_max_zoom_level() { + return 20; + } + + vfunc_get_min_zoom_level() { + return 0; + } + + vfunc_get_id() { + return 'GeoJSONSource'; + } + + vfunc_get_name() { + return 'GeoJSONSource'; + } + + vfunc_fill_tile(tile) { + if (tile.get_state() === Champlain.State.DONE) + return; + + tile.connect('render-complete', (tile, data, size, error) => { + if(!error) { + tile.set_state(Champlain.State.DONE); + tile.display_content(); + } else if(this.next_source) + this.next_source.fill_tile(tile); + }); + + Mainloop.idle_add(() => this._renderTile(tile), tile); + } + + _validate([lon, lat]) { + if ((-180 <= lon && lon <= 180) && + (-90 <= lat && lat <= 90)) { + return; + } + + throw new Error(_("invalid coordinate")); + } + + _compose(coordinates) { + coordinates.forEach((coordinate) => { + this._validate(coordinate); + this._bbox.extend(coordinate[1], coordinate[0]); + }); + } + + _clampBBox() { + this._bbox.top = Math.min(this._bbox.top, MapView.MAX_LATITUDE); + this._bbox.left = Math.max(this._bbox.left, MapView.MIN_LONGITUDE); + this._bbox.bottom = Math.max(this._bbox.bottom, MapView.MIN_LATITUDE); + this._bbox.right = Math.min(this._bbox.right, MapView.MAX_LONGITUDE); + } + + _parseLineString(coordinates) { + this._compose(coordinates); + } + + _parsePolygon(coordinates) { + coordinates.forEach((coordinate) => this._compose(coordinate)); + } + + _parsePoint(coordinates, properties) { + let name = null; + if (properties) + name = properties.name; + + this._validate(coordinates); + this._bbox.extend(coordinates[1], + coordinates[0]); + + let location = new Location.Location({ + latitude: coordinates[1], + longitude: coordinates[0] + }); + + let place = new Place.Place({ name: name, + store: false, + location: location }); + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this._mapView }); + this._markerLayer.add_marker(placeMarker); + } + + _parseGeometry(geometry, properties) { + if(!geometry) + throw new Error(_("parse error")); + + switch(geometry.type) { + case 'LineString': + this._parseLineString(geometry.coordinates); + break; + + case 'MultiLineString': + geometry.coordinates.forEach((coordinate) => { + this._parseLineString(coordinate); + }); + break; + + case 'Polygon': + this._parsePolygon(geometry.coordinates); + break; + + case 'MultiPolygon': + geometry.coordinates.forEach((coordinate) => { + this._parsePolygon(coordinate); + }); + break; + + case 'Point': + this._parsePoint(geometry.coordinates, properties); + break; + + case 'MultiPoint': + geometry.coordinates.forEach((coordinate, properties) => { + this._parsePoint(coordinate,properties); + }); + break; + + default: + throw new Error(_("unknown geometry")); + } + } + + _parseInternal(root) { + if (!root || !root.type) + throw new Error(_("parse error")); + + switch(root.type) { + case 'FeatureCollection': + root.features.forEach((feature) => { + this._parseGeometry(feature.geometry, feature.properties); + }); + break; + + case 'Feature': + this._parseGeometry(root.geometry, root.properties); + break; + + case 'GeometryCollection': + if (!root.geometries) + throw new Error(_("parse error")); + + root.geometries.forEach((g) => this._parseGeometry(g)); + break; + + default: + this._parseGeometry(root); + } + } + + parse(json) { + this._parseInternal(json); + this._tileIndex = Geojsonvt.geojsonvt(json, { extent: this._tileSize, + maxZoom: 20 }); + this._clampBBox(); + } + + _renderTile(tile) { + let tileJSON = this._tileIndex.getTile(tile.zoom_level, tile.x, tile.y); + let content = new Clutter.Canvas({ width: this._tileSize, + height: this._tileSize }); + tile.content = new Clutter.Actor({ width: this._tileSize, + height: this._tileSize, + content: content }); + + content.connect('draw', (canvas, cr) => { + tile.set_surface(cr.getTarget()); + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + cr.setFillRule(Cairo.FillRule.EVEN_ODD); + + if (!tileJSON) { + tile.emit('render-complete', null, 0, false); + return; + } + + tileJSON.features.forEach((feature) => { + if (feature.type === TileFeature.POINT) + return; + + let geoJSONStyleObj = GeoJSONStyle.GeoJSONStyle.parseSimpleStyle(feature.tags); + + feature.geometry.forEach((geometry) => { + let first = true; + cr.moveTo(0, 0); + cr.setLineWidth(geoJSONStyleObj.lineWidth); + cr.setSourceRGBA(geoJSONStyleObj.color.red, + geoJSONStyleObj.color.green, + geoJSONStyleObj.color.blue, + geoJSONStyleObj.alpha); + + geometry.forEach(function(coord) { + if (first) { + cr.moveTo(coord[0], coord[1]); + first = false; + } else { + cr.lineTo(coord[0], coord[1]); + } + }); + }); + if (feature.type === TileFeature.POLYGON) { + cr.closePath(); + cr.strokePreserve(); + cr.setSourceRGBA(geoJSONStyleObj.fillColor.red, + geoJSONStyleObj.fillColor.green, + geoJSONStyleObj.fillColor.blue, + geoJSONStyleObj.fillAlpha); + cr.fill(); + } else { + cr.stroke(); + } + }); + + tile.emit('render-complete', null, 0, false); + }); + + content.invalidate(); + } +}); diff --git a/src/geoJSONStyle.js b/src/geoJSONStyle.js new file mode 100644 index 00000000..2cfd7162 --- /dev/null +++ b/src/geoJSONStyle.js @@ -0,0 +1,87 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Alaf Azam + */ + +const DEFAULT_LINE_WIDTH = 5; +const DEFAULT_COLOR = '69B1FF'; + +var GeoJSONStyle = class GeoJSONStyle { + constructor(params) { + if (params.lineWidth || params.lineWidth === 0) + this.lineWidth = params.lineWidth; + else + this.lineWidth = DEFAULT_LINE_WIDTH; + + if (params.alpha || params.alpha === 0) + this.alpha = params.alpha; + else + this.alpha = 1; + + if (params.fillAlpha || params.fillAlpha === 0) + this.fillAlpha = params.fillAlpha; + else + this.fillAlpha = 0.25; + + this.color = this._hexToColor(params.color || DEFAULT_COLOR); + this.fillColor = this._hexToColor(params.fillColor) || { red: 0.37, + green: 0.62, + blue: 0.87 }; + } + + _hexToColor(colorString) { + let color = null; + + if (!colorString) + return null; + + if (colorString.startsWith('#')) { + colorString = colorString.slice(1); + } + + if (colorString.length === 3) { + colorString = colorString.match(/([0-9a-f]{3})$/i); + if (colorString) { + color = { + red: (parseInt(colorString[0].chatAt(0), 16) * 0x11)/255, + green: (parseInt(colorString[0].chatAt(1), 16) * 0x11)/255, + blue: (parseInt(colorString[0].chatAt(2), 16) * 0x11)/255 + }; + } + } else { + colorString = colorString.match(/([0-9a-f]{6})$/i); + if (colorString) { + color = { + red: parseInt(colorString[0].substr(0, 2), 16)/255, + green: parseInt(colorString[0].substr(2, 2), 16)/255, + blue: parseInt(colorString[0].substr(4, 2), 16)/255 + }; + } + } + + return color; + } +}; + +GeoJSONStyle.parseSimpleStyle = function(tags) { + return new GeoJSONStyle({ alpha: tags['stroke-opacity'], + fillAlpha: tags['fill-opacity'], + color: tags['stroke'], + fillColor: tags['fill'], + lineWidth: tags['stroke-width'] }); +} diff --git a/src/geoclue.js b/src/geoclue.js new file mode 100644 index 00000000..14f60ecb --- /dev/null +++ b/src/geoclue.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const GClue = imports.gi.Geoclue; +const Gio = imports.gi.Gio; +const Mainloop = imports.mainloop; + +const Place = imports.place; +const Location = imports.location; +const Settings = imports.settings; +const Utils = imports.utils; + +var State = { + INITIAL: 0, + ON: 1, + DENIED: 2, + FAILED: 3 +}; + +var Geoclue = GObject.registerClass({ + Signals: { + 'location-changed': { } + }, + Properties: { + 'state': GObject.ParamSpec.int('state', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + State.INITIAL, + State.FAILED, + State.INITIAL) + }, +}, class Geoclue extends GObject.Object { + + set state(s) { + this._state = s; + this.notify('state'); + } + + get state() { + return this._state; + } + + _init() { + super._init(); + this.place = null; + this._state = State.INITIAL; + + this.start(null); + } + + start(callback) { + let id = 'org.gnome.Maps'; + let level = GClue.AccuracyLevel.EXACT; + + GClue.Simple.new(id, level, null, (object, result) => { + try { + this._simple = GClue.Simple.new_finish(result); + } + catch (e) { + Utils.debug("GeoClue2 service: " + e.message); + if (e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED)) + this.state = State.DENIED; + else + this.state = State.FAILED; + if (callback) + callback(false); + return; + } + + this._simple.connect('notify::location', + () => this._onLocationNotify(this._simple)); + this._simple.client.connect('notify::active', () => { + this.state = this._simple.client.active ? State.ON : State.DENIED; + }); + + this.state = State.ON; + this._onLocationNotify(this._simple); + if (callback) + callback(true); + }); + } + + _onLocationNotify(simple) { + let geoclueLocation = simple.get_location(); + let location = new Location.Location({ + latitude: geoclueLocation.latitude, + longitude: geoclueLocation.longitude, + accuracy: geoclueLocation.accuracy, + heading: geoclueLocation.heading, + description: geoclueLocation.description + }); + this._updateLocation(location); + } + + _updateLocation(location) { + if (!this.place) + this.place = new Place.Place({ name: _("Current Location"), + isCurrentLocation: true }); + + this.place.location = location; + this.emit('location-changed'); + Utils.debug("Updated location: " + location.description + + " (" + location.latitude + ", " + location.longitude + + ", accuracy = " + location.accuracy + " m)"); + } +}); diff --git a/src/geocode.js b/src/geocode.js new file mode 100644 index 00000000..7623684a --- /dev/null +++ b/src/geocode.js @@ -0,0 +1,39 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Service = imports.service; +const GraphHopperGeocode = imports.graphHopperGeocode; +const PhotonGeocode = imports.photonGeocode; + +var _geocoder = null; + +function getGeocoder() { + if (!_geocoder) { + if (Service.getService().photonGeocode) + _geocoder = new PhotonGeocode.PhotonGeocode(); + else + _geocoder = new GraphHopperGeocode.GraphHopperGeocode(); + } + + return _geocoder; +} + + diff --git a/src/geojson-vt/LICENSE b/src/geojson-vt/LICENSE new file mode 100644 index 00000000..00e99140 --- /dev/null +++ b/src/geojson-vt/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Mapbox + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. diff --git a/src/geojson-vt/clip.js b/src/geojson-vt/clip.js new file mode 100644 index 00000000..cad7a21e --- /dev/null +++ b/src/geojson-vt/clip.js @@ -0,0 +1,149 @@ +'use strict'; + +/* clip features between two axis-parallel lines: + * | | + * ___|___ | / + * / | \____|____/ + * | | + */ + +function clip(features, scale, k1, k2, axis, intersect, minAll, maxAll) { + + k1 /= scale; + k2 /= scale; + + if (minAll >= k1 && maxAll <= k2) return features; // trivial accept + else if (minAll > k2 || maxAll < k1) return null; // trivial reject + + var clipped = []; + + for (var i = 0; i < features.length; i++) { + + var feature = features[i], + geometry = feature.geometry, + type = feature.type, + min, max; + + min = feature.min[axis]; + max = feature.max[axis]; + + if (min >= k1 && max <= k2) { // trivial accept + clipped.push(feature); + continue; + } else if (min > k2 || max < k1) continue; // trivial reject + + var slices = type === 1 ? + clipPoints(geometry, k1, k2, axis) : + clipGeometry(geometry, k1, k2, axis, intersect, type === 3); + + if (slices.length) { + // if a feature got clipped, it will likely get clipped on the next zoom level as well, + // so there's no need to recalculate bboxes + clipped.push({ + geometry: slices, + type: type, + tags: features[i].tags || null, + min: feature.min, + max: feature.max + }); + } + } + + return clipped.length ? clipped : null; +} + +function clipPoints(geometry, k1, k2, axis) { + var slice = []; + + for (var i = 0; i < geometry.length; i++) { + var a = geometry[i], + ak = a[axis]; + + if (ak >= k1 && ak <= k2) slice.push(a); + } + return slice; +} + +function clipGeometry(geometry, k1, k2, axis, intersect, closed) { + + var slices = []; + + for (var i = 0; i < geometry.length; i++) { + + var ak = 0, + bk = 0, + b = null, + points = geometry[i], + area = points.area, + dist = points.dist, + len = points.length, + a, j, last; + + var slice = []; + + for (j = 0; j < len - 1; j++) { + a = b || points[j]; + b = points[j + 1]; + ak = bk || a[axis]; + bk = b[axis]; + + if (ak < k1) { + + if ((bk > k2)) { // ---|-----|--> + slice.push(intersect(a, b, k1), intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk >= k1) slice.push(intersect(a, b, k1)); // ---|--> | + + } else if (ak > k2) { + + if ((bk < k1)) { // <--|-----|--- + slice.push(intersect(a, b, k2), intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk <= k2) slice.push(intersect(a, b, k2)); // | <--|--- + + } else { + + slice.push(a); + + if (bk < k1) { // <--|--- | + slice.push(intersect(a, b, k1)); + if (!closed) slice = newSlice(slices, slice, area, dist); + + } else if (bk > k2) { // | ---|--> + slice.push(intersect(a, b, k2)); + if (!closed) slice = newSlice(slices, slice, area, dist); + } + // | --> | + } + } + + // add the last point + a = points[len - 1]; + ak = a[axis]; + if (ak >= k1 && ak <= k2) slice.push(a); + + // close the polygon if its endpoints are not the same after clipping + + last = slice[slice.length - 1]; + if (closed && last && (slice[0][0] !== last[0] || slice[0][1] !== last[1])) slice.push(slice[0]); + + // add the final slice + newSlice(slices, slice, area, dist); + } + + return slices; +} + +function newSlice(slices, slice, area, dist) { + if (slice.length) { + // we don't recalculate the area/length of the unclipped geometry because the case where it goes + // below the visibility threshold as a result of clipping is rare, so we avoid doing unnecessary work + slice.area = area; + slice.dist = dist; + + slices.push(slice); + } + return []; +} diff --git a/src/geojson-vt/convert.js b/src/geojson-vt/convert.js new file mode 100644 index 00000000..eda26c7d --- /dev/null +++ b/src/geojson-vt/convert.js @@ -0,0 +1,147 @@ +'use strict'; + +const simplify = imports.geojsonvt.simplify.simplify; + +// converts GeoJSON feature into an intermediate projected JSON vector format with simplification data + +function convert(data, tolerance) { + var features = []; + + if (data.type === 'FeatureCollection') { + for (var i = 0; i < data.features.length; i++) { + convertFeature(features, data.features[i], tolerance); + } + } else if (data.type === 'Feature') { + convertFeature(features, data, tolerance); + + } else { + // single geometry or a geometry collection + convertFeature(features, {geometry: data}, tolerance); + } + return features; +} + +function convertFeature(features, feature, tolerance) { + if (feature.geometry === null) { + // ignore features with null geometry + return; + } + + var geom = feature.geometry, + type = geom.type, + coords = geom.coordinates, + tags = feature.properties, + i, j, rings; + + if (type === 'Point') { + features.push(create(tags, 1, [projectPoint(coords)])); + + } else if (type === 'MultiPoint') { + features.push(create(tags, 1, project(coords))); + + } else if (type === 'LineString') { + features.push(create(tags, 2, [project(coords, tolerance)])); + + } else if (type === 'MultiLineString' || type === 'Polygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + rings.push(project(coords[i], tolerance)); + } + features.push(create(tags, type === 'Polygon' ? 3 : 2, rings)); + + } else if (type === 'MultiPolygon') { + rings = []; + for (i = 0; i < coords.length; i++) { + for (j = 0; j < coords[i].length; j++) { + rings.push(project(coords[i][j], tolerance)); + } + } + features.push(create(tags, 3, rings)); + + } else if (type === 'GeometryCollection') { + for (i = 0; i < geom.geometries.length; i++) { + convertFeature(features, { + geometry: geom.geometries[i], + properties: tags + }, tolerance); + } + + } else { + throw new Error('Input data is not a valid GeoJSON object.'); + } +} + +function create(tags, type, geometry) { + var feature = { + geometry: geometry, + type: type, + tags: tags || null, + min: [2, 1], // initial bbox values; + max: [-1, 0] // note that coords are usually in [0..1] range + }; + calcBBox(feature); + return feature; +} + +function project(lonlats, tolerance) { + var projected = []; + for (var i = 0; i < lonlats.length; i++) { + projected.push(projectPoint(lonlats[i])); + } + if (tolerance) { + simplify(projected, tolerance); + calcSize(projected); + } + return projected; +} + +function projectPoint(p) { + var sin = Math.sin(p[1] * Math.PI / 180), + x = (p[0] / 360 + 0.5), + y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); + + y = y < 0 ? 0 : + y > 1 ? 1 : y; + + return [x, y, 0]; +} + +// calculate area and length of the poly +function calcSize(points) { + var area = 0, + dist = 0; + + for (var i = 0, a, b; i < points.length - 1; i++) { + a = b || points[i]; + b = points[i + 1]; + + area += a[0] * b[1] - b[0] * a[1]; + + // use Manhattan distance instead of Euclidian one to avoid expensive square root computation + dist += Math.abs(b[0] - a[0]) + Math.abs(b[1] - a[1]); + } + points.area = Math.abs(area / 2); + points.dist = dist; +} + +// calculate the feature bounding box for faster clipping later +function calcBBox(feature) { + var geometry = feature.geometry, + min = feature.min, + max = feature.max; + + if (feature.type === 1) calcRingBBox(min, max, geometry); + else for (var i = 0; i < geometry.length; i++) calcRingBBox(min, max, geometry[i]); + + return feature; +} + +function calcRingBBox(min, max, points) { + for (var i = 0, p; i < points.length; i++) { + p = points[i]; + min[0] = Math.min(p[0], min[0]); + max[0] = Math.max(p[0], max[0]); + min[1] = Math.min(p[1], min[1]); + max[1] = Math.max(p[1], max[1]); + } +} diff --git a/src/geojson-vt/index.js b/src/geojson-vt/index.js new file mode 100644 index 00000000..bd0c6e59 --- /dev/null +++ b/src/geojson-vt/index.js @@ -0,0 +1,238 @@ +'use strict'; + +const convert = imports.geojsonvt.convert.convert; +const transform = { tile: imports.geojsonvt.transform.transformTile, + point: imports.geojsonvt.transform.transformPoint }; +const clip = imports.geojsonvt.clip.clip; +const createTile = imports.geojsonvt.tile.createTile; +const wrap = imports.geojsonvt.wrap.wrap; + +function geojsonvt(data, options) { + return new GeoJSONVT(data, options); +} + +function GeoJSONVT(data, options) { + options = this.options = extend(Object.create(this.options), options); + + var debug = options.debug; + + if (debug) console.time('preprocess data'); + + var z2 = 1 << options.maxZoom, // 2^z + features = convert(data, options.tolerance / (z2 * options.extent)); + + this.tiles = {}; + this.tileCoords = []; + + if (debug) { + console.timeEnd('preprocess data'); + console.log('index: maxZoom: %d, maxPoints: %d', options.indexMaxZoom, options.indexMaxPoints); + console.time('generate tiles'); + this.stats = {}; + this.total = 0; + } + + features = wrap(features, options.buffer / options.extent, intersectX); + + // start slicing from the top tile down + if (features.length) this.splitTile(features, 0, 0, 0); + + if (debug) { + if (features.length) console.log('features: %d, points: %d', this.tiles[0].numFeatures, this.tiles[0].numPoints); + console.timeEnd('generate tiles'); + console.log('tiles generated:', this.total, JSON.stringify(this.stats)); + } +} + +GeoJSONVT.prototype.options = { + maxZoom: 14, // max zoom to preserve detail on + indexMaxZoom: 5, // max zoom in the tile index + indexMaxPoints: 100000, // max number of points per tile in the tile index + solidChildren: false, // whether to tile solid square tiles further + tolerance: 3, // simplification tolerance (higher means simpler) + extent: 4096, // tile extent + buffer: 64, // tile buffer on each side + debug: 0 // logging level (0, 1 or 2) +}; + +GeoJSONVT.prototype.splitTile = function (features, z, x, y, cz, cx, cy) { + + var stack = [features, z, x, y], + options = this.options, + debug = options.debug, + solid = null; + + // avoid recursion by using a processing queue + while (stack.length) { + y = stack.pop(); + x = stack.pop(); + z = stack.pop(); + features = stack.pop(); + + var z2 = 1 << z, + id = toID(z, x, y), + tile = this.tiles[id], + tileTolerance = z === options.maxZoom ? 0 : options.tolerance / (z2 * options.extent); + + if (!tile) { + if (debug > 1) console.time('creation'); + + tile = this.tiles[id] = createTile(features, z2, x, y, tileTolerance, z === options.maxZoom); + this.tileCoords.push({z: z, x: x, y: y}); + + if (debug) { + if (debug > 1) { + console.log('tile z%d-%d-%d (features: %d, points: %d, simplified: %d)', + z, x, y, tile.numFeatures, tile.numPoints, tile.numSimplified); + console.timeEnd('creation'); + } + var key = 'z' + z; + this.stats[key] = (this.stats[key] || 0) + 1; + this.total++; + } + } + + // save reference to original geometry in tile so that we can drill down later if we stop now + tile.source = features; + + // if it's the first-pass tiling + if (!cz) { + // stop tiling if we reached max zoom, or if the tile is too simple + if (z === options.indexMaxZoom || tile.numPoints <= options.indexMaxPoints) continue; + + // if a drilldown to a specific tile + } else { + // stop tiling if we reached base zoom or our target tile zoom + if (z === options.maxZoom || z === cz) continue; + + // stop tiling if it's not an ancestor of the target tile + var m = 1 << (cz - z); + if (x !== Math.floor(cx / m) || y !== Math.floor(cy / m)) continue; + } + + // stop tiling if the tile is solid clipped square + if (!options.solidChildren && isClippedSquare(tile, options.extent, options.buffer)) { + if (cz) solid = z; // and remember the zoom if we're drilling down + continue; + } + + // if we slice further down, no need to keep source geometry + tile.source = null; + + if (debug > 1) console.time('clipping'); + + // values we'll use for clipping + var k1 = 0.5 * options.buffer / options.extent, + k2 = 0.5 - k1, + k3 = 0.5 + k1, + k4 = 1 + k1, + tl, bl, tr, br, left, right; + + tl = bl = tr = br = null; + + left = clip(features, z2, x - k1, x + k3, 0, intersectX, tile.min[0], tile.max[0]); + right = clip(features, z2, x + k2, x + k4, 0, intersectX, tile.min[0], tile.max[0]); + + if (left) { + tl = clip(left, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + bl = clip(left, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (right) { + tr = clip(right, z2, y - k1, y + k3, 1, intersectY, tile.min[1], tile.max[1]); + br = clip(right, z2, y + k2, y + k4, 1, intersectY, tile.min[1], tile.max[1]); + } + + if (debug > 1) console.timeEnd('clipping'); + + if (tl) stack.push(tl, z + 1, x * 2, y * 2); + if (bl) stack.push(bl, z + 1, x * 2, y * 2 + 1); + if (tr) stack.push(tr, z + 1, x * 2 + 1, y * 2); + if (br) stack.push(br, z + 1, x * 2 + 1, y * 2 + 1); + } + + return solid; +}; + +GeoJSONVT.prototype.getTile = function (z, x, y) { + var options = this.options, + extent = options.extent, + debug = options.debug; + + var z2 = 1 << z; + x = ((x % z2) + z2) % z2; // wrap tile x coordinate + + var id = toID(z, x, y); + if (this.tiles[id]) return transform.tile(this.tiles[id], extent); + + if (debug > 1) console.log('drilling down to z%d-%d-%d', z, x, y); + + var z0 = z, + x0 = x, + y0 = y, + parent; + + while (!parent && z0 > 0) { + z0--; + x0 = Math.floor(x0 / 2); + y0 = Math.floor(y0 / 2); + parent = this.tiles[toID(z0, x0, y0)]; + } + + if (!parent || !parent.source) return null; + + // if we found a parent tile containing the original geometry, we can drill down from it + if (debug > 1) console.log('found parent tile z%d-%d-%d', z0, x0, y0); + + // it parent tile is a solid clipped square, return it instead since it's identical + if (isClippedSquare(parent, extent, options.buffer)) return transform.tile(parent, extent); + + if (debug > 1) console.time('drilling down'); + var solid = this.splitTile(parent.source, z0, x0, y0, z, x, y); + if (debug > 1) console.timeEnd('drilling down'); + + // one of the parent tiles was a solid clipped square + if (solid !== null) { + var m = 1 << (z - solid); + id = toID(solid, Math.floor(x / m), Math.floor(y / m)); + } + + return this.tiles[id] ? transform.tile(this.tiles[id], extent) : null; +}; + +function toID(z, x, y) { + return (((1 << z) * y + x) * 32) + z; +} + +function intersectX(a, b, x) { + return [x, (x - a[0]) * (b[1] - a[1]) / (b[0] - a[0]) + a[1], 1]; +} +function intersectY(a, b, y) { + return [(y - a[1]) * (b[0] - a[0]) / (b[1] - a[1]) + a[0], y, 1]; +} + +function extend(dest, src) { + for (var i in src) dest[i] = src[i]; + return dest; +} + +// checks whether a tile is a whole-area fill after clipping; if it is, there's no sense slicing it further +function isClippedSquare(tile, extent, buffer) { + + var features = tile.source; + if (features.length !== 1) return false; + + var feature = features[0]; + if (feature.type !== 3 || feature.geometry.length > 1) return false; + + var len = feature.geometry[0].length; + if (len !== 5) return false; + + for (var i = 0; i < len; i++) { + var p = transform.point(feature.geometry[0][i], extent, tile.z2, tile.x, tile.y); + if ((p[0] !== -buffer && p[0] !== extent + buffer) || + (p[1] !== -buffer && p[1] !== extent + buffer)) return false; + } + + return true; +} diff --git a/src/geojson-vt/simplify.js b/src/geojson-vt/simplify.js new file mode 100644 index 00000000..2e55972e --- /dev/null +++ b/src/geojson-vt/simplify.js @@ -0,0 +1,72 @@ +'use strict'; + +// calculate simplification data using optimized Douglas-Peucker algorithm + +function simplify(points, tolerance) { + + var sqTolerance = tolerance * tolerance, + len = points.length, + first = 0, + last = len - 1, + stack = [], + i, maxSqDist, sqDist, index; + + // always retain the endpoints (1 is the max value) + points[first][2] = 1; + points[last][2] = 1; + + // avoid recursion by using a stack + while (last) { + + maxSqDist = 0; + + for (i = first + 1; i < last; i++) { + sqDist = getSqSegDist(points[i], points[first], points[last]); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + points[index][2] = maxSqDist; // save the point importance in squared pixels as a z coordinate + stack.push(first); + stack.push(index); + first = index; + + } else { + last = stack.pop(); + first = stack.pop(); + } + } +} + +// square distance from a point to a segment +function getSqSegDist(p, a, b) { + + var x = a[0], y = a[1], + bx = b[0], by = b[1], + px = p[0], py = p[1], + dx = bx - x, + dy = by - y; + + if (dx !== 0 || dy !== 0) { + + var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy); + + if (t > 1) { + x = bx; + y = by; + + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = px - x; + dy = py - y; + + return dx * dx + dy * dy; +} diff --git a/src/geojson-vt/tile.js b/src/geojson-vt/tile.js new file mode 100644 index 00000000..764d5385 --- /dev/null +++ b/src/geojson-vt/tile.js @@ -0,0 +1,83 @@ +'use strict'; + +function createTile(features, z2, tx, ty, tolerance, noSimplify) { + var tile = { + features: [], + numPoints: 0, + numSimplified: 0, + numFeatures: 0, + source: null, + x: tx, + y: ty, + z2: z2, + transformed: false, + min: [2, 1], + max: [-1, 0] + }; + for (var i = 0; i < features.length; i++) { + tile.numFeatures++; + addFeature(tile, features[i], tolerance, noSimplify); + + var min = features[i].min, + max = features[i].max; + + if (min[0] < tile.min[0]) tile.min[0] = min[0]; + if (min[1] < tile.min[1]) tile.min[1] = min[1]; + if (max[0] > tile.max[0]) tile.max[0] = max[0]; + if (max[1] > tile.max[1]) tile.max[1] = max[1]; + } + return tile; +} + +function addFeature(tile, feature, tolerance, noSimplify) { + + var geom = feature.geometry, + type = feature.type, + simplified = [], + sqTolerance = tolerance * tolerance, + i, j, ring, p; + + if (type === 1) { + for (i = 0; i < geom.length; i++) { + simplified.push(geom[i]); + tile.numPoints++; + tile.numSimplified++; + } + + } else { + + // simplify and transform projected coordinates for tile geometry + for (i = 0; i < geom.length; i++) { + ring = geom[i]; + + // filter out tiny polylines & polygons + if (!noSimplify && ((type === 2 && ring.dist < tolerance) || + (type === 3 && ring.area < sqTolerance))) { + tile.numPoints += ring.length; + continue; + } + + var simplifiedRing = []; + + for (j = 0; j < ring.length; j++) { + p = ring[j]; + // keep points with importance > tolerance + if (noSimplify || p[2] > sqTolerance) { + simplifiedRing.push(p); + tile.numSimplified++; + } + tile.numPoints++; + } + + simplified.push(simplifiedRing); + } + } + + if (simplified.length) { + tile.features.push({ + geometry: simplified, + type: type, + tags: feature.tags || null + }); + } +} diff --git a/src/geojson-vt/transform.js b/src/geojson-vt/transform.js new file mode 100644 index 00000000..fe93e947 --- /dev/null +++ b/src/geojson-vt/transform.js @@ -0,0 +1,38 @@ +'use strict'; + +// Transforms the coordinates of each feature in the given tile from +// mercator-projected space into (extent x extent) tile space. +function transformTile(tile, extent) { + if (tile.transformed) return tile; + + var z2 = tile.z2, + tx = tile.x, + ty = tile.y, + i, j, k; + + for (i = 0; i < tile.features.length; i++) { + var feature = tile.features[i], + geom = feature.geometry, + type = feature.type; + + if (type === 1) { + for (j = 0; j < geom.length; j++) geom[j] = transformPoint(geom[j], extent, z2, tx, ty); + + } else { + for (j = 0; j < geom.length; j++) { + var ring = geom[j]; + for (k = 0; k < ring.length; k++) ring[k] = transformPoint(ring[k], extent, z2, tx, ty); + } + } + } + + tile.transformed = true; + + return tile; +} + +function transformPoint(p, extent, z2, tx, ty) { + var x = Math.round(extent * (p[0] * z2 - tx)), + y = Math.round(extent * (p[1] * z2 - ty)); + return [x, y]; +} diff --git a/src/geojson-vt/wrap.js b/src/geojson-vt/wrap.js new file mode 100644 index 00000000..7d9b243a --- /dev/null +++ b/src/geojson-vt/wrap.js @@ -0,0 +1,59 @@ +'use strict'; + +const clip = imports.geojsonvt.clip.clip; + +function wrap(features, buffer, intersectX) { + var merged = features, + left = clip(features, 1, -1 - buffer, buffer, 0, intersectX, -1, 2), // left world copy + right = clip(features, 1, 1 - buffer, 2 + buffer, 0, intersectX, -1, 2); // right world copy + + if (left || right) { + merged = clip(features, 1, -buffer, 1 + buffer, 0, intersectX, -1, 2); // center world copy + + if (left) merged = shiftFeatureCoords(left, 1).concat(merged); // merge left into center + if (right) merged = merged.concat(shiftFeatureCoords(right, -1)); // merge right into center + } + + return merged; +} + +function shiftFeatureCoords(features, offset) { + var newFeatures = []; + + for (var i = 0; i < features.length; i++) { + var feature = features[i], + type = feature.type; + + var newGeometry; + + if (type === 1) { + newGeometry = shiftCoords(feature.geometry, offset); + } else { + newGeometry = []; + for (var j = 0; j < feature.geometry.length; j++) { + newGeometry.push(shiftCoords(feature.geometry[j], offset)); + } + } + + newFeatures.push({ + geometry: newGeometry, + type: type, + tags: feature.tags, + min: [feature.min[0] + offset, feature.min[1]], + max: [feature.max[0] + offset, feature.max[1]] + }); + } + + return newFeatures; +} + +function shiftCoords(points, offset) { + var newPoints = []; + newPoints.area = points.area; + newPoints.dist = points.dist; + + for (var i = 0; i < points.length; i++) { + newPoints.push([points[i][0] + offset, points[i][1], points[i][2]]); + } + return newPoints; +} diff --git a/src/gfx.js b/src/gfx.js new file mode 100644 index 00000000..8f6ce6a4 --- /dev/null +++ b/src/gfx.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Color = imports.color; + +/** + * Draws a colored badged with rounded corners and an optional outline. + * + * cr: A Cairo context to draw into + * bgColor: The fill color to draw the background with, represented as + * a string with 8-bit HEX-encoded RGB values + * outlineColor: The color to use for the outline, or null if no outline + * x: pixel offset for x-coord of top-left corner of bounding box + * y: pixel offset for y-coord of top-left corner of bounding box + * width: The width to draw the badge + * height: The height to draw the badge + */ +function drawColoredBagde(cr, bgColor, outlineColor, x, y, width, height) { + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let radius = outlineColor ? 5 : 3; + + cr.newSubPath(); + cr.arc(width - radius + x, radius + y, radius, -Math.PI / 2, 0); + cr.arc(width - radius + x, height - radius + y, radius, 0 , Math.PI / 2); + cr.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI); + cr.arc(radius + x, radius + y, radius, Math.PI, 3 * Math.PI / 2); + cr.closePath(); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.fillPreserve(); + + if (outlineColor) { + let outlineRed = Color.parseColor(outlineColor, 0); + let outlineGreen = Color.parseColor(outlineColor, 1); + let outlineBlue = Color.parseColor(outlineColor, 2); + + cr.setSourceRGB(outlineRed, outlineGreen, outlineBlue); + cr.setLineWidth(1); + cr.stroke(); + } +} diff --git a/src/gpxShapeLayer.js b/src/gpxShapeLayer.js new file mode 100644 index 00000000..e3a23b99 --- /dev/null +++ b/src/gpxShapeLayer.js @@ -0,0 +1,52 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var GpxShapeLayer = GObject.registerClass( +class GpxShapeLayer extends ShapeLayer.ShapeLayer { + + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.gpx(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +GpxShapeLayer.mimeTypes = ['application/gpx+xml' ]; +GpxShapeLayer.displayName = 'GPX'; +GpxShapeLayer.createInstance = function(params) { + return new GpxShapeLayer(params); +}; diff --git a/src/graphHopper.js b/src/graphHopper.js new file mode 100644 index 00000000..1fb4f479 --- /dev/null +++ b/src/graphHopper.js @@ -0,0 +1,269 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Mainloop = imports.mainloop; +const Soup = imports.gi.Soup; + +const BoundingBox = imports.boundingBox; +const EPAF = imports.epaf; +const HTTP = imports.http; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Utils = imports.utils; + +/** + * Directional sign from the GraphHopper API. + * https://github.com/graphhopper/graphhopper/blob/master/docs/web/api-doc.md + */ +var Sign = { + KEEP_LEFT: -7, + TURN_SHARP_LEFT: -3, + TURN_LEFT: -2, + TURN_SLIGHT_LEFT: -1, + CONTINUE_ON_STREET: 0, + TURN_SLIGHT_RIGHT: 1, + TURN_RIGHT: 2, + TURN_SHARP_RIGHT: 3, + FINISH: 4, + REACHED_VIA: 5, + USE_ROUNDABOUT: 6, + KEEP_RIGHT: 7 +} + +var GraphHopper = class GraphHopper { + + get route() { + return this._route; + } + + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._key = "VCIHrHj0pDKb8INLpT4s5hVadNmJ1Q3vi0J4nJYP"; + this._baseURL = "https://graphhopper.com/api/1/route?"; + this._locale = GLib.get_language_names()[0]; + this._route = new Route.Route(); + this.storedRoute = null; + this._query = params.query; + } + + _updateFromStored() { + Mainloop.idle_add(() => { + if (!this.storedRoute) + return; + + this.route.update({ path: this.storedRoute.path, + turnPoints: this.storedRoute.turnPoints, + distance: this.storedRoute.distance, + time: this.storedRoute.time, + bbox: this.storedRoute.bbox }); + this.storedRoute = null; + }); + } + + _queryGraphHopper(points, transportationType, callback) { + let url = this._buildURL(points, transportationType); + let msg = Soup.Message.new('GET', url); + this._session.queue_message(msg, (session, message) => { + try { + let result = this._parseMessage(message); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + callback(null, e); + } + }); + } + + fetchRoute(points, transportationType) { + if (this.storedRoute) { + this._updateFromStored(); + return; + } + + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (exception) { + Utils.debug(exception); + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("Route request failed.")); + } else { + if (!result) { + if (this._query.latest) + this._query.latest.place = null; + else + this.route.reset(); + this.route.error(_("No route found.")); + } else { + let route = this._createRoute(result.paths[0]); + this.route.update(route); + } + } + }); + } + + fetchRouteAsync(points, transportationType, callback) { + this._queryGraphHopper(points, transportationType, + (result, exception) => { + if (result) { + let route = this._createRoute(result.paths[0]); + callback(route, exception); + } else { + callback(null, exception); + } + }); + } + + _buildURL(points, transportation) { + let locations = points.map(function(point) { + return [point.place.location.latitude, point.place.location.longitude].join(','); + }); + let vehicle = RouteQuery.Transportation.toString(transportation); + let query = new HTTP.Query({ type: 'json', + key: this._key, + vehicle: vehicle, + locale: this._locale, + point: locations, + debug: Utils.debugEnabled + }); + let url = this._baseURL + query.toString(); + Utils.debug("Sending route request to: " + url); + return url; + } + + _parseMessage({ status_code, response_body, uri }) { + if (status_code === 500) { + log("Internal server error.\n" + + "This is most likely a bug in GraphHopper"); + log("Please file a bug at " + + "https://github.com/graphhopper/graphhopper/issues\n" + + "with the the following Graphopper request URL included:\n"); + log(uri.to_string(false)); + } + if (status_code !== 200) + return null; + + let result = JSON.parse(response_body.data); + + if (!Array.isArray(result.paths)) { + Utils.debug("No route found"); + if (result.info && Array.isArray(result.info.errors)) { + result.info.errors.forEach(({ message, details }) => { + Utils.debug("Message: " + message); + Utils.debug("Details: " + details); + }); + } + return null; + } + + return result; + } + + _createRoute(route) { + let path = EPAF.decode(route.points); + let turnPoints = this._createTurnPoints(path, route.instructions); + let bbox = new BoundingBox.BoundingBox(); + + // GH does lonlat-order + bbox.extend(route.bbox[1], route.bbox[0]); + bbox.extend(route.bbox[3], route.bbox[2]); + + return { path: path, + turnPoints: turnPoints, + distance: route.distance, + time: route.time, + bbox: bbox }; + } + + _createTurnPoints(path, instructions) { + let via = 0; + let startPoint = new Route.TurnPoint({ + coordinate: path[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let rest = this._foldInstructions(instructions).map((instr) => { + let type = this._createTurnPointType(instr.sign); + let text = instr.text; + if (type === Route.TurnPointType.VIA) { + via++; + let viaPlace = this._query.filledPoints[via].place; + text = viaPlace.name || instr.text; + } + return new Route.TurnPoint({ + coordinate: path[instr.interval[0]], + type: type, + distance: instr.distance, + instruction: text, + time: instr.time, + turnAngle: instr.turn_angle + }); + }); + return [startPoint].concat(rest); + } + + _foldInstructions(instructions) { + let currInstruction = instructions[0]; + let res = []; + + for (let i = 1; i < instructions.length; i++) { + let newInstruction = instructions[i]; + let newSign = newInstruction.sign; + let newStreetname = newInstruction.street_name; + + /* if the direction is to continue straight, or keep left or keep + * right on the same street/road number, fold the instruction into + * the previous one + */ + if (newSign === Sign.CONTINUE_ON_STREET || + ((newSign === Sign.KEEP_LEFT || newSign === Sign.KEEP_RIGHT) && + newStreetname === currInstruction.street_name)) { + currInstruction.distance += newInstruction.distance; + } else { + res.push(currInstruction); + currInstruction = instructions[i]; + } + } + + // push finish instruction + res.push(instructions[instructions.length - 1]); + + return res; + } + + _createTurnPointType(sign) { + let type = sign + 3; + let min = Route.TurnPointType.SHARP_LEFT; + let max = Route.TurnPointType.ROUNDABOUT; + if (min <= type && type <= max) + return type; + else + return undefined; + } +}; diff --git a/src/graphHopperGeocode.js b/src/graphHopperGeocode.js new file mode 100644 index 00000000..e63877e4 --- /dev/null +++ b/src/graphHopperGeocode.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var GraphHopperGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().graphHopperGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().graphHopperGeocode.attributionUrl; + } + + get name() { + return 'GraphHopper Geocode'; + } + + get url() { + return 'https://docs.graphhopper.com/#tag/Geocoding-API'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let hits = json.hits; + + if (!hits || hits.length === 0) { + Utils.debug('No hits in response'); + return null; + } + + hits.forEach(hit => { + let place = this._parseHit(hit); + + if (place) + result.push(place); + }); + + return result; + } + + _parseHit(hit) { + let lat = hit.point.lat; + let lon = hit.point.lng; + + return PhotonParser.parsePlace(lat, lon, hit); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ point: latitude + ',' + longitude, + limit: string ? this._limit : 1, + locale: this._language, + key: this._apiKey + }); + if (string) + query.add('q', string); + else + query.add('reverse', 'true'); + + return Format.vprintf('%s/api/1/geocode?%s', [this._baseUrl, + query.toString()]); + } + + _readService() { + let graphHopperGeocode = Service.getService().graphHopperGeocode; + this._language = Utils.getLanguage(); + + if (graphHopperGeocode) { + this._baseUrl = graphHopperGeocode.baseUrl; + this._apiKey = graphHopperGeocode.apiKey; + } + } +} diff --git a/src/graphHopperTransit.js b/src/graphHopperTransit.js new file mode 100644 index 00000000..7fa927e9 --- /dev/null +++ b/src/graphHopperTransit.js @@ -0,0 +1,163 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utilities to use GraphHopper to perform walking routes for use in + * transit itineraries, for plugins not natively supporting turn-by-turn + * routing for walking legs + */ + +const Champlain = imports.gi.Champlain; + +const Application = imports.application; +const Location = imports.location; +const Place = imports.place; +const RouteQuery = imports.routeQuery; +const TransitPlan = imports.transitPlan; + +/* Creates a new walking leg given start and end places, and a route + * obtained from GraphHopper. If the route is undefined (which happens if + * GraphHopper failed to obtain a walking route, approximate it with a + * straight line. */ +function createWalkingLeg(from, to, fromName, toName, route) { + let fromLocation = from.place.location; + let toLocation = to.place.location; + let fromCoordinate = [fromLocation.latitude, fromLocation.longitude]; + let toCoordinate = [toLocation.latitude, toLocation.longitude]; + let polyline = route ? route.path : + createStraightPolyline(fromLocation, toLocation); + let distance = route ? route.distance : + fromLocation.get_distance_from(toLocation) * 1000; + /* as an estimate for approximated straight-line walking legs, + * assume a speed of 1 m/s to allow some extra time */ + let duration = route ? route.time / 1000 : distance; + let walkingInstructions = route ? route.turnPoints : null; + + return new TransitPlan.Leg({ fromCoordinate: fromCoordinate, + toCoordinate: toCoordinate, + from: fromName, + to: toName, + isTransit: false, + polyline: polyline, + duration: duration, + distance: distance, + walkingInstructions: walkingInstructions }); +} + +// create a straight-line "as the crow flies" polyline between two places +function createStraightPolyline(fromLoc, toLoc) { + return [new Champlain.Coordinate({ latitude: fromLoc.latitude, + longitude: fromLoc.longitude }), + new Champlain.Coordinate({ latitude: toLoc.latitude, + longitude: toLoc.longitude })]; +} + +var _walkingRoutes = []; + +/* fetches walking route and stores the route for the given coordinate + * pair to avoid requesting the same route over and over from GraphHopper + */ +function fetchWalkingRoute(points, callback) { + let index = points[0].place.location.latitude + ',' + + points[0].place.location.longitude + ';' + + points[1].place.location.latitude + ',' + + points[1].place.location.longitude; + let route = _walkingRoutes[index]; + + if (!route) { + Application.routingDelegator.graphHopper.fetchRouteAsync(points, + RouteQuery.Transportation.PEDESTRIAN, + (newRoute) => { + _walkingRoutes[index] = newRoute; + callback(newRoute); + }); + } else { + callback(route); + } +} + +// create a query point from a bare coordinate (lat, lon pair) +function createQueryPointForCoord(coord) { + let location = new Location.Location({ latitude: coord[0], + longitude: coord[1], + accuracy: 0 }); + let place = new Place.Place({ location: location }); + let point = new RouteQuery.QueryPoint(); + + point.place = place; + return point; +} + +/** + * Refine itineraries with walking legs retrieved from GraphHopper. + * Intended for use by transit plugins where the source API doesn't give + * full walking turn-by-turn routing + */ +function addWalkingToItineraries(itineraries, callback) { + _addWalkingToItinerariesRecursive(itineraries, 0, callback); +} + +function _addWalkingToItinerariesRecursive(itineraries, index, callback) { + if (index === itineraries.length) { + callback(); + } else { + let itinerary = itineraries[index]; + + _addWalkingToLegsRecursive(itinerary.legs, 0, () => { + _addWalkingToItinerariesRecursive(itineraries, index + 1, callback); + }); + } +} + +function _addWalkingToLegsRecursive(legs, index, callback) { + if (index === legs.length) { + callback(); + } else { + let leg = legs[index]; + + if (!leg.transit) { + let from = createQueryPointForCoord(leg.fromCoordinate); + let to = createQueryPointForCoord(leg.toCoordinate); + + fetchWalkingRoute([from, to], (route) => { + if (route) { + let duration = route.time / 1000; + + /* for walking legs not in the start or end + * only replace with the retrieved one if it's not + * longer in duration that the previous (straight-line) + * one. + */ + if (index === 0 || index === legs.length - 1 || + duration <= leg.duration) { + leg.distance = route.distance; + leg.walkingInstructions = route.turnPoints; + leg.polyline = route.path; + } + } + + _addWalkingToLegsRecursive(legs, index + 1, callback); + }); + } else { + _addWalkingToLegsRecursive(legs, index + 1, callback); + } + } +} diff --git a/src/headerBar.js b/src/headerBar.js new file mode 100644 index 00000000..fed6569c --- /dev/null +++ b/src/headerBar.js @@ -0,0 +1,95 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const FavoritesPopover = imports.favoritesPopover; +const LayersPopover = imports.layersPopover; +const MapView = imports.mapView; + +var HeaderBarLeft = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-left.ui', + InternalChildren: [ 'layersButton' ] +}, class HeaderBarLeft extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._layersPopover = new LayersPopover.LayersPopover({ + mapView: this._mapView + }); + this._layersButton.popover = this._layersPopover; + + this._application.connect('notify::connected', () => { + let app = this._application; + this._layersButton.sensitive = app.connected; + }); + } + + popdownLayersPopover() { + this._layersPopover.popdown(); + } +}); + +var HeaderBarRight = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/headerbar-right.ui', + InternalChildren: [ 'toggleSidebarButton', + 'favoritesButton', + 'printRouteButton' ] +}, class HeaderBarRight extends Gtk.Box { + _init(params) { + this._application = params.application; + delete params.application; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._favoritesButton.popover = new FavoritesPopover.FavoritesPopover({ + mapView: this._mapView + }); + let favoritesPopover = this._favoritesButton.popover; + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + favoritesPopover.connect('notify::rows', () => { + this._favoritesButton.sensitive = favoritesPopover.rows > 0; + }); + + this._mapView.bind_property('routeShowing', this._printRouteButton, + 'visible', GObject.BindingFlags.DEFAULT); + + this._application.connect('notify::connected', () => { + let app = this._application; + + this._toggleSidebarButton.sensitive = app.connected; + this._favoritesButton.sensitive = (app.connected && + favoritesPopover.rows > 0); + this._printRouteButton.sensitive = app.connected; + }); + } +}); diff --git a/src/http.js b/src/http.js new file mode 100644 index 00000000..8d853fee --- /dev/null +++ b/src/http.js @@ -0,0 +1,76 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const Soup = imports.gi.Soup; + +function encode(data) { + if(data === null) + return null; + + return Soup.URI.encode(data.toString(), '&'); +} + +var Query = class Query { + + constructor(obj) { + this._query = {}; + for(let key in obj) { + this.add(key, obj[key]); + } + } + + // a value === null represents an empty value + add(key, value) { + // Initialize query field if it isn't already + let queryValue = this._query[key]; + if(!Array.isArray(queryValue)) + this._query[key] = []; + + if(Array.isArray(value)) + this._query[key] = this._query[key].concat(value); + else + this._query[key].push(value); + } + + /** + * Get the query parameters in string form. + * If useArrayNotation is given, and true, use array notation adding [] + * after key if there's multiple values for that key. + */ + toString(useArrayNotation = false) { + let vars = []; + for(let key in this._query) { + let values = this._query[key]; + let multipleValues = values.length > 1; + let encKey = encode(key) + (multipleValues && useArrayNotation ? + '[]' : ''); + + values.forEach(function(value) { + let encValue = encode(value); + if(encValue !== null) + vars.push([encKey, encValue].join('=')); + else + vars.push(encKey); + }); + } + return vars.join('&'); + } +}; diff --git a/src/hvt.js b/src/hvt.js new file mode 100644 index 00000000..810b1ad4 --- /dev/null +++ b/src/hvt.js @@ -0,0 +1,249 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/* + * Extended route types using HVT (Hierarchical Vehicle Type) codes from + * the European TPEG standard. + * https://support.google.com/transitpartners/answer/3520902 + */ + +/* when adding an additional constant here, make sure to edit the LAST_ + * constant for the corresponding block + */ + +// rail services +var RAILWAY_SERVICE = 100; +var HIGH_SPEED_RAIL_SERVICE = 101; +var LONG_DISTANCE_TRAINS = 102; +var INTER_REGIONAL_RAIL_SERVICE = 103; +var CAR_TRANSPORT_RAIL_SERVICE = 104; +var SLEEPER_RAIL_SERVICE = 105; +var REGIONAL_RAIL_SERVICE = 106; +var TOURIST_RAILWAY_SERVICE = 107; +var RAIL_SHUTTLE = 108; +var SUBURBAN_RAILWAY = 109; +var REPLACEMENT_RAIL_SERVICE = 110; +var SPECIAL_RAIL_SERVICE = 111; +var LORRY_TRANSPORT_RAIL_SERVICE = 112; +var ALL_RAIL_SERVICES = 113; +var CROSS_COUNTRY_RAIL_SERVICE = 114; +var VEHICLE_TRANSPORT_RAIL_SERVICE = 115; +var RACK_AND_PINION_RAILWAY = 116; +var ADDITIONAL_RAIL_SERVICE = 117; +var LAST_RAIL_SERVICE = ADDITIONAL_RAIL_SERVICE; + +// coach services +var COACH_SERVICE = 200; +var INTERNATIONAL_COACH_SERVICE = 201; +var NATIONAL_COACH_SERVICE = 202; +var SHUTTLE_COACH_SERVICE = 203; +var REGIONAL_COACH_SERVICE = 204; +var SPECIAL_COACH_SERVICE = 205; +var SIGHTSEEING_COACH_SERVICE = 206; +var TOURIST_COACH_SERVICE = 207; +var COMMUTER_COACH_SERVICE = 208; +var ALL_COACH_SERVICES = 209; +var LAST_COACH_SERVICE = ALL_COACH_SERVICES; + +/// suburban railway services +var SUBURBAN_RAILWAY_SERVICE = 300; + +// urban railway services +var URBAN_RAILWAY_SERVICE = 400; +var URBAN_METRO_SERVICE = 401; +var URBAN_UNDERGROUND_SERVICE = 402; +// this constant has the same name as 400 in the specification +var URBAN_RAILWAY_SERVICE_2 = 403; +var ALL_URBAN_RAILWAY_SERVICES = 404; +var MONORAIL = 405; +var LAST_URBAN_RAILWAY_SERVICE = MONORAIL; + +// metro services +var METRO_SERVICE = 500; + +// underground services +var UNDERGROUND_SERVICE = 600; + +// bus services +var BUS_SERVICE = 700; +var REGIONAL_BUS_SERVICE = 701; +var EXPRESS_BUS_SERVICE = 702; +var STOPPING_BUS_SERVICE = 703; +var LOCAL_BUS_SERVICE = 704; +var NIGHT_BUS_SERVICE = 705; +var POST_BUS_SERVICE = 706; +var SPECIAL_NEEDS_BUS_SERVICE = 707; +var MOBILITY_BUS_SERVICE = 708; +var MOBILITY_BUS_SERVICE_FOR_REGISTERED_DISABLED = 709; +var SIGHTSEEING_BUS = 710; +var SHUTTLE_BUS = 711; +var SCHOOL_BUS = 712; +var SCHOOL_AND_PUBLIC_SERVICE_BUS_SERVICE = 713; +var RAIL_REPLACEMENT_BUS_SERVICE = 714; +var DEMAND_AND_RESPONSE_BUS_SERVICE = 715; +var ALL_BUS_SERVICES = 716; +var LAST_BUS_SERVICE = ALL_BUS_SERVICES; + +// trolleybus services +var TROLLEYBUS_SERVICE = 800; + +// tram services +var TRAM_SERVICE = 900; +var CITY_TRAM_SERVICE = 901; +var LOCAL_TRAM_SERVICE = 902; +var REGIONAL_TRAM_SERVICE = 903; +var SIGHTSEEING_TRAM_SERVICE = 904; +var SHUTTLE_TRAM_SERVICE = 905; +var ALL_TRAM_SERVICES = 906; +var LAST_TRAM_SERVICE = ALL_TRAM_SERVICES; + +// water transport services +var WATER_TRANSPORT_SERVICE = 1000; +var INTERNATIONAL_CAR_FERRY_SERVICE = 1001; +var NATIONAL_CAR_FERRY_SERVICE = 1002; +var REGIONAL_CAR_FERRY_SERVICE = 1003; +var LOCAL_CAR_FERRY_SERVICE = 1004; +var INTERNATIONAL_PASSENGER_FERRY_SERVICE = 1005; +var NATIONAL_PASSENGER_FERRY_SERVICE = 1006; +var REGIONAL_PASSENGER_FERRY_SERVICE = 1007; +var LOCAL_PASSENGER_FERRY_SERVICE = 1008; +var POST_BOAT_SERVICE = 1009; +var TRAIN_FERRY_SERVICE = 1010; +var ROAD_LINK_FERRY_SERVICE = 1011; +var AIRPORT_LINK_FERRY_SERVICE = 1012; +var CAR_HIGH_SPEED_FERRY_SERVICE = 1013; +var PASSENGER_HIGH_SPEED_FERRY_SERVICE = 1014; +var SIGHTSEEING_BOAT_SERVICE = 1015; +var SCHOOL_BOAT = 1016; +var CABLE_DRAWN_BOAT_SERVICE = 1017; +var RIVER_BUS_SERVICE = 1018; +var SCHEDULED_FERRY_SERVICE = 1019; +var SHUTTLE_FERRY_SERVICE = 1020; +var ALL_WATER_TRANSPORT_SERVICE = 1021; +var LAST_WATER_TRANSPORT_SERVICE = ALL_WATER_TRANSPORT_SERVICE; + +// air service +var AIR_SERVICE = 1100; +var INTERNATIONAL_AIR_SERVICE = 1101; +var DOMESTIC_AIR_SERVICE = 1102; +var INTERCONTINENTAL_AIR_SERVICE = 1103; +var DOMESTIC_SCHEDULED_AIR_SERVICE = 1104; +var SHUTTLE_AIR_SERVICE = 1105; +var INTERCONTINENTAL_CHARTER_AIR_SERVICE = 1106; +var INTERNATIONAL_CHARTER_AIR_SERVICE = 1107; +var ROUND_TRIP_CHARTER_AIR_SERVICE = 1108; +var SIGHTSEEING_AIR_SERVICE = 1109; +var HELICOPTER_AIR_SERVICE = 1110; +var DOMESTIC_CHARTER_AIR_SERVICE = 1111; +var SCHENGEN_AREA_AIR_SERVICE = 1112; +var AIRSHIP_SERVICE = 1113; +var ALL_AIR_SERVICES = 1114; +var LAST_AIR_SERVICE = ALL_AIR_SERVICES; + +// ferry services +var FERRY_SERVICE = 1200; + +// telecabin services +var TELECABIN_SERVICE = 1300; +var TELECABIN_SERVICES = 1301; +// renamed this to not be confused with the tram-like street level cable cars +var TELECABIN_CABLE_CAR_SERVICE = 1302; +var ELEVATOR_SERVICE = 1303; +var CHAIR_LIFT_SERVICE = 1304; +var DRAG_LIFT_SERVICE = 1305; +var SMALL_TELECABIN_SERVICE = 1306; +var ALL_TELECABIN_SERVICES = 1307; +var LAST_TELECABIN_SERVICE = ALL_TELECABIN_SERVICES; + +// funicular services +var FUNICULAR_SERVICE = 1400; +var FUNICULAR_SERVICE_2 = 1401; +var ALL_FUNICULAR_SERVICES = 1402; +var LAST_FUNICULAR_SERVICE = ALL_FUNICULAR_SERVICES; + +// taxi services +var TAXI_SERVICE = 1500; +var COMMUNAL_TAXI_SERVICE = 1501; +var WATER_TAXI_SERVICE = 1502; +var RAIL_TAXI_SERVICE = 1503; +var BIKE_TAXI_SERVICE = 1504; +var LICENSED_TAXI_SERVICE = 1505; +var PRIVATE_HIRE_SERVICE_VEHICLE = 1506; +var ALL_TAXI_SERVICES = 1507; +var LAST_TAXI_SERVICE = ALL_TAXI_SERVICES; + +// self drive +var SELF_DRIVE = 1600; +var HIRE_CAR = 1601; +var HIRE_VAN = 1602; +var HIRE_MOTORBIKE = 1603; +var HIRE_CYCLE = 1604; +var LAST_SELF_DRIVE = HIRE_CYCLE; + +// misc. service +var MISCELLANEOUS_SERVICE = 1700; +var CABLE_CAR = 1701; +var HORSE_DRAWN_CARRIAGE = 1702; +var LAST_MISCELLANEOUS_SERVCE = HORSE_DRAWN_CARRIAGE; + +/** + * returns the super type of a given HVT type code, or -1 if the supplied code + * is not among the defined codes + */ +function supertypeOf(type) { + if (type >= RAILWAY_SERVICE && type <= LAST_RAIL_SERVICE) + return RAILWAY_SERVICE; + else if (type >= COACH_SERVICE && type <= LAST_COACH_SERVICE) + return COACH_SERVICE; + else if (type == SUBURBAN_RAILWAY_SERVICE) + return SUBURBAN_RAILWAY_SERVICE; + else if (type >= URBAN_RAILWAY_SERVICE && type <= LAST_URBAN_RAILWAY_SERVICE) + return URBAN_RAILWAY_SERVICE; + else if (type == METRO_SERVICE) + return METRO_SERVICE; + else if (type == UNDERGROUND_SERVICE) + return UNDERGROUND_SERVICE; + else if (type >= BUS_SERVICE && type <= LAST_BUS_SERVICE) + return BUS_SERVICE; + else if (type == TROLLEYBUS_SERVICE) + return TROLLEYBUS_SERVICE; + else if (type >= TRAM_SERVICE && type <= LAST_TRAM_SERVICE) + return TRAM_SERVICE; + else if (type >= WATER_TRANSPORT_SERVICE && + type <= LAST_WATER_TRANSPORT_SERVICE) + return WATER_TRANSPORT_SERVICE; + else if (type >= AIR_SERVICE && type <= LAST_AIR_SERVICE) + return AIR_SERVICE; + else if (type == FERRY_SERVICE) + return FERRY_SERVICE; + else if (type >= TELECABIN_SERVICE && type <= LAST_TELECABIN_SERVICE) + return TELECABIN_SERVICE; + else if (type >= FUNICULAR_SERVICE && type <= LAST_FUNICULAR_SERVICE) + return FUNICULAR_SERVICE; + else if (type >= TAXI_SERVICE && type <= LAST_TAXI_SERVICE) + return TAXI_SERVICE; + else if (type >= SELF_DRIVE && type <= LAST_SELF_DRIVE) + return SELF_DRIVE; + else if (type >= MISCELLANEOUS_SERVICE && type <= LAST_MISCELLANEOUS_SERVCE) + return MISCELLANEOUS_SERVICE; + else + return -1; +} diff --git a/src/instructionRow.js b/src/instructionRow.js new file mode 100644 index 00000000..f8f4cdc9 --- /dev/null +++ b/src/instructionRow.js @@ -0,0 +1,68 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Utils = imports.utils; + +var InstructionRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/instruction-row.ui', + InternalChildren: [ 'directionImage', + 'instructionLabel', + 'distanceLabel' ] +}, class InstructionRow extends Gtk.ListBoxRow { + + _init(params) { + this.turnPoint = params.turnPoint; + delete params.turnPoint; + + this._hasColor = params.hasColor; + delete params.hasColor; + + let lines = params.lines; + delete params.lines; + + super._init(params); + + if (lines) + this._instructionLabel.lines = lines; + + this._instructionLabel.label = this.turnPoint.instruction; + + /* + * The SVG icons for turn point stops has the color red, but has + * the suffix '-symbolic'. So when loading through GtkImage it will have + * the proper GtkIconLookupflags to re-color the icon as symbolic. + * When we load the PixBuf from the SVG ourself, we get the color. + */ + if (this._hasColor) { + let theme = Gtk.IconTheme.get_default(); + let iconName = this.turnPoint.iconName; + this._directionImage.pixbuf = theme.load_icon(iconName, 0, 0); + } else { + this._directionImage.icon_name = this.turnPoint.iconName; + } + + if (this.turnPoint.distance > 0) + this._distanceLabel.label = Utils.prettyDistance(this.turnPoint.distance); + } +}); diff --git a/src/kmlShapeLayer.js b/src/kmlShapeLayer.js new file mode 100644 index 00000000..c7ef0a1f --- /dev/null +++ b/src/kmlShapeLayer.js @@ -0,0 +1,51 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const GObject = imports.gi.GObject; + +const GeoJSONSource = imports.geoJSONSource; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; +const Togeojson = imports.togeojson.togeojson; +const Domparser = imports.xmldom.domparser; + +var KmlShapeLayer = GObject.registerClass( +class KmlShapeLayer extends ShapeLayer.ShapeLayer { + _init(params) { + super._init(params); + + this._mapSource = new GeoJSONSource.GeoJSONSource({ + mapView: this._mapView, + markerLayer: this._markerLayer + }); + } + + _parseContent() { + let s = Utils.getBufferText(this._fileContents); + let parser = new Domparser.DOMParser(); + let json = Togeojson.toGeoJSON.kml(parser.parseFromString(s)); + this._mapSource.parse(json); + } +}); + +KmlShapeLayer.mimeTypes = ['application/vnd.google-earth.kml+xml']; +KmlShapeLayer.displayName = 'KML'; +KmlShapeLayer.createInstance = function(params) { + return new KmlShapeLayer(params); +}; diff --git a/src/layersPopover.js b/src/layersPopover.js new file mode 100644 index 00000000..70f25657 --- /dev/null +++ b/src/layersPopover.js @@ -0,0 +1,266 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Gdk = imports.gi.Gdk; + +const Application = imports.application; +const MapSource = imports.mapSource; +const MapView = imports.mapView; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Utils = imports.utils; + +const PREVIEW_WIDTH = 230; +const PREVIEW_HEIGHT = 80; + +var ShapeLayerRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-row.ui', + Children: ['closeButton'], + InternalChildren: ['layerLabel', 'visibleButton'] +}, class ShapeLayerRow extends Gtk.ListBoxRow { + + _init(params) { + this.shapeLayer = params.shapeLayer; + delete params.shapeLayer; + + super._init(params); + + this._layerLabel.label = this.shapeLayer.getName(); + this._layerLabel.tooltip_text = this.shapeLayer.file.get_parse_name(); + this._visibleButton.connect('clicked', () => { + let image = this._visibleButton.get_child(); + + this.shapeLayer.visible = !this.shapeLayer.visible; + this.activatable = this.shapeLayer.visible; + if (this.shapeLayer.visible) + image.icon_name = 'layer-visible-symbolic'; + else + image.icon_name = 'layer-not-visible-symbolic'; + }); + } +}); + +var LayersPopover = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/layers-popover.ui', + InternalChildren: [ 'streetLayerButton', + 'aerialLayerButton', + 'streetLayerImage', + 'aerialLayerImage', + 'hybridAerialRevealer', + 'layersListBox', + 'loadLayerButton' ] +}, class LayersPopover extends Gtk.Popover { + + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init({ width_request: 200, + no_show_all: true, + transitions_enabled: false, + visible: false }); + + this._aerialLayerButton.join_group(this._streetLayerButton); + + this.get_style_context().add_class('maps-popover'); + + this._layersListBox.bind_model(this._mapView.shapeLayerStore, + this._listBoxCreateWidget.bind(this)); + this._layersListBox.connect('row-activated', (lb, row) => { + this._mapView.gotoBBox(row.shapeLayer.bbox); + }); + + this._layersListBox.set_header_func((row, before) => { + let header = before ? new Gtk.Separator() : null; + row.set_header(header); + }); + + this._layerPreviews = { + street: { + source: MapSource.createStreetSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + } + }; + + if (Service.getService().tiles.streetDark) { + this._layerPreviews.streetDark = { + source: MapSource.createStreetDarkSource(), + widget: this._streetLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.aerial) { + this._layerPreviews.aerial = { + source: MapSource.createAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + if (Service.getService().tiles.hybridAerial) { + this._layerPreviews.hybridAerial = { + source: MapSource.createHybridAerialSource(), + widget: this._aerialLayerImage, + lastLocation: { x: -1, y: -1, z: -1 } + }; + } + + // disable the map type switch buttons if aerial is unavailable + if (Service.getService().tiles.aerial) { + this._streetLayerButton.connect('clicked', () => { + if (this._streetLayerButton.active) { + this._mapView.setMapType(MapView.MapType.STREET); + } + }); + + this._aerialLayerButton.connect('clicked', () => { + if (this._aerialLayerButton.active) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + }); + + this._mapView.view.connect("notify::zoom-level", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::latitude", + this._setLayerPreviews.bind(this)); + this._mapView.view.connect("notify::longitude", + this._setLayerPreviews.bind(this)); + Application.settings.connect("changed::night-mode", + this._onNightModeChanged.bind(this)); + Application.settings.connect("changed::hybrid-aerial", + this._onHybridAerialChanged.bind(this)); + + } else { + this._streetLayerButton.visible = false; + this._aerialLayerButton.visible = false; + } + + this.setMapType(this._mapView.getMapType()); + this._mapView.connect("map-type-changed", (_mapView, type) => { + this.setMapType(type); + }); + } + + _onNightModeChanged() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark', true); + } else { + this._setLayerPreviewImage('street', true); + } + } + + _onHybridAerialChanged() { + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial', true); + } else { + this._setLayerPreviewImage('aerial', true); + } + } + + _setLayerPreviews() { + if (Service.getService().tiles.streetDark && + Application.settings.get('night-mode')) { + this._setLayerPreviewImage('streetDark'); + } else { + this._setLayerPreviewImage('street'); + } + if (Service.getService().tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this._setLayerPreviewImage('hybridAerial'); + } else { + this._setLayerPreviewImage('aerial'); + } + } + + _setLayerPreviewImage(layer, forceUpdate = false) { + let previewInfo = this._layerPreviews[layer]; + let source = previewInfo.source; + let widget = previewInfo.widget; + + let z = this._mapView.view.zoom_level - 1; + if (z < 0) + z = 0; + let size = source.get_tile_size(); + let x = Math.floor(source.get_x(z, this._mapView.view.longitude) / size); + let y = Math.floor(source.get_y(z, this._mapView.view.latitude) / size); + + // If the view hasn't moved enough that the tile is different, + // then don't bother changing anything + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z && !forceUpdate) { + + return; + } + previewInfo.lastLocation = {x, y, z}; + + let tile = Champlain.Tile.new_full(x, y, size, z); + + tile.connect("render-complete", (a, b, c, error) => { + if (error) + return; // oh well + + // Make sure we're still at the same location + // This is especially important on slow connections + if (previewInfo.lastLocation.x == x && + previewInfo.lastLocation.y == y && + previewInfo.lastLocation.z == z) { + + let pixbuf = Gdk.pixbuf_get_from_surface(tile.surface, + (size - PREVIEW_WIDTH) / 2, + (size - PREVIEW_HEIGHT) / 2, + PREVIEW_WIDTH, + PREVIEW_HEIGHT); + widget.set_from_pixbuf(pixbuf); + } + }); + + source.fill_tile(tile); + } + + setMapType(mapType) { + if (mapType === MapView.MapType.STREET) { + this._streetLayerButton.active = true; + this._hybridAerialRevealer.reveal_child = false; + } else if (mapType === MapView.MapType.AERIAL) { + this._aerialLayerButton.active = true; + if (Service.getService().tiles.hybridAerial) + this._hybridAerialRevealer.reveal_child = true; + } + } + + _onRemoveClicked(row) { + this._mapView.removeShapeLayer(row.shapeLayer); + if (this._layersListBox.get_children().length <= 0) + this._layersListBox.hide(); + } + + _listBoxCreateWidget(shapeLayer) { + let row = new ShapeLayerRow({ shapeLayer: shapeLayer }); + row.closeButton.connect('clicked', + () => this._onRemoveClicked(row)); + this._layersListBox.show(); + return row; + } +}); diff --git a/src/location.js b/src/location.js new file mode 100644 index 00000000..88427abc --- /dev/null +++ b/src/location.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Red Hat Inc. + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Authors: Zeeshan Ali (Khattak) + * Jonas Danielsson + */ + +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +/* Adds heading to Geocode.Location */ +var Location = GObject.registerClass( +class Location extends Geocode.Location { + + _init(params) { + this._heading = params.heading; + delete params.heading; + + super._init(params); + } + + get heading() { + return this._heading; + } + + set heading(v) { + this._heading = v; + } +}); diff --git a/src/locationServiceDialog.js b/src/locationServiceDialog.js new file mode 100644 index 00000000..4e459556 --- /dev/null +++ b/src/locationServiceDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2018 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Utils = imports.utils; + +const _PRIVACY_PANEL = 'gnome-privacy-panel.desktop'; + +var LocationServiceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/location-service-dialog.ui', + InternalChildren: [ 'cancelButton', + 'settingsButton'], +}, class LocationServiceDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + this._settingsButton.connect('clicked', () => this._onSettings()); + this._cancelButton.connect('clicked', () => this._onCancel()); + } + + _onSettings() { + let privacyInfo = Gio.DesktopAppInfo.new(_PRIVACY_PANEL); + + try { + let display = Gdk.Display.get_default(); + + privacyInfo.launch([], display.get_app_launch_context()); + } catch(e) { + Utils.debug('launching privacy panel failed: ' + e); + } + + this.response(Gtk.ResponseType.OK); + } + + _onCancel() { + this.response(Gtk.ResponseType.CANCEL); + } +}); \ No newline at end of file diff --git a/src/longPrintLayout.js b/src/longPrintLayout.js new file mode 100644 index 00000000..3882f4e9 --- /dev/null +++ b/src/longPrintLayout.js @@ -0,0 +1,140 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; +const Route = imports.route; + +const _NUM_MINIMAPS = 5; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 0.57, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; +const _MiniMapView = { + SCALE_X: 0.4, + SCALE_Y: 0.20, + SCALE_MARGIN: 0.03, + ZOOM_LEVEL: 18 +}; + +var LongPrintLayout = GObject.registerClass( +class LongPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + 3 maps) + instructions */ + let totalSurfaces = 4 + this._route.turnPoints.length; + + /* Plus via points */ + this._route.turnPoints.forEach((turnPoint) => { + if (turnPoint.type === Route.TurnPointType.VIA) + totalSurfaces++; + }); + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let miniMapViewWidth = _MiniMapView.SCALE_X * this._pageWidth; + let miniMapViewHeight = _MiniMapView.SCALE_Y * this._pageHeight; + let miniMapViewMargin = _MiniMapView.SCALE_MARGIN * this._pageHeight; + let miniMapViewZoomLevel = _MiniMapView.ZOOM_LEVEL; + + let dy = 0; + let pointsLength = this._route.turnPoints.length; + + /* Fixed number of locations are plotted on minimaps which requires a + * check on instructions bound. Later on this can be made dynamic + * depending upon factors like total number of instructions, complexity + * of neighbourhood areas, etc. + * + * We currently have maps besides the instructions for: + * - the start location + * - via points in the route + * - the end location + * + * We include _NUM_MINIMAPS instructions per map, and have the map + * ensure the bounding box of those instructions. + * + * For the start location we include _NUM_MINIMAPS number of + * instruction, if available, from start. + * + * For via points we include _NUM_MINIMAPS / 2 number of instructions + * before and _NUM_MINIMAPS / 2 number of instructions after the + * via point. + * + * For the end location we include _NUM_MINIMAPS number of instructions + * leading up to the end location. + * + */ + let first = 0; + let last = Math.min(_NUM_MINIMAPS, pointsLength); + let points = this._createTurnPointArray(first, last); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + + /* x-cursor is increased temporarily for rendering instructions */ + let tmpX = this._cursorX; + for (let i = 0; i < this._route.turnPoints.length; i++) { + let turnPoint = this._route.turnPoints[i]; + + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._cursorX = tmpX + miniMapViewWidth + miniMapViewMargin; + this._drawInstruction(instructionWidth, instructionHeight, + turnPoint); + this._cursorY += dy; + + if (turnPoint.type === Route.TurnPointType.VIA) { + let tmpY = this._cursorY; + + first = Math.max(0, (i + 1) - (_NUM_MINIMAPS / 2)); + last = Math.min((i + 1) + (_NUM_MINIMAPS / 2), pointsLength); + points = this._createTurnPointArray(Math.floor(first), + Math.floor(last)); + this._cursorX = tmpX; + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + this._cursorY = tmpY; + } + } + this._cursorX = tmpX; + + first = Math.max(0, pointsLength - _NUM_MINIMAPS); + last = pointsLength; + points = this._createTurnPointArray(first, last); + this._cursorY = Math.max(0, this._cursorY - miniMapViewHeight); + this._drawMapView(miniMapViewWidth, miniMapViewHeight, + miniMapViewZoomLevel, points); + } +}); diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..4bdb55c4 --- /dev/null +++ b/src/main.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +pkg.initGettext(); +pkg.initFormat(); +pkg.require({ 'cairo': '1.0', + 'Champlain': '0.12', + 'Clutter': '1.0', + 'Cogl': '1.0', + 'GeocodeGlib': '1.0', + 'Gdk': '3.0', + 'GdkPixbuf': '2.0', + 'Gio': '2.0', + 'GLib': '2.0', + 'Goa': '1.0', + 'GObject': '2.0', + 'Gtk': '3.0', + 'GtkChamplain': '0.12', + 'GtkClutter': '1.0', + 'Handy': '1', + 'Rest': '0.7', + 'Soup': '2.4', + 'WebKit2': '4.0' }); + +const Application = imports.application; + +function main(args) { + /* Add prototype to get last element of an array. + * TODO: if we get more of these, might move initing + * to a decicated Prototypes modules. + */ + if (!Array.prototype.last) { + Array.prototype.last = function() { + return this[this.length - 1]; + } + } + + let application = new Application.Application(); + return application.run(args); +} diff --git a/src/mainWindow.js b/src/mainWindow.js new file mode 100644 index 00000000..9abceb46 --- /dev/null +++ b/src/mainWindow.js @@ -0,0 +1,690 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContextMenu = imports.contextMenu; +const ExportViewDialog = imports.exportViewDialog; +const FavoritesPopover = imports.favoritesPopover; +const Geoclue = imports.geoclue; +const GeocodeFactory = imports.geocode; +const HeaderBar = imports.headerBar; +const LocationServiceDialog = imports.locationServiceDialog; +const MapView = imports.mapView; +const PlaceBar = imports.placeBar; +const PlaceEntry = imports.placeEntry; +const PlaceStore = imports.placeStore; +const PrintOperation = imports.printOperation; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const Sidebar = imports.sidebar; +const Utils = imports.utils; + +const _CONFIGURE_ID_TIMEOUT = 100; // msecs +const _ADAPTIVE_VIEW_WIDTH = 700; +const _PLACE_ENTRY_MARGIN = 35; + +var ShapeLayerFileChooser = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/shape-layer-file-chooser.ui' +}, class ShapeLayerFileChooser extends Gtk.FileChooserNative { + + _init(params) { + super._init(params); + let allFilter = new Gtk.FileFilter(); + allFilter.set_name(_("All Layer Files")); + this.add_filter(allFilter); + this.set_filter(allFilter); + this.title = _("Open Shape Layer"); + + ShapeLayer.SUPPORTED_TYPES.forEach((layerClass) => { + let filter = new Gtk.FileFilter(); + [filter, allFilter].forEach((f) => { + layerClass.mimeTypes.forEach((type) => { + f.add_mime_type(type); + }); + }); + filter.set_name(layerClass.displayName); + this.add_filter(filter); + }); + } +}); + +var MainWindow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/main-window.ui', + InternalChildren: [ 'headerBar', + 'grid', + 'mainStack', + 'mainGrid', + 'noNetworkView', + 'actionBar', + 'actionBarRevealer', + 'placeBarContainer' ] +}, class MainWindow extends Gtk.ApplicationWindow { + + get mapView() { + return this._mapView; + } + + _init(params) { + super._init(params); + + this._configureId = 0; + + this._mapView = new MapView.MapView({ + mapType: this.application.local_tile_path ? + MapView.MapType.LOCAL : undefined, + mainWindow: this }); + + this._mainGrid.attach(this._mapView, 0, 0, 1, 1); + + this._mapView.gotoUserLocation(false); + + this._sidebar = this._createSidebar(); + + this._contextMenu = new ContextMenu.ContextMenu({ mapView: this._mapView, + mainWindow: this }); + + this._initActions(); + this._initHeaderbar(); + this._initSignals(); + this._restoreWindowGeometry(); + this._initDND(); + this._initPlaceBar(); + + this._grid.attach(this._sidebar, 1, 0, 1, 2); + + this._grid.show_all(); + + /* for some reason, setting the title of the window through the .ui + * template does not work anymore (maybe has something to do with + * setting a custom title on the headerbar). Setting it programmatically + * here works though. And yields a proper label in the gnome-shell + * overview. + */ + this.title = _("Maps"); + } + + _createPlaceEntry() { + let placeEntry = new PlaceEntry.PlaceEntry({ mapView: this._mapView, + visible: true, + margin_start: _PLACE_ENTRY_MARGIN, + margin_end: _PLACE_ENTRY_MARGIN, + max_width_chars: 50, + loupe: true, + matchRoute: true + }); + placeEntry.connect('notify::place', () => { + if (placeEntry.place) { + this._mapView.showPlace(placeEntry.place, true); + } + }); + + let popover = placeEntry.popover; + popover.connect('selected', () => this._mapView.grab_focus()); + this._mapView.view.connect('button-press-event', () => popover.hide()); + return placeEntry; + } + + _createSidebar() { + let sidebar = new Sidebar.Sidebar(this._mapView); + + Application.routeQuery.connect('notify', () => this._setRevealSidebar(true)); + this.application.bind_property('connected', + sidebar, 'visible', + GObject.BindingFlags.DEFAULT); + return sidebar; + } + + _initPlaceBar() { + this._placeBar = new PlaceBar.PlaceBar({ mapView: this._mapView, + visible: true }); + this._placeBarContainer.add(this._placeBar); + + this.application.bind_property('selected-place', + this._placeBar, 'place', + GObject.BindingFlags.DEFAULT); + } + + _initDND() { + this.drag_dest_set(Gtk.DestDefaults.DROP, null, 0); + this.drag_dest_add_uri_targets(); + + this.connect('drag-motion', (widget, ctx, x, y, time) => { + Gdk.drag_status(ctx, Gdk.DragAction.COPY, time); + return true; + }); + + this.connect('drag-data-received', (widget, ctx, x, y, data, info, time) => { + let files = data.get_uris().map(Gio.file_new_for_uri); + if (this._mapView.openShapeLayers(files)) + Gtk.drag_finish(ctx, true, false, time); + else + Gtk.drag_finish(ctx, false, false, time); + }); + } + + _initActions() { + let actions = { + 'about': { + onActivate: () => this._onAboutActivate() + }, + 'map-type-menu': { + state: ['b', false], + onActivate: () => this._onMapTypeMenuActivate() + }, + 'hybrid-aerial': { + paramType: 'b', + setting: 'hybrid-aerial' + }, + 'goto-user-location': { + accels: ['L'], + onActivate: () => this._onGotoUserLocationActivate() + }, + 'goto-antipode-location': { + accels: ['A'], + onActivate: () => this._mapView.gotoAntipode() + }, + 'toggle-sidebar': { + accels: ['D'], + state: ['b', false], + onChangeState: (a, v) => this._onToggleSidebarChangeState(a, v) + }, + 'zoom-in': { + accels: ['plus', 'plus', 'KP_Add', 'KP_Add', 'equal', 'equal'], + onActivate: () => this._mapView.view.zoom_in() + }, + 'zoom-out': { + accels: ['minus', 'minus', 'KP_Subtract', 'KP_Subtract'], + onActivate: () => this._mapView.view.zoom_out() + }, + 'toggle-scale': { + accels: ['S'], + onActivate: () => this._mapView.toggleScale() + }, + 'find': { + accels: ['F'], + onActivate: () => this._placeEntry.grab_focus() + }, + 'print-route': { + accels: ['P'], + onActivate: () => this._printRouteActivate() + }, + 'open-shape-layer': { + accels: ['O'], + onActivate: () => this._onOpenShapeLayer() + }, + 'export-as-image': { + onActivate: () => this._onExportActivated() + } + }; + + // when aerial tiles are available, add shortcuts to switch + if (Service.getService().tiles.aerial) { + actions['switch-to-street-view'] = { + accels: ['1', 'KP_1'], + onActivate: () => this._onStreetViewActivate() + }; + + actions['switch-to-aearial-view'] = { + accels: ['2', 'KP_2'], + onActivate: () => this._onAerialViewActivate() + }; + } + + Utils.addActions(this, actions, Application.settings); + } + + _initSignals() { + this.connect('delete-event', this._quit.bind(this)); + this.connect('configure-event', + this._onConfigureEvent.bind(this)); + + this.connect('window-state-event', + this._onWindowStateEvent.bind(this)); + this._mapView.view.connect('button-press-event', () => { + // Can not call something that will generate clutter events + // from a clutter event-handler. So use an idle. + Mainloop.idle_add(() => this._mapView.grab_focus()); + }); + + this.application.connect('notify::connected', () => { + if (this.application.connected || this.application.local_tile_path) + this._mainStack.visible_child = this._mainGrid; + else + this._mainStack.visible_child = this._noNetworkView; + }); + + /* + * If the currently focused widget is an entry then we will + * hijack the key-press to the main window and make sure that + * they reach the entry before they can be swallowed as accelerator. + */ + /* TODO: GTK 4. This should probably be handled by something like + * setting the map view as key capture widget for the search entry + */ + this.connect('key-press-event', (window, event) => { + let focusWidget = window.get_focus(); + let keyval = event.get_keyval()[1]; + let keys = [Gdk.KEY_plus, Gdk.KEY_KP_Add, + Gdk.KEY_minus, Gdk.KEY_KP_Subtract, + Gdk.KEY_equal]; + let isPassThroughKey = keys.indexOf(keyval) !== -1; + + /* if no entry is focused, and the key is not one we should treat + * as a zoom accelerator when no entry is focused, focus the + * main search entry in the headebar to propaget the keypress there + */ + if (!(focusWidget instanceof Gtk.Entry) && !isPassThroughKey) { + /* if the search entry does not handle the event, pass it on + * instead of activating the entry + */ + if (this._placeEntry.handle_event(event) === Gdk.EVENT_PROPAGATE) + return false; + + this._placeEntry.has_focus = true; + focusWidget = this._placeEntry; + } + + if (focusWidget instanceof Gtk.Entry) + return focusWidget.event(event); + + return false; + }); + + this._mapView.view.connect('notify::zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::max-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + this._mapView.view.connect('notify::min-zoom-level', + this._updateZoomButtonsSensitivity.bind(this)); + } + + _updateZoomButtonsSensitivity() { + let zoomLevel = this._mapView.view.zoom_level; + let maxZoomLevel = this._mapView.view.max_zoom_level; + let minZoomLevel = this._mapView.view.min_zoom_level; + let zoomInAction = this.lookup_action("zoom-in"); + let zoomOutAction = this.lookup_action("zoom-out"); + + if (zoomLevel >= maxZoomLevel) + zoomInAction.set_enabled(false); + else + zoomInAction.set_enabled(true); + + if (zoomLevel <= minZoomLevel) + zoomOutAction.set_enabled(false); + else + zoomOutAction.set_enabled(true); + } + + _updateLocationSensitivity() { + let sensitive = (Application.geoclue.state !== Geoclue.State.INITIAL && + (this.application.connected || + this.application.local_tile_path)); + + this.lookup_action("goto-user-location").set_enabled(sensitive); + } + + _initHeaderbar() { + this._headerBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_start(this._headerBarLeft); + + this._headerBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }); + this._headerBar.pack_end(this._headerBarRight); + + this._placeEntry = this._createPlaceEntry(); + this._headerBar.custom_title = this._placeEntry; + + Application.geoclue.connect('notify::state', + this._updateLocationSensitivity.bind(this)); + this.application.connect('notify::connected', () => { + let app = this.application; + + this._updateLocationSensitivity(); + this._placeEntry.sensitive = app.connected; + }); + + // action bar, for when the window is too narrow for the full headerbar + this._actionBarLeft = new HeaderBar.HeaderBarLeft({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_start(this._actionBarLeft); + + this._actionBarRight = new HeaderBar.HeaderBarRight({ + mapView: this._mapView, + application: this.application + }) + this._actionBar.pack_end(this._actionBarRight); + + this.connect('size-allocate', () => { + let [width, height] = this.get_size(); + if (width < _ADAPTIVE_VIEW_WIDTH) { + this.application.adaptive_mode = true; + this._headerBarLeft.hide(); + this._headerBarRight.hide(); + this._actionBarRevealer.set_reveal_child(true); + this._placeEntry.set_margin_start(0); + this._placeEntry.set_margin_end(0); + } else { + this.application.adaptive_mode = false; + this._headerBarLeft.show(); + this._headerBarRight.show(); + this._actionBarRevealer.set_reveal_child(false); + this._placeEntry.set_margin_start(_PLACE_ENTRY_MARGIN); + this._placeEntry.set_margin_end(_PLACE_ENTRY_MARGIN); + } + }); + } + + _saveWindowGeometry() { + let window = this.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.MAXIMIZED) + return; + + // GLib.Variant.new() can handle arrays just fine + let size = this.get_size(); + Application.settings.set('window-size', size); + + let position = this.get_position(); + Application.settings.set('window-position', position); + } + + _restoreWindowGeometry() { + let size = Application.settings.get('window-size'); + if (size.length === 2) { + let [width, height] = size; + this.set_default_size(width, height); + } + + let position = Application.settings.get('window-position'); + if (position.length === 2) { + let [x, y] = position; + + this.move(x, y); + } + + if (Application.settings.get('window-maximized')) + this.maximize(); + } + + _onConfigureEvent(widget, event) { + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + this._configureId = Mainloop.timeout_add(_CONFIGURE_ID_TIMEOUT, () => { + this._saveWindowGeometry(); + this._configureId = 0; + return false; + }); + } + + _onWindowStateEvent(widget, event) { + let window = widget.get_window(); + let state = window.get_state(); + + if (state & Gdk.WindowState.FULLSCREEN) + return; + + let maximized = (state & Gdk.WindowState.MAXIMIZED); + Application.settings.set('window-maximized', maximized); + } + + _quit() { + // remove configure event handler if still there + if (this._configureId !== 0) { + Mainloop.source_remove(this._configureId); + this._configureId = 0; + } + + // always save geometry before quitting + this._saveWindowGeometry(); + + return false; + } + + _onGotoUserLocationActivate() { + let message; + + if (Application.geoclue.state === Geoclue.State.ON) { + this._mapView.gotoUserLocation(true); + return; + } + + Application.geoclue.start(() => { + switch(Application.geoclue.state) { + case Geoclue.State.FAILED: + message = _("Failed to connect to location service"); + Utils.showDialog(message, Gtk.MessageType.ERROR, this); + break; + + case Geoclue.State.DENIED: + let dialog = new LocationServiceDialog.LocationServiceDialog({ + visible: true, + transient_for: this, + modal: true }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + break; + + default: + this._mapView.gotoUserLocation(true); + break; + } + }); + } + + _activateExport() { + let view = this._mapView.view; + let surface = view.to_surface(true); + let bbox = view.get_bounding_box(); + let [latitude, longitude] = bbox.get_center(); + + let dialog = new ExportViewDialog.ExportViewDialog({ + transient_for: this, + modal: true, + surface: surface, + latitude: latitude, + longitude: longitude, + mapView: this._mapView + }); + + dialog.connect('response', () => dialog.destroy()); + dialog.show_all(); + } + + _onExportActivated() { + if (this._mapView.view.state === Champlain.State.DONE) { + this._activateExport(); + } else { + let notifyId = this._mapView.view.connect('notify::state', () => { + if (this._mapView.view.state === Champlain.State.DONE) { + this._mapView.view.disconnect(notifyId); + this._activateExport(); + } + }); + } + } + + _printRouteActivate() { + if (this._mapView.routeShowing) { + let operation = new PrintOperation.PrintOperation({ mainWindow: this }); + } + } + + _onMapTypeMenuActivate(action) { + let state = action.get_state().get_boolean(); + action.set_state(GLib.Variant.new('b', !state)); + } + + _onStreetViewActivate() { + this._mapView.setMapType(MapView.MapType.STREET); + } + + _onAerialViewActivate() { + // don't attempt to switch to aerial if we don't have tiles for it + if (Service.getService().tiles.aerial) { + this._mapView.setMapType(MapView.MapType.AERIAL); + } + } + + _onToggleSidebarChangeState(action, variant) { + action.set_state(variant); + + let reveal = variant.get_boolean(); + this._sidebar.set_reveal_child(reveal); + } + + _setRevealSidebar(value) { + let action = this.lookup_action('toggle-sidebar'); + action.change_state(GLib.Variant.new_boolean(value)); + } + + _onAboutActivate() { + let aboutDialog = new Gtk.AboutDialog({ + artists: [ 'Jakub Steiner ', + 'Andreas Nilsson ' ], + authors: [ 'Zeeshan Ali (Khattak) ', + 'Mattias Bengtsson ', + 'Jonas Danielsson ', + 'Marcus Lundblad '], + translator_credits: _("translator-credits"), + /* Translators: This is the program name. */ + program_name: _("Maps"), + comments: _("A map application for GNOME"), + license_type: Gtk.License.GPL_2_0, + logo_icon_name: 'org.gnome.Maps', + version: pkg.version, + website: 'https://live.gnome.org/Apps/Maps', + wrap_license: true, + + modal: true, + transient_for: this + }); + + let copyright = _("Copyright © 2011 – 2021 Red Hat, Inc. and The GNOME Maps authors"); + let attribution = this._getAttribution(); + + copyright += '\n' + attribution; + + /* HACK: we need to poke into gtkaboutdialog internals + * to set the copyright with markup like attribution requires + */ + + let copyrightLabel = aboutDialog.get_template_child(Gtk.AboutDialog, 'copyright_label'); + copyrightLabel.set_markup('' + copyright + ''); + copyrightLabel.show(); + + aboutDialog.show(); + aboutDialog.connect('response', () => aboutDialog.destroy()); + } + + _getAttribution() { + let tileProviderInfo = Service.getService().tileProviderInfo; + let photonGeocode = Service.getService().photonGeocode; + let attribution = _("Map data by %s and contributors").format('OpenStreetMap'); + + if (tileProviderInfo) { + let tileProviderString; + if (tileProviderInfo.url) { + tileProviderString = '' + + tileProviderInfo.name + ''; + } else { + tileProviderString = tileProviderInfo.name; + } + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * tile provider where the %s placeholder is replaced by either + * the bare name of the tile provider, or a linkified URL if one + * is available + */ + attribution += _("Map tiles provided by %s").format(tileProviderString); + } + + let provider = GeocodeFactory.getGeocoder().attribution; + let providerUrl = GeocodeFactory.getGeocoder().attributionUrl; + let geocoderName = GeocodeFactory.getGeocoder().name; + let geocoderUrl = GeocodeFactory.getGeocoder().url; + + let providerString; + if (providerUrl) { + providerString = + '' + provider + ''; + } else { + providerString = provider; + } + + let geocoderLink = + '%s'.format(geocoderUrl, geocoderName); + + attribution += '\n'; + /* Translators: this is an attribution string giving credit to the + * search provider where the first %s placeholder is replaced by either + * the bare name of the geocoder provider, or a linkified URL if one + * is available, and the second %s placeholder is replaced by the + * URL to the geocoder project page. These placeholders + * can be swapped, if needed using the %n$s positional syntax + * (i.e. "%2$s ... %1$s ..." for positioning the project URL + * before the provider). + */ + attribution += _("Search provided by %s using %s"). + format(providerString, geocoderLink); + + return attribution; + } + + _onOpenShapeLayer() { + this._fileChooser = new ShapeLayerFileChooser({ + transient_for: this, + }); + + this._fileChooser.connect('response', (widget, response) => { + if (response === Gtk.ResponseType.ACCEPT) { + this._mapView.openShapeLayers(this._fileChooser.get_files()); + this._headerBarLeft.popdownLayersPopover(); + this._actionBarLeft.popdownLayersPopover(); + } + this._fileChooser.destroy(); + }); + this._fileChooser.show(); + } +}); diff --git a/src/mapBubble.js b/src/mapBubble.js new file mode 100644 index 00000000..1d92c9ee --- /dev/null +++ b/src/mapBubble.js @@ -0,0 +1,113 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const GeocodeFactory = imports.geocode; +const Place = imports.place; +const PlaceView = imports.placeView; +const PlaceButtons = imports.placeButtons; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +/* Maximum width of the popover content before it's forced to wrap */ +const MAX_CONTENT_WIDTH = 350; +/* Margin between the height of the main window and the height of the popover + contents */ +const HEIGHT_MARGIN = 100; + +var MapBubble = GObject.registerClass( +class MapBubble extends Gtk.Popover { + + _init(params) { + let place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + params.relative_to = mapView; + params.transitions_enabled = false; + params.modal = false; + + super._init(params); + + let content = new PlaceView.PlaceView({ place, mapView, visible: true }); + + let scrolledWindow = new MapBubbleScrolledWindow({ visible: true, + propagateNaturalWidth: true, + propagateNaturalHeight: true, + hscrollbarPolicy: Gtk.PolicyType.NEVER }); + scrolledWindow.add(content); + this.add(scrolledWindow); + + this.get_style_context().add_class("map-bubble"); + } +}); + +var MapBubbleScrolledWindow = GObject.registerClass( +class MapBubbleScrolledWindow extends Gtk.ScrolledWindow { + vfunc_get_preferred_width() { + let [min, nat] = this.get_child().get_preferred_width(); + min = Math.min(min, MAX_CONTENT_WIDTH); + nat = Math.min(nat, MAX_CONTENT_WIDTH); + return [min, nat]; + } + + vfunc_get_preferred_height_for_width(width) { + let windowHeight = this.get_toplevel().get_allocated_height() - HEIGHT_MARGIN; + let [min, nat] = this.get_child().get_preferred_height_for_width(width); + min = Math.min(min, windowHeight); + nat = Math.min(nat, windowHeight); + return [min, nat]; + } + + vfunc_draw(cr) { + let popover = this.get_ancestor(Gtk.Popover); + if (popover) { + let [{x, y, width, height}, baseline] = this.get_allocated_size(); + + // clip the top corners to the rounded corner + let radius = popover.get_style_context() + .get_property(Gtk.STYLE_PROPERTY_BORDER_RADIUS, popover.get_state_flags()) + * this.scale_factor; + + // bottom left + cr.moveTo(0, height); + cr.lineTo(0, radius); + cr.arc(radius, radius, radius, Math.PI, -Math.PI / 2.0); + cr.arc(width - radius, radius, radius, -Math.PI / 2.0, 0); + cr.lineTo(width, height); + + cr.clip(); + } + + return super.vfunc_draw(cr); + } +}); + diff --git a/src/mapMarker.js b/src/mapMarker.js new file mode 100644 index 00000000..b5a0e7fa --- /dev/null +++ b/src/mapMarker.js @@ -0,0 +1,415 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const MapBubble = imports.mapBubble; +const MapWalker = imports.mapWalker; +const Utils = imports.utils; + +var MapMarker = GObject.registerClass({ + Implements: [Champlain.Exportable], + Abstract: true, + Signals: { + 'gone-to': { } + }, + Properties: { + 'surface': GObject.ParamSpec.override('surface', + Champlain.Exportable), + 'view-latitude': GObject.ParamSpec.double('view-latitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -90, 90, 0), + 'view-longitude': GObject.ParamSpec.double('view-longitude', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + -180, 180, 0), + 'view-zoom-level': GObject.ParamSpec.int('view-zoom-level', '', '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + 0, 20, 3) + } +}, class MapMarker extends Champlain.Marker { + + _init(params) { + this._place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.selectable = true; + + super._init(params); + + this.connect('notify::size', this._translateMarkerPosition.bind(this)); + if (this._mapView) { + this._view = this._mapView.view; + this.connect('notify::selected', this._onMarkerSelected.bind(this)); + this.connect('button-press', this._onButtonPress.bind(this)); + this.connect('touch-event', this._onTouchEvent.bind(this)); + + // Some markers are draggable, we want to sync the marker location and + // the location saved in the GeocodePlace + // These are not bindings because the place may have a different + // location later + this.connect('notify::latitude', () => { + this.place.location.latitude = this.latitude; + }); + this.connect('notify::longitude', () => { + this.place.location.longitude = this.longitude; + }); + + this.place.connect('notify::location', this._onLocationChanged.bind(this)); + + this._view.bind_property('latitude', this, 'view-latitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('longitude', this, 'view-longitude', + GObject.BindingFlags.DEFAULT); + this._view.bind_property('zoom-level', this, 'view-zoom-level', + GObject.BindingFlags.DEFAULT); + this.connect('notify::view-latitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-longitude', this._onViewUpdated.bind(this)); + this.connect('notify::view-zoom-level', this._onViewUpdated.bind(this)); + } + + Application.application.connect('notify::adaptive-mode', this._onAdaptiveModeChanged.bind(this)); + } + + get surface() { + return this._surface; + } + + set surface(v) { + this._surface = v; + } + + vfunc_get_surface() { + return this._surface; + } + + vfunc_set_surface(surface) { + this._surface = surface; + } + + _actorFromIconName(name, size, color) { + try { + let theme = Gtk.IconTheme.get_default(); + let pixbuf; + + if (color) { + let info = theme.lookup_icon(name, size, 0); + pixbuf = info.load_symbolic(color, null, null, null)[0]; + } else { + pixbuf = theme.load_icon(name, size, 0); + } + + let canvas = new Clutter.Canvas({ width: pixbuf.get_width(), + height: pixbuf.get_height() }); + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0); + cr.paint(); + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + actor.set_content(canvas); + actor.set_size(pixbuf.get_width(), pixbuf.get_height()); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + _onButtonPress(marker, event) { + // Zoom in on marker on double-click + if (event.get_click_count() > 1) { + if (this._view.zoom_level < this._view.max_zoom_level) { + this._view.zoom_level = this._view.max_zoom_level; + this._view.center_on(this.latitude, this.longitude); + } + } + } + + _onTouchEvent(marker, event) { + if (event.type() == Clutter.EventType.TOUCH_BEGIN) + this.selected = true; + + return Clutter.EVENT_STOP; + } + + _translateMarkerPosition() { + this.set_translation(-this.anchor.x, -this.anchor.y, 0); + } + + _onLocationChanged() { + this.set_location(this.place.location.latitude, this.place.location.longitude); + + if (this._bubble) { + if (this._isInsideView()) + this._positionBubble(this._bubble); + else + this.hideBubble(); + } + } + + /** + * Returns: The anchor point for the marker icon, relative to the + * top left corner. + */ + get anchor() { + return { x: 0, y: 0 }; + } + + get bubbleSpacing() { + return 0; + } + + get place() { + return this._place; + } + + get bubble() { + if (this._bubble === undefined && this._hasBubble()) { + if (this._place.name) { + this._bubble = new MapBubble.MapBubble({ place: this._place, + mapView: this._mapView }); + } + } + + return this._bubble; + } + + _hasBubble() { + // Markers has no associated bubble by default + return false; + } + + _positionBubble(bubble) { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + let pos = new Gdk.Rectangle({ x: x + tx - this.bubbleSpacing, + y: y + ty - this.bubbleSpacing, + width: this.width + this.bubbleSpacing * 2, + height: this.height + this.bubbleSpacing * 2 }); + bubble.pointing_to = pos; + bubble.position = Gtk.PositionType.TOP; + + // Gtk+ doesn't provide a widget allocation by calling get_allocation + // if it's not visible, the bubble positioning occurs when bubble + // is not visible yet + let bubbleSize = bubble.get_preferred_size()[1]; + + // Set bubble position left/right if it's close to a vertical map edge + if (pos.x + pos.width / 2 + bubbleSize.width / 2 >= mapSize.width) + bubble.position = Gtk.PositionType.LEFT; + else if (pos.x + pos.width / 2 - bubbleSize.width / 2 <= 0) + bubble.position = Gtk.PositionType.RIGHT; + // Avoid bubble to cover header bar if the marker is close to the top map edge + else if (pos.y - bubbleSize.height <= 0) + bubble.position = Gtk.PositionType.BOTTOM; + } + + _hideBubbleOn(signal, duration) { + let sourceId = null; + let signalId = this._view.connect(signal, () => { + if (sourceId) + Mainloop.source_remove(sourceId); + else + this.hideBubble(); + + let callback = (function() { + sourceId = null; + this.showBubble(); + }).bind(this); + + if (duration) + sourceId = Mainloop.timeout_add(duration, callback); + else + sourceId = Mainloop.idle_add(callback); + }); + + Utils.once(this.bubble, 'closed', () => { + // We still listening for the signal to refresh + // the existent timeout + if (!sourceId) + this._view.disconnect(signalId); + }); + + Utils.once(this, 'notify::selected', () => { + // When the marker gets deselected, we need to ensure + // that the timeout callback is not called anymore. + if (sourceId) { + Mainloop.source_remove(sourceId); + this._view.disconnect(signalId); + } + }); + } + + _initBubbleSignals() { + this._hideBubbleOn('notify::zoom-level', 500); + this._hideBubbleOn('notify::size'); + + // This is done to get just one marker selected at any time regardless + // of the layer to which it belongs so we can get only one visible bubble + // at any time. We do this for markers in different layers because for + // markers in the same layer, ChamplainMarkerLayer single selection mode + // does the job. + this._mapView.onSetMarkerSelected(this); + + let markerSelectedSignalId = this._mapView.connect('marker-selected', (mapView, selectedMarker) => { + if (this.get_parent() !== selectedMarker.get_parent()) + this.selected = false; + }); + + let viewTouchEventSignalId = + this._view.connect('touch-event', () => this.set_selected(false)); + + let goingToSignalId = this._mapView.connect('going-to', () => { + this.set_selected(false); + }); + let buttonPressSignalId = + this._view.connect('button-press-event', () => { + this.set_selected(false); + }); + // Destroy the bubble when the marker is destroyed o removed from a layer + let parentSetSignalId = this.connect('parent-set', () => { + this.set_selected(false); + }); + let dragMotionSignalId = this.connect('drag-motion', () => { + this.set_selected(false); + }); + let markerHiddenSignalId = this.connect('notify::visible', () => { + if (!this.visible) { + this.set_selected(false); + } + }); + + Utils.once(this.bubble, 'closed', () => { + this._mapView.disconnect(markerSelectedSignalId); + this._mapView.disconnect(goingToSignalId); + this._view.disconnect(buttonPressSignalId); + this._view.disconnect(viewTouchEventSignalId); + this.disconnect(parentSetSignalId); + this.disconnect(dragMotionSignalId); + + this._bubble.destroy(); + delete this._bubble; + }); + } + + _isInsideView() { + let [tx, ty, tz] = this.get_translation(); + let x = this._view.longitude_to_x(this.longitude); + let y = this._view.latitude_to_y(this.latitude); + let mapSize = this._mapView.get_allocation(); + + return x + tx + this.width > 0 && x + tx < mapSize.width && + y + ty + this.height > 0 && y + ty < mapSize.height; + } + + _onViewUpdated() { + if (this.bubble) { + if (this._isInsideView()) + this._positionBubble(this.bubble); + else + this.bubble.hide(); + } + } + + showBubble() { + if (this.bubble && !this.bubble.visible && this._isInsideView() && !Application.application.adaptive_mode) { + this._initBubbleSignals(); + this.bubble.show(); + this._positionBubble(this.bubble); + } + } + + hideBubble() { + if (this._bubble) + this._bubble.hide(); + } + + get walker() { + if (this._walker === undefined) + this._walker = new MapWalker.MapWalker(this.place, this._mapView); + + return this._walker; + } + + zoomToFit() { + this.walker.zoomToFit(); + } + + goTo(animate) { + Utils.once(this.walker, 'gone-to', () => this.emit('gone-to')); + this.walker.goTo(animate); + } + + goToAndSelect(animate) { + Utils.once(this, 'gone-to', () => this.selected = true); + + this.goTo(animate); + } + + _onMarkerSelected() { + if (this.selected) { + if (this.bubble) { + this.showBubble(); + Application.application.selected_place = this._place; + } + } else { + this.hideBubble(); + Application.application.selected_place = null; + } + } + + _onAdaptiveModeChanged() { + if (this.selected) { + if (!Application.application.adaptive_mode) { + this.showBubble(); + } else { + this.hideBubble(); + } + } + } +}); diff --git a/src/mapSource.js b/src/mapSource.js new file mode 100644 index 00000000..5feb6298 --- /dev/null +++ b/src/mapSource.js @@ -0,0 +1,174 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GtkClutter = imports.gi.GtkClutter; +const System = imports.system; + +const Service = imports.service; +const Utils = imports.utils; + +let _attributionImages = []; + +const _FILE_CACHE_SIZE_LIMIT = (10 * 1024 * 1024); /* 10Mb */ +const _MEMORY_CACHE_SIZE_LIMIT = 100; /* number of tiles */ + +const _LOGO_PADDING_X = 10; +const _LOGO_PADDING_Y = 25; +// extra padding below logo in RTL, where scale will be on the right side +const _LOGO_PADDING_Y_RTL = 35; + +var AttributionLogo = GObject.registerClass({}, +class AttributionLogo extends GtkClutter.Actor { + + _init(view) { + super._init(); + + this._view = view; + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + view.connect('notify::width', () => this._updatePosition()); + view.connect('notify::height', () => this._updatePosition()); + + this._updatePosition(view); + } + + setSource(source) { + this._id = source.get_id(); + + let bin = this.get_widget(); + + if (bin.get_child()) + bin.remove(bin.get_child()); + + if (_attributionImages[source.get_id()]) { + bin.add(_attributionImages[source.get_id()]); + bin.visible = true; + } else { + bin.visible = false; + } + + this._updatePosition(); + } + + _updatePosition() { + let image = _attributionImages[this._id]; + + if (image) { + let width = image.pixbuf.width; + let height = image.pixbuf.height; + let x = this._view.width - width - _LOGO_PADDING_X; + /* TODO: ideally the attribution logo should be aligned to the left + * side in RTL locales, but I couldn't get that working with Clutter + * actor positioning, so adjust the padding to fit above the scale + * for now + */ + let y = this._view.height - height - + (this._rtl ? _LOGO_PADDING_Y_RTL : _LOGO_PADDING_Y); + + this.set_position(x, y); + } + } +}); + +function _updateAttributionImage(source) { + if (!source.attribution_logo || source.attribution_logo === "") + return; + + if (!_attributionImages[source.id]) + _attributionImages[source.id] = new Gtk.Image({ visible: true }); + + let data = GLib.base64_decode(source.attribution_logo); + let stream = Gio.MemoryInputStream.new_from_bytes(GLib.Bytes.new(data)); + _attributionImages[source.id].pixbuf = + GdkPixbuf.Pixbuf.new_from_stream(stream, null); +} + +function _createTileSource(source) { + let tileSource = new Champlain.NetworkTileSource({ + id: source.id, + name: source.name, + license: source.license, + license_uri: source.license_uri, + min_zoom_level: source.min_zoom_level, + max_zoom_level: source.max_zoom_level, + tile_size: source.tile_size, + renderer: new Champlain.ImageRenderer(), + uri_format: source.uri_format + }); + tileSource.max_conns = source.max_connections; + return tileSource; +} + +function _createCachedSource(source) { + let tileSource = _createTileSource(source); + _updateAttributionImage(source); + + let fileCache = new Champlain.FileCache({ + size_limit: _FILE_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let memoryCache = new Champlain.MemoryCache({ + size_limit: _MEMORY_CACHE_SIZE_LIMIT, + renderer: new Champlain.ImageRenderer() + }); + + let errorSource = new Champlain.NullTileSource({ + renderer: new Champlain.ImageRenderer() + }); + + /* + * When the a source in the chain fails to load a given tile + * the next one in the chain tries instead. Until we get to the error + * source. + */ + let sourceChain = new Champlain.MapSourceChain(); + sourceChain.push(errorSource); + sourceChain.push(tileSource); + sourceChain.push(fileCache); + sourceChain.push(memoryCache); + + return sourceChain; +} + +function createAerialSource() { + return _createCachedSource(Service.getService().tiles.aerial); +} + +function createHybridAerialSource() { + return _createCachedSource(Service.getService().tiles.hybridAerial); +} + +function createStreetSource() { + return _createCachedSource(Service.getService().tiles.street); +} + +function createStreetDarkSource() { + return _createCachedSource(Service.getService().tiles.streetDark) +} + +function createPrintSource() { + return _createCachedSource(Service.getService().tiles.print); +} diff --git a/src/mapView.js b/src/mapView.js new file mode 100644 index 00000000..10e6d5a3 --- /dev/null +++ b/src/mapView.js @@ -0,0 +1,964 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GtkChamplain = imports.gi.GtkChamplain; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const BoundingBox = imports.boundingBox; +const ContactPlace = imports.contactPlace; +const Color = imports.color; +const Geoclue = imports.geoclue; +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const KmlShapeLayer = imports.kmlShapeLayer; +const GpxShapeLayer = imports.gpxShapeLayer; +const Location = imports.location; +const Maps = imports.gi.GnomeMaps; +const MapSource = imports.mapSource; +const MapWalker = imports.mapWalker; +const Place = imports.place; +const PlaceMarker = imports.placeMarker; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const ShapeLayer = imports.shapeLayer; +const StoredRoute = imports.storedRoute; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; +const TurnPointMarker = imports.turnPointMarker; +const UserLocationMarker = imports.userLocationMarker; +const Utils = imports.utils; + +var MapType = { + LOCAL: 'MapsLocalSource', + STREET: 'MapsStreetSource', + AERIAL: 'MapsAerialSource' +}; +const _LOCATION_STORE_TIMEOUT = 500; +const MapMinZoom = 2; + +/* + * Due to the mathematics of spherical mericator projection, + * the map must be truncated at a latitude less than 90 degrees. + */ +var MAX_LATITUDE = 85.05112; +var MIN_LATITUDE = -85.05112; +var MAX_LONGITUDE = 180; +var MIN_LONGITUDE = -180; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline on the path */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +// color used for turn-by-turn-based routes (non-transit) +const TURN_BY_TURN_ROUTE_COLOR = '0000FF'; + +// line width for route lines +const ROUTE_LINE_WIDTH = 5; + +/* length of filled parts of dashed lines used for walking legs of transit + * itineraries + */ +const DASHED_ROUTE_LINE_FILLED_LENGTH = 5; + +// length of gaps of dashed lines used for walking legs of transit itineraries +const DASHED_ROUTE_LINE_GAP_LENGTH = 5; + +// Maximum limit of file size (20 MB) that can be loaded without user confirmation +const FILE_SIZE_LIMIT_MB = 20; + +var MapView = GObject.registerClass({ + Properties: { + // this property is true when the routing sidebar is active + 'routingOpen': GObject.ParamSpec.boolean('routingOpen', + 'Routing open', + 'Routing sidebar open', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false), + /* this property is true when a route is being shown on the map */ + 'routeShowing': GObject.ParamSpec.boolean('routeShowing', + 'Route showing', + 'Showing a route on the map', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + false) + }, + Signals: { + 'user-location-changed': {}, + 'going-to': {}, + 'going-to-user-location': {}, + 'gone-to-user-location': {}, + 'view-moved': {}, + 'marker-selected': { param_types: [Champlain.Marker] }, + 'map-type-changed': { param_types: [GObject.TYPE_STRING] } + }, +}, class MapView extends GtkChamplain.Embed { + + get routingOpen() { + return this._routingOpen || this._instructionMarkerLayer.visible; + } + + set routingOpen(value) { + let isValid = Application.routeQuery.isValid(); + + this._routingOpen = value && isValid; + this._routeLayers.forEach((routeLayer) => routeLayer.visible = value && isValid); + this._instructionMarkerLayer.visible = value && isValid; + if (!value) + this.routeShowing = false; + this.notify('routingOpen'); + } + + get routeShowing() { + return this._routeShowing; + } + + set routeShowing(value) { + this._routeShowing = value; + this.notify('routeShowing'); + } + + _init(params) { + super._init(); + + let mapType = params.mapType || this._getStoredMapType(); + delete params.mapType; + + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._storeId = 0; + this.view = this._initView(); + this._initLayers(); + + this.setMapType(mapType); + + if (Application.normalStartup) + this._goToStoredLocation(); + + this.shapeLayerStore = new Gio.ListStore(GObject.TYPE_OBJECT); + + Application.geoclue.connect('location-changed', + this._updateUserLocation.bind(this)); + Application.geoclue.connect('notify::state', + this._updateUserLocation.bind(this)); + this._connectRouteSignals(); + + // set dark background if we start up in dark theme + this._setBackgroundPatternIfNeeded(); + } + + _initScale(view) { + this._scale = new Champlain.Scale({ visible: true }); + this._scale.connect_view(view); + + if (Utils.getMeasurementSystem() === Utils.METRIC_SYSTEM) + this._scale.unit = Champlain.Unit.KM; + else + this._scale.unit = Champlain.Unit.MILES; + + this._scale.set_x_expand(true); + this._scale.set_y_expand(true); + this._scale.set_x_align(Clutter.ActorAlign.START); + this._scale.set_y_align(Clutter.ActorAlign.END); + view.add_child(this._scale); + } + + _initView() { + let view = this.get_view(); + + view.min_zoom_level = MapMinZoom; + view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + view.reactive = true; + view.kinetic_mode = true; + view.horizontal_wrap = true; + + view.connect('notify::latitude', this._onViewMoved.bind(this)); + view.connect('notify::longitude', + () => this._setBackgroundPatternIfNeeded()); + // switching map type will set view min-zoom-level from map source + view.connect('notify::min-zoom-level', () => { + if (view.min_zoom_level < MapMinZoom) { + view.min_zoom_level = MapMinZoom; + } + }); + + // if dark tiles is available, setup handler to switch style + if (Service.getService().tiles.streetDark) { + Application.settings.connect('changed::night-mode', + this._onNightModeChanged.bind(this)); + } + + // if hybrid aerial tiles are available, setup handler to toggle + if (Service.getService().tiles.hybridAerial) { + Application.settings.connect('changed::hybrid-aerial', + this._onHybridAerialChanged.bind(this)); + } + + this._gtkSettings = Gtk.Settings.get_default(); + this._gtkSettings.connect('notify::gtk-application-prefer-dark-theme', + this._onPreferDarkThemeChanged.bind(this)); + + this._initScale(view); + return view; + } + + /* handler to draw background for dark theme, + * these three functions should not be needed later with a native GTK + * widget (Shumate) + */ + _drawDarkBackground(canvas, cr, width, height) { + // set this arbitrarily to try to match the typical dark tile set + cr.setSourceRGB(0.2, 0.2, 0.2); + cr.rectangle(0, 0, width, height); + cr.fillPreserve(); + + return true; + } + + _createDarkBackground() { + this._darkBackground = new Clutter.Canvas(); + this._darkBackground.set_size(512, 512); + this._darkBackground.connect('draw', + this._drawDarkBackground.bind(this)); + this._darkBackground.invalidate(); + } + + _isWrappingAround() { + let bbox = this.view.get_bounding_box(); + + return bbox.left > bbox.right; + } + + _setBackgroundPatternIfNeeded() { + if (this._gtkSettings.gtk_application_prefer_dark_theme && + !this._isWrappingAround()) { + if (!this._darkBackgroud) + this._createDarkBackground(); + this.view.set_background_pattern(this._darkBackground); + this._customBackgroundSet = true; + } else if (this._customBackgroundSet) { + this.view.background_pattern = null; + this._customBackgroundSet = false; + } + } + + _onPreferDarkThemeChanged() { + this._setBackgroundPatternIfNeeded(); + } + + _onNightModeChanged() { + if (this._mapType === MapType.STREET) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('night-mode')) + this.view.map_source = MapSource.createStreetDarkSource(); + else + this.view.map_source = MapSource.createStreetSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + _onHybridAerialChanged() { + if (this._mapType === MapType.AERIAL) { + let overlay_sources = this.view.get_overlay_sources(); + + if (Application.settings.get('hybrid-aerial')) + this.view.map_source = MapSource.createHybridAerialSource(); + else + this.view.map_source = MapSource.createAerialSource(); + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + } + } + + /* create and store a route layer, pass true to get a dashed line */ + _createRouteLayer(dashed, lineColor, width) { + let red = Color.parseColor(lineColor, 0); + let green = Color.parseColor(lineColor, 1); + let blue = Color.parseColor(lineColor, 2); + // Clutter uses a 0-255 range for color components + let strokeColor = new Clutter.Color({ red: red * 255, + blue: blue * 255, + green: green * 255, + alpha: 255 }); + let routeLayer = new Champlain.PathLayer({ stroke_width: width, + stroke_color: strokeColor }); + if (dashed) + routeLayer.set_dash([DASHED_ROUTE_LINE_FILLED_LENGTH, + DASHED_ROUTE_LINE_GAP_LENGTH]); + + this._routeLayers.push(routeLayer); + this.view.add_layer(routeLayer); + + return routeLayer; + } + + _clearRouteLayers() { + this._routeLayers.forEach((routeLayer) => { + routeLayer.remove_all(); + routeLayer.visible = false; + this.view.remove_layer(routeLayer); + }); + + this._routeLayers = []; + } + + _initLayers() { + let mode = Champlain.SelectionMode.SINGLE; + + this._userLocationLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._userLocationLayer); + + this._placeLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._placeLayer); + + this._instructionMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._instructionMarkerLayer); + + this._annotationMarkerLayer = new Champlain.MarkerLayer({ selection_mode: mode }); + this.view.add_layer(this._annotationMarkerLayer); + + ShapeLayer.SUPPORTED_TYPES.push(GeoJSONShapeLayer.GeoJSONShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(KmlShapeLayer.KmlShapeLayer); + ShapeLayer.SUPPORTED_TYPES.push(GpxShapeLayer.GpxShapeLayer); + + this._routeLayers = []; + } + + _ensureInstructionLayerAboveRouteLayers() { + this.view.remove_layer(this._instructionMarkerLayer); + this.view.add_layer(this._instructionMarkerLayer); + } + + _connectRouteSignals() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + let query = Application.routeQuery; + + route.connect('update', () => { + this.showRoute(route); + this.routeShowing = true; + }); + route.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('update', () => this._showTransitPlan(transitPlan)); + transitPlan.connect('reset', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + transitPlan.connect('itinerary-selected', (obj, itinerary) => { + this._showTransitItinerary(itinerary); + this.routeShowing = true; + }); + transitPlan.connect('itinerary-deselected', () => { + this._clearRouteLayers(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + this.routeShowing = false; + }); + + query.connect('notify', () => this.routingOpen = query.isValid()); + } + + _getStoredMapType() { + let mapType = Application.settings.get('map-type'); + + // make sure it's a valid map type + for (let type in MapType) { + if (mapType === MapType[type]) { + return mapType; + } + } + + return MapType.STREET; + } + + getMapType() { + return this._mapType; + } + + setMapType(mapType) { + if (this._mapType && this._mapType === mapType) + return; + + let overlay_sources = this.view.get_overlay_sources(); + + this._mapType = mapType; + + if (mapType !== MapType.LOCAL) { + let tiles = Service.getService().tiles; + + if (mapType === MapType.AERIAL && tiles.aerial) { + if (tiles.hybridAerial && + Application.settings.get('hybrid-aerial')) { + this.view.map_source = MapSource.createHybridAerialSource(); + } else { + this.view.map_source = MapSource.createAerialSource(); + } + } else { + if (tiles.streetDark && + Application.settings.get('night-mode')) { + this.view.map_source = MapSource.createStreetDarkSource(); + } else { + this.view.map_source = MapSource.createStreetSource(); + } + } + if (!this._attribution) { + this._attribution = new MapSource.AttributionLogo(this.view); + this.view.add_child(this._attribution); + } + + this._attribution.setSource(this.view.map_source); + + Application.settings.set('map-type', mapType); + } else { + let renderer = new Champlain.ImageRenderer(); + let source = new Maps.FileTileSource({ + path: Utils.getBufferText(Application.application.local_tile_path), + renderer: renderer, + tile_size: Application.application.local_tile_size || 512 + }); + try { + source.prepare(); + + this.view.map_source = source; + this.view.world = source.world; + let [lat, lon] = this.view.world.get_center(); + this.view.center_on(lat, lon); + } catch(e) { + this.setMapType(MapType.STREET); + Application.application.local_tile_path = false; + Application.application.notify('connected'); + Utils.showDialog(e.message, Gtk.MessageType.ERROR, this._mainWindow); + } + } + + overlay_sources.forEach((source) => this.view.add_overlay_source(source, 255)); + + this.emit("map-type-changed", mapType); + } + + toggleScale() { + this._scale.visible = !this._scale.visible; + } + + _checkIfFileSizeNeedsConfirmation(files) { + let confirmLoad = false; + let totalFileSizeMB = 0; + files.forEach((file) => { + totalFileSizeMB += file.query_info(Gio.FILE_ATTRIBUTE_STANDARD_SIZE, + 0, null).get_size(); + }); + totalFileSizeMB = totalFileSizeMB / (1024 * 1024); + if (totalFileSizeMB > FILE_SIZE_LIMIT_MB) { + confirmLoad = true; + } + + return {'confirmLoad': confirmLoad, 'totalFileSizeMB': totalFileSizeMB}; + } + + _onShapeLoad(error, bbox, layer) { + if (error) { + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + } else { + bbox.compose(layer.bbox); + } + + this._remainingFilesToLoad--; + if (this._remainingFilesToLoad === 0) { + this.gotoBBox(bbox); + } + } + + openShapeLayers(files) { + let result = this._checkIfFileSizeNeedsConfirmation(files); + if (result.confirmLoad) { + let totalFileSizeMB = result.totalFileSizeMB; + + let dialog = new Gtk.MessageDialog ({ + transient_for: this._mainWindow, + modal: true, + buttons: Gtk.ButtonsType.OK_CANCEL, + text: _("Do you want to continue?"), + secondary_text: _("You are about to open files with a total " + + "size of %s MB. This could take some time to" + + " load").format(totalFileSizeMB.toLocaleString(undefined, + { maximumFractionDigits: 1 })) + }); + + dialog.connect('response', (widget, responseId) => { + if (responseId === Gtk.ResponseType.OK) { + this._loadShapeLayers(files); + } + dialog.destroy(); + }); + dialog.show_all(); + } else { + this._loadShapeLayers(files); + } + return true; + } + + _loadShapeLayers(files) { + let bbox = new BoundingBox.BoundingBox(); + this._remainingFilesToLoad = files.length; + + files.forEach((file) => { + try { + let i = this._findShapeLayerIndex(file); + let layer = (i > -1) ? this.shapeLayerStore.get_item(i) : null; + if (!layer) { + layer = ShapeLayer.newFromFile(file, this); + if (!layer) + throw new Error(_("File type is not supported")); + layer.load(this._onShapeLoad.bind(this), bbox); + this.shapeLayerStore.append(layer); + } + } catch (e) { + Utils.debug(e); + let msg = _("Failed to open layer"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + removeShapeLayer(shapeLayer) { + shapeLayer.unload(); + let i = this._findShapeLayerIndex(shapeLayer.file); + this.shapeLayerStore.remove(i); + } + + _findShapeLayerIndex(file) { + for (let i = 0; i < this.shapeLayerStore.get_n_items(); i++) + if (this.shapeLayerStore.get_item(i).file.equal(file)) + return i; + return -1; + } + + goToGeoURI(uri) { + try { + let location = new Location.Location({ heading: -1 }); + location.set_from_uri(uri); + + let place = new Place.Place({ location: location, + name: location.description, + store: false }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } catch(e) { + let msg = _("Failed to open GeoURI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + Utils.debug("failed to open GeoURI: %s".format(e.message)); + } + } + + goToHttpURL(url) { + Place.parseHttpURL(url, (place, error) => { + if (place) { + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(marker); + marker.goToAndSelect(true); + } else { + Utils.showDialog(error, Gtk.MessageType.ERROR, this._mainWindow); + } + }); + } + + gotoUserLocation(animate) { + if (!this._userLocation) + return; + + this.emit('going-to-user-location'); + Utils.once(this._userLocation, "gone-to", + () => this.emit('gone-to-user-location')); + this._userLocation.goTo(animate); + } + + gotoAntipode() { + let lat = -this.view.latitude; + let lon = this.view.longitude > 0 ? + this.view.longitude - 180 : this.view.longitude + 180; + let place = + new Place.Place({ location: new Location.Location({ latitude: lat, + longitude: lon }), + initialZoom: this.view.zoom_level }); + + new MapWalker.MapWalker(place, this).goTo(true); + } + + userLocationVisible() { + let box = this.view.get_bounding_box(); + + return box.covers(this._userLocation.latitude, this._userLocation.longitude); + } + + _updateUserLocation() { + if (!Application.geoclue.place) + return; + + if (Application.geoclue.state !== Geoclue.State.ON) { + if (this._userLocation) + this._userLocation.visible = false; + return; + } + + if (!this._userLocation) { + let place = Application.geoclue.place; + this._userLocation = new UserLocationMarker.UserLocationMarker({ place: place, + mapView: this }); + this._userLocationLayer.remove_all(); + this._userLocation.addToLayer(this._userLocationLayer); + } + + this._userLocation.visible = true; + + this.emit('user-location-changed'); + } + + _storeLocation() { + let zoom = this.view.zoom_level; + let location = [this.view.latitude, this.view.longitude]; + + /* protect agains situations where the Champlain view was already + * disposed, in this case zoom will be set to the GObject property + * getter + */ + if (!isNaN(zoom)) { + Application.settings.set('zoom-level', zoom); + Application.settings.set('last-viewed-location', location); + } else { + Utils.debug('Failed to extract location to store'); + } + } + + _goToStoredLocation() { + let location = Application.settings.get('last-viewed-location'); + + if (location.length === 2) { + let [lat, lon] = location; + let zoom = Application.settings.get('zoom-level'); + + if (zoom >= this.view.min_zoom_level && + zoom <= this.view.max_zoom_level) + this.view.zoom_level = Application.settings.get('zoom-level'); + else + Utils.debug('Invalid initial zoom level: ' + zoom); + + if (lat >= MIN_LATITUDE && lat <= MAX_LATITUDE && + lon >= MIN_LONGITUDE && lon <= MAX_LONGITUDE) + this.view.center_on(location[0], location[1]); + else + Utils.debug('Invalid initial coordinates: ' + lat + ', ' + lon); + } else { + /* bounding box. for backwards compatibility, not used anymore */ + let bbox = new BoundingBox.BoundingBox({ top: location[0], + bottom: location[1], + left: location[2], + right: location[3] }); + this.view.connect("notify::realized", () => { + if (this.view.realized) + this.gotoBBox(bbox, true); + }); + } + } + + gotoBBox(bbox, linear) { + if (!bbox.isValid()) { + Utils.debug('Bounding box is invalid'); + return; + } + + let [lon, lat] = bbox.getCenter(); + let place = new Place.Place({ + location: new Location.Location({ latitude : lat, + longitude : lon }), + bounding_box: new Geocode.BoundingBox({ top : bbox.top, + bottom : bbox.bottom, + left : bbox.left, + right : bbox.right }) + }); + new MapWalker.MapWalker(place, this).goTo(true, linear); + } + + getZoomLevelFittingBBox(bbox) { + let mapSource = this.view.get_map_source(); + let goodSize = false; + let zoomLevel = this.view.max_zoom_level; + + do { + + let minX = mapSource.get_x(zoomLevel, bbox.left); + let minY = mapSource.get_y(zoomLevel, bbox.bottom); + let maxX = mapSource.get_x(zoomLevel, bbox.right); + let maxY = mapSource.get_y(zoomLevel, bbox.top); + + if (minY - maxY <= this.view.height && + maxX - minX <= this.view.width) + goodSize = true; + else + zoomLevel--; + + if (zoomLevel <= this.view.min_zoom_level) { + zoomLevel = this.view.min_zoom_level; + goodSize = true; + } + } while (!goodSize); + + return zoomLevel; + } + + showTurnPoint(turnPoint) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = null; + if (turnPoint.isStop()) + return; + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showTransitStop(transitStop, transitLeg) { + if (this._turnPointMarker) + this._turnPointMarker.destroy(); + + this._turnPointMarker = new TurnPointMarker.TurnPointMarker({ transitStop: transitStop, + transitLeg: transitLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(this._turnPointMarker); + this._turnPointMarker.goTo(); + } + + showContact(contact) { + let places = contact.get_places(); + if (places.length === 0) + return; + + this._placeLayer.remove_all(); + places.forEach((p) => { + let place = new ContactPlace.ContactPlace({ place: p, + contact: contact }); + let marker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + this._placeLayer.add_marker(marker); + }); + + new MapWalker.MapWalker(places[0], this).goTo(true); + } + + _showStoredRoute(stored) { + let query = Application.routeQuery; + let route = Application.routingDelegator.graphHopper.route; + + Application.routingDelegator.graphHopper.storedRoute = stored.route; + + let resetId = route.connect('reset', function() { + route.disconnect(resetId); + query.freeze_notify(); + + let storedLast = stored.places.length - 1; + query.points[0].place = stored.places[0]; + query.points[1].place = stored.places[storedLast]; + query.transportation = stored.transportation; + + for (let i = 1; i < storedLast; i++) { + let point = query.addPoint(i); + point.place = stored.places[i]; + } + + query.thaw_notify(); + }); + route.reset(); + } + + showPlace(place, animation) { + this._placeLayer.remove_all(); + + if (place instanceof StoredRoute.StoredRoute) { + this._showStoredRoute(place); + return; + } + + this.routingOpen = false; + let placeMarker = new PlaceMarker.PlaceMarker({ place: place, + mapView: this }); + + this._placeLayer.add_marker(placeMarker); + placeMarker.goToAndSelect(animation); + } + + showRoute(route) { + let routeLayer; + + this._clearRouteLayers(); + this._placeLayer.remove_all(); + + routeLayer = this._createRouteLayer(false, TURN_BY_TURN_ROUTE_COLOR, + ROUTE_LINE_WIDTH); + route.path.forEach((polyline) => routeLayer.add_node(polyline)); + this.routingOpen = true; + + this._ensureInstructionLayerAboveRouteLayers(); + + this._showDestinationTurnpoints(); + this.gotoBBox(route.bbox); + } + + _showDestinationTurnpoints() { + let route = Application.routingDelegator.graphHopper.route; + let query = Application.routeQuery; + let pointIndex = 0; + + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + route.turnPoints.forEach((turnPoint) => { + if (turnPoint.isStop()) { + let queryPoint = query.filledPoints[pointIndex]; + let destinationMarker = new TurnPointMarker.TurnPointMarker({ turnPoint: turnPoint, + queryPoint: queryPoint, + mapView: this }); + this._instructionMarkerLayer.add_marker(destinationMarker); + pointIndex++; + } + }, this); + } + + _showTransitItinerary(itinerary) { + this.gotoBBox(itinerary.bbox); + this._clearRouteLayers(); + this._placeLayer.remove_all(); + this._instructionMarkerLayer.remove_all(); + this._turnPointMarker = null; + + itinerary.legs.forEach((leg, index) => { + let dashed = !leg.transit; + let color = leg.color; + let outlineColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > + OUTLINE_LUMINANCE_THREASHHOLD; + let routeLayer; + let outlineRouteLayer; + + /* draw an outline by drawing a background path layer if needed + * TODO: maybe we should add support for outlined path layers in + * libchamplain */ + if (hasOutline) + outlineRouteLayer = this._createRouteLayer(dashed, outlineColor, + ROUTE_LINE_WIDTH + 2); + routeLayer = this._createRouteLayer(dashed, color, ROUTE_LINE_WIDTH); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way */ + if (index > 0 && !leg.transit) { + let previousLeg = itinerary.legs[index - 1]; + let lastPoint = previousLeg.polyline.last(); + + routeLayer.add_node(lastPoint); + } + + if (hasOutline) { + leg.polyline.forEach((function (polyline) { + outlineRouteLayer.add_node(polyline); + })); + } + leg.polyline.forEach((function (polyline) { + routeLayer.add_node(polyline); + })); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one */ + if (index < itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + }); + + this._ensureInstructionLayerAboveRouteLayers(); + + itinerary.legs.forEach((leg, index) => { + let previousLeg = index === 0 ? null : itinerary.legs[index - 1]; + + /* add start marker */ + let start; + if (!leg.transit) { + start = new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg, + mapView: this }); + } else { + start = new TransitBoardMarker.TransitBoardMarker({ leg: leg, + mapView: this }); + } + + this._instructionMarkerLayer.add_marker(start); + }); + + /* add arrival marker */ + let lastLeg = itinerary.legs.last(); + let arrival = new TransitArrivalMarker.TransitArrivalMarker({ leg: lastLeg, + mapView: this }); + this._instructionMarkerLayer.add_marker(arrival); + + this.routingOpen = true; + } + + _showTransitPlan(plan) { + this.gotoBBox(plan.bbox); + } + + _onViewMoved() { + this.emit('view-moved'); + if (this._storeId !== 0) + return; + + this._storeId = Mainloop.timeout_add(_LOCATION_STORE_TIMEOUT, () => { + this._storeId = 0; + this._storeLocation(); + }); + } + + onSetMarkerSelected(selectedMarker) { + this.emit('marker-selected', selectedMarker); + } +}); diff --git a/src/mapWalker.js b/src/mapWalker.js new file mode 100644 index 00000000..16366077 --- /dev/null +++ b/src/mapWalker.js @@ -0,0 +1,199 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Damián Nohales + */ + +const Clutter = imports.gi.Clutter; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; + +const BoundingBox = imports.boundingBox; +const Location = imports.location; +const Utils = imports.utils; + +const _MAX_DISTANCE = 19850; // half of Earth's circumference (km) +const _MIN_ANIMATION_DURATION = 2000; // msec +const _MAX_ANIMATION_DURATION = 5000; // msec + +var MapWalker = GObject.registerClass({ + Signals: { + 'gone-to': { } + } +}, class MapWalker extends GObject.Object { + + _init(place, mapView) { + this.place = place; + this._mapView = mapView; + this._view = mapView.view; + this._boundingBox = this._createBoundingBox(this.place); + super._init(); + } + + _createBoundingBox(place) { + if (place.bounding_box !== null) { + return new BoundingBox.BoundingBox({ top: place.bounding_box.top, + bottom: place.bounding_box.bottom, + left: place.bounding_box.left, + right: place.bounding_box.right }); + } else { + return null; + } + } + + // Zoom to the maximal zoom-level that fits the place type + zoomToFit() { + let zoom; + + if (this._boundingBox !== null && this._boundingBox.isValid()) { + zoom = this._mapView.getZoomLevelFittingBBox(this._boundingBox); + } else if (this.place.initialZoom) { + zoom = this.place.initialZoom; + } else { + switch (this.place.place_type) { + case Geocode.PlaceType.STREET: + zoom = 16; + break; + case Geocode.PlaceType.TOWN: + zoom = 11; + break; + case Geocode.PlaceType.COUNTRY: + zoom = 6; + break; + default: + zoom = this._view.max_zoom_level; + break; + } + } + + this._view.zoom_level = zoom; + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + } + + goTo(animate, linear) { + Utils.debug('Going to ' + [this.place.name, + this.place.location.latitude, + this.place.location.longitude].join(' ')); + this._mapView.emit('going-to'); + + if (!animate) { + this._view.center_on(this.place.location.latitude, + this.place.location.longitude); + this.emit('gone-to'); + return; + } + + let fromLocation = new Location.Location({ latitude: this._view.get_center_latitude(), + longitude: this._view.get_center_longitude() }); + this._updateGoToDuration(fromLocation); + + if (linear) { + this._view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + Utils.once(this._view, 'animation-completed', + this.zoomToFit.bind(this)); + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + } else { + /* Lets first ensure that both current and destination location are visible + * before we start the animated journey towards destination itself. We do this + * to create the zoom-out-then-zoom-in effect that many map implementations + * do. This not only makes the go-to animation look a lot better visually but + * also give user a good idea of where the destination is compared to current + * location. + */ + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_CUBIC; + this._ensureVisible(fromLocation); + + Utils.once(this._view, 'animation-completed', () => { + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_OUT_CUBIC; + this._view.go_to(this.place.location.latitude, + this.place.location.longitude); + + Utils.once(this._view, 'animation-completed::go-to', () => { + this.zoomToFit(); + this._view.goto_animation_mode = Clutter.AnimationMode.EASE_IN_OUT_CUBIC; + this.emit('gone-to'); + }); + }); + } + } + + _ensureVisible(fromLocation) { + let visibleBox = null; + + if (this._boundingBox !== null && this._boundingBox.isValid()) { + visibleBox = this._boundingBox.copy(); + + visibleBox.extend(fromLocation.latitude, fromLocation.longitude); + } else { + visibleBox = new BoundingBox.BoundingBox({ left: 180, + right: -180, + bottom: 90, + top: -90 }); + + [fromLocation, this.place.location].forEach((location) => { + visibleBox.left = Math.min(visibleBox.left, location.longitude); + visibleBox.right = Math.max(visibleBox.right, location.longitude); + visibleBox.bottom = Math.min(visibleBox.bottom, location.latitude); + visibleBox.top = Math.max(visibleBox.top, location.latitude); + }); + } + + let [lon, lat] = visibleBox.getCenter(); + + this._view.zoom_level = this._mapView.getZoomLevelFittingBBox(visibleBox); + this._view.go_to(lat, lon); + } + + _boxCovers(coverBox) { + if (this._boundingBox === null) + return false; + + if (coverBox.left > this._boundingBox.left) + return false; + + if (coverBox.right < this._boundingBox.right) + return false; + + if (coverBox.top < this._boundingBox.top) + return false; + + if (coverBox.bottom > this._boundingBox.bottom) + return false; + + return true; + } + + _updateGoToDuration(fromLocation) { + let toLocation = this.place.location; + + let distance = fromLocation.get_distance_from(toLocation); + let duration = (distance / _MAX_DISTANCE) * _MAX_ANIMATION_DURATION; + + // Clamp duration + duration = Math.max(_MIN_ANIMATION_DURATION, + Math.min(duration, _MAX_ANIMATION_DURATION)); + + // We divide by two because Champlain treats both go_to and + // ensure_visible as 'goto' journeys with its own duration. + this._view.goto_animation_duration = duration / 2; + } +}); diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 00000000..49706a85 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,22 @@ +script_conf = configuration_data() +script_conf.set('GJS', gjs.path()) +script_conf.set('PACKAGE_VERSION', version) +script_conf.set('libdir', libdir) +script_conf.set('prefix', prefix) + +configure_file( + input: app_id + '.in', + output: app_id, + configuration: script_conf, + install: true, + install_dir: pkgdatadir +) + +gnome.compile_resources( + app_id + '.src', + app_id + '.src.gresource.xml', + gresource_bundle: true, + install: true, + install_dir: pkgdatadir, + source_dir: 'geojson-vt' +) diff --git a/src/org.gnome.Maps.in b/src/org.gnome.Maps.in new file mode 100755 index 00000000..1cd74738 --- /dev/null +++ b/src/org.gnome.Maps.in @@ -0,0 +1,5 @@ +#!@GJS@ +imports.package.start({ name: "gnome-maps", + version: "@PACKAGE_VERSION@", + prefix: "@prefix@", + libdir: "@libdir@" }); diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml new file mode 100644 index 00000000..70877dee --- /dev/null +++ b/src/org.gnome.Maps.src.gresource.xml @@ -0,0 +1,128 @@ + + + + accountListBox.js + address.js + application.js + boundingBox.js + checkIn.js + checkInDialog.js + color.js + contactPlace.js + contextMenu.js + constants.js + epaf.js + exportViewDialog.js + favoritesPopover.js + foursquareBackend.js + foursquareGoaAuthorizer.js + geoclue.js + geocode.js + geoJSONShapeLayer.js + geoJSONSource.js + geoJSONStyle.js + gfx.js + gpxShapeLayer.js + graphHopper.js + graphHopperGeocode.js + graphHopperTransit.js + headerBar.js + hvt.js + http.js + instructionRow.js + kmlShapeLayer.js + layersPopover.js + location.js + locationServiceDialog.js + longPrintLayout.js + main.js + mainWindow.js + mapBubble.js + mapMarker.js + mapSource.js + mapView.js + mapWalker.js + osmAccountDialog.js + osmConnection.js + osmEdit.js + osmEditDialog.js + osmNames.js + osmTypeSearchEntry.js + osmTypeListRow.js + osmTypePopover.js + osmTypes.js + osmUtils.js + overpass.js + photonGeocode.js + photonParser.js + place.js + placeBar.js + placeButtons.js + placeDialog.js + placeEntry.js + placeFormatter.js + placeIcons.js + placeListRow.js + placeMarker.js + placePopover.js + placeStore.js + placeView.js + placeViewImage.js + printLayout.js + printOperation.js + route.js + routeEntry.js + routeQuery.js + routingDelegator.js + searchPopover.js + serviceBackend.js + settings.js + sendToDialog.js + service.js + shapeLayer.js + shortPrintLayout.js + sidebar.js + socialPlace.js + socialPlaceListBox.js + socialPlaceMatcher.js + storedRoute.js + time.js + togeojson/togeojson.js + transit.js + transitArrivalMarker.js + transitArrivalRow.js + transitBoardMarker.js + transitItineraryRow.js + transitLegRow.js + transitMoreRow.js + transitOptions.js + transitOptionsPanel.js + transitPlan.js + transitPrintLayout.js + transitRouter.js + transitRouteLabel.js + transitStopRow.js + transitWalkMarker.js + translations.js + turnPointMarker.js + userLocationMarker.js + utils.js + urls.js + wikipedia.js + xmldom/dom.js + xmldom/domparser.js + xmldom/sax.js + zoomInDialog.js + clip.js + convert.js + index.js + simplify.js + tile.js + transform.js + wrap.js + transitplugins/goMetro.js + transitplugins/opendataCH.js + transitplugins/openTripPlanner.js + transitplugins/resrobot.js + + diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js new file mode 100644 index 00000000..d522e456 --- /dev/null +++ b/src/osmAccountDialog.js @@ -0,0 +1,219 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const WebKit2 = imports.gi.WebKit2; + +const Application = imports.application; +const Utils = imports.utils; + +var Response = { + SIGNED_IN: 0 +}; + +var OSMAccountDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-account-dialog.ui', + InternalChildren: ['stack', + 'emailEntry', + 'passwordEntry', + 'signInButton', + 'signInSpinner', + 'signUpLinkButton', + 'resetPasswordLabel', + 'verifyGrid', + 'verificationEntry', + 'verifyButton', + 'verificationFailedLabel', + 'signedInUserLabel', + 'signOutButton'], +}, class OSMAccountDialog extends Gtk.Dialog { + + _init(params) { + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + this._closeOnSignIn = params.closeOnSignIn; + delete params.closeOnSignIn; + + super._init(params); + + this._emailEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('changed', + this._onCredentialsChanged.bind(this)); + this._passwordEntry.connect('activate', + this._onPasswordActivated.bind(this)); + this._signInButton.connect('clicked', + this._onSignInButtonClicked.bind(this)); + this._verifyButton.connect('clicked', + this._onVerifyButtonClicked.bind(this)); + this._verificationEntry.connect('changed', + this._onVerificationEntryChanged.bind(this)); + this._verificationEntry.connect('activate', + this._onVerificationEntryActivated.bind(this)); + this._signOutButton.connect('clicked', + this._onSignOutButtonClicked.bind(this)); + + /* if the user is logged in, show the logged-in view */ + if (Application.osmEdit.isSignedIn) { + this._signedInUserLabel.label = Application.osmEdit.username; + this._stack.visible_child_name = 'logged-in'; + } + + /* initialize verification web view, we do it programmatically rather + * declare it in the .ui file to be able to enable WebKit sandboxing + */ + let webContext = WebKit2.WebContext.get_default(); + + webContext.set_sandbox_enabled(true); + this._verifyView = WebKit2.WebView.new_with_context(webContext); + this._verifyView.visible = true; + this._verifyView.halign = Gtk.Align.FILL; + this._verifyView.height_request = 150; + this._verifyGrid.attach(this._verifyView, 0, 0, 1, 1); + } + + _onCredentialsChanged() { + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + // make sign in button sensitive if credential have been entered + this._signInButton.sensitive = + email && email.length > 0 && password && password.length > 0; + } + + _onSignInButtonClicked() { + this._performSignIn(); + } + + _onPasswordActivated() { + /* if username and password was entered, proceed with sign-in */ + let email = this._emailEntry.text; + let password = this._passwordEntry.text; + + if (email && email.length > 0 && password && password.length > 0) + this._performSignIn(); + } + + _performSignIn() { + /* turn on signing in spinner and desensisize credential entries */ + this._signInSpinner.visible = true; + this._signInButton.sensitive = false; + this._emailEntry.sensitive = false; + this._passwordEntry.sensitive = false; + this._signUpLinkButton.visible = false; + + Application.osmEdit.performOAuthSignIn(this._emailEntry.text, + this._passwordEntry.text, + this._onOAuthSignInPerformed.bind(this)); + } + + _onOAuthSignInPerformed(success, verificationPage) { + if (success) { + /* switch to the verification view and show the verification + page */ + this._verifyView.load_html(verificationPage, + 'https://www.openstreetmap.org/'); + this._stack.visible_child_name = 'verify'; + } else { + /* clear password entry */ + this._passwordEntry.text = ''; + /* show the password reset link */ + this._resetPasswordLabel.visible = true; + } + + this._signInSpinner.visible = false; + /* re-sensisize credential entries */ + this._emailEntry.sensitive = true; + this._passwordEntry.sensitive = true; + } + + _onVerifyButtonClicked() { + this._performVerification(); + } + + _performVerification() { + /* allow copying the leading space between the "The verification is" + label and the code */ + let verificationCode = this._verificationEntry.text.trim(); + + /* Since the text shown on OSM's OAuth authorization verification form + is a bit unclear with a trailing period after the verification code, + let's strip that off if the user copied that over. */ + if (verificationCode.charAt(verificationCode.length - 1) === '.') { + verificationCode = verificationCode.slice(0, -1); + } + + Application.osmEdit.requestOAuthAccessToken(verificationCode, + this._onOAuthAccessTokenRequested.bind(this)); + } + + _onVerificationEntryChanged() { + this._verifyButton.sensitive = + this._verificationEntry.text && + this._verificationEntry.text.length > 0; + } + + _onVerificationEntryActivated() { + /* proceed with verification if a code has been entered */ + let verificationCode = this._verificationEntry.text; + + if (verificationCode && verificationCode.length > 0) + this._performVerification(); + } + + _onOAuthAccessTokenRequested(success, errorMessage) { + if (success) { + /* update the username label */ + this._signedInUserLabel.label = Application.osmEdit.username; + + if (this._closeOnSignIn) { + this.response(Response.SIGNED_IN); + } else { + /* switch to the logged in view and reset the state in case + the user signs out and start over again */ + this._resetPasswordLabel.visible = false; + this._verificationFailedLabel = false; + this._signUpLinkButton.visible = true; + this._stack.visible_child_name = 'logged-in'; + } + } else { + if (errorMessage) + Utils.showDialog(errorMessage, Gtk.MessageType.ERROR, this); + /* switch back to the sign-in view, and show a label indicating + that verification failed */ + this._resetPasswordLabel.visible = false; + this._signUpLinkButton.visible = false; + this._verificationFailedLabel.visible = true; + this._signInButton.sensitive = true; + this._stack.visible_child_name = 'sign-in'; + } + /* reset verification code entry */ + this._verificationEntry.text = ''; + } + + _onSignOutButtonClicked() { + Application.osmEdit.signOut(); + this._stack.visible_child_name = 'sign-in'; + } +}); diff --git a/src/osmConnection.js b/src/osmConnection.js new file mode 100644 index 00000000..6bb7026c --- /dev/null +++ b/src/osmConnection.js @@ -0,0 +1,458 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Maps = imports.gi.GnomeMaps; +const Rest = imports.gi.Rest; +const Secret = imports.gi.Secret; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +const BASE_URL = 'https://api.openstreetmap.org/api'; +const API_VERSION = '0.6'; + +/* OAuth constants */ +const CONSUMER_KEY = '2lbpDoED0ZspGssTBAJ8zOCtrtmUoX4KnmZUIWIK'; +const CONSUMER_SECRET = 'AO9BhDl9sJ33DjaZgQmYcNIuM3ZSml4xtugai6gE'; +const OAUTH_ENDPOINT_URL = 'https://www.openstreetmap.org/oauth'; +const LOGIN_URL = 'https://www.openstreetmap.org/login'; + +const SECRET_SCHEMA = new Secret.Schema("org.gnome.Maps", + Secret.SchemaFlags.NONE, + { + } +); + +var OSMConnection = class OSMConnection { + + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + + /* OAuth proxy used for making OSM uploads */ + this._callProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + BASE_URL + '/' + API_VERSION, + false); + Maps.osm_init(); + } + + getOSMObject(type, id, callback, cancellable) { + let url = this._getQueryUrl(type, id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + cancellable.connect(() => { + this._session.cancel_message(request, Soup.STATUS_CANCELLED); + }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + callback(false, message.status_code, null, type, null); + return; + } + + try { + let object = Maps.osm_parse (message.response_body.data, + message.response_body.length); + callback(true, message.status_code, object, type, null); + } catch (e) { + Utils.debug(e); + callback(false, message.status_code, null, type, e); + } + }); + } + + _getQueryUrl(type, id) { + return BASE_URL + '/' + API_VERSION + '/' + type + '/' + id; + } + + openChangeset(comment, callback) { + /* we assume that this would only be called if there's already been an + OAuth access token enrolled, so, if the currently instantiated + proxy instance doesn't have a token set, we could safely count on + it being present in the keyring */ + if (this._callProxy.get_token() === null) { + Secret.password_lookup(SECRET_SCHEMA, {}, null, (s, res) => { + this._onPasswordLookedUp(res, + comment, + callback); + }); + } else { + this._doOpenChangeset(comment, callback); + } + } + + _onPasswordLookedUp(result, comment, callback) { + let password = Secret.password_lookup_finish(result); + + if (password) { + let token = password.split(':')[0]; + let secret = password.split(':')[1]; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + this._doOpenChangeset(comment, callback); + } else { + callback(false, null, null); + } + } + + _doOpenChangeset(comment, callback) { + let changeset = + Maps.OSMChangeset.new(comment, 'gnome-maps ' + pkg.version); + let xml = changeset.serialize(); + + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + call.set_method('PUT'); + call.set_function('/changeset/create'); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetOpened(call, callback); }); + } + + _onChangesetOpened(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + let changesetId = parseInt(call.get_payload()); + callback(true, call.get_status_code(), changesetId); + } + + uploadObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('PUT'); + call.set_function(this._getCreateOrUpdateFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectUploaded(call, callback); }); + } + + _onObjectUploaded(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + deleteObject(object, type, changeset, callback) { + object.changeset = changeset; + + let xml = object.serialize(); + let call = Maps.OSMOAuthProxyCall.new(this._callProxy, xml); + + call.set_method('DELETE'); + call.set_function(this._getDeleteFunction(object, type)); + + call.invoke_async(null, (call, res, userdata) => + { this._onObjectDeleted(call, callback); }); + } + + _onObjectDeleted(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + closeChangeset(changesetId, callback) { + let call = this._callProxy.new_call(); + call.set_method('PUT'); + call.set_function(this._getCloseChangesetFunction(changesetId)); + + call.invoke_async(null, (call, res, userdata) => + { this._onChangesetClosed(call, callback); }); + } + + _onChangesetClosed(call, callback) { + if (call.get_status_code() !== Soup.Status.OK) { + callback(false, call.get_status_code(), null); + return; + } + + callback(true, call.get_status_code(), call.get_payload()); + } + + _getCloseChangesetFunction(changesetId) { + return '/changeset/' + changesetId + '/close'; + } + + _getCreateOrUpdateFunction(object, type) { + if (object.id) + return type + '/' + object.id; + else + return type + '/create'; + } + + _getDeleteFunction(object, type) { + return type + '/' + id; + } + + requestOAuthToken(callback) { + /* OAuth proxy used for enrolling access tokens */ + this._oauthProxy = Rest.OAuthProxy.new(CONSUMER_KEY, CONSUMER_SECRET, + OAUTH_ENDPOINT_URL, false); + this._oauthProxy.request_token_async('request_token', 'oob', (p, error, w, u) => { + this._onRequestOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onRequestOAuthToken(error, callback) { + if (error) { + Utils.debug(error); + callback(false); + return; + } + + this._oauthToken = this._oauthProxy.get_token(); + this._oauthTokenSecret = this._oauthProxy.get_token_secret(); + callback(true); + } + + authorizeOAuthToken(username, password, callback) { + /* get login session ID */ + let loginUrl = LOGIN_URL + '?cookie_test=true'; + let uri = new Soup.URI(loginUrl); + let msg = new Soup.Message({method: 'GET', uri: uri}); + + this._session.queue_message(msg, (obj, message) => { + this._onLoginFormReceived(message, username, password, callback); + }); + } + + _onLoginFormReceived(message, username, password, callback) { + if (message.status_code !== Soup.Status.OK) { + callback(false); + return; + } + + let osmSessionID = + this._extractOSMSessionID(message.response_headers); + let osmSessionToken = + this._extractToken(message.response_body.data); + + if (osmSessionID === null || osmSessionToken === null) { + callback(false, null); + return; + } + + this._login(username, password, osmSessionID, osmSessionToken, callback); + } + + _login(username, password, sessionId, token, callback) { + /* post login form */ + let msg = Soup.form_request_new_from_hash('POST', LOGIN_URL, + {username: username, + password: password, + referer: '/', + commit: 'Login', + authenticity_token: token}); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', '_osm_session=' + sessionId); + msg.flags |= Soup.MessageFlags.NO_REDIRECT; + + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.MOVED_TEMPORARILY) + this._fetchAuthorizeForm(username, sessionId, callback); + else + callback(false, null); + }); + + } + + _fetchAuthorizeForm(username, sessionId, callback) { + let auth = '/authorize?oauth_token='; + let authorizeUrl = OAUTH_ENDPOINT_URL + auth + this._oauthToken; + let uri = new Soup.URI(authorizeUrl); + let msg = new Soup.Message({uri: uri, method: 'GET'}); + + msg.request_headers.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + this._session.queue_message(msg, (obj, message) => { + if (message.status_code === Soup.Status.OK) { + let token = this._extractToken(message.response_body.data); + this._postAuthorizeForm(username, sessionId, token, callback); + } else { + callback(false, null); + } + }); + } + + _postAuthorizeForm(username, sessionId, token, callback) { + let authorizeUrl = OAUTH_ENDPOINT_URL + '/authorize'; + let msg = Soup.form_request_new_from_hash('POST', authorizeUrl, { + oauth_token: this._oauthToken, + oauth_callback: '', + authenticity_token: token, + allow_write_api: '1', + commit: 'Save changes' + }); + let requestHeaders = msg.request_headers; + + requestHeaders.append('Content-Type', + 'application/x-www-form-urlencoded'); + requestHeaders.append('Cookie', + '_osm_session=' + sessionId + + '; _osm_username=' + username); + + this._session.queue_message(msg, (obj, message) => { + if (msg.status_code === Soup.Status.OK) { + callback(true, message.response_body.data); + } else + callback(false, null); + }); + } + + requestOAuthAccessToken(code, callback) { + this._oauthProxy.access_token_async('access_token', code, (p, error, w, data) => { + this._onAccessOAuthToken(error, callback); + }, this._oauthProxy); + } + + _onAccessOAuthToken(error, callback) { + if (error) { + callback(false); + return; + } + + let token = this._oauthProxy.token; + let secret = this._oauthProxy.token_secret; + + this._callProxy.token = token; + this._callProxy.token_secret = secret; + Secret.password_store(SECRET_SCHEMA, {}, Secret.COLLECTION_DEFAULT, + "OSM OAuth access token and secret", + this._oauthProxy.token + ":" + + this._oauthProxy.token_secret, null, + (source, result, userData) => { + this._onPasswordStored(result, callback); + }); + } + + _onPasswordStored(result, callback) { + let res = false; + let errorMessage; + if (result) { + try { + res = Secret.password_store_finish(result); + } catch (error) { + errorMessage = error.message; + } + } + callback(res, errorMessage); + } + + signOut() { + /* clear token on call proxy, so it will use a new token if the user + signs in again (with a new access token) during this running + session */ + this._callProxy.token = null; + this._callProxy.token_secret = null; + + Secret.password_clear(SECRET_SCHEMA, {}, null, + this._onPasswordCleared.bind(this)); + } + + _onPasswordCleared(source, result) { + Secret.password_clear_finish(result); + } + + /* extract the session ID from the login form response headers */ + _extractOSMSessionID(responseHeaders) { + let cookie = responseHeaders.get('Set-Cookie'); + + if (cookie === null) + return null; + + let cookieParts = cookie.split(';'); + for (let cookiePart of cookieParts) { + let kvPair = cookiePart.trim().split('='); + let kv = kvPair; + + if (kv.length !== 2) { + continue; + } else if (kv[0] === '_osm_session') { + return kv[1]; + } + } + + return null; + } + + /* extract the authenticity token from the hidden input field of the login + form */ + _extractToken(messageBody) { + let regex = /.*authenticity_token.*value=\"([^\"]+)\".*/; + let lines = messageBody.split('\n'); + + for (let line of lines) { + let match = line.match(regex); + + if (match && match.length === 2) + return match[1]; + } + + return null; + } +}; + +/* + * Gets a status message (usually for an error case) + * to show for a given OSM server response. + */ +function getStatusMessage(statusCode) { + switch (statusCode) { + case Soup.Status.IO_ERROR: + case Soup.Status.UNAUTHORIZED: + /* setting the status in session.cancel_message still seems + to always give status IO_ERROR */ + return _("Incorrect user name or password"); + case Soup.Status.OK: + return _("Success"); + case Soup.Status.BAD_REQUEST: + return _("Bad request"); + case Soup.Status.NOT_FOUND: + return _("Object not found"); + case Soup.Status.CONFLICT: + return _("Conflict, someone else has just modified the object"); + case Soup.Status.GONE: + return _("Object has been deleted"); + case Soup.Status.PRECONDITION_FAILED: + return _("Way or relation refers to non-existing children"); + default: + return null; + } +} diff --git a/src/osmEdit.js b/src/osmEdit.js new file mode 100644 index 00000000..fa1a7e5d --- /dev/null +++ b/src/osmEdit.js @@ -0,0 +1,193 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Application = imports.application; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMConnection = imports.osmConnection; +const Utils = imports.utils; + +/* minimum zoom level at which to offer adding a location */ +var MIN_ADD_LOCATION_ZOOM_LEVEL = 16; + +var OSMEdit = class OSMEdit { + + constructor() { + this._osmConnection = new OSMConnection.OSMConnection(); + this._osmObject = null; // currently edited object + this._username = Application.settings.get('osm-username'); + this._isSignedIn = this._username !== null && this._username.length > 0; + } + + get object() { + return this._osmObject; + } + + createEditDialog(parentWindow, place) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + place: place + }); + + return dialog; + } + + createEditNewDialog(parentWindow, latitude, longitude) { + let dialog = new OSMEditDialog.OSMEditDialog({ + transient_for: parentWindow, + modal: true, + addLocation: true, + latitude: latitude, + longitude: longitude + }); + + return dialog; + } + + createAccountDialog(parentWindow, closeOnSignIn) { + let dialog = new OSMAccountDialog.OSMAccountDialog({ + transient_for: parentWindow, + modal: true, + closeOnSignIn: closeOnSignIn + }); + + return dialog; + } + + fetchObject(place, callback, cancellable) { + let osmType = Utils.osmTypeToString(place.osmType); + + /* reset currently edited object */ + this._osmObject = null; + this._osmConnection.getOSMObject(osmType, place.osm_id, + (function(success, status, osmObject, osmType) { + callback(success, status, osmObject, osmType); + }), cancellable); + } + + uploadObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._uploadObject.bind(this), callback); + } + + _onChangesetOpened(success, status, changesetId, object, type, action, callback) { + if (success) { + let osmType = Utils.osmTypeToString(type); + action(object, osmType, changesetId, callback); + } else { + callback(false, status); + } + } + + _openChangeset(object, type, comment, action, callback) { + this._osmConnection.openChangeset(comment, (success, status, changesetId) => { + this._onChangesetOpened(success, status, changesetId, object, type, action, callback); + }); + } + + _onObjectUploaded(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _uploadObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.uploadObject(object, type, changesetId, (success, status, response) => { + this._onObjectUploaded(success, status, response, changesetId, callback); + }); + } + + deleteObject(object, type, comment, callback) { + this._openChangeset(object, type, comment, + this._deleteObject.bind(this), callback); + } + + _onObjectDeleted(success, status, response, changesetId, callback) { + if (success) + this._closeChangeset(changesetId, callback); + else + callback(false, status); + } + + _deleteObject(object, type, changesetId, callback) { + this._osmObject = object; + this._osmConnection.deleteObject(object, type, changesetId, (success, status, response) => { + this._onObjectDeleted(success, status, response, changesetId, callback); + }); + } + + _closeChangeset(changesetId, callback) { + this._osmConnection.closeChangeset(changesetId, callback); + } + + performOAuthSignIn(username, password, callback) { + this._osmConnection.requestOAuthToken((success) => { + if (success) + this._onOAuthTokenRequested(username, password, callback); + else + callback(false, null); + }); + } + + _onOAuthTokenRequested(username, password, callback) { + /* keep track of authorizing username */ + this._username = username; + this._osmConnection.authorizeOAuthToken(username, password, callback); + } + + requestOAuthAccessToken(code, callback) { + this._osmConnection.requestOAuthAccessToken(code, (success, token) => { + this._onOAuthAccessTokenRequested(success, callback); + }); + } + + _onOAuthAccessTokenRequested(success, callback) { + if (success) { + this._isSignedIn = true; + Application.settings.set('osm-username', this._username); + } else { + /* clear out username if verification was unsuccessful */ + this._username = null; + } + + callback(success); + } + + signOut() { + this._username = null; + this._isSignedIn = false; + + Application.settings.set('osm-username', ''); + this._osmConnection.signOut(); + } + + get isSignedIn() { + return this._isSignedIn; + } + + get username() { + return this._username; + } +}; diff --git a/src/osmEditDialog.js b/src/osmEditDialog.js new file mode 100644 index 00000000..7b28d051 --- /dev/null +++ b/src/osmEditDialog.js @@ -0,0 +1,907 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const Maps = imports.gi.GnomeMaps; +const OSMConnection = imports.osmConnection; +const OSMTypes = imports.osmTypes; +const OSMTypeSearchEntry = imports.osmTypeSearchEntry; +const OSMUtils = imports.osmUtils; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +var Response = { + UPLOADED: 0, + DELETED: 1, + CANCELLED: 2, + ERROR: 3 +}; + +/* + * enumeration representing + * the different OSM editing + * field types + */ +const EditFieldType = { + TEXT: 0, + INTEGER: 1, + UNSIGNED_INTEGER: 2, + COMBO: 3, + ADDRESS: 4 +}; + +const _WIKI_BASE = 'https://wiki.openstreetmap.org/wiki/Key:'; + +var _osmWikipediaRewriteFunc = function(text) { + let wikipediaArticleFormatted = OSMUtils.getWikipediaOSMArticleFormatFromUrl(text); + + /* if the entered text is a Wikipedia link, + * substitute it with the OSM-formatted Wikipedia article tag */ + if (wikipediaArticleFormatted) + return wikipediaArticleFormatted; + else + return text; +}; + +/* Reformat a phone number string if it looks like a tel: URI + * strip off the leading tel: protocol string and trailing parameters, + * following a ; + * otherwise return the string unmodified */ +var _osmPhoneRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'tel') { + let afterTel = text.replace('tel:', ''); + + return Soup.uri_decode(afterTel.split(';')[0]); + } else { + return text; + } +}; + +/* Reformat an e-mail address if it it looks like a mailto: URI + * strip off the leading mailto: protocol string and trailing parameters, + * following a ? + * otherwise return the string unmodified + */ +var _osmEmailRewriteFunc = function(text) { + if (GLib.uri_parse_scheme(text) === 'mailto') { + let afterMailto = text.replace('mailto:', ''); + + return Soup.uri_decode(afterMailto.split('?')[0]); + } else { + return text; + } +} + +/* + * specification of OSM edit fields + * name: the label for the edit field (translatable) + * tag: the OSM tag key value + * type: the field type (determines editing field type) + * rewriteFunc: a rewrite function taking a string argument + * (only used for TEXT fields) + * placeHolder: set a text place holder to act as example input + * (only used for TEXT fields) + * includeHelp: when true turn the name label to a link to the + * OSM wiki for tags. + * options: The options for the combo box (only used for COMBO fields) + * hint: a hint text to show in a popover displayed by a hint button + * (for TEXT and INTEGER fields) + * subtags: Used by a complex composite OSM tag. + * rows: Number of rows needed if != 1 (Currently only for ADDRESS). + */ +const OSM_FIELDS = [ + { + name: _("Name"), + tag: 'name', + type: EditFieldType.TEXT, + hint: _("The official name. This is typically what appears on signs.") + }, + { + name: _("Address"), + tag: 'addr', + subtags: ['addr:street', 'addr:housenumber', + 'addr:postcode', 'addr:city'], + type: EditFieldType.ADDRESS, + rows: 2 + }, + { + name: _("Website"), + tag: 'website', + type: EditFieldType.TEXT, + validate: Utils.isValidWebsite, + validateError: _("This is not a valid URL. Make sure to include http:// or https://."), + hint: _("The official website. Try to use the most basic form " + + "of a URL i.e. http://example.com instead of " + + "http://example.com/index.html.") + }, + { + name: _("Phone"), + tag: 'phone', + type: EditFieldType.TEXT, + rewriteFunc: this._osmPhoneRewriteFunc, + hint: _("Phone number. Use the international format, " + + "starting with a + sign. Beware of local privacy " + + "laws, especially for private phone numbers.") + }, + { + name: _("E-mail"), + tag: 'email', + type: EditFieldType.TEXT, + validate: Utils.isValidEmail, + rewriteFunc: this._osmEmailRewriteFunc, + validateError: _("This is not a valid e-mail address. Make sure to not include the mailto: protocol prefix."), + hint: _("Contact e-mail address for inquiries. " + + "Add only email addresses that are intended to be publicly used.") + }, + { + name: _("Wikipedia"), + tag: 'wikipedia', + type: EditFieldType.TEXT, + validate: Wikipedia.isValidWikipedia, + rewriteFunc: this._osmWikipediaRewriteFunc, + hint: _("The format used should include the language code " + + "and the article title like “en:Article title”.") + }, + { + name: _("Opening hours"), + tag: 'opening_hours', + type: EditFieldType.TEXT, + placeHolder: 'Mo-Fr 08:00-20:00; Sa-Su 10:00-14:00', + includeHelp: true, + hint: _("See the link in the label for help on format.") + }, + { + name: _("Population"), + tag: 'population', + type: EditFieldType.UNSIGNED_INTEGER + }, + { + name: _("Altitude"), + tag: 'ele', + type: EditFieldType.INTEGER, + hint: _("Elevation (height above sea level) of a point in metres.") + }, + { + name: _("Wheelchair access"), + tag: 'wheelchair', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['limited', _("Limited")], + ['designated', _("Designated")]] + }, + { + name: _("Internet access"), + tag: 'internet_access', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['wlan', _("Wi-Fi")], + ['wired', _("Wired")], + ['terminal', _("Terminal")], + ['service', _("Service")]] + }, + { + name: _("Takeaway"), + tag: 'takeaway', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")], + ['only', _("Only")]] + }, + { + name: _("Religion"), + tag: 'religion', + type: EditFieldType.COMBO, + options: [['animist', _("Animism")], + ['bahai', _("Bahá’í")], + ['buddhist', _("Buddhism")], + ['caodaism', _("Caodaism")], + ['christian', _("Christianity")], + ['confucian', _("Confucianism")], + ['hindu', _("Hinduism")], + ['jain', _("Jainism")], + ['jewish', _("Judaism")], + ['muslim', _("Islam")], + ['multifaith', _("Multiple Religions")], + ['pagan', _("Paganism")], + ['pastafarian', _("Pastafarianism")], + ['scientologist', _("Scientology")], + ['shinto', _("Shinto")], + ['sikh', _("Sikhism")], + ['spiritualist', _("Spiritualism")], + ['taoist', _("Taoism")], + ['unitarian_universalist', _("Unitarian Universalism")], + ['voodoo', _("Voodoo")], + ['yazidi', _("Yazidism")], + ['zoroastrian', _("Zoroastrianism")]] + }, + { + name: _("Toilets"), + tag: 'toilets', + type: EditFieldType.COMBO, + options: [['yes', _("Yes")], + ['no', _("No")]] + }, + { + name: _("Note"), + tag: 'note', + type: EditFieldType.TEXT, + hint: _("Information used to inform other mappers about non-obvious information about an element, the author’s intent when creating it, or hints for further improvement.") + }]; + +const OSMEditAddress = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-address.ui', + Children: [ 'street', + 'number', + 'post', + 'city' ], +}, class OSMEditAddress extends Gtk.Grid { + + _init(params) { + let street = params.street; + delete params.street; + + let number = params.number; + delete params.number; + + let postCode = params.postCode; + delete params.postCode; + + let city = params.city; + delete params.city; + + super._init(params); + + if (street) + this.street.text = street; + + if (number) + this.number.text = number; + + if (postCode) + this.post.text = postCode; + + if (city) + this.city.text = city; + } +}); + + +var OSMEditDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-edit-dialog.ui', + InternalChildren: [ 'cancelButton', + 'backButton', + 'nextButton', + 'stack', + 'editorGrid', + 'commentTextView', + 'addFieldPopoverGrid', + 'addFieldButton', + 'typeSearchGrid', + 'typeLabel', + 'typeButton', + 'typeValueLabel', + 'recentTypesLabel', + 'recentTypesListBox', + 'hintPopover', + 'hintLabel', + 'headerBar'], +}, class OSMEditDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + delete params.place; + + this._addLocation = params.addLocation; + delete params.addLocation; + + this._latitude = params.latitude; + delete params.latitude; + + this._longitude = params.longitude; + delete params.longitude; + + /* This is a construct-only property and cannot be set by GtkBuilder */ + params.use_header_bar = true; + + super._init(params); + + /* I could not get this widget working from within the widget template + * this results in a segfault. The widget definition is left in-place, + * but commented-out in the template file */ + this._typeSearch = new OSMTypeSearchEntry.OSMTypeSearchEntry(); + this._typeSearchGrid.attach(this._typeSearch, 0, 0, 1, 1); + this._typeSearch.visible = true; + this._typeSearch.can_focus = true; + + let typeSearchPopover = this._typeSearch.popover; + typeSearchPopover.connect('selected', (o, k, v, t) => { + this._onTypeSelected(o, k, v, t); + }); + + this._cancellable = new Gio.Cancellable(); + this._cancellable.connect(() => this.response(Response.CANCELLED)); + + this.connect('delete-event', () => this._cancellable.cancel()); + + this._isEditing = false; + this._nextButton.connect('clicked', () => this._onNextClicked()); + this._cancelButton.connect('clicked', () => this._onCancelClicked()); + this._backButton.connect('clicked', () => this._onBackClicked()); + this._typeButton.connect('clicked', () => this._onTypeClicked()); + + if (this._addLocation) { + this._headerBar.title = C_("dialog title", "Add to OpenStreetMap"); + this._typeLabel.visible = true; + this._typeButton.visible = true; + + /* the OSMObject ID, version, and changeset ID is unknown for now */ + let newNode = + Maps.OSMNode.new(0, 0, 0, this._longitude, this._latitude); + /* set a placeholder name tag to always get a name entry for new + * locations */ + newNode.set_tag('name', ''); + this._loadOSMData(newNode); + this._isEditing = true; + this._osmType = Geocode.PlaceOsmType.NODE; + } else { + this._osmType = this._place.osmType; + Application.osmEdit.fetchObject(this._place, + this._onObjectFetched.bind(this), + this._cancellable); + } + + /* store original title of the dialog to be able to restore it when + * coming back from type selection */ + this._originalTitle = this._headerBar.title; + this._updateRecentTypesList(); + + this._recentTypesListBox.set_header_func((row, previous) => { + if (previous) + row.set_header(new Gtk.Separator()); + }); + + this._recentTypesListBox.connect('row-activated', (listbox, row) => { + this._onTypeSelected(null, row._key, row._value, row._title); + }); + } + + _onNextClicked() { + if (this._isEditing) { + this._switchToUpload(); + } else { + this._stack.visible_child_name = 'loading'; + this._nextButton.sensitive = false; + this._backButton.sensitive = false; + + let comment = this._commentTextView.buffer.text; + Application.osmEdit.uploadObject(this._osmObject, + this._osmType, comment, + this._onObjectUploaded.bind(this)); + } + } + + _onTypeClicked() { + this._cancelButton.visible = false; + this._backButton.visible = true; + this._nextButton.visible = false; + this._headerBar.title = _("Select Type"); + this._stack.visible_child_name = 'select-type'; + } + + _onTypeSelected(popover, key, value, title) { + this._typeValueLabel.label = title; + this._updateType(key, value); + + if (popover) + popover.hide(); + + /* clear out type search entry */ + this._typeSearch.text = ''; + + /* go back to the editing stack page */ + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._stack.visible_child_name = 'editor'; + this._headerBar.title = this._originalTitle; + + /* update recent types store */ + OSMTypes.recentTypesStore.pushType(key, value); + + /* enable the Next button, so that it's possible to just change the type + * of an object without changing anything else */ + this._nextButton.sensitive = true; + + this._updateRecentTypesList(); + } + + _updateType(key, value) { + /* clear out any previous type-related OSM tags */ + OSMTypes.OSM_TYPE_TAGS.forEach((tag) => this._osmObject.delete_tag(tag)); + + this._osmObject.set_tag(key, value); + } + + /* update visibility and enable the type selection button if the object has + * a well-known type (based on a known set of tags) */ + _updateTypeButton() { + let numTypeTags = 0; + let lastTypeTag = null; + + for (let i = 0; i < OSMTypes.OSM_TYPE_TAGS.length; i++) { + let key = OSMTypes.OSM_TYPE_TAGS[i]; + let value = this._osmObject.get_tag(key); + + if (value != null) { + numTypeTags++; + lastTypeTag = key; + } + } + + /* if the object has none of tags set, enable the button and keep the + * pre-set "None" label */ + if (numTypeTags === 0) { + this._typeLabel.visible = true; + this._typeButton.visible = true; + } else if (numTypeTags === 1) { + let value = this._osmObject.get_tag(lastTypeTag); + let typeTitle = OSMTypes.lookupType(lastTypeTag, value); + + /* if the type tag has a value we know of, and possible has + * translations for */ + if (typeTitle != null) { + this._typeValueLabel.label = typeTitle; + this._typeLabel.visible = true; + this._typeButton.visible = true; + } + } + } + + _updateRecentTypesList() { + let recentTypes = OSMTypes.recentTypesStore.recentTypes; + + if (recentTypes.length > 0) { + let children = this._recentTypesListBox.get_children(); + + for (let i = 0; i < children.length; i++) { + this._recentTypesListBox.remove(children[i]); + } + + this._recentTypesLabel.visible = true; + this._recentTypesListBox.visible = true; + + for (let i = 0; i < recentTypes.length; i++) { + let key = recentTypes[i].key; + let value = recentTypes[i].value; + let title = OSMTypes.lookupType(key, value); + + let grid = new Gtk.Grid({visible: true, + margin_top: 6, margin_bottom: 6, + margin_start: 12, margin_end: 12}); + let label = new Gtk.Label({visible: true, halign: Gtk.Align.START, + label: title}); + + label.get_style_context().add_class('dim-label'); + + grid.attach(label, 0, 0, 1, 1); + + this._recentTypesListBox.insert(grid, -1); + + let row = this._recentTypesListBox.get_row_at_index(i); + + row._title = title; + row._key = key; + row._value = value; + } + } else { + this._recentTypesLabel.visible = false; + this._recentTypesListBox.visible = false; + } + } + + _switchToUpload() { + this._stack.set_visible_child_name('upload'); + this._nextButton.label = _("Done"); + this._cancelButton.visible = false; + this._backButton.visible = true; + this._cancelButton.visible = false; + this._isEditing = false; + this._commentTextView.grab_focus(); + } + + _onCancelClicked() { + this.response(Response.CANCELLED); + } + + _onBackClicked() { + this._backButton.visible = false; + this._cancelButton.visible = true; + this._nextButton.visible = true; + this._nextButton.label = _("Next"); + this._stack.set_visible_child_name('editor'); + this._isEditing = true; + this._commentTextView.buffer.text = ''; + this._typeSearch.text = ''; + this._headerBar.title = this._originalTitle; + } + + _onObjectFetched(success, status, osmObject, osmType, error) { + if (success) { + this._isEditing = true; + this._loadOSMData(osmObject); + } else { + this._showError(status, error); + } + } + + _onObjectUploaded(success, status) { + if (success) { + this.response(Response.UPLOADED); + } else { + this._showError(status); + this.response(Response.ERROR); + } + } + + _showError(status, error) { + /* set error message from specific error if available, otherwise use + * a generic error message for the HTTP status code */ + let statusMessage = + error ? error.message : OSMConnection.getStatusMessage(status); + let messageDialog = + new Gtk.MessageDialog({ transient_for: this.get_toplevel(), + destroy_with_parent: true, + message_type: Gtk.MessageType.ERROR, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: _("An error has occurred"), + secondary_text: statusMessage }); + + messageDialog.run(); + messageDialog.destroy(); + this.response(Response.ERROR); + } + + /* GtkContainer.child_get_property doesn't seem to be usable from GJS */ + _getRowOfDeleteButton(button) { + for (let row = 1; row < this._currentRow; row++) { + let label = this._editorGrid.get_child_at(0, row); + let deleteButton = this._editorGrid.get_child_at(2, row); + + if (deleteButton === button) + return row; + } + + return -1; + } + + _addOSMEditDeleteButton(fieldSpec) { + let deleteButton = Gtk.Button.new_from_icon_name('user-trash-symbolic', + Gtk.IconSize.BUTTON); + let styleContext = deleteButton.get_style_context(); + let rows = fieldSpec.rows || 1; + + styleContext.add_class('flat'); + this._editorGrid.attach(deleteButton, 2, this._currentRow, 1, 1); + + deleteButton.connect('clicked', () => { + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((key) => this._osmObject.delete_tag(key)); + } else { + this._osmObject.delete_tag(fieldSpec.tag); + } + + let row = this._getRowOfDeleteButton(deleteButton); + for (let i = 0; i < rows; i++) { + this._editorGrid.remove_row(row); + this._currentRow--; + } + this._nextButton.sensitive = true; + this._updateAddFieldMenu(); + }); + + deleteButton.show(); + } + + _addOSMEditLabel(fieldSpec) { + let text = fieldSpec.name; + if (fieldSpec.includeHelp) { + let link = _WIKI_BASE + fieldSpec.tag; + text = '%s'.format(link, link, text); + } + let label = new Gtk.Label({ label: text, + use_markup: true }); + label.halign = Gtk.Align.END; + label.get_style_context().add_class('dim-label'); + this._editorGrid.attach(label, 0, this._currentRow, 1, 1); + label.show(); + } + + _showHintPopover(entry, hint) { + if (this._hintPopover.visible) { + this._hintPopover.popdown(); + } else { + this._hintPopover.relative_to = entry; + this._hintLabel.label = hint; + this._hintPopover.popup(); + } + } + + _validateTextEntry(fieldSpec, entry) { + if (fieldSpec.validate) { + /* also allow empty text without showing the validation warning, + * since we want to allow clearing out the text to unset a value + * (equivalent to using the delete button). + */ + if (entry.text !== '' && !fieldSpec.validate(entry.text)) { + entry.get_style_context().add_class("warning"); + } else { + entry.get_style_context().remove_class("warning"); + } + } + } + + _addOSMEditTextEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let entry = new Gtk.Entry(); + entry.text = value; + entry.hexpand = true; + if (fieldSpec.placeHolder) + entry.placeholder_text = fieldSpec.placeHolder; + + entry.connect('changed', () => { + if (fieldSpec.rewriteFunc) + entry.text = fieldSpec.rewriteFunc(entry.text); + this._osmObject.set_tag(fieldSpec.tag, entry.text); + + this._validateTextEntry(fieldSpec, entry); + + this._nextButton.sensitive = true; + }); + + this._validateTextEntry(fieldSpec, entry); + + if (fieldSpec.hint) { + entry.secondary_icon_name = 'dialog-information-symbolic'; + entry.connect('icon-press', (entry, iconPos, event) => { + if (fieldSpec.validate && entry.text !== '' && + !fieldSpec.validate(entry.text)) { + this._showHintPopover(entry, fieldSpec.validateError); + } else { + this._showHintPopover(entry, fieldSpec.hint); + } + }); + } + + this._editorGrid.attach(entry, 1, this._currentRow, 1, 1); + entry.show(); + entry.grab_focus(); + + /* TODO: should we allow deleting the name field? */ + this._addOSMEditDeleteButton(fieldSpec); + + this._currentRow++; + } + + _addOSMEditIntegerEntry(fieldSpec, value, min, max) { + this._addOSMEditLabel(fieldSpec); + + let spinbutton = Gtk.SpinButton.new_with_range(min, max, 1); + spinbutton.value = value; + spinbutton.numeric = true; + spinbutton.hexpand = true; + spinbutton.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, spinbutton.text); + this._nextButton.sensitive = true; + }); + + if (fieldSpec.hint) { + spinbutton.secondary_icon_name = 'dialog-information-symbolic'; + spinbutton.connect('icon-press', (iconPos, event) => { + this._showHintPopover(spinbutton, fieldSpec.hint); + }); + } + + this._editorGrid.attach(spinbutton, 1, this._currentRow, 1, 1); + spinbutton.show(); + spinbutton.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditComboEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let combobox = new Gtk.ComboBoxText(); + + fieldSpec.options.forEach(function(option) { + combobox.append(option[0], option[1]); + }); + combobox.active_id = value; + combobox.hexpand = true; + combobox.connect('changed', () => { + this._osmObject.set_tag(fieldSpec.tag, combobox.active_id); + this._nextButton.sensitive = true; + }); + + this._editorGrid.attach(combobox, 1, this._currentRow, 1, 1); + combobox.show(); + combobox.grab_focus(); + + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow++; + } + + _addOSMEditAddressEntry(fieldSpec, value) { + this._addOSMEditLabel(fieldSpec); + + let addr = new OSMEditAddress({ street: value[0], + number: value[1], + postCode: value[2], + city: value[3] }); + let changedFunc = (function(entry, index) { + this._osmObject.set_tag(fieldSpec.subtags[index], entry.text); + this._nextButton.sensitive = true; + }).bind(this); + + addr.street.connect('changed', changedFunc.bind(this, addr.street, 0)); + addr.number.connect('changed', changedFunc.bind(this, addr.number, 1)); + addr.post.connect('changed', changedFunc.bind(this, addr.post, 2)); + addr.city.connect('changed', changedFunc.bind(this, addr.city, 3)); + + let rows = fieldSpec.rows || 1; + this._editorGrid.attach(addr, 1, this._currentRow, 1, rows); + addr.street.grab_focus(); + this._addOSMEditDeleteButton(fieldSpec); + this._currentRow += rows; + } + + /* update visible items in the "Add Field" popover */ + _updateAddFieldMenu() { + /* clear old items */ + let children = this._addFieldPopoverGrid.get_children(); + let hasAllFields = true; + + for (let i = 0; i < children.length; i++) { + let button = children[i]; + button.destroy(); + } + + /* add selectable items */ + let row = 0; + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let hasValue = false; + + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + if (this._osmObject.get_tag(tag) !== null) + hasValue = true; + }); + } else { + hasValue = this._osmObject.get_tag(fieldSpec.tag) !== null; + } + + if (!hasValue) { + let button = new Gtk.Button({ + visible: true, sensitive: true, + label: fieldSpec.name + }); + button.get_style_context().add_class('menuitem'); + button.get_style_context().add_class('button'); + button.get_style_context().add_class('flat'); + button.get_child().halign = Gtk.Align.START; + + button.connect('clicked', () => { + this._addFieldButton.active = false; + this._addOSMField(fieldSpec); + /* add a "placeholder" empty OSM tag to keep the add field + * menu updated, these tags will be filtered out if nothing + * is entered */ + if (fieldSpec.subtags) { + fieldSpec.subtags.forEach((tag) => { + this._osmObject.set_tag(tag, ''); + }); + } else { + this._osmObject.set_tag(fieldSpec.tag, ''); + } + this._updateAddFieldMenu(); + }); + + hasAllFields = false; + this._addFieldPopoverGrid.attach(button, 0, row, 1, 1); + row++; + } + } + + this._addFieldButton.sensitive = !hasAllFields; + } + + _addOSMField(fieldSpec, value) { + switch (fieldSpec.type) { + case EditFieldType.TEXT: + this._addOSMEditTextEntry(fieldSpec, value || ''); + break; + case EditFieldType.INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, -1e9, 1e9); + break; + case EditFieldType.UNSIGNED_INTEGER: + this._addOSMEditIntegerEntry(fieldSpec, value || 0, 0, 1e9); + break; + case EditFieldType.COMBO: + this._addOSMEditComboEntry(fieldSpec, value || ''); + break; + case EditFieldType.ADDRESS: + this._addOSMEditAddressEntry(fieldSpec, value || ''); + break; + } + } + + _loadOSMData(osmObject) { + this._osmObject = osmObject; + + /* keeps track of the current insertion row in the grid for editing + * widgets */ + this._currentRow = 1; + + for (let i = 0; i < OSM_FIELDS.length; i++) { + let fieldSpec = OSM_FIELDS[i]; + let value; + + if (fieldSpec.subtags) { + let hasAny = false; + fieldSpec.subtags.forEach(function(tag) { + if (osmObject.get_tag(tag) != null) + hasAny = true; + }); + + if (hasAny) { + value = fieldSpec.subtags.map(function(tag) { + return osmObject.get_tag(tag); + }); + this._addOSMField(fieldSpec, value); + } + } else { + value = osmObject.get_tag(fieldSpec.tag); + if (value != null) + this._addOSMField(fieldSpec, value); + } + } + + this._updateAddFieldMenu(); + this._updateTypeButton(); + this._stack.visible_child_name = 'editor'; + } +}); diff --git a/src/osmNames.js b/src/osmNames.js new file mode 100644 index 00000000..97ac4613 --- /dev/null +++ b/src/osmNames.js @@ -0,0 +1,235 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Utility functions for getting localized names of OSM objects. + * See https://wiki.openstreetmap.org/wiki/Multilingual_names + */ + +const Utils = imports.utils + +/** + * Mapping writing systems (scripts) to languages (most commonly + * used scripts) and countries where given writing system is the predominant + * one used. + * + * See: + * https://en.wikipedia.org/wiki/List_of_writing_systems + */ +const WRITING_SYSTEMS = [ + // ARABIC + { + languages: new Set(['ar', 'bal', 'bft', 'bhd', 'brh', 'bsk', 'fa', + 'khv', 'ks', 'ur', 'pa', 'ps', 'sd', 'skr', 'ug', + 'ckb']), + countries: new Set(['AE', 'AF', 'BH', 'DZ', 'EG', 'IQ', 'IR', 'JO', 'KW', + 'LB', 'LY', 'MA', 'OM', 'PK', 'PS', 'QA', 'SA', 'SD', + 'SY', 'TN', 'YE']) + }, + // ARMENIAN + { + languages: new Set(['am']), + countries: new Set(['AM']) + }, + // BENGALI + { + languages: new Set(['as', 'bn', 'bpy', 'ctg', 'mni', 'rkt', 'syl']), + countries: new Set(['BD']) + }, + // BURMESE + { + languages: new Set(['mnv', 'my', 'rki', 'rmz', 'shn']), + countries: new Set(['MM']) + }, + // CHINESE + { + languages: new Set(['zh', 'yue']), + countries: new Set(['CN', 'TW']) + }, + // CYRILLIC + { + languages: new Set(['ab', 'abq', 'ady', 'alt', 'alr', 'aqc', 'av', 'ba', + 'be', 'bg', 'bgx', 'ce', 'chm', 'ckt', 'cnr', 'crh', + 'cv', 'dar', 'dlg', 'dng', 'eve', 'evn', 'gld', + 'inh', 'itl', 'jdt', 'kbd', 'kjh', 'koi', 'kpy', + 'krc', 'kum', 'ky', 'lbe', 'lez', 'mn', 'mk', 'nog', + 'oaa', 'os', 'ru', 'rue', 'sah', 'sgh', 'sjd', 'sr', + 'sty', 'tab', 'tg', 'tt', 'ttt', 'tyv', 'uby', 'uk', + 'ulc', 'uum', 'yah', 'yai']), + countries: new Set(['BY', 'KG', 'MN', 'TJ', 'RS', 'RU', 'UA']) + }, + // DEVANAGARI + { + languages: new Set(['awa', 'anp', 'bgc', 'bhb', 'bho', 'brx', 'doi', + 'hi', 'hne', 'kok', 'mag', 'mai', 'mr', 'ne', 'new', + 'raj', 'sa', 'sgj']) + }, + // GEORIGIAN + { + languages: new Set(['ka']), + countries: new Set(['GE']) + }, + // GEEZ + { + languages: new Set(['am', 'gez', 'har', 'ti', 'tig']), + countries: new Set(['ET', 'ER']) + }, + // GREEK + { + languages: new Set(['gr']), + countries: new Set(['GR']) + }, + // GUJARATI + { + languages: new Set(['gbl', 'gu', 'kfr', 'vas', 'vav']) + }, + // HEBREW + { + languages: new Set(['he', 'yi']), + countries: new Set(['IL']) + }, + // JAPANESE + { + languages: new Set(['ja']), + countries: new Set(['JP']) + }, + // KHMER + { + languages: new Set(['km']), + countries: new Set(['KH']) + }, + // KOREAN + { + languages: new Set(['ko']), + countries: new Set(['KR', 'NK']) + }, + // LAO + { + languages: new Set(['lo']), + countries: new Set(['LA']) + }, + // THAANA + { + languages: new Set(['dv']), + countries: new Set(['MV']) + }, + // THAI + { + languages: new Set(['nod', 'sou', 'th', 'tts']), + countries: new Set(['TH']) + } +]; + +function getNameForLanguageAndCountry(tags, language, country) { + let localizedName = _getNameInLanguage(tags, language); + + /* for names in Norwegian, the best practice in OSM is to use the + * general code 'no' for translated names, unless the translation + * differs between Bokmål (nb) and Nynorsk (nn), in which case the standard + * ISO 639-2 codes are used, e.g. the default case from above will be used + */ + if (!localizedName && (language === 'nb' || language === 'nn')) + localizedName = _getNameInLanguage(tags, 'no'); + + return localizedName ? localizedName : + _getFallbackNameForLanguageAndCountry(tags, language, + country); +} + +function _getFallbackNameForLanguageAndCountry(tags, language, country) { + let intName; + + if (_predominantWritingSystemMatchesLanguage(country, language) && tags.name) + return tags.name; + + let nameInSameScript = _getNameMatchingWritingSystem(language, tags); + + if (nameInSameScript) + return nameInSameScript; + + switch (country) { + case 'CN': + intName = _getNameInLanguage(tags, 'zh_pinyin'); + break; + case 'JP': + intName = _getNameInLanguage(tags, 'ja-Latn'); + if (!intName) + intName = _getNameInLanguage(tags, 'ja_rm'); + break; + case 'KO': + case 'NK': + intName = _getNameInLanguage(tags, 'ko-Latn'); + break; + case 'RS': + intName = _getNameInLanguage(tags, 'sr-Latn'); + break; + + } + + let enName = _getNameInLanguage(tags, 'en'); + + if (intName) + return intName; + else if (tags.int_name) + return tags.int_name; + else if (enName) + return enName; + else + return tags.name; +} + +function _getNameInLanguage(tags, language) { + return language === 'C' ? tags.name : tags['name:' + language]; +} + +function _predominantWritingSystemMatchesLanguage(country, language) { + let writingSystemOfCountry; + let writingSystemOfLanguage; + + WRITING_SYSTEMS.forEach(w => { + if (w.languages.has(language)) + writingSystemOfLanguage = w; + + if (w.countries && w.countries.has(country)) + writingSystemOfCountry = w; + }); + + return writingSystemOfCountry === writingSystemOfLanguage; +} + +function _getNameMatchingWritingSystem(language, tags) { + let writingSystem; + let name; + + WRITING_SYSTEMS.forEach(w => { + if (w.languages.has(language)) + writingSystem = w; + }); + + if (writingSystem) { + writingSystem.languages.forEach(lang => { + if (tags['name:' + lang]) + name = tags['name:' + lang]; + }); + } + + return name; +} diff --git a/src/osmTypeListRow.js b/src/osmTypeListRow.js new file mode 100644 index 00000000..795d203c --- /dev/null +++ b/src/osmTypeListRow.js @@ -0,0 +1,50 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var OSMTypeListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-list-row.ui', + InternalChildren: [ 'name' ] +}, class OSMTypeListRow extends Gtk.ListBoxRow { + + _init(props) { + this._type = props.type; + delete props.type; + + super._init(props); + + this._name.label = this._type.title; + } + + get key() { + return this._type.key; + } + + get value() { + return this._type.value; + } + + get title() { + return this._type.title; + } +}); diff --git a/src/osmTypePopover.js b/src/osmTypePopover.js new file mode 100644 index 00000000..664ae721 --- /dev/null +++ b/src/osmTypePopover.js @@ -0,0 +1,61 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypeListRow = imports.osmTypeListRow; +const SearchPopover = imports.searchPopover; + +var OSMTypePopover = GObject.registerClass({ + InternalChildren: ['list'], + Template: 'resource:///org/gnome/Maps/ui/osm-type-popover.ui', + Signals : { + /* signal emitted when selecting a type, indicates OSM key and value + * and display title */ + 'selected' : { param_types: [ GObject.TYPE_STRING, + GObject.TYPE_STRING, + GObject.TYPE_STRING ] } + } +}, class OSMTypePopover extends SearchPopover.SearchPopover { + + _init(props) { + super._init(props); + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.key, row.value, row.title); + }); + } + + showMatches(matches) { + this._list.foreach((row) => this._list.remove(row)); + + matches.forEach((type) => this._addRow(type)); + this.show(); + } + + _addRow(type) { + let row = new OSMTypeListRow.OSMTypeListRow({ type: type, + can_focus: true }); + this._list.insert(row, -1); + } +}); diff --git a/src/osmTypeSearchEntry.js b/src/osmTypeSearchEntry.js new file mode 100644 index 00000000..eae92355 --- /dev/null +++ b/src/osmTypeSearchEntry.js @@ -0,0 +1,75 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const OSMTypePopover = imports.osmTypePopover; +const OSMTypes = imports.osmTypes; +const Utils = imports.utils; + +const MAX_MATCHES = 10; + +var OSMTypeSearchEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/osm-type-search-entry.ui' +}, class OSMTypeSearchEntry extends Gtk.SearchEntry { + + _init(props) { + super._init(props); + + this._popover = + new OSMTypePopover.OSMTypePopover({relative_to: this}); + + this.connect('size-allocate', (widget, allocation) => { + /* Magic number to make the alignment pixel perfect. */ + let width_request = allocation.width + 20; + this._popover.width_request = width_request; + }); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + this.connect('activate', this._onSearchChanged.bind(this)); + } + + get popover() { + return this._popover; + } + + _onSearchChanged() { + if (this.text.length === 0) { + this._popover.hide(); + return; + } + + /* Note: Not sure if searching already on one character might be a bit + * too much, but unsure about languages such as Chinese and Japanese + * using ideographs. */ + if (this.text.length >= 1) { + let matches = OSMTypes.findMatches(this.text, MAX_MATCHES); + + if (matches.length > 0) { + /* show search results */ + this._popover.showMatches(matches); + } else { + this._popover.hide(); + } + } + } +}); diff --git a/src/osmTypes.js b/src/osmTypes.js new file mode 100644 index 00000000..aa7d7c68 --- /dev/null +++ b/src/osmTypes.js @@ -0,0 +1,165 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; + +const Utils = imports.utils; + +const _RECENT_TYPES_STORE_FILE = 'maps-recent-types.json'; +const _NUM_RECENT_TYPES = 10; + +const _file = Gio.file_new_for_uri('resource://org/gnome/Maps/osm-types.json'); +const [_status, _buffer] = _file.load_contents(null); +const OSM_TYPE_MAP = JSON.parse(Utils.getBufferText(_buffer)); + +/* Lists the OSM tags we base our notion of location types on */ +var OSM_TYPE_TAGS = ['aeroway', 'amenity', 'leisure', 'office', 'place', 'shop', 'tourism' ]; + +/* Sort function comparing two type values according to the locale-specific + * comparison of the type title */ +function _sortType(t1, t2) { + return t1.title.toLocaleLowerCase().localeCompare(t2.title.toLocaleLowerCase()); +} + +/* find the localized display title and a normalized locale-specific lower case + * value for search purposes, given a type mapping value, + * also cache the title to avoid re-iterating the language map every time, + * and store the lower-case normalized title in the current locale */ +function _lookupTitle(item) { + let langs = GLib.get_language_names(); + let title = item.cachedTitle; + + if (title) + return [title, item.normalizedTitle]; + + for (let i = 0; i < langs.length; i++) { + title = item.title[langs[i].replace('_', '-')]; + + if (title) { + let normalizedTitle = title.toLocaleLowerCase(); + + item.cachedTitle = title; + item.normalizedTitle = normalizedTitle; + return [title, normalizedTitle]; + } + } + + return null; +} + +function findMatches(prefix, maxMatches) { + let numMatches = 0; + let prefixLength = prefix.length; + let normalized = prefix.toLocaleLowerCase(); + let matches = []; + + for (let type in OSM_TYPE_MAP) { + let item = OSM_TYPE_MAP[type]; + let [title, normalizedTitle] = _lookupTitle(item); + let parts = type.split('/'); + + /* if the (locale-case-normalized) title matches parts of the search + * string, or as a convenience for expert mappers, if the search string + * is prefix of the raw OSM tag value */ + if (normalizedTitle.indexOf(normalized) != -1 + || (prefixLength >= 3 && parts[1].startsWith(prefix))) { + numMatches++; + matches.push({key: parts[0], value: parts[1], title: title}); + } + + if (numMatches === maxMatches) + break; + } + + return matches.sort(_sortType); +} + +/* return the title of a type with a given key/value if it is known by us */ +function lookupType(key, value) { + let item = OSM_TYPE_MAP[key + '/' + value]; + + if (item) { + let [title, _] = _lookupTitle(item); + return title; + } else + return null; +} + +var RecentTypesStore = class RecentTypesStore { + + constructor() { + this._filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _RECENT_TYPES_STORE_FILE]); + this._load(); + } + + get recentTypes() { + return this._recentTypes; + } + + _load() { + if (!GLib.file_test(this._filename, GLib.FileTest.EXISTS)) { + this._recentTypes = []; + return; + } + + let buffer = Utils.readFile(this._filename); + if (buffer === null) { + this._recentTypes = []; + return; + } + + this._recentTypes = JSON.parse(Utils.getBufferText(buffer)); + } + + _save() { + let buffer = JSON.stringify(this._recentTypes); + if (!Utils.writeFile(this._filename, buffer)) + log('Failed to write recent types file!'); + } + + /* push a type key/value as the most recently used type */ + pushType(key, value) { + /* find out if the type is already stored */ + let pos = -1; + for (let i = 0; i < this._recentTypes.length; i++) { + if (this._recentTypes[i].key === key && + this._recentTypes[i].value === value) { + pos = i; + break; + } + } + + /* remove the type if it was already found in the list */ + if (pos != -1) + this._recentTypes.splice(pos, 1); + + this._recentTypes.unshift({key: key, value: value}); + + /* prune the list */ + this._recentTypes.splice(_NUM_RECENT_TYPES); + + this._save(); + } +}; + +var recentTypesStore = new RecentTypesStore(); diff --git a/src/osmUtils.js b/src/osmUtils.js new file mode 100644 index 00000000..b6a2e452 --- /dev/null +++ b/src/osmUtils.js @@ -0,0 +1,83 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Marcus Lundblad + */ + +const Soup = imports.gi.Soup; + +const Application = imports.application; + +/* + * Gets a Wikipedia article in OSM tag format (i.e. lang:Article title) + * given a URL or null if input doesn't match a Wikipedia URL + */ +function getWikipediaOSMArticleFormatFromUrl(url) { + let regex = /https?:\/\/(..)\.wikipedia\.org\/wiki\/(.+)/; + let match = url.match(regex); + + if (match && match.length == 3) { + let lang = match[1]; + let article = match[2]; + + return lang + ':' + Soup.uri_decode(article).replace(/_/g, ' '); + } else { + return null; + } +} + +/** + * Updates a Place object according to an OSMObject. + * Will also update place in the place store. + */ +function updatePlaceFromOSMObject(place, object) { + let name = object.get_tag('name'); + + if (name) { + /* only update the place's name from the OSM object if the OSM object + * actually has a name set. + * https://bugzilla.gnome.org/show_bug.cgi?id=762569 + * + * also update the displayed localized name, if it was equal + * to the translated name to avoid the old name showing up as the + * native name in when editing places where they equal + */ + if (place.name === place.nativeName) + place.name = name; + place.nativeName = name; + } + place.population = object.get_tag('population'); + place.website = object.get_tag('website'); + place.email = object.get_tag('email'); + place.phone = object.get_tag('phone'); + place.wiki = object.get_tag('wikipedia'); + place.openingHours = object.get_tag('opening_hours'); + place.wheelchair = object.get_tag('wheelchair'); + place.toilets = object.get_tag('toilets'); + place.internetAccess = object.get_tag('internet_access'); + place.religion = object.get_tag('religion'); + place.takeaway = object.get_tag('takeaway'); + + let altitude = object.get_tag('ele'); + + if (altitude) + place.location.altitude = altitude; + + Application.placeStore.updatePlace(place); +} diff --git a/src/overpass.js b/src/overpass.js new file mode 100644 index 00000000..158c6878 --- /dev/null +++ b/src/overpass.js @@ -0,0 +1,282 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Rishi Raj Singh Jhelumi + */ + +const Format = imports.format; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Soup = imports.gi.Soup; + +const OSMNames = imports.osmNames; +const PhotonParser = imports.photonParser; +const Place = imports.place; +const Utils = imports.utils; + +const _DEFAULT_TIMEOUT = 180; +const _DEFAULT_MAXSIZE = 536870912; +const _DEFAULT_OUTPUT_FORMAT = 'json'; +const _DEFAULT_OUTPUT_COUNT = 1e6; +const _DEFAULT_OUTPUT_INFO = 'body'; +const _DEFAULT_OUTPUT_SORT_ORDER = 'qt'; + +const BASE_URL = 'https://overpass-api.de/api/interpreter'; + +var Overpass = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'Place with added information', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class Overpass extends GObject.Object { + + _init(params) { + params = params || { }; + + super._init(); + + // maximum allowed runtime for the query in seconds + this.timeout = params.timeout || _DEFAULT_TIMEOUT; + + // maximum allowed memory for the query in bytes RAM on the server + this.maxsize = params.maxsize || _DEFAULT_MAXSIZE; + + // output format : json or xml + this.outputFormat = params.outputFormat || _DEFAULT_OUTPUT_FORMAT; + + // maximum number of results the output must contain + this.outputCount = params.outputCount || _DEFAULT_OUTPUT_COUNT; + + // data output info must contain : ids, skel, body, meta + this.outputInfo = params.outputInfo || _DEFAULT_OUTPUT_INFO; + + // data sort order : qt(fastest based on geography), ids, asc + this.outputSortOrder = params.outputSortOrder || _DEFAULT_OUTPUT_SORT_ORDER; + + // HTTP Session Variables + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + addInfo(place) { + let url = this._getQueryUrl(Utils.osmTypeToString(place.osm_type), + place.osm_id); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + return; + } + try { + let jsonObj = JSON.parse(message.response_body.data); + this._populatePlace(place, jsonObj); + this.place = place; + this.notify('place'); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + } + }); + } + + fetchPlace(osmType, osmId, callback) { + let url = this._getQueryUrl(osmType, osmId); + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', + uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.KnownStatusCode.OK) { + Utils.debug('Failed to fetch Overpass result: ' + message.status_code); + callback(null); + } + try { + let jsonObj = JSON.parse(message.response_body.data); + let place = this._createPlace(jsonObj, osmType, osmId); + callback(place); + } catch(e) { + Utils.debug('Failed to parse Overpass result'); + callback(null); + } + }) + } + + _createPlace(overpassData, osmType, osmId) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return null; + + let [lat, lon] = this._getCoordsFromElement(element); + let photonProperties = + this._getPhotonProperties(element.tags, osmType, osmId); + let place = PhotonParser.parsePlace(lat, lon, photonProperties); + + this._populatePlace(place, overpassData); + place.prefilled = true; + + return place; + } + + _getCoordsFromElement(element) { + if (element.type === 'node') + return [element.lat, element.lon]; + else + return [element.center.lat, element.center.lon]; + } + + _getPhotonProperties(tags, osmType, osmId) { + let properties = {}; + + properties.osm_type = this._getPhotonOsmType(osmType); + properties.osm_id = osmId; + + if (tags.name) + properties.name = tags.name; + + if (tags['addr:street']) + properties.street = tags['addr:street']; + if (tags['addr:housenumber']) + properties.housenumber = tags['addr:housenumber']; + if (tags['addr:postcode']) + properties.postcode = tags['addr:postcode']; + if (tags['addr:city']) + properties.city = tags['addr:city']; + if (tags['addr:country']) + properties.countrycode = tags['addr:country']; + + if (tags.place) + this._setOsmKeyAndValue(properties, tags, 'place'); + else if (tags.amenity) + this._setOsmKeyAndValue(properties, tags, 'amenity'); + else if (tags.leisure) + this._setOsmKeyAndValue(properties, tags, 'leisure'); + else if (tags.shop) + this._setOsmKeyAndValue(properties, tags, 'shop'); + else if (tags.highway) + this._setOsmKeyAndValue(properties, tags, 'highway'); + else if (tags.railway) + this._setOsmKeyAndValue(properties, tags, 'railway'); + else if (tags.aeroway) + this._setOsmKeyAndValue(properties, tags, 'aeroway'); + else if (tags.building) + this._setOsmKeyAndValue(properties, tags, 'building'); + + return properties; + } + + _getPhotonOsmType(osmType) { + switch (osmType) { + case 'node': return 'N'; + case 'way': return 'W'; + case 'relation': return 'R'; + default: return null; + } + } + + _setOsmKeyAndValue(properties, tags, tag) { + properties.osm_key = tag; + properties.osm_value = tags[tag]; + } + + _populatePlace(place, overpassData) { + let element = overpassData.elements[0]; + + if (!(element && element.tags)) + return; + + let name = this._getLocalizedName(element.tags, place); + if (name) + place.name = name; + + if (element.tags.name) + place.nativeName = element.tags.name; + if (element.tags.population) + place.population = element.tags.population; + if (element.tags['contact:website']) + place.website = element.tags['contact:website']; + if (element.tags.website) + place.website = element.tags.website; + if (element.tags['contact:email']) + place.email = element.tags['contact:email']; + if (element.tags.email) + place.email = element.tags.email; + if (element.tags['contact:phone']) + place.phone = element.tags['contact:phone']; + if (element.tags.phone) + place.phone = element.tags.phone; + if (element.tags.wikipedia) + place.wiki = element.tags.wikipedia; + if (element.tags.wheelchair) + place.wheelchair = element.tags.wheelchair; + if (element.tags.opening_hours) + place.openingHours = element.tags.opening_hours; + if (element.tags.internet_access) + place.internetAccess = element.tags.internet_access; + if (element.tags.ele && place.location) + place.location.altitude = parseFloat(element.tags.ele); + if (element.tags.religion) + place.religion = element.tags.religion + if (element.tags.toilets) + place.toilets = element.tags.toilets; + if (element.tags.takeaway) + place.takeaway = element.tags.takeaway; + if (element.tags.note) + place.note = element.tags.note; + } + + _getLocalizedName(tags, place) { + let language = Utils.getLanguage(); + + return OSMNames.getNameForLanguageAndCountry(tags, language, + place.country_code); + } + + _getQueryUrl(osmType, osmId) { + return Format.vprintf('%s?data=%s', [BASE_URL, + this._generateOverpassQuery(osmType, + osmId)]); + } + + _generateOverpassQuery(osmType, osmId) { + return Format.vprintf('%s%s%s;%s;%s;', + [ this._getKeyValue('timeout', this.timeout), + this._getKeyValue('out', this.outputFormat), + this._getKeyValue('maxsize', this.maxsize), + this._getData(osmType, osmId), + this._getOutput() ]); + } + + _getKeyValue(key, value) { + return Format.vprintf('[%s:%s]', [ key, + value ]); + } + + _getData(osmType, osmId) { + return Format.vprintf('%s(%s)', [osmType, osmId]); + } + + _getOutput() { + return Format.vprintf('out center %s %s %s', [ this.outputInfo, + this.outputSortOrder, + this.outputCount ]); + } +}); diff --git a/src/photonGeocode.js b/src/photonGeocode.js new file mode 100644 index 00000000..0de55dd2 --- /dev/null +++ b/src/photonGeocode.js @@ -0,0 +1,177 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Format = imports.format; + +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const HTTP = imports.http; +const PhotonParser = imports.photonParser; +const Service = imports.service; +const Utils = imports.utils; + +// HTTP session timeout (in seconds) +const TIMEOUT = 5; + +var PhotonGeocode = class { + constructor() { + this._session = + new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version, + timeout: TIMEOUT }); + this._readService(); + this._limit = Application.settings.get('max-search-results'); + } + + search(string, latitude, longitude, cancellable, callback) { + let url = this._buildURL(string, latitude, longitude); + let msg = Soup.Message.new('GET', url); + let handler = cancellable.connect(() => { + this._session.cancel_message(msg, Soup.Status.CANCELLED); + }); + + this._session.queue_message(msg, (session, message) => { + cancellable.disconnect(handler); + + if (cancellable.is_cancelled()) + return; + + if (message.status_code !== Soup.KnownStatusCode.OK) { + callback(null, msg.status_code); + } else { + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result, null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + } + }); + } + + reverse(latitude, longitude, callback) { + let url = this._buildURL(null, latitude, longitude); + let msg = Soup.Message.new('GET', url); + + Application.application.mark_busy(); + this._session.queue_message(msg, (session, message) => { + Application.application.unmark_busy(); + try { + let result = this._parseMessage(message.response_body.data); + if (!result) + callback(null, null); + else + callback(result[0], null); + } catch (e) { + Utils.debug('Error: ' + e); + callback(null, e); + } + }); + } + + get attribution() { + return Service.getService().photonGeocode.attribution; + } + + get attributionUrl() { + return Service.getService().photonGeocode.attributionUrl; + } + + get name() { + return 'Photon'; + } + + get url() { + return 'https://github.com/Komoot/photon'; + } + + _parseMessage(message) { + let json = JSON.parse(message); + let result = []; + let features = json.features; + + if (!features || features.length === 0) { + Utils.debug('No features in response'); + return null; + } + + features.forEach(feature => { + let place = this._parseFeature(feature); + + if (place) + result.push(place); + }); + + return result; + } + + _parseFeature(feature) { + let [lon, lat] = feature.geometry.coordinates; + + return PhotonParser.parsePlace(lat, lon, feature.properties); + } + + _buildURL(string, latitude, longitude) { + let query = new HTTP.Query({ lat: latitude, + lon: longitude, + limit: string ? this._limit : 1 + }); + + if (string) + query.add('q', string); + else + query.add('distance_sort', 'true'); + + if (this._language) + query.add('lang', this._language); + + if (this._additionalParams) + this._additionalParams.forEach((p) => query.add(p.key, p.value)); + + return Format.vprintf('%s/%s/?%s', [this._baseUrl, + string ? 'api' : 'reverse', + query.toString()]); + } + + _readService() { + let photon = Service.getService().photonGeocode; + let language = Utils.getLanguage(); + let supportedLanguages; + + if (photon) { + this._baseUrl = photon.baseUrl; + supportedLanguages = photon.supportedLanguages; + + if (photon.additionalParams) + this._additionalParams = photon.additionalParams; + } + + if (supportedLanguages.includes(language)) + this._language = language; + else + this._language = null; + } +} diff --git a/src/photonParser.js b/src/photonParser.js new file mode 100644 index 00000000..7a9267dc --- /dev/null +++ b/src/photonParser.js @@ -0,0 +1,247 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const GWeather = imports.gi.GWeather; + +const Address = imports.address; +const OSMTypes = imports.osmTypes; +const Place = imports.place; +const Utils = imports.utils; + +function parsePlace(latitude, longitude, properties) { + let location = new Geocode.Location({ latitude: latitude, + longitude: longitude, + accuracy: 0.0 }); + let type = _parsePlaceType(properties); + let name = _parseName(properties); + + if (!name) + return null; + + let street = properties.street; + let housenumber = properties.housenumber; + let countryCode = properties.countrycode ?? + Utils.getCountryCodeForCoordinates(latitude, longitude); + let streetAddress; + + if (housenumber && street) { + streetAddress = Address.streetAddressForCountryCode(street, housenumber, + countryCode); + + /* in some cases Photon seems to give housenumber or street as name, + * in that case set the name as the formatted street address + */ + if (name === housenumber || name === street) + name = streetAddress; + } + + let params = { name: name, place_type: type, location: location }; + + if (streetAddress) + params.street_address = streetAddress; + + if (properties.osm_id && properties.osm_type) { + params.osm_id = properties.osm_id + ''; // Geocode-glib needs this as a string + params.osm_type = _parseOsmType(properties.osm_type); + } + + if (properties.street) + params.street = properties.street; + + if (properties.city) + params.town = properties.city; + + if (properties.postcode) + params.postal_code = properties.postcode; + + if (properties.state) + params.state = properties.state; + + if (countryCode) + params.country_code = countryCode; + + if (!countryCode && properties.country) + params.country = properties.country; + + if (properties.extent) + params.bounding_box = _parseBoundingBox(properties.extent); + + if (properties.osm_key) + params.osmKey = properties.osm_key; + + if (properties.osm_value) + params.osmValue = properties.osm_value; + + return new Place.Place(params); +} + +function _parseName(properties) { + if (!properties) + return ''; + + if (properties.name) { + return properties.name; + } else if (properties.housenumber) { + return properties.housenumber; + } else { + let typeTitle = + OSMTypes.lookupType(properties.osm_key, properties.osm_value); + + return typeTitle || _("Unnamed place"); + } +} + +function _parseOsmType(osmType) { + switch (osmType) { + case 'N': + return Geocode.PlaceOsmType.NODE; + case 'W': + return Geocode.PlaceOsmType.WAY; + case 'R': + return Geocode.PlaceOsmType.RELATION; + default: + return Geocode.PlaceOsmType.UNKNOWN; + } +} + +function _parsePlaceType(properties) { + if (!properties) + return Geocode.PlaceType.UNKNOWN; + + let key = properties.osm_key; + let value = properties.osm_value; + + switch (key) { + case 'place': + switch (value) { + case 'continent': + return Geocode.PlaceType.CONTINENT; + case 'country': + return Geocode.PlaceType.COUNTRY; + case 'city': + case 'town': + case 'village': + case 'hamlet': + return Geocode.PlaceType.TOWN; + case 'suburb': + return Geocode.PlaceType.SUBURB; + case 'house': + return Geocode.PlaceType.BUILDING; + case 'island': + return Geocode.PlaceType.ISLAND; + case 'municipality': + return Geocode.PlaceType.COUNTY; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'amenity': + switch (value) { + case 'bar': + case 'pub': + case 'nightclub': + return Geocode.PlaceType.BAR; + case 'restaurant': + case 'fast_food': + return Geocode.PlaceType.RESTAURANT; + case 'school': + case 'kindergarten': + return Geocode.PlaceType.SCHOOL; + case 'place_of_worship': + return Geocode.PlaceType.PLACE_OF_WORSHIP; + case 'bus_station': + return Geocode.PlaceType.BUS_STOP; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'highway': + switch (value) { + case 'bus_stop': + return Geocode.PlaceType.BUS_STOP; + case 'motorway': + return Geocode.PlaceType.MOTORWAY; + default: + return Geocode.PlaceType.STREET; + } + case 'railway': + switch (value) { + case 'station': + case 'stop': + case 'halt': + return Geocode.PlaceType.RAILWAY_STATION; + case 'tram_stop': + return Geocode.PlaceType.LIGHT_RAIL_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'aeroway': + switch (value) { + case 'aerodrome': + return Geocode.PlaceType.AIRPORT; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + case 'building': + switch (value) { + case 'yes': + return Geocode.PlaceType.BUILDING; + case 'railway_station': + return Geocode.PlaceType.RAILWAY_STATION; + default: + return Geocode.PlaceType.MISCELLANEOUS; + } + default: + return Geocode.PlaceType.MISCELLANEOUS; + } +} + +function _parseBoundingBox(extent) { + if (!Array.isArray(extent) || extent.length !== 4 || + !_isValidLongitude(extent[0]) || !_isValidLatitude(extent[1]) || + !_isValidLongitude(extent[2]) || !_isValidLatitude(extent[3])) { + Utils.debug('invalid extents in response: ' + + JSON.stringify(extent, null, 2)); + return null; + } + + /* it seems GraphHopper geocode swaps order of bottom and top compared + * to stock Photon, so just in case "clamp" both pairs + */ + return new Geocode.BoundingBox({ left: Math.min(extent[0], extent[2]), + bottom: Math.min(extent[1], extent[3]), + right: Math.max(extent[0], extent[2]), + top: Math.max(extent[1], extent[3]) }); +} + +/* check if an extent value is a valid latitude (clamp to the maximum latitude + * supported by the map view + */ +function _isValidLatitude(number) { + return Number.isFinite(number) && number >= -85.0511287798 && + number <= 85.0511287798; +} + +// check if an extent value is a valid longitude +function _isValidLongitude(number) { + return Number.isFinite(number) && number >= -180 && number <= 180; +} diff --git a/src/place.js b/src/place.js new file mode 100644 index 00000000..87948a74 --- /dev/null +++ b/src/place.js @@ -0,0 +1,517 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const Location = imports.location; +const Overpass = imports.overpass; +const PlaceIcons = imports.placeIcons; +const URLS = imports.urls; +const Utils = imports.utils; + +// Matches coordinates string in 'Decimal Degrees' format +const DECIMAL_COORDINATES_REGEX = ( + /^\s*(\-?\d+(?:\.\d+)?)°?\s*,\s*(\-?\d+(?:\.\d+)?)°?\s*$/ +); + +// Matches coordinates string in 'Degrees, Minutes, Seconds' format +const DMS_COORDINATES_REGEX = new RegExp( + /^\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(N|S)\s*,?/.source + + /\s*(\d+)°?\s*(\d+)['′]?\s*(\d+(?:.\d+)?)["″]?\s*(W|E)\s*$/.source, + "i" +); + +var Place = GObject.registerClass( +class Place extends Geocode.Place { + + _init(params) { + this._isCurrentLocation = params.isCurrentLocation; + delete params.isCurrentLocation; + + this._population = params.population; + delete params.population; + + this._website = params.website; + delete params.website; + + this._email = params.email; + delete params.email; + + this._phone = params.phone; + delete params.phone; + + this._wiki = params.wiki; + delete params.wiki; + + this._openingHours = params.openingHours; + delete params.openingHours; + + this._internetAccess = params.internetAccess; + delete params.internetAccess; + + this._religion = params.religion; + delete params.religion; + + this._toilets = params.toilets; + delete params.toilets; + + this._takeaway = params.takeaway; + delete params.takeaway; + + this._note = params.note; + delete params.note; + + this._initialZoom = params.initialZoom; + delete params.initialZoom; + + /* set to true if the instance is pre-filled with Overpass data, + * at the time of creation, as will be the case when loading a place + * from an OSM object URL + */ + this._prefilled = params.prefilled; + delete params.prefilled; + + /* Determines if the place should be added to the place store */ + if (typeof(params.store) === 'undefined') { + this._store = true; + } else { + this._store = params.store; + delete params.store; + } + + this._wheelchair = params.wheelchair; + delete params.wheelchair; + + this._nativeName = params.nativeName; + delete params.nativeName; + + this._osmKey = params.osmKey; + delete params.osmKey; + + this._osmValue = params.osmValue; + delete params.osmValue; + + if (params.place) { + params = { osm_id: params.place.osm_id, + osm_type: params.place.osm_type, + name: params.place.name, + location: params.place.location, + bounding_box: params.place.bounding_box, + place_type: params.place.place_type, + street_address: params.place.street_address, + street: params.place.street, + building: params.place.building, + postal_code: params.place.postal_code, + area: params.place.area, + town: params.place.town, + state: params.place.state, + county: params.place.county, + country: params.place.country, + country_code: params.place.country_code, + continent: params.place.continent }; + } + + for (let prop in params) + if (!params[prop]) + delete params[prop]; + + super._init(params); + } + + set store(v) { + this._store = v; + } + + get store() { + return this._store; + } + + get uniqueID() { + return this.osm_type + '-' + this.osm_id; + } + + get isCurrentLocation() { + return this._isCurrentLocation; + } + + set population(v) { + this._population = v; + } + + get population() { + return this._population; + } + + set website(v) { + this._website = v; + } + + get website() { + return this._website; + } + + set email(v) { + this._email = v; + } + + get email() { + return this._email; + } + + set phone(v) { + this._phone = v; + } + + get phone() { + return this._phone; + } + + set wiki(v) { + this._wiki = v; + } + + get wiki() { + return this._wiki; + } + + set openingHours(v) { + this._openingHours = v; + } + + get openingHours() { + return this._openingHours; + } + + set internetAccess(v) { + this._internetAccess = v; + } + + get internetAccess() { + return this._internetAccess; + } + + set religion(v) { + this._religion = v; + } + + get religion() { + return this._religion; + } + + set toilets(v) { + this._toilets = v; + } + + get toilets() { + return this._toilets; + } + + set takeaway(v) { + this._takeaway = v; + } + + get takeaway() { + return this._takeaway; + } + + set note(v) { + this._note = v; + } + + get note() { + return this._note; + } + + set wheelchair(v) { + this._wheelchair = v; + } + + get wheelchair() { + return this._wheelchair; + } + + get initialZoom() { + return this._initialZoom; + } + + get prefilled() { + return this._prefilled; + } + + set prefilled(prefilled) { + this._prefilled = prefilled; + } + + get nativeName() { + return this._nativeName; + } + + set nativeName(nativeName) { + this._nativeName = nativeName; + } + + /** + * Most important OSM tag for the place ('amenity', 'shop', and so on). + * This corresponds to the osm_key parameter in Photon geocoder + */ + get osmKey() { + return this._osmKey; + } + + /** + * Value for the most important OSM tag. + * This corresponds to the osm_value parameter in Photon geocoder. + */ + get osmValue() { + return this._osmValue; + } + + get icon() { + return Gio.Icon.new_for_string(this._getIconName()); + } + + _getIconName() { + return PlaceIcons.getIconForPlace(this); + } + + /** + * This property is true for places related to eating and/or drinking, + * such as restaurants, cafes, pubs and similar + */ + get isEatingAndDrinking() { + return this._osmKey === 'amenity' && + ['bar', 'biergarten', 'cafe', 'fast_food', 'food_court', + 'restaurant', 'pub'].indexOf(this._osmValue) !== -1; + } + + toJSON() { + let bounding_box = null; + + if (this.bounding_box) { + bounding_box = { top: this.bounding_box.top, + bottom: this.bounding_box.bottom, + left: this.bounding_box.left, + right: this.bounding_box.right }; + } + + let location = { latitude: this.location.latitude, + longitude: this.location.longitude, + altitude: this.location.altitude, + accuracy: this.location.accuracy }; + + return { id: this.osm_id, + osm_type: this.osm_type, + osmKey: this._osmKey, + osmValue: this._osmValue, + place_type: this.place_type, + name: this.name, + nativeName: this.nativeName, + bounding_box: bounding_box, + this_type: this.this_type, + location: location, + street_address: this.street_address, + street: this.street, + building: this.building, + postal_code: this.postal_code, + area: this.area, + town: this.town, + state: this.state, + county: this.county, + country: this.country, + country_code: this.country_code, + continent: this.continent, + population: this.population, + website: this.website, + email: this.email, + phone: this.phone, + wiki: this.wiki, + wheelchair: this.wheelchair, + openingHours: this.openingHours, + internetAccess: this.internetAccess, + religion: this.religion, + toilets: this.toilets, + takeaway: this.takeaway, + note: this.note }; + } + + match(searchString) { + let name = this.name; + if (!name) + return false; + + searchString = Utils.normalizeString(searchString); + if (searchString === null) + return false; + + if (searchString.length === 0) + return true; + + name = Utils.normalizeString(name); + if (name === null) + return false; + + /* the search method takes a regex, make sure we have a valid one */ + try { + return name.toLowerCase().search(searchString.toLowerCase()) !== -1; + } catch(e) { + /* not valid regex */ + return false; + } + } +}); + +Place.fromJSON = function(obj) { + let props = { }; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'id': + props.osm_id = prop; + break; + + case 'location': + props.location = new Location.Location(prop); + break; + + case 'bounding_box': + if (prop) + props.bounding_box = new Geocode.BoundingBox(prop); + break; + + default: + if (prop !== null && prop !== undefined) + props[key] = prop; + break; + } + } + return new Place(props); +}; + +Place.validateCoordinates = function(lat, lon) { + return lat <= 90 && lat >= -90 && lon <= 180 && lon >= -180; +}; + +Place.parseDecimalCoordinates = function(text) { + let match = text.match(DECIMAL_COORDINATES_REGEX); + + if (match) { + let latitude = parseFloat(match[1]); + let longitude = parseFloat(match[2]); + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseDmsCoordinates = function(text) { + let match = text.match(DMS_COORDINATES_REGEX); + + if (match) { + let degrees = parseFloat(match[1]); + let minutes = parseFloat(match[2]); + let seconds = parseFloat(match[3]); + let latitude = degrees + minutes / 60 + seconds / 3600; + + if (match[4].toUpperCase() === "S") + latitude *= -1; + + degrees = parseFloat(match[5]); + minutes = parseFloat(match[6]); + seconds = parseFloat(match[7]); + let longitude = degrees + minutes / 60 + seconds / 3600; + + if (match[8].toUpperCase() === "W") + longitude *= -1; + + return [latitude, longitude]; + } else { + return null; + } +}; + +Place.parseCoordinates = function(text) { + let coords = Place.parseDecimalCoordinates(text) || + Place.parseDmsCoordinates(text); + + if (coords && Place.validateCoordinates(coords[0], coords[1])) { + return new Location.Location({ latitude: coords[0], + longitude: coords[1] }); + } else { + return null; + } +}; + +let overpass = null; + +/* we can't import Application before the Place class has been defined + * since it's used via PlaceStore + */ +const Application = imports.application; + +function parseHttpURL(text, callback) { + let [type, id] = URLS.parseAsObjectURL(text); + + if (type && id) { + let storedPlace = Application.placeStore.existsWithOsmTypeAndId(type, id); + + if (storedPlace) { + callback(storedPlace, null); + return; + } + + if (overpass === null) + overpass = new Overpass.Overpass(); + + Application.application.mark_busy(); + overpass.fetchPlace(type, id, (place) => { + Application.application.unmark_busy(); + if (place) + callback(place, null); + else + callback(null, _("Place not found in OpenStreetMap")); + }); + } else { + let [lat, lon, zoom] = URLS.parseAsCoordinateURL(text); + + if (lat && lon) { + if (!Place.validateCoordinates(lat, lon)) { + callback(null, _("Coordinates in URL are not valid")); + } else { + let location = new Location.Location({ latitude: lat, longitude: lon }); + let place = zoom ? new Place({ location: location, initialZoom: zoom }) : + new Place({ location: location }); + + callback(place, null); + } + } else { + callback(null, _("URL is not supported")); + } + } +} + diff --git a/src/placeBar.js b/src/placeBar.js new file mode 100644 index 00000000..0cb66da1 --- /dev/null +++ b/src/placeBar.js @@ -0,0 +1,160 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const PlaceButtons = imports.placeButtons; +const PlaceDialog = imports.placeDialog; +const PlaceFormatter = imports.placeFormatter; +const PlaceView = imports.placeView; +const Utils = imports.utils; + +var PlaceBar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-bar.ui', + InternalChildren: [ 'actionbar', + 'altSendToButton', + 'box', + 'eventbox', + 'contactAvatar', + 'title' ], + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The place to show information about', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + }, +}, class PlaceBar extends Gtk.Revealer { + _init(params) { + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._buttons = new PlaceButtons.PlaceButtons({ mapView: this._mapView }); + this._buttons.initSendToButton(this._altSendToButton); + this._buttons.connect('place-edited', this._onPlaceEdited.bind(this)); + this._box.add(this._buttons); + + this._multipress = new Gtk.GestureMultiPress({ widget: this._eventbox }); + this._multipress.connect('released', this._onEventBoxClicked.bind(this)); + + Application.application.connect('notify::adaptive-mode', this._updateVisibility.bind(this)); + this.connect('notify::place', this._updatePlace.bind(this)); + + this._mapView.view.connect('touch-event', this._onMapClickEvent.bind(this)); + } + + _updatePlace() { + this._updateVisibility(); + + if (this._dialog) { + this._dialog.destroy(); + delete this._dialog; + } + + if (!this.place) { + return; + } + + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this._title.label = formatter.title; + + if (this.place instanceof ContactPlace.ContactPlace) { + this._contactAvatar.visible = true; + this._contactAvatar.text = formatter.title; + + this._contactAvatar.set_image_load_func(null); + Utils.load_icon(this.place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } else { + this._contactAvatar.visible = false; + } + + this._buttons.place = this.place; + + this._altSendToButton.visible = this.place.isCurrentLocation; + this._buttons.visible = !this.place.isCurrentLocation; + } + + _updateVisibility() { + if (Application.application.adaptive_mode) { + this.reveal_child = (this.place != null); + } else { + this.reveal_child = false; + } + } + + _onEventBoxClicked() { + if (this.place.isCurrentLocation) { + if (this._currentLocationView) { + this._box.remove(this._currentLocationView); + delete this._currentLocationView; + } else { + this._currentLocationView = new PlaceView.PlaceView({ place: this.place, + mapView: this._mapView, + inlineMode: true, + visible: true }); + this._box.add(this._currentLocationView); + } + } else { + this._dialog = new PlaceDialog.PlaceDialog ({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this.place }); + this._dialog.connect('response', () => { + this._dialog.destroy(); + delete this._dialog; + }); + this._dialog.show(); + } + } + + _onPlaceEdited() { + _updatePlace(); + } + + _onMapClickEvent(view, event) { + switch (event.type()) { + case Clutter.EventType.TOUCH_BEGIN: + this._tapped = true; + break; + case Clutter.EventType.TOUCH_UPDATE: + this._tapped = false; + case Clutter.EventType.TOUCH_END: + case Clutter.EventType.TOUCH_CANCEL: + if (this._tapped) { + Application.application.selected_place = null; + } + break; + } + + return Clutter.EVENT_PROPAGATE; + } +}); diff --git a/src/placeButtons.js b/src/placeButtons.js new file mode 100644 index 00000000..e8147bd4 --- /dev/null +++ b/src/placeButtons.js @@ -0,0 +1,190 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const OSMAccountDialog = imports.osmAccountDialog; +const OSMEditDialog = imports.osmEditDialog; +const OSMUtils = imports.osmUtils; +const PlaceStore = imports.placeStore; +const SendToDialog = imports.sendToDialog; + +var PlaceButtons = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-buttons.ui', + InternalChildren: [ 'routeButton', + 'sendToButton', + 'favoriteButton', + 'editButton', + 'favoriteButtonImage' ], + Signals: { + /* Emitted when the Edit dialog is closed, because the place details + might have changed and the parent PlaceBar/PlaceView needs + refreshing */ + 'place-edited': {} + } +}, class PlaceButtons extends Gtk.Box { + _init(params) { + let place = params.place; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._initSignals(); + + if (place) { + this.place = place; + } + } + + get place() { + return this._place; + } + + set place(newPlace) { + this._place = newPlace; + /* Use the PlaceStore's version of a place, if available. */ + if (Application.placeStore.exists(newPlace, null)) { + this._place = Application.placeStore.get(newPlace); + } else { + this._place = newPlace; + } + + this._updateFavoriteButton(!!this._place.store); + + this._editButton.visible = (!(this._place instanceof ContactPlace.ContactPlace) && + this._place.osm_id); + + this._routeButton.visible = !this._place.isCurrentLocation; + + this._showCheckIn = !!this._place.isCurrentLocation; + } + + initSendToButton(button) { + button.connect('clicked', () => { + let dialog = new SendToDialog.SendToDialog({ transient_for: this.get_toplevel(), + modal: true, + mapView: this._mapView, + place: this._place, + showCheckIn: this._showCheckIn }); + dialog.connect('response', () => dialog.destroy()); + dialog.show(); + }); + } + + _initSignals() { + let placeStore = Application.placeStore; + let query = Application.routeQuery; + + this._favoriteButton.connect('clicked', () => { + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + this._favoriteButtonImage.icon_name = 'non-starred-symbolic'; + placeStore.removePlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } else { + this._favoriteButtonImage.icon_name = 'starred-symbolic'; + placeStore.addPlace(this._place, + PlaceStore.PlaceType.FAVORITE); + } + }); + + this._routeButton.connect('clicked', () => { + let from = query.points[0]; + let to = query.points[query.points.length - 1]; + + query.freeze_notify(); + query.reset(); + Application.routingDelegator.reset(); + + if (Application.geoclue.place) + from.place = Application.geoclue.place; + to.place = this._place; + + Application.application.selected_place = null; + + query.thaw_notify(); + }); + + this._editButton.connect('clicked', this._onEditClicked.bind(this)); + + this.initSendToButton(this._sendToButton); + } + + _updateFavoriteButton(visible) { + let placeStore = Application.placeStore; + this._favoriteButton.visible = visible; + + if (placeStore.exists(this._place, + PlaceStore.PlaceType.FAVORITE)) { + this._favoriteButtonImage.icon_name = 'starred-symbolic'; + } else { + this._favoriteButtonImage.icon_name = 'non-starred-symbolic'; + } + } + + _onEditClicked() { + let osmEdit = Application.osmEdit; + /* if the user is not already signed in, show the account dialog */ + if (!osmEdit.isSignedIn) { + let dialog = osmEdit.createAccountDialog(this.get_toplevel(), true); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + if (response === OSMAccountDialog.Response.SIGNED_IN) + this._edit(); + }); + + return; + } + + this._edit(); + } + + _edit() { + let osmEdit = Application.osmEdit; + let dialog = osmEdit.createEditDialog(this.get_toplevel(), this._place); + + dialog.show(); + dialog.connect('response', (dialog, response) => { + dialog.destroy(); + + switch (response) { + case OSMEditDialog.Response.UPLOADED: + // update place + let object = osmEdit.object; + OSMUtils.updatePlaceFromOSMObject(this._place, object); + // refresh place view + this.emit('place-edited'); + break; + default: + break; + } + }); + } +}); diff --git a/src/placeDialog.js b/src/placeDialog.js new file mode 100644 index 00000000..81cf6677 --- /dev/null +++ b/src/placeDialog.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const PlaceFormatter = imports.placeFormatter; +const PlaceView = imports.placeView; + +var PlaceDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-dialog.ui', + InternalChildren: [ 'scroll' ] +}, class PlaceDialog extends Gtk.Dialog { + _init(params) { + let place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + params.use_header_bar = true; + super._init(params); + + if (this.transient_for.is_maximized) { + this.maximize(); + } else { + let [width, height] = this.transient_for.get_size(); + + // Don't let the dialog get too wide + if (width > 400) { + width = 400 - 36; + height -= 36; + } + + this.set_default_size(width, height); + } + + this._placeView = new PlaceView.PlaceView({ place, + mapView, + valign: Gtk.Align.START, + visible: true }); + this._scroll.add(this._placeView); + + let formatter = new PlaceFormatter.PlaceFormatter(place); + this.title = formatter.title; + } +}); diff --git a/src/placeEntry.js b/src/placeEntry.js new file mode 100644 index 00000000..732d3f0f --- /dev/null +++ b/src/placeEntry.js @@ -0,0 +1,330 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013,2014 Jonas Danielsson, Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + * Mattias Bengtsson + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const GeocodeFactory = imports.geocode; +const Location = imports.location; +const Place = imports.place; +const PlaceStore = imports.placeStore; +const PlacePopover = imports.placePopover; +const Utils = imports.utils; + +// minimum number of characters to start completion +const MIN_CHARS_COMPLETION = 3; + +// pattern matching CJK ideographic characters +const IDEOGRAPH_PATTERN = /[\u3300-\u9fff]/ + +var PlaceEntry = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + 'Place', + 'The selected place', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceEntry extends Gtk.SearchEntry { + + set place(p) { + if (!this._place && !p) + return; + + /* if this entry belongs to a routing query entry, don't notify when + * setting the same place, otherwise it will trigger twice when + * initiating from the context menu + */ + if (!this._matchRoute && this._place && p && this._locEquals(this._place, p)) + return; + + if (p) { + if (p.name) + this._placeText = p.name; + else + this._placeText = '%.5f, %.5f'.format(p.location.latitude, + p.location.longitude); + } else { + this._placeText = ''; + } + + this.text = this._placeText; + + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } + + get popover() { + return this._popover; + } + + _init(props) { + let numVisible = props.num_visible || 6; + delete props.num_visible; + this._mapView = props.mapView; + delete props.mapView; + + if (!props.loupe) + props.primary_icon_name = null; + delete props.loupe; + + let maxChars = props.maxChars; + delete props.maxChars; + + this._matchRoute = props.matchRoute || false; + delete props.matchRoute; + + super._init(props); + + this._filter = new Gtk.TreeModelFilter({ child_model: Application.placeStore }); + this._filter.set_visible_func(this._completionVisibleFunc.bind(this)); + + this._popover = this._createPopover(numVisible, maxChars); + + this.connect('search-changed', this._onSearchChanged.bind(this)); + + this._cache = {}; + + // clear cache when view moves, as result are location-dependent + this._mapView.view.connect('notify::latitude', () => this._cache = {}); + } + + _onSearchChanged() { + if (this._parse()) + return; + + // wait for an ongoing search + if (this._cancellable) + return; + + /* start search if more than the threshold number of characters have + * been entered, or if the first character is in the ideographic CJK + * block, as for these, shorter strings could be meaningful + */ + if ((this.text.length >= MIN_CHARS_COMPLETION || + (this.text.length > 0 && this.text[0].match(IDEOGRAPH_PATTERN))) && + this.text !== this._placeText) { + let cachedResults = this._cache[this.text]; + + if (cachedResults) { + this._updateResults(cachedResults); + } else { + // if no previous search has been performed, show spinner + if (!this._previousSearch || + this._previousSearch.length < MIN_CHARS_COMPLETION || + this._placeText) { + this._popover.showSpinner(); + } + this._placeText = ''; + this._doSearch(); + } + } else { + this._popover.hide(); + if (this.text.length === 0) + this.place = null; + this._previousSearch = null; + } + } + + _locEquals(placeA, placeB) { + if (!placeA.location || !placeB.location) + return false; + + return (placeA.location.latitude === placeB.location.latitude && + placeA.location.longitude === placeB.location.longitude); + } + + _createPopover(numVisible, maxChars) { + let popover = new PlacePopover.PlacePopover({ num_visible: numVisible, + relative_to: this, + maxChars: maxChars}); + + this.connect('size-allocate', (widget, allocation) => { + // Magic number to make the alignment pixel perfect. + let width_request = allocation.width + 20; + // set at least 320 px width to avoid too narrow in the sidebar + popover.width_request = Math.max(width_request, 320); + }); + + popover.connect('selected', (widget, place) => { + this.place = place; + popover.hide(); + }); + + return popover; + } + + _completionVisibleFunc(model, iter) { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + if (type !== PlaceStore.PlaceType.CONTACT && + type !== PlaceStore.PlaceType.RECENT_ROUTE || + (!this._matchRoute && type === PlaceStore.PlaceType.RECENT_ROUTE)) + return false; + + if (place !== null) + return place.match(this.text); + else + return false; + } + + /** + * Returns true if two locations are equal when rounded to displayes + * coordinate precision + */ + _roundedLocEquals(locA, locB) { + return '%.5f, %.5f'.format(locA.latitude, locA.longitude) === + '%.5f, %.5f'.format(locB.latitude, locB.longitude) + } + + _parse() { + let parsed = false; + + if (this.text.startsWith('geo:')) { + let location = new Geocode.Location(); + + try { + location.set_from_uri(this.text); + this.place = new Place.Place({ location: location }); + } catch(e) { + let msg = _("Failed to parse Geo URI"); + Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + } + + parsed = true; + } + + let parsedLocation = Place.Place.parseCoordinates(this.text); + if (parsedLocation) { + /* if the place was a parsed OSM coordinate URL, it will have + * gotten re-written as bare coordinates and trigger a search-changed, + * in this case don't re-set the place, as it will loose the zoom + * level from the URL if set + */ + if (!this.place || + !this._roundedLocEquals(parsedLocation, this.place.location)) + this.place = new Place.Place({ location: parsedLocation }); + parsed = true; + } + + if (this.text.startsWith('http://') || + this.text.startsWith('https://')) { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = null; + Place.parseHttpURL(this.text, (place, error) => { + if (place) + this.place = place; + else + Utils.showDialog(error, + Gtk.MessageType.ERROR, this.get_toplevel()); + }); + + /* don't cancel ongoing search, as we have started an async + * operation looking up the OSM object + */ + return true; + } + + if (parsed && this._cancellable) + this._cancellable.cancel(); + + return parsed; + } + + _doSearch() { + if (this._cancellable) + this._cancellable.cancel(); + this._cancellable = new Gio.Cancellable(); + this._previousSearch = this.text; + GeocodeFactory.getGeocoder().search(this.text, + this._mapView.view.latitude, + this._mapView.view.longitude, + this._cancellable, + (places, error) => { + this._cancellable = null; + + if (error) { + this.place = null; + this._popover.showError(); + } else { + this._updateResults(places); + + // cache results for later + this._cache[this._previousSearch] = places; + } + + // if search input has been updated, trigger a refresh + if (this.text !== this._previousSearch) + this._onSearchChanged(); + }); + } + + _updateResults(places) { + if (!places) { + this.place = null; + this._popover.showNoResult(); + return; + } + + let completedPlaces = []; + + + this._filter.refilter(); + this._filter.foreach((model, path, iter) => { + let place = model.get_value(iter, PlaceStore.Columns.PLACE); + let type = model.get_value(iter, PlaceStore.Columns.TYPE); + + completedPlaces.push({ place: place, type: type }); + }); + + let placeStore = Application.placeStore; + + places.forEach((place) => { + let type; + + if (placeStore.exists(place, PlaceStore.PlaceType.RECENT)) + type = PlaceStore.PlaceType.RECENT; + else if (placeStore.exists(place, PlaceStore.PlaceType.FAVORITE)) + type = PlaceStore.PlaceType.FAVORITE; + else + type = PlaceStore.PlaceType.ANY; + + completedPlaces.push({ place: place, type: type }); + }); + + this._popover.updateResult(completedPlaces, this.text); + this._popover.showResult(); + } +}); diff --git a/src/placeFormatter.js b/src/placeFormatter.js new file mode 100644 index 00000000..58dff6d1 --- /dev/null +++ b/src/placeFormatter.js @@ -0,0 +1,114 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; + +const StoredRoute = imports.storedRoute; + +var PlaceFormatter = class PlaceFormatter { + + constructor(place) { + this._place = place; + this._rows = []; + this._titleProperty = 'name'; + + this._update(); + } + + get place() { + return this._place; + } + + get title() { + let title; + // For the 'name' property we split after comma to avoid + // duplicating information in the title from the Geocode + // display name. + if (this._titleProperty === 'name') + title = this._place[this._titleProperty].split(',')[0]; + else + title = this.place[this._titleProperty]; + + return title; + } + + get rows() { + return this._rows; + } + + getDetailsString() { + if (this._place instanceof StoredRoute.StoredRoute) + return this._place.viaString; + + return this.rows.map((row) => { + return row.map((prop) => { + return this._place[prop]; + }).join(', '); + }).join(', '); + } + + _update() { + switch (this._place.place_type) { + case Geocode.PlaceType.COUNTRY: + if (this._place.country) + this._titleProperty = 'country'; + + this._addRow(['country_code']); + break; + + case Geocode.PlaceType.STATE: + if (this._place.state) + this._titleProperty = 'state'; + break; + + case Geocode.PlaceType.COUNTY: + if (this._place.county) + this._titleProperty = 'county'; + break; + + case Geocode.PlaceType.TOWN: + if (this._place.county) + this._addRow(['county']); + else if (this._place.state) + this._addRow(['state']); + else if (this._place.area) + this._addRow(['area']); + break; + + default: + if (this._place.street_address) + this._addRow(['street_address']); + else if (this._place.street) + this._addRow(['street']); + + if (this._place.town !== this._place[this._titleProperty]) + this._addRow(['postal_code', 'town']); + break; + } + } + + _addRow(properties) { + properties = properties.filter((prop) => this._place[prop] ? true : false); + + if (properties.length > 0) + this._rows.push(properties); + } +}; diff --git a/src/placeIcons.js b/src/placeIcons.js new file mode 100644 index 00000000..4ef1303f --- /dev/null +++ b/src/placeIcons.js @@ -0,0 +1,133 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2021 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * Mapping OSM key/values to place icons. + * Keys in top map correspond to osmKey from Place. + * Keys in nested maps correspond to osmValue from Place, + * _ matches catch-all case for that osmKey. + */ +const TYPE_ICON_MAP = { + aeroway: { + aerodrome: 'route-transit-airplane-symbolic' + }, + amenity: { + bar: 'bar-symbolic', + biergarten: 'pub-symbolic', + bus_station: 'route-transit-bus-symbolic', + cafe: 'cafe-symbolic', + charging_station: 'electric-car-symbolic', + cinema: 'video-camera-symbolic', + clinic: 'hospital-sign-symbolic', + college: 'school-symbolic', + doctors: 'hospital-sign-symbolic', + fast_food: 'restaurant-symbolic', + ferry_terminal: 'route-transit-ferry-symbolic', + food_court: 'restaurant-symbolic', + fuel: 'fuel-symbolic', + hospital: 'hospital-symbolic', + kindergarten: 'school-symbolic', + night_club: 'bar-symbolic', + parking: 'parking-sign-symbolic', + post_office: 'post-box-symbolic', + pub: 'pub-symbolic', + restaurant: 'restaurant-symbolic', + school: 'school-symbolic', + university: 'school-symbolic' + }, + building: { + railway_station: 'route-transit-train', + _: 'building-symbolic' + }, + highway: { + bus_stop: 'route-transit-bus-symbolic', + cycleway: 'route-bike-symbolic', + footway: 'route-pedestrian-symbolic', + pedestrian: 'route-pedestrian-symbolic', + platform: 'route-transit-bus-symbolic', + steps: 'route-pedestrian-symbolic', + path: 'route-pedestrian-symbolic', + _: 'route-car-symbolic' + }, + leisure: { + nature_reserve: 'tree-symbolic', + park: 'tree-symbolic' + }, + natural: { + hill: 'mountain-symbolic', + peak: 'mountain-symbolic', + volcano: 'mountain-symbolic' + }, + office: { + _: 'building-symbolic' + }, + place: { + borough: 'city-symbolic', + city: 'city-symbolic', + city_block: 'building-symbolic', + hamlet: 'town-symbolic', + isolated_dwelling:'building-symbolic', + neighbourhood: 'town-symbolic', + quarter: 'town-symbolic', + square: 'route-pedestrian-symbolic', + suburb: 'town-symbolic', + town: 'town-symbolic', + village: 'town-symbolic' + }, + railway: { + halt: 'route-transit-train-symbolic', + station: 'route-transit-train-symbolic', + stop: 'route-transit-train-symbolic', + tram_stop: 'route-transit-tram-symbolic' + }, + shop: { + convenience: 'shopping-cart-symbolic', + department_store: 'shopping-cart-symbolic', + general: 'shopping-cart-symbolic', + mall: 'shopping-cart-symbolic', + supermarket: 'shopping-cart-symbolic' + }, + tourism: { + alpine_hut: 'bed-symbolic', + apartment: 'bed-symbolic', + attraction: 'photo-camera-symbolic', + artwork: 'photo-camera-symbolic', + chalet: 'bed-symbolic', + gallery: 'museum-symbolic', + guest_house: 'bed-symbolic', + hostel: 'bed-symbolic', + hotel: 'bed-symbolic', + information: 'explore-symbolic', + motel: 'bed-symbolic', + museum: 'museum-symbolic', + picnic_site: 'bench-symbolic', + zoo: 'penguin-symbolic' + } +}; + +/** + * Get place icon name suitable for a Place. + */ +function getIconForPlace(place) { + return TYPE_ICON_MAP?.[place.osmKey]?.[place.osmValue] ?? + TYPE_ICON_MAP?.[place.osmKey]?.['_'] ?? 'map-marker-symbolic'; +} + diff --git a/src/placeListRow.js b/src/placeListRow.js new file mode 100644 index 00000000..abb40b7d --- /dev/null +++ b/src/placeListRow.js @@ -0,0 +1,105 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Utils = imports.utils; + +var ROW_HEIGHT = 55; + +var PlaceListRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/place-list-row.ui', + InternalChildren: [ 'icon', + 'iconStack', + 'contactAvatar', + 'name', + 'details', + 'typeIcon' ], +}, class PlaceListRow extends Gtk.ListBoxRow { + + _init(params) { + let place = params.place; + delete params.place; + + let searchString = params.searchString || ''; + delete params.searchString; + + let type = params.type; + delete params.type; + + params.height_request = ROW_HEIGHT; + super._init(params); + this.update(place, type, searchString); + } + + update(place, type, searchString) { + this.place = place; + let formatter = new PlaceFormatter.PlaceFormatter(this.place); + this.title = formatter.title; + let markup = GLib.markup_escape_text(formatter.title, -1); + + this._name.label = this._boldMatch(markup, searchString); + this._details.label = GLib.markup_escape_text(formatter.getDetailsString(),-1); + + if (place instanceof ContactPlace.ContactPlace) { + this._iconStack.set_visible_child(this._contactAvatar); + + this._contactAvatar.text = formatter.title; + + if (place.icon) { + Utils.load_icon(place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } else { + this._contactAvatar.set_image_load_func(null); + } + } else if (place.icon) { + this._iconStack.set_visible_child(this._icon); + this._icon.gicon = place.icon; + } + + if (type === PlaceStore.PlaceType.RECENT || + type === PlaceStore.PlaceType.RECENT_ROUTE) + this._typeIcon.icon_name = 'document-open-recent-symbolic'; + else if (type === PlaceStore.PlaceType.FAVORITE) + this._typeIcon.icon_name = 'starred-symbolic'; + else if (type === PlaceStore.PlaceType.CONTACT) + this._typeIcon.icon_name = 'avatar-default-symbolic'; + else + this._typeIcon.icon_name = null; + } + + _boldMatch(title, string) { + let canonicalString = Utils.normalizeString(string).toLowerCase(); + let canonicalTitle = Utils.normalizeString(title).toLowerCase(); + + let index = canonicalTitle.indexOf(canonicalString); + + if (index !== -1) { + let substring = title.substring(index, index + string.length); + title = title.replace(substring, substring.bold()); + } + return title; + } +}); diff --git a/src/placeMarker.js b/src/placeMarker.js new file mode 100644 index 00000000..3aba8c8b --- /dev/null +++ b/src/placeMarker.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; + +var PlaceMarker = GObject.registerClass( +class PlaceMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this.add_actor(this._actorFromIconName('mark-location', 32)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: this.height - 3 }; + } + + _hasBubble() { + return true; + } +}); diff --git a/src/placePopover.js b/src/placePopover.js new file mode 100644 index 00000000..4a0f0d63 --- /dev/null +++ b/src/placePopover.js @@ -0,0 +1,143 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceListRow = imports.placeListRow; +const PlaceStore = imports.placeStore; +const SearchPopover = imports.searchPopover; + +const _PLACE_ICON_SIZE = 20; + +var PlacePopover = GObject.registerClass({ + Signals : { + 'selected' : { param_types: [ GObject.TYPE_OBJECT ] } + }, + Template: 'resource:///org/gnome/Maps/ui/place-popover.ui', + InternalChildren: [ 'scrolledWindow', + 'stack', + 'spinner', + 'list', + 'noResultsLabel', + 'errorLabel' ], +}, class PlacePopover extends SearchPopover.SearchPopover { + + _init(props) { + let numVisible = props.num_visible; + delete props.num_visible; + + this._maxChars = props.maxChars; + delete props.maxChars; + + props.transitions_enabled = false; + super._init(props); + + this._entry = this.relative_to; + + this._list.connect('row-activated', (list, row) => { + if (row) + this.emit('selected', row.place); + }); + + this._list.set_header_func((row, before) => { + let header = new Gtk.Separator(); + if (before) + row.set_header(header); + else + row.set_header(null); + }); + + let rowHeight = PlaceListRow.ROW_HEIGHT; + this._scrolledWindow.min_content_height = numVisible * rowHeight + 6; + + // This silents warning at Maps exit about this widget being + // visible but not mapped. + this.connect('unmap', (popover) => popover.hide()); + } + + showSpinner() { + this._spinner.start(); + this._stack.visible_child = this._spinner; + + if (!this.visible) + this.show(); + } + + showResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._scrolledWindow; + + let row = this._list.get_row_at_index(0); + if (row) + this._list.select_row(row); + + if (!this.visible) + this.show(); + } + + showNoResult() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._noResultsLabel; + } + + showError() { + if (this._spinner.active) + this._spinner.stop(); + + this._stack.visible_child = this._errorLabel; + } + + updateResult(places, searchString) { + let i = 0; + + places.forEach((p) => { + let row = this._list.get_row_at_index(i); + + // update existing row, if there is one, otherwise create new + if (row) + row.update(p.place, p.type, searchString); + else + this._addRow(p.place, p.type, searchString); + + i++; + }); + + // remove remaining rows + let row = this._list.get_row_at_index(i); + + while (row) { + this._list.remove(row); + row = this._list.get_row_at_index(i); + } + } + + _addRow(place, type, searchString) { + let row = new PlaceListRow.PlaceListRow({ place: place, + searchString: searchString, + type: type, + can_focus: true }); + this._list.insert(row, -1); + } +}); diff --git a/src/placeStore.js b/src/placeStore.js new file mode 100644 index 00000000..8dd8ed4a --- /dev/null +++ b/src/placeStore.js @@ -0,0 +1,359 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gtk = imports.gi.Gtk; + +const ContactPlace = imports.contactPlace; +const Place = imports.place; +const StoredRoute = imports.storedRoute; +const Utils = imports.utils; + +const _PLACES_STORE_FILE = 'maps-places.json'; +const _ICON_SIZE = 20; +const _ONE_DAY = 1000 * 60 * 60 * 24; // one day in ms +const _STALE_THRESHOLD = 7; // mark the osm information as stale after a week + +var PlaceType = { + ANY: -1, + RECENT: 0, + FAVORITE: 1, + CONTACT: 2, + RECENT_ROUTE: 3 +}; + +var Columns = { + PLACE_ICON: 0, + PLACE: 1, + NAME: 2, + TYPE: 3, + ADDED: 4, + LANGUAGE: 5 +}; + +var PlaceStore = GObject.registerClass( +class PlaceStore extends Gtk.ListStore { + + _init(params) { + this._recentPlacesLimit = params.recentPlacesLimit; + delete params.recentPlacesLimit; + + this._recentRoutesLimit = params.recentRoutesLimit; + delete params.recentRoutesLimit; + + this._numRecentPlaces = 0; + this._numRecentRoutes = 0; + this.filename = GLib.build_filenamev([GLib.get_user_data_dir(), + _PLACES_STORE_FILE]); + this._typeTable = {}; + this._language = Utils.getLanguage(); + + super._init(params); + this.set_column_types([GdkPixbuf.Pixbuf, + GObject.TYPE_OBJECT, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_DOUBLE, + GObject.TYPE_STRING]); + + this.set_sort_column_id(Columns.ADDED, Gtk.SortType.ASCENDING); + } + + _addPlace(place, type) { + this._setPlace(this.append(), place, type, new Date().getTime(), + this._language); + this._store(); + } + + _addContact(place) { + if (this.exists(place, PlaceType.CONTACT)) { + return; + } + + this._addPlace(place, PlaceType.CONTACT); + } + + _addFavorite(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.FAVORITE)) { + return; + } + + if (this.exists(place, PlaceType.RECENT)) { + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + return p.uniqueID === place.uniqueID; + }, true); + } + this._addPlace(place, PlaceType.FAVORITE); + } + + _addRecent(place) { + if (!place.store) + return; + + if (this.exists(place, PlaceType.RECENT)) { + this.updatePlace(place); + return; + } + + if (this._numRecentPlaces === this._recentPlacesLimit) { + // Since we sort by added, the oldest recent will be + // the first one we encounter. + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentPlaces--; + return true; + } + return false; + }, true); + } + this._addPlace(place, PlaceType.RECENT); + this._numRecentPlaces++; + } + + _addRecentRoute(stored) { + if (this.exists(stored, PlaceType.RECENT_ROUTE)) + return; + + if (stored.containsCurrentLocation) + return; + + if (this._numRecentRoutes >= this._recentRoutesLimit) { + this._removeIf((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + + if (type === PlaceType.RECENT_ROUTE) { + let place = model.get_value(iter, Columns.PLACE); + this._typeTable[place.uniqueID] = null; + this._numRecentRoutes--; + return true; + } + return false; + }, true); + } + this._addPlace(stored, PlaceType.RECENT_ROUTE); + this._numRecentRoutes++; + } + + load() { + if (!GLib.file_test(this.filename, GLib.FileTest.EXISTS)) + return; + + let buffer = Utils.readFile(this.filename); + if (buffer === null) + return; + try { + let jsonArray = JSON.parse(Utils.getBufferText(buffer)); + jsonArray.forEach(({ place, type, added, language }) => { + // We expect exception to be thrown in this line when parsing + // gnome-maps 3.14 or below place stores since the "place" + // key is not present. + if (!place.id) + return; + + // GtkListStore doesn't seem to handle null/undefined for strings + if (!language) + language = ''; + + let p; + if (type === PlaceType.RECENT_ROUTE) { + if (this._numRecentRoutes >= this._recentRoutesLimit) + return; + p = StoredRoute.StoredRoute.fromJSON(place); + this._numRecentRoutes++; + } else { + p = Place.Place.fromJSON(place); + if (type === PlaceType.RECENT) + this._numRecentPlaces++; + } + this._setPlace(this.append(), p, type, added, language); + }); + } catch (e) { + throw new Error('failed to parse places file'); + } + } + + addPlace(place, type) { + if (type === PlaceType.FAVORITE) + this._addFavorite(place, type); + else if (type === PlaceType.RECENT) + this._addRecent(place, type); + else if (type === PlaceType.CONTACT) + this._addContact(place, type); + else if (type === PlaceType.RECENT_ROUTE) + this._addRecentRoute(place); + } + + removePlace(place, placeType) { + if (!this.exists(place, placeType)) + return; + + this._removeIf((model, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + this._typeTable[place.uniqueID] = null; + return true; + } + return false; + }, true); + this._store(); + } + + getModelForPlaceType(placeType) { + let filter = new Gtk.TreeModelFilter({ child_model: this }); + + filter.set_visible_func((model, iter) => { + let type = model.get_value(iter, Columns.TYPE); + return (type === placeType); + }); + + return filter; + } + + _store() { + let jsonArray = []; + this.foreach((model, path, iter) => { + let place = model.get_value(iter, Columns.PLACE); + let type = model.get_value(iter, Columns.TYPE); + let added = model.get_value(iter, Columns.ADDED); + let language = model.get_value(iter, Columns.LANGUAGE); + + if (!place || !place.store) + return; + jsonArray.push({ + place: place.toJSON(), + type: type, + added: added, + language: language + }); + }); + + let buffer = JSON.stringify(jsonArray); + if (!Utils.writeFile(this.filename, buffer)) + log('Failed to write places file!'); + } + + _setPlace(iter, place, type, added, language) { + this.set(iter, + [Columns.PLACE, + Columns.NAME, + Columns.TYPE, + Columns.ADDED, + Columns.LANGUAGE], + [place, + place.name, + type, + added, + language]); + + if (place.icon !== null) { + Utils.load_icon(place.icon, _ICON_SIZE, (pixbuf) => { + this.set(iter, [Columns.ICON], [pixbuf]); + }); + } + this._typeTable[place.uniqueID] = type; + } + + get(place) { + let storedPlace = null; + + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + if (p.uniqueID === place.uniqueID) { + storedPlace = p; + return true; + } + return false; + }); + return storedPlace; + } + + isStale(place) { + if (!this.exists(place, null)) + return false; + + let added = null; + let language = null; + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let p_type = model.get_value(iter, Columns.TYPE); + added = model.get_value(iter, Columns.ADDED); + language = model.get_value(iter, Columns.LANGUAGE); + } + }); + + let now = new Date().getTime(); + let days = Math.abs(now - added) / _ONE_DAY; + + return language !== this._language || days >= _STALE_THRESHOLD; + } + + exists(place, type) { + if (type !== undefined && type !== null && this._typeTable[place.uniqueID] !== undefined) + return this._typeTable[place.uniqueID] === type; + else + return this._typeTable[place.uniqueID] !== undefined && + this._typeTable[place.uniqueID] !== null; + } + + existsWithOsmTypeAndId(osmType, osmId) { + let id = osmType + '-' + osmId; + if (this._typeTable[id]) + return this._typeTable[id]; + else + return null; + } + + _removeIf(evalFunc, stop) { + this.foreach((model, path, iter) => { + if (evalFunc(model, iter)) { + this.remove(iter); + if (stop) + return true; + } + return false; + }); + } + + updatePlace(place) { + this.foreach((model, path, iter) => { + let p = model.get_value(iter, Columns.PLACE); + + if (p.uniqueID === place.uniqueID) { + let type = model.get_value(iter, Columns.TYPE); + this._setPlace(iter, place, type, new Date().getTime(), + this._language); + this._store(); + return; + } + }); + } +}); diff --git a/src/placeView.js b/src/placeView.js new file mode 100644 index 00000000..70fca550 --- /dev/null +++ b/src/placeView.js @@ -0,0 +1,663 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Geocode = imports.gi.GeocodeGlib; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const Format = imports.format; + +const Application = imports.application; +const ContactPlace = imports.contactPlace; +const Overpass = imports.overpass; +const Place = imports.place; +const PlaceIcons = imports.placeIcons; +const PlaceViewImage = imports.placeViewImage; +const PlaceButtons = imports.placeButtons; +const PlaceFormatter = imports.placeFormatter; +const PlaceStore = imports.placeStore; +const Translations = imports.translations; +const Utils = imports.utils; +const Wikipedia = imports.wikipedia; + +// maximum dimension of thumbnails to fetch from Wikipedia +const THUMBNAIL_FETCH_SIZE = 360; + +// Unicode left-to-right marker +const LRM = '\u200E'; + +var PlaceView = GObject.registerClass({ + Properties: { + 'overpass-place': GObject.ParamSpec.object('overpass-place', + 'Overpass Place', + 'The place as filled in by Overpass', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class PlaceView extends Gtk.Box { + + _init(params) { + this._place = params.place; + delete params.place; + + let mapView = params.mapView; + delete params.mapView; + + /* This mode is used in PlaceBar for inline current location details. + It hides the title box and decreases the start margin on the rows. */ + this._inlineMode = !!params.inlineMode; + delete params.inlineMode; + + super._init(params); + + let ui = Utils.getUIObject('place-view', [ 'bubble-main-box', + 'bubble-spinner', + 'bubble-thumbnail', + 'thumbnail-separator', + 'label-title', + 'native-name', + 'contact-avatar', + 'address-label', + 'bubble-main-stack', + 'bubble-content-area', + 'place-buttons', + 'send-to-button-alt', + 'title-box' ]); + this._title = ui.labelTitle; + this._nativeName = ui.nativeName; + this._thumbnail = ui.bubbleThumbnail; + this._thumbnailSeparator = ui.thumbnailSeparator; + this._content = ui.bubbleContentArea; + this._mainStack = ui.bubbleMainStack; + this._spinner = ui.bubbleSpinner; + this._mainBox = ui.bubbleMainBox; + this._contactAvatar = ui.contactAvatar; + this._addressLabel = ui.addressLabel; + + this.add(this._mainStack); + + let placeButtons = new PlaceButtons.PlaceButtons({ place: this._place, + mapView: mapView }); + placeButtons.connect('place-edited', this._onPlaceEdited.bind(this)); + ui.placeButtons.add(placeButtons); + + if (this.place.isCurrentLocation) { + /* Current Location bubbles have a slightly different layout, to + avoid awkward whitespace */ + + /* hide the normal button area */ + ui.placeButtons.visible = false; + + /* show the top-end-corner share button instead */ + ui.sendToButtonAlt.visible = true; + placeButtons.initSendToButton(ui.sendToButtonAlt); + + /* adjust some margins */ + ui.titleBox.margin = 12; + ui.titleBox.marginStart = 18; + ui.titleBox.spacing = 18; + } + + /* Set up contact avatar */ + if (this.place instanceof ContactPlace.ContactPlace) { + this._contactAvatar.visible = true; + Utils.load_icon(this.place.icon, 32, (pixbuf) => { + this._contactAvatar.set_image_load_func((size) => Utils.loadAvatar(pixbuf, size)); + }); + } + + this.loading = true; + + this._placeDetails = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, + visible: true, + hexpand: true }); + this.content.attach(this._placeDetails, 0, 0, 1, 1); + + if (this.place.isCurrentLocation) { + this._populate(this.place); + } else { + let overpass = new Overpass.Overpass(); + + /* use a property binding from the Overpass instance to avoid + * accessing this object after the underlying GObject has + * been finalized */ + overpass.bind_property('place', this, 'overpass-place', + GObject.BindingFlags.DEFAULT); + this.connect('notify::overpass-place', () => this._onInfoAdded()); + + if (Application.placeStore.exists(this.place, null)) { + + // If the place is stale, update from Overpass. + if (Application.placeStore.isStale(this.place)) { + overpass.addInfo(this.place); + } else { + this._place = Application.placeStore.get(this.place); + this._populate(this.place); + } + } else if (this.place.store && !this.place.prefilled) { + overpass.addInfo(this.place); + } else { + this._populate(this.place); + } + } + + if (this._inlineMode) { + ui.titleBox.hide(); + } + + this.updatePlaceDetails(); + + this._place.connect('notify::location', () => this._updateLocation()); + } + + get place() { + return this._place; + } + + get content() { + return this._content; + } + + get thumbnail() { + return this._thumbnail.pixbuf; + } + + set thumbnail(val) { + if (val) { + this._thumbnail.pixbuf = val; + this._thumbnail.visible = true; + this._thumbnailSeparator.visible = true; + } + } + + get loading() { + return this._spinner.active; + } + set loading(val) { + this._mainStack.set_visible_child(val ? this._spinner : this._mainBox); + this._spinner.active = val; + } + + updatePlaceDetails() { + let place = this.place; + let formatter = new PlaceFormatter.PlaceFormatter(place); + + let address = formatter.rows.map((row) => { + row = row.map(function(prop) { + return GLib.markup_escape_text(place[prop], -1); + }); + return row.join(', '); + }); + if (address.length > 0) { + this._addressLabel.label = address.join('\n'); + this._addressLabel.show(); + } else { + this._addressLabel.hide(); + } + + this._title.label = formatter.title; + this._contactAvatar.text = formatter.title; + + /* hide native name by default, so that it is only shown when it + * should, in case it changed when re-applying changes from Overpass. + * This could happen if the locale changed since last run. + */ + this._nativeName.visible = false; + + /* show native name unless it's equal to the localized name, or + * if the localized name is a substring of the native name, as can + * be the case in e.g. duo-lingual native names, such as is used in + * Brussels of the form "French name - Dutch name" + */ + if (place.nativeName && !place.nativeName.includes(place.name)) { + this._nativeName.label = place.nativeName; + + /* only show native name if there's installed fonts capable of + * showing it + */ + if (this._nativeName.get_layout().get_unknown_glyphs_count() === 0) + this._nativeName.visible = true; + } + } + + _onInfoAdded() { + this._populate(this.place); + if (Application.placeStore.exists(this.place, null)) + Application.placeStore.updatePlace(this.place); + else + Application.placeStore.addPlace(this.place, PlaceStore.PlaceType.RECENT); + } + + _formatWikiLink(wiki) { + let lang = Wikipedia.getLanguage(wiki); + let article = Wikipedia.getArticle(wiki); + + return Format.vprintf('https://%s.wikipedia.org/wiki/%s', [ lang, article ]); + } + + _createContent(place) { + let content = []; + + if (place.isCurrentLocation) { + let coordinates = place.location.latitude.toFixed(5) + + ', ' + + place.location.longitude.toFixed(5); + let accuracyDescription = Utils.getAccuracyDescription(this.place.location.accuracy); + + content.push({ label: _("Coordinates"), + icon: 'map-marker-symbolic', + info: coordinates }); + + content.push({ label: _("Accuracy"), + icon: 'find-location-symbolic', + /* Translators: %s can be "Unknown", "Exact" or "%f km" (or ft/mi/m) */ + info: _("Accuracy: %s").format(accuracyDescription) }); + } + + if (place.website) { + if (Utils.isValidWebsite(place.website)) { + content.push({ label: _("Website"), + icon: 'web-browser-symbolic', + info: GLib.markup_escape_text(place.website, -1), + linkUrl: place.website }); + } + } + + if (place.phone) { + /* since the phone numbers are typically always rendered + * left-to-right, insert an explicit LRM char to avoid issues + * with phone numbers in international format starting with a + + * which is considered a "weak" character to determine Unicode + * text direction + */ + let phone = { label: _("Phone number"), + icon: 'phone-oldschool-symbolic', + info: LRM + GLib.markup_escape_text(place.phone, -1) }; + + if (Utils.uriSchemeSupported('tel')) { + /* RFC3966 only allows "-", '.", "(", and ")" as visual + * separator characters in a global phone number, no space */ + phone.linkUrl = 'tel:%s'.format(place.phone.replace(/\s+/g, '')); + } + + content.push(phone); + } + + if (place.email && Utils.isValidEmail(place.email)) { + content.push({ label: _("E-mail"), + icon: 'mail-unread-symbolic', + info: GLib.markup_escape_text(place.email, -1), + linkUrl: 'mailto:%s'.format(place.email) }); + } + + if (place.isEatingAndDrinking) { + switch (place.takeaway) { + case 'yes': + /* Translators: + * The establishment offers customers to purchase meals + * (or similar) to be consumed elsewhere + */ + content.push({ info: _("Offers takeaway"), + icon: PlaceIcons.getIconForPlace(place) }); + break; + case 'no': + /* Translators: + * The establishment only offers customers to purchase + * meals (or similar) to be consumed on-premise. + */ + content.push({ info: _("Does not offer takeaway"), + icon: PlaceIcons.getIconForPlace(place) }); + break; + case 'only': + /* Translators: + * The establishment only offers customers to purchase + * meals (or similar) to be consumed elsewhere. E.g. + * there is no seating on-premise for eating/drinking + */ + content.push({ info: _("Only offers takeaway"), + icon: PlaceIcons.getIconForPlace(place) }); + break; + } + } + + if (place.openingHours) { + content.push({ label: _("Opening hours"), + icon: 'emoji-recent-symbolic', + grid: Translations.translateOpeningHours(place.openingHours) }); + } + + switch(place.internetAccess) { + case 'yes': + /* Translators: + * There is public internet access but the particular kind is unknown. + */ + content.push({ info: _("Public internet access"), + icon: 'network-wireless-signal-excellent-symbolic' }); + break; + + case 'no': + /* Translators: + * no internet access is offered in a place where + * someone might expect it. + */ + content.push({ info: _("No internet access"), + icon: 'network-wireless-offline-symbolic' }); + break; + + case 'wlan': + /* Translators: + * This means a WLAN Hotspot, also known as wireless, wifi or Wi-Fi. + */ + content.push({ info: _("Public Wi-Fi"), + icon: 'network-wireless-signal-excellent-symbolic' }); + break; + + case 'wired': + /* Translators: + * This means a a place where you can plug in your laptop with ethernet. + */ + content.push({ info: _("Wired internet access"), + icon: 'network-wired-symbolic' }); + break; + + case 'terminal': + /* Translators: + * Like internet cafe or library where the computer is given. + */ + content.push({ info: _("Computers available for use"), + icon: 'computer-symbolic' }); + break; + + case 'service': + /* Translators: + * This means there is personnel which helps you in case of problems. + */ + content.push({ info: _("Internet assistance available"), + icon: 'computer-symbolic' }); + break; + } + + if (place.toilets === 'no') { + content.push({ info: _("No toilets available"), + icon: 'no-toilets-symbolic' }); + } else if (place.toilets === 'yes') { + content.push({ info: _("Toilets available"), + icon: 'toilets-symbolic' }); + } + + switch(place.wheelchair) { + case 'yes': + /* Translators: + * This means wheelchairs have full unrestricted access. + */ + content.push({ info: _("Wheelchair accessible"), + icon: 'wheelchair-symbolic' }); + break; + + case 'limited': + /* Translators: + * This means wheelchairs have partial access (e.g some areas + * can be accessed and others not, areas requiring assistance + * by someone pushing up a steep gradient). + */ + content.push({ info: _("Limited wheelchair accessibility"), + icon: 'wheelchair-limited-symbolic' }); + break; + + case 'no': + /* Translators: + * This means wheelchairs have no unrestricted access + * (e.g. stair only access). + */ + content.push({ info: _("Not wheelchair accessible"), + icon: 'no-wheelchair-symbolic' }); + break; + + case 'designated': + /* Translators: + * This means that the way or area is designated or purpose built + * for wheelchairs (e.g. elevators designed for wheelchair access + * only). This is rarely used. + */ + content.push({ info: _("Designated for wheelchair users"), + icon: 'wheelchair-symbolic' }); + break; + } + + if (place.population) { + /* TODO: this is a bit of a work-around to re-interpret the population, + * stored as a string into an integer to convert back to a locale- + * formatted string. Ideally it should be kept as an integer value + * in the Place class. But this will also need to be handled by the + * PlaceStore, possible in a backwards-compatible way + */ + content.push({ label: _("Population"), + icon: 'system-users-symbolic', + info: Utils.prettyPopulation(parseInt(place.population)) }); + } + + /* The default value for a place's altitude is -G_MAXDOUBLE, so we can + * compare to an impossibly low altitude to see if one is set */ + if (place.location.altitude > -1000000000.0) { + let alt = place.location.altitude; + let info; + + if (alt > 0) { + info = Utils.prettyDistance(alt, true); + } else if (alt < 0) { + /** + * Translators: this is a label indicating an altitude below + * sea level, where the %s placeholder is the altitude relative + * to mean sea level in the "negative direction" + */ + info = _("%s below sea level"). + format(Utils.prettyDistance(-alt, true)); + } else { + /** + * Translators: this indicates a place is located at (or very + * close to) mean sea level + */ + info = _("At sea level"); + } + + content.push({ label: _("Altitude"), + icon: 'mountain-symbolic', + info: info }); + } + + if (place.religion) { + content.push({ label: _("Religion:"), + info: Translations.translateReligion(place.religion) }); + } + + if (place.wiki && Wikipedia.isValidWikipedia(place.wiki)) { + content.push({ type: 'wikipedia', info: '' }); + } + + return content; + } + + _attachContent(content) { + content.forEach(({ type, label, icon, linkUrl, info, grid }) => { + let separator = new Gtk.Separator({ visible: true }); + separator.get_style_context().add_class('no-margin-separator'); + this._placeDetails.add(separator); + + let box = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, + visible: true, + marginStart: 18, + marginEnd: 18, + marginTop: 6, + marginBottom: 6, + spacing: 12 }); + + if (this._inlineMode) { + box.marginStart = 6; + } + + if (icon) { + let widget = new Gtk.Image({ icon_name: icon, + visible: true, + xalign: 1, + valign: Gtk.Align.START, + halign: Gtk.Align.END }); + + if (label) { + widget.tooltip_markup = label; + } + + box.add(widget); + } else if (label) { + let widget = new Gtk.Label({ label: label.italics(), + visible: true, + use_markup: true, + yalign: 0, + halign: Gtk.Align.END }); + box.add(widget); + } + + if (linkUrl) { + let uri = GLib.markup_escape_text(linkUrl, -1); + /* double-escape the tooltip text, as GTK treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + info = '%s'.format(uri, + tooltipText, + info); + } + + let widget; + + if (grid) { + widget = new Gtk.Grid({ visible: true, + column_spacing: 8 }); + + for (let i = 0; i < grid.length; i++) { + let row = grid[i]; + + for (let j = 0; j < row.length; j++) { + let label = new Gtk.Label({ label: row[j], + visible: true, + xalign: 0, + hexpand: false, + wrap: true, + halign: Gtk.Align.FILL }); + + if (j === 1) { + /* set tabular digits for the second column to get + * aligned times + */ + let attrList = Pango.AttrList.new(); + let tnum = Pango.AttrFontFeatures.new('tnum'); + + attrList.insert(tnum); + label.set_attributes(attrList); + } + + widget.attach(label, j, i, 1, 1); + } + } + } else { + widget = new Gtk.Label({ label: info, + visible: true, + use_markup: true, + max_width_chars: 30, + wrap: true, + xalign: 0, + hexpand: true, + halign: Gtk.Align.FILL }); + + if (type === 'wikipedia') { + box.marginTop = 14; + box.marginBottom = 18; + this._wikipediaLabel = widget; + } + } + + box.add(widget); + this._placeDetails.add(box); + }); + } + + _populate(place) { + // refresh place view + this._clearView(); + + let content = this._createContent(place); + this._attachContent(content); + + if (place.wiki && Wikipedia.isValidWikipedia(place.wiki)) { + this._requestWikipedia(place.wiki); + } + + this.updatePlaceDetails(); + this.loading = false; + } + + _requestWikipedia(wiki) { + Wikipedia.fetchArticleInfo(wiki, + THUMBNAIL_FETCH_SIZE, + this._onWikiMetadataComplete.bind(this), + this._onThumbnailComplete.bind(this)); + } + + _onThumbnailComplete(thumbnail) { + this.thumbnail = thumbnail; + } + + _onWikiMetadataComplete(wiki, metadata) { + if (metadata.extract) { + let text = GLib.markup_escape_text(metadata.extract, -1); + let link = this._formatWikiLink(wiki); + + /* If the text goes past some number of characters (see + * wikipedia.js), it is ellipsized with '...' + * GNOME HIG says to use U+2026 HORIZONTAL ELLIPSIS instead. + * Also, trim whitespace. */ + text = text.replace(/\s*\.\.\.\s*$/, '…'); + + let uri = GLib.markup_escape_text(link, -1); + /* double-escape the tooltip text, as GTK treats it as markup */ + let tooltipText = GLib.markup_escape_text(uri, -1); + + /* Translators: This is the text for the "Wikipedia" link at the end + of summaries */ + this._wikipediaLabel.label = `${text} ${ _("Wikipedia") }`; + } + } + + // clear the view widgets to be able to re-populate an updated place + _clearView() { + this._placeDetails.get_children().forEach((child) => this._placeDetails.remove(child)); + } + + // called when the place's location changes (e.g. for the current location) + _updateLocation() { + this._populate(this.place); + } + + /* called when the place is edited via the OSM edit dialog */ + _onPlaceEdited() { + this._populate(this._place); + } +}); diff --git a/src/placeViewImage.js b/src/placeViewImage.js new file mode 100644 index 00000000..56d0c2cb --- /dev/null +++ b/src/placeViewImage.js @@ -0,0 +1,101 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 James Westman + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: James Westman + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* The maximum aspect ratio, after which the image will be cropped vertically */ +const MAX_ASPECT_RATIO = 1; + +var PlaceViewImage = GObject.registerClass( +class PlaceViewImage extends Gtk.DrawingArea { + _init(params) { + super._init(params); + + this._pixbuf = null; + this._cached = null; + } + + get pixbuf() { + return this._pixbuf; + } + + set pixbuf(val) { + /* crop the pixbuf to the max aspect ratio, if necessary */ + if (val.height / val.width > MAX_ASPECT_RATIO) { + let y = (val.height - val.width * MAX_ASPECT_RATIO) / 2; + val = val.new_subpixbuf(0, y, val.width, val.width * MAX_ASPECT_RATIO); + } + + this._pixbuf = val; + this.queue_resize(); + } + + vfunc_draw(cr) { + let [{x, y, width, height}, baseline] = this.get_allocated_size(); + + if (this._pixbuf === null || width === 0 || height === 0) { + return; + } + + width *= this.scale_factor; + height *= this.scale_factor; + + /* Cache surfaces so we don't have to do as much scaling */ + if (this._cached === null || width !== this._cached.getWidth() || height !== this._cached.getHeight()) { + // create a new, scaled image + this._cached = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + + let cr_scaled = new Cairo.Context(this._cached); + cr_scaled.scale(width / this._pixbuf.width, height / this._pixbuf.height); + Gdk.cairo_set_source_pixbuf(cr_scaled, this._pixbuf, 0, 0); + cr_scaled.paint(); + } + + cr.save(); + + if (this.scale_factor !== 1) { + cr.scale(1 / this.scale_factor, 1 / this.scale_factor); + } + + cr.setSourceSurface(this._cached, 0, 0); + + cr.paint(); + cr.restore(); + + return false; + } + + vfunc_get_request_mode() { + return Gtk.SizeRequestMode.HEIGHT_FOR_WIDTH; + } + + vfunc_get_preferred_height_for_width(width) { + if (this._pixbuf) { + let height = (this._pixbuf.height / this._pixbuf.width) * width; + return [height, height]; + } else { + return [0, 0]; + } + } +}); diff --git a/src/printLayout.js b/src/printLayout.js new file mode 100644 index 00000000..e57fac57 --- /dev/null +++ b/src/printLayout.js @@ -0,0 +1,373 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; +const PangoCairo = imports.gi.PangoCairo; + +const Application = imports.application; +const Color = imports.color; +const MapView = imports.mapView; +const MapSource = imports.mapSource; +const TurnPointMarker = imports.turnPointMarker; +const Utils = imports.utils; + +/* Following constant has unit as meters */ +const _SHORT_LAYOUT_MAX_DISTANCE = 3000; + +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +/* All following constants are ratios of surface size to page size */ +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; + +function newFromRoute(route, pageWidth, pageHeight) { + /* + * To avoid the circular dependencies, imports has + * been carried out in this method + */ + if (route.distance > _SHORT_LAYOUT_MAX_DISTANCE) { + return new imports.longPrintLayout.LongPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } else { + return new imports.shortPrintLayout.ShortPrintLayout({ + route: route, + pageWidth: pageWidth, + pageHeight: pageHeight + }); + } +} + +var PrintLayout = GObject.registerClass({ + Abstract: true, + Signals: { + 'render-complete': { } + } +}, class PrintLayout extends GObject.Object { + + _init(params) { + this._pageWidth = params.pageWidth; + delete params.pageWidth; + + this._pageHeight = params.pageHeight; + delete params.pageHeight; + + this._totalSurfaces = params.totalSurfaces; + delete params.totalSurfaces; + + super._init(params); + + this.numPages = 0; + this.surfaceObjects = []; + this._surfacesRendered = 0; + this.renderFinished = false; + this._initSignals(); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + // directional override character to force alignment of labels + this._dirChar = this._rtl ? '\u200F' : '\u200E'; + this._fontDescription = Pango.FontDescription.from_string("sans"); + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + this._createNewPage(); + let dy = 0; + + /* + * Before rendering each surface, page adjustment is done. It is checked if it + * can be adjusted in current page, otherwise a new page is created + */ + dy = headerHeight + headerMargin; + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + dy = mapViewHeight + mapViewMargin; + this._adjustPage(dy); + let turnPointsLength = this._route.turnPoints.length; + let allTurnPoints = this._createTurnPointArray(0, turnPointsLength); + this._drawMapView(mapViewWidth, mapViewHeight, + mapViewZoomLevel, allTurnPoints); + this._cursorY += dy; + } + + _initSignals() { + this.connect('render-complete', () => this.renderFinished = true); + } + + _createMarker(turnPoint) { + return new TurnPointMarker.TurnPointMarker({ + turnPoint: turnPoint, + queryPoint: {} + }); + } + + _drawMapView(width, height, zoomLevel, turnPoints) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let locations = []; + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + view.set_map_source(mapSource); + view.add_layer(markerLayer); + + this._addRouteLayer(view); + + turnPoints.forEach((turnPoint) => { + locations.push(turnPoint.coordinate); + if (turnPoint.isStop()) { + markerLayer.add_marker(this._createMarker(turnPoint)); + } + }); + + view.ensure_visible(this._createBBox(locations), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createBBox(locations) { + let bbox = this._route.createBBox(locations); + + return new Champlain.BoundingBox({ top: bbox.top, + left: bbox.left, + bottom: bbox.bottom, + right: bbox.right }); + } + + _createTurnPointArray(startIndex, endIndex) { + let turnPointArray = []; + for (let i = startIndex; i < endIndex; i++) { + turnPointArray.push(this._route.turnPoints[i]); + } + return turnPointArray; + } + + _addRouteLayer(view) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + view.add_layer(routeLayer); + this._route.path.forEach((node) => routeLayer.add_node(node)); + } + + _drawIcon(cr, iconName, width, height) { + let theme = Gtk.IconTheme.get_default(); + let pixbuf = theme.load_icon(iconName, height, 0); + let iconWidth = pixbuf.width; + let iconHeight = pixbuf.height; + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + this._rtl ? + width - height + (height - iconWidth) / 2 : + (height - iconWidth) / 2, + (height - iconWidth) / 2); + cr.paint(); + } + + _createTextLayout(cr, text, width, height, alignment) { + let layout = PangoCairo.create_layout(cr); + + layout.set_text(this._dirChar + text, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(this._fontDescription); + layout.set_alignment(alignment); + layout.set_ellipsize(Pango.EllipsizeMode.END); + + return layout; + } + + _drawText(cr, text, x, y, width, height, alignment) { + this._drawTextWithColor(cr, text, x, y, width, height, '000000', alignment); + } + + _drawTextWithColor(cr, text, x, y, width, height, color, alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + + this._drawTextLayoutWithColor(cr, layout, x, y, width, height, color, + alignment); + } + + _drawTextLayoutWithColor(cr, layout, x, y, width, height, color, alignment) { + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + cr.moveTo(x, y); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawTextVerticallyCentered(cr, text, width, height, x, alignment) { + this._drawTextVerticallyCenteredWithColor(cr, text, width, height, x, + '000000', alignment); + } + + _drawTextVerticallyCenteredWithColor(cr, text, width, height, x, color, + alignment) { + let layout = this._createTextLayout(cr, text, width, height, alignment); + let [pWidth, pHeight] = layout.get_pixel_size(); + let red = Color.parseColor(color, 0); + let green = Color.parseColor(color, 1); + let blue = Color.parseColor(color, 2); + + // place text centered + cr.moveTo(x, (height - pHeight) / 2); + cr.setSourceRGB(red, green, blue); + PangoCairo.show_layout(cr, layout); + } + + _drawInstruction(width, height, turnPoint) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let iconName = turnPoint.iconName; + + if (iconName) { + this._drawIcon(cr, iconName, width, height); + } + + // draw the instruction text + this._drawTextVerticallyCentered(cr, turnPoint.instruction, + width - height * 3, height, + this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + + // draw the distance text + if (turnPoint.distance > 0) { + this._drawTextVerticallyCentered(cr, + Utils.prettyDistance(turnPoint.distance), + height * 2, + height, + this._rtl ? 0 : width - height * 2, + Pango.Alignment.RIGHT); + } + + this._addSurface(surface, x, y, pageNum); + } + + _drawHeader(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let layout = PangoCairo.create_layout(cr); + let from = this._formatQueryPlaceName(0); + let to = this._formatQueryPlaceName(-1); + let header = _("From %s to %s").format(from, to); + let desc = Pango.FontDescription.from_string("sans"); + + layout.set_text(header, -1); + layout.set_height(Pango.units_from_double(height)); + layout.set_width(Pango.units_from_double(width)); + layout.set_font_description(desc); + layout.set_alignment(Pango.Alignment.CENTER); + PangoCairo.layout_path(cr, layout); + cr.setSourceRGB(0.0,0.0,0.0); + cr.fill(); + + this._addSurface(surface, x, y, pageNum); + } + + _addSurface(surface, x, y, pageNum) { + this.surfaceObjects[pageNum].push({ surface: surface, x: x, y: y }); + this._surfacesRendered++; + if (this._surfacesRendered === this._totalSurfaces) + this.emit('render-complete'); + } + + _adjustPage(dy) { + if (this._cursorY + dy > this._pageHeight) + this._createNewPage(); + } + + _createNewPage() { + this.numPages++; + this.surfaceObjects[this.numPages - 1] = []; + this._cursorX = 0; + this._cursorY = 0; + } + + _formatQueryPlaceName(index) { + let query = Application.routeQuery; + if (index === -1) + index = query.filledPoints.length - 1; + let name; + let place = query.filledPoints[index].place; + if (place.name) { + name = place.name; + if (name.length > 25) + name = name.substr(0, 22) + '\u2026'; + } else { + let lat = place.location.latitude.toFixed(5); + let lon = place.location.latitude.toFixed(5); + name = '%s, %s'.format(lat, lon); + } + + return name; + } +}); diff --git a/src/printOperation.js b/src/printOperation.js new file mode 100644 index 00000000..b3307c0a --- /dev/null +++ b/src/printOperation.js @@ -0,0 +1,119 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const PrintLayout = imports.printLayout; +const TransitPrintLayout = imports.transitPrintLayout; +const Utils = imports.utils; + +const _MIN_TIME_TO_ABORT = 3000; + +var PrintOperation = class PrintOperation { + + constructor(params) { + this._mainWindow = params.mainWindow; + delete params.mainWindow; + + this._operation = new Gtk.PrintOperation({ embed_page_setup: true }); + this._operation.connect('begin-print', this._beginPrint.bind(this)); + this._operation.connect('paginate', this._paginate.bind(this)); + this._operation.connect('draw-page', this._drawPage.bind(this)); + + this._abortDialog = new Gtk.MessageDialog({ + transient_for: this._mainWindow, + destroy_with_parent: true, + message_type: Gtk.MessageType.OTHER, + modal: true, + text: _("Loading map tiles for printing"), + secondary_text: _("You can abort printing if this takes too long") + }); + this._abortDialog.add_button(_("Abort printing"), + Gtk.ResponseType.CANCEL); + this._responseId = this._abortDialog.connect('response', + this.onAbortDialogResponse.bind(this)); + + this._runPrintOperation(); + } + + _beginPrint(operation, context, data) { + let route = Application.routingDelegator.graphHopper.route; + let selectedTransitItinerary = + Application.routingDelegator.transitRouter.plan.selectedItinerary; + let width = context.get_width(); + let height = context.get_height(); + + Mainloop.timeout_add(_MIN_TIME_TO_ABORT, () => { + if (!this._layout.renderFinished) { + this._abortDialog.show(); + } + return false; + }, null); + + if (selectedTransitItinerary) { + this._layout = + new TransitPrintLayout.TransitPrintLayout({ itinerary: selectedTransitItinerary, + pageWidth: width, + pageHeight: height }); + } else { + this._layout = PrintLayout.newFromRoute(route, width, height); + } + this._layout.render(); + } + + onAbortDialogResponse(dialog, response) { + if (response === Gtk.ResponseType.DELETE_EVENT || + response === Gtk.ResponseType.CANCEL) { + this._abortDialog.disconnect(this._responseId); + this._operation.cancel(); + this._abortDialog.close(); + } + } + + _paginate(operation, context) { + if (this._layout.renderFinished) { + operation.set_n_pages(this._layout.numPages); + this._abortDialog.close(); + } + return this._layout.renderFinished; + } + + _drawPage(operation, context, page_num, data) { + let cr = context.get_cairo_context(); + this._layout.surfaceObjects[page_num].forEach((so) => { + cr.setSourceSurface(so.surface, so.x, so.y); + cr.paint(); + }); + } + + _runPrintOperation() { + try { + let result = this._operation.run(Gtk.PrintOperationAction.PRINT_DIALOG, + this._mainWindow); + if (result === Gtk.PrintOperationResult.ERROR) { + let error = this._operation.get_error(); + Utils.debug('Failed to print: %s'.format(error)); + } + } catch(e) { + Utils.debug('Failed to print: %s'.format(e.message)); + } + } +}; diff --git a/src/route.js b/src/route.js new file mode 100644 index 00000000..4115a4d4 --- /dev/null +++ b/src/route.js @@ -0,0 +1,180 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; + +const BoundingBox = imports.boundingBox; +const Utils = imports.utils; + +var TurnPointType = { + SHARP_LEFT: 0, + LEFT: 1, + SLIGHT_LEFT: 2, + CONTINUE: 3, + SLIGHT_RIGHT: 4, + RIGHT: 5, + SHARP_RIGHT: 6, + END: 7, + VIA: 8, + ROUNDABOUT: 9, + + // This one is not in GraphHopper, so choose + // a reasonably unlikely number for this + START: 10000, + ELEVATOR: 10001, + UTURN_LEFT: 10002, + UTURN_RIGHT: 10003 +}; + +/* countries/terrotories driving on the left + * source: https://en.wikipedia.org/wiki/Left-_and_right-hand_traffic + */ +const LHT_COUNTRIES = new Set(['AG', 'AI', 'AU', 'BB', 'BD', 'BM', 'BN', 'BS', + 'BT', 'BW', 'CY', 'DM', 'FJ', 'FK', 'GB', 'GB', + 'GD', 'GY', 'HK', 'ID', 'IE', 'IM', 'IN', 'JE', + 'JM', 'JP', 'KE', 'KI', 'KN', 'KY', 'LC', 'LK', + 'LS', 'MO', 'MS', 'MT', 'MU', 'MV', 'MW', 'MY', + 'MZ', 'NA', 'NP', 'NR', 'NZ', 'PG', 'PN', 'PK', + 'SB', 'SC', 'SG', 'SH', 'SR', 'SZ', 'TC', 'TH', + 'TL', 'TO', 'TT', 'TV', 'TZ', 'UG', 'VC', 'VG', + 'VI', 'WS', 'ZA', 'ZM', 'ZW']); + +var Route = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Route extends GObject.Object { + + _init() { + super._init(); + this.reset(); + } + + update({ path, turnPoints, distance, time, bbox }) { + this.path = path; + this.turnPoints = turnPoints; + this.distance = distance; + this.time = time; + this.bbox = bbox || this.createBBox(path); + + this.emit('update'); + } + + reset() { + this.path = []; + this.turnPoints = []; + this.distance = 0; + this.time = 0; + this.bbox = null; + this.emit('reset'); + } + + error(msg) { + this.emit('error', msg); + } + + createBBox(coordinates) { + let bbox = new BoundingBox.BoundingBox(); + coordinates.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }, this); + return bbox; + } +}); + +var TurnPoint = class TurnPoint { + + constructor({ coordinate, type, distance, instruction, turnAngle }) { + this.coordinate = coordinate; + this._type = type; + this.distance = distance; + this.instruction = instruction; + this.iconName = this._getIconName(turnAngle); + } + + get type() { + return this._type; + } + + isStop() { + return this._type === TurnPointType.START + || this._type === TurnPointType.VIA + || this._type === TurnPointType.END; + } + + _getIconName(turnAngle) { + switch(this._type) { + case TurnPointType.SHARP_LEFT: return 'maps-direction-sharpleft-symbolic'; + case TurnPointType.LEFT: return 'maps-direction-left-symbolic'; + case TurnPointType.SLIGHT_LEFT: return 'maps-direction-slightleft-symbolic'; + case TurnPointType.CONTINUE: return 'maps-direction-continue-symbolic'; + case TurnPointType.SLIGHT_RIGHT: return 'maps-direction-slightright-symbolic'; + case TurnPointType.RIGHT: return 'maps-direction-right-symbolic'; + case TurnPointType.SHARP_RIGHT: return 'maps-direction-sharpright-symbolic'; + case TurnPointType.START: return 'maps-point-start-symbolic'; + case TurnPointType.VIA: return 'maps-point-end-symbolic'; + case TurnPointType.END: return 'maps-point-end-symbolic'; + case TurnPointType.ROUNDABOUT: return this._getRoundaboutIconName(turnAngle); + case TurnPointType.ELEVATOR: return 'maps-direction-elevator-symbolic'; + case TurnPointType.UTURN_LEFT: return 'maps-direction-u-turn-left-symbolic'; + case TurnPointType.UTURN_RIGHT: return 'maps-direction-u-turn-right-symbolic'; + default: return ''; + } + } + + _getRoundaboutIconName(turnAngle) { + /* + * To map turnAngle with closest roundabout + * turning angle symbol available. The Algorithm + * calculates the minimum of absolute difference + * between turnAngle and the angle of which map + * has turning symbols. + */ + let minDiff = 2 * Math.PI; + let angle = 0; + if (turnAngle === null) + return 'maps-direction-roundabout-symbolic'; + + if (turnAngle < 0) + turnAngle += 2 * Math.PI; + + for (let x = 0; x < 360; x += 45) { + if (Math.abs(turnAngle - (x / 180) * Math.PI) < minDiff) { + minDiff = Math.abs(turnAngle - (x / 180) * Math.PI); + angle = x; + } + } + // use mirrored icon for left-hand traffic when angle is not zero + return 'maps-direction-roundabout-' + angle + + (angle !== 0 && this._isLefthandTraffic() ? '-lht' : '') + + '-symbolic'; + } + + _isLefthandTraffic() { + let country = + Utils.getCountryCodeForCoordinates(this.coordinate.latitude, + this.coordinate.longitude); + + return LHT_COUNTRIES.has(country); + } +}; diff --git a/src/routeEntry.js b/src/routeEntry.js new file mode 100644 index 00000000..c2b62fc7 --- /dev/null +++ b/src/routeEntry.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielsson + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const PlaceEntry = imports.placeEntry; +const RouteQuery = imports.routeQuery; + +var Type = { + FROM: 0, + TO: 1, + VIA: 2 +}; + +var RouteEntry = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/route-entry.ui', + Children: [ 'iconEventBox' ], + InternalChildren: [ 'entryGrid', + 'icon', + 'button', + 'buttonImage' ] +}, class RouteEntry extends Gtk.Grid { + + _init(params) { + this._type = params.type; + delete params.type; + + this._point = params.point || null; + delete params.point; + + this._mapView = params.mapView || null; + delete params.mapView; + + super._init(params); + + this.entry = this._createEntry(); + this._entryGrid.attach(this.entry, 0, 0, 1, 1); + + // There is no GdkWindow on the widget until it is realized + this._icon.connect('realize', function(icon) { + if (icon.window && icon.window.get_cursor()) + return; + + icon.window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1)); + }); + + switch (this._type) { + case Type.FROM: + let query = Application.routeQuery; + this._buttonImage.icon_name = 'list-add-symbolic'; + this._icon.icon_name = 'maps-point-start-symbolic'; + /* Translators: this is add via location tooltip */ + this._button.tooltip_text = _("Add via location"); + query.connect('notify::points', () => { + this._button.sensitive = query.points.length < RouteQuery.MAX_QUERY_POINTS; + }); + + break; + case Type.VIA: + this._buttonImage.icon_name = 'list-remove-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is remove via location tooltip */ + this._button.tooltip_text = _("Remove via location"); + break; + case Type.TO: + this._buttonImage.icon_name = 'route-reverse-symbolic'; + this._icon.icon_name = 'maps-point-end-symbolic'; + /* Translators: this is reverse route tooltip */ + this._button.tooltip_text = _("Reverse route"); + break; + } + } + + get button() { + return this._button; + } + + get point() { + return this._point; + } + + _createEntry() { + let entry = new PlaceEntry.PlaceEntry({ visible: true, + can_focus: true, + hexpand: true, + receives_default: true, + mapView: this._mapView, + maxChars: 15 }); + if (this._point) { + entry.bind_property('place', + this._point, 'place', + GObject.BindingFlags.BIDIRECTIONAL); + } + + return entry; + } +}); diff --git a/src/routeQuery.js b/src/routeQuery.js new file mode 100644 index 00000000..3b424ec3 --- /dev/null +++ b/src/routeQuery.js @@ -0,0 +1,254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GObject = imports.gi.GObject; +const Geocode = imports.gi.GeocodeGlib; + +const Application = imports.application; +const PlaceStore = imports.placeStore; +const TransitOptions = imports.transitOptions; + +var MAX_QUERY_POINTS = 10; + +var Transportation = { + CAR: 0, + BIKE: 1, + PEDESTRIAN: 2, + TRANSIT: 3, + + toString: function (transportation) { + switch(transportation) { + case Transportation.CAR: return 'car'; + case Transportation.BIKE: return 'bike'; + case Transportation.PEDESTRIAN: return 'foot'; + case Transportation.TRANSIT: return 'transit'; + default: return null; + } + } +}; + +var QueryPoint = GObject.registerClass({ + Properties: { + 'place': GObject.ParamSpec.object('place', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Geocode.Place) + } +}, class QueryPoint extends GObject.Object { + + _init() { + this._place = null; + super._init(); + } + + set place(p) { + this._place = p; + this.notify('place'); + } + + get place() { + return this._place; + } +}); + +var RouteQuery = GObject.registerClass({ + Signals: { + 'reset': { }, + 'point-added': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'point-removed': { param_types: [GObject.TYPE_OBJECT, GObject.TYPE_INT] }, + 'run': { } + }, + Properties: { + 'points': GObject.ParamSpec.object('points', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + GObject.Object), + 'transportation': GObject.ParamSpec.int('transportation', + '', + '', + GObject.ParamFlags.READABLE | + GObject.ParamFlags.WRITABLE, + Transportation.CAR, + Transportation.PEDESTRIAN, + Transportation.CAR, + Transportation.TRANSIT) + } +}, class RouteQuery extends GObject.Object { + + get points() { + return this._points; + } + + set points(points) { + if (points.length > MAX_QUERY_POINTS) + throw new Error('Too many query points'); + this._points = points; + this.notify('points'); + } + + get filledPoints() { + return this.points.filter(function(point) { + return point.place; + }); + } + + get latest() { + return this._latest; + } + + get time() { + return this._time; + } + + /* time to leave or arrive, null implies "Leave now" */ + set time(time) { + this._time = time; + this.notify('points'); + } + + get date() { + return this._date; + } + + /* date to leave or arrive */ + set date(date) { + this._date = date; + /* only notify change when an actual date was set, when resetting time + * time and date (to use "Leave Now" routing) time would be set to null + * triggering an update */ + if (date) + this.notify('points'); + } + + get arriveBy() { + return this._arriveBy; + } + + /* when set to true, the set time and date means arrive by the specified + * time */ + set arriveBy(arriveBy) { + this._arriveBy = arriveBy; + if (this._time) + this.notify('points'); + } + + get transitOptions() { + return this._transitOptions; + } + + set transitOptions(options) { + this._transitOptions = options; + this.notify('points'); + } + + _init(args) { + super._init(args); + this._points = []; + this._time = null; + this._date = null; + this._arriveBy = false; + this._transitOptions = new TransitOptions.TransitOptions(); + this._initTransportation(); + this.reset(); + } + + _initTransportation() { + let transportationType = Application.settings.get_enum('transportation-type'); + + this.transportation = transportationType; + } + + addPoint(index) { + if (this._points.length >= MAX_QUERY_POINTS) + throw new Error('Too many query points'); + let point = new QueryPoint(); + + if (index === -1) + index = this.points.length - 1; + + this._points.splice(index, 0, point); + point.connect('notify::place', () => { + let placeStore = Application.placeStore; + if (point.place) { + if (!placeStore.exists(point.place, null)) { + placeStore.addPlace(point.place, + PlaceStore.PlaceType.RECENT); + } + } + this.notify('points'); + this._latest = point; + }); + this._latest = point; + this.notify('points'); + this.emit('point-added', point, index); + return point; + } + + removePoint(index) { + let removedPoints = this._points.splice(index, 1); + let point = removedPoints ? removedPoints[0] : null; + if (point === this._latest) + this._latest = null; + + if (point) { + this.notify('points'); + this.emit('point-removed', point, index); + } + } + + set transportation(transportation) { + Application.settings.set_enum('transportation-type', transportation); + this._transportation = transportation; + this.notify('transportation'); + this.notify('points'); + } + + get transportation() { + return this._transportation; + } + + reset() { + this.freeze_notify(); + this._points.forEach(function(point) { + point.place = null; + }); + this._latest = null; + this.thaw_notify(); + this.emit('reset'); + } + + isValid() { + if (this.filledPoints.length >= 2 && + this.filledPoints.length === this.points.length) + return true; + else + return false; + } + + toString() { + return "\nPoints: " + this.points + + "\nTransportation: " + this.transportation; + } +}); diff --git a/src/routingDelegator.js b/src/routingDelegator.js new file mode 100644 index 00000000..a3f71101 --- /dev/null +++ b/src/routingDelegator.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GraphHopper = imports.graphHopper; +const TransitRouter = imports.transitRouter; +const RouteQuery = imports.routeQuery; + +const _FALLBACK_TRANSPORTATION = RouteQuery.Transportation.PEDESTRIAN; + +var RoutingDelegator = class RoutingDelegator { + + constructor(params) { + this._query = params.query; + + this._transitRouting = false; + this._graphHopper = new GraphHopper.GraphHopper({ query: this._query }); + this._transitRouter = new TransitRouter.TransitRouter({ query: this._query }); + this._query.connect('notify::points', this._onQueryChanged.bind(this)); + + /* if the query is set to transit mode when it's not available, revert + * to a fallback mode + */ + if (this._query.transportation === RouteQuery.Transportation.TRANSIT && + !this._transitRouter.enabled) { + this._query.transportation = _FALLBACK_TRANSPORTATION; + } + } + + get graphHopper() { + return this._graphHopper; + } + + get transitRouter() { + return this._transitRouter; + } + + set useTransit(useTransit) { + this._transitRouting = useTransit; + } + + reset() { + if (this._transitRouting) + this._transitRouter.plan.reset(); + else + this._graphHopper.route.reset(); + } + + _onQueryChanged() { + if (this._query.isValid()) { + this._query.emit('run'); + if (this._transitRouting) { + this._transitRouter.fetchFirstResults(); + } else { + this._graphHopper.fetchRoute(this._query.filledPoints, + this._query.transportation); + } + } + } +}; diff --git a/src/searchPopover.js b/src/searchPopover.js new file mode 100644 index 00000000..64c9f229 --- /dev/null +++ b/src/searchPopover.js @@ -0,0 +1,114 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2016 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +/* Abstract search result popover that progagates keypress events from a + focus-taking internal widget to the spawning search entry widget */ +var SearchPopover = GObject.registerClass({ + Abstract: true +}, class SearchPopover extends Gtk.Popover { + + _init(props) { + super._init(props); + + this._entry = this.relative_to; + + // We need to propagate events to the listbox so that we can + // keep typing while selecting a place. But we do not want to + // propagate the 'enter' key press if there is a selection. + this._keyController = + new Gtk.EventControllerKey({ widget: this._entry }); + this._keyController.connect('key-pressed', + this._propagateKeys.bind(this)); + + this._buttonPressGesture = new Gtk.GestureSingle({ widget: this._entry }); + this._buttonPressGesture.connect('begin', + () => this._list.unselect_all()); + } + + _propagateKeys(controller, keyval, keycode, state) { + if (keyval === Gdk.KEY_Escape) { + this.hide(); + this._list.unselect_all(); + return true; + } + + if (keyval === Gdk.KEY_Return || + keyval === Gdk.KEY_KP_ENTER || + keyval === Gdk.KEY_ISO_Enter) { + + // If we get an 'enter' keypress and we have a selected + // row, we do not want to propagate the event. + let row = this._list.get_selected_row(); + if (this.visible && row) { + row.activate(); + return true; + } else { + return false; + } + } + + if (keyval === Gdk.KEY_KP_Up || + keyval === Gdk.KEY_Up || + keyval === Gdk.KEY_KP_Down || + keyval === Gdk.KEY_Down) { + + let length = this._list.get_children().length; + if (length === 0) { + return false; + } + + let direction = (keyval === Gdk.KEY_KP_Up || keyval === Gdk.KEY_Up) ? -1 : 1; + let row = this._list.get_selected_row(); + let idx; + if (!row) { + idx = (direction === 1) ? 0 : length - 1; + } else { + idx = row.get_index() + direction; + } + let inBounds = 0 <= idx && idx < length; + if (inBounds) { + this.show(); + this._selectRow(this._list.get_row_at_index(idx)); + } else { + this._list.unselect_all(); + } + return true; + } + + return false; + } + + /* Selects given row and ensures that it is visible. */ + _selectRow(row) { + this._list.select_row(row); + let adjustment = this._list.get_adjustment(); + if (adjustment) { + let allocation = row.get_allocation(); + adjustment.clamp_page(allocation.y, allocation.y + allocation.height); + } + } +}); + diff --git a/src/sendToDialog.js b/src/sendToDialog.js new file mode 100644 index 00000000..10e2f298 --- /dev/null +++ b/src/sendToDialog.js @@ -0,0 +1,279 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Jonas Danielson + */ + +const Gdk = imports.gi.Gdk; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const PlaceFormatter = imports.placeFormatter; +const Utils = imports.utils; + +const _WEATHER_APPID = 'org.gnome.Weather'; +const _CLOCKS_APPID = 'org.gnome.clocks'; + +var Response = { + SUCCESS: 0, + CANCEL: 1 +}; + +const _NUM_VISIBLE = 4; + +var SendToDialog = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/send-to-dialog.ui', + InternalChildren: [ 'list', + 'weatherRow', + 'weatherLabel', + 'weatherIcon', + 'clocksRow', + 'clocksLabel', + 'clocksIcon', + 'cancelButton', + 'summaryLabel', + 'summaryUrl', + 'copyButton', + 'emailButton', + 'checkInButton', + 'scrolledWindow' ] +}, class SendToDialog extends Gtk.Dialog { + + _init(params) { + this._place = params.place; + this._location = this._place.location; + delete params.place; + + this._mapView = params.mapView; + delete params.mapView; + + let showCheckIn = params.showCheckIn || false; + delete params.showCheckIn; + + params.use_header_bar = true; + super._init(params); + + this._scrolledWindow.min_content_height = 40 * _NUM_VISIBLE; + this.get_header_bar().subtitle = this._place.name; + + this._cancelButton.connect('clicked', + () => this.response(Response.CANCEL)); + + this._list.connect('row-activated', (list, row) => this._activateRow(row)); + + this._list.set_header_func((row, before) => { + let horizontal = Gtk.Orientation.HORIZONTAL; + + if (before) + row.set_header(new Gtk.Separator({ orientation: horizontal })); + else + row.set_header(null); + }); + + if (showCheckIn) { + Application.checkInManager.bind_property('hasCheckIn', + this._checkInButton, 'visible', + GObject.BindingFlags.DEFAULT | + GObject.BindingFlags.SYNC_CREATE); + + this._checkInButton.connect('clicked', () => { + Application.checkInManager.showCheckInDialog(this.get_toplevel(), + this._place, + false); + }); + } + + this.connect('show', () => { + this._summaryLabel.label = this._getSummary(); + let osmuri = GLib.markup_escape_text(this._getOSMURI(), -1); + this._summaryUrl.label = '%s'.format(osmuri, osmuri); + + this._copyButton.connect('clicked', () => this._copySummary()); + this._emailButton.connect('clicked', () => this._emailSummary()); + }); + + if (GWeather) { + let world = GWeather.Location.get_world(); + let location = this._location; + this._city = world.find_nearest_city(location.latitude, + location.longitude); + /* Translators: The first string is the name of the city, the + second string is the name of the app to add it to */ + let label = _("Add %s to %s"); + + let weatherInfo = Gio.DesktopAppInfo.new(_WEATHER_APPID + '.desktop'); + if (!weatherInfo) { + this._list.remove(this._weatherRow); + } else { + this._weatherLabel.label = label.format(this._city.get_name(), + weatherInfo.get_name()); + this._weatherIcon.icon_name = weatherInfo.get_icon().to_string(); + } + + let clocksInfo = Gio.DesktopAppInfo.new(_CLOCKS_APPID + '.desktop'); + if (!clocksInfo) { + this._list.remove(this._clocksRow); + } else { + this._clocksLabel.label = label.format(this._city.get_name(), + clocksInfo.get_name()); + this._clocksIcon.icon_name = clocksInfo.get_icon().to_string(); + } + } + + /* Other apps that can launch geo: URIs */ + let contentType = Gio.content_type_from_mime_type('x-scheme-handler/geo'); + let thisId = Application.application.application_id + '.desktop'; + let apps = Gio.app_info_get_all_for_type(contentType); + apps.forEach((app) => { + if (app.get_id() == thisId) + return; + if (!app.should_show()) + return; + + this._list.insert(new OpenWithRow({ appinfo: app }), -1); + }); + + /* Hide the list box if it is empty */ + if (this._list.get_children().length == 0) { + this._scrolledWindow.hide(); + } + } + + _getSummary(markup) { + /* Gets a summary of the place (usually name, address, and coordinates, + whichever are available). Does not include OSM URL. */ + + let place = this._place; + let lines = []; + + let formatter = new PlaceFormatter.PlaceFormatter(place); + + if (!place.isCurrentLocation) + lines.push(formatter.title); + + let details = formatter.getDetailsString(); + if (details) { + lines.push(details); + } + + lines.push('%f, %f'.format(this._location.latitude.toFixed(5), + this._location.longitude.toFixed(5))); + + return lines.join('\n'); + } + + _getOSMURI() { + let view = this._mapView.view; + let place = this._place; + + let base = 'https://openstreetmap.org'; + if (this._place.osm_id && this._place.osm_type) { + return '%s/%s/%s'.format(base, + Utils.osmTypeToString(place.osm_type), + place.osm_id); + } else { + return '%s?mlat=%f&mlon=%f&zoom=%d'.format(base, + this._location.latitude, + this._location.longitude, + view.zoom_level); + } + } + + _copySummary() { + let summary = '%s\n%s'.format(this._getSummary(), this._getOSMURI()); + + let display = Gdk.Display.get_default(); + let clipboard = Gtk.Clipboard.get_default(display); + clipboard.set_text(summary, -1); + this.response(Response.SUCCESS); + } + + _emailSummary() { + let title = new PlaceFormatter.PlaceFormatter(this._place).title; + let summary = "%s\n%s".format(this._getSummary(), this._getOSMURI()); + let uri = 'mailto:?subject=%s&body=%s'.format(Soup.URI.encode(title, null), + Soup.URI.encode(summary, null)); + + try { + Gio.app_info_launch_default_for_uri(uri, this._getAppLaunchContext()); + } catch(e) { + Utils.showDialog(_("Failed to open URI"), Gtk.MessageType.ERROR, + this.get_toplevel()); + Utils.debug('failed to open URI: %s'.format(e.message)); + } + + this.response(Response.SUCCESS); + } + + _getAppLaunchContext() { + let timestamp = Gtk.get_current_event_time(); + let display = Gdk.Display.get_default(); + let ctx = Gdk.Display.get_default().get_app_launch_context(); + let screen = display.get_default_screen(); + + ctx.set_timestamp(timestamp); + ctx.set_screen(screen); + + return ctx; + } + + _activateRow(row) { + if (row === this._weatherRow || row === this._clocksRow) { + let timestamp = Gtk.get_current_event_time(); + + let action; + let appId; + if (row === this._weatherRow) { + action = 'show-location'; + appId = _WEATHER_APPID; + } else { + action = 'add-location'; + appId = _CLOCKS_APPID; + } + + Utils.activateAction(appId, + action, + new GLib.Variant('v', this._city.serialize()), + timestamp); + } else if (row instanceof OpenWithRow) { + let uri = this._location.to_uri(Geocode.LocationURIScheme.GEO); + row.appinfo.launch_uris([ uri ], this._getAppLaunchContext()); + } + this.response(Response.SUCCESS); + } +}); + +var OpenWithRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/open-with-row.ui', + InternalChildren: [ 'label', + 'icon' ], +}, class OpenWithRow extends Gtk.ListBoxRow { + _init(params) { + this.appinfo = params.appinfo; + delete params.appinfo; + + super._init(params); + + this._label.label = _("Open with %s").format(this.appinfo.get_name()); + this._icon.gicon = this.appinfo.get_icon(); + } +}); diff --git a/src/service.js b/src/service.js new file mode 100644 index 00000000..e0e2e799 --- /dev/null +++ b/src/service.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + * Jonas Danielsson + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Utils = imports.utils; + +let _service = null; + +const _SERVICE_URL = 'https://gis.gnome.org/services/v1/service.json'; +const _DEFAULT_SERVICE_FILE = 'maps-service.json'; + +function _getServiceFromFile(filename) { + let data = Utils.readFile(filename); + if (!data) { + log('Failed to open service file: ' + filename); + System.exit(1); + } + _service = JSON.parse(Utils.getBufferText(data)); + return _service; +} + +function _createDefaultService() { + let filename = GLib.build_filenamev([pkg.pkgdatadir, + _DEFAULT_SERVICE_FILE]); + return _getServiceFromFile(filename); +} + +function getService() { + if (_service) + return _service; + + if (GLib.getenv('MAPS_DEFAULT_SERVICE')) + return _createDefaultService(); + + let serviceOverride = GLib.getenv('MAPS_SERVICE'); + if (serviceOverride) + return _getServiceFromFile(serviceOverride); + + let user_agent = 'gnome-maps/' + pkg.version; + let session = new Soup.Session({ user_agent : user_agent }); + let msg = Soup.Message.new('GET', _SERVICE_URL); + try { + let stream = Gio.DataInputStream.new(session.send(msg, null)); + + let lines = ""; + while(true) { + let [line, _] = stream.read_line_utf8(null); + if (line === null) + break; + lines += line; + } + _service = JSON.parse(lines); + return _service; + } catch(e) { + Utils.debug(e); + return _createDefaultService(); + } +} diff --git a/src/serviceBackend.js b/src/serviceBackend.js new file mode 100644 index 00000000..edcfdebe --- /dev/null +++ b/src/serviceBackend.js @@ -0,0 +1,127 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; + +const Utils = imports.utils; + +var ServiceBackend = GObject.registerClass({ + Abstract: true +}, class ServiceBackend extends GObject.Object { + + //Abstract + get name() { } + + //Abstract + createRestCall(authorizer) { } + + //Abstract + refreshAuthorization(authorizer, cancellable) { } + + //Abstract + getAuthorizerAccount(authorizer) { } + + //Abstract + createAuthorizer(account) { } + + //Abstract + isTokenInvalid(restCall, parsedPayload) { } + + //Abstract + isInvalidCall(restCall, parsedPayload) { } + + //Abstract + getCallResultCode(restCall, parsedPayload) { } + + //Abstract + getCallResultMessage(restCall, parsedPayload) { } + + callAsync(authorizer, method, func, params, callback, cancellable, mustRefreshToken) { + mustRefreshToken = mustRefreshToken || true; + cancellable = cancellable || null; + + let restCall = this.createRestCall(authorizer); + + method = method.toUpperCase(); + restCall.set_method(method); + + for (let key in params) + restCall.add_param(key, params[key].toString()); + + restCall.set_function(func); + + Utils.debug(this.name + ': ' + func); + + restCall.invoke_async(cancellable, (call, result) => { + let data = JSON.parse(call.get_payload()); + let account = this.getAuthorizerAccount(authorizer); + + if (data && this.isTokenInvalid(call, data)) + if (mustRefreshToken) { + //Unauthorized token error, we need to refresh the token + Utils.debug(this.name + ': The token is not authorized, refreshing token'); + try { + this.refreshAuthorization(authorizer, cancellable); + this.callAsync(authorizer, method, func, params, callback, cancellable, false); + } catch(error) { + callback(account, data, { code: 401, + message: null }); + } + } else + callback(account, data, { code: 401, + message: null }); + else if (this.isInvalidCall(call, data)) + callback(account, data, { code: this.getCallResultCode(call, data), + message: this.getCallResultMessage(call, data) }); + else + callback(account, data, null); + }); + } + + performCheckIn(authorizer, checkIn, callback, cancellable) { + callback = callback || function() {}; + this._realPerformCheckIn(authorizer, checkIn, callback, cancellable); + } + + //Abstract + _realPerformCheckIn(authorizer, checkIn, callback, cancellable) { } + + findPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { + callback = callback || function() {}; + this._realFindPlaces(authorizer, + latitude, + longitude, + distance, + (account, data, error) => { + if (!error) + callback(account, this.createPlaces(data), error); + else + callback(account, [], error); + }, + cancellable); + } + + //Abstract + _realFindPlaces(authorizer, latitude, longitude, distance, callback, cancellable) { } + + //Abstract + createPlaces(rawData) { } +}); diff --git a/src/settings.js b/src/settings.js new file mode 100644 index 00000000..fa2478ab --- /dev/null +++ b/src/settings.js @@ -0,0 +1,74 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2013 Mattias Bengtsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Mattias Bengtsson + */ + +const GLib = imports.gi.GLib; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; +const System = imports.system; + +var Settings = GObject.registerClass( +class Settings extends Gio.Settings { + + _init(params) { + super._init(params); + // The GVariant types of the settings + this._keyTypes = {}; + this.list_keys().forEach((key) => { + this._keyTypes[key] = this.get_value(key) + .get_type() + .dup_string(); + }); + } + + get(name) { + return this.get_value(name).deep_unpack(); + } + + set(name, value) { + this.set_value(name, GLib.Variant.new (this._keyTypes[name], value)); + } +}); + +function getSettings(schemaId, path) { + const GioSSS = Gio.SettingsSchemaSource; + let schemaSource; + + if (!pkg.moduledir.startsWith('resource://')) { + // Running from the source tree + schemaSource = GioSSS.new_from_directory(pkg.pkgdatadir, + GioSSS.get_default(), + false); + } else { + schemaSource = GioSSS.get_default(); + } + + let schemaObj = schemaSource.lookup(schemaId, true); + if (!schemaObj) { + log('Missing GSettings schema ' + schemaId); + System.exit(1); + } + + if (path === undefined) + return new Settings({ settings_schema: schemaObj }); + else + return new Settings({ settings_schema: schemaObj, + path: path }); +} diff --git a/src/shapeLayer.js b/src/shapeLayer.js new file mode 100644 index 00000000..7d42c9b4 --- /dev/null +++ b/src/shapeLayer.js @@ -0,0 +1,118 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Hashem Nasarat + */ + +const Champlain = imports.gi.Champlain; +const Gio = imports.gi.Gio; +const GObject = imports.gi.GObject; + +const GeoJSONShapeLayer = imports.geoJSONShapeLayer; +const Utils = imports.utils; + +var SUPPORTED_TYPES = []; + +function newFromFile(file, mapView) { + let contentType = Gio.content_type_guess(file.get_uri(), null)[0]; + for (let layerClass of SUPPORTED_TYPES) { + if (layerClass.mimeTypes.indexOf(contentType) > -1) { + return layerClass.createInstance({ file: file, mapView: mapView }); + } + } + return null; +} + +var ShapeLayer = GObject.registerClass({ + Abstract: true +}, class ShapeLayer extends GObject.Object { + + _init(params) { + super._init(); + this._visible = true; + this._mapView = params.mapView; + this.file = params.file; + + this.filename = this.file.query_info( + Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, + Gio.FileQueryInfoFlags.NONE, + null + ).get_attribute_string(Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); + + this._markerLayer = new Champlain.MarkerLayer({ + selection_mode: Champlain.SelectionMode.SINGLE + }); + this._mapSource = null; + } + + get bbox() { + return this._mapSource.bbox; + } + + get visible() { + return this._visible; + } + + set visible(v) { + if (v && !this._visible) { + this._mapView.view.add_overlay_source(this._mapSource, 255); + this._markerLayer.show_all_markers(); + } else if (!v && this._visible) { + this._mapView.view.remove_overlay_source(this._mapSource); + this._markerLayer.hide_all_markers(); + } + this._visible = v; + } + + getName() { + /* + * Remove file extension and use that in lieu of a fileformat-specific + * display name. + */ + return this.filename.replace(/\.[^\.]+$/, ''); + } + + load(callback, bbox) { + this.file.load_contents_async(null, (sourceObject, result) => { + let error = false; + try { + let [status, buffer] = this.file.load_contents_finish(result); + this._fileContents = buffer; + if (!status) + throw new Error(_("failed to load file")); + this._parseContent(); + this._mapView.view.add_layer(this._markerLayer); + this._mapView.view.add_overlay_source(this._mapSource, 255); + } catch (e) { + Utils.debug(e); + error = true; + } + callback(error, bbox, this); + }); + } + + _parseContent() { + /* Unimplemented */ + } + + unload() { + this._mapView.view.remove_layer(this._markerLayer); + this._mapView.view.remove_overlay_source(this._mapSource); + } +}); + +ShapeLayer.mimeTypes = []; +ShapeLayer.displayName = ''; diff --git a/src/shortPrintLayout.js b/src/shortPrintLayout.js new file mode 100644 index 00000000..a926afdb --- /dev/null +++ b/src/shortPrintLayout.js @@ -0,0 +1,59 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Amisha Singla + */ + +const GObject = imports.gi.GObject; + +const PrintLayout = imports.printLayout; + +/* All following constants are ratios of surface size to page size */ +const _Instruction = { + SCALE_X: 1.0, + SCALE_Y: 0.07, + SCALE_MARGIN: 0.01 +}; + +var ShortPrintLayout = GObject.registerClass( +class ShortPrintLayout extends PrintLayout.PrintLayout { + _init(params) { + this._route = params.route; + delete params.route; + + /* (Header + map) + instructions */ + let totalSurfaces = 2 + this._route.turnPoints.length; + params.totalSurfaces = totalSurfaces; + + super._init(params); + } + + render() { + super.render(); + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + let dy = 0; + + this._route.turnPoints.forEach((turnPoint) => { + dy = instructionHeight + instructionMargin; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, turnPoint); + this._cursorY += dy; + }); + } +}); diff --git a/src/sidebar.js b/src/sidebar.js new file mode 100644 index 00000000..3e97e3dc --- /dev/null +++ b/src/sidebar.js @@ -0,0 +1,630 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2012, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Zeeshan Ali (Khattak) + * Mattias Bengtsson + */ + +const Cairo = imports.cairo; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const InstructionRow = imports.instructionRow; +const PlaceStore = imports.placeStore; +const RouteEntry = imports.routeEntry; +const RouteQuery = imports.routeQuery; +const StoredRoute = imports.storedRoute; +const TransitArrivalRow = imports.transitArrivalRow; +const TransitItineraryRow = imports.transitItineraryRow; +const TransitLegRow = imports.transitLegRow; +const TransitMoreRow = imports.transitMoreRow; +const TransitOptionsPanel = imports.transitOptionsPanel; +const Utils = imports.utils; + +var Sidebar = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/sidebar.ui', + InternalChildren: [ 'distanceInfo', + 'entryList', + 'instructionList', + 'instructionWindow', + 'instructionSpinner', + 'instructionStack', + 'errorLabel', + 'modeBikeToggle', + 'modeCarToggle', + 'modePedestrianToggle', + 'modeTransitToggle', + 'timeInfo', + 'linkButtonStack', + 'transitWindow', + 'transitRevealer', + //'transitOptionsPanel', + 'transitHeader', + 'transitListStack', + 'transitOverviewListBox', + 'transitItineraryHeader', + 'transitItineraryListBox', + 'transitItineraryBackButton', + 'transitItineraryTimeLabel', + 'transitItineraryDurationLabel', + 'transitAttributionLabel'] +}, class Sidebar extends Gtk.Revealer { + + _init(mapView) { + super._init({ transition_type: Gtk.RevealerTransitionType.SLIDE_LEFT }); + + this._mapView = mapView; + + this._query = Application.routeQuery; + this._initInstructionList(); + + /* I could not get the custom GTK+ template widget to init properly + * from the UI file, we also need to manually insert the transit + * itinerary header widget into the GtkStack to get the correct + * animation direction. + */ + this._transitOptionsPanel = + new TransitOptionsPanel.TransitOptionsPanel({ visible: true }); + this._transitHeader.add_named(this._transitOptionsPanel, 'options'); + this._transitHeader.add_named(this._transitItineraryHeader, + 'itinerary-header'); + this._initTransportationToggles(this._modePedestrianToggle, + this._modeBikeToggle, + this._modeCarToggle, + this._modeTransitToggle); + + this._initQuerySignals(); + this._query.addPoint(0); + this._query.addPoint(1); + this._switchRoutingMode(Application.routeQuery.transportation); + /* Enable/disable transit mode switch based on the presence of + * public transit providers. + */ + this._modeTransitToggle.sensitive = + Application.routingDelegator.transitRouter.enabled; + } + + _initTransportationToggles(pedestrian, bike, car, transit) { + let transport = RouteQuery.Transportation; + + let onToggle = function(mode, button) { + let previousMode = this._query.transportation; + + if (button.active && previousMode !== mode) { + this._switchRoutingMode(mode); + this._query.transportation = mode; + } + }; + pedestrian.connect('toggled', onToggle.bind(this, transport.PEDESTRIAN)); + car.connect('toggled', onToggle.bind(this, transport.CAR)); + bike.connect('toggled', onToggle.bind(this, transport.BIKE)); + transit.connect('toggled', onToggle.bind(this, transport.TRANSIT)) + + let setToggles = function() { + switch(Application.routeQuery.transportation) { + case transport.PEDESTRIAN: + pedestrian.active = true; + break; + case transport.CAR: + car.active = true; + break; + case transport.BIKE: + bike.active = true; + break; + case transport.TRANSIT: + transit.active = true; + break; + } + + this._switchRoutingMode(Application.routeQuery.transportation); + }; + + setToggles.bind(this)(); + this._query.connect('notify::transportation', setToggles.bind(this)); + } + + _switchRoutingMode(mode) { + if (mode === RouteQuery.Transportation.TRANSIT) { + Application.routingDelegator.useTransit = true; + this._linkButtonStack.visible_child_name = 'transit'; + this._transitOptionsPanel.reset(); + this._transitRevealer.reveal_child = true; + } else { + Application.routingDelegator.useTransit = false; + this._linkButtonStack.visible_child_name = 'turnByTurn'; + this._transitRevealer.reveal_child = false; + Application.routingDelegator.transitRouter.plan.deselectItinerary(); + } + this._clearInstructions(); + } + + _initQuerySignals() { + this._query.connect('point-added', (obj, point, index) => { + this._createRouteEntry(index, point); + }); + + this._query.connect('point-removed', (obj, point, index) => { + let row = this._entryList.get_row_at_index(index); + row.destroy(); + }); + } + + _cancelStore() { + Mainloop.source_remove(this._storeRouteTimeoutId); + this._storeRouteTimeoutId = 0; + } + + _createRouteEntry(index, point) { + let type; + if (index === 0) + type = RouteEntry.Type.FROM; + else if (index === this._entryList.get_children().length) + type = RouteEntry.Type.TO; + else + type = RouteEntry.Type.VIA; + + let routeEntry = new RouteEntry.RouteEntry({ type: type, + point: point, + mapView: this._mapView }); + + // add handler overriding tab focus behavior on route entries + routeEntry.entry.connect('focus', this._onRouteEntryFocus.bind(this)); + // add handler for + routeEntry.entry.connect('notify::place', () => { + this._onRouteEntrySelectedPlace(routeEntry.entry); + }); + this._entryList.insert(routeEntry, index); + + if (type === RouteEntry.Type.FROM) { + routeEntry.button.connect('clicked', () => { + let lastIndex = this._entryList.get_children().length; + this._query.addPoint(lastIndex - 1); + // focus on the newly added point's entry + this._entryList.get_row_at_index(lastIndex - 1).get_child().entry.grab_focus(); + }); + + this.connect('notify::child-revealed', () => { + if (this.child_revealed) + routeEntry.entry.grab_focus_without_selecting(); + }); + } else if (type === RouteEntry.Type.VIA) { + routeEntry.button.connect('clicked', () => { + let row = routeEntry.get_parent(); + this._query.removePoint(row.get_index()); + }); + } else if (type === RouteEntry.Type.TO) { + routeEntry.button.connect('clicked', + this._reverseRoutePoints.bind(this)); + } + + this._initRouteDragAndDrop(routeEntry); + } + + _onRouteEntryFocus(entry, direction) { + let index = this._getIndexForRouteEntry(entry); + + /* if tabbing forward from the last entry or backward from the first, + * let the default handler handle it + */ + if ((direction === Gtk.DirectionType.TAB_FORWARD && + index === this._entryList.get_children().length - 1) || + (direction === Gtk.DirectionType.TAB_BACKWARD && index === 0)) { + return false; + } + + if (direction === Gtk.DirectionType.TAB_FORWARD) { + index++; + } else if (direction === Gtk.DirectionType.TAB_BACKWARD) { + index--; + } else { + // don't handle other directions + return false; + } + + this._entryList.get_row_at_index(index).get_child().entry.grab_focus(); + return true; + } + + _onRouteEntrySelectedPlace(entry) { + let index = this._getIndexForRouteEntry(entry); + + /* if a new place is selected and it's not the last entry, focus next + * entry + */ + if (entry.place && index < this._entryList.get_children().length - 1) { + let nextPlaceEntry = + this._entryList.get_row_at_index(index + 1).get_child().entry; + + if (!nextPlaceEntry.place) + nextPlaceEntry.grab_focus(); + } + } + + _getIndexForRouteEntry(entry) { + for (let i = 0; i < this._entryList.get_children().length; i++) { + let routeEntry = this._entryList.get_row_at_index(i).get_child(); + + if (routeEntry.entry === entry) + return i; + } + + return -1; + } + + _initInstructionList() { + let route = Application.routingDelegator.graphHopper.route; + let transitPlan = Application.routingDelegator.transitRouter.plan; + + route.connect('reset', () => { + this._clearInstructions(); + + let length = this._entryList.get_children().length; + for (let index = 1; index < (length - 1); index++) { + this._query.removePoint(index); + } + }); + + transitPlan.connect('reset', () => { + this._clearTransitOverview(); + this._showTransitOverview(); + this._instructionStack.visible_child = this._transitWindow; + /* don't remove query points as with the turn-based routing, + * since we might get "no route" because of the time selected + * and so on */ + this._transitAttributionLabel.label = ''; + }); + + transitPlan.connect('no-more-results', () => { + // set the "load more" row to indicate no more results + let numRows = this._transitOverviewListBox.get_children().length; + let loadMoreRow = this._transitOverviewListBox.get_row_at_index(numRows - 2); + loadMoreRow.showNoMore(); + }); + + this._query.connect('run', () => { + this._instructionStack.visible_child = this._instructionSpinner; + }); + + this._query.connect('notify', () => { + if (this._instructionStack.visible_child !== this._instructionSpinner && + this._instructionStack.visible_child !== this._errorLabel) { + if (this._query.transportation === RouteQuery.Transportation.TRANSIT) { + this._clearTransitOverview(); + this._showTransitOverview(); + this._transitAttributionLabel.label = ''; + } else { + this._clearInstructions(); + } + } + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + }); + + route.connect('update', () => { + this._clearInstructions(); + + if (this._storeRouteTimeoutId) + this._cancelStore(); + + this._storeRouteTimeoutId = Mainloop.timeout_add(5000, () => { + let placeStore = Application.placeStore; + let places = this._query.filledPoints.map(function(point) { + return point.place; + }); + let storedRoute = new StoredRoute.StoredRoute({ + transportation: this._query.transportation, + route: route, + places: places, + geoclue: Application.geoclue + }); + + if (!storedRoute.containsNull) { + placeStore.addPlace(storedRoute, + PlaceStore.PlaceType.RECENT_ROUTE); + } + this._storeRouteTimeoutId = 0; + }); + + route.turnPoints.forEach((turnPoint) => { + let row = new InstructionRow.InstructionRow({ visible: true, + turnPoint: turnPoint }); + this._instructionList.insert(row, -1); + }); + + /* Translators: %s is a time expression with the format "%f h" or "%f min" */ + this._timeInfo.label = _("Estimated time: %s").format(Utils.prettyTime(route.time)); + this._distanceInfo.label = Utils.prettyDistance(route.distance); + }); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) + this._mapView.showTurnPoint(row.turnPoint); + }); + + transitPlan.connect('update', () => { + this._updateTransitAttribution(); + this._clearTransitOverview(); + this._showTransitOverview(); + this._populateTransitItineraryOverview(); + }); + + /* use list separators for the transit itinerary overview list */ + this._transitOverviewListBox.set_header_func((row, prev) => { + if (prev) + row.set_header(new Gtk.Separator()); + }); + + this._transitOverviewListBox.connect('row-activated', + this._onItineraryOverviewRowActivated.bind(this)); + this._transitItineraryBackButton.connect('clicked', + this._showTransitOverview.bind(this)); + + // connect error handlers + route.connect('error', (route, msg) => this._showError(msg)); + transitPlan.connect('error', (plan, msg) => this._showError(msg)); + } + + _showError(msg) { + this._instructionStack.visible_child = this._errorLabel; + this._errorLabel.label = msg; + } + + _clearTransitOverview() { + let listBox = this._transitOverviewListBox; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._transitWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + _clearTransitItinerary() { + let listBox = this._transitItineraryListBox; + listBox.forall(listBox.remove.bind(listBox)); + } + + _updateTransitAttribution() { + let plan = Application.routingDelegator.transitRouter.plan; + + if (plan.attribution) { + let attributionLabel = + _("Itineraries provided by %s").format(plan.attribution); + if (plan.attributionUrl) { + this._transitAttributionLabel.label = + '%s'.format([plan.attributionUrl], + attributionLabel); + } else { + this._transitAttributionLabel.label = attributionLabel; + } + } else { + this._transitAttributionLabel.label = ''; + } + } + + _showTransitOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + this._transitListStack.visible_child_name = 'overview'; + this._transitHeader.visible_child_name = 'options'; + plan.deselectItinerary(); + } + + _showTransitItineraryView() { + this._transitListStack.visible_child_name = 'itinerary'; + this._transitHeader.visible_child_name = 'itinerary-header'; + } + + _populateTransitItineraryOverview() { + let plan = Application.routingDelegator.transitRouter.plan; + + plan.itineraries.forEach((itinerary) => { + let row = + new TransitItineraryRow.TransitItineraryRow({ visible: true, + itinerary: itinerary }); + this._transitOverviewListBox.insert(row, -1); + }); + /* add the "load more" row */ + this._transitOverviewListBox.insert( + new TransitMoreRow.TransitMoreRow({ visible: true }), -1); + + /* add an empty list row to get a final separator */ + this._transitOverviewListBox.insert(new Gtk.ListBoxRow({ visible: true }), + -1); + } + + _onItineraryActivated(itinerary) { + let plan = Application.routingDelegator.transitRouter.plan; + + this._populateTransitItinerary(itinerary); + this._showTransitItineraryView(); + plan.selectItinerary(itinerary); + } + + _onMoreActivated(row) { + row.startLoading(); + Application.routingDelegator.transitRouter.fetchMoreResults(); + } + + _onItineraryOverviewRowActivated(listBox, row) { + this._transitOverviewListBox.unselect_all(); + + if (row.itinerary) + this._onItineraryActivated(row.itinerary); + else + this._onMoreActivated(row); + } + + _populateTransitItinerary(itinerary) { + this._transitItineraryTimeLabel.label = + itinerary.prettyPrintTimeInterval(); + this._transitItineraryDurationLabel.label = + itinerary.prettyPrintDuration(); + + this._clearTransitItinerary(); + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + let row = new TransitLegRow.TransitLegRow({ leg: leg, + start: i === 0, + mapView: this._mapView }); + this._transitItineraryListBox.insert(row, -1); + } + + /* insert the additional arrival row, showing the arrival place and time */ + this._transitItineraryListBox.insert( + new TransitArrivalRow.TransitArrivalRow({ itinerary: itinerary, + mapView: this._mapView }), + -1); + } + + + _clearInstructions() { + let listBox = this._instructionList; + listBox.forall(listBox.remove.bind(listBox)); + + this._instructionStack.visible_child = this._instructionWindow; + this._timeInfo.label = ''; + this._distanceInfo.label = ''; + } + + // Iterate over points and establish the new order of places + _reorderRoutePoints(srcIndex, destIndex) { + let points = this._query.points; + let srcPlace = this._draggedPoint.place; + + // Determine if we are swapping from "above" or "below" + let step = (srcIndex < destIndex) ? -1 : 1; + + // Hold off on notifying the changes to query.points until + // we have re-arranged the places. + this._query.freeze_notify(); + + for (let i = destIndex; i !== (srcIndex + step); i += step) { + // swap + [points[i].place, srcPlace] = [srcPlace, points[i].place]; + } + + this._query.thaw_notify(); + } + + /* The reason we don't just use the array .reverse() function is that we + * need to update the place parameters on the actual point objects in the + * array to fire the query notify signal that will initiate an update. + */ + _reverseRoutePoints() { + let points = this._query.points; + let length = points.length; + + this._query.freeze_notify(); + for (let i = 0; i < length / 2; i++) { + let p1 = points[i].place; + let p2 = points[length - i - 1].place; + + points[i].place = p2; + points[length - i - 1].place = p1; + } + this._query.thaw_notify(); + } + + _onDragDrop(row, context, x, y, time) { + let srcIndex = this._query.points.indexOf(this._draggedPoint); + let destIndex = row.get_index(); + + this._reorderRoutePoints(srcIndex, destIndex); + Gtk.drag_finish(context, true, false, time); + return true; + } + + _dragHighlightRow(row) { + row.opacity = 0.6; + } + + _dragUnhighlightRow(row) { + row.opacity = 1.0; + } + + // Set the opacity of the row we are currently dragging above + // to semi transparent. + _onDragMotion(row, context, x, y, time) { + let routeEntry = row.get_child(); + + if (this._draggedPoint && this._draggedPoint !== routeEntry.point) { + this._dragHighlightRow(row); + Gdk.drag_status(context, Gdk.DragAction.MOVE, time); + } else + Gdk.drag_status(context, 0, time); + return true; + } + + // Drag ends, show the dragged row again. + _onDragEnd(context, row) { + this._draggedPoint = null; + + // Restore to natural height + row.height_request = -1; + row.get_child().show(); + } + + // Drag begins, set the correct drag icon and hide the dragged row. + _onDragBegin(context, row) { + let routeEntry = row.get_child(); + let width = row.get_allocated_width(); + let height = row.get_allocated_height(); + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface) + + row.draw(cr); + this._draggedPoint = routeEntry.point; + + // Set a fixed height on the row to prevent the sidebar height + // to shrink while dragging a row. + row.height_request = height; + row.get_child().hide(); + + Gtk.drag_set_icon_surface(context, surface); + } + + // Set up drag and drop between RouteEntrys. The drag source is from a + // GtkEventBox that contains the start/end icon next in the entry. And + // the drag destination is the ListBox row. + _initRouteDragAndDrop(routeEntry) { + let dragIcon = routeEntry.iconEventBox; + let row = routeEntry.get_parent(); + + dragIcon.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, + null, + Gdk.DragAction.MOVE); + dragIcon.drag_source_add_image_targets(); + + row.drag_dest_set(Gtk.DestDefaults.MOTION, + null, + Gdk.DragAction.MOVE); + row.drag_dest_add_image_targets(); + + dragIcon.connect('drag-begin', (icon, context) => this._onDragBegin(context, row)); + dragIcon.connect('drag-end', (icon, context) => this._onDragEnd(context, row)); + + row.connect('drag-leave', this._dragUnhighlightRow.bind(this, row)); + row.connect('drag-motion', this._onDragMotion.bind(this)); + row.connect('drag-drop', this._onDragDrop.bind(this)); + } +}); diff --git a/src/socialPlace.js b/src/socialPlace.js new file mode 100644 index 00000000..8ee1e8d3 --- /dev/null +++ b/src/socialPlace.js @@ -0,0 +1,43 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Location = imports.location; + +var SocialPlace = GObject.registerClass( +class SocialPlace extends GObject.Object { + _init(params) { + super._init(); + + this.id = params.id; + this.name = params.name; + this.latitude = params.latitude; + this.longitude = params.longitude; + this.category = params.category; + this.link = params.link; + this.originalData = params.originalData; + } + + get location() { + return new Location.Location({ latitude: parseFloat(this.latitude), + longitude: parseFloat(this.longitude) }); + } +}); diff --git a/src/socialPlaceListBox.js b/src/socialPlaceListBox.js new file mode 100644 index 00000000..7f756393 --- /dev/null +++ b/src/socialPlaceListBox.js @@ -0,0 +1,103 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var SocialPlaceRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-row.ui', + InternalChildren: [ 'nameLabel', + 'categoryLabel' ] +}, class SocialPlaceRow extends Gtk.ListBoxRow { + + _init(params) { + this.place = params.place; + delete params.place; + + super._init(params); + + this._nameLabel.label = this.place.name; + if (this.place.category) + this._categoryLabel.label = this.place.category; + else + this._categoryLabel.visible = false; + } +}); + +var SocialPlaceMoreResultsRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/social-place-more-results-row.ui' +}, class SocialPlaceMoreResultsRow extends Gtk.ListBoxRow {}); + +var SocialPlaceListBox = GObject.registerClass({ + Signals: { + 'place-selected': { param_types: [GObject.TYPE_OBJECT] } + } +}, class SocialPlaceListBox extends Gtk.ListBox { + + _init(params) { + params.activate_on_single_click = true; + super._init(params); + + this.connect('row-activated', (list, row) => { + if (!row.place) { + // "Show more results" row activated + this.remove(row); + this._showBadMatches(); + } else + this.emit('place-selected', row.place); + }); + } + + get matches() { + return this._matches; + } + + set matches(matches) { + this.forall(function(row) { + row.destroy(); + }); + + this._matches = matches; + + if (this._matches.exactMatches.length + + this._matches.goodMatches.length === 0) { + this._showBadMatches(); + } else { + this._matches.exactMatches.forEach(this._addPlace.bind(this)); + this._matches.goodMatches.forEach(this._addPlace.bind(this)); + + if (this._matches.badMatches.length > 0) + this._addMoreResults(); + } + } + + _showBadMatches() { + this._matches.badMatches.forEach(this._addPlace.bind(this)); + } + + _addPlace(place) { + this.insert(new SocialPlaceRow({ place: place }), -1); + } + + _addMoreResults() { + this.insert(new SocialPlaceMoreResultsRow({}), -1); + } +}); diff --git a/src/socialPlaceMatcher.js b/src/socialPlaceMatcher.js new file mode 100644 index 00000000..2c8c4e9d --- /dev/null +++ b/src/socialPlaceMatcher.js @@ -0,0 +1,125 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +/** + * The Levenshtein distance is a string comparison algorithm defined + * as the minimal number of characters you have to replace, insert or + * delete to transform string a into string b. + * We use it to compare the similarities of two place names. + * + * http://en.wikipedia.org/wiki/Levenshtein_distance + */ +function _getLevenshteinDistance(a, b) { + let i; + let j; + let d = []; + + for (i = 0; i <= a.length; i++) { + d[i] = []; + for (j = 0; j <= b.length; j++) + d[i][j] = 0; + } + + for (i = 1; i <= a.length; i++) + d[i][0] = i; + + for (j = 1; j <= b.length; j++) + d[0][j] = j; + + for (j = 1; j <= b.length; j++) + for (i = 1; i <= a.length; i++) + if (a[i - 1] === b[j - 1]) + d[i][j] = d[i-1][j-1]; + else + d[i][j] = Math.min(d[i-1][j] + 1, + d[i][j-1] + 1, + d[i-1][j-1] + 1); + + return d[a.length][b.length]; +} + +function _normalize(name) { + return name.toLowerCase().trim().replace(/ +(?= )/g,''); +} + +function _getPlacesLevenshteinDistance(geoPlace, socialPlace) { + let a = geoPlace.name; + let b = socialPlace.name; + + return _getLevenshteinDistance(_normalize(a), _normalize(b)); +} + +/** + * Returns: 0 for bad match, 1 for good match and 2 + * exact match. + */ +function _getKindOfMatch(geoPlace, socialPlace) { + let distance = geoPlace.location.get_distance_from(socialPlace.location); + let levenshtein = _getPlacesLevenshteinDistance(geoPlace, socialPlace); + + if (distance < 0.01 && levenshtein <= 2) + return 2; + else if (distance < 0.03 && levenshtein <= 5) + return 1; + else + return 0; +} + +function match(geoPlace, socialPlaces) { + let result = { + exactMatches: [], + goodMatches: [], + badMatches: [] + }; + + socialPlaces.sort(function(a, b) { + let da = geoPlace.location.get_distance_from(a.location); + let db = geoPlace.location.get_distance_from(b.location); + + if (da > db) + return 1; + else if (da < db) + return -1; + + return 0; + }); + + socialPlaces.forEach(function(place) { + let match = _getKindOfMatch(geoPlace, place); + + switch (match) + { + case 0: + result.badMatches.push(place); + break; + + case 1: + result.goodMatches.push(place); + break; + + case 2: + result.exactMatches.push(place); + break; + } + }); + + return result; +} diff --git a/src/storedRoute.js b/src/storedRoute.js new file mode 100644 index 00000000..04763097 --- /dev/null +++ b/src/storedRoute.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2015 Jonas Danielsson + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Jonas Danielsson + */ + +const Champlain = imports.gi.Champlain; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; + +// directional override markers +const _RLM = '\u200F'; +const _LRM = '\u200E'; + +var StoredRoute = GObject.registerClass( +class StoredRoute extends Place.Place { + + _init(params) { + let route = params.route; + delete params.route; + + this._transportation = params.transportation; + delete params.transportation; + + this.route = new Route.Route(); + this.route.update({ path: route.path, + turnPoints: route.turnPoints, + distance: route.distance, + time: route.time, + bbox: route.bbox }); + + this._rtl = Gtk.get_locale_direction() === Gtk.TextDirection.RTL; + + this.places = params.places; + delete params.places; + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + params.name = directionMarker + this.places[0].name + directionMarker + + arrow + directionMarker + this.places.last().name; + + + let geoclue = params.geoclue; + delete params.geoclue; + + this._containsCurrentLocation = false; + + let currentLocation = null; + if (geoclue) + currentLocation = geoclue.place; + + this.places.forEach((place) => { + if (currentLocation && place === currentLocation) + this._containsCurrentLocation = true; + }); + + super._init(params); + } + + get viaString() { + let directionMarker = this._rtl ? _RLM : _LRM; + let arrow = this._rtl ? '←' : '→'; + return this.places.map(function(place) { + return directionMarker + place.name; + }).join(directionMarker + arrow); + } + + get transportation() { + return this._transportation; + } + + get uniqueID() { + return this._transportation + '-' + this.places.map(function(place) { + return [place.osm_type, place.osm_id].join('-'); + }).join('-'); + } + + get containsCurrentLocation() { + return this._containsCurrentLocation; + } + + get containsNull() { + let hasNull = false; + + for (let p = 0; p < this.places.length; p++) { + if (!this.places[p].name) { + hasNull = true; + break; + } + } + return hasNull; + } + + _getIconName() { + let transport = RouteQuery.Transportation; + + switch (this._transportation) { + case transport.PEDESTRIAN: return 'route-pedestrian-symbolic'; + case transport.BIKE: return 'route-bike-symbolic'; + case transport.CAR: return 'route-car-symbolic'; + default: return 'route-button-symbolic'; + } + } + + toJSON() { + let turnPoints = this.route.turnPoints.map(function(turnPoint) { + let coordinate = { latitude: turnPoint.coordinate.latitude, + longitude: turnPoint.coordinate.longitude }; + return { coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction }; + }); + let bounding_box = { top: this.route.bbox.top, + bottom: this.route.bbox.bottom, + left: this.route.bbox.left, + right: this.route.bbox.right }; + + let path = this.route.path.map(function(coordinate) { + return { latitude: coordinate.latitude, + longitude: coordinate.longitude }; + }); + + let route = { path: path, + turnPoints: turnPoints, + distance: this.route.distance, + time: this.route.time }; + + let places = this.places.map(function(place) { + return place.toJSON(); + }); + + return { id: -1, + transportation: this._transportation, + route: route, + places: places }; + } +}); + +StoredRoute.fromJSON = function(obj) { + let props; + let places = []; + let route; + let transportation = null; + + for (let key in obj) { + let prop = obj[key]; + + switch(key) { + case 'transportation': + transportation = prop; + break; + + case 'route': + route = new Route.Route(); + prop.path = prop.path.map((coordinate) => { + let lat = coordinate.latitude; + let lon = coordinate.longitude; + return new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + }); + prop.turnPoints = prop.turnPoints.map((turnPoint) => { + let lat = turnPoint.coordinate.latitude; + let lon = turnPoint.coordinate.longitude; + + let coordinate = new Champlain.Coordinate({ latitude: lat, + longitude: lon }); + + return new Route.TurnPoint({ + coordinate: coordinate, + type: turnPoint.type, + distance: turnPoint.distance, + instruction: turnPoint.instruction + }); + }); + route.update(prop); + break; + + case 'places': + prop.forEach((p) => places.push(Place.Place.fromJSON(p))); + break; + } + } + return new StoredRoute({ transportation: transportation, + route: route, + places: places }); +}; diff --git a/src/time.js b/src/time.js new file mode 100644 index 00000000..0c19400b --- /dev/null +++ b/src/time.js @@ -0,0 +1,212 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; + +// allow using :, ., and the ratio symbol to separate hours:mins +const _DELIMITERS = [':', '.', '\u2236']; + +// digits variants +const _DIGIT_RANGE_BASES = [ + // Arabic + 0x0660, + // Persian + 0x06f0, + // Nko + 0x07c0, + // Devanagari + 0x0966, + // Bengali + 0x09e6, + // Gurmukhi + 0x0a66, + // Gujarati + 0x0ae6, + // Oriya + 0x0b66, + // Tamil + 0x0be6, + // Telugu + 0x0c66, + // Kannada + 0x0c80, + // Malayalam + 0x0d66, + // Sinhala + 0x0de6, + // Thai + 0x0e50, + // Lao + 0x0ed0, + // Tibetan + 0x0f20, + // Myanmar + 0x1090, + // Khmer + 0x17e0, + // Mongolian + 0x1810, + // Limbu + 0x1946, + // Tai lue + 0x19d0, + // Tai Tham + 0x1a90, + // Balinese + 0x1b50, + // Sundanese + 0x1bb0, + // Lepcha + 0x1c40 +]; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let _clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat24 = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: false, + timeZone: 'UTC'}); +const _timeFormat12 = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: true, + timeZone: 'UTC'}); + +/* parse a time from a fixed set of free-formats into a string representation: + * hour:min + * + * Examples: + * "10:00" → "10:00" + * "1:00pm" → "13:00" + * "0800" → "08:00" + * "10.30" → "10:30" + * "12" → "12:00" + * + * TODO: maybe try to use some library to get better locale handling, + * or push for something in GLib */ +function parseTimeString(timeString) { + let pmSet = false; + let hours; + let mins; + /* remove extra whitespaces */ + timeString = timeString.replace(/\s+/g, ''); + + if (timeString.endsWith('am')) { + timeString = timeString.substring(0, timeString.length - 2); + } else if (timeString.endsWith('pm')) { + timeString = timeString.substring(0, timeString.length - 2); + pmSet = true; + } + + /* remove delimiting characters if they occur at position 3 (hh:mm) + * or position 2 (h:mm) + */ + if (_DELIMITERS.includes(timeString.charAt(2))) + timeString = timeString.substring(0, 2) + timeString.substring(3); + else if (_DELIMITERS.includes(timeString.charAt(1))) + timeString = timeString.substring(0, 1) + timeString.substring(2); + + // translate localized digits to corresponding Latin digits + let translatedTimeString = ''; + + for (let i = 0; i < timeString.length; i++) { + let c = timeString.charCodeAt(i); + + _DIGIT_RANGE_BASES.forEach((base) => { + if (c >= base && c < base + 10) + c = (c - base) + 0x30; + }); + translatedTimeString += String.fromCharCode(c); + } + + if (translatedTimeString.length === 4) { + /* expect a full time specification (hours, minutes) */ + hours = translatedTimeString.substring(0, 2); + mins = translatedTimeString.substring(2, 4); + } else if (timeString.length === 3) { + /* interpret a 3 digit string as h:mm */ + hours = '0' + translatedTimeString.substring(0, 1); + mins = translatedTimeString.substring(1, 3); + } else if (translatedTimeString.length === 2) { + /* expect just the hour part */ + hours = translatedTimeString.substring(0, 2); + mins = '00'; + } else if (translatedTimeString.length === 1) { + /* expect just the hour part, one digit */ + hours = '0' + translatedTimeString; + mins = '00'; + } else { + /* this makes no sense, just bail out */ + return null; + } + + /* check if the parts can be interpreted as numbers */ + if (hours % 1 === 0 && mins % 1 === 0) { + if (pmSet) + hours = parseInt(hours) + 12; + + /* if the hours or minutes is out-of-range, bail out */ + if (hours < 0 || hours > 24 || mins < 0 || mins > 59) + return null; + + return hours + ':' + mins; + } else { + return null; + } +} + +function _is12Hour() { + return _clockFormat === '12h'; +} + +/** + * Format a time as HH:mm in either 12 or 24 h + * format depending on system settings + * given time in ms since Epoch with an offset in + * ms relative UTC. + */ +function formatTimeWithTZOffset(time, offset) { + let utcTimeWithOffset = time + offset; + let date = new Date(); + let timeFormat = _is12Hour() ? _timeFormat12 : _timeFormat24; + + date.setTime(utcTimeWithOffset); + + return timeFormat.format(date); +} + +/** + * Format a time as HH:mm in either 12 or 24 h + * format depending on system settings + * given hours and minutes values. + */ +function formatTimeFromHoursAndMins(hours, mins) { + let date = new Date(); + let timeFormat = _is12Hour() ? _timeFormat12 : _timeFormat24; + + date.setUTCHours(hours); + date.setUTCMinutes(mins); + + return timeFormat.format(date); +} diff --git a/src/togeojson/LICENSE b/src/togeojson/LICENSE new file mode 100644 index 00000000..bc7706e0 --- /dev/null +++ b/src/togeojson/LICENSE @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2012 Tom MacWright + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/src/togeojson/togeojson.js b/src/togeojson/togeojson.js new file mode 100644 index 00000000..ee99627f --- /dev/null +++ b/src/togeojson/togeojson.js @@ -0,0 +1,357 @@ +const Dom = imports.xmldom.dom; + +var toGeoJSON = (function() { + 'use strict'; + + var removeSpace = /\s*/g, + trimSpace = /^\s*|\s*$/g, + splitSpace = /\s+/; + // generate a short, numeric hash of a string + function okhash(x) { + if (!x || !x.length) return 0; + for (var i = 0, h = 0; i < x.length; i++) { + h = ((h << 5) - h) + x.charCodeAt(i) | 0; + } return h; + } + // all Y children of X + function get(x, y) { return x.getElementsByTagName(y); } + function attr(x, y) { return x.getAttribute(y); } + function attrf(x, y) { return parseFloat(attr(x, y)); } + // one Y child of X, if any, otherwise null + function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; } + // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize + function norm(el) { if (el.normalize) { el.normalize(); } return el; } + // cast array x into numbers + function numarray(x) { + for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); } + return o; + } + function clean(x) { + var o = {}; + for (var i in x) { if (x[i]) { o[i] = x[i]; } } + return o; + } + // get the content of a text node, if any + function nodeVal(x) { + if (x) { norm(x); } + return (x && x.textContent) || ''; + } + // get one coordinate from a coordinate array, if any + function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); } + // get all coordinates from a coordinate array as [[],[]] + function coord(v) { + var coords = v.replace(trimSpace, '').split(splitSpace), + o = []; + for (var i = 0; i < coords.length; i++) { + o.push(coord1(coords[i])); + } + return o; + } + function coordPair(x) { + var ll = [attrf(x, 'lon'), attrf(x, 'lat')], + ele = get1(x, 'ele'), + // handle namespaced attribute in browser + heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'), + time = get1(x, 'time'), + e; + if (ele) { + e = parseFloat(nodeVal(ele)); + if (!isNaN(e)) { + ll.push(e); + } + } + return { + coordinates: ll, + time: time ? nodeVal(time) : null, + heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null + }; + } + + // create a new feature collection parent object + function fc() { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var serializer = new Dom.XMLSerializer(); + function xml2str(str) { + // IE9 will create a new XMLSerializer but it'll crash immediately. + // This line is ignored because we don't run coverage tests in IE9 + /* istanbul ignore next */ + if (str.xml !== undefined) return str.xml; + return serializer.serializeToString(str); + } + + var t = { + kml: function(doc) { + + var gj = fc(), + // styleindex keeps track of hashed styles in order to match features + styleIndex = {}, + // atomic geospatial types supported by KML - MultiGeometry is + // handled separately + geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'], + // all root placemarks in the file + placemarks = get(doc, 'Placemark'), + styles = get(doc, 'Style'), + styleMaps = get(doc, 'StyleMap'); + + for (var k = 0; k < styles.length; k++) { + styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16); + } + for (var l = 0; l < styleMaps.length; l++) { + styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16); + } + for (var j = 0; j < placemarks.length; j++) { + gj.features = gj.features.concat(getPlacemark(placemarks[j])); + } + function kmlColor(v) { + var color, opacity; + v = v || ''; + if (v.substr(0, 1) === '#') { v = v.substr(1); } + if (v.length === 6 || v.length === 3) { color = v; } + if (v.length === 8) { + opacity = parseInt(v.substr(0, 2), 16) / 255; + color = '#'+v.substr(2); + } + return [color, isNaN(opacity) ? undefined : opacity]; + } + function gxCoord(v) { return numarray(v.split(' ')); } + function gxCoords(root) { + var elems = get(root, 'coord', 'gx'), coords = [], times = []; + if (elems.length === 0) elems = get(root, 'gx:coord'); + for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i]))); + var timeElems = get(root, 'when'); + for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j])); + return { + coords: coords, + times: times + }; + } + function getGeometry(root) { + var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = []; + if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); } + if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); } + if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); } + for (i = 0; i < geotypes.length; i++) { + geomNodes = get(root, geotypes[i]); + if (geomNodes) { + for (j = 0; j < geomNodes.length; j++) { + geomNode = geomNodes[j]; + if (geotypes[i] === 'Point') { + geoms.push({ + type: 'Point', + coordinates: coord1(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'LineString') { + geoms.push({ + type: 'LineString', + coordinates: coord(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'Polygon') { + var rings = get(geomNode, 'LinearRing'), + coords = []; + for (k = 0; k < rings.length; k++) { + coords.push(coord(nodeVal(get1(rings[k], 'coordinates')))); + } + geoms.push({ + type: 'Polygon', + coordinates: coords + }); + } else if (geotypes[i] === 'Track' || + geotypes[i] === 'gx:Track') { + var track = gxCoords(geomNode); + geoms.push({ + type: 'LineString', + coordinates: track.coords + }); + if (track.times.length) coordTimes.push(track.times); + } + } + } + } + return { + geoms: geoms, + coordTimes: coordTimes + }; + } + function getPlacemark(root) { + var geomsAndTimes = getGeometry(root), i, properties = {}, + name = nodeVal(get1(root, 'name')), + styleUrl = nodeVal(get1(root, 'styleUrl')), + description = nodeVal(get1(root, 'description')), + timeSpan = get1(root, 'TimeSpan'), + extendedData = get1(root, 'ExtendedData'), + lineStyle = get1(root, 'LineStyle'), + polyStyle = get1(root, 'PolyStyle'); + + if (!geomsAndTimes.geoms.length) return []; + if (name) properties.name = name; + if (styleUrl[0] !== '#') { + styleUrl = '#' + styleUrl; + } + if (styleUrl && styleIndex[styleUrl]) { + properties.styleUrl = styleUrl; + properties.styleHash = styleIndex[styleUrl]; + } + if (description) properties.description = description; + if (timeSpan) { + var begin = nodeVal(get1(timeSpan, 'begin')); + var end = nodeVal(get1(timeSpan, 'end')); + properties.timespan = { begin: begin, end: end }; + } + if (lineStyle) { + var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))), + color = linestyles[0], + opacity = linestyles[1], + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) properties.stroke = color; + if (!isNaN(opacity)) properties['stroke-opacity'] = opacity; + if (!isNaN(width)) properties['stroke-width'] = width; + } + if (polyStyle) { + var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))), + pcolor = polystyles[0], + popacity = polystyles[1], + fill = nodeVal(get1(polyStyle, 'fill')), + outline = nodeVal(get1(polyStyle, 'outline')); + if (pcolor) properties.fill = pcolor; + if (!isNaN(popacity)) properties['fill-opacity'] = popacity; + if (fill) properties['fill-opacity'] = fill === '1' ? 1 : 0; + if (outline) properties['stroke-opacity'] = outline === '1' ? 1 : 0; + } + if (extendedData) { + var datas = get(extendedData, 'Data'), + simpleDatas = get(extendedData, 'SimpleData'); + + for (i = 0; i < datas.length; i++) { + properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value')); + } + for (i = 0; i < simpleDatas.length; i++) { + properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]); + } + } + if (geomsAndTimes.coordTimes.length) { + properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ? + geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes; + } + var feature = { + type: 'Feature', + geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : { + type: 'GeometryCollection', + geometries: geomsAndTimes.geoms + }, + properties: properties + }; + if (attr(root, 'id')) feature.id = attr(root, 'id'); + return [feature]; + } + return gj; + }, + gpx: function(doc) { + var i, + tracks = get(doc, 'trk'), + routes = get(doc, 'rte'), + waypoints = get(doc, 'wpt'), + // a feature collection + gj = fc(), + feature; + for (i = 0; i < tracks.length; i++) { + feature = getTrack(tracks[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < routes.length; i++) { + feature = getRoute(routes[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < waypoints.length; i++) { + gj.features.push(getPoint(waypoints[i])); + } + function getPoints(node, pointname) { + var pts = get(node, pointname), + line = [], + times = [], + heartRates = [], + l = pts.length; + if (l < 2) return {}; // Invalid line in GeoJSON + for (var i = 0; i < l; i++) { + var c = coordPair(pts[i]); + line.push(c.coordinates); + if (c.time) times.push(c.time); + if (c.heartRate) heartRates.push(c.heartRate); + } + return { + line: line, + times: times, + heartRates: heartRates + }; + } + function getTrack(node) { + var segments = get(node, 'trkseg'), + track = [], + times = [], + heartRates = [], + line; + for (var i = 0; i < segments.length; i++) { + line = getPoints(segments[i], 'trkpt'); + if (line.line) track.push(line.line); + if (line.times && line.times.length) times.push(line.times); + if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates); + } + if (track.length === 0) return null; + var properties = getProperties(node); + if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times; + if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates; + return { + type: 'Feature', + properties: properties, + geometry: { + type: track.length === 1 ? 'LineString' : 'MultiLineString', + coordinates: track.length === 1 ? track[0] : track + } + }; + } + function getRoute(node) { + var line = getPoints(node, 'rtept'); + if (!line.line) return null; + var routeObj = { + type: 'Feature', + properties: getProperties(node), + geometry: { + type: 'LineString', + coordinates: line.line + } + }; + return routeObj; + } + function getPoint(node) { + var prop = getProperties(node); + prop.sym = nodeVal(get1(node, 'sym')); + return { + type: 'Feature', + properties: prop, + geometry: { + type: 'Point', + coordinates: coordPair(node).coordinates + } + }; + } + function getProperties(node) { + var meta = ['name', 'desc', 'author', 'copyright', 'link', + 'time', 'keywords'], + prop = {}, + k; + for (k = 0; k < meta.length; k++) { + prop[meta[k]] = nodeVal(get1(node, meta[k])); + } + return clean(prop); + } + return gj; + } + }; + return t; +})(); + +if (typeof module !== 'undefined') module.exports = toGeoJSON; diff --git a/src/transit.js b/src/transit.js new file mode 100644 index 00000000..936847e5 --- /dev/null +++ b/src/transit.js @@ -0,0 +1,79 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019, Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Utils = imports.utils; + +/** + * Get the label to display for the starting point of an itinerary leg. + * leg: the itinerary leg + * isFirstLeg: true if this is the first leg of the itinerary. + */ +function getFromLabel(leg, isFirstLeg) { + if (isFirstLeg) { + if (leg.from) { + /* Translators: this is a format string indicating instructions + * starting a journey at the address given as the parameter + */ + return _("Start at %s").format(leg.from); + } else { + /* Translators: this indicates starting a journey at a location + * with no set name (such as when the user started routing from + * an arbitrary point on the map) + */ + return _("Start"); + } + } else { + return leg.from; + } +} + +/** + * Get the label to display for the destination headsign. + * leg: the itinerary leg + */ +function getHeadsignLabel(leg) { + if (leg.transit && leg.headsign) { + return leg.headsign; + } else if (!leg.transit) { + /* Translators: this is a format string indicating walking a certain + * distance, with the distance expression being the %s placeholder + */ + return _("Walk %s").format(Utils.prettyDistance(leg.distance)); + } else { + return null; + } +} + +/** + * Get the label to display for arrival of the final leg of an itinerary. + */ +function getArrivalLabel(lastLeg) { + if (lastLeg.to) { + /* Translators: this a format string indicating arriving at the + * destination of journey with the arrival address and transit + * stop as the format parameter */ + return _("Arrive at %s").format(lastLeg.to); + } else { + return _("Arrive"); + } +} diff --git a/src/transitArrivalMarker.js b/src/transitArrivalMarker.js new file mode 100644 index 00000000..62547400 --- /dev/null +++ b/src/transitArrivalMarker.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitArrivalMarker = GObject.registerClass( +class TransitArrivalMarker extends MapMarker.MapMarker { + + _init(params) { + let lastPoint = params.leg.polyline[params.leg.polyline.length - 1]; + let location = + new Location.Location({ latitude: lastPoint.latitude, + longitude: lastPoint.longitude + }); + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-end-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitArrivalRow.js b/src/transitArrivalRow.js new file mode 100644 index 00000000..bb5333db --- /dev/null +++ b/src/transitArrivalRow.js @@ -0,0 +1,65 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Transit = imports.transit; + +var TransitArrivalRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-arrival-row.ui', + InternalChildren: ['arrivalLabel', + 'timeLabel', + 'eventBox', + 'separator'] +}, class TransitArrivalRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._arrivalLabel.label = Transit.getArrivalLabel(lastLeg); + this._timeLabel.label = lastLeg.prettyPrintArrivalTime(); + + this._eventBox.connect('event', (widget, event) => { + this._onEvent(event, lastLeg.toCoordinate); + return true; + }); + } + + _onEvent(event, coord) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(coord[0], coord[1]); + } + } +}); diff --git a/src/transitBoardMarker.js b/src/transitBoardMarker.js new file mode 100644 index 00000000..2409614e --- /dev/null +++ b/src/transitBoardMarker.js @@ -0,0 +1,138 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const ICON_SIZE = 12; +const ACTOR_SIZE = 20; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitBoardMarker = GObject.registerClass( +class TransitBoardMarker extends MapMarker.MapMarker { + + _init(params) { + let firstPoint = params.leg.polyline[0]; + let location = new Location.Location({ latitude: firstPoint.latitude, + longitude: firstPoint.longitude + }); + let leg = params.leg; + + delete params.leg; + params.place = new Place.Place({ location: location }); + super._init(params); + + this.add_actor(this._createActor(leg)); + } + + /* Creates a Clutter actor for the given transit leg, showing the + * corresponding transit type icon and rendered inside a circle using the + * foreground color of the icon taken from the transit legs text color + * attribute and background color taken from the transit legs color + * attribute. + * Also draw an outline in the same color as the icon in case the + * background color above a threshold to improve readability against the + * map background. + */ + _createActor(leg) { + try { + let bgColor = leg.color ? leg.color : TransitPlan.DEFAULT_ROUTE_COLOR; + let fgColor = + Color.getContrastingForegroundColor(bgColor, leg.textColor ? + leg.textColor : + TransitPlan.DEFAULT_ROUTE_TEXT_COLOR); + let hasOutline = + Color.relativeLuminance(bgColor) > OUTLINE_LUMINANCE_THREASHHOLD; + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let fgRed = Color.parseColor(fgColor, 0); + let fgGreen = Color.parseColor(fgColor, 1); + let fgBlue = Color.parseColor(fgColor, 2); + let fgRGBA = new Gdk.RGBA({ red: fgRed, + green: fgGreen, + blue: fgBlue, + alpha: 1.0 + }); + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_icon(leg.iconName, ICON_SIZE, + Gtk.IconLookupFlags.FORCE_SIZE); + let pixbuf = info.load_symbolic(fgRGBA, null, null, null)[0]; + let canvas = new Clutter.Canvas({ width: ACTOR_SIZE, + height: ACTOR_SIZE }); + + + canvas.connect('draw', (canvas, cr) => { + cr.setOperator(Cairo.Operator.CLEAR); + cr.paint(); + cr.setOperator(Cairo.Operator.OVER); + + cr.setSourceRGB(bgRed, bgGreen, bgBlue); + cr.arc(ACTOR_SIZE / 2, ACTOR_SIZE / 2, ACTOR_SIZE / 2, + 0, Math.PI * 2); + cr.fillPreserve(); + + Gdk.cairo_set_source_pixbuf(cr, pixbuf, + (ACTOR_SIZE - pixbuf.get_width()) / 2, + (ACTOR_SIZE - pixbuf.get_height()) / 2); + cr.paint(); + + if (hasOutline) { + cr.setSourceRGB(fgRed, fgGreen, fgBlue); + cr.setLineWidth(1); + cr.stroke(); + } + + this._surface = cr.getTarget(); + }); + + let actor = new Clutter.Actor(); + + actor.set_content(canvas); + actor.set_size(ACTOR_SIZE, ACTOR_SIZE); + canvas.invalidate(); + + return actor; + } catch (e) { + Utils.debug('Failed to load image: %s'.format(e.message)); + return null; + } + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitItineraryRow.js b/src/transitItineraryRow.js new file mode 100644 index 00000000..0ec2db3f --- /dev/null +++ b/src/transitItineraryRow.js @@ -0,0 +1,148 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const TransitRouteLabel = imports.transitRouteLabel; + +// maximum number of legs to show before abbreviating with a … in the middle +const MAX_LEGS_SHOWN = 8; + +var TransitItineraryRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-itinerary-row.ui', + InternalChildren: ['timeLabel', + 'durationLabel', + 'summaryGrid'] +}, class TransitItineraryRow extends Gtk.ListBoxRow { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + super._init(params); + + this._timeLabel.label = this._itinerary.prettyPrintTimeInterval(); + this._durationLabel.label = this._itinerary.prettyPrintDuration(); + + this._populateSummary(); + } + + get itinerary() { + return this._itinerary; + } + + _populateSummary() { + let length = this._itinerary.legs.length; + /* use compacted route labels when more than 2 legs, to avoid + * overflowing the sidebar width + */ + let useCompact = length > 2; + /* don't show the route labels if too much space is consumed, + * the constant 26 here was empiracally tested out... + */ + let estimatedSpace = this._calculateEstimatedSpace(); + let useContractedLabels = estimatedSpace > 26; + + if (length > MAX_LEGS_SHOWN) { + /* ellipsize list with horizontal dots to avoid overflowing and + * expanding the sidebar + */ + let firstPart = this._itinerary.legs.slice(0, MAX_LEGS_SHOWN / 2); + let lastPart = this._itinerary.legs.slice(-MAX_LEGS_SHOWN / 2); + + this._renderLegs(firstPart, 0, true, true); + this._summaryGrid.attach(new Gtk.Label({ visible: true, + label: '\u22ef' } ), + firstPart.length * 2, 0, 1, 1); + this._renderLegs(lastPart, firstPart.length * 2 + 1, true, true); + } else { + this._renderLegs(this._itinerary.legs, 0, useCompact, + useContractedLabels); + } + } + + /* + * Render a list of legs. + * legs: array of legs to render + * startPosition: start position in grid to render at + * useCompact: true if compact rendering (without route designations) + * useContractedLabels: true to use contracted route labels, if possible + */ + _renderLegs(legs, startPosition, useCompact, useContractedLabels) { + let length = legs.length; + + legs.forEach((leg, i) => { + this._summaryGrid.attach(this._createLeg(leg, useCompact, + useContractedLabels), + startPosition + i * 2, 0, 1, 1); + // render a separator label unless the last leg to render + if (i !== length - 1) + this._summaryGrid.attach(new Gtk.Label({ visible: true, + label: '-' }), + startPosition + i * 2 + 1, 0, 1, 1); + }); + } + + /* calculate an estimated relative space-consumption for rendering, + * this is done based on route label character lengths and a fixed + * "placeholder" amount for mode icons and separators, since doing an + * exact pixel-correct calculation would be hard depending on fonts and + * themes + */ + _calculateEstimatedSpace() { + let length = this._itinerary.legs.length; + /* assume mode icons and the separators consume about twice the space of + * characters + */ + let space = 4 * length - 2; + + this._itinerary.legs.forEach(function(leg) { + if (leg.transit) + space += leg.compactRoute.length; + }); + + return space; + } + + _createLeg(leg, useCompact, useContractedLabels) { + let icon = new Gtk.Image({ icon_name: leg.iconName, visible: true }); + + icon.get_style_context().add_class('sidebar-icon'); + + if (!leg.transit || useContractedLabels) { + /* if this is a non-transit leg (walking), or in case we should + * display only a mode icon (to save space), insert a sole icon */ + return icon; + } else { + /* for transit legs put besides a short route label */ + let grid = new Gtk.Grid({ visible: true, column_spacing: 2 }); + + grid.attach(icon, 0, 0, 1, 1); + grid.attach(new TransitRouteLabel.TransitRouteLabel({ leg: leg, + compact: useCompact, + visible: true }), + 1, 0, 1, 1); + + return grid; + } + } +}); diff --git a/src/transitLegRow.js b/src/transitLegRow.js new file mode 100644 index 00000000..46d0a31d --- /dev/null +++ b/src/transitLegRow.js @@ -0,0 +1,209 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Gdk = imports.gi.Gdk; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; + +const InstructionRow = imports.instructionRow; +const Transit = imports.transit; +const TransitRouteLabel = imports.transitRouteLabel; +const TransitStopRow = imports.transitStopRow; +const Utils = imports.utils; + +var TransitLegRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-leg-row.ui', + InternalChildren: ['modeImage', + 'fromLabel', + 'routeGrid', + 'timeLabel', + 'footerStack', + 'expandButton', + 'detailsRevealer', + 'agencyLabel', + 'collapsButton', + 'instructionList', + 'eventBox'] +}, class TransitLegRow extends Gtk.ListBoxRow { + + _init(params) { + this._leg = params.leg; + delete params.leg; + + this._start = params.start; + delete params.start; + + this._mapView = params.mapView; + delete params.mapView; + + super._init(params); + + this._modeImage.icon_name = this._leg.iconName; + this._fromLabel.label = Transit.getFromLabel(this._leg, this._start); + + if (this._leg.transit) { + let routeLabel = new TransitRouteLabel.TransitRouteLabel({ + leg: this._leg, + }); + + this._routeGrid.attach(routeLabel, 0, 0, 1, 1); + + this._agencyLabel.visible = true; + + if (this._leg.agencyUrl) { + let url = GLib.markup_escape_text(this._leg.agencyUrl, -1); + /* we need to double-escape the tooltip text, as GTK+ treats it as + * markup + */ + let tooltip = GLib.markup_escape_text(url, -1); + this._agencyLabel.label = + '%s'.format(url, tooltip, + this._leg.agencyName); + } else { + this._agencyLabel.label = this._leg.agencyName; + } + } else { + this._expandButton.tooltip_text = _("Show walking instructions"); + this._collapsButton.tooltip_text = _("Hide walking instructions"); + } + + if (!this._leg.transit || this._leg.headsign) { + /* Restrict headsign label to 20 characters to avoid horizontally + * overflowing the sidebar. + */ + let headsignLabel = new Gtk.Label({ visible: true, + can_focus: false, + use_markup: true, + hexpand: true, + margin_start: 3, + max_width_chars: 20, + ellipsize: Pango.EllipsizeMode.END, + halign: Gtk.Align.START }); + let label = + GLib.markup_escape_text(Transit.getHeadsignLabel(this._leg), -1); + + headsignLabel.label = '%s'.format(label); + headsignLabel.get_style_context().add_class('dim-label'); + this._routeGrid.attach(headsignLabel, this._leg.transit ? 1 : 0, 0, + 1, 1); + } + + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + + if (this._hasIntructions()) + this._populateInstructions(); + else + this._footerStack.visible_child_name = 'separator'; + + this._expandButton.connect('clicked', this._expand.bind(this)); + this._collapsButton.connect('clicked', this._collaps.bind(this)); + + this._instructionList.connect('row-selected', (listbox, row) => { + if (row) { + if (row.turnPoint) + this._mapView.showTurnPoint(row.turnPoint); + else + this._mapView.showTransitStop(row.stop, this._leg); + } + }); + + this._eventBox.connect('event', (widget, event) => { + this._handleEventBox(event); + return true; + }); + + this._isExpanded = false; + } + + // Handle events received on the EventBox for expanding when clicking + _handleEventBox(event) { + let [isButton, button] = event.get_button(); + let type = event.get_event_type(); + + if (isButton && button === 1 && type === Gdk.EventType.BUTTON_PRESS) { + if (this._isExpanded) { + this._collaps(); + } else { + this._mapView.view.zoom_level = 16; + this._mapView.view.center_on(this._leg.fromCoordinate[0], + this._leg.fromCoordinate[1]); + if (this._hasIntructions()) + this._expand(); + } + } + } + + _expand() { + this._footerStack.visible_child_name = 'separator'; + this._detailsRevealer.reveal_child = true; + /* collaps the time label down to just show the start time when + * revealing intermediate stop times, as the arrival time is displayed + * at the last stop + */ + this._timeLabel.label = this._leg.prettyPrintDepartureTime(); + this._isExpanded = true; + } + + _collaps() { + this._footerStack.visible_child_name = 'expander'; + this._detailsRevealer.reveal_child = false; + this._timeLabel.label = this._leg.prettyPrintTime({ isStart: this._start }); + this._isExpanded = false; + } + + _hasIntructions() { + return this._leg.transit || this._leg.walkingInstructions; + } + + _populateInstructions() { + if (this._leg.transit) { + if (this._leg.intermediateStops) { + let stops = this._leg.intermediateStops; + for (let index = 0; index < stops.length; index++) { + let stop = stops[index]; + let row = + new TransitStopRow.TransitStopRow({ visible: true, + stop: stop, + final: index === stops.length - 1 }); + this._instructionList.insert(row, -1); + } + } + } else { + /* don't output the starting and ending instructions from the walk + * route, since these are explicitly added by the itinerary + */ + for (let index = 1; + index < this._leg.walkingInstructions.length - 1; + index++) { + let instruction = this._leg.walkingInstructions[index]; + let row = + new InstructionRow.InstructionRow({ visible: true, + turnPoint: instruction }); + + this._instructionList.insert(row, -1); + } + } + } +}); diff --git a/src/transitMoreRow.js b/src/transitMoreRow.js new file mode 100644 index 00000000..64228b19 --- /dev/null +++ b/src/transitMoreRow.js @@ -0,0 +1,58 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; + +var TransitMoreRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-more-row.ui', + InternalChildren: ['stack', + 'label'] +}, class TransitMoreRow extends Gtk.ListBoxRow { + + _init(params) { + super._init(params); + + if (Application.routeQuery.arriveBy) + this._label.label = _("Load earlier alternatives"); + else + this._label.label = _("Load later alternatives"); + } + + startLoading() { + this._stack.visible_child_name = 'spinner'; + } + + showNoMore() { + this.activatable = false; + this._label.get_style_context().add_class('dim-label'); + this._stack.visible_child_name = 'label'; + + if (Application.routeQuery.arriveBy) + this._label.label = _("No earlier alternatives found."); + else + this._label.label = _("No later alternatives found."); + } +}); diff --git a/src/transitOptions.js b/src/transitOptions.js new file mode 100644 index 00000000..0a964eef --- /dev/null +++ b/src/transitOptions.js @@ -0,0 +1,70 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +var TransitOptions = class TransitOptions { + + constructor() { + this._showAllTransitTypes = true; + this._transitTypes = []; + } + + get showAllTransitTypes() { + return this._showAllTransitTypes; + } + + /* When set to true, show any mode of transportation, else only show modes + * added with addTransitType() + */ + set showAllTransitTypes(showAllTransitTypes) { + this._showAllTransitTypes = showAllTransitTypes; + this._transitTypes = []; + } + + /* Add an explicit transport mode to show + */ + addTransitType(transitType) { + this._showAllTransitTypes = false; + this._transitTypes.push(transitType); + } + + get transitTypes() { + return this._transitTypes; + } +}; + +/* return true if the passed in options objects are equal, either both + * accept any transit type, or both contains the same set of types, otherwise + * return false + */ +function equals(first, second) { + if (first.showAllTransitTypes && second.showAllTransitTypes) { + return true; + } else if (first.transitTypes.length !== second.transitTypes.length) { + return false; + } else { + for (let type of first.transitTypes) { + if (second.transitTypes.indexOf(type) === -1) + return false; + } + + return true; + } +} diff --git a/src/transitOptionsPanel.js b/src/transitOptionsPanel.js new file mode 100644 index 00000000..6c23a3ee --- /dev/null +++ b/src/transitOptionsPanel.js @@ -0,0 +1,206 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017, Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Application = imports.application; +const HVT = imports.hvt; +const Time = imports.time; +const TransitOptions = imports.transitOptions; +const TransitPlan = imports.transitPlan; + +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +let _desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }); +let clockFormat = _desktopSettings.get_string(CLOCK_FORMAT_KEY); + +const _timeFormat = new Intl.DateTimeFormat([], { hour: '2-digit', + minute: '2-digit', + hour12: clockFormat === '12h' }); + +var TransitOptionsPanel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-options-panel.ui', + InternalChildren: ['transitTimeOptionsComboBox', + 'transitTimeEntry', + 'transitDateButton', + 'transitDateCalendar', + 'transitParametersMenuButton', + 'busCheckButton', + 'tramCheckButton', + 'trainCheckButton', + 'subwayCheckButton', + 'ferryCheckButton', + 'airplaneCheckButton'] +}, class TransitOptionsPanel extends Gtk.Grid { + + _init(params) { + this._query = Application.routeQuery; + super._init(params); + this._initTransitOptions(); + } + + reset() { + /* reset to indicate departure now and forget any previous manually + * set time and date + */ + this._transitTimeOptionsComboBox.active_id = 'leaveNow'; + this._timeSelected = false; + this._dateSelected = false; + this._lastOptions = new TransitOptions.TransitOptions(); + } + + _initTransitOptions() { + this._transitTimeOptionsComboBox.connect('changed', + this._onTransitTimeOptionsComboboxChanged.bind(this)); + this._transitTimeEntry.connect('activate', + this._onTransitTimeEntryActivated.bind(this)); + /* trigger an update of the query time as soon as focus leave the time + * entry, to allow the user to enter a time before selecting start + * and destination without having to press enter */ + this._transitTimeEntry.connect('focus-out-event', + this._onTransitTimeEntryActivated.bind(this)); + this._transitDateButton.popover.get_child().connect('day-selected-double-click', + this._onTransitDateCalenderDaySelected.bind(this)); + this._transitDateButton.connect('toggled', + this._onTransitDateButtonToogled.bind(this)); + this._transitParametersMenuButton.connect('toggled', + this._onTransitParametersToggled.bind(this)) + } + + _onTransitTimeOptionsComboboxChanged() { + if (this._transitTimeOptionsComboBox.active_id === 'leaveNow') { + this._transitTimeEntry.visible = false; + this._transitDateButton.visible = false; + this._query.arriveBy = false; + this._query.date = null; + this._query.time = null; + this._timeSelected = null; + this._dateSelected = null; + } else { + this._transitTimeEntry.visible = true; + this._transitDateButton.visible = true; + + if (!this._timeSelected) + this._transitTimeEntry.text = _timeFormat.format(new Date()); + + if (!this._dateSelected) + this._updateTransitDateButton(GLib.DateTime.new_now_local()); + + if (this._transitTimeOptionsComboBox.active_id === 'arriveBy') { + this._query.arriveBy = true; + } else { + this._query.arriveBy = false; + } + } + } + + _onTransitTimeEntryActivated() { + let timeString = this._transitTimeEntry.text; + + if (timeString && timeString.length > 0) { + timeString = Time.parseTimeString(timeString); + + /* only trigger an update if a different time was entered */ + if (timeString && timeString !== this._timeSelected) { + this._query.time = timeString; + /* remember that the user has selected a time */ + this._timeSelected = timeString; + } + } + } + + _updateTransitDateButton(date) { + this._transitDateButton.label = + /* + * Translators: this is a format string giving the equivalent to + * "may 29" according to the current locale's convensions. + */ + date.format(C_("month-day-date", "%b %e")); + } + + _onTransitDateCalenderDaySelected() { + let calendar = this._transitDateButton.popover.get_child(); + let year = calendar.year; + let month = calendar.month + 1; + let day = calendar.day; + let date = '%04d-%02d-%02d'.format(year, month, day); + + /* only trigger an update if a different date was selected */ + if (date !== this._dateSelected) { + this._query.date = date; + this._transitDateButton.active = false; + this._updateTransitDateButton(GLib.DateTime.new_local(year, month, day, + 0, 0, 0)); + /* remember that the user has already selected a date */ + this._dateSelected = date; + } + } + + _onTransitDateButtonToogled() { + if (!this._transitDateButton.active) + this._onTransitDateCalenderDaySelected(); + } + + _createTransitOptions() { + let options = new TransitOptions.TransitOptions(); + let busSelected = this._busCheckButton.active; + let tramSelected = this._tramCheckButton.active; + let trainSelected = this._trainCheckButton.active; + let subwaySelected = this._subwayCheckButton.active; + let ferrySelected = this._ferryCheckButton.active; + let airplaneSelected = this._airplaneCheckButton.active; + + if (busSelected && tramSelected && trainSelected && subwaySelected && + ferrySelected && airplaneSelected) { + options.showAllTransitTypes = true; + } else { + if (busSelected) + options.addTransitType(TransitPlan.RouteType.BUS); + if (tramSelected) + options.addTransitType(TransitPlan.RouteType.TRAM); + if (trainSelected) + options.addTransitType(TransitPlan.RouteType.TRAIN); + if (subwaySelected) + options.addTransitType(TransitPlan.RouteType.SUBWAY); + if (ferrySelected) + options.addTransitType(TransitPlan.RouteType.FERRY); + if (airplaneSelected) + options.addTransitType(HVT.AIR_SERVICE); + } + + return options; + } + + _onTransitParametersToggled() { + if (!this._transitParametersMenuButton.active) { + let options = this._createTransitOptions(); + + if (!TransitOptions.equals(options, this._lastOptions)) { + this._query.transitOptions = options; + this._lastOptions = options; + } + } + } + }); diff --git a/src/transitPlan.js b/src/transitPlan.js new file mode 100644 index 00000000..b6556e0f --- /dev/null +++ b/src/transitPlan.js @@ -0,0 +1,832 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; + +const BoundingBox = imports.boundingBox; +const HVT = imports.hvt; +const Time = imports.time; +const Utils = imports.utils; + +/* + * These constants corresponds to the routeType attribute of transit legs + * in original GTFS specification. + */ +var RouteType = { + NON_TRANSIT: -1, + TRAM: 0, + SUBWAY: 1, + TRAIN: 2, + BUS: 3, + FERRY: 4, + /* Cable car refers to street-level cabel cars, where the propulsive + * cable runs in a slot between the tracks beneath the car + * https://en.wikipedia.org/wiki/Cable_car_%28railway%29 + * For example the cable cars in San Francisco + * https://en.wikipedia.org/wiki/San_Francisco_cable_car_system + */ + CABLE_CAR: 5, + /* Gondola refers to a suspended cable car, typically aerial cable cars + * where the car is suspended from the cable + * https://en.wikipedia.org/wiki/Gondola_lift + * For example the "Emirates Air Line" in London + * https://en.wikipedia.org/wiki/Emirates_Air_Line_%28cable_car%29 + */ + GONDOLA: 6, + /* Funicular refers to a railway system designed for steep inclines, + * https://en.wikipedia.org/wiki/Funicular + */ + FUNICULAR: 7, + /* Electric buses that draw power from overhead wires using poles. */ + TROLLEYBUS: 11, + /* Railway in which the track consists of a single rail or a beam. */ + MONORAIL: 12 +}; + +/* extra time to add to the first itinerary leg when it's a walking leg */ +const WALK_SLACK = 120; + +var DEFAULT_ROUTE_COLOR = '4c4c4c'; +var DEFAULT_ROUTE_TEXT_COLOR = 'ffffff'; + +var Plan = GObject.registerClass({ + Signals: { + 'update': {}, + 'reset': {}, + 'no-more-results': {}, + 'itinerary-selected': { param_types: [GObject.TYPE_OBJECT] }, + 'itinerary-deselected': {}, + 'error': { param_types: [GObject.TYPE_STRING] } + } +}, class Plan extends GObject.Object { + + _init(params) { + super._init(params); + this.reset(); + this._attribution = null; + this._attributionUrl = null; + } + + get itineraries() { + return this._itineraries; + } + + get selectedItinerary() { + return this._selectedItinerary; + } + + get attribution() { + return this._attribution; + } + + set attribution(attribution) { + this._attribution = attribution; + } + + get attributionUrl() { + return this._attributionUrl; + } + + set attributionUrl(attributionUrl) { + this._attributionUrl = attributionUrl; + } + + update(itineraries) { + this._itineraries = itineraries; + this.bbox = this._createBBox(); + this.emit('update'); + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + updateWithNewItineraries(itineraries, arriveBy, extendPrevious) { + /* sort itineraries, by departure time ascending if querying + * by leaving time, by arrival time descending when querying + * by arriving time + */ + if (arriveBy) + itineraries.sort(sortItinerariesByArrivalDesc); + else + itineraries.sort(sortItinerariesByDepartureAsc); + + let newItineraries = + extendPrevious ? this.itineraries.concat(itineraries) : itineraries; + + this.update(newItineraries); + } + + + + reset() { + this._itineraries = []; + this.bbox = null; + this._selectedItinerary = null; + this._attribution = null; + this._attributionUrl = null; + this.emit('reset'); + } + + noMoreResults() { + this.emit('no-more-results'); + } + + selectItinerary(itinerary) { + this._selectedItinerary = itinerary; + this.emit('itinerary-selected', itinerary); + } + + deselectItinerary() { + this._selectedItinerary = null; + this.emit('itinerary-deselected'); + } + + error(msg) { + this.emit('error', msg); + } + + noRouteFound() { + this.emit('error', _("No route found.")); + } + + noTimetable() { + this.emit('error', _("No timetable data found for this route.")); + } + + requestFailed() { + this.emit('error', _("Route request failed.")); + } + + noProvider() { + this.emit('error', _("No provider found for this route.")); + } + + _createBBox() { + let bbox = new BoundingBox.BoundingBox(); + this._itineraries.forEach(function(itinerary) { + bbox.compose(itinerary.bbox); + }); + return bbox; + } +}); + +var Itinerary = GObject.registerClass( +class Itinerary extends GObject.Object { + + _init(params) { + this._duration = params.duration; + delete params.duration; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._transfers = params.transfers; + delete params.transfers; + + this._legs = params.legs; + delete params.legs; + + super._init(params); + + this.bbox = this._createBBox(); + } + + get duration() { + return this._duration; + } + + get departure() { + return this._departure; + } + + get arrival() { + return this._arrival; + } + + get transfers() { + return this._transfers; + } + + get legs() { + return this._legs; + } + + /* adjust timings of the legs of the itinerary, using the real duration of + * walking legs, also sets the timezone offsets according to adjacent + * transit legs + */ + _adjustLegTimings() { + if (this.legs.length === 1 && !this.legs[0].transit) { + /* if there is only one leg, and it's a walking one, just need to + * adjust the arrival time + */ + let leg = this.legs[0]; + leg.arrival = leg.departure + leg.duration * 1000; + + return; + } + + for (let i = 0; i < this.legs.length; i++) { + let leg = this.legs[i]; + + if (!leg.transit) { + if (i === 0) { + /* for the first leg subtract the walking time plus a + * safety slack from the departure time of the following + * leg + */ + let nextLeg = this.legs[i + 1]; + leg.departure = + nextLeg.departure - leg.duration * 1000 - WALK_SLACK; + leg.arrival = leg.departure + leg.duration * 1000; + // use the timezone offset from the first transit leg + leg.agencyTimezoneOffset = nextLeg.agencyTimezoneOffset; + } else { + /* for walking legs in the middle or at the end, just add + * the actual walking walk duration to the arrival time of + * the previous leg + */ + let previousLeg = this.legs[i - 1]; + leg.departure = previousLeg.arrival; + leg.arrival = previousLeg.arrival + leg.duration * 1000; + // use the timezone offset of the previous (transit) leg + leg.agencyTimezoneOffset = previousLeg.agencyTimezoneOffset; + } + } + } + } + + _createBBox() { + let bbox = new BoundingBox.BoundingBox(); + + this._legs.forEach(function(leg) { + bbox.compose(leg.bbox); + }); + + return bbox; + } + + prettyPrintTimeInterval() { + /* Translators: this is a format string for showing a departure and + * arrival time, like: + * "12:00 – 13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s \u2013 %s").format(this._getDepartureTime(), + this._getArrivalTime()); + } + + _getDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg */ + return Time.formatTimeWithTZOffset(this.departure, + this.legs[0].agencyTimezoneOffset); + } + + _getArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg */ + let lastLeg = this.legs[this.legs.length - 1]; + return Time.formatTimeWithTZOffset(this.arrival, + lastLeg.agencyTimezoneOffset); + } + + prettyPrintDuration() { + let mins = this.duration / 60; + + if (mins < 60) { + let minStr = Utils.formatLocaleInteger(mins); + + /* translators: this is an indication for a trip duration of + * less than an hour, with only the minutes part, using plural forms + * as appropriate + */ + return ngettext("%s minute", "%s minutes", mins).format(minStr); + } else { + let hours = Math.floor(mins / 60); + let hourStr = Utils.formatLocaleInteger(hours); + + mins = mins % 60; + + if (mins === 0) { + /* translators: this is an indication for a trip duration, + * where the duration is an exact number of hours (i.e. no + * minutes part), using plural forms as appropriate + */ + return ngettext("%s hour", "%s hours", hours).format(hourStr); + } else { + let minStr = Utils.formatLocaleIntegerMinimumTwoDigits(mins); + + /* translators: this is an indication for a trip duration + * where the duration contains an hour and minute part, it's + * pluralized on the hours part + */ + return ngettext("%s:%s hour", "%s:%s hours", hours).format(hourStr, minStr); + } + } + } + + adjustTimings() { + this._adjustLegTimings(); + this._departure = this._legs[0].departure; + this._arrival = this._legs[this._legs.length - 1].arrival; + this._duration = (this._arrival - this._departure) / 1000; + } + + _getTransitDepartureLeg() { + for (let i = 0; i < this._legs.length; i++) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + _getTransitArrivalLeg() { + for (let i = this._legs.length - 1; i >= 0; i--) { + let leg = this._legs[i]; + + if (leg.transit) + return leg; + } + + throw new Error('no transit leg found'); + } + + /* gets the departure time of the first transit leg */ + get transitDepartureTime() { + return this._getTransitDepartureLeg().departure; + } + + /* gets the timezone offset of the first transit leg */ + get transitDepartureTimezoneOffset() { + return this._getTransitDepartureLeg().timezoneOffset; + } + + /* gets the arrival time of the final transit leg */ + get transitArrivalTime() { + return this._getTransitArrivalLeg().arrival; + } + + /* gets the timezone offset of the final transit leg */ + get transitArrivalTimezoneOffset() { + return this._getTransitArrivalLeg().timezoneOffset; + } + + get isWalkingOnly() { + return this.legs.length === 1 && !this.legs[0].isTransit; + } +}); + +var Leg = class Leg { + + constructor(params) { + this._route = params.route; + delete params.route; + + this._routeType = params.routeType; + delete params.routeType; + + this._departure = params.departure; + delete params.departure; + + this._arrival = params.arrival; + delete params.arrival; + + this._polyline = params.polyline; + delete params.polyline; + + this._fromCoordinate = params.fromCoordinate; + delete params.fromCoordinate; + + this._toCoordinate = params.toCoordinate; + delete params.toCoordinate; + + this._from = params.from; + delete params.from; + + this._to = params.to; + delete params.to; + + this._intermediateStops = params.intermediateStops; + delete params.intermediateStops; + + this._headsign = params.headsign; + delete params.headsign; + + this._isTransit = params.isTransit; + delete params.isTransit; + + this._walkingInstructions = params.walkingInstructions; + delete params.walkingInstructions; + + this._distance = params.distance; + delete params.distance; + + this._duration = params.duration; + delete params.duration; + + this._agencyName = params.agencyName; + delete params.agencyName; + + this._agencyUrl = params.agencyUrl; + delete params.agencyUrl; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._color = params.color; + delete params.color; + + this._textColor = params.textColor; + delete params.textColor; + + this._tripShortName = params.tripShortName; + delete params.tripShortName; + + this.bbox = this._createBBox(); + + this._compactRoute = null; + } + + get route() { + return this._route; + } + + set route(route) { + this._route = route; + } + + // try to get a shortened route name, suitable for overview rendering + get compactRoute() { + if (this._compactRoute) + return this._compactRoute; + + if (this._route.startsWith(this._agencyName)) { + /* if the agency name is a prefix of the route name, display the + * agency name in the overview, this way we get a nice "transition" + * into the expanded route showing the full route name + */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && + (this._agencyName.length < this._tripShortName.length)) { + /* if the agency name is shorter than the trip short name, + * which can sometimes be a more "internal" number, like a + * "train number", which is less known by the general public, + * prefer the agency name */ + this._compactRoute = this._agencyName; + } else if (this._tripShortName && this._tripShortName.length <= 6) { + /* if the above conditions are unmet, use the trip short name + * as a fallback if it was shorter than the original route name */ + this._compactRoute = this._tripShortName; + } else if (this._color) { + /* as a fallback when the route has a defined color, + * use an empty compact label to get a colored badge */ + this._compactRoute = ''; + } else { + /* if none of the above is true, use the original route name, + * and rely on label ellipsization */ + this._compactRoute = this._route; + } + + return this._compactRoute; + } + + get routeType() { + return this._routeType; + } + + set routeType(routeType) { + this._routeType = routeType; + } + + get departure() { + return this._departure; + } + + set departure(departure) { + this._departure = departure; + } + + get arrival() { + return this._arrival; + } + + get timezoneOffset() { + return this._agencyTimezoneOffset; + } + + set arrival(arrival) { + this._arrival = arrival; + } + + get polyline() { + return this._polyline; + } + + set polyline(polyline) { + this._polyline = polyline; + } + + get fromCoordinate() { + return this._fromCoordinate; + } + + get toCoordinate() { + return this._toCoordinate; + } + + get from() { + return this._from; + } + + get to() { + return this._to; + } + + get intermediateStops() { + return this._intermediateStops; + } + + set intermediateStops(intermediateStops) { + this._intermediateStops = intermediateStops; + } + + get headsign() { + return this._headsign; + } + + get transit() { + return this._isTransit; + } + + get distance() { + return this._distance; + } + + set distance(distance) { + this._distance = distance; + } + + get duration() { + return this._duration; + } + + get agencyName() { + return this._agencyName; + } + + get agencyUrl() { + return this._agencyUrl; + } + + get agencyTimezoneOffset() { + return this._agencyTimezoneOffset; + } + + set agencyTimezoneOffset(tzOffset) { + this._agencyTimezoneOffset = tzOffset; + } + + get color() { + return this._color || DEFAULT_ROUTE_COLOR; + } + + set color(color) { + this._color = color; + } + + get textColor() { + return this._textColor || DEFAULT_ROUTE_TEXT_COLOR; + } + + set textColor(textColor) { + this._textColor = textColor; + } + + get tripShortName() { + return this._tripShortName; + } + + _createBBox() { + let bbox = new BoundingBox.BoundingBox(); + + this.polyline.forEach(function({ latitude, longitude }) { + bbox.extend(latitude, longitude); + }); + + return bbox; + } + + get iconName() { + if (this._isTransit) { + let type = this._routeType; + switch (type) { + /* special case HVT codes */ + case HVT.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + default: + let hvtSupertype = HVT.supertypeOf(type); + + if (hvtSupertype !== -1) + type = hvtSupertype; + + switch (type) { + case RouteType.TRAM: + case HVT.TRAM_SERVICE: + return 'route-transit-tram-symbolic'; + + case RouteType.SUBWAY: + case HVT.METRO_SERVICE: + case HVT.URBAN_RAILWAY_SERVICE: + case HVT.UNDERGROUND_SERVICE: + return 'route-transit-subway-symbolic'; + + case RouteType.TRAIN: + case HVT.RAILWAY_SERVICE: + case HVT.SUBURBAN_RAILWAY_SERVICE: + return 'route-transit-train-symbolic'; + + case RouteType.BUS: + case HVT.BUS_SERVICE: + case HVT.COACH_SERVICE: + case HVT.TROLLEYBUS_SERVICE: + /* TODO: handle a special case icon for trolleybus */ + return 'route-transit-bus-symbolic'; + + case RouteType.FERRY: + case HVT.WATER_TRANSPORT_SERVICE: + case HVT.FERRY_SERVICE: + return 'route-transit-ferry-symbolic'; + + case RouteType.CABLE_CAR: + return 'route-transit-cablecar-symbolic'; + + case RouteType.GONDOLA: + case HVT.TELECABIN_SERVICE: + return 'route-transit-gondolalift-symbolic'; + + case RouteType.FUNICULAR: + case HVT.FUNICULAR_SERVICE: + return 'route-transit-funicular-symbolic'; + + case HVT.TAXI_SERVICE: + /* TODO: should we have a dedicated taxi icon? */ + return 'route-car-symbolic'; + + case HVT.AIR_SERVICE: + return 'route-transit-airplane-symbolic'; + + default: + /* use a fallback question mark icon in case of some future, + * for now unknown mode appears */ + return 'dialog-question-symbolic'; + } + } + } else { + return 'route-pedestrian-symbolic'; + } + } + + get walkingInstructions() { + return this._walkingInstructions; + } + + set walkingInstructions(walkingInstructions) { + this._walkingInstructions = walkingInstructions; + } + + /* Pretty print timing for a transit leg, set params.isStart: true when + * printing for the starting leg of an itinerary. + * For starting walking legs, only the departure time will be printed, + * otherwise the departure and arrival time of the leg (i.e. transit ride + * or an in-between walking section) will be printed. + */ + prettyPrintTime(params) { + if (!this.transit && params.isStart) { + return this.prettyPrintDepartureTime(); + } else { + /* Translators: this is a format string for showing a departure and + * arrival time in a more compact manner to show in the instruction + * list for an itinerary, like: + * "12:00–13:03" where the placeholder %s are the actual times, + * these could be rearranged if needed. + */ + return _("%s\u2013%s").format(this.prettyPrintDepartureTime(), + this.prettyPrintArrivalTime()); + } + } + + prettyPrintDepartureTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the first leg + */ + return Time.formatTimeWithTZOffset(this.departure, + this.agencyTimezoneOffset); + } + + prettyPrintArrivalTime() { + /* take the itinerary departure time and offset using the timezone + * offset of the last leg + */ + return Time.formatTimeWithTZOffset(this.arrival, + this.agencyTimezoneOffset); + } +}; + +var Stop = class Stop { + + constructor(params) { + this._name = params.name; + delete params.name; + + this._arrival = params.arrival; + delete params.arrival; + + this._departure = params.departure; + delete params.departure; + + this._agencyTimezoneOffset = params.agencyTimezoneOffset; + delete params.agencyTimezoneOffset; + + this._coordinate = params.coordinate; + delete params.coordinate; + } + + get name() { + return this._name; + } + + get coordinate() { + return this._coordinate; + } + + prettyPrint(params) { + if (params.isFinal) { + /* take the stop arrival time and offset using the timezone + * offset of the last leg + */ + return Time.formatTimeWithTZOffset(this._arrival, + this._agencyTimezoneOffset); + } else { + /* take the stop departure time and offset using the timezone + * offset of the first leg + */ + return Time.formatTimeWithTZOffset(this._departure, + this._agencyTimezoneOffset); + } + } +}; + +function sortItinerariesByDepartureAsc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * starting at the earliest possible departure time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.departure > second.departure; +} + +function sortItinerariesByArrivalDesc(first, second) { + /* always sort walk-only itineraries first, as they would always be + * ending at the latest possible arrival time + */ + if (first.isWalkingOnly) + return -1; + else if (second.isWalkingOnly) + return 1; + else + return first.arrival < second.arrival; +} diff --git a/src/transitPrintLayout.js b/src/transitPrintLayout.js new file mode 100644 index 00000000..aada2fe0 --- /dev/null +++ b/src/transitPrintLayout.js @@ -0,0 +1,338 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; +const Pango = imports.gi.Pango; + +const Color = imports.color; +const Gfx = imports.gfx; +const MapSource = imports.mapSource; +const PrintLayout = imports.printLayout; +const Transit = imports.transit; +const TransitArrivalMarker = imports.transitArrivalMarker; +const TransitBoardMarker = imports.transitBoardMarker; +const TransitWalkMarker = imports.transitWalkMarker; + +// stroke color for walking paths +const _STROKE_COLOR = new Clutter.Color({ red: 0, + blue: 0, + green: 0, + alpha: 255 }); +const _STROKE_WIDTH = 5.0; + +// All following constants are ratios of surface size to page size +const _Header = { + SCALE_X: 0.9, + SCALE_Y: 0.03, + SCALE_MARGIN: 0.01 +}; +const _MapView = { + SCALE_X: 1.0, + SCALE_Y: 0.4, + SCALE_MARGIN: 0.04, + ZOOM_LEVEL: 18 +}; +const _Instruction = { + SCALE_X: 0.9, + SCALE_Y: 0.1, + SCALE_MARGIN: 0.01 +}; + +// luminance threashhold for drawing outline around route label badges +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; + +var TransitPrintLayout = GObject.registerClass( +class TransitPrintLayout extends PrintLayout.PrintLayout { + + _init(params) { + this._itinerary = params.itinerary; + delete params.itinerary; + + params.totalSurfaces = this._getNumberOfSurfaces(); + + super._init(params); + } + + _getNumberOfSurfaces() { + // always one fixed surface for the title label + let numSurfaces = 1; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + numSurfaces++; + // add a surface when a leg of the itinerary should have a map view + if (this._legHasMiniMap(i)) + numSurfaces++; + } + + // always include the arrival row + numSurfaces++; + + return numSurfaces; + } + + _drawMapView(width, height, zoomLevel, index) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let mapSource = MapSource.createPrintSource(); + let markerLayer = new Champlain.MarkerLayer(); + let view = new Champlain.View({ width: width, + height: height, + zoom_level: zoomLevel }); + let leg = this._itinerary.legs[index]; + let nextLeg = this._itinerary.legs[index + 1]; + let previousLeg = index === 0 ? null : this._itinerary.legs[index - 1]; + + view.set_map_source(mapSource); + /* we want to add the path layer before the marker layer, so that + * boarding marker are drawn about the walk dash lines + */ + this._addRouteLayer(view, index); + view.add_layer(markerLayer); + + markerLayer.add_marker(this._createStartMarker(leg, previousLeg)); + if (nextLeg) + markerLayer.add_marker(this._createBoardMarker(nextLeg)); + else + markerLayer.add_marker(this._createArrivalMarker(leg)); + + /* in some cases, we seem to get get zero distance walking instructions + * within station complexes, don't try to show a bounding box for low + * distances, instead center on the spot + */ + if (leg.distance < 10) + view.center_on(leg.fromCoordinate[0], leg.fromCoordinate[1]); + else + view.ensure_visible(this._createBBox(leg), false); + if (view.state !== Champlain.State.DONE) { + let notifyId = view.connect('notify::state', () => { + if (view.state === Champlain.State.DONE) { + view.disconnect(notifyId); + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + }); + } else { + let surface = view.to_surface(true); + if (surface) + this._addSurface(surface, x, y, pageNum); + } + } + + _createBBox(leg) { + return Champlain.BoundingBox({ top: leg.bbox.top, + left: leg.bbox.left, + bottom: leg.bbox.bottom, + right: leg.bbox.right }); + } + + _createStartMarker(leg, previousLeg) { + return new TransitWalkMarker.TransitWalkMarker({ leg: leg, + previousLeg: previousLeg }); + } + + _createBoardMarker(leg) { + return new TransitBoardMarker.TransitBoardMarker({ leg: leg }); + } + + _createArrivalMarker(leg) { + return new TransitArrivalMarker.TransitArrivalMarker({ leg: leg }); + } + + _addRouteLayer(view, index) { + let routeLayer = new Champlain.PathLayer({ stroke_width: _STROKE_WIDTH, + stroke_color: _STROKE_COLOR }); + let leg = this._itinerary.legs[index]; + + routeLayer.set_dash([5, 5]); + view.add_layer(routeLayer); + + /* if this is a walking leg and not at the start, "stitch" it + * together with the end point of the previous leg, as the walk + * route might not reach all the way + */ + if (index > 0 && !leg.transit) { + let previousLeg = this._itinerary.legs[index - 1]; + let lastPoint = + previousLeg.polyline[previousLeg.polyline.length - 1]; + + routeLayer.add_node(lastPoint); + } + + leg.polyline.forEach((node) => routeLayer.add_node(node)); + + /* like above, "stitch" the route segment with the next one if it's + * a walking leg, and not the last one + */ + if (index < this._itinerary.legs.length - 1 && !leg.transit) { + let nextLeg = this._itinerary.legs[index + 1]; + let firstPoint = nextLeg.polyline[0]; + + routeLayer.add_node(firstPoint); + } + } + + _drawInstruction(width, height, leg, start) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let timeWidth = !leg.transit && start ? height : height * 2; + let fromText = Transit.getFromLabel(leg, start); + let routeWidth = 0; + + this._drawIcon(cr, leg.iconName, width, height); + this._drawText(cr, fromText, this._rtl ? timeWidth : height, 0, + width - height - timeWidth, height / 2, Pango.Alignment.LEFT); + + if (leg.transit) { + let color = leg.color; + let textColor = leg.textColor; + let hasOutline = Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD; + let routeText = + this._createTextLayout(cr, leg.route, width - height - timeWidth, + height / 2, + this._rtl ? Pango.Alignment.RIGHT : + Pango.Alignment.LEFT); + let [pWidth, pHeight] = routeText.get_pixel_size(); + let routePadding = 3; + let routeHeight = pHeight + routePadding * 2; + routeWidth = Math.max(pWidth, pHeight) + routePadding * 2; + let routeX = this._rtl ? width - height - routeWidth - 1 : height; + let routeY = height / 2 + ((height / 2) - routeHeight) / 2; + + + textColor = Color.getContrastingForegroundColor(color, textColor); + Gfx.drawColoredBagde(cr, color, hasOutline ? textColor : null, + routeX, routeY, routeWidth, routeHeight); + this._drawTextLayoutWithColor(cr, routeText, + routeX + routePadding + + (routeWidth - pWidth - + routePadding * 2) / 2, + routeY + routePadding, + routeWidth - routePadding * 2, + routeHeight - routePadding * 2, + textColor, Pango.Alignment.LEFT); + + // introduce some additional padding before the headsign label + routeWidth += routePadding; + } + + let headsign = Transit.getHeadsignLabel(leg); + + if (headsign) { + let headsignLayout = this._createTextLayout(cr, headsign, + width - height - timeWidth - routeWidth, + height / 2, + Pango.Alignment.LEFT); + let [pWidth, pHeight] = headsignLayout.get_pixel_size(); + this._drawTextLayoutWithColor(cr, headsignLayout, + this._rtl ? timeWidth : height + routeWidth, + height / 2 + (height / 2 - pHeight) / 2, + width - height - timeWidth - routeWidth, + height / 2, '888888', + Pango.Alignment.LEFT); + } + this._drawTextVerticallyCentered(cr, leg.prettyPrintTime({ isStart: start }), + timeWidth, height, + this._rtl ? 0 : width - timeWidth - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _drawArrival(width, height) { + let pageNum = this.numPages - 1; + let x = this._cursorX; + let y = this._cursorY; + let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height); + let cr = new Cairo.Context(surface); + let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1]; + + this._drawIcon(cr, 'maps-point-end-symbolic', width, height); + // draw the arrival text + this._drawTextVerticallyCentered(cr, Transit.getArrivalLabel(lastLeg), + width - height * 3, + height, this._rtl ? height * 2 : height, + Pango.Alignment.LEFT); + // draw arrival time + this._drawTextVerticallyCentered(cr, lastLeg.prettyPrintArrivalTime(), + height, height, + this._rtl ? 0 : width - height - 1, + Pango.Alignment.RIGHT); + + this._addSurface(surface, x, y, pageNum); + } + + _legHasMiniMap(index) { + let leg = this._itinerary.legs[index]; + return !leg.transit; + } + + render() { + let headerWidth = _Header.SCALE_X * this._pageWidth; + let headerHeight = _Header.SCALE_Y * this._pageHeight; + let headerMargin = _Header.SCALE_MARGIN * this._pageHeight; + + let mapViewWidth = _MapView.SCALE_X * this._pageWidth; + let mapViewHeight = _MapView.SCALE_Y * this._pageHeight; + let mapViewMargin = _MapView.SCALE_MARGIN * this._pageHeight; + let mapViewZoomLevel = _MapView.ZOOM_LEVEL; + + let instructionWidth = _Instruction.SCALE_X * this._pageWidth; + let instructionHeight = _Instruction.SCALE_Y * this._pageHeight; + let instructionMargin = _Instruction.SCALE_MARGIN * this._pageHeight; + + let dy = headerHeight + headerMargin; + + this._createNewPage(); + this._adjustPage(dy); + this._drawHeader(headerWidth, headerHeight); + this._cursorY += dy; + + for (let i = 0; i < this._itinerary.legs.length; i++) { + let leg = this._itinerary.legs[i]; + let hasMap = this._legHasMiniMap(i); + let instructionDy = instructionHeight + instructionMargin; + let mapDy = hasMap ? mapViewHeight + mapViewMargin : 0; + + dy = instructionDy + mapDy; + this._adjustPage(dy); + this._drawInstruction(instructionWidth, instructionHeight, leg, + i === 0); + this._cursorY += instructionDy; + + if (hasMap) { + let nextLeg = i < this._itinerary.legs.length - 1 ? + this._itinerary.legs[i + 1] : null; + this._drawMapView(mapViewWidth, mapViewHeight, mapViewZoomLevel, i); + this._cursorY += mapDy; + } + } + + this._drawArrival(instructionWidth, instructionHeight); + } +}); diff --git a/src/transitRouteLabel.js b/src/transitRouteLabel.js new file mode 100644 index 00000000..8e1f0388 --- /dev/null +++ b/src/transitRouteLabel.js @@ -0,0 +1,124 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Cairo = imports.cairo; +const GLib = imports.gi.GLib; +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +const Color = imports.color; +const Gfx = imports.gfx; +const Utils = imports.utils; + +/* threashhold for route color luminance when we consider it more or less + * as white, and draw an outline around the label + */ +const OUTLINE_LUMINANCE_THREASHHOLD = 0.9; +/* the threashhold when using a dark theme, when the color is darker draw an + * outline around the label + */ +const DARK_OUTLINE_LUMINANCE_THREASHHOLD = 0.1; + +// fallback high contrast colors +const HIGH_CONTRAST_COLOR = '000000'; +const HIGH_CONTRAST_TEXT_COLOR = 'ffffff'; + +var TransitRouteLabel = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-route-label.ui', +}, class TransitRouteLabel extends Gtk.Label { + + _init(params) { + let leg = params.leg; + let compact = params.compact; + + delete params.leg; + delete params.compact; + super._init(params); + + this._setLabel(leg, compact); + this.connect('draw', this._onDraw.bind(this)); + } + + _setLabel(leg, compact) { + let color = leg.color; + let textColor = leg.textColor; + let label = leg.route; + let usingDarkTheme = Utils.isUsingDarkThemeVariant(); + let usingHighContrastTheme = Utils.isUsingHighContrastTheme(); + + textColor = Color.getContrastingForegroundColor(color, textColor); + + /* if using the high contrast theme and a label is set, fallback to + * hight-contrasting colors, if no label, assume the route color is + * more relevant and keep it also for high contrast + */ + if (usingHighContrastTheme && ((compact && leg.compactRoute) || + (!compact && label))) { + color = HIGH_CONTRAST_COLOR; + textColor = HIGH_CONTRAST_TEXT_COLOR; + } + + this._color = color; + this._textColor = textColor; + + if ((!usingDarkTheme && + Color.relativeLuminance(color) > OUTLINE_LUMINANCE_THREASHHOLD) || + (usingDarkTheme && + Color.relativeLuminance(color) < DARK_OUTLINE_LUMINANCE_THREASHHOLD)) { + this._hasOutline = true; + } + + /* for compact (overview) mode, try to shorten the label if the route + * name was more than 6 characters + */ + if (compact && label.length > 6) + label = leg.compactRoute; + + if (compact) { + /* restrict number of characters shown in the label when compact mode + * is requested + */ + this.max_width_chars = 6; + } else if (leg && !leg.headsign) { + // if there is no trip headsign to display, allow more space + this.max_width_chars = 25; + } + + this.label = '%s'.format( + textColor, + GLib.markup_escape_text(label, -1)); + } + + /* I didn't find any easy/obvious way to override widget background color + * and getting rounded corner just using CSS styles, so doing a custom + * Cairo drawing of a "roundrect" + */ + _onDraw(widget, cr) { + let width = widget.get_allocated_width(); + let height = widget.get_allocated_height(); + + Gfx.drawColoredBagde(cr, this._color, + this._hasOutline ? this._textColor : null, + 0, 0, width, height); + + return false; + } +}); diff --git a/src/transitRouter.js b/src/transitRouter.js new file mode 100644 index 00000000..0f3892bd --- /dev/null +++ b/src/transitRouter.js @@ -0,0 +1,277 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GLib = imports.gi.GLib; + +const BoundingBox = imports.boundingBox; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * Class responsible for delegating requests to perform routing in transit + * mode. + * Holds the the shared plan instance (filled with journeys on successful + * requests). + */ +var TransitRouter = class TransitRoute { + constructor(params) { + this._plan = new TransitPlan.Plan(); + this._query = params.query; + this._providers = Service.getService().transitProviders; + this._providerCache = []; + this._language = Utils.getLanguage(); + this._probePlugins(); + } + + get enabled() { + return this._providers !== undefined; + } + + get plan() { + return this._plan; + } + + /** + * Called when the query has been updated to trigger the first set + * of results- + */ + fetchFirstResults() { + let pluginOverride = GLib.getenv('TRANSIT_PLUGIN'); + + if (pluginOverride) { + // override plugin was specified, try instanciating if not done yet + if (!this._currPluginInstance) { + let module = this._availablePlugins[pluginOverride]; + + if (module) { + this._currPluginInstance = + new imports.transitplugins[module][pluginOverride](); + } else { + throw new Error('Specified override plugin not found'); + } + } + } else { + let bestProvider = this._getBestProviderForQuery(); + + this._currPluginInstance = null; + + if (bestProvider) { + let provider = bestProvider[0]; + + this._currPluginInstance = bestProvider[1]; + this._plan.attribution = this._getAttributionForProvider(provider); + if (provider.attributionUrl) + this._plan.attributionUrl = provider.attributionUrl; + } + } + + if (this._currPluginInstance) { + this._currPluginInstance.fetchFirstResults(); + } else { + this._plan.reset(); + this._plan.noProvider(); + } + } + + /** + * Called to fetch additional (later or earlier) results depending on the + * query settings. + */ + fetchMoreResults() { + if (this._currPluginInstance) + this._currPluginInstance.fetchMoreResults(); + else + throw new Error('No previous provider'); + } + + _probePlugins() { + this._availablePlugins = []; + + for (let module in imports.transitplugins) { + for (let pluginClass in imports.transitplugins[module]) { + this._availablePlugins[pluginClass] = module; + } + } + } + + /** + * Get attribution for a provider. Returns a language-specific + * 'attribution:' tag if available, otherwise 'attribution' + */ + _getAttributionForProvider(provider) { + if (provider['attribution:' + this._language]) + return provider['attribution:' + this._language]; + else if (provider.attribution) + return provider.attribution; + else + return null; + } + + _getMatchingProvidersForPlace(place) { + let location = place.location; + let country = place.country_code ?? + Utils.getCountryCodeForCoordinates(location.latitude, + location.longitude); + + let matchingProviders = []; + + this._providers.forEach((p) => { + let provider = p.provider; + let areas = provider.areas; + + if (!areas) { + Utils.debug('No coverage info for provider ' + provider.name); + return; + } + + areas.forEach((area) => { + /* if the area has a specified priority, override the + * overall area priority, this allows sub-areas of of + * coverage for a provider to have higher or lowe priorities + * than other providers (e.g. one "native" to that area + */ + if (area.priority) + provider.priority = area.priority; + + let countries = area.countries; + + if (countries) { + if (countries.includes(country)) { + matchingProviders[provider.name] = provider; + return; + } + } + + let bbox = area.bbox; + + if (bbox) { + if (bbox.length !== 4) { + Utils.debug('malformed bounding box for provider ' + provider.name); + return; + } + + let [x1, y1, x2, y2] = bbox; + let cbbox = new BoundingBox.BoundingBox({ bottom: x1, + left: y1, + top: x2, + right: y2 }); + + if (cbbox.covers(location.latitude, + location.longitude)) { + matchingProviders[provider.name] = provider; + return; + } + } + }); + }); + + return matchingProviders; + } + + /** + * Get the most preferred provider for a given query. + * Return: an array with the provider definition and the plugin instance, + * or null if no matching provider was found. + */ + _getBestProviderForQuery() { + let startPlace = this._query.filledPoints[0].place; + let endPlace = this._query.filledPoints.last().place; + + let matchingProvidersForStart = + this._getMatchingProvidersForPlace(startPlace); + let matchingProvidersForEnd = + this._getMatchingProvidersForPlace(endPlace); + + let matchingProviders = []; + + // check all candidate providers matching on the start location + for (let name in matchingProvidersForStart) { + let providerAtStart = matchingProvidersForStart[name]; + let providerAtEnd = matchingProvidersForEnd[name]; + + /* if the provider also matches on the end location, consider it + * as a potential candidate + */ + if (providerAtEnd) { + let order = this._sortProviders(providerAtStart, providerAtEnd); + + /* add the provider at it lowest priority to favor higher + * priority providers in "fringe cases" + */ + if (order < 0) + matchingProviders.push(providerAtStart); + else + matchingProviders.push(providerAtEnd); + } + } + + matchingProviders.sort(this._sortProviders); + + for (let i = 0; i < matchingProviders.length; i++) { + let provider = matchingProviders[i]; + let plugin = provider.plugin; + + if (this._providerCache[provider.name]) + return [provider, this._providerCache[provider.name]]; + + let module = this._availablePlugins[plugin]; + + if (module) { + try { + let params = provider.params; + let instance = + params ? new imports.transitplugins[module][plugin](params) : + new imports.transitplugins[module][plugin](); + + this._providerCache[provider.name] = instance; + + return [provider, instance]; + } catch (e) { + Utils.debug('Failed to instantiate transit plugin: ' + + plugin + ": " + e); + } + } else { + Utils.debug('Transit provider plugin not available: ' + plugin); + } + } + + Utils.debug('No suitable transit provider found'); + return null; + } + + /** + * Sort function to sort providers in by preference. + * If both providers have a priority set, prefers the one with a lower + * value (higher prio), otherwise the one that has a priority set (if any), + * else no specific order. + */ + _sortProviders(p1, p2) { + if (p1.priority && p2.priority) + return p1.priority - p2.priority; + else if (p1.priority) + return -1; + else if (p2.priority) + return 1; + else + return 0; + } +}; diff --git a/src/transitStopRow.js b/src/transitStopRow.js new file mode 100644 index 00000000..f3cbe790 --- /dev/null +++ b/src/transitStopRow.js @@ -0,0 +1,45 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GObject = imports.gi.GObject; +const Gtk = imports.gi.Gtk; + +var TransitStopRow = GObject.registerClass({ + Template: 'resource:///org/gnome/Maps/ui/transit-stop-row.ui', + InternalChildren: [ 'nameLabel', + 'timeLabel' ] +}, class TransitStopRow extends Gtk.ListBoxRow { + + _init(params) { + this.stop = params.stop; + delete params.stop; + + this._final = params.final; + delete params.final; + + super._init(params); + + this._nameLabel.label = this.stop.name; + this._timeLabel.label = this.stop.prettyPrint({ isFinal: this._final }); + } +}); diff --git a/src/transitWalkMarker.js b/src/transitWalkMarker.js new file mode 100644 index 00000000..60f72f57 --- /dev/null +++ b/src/transitWalkMarker.js @@ -0,0 +1,77 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; + +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; + +var TransitWalkMarker = GObject.registerClass( +class TransitWalkMarker extends MapMarker.MapMarker { + + _init(params) { + /* if there is a preceding leg, put the marker at the end of that leg + * to avoid gaps, since we will "fill out" the walking leg path line + * since sometimes the walking route might not reach exactly to the + * transit stop's position + */ + let point; + if (params.previousLeg) + point = params.previousLeg.polyline[params.previousLeg.polyline.length - 1]; + else + point = params.leg.polyline[0]; + + let bgColor = params.leg.color ? params.leg.color : + TransitPlan.DEFAULT_ROUTE_COLOR; + + delete params.leg; + delete params.previousLeg; + + let location = new Location.Location({ latitude: point.latitude, + longitude: point.longitude + }); + + params.place = new Place.Place({ location: location }); + + super._init(params); + + let bgRed = Color.parseColor(bgColor, 0); + let bgGreen = Color.parseColor(bgColor, 1); + let bgBlue = Color.parseColor(bgColor, 2); + let color = new Gdk.RGBA({ red: bgRed, + green: bgGreen, + blue: bgBlue, + alpha: 1.0 + }); + let actor = + this._actorFromIconName('maps-point-start-symbolic', 0, color); + + this.add_actor(actor); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } +}); diff --git a/src/transitplugins/README b/src/transitplugins/README new file mode 100644 index 00000000..890401cd --- /dev/null +++ b/src/transitplugins/README @@ -0,0 +1,67 @@ +This directory contains implementations of transit routing provider plugins. +Each plugin should contain an ES6 class implementing the plugin. + +Each implementation implements two methods: + +fetchFirstResults(): + +This is invoked when the singleton routing query has been updated and would +query itineraries from it's source, and on success populate the TransitPlan +singleton with an itinerary list and call plan.update(), or on error call +one of the pre-defined error methods on the plan, or trigger a custom error +with plan.error(). + +fetchMoreResults(): + +This is invoked when to fetch additional (later or earlier) results. +Would on success add additional itineraries and call plan.update(), or on +error call plan.noMoreResults(). + +Providers are configured via the downloaded service file using a JSON element +like: + +"transitProviders": [ + { + "provider": { + "name": "Description of provider 1", + "plugin": "OpenTripPlanner", + "attribution": "Provider 1", + "attributionUrl": "http://provider1.example.com", + "priority": 10, + "areas": [ + { + "priority": 10, + "countries": [ "UT" ] + } + ], + "params": { + "baseUrl": "http://otp.provider1.example.com/otp" + } + } + }, + { + "provider": { + "name": "Provider 2", + "plugin": "OpenTripPlanner", + "attribution": "Provider 2", + "attributionUrl": "https://provider2.example.com", + "areas": [ + { + "bbox": [48.28,0.81,49.73,4.11] + } + ], + "params": { + "baseUrl": "https://provider2.example.com/otp" + } + } + } + ] + + Each provider can have an optional priority, to allow more specific provider + (e.g. one serving a single city) within the area of a more general one. + Single sub-areas of a provider can also override the general provider priority. + This can be used to allow areas of provider to "shadow" neighboring providers + while keeping the the neighboring provider as the preferred one when used + exclusively for its region. + Custom parameters, if specified, will be passed as the "params" object the + constructor() of the plugin implementation. \ No newline at end of file diff --git a/src/transitplugins/goMetro.js b/src/transitplugins/goMetro.js new file mode 100644 index 00000000..e68cd1c2 --- /dev/null +++ b/src/transitplugins/goMetro.js @@ -0,0 +1,131 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the South African + * GoMetro API. + * https://proserver.gometro.co.za/api/v1/docs/#multimodal-routing + */ + +const BASE_URL = 'https://proserver.gometro.co.za/api'; +const API_VERSION = 'v1'; + +const NATIVE_TIMEZONE = 'Africa/Cape_Town'; + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +const Application = imports.application; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const OpenTripPlanner = imports.transitplugins.openTripPlanner; + +var GoMetro = class GoMetro extends OpenTripPlanner.OpenTripPlanner { + constructor() { + super({ baseUrl: BASE_URL }); + + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + } + + // the GoMetro API only supports start and destination points + fetchFirstResults() { + if (this._query.filledPoints.length > 2) { + Utils.debug('This plugin does not support via locations'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (this._query.arriveBy) { + this._reset(); + this._plan.error(_("This plugin doesn't support latest arrival")); + } else { + super.fetchFirstResults(); + } + } + + _getPlanUrlWithLocations() { + let fromLocation = this._query.filledPoints[0].place.location; + let toLocation = this._query.filledPoints.last().place.location; + + return '%s/%s/trips/%s,%s/%s,%s/%s/%s'.format(BASE_URL, + API_VERSION, + fromLocation.latitude, + fromLocation.longitude, + toLocation.latitude, + toLocation.longitude, + this._getDateAndTimeParams(), + this._getModesParam()); + } + + _getDateAndTimeParams() { + if (this._query.time || this._extendPrevious) { + let params = {}; + + this._addCommonParams(params); + let time = params.time; + let date = params.date; + + return '%s/%s%s'.format(date, this._query.arriveBy ? '-' : '', time); + } else { + let dateTime = GLib.DateTime.new_now(this._tz); + + return '%04d-%02d-%02d/%02d:%02d'.format(dateTime.get_year(), + dateTime.get_month(), + dateTime.get_day_of_month(), + dateTime.get_hour(), + dateTime.get_minute()); + } + } + + // GoMetro seems to (ab)use routeType ferry for communal taxi + _createLeg(leg, index, legs) { + let result = super._createLeg(leg, index, legs); + + if (result.routeType === TransitPlan.RouteType.FERRY) + result.routeType = HVT.TAXI_SERVICE; + + return result; + } + + _getModesParam() { + let params = ''; + let transitOptions = this._query.transitOptions; + + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAIN)) + params += 'RAIL,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.BUS)) + params += 'BUS,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.FERRY)) + params += 'FERRY,'; + if (transitOptions.showAllTransitTypes || + transitOptions.transitTypes.includes(TransitPlan.RouteType.TRAM)) + params += 'TRAM,'; + if (transitOptions.showAllTransitTypes) + params += 'GONDOLA,'; + + return params + 'WALK'; + } +} diff --git a/src/transitplugins/openTripPlanner.js b/src/transitplugins/openTripPlanner.js new file mode 100644 index 00000000..70c6a74a --- /dev/null +++ b/src/transitplugins/openTripPlanner.js @@ -0,0 +1,1254 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const EPAF = imports.epaf; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const Location = imports.location; +const Place = imports.place; +const Route = imports.route; +const RouteQuery = imports.routeQuery; +const Service = imports.service; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +/** + * This module implements the interface for communicating with an OpenTripPlanner + * server instance. + * The code is somewhat intricate since it supports instances of OpenTripPlanner + * running both with and without OSM data to complement the transit timetable + * data with turn-by-turn (walking) routing. + * + * There is two entry points for obtaining routes, one which is called by the + * routing delegator when the query is being modified (fetchFirstResults()), + * and the other being called when requesting additional results (later or + * earlier alternatives depending on search criteria) (fetchMoreResults()) + * These call into an entry point function "_fatchRoute()". + * "_fetchRoutes()" is called. + * In the case where there is no OSM data (onlyTransitData is true), it + * asynchronously calls "_fetchTransitStops()" to get closest transit stop for + * each of the query point, this function will involve OpenTripPlanner calls to + * find stops within a search circle around the coordinate and then calls out + * to GraphHopper to find the actual walking distance and selects the closest + * stop. + * In the callback for the results of _fetchTransitStops() the actual call to + * OpenTripPlanner is made. + * The callback for "_fetchRoutes()" will in turn reformat the resulting + * itineraries obtained from OpenTripPlanner into our internal format specified + * in the TransitPlan module and calls "_recalculateItineraries()" which will + * traverse these and do yet another recursive asyncrous pass over these results + * to refine the results with actual walking routes obtained from GraphHopper, + * since the results from our OpenTripPlanner instance with only transit data + * will result in walking legs which use "as the crow flies" routes for walking. + * It will also clean up the results by pruning out pointless transit legs, such + * as taking transit very short distances when almost reaching the target. + * + * API docs for OpenTripPlanner can be found at: http://dev.opentripplanner.org/apidoc/1.0.0/ + */ + +/* minimum distance when an explicit walk route will be requested to supplement + * the transit route + */ +const MIN_WALK_ROUTING_DISTANCE = 100; + +/* minimum distance of a transit leg, below which we would replace the leg with + * walking if the leg is the first or last + */ +const MIN_TRANSIT_LEG_DISTANCE = 300; + +/* maximum walking distance for a potential replacement of a beginning or ending + * transit leg */ +const MAX_WALK_OPTIMIZATION_DISTANCE = 1000; + +/* maximum distance difference for performing a replacement of a beginning or + * ending transit leg with a walking leg + */ +const MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE = 500; + +/* minimum acceptable time margin when recalculating walking legs in the middle + * of an itinerary + */ +const MIN_INTERMEDIATE_WALKING_SLACK = 60; + +/* maximum walking distance, filter out itineraries containing walking legs + * with longer walking after being refined by GraphHopper + */ +const MAX_WALKING_DISTANCE = 2000; + +// maximum radius to search for stops +const STOP_SEARCH_RADIUS = 2000; + +// maximum number of transit stops to consider as candidates for start/end points +const NUM_STOPS_TO_TRY = 5; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpenTripPlanner = class OpenTripPlanner { + + constructor(params) { + let onlyTransitDataEnv = GLib.getenv('OTP_ONLY_TRANSIT_DATA'); + let onlyTransitData = + onlyTransitDataEnv ? onlyTransitDataEnv === 'true' : + params?.onlyTransitData ?? false; + + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._baseUrl = GLib.getenv('OTP_BASE_URL') ?? params.baseUrl; + this._router = params?.router ?? 'default'; + this._routerUrl = params?.routerUrl; + this._onlyTransitData = onlyTransitData; + this._extendPrevious = false; + this._language = Utils.getLanguage(); + + if (!this._baseUrl && !this._routerUrl) + throw new Error('must specify either baseUrl or routerUrl as an argument'); + + if (this._baseUrl && this._routerUrl) + throw new Error('can not specify both baseUrl and routerUrl as arguments'); + } + + get plan() { + return this._plan; + } + + get enabled() { + return this._baseUrl !== null; + } + + fetchFirstResults() { + this._extendPrevious = false; + this._fetchRoute(); + } + + fetchMoreResults() { + this._extendPrevious = true; + this._fetchRoute(); + } + + _getRouterUrl() { + return this._routerUrl ? this._routerUrl : + this._baseUrl + '/routers/' + this._router; + } + + _getMode(routeType) { + switch (routeType) { + case TransitPlan.RouteType.TRAM: + return 'TRAM'; + case TransitPlan.RouteType.TRAIN: + return 'RAIL'; + case TransitPlan.RouteType.SUBWAY: + return 'SUBWAY'; + case TransitPlan.RouteType.BUS: + return 'BUS'; + case TransitPlan.RouteType.FERRY: + return 'FERRY'; + case HVT.AIR_SERVICE: + return 'AIRPLANE'; + default: + throw new Error('unhandled route type'); + } + } + + _getModes(options) { + let modes = options.transitTypes.map((transitType) => { + return this._getMode(transitType); + }); + + /* should always include walk when setting explicit modes, + * otherwise only routes ending close to a stop would work + */ + modes.push('WALK'); + + return modes.join(','); + } + + _selectBestStopRecursive(stops, index, stopIndex, callback) { + if (index < stops.length) { + let points = this._query.filledPoints; + let stop = stops[index]; + let stopPoint = + GraphHopperTransit.createQueryPointForCoord([stop.lat, stop.lon]); + + if (stops[0].dist < 100) { + /* if the stop is close enough to the intended point, just + * return the top most from the the original query */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } else if (stopIndex === 0) { + GraphHopperTransit.fetchWalkingRoute([points[0], stopPoint], + (route) => { + /* if we couldn't find an exact walking route, go with the + * "as the crow flies" distance */ + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else if (stopIndex === points.length - 1) { + GraphHopperTransit.fetchWalkingRoute([stopPoint, points.last()], + (route) => { + if (route) + stop.dist = route.distance; + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + }); + } else { + /* for intermediate stops just return the one geographically + * closest */ + this._selectBestStopRecursive(stops, index + 1, stopIndex, + callback); + } + } else { + /* re-sort stops by distance and select the closest after refining + * distances */ + stops.sort(this._sortTransitStops); + Utils.debug('refined stops: '); + stops.forEach((stop) => Utils.debug(JSON.stringify(stop, '', 2))); + callback(stops[0]); + } + } + + /* stopIndex here is the index of stop (i.e. starting point, intermediate + * stop, final stop + */ + _selectBestStop(stops, stopIndex, callback) { + this._selectBestStopRecursive(stops, 0, stopIndex, callback); + } + + _sortTransitStops(s1, s2) { + return s1.dist > s2.dist; + } + + _fetchRoutesForStop(stop, callback) { + let query = new HTTP.Query(); + let uri = new Soup.URI(this._getRouterUrl() + '/index/stops/' + + stop.id + '/routes'); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get routes for stop'); + this._reset(); + } else { + let routes = JSON.parse(message.response_body.data); + + Utils.debug('Routes for stop: ' + stop + ': ' + JSON.stringify(routes)); + callback(routes); + } + }); + } + + _routeMatchesSelectedModes(route) { + let desiredTransitTypes = this._query.transitOptions.transitTypes; + + for (let i = 0; i < desiredTransitTypes.length; i++) { + let type = desiredTransitTypes[i]; + + if (type === TransitPlan.RouteType.TRAM && route.mode === 'TRAM') + return true; + else if (type === TransitPlan.RouteType.SUBWAY && route.mode === 'SUBWAY') + return true; + else if (type === TransitPlan.RouteType.TRAIN && route.mode === 'RAIL') + return true; + else if (type === TransitPlan.RouteType.BUS && + (route.mode === 'BUS' || route.mode === 'TAXI')) + return true; + else if (type === TransitPlan.RouteType.FERRY && route.mode === 'FERRY') + return true; + } + + return false; + } + + _filterStopsRecursive(stops, index, filteredStops, callback) { + if (index < stops.length) { + let stop = stops[index]; + + this._fetchRoutesForStop(stop, (routes) => { + for (let i = 0; i < routes.length; i++) { + let route = routes[i]; + + if (this._routeMatchesSelectedModes(route)) { + filteredStops.push(stop); + break; + } + } + this._filterStopsRecursive(stops, index + 1, filteredStops, + callback); + }); + } else { + callback(filteredStops); + } + } + + _filterStops(stops, callback) { + this._filterStopsRecursive(stops, 0, [], callback); + } + + _fetchTransitStopsRecursive(index, result, callback) { + let points = this._query.filledPoints; + + if (index < points.length) { + let point = points[index]; + let params = { lat: point.place.location.latitude, + lon: point.place.location.longitude, + radius: STOP_SEARCH_RADIUS }; + let query = new HTTP.Query(params); + let uri = new Soup.URI(this._getRouterUrl() + + '/index/stops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get stop for search point ' + point); + this._reset(); + } else { + let stops = JSON.parse(message.response_body.data); + + if (stops.length === 0) { + Utils.debug('No suitable stop found from router'); + callback(null); + return; + } + + if (this._query.transitOptions.showAllTransitTypes) { + stops.sort(this._sortTransitStops); + stops = stops.splice(0, NUM_STOPS_TO_TRY); + + Utils.debug('stops: ' + JSON.stringify(stops, '', 2)); + this._selectBestStop(stops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, result, + callback); + }); + } else { + this._filterStops(stops, (filteredStops) => { + filteredStops.sort(this._sortTransitStops); + filteredStops = filteredStops.splice(0, NUM_STOPS_TO_TRY); + + if (filteredStops.length === 0) { + Utils.debug('No suitable stop found using selected transit modes'); + callback(null); + return; + } + + this._selectBestStop(filteredStops, index, (stop) => { + result.push(stop); + this._fetchTransitStopsRecursive(index + 1, + result, callback); + }); + }); + } + } + }); + } else { + callback(result); + } + } + + _fetchTransitStops(callback) { + this._fetchTransitStopsRecursive(0, [], callback); + } + + // get a time suitably formatted for the OpenTripPlanner query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the OpenTripPlanner query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParamFromLocation(location) { + return location.latitude + ',' + location.longitude; + } + + _addCommonParams(params) { + params.numItineraries = 5; + params.showIntermediateStops = true; + params.locale = this._language; + + let time = this._query.time; + let date = this._query.date; + + if (this._extendPrevious) { + let itineraries = this.plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (time) { + params.time = time; + /* it seems OTP doesn't like just setting a time, so if the query + * doesn't specify a date, go with today's date + */ + if (!date) { + let dateTime = GLib.DateTime.new_now_local(); + + params.date = dateTime.format('%F'); + } + } + + if (date) + params.date = date; + } + + if (this._query.arriveBy) + params.arriveBy = true; + + let options = this._query.transitOptions; + if (options && !options.showAllTransitTypes) + params.mode = this._getModes(options); + } + + _createParamsWithLocations() { + let points = this._query.filledPoints; + let params = { + fromPlace: this._getPlaceParamFromLocation(points[0].place.location), + toPlace: this._getPlaceParamFromLocation(points[points.length - 1].place.location) }; + let intermediatePlaces = []; + + for (let i = 1; i < points.length - 1; i++) { + let location = points[i].place.location; + intermediatePlaces.push(this._getPlaceParamFromLocation(location)); + } + if (intermediatePlaces) + params.intermediatePlaces = intermediatePlaces; + + params.maxWalkDistance = 2500; + this._addCommonParams(params); + + return params; + } + + // create parameter map for the request, given query and options + _createParamsWithStops(stops) { + let params = { fromPlace: stops[0].id, + toPlace: stops.last().id }; + let intermediatePlaces = []; + + for (let i = 1; i < stops.length - 1; i++) { + intermediatePlaces.push(stops[i].id); + } + if (intermediatePlaces.length > 0) + params.intermediatePlaces = intermediatePlaces; + + /* set walking speed for transfers to a slightly lower value to + * compensate for running OTP with only transit data, giving straight- + * line walking paths + */ + params.walkSpeed = 1.0; + + this._addCommonParams(params); + + return params; + } + + _fetchPlan(url, callback) { + let uri = new Soup.URI(url); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + request.request_headers.append('Accept', 'application/json'); + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get route plan from router ' + + this._router + ' ' + message.reason_phrase); + callback(null); + } else { + try { + let result = JSON.parse(message.response_body.data); + + callback(result); + } catch (e) { + Utils.debug('Error parsing result: ' + e); + callback(null); + } + } + }); + } + + _getPlanUrlFromParams(params) { + let query = new HTTP.Query(params); + + return this._getRouterUrl() + '/plan?' + query.toString(); + } + + _getPlanUrlWithStops(stops) { + return this._getPlanUrlFromParams(this._createParamsWithStops(stops)); + } + + _getPlanUrlWithLocations() { + return this._getPlanUrlFromParams(this._createParamsWithLocations()); + } + + _fetchRoutes(callback) { + if (this._onlyTransitData) { + this._fetchTransitStops((stops) => { + let points = this._query.filledPoints; + + if (!stops) { + callback(null); + return; + } + + /* if there's only a start and end stop (no intermediate stops) + * and those stops are identical, reject the routing, since this + * means there would be no point in transit, and OTP would give + * some bizarre option like boarding transit, go one stop and then + * transfer to go back the same route + */ + if (stops.length === 2 && stops[0].id === stops[1].id) { + callback(null); + return; + } + + this._fetchPlan(this._getPlanUrlWithStops(stops), callback); + }); + } else { + this._fetchPlan(this._getPlanUrlWithLocations(), callback); + } + } + + _reset() { + this._extendPrevious = false; + if (this._query.latest) + this._query.latest.place = null; + else + this.plan.reset(); + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionality as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._extendPrevious = false; + this.plan.noMoreResults(); + } else { + this.plan.noRouteFound(); + } + } + + _fetchRoute() { + let points = this._query.filledPoints; + + this._fetchRoutes((route) => { + if (route) { + let itineraries = []; + let plan = route.plan; + + Utils.debug('route: ' + JSON.stringify(route, null, 2)); + + if (plan && plan.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(plan.itineraries)); + } else if (route.itineraries) { + itineraries = + itineraries.concat( + this._createItineraries(route.itineraries)); + } + + if (itineraries.length === 0) { + /* don't reset query points, unlike for turn-based + * routing, since options and timing might influence + * results */ + this._noRouteFound(); + } else { + if (this._onlyTransitData) + this._recalculateItineraries(itineraries); + else + this._updateWithNewItineraries(itineraries); + } + } else { + this._noRouteFound(); + } + }); + } + + _isOnlyWalkingItinerary(itinerary) { + return itinerary.legs.length === 1 && !itinerary.legs[0].transit; + } + + _recalculateItineraries(itineraries) { + // filter out itineraries with only walking + let newItineraries = []; + + itineraries.forEach((itinerary) => { + if (!this._isOnlyWalkingItinerary(itinerary)) + newItineraries.push(itinerary); + }); + + /* TODO: should we always calculate a walking itinerary to put at the + * top if the total distance is below some threashhold? + */ + this._recalculateItinerariesRecursive(newItineraries, 0); + } + + _isItineraryRealistic(itinerary) { + for (let i = 0; i < itinerary.legs.length; i++) { + let leg = itinerary.legs[i]; + + if (!leg.transit) { + /* if a walking leg exceeds the maximum desired walking + * distance, or for a leg "in-between" two transit legs, if + * there's insufficient switch time + */ + if (leg.distance > MAX_WALKING_DISTANCE) { + return false; + } else if (i >= 1 && i < itinerary.legs.length - 1) { + let previousLeg = itinerary.legs[i - 1]; + let nextLeg = itinerary.legs[i + 1]; + + let availableTime = + (nextLeg.departure - previousLeg.arrival) / 1000; + + if (availableTime < + leg.duration + MIN_INTERMEDIATE_WALKING_SLACK) + return false; + } + } + } + + return true; + } + + /** + * Update plan with new itineraries, setting the new itineraries if it's + * the first fetch for a query, or extending the existing ones if it's + * a request to load more + */ + _updateWithNewItineraries(itineraries) { + this.plan.updateWithNewItineraries(itineraries, this._query.arriveBy, + this._extendPrevious); + this._extendPrevious = false; + } + + _recalculateItinerariesRecursive(itineraries, index) { + if (index < itineraries.length) { + this._recalculateItinerary(itineraries[index], (itinerary) => { + itineraries[index] = itinerary; + this._recalculateItinerariesRecursive(itineraries, index + 1); + }); + } else { + /* filter out itineraries where there are intermediate walking legs + * that are too narrow time-wise, this is necessary since running + * OTP with only transit data can result in some over-optimistic + * walking itinerary legs, since it will use "line-of-sight" + * distances. + * also filter out itineraries where recalculation process ended + * up with just walking + */ + let filteredItineraries = []; + + itineraries.forEach((itinerary) => { + if (this._isItineraryRealistic(itinerary) && + !this._isOnlyWalkingItinerary(itinerary)) + filteredItineraries.push(itinerary); + }); + + if (filteredItineraries.length > 0) { + filteredItineraries.forEach((itinerary) => itinerary.adjustTimings()); + this._updateWithNewItineraries(filteredItineraries); + } else { + this._noRouteFound(); + } + } + } + + _recalculateItinerary(itinerary, callback) { + let from = this._query.filledPoints[0]; + let to = this._query.filledPoints.last(); + + if (itinerary.legs.length === 1 && !itinerary.legs[0].transit) { + /* special case, if there's just one leg of an itinerary, and that leg + * leg is a non-transit (walking), recalculate the route in its entire + * using walking + */ + GraphHopperTransit.fetchWalkingRoute(this._query.filledPoints, + (route) => { + let leg = GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + to.place.name, + route); + let newItinerary = + new TransitPlan.Itinerary({departure: itinerary.departure, + duration: route.time / 1000, + legs: [leg]}); + callback(newItinerary); + }); + } else if (itinerary.legs.length === 1 && itinerary.legs[0].transit) { + // special case if there is exactly one transit leg + let leg = itinerary.legs[0]; + let startLeg = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLoc = startLeg.place.location; + let endLoc = endLeg.place.location; + let toLoc = to.place.location; + let startWalkDistance = fromLoc.get_distance_from(startLoc) * 1000; + let endWalkDistance = endLoc.get_distance_from(toLoc) * 1000; + + if (startWalkDistance >= MIN_WALK_ROUTING_DISTANCE && + endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + /* add an extra walking leg to both the beginning and end of the + * itinerary + */ + GraphHopperTransit.fetchWalkingRoute([from, startLeg], + (firstRoute) => { + let firstLeg = + GraphHopperTransit.createWalkingLeg(from, startLeg, + from.place.name, + leg.from, firstRoute); + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, + leg.to, + to.place.name, + lastRoute); + itinerary.legs.unshift(firstLeg); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + }); + } else if (endWalkDistance >= MIN_WALK_ROUTING_DISTANCE) { + // add an extra walking leg to the end of the itinerary + GraphHopperTransit.fetchWalkingRoute([endLeg, to], + (lastRoute) => { + let lastLeg = + GraphHopperTransit.createWalkingLeg(endLeg, to, leg.to, + to.place.name, + lastRoute); + itinerary.legs.push(lastLeg); + callback(itinerary); + }); + } else { + /* if only there's only a walking leg to be added to the start + * let the recursive routine dealing with multi-leg itineraries + * handle it + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } else { + /* replace walk legs with GraphHopper-generated paths (hence the + * callback nature of this. Filter out unrealistic itineraries (having + * walking segments not possible in reasonable time, due to our running + * of OTP with only transit data). + */ + this._recalculateItineraryRecursive(itinerary, 0, callback); + } + } + + _recalculateItineraryRecursive(itinerary, index, callback) { + if (index < itinerary.legs.length) { + let leg = itinerary.legs[index]; + if (index === 0) { + let from = this._query.filledPoints[0]; + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceToEndLeg = + fromLoc.get_distance_from(endLegLoc) * 1000; + let distanceToStartLeg = + fromLoc.get_distance_from(startLegLoc) * 1000; + let nextLeg = itinerary.legs[index + 1]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceToEndLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceToEndLeg - distanceToStartLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the first leg of the intinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * starting coordinate from the input query, + * also replace a transit leg at the start with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the next step in the itinerary due to + * similar reasons + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toName = leg.to; + + /* if the next leg is a walking one, "fold" it into the one + * we create here */ + if (nextLeg && !nextLeg.transit) { + to = GraphHopperTransit.createQueryPointForCoord(nextLeg.toCoordinate); + toName = nextLeg.to; + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + toName, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated + * by GH in case the OTP starting point as far enough from + * the original starting point + */ + let to = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + from.place.name, + leg.from, + route); + itinerary.legs.unshift(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else if (index === itinerary.legs.length - 1) { + let to = this._query.filledPoints.last(); + let startLeg = + GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let endLeg = + GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let toLoc = to.place.location; + let startLegLoc = startLeg.place.location; + let endLegLoc = endLeg.place.location; + let distanceFromEndLeg = + toLoc.get_distance_from(endLegLoc) * 1000; + let distanceFromStartLeg = + toLoc.get_distance_from(startLegLoc) * 1000; + let previousLeg = itinerary.legs[itinerary.legs.length - 2]; + + if (!leg.transit || + ((leg.distance <= MIN_TRANSIT_LEG_DISTANCE || + (distanceFromStartLeg <= MAX_WALK_OPTIMIZATION_DISTANCE && + distanceFromStartLeg - distanceFromEndLeg <= + MAX_WALK_OPTIMIZATION_DISTANCE_DIFFERENCE)) && + itinerary.legs.length > 1)) { + /* if the final leg of the itinerary returned by OTP is a + * walking one, recalculate it with GH using the actual + * ending coordinate from the input query + * also replace a transit leg at the end with walking if + * its distance is below a threashhold, to avoid suboptimal + * routes due to only running OTP with transit data, + * also optimize away cases where the routing would make one + * "pass by" a stop at the previous step in the itinerary + * due to similar reasons + */ + let finalTransitLeg; + let insertIndex; + if (leg.transit && previousLeg && !previousLeg.transit) { + /* if we optimize away the final transit leg, and the + * previous leg is a walking one, "fold" both into a + * single walking leg */ + finalTransitLeg = previousLeg; + insertIndex = index -1; + itinerary.legs.pop(); + } else { + finalTransitLeg = leg; + insertIndex = index; + } + let from = + GraphHopperTransit.createQueryPointForCoord(finalTransitLeg.fromCoordinate); + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + finalTransitLeg.from, + to.place.name, route); + itinerary.legs[insertIndex] = newLeg; + this._recalculateItineraryRecursive(itinerary, + insertIndex + 1, + callback); + }); + } else { + /* introduce an additional walking leg calculated by GH in + * case the OTP end point as far enough from the original + * end point + */ + let from = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + let fromLoc = from.place.location; + let toLoc = to.place.location; + let distance = fromLoc.get_distance_from(toLoc) * 1000; + + if (distance >= MIN_WALK_ROUTING_DISTANCE) { + GraphHopperTransit.fetchWalkingRoute([from, to], + (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, + leg.to, to.place.name, route); + itinerary.legs.push(newLeg); + /* now, next index will be two steps up, since we + * inserted a new leg + */ + this._recalculateItineraryRecursive(itinerary, + index + 2, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + /* if an intermediate leg is a walking one, and it's distance is + * above the threashhold distance, calculate an exact route + */ + if (!leg.transit && leg.distance >= MIN_WALK_ROUTING_DISTANCE) { + let from = GraphHopperTransit.createQueryPointForCoord(leg.fromCoordinate); + let to = GraphHopperTransit.createQueryPointForCoord(leg.toCoordinate); + + /* if the next leg is the final one of the itinerary, + * and it's shorter than the "optimize away" distance, + * create a walking leg all the way to the final destination + */ + let nextLeg = itinerary.legs[index + 1]; + if (index === itinerary.legs.length - 2 && + nextLeg.distance <= MIN_TRANSIT_LEG_DISTANCE) { + to = this._query.filledPoints.last(); + itinerary.legs.splice(index + 1, index + 1); + } + + GraphHopperTransit.fetchWalkingRoute([from, to], (route) => { + let newLeg = + GraphHopperTransit.createWalkingLeg(from, to, leg.from, + leg.to, route); + itinerary.legs[index] = newLeg; + this._recalculateItineraryRecursive(itinerary, + index + 1, + callback); + }); + } else { + this._recalculateItineraryRecursive(itinerary, index + 1, + callback); + } + } + } else { + callback(itinerary); + } + } + + _createItineraries(itineraries) { + return itineraries.map((itinerary) => this._createItinerary(itinerary)); + } + + _createItinerary(itinerary) { + let legs = this._createLegs(itinerary.legs); + return new TransitPlan.Itinerary({ duration: itinerary.duration, + transfers: itinerary.transfers, + departure: itinerary.startTime, + arrival: itinerary.endTime, + legs: legs}); + } + + _createLegs(legs) { + return legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + } + + /* check if a string is a valid hex RGB string */ + _isValidHexColor(string) { + if (string && string.length === 6) { + let regex = /^[A-Fa-f0-9]/; + + return string.match(regex); + } + + return false; + } + + _createLeg(leg, index, legs) { + let polyline = EPAF.decode(leg.legGeometry.points); + let color = leg.routeColor && this._isValidHexColor(leg.routeColor) ? + leg.routeColor : null; + let textColor = leg.routeTextColor && this._isValidHexColor(leg.routeTextColor) ? + leg.routeTextColor : null; + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !leg.transitLeg ? this._query.filledPoints[0].place.name : + leg.from.name; + let to = + last && !leg.transitLeg ? this._query.filledPoints.last().place.name : + leg.to.name; + + let result = new TransitPlan.Leg({ departure: leg.from.departure, + arrival: leg.to.arrival, + from: from, + to: to, + headsign: leg.headsign, + fromCoordinate: [leg.from.lat, + leg.from.lon], + toCoordinate: [leg.to.lat, + leg.to.lon], + route: leg.route, + routeType: leg.routeType, + polyline: polyline, + isTransit: leg.transitLeg, + distance: leg.distance, + duration: leg.duration, + agencyName: leg.agencyName, + agencyUrl: leg.agencyUrl, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + color: color, + textColor: textColor, + tripShortName: leg.tripShortName }); + + if (leg.transitLeg && leg.intermediateStops) + result.intermediateStops = this._createIntermediateStops(leg); + else if (!this._onlyTransitData) + result.walkingInstructions = this._createTurnpoints(leg, polyline); + + return result; + } + + _createIntermediateStops(leg) { + let stops = leg.intermediateStops; + let intermediateStops = + stops.map((stop) => this._createIntermediateStop(stop, leg)); + + /* instroduce an extra stop at the end (in additional to the + * intermediate stops we get from OTP + */ + intermediateStops.push(new TransitPlan.Stop({ name: leg.to.name, + arrival: leg.to.arrival, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [leg.to.lat, + leg.to.lon] })); + return intermediateStops; + } + + _createIntermediateStop(stop, leg) { + return new TransitPlan.Stop({ name: stop.name, + arrival: stop.arrival, + departure: stop.departure, + agencyTimezoneOffset: leg.agencyTimeZoneOffset, + coordinate: [stop.lat, stop.lon] }); + } + + /** + * Create a turnpoints list on the same format we use with GraphHopper + * from OpenTripPlanner walking steps + */ + _createTurnpoints(leg, polyline) { + if (leg.steps) { + let steps = leg.steps; + let startPoint = new Route.TurnPoint({ + coordinate: polyline[0], + type: Route.TurnPointType.START, + distance: 0, + instruction: _("Start!"), + time: 0, + turnAngle: 0 + }); + let turnpoints = [startPoint]; + steps.forEach((step) => { + turnpoints.push(this._createTurnpoint(step)); + }); + + let endPoint = new Route.TurnPoint({ + coordinate: polyline.last(), + type: Route.TurnPoint.END, + distance: 0, + instruction:_("Arrive") + }); + + turnpoints.push(endPoint); + + return turnpoints; + } else { + return null; + } + } + + _createTurnpoint(step) { + let coordinate = new Champlain.Coordinate({ latitude: step.lat, + longitude: step.lon }); + let turnpoint = new Route.TurnPoint({ + coordinate: coordinate, + type: this._getTurnpointType(step), + distance: step.distance, + instruction: this._getTurnpointInstruction(step) + }); + + return turnpoint; + } + + _getTurnpointType(step) { + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + return Route.TurnPointType.CONTINUE; + case 'LEFT': + return Route.TurnPointType.LEFT; + case 'SLIGHTLY_LEFT': + return Route.TurnPointType.SLIGHT_LEFT; + case 'HARD_LEFT': + return Route.TurnPointType.SHARP_LEFT; + case 'RIGHT': + return Route.TurnPointType.RIGHT; + case 'SLIGHTLY_RIGHT': + return Route.TurnPointType.SLIGHT_RIGHT; + case 'HARD_RIGHT': + return Route.TurnPointType.SHARP_RIGHT; + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': + return Route.TurnPointType.ROUNDABOUT; + case 'ELEVATOR': + return Route.TurnPointType.ELEVATOR; + case 'UTURN_LEFT': + return Route.TurnPointType.UTURN_LEFT; + case 'UTURN_RIGHT': + return Route.TurnPointType.UTURN_RIGHT; + default: + return null; + } + } + + _getTurnpointInstruction(step) { + let street = !step.bogusName ? step.streetName : null; + switch (step.relativeDirection) { + case 'DEPART': + case 'CONTINUE': + if (street) + return _("Continue on %s").format(street); + else + return _("Continue"); + case 'LEFT': + if (street) + return _("Turn left on %s").format(street); + else + return _("Turn left"); + case 'SLIGHTLY_LEFT': + if (street) + return _("Turn slightly left on %s").format(street); + else + return _("Turn slightly left"); + case 'HARD_LEFT': + if (street) + return _("Turn sharp left on %s").format(street); + else + return _("Turn sharp left"); + case 'RIGHT': + if (street) + return _("Turn right on %s").format(street); + else + return _("Turn right"); + case 'SLIGHTLY_RIGHT': + if (street) + return _("Turn slightly right on %s").format(street); + else + return _("Turn slightly right"); + case 'HARD_RIGHT': + if (street) + return _("Turn sharp right on %s").format(street); + else + return _("Turn sharp right"); + case 'CIRCLE_CLOCKWISE': + case 'CIRCLE_COUNTERCLOCKWISE': { + let exit = step.exit; + + if (exit) + return _("At the roundabout, take exit %s").format(exit); + else if (street) + return _("At the roundabout, take exit to %s").format(street); + else + return _("Take the roundabout"); + } + case 'ELEVATOR': { + if (street) + return _("Take the elevator and get off at %s").format(street); + else + return _("Take the elevator"); + } + case 'UTURN_LEFT': + if (street) + return _("Make a left u-turn onto %s").format(street); + else + return _("Make a left u-turn"); + case 'UTURN_RIGHT': + if (street) + return _("Make a right u-turn onto %s").format(street); + else + return _("Make a right u-turn"); + default: + return ''; + } + } +}; diff --git a/src/transitplugins/opendataCH.js b/src/transitplugins/opendataCH.js new file mode 100644 index 00000000..62fb972f --- /dev/null +++ b/src/transitplugins/opendataCH.js @@ -0,0 +1,544 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swiss national + * opendata.ch transit journey planning API. + * + * API docs for opendata.ch journey planning can be found at: + * https://transport.opendata.ch/docs.html + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HVT = imports.hvt; +const HTTP = imports.http; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://transport.opendata.ch'; +const API_VERSION = 'v1'; + +const Transportations = { + TRAIN: 'train', + TRAM: 'tram', + SHIP: 'ship', + BUS: 'bus', + CABLEWAY: 'cableway' +}; + +/** + * These are not documented in the API documentation, so had to + * reverse-engineer by trial-and-error. + */ +const Category = { + // bus + B: 'B', + NFB: 'NFB', + NFO: 'NFO', + BUS: 'BUS', + + // tram + NFT: 'NFT', + TRAM: 'TRAM', + T: 'T', + + // metro + M: 'M', + + // urban rail + R: 'R', + S: 'S', + + // regional rail + RE: 'RE', + + // interregional rail + IR: 'IR', + + // intercity rail + IC: 'IC', + ICE: 'ICE', + + // night trains + N: 'N', + SN: 'SN', + + // funicular + FUN: 'FUN', + + // water transport + BAT: 'BAT' +}; + +// gap to use when fetching additional routes +const GAP_BEFORE_MORE_RESULTS = 120; + +var OpendataCH = class OpendataCH { + constructor() { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaLocations = []; + + if (filledPoints.length > 7) { + Utils.debug('This plugin supports at most five via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else { + if (filledPoints.length > 2) + this._fetchNearbyLocations(filledPoints.slice(1, -1)); + else + this._fetchResults(); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + // if there's only a walking-only itinerary, don't try to fetch more + if (this._plan.itineraries.length === 1 && + this._plan.itineraries[0].legs.length === 1 && + !this._plan.itineraries[0].legs[0].transit) { + this._plan.noMoreResults(); + } else { + this._fetchResults(); + } + } + + _fetchNearbyLocations(points) { + this._fetchNearbyLocationsRecursive(points, 0); + } + + _fetchNearbyLocationsRecursive(points, index) { + if (index === points.length) { + this._fetchResults(); + } else { + let location = points[index].place.location; + let query = new HTTP.Query({ x: location.latitude, + y: location.longitude }); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/locations?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get location: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + + Utils.debug('locations: ' + JSON.stringify(result, null, 2)); + + if (result.stations && result.stations.length > 0) { + let station = this._getBestStation(result.stations); + + if (station) { + this._viaLocations.push(station); + this._fetchNearbyLocationsRecursive(points, index + 1); + } else { + Utils.debug('No suitable via location found'); + this._plan.noRouteFound(); + } + } else { + Utils.debug('No via location found'); + this._plan.noRouteFound(); + } + } + }); + } + } + + _getBestStation(stations) { + let name = null; + + for (let i = 0; i < stations.length; i++) { + if (stations[i].icon) + name = stations[i].name; + } + + return name; + } + + _fetchResults() { + let query = this._getQuery(); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/connections?' + + query.toString(true)); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + Utils.debug('uri: ' + uri.to_string(true)); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + this._plan.requestFailed(); + this._plan.reset(); + } else { + let result = JSON.parse(message.response_body.data); + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + + if (result.connections && result.connections.length > 0) { + let itineraries = this._createItineraries(result.connections); + + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } else { + this._plan.noRouteFound(); + } + } + }); + } + + _createItineraries(connections) { + return connections.map((connection) => this._createItinerary(connection)); + } + + _createItinerary(connection) { + let legs = this._createLegs(connection.sections); + let duration = + connection.to.arrivalTimestamp - connection.from.departureTimestamp; + let from = connection.from; + let to = connection.to; + let [startTime,] = this._parseTime(from.departure); + let [endTime,] = this._parseTime(to.arrival); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time string into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(timeString) { + let dateTime = GLib.DateTime.new_from_iso8601(timeString, null); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + _createLegs(sections) { + let result = sections.map((section, index, sections) => + this._createLeg(section, index, sections)); + + return result; + } + + _createLeg(section, index, sections) { + let isTransit = section.journey; + + let departure = section.departure; + let arrival = section.arrival; + let journey = section.journey; + + if (!departure) + throw new Error('Missing departure element'); + if (!arrival) + throw new Error('Missing arrival element'); + + let first = index === 0; + let last = index === sections.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !journey ? this._query.filledPoints[0].place.name : + departure.station.name; + let to = + last && !journey ? this._query.filledPoints.last().place.name : + arrival.station.nam; + let [departureTime, tzOffset] = this._parseTime(departure.departure); + let [arrivalTime,] = this._parseTime(arrival.arrival); + let route = journey ? journey.number : null; + let routeType = + journey ? this._getHVTCodeFromCategory(journey.category) : null; + let agencyName = journey ? journey.operator : null; + let polyline = this._createPolylineForSection(section, index, sections); + let duration = arrival.arrivalTimestamp - departure.departureTimestamp; + let headsign = journey ? journey.to : null; + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + let result = new TransitPlan.Leg({ departure: departureTime, + arrival: arrivalTime, + from: from, + to: to, + headsign: headsign, + fromCoordinate: [departureX, + departureY], + toCoordinate: [arrivalX, + arrivalY], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + duration: duration, + agencyName: agencyName, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (journey) + result.intermediateStops = this._createIntermediateStops(journey); + + return result; + } + + _getHVTCodeFromCategory(category) { + switch (category) { + case Category.B: + case Category.BUS: + case Category.NFB: + case Category.NFO: + return HVT.BUS_SERVICE; + case Category.TRAM: + case Category.NFT: + case Category.T: + return HVT.TRAM_SERVICE; + case Category.M: + return HVT.METRO_SERVICE; + case Category.R: + case Category.S: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case Category.RE: + return HVT.REGIONAL_RAIL_SERVICE; + case Category.IR: + return HVT.INTER_REGIONAL_RAIL_SERVICE; + case Category.IC: + case Category.ICE: + return HVT.LONG_DISTANCE_TRAINS; + case Category.N: + case Category.SN: + return HVT.SLEEPER_RAIL_SERVICE; + case Category.FUN: + return HVT.FUNICULAR_SERVICE; + case Category.BAT: + return HVT.WATER_TRANSPORT_SERVICE; + default: + return null; + } + } + + _getCoordsForSection(section, index, sections) { + let departureX = section.departure.location.coordinate.x; + let departureY = section.departure.location.coordinate.y; + let arrivalX = section.arrival.location.coordinate.x; + let arrivalY = section.arrival.location.coordinate.y; + + if (sections.length === 1) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } else if (index === 0) { + if (!departureX) + departureX = this._query.filledPoints[0].place.location.latitude; + if (!departureY) + departureY = this._query.filledPoints[0].place.location.longitude; + } else if (index === sections.length - 1) { + if (!arrivalX) + arrivalX = this._query.filledPoints.last().place.location.latitude; + if (!arrivalY) + arrivalY = this._query.filledPoints.last().place.location.longitude; + } + + return [departureX, departureY, arrivalX, arrivalY]; + } + + _createPolylineForSection(section, index, sections) { + let polyline; + + if (section.journey) { + polyline = []; + + section.journey.passList.forEach((pass) => { + let coordinate = pass.location.coordinate; + polyline.push(new Champlain.Coordinate({ latitude: coordinate.x, + longitude: coordinate.y })); + }); + } else { + let [departureX, departureY, arrivalX, arrivalY] = + this._getCoordsForSection(section, index, sections); + + polyline = + [new Champlain.Coordinate({ latitude: departureX, + longitude: departureY }), + new Champlain.Coordinate({ latitude: arrivalX, + longitude: arrivalY })]; + } + + return polyline; + } + + _createIntermediateStops(journey) { + let result = []; + + journey.passList.forEach((pass, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(pass)); + }); + + return result; + } + + _createIntermediateStop(pass) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (pass.departure) + [departure, departureTzOffset] = this._parseTime(pass.departure) + if (pass.arrival) + [arrival, arrivalTzOffset] = this._parseTime(pass.arrival); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: pass.station.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [pass.location.coordinate.x, + pass.location.coordinate.y] }); + } + + // get a time suitably formatted for the the query param + _formatTime(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%R'); + } + + // get a date suitably formatted for the query param + _formatDate(time, offset) { + let utcTimeWithOffset = (time + offset) / 1000; + let date = GLib.DateTime.new_from_unix_utc(utcTimeWithOffset); + + return date.format('%F'); + } + + _getPlaceParam(point) { + let location = point.place.location; + + return location.latitude + ',' + location.longitude; + } + + _getQuery(vias) { + let points = this._query.filledPoints; + let transitOptions = this._query.transitOptions; + let params = { from: this._getPlaceParam(points[0]), + to: this._getPlaceParam(points.last()) }; + + if (!transitOptions.showAllTransitTypes) + params.transportations = this._getTransportations(transitOptions); + + if (this._query.arriveBy) + params.isArrivalTime = 1; + + /* the "page" parameter of the API seems broken for "arrive by" + * searches, so instead search by updated time + */ + if (this._extendPrevious) { + let itineraries = this._plan.itineraries; + let lastItinerary = itineraries.last(); + let time; + let offset; + + if (this._query.arriveBy) { + time = lastItinerary.transitArrivalTime - + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitArrivalTimezoneOffset; + } else { + time = lastItinerary.transitDepartureTime + + GAP_BEFORE_MORE_RESULTS * 1000; + offset = lastItinerary.transitDepartureTimezoneOffset; + } + + params.time = this._formatTime(time, offset); + params.date = this._formatDate(time, offset); + } else { + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + let query = new HTTP.Query(params); + + if (this._viaLocations.length > 0) { + this._viaLocations.forEach((p) => { query.add('via', p); }); + } + + return query; + } + + _getTransportations(transitOptions) { + let transportations = []; + + this._query.transitOptions.transitTypes.forEach((type) => { + let transportation = this._transportationForTransitType(type); + + if (transportation) + transportations.push(transportation); + }); + + return transportations; + } + + _transportationForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Transportations.BUS; + case TransitPlan.RouteType.TRAM: + return Transportations.TRAM; + case TransitPlan.RouteType.TRAIN: + return Transportations.TRAIN; + case TransitPlan.RouteType.FERRY: + return Transportations.SHIP; + default: + return null; + } + } +} diff --git a/src/transitplugins/resrobot.js b/src/transitplugins/resrobot.js new file mode 100644 index 00000000..aada8d5f --- /dev/null +++ b/src/transitplugins/resrobot.js @@ -0,0 +1,627 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2019 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +/** + * This module implements a transit routing plugin for the Swedish national + * Resrobot transit journey planning API. + * + * API docs for Resrobot can be found at: + * https://www.trafiklab.se/api/resrobot-reseplanerare/dokumentation/sokresa + */ + +const Champlain = imports.gi.Champlain; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Application = imports.application; +const GraphHopperTransit = imports.graphHopperTransit; +const HTTP = imports.http; +const HVT = imports.hvt; +const TransitPlan = imports.transitPlan; +const Utils = imports.utils; + +const BASE_URL = 'https://api.resrobot.se'; +const API_VERSION = 'v2'; + +// Timezone for timestamps returned by this provider +const NATIVE_TIMEZONE = 'Europe/Stockholm'; + +const ISO_8601_DURATION_REGEXP = new RegExp(/P((\d+)D)?T((\d+)H)?((\d+)M)?/); + +const Products = { + EXPRESS_TRAIN: 2, + REGIONAL_TRAIN: 4, + EXPRESS_BUS: 8, + LOCAL_TRAIN: 16, + SUBWAY: 32, + TRAM: 64, + BUS: 128, + FERRY: 256, + TAXI: 512 +}; + +const LegType = { + WALK: 'WALK', + TRANSIT: 'JNY', + TRANSFER: 'TRSF' +}; + +const CatCode = { + EXPRESS_TRAIN: 1, + REGIONAL_TRAIN: 2, + EXPRESS_BUS: 3, + LOCAL_TRAIN: 4, + SUBWAY: 5, + TRAM: 6, + BUS: 7, + FERRY: 8, + TAXI: 9 +}; + +const MAX_NUM_NEARBY_STOPS = 5; +const NEARBY_STOPS_SEARCH_RADIUS = 500; + +// ignore walking legs at the beginning/end when below this distance +const DISTANCE_THREASHOLD_TO_IGNORE = 50; + +// search radius to search for walk-only journeys +const WALK_SEARCH_RADIUS = 2000; + +// maximum distance for walk-only journey +const MAX_WALK_ONLY_DISTANCE = 2500; + +var Resrobot = class Resrobot { + constructor(params) { + this._session = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + this._plan = Application.routingDelegator.transitRouter.plan; + this._query = Application.routeQuery; + this._key = params.key; + this._tz = GLib.TimeZone.new(NATIVE_TIMEZONE); + + if (!this._key) + throw new Error('missing key'); + } + + fetchFirstResults() { + let filledPoints = this._query.filledPoints; + + this._extendPrevious = false; + this._viaId = null; + + if (filledPoints.length > 3) { + Utils.debug('This plugin supports at most one via location'); + this._plan.reset(); + this._plan.requestFailed(); + this._query.reset(); + } else if (filledPoints.length === 2) { + this._fetchResults(); + } else { + let lat = filledPoints[1].place.location.latitude; + let lon = filledPoints[1].place.location.longitude; + + this._fetchNearbyStops(lat, lon, MAX_NUM_NEARBY_STOPS, + NEARBY_STOPS_SEARCH_RADIUS, + () => this._fetchResults()); + } + } + + fetchMoreResults() { + this._extendPrevious = true; + + if ((!this._scrF && !this._query.arriveBy) || + (!this._scrB && this._query.arriveBy)) + this._noRouteFound(); + else + this._fetchResults(); + } + + _fetchNearbyStops(lat, lon, num, radius, callback) { + let query = new HTTP.Query(this._getNearbyStopsQueryParams(lat, lon, + num, radius)); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + + '/location.nearbystops?' + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get nearby stops: ' + message.status_code); + this._noRouteFound(); + } else { + try { + let result = JSON.parse(message.response_body.data); + let stopLocations = result.StopLocation; + + Utils.debug('nearby stops: ' + JSON.stringify(result, null, 2)); + + if (stopLocations && stopLocations.length > 0) { + let stopLocation = stopLocations[0]; + + this._viaId = stopLocation.id; + callback(); + } else { + Utils.debug('No nearby stops found'); + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + _fetchResults() { + let query = new HTTP.Query(this._getQueryParams()); + let uri = new Soup.URI(BASE_URL + '/' + API_VERSION + '/trip?' + + query.toString()); + let request = new Soup.Message({ method: 'GET', uri: uri }); + + this._session.queue_message(request, (obj, message) => { + if (message.status_code !== Soup.Status.OK) { + Utils.debug('Failed to get trip: ' + message.status_code); + /* No routes found. If this is the first search + * (not "load more") and the distance is short + * enough, generate a walk-only itinerary + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && + distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, + end, + route); + this._plan.updateWithNewItineraries([walkingItinerary]); + } else { + this._noRouteFound(); + } + }); + } else { + this._noRouteFound(); + } + } else { + try { + let result = JSON.parse(message.response_body.data); + + Utils.debug('result: ' + JSON.stringify(result, null, 2)); + if (result.Trip) { + let itineraries = this._createItineraries(result.Trip); + + // store the back and forward references from the result + this._scrB = result.scrB; + this._scrF = result.scrF; + this._processItineraries(itineraries); + } else { + this._noRouteFound(); + } + } catch (e) { + Utils.debug('Error parsing result: ' + e); + this._plan.reset(); + this._plan.requestFailed(); + } + } + }); + } + + /* get total "as the crow flies" start, and end points, and distance for + * the query + */ + _getAsTheCrowFliesPointsAndDistanceForQuery() { + let start = this._query.filledPoints[0]; + let end = this._query.filledPoints.last(); + let startLoc = start.place.location; + let endLoc = end.place.location; + + return [start, end, endLoc.get_distance_from(startLoc) * 1000]; + } + + _processItineraries(itineraries) { + /* if this is the first request, and the distance is short enough, + * add an additional walking-only itinerary at the beginning + */ + let [start, end, distance] = + this._getAsTheCrowFliesPointsAndDistanceForQuery(); + + if (!this._extendPrevious && distance <= WALK_SEARCH_RADIUS) { + GraphHopperTransit.fetchWalkingRoute([start, end], (route) => { + if (route && route.distance <= MAX_WALK_ONLY_DISTANCE) { + let walkingItinerary = + this._createWalkingOnlyItinerary(start, end, route); + + itineraries.unshift(walkingItinerary); + } + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + }); + } else { + GraphHopperTransit.addWalkingToItineraries(itineraries, + () => this._plan.updateWithNewItineraries(itineraries, + this._query.arriveBy, + this._extendPrevious)); + } + } + + _createWalkingOnlyItinerary(start, end, route) { + let walkingLeg = GraphHopperTransit.createWalkingLeg(start, end, + start.place.name, + end.place.name, + route); + let duration = route.duration; + /* if the query has no date, just use a fake, since only the time + * is relevant for displaying in this case + */ + let date = this._query.date || '2019-01-01'; + let time = this._query.time + ':00'; + + let [timestamp, tzOffset] = + this._query.time ? this._parseTime(time, date) : + this._getTimestampAndTzOffsetNow(); + + if (this._query.arriveBy) { + walkingLeg.arrival = timestamp; + walkingLeg.departure = timestamp - route.time; + } else { + walkingLeg.departure = timestamp; + walkingLeg.arrival = timestamp + route.time; + } + + walkingLeg.agencyTimezoneOffset = tzOffset; + + let walkingItinerary = + new TransitPlan.Itinerary({ legs: [walkingLeg]} ); + + walkingItinerary.adjustTimings(); + + return walkingItinerary; + } + + /* Indicate that no routes where found, either shows the "No route found" + * message, or in case of loading additional (later/earlier) results, + * indicate no such where found, so that the sidebar can disable the + * "load more" functionality as appropriate. + */ + _noRouteFound() { + if (this._extendPrevious) { + this._plan.noMoreResults(); + } else { + this._plan.noRouteFound(); + } + } + + _createItineraries(trips) { + return trips.map((trip) => this._createItinerary(trip)); + } + + _createItinerary(trip) { + let legs = this._createLegs(trip.LegList.Leg); + let duration = this._parseDuration(trip.duration); + let origin = trip.LegList.Leg[0].Origin; + let destination = trip.LegList.Leg.last().Destination; + let [startTime,] = this._parseTime(origin.time, origin.date); + let [endTime,] = this._parseTime(destination.time, destination.date); + + return new TransitPlan.Itinerary({ duration: duration, + departure: startTime, + arrival: endTime, + legs: legs, + duration: duration }); + } + + /** + * Parse a time and date string into a timestamp into an array with + * an absolute timestamp in ms since Unix epoch and a timezone offset + * for the provider's native timezone at the given time and date + */ + _parseTime(time, date) { + let timeText = '%sT%s'.format(date, time); + let dateTime = GLib.DateTime.new_from_iso8601(timeText, this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Get absolute timestamp for "now" in ms and timezone offset in the + * native timezone of the provider's native timezone @ "now" + */ + _getTimestampAndTzOffsetNow() { + let dateTime = GLib.DateTime.new_now(this._tz); + + return [dateTime.to_unix() * 1000, dateTime.get_utc_offset() / 1000]; + } + + /** + * Parse a subset of ISO 8601 duration expressions. + * Handle hour and minute parts + */ + _parseDuration(duration) { + let match = duration.match(ISO_8601_DURATION_REGEXP); + + if (match) { + let [,,d,,h,,min] = match; + + return (d || 0) * 86400 + (h || 0) * 3600 + (min || 0) * 60; + } else { + Utils.debug('Unknown duration: ' + duration); + + return -1; + } + } + + _createLegs(legs) { + let result = legs.map((leg, index, legs) => this._createLeg(leg, index, legs)); + + if (this._canLegBeIgnored(result[0])) + result.shift(); + + if (this._canLegBeIgnored(result.last())) + result.splice(-1); + + return result; + } + + /* determines if a leg can ignored at the start or end, to catch the + * case when the user probably meant to search for a trip from a transit + * stop anyway + */ + _canLegBeIgnored(leg) { + if (!leg.isTransit) { + /* check that the distance is below the threshold and also that + * the duration is below 1 min, since the API in some occasions + * apparently gives distance 0, even though a walking leg has + * longer duration, and spans a distance in coordinates. + */ + return leg.distance <= DISTANCE_THREASHOLD_TO_IGNORE && + leg.duration <= 60; + } else { + return false; + } + } + + _createLeg(leg, index, legs) { + let isTransit; + + if (leg.type === LegType.TRANSIT) + isTransit = true; + else if (leg.type === LegType.WALK || leg.type === LegType.TRANSFER) + isTransit = false; + else + throw new Error('Unknown leg type: ' + leg.type); + + let origin = leg.Origin; + let destination = leg.Destination; + let product = leg.Product; + + if (!origin) + throw new Error('Missing Origin element'); + if (!destination) + throw new Error('Missing Destination element'); + if (!product && isTransit) + throw new Error('Missing Product element for transit leg'); + + let first = index === 0; + let last = index === legs.length - 1; + /* for walking legs in the beginning or end, use the name from the + * query, so we get the names of the place the user searched for in + * the results, when starting/ending at a transitstop, use the stop + * name + */ + let from = + first && !isTransit ? this._query.filledPoints[0].place.name : + origin.name; + let to = + last && !isTransit ? this._query.filledPoints.last().place.name : + destination.name; + let [departure, tzOffset] = this._parseTime(origin.time, origin.date); + let [arrival,] = this._parseTime(destination.time, destination.date); + let route = isTransit ? product.num : null; + let routeType = + isTransit ? this._getHVTCodeFromCatCode(product.catCode) : null; + let agencyName = isTransit ? product.operator : null; + let agencyUrl = isTransit ? product.operatorUrl : null; + let polyline = this._createPolylineForLeg(leg); + let duration = leg.duration ? this._parseDuration(leg.duration) : null; + + let result = new TransitPlan.Leg({ departure: departure, + arrival: arrival, + from: from, + to: to, + headsign: leg.direction, + fromCoordinate: [origin.lat, + origin.lon], + toCoordinate: [destination.lat, + destination.lon], + route: route, + routeType: routeType, + polyline: polyline, + isTransit: isTransit, + distance: leg.dist, + duration: duration, + agencyName: agencyName, + agencyUrl: agencyUrl, + agencyTimezoneOffset: tzOffset, + tripShortName: route }); + + if (isTransit) + result.intermediateStops = this._createIntermediateStops(leg); + + return result; + } + + _createPolylineForLeg(leg) { + let polyline; + + if (leg.Stops && leg.Stops.Stop) { + polyline = []; + + leg.Stops.Stop.forEach((stop) => { + polyline.push(new Champlain.Coordinate({ latitude: stop.lat, + longitude: stop.lon })); + }); + } else { + polyline = + [new Champlain.Coordinate({ latitude: leg.Origin.lat, + longitude: leg.Origin.lon }), + new Champlain.Coordinate({ latitude: leg.Destination.lat, + longitude: leg.Destination.lon })]; + } + + return polyline; + } + + _createIntermediateStops(leg) { + let result = []; + + if (!leg.Stops && !leg.Stops.Stop) + throw new Error('Missing Stops element'); + + leg.Stops.Stop.forEach((stop, index) => { + if (index !== 0) + result.push(this._createIntermediateStop(stop)); + }); + + return result; + } + + _createIntermediateStop(stop) { + let [departure, departureTzOffset] = [,]; + let [arrival, arrivalTzOffset] = [,]; + + if (stop.depTime && stop.depDate) + [departure, departureTzOffset] = this._parseTime(stop.depTime, stop.depDate); + if (stop.arrTime && stop.arrDate) + [arrival, arrivalTzOffset] = this._parseTime(stop.arrTime, stop.arrDate); + + if (!arrival) + arrival = departure; + if (!departure) + departure = arrival; + + return new TransitPlan.Stop({ name: stop.name, + arrival: arrival, + departure: departure, + agencyTimezoneOffset: departureTzOffset || arrivalTzOffset, + coordinate: [stop.lat, stop.lon] }); + } + + _getHVTCodeFromCatCode(code) { + switch (parseInt(code)) { + case CatCode.EXPRESS_TRAIN: + return HVT.HIGH_SPEED_RAIL_SERVICE; + case CatCode.REGIONAL_TRAIN: + return HVT.REGIONAL_RAIL_SERVICE; + case CatCode.EXPRESS_BUS: + return HVT.EXPRESS_BUS_SERVICE; + case CatCode.LOCAL_TRAIN: + return HVT.SUBURBAN_RAILWAY_SERVICE; + case CatCode.SUBWAY: + return HVT.METRO_SERVICE; + case CatCode.TRAM: + return HVT.TRAM_SERVICE; + case CatCode.BUS: + return HVT.BUS_SERVICE; + case CatCode.FERRY: + return HVT.WATER_TRANSPORT_SERVICE; + case CatCode.TAXI: + return HVT.COMMUNAL_TAXI_SERVICE; + default: + Utils.debug('Unknown catCode: ' + code); + return HVT.MISCELLANEOUS_SERVICE; + } + } + + _getQueryParams() { + let points = this._query.filledPoints; + let originLocation = points[0].place.location; + let destLocation = points.last().place.location; + let transitOptions = this._query.transitOptions; + let params = { key: this._key, + originCoordLat: originLocation.latitude, + originCoordLong: originLocation.longitude, + destCoordLat: destLocation.latitude, + destCoordLong: destLocation.longitude, + format: 'json' }; + + if (!transitOptions.showAllTransitTypes) + params.products = this._getAllowedProductsForQuery(); + + if (this._viaId) + params.viaId = this._viaId; + + if (this._extendPrevious) { + params.context = this._query.arriveBy ? this._scrB : this._scrF; + } else { + if (this._query.arriveBy) + params.searchForArrival = 1; + + if (this._query.time) + params.time = this._query.time; + + if (this._query.date) + params.date = this._query.date; + } + + return params; + } + + _getNearbyStopsQueryParams(lat, lon, num, radius) { + let params = { key: this._key, + originCoordLat: lat, + originCoordLong: lon, + maxNo: num, + r: radius, + format: 'json' }; + + return params; + } + + _getAllowedProductsForQuery() { + let products = 0; + + this._query.transitOptions.transitTypes.forEach((type) => { + products += this._productCodeForTransitType(type); + }); + + return products; + } + + _productCodeForTransitType(type) { + switch (type) { + case TransitPlan.RouteType.BUS: + return Products.BUS + Products.EXPRESS_BUS + Products.TAXI; + case TransitPlan.RouteType.TRAM: + return Products.TRAM; + case TransitPlan.RouteType.TRAIN: + return Products.EXPRESS_TRAIN + Products.LOCAL_TRAIN; + case TransitPlan.RouteType.SUBWAY: + return Products.SUBWAY; + case TransitPlan.RouteType.FERRY: + return Products.FERRY; + default: + return 0; + } + } +} diff --git a/src/translations.js b/src/translations.js new file mode 100644 index 00000000..417811e4 --- /dev/null +++ b/src/translations.js @@ -0,0 +1,308 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; +const C_ = imports.gettext.dgettext; + +const GLib = imports.gi.GLib; + +const Time = imports.time; +const Utils = imports.utils; + +/* Translate an opening time specification tag value. + * from OSM into a "two-dimensional" (array-of-arrays) grid of human-readable + * strings (marked for translation) suitable for laying out in aligned rows + * and columns in a GtkGrid in the place bubbles. + * + * Some limitations are imposed to keep the translations manageable: + * A maximum of three components (separated by ; in the tag) are considered. + * For each component a maximum of three day intervals are considered. + * Each day interval can have one or two time intervals specified. + * For each of these limitations, the input string is passed on unmodified + * if the format is outside the supported cases, so no data should be dropped. + * Currently only specifying weekdays and public and school holidays are + * supported. + * Other variants, such as month-specific opening hours and other interval + * variants are not currently supported. In these cases, the data is + * returned as-is. + * + * The definition for the opening_hours tag can be found at: + * http://wiki.openstreetmap.org/wiki/Key:opening_hours + */ +function translateOpeningHours(string) { + if (string === '24/7' || string === 'Mo-Su 00:00-24:00' || + string === '00:00-24:00') + return [[_("Around the clock")]]; + else if (string === 'sunrise-sunset') + return [[_("From sunrise to sunset")]]; + else { + /* split "components" */ + let splitParts = string.split(';'); + + return splitParts.map(p => _translateOpeningHoursPart(p.trim())); + } + +} + +/* + * Parse a time range component, comprised of either a single time range, or + * day and time ranges, such as: + * 10:00-18:00 + * 09:00-12:00,13:00-19:00 + * Mo-Fr 10:00-19:00 + * Mo-We,Fr 10:00-12:00,13:00-17:00 + * Mo-We,Fr 10:00-12:00, 13:00-17:00 + */ +function _translateOpeningHoursPart(string) { + let splitString = string.split(/\s+/); + let len = splitString.length; + + if (len === 1) { + return [_translateOpeningHoursTimeIntervalList(string.trim())]; + } else if (len === 2 || len === 3) { + let dayIntervalSpec = + _translateOpeningHoursDayIntervalList(splitString[0].trim()); + let intervalString = + len === 2 ? splitString[1].trim() : + splitString[1].trim() + splitString[2].trim(); + let timeIntervalSpec = + _translateOpeningHoursTimeIntervalList(intervalString); + + return [Utils.firstToLocaleUpperCase(dayIntervalSpec), + timeIntervalSpec]; + } else { + // for an unknown format, just output the raw value + return [string]; + } +} + +/* + * Parse a day interval, such as: + * Mo-Fr + * Mo,We,Th-Fr + */ +function _translateOpeningHoursDayIntervalList(string) { + let splitParts = string.split(','); + let interval1, interval2, interval3; + + switch (splitParts.length) { + case 1: + return _translateOpeningHoursDayInterval(splitParts[0].trim()); + case 2: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + /* Translators: + * This represents a format string consisting of two day interval + * specifications. + * For example: + * Mo-Fr,Sa + * where the "Mo-Fr" and "Sa" parts are replaced by the %s + * place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s").format(interval1, interval2); + case 3: + interval1 = _translateOpeningHoursDayInterval(splitParts[0].trim()); + interval2 = _translateOpeningHoursDayInterval(splitParts[1].trim()); + interval3 = _translateOpeningHoursDayInterval(splitParts[2].trim()); + /* Translators: + * This represents a format string consisting of three day interval + * specifications. + * For example: + * Mo-We,Fr,Su + * where the "Mo-We", "Fr", and "Su" parts are replaced by the + * %s place holder. + * The separator (,) could be replaced with a translated variant or + * a phrase if appropriate. */ + return C_("day interval list", "%s,%s,%s"). + format(interval1, interval2, interval3); + default: + // for other formats, just return the raw string + return string; + } +} + +/* + * Parse a day interval consisting of either a single day + * or a range, such as: + * Mo-Fr + * Tu + */ +function _translateOpeningHoursDayInterval(string) { + let splitString = string.split('-'); + + // special case: Mo-Su treated as "every day" + if (string === 'Mo-Su') + return _("Every day"); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursDay(splitString[0].trim()); + case 2: + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This represents a range of days with a starting and ending day. + */ + return C_("day range", "%s-%s").format( + _translateOpeningHoursDay(from), + _translateOpeningHoursDay(to)); + default: + // unknown format, just return the input + return string; + } +} + +function _translateOpeningHoursDay(string) { + if (string === 'PH') + return _("Public holidays"); + if (string === 'SH') + return _("School holidays"); + + // create a dummy DateTime instance which is guaranteed to be a Monday + let time = GLib.DateTime.new_local(1, 1, 1, 0, 0, 0.0); + let days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; + + for (let i = 0; i < days.length; i++) { + if (string === days[i]) { + time = time.add_days(i); + return time.format('%a'); + } + } + + // unknown value, just return the input + return string; +} + +/* + * Parse a time interval list, such as: + * 10:00-20:00 + * 10:00-12:00,13:00-17:00 + */ +function _translateOpeningHoursTimeIntervalList(string) { + let splitString = string.split(','); + + switch (splitString.length) { + case 1: + return _translateOpeningHoursTimeInterval(splitString[0].trim()); + case 2: + let interval1 = splitString[0].trim(); + let interval2 = splitString[1].trim(); + + /* Translators: + * This is a list with two time intervals, such as: + * 09:00-12:00, 13:00-14:00 + * The intervals are represented by the %s place holders and + * appropriate white space or connected phrase could be modified by + * the translation. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval list", "%s, %s").format( + _translateOpeningHoursTimeInterval(interval1), + _translateOpeningHoursTimeInterval(interval2)); + default: + // for other number of components, just return the input + return string; + } +} + +/* + * Parse a time interval + */ +function _translateOpeningHoursTimeInterval(string) { + if (string === 'off') + return _("not open"); + + let splitString = string.split('-'); + + if (splitString.length == 2) { + let from = splitString[0].trim(); + let to = splitString[1].trim(); + + /* Translators: + * This is a time interval with a starting and an ending time. + * The time values are represented by the %s place holders and + * appropriate white spacing or connecting phrases can be set by the + * translation as needed. The order of the arguments can be rearranged + * using the %n$s syntax. + */ + return C_("time interval", "%s-%s").format( + _translateOpeningHoursTime(from), + _translateOpeningHoursTime(to)); + } else { + // unknown time interval format, just return the input + return string; + } +} + +/* + * Parse a time. + */ +function _translateOpeningHoursTime(string) { + let splitString = string.split(':'); + + if (splitString.length == 2) { + let h = splitString[0]; + let min = splitString[1]; + + // if the parts aren't numbers + if (h % 1 !== 0 || min % 1 !== 0) + return string; + + // if the hours or minute components are out of range + if (h > 24 || h < 0 || min > 59 || min < 0) + return string; + + return Time.formatTimeFromHoursAndMins(h, min); + } else { + // unknown format, just return input + return string; + } +} + +function translateReligion(string) { + switch(string) { + case 'animist': return _("Animism"); + case 'bahai': return_("Bahá'í"); + case 'buddhist': return _("Buddhism"); + case 'caodaism': return _("Caodaism"); + case 'christian': return _("Christianity"); + case 'confucian': return _("Confucianism"); + case 'hindu': return _("Hinduism"); + case 'jain': return _("Jainism"); + case 'jewish': return _("Judaism"); + case 'muslim': return _("Islam"); + case 'multifaith': return _("Multiple Religions"); + case 'pagan': return _("Paganism"); + case 'pastafarian': return _("Pastafarianism"); + case 'scientologist': return _("Scientology"); + case 'shinto': return _("Shinto"); + case 'sikh': return _("Sikhism"); + case 'spiritualist': return _("Spiritualism"); + case 'taoist': return _("Taoism"); + case 'unitarian_universalist': return _("Unitarian Universalism"); + case 'voodoo': return _("Voodoo"); + case 'yazidi': return _("Yazidism"); + case 'zoroastrian': return _("Zoroastrianism"); + default: return null; + } +} diff --git a/src/turnPointMarker.js b/src/turnPointMarker.js new file mode 100644 index 00000000..c5e872ee --- /dev/null +++ b/src/turnPointMarker.js @@ -0,0 +1,123 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Dario Di Nucci + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Dario Di Nucci + */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const GObject = imports.gi.GObject; +const Mainloop = imports.mainloop; + +const Application = imports.application; +const Color = imports.color; +const Location = imports.location; +const MapMarker = imports.mapMarker; +const Place = imports.place; +const Utils = imports.utils; + +var TurnPointMarker = GObject.registerClass( +class TurnPointMarker extends MapMarker.MapMarker { + + _init(params) { + this._queryPoint = params.queryPoint; + delete params.queryPoint; + + this._turnPoint = params.turnPoint; + delete params.turnPoint; + + this._transitStop = params.transitStop; + delete params.transitStop; + + this._transitLeg = params.transitLeg; + delete params.transitLeg; + + let latitude; + let longitude; + + if (this._turnPoint) { + latitude = this._turnPoint.coordinate.get_latitude(); + longitude = this._turnPoint.coordinate.get_longitude(); + } else { + latitude = this._transitStop.coordinate[0]; + longitude = this._transitStop.coordinate[1]; + } + + params.place = new Place.Place({ + location: new Location.Location({ latitude: latitude, + longitude: longitude }) }); + super._init(params); + + let actor; + if (this._queryPoint) { + this.draggable = true; + this.connect('drag-finish', () => this._onMarkerDrag()); + actor = this._actorFromIconName(this._turnPoint.iconName, 0); + } else { + let color = this._getColor(); + actor = this._actorFromIconName('maps-point-end-symbolic', + 0, + color); + } + this.add_actor(actor); + } + + _getColor() { + /* Use the route color from the transit leg when representing part of + * a transit trip, otherwise let the fallback functionality of the + * utility function use a GNOMEish blue color for turn-by-turn routing. + */ + let color = this._transitLeg ? this._transitLeg.color : null; + + return new Gdk.RGBA({ red: Color.parseColor(color, 0, 33 / 255), + green: Color.parseColor(color, 1, 93 / 255), + blue: Color.parseColor(color, 2, 155 / 255), + alpha: 255 }); + } + + get anchor() { + return { x: Math.floor(this.width / 2) - 1, + y: Math.floor(this.height / 2) - 1 }; + } + + goTo() { + let view = this._mapView.view; + let turnPointZoomLevel = 15; + let latitude = this.latitude; + let longitude = this.longitude; + + view.goto_animation_mode = Clutter.AnimationMode.LINEAR; + view.goto_duration = 0; + + Utils.once(view, 'animation-completed', () => { + view.zoom_level = turnPointZoomLevel; + view.center_on(latitude, longitude); + }); + + view.go_to(this.latitude, this.longitude); + } + + _onMarkerDrag() { + let query = Application.routeQuery; + let place = new Place.Place({ + location: new Location.Location({ latitude: this.latitude.toFixed(5), + longitude: this.longitude.toFixed(5) }) }); + + this._queryPoint.place = place; + } +}); diff --git a/src/urls.js b/src/urls.js new file mode 100644 index 00000000..96b698f2 --- /dev/null +++ b/src/urls.js @@ -0,0 +1,104 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2020 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const _ = imports.gettext.gettext; + +const GLib = imports.gi.GLib; + +// Matches URLs for OpenStreetMap (for addressing objects or coordinates) +const OSM_URL_REGEX = new RegExp(/https?:\/\/(www\.)?openstreetmap\.org./); + +/** + * For URLs identifiable as pointing to a coordinate + * e.g. an openstreetmap.org URL with lat and lon query parameters, + * returns [lat, lon, optional zoom], otherwise []. + */ +function parseAsCoordinateURL(url) { + if (url.match(OSM_URL_REGEX)) { + /* it seems #map= is not handle well by parse_params(), so just remove + * the # as a work-around + */ + let uri = GLib.Uri.parse(url.replace('#map=', 'map='), GLib.UriFlags.NONE); + let params = GLib.Uri.parse_params(uri.get_query(), -1, '&', + GLib.UriParamsFlags.NONE); + + let lat = params.lat; + let lon = params.lon; + let mlat = params.mlat; + let mlon = params.mlon; + let zoom; + let map = params.map; + + if (map) { + let parts = map.split('/'); + + if (parts.length !== 3) { + return []; + } else { + zoom = parseInt(parts[0]); + lat = parseFloat(parts[1]); + lon = parseFloat(parts[2]); + } + } else if (mlat && mlon) { + lat = parseFloat(mlat); + lon = parseFloat(mlon); + + if (params.zoom) + zoom = parseInt(params.zoom); + } else if (lat && lon) { + lat = parseFloat(lat); + lon = parseFloat(lon); + + if (params.zoom) + zoom = parseInt(params.zoom); + } else { + return []; + } + + return [lat, lon, zoom]; + } else { + return []; + } +} + +/** + * For URLs addressing a specific OSM object (node, way, or relation), + * returns [type,id], otherwise []. + */ +function parseAsObjectURL(url) { + if (url.match(OSM_URL_REGEX)) { + let uri = GLib.Uri.parse(url, GLib.UriFlags.NONE); + let path = uri.get_path(); + let parts = path.split('/'); + + if (parts.length === 3 && parts[0] === '' && + (parts[1] === 'node' || + parts[1] === 'way' || + parts[1] === 'relation')) { + let id = parseInt(parts[2]); + + if (id > 0) + return [parts[1], id]; + } + } + + return []; +} diff --git a/src/userLocationMarker.js b/src/userLocationMarker.js new file mode 100644 index 00000000..6181d238 --- /dev/null +++ b/src/userLocationMarker.js @@ -0,0 +1,126 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2014 Damián Nohales + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Damián Nohales + */ + +const Champlain = imports.gi.Champlain; +const Clutter = imports.gi.Clutter; +const GObject = imports.gi.GObject; + +const MapMarker = imports.mapMarker; + +var AccuracyCircleMarker = GObject.registerClass( +class AccuracyCirleMarker extends Champlain.Point { + + _init(params) { + this.place = params.place; + delete params.place; + + params.color = new Clutter.Color({ red: 0, + blue: 255, + green: 0, + alpha: 25 }); + params.latitude = this.place.location.latitude; + params.longitude = this.place.location.longitude; + params.reactive = false; + + super._init(params); + } + + refreshGeometry(view) { + this.latitude = this.place.location.latitude; + this.longitude = this.place.location.longitude; + + let zoom = view.zoom_level; + let source = view.map_source; + let metersPerPixel = source.get_meters_per_pixel(zoom, + this.latitude, + this.longitude); + let size = this.place.location.accuracy * 2 / metersPerPixel; + + if (size > view.width || size > view.height) + this.hide(); + else { + this.size = size; + this.show(); + } + } +}); + +var UserLocationMarker = GObject.registerClass( +class UserLocationMarker extends MapMarker.MapMarker { + + _init(params) { + super._init(params); + + this._accuracyMarker = new AccuracyCircleMarker({ place: this.place }); + this.connect('notify::view-zoom-level', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::width', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._view.connect('notify::height', + () => this._accuracyMarker.refreshGeometry(this._view)); + this._accuracyMarker.refreshGeometry(this._view); + + this.place.connect('notify::location', () => this._updateLocation()); + this._updateLocation(); + + this.connect('notify::visible', this._updateAccuracyCircle.bind(this)); + } + + get anchor() { + return { x: Math.floor(this.width / 2), + y: Math.floor(this.height / 2) }; + } + + _hasBubble() { + return true; + } + + addToLayer(layer) { + layer.add_marker(this._accuracyMarker); + layer.add_marker(this); + } + + _updateLocation() { + if (this._actor) { + this._actor.destroy(); + delete this._actor; + } + + if (this.place.location.heading > -1) { + this._actor = this._actorFromIconName('user-location-compass', 0); + this._actor.set_pivot_point(0.5, 0.5); + this._actor.set_rotation_angle(Clutter.RotateAxis.Z_AXIS, this.place.location.heading); + } else { + this._actor = this._actorFromIconName('user-location', 0); + } + this.add_actor(this._actor); + + this._updateAccuracyCircle(); + } + + _updateAccuracyCircle() { + if (this.visible && this.place.location.accuracy > 0) { + this._accuracyMarker.refreshGeometry(this._view); + } else { + this._accuracyMarker.visible = false; + } + } +}); diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 00000000..fe308472 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,501 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2011, 2013 Red Hat, Inc. + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Cosimo Cecchi + * Zeeshan Ali (Khattak) + */ + +const _ = imports.gettext.gettext; +const ngettext = imports.gettext.ngettext; + +const GLib = imports.gi.GLib; +const Gdk = imports.gi.Gdk; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Geocode = imports.gi.GeocodeGlib; +const Gio = imports.gi.Gio; +const Gtk = imports.gi.Gtk; +const GWeather = imports.gi.GWeather; +const Soup = imports.gi.Soup; +const ByteArray = imports.byteArray; + +var METRIC_SYSTEM = 1; +var IMPERIAL_SYSTEM = 2; + +//List of locales using imperial system according to glibc locale database +const IMPERIAL_LOCALES = ['unm_US', 'es_US', 'es_PR', 'en_US', 'yi_US']; + +// Matches all unicode stand-alone accent characters +const ACCENTS_REGEX = /[\u0300-\u036F]/g; + +// Regex matching e-mail addresses +const EMAIL_REGEX=/^[^\s@]+@[^\s@]+\.[^\s@]+$/ + +const _integerFormat = new Intl.NumberFormat([], { maximumFractionDigits: 0 }); +const _integerTwoDigitFormat = + new Intl.NumberFormat([], { minimumIntegerDigits: 2, + maximumFractionDigits: 0 }); + +let debugInit = false; +let measurementSystem = null; + +var debugEnabled = false; + +function debug(msg) { + if (!debugInit) { + let env = GLib.getenv('MAPS_DEBUG'); + if (env) + debugEnabled = true; + + debugInit = true; + } + + if (debugEnabled) { + log('DEBUG: ' + msg); + if (msg instanceof Error) + log(msg.stack); + } +} + +// Connect to a signal on an object and disconnect on its first emission. +function once(obj, signal, callback) { + let id = obj.connect(signal, function() { + obj.disconnect(id); + callback(); + }); +} + +function loadStyleSheet(file) { + let provider = new Gtk.CssProvider(); + provider.load_from_file(file); + Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), + provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); +} + +function addActions(actionMap, entries, settings = null) { + for(let name in entries) { + let entry = entries[name]; + let action = createAction(name, entry, settings); + + actionMap.add_action(action); + + if(entry.accels) + setAccelsForActionMap(actionMap, name, entry.accels); + } +} + +function setAccelsForActionMap(actionMap, actionName, accels) { + let app; + let prefix; + + if(actionMap instanceof Gtk.Application) { + app = actionMap; + prefix = "app"; + } else if(actionMap instanceof Gtk.Window) { + app = actionMap.application; + prefix = "win"; + } + app.set_accels_for_action(prefix + '.' + actionName, accels); +} + +function createAction(name, + { state, paramType, onActivate, onChangeState, setting }, + settings = null) { + let action; + + if (setting && settings) { + action = settings.create_action(setting); + + if (onChangeState) + action.connect('notify::state', onChangeState); + } else { + let entry = { name: name }; + + if (Array.isArray(state)) { + let [type, value] = state; + entry.state = new GLib.Variant.new(type, value); + } + + if (paramType !== undefined) + entry.parameter_type = GLib.VariantType.new(paramType); + + action = new Gio.SimpleAction(entry); + + if (onActivate) + action.connect('activate', onActivate); + if (onChangeState) + action.connect('change-state', onChangeState); + } + + return action; +} + +function _getPlatformData(appId, timestamp) { + let context = Gdk.Display.get_default().get_app_launch_context(); + context.set_timestamp(timestamp); + let info = Gio.DesktopAppInfo.new(appId + '.desktop'); + let id = new GLib.Variant('s', context.get_startup_notify_id(info, [])); + + return { 'desktop-startup-id': id }; +} + +function activateAction(appId, action, parameter, timestamp) { + let objectPath = '/' + appId.replace(/\./g, '/'); + let platformData = _getPlatformData(appId, timestamp); + let wrappedParam = parameter ? [parameter] : []; + + Gio.DBus.session.call(appId, + objectPath, + 'org.freedesktop.Application', + 'ActivateAction', + new GLib.Variant('(sava{sv})', [action, + wrappedParam, + platformData]), + null, + Gio.DBusCallFlags.NONE, -1, null, function(c, res) { + try { + c.call_finish(res); + } catch(e) { + debug('ActivateApplication: ' + e); + } + }); +} + +function dashedToCamelCase(name) { + return name.replace(/(-.)/g, function(x) { + return x[1].toUpperCase(); + }); +} + +function getUIObject(res, ids) { + let builder = new Gtk.Builder(); + builder.add_from_resource('/org/gnome/Maps/ui/' + res + '.ui'); + let ret = {}; + ids.forEach(function(id) { + ret[dashedToCamelCase(id)] = builder.get_object(id); + }); + return ret; +} + +function readFile(filename) { + let status, buffer; + let file = Gio.File.new_for_path(filename); + try { + [status, buffer] = file.load_contents(null); + } catch (e) { + return null; + } + if (status) + return buffer; + else + return null; +} + +function writeFile(filename, buffer) { + let file = Gio.File.new_for_path(filename); + let status; + try { + status = file.replace_contents(buffer, null, false, 0, null)[0]; + return status; + } catch (e) { + return false; + } +} + +function getMeasurementSystem() { + if (measurementSystem) + return measurementSystem; + + let locale = GLib.getenv('LC_MEASUREMENT') || GLib.get_language_names()[0]; + + // Strip charset + if (locale.indexOf('.') !== -1) + locale = locale.substring(0, locale.indexOf('.')); + + if (IMPERIAL_LOCALES.indexOf(locale) === -1) + measurementSystem = METRIC_SYSTEM; + else + measurementSystem = IMPERIAL_SYSTEM; + + return measurementSystem; +} + +/** + * Get the highest priority bare lange currently in use. + */ +function getLanguage() { + let locale = GLib.get_language_names()[0]; + // the last item returned is the "bare" language + return GLib.get_locale_variants(locale).slice(-1)[0]; +} + +function getAccuracyDescription(accuracy) { + switch(accuracy) { + case Geocode.LOCATION_ACCURACY_UNKNOWN: + /* Translators: Accuracy of user location information */ + return _("Unknown"); + case 0: + /* Translators: Accuracy of user location information */ + return _("Exact"); + default: + return prettyDistance(accuracy); + } +} + +function loadAvatar(pixbuf, size) { + let width = pixbuf.get_width(); + let height = pixbuf.get_height(); + let croppedThumbnail; + + if (width > height) { + let x = (width - height) / 2; + croppedThumbnail = pixbuf.new_subpixbuf(x, 0, height, height); + } else { + let y = (height - width) / 2; + croppedThumbnail = pixbuf.new_subpixbuf(0, y, width, width); + } + + return croppedThumbnail.scale_simple(size, size, GdkPixbuf.InterpType.BILINEAR); +} + +function load_icon(icon, size, loadCompleteCallback) { + if (icon instanceof Gio.FileIcon || icon instanceof Gio.BytesIcon) { + _load_icon(icon, loadCompleteCallback); + } else if (icon instanceof Gio.ThemedIcon) { + _load_themed_icon(icon, size, loadCompleteCallback); + } +} + +function _load_icon(icon, loadCompleteCallback) { + icon.load_async(-1, null, function(icon, res) { + try { + let stream = icon.load_finish(res)[0]; + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + loadCompleteCallback(null); + } + }); +} + +function _load_themed_icon(icon, size, loadCompleteCallback) { + let theme = Gtk.IconTheme.get_default(); + let info = theme.lookup_by_gicon(icon, size, 0); + + try { + let pixbuf = info.load_icon(); + loadCompleteCallback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + } +} + +function osmTypeToString(osmType) { + switch(osmType) { + case Geocode.PlaceOsmType.NODE: return 'node'; + case Geocode.PlaceOsmType.RELATION: return 'relation'; + case Geocode.PlaceOsmType.WAY: return 'way'; + default: return 'node'; + } +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals + */ +function formatLocaleInteger(n) { + return _integerFormat.format(n); +} + +/** + * Return a formatted integer number with no + * fraction, using locale-specific numerals using at least two digits + * with possible leading 0, suitable for time rendering. + */ +function formatLocaleIntegerMinimumTwoDigits(n) { + return _integerTwoDigitFormat.format(n); +} + +function prettyTime(time) { + let seconds = Math.floor(time / 1000); + let minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + let hours = Math.floor(minutes / 60); + minutes = minutes % 60; + + let secondsStr = formatLocaleInteger(seconds); + let minutesStr = formatLocaleInteger(minutes); + let hoursStr = formatLocaleInteger(hours); + + if (hours > 0 && minutes === 0) { + /* Translators: this is a duration with only hours, using + * an abbreviation for hours, corresponding to 'h' in English + */ + return _("%s h").format(hoursStr); + } else if (hours > 0) { + /* Translators: this is a duration with hours and minutes parts + * using abbreviations for hours and minutes, corresponding to 'h' + * and 'min' in English. The minutes has appropriate plural variations + */ + return ngettext("%s h %s min", "%s h %s min", + minutes).format(hoursStr, minutesStr); + } else if (minutes > 0) { + /* Translators: this is a duration with minutes part + * using abbreviation for minutes, corresponding to 'min' in English + * with appropriate plural variations + */ + return ngettext("%s min", "%s min", minutes).format(minutesStr); + } else { + /* Translators: this is a duration of less than one minute + * with seconds using an abbreviation for seconds, corresponding to + * 's' in English with appropriate plural forms + */ + return ngettext("%s s", "%s s", seconds).format(secondsStr); + } +} + +function prettyDistance(distance, noRound) { + if (getMeasurementSystem() === METRIC_SYSTEM) { + // round to whole meters + distance = Math.round(distance); + if (distance >= 1000 && !noRound) { + distance = Math.round(distance / 1000 * 10) / 10; + /* Translators: This is a distance measured in kilometers */ + return _("%s km").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in meters */ + return _("%s m").format(distance.toLocaleString()); + } else { + // Convert to feet + distance = Math.round(distance * 3.2808399); + if (distance >= 1056 && !noRound) { + // Convert to miles when distance is more than 0.2 mi + distance = Math.round(distance / 5280 * 10) / 10; + /* Translators: This is a distance measured in miles */ + return _("%s mi").format(distance.toLocaleString()); + } else + /* Translators: This is a distance measured in feet */ + return _("%s ft").format(distance.toLocaleString()); + } +} + +/** + * Format a population number so that greater than or equal to a million and + * evenly divisiable by 100k are displayed a locale-specific compact form + * to handle estimated values without showing lots of zeros. + * Other values are formatted in full. + */ +function prettyPopulation(population) { + let notation = population >= 1000000 && population % 100000 === 0 ? + 'compact' : 'standard'; + + return population.toLocaleString(undefined, { notation: notation }); +} + +function uriSchemeSupported(scheme) { + let apps = Gio.AppInfo.get_all(); + let prefix = 'x-scheme-handler/'; + + for (let app of apps) { + let types = app.get_supported_types(); + if (!types) + continue; + + for (let type of types) { + if (type.replace(prefix, '') === scheme) + return true; + } + } + return false; +} + +function normalizeString(string) { + let normalized = GLib.utf8_normalize(string, -1, GLib.NormalizeMode.ALL); + return normalized.replace(ACCENTS_REGEX, ''); +} + +function isUsingDarkThemeVariant() { + let gtkSettings = Gtk.Settings.get_default(); + + return gtkSettings.gtk_application_prefer_dark_theme; +} + +function isUsingHighContrastTheme() { + let gtkSettings = Gtk.Settings.get_default(); + let themeName = gtkSettings.gtk_theme_name; + + return themeName === 'HighContrast' || themeName === 'HighContrastInverse'; +} + +function showDialog(msg, type, transientFor) { + let messageDialog = + new Gtk.MessageDialog({ transient_for: transientFor, + destroy_with_parent: true, + message_type: type, + buttons: Gtk.ButtonsType.OK, + modal: true, + text: msg }); + + messageDialog.connect('response', () => messageDialog.destroy()); + messageDialog.show_all(); +} + +/* Gets a string from either a ByteArray or Uint8Array. This is for +compatibility between two different Gjs versions, see discussion at +https://gitlab.gnome.org/GNOME/gnome-maps/merge_requests/19 */ +function getBufferText(buffer) { + if (buffer instanceof Uint8Array) { + return ByteArray.toString(buffer); + } else { + return buffer.toString(); + } +} + +function getCountryCodeForCoordinates(lat, lon) { + let location = GWeather.Location.new_detached('', null, lat, lon); + + return location.get_country(); +} + +/* Determines whether a URI is valid and its scheme is HTTP or HTTPS. */ +function isValidWebsite(website) { + try { + GLib.Uri.is_valid(website, GLib.UriFlags.NONE); + } catch(e) { + return false; + } + return website.startsWith("http://") || website.startsWith("https://"); +} + +/* Determine whether a string is a valid e-mail address. */ +function isValidEmail(email) { + // if it starts with 'mailto:', it's probably a mistake copy-pasting a URI + if (email.startsWith('mailto:')) + return false; + + return email.match(EMAIL_REGEX) !== null; +} + +/* Return string with first character in upper case according the rules + * determined by the current locale + */ +function firstToLocaleUpperCase(str) { + return str[0].toLocaleUpperCase() + str.substring(1); +} diff --git a/src/wikipedia.js b/src/wikipedia.js new file mode 100644 index 00000000..daf3dc44 --- /dev/null +++ b/src/wikipedia.js @@ -0,0 +1,234 @@ +/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */ +/* vim: set et ts=4 sw=4: */ +/* + * Copyright (c) 2017 Marcus Lundblad + * + * GNOME Maps is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * GNOME Maps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNOME Maps; if not, see . + * + * Author: Marcus Lundblad + */ + +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Soup = imports.gi.Soup; + +const Format = imports.format; +const Utils = imports.utils; + +/** + * Regex matching editions of Wikipedia, e.g. "en", "arz", pt-BR", "simple". + * See https://en.wikipedia.org/wiki/List_of_Wikipedias "WP code". + */ +const WP_REGEX = /^[a-z][a-z][a-z]?(\-[a-z]+)?$|^simple$/; + +let _soupSession = null; +function _getSoupSession() { + if (_soupSession === null) { + _soupSession = new Soup.Session({ user_agent : 'gnome-maps/' + pkg.version }); + } + + return _soupSession; +} + +let _thumbnailCache = {}; +let _metadataCache = {}; + +function getLanguage(wiki) { + return wiki.split(':')[0]; +} + +function getArticle(wiki) { + return Soup.uri_encode(wiki.replace(/ /g, '_').split(':').splice(1).join(':'), + '\''); +} + +function getHtmlEntityEncodedArticle(wiki) { + return GLib.markup_escape_text(wiki.split(':').splice(1).join(':'), -1); +} + +/** + * Determine if a Wikipedia reference tag is valid + * (of the form "lang:Article title") + */ +function isValidWikipedia(wiki) { + let parts = wiki.split(':'); + + if (parts.length < 2) + return false; + + let wpCode = parts[0]; + + return wpCode.match(WP_REGEX) !== null; +} + +/* + * Fetch various metadata about a Wikipedia article, given the wiki language + * and article title. + * + * @size is the maximum width of the thumbnail. + * + * Calls @metadataCb with the lang:title pair for the article and an object + * containing information about the article. For the keys/values of this + * object, see the relevant MediaWiki API documentation. + * + * Calls @thumbnailCb with the Gdk.Pixbuf of the icon when successful, otherwise + * null. + */ +function fetchArticleInfo(wiki, size, metadataCb, thumbnailCb) { + let lang = getLanguage(wiki); + let title = getHtmlEntityEncodedArticle(wiki); + let uri = Format.vprintf('https://%s.wikipedia.org/w/api.php', [ lang ]); + let msg = Soup.form_request_new_from_hash('GET', uri, { action: 'query', + titles: title, + prop: 'extracts|pageimages|langlinks', + format: 'json', + + /* Allow redirects, for example if an + article is renamed. */ + redirects: '1', + + /* Make sure we get all lang links */ + lllimit: 'max', + + /* don't go past first section header */ + exintro: 'yes', + /* limit the length */ + exchars: '200', + /* for plain text rather than HTML */ + explaintext: 'yes', + + pithumbsize: size + ''}); + let session = _getSoupSession(); + let cachedMetadata = _metadataCache[wiki]; + + if (cachedMetadata) { + _onMetadataFetched(wiki, cachedMetadata, size, metadataCb, thumbnailCb); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to request Wikipedia metadata: " + msg.reason_phrase); + metadataCb(null, {}); + if (thumbnailCb) { + thumbnailCb(null); + } + return; + } + + let response = JSON.parse(msg.response_body.data); + let pages = response.query.pages; + + if (pages) { + /* we know there should be only one object instance in the "pages" + * object, but the API specifies the sub-object as the page ID, + * so we'll have to use this iteration approach here + */ + for (let pageId in pages) { + let page = pages[pageId]; + + _metadataCache[wiki] = page; + _onMetadataFetched(wiki, page, size, metadataCb, thumbnailCb); + return; + } + } else { + metadataCb(null, {}); + if (thumbnailCb) { + thumbnailCb(null); + } + } + }); +} + +function _onMetadataFetched(wiki, page, size, metadataCb, thumbnailCb) { + /* Try to get a thumbnail *before* following language links--the primary + article probably has the best thumbnail image */ + if (thumbnailCb && page.thumbnail) { + let source = page.thumbnail.source; + + _fetchThumbnailImage(wiki, size, source, thumbnailCb); + thumbnailCb = null; + } + + /* Follow language links if necessary */ + let langlink = _findLanguageLink(wiki, page); + if (langlink) { + fetchArticleInfo(langlink, size, metadataCb, thumbnailCb); + } else { + metadataCb(wiki, page); + + if (thumbnailCb) { + thumbnailCb(null); + } + } +} + +function _fetchThumbnailImage(wiki, size, source, callback) { + let uri = new Soup.URI(source); + let msg = new Soup.Message({ method: 'GET', uri: uri }); + let session = _getSoupSession(); + + let cachedThumbnail = _thumbnailCache[wiki + '/' + size]; + if (cachedThumbnail) { + callback(cachedThumbnail); + return; + } + + session.queue_message(msg, (session, msg) => { + if (msg.status_code !== Soup.KnownStatusCode.OK) { + log("Failed to download thumbnail: " + msg.reason_phrase); + callback(null); + return; + } + + let contents = msg.response_body_data; + let stream = Gio.MemoryInputStream.new_from_bytes(contents); + + try { + let pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, null); + + _thumbnailCache[wiki + '/' + size] = pixbuf; + callback(pixbuf); + } catch(e) { + log("Failed to load pixbuf: " + e); + callback(null); + } + + stream.close(null); + }); +} + +/* Finds the best language to use, based on the language of the original + article and the langlinks data from the Wikipedia API. + + Returns a lang:title string if that article should be used, or undefined if + the original article should be used. */ +function _findLanguageLink(wiki, page) { + let originalLang = getLanguage(wiki); + let languages = GLib.get_language_names().map((lang) => lang.split(/[\._\-]/)[0]); + + if (!languages.includes(originalLang)) { + let langlinks = {}; + for (let langlink of (page.langlinks || [])) { + langlinks[langlink.lang] = langlink["*"]; + } + + for (let language of languages) { + if (language in langlinks) { + return language + ":" + langlinks[language]; + } + } + } +} diff --git a/src/xmldom/LICENSE b/src/xmldom/LICENSE new file mode 100644 index 00000000..68a9b5e1 --- /dev/null +++ b/src/xmldom/LICENSE @@ -0,0 +1,8 @@ +You can choose any one of those: + +The MIT License (MIT): + +link:http://opensource.org/licenses/MIT + +LGPL: +http://www.gnu.org/licenses/lgpl.html diff --git a/src/xmldom/dom.js b/src/xmldom/dom.js new file mode 100644 index 00000000..0ec86d14 --- /dev/null +++ b/src/xmldom/dom.js @@ -0,0 +1,1142 @@ +/* + * DOM Level 2 + * Object DOMException + * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + */ + +function copy(src,dest){ + for(var p in src){ + dest[p] = src[p]; + } +} +/** +^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? +^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? + */ +function _extends(Class,Super){ + var pt = Class.prototype; + if(!(pt instanceof Super)){ + let t = function (){}; + t.prototype = Super.prototype; + t = new t(); + copy(pt,t); + Class.prototype = pt = t; + } + if(pt.constructor != Class){ + if(typeof Class != 'function'){ + console.error("unknow Class:"+Class) + } + pt.constructor = Class + } +} +var htmlns = 'http://www.w3.org/1999/xhtml' ; +// Node Types +var NodeType = {} +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; + +// ExceptionCode +var ExceptionCode = {} +var ExceptionMessage = {}; +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +//level2 +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); + + +function DOMException(code, message) { + if(message instanceof Error){ + var error = message; + }else{ + error = this; + Error.call(this, ExceptionMessage[code]); + this.message = ExceptionMessage[code]; + if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + } + error.code = code; + if(message) this.message = this.message + ": " + message; + return error; +}; +DOMException.prototype = Error.prototype; +copy(ExceptionCode,DOMException) +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 + * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. + * The items in the NodeList are accessible via an integral index, starting from 0. + */ +function NodeList() { +}; +NodeList.prototype = { + /** + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length:0, + /** + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function(index) { + return this[index] || null; + }, + toString:function(){ + for(var buf = [], i = 0;i=0){ + var lastIndex = list.length-1 + while(i0 || key == 'xmlns'){ +// return null; +// } + var i = this.length; + while(i--){ + var attr = this[i]; + if(attr.nodeName == key){ + return attr; + } + } + return null; + }, + setNamedItem: function(attr) { + var el = attr.ownerElement; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + var oldAttr = this.getNamedItem(attr.nodeName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + /* returns Node */ + setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, oldAttr; + if(el && el!=this._ownerElement){ + throw new DOMException(INUSE_ATTRIBUTE_ERR); + } + oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); + _addNamedNode(this._ownerElement,this,attr,oldAttr); + return oldAttr; + }, + + /* returns Node */ + removeNamedItem: function(key) { + var attr = this.getNamedItem(key); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + + + },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + + //for level2 + removeNamedItemNS:function(namespaceURI,localName){ + var attr = this.getNamedItemNS(namespaceURI,localName); + _removeNamedNode(this._ownerElement,this,attr); + return attr; + }, + getNamedItemNS: function(namespaceURI, localName) { + var i = this.length; + while(i--){ + var node = this[i]; + if(node.localName == localName && node.namespaceURI == namespaceURI){ + return node; + } + } + return null; + } +}; +/** + * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 + */ +function DOMImplementation(/* Object */ features) { + this._features = {}; + if (features) { + for (var feature in features) { + this._features = features[feature]; + } + } +}; + +DOMImplementation.prototype = { + hasFeature: function(/* string */ feature, /* string */ version) { + var versions = this._features[feature.toLowerCase()]; + if (versions && (!version || version in versions)) { + return true; + } else { + return false; + } + }, + // Introduced in DOM Level 2: + createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + var doc = new Document(); + doc.implementation = this; + doc.childNodes = new NodeList(); + doc.doctype = doctype; + if(doctype){ + doc.appendChild(doctype); + } + if(qualifiedName){ + var root = doc.createElementNS(namespaceURI,qualifiedName); + doc.appendChild(root); + } + return doc; + }, + // Introduced in DOM Level 2: + createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + var node = new DocumentType(); + node.name = qualifiedName; + node.nodeName = qualifiedName; + node.publicId = publicId; + node.systemId = systemId; + // Introduced in DOM Level 2: + //readonly attribute DOMString internalSubset; + + //TODO:.. + // readonly attribute NamedNodeMap entities; + // readonly attribute NamedNodeMap notations; + return node; + } +}; + + +/** + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 + */ + +function Node() { +}; + +Node.prototype = { + firstChild : null, + lastChild : null, + previousSibling : null, + nextSibling : null, + attributes : null, + parentNode : null, + childNodes : null, + ownerDocument : null, + nodeValue : null, + namespaceURI : null, + prefix : null, + localName : null, + // Modified in DOM Level 2: + insertBefore:function(newChild, refChild){//raises + return _insertBefore(this,newChild,refChild); + }, + replaceChild:function(newChild, oldChild){//raises + this.insertBefore(newChild,oldChild); + if(oldChild){ + this.removeChild(oldChild); + } + }, + removeChild:function(oldChild){ + return _removeChild(this,oldChild); + }, + appendChild:function(newChild){ + return this.insertBefore(newChild,null); + }, + hasChildNodes:function(){ + return this.firstChild != null; + }, + cloneNode:function(deep){ + return cloneNode(this.ownerDocument||this,this,deep); + }, + // Modified in DOM Level 2: + normalize:function(){ + var child = this.firstChild; + while(child){ + var next = child.nextSibling; + if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + this.removeChild(next); + child.appendData(next.data); + }else{ + child.normalize(); + child = next; + } + } + }, + // Introduced in DOM Level 2: + isSupported:function(feature, version){ + return this.ownerDocument.implementation.hasFeature(feature,version); + }, + // Introduced in DOM Level 2: + hasAttributes:function(){ + return this.attributes.length>0; + }, + lookupPrefix:function(namespaceURI){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI:function(prefix){ + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == 2?el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace:function(namespaceURI){ + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } +}; + + +function _xmlEncoder(c){ + return c == '<' && '<' || + c == '>' && '>' || + c == '&' && '&' || + c == '"' && '"' || + '&#'+c.charCodeAt()+';' +} + + +copy(NodeType,Node); +copy(NodeType,Node.prototype); + +/** + * @param callback return true for continue,false for break + * @return boolean true: break visit; + */ +function _visitNode(node,callback){ + if(callback(node)){ + return true; + } + if((node = node.firstChild)){ + do{ + if(_visitNode(node,callback)){return true} + }while((node=node.nextSibling)) + } + return false; +} + + + +function Document(){ +} +function _onAddAttribute(doc,el,newAttr){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + } +} +function _onRemoveAttribute(doc,el,newAttr,remove){ + doc && doc._inc++; + var ns = newAttr.namespaceURI ; + if(ns == 'http://www.w3.org/2000/xmlns/'){ + //update namespace + delete el._nsMap[newAttr.prefix?newAttr.localName:''] + } +} +function _onUpdateChild(doc,el,newChild){ + if(doc && doc._inc){ + doc._inc++; + //update childNodes + var cs = el.childNodes; + if(newChild){ + cs[cs.length++] = newChild; + }else{ + //console.log(1) + var child = el.firstChild; + var i = 0; + while(child){ + cs[i++] = child; + child =child.nextSibling; + } + cs.length = i; + } + } +} + +/** + * attributes; + * children; + * + * writeable properties: + * nodeValue,Attr:value,CharacterData:data + * prefix + */ +function _removeChild(parentNode,child){ + var previous = child.previousSibling; + var next = child.nextSibling; + if(previous){ + previous.nextSibling = next; + }else{ + parentNode.firstChild = next + } + if(next){ + next.previousSibling = previous; + }else{ + parentNode.lastChild = previous; + } + _onUpdateChild(parentNode.ownerDocument,parentNode); + return child; +} +/** + * preformance key(refChild == null) + */ +function _insertBefore(parentNode,newChild,nextChild){ + var cp = newChild.parentNode; + if(cp){ + cp.removeChild(newChild);//remove and update + } + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + var newFirst = newChild.firstChild; + if (newFirst == null) { + return newChild; + } + var newLast = newChild.lastChild; + }else{ + newFirst = newLast = newChild; + } + var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; + + newFirst.previousSibling = pre; + newLast.nextSibling = nextChild; + + + if(pre){ + pre.nextSibling = newFirst; + }else{ + parentNode.firstChild = newFirst; + } + if(nextChild == null){ + parentNode.lastChild = newLast; + }else{ + nextChild.previousSibling = newLast; + } + do{ + newFirst.parentNode = parentNode; + }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) + _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + //console.log(parentNode.lastChild.nextSibling == null) + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { + newChild.firstChild = newChild.lastChild = null; + } + return newChild; +} +function _appendSingleChild(parentNode,newChild){ + var cp = newChild.parentNode; + if(cp){ + var pre = parentNode.lastChild; + cp.removeChild(newChild);//remove and update + var pre = parentNode.lastChild; + } + var pre = parentNode.lastChild; + newChild.parentNode = parentNode; + newChild.previousSibling = pre; + newChild.nextSibling = null; + if(pre){ + pre.nextSibling = newChild; + }else{ + parentNode.firstChild = newChild; + } + parentNode.lastChild = newChild; + _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + return newChild; + //console.log("__aa",parentNode.lastChild.nextSibling == null) +} +Document.prototype = { + //implementation : null, + nodeName : '#document', + nodeType : DOCUMENT_NODE, + doctype : null, + documentElement : null, + _inc : 1, + + insertBefore : function(newChild, refChild){//raises + if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + var child = newChild.firstChild; + while(child){ + var next = child.nextSibling; + this.insertBefore(child,refChild); + child = next; + } + return newChild; + } + if(this.documentElement == null && newChild.nodeType == 1){ + this.documentElement = newChild; + } + + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + }, + removeChild : function(oldChild){ + if(this.documentElement == oldChild){ + this.documentElement = null; + } + return _removeChild(this,oldChild); + }, + // Introduced in DOM Level 2: + importNode : function(importedNode,deep){ + return importNode(this,importedNode,deep); + }, + // Introduced in DOM Level 2: + getElementById : function(id){ + var rtv = null; + _visitNode(this.documentElement,function(node){ + if(node.nodeType == 1){ + if(node.getAttribute('id') == id){ + rtv = node; + return true; + } + } + return false; + }) + return rtv; + }, + + //document factory method: + createElement : function(tagName){ + var node = new Element(); + node.ownerDocument = this; + node.nodeName = tagName; + node.tagName = tagName; + node.childNodes = new NodeList(); + var attrs = node.attributes = new NamedNodeMap(); + attrs._ownerElement = node; + return node; + }, + createDocumentFragment : function(){ + var node = new DocumentFragment(); + node.ownerDocument = this; + node.childNodes = new NodeList(); + return node; + }, + createTextNode : function(data){ + var node = new Text(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createComment : function(data){ + var node = new Comment(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createCDATASection : function(data){ + var node = new CDATASection(); + node.ownerDocument = this; + node.appendData(data) + return node; + }, + createProcessingInstruction : function(target,data){ + var node = new ProcessingInstruction(); + node.ownerDocument = this; + node.tagName = node.target = target; + node.nodeValue= node.data = data; + return node; + }, + createAttribute : function(name){ + var node = new Attr(); + node.ownerDocument = this; + node.name = name; + node.nodeName = name; + node.localName = name; + node.specified = true; + return node; + }, + createEntityReference : function(name){ + var node = new EntityReference(); + node.ownerDocument = this; + node.nodeName = name; + return node; + }, + // Introduced in DOM Level 2: + createElementNS : function(namespaceURI,qualifiedName){ + var node = new Element(); + var pl = qualifiedName.split(':'); + var attrs = node.attributes = new NamedNodeMap(); + node.childNodes = new NodeList(); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.tagName = qualifiedName; + node.namespaceURI = namespaceURI; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + attrs._ownerElement = node; + return node; + }, + // Introduced in DOM Level 2: + createAttributeNS : function(namespaceURI,qualifiedName){ + var node = new Attr(); + var pl = qualifiedName.split(':'); + node.ownerDocument = this; + node.nodeName = qualifiedName; + node.name = qualifiedName; + node.namespaceURI = namespaceURI; + node.specified = true; + if(pl.length == 2){ + node.prefix = pl[0]; + node.localName = pl[1]; + }else{ + //el.prefix = null; + node.localName = qualifiedName; + } + return node; + } +}; +_extends(Document,Node); + + +function Element() { + this._nsMap = {}; +}; +Element.prototype = { + nodeType : ELEMENT_NODE, + hasAttribute : function(name){ + return this.getAttributeNode(name)!=null; + }, + getAttribute : function(name){ + var attr = this.getAttributeNode(name); + return attr && attr.value || ''; + }, + getAttributeNode : function(name){ + return this.attributes.getNamedItem(name); + }, + setAttribute : function(name, value){ + var attr = this.ownerDocument.createAttribute(name); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + removeAttribute : function(name){ + var attr = this.getAttributeNode(name) + attr && this.removeAttributeNode(attr); + }, + + //four real opeartion method + appendChild:function(newChild){ + if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + return this.insertBefore(newChild,null); + }else{ + return _appendSingleChild(this,newChild); + } + }, + setAttributeNode : function(newAttr){ + return this.attributes.setNamedItem(newAttr); + }, + setAttributeNodeNS : function(newAttr){ + return this.attributes.setNamedItemNS(newAttr); + }, + removeAttributeNode : function(oldAttr){ + return this.attributes.removeNamedItem(oldAttr.nodeName); + }, + //get real attribute name,and remove it by removeAttributeNode + removeAttributeNS : function(namespaceURI, localName){ + var old = this.getAttributeNodeNS(namespaceURI, localName); + old && this.removeAttributeNode(old); + }, + + hasAttributeNS : function(namespaceURI, localName){ + return this.getAttributeNodeNS(namespaceURI, localName)!=null; + }, + getAttributeNS : function(namespaceURI, localName){ + var attr = this.getAttributeNodeNS(namespaceURI, localName); + return attr && attr.value || ''; + }, + setAttributeNS : function(namespaceURI, qualifiedName, value){ + var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); + attr.value = attr.nodeValue = "" + value; + this.setAttributeNode(attr) + }, + getAttributeNodeNS : function(namespaceURI, localName){ + return this.attributes.getNamedItemNS(namespaceURI, localName); + }, + + getElementsByTagName : function(tagName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + ls.push(node); + } + }); + return ls; + }); + }, + getElementsByTagNameNS : function(namespaceURI, localName){ + return new LiveNodeList(this,function(base){ + var ls = []; + _visitNode(base,function(node){ + if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + ls.push(node); + } + }); + return ls; + }); + } +}; +Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; +Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; + + +_extends(Element,Node); +function Attr() { +}; +Attr.prototype.nodeType = ATTRIBUTE_NODE; +_extends(Attr,Node); + + +function CharacterData() { +}; +CharacterData.prototype = { + data : '', + substringData : function(offset, count) { + return this.data.substring(offset, offset+count); + }, + appendData: function(text) { + text = this.data+text; + this.nodeValue = this.data = text; + this.length = text.length; + }, + insertData: function(offset,text) { + this.replaceData(offset,0,text); + + }, + appendChild:function(newChild){ + //if(!(newChild instanceof CharacterData)){ + throw new Error(ExceptionMessage[3]) + //} + return Node.prototype.appendChild.apply(this,arguments) + }, + deleteData: function(offset, count) { + this.replaceData(offset,count,""); + }, + replaceData: function(offset, count, text) { + var start = this.data.substring(0,offset); + var end = this.data.substring(offset+count); + text = start + text + end; + this.nodeValue = this.data = text; + this.length = text.length; + } +} +_extends(CharacterData,Node); +function Text() { +}; +Text.prototype = { + nodeName : "#text", + nodeType : TEXT_NODE, + splitText : function(offset) { + var text = this.data; + var newText = text.substring(offset); + text = text.substring(0, offset); + this.data = this.nodeValue = text; + this.length = text.length; + var newNode = this.ownerDocument.createTextNode(newText); + if(this.parentNode){ + this.parentNode.insertBefore(newNode, this.nextSibling); + } + return newNode; + } +} +_extends(Text,CharacterData); +function Comment() { +}; +Comment.prototype = { + nodeName : "#comment", + nodeType : COMMENT_NODE +} +_extends(Comment,CharacterData); + +function CDATASection() { +}; +CDATASection.prototype = { + nodeName : "#cdata-section", + nodeType : CDATA_SECTION_NODE +} +_extends(CDATASection,CharacterData); + + +function DocumentType() { +}; +DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; +_extends(DocumentType,Node); + +function Notation() { +}; +Notation.prototype.nodeType = NOTATION_NODE; +_extends(Notation,Node); + +function Entity() { +}; +Entity.prototype.nodeType = ENTITY_NODE; +_extends(Entity,Node); + +function EntityReference() { +}; +EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; +_extends(EntityReference,Node); + +function DocumentFragment() { +}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment,Node); + + +function ProcessingInstruction() { +} +ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; +_extends(ProcessingInstruction,Node); +function XMLSerializer(){} +XMLSerializer.prototype.serializeToString = function(node,attributeSorter){ + return node.toString(attributeSorter); +} +Node.prototype.toString =function(attributeSorter){ + var buf = []; + serializeToString(this,buf,attributeSorter); + return buf.join(''); +} +function serializeToString(node,buf,attributeSorter,isHTML){ + switch(node.nodeType){ + case ELEMENT_NODE: + var attrs = node.attributes; + var len = attrs.length; + var child = node.firstChild; + var nodeName = node.tagName; + isHTML = (htmlns === node.namespaceURI) ||isHTML + buf.push('<',nodeName); + if(attributeSorter){ + buf.sort.apply(attrs, attributeSorter); + } + for(var i=0;i'); + //if is cdata child node + if(isHTML && /^script$/i.test(nodeName)){ + if(child){ + buf.push(child.data); + } + }else{ + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + } + buf.push(''); + }else{ + buf.push('/>'); + } + return null; + case DOCUMENT_NODE: + case DOCUMENT_FRAGMENT_NODE: + var child = node.firstChild; + while(child){ + serializeToString(child,buf,attributeSorter,isHTML); + child = child.nextSibling; + } + return null; + case ATTRIBUTE_NODE: + return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push( ''); + case COMMENT_NODE: + return buf.push( ""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + }else if(sysid && sysid!='.'){ + buf.push(' SYSTEM "',sysid,'">'); + }else{ + var sub = node.internalSubset; + if(sub){ + buf.push(" [",sub,"]"); + } + buf.push(">"); + } + return null; + case PROCESSING_INSTRUCTION_NODE: + return buf.push( ""); + case ENTITY_REFERENCE_NODE: + return buf.push( '&',node.nodeName,';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + return buf.push('??',node.nodeName); + } +} +function importNode(doc,node,deep){ + var node2; + switch (node.nodeType) { + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; + //var attrs = node2.attributes; + //var len = attrs.length; + //for(var i=0;i','amp':'&','quot':'"','apos':"'"} + if(locator){ + domBuilder.setDocumentLocator(locator) + } + + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); + sax.domBuilder = options.domBuilder || domBuilder; + if(/\/x?html?$/.test(mimeType)){ + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if(source){ + sax.parse(source,defaultNSMap,entityMap); + }else{ + sax.errorHandler.error("invalid document source"); + } + return domBuilder.document; +} +function buildErrorHandler(errorImpl,domBuilder,locator){ + if(!errorImpl){ + if(domBuilder instanceof DOMHandler){ + return domBuilder; + } + errorImpl = domBuilder ; + } + var errorHandler = {} + var isCallback = errorImpl instanceof Function; + locator = locator||{} + function build(key){ + var fn = errorImpl[key]; + if(!fn && isCallback){ + fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; + } + errorHandler[key] = fn && function(msg){ + fn('[xmldom '+key+']\t'+msg+_locator(locator)); + }||function(){}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') +/** + * +ContentHandler+ErrorHandler + * +LexicalHandler+EntityResolver2 + * -DeclHandler-DTDHandler + * + * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler + * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 + * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator,node){ + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} +/** + * @see org.xml.sax.ContentHandler#startDocument + * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html + */ +DOMHandler.prototype = { + startDocument : function() { + this.document = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.document.documentURI = this.locator.systemId; + } + }, + startElement:function(namespaceURI, localName, qName, attrs) { + var doc = this.document; + var el = doc.createElementNS(namespaceURI, qName||localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator,el) + for (var i = 0 ; i < len; i++) { + namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + if( attr.getOffset){ + position(attr.getOffset(1),attr) + } + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr) + } + }, + endElement:function(namespaceURI, localName, qName) { + var current = this.currentElement + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping:function(prefix, uri) { + }, + endPrefixMapping:function(prefix) { + }, + processingInstruction:function(target, data) { + var ins = this.document.createProcessingInstruction(target, data); + this.locator && position(this.locator,ins) + appendElement(this, ins); + }, + ignorableWhitespace:function(ch, start, length) { + }, + characters:function(chars, start, length) { + chars = _toString.apply(this,arguments) + //console.log(chars) + if(this.currentElement && chars){ + if (this.cdata) { + var charNode = this.document.createCDATASection(chars); + this.currentElement.appendChild(charNode); + } else { + var charNode = this.document.createTextNode(chars); + this.currentElement.appendChild(charNode); + } + this.locator && position(this.locator,charNode) + } + }, + skippedEntity:function(name) { + }, + endDocument:function() { + this.document.normalize(); + }, + setDocumentLocator:function (locator) { + if((this.locator = locator)){// && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment:function(chars, start, length) { + chars = _toString.apply(this,arguments) + var comm = this.document.createComment(chars); + this.locator && position(this.locator,comm) + appendElement(this, comm); + }, + + startCDATA:function() { + //used in characters() methods + this.cdata = true; + }, + endCDATA:function() { + this.cdata = false; + }, + + startDTD:function(name, publicId, systemId) { + var impl = this.document.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator,dt) + appendElement(this, dt); + } + }, + /** + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning:function(error) { + log('[xmldom warning]\t'+error); + }, + error:function(error) { + log('[xmldom error]\t'+error); + throw error; + }, + fatalError:function(error) { + log('[xmldom fatalError]\t'+error); + throw error; + } +} +function _locator(l){ + if(l){ + return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' + } + return null; +} +function _toString(chars,start,length){ + if(typeof chars == 'string'){ + return chars.substr(start,length) + }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if(chars.length >= start+length || start){ + return new java.lang.String(chars,start,length)+''; + } + return chars; + } +} + +/* + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html + * used method of org.xml.sax.ext.LexicalHandler: + * #comment(chars, start, length) + * #startCDATA() + * #endCDATA() + * #startDTD(name, publicId, systemId) + * + * + * IGNORED method of org.xml.sax.ext.LexicalHandler: + * #endDTD() + * #startEntity(name) + * #endEntity(name) + * + * + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html + * IGNORED method of org.xml.sax.ext.DeclHandler + * #attributeDecl(eName, aName, type, mode, value) + * #elementDecl(name, model) + * #externalEntityDecl(name, publicId, systemId) + * #internalEntityDecl(name, value) + * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html + * IGNORED method of org.xml.sax.EntityResolver2 + * #resolveEntity(String name,String publicId,String baseURI,String systemId) + * #resolveEntity(publicId, systemId) + * #getExternalSubset(name, baseURI) + * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html + * IGNORED method of org.xml.sax.DTDHandler + * #notationDecl(name, publicId, systemId) {}; + * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ + DOMHandler.prototype[key] = function(){return null} +}) + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement (hander,node) { + if (!hander.currentElement) { + hander.document.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +}//appendChild and setAttributeNS are preformance key diff --git a/src/xmldom/sax.js b/src/xmldom/sax.js new file mode 100644 index 00000000..9be75bfa --- /dev/null +++ b/src/xmldom/sax.js @@ -0,0 +1,582 @@ +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]///\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9"+nameStartChar.source.slice(1,-1)+"\u00B7\u0300-\u036F\\u203F-\u2040]"); +var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\:'+nameStartChar.source+nameChar.source+'*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C +var S_TAG = 0;//tag name offerring +var S_ATTR = 1;//attr name offerring +var S_ATTR_S=2;//attr name end and space offer +var S_EQ = 3;//=space? +var S_V = 4;//attr value(no quot value only) +var S_E = 5;//attr value end and no space(quot end) +var S_S = 6;//(attr value end || tag end ) && (space offer) +var S_C = 7;//closed el + +function XMLReader(){ + +} + +XMLReader.prototype = { + parse:function(source,defaultNSMap,entityMap){ + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap ,defaultNSMap = {}) + parse(source,defaultNSMap,entityMap, + domBuilder,this.errorHandler); + domBuilder.endDocument(); + } +} +function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10) + , surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a){ + var k = a.slice(1,-1); + if(k in entityMap){ + return entityMap[k]; + }else if(k.charAt(0) === '#'){ + return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) + }else{ + errorHandler.error('entity not found:'+a); + return a; + } + } + function appendText(end){//has some bugs + if(end>start){ + var xt = source.substring(start,end).replace(/&#?\w+;/g,entityReplacer); + locator&&position(start); + domBuilder.characters(xt,0,end-start); + start = end + } + } + function position(p,m){ + while(p>=lineEnd && (m = linePattern.exec(source))){ + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p-lineStart+1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.+(?:\r\n?|\n)|.*$/g + var locator = domBuilder.locator; + + var parseStack = [{currentNSMap:defaultNSMapCopy}] + var closeMap = {}; + var start = 0; + while(true){ + try{ + var tagStart = source.indexOf('<',start); + if(tagStart<0){ + if(!source.substr(start).match(/^\s*$/)){ + var doc = domBuilder.document; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if(tagStart>start){ + appendText(tagStart); + } + switch(source.charAt(tagStart+1)){ + case '/': + var end = source.indexOf('>',tagStart+3); + var tagName = source.substring(tagStart+2,end); + var config = parseStack.pop(); + var localNSMap = config.localNSMap; + if(config.tagName != tagName){ + errorHandler.fatalError("end tag name: "+tagName+' is not match the current start tagName:'+config.tagName ); + } + domBuilder.endElement(config.uri,config.localName,tagName); + if(localNSMap){ + for(var prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) ; + } + } + end++; + break; + // end elment + case '?':// + locator&&position(tagStart); + end = parseInstruction(source,tagStart,domBuilder); + break; + case '!':// start){ + start = end; + }else{ + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart,start)+1); + } + } +} +function copyLocator(f,t){ + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} + +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source,start,el,entityReplacer,errorHandler){ + var attrName; + var value; + var p = ++start; + var s = S_TAG;//status + while(true){ + var c = source.charAt(p); + switch(c){ + case '=': + if(s === S_ATTR){//attrName + attrName = source.slice(start,p); + s = S_EQ; + }else if(s === S_ATTR_S){ + s = S_EQ; + }else{ + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if(s === S_EQ){//equal + start = p+1; + p = source.indexOf(c,start) + if(p>0){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + el.add(attrName,value,start-1); + s = S_E; + }else{ + //fatalError: no end quot match + throw new Error('attribute value no end \''+c+'\' match'); + } + }else if(s == S_V){ + value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName,value,start); + //console.dir(el) + errorHandler.warning('attribute "'+attrName+'" missed start quot('+c+')!!'); + start = p+1; + s = S_E + }else{ + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + s = S_C; + el.closed = true; + case S_V: + case S_ATTR: + case S_ATTR_S: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')") + } + break; + case ''://end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + case '>': + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p)); + case S_E: + case S_S: + case S_C: + break;//normal + case S_V://Compatible state + case S_ATTR: + value = source.slice(start,p); + if(value.slice(-1) === '/'){ + el.closed = true; + value = value.slice(0,-1) + } + case S_ATTR_S: + if(s === S_ATTR_S){ + value = attrName; + } + if(s == S_V){ + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value.replace(/&#?\w+;/g,entityReplacer),start) + }else{ + errorHandler.warning('attribute "'+value+'" missed value!! "'+value+'" instead!!') + el.add(value,value,start) + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } +// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case '\u0080': + c = ' '; + default: + if(c<= ' '){//space + switch(s){ + case S_TAG: + el.setTagName(source.slice(start,p));//tagName + s = S_S; + break; + case S_ATTR: + attrName = source.slice(start,p) + s = S_ATTR_S; + break; + case S_V: + var value = source.slice(start,p).replace(/&#?\w+;/g,entityReplacer); + errorHandler.warning('attribute "'+value+'" missed quot(")!!'); + el.add(attrName,value,start) + case S_E: + s = S_S; + break; + //case S_S: + //case S_EQ: + //case S_ATTR_S: + // void();break; + //case S_C: + //ignore warning + } + }else{//not space +//S_TAG, S_ATTR, S_EQ, S_V +//S_ATTR_S, S_E, S_S, S_C + switch(s){ + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_V:void();break; + case S_ATTR_S: + errorHandler.warning('attribute "'+attrName+'" missed value!! "'+attrName+'" instead!!') + el.add(attrName,attrName,start); + start = p; + s = S_ATTR; + break; + case S_E: + errorHandler.warning('attribute space is required"'+attrName+'"!!') + case S_S: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_V; + start = p; + break; + case S_C: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } + p++; + } +} +/** + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function appendElement(el,domBuilder,parseStack){ + var tagName = el.tagName; + var localNSMap = null; + var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while(i--){ + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if(nsp>0){ + var prefix = a.prefix = qName.slice(0,nsp); + var localName = qName.slice(nsp+1); + var nsPrefix = prefix === 'xmlns' && localName + }else{ + localName = qName; + prefix = null + nsPrefix = qName === 'xmlns' && '' + } + //can not set prefix,because prefix !== '' + a.localName = localName ; + //prefix == null for no ns prefix attribute + if(nsPrefix !== false){//hack!! + if(localNSMap == null){ + localNSMap = {} + //console.log(currentNSMap,0) + _copy(currentNSMap,currentNSMap={}) + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/' + domBuilder.startPrefixMapping(nsPrefix, value) + } + } + var i = el.length; + while(i--){ + a = el[i]; + var prefix = a.prefix; + if(prefix){//no prefix attribute has no namespace + if(prefix === 'xml'){ + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if(prefix !== 'xmlns'){ + a.uri = currentNSMap[prefix] + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if(nsp>0){ + prefix = el.prefix = tagName.slice(0,nsp); + localName = el.localName = tagName.slice(nsp+1); + }else{ + prefix = null;//important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns,localName,tagName,el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if(el.closed){ + domBuilder.endElement(ns,localName,tagName); + if(localNSMap){ + for(prefix in localNSMap){ + domBuilder.endPrefixMapping(prefix) + } + } + }else{ + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + parseStack.push(el); + } +} +function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){ + if(/^(?:script|textarea)$/i.test(tagName)){ + var elEndStart = source.indexOf('',elStartEnd); + var text = source.substring(elStartEnd+1,elEndStart); + if(/[&<]/.test(text)){ + if(/^script$/i.test(tagName)){ + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text,0,text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + }//}else{//text area + text = text.replace(/&#?\w+;/g,entityReplacer); + domBuilder.characters(text,0,text.length); + return elEndStart; + //} + + } + } + return elStartEnd+1; +} +function fixSelfClosed(source,elStartEnd,tagName,closeMap){ + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if(pos == null){ + //console.log(tagName) + pos = closeMap[tagName] = source.lastIndexOf('') + } + return pos',start+4); + //append comment source.substring(4,end)//